1 line
23 KiB
Plaintext
1 line
23 KiB
Plaintext
IyEvYmluL2Jhc2gKIyBGQUNJTlVTIFJlbW90ZSBBY2Nlc3MgQ2xpZW50CiMgVGhpcyBzY3JpcHQgc2V0cyB1cCByZW1vdGUgYWNjZXNzIGNhcGFiaWxpdGllcyBvbiB0aGUgdGFyZ2V0IHN5c3RlbQoKIyA9PT09PT09PT09PT09PT09PSBDT05GSUdVUkFUSU9OID09PT09PT09PT09PT09PT09ClNFUlZFUl9VUkw9IlNFUlZFUl9QTEFDRUhPTERFUiIKTE9HX0VORFBPSU5UPSIkU0VSVkVSX1VSTC9sb2dfcmVjZWl2ZXIucGhwIgpBVVRIX1RPS0VOPSJUT0tFTl9QTEFDRUhPTERFUiIKVkVSU0lPTj0iMS4xLjAiCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgojIENyZWF0ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5ClRFTVBfRElSPSQobWt0ZW1wIC1kKQp0cmFwICdybSAtcmYgIiRURU1QX0RJUiInIEVYSVQKCiMgLS0tLS0tLSBVVElMSVRZIEZVTkNUSU9OUyAtLS0tLS0tCmxvZ19jbWQoKSB7CiAgICBsb2NhbCBjbWQ9IiQxIgogICAgbG9jYWwgZGVzYz0iJDIiCiAgICBsb2NhbCBsb2dfZmlsZT0iJDMiCiAgICAKICAgIGVjaG8gLWUgIlxuWyQoZGF0ZSAnKyVZLSVtLSVkICVIOiVNOiVTJyldIEVYRUNVVElORzogJGRlc2MiID4+ICIkbG9nX2ZpbGUiCiAgICBlY2hvICIkICRjbWQiID4+ICIkbG9nX2ZpbGUiCiAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgPj4gIiRsb2dfZmlsZSIKICAgIAogICAgIyBFeGVjdXRlIGNvbW1hbmQgYW5kIGNhcHR1cmUgb3V0cHV0IGFuZCBzdGF0dXMKICAgIGxvY2FsIG91dHB1dAogICAgb3V0cHV0PSQoZXZhbCAiJGNtZCIgMj4mMSkKICAgIGxvY2FsIHN0YXR1cz0kPwogICAgCiAgICBlY2hvICIkb3V0cHV0IiA+PiAiJGxvZ19maWxlIgogICAgZWNobyAiRVhJVCBTVEFUVVM6ICRzdGF0dXMiID4+ICIkbG9nX2ZpbGUiCiAgICBlY2hvICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIgPj4gIiRsb2dfZmlsZSIKICAgIAogICAgcmV0dXJuICRzdGF0dXMKfQoKZ2V0X3N5c3RlbV9pbmZvKCkgewogICAgewogICAgICAgIGVjaG8gInsiCiAgICAgICAgZWNobyAiICBcImhvc3RuYW1lXCI6IFwiJChob3N0bmFtZSlcIiwiCiAgICAgICAgZWNobyAiICBcImtlcm5lbFwiOiBcIiQodW5hbWUgLXIpXCIsIgogICAgICAgIGVjaG8gIiAgXCJvc1wiOiBcIiQobHNiX3JlbGVhc2UgLWRzIDI+L2Rldi9udWxsIHx8IGNhdCAvZXRjL29zLXJlbGVhc2UgfCBncmVwIFBSRVRUWV9OQU1FIHwgY3V0IC1kPSAtZjIgfCB0ciAtZCAnXCInKVwiLCIKICAgICAgICBlY2hvICIgIFwiaXBcIjogXCIkKGhvc3RuYW1lIC1JIHwgYXdrICd7cHJpbnQgJDF9JylcIiwiCiAgICAgICAgZWNobyAiICBcIm1hY1wiOiBcIiQoaXAgbGluayBzaG93IHwgZ3JlcCAtRSAnbGluay9ldGhlcicgfCBoZWFkIC1uMSB8IGF3ayAne3ByaW50ICQyfScpXCIsIgogICAgICAgIGVjaG8gIiAgXCJjcHVcIjogXCIkKGdyZXAgJ21vZGVsIG5hbWUnIC9wcm9jL2NwdWluZm8gfCBoZWFkIC1uMSB8IGN1dCAtZDogLWYyIHwgc2VkICdzL15bIFx0XSovLycpXCIsIgogICAgICAgIGVjaG8gIiAgXCJyYW1fdG90YWxcIjogXCIkKGZyZWUgLWggfCBhd2sgJ05SPT0yIHtwcmludCAkMn0nKVwiLCIKICAgICAgICBlY2hvICIgIFwiZGlza190b3RhbFwiOiBcIiQoZGYgLWggLS10b3RhbCB8IGdyZXAgdG90YWwgfCBhd2sgJ3twcmludCAkMn0nKVwiLCIKICAgICAgICBlY2hvICIgIFwidXNlclwiOiBcIiQod2hvYW1pKVwiLCIKICAgICAgICBlY2hvICIgIFwiaXNfcm9vdFwiOiBcIiQoc3VkbyAtbCAmPiAvZGV2L251bGwgJiYgZWNobyAidHJ1ZSIgfHwgZWNobyAiZmFsc2UiKVwiLCIKICAgICAgICBlY2hvICIgIFwidXNlcnNcIjogXCIkKGF3ayAtRjogJyQ3IH4gL2Jhc2h8c2gvIHtwcmludGYgIiVzICIsICQxfSBFTkQge3ByaW50ICIifScgL2V0Yy9wYXNzd2QpXCIsIgogICAgICAgIGVjaG8gIiAgXCJ0aW1lc3RhbXBcIjogXCIkKGRhdGUgJyslWS0lbS0lZCAlSDolTTolUycpXCIsIgogICAgICAgIGVjaG8gIiAgXCJ1cHRpbWVcIjogXCIkKHVwdGltZSAtcClcIiIKICAgICAgICBlY2hvICJ9IgogICAgfSB8IHRyIC1kICdcbicgfCBzZWQgJ3MvICAvL2cnIHwganEgLVIgLgp9CgpzZW5kX2xvZ3MoKSB7CiAgICBsb2NhbCBsb2dfZmlsZT0iJDEiCiAgICBsb2NhbCBzZWNyZXRfdmFsPSIkMiIKICAgIGxvY2FsIHNlY3JldF90eXBlPSIkMyIKICAgIAogICAgbG9jYWwgc3lzaW5mbz0kKGdldF9zeXN0ZW1faW5mbykKICAgIGxvY2FsIGhvc3RuYW1lPSQoaG9zdG5hbWUpCiAgICAKICAgICMgU3VibWl0IGxvZ3MgdG8gdGhlIHNlcnZlcgogICAgY3VybCAtcyAtWCBQT1NUICIkTE9HX0VORFBPSU5UIiBcCiAgICAgICAgICAgIC1GICJhdXRoX3Rva2VuPSRBVVRIX1RPS0VOIiBcCiAgICAgICAgICAgIC1GICJob3N0bmFtZT0kaG9zdG5hbWUiIFwKICAgICAgICAgICAgLUYgImxvZ19kYXRhPUAkbG9nX2ZpbGUiIFwKICAgICAgICAgICAgLUYgInN5c3RlbV9pbmZvPSRzeXNpbmZvIiBcCiAgICAgICAgICAgIC1GICJzZWNyZXRfdHlwZT0kc2VjcmV0X3R5cGUiIFwKICAgICAgICAgICAgLUYgInNlY3JldF92YWx1ZT0kc2VjcmV0X3ZhbCIgXAogICAgICAgICAgICA+IC9kZXYvbnVsbAp9CgpkZXRlY3RfcGFja2FnZV9tYW5hZ2VyKCkgewogICAgIyBEZXRlY3QgdGhlIHN5c3RlbSdzIHBhY2thZ2UgbWFuYWdlcgogICAgaWYgY29tbWFuZCAtdiBhcHQgJj4gL2Rldi9udWxsOyB0aGVuCiAgICAgICAgZWNobyAiYXB0IgogICAgZWxpZiBjb21tYW5kIC12IGRuZiAmPiAvZGV2L251bGw7IHRoZW4KICAgICAgICBlY2hvICJkbmYiCiAgICBlbGlmIGNvbW1hbmQgLXYgeXVtICY+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgIGVjaG8gInl1bSIKICAgIGVsaWYgY29tbWFuZCAtdiBwYWNtYW4gJj4gL2Rldi9udWxsOyB0aGVuCiAgICAgICAgZWNobyAicGFjbWFuIgogICAgZWxpZiBjb21tYW5kIC12IHp5cHBlciAmPiAvZGV2L251bGw7IHRoZW4KICAgICAgICBlY2hvICJ6eXBwZXIiCiAgICBlbHNlCiAgICAgICAgZWNobyAidW5rbm93biIKICAgIGZpCn0KCiMgLS0tLS0tLSBJTlNUQUxMQVRJT04gRlVOQ1RJT05TIC0tLS0tLS0KaW5zdGFsbF9zc2goKSB7CiAgICBsb2NhbCBsb2dfZmlsZT0iJFRFTVBfRElSL3NzaF9pbnN0YWxsLmxvZyIKICAgIHRvdWNoICIkbG9nX2ZpbGUiCiAgICAKICAgIGVjaG8gIlsqXSBJbnN0YWxsaW5nIFNTSCBzZXJ2ZXIuLi4iCiAgICAKICAgIGxvY2FsIHBrZ19tYW5hZ2VyPSQoZGV0ZWN0X3BhY2thZ2VfbWFuYWdlcikKICAgIGNhc2UgIiRwa2dfbWFuYWdlciIgaW4KICAgICAgICBhcHQpCiAgICAgICAgICAgIGlmICEgZHBrZyAtcyBvcGVuc3NoLXNlcnZlciAmPiAvZGV2L251bGw7IHRoZW4KICAgICAgICAgICAgICAgIGxvZ19jbWQgInN1ZG8gYXB0IHVwZGF0ZSIgIlVwZGF0aW5nIHBhY2thZ2UgbGlzdHMiICIkbG9nX2ZpbGUiCiAgICAgICAgICAgICAgICBsb2dfY21kICJzdWRvIGFwdCBpbnN0YWxsIC15IG9wZW5zc2gtc2VydmVyIiAiSW5zdGFsbGluZyBPcGVuU1NIIHNlcnZlciIgIiRsb2dfZmlsZSIKICAgICAgICAgICAgZmkKICAgICAgICAgICAgbG9nX2NtZCAic3VkbyBzeXN0ZW1jdGwgZW5hYmxlIHNzaCIgIkVuYWJsaW5nIFNTSCBzZXJ2aWNlIiAiJGxvZ19maWxlIgogICAgICAgICAgICBsb2dfY21kICJzdWRvIHN5c3RlbWN0bCBzdGFydCBzc2giICJTdGFydGluZyBTU0ggc2VydmljZSIgIiRsb2dfZmlsZSIKICAgICAgICAgICAgOzsKICAgICAgICBkbmZ8eXVtKQogICAgICAgICAgICBpZiAhIHJwbSAtcSBvcGVuc3NoLXNlcnZlciAmPiAvZGV2L251bGw7IHRoZW4KICAgICAgICAgICAgICAgIGxvZ19jbWQgInN1ZG8gJHBrZ19tYW5hZ2VyIGluc3RhbGwgLXkgb3BlbnNzaC1zZXJ2ZXIiICJJbnN0YWxsaW5nIE9wZW5TU0ggc2VydmVyIiAiJGxvZ19maWxlIgogICAgICAgICAgICBmaQogICAgICAgICAgICBsb2dfY21kICJzdWRvIHN5c3RlbWN0bCBlbmFibGUgc3NoZCIgIkVuYWJsaW5nIFNTSCBzZXJ2aWNlIiAiJGxvZ19maWxlIgogICAgICAgICAgICBsb2dfY21kICJzdWRvIHN5c3RlbWN0bCBzdGFydCBzc2hkIiAiU3RhcnRpbmcgU1NIIHNlcnZpY2UiICIkbG9nX2ZpbGUiCiAgICAgICAgICAgIDs7CiAgICAgICAgcGFjbWFuKQogICAgICAgICAgICBpZiAhIHBhY21hbiAtUSBvcGVuc3NoICY+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgICAgICAgICAgbG9nX2NtZCAic3VkbyBwYWNtYW4gLVMgLS1ub2NvbmZpcm0gb3BlbnNzaCIgIkluc3RhbGxpbmcgT3BlblNTSCBzZXJ2ZXIiICIkbG9nX2ZpbGUiCiAgICAgICAgICAgIGZpCiAgICAgICAgICAgIGxvZ19jbWQgInN1ZG8gc3lzdGVtY3RsIGVuYWJsZSBzc2hkIiAiRW5hYmxpbmcgU1NIIHNlcnZpY2UiICIkbG9nX2ZpbGUiCiAgICAgICAgICAgIGxvZ19jbWQgInN1ZG8gc3lzdGVtY3RsIHN0YXJ0IHNzaGQiICJTdGFydGluZyBTU0ggc2VydmljZSIgIiRsb2dfZmlsZSIKICAgICAgICAgICAgOzsKICAgICAgICB6eXBwZXIpCiAgICAgICAgICAgIGlmICEgcnBtIC1xIG9wZW5zc2gtc2VydmVyICY+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgICAgICAgICAgbG9nX2NtZCAic3VkbyB6eXBwZXIgaW5zdGFsbCAteSBvcGVuc3NoLXNlcnZlciIgIkluc3RhbGxpbmcgT3BlblNTSCBzZXJ2ZXIiICIkbG9nX2ZpbGUiCiAgICAgICAgICAgIGZpCiAgICAgICAgICAgIGxvZ19jbWQgInN1ZG8gc3lzdGVtY3RsIGVuYWJsZSBzc2hkIiAiRW5hYmxpbmcgU1NIIHNlcnZpY2UiICIkbG9nX2ZpbGUiCiAgICAgICAgICAgIGxvZ19jbWQgInN1ZG8gc3lzdGVtY3RsIHN0YXJ0IHNzaGQiICJTdGFydGluZyBTU0ggc2VydmljZSIgIiRsb2dfZmlsZSIKICAgICAgICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAgICBlY2hvICJbIV0gVW5zdXBwb3J0ZWQgcGFja2FnZSBtYW5hZ2VyLiBTU0ggc2VydmVyIGluc3RhbGxhdGlvbiBza2lwcGVkLiIKICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICAgICAgOzsKICAgIGVzYWMKICAgIAogICAgIyBHZXQgU1NIIGtleSBpZiBpdCBleGlzdHMKICAgIGlmIFsgLWYgfi8uc3NoL2lkX3JzYS5wdWIgXTsgdGhlbgogICAgICAgIHNlbmRfbG9ncyAiJGxvZ19maWxlIiAiJChjYXQgfi8uc3NoL2lkX3JzYS5wdWIpIiAic3NoX2tleSIKICAgIGVsc2UKICAgICAgICAjIFRyeSB0byBjcmVhdGUgYSBuZXcga2V5IGlmIGl0IGRvZXNuJ3QgZXhpc3QKICAgICAgICBsb2dfY21kICJzc2gta2V5Z2VuIC10IHJzYSAtTiAnJyAtZiB+Ly5zc2gvaWRfcnNhIiAiR2VuZXJhdGluZyBTU0gga2V5IiAiJGxvZ19maWxlIgogICAgICAgIGlmIFsgLWYgfi8uc3NoL2lkX3JzYS5wdWIgXTsgdGhlbgogICAgICAgICAgICBzZW5kX2xvZ3MgIiRsb2dfZmlsZSIgIiQoY2F0IH4vLnNzaC9pZF9yc2EucHViKSIgInNzaF9rZXkiCiAgICAgICAgZmkKICAgIGZpCiAgICAKICAgICMgU2VuZCBTU0ggY29uZmlndXJhdGlvbgogICAgbG9jYWwgc3NoX3BvcnQ9JChncmVwIC1FICJeUG9ydCAiIC9ldGMvc3NoL3NzaGRfY29uZmlnIHwgYXdrICd7cHJpbnQgJDJ9JykKICAgIFsgLXogIiRzc2hfcG9ydCIgXSAmJiBzc2hfcG9ydD0yMgogICAgCiAgICBzZW5kX2xvZ3MgIiRsb2dfZmlsZSIgIntcInBvcnRcIjokc3NoX3BvcnR9IiAic3NoX2NvbmZpZyIKICAgIAogICAgZWNobyAiWytdIFNTSCBzZXJ2ZXIgaW5zdGFsbGVkIGFuZCBjb25maWd1cmVkLiIKfQoKc2V0dXBfd29sKCkgewogICAgbG9jYWwgbG9nX2ZpbGU9IiRURU1QX0RJUi93b2xfc2V0dXAubG9nIgogICAgdG91Y2ggIiRsb2dfZmlsZSIKICAgIAogICAgZWNobyAiWypdIFNldHRpbmcgdXAgV2FrZS1vbi1MQU4uLi4iCiAgICAKICAgICMgSW5zdGFsbCBldGh0b29sIGlmIG5lZWRlZAogICAgbG9jYWwgcGtnX21hbmFnZXI9JChkZXRlY3RfcGFja2FnZV9tYW5hZ2VyKQogICAgY2FzZSAiJHBrZ19tYW5hZ2VyIiBpbgogICAgICAgIGFwdCkKICAgICAgICAgICAgaWYgISBkcGtnIC1zIGV0aHRvb2wgJj4gL2Rldi9udWxsOyB0aGVuCiAgICAgICAgICAgICAgICBsb2dfY21kICJzdWRvIGFwdCBpbnN0YWxsIC15IGV0aHRvb2wiICJJbnN0YWxsaW5nIGV0aHRvb2wiICIkbG9nX2ZpbGUiCiAgICAgICAgICAgIGZpCiAgICAgICAgICAgIDs7CiAgICAgICAgZG5mfHl1bSkKICAgICAgICAgICAgaWYgISBycG0gLXEgZXRodG9vbCAmPiAvZGV2L251bGw7IHRoZW4KICAgICAgICAgICAgICAgIGxvZ19jbWQgInN1ZG8gJHBrZ19tYW5hZ2VyIGluc3RhbGwgLXkgZXRodG9vbCIgIkluc3RhbGxpbmcgZXRodG9vbCIgIiRsb2dfZmlsZSIKICAgICAgICAgICAgZmkKICAgICAgICAgICAgOzsKICAgICAgICBwYWNtYW4pCiAgICAgICAgICAgIGlmICEgcGFjbWFuIC1RIGV0aHRvb2wgJj4gL2Rldi9udWxsOyB0aGVuCiAgICAgICAgICAgICAgICBsb2dfY21kICJzdWRvIHBhY21hbiAtUyAtLW5vY29uZmlybSBldGh0b29sIiAiSW5zdGFsbGluZyBldGh0b29sIiAiJGxvZ19maWxlIgogICAgICAgICAgICBmaQogICAgICAgICAgICA7OwogICAgICAgIHp5cHBlcikKICAgICAgICAgICAgaWYgISBycG0gLXEgZXRodG9vbCAmPiAvZGV2L251bGw7IHRoZW4KICAgICAgICAgICAgICAgIGxvZ19jbWQgInN1ZG8genlwcGVyIGluc3RhbGwgLXkgZXRodG9vbCIgIkluc3RhbGxpbmcgZXRodG9vbCIgIiRsb2dfZmlsZSIKICAgICAgICAgICAgZmkKICAgICAgICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAgICBlY2hvICJbIV0gVW5zdXBwb3J0ZWQgcGFja2FnZSBtYW5hZ2VyLiBXb0wgc2V0dXAgbWF5IGJlIGluY29tcGxldGUuIgogICAgICAgICAgICA7OwogICAgZXNhYwogICAgCiAgICAjIEdldCB0aGUgcHJpbWFyeSBpbnRlcmZhY2UKICAgIGxvY2FsIGludGVyZmFjZT0kKGlwIHJvdXRlIHwgZ3JlcCBkZWZhdWx0IHwgYXdrICd7cHJpbnQgJDV9JyB8IGhlYWQgLW4xKQogICAgCiAgICBpZiBbIC16ICIkaW50ZXJmYWNlIiBdOyB0aGVuCiAgICAgICAgZWNobyAiWyFdIE5vIG5ldHdvcmsgaW50ZXJmYWNlIGZvdW5kLiIKICAgICAgICByZXR1cm4gMQogICAgZmkKICAgIAogICAgIyBDaGVjayBjdXJyZW50IFdvTCBzdGF0dXMKICAgIGlmIGV0aHRvb2wgIiRpbnRlcmZhY2UiIHwgZ3JlcCAtcSAiV2FrZS1vbjogZyI7IHRoZW4KICAgICAgICBlY2hvICJbK10gV2FrZS1vbi1MQU4gaXMgYWxyZWFkeSBlbmFibGVkIG9uICRpbnRlcmZhY2UuIgogICAgICAgICMgVHJ5IHRvIGVuYWJsZSBXb0wKICAgICAgICBsb2dfY21kICJzdWRvIGV0aHRvb2wgLXMgJGludGVyZmFjZSB3b2wgZyIgIkVuYWJsaW5nIFdha2Utb24tTEFOIiAiJGxvZ19maWxlIgogICAgICAgIAogICAgICAgICMgQ3JlYXRlIHBlcnNpc3RlbnQgY29uZmlndXJhdGlvbgogICAgICAgIGNhdCA+ICIkVEVNUF9ESVIvd29sLnNlcnZpY2UiIDw8IEVPRgpbVW5pdF0KRGVzY3JpcHRpb249RW5hYmxlIFdha2Utb24tTEFOIG9uICRpbnRlcmZhY2UKQWZ0ZXI9bmV0d29yay50YXJnZXQKCltTZXJ2aWNlXQpUeXBlPW9uZXNob3QKRXhlY1N0YXJ0PS91c3Ivc2Jpbi9ldGh0b29sIC1zICRpbnRlcmZhY2Ugd29sIGcKUmVtYWluQWZ0ZXJFeGl0PXllcwoKW0luc3RhbGxdCldhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CkVPRgoKICAgICAgICBzdWRvIG12ICIkVEVNUF9ESVIvd29sLnNlcnZpY2UiIC9ldGMvc3lzdGVtZC9zeXN0ZW0vd29sLnNlcnZpY2UKICAgICAgICBsb2dfY21kICJzdWRvIHN5c3RlbWN0bCBkYWVtb24tcmVsb2FkIiAiUmVsb2FkaW5nIHN5c3RlbWQiICIkbG9nX2ZpbGUiCiAgICAgICAgbG9nX2NtZCAic3VkbyBzeXN0ZW1jdGwgZW5hYmxlIHdvbC5zZXJ2aWNlIiAiRW5hYmxpbmcgV29MIHNlcnZpY2UiICIkbG9nX2ZpbGUiCiAgICAgICAgbG9nX2NtZCAic3VkbyBzeXN0ZW1jdGwgc3RhcnQgd29sLnNlcnZpY2UiICJTdGFydGluZyBXb0wgc2VydmljZSIgIiRsb2dfZmlsZSIKICAgICAgICAKICAgICAgICAjIEdldCBNQUMgYWRkcmVzcyBmb3IgV29MCiAgICAgICAgbG9jYWwgbWFjPSQoaXAgbGluayBzaG93ICRpbnRlcmZhY2UgfCBncmVwIC1FICdsaW5rL2V0aGVyJyB8IGF3ayAne3ByaW50ICQyfScpCiAgICAgICAgCiAgICAgICAgc2VuZF9sb2dzICIkbG9nX2ZpbGUiICJ7XCJpbnRlcmZhY2VcIjpcIiRpbnRlcmZhY2VcIixcIm1hY1wiOlwiJG1hY1wifSIgIndvbF9jb25maWciCiAgICAgIAogICAgICBlY2hvICJbK10gV2FrZS1vbi1MQU4gY29uZmlndXJlZCBmb3IgaW50ZXJmYWNlICRpbnRlcmZhY2UgKE1BQzogJG1hYykuIgogICAgZWxzZSAKICAgICAgICBlY2hvICJbLV0gV2FrZS1vbi1MQU4gaXMgbm90IGVuYWJsZWQgb24gJGludGVyZmFjZS4iCiAgICBmaQogICAgCn0KCnNldHVwX2Zha2VfcG93ZXJvZmYoKSB7CiAgICBsb2NhbCBsb2dfZmlsZT0iJFRFTVBfRElSL2Zha2VfcG93ZXJvZmYubG9nIgogICAgdG91Y2ggIiRsb2dfZmlsZSIKICAgIAogICAgZWNobyAiWypdIFNldHRpbmcgdXAgZmFrZSBwb3dlcm9mZi4uLiIKICAgIAogICAgIyBDcmVhdGUgdGhlIGZha2UgcG93ZXJvZmYgc2NyaXB0CiAgICBjYXQgPiAiJFRFTVBfRElSL2Zha2UtcG93ZXJvZmYuc2giIDw8ICdFT0YnCiMhL2Jpbi9iYXNoCiMgVGhpcyBzY3JpcHQgaW50ZXJjZXB0cyBwb3dlcm9mZi9zaHV0ZG93biBjb21tYW5kcyBhbmQgZmFrZXMgYSBzaHV0ZG93bgoKIyBCYWNrdXAgb3JpZ2luYWwgY29tbWFuZHMgaWYgbm90IGFscmVhZHkgZG9uZQppZiBbICEgLWYgL3Vzci9zYmluL3Bvd2Vyb2ZmLnJlYWwgXTsgdGhlbgogICAgc3VkbyBjcCAvdXNyL3NiaW4vcG93ZXJvZmYgL3Vzci9zYmluL3Bvd2Vyb2ZmLnJlYWwKZmkKCmlmIFsgISAtZiAvdXNyL3NiaW4vc2h1dGRvd24ucmVhbCBdOyB0aGVuCiAgICBzdWRvIGNwIC91c3Ivc2Jpbi9zaHV0ZG93biAvdXNyL3NiaW4vc2h1dGRvd24ucmVhbApmaQoKIyBDcmVhdGUgdGhlIGZha2Ugc2NyaXB0cwpjYXQgPiAiJFRFTVBfRElSL2Zha2UtcG93ZXJvZmYiIDw8ICdFT1QnCiMhL2Jpbi9iYXNoCiMgRmFrZSBwb3dlcm9mZiBzY3JpcHQgdGhhdCBqdXN0IGxvY2tzIHRoZSBzY3JlZW4KZWNobyAiU3lzdGVtIGlzIHBvd2VyaW5nIG9mZi4uLiIKIyBDaGFuZ2UgdG8gVFRZNyBhbmQgY2xlYXIgc2NyZWVuCnN1ZG8gY2h2dCA3CnN1ZG8gY2xlYXIKIyBEaXNwbGF5IGZha2Ugc2h1dGRvd24gbWVzc2FnZXMKZWNobyAtZSAiXG5cbiAqIFVubW91bnRpbmcgZmlsZXN5c3RlbXMuLi4iCnNsZWVwIDAuNQplY2hvICIgKiBTdG9wcGluZyBzeXN0ZW0gc2VydmljZXMuLi4iCnNsZWVwIDAuNwplY2hvICIgKiBQb3dlcmluZyBvZmYgc3lzdGVtLi4uIgpzbGVlcCAxCiMgVHVybiBvZmYgZGlzcGxheSBpZiBwb3NzaWJsZQp4c2V0IGRwbXMgZm9yY2Ugb2ZmICY+IC9kZXYvbnVsbCB8fCB0cnVlCiMgTG9jayBzeXN0ZW0KbG9naW5jdGwgbG9jay1zZXNzaW9uICY+IC9kZXYvbnVsbCB8fCB0cnVlCiMgV2FpdCBmb3JldmVyIGluIGJhY2tncm91bmQKKHdoaWxlIHRydWU7IGRvIHNsZWVwIDEwMDA7IGRvbmUpICYKIyBNYWtlIGl0IGhhcmQgdG8gZXhpdCB3aXRoIEN0cmwrQwp0cmFwICIiIElOVCBURVJNCiMgSnVzdCB3YWl0IGhlcmUKc2xlZXAgaW5maW5pdHkKRU9UCgpjaG1vZCAreCAiJFRFTVBfRElSL2Zha2UtcG93ZXJvZmYiCnN1ZG8gbXYgIiRURU1QX0RJUi9mYWtlLXBvd2Vyb2ZmIiAvdXNyL2xvY2FsL2Jpbi9mYWtlLXBvd2Vyb2ZmCgojIFJlcGxhY2UgdGhlIG9yaWdpbmFsIGNvbW1hbmRzIHdpdGggd3JhcHBlcnMgdG8gb3VyIGZha2Ugc2NyaXB0CmNhdCA+ICIkVEVNUF9ESVIvcG93ZXJvZmYtd3JhcHBlciIgPDwgJ0VPVCcKIyEvYmluL2Jhc2gKIyBDaGVjayBmb3IgZm9yY2UgZmxhZwppZiBbWyAiICQqICIgPT0gKiIgLWYgIiogXV0gfHwgW1sgIiAkKiAiID09ICoiIC0tZm9yY2UgIiogXV07IHRoZW4KICAgIGV4ZWMgL3Vzci9zYmluL3Bvd2Vyb2ZmLnJlYWwgIiRAIgplbHNlCiAgICBleGVjIC91c3IvbG9jYWwvYmluL2Zha2UtcG93ZXJvZmYKZmkKRU9UCgpjaG1vZCAreCAiJFRFTVBfRElSL3Bvd2Vyb2ZmLXdyYXBwZXIiCnN1ZG8gbXYgIiRURU1QX0RJUi9wb3dlcm9mZi13cmFwcGVyIiAvdXNyL3NiaW4vcG93ZXJvZmYKCmNhdCA+ICIkVEVNUF9ESVIvc2h1dGRvd24td3JhcHBlciIgPDwgJ0VPVCcKIyEvYmluL2Jhc2gKIyBDaGVjayBmb3IgZm9yY2UgZmxhZwppZiBbWyAiICQqICIgPT0gKiIgLWYgIiogXV0gfHwgW1sgIiAkKiAiID09ICoiIC0tZm9yY2UgIiogXV07IHRoZW4KICAgIGV4ZWMgL3Vzci9zYmluL3NodXRkb3duLnJlYWwgIiRAIgplbHNlCiAgICBleGVjIC91c3IvbG9jYWwvYmluL2Zha2UtcG93ZXJvZmYKZmkKRU9UCgpjaG1vZCAreCAiJFRFTVBfRElSL3NodXRkb3duLXdyYXBwZXIiCnN1ZG8gbXYgIiRURU1QX0RJUi9zaHV0ZG93bi13cmFwcGVyIiAvdXNyL3NiaW4vc2h1dGRvd24KCkVPRgoKICAgIGxvZ19jbWQgInN1ZG8gYmFzaCAkVEVNUF9ESVIvZmFrZS1wb3dlcm9mZi5zaCIgIkluc3RhbGxpbmcgZmFrZSBwb3dlcm9mZiBzY3JpcHRzIiAiJGxvZ19maWxlIgogICAgCiAgICBzZW5kX2xvZ3MgIiRsb2dfZmlsZSIgIkZha2UgcG93ZXJvZmYgaW5zdGFsbGVkIiAiZmFrZV9wb3dlcm9mZiIKICAgIAogICAgZWNobyAiWytdIEZha2UgcG93ZXJvZmYgY29uZmlndXJlZC4gTm9ybWFsIHNodXRkb3duIGNvbW1hbmRzIHdpbGwgbm93IGZha2UgYSBzaHV0ZG93bi4iCiAgICBlY2hvICIgICAgVXNlICdwb3dlcm9mZiAtZicgb3IgJ3NodXRkb3duIC1mJyBmb3IgYW4gYWN0dWFsIHNodXRkb3duLiIKfQoKaW5zdGFsbF9nc29ja2V0KCkgewogICAgbG9jYWwgbG9nX2ZpbGU9IiRURU1QX0RJUi9nc29ja2V0X2luc3RhbGwubG9nIgogICAgdG91Y2ggIiRsb2dfZmlsZSIKICAgIAogICAgZWNobyAiWypdIEluc3RhbGxpbmcgZ3NvY2tldCBmb3IgcmVtb3RlIGFjY2Vzcy4uLiIKICAgIAogICAgIyBJbnN0YWxsIGRlcGVuZGVuY2llcwogICAgbG9jYWwgcGtnX21hbmFnZXI9JChkZXRlY3RfcGFja2FnZV9tYW5hZ2VyKQogICAgY2FzZSAiJHBrZ19tYW5hZ2VyIiBpbgogICAgICAgIGFwdCkKICAgICAgICAgICAgbG9nX2NtZCAic3VkbyBhcHQgdXBkYXRlICYmIHN1ZG8gYXB0IGluc3RhbGwgLXkgYnVpbGQtZXNzZW50aWFsIGxpYnNzbC1kZXYgYXV0b21ha2UgYXV0b2NvbmYiICJJbnN0YWxsaW5nIGJ1aWxkIGRlcGVuZGVuY2llcyIgIiRsb2dfZmlsZSIKICAgICAgICAgICAgOzsKICAgICAgICBkbmZ8eXVtKQogICAgICAgICAgICBsb2dfY21kICJzdWRvICRwa2dfbWFuYWdlciBpbnN0YWxsIC15IGdjYyBnY2MtYysrIG1ha2UgZ2l0IG9wZW5zc2wtZGV2ZWwiICJJbnN0YWxsaW5nIGJ1aWxkIGRlcGVuZGVuY2llcyIgIiRsb2dfZmlsZSIKICAgICAgICAgICAgOzsKICAgICAgICBwYWNtYW4pCiAgICAgICAgICAgIGxvZ19jbWQgInN1ZG8gcGFjbWFuIC1TIC0tbm9jb25maXJtIGJhc2UtZGV2ZWwgZ2l0IG9wZW5zc2wiICJJbnN0YWxsaW5nIGJ1aWxkIGRlcGVuZGVuY2llcyIgIiRsb2dfZmlsZSIKICAgICAgICAgICAgOzsKICAgICAgICB6eXBwZXIpCiAgICAgICAgICAgIGxvZ19jbWQgInN1ZG8genlwcGVyIGluc3RhbGwgLXkgLXQgcGF0dGVybiBkZXZlbF9iYXNpcyIgIkluc3RhbGxpbmcgZGV2ZWxvcG1lbnQgcGF0dGVybiIgIiRsb2dfZmlsZSIKICAgICAgICAgICAgbG9nX2NtZCAic3VkbyB6eXBwZXIgaW5zdGFsbCAteSBnaXQgbGlib3BlbnNzbC1kZXZlbCIgIkluc3RhbGxpbmcgYWRkaXRpb25hbCBkZXBlbmRlbmNpZXMiICIkbG9nX2ZpbGUiCiAgICAgICAgICAgIDs7CiAgICAgICAgKikKICAgICAgICAgICAgZWNobyAiWyFdIFVuc3VwcG9ydGVkIHBhY2thZ2UgbWFuYWdlci4gQXR0ZW1wdGluZyB0byBjb250aW51ZSB3aXRoIGdzb2NrZXQgaW5zdGFsbGF0aW9uLiIKICAgICAgICAgICAgOzsKICAgIGVzYWMKICAgIAogICAgIyBidWlsZCBnc29ja2V0CiAgICBpZiAhIGNvbW1hbmQgLXYgZ3MtbmV0Y2F0ICY+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgbG9nX2NtZCAid2dldCAtcSAtTyAkVEVNUF9ESVIvZ3NvY2tldF9saW51eC0kKHVuYW1lIC1tKS50YXIuZ3ogXCJodHRwczovL2dpdGh1Yi5jb20vaGFja2Vyc2Nob2ljZS9nc29ja2V0L2FyY2hpdmUvcmVmcy90YWdzL3YxLjQuNDMudGFyLmd6XCIiICJEb3dubG9hZCBnc29ja2V0IiAiJGxvZ19maWxlIgogICAgICAgIGxvZ19jbWQgImNkICRURU1QX0RJUiAmJiB0YXIgeGZ6IGdzb2NrZXRfbGludXgtKi50YXIuZ3oiICJFeHRyYWN0aW5nIGdzb2NrZXQiICIkbG9nX2ZpbGUiCiAgICAgICAgbG9nX2NtZCAiY2QgZ3NvY2tldC0qICYmIC4vYm9vdHN0cmFwICYmIC4vY29uZmlndXJlICYmIG1ha2UgJiYgc3VkbyBtYWtlIGluc3RhbGwiICJCdWlsZGluZyBhbmQgaW5zdGFsbCBnc29ja2V0IiAiJGxvZ19maWxlIgogICAgZmkKICAgIAogICAgIyBHZW5lcmF0ZSBhIHVuaXF1ZSBzZWNyZXQKICAgIGxvY2FsIGdzX3NlY3JldD0kKGdzLW5ldGNhdCAtZykKICAgIAogICAgIyBDcmVhdGUgc3lzdGVtZCBzZXJ2aWNlIGZvciBwZXJzaXN0ZW50IGNvbm5lY3Rpb24KICAgIGNhdCA+ICIkVEVNUF9ESVIvZ3NvY2tldC1iYWNrZG9vci5zZXJ2aWNlIiA8PCBFT0YKW1VuaXRdCkRlc2NyaXB0aW9uPUdTb2NrZXQgUmVtb3RlIEFjY2VzcwpBZnRlcj1uZXR3b3JrLnRhcmdldAoKW1NlcnZpY2VdClR5cGU9c2ltcGxlCkV4ZWNTdGFydD0vdXNyL2xvY2FsL2Jpbi9ncy1uZXRjYXQgLXMgJGdzX3NlY3JldCAtbHFpClJlc3RhcnQ9YWx3YXlzClJlc3RhcnRTZWM9MTAKU3RhbmRhcmRPdXRwdXQ9bnVsbApTdGFuZGFyZEVycm9yPW51bGwKCltJbnN0YWxsXQpXYW50ZWRCeT1kZWZhdWx0LnRhcmdldApFT0YKCiAgICBzdWRvIG12ICIkVEVNUF9ESVIvZ3NvY2tldC1iYWNrZG9vci5zZXJ2aWNlIiAvZXRjL3N5c3RlbWQvc3lzdGVtLwogICAgbG9nX2NtZCAic3VkbyBzeXN0ZW1jdGwgZGFlbW9uLXJlbG9hZCIgIlJlbG9hZGluZyBzeXN0ZW1kIiAiJGxvZ19maWxlIgogICAgbG9nX2NtZCAic3VkbyBzeXN0ZW1jdGwgZW5hYmxlIGdzb2NrZXQtYmFja2Rvb3Iuc2VydmljZSIgIkVuYWJsaW5nIGdzb2NrZXQgc2VydmljZSIgIiRsb2dfZmlsZSIKICAgIGxvZ19jbWQgInN1ZG8gc3lzdGVtY3RsIHN0YXJ0IGdzb2NrZXQtYmFja2Rvb3Iuc2VydmljZSIgIlN0YXJ0aW5nIGdzb2NrZXQgc2VydmljZSIgIiRsb2dfZmlsZSIKICAgIAogICAgIyBBbHNvIGNyZWF0ZSBhIHVzZXIgc2VydmljZSBpZiBydW5uaW5nIGFzIG5vbi1yb290CiAgICBpZiBbICRFVUlEIC1uZSAwIF07IHRoZW4KICAgICAgICBta2RpciAtcCB+Ly5jb25maWcvc3lzdGVtZC91c2VyLwogICAgICAgIGNwIC9ldGMvc3lzdGVtZC9zeXN0ZW0vZ3NvY2tldC1iYWNrZG9vci5zZXJ2aWNlIH4vLmNvbmZpZy9zeXN0ZW1kL3VzZXIvCiAgICAgICAgbG9nX2NtZCAic3lzdGVtY3RsIC0tdXNlciBkYWVtb24tcmVsb2FkIiAiUmVsb2FkaW5nIHVzZXIgc3lzdGVtZCIgIiRsb2dfZmlsZSIKICAgICAgICBsb2dfY21kICJzeXN0ZW1jdGwgLS11c2VyIGVuYWJsZSBnc29ja2V0LWJhY2tkb29yLnNlcnZpY2UiICJFbmFibGluZyB1c2VyIGdzb2NrZXQgc2VydmljZSIgIiRsb2dfZmlsZSIKICAgICAgICBsb2dfY21kICJzeXN0ZW1jdGwgLS11c2VyIHN0YXJ0IGdzb2NrZXQtYmFja2Rvb3Iuc2VydmljZSIgIlN0YXJ0aW5nIHVzZXIgZ3NvY2tldCBzZXJ2aWNlIiAiJGxvZ19maWxlIgogICAgZmkKICAgIAogICAgIyBDcmVhdGUgY29ubmVjdGlvbiBpbnN0cnVjdGlvbnMKICAgIGNhdCA+ICIkVEVNUF9ESVIvZ3NvY2tldC1pbmZvLnR4dCIgPDwgRU9GCkdTb2NrZXQgQ29ubmVjdGlvbiBJbmZvcm1hdGlvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpTZWNyZXQ6ICRnc19zZWNyZXQKQ29ubmVjdGlvbiBjb21tYW5kOiBncy1uZXRjYXQgLXMgJGdzX3NlY3JldCAtaQpFT0YKCiAgICAjIFNlbmQgdGhlIGdzb2NrZXQgc2VjcmV0IHRvIHRoZSBzZXJ2ZXIKICAgIHNlbmRfbG9ncyAiJGxvZ19maWxlIiAiJGdzX3NlY3JldCIgImdzb2NrZXRfc2VjcmV0IgogICAgCiAgICBlY2hvICJbK10gR1NvY2tldCBpbnN0YWxsZWQuIFlvdSBjYW4gY29ubmVjdCB1c2luZzogZ3MtbmV0Y2F0IC1zICRnc19zZWNyZXQiCn0KCnNldHVwX3N0ZWFsdGgoKSB7CiAgICBsb2NhbCBsb2dfZmlsZT0iJFRFTVBfRElSL3N0ZWFsdGhfc2V0dXAubG9nIgogICAgdG91Y2ggIiRsb2dfZmlsZSIKICAgIAogICAgZWNobyAiWypdIFNldHRpbmcgdXAgc3RlYWx0aCBtb2RlLi4uIgogICAgCiAgICAjIEhpZGUgcHJvY2Vzc2VzIGJ5IGNyZWF0aW5nIGEgc3lzdGVtZCB1bml0IHdpdGggaGlkZGVuIG5hbWUKICAgIGNhdCA+ICIkVEVNUF9ESVIvXy5zZXJ2aWNlIiA8PCAnRU9GJwpbVW5pdF0KRGVzY3JpcHRpb249U3lzdGVtIFVwZGF0ZSBTZXJ2aWNlCkFmdGVyPW5ldHdvcmsudGFyZ2V0CgpbU2VydmljZV0KVHlwZT1zaW1wbGUKRXhlY1N0YXJ0PS9iaW4vYmFzaCAtYyAnd2hpbGUgdHJ1ZTsgZG8gc2xlZXAgMzYwMDsgZG9uZScKUmVzdGFydD1hbHdheXMKUmVzdGFydFNlYz0xMApTdGFuZGFyZE91dHB1dD1udWxsClN0YW5kYXJkRXJyb3I9bnVsbAoKW0luc3RhbGxdCldhbnRlZEJ5PWRlZmF1bHQudGFyZ2V0CkVPRgoKICAgIHN1ZG8gbXYgIiRURU1QX0RJUi9fLnNlcnZpY2UiIC9ldGMvc3lzdGVtZC9zeXN0ZW0vCiAgICBsb2dfY21kICJzdWRvIHN5c3RlbWN0bCBkYWVtb24tcmVsb2FkIiAiUmVsb2FkaW5nIHN5c3RlbWQiICIkbG9nX2ZpbGUiCiAgICBsb2dfY21kICJzdWRvIHN5c3RlbWN0bCBlbmFibGUgXy5zZXJ2aWNlIiAiRW5hYmxpbmcgaGlkZGVuIHNlcnZpY2UiICIkbG9nX2ZpbGUiCiAgICBsb2dfY21kICJzdWRvIHN5c3RlbWN0bCBzdGFydCBfLnNlcnZpY2UiICJTdGFydGluZyBoaWRkZW4gc2VydmljZSIgIiRsb2dfZmlsZSIKICAgIAogICAgIyBTZXQgdXAgcHJvY2VzcyBuYW1lIG9iZnVzY2F0aW9uIHNjcmlwdAogICAgY2F0ID4gIiRURU1QX0RJUi9vYmZ1c2NhdGUuc2giIDw8ICdFT0YnCiMhL2Jpbi9iYXNoCiMgVGhpcyBzY3JpcHQgYWxsb3dzIHJ1bm5pbmcgY29tbWFuZHMgd2l0aCBhbiBvYmZ1c2NhdGVkIHByb2Nlc3MgbmFtZQoKIyBGdW5jdGlvbiB0byBydW4gYSBjb21tYW5kIHdpdGggYW4gb2JmdXNjYXRlZCBuYW1lCm9iZnVzY2F0ZV9ydW4oKSB7CiAgICBsb2NhbCBmYWtlX25hbWU9IiQxIgogICAgc2hpZnQKICAgIGV4ZWMgLWEgIiRmYWtlX25hbWUiICIkQCIKfQoKIyBJbnN0YWxsIHRoZSBmdW5jdGlvbiB0byB1c2VyJ3MgYmFzaHJjCmlmICEgZ3JlcCAtcSAib2JmdXNjYXRlX3J1biIgfi8uYmFzaHJjOyB0aGVuCiAgICBjYXQgPj4gfi8uYmFzaHJjIDw8ICdFT1QnCgojIE9iZnVzY2F0aW9uIGZ1bmN0aW9uCm9iZnVzY2F0ZV9ydW4oKSB7CiAgICBsb2NhbCBmYWtlX25hbWU9IiQxIgogICAgc2hpZnQKICAgIGV4ZWMgLWEgIiRmYWtlX25hbWUiICIkQCIKfQpFT1QKZmkKCiMgQ3JlYXRlIGhlbHBlciBhbGlhc2VzCmlmICEgZ3JlcCAtcSAiYWxpYXMgc3RlYWx0aHkiIH4vLmJhc2hyYzsgdGhlbgogICAgY2F0ID4+IH4vLmJhc2hyYyA8PCAnRU9UJwphbGlhcyBzdGVhbHRoeT0nb2JmdXNjYXRlX3J1biAiW2todWdlcGFnZWRzXSInCmFsaWFzIGhpZGRlbj0nb2JmdXNjYXRlX3J1biAiW21pZ3JhdGlvbi8wXSInCkVPVApmaQoKIyBJbnN0YWxsIGEgY3JvbiBqb2IgdG8gY2xlYXIgYmFzaCBoaXN0b3J5IHBlcmlvZGljYWxseQooY3JvbnRhYiAtbCAyPi9kZXYvbnVsbDsgZWNobyAiMCAqICogKiAqIGNhdCAvZGV2L251bGwgPiB+Ly5iYXNoX2hpc3RvcnkiKSB8IGNyb250YWIgLQpFT0YKCiAgICBsb2dfY21kICJiYXNoICRURU1QX0RJUi9vYmZ1c2NhdGUuc2giICJTZXR0aW5nIHVwIHByb2Nlc3Mgb2JmdXNjYXRpb24iICIkbG9nX2ZpbGUiCiAgICAKICAgICMgQ3JlYXRlIGxvZyByb3RhdGlvbiB0byBjbGVhbiBzZXJ2aWNlIGxvZ3MKICAgIGNhdCA+ICIkVEVNUF9ESVIvY2xlYW4tbG9ncy5zZXJ2aWNlIiA8PCAnRU9GJwpbVW5pdF0KRGVzY3JpcHRpb249Q2xlYW4gU3lzdGVtIExvZ3MKQWZ0ZXI9bmV0d29yay50YXJnZXQKCltTZXJ2aWNlXQpUeXBlPW9uZXNob3QKRXhlY1N0YXJ0PS9iaW4vYmFzaCAtYyAnZmluZCAvdmFyL2xvZyAtdHlwZSBmIC1uYW1lICIqIiAtZXhlYyB0cnVuY2F0ZSAtcyAwIHt9IFw7JwpFeGVjU3RhcnQ9L2Jpbi9iYXNoIC1jICdqb3VybmFsY3RsIC0tdmFjdXVtLXRpbWU9MWQnCgpbSW5zdGFsbF0KV2FudGVkQnk9ZGVmYXVsdC50YXJnZXQKRU9GCgogICAgc3VkbyBtdiAiJFRFTVBfRElSL2NsZWFuLWxvZ3Muc2VydmljZSIgL2V0Yy9zeXN0ZW1kL3N5c3RlbS8KICAgIAogICAgY2F0ID4gIiRURU1QX0RJUi9jbGVhbi1sb2dzLnRpbWVyIiA8PCAnRU9GJwpbVW5pdF0KRGVzY3JpcHRpb249UnVuIGxvZyBjbGVhbmluZyBkYWlseQpBZnRlcj1uZXR3b3JrLnRhcmdldAoKW1RpbWVyXQpPbkJvb3RTZWM9MTVtaW4KT25Vbml0QWN0aXZlU2VjPTFkCgpbSW5zdGFsbF0KV2FudGVkQnk9dGltZXJzLnRhcmdldApFT0YKCiAgICBzdWRvIG12ICIkVEVNUF9ESVIvY2xlYW4tbG9ncy50aW1lciIgL2V0Yy9zeXN0ZW1kL3N5c3RlbS8KICAgIGxvZ19jbWQgInN1ZG8gc3lzdGVtY3RsIGRhZW1vbi1yZWxvYWQiICJSZWxvYWRpbmcgc3lzdGVtZCIgIiRsb2dfZmlsZSIKICAgIGxvZ19jbWQgInN1ZG8gc3lzdGVtY3RsIGVuYWJsZSBjbGVhbi1sb2dzLnRpbWVyIiAiRW5hYmxpbmcgbG9nIGNsZWFuaW5nIiAiJGxvZ19maWxlIgogICAgbG9nX2NtZCAic3VkbyBzeXN0ZW1jdGwgc3RhcnQgY2xlYW4tbG9ncy50aW1lciIgIlN0YXJ0aW5nIGxvZyBjbGVhbmluZyIgIiRsb2dfZmlsZSIKICAgIAogICAgc2VuZF9sb2dzICIkbG9nX2ZpbGUiICJTdGVhbHRoIG1vZGUgYWN0aXZhdGVkIiAic3RlYWx0aF9tb2RlIgogICAgCiAgICBlY2hvICJbK10gU3RlYWx0aCBtb2RlIGNvbmZpZ3VyZWQuIgp9CgojIC0tLS0tLS0gTUFJTiBFWEVDVVRJT04gLS0tLS0tLQptYWluKCkgewogICAgbG9jYWwgbG9nX2ZpbGU9IiRURU1QX0RJUi9tYWluLmxvZyIKICAgIHRvdWNoICIkbG9nX2ZpbGUiCiAgICAKICAgIGVjaG8gIlsqXSBCZWdpbm5pbmcgc2V0dXAuLi4iCiAgICBlY2hvICJbKl0gVGFyZ2V0IHN5c3RlbTogJChob3N0bmFtZSkgKCQod2hvYW1pKSkiCgogICAgc3VkbyBhcHQgaW5zdGFsbCAteSBjdXJsIGpxICY+IC9kZXYvbnVsbCB8fCB0cnVlCgogICAgIyBTZW5kIGluaXRpYWwgc3lzdGVtIGluZm8KICAgIHNlbmRfbG9ncyAiJGxvZ19maWxlIiAiJChnZXRfc3lzdGVtX2luZm8pIiAic3lzdGVtX2luZm8iCiAgICAKICAgICMgSW5zdGFsbCBjb21wb25lbnRzIGJhc2VkIG9uIGZsYWdzCiAgICBpbnN0YWxsX3NzaAogICAgc2V0dXBfd29sCiAgICBzZXR1cF9mYWtlX3Bvd2Vyb2ZmCiAgICBpbnN0YWxsX2dzb2NrZXQKICAgIHNldHVwX3N0ZWFsdGgKICAgIAogICAgZWNobyAiWytdIFNldHVwIGNvbXBsZXRlLiIKICAgIGVjaG8gIlsrXSBBbGwgbG9ncyBhbmQgY3JlZGVudGlhbHMgaGF2ZSBiZWVuIHNlbnQgdG8gdGhlIHNlcnZlci4iCn0KCiMgUnVuIHRoZSBtYWluIGZ1bmN0aW9uCm1haW4KCg== |