Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC90LzYvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzAxMTkwMzczIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC90LzYvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTcwMTE5MDM3NCIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKCjxzY3JpcHQ+CiAgLy8gQ3JlYXRlIFByb2R1Y3QgTGlzdCBhcnJheQogIGlmICghYXhQcm9kdWN0TGlzdCkgewogICAgdmFyIGF4UHJvZHVjdExpc3QgPSBbXTsKICB9CgogIC8vIENyZWF0ZSBQcm9kdWN0IGNsaWNrIGFycmF5CiAgaWYgKCFheEl0ZW0pIHsKICAgIHZhciBheEl0ZW0gPSBbXTsKICB9CgogIGlmICghbGlzdE5hbWUpIHsKICAgIHZhciBsaXN0TmFtZSA9ICcnOwogIH0gZWxzZSB7CiAgICBsaXN0TmFtZSA9ICcnOwogIH0KCiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgIC8vIE9uY2xpY2sgZXZlbnQKICAgIHZhciBwcm9kdWN0Q2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3RtLWNhcmQtcHJvZHVjdC1wMjQ4LWM3LWNyZW1lLWVzc2VudGllbGxlLXJlY2hhcmdlLXRlbXBsYXRlLS0xNjIxOTUwODYzNzg3MV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiJyk7CiAgICBwcm9kdWN0Q2FyZHMuZm9yRWFjaChmdW5jdGlvbiAoY2FyZCkgewogICAgICBpZiAoY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpICE9PSBudWxsKSB7CiAgICAgICAgbGlzdE5hbWUgPSBjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykuZ2V0QXR0cmlidXRlKCdndG0tdHJhY2tpbmctY3Jvc3NzZWxsJyk7CiAgICAgIH0KICAgICAgY2FyZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgICAgIHZhciBwcm9kdWN0RGF0YSA9IEpTT04ucGFyc2UoY2FyZC5nZXRBdHRyaWJ1dGUoJ2d0bS1jYXJkLWRhdGEnKSk7CiAgICAgICAgLy8gTmVlZCB0byBwdXNoIGxpc3ROYW1lCiAgICAgICAgcHJvZHVjdERhdGFbJ2l0ZW1fbGlzdF9uYW1lJ10gPSBsaXN0TmFtZTsKICAgICAgICAvLyBQdXNoIGNsaWNrZWQgcHJvZHVjdAogICAgICAgIGF4SXRlbS5wdXNoKHByb2R1Y3REYXRhKTsKICAgICAgICAvLyBTZW5kICJjbGljayIgZXZlbnQKICAgICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfY2xpY2snLAogICAgICAgICAgYXhJdGVtOiBheEl0ZW0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9KTsKCiAgICAvLyBQdXNoIGFsbCBwcm9kdWN0IGluIGRhdGFMYXllcgogICAgYXhQcm9kdWN0TGlzdC5wdXNoKHsKICAgICAgaXRlbV9uYW1lOiAnUDI0OCBDNyBDUkVNRSBFU1NFTlRJRUxMRSArIFJFQ0hBUkdFJywKICAgICAgaXRlbV9pZDogJ0VTUF9QUk9EVUNUX28wMDF4MDJfMTAzNTA5JywKICAgICAgcHJpY2U6ICc3Miw2MCDigqwnLAogICAgICBpdGVtX2JyYW5kOiAnS0lPVElTJywKICAgICAgaXRlbV9jYXRlZ29yeTE6ICdLSU9USVMnLAogICAgICBpdGVtX2NhdGVnb3J5MjogJ0Jlc3QgY3VpZGFkbyB5IHBlcmZ1bWUnLAogICAgICBpdGVtX2NhdGVnb3J5MzogJycsCiAgICAgIGl0ZW1fdmFyaWFudDogJ0RlZmF1bHQgVGl0bGUnLAogICAgICBpdGVtX2xpc3RfbmFtZTogbGlzdE5hbWUKICAgIH0pOwoKICAgIC8vIFNlbmQgImZpbmlzaGVkIiBldmVudAogICAgaWYgKGF4UHJvZHVjdExpc3QubGVuZ3RoID09PSB3aW5kb3cudGhlbWUuaXRlbXNfY291bnQpIHsKICAgICAgZGF0YUxheWVyLnB1c2goewogICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9saXN0X2NvbXBsZXRlJywKICAgICAgICBheFByb2R1Y3RMaXN0OiBheFByb2R1Y3RMaXN0LAogICAgICB9KTsKICAgIH0KICB9KTsKCiAgZnVuY3Rpb24gY2xpY2tQcm9kdWN0KHByb2R1Y3REYXRhKSB7fQo8L3NjcmlwdD4KCgo8c2NyaXB0IGRlZmVyPgogIGZ1bmN0aW9uIHN3eW1DYWxsYmFja0ZuKHN3YXQpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3N3eW06Y29sbGVjdGlvbnMtbG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgICBzd2F0LmluaXRpYWxpemVBY3Rpb25CdXR0b25zKCc8PENvbGxlY3Rpb25zIEdyaWQgUEFSRU5UIFNlbGVjdG9yID4+Jyk7CiAgICB9KTsKICB9CiAgaWYgKCF3aW5kb3cuU3d5bUNhbGxiYWNrcykgewogICAgd2luZG93LlN3eW1DYWxsYmFja3MgPSBbXTsKICB9CiAgd2luZG93LlN3eW1DYWxsYmFja3MucHVzaChzd3ltQ2FsbGJhY2tGbik7Cjwvc2NyaXB0PgoKCiAgICAKCiAgICA8ZGl2IGNsYXNzPSJjYXJkLXdyYXBwZXIgcHJvZHVjdC1taW5pYXR1cmUgcHJvZHVjdC1jYXJkLXdyYXBwZXIgdW5kZXJsaW5lLWxpbmtzLWhvdmVyIGd0bS1jYXJkLXByb2R1Y3QgZ3RtLWNhcmQtcHJvZHVjdC1wMjQ4LWM3LWNyZW1lLWVzc2VudGllbGxlLXJlY2hhcmdlLXRlbXBsYXRlLS0xNjIxOTUwODYzNzg3MV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiIiBndG0tY2FyZC1kYXRhPScKICAgICAgICB7CiAgICAgICAgICAgICJpdGVtX25hbWUiOiAiUDI0OCBDNyBDUkVNRSBFU1NFTlRJRUxMRSArIFJFQ0hBUkdFIiwKICAgICAgICAgICAgIml0ZW1faWQiOiAiRVNQX1BST0RVQ1RfbzAwMXgwMl8xMDM1MDkiLAogICAgICAgICAgICAicHJpY2UiOiAiNzIsNjAg4oKsIiwKICAgICAgICAgICAgIml0ZW1fYnJhbmQiOiAiS0lPVElTIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkxIjogIiIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MiI6ICJiZXN0LWJlYXV0eS1hbmQtcGVyZnVtZSIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MyI6IG51bGwsCiAgICAgICAgICAgICJpdGVtX3ZhcmlhbnQiOiAiRGVmYXVsdCBUaXRsZSIKICAgICAgICB9CiAgICAnPgogICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSIKICAgICAgICBjYXJkIGNhcmQtLXN0YW5kYXJkCiAgICAgICAgIGNhcmQtLW1lZGlhCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICIKICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgID4KICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjYXJkX19pbm5lciBjb2xvci1iYWNrZ3JvdW5kLTEgZ3JhZGllbnQgcmF0aW8iCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgICAgID48ZGl2IGNsYXNzPSJjYXJkX19tZWRpYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhIG1lZGlhLS10cmFuc3BhcmVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmNzZXQ9Ii8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX1AyMTRfNmNlMGFiMDMtMTliZS00MDg1LWJhMjAtZDFhNmQ4MGZmOWQyLmpwZz92PTE3NDU0MTY2Mzcmd2lkdGg9MTY1IDE2NXcsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDIxNF82Y2UwYWIwMy0xOWJlLTQwODUtYmEyMC1kMWE2ZDgwZmY5ZDIuanBnP3Y9MTc0NTQxNjYzNyZ3aWR0aD0zNjAgMzYwdywvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMjE0XzZjZTBhYjAzLTE5YmUtNDA4NS1iYTIwLWQxYTZkODBmZjlkMi5qcGc/dj0xNzQ1NDE2NjM3JndpZHRoPTUzMyA1MzN3LC8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX1AyMTRfNmNlMGFiMDMtMTliZS00MDg1LWJhMjAtZDFhNmQ4MGZmOWQyLmpwZz92PTE3NDU0MTY2Mzcmd2lkdGg9NzIwIDcyMHcsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDIxNF82Y2UwYWIwMy0xOWJlLTQwODUtYmEyMC1kMWE2ZDgwZmY5ZDIuanBnP3Y9MTc0NTQxNjYzNyZ3aWR0aD05NDAgOTQwdywvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMjE0XzZjZTBhYjAzLTE5YmUtNDA4NS1iYTIwLWQxYTZkODBmZjlkMi5qcGc/dj0xNzQ1NDE2NjM3JndpZHRoPTEwNjYgMTA2NncsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDIxNF82Y2UwYWIwMy0xOWJlLTQwODUtYmEyMC1kMWE2ZDgwZmY5ZDIuanBnP3Y9MTc0NTQxNjYzNyAxMjAwdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMjE0XzZjZTBhYjAzLTE5YmUtNDA4NS1iYTIwLWQxYTZkODBmZjlkMi5qcGc/dj0xNzQ1NDE2NjM3JndpZHRoPTUzMyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9IihtaW4td2lkdGg6IDE2MDBweCkgMzY3cHgsIChtaW4td2lkdGg6IDk5MHB4KSBjYWxjKCgxMDB2dyAtIDEzMHB4KSAvIDQpLCAobWluLXdpZHRoOiA3NTBweCkgY2FsYygoMTAwdncgLSAxMjBweCkgLyAzKSwgY2FsYygoMTAwdncgLSAzNXB4KSAvIDIpIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9IlAyNDggQzcgQ1JFTUUgRVNTRU5USUVMTEUgKyBSRUNIQVJHRSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im1vdGlvbi1yZWR1Y2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9ImxhenkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjEyMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0XzE1MTYwOTMzODQzMzE4IiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9IjE1MTYwOTMzODQzMzE4IiBkYXRhLXZhcmlhbnQtaWQ9IjU1NTM5NzE0ODgzOTU4IiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5lcy9wcm9kdWN0cy9wMjQ4LWM3LWNyZW1lLWVzc2VudGllbGxlLXJlY2hhcmdlIj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fYmFkZ2UgdG9wIGxlZnQiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj48ZGl2IGNsYXNzPSJjYXJkX190eXBlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtJT1RJUwogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTE2MDkzMzg0MzMxOCIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvcDI0OC1jNy1jcmVtZS1lc3NlbnRpZWxsZS1yZWNoYXJnZSIgaWQ9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNjIxOTUwODYzNzg3MV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MTYwOTMzODQzMzE4IiBjbGFzcz0iZnVsbC11bnN0eWxlZC1saW5rIGZ1bGwtdW5zdHlsZWQtbGluay1wcm9kdWN0IiBhcmlhLWxhYmVsbGVkYnk9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNjIxOTUwODYzNzg3MV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MTYwOTMzODQzMzE4IEJhZGdlLXRlbXBsYXRlLS0xNjIxOTUwODYzNzg3MV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MTYwOTMzODQzMzE4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZW1hIGVzZW5jaWFsIGTDum8geSByZWNhbWJpbyAKICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIFAyNDggQzcgQ1JFTUUgRVNTRU5USUVMTEUgKyBSRUNIQVJHRQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW5mb3JtYXRpb24iPjxzcGFuIGNsYXNzPSJjYXB0aW9uLWxhcmdlIGxpZ2h0Ij48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbi1mb3JtLXJhdGluZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRpbmctcHJpY2UiPgo8ZGl2CiAgY2xhc3M9IgogICAgcHJpY2UgIgo+CiAgPGRpdiBjbGFzcz0icHJpY2VfX2NvbnRhaW5lciI+PGRpdiBjbGFzcz0icHJpY2VfX3JlZ3VsYXIiPjxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZWNpbyBoYWJpdHVhbDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgIDcyLDYwIOKCrAogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InByaWNlX19zYWxlIj4KICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZWNpbyBkZSBvZmVydGE8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXNhbGUgcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAgNzIsNjAg4oKsCiAgICAgIDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmVjaW8gaGFiaXR1YWw8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8cyBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgMCwwMCDigqwKICAgICAgICAgICAgCiAgICAgICAgICA8L3M+CiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPHNtYWxsIGNsYXNzPSJ1bml0LXByaWNlIGNhcHRpb24gaGlkZGVuIj4KICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+UHJlY2lvIHVuaXRhcmlvPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPi88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+Jm5ic3A7cG9yJm5ic3A7PC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9zcGFuPgogICAgPC9zbWFsbD4KICA8L2Rpdj48L2Rpdj4KCjwvZGl2PjxhIGhyZWY9Ii9wcm9kdWN0cy9wMjQ4LWM3LWNyZW1lLWVzc2VudGllbGxlLXJlY2hhcmdlIiBjbGFzcz0icXVpY2stYWRkIHF1aWNrLWFkZC1leWUgcXVpY2stYWRkLW1vYmlsZSBleHRyYS1sYXJnZS11cC1oaWRlIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSJpY29uIGljb24tZXllIiB3aWR0aD0iMjQuNzY0IiBoZWlnaHQ9IjEzLjMxOCI+CiAgPGcgZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIuNyIgY2xpcC1wYXRoPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMSkiPgogIDxwYXRoIGQ9Ik0xMC40OC40NGguMDM3YTExLjk4MyAxMS45ODMgMCAwIDEgNS42NDEgMS40MjRBMTIuMjUzIDEyLjI1MyAwIDAgMSAxOC41IDMuNDk3YTEyLjQ1NyAxMi40NTcgMCAwIDEgMS43MzQgMS44OTQgMTIuNDIyIDEyLjQyMiAwIDAgMS0xLjcyOCAyLjEwNiAxMi4wNzcgMTIuMDc3IDAgMCAxLTIuMzc5IDEuODEgMTEuNjc2IDExLjY3NiAwIDAgMS0yLjc3MSAxLjE2MSAxMS42IDExLjYgMCAwIDEtMy4wNjMuNDFoLS4wMzlhMTEuNjEzIDExLjYxMyAwIDAgMS0yLjk3Ni0uNCAxMS42NjMgMTEuNjYzIDAgMCAxLTIuNy0xLjEwNiAxMi4wNDcgMTIuMDQ3IDAgMCAxLTIuMzM1LTEuNzE3IDEyLjQgMTIuNCAwIDAgMS0xLjcxMi0yIDEyLjQ2NCAxMi40NjQgMCAwIDEgMS43NTMtMiAxMi4yNzEgMTIuMjcxIDAgMCAxIDIuMzg4LTEuNzIzIDExLjk4MiAxMS45ODIgMCAwIDEgNS44LTEuNDkzWm0wLS40NEExMi41ODcgMTIuNTg3IDAgMCAwIDAgNS42NTVhMTIuMyAxMi4zIDAgMCAwIDEwLjI1MyA1LjY2M2guMDRhMTIuMzI0IDEyLjMyNCAwIDAgMCAxMC40NzEtNS45NDJBMTIuNTc1IDEyLjU3NSAwIDAgMCAxMC41MTgtLjAwM2gtLjA0MSIvPgogIDxwYXRoIGQ9Ik0xMC4zODIuNzM0YTQuNzQxIDQuNzQxIDAgMCAxIDIuNy44MzkgNC44ODkgNC44ODkgMCAwIDEgLjcxNS42IDQuOTUgNC45NSAwIDAgMSAxLjMxOSAyLjQ5MyA1LjA4IDUuMDggMCAwIDEgMCAxLjk5MSA0Ljk0OCA0Ljk0OCAwIDAgMS0xLjMxOSAyLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMS0uNzE1LjYgNC44IDQuOCAwIDAgMS0uODIuNDUzIDQuNzQ5IDQuNzQ5IDAgMCAxLTMuNzUzIDAgNC44IDQuOCAwIDAgMS0uODItLjQ1MyA0LjkxNSA0LjkxNSAwIDAgMS0xLjMwNi0xLjMzMSA0Ljk0OSA0Ljk0OSAwIDAgMS0uNzI4LTEuNzYzIDUuMDggNS4wOCAwIDAgMSAwLTEuOTkxIDQuOTQ0IDQuOTQ0IDAgMCAxIDEuMzE5LTIuNDkzIDQuODg5IDQuODg5IDAgMCAxIC43MTUtLjYgNC44IDQuOCAwIDAgMSAuODItLjQ1MyA0LjczIDQuNzMgMCAwIDEgMS44NzctLjM4Nm0wLS41YTUuNDI5IDUuNDI5IDAgMSAwIDUuMzMgNS40MjkgNS4zOCA1LjM4IDAgMCAwLTUuMzMtNS40MjkiLz4KICA8cGF0aCBkPSJNMTMuMDgzIDUuNzU5YTIuNjgzIDIuNjgzIDAgMSAxLTIuNjgyLTIuNzMyIDIuNzA3IDIuNzA3IDAgMCAxIDIuNjgyIDIuNzMyIi8+CiAgPC9nPgo8L3N2Zz4KICA8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQtaG92ZXIiPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTUxNjA5MzM4NDMzMTgiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTUxNjA5MzM4NDMzMTgiIGRhdGEtdmFyaWFudC1pZD0iNTU1Mzk3MTQ4ODM5NTgiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLmVzL3Byb2R1Y3RzL3AyNDgtYzctY3JlbWUtZXNzZW50aWVsbGUtcmVjaGFyZ2UiPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlbWEgZXNlbmNpYWwgZMO6byB5IHJlY2FtYmlvCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBQMjQ4IEM3IENSRU1FIEVTU0VOVElFTExFICsgUkVDSEFSR0UKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgY2FyZF9fdmFyaWFudC1rZXlfcG9pbnRzIj48bGk+PHNwYW4+VW5hIGNyZW1hIGNvbiBBY2VpdGUgRXNlbmNpYWwgZGUgUm9zYSBwYXJhIGFsaXNhciwgaGlkcmF0YXIgeSBwcm9wb3JjaW9uYXIgdW4gY3V0aXMgcmFkaWFudGUgPC9zcGFuPjwvbGk+PGxpPjxzcGFuPk51ZXZvIGVudmFzZSByZWNhcmdhYmxlIGR1cmFkZXJvIDwvc3Bhbj48L2xpPjxsaT48c3Bhbj40NSUgZGUgZGVzY3VlbnRvIGVuIGxhIGNvbXByYSBkZSBsYSBDcmVtYSArIHN1IHJlY2FtYmlvIDwvc3Bhbj48L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0icXVpY2stYWRkIG5vLWpzLWhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvcDI0OC1jNy1jcmVtZS1lc3NlbnRpZWxsZS1yZWNoYXJnZSIgY2xhc3M9InF1aWNrLWFkZF9fbGluayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icXVpY2stYWRkX19zdWJtaXQgYnV0dG9uIGJ1dHRvbi0tZnVsbC13aWR0aCBidXR0b24tLXByaW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWRVIgTEEgT0ZFUlRBCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4=
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC90LzYvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzAxMTkwMzczIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC90LzYvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTcwMTE5MDM3NCIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKCjxzY3JpcHQ+CiAgLy8gQ3JlYXRlIFByb2R1Y3QgTGlzdCBhcnJheQogIGlmICghYXhQcm9kdWN0TGlzdCkgewogICAgdmFyIGF4UHJvZHVjdExpc3QgPSBbXTsKICB9CgogIC8vIENyZWF0ZSBQcm9kdWN0IGNsaWNrIGFycmF5CiAgaWYgKCFheEl0ZW0pIHsKICAgIHZhciBheEl0ZW0gPSBbXTsKICB9CgogIGlmICghbGlzdE5hbWUpIHsKICAgIHZhciBsaXN0TmFtZSA9ICcnOwogIH0gZWxzZSB7CiAgICBsaXN0TmFtZSA9ICcnOwogIH0KCiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgIC8vIE9uY2xpY2sgZXZlbnQKICAgIHZhciBwcm9kdWN0Q2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3RtLWNhcmQtcHJvZHVjdC1wMTk4LWM4LWNyZW1lLWNvbnRvdXIteWV1eC1saWZ0aW5nLXRlbXBsYXRlLS0xNjIxOTUwODYzNzg3MV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiJyk7CiAgICBwcm9kdWN0Q2FyZHMuZm9yRWFjaChmdW5jdGlvbiAoY2FyZCkgewogICAgICBpZiAoY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpICE9PSBudWxsKSB7CiAgICAgICAgbGlzdE5hbWUgPSBjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykuZ2V0QXR0cmlidXRlKCdndG0tdHJhY2tpbmctY3Jvc3NzZWxsJyk7CiAgICAgIH0KICAgICAgY2FyZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgICAgIHZhciBwcm9kdWN0RGF0YSA9IEpTT04ucGFyc2UoY2FyZC5nZXRBdHRyaWJ1dGUoJ2d0bS1jYXJkLWRhdGEnKSk7CiAgICAgICAgLy8gTmVlZCB0byBwdXNoIGxpc3ROYW1lCiAgICAgICAgcHJvZHVjdERhdGFbJ2l0ZW1fbGlzdF9uYW1lJ10gPSBsaXN0TmFtZTsKICAgICAgICAvLyBQdXNoIGNsaWNrZWQgcHJvZHVjdAogICAgICAgIGF4SXRlbS5wdXNoKHByb2R1Y3REYXRhKTsKICAgICAgICAvLyBTZW5kICJjbGljayIgZXZlbnQKICAgICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfY2xpY2snLAogICAgICAgICAgYXhJdGVtOiBheEl0ZW0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9KTsKCiAgICAvLyBQdXNoIGFsbCBwcm9kdWN0IGluIGRhdGFMYXllcgogICAgYXhQcm9kdWN0TGlzdC5wdXNoKHsKICAgICAgaXRlbV9uYW1lOiAnUDE5OCBDOCBDUkVNRSArIENPTlRPVVIgWUVVWCBMSUZUSU5HJywKICAgICAgaXRlbV9pZDogJ0VTUF9QUk9EVUNUX28wMDF4MDJfMTAzMzUwJywKICAgICAgcHJpY2U6ICc0Nyw4OSDigqwnLAogICAgICBpdGVtX2JyYW5kOiAnRHIgUGllcnJlIFJpY2F1ZCcsCiAgICAgIGl0ZW1fY2F0ZWdvcnkxOiAnRHIgUGllcnJlIFJpY2F1ZCcsCiAgICAgIGl0ZW1fY2F0ZWdvcnkyOiAnQ29udG9ybm8gZGUgb2pvcyBhbnRpZWRhZCcsCiAgICAgIGl0ZW1fY2F0ZWdvcnkzOiAnJywKICAgICAgaXRlbV92YXJpYW50OiAnRGVmYXVsdCBUaXRsZScsCiAgICAgIGl0ZW1fbGlzdF9uYW1lOiBsaXN0TmFtZQogICAgfSk7CgogICAgLy8gU2VuZCAiZmluaXNoZWQiIGV2ZW50CiAgICBpZiAoYXhQcm9kdWN0TGlzdC5sZW5ndGggPT09IHdpbmRvdy50aGVtZS5pdGVtc19jb3VudCkgewogICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2xpc3RfY29tcGxldGUnLAogICAgICAgIGF4UHJvZHVjdExpc3Q6IGF4UHJvZHVjdExpc3QsCiAgICAgIH0pOwogICAgfQogIH0pOwoKICBmdW5jdGlvbiBjbGlja1Byb2R1Y3QocHJvZHVjdERhdGEpIHt9Cjwvc2NyaXB0PgoKCjxzY3JpcHQgZGVmZXI+CiAgZnVuY3Rpb24gc3d5bUNhbGxiYWNrRm4oc3dhdCkgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc3d5bTpjb2xsZWN0aW9ucy1sb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgIHN3YXQuaW5pdGlhbGl6ZUFjdGlvbkJ1dHRvbnMoJzw8Q29sbGVjdGlvbnMgR3JpZCBQQVJFTlQgU2VsZWN0b3IgPj4nKTsKICAgIH0pOwogIH0KICBpZiAoIXdpbmRvdy5Td3ltQ2FsbGJhY2tzKSB7CiAgICB3aW5kb3cuU3d5bUNhbGxiYWNrcyA9IFtdOwogIH0KICB3aW5kb3cuU3d5bUNhbGxiYWNrcy5wdXNoKHN3eW1DYWxsYmFja0ZuKTsKPC9zY3JpcHQ+CgoKICAgIAoKICAgIDxkaXYgY2xhc3M9ImNhcmQtd3JhcHBlciBwcm9kdWN0LW1pbmlhdHVyZSBwcm9kdWN0LWNhcmQtd3JhcHBlciB1bmRlcmxpbmUtbGlua3MtaG92ZXIgZ3RtLWNhcmQtcHJvZHVjdCBndG0tY2FyZC1wcm9kdWN0LXAxOTgtYzgtY3JlbWUtY29udG91ci15ZXV4LWxpZnRpbmctdGVtcGxhdGUtLTE2MjE5NTA4NjM3ODcxX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2IiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICJQMTk4IEM4IENSRU1FICsgQ09OVE9VUiBZRVVYIExJRlRJTkciLAogICAgICAgICAgICAiaXRlbV9pZCI6ICJFU1BfUFJPRFVDVF9vMDAxeDAyXzEwMzM1MCIsCiAgICAgICAgICAgICJwcmljZSI6ICI0Nyw4OSDigqwiLAogICAgICAgICAgICAiaXRlbV9icmFuZCI6ICJEciBQaWVycmUgUmljYXVkIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkxIjogIiIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MiI6ICJhbnRpLWFnaW5nLWV5ZS1jb250b3VyIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkzIjogbnVsbCwKICAgICAgICAgICAgIml0ZW1fdmFyaWFudCI6ICJEZWZhdWx0IFRpdGxlIgogICAgICAgIH0KICAgICc+CiAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9IgogICAgICAgIGNhcmQgY2FyZC0tc3RhbmRhcmQKICAgICAgICAgY2FyZC0tbWVkaWEKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgIgogICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgPgogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImNhcmRfX2lubmVyIGNvbG9yLWJhY2tncm91bmQtMSBncmFkaWVudCByYXRpbyIKICAgICAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICAgICAgPjxkaXYgY2xhc3M9ImNhcmRfX21lZGlhIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEgbWVkaWEtLXRyYW5zcGFyZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyY3NldD0iLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDE5OF82ZTNiNTlkMS0wM2FkLTRlOTQtYmRiOS1lYTRiMjEzODQwYWMuanBnP3Y9MTc0NjYyODMwMyZ3aWR0aD0xNjUgMTY1dywvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMTk4XzZlM2I1OWQxLTAzYWQtNGU5NC1iZGI5LWVhNGIyMTM4NDBhYy5qcGc/dj0xNzQ2NjI4MzAzJndpZHRoPTM2MCAzNjB3LC8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX1AxOThfNmUzYjU5ZDEtMDNhZC00ZTk0LWJkYjktZWE0YjIxMzg0MGFjLmpwZz92PTE3NDY2MjgzMDMmd2lkdGg9NTMzIDUzM3csLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDE5OF82ZTNiNTlkMS0wM2FkLTRlOTQtYmRiOS1lYTRiMjEzODQwYWMuanBnP3Y9MTc0NjYyODMwMyZ3aWR0aD03MjAgNzIwdywvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMTk4XzZlM2I1OWQxLTAzYWQtNGU5NC1iZGI5LWVhNGIyMTM4NDBhYy5qcGc/dj0xNzQ2NjI4MzAzJndpZHRoPTk0MCA5NDB3LC8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX1AxOThfNmUzYjU5ZDEtMDNhZC00ZTk0LWJkYjktZWE0YjIxMzg0MGFjLmpwZz92PTE3NDY2MjgzMDMmd2lkdGg9MTA2NiAxMDY2dywvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMTk4XzZlM2I1OWQxLTAzYWQtNGU5NC1iZGI5LWVhNGIyMTM4NDBhYy5qcGc/dj0xNzQ2NjI4MzAzIDEyMDB3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9Ii8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX1AxOThfNmUzYjU5ZDEtMDNhZC00ZTk0LWJkYjktZWE0YjIxMzg0MGFjLmpwZz92PTE3NDY2MjgzMDMmd2lkdGg9NTMzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz0iKG1pbi13aWR0aDogMTYwMHB4KSAzNjdweCwgKG1pbi13aWR0aDogOTkwcHgpIGNhbGMoKDEwMHZ3IC0gMTMwcHgpIC8gNCksIChtaW4td2lkdGg6IDc1MHB4KSBjYWxjKCgxMDB2dyAtIDEyMHB4KSAvIDMpLCBjYWxjKCgxMDB2dyAtIDM1cHgpIC8gMikiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD0iUDE5OCBDOCBDUkVNRSArIENPTlRPVVIgWUVVWCBMSUZUSU5HIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibW90aW9uLXJlZHVjZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTUxNzcyMzE2MzA3MTAiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTUxNzcyMzE2MzA3MTAiIGRhdGEtdmFyaWFudC1pZD0iNTU2MDcwMTQwNjQ1MDIiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLmVzL3Byb2R1Y3RzL3AxOTgtYzgtY3JlbWUtY29udG91ci15ZXV4LWxpZnRpbmciPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19iYWRnZSB0b3AgbGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPjxkaXYgY2xhc3M9ImNhcmRfX3R5cGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgRHIgUGllcnJlIFJpY2F1ZAogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTE3NzIzMTYzMDcxMCIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvcDE5OC1jOC1jcmVtZS1jb250b3VyLXlldXgtbGlmdGluZyIgaWQ9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNjIxOTUwODYzNzg3MV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MTc3MjMxNjMwNzEwIiBjbGFzcz0iZnVsbC11bnN0eWxlZC1saW5rIGZ1bGwtdW5zdHlsZWQtbGluay1wcm9kdWN0IiBhcmlhLWxhYmVsbGVkYnk9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNjIxOTUwODYzNzg3MV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MTc3MjMxNjMwNzEwIEJhZGdlLXRlbXBsYXRlLS0xNjIxOTUwODYzNzg3MV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MTc3MjMxNjMwNzEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIETDum8gY29udG9ybm8gZGUgb2pvcyArIGNyZW1hIGxpZnRpbmcgCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3A+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBQMTk4IEM4IENSRU1FICsgQ09OVE9VUiBZRVVYIExJRlRJTkcKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWluZm9ybWF0aW9uIj48c3BhbiBjbGFzcz0iY2FwdGlvbi1sYXJnZSBsaWdodCI+PC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24tZm9ybS1yYXRpbmctcHJpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmF0aW5nLXByaWNlIj4KPGRpdgogIGNsYXNzPSIKICAgIHByaWNlICIKPgogIDxkaXYgY2xhc3M9InByaWNlX19jb250YWluZXIiPjxkaXYgY2xhc3M9InByaWNlX19yZWd1bGFyIj48c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmVjaW8gaGFiaXR1YWw8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICA0Nyw4OSDigqwKICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwcmljZV9fc2FsZSI+CiAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmVjaW8gZGUgb2ZlcnRhPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1zYWxlIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIDQ3LDg5IOKCrAogICAgICA8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlY2lvIGhhYml0dWFsPC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgICAgPHMgY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgIDwvcz4KICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8c21hbGwgY2xhc3M9InVuaXQtcHJpY2UgY2FwdGlvbiBoaWRkZW4iPgogICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5QcmVjaW8gdW5pdGFyaW88L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIDxzcGFuPjwvc3Bhbj4KICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+Lzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4mbmJzcDtwb3ImbmJzcDs8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L3NwYW4+CiAgICA8L3NtYWxsPgogIDwvZGl2PjwvZGl2PgoKPC9kaXY+PGEgaHJlZj0iL3Byb2R1Y3RzL3AxOTgtYzgtY3JlbWUtY29udG91ci15ZXV4LWxpZnRpbmciIGNsYXNzPSJxdWljay1hZGQgcXVpY2stYWRkLWV5ZSBxdWljay1hZGQtbW9iaWxlIGV4dHJhLWxhcmdlLXVwLWhpZGUiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgY2xhc3M9Imljb24gaWNvbi1leWUiIHdpZHRoPSIyNC43NjQiIGhlaWdodD0iMTMuMzE4Ij4KICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9Ii43IiBjbGlwLXBhdGg9InVybCgjcHJlZml4X19hKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxKSI+CiAgPHBhdGggZD0iTTEwLjQ4LjQ0aC4wMzdhMTEuOTgzIDExLjk4MyAwIDAgMSA1LjY0MSAxLjQyNEExMi4yNTMgMTIuMjUzIDAgMCAxIDE4LjUgMy40OTdhMTIuNDU3IDEyLjQ1NyAwIDAgMSAxLjczNCAxLjg5NCAxMi40MjIgMTIuNDIyIDAgMCAxLTEuNzI4IDIuMTA2IDEyLjA3NyAxMi4wNzcgMCAwIDEtMi4zNzkgMS44MSAxMS42NzYgMTEuNjc2IDAgMCAxLTIuNzcxIDEuMTYxIDExLjYgMTEuNiAwIDAgMS0zLjA2My40MWgtLjAzOWExMS42MTMgMTEuNjEzIDAgMCAxLTIuOTc2LS40IDExLjY2MyAxMS42NjMgMCAwIDEtMi43LTEuMTA2IDEyLjA0NyAxMi4wNDcgMCAwIDEtMi4zMzUtMS43MTcgMTIuNCAxMi40IDAgMCAxLTEuNzEyLTIgMTIuNDY0IDEyLjQ2NCAwIDAgMSAxLjc1My0yIDEyLjI3MSAxMi4yNzEgMCAwIDEgMi4zODgtMS43MjMgMTEuOTgyIDExLjk4MiAwIDAgMSA1LjgtMS40OTNabTAtLjQ0QTEyLjU4NyAxMi41ODcgMCAwIDAgMCA1LjY1NWExMi4zIDEyLjMgMCAwIDAgMTAuMjUzIDUuNjYzaC4wNGExMi4zMjQgMTIuMzI0IDAgMCAwIDEwLjQ3MS01Ljk0MkExMi41NzUgMTIuNTc1IDAgMCAwIDEwLjUxOC0uMDAzaC0uMDQxIi8+CiAgPHBhdGggZD0iTTEwLjM4Mi43MzRhNC43NDEgNC43NDEgMCAwIDEgMi43LjgzOSA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LjYgNC45NSA0Ljk1IDAgMCAxIDEuMzE5IDIuNDkzIDUuMDggNS4wOCAwIDAgMSAwIDEuOTkxIDQuOTQ4IDQuOTQ4IDAgMCAxLTEuMzE5IDIuNDkzIDQuODg5IDQuODg5IDAgMCAxLS43MTUuNiA0LjggNC44IDAgMCAxLS44Mi40NTMgNC43NDkgNC43NDkgMCAwIDEtMy43NTMgMCA0LjggNC44IDAgMCAxLS44Mi0uNDUzIDQuOTE1IDQuOTE1IDAgMCAxLTEuMzA2LTEuMzMxIDQuOTQ5IDQuOTQ5IDAgMCAxLS43MjgtMS43NjMgNS4wOCA1LjA4IDAgMCAxIDAtMS45OTEgNC45NDQgNC45NDQgMCAwIDEgMS4zMTktMi40OTMgNC44ODkgNC44ODkgMCAwIDEgLjcxNS0uNiA0LjggNC44IDAgMCAxIC44Mi0uNDUzIDQuNzMgNC43MyAwIDAgMSAxLjg3Ny0uMzg2bTAtLjVhNS40MjkgNS40MjkgMCAxIDAgNS4zMyA1LjQyOSA1LjM4IDUuMzggMCAwIDAtNS4zMy01LjQyOSIvPgogIDxwYXRoIGQ9Ik0xMy4wODMgNS43NTlhMi42ODMgMi42ODMgMCAxIDEtMi42ODItMi43MzIgMi43MDcgMi43MDcgMCAwIDEgMi42ODIgMi43MzIiLz4KICA8L2c+Cjwvc3ZnPgogIDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudC1ob3ZlciI+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF8xNTE3NzIzMTYzMDcxMCIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSIxNTE3NzIzMTYzMDcxMCIgZGF0YS12YXJpYW50LWlkPSI1NTYwNzAxNDA2NDUwMiIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuZXMvcHJvZHVjdHMvcDE5OC1jOC1jcmVtZS1jb250b3VyLXlldXgtbGlmdGluZyI+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEw7pvIGNvbnRvcm5vIGRlIG9qb3MgKyBjcmVtYSBsaWZ0aW5nCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBQMTk4IEM4IENSRU1FICsgQ09OVE9VUiBZRVVYIExJRlRJTkcKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgY2FyZF9fdmFyaWFudC1rZXlfcG9pbnRzIj48bGk+PHNwYW4+Q3JlbWEgZGUgZMOtYSBjb24gZWZlY3RvIGxpZnRpbmcgaW5tZWRpYXRvIDwvc3Bhbj48L2xpPjxsaT48c3Bhbj5Db250b3JubyBkZSBvam9zIGNvbiBlZmVjdG8gdGVuc29yIGlubWVkaWF0byA8L3NwYW4+PC9saT48bGk+PHNwYW4+NDAlIGRlIGRlc2N1ZW50byBlbiBsYSBjb21wcmEgZGVsIGTDum8gPC9zcGFuPjwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJxdWljay1hZGQgbm8tanMtaGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy9wMTk4LWM4LWNyZW1lLWNvbnRvdXIteWV1eC1saWZ0aW5nIiBjbGFzcz0icXVpY2stYWRkX19saW5rIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJxdWljay1hZGRfX3N1Ym1pdCBidXR0b24gYnV0dG9uLS1mdWxsLXdpZHRoIGJ1dHRvbi0tcHJpbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZFUiBMQSBPRkVSVEEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pg==
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC90LzYvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzAxMTkwMzczIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC90LzYvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTcwMTE5MDM3NCIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKCjxzY3JpcHQ+CiAgLy8gQ3JlYXRlIFByb2R1Y3QgTGlzdCBhcnJheQogIGlmICghYXhQcm9kdWN0TGlzdCkgewogICAgdmFyIGF4UHJvZHVjdExpc3QgPSBbXTsKICB9CgogIC8vIENyZWF0ZSBQcm9kdWN0IGNsaWNrIGFycmF5CiAgaWYgKCFheEl0ZW0pIHsKICAgIHZhciBheEl0ZW0gPSBbXTsKICB9CgogIGlmICghbGlzdE5hbWUpIHsKICAgIHZhciBsaXN0TmFtZSA9ICcnOwogIH0gZWxzZSB7CiAgICBsaXN0TmFtZSA9ICcnOwogIH0KCiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgIC8vIE9uY2xpY2sgZXZlbnQKICAgIHZhciBwcm9kdWN0Q2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3RtLWNhcmQtcHJvZHVjdC1wMTE2LWM4LXgyLXdoaXRlLXdhc2gtdGVtcGxhdGUtLTE2MjE5NTA4NjM3ODcxX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICdQMTE2IEM4IFgyIFdISVRFIFdBU0gnLAogICAgICBpdGVtX2lkOiAnRVNQX1BST0RVQ1RfbzAwMXgwMl8xMDMyNzknLAogICAgICBwcmljZTogJzE5LDU3IOKCrCcsCiAgICAgIGl0ZW1fYnJhbmQ6ICdTVEFOSE9NRScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkxOiAnU1RBTkhPTUUnLAogICAgICBpdGVtX2NhdGVnb3J5MjogJ0RldGVyZ2VudGUnLAogICAgICBpdGVtX2NhdGVnb3J5MzogJycsCiAgICAgIGl0ZW1fdmFyaWFudDogJ0RlZmF1bHQgVGl0bGUnLAogICAgICBpdGVtX2xpc3RfbmFtZTogbGlzdE5hbWUKICAgIH0pOwoKICAgIC8vIFNlbmQgImZpbmlzaGVkIiBldmVudAogICAgaWYgKGF4UHJvZHVjdExpc3QubGVuZ3RoID09PSB3aW5kb3cudGhlbWUuaXRlbXNfY291bnQpIHsKICAgICAgZGF0YUxheWVyLnB1c2goewogICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9saXN0X2NvbXBsZXRlJywKICAgICAgICBheFByb2R1Y3RMaXN0OiBheFByb2R1Y3RMaXN0LAogICAgICB9KTsKICAgIH0KICB9KTsKCiAgZnVuY3Rpb24gY2xpY2tQcm9kdWN0KHByb2R1Y3REYXRhKSB7fQo8L3NjcmlwdD4KCgo8c2NyaXB0IGRlZmVyPgogIGZ1bmN0aW9uIHN3eW1DYWxsYmFja0ZuKHN3YXQpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3N3eW06Y29sbGVjdGlvbnMtbG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgICBzd2F0LmluaXRpYWxpemVBY3Rpb25CdXR0b25zKCc8PENvbGxlY3Rpb25zIEdyaWQgUEFSRU5UIFNlbGVjdG9yID4+Jyk7CiAgICB9KTsKICB9CiAgaWYgKCF3aW5kb3cuU3d5bUNhbGxiYWNrcykgewogICAgd2luZG93LlN3eW1DYWxsYmFja3MgPSBbXTsKICB9CiAgd2luZG93LlN3eW1DYWxsYmFja3MucHVzaChzd3ltQ2FsbGJhY2tGbik7Cjwvc2NyaXB0PgoKCiAgICAKCiAgICA8ZGl2IGNsYXNzPSJjYXJkLXdyYXBwZXIgcHJvZHVjdC1taW5pYXR1cmUgcHJvZHVjdC1jYXJkLXdyYXBwZXIgdW5kZXJsaW5lLWxpbmtzLWhvdmVyIGd0bS1jYXJkLXByb2R1Y3QgZ3RtLWNhcmQtcHJvZHVjdC1wMTE2LWM4LXgyLXdoaXRlLXdhc2gtdGVtcGxhdGUtLTE2MjE5NTA4NjM3ODcxX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2IiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICJQMTE2IEM4IFgyIFdISVRFIFdBU0giLAogICAgICAgICAgICAiaXRlbV9pZCI6ICJFU1BfUFJPRFVDVF9vMDAxeDAyXzEwMzI3OSIsCiAgICAgICAgICAgICJwcmljZSI6ICIxOSw1NyDigqwiLAogICAgICAgICAgICAiaXRlbV9icmFuZCI6ICJTVEFOSE9NRSIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MSI6ICIiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTIiOiAibGF1bmRyeSIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MyI6IG51bGwsCiAgICAgICAgICAgICJpdGVtX3ZhcmlhbnQiOiAiRGVmYXVsdCBUaXRsZSIKICAgICAgICB9CiAgICAnPgogICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSIKICAgICAgICBjYXJkIGNhcmQtLXN0YW5kYXJkCiAgICAgICAgIGNhcmQtLW1lZGlhCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICIKICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgID4KICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjYXJkX19pbm5lciBjb2xvci1iYWNrZ3JvdW5kLTEgZ3JhZGllbnQgcmF0aW8iCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgICAgID48ZGl2IGNsYXNzPSJjYXJkX19tZWRpYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhIG1lZGlhLS10cmFuc3BhcmVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmNzZXQ9Ii8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX1AxMTZfYjA3ZTM3YjYtMzU1Yy00Y2E0LWEyZTMtMzdkMmFmMmEwMTg4LmpwZz92PTE3NDY2MjgzMDMmd2lkdGg9MTY1IDE2NXcsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDExNl9iMDdlMzdiNi0zNTVjLTRjYTQtYTJlMy0zN2QyYWYyYTAxODguanBnP3Y9MTc0NjYyODMwMyZ3aWR0aD0zNjAgMzYwdywvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMTE2X2IwN2UzN2I2LTM1NWMtNGNhNC1hMmUzLTM3ZDJhZjJhMDE4OC5qcGc/dj0xNzQ2NjI4MzAzJndpZHRoPTUzMyA1MzN3LC8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX1AxMTZfYjA3ZTM3YjYtMzU1Yy00Y2E0LWEyZTMtMzdkMmFmMmEwMTg4LmpwZz92PTE3NDY2MjgzMDMmd2lkdGg9NzIwIDcyMHcsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDExNl9iMDdlMzdiNi0zNTVjLTRjYTQtYTJlMy0zN2QyYWYyYTAxODguanBnP3Y9MTc0NjYyODMwMyZ3aWR0aD05NDAgOTQwdywvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMTE2X2IwN2UzN2I2LTM1NWMtNGNhNC1hMmUzLTM3ZDJhZjJhMDE4OC5qcGc/dj0xNzQ2NjI4MzAzJndpZHRoPTEwNjYgMTA2NncsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDExNl9iMDdlMzdiNi0zNTVjLTRjYTQtYTJlMy0zN2QyYWYyYTAxODguanBnP3Y9MTc0NjYyODMwMyAxMjAwdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMTE2X2IwN2UzN2I2LTM1NWMtNGNhNC1hMmUzLTM3ZDJhZjJhMDE4OC5qcGc/dj0xNzQ2NjI4MzAzJndpZHRoPTUzMyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9IihtaW4td2lkdGg6IDE2MDBweCkgMzY3cHgsIChtaW4td2lkdGg6IDk5MHB4KSBjYWxjKCgxMDB2dyAtIDEzMHB4KSAvIDQpLCAobWluLXdpZHRoOiA3NTBweCkgY2FsYygoMTAwdncgLSAxMjBweCkgLyAzKSwgY2FsYygoMTAwdncgLSAzNXB4KSAvIDIpIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9IlAxMTYgQzggWDIgV0hJVEUgV0FTSCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im1vdGlvbi1yZWR1Y2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9ImxhenkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjEyMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0XzE1MTc3MjI1NjY2OTM0IiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9IjE1MTc3MjI1NjY2OTM0IiBkYXRhLXZhcmlhbnQtaWQ9IjU1NjA2OTg0NTczMzAyIiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5lcy9wcm9kdWN0cy9wMTE2LWM4LXgyLXdoaXRlLXdhc2giPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19iYWRnZSB0b3AgbGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPjxkaXYgY2xhc3M9ImNhcmRfX3R5cGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RBTkhPTUUKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHAgY2xhc3M9ImNhcmRfX2hlYWRpbmcgaDUiICBpZD0idGl0bGUtdGVtcGxhdGUtLTE2MjE5NTA4NjM3ODcxX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTUxNzcyMjU2NjY5MzQiID4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3Byb2R1Y3RzL3AxMTYtYzgteDItd2hpdGUtd2FzaCIgaWQ9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNjIxOTUwODYzNzg3MV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MTc3MjI1NjY2OTM0IiBjbGFzcz0iZnVsbC11bnN0eWxlZC1saW5rIGZ1bGwtdW5zdHlsZWQtbGluay1wcm9kdWN0IiBhcmlhLWxhYmVsbGVkYnk9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNjIxOTUwODYzNzg3MV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MTc3MjI1NjY2OTM0IEJhZGdlLXRlbXBsYXRlLS0xNjIxOTUwODYzNzg3MV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MTc3MjI1NjY2OTM0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldCBkZSAyIGRldGVyZ2VudGVzIGV4cGVydG9zIFdoaXRlIFdhc2ggCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3A+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBQMTE2IEM4IFgyIFdISVRFIFdBU0gKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWluZm9ybWF0aW9uIj48c3BhbiBjbGFzcz0iY2FwdGlvbi1sYXJnZSBsaWdodCI+PC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24tZm9ybS1yYXRpbmctcHJpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmF0aW5nLXByaWNlIj4KPGRpdgogIGNsYXNzPSIKICAgIHByaWNlICIKPgogIDxkaXYgY2xhc3M9InByaWNlX19jb250YWluZXIiPjxkaXYgY2xhc3M9InByaWNlX19yZWd1bGFyIj48c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmVjaW8gaGFiaXR1YWw8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAxOSw1NyDigqwKICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwcmljZV9fc2FsZSI+CiAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmVjaW8gZGUgb2ZlcnRhPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1zYWxlIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIDE5LDU3IOKCrAogICAgICA8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlY2lvIGhhYml0dWFsPC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgICAgPHMgY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgIDwvcz4KICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8c21hbGwgY2xhc3M9InVuaXQtcHJpY2UgY2FwdGlvbiBoaWRkZW4iPgogICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5QcmVjaW8gdW5pdGFyaW88L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIDxzcGFuPjwvc3Bhbj4KICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+Lzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4mbmJzcDtwb3ImbmJzcDs8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L3NwYW4+CiAgICA8L3NtYWxsPgogIDwvZGl2PjwvZGl2PgoKPC9kaXY+PGEgaHJlZj0iL3Byb2R1Y3RzL3AxMTYtYzgteDItd2hpdGUtd2FzaCIgY2xhc3M9InF1aWNrLWFkZCBxdWljay1hZGQtZXllIHF1aWNrLWFkZC1tb2JpbGUgZXh0cmEtbGFyZ2UtdXAtaGlkZSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiBjbGFzcz0iaWNvbiBpY29uLWV5ZSIgd2lkdGg9IjI0Ljc2NCIgaGVpZ2h0PSIxMy4zMTgiPgogIDxnIGZpbGw9ImN1cnJlbnRDb2xvciIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iLjciIGNsaXAtcGF0aD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDEpIj4KICA8cGF0aCBkPSJNMTAuNDguNDRoLjAzN2ExMS45ODMgMTEuOTgzIDAgMCAxIDUuNjQxIDEuNDI0QTEyLjI1MyAxMi4yNTMgMCAwIDEgMTguNSAzLjQ5N2ExMi40NTcgMTIuNDU3IDAgMCAxIDEuNzM0IDEuODk0IDEyLjQyMiAxMi40MjIgMCAwIDEtMS43MjggMi4xMDYgMTIuMDc3IDEyLjA3NyAwIDAgMS0yLjM3OSAxLjgxIDExLjY3NiAxMS42NzYgMCAwIDEtMi43NzEgMS4xNjEgMTEuNiAxMS42IDAgMCAxLTMuMDYzLjQxaC0uMDM5YTExLjYxMyAxMS42MTMgMCAwIDEtMi45NzYtLjQgMTEuNjYzIDExLjY2MyAwIDAgMS0yLjctMS4xMDYgMTIuMDQ3IDEyLjA0NyAwIDAgMS0yLjMzNS0xLjcxNyAxMi40IDEyLjQgMCAwIDEtMS43MTItMiAxMi40NjQgMTIuNDY0IDAgMCAxIDEuNzUzLTIgMTIuMjcxIDEyLjI3MSAwIDAgMSAyLjM4OC0xLjcyMyAxMS45ODIgMTEuOTgyIDAgMCAxIDUuOC0xLjQ5M1ptMC0uNDRBMTIuNTg3IDEyLjU4NyAwIDAgMCAwIDUuNjU1YTEyLjMgMTIuMyAwIDAgMCAxMC4yNTMgNS42NjNoLjA0YTEyLjMyNCAxMi4zMjQgMCAwIDAgMTAuNDcxLTUuOTQyQTEyLjU3NSAxMi41NzUgMCAwIDAgMTAuNTE4LS4wMDNoLS4wNDEiLz4KICA8cGF0aCBkPSJNMTAuMzgyLjczNGE0Ljc0MSA0Ljc0MSAwIDAgMSAyLjcuODM5IDQuODg5IDQuODg5IDAgMCAxIC43MTUuNiA0Ljk1IDQuOTUgMCAwIDEgMS4zMTkgMi40OTMgNS4wOCA1LjA4IDAgMCAxIDAgMS45OTEgNC45NDggNC45NDggMCAwIDEtMS4zMTkgMi40OTMgNC44ODkgNC44ODkgMCAwIDEtLjcxNS42IDQuOCA0LjggMCAwIDEtLjgyLjQ1MyA0Ljc0OSA0Ljc0OSAwIDAgMS0zLjc1MyAwIDQuOCA0LjggMCAwIDEtLjgyLS40NTMgNC45MTUgNC45MTUgMCAwIDEtMS4zMDYtMS4zMzEgNC45NDkgNC45NDkgMCAwIDEtLjcyOC0xLjc2MyA1LjA4IDUuMDggMCAwIDEgMC0xLjk5MSA0Ljk0NCA0Ljk0NCAwIDAgMSAxLjMxOS0yLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LS42IDQuOCA0LjggMCAwIDEgLjgyLS40NTMgNC43MyA0LjczIDAgMCAxIDEuODc3LS4zODZtMC0uNWE1LjQyOSA1LjQyOSAwIDEgMCA1LjMzIDUuNDI5IDUuMzggNS4zOCAwIDAgMC01LjMzLTUuNDI5Ii8+CiAgPHBhdGggZD0iTTEzLjA4MyA1Ljc1OWEyLjY4MyAyLjY4MyAwIDEgMS0yLjY4Mi0yLjczMiAyLjcwNyAyLjcwNyAwIDAgMSAyLjY4MiAyLjczMiIvPgogIDwvZz4KPC9zdmc+CiAgPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50LWhvdmVyIj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0XzE1MTc3MjI1NjY2OTM0IiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9IjE1MTc3MjI1NjY2OTM0IiBkYXRhLXZhcmlhbnQtaWQ9IjU1NjA2OTg0NTczMzAyIiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5lcy9wcm9kdWN0cy9wMTE2LWM4LXgyLXdoaXRlLXdhc2giPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IGRlIDIgZGV0ZXJnZW50ZXMgZXhwZXJ0b3MgV2hpdGUgV2FzaAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgUDExNiBDOCBYMiBXSElURSBXQVNICiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIGNhcmRfX3ZhcmlhbnQta2V5X3BvaW50cyI+PGxpPjxzcGFuPkRldGVyZ2VudGUgY29uY2VudHJhZG8gcGFyYSByb3BhIGJsYW5jYSA8L3NwYW4+PC9saT48bGk+PHNwYW4+UHJvdGVnZSBjb250cmEgZWwgYWdyaXNhbWllbnRvIHkgZWwgYW1hcmlsbGVhbWllbnRvIDwvc3Bhbj48L2xpPjxsaT48c3Bhbj4zMCUgZGUgZGVzY3VlbnRvIGEgcGFydGlyIGRlIDIgY29tcHJhcyA8L3NwYW4+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9InF1aWNrLWFkZCBuby1qcy1oaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3Byb2R1Y3RzL3AxMTYtYzgteDItd2hpdGUtd2FzaCIgY2xhc3M9InF1aWNrLWFkZF9fbGluayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icXVpY2stYWRkX19zdWJtaXQgYnV0dG9uIGJ1dHRvbi0tZnVsbC13aWR0aCBidXR0b24tLXByaW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWRVIgTEEgT0ZFUlRBCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4=
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC90LzYvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzAxMTkwMzczIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC90LzYvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTcwMTE5MDM3NCIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKCjxzY3JpcHQ+CiAgLy8gQ3JlYXRlIFByb2R1Y3QgTGlzdCBhcnJheQogIGlmICghYXhQcm9kdWN0TGlzdCkgewogICAgdmFyIGF4UHJvZHVjdExpc3QgPSBbXTsKICB9CgogIC8vIENyZWF0ZSBQcm9kdWN0IGNsaWNrIGFycmF5CiAgaWYgKCFheEl0ZW0pIHsKICAgIHZhciBheEl0ZW0gPSBbXTsKICB9CgogIGlmICghbGlzdE5hbWUpIHsKICAgIHZhciBsaXN0TmFtZSA9ICcnOwogIH0gZWxzZSB7CiAgICBsaXN0TmFtZSA9ICcnOwogIH0KCiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgIC8vIE9uY2xpY2sgZXZlbnQKICAgIHZhciBwcm9kdWN0Q2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3RtLWNhcmQtcHJvZHVjdC1wMTcwLWM4LWNyZW1lLWRlLXJhc2FnZS1ibGFpcmVhdS10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYicpOwogICAgcHJvZHVjdENhcmRzLmZvckVhY2goZnVuY3Rpb24gKGNhcmQpIHsKICAgICAgaWYgKGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKSAhPT0gbnVsbCkgewogICAgICAgIGxpc3ROYW1lID0gY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpLmdldEF0dHJpYnV0ZSgnZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpOwogICAgICB9CiAgICAgIGNhcmQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICB2YXIgcHJvZHVjdERhdGEgPSBKU09OLnBhcnNlKGNhcmQuZ2V0QXR0cmlidXRlKCdndG0tY2FyZC1kYXRhJykpOwogICAgICAgIC8vIE5lZWQgdG8gcHVzaCBsaXN0TmFtZQogICAgICAgIHByb2R1Y3REYXRhWydpdGVtX2xpc3RfbmFtZSddID0gbGlzdE5hbWU7CiAgICAgICAgLy8gUHVzaCBjbGlja2VkIHByb2R1Y3QKICAgICAgICBheEl0ZW0ucHVzaChwcm9kdWN0RGF0YSk7CiAgICAgICAgLy8gU2VuZCAiY2xpY2siIGV2ZW50CiAgICAgICAgZGF0YUxheWVyLnB1c2goewogICAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2NsaWNrJywKICAgICAgICAgIGF4SXRlbTogYXhJdGVtCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSk7CgogICAgLy8gUHVzaCBhbGwgcHJvZHVjdCBpbiBkYXRhTGF5ZXIKICAgIGF4UHJvZHVjdExpc3QucHVzaCh7CiAgICAgIGl0ZW1fbmFtZTogJ1AxNzAgQzggQ1JFTUUgREUgUkFTQUdFICsgQkxBSVJFQVUnLAogICAgICBpdGVtX2lkOiAnRVNQX1BST0RVQ1RfbzAwMXgwMl8xMDMyOTgnLAogICAgICBwcmljZTogJzIwLDA2IOKCrCcsCiAgICAgIGl0ZW1fYnJhbmQ6ICdLSU9USVMnLAogICAgICBpdGVtX2NhdGVnb3J5MTogJ0tJT1RJUycsCiAgICAgIGl0ZW1fY2F0ZWdvcnkyOiAnQ3VpZGFkbyBkZWwgYWZlaXRhZG8nLAogICAgICBpdGVtX2NhdGVnb3J5MzogJycsCiAgICAgIGl0ZW1fdmFyaWFudDogJ0RlZmF1bHQgVGl0bGUnLAogICAgICBpdGVtX2xpc3RfbmFtZTogbGlzdE5hbWUKICAgIH0pOwoKICAgIC8vIFNlbmQgImZpbmlzaGVkIiBldmVudAogICAgaWYgKGF4UHJvZHVjdExpc3QubGVuZ3RoID09PSB3aW5kb3cudGhlbWUuaXRlbXNfY291bnQpIHsKICAgICAgZGF0YUxheWVyLnB1c2goewogICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9saXN0X2NvbXBsZXRlJywKICAgICAgICBheFByb2R1Y3RMaXN0OiBheFByb2R1Y3RMaXN0LAogICAgICB9KTsKICAgIH0KICB9KTsKCiAgZnVuY3Rpb24gY2xpY2tQcm9kdWN0KHByb2R1Y3REYXRhKSB7fQo8L3NjcmlwdD4KCgo8c2NyaXB0IGRlZmVyPgogIGZ1bmN0aW9uIHN3eW1DYWxsYmFja0ZuKHN3YXQpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3N3eW06Y29sbGVjdGlvbnMtbG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgICBzd2F0LmluaXRpYWxpemVBY3Rpb25CdXR0b25zKCc8PENvbGxlY3Rpb25zIEdyaWQgUEFSRU5UIFNlbGVjdG9yID4+Jyk7CiAgICB9KTsKICB9CiAgaWYgKCF3aW5kb3cuU3d5bUNhbGxiYWNrcykgewogICAgd2luZG93LlN3eW1DYWxsYmFja3MgPSBbXTsKICB9CiAgd2luZG93LlN3eW1DYWxsYmFja3MucHVzaChzd3ltQ2FsbGJhY2tGbik7Cjwvc2NyaXB0PgoKCiAgICAKCiAgICA8ZGl2IGNsYXNzPSJjYXJkLXdyYXBwZXIgcHJvZHVjdC1taW5pYXR1cmUgcHJvZHVjdC1jYXJkLXdyYXBwZXIgdW5kZXJsaW5lLWxpbmtzLWhvdmVyIGd0bS1jYXJkLXByb2R1Y3QgZ3RtLWNhcmQtcHJvZHVjdC1wMTcwLWM4LWNyZW1lLWRlLXJhc2FnZS1ibGFpcmVhdS10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYiIgZ3RtLWNhcmQtZGF0YT0nCiAgICAgICAgewogICAgICAgICAgICAiaXRlbV9uYW1lIjogIlAxNzAgQzggQ1JFTUUgREUgUkFTQUdFICsgQkxBSVJFQVUiLAogICAgICAgICAgICAiaXRlbV9pZCI6ICJFU1BfUFJPRFVDVF9vMDAxeDAyXzEwMzI5OCIsCiAgICAgICAgICAgICJwcmljZSI6ICIyMCwwNiDigqwiLAogICAgICAgICAgICAiaXRlbV9icmFuZCI6ICJLSU9USVMiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTEiOiAiIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkyIjogInNoYXZpbmctY2FyZSIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MyI6IG51bGwsCiAgICAgICAgICAgICJpdGVtX3ZhcmlhbnQiOiAiRGVmYXVsdCBUaXRsZSIKICAgICAgICB9CiAgICAnPgogICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSIKICAgICAgICBjYXJkIGNhcmQtLXN0YW5kYXJkCiAgICAgICAgIGNhcmQtLW1lZGlhCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICIKICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgID4KICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjYXJkX19pbm5lciBjb2xvci1iYWNrZ3JvdW5kLTEgZ3JhZGllbnQgcmF0aW8iCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgICAgID48ZGl2IGNsYXNzPSJjYXJkX19tZWRpYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhIG1lZGlhLS10cmFuc3BhcmVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmNzZXQ9Ii8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX1AxNzBfMjY3NWQ4YzUtZTBiZC00NDYzLThhZmQtYWRkNDk5Y2VmN2MzLmpwZz92PTE3NDY2MjgzMDMmd2lkdGg9MTY1IDE2NXcsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDE3MF8yNjc1ZDhjNS1lMGJkLTQ0NjMtOGFmZC1hZGQ0OTljZWY3YzMuanBnP3Y9MTc0NjYyODMwMyZ3aWR0aD0zNjAgMzYwdywvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMTcwXzI2NzVkOGM1LWUwYmQtNDQ2My04YWZkLWFkZDQ5OWNlZjdjMy5qcGc/dj0xNzQ2NjI4MzAzJndpZHRoPTUzMyA1MzN3LC8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX1AxNzBfMjY3NWQ4YzUtZTBiZC00NDYzLThhZmQtYWRkNDk5Y2VmN2MzLmpwZz92PTE3NDY2MjgzMDMmd2lkdGg9NzIwIDcyMHcsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDE3MF8yNjc1ZDhjNS1lMGJkLTQ0NjMtOGFmZC1hZGQ0OTljZWY3YzMuanBnP3Y9MTc0NjYyODMwMyZ3aWR0aD05NDAgOTQwdywvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMTcwXzI2NzVkOGM1LWUwYmQtNDQ2My04YWZkLWFkZDQ5OWNlZjdjMy5qcGc/dj0xNzQ2NjI4MzAzJndpZHRoPTEwNjYgMTA2NncsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDE3MF8yNjc1ZDhjNS1lMGJkLTQ0NjMtOGFmZC1hZGQ0OTljZWY3YzMuanBnP3Y9MTc0NjYyODMwMyAxMjAwdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMTcwXzI2NzVkOGM1LWUwYmQtNDQ2My04YWZkLWFkZDQ5OWNlZjdjMy5qcGc/dj0xNzQ2NjI4MzAzJndpZHRoPTUzMyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9IihtaW4td2lkdGg6IDE2MDBweCkgMzY3cHgsIChtaW4td2lkdGg6IDk5MHB4KSBjYWxjKCgxMDB2dyAtIDEzMHB4KSAvIDQpLCAobWluLXdpZHRoOiA3NTBweCkgY2FsYygoMTAwdncgLSAxMjBweCkgLyAzKSwgY2FsYygoMTAwdncgLSAzNXB4KSAvIDIpIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9IlAxNzAgQzggQ1JFTUUgREUgUkFTQUdFICsgQkxBSVJFQVUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJtb3Rpb24tcmVkdWNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9ImxhenkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF8xNTE3NzIyNjg0NjU4MiIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSIxNTE3NzIyNjg0NjU4MiIgZGF0YS12YXJpYW50LWlkPSI1NTYwNjk5MDg2NDc1OCIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuZXMvcHJvZHVjdHMvcDE3MC1jOC1jcmVtZS1kZS1yYXNhZ2UtYmxhaXJlYXUiPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19iYWRnZSB0b3AgbGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPjxkaXYgY2xhc3M9ImNhcmRfX3R5cGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgS0lPVElTCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjxwIGNsYXNzPSJjYXJkX19oZWFkaW5nIGg1IiAgaWQ9InRpdGxlLXRlbXBsYXRlLS0xNjIxOTUwODYzNzg3MV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MTc3MjI2ODQ2NTgyIiA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy9wMTcwLWM4LWNyZW1lLWRlLXJhc2FnZS1ibGFpcmVhdSIgaWQ9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNjIxOTUwODYzNzg3MV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MTc3MjI2ODQ2NTgyIiBjbGFzcz0iZnVsbC11bnN0eWxlZC1saW5rIGZ1bGwtdW5zdHlsZWQtbGluay1wcm9kdWN0IiBhcmlhLWxhYmVsbGVkYnk9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNjIxOTUwODYzNzg3MV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MTc3MjI2ODQ2NTgyIEJhZGdlLXRlbXBsYXRlLS0xNjIxOTUwODYzNzg3MV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MTc3MjI2ODQ2NTgyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZW1hIHkgYnJvY2hhIGRlIGFmZWl0YXIgZGUgY2Vkcm8gCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3A+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBQMTcwIEM4IENSRU1FIERFIFJBU0FHRSArIEJMQUlSRUFVCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbmZvcm1hdGlvbiI+PHNwYW4gY2xhc3M9ImNhcHRpb24tbGFyZ2UgbGlnaHQiPjwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uLWZvcm0tcmF0aW5nLXByaWNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhdGluZy1wcmljZSI+CjxkaXYKICBjbGFzcz0iCiAgICBwcmljZSAiCj4KICA8ZGl2IGNsYXNzPSJwcmljZV9fY29udGFpbmVyIj48ZGl2IGNsYXNzPSJwcmljZV9fcmVndWxhciI+PHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlY2lvIGhhYml0dWFsPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAgMjAsMDYg4oKsCiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPGRpdiBjbGFzcz0icHJpY2VfX3NhbGUiPgogICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlY2lvIGRlIG9mZXJ0YTwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tc2FsZSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICAyMCwwNiDigqwKICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZWNpbyBoYWJpdHVhbDwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICAgIDxzIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAgICAKICAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICA8L3M+CiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPHNtYWxsIGNsYXNzPSJ1bml0LXByaWNlIGNhcHRpb24gaGlkZGVuIj4KICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+UHJlY2lvIHVuaXRhcmlvPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPi88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+Jm5ic3A7cG9yJm5ic3A7PC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9zcGFuPgogICAgPC9zbWFsbD4KICA8L2Rpdj48L2Rpdj4KCjwvZGl2PjxhIGhyZWY9Ii9wcm9kdWN0cy9wMTcwLWM4LWNyZW1lLWRlLXJhc2FnZS1ibGFpcmVhdSIgY2xhc3M9InF1aWNrLWFkZCBxdWljay1hZGQtZXllIHF1aWNrLWFkZC1tb2JpbGUgZXh0cmEtbGFyZ2UtdXAtaGlkZSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiBjbGFzcz0iaWNvbiBpY29uLWV5ZSIgd2lkdGg9IjI0Ljc2NCIgaGVpZ2h0PSIxMy4zMTgiPgogIDxnIGZpbGw9ImN1cnJlbnRDb2xvciIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iLjciIGNsaXAtcGF0aD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDEpIj4KICA8cGF0aCBkPSJNMTAuNDguNDRoLjAzN2ExMS45ODMgMTEuOTgzIDAgMCAxIDUuNjQxIDEuNDI0QTEyLjI1MyAxMi4yNTMgMCAwIDEgMTguNSAzLjQ5N2ExMi40NTcgMTIuNDU3IDAgMCAxIDEuNzM0IDEuODk0IDEyLjQyMiAxMi40MjIgMCAwIDEtMS43MjggMi4xMDYgMTIuMDc3IDEyLjA3NyAwIDAgMS0yLjM3OSAxLjgxIDExLjY3NiAxMS42NzYgMCAwIDEtMi43NzEgMS4xNjEgMTEuNiAxMS42IDAgMCAxLTMuMDYzLjQxaC0uMDM5YTExLjYxMyAxMS42MTMgMCAwIDEtMi45NzYtLjQgMTEuNjYzIDExLjY2MyAwIDAgMS0yLjctMS4xMDYgMTIuMDQ3IDEyLjA0NyAwIDAgMS0yLjMzNS0xLjcxNyAxMi40IDEyLjQgMCAwIDEtMS43MTItMiAxMi40NjQgMTIuNDY0IDAgMCAxIDEuNzUzLTIgMTIuMjcxIDEyLjI3MSAwIDAgMSAyLjM4OC0xLjcyMyAxMS45ODIgMTEuOTgyIDAgMCAxIDUuOC0xLjQ5M1ptMC0uNDRBMTIuNTg3IDEyLjU4NyAwIDAgMCAwIDUuNjU1YTEyLjMgMTIuMyAwIDAgMCAxMC4yNTMgNS42NjNoLjA0YTEyLjMyNCAxMi4zMjQgMCAwIDAgMTAuNDcxLTUuOTQyQTEyLjU3NSAxMi41NzUgMCAwIDAgMTAuNTE4LS4wMDNoLS4wNDEiLz4KICA8cGF0aCBkPSJNMTAuMzgyLjczNGE0Ljc0MSA0Ljc0MSAwIDAgMSAyLjcuODM5IDQuODg5IDQuODg5IDAgMCAxIC43MTUuNiA0Ljk1IDQuOTUgMCAwIDEgMS4zMTkgMi40OTMgNS4wOCA1LjA4IDAgMCAxIDAgMS45OTEgNC45NDggNC45NDggMCAwIDEtMS4zMTkgMi40OTMgNC44ODkgNC44ODkgMCAwIDEtLjcxNS42IDQuOCA0LjggMCAwIDEtLjgyLjQ1MyA0Ljc0OSA0Ljc0OSAwIDAgMS0zLjc1MyAwIDQuOCA0LjggMCAwIDEtLjgyLS40NTMgNC45MTUgNC45MTUgMCAwIDEtMS4zMDYtMS4zMzEgNC45NDkgNC45NDkgMCAwIDEtLjcyOC0xLjc2MyA1LjA4IDUuMDggMCAwIDEgMC0xLjk5MSA0Ljk0NCA0Ljk0NCAwIDAgMSAxLjMxOS0yLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LS42IDQuOCA0LjggMCAwIDEgLjgyLS40NTMgNC43MyA0LjczIDAgMCAxIDEuODc3LS4zODZtMC0uNWE1LjQyOSA1LjQyOSAwIDEgMCA1LjMzIDUuNDI5IDUuMzggNS4zOCAwIDAgMC01LjMzLTUuNDI5Ii8+CiAgPHBhdGggZD0iTTEzLjA4MyA1Ljc1OWEyLjY4MyAyLjY4MyAwIDEgMS0yLjY4Mi0yLjczMiAyLjcwNyAyLjcwNyAwIDAgMSAyLjY4MiAyLjczMiIvPgogIDwvZz4KPC9zdmc+CiAgPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50LWhvdmVyIj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0XzE1MTc3MjI2ODQ2NTgyIiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9IjE1MTc3MjI2ODQ2NTgyIiBkYXRhLXZhcmlhbnQtaWQ9IjU1NjA2OTkwODY0NzU4IiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5lcy9wcm9kdWN0cy9wMTcwLWM4LWNyZW1lLWRlLXJhc2FnZS1ibGFpcmVhdSI+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVtYSB5IGJyb2NoYSBkZSBhZmVpdGFyIGRlIGNlZHJvCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBQMTcwIEM4IENSRU1FIERFIFJBU0FHRSArIEJMQUlSRUFVCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIGNhcmRfX3ZhcmlhbnQta2V5X3BvaW50cyI+PGxpPjxzcGFuPkNyZW1hIGRlIGFmZWl0YXIgcGFyYSB1bmEgcGllbCBzdWF2ZSBlIGhpZHJhdGFkYSA8L3NwYW4+PC9saT48bGk+PHNwYW4+TGEgYnJvY2hhIGRlIGFmZWl0YXIgb3B0aW1pemEgbGEgZm9ybWFjacOzbiBkZSBlc3B1bWE8L3NwYW4+PC9saT48bGk+PHNwYW4+NTAlIGRlIGRlc2N1ZW50byBlbiBsYSBjb21wcmEgZGVsIGTDum8gPC9zcGFuPjwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJxdWljay1hZGQgbm8tanMtaGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy9wMTcwLWM4LWNyZW1lLWRlLXJhc2FnZS1ibGFpcmVhdSIgY2xhc3M9InF1aWNrLWFkZF9fbGluayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icXVpY2stYWRkX19zdWJtaXQgYnV0dG9uIGJ1dHRvbi0tZnVsbC13aWR0aCBidXR0b24tLXByaW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWRVIgTEEgT0ZFUlRBCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4=
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC90LzYvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzAxMTkwMzczIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC90LzYvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTcwMTE5MDM3NCIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKCjxzY3JpcHQ+CiAgLy8gQ3JlYXRlIFByb2R1Y3QgTGlzdCBhcnJheQogIGlmICghYXhQcm9kdWN0TGlzdCkgewogICAgdmFyIGF4UHJvZHVjdExpc3QgPSBbXTsKICB9CgogIC8vIENyZWF0ZSBQcm9kdWN0IGNsaWNrIGFycmF5CiAgaWYgKCFheEl0ZW0pIHsKICAgIHZhciBheEl0ZW0gPSBbXTsKICB9CgogIGlmICghbGlzdE5hbWUpIHsKICAgIHZhciBsaXN0TmFtZSA9ICcnOwogIH0gZWxzZSB7CiAgICBsaXN0TmFtZSA9ICcnOwogIH0KCiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgIC8vIE9uY2xpY2sgZXZlbnQKICAgIHZhciBwcm9kdWN0Q2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3RtLWNhcmQtcHJvZHVjdC1wMTEwLWM4LXgyLW1vcC1kdXN0ZXItdGVtcGxhdGUtLTE2MjE5NTA4NjM3ODcxX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICdQMTEwIEM4IFgyIE1PUCZEVVNURVInLAogICAgICBpdGVtX2lkOiAnRVNQX1BST0RVQ1RfbzAwMXgwMl8xMDMyNzMnLAogICAgICBwcmljZTogJzEzLDAxIOKCrCcsCiAgICAgIGl0ZW1fYnJhbmQ6ICdTVEFOSE9NRScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkxOiAnU1RBTkhPTUUnLAogICAgICBpdGVtX2NhdGVnb3J5MjogJ0hvbWUgQ2FyZScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkzOiAnJywKICAgICAgaXRlbV92YXJpYW50OiAnRGVmYXVsdCBUaXRsZScsCiAgICAgIGl0ZW1fbGlzdF9uYW1lOiBsaXN0TmFtZQogICAgfSk7CgogICAgLy8gU2VuZCAiZmluaXNoZWQiIGV2ZW50CiAgICBpZiAoYXhQcm9kdWN0TGlzdC5sZW5ndGggPT09IHdpbmRvdy50aGVtZS5pdGVtc19jb3VudCkgewogICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2xpc3RfY29tcGxldGUnLAogICAgICAgIGF4UHJvZHVjdExpc3Q6IGF4UHJvZHVjdExpc3QsCiAgICAgIH0pOwogICAgfQogIH0pOwoKICBmdW5jdGlvbiBjbGlja1Byb2R1Y3QocHJvZHVjdERhdGEpIHt9Cjwvc2NyaXB0PgoKCjxzY3JpcHQgZGVmZXI+CiAgZnVuY3Rpb24gc3d5bUNhbGxiYWNrRm4oc3dhdCkgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc3d5bTpjb2xsZWN0aW9ucy1sb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgIHN3YXQuaW5pdGlhbGl6ZUFjdGlvbkJ1dHRvbnMoJzw8Q29sbGVjdGlvbnMgR3JpZCBQQVJFTlQgU2VsZWN0b3IgPj4nKTsKICAgIH0pOwogIH0KICBpZiAoIXdpbmRvdy5Td3ltQ2FsbGJhY2tzKSB7CiAgICB3aW5kb3cuU3d5bUNhbGxiYWNrcyA9IFtdOwogIH0KICB3aW5kb3cuU3d5bUNhbGxiYWNrcy5wdXNoKHN3eW1DYWxsYmFja0ZuKTsKPC9zY3JpcHQ+CgoKICAgIAoKICAgIDxkaXYgY2xhc3M9ImNhcmQtd3JhcHBlciBwcm9kdWN0LW1pbmlhdHVyZSBwcm9kdWN0LWNhcmQtd3JhcHBlciB1bmRlcmxpbmUtbGlua3MtaG92ZXIgZ3RtLWNhcmQtcHJvZHVjdCBndG0tY2FyZC1wcm9kdWN0LXAxMTAtYzgteDItbW9wLWR1c3Rlci10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYiIgZ3RtLWNhcmQtZGF0YT0nCiAgICAgICAgewogICAgICAgICAgICAiaXRlbV9uYW1lIjogIlAxMTAgQzggWDIgTU9QJkRVU1RFUiIsCiAgICAgICAgICAgICJpdGVtX2lkIjogIkVTUF9QUk9EVUNUX28wMDF4MDJfMTAzMjczIiwKICAgICAgICAgICAgInByaWNlIjogIjEzLDAxIOKCrCIsCiAgICAgICAgICAgICJpdGVtX2JyYW5kIjogIlNUQU5IT01FIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkxIjogIiIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MiI6ICJob21lLWNhcmUiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTMiOiBudWxsLAogICAgICAgICAgICAiaXRlbV92YXJpYW50IjogIkRlZmF1bHQgVGl0bGUiCiAgICAgICAgfQogICAgJz4KICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICBjbGFzcz0iCiAgICAgICAgY2FyZCBjYXJkLS1zdGFuZGFyZAogICAgICAgICBjYXJkLS1tZWRpYQogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAiCiAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICA+CiAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iY2FyZF9faW5uZXIgY29sb3ItYmFja2dyb3VuZC0xIGdyYWRpZW50IHJhdGlvIgogICAgICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgICAgICA+PGRpdiBjbGFzcz0iY2FyZF9fbWVkaWEiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZWRpYSBtZWRpYS0tdHJhbnNwYXJlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3Jjc2V0PSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMTEwX2I5YTJmMzdmLThmNGUtNGY0NC1iNjA1LTNmMGMwMmMyOTVlNS5qcGc/dj0xNzQ2NjI4MzAzJndpZHRoPTE2NSAxNjV3LC8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX1AxMTBfYjlhMmYzN2YtOGY0ZS00ZjQ0LWI2MDUtM2YwYzAyYzI5NWU1LmpwZz92PTE3NDY2MjgzMDMmd2lkdGg9MzYwIDM2MHcsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDExMF9iOWEyZjM3Zi04ZjRlLTRmNDQtYjYwNS0zZjBjMDJjMjk1ZTUuanBnP3Y9MTc0NjYyODMwMyZ3aWR0aD01MzMgNTMzdywvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMTEwX2I5YTJmMzdmLThmNGUtNGY0NC1iNjA1LTNmMGMwMmMyOTVlNS5qcGc/dj0xNzQ2NjI4MzAzJndpZHRoPTcyMCA3MjB3LC8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX1AxMTBfYjlhMmYzN2YtOGY0ZS00ZjQ0LWI2MDUtM2YwYzAyYzI5NWU1LmpwZz92PTE3NDY2MjgzMDMmd2lkdGg9OTQwIDk0MHcsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDExMF9iOWEyZjM3Zi04ZjRlLTRmNDQtYjYwNS0zZjBjMDJjMjk1ZTUuanBnP3Y9MTc0NjYyODMwMyZ3aWR0aD0xMDY2IDEwNjZ3LC8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX1AxMTBfYjlhMmYzN2YtOGY0ZS00ZjQ0LWI2MDUtM2YwYzAyYzI5NWU1LmpwZz92PTE3NDY2MjgzMDMgMTIwMHcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz0iLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDExMF9iOWEyZjM3Zi04ZjRlLTRmNDQtYjYwNS0zZjBjMDJjMjk1ZTUuanBnP3Y9MTc0NjYyODMwMyZ3aWR0aD01MzMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPSIobWluLXdpZHRoOiAxNjAwcHgpIDM2N3B4LCAobWluLXdpZHRoOiA5OTBweCkgY2FsYygoMTAwdncgLSAxMzBweCkgLyA0KSwgKG1pbi13aWR0aDogNzUwcHgpIGNhbGMoKDEwMHZ3IC0gMTIwcHgpIC8gMyksIGNhbGMoKDEwMHZ3IC0gMzVweCkgLyAyKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PSJQMTEwIEM4IFgyIE1PUCZhbXA7RFVTVEVSIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibW90aW9uLXJlZHVjZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTUxNzcyMjU1MzU4NjIiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTUxNzcyMjU1MzU4NjIiIGRhdGEtdmFyaWFudC1pZD0iNTU2MDY5ODQwNDkwMTQiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLmVzL3Byb2R1Y3RzL3AxMTAtYzgteDItbW9wLWR1c3RlciI+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2JhZGdlIHRvcCBsZWZ0Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+PGRpdiBjbGFzcz0iY2FyZF9fdHlwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFOSE9NRQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTE3NzIyNTUzNTg2MiIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvcDExMC1jOC14Mi1tb3AtZHVzdGVyIiBpZD0iQ2FyZExpbmstdGVtcGxhdGUtLTE2MjE5NTA4NjM3ODcxX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTUxNzcyMjU1MzU4NjIiIGNsYXNzPSJmdWxsLXVuc3R5bGVkLWxpbmsgZnVsbC11bnN0eWxlZC1saW5rLXByb2R1Y3QiIGFyaWEtbGFiZWxsZWRieT0iQ2FyZExpbmstdGVtcGxhdGUtLTE2MjE5NTA4NjM3ODcxX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTUxNzcyMjU1MzU4NjIgQmFkZ2UtdGVtcGxhdGUtLTE2MjE5NTA4NjM3ODcxX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTUxNzcyMjU1MzU4NjIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVlZ28gZGUgMiBwb3RlbmNpYWRvcmVzIGRlIGVmaWNhY2lhIHBhcmEgZnJlZ29uYSB5IHBsdW1lcm8gCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3A+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBQMTEwIEM4IFgyIE1PUCZhbXA7RFVTVEVSCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbmZvcm1hdGlvbiI+PHNwYW4gY2xhc3M9ImNhcHRpb24tbGFyZ2UgbGlnaHQiPjwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uLWZvcm0tcmF0aW5nLXByaWNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhdGluZy1wcmljZSI+CjxkaXYKICBjbGFzcz0iCiAgICBwcmljZSAiCj4KICA8ZGl2IGNsYXNzPSJwcmljZV9fY29udGFpbmVyIj48ZGl2IGNsYXNzPSJwcmljZV9fcmVndWxhciI+PHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlY2lvIGhhYml0dWFsPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAgMTMsMDEg4oKsCiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPGRpdiBjbGFzcz0icHJpY2VfX3NhbGUiPgogICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlY2lvIGRlIG9mZXJ0YTwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tc2FsZSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICAxMywwMSDigqwKICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZWNpbyBoYWJpdHVhbDwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICAgIDxzIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAgICAKICAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICA8L3M+CiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPHNtYWxsIGNsYXNzPSJ1bml0LXByaWNlIGNhcHRpb24gaGlkZGVuIj4KICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+UHJlY2lvIHVuaXRhcmlvPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPi88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+Jm5ic3A7cG9yJm5ic3A7PC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9zcGFuPgogICAgPC9zbWFsbD4KICA8L2Rpdj48L2Rpdj4KCjwvZGl2PjxhIGhyZWY9Ii9wcm9kdWN0cy9wMTEwLWM4LXgyLW1vcC1kdXN0ZXIiIGNsYXNzPSJxdWljay1hZGQgcXVpY2stYWRkLWV5ZSBxdWljay1hZGQtbW9iaWxlIGV4dHJhLWxhcmdlLXVwLWhpZGUiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgY2xhc3M9Imljb24gaWNvbi1leWUiIHdpZHRoPSIyNC43NjQiIGhlaWdodD0iMTMuMzE4Ij4KICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9Ii43IiBjbGlwLXBhdGg9InVybCgjcHJlZml4X19hKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxKSI+CiAgPHBhdGggZD0iTTEwLjQ4LjQ0aC4wMzdhMTEuOTgzIDExLjk4MyAwIDAgMSA1LjY0MSAxLjQyNEExMi4yNTMgMTIuMjUzIDAgMCAxIDE4LjUgMy40OTdhMTIuNDU3IDEyLjQ1NyAwIDAgMSAxLjczNCAxLjg5NCAxMi40MjIgMTIuNDIyIDAgMCAxLTEuNzI4IDIuMTA2IDEyLjA3NyAxMi4wNzcgMCAwIDEtMi4zNzkgMS44MSAxMS42NzYgMTEuNjc2IDAgMCAxLTIuNzcxIDEuMTYxIDExLjYgMTEuNiAwIDAgMS0zLjA2My40MWgtLjAzOWExMS42MTMgMTEuNjEzIDAgMCAxLTIuOTc2LS40IDExLjY2MyAxMS42NjMgMCAwIDEtMi43LTEuMTA2IDEyLjA0NyAxMi4wNDcgMCAwIDEtMi4zMzUtMS43MTcgMTIuNCAxMi40IDAgMCAxLTEuNzEyLTIgMTIuNDY0IDEyLjQ2NCAwIDAgMSAxLjc1My0yIDEyLjI3MSAxMi4yNzEgMCAwIDEgMi4zODgtMS43MjMgMTEuOTgyIDExLjk4MiAwIDAgMSA1LjgtMS40OTNabTAtLjQ0QTEyLjU4NyAxMi41ODcgMCAwIDAgMCA1LjY1NWExMi4zIDEyLjMgMCAwIDAgMTAuMjUzIDUuNjYzaC4wNGExMi4zMjQgMTIuMzI0IDAgMCAwIDEwLjQ3MS01Ljk0MkExMi41NzUgMTIuNTc1IDAgMCAwIDEwLjUxOC0uMDAzaC0uMDQxIi8+CiAgPHBhdGggZD0iTTEwLjM4Mi43MzRhNC43NDEgNC43NDEgMCAwIDEgMi43LjgzOSA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LjYgNC45NSA0Ljk1IDAgMCAxIDEuMzE5IDIuNDkzIDUuMDggNS4wOCAwIDAgMSAwIDEuOTkxIDQuOTQ4IDQuOTQ4IDAgMCAxLTEuMzE5IDIuNDkzIDQuODg5IDQuODg5IDAgMCAxLS43MTUuNiA0LjggNC44IDAgMCAxLS44Mi40NTMgNC43NDkgNC43NDkgMCAwIDEtMy43NTMgMCA0LjggNC44IDAgMCAxLS44Mi0uNDUzIDQuOTE1IDQuOTE1IDAgMCAxLTEuMzA2LTEuMzMxIDQuOTQ5IDQuOTQ5IDAgMCAxLS43MjgtMS43NjMgNS4wOCA1LjA4IDAgMCAxIDAtMS45OTEgNC45NDQgNC45NDQgMCAwIDEgMS4zMTktMi40OTMgNC44ODkgNC44ODkgMCAwIDEgLjcxNS0uNiA0LjggNC44IDAgMCAxIC44Mi0uNDUzIDQuNzMgNC43MyAwIDAgMSAxLjg3Ny0uMzg2bTAtLjVhNS40MjkgNS40MjkgMCAxIDAgNS4zMyA1LjQyOSA1LjM4IDUuMzggMCAwIDAtNS4zMy01LjQyOSIvPgogIDxwYXRoIGQ9Ik0xMy4wODMgNS43NTlhMi42ODMgMi42ODMgMCAxIDEtMi42ODItMi43MzIgMi43MDcgMi43MDcgMCAwIDEgMi42ODIgMi43MzIiLz4KICA8L2c+Cjwvc3ZnPgogIDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudC1ob3ZlciI+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF8xNTE3NzIyNTUzNTg2MiIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSIxNTE3NzIyNTUzNTg2MiIgZGF0YS12YXJpYW50LWlkPSI1NTYwNjk4NDA0OTAxNCIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuZXMvcHJvZHVjdHMvcDExMC1jOC14Mi1tb3AtZHVzdGVyIj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2hlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEp1ZWdvIGRlIDIgcG90ZW5jaWFkb3JlcyBkZSBlZmljYWNpYSBwYXJhIGZyZWdvbmEgeSBwbHVtZXJvCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBQMTEwIEM4IFgyIE1PUCZhbXA7RFVTVEVSCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIGNhcmRfX3ZhcmlhbnQta2V5X3BvaW50cyI+PGxpPjxzcGFuPkF1bWVudGEgbGEgZWZpY2FjaWEgZGUgbG9zIGFjY2Vzb3Jpb3MgZG9tw6lzdGljb3M8L3NwYW4+PC9saT48bGk+PHNwYW4+UmV0cmFzYSBsYSByZWRlcG9zaWNpw7NuIGRlbCBwb2x2byA8L3NwYW4+PC9saT48bGk+PHNwYW4+MSBjb21wcmFkbyA9IDEgZ3JhdGlzICAhIDwvc3Bhbj48L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0icXVpY2stYWRkIG5vLWpzLWhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvcDExMC1jOC14Mi1tb3AtZHVzdGVyIiBjbGFzcz0icXVpY2stYWRkX19saW5rIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJxdWljay1hZGRfX3N1Ym1pdCBidXR0b24gYnV0dG9uLS1mdWxsLXdpZHRoIGJ1dHRvbi0tcHJpbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZFUiBMQSBPRkVSVEEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pg==
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC90LzYvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzAxMTkwMzczIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC90LzYvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTcwMTE5MDM3NCIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKCjxzY3JpcHQ+CiAgLy8gQ3JlYXRlIFByb2R1Y3QgTGlzdCBhcnJheQogIGlmICghYXhQcm9kdWN0TGlzdCkgewogICAgdmFyIGF4UHJvZHVjdExpc3QgPSBbXTsKICB9CgogIC8vIENyZWF0ZSBQcm9kdWN0IGNsaWNrIGFycmF5CiAgaWYgKCFheEl0ZW0pIHsKICAgIHZhciBheEl0ZW0gPSBbXTsKICB9CgogIGlmICghbGlzdE5hbWUpIHsKICAgIHZhciBsaXN0TmFtZSA9ICcnOwogIH0gZWxzZSB7CiAgICBsaXN0TmFtZSA9ICcnOwogIH0KCiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgIC8vIE9uY2xpY2sgZXZlbnQKICAgIHZhciBwcm9kdWN0Q2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3RtLWNhcmQtcHJvZHVjdC1wMTc1LWM4LWR1by1zcG9ydC1ob21tZS10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYicpOwogICAgcHJvZHVjdENhcmRzLmZvckVhY2goZnVuY3Rpb24gKGNhcmQpIHsKICAgICAgaWYgKGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKSAhPT0gbnVsbCkgewogICAgICAgIGxpc3ROYW1lID0gY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpLmdldEF0dHJpYnV0ZSgnZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpOwogICAgICB9CiAgICAgIGNhcmQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICB2YXIgcHJvZHVjdERhdGEgPSBKU09OLnBhcnNlKGNhcmQuZ2V0QXR0cmlidXRlKCdndG0tY2FyZC1kYXRhJykpOwogICAgICAgIC8vIE5lZWQgdG8gcHVzaCBsaXN0TmFtZQogICAgICAgIHByb2R1Y3REYXRhWydpdGVtX2xpc3RfbmFtZSddID0gbGlzdE5hbWU7CiAgICAgICAgLy8gUHVzaCBjbGlja2VkIHByb2R1Y3QKICAgICAgICBheEl0ZW0ucHVzaChwcm9kdWN0RGF0YSk7CiAgICAgICAgLy8gU2VuZCAiY2xpY2siIGV2ZW50CiAgICAgICAgZGF0YUxheWVyLnB1c2goewogICAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2NsaWNrJywKICAgICAgICAgIGF4SXRlbTogYXhJdGVtCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSk7CgogICAgLy8gUHVzaCBhbGwgcHJvZHVjdCBpbiBkYXRhTGF5ZXIKICAgIGF4UHJvZHVjdExpc3QucHVzaCh7CiAgICAgIGl0ZW1fbmFtZTogJ1AxNzUgQzggRFVPIFNQT1JUIEhPTU1FJywKICAgICAgaXRlbV9pZDogJ0VTUF9QUk9EVUNUX28wMDF4MDJfMTAzMzAzJywKICAgICAgcHJpY2U6ICcyOSwxNCDigqwnLAogICAgICBpdGVtX2JyYW5kOiAnS0lPVElTJywKICAgICAgaXRlbV9jYXRlZ29yeTE6ICdLSU9USVMnLAogICAgICBpdGVtX2NhdGVnb3J5MjogJ0N1aWRhZG8geSBwZXJmdW1lJywKICAgICAgaXRlbV9jYXRlZ29yeTM6ICcnLAogICAgICBpdGVtX3ZhcmlhbnQ6ICdEZWZhdWx0IFRpdGxlJywKICAgICAgaXRlbV9saXN0X25hbWU6IGxpc3ROYW1lCiAgICB9KTsKCiAgICAvLyBTZW5kICJmaW5pc2hlZCIgZXZlbnQKICAgIGlmIChheFByb2R1Y3RMaXN0Lmxlbmd0aCA9PT0gd2luZG93LnRoZW1lLml0ZW1zX2NvdW50KSB7CiAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfbGlzdF9jb21wbGV0ZScsCiAgICAgICAgYXhQcm9kdWN0TGlzdDogYXhQcm9kdWN0TGlzdCwKICAgICAgfSk7CiAgICB9CiAgfSk7CgogIGZ1bmN0aW9uIGNsaWNrUHJvZHVjdChwcm9kdWN0RGF0YSkge30KPC9zY3JpcHQ+CgoKPHNjcmlwdCBkZWZlcj4KICBmdW5jdGlvbiBzd3ltQ2FsbGJhY2tGbihzd2F0KSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzd3ltOmNvbGxlY3Rpb25zLWxvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgc3dhdC5pbml0aWFsaXplQWN0aW9uQnV0dG9ucygnPDxDb2xsZWN0aW9ucyBHcmlkIFBBUkVOVCBTZWxlY3RvciA+PicpOwogICAgfSk7CiAgfQogIGlmICghd2luZG93LlN3eW1DYWxsYmFja3MpIHsKICAgIHdpbmRvdy5Td3ltQ2FsbGJhY2tzID0gW107CiAgfQogIHdpbmRvdy5Td3ltQ2FsbGJhY2tzLnB1c2goc3d5bUNhbGxiYWNrRm4pOwo8L3NjcmlwdD4KCgogICAgCgogICAgPGRpdiBjbGFzcz0iY2FyZC13cmFwcGVyIHByb2R1Y3QtbWluaWF0dXJlIHByb2R1Y3QtY2FyZC13cmFwcGVyIHVuZGVybGluZS1saW5rcy1ob3ZlciBndG0tY2FyZC1wcm9kdWN0IGd0bS1jYXJkLXByb2R1Y3QtcDE3NS1jOC1kdW8tc3BvcnQtaG9tbWUtdGVtcGxhdGUtLTE2MjE5NTA4NjM3ODcxX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2IiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICJQMTc1IEM4IERVTyBTUE9SVCBIT01NRSIsCiAgICAgICAgICAgICJpdGVtX2lkIjogIkVTUF9QUk9EVUNUX28wMDF4MDJfMTAzMzAzIiwKICAgICAgICAgICAgInByaWNlIjogIjI5LDE0IOKCrCIsCiAgICAgICAgICAgICJpdGVtX2JyYW5kIjogIktJT1RJUyIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MSI6ICIiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTIiOiAiYmVhdXR5LWFuZC1wZXJmdW1lcyIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MyI6IG51bGwsCiAgICAgICAgICAgICJpdGVtX3ZhcmlhbnQiOiAiRGVmYXVsdCBUaXRsZSIKICAgICAgICB9CiAgICAnPgogICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSIKICAgICAgICBjYXJkIGNhcmQtLXN0YW5kYXJkCiAgICAgICAgIGNhcmQtLW1lZGlhCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICIKICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgID4KICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjYXJkX19pbm5lciBjb2xvci1iYWNrZ3JvdW5kLTEgZ3JhZGllbnQgcmF0aW8iCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgICAgID48ZGl2IGNsYXNzPSJjYXJkX19tZWRpYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhIG1lZGlhLS10cmFuc3BhcmVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmNzZXQ9Ii8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX1AxNzVfZDY1ZTEwMWMtOThjMy00MTI1LWEzNzYtMTc1YTZhYWJiYzI5LmpwZz92PTE3NDY2MjgzMDkmd2lkdGg9MTY1IDE2NXcsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDE3NV9kNjVlMTAxYy05OGMzLTQxMjUtYTM3Ni0xNzVhNmFhYmJjMjkuanBnP3Y9MTc0NjYyODMwOSZ3aWR0aD0zNjAgMzYwdywvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMTc1X2Q2NWUxMDFjLTk4YzMtNDEyNS1hMzc2LTE3NWE2YWFiYmMyOS5qcGc/dj0xNzQ2NjI4MzA5JndpZHRoPTUzMyA1MzN3LC8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX1AxNzVfZDY1ZTEwMWMtOThjMy00MTI1LWEzNzYtMTc1YTZhYWJiYzI5LmpwZz92PTE3NDY2MjgzMDkmd2lkdGg9NzIwIDcyMHcsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDE3NV9kNjVlMTAxYy05OGMzLTQxMjUtYTM3Ni0xNzVhNmFhYmJjMjkuanBnP3Y9MTc0NjYyODMwOSZ3aWR0aD05NDAgOTQwdywvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMTc1X2Q2NWUxMDFjLTk4YzMtNDEyNS1hMzc2LTE3NWE2YWFiYmMyOS5qcGc/dj0xNzQ2NjI4MzA5JndpZHRoPTEwNjYgMTA2NncsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDE3NV9kNjVlMTAxYy05OGMzLTQxMjUtYTM3Ni0xNzVhNmFhYmJjMjkuanBnP3Y9MTc0NjYyODMwOSAxMjAwdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMTc1X2Q2NWUxMDFjLTk4YzMtNDEyNS1hMzc2LTE3NWE2YWFiYmMyOS5qcGc/dj0xNzQ2NjI4MzA5JndpZHRoPTUzMyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9IihtaW4td2lkdGg6IDE2MDBweCkgMzY3cHgsIChtaW4td2lkdGg6IDk5MHB4KSBjYWxjKCgxMDB2dyAtIDEzMHB4KSAvIDQpLCAobWluLXdpZHRoOiA3NTBweCkgY2FsYygoMTAwdncgLSAxMjBweCkgLyAzKSwgY2FsYygoMTAwdncgLSAzNXB4KSAvIDIpIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9IlAxNzUgQzggRFVPIFNQT1JUIEhPTU1FIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibW90aW9uLXJlZHVjZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTUxNzcyMjcwMTA0MjIiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTUxNzcyMjcwMTA0MjIiIGRhdGEtdmFyaWFudC1pZD0iNTU2MDY5OTIwMTE2MzgiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLmVzL3Byb2R1Y3RzL3AxNzUtYzgtZHVvLXNwb3J0LWhvbW1lIj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fYmFkZ2UgdG9wIGxlZnQiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj48ZGl2IGNsYXNzPSJjYXJkX190eXBlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtJT1RJUwogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTE3NzIyNzAxMDQyMiIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvcDE3NS1jOC1kdW8tc3BvcnQtaG9tbWUiIGlkPSJDYXJkTGluay10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTE3NzIyNzAxMDQyMiIgY2xhc3M9ImZ1bGwtdW5zdHlsZWQtbGluayBmdWxsLXVuc3R5bGVkLWxpbmstcHJvZHVjdCIgYXJpYS1sYWJlbGxlZGJ5PSJDYXJkTGluay10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTE3NzIyNzAxMDQyMiBCYWRnZS10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTE3NzIyNzAxMDQyMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcG9ydCBIb21tZSBkw7pvIGdlbCBkZSBkdWNoYSArIGFndWEgZGUgY29sb25pYSAKICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIFAxNzUgQzggRFVPIFNQT1JUIEhPTU1FCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbmZvcm1hdGlvbiI+PHNwYW4gY2xhc3M9ImNhcHRpb24tbGFyZ2UgbGlnaHQiPjwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uLWZvcm0tcmF0aW5nLXByaWNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhdGluZy1wcmljZSI+CjxkaXYKICBjbGFzcz0iCiAgICBwcmljZSAiCj4KICA8ZGl2IGNsYXNzPSJwcmljZV9fY29udGFpbmVyIj48ZGl2IGNsYXNzPSJwcmljZV9fcmVndWxhciI+PHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlY2lvIGhhYml0dWFsPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAgMjksMTQg4oKsCiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPGRpdiBjbGFzcz0icHJpY2VfX3NhbGUiPgogICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlY2lvIGRlIG9mZXJ0YTwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tc2FsZSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICAyOSwxNCDigqwKICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZWNpbyBoYWJpdHVhbDwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICAgIDxzIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAgICAKICAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICA8L3M+CiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPHNtYWxsIGNsYXNzPSJ1bml0LXByaWNlIGNhcHRpb24gaGlkZGVuIj4KICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+UHJlY2lvIHVuaXRhcmlvPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPi88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+Jm5ic3A7cG9yJm5ic3A7PC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9zcGFuPgogICAgPC9zbWFsbD4KICA8L2Rpdj48L2Rpdj4KCjwvZGl2PjxhIGhyZWY9Ii9wcm9kdWN0cy9wMTc1LWM4LWR1by1zcG9ydC1ob21tZSIgY2xhc3M9InF1aWNrLWFkZCBxdWljay1hZGQtZXllIHF1aWNrLWFkZC1tb2JpbGUgZXh0cmEtbGFyZ2UtdXAtaGlkZSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiBjbGFzcz0iaWNvbiBpY29uLWV5ZSIgd2lkdGg9IjI0Ljc2NCIgaGVpZ2h0PSIxMy4zMTgiPgogIDxnIGZpbGw9ImN1cnJlbnRDb2xvciIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iLjciIGNsaXAtcGF0aD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDEpIj4KICA8cGF0aCBkPSJNMTAuNDguNDRoLjAzN2ExMS45ODMgMTEuOTgzIDAgMCAxIDUuNjQxIDEuNDI0QTEyLjI1MyAxMi4yNTMgMCAwIDEgMTguNSAzLjQ5N2ExMi40NTcgMTIuNDU3IDAgMCAxIDEuNzM0IDEuODk0IDEyLjQyMiAxMi40MjIgMCAwIDEtMS43MjggMi4xMDYgMTIuMDc3IDEyLjA3NyAwIDAgMS0yLjM3OSAxLjgxIDExLjY3NiAxMS42NzYgMCAwIDEtMi43NzEgMS4xNjEgMTEuNiAxMS42IDAgMCAxLTMuMDYzLjQxaC0uMDM5YTExLjYxMyAxMS42MTMgMCAwIDEtMi45NzYtLjQgMTEuNjYzIDExLjY2MyAwIDAgMS0yLjctMS4xMDYgMTIuMDQ3IDEyLjA0NyAwIDAgMS0yLjMzNS0xLjcxNyAxMi40IDEyLjQgMCAwIDEtMS43MTItMiAxMi40NjQgMTIuNDY0IDAgMCAxIDEuNzUzLTIgMTIuMjcxIDEyLjI3MSAwIDAgMSAyLjM4OC0xLjcyMyAxMS45ODIgMTEuOTgyIDAgMCAxIDUuOC0xLjQ5M1ptMC0uNDRBMTIuNTg3IDEyLjU4NyAwIDAgMCAwIDUuNjU1YTEyLjMgMTIuMyAwIDAgMCAxMC4yNTMgNS42NjNoLjA0YTEyLjMyNCAxMi4zMjQgMCAwIDAgMTAuNDcxLTUuOTQyQTEyLjU3NSAxMi41NzUgMCAwIDAgMTAuNTE4LS4wMDNoLS4wNDEiLz4KICA8cGF0aCBkPSJNMTAuMzgyLjczNGE0Ljc0MSA0Ljc0MSAwIDAgMSAyLjcuODM5IDQuODg5IDQuODg5IDAgMCAxIC43MTUuNiA0Ljk1IDQuOTUgMCAwIDEgMS4zMTkgMi40OTMgNS4wOCA1LjA4IDAgMCAxIDAgMS45OTEgNC45NDggNC45NDggMCAwIDEtMS4zMTkgMi40OTMgNC44ODkgNC44ODkgMCAwIDEtLjcxNS42IDQuOCA0LjggMCAwIDEtLjgyLjQ1MyA0Ljc0OSA0Ljc0OSAwIDAgMS0zLjc1MyAwIDQuOCA0LjggMCAwIDEtLjgyLS40NTMgNC45MTUgNC45MTUgMCAwIDEtMS4zMDYtMS4zMzEgNC45NDkgNC45NDkgMCAwIDEtLjcyOC0xLjc2MyA1LjA4IDUuMDggMCAwIDEgMC0xLjk5MSA0Ljk0NCA0Ljk0NCAwIDAgMSAxLjMxOS0yLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LS42IDQuOCA0LjggMCAwIDEgLjgyLS40NTMgNC43MyA0LjczIDAgMCAxIDEuODc3LS4zODZtMC0uNWE1LjQyOSA1LjQyOSAwIDEgMCA1LjMzIDUuNDI5IDUuMzggNS4zOCAwIDAgMC01LjMzLTUuNDI5Ii8+CiAgPHBhdGggZD0iTTEzLjA4MyA1Ljc1OWEyLjY4MyAyLjY4MyAwIDEgMS0yLjY4Mi0yLjczMiAyLjcwNyAyLjcwNyAwIDAgMSAyLjY4MiAyLjczMiIvPgogIDwvZz4KPC9zdmc+CiAgPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50LWhvdmVyIj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0XzE1MTc3MjI3MDEwNDIyIiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9IjE1MTc3MjI3MDEwNDIyIiBkYXRhLXZhcmlhbnQtaWQ9IjU1NjA2OTkyMDExNjM4IiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5lcy9wcm9kdWN0cy9wMTc1LWM4LWR1by1zcG9ydC1ob21tZSI+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcG9ydCBIb21tZSBkw7pvIGdlbCBkZSBkdWNoYSArIGFndWEgZGUgY29sb25pYQogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgUDE3NSBDOCBEVU8gU1BPUlQgSE9NTUUKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgY2FyZF9fdmFyaWFudC1rZXlfcG9pbnRzIj48bGk+PHNwYW4+QWd1YSBkZSBjb2xvbmlhIGZyZXNjYSB5IG1hcmluYSA8L3NwYW4+PC9saT48bGk+PHNwYW4+R2VsIGRlIGR1Y2hhIHBlcmZ1bWFkbyBwYXJhIGN1ZXJwbyB5IGNhYmVsbG8gPC9zcGFuPjwvbGk+PGxpPjxzcGFuPjQwJSBkZSBkZXNjdWVudG8geSBlc3R1Y2hlIGRlIHJlZ2FsbyBjb24gbGEgY29tcHJhIGRlbCBkw7pvIDwvc3Bhbj48L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0icXVpY2stYWRkIG5vLWpzLWhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvcDE3NS1jOC1kdW8tc3BvcnQtaG9tbWUiIGNsYXNzPSJxdWljay1hZGRfX2xpbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InF1aWNrLWFkZF9fc3VibWl0IGJ1dHRvbiBidXR0b24tLWZ1bGwtd2lkdGggYnV0dG9uLS1wcmltYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkVSIExBIE9GRVJUQQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC90LzYvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzAxMTkwMzczIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC90LzYvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTcwMTE5MDM3NCIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKCjxzY3JpcHQ+CiAgLy8gQ3JlYXRlIFByb2R1Y3QgTGlzdCBhcnJheQogIGlmICghYXhQcm9kdWN0TGlzdCkgewogICAgdmFyIGF4UHJvZHVjdExpc3QgPSBbXTsKICB9CgogIC8vIENyZWF0ZSBQcm9kdWN0IGNsaWNrIGFycmF5CiAgaWYgKCFheEl0ZW0pIHsKICAgIHZhciBheEl0ZW0gPSBbXTsKICB9CgogIGlmICghbGlzdE5hbWUpIHsKICAgIHZhciBsaXN0TmFtZSA9ICcnOwogIH0gZWxzZSB7CiAgICBsaXN0TmFtZSA9ICcnOwogIH0KCiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgIC8vIE9uY2xpY2sgZXZlbnQKICAgIHZhciBwcm9kdWN0Q2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3RtLWNhcmQtcHJvZHVjdC1wMTc4LWM4LWR1by1wb3VyLWx1aS10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYicpOwogICAgcHJvZHVjdENhcmRzLmZvckVhY2goZnVuY3Rpb24gKGNhcmQpIHsKICAgICAgaWYgKGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKSAhPT0gbnVsbCkgewogICAgICAgIGxpc3ROYW1lID0gY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpLmdldEF0dHJpYnV0ZSgnZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpOwogICAgICB9CiAgICAgIGNhcmQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICB2YXIgcHJvZHVjdERhdGEgPSBKU09OLnBhcnNlKGNhcmQuZ2V0QXR0cmlidXRlKCdndG0tY2FyZC1kYXRhJykpOwogICAgICAgIC8vIE5lZWQgdG8gcHVzaCBsaXN0TmFtZQogICAgICAgIHByb2R1Y3REYXRhWydpdGVtX2xpc3RfbmFtZSddID0gbGlzdE5hbWU7CiAgICAgICAgLy8gUHVzaCBjbGlja2VkIHByb2R1Y3QKICAgICAgICBheEl0ZW0ucHVzaChwcm9kdWN0RGF0YSk7CiAgICAgICAgLy8gU2VuZCAiY2xpY2siIGV2ZW50CiAgICAgICAgZGF0YUxheWVyLnB1c2goewogICAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2NsaWNrJywKICAgICAgICAgIGF4SXRlbTogYXhJdGVtCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSk7CgogICAgLy8gUHVzaCBhbGwgcHJvZHVjdCBpbiBkYXRhTGF5ZXIKICAgIGF4UHJvZHVjdExpc3QucHVzaCh7CiAgICAgIGl0ZW1fbmFtZTogJ1AxNzggQzggRFVPIFBPVVIgTFVJJywKICAgICAgaXRlbV9pZDogJ0VTUF9QUk9EVUNUX28wMDF4MDJfMTAzMzA2JywKICAgICAgcHJpY2U6ICczNSwxOSDigqwnLAogICAgICBpdGVtX2JyYW5kOiAnS0lPVElTJywKICAgICAgaXRlbV9jYXRlZ29yeTE6ICdLSU9USVMnLAogICAgICBpdGVtX2NhdGVnb3J5MjogJ0N1aWRhZG8geSBwZXJmdW1lJywKICAgICAgaXRlbV9jYXRlZ29yeTM6ICcnLAogICAgICBpdGVtX3ZhcmlhbnQ6ICdEZWZhdWx0IFRpdGxlJywKICAgICAgaXRlbV9saXN0X25hbWU6IGxpc3ROYW1lCiAgICB9KTsKCiAgICAvLyBTZW5kICJmaW5pc2hlZCIgZXZlbnQKICAgIGlmIChheFByb2R1Y3RMaXN0Lmxlbmd0aCA9PT0gd2luZG93LnRoZW1lLml0ZW1zX2NvdW50KSB7CiAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfbGlzdF9jb21wbGV0ZScsCiAgICAgICAgYXhQcm9kdWN0TGlzdDogYXhQcm9kdWN0TGlzdCwKICAgICAgfSk7CiAgICB9CiAgfSk7CgogIGZ1bmN0aW9uIGNsaWNrUHJvZHVjdChwcm9kdWN0RGF0YSkge30KPC9zY3JpcHQ+CgoKPHNjcmlwdCBkZWZlcj4KICBmdW5jdGlvbiBzd3ltQ2FsbGJhY2tGbihzd2F0KSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzd3ltOmNvbGxlY3Rpb25zLWxvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgc3dhdC5pbml0aWFsaXplQWN0aW9uQnV0dG9ucygnPDxDb2xsZWN0aW9ucyBHcmlkIFBBUkVOVCBTZWxlY3RvciA+PicpOwogICAgfSk7CiAgfQogIGlmICghd2luZG93LlN3eW1DYWxsYmFja3MpIHsKICAgIHdpbmRvdy5Td3ltQ2FsbGJhY2tzID0gW107CiAgfQogIHdpbmRvdy5Td3ltQ2FsbGJhY2tzLnB1c2goc3d5bUNhbGxiYWNrRm4pOwo8L3NjcmlwdD4KCgogICAgCgogICAgPGRpdiBjbGFzcz0iY2FyZC13cmFwcGVyIHByb2R1Y3QtbWluaWF0dXJlIHByb2R1Y3QtY2FyZC13cmFwcGVyIHVuZGVybGluZS1saW5rcy1ob3ZlciBndG0tY2FyZC1wcm9kdWN0IGd0bS1jYXJkLXByb2R1Y3QtcDE3OC1jOC1kdW8tcG91ci1sdWktdGVtcGxhdGUtLTE2MjE5NTA4NjM3ODcxX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2IiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICJQMTc4IEM4IERVTyBQT1VSIExVSSIsCiAgICAgICAgICAgICJpdGVtX2lkIjogIkVTUF9QUk9EVUNUX28wMDF4MDJfMTAzMzA2IiwKICAgICAgICAgICAgInByaWNlIjogIjM1LDE5IOKCrCIsCiAgICAgICAgICAgICJpdGVtX2JyYW5kIjogIktJT1RJUyIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MSI6ICIiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTIiOiAiYmVhdXR5LWFuZC1wZXJmdW1lcyIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MyI6IG51bGwsCiAgICAgICAgICAgICJpdGVtX3ZhcmlhbnQiOiAiRGVmYXVsdCBUaXRsZSIKICAgICAgICB9CiAgICAnPgogICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSIKICAgICAgICBjYXJkIGNhcmQtLXN0YW5kYXJkCiAgICAgICAgIGNhcmQtLW1lZGlhCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICIKICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgID4KICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjYXJkX19pbm5lciBjb2xvci1iYWNrZ3JvdW5kLTEgZ3JhZGllbnQgcmF0aW8iCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgICAgID48ZGl2IGNsYXNzPSJjYXJkX19tZWRpYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhIG1lZGlhLS10cmFuc3BhcmVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmNzZXQ9Ii8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX1AxNzhfMTBjZDQxN2EtNjFiNC00ODgxLThjN2UtNmQwYzY1ZmM5MmNmLmpwZz92PTE3NDY2MjgzMTAmd2lkdGg9MTY1IDE2NXcsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDE3OF8xMGNkNDE3YS02MWI0LTQ4ODEtOGM3ZS02ZDBjNjVmYzkyY2YuanBnP3Y9MTc0NjYyODMxMCZ3aWR0aD0zNjAgMzYwdywvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMTc4XzEwY2Q0MTdhLTYxYjQtNDg4MS04YzdlLTZkMGM2NWZjOTJjZi5qcGc/dj0xNzQ2NjI4MzEwJndpZHRoPTUzMyA1MzN3LC8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX1AxNzhfMTBjZDQxN2EtNjFiNC00ODgxLThjN2UtNmQwYzY1ZmM5MmNmLmpwZz92PTE3NDY2MjgzMTAmd2lkdGg9NzIwIDcyMHcsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDE3OF8xMGNkNDE3YS02MWI0LTQ4ODEtOGM3ZS02ZDBjNjVmYzkyY2YuanBnP3Y9MTc0NjYyODMxMCZ3aWR0aD05NDAgOTQwdywvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMTc4XzEwY2Q0MTdhLTYxYjQtNDg4MS04YzdlLTZkMGM2NWZjOTJjZi5qcGc/dj0xNzQ2NjI4MzEwJndpZHRoPTEwNjYgMTA2NncsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDE3OF8xMGNkNDE3YS02MWI0LTQ4ODEtOGM3ZS02ZDBjNjVmYzkyY2YuanBnP3Y9MTc0NjYyODMxMCAxMjAwdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMTc4XzEwY2Q0MTdhLTYxYjQtNDg4MS04YzdlLTZkMGM2NWZjOTJjZi5qcGc/dj0xNzQ2NjI4MzEwJndpZHRoPTUzMyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9IihtaW4td2lkdGg6IDE2MDBweCkgMzY3cHgsIChtaW4td2lkdGg6IDk5MHB4KSBjYWxjKCgxMDB2dyAtIDEzMHB4KSAvIDQpLCAobWluLXdpZHRoOiA3NTBweCkgY2FsYygoMTAwdncgLSAxMjBweCkgLyAzKSwgY2FsYygoMTAwdncgLSAzNXB4KSAvIDIpIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9IlAxNzggQzggRFVPIFBPVVIgTFVJIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibW90aW9uLXJlZHVjZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTUxNzcyMjcxNzQyNjIiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTUxNzcyMjcxNzQyNjIiIGRhdGEtdmFyaWFudC1pZD0iNTU2MDY5OTI0NzAzOTAiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLmVzL3Byb2R1Y3RzL3AxNzgtYzgtZHVvLXBvdXItbHVpIj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fYmFkZ2UgdG9wIGxlZnQiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj48ZGl2IGNsYXNzPSJjYXJkX190eXBlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtJT1RJUwogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTE3NzIyNzE3NDI2MiIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvcDE3OC1jOC1kdW8tcG91ci1sdWkiIGlkPSJDYXJkTGluay10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTE3NzIyNzE3NDI2MiIgY2xhc3M9ImZ1bGwtdW5zdHlsZWQtbGluayBmdWxsLXVuc3R5bGVkLWxpbmstcHJvZHVjdCIgYXJpYS1sYWJlbGxlZGJ5PSJDYXJkTGluay10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTE3NzIyNzE3NDI2MiBCYWRnZS10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTE3NzIyNzE3NDI2MiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEw7pvIEdlbCBkZSBEdWNoYSArIEFndWEgZGUgUGVyZnVtZSBQb3VyIEx1aSAKICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIFAxNzggQzggRFVPIFBPVVIgTFVJCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbmZvcm1hdGlvbiI+PHNwYW4gY2xhc3M9ImNhcHRpb24tbGFyZ2UgbGlnaHQiPjwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uLWZvcm0tcmF0aW5nLXByaWNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhdGluZy1wcmljZSI+CjxkaXYKICBjbGFzcz0iCiAgICBwcmljZSAiCj4KICA8ZGl2IGNsYXNzPSJwcmljZV9fY29udGFpbmVyIj48ZGl2IGNsYXNzPSJwcmljZV9fcmVndWxhciI+PHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlY2lvIGhhYml0dWFsPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAgMzUsMTkg4oKsCiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPGRpdiBjbGFzcz0icHJpY2VfX3NhbGUiPgogICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlY2lvIGRlIG9mZXJ0YTwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tc2FsZSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICAzNSwxOSDigqwKICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZWNpbyBoYWJpdHVhbDwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICAgIDxzIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAgICAKICAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICA8L3M+CiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPHNtYWxsIGNsYXNzPSJ1bml0LXByaWNlIGNhcHRpb24gaGlkZGVuIj4KICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+UHJlY2lvIHVuaXRhcmlvPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPi88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+Jm5ic3A7cG9yJm5ic3A7PC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9zcGFuPgogICAgPC9zbWFsbD4KICA8L2Rpdj48L2Rpdj4KCjwvZGl2PjxhIGhyZWY9Ii9wcm9kdWN0cy9wMTc4LWM4LWR1by1wb3VyLWx1aSIgY2xhc3M9InF1aWNrLWFkZCBxdWljay1hZGQtZXllIHF1aWNrLWFkZC1tb2JpbGUgZXh0cmEtbGFyZ2UtdXAtaGlkZSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiBjbGFzcz0iaWNvbiBpY29uLWV5ZSIgd2lkdGg9IjI0Ljc2NCIgaGVpZ2h0PSIxMy4zMTgiPgogIDxnIGZpbGw9ImN1cnJlbnRDb2xvciIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iLjciIGNsaXAtcGF0aD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDEpIj4KICA8cGF0aCBkPSJNMTAuNDguNDRoLjAzN2ExMS45ODMgMTEuOTgzIDAgMCAxIDUuNjQxIDEuNDI0QTEyLjI1MyAxMi4yNTMgMCAwIDEgMTguNSAzLjQ5N2ExMi40NTcgMTIuNDU3IDAgMCAxIDEuNzM0IDEuODk0IDEyLjQyMiAxMi40MjIgMCAwIDEtMS43MjggMi4xMDYgMTIuMDc3IDEyLjA3NyAwIDAgMS0yLjM3OSAxLjgxIDExLjY3NiAxMS42NzYgMCAwIDEtMi43NzEgMS4xNjEgMTEuNiAxMS42IDAgMCAxLTMuMDYzLjQxaC0uMDM5YTExLjYxMyAxMS42MTMgMCAwIDEtMi45NzYtLjQgMTEuNjYzIDExLjY2MyAwIDAgMS0yLjctMS4xMDYgMTIuMDQ3IDEyLjA0NyAwIDAgMS0yLjMzNS0xLjcxNyAxMi40IDEyLjQgMCAwIDEtMS43MTItMiAxMi40NjQgMTIuNDY0IDAgMCAxIDEuNzUzLTIgMTIuMjcxIDEyLjI3MSAwIDAgMSAyLjM4OC0xLjcyMyAxMS45ODIgMTEuOTgyIDAgMCAxIDUuOC0xLjQ5M1ptMC0uNDRBMTIuNTg3IDEyLjU4NyAwIDAgMCAwIDUuNjU1YTEyLjMgMTIuMyAwIDAgMCAxMC4yNTMgNS42NjNoLjA0YTEyLjMyNCAxMi4zMjQgMCAwIDAgMTAuNDcxLTUuOTQyQTEyLjU3NSAxMi41NzUgMCAwIDAgMTAuNTE4LS4wMDNoLS4wNDEiLz4KICA8cGF0aCBkPSJNMTAuMzgyLjczNGE0Ljc0MSA0Ljc0MSAwIDAgMSAyLjcuODM5IDQuODg5IDQuODg5IDAgMCAxIC43MTUuNiA0Ljk1IDQuOTUgMCAwIDEgMS4zMTkgMi40OTMgNS4wOCA1LjA4IDAgMCAxIDAgMS45OTEgNC45NDggNC45NDggMCAwIDEtMS4zMTkgMi40OTMgNC44ODkgNC44ODkgMCAwIDEtLjcxNS42IDQuOCA0LjggMCAwIDEtLjgyLjQ1MyA0Ljc0OSA0Ljc0OSAwIDAgMS0zLjc1MyAwIDQuOCA0LjggMCAwIDEtLjgyLS40NTMgNC45MTUgNC45MTUgMCAwIDEtMS4zMDYtMS4zMzEgNC45NDkgNC45NDkgMCAwIDEtLjcyOC0xLjc2MyA1LjA4IDUuMDggMCAwIDEgMC0xLjk5MSA0Ljk0NCA0Ljk0NCAwIDAgMSAxLjMxOS0yLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LS42IDQuOCA0LjggMCAwIDEgLjgyLS40NTMgNC43MyA0LjczIDAgMCAxIDEuODc3LS4zODZtMC0uNWE1LjQyOSA1LjQyOSAwIDEgMCA1LjMzIDUuNDI5IDUuMzggNS4zOCAwIDAgMC01LjMzLTUuNDI5Ii8+CiAgPHBhdGggZD0iTTEzLjA4MyA1Ljc1OWEyLjY4MyAyLjY4MyAwIDEgMS0yLjY4Mi0yLjczMiAyLjcwNyAyLjcwNyAwIDAgMSAyLjY4MiAyLjczMiIvPgogIDwvZz4KPC9zdmc+CiAgPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50LWhvdmVyIj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0XzE1MTc3MjI3MTc0MjYyIiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9IjE1MTc3MjI3MTc0MjYyIiBkYXRhLXZhcmlhbnQtaWQ9IjU1NjA2OTkyNDcwMzkwIiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5lcy9wcm9kdWN0cy9wMTc4LWM4LWR1by1wb3VyLWx1aSI+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEw7pvIEdlbCBkZSBEdWNoYSArIEFndWEgZGUgUGVyZnVtZSBQb3VyIEx1aQogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgUDE3OCBDOCBEVU8gUE9VUiBMVUkKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgY2FyZF9fdmFyaWFudC1rZXlfcG9pbnRzIj48bGk+PHNwYW4+QWd1YSBkZSBwZXJmdW1lIGFmcnV0YWRhIHkgYW1hZGVyYWRhPC9zcGFuPjwvbGk+PGxpPjxzcGFuPkdlbCBkZSBkdWNoYSBwZXJmdW1hZG8gcGFyYSBjdWVycG8geSBjYWJlbGxvIDwvc3Bhbj48L2xpPjxsaT48c3Bhbj40MCUgZGUgZGVzY3VlbnRvIHkgZXN0dWNoZSBkZSByZWdhbG8gY29uIGxhIGNvbXByYSBkZWwgZMO6byA8L3NwYW4+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9InF1aWNrLWFkZCBuby1qcy1oaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3Byb2R1Y3RzL3AxNzgtYzgtZHVvLXBvdXItbHVpIiBjbGFzcz0icXVpY2stYWRkX19saW5rIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJxdWljay1hZGRfX3N1Ym1pdCBidXR0b24gYnV0dG9uLS1mdWxsLXdpZHRoIGJ1dHRvbi0tcHJpbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZFUiBMQSBPRkVSVEEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pg==
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC90LzYvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzAxMTkwMzczIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC90LzYvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTcwMTE5MDM3NCIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKCjxzY3JpcHQ+CiAgLy8gQ3JlYXRlIFByb2R1Y3QgTGlzdCBhcnJheQogIGlmICghYXhQcm9kdWN0TGlzdCkgewogICAgdmFyIGF4UHJvZHVjdExpc3QgPSBbXTsKICB9CgogIC8vIENyZWF0ZSBQcm9kdWN0IGNsaWNrIGFycmF5CiAgaWYgKCFheEl0ZW0pIHsKICAgIHZhciBheEl0ZW0gPSBbXTsKICB9CgogIGlmICghbGlzdE5hbWUpIHsKICAgIHZhciBsaXN0TmFtZSA9ICcnOwogIH0gZWxzZSB7CiAgICBsaXN0TmFtZSA9ICcnOwogIH0KCiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgIC8vIE9uY2xpY2sgZXZlbnQKICAgIHZhciBwcm9kdWN0Q2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3RtLWNhcmQtcHJvZHVjdC1wMTkzLWM4LXgyLWFmdGVyLXN1bi10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYicpOwogICAgcHJvZHVjdENhcmRzLmZvckVhY2goZnVuY3Rpb24gKGNhcmQpIHsKICAgICAgaWYgKGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKSAhPT0gbnVsbCkgewogICAgICAgIGxpc3ROYW1lID0gY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpLmdldEF0dHJpYnV0ZSgnZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpOwogICAgICB9CiAgICAgIGNhcmQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICB2YXIgcHJvZHVjdERhdGEgPSBKU09OLnBhcnNlKGNhcmQuZ2V0QXR0cmlidXRlKCdndG0tY2FyZC1kYXRhJykpOwogICAgICAgIC8vIE5lZWQgdG8gcHVzaCBsaXN0TmFtZQogICAgICAgIHByb2R1Y3REYXRhWydpdGVtX2xpc3RfbmFtZSddID0gbGlzdE5hbWU7CiAgICAgICAgLy8gUHVzaCBjbGlja2VkIHByb2R1Y3QKICAgICAgICBheEl0ZW0ucHVzaChwcm9kdWN0RGF0YSk7CiAgICAgICAgLy8gU2VuZCAiY2xpY2siIGV2ZW50CiAgICAgICAgZGF0YUxheWVyLnB1c2goewogICAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2NsaWNrJywKICAgICAgICAgIGF4SXRlbTogYXhJdGVtCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSk7CgogICAgLy8gUHVzaCBhbGwgcHJvZHVjdCBpbiBkYXRhTGF5ZXIKICAgIGF4UHJvZHVjdExpc3QucHVzaCh7CiAgICAgIGl0ZW1fbmFtZTogJ1AxOTMgQzggWDIgQUZURVIgU1VOJywKICAgICAgaXRlbV9pZDogJ0VTUF9QUk9EVUNUX28wMDF4MDJfMTAzMzI1JywKICAgICAgcHJpY2U6ICc5LDk4IOKCrCcsCiAgICAgIGl0ZW1fYnJhbmQ6ICdTVEFOSE9NRScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkxOiAnU1RBTkhPTUUnLAogICAgICBpdGVtX2NhdGVnb3J5MjogJ0Jlc3QgaGlnaWVuZSBjb3Jwb3JhbCcsCiAgICAgIGl0ZW1fY2F0ZWdvcnkzOiAnJywKICAgICAgaXRlbV92YXJpYW50OiAnRGVmYXVsdCBUaXRsZScsCiAgICAgIGl0ZW1fbGlzdF9uYW1lOiBsaXN0TmFtZQogICAgfSk7CgogICAgLy8gU2VuZCAiZmluaXNoZWQiIGV2ZW50CiAgICBpZiAoYXhQcm9kdWN0TGlzdC5sZW5ndGggPT09IHdpbmRvdy50aGVtZS5pdGVtc19jb3VudCkgewogICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2xpc3RfY29tcGxldGUnLAogICAgICAgIGF4UHJvZHVjdExpc3Q6IGF4UHJvZHVjdExpc3QsCiAgICAgIH0pOwogICAgfQogIH0pOwoKICBmdW5jdGlvbiBjbGlja1Byb2R1Y3QocHJvZHVjdERhdGEpIHt9Cjwvc2NyaXB0PgoKCjxzY3JpcHQgZGVmZXI+CiAgZnVuY3Rpb24gc3d5bUNhbGxiYWNrRm4oc3dhdCkgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc3d5bTpjb2xsZWN0aW9ucy1sb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgIHN3YXQuaW5pdGlhbGl6ZUFjdGlvbkJ1dHRvbnMoJzw8Q29sbGVjdGlvbnMgR3JpZCBQQVJFTlQgU2VsZWN0b3IgPj4nKTsKICAgIH0pOwogIH0KICBpZiAoIXdpbmRvdy5Td3ltQ2FsbGJhY2tzKSB7CiAgICB3aW5kb3cuU3d5bUNhbGxiYWNrcyA9IFtdOwogIH0KICB3aW5kb3cuU3d5bUNhbGxiYWNrcy5wdXNoKHN3eW1DYWxsYmFja0ZuKTsKPC9zY3JpcHQ+CgoKICAgIAoKICAgIDxkaXYgY2xhc3M9ImNhcmQtd3JhcHBlciBwcm9kdWN0LW1pbmlhdHVyZSBwcm9kdWN0LWNhcmQtd3JhcHBlciB1bmRlcmxpbmUtbGlua3MtaG92ZXIgZ3RtLWNhcmQtcHJvZHVjdCBndG0tY2FyZC1wcm9kdWN0LXAxOTMtYzgteDItYWZ0ZXItc3VuLXRlbXBsYXRlLS0xNjIxOTUwODYzNzg3MV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiIiBndG0tY2FyZC1kYXRhPScKICAgICAgICB7CiAgICAgICAgICAgICJpdGVtX25hbWUiOiAiUDE5MyBDOCBYMiBBRlRFUiBTVU4iLAogICAgICAgICAgICAiaXRlbV9pZCI6ICJFU1BfUFJPRFVDVF9vMDAxeDAyXzEwMzMyNSIsCiAgICAgICAgICAgICJwcmljZSI6ICI5LDk4IOKCrCIsCiAgICAgICAgICAgICJpdGVtX2JyYW5kIjogIlNUQU5IT01FIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkxIjogIiIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MiI6ICJiZXN0LWh5Z2llbmUtYW5kLWNhcmUiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTMiOiBudWxsLAogICAgICAgICAgICAiaXRlbV92YXJpYW50IjogIkRlZmF1bHQgVGl0bGUiCiAgICAgICAgfQogICAgJz4KICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICBjbGFzcz0iCiAgICAgICAgY2FyZCBjYXJkLS1zdGFuZGFyZAogICAgICAgICBjYXJkLS1tZWRpYQogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAiCiAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICA+CiAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iY2FyZF9faW5uZXIgY29sb3ItYmFja2dyb3VuZC0xIGdyYWRpZW50IHJhdGlvIgogICAgICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgICAgICA+PGRpdiBjbGFzcz0iY2FyZF9fbWVkaWEiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZWRpYSBtZWRpYS0tdHJhbnNwYXJlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3Jjc2V0PSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMTkzXzVmOWNkODBhLTdhOTAtNDU5Yy04NjJiLTJmNGFlZDI4YjMwNS5qcGc/dj0xNzQ2NjI4MzEwJndpZHRoPTE2NSAxNjV3LC8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX1AxOTNfNWY5Y2Q4MGEtN2E5MC00NTljLTg2MmItMmY0YWVkMjhiMzA1LmpwZz92PTE3NDY2MjgzMTAmd2lkdGg9MzYwIDM2MHcsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDE5M181ZjljZDgwYS03YTkwLTQ1OWMtODYyYi0yZjRhZWQyOGIzMDUuanBnP3Y9MTc0NjYyODMxMCZ3aWR0aD01MzMgNTMzdywvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19QMTkzXzVmOWNkODBhLTdhOTAtNDU5Yy04NjJiLTJmNGFlZDI4YjMwNS5qcGc/dj0xNzQ2NjI4MzEwJndpZHRoPTcyMCA3MjB3LC8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX1AxOTNfNWY5Y2Q4MGEtN2E5MC00NTljLTg2MmItMmY0YWVkMjhiMzA1LmpwZz92PTE3NDY2MjgzMTAmd2lkdGg9OTQwIDk0MHcsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDE5M181ZjljZDgwYS03YTkwLTQ1OWMtODYyYi0yZjRhZWQyOGIzMDUuanBnP3Y9MTc0NjYyODMxMCZ3aWR0aD0xMDY2IDEwNjZ3LC8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX1AxOTNfNWY5Y2Q4MGEtN2E5MC00NTljLTg2MmItMmY0YWVkMjhiMzA1LmpwZz92PTE3NDY2MjgzMTAgMTIwMHcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz0iLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfUDE5M181ZjljZDgwYS03YTkwLTQ1OWMtODYyYi0yZjRhZWQyOGIzMDUuanBnP3Y9MTc0NjYyODMxMCZ3aWR0aD01MzMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPSIobWluLXdpZHRoOiAxNjAwcHgpIDM2N3B4LCAobWluLXdpZHRoOiA5OTBweCkgY2FsYygoMTAwdncgLSAxMzBweCkgLyA0KSwgKG1pbi13aWR0aDogNzUwcHgpIGNhbGMoKDEwMHZ3IC0gMTIwcHgpIC8gMyksIGNhbGMoKDEwMHZ3IC0gMzVweCkgLyAyKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PSJQMTkzIEM4IFgyIEFGVEVSIFNVTiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im1vdGlvbi1yZWR1Y2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9ImxhenkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjEyMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0XzE1MTc3MjI3ODYyMzkwIiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9IjE1MTc3MjI3ODYyMzkwIiBkYXRhLXZhcmlhbnQtaWQ9IjU1NjA2OTk3MjIxNzUwIiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5lcy9wcm9kdWN0cy9wMTkzLWM4LXgyLWFmdGVyLXN1biI+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2JhZGdlIHRvcCBsZWZ0Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+PGRpdiBjbGFzcz0iY2FyZF9fdHlwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFOSE9NRQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTE3NzIyNzg2MjM5MCIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvcDE5My1jOC14Mi1hZnRlci1zdW4iIGlkPSJDYXJkTGluay10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTE3NzIyNzg2MjM5MCIgY2xhc3M9ImZ1bGwtdW5zdHlsZWQtbGluayBmdWxsLXVuc3R5bGVkLWxpbmstcHJvZHVjdCIgYXJpYS1sYWJlbGxlZGJ5PSJDYXJkTGluay10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTE3NzIyNzg2MjM5MCBCYWRnZS10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTE3NzIyNzg2MjM5MCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb3RlIGRlIDIgZ2VsZXMgZmx1aWRvcyBwYXJhIGRlc3B1w6lzIGRlbCBzb2wgCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3A+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBQMTkzIEM4IFgyIEFGVEVSIFNVTgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW5mb3JtYXRpb24iPjxzcGFuIGNsYXNzPSJjYXB0aW9uLWxhcmdlIGxpZ2h0Ij48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbi1mb3JtLXJhdGluZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRpbmctcHJpY2UiPgo8ZGl2CiAgY2xhc3M9IgogICAgcHJpY2UgIgo+CiAgPGRpdiBjbGFzcz0icHJpY2VfX2NvbnRhaW5lciI+PGRpdiBjbGFzcz0icHJpY2VfX3JlZ3VsYXIiPjxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZWNpbyBoYWJpdHVhbDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgIDksOTgg4oKsCiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPGRpdiBjbGFzcz0icHJpY2VfX3NhbGUiPgogICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlY2lvIGRlIG9mZXJ0YTwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tc2FsZSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICA5LDk4IOKCrAogICAgICA8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlY2lvIGhhYml0dWFsPC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgICAgPHMgY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgIDwvcz4KICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8c21hbGwgY2xhc3M9InVuaXQtcHJpY2UgY2FwdGlvbiBoaWRkZW4iPgogICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5QcmVjaW8gdW5pdGFyaW88L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIDxzcGFuPjwvc3Bhbj4KICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+Lzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4mbmJzcDtwb3ImbmJzcDs8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L3NwYW4+CiAgICA8L3NtYWxsPgogIDwvZGl2PjwvZGl2PgoKPC9kaXY+PGEgaHJlZj0iL3Byb2R1Y3RzL3AxOTMtYzgteDItYWZ0ZXItc3VuIiBjbGFzcz0icXVpY2stYWRkIHF1aWNrLWFkZC1leWUgcXVpY2stYWRkLW1vYmlsZSBleHRyYS1sYXJnZS11cC1oaWRlIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSJpY29uIGljb24tZXllIiB3aWR0aD0iMjQuNzY0IiBoZWlnaHQ9IjEzLjMxOCI+CiAgPGcgZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIuNyIgY2xpcC1wYXRoPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMSkiPgogIDxwYXRoIGQ9Ik0xMC40OC40NGguMDM3YTExLjk4MyAxMS45ODMgMCAwIDEgNS42NDEgMS40MjRBMTIuMjUzIDEyLjI1MyAwIDAgMSAxOC41IDMuNDk3YTEyLjQ1NyAxMi40NTcgMCAwIDEgMS43MzQgMS44OTQgMTIuNDIyIDEyLjQyMiAwIDAgMS0xLjcyOCAyLjEwNiAxMi4wNzcgMTIuMDc3IDAgMCAxLTIuMzc5IDEuODEgMTEuNjc2IDExLjY3NiAwIDAgMS0yLjc3MSAxLjE2MSAxMS42IDExLjYgMCAwIDEtMy4wNjMuNDFoLS4wMzlhMTEuNjEzIDExLjYxMyAwIDAgMS0yLjk3Ni0uNCAxMS42NjMgMTEuNjYzIDAgMCAxLTIuNy0xLjEwNiAxMi4wNDcgMTIuMDQ3IDAgMCAxLTIuMzM1LTEuNzE3IDEyLjQgMTIuNCAwIDAgMS0xLjcxMi0yIDEyLjQ2NCAxMi40NjQgMCAwIDEgMS43NTMtMiAxMi4yNzEgMTIuMjcxIDAgMCAxIDIuMzg4LTEuNzIzIDExLjk4MiAxMS45ODIgMCAwIDEgNS44LTEuNDkzWm0wLS40NEExMi41ODcgMTIuNTg3IDAgMCAwIDAgNS42NTVhMTIuMyAxMi4zIDAgMCAwIDEwLjI1MyA1LjY2M2guMDRhMTIuMzI0IDEyLjMyNCAwIDAgMCAxMC40NzEtNS45NDJBMTIuNTc1IDEyLjU3NSAwIDAgMCAxMC41MTgtLjAwM2gtLjA0MSIvPgogIDxwYXRoIGQ9Ik0xMC4zODIuNzM0YTQuNzQxIDQuNzQxIDAgMCAxIDIuNy44MzkgNC44ODkgNC44ODkgMCAwIDEgLjcxNS42IDQuOTUgNC45NSAwIDAgMSAxLjMxOSAyLjQ5MyA1LjA4IDUuMDggMCAwIDEgMCAxLjk5MSA0Ljk0OCA0Ljk0OCAwIDAgMS0xLjMxOSAyLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMS0uNzE1LjYgNC44IDQuOCAwIDAgMS0uODIuNDUzIDQuNzQ5IDQuNzQ5IDAgMCAxLTMuNzUzIDAgNC44IDQuOCAwIDAgMS0uODItLjQ1MyA0LjkxNSA0LjkxNSAwIDAgMS0xLjMwNi0xLjMzMSA0Ljk0OSA0Ljk0OSAwIDAgMS0uNzI4LTEuNzYzIDUuMDggNS4wOCAwIDAgMSAwLTEuOTkxIDQuOTQ0IDQuOTQ0IDAgMCAxIDEuMzE5LTIuNDkzIDQuODg5IDQuODg5IDAgMCAxIC43MTUtLjYgNC44IDQuOCAwIDAgMSAuODItLjQ1MyA0LjczIDQuNzMgMCAwIDEgMS44NzctLjM4Nm0wLS41YTUuNDI5IDUuNDI5IDAgMSAwIDUuMzMgNS40MjkgNS4zOCA1LjM4IDAgMCAwLTUuMzMtNS40MjkiLz4KICA8cGF0aCBkPSJNMTMuMDgzIDUuNzU5YTIuNjgzIDIuNjgzIDAgMSAxLTIuNjgyLTIuNzMyIDIuNzA3IDIuNzA3IDAgMCAxIDIuNjgyIDIuNzMyIi8+CiAgPC9nPgo8L3N2Zz4KICA8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQtaG92ZXIiPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTUxNzcyMjc4NjIzOTAiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTUxNzcyMjc4NjIzOTAiIGRhdGEtdmFyaWFudC1pZD0iNTU2MDY5OTcyMjE3NTAiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLmVzL3Byb2R1Y3RzL3AxOTMtYzgteDItYWZ0ZXItc3VuIj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2hlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvdGUgZGUgMiBnZWxlcyBmbHVpZG9zIHBhcmEgZGVzcHXDqXMgZGVsIHNvbAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgUDE5MyBDOCBYMiBBRlRFUiBTVU4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgY2FyZF9fdmFyaWFudC1rZXlfcG9pbnRzIj48bGk+PHNwYW4+R2VsIGZsdWlkbyBoaWRyYXRhbnRlIHkgY2FsbWFudGUgcGFyYSBkZXNwdcOpcyBkZWwgc29sIDwvc3Bhbj48L2xpPjxsaT48c3Bhbj5QYXJhIHRvZGEgbGEgZmFtaWxpYSBhIHBhcnRpciBkZSAzIGHDsW9zIHkgdGVzdGFkbyBlbiBwaWVsZXMgc2Vuc2libGVzIDwvc3Bhbj48L2xpPjxsaT48c3Bhbj4xIGNvbXByYWRvID0gMSBncmF0aXMgICEgPC9zcGFuPjwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJxdWljay1hZGQgbm8tanMtaGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy9wMTkzLWM4LXgyLWFmdGVyLXN1biIgY2xhc3M9InF1aWNrLWFkZF9fbGluayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icXVpY2stYWRkX19zdWJtaXQgYnV0dG9uIGJ1dHRvbi0tZnVsbC13aWR0aCBidXR0b24tLXByaW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWRVIgTEEgT0ZFUlRBCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4=
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC90LzYvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzAxMTkwMzczIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC90LzYvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTcwMTE5MDM3NCIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKCjxzY3JpcHQ+CiAgLy8gQ3JlYXRlIFByb2R1Y3QgTGlzdCBhcnJheQogIGlmICghYXhQcm9kdWN0TGlzdCkgewogICAgdmFyIGF4UHJvZHVjdExpc3QgPSBbXTsKICB9CgogIC8vIENyZWF0ZSBQcm9kdWN0IGNsaWNrIGFycmF5CiAgaWYgKCFheEl0ZW0pIHsKICAgIHZhciBheEl0ZW0gPSBbXTsKICB9CgogIGlmICghbGlzdE5hbWUpIHsKICAgIHZhciBsaXN0TmFtZSA9ICcnOwogIH0gZWxzZSB7CiAgICBsaXN0TmFtZSA9ICcnOwogIH0KCiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgIC8vIE9uY2xpY2sgZXZlbnQKICAgIHZhciBwcm9kdWN0Q2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3RtLWNhcmQtcHJvZHVjdC1mMjctYzgtaW52aXNpYmxlLWxvb3NlLXAtcGluY2VhdS10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYicpOwogICAgcHJvZHVjdENhcmRzLmZvckVhY2goZnVuY3Rpb24gKGNhcmQpIHsKICAgICAgaWYgKGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKSAhPT0gbnVsbCkgewogICAgICAgIGxpc3ROYW1lID0gY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpLmdldEF0dHJpYnV0ZSgnZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpOwogICAgICB9CiAgICAgIGNhcmQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICB2YXIgcHJvZHVjdERhdGEgPSBKU09OLnBhcnNlKGNhcmQuZ2V0QXR0cmlidXRlKCdndG0tY2FyZC1kYXRhJykpOwogICAgICAgIC8vIE5lZWQgdG8gcHVzaCBsaXN0TmFtZQogICAgICAgIHByb2R1Y3REYXRhWydpdGVtX2xpc3RfbmFtZSddID0gbGlzdE5hbWU7CiAgICAgICAgLy8gUHVzaCBjbGlja2VkIHByb2R1Y3QKICAgICAgICBheEl0ZW0ucHVzaChwcm9kdWN0RGF0YSk7CiAgICAgICAgLy8gU2VuZCAiY2xpY2siIGV2ZW50CiAgICAgICAgZGF0YUxheWVyLnB1c2goewogICAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2NsaWNrJywKICAgICAgICAgIGF4SXRlbTogYXhJdGVtCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSk7CgogICAgLy8gUHVzaCBhbGwgcHJvZHVjdCBpbiBkYXRhTGF5ZXIKICAgIGF4UHJvZHVjdExpc3QucHVzaCh7CiAgICAgIGl0ZW1fbmFtZTogJ0YyNyBDOCBJTlZJU0lCTEUgTE9PU0UgUCArIFBJTkNFQVUnLAogICAgICBpdGVtX2lkOiAnRVNQX1BST0RVQ1RfbzAwMXgwMl8xMDMzNDAnLAogICAgICBwcmljZTogJzE2LDM0IOKCrCcsCiAgICAgIGl0ZW1fYnJhbmQ6ICdGTE9STUFSJywKICAgICAgaXRlbV9jYXRlZ29yeTE6ICdGTE9STUFSJywKICAgICAgaXRlbV9jYXRlZ29yeTI6ICdNYXF1aWxsYWplJywKICAgICAgaXRlbV9jYXRlZ29yeTM6ICcnLAogICAgICBpdGVtX3ZhcmlhbnQ6ICdEZWZhdWx0IFRpdGxlJywKICAgICAgaXRlbV9saXN0X25hbWU6IGxpc3ROYW1lCiAgICB9KTsKCiAgICAvLyBTZW5kICJmaW5pc2hlZCIgZXZlbnQKICAgIGlmIChheFByb2R1Y3RMaXN0Lmxlbmd0aCA9PT0gd2luZG93LnRoZW1lLml0ZW1zX2NvdW50KSB7CiAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfbGlzdF9jb21wbGV0ZScsCiAgICAgICAgYXhQcm9kdWN0TGlzdDogYXhQcm9kdWN0TGlzdCwKICAgICAgfSk7CiAgICB9CiAgfSk7CgogIGZ1bmN0aW9uIGNsaWNrUHJvZHVjdChwcm9kdWN0RGF0YSkge30KPC9zY3JpcHQ+CgoKPHNjcmlwdCBkZWZlcj4KICBmdW5jdGlvbiBzd3ltQ2FsbGJhY2tGbihzd2F0KSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzd3ltOmNvbGxlY3Rpb25zLWxvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgc3dhdC5pbml0aWFsaXplQWN0aW9uQnV0dG9ucygnPDxDb2xsZWN0aW9ucyBHcmlkIFBBUkVOVCBTZWxlY3RvciA+PicpOwogICAgfSk7CiAgfQogIGlmICghd2luZG93LlN3eW1DYWxsYmFja3MpIHsKICAgIHdpbmRvdy5Td3ltQ2FsbGJhY2tzID0gW107CiAgfQogIHdpbmRvdy5Td3ltQ2FsbGJhY2tzLnB1c2goc3d5bUNhbGxiYWNrRm4pOwo8L3NjcmlwdD4KCgogICAgCgogICAgPGRpdiBjbGFzcz0iY2FyZC13cmFwcGVyIHByb2R1Y3QtbWluaWF0dXJlIHByb2R1Y3QtY2FyZC13cmFwcGVyIHVuZGVybGluZS1saW5rcy1ob3ZlciBndG0tY2FyZC1wcm9kdWN0IGd0bS1jYXJkLXByb2R1Y3QtZjI3LWM4LWludmlzaWJsZS1sb29zZS1wLXBpbmNlYXUtdGVtcGxhdGUtLTE2MjE5NTA4NjM3ODcxX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2IiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICJGMjcgQzggSU5WSVNJQkxFIExPT1NFIFAgKyBQSU5DRUFVIiwKICAgICAgICAgICAgIml0ZW1faWQiOiAiRVNQX1BST0RVQ1RfbzAwMXgwMl8xMDMzNDAiLAogICAgICAgICAgICAicHJpY2UiOiAiMTYsMzQg4oKsIiwKICAgICAgICAgICAgIml0ZW1fYnJhbmQiOiAiRkxPUk1BUiIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MSI6ICIiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTIiOiAibWFrZXVwIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkzIjogbnVsbCwKICAgICAgICAgICAgIml0ZW1fdmFyaWFudCI6ICJEZWZhdWx0IFRpdGxlIgogICAgICAgIH0KICAgICc+CiAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9IgogICAgICAgIGNhcmQgY2FyZC0tc3RhbmRhcmQKICAgICAgICAgY2FyZC0tbWVkaWEKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgIgogICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgPgogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImNhcmRfX2lubmVyIGNvbG9yLWJhY2tncm91bmQtMSBncmFkaWVudCByYXRpbyIKICAgICAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICAgICAgPjxkaXYgY2xhc3M9ImNhcmRfX21lZGlhIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEgbWVkaWEtLXRyYW5zcGFyZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyY3NldD0iLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfRjI3Xzc0ZjRiODg3LTlmYjItNDU4Zi05ZTZkLTMwNTUxMmU5MmVkOS5qcGc/dj0xNzQ2NjI4MzEwJndpZHRoPTE2NSAxNjV3LC8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX0YyN183NGY0Yjg4Ny05ZmIyLTQ1OGYtOWU2ZC0zMDU1MTJlOTJlZDkuanBnP3Y9MTc0NjYyODMxMCZ3aWR0aD0zNjAgMzYwdywvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19GMjdfNzRmNGI4ODctOWZiMi00NThmLTllNmQtMzA1NTEyZTkyZWQ5LmpwZz92PTE3NDY2MjgzMTAmd2lkdGg9NTMzIDUzM3csLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfRjI3Xzc0ZjRiODg3LTlmYjItNDU4Zi05ZTZkLTMwNTUxMmU5MmVkOS5qcGc/dj0xNzQ2NjI4MzEwJndpZHRoPTcyMCA3MjB3LC8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX0YyN183NGY0Yjg4Ny05ZmIyLTQ1OGYtOWU2ZC0zMDU1MTJlOTJlZDkuanBnP3Y9MTc0NjYyODMxMCZ3aWR0aD05NDAgOTQwdywvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19GMjdfNzRmNGI4ODctOWZiMi00NThmLTllNmQtMzA1NTEyZTkyZWQ5LmpwZz92PTE3NDY2MjgzMTAmd2lkdGg9MTA2NiAxMDY2dywvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19GMjdfNzRmNGI4ODctOWZiMi00NThmLTllNmQtMzA1NTEyZTkyZWQ5LmpwZz92PTE3NDY2MjgzMTAgMTIwMHcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz0iLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfRjI3Xzc0ZjRiODg3LTlmYjItNDU4Zi05ZTZkLTMwNTUxMmU5MmVkOS5qcGc/dj0xNzQ2NjI4MzEwJndpZHRoPTUzMyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9IihtaW4td2lkdGg6IDE2MDBweCkgMzY3cHgsIChtaW4td2lkdGg6IDk5MHB4KSBjYWxjKCgxMDB2dyAtIDEzMHB4KSAvIDQpLCAobWluLXdpZHRoOiA3NTBweCkgY2FsYygoMTAwdncgLSAxMjBweCkgLyAzKSwgY2FsYygoMTAwdncgLSAzNXB4KSAvIDIpIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9IkYyNyBDOCBJTlZJU0lCTEUgTE9PU0UgUCArIFBJTkNFQVUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJtb3Rpb24tcmVkdWNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9ImxhenkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF8xNTE3NzIzMDA5MDYxNCIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSIxNTE3NzIzMDA5MDYxNCIgZGF0YS12YXJpYW50LWlkPSI1NTYwNzAwNzkzNjg4NiIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuZXMvcHJvZHVjdHMvZjI3LWM4LWludmlzaWJsZS1sb29zZS1wLXBpbmNlYXUiPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19iYWRnZSB0b3AgbGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPjxkaXYgY2xhc3M9ImNhcmRfX3R5cGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgRkxPUk1BUgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTE3NzIzMDA5MDYxNCIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvZjI3LWM4LWludmlzaWJsZS1sb29zZS1wLXBpbmNlYXUiIGlkPSJDYXJkTGluay10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTE3NzIzMDA5MDYxNCIgY2xhc3M9ImZ1bGwtdW5zdHlsZWQtbGluayBmdWxsLXVuc3R5bGVkLWxpbmstcHJvZHVjdCIgYXJpYS1sYWJlbGxlZGJ5PSJDYXJkTGluay10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTE3NzIzMDA5MDYxNCBCYWRnZS10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTE3NzIzMDA5MDYxNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbCBkw7pvIHBvbHZvcyBpbnZpc2libGVzICsgYnJvY2hhIAogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgRjI3IEM4IElOVklTSUJMRSBMT09TRSBQICsgUElOQ0VBVQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW5mb3JtYXRpb24iPjxzcGFuIGNsYXNzPSJjYXB0aW9uLWxhcmdlIGxpZ2h0Ij48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbi1mb3JtLXJhdGluZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRpbmctcHJpY2UiPgo8ZGl2CiAgY2xhc3M9IgogICAgcHJpY2UgIgo+CiAgPGRpdiBjbGFzcz0icHJpY2VfX2NvbnRhaW5lciI+PGRpdiBjbGFzcz0icHJpY2VfX3JlZ3VsYXIiPjxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZWNpbyBoYWJpdHVhbDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgIDE2LDM0IOKCrAogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InByaWNlX19zYWxlIj4KICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZWNpbyBkZSBvZmVydGE8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXNhbGUgcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAgMTYsMzQg4oKsCiAgICAgIDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmVjaW8gaGFiaXR1YWw8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8cyBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgPC9zPgogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxzbWFsbCBjbGFzcz0idW5pdC1wcmljZSBjYXB0aW9uIGhpZGRlbiI+CiAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPlByZWNpbyB1bml0YXJpbzwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAgPHNwYW4+PC9zcGFuPgogICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4vPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPiZuYnNwO3BvciZuYnNwOzwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvc3Bhbj4KICAgIDwvc21hbGw+CiAgPC9kaXY+PC9kaXY+Cgo8L2Rpdj48YSBocmVmPSIvcHJvZHVjdHMvZjI3LWM4LWludmlzaWJsZS1sb29zZS1wLXBpbmNlYXUiIGNsYXNzPSJxdWljay1hZGQgcXVpY2stYWRkLWV5ZSBxdWljay1hZGQtbW9iaWxlIGV4dHJhLWxhcmdlLXVwLWhpZGUiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgY2xhc3M9Imljb24gaWNvbi1leWUiIHdpZHRoPSIyNC43NjQiIGhlaWdodD0iMTMuMzE4Ij4KICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9Ii43IiBjbGlwLXBhdGg9InVybCgjcHJlZml4X19hKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxKSI+CiAgPHBhdGggZD0iTTEwLjQ4LjQ0aC4wMzdhMTEuOTgzIDExLjk4MyAwIDAgMSA1LjY0MSAxLjQyNEExMi4yNTMgMTIuMjUzIDAgMCAxIDE4LjUgMy40OTdhMTIuNDU3IDEyLjQ1NyAwIDAgMSAxLjczNCAxLjg5NCAxMi40MjIgMTIuNDIyIDAgMCAxLTEuNzI4IDIuMTA2IDEyLjA3NyAxMi4wNzcgMCAwIDEtMi4zNzkgMS44MSAxMS42NzYgMTEuNjc2IDAgMCAxLTIuNzcxIDEuMTYxIDExLjYgMTEuNiAwIDAgMS0zLjA2My40MWgtLjAzOWExMS42MTMgMTEuNjEzIDAgMCAxLTIuOTc2LS40IDExLjY2MyAxMS42NjMgMCAwIDEtMi43LTEuMTA2IDEyLjA0NyAxMi4wNDcgMCAwIDEtMi4zMzUtMS43MTcgMTIuNCAxMi40IDAgMCAxLTEuNzEyLTIgMTIuNDY0IDEyLjQ2NCAwIDAgMSAxLjc1My0yIDEyLjI3MSAxMi4yNzEgMCAwIDEgMi4zODgtMS43MjMgMTEuOTgyIDExLjk4MiAwIDAgMSA1LjgtMS40OTNabTAtLjQ0QTEyLjU4NyAxMi41ODcgMCAwIDAgMCA1LjY1NWExMi4zIDEyLjMgMCAwIDAgMTAuMjUzIDUuNjYzaC4wNGExMi4zMjQgMTIuMzI0IDAgMCAwIDEwLjQ3MS01Ljk0MkExMi41NzUgMTIuNTc1IDAgMCAwIDEwLjUxOC0uMDAzaC0uMDQxIi8+CiAgPHBhdGggZD0iTTEwLjM4Mi43MzRhNC43NDEgNC43NDEgMCAwIDEgMi43LjgzOSA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LjYgNC45NSA0Ljk1IDAgMCAxIDEuMzE5IDIuNDkzIDUuMDggNS4wOCAwIDAgMSAwIDEuOTkxIDQuOTQ4IDQuOTQ4IDAgMCAxLTEuMzE5IDIuNDkzIDQuODg5IDQuODg5IDAgMCAxLS43MTUuNiA0LjggNC44IDAgMCAxLS44Mi40NTMgNC43NDkgNC43NDkgMCAwIDEtMy43NTMgMCA0LjggNC44IDAgMCAxLS44Mi0uNDUzIDQuOTE1IDQuOTE1IDAgMCAxLTEuMzA2LTEuMzMxIDQuOTQ5IDQuOTQ5IDAgMCAxLS43MjgtMS43NjMgNS4wOCA1LjA4IDAgMCAxIDAtMS45OTEgNC45NDQgNC45NDQgMCAwIDEgMS4zMTktMi40OTMgNC44ODkgNC44ODkgMCAwIDEgLjcxNS0uNiA0LjggNC44IDAgMCAxIC44Mi0uNDUzIDQuNzMgNC43MyAwIDAgMSAxLjg3Ny0uMzg2bTAtLjVhNS40MjkgNS40MjkgMCAxIDAgNS4zMyA1LjQyOSA1LjM4IDUuMzggMCAwIDAtNS4zMy01LjQyOSIvPgogIDxwYXRoIGQ9Ik0xMy4wODMgNS43NTlhMi42ODMgMi42ODMgMCAxIDEtMi42ODItMi43MzIgMi43MDcgMi43MDcgMCAwIDEgMi42ODIgMi43MzIiLz4KICA8L2c+Cjwvc3ZnPgogIDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudC1ob3ZlciI+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF8xNTE3NzIzMDA5MDYxNCIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSIxNTE3NzIzMDA5MDYxNCIgZGF0YS12YXJpYW50LWlkPSI1NTYwNzAwNzkzNjg4NiIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuZXMvcHJvZHVjdHMvZjI3LWM4LWludmlzaWJsZS1sb29zZS1wLXBpbmNlYXUiPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRWwgZMO6byBwb2x2b3MgaW52aXNpYmxlcyArIGJyb2NoYQogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgRjI3IEM4IElOVklTSUJMRSBMT09TRSBQICsgUElOQ0VBVQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pjx1bCBjbGFzcz0ibGlzdC11bnN0eWxlZCBjYXJkX192YXJpYW50LWtleV9wb2ludHMiPjxsaT48c3Bhbj5Qb2x2b3Mgc3VlbHRvcyB0cmFuc2zDumNpZG9zIHBhcmEgZmlqYXIgeSBtYXRpZmljYXIgZWwgbWFxdWlsbGFqZSA8L3NwYW4+PC9saT48bGk+PHNwYW4+QnJvY2hhIHJlZG9uZGVhZGEgcGFyYSBtYXlvciBwcmVjaXNpw7NuIDwvc3Bhbj48L2xpPjxsaT48c3Bhbj40MCUgZGUgZGVzY3VlbnRvIGVuIGxhIGNvbXByYSBkZWwgZMO6byA8L3NwYW4+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9InF1aWNrLWFkZCBuby1qcy1oaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3Byb2R1Y3RzL2YyNy1jOC1pbnZpc2libGUtbG9vc2UtcC1waW5jZWF1IiBjbGFzcz0icXVpY2stYWRkX19saW5rIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJxdWljay1hZGRfX3N1Ym1pdCBidXR0b24gYnV0dG9uLS1mdWxsLXdpZHRoIGJ1dHRvbi0tcHJpbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZFUiBMQSBPRkVSVEEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pg==
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC90LzYvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzAxMTkwMzczIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC90LzYvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTcwMTE5MDM3NCIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKCjxzY3JpcHQ+CiAgLy8gQ3JlYXRlIFByb2R1Y3QgTGlzdCBhcnJheQogIGlmICghYXhQcm9kdWN0TGlzdCkgewogICAgdmFyIGF4UHJvZHVjdExpc3QgPSBbXTsKICB9CgogIC8vIENyZWF0ZSBQcm9kdWN0IGNsaWNrIGFycmF5CiAgaWYgKCFheEl0ZW0pIHsKICAgIHZhciBheEl0ZW0gPSBbXTsKICB9CgogIGlmICghbGlzdE5hbWUpIHsKICAgIHZhciBsaXN0TmFtZSA9ICcnOwogIH0gZWxzZSB7CiAgICBsaXN0TmFtZSA9ICcnOwogIH0KCiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgIC8vIE9uY2xpY2sgZXZlbnQKICAgIHZhciBwcm9kdWN0Q2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3RtLWNhcmQtcHJvZHVjdC1mMjgtYzgtaWxsdW1pbmF0aW5nLWNhbW91ZmxhZ2UtdGVtcGxhdGUtLTE2MjE5NTA4NjM3ODcxX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICdGMjggQzggSUxMVU1JTkFUSU5HICsgQ0FNT1VGTEFHRScsCiAgICAgIGl0ZW1faWQ6ICdFU1BfUFJPRFVDVF9vMDAxeDAyXzEwMzM0MicsCiAgICAgIHByaWNlOiAnMTYsMDMg4oKsJywKICAgICAgaXRlbV9icmFuZDogJ0ZMT1JNQVInLAogICAgICBpdGVtX2NhdGVnb3J5MTogJ0ZMT1JNQVInLAogICAgICBpdGVtX2NhdGVnb3J5MjogJ01hcXVpbGxhamUnLAogICAgICBpdGVtX2NhdGVnb3J5MzogJycsCiAgICAgIGl0ZW1fdmFyaWFudDogJ0RlZmF1bHQgVGl0bGUnLAogICAgICBpdGVtX2xpc3RfbmFtZTogbGlzdE5hbWUKICAgIH0pOwoKICAgIC8vIFNlbmQgImZpbmlzaGVkIiBldmVudAogICAgaWYgKGF4UHJvZHVjdExpc3QubGVuZ3RoID09PSB3aW5kb3cudGhlbWUuaXRlbXNfY291bnQpIHsKICAgICAgZGF0YUxheWVyLnB1c2goewogICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9saXN0X2NvbXBsZXRlJywKICAgICAgICBheFByb2R1Y3RMaXN0OiBheFByb2R1Y3RMaXN0LAogICAgICB9KTsKICAgIH0KICB9KTsKCiAgZnVuY3Rpb24gY2xpY2tQcm9kdWN0KHByb2R1Y3REYXRhKSB7fQo8L3NjcmlwdD4KCgo8c2NyaXB0IGRlZmVyPgogIGZ1bmN0aW9uIHN3eW1DYWxsYmFja0ZuKHN3YXQpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3N3eW06Y29sbGVjdGlvbnMtbG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgICBzd2F0LmluaXRpYWxpemVBY3Rpb25CdXR0b25zKCc8PENvbGxlY3Rpb25zIEdyaWQgUEFSRU5UIFNlbGVjdG9yID4+Jyk7CiAgICB9KTsKICB9CiAgaWYgKCF3aW5kb3cuU3d5bUNhbGxiYWNrcykgewogICAgd2luZG93LlN3eW1DYWxsYmFja3MgPSBbXTsKICB9CiAgd2luZG93LlN3eW1DYWxsYmFja3MucHVzaChzd3ltQ2FsbGJhY2tGbik7Cjwvc2NyaXB0PgoKCiAgICAKCiAgICA8ZGl2IGNsYXNzPSJjYXJkLXdyYXBwZXIgcHJvZHVjdC1taW5pYXR1cmUgcHJvZHVjdC1jYXJkLXdyYXBwZXIgdW5kZXJsaW5lLWxpbmtzLWhvdmVyIGd0bS1jYXJkLXByb2R1Y3QgZ3RtLWNhcmQtcHJvZHVjdC1mMjgtYzgtaWxsdW1pbmF0aW5nLWNhbW91ZmxhZ2UtdGVtcGxhdGUtLTE2MjE5NTA4NjM3ODcxX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2IiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICJGMjggQzggSUxMVU1JTkFUSU5HICsgQ0FNT1VGTEFHRSIsCiAgICAgICAgICAgICJpdGVtX2lkIjogIkVTUF9QUk9EVUNUX28wMDF4MDJfMTAzMzQyIiwKICAgICAgICAgICAgInByaWNlIjogIjE2LDAzIOKCrCIsCiAgICAgICAgICAgICJpdGVtX2JyYW5kIjogIkZMT1JNQVIiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTEiOiAiIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkyIjogIm1ha2V1cCIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MyI6IG51bGwsCiAgICAgICAgICAgICJpdGVtX3ZhcmlhbnQiOiAiRGVmYXVsdCBUaXRsZSIKICAgICAgICB9CiAgICAnPgogICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSIKICAgICAgICBjYXJkIGNhcmQtLXN0YW5kYXJkCiAgICAgICAgIGNhcmQtLW1lZGlhCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICIKICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgID4KICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjYXJkX19pbm5lciBjb2xvci1iYWNrZ3JvdW5kLTEgZ3JhZGllbnQgcmF0aW8iCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgICAgID48ZGl2IGNsYXNzPSJjYXJkX19tZWRpYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhIG1lZGlhLS10cmFuc3BhcmVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmNzZXQ9Ii8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX0YyOF8zMzZmN2U3ZS01ZjY4LTRhOTEtODU0MS00ODg5NDZiOGNkNzYuanBnP3Y9MTc0NjYyODMxNiZ3aWR0aD0xNjUgMTY1dywvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19GMjhfMzM2ZjdlN2UtNWY2OC00YTkxLTg1NDEtNDg4OTQ2YjhjZDc2LmpwZz92PTE3NDY2MjgzMTYmd2lkdGg9MzYwIDM2MHcsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfRjI4XzMzNmY3ZTdlLTVmNjgtNGE5MS04NTQxLTQ4ODk0NmI4Y2Q3Ni5qcGc/dj0xNzQ2NjI4MzE2JndpZHRoPTUzMyA1MzN3LC8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX0YyOF8zMzZmN2U3ZS01ZjY4LTRhOTEtODU0MS00ODg5NDZiOGNkNzYuanBnP3Y9MTc0NjYyODMxNiZ3aWR0aD03MjAgNzIwdywvL3d3dy5zdGFuaG9tZS5lcy9jZG4vc2hvcC9maWxlcy9FU1BfcHJvZHVjdF9DU19GMjhfMzM2ZjdlN2UtNWY2OC00YTkxLTg1NDEtNDg4OTQ2YjhjZDc2LmpwZz92PTE3NDY2MjgzMTYmd2lkdGg9OTQwIDk0MHcsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfRjI4XzMzNmY3ZTdlLTVmNjgtNGE5MS04NTQxLTQ4ODk0NmI4Y2Q3Ni5qcGc/dj0xNzQ2NjI4MzE2JndpZHRoPTEwNjYgMTA2NncsLy93d3cuc3RhbmhvbWUuZXMvY2RuL3Nob3AvZmlsZXMvRVNQX3Byb2R1Y3RfQ1NfRjI4XzMzNmY3ZTdlLTVmNjgtNGE5MS04NTQxLTQ4ODk0NmI4Y2Q3Ni5qcGc/dj0xNzQ2NjI4MzE2IDEyMDB3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9Ii8vd3d3LnN0YW5ob21lLmVzL2Nkbi9zaG9wL2ZpbGVzL0VTUF9wcm9kdWN0X0NTX0YyOF8zMzZmN2U3ZS01ZjY4LTRhOTEtODU0MS00ODg5NDZiOGNkNzYuanBnP3Y9MTc0NjYyODMxNiZ3aWR0aD01MzMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPSIobWluLXdpZHRoOiAxNjAwcHgpIDM2N3B4LCAobWluLXdpZHRoOiA5OTBweCkgY2FsYygoMTAwdncgLSAxMzBweCkgLyA0KSwgKG1pbi13aWR0aDogNzUwcHgpIGNhbGMoKDEwMHZ3IC0gMTIwcHgpIC8gMyksIGNhbGMoKDEwMHZ3IC0gMzVweCkgLyAyKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PSJGMjggQzggSUxMVU1JTkFUSU5HICsgQ0FNT1VGTEFHRSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im1vdGlvbi1yZWR1Y2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9ImxhenkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjEyMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0XzE1MTc3MjMwNzEzMjA2IiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9IjE1MTc3MjMwNzEzMjA2IiBkYXRhLXZhcmlhbnQtaWQ9IjU1NjA3MDEwMjYzNDE0IiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5lcy9wcm9kdWN0cy9mMjgtYzgtaWxsdW1pbmF0aW5nLWNhbW91ZmxhZ2UiPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19iYWRnZSB0b3AgbGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPjxkaXYgY2xhc3M9ImNhcmRfX3R5cGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgRkxPUk1BUgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMTYyMTk1MDg2Mzc4NzFfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTE3NzIzMDcxMzIwNiIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvZjI4LWM4LWlsbHVtaW5hdGluZy1jYW1vdWZsYWdlIiBpZD0iQ2FyZExpbmstdGVtcGxhdGUtLTE2MjE5NTA4NjM3ODcxX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTUxNzcyMzA3MTMyMDYiIGNsYXNzPSJmdWxsLXVuc3R5bGVkLWxpbmsgZnVsbC11bnN0eWxlZC1saW5rLXByb2R1Y3QiIGFyaWEtbGFiZWxsZWRieT0iQ2FyZExpbmstdGVtcGxhdGUtLTE2MjE5NTA4NjM3ODcxX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTUxNzcyMzA3MTMyMDYgQmFkZ2UtdGVtcGxhdGUtLTE2MjE5NTA4NjM3ODcxX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTUxNzcyMzA3MTMyMDYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgRWwgZMO6byBiYXNlIGx1bWlub3NhICsgcGFsZXRhIGRlIGNhbXVmbGFqZSBkZSA0IGNvbG9yZXMgCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3A+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBGMjggQzggSUxMVU1JTkFUSU5HICsgQ0FNT1VGTEFHRQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW5mb3JtYXRpb24iPjxzcGFuIGNsYXNzPSJjYXB0aW9uLWxhcmdlIGxpZ2h0Ij48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbi1mb3JtLXJhdGluZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRpbmctcHJpY2UiPgo8ZGl2CiAgY2xhc3M9IgogICAgcHJpY2UgIgo+CiAgPGRpdiBjbGFzcz0icHJpY2VfX2NvbnRhaW5lciI+PGRpdiBjbGFzcz0icHJpY2VfX3JlZ3VsYXIiPjxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZWNpbyBoYWJpdHVhbDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgIDE2LDAzIOKCrAogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InByaWNlX19zYWxlIj4KICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZWNpbyBkZSBvZmVydGE8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXNhbGUgcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAgMTYsMDMg4oKsCiAgICAgIDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmVjaW8gaGFiaXR1YWw8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8cyBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgPC9zPgogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxzbWFsbCBjbGFzcz0idW5pdC1wcmljZSBjYXB0aW9uIGhpZGRlbiI+CiAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPlByZWNpbyB1bml0YXJpbzwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAgPHNwYW4+PC9zcGFuPgogICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4vPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPiZuYnNwO3BvciZuYnNwOzwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvc3Bhbj4KICAgIDwvc21hbGw+CiAgPC9kaXY+PC9kaXY+Cgo8L2Rpdj48YSBocmVmPSIvcHJvZHVjdHMvZjI4LWM4LWlsbHVtaW5hdGluZy1jYW1vdWZsYWdlIiBjbGFzcz0icXVpY2stYWRkIHF1aWNrLWFkZC1leWUgcXVpY2stYWRkLW1vYmlsZSBleHRyYS1sYXJnZS11cC1oaWRlIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSJpY29uIGljb24tZXllIiB3aWR0aD0iMjQuNzY0IiBoZWlnaHQ9IjEzLjMxOCI+CiAgPGcgZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIuNyIgY2xpcC1wYXRoPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMSkiPgogIDxwYXRoIGQ9Ik0xMC40OC40NGguMDM3YTExLjk4MyAxMS45ODMgMCAwIDEgNS42NDEgMS40MjRBMTIuMjUzIDEyLjI1MyAwIDAgMSAxOC41IDMuNDk3YTEyLjQ1NyAxMi40NTcgMCAwIDEgMS43MzQgMS44OTQgMTIuNDIyIDEyLjQyMiAwIDAgMS0xLjcyOCAyLjEwNiAxMi4wNzcgMTIuMDc3IDAgMCAxLTIuMzc5IDEuODEgMTEuNjc2IDExLjY3NiAwIDAgMS0yLjc3MSAxLjE2MSAxMS42IDExLjYgMCAwIDEtMy4wNjMuNDFoLS4wMzlhMTEuNjEzIDExLjYxMyAwIDAgMS0yLjk3Ni0uNCAxMS42NjMgMTEuNjYzIDAgMCAxLTIuNy0xLjEwNiAxMi4wNDcgMTIuMDQ3IDAgMCAxLTIuMzM1LTEuNzE3IDEyLjQgMTIuNCAwIDAgMS0xLjcxMi0yIDEyLjQ2NCAxMi40NjQgMCAwIDEgMS43NTMtMiAxMi4yNzEgMTIuMjcxIDAgMCAxIDIuMzg4LTEuNzIzIDExLjk4MiAxMS45ODIgMCAwIDEgNS44LTEuNDkzWm0wLS40NEExMi41ODcgMTIuNTg3IDAgMCAwIDAgNS42NTVhMTIuMyAxMi4zIDAgMCAwIDEwLjI1MyA1LjY2M2guMDRhMTIuMzI0IDEyLjMyNCAwIDAgMCAxMC40NzEtNS45NDJBMTIuNTc1IDEyLjU3NSAwIDAgMCAxMC41MTgtLjAwM2gtLjA0MSIvPgogIDxwYXRoIGQ9Ik0xMC4zODIuNzM0YTQuNzQxIDQuNzQxIDAgMCAxIDIuNy44MzkgNC44ODkgNC44ODkgMCAwIDEgLjcxNS42IDQuOTUgNC45NSAwIDAgMSAxLjMxOSAyLjQ5MyA1LjA4IDUuMDggMCAwIDEgMCAxLjk5MSA0Ljk0OCA0Ljk0OCAwIDAgMS0xLjMxOSAyLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMS0uNzE1LjYgNC44IDQuOCAwIDAgMS0uODIuNDUzIDQuNzQ5IDQuNzQ5IDAgMCAxLTMuNzUzIDAgNC44IDQuOCAwIDAgMS0uODItLjQ1MyA0LjkxNSA0LjkxNSAwIDAgMS0xLjMwNi0xLjMzMSA0Ljk0OSA0Ljk0OSAwIDAgMS0uNzI4LTEuNzYzIDUuMDggNS4wOCAwIDAgMSAwLTEuOTkxIDQuOTQ0IDQuOTQ0IDAgMCAxIDEuMzE5LTIuNDkzIDQuODg5IDQuODg5IDAgMCAxIC43MTUtLjYgNC44IDQuOCAwIDAgMSAuODItLjQ1MyA0LjczIDQuNzMgMCAwIDEgMS44NzctLjM4Nm0wLS41YTUuNDI5IDUuNDI5IDAgMSAwIDUuMzMgNS40MjkgNS4zOCA1LjM4IDAgMCAwLTUuMzMtNS40MjkiLz4KICA8cGF0aCBkPSJNMTMuMDgzIDUuNzU5YTIuNjgzIDIuNjgzIDAgMSAxLTIuNjgyLTIuNzMyIDIuNzA3IDIuNzA3IDAgMCAxIDIuNjgyIDIuNzMyIi8+CiAgPC9nPgo8L3N2Zz4KICA8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQtaG92ZXIiPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTUxNzcyMzA3MTMyMDYiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTUxNzcyMzA3MTMyMDYiIGRhdGEtdmFyaWFudC1pZD0iNTU2MDcwMTAyNjM0MTQiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLmVzL3Byb2R1Y3RzL2YyOC1jOC1pbGx1bWluYXRpbmctY2Ftb3VmbGFnZSI+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbCBkw7pvIGJhc2UgbHVtaW5vc2EgKyBwYWxldGEgZGUgY2FtdWZsYWplIGRlIDQgY29sb3JlcwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgRjI4IEM4IElMTFVNSU5BVElORyArIENBTU9VRkxBR0UKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgY2FyZF9fdmFyaWFudC1rZXlfcG9pbnRzIj48bGk+PHNwYW4+QmFzZSBpbHVtaW5hZG9yYSBwYXJhIHVuIG1hcXVpbGxhamUgbcOhcyBkdXJhZGVybyA8L3NwYW4+PC9saT48bGk+PHNwYW4+UGFsZXRhIGRlIDQgY29sb3JlcyBwYXJhIGNvcnJlZ2lyIHRvZG8gdGlwbyBkZSBpbXBlcmZlY2Npb25lcyA8L3NwYW4+PC9saT48bGk+PHNwYW4+MzUlIGRlIGRlc2N1ZW50byBlbiBsYSBjb21wcmEgZGVsIGTDum8gPC9zcGFuPjwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJxdWljay1hZGQgbm8tanMtaGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy9mMjgtYzgtaWxsdW1pbmF0aW5nLWNhbW91ZmxhZ2UiIGNsYXNzPSJxdWljay1hZGRfX2xpbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InF1aWNrLWFkZF9fc3VibWl0IGJ1dHRvbiBidXR0b24tLWZ1bGwtd2lkdGggYnV0dG9uLS1wcmltYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkVSIExBIE9GRVJUQQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+