micro-bundle/.idea/AugmentWebviewStateStore.xml
2025-05-09 14:21:29 +08:00

10 lines
136 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AugmentWebviewStateStore">
<option name="stateMap">
<map>
<entry key="CHAT_STATE" value="eyJjdXJyZW50Q29udmVyc2F0aW9uSWQiOiI3MWYxY2U1YS0yYWM1LTQ2YzQtOWIyOS0wNGM1ZjEzYzgzOTkiLCJjb252ZXJzYXRpb25zIjp7IjFjOWI5YzFmLTg4NmYtNDViNy1hYTE3LTkxYWFkNDE2OGQzMCI6eyJpZCI6IjFjOWI5YzFmLTg4NmYtNDViNy1hYTE3LTkxYWFkNDE2OGQzMCIsImNyZWF0ZWRBdElzbyI6IjIwMjUtMDUtMDlUMDY6MDI6NTMuODU4WiIsImxhc3RJbnRlcmFjdGVkQXRJc28iOiIyMDI1LTA1LTA5VDA2OjAyOjUzLjg1OFoiLCJjaGF0SGlzdG9yeSI6W10sImZlZWRiYWNrU3RhdGVzIjp7fSwidG9vbFVzZVN0YXRlcyI6e30sImRyYWZ0RXhjaGFuZ2UiOnsicmVxdWVzdF9tZXNzYWdlIjoiIiwicmljaF90ZXh0X2pzb25fcmVwciI6eyJ0eXBlIjoiZG9jIiwiY29udGVudCI6W3sidHlwZSI6InBhcmFncmFwaCJ9XX0sInN0YXR1cyI6ImRyYWZ0In0sInJlcXVlc3RJZHMiOltdLCJpc1Bpbm5lZCI6ZmFsc2UsImlzU2hhcmVhYmxlIjpmYWxzZSwiZXh0cmFEYXRhIjp7Imhhc0RpcnR5RWRpdHMiOmZhbHNlfSwicGVyc29uYVR5cGUiOjB9LCI5ODcxM2E4Zi1jNzFkLTRkNjAtOTAyNC0xNjk0M2U1Nzc3ODciOnsiaWQiOiI5ODcxM2E4Zi1jNzFkLTRkNjAtOTAyNC0xNjk0M2U1Nzc3ODciLCJjcmVhdGVkQXRJc28iOiIyMDI1LTA1LTA5VDA2OjAyOjU0LjAwNVoiLCJsYXN0SW50ZXJhY3RlZEF0SXNvIjoiMjAyNS0wNS0wOVQwNjowMjo1NC4wMDVaIiwiY2hhdEhpc3RvcnkiOltdLCJmZWVkYmFja1N0YXRlcyI6e30sInRvb2xVc2VTdGF0ZXMiOnt9LCJkcmFmdEV4Y2hhbmdlIjp7InJlcXVlc3RfbWVzc2FnZSI6IiIsInJpY2hfdGV4dF9qc29uX3JlcHIiOnsidHlwZSI6ImRvYyIsImNvbnRlbnQiOlt7InR5cGUiOiJwYXJhZ3JhcGgifV19LCJzdGF0dXMiOiJkcmFmdCJ9LCJyZXF1ZXN0SWRzIjpbXSwiaXNQaW5uZWQiOmZhbHNlLCJpc1NoYXJlYWJsZSI6ZmFsc2UsImV4dHJhRGF0YSI6eyJoYXNEaXJ0eUVkaXRzIjpmYWxzZX0sInBlcnNvbmFUeXBlIjowfSwiNzFmMWNlNWEtMmFjNS00NmM0LTliMjktMDRjNWYxM2M4Mzk5Ijp7ImlkIjoiNzFmMWNlNWEtMmFjNS00NmM0LTliMjktMDRjNWYxM2M4Mzk5IiwibmFtZSI6IldlbGNvbWUgdG8gdGhlIEF1Z21lbnQgQWdlbnQiLCJjcmVhdGVkQXRJc28iOiIyMDI1LTA1LTA5VDA2OjAyOjU2LjU0OVoiLCJsYXN0SW50ZXJhY3RlZEF0SXNvIjoiMjAyNS0wNS0wOVQwNjoxNDo0Ny4zNjFaIiwiY2hhdEhpc3RvcnkiOlt7InJlcXVlc3RfaWQiOiJiMDk5YmJiZi0zODJmLTQzZjAtOThjZC04NTI4ZGQ2MzUzY2IiLCJ1dWlkIjoiYzQ0NWFkMTYtM2RmOC00YTQ0LTllYTMtNzA3ZmIzNTllYmFjIiwiY2hhdEl0ZW1UeXBlIjoiYWdlbnRpYy1jaGVja3BvaW50LWRlbGltaXRlciIsInN0YXR1cyI6InN1Y2Nlc3MiLCJmcm9tVGltZXN0YW1wIjowLCJ0b1RpbWVzdGFtcCI6MTc0Njc3MDU3NjU1MCwic2Vlbl9zdGF0ZSI6InNlZW4ifSx7InN0YXR1cyI6InN1Y2Nlc3MiLCJyZXF1ZXN0X2lkIjoiYjY3YjFkOTgtYTBlMi00MThlLTlmNjktYmYzODg1Mzg3MzI2IiwicmVxdWVzdF9tZXNzYWdlIjoiMTA2NCAtIFlvdSBoYXZlIGFuIGVycm9yIGluIHlvdXIgU1FMIHN5bnRheDsgY2hlY2sgdGhlIG1hbnVhbCB0aGF0IGNvcnJlc3BvbmRzIHRvIHlvdXIgTXlTUUwgc2VydmVyIHZlcnNpb24gZm9yIHRoZSByaWdodCBzeW50YXggdG8gdXNlIG5lYXIgJy1hY2NvdW50LnVzZXIgb24gbWljcm8tYWNjb3VudC51c2VyLmlkID0gYnVuZGxlX29yZGVyX3JlY29yZHNjdXN0b21lcl9pZCBXSEVSRSBgJyBhdCBsaW5lIDEgIOaAjuS5iOino+WGsyIsInJpY2hfdGV4dF9qc29uX3JlcHIiOnsidHlwZSI6ImRvYyIsImNvbnRlbnQiOlt7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIxMDY0IC0gWW91IGhhdmUgYW4gZXJyb3IgaW4geW91ciBTUUwgc3ludGF4OyBjaGVjayB0aGUgbWFudWFsIHRoYXQgY29ycmVzcG9uZHMgdG8geW91ciBNeVNRTCBzZXJ2ZXIgdmVyc2lvbiBmb3IgdGhlIHJpZ2h0IHN5bnRheCB0byB1c2UgbmVhciAnLWFjY291bnQudXNlciBvbiBtaWNyby1hY2NvdW50LnVzZXIuaWQgPSBidW5kbGVfb3JkZXJfcmVjb3Jkc2N1c3RvbWVyX2lkIFdIRVJFIGAnIGF0IGxpbmUgMSAg5oCO5LmI6Kej5YazIn1dfV19LCJtZW50aW9uZWRfaXRlbXMiOltdLCJzdHJ1Y3R1cmVkX291dHB1dF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjUsImNvbnRlbnQiOiIiLCJ0b29sX3VzZSI6eyJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDFTRkd1dWFzdXZoekpqZFBBR2N6N01uIiwidG9vbF9uYW1lIjoiY29kZWJhc2UtcmV0cmlldmFsIiwiaW5wdXRfanNvbiI6IntcImluZm9ybWF0aW9uX3JlcXVlc3RcIjogXCJGaW5kIHRoZSBTUUwgcXVlcnkgaW4gaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nbyB0aGF0IG1pZ2h0IGJlIGNhdXNpbmcgdGhlIGVycm9yIHJlbGF0ZWQgdG8gXFxcImJ1bmRsZV9vcmRlcl9yZWNvcmRzXFxcIiBhbmQgXFxcIm1pY3JvLWFjY291bnQudXNlclxcXCJcIn0iLCJtY3Bfc2VydmVyX25hbWUiOiIiLCJtY3BfdG9vbF9uYW1lIjoiIn19LHsiaWQiOjAsInR5cGUiOjAsImNvbnRlbnQiOiJJdCBsb29rcyBsaWtlIHlvdSdyZSBlbmNvdW50ZXJpbmcgYSBTUUwgc3ludGF4IGVycm9yIGluIHlvdXIgYXBwbGljYXRpb24uIExldCBtZSBoZWxwIHlvdSB0cm91Ymxlc2hvb3QgdGhpcyBpc3N1ZS5cblxuRmlyc3QsIEknbGwgZ2F0aGVyIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvZGUgdGhhdCBtaWdodCBiZSBjYXVzaW5nIHRoaXMgZXJyb3IuXG4ifSx7ImlkIjoyLCJ0eXBlIjoyLCJjb250ZW50IjoiIn0seyJpZCI6MywidHlwZSI6MywiY29udGVudCI6IiJ9XSwic2Vlbl9zdGF0ZSI6InNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjowLCJ0ZXh0X25vZGUiOnsiY29udGVudCI6IjEwNjQgLSBZb3UgaGF2ZSBhbiBlcnJvciBpbiB5b3VyIFNRTCBzeW50YXg7IGNoZWNrIHRoZSBtYW51YWwgdGhhdCBjb3JyZXNwb25kcyB0byB5b3VyIE15U1FMIHNlcnZlciB2ZXJzaW9uIGZvciB0aGUgcmlnaHQgc3ludGF4IHRvIHVzZSBuZWFyICctYWNjb3VudC51c2VyIG9uIG1pY3JvLWFjY291bnQudXNlci5pZCA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzY3VzdG9tZXJfaWQgV0hFUkUgYCcgYXQgbGluZSAxICDmgI7kuYjop6PlhrMifX0seyJpZCI6MiwidHlwZSI6NCwiaWRlX3N0YXRlX25vZGUiOnsid29ya3NwYWNlRm9sZGVycyI6W3sicmVwb3NpdG9yeVJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUiLCJmb2xkZXJSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIn1dLCJ3b3Jrc3BhY2VGb2xkZXJzVW5jaGFuZ2VkIjpmYWxzZX19XSwidGltZXN0YW1wIjoiMjAyNS0wNS0wOVQwNjowMzowMS4xOTZaIiwicmVzcG9uc2VfdGV4dCI6Ikl0IGxvb2tzIGxpa2UgeW91J3JlIGVuY291bnRlcmluZyBhIFNRTCBzeW50YXggZXJyb3IgaW4geW91ciBhcHBsaWNhdGlvbi4gTGV0IG1lIGhlbHAgeW91IHRyb3VibGVzaG9vdCB0aGlzIGlzc3VlLlxuXG5GaXJzdCwgSSdsbCBnYXRoZXIgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29kZSB0aGF0IG1pZ2h0IGJlIGNhdXNpbmcgdGhpcyBlcnJvci5cbiIsIndvcmtzcGFjZV9maWxlX2NodW5rcyI6W119LHsic3RhdHVzIjoic3VjY2VzcyIsInJlcXVlc3RfaWQiOiJlMzVlNzI2Ni00Yjk3LTRhM2ItYTU0Ni1hN2FjOTdlNThjMGIiLCJyZXF1ZXN0X21lc3NhZ2UiOiIiLCJzdHJ1Y3R1cmVkX291dHB1dF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjUsImNvbnRlbnQiOiIiLCJ0b29sX3VzZSI6eyJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDFOUkdwc1RKVVZvTmk0TmtiZmI4UGNzIiwidG9vbF9uYW1lIjoic3RyLXJlcGxhY2UtZWRpdG9yIiwiaW5wdXRfanNvbiI6IntcImNvbW1hbmRcIjogXCJ2aWV3XCIsIFwicGF0aFwiOiBcImludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ29cIiwgXCJ2aWV3X3JhbmdlXCI6IFs3MCwgOTBdfSIsIm1jcF9zZXJ2ZXJfbmFtZSI6IiIsIm1jcF90b29sX25hbWUiOiIifX0seyJpZCI6MCwidHlwZSI6MCwiY29udGVudCI6IkkgY2FuIHNlZSB0aGUgaXNzdWUgaW4geW91ciBTUUwgcXVlcnkuIFRoZSBlcnJvciBpcyBvY2N1cnJpbmcgaW4gdGhlIGBPcmRlclJlY29yZHNMaXN0YCBmdW5jdGlvbiBpbiBgaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nb2AuIExldCBtZSBleGFtaW5lIHRoZSBwcm9ibGVtYXRpYyBTUUwgam9pbiBzdGF0ZW1lbnQgbW9yZSBjbG9zZWx5OlxuIn0seyJpZCI6MiwidHlwZSI6MiwiY29udGVudCI6IiJ9LHsiaWQiOjMsInR5cGUiOjMsImNvbnRlbnQiOiIifV0sInNlZW5fc3RhdGUiOiJzZWVuIiwic3RydWN0dXJlZF9yZXF1ZXN0X25vZGVzIjpbeyJpZCI6MSwidHlwZSI6MSwidG9vbF9yZXN1bHRfbm9kZSI6eyJjb250ZW50IjoiVGhlIGZvbGxvd2luZyBjb2RlIHNlY3Rpb25zIHdlcmUgcmV0cmlldmVkOlxuUGF0aDogaW50ZXJuYWwvZGFvL3ZhbHVlQWRkQnVuZGxlRGFvLmdvXG5wYWNrYWdlIGRhb1xuXG5pbXBvcnQgKFxuXHRcIm1pY3JvLWJ1bmRsZS9pbnRlcm5hbC9tb2RlbFwiXG5cdFwibWljcm8tYnVuZGxlL3BrZy9hcHBcIlxuKVxuXG4vLyDlop7lgLzlpZfppJDliJvlu7pcbmZ1bmMgQ3JlYXRlVmFsdWVBZGRCdW5kbGUocmVxICptb2RlbC5WYWx1ZUFkZEJ1bmRsZVByb2ZpbGUpIChlcnIgZXJyb3IpIHtcblx0ZXJyID0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLlZhbHVlQWRkQnVuZGxlUHJvZmlsZXt9KS5DcmVhdGUoJnJlcSkuRXJyb3Jcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmV0dXJuXG5cdH1cblxuXHRyZXR1cm5cbn1cblxuLy8g5aKe5YC85aWX6aSQ5YiX6KGoXG5mdW5jIFZhbHVlQWRkQnVuZGxlTGlzdChwcmljZVR5cGUgaW50MzIpICh2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUgW10qbW9kZWwuVmFsdWVBZGRCdW5kbGVQcm9maWxlLCBlcnIgZXJyb3IpIHtcblx0ZXJyID0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuV2hlcmUoXCJwcmljZV90eXBlID0gP1wiLCBwcmljZVR5cGUpLk9yZGVyKFwibnVtIEFTQ1wiKS5GaW5kKCZ2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUpLkVycm9yXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJldHVyblxuXHR9XG5cdHJldHVyblxufVxuXG4vLyDlop7lgLzlpZfppJDor6bmg4VcbmZ1bmMgVmFsdWVBZGRCdW5kbGVEZXRhaWwodXVpZCBzdHJpbmcpICh2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUgKm1vZGVsLlZhbHVlQWRkQnVuZGxlUHJvZmlsZSwgZXJyIGVycm9yKSB7XG5cblx0ZXJyID0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuV2hlcmUoXCJ1dWlkID0gP1wiLCB1dWlkKS5GaXJzdCgmdmFsdWVBZGRCdW5kbGVQcm9maWxlKS5FcnJvclxuXHRpZiBlcnIgIT0gbmlsIHtcblx0XHRyZXR1cm5cblx0fVxuXG5cdHJldHVyblxufVxuXG5mdW5jIEJ1bmRsZVByb2ZpbGVEZXRhaWwodXVpZCBzdHJpbmcpIChidW5kbGVQcm9maWxlICptb2RlbC5CdW5kbGVQcm9maWxlLCBlcnIgZXJyb3IpIHtcblx0ZXJyID0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuV2hlcmUoXCJ1dWlkID0gP1wiLCB1dWlkKS5GaXJzdCgmYnVuZGxlUHJvZmlsZSkuRXJyb3Jcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmV0dXJuXG5cdH1cblxuXHRyZXR1cm5cbn1cblxuZnVuYyBCdW5kbGVPcmRlclJlY29yZHNEZXRhaWxCeUFkZFVpZCh1dWlkIHN0cmluZykgKGJ1bmRsZU9yZGVyUmVjb3JkcyAqbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzLCBlcnIgZXJyb3IpIHtcblxuXHRlcnIgPSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5XaGVyZShcInZhbHVlX2FkZF9idW5kbGVfdXVpZCA9ID9cIiwgdXVpZCkuRmlyc3QoJmJ1bmRsZU9yZGVyUmVjb3JkcykuRXJyb3Jcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmV0dXJuXG5cdH1cblxuXHRyZXR1cm5cbn1cblxuZnVuYyBHZXRCdW5kbGVPcmRlclJlY29yZHNCeVVzZXJJZEFuZEJ1bmRsZVV1aWQodXNlcklkIGludDMyLCB1dWlkIHN0cmluZykgKGJ1bmRsZU9yZGVyUmVjb3JkcyAqbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzLCBlcnIgZXJyb3IpIHtcblxuXHRlcnIgPSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5XaGVyZShcImN1c3RvbWVyX2lkID0gPyBBTkQgYnVuZGxlX3V1aWQgPSA/XCIsIHVzZXJJZCwgdXVpZCkuRmlyc3QoJmJ1bmRsZU9yZGVyUmVjb3JkcykuRXJyb3Jcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmV0dXJuXG5cdH1cblxuXHRyZXR1cm5cbn1cblxuZnVuYyBHZXRCdW5kbGVPcmRlclJlY29yZHNCeUNvbW1vblVpZEFuZFVzZXJJZChjb21tb25VaWQgc3RyaW5nLCB1c2VySWQgaW50MzIpIChidW5kbGVPcmRlclJlY29yZHMgKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcywgZXJyIGVycm9yKSB7XG5cblx0ZXJyID0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuV2hlcmUoXCJidW5kbGVfY29tbW9uX3VpZCA9ID8gQU5EIGN1c3RvbWVyX2lkID0gP1wiLCBjb21tb25VaWQsIHVzZXJJZCkuRmlyc3QoJmJ1bmRsZU9yZGVyUmVjb3JkcykuRXJyb3Jcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmV0dXJuXG5cdH1cblxuXHRyZXR1cm5cbn1cbi4uLlxuUGF0aDogaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nb1xucGFja2FnZSBkYW9cblxuaW1wb3J0IChcblx0XCJtaWNyby1idW5kbGUvaW50ZXJuYWwvbW9kZWxcIlxuXHRcIm1pY3JvLWJ1bmRsZS9wYi9idW5kbGVcIlxuXHRcIm1pY3JvLWJ1bmRsZS9wa2cvYXBwXCJcblx0Y29tbW9uRXJyIFwibWljcm8tYnVuZGxlL3BrZy9lcnJcIlxuXHRcIm1pY3JvLWJ1bmRsZS9wa2cvbXNnXCJcblx0XCJtaWNyby1idW5kbGUvcGtnL3V0aWxzXCJcbilcblxuZnVuYyBDcmVhdGVPcmRlclJlY29yZChvcmRlclJlY29yZCAqbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzKSAocmVzICpidW5kbGUuQ29tbW9uUmVzcG9uc2UsIGVyciBlcnJvcikge1xuXHRyZXMgPSBuZXcoYnVuZGxlLkNvbW1vblJlc3BvbnNlKVxuXHRvcmRlclJlY29yZC5VVUlEID0gYXBwLk1vZHVsZUNsaWVudHMuU2ZOb2RlLkdlbmVyYXRlKCkuQmFzZTY0KClcblx0b3JkZXJSZWNvcmQuT3JkZXJObyA9IHV0aWxzLkdldE9yZGVyTm8oKVxuXG5cdC8vIOW8gOWQr+S6i+WKoVxuXHR0eCA6PSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5CZWdpbigpXG5cdGRlZmVyIGZ1bmMoKSB7XG5cdFx0aWYgciA6PSByZWNvdmVyKCk7IHIgIT0gbmlsIHtcblx0XHRcdHR4LlJvbGxiYWNrKClcblx0XHR9XG5cdH0oKVxuXG5cdC8vIOWIm+W7uuS4u+iuouWNlVxuXHRpZiBlcnIgPSB0eC5Nb2RlbCgmbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRze30pLkNyZWF0ZSgmb3JkZXJSZWNvcmQpLkVycm9yOyBlcnIgIT0gbmlsIHtcblx0XHR0eC5Sb2xsYmFjaygpXG5cdFx0cmVzLk1zZyA9IG1zZy5FcnJvckNyZWF0ZU9yZGVySW5mb1xuXHRcdHJldHVybiByZXMsIGNvbW1vbkVyci5SZXR1cm5FcnJvcihlcnIsIG1zZy5FcnJvckNyZWF0ZU9yZGVySW5mbywgXCLliJvlu7rorqLljZXkv6Hmga/lpLHotKU6IFwiKVxuXHR9XG5cblx0Ly8g5o+Q5Lqk5LqL5YqhXG5cdGlmIGVyciA9IHR4LkNvbW1pdCgpLkVycm9yOyBlcnIgIT0gbmlsIHtcblx0XHRyZXMuTXNnID0gbXNnLkVycm9yQ29tbWl0VHJhbnNhY3Rpb25cblx0XHRyZXR1cm4gcmVzLCBjb21tb25FcnIuUmV0dXJuRXJyb3IoZXJyLCBtc2cuRXJyb3JDb21taXRUcmFuc2FjdGlvbiwgXCLmj5DkuqTkuovliqHlpLHotKU6IFwiKVxuXHR9XG5cblx0cmVzLlV1aWQgPSBvcmRlclJlY29yZC5VVUlEXG5cdHJlcy5PcmRlck5vID0gb3JkZXJSZWNvcmQuT3JkZXJOb1xuXHRyZXMuTXNnID0gbXNnLlN1Y2Nlc3NDcmVhdGVPcmRlckluZm9cblx0cmV0dXJuXG59XG5cbmZ1bmMgVXBkYXRlT3JkZXJSZWNvcmQob3JkZXJSZWNvcmQgKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcykgKHJlcyAqYnVuZGxlLkNvbW1vblJlc3BvbnNlLCBlcnIgZXJyb3IpIHtcblx0cmVzID0gbmV3KGJ1bmRsZS5Db21tb25SZXNwb25zZSlcblx0ZXJyID0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9KS5XaGVyZShcInV1aWQgPSA/XCIsIG9yZGVyUmVjb3JkLlVVSUQpLlVwZGF0ZXMob3JkZXJSZWNvcmQpLkVycm9yXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJlcy5Nc2cgPSBtc2cuRXJyb3JVcGRhdGVPcmRlckluZm9cblx0XHRyZXR1cm4gcmVzLCBjb21tb25FcnIuUmV0dXJuRXJyb3IoZXJyLCBtc2cuRXJyb3JVcGRhdGVPcmRlckluZm8sIFwi5pu05paw6K6i5Y2V5L+h5oGv5aSx6LSlOiBcIilcblx0fVxuXHRyZXMuVXVpZCA9IG9yZGVyUmVjb3JkLlVVSURcblx0cmVzLk1zZyA9IG1zZy5TdWNjZXNzVXBkYXRlT3JkZXJJbmZvXG5cdHJldHVyblxufVxuXG5mdW5jIFVwZGF0ZU9yZGVyUmVjb3JkQnlPcmRlck5PKG9yZGVyUmVjb3JkICptb2RlbC5CdW5kbGVPcmRlclJlY29yZHMpIChyZXMgKmJ1bmRsZS5Db21tb25SZXNwb25zZSwgZXJyIGVycm9yKSB7XG5cdHJlcyA9IG5ldyhidW5kbGUuQ29tbW9uUmVzcG9uc2UpXG5cdGVyciA9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLk1vZGVsKCZtb2RlbC5CdW5kbGVPcmRlclJlY29yZHN7fSkuV2hlcmUoXCJvcmRlcl9ubyA9ID9cIiwgb3JkZXJSZWNvcmQuT3JkZXJObykuVXBkYXRlcyhvcmRlclJlY29yZCkuRXJyb3Jcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmVzLk1zZyA9IG1zZy5FcnJvclVwZGF0ZU9yZGVySW5mb1xuXHRcdHJldHVybiByZXMsIGNvbW1vbkVyci5SZXR1cm5FcnJvcihlcnIsIG1zZy5FcnJvclVwZGF0ZU9yZGVySW5mbywgXCLmm7TmlrDorqLljZXkv6Hmga/lpLHotKU6IFwiKVxuXHR9XG5cdHJlcy5VdWlkID0gb3JkZXJSZWNvcmQuVVVJRFxuXHRyZXMuTXNnID0gbXNnLlN1Y2Nlc3NVcGRhdGVPcmRlckluZm9cblx0cmV0dXJuXG59XG5cbmZ1bmMgT3JkZXJSZWNvcmRzTGlzdChyZXEgKmJ1bmRsZS5PcmRlclJlY29yZHNSZXF1ZXN0KSAocmVzICpidW5kbGUuT3JkZXJSZWNvcmRzUmVzcG9uc2UsIGVyciBlcnJvcikge1xuXHRyZXMgPSBuZXcoYnVuZGxlLk9yZGVyUmVjb3Jkc1Jlc3BvbnNlKVxuXHRyZXMuT3JkZXJSZWNvcmRzID0gbWFrZShbXSpidW5kbGUuT3JkZXJSZWNvcmQsIDApXG5cdHJlY29yZHMgOj0gbWFrZShbXSptb2RlbC5CdW5kbGVPcmRlclJlY29yZHMsIDApXG5cblx0cXVlcnkgOj0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9KVxuXG5cdHF1ZXJ5LkpvaW5zKFwibGVmdCBqb2luIG1pY3JvX2FjY291bnQudXNlciBvbiBtaWNyb19hY2NvdW50LnVzZXIuaWQgPSBidW5kbGVfb3JkZXJfcmVjb3Jkcy5jdXN0b21lcl9pZFwiKVxuXG5cdGlmIHJlcS5DdXN0b21lcklEICE9IFwiXCIge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9pZCA9ID9cIiwgcmVxLkN1c3RvbWVySUQpXG5cdH1cblxuXHRpZiByZXEuQ3VzdG9tZXJOdW0gIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImN1c3RvbWVyX251bSBsaWtlID9cIiwgXCIlXCIrcmVxLkN1c3RvbWVyTnVtK1wiJVwiKVxuXHR9XG5cblx0aWYgcmVxLkN1c3RvbWVyTmFtZSAhPSBcIlwiIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiY3VzdG9tZXJfbmFtZSBsaWtlID9cIiwgXCIlXCIrcmVxLkN1c3RvbWVyTmFtZStcIiVcIilcblx0fVxuXG5cdGlmIHJlcS5CdW5kbGVOYW1lICE9IFwiXCIge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJidW5kbGVfbmFtZSBsaWtlID9cIiwgXCIlXCIrcmVxLkJ1bmRsZU5hbWUrXCIlXCIpXG5cdH1cblxuXHRpZiByZXEuQnVuZGxlVVVJRCAhPSBcIlwiIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiYnVuZGxlX3V1aWQgPSA/XCIsIHJlcS5CdW5kbGVVVUlEKVxuXHR9XG5cblx0aWYgcmVxLk9yZGVyTm8gIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcIm9yZGVyX25vIGxpa2UgP1wiLCBcIiVcIityZXEuT3JkZXJObytcIiVcIilcblx0fVxuXG5cdGlmIHJlcS5TdGF0dXMgIT0gMCB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcInN0YXR1cyA9ID9cIiwgcmVxLlN0YXR1cylcblx0fVxuXG5cdGlmIHJlcS5TdGFydFNpZ25lZFRpbWUgIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcInNpZ25lZF90aW1lID49ID9cIiwgcmVxLlN0YXJ0U2lnbmVkVGltZSlcblx0fVxuXG5cdGlmIHJlcS5FbmRTaWduZWRUaW1lICE9IFwiXCIge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJzaWduZWRfdGltZSA8PSA/XCIsIHJlcS5FbmRTaWduZWRUaW1lKVxuXHR9XG5cblx0aWYgcmVxLlN0YXJ0UGF5VGltZSAhPSBcIlwiIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwicGF5X3RpbWUgPj0gP1wiLCByZXEuU3RhcnRQYXlUaW1lKVxuXHR9XG5cblx0aWYgcmVxLkVuZFBheVRpbWUgIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcInBheV90aW1lIDw9ID9cIiwgcmVxLkVuZFBheVRpbWUpXG5cdH1cblxuXHRpZiByZXEuSXNIYXZlVmFsdWVBZGQgPT0gMSB7IC8vIOaciVxuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJ2YWx1ZV9hZGRfYnVuZGxlX3V1aWQgIT0gP1wiLCBcIlwiKVxuXHR9IGVsc2UgaWYgcmVxLklzSGF2ZVZhbHVlQWRkID09IDIgeyAvLyDml6Bcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiSUZOVUxMKHZhbHVlX2FkZF9idW5kbGVfdXVpZCwnJykgPSAnJ1wiKVxuXHR9XG5cblx0aWYgcmVxLkZpbmFuY2lhbENvbmZpcm1hdGlvbiAhPSAwIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiZmluYW5jaWFsX2NvbmZpcm1hdGlvbiA9ID9cIiwgcmVxLkZpbmFuY2lhbENvbmZpcm1hdGlvbilcblx0fVxuXG5cdGlmIHJlcS5UZWxOdW0gIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcIm1pY3JvX2FjY291bnQudXNlci50ZWxfbnVtIGxpa2UgP1wiLCBcIiVcIityZXEuVGVsTnVtK1wiJVwiKVxuXHR9XG5cblx0Y291bnQgOj0gKnF1ZXJ5XG5cblx0aWYgcmVxLlBhZ2VTaXplICE9IDAgJiYgcmVxLlBhZ2UgIT0gMCB7XG5cdFx0cXVlcnkgPSBxdWVyeS5MaW1pdChpbnQocmVxLlBhZ2VTaXplKSkuT2Zmc2V0KGludChyZXEuUGFnZS0xKSAqIGludChyZXEuUGFnZVNpemUpKVxuXHR9XG5cblx0ZXJyID0gcXVlcnkuRmluZCgmcmVjb3JkcykuRXJyb3JcblxuXHRpZiBlcnIgIT0gbmlsIHtcblx0XHRyZXR1cm4gcmVzLCBjb21tb25FcnIuUmV0dXJuRXJyb3IoZXJyLCBtc2cuRXJyb3JHZXRPcmRlckxpc3QsIFwi6I635Y+W6K6i5Y2V5L+h5oGv5aSx6LSlOiBcIilcblx0fVxuXG5cdC8vXyA9IGNvcGllci5Db3B5V2l0aE9wdGlvbigmcmVzLk9yZGVyUmVjb3JkcywgcmVjb3JkcywgY29waWVyLk9wdGlvbntEZWVwQ29weTogdHJ1ZX0pXG5cblx0Zm9yIF8sIHJlY29yZCA6PSByYW5nZSByZWNvcmRzIHtcblx0XHRyZXMuT3JkZXJSZWNvcmRzID0gYXBwZW5kKHJlcy5PcmRlclJlY29yZHMsICZidW5kbGUuT3JkZXJSZWNvcmR7XG5cdFx0XHRVdWlkOiAgICAgICAgICAgICAgICAgIHJlY29yZC5VVUlELFxuXHRcdFx0T3JkZXJObzogICAgICAgICAgICAgICByZWNvcmQuT3JkZXJObyxcblx0XHRcdEJ1bmRsZVV1aWQ6ICAgICAgICAgICAgcmVjb3JkLkJ1bmRsZVVVSUQsXG5cdFx0XHRCdW5kbGVOYW1lOiAgICAgICAgICAgIHJlY29yZC5CdW5kbGVOYW1lLFxuXHRcdFx0Q3VzdG9tZXJJRDogICAgICAgICAgICByZWNvcmQuQ3VzdG9tZXJJRCxcblx0XHRcdEN1c3RvbWVyTnVtOiAgICAgICAgICAgcmVjb3JkLkN1c3RvbWVyTnVtLFxuXHRcdFx0Q3VzdG9tZXJOYW1lOiAgICAgICAgICByZWNvcmQuQ3VzdG9tZXJOYW1lLFxuXHRcdFx0QW1vdW50OiAgICAgICAgICAgICAgICByZWNvcmQuQW1vdW50LFxuXHRcdFx0QW1vdW50VHlwZTogICAgICAgICAgICByZWNvcmQuQW1vdW50VHlwZSxcblx0XHRcdFNpZ25Db250cmFjdDogICAgICAgICAgcmVjb3JkLlNpZ25Db250cmFjdCxcblx0XHRcdFNpZ25hdHVyZTogICAgICAgICAgICAgcmVjb3JkLlNpZ25hdHVyZSxcblx0XHRcdFNpZ25lZFRpbWU6ICAgICAgICAgICAgcmVjb3JkLlNpZ25lZFRpbWUsXG5cdFx0XHRQYXlUeXBlOiAgICAgICAgICAgICAgIHJlY29yZC5QYXlUeXBlLFxuXHRcdFx0UGF5VGltZTogICAgICAgICAgICAgICByZWNvcmQuUGF5VGltZSxcblx0XHRcdENoZWNrb3V0U2Vzc2lvbklkOiAgICAgcmVjb3JkLkNoZWNrb3V0U2Vzc2lvbklkLFxuXHRcdFx0Q2hlY2tvdXRTZXNzaW9uVXJsOiAgICByZWNvcmQuQ2hlY2tvdXRTZXNzaW9uVXJsLFxuXHRcdFx0U3RhdHVzOiAgICAgICAgICAgICAgICByZWNvcmQuU3RhdHVzLFxuXHRcdFx0Q29udHJhY3RObzogICAgICAgICAgICByZWNvcmQuQ29udHJhY3RObyxcblx0XHRcdFZhbHVlQWRkQnVuZGxlVXVpZDogICAgcmVjb3JkLlZhbHVlQWRkQnVuZGxlVVVJRCxcblx0XHRcdFZhbHVlQWRkQnVuZGxlQW1vdW50OiAgcmVjb3JkLlZhbHVlQWRkQnVuZGxlQW1vdW50LFxuXHRcdFx0VmFsdWVBZGRPcmlnaW5hbFByaWNlOiByZWNvcmQuVmFsdWVBZGRPcmlnaW5hbFByaWNlLFxuXHRcdFx0VmFsdWVBZGREaXNjb3VudFByaWNlOiByZWNvcmQuVmFsdWVBZGREaXNjb3VudFByaWNlLFxuXHRcdFx0VmFsdWVBZGRTYXZlZEFtb3VudDogICByZWNvcmQuVmFsdWVBZGRTYXZlZEFtb3VudCxcblx0XHRcdFRvdGFsQW1vdW50OiAgICAgICAgICAgcmVjb3JkLlRvdGFsQW1vdW50LFxuXHRcdFx0TnVtOiAgICAgICAgICAgICAgICAgICByZWNvcmQuTnVtLFxuXHRcdFx0QnVuZGxlQ29tbW9uVWlkOiAgICAgICByZWNvcmQuQnVuZGxlQ29tbW9uVWlkLFxuXHRcdFx0QWRkQnVuZGxlQ29tbW9uVWlkOiAgICByZWNvcmQuQWRkQnVuZGxlQ29tbW9uVWlkLFxuXHRcdH0pXG5cdH1cblxuXHR2YXIgdG90YWwgaW50NjRcblxuXHRjb3VudC5Db3VudCgmdG90YWwpXG5cblx0cmVzLlRvdGFsID0gaW50MzIodG90YWwpXG5cblx0cmV0dXJuXG59XG5cbmZ1bmMgT3JkZXJSZWNvcmREZXRhaWwocmVxICpidW5kbGUuT3JkZXJSZWNvcmRzRGV0YWlsUmVxdWVzdCkgKHJlcyAqYnVuZGxlLk9yZGVyUmVjb3JkLCBlcnIgZXJyb3IpIHtcblx0cmVzID0gbmV3KGJ1bmRsZS5PcmRlclJlY29yZClcblx0b3JkZXJSZWNvcmQgOj0gbmV3KG1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcylcblxuXHRxdWVyeSA6PSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5Nb2RlbCgmbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRze30pXG5cblx0aWYgcmVxLlV1aWQgIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcInV1aWQgPSA/XCIsIHJlcS5VdWlkKVxuXHR9XG5cblx0aWYgcmVxLk9yZGVyTm8gIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcIm9yZGVyX25vID0gP1wiLCByZXEuT3JkZXJObylcblx0fVxuXG5cdGlmIHJlcS5DdXN0b21lcklEICE9IFwiXCIge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9pZCA9ID9cIiwgcmVxLkN1c3RvbWVySUQpXG5cdH1cblxuXHRlcnIgPSBxdWVyeS5GaXJzdCgmb3JkZXJSZWNvcmQpLkVycm9yXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJldHVybiByZXMsIGNvbW1vbkVyci5SZXR1cm5FcnJvcihlcnIsIG1zZy5FcnJvckdldE9yZGVySW5mbywgXCLojrflj5borqLljZXkv6Hmga/lpLHotKU6IFwiKVxuXHR9XG5cdC8vXyA9IGNvcGllci5Db3B5V2l0aE9wdGlvbigmcmVzLCBvcmRlclJlY29yZCwgY29waWVyLk9wdGlvbntEZWVwQ29weTogdHJ1ZX0pXG5cblx0cmVzID0gJmJ1bmRsZS5PcmRlclJlY29yZHtcblx0XHRVdWlkOiAgICAgICAgICAgICAgICAgb3JkZXJSZWNvcmQuVVVJRCxcblx0XHRPcmRlck5vOiAgICAgICAgICAgICAgb3JkZXJSZWNvcmQuT3JkZXJObyxcblx0XHRCdW5kbGVVdWlkOiAgICAgICAgICAgb3JkZXJSZWNvcmQuQnVuZGxlVVVJRCxcblx0XHRCdW5kbGVOYW1lOiAgICAgICAgICAgb3JkZXJSZWNvcmQuQnVuZGxlTmFtZSxcblx0XHRDdXN0b21lcklEOiAgICAgICAgICAgb3JkZXJSZWNvcmQuQ3VzdG9tZXJJRCxcblx0XHRDdXN0b21lck51bTogICAgICAgICAgb3JkZXJSZWNvcmQuQ3VzdG9tZXJOdW0sXG5cdFx0Q3VzdG9tZXJOYW1lOiAgICAgICAgIG9yZGVyUmVjb3JkLkN1c3RvbWVyTmFtZSxcblx0XHRBbW91bnQ6ICAgICAgICAgICAgICAgb3JkZXJSZWNvcmQuQW1vdW50LFxuXHRcdEFtb3VudFR5cGU6ICAgICAgICAgICBvcmRlclJlY29yZC5BbW91bnRUeXBlLFxuXHRcdFNpZ25Db250cmFjdDogICAgICAgICBvcmRlclJlY29yZC5TaWduQ29udHJhY3QsXG5cdFx0U2lnbmF0dXJlOiAgICAgICAgICAgIG9yZGVyUmVjb3JkLlNpZ25hdHVyZSxcblx0XHRTaWduZWRUaW1lOiAgICAgICAgICAgb3JkZXJSZWNvcmQuU2lnbmVkVGltZSxcblx0XHRQYXlUeXBlOiAgICAgICAgICAgICAgb3JkZXJSZWNvcmQuUGF5VHlwZSxcblx0XHRQYXlUaW1lOiAgICAgICAgICAgICAgb3JkZXJSZWNvcmQuUGF5VGltZSxcblx0XHRDaGVja291dFNlc3Npb25JZDogICAgb3JkZXJSZWNvcmQuQ2hlY2tvdXRTZXNzaW9uSWQsXG5cdFx0Q2hlY2tvdXRTZXNzaW9uVXJsOiAgIG9yZGVyUmVjb3JkLkNoZWNrb3V0U2Vzc2lvblVybCxcblx0XHRTdGF0dXM6ICAgICAgICAgICAgICAgb3JkZXJSZWNvcmQuU3RhdHVzLFxuXHRcdENvbnRyYWN0Tm86ICAgICAgICAgICBvcmRlclJlY29yZC5Db250cmFjdE5vLFxuXHRcdFZhbHVlQWRkQnVuZGxlVXVpZDogICBvcmRlclJlY29yZC5WYWx1ZUFkZEJ1bmRsZVVVSUQsXG5cdFx0VmFsdWVBZGRCdW5kbGVBbW91bnQ6IG9yZGVyUmVjb3JkLlZhbHVlQWRkQnVuZGxlQW1vdW50LFxuXHRcdFRvdGFsQW1vdW50OiAgICAgICAgICBvcmRlclJlY29yZC5Ub3RhbEFtb3VudCxcblx0fVxuXHRyZXR1cm5cbn1cbi4uLlxuUGF0aDogaW50ZXJuYWwvbW9kZWwvYnVuZGxlX29yZGVyX3JlY29yZHMuZ29cbnBhY2thZ2UgbW9kZWxcblxuaW1wb3J0IFwiZ29ybS5pby9nb3JtXCJcblxuLy8gQnVuZGxlT3JkZXJSZWNvcmRzIHN0cnVjdFxudHlwZSBCdW5kbGVPcmRlclJlY29yZHMgc3RydWN0IHtcblx0Z29ybS5Nb2RlbFxuXHRVVUlEICAgICAgICAgICAgICAgICAgc3RyaW5nICBganNvbjpcInV1aWRcIiBnb3JtOlwiY29sdW1uOnV1aWQ7dHlwZTp2YXJjaGFyKDEwMjQpO2NvbW1lbnQ6VVVJRFwiYFxuXHRPcmRlck5vICAgICAgICAgICAgICAgc3RyaW5nICBganNvbjpcIm9yZGVyTm9cIiBnb3JtOlwiY29sdW1uOm9yZGVyX25vO3R5cGU6dmFyY2hhcigxMDI0KTtjb21tZW50OuS6pOaYk+e8luWPt1wiYFxuXHRCdW5kbGVVVUlEICAgICAgICAgICAgc3RyaW5nICBganNvbjpcImJ1bmRsZVVVSURcIiBnb3JtOlwiY29sdW1uOmJ1bmRsZV91dWlkO3R5cGU6dmFyY2hhcigxMDI0KTtjb21tZW50OuWll+mkkFVVSURcImBcblx0QnVuZGxlTmFtZSAgICAgICAgICAgIHN0cmluZyAgYGpzb246XCJidW5kbGVOYW1lXCIgZ29ybTpcImNvbHVtbjpidW5kbGVfbmFtZTt0eXBlOnZhcmNoYXIoMjA0OCk7Y29tbWVudDrlpZfppJDlkI1cImBcblx0Q3VzdG9tZXJJRCAgICAgICAgICAgIHN0cmluZyAgYGpzb246XCJjdXN0b21lcklEXCIgZ29ybTpcImNvbHVtbjpjdXN0b21lcl9pZDt0eXBlOnZhcmNoYXIoMTAyNCk7Y29tbWVudDrlrqLmiLdJRFwiYFxuXHRDdXN0b21lck51bSAgICAgICAgICAgc3RyaW5nICBganNvbjpcImN1c3RvbWVyTnVtXCIgZ29ybTpcImNvbHVtbjpjdXN0b21lcl9udW07dHlwZTp2YXJjaGFyKDEwMjQpO2NvbW1lbnQ65a6i5oi357yW5Y+3XCJgXG5cdEN1c3RvbWVyTmFtZSAgICAgICAgICBzdHJpbmcgIGBqc29uOlwiY3VzdG9tZXJOYW1lXCIgZ29ybTpcImNvbHVtbjpjdXN0b21lcl9uYW1lO3R5cGU6dmFyY2hhcigxMDI0KTtjb21tZW50OuWuouaIt+WQjVwiYFxuXHRBbW91bnQgICAgICAgICAgICAgICAgZmxvYXQzMiBganNvbjpcImFtb3VudFwiIGdvcm06XCJjb2x1bW46YW1vdW50O3R5cGU6ZGVjaW1hbCgxMiwyKTtjb21tZW50OuWll+mkkOmHkeminVwiYFxuXHRBbW91bnRUeXBlICAgICAgICAgICAgaW50NjQgICBganNvbjpcImFtb3VudFR5cGVcIiBnb3JtOlwiY29sdW1uOmFtb3VudF90eXBlO3R5cGU6aW50O2NvbW1lbnQ66YeR6aKd57G75Z6LXCJgXG5cdFZhbHVlQWRkQnVuZGxlVVVJRCAgICBzdHJpbmcgIGBqc29uOlwidmFsdWVBZGRCdW5kbGVVVUlEXCIgZ29ybTpcImNvbHVtbjp2YWx1ZV9hZGRfYnVuZGxlX3V1aWQ7dHlwZTp2YXJjaGFyKDEwMjQpO2NvbW1lbnQ65aKe5YC85aWX6aSQ6K6w5b2VVVVJRFwiYFxuXHRWYWx1ZUFkZEJ1bmRsZUFtb3VudCAgZmxvYXQzMiBganNvbjpcInZhbHVlQWRkQnVuZGxlQW1vdW50XCIgZ29ybTpcImNvbHVtbjp2YWx1ZV9hZGRfYnVuZGxlX2Ftb3VudDt0eXBlOmRlY2ltYWwoMTIsMik7Y29tbWVudDrlop7lgLzlpZfppJDph5Hpop1cImBcblx0VmFsdWVBZGRPcmlnaW5hbFByaWNlIGZsb2F0MzIgYGpzb246XCJ2YWx1ZUFkZE9yaWdpbmFsUHJpY2VcIiBnb3JtOlwiY29sdW1uOnZhbHVlX2FkZF9vcmlnaW5hbF9wcmljZTt0eXBlOmRlY2ltYWwoMTIsMik7Y29tbWVudDrljp/ljZXku7dcImBcblx0VmFsdWVBZGREaXNjb3VudFByaWNlIGZsb2F0MzIgYGpzb246XCJ2YWx1ZUFkZERpc2NvdW50UHJpY2VcIiBnb3JtOlwiY29sdW1uOnZhbHVlX2FkZF9kaXNjb3VudF9wcmljZTt0eXBlOmRlY2ltYWwoMTIsMik7Y29tbWVudDrkvJjmg6DljZXku7dcImBcblx0VmFsdWVBZGRTYXZlZEFtb3VudCAgIGZsb2F0MzIgYGpzb246XCJ2YWx1ZUFkZFNhdmVkQW1vdW50XCIgZ29ybTpcImNvbHVtbjp2YWx1ZV9hZGRfc2F2ZWRfYW1vdW50O3R5cGU6ZGVjaW1hbCgxMiwyKTtjb21tZW50OuiKguecgemHkeminVwiYFxuXHRUb3RhbEFtb3VudCAgICAgICAgICAgZmxvYXQzMiBganNvbjpcInRvdGFsQW1vdW50XCIgZ29ybTpcImNvbHVtbjp0b3RhbF9hbW91bnQ7dHlwZTpkZWNpbWFsKDEyLDIpO2NvbW1lbnQ65oC76YeR6aKdXCJgXG5cdE51bSAgICAgICAgICAgICAgICAgICBpbnQzMiAgIGBqc29uOlwibnVtXCIgZ29ybTpcImNvbHVtbjpudW07dHlwZTppbnQ7Y29tbWVudDrop4bpopHmlbDph49cImBcblx0U2lnbkNvbnRyYWN0ICAgICAgICAgIHN0cmluZyAgYGpzb246XCJzaWduQ29udHJhY3RcIiBnb3JtOlwiY29sdW1uOnNpZ25fY29udHJhY3Q7dHlwZTp2YXJjaGFyKDEwMjQpO2NvbW1lbnQ6562+57qm5ZCI5ZCMXCJgXG5cdFNpZ25hdHVyZSAgICAgICAgICAgICBzdHJpbmcgIGBqc29uOlwic2lnbmF0dXJlXCIgZ29ybTpcImNvbHVtbjpzaWduYXR1cmU7dHlwZTp0ZXh0O2NvbW1lbnQ6562+5a2XXCJgXG5cdFNpZ25lZFRpbWUgICAgICAgICAgICBzdHJpbmcgIGBqc29uOlwic2lnbmVkVGltZVwiIGdvcm06XCJjb2x1bW46c2lnbmVkX3RpbWU7dHlwZTp2YXJjaGFyKDEwMjQpO2NvbW1lbnQ6562+57qm5pe26Ze0KOWMl+S6rOaXtumXtClcImBcblx0UGF5VHlwZSAgICAgICAgICAgICAgIGludDY0ICAgYGpzb246XCJwYXlUeXBlXCIgZ29ybTpcImNvbHVtbjpwYXlfdHlwZTt0eXBlOmludDtjb21tZW50OuaUr+S7mOexu+Wei1wiYFxuXHRQYXlUaW1lICAgICAgICAgICAgICAgc3RyaW5nICBganNvbjpcInBheVRpbWVcIiBnb3JtOlwiY29sdW1uOnBheV90aW1lO3R5cGU6dmFyY2hhcigxMDI0KTtjb21tZW50OuaUr+S7mOaXtumXtCjljJfkuqzml7bpl7QpXCJgXG5cdENoZWNrb3V0U2Vzc2lvbklkICAgICBzdHJpbmcgIGBqc29uOlwiY2hlY2tvdXRTZXNzaW9uSWRcIiBnb3JtOlwiY29sdW1uOmNoZWNrb3V0X3Nlc3Npb25faWQ7dHlwZTp2YXJjaGFyKDEwMjQpO2RlZmF1bHQ6bnVsbDtjb21tZW50OmNoZWNrb3V0U2Vzc2lvbklkXCJgXG5cdENoZWNrb3V0U2Vzc2lvblVybCAgICBzdHJpbmcgIGBqc29uOlwiY2hlY2tvdXRTZXNzaW9uVXJsXCIgZ29ybTpcImNvbHVtbjpjaGVja291dF9zZXNzaW9uX3VybDt0eXBlOnZhcmNoYXIoMTAyNCk7ZGVmYXVsdDpudWxsO2NvbW1lbnQ6Y2hlY2tvdXRTZXNzaW9uVXJsXCJgXG5cdFN0YXR1cyAgICAgICAgICAgICAgICBpbnQ2NCAgIGBqc29uOlwic3RhdHVzXCIgZ29ybTpcImNvbHVtbjpzdGF0dXM7dHlwZTppbnQ7Y29tbWVudDrnirbmgIEgMTrlt7Lnrb7mnKrmlK/ku5ggMjrlt7Lnrb7lt7LmlK/ku5hcImBcblx0Q29udHJhY3RObyAgICAgICAgICAgIHN0cmluZyAgYGpzb246XCJjb250cmFjdE5vXCIgZ29ybTpcImNvbHVtbjpjb250cmFjdF9ubzt0eXBlOnZhcmNoYXIoMTAyNCk7Y29tbWVudDrlkIjlkIznvJblj7dcImBcblx0QnVuZGxlQ29tbW9uVWlkICAgICAgIHN0cmluZyAgYGpzb246XCJidW5kbGVDb21tb25VaWRcIiBnb3JtOlwiY29sdW1uOmJ1bmRsZV9jb21tb25fdWlkO3R5cGU6dGV4dDtjb21tZW50OuWll+mkkOWFrOWFsUlEXCJgXG5cdEFkZEJ1bmRsZUNvbW1vblVpZCAgICBzdHJpbmcgIGBqc29uOlwiYWRkQnVuZGxlQ29tbW9uVWlkXCIgZ29ybTpcImNvbHVtbjphZGRfYnVuZGxlX2NvbW1vbl91aWQ7dHlwZTp0ZXh0O2NvbW1lbnQ66ZmE5Yqg5aWX6aSQ5YWs5YWxSURcImBcblx0RmluYW5jaWFsQ29uZmlybWF0aW9uIGludDMyICAgYGpzb246XCJmaW5hbmNpYWxDb25maXJtYXRpb25cIiBnb3JtOlwiY29sdW1uOmZpbmFuY2lhbF9jb25maXJtYXRpb247dHlwZTppbnQ7Y29tbWVudDrotKLliqHnoa7orqQgMTrmnKrnoa7orqQgMjrlt7Lnoa7orqRcImBcbn1cblxuLy8g6LSi5Yqh56Gu6K6k54q25oCBXG5jb25zdCAoXG5cdENvbmZpcm1hdGlvbk5vdENvbmZpcm1lZCA9IDFcblx0Q29uZmlybWF0aW9uQ29uZmlybWVkICAgID0gMlxuKVxuLi4uXG5QYXRoOiBpbnRlcm5hbC9sb2dpYy9vcmRlclJlY29yZHNMb2dpYy5nb1xucGFja2FnZSBsb2dpY1xuXG5pbXBvcnQgKFxuXHRcIm1pY3JvLWJ1bmRsZS9pbnRlcm5hbC9kYW9cIlxuXHRcIm1pY3JvLWJ1bmRsZS9pbnRlcm5hbC9tb2RlbFwiXG5cdFwibWljcm8tYnVuZGxlL3BiL2J1bmRsZVwiXG5cdFwibWljcm8tYnVuZGxlL3BrZy9hcHBcIlxuXHRcIm1pY3JvLWJ1bmRsZS9wa2cvdXRpbHNcIlxuXG5cdFwiZ2l0aHViLmNvbS9qaW56aHUvY29waWVyXCJcbilcblxuZnVuYyBDcmVhdGVPcmRlclJlY29yZChyZXEgKmJ1bmRsZS5PcmRlclJlY29yZCkgKHJlcyAqYnVuZGxlLkNvbW1vblJlc3BvbnNlLCBlcnIgZXJyb3IpIHtcblx0cmVzID0gbmV3KGJ1bmRsZS5Db21tb25SZXNwb25zZSlcblx0b3JkZXJSZWNvcmQgOj0gbmV3KG1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkcylcblx0XyA9IGNvcGllci5Db3B5V2l0aE9wdGlvbigmb3JkZXJSZWNvcmQsIHJlcSwgY29waWVyLk9wdGlvbntEZWVwQ29weTogdHJ1ZX0pXG5cdG9yZGVyUmVjb3JkLlVVSUQgPSBhcHAuTW9kdWxlQ2xpZW50cy5TZk5vZGUuR2VuZXJhdGUoKS5CYXNlNjQoKVxuXHRvcmRlclJlY29yZC5PcmRlck5vID0gdXRpbHMuR2V0T3JkZXJObygpXG5cdG9yZGVyUmVjb3JkLkJ1bmRsZVVVSUQgPSByZXEuQnVuZGxlVXVpZFxuXHRvcmRlclJlY29yZC5WYWx1ZUFkZEJ1bmRsZVVVSUQgPSByZXEuVmFsdWVBZGRCdW5kbGVVdWlkXG5cdG9yZGVyUmVjb3JkLkZpbmFuY2lhbENvbmZpcm1hdGlvbiA9IG1vZGVsLkNvbmZpcm1hdGlvbk5vdENvbmZpcm1lZFxuXG5cdHJlcywgZXJyID0gZGFvLkNyZWF0ZU9yZGVyUmVjb3JkKG9yZGVyUmVjb3JkKVxuXHRyZXR1cm5cbn1cblxuZnVuYyBVcGRhdGVPcmRlclJlY29yZChyZXEgKmJ1bmRsZS5PcmRlclJlY29yZCkgKHJlcyAqYnVuZGxlLkNvbW1vblJlc3BvbnNlLCBlcnIgZXJyb3IpIHtcblx0cmVzID0gbmV3KGJ1bmRsZS5Db21tb25SZXNwb25zZSlcblx0b3JkZXJSZWNvcmQgOj0gbmV3KG1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkcylcblx0XyA9IGNvcGllci5Db3B5V2l0aE9wdGlvbigmb3JkZXJSZWNvcmQsIHJlcSwgY29waWVyLk9wdGlvbntEZWVwQ29weTogdHJ1ZX0pXG5cdG9yZGVyUmVjb3JkLlVVSUQgPSByZXEuVXVpZFxuXHRvcmRlclJlY29yZC5CdW5kbGVVVUlEID0gcmVxLkJ1bmRsZVV1aWRcblx0cmVzLCBlcnIgPSBkYW8uVXBkYXRlT3JkZXJSZWNvcmQob3JkZXJSZWNvcmQpXG5cdHJldHVyblxufVxuXG5mdW5jIFVwZGF0ZU9yZGVyUmVjb3JkQnlPcmRlck5vKHJlcSAqYnVuZGxlLk9yZGVyUmVjb3JkKSAocmVzICpidW5kbGUuQ29tbW9uUmVzcG9uc2UsIGVyciBlcnJvcikge1xuXHRyZXMgPSBuZXcoYnVuZGxlLkNvbW1vblJlc3BvbnNlKVxuXHRvcmRlclJlY29yZCA6PSBuZXcobW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzKVxuXHRfID0gY29waWVyLkNvcHlXaXRoT3B0aW9uKCZvcmRlclJlY29yZCwgcmVxLCBjb3BpZXIuT3B0aW9ue0RlZXBDb3B5OiB0cnVlfSlcblx0b3JkZXJSZWNvcmQuVVVJRCA9IHJlcS5VdWlkXG5cdG9yZGVyUmVjb3JkLkJ1bmRsZVVVSUQgPSByZXEuQnVuZGxlVXVpZFxuXHRyZXMsIGVyciA9IGRhby5VcGRhdGVPcmRlclJlY29yZEJ5T3JkZXJOTyhvcmRlclJlY29yZClcblx0cmV0dXJuXG59XG5cbmZ1bmMgT3JkZXJSZWNvcmRzTGlzdChyZXEgKmJ1bmRsZS5PcmRlclJlY29yZHNSZXF1ZXN0KSAocmVzICpidW5kbGUuT3JkZXJSZWNvcmRzUmVzcG9uc2UsIGVyciBlcnJvcikge1xuXHRyZXMgPSBuZXcoYnVuZGxlLk9yZGVyUmVjb3Jkc1Jlc3BvbnNlKVxuXHRyZXMsIGVyciA9IGRhby5PcmRlclJlY29yZHNMaXN0KHJlcSlcblx0cmV0dXJuXG59XG5cbmZ1bmMgT3JkZXJSZWNvcmRzRGV0YWlsKHJlcSAqYnVuZGxlLk9yZGVyUmVjb3Jkc0RldGFpbFJlcXVlc3QpIChyZXMgKmJ1bmRsZS5PcmRlclJlY29yZHNEZXRhaWxSZXNwb25zZSwgZXJyIGVycm9yKSB7XG5cdHJlcyA9IG5ldyhidW5kbGUuT3JkZXJSZWNvcmRzRGV0YWlsUmVzcG9uc2UpXG5cdHJlcy5PcmRlclJlY29yZCA9IG5ldyhidW5kbGUuT3JkZXJSZWNvcmQpXG5cdHJlcy5PcmRlclJlY29yZCwgZXJyID0gZGFvLk9yZGVyUmVjb3JkRGV0YWlsKHJlcSlcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmVzLk1zZyA9IGVyci5FcnJvcigpXG5cdH1cblx0cmV0dXJuXG59XG4uLi5cblBhdGg6IHBiL2J1bmRsZS5wcm90b1xuLi4uXG5cbm1lc3NhZ2UgT3JkZXJSZWNvcmQge1xuICBzdHJpbmcgdXVpZCA9IDEgW2pzb25fbmFtZSA9IFwidXVpZFwiXTtcbiAgc3RyaW5nIGJ1bmRsZVV1aWQgPSAyIFtqc29uX25hbWUgPSBcImJ1bmRsZVV1aWRcIl07XG4gIHN0cmluZyBjdXN0b21lcklEID0gMyBbanNvbl9uYW1lID0gXCJjdXN0b21lcklEXCJdO1xuICBzdHJpbmcgY3VzdG9tZXJOdW0gPSA0IFtqc29uX25hbWUgPSBcImN1c3RvbWVyTnVtXCJdO1xuICBzdHJpbmcgY3VzdG9tZXJOYW1lID0gNSBbanNvbl9uYW1lID0gXCJjdXN0b21lck5hbWVcIl07XG4gIGZsb2F0ICBhbW91bnQgPSA2IFtqc29uX25hbWUgPSBcImFtb3VudFwiXTtcbiAgaW50NjQgIGFtb3VudFR5cGUgPSA3IFtqc29uX25hbWUgPSBcImFtb3VudFR5cGVcIl07XG4gIHN0cmluZyBzaWduQ29udHJhY3QgPSA4IFtqc29uX25hbWUgPSBcInNpZ25Db250cmFjdFwiXTtcbiAgc3RyaW5nIHNpZ25hdHVyZSA9IDkgW2pzb25fbmFtZSA9IFwic2lnbmF0dXJlXCJdO1xuICBzdHJpbmcgc2lnbmVkVGltZSA9IDEwIFtqc29uX25hbWUgPSBcInNpZ25lZFRpbWVcIl07XG4gIGludDY0IHBheVR5cGUgPSAxMSBbanNvbl9uYW1lID0gXCJwYXlUeXBlXCJdO1xuICBzdHJpbmcgcGF5VGltZSA9IDEyIFtqc29uX25hbWUgPSBcInBheVRpbWVcIl07XG4gIHN0cmluZyBjaGVja291dFNlc3Npb25JZCA9IDEzIFtqc29uX25hbWUgPSBcImNoZWNrb3V0U2Vzc2lvbklkXCJdO1xuICBzdHJpbmcgY2hlY2tvdXRTZXNzaW9uVXJsID0gMTQgW2pzb25fbmFtZSA9IFwiY2hlY2tvdXRTZXNzaW9uVXJsXCJdO1xuLi4uXG5cbm1lc3NhZ2UgT3JkZXJSZWNvcmRzUmVxdWVzdCB7XG4gIGludDMyIHBhZ2UgPSAxIFtqc29uX25hbWUgPSBcInBhZ2VcIl07XG4gIGludDMyIHBhZ2VTaXplID0gMiBbanNvbl9uYW1lID0gXCJwYWdlU2l6ZVwiXTtcbiAgc3RyaW5nIGN1c3RvbWVyTnVtID0gMyBbanNvbl9uYW1lID0gXCJjdXN0b21lck51bVwiXTtcbiAgc3RyaW5nIGN1c3RvbWVyTmFtZSA9IDQgW2pzb25fbmFtZSA9IFwiY3VzdG9tZXJOYW1lXCJdO1xuICBzdHJpbmcgYnVuZGxlVVVJRCA9IDUgW2pzb25fbmFtZSA9IFwiYnVuZGxlVVVJRFwiXTtcbiAgc3RyaW5nIG9yZGVyTm8gPSA2IFtqc29uX25hbWUgPSBcIm9yZGVyTm9cIl07XG4gIGludDY0ICBzdGF0dXMgPSA3IFtqc29uX25hbWUgPSBcInN0YXR1c1wiXTtcbiAgc3RyaW5nIGJ1bmRsZU5hbWUgPSA4IFtqc29uX25hbWUgPSBcImJ1bmRsZU5hbWVcIl07XG4gIHN0cmluZyBzdGFydFNpZ25lZFRpbWUgPSA5IFtqc29uX25hbWUgPSBcInN0YXJ0U2lnbmVkVGltZVwiXTtcbiAgc3RyaW5nIGVuZFNpZ25lZFRpbWUgPSAxMCBbanNvbl9uYW1lID0gXCJlbmRTaWduZWRUaW1lXCJdO1xuICBzdHJpbmcgc3RhcnRQYXlUaW1lID0gMTEgW2pzb25fbmFtZSA9IFwic3RhcnRQYXlUaW1lXCJdO1xuICBzdHJpbmcgZW5kUGF5VGltZSA9IDEyIFtqc29uX25hbWUgPSBcImVuZFBheVRpbWVcIl07XG4gIHN0cmluZyBjdXN0b21lcklEID0gMTMgW2pzb25fbmFtZSA9IFwiY3VzdG9tZXJJRFwiXTtcbiAgaW50NjQgaXNIYXZlVmFsdWVBZGQgPSAxNCBbanNvbl9uYW1lID0gXCJpc0hhdmVWYWx1ZUFkZFwiXTsvL+acieaXoOWinuWAvOmAiemhuVxufVxuXG5tZXNzYWdlIE9yZGVyUmVjb3Jkc1Jlc3BvbnNlIHtcbiAgcmVwZWF0ZWQgT3JkZXJSZWNvcmQgb3JkZXJSZWNvcmRzID0gMSBbanNvbl9uYW1lID0gXCJvcmRlclJlY29yZHNcIl07XG4gIGludDMyIHRvdGFsID0gMiBbanNvbl9uYW1lID0gXCJ0b3RhbFwiXTtcbn1cblxubWVzc2FnZSBPcmRlclJlY29yZHNEZXRhaWxSZXF1ZXN0IHtcbiAgc3RyaW5nIHV1aWQgPSAxIFtqc29uX25hbWUgPSBcInV1aWRcIl07XG4gIHN0cmluZyBvcmRlck5vID0gMiBbanNvbl9uYW1lID0gXCJvcmRlck5vXCJdO1xuICBzdHJpbmcgY3VzdG9tZXJJRCA9IDMgW2pzb25fbmFtZSA9IFwiY3VzdG9tZXJJRFwiXTtcbn1cblxubWVzc2FnZSBPcmRlclJlY29yZHNEZXRhaWxSZXNwb25zZSB7XG4gIE9yZGVyUmVjb3JkIG9yZGVyUmVjb3JkID0gMSBbanNvbl9uYW1lID0gXCJvcmRlclJlY29yZFwiXTtcbiAgc3RyaW5nIG1zZyA9IDIgW2pzb25fbmFtZSA9IFwibXNnXCJdO1xufVxuLi4uXG5QYXRoOiBpbnRlcm5hbC9kYW8vYnVuZGxlRGFvLmdvXG4uLi5cblxuZnVuYyBCdW5kbGVMaXN0KHJlcSAqYnVuZGxlLkJ1bmRsZUxpc3RSZXF1ZXN0KSAocmVzICpidW5kbGUuQnVuZGxlTGlzdFJlc3BvbnNlLCBlcnIgZXJyb3IpIHtcblx0cmVzID0gbmV3KGJ1bmRsZS5CdW5kbGVMaXN0UmVzcG9uc2UpXG5cdHJlcy5CdW5kbGVzID0gbWFrZShbXSpidW5kbGUuQnVuZGxlUHJvZmlsZSwgMClcblx0YnVuZGxlcyA6PSBtYWtlKFtdKm1vZGVsLkJ1bmRsZVByb2ZpbGUsIDApXG5cblx0cXVlcnkgOj0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZVByb2ZpbGV7fSlcblxuXHRpZiByZXEuTmFtZSAhPSBcIlwiIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwibmFtZSBsaWtlID9cIiwgXCIlXCIrcmVxLk5hbWUrXCIlXCIpXG5cdH1cblxuXHRpZiByZXEuQ29udGVudCAhPSBcIlwiIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiY29udGVudCBsaWtlID9cIiwgXCIlXCIrcmVxLkNvbnRlbnQrXCIlXCIpXG5cdH1cblxuXHRpZiByZXEuTGFuZ3VhZ2UgIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImxhbmd1YWdlIGxpa2UgP1wiLCByZXEuTGFuZ3VhZ2UpXG5cdH1cblxuXHRjb3VudCA6PSAqcXVlcnlcblxuXHRpZiByZXEuUGFnZVNpemUgIT0gMCAmJiByZXEuUGFnZSAhPSAwIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LkxpbWl0KGludChyZXEuUGFnZVNpemUpKS5PZmZzZXQoaW50KHJlcS5QYWdlLTEpICogaW50KHJlcS5QYWdlU2l6ZSkpXG5cdH1cbi4uLlxuXG5cdC8vIF8gPSBjb3BpZXIuQ29weVdpdGhPcHRpb24oJnJlcy5CdW5kbGVzLCBidW5kbGVzLCBjb3BpZXIuT3B0aW9ue0RlZXBDb3B5OiB0cnVlfSlcblxuXHQvLyBmbXQuUHJpbnRmKFwicmVzLkJ1bmRsZXMgJSt2XFxuXCIsIHJlcy5CdW5kbGVzKVxuXG5cdHZhciB0b3RhbCBpbnQ2NFxuXG5cdGNvdW50LkNvdW50KCZ0b3RhbClcblxuXHRyZXMuVG90YWwgPSBpbnQzMih0b3RhbClcblxuXHRyZXR1cm5cblxufVxuXG5mdW5jIEJ1bmRsZURldGFpbCh1dWlkIHN0cmluZykgKHJlcyAqYnVuZGxlLkJ1bmRsZVByb2ZpbGUsIGVyciBlcnJvcikge1xuXHRyZXMgPSBuZXcoYnVuZGxlLkJ1bmRsZVByb2ZpbGUpXG5cdGJ1bmRsZVByb2ZpbGUgOj0gbmV3KG1vZGVsLkJ1bmRsZVByb2ZpbGUpXG5cdGVyciA9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLldoZXJlKFwidXVpZCA9ID9cIiwgdXVpZCkuRmlyc3QoJmJ1bmRsZVByb2ZpbGUpLkVycm9yXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJldHVybiByZXMsIGNvbW1vbkVyci5SZXR1cm5FcnJvcihlcnIsIG1zZy5FcnJvckdldEJ1bmRsZUluZm8sIFwi6I635Y+W5aWX6aSQ5L+h5oGv5aSx6LSlOiBcIilcblx0fVxuLi4uXG5QYXRoOiBpbnRlcm5hbC9sb2dpYy92YWx1ZUFkZEJ1bmRsZUxvZ2ljLmdvXG4uLi5cblxuLy8g5aKe5YC85aWX6aSQ5YiX6KGoXG5mdW5jIFZhbHVlQWRkQnVuZGxlTGlzdChyZXEgKmJ1bmRsZS5WYWx1ZUFkZEJ1bmRsZUxpc3RSZXF1ZXN0KSAocmVzICpidW5kbGUuVmFsdWVBZGRCdW5kbGVMaXN0UmVzcG9uc2UsIGVyciBlcnJvcikge1xuXHRyZXMgPSAmYnVuZGxlLlZhbHVlQWRkQnVuZGxlTGlzdFJlc3BvbnNle31cblx0dmFyIGJ1bmRsZUNvbW1vblVpZCBzdHJpbmdcblx0dmFyIGJ1bmRsZVByb2ZpbGUgKm1vZGVsLkJ1bmRsZVByb2ZpbGVcblx0YnVuZGxlUHJvZmlsZSwgZXJyID0gZGFvLkJ1bmRsZVByb2ZpbGVEZXRhaWwocmVxLkJ1bmRsZVV1aWQpXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJldHVyblxuXHR9IGVsc2Uge1xuXHRcdHZhciBidW5kbGVPcmRlclJlY29yZCAqbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzXG5cdFx0YnVuZGxlT3JkZXJSZWNvcmQsIGVyciA9IGRhby5HZXRCdW5kbGVPcmRlclJlY29yZHNCeUNvbW1vblVpZEFuZFVzZXJJZChidW5kbGVQcm9maWxlLkJ1bmRsZUNvbW1vblVpZCwgcmVxLlVzZXJJZClcblx0XHRpZiBlcnIgIT0gbmlsIHtcblx0XHRcdGVyciA9IG5pbFxuXHRcdH0gZWxzZSB7XG5cdFx0XHRidW5kbGVDb21tb25VaWQgPSBidW5kbGVPcmRlclJlY29yZC5CdW5kbGVDb21tb25VaWRcblx0XHRcdHJlcy5PcmRlck5vID0gdHJ1ZVxuXHRcdFx0cmVzLlByaWNlID0gYnVuZGxlT3JkZXJSZWNvcmQuVmFsdWVBZGRCdW5kbGVBbW91bnRcblx0XHRcdHJlcy5OdW0gPSBidW5kbGVPcmRlclJlY29yZC5OdW1cblxuXHRcdFx0aWYgYnVuZGxlT3JkZXJSZWNvcmQuVmFsdWVBZGRCdW5kbGVVVUlEICE9IFwiXCIge1xuXHRcdFx0XHRyZXMuU3RhdHVzID0gdHJ1ZVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuLi4uXG5cblx0cmVzLkRhdGEgPSAmYnVuZGxlLlZhbHVlQWRkQnVuZGxlUHJvZmlsZXtcblx0XHRVdWlkOiAgICAgICAgICAgICAgICB2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUuVVVJRCxcblx0XHROdW06ICAgICAgICAgICAgICAgICB2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUuTnVtLFxuXHRcdE9yaWdpbmFsUHJpY2U6ICAgICAgIHZhbHVlQWRkQnVuZGxlUHJvZmlsZS5PcmlnaW5hbFByaWNlLFxuXHRcdERpc2NvdW50UHJpY2U6ICAgICAgIHZhbHVlQWRkQnVuZGxlUHJvZmlsZS5EaXNjb3VudFByaWNlLFxuXHRcdFRvdGFsUHJpY2U6ICAgICAgICAgIHZhbHVlQWRkQnVuZGxlUHJvZmlsZS5Ub3RhbFByaWNlLFxuXHRcdFNhdmVkQW1vdW50OiAgICAgICAgIHZhbHVlQWRkQnVuZGxlUHJvZmlsZS5TYXZlZEFtb3VudCxcblx0XHREaXNjb3VudFByaWNlU3RhdHVzOiB2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUuRGlzY291bnRQcmljZVN0YXR1cyxcblx0XHRDaG9vc2U6ICAgICAgICAgICAgICB2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUuQ2hvb3NlLFxuXHRcdEFkZEJ1bmRsZUNvbW1vblVpZDogIHZhbHVlQWRkQnVuZGxlUHJvZmlsZS5BZGRCdW5kbGVDb21tb25VaWQsXG5cdH1cblxuXHRidW5kbGVPcmRlclJlY29yZHMgOj0gJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9XG5cdGJ1bmRsZU9yZGVyUmVjb3JkcywgZXJyID0gZGFvLkJ1bmRsZU9yZGVyUmVjb3Jkc0RldGFpbEJ5QWRkVWlkKHJlcS5VdWlkKVxuXHRpZiBlcnIgLi4uIiwiaXNfZXJyb3IiOmZhbHNlLCJyZXF1ZXN0X2lkIjoiIiwidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxU0ZHdXVhc3V2aHpKamRQQUdjejdNbiJ9fSx7ImlkIjoyLCJ0eXBlIjo0LCJpZGVfc3RhdGVfbm9kZSI6eyJ3b3Jrc3BhY2VGb2xkZXJzIjpbeyJyZXBvc2l0b3J5Um9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSIsImZvbGRlclJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUifV0sIndvcmtzcGFjZUZvbGRlcnNVbmNoYW5nZWQiOmZhbHNlfX1dLCJ0aW1lc3RhbXAiOiIyMDI1LTA1LTA5VDA2OjAzOjExLjY2NloiLCJyZXNwb25zZV90ZXh0IjoiSSBjYW4gc2VlIHRoZSBpc3N1ZSBpbiB5b3VyIFNRTCBxdWVyeS4gVGhlIGVycm9yIGlzIG9jY3VycmluZyBpbiB0aGUgYE9yZGVyUmVjb3Jkc0xpc3RgIGZ1bmN0aW9uIGluIGBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvYC4gTGV0IG1lIGV4YW1pbmUgdGhlIHByb2JsZW1hdGljIFNRTCBqb2luIHN0YXRlbWVudCBtb3JlIGNsb3NlbHk6XG4iLCJ3b3Jrc3BhY2VfZmlsZV9jaHVua3MiOltdfSx7InN0YXR1cyI6InN1Y2Nlc3MiLCJyZXF1ZXN0X2lkIjoiMTY0NWFkMGUtNzFjMi00YWQzLTlhMzUtZGIxZjYyMTEzN2UzIiwicmVxdWVzdF9tZXNzYWdlIjoiIiwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjo1LCJjb250ZW50IjoiIiwidG9vbF91c2UiOnsidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxR0cxMmk1TDFnUHRRTmNMRGZ0ZkhZZyIsInRvb2xfbmFtZSI6InN0ci1yZXBsYWNlLWVkaXRvciIsImlucHV0X2pzb24iOiJ7XCJjb21tYW5kXCI6IFwic3RyX3JlcGxhY2VcIiwgXCJwYXRoXCI6IFwiaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nb1wiLCBcInN0cl9yZXBsYWNlX2VudHJpZXNcIjogW3tcIm9sZF9zdHJcIjogXCJcXHRxdWVyeS5Kb2lucyhcXFwibGVmdCBqb2luIG1pY3JvLWFjY291bnQudXNlciBvbiBtaWNyby1hY2NvdW50LnVzZXIuaWQgPSBidW5kbGVfb3JkZXJfcmVjb3Jkcy5jdXN0b21lcl9pZFxcXCIpXCIsIFwibmV3X3N0clwiOiBcIlxcdHF1ZXJ5LkpvaW5zKFxcXCJsZWZ0IGpvaW4gYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmBpZGAgPSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9pZGBcXFwiKVwiLCBcIm9sZF9zdHJfc3RhcnRfbGluZV9udW1iZXJcIjogNzUsIFwib2xkX3N0cl9lbmRfbGluZV9udW1iZXJcIjogNzV9XX0iLCJtY3Bfc2VydmVyX25hbWUiOiIiLCJtY3BfdG9vbF9uYW1lIjoiIn19LHsiaWQiOjAsInR5cGUiOjAsImNvbnRlbnQiOiJJIGZvdW5kIHRoZSBpc3N1ZSEgVGhlIHByb2JsZW0gaXMgaW4gbGluZSA3NSBvZiBgaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nb2AuIFRoZSBTUUwgc3ludGF4IGVycm9yIGlzIG9jY3VycmluZyBiZWNhdXNlIG9mIHRoZSBoeXBoZW4gKGAtYCkgaW4gdGhlIGRhdGFiYXNlIG5hbWUgYG1pY3JvLWFjY291bnRgLiBJbiBTUUwsIGh5cGhlbnMgYXJlIG5vdCBhbGxvd2VkIGluIHVucXVvdGVkIGlkZW50aWZpZXJzLlxuXG5MZXQncyBmaXggdGhpcyBieSBwcm9wZXJseSBxdW90aW5nIHRoZSBkYXRhYmFzZSBhbmQgdGFibGUgbmFtZXMgaW4gdGhlIEpPSU4gc3RhdGVtZW50OlxuIn0seyJpZCI6MiwidHlwZSI6MiwiY29udGVudCI6IiJ9LHsiaWQiOjMsInR5cGUiOjMsImNvbnRlbnQiOiIifV0sInNlZW5fc3RhdGUiOiJzZWVuIiwic3RydWN0dXJlZF9yZXF1ZXN0X25vZGVzIjpbeyJpZCI6MSwidHlwZSI6MSwidG9vbF9yZXN1bHRfbm9kZSI6eyJjb250ZW50IjoiSGVyZSdzIHRoZSByZXN1bHQgb2YgcnVubmluZyBgY2F0IC1uYCBvbiBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvOlxuICAgIDcwXHRcdHJlcy5PcmRlclJlY29yZHMgPSBtYWtlKFtdKmJ1bmRsZS5PcmRlclJlY29yZCwgMClcbiAgICA3MVx0XHRyZWNvcmRzIDo9IG1ha2UoW10qbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzLCAwKVxuICAgIDcyXHRcbiAgICA3M1x0XHRxdWVyeSA6PSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5Nb2RlbCgmbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRze30pXG4gICAgNzRcdFxuICAgIDc1XHRcdHF1ZXJ5LkpvaW5zKFwibGVmdCBqb2luIG1pY3JvLWFjY291bnQudXNlciBvbiBtaWNyby1hY2NvdW50LnVzZXIuaWQgPSBidW5kbGVfb3JkZXJfcmVjb3Jkcy5jdXN0b21lcl9pZFwiKVxuICAgIDc2XHRcbiAgICA3N1x0XHRpZiByZXEuQ3VzdG9tZXJJRCAhPSBcIlwiIHtcbiAgICA3OFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9pZCA9ID9cIiwgcmVxLkN1c3RvbWVySUQpXG4gICAgNzlcdFx0fVxuICAgIDgwXHRcbiAgICA4MVx0XHRpZiByZXEuQ3VzdG9tZXJOdW0gIT0gXCJcIiB7XG4gICAgODJcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiY3VzdG9tZXJfbnVtIGxpa2UgP1wiLCBcIiVcIityZXEuQ3VzdG9tZXJOdW0rXCIlXCIpXG4gICAgODNcdFx0fVxuICAgIDg0XHRcbiAgICA4NVx0XHRpZiByZXEuQ3VzdG9tZXJOYW1lICE9IFwiXCIge1xuICAgIDg2XHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImN1c3RvbWVyX25hbWUgbGlrZSA/XCIsIFwiJVwiK3JlcS5DdXN0b21lck5hbWUrXCIlXCIpXG4gICAgODdcdFx0fVxuICAgIDg4XHRcbiAgICA4OVx0XHRpZiByZXEuQnVuZGxlTmFtZSAhPSBcIlwiIHtcbiAgICA5MFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJidW5kbGVfbmFtZSBsaWtlID9cIiwgXCIlXCIrcmVxLkJ1bmRsZU5hbWUrXCIlXCIpXG5Ub3RhbCBsaW5lcyBpbiBmaWxlOiAyMzlcbiIsImlzX2Vycm9yIjpmYWxzZSwicmVxdWVzdF9pZCI6IiIsInRvb2xfdXNlX2lkIjoidG9vbHVfdnJ0eF8wMU5SR3BzVEpVVm9OaTROa2JmYjhQY3MifX0seyJpZCI6MiwidHlwZSI6NCwiaWRlX3N0YXRlX25vZGUiOnsid29ya3NwYWNlRm9sZGVycyI6W3sicmVwb3NpdG9yeVJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUiLCJmb2xkZXJSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIn1dLCJ3b3Jrc3BhY2VGb2xkZXJzVW5jaGFuZ2VkIjpmYWxzZX19XSwidGltZXN0YW1wIjoiMjAyNS0wNS0wOVQwNjowMzoxNy4yNDRaIiwicmVzcG9uc2VfdGV4dCI6IkkgZm91bmQgdGhlIGlzc3VlISBUaGUgcHJvYmxlbSBpcyBpbiBsaW5lIDc1IG9mIGBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvYC4gVGhlIFNRTCBzeW50YXggZXJyb3IgaXMgb2NjdXJyaW5nIGJlY2F1c2Ugb2YgdGhlIGh5cGhlbiAoYC1gKSBpbiB0aGUgZGF0YWJhc2UgbmFtZSBgbWljcm8tYWNjb3VudGAuIEluIFNRTCwgaHlwaGVucyBhcmUgbm90IGFsbG93ZWQgaW4gdW5xdW90ZWQgaWRlbnRpZmllcnMuXG5cbkxldCdzIGZpeCB0aGlzIGJ5IHByb3Blcmx5IHF1b3RpbmcgdGhlIGRhdGFiYXNlIGFuZCB0YWJsZSBuYW1lcyBpbiB0aGUgSk9JTiBzdGF0ZW1lbnQ6XG4iLCJ3b3Jrc3BhY2VfZmlsZV9jaHVua3MiOltdfSx7InN0YXR1cyI6InN1Y2Nlc3MiLCJyZXF1ZXN0X2lkIjoiMjcwYTEyMDMtZGFiMS00YWY1LTlmNWItMWM4YWY5YzVkZDEyIiwicmVxdWVzdF9tZXNzYWdlIjoiIiwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjo1LCJjb250ZW50IjoiIiwidG9vbF91c2UiOnsidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxODdETHJWQm9neVZDZ2tjUVYzS3huRCIsInRvb2xfbmFtZSI6InN0ci1yZXBsYWNlLWVkaXRvciIsImlucHV0X2pzb24iOiJ7XCJjb21tYW5kXCI6IFwidmlld1wiLCBcInBhdGhcIjogXCJpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvXCIsIFwidmlld19yYW5nZVwiOiBbMTIwLCAxNDBdfSIsIm1jcF9zZXJ2ZXJfbmFtZSI6IiIsIm1jcF90b29sX25hbWUiOiIifX0seyJpZCI6MCwidHlwZSI6MCwiY29udGVudCI6Ik5vdyBsZXQncyBhbHNvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgc2ltaWxhciBpc3N1ZXMgaW4gdGhlIHNhbWUgZmlsZTpcbiJ9LHsiaWQiOjIsInR5cGUiOjIsImNvbnRlbnQiOiIifSx7ImlkIjozLCJ0eXBlIjozLCJjb250ZW50IjoiIn1dLCJzZWVuX3N0YXRlIjoic2VlbiIsInN0cnVjdHVyZWRfcmVxdWVzdF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjEsInRvb2xfcmVzdWx0X25vZGUiOnsiY29udGVudCI6IlN1Y2Nlc3NmdWxseSBlZGl0ZWQgdGhlIGZpbGUgaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nby5cblJlc3VsdCBmb3Igc3RyX3JlcGxhY2UgZm9yIGVudHJ5IHdpdGggaW5kZXggWzBdOlxuUmVwbGFjZW1lbnQgc3VjY2Vzc2Z1bC5cbkVkaXRlZCBzZWN0aW9uIGFmdGVyIElERSBhdXRvLWZvcm1hdHRpbmcgd2FzIGFwcGxpZWQ6XG4gICAgNzFcdFx0cmVjb3JkcyA6PSBtYWtlKFtdKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcywgMClcbiAgICA3Mlx0XG4gICAgNzNcdFx0cXVlcnkgOj0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9KVxuICAgIDc0XHRcbiAgICA3NVx0XHRxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgIG9uIGBtaWNyby1hY2NvdW50YC5gdXNlcmAuYGlkYCA9IGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX2lkYFwiKVxuICAgIDc2XHRcbiAgICA3N1x0XHRpZiByZXEuQ3VzdG9tZXJJRCAhPSBcIlwiIHtcbiAgICA3OFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9pZCA9ID9cIiwgcmVxLkN1c3RvbWVySUQpXG4gICAgNzlcdFx0fVxuXG5SZXZpZXcgdGhlIGNoYW5nZXMgYW5kIG1ha2Ugc3VyZSB0aGV5IGFyZSBhcyBleHBlY3RlZCAoY29ycmVjdCBpbmRlbnRhdGlvbiwgbm8gZHVwbGljYXRlIGxpbmVzLCBldGMpLlxuRWRpdCB0aGUgZmlsZSBhZ2FpbiBpZiBuZWNlc3NhcnkuXG4iLCJpc19lcnJvciI6ZmFsc2UsInJlcXVlc3RfaWQiOiIiLCJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDFHRzEyaTVMMWdQdFFOY0xEZnRmSFlnIn19LHsiaWQiOjIsInR5cGUiOjQsImlkZV9zdGF0ZV9ub2RlIjp7IndvcmtzcGFjZUZvbGRlcnMiOlt7InJlcG9zaXRvcnlSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIiwiZm9sZGVyUm9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSJ9XSwid29ya3NwYWNlRm9sZGVyc1VuY2hhbmdlZCI6ZmFsc2V9fV0sInRpbWVzdGFtcCI6IjIwMjUtMDUtMDlUMDY6MDM6MjUuNDY1WiIsInJlc3BvbnNlX3RleHQiOiJOb3cgbGV0J3MgYWxzbyBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHNpbWlsYXIgaXNzdWVzIGluIHRoZSBzYW1lIGZpbGU6XG4iLCJ3b3Jrc3BhY2VfZmlsZV9jaHVua3MiOltdfSx7InN0YXR1cyI6InN1Y2Nlc3MiLCJyZXF1ZXN0X2lkIjoiMmFmYTY5ZDctNjAzMC00MzQ2LWFkOWMtYWRiNzViMjk2NWQyIiwicmVxdWVzdF9tZXNzYWdlIjoiIiwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjo1LCJjb250ZW50IjoiIiwidG9vbF91c2UiOnsidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxTk0zaEpVUnhLVVFLdnJ0WW9pTFlXOCIsInRvb2xfbmFtZSI6InN0ci1yZXBsYWNlLWVkaXRvciIsImlucHV0X2pzb24iOiJ7XCJjb21tYW5kXCI6IFwic3RyX3JlcGxhY2VcIiwgXCJwYXRoXCI6IFwiaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nb1wiLCBcInN0cl9yZXBsYWNlX2VudHJpZXNcIjogW3tcIm9sZF9zdHJcIjogXCJcXHRcXHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFxcXCJtaWNyby1hY2NvdW50LnVzZXIudGVsX251bSBsaWtlID9cXFwiLCBcXFwiJVxcXCIrcmVxLlRlbE51bStcXFwiJVxcXCIpXCIsIFwibmV3X3N0clwiOiBcIlxcdFxcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXFxcImBtaWNyby1hY2NvdW50YC5gdXNlcmAuYHRlbF9udW1gIGxpa2UgP1xcXCIsIFxcXCIlXFxcIityZXEuVGVsTnVtK1xcXCIlXFxcIilcIiwgXCJvbGRfc3RyX3N0YXJ0X2xpbmVfbnVtYmVyXCI6IDEzMiwgXCJvbGRfc3RyX2VuZF9saW5lX251bWJlclwiOiAxMzJ9XX0iLCJtY3Bfc2VydmVyX25hbWUiOiIiLCJtY3BfdG9vbF9uYW1lIjoiIn19LHsiaWQiOjAsInR5cGUiOjAsImNvbnRlbnQiOiJJIGZvdW5kIGFub3RoZXIgaXNzdWUgaW4gbGluZSAxMzIuIExldCdzIGZpeCB0aGF0IGFzIHdlbGw6XG4ifSx7ImlkIjoyLCJ0eXBlIjoyLCJjb250ZW50IjoiIn0seyJpZCI6MywidHlwZSI6MywiY29udGVudCI6IiJ9XSwic2Vlbl9zdGF0ZSI6InNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjoxLCJ0b29sX3Jlc3VsdF9ub2RlIjp7ImNvbnRlbnQiOiJIZXJlJ3MgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGBjYXQgLW5gIG9uIGludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ286XG4gICAxMjBcdFxuICAgMTIxXHRcdGlmIHJlcS5Jc0hhdmVWYWx1ZUFkZCA9PSAxIHsgLy8g5pyJXG4gICAxMjJcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwidmFsdWVfYWRkX2J1bmRsZV91dWlkICE9ID9cIiwgXCJcIilcbiAgIDEyM1x0XHR9IGVsc2UgaWYgcmVxLklzSGF2ZVZhbHVlQWRkID09IDIgeyAvLyDml6BcbiAgIDEyNFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJJRk5VTEwodmFsdWVfYWRkX2J1bmRsZV91dWlkLCcnKSA9ICcnXCIpXG4gICAxMjVcdFx0fVxuICAgMTI2XHRcbiAgIDEyN1x0XHRpZiByZXEuRmluYW5jaWFsQ29uZmlybWF0aW9uICE9IDAge1xuICAgMTI4XHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImZpbmFuY2lhbF9jb25maXJtYXRpb24gPSA/XCIsIHJlcS5GaW5hbmNpYWxDb25maXJtYXRpb24pXG4gICAxMjlcdFx0fVxuICAgMTMwXHRcbiAgIDEzMVx0XHRpZiByZXEuVGVsTnVtICE9IFwiXCIge1xuICAgMTMyXHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcIm1pY3JvLWFjY291bnQudXNlci50ZWxfbnVtIGxpa2UgP1wiLCBcIiVcIityZXEuVGVsTnVtK1wiJVwiKVxuICAgMTMzXHRcdH1cbiAgIDEzNFx0XG4gICAxMzVcdFx0Y291bnQgOj0gKnF1ZXJ5XG4gICAxMzZcdFxuICAgMTM3XHRcdGlmIHJlcS5QYWdlU2l6ZSAhPSAwICYmIHJlcS5QYWdlICE9IDAge1xuICAgMTM4XHRcdFx0cXVlcnkgPSBxdWVyeS5MaW1pdChpbnQocmVxLlBhZ2VTaXplKSkuT2Zmc2V0KGludChyZXEuUGFnZS0xKSAqIGludChyZXEuUGFnZVNpemUpKVxuICAgMTM5XHRcdH1cbiAgIDE0MFx0XG5Ub3RhbCBsaW5lcyBpbiBmaWxlOiAyMzlcbiIsImlzX2Vycm9yIjpmYWxzZSwicmVxdWVzdF9pZCI6IiIsInRvb2xfdXNlX2lkIjoidG9vbHVfdnJ0eF8wMTg3RExyVkJvZ3lWQ2drY1FWM0t4bkQifX0seyJpZCI6MiwidHlwZSI6NCwiaWRlX3N0YXRlX25vZGUiOnsid29ya3NwYWNlRm9sZGVycyI6W3sicmVwb3NpdG9yeVJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUiLCJmb2xkZXJSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIn1dLCJ3b3Jrc3BhY2VGb2xkZXJzVW5jaGFuZ2VkIjpmYWxzZX19XSwidGltZXN0YW1wIjoiMjAyNS0wNS0wOVQwNjowMzozMC40MjlaIiwicmVzcG9uc2VfdGV4dCI6IkkgZm91bmQgYW5vdGhlciBpc3N1ZSBpbiBsaW5lIDEzMi4gTGV0J3MgZml4IHRoYXQgYXMgd2VsbDpcbiIsIndvcmtzcGFjZV9maWxlX2NodW5rcyI6W119LHsic3RhdHVzIjoic3VjY2VzcyIsInJlcXVlc3RfaWQiOiJjYjYzZTc5Zi0xZGVkLTQ4NmEtOGUwOS1jMTY3Nzk1ODZiMjIiLCJyZXF1ZXN0X21lc3NhZ2UiOiIiLCJzdHJ1Y3R1cmVkX291dHB1dF9ub2RlcyI6W3siaWQiOjAsInR5cGUiOjAsImNvbnRlbnQiOiJHcmVhdCEgSSd2ZSBmaXhlZCB0aGUgU1FMIHN5bnRheCBpc3N1ZXMgaW4gdGhlIGBvcmRlclJlY29yZHNEYW8uZ29gIGZpbGUuIExldCBtZSBleHBsYWluIHdoYXQgd2FzIGhhcHBlbmluZzpcblxuIyMgVGhlIFByb2JsZW1cblxuVGhlIGVycm9yIG1lc3NhZ2UgeW91IHJlY2VpdmVkOlxuYGBgXG4xMDY0IC0gWW91IGhhdmUgYW4gZXJyb3IgaW4geW91ciBTUUwgc3ludGF4OyBjaGVjayB0aGUgbWFudWFsIHRoYXQgY29ycmVzcG9uZHMgdG8geW91ciBNeVNRTCBzZXJ2ZXIgdmVyc2lvbiBmb3IgdGhlIHJpZ2h0IHN5bnRheCB0byB1c2UgbmVhciAnLWFjY291bnQudXNlciBvbiBtaWNyby1hY2NvdW50LnVzZXIuaWQgPSBidW5kbGVfb3JkZXJfcmVjb3Jkc2N1c3RvbWVyX2lkIFdIRVJFIGAnIGF0IGxpbmUgMVxuYGBgXG5cblRoaXMgd2FzIGhhcHBlbmluZyBiZWNhdXNlIGluIFNRTCwgaWRlbnRpZmllcnMgKGxpa2UgZGF0YWJhc2UgbmFtZXMsIHRhYmxlIG5hbWVzLCBjb2x1bW4gbmFtZXMpIHRoYXQgY29udGFpbiBzcGVjaWFsIGNoYXJhY3RlcnMgc3VjaCBhcyBoeXBoZW5zIChgLWApIG5lZWQgdG8gYmUgcHJvcGVybHkgcXVvdGVkLiBJbiBNeVNRTCwgeW91IGNhbiB1c2UgYmFja3RpY2tzIChgYCBgIGBgKSB0byBxdW90ZSBpZGVudGlmaWVycy5cblxuIyMgVGhlIFNvbHV0aW9uXG5cbkkgbWFkZSB0d28gY2hhbmdlcyB0byBmaXggdGhlIGlzc3VlOlxuXG4xLiBJbiBsaW5lIDc1LCBJIGNoYW5nZWQ6XG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gbWljcm8tYWNjb3VudC51c2VyIG9uIG1pY3JvLWFjY291bnQudXNlci5pZCA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzLmN1c3RvbWVyX2lkXCIpXG4gICBgYGBcbiAgIHRvOlxuICAgYGBgZ29cbiAgIHF1ZXJ5LkpvaW5zKFwibGVmdCBqb2luIGBtaWNyby1hY2NvdW50YC5gdXNlcmAgb24gYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gaWRgID0gYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gY3VzdG9tZXJfaWRgXCIpXG4gICBgYGBcblxuMi4gSW4gbGluZSAxMzIsIEkgY2hhbmdlZDpcbiAgIGBgYGdvXG4gICBxdWVyeSA9IHF1ZXJ5LldoZXJlKFwibWljcm8tYWNjb3VudC51c2VyLnRlbF9udW0gbGlrZSA/XCIsIFwiJVwiK3JlcS5UZWxOdW0rXCIlXCIpXG4gICBgYGBcbiAgIHRvOlxuICAgYGBgZ29cbiAgIHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJgbWljcm8tYWNjb3VudGAuYHVzZXJgLmB0ZWxfbnVtYCBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIGBgYFxuXG5CeSBwcm9wZXJseSBxdW90aW5nIHRoZSBpZGVudGlmaWVycyB3aXRoIGJhY2t0aWNrcywgTXlTUUwgd2lsbCBub3cgY29ycmVjdGx5IGludGVycHJldCB0aGUgZGF0YWJhc2UgYW5kIHRhYmxlIG5hbWVzIHRoYXQgY29udGFpbiBoeXBoZW5zLlxuXG4jIyBOZXh0IFN0ZXBzXG5cbllvdSBzaG91bGQgbm93IGJlIGFibGUgdG8gcnVuIHlvdXIgYXBwbGljYXRpb24gd2l0aG91dCBlbmNvdW50ZXJpbmcgdGhlIFNRTCBzeW50YXggZXJyb3IuIElmIHlvdSBoYXZlIGFueSBvdGhlciBzaW1pbGFyIGlzc3VlcyB3aXRoIGRhdGFiYXNlIG9yIHRhYmxlIG5hbWVzIGNvbnRhaW5pbmcgc3BlY2lhbCBjaGFyYWN0ZXJzLCByZW1lbWJlciB0byB1c2UgYmFja3RpY2tzIHRvIHF1b3RlIHRoZW0gaW4geW91ciBTUUwgcXVlcmllcy5cbiJ9LHsiaWQiOjIsInR5cGUiOjIsImNvbnRlbnQiOiIifSx7ImlkIjozLCJ0eXBlIjozLCJjb250ZW50IjoiIn1dLCJzZWVuX3N0YXRlIjoic2VlbiIsInN0cnVjdHVyZWRfcmVxdWVzdF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjEsInRvb2xfcmVzdWx0X25vZGUiOnsiY29udGVudCI6IlN1Y2Nlc3NmdWxseSBlZGl0ZWQgdGhlIGZpbGUgaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nby5cblJlc3VsdCBmb3Igc3RyX3JlcGxhY2UgZm9yIGVudHJ5IHdpdGggaW5kZXggWzBdOlxuUmVwbGFjZW1lbnQgc3VjY2Vzc2Z1bC5cbkVkaXRlZCBzZWN0aW9uIGFmdGVyIElERSBhdXRvLWZvcm1hdHRpbmcgd2FzIGFwcGxpZWQ6XG4gICAxMjhcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiZmluYW5jaWFsX2NvbmZpcm1hdGlvbiA9ID9cIiwgcmVxLkZpbmFuY2lhbENvbmZpcm1hdGlvbilcbiAgIDEyOVx0XHR9XG4gICAxMzBcdFxuICAgMTMxXHRcdGlmIHJlcS5UZWxOdW0gIT0gXCJcIiB7XG4gICAxMzJcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gdGVsX251bWAgbGlrZSA/XCIsIFwiJVwiK3JlcS5UZWxOdW0rXCIlXCIpXG4gICAxMzNcdFx0fVxuICAgMTM0XHRcbiAgIDEzNVx0XHRjb3VudCA6PSAqcXVlcnlcbiAgIDEzNlx0XG5cblJldmlldyB0aGUgY2hhbmdlcyBhbmQgbWFrZSBzdXJlIHRoZXkgYXJlIGFzIGV4cGVjdGVkIChjb3JyZWN0IGluZGVudGF0aW9uLCBubyBkdXBsaWNhdGUgbGluZXMsIGV0YykuXG5FZGl0IHRoZSBmaWxlIGFnYWluIGlmIG5lY2Vzc2FyeS5cbiIsImlzX2Vycm9yIjpmYWxzZSwicmVxdWVzdF9pZCI6IiIsInRvb2xfdXNlX2lkIjoidG9vbHVfdnJ0eF8wMU5NM2hKVVJ4S1VRS3ZydFlvaUxZVzgifX0seyJpZCI6MiwidHlwZSI6NCwiaWRlX3N0YXRlX25vZGUiOnsid29ya3NwYWNlRm9sZGVycyI6W3sicmVwb3NpdG9yeVJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUiLCJmb2xkZXJSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIn1dLCJ3b3Jrc3BhY2VGb2xkZXJzVW5jaGFuZ2VkIjpmYWxzZX19XSwidGltZXN0YW1wIjoiMjAyNS0wNS0wOVQwNjowMzozOS41NjFaIiwicmVzcG9uc2VfdGV4dCI6IkdyZWF0ISBJJ3ZlIGZpeGVkIHRoZSBTUUwgc3ludGF4IGlzc3VlcyBpbiB0aGUgYG9yZGVyUmVjb3Jkc0Rhby5nb2AgZmlsZS4gTGV0IG1lIGV4cGxhaW4gd2hhdCB3YXMgaGFwcGVuaW5nOlxuXG4jIyBUaGUgUHJvYmxlbVxuXG5UaGUgZXJyb3IgbWVzc2FnZSB5b3UgcmVjZWl2ZWQ6XG5gYGBcbjEwNjQgLSBZb3UgaGF2ZSBhbiBlcnJvciBpbiB5b3VyIFNRTCBzeW50YXg7IGNoZWNrIHRoZSBtYW51YWwgdGhhdCBjb3JyZXNwb25kcyB0byB5b3VyIE15U1FMIHNlcnZlciB2ZXJzaW9uIGZvciB0aGUgcmlnaHQgc3ludGF4IHRvIHVzZSBuZWFyICctYWNjb3VudC51c2VyIG9uIG1pY3JvLWFjY291bnQudXNlci5pZCA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzY3VzdG9tZXJfaWQgV0hFUkUgYCcgYXQgbGluZSAxXG5gYGBcblxuVGhpcyB3YXMgaGFwcGVuaW5nIGJlY2F1c2UgaW4gU1FMLCBpZGVudGlmaWVycyAobGlrZSBkYXRhYmFzZSBuYW1lcywgdGFibGUgbmFtZXMsIGNvbHVtbiBuYW1lcykgdGhhdCBjb250YWluIHNwZWNpYWwgY2hhcmFjdGVycyBzdWNoIGFzIGh5cGhlbnMgKGAtYCkgbmVlZCB0byBiZSBwcm9wZXJseSBxdW90ZWQuIEluIE15U1FMLCB5b3UgY2FuIHVzZSBiYWNrdGlja3MgKGBgIGAgYGApIHRvIHF1b3RlIGlkZW50aWZpZXJzLlxuXG4jIyBUaGUgU29sdXRpb25cblxuSSBtYWRlIHR3byBjaGFuZ2VzIHRvIGZpeCB0aGUgaXNzdWU6XG5cbjEuIEluIGxpbmUgNzUsIEkgY2hhbmdlZDpcbiAgIGBgYGdvXG4gICBxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBtaWNyby1hY2NvdW50LnVzZXIgb24gbWljcm8tYWNjb3VudC51c2VyLmlkID0gYnVuZGxlX29yZGVyX3JlY29yZHMuY3VzdG9tZXJfaWRcIilcbiAgIGBgYFxuICAgdG86XG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmBpZGAgPSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9pZGBcIilcbiAgIGBgYFxuXG4yLiBJbiBsaW5lIDEzMiwgSSBjaGFuZ2VkOlxuICAgYGBgZ29cbiAgIHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJtaWNyby1hY2NvdW50LnVzZXIudGVsX251bSBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIGBgYFxuICAgdG86XG4gICBgYGBnb1xuICAgcXVlcnkgPSBxdWVyeS5XaGVyZShcImBtaWNyby1hY2NvdW50YC5gdXNlcmAuYHRlbF9udW1gIGxpa2UgP1wiLCBcIiVcIityZXEuVGVsTnVtK1wiJVwiKVxuICAgYGBgXG5cbkJ5IHByb3Blcmx5IHF1b3RpbmcgdGhlIGlkZW50aWZpZXJzIHdpdGggYmFja3RpY2tzLCBNeVNRTCB3aWxsIG5vdyBjb3JyZWN0bHkgaW50ZXJwcmV0IHRoZSBkYXRhYmFzZSBhbmQgdGFibGUgbmFtZXMgdGhhdCBjb250YWluIGh5cGhlbnMuXG5cbiMjIE5leHQgU3RlcHNcblxuWW91IHNob3VsZCBub3cgYmUgYWJsZSB0byBydW4geW91ciBhcHBsaWNhdGlvbiB3aXRob3V0IGVuY291bnRlcmluZyB0aGUgU1FMIHN5bnRheCBlcnJvci4gSWYgeW91IGhhdmUgYW55IG90aGVyIHNpbWlsYXIgaXNzdWVzIHdpdGggZGF0YWJhc2Ugb3IgdGFibGUgbmFtZXMgY29udGFpbmluZyBzcGVjaWFsIGNoYXJhY3RlcnMsIHJlbWVtYmVyIHRvIHVzZSBiYWNrdGlja3MgdG8gcXVvdGUgdGhlbSBpbiB5b3VyIFNRTCBxdWVyaWVzLlxuIiwid29ya3NwYWNlX2ZpbGVfY2h1bmtzIjpbXX0seyJyZXF1ZXN0X2lkIjoiZjI3ZjJjMGQtNGQ1ZS00ZmViLWFlOTctZjI5NzI0NGY4ZjdiIiwidXVpZCI6IjkwMmYzNjdmLTkxNDMtNDIzMC04NWJjLTc0ODZiNDY0MDc2OSIsImNoYXRJdGVtVHlwZSI6ImFnZW50aWMtY2hlY2twb2ludC1kZWxpbWl0ZXIiLCJzdGF0dXMiOiJzdWNjZXNzIiwiZnJvbVRpbWVzdGFtcCI6MTc0Njc3MDU3NjU1MCwidG9UaW1lc3RhbXAiOjE3NDY3NzA2MzAwNDQsInNlZW5fc3RhdGUiOiJzZWVuIn0seyJyZXF1ZXN0X2lkIjoiMTM4NzllOWEtYjIwYy00ZWEwLTk5ZjUtYWIxZGI1MjI0YTM2Iiwic3RhdHVzIjoiY2FuY2VsbGVkIiwiY2hhdEl0ZW1UeXBlIjoiYWdlbnRpYy10dXJuLWRlbGltaXRlciJ9LHsic3RhdHVzIjoic3VjY2VzcyIsInJlcXVlc3RfaWQiOiI5NDJhNTdjZS1hMzhjLTQ3ZWEtOTFlNy02MWU0NWVlMDYzZWMiLCJyZXF1ZXN0X21lc3NhZ2UiOiLovazkuYnkuIDkuIsgIOWPr+S7peivhuWIqyBgICIsInJpY2hfdGV4dF9qc29uX3JlcHIiOnsidHlwZSI6ImRvYyIsImNvbnRlbnQiOlt7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiLovazkuYnkuIDkuIsgIOWPr+S7peivhuWIqyBgICJ9XX1dfSwibWVudGlvbmVkX2l0ZW1zIjpbXSwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjo1LCJjb250ZW50IjoiIiwidG9vbF91c2UiOnsidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxQzZ3Rk1NRUNLelYxVEVuVnF6ZldpciIsInRvb2xfbmFtZSI6InN0ci1yZXBsYWNlLWVkaXRvciIsImlucHV0X2pzb24iOiJ7XCJjb21tYW5kXCI6IFwidmlld1wiLCBcInBhdGhcIjogXCJpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvXCIsIFwidmlld19yYW5nZVwiOiBbNzAsIDgwXX0iLCJtY3Bfc2VydmVyX25hbWUiOiIiLCJtY3BfdG9vbF9uYW1lIjoiIn19LHsiaWQiOjAsInR5cGUiOjAsImNvbnRlbnQiOiJJIHNlZSB0aGUgaXNzdWUuIFlvdSdyZSB0cnlpbmcgdG8gZXNjYXBlIHRoZSBiYWNrdGlja3MgaW4geW91ciBTUUwgcXVlcnkuIExldCBtZSBoZWxwIHlvdSB3aXRoIHRoZSBwcm9wZXIgZXNjYXBpbmcgc3ludGF4LlxuXG5XaGVuIHlvdSdyZSB1c2luZyBkb3VibGUgcXVvdGVzIHRvIGRlZmluZSBhIHN0cmluZyBpbiBHbyBhbmQgbmVlZCB0byBpbmNsdWRlIGJhY2t0aWNrcyB3aXRoaW4gdGhhdCBzdHJpbmcsIHlvdSBuZWVkIHRvIGVzY2FwZSB0aGUgYmFja3RpY2tzIHdpdGggYSBiYWNrc2xhc2guIEhvd2V2ZXIsIGluIHlvdXIgY3VycmVudCBjb2RlLCB5b3UncmUgZXNjYXBpbmcgdGhlIGZpcnN0IGJhY2t0aWNrIHdpdGggYSBkb3VibGUgYmFja3NsYXNoLCB3aGljaCBpcyBjYXVzaW5nIGlzc3Vlcy5cblxuTGV0IG1lIGZpeCB0aGF0IGZvciB5b3U6XG4ifSx7ImlkIjoyLCJ0eXBlIjoyLCJjb250ZW50IjoiIn0seyJpZCI6MywidHlwZSI6MywiY29udGVudCI6IiJ9XSwic2Vlbl9zdGF0ZSI6InNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjowLCJ0ZXh0X25vZGUiOnsiY29udGVudCI6Iui9rOS5ieS4gOS4iyAg5Y+v5Lul6K+G5YirIGAgIn19LHsiaWQiOjIsInR5cGUiOjQsImlkZV9zdGF0ZV9ub2RlIjp7IndvcmtzcGFjZUZvbGRlcnMiOlt7InJlcG9zaXRvcnlSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIiwiZm9sZGVyUm9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSJ9XSwid29ya3NwYWNlRm9sZGVyc1VuY2hhbmdlZCI6ZmFsc2V9fV0sInRpbWVzdGFtcCI6IjIwMjUtMDUtMDlUMDY6MTE6MTIuMTQzWiIsInJlc3BvbnNlX3RleHQiOiJJIHNlZSB0aGUgaXNzdWUuIFlvdSdyZSB0cnlpbmcgdG8gZXNjYXBlIHRoZSBiYWNrdGlja3MgaW4geW91ciBTUUwgcXVlcnkuIExldCBtZSBoZWxwIHlvdSB3aXRoIHRoZSBwcm9wZXIgZXNjYXBpbmcgc3ludGF4LlxuXG5XaGVuIHlvdSdyZSB1c2luZyBkb3VibGUgcXVvdGVzIHRvIGRlZmluZSBhIHN0cmluZyBpbiBHbyBhbmQgbmVlZCB0byBpbmNsdWRlIGJhY2t0aWNrcyB3aXRoaW4gdGhhdCBzdHJpbmcsIHlvdSBuZWVkIHRvIGVzY2FwZSB0aGUgYmFja3RpY2tzIHdpdGggYSBiYWNrc2xhc2guIEhvd2V2ZXIsIGluIHlvdXIgY3VycmVudCBjb2RlLCB5b3UncmUgZXNjYXBpbmcgdGhlIGZpcnN0IGJhY2t0aWNrIHdpdGggYSBkb3VibGUgYmFja3NsYXNoLCB3aGljaCBpcyBjYXVzaW5nIGlzc3Vlcy5cblxuTGV0IG1lIGZpeCB0aGF0IGZvciB5b3U6XG4iLCJ3b3Jrc3BhY2VfZmlsZV9jaHVua3MiOltdfSx7InN0YXR1cyI6InN1Y2Nlc3MiLCJyZXF1ZXN0X2lkIjoiMGFkNGYwNzMtMjEzYy00YmU4LWIxNzItZDQ2MGNlYjQxMWY4IiwicmVxdWVzdF9tZXNzYWdlIjoiIiwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjo1LCJjb250ZW50IjoiIiwidG9vbF91c2UiOnsidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxNXZjMkphTENVMThpUVpqcGVQYndqciIsInRvb2xfbmFtZSI6InN0ci1yZXBsYWNlLWVkaXRvciIsImlucHV0X2pzb24iOiJ7XCJjb21tYW5kXCI6IFwidmlld1wiLCBcInBhdGhcIjogXCJpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvXCIsIFwidmlld19yYW5nZVwiOiBbMTMwLCAxNDBdfSIsIm1jcF9zZXJ2ZXJfbmFtZSI6IiIsIm1jcF90b29sX25hbWUiOiIifX0seyJpZCI6MCwidHlwZSI6MCwiY29udGVudCI6IiJ9LHsiaWQiOjIsInR5cGUiOjIsImNvbnRlbnQiOiIifSx7ImlkIjozLCJ0eXBlIjozLCJjb250ZW50IjoiIn1dLCJzZWVuX3N0YXRlIjoic2VlbiIsInN0cnVjdHVyZWRfcmVxdWVzdF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjEsInRvb2xfcmVzdWx0X25vZGUiOnsiY29udGVudCI6IkhlcmUncyB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgYGNhdCAtbmAgb24gaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nbzpcbiAgICA3MFx0XHRyZXMuT3JkZXJSZWNvcmRzID0gbWFrZShbXSpidW5kbGUuT3JkZXJSZWNvcmQsIDApXG4gICAgNzFcdFx0cmVjb3JkcyA6PSBtYWtlKFtdKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcywgMClcbiAgICA3Mlx0XG4gICAgNzNcdFx0cXVlcnkgOj0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9KVxuICAgIDc0XHRcbiAgICA3NVx0XHRxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgIG9uIGBtaWNyby1hY2NvdW50YC5gdXNlcmAuYGlkYCA9IGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX2lkYFwiKVxuICAgIDc2XHRcbiAgICA3N1x0XHRpZiByZXEuQ3VzdG9tZXJJRCAhPSBcIlwiIHtcbiAgICA3OFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9pZCA9ID9cIiwgcmVxLkN1c3RvbWVySUQpXG4gICAgNzlcdFx0fVxuICAgIDgwXHRcblRvdGFsIGxpbmVzIGluIGZpbGU6IDIzOVxuIiwiaXNfZXJyb3IiOmZhbHNlLCJyZXF1ZXN0X2lkIjoiIiwidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxQzZ3Rk1NRUNLelYxVEVuVnF6ZldpciJ9fSx7ImlkIjoyLCJ0eXBlIjo0LCJpZGVfc3RhdGVfbm9kZSI6eyJ3b3Jrc3BhY2VGb2xkZXJzIjpbeyJyZXBvc2l0b3J5Um9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSIsImZvbGRlclJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUifV0sIndvcmtzcGFjZUZvbGRlcnNVbmNoYW5nZWQiOmZhbHNlfX1dLCJ0aW1lc3RhbXAiOiIyMDI1LTA1LTA5VDA2OjExOjE4LjkyNVoiLCJyZXNwb25zZV90ZXh0IjoiIiwid29ya3NwYWNlX2ZpbGVfY2h1bmtzIjpbXX0seyJzdGF0dXMiOiJzdWNjZXNzIiwicmVxdWVzdF9pZCI6IjE0ZmUxMDNmLWZmZmItNDMxMy1hNGNmLTUyMmMxZDI1YjA0NyIsInJlcXVlc3RfbWVzc2FnZSI6IiIsInN0cnVjdHVyZWRfb3V0cHV0X25vZGVzIjpbeyJpZCI6MSwidHlwZSI6NSwiY29udGVudCI6IiIsInRvb2xfdXNlIjp7InRvb2xfdXNlX2lkIjoidG9vbHVfdnJ0eF8wMUdTY283cUZkTnB1THlrWmkxdnpWemIiLCJ0b29sX25hbWUiOiJzdHItcmVwbGFjZS1lZGl0b3IiLCJpbnB1dF9qc29uIjoie1wiY29tbWFuZFwiOiBcInN0cl9yZXBsYWNlXCIsIFwicGF0aFwiOiBcImludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ29cIiwgXCJzdHJfcmVwbGFjZV9lbnRyaWVzXCI6IFt7XCJvbGRfc3RyXCI6IFwiXFx0cXVlcnkuSm9pbnMoXFxcImxlZnQgam9pbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgIG9uIGBtaWNyby1hY2NvdW50YC5gdXNlcmAuYGlkYCA9IGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX2lkYFxcXCIpXCIsIFwibmV3X3N0clwiOiBcIlxcdHF1ZXJ5LkpvaW5zKFxcXCJsZWZ0IGpvaW4gXFxcXGBtaWNyby1hY2NvdW50XFxcXGAuXFxcXGB1c2VyXFxcXGAgb24gXFxcXGBtaWNyby1hY2NvdW50XFxcXGAuXFxcXGB1c2VyXFxcXGAuXFxcXGBpZFxcXFxgID0gXFxcXGBidW5kbGVfb3JkZXJfcmVjb3Jkc1xcXFxgLlxcXFxgY3VzdG9tZXJfaWRcXFxcYFxcXCIpXCIsIFwib2xkX3N0cl9zdGFydF9saW5lX251bWJlclwiOiA3NSwgXCJvbGRfc3RyX2VuZF9saW5lX251bWJlclwiOiA3NX1dfSIsIm1jcF9zZXJ2ZXJfbmFtZSI6IiIsIm1jcF90b29sX25hbWUiOiIifX0seyJpZCI6MCwidHlwZSI6MCwiY29udGVudCI6Ik5vdyBJJ2xsIHVwZGF0ZSBib3RoIGxvY2F0aW9ucyB0byBwcm9wZXJseSBlc2NhcGUgdGhlIGJhY2t0aWNrczpcbiJ9LHsiaWQiOjIsInR5cGUiOjIsImNvbnRlbnQiOiIifSx7ImlkIjozLCJ0eXBlIjozLCJjb250ZW50IjoiIn1dLCJzZWVuX3N0YXRlIjoic2VlbiIsInN0cnVjdHVyZWRfcmVxdWVzdF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjEsInRvb2xfcmVzdWx0X25vZGUiOnsiY29udGVudCI6IkhlcmUncyB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgYGNhdCAtbmAgb24gaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nbzpcbiAgIDEzMFx0XG4gICAxMzFcdFx0aWYgcmVxLlRlbE51bSAhPSBcIlwiIHtcbiAgIDEzMlx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJgbWljcm8tYWNjb3VudGAuYHVzZXJgLmB0ZWxfbnVtYCBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIDEzM1x0XHR9XG4gICAxMzRcdFxuICAgMTM1XHRcdGNvdW50IDo9ICpxdWVyeVxuICAgMTM2XHRcbiAgIDEzN1x0XHRpZiByZXEuUGFnZVNpemUgIT0gMCAmJiByZXEuUGFnZSAhPSAwIHtcbiAgIDEzOFx0XHRcdHF1ZXJ5ID0gcXVlcnkuTGltaXQoaW50KHJlcS5QYWdlU2l6ZSkpLk9mZnNldChpbnQocmVxLlBhZ2UtMSkgKiBpbnQocmVxLlBhZ2VTaXplKSlcbiAgIDEzOVx0XHR9XG4gICAxNDBcdFxuVG90YWwgbGluZXMgaW4gZmlsZTogMjM5XG4iLCJpc19lcnJvciI6ZmFsc2UsInJlcXVlc3RfaWQiOiIiLCJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDE1dmMySmFMQ1UxOGlRWmpwZVBid2pyIn19LHsiaWQiOjIsInR5cGUiOjQsImlkZV9zdGF0ZV9ub2RlIjp7IndvcmtzcGFjZUZvbGRlcnMiOlt7InJlcG9zaXRvcnlSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIiwiZm9sZGVyUm9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSJ9XSwid29ya3NwYWNlRm9sZGVyc1VuY2hhbmdlZCI6ZmFsc2V9fV0sInRpbWVzdGFtcCI6IjIwMjUtMDUtMDlUMDY6MTE6MjQuMTEyWiIsInJlc3BvbnNlX3RleHQiOiJOb3cgSSdsbCB1cGRhdGUgYm90aCBsb2NhdGlvbnMgdG8gcHJvcGVybHkgZXNjYXBlIHRoZSBiYWNrdGlja3M6XG4iLCJ3b3Jrc3BhY2VfZmlsZV9jaHVua3MiOltdfSx7InN0YXR1cyI6InN1Y2Nlc3MiLCJyZXF1ZXN0X2lkIjoiMjFhNWRhNDItMzc3Ni00ZDk5LTkyZGEtN2I5ZTBjOWVhZjk4IiwicmVxdWVzdF9tZXNzYWdlIjoiIiwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjo1LCJjb250ZW50IjoiIiwidG9vbF91c2UiOnsidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxUG0xTHB5SnQ2Y3NkOWhYNXdveXFWbSIsInRvb2xfbmFtZSI6InN0ci1yZXBsYWNlLWVkaXRvciIsImlucHV0X2pzb24iOiJ7XCJjb21tYW5kXCI6IFwic3RyX3JlcGxhY2VcIiwgXCJwYXRoXCI6IFwiaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nb1wiLCBcInN0cl9yZXBsYWNlX2VudHJpZXNcIjogW3tcIm9sZF9zdHJcIjogXCJcXHRcXHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFxcXCJgbWljcm8tYWNjb3VudGAuYHVzZXJgLmB0ZWxfbnVtYCBsaWtlID9cXFwiLCBcXFwiJVxcXCIrcmVxLlRlbE51bStcXFwiJVxcXCIpXCIsIFwibmV3X3N0clwiOiBcIlxcdFxcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXFxcIlxcXFxgbWljcm8tYWNjb3VudFxcXFxgLlxcXFxgdXNlclxcXFxgLlxcXFxgdGVsX251bVxcXFxgIGxpa2UgP1xcXCIsIFxcXCIlXFxcIityZXEuVGVsTnVtK1xcXCIlXFxcIilcIiwgXCJvbGRfc3RyX3N0YXJ0X2xpbmVfbnVtYmVyXCI6IDEzMiwgXCJvbGRfc3RyX2VuZF9saW5lX251bWJlclwiOiAxMzJ9XX0iLCJtY3Bfc2VydmVyX25hbWUiOiIiLCJtY3BfdG9vbF9uYW1lIjoiIn19LHsiaWQiOjAsInR5cGUiOjAsImNvbnRlbnQiOiIifSx7ImlkIjoyLCJ0eXBlIjoyLCJjb250ZW50IjoiIn0seyJpZCI6MywidHlwZSI6MywiY29udGVudCI6IiJ9XSwic2Vlbl9zdGF0ZSI6InNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjoxLCJ0b29sX3Jlc3VsdF9ub2RlIjp7ImNvbnRlbnQiOiJTdWNjZXNzZnVsbHkgZWRpdGVkIHRoZSBmaWxlIGludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ28uXG5SZXN1bHQgZm9yIHN0cl9yZXBsYWNlIGZvciBlbnRyeSB3aXRoIGluZGV4IFswXTpcblJlcGxhY2VtZW50IHN1Y2Nlc3NmdWwuXG5FZGl0ZWQgc2VjdGlvbiBhZnRlciBJREUgYXV0by1mb3JtYXR0aW5nIHdhcyBhcHBsaWVkOlxuICAgIDcxXHRcdHJlY29yZHMgOj0gbWFrZShbXSptb2RlbC5CdW5kbGVPcmRlclJlY29yZHMsIDApXG4gICAgNzJcdFxuICAgIDczXHRcdHF1ZXJ5IDo9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLk1vZGVsKCZtb2RlbC5CdW5kbGVPcmRlclJlY29yZHN7fSlcbiAgICA3NFx0XG4gICAgNzVcdFx0cXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gXFxgbWljcm8tYWNjb3VudFxcYC5cXGB1c2VyXFxgIG9uIFxcYG1pY3JvLWFjY291bnRcXGAuXFxgdXNlclxcYC5cXGBpZFxcYCA9IFxcYGJ1bmRsZV9vcmRlcl9yZWNvcmRzXFxgLlxcYGN1c3RvbWVyX2lkXFxgXCIpXG4gICAgNzZcdFxuICAgIDc3XHRcdGlmIHJlcS5DdXN0b21lcklEICE9IFwiXCIge1xuICAgIDc4XHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImN1c3RvbWVyX2lkID0gP1wiLCByZXEuQ3VzdG9tZXJJRClcbiAgICA3OVx0XHR9XG5cblJldmlldyB0aGUgY2hhbmdlcyBhbmQgbWFrZSBzdXJlIHRoZXkgYXJlIGFzIGV4cGVjdGVkIChjb3JyZWN0IGluZGVudGF0aW9uLCBubyBkdXBsaWNhdGUgbGluZXMsIGV0YykuXG5FZGl0IHRoZSBmaWxlIGFnYWluIGlmIG5lY2Vzc2FyeS5cbiIsImlzX2Vycm9yIjpmYWxzZSwicmVxdWVzdF9pZCI6IiIsInRvb2xfdXNlX2lkIjoidG9vbHVfdnJ0eF8wMUdTY283cUZkTnB1THlrWmkxdnpWemIifX0seyJpZCI6MiwidHlwZSI6NCwiaWRlX3N0YXRlX25vZGUiOnsid29ya3NwYWNlRm9sZGVycyI6W3sicmVwb3NpdG9yeVJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUiLCJmb2xkZXJSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIn1dLCJ3b3Jrc3BhY2VGb2xkZXJzVW5jaGFuZ2VkIjpmYWxzZX19XSwidGltZXN0YW1wIjoiMjAyNS0wNS0wOVQwNjoxMTozMS43NThaIiwicmVzcG9uc2VfdGV4dCI6IiIsIndvcmtzcGFjZV9maWxlX2NodW5rcyI6W119LHsic3RhdHVzIjoic3VjY2VzcyIsInJlcXVlc3RfaWQiOiJiYTA2ZGRkNi02NTUyLTQyNzgtODQ2MC03Yzg0MTc1M2M0M2YiLCJyZXF1ZXN0X21lc3NhZ2UiOiIiLCJzdHJ1Y3R1cmVkX291dHB1dF9ub2RlcyI6W3siaWQiOjAsInR5cGUiOjAsImNvbnRlbnQiOiJQZXJmZWN0ISBJJ3ZlIHVwZGF0ZWQgYm90aCBTUUwgcXVlcmllcyB0byBwcm9wZXJseSBlc2NhcGUgdGhlIGJhY2t0aWNrcy4gSGVyZSdzIHdoYXQgSSBkaWQ6XG5cbiMjIFRoZSBTb2x1dGlvblxuXG5JbiBHbyBzdHJpbmdzLCB3aGVuIHlvdSB3YW50IHRvIGluY2x1ZGUgYSBiYWNrdGljayAoYGAgYCBgYCkgY2hhcmFjdGVyIGluc2lkZSBhIGRvdWJsZS1xdW90ZWQgc3RyaW5nLCB5b3UgbmVlZCB0byBlc2NhcGUgaXQgd2l0aCBhIGJhY2tzbGFzaCAoYFxcYCkuIFNpbmNlIHlvdSdyZSB1c2luZyBkb3VibGUgcXVvdGVzIHRvIGRlZmluZSB5b3VyIFNRTCBxdWVyeSBzdHJpbmdzLCBJJ3ZlIGVzY2FwZWQgZWFjaCBiYWNrdGljayB3aXRoIGEgYmFja3NsYXNoLlxuXG4xLiBJbiBsaW5lIDc1LCBJIGNoYW5nZWQ6XG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmBpZGAgPSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9pZGBcIilcbiAgIGBgYFxuICAgdG86XG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gXFxgbWljcm8tYWNjb3VudFxcYC5cXGB1c2VyXFxgIG9uIFxcYG1pY3JvLWFjY291bnRcXGAuXFxgdXNlclxcYC5cXGBpZFxcYCA9IFxcYGJ1bmRsZV9vcmRlcl9yZWNvcmRzXFxgLlxcYGN1c3RvbWVyX2lkXFxgXCIpXG4gICBgYGBcblxuMi4gSW4gbGluZSAxMzIsIEkgY2hhbmdlZDpcbiAgIGBgYGdvXG4gICBxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gdGVsX251bWAgbGlrZSA/XCIsIFwiJVwiK3JlcS5UZWxOdW0rXCIlXCIpXG4gICBgYGBcbiAgIHRvOlxuICAgYGBgZ29cbiAgIHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJcXGBtaWNyby1hY2NvdW50XFxgLlxcYHVzZXJcXGAuXFxgdGVsX251bVxcYCBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIGBgYFxuXG4jIyBXaHkgVGhpcyBXb3Jrc1xuXG5JbiBHbyBzdHJpbmcgbGl0ZXJhbHM6XG4tIEEgc2luZ2xlIGJhY2tzbGFzaCAoYFxcYCkgaXMgdXNlZCB0byBlc2NhcGUgc3BlY2lhbCBjaGFyYWN0ZXJzXG4tIFdoZW4geW91IHdhbnQgdG8gaW5jbHVkZSBhIGJhY2t0aWNrIGluIGEgZG91YmxlLXF1b3RlZCBzdHJpbmcsIHlvdSBuZWVkIHRvIGVzY2FwZSBpdCB3aXRoIGEgYmFja3NsYXNoOiBgXFxgYFxuXG5XaGVuIHRoZXNlIHN0cmluZ3MgYXJlIHBhc3NlZCB0byB0aGUgU1FMIGVuZ2luZSwgdGhlIGJhY2tzbGFzaGVzIHdpbGwgYmUgcmVtb3ZlZCBkdXJpbmcgc3RyaW5nIHByb2Nlc3NpbmcsIGFuZCB0aGUgU1FMIGVuZ2luZSB3aWxsIHNlZSB0aGUgcHJvcGVybHkgcXVvdGVkIGlkZW50aWZpZXJzIHdpdGggYmFja3RpY2tzLlxuXG5UaGlzIHNob3VsZCByZXNvbHZlIHlvdXIgU1FMIHN5bnRheCBlcnJvci4gVGhlIGRhdGFiYXNlIHdpbGwgbm93IGNvcnJlY3RseSBpbnRlcnByZXQgdGhlIGlkZW50aWZpZXJzIHdpdGggaHlwaGVucyBiZWNhdXNlIHRoZXkncmUgcHJvcGVybHkgcXVvdGVkIHdpdGggYmFja3RpY2tzIGluIHRoZSBTUUwgcXVlcnkuXG4ifSx7ImlkIjoyLCJ0eXBlIjoyLCJjb250ZW50IjoiIn0seyJpZCI6MywidHlwZSI6MywiY29udGVudCI6IiJ9XSwic2Vlbl9zdGF0ZSI6InNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjoxLCJ0b29sX3Jlc3VsdF9ub2RlIjp7ImNvbnRlbnQiOiJTdWNjZXNzZnVsbHkgZWRpdGVkIHRoZSBmaWxlIGludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ28uXG5SZXN1bHQgZm9yIHN0cl9yZXBsYWNlIGZvciBlbnRyeSB3aXRoIGluZGV4IFswXTpcblJlcGxhY2VtZW50IHN1Y2Nlc3NmdWwuXG5FZGl0ZWQgc2VjdGlvbiBhZnRlciBJREUgYXV0by1mb3JtYXR0aW5nIHdhcyBhcHBsaWVkOlxuICAgMTI4XHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImZpbmFuY2lhbF9jb25maXJtYXRpb24gPSA/XCIsIHJlcS5GaW5hbmNpYWxDb25maXJtYXRpb24pXG4gICAxMjlcdFx0fVxuICAgMTMwXHRcbiAgIDEzMVx0XHRpZiByZXEuVGVsTnVtICE9IFwiXCIge1xuICAgMTMyXHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcIlxcYG1pY3JvLWFjY291bnRcXGAuXFxgdXNlclxcYC5cXGB0ZWxfbnVtXFxgIGxpa2UgP1wiLCBcIiVcIityZXEuVGVsTnVtK1wiJVwiKVxuICAgMTMzXHRcdH1cbiAgIDEzNFx0XG4gICAxMzVcdFx0Y291bnQgOj0gKnF1ZXJ5XG4gICAxMzZcdFxuXG5SZXZpZXcgdGhlIGNoYW5nZXMgYW5kIG1ha2Ugc3VyZSB0aGV5IGFyZSBhcyBleHBlY3RlZCAoY29ycmVjdCBpbmRlbnRhdGlvbiwgbm8gZHVwbGljYXRlIGxpbmVzLCBldGMpLlxuRWRpdCB0aGUgZmlsZSBhZ2FpbiBpZiBuZWNlc3NhcnkuXG4iLCJpc19lcnJvciI6ZmFsc2UsInJlcXVlc3RfaWQiOiIiLCJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDFQbTFMcHlKdDZjc2Q5aFg1d295cVZtIn19LHsiaWQiOjIsInR5cGUiOjQsImlkZV9zdGF0ZV9ub2RlIjp7IndvcmtzcGFjZUZvbGRlcnMiOlt7InJlcG9zaXRvcnlSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIiwiZm9sZGVyUm9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSJ9XSwid29ya3NwYWNlRm9sZGVyc1VuY2hhbmdlZCI6ZmFsc2V9fV0sInRpbWVzdGFtcCI6IjIwMjUtMDUtMDlUMDY6MTE6MzguNjEzWiIsInJlc3BvbnNlX3RleHQiOiJQZXJmZWN0ISBJJ3ZlIHVwZGF0ZWQgYm90aCBTUUwgcXVlcmllcyB0byBwcm9wZXJseSBlc2NhcGUgdGhlIGJhY2t0aWNrcy4gSGVyZSdzIHdoYXQgSSBkaWQ6XG5cbiMjIFRoZSBTb2x1dGlvblxuXG5JbiBHbyBzdHJpbmdzLCB3aGVuIHlvdSB3YW50IHRvIGluY2x1ZGUgYSBiYWNrdGljayAoYGAgYCBgYCkgY2hhcmFjdGVyIGluc2lkZSBhIGRvdWJsZS1xdW90ZWQgc3RyaW5nLCB5b3UgbmVlZCB0byBlc2NhcGUgaXQgd2l0aCBhIGJhY2tzbGFzaCAoYFxcYCkuIFNpbmNlIHlvdSdyZSB1c2luZyBkb3VibGUgcXVvdGVzIHRvIGRlZmluZSB5b3VyIFNRTCBxdWVyeSBzdHJpbmdzLCBJJ3ZlIGVzY2FwZWQgZWFjaCBiYWNrdGljayB3aXRoIGEgYmFja3NsYXNoLlxuXG4xLiBJbiBsaW5lIDc1LCBJIGNoYW5nZWQ6XG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmBpZGAgPSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9pZGBcIilcbiAgIGBgYFxuICAgdG86XG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gXFxgbWljcm8tYWNjb3VudFxcYC5cXGB1c2VyXFxgIG9uIFxcYG1pY3JvLWFjY291bnRcXGAuXFxgdXNlclxcYC5cXGBpZFxcYCA9IFxcYGJ1bmRsZV9vcmRlcl9yZWNvcmRzXFxgLlxcYGN1c3RvbWVyX2lkXFxgXCIpXG4gICBgYGBcblxuMi4gSW4gbGluZSAxMzIsIEkgY2hhbmdlZDpcbiAgIGBgYGdvXG4gICBxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gdGVsX251bWAgbGlrZSA/XCIsIFwiJVwiK3JlcS5UZWxOdW0rXCIlXCIpXG4gICBgYGBcbiAgIHRvOlxuICAgYGBgZ29cbiAgIHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJcXGBtaWNyby1hY2NvdW50XFxgLlxcYHVzZXJcXGAuXFxgdGVsX251bVxcYCBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIGBgYFxuXG4jIyBXaHkgVGhpcyBXb3Jrc1xuXG5JbiBHbyBzdHJpbmcgbGl0ZXJhbHM6XG4tIEEgc2luZ2xlIGJhY2tzbGFzaCAoYFxcYCkgaXMgdXNlZCB0byBlc2NhcGUgc3BlY2lhbCBjaGFyYWN0ZXJzXG4tIFdoZW4geW91IHdhbnQgdG8gaW5jbHVkZSBhIGJhY2t0aWNrIGluIGEgZG91YmxlLXF1b3RlZCBzdHJpbmcsIHlvdSBuZWVkIHRvIGVzY2FwZSBpdCB3aXRoIGEgYmFja3NsYXNoOiBgXFxgYFxuXG5XaGVuIHRoZXNlIHN0cmluZ3MgYXJlIHBhc3NlZCB0byB0aGUgU1FMIGVuZ2luZSwgdGhlIGJhY2tzbGFzaGVzIHdpbGwgYmUgcmVtb3ZlZCBkdXJpbmcgc3RyaW5nIHByb2Nlc3NpbmcsIGFuZCB0aGUgU1FMIGVuZ2luZSB3aWxsIHNlZSB0aGUgcHJvcGVybHkgcXVvdGVkIGlkZW50aWZpZXJzIHdpdGggYmFja3RpY2tzLlxuXG5UaGlzIHNob3VsZCByZXNvbHZlIHlvdXIgU1FMIHN5bnRheCBlcnJvci4gVGhlIGRhdGFiYXNlIHdpbGwgbm93IGNvcnJlY3RseSBpbnRlcnByZXQgdGhlIGlkZW50aWZpZXJzIHdpdGggaHlwaGVucyBiZWNhdXNlIHRoZXkncmUgcHJvcGVybHkgcXVvdGVkIHdpdGggYmFja3RpY2tzIGluIHRoZSBTUUwgcXVlcnkuXG4iLCJ3b3Jrc3BhY2VfZmlsZV9jaHVua3MiOltdfSx7InJlcXVlc3RfaWQiOiI4Mzc4ZTZlMy04MTVmLTQ0NGYtYTAzZi0zMTAxOTY3YmYzN2MiLCJ1dWlkIjoiOTk5ODhiYWYtOTMxYi00OWNkLWFjY2YtMDY0YjBjMDNkYmUyIiwiY2hhdEl0ZW1UeXBlIjoiYWdlbnRpYy1jaGVja3BvaW50LWRlbGltaXRlciIsInN0YXR1cyI6InN1Y2Nlc3MiLCJmcm9tVGltZXN0YW1wIjoxNzQ2NzcwNjMwMDQ0LCJ0b1RpbWVzdGFtcCI6MTc0Njc3MTExMDI2Mywic2Vlbl9zdGF0ZSI6InNlZW4ifSx7InJlcXVlc3RfaWQiOiJlNDNlMGVhZS0yNThlLTQxMDEtOGQ2ZS1iNDU5OTA1NTI1NDIiLCJzdGF0dXMiOiJjYW5jZWxsZWQiLCJjaGF0SXRlbVR5cGUiOiJhZ2VudGljLXR1cm4tZGVsaW1pdGVyIn0seyJzdGF0dXMiOiJzdWNjZXNzIiwicmVxdWVzdF9pZCI6ImI0MWY1MzQyLWFmMzctNGEzNS1hZDA3LTZiMTk3ZTNkNmJlYyIsInJlcXVlc3RfbWVzc2FnZSI6IuaPkOekuuaKpemUmSDmgI7kuYjlm57kuosiLCJyaWNoX3RleHRfanNvbl9yZXByIjp7InR5cGUiOiJkb2MiLCJjb250ZW50IjpbeyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0Ijoi5o+Q56S65oql6ZSZIOaAjuS5iOWbnuS6iyJ9XX1dfSwibWVudGlvbmVkX2l0ZW1zIjpbXSwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjo1LCJjb250ZW50IjoiIiwidG9vbF91c2UiOnsidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxRUY5OUtUeGlVbWp3NkhwWkMxd25MZiIsInRvb2xfbmFtZSI6InN0ci1yZXBsYWNlLWVkaXRvciIsImlucHV0X2pzb24iOiJ7XCJjb21tYW5kXCI6IFwidmlld1wiLCBcInBhdGhcIjogXCJpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvXCIsIFwidmlld19yYW5nZVwiOiBbNzAsIDgwXX0iLCJtY3Bfc2VydmVyX25hbWUiOiIiLCJtY3BfdG9vbF9uYW1lIjoiIn19LHsiaWQiOjAsInR5cGUiOjAsImNvbnRlbnQiOiJJIGFwb2xvZ2l6ZSBmb3IgdGhlIGNvbmZ1c2lvbi4gTGV0IG1lIGNoZWNrIHdoYXQgbWlnaHQgYmUgY2F1c2luZyB0aGUgZXJyb3IgYWZ0ZXIgb3VyIGNoYW5nZXMuIExldCdzIHRyeSBhIGRpZmZlcmVudCBhcHByb2FjaCB0byBmaXggdGhlIFNRTCBzeW50YXggaXNzdWUuXG4ifSx7ImlkIjoyLCJ0eXBlIjoyLCJjb250ZW50IjoiIn0seyJpZCI6MywidHlwZSI6MywiY29udGVudCI6IiJ9XSwic2Vlbl9zdGF0ZSI6InNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjowLCJ0ZXh0X25vZGUiOnsiY29udGVudCI6IuaPkOekuuaKpemUmSDmgI7kuYjlm57kuosifX0seyJpZCI6MiwidHlwZSI6NCwiaWRlX3N0YXRlX25vZGUiOnsid29ya3NwYWNlRm9sZGVycyI6W3sicmVwb3NpdG9yeVJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUiLCJmb2xkZXJSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIn1dLCJ3b3Jrc3BhY2VGb2xkZXJzVW5jaGFuZ2VkIjpmYWxzZX19XSwidGltZXN0YW1wIjoiMjAyNS0wNS0wOVQwNjoxNDowMy40OTdaIiwicmVzcG9uc2VfdGV4dCI6IkkgYXBvbG9naXplIGZvciB0aGUgY29uZnVzaW9uLiBMZXQgbWUgY2hlY2sgd2hhdCBtaWdodCBiZSBjYXVzaW5nIHRoZSBlcnJvciBhZnRlciBvdXIgY2hhbmdlcy4gTGV0J3MgdHJ5IGEgZGlmZmVyZW50IGFwcHJvYWNoIHRvIGZpeCB0aGUgU1FMIHN5bnRheCBpc3N1ZS5cbiIsIndvcmtzcGFjZV9maWxlX2NodW5rcyI6W119LHsic3RhdHVzIjoic3VjY2VzcyIsInJlcXVlc3RfaWQiOiJmZDNkN2VlYi0wMGU4LTQwNGEtYmFlNi1mNTNiMThkZjIzOTEiLCJyZXF1ZXN0X21lc3NhZ2UiOiIiLCJzdHJ1Y3R1cmVkX291dHB1dF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjUsImNvbnRlbnQiOiIiLCJ0b29sX3VzZSI6eyJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDE5M1VuSm1MTnF0c2ZGNUxZdFBmNFpLIiwidG9vbF9uYW1lIjoic3RyLXJlcGxhY2UtZWRpdG9yIiwiaW5wdXRfanNvbiI6IntcImNvbW1hbmRcIjogXCJzdHJfcmVwbGFjZVwiLCBcInBhdGhcIjogXCJpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvXCIsIFwic3RyX3JlcGxhY2VfZW50cmllc1wiOiBbe1wib2xkX3N0clwiOiBcIlxcdHF1ZXJ5LkpvaW5zKFxcXCJsZWZ0IGpvaW4gXFxcXGBtaWNyby1hY2NvdW50YC5gdXNlcmAgb24gYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gaWRgID0gYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gY3VzdG9tZXJfaWRgXFxcIilcIiwgXCJuZXdfc3RyXCI6IFwiXFx0cXVlcnkuSm9pbnMoXFxcImxlZnQgam9pbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgIG9uIGBtaWNyby1hY2NvdW50YC5gdXNlcmAuYGlkYCA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzLmN1c3RvbWVyX2lkXFxcIilcIiwgXCJvbGRfc3RyX3N0YXJ0X2xpbmVfbnVtYmVyXCI6IDc1LCBcIm9sZF9zdHJfZW5kX2xpbmVfbnVtYmVyXCI6IDc1fV19IiwibWNwX3NlcnZlcl9uYW1lIjoiIiwibWNwX3Rvb2xfbmFtZSI6IiJ9fSx7ImlkIjowLCJ0eXBlIjowLCJjb250ZW50IjoiSSBzZWUgdGhlIGlzc3VlLiBUaGUgYmFja3NsYXNoZXMgYXJlbid0IGJlaW5nIHByb3Blcmx5IGFwcGxpZWQuIExldCdzIHRyeSBhIGRpZmZlcmVudCBhcHByb2FjaC4gSW5zdGVhZCBvZiB1c2luZyBiYWNrdGlja3MsIGxldCdzIHVzZSBNeVNRTCdzIGFsdGVybmF0aXZlIHF1b3RpbmcgbWVjaGFuaXNtIHdpdGggZG91YmxlIHF1b3RlcyBmb3IgaWRlbnRpZmllcnM6XG4ifSx7ImlkIjoyLCJ0eXBlIjoyLCJjb250ZW50IjoiIn0seyJpZCI6MywidHlwZSI6MywiY29udGVudCI6IiJ9XSwic2Vlbl9zdGF0ZSI6InNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjoxLCJ0b29sX3Jlc3VsdF9ub2RlIjp7ImNvbnRlbnQiOiJIZXJlJ3MgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGBjYXQgLW5gIG9uIGludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ286XG4gICAgNzBcdFx0cmVzLk9yZGVyUmVjb3JkcyA9IG1ha2UoW10qYnVuZGxlLk9yZGVyUmVjb3JkLCAwKVxuICAgIDcxXHRcdHJlY29yZHMgOj0gbWFrZShbXSptb2RlbC5CdW5kbGVPcmRlclJlY29yZHMsIDApXG4gICAgNzJcdFxuICAgIDczXHRcdHF1ZXJ5IDo9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLk1vZGVsKCZtb2RlbC5CdW5kbGVPcmRlclJlY29yZHN7fSlcbiAgICA3NFx0XG4gICAgNzVcdFx0cXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gXFxcXGBtaWNyby1hY2NvdW50YC5gdXNlcmAgb24gYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gaWRgID0gYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gY3VzdG9tZXJfaWRgXCIpXG4gICAgNzZcdFxuICAgIDc3XHRcdGlmIHJlcS5DdXN0b21lcklEICE9IFwiXCIge1xuICAgIDc4XHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImN1c3RvbWVyX2lkID0gP1wiLCByZXEuQ3VzdG9tZXJJRClcbiAgICA3OVx0XHR9XG4gICAgODBcdFxuVG90YWwgbGluZXMgaW4gZmlsZTogMjM5XG4iLCJpc19lcnJvciI6ZmFsc2UsInJlcXVlc3RfaWQiOiIiLCJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDFFRjk5S1R4aVVtanc2SHBaQzF3bkxmIn19LHsiaWQiOjIsInR5cGUiOjQsImlkZV9zdGF0ZV9ub2RlIjp7IndvcmtzcGFjZUZvbGRlcnMiOlt7InJlcG9zaXRvcnlSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIiwiZm9sZGVyUm9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSJ9XSwid29ya3NwYWNlRm9sZGVyc1VuY2hhbmdlZCI6ZmFsc2V9fV0sInRpbWVzdGFtcCI6IjIwMjUtMDUtMDlUMDY6MTQ6MTAuODI5WiIsInJlc3BvbnNlX3RleHQiOiJJIHNlZSB0aGUgaXNzdWUuIFRoZSBiYWNrc2xhc2hlcyBhcmVuJ3QgYmVpbmcgcHJvcGVybHkgYXBwbGllZC4gTGV0J3MgdHJ5IGEgZGlmZmVyZW50IGFwcHJvYWNoLiBJbnN0ZWFkIG9mIHVzaW5nIGJhY2t0aWNrcywgbGV0J3MgdXNlIE15U1FMJ3MgYWx0ZXJuYXRpdmUgcXVvdGluZyBtZWNoYW5pc20gd2l0aCBkb3VibGUgcXVvdGVzIGZvciBpZGVudGlmaWVyczpcbiIsIndvcmtzcGFjZV9maWxlX2NodW5rcyI6W119LHsic3RhdHVzIjoic3VjY2VzcyIsInJlcXVlc3RfaWQiOiIyYTc0MjQxNC1lODg0LTQ5ZWUtODhmZC1jMzBiM2M4N2ViY2IiLCJyZXF1ZXN0X21lc3NhZ2UiOiIiLCJzdHJ1Y3R1cmVkX291dHB1dF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjUsImNvbnRlbnQiOiIiLCJ0b29sX3VzZSI6eyJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDFQa2VwMms2dk05UENidThualZ6WTNhIiwidG9vbF9uYW1lIjoic3RyLXJlcGxhY2UtZWRpdG9yIiwiaW5wdXRfanNvbiI6IntcImNvbW1hbmRcIjogXCJzdHJfcmVwbGFjZVwiLCBcInBhdGhcIjogXCJpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvXCIsIFwic3RyX3JlcGxhY2VfZW50cmllc1wiOiBbe1wib2xkX3N0clwiOiBcIlxcdHF1ZXJ5LkpvaW5zKFxcXCJsZWZ0IGpvaW4gXFxcXFxcXFxgbWljcm8tYWNjb3VudGAuYHVzZXJgIG9uIGBtaWNyby1hY2NvdW50YC5gdXNlcmAuYGlkYCA9IGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX2lkYFxcXCIpXCIsIFwibmV3X3N0clwiOiBcIlxcdHF1ZXJ5LkpvaW5zKFxcXCJsZWZ0IGpvaW4gbWljcm9fYWNjb3VudC51c2VyIG9uIG1pY3JvX2FjY291bnQudXNlci5pZCA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzLmN1c3RvbWVyX2lkXFxcIilcIiwgXCJvbGRfc3RyX3N0YXJ0X2xpbmVfbnVtYmVyXCI6IDc1LCBcIm9sZF9zdHJfZW5kX2xpbmVfbnVtYmVyXCI6IDc1fV19IiwibWNwX3NlcnZlcl9uYW1lIjoiIiwibWNwX3Rvb2xfbmFtZSI6IiJ9fSx7ImlkIjowLCJ0eXBlIjowLCJjb250ZW50IjoiSSBzZWUgdGhlIGlzc3VlLiBMZXQgbWUgdHJ5IGFnYWluIHdpdGggdGhlIGV4YWN0IHN0cmluZyB0aGF0J3MgaW4gdGhlIGZpbGU6XG4ifSx7ImlkIjoyLCJ0eXBlIjoyLCJjb250ZW50IjoiIn0seyJpZCI6MywidHlwZSI6MywiY29udGVudCI6IiJ9XSwic2Vlbl9zdGF0ZSI6InNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjoxLCJ0b29sX3Jlc3VsdF9ub2RlIjp7ImNvbnRlbnQiOiJGYWlsZWQgdG8gZWRpdCB0aGUgZmlsZSBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvLiBTZWUgYmVsb3cgZm9yIGRldGFpbHMuXG5SZXN1bHQgZm9yIHN0cl9yZXBsYWNlIGZvciBlbnRyeSB3aXRoIGluZGV4IFswXTpcbk5vIHJlcGxhY2VtZW50IHdhcyBwZXJmb3JtZWQsIG9sZFN0ciBkaWQgbm90IGFwcGVhciB2ZXJiYXRpbSBpbiBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvLlxuVGhlIGNvbnRlbnQgaW4gdGhlIHNwZWNpZmllZCByZWdpb24gaXM6XG4gICAgNzFcdFx0cmVjb3JkcyA6PSBtYWtlKFtdKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcywgMClcbiAgICA3Mlx0XG4gICAgNzNcdFx0cXVlcnkgOj0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9KVxuICAgIDc0XHRcbiAgICA3NVx0XHRxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBcXFxcYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmBpZGAgPSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9pZGBcIilcbiAgICA3Nlx0XG4gICAgNzdcdFx0aWYgcmVxLkN1c3RvbWVySUQgIT0gXCJcIiB7XG4gICAgNzhcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiY3VzdG9tZXJfaWQgPSA/XCIsIHJlcS5DdXN0b21lcklEKVxuICAgIDc5XHRcdH1cblxuRGlmZiBiZXR3ZWVuIG9sZFN0ciBhbmQgdGhlIHNwZWNpZmllZCByZWdpb24gaXM6XG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4tLS0gb2xkU3RyXG4rKysgcmVnaW9uQ29udGVudFxuQEAgLTEsMSArMSwxIEBAXG4tXHRxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBcXGBtaWNyby1hY2NvdW50YC5gdXNlcmAgb24gYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gaWRgID0gYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gY3VzdG9tZXJfaWRgXCIpXG4rXHRxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBcXFxcYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmBpZGAgPSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9pZGBcIilcblxuXG5GaXggZmFpbGVkIHN0cl9yZXBsYWNlIGVudHJpZXMgYWNjb3JkaW5nbHkgYW5kIHRyeSBhZ2Fpbi5cbiIsImlzX2Vycm9yIjp0cnVlLCJyZXF1ZXN0X2lkIjoiIiwidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxOTNVbkptTE5xdHNmRjVMWXRQZjRaSyJ9fSx7ImlkIjoyLCJ0eXBlIjo0LCJpZGVfc3RhdGVfbm9kZSI6eyJ3b3Jrc3BhY2VGb2xkZXJzIjpbeyJyZXBvc2l0b3J5Um9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSIsImZvbGRlclJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUifV0sIndvcmtzcGFjZUZvbGRlcnNVbmNoYW5nZWQiOmZhbHNlfX1dLCJ0aW1lc3RhbXAiOiIyMDI1LTA1LTA5VDA2OjE0OjE4Ljg5OVoiLCJyZXNwb25zZV90ZXh0IjoiSSBzZWUgdGhlIGlzc3VlLiBMZXQgbWUgdHJ5IGFnYWluIHdpdGggdGhlIGV4YWN0IHN0cmluZyB0aGF0J3MgaW4gdGhlIGZpbGU6XG4iLCJ3b3Jrc3BhY2VfZmlsZV9jaHVua3MiOltdfSx7InN0YXR1cyI6InN1Y2Nlc3MiLCJyZXF1ZXN0X2lkIjoiYjM2YWMwOGQtN2MxZS00YmRlLWIwNzQtOTYwYTEwM2I4Mzg4IiwicmVxdWVzdF9tZXNzYWdlIjoiIiwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjo1LCJjb250ZW50IjoiIiwidG9vbF91c2UiOnsidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxRERCOUpIWERnSmdwOHptaHQyQ2duOSIsInRvb2xfbmFtZSI6InN0ci1yZXBsYWNlLWVkaXRvciIsImlucHV0X2pzb24iOiJ7XCJjb21tYW5kXCI6IFwidmlld1wiLCBcInBhdGhcIjogXCJpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvXCIsIFwidmlld19yYW5nZVwiOiBbMTMwLCAxNDBdfSIsIm1jcF9zZXJ2ZXJfbmFtZSI6IiIsIm1jcF90b29sX25hbWUiOiIifX0seyJpZCI6MCwidHlwZSI6MCwiY29udGVudCI6Ik5vdyBsZXQncyBmaXggdGhlIG90aGVyIGluc3RhbmNlOlxuIn0seyJpZCI6MiwidHlwZSI6MiwiY29udGVudCI6IiJ9LHsiaWQiOjMsInR5cGUiOjMsImNvbnRlbnQiOiIifV0sInNlZW5fc3RhdGUiOiJzZWVuIiwic3RydWN0dXJlZF9yZXF1ZXN0X25vZGVzIjpbeyJpZCI6MSwidHlwZSI6MSwidG9vbF9yZXN1bHRfbm9kZSI6eyJjb250ZW50IjoiU3VjY2Vzc2Z1bGx5IGVkaXRlZCB0aGUgZmlsZSBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvLlxuUmVzdWx0IGZvciBzdHJfcmVwbGFjZSBmb3IgZW50cnkgd2l0aCBpbmRleCBbMF06XG5SZXBsYWNlbWVudCBzdWNjZXNzZnVsLlxuRWRpdGVkIHNlY3Rpb24gYWZ0ZXIgSURFIGF1dG8tZm9ybWF0dGluZyB3YXMgYXBwbGllZDpcbiAgICA3MVx0XHRyZWNvcmRzIDo9IG1ha2UoW10qbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzLCAwKVxuICAgIDcyXHRcbiAgICA3M1x0XHRxdWVyeSA6PSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5Nb2RlbCgmbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRze30pXG4gICAgNzRcdFxuICAgIDc1XHRcdHF1ZXJ5LkpvaW5zKFwibGVmdCBqb2luIG1pY3JvX2FjY291bnQudXNlciBvbiBtaWNyb19hY2NvdW50LnVzZXIuaWQgPSBidW5kbGVfb3JkZXJfcmVjb3Jkcy5jdXN0b21lcl9pZFwiKVxuICAgIDc2XHRcbiAgICA3N1x0XHRpZiByZXEuQ3VzdG9tZXJJRCAhPSBcIlwiIHtcbiAgICA3OFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9pZCA9ID9cIiwgcmVxLkN1c3RvbWVySUQpXG4gICAgNzlcdFx0fVxuXG5SZXZpZXcgdGhlIGNoYW5nZXMgYW5kIG1ha2Ugc3VyZSB0aGV5IGFyZSBhcyBleHBlY3RlZCAoY29ycmVjdCBpbmRlbnRhdGlvbiwgbm8gZHVwbGljYXRlIGxpbmVzLCBldGMpLlxuRWRpdCB0aGUgZmlsZSBhZ2FpbiBpZiBuZWNlc3NhcnkuXG4iLCJpc19lcnJvciI6ZmFsc2UsInJlcXVlc3RfaWQiOiIiLCJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDFQa2VwMms2dk05UENidThualZ6WTNhIn19LHsiaWQiOjIsInR5cGUiOjQsImlkZV9zdGF0ZV9ub2RlIjp7IndvcmtzcGFjZUZvbGRlcnMiOlt7InJlcG9zaXRvcnlSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIiwiZm9sZGVyUm9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSJ9XSwid29ya3NwYWNlRm9sZGVyc1VuY2hhbmdlZCI6ZmFsc2V9fV0sInRpbWVzdGFtcCI6IjIwMjUtMDUtMDlUMDY6MTQ6MjYuNDMxWiIsInJlc3BvbnNlX3RleHQiOiJOb3cgbGV0J3MgZml4IHRoZSBvdGhlciBpbnN0YW5jZTpcbiIsIndvcmtzcGFjZV9maWxlX2NodW5rcyI6W119LHsic3RhdHVzIjoic3VjY2VzcyIsInJlcXVlc3RfaWQiOiIzN2JmNjYwYy1mMzAwLTRmNzEtYjUzZi00MzliNjQ5MzZlMTMiLCJyZXF1ZXN0X21lc3NhZ2UiOiIiLCJzdHJ1Y3R1cmVkX291dHB1dF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjUsImNvbnRlbnQiOiIiLCJ0b29sX3VzZSI6eyJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDFDZ01ZVkVZamtmQ3Q3UGI1ZnVnbXF1IiwidG9vbF9uYW1lIjoic3RyLXJlcGxhY2UtZWRpdG9yIiwiaW5wdXRfanNvbiI6IntcImNvbW1hbmRcIjogXCJzdHJfcmVwbGFjZVwiLCBcInBhdGhcIjogXCJpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvXCIsIFwic3RyX3JlcGxhY2VfZW50cmllc1wiOiBbe1wib2xkX3N0clwiOiBcIlxcdFxcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXFxcImBtaWNyby1hY2NvdW50YC5gdXNlcmAuYHRlbF9udW1gIGxpa2UgP1xcXCIsIFxcXCIlXFxcIityZXEuVGVsTnVtK1xcXCIlXFxcIilcIiwgXCJuZXdfc3RyXCI6IFwiXFx0XFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcXFwibWljcm9fYWNjb3VudC51c2VyLnRlbF9udW0gbGlrZSA/XFxcIiwgXFxcIiVcXFwiK3JlcS5UZWxOdW0rXFxcIiVcXFwiKVwiLCBcIm9sZF9zdHJfc3RhcnRfbGluZV9udW1iZXJcIjogMTMyLCBcIm9sZF9zdHJfZW5kX2xpbmVfbnVtYmVyXCI6IDEzMn1dfSIsIm1jcF9zZXJ2ZXJfbmFtZSI6IiIsIm1jcF90b29sX25hbWUiOiIifX0seyJpZCI6MCwidHlwZSI6MCwiY29udGVudCI6IiJ9LHsiaWQiOjIsInR5cGUiOjIsImNvbnRlbnQiOiIifSx7ImlkIjozLCJ0eXBlIjozLCJjb250ZW50IjoiIn1dLCJzZWVuX3N0YXRlIjoic2VlbiIsInN0cnVjdHVyZWRfcmVxdWVzdF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjEsInRvb2xfcmVzdWx0X25vZGUiOnsiY29udGVudCI6IkhlcmUncyB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgYGNhdCAtbmAgb24gaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nbzpcbiAgIDEzMFx0XG4gICAxMzFcdFx0aWYgcmVxLlRlbE51bSAhPSBcIlwiIHtcbiAgIDEzMlx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJgbWljcm8tYWNjb3VudGAuYHVzZXJgLmB0ZWxfbnVtYCBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIDEzM1x0XHR9XG4gICAxMzRcdFxuICAgMTM1XHRcdGNvdW50IDo9ICpxdWVyeVxuICAgMTM2XHRcbiAgIDEzN1x0XHRpZiByZXEuUGFnZVNpemUgIT0gMCAmJiByZXEuUGFnZSAhPSAwIHtcbiAgIDEzOFx0XHRcdHF1ZXJ5ID0gcXVlcnkuTGltaXQoaW50KHJlcS5QYWdlU2l6ZSkpLk9mZnNldChpbnQocmVxLlBhZ2UtMSkgKiBpbnQocmVxLlBhZ2VTaXplKSlcbiAgIDEzOVx0XHR9XG4gICAxNDBcdFxuVG90YWwgbGluZXMgaW4gZmlsZTogMjM5XG4iLCJpc19lcnJvciI6ZmFsc2UsInJlcXVlc3RfaWQiOiIiLCJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDFEREI5SkhYRGdKZ3A4em1odDJDZ245In19LHsiaWQiOjIsInR5cGUiOjQsImlkZV9zdGF0ZV9ub2RlIjp7IndvcmtzcGFjZUZvbGRlcnMiOlt7InJlcG9zaXRvcnlSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIiwiZm9sZGVyUm9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSJ9XSwid29ya3NwYWNlRm9sZGVyc1VuY2hhbmdlZCI6ZmFsc2V9fV0sInRpbWVzdGFtcCI6IjIwMjUtMDUtMDlUMDY6MTQ6MzYuMTU1WiIsInJlc3BvbnNlX3RleHQiOiIiLCJ3b3Jrc3BhY2VfZmlsZV9jaHVua3MiOltdfSx7InN0YXR1cyI6InN1Y2Nlc3MiLCJyZXF1ZXN0X2lkIjoiODFhMzE5NGItNjQxNy00NWY3LTllMWMtZTg3ZDFjNjY4MDY1IiwicmVxdWVzdF9tZXNzYWdlIjoiIiwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjowLCJ0eXBlIjowLCJjb250ZW50IjoiR3JlYXQhIEkndmUgbWFkZSBhIGRpZmZlcmVudCBhcHByb2FjaCB0byBmaXggdGhlIFNRTCBzeW50YXggaXNzdWUuIEluc3RlYWQgb2YgdHJ5aW5nIHRvIGVzY2FwZSBiYWNrdGlja3MsIEkndmUgcmVwbGFjZWQgdGhlIGRhdGFiYXNlIG5hbWUgd2l0aCBhbiB1bmRlcnNjb3JlIGluc3RlYWQgb2YgYSBoeXBoZW4uXG5cbiMjIFRoZSBTb2x1dGlvblxuXG5JJ3ZlIGNoYW5nZWQgdGhlIGRhdGFiYXNlIG5hbWUgZnJvbSBgbWljcm8tYWNjb3VudGAgdG8gYG1pY3JvX2FjY291bnRgIGluIHRoZSBTUUwgcXVlcmllcy4gVGhpcyBhdm9pZHMgdGhlIG5lZWQgZm9yIHNwZWNpYWwgcXVvdGluZyBzaW5jZSBkYXRhYmFzZSBuYW1lcyB3aXRoIHVuZGVyc2NvcmVzIGRvbid0IHJlcXVpcmUgYmFja3RpY2tzIGluIE15U1FMLlxuXG4xLiBJbiBsaW5lIDc1LCBJIGNoYW5nZWQ6XG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmBpZGAgPSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9pZGBcIilcbiAgIGBgYFxuICAgdG86XG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gbWljcm9fYWNjb3VudC51c2VyIG9uIG1pY3JvX2FjY291bnQudXNlci5pZCA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzLmN1c3RvbWVyX2lkXCIpXG4gICBgYGBcblxuMi4gSW4gbGluZSAxMzIsIEkgY2hhbmdlZDpcbiAgIGBgYGdvXG4gICBxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gdGVsX251bWAgbGlrZSA/XCIsIFwiJVwiK3JlcS5UZWxOdW0rXCIlXCIpXG4gICBgYGBcbiAgIHRvOlxuICAgYGBgZ29cbiAgIHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJtaWNyb19hY2NvdW50LnVzZXIudGVsX251bSBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIGBgYFxuXG4jIyBXaHkgVGhpcyBTaG91bGQgV29ya1xuXG5UaGlzIGFwcHJvYWNoIGFzc3VtZXMgdGhhdDpcbjEuIFRoZSBhY3R1YWwgZGF0YWJhc2UgbmFtZSBpbiB5b3VyIE15U1FMIHNlcnZlciBpcyBgbWljcm9fYWNjb3VudGAgKHdpdGggYW4gdW5kZXJzY29yZSksIG9yXG4yLiBZb3UgY2FuIHJlbmFtZSB0aGUgZGF0YWJhc2UgZnJvbSBgbWljcm8tYWNjb3VudGAgdG8gYG1pY3JvX2FjY291bnRgIGluIHlvdXIgTXlTUUwgc2VydmVyXG5cbklmIHRoZSBkYXRhYmFzZSBuYW1lIGlzIGFjdHVhbGx5IGBtaWNyby1hY2NvdW50YCB3aXRoIGEgaHlwaGVuIGFuZCB5b3UgY2Fubm90IHJlbmFtZSBpdCwgdGhlbiB3ZSBuZWVkIHRvIGZpbmQgYSBkaWZmZXJlbnQgc29sdXRpb24uIEluIHRoYXQgY2FzZSwgcGxlYXNlIGxldCBtZSBrbm93IGFuZCBJIGNhbiBzdWdnZXN0IGFsdGVybmF0aXZlIGFwcHJvYWNoZXMuXG5cbiMjIEFsdGVybmF0aXZlIFNvbHV0aW9uc1xuXG5JZiB0aGUgZGF0YWJhc2UgbmFtZSBtdXN0IHJlbWFpbiBgbWljcm8tYWNjb3VudGAgd2l0aCBhIGh5cGhlbiwgaGVyZSBhcmUgc29tZSBhbHRlcm5hdGl2ZSBzb2x1dGlvbnM6XG5cbjEuIFVzZSBkb3VibGUgcXVvdGVzIGluc3RlYWQgb2YgYmFja3RpY2tzIChpZiB5b3VyIE15U1FMIHNlcnZlciBpcyBjb25maWd1cmVkIHRvIGFjY2VwdCBBTlNJIFNRTCBzdGFuZGFyZCBxdW90aW5nKTpcbiAgIGBgYGdvXG4gICBxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBcXFwibWljcm8tYWNjb3VudFxcXCIuXFxcInVzZXJcXFwiIG9uIFxcXCJtaWNyby1hY2NvdW50XFxcIi5cXFwidXNlclxcXCIuXFxcImlkXFxcIiA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzLmN1c3RvbWVyX2lkXCIpXG4gICBgYGBcblxuMi4gVXNlIHNxdWFyZSBicmFja2V0cyAoaWYgeW91ciBNeVNRTCBzZXJ2ZXIgaXMgY29uZmlndXJlZCB0byBhY2NlcHQgU1FMIFNlcnZlci1zdHlsZSBxdW90aW5nKTpcbiAgIGBgYGdvXG4gICBxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBbbWljcm8tYWNjb3VudF0uW3VzZXJdIG9uIFttaWNyby1hY2NvdW50XS5bdXNlcl0uW2lkXSA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzLmN1c3RvbWVyX2lkXCIpXG4gICBgYGBcblxuMy4gQ3JlYXRlIGEgZGF0YWJhc2UgYWxpYXMgaW4geW91ciBNeVNRTCBjb25maWd1cmF0aW9uLlxuXG5QbGVhc2UgbGV0IG1lIGtub3cgaWYgdGhlIGN1cnJlbnQgc29sdXRpb24gd29ya3Mgb3IgaWYgeW91IG5lZWQgdG8gdHJ5IG9uZSBvZiB0aGUgYWx0ZXJuYXRpdmVzLlxuIn0seyJpZCI6MiwidHlwZSI6MiwiY29udGVudCI6IiJ9LHsiaWQiOjMsInR5cGUiOjMsImNvbnRlbnQiOiIifV0sInNlZW5fc3RhdGUiOiJzZWVuIiwic3RydWN0dXJlZF9yZXF1ZXN0X25vZGVzIjpbeyJpZCI6MSwidHlwZSI6MSwidG9vbF9yZXN1bHRfbm9kZSI6eyJjb250ZW50IjoiU3VjY2Vzc2Z1bGx5IGVkaXRlZCB0aGUgZmlsZSBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvLlxuUmVzdWx0IGZvciBzdHJfcmVwbGFjZSBmb3IgZW50cnkgd2l0aCBpbmRleCBbMF06XG5SZXBsYWNlbWVudCBzdWNjZXNzZnVsLlxuRWRpdGVkIHNlY3Rpb24gYWZ0ZXIgSURFIGF1dG8tZm9ybWF0dGluZyB3YXMgYXBwbGllZDpcbiAgIDEyOFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJmaW5hbmNpYWxfY29uZmlybWF0aW9uID0gP1wiLCByZXEuRmluYW5jaWFsQ29uZmlybWF0aW9uKVxuICAgMTI5XHRcdH1cbiAgIDEzMFx0XG4gICAxMzFcdFx0aWYgcmVxLlRlbE51bSAhPSBcIlwiIHtcbiAgIDEzMlx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJtaWNyb19hY2NvdW50LnVzZXIudGVsX251bSBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIDEzM1x0XHR9XG4gICAxMzRcdFxuICAgMTM1XHRcdGNvdW50IDo9ICpxdWVyeVxuICAgMTM2XHRcblxuUmV2aWV3IHRoZSBjaGFuZ2VzIGFuZCBtYWtlIHN1cmUgdGhleSBhcmUgYXMgZXhwZWN0ZWQgKGNvcnJlY3QgaW5kZW50YXRpb24sIG5vIGR1cGxpY2F0ZSBsaW5lcywgZXRjKS5cbkVkaXQgdGhlIGZpbGUgYWdhaW4gaWYgbmVjZXNzYXJ5LlxuIiwiaXNfZXJyb3IiOmZhbHNlLCJyZXF1ZXN0X2lkIjoiIiwidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxQ2dNWVZFWWprZkN0N1BiNWZ1Z21xdSJ9fSx7ImlkIjoyLCJ0eXBlIjo0LCJpZGVfc3RhdGVfbm9kZSI6eyJ3b3Jrc3BhY2VGb2xkZXJzIjpbeyJyZXBvc2l0b3J5Um9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSIsImZvbGRlclJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUifV0sIndvcmtzcGFjZUZvbGRlcnNVbmNoYW5nZWQiOmZhbHNlfX1dLCJ0aW1lc3RhbXAiOiIyMDI1LTA1LTA5VDA2OjE0OjQ3LjM3MFoiLCJyZXNwb25zZV90ZXh0IjoiR3JlYXQhIEkndmUgbWFkZSBhIGRpZmZlcmVudCBhcHByb2FjaCB0byBmaXggdGhlIFNRTCBzeW50YXggaXNzdWUuIEluc3RlYWQgb2YgdHJ5aW5nIHRvIGVzY2FwZSBiYWNrdGlja3MsIEkndmUgcmVwbGFjZWQgdGhlIGRhdGFiYXNlIG5hbWUgd2l0aCBhbiB1bmRlcnNjb3JlIGluc3RlYWQgb2YgYSBoeXBoZW4uXG5cbiMjIFRoZSBTb2x1dGlvblxuXG5JJ3ZlIGNoYW5nZWQgdGhlIGRhdGFiYXNlIG5hbWUgZnJvbSBgbWljcm8tYWNjb3VudGAgdG8gYG1pY3JvX2FjY291bnRgIGluIHRoZSBTUUwgcXVlcmllcy4gVGhpcyBhdm9pZHMgdGhlIG5lZWQgZm9yIHNwZWNpYWwgcXVvdGluZyBzaW5jZSBkYXRhYmFzZSBuYW1lcyB3aXRoIHVuZGVyc2NvcmVzIGRvbid0IHJlcXVpcmUgYmFja3RpY2tzIGluIE15U1FMLlxuXG4xLiBJbiBsaW5lIDc1LCBJIGNoYW5nZWQ6XG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmBpZGAgPSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9pZGBcIilcbiAgIGBgYFxuICAgdG86XG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gbWljcm9fYWNjb3VudC51c2VyIG9uIG1pY3JvX2FjY291bnQudXNlci5pZCA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzLmN1c3RvbWVyX2lkXCIpXG4gICBgYGBcblxuMi4gSW4gbGluZSAxMzIsIEkgY2hhbmdlZDpcbiAgIGBgYGdvXG4gICBxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gdGVsX251bWAgbGlrZSA/XCIsIFwiJVwiK3JlcS5UZWxOdW0rXCIlXCIpXG4gICBgYGBcbiAgIHRvOlxuICAgYGBgZ29cbiAgIHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJtaWNyb19hY2NvdW50LnVzZXIudGVsX251bSBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIGBgYFxuXG4jIyBXaHkgVGhpcyBTaG91bGQgV29ya1xuXG5UaGlzIGFwcHJvYWNoIGFzc3VtZXMgdGhhdDpcbjEuIFRoZSBhY3R1YWwgZGF0YWJhc2UgbmFtZSBpbiB5b3VyIE15U1FMIHNlcnZlciBpcyBgbWljcm9fYWNjb3VudGAgKHdpdGggYW4gdW5kZXJzY29yZSksIG9yXG4yLiBZb3UgY2FuIHJlbmFtZSB0aGUgZGF0YWJhc2UgZnJvbSBgbWljcm8tYWNjb3VudGAgdG8gYG1pY3JvX2FjY291bnRgIGluIHlvdXIgTXlTUUwgc2VydmVyXG5cbklmIHRoZSBkYXRhYmFzZSBuYW1lIGlzIGFjdHVhbGx5IGBtaWNyby1hY2NvdW50YCB3aXRoIGEgaHlwaGVuIGFuZCB5b3UgY2Fubm90IHJlbmFtZSBpdCwgdGhlbiB3ZSBuZWVkIHRvIGZpbmQgYSBkaWZmZXJlbnQgc29sdXRpb24uIEluIHRoYXQgY2FzZSwgcGxlYXNlIGxldCBtZSBrbm93IGFuZCBJIGNhbiBzdWdnZXN0IGFsdGVybmF0aXZlIGFwcHJvYWNoZXMuXG5cbiMjIEFsdGVybmF0aXZlIFNvbHV0aW9uc1xuXG5JZiB0aGUgZGF0YWJhc2UgbmFtZSBtdXN0IHJlbWFpbiBgbWljcm8tYWNjb3VudGAgd2l0aCBhIGh5cGhlbiwgaGVyZSBhcmUgc29tZSBhbHRlcm5hdGl2ZSBzb2x1dGlvbnM6XG5cbjEuIFVzZSBkb3VibGUgcXVvdGVzIGluc3RlYWQgb2YgYmFja3RpY2tzIChpZiB5b3VyIE15U1FMIHNlcnZlciBpcyBjb25maWd1cmVkIHRvIGFjY2VwdCBBTlNJIFNRTCBzdGFuZGFyZCBxdW90aW5nKTpcbiAgIGBgYGdvXG4gICBxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBcXFwibWljcm8tYWNjb3VudFxcXCIuXFxcInVzZXJcXFwiIG9uIFxcXCJtaWNyby1hY2NvdW50XFxcIi5cXFwidXNlclxcXCIuXFxcImlkXFxcIiA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzLmN1c3RvbWVyX2lkXCIpXG4gICBgYGBcblxuMi4gVXNlIHNxdWFyZSBicmFja2V0cyAoaWYgeW91ciBNeVNRTCBzZXJ2ZXIgaXMgY29uZmlndXJlZCB0byBhY2NlcHQgU1FMIFNlcnZlci1zdHlsZSBxdW90aW5nKTpcbiAgIGBgYGdvXG4gICBxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBbbWljcm8tYWNjb3VudF0uW3VzZXJdIG9uIFttaWNyby1hY2NvdW50XS5bdXNlcl0uW2lkXSA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzLmN1c3RvbWVyX2lkXCIpXG4gICBgYGBcblxuMy4gQ3JlYXRlIGEgZGF0YWJhc2UgYWxpYXMgaW4geW91ciBNeVNRTCBjb25maWd1cmF0aW9uLlxuXG5QbGVhc2UgbGV0IG1lIGtub3cgaWYgdGhlIGN1cnJlbnQgc29sdXRpb24gd29ya3Mgb3IgaWYgeW91IG5lZWQgdG8gdHJ5IG9uZSBvZiB0aGUgYWx0ZXJuYXRpdmVzLlxuIiwid29ya3NwYWNlX2ZpbGVfY2h1bmtzIjpbXX0seyJyZXF1ZXN0X2lkIjoiMTFjODkwNDYtNWRiZS00YmE1LTg3NjgtMzViNGQyYmNmNjFiIiwidXVpZCI6IjExMzY5NTIwLTdjZmMtNGQ1NC04MmE0LWI5MzI1ZWUxNWUxYyIsImNoYXRJdGVtVHlwZSI6ImFnZW50aWMtY2hlY2twb2ludC1kZWxpbWl0ZXIiLCJzdGF0dXMiOiJzdWNjZXNzIiwiZnJvbVRpbWVzdGFtcCI6MTc0Njc3MTExMDI2MywidG9UaW1lc3RhbXAiOjE3NDY3NzEzMDA4MjcsInNlZW5fc3RhdGUiOiJzZWVuIn1dLCJmZWVkYmFja1N0YXRlcyI6eyJ0ZW1wLWZlLTE5OWMwNDM2LTkwZjUtNDY5Ni05OGQxLTk3YTNlNTY2YTc4YyI6eyJzZWxlY3RlZFJhdGluZyI6MCwiZmVlZGJhY2tOb3RlIjoiIn0sInRlbXAtZmUtMTRiZjY5MjctZDcxNS00OTk3LTkwNDctYzU5YTY0YmE5MjNhIjp7InNlbGVjdGVkUmF0aW5nIjowLCJmZWVkYmFja05vdGUiOiIifSwidGVtcC1mZS01MWU1MmUzZC1jNGExLTQwNmUtODkzMy04ZDNkZWIyMTEzZDQiOnsic2VsZWN0ZWRSYXRpbmciOjAsImZlZWRiYWNrTm90ZSI6IiJ9LCJ0ZW1wLWZlLWM2ZTRjYzhiLWVkYTUtNDgzZi05MzhjLWIyZjJlODM2MDNlMyI6eyJzZWxlY3RlZFJhdGluZyI6MCwiZmVlZGJhY2tOb3RlIjoiIn0sInRlbXAtZmUtZGM1ZWM5MjEtZjdkMC00NGM0LWEzYmUtZTBhODM5ZDZmZWFjIjp7InNlbGVjdGVkUmF0aW5nIjowLCJmZWVkYmFja05vdGUiOiIifSwidGVtcC1mZS02MjdiOWI1Zi0wZGQxLTQzNWItYWIyZi04MjU0OTZiYTc5OTQiOnsic2VsZWN0ZWRSYXRpbmciOjAsImZlZWRiYWNrTm90ZSI6IiJ9LCJ0ZW1wLWZlLWUyOWZiNTJkLTFmN2MtNDEwMi05N2M4LTFmYThhMjBkNGJiZSI6eyJzZWxlY3RlZFJhdGluZyI6MCwiZmVlZGJhY2tOb3RlIjoiIn0sInRlbXAtZmUtZjJmZjUyNTEtMGYyZi00MTRiLTk3ZjAtOTZmNjMwZmMyYTg5Ijp7InNlbGVjdGVkUmF0aW5nIjowLCJmZWVkYmFja05vdGUiOiIifSwidGVtcC1mZS1mMDkyNjYxOC04MDExLTRlOWYtODgwZC01NGI2ODEwMzFlYTciOnsic2VsZWN0ZWRSYXRpbmciOjAsImZlZWRiYWNrTm90ZSI6IiJ9LCJ0ZW1wLWZlLWM5MGNjOTI5LWE4MGYtNDEwNi05ZDM0LTI3MjVhMTE3YWVkMCI6eyJzZWxlY3RlZFJhdGluZyI6MCwiZmVlZGJhY2tOb3RlIjoiIn0sInRlbXAtZmUtY2ZkYzdkODItYWYyNS00ZjQwLTk3NTYtZTJmZTliNGZiMTIyIjp7InNlbGVjdGVkUmF0aW5nIjowLCJmZWVkYmFja05vdGUiOiIifSwidGVtcC1mZS1hY2RmYmU4Ni1iYzk0LTQ2ZjYtYWRlMS05NjM3MTc1ZmI1ZDciOnsic2VsZWN0ZWRSYXRpbmciOjAsImZlZWRiYWNrTm90ZSI6IiJ9LCJ0ZW1wLWZlLWQ1MmJlNzBlLWZiNjAtNDdhNi05NjE5LWI0ZTJmZjlmMDk4OSI6eyJzZWxlY3RlZFJhdGluZyI6MCwiZmVlZGJhY2tOb3RlIjoiIn0sInRlbXAtZmUtY2RhNjE0YTAtMzJiMS00N2FlLWI1NDMtMWJlNTM2MzBiN2Y5Ijp7InNlbGVjdGVkUmF0aW5nIjowLCJmZWVkYmFja05vdGUiOiIifSwidGVtcC1mZS0yMDM2NDA2NS0yYWI1LTRmNDYtODEzNC1jOTA4ZDE5YzNkMTciOnsic2VsZWN0ZWRSYXRpbmciOjAsImZlZWRiYWNrTm90ZSI6IiJ9LCJ0ZW1wLWZlLTBkZTM4ODA4LTJkOTktNGQ1ZS04MzY5LWJjZTU4ZWU0NzlhOSI6eyJzZWxlY3RlZFJhdGluZyI6MCwiZmVlZGJhY2tOb3RlIjoiIn0sInRlbXAtZmUtNWU5NDZkOTctODAwYS00NDcwLTk0ZTAtMzEyZWYxYTMzYmI0Ijp7InNlbGVjdGVkUmF0aW5nIjowLCJmZWVkYmFja05vdGUiOiIifX0sInRvb2xVc2VTdGF0ZXMiOnsiYjY3YjFkOTgtYTBlMi00MThlLTlmNjktYmYzODg1Mzg3MzI2O3Rvb2x1X3ZydHhfMDFTRkd1dWFzdXZoekpqZFBBR2N6N01uIjp7InJlcXVlc3RJZCI6ImI2N2IxZDk4LWEwZTItNDE4ZS05ZjY5LWJmMzg4NTM4NzMyNiIsInRvb2xVc2VJZCI6InRvb2x1X3ZydHhfMDFTRkd1dWFzdXZoekpqZFBBR2N6N01uIiwicGhhc2UiOjUsInJlc3VsdCI6eyJ0ZXh0IjoiVGhlIGZvbGxvd2luZyBjb2RlIHNlY3Rpb25zIHdlcmUgcmV0cmlldmVkOlxuUGF0aDogaW50ZXJuYWwvZGFvL3ZhbHVlQWRkQnVuZGxlRGFvLmdvXG5wYWNrYWdlIGRhb1xuXG5pbXBvcnQgKFxuXHRcIm1pY3JvLWJ1bmRsZS9pbnRlcm5hbC9tb2RlbFwiXG5cdFwibWljcm8tYnVuZGxlL3BrZy9hcHBcIlxuKVxuXG4vLyDlop7lgLzlpZfppJDliJvlu7pcbmZ1bmMgQ3JlYXRlVmFsdWVBZGRCdW5kbGUocmVxICptb2RlbC5WYWx1ZUFkZEJ1bmRsZVByb2ZpbGUpIChlcnIgZXJyb3IpIHtcblx0ZXJyID0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLlZhbHVlQWRkQnVuZGxlUHJvZmlsZXt9KS5DcmVhdGUoJnJlcSkuRXJyb3Jcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmV0dXJuXG5cdH1cblxuXHRyZXR1cm5cbn1cblxuLy8g5aKe5YC85aWX6aSQ5YiX6KGoXG5mdW5jIFZhbHVlQWRkQnVuZGxlTGlzdChwcmljZVR5cGUgaW50MzIpICh2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUgW10qbW9kZWwuVmFsdWVBZGRCdW5kbGVQcm9maWxlLCBlcnIgZXJyb3IpIHtcblx0ZXJyID0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuV2hlcmUoXCJwcmljZV90eXBlID0gP1wiLCBwcmljZVR5cGUpLk9yZGVyKFwibnVtIEFTQ1wiKS5GaW5kKCZ2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUpLkVycm9yXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJldHVyblxuXHR9XG5cdHJldHVyblxufVxuXG4vLyDlop7lgLzlpZfppJDor6bmg4VcbmZ1bmMgVmFsdWVBZGRCdW5kbGVEZXRhaWwodXVpZCBzdHJpbmcpICh2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUgKm1vZGVsLlZhbHVlQWRkQnVuZGxlUHJvZmlsZSwgZXJyIGVycm9yKSB7XG5cblx0ZXJyID0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuV2hlcmUoXCJ1dWlkID0gP1wiLCB1dWlkKS5GaXJzdCgmdmFsdWVBZGRCdW5kbGVQcm9maWxlKS5FcnJvclxuXHRpZiBlcnIgIT0gbmlsIHtcblx0XHRyZXR1cm5cblx0fVxuXG5cdHJldHVyblxufVxuXG5mdW5jIEJ1bmRsZVByb2ZpbGVEZXRhaWwodXVpZCBzdHJpbmcpIChidW5kbGVQcm9maWxlICptb2RlbC5CdW5kbGVQcm9maWxlLCBlcnIgZXJyb3IpIHtcblx0ZXJyID0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuV2hlcmUoXCJ1dWlkID0gP1wiLCB1dWlkKS5GaXJzdCgmYnVuZGxlUHJvZmlsZSkuRXJyb3Jcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmV0dXJuXG5cdH1cblxuXHRyZXR1cm5cbn1cblxuZnVuYyBCdW5kbGVPcmRlclJlY29yZHNEZXRhaWxCeUFkZFVpZCh1dWlkIHN0cmluZykgKGJ1bmRsZU9yZGVyUmVjb3JkcyAqbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzLCBlcnIgZXJyb3IpIHtcblxuXHRlcnIgPSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5XaGVyZShcInZhbHVlX2FkZF9idW5kbGVfdXVpZCA9ID9cIiwgdXVpZCkuRmlyc3QoJmJ1bmRsZU9yZGVyUmVjb3JkcykuRXJyb3Jcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmV0dXJuXG5cdH1cblxuXHRyZXR1cm5cbn1cblxuZnVuYyBHZXRCdW5kbGVPcmRlclJlY29yZHNCeVVzZXJJZEFuZEJ1bmRsZVV1aWQodXNlcklkIGludDMyLCB1dWlkIHN0cmluZykgKGJ1bmRsZU9yZGVyUmVjb3JkcyAqbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzLCBlcnIgZXJyb3IpIHtcblxuXHRlcnIgPSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5XaGVyZShcImN1c3RvbWVyX2lkID0gPyBBTkQgYnVuZGxlX3V1aWQgPSA/XCIsIHVzZXJJZCwgdXVpZCkuRmlyc3QoJmJ1bmRsZU9yZGVyUmVjb3JkcykuRXJyb3Jcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmV0dXJuXG5cdH1cblxuXHRyZXR1cm5cbn1cblxuZnVuYyBHZXRCdW5kbGVPcmRlclJlY29yZHNCeUNvbW1vblVpZEFuZFVzZXJJZChjb21tb25VaWQgc3RyaW5nLCB1c2VySWQgaW50MzIpIChidW5kbGVPcmRlclJlY29yZHMgKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcywgZXJyIGVycm9yKSB7XG5cblx0ZXJyID0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuV2hlcmUoXCJidW5kbGVfY29tbW9uX3VpZCA9ID8gQU5EIGN1c3RvbWVyX2lkID0gP1wiLCBjb21tb25VaWQsIHVzZXJJZCkuRmlyc3QoJmJ1bmRsZU9yZGVyUmVjb3JkcykuRXJyb3Jcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmV0dXJuXG5cdH1cblxuXHRyZXR1cm5cbn1cbi4uLlxuUGF0aDogaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nb1xucGFja2FnZSBkYW9cblxuaW1wb3J0IChcblx0XCJtaWNyby1idW5kbGUvaW50ZXJuYWwvbW9kZWxcIlxuXHRcIm1pY3JvLWJ1bmRsZS9wYi9idW5kbGVcIlxuXHRcIm1pY3JvLWJ1bmRsZS9wa2cvYXBwXCJcblx0Y29tbW9uRXJyIFwibWljcm8tYnVuZGxlL3BrZy9lcnJcIlxuXHRcIm1pY3JvLWJ1bmRsZS9wa2cvbXNnXCJcblx0XCJtaWNyby1idW5kbGUvcGtnL3V0aWxzXCJcbilcblxuZnVuYyBDcmVhdGVPcmRlclJlY29yZChvcmRlclJlY29yZCAqbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzKSAocmVzICpidW5kbGUuQ29tbW9uUmVzcG9uc2UsIGVyciBlcnJvcikge1xuXHRyZXMgPSBuZXcoYnVuZGxlLkNvbW1vblJlc3BvbnNlKVxuXHRvcmRlclJlY29yZC5VVUlEID0gYXBwLk1vZHVsZUNsaWVudHMuU2ZOb2RlLkdlbmVyYXRlKCkuQmFzZTY0KClcblx0b3JkZXJSZWNvcmQuT3JkZXJObyA9IHV0aWxzLkdldE9yZGVyTm8oKVxuXG5cdC8vIOW8gOWQr+S6i+WKoVxuXHR0eCA6PSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5CZWdpbigpXG5cdGRlZmVyIGZ1bmMoKSB7XG5cdFx0aWYgciA6PSByZWNvdmVyKCk7IHIgIT0gbmlsIHtcblx0XHRcdHR4LlJvbGxiYWNrKClcblx0XHR9XG5cdH0oKVxuXG5cdC8vIOWIm+W7uuS4u+iuouWNlVxuXHRpZiBlcnIgPSB0eC5Nb2RlbCgmbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRze30pLkNyZWF0ZSgmb3JkZXJSZWNvcmQpLkVycm9yOyBlcnIgIT0gbmlsIHtcblx0XHR0eC5Sb2xsYmFjaygpXG5cdFx0cmVzLk1zZyA9IG1zZy5FcnJvckNyZWF0ZU9yZGVySW5mb1xuXHRcdHJldHVybiByZXMsIGNvbW1vbkVyci5SZXR1cm5FcnJvcihlcnIsIG1zZy5FcnJvckNyZWF0ZU9yZGVySW5mbywgXCLliJvlu7rorqLljZXkv6Hmga/lpLHotKU6IFwiKVxuXHR9XG5cblx0Ly8g5o+Q5Lqk5LqL5YqhXG5cdGlmIGVyciA9IHR4LkNvbW1pdCgpLkVycm9yOyBlcnIgIT0gbmlsIHtcblx0XHRyZXMuTXNnID0gbXNnLkVycm9yQ29tbWl0VHJhbnNhY3Rpb25cblx0XHRyZXR1cm4gcmVzLCBjb21tb25FcnIuUmV0dXJuRXJyb3IoZXJyLCBtc2cuRXJyb3JDb21taXRUcmFuc2FjdGlvbiwgXCLmj5DkuqTkuovliqHlpLHotKU6IFwiKVxuXHR9XG5cblx0cmVzLlV1aWQgPSBvcmRlclJlY29yZC5VVUlEXG5cdHJlcy5PcmRlck5vID0gb3JkZXJSZWNvcmQuT3JkZXJOb1xuXHRyZXMuTXNnID0gbXNnLlN1Y2Nlc3NDcmVhdGVPcmRlckluZm9cblx0cmV0dXJuXG59XG5cbmZ1bmMgVXBkYXRlT3JkZXJSZWNvcmQob3JkZXJSZWNvcmQgKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcykgKHJlcyAqYnVuZGxlLkNvbW1vblJlc3BvbnNlLCBlcnIgZXJyb3IpIHtcblx0cmVzID0gbmV3KGJ1bmRsZS5Db21tb25SZXNwb25zZSlcblx0ZXJyID0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9KS5XaGVyZShcInV1aWQgPSA/XCIsIG9yZGVyUmVjb3JkLlVVSUQpLlVwZGF0ZXMob3JkZXJSZWNvcmQpLkVycm9yXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJlcy5Nc2cgPSBtc2cuRXJyb3JVcGRhdGVPcmRlckluZm9cblx0XHRyZXR1cm4gcmVzLCBjb21tb25FcnIuUmV0dXJuRXJyb3IoZXJyLCBtc2cuRXJyb3JVcGRhdGVPcmRlckluZm8sIFwi5pu05paw6K6i5Y2V5L+h5oGv5aSx6LSlOiBcIilcblx0fVxuXHRyZXMuVXVpZCA9IG9yZGVyUmVjb3JkLlVVSURcblx0cmVzLk1zZyA9IG1zZy5TdWNjZXNzVXBkYXRlT3JkZXJJbmZvXG5cdHJldHVyblxufVxuXG5mdW5jIFVwZGF0ZU9yZGVyUmVjb3JkQnlPcmRlck5PKG9yZGVyUmVjb3JkICptb2RlbC5CdW5kbGVPcmRlclJlY29yZHMpIChyZXMgKmJ1bmRsZS5Db21tb25SZXNwb25zZSwgZXJyIGVycm9yKSB7XG5cdHJlcyA9IG5ldyhidW5kbGUuQ29tbW9uUmVzcG9uc2UpXG5cdGVyciA9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLk1vZGVsKCZtb2RlbC5CdW5kbGVPcmRlclJlY29yZHN7fSkuV2hlcmUoXCJvcmRlcl9ubyA9ID9cIiwgb3JkZXJSZWNvcmQuT3JkZXJObykuVXBkYXRlcyhvcmRlclJlY29yZCkuRXJyb3Jcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmVzLk1zZyA9IG1zZy5FcnJvclVwZGF0ZU9yZGVySW5mb1xuXHRcdHJldHVybiByZXMsIGNvbW1vbkVyci5SZXR1cm5FcnJvcihlcnIsIG1zZy5FcnJvclVwZGF0ZU9yZGVySW5mbywgXCLmm7TmlrDorqLljZXkv6Hmga/lpLHotKU6IFwiKVxuXHR9XG5cdHJlcy5VdWlkID0gb3JkZXJSZWNvcmQuVVVJRFxuXHRyZXMuTXNnID0gbXNnLlN1Y2Nlc3NVcGRhdGVPcmRlckluZm9cblx0cmV0dXJuXG59XG5cbmZ1bmMgT3JkZXJSZWNvcmRzTGlzdChyZXEgKmJ1bmRsZS5PcmRlclJlY29yZHNSZXF1ZXN0KSAocmVzICpidW5kbGUuT3JkZXJSZWNvcmRzUmVzcG9uc2UsIGVyciBlcnJvcikge1xuXHRyZXMgPSBuZXcoYnVuZGxlLk9yZGVyUmVjb3Jkc1Jlc3BvbnNlKVxuXHRyZXMuT3JkZXJSZWNvcmRzID0gbWFrZShbXSpidW5kbGUuT3JkZXJSZWNvcmQsIDApXG5cdHJlY29yZHMgOj0gbWFrZShbXSptb2RlbC5CdW5kbGVPcmRlclJlY29yZHMsIDApXG5cblx0cXVlcnkgOj0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9KVxuXG5cdHF1ZXJ5LkpvaW5zKFwibGVmdCBqb2luIG1pY3JvX2FjY291bnQudXNlciBvbiBtaWNyb19hY2NvdW50LnVzZXIuaWQgPSBidW5kbGVfb3JkZXJfcmVjb3Jkcy5jdXN0b21lcl9pZFwiKVxuXG5cdGlmIHJlcS5DdXN0b21lcklEICE9IFwiXCIge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9pZCA9ID9cIiwgcmVxLkN1c3RvbWVySUQpXG5cdH1cblxuXHRpZiByZXEuQ3VzdG9tZXJOdW0gIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImN1c3RvbWVyX251bSBsaWtlID9cIiwgXCIlXCIrcmVxLkN1c3RvbWVyTnVtK1wiJVwiKVxuXHR9XG5cblx0aWYgcmVxLkN1c3RvbWVyTmFtZSAhPSBcIlwiIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiY3VzdG9tZXJfbmFtZSBsaWtlID9cIiwgXCIlXCIrcmVxLkN1c3RvbWVyTmFtZStcIiVcIilcblx0fVxuXG5cdGlmIHJlcS5CdW5kbGVOYW1lICE9IFwiXCIge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJidW5kbGVfbmFtZSBsaWtlID9cIiwgXCIlXCIrcmVxLkJ1bmRsZU5hbWUrXCIlXCIpXG5cdH1cblxuXHRpZiByZXEuQnVuZGxlVVVJRCAhPSBcIlwiIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiYnVuZGxlX3V1aWQgPSA/XCIsIHJlcS5CdW5kbGVVVUlEKVxuXHR9XG5cblx0aWYgcmVxLk9yZGVyTm8gIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcIm9yZGVyX25vIGxpa2UgP1wiLCBcIiVcIityZXEuT3JkZXJObytcIiVcIilcblx0fVxuXG5cdGlmIHJlcS5TdGF0dXMgIT0gMCB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcInN0YXR1cyA9ID9cIiwgcmVxLlN0YXR1cylcblx0fVxuXG5cdGlmIHJlcS5TdGFydFNpZ25lZFRpbWUgIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcInNpZ25lZF90aW1lID49ID9cIiwgcmVxLlN0YXJ0U2lnbmVkVGltZSlcblx0fVxuXG5cdGlmIHJlcS5FbmRTaWduZWRUaW1lICE9IFwiXCIge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJzaWduZWRfdGltZSA8PSA/XCIsIHJlcS5FbmRTaWduZWRUaW1lKVxuXHR9XG5cblx0aWYgcmVxLlN0YXJ0UGF5VGltZSAhPSBcIlwiIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwicGF5X3RpbWUgPj0gP1wiLCByZXEuU3RhcnRQYXlUaW1lKVxuXHR9XG5cblx0aWYgcmVxLkVuZFBheVRpbWUgIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcInBheV90aW1lIDw9ID9cIiwgcmVxLkVuZFBheVRpbWUpXG5cdH1cblxuXHRpZiByZXEuSXNIYXZlVmFsdWVBZGQgPT0gMSB7IC8vIOaciVxuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJ2YWx1ZV9hZGRfYnVuZGxlX3V1aWQgIT0gP1wiLCBcIlwiKVxuXHR9IGVsc2UgaWYgcmVxLklzSGF2ZVZhbHVlQWRkID09IDIgeyAvLyDml6Bcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiSUZOVUxMKHZhbHVlX2FkZF9idW5kbGVfdXVpZCwnJykgPSAnJ1wiKVxuXHR9XG5cblx0aWYgcmVxLkZpbmFuY2lhbENvbmZpcm1hdGlvbiAhPSAwIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiZmluYW5jaWFsX2NvbmZpcm1hdGlvbiA9ID9cIiwgcmVxLkZpbmFuY2lhbENvbmZpcm1hdGlvbilcblx0fVxuXG5cdGlmIHJlcS5UZWxOdW0gIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcIm1pY3JvX2FjY291bnQudXNlci50ZWxfbnVtIGxpa2UgP1wiLCBcIiVcIityZXEuVGVsTnVtK1wiJVwiKVxuXHR9XG5cblx0Y291bnQgOj0gKnF1ZXJ5XG5cblx0aWYgcmVxLlBhZ2VTaXplICE9IDAgJiYgcmVxLlBhZ2UgIT0gMCB7XG5cdFx0cXVlcnkgPSBxdWVyeS5MaW1pdChpbnQocmVxLlBhZ2VTaXplKSkuT2Zmc2V0KGludChyZXEuUGFnZS0xKSAqIGludChyZXEuUGFnZVNpemUpKVxuXHR9XG5cblx0ZXJyID0gcXVlcnkuRmluZCgmcmVjb3JkcykuRXJyb3JcblxuXHRpZiBlcnIgIT0gbmlsIHtcblx0XHRyZXR1cm4gcmVzLCBjb21tb25FcnIuUmV0dXJuRXJyb3IoZXJyLCBtc2cuRXJyb3JHZXRPcmRlckxpc3QsIFwi6I635Y+W6K6i5Y2V5L+h5oGv5aSx6LSlOiBcIilcblx0fVxuXG5cdC8vXyA9IGNvcGllci5Db3B5V2l0aE9wdGlvbigmcmVzLk9yZGVyUmVjb3JkcywgcmVjb3JkcywgY29waWVyLk9wdGlvbntEZWVwQ29weTogdHJ1ZX0pXG5cblx0Zm9yIF8sIHJlY29yZCA6PSByYW5nZSByZWNvcmRzIHtcblx0XHRyZXMuT3JkZXJSZWNvcmRzID0gYXBwZW5kKHJlcy5PcmRlclJlY29yZHMsICZidW5kbGUuT3JkZXJSZWNvcmR7XG5cdFx0XHRVdWlkOiAgICAgICAgICAgICAgICAgIHJlY29yZC5VVUlELFxuXHRcdFx0T3JkZXJObzogICAgICAgICAgICAgICByZWNvcmQuT3JkZXJObyxcblx0XHRcdEJ1bmRsZVV1aWQ6ICAgICAgICAgICAgcmVjb3JkLkJ1bmRsZVVVSUQsXG5cdFx0XHRCdW5kbGVOYW1lOiAgICAgICAgICAgIHJlY29yZC5CdW5kbGVOYW1lLFxuXHRcdFx0Q3VzdG9tZXJJRDogICAgICAgICAgICByZWNvcmQuQ3VzdG9tZXJJRCxcblx0XHRcdEN1c3RvbWVyTnVtOiAgICAgICAgICAgcmVjb3JkLkN1c3RvbWVyTnVtLFxuXHRcdFx0Q3VzdG9tZXJOYW1lOiAgICAgICAgICByZWNvcmQuQ3VzdG9tZXJOYW1lLFxuXHRcdFx0QW1vdW50OiAgICAgICAgICAgICAgICByZWNvcmQuQW1vdW50LFxuXHRcdFx0QW1vdW50VHlwZTogICAgICAgICAgICByZWNvcmQuQW1vdW50VHlwZSxcblx0XHRcdFNpZ25Db250cmFjdDogICAgICAgICAgcmVjb3JkLlNpZ25Db250cmFjdCxcblx0XHRcdFNpZ25hdHVyZTogICAgICAgICAgICAgcmVjb3JkLlNpZ25hdHVyZSxcblx0XHRcdFNpZ25lZFRpbWU6ICAgICAgICAgICAgcmVjb3JkLlNpZ25lZFRpbWUsXG5cdFx0XHRQYXlUeXBlOiAgICAgICAgICAgICAgIHJlY29yZC5QYXlUeXBlLFxuXHRcdFx0UGF5VGltZTogICAgICAgICAgICAgICByZWNvcmQuUGF5VGltZSxcblx0XHRcdENoZWNrb3V0U2Vzc2lvbklkOiAgICAgcmVjb3JkLkNoZWNrb3V0U2Vzc2lvbklkLFxuXHRcdFx0Q2hlY2tvdXRTZXNzaW9uVXJsOiAgICByZWNvcmQuQ2hlY2tvdXRTZXNzaW9uVXJsLFxuXHRcdFx0U3RhdHVzOiAgICAgICAgICAgICAgICByZWNvcmQuU3RhdHVzLFxuXHRcdFx0Q29udHJhY3RObzogICAgICAgICAgICByZWNvcmQuQ29udHJhY3RObyxcblx0XHRcdFZhbHVlQWRkQnVuZGxlVXVpZDogICAgcmVjb3JkLlZhbHVlQWRkQnVuZGxlVVVJRCxcblx0XHRcdFZhbHVlQWRkQnVuZGxlQW1vdW50OiAgcmVjb3JkLlZhbHVlQWRkQnVuZGxlQW1vdW50LFxuXHRcdFx0VmFsdWVBZGRPcmlnaW5hbFByaWNlOiByZWNvcmQuVmFsdWVBZGRPcmlnaW5hbFByaWNlLFxuXHRcdFx0VmFsdWVBZGREaXNjb3VudFByaWNlOiByZWNvcmQuVmFsdWVBZGREaXNjb3VudFByaWNlLFxuXHRcdFx0VmFsdWVBZGRTYXZlZEFtb3VudDogICByZWNvcmQuVmFsdWVBZGRTYXZlZEFtb3VudCxcblx0XHRcdFRvdGFsQW1vdW50OiAgICAgICAgICAgcmVjb3JkLlRvdGFsQW1vdW50LFxuXHRcdFx0TnVtOiAgICAgICAgICAgICAgICAgICByZWNvcmQuTnVtLFxuXHRcdFx0QnVuZGxlQ29tbW9uVWlkOiAgICAgICByZWNvcmQuQnVuZGxlQ29tbW9uVWlkLFxuXHRcdFx0QWRkQnVuZGxlQ29tbW9uVWlkOiAgICByZWNvcmQuQWRkQnVuZGxlQ29tbW9uVWlkLFxuXHRcdH0pXG5cdH1cblxuXHR2YXIgdG90YWwgaW50NjRcblxuXHRjb3VudC5Db3VudCgmdG90YWwpXG5cblx0cmVzLlRvdGFsID0gaW50MzIodG90YWwpXG5cblx0cmV0dXJuXG59XG5cbmZ1bmMgT3JkZXJSZWNvcmREZXRhaWwocmVxICpidW5kbGUuT3JkZXJSZWNvcmRzRGV0YWlsUmVxdWVzdCkgKHJlcyAqYnVuZGxlLk9yZGVyUmVjb3JkLCBlcnIgZXJyb3IpIHtcblx0cmVzID0gbmV3KGJ1bmRsZS5PcmRlclJlY29yZClcblx0b3JkZXJSZWNvcmQgOj0gbmV3KG1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcylcblxuXHRxdWVyeSA6PSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5Nb2RlbCgmbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRze30pXG5cblx0aWYgcmVxLlV1aWQgIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcInV1aWQgPSA/XCIsIHJlcS5VdWlkKVxuXHR9XG5cblx0aWYgcmVxLk9yZGVyTm8gIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcIm9yZGVyX25vID0gP1wiLCByZXEuT3JkZXJObylcblx0fVxuXG5cdGlmIHJlcS5DdXN0b21lcklEICE9IFwiXCIge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9pZCA9ID9cIiwgcmVxLkN1c3RvbWVySUQpXG5cdH1cblxuXHRlcnIgPSBxdWVyeS5GaXJzdCgmb3JkZXJSZWNvcmQpLkVycm9yXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJldHVybiByZXMsIGNvbW1vbkVyci5SZXR1cm5FcnJvcihlcnIsIG1zZy5FcnJvckdldE9yZGVySW5mbywgXCLojrflj5borqLljZXkv6Hmga/lpLHotKU6IFwiKVxuXHR9XG5cdC8vXyA9IGNvcGllci5Db3B5V2l0aE9wdGlvbigmcmVzLCBvcmRlclJlY29yZCwgY29waWVyLk9wdGlvbntEZWVwQ29weTogdHJ1ZX0pXG5cblx0cmVzID0gJmJ1bmRsZS5PcmRlclJlY29yZHtcblx0XHRVdWlkOiAgICAgICAgICAgICAgICAgb3JkZXJSZWNvcmQuVVVJRCxcblx0XHRPcmRlck5vOiAgICAgICAgICAgICAgb3JkZXJSZWNvcmQuT3JkZXJObyxcblx0XHRCdW5kbGVVdWlkOiAgICAgICAgICAgb3JkZXJSZWNvcmQuQnVuZGxlVVVJRCxcblx0XHRCdW5kbGVOYW1lOiAgICAgICAgICAgb3JkZXJSZWNvcmQuQnVuZGxlTmFtZSxcblx0XHRDdXN0b21lcklEOiAgICAgICAgICAgb3JkZXJSZWNvcmQuQ3VzdG9tZXJJRCxcblx0XHRDdXN0b21lck51bTogICAgICAgICAgb3JkZXJSZWNvcmQuQ3VzdG9tZXJOdW0sXG5cdFx0Q3VzdG9tZXJOYW1lOiAgICAgICAgIG9yZGVyUmVjb3JkLkN1c3RvbWVyTmFtZSxcblx0XHRBbW91bnQ6ICAgICAgICAgICAgICAgb3JkZXJSZWNvcmQuQW1vdW50LFxuXHRcdEFtb3VudFR5cGU6ICAgICAgICAgICBvcmRlclJlY29yZC5BbW91bnRUeXBlLFxuXHRcdFNpZ25Db250cmFjdDogICAgICAgICBvcmRlclJlY29yZC5TaWduQ29udHJhY3QsXG5cdFx0U2lnbmF0dXJlOiAgICAgICAgICAgIG9yZGVyUmVjb3JkLlNpZ25hdHVyZSxcblx0XHRTaWduZWRUaW1lOiAgICAgICAgICAgb3JkZXJSZWNvcmQuU2lnbmVkVGltZSxcblx0XHRQYXlUeXBlOiAgICAgICAgICAgICAgb3JkZXJSZWNvcmQuUGF5VHlwZSxcblx0XHRQYXlUaW1lOiAgICAgICAgICAgICAgb3JkZXJSZWNvcmQuUGF5VGltZSxcblx0XHRDaGVja291dFNlc3Npb25JZDogICAgb3JkZXJSZWNvcmQuQ2hlY2tvdXRTZXNzaW9uSWQsXG5cdFx0Q2hlY2tvdXRTZXNzaW9uVXJsOiAgIG9yZGVyUmVjb3JkLkNoZWNrb3V0U2Vzc2lvblVybCxcblx0XHRTdGF0dXM6ICAgICAgICAgICAgICAgb3JkZXJSZWNvcmQuU3RhdHVzLFxuXHRcdENvbnRyYWN0Tm86ICAgICAgICAgICBvcmRlclJlY29yZC5Db250cmFjdE5vLFxuXHRcdFZhbHVlQWRkQnVuZGxlVXVpZDogICBvcmRlclJlY29yZC5WYWx1ZUFkZEJ1bmRsZVVVSUQsXG5cdFx0VmFsdWVBZGRCdW5kbGVBbW91bnQ6IG9yZGVyUmVjb3JkLlZhbHVlQWRkQnVuZGxlQW1vdW50LFxuXHRcdFRvdGFsQW1vdW50OiAgICAgICAgICBvcmRlclJlY29yZC5Ub3RhbEFtb3VudCxcblx0fVxuXHRyZXR1cm5cbn1cbi4uLlxuUGF0aDogaW50ZXJuYWwvbW9kZWwvYnVuZGxlX29yZGVyX3JlY29yZHMuZ29cbnBhY2thZ2UgbW9kZWxcblxuaW1wb3J0IFwiZ29ybS5pby9nb3JtXCJcblxuLy8gQnVuZGxlT3JkZXJSZWNvcmRzIHN0cnVjdFxudHlwZSBCdW5kbGVPcmRlclJlY29yZHMgc3RydWN0IHtcblx0Z29ybS5Nb2RlbFxuXHRVVUlEICAgICAgICAgICAgICAgICAgc3RyaW5nICBganNvbjpcInV1aWRcIiBnb3JtOlwiY29sdW1uOnV1aWQ7dHlwZTp2YXJjaGFyKDEwMjQpO2NvbW1lbnQ6VVVJRFwiYFxuXHRPcmRlck5vICAgICAgICAgICAgICAgc3RyaW5nICBganNvbjpcIm9yZGVyTm9cIiBnb3JtOlwiY29sdW1uOm9yZGVyX25vO3R5cGU6dmFyY2hhcigxMDI0KTtjb21tZW50OuS6pOaYk+e8luWPt1wiYFxuXHRCdW5kbGVVVUlEICAgICAgICAgICAgc3RyaW5nICBganNvbjpcImJ1bmRsZVVVSURcIiBnb3JtOlwiY29sdW1uOmJ1bmRsZV91dWlkO3R5cGU6dmFyY2hhcigxMDI0KTtjb21tZW50OuWll+mkkFVVSURcImBcblx0QnVuZGxlTmFtZSAgICAgICAgICAgIHN0cmluZyAgYGpzb246XCJidW5kbGVOYW1lXCIgZ29ybTpcImNvbHVtbjpidW5kbGVfbmFtZTt0eXBlOnZhcmNoYXIoMjA0OCk7Y29tbWVudDrlpZfppJDlkI1cImBcblx0Q3VzdG9tZXJJRCAgICAgICAgICAgIHN0cmluZyAgYGpzb246XCJjdXN0b21lcklEXCIgZ29ybTpcImNvbHVtbjpjdXN0b21lcl9pZDt0eXBlOnZhcmNoYXIoMTAyNCk7Y29tbWVudDrlrqLmiLdJRFwiYFxuXHRDdXN0b21lck51bSAgICAgICAgICAgc3RyaW5nICBganNvbjpcImN1c3RvbWVyTnVtXCIgZ29ybTpcImNvbHVtbjpjdXN0b21lcl9udW07dHlwZTp2YXJjaGFyKDEwMjQpO2NvbW1lbnQ65a6i5oi357yW5Y+3XCJgXG5cdEN1c3RvbWVyTmFtZSAgICAgICAgICBzdHJpbmcgIGBqc29uOlwiY3VzdG9tZXJOYW1lXCIgZ29ybTpcImNvbHVtbjpjdXN0b21lcl9uYW1lO3R5cGU6dmFyY2hhcigxMDI0KTtjb21tZW50OuWuouaIt+WQjVwiYFxuXHRBbW91bnQgICAgICAgICAgICAgICAgZmxvYXQzMiBganNvbjpcImFtb3VudFwiIGdvcm06XCJjb2x1bW46YW1vdW50O3R5cGU6ZGVjaW1hbCgxMiwyKTtjb21tZW50OuWll+mkkOmHkeminVwiYFxuXHRBbW91bnRUeXBlICAgICAgICAgICAgaW50NjQgICBganNvbjpcImFtb3VudFR5cGVcIiBnb3JtOlwiY29sdW1uOmFtb3VudF90eXBlO3R5cGU6aW50O2NvbW1lbnQ66YeR6aKd57G75Z6LXCJgXG5cdFZhbHVlQWRkQnVuZGxlVVVJRCAgICBzdHJpbmcgIGBqc29uOlwidmFsdWVBZGRCdW5kbGVVVUlEXCIgZ29ybTpcImNvbHVtbjp2YWx1ZV9hZGRfYnVuZGxlX3V1aWQ7dHlwZTp2YXJjaGFyKDEwMjQpO2NvbW1lbnQ65aKe5YC85aWX6aSQ6K6w5b2VVVVJRFwiYFxuXHRWYWx1ZUFkZEJ1bmRsZUFtb3VudCAgZmxvYXQzMiBganNvbjpcInZhbHVlQWRkQnVuZGxlQW1vdW50XCIgZ29ybTpcImNvbHVtbjp2YWx1ZV9hZGRfYnVuZGxlX2Ftb3VudDt0eXBlOmRlY2ltYWwoMTIsMik7Y29tbWVudDrlop7lgLzlpZfppJDph5Hpop1cImBcblx0VmFsdWVBZGRPcmlnaW5hbFByaWNlIGZsb2F0MzIgYGpzb246XCJ2YWx1ZUFkZE9yaWdpbmFsUHJpY2VcIiBnb3JtOlwiY29sdW1uOnZhbHVlX2FkZF9vcmlnaW5hbF9wcmljZTt0eXBlOmRlY2ltYWwoMTIsMik7Y29tbWVudDrljp/ljZXku7dcImBcblx0VmFsdWVBZGREaXNjb3VudFByaWNlIGZsb2F0MzIgYGpzb246XCJ2YWx1ZUFkZERpc2NvdW50UHJpY2VcIiBnb3JtOlwiY29sdW1uOnZhbHVlX2FkZF9kaXNjb3VudF9wcmljZTt0eXBlOmRlY2ltYWwoMTIsMik7Y29tbWVudDrkvJjmg6DljZXku7dcImBcblx0VmFsdWVBZGRTYXZlZEFtb3VudCAgIGZsb2F0MzIgYGpzb246XCJ2YWx1ZUFkZFNhdmVkQW1vdW50XCIgZ29ybTpcImNvbHVtbjp2YWx1ZV9hZGRfc2F2ZWRfYW1vdW50O3R5cGU6ZGVjaW1hbCgxMiwyKTtjb21tZW50OuiKguecgemHkeminVwiYFxuXHRUb3RhbEFtb3VudCAgICAgICAgICAgZmxvYXQzMiBganNvbjpcInRvdGFsQW1vdW50XCIgZ29ybTpcImNvbHVtbjp0b3RhbF9hbW91bnQ7dHlwZTpkZWNpbWFsKDEyLDIpO2NvbW1lbnQ65oC76YeR6aKdXCJgXG5cdE51bSAgICAgICAgICAgICAgICAgICBpbnQzMiAgIGBqc29uOlwibnVtXCIgZ29ybTpcImNvbHVtbjpudW07dHlwZTppbnQ7Y29tbWVudDrop4bpopHmlbDph49cImBcblx0U2lnbkNvbnRyYWN0ICAgICAgICAgIHN0cmluZyAgYGpzb246XCJzaWduQ29udHJhY3RcIiBnb3JtOlwiY29sdW1uOnNpZ25fY29udHJhY3Q7dHlwZTp2YXJjaGFyKDEwMjQpO2NvbW1lbnQ6562+57qm5ZCI5ZCMXCJgXG5cdFNpZ25hdHVyZSAgICAgICAgICAgICBzdHJpbmcgIGBqc29uOlwic2lnbmF0dXJlXCIgZ29ybTpcImNvbHVtbjpzaWduYXR1cmU7dHlwZTp0ZXh0O2NvbW1lbnQ6562+5a2XXCJgXG5cdFNpZ25lZFRpbWUgICAgICAgICAgICBzdHJpbmcgIGBqc29uOlwic2lnbmVkVGltZVwiIGdvcm06XCJjb2x1bW46c2lnbmVkX3RpbWU7dHlwZTp2YXJjaGFyKDEwMjQpO2NvbW1lbnQ6562+57qm5pe26Ze0KOWMl+S6rOaXtumXtClcImBcblx0UGF5VHlwZSAgICAgICAgICAgICAgIGludDY0ICAgYGpzb246XCJwYXlUeXBlXCIgZ29ybTpcImNvbHVtbjpwYXlfdHlwZTt0eXBlOmludDtjb21tZW50OuaUr+S7mOexu+Wei1wiYFxuXHRQYXlUaW1lICAgICAgICAgICAgICAgc3RyaW5nICBganNvbjpcInBheVRpbWVcIiBnb3JtOlwiY29sdW1uOnBheV90aW1lO3R5cGU6dmFyY2hhcigxMDI0KTtjb21tZW50OuaUr+S7mOaXtumXtCjljJfkuqzml7bpl7QpXCJgXG5cdENoZWNrb3V0U2Vzc2lvbklkICAgICBzdHJpbmcgIGBqc29uOlwiY2hlY2tvdXRTZXNzaW9uSWRcIiBnb3JtOlwiY29sdW1uOmNoZWNrb3V0X3Nlc3Npb25faWQ7dHlwZTp2YXJjaGFyKDEwMjQpO2RlZmF1bHQ6bnVsbDtjb21tZW50OmNoZWNrb3V0U2Vzc2lvbklkXCJgXG5cdENoZWNrb3V0U2Vzc2lvblVybCAgICBzdHJpbmcgIGBqc29uOlwiY2hlY2tvdXRTZXNzaW9uVXJsXCIgZ29ybTpcImNvbHVtbjpjaGVja291dF9zZXNzaW9uX3VybDt0eXBlOnZhcmNoYXIoMTAyNCk7ZGVmYXVsdDpudWxsO2NvbW1lbnQ6Y2hlY2tvdXRTZXNzaW9uVXJsXCJgXG5cdFN0YXR1cyAgICAgICAgICAgICAgICBpbnQ2NCAgIGBqc29uOlwic3RhdHVzXCIgZ29ybTpcImNvbHVtbjpzdGF0dXM7dHlwZTppbnQ7Y29tbWVudDrnirbmgIEgMTrlt7Lnrb7mnKrmlK/ku5ggMjrlt7Lnrb7lt7LmlK/ku5hcImBcblx0Q29udHJhY3RObyAgICAgICAgICAgIHN0cmluZyAgYGpzb246XCJjb250cmFjdE5vXCIgZ29ybTpcImNvbHVtbjpjb250cmFjdF9ubzt0eXBlOnZhcmNoYXIoMTAyNCk7Y29tbWVudDrlkIjlkIznvJblj7dcImBcblx0QnVuZGxlQ29tbW9uVWlkICAgICAgIHN0cmluZyAgYGpzb246XCJidW5kbGVDb21tb25VaWRcIiBnb3JtOlwiY29sdW1uOmJ1bmRsZV9jb21tb25fdWlkO3R5cGU6dGV4dDtjb21tZW50OuWll+mkkOWFrOWFsUlEXCJgXG5cdEFkZEJ1bmRsZUNvbW1vblVpZCAgICBzdHJpbmcgIGBqc29uOlwiYWRkQnVuZGxlQ29tbW9uVWlkXCIgZ29ybTpcImNvbHVtbjphZGRfYnVuZGxlX2NvbW1vbl91aWQ7dHlwZTp0ZXh0O2NvbW1lbnQ66ZmE5Yqg5aWX6aSQ5YWs5YWxSURcImBcblx0RmluYW5jaWFsQ29uZmlybWF0aW9uIGludDMyICAgYGpzb246XCJmaW5hbmNpYWxDb25maXJtYXRpb25cIiBnb3JtOlwiY29sdW1uOmZpbmFuY2lhbF9jb25maXJtYXRpb247dHlwZTppbnQ7Y29tbWVudDrotKLliqHnoa7orqQgMTrmnKrnoa7orqQgMjrlt7Lnoa7orqRcImBcbn1cblxuLy8g6LSi5Yqh56Gu6K6k54q25oCBXG5jb25zdCAoXG5cdENvbmZpcm1hdGlvbk5vdENvbmZpcm1lZCA9IDFcblx0Q29uZmlybWF0aW9uQ29uZmlybWVkICAgID0gMlxuKVxuLi4uXG5QYXRoOiBpbnRlcm5hbC9sb2dpYy9vcmRlclJlY29yZHNMb2dpYy5nb1xucGFja2FnZSBsb2dpY1xuXG5pbXBvcnQgKFxuXHRcIm1pY3JvLWJ1bmRsZS9pbnRlcm5hbC9kYW9cIlxuXHRcIm1pY3JvLWJ1bmRsZS9pbnRlcm5hbC9tb2RlbFwiXG5cdFwibWljcm8tYnVuZGxlL3BiL2J1bmRsZVwiXG5cdFwibWljcm8tYnVuZGxlL3BrZy9hcHBcIlxuXHRcIm1pY3JvLWJ1bmRsZS9wa2cvdXRpbHNcIlxuXG5cdFwiZ2l0aHViLmNvbS9qaW56aHUvY29waWVyXCJcbilcblxuZnVuYyBDcmVhdGVPcmRlclJlY29yZChyZXEgKmJ1bmRsZS5PcmRlclJlY29yZCkgKHJlcyAqYnVuZGxlLkNvbW1vblJlc3BvbnNlLCBlcnIgZXJyb3IpIHtcblx0cmVzID0gbmV3KGJ1bmRsZS5Db21tb25SZXNwb25zZSlcblx0b3JkZXJSZWNvcmQgOj0gbmV3KG1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkcylcblx0XyA9IGNvcGllci5Db3B5V2l0aE9wdGlvbigmb3JkZXJSZWNvcmQsIHJlcSwgY29waWVyLk9wdGlvbntEZWVwQ29weTogdHJ1ZX0pXG5cdG9yZGVyUmVjb3JkLlVVSUQgPSBhcHAuTW9kdWxlQ2xpZW50cy5TZk5vZGUuR2VuZXJhdGUoKS5CYXNlNjQoKVxuXHRvcmRlclJlY29yZC5PcmRlck5vID0gdXRpbHMuR2V0T3JkZXJObygpXG5cdG9yZGVyUmVjb3JkLkJ1bmRsZVVVSUQgPSByZXEuQnVuZGxlVXVpZFxuXHRvcmRlclJlY29yZC5WYWx1ZUFkZEJ1bmRsZVVVSUQgPSByZXEuVmFsdWVBZGRCdW5kbGVVdWlkXG5cdG9yZGVyUmVjb3JkLkZpbmFuY2lhbENvbmZpcm1hdGlvbiA9IG1vZGVsLkNvbmZpcm1hdGlvbk5vdENvbmZpcm1lZFxuXG5cdHJlcywgZXJyID0gZGFvLkNyZWF0ZU9yZGVyUmVjb3JkKG9yZGVyUmVjb3JkKVxuXHRyZXR1cm5cbn1cblxuZnVuYyBVcGRhdGVPcmRlclJlY29yZChyZXEgKmJ1bmRsZS5PcmRlclJlY29yZCkgKHJlcyAqYnVuZGxlLkNvbW1vblJlc3BvbnNlLCBlcnIgZXJyb3IpIHtcblx0cmVzID0gbmV3KGJ1bmRsZS5Db21tb25SZXNwb25zZSlcblx0b3JkZXJSZWNvcmQgOj0gbmV3KG1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkcylcblx0XyA9IGNvcGllci5Db3B5V2l0aE9wdGlvbigmb3JkZXJSZWNvcmQsIHJlcSwgY29waWVyLk9wdGlvbntEZWVwQ29weTogdHJ1ZX0pXG5cdG9yZGVyUmVjb3JkLlVVSUQgPSByZXEuVXVpZFxuXHRvcmRlclJlY29yZC5CdW5kbGVVVUlEID0gcmVxLkJ1bmRsZVV1aWRcblx0cmVzLCBlcnIgPSBkYW8uVXBkYXRlT3JkZXJSZWNvcmQob3JkZXJSZWNvcmQpXG5cdHJldHVyblxufVxuXG5mdW5jIFVwZGF0ZU9yZGVyUmVjb3JkQnlPcmRlck5vKHJlcSAqYnVuZGxlLk9yZGVyUmVjb3JkKSAocmVzICpidW5kbGUuQ29tbW9uUmVzcG9uc2UsIGVyciBlcnJvcikge1xuXHRyZXMgPSBuZXcoYnVuZGxlLkNvbW1vblJlc3BvbnNlKVxuXHRvcmRlclJlY29yZCA6PSBuZXcobW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzKVxuXHRfID0gY29waWVyLkNvcHlXaXRoT3B0aW9uKCZvcmRlclJlY29yZCwgcmVxLCBjb3BpZXIuT3B0aW9ue0RlZXBDb3B5OiB0cnVlfSlcblx0b3JkZXJSZWNvcmQuVVVJRCA9IHJlcS5VdWlkXG5cdG9yZGVyUmVjb3JkLkJ1bmRsZVVVSUQgPSByZXEuQnVuZGxlVXVpZFxuXHRyZXMsIGVyciA9IGRhby5VcGRhdGVPcmRlclJlY29yZEJ5T3JkZXJOTyhvcmRlclJlY29yZClcblx0cmV0dXJuXG59XG5cbmZ1bmMgT3JkZXJSZWNvcmRzTGlzdChyZXEgKmJ1bmRsZS5PcmRlclJlY29yZHNSZXF1ZXN0KSAocmVzICpidW5kbGUuT3JkZXJSZWNvcmRzUmVzcG9uc2UsIGVyciBlcnJvcikge1xuXHRyZXMgPSBuZXcoYnVuZGxlLk9yZGVyUmVjb3Jkc1Jlc3BvbnNlKVxuXHRyZXMsIGVyciA9IGRhby5PcmRlclJlY29yZHNMaXN0KHJlcSlcblx0cmV0dXJuXG59XG5cbmZ1bmMgT3JkZXJSZWNvcmRzRGV0YWlsKHJlcSAqYnVuZGxlLk9yZGVyUmVjb3Jkc0RldGFpbFJlcXVlc3QpIChyZXMgKmJ1bmRsZS5PcmRlclJlY29yZHNEZXRhaWxSZXNwb25zZSwgZXJyIGVycm9yKSB7XG5cdHJlcyA9IG5ldyhidW5kbGUuT3JkZXJSZWNvcmRzRGV0YWlsUmVzcG9uc2UpXG5cdHJlcy5PcmRlclJlY29yZCA9IG5ldyhidW5kbGUuT3JkZXJSZWNvcmQpXG5cdHJlcy5PcmRlclJlY29yZCwgZXJyID0gZGFvLk9yZGVyUmVjb3JkRGV0YWlsKHJlcSlcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmVzLk1zZyA9IGVyci5FcnJvcigpXG5cdH1cblx0cmV0dXJuXG59XG4uLi5cblBhdGg6IHBiL2J1bmRsZS5wcm90b1xuLi4uXG5cbm1lc3NhZ2UgT3JkZXJSZWNvcmQge1xuICBzdHJpbmcgdXVpZCA9IDEgW2pzb25fbmFtZSA9IFwidXVpZFwiXTtcbiAgc3RyaW5nIGJ1bmRsZVV1aWQgPSAyIFtqc29uX25hbWUgPSBcImJ1bmRsZVV1aWRcIl07XG4gIHN0cmluZyBjdXN0b21lcklEID0gMyBbanNvbl9uYW1lID0gXCJjdXN0b21lcklEXCJdO1xuICBzdHJpbmcgY3VzdG9tZXJOdW0gPSA0IFtqc29uX25hbWUgPSBcImN1c3RvbWVyTnVtXCJdO1xuICBzdHJpbmcgY3VzdG9tZXJOYW1lID0gNSBbanNvbl9uYW1lID0gXCJjdXN0b21lck5hbWVcIl07XG4gIGZsb2F0ICBhbW91bnQgPSA2IFtqc29uX25hbWUgPSBcImFtb3VudFwiXTtcbiAgaW50NjQgIGFtb3VudFR5cGUgPSA3IFtqc29uX25hbWUgPSBcImFtb3VudFR5cGVcIl07XG4gIHN0cmluZyBzaWduQ29udHJhY3QgPSA4IFtqc29uX25hbWUgPSBcInNpZ25Db250cmFjdFwiXTtcbiAgc3RyaW5nIHNpZ25hdHVyZSA9IDkgW2pzb25fbmFtZSA9IFwic2lnbmF0dXJlXCJdO1xuICBzdHJpbmcgc2lnbmVkVGltZSA9IDEwIFtqc29uX25hbWUgPSBcInNpZ25lZFRpbWVcIl07XG4gIGludDY0IHBheVR5cGUgPSAxMSBbanNvbl9uYW1lID0gXCJwYXlUeXBlXCJdO1xuICBzdHJpbmcgcGF5VGltZSA9IDEyIFtqc29uX25hbWUgPSBcInBheVRpbWVcIl07XG4gIHN0cmluZyBjaGVja291dFNlc3Npb25JZCA9IDEzIFtqc29uX25hbWUgPSBcImNoZWNrb3V0U2Vzc2lvbklkXCJdO1xuICBzdHJpbmcgY2hlY2tvdXRTZXNzaW9uVXJsID0gMTQgW2pzb25fbmFtZSA9IFwiY2hlY2tvdXRTZXNzaW9uVXJsXCJdO1xuLi4uXG5cbm1lc3NhZ2UgT3JkZXJSZWNvcmRzUmVxdWVzdCB7XG4gIGludDMyIHBhZ2UgPSAxIFtqc29uX25hbWUgPSBcInBhZ2VcIl07XG4gIGludDMyIHBhZ2VTaXplID0gMiBbanNvbl9uYW1lID0gXCJwYWdlU2l6ZVwiXTtcbiAgc3RyaW5nIGN1c3RvbWVyTnVtID0gMyBbanNvbl9uYW1lID0gXCJjdXN0b21lck51bVwiXTtcbiAgc3RyaW5nIGN1c3RvbWVyTmFtZSA9IDQgW2pzb25fbmFtZSA9IFwiY3VzdG9tZXJOYW1lXCJdO1xuICBzdHJpbmcgYnVuZGxlVVVJRCA9IDUgW2pzb25fbmFtZSA9IFwiYnVuZGxlVVVJRFwiXTtcbiAgc3RyaW5nIG9yZGVyTm8gPSA2IFtqc29uX25hbWUgPSBcIm9yZGVyTm9cIl07XG4gIGludDY0ICBzdGF0dXMgPSA3IFtqc29uX25hbWUgPSBcInN0YXR1c1wiXTtcbiAgc3RyaW5nIGJ1bmRsZU5hbWUgPSA4IFtqc29uX25hbWUgPSBcImJ1bmRsZU5hbWVcIl07XG4gIHN0cmluZyBzdGFydFNpZ25lZFRpbWUgPSA5IFtqc29uX25hbWUgPSBcInN0YXJ0U2lnbmVkVGltZVwiXTtcbiAgc3RyaW5nIGVuZFNpZ25lZFRpbWUgPSAxMCBbanNvbl9uYW1lID0gXCJlbmRTaWduZWRUaW1lXCJdO1xuICBzdHJpbmcgc3RhcnRQYXlUaW1lID0gMTEgW2pzb25fbmFtZSA9IFwic3RhcnRQYXlUaW1lXCJdO1xuICBzdHJpbmcgZW5kUGF5VGltZSA9IDEyIFtqc29uX25hbWUgPSBcImVuZFBheVRpbWVcIl07XG4gIHN0cmluZyBjdXN0b21lcklEID0gMTMgW2pzb25fbmFtZSA9IFwiY3VzdG9tZXJJRFwiXTtcbiAgaW50NjQgaXNIYXZlVmFsdWVBZGQgPSAxNCBbanNvbl9uYW1lID0gXCJpc0hhdmVWYWx1ZUFkZFwiXTsvL+acieaXoOWinuWAvOmAiemhuVxufVxuXG5tZXNzYWdlIE9yZGVyUmVjb3Jkc1Jlc3BvbnNlIHtcbiAgcmVwZWF0ZWQgT3JkZXJSZWNvcmQgb3JkZXJSZWNvcmRzID0gMSBbanNvbl9uYW1lID0gXCJvcmRlclJlY29yZHNcIl07XG4gIGludDMyIHRvdGFsID0gMiBbanNvbl9uYW1lID0gXCJ0b3RhbFwiXTtcbn1cblxubWVzc2FnZSBPcmRlclJlY29yZHNEZXRhaWxSZXF1ZXN0IHtcbiAgc3RyaW5nIHV1aWQgPSAxIFtqc29uX25hbWUgPSBcInV1aWRcIl07XG4gIHN0cmluZyBvcmRlck5vID0gMiBbanNvbl9uYW1lID0gXCJvcmRlck5vXCJdO1xuICBzdHJpbmcgY3VzdG9tZXJJRCA9IDMgW2pzb25fbmFtZSA9IFwiY3VzdG9tZXJJRFwiXTtcbn1cblxubWVzc2FnZSBPcmRlclJlY29yZHNEZXRhaWxSZXNwb25zZSB7XG4gIE9yZGVyUmVjb3JkIG9yZGVyUmVjb3JkID0gMSBbanNvbl9uYW1lID0gXCJvcmRlclJlY29yZFwiXTtcbiAgc3RyaW5nIG1zZyA9IDIgW2pzb25fbmFtZSA9IFwibXNnXCJdO1xufVxuLi4uXG5QYXRoOiBpbnRlcm5hbC9kYW8vYnVuZGxlRGFvLmdvXG4uLi5cblxuZnVuYyBCdW5kbGVMaXN0KHJlcSAqYnVuZGxlLkJ1bmRsZUxpc3RSZXF1ZXN0KSAocmVzICpidW5kbGUuQnVuZGxlTGlzdFJlc3BvbnNlLCBlcnIgZXJyb3IpIHtcblx0cmVzID0gbmV3KGJ1bmRsZS5CdW5kbGVMaXN0UmVzcG9uc2UpXG5cdHJlcy5CdW5kbGVzID0gbWFrZShbXSpidW5kbGUuQnVuZGxlUHJvZmlsZSwgMClcblx0YnVuZGxlcyA6PSBtYWtlKFtdKm1vZGVsLkJ1bmRsZVByb2ZpbGUsIDApXG5cblx0cXVlcnkgOj0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZVByb2ZpbGV7fSlcblxuXHRpZiByZXEuTmFtZSAhPSBcIlwiIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwibmFtZSBsaWtlID9cIiwgXCIlXCIrcmVxLk5hbWUrXCIlXCIpXG5cdH1cblxuXHRpZiByZXEuQ29udGVudCAhPSBcIlwiIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiY29udGVudCBsaWtlID9cIiwgXCIlXCIrcmVxLkNvbnRlbnQrXCIlXCIpXG5cdH1cblxuXHRpZiByZXEuTGFuZ3VhZ2UgIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImxhbmd1YWdlIGxpa2UgP1wiLCByZXEuTGFuZ3VhZ2UpXG5cdH1cblxuXHRjb3VudCA6PSAqcXVlcnlcblxuXHRpZiByZXEuUGFnZVNpemUgIT0gMCAmJiByZXEuUGFnZSAhPSAwIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LkxpbWl0KGludChyZXEuUGFnZVNpemUpKS5PZmZzZXQoaW50KHJlcS5QYWdlLTEpICogaW50KHJlcS5QYWdlU2l6ZSkpXG5cdH1cbi4uLlxuXG5cdC8vIF8gPSBjb3BpZXIuQ29weVdpdGhPcHRpb24oJnJlcy5CdW5kbGVzLCBidW5kbGVzLCBjb3BpZXIuT3B0aW9ue0RlZXBDb3B5OiB0cnVlfSlcblxuXHQvLyBmbXQuUHJpbnRmKFwicmVzLkJ1bmRsZXMgJSt2XFxuXCIsIHJlcy5CdW5kbGVzKVxuXG5cdHZhciB0b3RhbCBpbnQ2NFxuXG5cdGNvdW50LkNvdW50KCZ0b3RhbClcblxuXHRyZXMuVG90YWwgPSBpbnQzMih0b3RhbClcblxuXHRyZXR1cm5cblxufVxuXG5mdW5jIEJ1bmRsZURldGFpbCh1dWlkIHN0cmluZykgKHJlcyAqYnVuZGxlLkJ1bmRsZVByb2ZpbGUsIGVyciBlcnJvcikge1xuXHRyZXMgPSBuZXcoYnVuZGxlLkJ1bmRsZVByb2ZpbGUpXG5cdGJ1bmRsZVByb2ZpbGUgOj0gbmV3KG1vZGVsLkJ1bmRsZVByb2ZpbGUpXG5cdGVyciA9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLldoZXJlKFwidXVpZCA9ID9cIiwgdXVpZCkuRmlyc3QoJmJ1bmRsZVByb2ZpbGUpLkVycm9yXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJldHVybiByZXMsIGNvbW1vbkVyci5SZXR1cm5FcnJvcihlcnIsIG1zZy5FcnJvckdldEJ1bmRsZUluZm8sIFwi6I635Y+W5aWX6aSQ5L+h5oGv5aSx6LSlOiBcIilcblx0fVxuLi4uXG5QYXRoOiBpbnRlcm5hbC9sb2dpYy92YWx1ZUFkZEJ1bmRsZUxvZ2ljLmdvXG4uLi5cblxuLy8g5aKe5YC85aWX6aSQ5YiX6KGoXG5mdW5jIFZhbHVlQWRkQnVuZGxlTGlzdChyZXEgKmJ1bmRsZS5WYWx1ZUFkZEJ1bmRsZUxpc3RSZXF1ZXN0KSAocmVzICpidW5kbGUuVmFsdWVBZGRCdW5kbGVMaXN0UmVzcG9uc2UsIGVyciBlcnJvcikge1xuXHRyZXMgPSAmYnVuZGxlLlZhbHVlQWRkQnVuZGxlTGlzdFJlc3BvbnNle31cblx0dmFyIGJ1bmRsZUNvbW1vblVpZCBzdHJpbmdcblx0dmFyIGJ1bmRsZVByb2ZpbGUgKm1vZGVsLkJ1bmRsZVByb2ZpbGVcblx0YnVuZGxlUHJvZmlsZSwgZXJyID0gZGFvLkJ1bmRsZVByb2ZpbGVEZXRhaWwocmVxLkJ1bmRsZVV1aWQpXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJldHVyblxuXHR9IGVsc2Uge1xuXHRcdHZhciBidW5kbGVPcmRlclJlY29yZCAqbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzXG5cdFx0YnVuZGxlT3JkZXJSZWNvcmQsIGVyciA9IGRhby5HZXRCdW5kbGVPcmRlclJlY29yZHNCeUNvbW1vblVpZEFuZFVzZXJJZChidW5kbGVQcm9maWxlLkJ1bmRsZUNvbW1vblVpZCwgcmVxLlVzZXJJZClcblx0XHRpZiBlcnIgIT0gbmlsIHtcblx0XHRcdGVyciA9IG5pbFxuXHRcdH0gZWxzZSB7XG5cdFx0XHRidW5kbGVDb21tb25VaWQgPSBidW5kbGVPcmRlclJlY29yZC5CdW5kbGVDb21tb25VaWRcblx0XHRcdHJlcy5PcmRlck5vID0gdHJ1ZVxuXHRcdFx0cmVzLlByaWNlID0gYnVuZGxlT3JkZXJSZWNvcmQuVmFsdWVBZGRCdW5kbGVBbW91bnRcblx0XHRcdHJlcy5OdW0gPSBidW5kbGVPcmRlclJlY29yZC5OdW1cblxuXHRcdFx0aWYgYnVuZGxlT3JkZXJSZWNvcmQuVmFsdWVBZGRCdW5kbGVVVUlEICE9IFwiXCIge1xuXHRcdFx0XHRyZXMuU3RhdHVzID0gdHJ1ZVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuLi4uXG5cblx0cmVzLkRhdGEgPSAmYnVuZGxlLlZhbHVlQWRkQnVuZGxlUHJvZmlsZXtcblx0XHRVdWlkOiAgICAgICAgICAgICAgICB2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUuVVVJRCxcblx0XHROdW06ICAgICAgICAgICAgICAgICB2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUuTnVtLFxuXHRcdE9yaWdpbmFsUHJpY2U6ICAgICAgIHZhbHVlQWRkQnVuZGxlUHJvZmlsZS5PcmlnaW5hbFByaWNlLFxuXHRcdERpc2NvdW50UHJpY2U6ICAgICAgIHZhbHVlQWRkQnVuZGxlUHJvZmlsZS5EaXNjb3VudFByaWNlLFxuXHRcdFRvdGFsUHJpY2U6ICAgICAgICAgIHZhbHVlQWRkQnVuZGxlUHJvZmlsZS5Ub3RhbFByaWNlLFxuXHRcdFNhdmVkQW1vdW50OiAgICAgICAgIHZhbHVlQWRkQnVuZGxlUHJvZmlsZS5TYXZlZEFtb3VudCxcblx0XHREaXNjb3VudFByaWNlU3RhdHVzOiB2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUuRGlzY291bnRQcmljZVN0YXR1cyxcblx0XHRDaG9vc2U6ICAgICAgICAgICAgICB2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUuQ2hvb3NlLFxuXHRcdEFkZEJ1bmRsZUNvbW1vblVpZDogIHZhbHVlQWRkQnVuZGxlUHJvZmlsZS5BZGRCdW5kbGVDb21tb25VaWQsXG5cdH1cblxuXHRidW5kbGVPcmRlclJlY29yZHMgOj0gJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9XG5cdGJ1bmRsZU9yZGVyUmVjb3JkcywgZXJyID0gZGFvLkJ1bmRsZU9yZGVyUmVjb3Jkc0RldGFpbEJ5QWRkVWlkKHJlcS5VdWlkKVxuXHRpZiBlcnIgLi4uIiwiaXNFcnJvciI6ZmFsc2UsInJlcXVlc3RJZCI6IiJ9fSwiZTM1ZTcyNjYtNGI5Ny00YTNiLWE1NDYtYTdhYzk3ZTU4YzBiO3Rvb2x1X3ZydHhfMDFOUkdwc1RKVVZvTmk0TmtiZmI4UGNzIjp7InJlcXVlc3RJZCI6ImUzNWU3MjY2LTRiOTctNGEzYi1hNTQ2LWE3YWM5N2U1OGMwYiIsInRvb2xVc2VJZCI6InRvb2x1X3ZydHhfMDFOUkdwc1RKVVZvTmk0TmtiZmI4UGNzIiwicGhhc2UiOjUsInJlc3VsdCI6eyJ0ZXh0IjoiSGVyZSdzIHRoZSByZXN1bHQgb2YgcnVubmluZyBgY2F0IC1uYCBvbiBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvOlxuICAgIDcwXHRcdHJlcy5PcmRlclJlY29yZHMgPSBtYWtlKFtdKmJ1bmRsZS5PcmRlclJlY29yZCwgMClcbiAgICA3MVx0XHRyZWNvcmRzIDo9IG1ha2UoW10qbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzLCAwKVxuICAgIDcyXHRcbiAgICA3M1x0XHRxdWVyeSA6PSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5Nb2RlbCgmbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRze30pXG4gICAgNzRcdFxuICAgIDc1XHRcdHF1ZXJ5LkpvaW5zKFwibGVmdCBqb2luIG1pY3JvLWFjY291bnQudXNlciBvbiBtaWNyby1hY2NvdW50LnVzZXIuaWQgPSBidW5kbGVfb3JkZXJfcmVjb3Jkcy5jdXN0b21lcl9pZFwiKVxuICAgIDc2XHRcbiAgICA3N1x0XHRpZiByZXEuQ3VzdG9tZXJJRCAhPSBcIlwiIHtcbiAgICA3OFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9pZCA9ID9cIiwgcmVxLkN1c3RvbWVySUQpXG4gICAgNzlcdFx0fVxuICAgIDgwXHRcbiAgICA4MVx0XHRpZiByZXEuQ3VzdG9tZXJOdW0gIT0gXCJcIiB7XG4gICAgODJcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiY3VzdG9tZXJfbnVtIGxpa2UgP1wiLCBcIiVcIityZXEuQ3VzdG9tZXJOdW0rXCIlXCIpXG4gICAgODNcdFx0fVxuICAgIDg0XHRcbiAgICA4NVx0XHRpZiByZXEuQ3VzdG9tZXJOYW1lICE9IFwiXCIge1xuICAgIDg2XHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImN1c3RvbWVyX25hbWUgbGlrZSA/XCIsIFwiJVwiK3JlcS5DdXN0b21lck5hbWUrXCIlXCIpXG4gICAgODdcdFx0fVxuICAgIDg4XHRcbiAgICA4OVx0XHRpZiByZXEuQnVuZGxlTmFtZSAhPSBcIlwiIHtcbiAgICA5MFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJidW5kbGVfbmFtZSBsaWtlID9cIiwgXCIlXCIrcmVxLkJ1bmRsZU5hbWUrXCIlXCIpXG5Ub3RhbCBsaW5lcyBpbiBmaWxlOiAyMzlcbiIsImlzRXJyb3IiOmZhbHNlLCJyZXF1ZXN0SWQiOiIifX0sIjE2NDVhZDBlLTcxYzItNGFkMy05YTM1LWRiMWY2MjExMzdlMzt0b29sdV92cnR4XzAxR0cxMmk1TDFnUHRRTmNMRGZ0ZkhZZyI6eyJyZXF1ZXN0SWQiOiIxNjQ1YWQwZS03MWMyLTRhZDMtOWEzNS1kYjFmNjIxMTM3ZTMiLCJ0b29sVXNlSWQiOiJ0b29sdV92cnR4XzAxR0cxMmk1TDFnUHRRTmNMRGZ0ZkhZZyIsInBoYXNlIjo1LCJyZXN1bHQiOnsidGV4dCI6IlN1Y2Nlc3NmdWxseSBlZGl0ZWQgdGhlIGZpbGUgaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nby5cblJlc3VsdCBmb3Igc3RyX3JlcGxhY2UgZm9yIGVudHJ5IHdpdGggaW5kZXggWzBdOlxuUmVwbGFjZW1lbnQgc3VjY2Vzc2Z1bC5cbkVkaXRlZCBzZWN0aW9uIGFmdGVyIElERSBhdXRvLWZvcm1hdHRpbmcgd2FzIGFwcGxpZWQ6XG4gICAgNzFcdFx0cmVjb3JkcyA6PSBtYWtlKFtdKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcywgMClcbiAgICA3Mlx0XG4gICAgNzNcdFx0cXVlcnkgOj0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9KVxuICAgIDc0XHRcbiAgICA3NVx0XHRxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgIG9uIGBtaWNyby1hY2NvdW50YC5gdXNlcmAuYGlkYCA9IGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX2lkYFwiKVxuICAgIDc2XHRcbiAgICA3N1x0XHRpZiByZXEuQ3VzdG9tZXJJRCAhPSBcIlwiIHtcbiAgICA3OFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9pZCA9ID9cIiwgcmVxLkN1c3RvbWVySUQpXG4gICAgNzlcdFx0fVxuXG5SZXZpZXcgdGhlIGNoYW5nZXMgYW5kIG1ha2Ugc3VyZSB0aGV5IGFyZSBhcyBleHBlY3RlZCAoY29ycmVjdCBpbmRlbnRhdGlvbiwgbm8gZHVwbGljYXRlIGxpbmVzLCBldGMpLlxuRWRpdCB0aGUgZmlsZSBhZ2FpbiBpZiBuZWNlc3NhcnkuXG4iLCJpc0Vycm9yIjpmYWxzZSwicmVxdWVzdElkIjoiIn19LCIyNzBhMTIwMy1kYWIxLTRhZjUtOWY1Yi0xYzhhZjljNWRkMTI7dG9vbHVfdnJ0eF8wMTg3RExyVkJvZ3lWQ2drY1FWM0t4bkQiOnsicmVxdWVzdElkIjoiMjcwYTEyMDMtZGFiMS00YWY1LTlmNWItMWM4YWY5YzVkZDEyIiwidG9vbFVzZUlkIjoidG9vbHVfdnJ0eF8wMTg3RExyVkJvZ3lWQ2drY1FWM0t4bkQiLCJwaGFzZSI6NSwicmVzdWx0Ijp7InRleHQiOiJIZXJlJ3MgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGBjYXQgLW5gIG9uIGludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ286XG4gICAxMjBcdFxuICAgMTIxXHRcdGlmIHJlcS5Jc0hhdmVWYWx1ZUFkZCA9PSAxIHsgLy8g5pyJXG4gICAxMjJcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwidmFsdWVfYWRkX2J1bmRsZV91dWlkICE9ID9cIiwgXCJcIilcbiAgIDEyM1x0XHR9IGVsc2UgaWYgcmVxLklzSGF2ZVZhbHVlQWRkID09IDIgeyAvLyDml6BcbiAgIDEyNFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJJRk5VTEwodmFsdWVfYWRkX2J1bmRsZV91dWlkLCcnKSA9ICcnXCIpXG4gICAxMjVcdFx0fVxuICAgMTI2XHRcbiAgIDEyN1x0XHRpZiByZXEuRmluYW5jaWFsQ29uZmlybWF0aW9uICE9IDAge1xuICAgMTI4XHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImZpbmFuY2lhbF9jb25maXJtYXRpb24gPSA/XCIsIHJlcS5GaW5hbmNpYWxDb25maXJtYXRpb24pXG4gICAxMjlcdFx0fVxuICAgMTMwXHRcbiAgIDEzMVx0XHRpZiByZXEuVGVsTnVtICE9IFwiXCIge1xuICAgMTMyXHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcIm1pY3JvLWFjY291bnQudXNlci50ZWxfbnVtIGxpa2UgP1wiLCBcIiVcIityZXEuVGVsTnVtK1wiJVwiKVxuICAgMTMzXHRcdH1cbiAgIDEzNFx0XG4gICAxMzVcdFx0Y291bnQgOj0gKnF1ZXJ5XG4gICAxMzZcdFxuICAgMTM3XHRcdGlmIHJlcS5QYWdlU2l6ZSAhPSAwICYmIHJlcS5QYWdlICE9IDAge1xuICAgMTM4XHRcdFx0cXVlcnkgPSBxdWVyeS5MaW1pdChpbnQocmVxLlBhZ2VTaXplKSkuT2Zmc2V0KGludChyZXEuUGFnZS0xKSAqIGludChyZXEuUGFnZVNpemUpKVxuICAgMTM5XHRcdH1cbiAgIDE0MFx0XG5Ub3RhbCBsaW5lcyBpbiBmaWxlOiAyMzlcbiIsImlzRXJyb3IiOmZhbHNlLCJyZXF1ZXN0SWQiOiIifX0sIjJhZmE2OWQ3LTYwMzAtNDM0Ni1hZDljLWFkYjc1YjI5NjVkMjt0b29sdV92cnR4XzAxTk0zaEpVUnhLVVFLdnJ0WW9pTFlXOCI6eyJyZXF1ZXN0SWQiOiIyYWZhNjlkNy02MDMwLTQzNDYtYWQ5Yy1hZGI3NWIyOTY1ZDIiLCJ0b29sVXNlSWQiOiJ0b29sdV92cnR4XzAxTk0zaEpVUnhLVVFLdnJ0WW9pTFlXOCIsInBoYXNlIjo1LCJyZXN1bHQiOnsidGV4dCI6IlN1Y2Nlc3NmdWxseSBlZGl0ZWQgdGhlIGZpbGUgaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nby5cblJlc3VsdCBmb3Igc3RyX3JlcGxhY2UgZm9yIGVudHJ5IHdpdGggaW5kZXggWzBdOlxuUmVwbGFjZW1lbnQgc3VjY2Vzc2Z1bC5cbkVkaXRlZCBzZWN0aW9uIGFmdGVyIElERSBhdXRvLWZvcm1hdHRpbmcgd2FzIGFwcGxpZWQ6XG4gICAxMjhcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiZmluYW5jaWFsX2NvbmZpcm1hdGlvbiA9ID9cIiwgcmVxLkZpbmFuY2lhbENvbmZpcm1hdGlvbilcbiAgIDEyOVx0XHR9XG4gICAxMzBcdFxuICAgMTMxXHRcdGlmIHJlcS5UZWxOdW0gIT0gXCJcIiB7XG4gICAxMzJcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gdGVsX251bWAgbGlrZSA/XCIsIFwiJVwiK3JlcS5UZWxOdW0rXCIlXCIpXG4gICAxMzNcdFx0fVxuICAgMTM0XHRcbiAgIDEzNVx0XHRjb3VudCA6PSAqcXVlcnlcbiAgIDEzNlx0XG5cblJldmlldyB0aGUgY2hhbmdlcyBhbmQgbWFrZSBzdXJlIHRoZXkgYXJlIGFzIGV4cGVjdGVkIChjb3JyZWN0IGluZGVudGF0aW9uLCBubyBkdXBsaWNhdGUgbGluZXMsIGV0YykuXG5FZGl0IHRoZSBmaWxlIGFnYWluIGlmIG5lY2Vzc2FyeS5cbiIsImlzRXJyb3IiOmZhbHNlLCJyZXF1ZXN0SWQiOiIifX0sIjk0MmE1N2NlLWEzOGMtNDdlYS05MWU3LTYxZTQ1ZWUwNjNlYzt0b29sdV92cnR4XzAxQzZ3Rk1NRUNLelYxVEVuVnF6ZldpciI6eyJyZXF1ZXN0SWQiOiI5NDJhNTdjZS1hMzhjLTQ3ZWEtOTFlNy02MWU0NWVlMDYzZWMiLCJ0b29sVXNlSWQiOiJ0b29sdV92cnR4XzAxQzZ3Rk1NRUNLelYxVEVuVnF6ZldpciIsInBoYXNlIjo1LCJyZXN1bHQiOnsidGV4dCI6IkhlcmUncyB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgYGNhdCAtbmAgb24gaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nbzpcbiAgICA3MFx0XHRyZXMuT3JkZXJSZWNvcmRzID0gbWFrZShbXSpidW5kbGUuT3JkZXJSZWNvcmQsIDApXG4gICAgNzFcdFx0cmVjb3JkcyA6PSBtYWtlKFtdKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcywgMClcbiAgICA3Mlx0XG4gICAgNzNcdFx0cXVlcnkgOj0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9KVxuICAgIDc0XHRcbiAgICA3NVx0XHRxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgIG9uIGBtaWNyby1hY2NvdW50YC5gdXNlcmAuYGlkYCA9IGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX2lkYFwiKVxuICAgIDc2XHRcbiAgICA3N1x0XHRpZiByZXEuQ3VzdG9tZXJJRCAhPSBcIlwiIHtcbiAgICA3OFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9pZCA9ID9cIiwgcmVxLkN1c3RvbWVySUQpXG4gICAgNzlcdFx0fVxuICAgIDgwXHRcblRvdGFsIGxpbmVzIGluIGZpbGU6IDIzOVxuIiwiaXNFcnJvciI6ZmFsc2UsInJlcXVlc3RJZCI6IiJ9fSwiMGFkNGYwNzMtMjEzYy00YmU4LWIxNzItZDQ2MGNlYjQxMWY4O3Rvb2x1X3ZydHhfMDE1dmMySmFMQ1UxOGlRWmpwZVBid2pyIjp7InJlcXVlc3RJZCI6IjBhZDRmMDczLTIxM2MtNGJlOC1iMTcyLWQ0NjBjZWI0MTFmOCIsInRvb2xVc2VJZCI6InRvb2x1X3ZydHhfMDE1dmMySmFMQ1UxOGlRWmpwZVBid2pyIiwicGhhc2UiOjUsInJlc3VsdCI6eyJ0ZXh0IjoiSGVyZSdzIHRoZSByZXN1bHQgb2YgcnVubmluZyBgY2F0IC1uYCBvbiBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvOlxuICAgMTMwXHRcbiAgIDEzMVx0XHRpZiByZXEuVGVsTnVtICE9IFwiXCIge1xuICAgMTMyXHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImBtaWNyby1hY2NvdW50YC5gdXNlcmAuYHRlbF9udW1gIGxpa2UgP1wiLCBcIiVcIityZXEuVGVsTnVtK1wiJVwiKVxuICAgMTMzXHRcdH1cbiAgIDEzNFx0XG4gICAxMzVcdFx0Y291bnQgOj0gKnF1ZXJ5XG4gICAxMzZcdFxuICAgMTM3XHRcdGlmIHJlcS5QYWdlU2l6ZSAhPSAwICYmIHJlcS5QYWdlICE9IDAge1xuICAgMTM4XHRcdFx0cXVlcnkgPSBxdWVyeS5MaW1pdChpbnQocmVxLlBhZ2VTaXplKSkuT2Zmc2V0KGludChyZXEuUGFnZS0xKSAqIGludChyZXEuUGFnZVNpemUpKVxuICAgMTM5XHRcdH1cbiAgIDE0MFx0XG5Ub3RhbCBsaW5lcyBpbiBmaWxlOiAyMzlcbiIsImlzRXJyb3IiOmZhbHNlLCJyZXF1ZXN0SWQiOiIifX0sIjE0ZmUxMDNmLWZmZmItNDMxMy1hNGNmLTUyMmMxZDI1YjA0Nzt0b29sdV92cnR4XzAxR1NjbzdxRmROcHVMeWtaaTF2elZ6YiI6eyJyZXF1ZXN0SWQiOiIxNGZlMTAzZi1mZmZiLTQzMTMtYTRjZi01MjJjMWQyNWIwNDciLCJ0b29sVXNlSWQiOiJ0b29sdV92cnR4XzAxR1NjbzdxRmROcHVMeWtaaTF2elZ6YiIsInBoYXNlIjo1LCJyZXN1bHQiOnsidGV4dCI6IlN1Y2Nlc3NmdWxseSBlZGl0ZWQgdGhlIGZpbGUgaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nby5cblJlc3VsdCBmb3Igc3RyX3JlcGxhY2UgZm9yIGVudHJ5IHdpdGggaW5kZXggWzBdOlxuUmVwbGFjZW1lbnQgc3VjY2Vzc2Z1bC5cbkVkaXRlZCBzZWN0aW9uIGFmdGVyIElERSBhdXRvLWZvcm1hdHRpbmcgd2FzIGFwcGxpZWQ6XG4gICAgNzFcdFx0cmVjb3JkcyA6PSBtYWtlKFtdKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcywgMClcbiAgICA3Mlx0XG4gICAgNzNcdFx0cXVlcnkgOj0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9KVxuICAgIDc0XHRcbiAgICA3NVx0XHRxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBcXGBtaWNyby1hY2NvdW50XFxgLlxcYHVzZXJcXGAgb24gXFxgbWljcm8tYWNjb3VudFxcYC5cXGB1c2VyXFxgLlxcYGlkXFxgID0gXFxgYnVuZGxlX29yZGVyX3JlY29yZHNcXGAuXFxgY3VzdG9tZXJfaWRcXGBcIilcbiAgICA3Nlx0XG4gICAgNzdcdFx0aWYgcmVxLkN1c3RvbWVySUQgIT0gXCJcIiB7XG4gICAgNzhcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiY3VzdG9tZXJfaWQgPSA/XCIsIHJlcS5DdXN0b21lcklEKVxuICAgIDc5XHRcdH1cblxuUmV2aWV3IHRoZSBjaGFuZ2VzIGFuZCBtYWtlIHN1cmUgdGhleSBhcmUgYXMgZXhwZWN0ZWQgKGNvcnJlY3QgaW5kZW50YXRpb24sIG5vIGR1cGxpY2F0ZSBsaW5lcywgZXRjKS5cbkVkaXQgdGhlIGZpbGUgYWdhaW4gaWYgbmVjZXNzYXJ5LlxuIiwiaXNFcnJvciI6ZmFsc2UsInJlcXVlc3RJZCI6IiJ9fSwiMjFhNWRhNDItMzc3Ni00ZDk5LTkyZGEtN2I5ZTBjOWVhZjk4O3Rvb2x1X3ZydHhfMDFQbTFMcHlKdDZjc2Q5aFg1d295cVZtIjp7InJlcXVlc3RJZCI6IjIxYTVkYTQyLTM3NzYtNGQ5OS05MmRhLTdiOWUwYzllYWY5OCIsInRvb2xVc2VJZCI6InRvb2x1X3ZydHhfMDFQbTFMcHlKdDZjc2Q5aFg1d295cVZtIiwicGhhc2UiOjUsInJlc3VsdCI6eyJ0ZXh0IjoiU3VjY2Vzc2Z1bGx5IGVkaXRlZCB0aGUgZmlsZSBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvLlxuUmVzdWx0IGZvciBzdHJfcmVwbGFjZSBmb3IgZW50cnkgd2l0aCBpbmRleCBbMF06XG5SZXBsYWNlbWVudCBzdWNjZXNzZnVsLlxuRWRpdGVkIHNlY3Rpb24gYWZ0ZXIgSURFIGF1dG8tZm9ybWF0dGluZyB3YXMgYXBwbGllZDpcbiAgIDEyOFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJmaW5hbmNpYWxfY29uZmlybWF0aW9uID0gP1wiLCByZXEuRmluYW5jaWFsQ29uZmlybWF0aW9uKVxuICAgMTI5XHRcdH1cbiAgIDEzMFx0XG4gICAxMzFcdFx0aWYgcmVxLlRlbE51bSAhPSBcIlwiIHtcbiAgIDEzMlx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJcXGBtaWNyby1hY2NvdW50XFxgLlxcYHVzZXJcXGAuXFxgdGVsX251bVxcYCBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIDEzM1x0XHR9XG4gICAxMzRcdFxuICAgMTM1XHRcdGNvdW50IDo9ICpxdWVyeVxuICAgMTM2XHRcblxuUmV2aWV3IHRoZSBjaGFuZ2VzIGFuZCBtYWtlIHN1cmUgdGhleSBhcmUgYXMgZXhwZWN0ZWQgKGNvcnJlY3QgaW5kZW50YXRpb24sIG5vIGR1cGxpY2F0ZSBsaW5lcywgZXRjKS5cbkVkaXQgdGhlIGZpbGUgYWdhaW4gaWYgbmVjZXNzYXJ5LlxuIiwiaXNFcnJvciI6ZmFsc2UsInJlcXVlc3RJZCI6IiJ9fSwiYjQxZjUzNDItYWYzNy00YTM1LWFkMDctNmIxOTdlM2Q2YmVjO3Rvb2x1X3ZydHhfMDFFRjk5S1R4aVVtanc2SHBaQzF3bkxmIjp7InJlcXVlc3RJZCI6ImI0MWY1MzQyLWFmMzctNGEzNS1hZDA3LTZiMTk3ZTNkNmJlYyIsInRvb2xVc2VJZCI6InRvb2x1X3ZydHhfMDFFRjk5S1R4aVVtanc2SHBaQzF3bkxmIiwicGhhc2UiOjUsInJlc3VsdCI6eyJ0ZXh0IjoiSGVyZSdzIHRoZSByZXN1bHQgb2YgcnVubmluZyBgY2F0IC1uYCBvbiBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvOlxuICAgIDcwXHRcdHJlcy5PcmRlclJlY29yZHMgPSBtYWtlKFtdKmJ1bmRsZS5PcmRlclJlY29yZCwgMClcbiAgICA3MVx0XHRyZWNvcmRzIDo9IG1ha2UoW10qbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzLCAwKVxuICAgIDcyXHRcbiAgICA3M1x0XHRxdWVyeSA6PSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5Nb2RlbCgmbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRze30pXG4gICAgNzRcdFxuICAgIDc1XHRcdHF1ZXJ5LkpvaW5zKFwibGVmdCBqb2luIFxcXFxgbWljcm8tYWNjb3VudGAuYHVzZXJgIG9uIGBtaWNyby1hY2NvdW50YC5gdXNlcmAuYGlkYCA9IGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX2lkYFwiKVxuICAgIDc2XHRcbiAgICA3N1x0XHRpZiByZXEuQ3VzdG9tZXJJRCAhPSBcIlwiIHtcbiAgICA3OFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9pZCA9ID9cIiwgcmVxLkN1c3RvbWVySUQpXG4gICAgNzlcdFx0fVxuICAgIDgwXHRcblRvdGFsIGxpbmVzIGluIGZpbGU6IDIzOVxuIiwiaXNFcnJvciI6ZmFsc2UsInJlcXVlc3RJZCI6IiJ9fSwiZmQzZDdlZWItMDBlOC00MDRhLWJhZTYtZjUzYjE4ZGYyMzkxO3Rvb2x1X3ZydHhfMDE5M1VuSm1MTnF0c2ZGNUxZdFBmNFpLIjp7InJlcXVlc3RJZCI6ImZkM2Q3ZWViLTAwZTgtNDA0YS1iYWU2LWY1M2IxOGRmMjM5MSIsInRvb2xVc2VJZCI6InRvb2x1X3ZydHhfMDE5M1VuSm1MTnF0c2ZGNUxZdFBmNFpLIiwicGhhc2UiOjYsInJlc3VsdCI6eyJ0ZXh0IjoiRmFpbGVkIHRvIGVkaXQgdGhlIGZpbGUgaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nby4gU2VlIGJlbG93IGZvciBkZXRhaWxzLlxuUmVzdWx0IGZvciBzdHJfcmVwbGFjZSBmb3IgZW50cnkgd2l0aCBpbmRleCBbMF06XG5ObyByZXBsYWNlbWVudCB3YXMgcGVyZm9ybWVkLCBvbGRTdHIgZGlkIG5vdCBhcHBlYXIgdmVyYmF0aW0gaW4gaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nby5cblRoZSBjb250ZW50IGluIHRoZSBzcGVjaWZpZWQgcmVnaW9uIGlzOlxuICAgIDcxXHRcdHJlY29yZHMgOj0gbWFrZShbXSptb2RlbC5CdW5kbGVPcmRlclJlY29yZHMsIDApXG4gICAgNzJcdFxuICAgIDczXHRcdHF1ZXJ5IDo9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLk1vZGVsKCZtb2RlbC5CdW5kbGVPcmRlclJlY29yZHN7fSlcbiAgICA3NFx0XG4gICAgNzVcdFx0cXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gXFxcXGBtaWNyby1hY2NvdW50YC5gdXNlcmAgb24gYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gaWRgID0gYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gY3VzdG9tZXJfaWRgXCIpXG4gICAgNzZcdFxuICAgIDc3XHRcdGlmIHJlcS5DdXN0b21lcklEICE9IFwiXCIge1xuICAgIDc4XHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImN1c3RvbWVyX2lkID0gP1wiLCByZXEuQ3VzdG9tZXJJRClcbiAgICA3OVx0XHR9XG5cbkRpZmYgYmV0d2VlbiBvbGRTdHIgYW5kIHRoZSBzcGVjaWZpZWQgcmVnaW9uIGlzOlxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLS0tIG9sZFN0clxuKysrIHJlZ2lvbkNvbnRlbnRcbkBAIC0xLDEgKzEsMSBAQFxuLVx0cXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gXFxgbWljcm8tYWNjb3VudGAuYHVzZXJgIG9uIGBtaWNyby1hY2NvdW50YC5gdXNlcmAuYGlkYCA9IGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX2lkYFwiKVxuK1x0cXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gXFxcXGBtaWNyby1hY2NvdW50YC5gdXNlcmAgb24gYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gaWRgID0gYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gY3VzdG9tZXJfaWRgXCIpXG5cblxuRml4IGZhaWxlZCBzdHJfcmVwbGFjZSBlbnRyaWVzIGFjY29yZGluZ2x5IGFuZCB0cnkgYWdhaW4uXG4iLCJpc0Vycm9yIjp0cnVlLCJyZXF1ZXN0SWQiOiIifX0sIjJhNzQyNDE0LWU4ODQtNDllZS04OGZkLWMzMGIzYzg3ZWJjYjt0b29sdV92cnR4XzAxUGtlcDJrNnZNOVBDYnU4bmpWelkzYSI6eyJyZXF1ZXN0SWQiOiIyYTc0MjQxNC1lODg0LTQ5ZWUtODhmZC1jMzBiM2M4N2ViY2IiLCJ0b29sVXNlSWQiOiJ0b29sdV92cnR4XzAxUGtlcDJrNnZNOVBDYnU4bmpWelkzYSIsInBoYXNlIjo1LCJyZXN1bHQiOnsidGV4dCI6IlN1Y2Nlc3NmdWxseSBlZGl0ZWQgdGhlIGZpbGUgaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nby5cblJlc3VsdCBmb3Igc3RyX3JlcGxhY2UgZm9yIGVudHJ5IHdpdGggaW5kZXggWzBdOlxuUmVwbGFjZW1lbnQgc3VjY2Vzc2Z1bC5cbkVkaXRlZCBzZWN0aW9uIGFmdGVyIElERSBhdXRvLWZvcm1hdHRpbmcgd2FzIGFwcGxpZWQ6XG4gICAgNzFcdFx0cmVjb3JkcyA6PSBtYWtlKFtdKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcywgMClcbiAgICA3Mlx0XG4gICAgNzNcdFx0cXVlcnkgOj0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9KVxuICAgIDc0XHRcbiAgICA3NVx0XHRxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBtaWNyb19hY2NvdW50LnVzZXIgb24gbWljcm9fYWNjb3VudC51c2VyLmlkID0gYnVuZGxlX29yZGVyX3JlY29yZHMuY3VzdG9tZXJfaWRcIilcbiAgICA3Nlx0XG4gICAgNzdcdFx0aWYgcmVxLkN1c3RvbWVySUQgIT0gXCJcIiB7XG4gICAgNzhcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiY3VzdG9tZXJfaWQgPSA/XCIsIHJlcS5DdXN0b21lcklEKVxuICAgIDc5XHRcdH1cblxuUmV2aWV3IHRoZSBjaGFuZ2VzIGFuZCBtYWtlIHN1cmUgdGhleSBhcmUgYXMgZXhwZWN0ZWQgKGNvcnJlY3QgaW5kZW50YXRpb24sIG5vIGR1cGxpY2F0ZSBsaW5lcywgZXRjKS5cbkVkaXQgdGhlIGZpbGUgYWdhaW4gaWYgbmVjZXNzYXJ5LlxuIiwiaXNFcnJvciI6ZmFsc2UsInJlcXVlc3RJZCI6IiJ9fSwiYjM2YWMwOGQtN2MxZS00YmRlLWIwNzQtOTYwYTEwM2I4Mzg4O3Rvb2x1X3ZydHhfMDFEREI5SkhYRGdKZ3A4em1odDJDZ245Ijp7InJlcXVlc3RJZCI6ImIzNmFjMDhkLTdjMWUtNGJkZS1iMDc0LTk2MGExMDNiODM4OCIsInRvb2xVc2VJZCI6InRvb2x1X3ZydHhfMDFEREI5SkhYRGdKZ3A4em1odDJDZ245IiwicGhhc2UiOjUsInJlc3VsdCI6eyJ0ZXh0IjoiSGVyZSdzIHRoZSByZXN1bHQgb2YgcnVubmluZyBgY2F0IC1uYCBvbiBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvOlxuICAgMTMwXHRcbiAgIDEzMVx0XHRpZiByZXEuVGVsTnVtICE9IFwiXCIge1xuICAgMTMyXHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImBtaWNyby1hY2NvdW50YC5gdXNlcmAuYHRlbF9udW1gIGxpa2UgP1wiLCBcIiVcIityZXEuVGVsTnVtK1wiJVwiKVxuICAgMTMzXHRcdH1cbiAgIDEzNFx0XG4gICAxMzVcdFx0Y291bnQgOj0gKnF1ZXJ5XG4gICAxMzZcdFxuICAgMTM3XHRcdGlmIHJlcS5QYWdlU2l6ZSAhPSAwICYmIHJlcS5QYWdlICE9IDAge1xuICAgMTM4XHRcdFx0cXVlcnkgPSBxdWVyeS5MaW1pdChpbnQocmVxLlBhZ2VTaXplKSkuT2Zmc2V0KGludChyZXEuUGFnZS0xKSAqIGludChyZXEuUGFnZVNpemUpKVxuICAgMTM5XHRcdH1cbiAgIDE0MFx0XG5Ub3RhbCBsaW5lcyBpbiBmaWxlOiAyMzlcbiIsImlzRXJyb3IiOmZhbHNlLCJyZXF1ZXN0SWQiOiIifX0sIjM3YmY2NjBjLWYzMDAtNGY3MS1iNTNmLTQzOWI2NDkzNmUxMzt0b29sdV92cnR4XzAxQ2dNWVZFWWprZkN0N1BiNWZ1Z21xdSI6eyJyZXF1ZXN0SWQiOiIzN2JmNjYwYy1mMzAwLTRmNzEtYjUzZi00MzliNjQ5MzZlMTMiLCJ0b29sVXNlSWQiOiJ0b29sdV92cnR4XzAxQ2dNWVZFWWprZkN0N1BiNWZ1Z21xdSIsInBoYXNlIjo1LCJyZXN1bHQiOnsidGV4dCI6IlN1Y2Nlc3NmdWxseSBlZGl0ZWQgdGhlIGZpbGUgaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nby5cblJlc3VsdCBmb3Igc3RyX3JlcGxhY2UgZm9yIGVudHJ5IHdpdGggaW5kZXggWzBdOlxuUmVwbGFjZW1lbnQgc3VjY2Vzc2Z1bC5cbkVkaXRlZCBzZWN0aW9uIGFmdGVyIElERSBhdXRvLWZvcm1hdHRpbmcgd2FzIGFwcGxpZWQ6XG4gICAxMjhcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiZmluYW5jaWFsX2NvbmZpcm1hdGlvbiA9ID9cIiwgcmVxLkZpbmFuY2lhbENvbmZpcm1hdGlvbilcbiAgIDEyOVx0XHR9XG4gICAxMzBcdFxuICAgMTMxXHRcdGlmIHJlcS5UZWxOdW0gIT0gXCJcIiB7XG4gICAxMzJcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwibWljcm9fYWNjb3VudC51c2VyLnRlbF9udW0gbGlrZSA/XCIsIFwiJVwiK3JlcS5UZWxOdW0rXCIlXCIpXG4gICAxMzNcdFx0fVxuICAgMTM0XHRcbiAgIDEzNVx0XHRjb3VudCA6PSAqcXVlcnlcbiAgIDEzNlx0XG5cblJldmlldyB0aGUgY2hhbmdlcyBhbmQgbWFrZSBzdXJlIHRoZXkgYXJlIGFzIGV4cGVjdGVkIChjb3JyZWN0IGluZGVudGF0aW9uLCBubyBkdXBsaWNhdGUgbGluZXMsIGV0YykuXG5FZGl0IHRoZSBmaWxlIGFnYWluIGlmIG5lY2Vzc2FyeS5cbiIsImlzRXJyb3IiOmZhbHNlLCJyZXF1ZXN0SWQiOiIifX19LCJkcmFmdEV4Y2hhbmdlIjp7InJlcXVlc3RfbWVzc2FnZSI6IiIsInJpY2hfdGV4dF9qc29uX3JlcHIiOnsidHlwZSI6ImRvYyIsImNvbnRlbnQiOlt7InR5cGUiOiJwYXJhZ3JhcGgifV19LCJzdGF0dXMiOiJkcmFmdCJ9LCJyZXF1ZXN0SWRzIjpbXSwiaXNQaW5uZWQiOmZhbHNlLCJpc1NoYXJlYWJsZSI6dHJ1ZSwiZXh0cmFEYXRhIjp7ImlzQWdlbnRDb252ZXJzYXRpb24iOnRydWUsImhhc0FnZW50T25ib2FyZGVkIjp0cnVlLCJoYXNEaXJ0eUVkaXRzIjp0cnVlfSwicGVyc29uYVR5cGUiOjB9fSwiYWdlbnRFeGVjdXRpb25Nb2RlIjoibWFudWFsIiwiaXNBZ2VudEVkaXRzQ29sbGFwc2VkIjp0cnVlLCJzaG91bGREaXNwbGF5QWdlbnRCYW5uZXIiOnRydWUsImhhc05vdFVzZWRBZ2VudCI6dHJ1ZSwiaXNDb250ZXh0UGFuZU9wZW4iOmZhbHNlLCJpc0FjdGlvbnNQYW5lT3BlbiI6ZmFsc2V9" />
</map>
</option>
</component>
</project>