IyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgTk1BS0UgRmlsZSwgQmFzZWQgb24gY2pwZWcuZHNwCiFJRiAiJChDRkcpIiA9PSAiIgpDRkc9Y2pwZWcgLSBXaW4zMgohTUVTU0FHRSBLZWluZSBLb25maWd1cmF0aW9uIGFuZ2VnZWJlbi4gY2pwZWcgLSBXaW4zMiB3aXJkIGFscyBTdGFuZGFyZCB2ZXJ3ZW5kZXQuCiFFTkRJRiAKCiFJRiAiJChDRkcpIiAhPSAiY2pwZWcgLSBXaW4zMiIKIU1FU1NBR0UgVW5n/Gx0aWdlIEtvbmZpZ3VyYXRpb24gIiQoQ0ZHKSIgYW5nZWdlYmVuLgohTUVTU0FHRSBTaWUga/ZubmVuIGJlaW0gQXVzZvxocmVuIHZvbiBOTUFLRSBlaW5lIEtvbmZpZ3VyYXRpb24gYW5nZWJlbgohTUVTU0FHRSBkdXJjaCBEZWZpbmllcmVuIGRlcyBNYWtyb3MgQ0ZHIGluIGRlciBCZWZlaGxzemVpbGUuIFp1bSBCZWlzcGllbDoKIU1FU1NBR0UgCiFNRVNTQUdFIE5NQUtFIC9mICJjanBlZy5tYWsiIENGRz0iY2pwZWcgLSBXaW4zMiIKIU1FU1NBR0UgCiFNRVNTQUdFIEb8ciBkaWUgS29uZmlndXJhdGlvbiBzdGVoZW4genVyIEF1c3dhaGw6CiFNRVNTQUdFIAohTUVTU0FHRSAiY2pwZWcgLSBXaW4zMiIgKGJhc2llcmVuZCBhdWYgICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKIU1FU1NBR0UgCiFFUlJPUiBFaW5lIHVuZ/xsdGlnZSBLb25maWd1cmF0aW9uIHd1cmRlIGFuZ2VnZWJlbi4KIUVORElGIAoKIUlGICIkKE9TKSIgPT0gIldpbmRvd3NfTlQiCk5VTEw9CiFFTFNFIApOVUxMPW51bAohRU5ESUYgCgpDUFA9Y2wuZXhlClJTQz1yYy5leGUKT1VURElSPS5cY2pwZWdcUmVsZWFzZQpJTlRESVI9LlxjanBlZ1xSZWxlYXNlCiMgQmVnaW4gQ3VzdG9tIE1hY3JvcwpPdXREaXI9LlxjanBlZ1xSZWxlYXNlCiMgRW5kIEN1c3RvbSBNYWNyb3MKCkFMTCA6ICIkKE9VVERJUilcY2pwZWcuZXhlIgoKCkNMRUFOIDoKCS1AZXJhc2UgIiQoSU5URElSKVxjZGpwZWcub2JqIgoJLUBlcmFzZSAiJChJTlRESVIpXGNqcGVnLm9iaiIKCS1AZXJhc2UgIiQoSU5URElSKVxyZGJtcC5vYmoiCgktQGVyYXNlICIkKElOVERJUilccmRnaWYub2JqIgoJLUBlcmFzZSAiJChJTlRESVIpXHJkcHBtLm9iaiIKCS1AZXJhc2UgIiQoSU5URElSKVxyZHJsZS5vYmoiCgktQGVyYXNlICIkKElOVERJUilccmRzd2l0Y2gub2JqIgoJLUBlcmFzZSAiJChJTlRESVIpXHJkdGFyZ2Eub2JqIgoJLUBlcmFzZSAiJChJTlRESVIpXHZjNjAuaWRiIgoJLUBlcmFzZSAiJChPVVRESVIpXGNqcGVnLmV4ZSIKCiIkKE9VVERJUikiIDoKICAgIGlmIG5vdCBleGlzdCAiJChPVVRESVIpLyQoTlVMTCkiIG1rZGlyICIkKE9VVERJUikiCgpCU0MzMj1ic2NtYWtlLmV4ZQpCU0MzMl9GTEFHUz0vbm9sb2dvIC9vIiQoT1VURElSKVxjanBlZy5ic2MiIApCU0MzMl9TQlJTPSBcCgkKTElOSzMyPWxpbmsuZXhlCkxJTkszMl9GTEFHUz1SZWxlYXNlXGpwZWcubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvcGRiOiIkKE9VVERJUilcY2pwZWcucGRiIiAvbWFjaGluZTpJMzg2IC9vdXQ6IiQoT1VURElSKVxjanBlZy5leGUiIApMSU5LMzJfT0JKUz0gXAoJIiQoSU5URElSKVxjZGpwZWcub2JqIiBcCgkiJChJTlRESVIpXGNqcGVnLm9iaiIgXAoJIiQoSU5URElSKVxyZGJtcC5vYmoiIFwKCSIkKElOVERJUilccmRnaWYub2JqIiBcCgkiJChJTlRESVIpXHJkcHBtLm9iaiIgXAoJIiQoSU5URElSKVxyZHJsZS5vYmoiIFwKCSIkKElOVERJUilccmRzd2l0Y2gub2JqIiBcCgkiJChJTlRESVIpXHJkdGFyZ2Eub2JqIgoKIiQoT1VURElSKVxjanBlZy5leGUiIDogIiQoT1VURElSKSIgJChERUZfRklMRSkgJChMSU5LMzJfT0JKUykKICAgICQoTElOSzMyKSBAPDwKICAkKExJTkszMl9GTEFHUykgJChMSU5LMzJfT0JKUykKPDwKCkNQUF9QUk9KPS9ub2xvZ28gL0c2IC9NVCAvVzMgL0dYIC9PeCAvT2EgL09iMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0ZwIiQoSU5URElSKVxjanBlZy5wY2giIC9ZWCAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCIgL0ZEIC9jIAoKLmN7JChJTlRESVIpfS5vYmo6OgogICAkKENQUCkgQDw8CiAgICQoQ1BQX1BST0opICQ8IAo8PAoKLmNwcHskKElOVERJUil9Lm9iajo6CiAgICQoQ1BQKSBAPDwKICAgJChDUFBfUFJPSikgJDwgCjw8CgouY3h4eyQoSU5URElSKX0ub2JqOjoKICAgJChDUFApIEA8PAogICAkKENQUF9QUk9KKSAkPCAKPDwKCi5jeyQoSU5URElSKX0uc2JyOjoKICAgJChDUFApIEA8PAogICAkKENQUF9QUk9KKSAkPCAKPDwKCi5jcHB7JChJTlRESVIpfS5zYnI6OgogICAkKENQUCkgQDw8CiAgICQoQ1BQX1BST0opICQ8IAo8PAoKLmN4eHskKElOVERJUil9LnNicjo6CiAgICQoQ1BQKSBAPDwKICAgJChDUFBfUFJPSikgJDwgCjw8CgoKIUlGICIkKE5PX0VYVEVSTkFMX0RFUFMpIiAhPSAiMSIKIUlGIEVYSVNUUygiY2pwZWcuZGVwIikKIUlOQ0xVREUgImNqcGVnLmRlcCIKIUVMU0UgCiFNRVNTQUdFIFdhcm5pbmc6IGNhbm5vdCBmaW5kICJjanBlZy5kZXAiCiFFTkRJRiAKIUVORElGIAoKCiFJRiAiJChDRkcpIiA9PSAiY2pwZWcgLSBXaW4zMiIKU09VUkNFPS5cY2RqcGVnLmMKCiIkKElOVERJUilcY2RqcGVnLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKCgpTT1VSQ0U9LlxjanBlZy5jCgoiJChJTlRESVIpXGNqcGVnLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKCgpTT1VSQ0U9LlxyZGJtcC5jCgoiJChJTlRESVIpXHJkYm1wLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKCgpTT1VSQ0U9LlxyZGdpZi5jCgoiJChJTlRESVIpXHJkZ2lmLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKCgpTT1VSQ0U9LlxyZHBwbS5jCgoiJChJTlRESVIpXHJkcHBtLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKCgpTT1VSQ0U9LlxyZHJsZS5jCgoiJChJTlRESVIpXHJkcmxlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKCgpTT1VSQ0U9LlxyZHN3aXRjaC5jCgoiJChJTlRESVIpXHJkc3dpdGNoLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKCgpTT1VSQ0U9LlxyZHRhcmdhLmMKCiIkKElOVERJUilccmR0YXJnYS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCgoKCiFFTkRJRiAKCg==