Tokens Smart Contract

Words
1
Reading
1 min
Listen
Play
6y

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"tokens","params":"","code":"Y29uc3QgQUNDT1VOVF9CTEFDS0xJU1Q9e2dhdGVpb2RlcG9zaXQ6MSxkZWVwY3J5cHRvODoxLGJpdHRyZXg6MSxwb2xvbmlleDoxLCJodW9iaS1wcm8iOjEsImJpbmFuY2UtaG90IjoxLGJpdHZhdm86MSxibG9ja3RyYWRlczoxLHByb2JpdHN0ZWVtOjEscHJvYml0aGl2ZToxLGlvbm9teToxLG14Y2hpdmU6MSxjb2luYmFzZWJhc2U6MSxvcmlub2NvOjEsInVzZXIuZHVuYW11IjoxfSxIRV9BQ0NPVU5UUz17ImhpdmUtZW5naW5lIjoxLCJzd2FwLWV0aCI6MSwiYnRjLXN3YXAiOjEsImdyYXBoZW5lLXN3YXAiOjEsImhvbmV5LXN3YXAiOjF9LFJFU0VSVkVEX1NZTUJPTFM9e0VORzoibnVsbCIsU1RFRU1QOiJzdGVlbS1wZWciLEJUQ1A6ImJ0Y3BlZyIsTFRDUDoibHRjcCIsRE9HRVA6ImRvZ2VwIixCQ0hQOiJiY2hwIixTTVRUOiJzdGVlbW1vbnN0ZXJzIixFTToic3RlZW0tZW5nIixFTUZPVVI6InN0ZWVtLWVuZyIsSElWRVA6InN0ZWVtLXRva2VucyJ9LGNhbGN1bGF0ZUJhbGFuY2U9KGJhbGFuY2UscXVhbnRpdHkscHJlY2lzaW9uLGFkZCk9PmFkZD9hcGkuQmlnTnVtYmVyKGJhbGFuY2UpLnBsdXMocXVhbnRpdHkpLnRvRml4ZWQocHJlY2lzaW9uKTphcGkuQmlnTnVtYmVyKGJhbGFuY2UpLm1pbnVzKHF1YW50aXR5KS50b0ZpeGVkKHByZWNpc2lvbiksY291bnREZWNpbWFscz12YWx1ZT0+YXBpLkJpZ051bWJlcih2YWx1ZSkuZHAoKSxmaW5kQW5kUHJvY2Vzc0FsbD1hc3luYyh0YWJsZSxxdWVyeSxjYWxsYmFjayk9PntsZXQgb2Zmc2V0PTAscmVzdWx0cz1bXSxkb25lPSExO2Zvcig7IWRvbmU7KWlmKHJlc3VsdHM9YXdhaXQgYXBpLmRiLmZpbmQodGFibGUscXVlcnksMWUzLG9mZnNldCkscmVzdWx0cyl7Zm9yKGxldCBpPTA7aTxyZXN1bHRzLmxlbmd0aDtpKz0xKWF3YWl0IGNhbGxiYWNrKHJlc3VsdHNbaV0pO3Jlc3VsdHMubGVuZ3RoPDFlMz9kb25lPSEwOm9mZnNldCs9MWUzfX07YWN0aW9ucy5jcmVhdGVTU0M9YXN5bmMoKT0+e2lmKCExPT09YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJ0b2tlbnMiKSl7YXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ0b2tlbnMiLFsic3ltYm9sIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiYmFsYW5jZXMiLFsiYWNjb3VudCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoImNvbnRyYWN0c0JhbGFuY2VzIixbImFjY291bnQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwYXJhbXMiKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBlbmRpbmdVbnN0YWtlcyIsWyJhY2NvdW50IiwidW5zdGFrZUNvbXBsZXRlVGltZXN0YW1wIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiZGVsZWdhdGlvbnMiLFsiZnJvbSIsInRvIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLFsiYWNjb3VudCIsImNvbXBsZXRlVGltZXN0YW1wIl0pO2NvbnN0IHBhcmFtcz17dG9rZW5DcmVhdGlvbkZlZToiMCIsZW5hYmxlRGVsZWdhdGlvbkZlZToiMCIsZW5hYmxlU3Rha2luZ0ZlZToiMCJ9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBhcmFtcyIscGFyYW1zKX1lbHNle2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7aWYoIXBhcmFtcy5ibGFja2xpc3Qpe3BhcmFtcy5ibGFja2xpc3Q9QUNDT1VOVF9CTEFDS0xJU1QscGFyYW1zLmhlQWNjb3VudHM9SEVfQUNDT1VOVFM7Y29uc3QgdW5zZXRzPXt9O2xldCB1c2VVbnNldHM9ITE7cGFyYW1zLmZpeE11bHRpVHhVbnN0YWtlQmFsYW5jZSYmKGRlbGV0ZSBwYXJhbXMuZml4TXVsdGlUeFVuc3Rha2VCYWxhbmNlLHVuc2V0cy5maXhNdWx0aVR4VW5zdGFrZUJhbGFuY2U9IiIsdXNlVW5zZXRzPSEwKSxwYXJhbXMuY2FuY2VsQmFkVW5zdGFrZXMmJihkZWxldGUgcGFyYW1zLmNhbmNlbEJhZFVuc3Rha2VzLHVuc2V0cy5jYW5jZWxCYWRVbnN0YWtlcz0iIix1c2VVbnNldHM9ITApLHVzZVVuc2V0cz9hd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyx1bnNldHMpOmF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKX19fTtjb25zdCBiYWxhbmNlVGVtcGxhdGU9e2FjY291bnQ6bnVsbCxzeW1ib2w6bnVsbCxiYWxhbmNlOiIwIixzdGFrZToiMCIscGVuZGluZ1Vuc3Rha2U6IjAiLGRlbGVnYXRpb25zSW46IjAiLGRlbGVnYXRpb25zT3V0OiIwIixwZW5kaW5nVW5kZWxlZ2F0aW9uczoiMCJ9LGFkZFN0YWtlPWFzeW5jKGFjY291bnQsdG9rZW4scXVhbnRpdHkpPT57bGV0IGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDp0b2tlbi5zeW1ib2x9KTtudWxsPT09YmFsYW5jZSYmKGJhbGFuY2U9YmFsYW5jZVRlbXBsYXRlLGJhbGFuY2UuYWNjb3VudD1hY2NvdW50LGJhbGFuY2Uuc3ltYm9sPXRva2VuLnN5bWJvbCxiYWxhbmNlPWF3YWl0IGFwaS5kYi5pbnNlcnQoImJhbGFuY2VzIixiYWxhbmNlKSksdm9pZCAwPT09YmFsYW5jZS5zdGFrZSYmKGJhbGFuY2Uuc3Rha2U9IjAiLGJhbGFuY2UucGVuZGluZ1Vuc3Rha2U9IjAiKTtjb25zdCBvcmlnaW5hbFN0YWtlPWJhbGFuY2Uuc3Rha2U7cmV0dXJuIGJhbGFuY2Uuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnN0YWtlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksISFhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5zdGFrZSkuZ3Qob3JpZ2luYWxTdGFrZSksImNhbm5vdCBhZGQiKSYmKGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlKSx2b2lkIDA9PT10b2tlbi50b3RhbFN0YWtlZCYmKHRva2VuLnRvdGFsU3Rha2VkPSIwIiksdG9rZW4udG90YWxTdGFrZWQ9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi50b3RhbFN0YWtlZCxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pLCEwKX0sc3ViQmFsYW5jZT1hc3luYyhhY2NvdW50LHRva2VuLHF1YW50aXR5LHRhYmxlKT0+e2NvbnN0IGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUodGFibGUse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6dG9rZW4uc3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09YmFsYW5jZSwiYmFsYW5jZSBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5iYWxhbmNlKS5ndGUocXVhbnRpdHkpLCJvdmVyZHJhd24gYmFsYW5jZSIpKXtjb25zdCBvcmlnaW5hbEJhbGFuY2U9YmFsYW5jZS5iYWxhbmNlO2lmKGJhbGFuY2UuYmFsYW5jZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UuYmFsYW5jZSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITEpLGFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlLmJhbGFuY2UpLmx0KG9yaWdpbmFsQmFsYW5jZSksImNhbm5vdCBzdWJ0cmFjdCIpKXJldHVybiBhd2FpdCBhcGkuZGIudXBkYXRlKHRhYmxlLGJhbGFuY2UpLCEwfXJldHVybiExfSxhZGRCYWxhbmNlPWFzeW5jKGFjY291bnQsdG9rZW4scXVhbnRpdHksdGFibGUpPT57bGV0IGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUodGFibGUse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6dG9rZW4uc3ltYm9sfSk7aWYobnVsbD09PWJhbGFuY2UpcmV0dXJuIGJhbGFuY2U9YmFsYW5jZVRlbXBsYXRlLGJhbGFuY2UuYWNjb3VudD1hY2NvdW50LGJhbGFuY2Uuc3ltYm9sPXRva2VuLnN5bWJvbCxiYWxhbmNlLmJhbGFuY2U9cXVhbnRpdHksYXdhaXQgYXBpLmRiLmluc2VydCh0YWJsZSxiYWxhbmNlKSwhMDtjb25zdCBvcmlnaW5hbEJhbGFuY2U9YmFsYW5jZS5iYWxhbmNlO3JldHVybiBiYWxhbmNlLmJhbGFuY2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLmJhbGFuY2UscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSwhIWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlLmJhbGFuY2UpLmd0KG9yaWdpbmFsQmFsYW5jZSksImNhbm5vdCBhZGQiKSYmKGF3YWl0IGFwaS5kYi51cGRhdGUodGFibGUsYmFsYW5jZSksITApfTthY3Rpb25zLnVwZGF0ZVBhcmFtcz1hc3luYyBwYXlsb2FkPT57aWYoYXBpLnNlbmRlciE9PWFwaS5vd25lcilyZXR1cm47Y29uc3R7dG9rZW5DcmVhdGlvbkZlZTp0b2tlbkNyZWF0aW9uRmVlLGVuYWJsZURlbGVnYXRpb25GZWU6ZW5hYmxlRGVsZWdhdGlvbkZlZSxlbmFibGVTdGFraW5nRmVlOmVuYWJsZVN0YWtpbmdGZWUsYmxhY2tsaXN0OmJsYWNrbGlzdCxoZUFjY291bnRzOmhlQWNjb3VudHN9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTt0b2tlbkNyZWF0aW9uRmVlJiYic3RyaW5nIj09dHlwZW9mIHRva2VuQ3JlYXRpb25GZWUmJiFhcGkuQmlnTnVtYmVyKHRva2VuQ3JlYXRpb25GZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIodG9rZW5DcmVhdGlvbkZlZSkuZ3RlKDApJiYocGFyYW1zLnRva2VuQ3JlYXRpb25GZWU9dG9rZW5DcmVhdGlvbkZlZSksZW5hYmxlRGVsZWdhdGlvbkZlZSYmInN0cmluZyI9PXR5cGVvZiBlbmFibGVEZWxlZ2F0aW9uRmVlJiYhYXBpLkJpZ051bWJlcihlbmFibGVEZWxlZ2F0aW9uRmVlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKGVuYWJsZURlbGVnYXRpb25GZWUpLmd0ZSgwKSYmKHBhcmFtcy5lbmFibGVEZWxlZ2F0aW9uRmVlPWVuYWJsZURlbGVnYXRpb25GZWUpLGVuYWJsZVN0YWtpbmdGZWUmJiJzdHJpbmciPT10eXBlb2YgZW5hYmxlU3Rha2luZ0ZlZSYmIWFwaS5CaWdOdW1iZXIoZW5hYmxlU3Rha2luZ0ZlZSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihlbmFibGVTdGFraW5nRmVlKS5ndGUoMCkmJihwYXJhbXMuZW5hYmxlU3Rha2luZ0ZlZT1lbmFibGVTdGFraW5nRmVlKSxibGFja2xpc3QmJiJvYmplY3QiPT10eXBlb2YgYmxhY2tsaXN0JiYocGFyYW1zLmJsYWNrbGlzdD1ibGFja2xpc3QpLGhlQWNjb3VudHMmJiJvYmplY3QiPT10eXBlb2YgaGVBY2NvdW50cyYmKHBhcmFtcy5oZUFjY291bnRzPWhlQWNjb3VudHMpLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKX0sYWN0aW9ucy51cGRhdGVVcmw9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3VybDp1cmwsc3ltYm9sOnN5bWJvbH09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnVybCYmInN0cmluZyI9PXR5cGVvZiB1cmwsImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQodXJsLmxlbmd0aDw9MjU1LCJpbnZhbGlkIHVybDogbWF4IGxlbmd0aCBvZiAyNTUiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZih0b2tlbiYmYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl0cnl7Y29uc3QgbWV0YWRhdGE9SlNPTi5wYXJzZSh0b2tlbi5tZXRhZGF0YSk7YXBpLmFzc2VydChtZXRhZGF0YSYmbWV0YWRhdGEudXJsLCJhbiBlcnJvciBvY2N1cmVkIHdoZW4gdHJ5aW5nIHRvIHVwZGF0ZSB0aGUgdXJsIikmJihtZXRhZGF0YS51cmw9dXJsLHRva2VuLm1ldGFkYXRhPUpTT04uc3RyaW5naWZ5KG1ldGFkYXRhKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSl9Y2F0Y2goZSl7fX19LGFjdGlvbnMudXBkYXRlTWV0YWRhdGE9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e21ldGFkYXRhOm1ldGFkYXRhLHN5bWJvbDpzeW1ib2x9PXBheWxvYWQ7aWYoYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZtZXRhZGF0YSYmIm9iamVjdCI9PXR5cGVvZiBtZXRhZGF0YSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZih0b2tlbiYmYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl0cnl7Y29uc3QgZmluYWxNZXRhZGF0YT1KU09OLnN0cmluZ2lmeShtZXRhZGF0YSk7YXBpLmFzc2VydChmaW5hbE1ldGFkYXRhLmxlbmd0aDw9MWUzLCJpbnZhbGlkIG1ldGFkYXRhOiBtYXggbGVuZ3RoIG9mIDEwMDAiKSYmKHRva2VuLm1ldGFkYXRhPWZpbmFsTWV0YWRhdGEsYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbikpfWNhdGNoKGUpe319fSxhY3Rpb25zLnVwZGF0ZVByZWNpc2lvbj1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxwcmVjaXNpb246cHJlY2lzaW9uLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCkmJmFwaS5hc3NlcnQocHJlY2lzaW9uPjAmJnByZWNpc2lvbjw9OCYmTnVtYmVyLmlzSW50ZWdlcihwcmVjaXNpb24pLCJpbnZhbGlkIHByZWNpc2lvbiIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO3Rva2VuJiZhcGkuYXNzZXJ0KHRva2VuLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpJiZhcGkuYXNzZXJ0KHByZWNpc2lvbj50b2tlbi5wcmVjaXNpb24sInByZWNpc2lvbiBjYW4gb25seSBiZSBpbmNyZWFzZWQiKSYmKHRva2VuLnByZWNpc2lvbj1wcmVjaXNpb24sYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbikpfX0sYWN0aW9ucy50cmFuc2Zlck93bmVyc2hpcD1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCx0bzp0byxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnRvJiYic3RyaW5nIj09dHlwZW9mIHRvLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKHRva2VuJiZhcGkuYXNzZXJ0KHRva2VuLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKTthcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyksImludmFsaWQgdG8iKSYmKHRva2VuLmlzc3Vlcj1maW5hbFRvLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pKX19fSxhY3Rpb25zLmNyZWF0ZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7bmFtZTpuYW1lLHN5bWJvbDpzeW1ib2wsdXJsOnVybCxwcmVjaXNpb246cHJlY2lzaW9uLG1heFN1cHBseTptYXhTdXBwbHksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHt0b2tlbkNyZWF0aW9uRmVlOnRva2VuQ3JlYXRpb25GZWUsaGVBY2NvdW50czpoZUFjY291bnRzfT1wYXJhbXMsdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksYXV0aG9yaXplZENyZWF0aW9uPSEoIWFwaS5CaWdOdW1iZXIodG9rZW5DcmVhdGlvbkZlZSkubHRlKDApJiYxIT09aGVBY2NvdW50c1thcGkuc2VuZGVyXSl8fHV0aWxpdHlUb2tlbkJhbGFuY2UmJmFwaS5CaWdOdW1iZXIodXRpbGl0eVRva2VuQmFsYW5jZS5iYWxhbmNlKS5ndGUodG9rZW5DcmVhdGlvbkZlZSk7aWYoYXBpLmFzc2VydChhdXRob3JpemVkQ3JlYXRpb24sInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgY3JlYXRpb24gZmVlcyIpJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChuYW1lJiYic3RyaW5nIj09dHlwZW9mIG5hbWUmJnN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJih2b2lkIDA9PT11cmx8fHVybCYmInN0cmluZyI9PXR5cGVvZiB1cmwpJiYocHJlY2lzaW9uJiYibnVtYmVyIj09dHlwZW9mIHByZWNpc2lvbnx8MD09PXByZWNpc2lvbikmJm1heFN1cHBseSYmInN0cmluZyI9PXR5cGVvZiBtYXhTdXBwbHkmJiFhcGkuQmlnTnVtYmVyKG1heFN1cHBseSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChzeW1ib2wubGVuZ3RoPjAmJnN5bWJvbC5sZW5ndGg8PTEwJiZhcGkudmFsaWRhdG9yLmlzQWxwaGEoYXBpLnZhbGlkYXRvci5ibGFja2xpc3Qoc3ltYm9sLCIuIikpJiZhcGkudmFsaWRhdG9yLmlzVXBwZXJjYXNlKHN5bWJvbCkmJigtMT09PXN5bWJvbC5pbmRleE9mKCIuIil8fHN5bWJvbC5pbmRleE9mKCIuIik+MCYmc3ltYm9sLmluZGV4T2YoIi4iKTxzeW1ib2wubGVuZ3RoLTEmJnN5bWJvbC5pbmRleE9mKCIuIik9PT1zeW1ib2wubGFzdEluZGV4T2YoIi4iKSksJ2ludmFsaWQgc3ltYm9sOiB1cHBlcmNhc2UgbGV0dGVycyBvbmx5IGFuZCBvbmUgIi4iIGFsbG93ZWQsIG1heCBsZW5ndGggb2YgMTAnKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1SRVNFUlZFRF9TWU1CT0xTW3N5bWJvbF18fGFwaS5zZW5kZXI9PT1SRVNFUlZFRF9TWU1CT0xTW3N5bWJvbF0sImNhbm5vdCB1c2UgdGhpcyBzeW1ib2wiKSYmYXBpLmFzc2VydCgxPT09aGVBY2NvdW50c1thcGkuc2VuZGVyXXx8LTE9PT1zeW1ib2wuaW5kZXhPZigiU1dBUCIpLCJpbnZhbGlkIHN5bWJvbDogbm90IGFsbG93ZWQgdG8gdXNlIFNXQVAiKSYmYXBpLmFzc2VydChhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKGFwaS52YWxpZGF0b3IuYmxhY2tsaXN0KG5hbWUsIiAiKSkmJm5hbWUubGVuZ3RoPjAmJm5hbWUubGVuZ3RoPD01MCwiaW52YWxpZCBuYW1lOiBsZXR0ZXJzLCBudW1iZXJzLCB3aGl0ZXNwYWNlcyBvbmx5LCBtYXggbGVuZ3RoIG9mIDUwIikmJmFwaS5hc3NlcnQodm9pZCAwPT09dXJsfHx1cmwubGVuZ3RoPD0yNTUsImludmFsaWQgdXJsOiBtYXggbGVuZ3RoIG9mIDI1NSIpJiZhcGkuYXNzZXJ0KHByZWNpc2lvbj49MCYmcHJlY2lzaW9uPD04JiZOdW1iZXIuaXNJbnRlZ2VyKHByZWNpc2lvbiksImludmFsaWQgcHJlY2lzaW9uIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihtYXhTdXBwbHkpLmd0KDApLCJtYXhTdXBwbHkgbXVzdCBiZSBwb3NpdGl2ZSIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIobWF4U3VwcGx5KS5sdGUoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLCJtYXhTdXBwbHkgbXVzdCBiZSBsb3dlciB0aGFuICIrTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbD09PXRva2VuLCJzeW1ib2wgYWxyZWFkeSBleGlzdHMiKSl7bGV0IG1ldGFkYXRhPXt1cmw6dm9pZCAwPT09dXJsPyIiOnVybH07bWV0YWRhdGE9SlNPTi5zdHJpbmdpZnkobWV0YWRhdGEpO2NvbnN0IG5ld1Rva2VuPXtpc3N1ZXI6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sLG5hbWU6bmFtZSxtZXRhZGF0YTptZXRhZGF0YSxwcmVjaXNpb246cHJlY2lzaW9uLG1heFN1cHBseTphcGkuQmlnTnVtYmVyKG1heFN1cHBseSkudG9GaXhlZChwcmVjaXNpb24pLHN1cHBseToiMCIsY2lyY3VsYXRpbmdTdXBwbHk6IjAiLHN0YWtpbmdFbmFibGVkOiExLHVuc3Rha2luZ0Nvb2xkb3duOjEsZGVsZWdhdGlvbkVuYWJsZWQ6ITEsdW5kZWxlZ2F0aW9uQ29vbGRvd246MH07YXdhaXQgYXBpLmRiLmluc2VydCgidG9rZW5zIixuZXdUb2tlbiksYXBpLkJpZ051bWJlcih0b2tlbkNyZWF0aW9uRmVlKS5ndCgwKSYmdm9pZCAwPT09aGVBY2NvdW50c1thcGkuc2VuZGVyXSYmYXdhaXQgYWN0aW9ucy50cmFuc2Zlcih7dG86Im51bGwiLHN5bWJvbDoiQkVFIixxdWFudGl0eTp0b2tlbkNyZWF0aW9uRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KX19fSxhY3Rpb25zLmlzc3VlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHt0bzp0byxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXksY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkLGZyb21NaW5pbmdDb250cmFjdD0ibnVsbCI9PT1hcGkuc2VuZGVyJiYibWluaW5nIj09PWNhbGxpbmdDb250cmFjdEluZm8ubmFtZTtpZihmcm9tTWluaW5nQ29udHJhY3R8fGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHRvJiYic3RyaW5nIj09dHlwZW9mIHRvJiZzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IGZpbmFsVG89dG8udHJpbSgpLHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGZyb21NaW5pbmdDb250cmFjdHx8dG9rZW4uaXNzdWVyPT09YXBpLnNlbmRlciwibm90IGFsbG93ZWQgdG8gaXNzdWUgdG9rZW5zIikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IGlzc3VlIHBvc2l0aXZlIHF1YW50aXR5IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcih0b2tlbi5tYXhTdXBwbHkpLm1pbnVzKHRva2VuLnN1cHBseSkuZ3RlKHF1YW50aXR5KSwicXVhbnRpdHkgZXhjZWVkcyBhdmFpbGFibGUgc3VwcGx5IikmJmFwaS5hc3NlcnQoYXBpLmlzVmFsaWRBY2NvdW50TmFtZShmaW5hbFRvKSwiaW52YWxpZCB0byIpKXtsZXQgcmVzPWF3YWl0IGFkZEJhbGFuY2UodG9rZW4uaXNzdWVyLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpOyEwPT09cmVzJiZmaW5hbFRvIT09dG9rZW4uaXNzdWVyJiZhd2FpdCBzdWJCYWxhbmNlKHRva2VuLmlzc3Vlcix0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKSYmKHJlcz1hd2FpdCBhZGRCYWxhbmNlKGZpbmFsVG8sdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIiksITE9PT1yZXMmJmF3YWl0IGFkZEJhbGFuY2UodG9rZW4uaXNzdWVyLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpKSwhMD09PXJlcyYmKHRva2VuLnN1cHBseT1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLnN1cHBseSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLCJudWxsIiE9PWZpbmFsVG8mJih0b2tlbi5jaXJjdWxhdGluZ1N1cHBseT1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLmNpcmN1bGF0aW5nU3VwcGx5LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCkpLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pLGFwaS5lbWl0KCJ0cmFuc2ZlckZyb21Db250cmFjdCIse2Zyb206InRva2VucyIsdG86ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSkpfX19LGFjdGlvbnMuaXNzdWVUb0NvbnRyYWN0PWFzeW5jIHBheWxvYWQ9Pntjb25zdHt0bzp0byxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQodG8mJiJzdHJpbmciPT10eXBlb2YgdG8mJnN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgZmluYWxUbz10by50cmltKCksdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQodG9rZW4uaXNzdWVyPT09YXBpLnNlbmRlciwibm90IGFsbG93ZWQgdG8gaXNzdWUgdG9rZW5zIikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IGlzc3VlIHBvc2l0aXZlIHF1YW50aXR5IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcih0b2tlbi5tYXhTdXBwbHkpLm1pbnVzKHRva2VuLnN1cHBseSkuZ3RlKHF1YW50aXR5KSwicXVhbnRpdHkgZXhjZWVkcyBhdmFpbGFibGUgc3VwcGx5IikmJmFwaS5hc3NlcnQoZmluYWxUby5sZW5ndGg+PTMmJmZpbmFsVG8ubGVuZ3RoPD01MCwiaW52YWxpZCB0byIpKXshMD09PWF3YWl0IGFkZEJhbGFuY2UoZmluYWxUbyx0b2tlbixxdWFudGl0eSwiY29udHJhY3RzQmFsYW5jZXMiKSYmKHRva2VuLnN1cHBseT1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLnN1cHBseSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLCJudWxsIiE9PWZpbmFsVG8mJih0b2tlbi5jaXJjdWxhdGluZ1N1cHBseT1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLmNpcmN1bGF0aW5nU3VwcGx5LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCkpLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pLGFwaS5lbWl0KCJpc3N1ZVRvQ29udHJhY3QiLHtmcm9tOiJ0b2tlbnMiLHRvOmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pKX19fSxhY3Rpb25zLnRyYW5zZmVyPWFzeW5jIHBheWxvYWQ9Pntjb25zdHt0bzp0byxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQodG8mJiJzdHJpbmciPT10eXBlb2YgdG8mJnN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgZmluYWxUbz10by50cmltKCk7aWYoYXBpLmFzc2VydChmaW5hbFRvIT09YXBpLnNlbmRlciwiY2Fubm90IHRyYW5zZmVyIHRvIHNlbGYiKSl7Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7YmxhY2tsaXN0OmJsYWNrbGlzdH09cGFyYW1zO2lmKGFwaS5hc3NlcnQoYXBpLmlzVmFsaWRBY2NvdW50TmFtZShmaW5hbFRvKSwiaW52YWxpZCB0byIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PWJsYWNrbGlzdFtmaW5hbFRvXSwibm90IGFsbG93ZWQgdG8gc2VuZCB0byAiK2ZpbmFsVG8pKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKHF1YW50aXR5KTw9dG9rZW4ucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCksIm11c3QgdHJhbnNmZXIgcG9zaXRpdmUgcXVhbnRpdHkiKSYmYXdhaXQgc3ViQmFsYW5jZShhcGkuc2VuZGVyLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpKXtyZXR1cm4hMT09PWF3YWl0IGFkZEJhbGFuY2UoZmluYWxUbyx0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKT8oYXdhaXQgYWRkQmFsYW5jZShhcGkuc2VuZGVyLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpLCExKTooIm51bGwiPT09ZmluYWxUbyYmKHRva2VuLmNpcmN1bGF0aW5nU3VwcGx5PWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4uY2lyY3VsYXRpbmdTdXBwbHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSksYXBpLmVtaXQoInRyYW5zZmVyIix7ZnJvbTphcGkuc2VuZGVyLHRvOmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pLCEwKX19fX1yZXR1cm4hMX0sYWN0aW9ucy50cmFuc2ZlclRvQ29udHJhY3Q9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2Zyb206ZnJvbSx0bzp0byxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQsZmluYWxGcm9tPXZvaWQgMD09PWZyb218fCJudWxsIiE9PWFwaS5zZW5kZXI/YXBpLnNlbmRlcjpmcm9tO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXl8fCJudWxsIj09PWFwaS5zZW5kZXIsInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHRvJiYic3RyaW5nIj09dHlwZW9mIHRvJiZzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IGZpbmFsVG89dG8udHJpbSgpLnRvTG93ZXJDYXNlKCk7aWYoYXBpLmFzc2VydChmaW5hbFRvIT09ZmluYWxGcm9tLCJjYW5ub3QgdHJhbnNmZXIgdG8gc2VsZiIpJiZhcGkuYXNzZXJ0KGZpbmFsVG8ubGVuZ3RoPj0zJiZmaW5hbFRvLmxlbmd0aDw9NTAsImludmFsaWQgdG8iKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IHRyYW5zZmVyIHBvc2l0aXZlIHF1YW50aXR5IikmJmF3YWl0IHN1YkJhbGFuY2UoZmluYWxGcm9tLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpKXshMT09PWF3YWl0IGFkZEJhbGFuY2UoZmluYWxUbyx0b2tlbixxdWFudGl0eSwiY29udHJhY3RzQmFsYW5jZXMiKT9hd2FpdCBhZGRCYWxhbmNlKGZpbmFsRnJvbSx0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKTooIm51bGwiPT09ZmluYWxUbyYmKHRva2VuLmNpcmN1bGF0aW5nU3VwcGx5PWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4uY2lyY3VsYXRpbmdTdXBwbHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSksYXBpLmVtaXQoInRyYW5zZmVyVG9Db250cmFjdCIse2Zyb206ZmluYWxGcm9tLHRvOmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pKX19fX0sYWN0aW9ucy50cmFuc2ZlckZyb21Db250cmFjdD1hc3luYyBwYXlsb2FkPT57aWYoYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCIpKXtjb25zdHtmcm9tOmZyb20sdG86dG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSx0eXBlOnR5cGV9PXBheWxvYWQsdHlwZXM9WyJ1c2VyIiwiY29udHJhY3QiXTtpZihhcGkuYXNzZXJ0KHRvJiYic3RyaW5nIj09dHlwZW9mIHRvJiZmcm9tJiYic3RyaW5nIj09dHlwZW9mIGZyb20mJnN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnR5cGUmJnR5cGVzLmluY2x1ZGVzKHR5cGUpJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IGZpbmFsVG89dG8udHJpbSgpLHRhYmxlPSJ1c2VyIj09PXR5cGU/ImJhbGFuY2VzIjoiY29udHJhY3RzQmFsYW5jZXMiO2lmKGFwaS5hc3NlcnQoInVzZXIiPT09dHlwZXx8ImNvbnRyYWN0Ij09PXR5cGUmJmZpbmFsVG8hPT1mcm9tLCJjYW5ub3QgdHJhbnNmZXIgdG8gc2VsZiIpKXtjb25zdCB0b1ZhbGlkPSJ1c2VyIj09PXR5cGU/YXBpLmlzVmFsaWRBY2NvdW50TmFtZShmaW5hbFRvKTpmaW5hbFRvLmxlbmd0aD49MyYmZmluYWxUby5sZW5ndGg8PTUwO2lmKGFwaS5hc3NlcnQoITA9PT10b1ZhbGlkLCJpbnZhbGlkIHRvIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCB0cmFuc2ZlciBwb3NpdGl2ZSBxdWFudGl0eSIpJiZhd2FpdCBzdWJCYWxhbmNlKGZyb20sdG9rZW4scXVhbnRpdHksImNvbnRyYWN0c0JhbGFuY2VzIikpeyExPT09YXdhaXQgYWRkQmFsYW5jZShmaW5hbFRvLHRva2VuLHF1YW50aXR5LHRhYmxlKT9hd2FpdCBhZGRCYWxhbmNlKGZyb20sdG9rZW4scXVhbnRpdHksImNvbnRyYWN0c0JhbGFuY2VzIik6KCJudWxsIj09PWZpbmFsVG8mJih0b2tlbi5jaXJjdWxhdGluZ1N1cHBseT1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLmNpcmN1bGF0aW5nU3VwcGx5LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbikpLGFwaS5lbWl0KCJ0cmFuc2ZlckZyb21Db250cmFjdCIse2Zyb206ZnJvbSx0bzpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSl9fX19fX07Y29uc3QgcHJvY2Vzc1Vuc3Rha2U9YXN5bmMgdW5zdGFrZT0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHF1YW50aXR5TGVmdDpxdWFudGl0eUxlZnQsbnVtYmVyVHJhbnNhY3Rpb25zTGVmdDpudW1iZXJUcmFuc2FjdGlvbnNMZWZ0fT11bnN0YWtlLG5ld1Vuc3Rha2U9dW5zdGFrZSxiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sfSksdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtsZXQgdG9rZW5zVG9SZWxlYXNlPTAsbmV4dFRva2Vuc1RvUmVsZWFzZT0wO2lmKGFwaS5hc3NlcnQobnVsbCE9PWJhbGFuY2UsImJhbGFuY2UgZG9lcyBub3QgZXhpc3QiKSYmKDE9PT1udW1iZXJUcmFuc2FjdGlvbnNMZWZ0Pyh0b2tlbnNUb1JlbGVhc2U9cXVhbnRpdHlMZWZ0LGF3YWl0IGFwaS5kYi5yZW1vdmUoInBlbmRpbmdVbnN0YWtlcyIsdW5zdGFrZSkpOih0b2tlbnNUb1JlbGVhc2U9YXBpLkJpZ051bWJlcihxdWFudGl0eSkuZGl2aWRlZEJ5KHRva2VuLm51bWJlclRyYW5zYWN0aW9ucykudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxuZXdVbnN0YWtlLnF1YW50aXR5TGVmdD1hcGkuQmlnTnVtYmVyKG5ld1Vuc3Rha2UucXVhbnRpdHlMZWZ0KS5taW51cyh0b2tlbnNUb1JlbGVhc2UpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uKSxuZXdVbnN0YWtlLm51bWJlclRyYW5zYWN0aW9uc0xlZnQtPTEsbmV4dFRva2Vuc1RvUmVsZWFzZT0xPT09bmV3VW5zdGFrZS5udW1iZXJUcmFuc2FjdGlvbnNMZWZ0P25ld1Vuc3Rha2UucXVhbnRpdHlMZWZ0OnRva2Vuc1RvUmVsZWFzZSxuZXdVbnN0YWtlLm5leHRUcmFuc2FjdGlvblRpbWVzdGFtcD1hcGkuQmlnTnVtYmVyKG5ld1Vuc3Rha2UubmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wKS5wbHVzKG5ld1Vuc3Rha2UubWlsbGlzZWNQZXJQZXJpb2QpLnRvTnVtYmVyKCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGVuZGluZ1Vuc3Rha2VzIixuZXdVbnN0YWtlKSksYXBpLkJpZ051bWJlcih0b2tlbnNUb1JlbGVhc2UpLmd0KDApKSl7Y29uc3Qgb3JpZ2luYWxCYWxhbmNlPWJhbGFuY2UuYmFsYW5jZSxvcmlnaW5hbFBlbmRpbmdTdGFrZT1iYWxhbmNlLnBlbmRpbmdVbnN0YWtlO2JhbGFuY2UuYmFsYW5jZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UuYmFsYW5jZSx0b2tlbnNUb1JlbGVhc2UsdG9rZW4ucHJlY2lzaW9uLCEwKSxiYWxhbmNlLnBlbmRpbmdVbnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSx0b2tlbnNUb1JlbGVhc2UsdG9rZW4ucHJlY2lzaW9uLCExKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSkubHQob3JpZ2luYWxQZW5kaW5nU3Rha2UpJiZhcGkuQmlnTnVtYmVyKGJhbGFuY2UuYmFsYW5jZSkuZ3Qob3JpZ2luYWxCYWxhbmNlKSwiY2Fubm90IHN1YnRyYWN0IikmJihhcGkuQmlnTnVtYmVyKG5leHRUb2tlbnNUb1JlbGVhc2UpLmd0KDApJiYoYmFsYW5jZS5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2Uuc3Rha2UsbmV4dFRva2Vuc1RvUmVsZWFzZSx0b2tlbi5wcmVjaXNpb24sITEpLHRva2VuLnRvdGFsU3Rha2VkPWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4udG90YWxTdGFrZWQsbmV4dFRva2Vuc1RvUmVsZWFzZSx0b2tlbi5wcmVjaXNpb24sITEpLCJXT1JLRVJCRUUiPT09c3ltYm9sJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6YWNjb3VudH0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlU3Rha2VDaGFuZ2UiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTphcGkuQmlnTnVtYmVyKG5leHRUb2tlbnNUb1JlbGVhc2UpLm5lZ2F0ZWQoKX0pKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbiksYXBpLmVtaXQoInVuc3Rha2UiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTp0b2tlbnNUb1JlbGVhc2V9KSl9fTthY3Rpb25zLmNoZWNrUGVuZGluZ1Vuc3Rha2VzPWFzeW5jKCk9PntpZihhcGkuYXNzZXJ0KCJudWxsIj09PWFwaS5zZW5kZXIsIm5vdCBhdXRob3JpemVkIikpe2NvbnN0IHRpbWVzdGFtcD1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKTtsZXQgcGVuZGluZ1Vuc3Rha2VzPWF3YWl0IGFwaS5kYi5maW5kKCJwZW5kaW5nVW5zdGFrZXMiLHtuZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXA6eyRsdGU6dGltZXN0YW1wfX0pLG5iUGVuZGluZ1Vuc3Rha2VzPXBlbmRpbmdVbnN0YWtlcy5sZW5ndGg7Zm9yKDtuYlBlbmRpbmdVbnN0YWtlcz4wOyl7Zm9yKGxldCBpbmRleD0wO2luZGV4PG5iUGVuZGluZ1Vuc3Rha2VzO2luZGV4Kz0xKXtjb25zdCBwZW5kaW5nVW5zdGFrZT1wZW5kaW5nVW5zdGFrZXNbaW5kZXhdO2F3YWl0IHByb2Nlc3NVbnN0YWtlKHBlbmRpbmdVbnN0YWtlKX1wZW5kaW5nVW5zdGFrZXM9YXdhaXQgYXBpLmRiLmZpbmQoInBlbmRpbmdVbnN0YWtlcyIse25leHRUcmFuc2FjdGlvblRpbWVzdGFtcDp7JGx0ZTp0aW1lc3RhbXB9fSksbmJQZW5kaW5nVW5zdGFrZXM9cGVuZGluZ1Vuc3Rha2VzLmxlbmd0aH19fSxhY3Rpb25zLmVuYWJsZVN0YWtpbmc9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsdW5zdGFraW5nQ29vbGRvd246dW5zdGFraW5nQ29vbGRvd24sbnVtYmVyVHJhbnNhY3Rpb25zOm51bWJlclRyYW5zYWN0aW9ucyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse2VuYWJsZVN0YWtpbmdGZWU6ZW5hYmxlU3Rha2luZ0ZlZX09cGFyYW1zLHV0aWxpdHlUb2tlbkJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDoiQkVFIn0pLGVub3VnaEZ1bmRzPXV0aWxpdHlUb2tlbkJhbGFuY2UmJmFwaS5CaWdOdW1iZXIodXRpbGl0eVRva2VuQmFsYW5jZS5iYWxhbmNlKS5ndGUoZW5hYmxlU3Rha2luZ0ZlZSksYXV0aG9yaXplZD12b2lkIDA9PT1lbmFibGVTdGFraW5nRmVlfHxhcGkuQmlnTnVtYmVyKGVuYWJsZVN0YWtpbmdGZWUpLmx0ZSgwKXx8ZW5vdWdoRnVuZHM7aWYoYXBpLmFzc2VydChhdXRob3JpemVkLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgIGZlZXMiKSYmYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCwiaW52YWxpZCBzeW1ib2wiKSYmYXBpLmFzc2VydCh1bnN0YWtpbmdDb29sZG93biYmTnVtYmVyLmlzSW50ZWdlcih1bnN0YWtpbmdDb29sZG93bikmJnVuc3Rha2luZ0Nvb2xkb3duPjAmJnVuc3Rha2luZ0Nvb2xkb3duPD0xODI1MCwidW5zdGFraW5nQ29vbGRvd24gbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMTgyNTAiKSYmYXBpLmFzc2VydChudW1iZXJUcmFuc2FjdGlvbnMmJk51bWJlci5pc0ludGVnZXIobnVtYmVyVHJhbnNhY3Rpb25zKSYmbnVtYmVyVHJhbnNhY3Rpb25zPjAmJm51bWJlclRyYW5zYWN0aW9uczw9MTgyNTAsIm51bWJlclRyYW5zYWN0aW9ucyBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxODI1MCIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2FwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT10b2tlbi5zdGFraW5nRW5hYmxlZHx8ITE9PT10b2tlbi5zdGFraW5nRW5hYmxlZCwic3Rha2luZyBhbHJlYWR5IGVuYWJsZWQiKSYmKHRva2VuLnN0YWtpbmdFbmFibGVkPSEwLHRva2VuLnRvdGFsU3Rha2VkPSIwIix0b2tlbi51bnN0YWtpbmdDb29sZG93bj11bnN0YWtpbmdDb29sZG93bix0b2tlbi5udW1iZXJUcmFuc2FjdGlvbnM9bnVtYmVyVHJhbnNhY3Rpb25zLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pLGFwaS5CaWdOdW1iZXIoZW5hYmxlU3Rha2luZ0ZlZSkuZ3QoMCkmJmF3YWl0IGFjdGlvbnMudHJhbnNmZXIoe3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6ZW5hYmxlU3Rha2luZ0ZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSkpfX0sYWN0aW9ucy5zdGFrZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSx0bzp0byxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnRvJiYic3RyaW5nIj09dHlwZW9mIHRvJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSksZmluYWxUbz10by50cmltKCk7aWYoYXBpLmFzc2VydChhcGkuaXNWYWxpZEFjY291bnROYW1lKGZpbmFsVG8pLCJpbnZhbGlkIHRvIikmJmFwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKHF1YW50aXR5KTw9dG9rZW4ucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoITA9PT10b2tlbi5zdGFraW5nRW5hYmxlZCwic3Rha2luZyBub3QgZW5hYmxlZCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IHN0YWtlIHBvc2l0aXZlIHF1YW50aXR5IikmJmF3YWl0IHN1YkJhbGFuY2UoYXBpLnNlbmRlcix0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKSl7ITE9PT1hd2FpdCBhZGRTdGFrZShmaW5hbFRvLHRva2VuLHF1YW50aXR5KT9hd2FpdCBhZGRCYWxhbmNlKGFwaS5zZW5kZXIsdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIik6KGFwaS5lbWl0KCJzdGFrZSIse2FjY291bnQ6ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksIldPUktFUkJFRSI9PT1zeW1ib2wmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDpmaW5hbFRvfSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSkpfX19LGFjdGlvbnMuc3Rha2VGcm9tQ29udHJhY3Q9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksdG86dG8sY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkO2lmKGNhbGxpbmdDb250cmFjdEluZm8mJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmdG8mJiJzdHJpbmciPT10eXBlb2YgdG8mJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KSxmaW5hbFRvPXRvLnRyaW0oKTtpZihhcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyksImludmFsaWQgdG8iKSYmYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydCghMD09PXRva2VuLnN0YWtpbmdFbmFibGVkLCJzdGFraW5nIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCksIm11c3Qgc3Rha2UgcG9zaXRpdmUgcXVhbnRpdHkiKSYmYXdhaXQgc3ViQmFsYW5jZShjYWxsaW5nQ29udHJhY3RJbmZvLm5hbWUsdG9rZW4scXVhbnRpdHksImNvbnRyYWN0c0JhbGFuY2VzIikpeyExPT09YXdhaXQgYWRkU3Rha2UoZmluYWxUbyx0b2tlbixxdWFudGl0eSk/YXdhaXQgYWRkQmFsYW5jZShjYWxsaW5nQ29udHJhY3RJbmZvLm5hbWUsdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIik6KGFwaS5lbWl0KCJzdGFrZUZyb21Db250cmFjdCIse2FjY291bnQ6ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksIldPUktFUkJFRSI9PT1zeW1ib2wmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDpmaW5hbFRvfSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSkpfX19O2NvbnN0IHZhbGlkYXRlQXZhaWxhYmxlU3Rha2U9YXN5bmMoYmFsYW5jZSx0b2tlbixxdWFudGl0eSk9PntsZXQgYXZhaWxhYmxlU3Rha2VCYWxhbmNlPWFwaS5CaWdOdW1iZXIoYmFsYW5jZS5zdGFrZSk7cmV0dXJuIGF3YWl0IGZpbmRBbmRQcm9jZXNzQWxsKCJwZW5kaW5nVW5zdGFrZXMiLHtzeW1ib2w6YmFsYW5jZS5zeW1ib2wsYWNjb3VudDpiYWxhbmNlLmFjY291bnR9LGFzeW5jIHBlbmRpbmdVbnN0YWtlPT57aWYocGVuZGluZ1Vuc3Rha2UubnVtYmVyVHJhbnNhY3Rpb25zTGVmdD4xKXtjb25zdCB0b2tlbnNUb1JlbGVhc2U9YXBpLkJpZ051bWJlcihwZW5kaW5nVW5zdGFrZS5xdWFudGl0eSkuZGl2aWRlZEJ5KHRva2VuLm51bWJlclRyYW5zYWN0aW9ucykudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTthdmFpbGFibGVTdGFrZUJhbGFuY2U9YXZhaWxhYmxlU3Rha2VCYWxhbmNlLm1pbnVzKHBlbmRpbmdVbnN0YWtlLnF1YW50aXR5TGVmdCkucGx1cyh0b2tlbnNUb1JlbGVhc2UpfX0pLGFwaS5hc3NlcnQoYXZhaWxhYmxlU3Rha2VCYWxhbmNlLmd0ZShxdWFudGl0eSksIm92ZXJkcmF3biBzdGFrZSIpfSxzdGFydFVuc3Rha2U9YXN5bmMoYWNjb3VudCx0b2tlbixxdWFudGl0eSk9Pntjb25zdCBiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6dG9rZW4uc3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQobnVsbCE9PWJhbGFuY2UsImJhbGFuY2UgZG9lcyBub3QgZXhpc3QiKXx8IWF3YWl0IHZhbGlkYXRlQXZhaWxhYmxlU3Rha2UoYmFsYW5jZSx0b2tlbixxdWFudGl0eSkpcmV0dXJuITE7e2NvbnN0IG9yaWdpbmFsU3Rha2U9YmFsYW5jZS5zdGFrZSxvcmlnaW5hbFBlbmRpbmdTdGFrZT1iYWxhbmNlLnBlbmRpbmdVbnN0YWtlLG5leHRUb2tlbnNUb1JlbGVhc2U9dG9rZW4ubnVtYmVyVHJhbnNhY3Rpb25zPjE/YXBpLkJpZ051bWJlcihxdWFudGl0eSkuZGl2aWRlZEJ5KHRva2VuLm51bWJlclRyYW5zYWN0aW9ucykudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTpxdWFudGl0eTtiYWxhbmNlLnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5zdGFrZSxuZXh0VG9rZW5zVG9SZWxlYXNlLHRva2VuLnByZWNpc2lvbiwhMSksYmFsYW5jZS5wZW5kaW5nVW5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5zdGFrZSkubHQob3JpZ2luYWxTdGFrZSkmJmFwaS5CaWdOdW1iZXIoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSkuZ3Qob3JpZ2luYWxQZW5kaW5nU3Rha2UpLCJjYW5ub3Qgc3VidHJhY3QiKSYmKGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlKSx0b2tlbi50b3RhbFN0YWtlZD1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLnRvdGFsU3Rha2VkLG5leHRUb2tlbnNUb1JlbGVhc2UsdG9rZW4ucHJlY2lzaW9uLCExKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSwiV09SS0VSQkVFIj09PXRva2VuLnN5bWJvbCYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ3aXRuZXNzZXMiLCJ1cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHMiLHthY2NvdW50OmFjY291bnR9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZVN0YWtlQ2hhbmdlIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDp0b2tlbi5zeW1ib2wscXVhbnRpdHk6YXBpLkJpZ051bWJlcihuZXh0VG9rZW5zVG9SZWxlYXNlKS5uZWdhdGVkKCl9KSl9Y29uc3QgYmxvY2tEYXRlPW5ldyBEYXRlKGFwaS5oaXZlQmxvY2tUaW1lc3RhbXArIi4wMDBaIiksY29vbGRvd25QZXJpb2RNaWxsaXNlYz0yNCp0b2tlbi51bnN0YWtpbmdDb29sZG93biozNjAwKjFlMyxtaWxsaXNlY1BlclBlcmlvZD1hcGkuQmlnTnVtYmVyKGNvb2xkb3duUGVyaW9kTWlsbGlzZWMpLmRpdmlkZWRCeSh0b2tlbi5udW1iZXJUcmFuc2FjdGlvbnMpLmludGVnZXJWYWx1ZShhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLG5leHRUcmFuc2FjdGlvblRpbWVzdGFtcD1hcGkuQmlnTnVtYmVyKGJsb2NrRGF0ZS5nZXRUaW1lKCkpLnBsdXMobWlsbGlzZWNQZXJQZXJpb2QpLnRvTnVtYmVyKCksdW5zdGFrZT17YWNjb3VudDphY2NvdW50LHN5bWJvbDp0b2tlbi5zeW1ib2wscXVhbnRpdHk6cXVhbnRpdHkscXVhbnRpdHlMZWZ0OnF1YW50aXR5LG5leHRUcmFuc2FjdGlvblRpbWVzdGFtcDpuZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXAsbnVtYmVyVHJhbnNhY3Rpb25zTGVmdDp0b2tlbi5udW1iZXJUcmFuc2FjdGlvbnMsbWlsbGlzZWNQZXJQZXJpb2Q6bWlsbGlzZWNQZXJQZXJpb2QsdHhJRDphcGkudHJhbnNhY3Rpb25JZH07cmV0dXJuIGF3YWl0IGFwaS5kYi5pbnNlcnQoInBlbmRpbmdVbnN0YWtlcyIsdW5zdGFrZSksITB9O2FjdGlvbnMudW5zdGFrZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTthcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoITA9PT10b2tlbi5zdGFraW5nRW5hYmxlZCwic3Rha2luZyBub3QgZW5hYmxlZCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCB1bnN0YWtlIHBvc2l0aXZlIHF1YW50aXR5IikmJmF3YWl0IHN0YXJ0VW5zdGFrZShhcGkuc2VuZGVyLHRva2VuLHF1YW50aXR5KSYmYXBpLmVtaXQoInVuc3Rha2VTdGFydCIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSl9fTtjb25zdCBwcm9jZXNzQ2FuY2VsVW5zdGFrZT1hc3luYyB1bnN0YWtlPT57Y29uc3R7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHkscXVhbnRpdHlMZWZ0OnF1YW50aXR5TGVmdCxudW1iZXJUcmFuc2FjdGlvbnNMZWZ0Om51bWJlclRyYW5zYWN0aW9uc0xlZnR9PXVuc3Rha2UsYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbH0pLHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09YmFsYW5jZSwiYmFsYW5jZSBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSkuZ3RlKHF1YW50aXR5TGVmdCksIm92ZXJkcmF3biBwZW5kaW5nVW5zdGFrZSIpKXtjb25zdCBvcmlnaW5hbFN0YWtlPWJhbGFuY2Uuc3Rha2Usb3JpZ2luYWxQZW5kaW5nU3Rha2U9YmFsYW5jZS5wZW5kaW5nVW5zdGFrZSx0b2tlbnNUb1JlbGVhc2U9bnVtYmVyVHJhbnNhY3Rpb25zTGVmdD4xP2FwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmRpdmlkZWRCeSh0b2tlbi5udW1iZXJUcmFuc2FjdGlvbnMpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTik6cXVhbnRpdHlMZWZ0O2lmKGJhbGFuY2Uuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnN0YWtlLHRva2Vuc1RvUmVsZWFzZSx0b2tlbi5wcmVjaXNpb24sITApLGJhbGFuY2UucGVuZGluZ1Vuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnBlbmRpbmdVbnN0YWtlLHF1YW50aXR5TGVmdCx0b2tlbi5wcmVjaXNpb24sITEpLGFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlLnBlbmRpbmdVbnN0YWtlKS5sdChvcmlnaW5hbFBlbmRpbmdTdGFrZSkmJmFwaS5CaWdOdW1iZXIoYmFsYW5jZS5zdGFrZSkuZ3Qob3JpZ2luYWxTdGFrZSksImNhbm5vdCBzdWJ0cmFjdCIpKXJldHVybiBhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZSksdG9rZW4udG90YWxTdGFrZWQ9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi50b3RhbFN0YWtlZCx0b2tlbnNUb1JlbGVhc2UsdG9rZW4ucHJlY2lzaW9uLCEwKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSxhcGkuZW1pdCgidW5zdGFrZUNhbmNlbCIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5TGVmdH0pLCJXT1JLRVJCRUUiPT09c3ltYm9sJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6YWNjb3VudH0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlU3Rha2VDaGFuZ2UiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTp0b2tlbnNUb1JlbGVhc2V9KSwhMH1yZXR1cm4hMX07YWN0aW9ucy5jYW5jZWxVbnN0YWtlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHt0eElEOnR4SUQsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCh0eElEJiYic3RyaW5nIj09dHlwZW9mIHR4SUQsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHVuc3Rha2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBlbmRpbmdVbnN0YWtlcyIse2FjY291bnQ6YXBpLnNlbmRlcix0eElEOnR4SUR9KTthcGkuYXNzZXJ0KHVuc3Rha2UsInVuc3Rha2UgZG9lcyBub3QgZXhpc3QiKSYmYXdhaXQgcHJvY2Vzc0NhbmNlbFVuc3Rha2UodW5zdGFrZSkmJmF3YWl0IGFwaS5kYi5yZW1vdmUoInBlbmRpbmdVbnN0YWtlcyIsdW5zdGFrZSl9fSxhY3Rpb25zLmVuYWJsZURlbGVnYXRpb249YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsdW5kZWxlZ2F0aW9uQ29vbGRvd246dW5kZWxlZ2F0aW9uQ29vbGRvd24saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtlbmFibGVEZWxlZ2F0aW9uRmVlOmVuYWJsZURlbGVnYXRpb25GZWV9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkJFRSJ9KSxlbm91Z2hGdW5kcz11dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKGVuYWJsZURlbGVnYXRpb25GZWUpLGF1dGhvcml6ZWQ9dm9pZCAwPT09ZW5hYmxlRGVsZWdhdGlvbkZlZXx8YXBpLkJpZ051bWJlcihlbmFibGVEZWxlZ2F0aW9uRmVlKS5sdGUoMCl8fGVub3VnaEZ1bmRzO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZCwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyICBmZWVzIikmJmFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wsImludmFsaWQgc3ltYm9sIikmJmFwaS5hc3NlcnQodW5kZWxlZ2F0aW9uQ29vbGRvd24mJk51bWJlci5pc0ludGVnZXIodW5kZWxlZ2F0aW9uQ29vbGRvd24pJiZ1bmRlbGVnYXRpb25Db29sZG93bj4wJiZ1bmRlbGVnYXRpb25Db29sZG93bjw9MTgyNTAsInVuZGVsZWdhdGlvbkNvb2xkb3duIG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDE4MjUwIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7YXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KHRva2VuLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpJiZhcGkuYXNzZXJ0KCEwPT09dG9rZW4uc3Rha2luZ0VuYWJsZWQsInN0YWtpbmcgbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT10b2tlbi5kZWxlZ2F0aW9uRW5hYmxlZHx8ITE9PT10b2tlbi5kZWxlZ2F0aW9uRW5hYmxlZCwiZGVsZWdhdGlvbiBhbHJlYWR5IGVuYWJsZWQiKSYmKHRva2VuLmRlbGVnYXRpb25FbmFibGVkPSEwLHRva2VuLnVuZGVsZWdhdGlvbkNvb2xkb3duPXVuZGVsZWdhdGlvbkNvb2xkb3duLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pLGFwaS5CaWdOdW1iZXIoZW5hYmxlRGVsZWdhdGlvbkZlZSkuZ3QoMCkmJmF3YWl0IGFjdGlvbnMudHJhbnNmZXIoe3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6ZW5hYmxlRGVsZWdhdGlvbkZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSkpfX0sYWN0aW9ucy5kZWxlZ2F0ZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSx0bzp0byxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnRvJiYic3RyaW5nIj09dHlwZW9mIHRvJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IGZpbmFsVG89dG8udHJpbSgpO2lmKGFwaS5hc3NlcnQoYXBpLmlzVmFsaWRBY2NvdW50TmFtZShmaW5hbFRvKSwiaW52YWxpZCB0byIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKHF1YW50aXR5KTw9dG9rZW4ucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoITA9PT10b2tlbi5kZWxlZ2F0aW9uRW5hYmxlZCwiZGVsZWdhdGlvbiBub3QgZW5hYmxlZCIpJiZhcGkuYXNzZXJ0KGZpbmFsVG8hPT1hcGkuc2VuZGVyLCJjYW5ub3QgZGVsZWdhdGUgdG8geW91cnNlbGYiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCBkZWxlZ2F0ZSBwb3NpdGl2ZSBxdWFudGl0eSIpKXtjb25zdCBiYWxhbmNlRnJvbT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWJhbGFuY2VGcm9tLCJiYWxhbmNlRnJvbSBkb2VzIG5vdCBleGlzdCIpJiZhd2FpdCB2YWxpZGF0ZUF2YWlsYWJsZVN0YWtlKGJhbGFuY2VGcm9tLHRva2VuLHF1YW50aXR5KSl7dm9pZCAwPT09YmFsYW5jZUZyb20uc3Rha2U/KGJhbGFuY2VGcm9tLnN0YWtlPSIwIixiYWxhbmNlRnJvbS5wZW5kaW5nVW5zdGFrZT0iMCIsYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNJbj0iMCIsYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNPdXQ9IjAiLGJhbGFuY2VGcm9tLnBlbmRpbmdVbmRlbGVnYXRpb25zPSIwIik6dm9pZCAwPT09YmFsYW5jZUZyb20uZGVsZWdhdGlvbnNJbiYmKGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zSW49IjAiLGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zT3V0PSIwIixiYWxhbmNlRnJvbS5wZW5kaW5nVW5kZWxlZ2F0aW9ucz0iMCIsYmFsYW5jZUZyb20uZGVsZWdhdGVkU3Rha2UmJihkZWxldGUgYmFsYW5jZUZyb20uZGVsZWdhdGVkU3Rha2UsZGVsZXRlIGJhbGFuY2VGcm9tLnJlY2VpdmVkU3Rha2UpKTtsZXQgYmFsYW5jZVRvPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6ZmluYWxUbyxzeW1ib2w6c3ltYm9sfSk7bnVsbD09PWJhbGFuY2VUbz8oYmFsYW5jZVRvPWJhbGFuY2VUZW1wbGF0ZSxiYWxhbmNlVG8uYWNjb3VudD1maW5hbFRvLGJhbGFuY2VUby5zeW1ib2w9c3ltYm9sLGJhbGFuY2VUbz1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJiYWxhbmNlcyIsYmFsYW5jZVRvKSk6dm9pZCAwPT09YmFsYW5jZVRvLnN0YWtlPyhiYWxhbmNlVG8uc3Rha2U9IjAiLGJhbGFuY2VUby5wZW5kaW5nVW5zdGFrZT0iMCIsYmFsYW5jZVRvLmRlbGVnYXRpb25zSW49IjAiLGJhbGFuY2VUby5kZWxlZ2F0aW9uc091dD0iMCIsYmFsYW5jZVRvLnBlbmRpbmdVbmRlbGVnYXRpb25zPSIwIik6dm9pZCAwPT09YmFsYW5jZVRvLmRlbGVnYXRpb25zSW4mJihiYWxhbmNlVG8uZGVsZWdhdGlvbnNJbj0iMCIsYmFsYW5jZVRvLmRlbGVnYXRpb25zT3V0PSIwIixiYWxhbmNlVG8ucGVuZGluZ1VuZGVsZWdhdGlvbnM9IjAiLGJhbGFuY2VUby5kZWxlZ2F0ZWRTdGFrZSYmKGRlbGV0ZSBiYWxhbmNlVG8uZGVsZWdhdGVkU3Rha2UsZGVsZXRlIGJhbGFuY2VUby5yZWNlaXZlZFN0YWtlKSk7bGV0IGRlbGVnYXRpb249YXdhaXQgYXBpLmRiLmZpbmRPbmUoImRlbGVnYXRpb25zIix7dG86ZmluYWxUbyxmcm9tOmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbH0pO2NvbnN0IHRpbWVzdGFtcD1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKTtudWxsPT1kZWxlZ2F0aW9uPyhiYWxhbmNlRnJvbS5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2VGcm9tLnN0YWtlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNPdXQ9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc091dCxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlRnJvbSksYmFsYW5jZVRvLmRlbGVnYXRpb25zSW49Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlVG8uZGVsZWdhdGlvbnNJbixxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlVG8pLGRlbGVnYXRpb249e30sZGVsZWdhdGlvbi5mcm9tPWFwaS5zZW5kZXIsZGVsZWdhdGlvbi50bz1maW5hbFRvLGRlbGVnYXRpb24uc3ltYm9sPXN5bWJvbCxkZWxlZ2F0aW9uLnF1YW50aXR5PXF1YW50aXR5LGRlbGVnYXRpb24uY3JlYXRlZD10aW1lc3RhbXAsZGVsZWdhdGlvbi51cGRhdGVkPXRpbWVzdGFtcCxhd2FpdCBhcGkuZGIuaW5zZXJ0KCJkZWxlZ2F0aW9ucyIsZGVsZWdhdGlvbiksYXBpLmVtaXQoImRlbGVnYXRlIix7dG86ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksIldPUktFUkJFRSI9PT1zeW1ib2wmJihhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6YXBpLnNlbmRlcn0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDpmaW5hbFRvfSkpLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlU3Rha2VDaGFuZ2UiLHthY2NvdW50OmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxkZWxlZ2F0ZWQ6ITB9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZVN0YWtlQ2hhbmdlIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6YXBpLkJpZ051bWJlcihxdWFudGl0eSkubmVnYXRlZCgpfSkpOihiYWxhbmNlRnJvbS5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2VGcm9tLnN0YWtlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNPdXQ9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc091dCxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlRnJvbSksYmFsYW5jZVRvLmRlbGVnYXRpb25zSW49Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlVG8uZGVsZWdhdGlvbnNJbixxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlVG8pLGRlbGVnYXRpb24ucXVhbnRpdHk9Y2FsY3VsYXRlQmFsYW5jZShkZWxlZ2F0aW9uLnF1YW50aXR5LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksZGVsZWdhdGlvbi51cGRhdGVkPXRpbWVzdGFtcCxhd2FpdCBhcGkuZGIudXBkYXRlKCJkZWxlZ2F0aW9ucyIsZGVsZWdhdGlvbiksYXBpLmVtaXQoImRlbGVnYXRlIix7dG86ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksIldPUktFUkJFRSI9PT1zeW1ib2wmJihhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6YXBpLnNlbmRlcn0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDpmaW5hbFRvfSkpLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlU3Rha2VDaGFuZ2UiLHthY2NvdW50OmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxkZWxlZ2F0ZWQ6ITB9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZVN0YWtlQ2hhbmdlIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6YXBpLkJpZ051bWJlcihxdWFudGl0eSkubmVnYXRlZCgpfSkpfX19fX0sYWN0aW9ucy51bmRlbGVnYXRlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGZyb206ZnJvbSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJmZyb20mJiJzdHJpbmciPT10eXBlb2YgZnJvbSYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBmaW5hbEZyb209ZnJvbS50cmltKCk7aWYoYXBpLmFzc2VydChmaW5hbEZyb20ubGVuZ3RoPj0zJiZmaW5hbEZyb20ubGVuZ3RoPD0xNiwiaW52YWxpZCBmcm9tIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydCghMD09PXRva2VuLmRlbGVnYXRpb25FbmFibGVkLCJkZWxlZ2F0aW9uIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQoZmluYWxGcm9tIT09YXBpLnNlbmRlciwiY2Fubm90IHVuZGVsZWdhdGUgZnJvbSB5b3Vyc2VsZiIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IHVuZGVsZWdhdGUgcG9zaXRpdmUgcXVhbnRpdHkiKSl7Y29uc3QgYmFsYW5jZVRvPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09YmFsYW5jZVRvLCJiYWxhbmNlVG8gZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2VUby5kZWxlZ2F0aW9uc091dCkuZ3RlKHF1YW50aXR5KSwib3ZlcmRyYXduIGRlbGVnYXRpb24iKSl7Y29uc3QgYmFsYW5jZUZyb209YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDpmaW5hbEZyb20sc3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWJhbGFuY2VGcm9tLCJiYWxhbmNlRnJvbSBkb2VzIG5vdCBleGlzdCIpKXtjb25zdCBkZWxlZ2F0aW9uPWF3YWl0IGFwaS5kYi5maW5kT25lKCJkZWxlZ2F0aW9ucyIse3RvOmZpbmFsRnJvbSxmcm9tOmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWRlbGVnYXRpb24sImRlbGVnYXRpb24gZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGRlbGVnYXRpb24ucXVhbnRpdHkpLmd0ZShxdWFudGl0eSksIm92ZXJkcmF3biBkZWxlZ2F0aW9uIikpe2JhbGFuY2VUby5wZW5kaW5nVW5kZWxlZ2F0aW9ucz1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2VGcm9tLnBlbmRpbmdVbmRlbGVnYXRpb25zLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksYmFsYW5jZVRvLmRlbGVnYXRpb25zT3V0PWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZVRvLmRlbGVnYXRpb25zT3V0LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2VUbyksYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNJbj1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zSW4scXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZUZyb20pLGRlbGVnYXRpb24ucXVhbnRpdHk9Y2FsY3VsYXRlQmFsYW5jZShkZWxlZ2F0aW9uLnF1YW50aXR5LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYXBpLkJpZ051bWJlcihkZWxlZ2F0aW9uLnF1YW50aXR5KS5ndCgwKT9hd2FpdCBhcGkuZGIudXBkYXRlKCJkZWxlZ2F0aW9ucyIsZGVsZWdhdGlvbik6YXdhaXQgYXBpLmRiLnJlbW92ZSgiZGVsZWdhdGlvbnMiLGRlbGVnYXRpb24pO2NvbnN0IGJsb2NrRGF0ZT1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLGNvb2xkb3duUGVyaW9kTWlsbGlzZWM9MjQqdG9rZW4udW5kZWxlZ2F0aW9uQ29vbGRvd24qMzYwMCoxZTMsY29tcGxldGVUaW1lc3RhbXA9YmxvY2tEYXRlLmdldFRpbWUoKStjb29sZG93blBlcmlvZE1pbGxpc2VjLHVuZGVsZWdhdGlvbj17YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDp0b2tlbi5zeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksY29tcGxldGVUaW1lc3RhbXA6Y29tcGxldGVUaW1lc3RhbXAsdHhJRDphcGkudHJhbnNhY3Rpb25JZH07YXdhaXQgYXBpLmRiLmluc2VydCgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLHVuZGVsZWdhdGlvbiksYXBpLmVtaXQoInVuZGVsZWdhdGVTdGFydCIse2Zyb206ZmluYWxGcm9tLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSwiV09SS0VSQkVFIj09PXN5bWJvbCYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ3aXRuZXNzZXMiLCJ1cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHMiLHthY2NvdW50OmZpbmFsRnJvbX0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlU3Rha2VDaGFuZ2UiLHthY2NvdW50OmZpbmFsRnJvbSxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OmFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLm5lZ2F0ZWQoKSxkZWxlZ2F0ZWQ6ITB9KX19fX19fX07Y29uc3QgcHJvY2Vzc1VuZGVsZWdhdGlvbj1hc3luYyB1bmRlbGVnYXRpb249Pntjb25zdHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX09dW5kZWxlZ2F0aW9uLGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2x9KSx0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWJhbGFuY2UsImJhbGFuY2UgZG9lcyBub3QgZXhpc3QiKSl7Y29uc3Qgb3JpZ2luYWxTdGFrZT1iYWxhbmNlLnN0YWtlLG9yaWdpbmFsUGVuZGluZ1VuZGVsZWdhdGlvbnM9YmFsYW5jZS5wZW5kaW5nVW5kZWxlZ2F0aW9ucztiYWxhbmNlLnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5zdGFrZSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLGJhbGFuY2UucGVuZGluZ1VuZGVsZWdhdGlvbnM9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnBlbmRpbmdVbmRlbGVnYXRpb25zLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2UucGVuZGluZ1VuZGVsZWdhdGlvbnMpLmx0KG9yaWdpbmFsUGVuZGluZ1VuZGVsZWdhdGlvbnMpJiZhcGkuQmlnTnVtYmVyKGJhbGFuY2Uuc3Rha2UpLmd0KG9yaWdpbmFsU3Rha2UpLCJjYW5ub3Qgc3VidHJhY3QiKSYmKGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlKSxhd2FpdCBhcGkuZGIucmVtb3ZlKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIsdW5kZWxlZ2F0aW9uKSxhcGkuZW1pdCgidW5kZWxlZ2F0ZURvbmUiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pLCJXT1JLRVJCRUUiPT09c3ltYm9sJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6YWNjb3VudH0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlU3Rha2VDaGFuZ2UiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pKX19O2FjdGlvbnMuY2hlY2tQZW5kaW5nVW5kZWxlZ2F0aW9ucz1hc3luYygpPT57aWYoYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCIpKXtjb25zdCB0aW1lc3RhbXA9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKS5nZXRUaW1lKCk7bGV0IHBlbmRpbmdVbmRlbGVnYXRpb25zPWF3YWl0IGFwaS5kYi5maW5kKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIse2NvbXBsZXRlVGltZXN0YW1wOnskbHRlOnRpbWVzdGFtcH19KSxuYlBlbmRpbmdVbmRlbGVnYXRpb25zPXBlbmRpbmdVbmRlbGVnYXRpb25zLmxlbmd0aDtmb3IoO25iUGVuZGluZ1VuZGVsZWdhdGlvbnM+MDspe2ZvcihsZXQgaW5kZXg9MDtpbmRleDxuYlBlbmRpbmdVbmRlbGVnYXRpb25zO2luZGV4Kz0xKXtjb25zdCBwZW5kaW5nVW5kZWxlZ2F0aW9uPXBlbmRpbmdVbmRlbGVnYXRpb25zW2luZGV4XTthd2FpdCBwcm9jZXNzVW5kZWxlZ2F0aW9uKHBlbmRpbmdVbmRlbGVnYXRpb24pfXBlbmRpbmdVbmRlbGVnYXRpb25zPWF3YWl0IGFwaS5kYi5maW5kKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIse2NvbXBsZXRlVGltZXN0YW1wOnskbHRlOnRpbWVzdGFtcH19KSxuYlBlbmRpbmdVbmRlbGVnYXRpb25zPXBlbmRpbmdVbmRlbGVnYXRpb25zLmxlbmd0aH19fTs="}}}

Tokens Smart Contract | Ecency