Tokens Smart Contract

in #steem-engine5 years ago (edited)

{
"id": "ssc-mainnet1",
"json": {
"contractName": "contract",
"contractAction": "update",
"contractPayload": {
"name": "tokens",
"params": "",
"code": "YWN0aW9ucy5jcmVhdGVTU0M9KGFzeW5jKCk9PntsZXQgYT1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoInRva2VucyIpO2lmKCExPT09YSl7YXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ0b2tlbnMiLFsic3ltYm9sIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiYmFsYW5jZXMiLFsiYWNjb3VudCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoImNvbnRyYWN0c0JhbGFuY2VzIixbImFjY291bnQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwYXJhbXMiKTtjb25zdCBhPXt0b2tlbkNyZWF0aW9uRmVlOiIwIn07YXdhaXQgYXBpLmRiLmluc2VydCgicGFyYW1zIixhKX1lbHNle2NvbnN0IGE9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO2EuZW5hYmxlRGVsZWdhdGlvbkZlZT0iMTAwMCIsYS5lbmFibGVTdGFraW5nRmVlPSIxMDAwIixhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLGEpfSExPT09KGE9YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJwZW5kaW5nVW5zdGFrZXMiKSkmJmF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGVuZGluZ1Vuc3Rha2VzIixbImFjY291bnQiLCJ1bnN0YWtlQ29tcGxldGVUaW1lc3RhbXAiXSksITE9PT0oYT1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoImRlbGVnYXRpb25zIikpJiYoYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJkZWxlZ2F0aW9ucyIsWyJmcm9tIiwidG8iXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIsWyJhY2NvdW50IiwiY29tcGxldGVUaW1lc3RhbXAiXSkpO2xldCBlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6IlNURUVNUCJ9KTtlJiZlLnByZWNpc2lvbjw4JiYoZS5wcmVjaXNpb249OCxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLGUpKSx2b2lkIDAhPT0oZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOiJFTkcifSkpLnN0YWtpbmdFbmFibGVkJiYhMSE9PWUuc3Rha2luZ0VuYWJsZWR8fChlLnN0YWtpbmdFbmFibGVkPSEwLGUudG90YWxTdGFrZWQ9IjAiLGUudW5zdGFraW5nQ29vbGRvd249NDAsZS5udW1iZXJUcmFuc2FjdGlvbnM9NCxlLmRlbGVnYXRpb25FbmFibGVkPSEwLGUudW5kZWxlZ2F0aW9uQ29vbGRvd249Nyxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLGUpKX0pO2NvbnN0IGJhbGFuY2VUZW1wbGF0ZT17YWNjb3VudDpudWxsLHN5bWJvbDpudWxsLGJhbGFuY2U6IjAiLHN0YWtlOiIwIixwZW5kaW5nVW5zdGFrZToiMCIsZGVsZWdhdGlvbnNJbjoiMCIsZGVsZWdhdGlvbnNPdXQ6IjAiLHBlbmRpbmdVbmRlbGVnYXRpb25zOiIwIn0sY2FsY3VsYXRlQmFsYW5jZT0oYSxlLHQsaSk9Pmk/YXBpLkJpZ051bWJlcihhKS5wbHVzKGUpLnRvRml4ZWQodCk6YXBpLkJpZ051bWJlcihhKS5taW51cyhlKS50b0ZpeGVkKHQpLGNvdW50RGVjaW1hbHM9YT0+YXBpLkJpZ051bWJlcihhKS5kcCgpLGFkZFN0YWtlPWFzeW5jKGEsZSx0KT0+e2xldCBpPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YSxzeW1ib2w6ZS5zeW1ib2x9KTtudWxsPT09aSYmKChpPWJhbGFuY2VUZW1wbGF0ZSkuYWNjb3VudD1hLGkuc3ltYm9sPWUuc3ltYm9sLGk9YXdhaXQgYXBpLmRiLmluc2VydCgiYmFsYW5jZXMiLGkpKSx2b2lkIDA9PT1pLnN0YWtlJiYoaS5zdGFrZT0iMCIsaS5wZW5kaW5nVW5zdGFrZT0iMCIpO2NvbnN0IHM9aS5zdGFrZTtyZXR1cm4gaS5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGkuc3Rha2UsdCxlLnByZWNpc2lvbiwhMCksISFhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoaS5zdGFrZSkuZ3QocyksImNhbm5vdCBhZGQiKSYmKGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixpKSx2b2lkIDA9PT1lLnRvdGFsU3Rha2VkJiYoZS50b3RhbFN0YWtlZD0iMCIpLGUudG90YWxTdGFrZWQ9Y2FsY3VsYXRlQmFsYW5jZShlLnRvdGFsU3Rha2VkLHQsZS5wcmVjaXNpb24sITApLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsZSksITApfSxzdWJTdGFrZT1hc3luYyhhLGUsdCk9Pntjb25zdCBpPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YSxzeW1ib2w6ZS5zeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1pLCJiYWxhbmNlIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihpLnN0YWtlKS5ndGUodCksIm92ZXJkcmF3biBzdGFrZSIpKXtjb25zdCBhPWkuc3Rha2Uscz1pLnBlbmRpbmdVbnN0YWtlO2lmKGkuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShpLnN0YWtlLHQsZS5wcmVjaXNpb24sITEpLGkucGVuZGluZ1Vuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShpLnBlbmRpbmdVbnN0YWtlLHQsZS5wcmVjaXNpb24sITApLGFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihpLnN0YWtlKS5sdChhKSYmYXBpLkJpZ051bWJlcihpLnBlbmRpbmdVbnN0YWtlKS5ndChzKSwiY2Fubm90IHN1YnRyYWN0IikpcmV0dXJuIGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixpKSwhMH1yZXR1cm4hMX0sc3ViQmFsYW5jZT1hc3luYyhhLGUsdCxpKT0+e2NvbnN0IHM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoaSx7YWNjb3VudDphLHN5bWJvbDplLnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXMsImJhbGFuY2UgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHMuYmFsYW5jZSkuZ3RlKHQpLCJvdmVyZHJhd24gYmFsYW5jZSIpKXtjb25zdCBhPXMuYmFsYW5jZTtpZihzLmJhbGFuY2U9Y2FsY3VsYXRlQmFsYW5jZShzLmJhbGFuY2UsdCxlLnByZWNpc2lvbiwhMSksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHMuYmFsYW5jZSkubHQoYSksImNhbm5vdCBzdWJ0cmFjdCIpKXJldHVybiBhd2FpdCBhcGkuZGIudXBkYXRlKGkscyksITB9cmV0dXJuITF9LGFkZEJhbGFuY2U9YXN5bmMoYSxlLHQsaSk9PntsZXQgcz1hd2FpdCBhcGkuZGIuZmluZE9uZShpLHthY2NvdW50OmEsc3ltYm9sOmUuc3ltYm9sfSk7aWYobnVsbD09PXMpcmV0dXJuKHM9YmFsYW5jZVRlbXBsYXRlKS5hY2NvdW50PWEscy5zeW1ib2w9ZS5zeW1ib2wscy5iYWxhbmNlPXQsYXdhaXQgYXBpLmRiLmluc2VydChpLHMpLCEwO2NvbnN0IG49cy5iYWxhbmNlO3JldHVybiBzLmJhbGFuY2U9Y2FsY3VsYXRlQmFsYW5jZShzLmJhbGFuY2UsdCxlLnByZWNpc2lvbiwhMCksISFhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocy5iYWxhbmNlKS5ndChuKSwiY2Fubm90IGFkZCIpJiYoYXdhaXQgYXBpLmRiLnVwZGF0ZShpLHMpLCEwKX07YWN0aW9ucy51cGRhdGVQYXJhbXM9KGFzeW5jIGE9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtjb25zdHt0b2tlbkNyZWF0aW9uRmVlOmV9PWEsdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7dC50b2tlbkNyZWF0aW9uRmVlPWUsYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIix0KX0pLGFjdGlvbnMudXBkYXRlVXJsPShhc3luYyBhPT57Y29uc3R7dXJsOmUsc3ltYm9sOnR9PWE7aWYoYXBpLmFzc2VydCh0JiYic3RyaW5nIj09dHlwZW9mIHQmJmUmJiJzdHJpbmciPT10eXBlb2YgZSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChlLmxlbmd0aDw9MjU1LCJpbnZhbGlkIHVybDogbWF4IGxlbmd0aCBvZiAyNTUiKSl7Y29uc3QgYT1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnR9KTtpZihhJiZhcGkuYXNzZXJ0KGEuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikpdHJ5e2NvbnN0IHQ9SlNPTi5wYXJzZShhLm1ldGFkYXRhKTthcGkuYXNzZXJ0KHQmJnQudXJsLCJhbiBlcnJvciBvY2N1cmVkIHdoZW4gdHJ5aW5nIHRvIHVwZGF0ZSB0aGUgdXJsIikmJih0LnVybD1lLGEubWV0YWRhdGE9SlNPTi5zdHJpbmdpZnkodCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIixhKSl9Y2F0Y2goYSl7fX19KSxhY3Rpb25zLnVwZGF0ZU1ldGFkYXRhPShhc3luYyBhPT57Y29uc3R7bWV0YWRhdGE6ZSxzeW1ib2w6dH09YTtpZihhcGkuYXNzZXJ0KHQmJiJzdHJpbmciPT10eXBlb2YgdCYmZSYmIm9iamVjdCI9PXR5cGVvZiBlLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBhPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6dH0pO2lmKGEmJmFwaS5hc3NlcnQoYS5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl0cnl7Y29uc3QgdD1KU09OLnN0cmluZ2lmeShlKTthcGkuYXNzZXJ0KHQubGVuZ3RoPD0xZTMsImludmFsaWQgbWV0YWRhdGE6IG1heCBsZW5ndGggb2YgMTAwMCIpJiYoYS5tZXRhZGF0YT10LGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsYSkpfWNhdGNoKGEpe319fSksYWN0aW9ucy51cGRhdGVQcmVjaXNpb249KGFzeW5jIGE9Pntjb25zdHtzeW1ib2w6ZSxwcmVjaXNpb246dCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aX09YTtpZihhcGkuYXNzZXJ0KCEwPT09aSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoZSYmInN0cmluZyI9PXR5cGVvZiBlKSYmYXBpLmFzc2VydCh0PjAmJnQ8PTgmJk51bWJlci5pc0ludGVnZXIodCksImludmFsaWQgcHJlY2lzaW9uIikpe2NvbnN0IGE9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDplfSk7YSYmYXBpLmFzc2VydChhLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpJiZhcGkuYXNzZXJ0KHQ+YS5wcmVjaXNpb24sInByZWNpc2lvbiBjYW4gb25seSBiZSBpbmNyZWFzZWQiKSYmKGEucHJlY2lzaW9uPXQsYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIixhKSl9fSksYWN0aW9ucy50cmFuc2Zlck93bmVyc2hpcD0oYXN5bmMgYT0+e2NvbnN0e3N5bWJvbDplLHRvOnQsaXNTaWduZWRXaXRoQWN0aXZlS2V5Oml9PWE7aWYoYXBpLmFzc2VydCghMD09PWksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KGUmJiJzdHJpbmciPT10eXBlb2YgZSYmdCYmInN0cmluZyI9PXR5cGVvZiB0LCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBhPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6ZX0pO2lmKGEmJmFwaS5hc3NlcnQoYS5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl7Y29uc3QgZT10LnRyaW0oKTthcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZSksImludmFsaWQgdG8iKSYmKGEuaXNzdWVyPWUsYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIixhKSl9fX0pLGFjdGlvbnMuY3JlYXRlPShhc3luYyBhPT57Y29uc3R7bmFtZTplLHN5bWJvbDp0LHVybDppLHByZWNpc2lvbjpzLG1heFN1cHBseTpuLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTpvfT1hLGw9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHt0b2tlbkNyZWF0aW9uRmVlOnB9PWwsYz1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJFTkcifSkscj0hIWFwaS5CaWdOdW1iZXIocCkubHRlKDApfHxjJiZhcGkuQmlnTnVtYmVyKGMuYmFsYW5jZSkuZ3RlKHApO2lmKGFwaS5hc3NlcnQociwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSBjcmVhdGlvbiBmZWVzIikmJmFwaS5hc3NlcnQoITA9PT1vLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChlJiYic3RyaW5nIj09dHlwZW9mIGUmJnQmJiJzdHJpbmciPT10eXBlb2YgdCYmKHZvaWQgMD09PWl8fGkmJiJzdHJpbmciPT10eXBlb2YgaSkmJihzJiYibnVtYmVyIj09dHlwZW9mIHN8fDA9PT1zKSYmbiYmInN0cmluZyI9PXR5cGVvZiBuJiYhYXBpLkJpZ051bWJlcihuKS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYSh0KSYmYXBpLnZhbGlkYXRvci5pc1VwcGVyY2FzZSh0KSYmdC5sZW5ndGg+MCYmdC5sZW5ndGg8PTEwLCJpbnZhbGlkIHN5bWJvbDogdXBwZXJjYXNlIGxldHRlcnMgb25seSwgbWF4IGxlbmd0aCBvZiAxMCIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMoYXBpLnZhbGlkYXRvci5ibGFja2xpc3QoZSwiICIpKSYmZS5sZW5ndGg+MCYmZS5sZW5ndGg8PTUwLCJpbnZhbGlkIG5hbWU6IGxldHRlcnMsIG51bWJlcnMsIHdoaXRlc3BhY2VzIG9ubHksIG1heCBsZW5ndGggb2YgNTAiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1pfHxpLmxlbmd0aDw9MjU1LCJpbnZhbGlkIHVybDogbWF4IGxlbmd0aCBvZiAyNTUiKSYmYXBpLmFzc2VydChzPj0wJiZzPD04JiZOdW1iZXIuaXNJbnRlZ2VyKHMpLCJpbnZhbGlkIHByZWNpc2lvbiIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIobikuZ3QoMCksIm1heFN1cHBseSBtdXN0IGJlIHBvc2l0aXZlIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihuKS5sdGUoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLGBtYXhTdXBwbHkgbXVzdCBiZSBsb3dlciB0aGFuICR7TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ9YCkpe2NvbnN0IGE9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDp0fSk7aWYoYXBpLmFzc2VydChudWxsPT09YSwic3ltYm9sIGFscmVhZHkgZXhpc3RzIikpe2xldCBhPXt1cmw6dm9pZCAwPT09aT8iIjppfTthPUpTT04uc3RyaW5naWZ5KGEpO2NvbnN0IGw9e2lzc3VlcjphcGkuc2VuZGVyLHN5bWJvbDp0LG5hbWU6ZSxtZXRhZGF0YTphLHByZWNpc2lvbjpzLG1heFN1cHBseTphcGkuQmlnTnVtYmVyKG4pLnRvRml4ZWQocyksc3VwcGx5OiIwIixjaXJjdWxhdGluZ1N1cHBseToiMCIsc3Rha2luZ0VuYWJsZWQ6ITEsdW5zdGFraW5nQ29vbGRvd246MSxkZWxlZ2F0aW9uRW5hYmxlZDohMSx1bmRlbGVnYXRpb25Db29sZG93bjowfTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJ0b2tlbnMiLGwpLGFwaS5CaWdOdW1iZXIocCkuZ3QoMCkmJmF3YWl0IGFjdGlvbnMudHJhbnNmZXIoe3RvOiJudWxsIixzeW1ib2w6IkVORyIscXVhbnRpdHk6cCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6b30pfX19KSxhY3Rpb25zLmlzc3VlPShhc3luYyBhPT57Y29uc3R7dG86ZSxzeW1ib2w6dCxxdWFudGl0eTppLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTpzfT1hO2lmKGFwaS5hc3NlcnQoITA9PT1zLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChlJiYic3RyaW5nIj09dHlwZW9mIGUmJnQmJiJzdHJpbmciPT10eXBlb2YgdCYmaSYmInN0cmluZyI9PXR5cGVvZiBpJiYhYXBpLkJpZ051bWJlcihpKS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBhPWUudHJpbSgpLHM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDp0fSk7aWYoYXBpLmFzc2VydChudWxsIT09cywic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQocy5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJub3QgYWxsb3dlZCB0byBpc3N1ZSB0b2tlbnMiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKGkpPD1zLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoaSkuZ3QoMCksIm11c3QgaXNzdWUgcG9zaXRpdmUgcXVhbnRpdHkiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHMubWF4U3VwcGx5KS5taW51cyhzLnN1cHBseSkuZ3RlKGkpLCJxdWFudGl0eSBleGNlZWRzIGF2YWlsYWJsZSBzdXBwbHkiKSYmYXBpLmFzc2VydChhcGkuaXNWYWxpZEFjY291bnROYW1lKGEpLCJpbnZhbGlkIHRvIikpe2xldCBlPWF3YWl0IGFkZEJhbGFuY2Uocy5pc3N1ZXIscyxpLCJiYWxhbmNlcyIpOyEwPT09ZSYmYSE9PXMuaXNzdWVyJiZhd2FpdCBzdWJCYWxhbmNlKHMuaXNzdWVyLHMsaSwiYmFsYW5jZXMiKSYmITE9PT0oZT1hd2FpdCBhZGRCYWxhbmNlKGEscyxpLCJiYWxhbmNlcyIpKSYmYXdhaXQgYWRkQmFsYW5jZShzLmlzc3VlcixzLGksImJhbGFuY2VzIiksITA9PT1lJiYocy5zdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZShzLnN1cHBseSxpLHMucHJlY2lzaW9uLCEwKSwibnVsbCIhPT1hJiYocy5jaXJjdWxhdGluZ1N1cHBseT1jYWxjdWxhdGVCYWxhbmNlKHMuY2lyY3VsYXRpbmdTdXBwbHksaSxzLnByZWNpc2lvbiwhMCkpLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIscyksYXBpLmVtaXQoInRyYW5zZmVyRnJvbUNvbnRyYWN0Iix7ZnJvbToidG9rZW5zIix0bzphLHN5bWJvbDp0LHF1YW50aXR5Oml9KSl9fX0pLGFjdGlvbnMuaXNzdWVUb0NvbnRyYWN0PShhc3luYyBhPT57Y29uc3R7dG86ZSxzeW1ib2w6dCxxdWFudGl0eTppLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTpzfT1hO2lmKGFwaS5hc3NlcnQoITA9PT1zLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChlJiYic3RyaW5nIj09dHlwZW9mIGUmJnQmJiJzdHJpbmciPT10eXBlb2YgdCYmaSYmInN0cmluZyI9PXR5cGVvZiBpJiYhYXBpLkJpZ051bWJlcihpKS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBhPWUudHJpbSgpLHM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDp0fSk7aWYoYXBpLmFzc2VydChudWxsIT09cywic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQocy5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJub3QgYWxsb3dlZCB0byBpc3N1ZSB0b2tlbnMiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKGkpPD1zLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoaSkuZ3QoMCksIm11c3QgaXNzdWUgcG9zaXRpdmUgcXVhbnRpdHkiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHMubWF4U3VwcGx5KS5taW51cyhzLnN1cHBseSkuZ3RlKGkpLCJxdWFudGl0eSBleGNlZWRzIGF2YWlsYWJsZSBzdXBwbHkiKSYmYXBpLmFzc2VydChhLmxlbmd0aD49MyYmYS5sZW5ndGg8PTUwLCJpbnZhbGlkIHRvIikpeyEwPT09YXdhaXQgYWRkQmFsYW5jZShhLHMsaSwiY29udHJhY3RzQmFsYW5jZXMiKSYmKHMuc3VwcGx5PWNhbGN1bGF0ZUJhbGFuY2Uocy5zdXBwbHksaSxzLnByZWNpc2lvbiwhMCksIm51bGwiIT09YSYmKHMuY2lyY3VsYXRpbmdTdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZShzLmNpcmN1bGF0aW5nU3VwcGx5LGkscy5wcmVjaXNpb24sITApKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHMpLGFwaS5lbWl0KCJpc3N1ZVRvQ29udHJhY3QiLHtmcm9tOiJ0b2tlbnMiLHRvOmEsc3ltYm9sOnQscXVhbnRpdHk6aX0pKX19fSksYWN0aW9ucy50cmFuc2Zlcj0oYXN5bmMgYT0+e2NvbnN0e3RvOmUsc3ltYm9sOnQscXVhbnRpdHk6aSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6c309YTtpZihhcGkuYXNzZXJ0KCEwPT09cywieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoZSYmInN0cmluZyI9PXR5cGVvZiBlJiZ0JiYic3RyaW5nIj09dHlwZW9mIHQmJmkmJiJzdHJpbmciPT10eXBlb2YgaSYmIWFwaS5CaWdOdW1iZXIoaSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgYT1lLnRyaW0oKTtpZihhcGkuYXNzZXJ0KGEhPT1hcGkuc2VuZGVyLCJjYW5ub3QgdHJhbnNmZXIgdG8gc2VsZiIpJiZhcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoYSksImludmFsaWQgdG8iKSl7Y29uc3QgZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnR9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1lLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKGkpPD1lLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoaSkuZ3QoMCksIm11c3QgdHJhbnNmZXIgcG9zaXRpdmUgcXVhbnRpdHkiKSYmYXdhaXQgc3ViQmFsYW5jZShhcGkuc2VuZGVyLGUsaSwiYmFsYW5jZXMiKSl7cmV0dXJuITE9PT1hd2FpdCBhZGRCYWxhbmNlKGEsZSxpLCJiYWxhbmNlcyIpPyhhd2FpdCBhZGRCYWxhbmNlKGFwaS5zZW5kZXIsZSxpLCJiYWxhbmNlcyIpLCExKTooIm51bGwiPT09YSYmKGUuY2lyY3VsYXRpbmdTdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZShlLmNpcmN1bGF0aW5nU3VwcGx5LGksZS5wcmVjaXNpb24sITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsZSkpLGFwaS5lbWl0KCJ0cmFuc2ZlciIse2Zyb206YXBpLnNlbmRlcix0bzphLHN5bWJvbDp0LHF1YW50aXR5Oml9KSwhMCl9fX1yZXR1cm4hMX0pLGFjdGlvbnMudHJhbnNmZXJUb0NvbnRyYWN0PShhc3luYyBhPT57Y29uc3R7dG86ZSxzeW1ib2w6dCxxdWFudGl0eTppLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTpzfT1hO2lmKGFwaS5hc3NlcnQoITA9PT1zLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChlJiYic3RyaW5nIj09dHlwZW9mIGUmJnQmJiJzdHJpbmciPT10eXBlb2YgdCYmaSYmInN0cmluZyI9PXR5cGVvZiBpJiYhYXBpLkJpZ051bWJlcihpKS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBhPWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7aWYoYXBpLmFzc2VydChhIT09YXBpLnNlbmRlciwiY2Fubm90IHRyYW5zZmVyIHRvIHNlbGYiKSYmYXBpLmFzc2VydChhLmxlbmd0aD49MyYmYS5sZW5ndGg8PTUwLCJpbnZhbGlkIHRvIikpe2NvbnN0IGU9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDp0fSk7aWYoYXBpLmFzc2VydChudWxsIT09ZSwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhpKTw9ZS5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGkpLmd0KDApLCJtdXN0IHRyYW5zZmVyIHBvc2l0aXZlIHF1YW50aXR5IikmJmF3YWl0IHN1YkJhbGFuY2UoYXBpLnNlbmRlcixlLGksImJhbGFuY2VzIikpeyExPT09YXdhaXQgYWRkQmFsYW5jZShhLGUsaSwiY29udHJhY3RzQmFsYW5jZXMiKT9hd2FpdCBhZGRCYWxhbmNlKGFwaS5zZW5kZXIsZSxpLCJiYWxhbmNlcyIpOigibnVsbCI9PT1hJiYoZS5jaXJjdWxhdGluZ1N1cHBseT1jYWxjdWxhdGVCYWxhbmNlKGUuY2lyY3VsYXRpbmdTdXBwbHksaSxlLnByZWNpc2lvbiwhMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIixlKSksYXBpLmVtaXQoInRyYW5zZmVyVG9Db250cmFjdCIse2Zyb206YXBpLnNlbmRlcix0bzphLHN5bWJvbDp0LHF1YW50aXR5Oml9KSl9fX19KSxhY3Rpb25zLnRyYW5zZmVyRnJvbUNvbnRyYWN0PShhc3luYyBhPT57aWYoYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCIpKXtjb25zdHtmcm9tOmUsdG86dCxzeW1ib2w6aSxxdWFudGl0eTpzLHR5cGU6bixpc1NpZ25lZFdpdGhBY3RpdmVLZXk6b309YSxsPVsidXNlciIsImNvbnRyYWN0Il07aWYoYXBpLmFzc2VydCghMD09PW8sInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHQmJiJzdHJpbmciPT10eXBlb2YgdCYmZSYmInN0cmluZyI9PXR5cGVvZiBlJiZpJiYic3RyaW5nIj09dHlwZW9mIGkmJm4mJmwuaW5jbHVkZXMobikmJnMmJiJzdHJpbmciPT10eXBlb2YgcyYmIWFwaS5CaWdOdW1iZXIocykuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgYT10LnRyaW0oKSxvPSJ1c2VyIj09PW4/ImJhbGFuY2VzIjoiY29udHJhY3RzQmFsYW5jZXMiO2lmKGFwaS5hc3NlcnQoInVzZXIiPT09bnx8ImNvbnRyYWN0Ij09PW4mJmEhPT1lLCJjYW5ub3QgdHJhbnNmZXIgdG8gc2VsZiIpKXtjb25zdCB0PSJ1c2VyIj09PW4/YXBpLmlzVmFsaWRBY2NvdW50TmFtZShhKTphLmxlbmd0aD49MyYmYS5sZW5ndGg8PTUwO2lmKGFwaS5hc3NlcnQoITA9PT10LCJpbnZhbGlkIHRvIikpe2NvbnN0IHQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDppfSk7aWYoYXBpLmFzc2VydChudWxsIT09dCwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhzKTw9dC5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHMpLmd0KDApLCJtdXN0IHRyYW5zZmVyIHBvc2l0aXZlIHF1YW50aXR5IikmJmF3YWl0IHN1YkJhbGFuY2UoZSx0LHMsImNvbnRyYWN0c0JhbGFuY2VzIikpeyExPT09YXdhaXQgYWRkQmFsYW5jZShhLHQscyxvKT9hd2FpdCBhZGRCYWxhbmNlKGUsdCxzLCJjb250cmFjdHNCYWxhbmNlcyIpOigibnVsbCI9PT1hJiYodC5jaXJjdWxhdGluZ1N1cHBseT1jYWxjdWxhdGVCYWxhbmNlKHQuY2lyY3VsYXRpbmdTdXBwbHkscyx0LnByZWNpc2lvbiwhMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0KSksYXBpLmVtaXQoInRyYW5zZmVyRnJvbUNvbnRyYWN0Iix7ZnJvbTplLHRvOmEsc3ltYm9sOmkscXVhbnRpdHk6c30pKX19fX19fSk7Y29uc3QgcHJvY2Vzc1Vuc3Rha2U9YXN5bmMgYT0+e2NvbnN0e2FjY291bnQ6ZSxzeW1ib2w6dCxxdWFudGl0eTppLHF1YW50aXR5TGVmdDpzLG51bWJlclRyYW5zYWN0aW9uc0xlZnQ6bn09YSxvPWEsbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmUsc3ltYm9sOnR9KSxwPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6dH0pO2xldCBjPTA7aWYoYXBpLmFzc2VydChudWxsIT09bCwiYmFsYW5jZSBkb2VzIG5vdCBleGlzdCIpJiYoMT09PW4/KGM9cyxhd2FpdCBhcGkuZGIucmVtb3ZlKCJwZW5kaW5nVW5zdGFrZXMiLGEpKTooYz1hcGkuQmlnTnVtYmVyKGkpLmRpdmlkZWRCeShwLm51bWJlclRyYW5zYWN0aW9ucykudG9GaXhlZChwLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLG8ucXVhbnRpdHlMZWZ0PWFwaS5CaWdOdW1iZXIoby5xdWFudGl0eUxlZnQpLm1pbnVzKGMpLnRvRml4ZWQocC5wcmVjaXNpb24pLG8ubnVtYmVyVHJhbnNhY3Rpb25zTGVmdC09MSxvLm5leHRUcmFuc2FjdGlvblRpbWVzdGFtcD1hcGkuQmlnTnVtYmVyKG8ubmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wKS5wbHVzKG8ubWlsbGlzZWNQZXJQZXJpb2QpLnRvTnVtYmVyKCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGVuZGluZ1Vuc3Rha2VzIixvKSksYXBpLkJpZ051bWJlcihjKS5ndCgwKSkpe2NvbnN0IGE9bC5iYWxhbmNlLGk9bC5wZW5kaW5nVW5zdGFrZTtsLmJhbGFuY2U9Y2FsY3VsYXRlQmFsYW5jZShsLmJhbGFuY2UsYyxwLnByZWNpc2lvbiwhMCksbC5wZW5kaW5nVW5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGwucGVuZGluZ1Vuc3Rha2UsYyxwLnByZWNpc2lvbiwhMSksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGwucGVuZGluZ1Vuc3Rha2UpLmx0KGkpJiZhcGkuQmlnTnVtYmVyKGwuYmFsYW5jZSkuZ3QoYSksImNhbm5vdCBzdWJ0cmFjdCIpJiYoYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGwpLHAudG90YWxTdGFrZWQ9Y2FsY3VsYXRlQmFsYW5jZShwLnRvdGFsU3Rha2VkLGMscC5wcmVjaXNpb24sITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIscCksYXBpLmVtaXQoInVuc3Rha2UiLHthY2NvdW50OmUsc3ltYm9sOnQscXVhbnRpdHk6Y30pLCJFTkciPT09dCYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ3aXRuZXNzZXMiLCJ1cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHMiLHthY2NvdW50OmV9KSl9fTthY3Rpb25zLmNoZWNrUGVuZGluZ1Vuc3Rha2VzPShhc3luYygpPT57aWYoYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCIpKXtjb25zdCBhPW5ldyBEYXRlKGAke2FwaS5zdGVlbUJsb2NrVGltZXN0YW1wfS4wMDBaYCkuZ2V0VGltZSgpO2xldCBlPWF3YWl0IGFwaS5kYi5maW5kKCJwZW5kaW5nVW5zdGFrZXMiLHtuZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXA6eyRsdGU6YX19KSx0PWUubGVuZ3RoO2Zvcig7dD4wOyl7Zm9yKGxldCBhPTA7YTx0O2ErPTEpe2NvbnN0IHQ9ZVthXTthd2FpdCBwcm9jZXNzVW5zdGFrZSh0KX10PShlPWF3YWl0IGFwaS5kYi5maW5kKCJwZW5kaW5nVW5zdGFrZXMiLHtuZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXA6eyRsdGU6YX19KSkubGVuZ3RofX19KSxhY3Rpb25zLmVuYWJsZVN0YWtpbmc9KGFzeW5jIGE9Pntjb25zdHtzeW1ib2w6ZSx1bnN0YWtpbmdDb29sZG93bjp0LG51bWJlclRyYW5zYWN0aW9uczppLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTpzfT1hLG49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtlbmFibGVTdGFraW5nRmVlOm99PW4sbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJFTkcifSkscD1sJiZhcGkuQmlnTnVtYmVyKGwuYmFsYW5jZSkuZ3RlKG8pLGM9dm9pZCAwPT09b3x8YXBpLkJpZ051bWJlcihvKS5sdGUoMCl8fHA7aWYoYXBpLmFzc2VydChjLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgIGZlZXMiKSYmYXBpLmFzc2VydCghMD09PXMsInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KGUmJiJzdHJpbmciPT10eXBlb2YgZSwiaW52YWxpZCBzeW1ib2wiKSYmYXBpLmFzc2VydCh0JiZOdW1iZXIuaXNJbnRlZ2VyKHQpJiZ0PjAmJnQ8PTE4MjUwLCJ1bnN0YWtpbmdDb29sZG93biBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxODI1MCIpJiZhcGkuYXNzZXJ0KGkmJk51bWJlci5pc0ludGVnZXIoaSkmJmk+MCYmaTw9MTgyNTAsIm51bWJlclRyYW5zYWN0aW9ucyBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxODI1MCIpKXtjb25zdCBhPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6ZX0pO2FwaS5hc3NlcnQobnVsbCE9PWEsInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGEuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikmJmFwaS5hc3NlcnQodm9pZCAwPT09YS5zdGFraW5nRW5hYmxlZHx8ITE9PT1hLnN0YWtpbmdFbmFibGVkLCJzdGFraW5nIGFscmVhZHkgZW5hYmxlZCIpJiYoYS5zdGFraW5nRW5hYmxlZD0hMCxhLnRvdGFsU3Rha2VkPSIwIixhLnVuc3Rha2luZ0Nvb2xkb3duPXQsYS5udW1iZXJUcmFuc2FjdGlvbnM9aSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLGEpLGFwaS5CaWdOdW1iZXIobykuZ3QoMCkmJmF3YWl0IGFjdGlvbnMudHJhbnNmZXIoe3RvOiJudWxsIixzeW1ib2w6IkVORyIscXVhbnRpdHk6byxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6c30pKX19KSxhY3Rpb25zLnN0YWtlPShhc3luYyBhPT57Y29uc3R7c3ltYm9sOmUscXVhbnRpdHk6dCx0bzppLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTpzfT1hO2lmKGFwaS5hc3NlcnQoITA9PT1zLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChlJiYic3RyaW5nIj09dHlwZW9mIGUmJmkmJiJzdHJpbmciPT10eXBlb2YgaSYmdCYmInN0cmluZyI9PXR5cGVvZiB0JiYhYXBpLkJpZ051bWJlcih0KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBhPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6ZX0pLHM9aS50cmltKCk7aWYoYXBpLmFzc2VydChhcGkuaXNWYWxpZEFjY291bnROYW1lKHMpLCJpbnZhbGlkIHRvIikmJmFwaS5hc3NlcnQobnVsbCE9PWEsInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHModCk8PWEucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoITA9PT1hLnN0YWtpbmdFbmFibGVkLCJzdGFraW5nIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcih0KS5ndCgwKSwibXVzdCBzdGFrZSBwb3NpdGl2ZSBxdWFudGl0eSIpJiZhd2FpdCBzdWJCYWxhbmNlKGFwaS5zZW5kZXIsYSx0LCJiYWxhbmNlcyIpKXshMT09PWF3YWl0IGFkZFN0YWtlKHMsYSx0KT9hd2FpdCBhZGRCYWxhbmNlKGFwaS5zZW5kZXIsYSx0LCJiYWxhbmNlcyIpOihhcGkuZW1pdCgic3Rha2UiLHthY2NvdW50OnMsc3ltYm9sOmUscXVhbnRpdHk6dH0pLCJFTkciPT09ZSYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ3aXRuZXNzZXMiLCJ1cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHMiLHthY2NvdW50OmFwaS5zZW5kZXJ9KSl9fX0pLGFjdGlvbnMuc3Rha2VGcm9tQ29udHJhY3Q9KGFzeW5jIGE9Pntjb25zdHtzeW1ib2w6ZSxxdWFudGl0eTp0LHRvOmksY2FsbGluZ0NvbnRyYWN0SW5mbzpzfT1hO2lmKHMmJmFwaS5hc3NlcnQoZSYmInN0cmluZyI9PXR5cGVvZiBlJiZpJiYic3RyaW5nIj09dHlwZW9mIGkmJnQmJiJzdHJpbmciPT10eXBlb2YgdCYmIWFwaS5CaWdOdW1iZXIodCkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgYT1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOmV9KSxuPWkudHJpbSgpO2lmKGFwaS5hc3NlcnQoYXBpLmlzVmFsaWRBY2NvdW50TmFtZShuKSwiaW52YWxpZCB0byIpJiZhcGkuYXNzZXJ0KG51bGwhPT1hLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKHQpPD1hLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KCEwPT09YS5zdGFraW5nRW5hYmxlZCwic3Rha2luZyBub3QgZW5hYmxlZCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIodCkuZ3QoMCksIm11c3Qgc3Rha2UgcG9zaXRpdmUgcXVhbnRpdHkiKSYmYXdhaXQgc3ViQmFsYW5jZShzLm5hbWUsYSx0LCJjb250cmFjdHNCYWxhbmNlcyIpKXshMT09PWF3YWl0IGFkZFN0YWtlKG4sYSx0KT9hd2FpdCBhZGRCYWxhbmNlKHMubmFtZSxhLHQsImJhbGFuY2VzIik6KGFwaS5lbWl0KCJzdGFrZUZyb21Db250cmFjdCIse2FjY291bnQ6bixzeW1ib2w6ZSxxdWFudGl0eTp0fSksIkVORyI9PT1lJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6bn0pKX19fSk7Y29uc3Qgc3RhcnRVbnN0YWtlPWFzeW5jKGEsZSx0KT0+e2NvbnN0IGk9bmV3IERhdGUoYCR7YXBpLnN0ZWVtQmxvY2tUaW1lc3RhbXB9LjAwMFpgKSxzPTI0KmUudW5zdGFraW5nQ29vbGRvd24qMzYwMCoxZTMsbj1hcGkuQmlnTnVtYmVyKHMpLmRpdmlkZWRCeShlLm51bWJlclRyYW5zYWN0aW9ucykuaW50ZWdlclZhbHVlKGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksbz1hcGkuQmlnTnVtYmVyKGkuZ2V0VGltZSgpKS5wbHVzKG4pLnRvTnVtYmVyKCksbD17YWNjb3VudDphLHN5bWJvbDplLnN5bWJvbCxxdWFudGl0eTp0LHF1YW50aXR5TGVmdDp0LG5leHRUcmFuc2FjdGlvblRpbWVzdGFtcDpvLG51bWJlclRyYW5zYWN0aW9uc0xlZnQ6ZS5udW1iZXJUcmFuc2FjdGlvbnMsbWlsbGlzZWNQZXJQZXJpb2Q6bix0eElEOmFwaS50cmFuc2FjdGlvbklkfTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJwZW5kaW5nVW5zdGFrZXMiLGwpfTthY3Rpb25zLnVuc3Rha2U9KGFzeW5jIGE9Pntjb25zdHtzeW1ib2w6ZSxxdWFudGl0eTp0LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppfT1hO2lmKGFwaS5hc3NlcnQoITA9PT1pLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChlJiYic3RyaW5nIj09dHlwZW9mIGUmJnQmJiJzdHJpbmciPT10eXBlb2YgdCYmIWFwaS5CaWdOdW1iZXIodCkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgYT1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOmV9KTthcGkuYXNzZXJ0KG51bGwhPT1hLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydCghMD09PWEuc3Rha2luZ0VuYWJsZWQsInN0YWtpbmcgbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKHQpPD1hLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIodCkuZ3QoMCksIm11c3QgdW5zdGFrZSBwb3NpdGl2ZSBxdWFudGl0eSIpJiZhd2FpdCBzdWJTdGFrZShhcGkuc2VuZGVyLGEsdCkmJihhd2FpdCBzdGFydFVuc3Rha2UoYXBpLnNlbmRlcixhLHQpLGFwaS5lbWl0KCJ1bnN0YWtlU3RhcnQiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOmUscXVhbnRpdHk6dH0pKX19KTtjb25zdCBwcm9jZXNzQ2FuY2VsVW5zdGFrZT1hc3luYyBhPT57Y29uc3R7YWNjb3VudDplLHN5bWJvbDp0LHF1YW50aXR5TGVmdDppfT1hLHM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDplLHN5bWJvbDp0fSksbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnR9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1zLCJiYWxhbmNlIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihzLnBlbmRpbmdVbnN0YWtlKS5ndGUoaSksIm92ZXJkcmF3biBwZW5kaW5nVW5zdGFrZSIpKXtjb25zdCBhPXMuc3Rha2Usbz1zLnBlbmRpbmdVbnN0YWtlO2lmKHMuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShzLnN0YWtlLGksbi5wcmVjaXNpb24sITApLHMucGVuZGluZ1Vuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShzLnBlbmRpbmdVbnN0YWtlLGksbi5wcmVjaXNpb24sITEpLGFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihzLnBlbmRpbmdVbnN0YWtlKS5sdChvKSYmYXBpLkJpZ051bWJlcihzLnN0YWtlKS5ndChhKSwiY2Fubm90IHN1YnRyYWN0IikpcmV0dXJuIGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixzKSxhcGkuZW1pdCgidW5zdGFrZSIse2FjY291bnQ6ZSxzeW1ib2w6dCxxdWFudGl0eTppfSksITB9cmV0dXJuITF9O2FjdGlvbnMuY2FuY2VsVW5zdGFrZT0oYXN5bmMgYT0+e2NvbnN0e3R4SUQ6ZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6dH09YTtpZihhcGkuYXNzZXJ0KCEwPT09dCwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoZSYmInN0cmluZyI9PXR5cGVvZiBlLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBhPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwZW5kaW5nVW5zdGFrZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsdHhJRDplfSk7YXBpLmFzc2VydChhLCJ1bnN0YWtlIGRvZXMgbm90IGV4aXN0IikmJmF3YWl0IHByb2Nlc3NDYW5jZWxVbnN0YWtlKGEpJiZhd2FpdCBhcGkuZGIucmVtb3ZlKCJwZW5kaW5nVW5zdGFrZXMiLGEpfX0pLGFjdGlvbnMuZW5hYmxlRGVsZWdhdGlvbj0oYXN5bmMgYT0+e2NvbnN0e3N5bWJvbDplLHVuZGVsZWdhdGlvbkNvb2xkb3duOnQsaXNTaWduZWRXaXRoQWN0aXZlS2V5Oml9PWEscz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse2VuYWJsZURlbGVnYXRpb25GZWU6bn09cyxvPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkVORyJ9KSxsPW8mJmFwaS5CaWdOdW1iZXIoby5iYWxhbmNlKS5ndGUobikscD12b2lkIDA9PT1ufHxhcGkuQmlnTnVtYmVyKG4pLmx0ZSgwKXx8bDtpZihhcGkuYXNzZXJ0KHAsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciAgZmVlcyIpJiZhcGkuYXNzZXJ0KCEwPT09aSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoZSYmInN0cmluZyI9PXR5cGVvZiBlLCJpbnZhbGlkIHN5bWJvbCIpJiZhcGkuYXNzZXJ0KHQmJk51bWJlci5pc0ludGVnZXIodCkmJnQ+MCYmdDw9MTgyNTAsInVuZGVsZWdhdGlvbkNvb2xkb3duIG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDE4MjUwIikpe2NvbnN0IGE9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDplfSk7YXBpLmFzc2VydChudWxsIT09YSwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoYS5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmYXBpLmFzc2VydCghMD09PWEuc3Rha2luZ0VuYWJsZWQsInN0YWtpbmcgbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1hLmRlbGVnYXRpb25FbmFibGVkfHwhMT09PWEuZGVsZWdhdGlvbkVuYWJsZWQsImRlbGVnYXRpb24gYWxyZWFkeSBlbmFibGVkIikmJihhLmRlbGVnYXRpb25FbmFibGVkPSEwLGEudW5kZWxlZ2F0aW9uQ29vbGRvd249dCxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLGEpLGFwaS5CaWdOdW1iZXIobikuZ3QoMCkmJmF3YWl0IGFjdGlvbnMudHJhbnNmZXIoe3RvOiJudWxsIixzeW1ib2w6IkVORyIscXVhbnRpdHk6bixpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aX0pKX19KSxhY3Rpb25zLmRlbGVnYXRlPShhc3luYyBhPT57Y29uc3R7c3ltYm9sOmUscXVhbnRpdHk6dCx0bzppLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTpzfT1hO2lmKGFwaS5hc3NlcnQoITA9PT1zLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChlJiYic3RyaW5nIj09dHlwZW9mIGUmJmkmJiJzdHJpbmciPT10eXBlb2YgaSYmdCYmInN0cmluZyI9PXR5cGVvZiB0JiYhYXBpLkJpZ051bWJlcih0KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBhPWkudHJpbSgpO2lmKGFwaS5hc3NlcnQoYXBpLmlzVmFsaWRBY2NvdW50TmFtZShhKSwiaW52YWxpZCB0byIpKXtjb25zdCBpPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6ZX0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWksInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHModCk8PWkucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoITA9PT1pLmRlbGVnYXRpb25FbmFibGVkLCJkZWxlZ2F0aW9uIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQoYSE9PWFwaS5zZW5kZXIsImNhbm5vdCBkZWxlZ2F0ZSB0byB5b3Vyc2VsZiIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIodCkuZ3QoMCksIm11c3QgZGVsZWdhdGUgcG9zaXRpdmUgcXVhbnRpdHkiKSl7Y29uc3Qgcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOmV9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1zLCJiYWxhbmNlRnJvbSBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocy5zdGFrZSkuZ3RlKHQpLCJvdmVyZHJhd24gc3Rha2UiKSl7dm9pZCAwPT09cy5zdGFrZT8ocy5zdGFrZT0iMCIscy5wZW5kaW5nVW5zdGFrZT0iMCIscy5kZWxlZ2F0aW9uc0luPSIwIixzLmRlbGVnYXRpb25zT3V0PSIwIixzLnBlbmRpbmdVbmRlbGVnYXRpb25zPSIwIik6dm9pZCAwPT09cy5kZWxlZ2F0aW9uc0luJiYocy5kZWxlZ2F0aW9uc0luPSIwIixzLmRlbGVnYXRpb25zT3V0PSIwIixzLnBlbmRpbmdVbmRlbGVnYXRpb25zPSIwIixzLmRlbGVnYXRlZFN0YWtlJiYoZGVsZXRlIHMuZGVsZWdhdGVkU3Rha2UsZGVsZXRlIHMucmVjZWl2ZWRTdGFrZSkpO2xldCBuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YSxzeW1ib2w6ZX0pO251bGw9PT1uPygobj1iYWxhbmNlVGVtcGxhdGUpLmFjY291bnQ9YSxuLnN5bWJvbD1lLG49YXdhaXQgYXBpLmRiLmluc2VydCgiYmFsYW5jZXMiLG4pKTp2b2lkIDA9PT1uLnN0YWtlPyhuLnN0YWtlPSIwIixuLnBlbmRpbmdVbnN0YWtlPSIwIixuLmRlbGVnYXRpb25zSW49IjAiLG4uZGVsZWdhdGlvbnNPdXQ9IjAiLG4ucGVuZGluZ1VuZGVsZWdhdGlvbnM9IjAiKTp2b2lkIDA9PT1uLmRlbGVnYXRpb25zSW4mJihuLmRlbGVnYXRpb25zSW49IjAiLG4uZGVsZWdhdGlvbnNPdXQ9IjAiLG4ucGVuZGluZ1VuZGVsZWdhdGlvbnM9IjAiLG4uZGVsZWdhdGVkU3Rha2UmJihkZWxldGUgbi5kZWxlZ2F0ZWRTdGFrZSxkZWxldGUgbi5yZWNlaXZlZFN0YWtlKSk7bGV0IG89YXdhaXQgYXBpLmRiLmZpbmRPbmUoImRlbGVnYXRpb25zIix7dG86YSxmcm9tOmFwaS5zZW5kZXIsc3ltYm9sOmV9KTtjb25zdCBsPW5ldyBEYXRlKGAke2FwaS5zdGVlbUJsb2NrVGltZXN0YW1wfS4wMDBaYCkuZ2V0VGltZSgpO251bGw9PW8/KHMuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShzLnN0YWtlLHQsaS5wcmVjaXNpb24sITEpLHMuZGVsZWdhdGlvbnNPdXQ9Y2FsY3VsYXRlQmFsYW5jZShzLmRlbGVnYXRpb25zT3V0LHQsaS5wcmVjaXNpb24sITApLGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixzKSxuLmRlbGVnYXRpb25zSW49Y2FsY3VsYXRlQmFsYW5jZShuLmRlbGVnYXRpb25zSW4sdCxpLnByZWNpc2lvbiwhMCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLG4pLChvPXt9KS5mcm9tPWFwaS5zZW5kZXIsby50bz1hLG8uc3ltYm9sPWUsby5xdWFudGl0eT10LG8uY3JlYXRlZD1sLG8udXBkYXRlZD1sLGF3YWl0IGFwaS5kYi5pbnNlcnQoImRlbGVnYXRpb25zIixvKSxhcGkuZW1pdCgiZGVsZWdhdGUiLHt0bzphLHN5bWJvbDplLHF1YW50aXR5OnR9KSwiRU5HIj09PWUmJihhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6YXBpLnNlbmRlcn0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDphfSkpKToocy5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKHMuc3Rha2UsdCxpLnByZWNpc2lvbiwhMSkscy5kZWxlZ2F0aW9uc091dD1jYWxjdWxhdGVCYWxhbmNlKHMuZGVsZWdhdGlvbnNPdXQsdCxpLnByZWNpc2lvbiwhMCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLHMpLG4uZGVsZWdhdGlvbnNJbj1jYWxjdWxhdGVCYWxhbmNlKG4uZGVsZWdhdGlvbnNJbix0LGkucHJlY2lzaW9uLCEwKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsbiksby5xdWFudGl0eT1jYWxjdWxhdGVCYWxhbmNlKG8ucXVhbnRpdHksdCxpLnByZWNpc2lvbiwhMCksby51cGRhdGVkPWwsYXdhaXQgYXBpLmRiLnVwZGF0ZSgiZGVsZWdhdGlvbnMiLG8pLGFwaS5lbWl0KCJkZWxlZ2F0ZSIse3RvOmEsc3ltYm9sOmUscXVhbnRpdHk6dH0pLCJFTkciPT09ZSYmKGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDphcGkuc2VuZGVyfSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ3aXRuZXNzZXMiLCJ1cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHMiLHthY2NvdW50OmF9KSkpfX19fX0pLGFjdGlvbnMudW5kZWxlZ2F0ZT0oYXN5bmMgYT0+e2NvbnN0e3N5bWJvbDplLHF1YW50aXR5OnQsZnJvbTppLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTpzfT1hO2lmKGFwaS5hc3NlcnQoITA9PT1zLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChlJiYic3RyaW5nIj09dHlwZW9mIGUmJmkmJiJzdHJpbmciPT10eXBlb2YgaSYmdCYmInN0cmluZyI9PXR5cGVvZiB0JiYhYXBpLkJpZ051bWJlcih0KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBhPWkudHJpbSgpO2lmKGFwaS5hc3NlcnQoYS5sZW5ndGg+PTMmJmEubGVuZ3RoPD0xNiwiaW52YWxpZCBmcm9tIikpe2NvbnN0IGk9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDplfSk7aWYoYXBpLmFzc2VydChudWxsIT09aSwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyh0KTw9aS5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydCghMD09PWkuZGVsZWdhdGlvbkVuYWJsZWQsImRlbGVnYXRpb24gbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydChhIT09YXBpLnNlbmRlciwiY2Fubm90IHVuZGVsZWdhdGUgZnJvbSB5b3Vyc2VsZiIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIodCkuZ3QoMCksIm11c3QgdW5kZWxlZ2F0ZSBwb3NpdGl2ZSBxdWFudGl0eSIpKXtjb25zdCBzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6ZX0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXMsImJhbGFuY2VUbyBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocy5kZWxlZ2F0aW9uc091dCkuZ3RlKHQpLCJvdmVyZHJhd24gZGVsZWdhdGlvbiIpKXtjb25zdCBuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YSxzeW1ib2w6ZX0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PW4sImJhbGFuY2VGcm9tIGRvZXMgbm90IGV4aXN0Iikpe2NvbnN0IG89YXdhaXQgYXBpLmRiLmZpbmRPbmUoImRlbGVnYXRpb25zIix7dG86YSxmcm9tOmFwaS5zZW5kZXIsc3ltYm9sOmV9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1vLCJkZWxlZ2F0aW9uIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihvLnF1YW50aXR5KS5ndGUodCksIm92ZXJkcmF3biBkZWxlZ2F0aW9uIikpe3MucGVuZGluZ1VuZGVsZWdhdGlvbnM9Y2FsY3VsYXRlQmFsYW5jZShuLnBlbmRpbmdVbmRlbGVnYXRpb25zLHQsaS5wcmVjaXNpb24sITApLHMuZGVsZWdhdGlvbnNPdXQ9Y2FsY3VsYXRlQmFsYW5jZShzLmRlbGVnYXRpb25zT3V0LHQsaS5wcmVjaXNpb24sITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixzKSxuLmRlbGVnYXRpb25zSW49Y2FsY3VsYXRlQmFsYW5jZShuLmRlbGVnYXRpb25zSW4sdCxpLnByZWNpc2lvbiwhMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLG4pLG8ucXVhbnRpdHk9Y2FsY3VsYXRlQmFsYW5jZShvLnF1YW50aXR5LHQsaS5wcmVjaXNpb24sITEpLGFwaS5CaWdOdW1iZXIoby5xdWFudGl0eSkuZ3QoMCk/YXdhaXQgYXBpLmRiLnVwZGF0ZSgiZGVsZWdhdGlvbnMiLG8pOmF3YWl0IGFwaS5kYi5yZW1vdmUoImRlbGVnYXRpb25zIixvKTtjb25zdCBsPW5ldyBEYXRlKGAke2FwaS5zdGVlbUJsb2NrVGltZXN0YW1wfS4wMDBaYCkscD0yNCppLnVuZGVsZWdhdGlvbkNvb2xkb3duKjM2MDAqMWUzLGM9bC5nZXRUaW1lKCkrcCxyPXthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOmkuc3ltYm9sLHF1YW50aXR5OnQsY29tcGxldGVUaW1lc3RhbXA6Yyx0eElEOmFwaS50cmFuc2FjdGlvbklkfTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIsciksYXBpLmVtaXQoInVuZGVsZWdhdGVTdGFydCIse2Zyb206YSxzeW1ib2w6ZSxxdWFudGl0eTp0fSksIkVORyI9PT1lJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6YX0pfX19fX19fSk7Y29uc3QgcHJvY2Vzc1VuZGVsZWdhdGlvbj1hc3luYyBhPT57Y29uc3R7YWNjb3VudDplLHN5bWJvbDp0LHF1YW50aXR5Oml9PWEscz1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmUsc3ltYm9sOnR9KSxuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6dH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXMsImJhbGFuY2UgZG9lcyBub3QgZXhpc3QiKSl7Y29uc3Qgbz1zLnN0YWtlLGw9cy5wZW5kaW5nVW5kZWxlZ2F0aW9ucztzLnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2Uocy5zdGFrZSxpLG4ucHJlY2lzaW9uLCEwKSxzLnBlbmRpbmdVbmRlbGVnYXRpb25zPWNhbGN1bGF0ZUJhbGFuY2Uocy5wZW5kaW5nVW5kZWxlZ2F0aW9ucyxpLG4ucHJlY2lzaW9uLCExKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocy5wZW5kaW5nVW5kZWxlZ2F0aW9ucykubHQobCkmJmFwaS5CaWdOdW1iZXIocy5zdGFrZSkuZ3QobyksImNhbm5vdCBzdWJ0cmFjdCIpJiYoYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLHMpLGF3YWl0IGFwaS5kYi5yZW1vdmUoInBlbmRpbmdVbmRlbGVnYXRpb25zIixhKSxhcGkuZW1pdCgidW5kZWxlZ2F0ZURvbmUiLHthY2NvdW50OmUsc3ltYm9sOnQscXVhbnRpdHk6aX0pLCJFTkciPT09dCYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ3aXRuZXNzZXMiLCJ1cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHMiLHthY2NvdW50OmV9KSl9fTthY3Rpb25zLmNoZWNrUGVuZGluZ1VuZGVsZWdhdGlvbnM9KGFzeW5jKCk9PntpZihhcGkuYXNzZXJ0KCJudWxsIj09PWFwaS5zZW5kZXIsIm5vdCBhdXRob3JpemVkIikpe2NvbnN0IGE9bmV3IERhdGUoYCR7YXBpLnN0ZWVtQmxvY2tUaW1lc3RhbXB9LjAwMFpgKS5nZXRUaW1lKCk7bGV0IGU9YXdhaXQgYXBpLmRiLmZpbmQoInBlbmRpbmdVbmRlbGVnYXRpb25zIix7Y29tcGxldGVUaW1lc3RhbXA6eyRsdGU6YX19KSx0PWUubGVuZ3RoO2Zvcig7dD4wOyl7Zm9yKGxldCBhPTA7YTx0O2ErPTEpe2NvbnN0IHQ9ZVthXTthd2FpdCBwcm9jZXNzVW5kZWxlZ2F0aW9uKHQpfXQ9KGU9YXdhaXQgYXBpLmRiLmZpbmQoInBlbmRpbmdVbmRlbGVnYXRpb25zIix7Y29tcGxldGVUaW1lc3RhbXA6eyRsdGU6YX19KSkubGVuZ3RofX19KTs="
}
}
}

Coin Marketplace

STEEM 0.28
TRX 0.12
JST 0.033
BTC 69626.36
ETH 3667.86
USDT 1.00
SBD 3.82