Pack Manager Smart Contract

Words
1
Reading
1 min
Listen
Play
6y

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"deploy","contractPayload":{"name":"packmanager","params":"","code":"Y29uc3QgQ09OVFJBQ1RfTkFNRT0icGFja21hbmFnZXIiLFVUSUxJVFlfVE9LRU5fU1lNQk9MPSJCRUUiLFVUSUxJVFlfVE9LRU5fUFJFQ0lTSU9OPTgsTUFYX05BTUVfTEVOR1RIPTEwMCxNQVhfQ0FSRFNfUEVSX1BBQ0s9MzAsTUFYX0NBUkRTX0FUX09OQ0U9NjAsTUFYX1BBUlRJVElPTlM9MTAwLE1BWF9ST0xMUz0xMCxNQVhfTlVNX05GVFNfSVNTVUFCTEU9MTA7YWN0aW9ucy5jcmVhdGVTU0M9YXN5bmMoKT0+e2lmKCExPT09YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJwYWNrcyIpKXthd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhY2tzIixbImFjY291bnQiLCJzeW1ib2wiLCJuZnQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ0eXBlcyIsWyJuZnQiLCJlZGl0aW9uIiwidHlwZUlkIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiZm9pbHMiLFsibmZ0IiwiZWRpdGlvbiIsImluZGV4Il0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiY2F0ZWdvcmllcyIsWyJuZnQiLCJlZGl0aW9uIiwiaW5kZXgiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJyYXJpdGllcyIsWyJuZnQiLCJlZGl0aW9uIiwiaW5kZXgiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ0ZWFtcyIsWyJuZnQiLCJlZGl0aW9uIiwiaW5kZXgiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJtYW5hZ2VkTmZ0cyIsWyJuZnQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwYXJhbXMiKTtjb25zdCBwYXJhbXM9e3JlZ2lzdGVyRmVlOiIxMDAwIix0eXBlQWRkRmVlOiIxIn07YXdhaXQgYXBpLmRiLmluc2VydCgicGFyYW1zIixwYXJhbXMpfX07Y29uc3QgZG9SYW5kb21Sb2xsPXBhcnRpdGlvbj0+e2xldCByZXN1bHQ9MDtjb25zdCByb2xsPU1hdGguZmxvb3IoYXBpLnJhbmRvbSgpKnBhcnRpdGlvbltwYXJ0aXRpb24ubGVuZ3RoLTFdKSsxO2ZvcihsZXQgaT0wO2k8cGFydGl0aW9uLmxlbmd0aCYmcm9sbD5wYXJ0aXRpb25baV07aSs9MSlyZXN1bHQrPTE7cmV0dXJuIHJlc3VsdD49cGFydGl0aW9uLmxlbmd0aCYmKHJlc3VsdD1wYXJ0aXRpb24ubGVuZ3RoLTEpLHJlc3VsdH0saXNWYWxpZFBhcnRpdGlvbj1wYXJ0aXRpb249PntpZihwYXJ0aXRpb24mJiJvYmplY3QiPT10eXBlb2YgcGFydGl0aW9uJiZBcnJheS5pc0FycmF5KHBhcnRpdGlvbikmJnBhcnRpdGlvbi5sZW5ndGg+PTEmJnBhcnRpdGlvbi5sZW5ndGg8PTEwMCl7bGV0IHByZXZOdW09MDtmb3IobGV0IGk9MDtpPHBhcnRpdGlvbi5sZW5ndGg7aSs9MSl7Y29uc3QgdmFsPXBhcnRpdGlvbltpXTtpZighKCJudW1iZXIiPT10eXBlb2YgdmFsJiZOdW1iZXIuaXNJbnRlZ2VyKHZhbCkmJnZhbD5wcmV2TnVtKSlyZXR1cm4hMTtwcmV2TnVtPXZhbH1yZXR1cm4hMH1yZXR1cm4hMX0saXNUb2tlblRyYW5zZmVyVmVyaWZpZWQ9KHJlc3VsdCxmcm9tLHRvLHN5bWJvbCxxdWFudGl0eSxldmVudFN0cik9PiEodm9pZCAwIT09cmVzdWx0LmVycm9yc3x8IXJlc3VsdC5ldmVudHN8fHZvaWQgMD09PXJlc3VsdC5ldmVudHMuZmluZChlbD0+InRva2VucyI9PT1lbC5jb250cmFjdCYmZWwuZXZlbnQ9PT1ldmVudFN0ciYmZWwuZGF0YS5mcm9tPT09ZnJvbSYmZWwuZGF0YS50bz09PXRvJiZlbC5kYXRhLnF1YW50aXR5PT09cXVhbnRpdHkmJmVsLmRhdGEuc3ltYm9sPT09c3ltYm9sKSksY291bnROZnRJc3N1YW5jZT0ocmVzdWx0LGZyb20sdG8sc3ltYm9sKT0+e2xldCBjb3VudD0wO2lmKHZvaWQgMD09PXJlc3VsdC5lcnJvcnMmJnJlc3VsdC5ldmVudHMpe2NvdW50PXJlc3VsdC5ldmVudHMuZmlsdGVyKGU9PiJuZnQiPT09ZS5jb250cmFjdCYmImlzc3VlIj09PWUuZXZlbnQmJmUuZGF0YS5mcm9tPT09ZnJvbSYmZS5kYXRhLnRvPT09dG8mJmUuZGF0YS5zeW1ib2w9PT1zeW1ib2wpLmxlbmd0aH1yZXR1cm4gY291bnR9LGNhbGN1bGF0ZUJhbGFuY2U9KGJhbGFuY2UscXVhbnRpdHkscHJlY2lzaW9uLGFkZCk9PmFkZD9hcGkuQmlnTnVtYmVyKGJhbGFuY2UpLnBsdXMocXVhbnRpdHkpLnRvRml4ZWQocHJlY2lzaW9uKTphcGkuQmlnTnVtYmVyKGJhbGFuY2UpLm1pbnVzKHF1YW50aXR5KS50b0ZpeGVkKHByZWNpc2lvbiksY291bnREZWNpbWFscz12YWx1ZT0+YXBpLkJpZ051bWJlcih2YWx1ZSkuZHAoKSx2ZXJpZnlUb2tlbkJhbGFuY2U9YXN5bmMoYW1vdW50LHN5bWJvbCxhY2NvdW50KT0+e2lmKGFwaS5CaWdOdW1iZXIoYW1vdW50KS5sdGUoMCkpcmV0dXJuITA7Y29uc3QgdG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbH0pO3JldHVybiEoIXRva2VuQmFsYW5jZXx8IWFwaS5CaWdOdW1iZXIodG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShhbW91bnQpKX0sdHJhbnNmZXJGZWU9YXN5bmMoYW1vdW50LGRlc3QsaXNTaWduZWRXaXRoQWN0aXZlS2V5KT0+e2NvbnN0IGFjdGlvblN0cj0icGFja21hbmFnZXIiPT09ZGVzdD8idHJhbnNmZXJUb0NvbnRyYWN0IjoidHJhbnNmZXIiO2lmKGFwaS5CaWdOdW1iZXIoYW1vdW50KS5ndCgwKSl7Y29uc3QgcmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIixhY3Rpb25TdHIse3RvOmRlc3Qsc3ltYm9sOiJCRUUiLHF1YW50aXR5OmFtb3VudCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSk7aWYoIWlzVG9rZW5UcmFuc2ZlclZlcmlmaWVkKHJlcyxhcGkuc2VuZGVyLGRlc3QsIkJFRSIsYW1vdW50LGFjdGlvblN0cikpcmV0dXJuITF9cmV0dXJuITB9O2FjdGlvbnMudXBkYXRlUGFyYW1zPWFzeW5jIHBheWxvYWQ9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtjb25zdHtyZWdpc3RlckZlZTpyZWdpc3RlckZlZSx0eXBlQWRkRmVlOnR5cGVBZGRGZWV9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtyZWdpc3RlckZlZSYmInN0cmluZyI9PXR5cGVvZiByZWdpc3RlckZlZSYmIWFwaS5CaWdOdW1iZXIocmVnaXN0ZXJGZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIocmVnaXN0ZXJGZWUpLmd0ZSgwKSYmKHBhcmFtcy5yZWdpc3RlckZlZT1yZWdpc3RlckZlZSksdHlwZUFkZEZlZSYmInN0cmluZyI9PXR5cGVvZiB0eXBlQWRkRmVlJiYhYXBpLkJpZ051bWJlcih0eXBlQWRkRmVlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHR5cGVBZGRGZWUpLmd0ZSgwKSYmKHBhcmFtcy50eXBlQWRkRmVlPXR5cGVBZGRGZWUpLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKX0sYWN0aW9ucy5kZXBvc2l0PWFzeW5jIHBheWxvYWQ9Pntjb25zdHtuZnRTeW1ib2w6bmZ0U3ltYm9sLGFtb3VudDphbW91bnQsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChuZnRTeW1ib2wmJiJzdHJpbmciPT10eXBlb2YgbmZ0U3ltYm9sJiZhbW91bnQmJiJzdHJpbmciPT10eXBlb2YgYW1vdW50JiYhYXBpLkJpZ051bWJlcihhbW91bnQpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoYW1vdW50KS5ndCgwKSYmKHZhbHVlPWFtb3VudCxhcGkuQmlnTnVtYmVyKHZhbHVlKS5kcCgpPD04KSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdW5kZXJNYW5hZ2VtZW50PWF3YWl0IGFwaS5kYi5maW5kT25lKCJtYW5hZ2VkTmZ0cyIse25mdDpuZnRTeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT11bmRlck1hbmFnZW1lbnQsIk5GVCBub3QgdW5kZXIgbWFuYWdlbWVudCIpKXtjb25zdCBoYXNFbm91Z2hCYWxhbmNlPWF3YWl0IHZlcmlmeVRva2VuQmFsYW5jZShhbW91bnQsIkJFRSIsYXBpLnNlbmRlcik7aWYoYXBpLmFzc2VydChoYXNFbm91Z2hCYWxhbmNlLCJub3QgZW5vdWdoIHRva2VucyB0byBkZXBvc2l0IikpcmV0dXJuISFhd2FpdCB0cmFuc2ZlckZlZShhbW91bnQsInBhY2ttYW5hZ2VyIixpc1NpZ25lZFdpdGhBY3RpdmVLZXkpJiYodW5kZXJNYW5hZ2VtZW50LmZlZVBvb2w9Y2FsY3VsYXRlQmFsYW5jZSh1bmRlck1hbmFnZW1lbnQuZmVlUG9vbCxhbW91bnQsOCwhMCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWFuYWdlZE5mdHMiLHVuZGVyTWFuYWdlbWVudCksYXBpLmVtaXQoImRlcG9zaXQiLHtuZnQ6bmZ0U3ltYm9sLG5ld0ZlZVBvb2w6dW5kZXJNYW5hZ2VtZW50LmZlZVBvb2x9KSwhMCl9fXZhciB2YWx1ZTtyZXR1cm4hMX0sYWN0aW9ucy5kZWxldGVUeXBlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtuZnRTeW1ib2w6bmZ0U3ltYm9sLGVkaXRpb246ZWRpdGlvbix0eXBlSWQ6dHlwZUlkLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQobmZ0U3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIG5mdFN5bWJvbCYmdm9pZCAwIT09dHlwZUlkJiYibnVtYmVyIj09dHlwZW9mIHR5cGVJZCYmTnVtYmVyLmlzSW50ZWdlcih0eXBlSWQpJiZ0eXBlSWQ+PTAmJnZvaWQgMCE9PWVkaXRpb24mJiJudW1iZXIiPT10eXBlb2YgZWRpdGlvbiYmTnVtYmVyLmlzSW50ZWdlcihlZGl0aW9uKSYmZWRpdGlvbj49MCwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgibmZ0IiwibmZ0cyIse3N5bWJvbDpuZnRTeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1uZnQsIk5GVCBzeW1ib2wgbXVzdCBleGlzdCIpJiZhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCB0byBkZWxldGUgdHlwZXMiKSYmYXBpLmFzc2VydCgwPT09bmZ0LmNpcmN1bGF0aW5nU3VwcGx5LCJORlQgaW5zdGFuY2VzIG11c3Qgbm90IGJlIGluIGNpcmN1bGF0aW9uIikpe2NvbnN0IHVuZGVyTWFuYWdlbWVudD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibWFuYWdlZE5mdHMiLHtuZnQ6bmZ0U3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dW5kZXJNYW5hZ2VtZW50LCJORlQgbm90IHVuZGVyIG1hbmFnZW1lbnQiKSl7Y29uc3QgdGhlVHlwZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgidHlwZXMiLHtuZnQ6bmZ0U3ltYm9sLGVkaXRpb246ZWRpdGlvbix0eXBlSWQ6dHlwZUlkfSk7aWYobnVsbCE9PXRoZVR5cGUpcmV0dXJuIGF3YWl0IGFwaS5kYi5yZW1vdmUoInR5cGVzIix0aGVUeXBlKSxhcGkuZW1pdCgiZGVsZXRlVHlwZSIse25mdDpuZnRTeW1ib2wsZWRpdGlvbjplZGl0aW9uLHR5cGVJZDp0eXBlSWR9KSwhMH19fXJldHVybiExfSxhY3Rpb25zLnVwZGF0ZVR5cGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e25mdFN5bWJvbDpuZnRTeW1ib2wsZWRpdGlvbjplZGl0aW9uLHR5cGVJZDp0eXBlSWQsY2F0ZWdvcnk6Y2F0ZWdvcnkscmFyaXR5OnJhcml0eSx0ZWFtOnRlYW0sbmFtZTpuYW1lLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYodm9pZCAwPT09bmFtZSYmdm9pZCAwPT09Y2F0ZWdvcnkmJnZvaWQgMD09PXJhcml0eSYmdm9pZCAwPT09dGVhbSlyZXR1cm4hMTtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1uYW1lfHxuYW1lJiYic3RyaW5nIj09dHlwZW9mIG5hbWUmJmFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMoYXBpLnZhbGlkYXRvci5ibGFja2xpc3QobmFtZSwiICIpKSYmbmFtZS5sZW5ndGg+MCYmbmFtZS5sZW5ndGg8PTEwMCwiaW52YWxpZCB0eXBlIG5hbWU6IGxldHRlcnMsIG51bWJlcnMsIHdoaXRlc3BhY2VzIG9ubHksIG1heCBsZW5ndGggb2YgMTAwIikmJmFwaS5hc3NlcnQobmZ0U3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIG5mdFN5bWJvbCYmdm9pZCAwIT09dHlwZUlkJiYibnVtYmVyIj09dHlwZW9mIHR5cGVJZCYmTnVtYmVyLmlzSW50ZWdlcih0eXBlSWQpJiZ0eXBlSWQ+PTAmJnZvaWQgMCE9PWVkaXRpb24mJiJudW1iZXIiPT10eXBlb2YgZWRpdGlvbiYmTnVtYmVyLmlzSW50ZWdlcihlZGl0aW9uKSYmZWRpdGlvbj49MCYmKHZvaWQgMD09PWNhdGVnb3J5fHwibnVtYmVyIj09dHlwZW9mIGNhdGVnb3J5JiZOdW1iZXIuaXNJbnRlZ2VyKGNhdGVnb3J5KSYmY2F0ZWdvcnk+PTApJiYodm9pZCAwPT09cmFyaXR5fHwibnVtYmVyIj09dHlwZW9mIHJhcml0eSYmTnVtYmVyLmlzSW50ZWdlcihyYXJpdHkpJiZyYXJpdHk+PTApJiYodm9pZCAwPT09dGVhbXx8Im51bWJlciI9PXR5cGVvZiB0ZWFtJiZOdW1iZXIuaXNJbnRlZ2VyKHRlYW0pJiZ0ZWFtPj0wKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgibmZ0IiwibmZ0cyIse3N5bWJvbDpuZnRTeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1uZnQsIk5GVCBzeW1ib2wgbXVzdCBleGlzdCIpJiZhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCB0byB1cGRhdGUgdHlwZXMiKSl7Y29uc3QgdW5kZXJNYW5hZ2VtZW50PWF3YWl0IGFwaS5kYi5maW5kT25lKCJtYW5hZ2VkTmZ0cyIse25mdDpuZnRTeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT11bmRlck1hbmFnZW1lbnQsIk5GVCBub3QgdW5kZXIgbWFuYWdlbWVudCIpJiZhcGkuYXNzZXJ0KGVkaXRpb24udG9TdHJpbmcoKWluIHVuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZywiZWRpdGlvbiBub3QgcmVnaXN0ZXJlZCIpKXtjb25zdCBlZGl0aW9uTWFwcGluZz11bmRlck1hbmFnZW1lbnQuZWRpdGlvbk1hcHBpbmdbZWRpdGlvbi50b1N0cmluZygpXTtpZihhcGkuYXNzZXJ0KCEodm9pZCAwIT09Y2F0ZWdvcnkmJmVkaXRpb25NYXBwaW5nLmNhdGVnb3J5Uk98fHZvaWQgMCE9PXJhcml0eSYmZWRpdGlvbk1hcHBpbmcucmFyaXR5Uk98fHZvaWQgMCE9PXRlYW0mJmVkaXRpb25NYXBwaW5nLnRlYW1ST3x8dm9pZCAwIT09bmFtZSYmZWRpdGlvbk1hcHBpbmcubmFtZVJPKSwiY2Fubm90IGVkaXQgcmVhZC1vbmx5IHByb3BlcnRpZXMiKSl7Y29uc3QgdGhlVHlwZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgidHlwZXMiLHtuZnQ6bmZ0U3ltYm9sLGVkaXRpb246ZWRpdGlvbix0eXBlSWQ6dHlwZUlkfSk7aWYoYXBpLmFzc2VydChudWxsIT09dGhlVHlwZSwidHlwZSBkb2VzIG5vdCBleGlzdCIpKXtjb25zdCB1cGRhdGU9e25mdDpuZnRTeW1ib2wsZWRpdGlvbjplZGl0aW9uLHR5cGVJZDp0eXBlSWR9O3JldHVybiB2b2lkIDAhPT1uYW1lJiYodXBkYXRlLm9sZE5hbWU9dGhlVHlwZS5uYW1lLHRoZVR5cGUubmFtZT1uYW1lLHVwZGF0ZS5uZXdOYW1lPW5hbWUpLHZvaWQgMCE9PWNhdGVnb3J5JiYodXBkYXRlLm9sZENhdGVnb3J5PXRoZVR5cGUuY2F0ZWdvcnksdGhlVHlwZS5jYXRlZ29yeT1jYXRlZ29yeSx1cGRhdGUubmV3Q2F0ZWdvcnk9Y2F0ZWdvcnkpLHZvaWQgMCE9PXJhcml0eSYmKHVwZGF0ZS5vbGRSYXJpdHk9dGhlVHlwZS5yYXJpdHksdGhlVHlwZS5yYXJpdHk9cmFyaXR5LHVwZGF0ZS5uZXdSYXJpdHk9cmFyaXR5KSx2b2lkIDAhPT10ZWFtJiYodXBkYXRlLm9sZFRlYW09dGhlVHlwZS50ZWFtLHRoZVR5cGUudGVhbT10ZWFtLHVwZGF0ZS5uZXdUZWFtPXRlYW0pLGF3YWl0IGFwaS5kYi51cGRhdGUoInR5cGVzIix0aGVUeXBlKSxhcGkuZW1pdCgidXBkYXRlVHlwZSIsdXBkYXRlKSwhMH19fX19cmV0dXJuITF9LGFjdGlvbnMuYWRkVHlwZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7bmZ0U3ltYm9sOm5mdFN5bWJvbCxlZGl0aW9uOmVkaXRpb24sY2F0ZWdvcnk6Y2F0ZWdvcnkscmFyaXR5OnJhcml0eSx0ZWFtOnRlYW0sbmFtZTpuYW1lLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQobmFtZSYmInN0cmluZyI9PXR5cGVvZiBuYW1lJiZhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKGFwaS52YWxpZGF0b3IuYmxhY2tsaXN0KG5hbWUsIiAiKSkmJm5hbWUubGVuZ3RoPjAmJm5hbWUubGVuZ3RoPD0xMDAsImludmFsaWQgdHlwZSBuYW1lOiBsZXR0ZXJzLCBudW1iZXJzLCB3aGl0ZXNwYWNlcyBvbmx5LCBtYXggbGVuZ3RoIG9mIDEwMCIpJiZhcGkuYXNzZXJ0KG5mdFN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBuZnRTeW1ib2wmJnZvaWQgMCE9PWVkaXRpb24mJiJudW1iZXIiPT10eXBlb2YgZWRpdGlvbiYmTnVtYmVyLmlzSW50ZWdlcihlZGl0aW9uKSYmZWRpdGlvbj49MCYmdm9pZCAwIT09Y2F0ZWdvcnkmJiJudW1iZXIiPT10eXBlb2YgY2F0ZWdvcnkmJk51bWJlci5pc0ludGVnZXIoY2F0ZWdvcnkpJiZjYXRlZ29yeT49MCYmdm9pZCAwIT09cmFyaXR5JiYibnVtYmVyIj09dHlwZW9mIHJhcml0eSYmTnVtYmVyLmlzSW50ZWdlcihyYXJpdHkpJiZyYXJpdHk+PTAmJnZvaWQgMCE9PXRlYW0mJiJudW1iZXIiPT10eXBlb2YgdGVhbSYmTnVtYmVyLmlzSW50ZWdlcih0ZWFtKSYmdGVhbT49MCwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgibmZ0IiwibmZ0cyIse3N5bWJvbDpuZnRTeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1uZnQsIk5GVCBzeW1ib2wgbXVzdCBleGlzdCIpJiZhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCB0byBhZGQgYSB0eXBlIikpe2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSksaGFzRW5vdWdoQmFsYW5jZT1hd2FpdCB2ZXJpZnlUb2tlbkJhbGFuY2UocGFyYW1zLnR5cGVBZGRGZWUsIkJFRSIsYXBpLnNlbmRlcik7aWYoYXBpLmFzc2VydChoYXNFbm91Z2hCYWxhbmNlLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIHR5cGUgYWRkIGZlZSIpKXtjb25zdCB1bmRlck1hbmFnZW1lbnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm1hbmFnZWROZnRzIix7bmZ0Om5mdFN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXVuZGVyTWFuYWdlbWVudCwiTkZUIG5vdCB1bmRlciBtYW5hZ2VtZW50IikmJmFwaS5hc3NlcnQoZWRpdGlvbi50b1N0cmluZygpaW4gdW5kZXJNYW5hZ2VtZW50LmVkaXRpb25NYXBwaW5nLCJlZGl0aW9uIG5vdCByZWdpc3RlcmVkIikpe2lmKCFhd2FpdCB0cmFuc2ZlckZlZShwYXJhbXMudHlwZUFkZEZlZSwibnVsbCIsaXNTaWduZWRXaXRoQWN0aXZlS2V5KSlyZXR1cm4hMTtjb25zdCBuZXdUeXBlSWQ9dW5kZXJNYW5hZ2VtZW50LmVkaXRpb25NYXBwaW5nW2VkaXRpb24udG9TdHJpbmcoKV0ubmV4dFR5cGVJZCxuZXdUeXBlPXtuZnQ6bmZ0U3ltYm9sLGVkaXRpb246ZWRpdGlvbix0eXBlSWQ6bmV3VHlwZUlkLGNhdGVnb3J5OmNhdGVnb3J5LHJhcml0eTpyYXJpdHksdGVhbTp0ZWFtLG5hbWU6bmFtZX0scmVzdWx0PWF3YWl0IGFwaS5kYi5pbnNlcnQoInR5cGVzIixuZXdUeXBlKTtyZXR1cm4gdW5kZXJNYW5hZ2VtZW50LmVkaXRpb25NYXBwaW5nW2VkaXRpb24udG9TdHJpbmcoKV0ubmV4dFR5cGVJZD1uZXdUeXBlSWQrMSxhd2FpdCBhcGkuZGIudXBkYXRlKCJtYW5hZ2VkTmZ0cyIsdW5kZXJNYW5hZ2VtZW50KSxhcGkuZW1pdCgiYWRkVHlwZSIse25mdDpuZnRTeW1ib2wsZWRpdGlvbjplZGl0aW9uLHR5cGVJZDpuZXdUeXBlSWQscm93SWQ6cmVzdWx0Ll9pZH0pLCEwfX19fXJldHVybiExfSxhY3Rpb25zLnNldFRyYWl0TmFtZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7bmZ0U3ltYm9sOm5mdFN5bWJvbCxlZGl0aW9uOmVkaXRpb24sdHJhaXQ6dHJhaXQsaW5kZXg6aW5kZXgsbmFtZTpuYW1lLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQsdGFibGVNYXBwaW5nPXtmb2lsOiJmb2lscyIsY2F0ZWdvcnk6ImNhdGVnb3JpZXMiLHJhcml0eToicmFyaXRpZXMiLHRlYW06InRlYW1zIn07aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQobmFtZSYmInN0cmluZyI9PXR5cGVvZiBuYW1lJiZhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKGFwaS52YWxpZGF0b3IuYmxhY2tsaXN0KG5hbWUsIiAiKSkmJm5hbWUubGVuZ3RoPjAmJm5hbWUubGVuZ3RoPD0xMDAsImludmFsaWQgdHJhaXQgbmFtZTogbGV0dGVycywgbnVtYmVycywgd2hpdGVzcGFjZXMgb25seSwgbWF4IGxlbmd0aCBvZiAxMDAiKSYmYXBpLmFzc2VydChuZnRTeW1ib2wmJiJzdHJpbmciPT10eXBlb2YgbmZ0U3ltYm9sJiZ0cmFpdCYmInN0cmluZyI9PXR5cGVvZiB0cmFpdCYmWyJmb2lsIiwiY2F0ZWdvcnkiLCJyYXJpdHkiLCJ0ZWFtIl0uaW5jbHVkZXModHJhaXQpJiZ2b2lkIDAhPT1pbmRleCYmIm51bWJlciI9PXR5cGVvZiBpbmRleCYmTnVtYmVyLmlzSW50ZWdlcihpbmRleCkmJmluZGV4Pj0wJiZpbmRleDwxMDAmJnZvaWQgMCE9PWVkaXRpb24mJiJudW1iZXIiPT10eXBlb2YgZWRpdGlvbiYmTnVtYmVyLmlzSW50ZWdlcihlZGl0aW9uKSYmZWRpdGlvbj49MCwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgibmZ0IiwibmZ0cyIse3N5bWJvbDpuZnRTeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1uZnQsIk5GVCBzeW1ib2wgbXVzdCBleGlzdCIpJiZhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCBmb3IgdXBkYXRlcyIpKXtjb25zdCB1bmRlck1hbmFnZW1lbnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm1hbmFnZWROZnRzIix7bmZ0Om5mdFN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXVuZGVyTWFuYWdlbWVudCwiTkZUIG5vdCB1bmRlciBtYW5hZ2VtZW50IikmJmFwaS5hc3NlcnQoZWRpdGlvbi50b1N0cmluZygpaW4gdW5kZXJNYW5hZ2VtZW50LmVkaXRpb25NYXBwaW5nLCJlZGl0aW9uIG5vdCByZWdpc3RlcmVkIikpe2NvbnN0IGN1cnJlbnRUcmFpdD1hd2FpdCBhcGkuZGIuZmluZE9uZSh0YWJsZU1hcHBpbmdbdHJhaXRdLHtuZnQ6bmZ0U3ltYm9sLGVkaXRpb246ZWRpdGlvbixpbmRleDppbmRleH0pO2lmKG51bGwhPT1jdXJyZW50VHJhaXQpe2lmKG5hbWUhPT1jdXJyZW50VHJhaXQubmFtZSl7Y29uc3Qgb2xkTmFtZT1jdXJyZW50VHJhaXQubmFtZTtjdXJyZW50VHJhaXQubmFtZT1uYW1lLGF3YWl0IGFwaS5kYi51cGRhdGUodGFibGVNYXBwaW5nW3RyYWl0XSxjdXJyZW50VHJhaXQpLGFwaS5lbWl0KCJ1cGRhdGVUcmFpdE5hbWUiLHtuZnQ6bmZ0U3ltYm9sLGVkaXRpb246ZWRpdGlvbix0cmFpdDp0cmFpdCxpbmRleDppbmRleCxvbGROYW1lOm9sZE5hbWUsbmV3TmFtZTpuYW1lfSl9fWVsc2V7Y29uc3QgbmV3VHJhaXQ9e25mdDpuZnRTeW1ib2wsZWRpdGlvbjplZGl0aW9uLGluZGV4OmluZGV4LG5hbWU6bmFtZX07YXdhaXQgYXBpLmRiLmluc2VydCh0YWJsZU1hcHBpbmdbdHJhaXRdLG5ld1RyYWl0KSxhcGkuZW1pdCgic2V0VHJhaXROYW1lIix7bmZ0Om5mdFN5bWJvbCxlZGl0aW9uOmVkaXRpb24sdHJhaXQ6dHJhaXQsaW5kZXg6aW5kZXgsbmFtZTpuYW1lfSl9fX19fSxhY3Rpb25zLnVwZGF0ZUVkaXRpb249YXN5bmMgcGF5bG9hZD0+e2NvbnN0e25mdFN5bWJvbDpuZnRTeW1ib2wsZWRpdGlvbjplZGl0aW9uLGVkaXRpb25OYW1lOmVkaXRpb25OYW1lLGNhdGVnb3J5Uk86Y2F0ZWdvcnlSTyxyYXJpdHlSTzpyYXJpdHlSTyx0ZWFtUk86dGVhbVJPLG5hbWVSTzpuYW1lUk8saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZih2b2lkIDA9PT1lZGl0aW9uTmFtZSYmdm9pZCAwPT09Y2F0ZWdvcnlSTyYmdm9pZCAwPT09cmFyaXR5Uk8mJnZvaWQgMD09PXRlYW1STyYmdm9pZCAwPT09bmFtZVJPKXJldHVybiExO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PWVkaXRpb25OYW1lfHxlZGl0aW9uTmFtZSYmInN0cmluZyI9PXR5cGVvZiBlZGl0aW9uTmFtZSYmYXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhhcGkudmFsaWRhdG9yLmJsYWNrbGlzdChlZGl0aW9uTmFtZSwiICIpKSYmZWRpdGlvbk5hbWUubGVuZ3RoPjAmJmVkaXRpb25OYW1lLmxlbmd0aDw9MTAwLCJpbnZhbGlkIGVkaXRpb24gbmFtZTogbGV0dGVycywgbnVtYmVycywgd2hpdGVzcGFjZXMgb25seSwgbWF4IGxlbmd0aCBvZiAxMDAiKSYmYXBpLmFzc2VydChuZnRTeW1ib2wmJiJzdHJpbmciPT10eXBlb2YgbmZ0U3ltYm9sJiYodm9pZCAwPT09Y2F0ZWdvcnlST3x8Y2F0ZWdvcnlSTyYmImJvb2xlYW4iPT10eXBlb2YgY2F0ZWdvcnlSTykmJih2b2lkIDA9PT1yYXJpdHlST3x8cmFyaXR5Uk8mJiJib29sZWFuIj09dHlwZW9mIHJhcml0eVJPKSYmKHZvaWQgMD09PXRlYW1ST3x8dGVhbVJPJiYiYm9vbGVhbiI9PXR5cGVvZiB0ZWFtUk8pJiYodm9pZCAwPT09bmFtZVJPfHxuYW1lUk8mJiJib29sZWFuIj09dHlwZW9mIG5hbWVSTykmJnZvaWQgMCE9PWVkaXRpb24mJiJudW1iZXIiPT10eXBlb2YgZWRpdGlvbiYmTnVtYmVyLmlzSW50ZWdlcihlZGl0aW9uKSYmZWRpdGlvbj49MCwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgibmZ0IiwibmZ0cyIse3N5bWJvbDpuZnRTeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1uZnQsIk5GVCBzeW1ib2wgbXVzdCBleGlzdCIpJiZhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCBmb3IgdXBkYXRlcyIpKXtjb25zdCB1bmRlck1hbmFnZW1lbnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm1hbmFnZWROZnRzIix7bmZ0Om5mdFN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXVuZGVyTWFuYWdlbWVudCwiTkZUIG5vdCB1bmRlciBtYW5hZ2VtZW50IikmJmFwaS5hc3NlcnQoZWRpdGlvbi50b1N0cmluZygpaW4gdW5kZXJNYW5hZ2VtZW50LmVkaXRpb25NYXBwaW5nLCJlZGl0aW9uIG5vdCByZWdpc3RlcmVkIikpe2NvbnN0IGVkaXRpb25NYXA9dW5kZXJNYW5hZ2VtZW50LmVkaXRpb25NYXBwaW5nW2VkaXRpb24udG9TdHJpbmcoKV0sdXBkYXRlPXtuZnQ6bmZ0U3ltYm9sLGVkaXRpb246ZWRpdGlvbn07cmV0dXJuIHZvaWQgMCE9PWVkaXRpb25OYW1lJiYodXBkYXRlLm9sZEVkaXRpb25OYW1lPWVkaXRpb25NYXAuZWRpdGlvbk5hbWUsZWRpdGlvbk1hcC5lZGl0aW9uTmFtZT1lZGl0aW9uTmFtZSx1cGRhdGUubmV3RWRpdGlvbk5hbWU9ZWRpdGlvbk5hbWUpLGNhdGVnb3J5Uk8mJihlZGl0aW9uTWFwLmNhdGVnb3J5Uk89ITAsdXBkYXRlLmNhdGVnb3J5Uk89ITApLHJhcml0eVJPJiYoZWRpdGlvbk1hcC5yYXJpdHlSTz0hMCx1cGRhdGUucmFyaXR5Uk89ITApLHRlYW1STyYmKGVkaXRpb25NYXAudGVhbVJPPSEwLHVwZGF0ZS50ZWFtUk89ITApLG5hbWVSTyYmKGVkaXRpb25NYXAubmFtZVJPPSEwLHVwZGF0ZS5uYW1lUk89ITApLGF3YWl0IGFwaS5kYi51cGRhdGUoIm1hbmFnZWROZnRzIix1bmRlck1hbmFnZW1lbnQpLGFwaS5lbWl0KCJ1cGRhdGVFZGl0aW9uIix1cGRhdGUpLCEwfX19cmV0dXJuITF9LGFjdGlvbnMudXBkYXRlUGFjaz1hc3luYyBwYXlsb2FkPT57Y29uc3R7cGFja1N5bWJvbDpwYWNrU3ltYm9sLG5mdFN5bWJvbDpuZnRTeW1ib2wsZWRpdGlvbjplZGl0aW9uLGNhcmRzUGVyUGFjazpjYXJkc1BlclBhY2ssZm9pbENoYW5jZTpmb2lsQ2hhbmNlLGNhdGVnb3J5Q2hhbmNlOmNhdGVnb3J5Q2hhbmNlLHJhcml0eUNoYW5jZTpyYXJpdHlDaGFuY2UsdGVhbUNoYW5jZTp0ZWFtQ2hhbmNlLG51bVJvbGxzOm51bVJvbGxzLGlzRmluYWxpemVkOmlzRmluYWxpemVkLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYodm9pZCAwPT09ZWRpdGlvbiYmdm9pZCAwPT09Y2FyZHNQZXJQYWNrJiZ2b2lkIDA9PT1mb2lsQ2hhbmNlJiZ2b2lkIDA9PT1jYXRlZ29yeUNoYW5jZSYmdm9pZCAwPT09cmFyaXR5Q2hhbmNlJiZ2b2lkIDA9PT10ZWFtQ2hhbmNlJiZ2b2lkIDA9PT1udW1Sb2xscyYmdm9pZCAwPT09aXNGaW5hbGl6ZWQpcmV0dXJuITE7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQocGFja1N5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBwYWNrU3ltYm9sJiZuZnRTeW1ib2wmJiJzdHJpbmciPT10eXBlb2YgbmZ0U3ltYm9sJiYodm9pZCAwPT09aXNGaW5hbGl6ZWR8fGlzRmluYWxpemVkJiYiYm9vbGVhbiI9PXR5cGVvZiBpc0ZpbmFsaXplZCkmJih2b2lkIDA9PT1lZGl0aW9ufHwibnVtYmVyIj09dHlwZW9mIGVkaXRpb24mJk51bWJlci5pc0ludGVnZXIoZWRpdGlvbikmJmVkaXRpb24+PTApJiYodm9pZCAwPT09bnVtUm9sbHN8fCJudW1iZXIiPT10eXBlb2YgbnVtUm9sbHMmJk51bWJlci5pc0ludGVnZXIobnVtUm9sbHMpJiZudW1Sb2xscz49MSYmbnVtUm9sbHM8PTEwKSYmKHZvaWQgMD09PWZvaWxDaGFuY2V8fGlzVmFsaWRQYXJ0aXRpb24oZm9pbENoYW5jZSkpJiYodm9pZCAwPT09Y2F0ZWdvcnlDaGFuY2V8fGlzVmFsaWRQYXJ0aXRpb24oY2F0ZWdvcnlDaGFuY2UpKSYmKHZvaWQgMD09PXJhcml0eUNoYW5jZXx8aXNWYWxpZFBhcnRpdGlvbihyYXJpdHlDaGFuY2UpKSYmKHZvaWQgMD09PXRlYW1DaGFuY2V8fGlzVmFsaWRQYXJ0aXRpb24odGVhbUNoYW5jZSkpJiYodm9pZCAwPT09Y2FyZHNQZXJQYWNrfHwibnVtYmVyIj09dHlwZW9mIGNhcmRzUGVyUGFjayYmTnVtYmVyLmlzSW50ZWdlcihjYXJkc1BlclBhY2spJiZjYXJkc1BlclBhY2s+PTEmJmNhcmRzUGVyUGFjazw9MzApLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBzZXR0aW5ncz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFja3MiLHtzeW1ib2w6cGFja1N5bWJvbCxuZnQ6bmZ0U3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09c2V0dGluZ3MsInBhY2sgbm90IHJlZ2lzdGVyZWQgZm9yIHRoaXMgTkZUIikmJmFwaS5hc3NlcnQoc2V0dGluZ3MuYWNjb3VudD09PWFwaS5zZW5kZXIsIm5vdCBhdXRob3JpemVkIHRvIHVwZGF0ZSBzZXR0aW5ncyIpJiZhcGkuYXNzZXJ0KCFzZXR0aW5ncy5pc0ZpbmFsaXplZCwicGFjayBzZXR0aW5ncyBhbHJlYWR5IGZpbmFsaXplZCIpKXtpZih2b2lkIDAhPT1lZGl0aW9uKXtjb25zdCB1bmRlck1hbmFnZW1lbnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm1hbmFnZWROZnRzIix7bmZ0Om5mdFN5bWJvbH0pO2lmKCFhcGkuYXNzZXJ0KG51bGwhPT11bmRlck1hbmFnZW1lbnQmJmVkaXRpb24udG9TdHJpbmcoKWluIHVuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZywiZWRpdGlvbiBub3QgcmVnaXN0ZXJlZCIpKXJldHVybiExfWNvbnN0IHVwZGF0ZT17c3ltYm9sOnBhY2tTeW1ib2wsbmZ0Om5mdFN5bWJvbH07cmV0dXJuIHZvaWQgMCE9PWVkaXRpb24mJih1cGRhdGUub2xkRWRpdGlvbj1zZXR0aW5ncy5lZGl0aW9uLHNldHRpbmdzLmVkaXRpb249ZWRpdGlvbix1cGRhdGUubmV3RWRpdGlvbj1lZGl0aW9uKSx2b2lkIDAhPT1jYXJkc1BlclBhY2smJih1cGRhdGUub2xkQ2FyZHNQZXJQYWNrPXNldHRpbmdzLmNhcmRzUGVyUGFjayxzZXR0aW5ncy5jYXJkc1BlclBhY2s9Y2FyZHNQZXJQYWNrLHVwZGF0ZS5uZXdDYXJkc1BlclBhY2s9Y2FyZHNQZXJQYWNrKSx2b2lkIDAhPT1mb2lsQ2hhbmNlJiYodXBkYXRlLm9sZEZvaWxDaGFuY2U9c2V0dGluZ3MuZm9pbENoYW5jZSxzZXR0aW5ncy5mb2lsQ2hhbmNlPWZvaWxDaGFuY2UsdXBkYXRlLm5ld0ZvaWxDaGFuY2U9Zm9pbENoYW5jZSksdm9pZCAwIT09Y2F0ZWdvcnlDaGFuY2UmJih1cGRhdGUub2xkQ2F0ZWdvcnlDaGFuY2U9c2V0dGluZ3MuY2F0ZWdvcnlDaGFuY2Usc2V0dGluZ3MuY2F0ZWdvcnlDaGFuY2U9Y2F0ZWdvcnlDaGFuY2UsdXBkYXRlLm5ld0NhdGVnb3J5Q2hhbmNlPWNhdGVnb3J5Q2hhbmNlKSx2b2lkIDAhPT1yYXJpdHlDaGFuY2UmJih1cGRhdGUub2xkUmFyaXR5Q2hhbmNlPXNldHRpbmdzLnJhcml0eUNoYW5jZSxzZXR0aW5ncy5yYXJpdHlDaGFuY2U9cmFyaXR5Q2hhbmNlLHVwZGF0ZS5uZXdSYXJpdHlDaGFuY2U9cmFyaXR5Q2hhbmNlKSx2b2lkIDAhPT10ZWFtQ2hhbmNlJiYodXBkYXRlLm9sZFRlYW1DaGFuY2U9c2V0dGluZ3MudGVhbUNoYW5jZSxzZXR0aW5ncy50ZWFtQ2hhbmNlPXRlYW1DaGFuY2UsdXBkYXRlLm5ld1RlYW1DaGFuY2U9dGVhbUNoYW5jZSksdm9pZCAwIT09bnVtUm9sbHMmJih1cGRhdGUub2xkTnVtUm9sbHM9c2V0dGluZ3MubnVtUm9sbHMsc2V0dGluZ3MubnVtUm9sbHM9bnVtUm9sbHMsdXBkYXRlLm5ld051bVJvbGxzPW51bVJvbGxzKSxpc0ZpbmFsaXplZCYmKHNldHRpbmdzLmlzRmluYWxpemVkPSEwLHVwZGF0ZS5pc0ZpbmFsaXplZD0hMCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFja3MiLHNldHRpbmdzKSxhcGkuZW1pdCgidXBkYXRlUGFjayIsdXBkYXRlKSwhMH19cmV0dXJuITF9LGFjdGlvbnMucmVnaXN0ZXJQYWNrPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtwYWNrU3ltYm9sOnBhY2tTeW1ib2wsbmZ0U3ltYm9sOm5mdFN5bWJvbCxlZGl0aW9uOmVkaXRpb24sZWRpdGlvbk5hbWU6ZWRpdGlvbk5hbWUsY2FyZHNQZXJQYWNrOmNhcmRzUGVyUGFjayxmb2lsQ2hhbmNlOmZvaWxDaGFuY2UsY2F0ZWdvcnlDaGFuY2U6Y2F0ZWdvcnlDaGFuY2UscmFyaXR5Q2hhbmNlOnJhcml0eUNoYW5jZSx0ZWFtQ2hhbmNlOnRlYW1DaGFuY2UsbnVtUm9sbHM6bnVtUm9sbHMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1lZGl0aW9uTmFtZXx8ZWRpdGlvbk5hbWUmJiJzdHJpbmciPT10eXBlb2YgZWRpdGlvbk5hbWUmJmFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMoYXBpLnZhbGlkYXRvci5ibGFja2xpc3QoZWRpdGlvbk5hbWUsIiAiKSkmJmVkaXRpb25OYW1lLmxlbmd0aD4wJiZlZGl0aW9uTmFtZS5sZW5ndGg8PTEwMCwiaW52YWxpZCBlZGl0aW9uIG5hbWU6IGxldHRlcnMsIG51bWJlcnMsIHdoaXRlc3BhY2VzIG9ubHksIG1heCBsZW5ndGggb2YgMTAwIikmJmFwaS5hc3NlcnQocGFja1N5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBwYWNrU3ltYm9sJiZuZnRTeW1ib2wmJiJzdHJpbmciPT10eXBlb2YgbmZ0U3ltYm9sJiZ2b2lkIDAhPT1lZGl0aW9uJiYibnVtYmVyIj09dHlwZW9mIGVkaXRpb24mJk51bWJlci5pc0ludGVnZXIoZWRpdGlvbikmJmVkaXRpb24+PTAmJnZvaWQgMCE9PW51bVJvbGxzJiYibnVtYmVyIj09dHlwZW9mIG51bVJvbGxzJiZOdW1iZXIuaXNJbnRlZ2VyKG51bVJvbGxzKSYmbnVtUm9sbHM+PTEmJm51bVJvbGxzPD0xMCYmaXNWYWxpZFBhcnRpdGlvbihmb2lsQ2hhbmNlKSYmaXNWYWxpZFBhcnRpdGlvbihjYXRlZ29yeUNoYW5jZSkmJmlzVmFsaWRQYXJ0aXRpb24ocmFyaXR5Q2hhbmNlKSYmaXNWYWxpZFBhcnRpdGlvbih0ZWFtQ2hhbmNlKSYmdm9pZCAwIT09Y2FyZHNQZXJQYWNrJiYibnVtYmVyIj09dHlwZW9mIGNhcmRzUGVyUGFjayYmTnVtYmVyLmlzSW50ZWdlcihjYXJkc1BlclBhY2spJiZjYXJkc1BlclBhY2s+PTEmJmNhcmRzUGVyUGFjazw9MzAsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSksaGFzRW5vdWdoQmFsYW5jZT1hd2FpdCB2ZXJpZnlUb2tlbkJhbGFuY2UocGFyYW1zLnJlZ2lzdGVyRmVlLCJCRUUiLGFwaS5zZW5kZXIpO2lmKGFwaS5hc3NlcnQoaGFzRW5vdWdoQmFsYW5jZSwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSByZWdpc3RyYXRpb24gZmVlIikpe2NvbnN0IHBhY2tUb2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpwYWNrU3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09cGFja1Rva2VuLCJwYWNrIHN5bWJvbCBtdXN0IGV4aXN0Iikpe2NvbnN0IHVuZGVyTWFuYWdlbWVudD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibWFuYWdlZE5mdHMiLHtuZnQ6bmZ0U3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dW5kZXJNYW5hZ2VtZW50LCJORlQgbm90IHVuZGVyIG1hbmFnZW1lbnQiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgibmZ0IiwibmZ0cyIse3N5bWJvbDpuZnRTeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1uZnQsIk5GVCBzeW1ib2wgbXVzdCBleGlzdCIpJiZhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCB0byByZWdpc3RlciIpKXtjb25zdCBzZXR0aW5ncz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFja3MiLHtzeW1ib2w6cGFja1N5bWJvbCxuZnQ6bmZ0U3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsPT09c2V0dGluZ3MsInBhY2sgYWxyZWFkeSByZWdpc3RlcmVkIGZvciAiK25mdFN5bWJvbCkpe2lmKCFhcGkuYXNzZXJ0KGVkaXRpb24udG9TdHJpbmcoKWluIHVuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZ3x8ZWRpdGlvbk5hbWUmJiEoZWRpdGlvbi50b1N0cmluZygpaW4gdW5kZXJNYW5hZ2VtZW50LmVkaXRpb25NYXBwaW5nKSwibXVzdCBwcm92aWRlIGEgbmFtZSBmb3IgdGhlIG5ldyBlZGl0aW9uIikpcmV0dXJuITE7aWYoIWF3YWl0IHRyYW5zZmVyRmVlKHBhcmFtcy5yZWdpc3RlckZlZSwibnVsbCIsaXNTaWduZWRXaXRoQWN0aXZlS2V5KSlyZXR1cm4hMTtjb25zdCBuZXdTZXR0aW5ncz17YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpwYWNrU3ltYm9sLG5mdDpuZnRTeW1ib2wsZWRpdGlvbjplZGl0aW9uLGNhcmRzUGVyUGFjazpjYXJkc1BlclBhY2ssZm9pbENoYW5jZTpmb2lsQ2hhbmNlLGNhdGVnb3J5Q2hhbmNlOmNhdGVnb3J5Q2hhbmNlLHJhcml0eUNoYW5jZTpyYXJpdHlDaGFuY2UsdGVhbUNoYW5jZTp0ZWFtQ2hhbmNlLG51bVJvbGxzOm51bVJvbGxzLGlzRmluYWxpemVkOiExfTtpZighKGVkaXRpb24udG9TdHJpbmcoKWluIHVuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZykpe2NvbnN0IG5ld01hcHBpbmc9e25leHRUeXBlSWQ6MCxlZGl0aW9uTmFtZTplZGl0aW9uTmFtZSxjYXRlZ29yeVJPOiExLHJhcml0eVJPOiExLHRlYW1STzohMSxuYW1lUk86ITF9O3VuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZ1tlZGl0aW9uLnRvU3RyaW5nKCldPW5ld01hcHBpbmcsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWFuYWdlZE5mdHMiLHVuZGVyTWFuYWdlbWVudCl9cmV0dXJuIGF3YWl0IGFwaS5kYi5pbnNlcnQoInBhY2tzIixuZXdTZXR0aW5ncyksYXBpLmVtaXQoInJlZ2lzdGVyUGFjayIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6cGFja1N5bWJvbCxuZnQ6bmZ0U3ltYm9sfSksITB9fX19fX1yZXR1cm4hMX0sYWN0aW9ucy5jcmVhdGVOZnQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e25hbWU6bmFtZSxvcmdOYW1lOm9yZ05hbWUscHJvZHVjdE5hbWU6cHJvZHVjdE5hbWUsc3ltYm9sOnN5bWJvbCx1cmw6dXJsLGlzRm9pbFJlYWRPbmx5OmlzRm9pbFJlYWRPbmx5LGlzVHlwZVJlYWRPbmx5OmlzVHlwZVJlYWRPbmx5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmKHZvaWQgMD09PWlzRm9pbFJlYWRPbmx5fHwiYm9vbGVhbiI9PXR5cGVvZiBpc0ZvaWxSZWFkT25seSkmJih2b2lkIDA9PT1pc1R5cGVSZWFkT25seXx8ImJvb2xlYW4iPT10eXBlb2YgaXNUeXBlUmVhZE9ubHkpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBuZnRQYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLCJwYXJhbXMiLHt9KSx7bmZ0Q3JlYXRpb25GZWU6bmZ0Q3JlYXRpb25GZWV9PW5mdFBhcmFtcyxoYXNFbm91Z2hCYWxhbmNlPWF3YWl0IHZlcmlmeVRva2VuQmFsYW5jZShuZnRDcmVhdGlvbkZlZSwiQkVFIixhcGkuc2VuZGVyKTtpZihhcGkuYXNzZXJ0KGhhc0Vub3VnaEJhbGFuY2UsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgTkZUIGNyZWF0aW9uIikpe2xldCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbD09PW5mdCwic3ltYm9sIGFscmVhZHkgZXhpc3RzIikmJihhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsImNyZWF0ZSIse25hbWU6bmFtZSxzeW1ib2w6c3ltYm9sLG9yZ05hbWU6b3JnTmFtZSxwcm9kdWN0TmFtZTpwcm9kdWN0TmFtZSx1cmw6dXJsLGF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHM6W10sYXV0aG9yaXplZElzc3VpbmdDb250cmFjdHM6WyJwYWNrbWFuYWdlciJdLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSxuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pLGFwaS5hc3NlcnQobnVsbCE9PW5mdCwiZXJyb3IgY3JlYXRpbmcgTkZUIikpKXtjb25zdCBmaW5hbElzRm9pbFJlYWRPbmx5PXZvaWQgMD09PWlzRm9pbFJlYWRPbmx5fHxpc0ZvaWxSZWFkT25seSxmaW5hbElzVHlwZVJlYWRPbmx5PXZvaWQgMD09PWlzVHlwZVJlYWRPbmx5fHxpc1R5cGVSZWFkT25seTthd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsImFkZFByb3BlcnR5Iix7c3ltYm9sOnN5bWJvbCxuYW1lOiJlZGl0aW9uIix0eXBlOiJudW1iZXIiLGlzUmVhZE9ubHk6ITAsYXV0aG9yaXplZEVkaXRpbmdBY2NvdW50czpbXSxhdXRob3JpemVkRWRpdGluZ0NvbnRyYWN0czpbInBhY2ttYW5hZ2VyIl0saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibmZ0IiwiYWRkUHJvcGVydHkiLHtzeW1ib2w6c3ltYm9sLG5hbWU6ImZvaWwiLHR5cGU6Im51bWJlciIsaXNSZWFkT25seTpmaW5hbElzRm9pbFJlYWRPbmx5LGF1dGhvcml6ZWRFZGl0aW5nQ29udHJhY3RzOlsicGFja21hbmFnZXIiXSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJuZnQiLCJhZGRQcm9wZXJ0eSIse3N5bWJvbDpzeW1ib2wsbmFtZToidHlwZSIsdHlwZToibnVtYmVyIixpc1JlYWRPbmx5OmZpbmFsSXNUeXBlUmVhZE9ubHksYXV0aG9yaXplZEVkaXRpbmdDb250cmFjdHM6WyJwYWNrbWFuYWdlciJdLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSxuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2NvbnN0IHByb3BlcnR5Q291bnQ9T2JqZWN0LmtleXMobmZ0LnByb3BlcnRpZXMpLmxlbmd0aDtpZihhcGkuYXNzZXJ0KDM9PT1wcm9wZXJ0eUNvdW50LCJORlQgY3JlYXRlZCBidXQgZXJyb3IgYWRkaW5nIGRhdGEgcHJvcGVydGllcyIpKXthd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsInNldEdyb3VwQnkiLHtzeW1ib2w6c3ltYm9sLHByb3BlcnRpZXM6WyJlZGl0aW9uIiwiZm9pbCIsInR5cGUiXSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSk7Y29uc3QgbmV3UmVjb3JkPXtuZnQ6c3ltYm9sLGZlZVBvb2w6IjAiLGVkaXRpb25NYXBwaW5nOnt9fTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJtYW5hZ2VkTmZ0cyIsbmV3UmVjb3JkKSxuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2NvbnN0IGdyb3VwQnlDb3VudD1uZnQuZ3JvdXBCeS5sZW5ndGg7YXBpLmFzc2VydCgzPT09Z3JvdXBCeUNvdW50LCJORlQgY3JlYXRlZCB3aXRoIGRhdGEgcHJvcGVydGllcywgYnV0IGVycm9yIHNldHRpbmcgZ3JvdXBCeSIpJiZhcGkuZW1pdCgiY3JlYXRlTmZ0Iix7c3ltYm9sOnN5bWJvbH0pfX19fX07Y29uc3QgZ2VuZXJhdGVSYW5kb21JbnN0YW5jZT0oc2V0dGluZ3MsbmZ0U3ltYm9sLHRvLHR5cGVzKT0+e2NvbnN0IGZvaWw9ZG9SYW5kb21Sb2xsKHNldHRpbmdzLmZvaWxDaGFuY2UpO2xldCBjYW5kaWRhdGVUeXBlcz1bXSxyb2xsQ291bnQ9MDtmb3IoOzA9PT1jYW5kaWRhdGVUeXBlcy5sZW5ndGgmJnJvbGxDb3VudDxzZXR0aW5ncy5udW1Sb2xsczspe2NvbnN0IGNhdGVnb3J5PWRvUmFuZG9tUm9sbChzZXR0aW5ncy5jYXRlZ29yeUNoYW5jZSkscmFyaXR5PWRvUmFuZG9tUm9sbChzZXR0aW5ncy5yYXJpdHlDaGFuY2UpLHRlYW09ZG9SYW5kb21Sb2xsKHNldHRpbmdzLnRlYW1DaGFuY2UpO2NhbmRpZGF0ZVR5cGVzPXR5cGVzLmZpbHRlcih0PT50LmNhdGVnb3J5PT09Y2F0ZWdvcnkmJnQucmFyaXR5PT09cmFyaXR5JiZ0LnRlYW09PT10ZWFtKSxyb2xsQ291bnQrPTF9Y29uc3QgdHlwZT1jYW5kaWRhdGVUeXBlcy5sZW5ndGg+MD9jYW5kaWRhdGVUeXBlc1tNYXRoLmZsb29yKGFwaS5yYW5kb20oKSpjYW5kaWRhdGVUeXBlcy5sZW5ndGgpXS50eXBlSWQ6MDtyZXR1cm57c3ltYm9sOm5mdFN5bWJvbCxmcm9tVHlwZToiY29udHJhY3QiLHRvOnRvLGZlZVN5bWJvbDoiQkVFIixwcm9wZXJ0aWVzOntlZGl0aW9uOnNldHRpbmdzLmVkaXRpb24sZm9pbDpmb2lsLHR5cGU6dHlwZX19fTthY3Rpb25zLm9wZW49YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3BhY2tTeW1ib2w6cGFja1N5bWJvbCxuZnRTeW1ib2w6bmZ0U3ltYm9sLHBhY2tzOnBhY2tzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQocGFja1N5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBwYWNrU3ltYm9sJiZuZnRTeW1ib2wmJiJzdHJpbmciPT10eXBlb2YgbmZ0U3ltYm9sJiZ2b2lkIDAhPT1wYWNrcyYmIm51bWJlciI9PXR5cGVvZiBwYWNrcyYmTnVtYmVyLmlzSW50ZWdlcihwYWNrcykmJnBhY2tzPj0xJiZwYWNrczw9OTk5LCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBzZXR0aW5ncz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFja3MiLHtzeW1ib2w6cGFja1N5bWJvbCxuZnQ6bmZ0U3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09c2V0dGluZ3MsInBhY2sgZG9lcyBub3Qgb3BlbiB0aGlzIE5GVCIpKXtjb25zdCBoYXNFbm91Z2hQYWNrcz1hd2FpdCB2ZXJpZnlUb2tlbkJhbGFuY2UocGFja3MscGFja1N5bWJvbCxhcGkuc2VuZGVyKTtpZihhcGkuYXNzZXJ0KGhhc0Vub3VnaFBhY2tzLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCBwYWNrcyIpKXtjb25zdCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLCJuZnRzIix7c3ltYm9sOm5mdFN5bWJvbH0pLHVuZGVyTWFuYWdlbWVudD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibWFuYWdlZE5mdHMiLHtuZnQ6bmZ0U3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09bmZ0LCJORlQgc3ltYm9sIG11c3QgZXhpc3QiKSYmYXBpLmFzc2VydChudWxsIT09dW5kZXJNYW5hZ2VtZW50LCJORlQgbm90IHVuZGVyIG1hbmFnZW1lbnQiKSl7Y29uc3QgbnVtTmZ0cz1wYWNrcypzZXR0aW5ncy5jYXJkc1BlclBhY2s7aWYoIWFwaS5hc3NlcnQobnVtTmZ0czw9NjAsInVuYWJsZSB0byBvcGVuIHRoYXQgbWFueSBwYWNrcyBhdCBvbmNlIikpcmV0dXJuITE7Y29uc3QgbmZ0UGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgibmZ0IiwicGFyYW1zIix7fSkse25mdElzc3VhbmNlRmVlOm5mdElzc3VhbmNlRmVlfT1uZnRQYXJhbXMscHJvcGVydHlDb3VudD1PYmplY3Qua2V5cyhuZnQucHJvcGVydGllcykubGVuZ3RoLHRvdGFsSXNzdWFuY2VGZWU9YXBpLkJpZ051bWJlcihuZnRJc3N1YW5jZUZlZS5CRUUpLm11bHRpcGxpZWRCeShwcm9wZXJ0eUNvdW50KzEpLm11bHRpcGxpZWRCeShudW1OZnRzKSxjYW5BZmZvcmRJc3N1YW5jZT1hcGkuQmlnTnVtYmVyKHVuZGVyTWFuYWdlbWVudC5mZWVQb29sKS5ndGUodG90YWxJc3N1YW5jZUZlZSk7aWYoYXBpLmFzc2VydChjYW5BZmZvcmRJc3N1YW5jZSwiY29udHJhY3QgY2Fubm90IGFmZm9yZCBpc3N1YW5jZSIpKXtjb25zdCB0eXBlcz1hd2FpdCBhcGkuZGIuZmluZCgidHlwZXMiLHtuZnQ6bmZ0U3ltYm9sLGVkaXRpb246c2V0dGluZ3MuZWRpdGlvbn0sMCwwLFt7aW5kZXg6InR5cGVJZCIsZGVzY2VuZGluZzohMX0se2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7aWYoIWFwaS5hc3NlcnQodHlwZXMubGVuZ3RoPj0xLCJORlQgbXVzdCBoYXZlIGF0IGxlYXN0IDEgaW5zdGFuY2UgdHlwZSIpKXJldHVybiExO2xldCByZXM9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6cGFja1N5bWJvbCxxdWFudGl0eTpwYWNrcy50b1N0cmluZygpLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KTtpZighYXBpLmFzc2VydChpc1Rva2VuVHJhbnNmZXJWZXJpZmllZChyZXMsYXBpLnNlbmRlciwibnVsbCIscGFja1N5bWJvbCxwYWNrcy50b1N0cmluZygpLCJ0cmFuc2ZlciIpLCJ1bmFibGUgdG8gdHJhbnNmZXIgcGFjayB0b2tlbnMiKSlyZXR1cm4hMTtsZXQgaXNzdWVDb3VudGVyPTAsdmVyaWZpZWRDb3VudD0wLGluc3RhbmNlcz1bXTtmb3IoO2lzc3VlQ291bnRlcjxudW1OZnRzOylpbnN0YW5jZXMucHVzaChnZW5lcmF0ZVJhbmRvbUluc3RhbmNlKHNldHRpbmdzLG5mdFN5bWJvbCxhcGkuc2VuZGVyLHR5cGVzKSksaXNzdWVDb3VudGVyKz0xLDEwPT09aW5zdGFuY2VzLmxlbmd0aCYmKHJlcz1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsImlzc3VlTXVsdGlwbGUiLHtpbnN0YW5jZXM6aW5zdGFuY2VzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSx2ZXJpZmllZENvdW50Kz1jb3VudE5mdElzc3VhbmNlKHJlcywicGFja21hbmFnZXIiLGFwaS5zZW5kZXIsbmZ0U3ltYm9sKSxpbnN0YW5jZXM9W10pO3JldHVybiBpbnN0YW5jZXMubGVuZ3RoPjAmJihyZXM9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJuZnQiLCJpc3N1ZU11bHRpcGxlIix7aW5zdGFuY2VzOmluc3RhbmNlcyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSksdmVyaWZpZWRDb3VudCs9Y291bnROZnRJc3N1YW5jZShyZXMsInBhY2ttYW5hZ2VyIixhcGkuc2VuZGVyLG5mdFN5bWJvbCkpLHVuZGVyTWFuYWdlbWVudC5mZWVQb29sPWNhbGN1bGF0ZUJhbGFuY2UodW5kZXJNYW5hZ2VtZW50LmZlZVBvb2wsdG90YWxJc3N1YW5jZUZlZSw4LCExKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJtYW5hZ2VkTmZ0cyIsdW5kZXJNYW5hZ2VtZW50KSwhIWFwaS5hc3NlcnQodmVyaWZpZWRDb3VudD09PW51bU5mdHMsYHVuYWJsZSB0byBpc3N1ZSBhbGwgTkZUIGluc3RhbmNlczsgJHt2ZXJpZmllZENvdW50fSBvZiAke251bU5mdHN9IGlzc3VlZGApfX19fX1yZXR1cm4hMX07"}}}

Pack Manager Smart Contract | Ecency