Tokens Smart Contract

in #steem-engine4 years ago

{"id":"ssc-mainnet1","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"tokens","params":"","code":"Y29uc3QgQUNDT1VOVF9CTEFDS0xJU1Q9e2dhdGVpb2RlcG9zaXQ6MSxkZWVwY3J5cHRvODoxLGJpdHRyZXg6MSxwb2xvbmlleDoxLCJodW9iaS1wcm8iOjEsImhvbmV5LXN3YXAiOjF9O2FjdGlvbnMuY3JlYXRlU1NDPWFzeW5jKCk9PntsZXQgdGFibGVFeGlzdHM9YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJ0b2tlbnMiKTtpZih0YWJsZUV4aXN0cz09PWZhbHNlKXthd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInRva2VucyIsWyJzeW1ib2wiXSk7YXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJiYWxhbmNlcyIsWyJhY2NvdW50Il0pO2F3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiY29udHJhY3RzQmFsYW5jZXMiLFsiYWNjb3VudCJdKTthd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhcmFtcyIpO2NvbnN0IHBhcmFtcz17fTtwYXJhbXMudG9rZW5DcmVhdGlvbkZlZT0iMCI7YXdhaXQgYXBpLmRiLmluc2VydCgicGFyYW1zIixwYXJhbXMpfWVsc2V7Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtwYXJhbXMuZW5hYmxlRGVsZWdhdGlvbkZlZT0iMTAwMCI7cGFyYW1zLmVuYWJsZVN0YWtpbmdGZWU9IjEwMDAiO2F3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKX10YWJsZUV4aXN0cz1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoInBlbmRpbmdVbnN0YWtlcyIpO2lmKHRhYmxlRXhpc3RzPT09ZmFsc2Upe2F3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGVuZGluZ1Vuc3Rha2VzIixbImFjY291bnQiLCJ1bnN0YWtlQ29tcGxldGVUaW1lc3RhbXAiXSl9dGFibGVFeGlzdHM9YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJkZWxlZ2F0aW9ucyIpO2lmKHRhYmxlRXhpc3RzPT09ZmFsc2Upe2F3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiZGVsZWdhdGlvbnMiLFsiZnJvbSIsInRvIl0pO2F3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLFsiYWNjb3VudCIsImNvbXBsZXRlVGltZXN0YW1wIl0pfWxldCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOiJTVEVFTVAifSk7aWYodG9rZW4mJnRva2VuLnByZWNpc2lvbjw4KXt0b2tlbi5wcmVjaXNpb249ODthd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKX10b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOiJFTkcifSk7aWYodG9rZW4uc3Rha2luZ0VuYWJsZWQ9PT11bmRlZmluZWR8fHRva2VuLnN0YWtpbmdFbmFibGVkPT09ZmFsc2Upe3Rva2VuLnN0YWtpbmdFbmFibGVkPXRydWU7dG9rZW4udG90YWxTdGFrZWQ9IjAiO3Rva2VuLnVuc3Rha2luZ0Nvb2xkb3duPTQwO3Rva2VuLm51bWJlclRyYW5zYWN0aW9ucz00O3Rva2VuLmRlbGVnYXRpb25FbmFibGVkPXRydWU7dG9rZW4udW5kZWxlZ2F0aW9uQ29vbGRvd249Nzthd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKX19O2NvbnN0IGJhbGFuY2VUZW1wbGF0ZT17YWNjb3VudDpudWxsLHN5bWJvbDpudWxsLGJhbGFuY2U6IjAiLHN0YWtlOiIwIixwZW5kaW5nVW5zdGFrZToiMCIsZGVsZWdhdGlvbnNJbjoiMCIsZGVsZWdhdGlvbnNPdXQ6IjAiLHBlbmRpbmdVbmRlbGVnYXRpb25zOiIwIn07Y29uc3QgY2FsY3VsYXRlQmFsYW5jZT0oYmFsYW5jZSxxdWFudGl0eSxwcmVjaXNpb24sYWRkKT0+YWRkP2FwaS5CaWdOdW1iZXIoYmFsYW5jZSkucGx1cyhxdWFudGl0eSkudG9GaXhlZChwcmVjaXNpb24pOmFwaS5CaWdOdW1iZXIoYmFsYW5jZSkubWludXMocXVhbnRpdHkpLnRvRml4ZWQocHJlY2lzaW9uKTtjb25zdCBjb3VudERlY2ltYWxzPXZhbHVlPT5hcGkuQmlnTnVtYmVyKHZhbHVlKS5kcCgpO2NvbnN0IGFkZFN0YWtlPWFzeW5jKGFjY291bnQsdG9rZW4scXVhbnRpdHkpPT57bGV0IGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDp0b2tlbi5zeW1ib2x9KTtpZihiYWxhbmNlPT09bnVsbCl7YmFsYW5jZT1iYWxhbmNlVGVtcGxhdGU7YmFsYW5jZS5hY2NvdW50PWFjY291bnQ7YmFsYW5jZS5zeW1ib2w9dG9rZW4uc3ltYm9sO2JhbGFuY2U9YXdhaXQgYXBpLmRiLmluc2VydCgiYmFsYW5jZXMiLGJhbGFuY2UpfWlmKGJhbGFuY2Uuc3Rha2U9PT11bmRlZmluZWQpe2JhbGFuY2Uuc3Rha2U9IjAiO2JhbGFuY2UucGVuZGluZ1Vuc3Rha2U9IjAifWNvbnN0IG9yaWdpbmFsU3Rha2U9YmFsYW5jZS5zdGFrZTtiYWxhbmNlLnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5zdGFrZSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sdHJ1ZSk7aWYoYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2Uuc3Rha2UpLmd0KG9yaWdpbmFsU3Rha2UpLCJjYW5ub3QgYWRkIikpe2F3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlKTtpZih0b2tlbi50b3RhbFN0YWtlZD09PXVuZGVmaW5lZCl7dG9rZW4udG90YWxTdGFrZWQ9IjAifXRva2VuLnRvdGFsU3Rha2VkPWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4udG90YWxTdGFrZWQscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLHRydWUpO2F3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pO3JldHVybiB0cnVlfXJldHVybiBmYWxzZX07Y29uc3Qgc3ViU3Rha2U9YXN5bmMoYWNjb3VudCx0b2tlbixxdWFudGl0eSk9Pntjb25zdCBiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6dG9rZW4uc3ltYm9sfSk7aWYoYXBpLmFzc2VydChiYWxhbmNlIT09bnVsbCwiYmFsYW5jZSBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5zdGFrZSkuZ3RlKHF1YW50aXR5KSwib3ZlcmRyYXduIHN0YWtlIikpe2NvbnN0IG9yaWdpbmFsU3Rha2U9YmFsYW5jZS5zdGFrZTtjb25zdCBvcmlnaW5hbFBlbmRpbmdTdGFrZT1iYWxhbmNlLnBlbmRpbmdVbnN0YWtlO2JhbGFuY2Uuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnN0YWtlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbixmYWxzZSk7YmFsYW5jZS5wZW5kaW5nVW5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLHRydWUpO2lmKGFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlLnN0YWtlKS5sdChvcmlnaW5hbFN0YWtlKSYmYXBpLkJpZ051bWJlcihiYWxhbmNlLnBlbmRpbmdVbnN0YWtlKS5ndChvcmlnaW5hbFBlbmRpbmdTdGFrZSksImNhbm5vdCBzdWJ0cmFjdCIpKXthd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZSk7cmV0dXJuIHRydWV9fXJldHVybiBmYWxzZX07Y29uc3Qgc3ViQmFsYW5jZT1hc3luYyhhY2NvdW50LHRva2VuLHF1YW50aXR5LHRhYmxlKT0+e2NvbnN0IGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUodGFibGUse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6dG9rZW4uc3ltYm9sfSk7aWYoYXBpLmFzc2VydChiYWxhbmNlIT09bnVsbCwiYmFsYW5jZSBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5iYWxhbmNlKS5ndGUocXVhbnRpdHkpLCJvdmVyZHJhd24gYmFsYW5jZSIpKXtjb25zdCBvcmlnaW5hbEJhbGFuY2U9YmFsYW5jZS5iYWxhbmNlO2JhbGFuY2UuYmFsYW5jZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UuYmFsYW5jZSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sZmFsc2UpO2lmKGFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlLmJhbGFuY2UpLmx0KG9yaWdpbmFsQmFsYW5jZSksImNhbm5vdCBzdWJ0cmFjdCIpKXthd2FpdCBhcGkuZGIudXBkYXRlKHRhYmxlLGJhbGFuY2UpO3JldHVybiB0cnVlfX1yZXR1cm4gZmFsc2V9O2NvbnN0IGFkZEJhbGFuY2U9YXN5bmMoYWNjb3VudCx0b2tlbixxdWFudGl0eSx0YWJsZSk9PntsZXQgYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSh0YWJsZSx7YWNjb3VudDphY2NvdW50LHN5bWJvbDp0b2tlbi5zeW1ib2x9KTtpZihiYWxhbmNlPT09bnVsbCl7YmFsYW5jZT1iYWxhbmNlVGVtcGxhdGU7YmFsYW5jZS5hY2NvdW50PWFjY291bnQ7YmFsYW5jZS5zeW1ib2w9dG9rZW4uc3ltYm9sO2JhbGFuY2UuYmFsYW5jZT1xdWFudGl0eTthd2FpdCBhcGkuZGIuaW5zZXJ0KHRhYmxlLGJhbGFuY2UpO3JldHVybiB0cnVlfWNvbnN0IG9yaWdpbmFsQmFsYW5jZT1iYWxhbmNlLmJhbGFuY2U7YmFsYW5jZS5iYWxhbmNlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5iYWxhbmNlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbix0cnVlKTtpZihhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5iYWxhbmNlKS5ndChvcmlnaW5hbEJhbGFuY2UpLCJjYW5ub3QgYWRkIikpe2F3YWl0IGFwaS5kYi51cGRhdGUodGFibGUsYmFsYW5jZSk7cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfTthY3Rpb25zLnVwZGF0ZVBhcmFtcz1hc3luYyBwYXlsb2FkPT57aWYoYXBpLnNlbmRlciE9PWFwaS5vd25lcilyZXR1cm47Y29uc3R7dG9rZW5DcmVhdGlvbkZlZTp0b2tlbkNyZWF0aW9uRmVlfT1wYXlsb2FkO2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7cGFyYW1zLnRva2VuQ3JlYXRpb25GZWU9dG9rZW5DcmVhdGlvbkZlZTthd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyl9O2FjdGlvbnMudXBkYXRlVXJsPWFzeW5jIHBheWxvYWQ9Pntjb25zdHt1cmw6dXJsLHN5bWJvbDpzeW1ib2x9PXBheWxvYWQ7aWYoYXBpLmFzc2VydChzeW1ib2wmJnR5cGVvZiBzeW1ib2w9PT0ic3RyaW5nIiYmdXJsJiZ0eXBlb2YgdXJsPT09InN0cmluZyIsImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQodXJsLmxlbmd0aDw9MjU1LCJpbnZhbGlkIHVybDogbWF4IGxlbmd0aCBvZiAyNTUiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZih0b2tlbil7aWYoYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl7dHJ5e2NvbnN0IG1ldGFkYXRhPUpTT04ucGFyc2UodG9rZW4ubWV0YWRhdGEpO2lmKGFwaS5hc3NlcnQobWV0YWRhdGEmJm1ldGFkYXRhLnVybCwiYW4gZXJyb3Igb2NjdXJlZCB3aGVuIHRyeWluZyB0byB1cGRhdGUgdGhlIHVybCIpKXttZXRhZGF0YS51cmw9dXJsO3Rva2VuLm1ldGFkYXRhPUpTT04uc3RyaW5naWZ5KG1ldGFkYXRhKTthd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKX19Y2F0Y2goZSl7fX19fX07YWN0aW9ucy51cGRhdGVNZXRhZGF0YT1hc3luYyBwYXlsb2FkPT57Y29uc3R7bWV0YWRhdGE6bWV0YWRhdGEsc3ltYm9sOnN5bWJvbH09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KHN5bWJvbCYmdHlwZW9mIHN5bWJvbD09PSJzdHJpbmciJiZtZXRhZGF0YSYmdHlwZW9mIG1ldGFkYXRhPT09Im9iamVjdCIsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYodG9rZW4pe2lmKGFwaS5hc3NlcnQodG9rZW4uaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikpe3RyeXtjb25zdCBmaW5hbE1ldGFkYXRhPUpTT04uc3RyaW5naWZ5KG1ldGFkYXRhKTtpZihhcGkuYXNzZXJ0KGZpbmFsTWV0YWRhdGEubGVuZ3RoPD0xZTMsImludmFsaWQgbWV0YWRhdGE6IG1heCBsZW5ndGggb2YgMTAwMCIpKXt0b2tlbi5tZXRhZGF0YT1maW5hbE1ldGFkYXRhO2F3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pfX1jYXRjaChlKXt9fX19fTthY3Rpb25zLnVwZGF0ZVByZWNpc2lvbj1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxwcmVjaXNpb246cHJlY2lzaW9uLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydChpc1NpZ25lZFdpdGhBY3RpdmVLZXk9PT10cnVlLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJnR5cGVvZiBzeW1ib2w9PT0ic3RyaW5nIikmJmFwaS5hc3NlcnQocHJlY2lzaW9uPjAmJnByZWNpc2lvbjw9OCYmTnVtYmVyLmlzSW50ZWdlcihwcmVjaXNpb24pLCJpbnZhbGlkIHByZWNpc2lvbiIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKHRva2VuKXtpZihhcGkuYXNzZXJ0KHRva2VuLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpJiZhcGkuYXNzZXJ0KHByZWNpc2lvbj50b2tlbi5wcmVjaXNpb24sInByZWNpc2lvbiBjYW4gb25seSBiZSBpbmNyZWFzZWQiKSl7dG9rZW4ucHJlY2lzaW9uPXByZWNpc2lvbjthd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKX19fX07YWN0aW9ucy50cmFuc2Zlck93bmVyc2hpcD1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCx0bzp0byxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoaXNTaWduZWRXaXRoQWN0aXZlS2V5PT09dHJ1ZSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiZ0eXBlb2Ygc3ltYm9sPT09InN0cmluZyImJnRvJiZ0eXBlb2YgdG89PT0ic3RyaW5nIiwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZih0b2tlbil7aWYoYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl7Y29uc3QgZmluYWxUbz10by50cmltKCk7aWYoYXBpLmFzc2VydChhcGkuaXNWYWxpZEFjY291bnROYW1lKGZpbmFsVG8pLCJpbnZhbGlkIHRvIikpe3Rva2VuLmlzc3Vlcj1maW5hbFRvO2F3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pfX19fX07YWN0aW9ucy5jcmVhdGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e25hbWU6bmFtZSxzeW1ib2w6c3ltYm9sLHVybDp1cmwscHJlY2lzaW9uOnByZWNpc2lvbixtYXhTdXBwbHk6bWF4U3VwcGx5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtjb25zdHt0b2tlbkNyZWF0aW9uRmVlOnRva2VuQ3JlYXRpb25GZWV9PXBhcmFtcztjb25zdCB1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkVORyJ9KTtjb25zdCBhdXRob3JpemVkQ3JlYXRpb249YXBpLkJpZ051bWJlcih0b2tlbkNyZWF0aW9uRmVlKS5sdGUoMCk/dHJ1ZTp1dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKHRva2VuQ3JlYXRpb25GZWUpO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZENyZWF0aW9uLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIGNyZWF0aW9uIGZlZXMiKSYmYXBpLmFzc2VydChpc1NpZ25lZFdpdGhBY3RpdmVLZXk9PT10cnVlLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChuYW1lJiZ0eXBlb2YgbmFtZT09PSJzdHJpbmciJiZzeW1ib2wmJnR5cGVvZiBzeW1ib2w9PT0ic3RyaW5nIiYmKHVybD09PXVuZGVmaW5lZHx8dXJsJiZ0eXBlb2YgdXJsPT09InN0cmluZyIpJiYocHJlY2lzaW9uJiZ0eXBlb2YgcHJlY2lzaW9uPT09Im51bWJlciJ8fHByZWNpc2lvbj09PTApJiZtYXhTdXBwbHkmJnR5cGVvZiBtYXhTdXBwbHk9PT0ic3RyaW5nIiYmIWFwaS5CaWdOdW1iZXIobWF4U3VwcGx5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtpZihhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYShzeW1ib2wpJiZhcGkudmFsaWRhdG9yLmlzVXBwZXJjYXNlKHN5bWJvbCkmJnN5bWJvbC5sZW5ndGg+MCYmc3ltYm9sLmxlbmd0aDw9MTAsImludmFsaWQgc3ltYm9sOiB1cHBlcmNhc2UgbGV0dGVycyBvbmx5LCBtYXggbGVuZ3RoIG9mIDEwIikmJmFwaS5hc3NlcnQoYXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhhcGkudmFsaWRhdG9yLmJsYWNrbGlzdChuYW1lLCIgIikpJiZuYW1lLmxlbmd0aD4wJiZuYW1lLmxlbmd0aDw9NTAsImludmFsaWQgbmFtZTogbGV0dGVycywgbnVtYmVycywgd2hpdGVzcGFjZXMgb25seSwgbWF4IGxlbmd0aCBvZiA1MCIpJiZhcGkuYXNzZXJ0KHVybD09PXVuZGVmaW5lZHx8dXJsLmxlbmd0aDw9MjU1LCJpbnZhbGlkIHVybDogbWF4IGxlbmd0aCBvZiAyNTUiKSYmYXBpLmFzc2VydChwcmVjaXNpb24+PTAmJnByZWNpc2lvbjw9OCYmTnVtYmVyLmlzSW50ZWdlcihwcmVjaXNpb24pLCJpbnZhbGlkIHByZWNpc2lvbiIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIobWF4U3VwcGx5KS5ndCgwKSwibWF4U3VwcGx5IG11c3QgYmUgcG9zaXRpdmUiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKG1heFN1cHBseSkubHRlKE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSxgbWF4U3VwcGx5IG11c3QgYmUgbG93ZXIgdGhhbiAke051bWJlci5NQVhfU0FGRV9JTlRFR0VSfWApKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQodG9rZW49PT1udWxsLCJzeW1ib2wgYWxyZWFkeSBleGlzdHMiKSl7Y29uc3QgZmluYWxVcmw9dXJsPT09dW5kZWZpbmVkPyIiOnVybDtsZXQgbWV0YWRhdGE9e3VybDpmaW5hbFVybH07bWV0YWRhdGE9SlNPTi5zdHJpbmdpZnkobWV0YWRhdGEpO2NvbnN0IG5ld1Rva2VuPXtpc3N1ZXI6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sLG5hbWU6bmFtZSxtZXRhZGF0YTptZXRhZGF0YSxwcmVjaXNpb246cHJlY2lzaW9uLG1heFN1cHBseTphcGkuQmlnTnVtYmVyKG1heFN1cHBseSkudG9GaXhlZChwcmVjaXNpb24pLHN1cHBseToiMCIsY2lyY3VsYXRpbmdTdXBwbHk6IjAiLHN0YWtpbmdFbmFibGVkOmZhbHNlLHVuc3Rha2luZ0Nvb2xkb3duOjEsZGVsZWdhdGlvbkVuYWJsZWQ6ZmFsc2UsdW5kZWxlZ2F0aW9uQ29vbGRvd246MH07YXdhaXQgYXBpLmRiLmluc2VydCgidG9rZW5zIixuZXdUb2tlbik7aWYoYXBpLkJpZ051bWJlcih0b2tlbkNyZWF0aW9uRmVlKS5ndCgwKSl7YXdhaXQgYWN0aW9ucy50cmFuc2Zlcih7dG86Im51bGwiLHN5bWJvbDoiRU5HIixxdWFudGl0eTp0b2tlbkNyZWF0aW9uRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KX19fX19O2FjdGlvbnMuaXNzdWU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3RvOnRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KGlzU2lnbmVkV2l0aEFjdGl2ZUtleT09PXRydWUsInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHRvJiZ0eXBlb2YgdG89PT0ic3RyaW5nIiYmc3ltYm9sJiZ0eXBlb2Ygc3ltYm9sPT09InN0cmluZyImJnF1YW50aXR5JiZ0eXBlb2YgcXVhbnRpdHk9PT0ic3RyaW5nIiYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IGZpbmFsVG89dG8udHJpbSgpO2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydCh0b2tlbiE9PW51bGwsInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KHRva2VuLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm5vdCBhbGxvd2VkIHRvIGlzc3VlIHRva2VucyIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCBpc3N1ZSBwb3NpdGl2ZSBxdWFudGl0eSIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIodG9rZW4ubWF4U3VwcGx5KS5taW51cyh0b2tlbi5zdXBwbHkpLmd0ZShxdWFudGl0eSksInF1YW50aXR5IGV4Y2VlZHMgYXZhaWxhYmxlIHN1cHBseSIpKXtpZihhcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyksImludmFsaWQgdG8iKSl7bGV0IHJlcz1hd2FpdCBhZGRCYWxhbmNlKHRva2VuLmlzc3Vlcix0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKTtpZihyZXM9PT10cnVlJiZmaW5hbFRvIT09dG9rZW4uaXNzdWVyKXtpZihhd2FpdCBzdWJCYWxhbmNlKHRva2VuLmlzc3Vlcix0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKSl7cmVzPWF3YWl0IGFkZEJhbGFuY2UoZmluYWxUbyx0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKTtpZihyZXM9PT1mYWxzZSl7YXdhaXQgYWRkQmFsYW5jZSh0b2tlbi5pc3N1ZXIsdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIil9fX1pZihyZXM9PT10cnVlKXt0b2tlbi5zdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi5zdXBwbHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLHRydWUpO2lmKGZpbmFsVG8hPT0ibnVsbCIpe3Rva2VuLmNpcmN1bGF0aW5nU3VwcGx5PWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4uY2lyY3VsYXRpbmdTdXBwbHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLHRydWUpfWF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pO2FwaS5lbWl0KCJ0cmFuc2ZlckZyb21Db250cmFjdCIse2Zyb206InRva2VucyIsdG86ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSl9fX19fTthY3Rpb25zLmlzc3VlVG9Db250cmFjdD1hc3luYyBwYXlsb2FkPT57Y29uc3R7dG86dG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoaXNTaWduZWRXaXRoQWN0aXZlS2V5PT09dHJ1ZSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQodG8mJnR5cGVvZiB0bz09PSJzdHJpbmciJiZzeW1ib2wmJnR5cGVvZiBzeW1ib2w9PT0ic3RyaW5nIiYmcXVhbnRpdHkmJnR5cGVvZiBxdWFudGl0eT09PSJzdHJpbmciJiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgZmluYWxUbz10by50cmltKCk7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KHRva2VuIT09bnVsbCwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQodG9rZW4uaXNzdWVyPT09YXBpLnNlbmRlciwibm90IGFsbG93ZWQgdG8gaXNzdWUgdG9rZW5zIikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IGlzc3VlIHBvc2l0aXZlIHF1YW50aXR5IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcih0b2tlbi5tYXhTdXBwbHkpLm1pbnVzKHRva2VuLnN1cHBseSkuZ3RlKHF1YW50aXR5KSwicXVhbnRpdHkgZXhjZWVkcyBhdmFpbGFibGUgc3VwcGx5Iikpe2lmKGFwaS5hc3NlcnQoZmluYWxUby5sZW5ndGg+PTMmJmZpbmFsVG8ubGVuZ3RoPD01MCwiaW52YWxpZCB0byIpKXtjb25zdCByZXM9YXdhaXQgYWRkQmFsYW5jZShmaW5hbFRvLHRva2VuLHF1YW50aXR5LCJjb250cmFjdHNCYWxhbmNlcyIpO2lmKHJlcz09PXRydWUpe3Rva2VuLnN1cHBseT1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLnN1cHBseSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sdHJ1ZSk7aWYoZmluYWxUbyE9PSJudWxsIil7dG9rZW4uY2lyY3VsYXRpbmdTdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi5jaXJjdWxhdGluZ1N1cHBseSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sdHJ1ZSl9YXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbik7YXBpLmVtaXQoImlzc3VlVG9Db250cmFjdCIse2Zyb206InRva2VucyIsdG86ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSl9fX19fTthY3Rpb25zLnRyYW5zZmVyPWFzeW5jIHBheWxvYWQ9Pntjb25zdHt0bzp0byxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydChpc1NpZ25lZFdpdGhBY3RpdmVLZXk9PT10cnVlLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCh0byYmdHlwZW9mIHRvPT09InN0cmluZyImJnN5bWJvbCYmdHlwZW9mIHN5bWJvbD09PSJzdHJpbmciJiZxdWFudGl0eSYmdHlwZW9mIHF1YW50aXR5PT09InN0cmluZyImJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKTtpZihhcGkuYXNzZXJ0KGZpbmFsVG8hPT1hcGkuc2VuZGVyLCJjYW5ub3QgdHJhbnNmZXIgdG8gc2VsZiIpKXtpZihhcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyksImludmFsaWQgdG8iKSYmYXBpLmFzc2VydChBQ0NPVU5UX0JMQUNLTElTVFtmaW5hbFRvXT09PXVuZGVmaW5lZCxgbm90IGFsbG93ZWQgdG8gc2VuZCB0byAke2ZpbmFsVG99YCkpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydCh0b2tlbiE9PW51bGwsInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCB0cmFuc2ZlciBwb3NpdGl2ZSBxdWFudGl0eSIpKXtpZihhd2FpdCBzdWJCYWxhbmNlKGFwaS5zZW5kZXIsdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIikpe2NvbnN0IHJlcz1hd2FpdCBhZGRCYWxhbmNlKGZpbmFsVG8sdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIik7aWYocmVzPT09ZmFsc2Upe2F3YWl0IGFkZEJhbGFuY2UoYXBpLnNlbmRlcix0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKTtyZXR1cm4gZmFsc2V9aWYoZmluYWxUbz09PSJudWxsIil7dG9rZW4uY2lyY3VsYXRpbmdTdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi5jaXJjdWxhdGluZ1N1cHBseSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sZmFsc2UpO2F3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pfWFwaS5lbWl0KCJ0cmFuc2ZlciIse2Zyb206YXBpLnNlbmRlcix0bzpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KTtyZXR1cm4gdHJ1ZX19fX19cmV0dXJuIGZhbHNlfTthY3Rpb25zLnRyYW5zZmVyVG9Db250cmFjdD1hc3luYyBwYXlsb2FkPT57Y29uc3R7dG86dG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoaXNTaWduZWRXaXRoQWN0aXZlS2V5PT09dHJ1ZSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQodG8mJnR5cGVvZiB0bz09PSJzdHJpbmciJiZzeW1ib2wmJnR5cGVvZiBzeW1ib2w9PT0ic3RyaW5nIiYmcXVhbnRpdHkmJnR5cGVvZiBxdWFudGl0eT09PSJzdHJpbmciJiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgZmluYWxUbz10by50cmltKCkudG9Mb3dlckNhc2UoKTtpZihhcGkuYXNzZXJ0KGZpbmFsVG8hPT1hcGkuc2VuZGVyLCJjYW5ub3QgdHJhbnNmZXIgdG8gc2VsZiIpKXtpZihhcGkuYXNzZXJ0KGZpbmFsVG8ubGVuZ3RoPj0zJiZmaW5hbFRvLmxlbmd0aDw9NTAsImludmFsaWQgdG8iKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KHRva2VuIT09bnVsbCwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IHRyYW5zZmVyIHBvc2l0aXZlIHF1YW50aXR5Iikpe2lmKGF3YWl0IHN1YkJhbGFuY2UoYXBpLnNlbmRlcix0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKSl7Y29uc3QgcmVzPWF3YWl0IGFkZEJhbGFuY2UoZmluYWxUbyx0b2tlbixxdWFudGl0eSwiY29udHJhY3RzQmFsYW5jZXMiKTtpZihyZXM9PT1mYWxzZSl7YXdhaXQgYWRkQmFsYW5jZShhcGkuc2VuZGVyLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpfWVsc2V7aWYoZmluYWxUbz09PSJudWxsIil7dG9rZW4uY2lyY3VsYXRpbmdTdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi5jaXJjdWxhdGluZ1N1cHBseSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sZmFsc2UpO2F3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pfWFwaS5lbWl0KCJ0cmFuc2ZlclRvQ29udHJhY3QiLHtmcm9tOmFwaS5zZW5kZXIsdG86ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSl9fX19fX19O2FjdGlvbnMudHJhbnNmZXJGcm9tQ29udHJhY3Q9YXN5bmMgcGF5bG9hZD0+e2lmKGFwaS5hc3NlcnQoYXBpLnNlbmRlcj09PSJudWxsIiwibm90IGF1dGhvcml6ZWQiKSl7Y29uc3R7ZnJvbTpmcm9tLHRvOnRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksdHlwZTp0eXBlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7Y29uc3QgdHlwZXM9WyJ1c2VyIiwiY29udHJhY3QiXTtpZihhcGkuYXNzZXJ0KGlzU2lnbmVkV2l0aEFjdGl2ZUtleT09PXRydWUsInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHRvJiZ0eXBlb2YgdG89PT0ic3RyaW5nIiYmZnJvbSYmdHlwZW9mIGZyb209PT0ic3RyaW5nIiYmc3ltYm9sJiZ0eXBlb2Ygc3ltYm9sPT09InN0cmluZyImJnR5cGUmJnR5cGVzLmluY2x1ZGVzKHR5cGUpJiZxdWFudGl0eSYmdHlwZW9mIHF1YW50aXR5PT09InN0cmluZyImJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKTtjb25zdCB0YWJsZT10eXBlPT09InVzZXIiPyJiYWxhbmNlcyI6ImNvbnRyYWN0c0JhbGFuY2VzIjtpZihhcGkuYXNzZXJ0KHR5cGU9PT0idXNlciJ8fHR5cGU9PT0iY29udHJhY3QiJiZmaW5hbFRvIT09ZnJvbSwiY2Fubm90IHRyYW5zZmVyIHRvIHNlbGYiKSl7Y29uc3QgdG9WYWxpZD10eXBlPT09InVzZXIiP2FwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyk6ZmluYWxUby5sZW5ndGg+PTMmJmZpbmFsVG8ubGVuZ3RoPD01MDtpZihhcGkuYXNzZXJ0KHRvVmFsaWQ9PT10cnVlLCJpbnZhbGlkIHRvIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydCh0b2tlbiE9PW51bGwsInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCB0cmFuc2ZlciBwb3NpdGl2ZSBxdWFudGl0eSIpKXtpZihhd2FpdCBzdWJCYWxhbmNlKGZyb20sdG9rZW4scXVhbnRpdHksImNvbnRyYWN0c0JhbGFuY2VzIikpe2NvbnN0IHJlcz1hd2FpdCBhZGRCYWxhbmNlKGZpbmFsVG8sdG9rZW4scXVhbnRpdHksdGFibGUpO2lmKHJlcz09PWZhbHNlKXthd2FpdCBhZGRCYWxhbmNlKGZyb20sdG9rZW4scXVhbnRpdHksImNvbnRyYWN0c0JhbGFuY2VzIil9ZWxzZXtpZihmaW5hbFRvPT09Im51bGwiKXt0b2tlbi5jaXJjdWxhdGluZ1N1cHBseT1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLmNpcmN1bGF0aW5nU3VwcGx5LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbixmYWxzZSk7YXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbil9YXBpLmVtaXQoInRyYW5zZmVyRnJvbUNvbnRyYWN0Iix7ZnJvbTpmcm9tLHRvOmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pfX19fX19fX07Y29uc3QgcHJvY2Vzc1Vuc3Rha2U9YXN5bmMgdW5zdGFrZT0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHF1YW50aXR5TGVmdDpxdWFudGl0eUxlZnQsbnVtYmVyVHJhbnNhY3Rpb25zTGVmdDpudW1iZXJUcmFuc2FjdGlvbnNMZWZ0fT11bnN0YWtlO2NvbnN0IG5ld1Vuc3Rha2U9dW5zdGFrZTtjb25zdCBiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sfSk7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtsZXQgdG9rZW5zVG9SZWxlYXNlPTA7aWYoYXBpLmFzc2VydChiYWxhbmNlIT09bnVsbCwiYmFsYW5jZSBkb2VzIG5vdCBleGlzdCIpKXtpZihudW1iZXJUcmFuc2FjdGlvbnNMZWZ0PT09MSl7dG9rZW5zVG9SZWxlYXNlPXF1YW50aXR5TGVmdDthd2FpdCBhcGkuZGIucmVtb3ZlKCJwZW5kaW5nVW5zdGFrZXMiLHVuc3Rha2UpfWVsc2V7dG9rZW5zVG9SZWxlYXNlPWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmRpdmlkZWRCeSh0b2tlbi5udW1iZXJUcmFuc2FjdGlvbnMpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTik7bmV3VW5zdGFrZS5xdWFudGl0eUxlZnQ9YXBpLkJpZ051bWJlcihuZXdVbnN0YWtlLnF1YW50aXR5TGVmdCkubWludXModG9rZW5zVG9SZWxlYXNlKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbik7bmV3VW5zdGFrZS5udW1iZXJUcmFuc2FjdGlvbnNMZWZ0LT0xO25ld1Vuc3Rha2UubmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wPWFwaS5CaWdOdW1iZXIobmV3VW5zdGFrZS5uZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXApLnBsdXMobmV3VW5zdGFrZS5taWxsaXNlY1BlclBlcmlvZCkudG9OdW1iZXIoKTthd2FpdCBhcGkuZGIudXBkYXRlKCJwZW5kaW5nVW5zdGFrZXMiLG5ld1Vuc3Rha2UpfWlmKGFwaS5CaWdOdW1iZXIodG9rZW5zVG9SZWxlYXNlKS5ndCgwKSl7Y29uc3Qgb3JpZ2luYWxCYWxhbmNlPWJhbGFuY2UuYmFsYW5jZTtjb25zdCBvcmlnaW5hbFBlbmRpbmdTdGFrZT1iYWxhbmNlLnBlbmRpbmdVbnN0YWtlO2JhbGFuY2UuYmFsYW5jZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UuYmFsYW5jZSx0b2tlbnNUb1JlbGVhc2UsdG9rZW4ucHJlY2lzaW9uLHRydWUpO2JhbGFuY2UucGVuZGluZ1Vuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnBlbmRpbmdVbnN0YWtlLHRva2Vuc1RvUmVsZWFzZSx0b2tlbi5wcmVjaXNpb24sZmFsc2UpO2lmKGFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlLnBlbmRpbmdVbnN0YWtlKS5sdChvcmlnaW5hbFBlbmRpbmdTdGFrZSkmJmFwaS5CaWdOdW1iZXIoYmFsYW5jZS5iYWxhbmNlKS5ndChvcmlnaW5hbEJhbGFuY2UpLCJjYW5ub3Qgc3VidHJhY3QiKSl7YXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2UpO3Rva2VuLnRvdGFsU3Rha2VkPWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4udG90YWxTdGFrZWQsdG9rZW5zVG9SZWxlYXNlLHRva2VuLnByZWNpc2lvbixmYWxzZSk7YXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbik7YXBpLmVtaXQoInVuc3Rha2UiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTp0b2tlbnNUb1JlbGVhc2V9KTtpZihzeW1ib2w9PT0iRU5HIil7YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ3aXRuZXNzZXMiLCJ1cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHMiLHthY2NvdW50OmFjY291bnR9KX19fX19O2FjdGlvbnMuY2hlY2tQZW5kaW5nVW5zdGFrZXM9YXN5bmMoKT0+e2lmKGFwaS5hc3NlcnQoYXBpLnNlbmRlcj09PSJudWxsIiwibm90IGF1dGhvcml6ZWQiKSl7Y29uc3QgYmxvY2tEYXRlPW5ldyBEYXRlKGAke2FwaS5zdGVlbUJsb2NrVGltZXN0YW1wfS4wMDBaYCk7Y29uc3QgdGltZXN0YW1wPWJsb2NrRGF0ZS5nZXRUaW1lKCk7bGV0IHBlbmRpbmdVbnN0YWtlcz1hd2FpdCBhcGkuZGIuZmluZCgicGVuZGluZ1Vuc3Rha2VzIix7bmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wOnskbHRlOnRpbWVzdGFtcH19KTtsZXQgbmJQZW5kaW5nVW5zdGFrZXM9cGVuZGluZ1Vuc3Rha2VzLmxlbmd0aDt3aGlsZShuYlBlbmRpbmdVbnN0YWtlcz4wKXtmb3IobGV0IGluZGV4PTA7aW5kZXg8bmJQZW5kaW5nVW5zdGFrZXM7aW5kZXgrPTEpe2NvbnN0IHBlbmRpbmdVbnN0YWtlPXBlbmRpbmdVbnN0YWtlc1tpbmRleF07YXdhaXQgcHJvY2Vzc1Vuc3Rha2UocGVuZGluZ1Vuc3Rha2UpfXBlbmRpbmdVbnN0YWtlcz1hd2FpdCBhcGkuZGIuZmluZCgicGVuZGluZ1Vuc3Rha2VzIix7bmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wOnskbHRlOnRpbWVzdGFtcH19KTtuYlBlbmRpbmdVbnN0YWtlcz1wZW5kaW5nVW5zdGFrZXMubGVuZ3RofX19O2FjdGlvbnMuZW5hYmxlU3Rha2luZz1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCx1bnN0YWtpbmdDb29sZG93bjp1bnN0YWtpbmdDb29sZG93bixudW1iZXJUcmFuc2FjdGlvbnM6bnVtYmVyVHJhbnNhY3Rpb25zLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtjb25zdHtlbmFibGVTdGFraW5nRmVlOmVuYWJsZVN0YWtpbmdGZWV9PXBhcmFtcztjb25zdCB1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkVORyJ9KTtjb25zdCBlbm91Z2hGdW5kcz11dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKGVuYWJsZVN0YWtpbmdGZWUpO2NvbnN0IGF1dGhvcml6ZWQ9ZW5hYmxlU3Rha2luZ0ZlZT09PXVuZGVmaW5lZHx8YXBpLkJpZ051bWJlcihlbmFibGVTdGFraW5nRmVlKS5sdGUoMCl8fGVub3VnaEZ1bmRzO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZCwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyICBmZWVzIikmJmFwaS5hc3NlcnQoaXNTaWduZWRXaXRoQWN0aXZlS2V5PT09dHJ1ZSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiZ0eXBlb2Ygc3ltYm9sPT09InN0cmluZyIsImludmFsaWQgc3ltYm9sIikmJmFwaS5hc3NlcnQodW5zdGFraW5nQ29vbGRvd24mJk51bWJlci5pc0ludGVnZXIodW5zdGFraW5nQ29vbGRvd24pJiZ1bnN0YWtpbmdDb29sZG93bj4wJiZ1bnN0YWtpbmdDb29sZG93bjw9MTgyNTAsInVuc3Rha2luZ0Nvb2xkb3duIG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDE4MjUwIikmJmFwaS5hc3NlcnQobnVtYmVyVHJhbnNhY3Rpb25zJiZOdW1iZXIuaXNJbnRlZ2VyKG51bWJlclRyYW5zYWN0aW9ucykmJm51bWJlclRyYW5zYWN0aW9ucz4wJiZudW1iZXJUcmFuc2FjdGlvbnM8PTE4MjUwLCJudW1iZXJUcmFuc2FjdGlvbnMgbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMTgyNTAiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KHRva2VuIT09bnVsbCwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQodG9rZW4uaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikmJmFwaS5hc3NlcnQodG9rZW4uc3Rha2luZ0VuYWJsZWQ9PT11bmRlZmluZWR8fHRva2VuLnN0YWtpbmdFbmFibGVkPT09ZmFsc2UsInN0YWtpbmcgYWxyZWFkeSBlbmFibGVkIikpe3Rva2VuLnN0YWtpbmdFbmFibGVkPXRydWU7dG9rZW4udG90YWxTdGFrZWQ9IjAiO3Rva2VuLnVuc3Rha2luZ0Nvb2xkb3duPXVuc3Rha2luZ0Nvb2xkb3duO3Rva2VuLm51bWJlclRyYW5zYWN0aW9ucz1udW1iZXJUcmFuc2FjdGlvbnM7YXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbik7aWYoYXBpLkJpZ051bWJlcihlbmFibGVTdGFraW5nRmVlKS5ndCgwKSl7YXdhaXQgYWN0aW9ucy50cmFuc2Zlcih7dG86Im51bGwiLHN5bWJvbDoiRU5HIixxdWFudGl0eTplbmFibGVTdGFraW5nRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KX19fX07YWN0aW9ucy5zdGFrZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSx0bzp0byxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoaXNTaWduZWRXaXRoQWN0aXZlS2V5PT09dHJ1ZSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiZ0eXBlb2Ygc3ltYm9sPT09InN0cmluZyImJnRvJiZ0eXBlb2YgdG89PT0ic3RyaW5nIiYmcXVhbnRpdHkmJnR5cGVvZiBxdWFudGl0eT09PSJzdHJpbmciJiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKTtpZihhcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyksImludmFsaWQgdG8iKSYmYXBpLmFzc2VydCh0b2tlbiE9PW51bGwsInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydCh0b2tlbi5zdGFraW5nRW5hYmxlZD09PXRydWUsInN0YWtpbmcgbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCBzdGFrZSBwb3NpdGl2ZSBxdWFudGl0eSIpKXtpZihhd2FpdCBzdWJCYWxhbmNlKGFwaS5zZW5kZXIsdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIikpe2NvbnN0IHJlcz1hd2FpdCBhZGRTdGFrZShmaW5hbFRvLHRva2VuLHF1YW50aXR5KTtpZihyZXM9PT1mYWxzZSl7YXdhaXQgYWRkQmFsYW5jZShhcGkuc2VuZGVyLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpfWVsc2V7YXBpLmVtaXQoInN0YWtlIix7YWNjb3VudDpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KTtpZihzeW1ib2w9PT0iRU5HIil7YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ3aXRuZXNzZXMiLCJ1cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHMiLHthY2NvdW50OmFwaS5zZW5kZXJ9KX19fX19fTthY3Rpb25zLnN0YWtlRnJvbUNvbnRyYWN0PWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHRvOnRvLGNhbGxpbmdDb250cmFjdEluZm86Y2FsbGluZ0NvbnRyYWN0SW5mb309cGF5bG9hZDtpZihjYWxsaW5nQ29udHJhY3RJbmZvJiZhcGkuYXNzZXJ0KHN5bWJvbCYmdHlwZW9mIHN5bWJvbD09PSJzdHJpbmciJiZ0byYmdHlwZW9mIHRvPT09InN0cmluZyImJnF1YW50aXR5JiZ0eXBlb2YgcXVhbnRpdHk9PT0ic3RyaW5nIiYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7Y29uc3QgZmluYWxUbz10by50cmltKCk7aWYoYXBpLmFzc2VydChhcGkuaXNWYWxpZEFjY291bnROYW1lKGZpbmFsVG8pLCJpbnZhbGlkIHRvIikmJmFwaS5hc3NlcnQodG9rZW4hPT1udWxsLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKHF1YW50aXR5KTw9dG9rZW4ucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQodG9rZW4uc3Rha2luZ0VuYWJsZWQ9PT10cnVlLCJzdGFraW5nIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCksIm11c3Qgc3Rha2UgcG9zaXRpdmUgcXVhbnRpdHkiKSl7aWYoYXdhaXQgc3ViQmFsYW5jZShjYWxsaW5nQ29udHJhY3RJbmZvLm5hbWUsdG9rZW4scXVhbnRpdHksImNvbnRyYWN0c0JhbGFuY2VzIikpe2NvbnN0IHJlcz1hd2FpdCBhZGRTdGFrZShmaW5hbFRvLHRva2VuLHF1YW50aXR5KTtpZihyZXM9PT1mYWxzZSl7YXdhaXQgYWRkQmFsYW5jZShjYWxsaW5nQ29udHJhY3RJbmZvLm5hbWUsdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIil9ZWxzZXthcGkuZW1pdCgic3Rha2VGcm9tQ29udHJhY3QiLHthY2NvdW50OmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pO2lmKHN5bWJvbD09PSJFTkciKXthd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6ZmluYWxUb30pfX19fX19O2NvbnN0IHN0YXJ0VW5zdGFrZT1hc3luYyhhY2NvdW50LHRva2VuLHF1YW50aXR5KT0+e2NvbnN0IGJsb2NrRGF0ZT1uZXcgRGF0ZShgJHthcGkuc3RlZW1CbG9ja1RpbWVzdGFtcH0uMDAwWmApO2NvbnN0IGNvb2xkb3duUGVyaW9kTWlsbGlzZWM9dG9rZW4udW5zdGFraW5nQ29vbGRvd24qMjQqMzYwMCoxZTM7Y29uc3QgbWlsbGlzZWNQZXJQZXJpb2Q9YXBpLkJpZ051bWJlcihjb29sZG93blBlcmlvZE1pbGxpc2VjKS5kaXZpZGVkQnkodG9rZW4ubnVtYmVyVHJhbnNhY3Rpb25zKS5pbnRlZ2VyVmFsdWUoYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTtjb25zdCBuZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXA9YXBpLkJpZ051bWJlcihibG9ja0RhdGUuZ2V0VGltZSgpKS5wbHVzKG1pbGxpc2VjUGVyUGVyaW9kKS50b051bWJlcigpO2NvbnN0IHVuc3Rha2U9e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6dG9rZW4uc3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHF1YW50aXR5TGVmdDpxdWFudGl0eSxuZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXA6bmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wLG51bWJlclRyYW5zYWN0aW9uc0xlZnQ6dG9rZW4ubnVtYmVyVHJhbnNhY3Rpb25zLG1pbGxpc2VjUGVyUGVyaW9kOm1pbGxpc2VjUGVyUGVyaW9kLHR4SUQ6YXBpLnRyYW5zYWN0aW9uSWR9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBlbmRpbmdVbnN0YWtlcyIsdW5zdGFrZSl9O2FjdGlvbnMudW5zdGFrZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoaXNTaWduZWRXaXRoQWN0aXZlS2V5PT09dHJ1ZSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiZ0eXBlb2Ygc3ltYm9sPT09InN0cmluZyImJnF1YW50aXR5JiZ0eXBlb2YgcXVhbnRpdHk9PT0ic3RyaW5nIiYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydCh0b2tlbiE9PW51bGwsInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KHRva2VuLnN0YWtpbmdFbmFibGVkPT09dHJ1ZSwic3Rha2luZyBub3QgZW5hYmxlZCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCB1bnN0YWtlIHBvc2l0aXZlIHF1YW50aXR5Iikpe2lmKGF3YWl0IHN1YlN0YWtlKGFwaS5zZW5kZXIsdG9rZW4scXVhbnRpdHkpKXthd2FpdCBzdGFydFVuc3Rha2UoYXBpLnNlbmRlcix0b2tlbixxdWFudGl0eSk7YXBpLmVtaXQoInVuc3Rha2VTdGFydCIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSl9fX19O2NvbnN0IHByb2Nlc3NDYW5jZWxVbnN0YWtlPWFzeW5jIHVuc3Rha2U9Pntjb25zdHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eUxlZnQ6cXVhbnRpdHlMZWZ0fT11bnN0YWtlO2NvbnN0IGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2x9KTtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQoYmFsYW5jZSE9PW51bGwsImJhbGFuY2UgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UpLmd0ZShxdWFudGl0eUxlZnQpLCJvdmVyZHJhd24gcGVuZGluZ1Vuc3Rha2UiKSl7Y29uc3Qgb3JpZ2luYWxTdGFrZT1iYWxhbmNlLnN0YWtlO2NvbnN0IG9yaWdpbmFsUGVuZGluZ1N0YWtlPWJhbGFuY2UucGVuZGluZ1Vuc3Rha2U7YmFsYW5jZS5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2Uuc3Rha2UscXVhbnRpdHlMZWZ0LHRva2VuLnByZWNpc2lvbix0cnVlKTtiYWxhbmNlLnBlbmRpbmdVbnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSxxdWFudGl0eUxlZnQsdG9rZW4ucHJlY2lzaW9uLGZhbHNlKTtpZihhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSkubHQob3JpZ2luYWxQZW5kaW5nU3Rha2UpJiZhcGkuQmlnTnVtYmVyKGJhbGFuY2Uuc3Rha2UpLmd0KG9yaWdpbmFsU3Rha2UpLCJjYW5ub3Qgc3VidHJhY3QiKSl7YXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2UpO2FwaS5lbWl0KCJ1bnN0YWtlIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHlMZWZ0fSk7cmV0dXJuIHRydWV9fXJldHVybiBmYWxzZX07YWN0aW9ucy5jYW5jZWxVbnN0YWtlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHt0eElEOnR4SUQsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KGlzU2lnbmVkV2l0aEFjdGl2ZUtleT09PXRydWUsInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHR4SUQmJnR5cGVvZiB0eElEPT09InN0cmluZyIsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHVuc3Rha2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBlbmRpbmdVbnN0YWtlcyIse2FjY291bnQ6YXBpLnNlbmRlcix0eElEOnR4SUR9KTtpZihhcGkuYXNzZXJ0KHVuc3Rha2UsInVuc3Rha2UgZG9lcyBub3QgZXhpc3QiKSl7aWYoYXdhaXQgcHJvY2Vzc0NhbmNlbFVuc3Rha2UodW5zdGFrZSkpe2F3YWl0IGFwaS5kYi5yZW1vdmUoInBlbmRpbmdVbnN0YWtlcyIsdW5zdGFrZSl9fX19O2FjdGlvbnMuZW5hYmxlRGVsZWdhdGlvbj1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCx1bmRlbGVnYXRpb25Db29sZG93bjp1bmRlbGVnYXRpb25Db29sZG93bixpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7Y29uc3R7ZW5hYmxlRGVsZWdhdGlvbkZlZTplbmFibGVEZWxlZ2F0aW9uRmVlfT1wYXJhbXM7Y29uc3QgdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJFTkcifSk7Y29uc3QgZW5vdWdoRnVuZHM9dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShlbmFibGVEZWxlZ2F0aW9uRmVlKTtjb25zdCBhdXRob3JpemVkPWVuYWJsZURlbGVnYXRpb25GZWU9PT11bmRlZmluZWR8fGFwaS5CaWdOdW1iZXIoZW5hYmxlRGVsZWdhdGlvbkZlZSkubHRlKDApfHxlbm91Z2hGdW5kcztpZihhcGkuYXNzZXJ0KGF1dGhvcml6ZWQsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciAgZmVlcyIpJiZhcGkuYXNzZXJ0KGlzU2lnbmVkV2l0aEFjdGl2ZUtleT09PXRydWUsInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmdHlwZW9mIHN5bWJvbD09PSJzdHJpbmciLCJpbnZhbGlkIHN5bWJvbCIpJiZhcGkuYXNzZXJ0KHVuZGVsZWdhdGlvbkNvb2xkb3duJiZOdW1iZXIuaXNJbnRlZ2VyKHVuZGVsZWdhdGlvbkNvb2xkb3duKSYmdW5kZWxlZ2F0aW9uQ29vbGRvd24+MCYmdW5kZWxlZ2F0aW9uQ29vbGRvd248PTE4MjUwLCJ1bmRlbGVnYXRpb25Db29sZG93biBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxODI1MCIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQodG9rZW4hPT1udWxsLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmYXBpLmFzc2VydCh0b2tlbi5zdGFraW5nRW5hYmxlZD09PXRydWUsInN0YWtpbmcgbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydCh0b2tlbi5kZWxlZ2F0aW9uRW5hYmxlZD09PXVuZGVmaW5lZHx8dG9rZW4uZGVsZWdhdGlvbkVuYWJsZWQ9PT1mYWxzZSwiZGVsZWdhdGlvbiBhbHJlYWR5IGVuYWJsZWQiKSl7dG9rZW4uZGVsZWdhdGlvbkVuYWJsZWQ9dHJ1ZTt0b2tlbi51bmRlbGVnYXRpb25Db29sZG93bj11bmRlbGVnYXRpb25Db29sZG93bjthd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKTtpZihhcGkuQmlnTnVtYmVyKGVuYWJsZURlbGVnYXRpb25GZWUpLmd0KDApKXthd2FpdCBhY3Rpb25zLnRyYW5zZmVyKHt0bzoibnVsbCIsc3ltYm9sOiJFTkciLHF1YW50aXR5OmVuYWJsZURlbGVnYXRpb25GZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pfX19fTthY3Rpb25zLmRlbGVnYXRlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHRvOnRvLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydChpc1NpZ25lZFdpdGhBY3RpdmVLZXk9PT10cnVlLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJnR5cGVvZiBzeW1ib2w9PT0ic3RyaW5nIiYmdG8mJnR5cGVvZiB0bz09PSJzdHJpbmciJiZxdWFudGl0eSYmdHlwZW9mIHF1YW50aXR5PT09InN0cmluZyImJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKTtpZihhcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyksImludmFsaWQgdG8iKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KHRva2VuIT09bnVsbCwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KHRva2VuLmRlbGVnYXRpb25FbmFibGVkPT09dHJ1ZSwiZGVsZWdhdGlvbiBub3QgZW5hYmxlZCIpJiZhcGkuYXNzZXJ0KGZpbmFsVG8hPT1hcGkuc2VuZGVyLCJjYW5ub3QgZGVsZWdhdGUgdG8geW91cnNlbGYiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCBkZWxlZ2F0ZSBwb3NpdGl2ZSBxdWFudGl0eSIpKXtjb25zdCBiYWxhbmNlRnJvbT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQoYmFsYW5jZUZyb20hPT1udWxsLCJiYWxhbmNlRnJvbSBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZUZyb20uc3Rha2UpLmd0ZShxdWFudGl0eSksIm92ZXJkcmF3biBzdGFrZSIpKXtpZihiYWxhbmNlRnJvbS5zdGFrZT09PXVuZGVmaW5lZCl7YmFsYW5jZUZyb20uc3Rha2U9IjAiO2JhbGFuY2VGcm9tLnBlbmRpbmdVbnN0YWtlPSIwIjtiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc0luPSIwIjtiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc091dD0iMCI7YmFsYW5jZUZyb20ucGVuZGluZ1VuZGVsZWdhdGlvbnM9IjAifWVsc2UgaWYoYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNJbj09PXVuZGVmaW5lZCl7YmFsYW5jZUZyb20uZGVsZWdhdGlvbnNJbj0iMCI7YmFsYW5jZUZyb20uZGVsZWdhdGlvbnNPdXQ9IjAiO2JhbGFuY2VGcm9tLnBlbmRpbmdVbmRlbGVnYXRpb25zPSIwIjtpZihiYWxhbmNlRnJvbS5kZWxlZ2F0ZWRTdGFrZSl7ZGVsZXRlIGJhbGFuY2VGcm9tLmRlbGVnYXRlZFN0YWtlO2RlbGV0ZSBiYWxhbmNlRnJvbS5yZWNlaXZlZFN0YWtlfX1sZXQgYmFsYW5jZVRvPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6ZmluYWxUbyxzeW1ib2w6c3ltYm9sfSk7aWYoYmFsYW5jZVRvPT09bnVsbCl7YmFsYW5jZVRvPWJhbGFuY2VUZW1wbGF0ZTtiYWxhbmNlVG8uYWNjb3VudD1maW5hbFRvO2JhbGFuY2VUby5zeW1ib2w9c3ltYm9sO2JhbGFuY2VUbz1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJiYWxhbmNlcyIsYmFsYW5jZVRvKX1lbHNlIGlmKGJhbGFuY2VUby5zdGFrZT09PXVuZGVmaW5lZCl7YmFsYW5jZVRvLnN0YWtlPSIwIjtiYWxhbmNlVG8ucGVuZGluZ1Vuc3Rha2U9IjAiO2JhbGFuY2VUby5kZWxlZ2F0aW9uc0luPSIwIjtiYWxhbmNlVG8uZGVsZWdhdGlvbnNPdXQ9IjAiO2JhbGFuY2VUby5wZW5kaW5nVW5kZWxlZ2F0aW9ucz0iMCJ9ZWxzZSBpZihiYWxhbmNlVG8uZGVsZWdhdGlvbnNJbj09PXVuZGVmaW5lZCl7YmFsYW5jZVRvLmRlbGVnYXRpb25zSW49IjAiO2JhbGFuY2VUby5kZWxlZ2F0aW9uc091dD0iMCI7YmFsYW5jZVRvLnBlbmRpbmdVbmRlbGVnYXRpb25zPSIwIjtpZihiYWxhbmNlVG8uZGVsZWdhdGVkU3Rha2Upe2RlbGV0ZSBiYWxhbmNlVG8uZGVsZWdhdGVkU3Rha2U7ZGVsZXRlIGJhbGFuY2VUby5yZWNlaXZlZFN0YWtlfX1sZXQgZGVsZWdhdGlvbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgiZGVsZWdhdGlvbnMiLHt0bzpmaW5hbFRvLGZyb206YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSk7Y29uc3QgYmxvY2tEYXRlPW5ldyBEYXRlKGAke2FwaS5zdGVlbUJsb2NrVGltZXN0YW1wfS4wMDBaYCk7Y29uc3QgdGltZXN0YW1wPWJsb2NrRGF0ZS5nZXRUaW1lKCk7aWYoZGVsZWdhdGlvbj09bnVsbCl7YmFsYW5jZUZyb20uc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlRnJvbS5zdGFrZSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sZmFsc2UpO2JhbGFuY2VGcm9tLmRlbGVnYXRpb25zT3V0PWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNPdXQscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLHRydWUpO2F3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlRnJvbSk7YmFsYW5jZVRvLmRlbGVnYXRpb25zSW49Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlVG8uZGVsZWdhdGlvbnNJbixxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sdHJ1ZSk7YXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2VUbyk7ZGVsZWdhdGlvbj17fTtkZWxlZ2F0aW9uLmZyb209YXBpLnNlbmRlcjtkZWxlZ2F0aW9uLnRvPWZpbmFsVG87ZGVsZWdhdGlvbi5zeW1ib2w9c3ltYm9sO2RlbGVnYXRpb24ucXVhbnRpdHk9cXVhbnRpdHk7ZGVsZWdhdGlvbi5jcmVhdGVkPXRpbWVzdGFtcDtkZWxlZ2F0aW9uLnVwZGF0ZWQ9dGltZXN0YW1wO2F3YWl0IGFwaS5kYi5pbnNlcnQoImRlbGVnYXRpb25zIixkZWxlZ2F0aW9uKTthcGkuZW1pdCgiZGVsZWdhdGUiLHt0bzpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KTtpZihzeW1ib2w9PT0iRU5HIil7YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ3aXRuZXNzZXMiLCJ1cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHMiLHthY2NvdW50OmFwaS5zZW5kZXJ9KTthd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6ZmluYWxUb30pfX1lbHNle2JhbGFuY2VGcm9tLnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZUZyb20uc3Rha2UscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLGZhbHNlKTtiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc091dD1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zT3V0LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbix0cnVlKTthd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZUZyb20pO2JhbGFuY2VUby5kZWxlZ2F0aW9uc0luPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZVRvLmRlbGVnYXRpb25zSW4scXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLHRydWUpO2F3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlVG8pO2RlbGVnYXRpb24ucXVhbnRpdHk9Y2FsY3VsYXRlQmFsYW5jZShkZWxlZ2F0aW9uLnF1YW50aXR5LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbix0cnVlKTtkZWxlZ2F0aW9uLnVwZGF0ZWQ9dGltZXN0YW1wO2F3YWl0IGFwaS5kYi51cGRhdGUoImRlbGVnYXRpb25zIixkZWxlZ2F0aW9uKTthcGkuZW1pdCgiZGVsZWdhdGUiLHt0bzpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KTtpZihzeW1ib2w9PT0iRU5HIil7YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ3aXRuZXNzZXMiLCJ1cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHMiLHthY2NvdW50OmFwaS5zZW5kZXJ9KTthd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6ZmluYWxUb30pfX19fX19fTthY3Rpb25zLnVuZGVsZWdhdGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksZnJvbTpmcm9tLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydChpc1NpZ25lZFdpdGhBY3RpdmVLZXk9PT10cnVlLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJnR5cGVvZiBzeW1ib2w9PT0ic3RyaW5nIiYmZnJvbSYmdHlwZW9mIGZyb209PT0ic3RyaW5nIiYmcXVhbnRpdHkmJnR5cGVvZiBxdWFudGl0eT09PSJzdHJpbmciJiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgZmluYWxGcm9tPWZyb20udHJpbSgpO2lmKGFwaS5hc3NlcnQoZmluYWxGcm9tLmxlbmd0aD49MyYmZmluYWxGcm9tLmxlbmd0aDw9MTYsImludmFsaWQgZnJvbSIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQodG9rZW4hPT1udWxsLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKHF1YW50aXR5KTw9dG9rZW4ucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQodG9rZW4uZGVsZWdhdGlvbkVuYWJsZWQ9PT10cnVlLCJkZWxlZ2F0aW9uIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQoZmluYWxGcm9tIT09YXBpLnNlbmRlciwiY2Fubm90IHVuZGVsZWdhdGUgZnJvbSB5b3Vyc2VsZiIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IHVuZGVsZWdhdGUgcG9zaXRpdmUgcXVhbnRpdHkiKSl7Y29uc3QgYmFsYW5jZVRvPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChiYWxhbmNlVG8hPT1udWxsLCJiYWxhbmNlVG8gZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2VUby5kZWxlZ2F0aW9uc091dCkuZ3RlKHF1YW50aXR5KSwib3ZlcmRyYXduIGRlbGVnYXRpb24iKSl7Y29uc3QgYmFsYW5jZUZyb209YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDpmaW5hbEZyb20sc3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQoYmFsYW5jZUZyb20hPT1udWxsLCJiYWxhbmNlRnJvbSBkb2VzIG5vdCBleGlzdCIpKXtjb25zdCBkZWxlZ2F0aW9uPWF3YWl0IGFwaS5kYi5maW5kT25lKCJkZWxlZ2F0aW9ucyIse3RvOmZpbmFsRnJvbSxmcm9tOmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQoZGVsZWdhdGlvbiE9PW51bGwsImRlbGVnYXRpb24gZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGRlbGVnYXRpb24ucXVhbnRpdHkpLmd0ZShxdWFudGl0eSksIm92ZXJkcmF3biBkZWxlZ2F0aW9uIikpe2JhbGFuY2VUby5wZW5kaW5nVW5kZWxlZ2F0aW9ucz1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2VGcm9tLnBlbmRpbmdVbmRlbGVnYXRpb25zLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbix0cnVlKTtiYWxhbmNlVG8uZGVsZWdhdGlvbnNPdXQ9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlVG8uZGVsZWdhdGlvbnNPdXQscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLGZhbHNlKTthd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZVRvKTtiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc0luPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNJbixxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sZmFsc2UpO2F3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlRnJvbSk7ZGVsZWdhdGlvbi5xdWFudGl0eT1jYWxjdWxhdGVCYWxhbmNlKGRlbGVnYXRpb24ucXVhbnRpdHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLGZhbHNlKTtpZihhcGkuQmlnTnVtYmVyKGRlbGVnYXRpb24ucXVhbnRpdHkpLmd0KDApKXthd2FpdCBhcGkuZGIudXBkYXRlKCJkZWxlZ2F0aW9ucyIsZGVsZWdhdGlvbil9ZWxzZXthd2FpdCBhcGkuZGIucmVtb3ZlKCJkZWxlZ2F0aW9ucyIsZGVsZWdhdGlvbil9Y29uc3QgYmxvY2tEYXRlPW5ldyBEYXRlKGAke2FwaS5zdGVlbUJsb2NrVGltZXN0YW1wfS4wMDBaYCk7Y29uc3QgY29vbGRvd25QZXJpb2RNaWxsaXNlYz10b2tlbi51bmRlbGVnYXRpb25Db29sZG93bioyNCozNjAwKjFlMztjb25zdCBjb21wbGV0ZVRpbWVzdGFtcD1ibG9ja0RhdGUuZ2V0VGltZSgpK2Nvb2xkb3duUGVyaW9kTWlsbGlzZWM7Y29uc3QgdW5kZWxlZ2F0aW9uPXthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnRva2VuLnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxjb21wbGV0ZVRpbWVzdGFtcDpjb21wbGV0ZVRpbWVzdGFtcCx0eElEOmFwaS50cmFuc2FjdGlvbklkfTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIsdW5kZWxlZ2F0aW9uKTthcGkuZW1pdCgidW5kZWxlZ2F0ZVN0YXJ0Iix7ZnJvbTpmaW5hbEZyb20sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pO2lmKHN5bWJvbD09PSJFTkciKXthd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6ZmluYWxGcm9tfSl9fX19fX19fTtjb25zdCBwcm9jZXNzVW5kZWxlZ2F0aW9uPWFzeW5jIHVuZGVsZWdhdGlvbj0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fT11bmRlbGVnYXRpb247Y29uc3QgYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbH0pO2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChiYWxhbmNlIT09bnVsbCwiYmFsYW5jZSBkb2VzIG5vdCBleGlzdCIpKXtjb25zdCBvcmlnaW5hbFN0YWtlPWJhbGFuY2Uuc3Rha2U7Y29uc3Qgb3JpZ2luYWxQZW5kaW5nVW5kZWxlZ2F0aW9ucz1iYWxhbmNlLnBlbmRpbmdVbmRlbGVnYXRpb25zO2JhbGFuY2Uuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnN0YWtlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbix0cnVlKTtiYWxhbmNlLnBlbmRpbmdVbmRlbGVnYXRpb25zPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5wZW5kaW5nVW5kZWxlZ2F0aW9ucyxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sZmFsc2UpO2lmKGFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlLnBlbmRpbmdVbmRlbGVnYXRpb25zKS5sdChvcmlnaW5hbFBlbmRpbmdVbmRlbGVnYXRpb25zKSYmYXBpLkJpZ051bWJlcihiYWxhbmNlLnN0YWtlKS5ndChvcmlnaW5hbFN0YWtlKSwiY2Fubm90IHN1YnRyYWN0Iikpe2F3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlKTthd2FpdCBhcGkuZGIucmVtb3ZlKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIsdW5kZWxlZ2F0aW9uKTthcGkuZW1pdCgidW5kZWxlZ2F0ZURvbmUiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pO2lmKHN5bWJvbD09PSJFTkciKXthd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6YWNjb3VudH0pfX19fTthY3Rpb25zLmNoZWNrUGVuZGluZ1VuZGVsZWdhdGlvbnM9YXN5bmMoKT0+e2lmKGFwaS5hc3NlcnQoYXBpLnNlbmRlcj09PSJudWxsIiwibm90IGF1dGhvcml6ZWQiKSl7Y29uc3QgYmxvY2tEYXRlPW5ldyBEYXRlKGAke2FwaS5zdGVlbUJsb2NrVGltZXN0YW1wfS4wMDBaYCk7Y29uc3QgdGltZXN0YW1wPWJsb2NrRGF0ZS5nZXRUaW1lKCk7bGV0IHBlbmRpbmdVbmRlbGVnYXRpb25zPWF3YWl0IGFwaS5kYi5maW5kKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIse2NvbXBsZXRlVGltZXN0YW1wOnskbHRlOnRpbWVzdGFtcH19KTtsZXQgbmJQZW5kaW5nVW5kZWxlZ2F0aW9ucz1wZW5kaW5nVW5kZWxlZ2F0aW9ucy5sZW5ndGg7d2hpbGUobmJQZW5kaW5nVW5kZWxlZ2F0aW9ucz4wKXtmb3IobGV0IGluZGV4PTA7aW5kZXg8bmJQZW5kaW5nVW5kZWxlZ2F0aW9ucztpbmRleCs9MSl7Y29uc3QgcGVuZGluZ1VuZGVsZWdhdGlvbj1wZW5kaW5nVW5kZWxlZ2F0aW9uc1tpbmRleF07YXdhaXQgcHJvY2Vzc1VuZGVsZWdhdGlvbihwZW5kaW5nVW5kZWxlZ2F0aW9uKX1wZW5kaW5nVW5kZWxlZ2F0aW9ucz1hd2FpdCBhcGkuZGIuZmluZCgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLHtjb21wbGV0ZVRpbWVzdGFtcDp7JGx0ZTp0aW1lc3RhbXB9fSk7bmJQZW5kaW5nVW5kZWxlZ2F0aW9ucz1wZW5kaW5nVW5kZWxlZ2F0aW9ucy5sZW5ndGh9fX07"}}}

Coin Marketplace

STEEM 0.21
TRX 0.20
JST 0.034
BTC 90827.60
ETH 3116.50
USDT 1.00
SBD 2.97