Updating tokens contract

{"id":"ssc-testnet-reaz","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"tokens","params":"","code":"Y29uc3QgQUNDT1VOVF9CTEFDS0xJU1Q9e2dhdGVpb2RlcG9zaXQ6MSxkZWVwY3J5cHRvODoxLGJpdHRyZXg6MSxwb2xvbmlleDoxLCJodW9iaS1wcm8iOjEsImJpbmFuY2UtaG90IjoxLGJpdHZhdm86MSxibG9ja3RyYWRlczoxLHByb2JpdHN0ZWVtOjEscHJvYml0aGl2ZToxLGlvbm9teToxLG14Y2hpdmU6MSxjb2luYmFzZWJhc2U6MSxvcmlub2NvOjEsInVzZXIuZHVuYW11IjoxfSxIRV9BQ0NPVU5UUz17ImhpdmUtZW5naW5lIjoxLCJzd2FwLWV0aCI6MSwiYnRjLXN3YXAiOjEsImdyYXBoZW5lLXN3YXAiOjEsImhvbmV5LXN3YXAiOjF9LFJFU0VSVkVEX1NZTUJPTFM9e0VORzoibnVsbCIsU1RFRU1QOiJzdGVlbS1wZWciLEJUQ1A6ImJ0Y3BlZyIsTFRDUDoibHRjcCIsRE9HRVA6ImRvZ2VwIixCQ0hQOiJiY2hwIixTTVRUOiJzdGVlbW1vbnN0ZXJzIixFTToic3RlZW0tZW5nIixFTUZPVVI6InN0ZWVtLWVuZyIsSElWRVA6InN0ZWVtLXRva2VucyJ9LGNhbGN1bGF0ZUJhbGFuY2U9KGEsZSx0LGkpPT4oaT9hcGkuQmlnTnVtYmVyKGEpLnBsdXMoZSk6YXBpLkJpZ051bWJlcihhKS5taW51cyhlKSkudG9GaXhlZCh0KSxjb3VudERlY2ltYWxzPWE9PmFwaS5CaWdOdW1iZXIoYSkuZHAoKSxmaW5kQW5kUHJvY2Vzc0FsbD1hc3luYyhhLGUsdCk9PntsZXQgaT0wO3ZhciBuO2xldCBzPSExO2Zvcig7IXM7KWlmKG49YXdhaXQgYXBpLmRiLmZpbmQoYSxlLDFlMyxpKSl7Zm9yKGxldCBhPTA7YTxuLmxlbmd0aDthKz0xKWF3YWl0IHQoblthXSk7bi5sZW5ndGg8MWUzP3M9ITA6aSs9MWUzfX07YWN0aW9ucy5jcmVhdGVTU0M9YXN5bmMoKT0+e2lmKCExPT09YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJ0b2tlbnMiKSl7YXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ0b2tlbnMiLFsic3ltYm9sIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiYmFsYW5jZXMiLFsiYWNjb3VudCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoImNvbnRyYWN0c0JhbGFuY2VzIixbImFjY291bnQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwYXJhbXMiKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBlbmRpbmdVbnN0YWtlcyIsWyJhY2NvdW50IiwidW5zdGFrZUNvbXBsZXRlVGltZXN0YW1wIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiZGVsZWdhdGlvbnMiLFsiZnJvbSIsInRvIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLFsiYWNjb3VudCIsImNvbXBsZXRlVGltZXN0YW1wIl0pO2NvbnN0IGE9e3Rva2VuQ3JlYXRpb25GZWU6IjAiLGVuYWJsZURlbGVnYXRpb25GZWU6IjAiLGVuYWJsZVN0YWtpbmdGZWU6IjAifTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJwYXJhbXMiLGEpfWVsc2V7Y29uc3QgZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7aWYoIWUuYmxhY2tsaXN0KXtlLmJsYWNrbGlzdD1BQ0NPVU5UX0JMQUNLTElTVCxlLmhlQWNjb3VudHM9SEVfQUNDT1VOVFM7Y29uc3QgdD17fTtsZXQgYT0hMTtlLmZpeE11bHRpVHhVbnN0YWtlQmFsYW5jZSYmKGRlbGV0ZSBlLmZpeE11bHRpVHhVbnN0YWtlQmFsYW5jZSx0LmZpeE11bHRpVHhVbnN0YWtlQmFsYW5jZT0iIixhPSEwKSxlLmNhbmNlbEJhZFVuc3Rha2VzJiYoZGVsZXRlIGUuY2FuY2VsQmFkVW5zdGFrZXMsdC5jYW5jZWxCYWRVbnN0YWtlcz0iIixhPSEwKSxhP2F3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIsZSx0KTphd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLGUpfX19O2NvbnN0IGJhbGFuY2VUZW1wbGF0ZT17YWNjb3VudDpudWxsLHN5bWJvbDpudWxsLGJhbGFuY2U6IjAiLHN0YWtlOiIwIixwZW5kaW5nVW5zdGFrZToiMCIsZGVsZWdhdGlvbnNJbjoiMCIsZGVsZWdhdGlvbnNPdXQ6IjAiLHBlbmRpbmdVbmRlbGVnYXRpb25zOiIwIn0sYWRkU3Rha2U9YXN5bmMoYSxlLHQpPT57bGV0IGk9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDphLHN5bWJvbDplLnN5bWJvbH0pO251bGw9PT1pJiYoaT1iYWxhbmNlVGVtcGxhdGUsaS5hY2NvdW50PWEsaS5zeW1ib2w9ZS5zeW1ib2wsaT1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJiYWxhbmNlcyIsaSkpLHZvaWQgMD09PWkuc3Rha2UmJihpLnN0YWtlPSIwIixpLnBlbmRpbmdVbnN0YWtlPSIwIik7YT1pLnN0YWtlO3JldHVybiBpLnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoaS5zdGFrZSx0LGUucHJlY2lzaW9uLCEwKSwhIWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihpLnN0YWtlKS5ndChhKSwiY2Fubm90IGFkZCIpJiYoYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGkpLHZvaWQgMD09PWUudG90YWxTdGFrZWQmJihlLnRvdGFsU3Rha2VkPSIwIiksZS50b3RhbFN0YWtlZD1jYWxjdWxhdGVCYWxhbmNlKGUudG90YWxTdGFrZWQsdCxlLnByZWNpc2lvbiwhMCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIixlKSwhMCl9LHN1YkJhbGFuY2U9YXN5bmMoYSxlLHQsaSk9Pntjb25zdCBuPWF3YWl0IGFwaS5kYi5maW5kT25lKGkse2FjY291bnQ6YSxzeW1ib2w6ZS5zeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1uLCJiYWxhbmNlIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihuLmJhbGFuY2UpLmd0ZSh0KSwib3ZlcmRyYXduIGJhbGFuY2UiKSl7YT1uLmJhbGFuY2U7aWYobi5iYWxhbmNlPWNhbGN1bGF0ZUJhbGFuY2Uobi5iYWxhbmNlLHQsZS5wcmVjaXNpb24sITEpLGFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihuLmJhbGFuY2UpLmx0KGEpLCJjYW5ub3Qgc3VidHJhY3QiKSlyZXR1cm4gYXdhaXQgYXBpLmRiLnVwZGF0ZShpLG4pLCEwfXJldHVybiExfSxhZGRCYWxhbmNlPWFzeW5jKGEsZSx0LGkpPT57bGV0IG49YXdhaXQgYXBpLmRiLmZpbmRPbmUoaSx7YWNjb3VudDphLHN5bWJvbDplLnN5bWJvbH0pO2lmKG51bGw9PT1uKXJldHVybiBuPWJhbGFuY2VUZW1wbGF0ZSxuLmFjY291bnQ9YSxuLnN5bWJvbD1lLnN5bWJvbCxuLmJhbGFuY2U9dCxhd2FpdCBhcGkuZGIuaW5zZXJ0KGksbiksITA7YT1uLmJhbGFuY2U7cmV0dXJuIG4uYmFsYW5jZT1jYWxjdWxhdGVCYWxhbmNlKG4uYmFsYW5jZSx0LGUucHJlY2lzaW9uLCEwKSwhIWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihuLmJhbGFuY2UpLmd0KGEpLCJjYW5ub3QgYWRkIikmJihhd2FpdCBhcGkuZGIudXBkYXRlKGksbiksITApfTthY3Rpb25zLnVwZGF0ZVBhcmFtcz1hc3luYyBhPT57aWYoYXBpLnNlbmRlcj09PWFwaS5vd25lcil7dmFye3Rva2VuQ3JlYXRpb25GZWU6ZSxlbmFibGVEZWxlZ2F0aW9uRmVlOnQsZW5hYmxlU3Rha2luZ0ZlZTppLGJsYWNrbGlzdDpuLGhlQWNjb3VudHM6YX09YTtjb25zdCBzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtlJiYic3RyaW5nIj09dHlwZW9mIGUmJiFhcGkuQmlnTnVtYmVyKGUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoZSkuZ3RlKDApJiYocy50b2tlbkNyZWF0aW9uRmVlPWUpLHQmJiJzdHJpbmciPT10eXBlb2YgdCYmIWFwaS5CaWdOdW1iZXIodCkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcih0KS5ndGUoMCkmJihzLmVuYWJsZURlbGVnYXRpb25GZWU9dCksaSYmInN0cmluZyI9PXR5cGVvZiBpJiYhYXBpLkJpZ051bWJlcihpKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKGkpLmd0ZSgwKSYmKHMuZW5hYmxlU3Rha2luZ0ZlZT1pKSxuJiYib2JqZWN0Ij09dHlwZW9mIG4mJihzLmJsYWNrbGlzdD1uKSxhJiYib2JqZWN0Ij09dHlwZW9mIGEmJihzLmhlQWNjb3VudHM9YSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixzKX19LGFjdGlvbnMudXBkYXRlVXJsPWFzeW5jIGE9Pnt2YXJ7dXJsOmUsc3ltYm9sOmF9PWE7aWYoYXBpLmFzc2VydChhJiYic3RyaW5nIj09dHlwZW9mIGEmJmUmJiJzdHJpbmciPT10eXBlb2YgZSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChlLmxlbmd0aDw9MjU1LCJpbnZhbGlkIHVybDogbWF4IGxlbmd0aCBvZiAyNTUiKSl7Y29uc3QgdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOmF9KTtpZih0JiZhcGkuYXNzZXJ0KHQuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikpdHJ5e2NvbnN0IGk9SlNPTi5wYXJzZSh0Lm1ldGFkYXRhKTthcGkuYXNzZXJ0KGkmJmkudXJsLCJhbiBlcnJvciBvY2N1cmVkIHdoZW4gdHJ5aW5nIHRvIHVwZGF0ZSB0aGUgdXJsIikmJihpLnVybD1lLHQubWV0YWRhdGE9SlNPTi5zdHJpbmdpZnkoaSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0KSl9Y2F0Y2goYSl7fX19LGFjdGlvbnMudXBkYXRlTWV0YWRhdGE9YXN5bmMgYT0+e3ZhcnttZXRhZGF0YTplLHN5bWJvbDphfT1hO2lmKGFwaS5hc3NlcnQoYSYmInN0cmluZyI9PXR5cGVvZiBhJiZlJiYib2JqZWN0Ij09dHlwZW9mIGUsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IGk9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDphfSk7aWYoaSYmYXBpLmFzc2VydChpLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXRyeXt2YXIgdD1KU09OLnN0cmluZ2lmeShlKTthcGkuYXNzZXJ0KHQubGVuZ3RoPD0xZTMsImludmFsaWQgbWV0YWRhdGE6IG1heCBsZW5ndGggb2YgMTAwMCIpJiYoaS5tZXRhZGF0YT10LGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsaSkpfWNhdGNoKGEpe319fSxhY3Rpb25zLnVwZGF0ZVByZWNpc2lvbj1hc3luYyBhPT57dmFye3N5bWJvbDplLHByZWNpc2lvbjp0LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTphfT1hO2lmKGFwaS5hc3NlcnQoITA9PT1hLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChlJiYic3RyaW5nIj09dHlwZW9mIGUpJiZhcGkuYXNzZXJ0KDA8dCYmdDw9OCYmTnVtYmVyLmlzSW50ZWdlcih0KSwiaW52YWxpZCBwcmVjaXNpb24iKSl7Y29uc3QgaT1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOmV9KTtpJiZhcGkuYXNzZXJ0KGkuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikmJmFwaS5hc3NlcnQodD5pLnByZWNpc2lvbiwicHJlY2lzaW9uIGNhbiBvbmx5IGJlIGluY3JlYXNlZCIpJiYoaS5wcmVjaXNpb249dCxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLGkpKX19LGFjdGlvbnMudHJhbnNmZXJPd25lcnNoaXA9YXN5bmMgYT0+e2NvbnN0e3N5bWJvbDplLHRvOnQsaXNTaWduZWRXaXRoQWN0aXZlS2V5Oml9PWE7aWYoYXBpLmFzc2VydCghMD09PWksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KGUmJiJzdHJpbmciPT10eXBlb2YgZSYmdCYmInN0cmluZyI9PXR5cGVvZiB0LCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6ZX0pO24mJmFwaS5hc3NlcnQobi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmKGE9dC50cmltKCksYXBpLmFzc2VydChhcGkuaXNWYWxpZEFjY291bnROYW1lKGEpLCJpbnZhbGlkIHRvIikmJihuLmlzc3Vlcj1hLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsbikpKX19LGFjdGlvbnMuY3JlYXRlPWFzeW5jIGE9Pntjb25zdHtuYW1lOmUsc3ltYm9sOnQsdXJsOmkscHJlY2lzaW9uOm4sbWF4U3VwcGx5OnMsaXNTaWduZWRXaXRoQWN0aXZlS2V5Om99PWE7dmFye3Rva2VuQ3JlYXRpb25GZWU6bCxoZUFjY291bnRzOnJ9PWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSxhPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkJFRSJ9KSxhPSEoIWFwaS5CaWdOdW1iZXIobCkubHRlKDApJiYxIT09clthcGkuc2VuZGVyXSl8fGEmJmFwaS5CaWdOdW1iZXIoYS5iYWxhbmNlKS5ndGUobCk7YXBpLmFzc2VydChhLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIGNyZWF0aW9uIGZlZXMiKSYmYXBpLmFzc2VydCghMD09PW8sInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KGUmJiJzdHJpbmciPT10eXBlb2YgZSYmdCYmInN0cmluZyI9PXR5cGVvZiB0JiYodm9pZCAwPT09aXx8aSYmInN0cmluZyI9PXR5cGVvZiBpKSYmKG4mJiJudW1iZXIiPT10eXBlb2Ygbnx8MD09PW4pJiZzJiYic3RyaW5nIj09dHlwZW9mIHMmJiFhcGkuQmlnTnVtYmVyKHMpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQoMDx0Lmxlbmd0aCYmdC5sZW5ndGg8PTEwJiZhcGkudmFsaWRhdG9yLmlzQWxwaGEoYXBpLnZhbGlkYXRvci5ibGFja2xpc3QodCwiLiIpKSYmYXBpLnZhbGlkYXRvci5pc1VwcGVyY2FzZSh0KSYmKC0xPT09dC5pbmRleE9mKCIuIil8fDA8dC5pbmRleE9mKCIuIikmJnQuaW5kZXhPZigiLiIpPHQubGVuZ3RoLTEmJnQuaW5kZXhPZigiLiIpPT09dC5sYXN0SW5kZXhPZigiLiIpKSwnaW52YWxpZCBzeW1ib2w6IHVwcGVyY2FzZSBsZXR0ZXJzIG9ubHkgYW5kIG9uZSAiLiIgYWxsb3dlZCwgbWF4IGxlbmd0aCBvZiAxMCcpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PVJFU0VSVkVEX1NZTUJPTFNbdF18fGFwaS5zZW5kZXI9PT1SRVNFUlZFRF9TWU1CT0xTW3RdLCJjYW5ub3QgdXNlIHRoaXMgc3ltYm9sIikmJmFwaS5hc3NlcnQoMT09PXJbYXBpLnNlbmRlcl18fC0xPT09dC5pbmRleE9mKCJTV0FQIiksImludmFsaWQgc3ltYm9sOiBub3QgYWxsb3dlZCB0byB1c2UgU1dBUCIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMoYXBpLnZhbGlkYXRvci5ibGFja2xpc3QoZSwiICIpKSYmMDxlLmxlbmd0aCYmZS5sZW5ndGg8PTUwLCJpbnZhbGlkIG5hbWU6IGxldHRlcnMsIG51bWJlcnMsIHdoaXRlc3BhY2VzIG9ubHksIG1heCBsZW5ndGggb2YgNTAiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1pfHxpLmxlbmd0aDw9MjU1LCJpbnZhbGlkIHVybDogbWF4IGxlbmd0aCBvZiAyNTUiKSYmYXBpLmFzc2VydCgwPD1uJiZuPD04JiZOdW1iZXIuaXNJbnRlZ2VyKG4pLCJpbnZhbGlkIHByZWNpc2lvbiIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocykuZ3QoMCksIm1heFN1cHBseSBtdXN0IGJlIHBvc2l0aXZlIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihzKS5sdGUoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLGBtYXhTdXBwbHkgbXVzdCBiZSBsb3dlciB0aGFuICR7TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ9YCkmJihhPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6dH0pLGFwaS5hc3NlcnQobnVsbD09PWEsInN5bWJvbCBhbHJlYWR5IGV4aXN0cyIpJiYoYT17dXJsOnZvaWQgMD09PWk/IiI6aX0sYT1KU09OLnN0cmluZ2lmeShhKSxhPXtpc3N1ZXI6YXBpLnNlbmRlcixzeW1ib2w6dCxuYW1lOmUsbWV0YWRhdGE6YSxwcmVjaXNpb246bixtYXhTdXBwbHk6YXBpLkJpZ051bWJlcihzKS50b0ZpeGVkKG4pLHN1cHBseToiMCIsY2lyY3VsYXRpbmdTdXBwbHk6IjAiLHN0YWtpbmdFbmFibGVkOiExLHVuc3Rha2luZ0Nvb2xkb3duOjEsZGVsZWdhdGlvbkVuYWJsZWQ6ITEsdW5kZWxlZ2F0aW9uQ29vbGRvd246MH0sYXdhaXQgYXBpLmRiLmluc2VydCgidG9rZW5zIixhKSxhcGkuQmlnTnVtYmVyKGwpLmd0KDApJiZ2b2lkIDA9PT1yW2FwaS5zZW5kZXJdJiZhd2FpdCBhY3Rpb25zLnRyYW5zZmVyKHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5OmwsaXNTaWduZWRXaXRoQWN0aXZlS2V5Om99KSkpfSxhY3Rpb25zLmlzc3VlPWFzeW5jIGU9Pntjb25zdHt0bzphLHN5bWJvbDp0LHF1YW50aXR5OmksaXNTaWduZWRXaXRoQWN0aXZlS2V5Om4sY2FsbGluZ0NvbnRyYWN0SW5mbzpzfT1lO3ZhciBvPSJudWxsIj09PWFwaS5zZW5kZXImJiJtaW5pbmciPT09cy5uYW1lO2lmKG98fGFwaS5hc3NlcnQoITA9PT1uLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChhJiYic3RyaW5nIj09dHlwZW9mIGEmJnQmJiJzdHJpbmciPT10eXBlb2YgdCYmaSYmInN0cmluZyI9PXR5cGVvZiBpJiYhYXBpLkJpZ051bWJlcihpKS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtlPWEudHJpbSgpO2NvbnN0IGw9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDp0fSk7aWYoYXBpLmFzc2VydChudWxsIT09bCwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQob3x8bC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJub3QgYWxsb3dlZCB0byBpc3N1ZSB0b2tlbnMiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKGkpPD1sLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoaSkuZ3QoMCksIm11c3QgaXNzdWUgcG9zaXRpdmUgcXVhbnRpdHkiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGwubWF4U3VwcGx5KS5taW51cyhsLnN1cHBseSkuZ3RlKGkpLCJxdWFudGl0eSBleGNlZWRzIGF2YWlsYWJsZSBzdXBwbHkiKSYmYXBpLmFzc2VydChhcGkuaXNWYWxpZEFjY291bnROYW1lKGUpLCJpbnZhbGlkIHRvIikpe2xldCBhPWF3YWl0IGFkZEJhbGFuY2UobC5pc3N1ZXIsbCxpLCJiYWxhbmNlcyIpOyEwPT09YSYmZSE9PWwuaXNzdWVyJiZhd2FpdCBzdWJCYWxhbmNlKGwuaXNzdWVyLGwsaSwiYmFsYW5jZXMiKSYmKGE9YXdhaXQgYWRkQmFsYW5jZShlLGwsaSwiYmFsYW5jZXMiKSwhMT09PWEmJmF3YWl0IGFkZEJhbGFuY2UobC5pc3N1ZXIsbCxpLCJiYWxhbmNlcyIpKSwhMD09PWEmJihsLnN1cHBseT1jYWxjdWxhdGVCYWxhbmNlKGwuc3VwcGx5LGksbC5wcmVjaXNpb24sITApLCJudWxsIiE9PWUmJihsLmNpcmN1bGF0aW5nU3VwcGx5PWNhbGN1bGF0ZUJhbGFuY2UobC5jaXJjdWxhdGluZ1N1cHBseSxpLGwucHJlY2lzaW9uLCEwKSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIixsKSxhcGkuZW1pdCgidHJhbnNmZXJGcm9tQ29udHJhY3QiLHtmcm9tOiJ0b2tlbnMiLHRvOmUsc3ltYm9sOnQscXVhbnRpdHk6aX0pKX19fSxhY3Rpb25zLmlzc3VlVG9Db250cmFjdD1hc3luYyBhPT57Y29uc3R7dG86ZSxzeW1ib2w6dCxxdWFudGl0eTppLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTpufT1hO2lmKGFwaS5hc3NlcnQoITA9PT1uLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChlJiYic3RyaW5nIj09dHlwZW9mIGUmJnQmJiJzdHJpbmciPT10eXBlb2YgdCYmaSYmInN0cmluZyI9PXR5cGVvZiBpJiYhYXBpLkJpZ051bWJlcihpKS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXthPWUudHJpbSgpO2NvbnN0IHM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDp0fSk7YXBpLmFzc2VydChudWxsIT09cywic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQocy5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJub3QgYWxsb3dlZCB0byBpc3N1ZSB0b2tlbnMiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKGkpPD1zLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoaSkuZ3QoMCksIm11c3QgaXNzdWUgcG9zaXRpdmUgcXVhbnRpdHkiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHMubWF4U3VwcGx5KS5taW51cyhzLnN1cHBseSkuZ3RlKGkpLCJxdWFudGl0eSBleGNlZWRzIGF2YWlsYWJsZSBzdXBwbHkiKSYmYXBpLmFzc2VydCgzPD1hLmxlbmd0aCYmYS5sZW5ndGg8PTUwLCJpbnZhbGlkIHRvIikmJiEwPT09YXdhaXQgYWRkQmFsYW5jZShhLHMsaSwiY29udHJhY3RzQmFsYW5jZXMiKSYmKHMuc3VwcGx5PWNhbGN1bGF0ZUJhbGFuY2Uocy5zdXBwbHksaSxzLnByZWNpc2lvbiwhMCksIm51bGwiIT09YSYmKHMuY2lyY3VsYXRpbmdTdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZShzLmNpcmN1bGF0aW5nU3VwcGx5LGkscy5wcmVjaXNpb24sITApKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHMpLGFwaS5lbWl0KCJpc3N1ZVRvQ29udHJhY3QiLHtmcm9tOiJ0b2tlbnMiLHRvOmEsc3ltYm9sOnQscXVhbnRpdHk6aX0pKX19LGFjdGlvbnMudHJhbnNmZXI9YXN5bmMgYT0+e2NvbnN0e3RvOmUsc3ltYm9sOnQscXVhbnRpdHk6aSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6bn09YTtpZihhcGkuYXNzZXJ0KCEwPT09biwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoZSYmInN0cmluZyI9PXR5cGVvZiBlJiZ0JiYic3RyaW5nIj09dHlwZW9mIHQmJmkmJiJzdHJpbmciPT10eXBlb2YgaSYmIWFwaS5CaWdOdW1iZXIoaSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7dmFyIHM9ZS50cmltKCk7aWYoYXBpLmFzc2VydChzIT09YXBpLnNlbmRlciwiY2Fubm90IHRyYW5zZmVyIHRvIHNlbGYiKSl7dmFye2JsYWNrbGlzdDphfT1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7aWYoYXBpLmFzc2VydChhcGkuaXNWYWxpZEFjY291bnROYW1lKHMpLCJpbnZhbGlkIHRvIikmJmFwaS5hc3NlcnQodm9pZCAwPT09YVtzXSxgbm90IGFsbG93ZWQgdG8gc2VuZCB0byAke3N9YCkpe2NvbnN0IG89YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDp0fSk7aWYoYXBpLmFzc2VydChudWxsIT09bywic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhpKTw9by5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGkpLmd0KDApLCJtdXN0IHRyYW5zZmVyIHBvc2l0aXZlIHF1YW50aXR5IikpaWYoYXdhaXQgc3ViQmFsYW5jZShhcGkuc2VuZGVyLG8saSwiYmFsYW5jZXMiKSlyZXR1cm4hMT09PWF3YWl0IGFkZEJhbGFuY2UocyxvLGksImJhbGFuY2VzIik/KGF3YWl0IGFkZEJhbGFuY2UoYXBpLnNlbmRlcixvLGksImJhbGFuY2VzIiksITEpOigibnVsbCI9PT1zJiYoby5jaXJjdWxhdGluZ1N1cHBseT1jYWxjdWxhdGVCYWxhbmNlKG8uY2lyY3VsYXRpbmdTdXBwbHksaSxvLnByZWNpc2lvbiwhMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIixvKSksYXBpLmVtaXQoInRyYW5zZmVyIix7ZnJvbTphcGkuc2VuZGVyLHRvOnMsc3ltYm9sOnQscXVhbnRpdHk6aX0pLCEwKX19fXJldHVybiExfSxhY3Rpb25zLnRyYW5zZmVyVG9Db250cmFjdD1hc3luYyBhPT57Y29uc3R7ZnJvbTplLHRvOnQsc3ltYm9sOmkscXVhbnRpdHk6bixpc1NpZ25lZFdpdGhBY3RpdmVLZXk6c309YTt2YXIgbz12b2lkIDA9PT1lfHwibnVsbCIhPT1hcGkuc2VuZGVyP2FwaS5zZW5kZXI6ZTtpZihhcGkuYXNzZXJ0KCEwPT09c3x8Im51bGwiPT09YXBpLnNlbmRlciwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQodCYmInN0cmluZyI9PXR5cGVvZiB0JiZpJiYic3RyaW5nIj09dHlwZW9mIGkmJm4mJiJzdHJpbmciPT10eXBlb2YgbiYmIWFwaS5CaWdOdW1iZXIobikuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7YT10LnRyaW0oKS50b0xvd2VyQ2FzZSgpO2lmKGFwaS5hc3NlcnQoYSE9PW8sImNhbm5vdCB0cmFuc2ZlciB0byBzZWxmIikmJmFwaS5hc3NlcnQoMzw9YS5sZW5ndGgmJmEubGVuZ3RoPD01MCwiaW52YWxpZCB0byIpKXtjb25zdCBsPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6aX0pO2FwaS5hc3NlcnQobnVsbCE9PWwsInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMobik8PWwucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihuKS5ndCgwKSwibXVzdCB0cmFuc2ZlciBwb3NpdGl2ZSBxdWFudGl0eSIpJiZhd2FpdCBzdWJCYWxhbmNlKG8sbCxuLCJiYWxhbmNlcyIpJiYoITE9PT1hd2FpdCBhZGRCYWxhbmNlKGEsbCxuLCJjb250cmFjdHNCYWxhbmNlcyIpP2F3YWl0IGFkZEJhbGFuY2UobyxsLG4sImJhbGFuY2VzIik6KCJudWxsIj09PWEmJihsLmNpcmN1bGF0aW5nU3VwcGx5PWNhbGN1bGF0ZUJhbGFuY2UobC5jaXJjdWxhdGluZ1N1cHBseSxuLGwucHJlY2lzaW9uLCExKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLGwpKSxhcGkuZW1pdCgidHJhbnNmZXJUb0NvbnRyYWN0Iix7ZnJvbTpvLHRvOmEsc3ltYm9sOmkscXVhbnRpdHk6bn0pKSl9fX0sYWN0aW9ucy50cmFuc2ZlckZyb21Db250cmFjdD1hc3luYyBhPT57aWYoYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCIpKXtjb25zdHtmcm9tOmksdG86bixzeW1ib2w6cyxxdWFudGl0eTpvLHR5cGU6bH09YSxyPVsidXNlciIsImNvbnRyYWN0Il07aWYoYXBpLmFzc2VydChuJiYic3RyaW5nIj09dHlwZW9mIG4mJmkmJiJzdHJpbmciPT10eXBlb2YgaSYmcyYmInN0cmluZyI9PXR5cGVvZiBzJiZsJiZyLmluY2x1ZGVzKGwpJiZvJiYic3RyaW5nIj09dHlwZW9mIG8mJiFhcGkuQmlnTnVtYmVyKG8pLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe3ZhciBlPW4udHJpbSgpLHQ9InVzZXIiPT09bD8iYmFsYW5jZXMiOiJjb250cmFjdHNCYWxhbmNlcyI7aWYoYXBpLmFzc2VydCgidXNlciI9PT1sfHwiY29udHJhY3QiPT09bCYmZSE9PWksImNhbm5vdCB0cmFuc2ZlciB0byBzZWxmIikpe2E9InVzZXIiPT09bD9hcGkuaXNWYWxpZEFjY291bnROYW1lKGUpOjM8PWUubGVuZ3RoJiZlLmxlbmd0aDw9NTA7aWYoYXBpLmFzc2VydCghMD09PWEsImludmFsaWQgdG8iKSl7Y29uc3QgYz1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN9KTthcGkuYXNzZXJ0KG51bGwhPT1jLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKG8pPD1jLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIobykuZ3QoMCksIm11c3QgdHJhbnNmZXIgcG9zaXRpdmUgcXVhbnRpdHkiKSYmYXdhaXQgc3ViQmFsYW5jZShpLGMsbywiY29udHJhY3RzQmFsYW5jZXMiKSYmKCExPT09YXdhaXQgYWRkQmFsYW5jZShlLGMsbyx0KT9hd2FpdCBhZGRCYWxhbmNlKGksYyxvLCJjb250cmFjdHNCYWxhbmNlcyIpOigibnVsbCI9PT1lJiYoYy5jaXJjdWxhdGluZ1N1cHBseT1jYWxjdWxhdGVCYWxhbmNlKGMuY2lyY3VsYXRpbmdTdXBwbHksbyxjLnByZWNpc2lvbiwhMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIixjKSksYXBpLmVtaXQoInRyYW5zZmVyRnJvbUNvbnRyYWN0Iix7ZnJvbTppLHRvOmUsc3ltYm9sOnMscXVhbnRpdHk6b30pKSl9fX19fTtjb25zdCBwcm9jZXNzVW5zdGFrZT1hc3luYyBhPT57dmFye2FjY291bnQ6ZSxzeW1ib2w6dCxxdWFudGl0eTppLHF1YW50aXR5TGVmdDpuLG51bWJlclRyYW5zYWN0aW9uc0xlZnQ6c309YTtjb25zdCBvPWEsbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmUsc3ltYm9sOnR9KSxyPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6dH0pO2xldCBjPTAscD0wO2FwaS5hc3NlcnQobnVsbCE9PWwsImJhbGFuY2UgZG9lcyBub3QgZXhpc3QiKSYmKDE9PT1zPyhjPW4sYXdhaXQgYXBpLmRiLnJlbW92ZSgicGVuZGluZ1Vuc3Rha2VzIixhKSk6KGM9YXBpLkJpZ051bWJlcihpKS5kaXZpZGVkQnkoci5udW1iZXJUcmFuc2FjdGlvbnMpLnRvRml4ZWQoci5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxvLnF1YW50aXR5TGVmdD1hcGkuQmlnTnVtYmVyKG8ucXVhbnRpdHlMZWZ0KS5taW51cyhjKS50b0ZpeGVkKHIucHJlY2lzaW9uKSwtLW8ubnVtYmVyVHJhbnNhY3Rpb25zTGVmdCxwPTE9PT1vLm51bWJlclRyYW5zYWN0aW9uc0xlZnQ/by5xdWFudGl0eUxlZnQ6YyxvLm5leHRUcmFuc2FjdGlvblRpbWVzdGFtcD1hcGkuQmlnTnVtYmVyKG8ubmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wKS5wbHVzKG8ubWlsbGlzZWNQZXJQZXJpb2QpLnRvTnVtYmVyKCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGVuZGluZ1Vuc3Rha2VzIixvKSksYXBpLkJpZ051bWJlcihjKS5ndCgwKSYmKGE9bC5iYWxhbmNlLGk9bC5wZW5kaW5nVW5zdGFrZSxsLmJhbGFuY2U9Y2FsY3VsYXRlQmFsYW5jZShsLmJhbGFuY2UsYyxyLnByZWNpc2lvbiwhMCksbC5wZW5kaW5nVW5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGwucGVuZGluZ1Vuc3Rha2UsYyxyLnByZWNpc2lvbiwhMSksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGwucGVuZGluZ1Vuc3Rha2UpLmx0KGkpJiZhcGkuQmlnTnVtYmVyKGwuYmFsYW5jZSkuZ3QoYSksImNhbm5vdCBzdWJ0cmFjdCIpJiYoYXBpLkJpZ051bWJlcihwKS5ndCgwKSYmKGwuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShsLnN0YWtlLHAsci5wcmVjaXNpb24sITEpLHIudG90YWxTdGFrZWQ9Y2FsY3VsYXRlQmFsYW5jZShyLnRvdGFsU3Rha2VkLHAsci5wcmVjaXNpb24sITEpLCJXT1JLRVJCRUUiPT09dCYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ3aXRuZXNzZXMiLCJ1cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHMiLHthY2NvdW50OmV9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZVN0YWtlQ2hhbmdlIix7YWNjb3VudDplLHN5bWJvbDp0LHF1YW50aXR5OmFwaS5CaWdOdW1iZXIocCkubmVnYXRlZCgpfSkpLGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixsKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHIpLGFwaS5lbWl0KCJ1bnN0YWtlIix7YWNjb3VudDplLHN5bWJvbDp0LHF1YW50aXR5OmN9KSkpKX07YWN0aW9ucy5jaGVja1BlbmRpbmdVbnN0YWtlcz1hc3luYygpPT57aWYoYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCIpKXtjb25zdCBuPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKTt2YXIgYT1uLmdldFRpbWUoKTtsZXQgZT1hd2FpdCBhcGkuZGIuZmluZCgicGVuZGluZ1Vuc3Rha2VzIix7bmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wOnskbHRlOmF9fSksdD1lLmxlbmd0aDtmb3IoOzA8dDspe2ZvcihsZXQgYT0wO2E8dDthKz0xKXt2YXIgaT1lW2FdO2F3YWl0IHByb2Nlc3NVbnN0YWtlKGkpfWU9YXdhaXQgYXBpLmRiLmZpbmQoInBlbmRpbmdVbnN0YWtlcyIse25leHRUcmFuc2FjdGlvblRpbWVzdGFtcDp7JGx0ZTphfX0pLHQ9ZS5sZW5ndGh9fX0sYWN0aW9ucy5lbmFibGVTdGFraW5nPWFzeW5jIGE9Pnt2YXJ7c3ltYm9sOmUsdW5zdGFraW5nQ29vbGRvd246dCxudW1iZXJUcmFuc2FjdGlvbnM6aSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6bn09YSx7ZW5hYmxlU3Rha2luZ0ZlZTpzfT1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSksYT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksYT1hJiZhcGkuQmlnTnVtYmVyKGEuYmFsYW5jZSkuZ3RlKHMpLGE9dm9pZCAwPT09c3x8YXBpLkJpZ051bWJlcihzKS5sdGUoMCl8fGE7aWYoYXBpLmFzc2VydChhLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgIGZlZXMiKSYmYXBpLmFzc2VydCghMD09PW4sInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KGUmJiJzdHJpbmciPT10eXBlb2YgZSwiaW52YWxpZCBzeW1ib2wiKSYmYXBpLmFzc2VydCh0JiZOdW1iZXIuaXNJbnRlZ2VyKHQpJiYwPHQmJnQ8PTE4MjUwLCJ1bnN0YWtpbmdDb29sZG93biBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxODI1MCIpJiZhcGkuYXNzZXJ0KGkmJk51bWJlci5pc0ludGVnZXIoaSkmJjA8aSYmaTw9MTgyNTAsIm51bWJlclRyYW5zYWN0aW9ucyBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxODI1MCIpKXtjb25zdCBvPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6ZX0pO2FwaS5hc3NlcnQobnVsbCE9PW8sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KG8uaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikmJmFwaS5hc3NlcnQodm9pZCAwPT09by5zdGFraW5nRW5hYmxlZHx8ITE9PT1vLnN0YWtpbmdFbmFibGVkLCJzdGFraW5nIGFscmVhZHkgZW5hYmxlZCIpJiYoby5zdGFraW5nRW5hYmxlZD0hMCxvLnRvdGFsU3Rha2VkPSIwIixvLnVuc3Rha2luZ0Nvb2xkb3duPXQsby5udW1iZXJUcmFuc2FjdGlvbnM9aSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLG8pLGFwaS5CaWdOdW1iZXIocykuZ3QoMCkmJmF3YWl0IGFjdGlvbnMudHJhbnNmZXIoe3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6cyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6bn0pKX19LGFjdGlvbnMuc3Rha2U9YXN5bmMgYT0+e2NvbnN0e3N5bWJvbDplLHF1YW50aXR5OnQsdG86aSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6bn09YTt2YXIgczthcGkuYXNzZXJ0KCEwPT09biwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoZSYmInN0cmluZyI9PXR5cGVvZiBlJiZpJiYic3RyaW5nIj09dHlwZW9mIGkmJnQmJiJzdHJpbmciPT10eXBlb2YgdCYmIWFwaS5CaWdOdW1iZXIodCkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSYmKHM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDplfSksYT1pLnRyaW0oKSxhcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoYSksImludmFsaWQgdG8iKSYmYXBpLmFzc2VydChudWxsIT09cywic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyh0KTw9cy5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydCghMD09PXMuc3Rha2luZ0VuYWJsZWQsInN0YWtpbmcgbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHQpLmd0KDApLCJtdXN0IHN0YWtlIHBvc2l0aXZlIHF1YW50aXR5IikmJmF3YWl0IHN1YkJhbGFuY2UoYXBpLnNlbmRlcixzLHQsImJhbGFuY2VzIikmJighMT09PWF3YWl0IGFkZFN0YWtlKGEscyx0KT9hd2FpdCBhZGRCYWxhbmNlKGFwaS5zZW5kZXIscyx0LCJiYWxhbmNlcyIpOihhcGkuZW1pdCgic3Rha2UiLHthY2NvdW50OmEsc3ltYm9sOmUscXVhbnRpdHk6dH0pLCJXT1JLRVJCRUUiPT09ZSYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ3aXRuZXNzZXMiLCJ1cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHMiLHthY2NvdW50OmF9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZVN0YWtlQ2hhbmdlIix7YWNjb3VudDphLHN5bWJvbDplLHF1YW50aXR5OnR9KSkpKX0sYWN0aW9ucy5zdGFrZUZyb21Db250cmFjdD1hc3luYyBhPT57Y29uc3R7c3ltYm9sOmUscXVhbnRpdHk6dCx0bzppLGNhbGxpbmdDb250cmFjdEluZm86bn09YTt2YXIgcztuJiZhcGkuYXNzZXJ0KGUmJiJzdHJpbmciPT10eXBlb2YgZSYmaSYmInN0cmluZyI9PXR5cGVvZiBpJiZ0JiYic3RyaW5nIj09dHlwZW9mIHQmJiFhcGkuQmlnTnVtYmVyKHQpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikmJihzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6ZX0pLGE9aS50cmltKCksYXBpLmFzc2VydChhcGkuaXNWYWxpZEFjY291bnROYW1lKGEpLCJpbnZhbGlkIHRvIikmJmFwaS5hc3NlcnQobnVsbCE9PXMsInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHModCk8PXMucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoITA9PT1zLnN0YWtpbmdFbmFibGVkLCJzdGFraW5nIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcih0KS5ndCgwKSwibXVzdCBzdGFrZSBwb3NpdGl2ZSBxdWFudGl0eSIpJiZhd2FpdCBzdWJCYWxhbmNlKG4ubmFtZSxzLHQsImNvbnRyYWN0c0JhbGFuY2VzIikmJighMT09PWF3YWl0IGFkZFN0YWtlKGEscyx0KT9hd2FpdCBhZGRCYWxhbmNlKG4ubmFtZSxzLHQsImJhbGFuY2VzIik6KGFwaS5lbWl0KCJzdGFrZUZyb21Db250cmFjdCIse2FjY291bnQ6YSxzeW1ib2w6ZSxxdWFudGl0eTp0fSksIldPUktFUkJFRSI9PT1lJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6YX0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlU3Rha2VDaGFuZ2UiLHthY2NvdW50OmEsc3ltYm9sOmUscXVhbnRpdHk6dH0pKSkpfTtjb25zdCB2YWxpZGF0ZUF2YWlsYWJsZVN0YWtlPWFzeW5jKGEsdCxlKT0+e2xldCBpPWFwaS5CaWdOdW1iZXIoYS5zdGFrZSk7cmV0dXJuIGF3YWl0IGZpbmRBbmRQcm9jZXNzQWxsKCJwZW5kaW5nVW5zdGFrZXMiLHtzeW1ib2w6YS5zeW1ib2wsYWNjb3VudDphLmFjY291bnR9LGFzeW5jIGE9Pnt2YXIgZTsxPGEubnVtYmVyVHJhbnNhY3Rpb25zTGVmdCYmKGU9YXBpLkJpZ051bWJlcihhLnF1YW50aXR5KS5kaXZpZGVkQnkodC5udW1iZXJUcmFuc2FjdGlvbnMpLnRvRml4ZWQodC5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxpPWkubWludXMoYS5xdWFudGl0eUxlZnQpLnBsdXMoZSkpfSksYXBpLmFzc2VydChpLmd0ZShlKSwib3ZlcmRyYXduIHN0YWtlIil9LHN0YXJ0VW5zdGFrZT1hc3luYyhhLGUsdCk9Pntjb25zdCBpPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YSxzeW1ib2w6ZS5zeW1ib2x9KTtpZighYXBpLmFzc2VydChudWxsIT09aSwiYmFsYW5jZSBkb2VzIG5vdCBleGlzdCIpfHwhYXdhaXQgdmFsaWRhdGVBdmFpbGFibGVTdGFrZShpLGUsdCkpcmV0dXJuITE7dmFyIG49aS5zdGFrZSxzPWkucGVuZGluZ1Vuc3Rha2Usbz0xPGUubnVtYmVyVHJhbnNhY3Rpb25zP2FwaS5CaWdOdW1iZXIodCkuZGl2aWRlZEJ5KGUubnVtYmVyVHJhbnNhY3Rpb25zKS50b0ZpeGVkKGUucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTik6dDtpLnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoaS5zdGFrZSxvLGUucHJlY2lzaW9uLCExKSxpLnBlbmRpbmdVbnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoaS5wZW5kaW5nVW5zdGFrZSx0LGUucHJlY2lzaW9uLCEwKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoaS5zdGFrZSkubHQobikmJmFwaS5CaWdOdW1iZXIoaS5wZW5kaW5nVW5zdGFrZSkuZ3QocyksImNhbm5vdCBzdWJ0cmFjdCIpJiYoYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGkpLGUudG90YWxTdGFrZWQ9Y2FsY3VsYXRlQmFsYW5jZShlLnRvdGFsU3Rha2VkLG8sZS5wcmVjaXNpb24sITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsZSksIldPUktFUkJFRSI9PT1lLnN5bWJvbCYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ3aXRuZXNzZXMiLCJ1cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHMiLHthY2NvdW50OmF9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZVN0YWtlQ2hhbmdlIix7YWNjb3VudDphLHN5bWJvbDplLnN5bWJvbCxxdWFudGl0eTphcGkuQmlnTnVtYmVyKG8pLm5lZ2F0ZWQoKX0pKTtjb25zdCBsPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKTtzPTI0KmUudW5zdGFraW5nQ29vbGRvd24qMzYwMCoxZTMsbz1hcGkuQmlnTnVtYmVyKHMpLmRpdmlkZWRCeShlLm51bWJlclRyYW5zYWN0aW9ucykuaW50ZWdlclZhbHVlKGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTikscz1hcGkuQmlnTnVtYmVyKGwuZ2V0VGltZSgpKS5wbHVzKG8pLnRvTnVtYmVyKCksbz17YWNjb3VudDphLHN5bWJvbDplLnN5bWJvbCxxdWFudGl0eTp0LHF1YW50aXR5TGVmdDp0LG5leHRUcmFuc2FjdGlvblRpbWVzdGFtcDpzLG51bWJlclRyYW5zYWN0aW9uc0xlZnQ6ZS5udW1iZXJUcmFuc2FjdGlvbnMsbWlsbGlzZWNQZXJQZXJpb2Q6byx0eElEOmFwaS50cmFuc2FjdGlvbklkfTtyZXR1cm4gYXdhaXQgYXBpLmRiLmluc2VydCgicGVuZGluZ1Vuc3Rha2VzIixvKSwhMH07YWN0aW9ucy51bnN0YWtlPWFzeW5jIGE9Pnt2YXJ7c3ltYm9sOmUscXVhbnRpdHk6dCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6YX09YTthcGkuYXNzZXJ0KCEwPT09YSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoZSYmInN0cmluZyI9PXR5cGVvZiBlJiZ0JiYic3RyaW5nIj09dHlwZW9mIHQmJiFhcGkuQmlnTnVtYmVyKHQpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikmJihhPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6ZX0pLGFwaS5hc3NlcnQobnVsbCE9PWEsInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KCEwPT09YS5zdGFraW5nRW5hYmxlZCwic3Rha2luZyBub3QgZW5hYmxlZCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHModCk8PWEucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcih0KS5ndCgwKSwibXVzdCB1bnN0YWtlIHBvc2l0aXZlIHF1YW50aXR5IikmJmF3YWl0IHN0YXJ0VW5zdGFrZShhcGkuc2VuZGVyLGEsdCkmJmFwaS5lbWl0KCJ1bnN0YWtlU3RhcnQiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOmUscXVhbnRpdHk6dH0pKX07Y29uc3QgcHJvY2Vzc0NhbmNlbFVuc3Rha2U9YXN5bmMgYT0+e3ZhcnthY2NvdW50OmUsc3ltYm9sOnQscXVhbnRpdHk6aSxxdWFudGl0eUxlZnQ6bixudW1iZXJUcmFuc2FjdGlvbnNMZWZ0OnN9PWE7Y29uc3Qgbz1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmUsc3ltYm9sOnR9KSxsPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6dH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PW8sImJhbGFuY2UgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKG8ucGVuZGluZ1Vuc3Rha2UpLmd0ZShuKSwib3ZlcmRyYXduIHBlbmRpbmdVbnN0YWtlIikpe3ZhciByPW8uc3Rha2UsYT1vLnBlbmRpbmdVbnN0YWtlLGk9MTxzP2FwaS5CaWdOdW1iZXIoaSkuZGl2aWRlZEJ5KGwubnVtYmVyVHJhbnNhY3Rpb25zKS50b0ZpeGVkKGwucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTik6bjtpZihvLnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2Uoby5zdGFrZSxpLGwucHJlY2lzaW9uLCEwKSxvLnBlbmRpbmdVbnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2Uoby5wZW5kaW5nVW5zdGFrZSxuLGwucHJlY2lzaW9uLCExKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoby5wZW5kaW5nVW5zdGFrZSkubHQoYSkmJmFwaS5CaWdOdW1iZXIoby5zdGFrZSkuZ3QociksImNhbm5vdCBzdWJ0cmFjdCIpKXJldHVybiBhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsbyksbC50b3RhbFN0YWtlZD1jYWxjdWxhdGVCYWxhbmNlKGwudG90YWxTdGFrZWQsaSxsLnByZWNpc2lvbiwhMCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIixsKSxhcGkuZW1pdCgidW5zdGFrZUNhbmNlbCIse2FjY291bnQ6ZSxzeW1ib2w6dCxxdWFudGl0eTpufSksIldPUktFUkJFRSI9PT10JiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6ZX0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlU3Rha2VDaGFuZ2UiLHthY2NvdW50OmUsc3ltYm9sOnQscXVhbnRpdHk6aX0pLCEwfXJldHVybiExfTthY3Rpb25zLmNhbmNlbFVuc3Rha2U9YXN5bmMgYT0+e3Zhcnt0eElEOmUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmF9PWE7YXBpLmFzc2VydCghMD09PWEsInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KGUmJiJzdHJpbmciPT10eXBlb2YgZSwiaW52YWxpZCBwYXJhbXMiKSYmKGU9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBlbmRpbmdVbnN0YWtlcyIse2FjY291bnQ6YXBpLnNlbmRlcix0eElEOmV9KSxhcGkuYXNzZXJ0KGUsInVuc3Rha2UgZG9lcyBub3QgZXhpc3QiKSYmYXdhaXQgcHJvY2Vzc0NhbmNlbFVuc3Rha2UoZSkmJmF3YWl0IGFwaS5kYi5yZW1vdmUoInBlbmRpbmdVbnN0YWtlcyIsZSkpfSxhY3Rpb25zLmVuYWJsZURlbGVnYXRpb249YXN5bmMgYT0+e3ZhcntzeW1ib2w6ZSx1bmRlbGVnYXRpb25Db29sZG93bjp0LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppfT1hLHtlbmFibGVEZWxlZ2F0aW9uRmVlOm59PWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSxhPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkJFRSJ9KSxhPWEmJmFwaS5CaWdOdW1iZXIoYS5iYWxhbmNlKS5ndGUobiksYT12b2lkIDA9PT1ufHxhcGkuQmlnTnVtYmVyKG4pLmx0ZSgwKXx8YTtpZihhcGkuYXNzZXJ0KGEsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciAgZmVlcyIpJiZhcGkuYXNzZXJ0KCEwPT09aSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoZSYmInN0cmluZyI9PXR5cGVvZiBlLCJpbnZhbGlkIHN5bWJvbCIpJiZhcGkuYXNzZXJ0KHQmJk51bWJlci5pc0ludGVnZXIodCkmJjA8dCYmdDw9MTgyNTAsInVuZGVsZWdhdGlvbkNvb2xkb3duIG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDE4MjUwIikpe2NvbnN0IHM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDplfSk7YXBpLmFzc2VydChudWxsIT09cywic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQocy5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmYXBpLmFzc2VydCghMD09PXMuc3Rha2luZ0VuYWJsZWQsInN0YWtpbmcgbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1zLmRlbGVnYXRpb25FbmFibGVkfHwhMT09PXMuZGVsZWdhdGlvbkVuYWJsZWQsImRlbGVnYXRpb24gYWxyZWFkeSBlbmFibGVkIikmJihzLmRlbGVnYXRpb25FbmFibGVkPSEwLHMudW5kZWxlZ2F0aW9uQ29vbGRvd249dCxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHMpLGFwaS5CaWdOdW1iZXIobikuZ3QoMCkmJmF3YWl0IGFjdGlvbnMudHJhbnNmZXIoe3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6bixpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aX0pKX19LGFjdGlvbnMuZGVsZWdhdGU9YXN5bmMgdD0+e2NvbnN0e3N5bWJvbDppLHF1YW50aXR5Om4sdG86YSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6ZX09dDtpZihhcGkuYXNzZXJ0KCEwPT09ZSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoaSYmInN0cmluZyI9PXR5cGVvZiBpJiZhJiYic3RyaW5nIj09dHlwZW9mIGEmJm4mJiJzdHJpbmciPT10eXBlb2YgbiYmIWFwaS5CaWdOdW1iZXIobikuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7dmFyIHM9YS50cmltKCk7aWYoYXBpLmFzc2VydChhcGkuaXNWYWxpZEFjY291bnROYW1lKHMpLCJpbnZhbGlkIHRvIikpe3ZhciBvPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6aX0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PW8sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMobik8PW8ucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoITA9PT1vLmRlbGVnYXRpb25FbmFibGVkLCJkZWxlZ2F0aW9uIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQocyE9PWFwaS5zZW5kZXIsImNhbm5vdCBkZWxlZ2F0ZSB0byB5b3Vyc2VsZiIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIobikuZ3QoMCksIm11c3QgZGVsZWdhdGUgcG9zaXRpdmUgcXVhbnRpdHkiKSl7Y29uc3QgbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOml9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1sLCJiYWxhbmNlRnJvbSBkb2VzIG5vdCBleGlzdCIpJiZhd2FpdCB2YWxpZGF0ZUF2YWlsYWJsZVN0YWtlKGwsbyxuKSl7dm9pZCAwPT09bC5zdGFrZT8obC5zdGFrZT0iMCIsbC5wZW5kaW5nVW5zdGFrZT0iMCIsbC5kZWxlZ2F0aW9uc0luPSIwIixsLmRlbGVnYXRpb25zT3V0PSIwIixsLnBlbmRpbmdVbmRlbGVnYXRpb25zPSIwIik6dm9pZCAwPT09bC5kZWxlZ2F0aW9uc0luJiYobC5kZWxlZ2F0aW9uc0luPSIwIixsLmRlbGVnYXRpb25zT3V0PSIwIixsLnBlbmRpbmdVbmRlbGVnYXRpb25zPSIwIixsLmRlbGVnYXRlZFN0YWtlJiYoZGVsZXRlIGwuZGVsZWdhdGVkU3Rha2UsZGVsZXRlIGwucmVjZWl2ZWRTdGFrZSkpO2xldCBhPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6cyxzeW1ib2w6aX0pO251bGw9PT1hPyhhPWJhbGFuY2VUZW1wbGF0ZSxhLmFjY291bnQ9cyxhLnN5bWJvbD1pLGE9YXdhaXQgYXBpLmRiLmluc2VydCgiYmFsYW5jZXMiLGEpKTp2b2lkIDA9PT1hLnN0YWtlPyhhLnN0YWtlPSIwIixhLnBlbmRpbmdVbnN0YWtlPSIwIixhLmRlbGVnYXRpb25zSW49IjAiLGEuZGVsZWdhdGlvbnNPdXQ9IjAiLGEucGVuZGluZ1VuZGVsZWdhdGlvbnM9IjAiKTp2b2lkIDA9PT1hLmRlbGVnYXRpb25zSW4mJihhLmRlbGVnYXRpb25zSW49IjAiLGEuZGVsZWdhdGlvbnNPdXQ9IjAiLGEucGVuZGluZ1VuZGVsZWdhdGlvbnM9IjAiLGEuZGVsZWdhdGVkU3Rha2UmJihkZWxldGUgYS5kZWxlZ2F0ZWRTdGFrZSxkZWxldGUgYS5yZWNlaXZlZFN0YWtlKSk7bGV0IGU9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImRlbGVnYXRpb25zIix7dG86cyxmcm9tOmFwaS5zZW5kZXIsc3ltYm9sOml9KTtjb25zdCByPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKTt0PXIuZ2V0VGltZSgpO251bGw9PWU/KGwuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShsLnN0YWtlLG4sby5wcmVjaXNpb24sITEpLGwuZGVsZWdhdGlvbnNPdXQ9Y2FsY3VsYXRlQmFsYW5jZShsLmRlbGVnYXRpb25zT3V0LG4sby5wcmVjaXNpb24sITApLGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixsKSxhLmRlbGVnYXRpb25zSW49Y2FsY3VsYXRlQmFsYW5jZShhLmRlbGVnYXRpb25zSW4sbixvLnByZWNpc2lvbiwhMCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGEpLGU9e30sZS5mcm9tPWFwaS5zZW5kZXIsZS50bz1zLGUuc3ltYm9sPWksZS5xdWFudGl0eT1uLGUuY3JlYXRlZD10LGUudXBkYXRlZD10LGF3YWl0IGFwaS5kYi5pbnNlcnQoImRlbGVnYXRpb25zIixlKSk6KGwuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShsLnN0YWtlLG4sby5wcmVjaXNpb24sITEpLGwuZGVsZWdhdGlvbnNPdXQ9Y2FsY3VsYXRlQmFsYW5jZShsLmRlbGVnYXRpb25zT3V0LG4sby5wcmVjaXNpb24sITApLGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixsKSxhLmRlbGVnYXRpb25zSW49Y2FsY3VsYXRlQmFsYW5jZShhLmRlbGVnYXRpb25zSW4sbixvLnByZWNpc2lvbiwhMCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGEpLGUucXVhbnRpdHk9Y2FsY3VsYXRlQmFsYW5jZShlLnF1YW50aXR5LG4sby5wcmVjaXNpb24sITApLGUudXBkYXRlZD10LGF3YWl0IGFwaS5kYi51cGRhdGUoImRlbGVnYXRpb25zIixlKSksYXBpLmVtaXQoImRlbGVnYXRlIix7dG86cyxzeW1ib2w6aSxxdWFudGl0eTpufSksIldPUktFUkJFRSI9PT1pJiYoYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ3aXRuZXNzZXMiLCJ1cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHMiLHthY2NvdW50OmFwaS5zZW5kZXJ9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6c30pKSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZVN0YWtlQ2hhbmdlIix7YWNjb3VudDpzLHN5bWJvbDppLHF1YW50aXR5Om4sZGVsZWdhdGVkOiEwfSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6aSxxdWFudGl0eTphcGkuQmlnTnVtYmVyKG4pLm5lZ2F0ZWQoKX0pfX19fX0sYWN0aW9ucy51bmRlbGVnYXRlPWFzeW5jIGE9Pntjb25zdHtzeW1ib2w6ZSxxdWFudGl0eTp0LGZyb206aSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6bn09YTtpZihhcGkuYXNzZXJ0KCEwPT09biwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoZSYmInN0cmluZyI9PXR5cGVvZiBlJiZpJiYic3RyaW5nIj09dHlwZW9mIGkmJnQmJiJzdHJpbmciPT10eXBlb2YgdCYmIWFwaS5CaWdOdW1iZXIodCkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7dmFyIHM9aS50cmltKCk7aWYoYXBpLmFzc2VydCgzPD1zLmxlbmd0aCYmcy5sZW5ndGg8PTE2LCJpbnZhbGlkIGZyb20iKSl7dmFyIG89YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDplfSk7aWYoYXBpLmFzc2VydChudWxsIT09bywic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyh0KTw9by5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydCghMD09PW8uZGVsZWdhdGlvbkVuYWJsZWQsImRlbGVnYXRpb24gbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydChzIT09YXBpLnNlbmRlciwiY2Fubm90IHVuZGVsZWdhdGUgZnJvbSB5b3Vyc2VsZiIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIodCkuZ3QoMCksIm11c3QgdW5kZWxlZ2F0ZSBwb3NpdGl2ZSBxdWFudGl0eSIpKXtjb25zdCBsPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6ZX0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWwsImJhbGFuY2VUbyBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIobC5kZWxlZ2F0aW9uc091dCkuZ3RlKHQpLCJvdmVyZHJhd24gZGVsZWdhdGlvbiIpKXtjb25zdCByPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6cyxzeW1ib2w6ZX0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXIsImJhbGFuY2VGcm9tIGRvZXMgbm90IGV4aXN0Iikpe2NvbnN0IGM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImRlbGVnYXRpb25zIix7dG86cyxmcm9tOmFwaS5zZW5kZXIsc3ltYm9sOmV9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1jLCJkZWxlZ2F0aW9uIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihjLnF1YW50aXR5KS5ndGUodCksIm92ZXJkcmF3biBkZWxlZ2F0aW9uIikpe2wucGVuZGluZ1VuZGVsZWdhdGlvbnM9Y2FsY3VsYXRlQmFsYW5jZShyLnBlbmRpbmdVbmRlbGVnYXRpb25zLHQsby5wcmVjaXNpb24sITApLGwuZGVsZWdhdGlvbnNPdXQ9Y2FsY3VsYXRlQmFsYW5jZShsLmRlbGVnYXRpb25zT3V0LHQsby5wcmVjaXNpb24sITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixsKSxyLmRlbGVnYXRpb25zSW49Y2FsY3VsYXRlQmFsYW5jZShyLmRlbGVnYXRpb25zSW4sdCxvLnByZWNpc2lvbiwhMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLHIpLGMucXVhbnRpdHk9Y2FsY3VsYXRlQmFsYW5jZShjLnF1YW50aXR5LHQsby5wcmVjaXNpb24sITEpLGFwaS5CaWdOdW1iZXIoYy5xdWFudGl0eSkuZ3QoMCk/YXdhaXQgYXBpLmRiLnVwZGF0ZSgiZGVsZWdhdGlvbnMiLGMpOmF3YWl0IGFwaS5kYi5yZW1vdmUoImRlbGVnYXRpb25zIixjKTtjb25zdCBwPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKTthPTI0Km8udW5kZWxlZ2F0aW9uQ29vbGRvd24qMzYwMCoxZTMsYT1wLmdldFRpbWUoKSthLGE9e2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6by5zeW1ib2wscXVhbnRpdHk6dCxjb21wbGV0ZVRpbWVzdGFtcDphLHR4SUQ6YXBpLnRyYW5zYWN0aW9uSWR9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBlbmRpbmdVbmRlbGVnYXRpb25zIixhKSxhcGkuZW1pdCgidW5kZWxlZ2F0ZVN0YXJ0Iix7ZnJvbTpzLHN5bWJvbDplLHF1YW50aXR5OnR9KSwiV09SS0VSQkVFIj09PWUmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDpzfSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6cyxzeW1ib2w6ZSxxdWFudGl0eTphcGkuQmlnTnVtYmVyKHQpLm5lZ2F0ZWQoKSxkZWxlZ2F0ZWQ6ITB9KX19fX19fX07Y29uc3QgcHJvY2Vzc1VuZGVsZWdhdGlvbj1hc3luYyBhPT57dmFye2FjY291bnQ6ZSxzeW1ib2w6dCxxdWFudGl0eTppfT1hO2NvbnN0IG49YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDplLHN5bWJvbDp0fSk7dmFyIHMsbyxsPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6dH0pO2FwaS5hc3NlcnQobnVsbCE9PW4sImJhbGFuY2UgZG9lcyBub3QgZXhpc3QiKSYmKHM9bi5zdGFrZSxvPW4ucGVuZGluZ1VuZGVsZWdhdGlvbnMsbi5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKG4uc3Rha2UsaSxsLnByZWNpc2lvbiwhMCksbi5wZW5kaW5nVW5kZWxlZ2F0aW9ucz1jYWxjdWxhdGVCYWxhbmNlKG4ucGVuZGluZ1VuZGVsZWdhdGlvbnMsaSxsLnByZWNpc2lvbiwhMSksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKG4ucGVuZGluZ1VuZGVsZWdhdGlvbnMpLmx0KG8pJiZhcGkuQmlnTnVtYmVyKG4uc3Rha2UpLmd0KHMpLCJjYW5ub3Qgc3VidHJhY3QiKSYmKGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixuKSxhd2FpdCBhcGkuZGIucmVtb3ZlKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIsYSksYXBpLmVtaXQoInVuZGVsZWdhdGVEb25lIix7YWNjb3VudDplLHN5bWJvbDp0LHF1YW50aXR5Oml9KSwiV09SS0VSQkVFIj09PXQmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDplfSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6ZSxzeW1ib2w6dCxxdWFudGl0eTppfSkpKX07YWN0aW9ucy5jaGVja1BlbmRpbmdVbmRlbGVnYXRpb25zPWFzeW5jKCk9PntpZihhcGkuYXNzZXJ0KCJudWxsIj09PWFwaS5zZW5kZXIsIm5vdCBhdXRob3JpemVkIikpe2NvbnN0IG49bmV3IERhdGUoYCR7YXBpLmhpdmVCbG9ja1RpbWVzdGFtcH0uMDAwWmApO3ZhciBhPW4uZ2V0VGltZSgpO2xldCBlPWF3YWl0IGFwaS5kYi5maW5kKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIse2NvbXBsZXRlVGltZXN0YW1wOnskbHRlOmF9fSksdD1lLmxlbmd0aDtmb3IoOzA8dDspe2ZvcihsZXQgYT0wO2E8dDthKz0xKXt2YXIgaT1lW2FdO2F3YWl0IHByb2Nlc3NVbmRlbGVnYXRpb24oaSl9ZT1hd2FpdCBhcGkuZGIuZmluZCgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLHtjb21wbGV0ZVRpbWVzdGFtcDp7JGx0ZTphfX0pLHQ9ZS5sZW5ndGh9fX07"}}}

H2
H3
H4
3 columns
2 columns
1 column
Join the conversation now
Logo
Center