# Name: smd_calendar v0.54 # Type: Public plugin # Calendar / event / schedule system with events as Textpattern articles # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern CMS - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEyOiJzbWRfY2FsZW5kYXIiO3M6NjoiYXV0aG9yIjtzOjEx OiJTdGVmIERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZkYXdz b24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuNTQiO3M6MTE6ImRlc2NyaXB0aW9uIjtz OjcwOiJDYWxlbmRhciAvIGV2ZW50IC8gc2NoZWR1bGUgc3lzdGVtIHdpdGggZXZlbnRzIGFz IFRleHRwYXR0ZXJuIGFydGljbGVzIjtzOjQ6ImNvZGUiO3M6MTAxNDI4OiIvKioKICogc21k X2NhbGVuZGFyCiAqCiAqIEEgVGV4dHBhdHRlcm4gQ01TIHBsdWdpbiBmb3IgY29tcGxldGUg bW9udGhseSBldmVudCBhbmQgY2FsZW5kYXIgbWFuYWdlbWVudAogKiAgLT4gT3JpZ2luYWxs eSBiYXNlZCBvbiBtZHBfY2FsZW5kYXIgLSB0aGFua3MgTWFyc2hhbGwhCiAqICAtPiBGdWxs LXNpemUgLyBtaW5pIGNhbGVuZGFyIGJ5IG1vbnRoLCB3aXRoIElTTyB3ZWVrIHN1cHBvcnQK ICogIC0+IFR4cCBhcnRpY2xlcyBhcmUgZXZlbnRzLiBGdXR1cmUsIHBhc3QsIGFuZCB0b2Rh eSdzIGV2ZW50cyBhcmUgc3VwcG9ydGVkLiBNdWx0aS1kYXkgKHNwYW5uZWQpIGV2ZW50cyBh cmUgYmFzZWQgb24gYXJ0aWNsZSBleHBpcnkKICogIC0+IE5leHQvcHJldiBtb250aC95ZWFy IHNlbGVjdCBsaXN0IHdpdGggY3VzdG9taXNhYmxlIHN0YXJ0L2VuZCB5ZWFycwogKiAgLT4g RmlsdGVyIGV2ZW50cyBieSBjYXQgLyBzZWN0aW9uIC8gYXV0aG9yIC8gc3RhdHVzIC8gdGlt ZSAvIGV4cGlyeQogKiAgLT4gU3BlY2lmeSBldmVudCBmcmVxdWVuY3kgaW4gY3VzdG9tIGZp ZWxkICgxIHdlZWsgLyAxMCBkYXlzIC8gMyBtb250aHMgLyBldGMpCiAqICAtPiBPcHRpb25h bGx5IChyZSlzY2hlZHVsZSAvIGNhbmNlbCAvIG9taXQgZXZlbnQgZGF0ZXMKICogIC0+IEN1 c3RvbWlzYWJsZSBvdXRwdXQgZm9yIGV2ZW50cyBhbmQgY2VsbHMgdXNpbmcgbXVsdGlwbGUg Zm9ybXMvY29udGFpbmVyIGFuZCBjbGFzc2VzCiAqICAtPiBDb25kaXRpb25hbCB0YWdzIGZv ciBidWlsZGluZyBjdXN0b20gbG9naWMKICoKICogQGF1dGhvciBTdGVmIERhd3NvbgogKiBA bGluayAgIGh0dHA6Ly9zdGVmZGF3c29uLmNvbS8KICovCgovLyBUT0RPOgovLyAgKiBhbGxv dyB0YWJsZSBoZWFkZXIgdG8gYmUgcmVtb3ZlZCAvIHJlc3R5bGVkIGNvbXBsZXRlbHkgKHRo ZSBtb250aC93ZWVrIGRyb3Bkb3duICYgbmF2IGljb25zKQovLyAgICAgLS0gYSBmb3JtIChu YXZmb3JtPykgZm9yIHRoZSBoZWFkZXIgcm93IHdpdGggYWNjZXNzIHRvIGFsbCB2YXJzIHN1 Y2ggYXMgd2hpY2ggbW9udGggaXMgYmVpbmcgZGlzcGxheWVkPwovLyAgICAgLS0gdG9vbHMg dG8gYWxsb3cgdGhlIGhlYWRlciB0byBiZSBnZW5lcmF0ZWQgZnJvbSBjb21wb25lbnRzIGFu ZCBsYWlkIG91dCBpbiBhbnkgbWFubmVyPwovLyAgKiBhbGxvdyBVUkwgdmFycyB0byBiZSBw YXNzZWQgYXMgUE9TVCAodG8gYnlwYXNzIGdicF9wZXJtbGlua3MpCi8vICAqIGFkZCBjdXN0 b20gcm93cyB0byB0aGUgdGFibGUgKGhlYWRlciwgZm9vdGVyKSAtLSBoZWFkZXIgY291bGQg YmUgdXNlZCB0byByZXBsYWNlIHRoZSBjdXJyZW50IG5hdi9kcm9wZG93bnMKLy8gICogZGl2 LWJhc2VkIGNhbGVuZGFyIGxheW91dD8KLy8gVE9GSVg6Ci8vICAqIEV4cGlyeSBkYXRlcyBv biBleHRyYSsgYWxsc3Bhbm5lZCBkYXRlcyBpbiBzbWRfYXJ0aWNsZV9ldmVudCAoYW5kIGNh bGVuZGFyPykuIFRoZXkgY3VycmVudGx5ICdjcmVlcCcgYSBkYXkgZm9yIGV2ZXJ5IGRheSBv ZiBhIHNwYW5uZWQgZXZlbnQKLy8gICogUmFuZ2VzIGluIHN0ZXBmaWVsZHMgKGh0dHA6Ly9m b3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9waWQ9MjU0Mzk1I3AyNTQzOTUg YW5kIGh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9waWQ9MjU1 NjE3I3AyNTU2MTcpCgppZiAoJGRhdGUgPSBncHMoJ2RhdGUnKSkgewogICAgJF9HRVRbJ21v bnRoJ10gPSAkZGF0ZTsKfQoKaWYgKGNsYXNzX2V4aXN0cygnXFRleHRwYXR0ZXJuXFRhZ1xS ZWdpc3RyeScpKSB7CiAgICBUeHA6OmdldCgnXFRleHRwYXR0ZXJuXFRhZ1xSZWdpc3RyeScp CiAgICAgICAgLT5yZWdpc3Rlcignc21kX2NhbGVuZGFyJykKICAgICAgICAtPnJlZ2lzdGVy KCdzbWRfY2FsX2luZm8nKQogICAgICAgIC0+cmVnaXN0ZXIoJ3NtZF9jYWxfbm93JykKICAg ICAgICAtPnJlZ2lzdGVyKCdzbWRfY2FsX2NsYXNzJykKICAgICAgICAtPnJlZ2lzdGVyKCdz bWRfaWZfY2FsJykKICAgICAgICAtPnJlZ2lzdGVyKCdzbWRfYXJ0aWNsZV9ldmVudCcpCiAg ICAgICAgLT5yZWdpc3Rlcignc21kX2V2ZW50X2luZm8nKQogICAgICAgIC0+cmVnaXN0ZXIo J3NtZF9ldmVudF9kdXJhdGlvbicpOwp9CgpmdW5jdGlvbiBzbWRfY2FsZW5kYXIoJGF0dHMs ICR0aGluZyA9IG51bGwpCnsKICAgIGdsb2JhbCAkcHJldGV4dCwgJHRoaXNhcnRpY2xlLCAk dmFyaWFibGUsICRwcmVmcywgJHNtZF9jYWxfZmxhZywgJHNtZF9kYXRlLCAkc21kX2NhbGlu Zm8sICRzbWRfY2FsX3VjbHM7CgogICAgZXh0cmFjdChsQXR0cyhhcnJheSgKICAgICAgICAn dGltZScgICAgICAgICAgPT4gJ2FueScsCiAgICAgICAgJ3NpemUnICAgICAgICAgID0+ICds YXJnZScsCiAgICAgICAgJ2V4cGlyZWQnICAgICAgID0+ICcnLAogICAgICAgICdjYXRlZ29y eScgICAgICA9PiBudWxsLAogICAgICAgICdzdWJjYXRzJyAgICAgICA9PiAnJywKICAgICAg ICAnc2VjdGlvbicgICAgICAgPT4gJycsCiAgICAgICAgJ2F1dGhvcicgICAgICAgID0+ICcn LAogICAgICAgICdyZWFsbmFtZScgICAgICA9PiAnJywKICAgICAgICAnc3RhdHVzJyAgICAg ICAgPT4gJ2xpdmUnLAogICAgICAgICdzaG93YWxsJyAgICAgICA9PiAnMCcsCiAgICAgICAg J3N0YXRpYycgICAgICAgID0+ICcnLAogICAgICAgICdmb3JtJyAgICAgICAgICA9PiAnJywK ICAgICAgICAnc3BhbmZvcm0nICAgICAgPT4gJ1NNRF9TQU1FJywKICAgICAgICAncmVjdXJm b3JtJyAgICAgPT4gJ1NNRF9TQU1FJywKICAgICAgICAnY2VsbGZvcm0nICAgICAgPT4gJycs CiAgICAgICAgJ2hlYWRlcmZvcm0nICAgID0+ICcnLAogICAgICAgICdzdGVwZmllbGQnICAg ICA9PiAnJywKICAgICAgICAnc2tpcGZpZWxkJyAgICAgPT4gJycsCiAgICAgICAgJ29taXRm aWVsZCcgICAgID0+ICcnLAogICAgICAgICdleHRyYWZpZWxkJyAgICA9PiAnJywKICAgICAg ICAnZXh0cmFzdHJpY3QnICAgPT4gJzAnLAogICAgICAgICdkYXRlZmllbGRzJyAgICA9PiAn JywKICAgICAgICAnc2hvd3NraXBwZWQnICAgPT4gJzAnLAogICAgICAgICdzaG93c3Bhbm5l ZCcgICA9PiAnMScsCiAgICAgICAgJ2hvbGlkYXlzJyAgICAgID0+ICcnLAogICAgICAgICdo b2xpZGF5ZmxhZ3MnICA9PiAnc3RhbmRhcmQnLAogICAgICAgICdjbGFzc2xldmVscycgICA9 PiAnY2VsbCwgZXZlbnQnLAogICAgICAgICdsaW5rcG9zdGVkJyAgICA9PiAncmVjdXIsIG11 bHRpLCBtdWx0aXByZXYsIG11bHRpbGFzdCcsCiAgICAgICAgJ2NsYXNzcHJlZml4ZXMnID0+ ICdzbWRfY2FsXywgc21kX2NhbF9ldl8nLAogICAgICAgICdjbGFzcycgICAgICAgICA9PiAn JywKICAgICAgICAncm93Y2xhc3MnICAgICAgPT4gJycsCiAgICAgICAgJ2NlbGxjbGFzcycg ICAgID0+ICcnLAogICAgICAgICdlbXB0eWNsYXNzJyAgICA9PiAnZW1wdHknLAogICAgICAg ICdpc293ZWVrY2xhc3MnICA9PiAnd2VlaycsCiAgICAgICAgJ25hdmNsYXNzJyAgICAgID0+ ICduYXZwcmV2LCBuYXZuZXh0JywKICAgICAgICAnbmF2YXJyb3cnICAgICAgPT4gJyYjNjA7 LCAmIzYyOycsCiAgICAgICAgJ25hdmlkJyAgICAgICAgID0+ICcnLAogICAgICAgICdldmVu dGNsYXNzZXMnICA9PiAnY2F0ZWdvcnknLAogICAgICAgICdldmVudHdyYXB0YWcnICA9PiAn c3BhbicsCiAgICAgICAgJ3NlbGVjdCcgICAgICAgID0+ICcnLAogICAgICAgICdzZWxlY3Ri dG4nICAgICA9PiAnJywKICAgICAgICAnbXljbGFzcycgICAgICAgPT4gJycsCiAgICAgICAg J215d3JhcHRhZycgICAgID0+ICcnLAogICAgICAgICdjYXB0aW9uJyAgICAgICA9PiAnJywK ICAgICAgICAnc3VtbWFyeScgICAgICAgPT4gJycsCiAgICAgICAgJ2lkJyAgICAgICAgICAg ID0+ICcnLAogICAgICAgICd3ZWVrJyAgICAgICAgICA9PiAnJywKICAgICAgICAnbW9udGgn ICAgICAgICAgPT4gJycsCiAgICAgICAgJ3llYXInICAgICAgICAgID0+ICcnLAogICAgICAg ICdyZW1hcCcgICAgICAgICA9PiAnJywKICAgICAgICAneWVhcndpZHRoJyAgICAgPT4gJzAn LAogICAgICAgICdpc293ZWVrcycgICAgICA9PiAnJywKICAgICAgICAnZGF5Zm9ybWF0JyAg ICAgPT4gJ0FCQlInLAogICAgICAgICdtb250aGZvcm1hdCcgICA9PiAnRlVMTCcsCiAgICAg ICAgJ2ZpcnN0ZGF5JyAgICAgID0+IDAsCiAgICAgICAgJ21haW50YWluJyAgICAgID0+ICdj YWxpZCcsCiAgICAgICAgJ25hbWV2YWwnICAgICAgID0+ICcnLAogICAgICAgICdldmVudF9k ZWxpbScgICA9PiAnLCcsCiAgICAgICAgJ2dtdCcgICAgICAgICAgID0+IDAsCiAgICAgICAg J2xhbmcnICAgICAgICAgID0+ICcnLAogICAgICAgICdkZWJ1ZycgICAgICAgICA9PiAwLAog ICAgKSwgJGF0dHMpKTsKCiAgICAkc2l6ZSA9IChpbl9hcnJheSgkc2l6ZSwgYXJyYXkoJ3Nt YWxsJywgJ2xhcmdlJykpKSA/ICRzaXplIDogJ2xhcmdlJzsKICAgICRzdGF0dXMgPSAoJHN0 YXR1cykgPyAkc3RhdHVzIDogJ2xpdmUnOyAvLyBpbiBjYXNlIHN0YXR1cyBpcyBlbXB0eQog ICAgJGZpcnN0ZGF5ID0gKCRpc293ZWVrcyA9PSAnJykgPyAkZmlyc3RkYXkgOiAxOwogICAg JHNwYW5mb3JtID0gKCRzcGFuZm9ybSA9PSAnU01EX1NBTUUnKSA/ICRmb3JtIDogJHNwYW5m b3JtOwogICAgJHJlY3VyZm9ybSA9ICgkcmVjdXJmb3JtID09ICdTTURfU0FNRScpID8gJGZv cm0gOiAkcmVjdXJmb3JtOwogICAgJGNlbGxmb3JtID0gKGVtcHR5KCRjZWxsZm9ybSkpID8g JycgOiBmZXRjaF9mb3JtKCRjZWxsZm9ybSk7CiAgICAkaGVhZGVyZm9ybSA9IChlbXB0eSgk aGVhZGVyZm9ybSkpID8gJycgOiBmZXRjaF9mb3JtKCRoZWFkZXJmb3JtKTsKICAgICRmcm9u dHBhZ2UgPSAoJHNlY3Rpb249PScnICYmICRwcmV0ZXh0WydzJ109PSdkZWZhdWx0JykgPyB0 cnVlIDogZmFsc2U7CgogICAgLy8gU2V0IHVwIHRoZSBjbGFzcyBwcmVmaXhlcwogICAgJGNs ZXZzID0gZG9fbGlzdCgkY2xhc3NsZXZlbHMpOwogICAgJGNscyA9IGRvX2xpc3QoJGNsYXNz cHJlZml4ZXMpOwogICAgJGNsc19wZnggPSAkZXZjX3BmeCA9ICRjbHNbMF07CiAgICBpZiAo Y291bnQoJGNscykgPiAxKXsKICAgICAgICAkZXZjX3BmeCA9ICRjbHNbMV07CiAgICB9Cgog ICAgLy8gU2V0IHVwIHRoZSBuYXYgY2xhc3MoZXMpCiAgICAkbWFpbnRhaW4gPSBkb19saXN0 KCRtYWludGFpbik7CiAgICAkbmF2YXJyb3cgPSBkb19saXN0KCRuYXZhcnJvdyk7CiAgICAk bmF2cGFyciA9ICRuYXZhcnJvd1swXTsKICAgICRuYXZuYXJyID0gKGNvdW50KCRuYXZhcnJv dykgPiAxKSA/ICRuYXZhcnJvd1sxXSA6ICRuYXZhcnJvd1swXTsKICAgICRuYXZjbGFzcyA9 IGRvX2xpc3QoJG5hdmNsYXNzKTsKICAgICRuYXZwY2xhc3MgPSAkbmF2Y2xhc3NbMF07CiAg ICAkbmF2bmNsYXNzID0gKGNvdW50KCRuYXZjbGFzcykgPiAxKSA/ICRuYXZjbGFzc1sxXSA6 ICRuYXZjbGFzc1swXTsKCiAgICAvLyBGaWx0ZXJzCiAgICAkZm9wdHMgPSBhcnJheSgpOwog ICAgJGNhdFNRTCA9ICRzZWNTUUwgPSAkYXV0aFNRTCA9ICRmcFNRTCA9ICcnOwogICAgaWYo JGNhdGVnb3J5ICE9PSBudWxsKSB7CiAgICAgICAgJHVuY2F0cyA9IGZhbHNlOwogICAgICAg ICRhbGxjYXRzID0gZG9fbGlzdCgkY2F0ZWdvcnkpOwogICAgICAgIGlmICgoJHBvcyA9IGFy cmF5X3NlYXJjaCgnU01EX1VOQ0FUJywgJGFsbGNhdHMpKSAhPT0gZmFsc2UpIHsKICAgICAg ICAgICAgJHVuY2F0cyA9IHRydWU7CiAgICAgICAgICAgIHVuc2V0KCRhbGxjYXRzWyRwb3Nd KTsKICAgICAgICAgICAgJGNhdGVnb3J5ID0gam9pbignLCcsICRhbGxjYXRzKTsKICAgICAg ICB9CiAgICAgICAgJGZvcHRzWydjJ10gPSAkY2F0ZWdvcnk7IC8vIFRPRE86IENhbiBmb3B0 cyB0YWtlIGEgbGlzdD8gU2hvdWxkIGl0IGluY2x1ZGUgc3ViY2F0cz8KICAgICAgICAkc3Vi Y2F0cyA9IChlbXB0eSgkc3ViY2F0cykpID8gMCA6ICgoc3RydG9sb3dlcigkc3ViY2F0cyk9 PSJhbGwiKSA/IDk5OTk5IDogaW50dmFsKCRzdWJjYXRzKSk7CiAgICAgICAgaWYgKCRzdWJj YXRzKSB7CiAgICAgICAgICAgICRvdXRjYXRzID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9y ZWFjaCAoJGFsbGNhdHMgYXMgJGNhdCkgewogICAgICAgICAgICAgICAgJGNhdHMgPSBnZXRU cmVlKGRvc2xhc2goJGNhdCksICdhcnRpY2xlJyk7CiAgICAgICAgICAgICAgICBmb3JlYWNo ICgkY2F0cyBhcyAkamR4ID0+ICR2YWwpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJGNh dHNbJGpkeF1bJ2xldmVsJ10gPD0gJHN1YmNhdHMpIHsKICAgICAgICAgICAgICAgICAgICAg ICAgJG91dGNhdHNbXSA9ICRjYXRzWyRqZHhdWyduYW1lJ107CiAgICAgICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRhbGxj YXRzID0gJG91dGNhdHM7CiAgICAgICAgfQogICAgICAgICRjYXRTUUwgPSBkb1F1b3RlKGpv aW4oIicsJyIsIGRvU2xhc2goJGFsbGNhdHMpKSk7CiAgICAgICAgJGNhdFNRTCA9ICgkdW5j YXRzID8gIiBBTkQgKENhdGVnb3J5MSA9ICcnIEFORCBDYXRlZ29yeTIgPSAnJykiIDogJycp IC4KICAgICAgICAgICAgKCR1bmNhdHMgJiYgJGFsbGNhdHMgPyAiIE9SICIgOiAoJGFsbGNh dHMgPyAiIEFORCAiIDogJycpKSAuCiAgICAgICAgICAgICgkYWxsY2F0cyA/ICIoIENhdGVn b3J5MSBJTiAoIi4kY2F0U1FMLiIpIE9SIENhdGVnb3J5MiBJTiAoIi4kY2F0U1FMLiIpICkg IiA6ICcnKTsKICAgIH0KICAgIGlmKCRzZWN0aW9uKSB7CiAgICAgICAgJHNlY3MgPSBkb19s aXN0KCRzZWN0aW9uKTsKICAgICAgICAkc21kX2NhbGluZm9bJ3MnXSA9ICRzZWNzWzBdOwog ICAgICAgICRzZWNTUUwgPSBkb1F1b3RlKGpvaW4oIicsJyIsIGRvU2xhc2goJHNlY3MpKSk7 CiAgICAgICAgJHNlY1NRTCA9ICIgQU5EIFNlY3Rpb24gSU4gKCIuJHNlY1NRTC4iKSAiOwog ICAgfQogICAgaWYoJHJlYWxuYW1lKSB7CiAgICAgICAgJGF1dGhvcnMgPSBzYWZlX2NvbHVt bignbmFtZScsICd0eHBfdXNlcnMnLCAnUmVhbE5hbWUgSU4gKCcuIGRvUXVvdGUoam9pbigi JywnIiwgZG9BcnJheShkb19saXN0KCRyZWFsbmFtZSksICd1cmxkZWNvZGUnKSkpIC4nKScg KTsKICAgICAgICAkYXV0aG9yID0gam9pbignLCcsICRhdXRob3JzKTsKICAgIH0KICAgIGlm KCRhdXRob3IpIHsKICAgICAgICAkZm9wdHNbJ2F1dGhvciddID0gaHRtbGVudGl0aWVzKGdw cygnYXV0aG9yJykpOwogICAgICAgICRhdXRoU1FMID0gZG9RdW90ZShqb2luKCInLCciLCBk b1NsYXNoKGRvX2xpc3QoJGF1dGhvcikpKSk7CiAgICAgICAgJGF1dGhTUUwgPSAiIEFORCBB dXRob3JJRCBJTiAoIi4kYXV0aFNRTC4iKSAiOwogICAgfQogICAgaWYgKCRmcm9udHBhZ2Ug JiYgISRzaG93YWxsKSB7CiAgICAgICAgJGZwU1FMID0gZmlsdGVyRnJvbnRQYWdlKCk7CiAg ICB9CiAgICAkc21kX2NhbGluZm9bJ2FydGlkJ10gPSAkdGhpc2FydGljbGVbJ3RoaXNpZCdd OwogICAgJHNtZF9jYWxpbmZvWydhcnRpdGxlJ10gPSAkdGhpc2FydGljbGVbJ3VybF90aXRs ZSddOwogICAgJG5hbWV2YWwgPSBkb19saXN0KCRuYW1ldmFsKTsKICAgIGZvcmVhY2ggKCRu YW1ldmFsIGFzICRudikgewogICAgICAgICRudiA9IGV4cGxvZGUoIj0iLCAkbnYpOwogICAg ICAgIGlmICgkbnZbMF0pIHsKICAgICAgICAgICAgJGZvcHRzWyRudlswXV0gPSAoKGlzc2V0 KCRudlsxXSkpID8gJG52WzFdIDogJycpOwogICAgICAgIH0KICAgIH0KICAgICRzdGF0dXMg PSBkb19saXN0KCRzdGF0dXMpOwogICAgJHN0YXRpID0gYXJyYXkoKTsKICAgIGZvcmVhY2gg KCRzdGF0dXMgYXMgJHN0YXQpIHsKICAgICAgICBpZiAoZW1wdHkoJHN0YXQpKSB7CiAgICAg ICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0gZWxzZSBpZiAoaXNfbnVtZXJpYygkc3RhdCkp IHsKICAgICAgICAgICAgJHN0YXRpW10gPSAkc3RhdDsKICAgICAgICB9IGVsc2UgewogICAg ICAgICAgICAkc3RhdGlbXSA9IGdldFN0YXR1c051bSgkc3RhdCk7CiAgICAgICAgfQogICAg fQogICAgJHN0YXRpID0gIiBTdGF0dXMgSU4gKCIuam9pbignLCcsICRzdGF0aSkuIikiOwoK ICAgICRleHBpcmVkID0gKCRleHBpcmVkKSA/ICRleHBpcmVkIDogJHByZWZzWydwdWJsaXNo X2V4cGlyZWRfYXJ0aWNsZXMnXTsKICAgICRleHBpcmVkID0gKCgkZXhwaXJlZCkgPyAnJyA6 ICcgQU5EIChub3coKSA8PSBFeHBpcmVzIE9SIEV4cGlyZXMgSVMgTlVMTCknKTsKICAgICRl dmVudGNsYXNzZXMgPSBkb19saXN0KCRldmVudGNsYXNzZXMpOwogICAgJGhvbGlkYXlmbGFn cyA9IGRvX2xpc3QoJGhvbGlkYXlmbGFncyk7CiAgICAkbGlua3Bvc3RlZCA9IGRvX2xpc3Qo JGxpbmtwb3N0ZWQpOwogICAgJGRhdGVmaWVsZHMgPSBkb19saXN0KCRkYXRlZmllbGRzKTsK CiAgICAvLyBXb3JrIG91dCB0aGUgZmlyc3QgYW5kIGxhc3QgcG9zdHMgdG8gZGV0ZXJtaW5l IHRoZSB5ZWFyIHJhbmdlIC0gcHJvYmFibHkgYSBiZXR0ZXIgd2F5IG9mIGRvaW5nIHRoaXMg dGhhbiAzIHF1ZXJpZXMKICAgICRmaWx0ID0gJHN0YXRpIC4gKCgkY2F0ZWdvcnkgIT09IG51 bGwpID8gJGNhdFNRTCA6ICcnKSAuICgoJHNlY3Rpb24pID8gJHNlY1NRTCA6ICcnKSAuICgo JGF1dGhvcikgPyAkYXV0aFNRTCA6ICcnKSAuICRmcFNRTDsKICAgICRlYXJsaWVzdCA9IHNh ZmVfZmllbGQoJ3VuaXhfdGltZXN0YW1wKFBvc3RlZCkgQVMgdVBvc3RlZCcsICd0ZXh0cGF0 dGVybicsICRmaWx0IC4nIE9SREVSIEJZIFBvc3RlZCBBU0MgTElNSVQgMCwgMScsICRkZWJ1 Zyk7CiAgICAkbHAgPSBzYWZlX2ZpZWxkKCd1bml4X3RpbWVzdGFtcChQb3N0ZWQpIEFTIHVQ b3N0ZWQnLCAndGV4dHBhdHRlcm4nLCAkZmlsdCAuJyBPUkRFUiBCWSBQb3N0ZWQgREVTQyBM SU1JVCAwLCAxJywgJGRlYnVnKTsKICAgICRsbSA9IHNhZmVfZmllbGQoJ3VuaXhfdGltZXN0 YW1wKExhc3RNb2QpIEFTIHVMYXN0TW9kJywgJ3RleHRwYXR0ZXJuJywgJGZpbHQgLicgT1JE RVIgQlkgTGFzdE1vZCBERVNDIExJTUlUIDAsIDEnLCAkZGVidWcpOwogICAgJGxhdGVzdCA9 ICgkdGltZT09InBhc3QiKSA/IHRpbWUoKSA6ICgoJGxwID4gJGxtKSA/ICRscCA6ICRsbSk7 CgogICAgJHllYXJ3aWR0aCA9IGRvX2xpc3QoJHllYXJ3aWR0aCk7CiAgICAkeWVhcndpZHRo WzBdID0gKGVtcHR5KCR5ZWFyd2lkdGhbMF0pKSA/IDAgOiAkeWVhcndpZHRoWzBdOwogICAg aWYgKGNvdW50KCR5ZWFyd2lkdGgpID09IDEpIHsKICAgICAgICAkeWVhcndpZHRoWzFdID0g JHllYXJ3aWR0aFswXTsKICAgIH0KICAgICR1c2Vub3cgPSBhcnJheShmYWxzZSxmYWxzZSk7 CiAgICBmb3JlYWNoICgkeWVhcndpZHRoIGFzICR5cmlkeCA9PiAkeXJpdGVtKSB7CiAgICAg ICAgaWYgKHN0cnBvcygkeXJpdGVtLCJjIikgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICR5 ZWFyd2lkdGhbJHlyaWR4XSA9IGludHZhbCgkeXJpdGVtKTsKICAgICAgICAgICAgJHVzZW5v d1skeXJpZHhdID0gdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgLy8gUmVtYXAgdy9tL3kg dG8gb3RoZXIgdmFycyBpZiByZXF1aXJlZAogICAgJHJlbWFwID0gZG9fbGlzdCgkcmVtYXAp OwogICAgJGRtYXAgPSBhcnJheSgieSIgPT4gInkiLCAibSIgPT4gIm0iLCAidyIgPT4gInci KTsKICAgIGZvcmVhY2ggKCRyZW1hcCBhcyAkZHBhaXIpIHsKICAgICAgICAkZHBhaXIgPSBk b19saXN0KCRkcGFpciwgJzonKTsKICAgICAgICAkZG1hcFskZHBhaXJbMF1dID0gKGlzc2V0 KCRkcGFpclsxXSkpID8gJGRwYWlyWzFdIDogJGRwYWlyWzBdOwogICAgfQogICAgJGVhcmxp ZXN0ID0gZGF0ZSgiWSIsIHN0cnRvdGltZSgiLSIuJHllYXJ3aWR0aFswXS4iIHllYXIiLCAo IChlbXB0eSgkZWFybGllc3QpIHx8ICR1c2Vub3dbMF09PXRydWUpID8gdGltZSgpIDogJGVh cmxpZXN0KSApICk7CiAgICAkbGF0ZXN0ID0gZGF0ZSgiWSIsIHN0cnRvdGltZSgiKyIuJHll YXJ3aWR0aFsxXS4iIHllYXIiLCAoIChlbXB0eSgkbGF0ZXN0KSB8fCAkdXNlbm93WzFdPT10 cnVlKSA/IHRpbWUoKSA6ICRsYXRlc3QpICkgKTsKCiAgICAvLyBDaGVjayB0aGUgVVJMIGZv ciBjdXJyZW50IGRhdGUgYW5kIGNhbGVuZGFyIHRhcmdldCBpbmZvCiAgICAkaW5fY2FsaWQg PSBncHMoJ2NhbGlkJyk7CiAgICAkaW5feWVhciA9IChncHMoJGRtYXBbInkiXSkgYW5kIGlz X251bWVyaWMoZ3BzKCRkbWFwWyJ5Il0pKSkgPyAoaW50KWdwcygkZG1hcFsieSJdKSA6ICcn OwogICAgJGluX21vbnRoID0gKGdwcygkZG1hcFsibSJdKSBhbmQgaXNfbnVtZXJpYyhncHMo JGRtYXBbIm0iXSkpKSA/IChpbnQpZ3BzKCRkbWFwWyJtIl0pIDogJyc7CiAgICAkaW5fd2Vl ayA9IChncHMoJGRtYXBbInciXSkgYW5kIGlzX251bWVyaWMoZ3BzKCRkbWFwWyJ3Il0pKSkg PyAoaW50KWdwcygkZG1hcFsidyJdKSA6ICcnOwoKICAgIGlmKCRzdGF0aWMpIHsgLy8gaWYg d2UncmUgc3RhdGljIHcvbyBhbnkgc3VwcGxpZWQgdmFycywgdXNlIHRoZSBjdXJyZW50IGRh dGUKICAgICAgICBpZighJHllYXIpIHsgJHllYXIgPSBzYWZlX3N0cmZ0aW1lKCclWScpOyB9 CiAgICAgICAgaWYoISRtb250aCkgeyAkbW9udGggPSBzYWZlX3N0cmZ0aW1lKCclbScpOyB9 CiAgICB9IGVsc2UgeyAvLyBvdGhlcndpc2UgdXNlIGN1cnJlbnQgZGF0ZSBvbmx5IGlmIHRo ZXJlJ3Mgbm90aGluZyBlbHNlCiAgICAgICAgaWYoICRpZCA9PSAkaW5fY2FsaWQgKSB7IC8v IHVzZSBpbmNvbWluZwogICAgICAgICAgICAkeWVhciA9ICgkaW5feWVhcikgPyAkaW5feWVh ciA6ICgoJHllYXIpID8gJHllYXIgOiBzYWZlX3N0cmZ0aW1lKCclWScpKTsKICAgICAgICAg ICAgJG1vbnRoID0gKCRpbl9tb250aCkgPyAkaW5fbW9udGggOiAoKCRtb250aCkgPyAkbW9u dGggOiBzYWZlX3N0cmZ0aW1lKCclbScpKTsKICAgICAgICAgICAgLy8gSWYgd2VlayBpcyB1 c2VkLCBhZGp1c3QgbW9udGggc28gaXQgZW5jb21wYXNzZXMgdGhlIGdpdmVuIHdlZWsKICAg ICAgICAgICAgJHdlZWsgPSAkaW5fd2VlazsKICAgICAgICAgICAgaWYgKCR3ZWVrKSB7CiAg ICAgICAgICAgICAgICAkbW9udGggPSBzYWZlX3N0cmZ0aW1lKCIlbSIsIHN0cnRvdGltZSgk eWVhci4iVyIuc3RyX3BhZCgkd2VlaywgMiwgJzAnLCBTVFJfUEFEX0xFRlQpKSk7IC8vIEdl dCB0aGUgbW9udGggZnJvbSB0aGUgd2VlawogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNl IHsgLy8gdXNlIGN1cnJlbnQKICAgICAgICAgICAgaWYoISR5ZWFyKSB7ICR5ZWFyID0gc2Fm ZV9zdHJmdGltZSgnJVknKTsgfQogICAgICAgICAgICBpZighJG1vbnRoKSB7ICRtb250aCA9 IHNhZmVfc3RyZnRpbWUoJyVtJyk7IH0KICAgICAgICAgICAgaWYoJHdlZWspIHsgJG1vbnRo ID0gc2FmZV9zdHJmdGltZSgiJW0iLCBzdHJ0b3RpbWUoJHllYXIuIlciLnN0cl9wYWQoJHdl ZWssIDIsICcwJywgU1RSX1BBRF9MRUZUKSkpOyB9CiAgICAgICAgfQogICAgfQogICAgJHNt ZF9jYWxpbmZvWydpZCddID0gKCRpbl9jYWxpZCkgPyAkaW5fY2FsaWQgOiAkaWQ7CiAgICAk c21kX2RhdGVbJ3knXSA9ICR5ZWFyOyAkc21kX2RhdGVbJ20nXSA9ICRtb250aDsgLy8gJHdl ZWsvZGF5L2lzb3llYXIgYXJlIHNldCBwZXIgZXZlbnQgbGF0ZXIKCiAgICAkdHNfZmlyc3Qg PSBta3RpbWUoMCwgMCwgMCwgJG1vbnRoLCAxLCAkeWVhcik7CiAgICAkdHNfbGFzdCA9IG1r dGltZSgyMywgNTksIDU5LCAkbW9udGgsIGRhdGUoJ3QnLCR0c19maXJzdCksICR5ZWFyKTsK ICAgICR0c19sYXN0b2ZmID0gJHRzX2xhc3QgLSB0el9vZmZzZXQoJHRzX2xhc3QpOwogICAg aWYgKCRkZWJ1ZykgewogICAgICAgIGVjaG8gIisrIFRISVMgTU9OVEgnUyBDQUxFTkRBUiBb IHN0YXJ0IHN0YW1wIC8vIGVuZCBkYXRlIC8vIGVuZCBzdGFtcCAvLyBlbmQgZGF0ZSAvLyB0 eiBvZmZzZXQgKGVuZCkgXSArKyI7CiAgICAgICAgZG1wKCR0c19maXJzdCwgZGF0ZSgnWS1t LWQgSDppOnMnLCAkdHNfZmlyc3QpLCAkdHNfbGFzdCwgZGF0ZSgnWS1tLWQgSDppOnMnLCAk dHNfbGFzdCksICR0c19sYXN0b2ZmKTsKICAgIH0KICAgICRleHRyYXNxbCA9ICRjYXRTUUwg LiAkc2VjU1FMIC4gJGF1dGhTUUwgLiAkZnBTUUw7CgogICAgc3dpdGNoKCR0aW1lKSB7CiAg ICAgICAgY2FzZSAiYW55IiA6IGJyZWFrOwogICAgICAgIGNhc2UgImZ1dHVyZSIgOiAkZXh0 cmFzcWwgLj0gIiBBTkQgUG9zdGVkID4gbm93KCkiOyBicmVhazsKICAgICAgICBkZWZhdWx0 IDogJGV4dHJhc3FsIC49ICIgQU5EIFBvc3RlZCA8IG5vdygpIjsgYnJlYWs7IC8vIFRoZSBw YXN0CiAgICB9CgogICAgLy8gSG9saWRheXMgYXJlIGdsb2JhbCAnZXhjbHVzaW9ucycsIGVp dGhlciBkZWZpbmVkIGRpcmVjdGx5IG9yIGluIGEgdHhwOnZhcmlhYmxlCiAgICAkaG9saWRh eXMgPSBkb19saXN0KCRob2xpZGF5cyk7CiAgICAkdHhwaG9scyA9IGRvX2xpc3QoJGhvbGlk YXlzWzBdLCAiOiIpOwogICAgaWYgKCR0eHBob2xzWzBdID09ICJ0eHB2YXIiKSB7CiAgICAg ICAgJGhvbGlkYXlzID0gZG9fbGlzdCgkdmFyaWFibGVbJHR4cGhvbHNbMV1dKTsKICAgIH0K ICAgIC8vIEZvcmNlIGVhY2ggaG9saWRheSB0byBhIGtub3duIGZvcm1hdC4gSG9saWRheXMg d2l0aG91dCB5ZWFycyB1c2UgY3VycmVudCB5ZWFyCiAgICBmb3JlYWNoICgkaG9saWRheXMg YXMgJGtleSA9PiAkdmFsKSB7CiAgICAgICAgaWYgKGVtcHR5KCR2YWwpKSBjb250aW51ZTsK ICAgICAgICAkbnVtcGFydHMgPSBwcmVnX21hdGNoKCcvXihbXGRcd10rKS4/KFtcZFx3XSsp Lj8oW1xkXHddKyk/JC8nLCAkdmFsLCAkcGFydHMpOwoKICAgICAgICBpZiAoJG51bXBhcnRz KSB7CiAgICAgICAgICAgIGlmIChjb3VudCgkcGFydHMpID09IDMpIHsKICAgICAgICAgICAg ICAgICRwYXJ0c1szXSA9ICR5ZWFyOwogICAgICAgICB9CiAgICAgICAgICAgICR2YWwgPSBz dHJfcGFkKCRwYXJ0c1sxXSwgMiwgJzAnLCBTVFJfUEFEX0xFRlQpLictJy5zdHJfcGFkKCRw YXJ0c1syXSwgMiwgJzAnLCBTVFJfUEFEX0xFRlQpLictJy4kcGFydHNbM107CiAgICAgICAg fQogICAgICAgICRob2xpZGF5c1ska2V5XSA9IGRhdGUoImQtTS1ZIiwgc2FmZV9zdHJ0b3Rp bWUoJHZhbCkpOwogICAgfQoKICAgIGlmICgkZGVidWcgPiAwICYmICFlbXB0eSgkaG9saWRh eXMpICYmICRob2xpZGF5c1swXSAhPSAnJykgewogICAgICAgIGVjaG8gIisrIEhPTElEQVlT ICsrICI7CiAgICAgICAgZG1wKCRob2xpZGF5cyk7CiAgICB9CgogICAgLy8gR2V0IGFsbCBt YXRjaGluZyBhcnRpY2xlcyBpbiAoYW5kIGJlZm9yZSkgdGhpcyBtb250aAogICAgJGV2ZW50 cyA9IGFycmF5KCk7CiAgICAkdXBvc3RlZF9maWVsZCA9IChlbXB0eSgkZGF0ZWZpZWxkc1sw XSkpID8gJ3VQb3N0ZWQnIDogIlVOSVhfVElNRVNUQU1QKCRkYXRlZmllbGRzWzBdKSI7CiAg ICAkc3FsMiA9ICRzdGF0aSAuICIgSEFWSU5HICR1cG9zdGVkX2ZpZWxkIDw9ICIuJHRzX2xh c3RvZmYuICRleHBpcmVkIC4gJGV4dHJhc3FsIC4iIE9SREVSIEJZIFBvc3RlZCBBU0MiOwog ICAgJGdyYWJDb2xzID0gJyosIHVuaXhfdGltZXN0YW1wKFBvc3RlZCkgYXMgdVBvc3RlZCwg dW5peF90aW1lc3RhbXAoTGFzdE1vZCkgYXMgdUxhc3RNb2QsIHVuaXhfdGltZXN0YW1wKEV4 cGlyZXMpIGFzIHVFeHBpcmVzJzsKICAgICRldmxpc3QgPSBzYWZlX3Jvd3MoJGdyYWJDb2xz LCAndGV4dHBhdHRlcm4nLCAkc3FsMiwgJGRlYnVnKTsKICAgIGFydGljbGVfcHVzaCgpOwoK ICAgIC8vIElmIGFueSBldmVudHMgcmVjdXIgYW5kIGZhbGwgd2l0aGluIHRoZSBjdXJyZW50 IG1vbnRoLCBhZGQgdGhvc2UgYXMgd2VsbAogICAgLy8gSWYgYW55IGRhdGVzIGFyZSB0byBi ZSBleGNsdWRlZCwgdGhlIGVudHJ5IGlzIHNraXBwZWQgVU5MRVNTIHNob3dza2lwcGVkIGlu ZGljYXRlcyBvdGhlcndpc2UKICAgIGZvcmVhY2ggKCRldmxpc3QgYXMgJHJvdykgewogICAg ICAgICRpZHggPSAwOyAvLyBJbiBjYXNlIHRoZSAxc3QgZGF5IG9mIHRoZSBtb250aCBpcyBh IGNvbnRpbnVhdGlvbiBvZiBhbiBldmVudCBmcm9tIHRoZSBlbmQgb2YgdGhlIHByZXZpb3Vz IG1vbnRoCiAgICAgICAgJHN0YXJ0ID0gKCFlbXB0eSgkZGF0ZWZpZWxkc1swXSkgJiYgIWVt cHR5KCRyb3dbJGRhdGVmaWVsZHNbMF1dKSAmJiAoJHN0ZHQgPSBzdHJ0b3RpbWUoJHJvd1sk ZGF0ZWZpZWxkc1swXV0pKSAhPT0gZmFsc2UpID8gJHN0ZHQgOiAkcm93Wyd1UG9zdGVkJ10g KyB0el9vZmZzZXQoJHJvd1sndVBvc3RlZCddKTsKICAgICAgICAkc3RhcnRfZGF0ZSA9IGRh dGUoIlktbS1kIiwgJHN0YXJ0KTsgLy8gRm9yIHJlY3VycmluZy9zcGFubmVkIGV2ZW50cyBv biBhIG1pbmljYWwsIHRoaXMgaXMgdGhlIGV2ZW50IHRoZSBjZWxsIGxpbmtzIHRvCiAgICAg ICAgJHJlYWxfZW5kID0gKGlzc2V0KCRkYXRlZmllbGRzWzFdKSAmJiAhZW1wdHkoJHJvd1sk ZGF0ZWZpZWxkc1sxXV0pICYmICgkZW5kdCA9IHN0cnRvdGltZSgkcm93WyRkYXRlZmllbGRz WzFdXSkpICE9PSBmYWxzZSkgPyAkZW5kdCA6ICgoJHJvd1sndUV4cGlyZXMnXT09MCkgPyAw IDogJHJvd1sndUV4cGlyZXMnXSArIHR6X29mZnNldCgkcm93Wyd1RXhwaXJlcyddKSk7Cgog ICAgICAgIC8vIElmIGVuZCA8IHN0YXJ0IHRoZSB1c2VyLXNwZWNpZmllZCBkYXRlcyBjYW5u b3QgYmUgdHJ1c3RlZAogICAgICAgIGlmICgkcmVhbF9lbmQgIT0gMCAmJiAkcmVhbF9lbmQg PD0gJHN0YXJ0KSB7CiAgICAgICAgICAgICRzdGFydCA9ICRyb3dbJ3VQb3N0ZWQnXSArIHR6 X29mZnNldCgkcm93Wyd1UG9zdGVkJ10pOwogICAgICAgICAgICAkcmVhbF9lbmQgPSAkcm93 Wyd1RXhwaXJlcyddICsgdHpfb2Zmc2V0KCRyb3dbJ3VFeHBpcmVzJ10pOwogICAgICAgICAg ICB0cmlnZ2VyX2Vycm9yKCdFeHBpcnkgY2Fubm90IGJlIGJlZm9yZSBzdGFydCBkYXRlIGlu ICInLiRyb3dbJ1RpdGxlJ10uJyI6IGlnbm9yZWQnLCBFX1VTRVJfV0FSTklORyk7CiAgICAg ICAgfQoKICAgICAgICAkZW5kID0gKCRyZWFsX2VuZCAhPSAwICYmICRyZWFsX2VuZCA8ICR0 c19sYXN0KSA/ICRyZWFsX2VuZCA6ICR0c19sYXN0OwogICAgICAgICRyZWFsX2RpZmYgPSAo JHJlYWxfZW5kPT0wKSA/IDAgOiAkcmVhbF9lbmQgLSAkc3RhcnQ7CiAgICAgICAgJHJlYWxf ZW5kX21vbnRoID0gKCRyZWFsX2VuZD09MCkgPyAwIDogZGF0ZSgnbScsICRyZWFsX2VuZCk7 CiAgICAgICAgJHJlYWxfZW5kX3llYXIgPSAoJHJlYWxfZW5kPT0wKSA/IDAgOiBkYXRlKCdZ JywgJHJlYWxfZW5kKTsKICAgICAgICAkZmFrZV9kaWZmID0gc3RydG90aW1lKGRhdGUoIlkt TS1kIiwgJHJlYWxfZW5kKSAuICIgMjM6NTk6NTkiKTsKICAgICAgICAkZGlmZiA9ICgkcmVh bF9lbmQ9PTApID8gMCA6ICRmYWtlX2RpZmYgLSAkc3RhcnQ7CiAgICAgICAgJHNtZF9jYWxf ZmxhZyA9IGFycmF5KCk7CiAgICAgICAgJHNtZF9jYWxfdWNscyA9IGFycmF5KCk7CgogICAg ICAgICRldl9tb250aCA9IGRhdGUoJ20nLCAkc3RhcnQpOwogICAgICAgICRldl95ZWFyID0g ZGF0ZSgnWScsICRzdGFydCk7CiAgICAgICAgJGV2X2hyID0gZGF0ZSgnSCcsICRzdGFydCk7 CiAgICAgICAgJGV2X21uID0gZGF0ZSgnaScsICRzdGFydCk7CiAgICAgICAgJGV2X3NjID0g ZGF0ZSgncycsICRzdGFydCk7CgogICAgICAgIGlmICgkZGVidWcgPiAxKSB7CiAgICAgICAg ICAgIGVjaG8gJysrIEVWRU5UIFNUQVJUIC8vIEVORCAvLyAoaWYgbm9uLXplcm8pIFJFQUwg RU5EICsrJzsKICAgICAgICAgICAgZG1wKGRhdGUoJ2QtTS1ZIEg6aTpzJywgJHN0YXJ0KSAu JyAvLyAnLiBkYXRlKCdkLU0tWSBIOmk6cycsICRlbmQpIC4nIC8vICcuICggKCRyZWFsX2Vu ZCA9PSAwKSA/ICcnIDogZGF0ZSgnZC1NLVkgSDppOnMnLCAkcmVhbF9lbmQpICkpOwogICAg ICAgICAgICBkbXAoJHJvd1snVGl0bGUnXSk7CiAgICAgICAgICAgIGlmICgkZGVidWcgPiAy KSB7CiAgICAgICAgICAgICAgICBkbXAoJHJvdyk7CiAgICAgICAgICAgIH0KICAgICAgICB9 CgogICAgICAgICRtdWx0aSA9ICgoJGVuZCA+ICRzdGFydCkgJiYgKCRyZWFsX2VuZCA+ICRz dGFydCkgJiYgKCRyZWFsX2VuZCA+ICR0c19maXJzdCkgJiYgKGRhdGUoImQtbS1ZIiwgJHJl YWxfZW5kKSAhPSBkYXRlKCJkLW0tWSIsICRzdGFydCkpKSA/IHRydWUgOiBmYWxzZTsKICAg ICAgICAkcmVjdXIgPSAoZW1wdHkoJHJvd1skc3RlcGZpZWxkXSkpID8gZmFsc2UgOiB0cnVl OwogICAgICAgICRob2xfaGl0ID0gaW5fYXJyYXkoZGF0ZSgiZC1NLVkiLCAkc3RhcnQpLCAk aG9saWRheXMpOwogICAgICAgICRldmNsYXNzZXMgPSBhcnJheSgpOwogICAgICAgIGZvcmVh Y2ggKCRldmVudGNsYXNzZXMgYXMgJGV2Y2xzKSB7CiAgICAgICAgICAgIHN3aXRjaCAoJGV2 Y2xzKSB7CiAgICAgICAgICAgICAgICBjYXNlICIiOgogICAgICAgICAgICAgICAgICAgIGJy ZWFrOwogICAgICAgICAgICAgICAgY2FzZSAiZ2NhdCI6CiAgICAgICAgICAgICAgICAgICAg aWYgKGlzc2V0KCRwcmV0ZXh0WydjJ10pICYmICFlbXB0eSgkcHJldGV4dFsnYyddKSkgewog ICAgICAgICAgICAgICAgICAgICAgICAkZXZjbGFzc2VzW10gPSAkZXZjX3BmeC4kcHJldGV4 dFsnYyddOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVh azsKICAgICAgICAgICAgICAgIGNhc2UgImNhdGVnb3J5IjoKICAgICAgICAgICAgICAgICAg ICBpZiAoaXNzZXQoJHJvd1snQ2F0ZWdvcnkxJ10pICYmICFlbXB0eSgkcm93WydDYXRlZ29y eTEnXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGV2Y2xhc3Nlc1tdID0gJGV2Y19w ZnguJHJvd1snQ2F0ZWdvcnkxJ107CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgICAgIGlmIChpc3NldCgkcm93WydDYXRlZ29yeTInXSkgJiYgIWVtcHR5KCRyb3db J0NhdGVnb3J5MiddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkZXZjbGFzc2VzW10g PSAkZXZjX3BmeC4kcm93WydDYXRlZ29yeTInXTsKICAgICAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJzZWN0aW9u IjoKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHByZXRleHRbJ3MnXSkgJiYgIWVt cHR5KCRwcmV0ZXh0WydzJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRldmNsYXNz ZXNbXSA9ICRldmNfcGZ4LiRwcmV0ZXh0WydzJ107CiAgICAgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAiYXV0aG9y IjoKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHByZXRleHRbJ2F1dGhvciddKSAm JiAhZW1wdHkoJHByZXRleHRbJ2F1dGhvciddKSkgewogICAgICAgICAgICAgICAgICAgICAg ICAkZXZjbGFzc2VzW10gPSAkZXZjX3BmeC4kcHJldGV4dFsnYXV0aG9yJ107CiAgICAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHJvd1skZXZjbHNd KSAmJiAhZW1wdHkoJHJvd1skZXZjbHNdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAk ZXZjbGFzc2VzW10gPSAkZXZjX3BmeC4kcm93WyRldmNsc107CiAgICAgICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAg fQogICAgICAgICRpZ25vcmUgPSBhcnJheSgpOwogICAgICAgICRvbWl0ID0gYXJyYXkoKTsK ICAgICAgICAkY2ZsYWcgPSBhcnJheSgpOwoKICAgICAgICBpZiAoJGRlYnVnID4gMSAmJiAk ZXZjbGFzc2VzKSB7CiAgICAgICAgICAgIGVjaG8gJysrIEVWRU5UIENMQVNTRVMgKysnOwog ICAgICAgICAgICBkbXAoJGV2Y2xhc3Nlcyk7CiAgICAgICAgfQoKICAgICAgICAvLyBFdmVu dHMgdGhhdCBzdGFydCBvciBhcmUgYWRkZWQgdGhpcyBtb250aAogICAgICAgIGlmICgoJHN0 YXJ0IDwgJGVuZCkgJiYgKCRzdGFydCA+ICR0c19maXJzdCkpIHsKICAgICAgICAgICAgcG9w dWxhdGVBcnRpY2xlRGF0YSgkcm93KTsKCiAgICAgICAgICAgIC8vIGEgc3RhbmRhcmQgZXZl bnQgb3Igc3RhcnQgb2YgYSBtdWx0aQogICAgICAgICAgICBpZiAoJHNob3dzcGFubmVkICYm ICRtdWx0aSAmJiAhJHJlY3VyKSB7CiAgICAgICAgICAgICAgICAkc21kX2NhbF9mbGFnW10g PSAnbXVsdGlmaXJzdCc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRyZWN1cikg ewogICAgICAgICAgICAgICAgJHNtZF9jYWxfZmxhZ1tdID0gJ3JlY3VyZmlyc3QnOwogICAg ICAgICAgICB9CiAgICAgICAgICAgIGlmICghJHNtZF9jYWxfZmxhZykgewogICAgICAgICAg ICAgICAgJHNtZF9jYWxfZmxhZ1tdID0gJ3N0YW5kYXJkJzsKICAgICAgICAgICAgfQogICAg ICAgICAgICBpZiAoICggJGhvbF9oaXQgJiYgIWluX2FycmF5KCdtdWx0aScsJGhvbGlkYXlm bGFncykgJiYgaW5fYXJyYXkoJ211bHRpZmlyc3QnLCRzbWRfY2FsX2ZsYWcpICkgfHwgKCAk aG9sX2hpdCAmJiAhaW5fYXJyYXkoJ3N0YW5kYXJkJywkaG9saWRheWZsYWdzKSAmJiBpbl9h cnJheSgnc3RhbmRhcmQnLCRzbWRfY2FsX2ZsYWcpICkgKSB7CiAgICAgICAgICAgICAgICAk c21kX2NhbF9mbGFnW10gPSAnY2FuY2VsJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBm b3JlYWNoICgkc21kX2NhbF9mbGFnIGFzICRpdGVtKSB7CiAgICAgICAgICAgICAgICAkY2Zs YWdbXSA9ICRjbHNfcGZ4LiRpdGVtOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkaWR4 ID0gJHNtZF9kYXRlWydkJ10gPSAoaW50KXN0cmZ0aW1lKCclZCcsICRzdGFydCk7CiAgICAg ICAgICAgICRzbWRfZGF0ZVsndyddID0gc3RyZnRpbWUoc21kX2NhbF9yZWZvcm1hdF93aW4o JyVWJywgJHN0YXJ0KSwgJHN0YXJ0KTsKICAgICAgICAgICAgJHNtZF9kYXRlWydpeSddID0g c3RyZnRpbWUoc21kX2NhbF9yZWZvcm1hdF93aW4oJyVHJywgJHN0YXJ0KSwgJHN0YXJ0KTsK ICAgICAgICAgICAgJHVzZV9wb3N0ZWQgPSBpbl9hcnJheSgnc3RhbmRhcmQnLCAkbGlua3Bv c3RlZCk7CgogICAgICAgICAgICAkb3AgPSAoJHRoaW5nKSA/IHBhcnNlKCR0aGluZykgOiAo KCRmb3JtKSA/IHBhcnNlX2Zvcm0oJGZvcm0pIDogKCgkc2l6ZT09InNtYWxsIikgPyBzbWRf Y2FsX21pbmlsaW5rKCRyb3csICRpZHgsICRtb250aCwgJHllYXIsICR1c2VfcG9zdGVkKSA6 IGhyZWYoJHJvd1snVGl0bGUnXSwgcGVybWxpbmt1cmwoJHJvdyksICcgdGl0bGU9IicuJHJv d1snVGl0bGUnXS4nIicpKSApOwogICAgICAgICAgICAkZXZlbnRzWyRpZHhdW10gPSBhcnJh eSgnZXYnID0+ICRvcCwgJ2V2aWQnID0+ICRyb3dbJ0lEJ10sICdmbGFnJyA9PiAkc21kX2Nh bF9mbGFnLCAnY2xhc3NlcycgPT4gYXJyYXlfbWVyZ2UoJGNmbGFnLCAkc21kX2NhbF91Y2xz LCAkZXZjbGFzc2VzKSwgJ3Bvc3RlZCcgPT4gJHN0YXJ0X2RhdGUpOwogICAgICAgICAgICAk c21kX2NhbF9mbGFnID0gYXJyYXkoKTsKICAgICAgICAgICAgJGNmbGFnID0gYXJyYXkoKTsK ICAgICAgICAgICAgJHNtZF9jYWxfdWNscyA9IGFycmF5KCk7CiAgICAgICAgICAgICR1c2Vf cG9zdGVkID0gJyc7CiAgICAgICAgfQoKICAgICAgICAvLyBHZW5lcmF0ZSBhIHNraXAgYXJy YXkgZm9yIHRoaXMgZXZlbnQKICAgICAgICBpZiAoJHNraXBmaWVsZCAmJiAkcm93WyRza2lw ZmllbGRdICE9ICcnKSB7CiAgICAgICAgICAgICRpZ25vcmVzID0gZG9fbGlzdCgkcm93WyRz a2lwZmllbGRdKTsKICAgICAgICAgICAgZm9yZWFjaCAoJGlnbm9yZXMgYXMgJHZhbCkgewog ICAgICAgICAgICAgICAgJGlncm5nID0gc21kX2V4cGFuZF9kYXRlcmFuZ2UoJHZhbCwgJHN0 YXJ0LCAkZW5kKTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRpZ3JuZyBhcyAkdGhldmFs KSB7CiAgICAgICAgICAgICAgICAgICAgJGlnbm9yZVtdID0gZGF0ZSgiZC1NLVkiLCAkdGhl dmFsKTsgLy8gRm9yY2UgZWFjaCBkYXRlIHRvIGEga25vd24gZm9ybWF0CiAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gR2VuZXJhdGUgYW4g b21pdCBhcnJheSBmb3IgdGhpcyBldmVudAogICAgICAgIGlmICgkb21pdGZpZWxkICYmICRy b3dbJG9taXRmaWVsZF0gIT0gJycpIHsKICAgICAgICAgICAgJG9taXRzID0gZG9fbGlzdCgk cm93WyRvbWl0ZmllbGRdKTsKICAgICAgICAgICAgZm9yZWFjaCAoJG9taXRzIGFzICR2YWwp IHsKICAgICAgICAgICAgICAgICRvbXJuZyA9IHNtZF9leHBhbmRfZGF0ZXJhbmdlKCR2YWws ICRzdGFydCwgJGVuZCk7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkb21ybmcgYXMgJHRo ZXZhbCkgewogICAgICAgICAgICAgICAgICAgICRvbWl0W10gPSBkYXRlKCJkLU0tWSIsICR0 aGV2YWwpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAg ICAgIGlmICgkZGVidWcgPiAxICYmICgkaWdub3JlIHx8ICRvbWl0KSkgewogICAgICAgICAg ICBlY2hvICcrKyBPTUlUVEVEIERBVEVTICsrJzsKICAgICAgICAgICAgZG1wKCRvbWl0KTsK ICAgICAgICAgICAgZWNobyAnKysgQ0FOQ0VMTEVEIERBVEVTICsrJzsKICAgICAgICAgICAg ZG1wKCRpZ25vcmUpOwogICAgICAgIH0KICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGRhdGUg b2Zmc2V0cyBhbmQgY2hlY2sgcmVjdXJyaW5nIGV2ZW50cyB0aGF0IGZhbGwgd2l0aGluIHRo ZSBtb250aCBvZiBpbnRlcmVzdAogICAgICAgIGlmICgkc3RlcGZpZWxkICYmICRyb3dbJHN0 ZXBmaWVsZF0gIT0gJycpIHsKICAgICAgICAgICAgJGZyZXEgPSBkb19saXN0KCRyb3dbJHN0 ZXBmaWVsZF0pOwogICAgICAgICAgICAkc3RhbXBvZmYgPSAoaW50KSgzNjAwKiRldl9ocikg KyAoaW50KSg2MCokZXZfbW4pICsgKGludCkkZXZfc2M7CiAgICAgICAgICAgIGZvcmVhY2gg KCRmcmVxIGFzICRpbnRlcnZhbCkgewogICAgICAgICAgICAgICAgJG1heF9sb29wID0gOTk5 OTk7IC8vIFl1aywgYnV0IHByYWN0aWNhbGx5IGxpbWl0bGVzcwogICAgICAgICAgICAgICAg JG9yaWdlcnZhbCA9ICRpbnRlcnZhbDsKICAgICAgICAgICAgICAgICRpbnRlcnZhbCA9IHN0 cl9yZXBsYWNlKCI/bW9udGgiLCBkYXRlKCdGJywgbWt0aW1lKDAsMCwwLCRtb250aCwxKSks ICRpbnRlcnZhbCk7CiAgICAgICAgICAgICAgICAkaW50ZXJ2YWwgPSBzdHJfcmVwbGFjZSgi P3llYXIiLCAkeWVhciwgJGludGVydmFsKTsKICAgICAgICAgICAgICAgIGlmIChzdHJwb3Mo JGludGVydmFsLCAibGFzdCIpID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgJGludGVy dmFsID0gZGF0ZSgibCwgRiBqUyBZIiwgc3RydG90aW1lKCAkaW50ZXJ2YWwsIG1rdGltZSgx MiwgMCwgMCwgZGF0ZSgibiIsIG1rdGltZSgwLDAsMCwkbW9udGgsMSwkeWVhcikpKzEsIDEs ICR5ZWFyKSApKTsKICAgICAgICAgICAgICAgICAgICAkbWF4X2xvb3AgPSAxOwogICAgICAg ICAgICAgICAgfSBlbHNlIGlmIChzdHJwb3MoJGludGVydmFsLCAiZmlyc3QiKSA9PT0gMCkg ewogICAgICAgICAgICAgICAgICAgICRpbnRlcnZhbCA9IGRhdGUoImwsIEYgalMgWSIsIHN0 cnRvdGltZSggJGludGVydmFsLCBta3RpbWUoMTIsIDAsIDAsICgoJG1vbnRoPjEpID8gJG1v bnRoLTEgOiAxMiksIGRhdGUoInQiLCBta3RpbWUoMCwwLDAsJG1vbnRoLTEsMSwoKCRtb250 aD09MSkgPyAkeWVhci0xOiAkeWVhcikpKSwgKCgkbW9udGg9PTEpID8gJHllYXItMTogJHll YXIpKSApKTsKICAgICAgICAgICAgICAgICAgICAkbWF4X2xvb3AgPSAxOwogICAgICAgICAg ICAgICAgfSBlbHNlIGlmIChzdHJwb3MoJGludGVydmFsLCAidGhpcyIpID09PSAwKSB7CiAg ICAgICAgICAgICAgICAgICAgJG1heF9sb29wID0gMTsKICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgICAgICR0c19sb29wID0gMDsKICAgICAgICAgICAgICAgICR0c19jdXJyID0g JHN0YXJ0OwogICAgICAgICAgICAgICAgaWYgKHN0cnBvcygkb3JpZ2VydmFsLCAiP21vbnRo IikgfHwgc3RycG9zKCRvcmlnZXJ2YWwsICI/eWVhciIpKSB7CiAgICAgICAgICAgICAgICAg ICAgJG1heF9sb29wID0gMTsKICAgICAgICAgICAgfQoKLy8gICAgICAgICAgICAgICRybmcg PSBzbWRfZXhwYW5kX2RhdGVyYW5nZSgkaW50ZXJ2YWwpOwovL2RtcCgkaW50ZXJ2YWwsICRy bmcpOwogICAgICAgICAgICAgICAgd2hpbGUgKCR0c19jdXJyIDwgJGVuZCAmJiAkdHNfbG9v cCA8ICRtYXhfbG9vcCkgewogICAgICAgICAgICAgICAgICAgIGlmICgkbWF4X2xvb3AgPT0g MSkgewogICAgICAgICAgICAgICAgICAgICAgICAkdHNfY3VyciA9IHN0cnRvdGltZSgkaW50 ZXJ2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICAkdHNfY3VyciA9ICgkdHNfY3VyciA8 ICRzdGFydCB8fCAkdHNfY3VyciA+ICRlbmQpID8gJHN0YXJ0IDogJHRzX2N1cnI7CiAgICAg ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRzX2N1 cnIgPSBzdHJ0b3RpbWUoJGludGVydmFsLCAkdHNfY3Vycik7CiAgICAgICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgICAgICAgIGlmICgkdHNfY3VyciA9PT0gZmFsc2UpIHsKICAg ICAgICAgICAgICAgICAgICAgICAgJHRzX2xvb3ArKzsKICAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKCRkZWJ1ZyA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRtcCgiSU5URVJWQUw6ICIuIGRhdGUoJ2QtTS1ZIEg6aTpzJywgJHRzX2N1cnIrJHN0YW1w b2ZmKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg ICAgaWYgKCR0c19jdXJyIDwgJGVuZCAmJiAkdHNfY3VyciA+PSAkdHNfZmlyc3QgJiYgJHRz X2N1cnIgIT0gJHN0YXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBIHJl Y3VycmluZyBldmVudC4gQ2hlY2sgaXQgaXNuJ3QgYSBob2xpZGF5IG9yIHRvIGJlIGlnbm9y ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVsYXRlQXJ0aWNsZURhdGEoJHJv dyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3AgPSAnJzsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICRpZHggPSAoaW50KXN0cmZ0aW1lKCclZCcsICR0c19jdXJyKTsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzbWRfY2FsX2ZsYWdbXSA9ICdyZWN1cic7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpc2RhdGUgPSBkYXRlKCJkLU0tWSIs ICR0c19jdXJyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvbWl0X21lID0gaW5f YXJyYXkoJHRoaXNkYXRlLCAkb21pdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAk c2hvd19tZSA9ICFpbl9hcnJheSgkdGhpc2RhdGUsICRpZ25vcmUpOwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgJGhvbF9oaXQgPSBpbl9hcnJheSgkdGhpc2RhdGUsICRob2xpZGF5 cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2hvd19ob2wgPSAoJGhvbF9oaXQg JiYgIWluX2FycmF5KCdyZWN1cicsJGhvbGlkYXlmbGFncykgKSA/IGZhbHNlIDogdHJ1ZTsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1c2VfcG9zdGVkID0gc21kX2NhbF9pbl9h cnJheShhcnJheSgncmVjdXInLCAncmVjdXJmaXJzdCcpLCAkbGlua3Bvc3RlZCk7CgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkb21pdF9tZSApIHsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAkc21kX2NhbF9mbGFnW10gPSAnb21pdCc7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo ICghJHNob3dfbWUgfHwgISRzaG93X2hvbCkgJiYgISRvbWl0X21lICkgewogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICRzbWRfY2FsX2ZsYWdbXSA9ICdjYW5jZWwnOwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAg Zm9yZWFjaCAoJHNtZF9jYWxfZmxhZyBhcyAkaXRlbSkgewogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICRjZmxhZ1tdID0gJGNsc19wZnguJGl0ZW07CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRl IHRoZSBldmVudHMgdGhhdCBhcHBlYXIgaW4gdGhlIGNlbGwgYnV0IG9ubHkgaWYgdGhleSd2 ZSBub3QgYXBwZWFyZWQgYmVmb3JlLCBvciBhcmUgdG8gYmUgaWdub3JlZC9vbWl0dGVkCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRvbWl0X21lKSB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKCgkc2hvd19tZSAmJiAkc2hvd19ob2wpIHx8ICRz aG93c2tpcHBlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc21k X2RhdGVbJ2QnXSA9ICRpZHg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICRzbWRfZGF0ZVsndyddID0gc3RyZnRpbWUoc21kX2NhbF9yZWZvcm1hdF93aW4oJyVWJywg JHRzX2N1cnIpLCAkdHNfY3Vycik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICRzbWRfZGF0ZVsnaXknXSA9IHN0cmZ0aW1lKHNtZF9jYWxfcmVmb3JtYXRfd2luKCcl RycsICR0c19jdXJyKSwgJHRzX2N1cnIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAkb3AgPSAoJHJlY3VyZm9ybSkgPyBwYXJzZV9mb3JtKCRyZWN1cmZvcm0pIDog KCgkdGhpbmcpID8gcGFyc2UoJHRoaW5nKSA6ICgoJHNpemU9PSJzbWFsbCIpID8gc21kX2Nh bF9taW5pbGluaygkcm93LCAkaWR4LCAkbW9udGgsICR5ZWFyLCAkdXNlX3Bvc3RlZCkgOiBo cmVmKCRyb3dbJ1RpdGxlJ10sIHBlcm1saW5rdXJsKCRyb3cpLCAnIHRpdGxlPSInLiRyb3db J1RpdGxlJ10uJyInKSkgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAkdXNlZCA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNz ZXQoJGV2ZW50c1skaWR4XSkgJiYgJGV2ZW50c1skaWR4XSAhPSBOVUxMKSB7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGV2ZW50c1skaWR4XSBhcyAkZXYp IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHVzZWRbXSA9ICRldlsn ZXYnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQo JGV2ZW50c1skaWR4XSkgJiYgJGV2ZW50c1skaWR4XSA9PSBOVUxMIHx8ICFpbl9hcnJheSgk b3AsICR1c2VkKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudHNb JGlkeF1bXSA9IGFycmF5KCdldicgPT4gJG9wLCAnZXZpZCcgPT4gJHJvd1snSUQnXSwgJ2Zs YWcnID0+ICRzbWRfY2FsX2ZsYWcsICdjbGFzc2VzJyA9PiBhcnJheV9tZXJnZSgkY2ZsYWcs ICRzbWRfY2FsX3VjbHMsICRldmNsYXNzZXMpLCAncG9zdGVkJyA9PiAkc3RhcnRfZGF0ZSk7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAkc21kX2NhbF9mbGFnID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICRjZmxhZyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc21k X2NhbF91Y2xzID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1c2Vf cG9zdGVkID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg ICAgICAgICAgJHRzX2xvb3ArKzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKCRzaG93c3Bhbm5lZCAm JiAkbXVsdGkpIHsKICAgICAgICAgICAgLy8gTm9uLXJlY3VycmluZyBldmVudHMgbWF5IHNw YW4gbW9yZSB0aGFuIG9uZSBkYXRlIGJ1dCB0aGV5IG11c3Qgc3RpbGwgcmVzcGVjdCBpZ25v cmVkIGRhdGVzIGFuZCBob2xpZGF5cwogICAgICAgICAgICBwb3B1bGF0ZUFydGljbGVEYXRh KCRyb3cpOwogICAgICAgICAgICAkbGFzdGRheSA9IChpbnQpc3RyZnRpbWUoJyVkJywgJGVu ZCk7CiAgICAgICAgICAgICRyZWFsX2xhc3RkYXkgPSAoaW50KXN0cmZ0aW1lKCclZCcsICRy ZWFsX2VuZCk7CiAgICAgICAgICAgIHdoaWxlICgrKyRpZHggPD0gJGxhc3RkYXkpIHsKICAg ICAgICAgICAgICAgICRvcCA9ICcnOwogICAgICAgICAgICAgICAgJG11bHRpZmxhZyA9ICgo JHllYXI9PSRyZWFsX2VuZF95ZWFyKSAmJiAoJG1vbnRoPT0kcmVhbF9lbmRfbW9udGgpICYm ICgkaWR4PT0kcmVhbF9sYXN0ZGF5KSkgPyAnbXVsdGlsYXN0JyA6ICgoJGlkeD09MSkgPyAn bXVsdGlwcmV2JyA6ICdtdWx0aScpOwogICAgICAgICAgICAgICAgJHNtZF9jYWxfZmxhZ1td ID0gJG11bHRpZmxhZzsKICAgICAgICAgICAgICAgICR0aGlzdGltZSA9IG1rdGltZSgwLCAw LCAwLCAkbW9udGgsICRpZHgsICR5ZWFyKTsKICAgICAgICAgICAgICAgICR0aGlzZGF0ZSA9 IGRhdGUoImQtTS1ZIiwgJHRoaXN0aW1lKTsKICAgICAgICAgICAgICAgICRvbWl0X21lID0g aW5fYXJyYXkoJHRoaXNkYXRlLCAkb21pdCk7CiAgICAgICAgICAgICAgICAkc2hvd19tZSA9 ICFpbl9hcnJheSgkdGhpc2RhdGUsICRpZ25vcmUpOwogICAgICAgICAgICAgICAgJGhvbF9o aXQgPSBpbl9hcnJheSgkdGhpc2RhdGUsICRob2xpZGF5cyk7CiAgICAgICAgICAgICAgICAk c2hvd19ob2wgPSAoJGhvbF9oaXQgJiYgIWluX2FycmF5KCdtdWx0aScsJGhvbGlkYXlmbGFn cykgKSA/IGZhbHNlIDogdHJ1ZTsKICAgICAgICAgICAgICAgICR1c2VfcG9zdGVkID0gc21k X2NhbF9pbl9hcnJheShhcnJheSgnbXVsdGknLCAnbXVsdGlmaXJzdCcsICdtdWx0aWxhc3Qn LCAnbXVsdGlwcmV2JyksICRsaW5rcG9zdGVkKTsKICAgICAgICAgICAgICAgIGlmICggJG9t aXRfbWUgKSB7CiAgICAgICAgICAgICAgICAgICAgJHNtZF9jYWxfZmxhZ1tdID0gJ29taXQn OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCAoISRzaG93X21lIHx8 ICEkc2hvd19ob2wpICYmICEkb21pdF9tZSApIHsKICAgICAgICAgICAgICAgICAgICAkc21k X2NhbF9mbGFnW10gPSAnY2FuY2VsJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg ICAgIGZvcmVhY2ggKCRzbWRfY2FsX2ZsYWcgYXMgJGl0ZW0pIHsKICAgICAgICAgICAgICAg ICAgICAkY2ZsYWdbXSA9ICRjbHNfcGZ4LiRpdGVtOwogICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBzcGFubmVkIGV2ZW50IHRoYXQgYXBwZWFycyBp biB0aGUgY2VsbAogICAgICAgICAgICAgICAgaWYgKCEkb21pdF9tZSkgewogICAgICAgICAg ICAgICAgICAgIGlmICggKCRzaG93X21lICYmICRzaG93X2hvbCkgfHwgJHNob3dza2lwcGVk KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzbWRfZGF0ZVsnZCddID0gJGlkeDsKICAg ICAgICAgICAgICAgICAgICAgICAgJHNtZF9kYXRlWyd3J10gPSBzdHJmdGltZShzbWRfY2Fs X3JlZm9ybWF0X3dpbignJVYnLCAkdGhpc3RpbWUpLCAkdGhpc3RpbWUpOwogICAgICAgICAg ICAgICAgICAgICAgICAkc21kX2RhdGVbJ2l5J10gPSBzdHJmdGltZShzbWRfY2FsX3JlZm9y bWF0X3dpbignJUcnLCAkdGhpc3RpbWUpLCAkdGhpc3RpbWUpOwogICAgICAgICAgICAgICAg ICAgICAgICAkb3AgPSAoJHNwYW5mb3JtKSA/IHBhcnNlX2Zvcm0oJHNwYW5mb3JtKSA6ICgo JHRoaW5nKSA/IHBhcnNlKCR0aGluZykgOiAoKCRzaXplPT0ic21hbGwiKSA/IHNtZF9jYWxf bWluaWxpbmsoJHJvdywgJGlkeCwgJG1vbnRoLCAkeWVhciwgJHVzZV9wb3N0ZWQpIDogaHJl ZignJnJhcnI7JywgcGVybWxpbmt1cmwoJHJvdyksICcgdGl0bGU9IicuJHJvd1snVGl0bGUn XS4nIicpKSApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgICAgICRldmVudHNbJGlkeF1bXSA9IGFycmF5KCdldicgPT4gJG9wLCAnZXZp ZCcgPT4gJHJvd1snSUQnXSwgJ2ZsYWcnID0+ICRzbWRfY2FsX2ZsYWcsICdjbGFzc2VzJyA9 PiBhcnJheV9tZXJnZSgkY2ZsYWcsICRzbWRfY2FsX3VjbHMsICRldmNsYXNzZXMpLCAncG9z dGVkJyA9PiAkc3RhcnRfZGF0ZSk7CiAgICAgICAgICAgICAgICAkc21kX2NhbF9mbGFnID0g YXJyYXkoKTsKICAgICAgICAgICAgICAgICRjZmxhZyA9IGFycmF5KCk7CiAgICAgICAgICAg ICAgICAkc21kX2NhbF91Y2xzID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICR1c2VfcG9z dGVkID0gJyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gQWRkIGFueSBl eHRyYSBkYXRlcyBmb3IgdGhpcyBldmVudCB0aGF0IGFyZSB3aXRoaW4gdGhlIGN1cnJlbnQg bW9udGgKICAgICAgICBpZiAoJGV4dHJhZmllbGQgJiYgJHJvd1skZXh0cmFmaWVsZF0gIT0g JycpIHsKICAgICAgICAgICAgJHh0cmEgPSBkb19saXN0KCRyb3dbJGV4dHJhZmllbGRdKTsK ICAgICAgICAgICAgJGV2X2hyID0gZGF0ZSgnSCcsICRzdGFydCk7CiAgICAgICAgICAgICRl dl9tbiA9IGRhdGUoJ2knLCAkc3RhcnQpOwogICAgICAgICAgICAkZXZfc2MgPSBkYXRlKCdz JywgJHN0YXJ0KTsKICAgICAgICAgICAgJHN0YW1wb2ZmID0gKGludCkoMzYwMCokZXZfaHIp ICsgKGludCkoNjAqJGV2X21uKSArIChpbnQpJGV2X3NjOwogICAgICAgICAgICBmb3JlYWNo ICgkeHRyYSBhcyAkdmFsKSB7CiAgICAgICAgICAgICAgICBpZiAoc3RycG9zKCR2YWwsICIr IikgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgJGV4cm5nID0gc21kX2V4cGFu ZF9kYXRlcmFuZ2UoJHZhbCk7CiAgICAgICAgICAgICAgICAgICAgJHZhbCA9IGRhdGUoIlkt bS1kIiwgJGV4cm5nWzBdKTsKICAgICAgICAgICAgICAgICAgICAkc3BpZHRoID0gY291bnQo JGV4cm5nKTsKICAgICAgICAgICAgICAgICAgICAkc3BleCA9IDA7CiAgICAgICAgICAgICAg ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRjaGsgPSAkc2hvd3NwYW5uZWQgJiYg ISRyZWN1cjsKICAgICAgICAgICAgICAgICAgICAkc3BpZHRoID0gJGNoayA/IGNlaWwoJGRp ZmYgLyAoNjAqNjAqMjQpKSA6IDE7IC8vIGRheXMgYmV0d2VlbiBkYXRlcwogICAgICAgICAg ICAgICAgICAgICR2YWwgPSBydHJpbSgkdmFsLCAnKycpOwogICAgICAgICAgICAgICAgICAg ICRzcGV4ID0gJGNoayA/IDEgOiAwOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg ICAgIGZvciAoJGpkeCA9IDE7ICRqZHggPD0gJHNwaWR0aDsgJGpkeCsrKSB7CiAgICAgICAg ICAgICAgICAgICAgJHRtID0gc2FmZV9zdHJ0b3RpbWUoJHZhbCAuICgoJGpkeD09MSkgPyAn JyA6ICcrJy4oJGpkeC0xKS4nIGRheXMnKSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRk aWZmID4gMCAmJiAkamR4ID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGV4cHN0 YW1wID0gJHRtKyRzdGFtcG9mZiskcmVhbF9kaWZmOwogICAgICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgICAgICAkaWR4ID0gJHNtZF9kYXRlWydkJ10gPSAoaW50KXN0cmZ0 aW1lKCclZCcsICR0bSk7CiAgICAgICAgICAgICAgICAgICAgJGR0ID0gZGF0ZSgiWS1tLWQi LCAkdG0pOwogICAgICAgICAgICAgICAgICAgICRsc3QgPSAoJGV4dHJhc3RyaWN0KSA/ICRl bmQgOiAkdHNfbGFzdDsKICAgICAgICAgICAgICAgICAgICBpZiAoJHRtIDwgJGxzdCAmJiAk dG0gPj0gJHRzX2ZpcnN0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmYWtlcm93ID0g JHJvdzsKICAgICAgICAgICAgICAgICAgICAgICAgJGZha2Vyb3dbJ1Bvc3RlZCddID0gZGF0 ZSgiWS1tLWQgSDppOnMiLCAkdG0rJHN0YW1wb2ZmKTsKICAgICAgICAgICAgICAgICAgICAg ICAgJGZha2Vyb3dbJ3VQb3N0ZWQnXSA9ICR0bSskc3RhbXBvZmY7CiAgICAgICAgICAgICAg ICAgICAgICAgIGlmICgkZGlmZj4wKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAk ZmFrZXJvd1snRXhwaXJlcyddID0gZGF0ZSgiWS1tLWQgSDppOnMiLCAkZXhwc3RhbXApOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZha2Vyb3dbJ3VFeHBpcmVzJ10gPSAkZXhw c3RhbXA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAg ICAgIHBvcHVsYXRlQXJ0aWNsZURhdGEoJGZha2Vyb3cpOwogICAgICAgICAgICAgICAgICAg ICAgICAkc21kX2NhbF9mbGFnW10gPSAnZXh0cmEnOwogICAgICAgICAgICAgICAgICAgICAg ICAkY2ZsYWdbXSA9ICRjbHNfcGZ4LidleHRyYSc7CiAgICAgICAgICAgICAgICAgICAgICAg ICRvbWl0X21lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICRzaG93X21lID0g JHNob3dfaG9sID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzcGV4KSB7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbXVsdGlmbGFnID0gKCRqZHg9PTEpID8g J211bHRpZmlyc3QnIDogKCgkamR4PT0kc3BpZHRoKSA/ICdtdWx0aWxhc3QnIDogKCgkaWR4 PT0xKSA/ICdtdWx0aXByZXYnIDogJ211bHRpJykpOwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgJHRoaXNkYXRlID0gZGF0ZSgiZC1NLVkiLCAkdG0pOwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgJG9taXRfbWUgPSBpbl9hcnJheSgkdGhpc2RhdGUsICRvbWl0KTsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICRzaG93X21lID0gIWluX2FycmF5KCR0aGlzZGF0 ZSwgJGlnbm9yZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaG9sX2hpdCA9IGlu X2FycmF5KCR0aGlzZGF0ZSwgJGhvbGlkYXlzKTsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICRzaG93X2hvbCA9ICgkaG9sX2hpdCAmJiAhaW5fYXJyYXkoJ211bHRpJywkaG9saWRh eWZsYWdzKSApID8gZmFsc2UgOiB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg JHVzZV9wb3N0ZWQgPSBpbl9hcnJheSgnZXh0cmEnLCAkbGlua3Bvc3RlZCk7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiAoJG9taXRfbWUpIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAkc21kX2NhbF9mbGFnW10gPSAnb21pdCc7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICghJHNo b3dfbWUgfHwgISRzaG93X2hvbCkgJiYgISRvbWl0X21lICkgewogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICRzbWRfY2FsX2ZsYWdbXSA9ICdjYW5jZWwnOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNtZF9j YWxfZmxhZ1tdID0gJG11bHRpZmxhZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRj ZmxhZ1tdID0gJGNsc19wZnguJG11bHRpZmxhZzsKICAgICAgICAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRvbWl0X21lKSB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZiAoICgkc2hvd19tZSAmJiAkc2hvd19ob2wpIHx8ICRzaG93 c2tpcHBlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzbWRfZGF0ZVsn dyddID0gc3RyZnRpbWUoc21kX2NhbF9yZWZvcm1hdF93aW4oJyVWJywgJHRtKSwgJHRtKTsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc21kX2RhdGVbJ2l5J10gPSBzdHJm dGltZShzbWRfY2FsX3JlZm9ybWF0X3dpbignJUcnLCAkdG0pLCAkdG0pOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICRvcCA9ICgkc3BleCAmJiAkc3BhbmZvcm0pID8gcGFy c2VfZm9ybSgkc3BhbmZvcm0pIDogKCgkdGhpbmcpID8gcGFyc2UoJHRoaW5nKSA6ICgoJGZv cm0pID8gcGFyc2VfZm9ybSgkZm9ybSkgOiAoKCRzaXplPT0ic21hbGwiKSA/IHNtZF9jYWxf bWluaWxpbmsoJHJvdywgJGlkeCwgJG1vbnRoLCAkeWVhciwgJHVzZV9wb3N0ZWQpIDogaHJl ZigoKCRzcGV4ICYmICRqZHg+MSkgPyAnJnJhcnI7JyA6ICRyb3dbJ1RpdGxlJ10pLCBwZXJt bGlua3VybCgkcm93KSwgJyB0aXRsZT0iJy4kcm93WydUaXRsZSddLiciJykpICkpOwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudHNbJGlkeF1bXSA9IGFycmF5KCdl dicgPT4gJG9wLCAnZXZpZCcgPT4gJHJvd1snSUQnXSwgJ2ZsYWcnID0+ICRzbWRfY2FsX2Zs YWcsICdjbGFzc2VzJyA9PiBhcnJheV9tZXJnZSgkY2ZsYWcsICRzbWRfY2FsX3VjbHMsICRl dmNsYXNzZXMpLCAncG9zdGVkJyA9PiAkZHQpOwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICRzbWRfY2FsX2ZsYWcgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICRjZmxhZyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJHNtZF9jYWxfdWNscyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJHVzZV9wb3N0ZWQgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGFydGlj bGVfcG9wKCk7CgogICAgaWYgKCRkZWJ1ZyA+IDEgJiYgJGV2ZW50cykgewogICAgICAgIGVj aG8gJysrIEFMTCBFVkVOVFMgKysnOwogICAgICAgIGRtcCgkZXZlbnRzKTsKICAgIH0KCiAg ICAvLyBHZW5lcmF0ZSB0aGUgY2FsZW5kYXIKICAgICRjYWxlbmRhciA9IG5ldyBTTURfQ2Fs ZW5kYXIoJHNpemUsICR5ZWFyLCAkbW9udGgsICRldmVudHMsICRzZWN0aW9uLCAkY2F0ZWdv cnksICRkZWJ1Zyk7CiAgICAkY2FsZW5kYXItPnNldFdlZWsoJHdlZWspOwogICAgJGNhbGVu ZGFyLT5zZXRGaXJzdERheU9mV2VlaygkZmlyc3RkYXkpOwogICAgJGNhbGVuZGFyLT5zZXRH TVQoJGdtdCk7CiAgICAkY2FsZW5kYXItPnNldExhbmcoJGxhbmcpOwogICAgJGNhbGVuZGFy LT5zZXRDbGFzc0xldmVscygkY2xldnMpOwogICAgJGNhbGVuZGFyLT5zZXRDbGFzc1ByZWZp eCgkY2xzX3BmeCk7CiAgICAkY2FsZW5kYXItPnNldEV2ZW50V3JhcHRhZygkZXZlbnR3cmFw dGFnKTsKICAgICRjYWxlbmRhci0+c2V0Q2VsbEZvcm0oJGNlbGxmb3JtKTsKICAgICRjYWxl bmRhci0+c2V0SGRyRm9ybSgkaGVhZGVyZm9ybSk7CiAgICAkY2FsZW5kYXItPnNldE1ZV3Jh cHRhZygkbXl3cmFwdGFnKTsKICAgICRjYWxlbmRhci0+c2V0U3VtbWFyeSgkc3VtbWFyeSk7 CiAgICAkY2FsZW5kYXItPnNldENhcHRpb24oJGNhcHRpb24pOwogICAgJGNhbGVuZGFyLT5z ZXRUYWJsZUlEKCRpZCk7CiAgICAkY2FsZW5kYXItPnNldFRhYmxlQ2xhc3MoJGNsYXNzKTsK ICAgICRjYWxlbmRhci0+c2V0Um93Q2xhc3MoJHJvd2NsYXNzKTsKICAgICRjYWxlbmRhci0+ c2V0Q2VsbENsYXNzKCRjZWxsY2xhc3MpOwogICAgJGNhbGVuZGFyLT5zZXRFbXB0eUNsYXNz KCRlbXB0eWNsYXNzKTsKICAgICRjYWxlbmRhci0+c2V0SVNPV2Vla0NsYXNzKCRpc293ZWVr Y2xhc3MpOwogICAgJGNhbGVuZGFyLT5zZXROYXZJbmZvKCRuYXZwY2xhc3MsJG5hdm5jbGFz cywkbmF2cGFyciwkbmF2bmFyciwkbmF2aWQpOwogICAgJGNhbGVuZGFyLT5zZXROYXZLZWVw KCRtYWludGFpbik7CiAgICAkY2FsZW5kYXItPnNldE1ZQ2xhc3MoJG15Y2xhc3MpOwogICAg JGNhbGVuZGFyLT5zZXROYW1lRm9ybWF0KCRkYXlmb3JtYXQsICJkIik7CiAgICAkY2FsZW5k YXItPnNldE5hbWVGb3JtYXQoJG1vbnRoZm9ybWF0LCAibSIpOwogICAgJGNhbGVuZGFyLT5z ZXRSZW1hcCgkZG1hcCk7CiAgICAkY2FsZW5kYXItPnNldFNob3dJU09XZWVrKCRpc293ZWVr cyk7CiAgICAkY2FsZW5kYXItPnNldEVZZWFyKCRlYXJsaWVzdCk7CiAgICAkY2FsZW5kYXIt PnNldExZZWFyKCRsYXRlc3QpOwogICAgJGNhbGVuZGFyLT5zZXRGaWx0ZXJPcHRzKCRmb3B0 cyk7CiAgICAkY2FsZW5kYXItPnNldERlbGltKCRldmVudF9kZWxpbSk7CiAgICAkY2FsZW5k YXItPnNldEhvbGlkYXlzKCRob2xpZGF5cyk7CiAgICAkY2FsZW5kYXItPnNldFNlbGVjdG9y cyhkb19saXN0KCRzZWxlY3QpLCAkc2VsZWN0YnRuKTsKCiAgICByZXR1cm4gJGNhbGVuZGFy LT5kaXNwbGF5KCRzdGF0aWMpOwp9CgpjbGFzcyBTTURfQ2FsZW5kYXIgZXh0ZW5kcyBTTURf UmF3X0NhbGVuZGFyCnsKICAgIC8vIE92ZXJyaWRlIENvbnN0cnVjdG9yCiAgICAvLyBQZXJt aXRzIG11bHRpcGxlIGV2ZW50cyB0byBzaG93IHBlciBkYXkKICAgIHZhciAkc2VjdGlvbiA9 ICcnOwogICAgdmFyICRjYXRlZ29yeSA9ICcnOwogICAgdmFyICRzaXplID0gJyc7CiAgICB2 YXIgJGRlYnVnID0gMDsKICAgIHZhciAkZXZlbnRzID0gYXJyYXkoKTsKCiAgICBwdWJsaWMg ZnVuY3Rpb24gU01EX0NhbGVuZGFyKCRzaXplLCAkeWVhciwgJG1vbnRoLCAkZXZlbnRzLCAk c2VjdGlvbiwgJGNhdGVnb3J5LCAkZGVidWcgPSAwKQogICAgewogICAgICAgICR0aGlzLT5k ZWJ1ZyA9ICRkZWJ1ZzsKICAgICAgICAkdGhpcy0+c2VjdGlvbiA9ICRzZWN0aW9uOwogICAg ICAgICR0aGlzLT5jYXRlZ29yeSA9ICRjYXRlZ29yeTsKICAgICAgICAkdGhpcy0+ZXZlbnRz ID0gJGV2ZW50czsKICAgICAgICAkdGhpcy0+c2l6ZSA9ICRzaXplOwogICAgICAgICR0aGlz LT5zbWRfUmF3X0NhbGVuZGFyKCR5ZWFyLCRtb250aCwkZGVidWcpOwogICAgfQoKICAgIC8v IE92ZXJyaWRlIGRzcERheUNlbGwgdG8gZGlzcGxheSBzdHVmZiByaWdodAogICAgZnVuY3Rp b24gZHNwRGF5Q2VsbCgkdGhlZGF5KQogICAgewogICAgICAgIGdsb2JhbCAkc21kX2NhbF9m bGFnLCAkc21kX2NhbGluZm8sICRzbWRfY2FsX3VjbHMsICRzbWRfZGF0ZSwgJHBlcm1saW5r X21vZGU7CgogICAgICAgICRzbWRfY2FsX2ZsYWcgPSBhcnJheSgpOwogICAgICAgICRzbWRf Y2FsX3VjbHMgPSBhcnJheSgpOwogICAgICAgICR0ZGNsYXNzID0gYXJyYXkoKTsKICAgICAg ICAkaGFzYXJ0aWNsZSA9IGlzc2V0KCR0aGlzLT5ldmVudHNbJHRoZWRheV0pOwogICAgICAg ICRub3cgPSB0aW1lKCkgKyB0el9vZmZzZXQoKTsKCiAgICAgICAgJHRoZWRhdGUgPSBta3Rp bWUoMCwgMCwgMCwgJHRoaXMtPm1vbnRoLCAkdGhlZGF5LCAkdGhpcy0+eWVhcik7CiAgICAg ICAgJGhvbF9oaXQgPSBpbl9hcnJheShkYXRlKCJkLU0tWSIsICR0aGVkYXRlKSwgJHRoaXMt PmhvbGlkYXlzKTsKICAgICAgICBpZiAoJGhhc2FydGljbGUpIHsKICAgICAgICAgICAgJHNt ZF9jYWxfZmxhZ1tdID0gJ2V2ZW50JzsKICAgICAgICB9CiAgICAgICAgaWYgKCRob2xfaGl0 KSB7CiAgICAgICAgICAgICRzbWRfY2FsX2ZsYWdbXSA9ICdob2xzJzsKICAgICAgICB9CiAg ICAgICAgJGNmbGFnID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoICgkc21kX2NhbF9mbGFn IGFzICRpdGVtKSB7CiAgICAgICAgICAgICRjZmxhZ1tdID0gJHRoaXMtPmNsc19wZnguJGl0 ZW07CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmNlbGxjbGFzcykgewogICAgICAg ICAgICAkdGRjbGFzc1tdID0gJHRoaXMtPmNlbGxjbGFzczsKICAgICAgICB9CiAgICAgICAg JHRkY2xhc3MgPSBhcnJheV9tZXJnZSgkdGRjbGFzcywgJGNmbGFnKTsKICAgICAgICAkcnVu bmluZ2NsYXNzID0gKGluX2FycmF5KCJjZWxsIiwgJHRoaXMtPmNsc19sZXYpIHx8IGluX2Fy cmF5KCJjZWxscGx1cyIsICR0aGlzLT5jbHNfbGV2KSkgPyAkdGRjbGFzcyA6IGFycmF5KCk7 CgogICAgICAgIGlmKCR0aGlzLT55ZWFyID09IGRhdGUoJ1knLCRub3cpIGFuZCAkdGhpcy0+ bW9udGggPT0gZGF0ZSgnbicsJG5vdykgYW5kICR0aGVkYXkgPT0gZGF0ZSgnaicsJG5vdykg KSB7CiAgICAgICAgICAgICRzbWRfY2FsX2ZsYWdbXSA9ICd0b2RheSc7CiAgICAgICAgICAg ICRydW5uaW5nY2xhc3NbXSA9ICR0aGlzLT5jbHNfcGZ4Lid0b2RheSc7CiAgICAgICAgfQoK ICAgICAgICAkb3V0ID0gYXJyYXkoKTsKICAgICAgICAkZmxhZ3MgPSBhcnJheSgpOwogICAg ICAgICRldmlkID0gYXJyYXkoKTsKICAgICAgICAkZm91dCA9IGFycmF5KCdzdGFuZGFyZCc9 PmFycmF5KCksJ3JlY3VyJz0+YXJyYXkoKSwncmVjdXJmaXJzdCc9PmFycmF5KCksJ211bHRp Zmlyc3QnPT5hcnJheSgpLCdtdWx0aSc9PmFycmF5KCksJ211bHRpcHJldic9PmFycmF5KCks J211bHRpbGFzdCc9PmFycmF5KCksJ2NhbmNlbCc9PmFycmF5KCksJ2V4dHJhJz0+YXJyYXko KSk7CiAgICAgICAgaWYgKGVtcHR5KCR0aGlzLT5jZWxsZm9ybSkgJiYgJHRoaXMtPnNpemUg PT0gJ2xhcmdlJykgewogICAgICAgICAgICAkb3V0W10gPSBoZWQoJHRoZWRheSw0KTsKICAg ICAgICB9CgogICAgICAgICRldmNudCA9IDA7CiAgICAgICAgaWYoIGlzc2V0KCR0aGlzLT5l dmVudHNbJHRoZWRheV0pICkgewogICAgICAgICAgICAkZGF5c19ldmVudHMgPSAkdGhpcy0+ ZXZlbnRzWyR0aGVkYXldOwogICAgICAgICAgICBmb3JlYWNoKCRkYXlzX2V2ZW50cyBhcyAk ZXYpIHsKICAgICAgICAgICAgICAgICRldmNsYXNzID0gJGV2WydjbGFzc2VzJ107CiAgICAg ICAgICAgICAgICAkZXZpZFtdID0gJGV2WydldmlkJ107CiAgICAgICAgICAgICAgICAkZmxh Z3MgPSBhcnJheV9tZXJnZSgkZmxhZ3MsICRldlsnZmxhZyddKTsKICAgICAgICAgICAgICAg IGlmIChpbl9hcnJheSgiY2VsbHBsdXMiLCAkdGhpcy0+Y2xzX2xldikpIHsKICAgICAgICAg ICAgICAgICAgICAkcnVubmluZ2NsYXNzID0gYXJyYXlfbWVyZ2UoJHJ1bm5pbmdjbGFzcywg JGV2Y2xhc3MpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGNscyA9ICgk ZXZjbGFzcyAmJiBpbl9hcnJheSgiZXZlbnQiLCAkdGhpcy0+Y2xzX2xldikpID8gJyBjbGFz cz0iJy5qb2luKCcgJywgJGV2Y2xhc3MpLiciJyA6ICcnOwogICAgICAgICAgICAgICAgJG9w ID0gKCR0aGlzLT5ldndyYXB0YWcpID8gdGFnKCRldlsnZXYnXSwgJHRoaXMtPmV2d3JhcHRh ZywgJGNscykgOiAkZXZbJ2V2J107CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkZXZbJ2Zs YWcnXSBhcyAkZmxldikgewogICAgICAgICAgICAgICAgICAgICRmb3V0WyRmbGV2XVtdID0g JG9wOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJG91dFtdID0gJG9wOwog ICAgICAgICAgICAgICAgJGV2Y250Kys7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnNp emUgPT0gJ3NtYWxsJyAmJiAkZXZjbnQgPT0gMSkgewogICAgICAgICAgICAgICAgICAgIGJy ZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYg KCR0aGlzLT5zaXplID09ICdzbWFsbCcpIHsKICAgICAgICAgICAgJG91dFtdID0gaGVkKCR0 aGVkYXksNCk7CiAgICAgICAgfQoKICAgICAgICAvLyBBbWFsZ2FtYXRlIHRoZSBldmVudC1s ZXZlbCBjbGFzc2VzIGFuZCBjZWxsLWxldmVsIGNsYXNzZXMgaWYgcmVxdWlyZWQKICAgICAg ICAkcnVubmluZ2NsYXNzID0gYXJyYXlfdW5pcXVlKCRydW5uaW5nY2xhc3MpOwogICAgICAg IGlmIChpbl9hcnJheSgiY2VsbHBsdXMiLCAkdGhpcy0+Y2xzX2xldikpIHsKICAgICAgICAg ICAgJHNtZF9jYWxfZmxhZyA9IGFycmF5X21lcmdlKCRzbWRfY2FsX2ZsYWcsICRmbGFncyk7 CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmNlbGxmb3JtKSB7CiAgICAgICAgICAg ICR0aGlzdGltZSA9IG1rdGltZSgwLCAwLCAwLCAkdGhpcy0+bW9udGgsICR0aGVkYXksICR0 aGlzLT55ZWFyKTsKICAgICAgICAgICAgJHNtZF9jYWxpbmZvWydpZCddID0gJHRoaXMtPnRh YmxlSUQ7CiAgICAgICAgICAgICRzbWRfZGF0ZVsneSddID0gJHRoaXMtPnllYXI7CiAgICAg ICAgICAgICRzbWRfZGF0ZVsnbSddID0gJHRoaXMtPm1vbnRoOwogICAgICAgICAgICAkc21k X2RhdGVbJ3cnXSA9IHN0cmZ0aW1lKHNtZF9jYWxfcmVmb3JtYXRfd2luKCclVicsICR0aGlz dGltZSksICR0aGlzdGltZSk7CiAgICAgICAgICAgICRzbWRfZGF0ZVsnaXknXSA9IHN0cmZ0 aW1lKHNtZF9jYWxfcmVmb3JtYXRfd2luKCclRycsICR0aGlzdGltZSksICR0aGlzdGltZSk7 CiAgICAgICAgICAgICRzbWRfZGF0ZVsnZCddID0gJHRoZWRheTsKICAgICAgICAgICAgJHJl cHMgPSBhcnJheSgKICAgICAgICAgICAgICAgICd7ZXZpZH0nID0+IGpvaW4oJHRoaXMtPmV2 ZW50X2RlbGltLCAkZXZpZCksCiAgICAgICAgICAgICAgICAne3N0YW5kYXJkfScgPT4gam9p bignJywkZm91dFsnc3RhbmRhcmQnXSksCiAgICAgICAgICAgICAgICAne3JlY3VyfScgPT4g am9pbignJywkZm91dFsncmVjdXInXSksCiAgICAgICAgICAgICAgICAne3JlY3VyZmlyc3R9 JyA9PiBqb2luKCcnLCRmb3V0WydyZWN1cmZpcnN0J10pLAogICAgICAgICAgICAgICAgJ3th bGxyZWN1cn0nID0+IGpvaW4oJycsYXJyYXlfbWVyZ2UoJGZvdXRbJ3JlY3VyJ10sICRmb3V0 WydyZWN1cmZpcnN0J10pKSwKICAgICAgICAgICAgICAgICd7bXVsdGlmaXJzdH0nID0+IGpv aW4oJycsJGZvdXRbJ211bHRpZmlyc3QnXSksCiAgICAgICAgICAgICAgICAne211bHRpcHJl dn0nID0+IGpvaW4oJycsJGZvdXRbJ211bHRpcHJldiddKSwKICAgICAgICAgICAgICAgICd7 bXVsdGl9JyA9PiBqb2luKCcnLCRmb3V0WydtdWx0aWxhc3QnXSksCiAgICAgICAgICAgICAg ICAne211bHRpbGFzdH0nID0+IGpvaW4oJycsJGZvdXRbJ211bHRpbGFzdCddKSwKICAgICAg ICAgICAgICAgICd7YWxsbXVsdGl9JyA9PiBqb2luKCcnLGFycmF5X21lcmdlKCRmb3V0Wydt dWx0aWZpcnN0J10sJGZvdXRbJ211bHRpJ10sJGZvdXRbJ211bHRpcHJldiddLCRmb3V0Wydt dWx0aWxhc3QnXSkpLAogICAgICAgICAgICAgICAgJ3tjYW5jZWx9JyA9PiBqb2luKCcnLCRm b3V0WydjYW5jZWwnXSksCiAgICAgICAgICAgICAgICAne2V4dHJhfScgPT4gam9pbignJywk Zm91dFsnZXh0cmEnXSksCiAgICAgICAgICAgICAgICAne2V2ZW50c30nID0+IGpvaW4oJycs JG91dCksCiAgICAgICAgICAgICAgICAne251bWV2ZW50c30nID0+ICRldmNudCwKICAgICAg ICAgICAgICAgICd7ZGF5fScgPT4gJHRoZWRheSwKICAgICAgICAgICAgICAgICd7ZGF5emVy b3N9JyA9PiBzdHJfcGFkKCR0aGVkYXksIDIsICcwJywgU1RSX1BBRF9MRUZUKSwKICAgICAg ICAgICAgICAgICd7d2Vla2RheX0nID0+ICgoaXNfYXJyYXkoJHRoaXMtPmRheU5hbWVGbXQp KSA/ICR0aGlzLT5kYXlOYW1lc1tkYXRlKCd3JywkdGhpc3RpbWUpXSA6IHN0cmZ0aW1lKCR0 aGlzLT5kYXlOYW1lRm10LCAkdGhpc3RpbWUpKSwKICAgICAgICAgICAgICAgICd7d2Vla2Rh eWFiYnJ9JyA9PiBzdHJmdGltZSgnJWEnLCAkdGhpc3RpbWUpLAogICAgICAgICAgICAgICAg J3t3ZWVrZGF5ZnVsbH0nID0+IHN0cmZ0aW1lKCclQScsICR0aGlzdGltZSksCiAgICAgICAg ICAgICAgICAne3dlZWt9JyA9PiAkc21kX2RhdGVbJ3cnXSwKICAgICAgICAgICAgICAgICd7 bW9udGh9JyA9PiAkdGhpcy0+bW9udGgsCiAgICAgICAgICAgICAgICAne21vbnRoemVyb3N9 JyA9PiBzdHJfcGFkKCR0aGlzLT5tb250aCwgMiwgJzAnLCBTVFJfUEFEX0xFRlQpLAogICAg ICAgICAgICAgICAgJ3ttb250aG5hbWV9JyA9PiAoKGlzX2FycmF5KCR0aGlzLT5tdGhOYW1l Rm10KSkgPyAkdGhpcy0+bXRoTmFtZXNbZGF0ZSgnbicsJHRoaXN0aW1lKV0gOiBzdHJmdGlt ZSgkdGhpcy0+bXRoTmFtZUZtdCwgJHRoaXN0aW1lKSksCiAgICAgICAgICAgICAgICAne21v bnRobmFtZWFiYnJ9JyA9PiBzdHJmdGltZSgnJWInLCAkdGhpc3RpbWUpLAogICAgICAgICAg ICAgICAgJ3ttb250aG5hbWVmdWxsfScgPT4gc3RyZnRpbWUoJyVCJywgJHRoaXN0aW1lKSwK ICAgICAgICAgICAgICAgICd7eWVhcn0nID0+ICR0aGlzLT55ZWFyLAogICAgICAgICAgICAg ICAgJ3tzaG9ydHllYXJ9JyA9PiBzdHJmdGltZSgnJXknLCAkdGhpc3RpbWUpLAogICAgICAg ICAgICAgICAgJ3tpc295ZWFyfScgPT4gJHNtZF9kYXRlWydpeSddLAogICAgICAgICAgICAg ICAgJ3tzaG9ydGlzb3llYXJ9JyA9PiBzdHJmdGltZShzbWRfY2FsX3JlZm9ybWF0X3dpbign JWcnLCAkdGhpc3RpbWUpLCAkdGhpc3RpbWUpLAogICAgICAgICAgICApOwogICAgICAgICAg ICAkY2VsbG91dCA9IHBhcnNlKHN0cnRyKCR0aGlzLT5jZWxsZm9ybSwgJHJlcHMpKTsKICAg ICAgICAgICAgJGNhcnJheSA9IGFycmF5X21lcmdlKCRydW5uaW5nY2xhc3MsICRzbWRfY2Fs X3VjbHMpOwogICAgICAgICAgICAkc21kX2NhbF91Y2xzID0gYXJyYXkoKTsKCiAgICAgICAg ICAgIHJldHVybiBkb1RhZygkY2VsbG91dCwndGQnLGpvaW4oJyAnLCRjYXJyYXkpKTsKICAg ICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gZG9UYWcoam9pbignJywkb3V0KSwn dGQnLGpvaW4oJyAnLCRydW5uaW5nY2xhc3MpKTsKICAgICAgICB9CiAgICB9CgogICAgZnVu Y3Rpb24gZGlzcGxheSgkc3RhdGljID0gZmFsc2UpCiAgICB7CiAgICAgICAgJHN1bSA9ICgk dGhpcy0+dGJsU3VtbWFyeSkgPyAnIHN1bW1hcnk9IicuJHRoaXMtPnRibFN1bW1hcnkuJyIn IDogJyc7CiAgICAgICAgJGlkID0gKCR0aGlzLT50YWJsZUlEKSA/ICcgaWQ9IicuJHRoaXMt PnRhYmxlSUQuJyInIDogJyc7CiAgICAgICAgJGNbXSA9ICgkdGhpcy0+dGJsQ2FwdGlvbikg PyAnPGNhcHRpb24+Jy4kdGhpcy0+dGJsQ2FwdGlvbi4nPC9jYXB0aW9uPicgOiAnJzsKICAg ICAgICAkY1tdID0gJzx0aGVhZD4nOwogICAgICAgICRjW10gPSAkdGhpcy0+ZHNwSGVhZGVy KCRzdGF0aWMpOwogICAgICAgICRjW10gPSAkdGhpcy0+ZHNwRGF5TmFtZXMoKTsKICAgICAg ICAkY1tdID0gJzwvdGhlYWQ+JzsKICAgICAgICAkY1tdID0gJHRoaXMtPmRzcERheUNlbGxz KCk7CgogICAgICAgIHJldHVybiBkb1RhZyhqb2luKCcnLCRjKSwndGFibGUnLCR0aGlzLT50 YWJsZWNsYXNzLCRzdW0uJGlkKTsKICAgIH0KCiAgICBmdW5jdGlvbiBkc3BIZWFkZXIoJHN0 YXRpYykKICAgIHsKICAgICAgICBnbG9iYWwgJHByZXRleHQsICRzbWRfY2FsaW5mbywgJHBl cm1saW5rX21vZGU7CgogICAgICAgICRjdXJybW8gPSAkdGhpcy0+bW9udGg7CiAgICAgICAg JGN1cnJ5ciA9ICR0aGlzLT55ZWFyOwogICAgICAgICRuYXZwY2xhc3MgPSAkdGhpcy0+Z2V0 TmF2SW5mbygicGMiKTsKICAgICAgICAkbmF2bmNsYXNzID0gJHRoaXMtPmdldE5hdkluZm8o Im5jIik7CiAgICAgICAgJG5hdnBhcnJvdyA9ICR0aGlzLT5nZXROYXZJbmZvKCJwYSIpOwog ICAgICAgICRuYXZuYXJyb3cgPSAkdGhpcy0+Z2V0TmF2SW5mbygibmEiKTsKICAgICAgICAk bmF2aWQgPSAkdGhpcy0+Z2V0TmF2SW5mbygiaWQiKTsKICAgICAgICAkbmF2cGNsYXNzID0g KCRuYXZwY2xhc3MpID8gJyBjbGFzcz0iJy4kbmF2cGNsYXNzLiciJyA6ICcnOwogICAgICAg ICRuYXZuY2xhc3MgPSAoJG5hdm5jbGFzcykgPyAnIGNsYXNzPSInLiRuYXZuY2xhc3MuJyIn IDogJyc7CiAgICAgICAgJGZvcHRzID0gJHRoaXMtPmZvcHRzOwoKICAgICAgICAkc2VjID0g KGlzc2V0KCRzbWRfY2FsaW5mb1sncyddKSAmJiAhZW1wdHkoJHNtZF9jYWxpbmZvWydzJ10p KSA/ICRzbWRfY2FsaW5mb1sncyddIDogJyc7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPm1h aW50YWluIGFzICRjb2wpIHsKICAgICAgICAgICAgc3dpdGNoICgkY29sKSB7CiAgICAgICAg ICAgICAgICBjYXNlICJzZWN0aW9uIjoKICAgICAgICAgICAgICAgICAgICBpZiAoJHByZXRl eHRbJ3MnXSAmJiAkcGVybWxpbmtfbW9kZSAhPSAneWVhcl9tb250aF9kYXlfdGl0bGUnKSB7 CiAgICAgICAgICAgICAgICAgICAgICAgICRmb3B0cyA9IGFycmF5KCdzJyA9PiAkcHJldGV4 dFsncyddKSArICRmb3B0czsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJhcnRpY2xlIjoKICAgICAgICAg ICAgICAgICAgICBpZiAoJHByZXRleHRbJ2lkJ10pIHsKICAgICAgICAgICAgICAgICAgICAg ICAgJGZvcHRzID0gYXJyYXkoJ2lkJyA9PiAkcHJldGV4dFsnaWQnXSkgKyAkZm9wdHM7CiAg ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg ICAgICAgICAgY2FzZSAiY2F0ZWdvcnkiOgogICAgICAgICAgICAgICAgICAgIGlmICgkcHJl dGV4dFsnYyddKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmb3B0cyA9IGFycmF5KCdj JyA9PiAkcHJldGV4dFsnYyddKSArICRmb3B0czsKICAgICAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJhdXRob3Ii OgogICAgICAgICAgICAgICAgICAgIGlmIChncHMoJ2F1dGhvcicpKSB7CiAgICAgICAgICAg ICAgICAgICAgICAgICRmb3B0cyA9IGFycmF5KCdhdXRob3InID0+IGdwcygnYXV0aG9yJykp ICsgJGZvcHRzOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgICAgICAgIGNhc2UgImRhdGUiOgogICAgICAgICAgICAgICAgICAg IGlmIChncHMoJ2RhdGUnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkZm9wdHMgPSBh cnJheSgnZGF0ZScgPT4gZ3BzKCdkYXRlJykpICsgJGZvcHRzOwogICAgICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2Ug InBnIjoKICAgICAgICAgICAgICAgICAgICBpZiAoJHByZXRleHRbJ3BnJ10pIHsKICAgICAg ICAgICAgICAgICAgICAgICAgJGZvcHRzID0gYXJyYXkoJ3BnJyA9PiAkcHJldGV4dFsncGcn XSkgKyAkZm9wdHM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAiY2FsaWQiOgogICAgICAgICAgICAgICAg ICAgIGlmICgkdGhpcy0+dGFibGVJRCkgewogICAgICAgICAgICAgICAgICAgICAgICAkZm9w dHMgPSBhcnJheSgnY2FsaWQnID0+ICR0aGlzLT50YWJsZUlEKSArICRmb3B0czsKICAgICAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIGlmIChncHMoJGNvbCkpIHsKICAg ICAgICAgICAgICAgICAgICAgICAgJGZvcHRzID0gYXJyYXkoJGNvbCA9PiBncHMoJGNvbCkp ICsgJGZvcHRzOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJGZvcHRzID0gYXJyYXlf dW5pcXVlKCRmb3B0cyk7CiAgICAgICAgJGZpbHRlcnMgPSBhcnJheSgpOwogICAgICAgICRm aWx0ZXJIaWQgPSBhcnJheSgpOwogICAgICAgIGlmICghJHN0YXRpYykgewogICAgICAgICAg ICBmb3JlYWNoKCRmb3B0cyBhcyAka2V5ID0+ICR2YWwpIHsKICAgICAgICAgICAgICAgICRm aWx0ZXJzW10gPSAka2V5Lic9Jy4kdmFsOwogICAgICAgICAgICAgICAgJGZpbHRlckhpZFtd ID0gaElucHV0KCRrZXksICR2YWwpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAg ICAvLyBXZWVrIHNlbGVjdCBsaXN0CiAgICAgICAgaWYgKCR0aGlzLT51c2VTZWxlY3Rvcign d2VlaycpICYmICEkc3RhdGljKSB7CiAgICAgICAgICAgICRjdXJyd2sgPSAoJHRoaXMtPndl ZWspID8gJHRoaXMtPndlZWsgOiBkYXRlKCdXJywgc2FmZV9zdHJ0b3RpbWUoJGN1cnJ5ci4i LSIuJGN1cnJtby4iLTEgMTI6MDAiKSk7CiAgICAgICAgICAgIGZvciAoICRpZHggPSAxOyAk aWR4IDw9IDUzOyAkaWR4KysgKSB7CiAgICAgICAgICAgICAgICAkdGFnYXR0cyA9ICcgdmFs dWU9IicuJGlkeC4nIic7CiAgICAgICAgICAgICAgICBpZiAoICRpZHggPT0gJGN1cnJ3ayAp ICR0YWdhdHRzIC49ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7CiAgICAgICAgICAgICAgICAk b3B0aW9udGFnc1tdID0gZG9UYWcoJHRoaXMtPnNlbHBmeFsnd2VlayddLnN0cl9wYWQoJGlk eCwgMiwgJzAnLCBTVFJfUEFEX0xFRlQpLiR0aGlzLT5zZWxzZnhbJ3dlZWsnXSwgJ29wdGlv bicsICcnLCAkdGFnYXR0cyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHNlbGVjdG9y W10gPSBkb1RhZyhqb2luKG4sICRvcHRpb250YWdzKSwgJ3NlbGVjdCcsICgoJHRoaXMtPm15 d3JhcHRhZykgPyAnJyA6ICR0aGlzLT5teWNsYXNzKSwgJyBuYW1lPSInLiR0aGlzLT5yZW1h cFsndyddLiciJy4oKCR0aGlzLT5zZWxidG4pID8gJycgOiAnIG9uY2hhbmdlPSJ0aGlzLmZv cm0uc3VibWl0KCkiJyksICcnKQogICAgICAgICAgICAgICAgLiAoKCR0aGlzLT51c2VTZWxl Y3RvcigneWVhcicpKSA/ICcnIDogaElucHV0KCR0aGlzLT5yZW1hcFsneSddLCAkY3Vycnly KSk7CiAgICAgICAgICAgICRvcHRpb250YWdzID0gYXJyYXkoKTsgLy8gQmxhbmsgb3V0CiAg ICAgICAgfQoKICAgICAgICAvLyBNb250aCBzZWxlY3QgbGlzdCAtIG5vdGUgbWt0aW1lIGhh cyB0aGUgZGF5IGZvcmNlZCB0byAxLiBJZiBub3QgeW91IGdldAogICAgICAgIC8vIGJpemFy cmUgcmVwZWF0ZWQgbW9udGggbmFtZXMgb24gdGhlIDMxc3Qgb2Ygc29tZSBtb250aHMgOi1c CiAgICAgICAgaWYgKCEkdGhpcy0+dXNlU2VsZWN0b3IoJ3dlZWsnKSkgewogICAgICAgICAg ICBpZiAoJHRoaXMtPnVzZVNlbGVjdG9yKCdtb250aCcpICYmICEkc3RhdGljKSB7CiAgICAg ICAgICAgICAgICBmb3IgKCAkaWR4ID0gMTsgJGlkeCA8PSAxMjsgJGlkeCsrICkgewogICAg ICAgICAgICAgICAgICAgICR0YWdhdHRzID0gJyB2YWx1ZT0iJy4kaWR4LiciJzsKICAgICAg ICAgICAgICAgICAgICBpZiAoICRpZHggPT0gJGN1cnJtbyApICR0YWdhdHRzIC49ICcgc2Vs ZWN0ZWQ9InNlbGVjdGVkIic7CiAgICAgICAgICAgICAgICAgICAgJG9wdGlvbnRhZ3NbXSA9 IGRvVGFnKCR0aGlzLT5zZWxwZnhbJ21vbnRoJ10uKChpc19hcnJheSgkdGhpcy0+bXRoTmFt ZUZtdCkpID8gJHRoaXMtPm10aE5hbWVzW2RhdGUoJ24nLG1rdGltZSgxMiwwLDAsJGlkeCwx KSldIDogc2FmZV9zdHJmdGltZSgkdGhpcy0+bXRoTmFtZUZtdCwgbWt0aW1lKDEyLDAsMCwk aWR4LDEpICkpLiR0aGlzLT5zZWxzZnhbJ21vbnRoJ10sICdvcHRpb24nLCAnJywgJHRhZ2F0 dHMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHNlbGVjdG9yW10gPSBk b1RhZyhqb2luKG4sICRvcHRpb250YWdzKSwgJ3NlbGVjdCcsICgoJHRoaXMtPm15d3JhcHRh ZykgPyAnJyA6ICR0aGlzLT5teWNsYXNzKSwgJyBuYW1lPSInLiR0aGlzLT5yZW1hcFsnbSdd LiciJy4oKCR0aGlzLT5zZWxidG4pID8gJycgOiAnIG9uY2hhbmdlPSJ0aGlzLmZvcm0uc3Vi bWl0KCkiJyksICcnKQogICAgICAgICAgICAgICAgICAgIC4gKCgkdGhpcy0+dXNlU2VsZWN0 b3IoJ3llYXInKSkgPyAnJyA6IGhJbnB1dCgkdGhpcy0+cmVtYXBbJ3knXSwgJGN1cnJ5cikp OwogICAgICAgICAgICAgICAgJG9wdGlvbnRhZ3MgPSBhcnJheSgpOyAvLyBCbGFuayBvdXQK ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRzZWxlY3RvcltdID0gZG9U YWcoJHRoaXMtPmdldE1vbnRoTmFtZSgpLCAnc3BhbicsICgoJHRoaXMtPm15d3JhcHRhZykg PyAnJyA6ICR0aGlzLT5teWNsYXNzKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAg ICAgIC8vIFllYXIgc2VsZWN0IGxpc3QKICAgICAgICAkeTAgPSAkdGhpcy0+ZXlyOwogICAg ICAgICR5MSA9ICR0aGlzLT5seXI7CiAgICAgICAgaWYgKCR0aGlzLT51c2VTZWxlY3Rvcign eWVhcicpICYmICgkeTAgIT0gJHkxKSAmJiAhJHN0YXRpYykgewogICAgICAgICAgICBmb3Ig KCAkaWR4ID0gJHkwOyAkaWR4IDw9ICR5MTsgJGlkeCsrICkgewogICAgICAgICAgICAgICAg JHRhZ2F0dHMgPSAnIHZhbHVlPSInLiRpZHguJyInOwogICAgICAgICAgICAgICAgaWYgKCAk aWR4ID09ICRjdXJyeXIgKSAkdGFnYXR0cyAuPSAnIHNlbGVjdGVkPSJzZWxlY3RlZCInOwog ICAgICAgICAgICAgICAgJG9wdGlvbnRhZ3NbXSA9IGRvVGFnKCR0aGlzLT5zZWxwZnhbJ3ll YXInXS4kaWR4LiR0aGlzLT5zZWxzZnhbJ3llYXInXSwgJ29wdGlvbicsICcnLCAkdGFnYXR0 cyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHNlbGVjdG9yW10gPSBkb1RhZyhqb2lu KG4sICRvcHRpb250YWdzKSwgJ3NlbGVjdCcsICgoJHRoaXMtPm15d3JhcHRhZykgPyAnJyA6 ICR0aGlzLT5teWNsYXNzKSwgJyBuYW1lPSInLiR0aGlzLT5yZW1hcFsneSddLiciJy4oKCR0 aGlzLT5zZWxidG4pID8gJycgOiAnIG9uY2hhbmdlPSJ0aGlzLmZvcm0uc3VibWl0KCkiJyks ICcnKQogICAgICAgICAgICAgICAgICAgIC4gKCgkdGhpcy0+dXNlU2VsZWN0b3IoJ21vbnRo JykgfHwgJHRoaXMtPnVzZVNlbGVjdG9yKCd3ZWVrJykpID8gJycgOiBoSW5wdXQoJHRoaXMt PnJlbWFwWydtJ10sICRjdXJybW8pKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAk c2VsZWN0b3JbXSA9IGRvVGFnKCRjdXJyeXIsICdzcGFuJywgKCgkdGhpcy0+bXl3cmFwdGFn KSA/ICcnIDogJHRoaXMtPm15Y2xhc3MpKTsKICAgICAgICB9CgogICAgICAgICRyZXF1ZXN0 ID0gc2VydmVyU2V0KCdSRVFVRVNUX1VSSScpOwogICAgICAgICRyZWRpcmVjdCA9IHNlcnZl clNldCgnUkVESVJFQ1RfVVJMJyk7CiAgICAgICAgaWYgKCFlbXB0eSgkcmVkaXJlY3QpICYm ICgkcmVxdWVzdCAhPSAkcmVkaXJlY3QpICYmIGlzX2NhbGxhYmxlKCdfbDEwbl9zZXRfYnJv d3NlX2xhbmd1YWdlJykpIHsKICAgICAgICAgICAgLy8gTUxQIGluIGRhIGhvdXNlOiB1c2Ug dGhlIHJlZGlyZWN0IFVSTCBpbnN0ZWFkCiAgICAgICAgICAgICRyZXF1ZXN0ID0gJHJlZGly ZWN0OwogICAgICAgIH0KICAgICAgICAkdXJscCA9IHBhcnNlX3VybCgkcmVxdWVzdCk7CiAg ICAgICAgJGFjdGlvbiA9ICR1cmxwWydwYXRoJ107CgogICAgICAgIGlmICgkcGVybWxpbmtf bW9kZSA9PSAnbWVzc3knKSB7CiAgICAgICAgICAgICRvdXQgPSBtYWtlT3V0KCdpZCcsJ3Mn LCdjJywncScsJ3BnJywncCcsJ21vbnRoJyk7CiAgICAgICAgICAgIGZvcmVhY2goJG91dCBh cyAka2V5ID0+ICR2YWwpIHsKICAgICAgICAgICAgICAgIGlmICgkdmFsKSB7CiAgICAgICAg ICAgICAgICAgICAgJGZpbHRlcnNbXSA9ICRrZXkuJz0nLiR2YWw7CiAgICAgICAgICAgICAg ICAgICAgJGZpbHRlckhpZFtdID0gaElucHV0KCRrZXksICR2YWwpOwogICAgICAgICAgICAg ICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRmaWx0ZXJIaWQgPSBhcnJh eV91bmlxdWUoJGZpbHRlckhpZCk7CiAgICAgICAgJGZpbHRlcnMgPSBhcnJheV91bmlxdWUo JGZpbHRlcnMpOwoKICAgICAgICAkZXh0cmFzID0gJyc7CiAgICAgICAgaWYgKCEkc3RhdGlj ICYmICggJHRoaXMtPnVzZVNlbGVjdG9yKCdtb250aCcpIHx8ICR0aGlzLT51c2VTZWxlY3Rv cigneWVhcicpICkpIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5zZWxidG4pIHsKICAgICAg ICAgICAgICAgICRleHRyYXMgLj0gZG9UYWcoJycsICdpbnB1dCcsICdzbWRfY2FsX2lucHV0 JywgJyB0eXBlPSJzdWJtaXQiIHZhbHVlPSInLiR0aGlzLT5zZWxidG4uJyInKTsKICAgICAg ICAgICAgfQogICAgICAgICAgICAkZXh0cmFzIC49IGpvaW4obiwgJGZpbHRlckhpZCk7CiAg ICAgICAgfQoKICAgICAgICAkc2VsZWN0b3IgPSAnPGZvcm0gYWN0aW9uPSInLiRhY3Rpb24u JyIgbWV0aG9kPSJnZXQiJy4oKCRuYXZpZCkgPyAnIGlkPSInLiRuYXZpZC4nIicgOiAnJyku Jz4nLmRvVGFnKGpvaW4oc3AsICRzZWxlY3RvcikuJGV4dHJhcywgJHRoaXMtPm15d3JhcHRh ZywgJHRoaXMtPm15Y2xhc3MpLic8L2Zvcm0+JzsKCiAgICAgICAgJG5hdl9iYWNrX2xpbmsg PSAkdGhpcy0+bmF2aWdhdGlvbigkY3VycnlyLCAkY3Vycm1vLCAnLScsICRmaWx0ZXJzLCAk dXJscFsncGF0aCddKTsKICAgICAgICAkbmF2X2Z3ZF9saW5rICA9ICR0aGlzLT5uYXZpZ2F0 aW9uKCRjdXJyeXIsICRjdXJybW8sICcrJywgJGZpbHRlcnMsICR1cmxwWydwYXRoJ10pOwoK ICAgICAgICAkbmF2X2JhY2sgPSAoISRzdGF0aWMgJiYgJG5hdl9iYWNrX2xpbmspID8gJzxh IGhyZWY9IicuJG5hdl9iYWNrX2xpbmsuJyInLiRuYXZwY2xhc3MuJz4nLiRuYXZwYXJyb3cu JzwvYT4nIDogJyZuYnNwOyc7CiAgICAgICAgJG5hdl9md2QgID0gKCEkc3RhdGljICYmICRu YXZfZndkX2xpbmspID8gJzxhIGhyZWY9IicuJG5hdl9md2RfbGluay4nIicuJG5hdm5jbGFz cy4nPicuJG5hdm5hcnJvdy4nPC9hPicgOiAnJm5ic3A7JzsKCiAgICAgICAgJGNbXSA9IGRv VGFnKCRuYXZfYmFjaywndGgnKTsKICAgICAgICAkY1tdID0gJzx0aCBjb2xzcGFuPSInLigo JHRoaXMtPnNob3dJU09XZWVrKSA/IDYgOiA1KS4nIj4nLiRzZWxlY3Rvci4nPC90aD4nOwog ICAgICAgICRjW10gPSBkb1RhZygkbmF2X2Z3ZCwndGgnKTsKCiAgICAgICAgcmV0dXJuIGRv VGFnKGpvaW4oJycsJGMpLCd0cicsICdzbWRfY2FsX25hdnJvdycpOwogICAgfQoKICAgIGZ1 bmN0aW9uIG5hdmlnYXRpb24oJHllYXIsICRtb250aCwgJGRpcmVjdGlvbiwgJGZsdCwgJHVy bCA9ICcnKQogICAgewogICAgICAgIGdsb2JhbCAkcGVybWxpbmtfbW9kZTsKCiAgICAgICAg aWYoJGRpcmVjdGlvbiA9PSAnLScpIHsKICAgICAgICAgICAgaWYoJG1vbnRoIC0gMSA8IDEp IHsKICAgICAgICAgICAgICAgICRtb250aCA9IDEyOwogICAgICAgICAgICAgICAgJHllYXIg LT0gMTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRtb250aCAtPSAx OwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYoJG1vbnRo ICsgMSA+IDEyKSB7CiAgICAgICAgICAgICAgICAkbW9udGggPSAxOwogICAgICAgICAgICAg ICAgJHllYXIgKz0gMTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRt b250aCArPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBBYm9ydCBp ZiB3ZSdyZSBhYm91dCB0byBnbyBvdXQgb2YgcmFuZ2UKICAgICAgICBpZiAoJHllYXIgPCAk dGhpcy0+ZXlyIHx8ICR5ZWFyID4gJHRoaXMtPmx5cikgewogICAgICAgICAgICByZXR1cm4g Jyc7CiAgICAgICAgfQoKICAgICAgICAkZmx0W10gPSAkdGhpcy0+cmVtYXBbJ20nXS4iPSRt b250aCI7CiAgICAgICAgJGZsdFtdID0gJHRoaXMtPnJlbWFwWyd5J10uIj0keWVhciI7Cgog ICAgICAgIHJldHVybiAkdXJsIC4gIj8iIC4gam9pbihhLCAkZmx0KTsKICAgIH0KfQoKLyoq CiAqIEJhc2ljIENhbGVuZGFyIGRhdGEgYW5kIGRpc3BsYXkKICogaHR0cDovL3d3dy5vc2Nh cm0ub3JnL3N0YXRpYy9wZy9jYWxlbmRhckNsYXNzLwogKiBAYXV0aG9yIE9zY2FyIE1lcmlk YQogKiBAY3JlYXRlZCBKYW4gMTggMjAwNAogKi8KY2xhc3MgU01EX1Jhd19DYWxlbmRhcgp7 CiAgICB2YXIgJGdtdCA9IDEsICRsYW5nLCAkZGVidWcgPSAwOwogICAgdmFyICR5ZWFyLCAk ZXlyLCAkbHlyLCAkbW9udGgsICR3ZWVrOwogICAgdmFyICRkYXlOYW1lRm10LCAkbXRoTmFt ZUZtdCwgJGRheU5hbWVzLCAkbXRoTmFtZXMsICRzdGFydERheSwgJGVuZERheSwgJGZpcnN0 RGF5T2ZXZWVrID0gMCwgJHN0YXJ0T2Zmc2V0ID0gMDsKICAgIHZhciAkc2VsZWN0b3JzLCAk c2VsYnRuLCAkc2VscGZ4LCAkc2Vsc2Z4OwogICAgdmFyICRzaG93SVNPV2VlaywgJElTT1dl ZWtIZWFkLCAkSVNPV2Vla0NlbGw7CiAgICB2YXIgJGNsc19sZXYsICRjbHNfcGZ4LCAkZm9w dHM7CiAgICB2YXIgJGV2d3JhcHRhZywgJG15d3JhcHRhZzsKICAgIHZhciAkcm93Y2xhc3Ms ICRjZWxsY2xhc3MsICRlbXB0eWNsYXNzLCAkaXNvY2xhc3MsICRteWNsYXNzLCAkdGFibGVJ RCwgJHRibFN1bW1hcnksICR0YmxDYXB0aW9uOwogICAgdmFyICRuYXZwY2xhc3MsICRuYXZu Y2xhc3MsICRuYXZwYXJyb3csICRuYXZuYXJyb3csICRuYXZpZDsKICAgIHZhciAkaG9saWRh eXMsICRjZWxsZm9ybSwgJGhkcmZvcm0sICRtYWludGFpbiwgJHJlbWFwOwogICAgdmFyICRl dmVudF9kZWxpbTsKCiAgICAvKioKICAgICAqIENvbnN0cnVjdG9yCiAgICAgKgogICAgICog QHBhcmFtIGludGVnZXIsIHllYXIKICAgICAqIEBwYXJhbSBpbnRlZ2VyLCBtb250aAogICAg ICogQHJldHVybiBvYmplY3QKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIFNNRF9SYXdf Q2FsZW5kYXIoJHlyLCAkbW8sICRkZWJ1ZyA9IDApCiAgICB7CiAgICAgICAgJHRoaXMtPnNl dERlYnVnKCRkZWJ1Zyk7CiAgICAgICAgJHRoaXMtPnNldFllYXIoJHlyKTsKICAgICAgICAk dGhpcy0+c2V0TW9udGgoJG1vKTsKICAgICAgICAkdGhpcy0+c2V0Q2xhc3NQcmVmaXgoJ3Nt ZF9jYWxfJyk7CgogICAgICAgICR0aGlzLT5zdGFydFRpbWUgPSBzdHJ0b3RpbWUoICIkeXIt JG1vLTAxIDAwOjAwIiApOwogICAgICAgICR0aGlzLT5zdGFydERheSA9IGRhdGUoICdEJywg JHRoaXMtPnN0YXJ0VGltZSApOwogICAgICAgICR0aGlzLT5lbmREYXkgPSBkYXRlKCAndCcs ICR0aGlzLT5zdGFydFRpbWUgKTsKICAgICAgICAkdGhpcy0+ZW5kVGltZSA9IHN0cnRvdGlt ZSggIiR5ci0kbW8tIi4kdGhpcy0+ZW5kRGF5LiIgMjM6NTk6NTkiICk7CiAgICAgICAgaWYg KCR0aGlzLT5kZWJ1ZykgewogICAgICAgICAgICBlY2hvICIrKyBUSElTIE1PTlRIJ1MgUkVO REVSRUQgQ0FMRU5EQVIgWyBzdGFydCBzdGFtcCAvLyBlbmQgZGF0ZSAvLyBzdGFydCBkYXkg Ly8gZW5kIHN0YW1wIC8vIGVuZCBkYXRlIC8vIGVuZCBkYXkgbnVtYmVyIF0gKysiOwogICAg ICAgICAgICBkbXAoJHRoaXMtPnN0YXJ0VGltZSwgZGF0ZSgnWS1tLWQgSDppOnMnLCAkdGhp cy0+c3RhcnRUaW1lKSwgJHRoaXMtPnN0YXJ0RGF5LCAkdGhpcy0+ZW5kVGltZSwgZGF0ZSgn WS1tLWQgSDppOnMnLCAkdGhpcy0+ZW5kVGltZSksICR0aGlzLT5lbmREYXkpOwogICAgICAg IH0KICAgICAgICAkdGhpcy0+c2V0TmFtZUZvcm1hdCgnJWEnLCAnZCcpOwogICAgICAgICR0 aGlzLT5zZXROYW1lRm9ybWF0KCclQicsICdtJyk7CiAgICAgICAgJHRoaXMtPnNldEZpcnN0 RGF5T2ZXZWVrKDApOwogICAgICAgICR0aGlzLT5zZXRTaG93SVNPV2VlaygnJyk7CiAgICAg ICAgJHRoaXMtPnNldFRhYmxlSUQoJycpOwogICAgICAgICR0aGlzLT5zZXRUYWJsZUNsYXNz KCcnKTsKICAgIH0KCiAgICBmdW5jdGlvbiB1c2VTZWxlY3RvcigkdmFsKQogICAgewogICAg ICAgIHJldHVybiBpbl9hcnJheSgkdmFsLCAkdGhpcy0+c2VsZWN0b3JzKTsKICAgIH0KCiAg ICBmdW5jdGlvbiBnZXREYXlOYW1lKCRkYXkpCiAgICB7CiAgICAgICAgcmV0dXJuICgkdGhp cy0+ZGF5TmFtZXNbJGRheSU3XSk7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0TW9udGhOYW1l KCkKICAgIHsKICAgICAgICBpZiAoaXNfYXJyYXkoJHRoaXMtPm10aE5hbWVGbXQpKSB7CiAg ICAgICAgICAgIHJldHVybiAkdGhpcy0+bXRoTmFtZXNbZGF0ZSgnbicsJHRoaXMtPnN0YXJ0 VGltZSldOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBzdHJmdGltZSgk dGhpcy0+bXRoTmFtZUZtdCwgJHRoaXMtPnN0YXJ0VGltZSk7CiAgICAgICAgfQogICAgfQoK ICAgIGZ1bmN0aW9uIGdldE5hdkluZm8oJHR5cGUpCiAgICB7CiAgICAgICAgJHIgPSAnJzsK ICAgICAgICBzd2l0Y2ggKCR0eXBlKSB7CiAgICAgICAgICAgIGNhc2UgImlkIjogJHIgPSAk dGhpcy0+bmF2aWQ7IGJyZWFrOwogICAgICAgICAgICBjYXNlICJwYyI6ICRyID0gJHRoaXMt Pm5hdnBjbGFzczsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgIm5jIjogJHIgPSAkdGhpcy0+ bmF2bmNsYXNzOyBicmVhazsKICAgICAgICAgICAgY2FzZSAicGEiOiAkciA9ICR0aGlzLT5u YXZwYXJyb3c7IGJyZWFrOwogICAgICAgICAgICBjYXNlICJuYSI6ICRyID0gJHRoaXMtPm5h dm5hcnJvdzsgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkcjsKICAgIH0KCiAg ICBmdW5jdGlvbiBzZXREZWJ1ZygkZCkKICAgIHsKICAgICAgICAkdGhpcy0+ZGVidWcgPSAk ZDsKICAgIH0KCiAgICBmdW5jdGlvbiBzZXRHTVQoJGIpCiAgICB7CiAgICAgICAgJHRoaXMt PmdtdCA9ICRiOwogICAgfQoKICAgIGZ1bmN0aW9uIHNldExhbmcoJGNvZGUpCiAgICB7CiAg ICAgICAgJHRoaXMtPmxhbmcgPSAkY29kZTsKICAgIH0KCiAgICBmdW5jdGlvbiBzZXRTdW1t YXJ5KCR0eHQpCiAgICB7CiAgICAgICAgJHRoaXMtPnRibFN1bW1hcnkgPSAkdHh0OwogICAg fQoKICAgIGZ1bmN0aW9uIHNldENhcHRpb24oJHR4dCkKICAgIHsKICAgICAgICAkdGhpcy0+ dGJsQ2FwdGlvbiA9ICR0eHQ7CiAgICB9CgogICAgZnVuY3Rpb24gc2V0Q2VsbEZvcm0oJGZy bSkKICAgIHsKICAgICAgICAkdGhpcy0+Y2VsbGZvcm0gPSAkZnJtOwogICAgfQoKICAgIGZ1 bmN0aW9uIHNldEhkckZvcm0oJGZybSkKICAgIHsKICAgICAgICAkdGhpcy0+aGRyZm9ybSA9 ICRmcm07CiAgICB9CgogICAgZnVuY3Rpb24gc2V0VGFibGVJRCgkaWQpCiAgICB7CiAgICAg ICAgJHRoaXMtPnRhYmxlSUQgPSAkaWQ7CiAgICB9CgogICAgZnVuY3Rpb24gc2V0WWVhcigk eXIpCiAgICB7CiAgICAgICAgJHRoaXMtPnllYXIgPSAkeXI7CiAgICB9CgogICAgZnVuY3Rp b24gc2V0RVllYXIoJHlyKQogICAgewogICAgICAgICR0aGlzLT5leXIgPSAkeXI7CiAgICB9 CgogICAgZnVuY3Rpb24gc2V0TFllYXIoJHlyKQogICAgewogICAgICAgICR0aGlzLT5seXIg PSAkeXI7CiAgICB9CgogICAgZnVuY3Rpb24gc2V0TW9udGgoJG10aCkKICAgIHsKICAgICAg ICAkdGhpcy0+bW9udGggPSAoaW50KSRtdGg7CiAgICB9CgogICAgZnVuY3Rpb24gc2V0V2Vl aygkd2spCiAgICB7CiAgICAgICAgaWYgKCR3aykgewogICAgICAgICAgICAkd2sgPSBzdHJf cGFkKCR3aywgMiwgJzAnLCBTVFJfUEFEX0xFRlQpOwogICAgICAgICAgICAkdGhpcy0+d2Vl ayA9ICR3azsKICAgICAgICAgICAgJHRoaXMtPm1vbnRoID0gc2FmZV9zdHJmdGltZSgiJW0i LCBzdHJ0b3RpbWUoJHRoaXMtPnllYXIuIlciLiR3aykpOwogICAgICAgIH0KICAgIH0KCiAg ICBmdW5jdGlvbiBzZXROYXZLZWVwKCRhcikKICAgIHsKICAgICAgICAkdGhpcy0+bWFpbnRh aW4gPSAkYXI7CiAgICB9CgogICAgZnVuY3Rpb24gc2V0U2hvd0lTT1dlZWsoJHZhbCkKICAg IHsKICAgICAgICAkdGhpcy0+c2hvd0lTT1dlZWsgPSAoJHZhbCkgPyB0cnVlIDogZmFsc2U7 CiAgICAgICAgaWYgKCR2YWwpIHsKICAgICAgICAgICAgJHZhbCA9IGRvX2xpc3QoJHZhbCk7 CiAgICAgICAgICAgICR0aGlzLT5JU09XZWVrSGVhZCA9ICR2YWxbMF07CiAgICAgICAgICAg ICR0aGlzLT5JU09XZWVrQ2VsbCA9IChpc3NldCgkdmFsWzFdKSkgPyAkdmFsWzFdIDogJ3t3 ZWVrfSc7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIHNldFJlbWFwKCRtYXApCiAg ICB7CiAgICAgICAgJHRoaXMtPnJlbWFwID0gJG1hcDsKICAgIH0KCiAgICBmdW5jdGlvbiBz ZXRDbGFzc0xldmVscygkY2xzKQogICAgewogICAgICAgICR0aGlzLT5jbHNfbGV2ID0gJGNs czsKICAgIH0KCiAgICBmdW5jdGlvbiBzZXRDbGFzc1ByZWZpeCgkY2xzKQogICAgewogICAg ICAgICR0aGlzLT5jbHNfcGZ4ID0gJGNsczsKICAgIH0KCiAgICBmdW5jdGlvbiBzZXRFdmVu dFdyYXB0YWcoJHdyYXApCiAgICB7CiAgICAgICAgJHRoaXMtPmV2d3JhcHRhZyA9ICR3cmFw OwogICAgfQoKICAgIGZ1bmN0aW9uIHNldE1ZV3JhcHRhZygkd3JhcCkKICAgIHsKICAgICAg ICAkdGhpcy0+bXl3cmFwdGFnID0gJHdyYXA7CiAgICB9CgogICAgZnVuY3Rpb24gc2V0VGFi bGVDbGFzcygkY2xzKQogICAgewogICAgICAgICR0aGlzLT50YWJsZWNsYXNzID0gKCRjbHMp ID8gJHRoaXMtPmNsc19wZnguJGNscyA6ICcnOwogICAgfQoKICAgIGZ1bmN0aW9uIHNldFJv d0NsYXNzKCRjbHMpCiAgICB7CiAgICAgICAgJHRoaXMtPnJvd2NsYXNzID0gKCRjbHMpID8g JHRoaXMtPmNsc19wZnguJGNscyA6ICcnOwogICAgfQoKICAgIGZ1bmN0aW9uIHNldENlbGxD bGFzcygkY2xzKQogICAgewogICAgICAgICR0aGlzLT5jZWxsY2xhc3MgPSAoJGNscykgPyAk dGhpcy0+Y2xzX3BmeC4kY2xzIDogJyc7CiAgICB9CgogICAgZnVuY3Rpb24gc2V0RW1wdHlD bGFzcygkY2xzKQogICAgewogICAgICAgICR0aGlzLT5lbXB0eWNsYXNzID0gKCRjbHMpID8g JHRoaXMtPmNsc19wZnguJGNscyA6ICcnOwogICAgfQoKICAgIGZ1bmN0aW9uIHNldElTT1dl ZWtDbGFzcygkY2xzKQogICAgewogICAgICAgICR0aGlzLT5pc29jbGFzcyA9ICgkY2xzKSA/ ICR0aGlzLT5jbHNfcGZ4LiRjbHMgOiAnJzsKICAgIH0KCiAgICBmdW5jdGlvbiBzZXREZWxp bSgkZGxtKQogICAgewogICAgICAgICR0aGlzLT5ldmVudF9kZWxpbSA9ICRkbG07CiAgICB9 CgogICAgZnVuY3Rpb24gc2V0TmF2SW5mbygkY2xzcCwgJGNsc24sICRhcnJwLCAkYXJybiwg JG5pZCkKICAgIHsKICAgICAgICAkdGhpcy0+bmF2cGNsYXNzID0gKCRjbHNwKSA/ICR0aGlz LT5jbHNfcGZ4LiRjbHNwIDogJyc7CiAgICAgICAgJHRoaXMtPm5hdm5jbGFzcyA9ICgkY2xz bikgPyAkdGhpcy0+Y2xzX3BmeC4kY2xzbiA6ICcnOwogICAgICAgICR0aGlzLT5uYXZwYXJy b3cgPSAoJGFycnApID8gJGFycnAgOiAnJzsKICAgICAgICAkdGhpcy0+bmF2bmFycm93ID0g KCRhcnJuKSA/ICRhcnJuIDogJyc7CiAgICAgICAgJHRoaXMtPm5hdmlkID0gKCRuaWQpID8g JHRoaXMtPmNsc19wZnguJG5pZCA6ICcnOwogICAgfQoKICAgIGZ1bmN0aW9uIHNldE1ZQ2xh c3MoJGNscykKICAgIHsKICAgICAgICAkdGhpcy0+bXljbGFzcyA9ICgkY2xzKSA/ICR0aGlz LT5jbHNfcGZ4LiRjbHMgOiAnJzsKICAgIH0KCiAgICBmdW5jdGlvbiBzZXRGaWx0ZXJPcHRz KCRmKQogICAgewogICAgICAgICR0aGlzLT5mb3B0cyA9ICRmOwogICAgfQoKICAgIGZ1bmN0 aW9uIHNldEhvbGlkYXlzKCRob2xzKQogICAgewogICAgICAgICR0aGlzLT5ob2xpZGF5cyA9 ICRob2xzOwogICAgfQoKICAgIGZ1bmN0aW9uIHNldFNlbGVjdG9ycygkc2VsLCAkYnRuKQog ICAgewogICAgICAgIGZvcmVhY2ggKCRzZWwgYXMgJGlkeCA9PiAkaXRlbSkgewogICAgICAg ICAgICAkc2VscGFydHMgPSBleHBsb2RlKCI6IiwgJGl0ZW0pOwogICAgICAgICAgICAkc2Vs WyRpZHhdID0gJHNlbHBhcnRzWzBdOwogICAgICAgICAgICAkdGhpcy0+c2VscGZ4WyRzZWxw YXJ0c1swXV0gPSAoaXNzZXQoJHNlbHBhcnRzWzFdKSkgPyAkc2VscGFydHNbMV0gOiAnJzsK ICAgICAgICAgICAgJHRoaXMtPnNlbHNmeFskc2VscGFydHNbMF1dID0gKGlzc2V0KCRzZWxw YXJ0c1syXSkpID8gJHNlbHBhcnRzWzJdIDogJyc7CiAgICAgICAgfQogICAgICAgICR0aGlz LT5zZWxlY3RvcnMgPSAkc2VsOwogICAgICAgICR0aGlzLT5zZWxidG4gPSAkYnRuOwogICAg fQoKICAgIGZ1bmN0aW9uIHNldEZpcnN0RGF5T2ZXZWVrKCRkKQogICAgewogICAgICAgICR0 aGlzLT5maXJzdERheU9mV2VlayA9ICgoaW50KSRkIDw9IDYgYW5kIChpbnQpJGQgPj0gMCkg PyAoaW50KSRkIDogMDsKICAgICAgICAkdGhpcy0+c3RhcnRPZmZzZXQgPSBkYXRlKCd3Jywg JHRoaXMtPnN0YXJ0VGltZSkgLSAkdGhpcy0+Zmlyc3REYXlPZldlZWs7CiAgICAgICAgaWYg KCAkdGhpcy0+c3RhcnRPZmZzZXQgPCAwICkgewogICAgICAgICAgICAkdGhpcy0+c3RhcnRP ZmZzZXQgPSA3IC0gYWJzKCR0aGlzLT5zdGFydE9mZnNldCk7CiAgICAgICAgfQogICAgfQoK ICAgIC8qKgogICAgICoKICAgICAqIGZybTogYW55IHZhbGlkIFBIUCBzdHJmdGltZSgpIHN0 cmluZyBvciBBQkJSL0ZVTEwKICAgICAqIHR5cDogZCB0byBzZXQgZGF5LCBtIHRvIHNldCBt b250aCBmb3JtYXQKICAgICAqLwogICAgZnVuY3Rpb24gc2V0TmFtZUZvcm1hdCgkZnJtLCAk dHlwID0gImQiKQogICAgewogICAgICAgIHN3aXRjaCAoJGZybSkgewogICAgICAgICAgICBj YXNlICJmdWxsIjoKICAgICAgICAgICAgY2FzZSAiRlVMTCI6CiAgICAgICAgICAgICAgICAk Zm10ID0gKCR0eXAgPT0gJ2QnKSA/ICIlQSIgOiAiJUIiOwogICAgICAgICAgICAgICAgYnJl YWs7CiAgICAgICAgICAgIGNhc2UgImFiYnIiOgogICAgICAgICAgICBjYXNlICJBQkJSIjoK ICAgICAgICAgICAgICAgICRmbXQgPSAoJHR5cCA9PSAnZCcpID8gIiVhIiA6ICIlYiI7CiAg ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg ICAgIGlmIChzdHJwb3MoJGZybSwgJyUnKSA9PT0gMCkgewogICAgICAgICAgICAgICAgICAg ICRmbXQgPSAkZnJtOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg ICAgICAkZnJtID0gdHJpbSgkZnJtLCAne30nKTsKICAgICAgICAgICAgICAgICAgICAkZnJt ID0gZG9fbGlzdCgkZnJtKTsKICAgICAgICAgICAgICAgICAgICAkZm10ID0gJGZybTsKICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAg ICAgaWYgKCR0eXAgPT0gImQiKSB7CiAgICAgICAgICAgICR0aGlzLT5kYXlOYW1lRm10ID0g JGZtdDsKICAgICAgICAgICAgJHRoaXMtPmRheU5hbWVzID0gYXJyYXkoKTsKCiAgICAgICAg ICAgIC8vIFRoaXMgaXMgZG9uZSB0byBtYWtlIHN1cmUgU3VuZGF5IGlzIGFsd2F5cyB0aGUg Zmlyc3QgZGF5IG9mIG91ciBhcnJheQogICAgICAgICAgICAkc3RhcnQgPSAwOwogICAgICAg ICAgICAkZW5kID0gJHN0YXJ0ICsgNzsKICAgICAgICAgICAgJHN1bmRheSA9IHN0cnRvdGlt ZSgnMTk3MC1KYW4tMDQgMTI6MDA6MDAnKTsKCiAgICAgICAgICAgIGZvcigkaT0kc3RhcnQ7 ICRpPCRlbmQ7ICRpKyspIHsKICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkZm10KSkg ewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5kYXlOYW1lc1tdID0gJGZtdFskaS0kc3Rh cnRdOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkdGhp cy0+ZGF5TmFtZXNbXSA9IHVjZmlyc3Qoc3RyZnRpbWUoJGZtdCwgKCRzdW5kYXkgKyAoODY0 MDAqJGkpKSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBl bHNlIHsKICAgICAgICAgICAgJHRoaXMtPm10aE5hbWVGbXQgPSAkZm10OwogICAgICAgICAg ICAkdGhpcy0+bXRoTmFtZXMgPSBhcnJheSgpOwogICAgICAgICAgICBmb3IgKCRpPTA7ICRp PDEyOyAkaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAoaXNfYXJyYXkoJGZtdCkpIHsKICAg ICAgICAgICAgICAgICAgICAkdGhpcy0+bXRoTmFtZXNbJGkrMV0gPSAkZm10WyRpXTsKICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioK ICAgICAqIFJldHVybiBtYXJrdXAgZm9yIGRpc3BsYXlpbmcgdGhlIGNhbGVuZGFyLgogICAg ICoKICAgICAqIEByZXR1cm4KICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgZnVuY3Rpb24g ZGlzcGxheSgpCiAgICB7CiAgICAgICAgJGlkID0gKCR0aGlzLT50YWJsZUlEKSA/ICcgaWQ9 IicuJHRoaXMtPnRhYmxlSUQuJyInIDogJyc7CiAgICAgICAgJGNbXSA9ICc8dGFibGUnLiRp ZC4nPic7CiAgICAgICAgJGNbXSA9ICc8dGhlYWQ+JyAuICR0aGlzLT5kc3BEYXlOYW1lcygp IC4gJzwvdGhlYWQ+JzsKICAgICAgICAkY1tdID0gJHRoaXMtPmRzcERheUNlbGxzKCk7CiAg ICAgICAgJGNbXSA9ICc8L3RhYmxlPic7CgogICAgICAgIHJldHVybiBqb2luKCcnLCRjKTsK ICAgIH0KCiAgICAvKioKICAgICAqIERpc3BsYXlzIHRoZSByb3cgb2YgZGF5IG5hbWVzLgog ICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAg ICBmdW5jdGlvbiBkc3BEYXlOYW1lcygpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5oZHJm b3JtKSB7CiAgICAgICAgICAgICRyZXBzID0gYXJyYXkoCiAgICAgICAgICAgICAgICAne2Zp cnN0ZGF5fScgPT4gJHRoaXMtPmZpcnN0RGF5T2ZXZWVrLAogICAgICAgICAgICAgICAgJ3tk YXluYW1lc30nID0+IGpvaW4oJywnLCAkdGhpcy0+ZGF5TmFtZXMpLAogICAgICAgICAgICAg ICAgJ3tpc293ZWVraGVhZH0nID0+ICR0aGlzLT5JU09XZWVrSGVhZCwKICAgICAgICAgICAg ICAgICd7d2Vla30nID0+IGRhdGUoJ1cnLCAkdGhpcy0+c3RhcnRUaW1lKSwKICAgICAgICAg ICAgICAgICd7bW9udGh9JyA9PiBkYXRlKCduJywgJHRoaXMtPnN0YXJ0VGltZSksCiAgICAg ICAgICAgICAgICAne3llYXJ9JyA9PiBkYXRlKCdZJywgJHRoaXMtPnN0YXJ0VGltZSksCiAg ICAgICAgICAgICAgICAne2lzb3llYXJ9JyA9PiBkYXRlKCdvJywgJHRoaXMtPnN0YXJ0VGlt ZSksCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gcGFyc2Uoc3RydHIoJHRo aXMtPmhkcmZvcm0sICRyZXBzKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGNb XSA9ICc8dHIgY2xhc3M9InNtZF9jYWxfZGF5bmFtZXMiPic7CgogICAgICAgICAgICAkaSA9 ICR0aGlzLT5maXJzdERheU9mV2VlazsKICAgICAgICAgICAgJGogPSAwOyAvLyBjb3VudCBu dW1iZXIgb2YgZGF5cyBkaXNwbGF5ZWQKICAgICAgICAgICAgJGVuZCA9IGZhbHNlOwoKICAg ICAgICAgICAgaWYgKCR0aGlzLT5zaG93SVNPV2VlaykgewogICAgICAgICAgICAgICAgJGNb XSA9ICI8dGg+Ii4kdGhpcy0+SVNPV2Vla0hlYWQuIjwvdGg+IjsKICAgICAgICAgICAgfQog ICAgICAgICAgICBmb3IoJGogPSAwOyAkajw9NjsgJGorKywgJGkrKykgewogICAgICAgICAg ICAgICAgaWYoJGkgPT0gNykgeyAkaSA9IDA7IH0KICAgICAgICAgICAgICAgICRjW10gPSAn PHRoPicuJHRoaXMtPmdldERheU5hbWUoJGkpLiI8L3RoPiI7CiAgICAgICAgICAgIH0KCiAg ICAgICAgICAgICRjW10gPSAnPC90cj4nOwogICAgICAgICAgICByZXR1cm4gam9pbignJywk Yyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogRGlzcGxheXMgYWxsIGRheSBj ZWxscyBmb3IgdGhlIG1vbnRoLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAg KiBAcHJpdmF0ZQogICAgICovCiAgICBmdW5jdGlvbiBkc3BEYXlDZWxscygpCiAgICB7CiAg ICAgICAgJGkgPSAwOyAvLyBjZWxsIGNvdW50ZXIKICAgICAgICAkZW1wdHlDbGFzcyA9ICR0 aGlzLT5lbXB0eWNsYXNzOwogICAgICAgICRpc29DbGFzcyA9ICR0aGlzLT5pc29jbGFzczsK ICAgICAgICAkcm93Q2xhc3MgPSAkdGhpcy0+cm93Y2xhc3M7CiAgICAgICAgJHJvd0NsYXNz ID0gKCRyb3dDbGFzcykgPyAnIGNsYXNzPSInLiRyb3dDbGFzcy4nIicgOiAnJzsKCiAgICAg ICAgJGNbXSA9ICc8dHInLiRyb3dDbGFzcy4nPic7CgogICAgICAgIGlmICgkdGhpcy0+c2hv d0lTT1dlZWspIHsKICAgICAgICAgICAgJHJlcHMgPSBhcnJheSgKICAgICAgICAgICAgICAg ICd7d2Vla30nID0+IGRhdGUoJ1cnLCAkdGhpcy0+c3RhcnRUaW1lKSwKICAgICAgICAgICAg ICAgICd7bW9udGh9JyA9PiBkYXRlKCduJywgJHRoaXMtPnN0YXJ0VGltZSksCiAgICAgICAg ICAgICAgICAne3llYXJ9JyA9PiBkYXRlKCdZJywgJHRoaXMtPnN0YXJ0VGltZSksCiAgICAg ICAgICAgICAgICAne2lzb3llYXJ9JyA9PiBkYXRlKCdvJywgJHRoaXMtPnN0YXJ0VGltZSks CiAgICAgICAgICAgICk7CiAgICAgICAgICAgICR3a2NlbGwgPSBzdHJ0cigkdGhpcy0+SVNP V2Vla0NlbGwsICRyZXBzKTsKICAgICAgICAgICAgJGNbXSA9ICc8dGQgY2xhc3M9IicuJGlz b0NsYXNzLiciPicuJHdrY2VsbC4nPC90ZD4nOwogICAgICAgIH0KICAgICAgICAvLyBmaXJz dCBkaXNwbGF5IGVtcHR5IGNlbGxzIGJhc2VkIG9uIHdoYXQgd2Vla2RheSB0aGUgbW9udGgg c3RhcnRzIGluCiAgICAgICAgZm9yKCAkaj0wOyAkajwkdGhpcy0+c3RhcnRPZmZzZXQ7ICRq KysgKSAgICB7CiAgICAgICAgICAgICRpKys7CiAgICAgICAgICAgICRjW10gPSAnPHRkIGNs YXNzPSInLiRlbXB0eUNsYXNzLiciPiZuYnNwOzwvdGQ+JzsKICAgICAgICB9IC8vIGVuZCBv ZmZzZXQgY2VsbHMKCiAgICAgICAgLy8gd3JpdGUgb3V0IHRoZSByZXN0IG9mIHRoZSBkYXlz LCBhdCBlYWNoIHN1bmRheSwgc3RhcnQgYSBuZXcgcm93LgogICAgICAgIGZvciggJGQ9MTsg JGQ8PSR0aGlzLT5lbmREYXk7ICRkKysgKSB7CiAgICAgICAgICAgICRpKys7CiAgICAgICAg ICAgICRjW10gPSAkdGhpcy0+ZHNwRGF5Q2VsbCggJGQgKTsKICAgICAgICAgICAgaWYgKCAk aSU3ID09IDAgKSB7ICRjW10gPSAnPC90cj4nOyB9CiAgICAgICAgICAgIGlmICggJGQ8JHRo aXMtPmVuZERheSAmJiAkaSU3ID09IDAgKSB7CiAgICAgICAgICAgICAgICAkY1tdID0gJzx0 cicuJHJvd0NsYXNzLic+JzsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+c2hvd0lTT1dl ZWspIHsKICAgICAgICAgICAgICAgICAgICAvLyAqKk5vdCoqIHVzaW5nIHNhZmVfc3RydG90 aW1lKCkgaGVyZSB0byBjYXRlciBmb3IgYW4gb3BlcmF0aW5nIHRpbWV6b25lIHRoYXQgZGlm ZmVycyBmcm9tIHRoZSBzZXJ2ZXIgdGltZXpvbmUuCiAgICAgICAgICAgICAgICAgICAgLy8g UHJvYmFibHkgc2hvdWxkIGRvIHRoaXMgaW4gb3RoZXIgcGxhY2VzIHRvbyBidXQgbm8gYnVn cyBoYXZlIGJlZW4gZmlsZWQgeWV0IHNvIGl0IGNhbiBiZSBkb25lIG9uIGEKICAgICAgICAg ICAgICAgICAgICAvLyBjYXNlLWJ5LWNhc2UgYmFzaXMKICAgICAgICAgICAgICAgICAgICAk dGhlVGltZSA9IHN0cnRvdGltZSgkdGhpcy0+eWVhci4iLSIuJHRoaXMtPm1vbnRoLiItIi4o aW50KSgkZCArIDEpIC4iIDAwOjAwIik7CiAgICAgICAgICAgICAgICAgICAgJHJlcHMgPSBh cnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgJ3t3ZWVrfScgPT4gZGF0ZSgnVycsICR0 aGVUaW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgJ3ttb250aH0nID0+IGRhdGUoJ24n LCAkdGhlVGltZSksCiAgICAgICAgICAgICAgICAgICAgICAgICd7eWVhcn0nID0+IGRhdGUo J1knLCAkdGhlVGltZSksCiAgICAgICAgICAgICAgICAgICAgICAgICd7aXNveWVhcn0nID0+ IGRhdGUoJ28nLCAkdGhlVGltZSksCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAg ICAgICAgICAgICAkd2tjZWxsID0gc3RydHIoJHRoaXMtPklTT1dlZWtDZWxsLCAkcmVwcyk7 CiAgICAgICAgICAgICAgICAgICAgJGNbXSA9ICc8dGQgY2xhc3M9IicuJGlzb0NsYXNzLici PicuJHdrY2VsbC4nPC90ZD4nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAg ICAgICAgfQogICAgICAgIC8vIGZpbGwgaW4gdGhlIGZpbmFsIHJvdwogICAgICAgICRsZWZ0 ID0gNyAtICggJGklNyApOwogICAgICAgIGlmICggJGxlZnQgPCA3KSB7CiAgICAgICAgICAg IGZvciAoICRqPTA7ICRqPCRsZWZ0OyAkaisrICkgICAgewogICAgICAgICAgICAgICRjW10g PSAnPHRkIGNsYXNzPSInLiRlbXB0eUNsYXNzLiciPiZuYnNwOzwvdGQ+JzsKICAgICAgICAg ICAgfQogICAgICAgICAgICAkY1tdID0gIlxuXHQ8L3RyPiI7CiAgICAgICAgfQogICAgICAg IHJldHVybiAnPHRib2R5PicgLiBqb2luKCcnLCRjKSAuICc8L3Rib2R5Pic7CiAgICB9Cgog ICAgLyoqCiAgICAgKiBPdXRwdXRzIHRoZSBjb250ZW50cyBmb3IgYSBnaXZlbiBkYXkuCiAg ICAgKgogICAgICogQHBhcmFtIGludGVnZXIsIGRheQogICAgICogQGFic3RyYWN0CiAgICAg Ki8KICAgIGZ1bmN0aW9uIGRzcERheUNlbGwoJGRheSkKICAgIHsKICAgICAgICByZXR1cm4g Jzx0ZD4nLiRkYXkuJzwvdGQ+JzsKICAgIH0KfQoKZnVuY3Rpb24gc21kX2NhbF9taW5pbGlu aygkcm93LCAkZGF5LCAkbW9udGgsICR5ZWFyLCAkdXNlX3Bvc3RlZCA9IGZhbHNlKQp7CiAg ICBnbG9iYWwgJHBlcm1saW5rX21vZGU7CgogICAgJGxhbmcgPSAnJzsKICAgICRyZXF1ZXN0 ID0gc2VydmVyU2V0KCdSRVFVRVNUX1VSSScpOwogICAgJHJlZGlyZWN0ID0gc2VydmVyU2V0 KCdSRURJUkVDVF9VUkwnKTsKICAgIGlmICghZW1wdHkoJHJlZGlyZWN0KSAmJiAoJHJlcXVl c3QgIT0gJHJlZGlyZWN0KSAmJiBpc19jYWxsYWJsZSgnX2wxMG5fc2V0X2Jyb3dzZV9sYW5n dWFnZScpKSB7CiAgICAgICAgLy8gTUxQIGluIGRhIGhvdXNlIHNvIGV4dHJhY3QgdGhlIGxh bmd1YWdlIGN1cnJlbnRseSBpbiB1c2UgLS0gaXMgdGhlcmUgYW4gTUxQLW5hdGl2ZSBtZXRo b2QgZm9yIHRoaXM/CiAgICAgICAgJHJlcXBhcnRzID0gZXhwbG9kZSgnLycsICRyZXF1ZXN0 KTsKICAgICAgICAkcmVkcGFydHMgPSBleHBsb2RlKCcvJywgJHJlZGlyZWN0KTsKICAgICAg ICAkbGFuZyA9IGpvaW4oJycsIGFycmF5X2RpZmYoJHJlZHBhcnRzLCAkcmVxcGFydHMpKSAu ICcvJzsKICAgIH0KCiAgICBpZiggJHBlcm1saW5rX21vZGUgPT0gJ3llYXJfbW9udGhfZGF5 X3RpdGxlJyApIHsKICAgICAgICAkbGlua2RhdGUgPSAoJHVzZV9wb3N0ZWQpID8gZGF0ZSgn WS9tL2QnLCAkcm93Wyd1UG9zdGVkJ10pIDogJHllYXIuJy8nLnN0cl9wYWQoJG1vbnRoLDIs IjAiLFNUUl9QQURfTEVGVCkuJy8nLnN0cl9wYWQoJGRheSwyLCIwIixTVFJfUEFEX0xFRlQp OwogICAgICAgICRocmVmID0gJyBocmVmPSInLmh1LiRsYW5nLiRsaW5rZGF0ZS4nIic7CiAg ICB9IGVsc2UgewogICAgICAgICRsaW5rZGF0ZSA9ICgkdXNlX3Bvc3RlZCkgPyBkYXRlKCdZ LW0tZCcsICRyb3dbJ3VQb3N0ZWQnXSkgOiAkeWVhci4nLScuc3RyX3BhZCgkbW9udGgsMiwi MCIsU1RSX1BBRF9MRUZUKS4nLScuc3RyX3BhZCgkZGF5LDIsIjAiLFNUUl9QQURfTEVGVCk7 CiAgICAgICAgJGhyZWYgPSAnIGhyZWY9IicuaHUuJGxhbmcuJz9kYXRlPScuJGxpbmtkYXRl OwogICAgICAgIGlmKCRyb3dbJ1NlY3Rpb24nXSkgeyAkaHJlZiA9ICRocmVmLmEuJ3M9Jy4k cm93WydTZWN0aW9uJ107IH0KLy8gICAgICBpZigkY2F0ZWdvcnkpIHsgJGhyZWYgPSAkaHJl Zi5hLidjPScuJGNhdGVnb3J5OyB9CiAgICAgICAgJGhyZWYgLj0gJyInOwogICAgfQoKICAg IHJldHVybiB0YWcoJGRheSwgJ2EnLCAkaHJlZik7Cn0KCi8vIFBlcmZvcm0gb25lIG9mIHR3 byB0eXBlcyBvZiB0ZXN0OiBhIGZsYWctYmFzZWQgdGVzdCwgb3IgYW4gaW5mby1iYXNlZCB0 ZXN0CmZ1bmN0aW9uIHNtZF9pZl9jYWwoJGF0dHMsICR0aGluZykKewogICAgZ2xvYmFsICRz bWRfY2FsX2ZsYWcsICRzbWRfY2FsaW5mbywgJHNtZF9kYXRlOwoKICAgIGV4dHJhY3QobEF0 dHMoYXJyYXkoCiAgICAgICAgJ2ZsYWcnICAgID0+ICcnLAogICAgICAgICdjYWxpZCcgICA9 PiAnJywKICAgICAgICAnaXNveWVhcicgPT4gJycsCiAgICAgICAgJ3llYXInICAgID0+ICcn LAogICAgICAgICdtb250aCcgICA9PiAnJywKICAgICAgICAnd2VlaycgICAgPT4gJycsCiAg ICAgICAgJ2RheScgICAgID0+ICcnLAogICAgICAgICdsb2dpYycgICA9PiAnb3InLAogICAg ICAgICdkZWJ1ZycgICA9PiAnMCcsCiAgICApLCAkYXR0cykpOwoKICAgICRmbGFnID0gZG9f bGlzdCgkZmxhZyk7CiAgICAkY3RyID0gJG51bSA9IDA7CgogICAgaWYgKCRkZWJ1Zykgewog ICAgICAgIGRtcCgkYXR0cyk7CiAgICB9CgogICAgaWYgKCRmbGFnICYmICRmbGFnWzBdICE9 ICcnKSB7CiAgICAgICAgJG51bSArPSBjb3VudCgkZmxhZyk7CiAgICAgICAgZm9yZWFjaCAo JGZsYWcgYXMgJHdoYXRub3QpIHsKICAgICAgICAgICAgaWYgKGVtcHR5KCR3aGF0bm90KSkg Y29udGludWU7CiAgICAgICAgICAgICRjdHIgKz0gKGluX2FycmF5KCR3aGF0bm90LCAkc21k X2NhbF9mbGFnKSB8fCAoJHdoYXRub3QgPT0gJ1NNRF9BTlknICYmICFlbXB0eSgkc21kX2Nh bF9mbGFnKSkpID8gMSA6IDA7CiAgICAgICAgfQogICAgfQogICAgaWYgKCRjYWxpZCkgewog ICAgICAgICRudW0rKzsKICAgICAgICAkY3RyICs9ICgkc21kX2NhbGluZm9bJ2lkJ10gPT09 ICRjYWxpZCkgPyAxIDogMDsKICAgIH0KICAgIGZvcmVhY2ggKGFycmF5KCJpeSIgPT4gImlz b3llYXIiLCAieSIgPT4gInllYXIiLCAibSIgPT4gIm1vbnRoIiwgInciID0+ICJ3ZWVrIiwg ImQiID0+ICJkYXkiKSBhcyAkaWR4ID0+ICR0ZXN0KSB7CiAgICAgICAgJHRlc3RlciA9ICQk dGVzdDsKICAgICAgICAkY29tcGFyZSA9ICRzbWRfZGF0ZVskaWR4XTsKCiAgICAgICAgaWYg KCR0ZXN0ZXIpIHsKICAgICAgICAgICAgJG51bSsrOwogICAgICAgICAgICBwcmVnX21hdGNo KCcvKFshPTw+XSspPyhbXGRdKykvJywgJHRlc3RlciwgJG1hdGNoZXMpOwogICAgICAgICAg ICBpZiAoJGRlYnVnKSB7CiAgICAgICAgICAgICAgICBkbXAoIlRFU1QgSUY6ICIuICRjb21w YXJlLiAoKCRtYXRjaGVzWzFdKSA/ICRtYXRjaGVzWzFdIDogJz0nKSAuICRtYXRjaGVzWzJd ICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3dpdGNoICgkbWF0Y2hlc1sxXSkgewog ICAgICAgICAgICAgICAgY2FzZSAiISI6CiAgICAgICAgICAgICAgICAgICAgJGN0ciArPSAo JGNvbXBhcmUhPSRtYXRjaGVzWzJdKSA/IDEgOiAwOwogICAgICAgICAgICAgICAgICAgIGJy ZWFrOwogICAgICAgICAgICAgICAgY2FzZSAiPiI6CiAgICAgICAgICAgICAgICAgICAgJGN0 ciArPSAoJGNvbXBhcmU+JG1hdGNoZXNbMl0pID8gMSA6IDA7CiAgICAgICAgICAgICAgICAg ICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICI+PSI6CiAgICAgICAgICAgICAgICAg ICAgJGN0ciArPSAoJGNvbXBhcmU+PSRtYXRjaGVzWzJdKSA/IDEgOiAwOwogICAgICAgICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAiPCI6CiAgICAgICAgICAg ICAgICAgICAgJGN0ciArPSAoJGNvbXBhcmU8JG1hdGNoZXNbMl0pID8gMSA6IDA7CiAgICAg ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICI8PSI6CiAgICAg ICAgICAgICAgICAgICAgJGN0ciArPSAoJGNvbXBhcmU8PSRtYXRjaGVzWzJdKSA/IDEgOiAw OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoK ICAgICAgICAgICAgICAgICAgICAkY3RyICs9ICgkY29tcGFyZT09JG1hdGNoZXNbMl0pID8g MSA6IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAg ICB9CiAgICB9CiAgICAkcmVzdWx0ID0gKCgkY3RyID09PSAkbnVtICYmICRsb2dpYyA9PSAi YW5kIikgfHwgJGN0ciA+IDAgJiYgJGxvZ2ljID09ICJvciIpID8gdHJ1ZSA6IGZhbHNlOwog ICAgcmV0dXJuIHBhcnNlKEV2YWxFbHNlKCR0aGluZywgJHJlc3VsdCkpOwp9CgovLyBDb252 ZW5pZW50IHdyYXBwZXIgZm9yIHNtZF9jYWxfaW5mbyB1c2U9ImV2ZW50IgpmdW5jdGlvbiBz bWRfZXZlbnRfaW5mbygkYXR0cykKewogICAgJGF0dHNbJ3VzZSddID0gJ2V2ZW50JzsKICAg IHJldHVybiBzbWRfY2FsX2luZm8oJGF0dHMpOwp9CgovLyBHcmFiIGFkZGl0aW9uYWwgaW5m b3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgZXZlbnQKZnVuY3Rpb24gc21kX2NhbF9pbmZv KCRhdHRzKQp7CiAgICBnbG9iYWwgJHByZXRleHQsICR0aGlzYXJ0aWNsZSwgJHNtZF9jYWxf ZmxhZywgJHNtZF9jYWxpbmZvLCAkc21kX2RhdGUsICRzbWRfZXZlbnRpbmZvOwoKICAgIGV4 dHJhY3QobEF0dHMoYXJyYXkoCiAgICAgICAgJ3R5cGUnICAgICAgICA9PiAnZmxhZycsCiAg ICAgICAgJ2pvaW4nICAgICAgICA9PiAnICcsCiAgICAgICAgJ2pvaW5fcHJlZml4JyA9PiAn U01EX0FVVE8nLAogICAgICAgICdodG1sJyAgICAgICAgPT4gMCwKICAgICAgICAnZXNjYXBl JyAgICAgID0+ICdodG1sJywKICAgICAgICAndXNlJyAgICAgICAgID0+ICdjYWwnLCAvLyAn Y2FsJyBmb3IgY2FsZW5kYXIgKHVzZXMgJHNtZF9jYWxpbmZvKSBvciAnZXZlbnQnIGZvciBl dmVudCBsaXN0cyAodXNlcyAkc21kX2V2ZW50aW5mbykuIE5vdCBwdWJsaWNhbGx5IGFsdGVy YWJsZQogICAgICAgICdkZWJ1ZycgICAgICAgPT4gMCwKICAgICksICRhdHRzKSk7CgogICAg Ly8gVmFsaWRhdGUgJHVzZSBhdHRyaWJ1dGUKICAgICR1c2UgPSAoaW5fYXJyYXkoJHVzZSwg YXJyYXkoJ2NhbCcsICdldmVudCcpKSkgPyAkdXNlIDogJ2NhbCc7CiAgICAkY2FsX2dsb2Jh bCA9ICR7J3NtZF8nLiR1c2UuJ2luZm8nfTsKCiAgICBpZiAoJGRlYnVnICYmICR0aGlzYXJ0 aWNsZSkgewogICAgICAgIGVjaG8gJysrIEV2ZW50IG5hbWUgKysnOwogICAgICAgIGRtcCgk dGhpc2FydGljbGVbJ3RpdGxlJ10pOwogICAgfQogICAgaWYgKCRkZWJ1ZyAmJiAkY2FsX2ds b2JhbCkgewogICAgICAgIGVjaG8gJysrIEF2YWlsYWJsZSAnLiR1c2UuJyBpbmZvICsrJzsK ICAgICAgICBkbXAoJGNhbF9nbG9iYWwpOwogICAgfQoKICAgIGlmICgkZGVidWcgJiYgJHNt ZF9kYXRlKSB7CiAgICAgICAgZWNobyAnKysgQXZhaWxhYmxlIGRhdGUgaW5mbyArKyc7CiAg ICAgICAgZG1wKCRzbWRfZGF0ZSk7CiAgICB9CgogICAgaWYgKCRkZWJ1ZyAmJiAkc21kX2Nh bF9mbGFnKSB7CiAgICAgICAgZWNobyAnKysgQXZhaWxhYmxlIGZsYWcgaW5mbyArKyc7CiAg ICAgICAgZG1wKCRzbWRfY2FsX2ZsYWcpOwogICAgfQoKICAgIC8vIFR5cGU6IDA9ZGF0ZSwg MT1zbWRfY2FsL2V2ZW50aW5mbywgMj1wcmV0ZXh0LCAzPXRoaXNhcnRpY2xlLCA0KG9yIG90 aGVyKT11c2VyIHZhbHVlCiAgICAkbWFwID0gYXJyYXkoCiAgICAgICAgJ3llYXInID0+IGFy cmF5KDAsICd5JyksCiAgICAgICAgJ2lzb3llYXInID0+IGFycmF5KDAsICdpeScsICd5Jyks CiAgICAgICAgJ21vbnRoJyA9PiBhcnJheSgwLCAnbScpLAogICAgICAgICd3ZWVrJyA9PiBh cnJheSgwLCAndycpLAogICAgICAgICdkYXknID0+IGFycmF5KDAsICdkJyksCiAgICAgICAg J3NlY3Rpb24nID0+IGFycmF5KDMsICcnLCAncycpLAogICAgICAgICdjYXRlZ29yeTEnID0+ IGFycmF5KDMsICcnLCAnYycpLAogICAgICAgICdjYXRlZ29yeTInID0+IGFycmF5KDMsICcn LCAnYycpLAogICAgICAgICd0aGlzaWQnID0+IGFycmF5KDMsICd0aGlzaWQnLCAnaWQnKSwK ICAgICAgICAnYXJ0aWNsZScgPT4gYXJyYXkoMSwgJ2FydGlkJywgJ2lkJyksCiAgICAgICAg J2NhbGlkJyA9PiBhcnJheSgxLCAnaWQnLCAnY2FsaWQnKSwKICAgICAgICAnY2F0ZWdvcnkn ID0+IGFycmF5KDIsICdjJyksCiAgICAgICAgJ3JlYWxuYW1lJyA9PiBhcnJheSgyLCAnYXV0 aG9yJyksCiAgICApOwogICAgJGpvaW4gPSAoJGh0bWwpID8gYSA6ICRqb2luOyAvLyBodG1s IG1vZGUgZm9yY2VzIGFtcGVyc2FuZCBqb2luCiAgICAkdHlwZSA9IGRvX2xpc3QoJHR5cGUp OwogICAgJHJldCA9IGFycmF5KCk7CiAgICBmb3JlYWNoICgkdHlwZSBhcyAkaXRlbSkgewog ICAgICAgICRwdHMgPSBkb19saXN0KCRpdGVtLCAnOicpOwogICAgICAgICRpdGVtID0gJHB0 c1swXTsKCiAgICAgICAgaWYgKGVtcHR5KCRpdGVtKSkgY29udGludWU7CiAgICAgICAgLy8g RGVmYXVsdCBodG1sIGlkCiAgICAgICAgJGhpZCA9IChpc3NldCgkbWFwWyRpdGVtXSkpID8g KChpc3NldCgkbWFwWyRpdGVtXVsyXSkpID8gJG1hcFskaXRlbV1bMl0gOiAkbWFwWyRpdGVt XVsxXSkgOiAkaXRlbTsKICAgICAgICAvLyBVc2VyLXNwZWNpZmllZCBodG1saWQgb3ZlcnJp ZGVzIGl0CiAgICAgICAgJGhpZCA9IChjb3VudCgkcHRzKSA+IDEgJiYgIWVtcHR5KCRwdHNb MV0pKSA/ICRwdHNbMV0gOiAkaGlkOwogICAgICAgIGlmICgkaXRlbSA9PSAiZmxhZyIpIHsK ICAgICAgICAgICAgJHJldFtdID0gKCgkam9pbl9wcmVmaXg9PSJTTURfQVVUTyIpID8gJGpv aW4gOiAnJykuam9pbigkam9pbiwgJHNtZF9jYWxfZmxhZyk7CiAgICAgICAgfSBlbHNlIGlm ICgkaXRlbSA9PSAiYXV0aG9yIiB8fCAkaXRlbSA9PSAicmVhbG5hbWUiKSB7CiAgICAgICAg ICAgICRjdXJyYXV0aG9yID0gKCR0aGlzYXJ0aWNsZSA9PSBOVUxMKSA/ICcnIDogYXV0aG9y KGFycmF5KCkpOwogICAgICAgICAgICBpZiAoJGN1cnJhdXRob3IpIHsKICAgICAgICAgICAg ICAgICRyZXRbXSA9ICgoJGh0bWwpID8gJGhpZC4nPScgOiAnJykgLiAkY3VycmF1dGhvcjsK ICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAoJGl0ZW0gPT0gInMiKSB7CiAgICAg ICAgICAgICRzZWMgPSAoIWVtcHR5KCRwcmV0ZXh0WydzJ10pKSA/ICRwcmV0ZXh0WydzJ10g OiAoKGlzc2V0KCRjYWxfZ2xvYmFsWydzJ10pICYmICFlbXB0eSgkY2FsX2dsb2JhbFsncydd KSkgPyAkY2FsX2dsb2JhbFsncyddIDogJycpOwogICAgICAgICAgICBpZiAoJHNlYykgewog ICAgICAgICAgICAgICAgJHJldFtdID0gKCgkaHRtbCkgPyAkaGlkLic9JyA6ICcnKSAuICRz ZWM7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKGlzc2V0KCRtYXBbJGl0ZW1d KSkgewogICAgICAgICAgICAkdHlwID0gJG1hcFskaXRlbV1bMF07CiAgICAgICAgICAgICRp ZHggPSBlbXB0eSgkbWFwWyRpdGVtXVsxXSkgPyAkaXRlbSA6ICRtYXBbJGl0ZW1dWzFdOwog ICAgICAgICAgICBzd2l0Y2ggKCR0eXApIHsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAg ICAgICAgICAgICAgICAgICBpZiAoJHNtZF9kYXRlWyRpZHhdKSB7CiAgICAgICAgICAgICAg ICAgICAgICAgICRyZXRbXSA9ICgoJGh0bWwpID8gJGhpZC4nPScgOiAnJykgLiAkc21kX2Rh dGVbJGlkeF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJy ZWFrOwogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgIGlmICgh ZW1wdHkoJGNhbF9nbG9iYWxbJGlkeF0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRy ZXRbXSA9ICgoJGh0bWwpID8gJGhpZC4nPScgOiAnJykgLiAkY2FsX2dsb2JhbFskaWR4XTsK ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg ICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkcHJl dGV4dFskaWR4XSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHJldFtdID0gKCgkaHRt bCkgPyAkaGlkLic9JyA6ICcnKSAuICRwcmV0ZXh0WyRpZHhdOwogICAgICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2Ug MzoKICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXNhcnRpY2xlICE9IE5VTEwgJiYgaXNz ZXQoJHRoaXNhcnRpY2xlWyRpZHhdKSAmJiAhZW1wdHkoJHRoaXNhcnRpY2xlWyRpZHhdKSkg ewogICAgICAgICAgICAgICAgICAgICAgICAkcmV0W10gPSAoKCRodG1sKSA/ICRoaWQuJz0n IDogJycpIC4gJHRoaXNhcnRpY2xlWyRpZHhdOwogICAgICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSBp ZiAoYXJyYXlfa2V5X2V4aXN0cygkaXRlbSwgJHByZXRleHQpKSB7CiAgICAgICAgICAgIGlm ICgkcHJldGV4dFskaXRlbV0pIHsKICAgICAgICAgICAgICAgICRyZXRbXSA9ICgoJGh0bWwp ID8gJGhpZC4nPScgOiAnJykgLiAkcHJldGV4dFskaXRlbV07CiAgICAgICAgICAgIH0KICAg ICAgICB9IGVsc2UgaWYgKGlzc2V0KCRjYWxfZ2xvYmFsWyRpdGVtXSkpIHsKICAgICAgICAg ICAgaWYgKCFlbXB0eSgkY2FsX2dsb2JhbFskaXRlbV0pKSB7CiAgICAgICAgICAgICAgICAk cmV0W10gPSAoKCRodG1sKSA/ICRoaWQuJz0nIDogJycpIC4gJGNhbF9nbG9iYWxbJGl0ZW1d OwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCR0aGlz YXJ0aWNsZSAhPSBOVUxMICYmIGlzc2V0KCR0aGlzYXJ0aWNsZVskaXRlbV0pICYmICFlbXB0 eSgkdGhpc2FydGljbGVbJGl0ZW1dKSkgewogICAgICAgICAgICAgICAgJHJldFtdID0gKCgk aHRtbCkgPyAkaGlkLic9JyA6ICcnKSAuICR0aGlzYXJ0aWNsZVskaXRlbV07CiAgICAgICAg ICAgIH0KICAgICAgICB9CiAgICB9Ci8vICAgICRyZXQgPSBhcnJheV91bmlxdWUoJHJldCk7 CiAgICAkb3V0ID0gKCgkam9pbl9wcmVmaXg9PSJTTURfQVVUTyIpID8gKCgkaHRtbCkgPyAn PycgOiAnJykgOiAkam9pbl9wcmVmaXgpLmpvaW4oJGpvaW4sICRyZXQpOwogICAgcmV0dXJu ICgkZXNjYXBlPT0naHRtbCcpID8gaHRtbHNwZWNpYWxjaGFycygkb3V0KSA6ICRvdXQ7Cn0K Ci8vIFJldHVybiBhIGZvcm1hdHRlZCB0aW1lc3RhbXAsIHdpdGggb3B0aW9uYWwgJ3RpbWUg bm93JyBvdmVycmlkZQpmdW5jdGlvbiBzbWRfY2FsX25vdygkYXR0cykKewogICAgZ2xvYmFs ICRkYXRlZm9ybWF0OwoKICAgIGV4dHJhY3QobEF0dHMoYXJyYXkoCiAgICAgICAgJ2Zvcm1h dCcgPT4gJGRhdGVmb3JtYXQsCiAgICAgICAgJ25vdycgICAgPT4gJycsCiAgICAgICAgJ29m ZnNldCcgPT4gJycsCiAgICAgICAgJ2dtdCcgICAgPT4gJycsCiAgICAgICAgJ2xhbmcnICAg PT4gJycsCiAgICApLCAkYXR0cykpOwoKICAgICR0aGVEYXkgPSAoZ3BzKCdkJykgJiYgaXNf bnVtZXJpYyhncHMoJ2QnKSkpID8gKGludClncHMoJ2QnKSA6IHNhZmVfc3RyZnRpbWUoJyVk Jyk7CiAgICAkdGhlTW9udGggPSAoZ3BzKCdtJykgJiYgaXNfbnVtZXJpYyhncHMoJ20nKSkp ID8gKGludClncHMoJ20nKSA6IHNhZmVfc3RyZnRpbWUoJyVtJyk7CiAgICAkdGhlWWVhciA9 IChncHMoJ3knKSAmJiBpc19udW1lcmljKGdwcygneScpKSkgPyAoaW50KWdwcygneScpIDog c2FmZV9zdHJmdGltZSgnJVknKTsKICAgIGlmICgkbm93KSB7CiAgICAgICAgJG5vdyA9IHN0 cl9yZXBsYWNlKCI/bW9udGgiLCBkYXRlKCdGJywgbWt0aW1lKDEyLDAsMCwkdGhlTW9udGgs JHRoZURheSwkdGhlWWVhcikpLCAkbm93KTsKICAgICAgICAkbm93ID0gc3RyX3JlcGxhY2Uo Ij95ZWFyIiwgJHRoZVllYXIsICRub3cpOwogICAgICAgICRub3cgPSBzdHJfcmVwbGFjZSgi P2RheSIsICR0aGVEYXksICRub3cpOwogICAgICAgICRub3cgPSBpc19udW1lcmljKCRub3cp ID8gJG5vdyA6IHN0cnRvdGltZSgkbm93KTsKICAgIH0gZWxzZSB7CiAgICAgICAgJG5vdyA9 IHRpbWUoKTsKICAgIH0KCiAgICBpZiAoJG9mZnNldCkgewogICAgICAgICRub3cgPSBzdHJ0 b3RpbWUoJG9mZnNldCwgJG5vdyk7CiAgICB9CgogICAgJGZvcm1hdCA9IHNtZF9jYWxfcmVm b3JtYXRfd2luKCRmb3JtYXQsICRub3cpOwogICAgcmV0dXJuIHNhZmVfc3RyZnRpbWUoJGZv cm1hdCwgJG5vdywgJGdtdCwgJGxhbmcpOwp9CgovLyBTZXQgdXNlci1kZWZpbmVkIGNsYXNz ZXMgZm9yIGEgY2VsbApmdW5jdGlvbiBzbWRfY2FsX2NsYXNzKCRhdHRzKQp7CiAgICBnbG9i YWwgJHNtZF9jYWxfdWNsczsKCiAgICBleHRyYWN0KGxBdHRzKGFycmF5KAogICAgICAgICdu YW1lJyA9PiAnJywKICAgICksICRhdHRzKSk7CgogICAgJG5hbWUgPSBkb19saXN0KCRuYW1l KTsKICAgICRzbWRfY2FsX3VjbHMgPSBhcnJheV9tZXJnZSgkc21kX2NhbF91Y2xzLCAkbmFt ZSk7Cn0KCi8vIDx0eHA6YXJ0aWNsZV9jdXN0b20gLz4gcmVwbGFjZW1lbnQoaXNoKSB0YWcg dGhhdCB1bmRlcnN0YW5kcyBob3cgdG8gaGFuZGxlIHJlY3VycmluZyBldmVudHMKZnVuY3Rp b24gc21kX2FydGljbGVfZXZlbnQoJGF0dHMsICR0aGluZyA9IG51bGwpCnsKICAgIGdsb2Jh bCAkcHJlZnMsICRwcmV0ZXh0LCAkdGhpc3BhZ2UsICR0aGlzYXJ0aWNsZSwgJHNtZF9ldmVu dGluZm8sICRzbWRfY2FsX2ZsYWcsICRzbWRfZGF0ZTsKCiAgICBleHRyYWN0KGxBdHRzKGFy cmF5KAogICAgICAgICd0aW1lJyAgICAgICAgPT4gJ2FueScsCiAgICAgICAgJ3R5cGUnICAg ICAgICA9PiAnc3RhbmRhcmQscmVjdXIsbXVsdGknLAogICAgICAgICdleHBpcmVkJyAgICAg PT4gJycsCiAgICAgICAgJ2lkJyAgICAgICAgICA9PiAnJywKICAgICAgICAnY2F0ZWdvcnkn ICAgID0+IG51bGwsCiAgICAgICAgJ3NlY3Rpb24nICAgICA9PiAnJywKICAgICAgICAnYXV0 aG9yJyAgICAgID0+ICcnLAogICAgICAgICdyZWFsbmFtZScgICAgPT4gJycsCiAgICAgICAg J2N1c3RvbScgICAgICA9PiAnJywKICAgICAgICAnc3RhdHVzJyAgICAgID0+ICdsaXZlJywK ICAgICAgICAncGFyYW1fZGVsaW0nID0+ICc6JywKICAgICAgICAnc29ydCcgICAgICAgID0+ ICcnLAogICAgICAgICdmb3JtJyAgICAgICAgPT4gJycsCiAgICAgICAgJ3N0ZXBmaWVsZCcg ICA9PiAnJywKICAgICAgICAnc2tpcGZpZWxkJyAgID0+ICcnLAogICAgICAgICdvbWl0Zmll bGQnICAgPT4gJycsCiAgICAgICAgJ2V4dHJhZmllbGQnICA9PiAnJywKICAgICAgICAnYWxs c3Bhbm5lZCcgID0+ICcwJywKICAgICAgICAnZGF0ZWZpZWxkcycgID0+ICcnLAogICAgICAg ICdtb250aCcgICAgICAgPT4gJycsCiAgICAgICAgJ2Zyb20nICAgICAgICA9PiAnJywKICAg ICAgICAndG8nICAgICAgICAgID0+ICcnLAogICAgICAgICdvZmZzZXQnICAgICAgPT4gMCwK ICAgICAgICAnbGltaXQnICAgICAgID0+ICcxMCcsCiAgICAgICAgJ2V2ZW50bGltaXQnICA9 PiAnMTAnLAogICAgICAgICdwYWdpbmcnICAgICAgPT4gJzEnLAogICAgICAgICdwYWdlYnkn ICAgICAgPT4gJycsCiAgICAgICAgJ3Bnb25seScgICAgICA9PiAnJywKICAgICAgICAnd3Jh cHRhZycgICAgID0+ICcnLAogICAgICAgICdicmVhaycgICAgICAgPT4gJycsCiAgICAgICAg J2NsYXNzJyAgICAgICA9PiAnJywKICAgICAgICAnZGVidWcnICAgICAgID0+IDAsCiAgICAp LCAkYXR0cykpOwoKICAgIC8vIFBoYXNlIDEgZmlsdGVycwogICAgJGZpbHRTUUwgPSBhcnJh eSgpOwogICAgJHN1YlNRTCA9IGFycmF5KCk7CiAgICBpZiAoJGNhdGVnb3J5ICE9PSBudWxs KSB7CiAgICAgICAgJHVuY2F0cyA9IGZhbHNlOwogICAgICAgICRhbGxjYXRzID0gZG9fbGlz dCgkY2F0ZWdvcnkpOwogICAgICAgIGlmICgoJHBvcyA9IGFycmF5X3NlYXJjaCgnU01EX1VO Q0FUJywgJGFsbGNhdHMpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgJHVuY2F0cyA9IHRy dWU7CiAgICAgICAgICAgIHVuc2V0KCRhbGxjYXRzWyRwb3NdKTsKICAgICAgICAgICAgJGNh dGVnb3J5ID0gam9pbignLCcsICRhbGxjYXRzKTsKICAgICAgICB9CiAgICAgICAgJHRtcCA9 IGRvUXVvdGUoam9pbigiJywnIiwgZG9TbGFzaChkb19saXN0KCRjYXRlZ29yeSkpKSk7CiAg ICAgICAgJGZpbHRTUUxbXSA9ICgkdW5jYXRzID8gIihDYXRlZ29yeTEgPSAnJyBBTkQgQ2F0 ZWdvcnkyID0gJycpIiA6ICcnKSAuCiAgICAgICAgICAgICgkdW5jYXRzICYmICRhbGxjYXRz ID8gIiBPUiAiIDogJycpIC4KICAgICAgICAgICAgKCRhbGxjYXRzID8gJyggQ2F0ZWdvcnkx IElOICgnLiR0bXAuJykgT1IgQ2F0ZWdvcnkyIElOICgnLiR0bXAuJykgKScgOiAnJyk7CiAg ICB9CiAgICBpZigkc2VjdGlvbikgewogICAgICAgICRmaWx0U1FMW10gPSAnU2VjdGlvbiBJ TiAoJy5kb1F1b3RlKGpvaW4oIicsJyIsIGRvU2xhc2goZG9fbGlzdCgkc2VjdGlvbikpKSku JyknOwogICAgfQogICAgaWYoJHJlYWxuYW1lKSB7CiAgICAgICAgJGF1dGhvcnMgPSBzYWZl X2NvbHVtbignbmFtZScsICd0eHBfdXNlcnMnLCAnUmVhbE5hbWUgSU4gKCcuIGRvUXVvdGUo am9pbigiJywnIiwgZG9BcnJheShkb19saXN0KCRyZWFsbmFtZSksICd1cmxkZWNvZGUnKSkp IC4nKScgKTsKICAgICAgICAkYXV0aG9yID0gam9pbignLCcsICRhdXRob3JzKTsKICAgIH0K ICAgIGlmKCRhdXRob3IpIHsKICAgICAgICAkZmlsdFNRTFtdID0gJ0F1dGhvcklEIElOICgn LmRvUXVvdGUoam9pbigiJywnIiwgZG9TbGFzaChkb19saXN0KCRhdXRob3IpKSkpLicpJzsK ICAgIH0KICAgIGlmKCRpZCkgewogICAgICAgICRmaWx0U1FMW10gPSAnSUQgSU4gKCcuam9p bignLCcsIGFycmF5X21hcCgnaW50dmFsJywgZG9fbGlzdCgkaWQpKSkuJyknOwogICAgfQog ICAgaWYoJGN1c3RvbSkgewogICAgICAgICRjdXN0cyA9IGRvX2xpc3QoJGN1c3RvbSk7CiAg ICAgICAgJHZhbGlkT3BzID0gYXJyYXkoJz0nLCAnIT0nLCAnPicsICc+PScsICc8JywgJzw9 JywgJ2xpa2UnLCAnbm90JywgJ25vdCBsaWtlJyk7CiAgICAgICAgZm9yZWFjaCAoJGN1c3Rz IGFzICRzZXQpIHsKICAgICAgICAgICAgaWYgKHN0cnBvcygkc2V0LCAkcGFyYW1fZGVsaW0p ICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgJGNsYXVzZU9wdHMgPSBkb19saXN0KCRz ZXQsICRwYXJhbV9kZWxpbSk7CiAgICAgICAgICAgICAgICAkZmxkID0gJGNsYXVzZU9wdHNb MF07CiAgICAgICAgICAgICAgICAkb3BlciA9ICgoY291bnQoJGNsYXVzZU9wdHMpID09IDMp ICYmIChpbl9hcnJheShzdHJ0b2xvd2VyKCRjbGF1c2VPcHRzWzFdKSwgJHZhbGlkT3BzKSkp ID8gJGNsYXVzZU9wdHNbMV0gOiAnPSc7CiAgICAgICAgICAgICAgICAkY2xhdXNlID0gKGNv dW50KCRjbGF1c2VPcHRzKSA9PSAzKSA/ICRjbGF1c2VPcHRzWzJdIDogKChjb3VudCgkY2xh dXNlT3B0cykgPT0gMikgPyAkY2xhdXNlT3B0c1sxXSA6ICcnKTsKICAgICAgICAgICAgICAg ICRmaWx0U1FMW10gPSAkZmxkIC4gIiAkb3BlciAiIC4gZG9RdW90ZShkb1NsYXNoKCRjbGF1 c2UpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAkdHlwZSA9IGRvX2xp c3QoJHR5cGUpOwogICAgJHBhZ2VieSA9IChlbXB0eSgkcGFnZWJ5KSA/ICRsaW1pdCA6ICRw YWdlYnkpOwoKICAgIGZvcmVhY2ggKCR0eXBlIGFzICRldnR5cCkgewogICAgICAgIHN3aXRj aCgkZXZ0eXApIHsKICAgICAgICAgICAgY2FzZSAnc3RhbmRhcmQnOgogICAgICAgICAgICAg ICAgaWYgKCRzdGVwZmllbGQpIHsKICAgICAgICAgICAgICAgICAgICAkc3ViU1FMW10gPSAi KCIuJHN0ZXBmaWVsZC4iID0gJycgQU5EIEV4cGlyZXMgSVMgTlVMTCkiOwogICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3JlY3Vy JzoKICAgICAgICAgICAgICAgIGlmICgkc3RlcGZpZWxkKSB7CiAgICAgICAgICAgICAgICAg ICAgJHN1YlNRTFtdID0gIigiLiRzdGVwZmllbGQuIiAhPSAnJykiOwogICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ211bHRpJzoK ICAgICAgICAgICAgICAgIGlmICgkc3RlcGZpZWxkKSB7CiAgICAgICAgICAgICAgICAgICAg JHN1YlNRTFtdID0gIigiLiRzdGVwZmllbGQuIiA9ICcnIEFORCBFeHBpcmVzIElTIE5PVCBO VUxMKSI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAg ICB9CiAgICB9CiAgICBpZiAoJHN1YlNRTCkgewogICAgICAgICRmaWx0U1FMW10gPSAnKCcu am9pbignIE9SICcsICRzdWJTUUwpLicpJzsKICAgIH0KCiAgICAkc3RhdHVzID0gKCRzdGF0 dXMpID8gJHN0YXR1cyA6ICdsaXZlJzsgLy8gaW4gY2FzZSBzdGF0dXMgaGFzIGJlZW4gZW1w dGllZAogICAgJHN0YXR1cyA9IGRvX2xpc3QoJHN0YXR1cyk7CiAgICAkc3RhdGkgPSBhcnJh eSgpOwogICAgZm9yZWFjaCAoJHN0YXR1cyBhcyAkc3RhdCkgewogICAgICAgIGlmIChlbXB0 eSgkc3RhdCkpIHsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfSBlbHNlIGlmIChp c19udW1lcmljKCRzdGF0KSkgewogICAgICAgICAgICAkc3RhdGlbXSA9ICRzdGF0OwogICAg ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRzdGF0aVtdID0gZ2V0U3RhdHVzTnVtKCRzdGF0 KTsKICAgICAgICB9CiAgICB9CiAgICAkZmlsdFNRTFtdID0gJ1N0YXR1cyBJTiAoJy5kb1F1 b3RlKGpvaW4oIicsJyIsICRzdGF0aSkpLicpJzsKCiAgICAkZXhwaXJlZCA9ICgkZXhwaXJl ZCkgPyAkZXhwaXJlZCA6ICRwcmVmc1sncHVibGlzaF9leHBpcmVkX2FydGljbGVzJ107CiAg ICBpZiAoISRleHBpcmVkKSB7CiAgICAgICAgJGZpbHRTUUxbXSA9ICcobm93KCkgPD0gRXhw aXJlcyBPUiBFeHBpcmVzIElTIE5VTEwpJzsKICAgIH0KCiAgICAvLyBTb3J0aW5nIHJ1bGVz OiBkYXRhIGlzIHNvcnRlZCBvbmNlIGFzIGl0IGlzIGV4dHJhY3RlZCB2aWEgU1FMIGFuZCB0 aGVuIGFnYWluIGFmdGVyIHRoZSBmYWtlIGRhdGVzIGhhdmUgYmVlbiBpbnNlcnRlZAogICAg JHNvcnQgPSAoZW1wdHkoJHNvcnQpKSA/ICdQb3N0ZWQgYXNjJyA6ICRzb3J0OwogICAgJHNv cnQgPSBkb19saXN0KCRzb3J0KTsKICAgICRzb3J0UHJlZml4ID0gIlNPUlRfIjsKICAgICRz b3J0T3JkZXIgPSBhcnJheSgpOwogICAgZm9yICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRz b3J0KTsgJGlkeCsrKSB7CiAgICAgICAgJHNvcnRpZXMgPSBleHBsb2RlKCcgJywgJHNvcnRb JGlkeF0pOwogICAgICAgIGlmIChjb3VudCgkc29ydGllcykgPD0gMSkgewogICAgICAgICAg ICAkc29ydGllc1sxXSA9ICJhc2MiOwogICAgICAgIH0KICAgICAgICAkc29ydGllc1sxXSA9 ICRzb3J0UHJlZml4LigoJHNvcnRpZXNbMV0gPT0gImRlc2MiKSA/ICdERVNDJyA6ICdBU0Mn KTsKICAgICAgICAkc29ydE9yZGVyW10gPSBhcnJheSgiYnkiID0+ICRzb3J0aWVzWzBdLCAi ZGlyIiA9PiAkc29ydGllc1sxXSk7CiAgICB9CiAgICAkZmlsdFNRTCA9IGpvaW4oJyBBTkQg JywgJGZpbHRTUUwpOwogICAgJGZpbHRTUUwgLj0gJyBPUkRFUiBCWSAnLmpvaW4oJywnLGRv U2xhc2goJHNvcnQpKTsKCiAgICAkZ3JhYkNvbHMgPSAnKiwgdW5peF90aW1lc3RhbXAoUG9z dGVkKSBhcyB1UG9zdGVkLCB1bml4X3RpbWVzdGFtcChMYXN0TW9kKSBhcyB1TGFzdE1vZCwg dW5peF90aW1lc3RhbXAoRXhwaXJlcykgYXMgdUV4cGlyZXMnOwogICAgJGV2bGlzdCA9IHNh ZmVfcm93cygkZ3JhYkNvbHMsICd0ZXh0cGF0dGVybicsICRmaWx0U1FMLCAkZGVidWcpOwoK ICAgIGlmICgkZGVidWc+MikgewogICAgICAgIGVjaG8gIisrIFJFQ09SRCBTRVQgKysiOwog ICAgICAgIGRtcCgkZXZsaXN0KTsKICAgIH0KICAgICRhbGxfZXZzID0gYXJyYXkoKTsKICAg ICRldl90YWxseSA9IGFycmF5KCk7CiAgICAkbm93ID0gdGltZSgpICsgdHpfb2Zmc2V0KCk7 CgogICAgJGV2ZW50bGltaXQgPSBkb19saXN0KCRldmVudGxpbWl0KTsKICAgIGlmIChjb3Vu dCgkZXZlbnRsaW1pdCkgPT0gMSkgewogICAgICAgICRldmVudGxpbWl0WzFdID0gJGV2ZW50 bGltaXRbMF07CiAgICB9CgogICAgJGRhdGVmaWVsZHMgPSBkb19saXN0KCRkYXRlZmllbGRz KTsKCiAgICAvLyBQaGFzZSAyOiBleHBhbmQgYW55IHJlY3VycmluZyBkYXRlcyBhbmQgY29s bGF0ZSBhbGwgZXZlbnRzIHRoYXQgZmFsbCB3aXRoaW4gdGhlIGFsbG90ZWQgcmFuZ2VzCiAg ICBmb3JlYWNoICgkZXZsaXN0IGFzICRyb3cpIHsKICAgICAgICAkZXZfcG9zdGVkID0gKCFl bXB0eSgkZGF0ZWZpZWxkc1swXSkgJiYgIWVtcHR5KCRyb3dbJGRhdGVmaWVsZHNbMF1dKSAm JiAoJHN0ZHQgPSBzdHJ0b3RpbWUoJHJvd1skZGF0ZWZpZWxkc1swXV0pKSAhPT0gZmFsc2Up ID8gJHN0ZHQgOiAkcm93Wyd1UG9zdGVkJ10rdHpfb2Zmc2V0KCRyb3dbJ3VQb3N0ZWQnXSk7 CiAgICAgICAgJGV2X2V4cGlyZXMgPSAoaXNzZXQoJGRhdGVmaWVsZHNbMV0pICYmICFlbXB0 eSgkcm93WyRkYXRlZmllbGRzWzFdXSkgJiYgKCRlbmR0ID0gc3RydG90aW1lKCRyb3dbJGRh dGVmaWVsZHNbMV1dKSkgIT09IGZhbHNlKSA/ICRlbmR0IDogKCgkcm93Wyd1RXhwaXJlcydd PT0wKSA/IDAgOiAkcm93Wyd1RXhwaXJlcyddK3R6X29mZnNldCgkcm93Wyd1RXhwaXJlcydd KSk7CgogICAgICAgICRza2lwID0gKCRza2lwZmllbGQgJiYgJHJvd1skc2tpcGZpZWxkXSAh PSAnJyk7CiAgICAgICAgJG9taXQgPSAoJG9taXRmaWVsZCAmJiAkcm93WyRvbWl0ZmllbGRd ICE9ICcnKTsKICAgICAgICAkcmVjdXIgPSAoJHN0ZXBmaWVsZCAmJiAkcm93WyRzdGVwZmll bGRdICE9ICcnKTsKICAgICAgICAkZXh0cmEgPSAoJGV4dHJhZmllbGQgJiYgJHJvd1skZXh0 cmFmaWVsZF0gIT0gJycpOwogICAgICAgICRtdWx0aSA9ICgkZXZfZXhwaXJlcyA+ICRldl9w b3N0ZWQgJiYgKGRhdGUoImQtbS1ZIiwgJGV2X2V4cGlyZXMpICE9IGRhdGUoImQtbS1ZIiwg JGV2X3Bvc3RlZCkpKSA/IHRydWUgOiBmYWxzZTsKCiAgICAgICAgLy8gSWYgZW5kIDwgc3Rh cnQgdGhlIHVzZXItc3BlY2lmaWVkIGRhdGVzIGNhbm5vdCBiZSB0cnVzdGVkCiAgICAgICAg aWYgKCRldl9leHBpcmVzICE9IDAgJiYgJGV2X2V4cGlyZXMgPD0gJGV2X3Bvc3RlZCkgewog ICAgICAgICAgICAkZXZfcG9zdGVkID0gJHJvd1sndVBvc3RlZCddK3R6X29mZnNldCgkcm93 Wyd1UG9zdGVkJ10pOwogICAgICAgICAgICAkZXZfZXhwaXJlcyA9ICgoJHJvd1sndUV4cGly ZXMnXT09MCkgPyAwIDogJHJvd1sndUV4cGlyZXMnXSt0el9vZmZzZXQoJHJvd1sndUV4cGly ZXMnXSkpOwogICAgICAgICAgICB0cmlnZ2VyX2Vycm9yKCdFeHBpcnkgY2Fubm90IGJlIGJl Zm9yZSBzdGFydCBkYXRlIGluICInLiRyb3dbJ1RpdGxlJ10uJyI6IGlnbm9yZWQnLCBFX1VT RVJfV0FSTklORyk7CiAgICAgICAgfQogICAgICAgIGlmICgkZGVidWcgPiAxKSB7CiAgICAg ICAgICAgIGVjaG8gJysrIEVWRU5UIFNUQVJUIC8vIEVORCArKyc7CiAgICAgICAgICAgIGRt cCgkcm93WydUaXRsZSddKTsKICAgICAgICAgICAgZG1wKCRldl9wb3N0ZWQsIGRhdGUoJ1kt bS1kIEg6aTpzJywgJGV2X3Bvc3RlZCksICRldl9leHBpcmVzLCBkYXRlKCdZLW0tZCBIOmk6 cycsICRldl9leHBpcmVzKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBSZXdyaXRlIHRoZSBz dGFydC9lbmQgZGF0ZXMgaW4gY2FzZSB0aGV5IGFyZSB1c2VyLWRlZmluZWQKICAgICAgICAk cm93Wyd1UG9zdGVkJ10gPSAkZXZfcG9zdGVkOwogICAgICAgICRyb3dbJ1Bvc3RlZCddID0g ZGF0ZSgiWS1tLWQgSDppOnMiLCAkZXZfcG9zdGVkKTsKICAgICAgICAkcm93Wyd1RXhwaXJl cyddID0gJGV2X2V4cGlyZXM7CiAgICAgICAgJHJvd1snRXhwaXJlcyddID0gKCRldl9leHBp cmVzPT0wKSA/ICcwMDAwLTAwLTAwIDAwOjAwOjAwJyA6IGRhdGUoIlktbS1kIEg6aTpzIiwg JGV2X2V4cGlyZXMpOwoKICAgICAgICAkZGlmZiA9ICgkZXZfZXhwaXJlcyA9PSAwKSA/IDAg OiAkZXZfZXhwaXJlcyAtICRldl9wb3N0ZWQ7CiAgICAgICAgJGV2X21vbnRoID0gZGF0ZSgn bScsICRldl9wb3N0ZWQpOwogICAgICAgICRldl95ZWFyID0gZGF0ZSgnWScsICRldl9wb3N0 ZWQpOwogICAgICAgICRldl9ociA9IGRhdGUoJ0gnLCAkZXZfcG9zdGVkKTsKICAgICAgICAk ZXZfbW4gPSBkYXRlKCdpJywgJGV2X3Bvc3RlZCk7CiAgICAgICAgJGV2X3NjID0gZGF0ZSgn cycsICRldl9wb3N0ZWQpOwogICAgICAgICRpZ25vcmUgPSBhcnJheSgpOwoKICAgICAgICAv LyBHZW5lcmF0ZSBhIHNraXAgYXJyYXkgZm9yIHRoaXMgZXZlbnQKICAgICAgICBpZiAoJHNr aXApIHsKICAgICAgICAgICAgJGlnbm9yZXMgPSBkb19saXN0KCRyb3dbJHNraXBmaWVsZF0p OwogICAgICAgICAgICBmb3JlYWNoICgkaWdub3JlcyBhcyAkdmFsKSB7CiAgICAgICAgICAg ICAgICAkaWdybmcgPSBzbWRfZXhwYW5kX2RhdGVyYW5nZSgkdmFsLCAkZXZfcG9zdGVkLCAk ZXZfZXhwaXJlcyk7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkaWdybmcgYXMgJHRoZXZh bCkgewogICAgICAgICAgICAgICAgICAgICRpZ25vcmVbXSA9IGRhdGUoImQtTS1ZIiwgJHRo ZXZhbCk7IC8vIEZvcmNlIGVhY2ggZGF0ZSB0byBhIGtub3duIGZvcm1hdAogICAgICAgICAg ICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIEFwcGVuZCBhbnkg b21pdHRlZCBldmVudHMKICAgICAgICBpZiAoJG9taXQpIHsKICAgICAgICAgICAgJG9taXRz ID0gZG9fbGlzdCgkcm93WyRvbWl0ZmllbGRdKTsKICAgICAgICAgICAgZm9yZWFjaCAoJG9t aXRzIGFzICR2YWwpIHsKICAgICAgICAgICAgICAgICRvbXJuZyA9IHNtZF9leHBhbmRfZGF0 ZXJhbmdlKCR2YWwsICRldl9wb3N0ZWQsICRldl9leHBpcmVzKTsKICAgICAgICAgICAgICAg IGZvcmVhY2ggKCRvbXJuZyBhcyAkdGhldmFsKSB7CiAgICAgICAgICAgICAgICAgICAgJGln bm9yZVtdID0gZGF0ZSgiZC1NLVkiLCAkdGhldmFsKTsKICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoJGRlYnVnID4gMSAmJiAkaWdub3Jl KSB7CiAgICAgICAgICAgIGVjaG8gJysrIElHTk9SRUQgREFURVMgKysnOwogICAgICAgICAg ICBkbXAoJGlnbm9yZSk7CiAgICAgICAgfQoKICAgICAgICAvLyBEb2VzIHRoZSBiYXNlIGV2 ZW50IGRlc2VydmUgdG8gYmUgaW4gdGhlIHJlc3VsdHM/CiAgICAgICAgaWYgKHNtZF9pbmNs dWRlX2V2ZW50KCRldl9wb3N0ZWQsICRub3csICRpZ25vcmUsICR0aW1lLCAkZnJvbSwgJHRv LCAkbW9udGgpKSB7CiAgICAgICAgICAgICRhbGxfZXZzW10gPSBhcnJheSgnZXYnID0+ICRy b3csICdmbGFncycgPT4gKCRtdWx0aSA/IGFycmF5KCdtdWx0aWZpcnN0JykgOiBhcnJheSgn c3RhbmRhcmQnKSkgKTsKICAgICAgICAgICAgJGV2X3RhbGx5WyRyb3dbJ3VQb3N0ZWQnXV0g PSAoaXNzZXQoJGV2X3RhbGx5WyRyb3dbJ3VQb3N0ZWQnXV0pKSA/ICRldl90YWxseVskcm93 Wyd1UG9zdGVkJ11dKzEgOiAxOwogICAgICAgIH0KCiAgICAgICAgLy8gQWRkIGFueSBleHRy YSBkYXRlcyBmb3IgdGhpcyBldmVudAogICAgICAgIGlmICgkZXh0cmEpIHsKICAgICAgICAg ICAgJHh0cmEgPSBkb19saXN0KCRyb3dbJGV4dHJhZmllbGRdKTsKICAgICAgICAgICAgJHh0 cmFzID0gYXJyYXkoKTsKCiAgICAgICAgICAgIC8vIE1ha2UgdXAgYW4gYXJyYXkgb2YgYWxs IGV4dHJhIGRhdGVzCiAgICAgICAgICAgIGZvcmVhY2ggKCR4dHJhIGFzICR2YWwpIHsKICAg ICAgICAgICAgICAgIGlmIChzdHJwb3MoJHZhbCwgIisiKSA9PT0gZmFsc2UpIHsKICAgICAg ICAgICAgICAgICAgICAkZXhybmcgPSBzbWRfZXhwYW5kX2RhdGVyYW5nZSgkdmFsKTsKICAg ICAgICAgICAgICAgICAgICAkeHRyYXNbXSA9IGRhdGUoIlktbS1kIiwgJGV4cm5nWzBdKTsK ICAgICAgICAgICAgICAgICAgICAkc3BleCA9IDA7CiAgICAgICAgICAgICAgICB9IGVsc2Ug ewogICAgICAgICAgICAgICAgICAgICRmYWtlX2RpZmYgPSBzYWZlX3N0cnRvdGltZShkYXRl KCJZLU0tZCIsICRldl9leHBpcmVzKSAuICIgMjM6NTk6NTkiKTsKICAgICAgICAgICAgICAg ICAgICAkZmRpZmYgPSAoJGV2X2V4cGlyZXM9PTApID8gMCA6ICRmYWtlX2RpZmYgLSAkZXZf cG9zdGVkOwogICAgICAgICAgICAgICAgICAgICRjaGsgPSAkYWxsc3Bhbm5lZCAmJiAkbXVs dGkgJiYgISRyZWN1cjsKICAgICAgICAgICAgICAgICAgICAkc3BpZHRoID0gJGNoayA/IGNl aWwoJGZkaWZmIC8gKDYwKjYwKjI0KSkgOiAxOyAvLyBkYXlzIGJldHdlZW4gZGF0ZXMKICAg ICAgICAgICAgICAgICAgICAkdmFsID0gcnRyaW0oJHZhbCwgJysnKTsKICAgICAgICAgICAg ICAgICAgICBmb3IgKCRqZHggPSAxOyAkamR4IDw9ICRzcGlkdGg7ICRqZHgrKykgewogICAg ICAgICAgICAgICAgICAgICAgICAkeHRyYXNbXSA9IGRhdGUoIlktbS1kIiwgc2FmZV9zdHJ0 b3RpbWUoJHZhbCAuICgoJGpkeD09MSkgPyAnJyA6ICcrJy4oJGpkeC0xKS4nIGRheXMnKSkp OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkc3BleCA9ICRj aGsgPyAxIDogMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAg ICAgJHh0cmFzID0gYXJyYXlfdW5pcXVlKCR4dHJhcyk7CgogICAgICAgICAgICAkc3RhbXBv ZmYgPSAoaW50KSgzNjAwKiRldl9ocikgKyAoaW50KSg2MCokZXZfbW4pICsgKGludCkkZXZf c2M7CiAgICAgICAgICAgIGZvcmVhY2ggKCR4dHJhcyBhcyAkamR4ID0+ICR2YWwpIHsKICAg ICAgICAgICAgICAgICR0bSA9IHN0cnRvdGltZSgkdmFsKTsKICAgICAgICAgICAgICAgICRm bGFncyA9IGFycmF5KCdleHRyYScpOwoKICAgICAgICAgICAgICAgIC8vIE5vICRpZ25vcmUg Zm9yIGFkZGl0aW9uYWwgZXZlbnRzLCBhcyB0aGV5IGFsd2F5cyBzaG93IHVwCiAgICAgICAg ICAgICAgICBpZiAoc21kX2luY2x1ZGVfZXZlbnQoJHRtKyRzdGFtcG9mZiwgJG5vdywgYXJy YXkoKSwgJHRpbWUsICRmcm9tLCAkdG8sICRtb250aCkpIHsKICAgICAgICAgICAgICAgICAg ICAkZmFrZXJvdyA9ICRyb3c7CiAgICAgICAgICAgICAgICAgICAgJGZha2Vyb3dbJ1Bvc3Rl ZCddID0gZGF0ZSgiWS1tLWQgSDppOnMiLCAkdG0rJHN0YW1wb2ZmKTsKICAgICAgICAgICAg ICAgICAgICAkZmFrZXJvd1sndVBvc3RlZCddID0gJHRtKyRzdGFtcG9mZjsKICAgICAgICAg ICAgICAgICAgICBpZiAoJGRpZmYgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRm YWtlcm93WydFeHBpcmVzJ10gPSBkYXRlKCJZLW0tZCBIOmk6cyIsICR0bSskc3RhbXBvZmYr JGRpZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAkZmFrZXJvd1sndUV4cGlyZXMnXSA9 ICR0bSskc3RhbXBvZmYrJGRpZmY7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgICAgIGlmICgkc3BleCkgewogICAgICAgICAgICAgICAgICAgICAgICAkZmxhZ3Nb XSA9ICgkamR4PT0wKSA/ICdtdWx0aWZpcnN0JyA6ICgoJGpkeD09JHNwaWR0aC0xKSA/ICdt dWx0aWxhc3QnIDogJ211bHRpJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgICAgICRhbGxfZXZzW10gPSBhcnJheSgnZXYnID0+ICRmYWtlcm93LCAnZmxhZ3Mn ID0+ICRmbGFncyk7CiAgICAgICAgICAgICAgICAgICAgJGV2X3RhbGx5WyRmYWtlcm93Wyd1 UG9zdGVkJ11dID0gKGlzc2V0KCRldl90YWxseVskZmFrZXJvd1sndVBvc3RlZCddXSkpID8g JGV2X3RhbGx5WyRmYWtlcm93Wyd1UG9zdGVkJ11dKzEgOiAxOwogICAgICAgICAgICAgICAg fQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJHJlY3VyKSB7CiAgICAg ICAgICAgICRmbGFncyA9IGFycmF5KCdyZWN1cmZpcnN0Jyk7CiAgICAgICAgICAgICRmcmVx ID0gZG9fbGlzdCgkcm93WyRzdGVwZmllbGRdKTsKICAgICAgICAgICAgJG1vbnRobHkgPSBm YWxzZTsKICAgICAgICAgICAgJGN1cnJtb250aCA9ICRldl9tb250aDsKICAgICAgICAgICAg JGN1cnJ5ZWFyID0gJGV2X3llYXI7CiAgICAgICAgICAgIGZvcmVhY2ggKCRmcmVxIGFzICRp bnRlcnZhbCkgewogICAgICAgICAgICAgICAgJGZha2Vyb3cgPSAkcm93OwogICAgICAgICAg ICAgICAgJGNzdGFtcCA9ICRldl9wb3N0ZWQ7CiAgICAgICAgICAgICAgICBmb3IoJGlkeCA9 IDA7ICRpZHggPCA5OTk5OTsgJGlkeCsrKSB7CiAgICAgICAgICAgICAgICAgICAgJGxzdGFt cCA9ICRjc3RhbXA7CiAgICAgICAgICAgICAgICAgICAgaWYgKChpc3NldCgkZXZfdGFsbHlb JHJvd1sndVBvc3RlZCddXSkgJiYgKCRldl90YWxseVskcm93Wyd1UG9zdGVkJ11dID49ICRl dmVudGxpbWl0WzBdKSkgfHwgKCR0byAmJiAkY3N0YW1wID4gc2FmZV9zdHJ0b3RpbWUoJHRv KSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgICAgICAgICRpdmFsID0gc3RyX3JlcGxhY2UoIj9tb250aCIs IGRhdGUoJ0YnLCBta3RpbWUoMCwwLDAsJGN1cnJtb250aCwxKSksICRpbnRlcnZhbCk7CiAg ICAgICAgICAgICAgICAgICAgJGl2YWwgPSBzdHJfcmVwbGFjZSgiP3llYXIiLCAkY3Vycnll YXIsICRpdmFsKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnBvcygkaXZhbCwgImxh c3QiKSA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAkaXZhbCA9IGRhdGUoImws IEYgalMgWSIsIHN0cnRvdGltZSggJGl2YWwsIG1rdGltZSgxMiwgMCwgMCwgZGF0ZSgibiIs IG1rdGltZSgwLDAsMCwkY3Vycm1vbnRoLDEsJGN1cnJ5ZWFyKSkrMSwgMSwgJGN1cnJ5ZWFy KSApKTsKICAgICAgICAgICAgICAgICAgICAgICAgJG1vbnRobHkgPSB0cnVlOwogICAgICAg ICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RycG9zKCRpdmFsLCAiZmlyc3QiKSA9PT0gMCkg ewogICAgICAgICAgICAgICAgICAgICAgICAkaXZhbCA9IGRhdGUoImwsIEYgalMgWSIsIHN0 cnRvdGltZSggJGl2YWwsIG1rdGltZSgxMiwgMCwgMCwgKCgkY3Vycm1vbnRoPjEpID8gJGN1 cnJtb250aC0xIDogMTIpLCBkYXRlKCJ0IiwgbWt0aW1lKDAsMCwwLCRjdXJybW9udGgtMSwx LCgoJGN1cnJtb250aD09MSkgPyAkY3VycnllYXItMTogJGN1cnJ5ZWFyKSkgKSwgKCgkY3Vy cm1vbnRoPT0xKSA/ICRjdXJyeWVhci0xOiAkY3VycnllYXIpKSApKTsKICAgICAgICAgICAg ICAgICAgICAgICAgJG1vbnRobHkgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0gZWxz ZSBpZiAoc3RycG9zKCRpdmFsLCAidGhpcyIpID09PSAwKSB7CiAgICAgICAgICAgICAgICAg ICAgICAgICRtb250aGx5ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICAgICAgaWYgKHN0cnBvcygkaW50ZXJ2YWwsICI/bW9udGgiKSB8fCBzdHJwb3Mo JGludGVydmFsLCAiP3llYXIiKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkbW9udGhs eSA9IHRydWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICgk bW9udGhseSkgewogICAgICAgICAgICAgICAgICAgICAgICAkY3N0YW1wID0gc3RydG90aW1l KCRpdmFsKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg ICAgICAgICAkY3N0YW1wID0gc3RydG90aW1lKCRpdmFsLCAkY3N0YW1wKTsKICAgICAgICAg ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vIFRoaXMga2x1ZGdlIHRha2Vz IGFjY291bnQgb2YgdGltZXN0YW1wcyBsaWtlICJsYXN0IFRodXJzZGF5IiAob2YgdGhlIG1v bnRoKS4gVGhlIGxhc3QgJ3doYXRldmVyIGRheScgb2YKICAgICAgICAgICAgICAgICAgICAv LyBhIG1vbnRoIGNhbiBvbmx5IGJlIGEgbWF4aW11bSBvZiAzMSBkYXlzIGJlZm9yZSB0aGUg bGFzdCB0aW1lc3RhbXAgd2Ugc2F3LCBzbyBjaGVjayBmb3IgdGhhdCAoKy8tIDEwIG1pbnMp CiAgICAgICAgICAgICAgICAgICAgJGRpZmZzdGFtcCA9ICRjc3RhbXAgLSAkbHN0YW1wOwog ICAgICAgICAgICAgICAgICAgIGlmICgkZGlmZnN0YW1wIDwgMCkgewogICAgICAgICAgICAg ICAgICAgICAgICBpZiAoJGRpZmZzdGFtcCA+IC0oNjAqNjAqMjQqMzEpKzYwMCkgewogICAg ICAgICAgICAgICAgICAgICAgICAgICAgJGNzdGFtcCA9IGZhbHNlOyAvLyBTb21lICdsYXN0 IHdlZWtkYXknIG9mIHRoZSBwcmV2aW91cyBtb250aAogICAgICAgICAgICAgICAgICAgICAg ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIFBIUF9J TlRfTUFYIGV4Y2VlZGVkCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCRjc3RhbXAgIT09IGZhbHNlKSB7 CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcgPiAxKSB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkbXAoIklOVEVSVkFMOiAiLiAkY3N0YW1wIC4gJyAvLyAnIC5k YXRlKCdkLU0tWSBIOmk6cycsICRjc3RhbXApKTsKICAgICAgICAgICAgICAgICAgICAgICAg fQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgkY3N0YW1wIDwgJGV2X2V4cGlyZXMg fHwgJGV2X2V4cGlyZXMgPT0gJzAnKSAmJiAoJGNzdGFtcCAhPSAkZXZfcG9zdGVkKSkgewog ICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNob3dfbWUgPSBzbWRfaW5jbHVkZV9ldmVu dCgkY3N0YW1wLCAkbm93LCAkaWdub3JlLCAkdGltZSwgJGZyb20sICR0bywgJG1vbnRoKTsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2hvd19tZSkgewogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICRmbGFnc1tdID0gJ3JlY3VyJzsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAkZmFrZXJvd1snUG9zdGVkJ10gPSBkYXRlKCJZLW0tZCBI Omk6cyIsICRjc3RhbXApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmYWtl cm93Wyd1UG9zdGVkJ10gPSAkY3N0YW1wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICRhbGxfZXZzW10gPSBhcnJheSgnZXYnID0+ICRmYWtlcm93LCAnZmxhZ3MnID0+ICRm bGFncyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2X3RhbGx5WyRyb3db J3VQb3N0ZWQnXV0gPSAoaXNzZXQoJGV2X3RhbGx5WyRyb3dbJ3VQb3N0ZWQnXV0pKSA/ICRl dl90YWxseVskcm93Wyd1UG9zdGVkJ11dKzEgOiAxOwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICRmbGFncyA9IGFycmF5KCk7IC8vIHJlc2V0IHNvIHJlY3VyZmlyc3QgaXMg cmVtb3ZlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICAgICAgLy8gSW5jcmVtZW50IHRoZSBtb250aC95ZWFyIHJlYWR5IGZvciB0aGUg bmV4dCBpbnRlcnZhbAogICAgICAgICAgICAgICAgICAgIGlmICgkbW9udGhseSkgewogICAg ICAgICAgICAgICAgICAgICAgICAkY3VycnllYXIgPSAoJGN1cnJtb250aD09MTIpID8gJGN1 cnJ5ZWFyKzEgOiAkY3VycnllYXI7CiAgICAgICAgICAgICAgICAgICAgICAgICRjdXJybW9u dGggPSAoJGN1cnJtb250aD09MTIpID8gMSA6ICRjdXJybW9udGgrMTsKICAgICAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoJGRlYnVn PjEpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGV2X3RhbGx5WyRyb3dbJ3VQ b3N0ZWQnXV0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRtcCgiVEFMTFk6ICIuICRl dl90YWxseVskcm93Wyd1UG9zdGVkJ11dKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKCRhbGxzcGFu bmVkICYmIGRhdGUoIlktTS1kIiwgJGV2X2V4cGlyZXMpICE9IGRhdGUoIlktTS1kIiwgJGV2 X3Bvc3RlZCkpIHsKICAgICAgICAgICAgJHBvc3RkYXRlID0gZGF0ZSgiWS1NLWQgSDppOnMi LCAkZXZfcG9zdGVkKTsKICAgICAgICAgICAgJGZha2VfZGlmZiA9IHNhZmVfc3RydG90aW1l KGRhdGUoIlktTS1kIiwgJGV2X2V4cGlyZXMpIC4gIiAyMzo1OTo1OSIpOwogICAgICAgICAg ICAkZGlmZiA9ICgkZXZfZXhwaXJlcz09MCkgPyAwIDogJGZha2VfZGlmZiAtICRldl9wb3N0 ZWQ7CiAgICAgICAgICAgICRzcGlkdGggPSBjZWlsKCRkaWZmIC8gKDYwKjYwKjI0KSk7IC8v IGRheXMgYmV0d2VlbiBkYXRlcwogICAgICAgICAgICBmb3IgKCRqZHggPSAxOyAkamR4IDwg JHNwaWR0aDsgJGpkeCsrKSB7CiAgICAgICAgICAgICAgICAkZmxhZ3MgPSBhcnJheSgpOwog ICAgICAgICAgICAgICAgJHRtID0gc2FmZV9zdHJ0b3RpbWUoJHBvc3RkYXRlLicrJy4kamR4 LicgZGF5cycpOwogICAgICAgICAgICAgICAgJHNob3dfbWUgPSBzbWRfaW5jbHVkZV9ldmVu dCgkdG0sICRub3csICRpZ25vcmUsICR0aW1lLCAkZnJvbSwgJHRvLCAkbW9udGgpOwogICAg ICAgICAgICAgICAgaWYgKCRzaG93X21lKSB7CiAgICAgICAgICAgICAgICAgICAgJGZsYWdz W10gPSAoJGpkeD09JHNwaWR0aC0xKSA/ICdtdWx0aWxhc3QnIDogJ211bHRpJzsKICAgICAg ICAgICAgICAgICAgICAkZmFrZXJvdyA9ICRyb3c7CiAgICAgICAgICAgICAgICAgICAgJGZh a2Vyb3dbJ1Bvc3RlZCddID0gZGF0ZSgiWS1tLWQgSDppOnMiLCAkdG0pOwogICAgICAgICAg ICAgICAgICAgICRmYWtlcm93Wyd1UG9zdGVkJ10gPSAkdG07CiAgICAgICAgICAgICAgICAg ICAgJGFsbF9ldnNbXSA9IGFycmF5KCdldicgPT4gJGZha2Vyb3csICdmbGFncycgPT4gJGZs YWdzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0K CiAgICBpZiAoJGRlYnVnPjIpIHsKICAgICAgICBlY2hvICIrKyBQUkUtU09SVEVEICsrIjsK ICAgICAgICBkbXAoJGFsbF9ldnMpOwogICAgfQoKICAgIC8vIE1ha2UgdXAgYW4gYXJyYXlf bXVsdGlzb3J0IGFyZyBsaXN0IGFuZCBleGVjdXRlIGl0CiAgICBmb3JlYWNoKCRhbGxfZXZz IGFzICRrZXkgPT4gJGVudHJ5KSB7CiAgICAgICAgJHJvdyA9ICRlbnRyeVsnZXYnXTsKICAg ICAgICBmb3JlYWNoICgkcm93IGFzICRpZGVudGlmaWVyID0+ICRpdGVtKSB7CiAgICAgICAg ICAgICR2YXJuYW1lID0gImNvbF8iLiRpZGVudGlmaWVyOwogICAgICAgICAgICAkeyR2YXJu YW1lfVska2V5XSA9ICRpdGVtOwogICAgICAgIH0KICAgIH0KICAgIGlmKGNvdW50KCRhbGxf ZXZzKSA+IDApIHsKICAgICAgICBmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJHNvcnRP cmRlcik7ICRpZHgrKykgewogICAgICAgICAgICAkc29ydGFyZ3NbXSA9ICckY29sXycuJHNv cnRPcmRlclskaWR4XVsnYnknXTsKICAgICAgICAgICAgJHNvcnRhcmdzW10gPSAkc29ydE9y ZGVyWyRpZHhdWydkaXInXTsKICAgICAgICB9CiAgICAgICAgJHNvcnRpdCA9ICdhcnJheV9t dWx0aXNvcnQoJy5pbXBsb2RlKCIsICIsJHNvcnRhcmdzKS4nLCAkYWxsX2V2cyk7JzsKICAg ICAgICBldmFsKCRzb3J0aXQpOwogICAgfQoKICAgIGlmICgkZGVidWc+MikgewogICAgICAg IGVjaG8gIisrIFBPU1QtU09SVEVEICsrIjsKICAgICAgICBkbXAoJGFsbF9ldnMpOwogICAg fQoKICAgIC8vIEhhbmRsZSBwYWdpbmcKICAgIGlmICgkcGFnaW5nKSB7CiAgICAgICAgJGdy YW5kX3RvdGFsID0gY291bnQoJGFsbF9ldnMpOwogICAgICAgICR0b3RhbCA9ICRncmFuZF90 b3RhbCAtICRvZmZzZXQ7CiAgICAgICAgJG51bVBhZ2VzID0gY2VpbCgkdG90YWwvJHBhZ2Vi eSk7CiAgICAgICAgJHBnID0gKCEkcHJldGV4dFsncGcnXSkgPyAxIDogJHByZXRleHRbJ3Bn J107CiAgICAgICAgJHBnb2Zmc2V0ID0gJG9mZnNldCArICgoJHBnIC0gMSkgKiAkcGFnZWJ5 KTsKICAgICAgICAvLyBzZW5kIHBhZ2luZyBpbmZvIHRvIHR4cDpuZXdlciBhbmQgdHhwOm9s ZGVyCiAgICAgICAgJHBhZ2VvdXRbJ3BnJ10gPSAkcGc7CiAgICAgICAgJHBhZ2VvdXRbJ251 bVBhZ2VzJ10gPSAkbnVtUGFnZXM7CiAgICAgICAgJHBhZ2VvdXRbJ3MnXSA9ICRwcmV0ZXh0 WydzJ107CiAgICAgICAgJHBhZ2VvdXRbJ2MnXSA9ICRwcmV0ZXh0WydjJ107CiAgICAgICAg JHBhZ2VvdXRbJ2dyYW5kX3RvdGFsJ10gPSAkZ3JhbmRfdG90YWw7CiAgICAgICAgJHBhZ2Vv dXRbJ3RvdGFsJ10gPSAkdG90YWw7CgogICAgICAgIGlmIChlbXB0eSgkdGhpc3BhZ2UpKQog ICAgICAgICAgICAkdGhpc3BhZ2UgPSAkcGFnZW91dDsKICAgICAgICBpZiAoJHBnb25seSkK ICAgICAgICAgICAgcmV0dXJuOwogICAgfSBlbHNlIHsKICAgICAgICAkcGdvZmZzZXQgPSAk b2Zmc2V0OwogICAgfQoKICAgIC8vIFBoYXNlIDM6IGl0ZXJhdGUgb3ZlciB0aGUgbmV3IGFy cmF5IG9iZXlpbmcgYW55IG9mZnNldC9saW1pdC4gQW55dGhpbmcgaW4gdGhlIHJhbmdlIGdl dHMgcG9wdWxhdGVkIGFuZCBwYXJzZWQKICAgICRvdXQgPSBhcnJheSgpOwogICAgJGN0ciA9 IDA7CiAgICBhcnRpY2xlX3B1c2goKTsKICAgICRsYXN0cG9zdGVkID0gMDsKICAgIGZvcmVh Y2ggKCRhbGxfZXZzIGFzICRpZHggPT4gJGVudHJ5KSB7CiAgICAgICAgJHNtZF9jYWxfZmxh ZyA9IGFycmF5KCk7CiAgICAgICAgJHNtZF9kYXRlID0gYXJyYXkoKTsKICAgICAgICAkc21k X2V2ZW50aW5mbyA9IGFycmF5KCk7CgogICAgICAgIGlmICgkaWR4ID49ICRwZ29mZnNldCAm JiAkY3RyIDwgJGxpbWl0KSB7CiAgICAgICAgICAgICRyb3cgPSAkZW50cnlbJ2V2J107Cgog ICAgICAgICAgICAkc21kX2NhbF9mbGFnID0gJGVudHJ5WydmbGFncyddOwoKICAgICAgICAg ICAgJHRoaXNwb3N0ZWQgPSBkYXRlKCdZLW0tZCcsICRyb3dbJ3VQb3N0ZWQnXSk7CiAgICAg ICAgICAgICRuZXh0cG9zdGVkID0gaXNzZXQoJGFsbF9ldnNbJ2V2J11bJGlkeCsxXSkgPyBk YXRlKCdZLW0tZCcsICRhbGxfZXZzWydldiddWyRpZHgrMV1bJ3VQb3N0ZWQnXSkgOiAwOwoK ICAgICAgICAgICAgLy8gQWRqdXN0IHRpbWVzIHNvIHR4cDpwb3N0ZWQvZXhwaXJlcyByZXR1 cm4gY29ycmVjdCBzdGFtcHMKICAgICAgICAgICAgJHJvd1snUG9zdGVkJ10gPSAkcm93WydQ b3N0ZWQnXS10el9vZmZzZXQoc3RydG90aW1lKCRyb3dbJ1Bvc3RlZCddKSk7CiAgICAgICAg ICAgICRyb3dbJ3VQb3N0ZWQnXSA9ICRyb3dbJ3VQb3N0ZWQnXS10el9vZmZzZXQoJHJvd1sn dVBvc3RlZCddKTsKICAgICAgICAgICAgJHJvd1snRXhwaXJlcyddID0gKCRyb3dbJ3VFeHBp cmVzJ10gPT0gMCkgPyAnMDAwMC0wMC0wMCAwMDowMDowMCcgOiAkcm93WydFeHBpcmVzJ10t dHpfb2Zmc2V0KHN0cnRvdGltZSgkcm93WydFeHBpcmVzJ10pKTsKICAgICAgICAgICAgJHJv d1sndUV4cGlyZXMnXSA9ICgkcm93Wyd1RXhwaXJlcyddID09IDApID8gMCA6ICRyb3dbJ3VF eHBpcmVzJ10tdHpfb2Zmc2V0KCRyb3dbJ3VFeHBpcmVzJ10pOwoKICAgICAgICAgICAgLy8g UG9wdWxhdGUgYWRkaXRpb25hbCBldmVudCBpbmZvcm1hdGlvbgogICAgICAgICAgICAkZmFr ZXN0YW1wID0gKCRyb3dbJ3VFeHBpcmVzJ10gPT0gMCkgPyAwIDogc3RydG90aW1lKGRhdGUo IlktTS1kIiwgJHJvd1sndUV4cGlyZXMnXSkgLiAiIDIzOjU5OjU5Iik7CiAgICAgICAgICAg ICRzbWRfZXZlbnRpbmZvWydkdXJhdGlvbiddID0gKCRyb3dbJ3VFeHBpcmVzJ10gPT0gMCkg PyAwIDogJHJvd1sndUV4cGlyZXMnXSAtICRyb3dbJ3VQb3N0ZWQnXTsKICAgICAgICAgICAg JHNtZF9ldmVudGluZm9bJ2R1cmF0aW9uZGF5cyddID0gKCRmYWtlc3RhbXApID8gY2VpbCgo JGZha2VzdGFtcCAtICRyb3dbJ3VQb3N0ZWQnXSkgLyAoNjAqNjAqMjQpKSA6IDA7CiAgICAg ICAgICAgICRzbWRfZGF0ZVsneSddID0gc3RyZnRpbWUoJyVZJywgJHJvd1sndVBvc3RlZCdd KTsKICAgICAgICAgICAgJHNtZF9kYXRlWydtJ10gPSBzdHJmdGltZSgnJW0nLCAkcm93Wyd1 UG9zdGVkJ10pOwogICAgICAgICAgICAkc21kX2RhdGVbJ2QnXSA9IChpbnQpc3RyZnRpbWUo JyVkJywgJHJvd1sndVBvc3RlZCddKTsKICAgICAgICAgICAgJHNtZF9kYXRlWyd3J10gPSBz dHJmdGltZShzbWRfY2FsX3JlZm9ybWF0X3dpbignJVYnLCAkcm93Wyd1UG9zdGVkJ10pLCAk cm93Wyd1UG9zdGVkJ10pOwogICAgICAgICAgICAkc21kX2RhdGVbJ2l5J10gPSBzdHJmdGlt ZShzbWRfY2FsX3JlZm9ybWF0X3dpbignJUcnLCAkcm93Wyd1UG9zdGVkJ10pLCAkcm93Wyd1 UG9zdGVkJ10pOwogICAgICAgICAgICBpZiAoJHJvd1sndUV4cGlyZXMnXSA9PSAwKSB7CiAg ICAgICAgICAgICAgICAkc21kX2RhdGVbJ2V4cHknXSA9ICRzbWRfZGF0ZVsnZXhwbSddID0g JHNtZF9kYXRlWydleHBkJ10gPSAkc21kX2RhdGVbJ2V4cHcnXSA9ICRzbWRfZGF0ZVsnZXhw aXknXSA9ICcnOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHNtZF9k YXRlWydleHB5J10gPSBzdHJmdGltZSgnJVknLCAkcm93Wyd1RXhwaXJlcyddKTsKICAgICAg ICAgICAgICAgICRzbWRfZGF0ZVsnZXhwbSddID0gc3RyZnRpbWUoJyVtJywgJHJvd1sndUV4 cGlyZXMnXSk7CiAgICAgICAgICAgICAgICAkc21kX2RhdGVbJ2V4cGQnXSA9IChpbnQpc3Ry ZnRpbWUoJyVkJywgJHJvd1sndUV4cGlyZXMnXSk7CiAgICAgICAgICAgICAgICAkc21kX2Rh dGVbJ2V4cHcnXSA9IHN0cmZ0aW1lKHNtZF9jYWxfcmVmb3JtYXRfd2luKCclVicsICRyb3db J3VFeHBpcmVzJ10pLCAkcm93Wyd1RXhwaXJlcyddKTsKICAgICAgICAgICAgICAgICRzbWRf ZGF0ZVsnZXhwaXknXSA9IHN0cmZ0aW1lKHNtZF9jYWxfcmVmb3JtYXRfd2luKCclRycsICRy b3dbJ3VFeHBpcmVzJ10pLCAkcm93Wyd1RXhwaXJlcyddKTsKICAgICAgICAgICAgfQogICAg ICAgICAgICBwb3B1bGF0ZUFydGljbGVEYXRhKCRyb3cpOwogICAgICAgICAgICAkdGhpc2Fy dGljbGVbJ2lzX2ZpcnN0J10gPSAoJHRoaXNwb3N0ZWQgIT0gJGxhc3Rwb3N0ZWQpOwogICAg ICAgICAgICAkdGhpc2FydGljbGVbJ2lzX2xhc3QnXSA9ICgkdGhpc3Bvc3RlZCAhPSAkbmV4 dHBvc3RlZCk7CiAgICAgICAgICAgICRsYXN0cG9zdGVkID0gJHRoaXNwb3N0ZWQ7CiAgICAg ICAgICAgICRvdXRbXSA9ICgkdGhpbmcpID8gcGFyc2UoJHRoaW5nKSA6ICgoJGZvcm0pID8g cGFyc2VfZm9ybSgkZm9ybSkgOiBocmVmKCRyb3dbJ1Bvc3RlZCddLCBwZXJtbGlua3VybCgk cm93KSwgJyB0aXRsZT0iJy4kcm93WydUaXRsZSddLiciJykgKTsKICAgICAgICAgICAgJGN0 cisrOwogICAgICAgIH0KICAgIH0KICAgIGFydGljbGVfcG9wKCk7CiAgICByZXR1cm4gZG9X cmFwKCRvdXQsICR3cmFwdGFnLCAkYnJlYWssICRjbGFzcyk7Cn0KCi8vIFRyeSBhbmQgb3V0 cHV0ICJuaWNlIiBkYXRlcyB0aGF0IHJlYWQgd2VsbCBhY3Jvc3MgbW9udGgveWVhciBib3Vu ZGFyaWVzLgovLyBGb3IgZXhhbXBsZTogMjggTWF5IC0gMDUgSnVuIDIwMTEgb3IgTWF5IDEx LTE2IDIwMTEsIGRlcGVuZGluZyBvbiBmb3JtYXQKZnVuY3Rpb24gc21kX2V2ZW50X2R1cmF0 aW9uKCRhdHRzKQp7CiAgICBleHRyYWN0KGxBdHRzKGFycmF5KAogICAgICAgICdzdGFydCcg ICAgID0+IHBvc3RlZChhcnJheSgnZm9ybWF0JyA9PiAnJXMnKSksCiAgICAgICAgJ2VuZCcg ICAgICAgPT4gZXhwaXJlcyhhcnJheSgnZm9ybWF0JyA9PiAnJXMnKSksCiAgICAgICAgJ2Zv cm1hdCcgICAgPT4gJyVkICViICVZJywKICAgICAgICAnc2VwYXJhdG9yJyA9PiAnICZuZGFz aDsgJywKICAgICAgICAnZGVidWcnICAgICA9PiAwLAogICAgKSwgJGF0dHMpKTsKCiAgICAv LyBFeHRyYWN0IHRoZSByZWxldmFudCBwb3J0aW9ucyBvZiB0aGUgZm9ybWF0IHNvIHdlIGNh biBtdWNrIGFib3V0IHdpdGggdGhlbQogICAgcHJlZ19tYXRjaF9hbGwoJy9cJShbZGVqYkJt aGdHeVldKS8nLCAkZm9ybWF0LCAkbWF0Y2hlcyk7CgogICAgJGluZGV4ZXMgPSBhcnJheSgn ZGF5JyA9PiAnJywgJ21vbnRoJyA9PiAnJywgJ3llYXInID0+ICcnKTsKICAgIGZvcmVhY2go JG1hdGNoZXNbMV0gYXMgJGlkeCA9PiAkdG9rZW4pIHsKICAgICAgICBzd2l0Y2ggKCR0b2tl bikgewogICAgICAgICAgICBjYXNlICdkJzoKICAgICAgICAgICAgY2FzZSAnZSc6CiAgICAg ICAgICAgIGNhc2UgJ2onOgogICAgICAgICAgICAgICAgJGluZGV4ZXNbJ2RheSddID0gJGlk eDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdiJzoKICAgICAg ICAgICAgY2FzZSAnQic6CiAgICAgICAgICAgIGNhc2UgJ20nOgogICAgICAgICAgICBjYXNl ICdoJzoKICAgICAgICAgICAgICAgICRpbmRleGVzWydtb250aCddID0gJGlkeDsKICAgICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdnJzoKICAgICAgICAgICAgY2Fz ZSAnRyc6CiAgICAgICAgICAgIGNhc2UgJ3knOgogICAgICAgICAgICBjYXNlICdZJzoKICAg ICAgICAgICAgICAgICRpbmRleGVzWyd5ZWFyJ10gPSAkaWR4OwogICAgICAgICAgICAgICAg YnJlYWs7CiAgICAgICAgfQogICAgfQoKICAgICRkYXlfZmlyc3QgPSAoJGluZGV4ZXNbJ2Rh eSddIDwgJGluZGV4ZXNbJ21vbnRoJ10pOwogICAgJHllYXJfZmlyc3QgPSAoJGluZGV4ZXNb J3llYXInXSA9PSAwKTsKICAgICRoYXNfeWVhciA9IGZhbHNlOwoKICAgIGlmICgkZW5kKSB7 CiAgICAgICAgaWYgKHN0cmZ0aW1lKCclWSAlbSAlZCcsICRzdGFydCkgPT0gc3RyZnRpbWUo JyVZICVtICVkJywkZW5kKSkgewogICAgICAgICAgICAgLy8gYmVnaW4gYW5kIGVuZCBvbiBz YW1lIGRheQogICAgICAgICAgICAgJHNfZm9ybWF0ID0gJyc7CiAgICAgICAgICAgICAkZV9m b3JtYXQgPSAkZm9ybWF0OwogICAgICAgICAgICAgJGhhc195ZWFyID0gdHJ1ZTsKICAgICAg ICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKHN0cmZ0aW1lKCclWScsICRzdGFydCkgPT0g c3RyZnRpbWUoJyVZJywgJGVuZCkpIHsKICAgICAgICAgICAgICAgIC8vIHNhbWUgeWVhcgog ICAgICAgICAgICAgICAgaWYgKHN0cmZ0aW1lKCclbScsICRzdGFydCkgPT0gc3RyZnRpbWUo JyVtJywgJGVuZCkpIHsKICAgICAgICAgICAgICAgICAgICAvLyBhbmQgc2FtZSBtb250aAog ICAgICAgICAgICAgICAgICAgICRyZTEgPSAoJGRheV9maXJzdCkgPyAnL1wlW2JCbWhnR3lZ XS8nIDogJy9cJVtnR3lZXS8nOwogICAgICAgICAgICAgICAgICAgICRyZTIgPSAoJGRheV9m aXJzdCkgPyAnL1wlW2dHeVldLycgOiAnL1wlW2JCbWhnR3lZXS8nOwoKICAgICAgICAgICAg ICAgICAgICAkc19mb3JtYXQgPSB0cmltKHByZWdfcmVwbGFjZSgkcmUxLCAnJywgJGZvcm1h dCkpOwogICAgICAgICAgICAgICAgICAgICRlX2Zvcm1hdCA9ICgkcmUyKSA/IHRyaW0ocHJl Z19yZXBsYWNlKCRyZTIsICcnLCAkZm9ybWF0KSkgOiAkZm9ybWF0OwogICAgICAgICAgICAg ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBub3Qgc2FtZSBtb250aAogICAg ICAgICAgICAgICAgICAgICRzX2Zvcm1hdCA9ICRlX2Zvcm1hdCA9IHRyaW0ocHJlZ19yZXBs YWNlKCcvXCVbZ0d5WV0vJywgJycsICRmb3JtYXQpKTsKICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIGRpZmZlcmVudCB5ZWFyCiAg ICAgICAgICAgICAgICAkc19mb3JtYXQgPSAkZV9mb3JtYXQgPSAkZm9ybWF0OwogICAgICAg ICAgICAgICAgJGhhc195ZWFyID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAk c19mb3JtYXQgLj0gJHNlcGFyYXRvcjsKICAgICAgICB9CgogICAgICAgIC8vIEFkZCB0aGUg eWVhciBiYWNrIGluIHRoZSBjb3JyZWN0IHBvc2l0aW9uCiAgICAgICAgJHNfZm9ybWF0ID0g KCRoYXNfeWVhcikgPyAkc19mb3JtYXQgOiAoKCR5ZWFyX2ZpcnN0KSA/ICRtYXRjaGVzWzBd WyRpbmRleGVzWyd5ZWFyJ11dIC4gJyAnIC4gJHNfZm9ybWF0IDogJHNfZm9ybWF0KTsKICAg ICAgICAkZV9mb3JtYXQgPSAoJGhhc195ZWFyKSA/ICRlX2Zvcm1hdCA6ICgoJHllYXJfZmly c3QpID8gJGVfZm9ybWF0IDogJGVfZm9ybWF0IC4gJyAnIC4gJG1hdGNoZXNbMF1bJGluZGV4 ZXNbJ3llYXInXV0pOwogICAgfSBlbHNlIHsKICAgICAgICAkc19mb3JtYXQgPSAkZm9ybWF0 OwogICAgICAgICRlX2Zvcm1hdCA9Jyc7CiAgICB9CgogICAgcmV0dXJuICgoJHNfZm9ybWF0 KSA/IHN0cmZ0aW1lKCRzX2Zvcm1hdCwgJHN0YXJ0KSA6ICcnKSAuICgoJGVfZm9ybWF0KSA/ IHN0cmZ0aW1lKCRlX2Zvcm1hdCwgJGVuZCkgOiAnJyk7Cn0KCi8vIEFuIHVub3B0aW1pemVk IHdvcmthcm91bmQgd2hlbiAiJVYiIGFuZCAiJUciIGZhaWxzICh1c3VhbGx5IG9uIFdpbmRv d3MpCi8vIEFsZ29yaXRobSBhZGFwdGVkIGZyb20gaHR0cDovL3d3dy5wZXJzb25hbC5lY3Uu ZWR1L21jY2FydHlyL0lTT3dkQUxHLnR4dCB3aXRoIHRoYW5rcy4KLy8gQWxsIG90aGVyIHNo b3J0Y3V0IGFsZ29yaXRobXMgZmFpbGVkIGVkZ2UgY2FzZXMKZnVuY3Rpb24gc21kX2NhbF9p c29fd2VlaygkZm9ybWF0ID0gJyVWJywgJHRpbWUgPSBudWxsKQp7CiAgICBpZiAoISR0aW1l KSAkdGltZSA9IHRpbWUoKTsKCiAgICAkeXIgPSBzdHJmdGltZSgiJVkiLCAkdGltZSk7CiAg ICAkbGVhcCA9ICggKCAoJHlyICUgNCA9PSAwKSAmJiAoJHlyICUgMTAwICE9IDApICkgfHwg JHlyICUgNDAwID09IDAgKTsKICAgICRsZWFwX3ByZXYgPSAoICggKCgkeXItMSkgJSA0ID09 IDApICYmICgoJHlyLTEpICUgMTAwICE9IDApICkgfHwgKCR5ci0xKSAlIDQwMCA9PSAwICk7 CiAgICAkZGF5X29mX3llYXIgPSBzdHJmdGltZSgnJWonLCAkdGltZSk7CgogICAgLy8gRmlu ZCB0aGUgd2Vla2RheSBvZiBKYW4gMXN0IGluIHRoZSBnaXZlbiB5ZWFyCiAgICAkeXkgPSAo JHlyIC0gMSkgJSAxMDA7CiAgICAkYyA9ICgkeXIgLSAxKSAtICR5eTsKICAgICRnID0gJHl5 ICsgKCR5eSAvIDQpOwogICAgJGphbjF3ZWVrZGF5ID0gMSArICgoKCgoJGMgLyAxMDApICUg NCkgKiA1KSArICRnKSAlIDcpOwoKICAgIC8vIEZpbmQgd2Vla2RheSAoIGNvdWxkIHVzZTog JHdlZWtkYXkgPSBzdHJmdGltZSgnJXUnLCAkdGltZSk7ICkKICAgICRoID0gJGRheV9vZl95 ZWFyICsgKCRqYW4xd2Vla2RheSAtIDEpOwogICAgJHdlZWtkYXkgPSAxICsgKCAoJGggLSAx KSAlIDcpOwoKICAgIC8vIEZpbmQgaWYgJHRpbWUgZmFsbHMgaW4gaXNvX3llYXIgWS0xLCBp c29fd2VlayA1MiBvciA1MwogICAgaWYgKCgkZGF5X29mX3llYXIgPD0gKDggLSAkamFuMXdl ZWtkYXkpKSAmJiAkamFuMXdlZWtkYXkgPiA0KSB7CiAgICAgICAgJGlzb195ZWFyID0gJHly IC0gMTsKICAgICAgICBpZiAoJGphbjF3ZWVrZGF5ID09IDUgfHwgKCRqYW4xd2Vla2RheSA9 PSA2ICYmICRsZWFwX3ByZXYpKSB7CiAgICAgICAgICAgICRpc29fd2VlayA9IDUzOwogICAg ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRpc29fd2VlayA9IDUyOwogICAgICAgIH0KICAg fSBlbHNlIHsKICAgICAgICAkaXNvX3llYXIgPSAkeXI7CiAgICB9CgogICAgLy8gRmluZCBp ZiAkdGltZSBmYWxscyBpbiBpc29feWVhciBZKzEsIGlzb193ZWVrIDEKICAgIGlmICgkaXNv X3llYXIgPT0gJHlyKSB7CiAgICAgICAgJGlkeCA9ICgkbGVhcCkgPyAzNjYgOiAzNjU7CiAg ICAgICAgaWYgKCAoJGlkeCAtICRkYXlfb2ZfeWVhcikgPCAoNCAtICR3ZWVrZGF5KSApIHsK ICAgICAgICAgICAgJGlzb195ZWFyID0gJHlyICsgMTsKICAgICAgICAgICAgJGlzb193ZWVr ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgLy8gRmluZCBpZiAkdGltZSBmYWxscyBpbiBp c29feWVhciBZLCBpc29fd2VlayAxIHRocnUgNTMKICAgIGlmICgkaXNvX3llYXIgPT0gJHly KSB7CiAgICAgICAgJGpkeCA9ICRkYXlfb2ZfeWVhciArICg3IC0gJHdlZWtkYXkpICsgKCRq YW4xd2Vla2RheSAtIDEpOwogICAgICAgICRpc29fd2VlayA9ICRqZHggLyA3OwogICAgICAg IGlmICgkamFuMXdlZWtkYXkgPiA0KSB7CiAgICAgICAgICAgICRpc29fd2Vlay0tOwogICAg ICAgIH0KICAgIH0KCiAgICAvLyBSZXBsYWNlbWVudCBhcnJheQogICAgJHJlcHMgPSBhcnJh eSgKICAgICAgICAnJVYnID0+IHN0cl9wYWQoJGlzb193ZWVrLCAyLCAnMCcsIFNUUl9QQURf TEVGVCksCiAgICAgICAgJyVHJyA9PiAkaXNvX3llYXIsCiAgICAgICAgJyVnJyA9PiBzdWJz dHIoJGlzb195ZWFyLCAyKSwKICAgICk7CiAgICByZXR1cm4gc3RydHIoJGZvcm1hdCwgJHJl cHMpOwp9CgovLyBBZGFwdGVkIGZyb206IGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9mdW5j dGlvbi5zdHJmdGltZS5waHAKZnVuY3Rpb24gc21kX2NhbF9yZWZvcm1hdF93aW4oJGZvcm1h dCwgJHRzID0gbnVsbCkKewogICAgLy8gT25seSBXaW4gcGxhdGZvcm1zIG5lZWQgYXBwbHkK ICAgIGlmICghaXNfd2luZG93cygpKSByZXR1cm4gJGZvcm1hdDsKICAgIGlmICghJHRzKSAk dHMgPSB0aW1lKCk7CgogICAgJG1hcHBpbmcgPSBhcnJheSgKICAgICAgICAnJUMnID0+IHNw cmludGYoIiUwMmQiLCBkYXRlKCJZIiwgJHRzKSAvIDEwMCksCiAgICAgICAgJyVEJyA9PiAn JW0vJWQvJXknLAogICAgICAgICclZScgPT4gc3ByaW50ZigiJScgMmQiLCBkYXRlKCJqIiwg JHRzKSksCiAgICAgICAgJyVGJyA9PiAnJVktJW0tJWQnLAogICAgICAgICclZycgPT4gc21k X2NhbF9pc29fd2VlaygnJWcnLCAkdHMpLAogICAgICAgICclRycgPT4gc21kX2NhbF9pc29f d2VlaygnJUcnLCAkdHMpLAogICAgICAgICclaCcgPT4gJyViJywKICAgICAgICAnJWwnID0+ IHNwcmludGYoIiUnIDJkIiwgZGF0ZSgiZyIsICR0cykpLAogICAgICAgICclbicgPT4gIlxu IiwKICAgICAgICAnJVAnID0+IGRhdGUoJ2EnLCAkdHMpLAogICAgICAgICclcicgPT4gZGF0 ZSgiaDppOnMiLCAkdHMpIC4gIiAlcCIsCiAgICAgICAgJyVSJyA9PiBkYXRlKCJIOmkiLCAk dHMpLAogICAgICAgICclcycgPT4gZGF0ZSgnVScsICR0cyksCiAgICAgICAgJyV0JyA9PiAi XHQiLAogICAgICAgICclVCcgPT4gJyVIOiVNOiVTJywKICAgICAgICAnJXUnID0+ICgkdyA9 IGRhdGUoInciLCAkdHMpKSA/ICR3IDogNywKICAgICAgICAnJVYnID0+IHNtZF9jYWxfaXNv X3dlZWsoJyVWJywgJHRzKSwKICAgICk7CiAgICAkZm9ybWF0ID0gc3RyX3JlcGxhY2UoCiAg ICAgICAgYXJyYXlfa2V5cygkbWFwcGluZyksCiAgICAgICAgYXJyYXlfdmFsdWVzKCRtYXBw aW5nKSwKICAgICAgICAkZm9ybWF0CiAgICApOwoKICAgIHJldHVybiAkZm9ybWF0Owp9Cgov LyBGaW5kIGlmIHRoZSBoYXlzdGFjayBjb250YWlucyBvbmUgb2YgdGhlIHZhbHVlcyBpbiBu ZWVkbGUuIElzIHRoZXJlIGEgY2xldmVyZXIgd2F5IHRvIGRvIHRoaXM/CmZ1bmN0aW9uIHNt ZF9jYWxfaW5fYXJyYXkoJG5lZWRsZSwgJGhheXN0YWNrKQp7CiAgICBmb3JlYWNoICgkaGF5 c3RhY2sgYXMgJHZhbCkgewogICAgICAgIGlmIChpbl9hcnJheSgkdmFsLCAkbmVlZGxlKSkg ewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4g ZmFsc2U7Cn0KCi8vIENoZWNrIHRoZSBwYXNzZWQgdGltZXN0YW1wIGFnYWluc3QgZXZlcnkg dGltZSByZXN0cmljdGlvbiBhbmQgcmV0dXJuIHRydWUgaWYgaXQgcGFzc2VzIHRoZW0gYWxs CmZ1bmN0aW9uIHNtZF9pbmNsdWRlX2V2ZW50KCR0cywgJG5vdywgJGlnbiwgJHRpbWUsICRm cm9tLCAkdG8sICRtb250aCkKewogICAgJHNob3cgPSBhcnJheSgpOwogICAgJHNob3dbXSA9 ICFpbl9hcnJheShkYXRlKCJkLU0tWSIsICR0cyksICRpZ24pOwogICAgJHRpbWUgPSBkb19s aXN0KCR0aW1lKTsKICAgICRzaG93b3IgPSBmYWxzZTsKICAgIGZvcmVhY2goJHRpbWUgYXMg JHRtKSB7CiAgICAgICAgc3dpdGNoKCR0bSkgewogICAgICAgICAgICBjYXNlICJhbnkiOgog ICAgICAgICAgICAgICAgJHNob3dvciA9IHRydWU7CiAgICAgICAgICAgICAgICBicmVhazsK ICAgICAgICAgICAgY2FzZSAiZnV0dXJlIjoKICAgICAgICAgICAgICAgICRzaG93b3IgPSAk c2hvd29yIHx8ICgoJHRzID4gJG5vdykgPyB0cnVlIDogZmFsc2UpOwogICAgICAgICAgICAg ICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInRvZGF5IjoKICAgICAgICAgICAgICAgICRz aG93b3IgPSAkc2hvd29yIHx8ICgoJHRzID49IHN0cnRvdGltZShkYXRlKCdZLW0tZCAwMDow MDowMCcsICRub3cpKSAmJiAkdHMgPD0gc3RydG90aW1lKGRhdGUoJ1ktbS1kIDIzOjU5OjU5 JywgJG5vdykpKSA/IHRydWUgOiBmYWxzZSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAg ICAgICAgICAgZGVmYXVsdCA6CiAgICAgICAgICAgICAgICAkc2hvd29yID0gJHNob3dvciB8 fCAoKCR0cyA8ICRub3cpID8gdHJ1ZSA6IGZhbHNlKTsKICAgICAgICAgICAgICAgIGJyZWFr OwogICAgICAgIH0KICAgIH0KICAgICRzaG93W10gPSAkc2hvd29yOwogICAgaWYgKCRmcm9t KSB7ICRzaG93W10gPSAoJHRzID49IHNhZmVfc3RydG90aW1lKCRmcm9tKSkgPyB0cnVlIDog ZmFsc2U7IH0KICAgIGlmICgkdG8pIHsgJHNob3dbXSA9ICgkdHMgPD0gc2FmZV9zdHJ0b3Rp bWUoJHRvKSkgPyB0cnVlIDogZmFsc2U7IH0KICAgIGlmICgkbW9udGgpIHsgJHNob3dbXSA9 IChkYXRlKCJZLW0iLCAkdHMpID09ICRtb250aCkgPyB0cnVlIDogZmFsc2U7IH0KCiAgICBy ZXR1cm4gKCFpbl9hcnJheSgwLCAkc2hvdykpID8gdHJ1ZSA6IGZhbHNlOwp9CgovLyBDb252 ZXJ0IGRhdGUgcmFuZ2VzIGxpa2UgMjQtT2N0LTA4ID0+IDUtTm92LTA4IHRvIGFuIGFycmF5 IG9mIGRpc2NyZXRlIGRhdGUgZW50aXRpZXMKLy8gQWxzbywgd2Vla2RheSB2YWxzIHN1Y2gg YXMge1N1bjpNb246V2VkfSB3b3VsZCByZXR1cm4gdGhvc2UgZGF5cyBiZXR3ZWVuICRzdGFy dCBhbmQgJGVuZApmdW5jdGlvbiBzbWRfZXhwYW5kX2RhdGVyYW5nZSgkcmFuZ2UsICRzdGFy dCA9ICcnLCAkZW5kID0gJycsICRmbXQgPSAnJXMnKQp7CiAgICAkb3V0ID0gYXJyYXkoKTsK ICAgICRybmcgPSBkb19saXN0KCRyYW5nZSwgIj0+Iik7CgogICAgaWYgKGNvdW50KCRybmcp ID4gMSkgewogICAgICAgIC8vIFJhbmdlIGV4cGFuc2lvbgogICAgICAgICRkaWZmID0gc2Fm ZV9zdHJ0b3RpbWUoJHJuZ1sxXSkgLSBzYWZlX3N0cnRvdGltZSgkcm5nWzBdKTsKICAgICAg ICAkZGlmZmRheXMgPSBjZWlsKCRkaWZmIC8gKDYwKjYwKjI0KSk7IC8vIGRheXMgYmV0d2Vl biBkYXRlcwogICAgICAgIGZvciAoJGpkeCA9IDA7ICRqZHggPD0gJGRpZmZkYXlzOyAkamR4 KyspIHsKICAgICAgICAgICAgJG91dFtdID0gc2FmZV9zdHJmdGltZSgkZm10LCBzYWZlX3N0 cnRvdGltZSgkcm5nWzBdIC4gKCgkamR4PT0wKSA/ICcnIDogJysnLiRqZHguJyBkYXlzJykp KTsKICAgICAgICB9CiAgICB9IGVsc2UgaWYgKCRzdGFydCAmJiAkZW5kICYmIHN0cnBvcygk cmFuZ2UsICd7JykgPT09IDAgJiYgc3RycG9zKCRyYW5nZSwgJ30nKSA9PT0gc3RybGVuKCRy YW5nZSktMSkgewogICAgICAgIC8vIERheSBvZiB3ZWVrIGV4cGFuc2lvbgogICAgICAgICRk YXlzID0gZG9fbGlzdCh0cmltKCRyYW5nZSwne30nKSwgJzonKTsKICAgICAgICAkZGlmZmRh eXMgPSBjZWlsKCgkZW5kLSRzdGFydCkgLyAoNjAqNjAqMjQpKTsKICAgICAgICBmb3IgKCRq ZHggPSAwOyAkamR4IDw9ICRkaWZmZGF5czsgJGpkeCsrKSB7CiAgICAgICAgICAgICR0bSA9 ICRzdGFydCArICgkamR4KjYwKjYwKjI0KTsKICAgICAgICAgICAgaWYgKGluX2FycmF5KGRh dGUoJ0QnLCAkdG0pLCAkZGF5cykpIHsKICAgICAgICAgICAgICAgICRvdXRbXSA9IHNhZmVf c3RyZnRpbWUoJGZtdCwgJHRtKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0gZWxz ZSB7CiAgICAgICAgLy8gU2luZ2xlIGRhdGUKICAgICAgICAkb3V0W10gPSBzYWZlX3N0cmZ0 aW1lKCRmbXQsIHNhZmVfc3RydG90aW1lKCRybmdbMF0pKTsKICAgIH0KICAgIHJldHVybiAk b3V0Owp9IjtzOjQ6InR5cGUiO3M6MToiMCI7czo1OiJvcmRlciI7czoxOiI1IjtzOjU6ImZs YWdzIjtzOjE6IjAiO3M6NDoiaGVscCI7czo2MTExMDoiPGgxPnNtZF9jYWxlbmRhcjwvaDE+ Cgo8cD5SZW5kZXIgYSBjYWxlbmRhciB3aXRoIG9uZSBvciBtb3JlIGFydGljbGVzIGFzIGV2 ZW50cyBvbiBlYWNoIGRheS4gVXNlZnVsIGZvciBnaWcgZ3VpZGVzLCAmIzgyMjA7d2hhdCYj ODIxNztzIG9uJiM4MjIxOyBvciBzY2hlZHVsaW5nIGFwcHMuPC9wPgoKPGgyPkZlYXR1cmVz PC9oMj4KCjx1bD4KCTxsaT5GdWxsLXNpemUgLyBtaW5pIDxhIGhyZWY9IiNzbWRjYWwiPmNh bGVuZGFyPC9hPiBieSBtb250aCwgd2l0aCA8c3BhbiBjbGFzcz0iY2FwcyI+SVNPPC9zcGFu PiB3ZWVrIHN1cHBvcnQ8L2xpPgoJPGxpPk5hdjogbmV4dC9wcmV2IG1vbnRoIG9yIG1vbnRo L3llYXIgZHJvcGRvd24uIFllYXIgcmFuZ2UgY2FuIGJlIGZyb20gZmlyc3QvbGFzdCBhcnRp Y2xlIG9yICsvLSBOIHllYXJzPC9saT4KCTxsaT5PbmUgYXJ0aWNsZSA9IG9uZSBldmVudCwg bmF0aXZlIHRvIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+OiBwb3N0ZWQgZGF0ZSA9 IHRoZSBkYXRlIGl0IGFwcGVhcnMgaW4gdGhlIGNhbGVuZGFyIChvdmVycmlkZWFibGUpPC9s aT4KCTxsaT5GaWx0ZXIgZXZlbnRzIGJ5IGNhdCAvIHNlY3Rpb24gLyBhdXRob3IgLyBzdGF0 dXMgLyB0aW1lIC8gZXhwaXJ5PC9saT4KCTxsaT5TcGVjaWZ5IGV2ZW50IGZyZXF1ZW5jeSBp biBjdXN0b20gZmllbGQgKDEgd2VlayAvIDEwIGRheXMgLyAzIG1vbnRocyAvIGV0Yyk8L2xp PgoJPGxpPkN1c3RvbSBmaWVsZHMgZm9yIGluL2V4Y2x1c2lvbnMgKGRhdGVzIG9uIHdoaWNo IGFuIGV2ZW50IGlzIChyZSlzY2hlZHVsZWQvY2FuY2VsbGVkL29taXR0ZWQpPC9saT4KCTxs aT5NdWx0aS1kYXkgc3Bhbm5lZCBldmVudHMgYmFzZWQgb24gYXJ0aWNsZSBleHBpcnk8L2xp PgoJPGxpPkRpc3BsYXkgZnV0dXJlLCBleHBpcmVkIG9yIHN0aWNreSBldmVudHM8L2xpPgoJ PGxpPkhvbGlkYXlzIHBlci1jYWxlbmRhcjwvbGk+Cgk8bGk+UGFzcyBlYWNoIGV2ZW50IHRv IGEgZm9ybS9jb250YWluZXIuIFNwYW5uZWQgYW5kL29yIHJlY3VycmluZyBldmVudHMgY2Fu IGJlIHNlbnQgdG8gYSBzZXBhcmF0ZSBmb3JtLiBDZWxsIGZvcm1hdCBhbHNvIGN1c3RvbWlz YWJsZTwvbGk+Cgk8bGk+PGEgaHJlZj0iI2lmY2FsIj5Db25kaXRpb25hbDwvYT4gdGVzdHMg Zm9yIGZsYWdzIGFuZCBkYXRlcyBzbyB5b3UgY2FuIGJ1aWxkIHlvdXIgb3duIGxvZ2ljPC9s aT4KCTxsaT5UYWJsZS0sIHJvdy0sIGNlbGwtLCBhbmQgZXZlbnQtbGV2ZWwgY2xhc3NlcyBm b3IgaW5kaWNhdGluZyBkaWZmZXJlbnQgc2NlbmFyaW9zPC9saT4KCTxsaT5UYWdzIHRvIDxh IGhyZWY9IiNhcnRldiI+ZGlzcGxheSByZWN1cnJpbmcgZXZlbnRzPC9hPjsgZXZlbnQvY2Fs ZW5kYXIgPGEgaHJlZj0iI2NhbGluZm8iPmNoYXJhY3RlcmlzdGljczwvYT47IG9yIHRoZSA8 YSBocmVmPSIjY2Fsbm93Ij5jdXJyZW50IGRhdGUvdGltZTwvYT48L2xpPgo8L3VsPgoKPGgy Pkluc3RhbGxhdGlvbiAvIFVuaW5zdGFsbGF0aW9uPC9oMj4KCjxwIGNsYXNzPSJ3YXJuaW5n Ij5SZXF1aXJlcyBUZXh0cGF0dGVybiA0LjQuMSs8L3A+Cgo8cD5Eb3dubG9hZCB0aGUgcGx1 Z2luIGZyb20gZWl0aGVyIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5vcmcvcGx1Z2lu cy8xMDUyL3NtZF9jYWxlbmRhciI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIDxhIGhy ZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4sIHBhc3Rl IHRoZSBjb2RlIGludG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkbWlu LSZndDtQbHVnaW5zIHBhbmUsIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgcGx1Z2luLiBDcmVh dGUgYW55IG5lZWRlZCA8YSBocmVmPSIjZmxkYXR0cyI+Y3VzdG9tIGZpZWxkczwvYT4uIFZp c2l0IHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3Bp Yy5waHA/aWQ9MjkzNzUiPmZvcnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBvciB0byBy ZXBvcnQgb24gdGhlIHN1Y2Nlc3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4uPC9wPgoK PHA+VG8gdW5pbnN0YWxsLCBkZWxldGUgZnJvbSB0aGUgQWRtaW4tJmd0O1BsdWdpbnMgcGFn ZS48L3A+Cgo8aDI+TmFtaW5nIGNvbnZlbnRpb248L2gyPgoKPHA+VGhlIGNvcmUgb2YgdGhl IHBsdWdpbiBpcyB0aGUgc21kX2NhbGVuZGFyIHRhZywgd2hpY2ggcmVuZGVycyBhIHN0YW5k YXJkIGNhbGVuZGFyLiBFYWNoIGNlbGwgY29udGFpbnMgb25lIG9yIG1vcmUgZXZlbnRzIHRo YXQgb2NjdXIgb24gdGhhdCBkYXkuIEJlZm9yZSBkaXZpbmcgaW50byB0aGUgdGFncyBoZXJl IGFyZSB0aGUgYmFzaWNzOjwvcD4KCjx1bD4KCTxsaT4qY2FsaWQlIDogeW91IG1heSBwdXQg bW9yZSB0aGFuIG9uZSBjYWxlbmRhciBvbiBhIHBhZ2U6IGVhY2ggY2FuIGJlIHVuaXF1ZWx5 IHJlZmVyZW5jZWQgd2l0aCBhIGNhbGVuZGFyIElEIHNvIHRoZXkgbWF5IGJlIGNvbnRyb2xs ZWQgaW5kZXBlbmRlbnRseTwvbGk+Cgk8bGk+KmV2ZW50JSA6IGFuIGFydGljbGUuIEFueSBh cnRpY2xlIHdyaXR0ZW4gaW4gdGhlIGdpdmVuIHNlY3Rpb24ocykgd2lsbCBhcHBlYXIgb24g dGhlIGNhbGVuZGFyIGFzIGxvbmcgYXMgaXRzIGV4cGlyeSBoYXNuJiM4MjE3O3QgYmVlbiBt ZXQuIE1vcmUgdGhhbiBvbmUgZXZlbnQgbWF5IGFwcGVhciBpbiBlYWNoIGNlbGw8L2xpPgoJ PGxpPipldmVudCBmbGFnJSA6IGV2ZW50cyBjYW4gZWl0aGVyIGJlIDxhIGhyZWY9IiNldmVu dHMiPnN0YW5kYXJkPC9hPiwgdGhleSBjYW4gPGEgaHJlZj0iI3JlY3VyIj5yZWN1cjwvYT4s IHRoZXkgY2FuIHNwYW4gPGEgaHJlZj0iI211bHRpIj5tdWx0aXBsZTwvYT4gZGF5cywgZGF0 ZXMgY2FuIGJlIDxhIGhyZWY9IiNjYW5jZWwiPnVuc2NoZWR1bGVkIG9yIG9taXR0ZWQ8L2E+ IGZyb20gdGhlIGNhbGVuZGFyLCBvciA8YSBocmVmPSIjZXh0cmEiPmV4dHJhPC9hPiBkYXRl cyBjYW4gYmUgYWRkZWQ8L2xpPgoJPGxpPipjZWxsIGZsYWclIDogYSBzZXJpZXMgb2YgZmxh Z3MgYXJlIHVzZWQgdG8gbGFiZWwgZWFjaCBjZWxsIGFjY29yZGluZyB0byB3aGF0IGl0IGNv bnRhaW5zLiBDZWxscyBjYW4gZWl0aGVyIGJlIGVtcHR5IChpLmUuIG5vIGRhdGU6IHRoZSBm aWxsZXIgY2VsbHMgYXQgdGhlIHN0YXJ0L2VuZCBvZiB0aGUgbW9udGgpLCB0aGV5IGNhbiBi ZSBhIHJlZ3VsYXIgZGF5IChubyBmbGFnKSwgdGhleSBjYW4gY29udGFpbiBhbiBldmVudCwg b3IgbWF5IGJlIGEgPGEgaHJlZj0iI2hvbGlkYXlzIj5ob2xpZGF5PC9hPjwvbGk+CjwvdWw+ Cgo8cD5GbGFncyBwcm92aWRlIGluZm9ybWF0aW9uIDxlbT5hYm91dDwvZW0+IHRoZSBjZWxs IC8gZXZlbnQgICYjODIxMjsgYW5kIGNhbiBiZSB0ZXN0ZWQgd2l0aCB0aGUgY29uZGl0aW9u YWwgdGFnICYjODIxMjsgd2hpbGUgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MgbmFtZXMgYXJl IGp1c3QgdGhlcmUgZm9yIHlvdXIgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gdXNl LjwvcD4KCjxwPldoZW4gYXNzaWduZWQgYXMgY2xhc3NlcywgZmxhZ3MgPHN0cm9uZz5hbHdh eXM8L3N0cm9uZz4gdGFrZSB0aGUgJiM4MjE2O2NsYXNzJiM4MjE3OyBwcmVmaXggKGkuZS4g dGhlIDFzdCBpdGVtIGdpdmVuIGluIHNtZF9jYWxlbmRhciYjODIxNztzIDxjb2RlPmNsYXNz cHJlZml4ZXM8L2NvZGU+IGF0dHJpYnV0ZSkgJiM4MjEyOyB3aGV0aGVyIHRoZXkgYXBwZWFy IGF0IHRoZSA8ZW0+ZXZlbnQ8L2VtPiBvciA8ZW0+Y2VsbDwvZW0+IGxldmVscy4gVGhlIG9u bHkgY2xhc3NlcyB0aGF0IHRha2UgdGhlIG9wdGlvbmFsIDJuZCAmIzgyMTY7ZXZlbnQmIzgy MTc7IHByZWZpeCBhcmUgdGhlIGZpZWxkcyB5b3Ugc3BlY2lmeSBpbiB0aGUgPGNvZGU+ZXZl bnRjbGFzc2VzPC9jb2RlPiBhdHRyaWJ1dGUuPC9wPgoKPGgyIGlkPSJldmVudHMiPlN0YW5k YXJkIGNlbGxzIGFuZCBldmVudHM8L2gyPgoKPHA+VGhlIGZvbGxvd2luZyBjdW11bGF0aXZl IG5hbWluZyBydWxlcyBhcHBseTo8L3A+Cgo8dWw+Cgk8bGk+Tm9ybWFsIChkYXkpIGNlbGxz IGRvbiYjODIxNzt0IGhhdmUgYSBjbGFzcyBhc3NpZ25lZCB0byB0aGVtIHVubGVzcyB5b3Ug c3BlY2lmeSBvbmUgd2l0aCA8Y29kZT5jZWxsY2xhc3M8L2NvZGU+PC9saT4KCTxsaT5Bbnkg Y2VsbCB0aGF0IGNvbnRhaW5zIGFuIGV2ZW50IChvZiBhbnkgdHlwZSkgaXMgZmxhZ2dlZCBh cyBhbiA8Y29kZT5ldmVudDwvY29kZT48L2xpPgoJPGxpPkFueSBjZWxsIHRoYXQgZmFsbHMg b24gYSBob2xpZGF5IGlzIGdpdmVuIHRoZSBmbGFnIDxjb2RlPmhvbHM8L2NvZGU+PC9saT4K CTxsaT5UaGUgY3VycmVudCBkYXkgaXMgZ2l2ZW4gdGhlIGZsYWcgPGNvZGU+dG9kYXk8L2Nv ZGU+PC9saT4KPC91bD4KCjxwPkEgc2luZ2xlIGV2ZW50IChha2EgYXJ0aWNsZSkgd2l0aCBh IFBvc3RlZCBkYXRlIHdpbGwgYmUgZmxhZ2dlZCA8Y29kZT5zdGFuZGFyZDwvY29kZT4sIHVu bGVzcyBpdCByZWN1cnMgb3Igc3BhbnMgbW9yZSB0aGFuIG9uZSBkYXkuPC9wPgoKPGgyIGlk PSJyZWN1ciI+UmVjdXJyaW5nIGV2ZW50czwvaDI+Cgo8cD5JZiB5b3UgaGF2ZSBub21pbmF0 ZWQgYSBmaWVsZCBhcyB5b3VyIDxjb2RlPnN0ZXBmaWVsZDwvY29kZT4geW91IG1heSBlbnRl ciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGZyZXF1ZW5jaWVzIGF0IHdoaWNoIHRoZSBl dmVudCBpcyB0byByZXBlYXQuIFRoZSBmb3JtYXQgb2YgdGhlIHJlcGV0aXRpb24gaXMgPHN0 cm9uZz5udW1iZXIgaW50ZXJ2YWw8L3N0cm9uZz4sIGUuZy4gPGNvZGU+NCB3ZWVrczwvY29k ZT4gb3IgPGNvZGU+MTAgZGF5czwvY29kZT4gb3IgPGNvZGU+NiBtb250aHM8L2NvZGU+LiBU aGUgcGx1Z2luIHdpbGwgZG8gaXRzIGJlc3QgdG8gZmlndXJlIG91dCB3aGF0IHlvdSBtZWFu LiBTZWUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3Rhci9tYW51YWwv aHRtbF9ub2RlL0RhdGUtaW5wdXQtZm9ybWF0cy5odG1sIj5kYXRlIGlucHV0IGZvcm1hdHM8 L2E+IGZvciBtb3JlLjwvcD4KCjxwPkEgZmV3IHBvaW50czo8L3A+Cgo8dWw+Cgk8bGk+PGNv ZGU+c2Vjb25kIHR1ZXNkYXk8L2NvZGU+IHdpbGwgc2hvdyBhbiBldmVudCA8ZW0+ZXZlcnk8 L2VtPiAybmQgVHVlc2RheSBmcm9tIHRoZSBzdGFydCBkYXRlIChpLmUuIGZvcnRuaWdodGx5 KTwvbGk+Cgk8bGk+PGNvZGU+c2Vjb25kIHR1ZXNkYXkgP21vbnRoID95ZWFyPC9jb2RlPiB3 aWxsIHN1YnN0aXR1dGUgdGhlIGN1cnJlbnQgbW9udGggYW5kIHllYXIgaW4gZmlyc3QsIGFu ZCB0aGVuIGNhbGN1bGF0ZSB0aGUgZGF0ZSwgcmVzdWx0aW5nIGluIHRoZSBldmVudCBvbmx5 IHJlY3VycmluZyBvbiB0aGUgMm5kIFR1ZXNkYXkgb2YgZWFjaCBtb250aC4gWW91IDxzdHJv bmc+bXVzdDwvc3Ryb25nPiB1c2UgYm90aCA8Y29kZT4/bW9udGg8L2NvZGU+IGFuZCA8Y29k ZT4/eWVhcjwvY29kZT4gaWYgeW91IGNob29zZSB0aGlzIHR5cGUgb2YgZGF0ZSBvciB5b3Vy IGV2ZW50IHdvbiYjODIxNzt0IGFwcGVhcjwvbGk+Cgk8bGk+PGNvZGU+MjAgP21vbnRoPC9j b2RlPiB3aWxsIHNob3cgdGhlIGV2ZW50IG9uIHRoZSAyMHRoIG9mIGV2ZXJ5IG1vbnRoPC9s aT4KCTxsaT50aGluZ3MgbGlrZSA8Y29kZT5maXJzdCB0aHVyc2RheTwvY29kZT4gb3IgPGNv ZGU+bGFzdCBmcmlkYXk8L2NvZGU+IG9yIDxjb2RlPnRoaXMgdHVlc2RheTwvY29kZT4gZG9u JiM4MjE3O3QgbmVlZCB0aGUgPGNvZGU+P21vbnRoPC9jb2RlPiBvciA8Y29kZT4/eWVhcjwv Y29kZT4gYmVjYXVzZSB0aGV5IGNhbiA8ZW0+b25seTwvZW0+IG9jY3VyIG1vbnRobHksIGFu ZCB3aWxsIG9ubHkgc2hvdyB0aGUgZXZlbnQgb24gdGhlIGdpdmVuIGRheSBvZiB0aGUgbW9u dGg8L2xpPgo8L3VsPgoKPHA+SWYgeW91IGNhbiBmaW5kIGEgdXNlIGZvciBpdCwgeW91IG1h eSBzcGVjaWZ5IG11bHRpcGxlIGZyZXF1ZW5jaWVzLCBmb3IgZXhhbXBsZSA8Y29kZT4zIGRh eXMsIDEgd2VlazwvY29kZT4uIFRoYXQgbWVhbnMgeW91IHdvdWxkIHNlZSB0aGUgZXZlbnQg b24gdGhlIDFzdCBkYXksIHRoZW4gdGhlIDNyZCwgNnRoLCA3dGgsIDl0aCwgMTJ0aCwgMTR0 aCwgMTV0aCwgMTh0aCwgMjFzdCwgMjR0aCYjODIzMDsgZGF5cyB0aGVyZWFmdGVyLiBOb3Rl IHRoYXQgdGhlIGV2ZW50IG9ubHkgb2NjdXJzIG9uY2Ugb24gdGhlIDIxc3QgZGF5IGV2ZW4g dGhvdWdoIHRoZSB0d28gZnJlcXVlbmNpZXMgY2xhc2guPC9wPgoKPHA+UmVjdXIgcnVsZXM6 PC9wPgoKPHVsPgoJPGxpPlRoZSByZXBldGl0aW9uIHdpbGwgY29udGludWUgZm9yZXZlcjxz dXAgY2xhc3M9ImZvb3Rub3RlIiBpZD0iZm5yZXYyNjAxMjk2NTQ1OGUyNDVhMzU1NTg5LTEi PjxhIGhyZWY9IiNmbjI2MDEyOTY1NDU4ZTI0NWEzNTU1ODktMSI+MTwvYT48L3N1cD4gdW5s ZXNzIHlvdSBzcGVjaWZ5IGFuIGV4cGlyeSB0aW1lPC9saT4KCTxsaT5UaGUgdmVyeSBmaXJz dCBldmVudCBvZiBhIHJlY3VycmluZyBzZXQgd2lsbCBiZSBmbGFnZ2VkIHdpdGggPGNvZGU+ cmVjdXJmaXJzdDwvY29kZT48L2xpPgoJPGxpPkVhY2ggZm9sbG93aW5nIGNlbGwgdGhhdCBj b250YWlucyBhIHJlY3VycmluZyBldmVudCB3aWxsIGJlIGZsYWdnZWQgd2l0aCA8Y29kZT5y ZWN1cjwvY29kZT48L2xpPgoJPGxpPkJvdGggZmxhZ3MgYXJlIGFwcGxpZWQgdG8gdGhlIGV2 ZW50IGFzIGNsYXNzZXMgdXNpbmcgdGhlIGNsYXNzIHByZWZpeDwvbGk+Cgk8bGk+UmVwZWF0 ZWQgZXZlbnRzIG1heSBiZSA8YSBocmVmPSIjY2FuY2VsIj5jYW5jZWxsZWQgb3Igb21pdHRl ZDwvYT4gb24gYSBwZXItZGF0ZSBiYXNpczwvbGk+CjwvdWw+Cgo8cCBjbGFzcz0ic21hbGwi IGlkPSJmbjI2MDEyOTY1NDU4ZTI0NWEzNTU1ODktMSI+PHN1cD4xPC9zdXA+ICYjODIxNjtm b3JldmVyJiM4MjE3OyBpcyBsaW1pdGVkIHRvIDk5OTk5IHJlY3VycmVuY2VzIHBlciBldmVu dCwgb3IgMjc0IHllYXJzJiM4MjE3OyB3b3J0aCBvZiBkYWlseSBldmVudHMuIEVpdGhlciA8 c3BhbiBjbGFzcz0iY2FwcyI+VU5JWDwvc3Bhbj4gd2lsbCBydW4gb3V0IG9mIGRhdGVzIG9y IDxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+IHdpbGwgcnVuIG91dCBvZiBtZW1vcnkg bG9uZyBiZWZvcmUgeW91IHJlYWNoIHRoaXMgbGltaXQgOi0pPC9wPgoKPGgyIGlkPSJtdWx0 aSI+TXVsdGktZGF5IChzcGFubmVkKSBldmVudHM8L2gyPgoKPHA+QW55IGV2ZW50IHRoYXQg aGFzOjwvcD4KCjx1bD4KCTxsaT5hIHN0YXJ0IGRhdGU8L2xpPgoJPGxpPmFuIGV4cGlyeSBk YXRlIHRoYXQgaXMgYSBkYXkgb3IgbW9yZSBsYXRlciB0aGFuIHRoZSBzdGFydCBkYXRlLCBh bmQ8L2xpPgoJPGxpPjxlbT5kb2VzIG5vdDwvZW0+IGhhdmUgYW55IHJlcGV0aXRpb24gaW4g aXRzIDxjb2RlPnN0ZXBmaWVsZDwvY29kZT48L2xpPgo8L3VsPgoKPHA+aXMgZmxhZ2dlZCBh cyBhIDxjb2RlPm11bHRpPC9jb2RlPi4gQnkgZGVmYXVsdCB0aGUgZmlyc3QgZXZlbnQgaXMg ZGlzcGxheWVkIGluIGZ1bGwgYW5kIGVhY2ggJiM4MjE2O2NvbnRpbnVhdGlvbiYjODIxNzsg ZXZlbnQgaXMgc2hvd24gb25seSBhcyBhIHJpZ2h0IGFycm93IGluIHN1YnNlcXVlbnQgY2Vs bHMuIEV2ZW50cyBtYXkgc3BhbiBtb250aHMgb3IgeWVhcnMgYW5kIHRoZSBwbHVnaW4gZmln dXJlcyBldmVyeXRoaW5nIG91dCB1c2luZyBmbGFnIHJ1bGVzOjwvcD4KCjx1bD4KCTxsaT5U aGUgZmlyc3QgY2VsbCBvZiBhIHNwYW5uZWQgc2V0IGlzIDxjb2RlPm11bHRpZmlyc3Q8L2Nv ZGU+PC9saT4KCTxsaT5UaGUgbGFzdCBjZWxsIGlzIDxjb2RlPm11bHRpbGFzdDwvY29kZT48 L2xpPgoJPGxpPkV2ZXJ5IG90aGVyIGNlbGwgaXMgYSA8Y29kZT5tdWx0aTwvY29kZT4gPGVt PmV4Y2VwdDwvZW0+IGlmIHRoZSBldmVudCByb2xscyBvdmVyIGludG8gdGhlIG5leHQgbW9u dGguIEluIHRoYXQgY2FzZSwgdGhlIGVudHJ5IG9uIHRoZSAxc3Qgb2YgdGhlIG1vbnRoIGlz IGEgPGNvZGU+bXVsdGlwcmV2PC9jb2RlPiB0byBpbmRpY2F0ZSBpdCBiZWxvbmdzIHRvIGEg cHJldmlvdXMgZXZlbnQ8L2xpPgoJPGxpPklmIHRoZSAxc3QgZGF5IG9mIHRoZSBtb250aCBp cyB0aGUgbGFzdCBkYXkgb2YgdGhlIGV2ZW50LCB0aGUgPGNvZGU+bXVsdGlwcmV2PC9jb2Rl PiBpcyBkcm9wcGVkIGluIGZhdm91ciBvZiA8Y29kZT5tdWx0aWxhc3Q8L2NvZGU+PC9saT4K PC91bD4KCjxwPlN3aXRjaCBvZmYgc3Bhbm5pbmcgY29tcGxldGVseSB3aXRoIDxjb2RlPnNo b3dzcGFubmVkPSZxdW90OzAmcXVvdDs8L2NvZGU+LiBFdmVudHMgdGhhdCBoYXZlIGFuIGV4 cGlyeSB0aGVuIGJlY29tZSBzdGFuZGFyZCBldmVudHMuPC9wPgoKPHA+JiM4MjE2O0NvbnRp bnVhdGlvbiYjODIxNzsgY2VsbHMgbWF5IGJlIHByb2Nlc3NlZCB3aXRoIGEgc2VwYXJhdGUg Zm9ybSAoPGNvZGU+c3BhbmZvcm08L2NvZGU+KS4gSWYgeW91IGNob29zZSBub3QgdG8gdXNl IGEgPGNvZGU+c3BhbmZvcm08L2NvZGU+LCB0aGUgc3RhbmRhcmQgPGNvZGU+Zm9ybTwvY29k ZT4gb3IgY29udGFpbmVyIHdpbGwgYmUgdXNlZCBhbmQgeW91IHdpbGwgaGF2ZSB0byBkaXN0 aW5ndWlzaCBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgbXVsdGkgZmxhZ3MgeW91cnNlbGYgdXNp bmcgdGhlIDxhIGhyZWY9IiNpZmNhbCI+Y29uZGl0aW9uYWwgdGFnPC9hPi48L3A+Cgo8cD5Z b3UgY2FuIGFsc28gPGEgaHJlZj0iI2NhbmNlbCI+Y2FuY2VsIG9yIG9taXQ8L2E+IGRheXMg b2YgYSBzcGFubmVkIGV2ZW50IGluIHRoZSBzYW1lIG1hbm5lciBhcyB5b3UgZG8gd2l0aCA8 YSBocmVmPSIjcmVjdXIiPnJlY3VycmluZyBldmVudHM8L2E+LCBleGNlcHQgeW91IGNhbm5v dCBjYW5jZWwgdGhlIGZpcnN0IGRheTsgeW91IHNob3VsZCBtb3ZlIHRoZSBldmVudCBzdGFy dCBkYXRlIGFuZCBhcG9sb2dpc2UhPC9wPgoKPGgyIGlkPSJjYW5jZWwiPkNhbmNlbGxpbmcg YW5kIG9taXR0aW5nIGV2ZW50czwvaDI+Cgo8cD5QbGFucyBjaGFuZ2UgYW5kIHlvdSBtYXkg ZmluZCB0aGF0IGEgZ2lnIGhhcyB0byBiZSBjYW5jZWxsZWQuIFBlcmhhcHMgeW91IGFkdmVy dGlzZSBhIHdlZWtseSBib290IGZhaXIgYnV0IHRoZSBmaWVsZCBpcyB3YXRlcmxvZ2dlZCBv bmUgd2Vlay4gTm8gcHJvYmxlbTogbm9taW5hdGUgYSA8Y29kZT5za2lwZmllbGQ8L2NvZGU+ IGluIHlvdXIgPGNvZGU+c21kX2NhbGVuZGFyPC9jb2RlPiB0YWcgYW5kIGVudGVyIHRoZSBk YXRlIG9mIHRoZSBjYW5jZWxsZWQgZXZlbnQuPC9wPgoKPHA+T3IgeW91IG1pZ2h0IHJ1biBh IHRoZWF0cmUgd2ViIHNpdGUgdGhhdCBoYXMgYSB0aHJlZS13ZWVrIHByb2R1Y3Rpb24gcGVy Zm9ybWFuY2Ugb24gd2Vla25pZ2h0cyBvbmx5LiBJbnN0ZWFkIG9mIHNldHRpbmcgdXAgdGhy ZWUgc2VwYXJhdGUgZXZlbnRzICYjODIxMjsgb25lIGZvciBlYWNoIHdlZWsgJiM4MjEyOyBu b21pbmF0ZSBhbiA8Y29kZT5vbWl0ZmllbGQ8L2NvZGU+IGFuZCBsaXN0IHRoZSBkYXRlcyBv biB3aGljaCB0aGUgcGVyZm9ybWFuY2UgZG9lcyBub3QgYWlyLiBPbWl0dGVkIGRhdGVzIHdp bGwgbm90LCB1bmRlciBhbnkgY2lyY3Vtc3RhbmNlcywgYXBwZWFyIG9uIHRoZSBjYWxlbmRh ciBhbmQgdGhleSBvdmVycmlkZSBjYW5jZWxsZWQgZGF0ZXMvaG9saWRheXMuIElmIDxjb2Rl PmNlbGxwbHVzPC9jb2RlPiBtb2RlIGlzIHVzZWQsIHlvdSB3aWxsIGhvd2V2ZXIgc2VlIGEg Y2VsbCBmbGFnIGxhYmVsbGVkIDxjb2RlPm9taXQ8L2NvZGU+IChwbHVzIGNsYXNzIHByZWZp eCkgaW4gY2FzZSB5b3UgZG8gd2lzaCB0byBzdHlsZSBzdWNoIGNlbGxzLjwvcD4KCjxwPlRv IHNwZWNpZnkgdGhlIGRhdGVzIGluIGVpdGhlciBmaWVsZCwgdXNlIGFueSBhY2NlcHRhYmxl IGRhdGUgZm9ybWF0LCBidXQgZGVyaXZhdGl2ZXMgb2YgZGQtbW9udGhuYW1lLXl5eXkgb3Ig bW9udGhuYW1lLWRkLXl5eXkgYXJlIHRoZSBtb3N0IHVuYW1iaWd1b3VzIHRvIGF2b2lkIHBy b2JsZW1zIChlLmcuIGlzIDxjb2RlPjEvNTwvY29kZT4gSmFuIDV0aCBvciBNYXkgMXN0KS4g WW91IGNhbiBzcGVjaWZ5IGFzIG1hbnkgY2FuY2VsbGF0aW9ucyBvciBvbWlzc2lvbnMgYXMg eW91IGxpa2U7IGNvbW1hLXNlcGFyYXRlIGVhY2ggb25lLiBZb3UgbWF5IGFsc28gc3BlY2lm eSByYW5nZXMgb2YgZGF0ZXMgdG8gb21pdC9jYW5jZWwgYnkgdXNpbmcgdGhlIG5vdGF0aW9u IDxjb2RlPnN0YXJ0IGRhdGUgPSZndDsgZW5kIGRhdGU8L2NvZGU+LjwvcD4KCjxwPkJ5IGRl ZmF1bHQsIGNhbmNlbGxlZCBldmVudHMgd2lsbCBub3QgYXBwZWFyIG9uIHRoZSBjYWxlbmRh ci4gSWYgeW91IHVzZSA8Y29kZT5zaG93c2tpcHBlZD0mcXVvdDsxJnF1b3Q7PC9jb2RlPiB0 aGUgZXZlbnQgd2lsbCBhcHBlYXIgaW4gdGhlIGNlbGwgYXMgbm9ybWFsIGFuZCB0aGUgPGNv ZGU+Y2FuY2VsPC9jb2RlPiBmbGFnIHdpbGwgYXBwbHkgdG8gdGhlIGV2ZW50IChhbmQgY2Vs bCBpZiB5b3UgY2hvb3NlKSBzbyB5b3UgbWF5IGRldGVjdC9zdHlsZSBpdC48L3A+Cgo8aDIg aWQ9ImV4dHJhIj5FeHRyYSBkYXRlczwvaDI+Cgo8cD5XaGVuIGV2ZW50cyBhcmUgPGEgaHJl Zj0iI2NhbmNlbCI+Y2FuY2VsbGVkPC9hPiB5b3UgbWF5IGVsZWN0IHRvIHJlc2NoZWR1bGUg dGhlIGV2ZW50IG9uIGEgZGlmZmVyZW50IGRhdGUgaW5zdGVhZCBvZiBoYXZpbmcgdG8gY3Jl YXRlIGEgbmV3IGV2ZW50IHdpdGggaWRlbnRpY2FsIGRldGFpbHMuIFVzZSB0aGUgPGNvZGU+ ZXh0cmFmaWVsZDwvY29kZT4gdG8gc2ltcGx5IGFkZCBpdCB0byB0aGUgY2FsZW5kYXIgb24g aXRzIG5ldyBkYXkuIFlvdSBtaWdodCBhbHNvIHVzZSB0aGlzIGZlYXR1cmUgaWYgeW91IGhh dmUgYSA8YSBocmVmPSIjcmVjdXIiPnJlY3VycmluZzwvYT4gZXZlbnQgb24gdGhlIDFzdCBv ZiBldmVyeSBtb250aCBidXQgZm9yIHNvbWUgcmVhc29uIHlvdSBoYXZlIHRvIG1vdmUgb25l IG9mIHRoZSBldmVudHMgYSBkYXkgb3IgdHdvLiBTaW1wbHkgY2FuY2VsIHRoZSBvZmZlbmRp bmcgZGF0ZSBhbmQgYWRkIHRoZSBuZXcgZGF0ZSB1c2luZyA8Y29kZT5leHRyYWZpZWxkPC9j b2RlPi48L3A+Cgo8cD5UaGUgbGlzdCBvZiBkYXRlcyBjYW4gYmUgaW4gYW55IHN0YW5kYXJk IGRhdGUgZm9ybWF0IChpbmNsdWRpbmcgZGF0ZSByYW5nZXMgdXNpbmcgPGNvZGU+c3RhcnQg PSZndDsgZW5kPC9jb2RlPikuIFRoZXkgd2lsbCBiZSBhZGRlZCB0byB0aGUgY2FsZW5kYXIg YW5kIGZsYWdnZWQgYXMgPGNvZGU+ZXh0cmE8L2NvZGU+LiBBbHNvIHNlZSB0aGUgPGNvZGU+ ZXh0cmFzdHJpY3Q8L2NvZGU+IGF0dHJpYnV0ZS48L3A+Cgo8cD5JZiB5b3VyIG9yaWdpbmFs IGV2ZW50IHNwYW5zIG1vcmUgdGhhbiBvbmUgZGF5LCB5b3UgbWF5IGVsZWN0IHRvIHNjaGVk dWxlIHRoZSBlbnRpcmUgYmxvY2sgYWdhaW4uIEFkZCBhICYjODIxNjsrJiM4MjE3OyBhZnRl ciBhbnkgZGF0ZSB5b3Ugd2lzaCB0byByZXBlYXQgaW4gaXRzIGVudGlyZXR5LCBlLmcuIDxj b2RlPjIwMDktTWFyLTEyKywgMjAwOS1KdW4tMTgrLCAyMDA5LUZlYi0xOTwvY29kZT4gd291 bGQgY29weSB0aGUgZW50aXJlIGV2ZW50IGJsb2NrIHRvIE1hcmNoIGFuZCBKdW5lLCBidXQg b25seSB0aGUgMXN0IGRhdGUgdG8gRmViIDE5dGguIEV2ZW50cy9jZWxscyBhcmUgZmxhZ2dl ZCBhcyBib3RoIDxjb2RlPmV4dHJhPC9jb2RlPiBhbmQgPGNvZGU+bXVsdGk8L2NvZGU+IHdo ZXJlIGFwcGxpY2FibGUuPC9wPgoKPHA+Tm90ZXM6PC9wPgoKPHVsPgoJPGxpPmlmIHlvdSBz Y2hlZHVsZSBhbiBleHRyYSBldmVudCBvbiBhIGRheSB0aGF0IGFscmVhZHkgY29udGFpbnMg dGhlIHNhbWUgZXZlbnQgKHBlcmhhcHMgb24gYSBzcGFubmVkIG9yIHJlY3VycmluZyBkYXRl KSB5b3UgbWF5IHNlZSB0d28gaWRlbnRpY2FsIGV2ZW50cyBvbiB0aGUgc2FtZSBkYXkuIFRy eSBhbmQgYXZvaWQgdGhpcywgdW5sZXNzIGl0JiM4MjE3O3MgeW91ciBpbnRlbmRlZCBiZWhh dmlvdXI8L2xpPgoJPGxpPmRhdGUgcmFuZ2VzIGFuZCB0aGUgJiM4MjE2OysmIzgyMTc7IHN5 bnRheCBhcmUgbXV0dWFsbHkgZXhsY3VzaXZlIG9uIGFueSBkYXRlIChlLmcuIDxjb2RlPjIw MDktTWFyLTEwKyA9Jmd0OyAyMDA5LU1hci0xNTwvY29kZT4gaXMgaWxsZWdhbCk8L2xpPgo8 L3VsPgoKPGgyIGlkPSJob2xpZGF5cyI+SG9saWRheXM8L2gyPgoKPHA+UHVibGljIGhvbGlk YXlzIG5lZWQgbm90IGJlIGEgbnVpc2FuY2UgdG8geW91ciBldmVudHMuIEdpdmUgdGhlIHBs dWdpbiBhIGhvbGlkYXkgbGlzdCBhbmQgaXQmIzgyMTc7bGwgbWFrZSBzdXJlIGFueSByZWN1 cnJpbmcgb3IgbXVsdGkgZXZlbnRzIGFyZSBub3Qgc2NoZWR1bGVkIG9uIHRob3NlIGRheXMu IDxhIGhyZWY9IiNldmVudHMiPlN0YW5kYXJkPC9hPiBvbmUtb2ZmIGV2ZW50cyBhcmUgcGVy bWl0dGVkIGJ5IGRlZmF1bHQgYmVjYXVzZSB5b3UgbWlnaHQgd2FudCB0byBvcmdhbmlzZSBh IHNwZWNpYWwgZXZlbnQgb24gdGhhdCBkYXksIHRob3VnaCB5b3UgY2FuIGZvcmJpZCB0aG9z ZSB0b28gaWYgeW91IHdpc2guPC9wPgoKPHA+VGhlIGxpc3Qgb2YgZGF0ZXMgeW91IHNwZWNp ZnkgY2FuIGJlIGVudGVyZWQgZGlyZWN0bHkgaW4gYSBzdHJpbmcgaW4gdGhlIDxjb2RlPmhv bGlkYXlzPC9jb2RlPiBhdHRyaWJ1dGUgb3IgaW4gYSA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxl IC8mZ3Q7PC9jb2RlPjo8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6dmFyaWFibGUgbmFtZT0m cXVvdDtuYXRfaG9scyZxdW90OwogICAgIHZhbHVlPSZxdW90O0RlYyAyNSwgMjYgRGVjLCAz MS9EZWMsIEphbi0xLAogICAgICAgIE1heSA0IDIwMDksIDIwMDktMDgtMzEmcXVvdDsgLyZn dDsKJmx0O3R4cDpzbWRfY2FsZW5kYXIgaG9saWRheXM9JnF1b3Q7dHhwdmFyOm5hdF9ob2xz JnF1b3Q7IC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+VGhhdCBsaXN0IHNob3dzIHNvbWUgb2Yg dGhlIHZhcmlldHkgYW5kIGJyZWFkdGggb2YgZm9ybWF0cyB0aGUgcGx1Z2luIGFsbG93cy4g VGhlcmUgYXJlIG1vcmUuIE5vdGUgdGhhdCB0aGUgZXZlbnRzIHdpdGhvdXQgYSB5ZWFyIG9j Y3VyIG9uIHRoZSBzYW1lIGRhdGUgZXZlcnkgeWVhciwgd2hlcmVhcyB0aGUgb25lcyB3aXRo IGEgeWVhciB3aWxsIG9ubHkgb2NjdXIgb24gdGhhdCBzcGVjaWZpYyBkYXRlLjwvcD4KCjxw Pk9uY2UgeW91ciBkYXRlcyBhcmUgZGVmaW5lZCB5b3UgY2FuIGNvbnRyb2wgd2hpY2ggZXZl bnRzIGFyZSBhbGxvd2VkIHRvIGZhbGwgb24gdGhvc2UgZGF0ZXMgdmlhIDxjb2RlPmhvbGlk YXlmbGFnczwvY29kZT4uIENvbWJpbmluZyB0aGF0IGF0dHJpYnV0ZSwgPGNvZGU+c2hvd3Nw YW5uZWQ8L2NvZGU+LCA8Y29kZT5zaG93c2tpcHBlZDwvY29kZT4gYW5kIHRoZSBmb3JtcyAm IzgyMTI7IGFsb25nIHdpdGggdGhlIGNvbmRpdGlvbmFsIHRhZyAmIzgyMTI7IGNhbiBnaXZl IGEgd2lkZSB2YXJpZXR5IG9mIHdheXMgdG8gZGlzcGxheSBldmVudHMgYW5kIGNlbGxzLjwv cD4KCjxwPkhvbGlkYXkgY2VsbHMgYXJlIGdpdmVuIHRoZSBmbGFnIDxjb2RlPmhvbHM8L2Nv ZGU+LCBhbmQgYW55IGV2ZW50IHRoYXQgaXMgbm90IHNwZWNpZmljYWxseSBwZXJtaXR0ZWQg YnkgdGhlIDxjb2RlPmhvbGlkYXlmbGFnczwvY29kZT4gaXMgYXV0b21hdGljYWxseSBhc3Np Z25lZCBhIDxjb2RlPmNhbmNlbDwvY29kZT4gZmxhZyBpZiBpdCBmYWxscyBvbiBvbmUgb2Yg dGhlIGRheXMuIE9taXR0ZWQgZGF0ZXMgd2lsbCwgaG93ZXZlciwgY2F1c2UgdGhlIDxjb2Rl PmNhbmNlbDwvY29kZT4gZmxhZyB0byBiZSByZW1vdmVkLjwvcD4KCjxoMiBpZD0ic21kY2Fs Ij5UYWc6IDxjb2RlPiZsdDt0eHA6c21kX2NhbGVuZGFyJmd0OzwvY29kZT48L2gyPgoKPHA+ UHV0IHRoaXMgdGFnIHdoZXJldmVyIHlvdSB3YW50IHlvdXIgY2FsZW5kYXIgdG8gYXBwZWFy LiBVc2UgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIHRvIGNvbnRyb2wgaXRzIG91dHB1dC4g VGhlIGRlZmF1bHQgdmFsdWUgaXMgdW5zZXQgdW5sZXNzIHN0YXRlZCBvdGhlcndpc2UuPC9w PgoKPGgzPkRpc3BsYXkgYXR0cmlidXRlczwvaDM+Cgo8ZGw+Cgk8ZHQ+PHN0cm9uZz5zaXpl PC9zdHJvbmc+PC9kdD4KCTxkZD5DYWxlbmRhciBzaXplLiBPcHRpb25zOgoJPGRsPgoJCTxk ZD5sYXJnZTwvZGQ+CgkJPGRkPnNtYWxsPC9kZD4KCTwvZGw+PC9kZD4KCTxkZD5UaGUgc21h bGwgaXMgbW9yZSBnZWFyZWQgdG93YXJkcyBhIG1pbmljYWwsIGFsdGhvdWdoIGZ1bmN0aW9u YWxseSB0aGVyZSA8YSBocmVmPSIjc2l6ZWRpZmYiPmlzbiYjODIxNzt0IG11Y2ggYmV0d2Vl biB0aGVtPC9hPjwvZGQ+Cgk8ZGQ+RGVmYXVsdDogbGFyZ2U8L2RkPgoJPGR0PjxzdHJvbmc+ Zmlyc3RkYXk8L3N0cm9uZz48L2R0PgoJPGRkPkZpcnN0IGRheSBvZiB0aGUgd2VlayB0byBz aG93IGluIHRoZSBjYWxlbmRhci4gMD1TdW5kYXksIDE9TW9uZGF5ICYjODIzMDsgNj1TYXR1 cmRheTwvZGQ+Cgk8ZGQ+RGVmYXVsdDogMDwvZGQ+Cgk8ZHQ+PHN0cm9uZz5kYXlmb3JtYXQ8 L3N0cm9uZz48L2R0PgoJPGRkPldheSBpbiB3aGljaCBkYXkgbmFtZXMgYXJlIHJlbmRlcmVk LiBPcHRpb25zOgoJPGRsPgoJCTxkZD48c3BhbiBjbGFzcz0iY2FwcyI+QUJCUjwvc3Bhbj4g c2hvd3MgYWJicmV2aWF0ZWQgZGF5IG5hbWVzOyBNb24sIFR1ZSwgV2VkLCBldGM8L2RkPgoJ CTxkZD48c3BhbiBjbGFzcz0iY2FwcyI+RlVMTDwvc3Bhbj4gdXNlcyBmdWxsIG5hbWVzPC9k ZD4KCQk8ZGQ+QW55IHZhbGlkIDxhIGhyZWY9Imh0dHA6Ly91azIucGhwLm5ldC9zdHJmdGlt ZSI+c3RyZnRpbWUoKTwvYT4gY29kZXMuIExvY2FsZS1zcGVjaWZpYyBuYW1lcyBhcmUgcmV0 dXJuZWQ8L2RkPgoJCTxkZD5BIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGN1c3RvbSBkYXkg bmFtZXMgc3Vycm91bmRlZCBieSA8Y29kZT57fTwvY29kZT4gYnJhY2tldHM8L2RkPgoJPC9k bD48L2RkPgoJPGRkPkV4YW1wbGUsIGZvciB0d28tbGV0dGVyIEdlcm1hbiB3ZWVrZGF5czog PGNvZGU+ZGF5Zm9ybWF0PSZxdW90O3tTbyxNbyxEaSxNaSxEbyxGcixTYX0mcXVvdDs8L2Nv ZGU+LiBUaGUgZmlyc3QgZGF5IGluIHRoZSBsaXN0IDxzdHJvbmc+bXVzdDwvc3Ryb25nPiBy ZXByZXNlbnQgU3VuZGF5IG9yIHRoaW5ncyB3aWxsIGJyZWFrPC9kZD4KCTxkZD5EZWZhdWx0 OiA8c3BhbiBjbGFzcz0iY2FwcyI+QUJCUjwvc3Bhbj48L2RkPgoJPGR0PjxzdHJvbmc+bW9u dGhmb3JtYXQ8L3N0cm9uZz48L2R0PgoJPGRkPldheSBpbiB3aGljaCB0aGUgbW9udGggbmFt ZXMgYXJlIHJlbmRlcmVkLiBPcHRpb25zOgoJPGRsPgoJCTxkZD48c3BhbiBjbGFzcz0iY2Fw cyI+RlVMTDwvc3Bhbj4gc2hvd3MgZnVsbCBtb250aCBuYW1lczwvZGQ+CgkJPGRkPjxzcGFu IGNsYXNzPSJjYXBzIj5BQkJSPC9zcGFuPiB1c2VzIGFiYnJldmlhdGVkIG5hbWVzPC9kZD4K CQk8ZGQ+QW55IHZhbGlkIHN0cmZ0aW1lKCkgY29kZXMuIExvY2FsZS1zcGVjaWZpYyBuYW1l cyBhcmUgcmV0dXJuZWQ8L2RkPgoJCTxkZD5BIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGN1 c3RvbSBtb250aCBuYW1lcyBzdXJyb3VuZGVkIGJ5IDxjb2RlPnt9PC9jb2RlPiBicmFja2V0 czwvZGQ+Cgk8L2RsPjwvZGQ+Cgk8ZGQ+RXhhbXBsZSwgZm9yIHNpbmdsZS1sZXR0ZXIgbW9u dGggbmFtZXM6IDxjb2RlPm1vbnRoZm9ybWF0PSZxdW90O3tKLEYsTSxBLE0sSixKLEEsUyxP LE4sRH0mcXVvdDs8L2NvZGU+LiBUaGUgZmlyc3QgbW9udGggaW4gdGhlIGxpc3QgPHN0cm9u Zz5tdXN0PC9zdHJvbmc+IHJlcHJlc2VudCBKYW51YXJ5IG9yIHRoaW5ncyB3aWxsIGJyZWFr PC9kZD4KCTxkZD5EZWZhdWx0OiA8c3BhbiBjbGFzcz0iY2FwcyI+RlVMTDwvc3Bhbj48L2Rk PgoJPGR0PjxzdHJvbmc+c2VsZWN0PC9zdHJvbmc+PC9kdD4KCTxkZD5Vc2UgYSBzZWxlY3Qg ZHJvcGRvd24gZm9yIHJhcGlkIGFjY2VzcyB0byB3ZWVrcywgbW9udGhzIG9yIHllYXJzIGlu c3RlYWQgb2YgZml4ZWQgbmFtZXMuIENob29zZSBvbmUgb3IgbW9yZSBvZjoKCTxkbD4KCQk8 ZGQ+d2VlazwvZGQ+CgkJPGRkPm1vbnRoPC9kZD4KCQk8ZGQ+eWVhcjwvZGQ+Cgk8L2RsPjwv ZGQ+Cgk8ZGQ+Tm90ZTogd2VlayBhbmQgbW9udGggYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZTwv ZGQ+Cgk8ZGQ+WW91IG1heSBhbHNvIHNwZWNpZnkgdXAgdG8gdHdvIGV4dHJhIGFyZ3VtZW50 cywgc2VwYXJhdGVkIGJ5IDxjb2RlPjo8L2NvZGU+IGNoYXJzLiBUaGVzZSBhZGQgdGV4dCBp biBmcm9udCBvZiBhbmQgYmVoaW5kIHRoZSB3ZWVrL21vbnRoL3llYXIsIHJlc3BlY3RpdmVs eTwvZGQ+Cgk8ZGQ+RXhhbXBsZTogPGNvZGU+c2VsZWN0PSZxdW90O3dlZWs6V0VFSyMsIHll YXI6Jmx0OzomZ3Q7JnF1b3Q7PC9jb2RlPiBkaXNwbGF5cyBhIHNlbGVjdCBsaXN0IHdpdGgg ZW50cmllcyBsaWtlIHRoaXM6IDxjb2RlPldFRUsjMTUgJmx0OzIwMDkmZ3Q7PC9jb2RlPjwv ZGQ+Cgk8ZHQ+PHN0cm9uZz5zZWxlY3RidG48L3N0cm9uZz48L2R0PgoJPGRkPkFkZCBhIGRl ZGljYXRlZCBzdWJtaXQgYnV0dG9uIHRvIHdlZWsvbW9udGgveWVhciBzZWxlY3QgbGlzdHMu IFNwZWNpZnkgdGhlIHRleHQgeW91IHdpc2ggdG8gYXBwZWFyIG9uIHRoZSBidXR0b24uIEl0 IHdpbGwgaGF2ZSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFt ZSA8Y29kZT5zbWRfY2FsX2lucHV0PC9jb2RlPjwvZGQ+Cgk8ZGQ+RGVmYXVsdDogdW5zZXQg KGkuZS4gYXV0by1zdWJtaXQgb24gc2VsZWN0IGxpc3QgY2hhbmdlKTwvZGQ+Cgk8ZHQ+PHN0 cm9uZz5pc293ZWVrczwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+U2hvdyA8c3BhbiBjbGFzcz0iY2Fw cyI+SVNPPC9zcGFuPiB3ZWVrIG51bWJlcnMgYXMgYSBjb2x1bW4gYXQgdGhlIHN0YXJ0IG9m IHRoZSBjYWxlbmRhci4gQW55IHRleHQgaW4gdGhpcyBhdHRyaWJ1dGUgZW5hYmxlcyB0aGUg ZmVhdHVyZSwgYW5kIGJlY29tZXMgdGhlIGhlYWRpbmcgb2YgdGhlIDxzcGFuIGNsYXNzPSJj YXBzIj5JU088L3NwYW4+IHdlZWsgY29sdW1uPC9kZD4KCTxkZD5Zb3UgbWF5IGNoYW5nZSB0 aGUgZGVmYXVsdCB3ZWVrIG51bWJlciBpbiBlYWNoIGNlbGwgYnkgYWRkaW5nIGEgY29tbWEg YW5kIHNvbWUgdGV4dDsgd2hhdGV2ZXIgeW91IGVudGVyIHdpbGwgYmUgcHV0IGluIGVhY2gg PHNwYW4gY2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4gd2VlayBjZWxsLiBVc2UgdGhlIGZvbGxv d2luZyByZXBsYWNlbWVudCBjb2RlcyBpbiB5b3VyIG1hcmt1cCB0byBpbnNlcnQgdGhlIHJl bGV2YW50IGluZm86Cgk8ZGw+CgkJPGRkPnt3ZWVrfTwvZGQ+CgkJPGRkPnttb250aH08L2Rk PgoJCTxkZD57eWVhcn08L2RkPgoJCTxkZD57aXNveWVhcn08L2RkPgoJPC9kbD48L2RkPgoJ PGRkPkV4YW1wbGU6IDxjb2RlPmlzb3dlZWtzPSZxdW90O3drLCAje3dlZWt9JnF1b3Q7PC9j b2RlPiB3aWxsIHB1dCAmIzgyMTY7d2smIzgyMTc7IGF0IHRoZSB0b3Agb2YgdGhlIGNvbHVt biBhbmQgc29tZXRoaW5nIGxpa2UgPGNvZGU+IzI0PC9jb2RlPiwgPGNvZGU+IzI1PC9jb2Rl PiwgPGNvZGU+IzI2PC9jb2RlPiYjODIzMDsgYmVuZWF0aCBpdC4gSWYgdGhlIGZpcnN0IGl0 ZW0gaXMgb21pdHRlZCwgdGhlcmUgd2lsbCBiZSBubyBjb2x1bW4gaGVhZGluZzwvZGQ+Cgk8 ZGQ+Tm90ZSB0aGF0IGlmIHRoaXMgZmVhdHVyZSBpcyBlbmFibGVkLCA8Y29kZT5maXJzdGRh eTwvY29kZT4gd2lsbCBiZSBmb3JjZWQgdG8gc3RhcnQgb24gYSBNb25kYXkgYXMgZ292ZXJu ZWQgYnkgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IHNwZWNpZmljYXRpb248 L2RkPgoJPGR0PjxzdHJvbmc+bmF2YXJyb3c8L3N0cm9uZz48L2R0PgoJPGRkPkNvbW1hLXNl cGFyYXRlZCBwYWlyIG9mIGl0ZW1zIHlvdSB3YW50IHRvIGFwcGVhciBhcyBwcmV2L25leHQg YXJyb3dzIGluIHRoZSBjYWxlbmRhcjwvZGQ+Cgk8ZGQ+RGVmYXVsdDogPGNvZGU+JmFtcDsj NjA7LCAmYW1wOyM2Mjs8L2NvZGU+PC9kZD4KCTxkdD48c3Ryb25nPmNhcHRpb248L3N0cm9u Zz48L2R0PgoJPGRkPkFkZCBhIGNhcHRpb24gdG8gdGhlIGNhbGVuZGFyPC9kZD4KCTxkdD48 c3Ryb25nPnN1bW1hcnk8L3N0cm9uZz48L2R0PgoJPGRkPkFkZCBhIHN1bW1hcnkgdG8gdGhl IGNhbGVuZGFyPC9kZD4KPC9kbD4KCjxoMz5GaWx0ZXIgYXR0cmlidXRlczwvaDM+Cgo8ZGw+ Cgk8ZHQ+PHN0cm9uZz50aW1lPC9zdHJvbmc+PC9kdD4KCTxkZD5XaGljaCBldmVudHMgdG8g ZGlzcGxheS4gT3B0aW9uczoKCTxkbD4KCQk8ZGQ+YW55PC9kZD4KCQk8ZGQ+cGFzdDwvZGQ+ CgkJPGRkPmZ1dHVyZTwvZGQ+CgkJPGRkPnRvZGF5PC9kZD4KCTwvZGw+PC9kZD4KCTxkZD5E ZWZhdWx0OiBhbnk8L2RkPgoJPGR0PjxzdHJvbmc+ZXhwaXJlZDwvc3Ryb25nPjwvZHQ+Cgk8 ZGQ+SGlkZSBvciBzaG93IGV4cGlyZWQgZXZlbnRzLiBPcHRpb25zOgoJPGRsPgoJCTxkZD51 bnNldCAodXNlIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBQcmVmZXJlbmNl ICYjODIxNjtQdWJsaXNoIGV4cGlyZWQgYXJ0aWNsZXMmIzgyMTc7KTwvZGQ+CgkJPGRkPjAg KGhpZGUpPC9kZD4KCQk8ZGQ+MSAoc2hvdyk8L2RkPgoJPC9kbD48L2RkPgoJPGR0PjxzdHJv bmc+c3RhdHVzPC9zdHJvbmc+PC9kdD4KCTxkZD5FdmVudHMgaW4gdGhpcyBzdGF0dXMgbGlz dCBhcmUgcHVibGlzaGVkIG9uIHRoZSBjYWxlbmRhci4gT3B0aW9uczoKCTxkbD4KCQk8ZGQ+ bGl2ZTwvZGQ+CgkJPGRkPnN0aWNreTwvZGQ+Cgk8L2RsPjwvZGQ+Cgk8ZGQ+RGVmYXVsdDog bGl2ZTwvZGQ+Cgk8ZHQ+PHN0cm9uZz5jYXRlZ29yeTwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+Rmls dGVyIGV2ZW50cyBieSB0aGlzIGxpc3Qgb2YgY2F0ZWdvcmllcy4gVXNlIDxjb2RlPlNNRF9V TkNBVDwvY29kZT4gZm9yIHVuY2F0ZWdvcmlzZWQgZXZlbnRzPC9kZD4KCTxkdD48c3Ryb25n PnN1YmNhdHM8L3N0cm9uZz48L2R0PgoJPGRkPkNvbnNpZGVyIHN1Yi1jYXRlZ29yaWVzLiBD aG9vc2UgYSBudW1lcmljIG5lc3RpbmcgbGV2ZWwgdG8gY29uc2lkZXIsIG9yIHRoZSB3b3Jk IDxjb2RlPmFsbDwvY29kZT48L2RkPgoJPGR0PjxzdHJvbmc+c2VjdGlvbjwvc3Ryb25nPjwv ZHQ+Cgk8ZGQ+RmlsdGVyIGV2ZW50cyBieSB0aGlzIGxpc3Qgb2Ygc2VjdGlvbnM8L2RkPgoJ PGR0PjxzdHJvbmc+YXV0aG9yPC9zdHJvbmc+PC9kdD4KCTxkZD5GaWx0ZXIgZXZlbnRzIGJ5 IHRoaXMgbGlzdCBvZiBhdXRob3IgbG9naW4gbmFtZXM8L2RkPgoJPGR0PjxzdHJvbmc+cmVh bG5hbWU8L3N0cm9uZz48L2R0PgoJPGRkPkZpbHRlciBldmVudHMgYnkgdGhpcyBsaXN0IG9m IGF1dGhvciBSZWFsIE5hbWVzIChub3RlOiBtYXkgYWRkIG9uZSBleHRyYSBxdWVyeSk8L2Rk PgoJPGR0PjxzdHJvbmc+c2hvd2FsbDwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+SWYgeW91ciBjYWxl bmRhciBhcHBlYXJzIG9uIHRoZSBmcm9udCBwYWdlIG9mIHlvdXIgc2l0ZSBhbmQgeW91IGhh dmUgPGVtPm5vdDwvZW0+IHVzZWQgdGhlIDxjb2RlPnNlY3Rpb248L2NvZGU+IGF0dHJpYnV0 ZSwgdGhlbjoKCTxkbD4KCQk8ZGQ+MDogb25seSBzaG93cyBldmVudHMgZnJvbSBzZWN0aW9u cyBtYXJrZWQgd2l0aCA8Y29kZT5PbiBmcm9udCBwYWdlPC9jb2RlPjwvZGQ+CgkJPGRkPjE6 IHNob3dzIGFsbCBldmVudHMgZnJvbSBhbGwgc2VjdGlvbnM8L2RkPgoJPC9kbD48L2RkPgoJ PGRkPkRlZmF1bHQ6IDA8L2RkPgoJPGR0PjxzdHJvbmc+bW9udGg8L3N0cm9uZz48L2R0PgoJ PGRkPlN0YXJ0IHRoZSBjYWxlbmRhciBvbiB0aGlzIG1vbnRoIGZyb20gMSAoSmFuKSB0byAx MiAoRGVjKS4gTm9ybWFsIGNhbGVuZGFyIG5hdmlnYXRpb24gb3ZlcnJpZGVzIHRoaXMgdmFs dWU8L2RkPgoJPGRkPklmIDxjb2RlPnN0YXRpYzwvY29kZT4gaXMgdXNlZCwgdGhpcyBtb250 aCBiZWNvbWVzIHRoZSBvbmx5IG9uZSB5b3UgbWF5IHZpZXc8L2RkPgoJPGRkPklmIHVuc2V0 LCBhbmQgbm8gPGNvZGU+bT08L2NvZGU+IHZhbHVlIGFwcGVhcnMgb24gdGhlIDxzcGFuIGNs YXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmUsIHRoZSBjdXJyZW50IG1vbnRoIGlzIHVzZWQ8 L2RkPgoJPGRkPjxzdHJvbmc+d2Vlazwvc3Ryb25nPjwvZGQ+Cgk8ZGQ+U3RhcnQgdGhlIGNh bGVuZGFyIGR1cmluZyB0aGUgbW9udGggY29udGFpbmluZyB0aGlzIDxzcGFuIGNsYXNzPSJj YXBzIj5JU088L3NwYW4+IHdlZWsgKGZyb20gMSB0byA1Myk8L2RkPgoJPGRkPklnbm9yZWQg aWYgPGNvZGU+c3RhdGljPC9jb2RlPiBvciBvbmUgb2YgdGhlIGNhbGVuZGFyIG5hdmlnYXRp b24gY29udHJvbHMgaXMgdXNlZDwvZGQ+Cgk8ZGQ+SWYgYSA8Y29kZT53PTwvY29kZT4gdmFs dWUgYXBwZWFycyBvbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gbGluZSwg dGhlIGdpdmVuIHdlZWsgb3ZlcnJpZGVzIGFueSBtb250aCB2YWx1ZTwvZGQ+Cgk8ZHQ+PHN0 cm9uZz55ZWFyPC9zdHJvbmc+PC9kdD4KCTxkZD5TdGFydCB0aGUgY2FsZW5kYXIgYXQgdGhp cyA0LWRpZ2l0IHllYXIuIE5vcm1hbCBjYWxlbmRhciBuYXZpZ2F0aW9uIG92ZXJyaWRlcyB0 aGlzIHZhbHVlPC9kZD4KCTxkZD5JZiA8Y29kZT5zdGF0aWM8L2NvZGU+IGlzIHVzZWQsIHRo aXMgeWVhciBiZWNvbWVzIHRoZSBvbmx5IG9uZSB5b3UgbWF5IHZpZXc8L2RkPgoJPGRkPklm IHVuc2V0LCBhbmQgbm8gPGNvZGU+eT08L2NvZGU+IHZhbHVlIGFwcGVhcnMgb24gdGhlIDxz cGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmUsIHRoZSBjdXJyZW50IHllYXIgaXMg dXNlZDwvZGQ+Cgk8ZHQ+PHN0cm9uZz5zdGF0aWM8L3N0cm9uZz48L2R0PgoJPGRkPkZvcmNl IHRoZSBjYWxlbmRhciB0byBiZSBmaXhlZCB0byBvbmUgbW9udGgveWVhciAoaS5lLiBubyBu YXZpZ2F0aW9uKS4gTW9udGggYW5kIHllYXIgZGVjaWRlZCBieSBhdHRyaWJ1dGVzIDxjb2Rl Pm1vbnRoPC9jb2RlPiBhbmQgPGNvZGU+eWVhcjwvY29kZT4gb3IsIGlmIG9taXR0ZWQsIHRo ZSBjdXJyZW50IGRhdGUgd2lsbCBiZSB1c2VkPC9kZD4KPC9kbD4KCjxoMz5Gb3JtIGF0dHJp YnV0ZXM8L2gzPgoKPGRsPgoJPGR0PjxzdHJvbmc+Zm9ybTwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+ VXNlIHRoZSBnaXZlbiA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3JtIHRvIHBy b2Nlc3MgZWFjaCBldmVudDwvZGQ+Cgk8ZGQ+SWYgdGhlIHNtZF9jYWxlbmRhciB0YWcgaXMg dXNlZCBhcyBhIGNvbnRhaW5lciBpdCB3aWxsIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0 aGUgZm9ybTwvZGQ+Cgk8ZGQ+SWYgbmVpdGhlciBhcmUgdXNlZCwgYSBkZWZhdWx0IGlzIHVz ZWQgKExhcmdlOiBoeXBlcmxpbmtlZCBhcnRpY2xlIHRpdGxlLCBTbWFsbDogZW1wdHkgZXZl bnQpPC9kZD4KCTxkdD48c3Ryb25nPnNwYW5mb3JtPC9zdHJvbmc+PC9kdD4KCTxkZD5EaXNw bGF5IHNwYW5uZWQgZXZlbnRzIGRpZmZlcmVudGx5IHRvIHN0YW5kYXJkIGV2ZW50czsgdGhl eSB1c3VhbGx5IHVzZSB0aGUgc2FtZSA8Y29kZT5mb3JtPC9jb2RlPi9jb250YWluZXI8L2Rk PgoJPGRkPklmIG5laXRoZXIgYXJlIHNwZWNpZmllZCwgYSByaWdodC1hcnJvdyB3aWxsIGJl IHVzZWQgdG8gaW5kaWNhdGUgY29udGludWF0aW9uIG9mIHRoZSBwcmV2aW91cyBkYXkmIzgy MTc7cyBldmVudDwvZGQ+Cgk8ZGQ+Tm90ZTogdGhlIGZpcnN0IGRheSBvZiBhIHNwYW5uZWQg c2V0IGlzIDxlbT5ub3Q8L2VtPiBwYXNzZWQgdG8gdGhlIDxjb2RlPnNwYW5mb3JtPC9jb2Rl Pjsgb25seSBjb250aW51YXRpb24gY2VsbHMgYXJlIHBhc3NlZCB0byBpdDwvZGQ+Cgk8ZHQ+ PHN0cm9uZz5yZWN1cmZvcm08L3N0cm9uZz48L2R0PgoJPGRkPkRpc3BsYXkgcmVjdXJyaW5n IGV2ZW50cyBkaWZmZXJlbnRseSB0byBzdGFuZGFyZCBldmVudHM8L2RkPgoJPGRkPk5vdGU6 IHRoZSBmaXJzdCBldmVudCBvZiBhIHJlY3VycmluZyBzZXQgaXMgPGVtPm5vdDwvZW0+IHBh c3NlZCB0byA8Y29kZT5yZWN1cmZvcm08L2NvZGU+PC9kZD4KCTxkdD48c3Ryb25nPmNlbGxm b3JtPC9zdHJvbmc+ICg8c3BhbiBjbGFzcz0id2FybmluZyI+b25seSBvbiBsYXJnZSBjYWxl bmRhcnM8L3NwYW4+KTwvZHQ+Cgk8ZGQ+VXNlIGlmIHlvdSB3aXNoIHRvIGJ1aWxkIGVhY2gg Y2VsbCBlbnRpcmVseSBmcm9tIHNjcmF0Y2g8L2RkPgoJPGRkPlRoZXJlIGFyZSBzb21lIDxh IGhyZWY9IiNjZWxsZm9ybSI+cmVwbGFjZW1lbnQgdmFyaWFibGVzPC9hPiB5b3UgY2FuIHVz ZSB0byBpbnNlcnQgZHluYW1pYyBwaWVjZXMgb2YgaW5mb3JtYXRpb24gaW4geW91ciBjZWxs czwvZGQ+Cgk8ZGQ+Tm90ZTogeW91IGNhbm5vdCB1c2UgPHNwYW4gY2xhc3M9ImNhcHMiPlRY UDwvc3Bhbj4gYXJ0aWNsZSBvciBwbHVnaW4gdGFncyBpbiB0aGUgRm9ybTwvZGQ+Cgk8ZHQ+ PHN0cm9uZz5oZWFkZXJmb3JtPC9zdHJvbmc+PC9kdD4KCTxkZD5Vc2UgaWYgeW91IHdpc2gg dG8gYnVpbGQgdGhlIGhlYWRlciB5b3Vyc2VsZjwvZGQ+Cgk8ZGQ+VGhlcmUgYXJlIHNvbWUg PGEgaHJlZj0iI2hkcmZvcm0iPnJlcGxhY2VtZW50IHZhcmlhYmxlczwvYT4geW91IGNhbiB1 c2UgdG8gaW5zZXJ0IGR5bmFtaWMgcGllY2VzIG9mIGluZm9ybWF0aW9uIGluIHlvdXIgaGVh ZGVyPC9kZD4KPC9kbD4KCjxoMyBpZD0iZmxkYXR0cyI+RmllbGQtYmFzZWQgYXR0cmlidXRl cyAoY3VzdG9tIGZpZWxkcyBvciBvdGhlciBhcnRpY2xlIGZpZWxkcyk8L2gzPgoKPGRsPgoJ PGR0PjxzdHJvbmc+c3RlcGZpZWxkPC9zdHJvbmc+PC9kdD4KCTxkZD5JRCBvZiBhIGZpZWxk IHdpdGhpbiB3aGljaCBhbiBldmVudCBtYXkgYmUgdG9sZCB0byByZXBlYXQ8L2RkPgoJPGRk Pk5vdGU6IGl0IGlzIHRoZSBmaWVsZCYjODIxNztzIElEIDxlbT5ub3QgaXRzIG5hbWU8L2Vt Piwgc28gZm9yIGN1c3RvbSBmaWVsZHMgeW91IG11c3QgdXNlIDxjb2RlPmN1c3RvbV8xPC9j b2RlPiBvciA8Y29kZT5jdXN0b21fMjwvY29kZT4gZXRjPC9kZD4KCTxkZD5XaXRob3V0IHRo aXMgYXR0cmlidXRlLCBubyA8YSBocmVmPSIjcmVjdXIiPnJlY3VycmluZyBldmVudHM8L2E+ IG1heSBiZSBkZWZpbmVkPC9kZD4KCTxkdD48c3Ryb25nPm9taXRmaWVsZDwvc3Ryb25nPjwv ZHQ+Cgk8ZGQ+SUQgKG5vdCBuYW1lKSBvZiBhIGZpZWxkIHRoYXQgY29udGFpbnMgYSBsaXN0 IG9mIGRhdGVzIG9uIHdoaWNoIHRoaXMgZXZlbnQgaXMgdG8gYmUgPGEgaHJlZj0iI2NhbmNl bCI+b21pdHRlZDwvYT48L2RkPgoJPGR0PjxzdHJvbmc+c2tpcGZpZWxkPC9zdHJvbmc+PC9k dD4KCTxkZD5JRCAobm90IG5hbWUpIG9mIGEgZmllbGQgdGhhdCBjb250YWlucyBhIGxpc3Qg b2YgZGF0ZXMgb24gd2hpY2ggdGhpcyBldmVudCBpcyA8YSBocmVmPSIjY2FuY2VsIj5jYW5j ZWxsZWQ8L2E+PC9kZD4KCTxkdD48c3Ryb25nPmV4dHJhZmllbGQ8L3N0cm9uZz48L2R0PgoJ PGRkPklEIChub3QgbmFtZSkgb2YgYSBmaWVsZCBmcm9tIHdoaWNoIGEgbGlzdCBvZiA8YSBo cmVmPSIjZXh0cmEiPmFkZGl0aW9uYWwgZXZlbnQgZGF0ZXM8L2E+IG1heSBiZSBnaXZlbjsg dGhlIHNhbWUgZXZlbnQgZGV0YWlscyB3aWxsIGJlIGNvcGllZCB0byB0aGUgbmV3IGRheShz KTwvZGQ+Cgk8ZHQ+PHN0cm9uZz5leHRyYXN0cmljdDwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+Q29u dHJvbCB2aXNpYmlsaXR5IG9mIGV4dHJhIGRhdGVzIG9uIHRoZSBjYWxlbmRhci4gT3B0aW9u czoKCTxkbD4KCQk8ZGQ+MDogPGNvZGU+ZXh0cmFmaWVsZDwvY29kZT4gZGF0ZXMgYXV0b21h dGljYWxseSBhcHBlYXIgb24gdGhlIGNhbGVuZGFyPC9kZD4KCQk8ZGQ+MTogcmVzdHJpY3Qg bmV3IGRhdGVzIGZyb20gYXBwZWFyaW5nIGFmdGVyIHRoZSBldmVudCYjODIxNztzIGV4cGly eSBkYXRlPC9kZD4KCTwvZGw+PC9kZD4KCTxkZD5EZWZhdWx0OiAwPC9kZD4KCTxkdD48c3Ry b25nPnNob3dza2lwcGVkPC9zdHJvbmc+PC9kdD4KCTxkZD5Db250cm9sIHZpc2liaWxpdHkg b2YgY2FuY2VsbGVkIGV2ZW50cyBvbiB0aGUgY2FsZW5kYXIuIE9wdGlvbnM6Cgk8ZGw+CgkJ PGRkPjAgKGhpZGUpPC9kZD4KCQk8ZGQ+MSAoc2hvdyk8L2RkPgoJPC9kbD48L2RkPgoJPGRk PkRlZmF1bHQ6IDA8L2RkPgoJPGR0PjxzdHJvbmc+c2hvd3NwYW5uZWQ8L3N0cm9uZz48L2R0 PgoJPGRkPkNvbnRyb2wgdmlzaWJpbGl0eSBvZiBzcGFubmVkIGV2ZW50cyBvbiB0aGUgY2Fs ZW5kYXIuIE9wdGlvbnM6Cgk8ZGw+CgkJPGRkPjAgKGhpZGUpPC9kZD4KCQk8ZGQ+MSAoc2hv dyk8L2RkPgoJPC9kbD48L2RkPgoJPGRkPkRlZmF1bHQ6IDE8L2RkPgoJPGR0PjxzdHJvbmc+ ZGF0ZWZpZWxkczwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+SURzIChub3QgbmFtZXMpIG9mIHVwIHRv IHR3byBmaWVsZHMgZnJvbSB3aGljaCBwb3N0ZWQgYW5kIGV4cGlyeSBkYXRlIHN0YW1wcyBt YXkgYmUgcmVhZC4gQ29tbWEtc2VwYXJhdGUgdGhlIGZpZWxkIG5hbWVzOyB0aGUgZmlyc3Qg d2lsbCBiZSB1c2VkIGFzIHRoZSBQb3N0ZWQgZGF0ZSBhbmQgdGhlIHNlY29uZCBhcyB0aGUg RXhwaXJ5PC9kZD4KCTxkZD5JZiBlaXRoZXIgaXMgb21pdHRlZCBvciBtYW5nbGVkLCB0aGUg YXJ0aWNsZSYjODIxNztzICYjODIyMDtyZWFsJiM4MjIxOyBwb3N0ZWQvZXhwaXJ5IGRhdGUg d2lsbCBiZSB1c2VkIGluc3RlYWQ8L2RkPgoJPGRkPklmIHRoZSBleHBpcnkgZGF0ZSBvY2N1 cnMgYmVmb3JlIHRoZSBzdGFydCBkYXRlLCB5b3VyIGRhdGVmaWVsZHMgd2lsbCBiZSBpZ25v cmVkIGFuZCBhIHdhcm5pbmcgd2lsbCBiZSBpc3N1ZWQ8L2RkPgo8L2RsPgoKPGgzPkNvbmZp ZyBhdHRyaWJ1dGVzPC9oMz4KCjxkbD4KCTxkdD48c3Ryb25nPmhvbGlkYXlzPC9zdHJvbmc+ PC9kdD4KCTxkZD5MaXN0IG9mIGRhdGVzIHRoYXQgYXJlIGRlY3JlZWQgYXMgPGEgaHJlZj0i I2hvbGlkYXlzIj5ob2xpZGF5czwvYT48L2RkPgoJPGRkPk1heSBiZSBkZWZlcnJlZCB0byBh IDxjb2RlPiZsdDt0eHA6dmFyaWFibGUgLyZndDs8L2NvZGU+LCBpbiB3aGljaCBjYXNlIGRl ZmluZSB5b3VyIGxpc3QgaW4gYSBuYW1lZCB2YXJpYWJsZSBhbmQgdXNlIDxjb2RlPmhvbGlk YXlzPSZxdW90O3R4cHZhcjpteV92YXJfbmFtZSZxdW90OzwvY29kZT4gdG8gcmVhZCB0aGVt IGludG8gdGhlIHBsdWdpbjwvZGQ+Cgk8ZHQ+PHN0cm9uZz5ob2xpZGF5ZmxhZ3M8L3N0cm9u Zz48L2R0PgoJPGRkPlBlcm1pdCBjZXJ0YWluIGV2ZW50IGZsYWdzIHRvIGJlIHNjaGVkdWxl ZCBvbiBob2xpZGF5cy4gTGlzdCBvbmUgb3IgbW9yZSBvZjoKCTxkbD4KCQk8ZGQ+c3RhbmRh cmQ8L2RkPgoJCTxkZD5yZWN1cjwvZGQ+CgkJPGRkPm11bHRpPC9kZD4KCTwvZGw+PC9kZD4K CTxkZD5EZWZhdWx0OiA8Y29kZT5zdGFuZGFyZDwvY29kZT48L2RkPgoJPGR0PjxzdHJvbmc+ aWQ8L3N0cm9uZz48L2R0PgoJPGRkPjxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBJ RCB0byBhcHBseSB0byB0aGUgdGFibGUgdGhhdCBob2xkcyB0aGUgY2FsZW5kYXIuIFRoaXMg YmVjb21lcyB0aGUgdmFsdWUgb2YgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+ IHZhcmlhYmxlIDxjb2RlPmNhbGlkPC9jb2RlPjwvZGQ+Cgk8ZGQ+VXNlIHRoaXMgaWYgeW91 IGhhdmUgbW9yZSB0aGFuIG9uZSBjYWxlbmRhciBvbiBhIHBhZ2UgYW5kIHdpc2ggdG8gY29u dHJvbCB0aGVtIHNlcGFyYXRlbHkgdmlhIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9z cGFuPiB2YXJzPC9kZD4KCTxkdD48c3Ryb25nPm5hdmlkPC9zdHJvbmc+PC9kdD4KCTxkZD48 c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gSUQgdG8gYXBwbHkgdG8gdGhlIHByZXYv bmV4dC9tb250aC95ZWFyIG5hdmlnYXRpb24gZm9ybTwvZGQ+Cgk8ZHQ+PHN0cm9uZz55ZWFy d2lkdGg8L3N0cm9uZz48L2R0PgoJPGRkPkEgY29tbWEtc2VwYXJhdGVkIGxpc3QgdGhhdCBz cGVjaWZpZXMgaG93IG1hbnkgeWVhcnMgeW91ciBjYWxlbmRhciBzcGFucy4gVmlzaXRvcnMg d2lsbCBub3QgYmUgcGVybWl0dGVkIHRvIG5hdmlnYXRlIChuZXh0L3ByZXYpIHRoZSBjYWxl bmRhciBvdXRzaWRlIHRoaXMgcmFuZ2UuIE9wdGlvbnM6Cgk8ZGw+CgkJPGRkPjA6IHVzZSB0 aGUgZWFybGllc3QgKHBvc3RlZCkgZXZlbnQgYXMgdGhlIGVhcmxpZXN0IHllYXIsIGFuZCB0 aGUgbGF0ZXN0IChtb2RpZmllZCBvciBwb3N0ZWQsIHdoaWNoZXZlciBpcyBncmVhdGVyKSBl dmVudCBhcyB0aGUgbGF0ZXN0IHllYXI8L2RkPgoJCTxkZD5hbnkgb3RoZXIgc2luZ2xlIG51 bWJlciBleHBhbmRzIHRoZSByYW5nZSBlcXVhbGx5IGluIHBhc3QgJmFtcDsgZnV0dXJlIGRp cmVjdGlvbnM8L2RkPgoJCTxkZD5hbnkgcGFpciBvZiBudW1iZXJzIHN1YnRyYWN0cyB0aGUg Zmlyc3QgZnJvbSB0aGUgZWFybGllc3QgZXZlbnQgYW5kIGFkZHMgdGhlIHNlY29uZCBudW1i ZXIgb2Ygd2hvbGUgeWVhcnMgdG8gdGhlIGxhdGVzdCBldmVudDwvZGQ+CgkJPGRkPmFkZGlu ZyA8Y29kZT5jPC9jb2RlPiB0byBlaXRoZXIgdmFsdWUgY2F1c2VzIHRoZSBjdXJyZW50IHll YXIgdG8gYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBlYXJsaWVzdCBvciBsYXRlc3QgZXZlbnQ8 L2RkPgoJPC9kbD48L2RkPgoJPGRkPkV4YW1wbGU6IDxjb2RlPnllYXJ3aWR0aD0mcXVvdDsy LDRjJnF1b3Q7PC9jb2RlPiBzdWJ0cmFjdHMgMiB5ZWFycyBmcm9tIHRoZSBlYXJsaWVzdCBl dmVudCBhbmQgYWRkcyA0IHdob2xlIHllYXJzIHRvIHRvZGF5JiM4MjE3O3MgZGF0ZTwvZGQ+ Cgk8ZGQ+RGVmYXVsdDogMDwvZGQ+Cgk8ZHQ+PHN0cm9uZz5yZW1hcDwvc3Ryb25nPjwvZHQ+ Cgk8ZGQ+V2hlbiBkZWFsaW5nIHdpdGggbXVsdGlwbGUgY2FsZW5kYXJzIG9uIGEgcGFnZSBp dCBpcyBvZnRlbiBiZW5lZmljaWFsIHRvIHVzZSBkaWZmZXJlbnQgbmFtZXMgZm9yIDxjb2Rl Pnc9PC9jb2RlPiwgPGNvZGU+bT08L2NvZGU+IG9yIDxjb2RlPnk9PC9jb2RlPiBpbiB0aGUg PHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gc28geW91IGNhbiBuYXZpZ2F0ZSBjYWxl bmRhcnMgaW5kaXZpZHVhbGx5LiBUaGlzIGF0dHJpYnV0ZSBlbmFibGVzIHlvdSB0byByZW5h bWUgdGhlIHcsIG0sICZhbXA7IHkgdmFyaWFibGUgdG8gYW55IG5hbWUgc3BlY2lmaWVkIGFm dGVyIGEgY29sb24gKDopPC9kZD4KCTxkZD5FeGFtcGxlOiA8Y29kZT5yZW1hcD0mcXVvdDt3 OndrLCB5OnlyJnF1b3Q7PC9jb2RlPjwvZGQ+Cgk8ZHQ+PHN0cm9uZz5saW5rcG9zdGVkPC9z dHJvbmc+ICg8c3BhbiBjbGFzcz0id2FybmluZyI+b25seSBvbiBzbWFsbCBjYWxlbmRhcnM8 L3NwYW4+KTwvZHQ+Cgk8ZGQ+RWFjaCBjZWxsIHRoYXQgY29udGFpbnMgYW4gZXZlbnQgZmxh ZyBvZiB0aGUgZ2l2ZW4gdHlwZShzKSB3aWxsIGhhdmUgaXRzIGRheSBudW1iZXIgbGlua2Vk IHRvIHRoZSBldmVudCYjODIxNztzIHRydWUgc3RhcnQgZGF0ZSBpbnN0ZWFkIG9mIHRoZSBj ZWxsJiM4MjE3O3MgZGF0ZS4gVGhpcyBhbGxvd3MgeW91IHRvIGFsd2F5cyBsaW5rIHRvIGEg dmFsaWQgYXJ0aWNsZS9ldmVudDwvZGQ+Cgk8ZGQ+Tm90ZSB0aGF0IGlmIG1vcmUgdGhhbiBv bmUgZXZlbnQgb2NjdXJzIGluIHRoZSBjZWxsLCB0aGUgbGluayB3aWxsIG9ubHkgYmUgdG8g dGhlIGZpcnN0IGV2ZW50IHRoZSBwbHVnaW4gZmluZHM8L2RkPgoJPGRkPkV4YW1wbGU6IGlm IHlvdSBoYXZlIGEgd2Vla2x5IGV2ZW50IHRoYXQgc3RhcnRzIG9uIHRoZSAyMHRoIERlY2Vt YmVyIDIwMDgsIHNldHRpbmcgPGNvZGU+bGlua3Bvc3RlZD0mcXVvdDtyZWN1ciZxdW90Ozwv Y29kZT4gd2lsbCBjYXVzZSB0aGUgbGluayB0byBiZSA8Y29kZT5kYXRlPTIwMDgtMTItMjA8 L2NvZGU+IGV2ZXJ5IHdlZWsuIFdpdGhvdXQgbGlua3Bvc3RlZCwgdGhlIGRhdGVzIHdvdWxk IGJlIDIwMDgtMTItMjAsIDIwMDgtMTItMjcsIDIwMDktMDEtMDMsIGFuZCBzbyBvbjwvZGQ+ Cgk8ZGQ+RGVmYXVsdDogPGNvZGU+cmVjdXIsIG11bHRpLCBtdWx0aXByZXYsIG11bHRpbGFz dDwvY29kZT4gKGkuZS4gYW55IHJlY3VycmluZyBvciBzcGFubmVkIGV2ZW50KTwvZGQ+Cgk8 ZHQ+PHN0cm9uZz5tYWludGFpbjwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+S2VlcCB0cmFjayBvZiB0 aGlzIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHZhcmlhYmxlcyBpbiB0aGUgPHNwYW4gY2xh c3M9ImNhcHMiPlVSTDwvc3Bhbj4gd2hlbiBuYXZpZ2F0aW5nIHRoZSBjYWxlbmRhciB1c2lu ZyB0aGUgbmV4dC9wcmV2IG9yIG1vbnRoL3llYXIgc2VsZWN0IGxpc3RzLiBJZiB5b3Ugd2lz aCB0byBtYWludGFpbiBzdGF0ZSB5b3Vyc2VsZiBvciBkbyBzb21ldGhpbmcgZXhvdGljLCBl bXB0eSB0aGlzIGF0dHJpYnV0ZSBmaXJzdCB0byBhdm9pZCB3ZWlyZG5lc3MuIE9wdGlvbnM6 Cgk8ZGw+CgkJPGRkPmNhbGlkPC9kZD4KCQk8ZGQ+c2VjdGlvbjwvZGQ+CgkJPGRkPmNhdGVn b3J5PC9kZD4KCQk8ZGQ+YXV0aG9yPC9kZD4KCQk8ZGQ+YXJ0aWNsZTwvZGQ+CgkJPGRkPmRh dGU8L2RkPgoJCTxkZD5wZzwvZGQ+CgkJPGRkPmFueSBvdGhlciA8c3BhbiBjbGFzcz0iY2Fw cyI+VVJMPC9zcGFuPiB2YXJpYWJsZSBvZiB5b3VyIGNob29zaW5nPC9kZD4KCTwvZGw+PC9k ZD4KCTxkZD5FeGFtcGxlOiB1c2UgPGNvZGU+bWFpbnRhaW49JnF1b3Q7c2VjdGlvbiwgYXJ0 aWNsZSwgY2FsaWQmcXVvdDs8L2NvZGU+IGlmIHlvdSBoYXZlIGFuIGluZGl2aWR1YWwgYXJ0 aWNsZSBwYWdlIHdpdGggYSBjYWxlbmRhciBpbiBhIHNpZGViYXIsIHNvIHRoZSBjdXJyZW50 bHkgdmlld2VkIGFydGljbGUgd2lsbCByZW1haW4gaW4gdmlldyB3aGVuIGNoYW5naW5nIGRh dGU8L2RkPgoJPGRkPkRlZmF1bHQ6IGNhbGlkPC9kZD4KCTxkdD48c3Ryb25nPm5hbWV2YWw8 L3N0cm9uZz48L2R0PgoJPGRkPkFkZCB5b3VyIG93biBuYW1lL3ZhbHVlIHBhaXJzIHRvIHRo ZSBjYWxlbmRhciYjODIxNztzIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+LjwvZGQ+ Cgk8ZGQ+RXhhbXBsZTogPGNvZGU+bmFtZXZhbD0mcXVvdDt0cmFja2VyPW15Y2FsLCBrZWVw PTEmcXVvdDs8L2NvZGU+IHdvdWxkIGFkZCA8Y29kZT4/dHJhY2tlcj1teWNhbCZhbXA7a2Vl cD0xPC9jb2RlPiB0byB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4uIFVzZWZ1 bCBpZiB5b3Ugd2FudCB0byA8Y29kZT5tYWludGFpbjwvY29kZT4gc29tZSB2YWx1ZXMgd2hp Y2ggeW91IGNhbiYjODIxNzt0IGFkZCB0byB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwv c3Bhbj4gb24gcGFnZSBsb2FkPC9kZD4KCTxkdD48c3Ryb25nPmV2ZW50X2RlbGltPC9zdHJv bmc+PC9kdD4KCTxkZD5EZWxpbWl0ZXIgYmV0d2VlbiBlYWNoIGV2ZW50LjwvZGQ+Cgk8ZGQ+ RGVmYXVsdDogY29tbWE8L2RkPgo8L2RsPgoKPGgzPlN0eWxlIGF0dHJpYnV0ZXM8L2gzPgoK PGRsPgoJPGR0PjxzdHJvbmc+Y2xhc3NsZXZlbHM8L3N0cm9uZz48L2R0PgoJPGRkPkVhY2gg ZmxhZ2dlZCBldmVudCBjYW4gYmUgZ2l2ZW4gYSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9z cGFuPiBjbGFzcyBiYXNlZCBvbiBpdHMgZmxhZyBuYW1lKHMpLiBDbGFzc2VzIGNhbiBiZSBh cHBsaWVkIHRvIGV2ZW50cywgY2VsbHMsIG9yIGJvdGguIFlvdSBtYXkgYWxzbyBwcm9tb3Rl IChpLmUuIGNvcHkpIGFsbCBldmVudCBjbGFzc2VzIHRoYXQgb2NjdXIgaW4gYSBkYXkgdG8g dGhlIGNlbGwgaXRzZWxmIHNvIHlvdSBjYW4gc3R5bGUgdGhlIGNlbGwgYmFzZWQgb24gdGhl IGV2ZW50cyBpdCBjb250YWlucy4gT3B0aW9uczoKCTxkbD4KCQk8ZGQ+ZXZlbnQ8L2RkPgoJ CTxkZD5jZWxsPC9kZD4KCQk8ZGQ+Y2VsbHBsdXMgKGZvciBjb3B5aW5nIHVuaXF1ZSBldmVu dCBjbGFzc2VzIHRvIHRoZSBjb250YWluaW5nIGNlbGwpPC9kZD4KCTwvZGw+PC9kZD4KCTxk ZD5Ob3RlIHlvdSBzaG91bGQgbm90IHVzZSA8Y29kZT5jZWxsPC9jb2RlPiBhbmQgPGNvZGU+ Y2VsbHBsdXM8L2NvZGU+IHRvZ2V0aGVyIGJlY2F1c2UgdGhlIGxhdHRlciBvdmVycmlkZXMg dGhlIGZvcm1lcjwvZGQ+Cgk8ZGQ+RGVmYXVsdDogY2VsbCwgZXZlbnQ8L2RkPgoJPGR0Pjxz dHJvbmc+Y2xhc3NwcmVmaXhlczwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+Q29tbWEtc2VwYXJhdGVk IGxpc3Qgb2YgdXAgdG8gdHdvIHByZWZpeGVzIHRvIGFwcGx5IHRvIHlvdXIgY2xhc3MgbmFt ZXMuIFRoZSBmaXJzdCBwcmVmaXggaXMgYXBwbGllZCB0byBjZWxsLWxldmVsIGNsYXNzZXMg KGFuZCBmbGFncykgYW5kIHRoZSBzZWNvbmQgcHJlZml4IGlzIGFwcGxpZWQgdG8gZXZlbnQg Y2xhc3NlcyAoc2VlIDxjb2RlPmV2ZW50Y2xhc3NlczwvY29kZT4pPC9kZD4KCTxkZD5JZiB5 b3Ugb25seSBzcGVjaWZ5IG9uZSBwcmVmaXgsIGl0IHdpbGwgYmUgdXNlZCBmb3IgYm90aC4g SWYgeW91IHVzZSA8Y29kZT5jbGFzc3ByZWZpeGVzPSZxdW90OyZxdW90OzwvY29kZT4gdGhl biBubyBwcmVmaXhlcyB3aWxsIGJlIHVzZWQgYXQgYWxsPC9kZD4KCTxkZD5EZWZhdWx0OiBz bWRfY2FsXywgc21kX2NhbF9ldl88L2RkPgoJPGR0PjxzdHJvbmc+Y2xhc3M8L3N0cm9uZz48 L2R0PgoJPGRkPkNsYXNzIG5hbWUgb2YgdGhlIGNhbGVuZGFyIHRhYmxlIGl0c2VsZjwvZGQ+ Cgk8ZGQ+RGVmYXVsdDogdW5zZXQ8L2RkPgoJPGR0PjxzdHJvbmc+cm93Y2xhc3M8L3N0cm9u Zz48L2R0PgoJPGRkPkNsYXNzIG5hbWUgb2YgZWFjaCB0YWJsZSByb3c8L2RkPgoJPGRkPkRl ZmF1bHQ6IHVuc2V0PC9kZD4KCTxkdD48c3Ryb25nPmNlbGxjbGFzczwvc3Ryb25nPjwvZHQ+ Cgk8ZGQ+Q2xhc3MgbmFtZSBvZiBlYWNoIHRhYmxlIGNlbGw8L2RkPgoJPGRkPkRlZmF1bHQ6 IHVuc2V0PC9kZD4KCTxkdD48c3Ryb25nPmVtcHR5Y2xhc3M8L3N0cm9uZz48L2R0PgoJPGRk PkNsYXNzIG5hbWUgb2YgYW55IGNlbGxzIHRoYXQgZG9uJiM4MjE3O3QgY29udGFpbiBhIGRh eSBudW1iZXIgKGkuZS4gdGhlIGJsYW5rIGNlbGxzIGF0IHRoZSBzdGFydCAmYW1wOyBlbmQg b2YgYSBtb250aCk8L2RkPgoJPGRkPkRlZmF1bHQ6IGVtcHR5PC9kZD4KCTxkdD48c3Ryb25n Pmlzb3dlZWtjbGFzczwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+Q2xhc3MgbmFtZSBvZiBlYWNoIGNl bGwgY29udGFpbmluZyBhbiA8c3BhbiBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiB3ZWVrPC9k ZD4KCTxkZD5EZWZhdWx0OiB3ZWVrPC9kZD4KCTxkdD48c3Ryb25nPm5hdmNsYXNzPC9zdHJv bmc+PC9kdD4KCTxkZD5DbGFzcyBuYW1lIG9mIHRoZSBwcmV2L25leHQgbW9udGggbmF2IGFy cm93cy4gSWYgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBpcyB1c2VkLCB0aGUgZmlyc3QgaXRl bSB3aWxsIGJlIHRoZSBuYW1lIG9mIHRoZSBjbGFzcyBvZiB0aGUgcHJldmlvdXMgbW9udGgs IHRoZSAybmQgaXRlbSBvZiB0aGUgbmV4dCBtb250aC4gSWYgYSBzaW5nbGUgdmFsdWUgaXMg dXNlZCwgYm90aCBjbGFzcyBuYW1lcyB3aWxsIGJlIHRoZSBzYW1lPC9kZD4KCTxkZD5EZWZh dWx0OiBuYXZwcmV2LCBuYXZuZXh0PC9kZD4KCTxkdD48c3Ryb25nPm15Y2xhc3M8L3N0cm9u Zz48L2R0PgoJPGRkPkNsYXNzIG5hbWUgb2YgYm90aCB0aGUgbW9udGggYW5kIHllYXIgaW4g dGhlIGNhbGVuZGFyIGhlYWRlciAoZWl0aGVyIHRoZSA8Y29kZT4mbHQ7c3BhbiZndDs8L2Nv ZGU+IG9yIDxjb2RlPiZsdDtzZWxlY3QmZ3Q7PC9jb2RlPiB0YWdzKS4gSWYgPGNvZGU+bXl3 cmFwdGFnPC9jb2RlPiBpcyB1c2VkLCB0aGUgY2xhc3MgaXMgYXBwbGllZCB0byB0aGUgd3Jh cHRhZyBpbnN0ZWFkPC9kZD4KCTxkZD5EZWZhdWx0OiB1bnNldDwvZGQ+Cgk8ZHQ+PHN0cm9u Zz5ldmVudGNsYXNzZXM8L3N0cm9uZz48L2R0PgoJPGRkPkNvbW1hLXNlcGFyYXRlZCBsaXN0 IG9mIGl0ZW1zIHRvIGFkZCBhcyBjbGFzc2VzIHRvIGVhY2ggZXZlbnQuIEVhY2ggYXJlIHBy ZWZpeGVkIHdpdGggdGhlIGV2ZW50IHByZWZpeDwvZGQ+Cgk8ZGQ+RXhhbXBsZTogPGNvZGU+ ZXZlbnRjbGFzc2VzPSZxdW90O0lELCBBdXRob3JJRCwgY3VzdG9tXzUmcXVvdDs8L2NvZGU+ IHdvdWxkIGFkZCB0aHJlZSBjbGFzc2VzIHRvIGVhY2ggZXZlbnQgY29ycmVzcG9uZGluZyB0 byB0aGUgZXZlbnQmIzgyMTc7cyBJRCwgaXRzIGF1dGhvciAobG9naW4pIG5hbWUgYW5kIHRo ZSBjb250ZW50cyBvZiBjdXN0b21fNTwvZGQ+Cgk8ZGQ+SWYgeW91IHVzZSA8Y29kZT5jZWxs cGx1czwvY29kZT4sIHRoZXNlIGNsYXNzZXMgd2lsbCBiZSBjb3BpZWQgdG8gdGhlIGNlbGwg bGV2ZWwuIFNvbWUgc3BlY2lhbCBuYW1lcyBleGlzdDogPGNvZGU+Y2F0ZWdvcnk8L2NvZGU+ IGFkZHMgYm90aCBDYXRlZ29yeTEgYW5kIENhdGVnb3J5MiAoaWYgc2V0KTsgPGNvZGU+Z2Nh dDwvY29kZT4gd2lsbCBhZGQgdGhlIGN1cnJlbnQgJiM4MjE2O2dsb2JhbCYjODIxNzsgY2F0 ZWdvcnkgKGlmIGZpbHRlcmluZyBieSBjYXRlZ29yeSk7IDxjb2RlPmF1dGhvcjwvY29kZT4g YWRkcyB0aGUgYXV0aG9yIElEIChpZiBmaWx0ZXJpbmcgYnkgYXV0aG9yKTsgPGNvZGU+c2Vj dGlvbjwvY29kZT4gYWRkcyB0aGUgY3VycmVudCBzZWN0aW9uPC9kZD4KCTxkZD5EZWZhdWx0 OiBjYXRlZ29yeTwvZGQ+Cgk8ZHQ+PHN0cm9uZz5ldmVudHdyYXB0YWc8L3N0cm9uZz48L2R0 PgoJPGRkPjxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiB0YWcsIHdpdGhvdXQgYnJh Y2tldHMsIHRvIHdyYXAgZWFjaCBldmVudCB3aXRoPC9kZD4KCTxkZD5EZWZhdWx0OiBzcGFu PC9kZD4KCTxkdD48c3Ryb25nPm15d3JhcHRhZzwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+PHNwYW4g Y2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IHRhZywgd2l0aG91dCBicmFja2V0cywgdG8gd3Jh cCBhcm91bmQgPGVtPmJvdGg8L2VtPiBtb250aCArIHllYXIgZHJvcGRvd24gc2VsZWN0IGxp c3RzIGFuZCBzdWJtaXQgYnV0dG9uPC9kZD4KCTxkZD5EZWZhdWx0OiB1bnNldDwvZGQ+Cjwv ZGw+Cgo8aDMgaWQ9ImNlbGxmb3JtIj5Vc2luZyBhIDxjb2RlPmNlbGxmb3JtPC9jb2RlPiB3 aXRoIHJlcGxhY2VtZW50IHZhcmlhYmxlczwvaDM+Cgo8cD5JZiB5b3UgZG9uJiM4MjE3O3Qg bGlrZSB0aGUgbGF5b3V0IG9mIHRoZSBkZWZhdWx0IGNlbGwsIHlvdSBjYW4gZG8gaXQgeW91 cnNlbGYgd2l0aCB0aGUgPGNvZGU+Y2VsbGZvcm08L2NvZGU+IGF0dHJpYnV0ZS4gVGhlIGNl bGxzIGFyZSBnZW5lcmF0ZWQgPGVtPmxhc3Q8L2VtPiwgc28gYnkgdGhlIHRpbWUgdGhlIHBs dWdpbiByZWFjaGVzIHRoaXMgYXR0cmlidXRlLCBhbGwgZXZlbnRzIGhhdmUgYWxyZWFkeSBi ZWVuIHByb2Nlc3NlZCBieSBhbnkgb2YgeW91ciBmb3Jtcy9jb250YWluZXJzLiBUaHVzIHlv dSBjYW4mIzgyMTc7dCB1c2UgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gYXJ0aWNs ZSBvciBwbHVnaW4gdGFncy48L3A+Cgo8cD5UbyBidWlsZCB5b3VyIG93biBjZWxscyB5b3Ug b2Z0ZW4gbmVlZCBpbmZvcm1hdGlvbiBzdWNoIGFzIHRoZSBldmVudHMgdGhhdCBmYWxsIG9u IGEgcGFydGljdWxhciBkYXk7IG9yIHRoZSB3ZWVrLCBtb250aCBvciBkYXkgbnVtYmVycywg ZXRjLiBTbyB5b3UgbWF5IGFsc28gaW5zZXJ0IGFueSBvZiB0aGUgZm9sbG93aW5nIHJlcGxh Y2VtZW50cyB0byBoYXZlIHRoZSByZWxldmFudCB2YWx1ZSBpbnNlcnRlZCBhbW9uZyB5b3Vy IG1hcmt1cDo8L3A+Cgo8dWw+Cgk8bGk+e2RheX0gLyB7ZGF5emVyb3N9IDogZGF5IG9mIHRo ZSB3ZWVrICgxLTMxIC8gMDEtMzEpPC9saT4KCTxsaT57d2Vla2RheX0gOiB3ZWVrZGF5IGlu IHRoZSBsb2NhbCBsYW5ndWFnZSwgb3IgZnJvbSB5b3VyIDxjb2RlPmRheWZvcm1hdDwvY29k ZT4gbGlzdDwvbGk+Cgk8bGk+e3dlZWtkYXlmdWxsfSBvciB7d2Vla2RheWFiYnJ9IDogd2Vl a2RheSBpbiB0aGUgbG9jYWwgbGFuZ3VhZ2U8L2xpPgoJPGxpPnt3ZWVrfSA6IDxzcGFuIGNs YXNzPSJjYXBzIj5JU088L3NwYW4+IHdlZWsgbnVtYmVyICgwMS01Myk8L2xpPgoJPGxpPntt b250aH0gLyB7bW9udGh6ZXJvc30gOiBtb250aCBudW1iZXIgKDEtMTIgLyAwMS0xMik8L2xp PgoJPGxpPnttb250aG5hbWV9IDogbW9udGggbmFtZSBpbiB0aGUgbG9jYWwgbGFuZ3VhZ2Us IG9yIGZyb20geW91ciA8Y29kZT5tb250aGZvcm1hdDwvY29kZT4gbGlzdDwvbGk+Cgk8bGk+ e21vbnRobmFtZWZ1bGx9IG9yIHttb250aG5hbWVhYmJyfSA6IG1vbnRoIG5hbWUgaW4gdGhl IGxvY2FsIGxhbmd1YWdlPC9saT4KCTxsaT57eWVhcn0gOiA0LWRpZ2l0IHllYXI8L2xpPgoJ PGxpPntzaG9ydHllYXJ9IDogMi1kaWdpdCB5ZWFyPC9saT4KCTxsaT57aXNveWVhcn0gOiA0 IGRpZ2l0IDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IHllYXI8L2xpPgoJPGxpPntz aG9ydGlzb3llYXJ9IDogMiBkaWdpdCA8c3BhbiBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiB5 ZWFyPC9saT4KCTxsaT57ZXZpZH0gOiBldmVudCAoYXJ0aWNsZSkgSUQ8L2xpPgoJPGxpPntl dmVudHN9IDogYWxsIGV2ZW50cyBmb3IgdGhlIGRheTwvbGk+Cgk8bGk+e3N0YW5kYXJkfSA6 IG9ubHkgc3RhbmRhcmQgZXZlbnRzPC9saT4KCTxsaT57cmVjdXJmaXJzdH0gLyB7cmVjdXJ9 IDogdmFyaW91cyByZWN1cnJpbmcgZXZlbnRzPC9saT4KCTxsaT57YWxscmVjdXJ9IDogYWxs IHJlY3VycmluZyBldmVudHMgZm9yIHRoZSBkYXk8L2xpPgoJPGxpPnttdWx0aWZpcnN0fSAv IHttdWx0aX0gLyB7bXVsdGlwcmV2fSAvIHttdWx0aWxhc3R9IDogdmFyaW91cyBtdWx0aSBl dmVudHM8L2xpPgoJPGxpPnthbGxtdWx0aX0gOiBhbGwgbXVsdGkgZXZlbnRzIGZvciB0aGUg ZGF5PC9saT4KCTxsaT57Y2FuY2VsfSA6IG9ubHkgY2FuY2VsbGVkIGV2ZW50czwvbGk+Cgk8 bGk+e2V4dHJhfSA6IG9ubHkgZXh0cmEgZXZlbnRzPC9saT4KPC91bD4KCjxoMyBpZD0iaGRy Zm9ybSI+VXNpbmcgYSA8Y29kZT5oZWFkZXJmb3JtPC9jb2RlPjwvaDM+Cgo8cD5Zb3UgY2Fu IGNyZWF0ZSB5b3VyIG93biBoZWFkZXIgaWYgeW91IHdpc2ggYW5kIGVtcGxveSBhbnkgb2Yg dGhlIGZvbGxvd2luZyByZXBsYWNlbWVudHMgaW4gdGhlIG1hcmt1cDo8L3A+Cgo8dWw+Cgk8 bGk+e2ZpcnN0ZGF5fSA6IGN1cnJlbnQgd2Vla2RheSAoYXMgYSBudW1iZXIgZnJvbSAwIHRv IDYpPC9saT4KCTxsaT57ZGF5bmFtZXN9IDogY29tbWEtc2VwYXJhdGVkIGRheSBuYW1lczwv bGk+Cgk8bGk+e2lzb3dlZWtoZWFkfSA6IDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+ IHdlZWsgaGVhZGluZzwvbGk+Cgk8bGk+e3dlZWt9IDogPHNwYW4gY2xhc3M9ImNhcHMiPklT Tzwvc3Bhbj4gd2VlazwvbGk+Cgk8bGk+e21vbnRofSA6IG1vbnRoPC9saT4KCTxsaT57eWVh cn0gOiB5ZWFyPC9saT4KCTxsaT57aXNveWVhcn0gOiA8c3BhbiBjbGFzcz0iY2FwcyI+SVNP PC9zcGFuPiB5ZWFyPC9saT4KPC91bD4KCjxoMyBpZD0ic2l6ZWRpZmYiPkRpZmZlcmVuY2Vz IGJldHdlZW4gbGFyZ2UgYW5kIHNtYWxsIGNhbGVuZGFyczwvaDM+Cgo8dWw+Cgk8bGk+PGNv ZGU+Y2VsbGZvcm08L2NvZGU+IGNhbm5vdCBiZSB1c2VkIG9uIGEgc21hbGwgY2FsZW5kYXI8 L2xpPgoJPGxpPkJ5IGRlZmF1bHQsIG5vIGV2ZW50IGRlc2NyaXB0aW9ucyBhcmUgcGxhY2Vk IGluIHRoZSBzbWFsbCBjYWxlbmRhci4gWW91IGNhbiBhZGQgdGhlbSB5b3Vyc2VsZiBpZiB5 b3Ugd2lzaCB1c2luZyBhIGZvcm0vY29udGFpbmVyPC9saT4KCTxsaT5UaGUgb25seSB0aGlu ZyByZW5kZXJlZCBpbiBhIHNtYWxsIGNhbGVuZGFyIGNlbGwgaXMgdGhlIGh5cGVybGlua2Vk IGRhdGUgYW5kIGFueSBmbGFncyBzbyB5b3UgY2FuIHN0eWxlIHRoZSBib3hlczwvbGk+Cgk8 bGk+PGNvZGU+Y2xhc3NsZXZlbHM8L2NvZGU+IGFyZSBpZ25vcmVkOiBldmVyeXRoaW5nIGlz IGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgYXQgdGhlIGNlbGwgbGV2ZWwgKGkuZS4gPGNvZGU+ Y2VsbHBsdXM8L2NvZGU+IGlzIHNldCk8L2xpPgoJPGxpPjxjb2RlPmV2ZW50Y2xhc3Nlczwv Y29kZT4gYXJlIHN0aWxsIGhvbm91cmVkIGlmIHlvdSB3aXNoIHRvIHVzZSBhIGZvcm0gdG8g cHJvY2VzcyB0aGVtIHlvdXJzZWxmPC9saT4KCTxsaT5UaGUgc21hbGwgY2FsZW5kYXIgb3V0 cHV0cyB5ZWFyLW1vbnRoLWRheS10aXRsZSBvciBtZXNzeSBwZXJtbGlua3Mgb25seTwvbGk+ CjwvdWw+Cgo8aDIgaWQ9ImlmY2FsIj5UYWc6IDxjb2RlPiZsdDt0eHA6c21kX2lmX2NhbCZn dDs8L2NvZGU+PC9oMj4KCjxwPlRoaXMgY29uZGl0aW9uYWwgdGFnIGFsbG93cyB5b3UgJiM4 MjEyOyBpbnNpZGUgeW91ciBjb250YWluZXIvZm9ybXMgICYjODIxMjsgdG8gdGVzdCBjZXJ0 YWluIGNvbmRpdGlvbnMgb2YgdGhlIGN1cnJlbnQgZXZlbnQvY2VsbC4gRm9yIGVuaGFuY2Vk IGNvbmRpdGlvbmFsIGNoZWNraW5nIChwZXJoYXBzIGluIGNvbmp1bmN0aW9uIHdpdGggPGEg aHJlZj0iI2NhbG5vdyI+c21kX2NhbF9ub3c8L2E+KSwgY29uc2lkZXIgdGhlIHNtZF9pZiBw bHVnaW4uIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHVuc2V0IHVubGVzcyBzdGF0ZWQgb3RoZXJ3 aXNlLjwvcD4KCjxoMyBpZD0iYXR0c2lmY2FsIj5BdHRyaWJ1dGVzPC9oMz4KCjxkbD4KCTxk dD48c3Ryb25nPmZsYWc8L3N0cm9uZz48L2R0PgoJPGRkPlRoZSBjZWxsIG9yIGV2ZW50IGZs YWcocykgeW91IHdhbnQgdG8gdGVzdCwgZWFjaCBzZXBhcmF0ZWQgYnkgYSBjb21tYS4gTGlz dCBvbmUgb3IgbW9yZSBvZjoKCTxkbD4KCQk8ZGQ+ZXZlbnQ8L2RkPgoJCTxkZD5zdGFuZGFy ZDwvZGQ+CgkJPGRkPnJlY3VyZmlyc3Q8L2RkPgoJCTxkZD5yZWN1cjwvZGQ+CgkJPGRkPm11 bHRpZmlyc3Q8L2RkPgoJCTxkZD5tdWx0aTwvZGQ+CgkJPGRkPm11bHRpbGFzdDwvZGQ+CgkJ PGRkPm11bHRpcHJldjwvZGQ+CgkJPGRkPmNhbmNlbDwvZGQ+CgkJPGRkPm9taXQ8L2RkPgoJ CTxkZD5leHRyYTwvZGQ+CgkJPGRkPmhvbHM8L2RkPgoJCTxkZD50b2RheTwvZGQ+CgkJPGRk PjxzcGFuIGNsYXNzPSJjYXBzIj5TTUQ8L3NwYW4+X0FOWSAod2lsbCB0cmlnZ2VyIGlmIHRo ZSBjZWxsIG9yIGV2ZW50IGNvbnRhaW5zIGFueSBvZiB0aGUgYWJvdmUpPC9kZD4KCTwvZGw+ PC9kZD4KCTxkdD48c3Ryb25nPmNhbGlkPC9zdHJvbmc+PC9kdD4KCTxkZD5UaGUgY2FsZW5k YXIgSUQgeW91IHdpc2ggdG8gY2hlY2sgZm9yIGEgbWF0Y2g8L2RkPgoJPGR0PjxzdHJvbmc+ eWVhcjwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+VGhlIHllYXIgdGhlIGN1cnJlbnQgY2VsbCBmYWxs cyBpbjwvZGQ+Cgk8ZHQ+PHN0cm9uZz5pc295ZWFyPC9zdHJvbmc+PC9kdD4KCTxkZD5UaGUg PHNwYW4gY2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4geWVhciB0aGUgY3VycmVudCBjZWxsIGZh bGxzIGluPC9kZD4KCTxkdD48c3Ryb25nPm1vbnRoPC9zdHJvbmc+PC9kdD4KCTxkZD5UaGUg bW9udGggbnVtYmVyICgxLTEyKSB0aGF0IHRoZSBjdXJyZW50IGNlbGwgZmFsbHMgaW48L2Rk PgoJPGR0PjxzdHJvbmc+d2Vlazwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+VGhlIDxzcGFuIGNsYXNz PSJjYXBzIj5JU088L3NwYW4+IHdlZWsgbnVtYmVyIHRoYXQgdGhlIGN1cnJlbnQgY2VsbCBm YWxscyBpbjwvZGQ+Cgk8ZHQ+PHN0cm9uZz5kYXk8L3N0cm9uZz48L2R0PgoJPGRkPlRoZSBk YXkgbnVtYmVyIHRoZSBjdXJyZW50IGNlbGwgZmFsbHMgaW48L2RkPgoJPGR0PjxzdHJvbmc+ bG9naWM8L3N0cm9uZz48L2R0PgoJPGRkPk1ldGhvZCBvZiBjb21iaW5pbmcgdGhlIG5vbWlu YXRlZCB0ZXN0cy4gT3B0aW9uczoKCTxkbD4KCQk8ZGQ+b3I6IHRhZyB3aWxsIHRyaWdnZXIg aWYgYXQgbGVhc3Qgb25lIG9mIHRoZSB0ZXN0cyBpcyB0cnVlPC9kZD4KCQk8ZGQ+YW5kOiB0 YWcgd2lsbCBvbmx5IHRyaWdnZXIgaWYgYWxsIHRoZSB0ZXN0cyBhcmUgdHJ1ZTwvZGQ+Cgk8 L2RsPjwvZGQ+Cgk8ZGQ+RGVmYXVsdDogb3I8L2RkPgo8L2RsPgoKPHA+JiM4MjE2O0FuZCYj ODIxNzsgbG9naWMgaXMgdXNlZnVsIGZvciBjaGVja2luZyBpZiB0aGUgY2VsbCBpcyBvZiBh IGNlcnRhaW4gdHlwZSA8c3BhbiBjbGFzcz0iY2FwcyI+QU5EPC9zcGFuPiBpcyBsYXRlciB0 aGFuIHRoZSAxNXRoIG9mIHRoZSBtb250aCwgZm9yIGV4YW1wbGUuPC9wPgoKPHA+UnVkaW1l bnRhcnkgY29tcGFyYXRvcnMgY2FuIGJlIGFwcGxpZWQgdG8gdGhlIDxjb2RlPihpc28peWVh cjwvY29kZT4sIDxjb2RlPm1vbnRoPC9jb2RlPiwgPGNvZGU+d2VlazwvY29kZT4gYW5kIDxj b2RlPmRheTwvY29kZT4gYXR0cmlidXRlcy4gTm9ybWFsbHkgdGhlIHZhbHVlIHlvdSBzdXBw bHkgd2lsbCBiZSB0ZXN0ZWQgZm9yIGFuIGV4YWN0IG1hdGNoIGJ1dCBpZiB5b3UgcHJlZml4 IGl0IHdpdGggb25lIG9mIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyIHNlcXVlbmNlcyB0aGVu IHRoZSBiZWhhdmlvdXIgY2hhbmdlczo8L3A+Cgo8dWw+Cgk8bGk+PGNvZGU+Jmd0OzwvY29k ZT4gdGVzdHMgaWYgYXR0cmlidXRlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgZ2l2ZW4gdmFsdWUg KGUuZy4gPGNvZGU+eWVhcj0mcXVvdDsmZ3Q7MjAwOCZxdW90OzwvY29kZT4pPC9saT4KCTxs aT48Y29kZT4mZ3Q7PTwvY29kZT4gdGVzdHMgaWYgYXR0cmlidXRlIGlzIGdyZWF0ZXIgdGhh biBvciBlcXVhbCB0byB0aGUgZ2l2ZW4gdmFsdWUgKGUuZy4gPGNvZGU+bW9udGg9JnF1b3Q7 Jmd0Oz03JnF1b3Q7PC9jb2RlPik8L2xpPgoJPGxpPjxjb2RlPiZsdDs8L2NvZGU+IHRlc3Rz IGlmIGF0dHJpYnV0ZSBpcyBsZXNzIHRoYW4gdGhlIGdpdmVuIHZhbHVlPC9saT4KCTxsaT48 Y29kZT4mbHQ7PTwvY29kZT4gdGVzdHMgaWYgYXR0cmlidXRlIGlzIGxlc3MgdGhhbiBvciBl cXVhbCB0byB0aGUgZ2l2ZW4gdmFsdWU8L2xpPgoJPGxpPjxjb2RlPiE8L2NvZGU+IHRlc3Rz IGlmIGF0dHJpYnV0ZSBpcyA8ZW0+bm90PC9lbT4gdGhlIGdpdmVuIHZhbHVlIChlLmcuIDxj b2RlPmRheT0mcXVvdDshMTUmcXVvdDs8L2NvZGU+KTwvbGk+CjwvdWw+Cgo8aDIgaWQ9ImNh bGluZm8iPlRhZzogPGNvZGU+Jmx0O3R4cDpzbWRfY2FsX2luZm8mZ3Q7PC9jb2RlPjwvaDI+ Cgo8cD5JbnNpZGUgeW91ciBzbWRfY2FsZW5kYXIgY29udGFpbmVyL2Zvcm1zLCB1c2UgdGhp cyB0YWcgdG8gb3V0cHV0IGNlcnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQg ZXZlbnQuPC9wPgoKPGgzIGlkPSJhdHRzY2FsaW5mbyI+QXR0cmlidXRlczwvaDM+Cgo8ZGw+ Cgk8ZHQ+PHN0cm9uZz50eXBlPC9zdHJvbmc+PC9kdD4KCTxkZD5Db21tYS1zZXBhcmF0ZWQg bGlzdCBvZiB0eXBlcyBvZiBpbmZvcm1hdGlvbiB5b3Ugd2FudCB0byBkaXNwbGF5LiBPcHRp b25zOgoJPGRsPgoJCTxkZD5mbGFnPC9kZD4KCQk8ZGQ+Y2FsaWQ8L2RkPgoJCTxkZD4oaXNv KXllYXI8L2RkPgoJCTxkZD5tb250aDwvZGQ+CgkJPGRkPndlZWs8L2RkPgoJCTxkZD5kYXk8 L2RkPgoJCTxkZD5zIChjdXJyZW50IHNlY3Rpb24pPC9kZD4KCQk8ZGQ+Y2F0ZWdvcnk8L2Rk PgoJCTxkZD5hdXRob3I8L2RkPgoJCTxkZD5yZWFsbmFtZTwvZGQ+CgkJPGRkPmFydGljbGUg KGlkIG9mIHRoZSBjdXJyZW50bHkgdmlld2VkIGFydGljbGUpPC9kZD4KCQk8ZGQ+YW55IG90 aGVyIGFydGljbGUgdmFyaWFibGUgc3VjaCBhcyA8Y29kZT5zZWN0aW9uPC9jb2RlPiAodGhl IGN1cnJlbnQgYXJ0aWNsZSYjODIxNztzIHNlY3Rpb24pLCA8Y29kZT5hdXRob3JpZDwvY29k ZT4sIDxjb2RlPmFydGljbGVfaW1hZ2U8L2NvZGU+LCBldGM8L2RkPgoJPC9kbD48L2RkPgoJ PGRkPklmIHVzaW5nIHRoZSA8Y29kZT5odG1sPC9jb2RlPiBhdHRyaWJ1dGUsIHlvdSBtYXkg b3B0aW9uYWxseSBzcGVjaWZ5IHRoZSBuYW1lIHlvdSB3YW50IHRoZSB2YXJpYWJsZSB0byBh cHBlYXIgYXMgaW4gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHN0cmluZy4g VGhlIHZhcmlhYmxlcyBhbGwgdGFrZSBvbiBzZW5zaWJsZSBkZWZhdWx0cyAoZS5nLiAmIzgy MTY7c2VjdGlvbiYjODIxNzsgYmVjb21lcyA8Y29kZT4/cz0mbHQ7c2VjdGlvbiBuYW1lJmd0 OzwvY29kZT4sICYjODIxNjtjYXRlZ29yeTEmIzgyMTc7IGJlY29tZXMgPGNvZGU+P2M9Jmx0 O2NhdGVnb3J5MSBuYW1lJmd0OzwvY29kZT4sIGV0YykuPC9kZD4KCTxkZD5FeGFtcGxlOiA8 Y29kZT4mbHQ7dHhwOnNtZF9jYWxfaW5mbyB0eXBlPSZxdW90O2NhdGdlb3J5OnRoZV9jYXQm cXVvdDsgaHRtbD0mcXVvdDsxJnF1b3Q7IC8mZ3Q7PC9jb2RlPiBtZWFucyB5b3Ugd291bGQg c2VlIDxjb2RlPj90aGVfY2F0PSZsdDtjYXRlZ29yeTEgbmFtZSZndDs8L2NvZGU+IGluIHRo ZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPjwvZGQ+Cgk8ZGQ+RGVmYXVsdDogZmxh ZzwvZGQ+Cgk8ZHQ+PHN0cm9uZz5qb2luPC9zdHJvbmc+PC9kdD4KCTxkZD5UaGUgY2hhcmFj dGVycyB5b3Ugd2FudCB0byB1c2UgdG8gc2VwYXJhdGUgZWFjaCBpdGVtIHlvdSBhc2tlZCBm b3IuIE5vdGUgaXQgaXMgdGhlIGNoYXJhY3RlcnMgPGVtPmJldHdlZW48L2VtPiBlYWNoIGl0 ZW0gc28gdGhlIHZlcnkgZmlyc3QgZW50cnkgd2lsbCA8c3Ryb25nPm5vdDwvc3Ryb25nPiBo YXZlIHRoZSA8Y29kZT5qb2luPC9jb2RlPiBpbiBmcm9udCBvZiBpdCAoc2VlIDxjb2RlPmpv aW5fcHJlZml4PC9jb2RlPik8L2RkPgoJPGRkPkRlZmF1bHQ6IGEgc3BhY2U8L2RkPgoJPGR0 PjxzdHJvbmc+am9pbl9wcmVmaXg8L3N0cm9uZz48L2R0PgoJPGRkPlRoZSBzdHJpbmcgeW91 IHdhbnQgdG8gcHV0IGluIGZyb250IG9mIHRoZSBmaXJzdCBpdGVtIGluIHRoZSByZXR1cm5l ZCBsaXN0LiBJZiB5b3UgZG8gbm90IHNwZWNpZnkgdGhpcyBhdHRyaWJ1dGUgaXQgdHJpZXMg dG8gYmUgY2xldmVyOgoJPGRsPgoJCTxkZD5JZiB1c2luZyA8Y29kZT50eXBlPSZxdW90O2Zs YWcmcXVvdDs8L2NvZGU+IHRoZSBqb2luX3ByZWZpeCBpcyBzZXQgdG8gdGhlIHNhbWUgYXMg PGNvZGU+am9pbjwvY29kZT4uIFRodXMgd2l0aCA8Y29kZT5qb2luPSZxdW90OyBjYWxfJnF1 b3Q7PC9jb2RlPiB5b3UgbWlnaHQgZ2V0IDxjb2RlPiBjYWxfbXVsdGkgY2FsX3RvZGF5IGNh bF9ob2xzPC9jb2RlPjwvZGQ+CgkJPGRkPklmIHVzaW5nIDxjb2RlPmh0bWw9JnF1b3Q7MSZx dW90OzwvY29kZT4gdGhlIGpvaW5fcHJlZml4IGlzIHNldCB0byBhIHF1ZXN0aW9uIG1hcmss IHRodXM6IDxjb2RlPnR5cGU9JnF1b3Q7bW9udGgseWVhcixjYXRlZ29yeSZxdW90OyBodG1s PSZxdW90OzEmcXVvdDs8L2NvZGU+IG1pZ2h0IHJlbmRlciA8Y29kZT4/bT0xMiZhbXA7eT0y MDA4JmFtcDtjPWdpZ3M8L2NvZGU+LCB3aGljaCBjYW4gYmUgcHV0IHN0cmFpZ2h0IG9uIHRo ZSBlbmQgb2YgYW4gYW5jaG9yPC9kZD4KCTwvZGw+PC9kZD4KCTxkZD5EZWZhdWx0OiA8Y29k ZT5TTURfQVVUTzwvY29kZT48L2RkPgoJPGR0PjxzdHJvbmc+aHRtbDwvc3Ryb25nPjwvZHQ+ Cgk8ZGQ+Q29udHJvbCBpbiB3aGljaCBmb3JtYXQgdGhlIGluZm9ybWF0aW9uIGlzIHJldHVy bmVkLiBPcHRpb25zOgoJPGRsPgoJCTxkZD4wOiByZXR1cm4gaXRlbXMgdmVyYmF0aW08L2Rk PgoJCTxkZD4xOiByZXR1cm4gaXRlbXMgYXMgYSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9z cGFuPiBwYXJhbWV0ZXIgc3RyaW5nLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIGJ1aWxk aW5nIHlvdXIgb3duIGNvbnRlbnQgaW5zaWRlIGVhY2ggY2VsbCB2aWEgYSA8Y29kZT5mb3Jt PC9jb2RlPiBhbmQgd2lzaCB0byBtYWludGFpbiB0aGUgY3VycmVudCBzZWFyY2ggZW52aXJv bm1lbnQuIElmIHlvdSBhbGxvdyBwZW9wbGUgdG8gZmlsdGVyIGV2ZW50cyBieSBjYXRlZ29y eSBvciBhdXRob3IgeW91IGNhbiB1c2UgdGhpcyB0byByZXR1cm4gdGhlICYjODIxNjtjdXJy ZW50JiM4MjE3OyBzdGF0ZSBvZiBjZXJ0YWluIHZhcmlhYmxlcyBzbyB5b3UgY2FuIHBhc3Mg dGhlbSB0byB0aGUgbmV4dCBwYWdlIGFuZCBtYWludGFpbiBzdGF0ZTwvZGQ+Cgk8L2RsPjwv ZGQ+Cgk8ZGQ+Tm90ZTogU2V0dGluZyB0aGlzIGF0dHJpYnV0ZSB0byAxIG92ZXJyaWRlcyB0 aGUgPGNvZGU+am9pbjwvY29kZT4gYXR0cmlidXRlIGFuZCBzZXRzIGl0IHRvIGFuIGFtcGVy c2FuZDwvZGQ+Cgk8ZGQ+RGVmYXVsdDogMDwvZGQ+Cgk8ZHQ+PHN0cm9uZz5lc2NhcGU8L3N0 cm9uZz48L2R0PgoJPGRkPkVzY2FwZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4g ZW50aXRpZXMgc3VjaCBhcyA8Y29kZT4mbHQ7PC9jb2RlPiwgPGNvZGU+Jmd0OzwvY29kZT4g YW5kIDxjb2RlPiZhbXA7PC9jb2RlPiBmb3IgcGFnZSB2YWxpZGF0aW9uIHB1cnBvc2VzLiBV c2UgPGNvZGU+ZXNjYXBlPSZxdW90OyZxdW90OzwvY29kZT4gdG8gdHVybiB0aGlzIG9mZjwv ZGQ+Cgk8ZGQ+RGVmYXVsdDogPGNvZGU+aHRtbDwvY29kZT48L2RkPgo8L2RsPgoKPGgyIGlk PSJjYWxjbGFzcyI+VGFnOiA8Y29kZT4mbHQ7dHhwOnNtZF9jYWxfY2xhc3MmZ3Q7PC9jb2Rl PjwvaDI+Cgo8cD5JbnNpZGUgeW91ciBzbWRfY2FsZW5kYXQgY29udGFpbmVyL2Zvcm1zLCB1 c2UgdGhpcyB0YWcgdG8gYWRkIGEgbGlzdCBvZiBjbGFzc2VzIHRvIHRoZSBjdXJyZW50IGNl bGwvZXZlbnQuIFZlcnkgdXNlZnVsIGlmIGJ1aWxkaW5nIGNlbGxzIHlvdXJzZWxmIGJlY2F1 c2UgaW5zaWRlIGEgPGEgaHJlZj0iI2lmY2FsIj5jb25kaXRpb25hbDwvYT4gdGFnIHlvdSBj b3VsZCBhZGQgcGFydGljdWxhciBjbGFzcyBuYW1lcyBiYXNlZCBvbiBzb21lIHZhbHVlIGlu IGEgY2VsbC48L3A+Cgo8aDMgaWQ9ImF0dHNjYWxjbGFzcyI+QXR0cmlidXRlczwvaDM+Cgo8 ZGw+Cgk8ZHQ+PHN0cm9uZz5uYW1lPC9zdHJvbmc+PC9kdD4KCTxkZD5Db21tYS1zZXBhcmF0 ZWQgbGlzdCBvZiBjbGFzc25hbWVzIHRvIGFkZCB0byB0aGUgY3VycmVudCBjZWxsL2V2ZW50 LiBUaGVzZSBhcmUgPHN0cm9uZz5ub3Q8L3N0cm9uZz4gc3ViamVjdCB0byBhbnkgPGNvZGU+ Y2xhc3NwcmVmaXhlczwvY29kZT4gc28gd2lsbCBhbHdheXMgYXBwZWFyIGV4YWN0bHkgYXMg eW91IHdyaXRlIHRoZW08L2RkPgoJPGRkPkRlZmF1bHQ6IHVuc2V0PC9kZD4KPC9kbD4KCjxo MiBpZD0iY2Fsbm93Ij5UYWc6IDxjb2RlPiZsdDt0eHA6c21kX2NhbF9ub3cmZ3Q7PC9jb2Rl PjwvaDI+Cgo8cD5SZXR1cm4gdGhlIGN1cnJlbnQgZGF0ZS90aW1lLCBmb3JtYXR0ZWQgaG93 ZXZlciB5b3UgcGxlYXNlLiBVc2VmdWwgZm9yIGV4dHJhY3RpbmcgcGFydHMgb2YgdGhlIGN1 cnJlbnQgc3lzdGVtIHRpbWVzdGFtcCB0byBjb21wYXJlIHRoaW5ncyB2aWEgb3RoZXIgY29u ZGl0aW9uYWwgcGx1Z2lucyBvciB0aGUgPGNvZGU+Jmx0O3R4cDpzbWRfaWZfY2FsJmd0Ozwv Y29kZT4gdGFnLjwvcD4KCjxoMyBpZD0iYXR0c2NhbG5vdyI+QXR0cmlidXRlczwvaDM+Cgo8 ZGw+Cgk8ZHQ+PHN0cm9uZz5mb3JtYXQ8L3N0cm9uZz48L2R0PgoJPGRkPlRoZSB3YXkgeW91 IHdhbnQgdGhlIGRhdGUvdGltZSByZXByZXNlbnRlZC4gVXNlIGFueSB2YWxpZCA8YSBocmVm PSJodHRwOi8vdWsyLnBocC5uZXQvc3RyZnRpbWUiPnN0cmZ0aW1lKCk8L2E+IHN0cmluZy4g SGFzIGZ1bGwgV2luZG93cyBzdXBwb3J0LCBldmVuIGZvciB0aG9zZSB2YWx1ZXMgd2hlcmUg c3RyZnRpbWUoKSBpbmRpY2F0ZXMgb3RoZXJ3aXNlPC9kZD4KCTxkZD5EZWZhdWx0OiB0aGUg ZGF0ZSBmb3JtYXQgc2V0IGluIEJhc2ljIFByZWZlcmVuY2VzLjwvZGQ+Cgk8ZHQ+PHN0cm9u Zz5ub3c8L3N0cm9uZz48L2R0PgoJPGRkPklmIHlvdSBkb24mIzgyMTc7dCB3YW50IHRoZSB0 aW1lIHRvIGJlICYjODIxNjtub3cmIzgyMTc7IHlvdSBjYW4gc3RhdGUgd2hhdCB0aW1lICYj ODIxNjtub3cmIzgyMTc7IGlzISBVc2UgYW55IHN0YW5kYXJkIGRhdGUvdGltZSBmb3JtYXQ8 L2RkPgoJPGRkPllvdSBtYXkgYWxzbyB1c2UgdGhlIGNvZGVzIDxjb2RlPj9kYXk8L2NvZGU+ LCA8Y29kZT4/bW9udGg8L2NvZGU+IG9yIDxjb2RlPj95ZWFyPC9jb2RlPiBpbiB5b3VyIHRp bWUgc3RyaW5nIHdoaWNoIHdpbGwgZG8gb25lIG9mIHR3byB0aGluZ3M6Cgk8ZGw+CgkJPGRk PnJlcGxhY2UgdGhlIGNvZGVzIHdpdGggdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3Nw YW4+IHBhcmFtZXRlcnMgPGNvZGU+ZD08L2NvZGU+LCA8Y29kZT5tPTwvY29kZT4gb3IgPGNv ZGU+eT08L2NvZGU+LCBpZiB0aGV5IGFyZSBiZWluZyB1c2VkPC9kZD4KCQk8ZGQ+dXNlIHRo ZSBjdXJyZW50IGRheSwgbW9udGggb3IgeWVhciAoaS5lLiB0aGUgcGFydHMgb2YgdG9kYXkm IzgyMTc7cyBkYXRlKTwvZGQ+Cgk8L2RsPjwvZGQ+Cgk8ZGQ+RGVmYXVsdDogbm93ISAodGhl IHRpbWUgYXQgd2hpY2ggeW91IGNhbGwgdGhlIHRhZyk8L2RkPgoJPGR0PjxzdHJvbmc+b2Zm c2V0PC9zdHJvbmc+PC9kdD4KCTxkZD5BbiBvZmZzZXQgaW50byB0aGUgZnV0dXJlIHRoYXQg eW91IHdpc2ggdG8gYXBwbHkgdG8gPGNvZGU+bm93PC9jb2RlPjwvZGQ+Cgk8ZGQ+RXhhbXBs ZTogPGNvZGU+MiBtb250aHM8L2NvZGU+LiBTZWUgPGEgaHJlZj0iI2VnNiI+RXhhbXBsZSA2 PC9hPiBmb3IgYSBwcmFjdGljYWwgYXBwbGljYXRpb24gb2YgdGhpcyBhdHRyaWJ1dGU8L2Rk PgoJPGR0PjxzdHJvbmc+Z210PC9zdHJvbmc+PC9kdD4KCTxkZD5SZXR1cm4gZWl0aGVyOgoJ PGRsPgoJCTxkZD4wOiBsb2NhbCB0aW1lIGFjY29yZGluZyB0byB0aGUgdGltZSB6b25lIHNl dCBpbiBCYXNpYyBQcmVmczwvZGQ+CgkJPGRkPjE6IDxzcGFuIGNsYXNzPSJjYXBzIj5HTVQ8 L3NwYW4+IHRpbWU8L2RkPgoJPC9kbD48L2RkPgoJPGRkPkRlZmF1bHQ6IDA8L2RkPgoJPGR0 PjxzdHJvbmc+bGFuZzwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+QW4gPHNwYW4gY2xhc3M9ImNhcHMi PklTTzwvc3Bhbj4gbGFuZ3VhZ2UgY29kZSB0aGF0IGZvcm1hdHMgdGltZSBzdHJpbmdzIHN1 aXRhYmxlIGZvciB0aGUgc3BlY2lmaWVkIGxhbmd1YWdlIChvciBsb2NhbGUpIGFzIGRlZmlu ZWQgYnkgPGEgaHJlZj0iaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fNjM5Ij48 c3BhbiBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiA2Mzk8L2E+PC9kZD4KCTxkZD5EZWZhdWx0 OiB1bnNldCAoaS5lLiB1c2UgdGhlIHZhbHVlIGFzIHN0YXRlZCBpbiA8c3BhbiBjbGFzcz0i Y2FwcyI+VFhQPC9zcGFuPiBwcmVmcyk8L2RkPgo8L2RsPgoKPGgyIGlkPSJhcnRldiI+VGFn OiA8Y29kZT4mbHQ7dHhwOnNtZF9hcnRpY2xlX2V2ZW50Jmd0OzwvY29kZT48L2gyPgoKPHA+ V2hlbiB5b3UgY3JlYXRlIHJlY3VycmluZyBldmVudHMsIHRoZXkgcmVhbGx5IG9ubHkgZXhp c3Qgb25jZSBhcyBhIHNpbmdsZSBhcnRpY2xlOyB0aGUgcmVwZXRpdGlvbiBpcyBhIHRyaWNr LiBUaHVzIHRoZSBidWlsdC1pbiBhcnRpY2xlIHRhZ3Mgb25seSBzaG93IHRoZSBzaW5nbGUs IHJlYWwgYXJ0aWNsZXMuPC9wPgoKPHA+VGhpcyB0YWcgJiM4MjEyOyBzaW1pbGFyIGluIGZ1 bmN0aW9uIHRvIDxjb2RlPiZsdDt0eHA6YXJ0aWNsZV9jdXN0b20gLyZndDs8L2NvZGU+ICYj ODIxMjsgYWxsb3dzIHlvdSB0byBsaXN0IHJlY3VycmluZyBhcnRpY2xlcyBhcyBpZiB0aGV5 IHdlcmUgJiM4MjE2O3JlYWwmIzgyMTc7IGFydGljbGVzIGluIHRoZSBkYXRhYmFzZS4gPHNw YW4gY2xhc3M9Indhcm5pbmciPlRoZXkgZG9uJiM4MjE3O3QgYmVjb21lIHJlYWwgYXJ0aWNs ZXMsIHRoZXkgYXJlIGp1c3QgbGlzdGVkIGFzIHN1Y2g8L3NwYW4+LjwvcD4KCjxwPkluc2lk ZSB0aGUgdGFnJiM4MjE3O3MgPGNvZGU+Zm9ybTwvY29kZT4gb3IgY29udGFpbmVyIHlvdSBj YW4gdXNlIGFsbCBleGlzdGluZyBhcnRpY2xlIHRhZ3MgdG8gZGlzcGxheSBhbnkgaW5mb3Jt YXRpb24geW91IGxpa2UgYWJvdXQgZWFjaCAmIzgyMTY7dmlydHVhbCYjODIxNzsgYXJ0aWNs ZS4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgdW5zZXQgdW5sZXNzIHN0YXRlZCBvdGhlcndpc2Uu PC9wPgoKPGgzPklkZW50aWNhbCBhdHRyaWJ1dGVzIHRvIDxhIGhyZWY9IiNzbWRjYWwiPnNt ZF9jYWxlbmRhcjwvYT46PC9oMz4KCjxkbD4KCTxkdD48c3Ryb25nPnN0ZXBmaWVsZDwvc3Ry b25nPjwvZHQ+Cgk8ZHQ+PHN0cm9uZz5za2lwZmllbGQ8L3N0cm9uZz48L2R0PgoJPGR0Pjxz dHJvbmc+b21pdGZpZWxkPC9zdHJvbmc+PC9kdD4KCTxkdD48c3Ryb25nPmV4dHJhZmllbGQ8 L3N0cm9uZz48L2R0PgoJPGR0PjxzdHJvbmc+ZGF0ZWZpZWxkczwvc3Ryb25nPjwvZHQ+Cgk8 ZHQ+PHN0cm9uZz5zZWN0aW9uPC9zdHJvbmc+PC9kdD4KCTxkdD48c3Ryb25nPmNhdGVnb3J5 PC9zdHJvbmc+PC9kdD4KCTxkdD48c3Ryb25nPmF1dGhvcjwvc3Ryb25nPjwvZHQ+Cgk8ZHQ+ PHN0cm9uZz5yZWFsbmFtZTwvc3Ryb25nPjwvZHQ+Cgk8ZHQ+PHN0cm9uZz5zdGF0dXM8L3N0 cm9uZz48L2R0PgoJPGR0PjxzdHJvbmc+dGltZTwvc3Ryb25nPjwvZHQ+Cgk8ZHQ+PHN0cm9u Zz5leHBpcmVkPC9zdHJvbmc+PC9kdD4KPC9kbD4KCjxoMz5PdGhlciBhdHRyaWJ1dGVzPC9o Mz4KCjxkbD4KCTxkdD48c3Ryb25nPmlkPC9zdHJvbmc+PC9kdD4KCTxkZD5SZXN0cmljdCBl dmVudHMgdG8gdGhpcyBsaXN0IG9mIGFydGljbGUgSURzPC9kZD4KCTxkdD48c3Ryb25nPmN1 c3RvbTwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+U3BlY2lmeSB5b3VyIG93biBjb21tYS1zZXBhcmF0 ZWQgbGlzdCBvZiBjdXN0b20gZmllbGQgY2xhdXNlcyB0byB0aGUgcXVlcnkuIFNlcGFyYXRl IGVhY2ggZmllbGQgZnJvbSBpdHMgKG9wdGlvbmFsKSBvcGVyYXRvciBhbmQgY2xhdXNlIHdp dGggYSBjb2xvbiAoYWx0ZXJhYmxlIHZpYSA8Y29kZT5wYXJhbV9kZWxpbTwvY29kZT4pLjwv ZGQ+Cgk8ZGQ+RXhhbXBsZTogPGNvZGU+Y3VzdG9tPSZxdW90O2N1c3RvbV8zOmxpa2U6TGlv biUsIGN1c3RvbV82OkNoZXNzaW5ndG9uJnF1b3Q7PC9jb2RlPiB3b3VsZCBhZGQgPGNvZGU+ QU5EIGN1c3RvbV8zIGxpa2UgJiMzOTtMaW9uJSYjMzk7IEFORCBjdXN0b21fNj0mIzM5O0No ZXNzaW5ndG9uJiMzOTs8L2NvZGU+IHRvIHRoZSBkYXRhYmFzZSBxdWVyeS48L2RkPgoJPGR0 PjxzdHJvbmc+cGFyYW1fZGVsaW08L3N0cm9uZz48L2R0PgoJPGRkPkFsdGVyIHRoZSBzZXBh cmF0b3IgY2hhcmFjdGVyKHMpIGJldHdlZW4gZmllbGQtY2xhdXNlIGl0ZW1zIGluIHRoZSA8 Y29kZT5jdXN0b208L2NvZGU+IGF0dHJpYnV0ZS48L2RkPgoJPGRkPkRlZmF1bHQ6IGNvbG9u ICg6KTwvZGQ+Cgk8ZHQ+PHN0cm9uZz50eXBlPC9zdHJvbmc+PC9kdD4KCTxkZD5Db21tYS1z ZXBhcmF0ZWQgbGlzdCBvZiBldmVudCB0eXBlcyB0byBkaXNwbGF5LiBPcHRpb25zOgoJPGRs PgoJCTxkZD5zdGFuZGFyZDwvZGQ+CgkJPGRkPnJlY3VyPC9kZD4KCQk8ZGQ+bXVsdGk8L2Rk PgoJPC9kbD48L2RkPgoJPGRkPkRlZmF1bHQ6IHN0YW5kYXJkLCByZWN1ciwgbXVsdGk8L2Rk PgoJPGR0PjxzdHJvbmc+YWxsc3Bhbm5lZDwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+Q29udHJvbCBk aXNwbGF5IG9mIHNwYW5uZWQgZXZlbnRzOjwvZGQ+Cgk8ZGQ+MDogYW55IGV2ZW50IHRoYXQg aGFzIGEgc3RhcnQgZGF0ZSBpbiB0aGUgcGFzdCB3aWxsIGJlIG9taXR0ZWQgZnJvbSB0aGUg bGlzdDwvZGQ+Cgk8ZGQ+MTogZGlzcGxheSByZW1haW5pbmcgZGF5cyBmcm9tIHNwYW5uZWQg ZXZlbnRzIHRoYXQgYmVnYW4gaW4gdGhlIHBhc3Q8L2RkPgoJPGRkPkV4YW1wbGU6IHVzZSA8 Y29kZT5hbGxzcGFubmVkPSZxdW90OzEmcXVvdDs8L2NvZGU+IGlmIHlvdSBhcmUgbGlzdGlu ZyByZW1haW5pbmcgcGVyZm9ybWFuY2UgZGF0ZXMgZnJvbSBhIEJyb2Fkd2F5IHNob3cmIzgy MTc7cyBzY2hlZHVsZSB0aGF0IHN0YXJ0ZWQgc29tZSBtb250aHMgYWdvLjwvZGQ+Cgk8ZGQ+ RGVmYXVsdDogMDwvZGQ+Cgk8ZHQ+PHN0cm9uZz5tb250aDwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+ T25seSBzaG93IGV2ZW50cyB0aGF0IG9jY3VyIGluIHRoZSBnaXZlbiA8c3BhbiBjbGFzcz0i Y2FwcyI+WVlZWTwvc3Bhbj4tbW08L2RkPgoJPGR0PjxzdHJvbmc+ZnJvbTwvc3Ryb25nPjwv ZHQ+Cgk8ZGQ+T25seSBzaG93IGV2ZW50cyB3aXRoIFBvc3RlZCBkYXRlZCBiZWdpbm5pbmcg YWZ0ZXIgdGhpcyBzdGFydCBkYXRlLiBDYW4gYmUgYW55IHZhbGlkIGRhdGUgZm9ybWF0PC9k ZD4KCTxkdD48c3Ryb25nPnRvPC9zdHJvbmc+PC9kdD4KCTxkZD5Pbmx5IHNob3cgZXZlbnRz IHdpdGggUG9zdGVkIGRhdGVzIHVwIHRvIHRoaXMgZW5kIGRhdGUuIENhbiBiZSBhbnkgdmFs aWQgZGF0ZSBmb3JtYXQ8L2RkPgoJPGR0PjxzdHJvbmc+c29ydDwvc3Ryb25nPjwvZHQ+Cgk8 ZGQ+T3JkZXIgdGhlIGV2ZW50cyBieSB0aGlzIGNvbHVtbiAoY2FzZS1zZW5zaXRpdmUpIGFu ZCBzb3J0IGRpcmVjdGlvbiAoYXNjIG9yIGRlc2MpPC9kZD4KCTxkZD5EZWZhdWx0OiBQb3N0 ZWQgYXNjPC9kZD4KCTxkdD48c3Ryb25nPmZvcm08L3N0cm9uZz48L2R0PgoJPGRkPlBhc3Mg ZWFjaCBtYXRjaGluZyBldmVudCB0byB0aGUgZ2l2ZW4gPHNwYW4gY2xhc3M9ImNhcHMiPlRY UDwvc3Bhbj4gZm9ybS4gTm90ZSB0aGF0IHVzaW5nIGEgY29udGFpbmVyIG92ZXJyaWRlcyB0 aGlzIGF0dHJpYnV0ZSwgYW5kIGlmIHlvdSBzcGVjaWZ5IG5laXRoZXIgYSBmb3JtIG5vciBj b250YWluZXIsIHlvdSB3aWxsIHNlZSBhIGxpc3Qgb2YgYXJ0aWNsZSBQb3N0ZWQgZGF0ZXM8 L2RkPgoJPGR0PjxzdHJvbmc+cGFnaW5nPC9zdHJvbmc+PC9kdD4KCTxkZD5Vbmxpa2UgYXJ0 aWNsZV9jdXN0b20sIGV2ZW50cyBmcm9tIHRoZSBzbWRfYXJ0aWNsZV9ldmVudCB0YWcgbWF5 IGJlIHBhZ2VkIHVzaW5nIDxjb2RlPiZsdDt0eHA6b2xkZXIgLyZndDs8L2NvZGU+IGFuZCA8 Y29kZT4mbHQ7dHhwOm5ld2VyIC8mZ3Q7PC9jb2RlPi4gQnV0IGlmIHlvdSB3aXNoIHRvIHNo b3cgYW4gZXZlbnQgbGlzdCBvbiB0aGUgc2FtZSBwYWdlIGFzIGEgc3RhbmRhcmQgYXJ0aWNs ZSBsaXN0LCB0aGUgb2xkZXIvbmV3ZXIgdGFncyB3aWxsIG5hdmlnYXRlIGJvdGggbGlzdHMg c2ltdWx0YW5lb3VzbHkuIFVuZGVyIHRoaXMgY2lyY3Vtc3RhbmNlIHlvdSBtYXkgbmVlZCB0 byB0dXJuIHBhZ2luZyBvZmYgKDApLiBPcHRpb25zOgoJPGRsPgoJCTxkZD4wIChvZmYpPC9k ZD4KCQk8ZGQ+MSAob24pPC9kZD4KCTwvZGw+PC9kZD4KCTxkZD5EZWZhdWx0OiAxPC9kZD4K CTxkdD48c3Ryb25nPm9mZnNldDwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+QmVnaW4gZGlzcGxheWlu ZyBldmVudHMgZnJvbSB0aGlzIG51bWVyaWMgcG9zaXRpb24sIGluc3RlYWQgb2YgZnJvbSB0 aGUgc3RhcnQgb2YgdGhlIGxpc3Qgb2YgZXZlbnRzPC9kZD4KCTxkZD5EZWZhdWx0OiAwPC9k ZD4KCTxkdD48c3Ryb25nPmxpbWl0PC9zdHJvbmc+PC9kdD4KCTxkZD5Jbmx5IHNob3cgdGhp cyBtYW55IGV2ZW50cyBtYXhpbXVtIDxzdHJvbmc+cGVyIHBhZ2U8L3N0cm9uZz4sIGkuZS4g dGhlIG51bWJlciBvZiBldmVudHMgdG8gZGlzcGxheSwgd2hldGhlciB0aGV5IGNvbWUgZnJv bSBvbmUgJiM4MjE2O3JlYWwmIzgyMTc7IGFydGljbGUgb3IgbWFueTwvZGQ+Cgk8ZGQ+RGVm YXVsdDogMTA8L2RkPgoJPGR0PjxzdHJvbmc+ZXZlbnRsaW1pdDwvc3Ryb25nPjwvZHQ+Cgk8 ZGQ+T25seSBzaG93IHRoaXMgbWFueSBldmVudHMgbWF4aW11bSA8c3Ryb25nPnBlciBldmVu dDwvc3Ryb25nPjwvZGQ+Cgk8ZGQ+RXhhbXBsZTogaWYgeW91IGhhdmUgYSB3ZWVrbHkgcmVw ZWF0ZWQgZXZlbnQgdGhhdCBsYXN0cyBmb3IgZm91ciBtb250aHMgYW5kIHlvdSBzZXQgPGNv ZGU+ZXZlbnRsaW1pdD0mcXVvdDs2JnF1b3Q7PC9jb2RlPiB5b3Ugd2lsbCBvbmx5IHNlZSBh IG1heGltdW0gb2YgNiBldmVudHMgZnJvbSBldmVyeSBhcnRpY2xlIGNvbnRhaW5pbmcgcmVw ZXRpdGlvbi4gVGhlIHJhbmdlIChzdGFydCBhbmQgZW5kIGRhdGUpIGlzIGRldGVybWluZWQg Ynkgb3RoZXIgcGx1Z2luIGF0dHJpYnV0ZXM8L2RkPgoJPGRkPkRlZmF1bHQ6IDEwPC9kZD4K CTxkdD48c3Ryb25nPnBhZ2VieTwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+RXNvdGVyaWMgcGFnaW5n IGZlYXR1cmUsIGlkZW50aWNhbCB0byA8Y29kZT4mbHQ7dHhwOmFydGljbGUgLyZndDs8L2Nv ZGU+PC9kZD4KCTxkZD5EZWZhdWx0OiBzYW1lIGFzIDxjb2RlPmxpbWl0PC9jb2RlPjwvZGQ+ Cgk8ZHQ+PHN0cm9uZz5wZ29ubHk8L3N0cm9uZz48L2R0PgoJPGRkPlNldCB0byAxIHRvIHBl cmZvcm0gdGhlIHBhZ2luZyBhY3Rpb24gd2l0aG91dCBkaXNwbGF5aW5nIGFueXRoaW5nLiBQ cm9iYWJseSB1c2VsZXNzPC9kZD4KCTxkdD48c3Ryb25nPndyYXB0YWc8L3N0cm9uZz48L2R0 PgoJPGRkPlRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gdGFnLCB3aXRob3V0 IGJyYWNrZXRzLCB0byB3cmFwIHRoZSBsaXN0IGluPC9kZD4KCTxkdD48c3Ryb25nPmJyZWFr PC9zdHJvbmc+PC9kdD4KCTxkZD5UaGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+ IHRhZyB0byBzZXBhcmF0ZSBlYWNoIGl0ZW0gd2l0aDwvZGQ+Cgk8ZHQ+PHN0cm9uZz5jbGFz czwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+VGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+ IGNsYXNzIHRvIGFwcGx5IHRvIHRoZSA8Y29kZT53cmFwdGFnPC9jb2RlPjwvZGQ+CjwvZGw+ Cgo8aDM+VGhlIHNtZF9hcnRpY2xlX2V2ZW50IHRhZyBwcm9jZXNzPC9oMz4KCjxwPkl0IGlz IHdvcnRoIG5vdGluZyB0aGF0IHRoaXMgdGFnIGV4ZWN1dGVzIGluIDMtcGhhc2VzOjwvcD4K CjxvbD4KCTxsaT5QcmUtZmlsdGVyOiBhbGwgZXZlbnRzIHRoYXQgbWF0Y2ggPGNvZGU+dHlw ZTwvY29kZT4sIDxjb2RlPmNhdGVnb3J5PC9jb2RlPiwgPGNvZGU+c2VjdGlvbjwvY29kZT4s IDxjb2RlPmF1dGhvcjwvY29kZT4sIDxjb2RlPnN0YXR1czwvY29kZT4sIDxjb2RlPmlkPC9j b2RlPiwgYW5kIDxjb2RlPmV4cGlyZWQ8L2NvZGU+IGFyZSBleHRyYWN0ZWQ8L2xpPgoJPGxp PlRpbWUtZmlsdGVyOiBhbnkgJiM4MjIwO3RpbWUtYmFzZWQmIzgyMjE7IGF0dHJpYnV0ZXMg YXJlIHRoZW4gYXBwbGllZCB0byB0aGUgYWJvdmUgbGlzdC4gQXQgdGhpcyBwb2ludCwgYW55 IDxjb2RlPmV4dHJhZmllbGQ8L2NvZGU+LCA8Y29kZT5zdGVwZmllbGQ8L2NvZGU+LCA8Y29k ZT5vbWl0ZmllbGQ8L2NvZGU+LCBvciA8Y29kZT5za2lwZmllbGQ8L2NvZGU+IGFyZSBjYWxj dWxhdGVkIHRvIGZpbmQgcmVwZWF0ZWQgZGF0ZXMgKHVwIHRvIGFzIG1hbnkgYXMgPGNvZGU+ ZXZlbnRsaW1pdDwvY29kZT4gYWxsb3dzIG9yIHRoZSBjYWxjdWxhdGlvbiBleGNlZWRzIHRo ZSBldmVudCYjODIxNztzIGV4cGlyeSB0aW1lKS4gVGhlIGF0dHJpYnV0ZXMgPGNvZGU+dGlt ZTwvY29kZT4sIDxjb2RlPm1vbnRoPC9jb2RlPiwgPGNvZGU+ZnJvbTwvY29kZT4sIGFuZCA8 Y29kZT50bzwvY29kZT4gYXJlIHVzZWQgdG8gcmVmaW5lIHRoZSBmaWx0cmF0aW9uIGhlcmU8 L2xpPgoJPGxpPk91dHB1dDogd2hhdGV2ZXIgdGhlIHByZXZpb3VzIHBoYXNlcyBoYXZlIGxl ZnQgYmVoaW5kIGlzIHN1YmplY3QgdG8gYW55IDxjb2RlPnBhZ2luZzwvY29kZT4sIDxjb2Rl Pm9mZnNldDwvY29kZT4gYW5kIDxjb2RlPmxpbWl0PC9jb2RlPiB5b3UgbWF5IGhhdmUgc3Bl Y2lmaWVkLCB0aGVuIHdyYXBwZWQgYW5kIGRpc3BsYXllZDwvbGk+Cjwvb2w+Cgo8aDIgaWQ9 ImV2ZW50aW5mbyI+VGFnOiA8Y29kZT4mbHQ7dHhwOnNtZF9ldmVudF9pbmZvJmd0OzwvY29k ZT48L2gyPgoKPHA+SWRlbnRpY2FsIHRhZyB0byA8YSBocmVmPSIjY2FsaW5mbyI+PHR4cDpz bWRfY2FsaW5mbyAvPjwvYT4gYnV0IGZvciB1c2UgaW5zaWRlIDxjb2RlPiZsdDt0eHA6c21k X2FydGljbGVfZXZlbnQgLyZndDs8L2NvZGU+LjwvcD4KCjxoMiBjbGFzcz0iZXhhbXBsZXMi PkV4YW1wbGVzPC9oMj4KCjxoMyBpZD0iZWcxIj5FeGFtcGxlIDE6IGJhc2ljIGNhbGVuZGFy PC9oMz4KCjxwPllvdSBoYXZlIHRoZSBlbnRpcmUgYXJzZW5hbCBvZiA8c3BhbiBjbGFzcz0i Y2FwcyI+VFhQPC9zcGFuPiB0YWdzIGF2YWlsYWJsZSB0byB5b3UgaW4gYSBjYWxlbmRhci4g VGh1cyB5b3UgY2FuIHNldCB0aGUgYXJ0aWNsZSYjODIxNztzIHN0YXJ0IGFuZCBlbmQgZGF0 ZXMgdG8gdGhlIHNhbWUgZGF5IGFuZCBzZXQgdGhlIHN0YXJ0IGFuZCBlbmQgdGltZXMgdG8g aW5kaWNhdGUgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIGV2ZW50LiBZb3UgY2FuIHRoZW4g dXNlIHN0YW5kYXJkIDxjb2RlPiZsdDt0eHA6cG9zdGVkIC8mZ3Q7PC9jb2RlPiBvciA8Y29k ZT4mbHQ7dHhwOmV4cGlyZXMgLyZndDs8L2NvZGU+IHRhZ3Mgd2l0aCB2YXJpb3VzIDxjb2Rl PmZvcm1hdDwvY29kZT4gc3RyaW5ncyB0byByZW5kZXIgdGhlIGV2ZW50JiM4MjE3O3MgY3Jp dGVyaWEuPC9wPgoKPHA+U2ltaWxhcmx5IHlvdSBjYW4gdXNlIGFueSBvdGhlciA8c3BhbiBj bGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB0YWdzIHRvIHNob3cgYXMgbXVjaCBvciBhcyBsaXR0 bGUgZGV0YWlsIGFzIHlvdSBsaWtlIGluIHRoZSBjYWxlbmRhciBjZWxsLjwvcD4KCjxwcmU+ PGNvZGU+Jmx0O3R4cDpzbWRfY2FsZW5kYXIgc2VjdGlvbj0mcXVvdDtldmVudHMmcXVvdDsm Z3Q7CiZsdDtkaXYmZ3Q7CiAgIEV2ZW50OiAmbHQ7dHhwOnBlcm1saW5rJmd0OyZsdDt0eHA6 dGl0bGUgLyZndDsmbHQ7L3R4cDpwZXJtbGluayZndDsKICAgJmx0O2JyIC8mZ3Q7Jmx0O3R4 cDpleGNlcnB0IC8mZ3Q7CiZsdDsvZGl2Jmd0OwombHQ7ZGl2IGNsYXNzPSZxdW90O2V2dGlt ZSZxdW90OyZndDsKICAgU3RhcnQ6ICZsdDt0eHA6cG9zdGVkIGZvcm1hdD0mcXVvdDslSDol TSZxdW90OyAvJmd0OwombHQ7L2RpdiZndDsKJmx0O2RpdiBjbGFzcz0mcXVvdDtldnRpbWUm cXVvdDsmZ3Q7CiAgIEVuZDogJmx0O3R4cDpleHBpcmVzIGZvcm1hdD0mcXVvdDslSDolTSZx dW90OyAvJmd0OwombHQ7L2RpdiZndDsKJmx0Oy90eHA6c21kX2NhbGVuZGFyJmd0OzwvY29k ZT48L3ByZT4KCjxoMyBpZD0iZWcyIj5FeGFtcGxlIDI6IGNvbmRpdGlvbmFsIGNhbGVuZGFy PC9oMz4KCjxwPlVzaW5nIHRoZSBjb25kaXRpb25hbCB0YWcgeW91IGNhbiB0YWtlIGFjdGlv biBpZiBjZXJ0YWluIGV2ZW50cyBjb250YWluIHBhcnRpY3VsYXIgZmxhZ3MuIFRoaXMgZXhh bXBsZSBhbHNvIHNob3dzIGEgY29tcGxldGVseSB1c2VsZXNzIG1hbm5lciBvZiBlbXBsb3lp bmcgPGNvZGU+Jmx0O3R4cDpzbWRfY2FsX25vdyAvJmd0OzwvY29kZT4uPC9wPgoKPHByZT48 Y29kZT5UaW1lIGlzOiAmbHQ7dHhwOnNtZF9jYWxfbm93IGZvcm1hdD0mcXVvdDslVCZxdW90 OyAvJmd0OwombHQ7dHhwOnNtZF9jYWxlbmRhciBmb3JtPSZxdW90O2V2Zm9ybSZxdW90Owog ICAgIHN0ZXBmaWVsZD0mcXVvdDtjdXN0b21fMyZxdW90OyBza2lwZmllbGQ9JnF1b3Q7Y3Vz dG9tXzYmcXVvdDsKICAgICBzcGFuZm9ybT0mcXVvdDttdWx0aXMmcXVvdDsgLyZndDs8L2Nv ZGU+PC9wcmU+Cgo8cD5JbiBmb3JtIDxjb2RlPmV2Zm9ybTwvY29kZT46PC9wPgoKPHByZT48 Y29kZT4mbHQ7dHhwOnNtZF9pZl9jYWwgZmxhZz0mcXVvdDtyZWN1ciZxdW90OyZndDsKICAm bHQ7dHhwOnBlcm1saW5rJmd0OyhSRUNVUikmbHQ7L3R4cDpwZXJtbGluayZndDsKJmx0O3R4 cDplbHNlIC8mZ3Q7CiAgICZsdDt0eHA6cGVybWxpbmsmZ3Q7Jmx0O3R4cDp0aXRsZSAvJmd0 OyZsdDsvdHhwOnBlcm1saW5rJmd0OwogICAmbHQ7dHhwOnNtZF9pZl9jYWwgZmxhZz0mcXVv dDttdWx0aWZpcnN0JnF1b3Q7Jmd0OwogICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtyaWdo dCZxdW90OyZndDsmYW1wO2xhcXVvOy0tJmx0Oy9zcGFuJmd0OwogICAmbHQ7L3R4cDpzbWRf aWZfY2FsJmd0OwogICAmbHQ7dHhwOnNtZF9pZl9jYWwgZmxhZz0mcXVvdDtyZWN1cmZpcnN0 JnF1b3Q7Jmd0OwogICAgICAmbHQ7c3BhbiZndDtPbmUgb2YgbWFueS4uLiZsdDsvc3BhbiZn dDsKICAgJmx0Oy90eHA6c21kX2lmX2NhbCZndDsKJmx0Oy90eHA6c21kX2lmX2NhbCZndDs8 L2NvZGU+PC9wcmU+Cgo8cD5BbmQgaW4gZm9ybSA8Y29kZT5tdWx0aXM8L2NvZGU+OjwvcD4K CjxwcmU+PGNvZGU+Jmx0O3R4cDpzbWRfaWZfY2FsIGZsYWc9JnF1b3Q7bXVsdGksIG11bHRp cHJldiZxdW90OyZndDsKICAgJmx0O3R4cDpwZXJtbGluayZndDstLSZhbXA7cmFxdW87LS0m bHQ7L3R4cDpwZXJtbGluayZndDsKJmx0Oy90eHA6c21kX2lmX2NhbCZndDsKJmx0O3R4cDpz bWRfaWZfY2FsIGZsYWc9JnF1b3Q7bXVsdGlsYXN0JnF1b3Q7Jmd0OwogICAmbHQ7dHhwOnBl cm1saW5rJmd0OwogICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtsZWZ0JnF1b3Q7Jmd0Oy0t JmFtcDtyYXF1bzsmbHQ7L3NwYW4mZ3Q7IEVORCAmbHQ7dHhwOnRpdGxlIC8mZ3Q7CiAgICZs dDsvdHhwOnBlcm1saW5rJmd0OwombHQ7L3R4cDpzbWRfaWZfY2FsJmd0OzwvY29kZT48L3By ZT4KCjxwPk5vdGljZSB0aGF0IDxjb2RlPm11bHRpZmlyc3Q8L2NvZGU+IGlzIHRlc3RlZCBp bnNpZGUgdGhlIHNhbWUgZm9ybSBhcyBzdGFuZGFyZCBldmVudHMuIFRoaXMgaXMgYmVjYXVz ZSBvbmx5IDxlbT5jb250aW51YXRpb24gc3Bhbm5lZCBjZWxsczwvZW0+IGFyZSBwYXNzZWQg dG8gdGhlIDxjb2RlPnNwYW5mb3JtPC9jb2RlPjsgdGhlIGZpcnN0IGV2ZW50IG9mIGEgc3Bh bm5lZCBncm91cCBpcyBqdXN0IGxpa2UgYW55IHN0YW5kYXJkIGV2ZW50LiBTaW1pbGFybHks IGlmIHlvdSBoYWQgYmVlbiB1c2luZyA8Y29kZT5yZWN1cmZvcm08L2NvZGU+IHRoZSBmaXJz dCBldmVudCBvZiB0aGUgcmVjdXJyaW5nIHNldCB3b3VsZCBiZSBwcm9jZXNzZWQgaW4gdGhl IHVzdWFsIGZvcm0vY29udGFpbmVyIGFuZCBldmVyeSBzdWJzZXF1ZW50IGV2ZW50IHdvdWxk IGJlIHBhc3NlZCB0byB0aGUgZGVkaWNhdGVkIGZvcm0uPC9wPgoKPGgzIGlkPSJlZzMiPkV4 YW1wbGUgMzogY2xhc3NlczwvaDM+Cgo8cD5Zb3UgY291bGQgdXNlIHRoZSBjYWxlbmRhciB0 YWdzIHRvIG91dHB1dCB2YXJpb3VzIHBpZWNlcyBvZiBmbGFnIGluZm9ybWF0aW9uIHRvIGJ1 aWxkIHlvdXIgb3duIGNsYXNzIG5hbWVzLiBUaGlzIGV4YW1wbGUgYWxzbyBkZW1vbnN0cmF0 ZXMgdGhlIDxjb2RlPmh0bWw8L2NvZGU+IGF0dHJpYnV0ZSBvZiA8Y29kZT4mbHQ7dHhwOnNt ZF9jYWxfaW5mbyAvJmd0OzwvY29kZT4gdG8gYnVpbGQgdXAgYSBxdWVyeSBzdHJpbmcgdGhh dCBpcyBwYXNzZWQgYWxvbmcgd2l0aCBhbiBldmVudCYjODIxNztzIDxjb2RlPmNhdGVnb3J5 MTwvY29kZT4gd2hlbiBhIHZpc2l0b3IgY2xpY2tzIHRoZSBhbmNob3IuPC9wPgoKPHA+VGhp cyBhbGxvd3MgeW91ciBzaXRlIHZpc2l0b3JzIHRvIGZpbHRlciBldmVudHMgYnkgY2F0ZWdv cnkgd2hpbGUgcmV0YWluaW5nIHRoZSBhYmlsaXR5IHRvIHNob3cgdGhlIGNhbGVuZGFyIGZv ciB0aGUgY3VycmVudCBtb250aC95ZWFyIGFuZCBzZWN0aW9uIHRoZXkgYXJlIHZpZXdpbmcg aW5zdGVhZCBvZiBkcm9wcGluZyBiYWNrIHRvIHRoZSBjdXJyZW50IG1vbnRoL3llYXIgbGlr ZSBvdGhlciBjYWxlbmRhciBzeXN0ZW1zIG9mdGVuIGRvLjwvcD4KCjxwcmU+PGNvZGU+Jmx0 O3R4cDpzbWRfY2FsZW5kYXIgaXNvd2Vla3M9JnF1b3Q7V0VFSyMmcXVvdDsKICAgICB5ZWFy d2lkdGg9JnF1b3Q7MCwyJnF1b3Q7IHNlbGVjdD0mcXVvdDt5ZWFyLCBtb250aCZxdW90Owog ICAgIHN0ZXBmaWVsZD0mcXVvdDtjdXN0b21fMSZxdW90OyBza2lwZmllbGQ9JnF1b3Q7Y3Vz dG9tXzImcXVvdDsKICAgICBzaG93c2tpcHBlZD0mcXVvdDsxJnF1b3Q7IGV4cGlyZWQ9JnF1 b3Q7MSZxdW90OyZndDsKICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Jmx0O3R4cDpzbWRfY2Fs X2luZm8gam9pbj0mcXVvdDsgY2FsXyZxdW90OyAvJmd0OyZxdW90OyZndDsKICAgICAgJmx0 O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6cGVybWxpbmsm Z3Q7CiAgICAgICZsdDthIGhyZWY9JnF1b3Q7P2M9Jmx0O3R4cDpjYXRlZ29yeTEKICAgICAg ICAgLyZndDsmYW1wOyZsdDt0eHA6c21kX2NhbF9pbmZvIHR5cGU9JnF1b3Q7cywgeWVhciwK ICAgICAgICAgbW9udGgsIGNhbGlkJnF1b3Q7IGh0bWw9JnF1b3Q7MSZxdW90OyBqb2luX3By ZWZpeD0mcXVvdDsmcXVvdDsKICAgICAgICAgLyZndDsmcXVvdDsmZ3Q7Jmx0O3R4cDpjYXRl Z29yeTEgdGl0bGU9JnF1b3Q7MSZxdW90OyAvJmd0OyZsdDsvYSZndDsKICAgJmx0Oy9zcGFu Jmd0OwombHQ7L3R4cDpzbWRfY2FsZW5kYXImZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+V2hhdCBp cyBhbHNvIHVzZWZ1bCBhYm91dCB0aGUgPGNvZGU+Jmx0O3R4cDpzbWRfY2FsX2luZm8gLyZn dDs8L2NvZGU+IHRhZyBpcyB0aGF0IGlmIGEgcGFydGljdWxhciB2YWx1ZSBpcyBub3Qgc2V0 IGl0IHdpbGwgPGVtPm5vdDwvZW0+IGJlIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuPC9wPgoK PGgzIGlkPSJlZzQiPkV4YW1wbGUgNDogdXBjb21pbmcgZXZlbnRzPC9oMz4KCjxwPkxpc3Qg dGhlIG5leHQgNSB1cGNvbWluZyAmIzgyMTI7IHJlY3VycmluZyAmIzgyMTI7IGV2ZW50cywg cGx1cyBhbnkgc3RhbmRhcmQgYW5kIHNwYW5uZWQgZXZlbnRzLCBmb3JtYXR0aW5nIHRoZW0g YXMgYSBkZWZpbml0aW9uIGxpc3QuPC9wPgoKPHByZT48Y29kZT4mbHQ7aDImZ3Q7VXBjb21p bmcgRXZlbnRzJmx0Oy9oMiZndDsKJmx0O3R4cDpzbWRfYXJ0aWNsZV9ldmVudCBzdGVwZmll bGQ9JnF1b3Q7Y3VzdG9tXzEmcXVvdDsKICAgICB3cmFwdGFnPSZxdW90O2RsJnF1b3Q7IHRp bWU9JnF1b3Q7ZnV0dXJlJnF1b3Q7IGV2ZW50bGltaXQ9JnF1b3Q7NSZxdW90OyZndDsKICAg Jmx0O3R4cDppZl9kaWZmZXJlbnQmZ3Q7CiAgICAgJmx0O2R0Jmd0OyZsdDt0eHA6cG9zdGVk IGZvcm1hdD0mcXVvdDslQiAlWSZxdW90OyAvJmd0OyZsdDsvZHQmZ3Q7CiAgICZsdDsvdHhw OmlmX2RpZmZlcmVudCZndDsKICAgJmx0O2RkJmd0OwogICAgICAmbHQ7dHhwOnBlcm1saW5r Jmd0OyZsdDt0eHA6dGl0bGUvJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0OwogICAgICAmbHQ7 dHhwOnBvc3RlZCAvJmd0OwogICAmbHQ7L2RkJmd0OwombHQ7L3R4cDpzbWRfYXJ0aWNsZV9l dmVudCZndDs8L2NvZGU+PC9wcmU+Cgo8cD5JZiB5b3UgYWRkIHBhZ2luYXRpb24gdGFncyB5 b3UgY2FuIGZsaXAgdGhyb3VnaCBhbGwgdGhlIGV2ZW50czsgdGhleSB3aWxsIGJlIGRpc3Bs YXllZCAxMCBhdCBhIHRpbWUgb24gZWFjaCBwYWdlIChpZiB5b3Ugd2FudCB0byBrZWVwIHRy YWNrIG9mIHdoaWNoIHBhZ2UgeW91IGFyZSBvbiBhcyB5b3UgZmxpcCB0aHJvdWdoIGEgY2Fs ZW5kYXIgdGhhdCBpcyBpbiBhIHNpZGViYXIsIGFkZCA8Y29kZT5wZzwvY29kZT4gdG8gdGhl IDxjb2RlPm1haW50YWluPC9jb2RlPiBhdHRyaWJ1dGUgaW4geW91ciBjYWxlbmRhcikuPC9w PgoKPHA+Tm90ZSB0aGUgaHlwZXJsaW5rZWQgdGl0bGUgc2hvd24gaGVyZSB3aWxsIGp1bXAg dG8gdGhlICYjODIxNjtyZWFsJiM4MjE3OyBhcnRpY2xlICh0aGUgZmlyc3QgZGF0ZSBpbiB0 aGUgcmVjdXJyaW5nIHNldCkgd2hlbiBjbGlja2VkLCBub3QgdG8gYW4gYXJ0aWNsZSB3aXRo IGEgZGF0ZSBtYXRjaGluZyB0aGUgcmVjdXJyZW5jZS48L3A+Cgo8cD5JZiB5b3Ugd2FudGVk IHRvIGFsbG93IHBlb3BsZSB0byBib29rIGFuIGV2ZW50LCB0cnkgdGhpcyBpbiB5b3VyIGh5 cGVybGlua2VkIGluZGl2aWR1YWwgYXJ0aWNsZTo8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6 aWZfaW5kaXZpZHVhbF9hcnRpY2xlJmd0OwogJmx0O3R4cDphcnRpY2xlIGxpbWl0PSZxdW90 OzEmcXVvdDsmZ3Q7CiAgJmx0O2gzJmd0OyZsdDt0eHA6dGl0bGUgLyZndDsmbHQ7L2gzJmd0 OwogICZsdDt0eHA6Ym9keSAvJmd0OwogICZsdDtwJmd0O1BsZWFzZSBjaG9vc2UgYSBkYXRl IHRvIGJvb2s6Jmx0Oy9wJmd0OwogICZsdDtzZWxlY3QmZ3Q7CiAgJmx0O3R4cDpzbWRfYXJ0 aWNsZV9ldmVudCBzdGVwZmllbGQ9JnF1b3Q7Y3VzdG9tXzEmcXVvdDsKICAgIHR5cGU9JnF1 b3Q7cmVjdXImcXVvdDsgaWQ9JiMzOTsmbHQ7dHhwOmFydGljbGVfaWQgLyZndDsmIzM5OyZn dDsKICAgICZsdDtvcHRpb24KICAgICB2YWx1ZT0mIzM5OyZsdDt0eHA6cG9zdGVkIGZvcm1h dD0mcXVvdDslRy0lbS0lZCZxdW90Oy8mZ3Q7JiMzOTsmZ3Q7CiAgICAgICZsdDt0eHA6cG9z dGVkIGZvcm1hdD0mcXVvdDslbSAlZCwgJEcmcXVvdDsgLyZndDsKICAgICZsdDsvb3B0aW9u Jmd0OwogICZsdDsvdHhwOnNtZF9hcnRpY2xlX2V2ZW50Jmd0OwogICZsdDsvc2VsZWN0Jmd0 OwogJmx0Oy90eHA6YXJ0aWNsZSZndDsKJmx0Oy90eHA6aWZfaW5kaXZpZHVhbF9hcnRpY2xl Jmd0OzwvY29kZT48L3ByZT4KCjxwPldpdGggc29tZSBjdW5uaW5nIHlvdSBjb3VsZCBldmVu IGFkZCB0aGUgJiM4MjE2O3ZpcnR1YWwmIzgyMTc7IGRhdGUgdGhhdCB0aGV5IGNob3NlIGlu IHlvdXIgb3JpZ2luYWwgc21kX2FydGljbGVfZXZlbnQgbGlzdCBhbmQgcGFzcyBpdCBhcyBh IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHZhcmlhYmxlIHRvIHlvdXIgaW5kaXZp ZHVhbCBhcnRpY2xlIHdoZXJlIHlvdSBjb3VsZCByZWFkIHRoZSB2YWx1ZSBhbmQgcHJlLXNl bGVjdCB0aGUgZGF0ZSBpbiB0aGUgc2VsZWN0IGxpc3QgZm9yIHRoZSB2aXN0b3IuPC9wPgoK PGgzIGlkPSJlZzUiPkV4YW1wbGUgNTogaUNhbCBzeW5jaHJvbmlzYXRpb248L2gzPgoKPHA+ SG93IGFib3V0IGJlaW5nIGFibGUgdG8gb3V0cHV0IHlvdXIgZXZlbnRzIGluIGlDYWwgZm9y bWF0IHNvIG90aGVyIHBlb3BsZSBjYW4gc3luYyB0aGVpciBjYWxlbmRhcnMgdG8geW91cnM/ IFB1dCB0aGlzIGluIGEgbmV3IFBhZ2UgdGVtcGxhdGUgaW4gaXRzIG93biBTZWN0aW9uOjwv cD4KCjxwcmU+PGNvZGU+QkVHSU46VkNBTEVOREFSClZFUlNJT046Mi4wClgtV1ItQ0FMTkFN RTpHaWdzIENhbGVuZGFyClBST0RJRDotLy9BcHBsZSBDb21wdXRlciwgSW5jLy9pQ2FsIDEu NS8vRU4KWC1XUi1USU1FWk9ORTpFdXJvcGUvTG9uZG9uCiZsdDt0eHA6c21kX2FydGljbGVf ZXZlbnQgZm9ybT0mcXVvdDtpY3NpdGVtJnF1b3Q7IHRpbWU9JnF1b3Q7YW55JnF1b3Q7CnNl Y3Rpb249JnF1b3Q7Z2lncyZxdW90OyBsaW1pdD0mcXVvdDsxMDAwJnF1b3Q7Jmd0OwogQkVH SU46VkVWRU5UCiBEVFNUQVJUOiZsdDt0eHA6cG9zdGVkIGZvcm1hdD0mcXVvdDslWSVtJWRU JUglaSVzJnF1b3Q7IC8mZ3Q7CiBEVEVORDombHQ7dHhwOmV4cGlyZXMgZm9ybWF0PSZxdW90 OyVZJW0lZFQlSCVpJXMmcXVvdDsgLyZndDsKIFNVTU1BUlk6Jmx0O3R4cDp0aXRsZSAvJmd0 OwogRU5EOlZFVkVOVAombHQ7L3R4cDpzbWRfYXJ0aWNsZV9ldmVudCZndDsKRU5EOlZDQUxF TkRBUjwvY29kZT48L3ByZT4KCjxwPlRoYXQgd2lsbCBvdXRwdXQgYW4gaUNhbC1mb3JtYXR0 ZWQgZ2lnIGxpc3QgKHJlcGVhdGVkIG9yIG90aGVyd2lzZSkuIElmIHlvdSBnb3QgZnJlYWt5 IHdpdGggaXQgYW5kIGFkZGVkIHNvbWUgY29uZGl0aW9uYWwgbG9naWMgaW5zaWRlIHRoZSB0 ZW1wbGF0ZSB5b3UgY291bGQgZXZlbiByZWFkIGluIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8 L3NwYW4+IHZhcmlhYmxlcyBhbmQgcGx1ZyB0aGVtIGluLiBUaHVzIHlvdSBjb3VsZCBsaW5r IHRvIGl0IGRpcmVjdGx5IG9mZiB0aGUgY2FsZW5kYXIgaXRzZWxmLCBwYXNzIGluIHRoZSBz ZWN0aW9uLCBjYXRlZ29yeSBvciBldmVudCBpbmZvIGFuZCBoYXZlIGEgY3VzdG9taXNlZCBp Q2FsIHN0cmVhbSBwdW1wZWQgb3V0IG9mIFRleHRwYXR0ZXJuLjwvcD4KCjxwPlRoYW5rcyB0 byB3b29mIGZvciBicmluZ2luZyB0aGUgb3JpZ2luYWwgPGEgaHJlZj0iaHR0cDovL2RlLW9u bGluZS5jby51ay8yMDA2LzA1LzA1L3RleHRwYXR0ZXJuLWFuZC1pY2FsIj5EYXZpZCBFbWVy eTwvYT4gYXJ0aWNsZSB0byBteSBhdHRlbnRpb24uPC9wPgoKPGgzIGlkPSJlZzYiPkV4YW1w bGUgNjogcmVkZWZpbmluZyBub3c8L2gzPgoKPHA+VXNpbmcgdGhlIDxjb2RlPm5vdzwvY29k ZT4gYW5kIDxjb2RlPm9mZnNldDwvY29kZT4gYXR0cmlidXRlcyBvZiA8Y29kZT4mbHQ7dHhw OnNtZF9jYWxfbm93IC8mZ3Q7PC9jb2RlPiB5b3UgY2FuIGVmZmVjdGl2ZWx5IHNldCAmIzgy MTY7bm93JiM4MjE3OyB0byBiZSBhbnkgdGltZSB5b3UgbGlrZSBhbmQgbWFrZSBjYWxjdWxh dGlvbnMgYmFzZWQgb24gYSBwYXJ0aWN1bGFyIGRhdGUuPC9wPgoKPHA+UGx1Z2dpbmcgdGhl IDxjb2RlPj9tb250aDwvY29kZT4gYW5kIDxjb2RlPj95ZWFyPC9jb2RlPiBjb2RlcyBpbiBh bGxvd3MgeW91IHRvIG1ha2UgPGNvZGU+Jmx0O3R4cDpzbWRfYXJ0aWNsZV9ldmVudCAvJmd0 OzwvY29kZT4gdHJhY2sgdGhlIGNhbGVuZGFyLiBTbyB5b3UgY2FuIGF1dG9tYXRpY2FsbHkg c2hvdyBvbmx5IHRoZSBldmVudHMgdGhhdCBvY2N1ciBpbiB0aGUgbW9udGggdGhlIHZpc2l0 b3IgaXMgYnJvd3NpbmcgdmlhIHRoZSBjYWxlbmRhcjo8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0 eHA6c21kX2NhbGVuZGFyIHN0ZXBmaWVsZD0mcXVvdDtjdXN0b21fMSZxdW90OyAvJmd0Owom bHQ7aDImZ3Q7RXZlbnRzIHRoaXMgbW9udGgmbHQ7L2gyJmd0OwombHQ7dHhwOnNtZF9hcnRp Y2xlX2V2ZW50IHN0ZXBmaWVsZD0mcXVvdDtjdXN0b21fMSZxdW90OwogICAgIGZyb209JiMz OTsmbHQ7dHhwOnNtZF9jYWxfbm93IG5vdz0mcXVvdDswMS0/bW9udGgtP3llYXImcXVvdDsg LyZndDsmIzM5OwogICAgIHRvPSYjMzk7Jmx0O3R4cDpzbWRfY2FsX25vdyBub3c9JnF1b3Q7 P21vbnRoLT95ZWFyJnF1b3Q7CiAgICAgICAgb2Zmc2V0PSZxdW90OzEgbW9udGgmcXVvdDsg LyZndDsmIzM5OyB0aW1lPSZxdW90O2FueSZxdW90OyB3cmFwdGFnPSZxdW90O3VsJnF1b3Q7 Jmd0OwombHQ7bGkmZ3Q7Jmx0O3R4cDpwZXJtbGluayZndDsmbHQ7YiZndDsmbHQ7dHhwOnRp dGxlLyZndDsmbHQ7L2ImZ3Q7Jmx0Oy90eHA6cGVybWxpbmsmZ3Q7Jmx0Oy9saSZndDsKJmx0 Oy90eHA6c21kX2FydGljbGVfZXZlbnQmZ3Q7PC9jb2RlPjwvcHJlPgoKPGgyPkF1dGhvciAv IGNyZWRpdHM8L2gyPgoKPHA+PGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2NvbnRh Y3QiPlN0ZWYgRGF3c29uPC9hPi4gSm9pbnRseSBmdW5kZWQgYnkgZ2VuZXJvdXMgZG9uYXRv cnM6IG1yZGFsZSwgd29vZiwgamFrb2IsIHJlbm9iaXJkIGFuZCBqb2ViYWljaC4gT3JpZ2lu YWxseSBiYXNlZCBvbiBtZHBfY2FsZW5kYXIuIEFsbCBwcm9wcyB0byB0aGUgb3JpZ2luYWwg YXV0aG9yLCBhbmQgb2YgY291cnNlIHRoZSBjbGFzcyB1cG9uIHdoaWNoIHRoZSBjYWxlbmRh ciBpcyBiYXNlZC48L3A+IjtzOjM6Im1kNSI7czozMjoiMjk4M2JiMjI4Y2U1N2NhMDhmNDAw MTdkOTNmZjE3MjYiO30=