{"format":"rivetin-package-v1","manifest":{"manifestVersion":1,"id":"rivetin-disk-smart-info","version":"0.1.3","name":{"zh-CN":"磁盘健康展示","en-US":"Disk SMART information"},"description":{"zh-CN":"CloudTower 4.9.0 受控验收候选：物理盘 SMART 与每日历史、本地化和劣化风险；真实主机采集尚未验收。","en-US":"CloudTower 4.9.0 controlled acceptance candidate: localized disk SMART, daily history and deterioration. Live host collection remains unverified."},"author":"Rivetin contributors","license":"MIT","repository":"https://github.com/sephirothchang/rivetin","homepage":"https://github.com/sephirothchang/rivetin/tree/main/plugins/rivetin-disk-smart-info","compatibility":{"frameworkApi":1,"tower":"CloudTower 4.9.0 controlled acceptance: API/DOM read checks and local tests; live host SMART unverified.","towerBuilds":["4.9.0"],"frameworkMinVersion":"0.1.2"},"frontend":{"format":"rivetin-global-v1","entry":"web/plugin.js"},"permissions":["inventory.read","ssh.channel.use","disk.smart.read"],"locales":["zh-CN","en-US"],"configuration":{"version":1,"schema":{"type":"object","additionalProperties":false,"properties":{"version":{"type":"integer","enum":[1]},"enabled":{"type":"boolean"}},"required":["version","enabled"]},"defaults":{"version":1,"enabled":true}},"lifecycle":{"reset":"defaults","uninstall":"retain-config"},"releaseNotes":{"zh-CN":"0.1.3 本地受控候选：配置页全局手动采集与逐盘结果、失败后只读刷新；VMware/Virtual_disk 型号显示明确标注的本地示例，不混真实历史。依赖框架0.1.2，真实批次与示例尚未实机验收。","en-US":"0.1.3 local controlled candidate: global collection in settings, per-disk results, and read-only reload after acknowledged failure. VMware/Virtual_disk models show clearly labeled local examples isolated from real history. Requires framework 0.1.2. Live batch and example acceptance is pending."},"ssh":{"version":1,"commands":[{"id":"daily-smart","operation":"disk.smart.read","purpose":{"zh-CN":"每日采集已配置磁盘的 SMART 数据","en-US":"Collect SMART for configured disks daily"},"hostScope":"configured","deviceScope":"configured","intervalSeconds":86400}]}},"files":[{"path":"web/plugin.js","sha256":"6b9bd6a6b7acf70977b83ca2a4e040497bcefce3b7a36122603738ebe385d622","data":"KCgpPT57InVzZSBzdHJpY3QiO2NvbnN0IGU9e2Q6KHQsbik9Pntmb3IodmFyIHIgaW4gbillLm8obixyKSYmIWUubyh0LHIpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLHtlbnVtZXJhYmxlOiEwLGdldDpuW3JdfSl9LG86KGUsdCk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpLHI6ZT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9fTtsZXQgdD17fTtlLnIodCksZS5kKHQse2RlZmF1bHQ6KCk9PnVlfSk7Y29uc3Qgbj0icml2ZXRpbi1kaXNrLXNtYXJ0LWluZm8iLHI9Ii9hcGkvcml2ZXRpbi92MS9jb25maWciO2Z1bmN0aW9uIG8oZSl7aWYoIWV8fCJlbmFibGVkLHZlcnNpb24iIT09T2JqZWN0LmtleXMoZSkuc29ydCgpLmpvaW4oKXx8MSE9PWUudmVyc2lvbnx8ImJvb2xlYW4iIT10eXBlb2YgZS5lbmFibGVkKXRocm93IG5ldyBFcnJvcigiSU5WQUxJRF9TRVRUSU5HUyIpO3JldHVybnt2ZXJzaW9uOjEsZW5hYmxlZDplLmVuYWJsZWR9fWNvbnN0IGE9e2lkOm4sZGVmYXVsdHM6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWU/e3ZlcnNpb246MSxlbmFibGVkOiEwfTpvKGUpfSx2YWxpZGF0ZTpvLGVxdWFsOihlLHQpPT5lLnZlcnNpb249PT10LnZlcnNpb24mJmUuZW5hYmxlZD09PXQuZW5hYmxlZCxzZWVkOmU9PmV9LGk9InJpdmV0aW4ucGVyc29uYWwudjEiLHM9L15yaXZldGluLVthLXowLTldKyg/Oi1bYS16MC05XSspKiQvLGw9ZT0+InN0cmluZyI9PXR5cGVvZiBlJiZlLmxlbmd0aDw9MTAwJiZzLnRlc3QoZSksZD0iL2FwaS9yaXZldGluL3YxIjtmdW5jdGlvbiBjKGUpe3RyeXtjb25zdCB0PUpTT04ucGFyc2UoZS5sb2NhbFN0b3JhZ2U/LmdldEl0ZW0oInRva2VuIil8fCJudWxsIik/LnZhbHVlO2lmKCJzdHJpbmciPT10eXBlb2YgdCYmdC5sZW5ndGg8ODE5MiYmIS9bXHJcbl0vLnRlc3QodCkpcmV0dXJue0F1dGhvcml6YXRpb246dH19Y2F0Y2h7fXJldHVybnt9fWZ1bmN0aW9uIHUoZSx0KXtpZighZXx8IU51bWJlci5pc1NhZmVJbnRlZ2VyKGUucmV2aXNpb24pfHxlLnJldmlzaW9uPDB8fG51bGwhPT1lLnVwZGF0ZWRBdCYmInN0cmluZyIhPXR5cGVvZiBlLnVwZGF0ZWRBdCl0aHJvdyBuZXcgRXJyb3IoIklOVkFMSURfQ09ORklHX1JFU1BPTlNFIik7cmV0dXJuey4uLmUsc2V0dGluZ3M6dChlLnNldHRpbmdzKX19ZnVuY3Rpb24gcChlLHQsbj0iL2FwaS9yaXZldGluL3YxL2NvbmZpZyIpe2NvbnN0e2RlZmF1bHRzOnIsdmFsaWRhdGU6b309dCxhPWZ1bmN0aW9uKGUpe2lmKCFsKGUpKXRocm93IG5ldyBFcnJvcigiSU5WQUxJRF9QTFVHSU5fSUQiKTtyZXR1cm4gZX0odC5pZCksaT1uZXcgVVJMKG4sZS5sb2NhdGlvbi5vcmlnaW4pO2lmKGkub3JpZ2luIT09ZS5sb2NhdGlvbi5vcmlnaW4pdGhyb3cgbmV3IEVycm9yKCJDT05GSUdVUkFUSU9OX09SSUdJTl9NSVNNQVRDSCIpO2lmKCIvYXBpL3JpdmV0aW4vdjEvY29uZmlnIiE9PWkucGF0aG5hbWV8fGkuc2VhcmNoKXRocm93IG5ldyBFcnJvcigiSU5WQUxJRF9DT05GSUdVUkFUSU9OX0VORFBPSU5UIik7Y29uc3Qgcz1mdW5jdGlvbihlKXtjb25zdCB0PWFzeW5jKHQsbj0iR0VUIixyLHtzaWduYWw6b309e30pPT57aWYoInN0cmluZyIhPXR5cGVvZiB0fHwhdC5zdGFydHNXaXRoKCIvIil8fHQuc3RhcnRzV2l0aCgiLy8iKSl0aHJvdyBuZXcgRXJyb3IoIklOVkFMSURfQVBJX1JPVVRFIik7Y29uc3QgYT1uZXcgVVJMKHQsImh0dHA6Ly9yaXZldGluLmludmFsaWQiKS5zZWFyY2hQYXJhbXMuZ2V0KCJwbHVnaW5JZCIpO2lmKG51bGwhPT1hJiYhbChhKXx8ciYmIm9iamVjdCI9PXR5cGVvZiByJiZPYmplY3QuaGFzT3duKHIsInBsdWdpbklkIikmJiFsKHIucGx1Z2luSWQpKXRocm93IG5ldyBFcnJvcigiSU5WQUxJRF9QTFVHSU5fSUQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoIWUucmVzcG9uc2Uub2spe2NvbnN0IHQ9bmV3IEVycm9yKC9eW0EtWl1bQS1aMC05X117MCw5OX0kLy50ZXN0KGUudmFsdWU/LmVycm9yfHwiIik/ZS52YWx1ZS5lcnJvcjo0MDQ9PT1lLnJlc3BvbnNlLnN0YXR1cz8iTk9UX0ZPVU5EIjoiUkVRVUVTVF9GQUlMRUQiKTt0aHJvdyB0LmNvZGU9dC5tZXNzYWdlLHQuc3RhdHVzPWUucmVzcG9uc2Uuc3RhdHVzLHR9cmV0dXJuIGUudmFsdWV9KGF3YWl0IGFzeW5jIGZ1bmN0aW9uKHQsbj0iR0VUIixyLG8pe2NvbnN0IGE9bmV3IEFib3J0Q29udHJvbGxlcixpPXNldFRpbWVvdXQoKCk9PmEuYWJvcnQoKSw4ZTMpLHM9KCk9PmEuYWJvcnQoKTtvPy5hYm9ydGVkJiZhLmFib3J0KCksbz8uYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHMse29uY2U6ITB9KTt0cnl7Y29uc3Qgbz1hd2FpdCBlLmZldGNoKHQse21ldGhvZDpuLGNyZWRlbnRpYWxzOiJzYW1lLW9yaWdpbiIsY2FjaGU6Im5vLXN0b3JlIixyZWRpcmVjdDoiZXJyb3IiLHNpZ25hbDphLnNpZ25hbCxoZWFkZXJzOnsuLi5jKGUpLC4uLnZvaWQgMCE9PXI/eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn06e319LC4uLnZvaWQgMCE9PXI/e2JvZHk6InN0cmluZyI9PXR5cGVvZiByP3I6SlNPTi5zdHJpbmdpZnkocil9Ont9fSk7bGV0IGk7dHJ5e2k9YXdhaXQgby5qc29uKCl9Y2F0Y2h7aWYoNDA0PT09by5zdGF0dXMpcmV0dXJue3Jlc3BvbnNlOm8sdmFsdWU6bnVsbH07dGhyb3cgbmV3IEVycm9yKCJJTlZBTElEX0FQSV9SRVNQT05TRSIpfXJldHVybntyZXNwb25zZTpvLHZhbHVlOml9fWZpbmFsbHl7Y2xlYXJUaW1lb3V0KGkpLG8/LnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixzKX19KGQrdCxuLHIsbykpfTtyZXR1cm4gdC5hc3NldFVybD1hc3luYyhlLHQpPT57aWYoIWwoZS5pZCkpdGhyb3cgbmV3IEVycm9yKCJJTlZBTElEX1BMVUdJTl9JRCIpO3JldHVybmAke2R9L2Fzc2V0cy8ke2UuaWR9LyR7ZS5wYWNrYWdlSWR9LyR7dH1gfSx0fShlKTthc3luYyBmdW5jdGlvbiBwKGUsdCl7Y29uc3Qgbj1hd2FpdCBzKCIvY29uZmlnIixlLHQ/e3BsdWdpbklkOmEsc2V0dGluZ3M6dH06dm9pZCAwKTtpZigxIT09bj8udmVyc2lvbnx8IW4ucGx1Z2luc3x8QXJyYXkuaXNBcnJheShuLnBsdWdpbnMpKXRocm93IG5ldyBFcnJvcigiSU5WQUxJRF9DT05GSUdfUkVTUE9OU0UiKTtpZihuLmVycm9ycz8uW2FdKXRocm93IG5ldyBFcnJvcigiQ09ORklHVVJBVElPTl9VTkFWQUlMQUJMRSIpO3JldHVybiB1KE9iamVjdC5oYXNPd24obi5wbHVnaW5zLGEpP24ucGx1Z2luc1thXTp7cmV2aXNpb246MCx1cGRhdGVkQXQ6bnVsbCxzZXR0aW5nczpyKCl9LG8pfXJldHVybntsb2FkOigpPT5wKCJHRVQiKSxzYXZlOmU9PnAoIlBVVCIsZSl9fW5ldyBXZWFrTWFwO2NvbnN0IF89ZT0+ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYhQXJyYXkuaXNBcnJheShlKSxBPWU9PiJzdHJpbmciPT10eXBlb2YgZT9lLnNsaWNlKDAsMTYwKToiIjtmdW5jdGlvbiBtKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT9OdW1iZXIuaXNTYWZlSW50ZWdlcihlKSYmZT49MD9TdHJpbmcoZSk6bnVsbDoic3RyaW5nIj09dHlwZW9mIGUmJi9eXGR7MSw0MH0kLy50ZXN0KGUpP0JpZ0ludChlKS50b1N0cmluZygpOm51bGx9Y29uc3QgaD0oZSx0KT0+bShlPy5bYCR7dH1fc2BdKT8/bShlPy5bdF0pLGY9ZT0+Im51bWJlciI9PXR5cGVvZiBlJiZOdW1iZXIuaXNGaW5pdGUoZSk/ZTpudWxsLFQ9e3Vua25vd246LTEsbm9ybWFsOjAseWVsbG93OjEscmVkOjIsZGFya3JlZDozfSxnPWU9PmUucmVkdWNlKChlLHQpPT5UW3RdPlRbZV0/dDplLCJ1bmtub3duIiksRT1uZXcgTWFwKFtbIlJlYWxsb2NhdGVkX1NlY3Rvcl9DdCIsNV0sWyJSZWFsbG9jYXRlZF9FdmVudF9Db3VudCIsMTk2XSxbIkN1cnJlbnRfUGVuZGluZ19TZWN0b3IiLDE5N10sWyJPZmZsaW5lX1VuY29ycmVjdGFibGUiLDE5OF0sWyJSZXBvcnRlZF9VbmNvcnJlY3QiLDE4N10sWyJVRE1BX0NSQ19FcnJvcl9Db3VudCIsMTk5XV0pO2Z1bmN0aW9uIFMoZSl7aWYoIV8oZSkpdGhyb3cgbmV3IEVycm9yKCJJTlZBTElEX1NNQVJUX0RPQ1VNRU5UIik7Y29uc3QgdD1lLnNtYXJ0Y3RsPy5leGl0X3N0YXR1cztpZih2b2lkIDAhPT10JiYoIU51bWJlci5pc0ludGVnZXIodCl8fHQ8MHx8dD4yNTV8fDcmdCkpdGhyb3cgbmV3IEVycm9yKCJTTUFSVF9DT0xMRUNUSU9OX0ZBSUxFRCIpO2lmKCExPT09ZS5zbWFydF9zdXBwb3J0Py5hdmFpbGFibGV8fCExPT09ZS5zbWFydF9zdXBwb3J0Py5lbmFibGVkKXRocm93IG5ldyBFcnJvcigiU01BUlRfVU5BVkFJTEFCTEUiKTtjb25zdCBuPVtdO2Z1bmN0aW9uIHIoZSx0LHIsbz0iIixhPXt9KXtuLnB1c2goe2lkOmUsbmFtZTp0LHZhbHVlOnIsdW5pdDpvLGRpcmVjdGlvbjpudWxsLHJpc2s6bnVsbD09PXI/InVua25vd24iOiJub3JtYWwiLHJlYXNvbjoiaW5mb3JtYXRpb25hbCIsLi4uYX0pfWlmKCJib29sZWFuIj09dHlwZW9mIGUuc21hcnRfc3RhdHVzPy5wYXNzZWR8fDgmdCl7Y29uc3Qgbj0hMD09PWUuc21hcnRfc3RhdHVzPy5wYXNzZWQmJiEoOCZ0KTtyKCJoZWFsdGgiLCJoZWFsdGgiLG4/IjEiOiIwIiwiIix7cmlzazpuPyJub3JtYWwiOiJkYXJrcmVkIixyZWFzb246bj8iaW5mb3JtYXRpb25hbCI6ImZhaWxlZCJ9KX0xNiZ0P3IoImF0YV90aHJlc2hvbGRfc3RhdHVzIiwiYXRhX3RocmVzaG9sZF9zdGF0dXMiLCIxIiwiIix7cmlzazoiZGFya3JlZCIscmVhc29uOiJ0aHJlc2hvbGQifSk6MzImdCYmcigiYXRhX3RocmVzaG9sZF9zdGF0dXMiLCJhdGFfdGhyZXNob2xkX3N0YXR1cyIsIjEiLCIiLHtyaXNrOiJyZWQiLHJlYXNvbjoiaGlzdG9yaWNhbCJ9KSwxMjgmdCYmcigic2VsZl90ZXN0X2Vycm9ycyIsInNlbGZfdGVzdF9lcnJvcnMiLCIxIiwiIix7cmlzazoieWVsbG93IixyZWFzb246Imhpc3RvcmljYWwifSksbnVsbCE9PWYoZS50ZW1wZXJhdHVyZT8uY3VycmVudCkmJnIoInRlbXBlcmF0dXJlIiwidGVtcGVyYXR1cmUiLFN0cmluZyhlLnRlbXBlcmF0dXJlLmN1cnJlbnQpLCLCsEMiKSx2b2lkIDA9PT1lLnBvd2VyX29uX3RpbWU/LmhvdXJzJiZ2b2lkIDA9PT1lLnBvd2VyX29uX3RpbWU/LmhvdXJzX3N8fHIoInBvd2VyX29uX2hvdXJzIiwicG93ZXJfb25faG91cnMiLGgoZS5wb3dlcl9vbl90aW1lLCJob3VycyIpLCJoIiksdm9pZCAwPT09ZS5wb3dlcl9jeWNsZV9jb3VudCYmdm9pZCAwPT09ZS5wb3dlcl9jeWNsZV9jb3VudF9zfHxyKCJwb3dlcl9jeWNsZXMiLCJwb3dlcl9jeWNsZXMiLGgoZSwicG93ZXJfY3ljbGVfY291bnQiKSk7Y29uc3Qgbz1lLm52bWVfc21hcnRfaGVhbHRoX2luZm9ybWF0aW9uX2xvZztpZihfKG8pKXtmb3IoY29uc3QgZSBvZlsiY3JpdGljYWxfd2FybmluZyIsImF2YWlsYWJsZV9zcGFyZSIsInBlcmNlbnRhZ2VfdXNlZCIsIm1lZGlhX2Vycm9ycyIsIm51bV9lcnJfbG9nX2VudHJpZXMiLCJ1bnNhZmVfc2h1dGRvd25zIiwiZGF0YV91bml0c19yZWFkIiwiZGF0YV91bml0c193cml0dGVuIiwicG93ZXJfb25faG91cnMiLCJwb3dlcl9jeWNsZXMiXSl7aWYodm9pZCAwPT09b1tlXSYmdm9pZCAwPT09b1tgJHtlfV9zYF0pY29udGludWU7aWYobi5zb21lKHQ9PnQuaWQ9PT1lKSljb250aW51ZTtjb25zdCB0PWgobyxlKSxhPW51bGw9PT10P251bGw6QmlnSW50KHQpLGk9e307aWYoImNyaXRpY2FsX3dhcm5pbmciPT09ZSYmbnVsbCE9PWEmJk9iamVjdC5hc3NpZ24oaSx7cmlzazowbj09PWE/Im5vcm1hbCI6ImRhcmtyZWQiLHJlYXNvbjowbj09PWE/ImluZm9ybWF0aW9uYWwiOiJjcml0aWNhbCJ9KSwicGVyY2VudGFnZV91c2VkIj09PWUmJm51bGwhPT1hJiZPYmplY3QuYXNzaWduKGkse2RpcmVjdGlvbjoidXAiLHJpc2s6YT49MTAwbj8iZGFya3JlZCI6YT49OTBuPyJyZWQiOmE+PTgwbj8ieWVsbG93Ijoibm9ybWFsIixyZWFzb246YT49ODBuPyJlbmR1cmFuY2UiOiJpbmZvcm1hdGlvbmFsIn0pLCJhdmFpbGFibGVfc3BhcmUiPT09ZSYmbnVsbCE9PWEpe2NvbnN0IGU9aChvLCJhdmFpbGFibGVfc3BhcmVfdGhyZXNob2xkIik7T2JqZWN0LmFzc2lnbihpLHtkaXJlY3Rpb246ImRvd24iLHRocmVzaG9sZDplLHJpc2s6bnVsbCE9PWUmJmE8QmlnSW50KGUpPyJkYXJrcmVkIjoibm9ybWFsIixyZWFzb246bnVsbCE9PWUmJmE8QmlnSW50KGUpPyJ0aHJlc2hvbGQiOiJpbmZvcm1hdGlvbmFsIn0pfSJtZWRpYV9lcnJvcnMiPT09ZSYmbnVsbCE9PWEmJk9iamVjdC5hc3NpZ24oaSx7ZGlyZWN0aW9uOiJ1cCIscmlzazphPjBuPyJyZWQiOiJub3JtYWwiLHJlYXNvbjphPjBuPyJjb3VudGVyIjoiaW5mb3JtYXRpb25hbCIsY291bnRlcjohMH0pLHIoZSxlLHQsWyJwZXJjZW50YWdlX3VzZWQiLCJhdmFpbGFibGVfc3BhcmUiXS5pbmNsdWRlcyhlKT8iJSI6InBvd2VyX29uX2hvdXJzIj09PWU/ImgiOiIiLGkpfW4uc29tZShlPT4idGVtcGVyYXR1cmUiPT09ZS5pZCl8fG51bGw9PT1mKG8udGVtcGVyYXR1cmUpfHxyKCJ0ZW1wZXJhdHVyZSIsInRlbXBlcmF0dXJlIixTdHJpbmcoby50ZW1wZXJhdHVyZSksIsKwQyIpfWNvbnN0IGE9ZS5hdGFfc21hcnRfYXR0cmlidXRlcz8udGFibGU7aWYodm9pZCAwIT09YSYmKCFBcnJheS5pc0FycmF5KGEpfHxhLmxlbmd0aD4yNTYpKXRocm93IG5ldyBFcnJvcigiSU5WQUxJRF9BVEFfVEFCTEUiKTtjb25zdCBpPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgYXx8W10pe2lmKCFfKGUpfHwhTnVtYmVyLmlzSW50ZWdlcihlLmlkKXx8ZS5pZDwxfHxlLmlkPjI1NXx8aS5oYXMoZS5pZCkpdGhyb3cgbmV3IEVycm9yKCJJTlZBTElEX0FUQV9BVFRSSUJVVEUiKTtpLmFkZChlLmlkKTtjb25zdCB0PUEoZS5uYW1lKXx8YEF0dHJpYnV0ZV8ke2UuaWR9YCxuPWYoZS52YWx1ZSksbz1mKGUudGhyZXNoKSxhPWgoZS5yYXcsInZhbHVlIikscz1FLmdldCh0KT09PWUuaWQsbD1udWxsIT09biYmbnVsbCE9PW8mJm8+MCYmbjw9byxkPSJzdHJpbmciPT10eXBlb2YgZS53aGVuX2ZhaWxlZCYmIVsiIiwiLSJdLmluY2x1ZGVzKGUud2hlbl9mYWlsZWQudHJpbSgpKTtsZXQgYz1udWxsPT09YSYmbnVsbD09PW4/InVua25vd24iOiJub3JtYWwiLHU9InZlbmRvciI7bHx8Im5vdyI9PT1lLndoZW5fZmFpbGVkPyhjPSJkYXJrcmVkIix1PSJ0aHJlc2hvbGQiKTpkPyhjPSJyZWQiLHU9Imhpc3RvcmljYWwiKTpzJiZudWxsIT09YSYmQmlnSW50KGEpPjBuJiYoYz0iVURNQV9DUkNfRXJyb3JfQ291bnQiPT09dD8ieWVsbG93IjoicmVkIix1PSJjb3VudGVyIikscihgYXRhOiR7ZS5pZH1gLHQsYSwiIix7bm9ybWFsaXplZDpuLHdvcnN0OmYoZS53b3JzdCksdGhyZXNob2xkOm8scmF3VGV4dDpBKGUucmF3Py5zdHJpbmcpLGRpcmVjdGlvbjpzPyJ1cCI6bnVsbCxjb3VudGVyOnMscmlzazpjLHJlYXNvbjp1fSl9aWYodm9pZCAwIT09ZS5zY3NpX2dyb3duX2RlZmVjdF9saXN0fHx2b2lkIDAhPT1lLnNjc2lfZ3Jvd25fZGVmZWN0X2xpc3Rfcyl7Y29uc3QgdD1oKGUsInNjc2lfZ3Jvd25fZGVmZWN0X2xpc3QiKTtyKCJzY3NpX2dyb3duX2RlZmVjdF9saXN0Iiwic2NzaV9ncm93bl9kZWZlY3RfbGlzdCIsdCwiIix7ZGlyZWN0aW9uOiJ1cCIsY291bnRlcjohMCxyaXNrOm51bGw9PT10PyJ1bmtub3duIjpCaWdJbnQodCk+MG4/InJlZCI6Im5vcm1hbCIscmVhc29uOm51bGwhPT10JiZCaWdJbnQodCk+MG4/ImNvdW50ZXIiOiJpbmZvcm1hdGlvbmFsIn0pfWZvcihjb25zdCB0IG9mWyJyZWFkIiwid3JpdGUiLCJ2ZXJpZnkiXSl7Y29uc3Qgbj1lLnNjc2lfZXJyb3JfY291bnRlcl9sb2c/Llt0XTtpZighbnx8dm9pZCAwPT09bi50b3RhbF91bmNvcnJlY3RlZF9lcnJvcnMmJnZvaWQgMD09PW4udG90YWxfdW5jb3JyZWN0ZWRfZXJyb3JzX3MpY29udGludWU7Y29uc3Qgbz1oKG4sInRvdGFsX3VuY29ycmVjdGVkX2Vycm9ycyIpO3IoYHNjc2lfJHt0fV9lcnJvcnNgLGBzY3NpXyR7dH1fZXJyb3JzYCxvLCIiLHtkaXJlY3Rpb246InVwIixjb3VudGVyOiEwLHJpc2s6bnVsbD09PW8/InVua25vd24iOkJpZ0ludChvKT4wbj8icmVkIjoibm9ybWFsIixyZWFzb246bnVsbCE9PW8mJkJpZ0ludChvKT4wbj8iY291bnRlciI6ImluZm9ybWF0aW9uYWwifSl9aWYoIW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiU01BUlRfVU5BVkFJTEFCTEUiKTtyZXR1cm57cHJvdG9jb2w6bz8iTlZNZSI6YT8iQVRBIjpbIkFUQSIsIk5WTWUiLCJTQ1NJIl0uaW5jbHVkZXMoZS5kZXZpY2U/LnByb3RvY29sKT9lLmRldmljZS5wcm90b2NvbDoiVW5rbm93biIsbWV0cmljczpuLGV4aXRTdGF0dXM6dD8/bnVsbH19ZnVuY3Rpb24gSShlLHQpe2NvbnN0IG49bmV3IE1hcCgodHx8W10pLm1hcChlPT5bZS5pZCxlXSkpO3JldHVybiBlLm1hcChlPT57Y29uc3QgdD1uLmdldChlLmlkKTtsZXQgcj1udWxsLG89bnVsbCxhPW51bGwsaT0ibm8tYmFzZWxpbmUiLHM9ZS5yaXNrLGw9ZS5yZWFzb247aWYodCYmZS5uYW1lPT09dC5uYW1lJiZudWxsIT09ZS52YWx1ZSYmbnVsbCE9PXQudmFsdWUmJi9eXGQrJC8udGVzdChlLnZhbHVlKSYmL15cZCskLy50ZXN0KHQudmFsdWUpKXtjb25zdCBuPUJpZ0ludChlLnZhbHVlKS1CaWdJbnQodC52YWx1ZSk7cj1uLnRvU3RyaW5nKCksaT0wbj09PW4/InVuY2hhbmdlZCI6ImNoYW5nZWQiLCJ1cCI9PT1lLmRpcmVjdGlvbiYmbjwwbj9pPSJjb3VudGVyLXJlc2V0IjplLmRpcmVjdGlvbiYmKCJ1cCI9PT1lLmRpcmVjdGlvbj9uPjBuOm48MG4pJiYobz0objwwbj8tbjpuKS50b1N0cmluZygpLGk9ImRldGVyaW9yYXRlZCIscz1nKFtzLGUuY291bnRlciYmInJlZCI9PT1lLnJpc2s/ImRhcmtyZWQiOiJ5ZWxsb3ciXSksImRhcmtyZWQiIT09ZS5yaXNrJiYobD0iaW5jcmVhc2VkIikpfXJldHVybiB0Py5uYW1lPT09ZS5uYW1lJiZudWxsIT09ZS5ub3JtYWxpemVkJiZ2b2lkIDAhPT1lLm5vcm1hbGl6ZWQmJm51bGwhPT10Lm5vcm1hbGl6ZWQmJnZvaWQgMCE9PXQubm9ybWFsaXplZCYmZS5ub3JtYWxpemVkPHQubm9ybWFsaXplZCYmKGk9ImRldGVyaW9yYXRlZCIsbz1TdHJpbmcodC5ub3JtYWxpemVkLWUubm9ybWFsaXplZCksYT0ibm9ybWFsaXplZCIscz1nKFtzLCJ5ZWxsb3ciXSksImRhcmtyZWQiIT09ZS5yaXNrJiYobD0ibm9ybWFsaXplZCIpKSx7Li4uZSxkZWx0YTpyLGRldGVyaW9yYXRpb246byxkZXRlcmlvcmF0aW9uS2luZDphLHRyZW5kOmkscmlzazpzLHJlYXNvbjpsfX0pfWNvbnN0IHc9ZT0+InN0cmluZyI9PXR5cGVvZiBlJiYvXig/OlZNd2FyZXxWaXJ0dWFsW18gXWRpc2spL2kudGVzdChlLnRyaW1TdGFydCgpKTtmdW5jdGlvbiBiKGUsdD1EYXRlLm5vdygpKXtpZighZXx8InN0cmluZyIhPXR5cGVvZiBlLmRpc2tJZHx8IS9eW0EtWmEtejAtOV8tXXsxLDEyOH0kLy50ZXN0KGUuZGlza0lkKXx8IXcoZS5tb2RlbCkpdGhyb3cgbmV3IEVycm9yKCJWSVJUVUFMX0RFTU9fTU9ERUxfVU5WRVJJRklFRCIpO2NvbnN0IG49Uyh7c21hcnRjdGw6e2V4aXRfc3RhdHVzOjB9LHNtYXJ0X3N0YXR1czp7cGFzc2VkOiEwfSx0ZW1wZXJhdHVyZTp7Y3VycmVudDozNX0scG93ZXJfb25fdGltZTp7aG91cnM6MjQwMH0sLi4uL252bWUvaS50ZXN0KGUubW9kZWwpP3tudm1lX3NtYXJ0X2hlYWx0aF9pbmZvcm1hdGlvbl9sb2c6e2NyaXRpY2FsX3dhcm5pbmc6MCxhdmFpbGFibGVfc3BhcmU6MTAwLGF2YWlsYWJsZV9zcGFyZV90aHJlc2hvbGQ6MTAscGVyY2VudGFnZV91c2VkOjEyLG1lZGlhX2Vycm9yczowfX06e2RldmljZTp7cHJvdG9jb2w6IkFUQSJ9LGF0YV9zbWFydF9hdHRyaWJ1dGVzOnt0YWJsZTpbe2lkOjUsbmFtZToiUmVhbGxvY2F0ZWRfU2VjdG9yX0N0Iix2YWx1ZToxMDAsd29yc3Q6MTAwLHRocmVzaDoxMCxyYXc6e3ZhbHVlOjB9fSx7aWQ6MTk3LG5hbWU6IkN1cnJlbnRfUGVuZGluZ19TZWN0b3IiLHZhbHVlOjEwMCx3b3JzdDoxMDAsdGhyZXNoOjAscmF3Ont2YWx1ZTowfX0se2lkOjE5OSxuYW1lOiJVRE1BX0NSQ19FcnJvcl9Db3VudCIsdmFsdWU6MjAwLHdvcnN0OjIwMCx0aHJlc2g6MCxyYXc6e3ZhbHVlOjB9fV19fX0pLHI9SShuLm1ldHJpY3MsbnVsbCk7cmV0dXJue3ZpcnR1YWxEZW1vOiEwLGludmVudG9yeTp7ZGlza0lkOmUuZGlza0lkLG1vZGVsOmUubW9kZWwuc2xpY2UoMCwxNjApfSxleGFtcGxlOnsuLi5uLG1ldHJpY3M6cixyaXNrOmcoci5tYXAoZT0+ZS5yaXNrKSksc3RhdHVzOiJvayIsc291cmNlOiJsb2NhbC12aXJ0dWFsLWRlbW8iLGdlbmVyYXRlZEF0Om5ldyBEYXRlKHQpLnRvSVNPU3RyaW5nKCl9LGhhc01vcmU6ITF9fWNvbnN0IEM9ZT0+InN0cmluZyI9PXR5cGVvZiBlJiYvXltBLVphLXowLTlfLV17MSwxMjh9JC8udGVzdChlKSx2PShlLHQpPT5Cb29sZWFuKGUmJnQmJlsiZGlza0lkIiwiaG9zdElkIiwiZGV2aWNlSWQiLCJnZW5lcmF0aW9uIl0uZXZlcnkobj0+ZVtuXT09PXRbbl0pKSxrPWU9PiJzdHJpbmciPT10eXBlb2YgZSYmL15cZHs0fS1cZFxkLVxkXGRUXGRcZDpcZFxkOlxkXGQoPzpcLlxkezEsM30pP1okLy50ZXN0KGUpJiZOdW1iZXIuaXNGaW5pdGUoRGF0ZS5wYXJzZShlKSkmJm5ldyBEYXRlKGUpLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwxOSk9PT1lLnNsaWNlKDAsMTkpLFI9bmV3IFNldChbIm1vY2siLCJob3N0LXNtYXJ0Y3RsIl0pLE49bmV3IFNldChbIlNNQVJUX0NPTExFQ1RJT05fRkFJTEVEIiwiU01BUlRfVU5BVkFJTEFCTEUiLCJTTUFSVF9VTlNVUFBPUlRFRCIsIlNNQVJUX0lOVkFMSURfREFUQSIsIlNNQVJUX0RFVklDRV9DSEFOR0VEIiwiU01BUlRfSURFTlRJVFlfTUlTTUFUQ0giLCJTTUFSVF9FWEVDVVRJT05fVElNRU9VVCIsIlNNQVJUX0VYRUNVVElPTl9DQU5DRUxMRUQiLCJTTUFSVF9PVVRQVVRfSU5WQUxJRCJdKSx5PW5ldyBTZXQoWyJTTUFSVF9OT19TQU1QTEUiLCJTTUFSVF9ESVNLX1VOQk9VTkQiLCJTTUFSVF9DT0xMRUNUSU9OX0ZBSUxFRCIsIlNNQVJUX1VOQVZBSUxBQkxFIiwiU01BUlRfVU5TVVBQT1JURUQiLCJTTUFSVF9JTlZBTElEX0RBVEEiLCJTTUFSVF9ERVZJQ0VfQ0hBTkdFRCIsIlNNQVJUX0lERU5USVRZX01JU01BVENIIiwiU01BUlRfRVhFQ1VUSU9OX1RJTUVPVVQiLCJTTUFSVF9FWEVDVVRJT05fQ0FOQ0VMTEVEIiwiU01BUlRfT1VUUFVUX0lOVkFMSUQiXSksTD1lPT5bZT8uY29kZSxlPy5tZXNzYWdlXS5maW5kKGU9PlsiU01BUlRfR0VORVJBVElPTl9DSEFOR0VEIiwiU01BUlRfSElTVE9SWV9DVVJTT1JfU1RBTEUiLC4uLnldLmluY2x1ZGVzKGUpKXx8IlNNQVJUX1JFQURfRkFJTEVEIixNPWU9PntpZihlLmFib3J0ZWQpdGhyb3cgbmV3IEVycm9yKCJSRVFVRVNUX0NBTkNFTExFRCIpfSxPPWU9Plsib2siLCJzdGFsZSJdLmluY2x1ZGVzKGUuc3RhdHVzKTtmdW5jdGlvbiBEKGUsdCxuPURhdGUubm93KCkpe2lmKCEoZSYmMT09PWUuc2NoZW1hVmVyc2lvbiYmUi5oYXMoZS5zb3VyY2UpJiZ2KGUuaWRlbnRpdHksdCkmJlsib2siLCJzdGFsZSIsInVuYXZhaWxhYmxlIiwidW5zdXBwb3J0ZWQiXS5pbmNsdWRlcyhlLnN0YXR1cykpKXRocm93IG5ldyBFcnJvcigiSU5WQUxJRF9TTUFSVF9SRVNQT05TRSIpO2lmKCEodm9pZCAwPT09ZS5nYXBDb2RlfHxPKGUpJiZOLmhhcyhlLmdhcENvZGUpKSl0aHJvdyBuZXcgRXJyb3IoIklOVkFMSURfU01BUlRfUkVTUE9OU0UiKTtjb25zdCByPWsoZS5jb2xsZWN0ZWRBdCkmJkRhdGUucGFyc2UoZS5jb2xsZWN0ZWRBdCk8PW4rM2U1O2lmKCFPKGUpKXtpZihudWxsIT09ZS5jb2xsZWN0ZWRBdCYmIXIpdGhyb3cgbmV3IEVycm9yKCJJTlZBTElEX1NNQVJUX1JFU1BPTlNFIik7cmV0dXJue3NjaGVtYVZlcnNpb246MSxzb3VyY2U6ZS5zb3VyY2Usc3RhdHVzOmUuc3RhdHVzLGlkZW50aXR5OnQsY29sbGVjdGVkQXQ6ZS5jb2xsZWN0ZWRBdCxjb2RlOnkuaGFzKGUuY29kZSk/ZS5jb2RlOiJTTUFSVF9DT0xMRUNUSU9OX0ZBSUxFRCIsbWV0cmljczpbXSxyaXNrOiJ1bmtub3duIn19aWYoIXJ8fCFlLnNtYXJ0fHxKU09OLnN0cmluZ2lmeShlLnNtYXJ0KS5sZW5ndGg+NTI0Mjg4KXRocm93IG5ldyBFcnJvcigiSU5WQUxJRF9TTUFSVF9SRVNQT05TRSIpO2NvbnN0IG89UyhlLnNtYXJ0KSxhPSJzdGFsZSI9PT1lLnN0YXR1c3x8bi1EYXRlLnBhcnNlKGUuY29sbGVjdGVkQXQpPjEyOTZlNT8ic3RhbGUiOiJvayI7cmV0dXJue3NjaGVtYVZlcnNpb246MSxzb3VyY2U6ZS5zb3VyY2Usc3RhdHVzOmEsaWRlbnRpdHk6dCxjb2xsZWN0ZWRBdDplLmNvbGxlY3RlZEF0LC4uLnZvaWQgMD09PWUuZ2FwQ29kZT97fTp7Z2FwQ29kZTplLmdhcENvZGV9LC4uLm8scmlzazpnKG8ubWV0cmljcy5tYXAoZT0+ZS5yaXNrKSl9fWZ1bmN0aW9uIFUoZSx0KXtjb25zdCBuPU8oZSkmJnQuZmluZCh0PT5PKHQpJiZ2KHQuaWRlbnRpdHksZS5pZGVudGl0eSkmJkRhdGUucGFyc2UodC5jb2xsZWN0ZWRBdCk8RGF0ZS5wYXJzZShlLmNvbGxlY3RlZEF0KSl8fG51bGwscj1JKGUubWV0cmljcyxuPy5tZXRyaWNzKTtyZXR1cm57c2FtcGxlOnsuLi5lLG1ldHJpY3M6cixyaXNrOmcoci5tYXAoZT0+ZS5yaXNrKSl9LHByZXZpb3VzOm59fWFzeW5jIGZ1bmN0aW9uIEgoZSx0LG4scixvPURhdGUubm93KCkpe2lmKHQudmlydHVhbERlbW8pdGhyb3cgbmV3IEVycm9yKCJWSVJUVUFMX0RFTU9fSEFTX05PX0hJU1RPUlkiKTtNKHIpO2NvbnN0IGE9YXdhaXQgZS5yZWFkSGlzdG9yeSh7aWRlbnRpdHk6dC5pZGVudGl0eSxsaW1pdDozMCxjdXJzb3I6bixzaWduYWw6cn0pO2lmKE0ociksIWF8fDEhPT1hLnNjaGVtYVZlcnNpb258fGEuc291cmNlIT09dC5sYXRlc3Quc291cmNlfHwhdihhLmlkZW50aXR5LHQuaWRlbnRpdHkpfHwhQXJyYXkuaXNBcnJheShhLml0ZW1zKXx8YS5pdGVtcy5sZW5ndGg+MzB8fCEobnVsbD09PWEubmV4dEN1cnNvcnx8InN0cmluZyI9PXR5cGVvZiBhLm5leHRDdXJzb3ImJmEubmV4dEN1cnNvci5sZW5ndGg+MCYmYS5uZXh0Q3Vyc29yLmxlbmd0aDw9NDA5Nil8fG51bGwhPT1hLm5leHRDdXJzb3ImJihhLm5leHRDdXJzb3I9PT1ufHwwPT09YS5pdGVtcy5sZW5ndGgpKXRocm93IG5ldyBFcnJvcigiSU5WQUxJRF9ISVNUT1JZX1JFU1BPTlNFIik7Y29uc3QgaT1uP3QuaGlzdG9yeTpbXSxzPW5ldyBTZXQoaS5tYXAoZT0+ZS5jb2xsZWN0ZWRBdC5zbGljZSgwLDEwKSkpLGw9YS5pdGVtcy5tYXAoZT0+e2NvbnN0IG49RChlLHQuaWRlbnRpdHksbyk7aWYobi5zb3VyY2UhPT1hLnNvdXJjZSl0aHJvdyBuZXcgRXJyb3IoIkhJU1RPUllfU09VUkNFX01JU01BVENIIik7aWYoIW4uY29sbGVjdGVkQXQpdGhyb3cgbmV3IEVycm9yKCJJTlZBTElEX0hJU1RPUllfUkVTUE9OU0UiKTtjb25zdCByPW4uY29sbGVjdGVkQXQuc2xpY2UoMCwxMCk7aWYocy5oYXMocikpdGhyb3cgbmV3IEVycm9yKCJEVVBMSUNBVEVfSElTVE9SWV9USU1FU1RBTVAiKTtyZXR1cm4gcy5hZGQociksbn0pO2lmKG4mJmwuc29tZShlPT5EYXRlLnBhcnNlKGUuY29sbGVjdGVkQXQpPj1EYXRlLnBhcnNlKGkuYXQoLTEpPy5jb2xsZWN0ZWRBdCkpKXRocm93IG5ldyBFcnJvcigiSU5WQUxJRF9ISVNUT1JZX09SREVSIik7Y29uc3QgZD1bLi4uaSwuLi5sXS5zb3J0KChlLHQpPT5EYXRlLnBhcnNlKHQuY29sbGVjdGVkQXQpLURhdGUucGFyc2UoZS5jb2xsZWN0ZWRBdCkpO2lmKGQubGVuZ3RoPjM2NXx8MzY1PT09ZC5sZW5ndGgmJm51bGwhPT1hLm5leHRDdXJzb3IpdGhyb3cgbmV3IEVycm9yKCJJTlZBTElEX0hJU1RPUllfUkVTUE9OU0UiKTtjb25zdHtzYW1wbGU6YyxwcmV2aW91czp1fT1VKHQubGF0ZXN0LGQpO3JldHVybnsuLi50LGxhdGVzdDpjLHByZXZpb3VzOnUsaGlzdG9yeTpkLGhpc3RvcnlVbmF2YWlsYWJsZTohMSxuZXh0Q3Vyc29yOmEubmV4dEN1cnNvcixoYXNNb3JlOm51bGwhPT1hLm5leHRDdXJzb3J9fWZ1bmN0aW9uIEIoZSl7Y29uc3QgdD1mdW5jdGlvbihlKXt0cnl7Y29uc3RbdCxuPSIiXT1lLmxvY2F0aW9uLmhhc2guc2xpY2UoMSkuc3BsaXQoIj8iKTtpZighL15cLyhjbHVzdGVyc3xob3N0cylcL1tBLVphLXowLTlfLV17MSwxMjh9XC8/JC8udGVzdCh0KSlyZXR1cm4gbnVsbDtjb25zdCByPW5ldyBVUkxTZWFyY2hQYXJhbXMobiksbz1KU09OLnBhcnNlKHIuZ2V0KCJzaWRlYmFyIikpO3JldHVybiJkaXNrcyI9PT1KU09OLnBhcnNlKHIuZ2V0KCJ2aWV3IikpJiYiZGlzayI9PT1vPy50eXBlJiZDKG8uaWQpP28uaWQ6bnVsbH1jYXRjaHtyZXR1cm4gbnVsbH19KGUpO2lmKCF0KXJldHVybiBudWxsO2NvbnN0IG49Wy4uLmUuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmRyYXdlci1jb250ZW50LWlubmVyIildLmZpbHRlcihlPT4hZS5jbG9zZXN0KCdbaGlkZGVuXSxbYXJpYS1oaWRkZW49InRydWUiXScpKTtpZigxIT09bi5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3Qgcj1uWzBdLG89ci5xdWVyeVNlbGVjdG9yKCIuZGV0YWlsLXRhYnMiKTtpZighb3x8MSE9PXIucXVlcnlTZWxlY3RvckFsbCgiLmRldGFpbC10YWJzIikubGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IGE9by5jbG9zZXN0KCIuZGV0YWlsLXNpZGViYXItaGVhZGVyIik7bGV0IGk7aWYoYSl7Y29uc3QgZT1hLnBhcmVudEVsZW1lbnQsdD1hLm5leHRFbGVtZW50U2libGluZztpZihpPXQ/Lm5leHRFbGVtZW50U2libGluZywhKGUmJnIuY29udGFpbnMoZSkmJm8ucGFyZW50RWxlbWVudD09PWEmJjE9PT1yLnF1ZXJ5U2VsZWN0b3JBbGwoIi5kZXRhaWwtc2lkZWJhci1oZWFkZXIiKS5sZW5ndGgmJnQ/Lm1hdGNoZXMoIi50YWItYm9yZGVyLWJvdHRvbSIpJiZpPy5tYXRjaGVzKCIudGFiLWNvbnRlbnQiKSYmMT09PXIucXVlcnlTZWxlY3RvckFsbCgiLnRhYi1jb250ZW50IikubGVuZ3RoKSlyZXR1cm4gbnVsbDtjb25zdCBuPVsuLi5lLmNoaWxkcmVuXS5maWx0ZXIoZT0+IWUubWF0Y2hlcygiI3BrLXNtYXJ0LWluZm8tcGFuZWxbZGF0YS1way1zbWFydC1wYW5lbF0iKSk7aWYoMyE9PW4ubGVuZ3RofHxuWzBdIT09YXx8blsxXSE9PXR8fG5bMl0hPT1pKXJldHVybiBudWxsfWVsc2UgaWYoaT1vLm5leHRFbGVtZW50U2libGluZyxyLnF1ZXJ5U2VsZWN0b3IoIi5kZXRhaWwtc2lkZWJhci1oZWFkZXIiKXx8IWk/Lm1hdGNoZXMoIi5kZXRhaWwtdGFiLWNvbnRlbnQsLmRldGFpbC1jb250ZW50IikpcmV0dXJuIG51bGw7Y29uc3Qgcz1bLi4uZS5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJ0cltkYXRhLXJvdy1rZXldIildLmZpbHRlcihlPT5lLmdldEF0dHJpYnV0ZSgiZGF0YS1yb3cta2V5Iik9PT10KSxsPTE9PT1zLmxlbmd0aD9zWzBdLnF1ZXJ5U2VsZWN0b3IoJ3RkW3VuaXF1ZT0icGF0aCJdLHRkLmNlbGxfcGF0aCcpOm51bGwsZD1yLnF1ZXJ5U2VsZWN0b3IoIi50aXRsZS13cmFwcGVyIC5oZWFkZXItdGl0bGUiKSxjPWw/LnRleHRDb250ZW50LnRyaW0oKTtyZXR1cm4gYyYmZD8udGV4dENvbnRlbnQudHJpbSgpPT09YyYmL15cL2RldlwvW0EtWmEtejAtOS9fLV17MSwxMDB9JC8udGVzdChjKT97ZGlza0lkOnQscGF0aDpjLHJvb3Q6cix0YWJzOm8sY29udGVudDppfTpudWxsfWNvbnN0IHg9ZT0+InN0cmluZyI9PXR5cGVvZiBlJiYvXlswLTlhLWZdezh9LVswLTlhLWZdezR9LVsxLTVdWzAtOWEtZl17M30tWzg5YWJdWzAtOWEtZl17M30tWzAtOWEtZl17MTJ9JC9pLnRlc3QoZSksVj1uZXcgU2V0KFsicnVubmluZyIsInN1Y2NlZWRlZCIsImZhaWxlZCIsInVua25vd24iXSksUD1uZXcgU2V0KFsiU01BUlRfRElTS19VTkJPVU5EIiwiU01BUlRfR0VORVJBVElPTl9DSEFOR0VEIiwiU01BUlRfQklORElOR19DSEFOR0VEIiwiU01BUlRfRElTS19GT1JCSURERU4iLCJTTUFSVF9QTFVHSU5fRElTQUJMRUQiLCJTTUFSVF9DT0xMRUNUSU9OX0ZBSUxFRCIsIlNNQVJUX0NPTExFQ1RJT05fQlVTWSIsIlNNQVJUX0NPTExFQ1RJT05fVU5BVkFJTEFCTEUiLCJTTUFSVF9DT0xMRUNUSU9OX1dBSVRfVElNRU9VVCIsIlNNQVJUX0NPTExFQ1RJT05fVU5LTk9XTiIsIlNNQVJUX0NPTExFQ1RJT05fSU5URVJSVVBURUQiLCJTTUFSVF9VTlNVUFBPUlRFRCIsIlNNQVJUX09VVFBVVF9JTlZBTElEIiwiU01BUlRfSURFTlRJVFlfTUlTTUFUQ0giLCJTTUFSVF9QUk9GSUxFX1VOQVZBSUxBQkxFIiwiU01BUlRfREVWSUNFX1VOQVZBSUxBQkxFIiwiU1NIX0NIQU5ORUxfRElTQUJMRUQiLCJTU0hfVEFSR0VUX1VOQVZBSUxBQkxFIiwiU1NIX0RFVklDRV9VTkFWQUlMQUJMRSIsIlNTSF9UUkFOU1BPUlRfVU5BVkFJTEFCTEUiLCJTU0hfRVhFQ1VUSU9OX1RJTUVPVVQiLCJTU0hfRVhFQ1VUSU9OX0NBTkNFTExFRCIsIlNNQVJUX0VYRUNVVElPTl9USU1FT1VUIiwiU01BUlRfRVhFQ1VUSU9OX0NBTkNFTExFRCIsIlNTSF9SRUdJU1RSQVRJT05fQ0hBTkdFRCIsIlNTSF9DT05DVVJSRU5DWV9MSU1JVCIsIkFVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEIiwiQURNSU5fUkVRVUlSRUQiLCJTTUFSVF9CQVRDSF9OT19UQVJHRVRTIiwiU01BUlRfQkFUQ0hfTk9fQVBQUk9WRURfVEFSR0VUUyIsIlNNQVJUX0JBVENIX1RBUkdFVF9MSU1JVCIsIlNNQVJUX0JBVENIX05PVF9BUFBST1ZFRCIsIlNNQVJUX0JBVENIX0FNQklHVU9VU19DT01NQU5EIiwiU01BUlRfQkFUQ0hfU05BUFNIT1RfQ0hBTkdFRCIsIlNNQVJUX0JBVENIX0ZPUkJJRERFTiIsIlNNQVJUX0JBVENIX1RBUkdFVF9VTkFWQUlMQUJMRSIsIlNNQVJUX0JBVENIX0NPTkZMSUNUIiwiU01BUlRfQkFUQ0hfREVBRExJTkUiLCJTTUFSVF9CQVRDSF9JTlRFUlJVUFRFRCIsIlNNQVJUX0JBVENIX0NISUxEX1VOS05PV04iLCJTTUFSVF9CQVRDSF9CVVNZIiwiU01BUlRfQkFUQ0hfQ0FQQUNJVFlfRVhDRUVERUQiLCJTTUFSVF9CQVRDSF9OT1RfRk9VTkQiLCJTTUFSVF9CQVRDSF9BQ0NFU1NfQ0hBTkdFRCIsIlNNQVJUX0JBVENIX0FDQ0VTU19VTkFWQUlMQUJMRSIsIlNNQVJUX0JBVENIX0FDQ0VTU19USU1FT1VUIiwiU01BUlRfQ09MTEVDVElPTl9TTkFQU0hPVF9DSEFOR0VEIl0pO2Z1bmN0aW9uICQoZSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGU/LnJhbmRvbVVVSUQpcmV0dXJuIGUucmFuZG9tVVVJRCgpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlPy5nZXRSYW5kb21WYWx1ZXMpdGhyb3cgbmV3IEVycm9yKCJTTUFSVF9DT0xMRUNUSU9OX1VOQVZBSUxBQkxFIik7Y29uc3QgdD1lLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSgxNikpO3RbNl09MTUmdFs2XXw2NCx0WzhdPTYzJnRbOF18MTI4O2NvbnN0IG49Wy4uLnRdLm1hcChlPT5lLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpLmpvaW4oIiIpO3JldHVybmAke24uc2xpY2UoMCw4KX0tJHtuLnNsaWNlKDgsMTIpfS0ke24uc2xpY2UoMTIsMTYpfS0ke24uc2xpY2UoMTYsMjApfS0ke24uc2xpY2UoMjApfWB9ZnVuY3Rpb24gRyhlKXtmb3IoY29uc3QgdCBvZltlPy5jb2RlLGU/Lm1lc3NhZ2VdKXtpZigiU1NIX1RBUkdFVF9OT1RfQVBQUk9WRUQiPT09dClyZXR1cm4iU1NIX0FQUFJPVkFMX1JFUVVJUkVEIjtpZigiU1NIX0FETUlOX1JFUVVJUkVEIj09PXQpcmV0dXJuIkFETUlOX1JFUVVJUkVEIjtpZigiU01BUlRfQ09MTEVDVElPTl9DT05DVVJSRU5DWV9MSU1JVCI9PT10KXJldHVybiJTTUFSVF9DT0xMRUNUSU9OX0JVU1kiO2lmKCJzdHJpbmciPT10eXBlb2YgdCYmL15TU0hfQVBQUk9WQUxfW0EtWl9dKyQvLnRlc3QodCkpcmV0dXJuIlNTSF9BUFBST1ZBTF9SRVFVSVJFRCI7aWYoUC5oYXModCkpcmV0dXJuIHR9cmV0dXJuIlNNQVJUX0NPTExFQ1RJT05fVU5LTk9XTiJ9Y29uc3QgRj1lPT5bIlNNQVJUX0dFTkVSQVRJT05fQ0hBTkdFRCIsIlNNQVJUX0JJTkRJTkdfQ0hBTkdFRCIsIlNNQVJUX0RJU0tfRk9SQklEREVOIiwiU01BUlRfUExVR0lOX0RJU0FCTEVEIiwiQVVUSEVOVElDQVRJT05fUkVRVUlSRUQiLCJBRE1JTl9SRVFVSVJFRCIsIlNNQVJUX0JBVENIX0ZPUkJJRERFTiIsIlNNQVJUX0JBVENIX0FDQ0VTU19DSEFOR0VEIl0uaW5jbHVkZXMoZSk7ZnVuY3Rpb24geihlLHQpe2lmKCFlfHwxIT09ZS5zY2hlbWFWZXJzaW9ufHwheChlLm9wZXJhdGlvbklkKXx8dCYmZS5vcGVyYXRpb25JZCE9PXR8fCFWLmhhcyhlLnN0YXR1cykpdGhyb3cgbmV3IEVycm9yKCJJTlZBTElEX0NPTExFQ1RJT05fUkVTUE9OU0UiKTtyZXR1cm57c2NoZW1hVmVyc2lvbjoxLG9wZXJhdGlvbklkOmUub3BlcmF0aW9uSWQsc3RhdHVzOmUuc3RhdHVzLC4uLnZvaWQgMD09PWUuY29kZT97fTp7Y29kZTpHKHtjb2RlOmUuY29kZX0pfX19Y29uc3Qgaj0oKT0+T2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoIlJFUVVFU1RfQ0FOQ0VMTEVEIikse25hbWU6IkFib3J0RXJyb3IiLGNvZGU6IlJFUVVFU1RfQ0FOQ0VMTEVEIn0pO2FzeW5jIGZ1bmN0aW9uIHEoZSx7aWRlbnRpdHk6dCxyZXF1ZXN0SWQ6bixzaWduYWw6cixvblByb2dyZXNzOm89KCk9Pnt9LHRpbWVvdXRNczphPTQ1ZTMsaW50ZXJ2YWxNczppPTE1MDAsdmFsaWRhdGU6cz16fSl7aWYoIWV8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLmNvbGxlY3R8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLmNvbGxlY3Rpb258fCF4KG4pKXRocm93IG5ldyBFcnJvcigiU01BUlRfQ09MTEVDVElPTl9VTkFWQUlMQUJMRSIpO2lmKHIuYWJvcnRlZCl0aHJvdyBqKCk7Y29uc3QgbD1uZXcgQWJvcnRDb250cm9sbGVyO2xldCBkLGMsdTtjb25zdCBwPWU9Pih7c2NoZW1hVmVyc2lvbjoxLG9wZXJhdGlvbklkOmQ/Lm9wZXJhdGlvbklkPz9udWxsLHN0YXR1czoidW5rbm93biIsY29kZTplfSksXz0oKT0+e2lmKGwuc2lnbmFsLmFib3J0ZWQpdGhyb3cgaigpfSxBPSgpPT5uZXcgUHJvbWlzZSgoZSx0KT0+e2NvbnN0IG49c2V0VGltZW91dCgoKT0+e2wuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixyKSxlKCl9LGkpLHI9KCk9PntjbGVhclRpbWVvdXQobiksbC5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHIpLHQoaigpKX07bC5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHIse29uY2U6ITB9KSxsLnNpZ25hbC5hYm9ydGVkJiZyKCl9KSxtPWFzeW5jKCk9PntkPXMoYXdhaXQgZS5jb2xsZWN0KHtpZGVudGl0eTp0LHJlcXVlc3RJZDpuLHNpZ25hbDpsLnNpZ25hbH0pKSxfKCksbyhkKTtmb3IobGV0IG49MDsicnVubmluZyI9PT1kLnN0YXR1cyYmbjwzMDtuKyspYXdhaXQgQSgpLF8oKSxkPXMoYXdhaXQgZS5jb2xsZWN0aW9uKHtpZGVudGl0eTp0LG9wZXJhdGlvbklkOmQub3BlcmF0aW9uSWQsc2lnbmFsOmwuc2lnbmFsfSksZC5vcGVyYXRpb25JZCksXygpLG8oZCk7cmV0dXJuInJ1bm5pbmciPT09ZC5zdGF0dXM/cCgiU01BUlRfQ09MTEVDVElPTl9XQUlUX1RJTUVPVVQiKTpkfTt0cnl7cmV0dXJuIGF3YWl0IFByb21pc2UucmFjZShbbSgpLG5ldyBQcm9taXNlKGU9PntjPXNldFRpbWVvdXQoKCk9PntlKHAoIlNNQVJUX0NPTExFQ1RJT05fV0FJVF9USU1FT1VUIikpLGwuYWJvcnQoKX0sYSl9KSxuZXcgUHJvbWlzZSgoZSx0KT0+e3U9KCk9Pnt0KGooKSksbC5hYm9ydCgpfSxyLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0Iix1LHtvbmNlOiEwfSksci5hYm9ydGVkJiZ1KCl9KV0pfWNhdGNoKGUpe2lmKHIuYWJvcnRlZCl0aHJvdyBqKCk7Y29uc3QgdD1HKGUpO2lmKEYodCkpdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3IodCkse2NvZGU6dH0pO3JldHVybnsuLi5wKHQpLHN0YXR1czohZCYmTnVtYmVyLmlzSW50ZWdlcihlLnN0YXR1cykmJmUuc3RhdHVzPj00MDAmJmUuc3RhdHVzPDUwMD8iZmFpbGVkIjoidW5rbm93biJ9fWZpbmFsbHl7Y2xlYXJUaW1lb3V0KGMpLHIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHUpLGwuYWJvcnQoKX19Y29uc3QgWT0oZSx0LG4pPT4iZW4tVVMiPT09ZT9uOnQ7ZnVuY3Rpb24gVyhlLHQpe2lmKCJydW5uaW5nIj09PWUuc3RhdHVzKXJldHVybiBZKHQsIuato+WcqOmHh+mbhuW9k+WJjeejgeebmOKApuemu+W8gOatpOmhteWPquWBnOatoumhtemdouetieW+he+8jOS4jeS/neivgei/nOerr+S7u+WKoeWPlua2iOOAgiIsIkNvbGxlY3RpbmcgdGhpcyBkaXNr4oCmIExlYXZpbmcgdGhpcyBwYWdlIG9ubHkgc3RvcHMgd2FpdGluZzsgdGhlIHJlbW90ZSB0YXNrIG1heSBjb250aW51ZS4iKTtpZigic3VjY2VlZGVkIj09PWUuc3RhdHVzKXJldHVybiBZKHQsIumHh+mbhuS7u+WKoeW3suWujOaIkOOAgiIsIkNvbGxlY3Rpb24gY29tcGxldGVkLiIpO2lmKCJTTUFSVF9DT0xMRUNUSU9OX1dBSVRfQ0FOQ0VMTEVEIj09PWUuY29kZSlyZXR1cm4gWSh0LCLlt7LlgZzmraLpobXpnaLnrYnlvoXvvIzlkI7lj7Dph4fpm4blj6/og73nu6fnu63vvJvor7fph43mlrDor7vlj5bmiJbogZTns7vnrqHnkIblkZjmoLjlrp7jgIIiLCJTdG9wcGVkIHdhaXRpbmcuIENvbGxlY3Rpb24gbWF5IGNvbnRpbnVlIGluIHRoZSBiYWNrZ3JvdW5kOyByZWxvYWQgb3IgYXNrIGFuIGFkbWluaXN0cmF0b3IgdG8gdmVyaWZ5LiIpO2NvbnN0IG49e1NNQVJUX0JBVENIX05PX1RBUkdFVFM6WyLmsqHmnInlt7Lnu5HlrprnmoTno4Hnm5jvvIzmnKrlj5HotbflhajlsYDph4fpm4bjgILor7fphY3nva7lj6/kv6Horr7lpIfnu5HlrprjgIIiLCJObyBkaXNrcyBhcmUgYm91bmQuIEdsb2JhbCBjb2xsZWN0aW9uIHdhcyBub3Qgc3RhcnRlZC4gQ29uZmlndXJlIHRydXN0ZWQgZGV2aWNlIGJpbmRpbmdzLiJdLFNNQVJUX0JBVENIX05PX0FQUFJPVkVEX1RBUkdFVFM6WyLmsqHmnInojrfmibnnmoTph4fpm4bnm67moIfvvIzmnKrlj5HotbflhajlsYDph4fpm4bjgILor7fogZTns7vnrqHnkIblkZjlrqHmoLjjgIIiLCJObyBjb2xsZWN0aW9uIHRhcmdldHMgYXJlIGFwcHJvdmVkLiBHbG9iYWwgY29sbGVjdGlvbiB3YXMgbm90IHN0YXJ0ZWQuIEFzayBhbiBhZG1pbmlzdHJhdG9yIHRvIHJldmlldyBhcHByb3ZhbHMuIl0sU01BUlRfQkFUQ0hfVEFSR0VUX0xJTUlUOlsi6YeH6ZuG55uu5qCH6LaF6L+HIDEwMCDkuKrvvIzmnKrlj5HotbfmibnmrKHvvJvkuI3kvJrpnZnpu5jlv73nlaXotoXlh7rpg6jliIbjgILor7fogZTns7vnrqHnkIblkZjosIPmlbTojIPlm7TjgIIiLCJUaGVyZSBhcmUgbW9yZSB0aGFuIDEwMCB0YXJnZXRzLiBObyBiYXRjaCB3YXMgc3RhcnRlZCBvciBzaWxlbnRseSB0cnVuY2F0ZWQuIEFzayBhbiBhZG1pbmlzdHJhdG9yIHRvIGFkanVzdCB0aGUgc2NvcGUuIl0sU01BUlRfQkFUQ0hfTk9UX0FQUFJPVkVEOlsi6K+l55uu5qCH5pyq6I635b6X5pyJ5pWI6YeH6ZuG5o6I5p2D77yM5pyq5omn6KGM44CCIiwiVGhpcyB0YXJnZXQgbGFja3MgYSB2YWxpZCBjb2xsZWN0aW9uIGFwcHJvdmFsIGFuZCB3YXMgc2tpcHBlZC4iXSxTTUFSVF9CQVRDSF9BTUJJR1VPVVNfQ09NTUFORDpbIuivpeebruagh+ayoeacieWUr+S4gOeahOW3suaJueWHhumHh+mbhuWjsOaYju+8jOacquaJp+ihjOOAgiIsIlRoaXMgdGFyZ2V0IGhhcyBubyB1bmlxdWUgYXBwcm92ZWQgY29sbGVjdGlvbiBkZWNsYXJhdGlvbiBhbmQgd2FzIHNraXBwZWQuIl0sU01BUlRfQkFUQ0hfU05BUFNIT1RfQ0hBTkdFRDpbIuebruagh+e7keWumuaIluWuoeaJueW3suWPmOWMlu+8jOacqui3n+maj+aWsOebruagh+aJp+ihjOOAgiIsIlRoZSBiaW5kaW5nIG9yIGFwcHJvdmFsIGNoYW5nZWQuIEV4ZWN1dGlvbiBkaWQgbm90IGZvbGxvdyBhIG5ldyB0YXJnZXQuIl0sU01BUlRfQ09MTEVDVElPTl9TTkFQU0hPVF9DSEFOR0VEOlsi55uu5qCH57uR5a6a5oiW5a6h5om55bey5Y+Y5YyW77yM5pys5qyh6YeH6ZuG5pyq57un57ut44CCIiwiVGhlIGJpbmRpbmcgb3IgYXBwcm92YWwgY2hhbmdlZC4gVGhpcyBjb2xsZWN0aW9uIGRpZCBub3QgY29udGludWUuIl0sU01BUlRfQkFUQ0hfRk9SQklEREVOOlsi5rKh5pyJ6K+75Y+W6K+l56OB55uY5oiW5om55qyh55qE5p2D6ZmQ77yM6K+36IGU57O7566h55CG5ZGY44CCIiwiQWNjZXNzIHRvIHRoaXMgZGlzayBvciBiYXRjaCBpcyBkZW5pZWQuIENvbnRhY3QgYW4gYWRtaW5pc3RyYXRvci4iXSxTTUFSVF9CQVRDSF9BQ0NFU1NfQ0hBTkdFRDpbIuejgeebmOe7keWumuaIluivu+WPluadg+mZkOW3suWPmOWMlu+8jOW3sua4heepuuaJueasoeWxleekuuOAguivt+aguOWunuOAgiIsIlRoZSBkaXNrIGJpbmRpbmcgb3IgcmVhZCBhY2Nlc3MgY2hhbmdlZC4gQmF0Y2ggZGV0YWlscyB3ZXJlIGNsZWFyZWQuIFZlcmlmeSBhY2Nlc3MuIl0sU01BUlRfQkFUQ0hfVEFSR0VUX1VOQVZBSUxBQkxFOlsi6YeH6ZuG55uu5qCH5pqC5LiN5Y+v55So77yM5pyq5omn6KGM44CCIiwiVGhlIGNvbGxlY3Rpb24gdGFyZ2V0IGlzIHVuYXZhaWxhYmxlIGFuZCB3YXMgc2tpcHBlZC4iXSxTTUFSVF9CQVRDSF9DT05GTElDVDpbIuS4juW3suaciemHh+mbhuS7u+WKoeWGsueqge+8jOacquiHquWKqOmHjeivleOAguivt+WFiOaguOWunui/kOihjOeKtuaAgeOAgiIsIkFub3RoZXIgY29sbGVjdGlvbiBjb25mbGljdHMgd2l0aCB0aGlzIHRhcmdldC4gSXQgd2FzIG5vdCByZXRyaWVkLiBDaGVjayB0aGUgYWN0aXZlIHRhc2suIl0sU01BUlRfQkFUQ0hfQlVTWTpbIuW3suacieWFqOWxgOaJueasoei/kOihjOS4re+8jOacquWPkei1t+aWsOaJueasoeOAguivt+WFiOaguOWunui/kOihjOeKtuaAgeOAgiIsIkEgZ2xvYmFsIGJhdGNoIGlzIGFscmVhZHkgcnVubmluZy4gTm8gbmV3IGJhdGNoIHdhcyBzdGFydGVkLiBDaGVjayBpdHMgc3RhdHVzLiJdLFNNQVJUX0JBVENIX0RFQURMSU5FOlsi5om55qyh6L6+5Yiw5ZCO5Y+w562J5b6F5pe26ZmQ77yM5bCa5pyq5byA5aeL55qE55uu5qCH5pyq5omn6KGM44CCIiwiVGhlIGJhdGNoIHJlYWNoZWQgaXRzIGJhY2tncm91bmQgZGVhZGxpbmUuIFRhcmdldHMgdGhhdCBoYWQgbm90IHN0YXJ0ZWQgd2VyZSBza2lwcGVkLiJdLFNNQVJUX0JBVENIX0lOVEVSUlVQVEVEOlsi5om55qyh6KKr5Lit5pat77yM57uT5p6c5b6F56Gu6K6k44CC5pyq6Ieq5Yqo6YeN5Y+R5ZG95Luk44CCIiwiVGhlIGJhdGNoIHdhcyBpbnRlcnJ1cHRlZCBhbmQgaXRzIG91dGNvbWUgaXMgdW5rbm93bi4gQ29tbWFuZHMgd2VyZSBub3QgcmVzZW50LiJdLFNNQVJUX0JBVENIX0NISUxEX1VOS05PV046WyLor6Xno4Hnm5jnmoTph4fpm4bnu5PmnpzlvoXnoa7orqTvvIzmnKroh6rliqjph43lj5Hlkb3ku6TjgIIiLCJUaGlzIGRpc2vigJlzIGNvbGxlY3Rpb24gb3V0Y29tZSBpcyB1bmtub3duLiBUaGUgY29tbWFuZCB3YXMgbm90IHJlc2VudC4iXSxTTUFSVF9CQVRDSF9DQVBBQ0lUWV9FWENFRURFRDpbIuaJueasoeiusOW9leWuuemHj+W3sua7oe+8jOacquWPkei1t+aWsOaJueasoeOAguivt+iBlOezu+euoeeQhuWRmOWkhOeQhuOAgiIsIkJhdGNoIHJlY29yZCBjYXBhY2l0eSBpcyBmdWxsLiBObyBuZXcgYmF0Y2ggd2FzIHN0YXJ0ZWQuIENvbnRhY3QgYW4gYWRtaW5pc3RyYXRvci4iXSxTTUFSVF9CQVRDSF9OT1RfRk9VTkQ6WyLmibnmrKHorrDlvZXkuI3lj6/nlKjvvIzmnKrph43mlrDlj5Hotbfph4fpm4bjgILor7fogZTns7vnrqHnkIblkZjmoLjlrp7jgIIiLCJUaGUgYmF0Y2ggcmVjb3JkIGlzIHVuYXZhaWxhYmxlLiBDb2xsZWN0aW9uIHdhcyBub3QgcmVzdWJtaXR0ZWQuIENvbnRhY3QgYW4gYWRtaW5pc3RyYXRvci4iXSxTU0hfQVBQUk9WQUxfUkVRVUlSRUQ6WyLph4fpm4blkb3ku6TlsJrmnKrlrqHmoLjmiJbmjojmnYPlt7LlpLHmlYjvvIzor7fogZTns7vnrqHnkIblkZjlrqHmoLjjgIIiLCJUaGUgY29sbGVjdGlvbiBjb21tYW5kIGlzIG5vdCBhcHByb3ZlZCwgb3IgYXBwcm92YWwgZXhwaXJlZC4gQXNrIGFuIGFkbWluaXN0cmF0b3IgdG8gcmV2aWV3IGl0LiJdLFNTSF9SRUdJU1RSQVRJT05fQ0hBTkdFRDpbIumHh+mbhuWjsOaYjuW3suWPmOWMlu+8jOmcgOimgeeuoeeQhuWRmOmHjeaWsOWuoeaguOaOiOadg+OAgiIsIlRoZSBjb2xsZWN0aW9uIGRlY2xhcmF0aW9uIGNoYW5nZWQgYW5kIHJlcXVpcmVzIGFkbWluaXN0cmF0b3IgYXBwcm92YWwgYWdhaW4uIl0sU1NIX0NIQU5ORUxfRElTQUJMRUQ6WyLnu5/kuIAgU1NIIOmAmumBk+acquWQr+eUqOaIluacqumFjee9ru+8jOivt+iBlOezu+euoeeQhuWRmOOAgiIsIlRoZSBzaGFyZWQgU1NIIGNoYW5uZWwgaXMgZGlzYWJsZWQgb3IgdW5jb25maWd1cmVkLiBDb250YWN0IGFuIGFkbWluaXN0cmF0b3IuIl0sU1NIX1RBUkdFVF9VTkFWQUlMQUJMRTpbIuWwmuacqumFjee9ruWPr+eUqOmHh+mbhuebruagh++8jOivt+iBlOezu+euoeeQhuWRmOOAgiIsIk5vIGNvbGxlY3Rpb24gdGFyZ2V0IGlzIGNvbmZpZ3VyZWQuIENvbnRhY3QgYW4gYWRtaW5pc3RyYXRvci4iXSxTU0hfREVWSUNFX1VOQVZBSUxBQkxFOlsi6YeH6ZuG6K6+5aSH5bCa5pyq6YWN572u5oiW5bey5LiN5Y+v55So77yM6K+36IGU57O7566h55CG5ZGY44CCIiwiVGhlIGNvbGxlY3Rpb24gZGV2aWNlIGlzIHVuY29uZmlndXJlZCBvciB1bmF2YWlsYWJsZS4gQ29udGFjdCBhbiBhZG1pbmlzdHJhdG9yLiJdLFNNQVJUX1BST0ZJTEVfVU5BVkFJTEFCTEU6WyLlj6/kv6Hph4fpm4bkuLvmnLrphY3nva7kuI3lj6/nlKjvvIzor7fogZTns7vnrqHnkIblkZjjgIIiLCJUaGUgdHJ1c3RlZCBjb2xsZWN0aW9uIGhvc3QgcHJvZmlsZSBpcyB1bmF2YWlsYWJsZS4gQ29udGFjdCBhbiBhZG1pbmlzdHJhdG9yLiJdLFNNQVJUX0RFVklDRV9VTkFWQUlMQUJMRTpbIuWPr+S/oemHh+mbhuiuvuWkh+S4jeWPr+eUqO+8jOivt+iBlOezu+euoeeQhuWRmOOAgiIsIlRoZSB0cnVzdGVkIGNvbGxlY3Rpb24gZGV2aWNlIGlzIHVuYXZhaWxhYmxlLiBDb250YWN0IGFuIGFkbWluaXN0cmF0b3IuIl0sU01BUlRfQ09MTEVDVElPTl9VTkFWQUlMQUJMRTpbIuW9k+WJjeahhuaetuWwmuacquaPkOS+m+eri+WNs+mHh+mbhu+8jOivt+iBlOezu+euoeeQhuWRmOOAgiIsIkNvbGxlY3Qgbm93IGlzIHVuYXZhaWxhYmxlIGluIHRoaXMgZnJhbWV3b3JrLiBDb250YWN0IGFuIGFkbWluaXN0cmF0b3IuIl0sU1NIX0NPTkNVUlJFTkNZX0xJTUlUOlsi5bey5pyJ6YeH6ZuG5Lu75Yqh6L+Q6KGM5Lit77yM6K+356iN5ZCO5qC45a6e54q25oCB44CCIiwiQSBjb2xsZWN0aW9uIGlzIGFscmVhZHkgcnVubmluZy4gQ2hlY2sgaXRzIHN0YXR1cyBiZWZvcmUgdHJ5aW5nIGFnYWluLiJdLFNNQVJUX0NPTExFQ1RJT05fQlVTWTpbIuW3suaciemHh+mbhuS7u+WKoei/kOihjOS4re+8jOivt+eojeWQjuaguOWunueKtuaAgeOAgiIsIkEgY29sbGVjdGlvbiBpcyBhbHJlYWR5IHJ1bm5pbmcuIENoZWNrIGl0cyBzdGF0dXMgYmVmb3JlIHRyeWluZyBhZ2Fpbi4iXSxBRE1JTl9SRVFVSVJFRDpbIueri+WNs+mHh+mbhumcgOimgeeuoeeQhuWRmOadg+mZkOOAgiIsIkNvbGxlY3Qgbm93IHJlcXVpcmVzIGFkbWluaXN0cmF0b3IgYWNjZXNzLiJdLFNNQVJUX1VOU1VQUE9SVEVEOlsi6K+l6K6+5aSH5LiN5pSv5oyBIFNNQVJUIOmHh+mbhuaIluacqumAj+S8oO+8jOWBpeW6t+eKtuaAgeacquefpeOAgiIsIlNNQVJUIGNvbGxlY3Rpb24gaXMgdW5zdXBwb3J0ZWQgb3Igbm90IHBhc3NlZCB0aHJvdWdoOyBoZWFsdGggaXMgdW5rbm93bi4iXX07aWYoInVua25vd24iPT09ZS5zdGF0dXMpe2NvbnN0IHI9WSh0LCLph4fpm4bnu5PmnpzlvoXnoa7orqTvvIzku7vliqHlj6/og73ku43lnKjmiafooYzjgILmnKroh6rliqjph43lj5Hor7fmsYLvvJvor7fph43mlrDor7vlj5bmiJbogZTns7vnrqHnkIblkZjmoLjlrp7jgIIiLCJDb2xsZWN0aW9uIG91dGNvbWUgaXMgdW5rbm93bjsgdGhlIHRhc2sgbWF5IHN0aWxsIGJlIHJ1bm5pbmcuIFRoZSByZXF1ZXN0IHdhcyBub3QgcmVzZW50LiBSZWxvYWQgb3IgYXNrIGFuIGFkbWluaXN0cmF0b3IgdG8gdmVyaWZ5LiIpO3JldHVybiBuW2UuY29kZV0/YCR7cn0gJHtZKHQsLi4ubltlLmNvZGVdKX1gOnJ9cmV0dXJuIG5bZS5jb2RlXT9ZKHQsLi4ubltlLmNvZGVdKTplLmNvZGUmJiJTTUFSVF9DT0xMRUNUSU9OX1VOS05PV04iIT09ZS5jb2RlP0soZS5jb2RlLHQpOlkodCwi6YeH6ZuG5Lu75Yqh5aSx6LSl77yM5pyq5o+Q5L6b6K+m57uG5Y6f5Zug44CC6K+36YeN5paw6K+75Y+W5bm26IGU57O7566h55CG5ZGY5qC45a6e44CCIiwiQ29sbGVjdGlvbiBmYWlsZWQgd2l0aG91dCBhIGRldGFpbGVkIHJlYXNvbi4gUmVsb2FkIGFuZCBhc2sgYW4gYWRtaW5pc3RyYXRvciB0byB2ZXJpZnkuIil9ZnVuY3Rpb24gSyhlLHQpe3JldHVybiBZKHQsLi4ue1NNQVJUX0dFTkVSQVRJT05fQ0hBTkdFRDpbIuejgeebmOW3suabtOaNouaIlui6q+S7veW3suWPmOWMlu+8jOivt+mHjeaWsOivu+WPluOAgiIsIlRoZSBkaXNrIHdhcyByZXBsYWNlZCBvciBpdHMgaWRlbnRpdHkgY2hhbmdlZC4gUmVsb2FkIHRvIHZlcmlmeSBpdC4iXSxTTUFSVF9ISVNUT1JZX0NVUlNPUl9TVEFMRTpbIuWOhuWPsuiusOW9leW3suabtOaWsO+8jOivt+mHjeaWsOivu+WPlummlumhteWQjue7p+e7ree/u+mhteOAgiIsIkhpc3RvcnkgY2hhbmdlZC4gUmVsb2FkIHRoZSBmaXJzdCBwYWdlIGJlZm9yZSBjb250aW51aW5nLiJdLFNNQVJUX0RJU0tfVU5CT1VORDpbIuivpeejgeebmOWwmuacque7keWumuWPr+S/oemHh+mbhuiuvuWkh++8jOivt+iBlOezu+euoeeQhuWRmOOAgiIsIlRoaXMgZGlzayBoYXMgbm8gdHJ1c3RlZCBjb2xsZWN0aW9uIGJpbmRpbmcuIENvbnRhY3QgYW4gYWRtaW5pc3RyYXRvci4iXSxTTUFSVF9OT19TQU1QTEU6WyLlsJrml6Dph4fmoLfvvIznrYnlvoXlt7LmjojmnYPnmoTlkI7lj7Dph4fpm4bjgIIiLCJObyBzYW1wbGUgeWV0LiBBd2FpdCBhdXRob3JpemVkIGJhY2tncm91bmQgY29sbGVjdGlvbi4iXSxTTUFSVF9DT0xMRUNUSU9OX0ZBSUxFRDpbIuacrOasoemHh+mbhuWksei0pe+8mlNNQVJUIOaVsOaNruS4jeWPr+eUqO+8jOWBpeW6t+eKtuaAgeacquefpeOAgiIsIkNvbGxlY3Rpb24gZmFpbGVkOiBTTUFSVCBkYXRhIGlzIHVuYXZhaWxhYmxlOyBoZWFsdGggaXMgdW5rbm93bi4iXSxTTUFSVF9FWEVDVVRJT05fVElNRU9VVDpbIumHh+mbhui2heaXtu+8jOWBpeW6t+eKtuaAgeacquefpeOAgiIsIkNvbGxlY3Rpb24gdGltZWQgb3V0OyBoZWFsdGggaXMgdW5rbm93bi4iXSxTTUFSVF9FWEVDVVRJT05fQ0FOQ0VMTEVEOlsi6YeH6ZuG5bey5Y+W5raI77yM5YGl5bq354q25oCB5pyq55+l44CCIiwiQ29sbGVjdGlvbiB3YXMgY2FuY2VsbGVkOyBoZWFsdGggaXMgdW5rbm93bi4iXSxTTUFSVF9JREVOVElUWV9NSVNNQVRDSDpbIumHh+mbhuiuvuWkh+i6q+S7veS4jeespu+8jOacquS9v+eUqOivpee7k+aenO+8jOWBpeW6t+eKtuaAgeacquefpeOAgiIsIkNvbGxlY3RlZCBkZXZpY2UgaWRlbnRpdHkgZGlkIG5vdCBtYXRjaC4gVGhlIHJlc3VsdCB3YXMgZGlzY2FyZGVkOyBoZWFsdGggaXMgdW5rbm93bi4iXSxTTUFSVF9PVVRQVVRfSU5WQUxJRDpbIumHh+mbhuaVsOaNruaXoOaViO+8jOWBpeW6t+eKtuaAgeacquefpeOAgiIsIkNvbGxlY3RlZCBkYXRhIGlzIGludmFsaWQ7IGhlYWx0aCBpcyB1bmtub3duLiJdLFNNQVJUX0lOVkFMSURfREFUQTpbIumHh+mbhuaVsOaNruaXoOaViO+8jOWBpeW6t+eKtuaAgeacquefpeOAgiIsIkNvbGxlY3RlZCBkYXRhIGlzIGludmFsaWQ7IGhlYWx0aCBpcyB1bmtub3duLiJdLFNNQVJUX0RFVklDRV9DSEFOR0VEOlsi6YeH6ZuG6K6+5aSH5bey5Y+Y5YyW77yM5YGl5bq354q25oCB5pyq55+l44CCIiwiVGhlIGNvbGxlY3RlZCBkZXZpY2UgY2hhbmdlZDsgaGVhbHRoIGlzIHVua25vd24uIl0sU01BUlRfVU5BVkFJTEFCTEU6WyLmsqHmnInlj6/nlKjph4fmoLfvvIzlgaXlurfnirbmgIHmnKrnn6XjgIIiLCJObyBzYW1wbGUgaXMgYXZhaWxhYmxlOyBoZWFsdGggaXMgdW5rbm93bi4iXX1bZV18fFsiU01BUlQg5L+h5oGv5pqC5LiN5Y+v55So44CC6K+36IGU57O7566h55CG5ZGY5qOA5p+l6YeH6ZuG5pyN5Yqh5ZKM5a+56LGh5p2D6ZmQ5ZCO6YeN6K+V44CCIiwiU01BUlQgaW5mb3JtYXRpb24gaXMgdW5hdmFpbGFibGUuIEFzayBhbiBhZG1pbmlzdHJhdG9yIHRvIGNoZWNrIGNvbGxlY3Rpb24gYW5kIG9iamVjdCBhY2Nlc3MsIHRoZW4gcmV0cnkuIl0pfWZ1bmN0aW9uIFgoZSl7cmV0dXJuIFkoZSwiU01BUlQg6K+75Y+W5aSx6LSl5LiN562J5LqOIFNTSCDorqTor4HlpLHotKXvvIzkuZ/kuI3og73mja7mraTliKTlrprlnY/nm5jjgILorqTor4Hnu5Pmnpzor7fmn6XnnIsgU1NIIOmAmumBk+eahOeLrOeri+ajgOafpeOAguWPr+iDveWOn+WboOWMheaLrOW3peWFt+aIluWRveS7pOmXrumimOOAgeiuvuWkh+S4jeaPkOS+myBTTUFSVO+8jOaIluiZmuaLn+WMluWxguacqumAj+S8oO+8iOS+i+WmguafkOS6myBWTXdhcmUg6Jma5ouf55uY77yJ77yb5pys6aG15pyq56Gu6K6k5YW35L2T5Y6f5Zug44CCIiwiQSBTTUFSVCByZWFkIGZhaWx1cmUgZG9lcyBub3QgZXN0YWJsaXNoIGFuIFNTSCBhdXRoZW50aWNhdGlvbiBmYWlsdXJlIG9yIGEgZGFtYWdlZCBkaXNrLiBTZWUgdGhlIFNTSCBjaGFubmVs4oCZcyBzZXBhcmF0ZSBhdXRoZW50aWNhdGlvbiBjaGVjay4gUG9zc2libGUgY2F1c2VzIGluY2x1ZGUgdG9vbCBvciBjb21tYW5kIGlzc3VlcywgYSBkZXZpY2Ugd2l0aG91dCBTTUFSVCwgb3IgbWlzc2luZyB2aXJ0dWFsaXphdGlvbiBwYXNzdGhyb3VnaCAoZm9yIGV4YW1wbGUsIHNvbWUgVk13YXJlIHZpcnR1YWwgZGlza3MpLiBUaGlzIHBhZ2UgaGFzIG5vdCBjb25maXJtZWQgdGhlIGNhdXNlLiIpfWNvbnN0IFE9e2hlYWx0aDpbIlNNQVJUIOWBpeW6t+iHquajgCIsIlNNQVJUIGhlYWx0aCBhc3Nlc3NtZW50Il0sYXRhX3RocmVzaG9sZF9zdGF0dXM6WyJTTUFSVCDpgIDlh7rnirbmgIHvvJrlsZ7mgKfpmIjlgLzlkYroraYiLCJTTUFSVCBleGl0IHN0YXR1czogYXR0cmlidXRlIHRocmVzaG9sZCBhbGVydCJdLHNlbGZfdGVzdF9lcnJvcnM6WyLoh6rmo4Dml6Xlv5fljIXlkKvplJnor68iLCJTZWxmLXRlc3QgbG9nIGNvbnRhaW5zIGVycm9ycyJdLHRlbXBlcmF0dXJlOlsi5rip5bqmIiwiVGVtcGVyYXR1cmUiXSxwb3dlcl9vbl9ob3VyczpbIumAmueUteaXtumXtCIsIlBvd2VyLW9uIGhvdXJzIl0scG93ZXJfY3ljbGVzOlsi6YCa55S15qyh5pWwIiwiUG93ZXIgY3ljbGVzIl0sY3JpdGljYWxfd2FybmluZzpbIuS4pemHjeitpuWRiuS9jSIsIkNyaXRpY2FsIHdhcm5pbmcgYml0cyJdLGF2YWlsYWJsZV9zcGFyZTpbIuWPr+eUqOWkh+eUqOepuumXtCIsIkF2YWlsYWJsZSBzcGFyZSJdLHBlcmNlbnRhZ2VfdXNlZDpbIuW3sua2iOiAl+Wvv+WRvSIsIkVuZHVyYW5jZSB1c2VkIl0sbWVkaWFfZXJyb3JzOlsi5LuL6LSo5LiO5pWw5o2u5a6M5pW05oCn6ZSZ6K+vIiwiTWVkaWEgYW5kIGRhdGEgaW50ZWdyaXR5IGVycm9ycyJdLG51bV9lcnJfbG9nX2VudHJpZXM6WyLplJnor6/ml6Xlv5fmnaHnm64iLCJFcnJvciBsb2cgZW50cmllcyJdLHVuc2FmZV9zaHV0ZG93bnM6WyLpnZ7mraPluLjlhbPmnLrmrKHmlbAiLCJVbnNhZmUgc2h1dGRvd25zIl0sZGF0YV91bml0c19yZWFkOlsi6K+75Y+W5pWw5o2u5Y2V5YWDIiwiRGF0YSB1bml0cyByZWFkIl0sZGF0YV91bml0c193cml0dGVuOlsi5YaZ5YWl5pWw5o2u5Y2V5YWDIiwiRGF0YSB1bml0cyB3cml0dGVuIl0sUmVhbGxvY2F0ZWRfU2VjdG9yX0N0Olsi6YeN5pig5bCE5omH5Yy65pWwIiwiUmVhbGxvY2F0ZWQgc2VjdG9ycyJdLFJlYWxsb2NhdGVkX0V2ZW50X0NvdW50Olsi6YeN5pig5bCE5LqL5Lu25pWwIiwiUmVhbGxvY2F0aW9uIGV2ZW50cyJdLEN1cnJlbnRfUGVuZGluZ19TZWN0b3I6WyLlvoXlpITnkIbmiYfljLrmlbAiLCJDdXJyZW50IHBlbmRpbmcgc2VjdG9ycyJdLE9mZmxpbmVfVW5jb3JyZWN0YWJsZTpbIuemu+e6v+S4jeWPr+e6oOato+aJh+WMuiIsIk9mZmxpbmUgdW5jb3JyZWN0YWJsZSBzZWN0b3JzIl0sUmVwb3J0ZWRfVW5jb3JyZWN0Olsi5bey5oql5ZGK5LiN5Y+v57qg5q2j6ZSZ6K+vIiwiUmVwb3J0ZWQgdW5jb3JyZWN0YWJsZSBlcnJvcnMiXSxVRE1BX0NSQ19FcnJvcl9Db3VudDpbIuaOpeWPoyBDUkMg6ZSZ6K+v5pWwIiwiSW50ZXJmYWNlIENSQyBlcnJvcnMiXSxSYXdfUmVhZF9FcnJvcl9SYXRlOlsi5Y6f5aeL6K+75Y+W6ZSZ6K+v546H77yI5Y6C5ZWG5a6a5LmJ77yJIiwiUmF3IHJlYWQgZXJyb3IgcmF0ZSAodmVuZG9yIGRlZmluZWQpIl0sU2Vla19FcnJvcl9SYXRlOlsi5a+76YGT6ZSZ6K+v546H77yI5Y6C5ZWG5a6a5LmJ77yJIiwiU2VlayBlcnJvciByYXRlICh2ZW5kb3IgZGVmaW5lZCkiXSxQb3dlcl9Pbl9Ib3VyczpbIumAmueUteaXtumXtCIsIlBvd2VyLW9uIGhvdXJzIl0sUG93ZXJfQ3ljbGVfQ291bnQ6WyLpgJrnlLXmrKHmlbAiLCJQb3dlciBjeWNsZXMiXSxUZW1wZXJhdHVyZV9DZWxzaXVzOlsi5rip5bqm77yI5Y6C5ZWG5Y6f5aeL5qC85byP77yJIiwiVGVtcGVyYXR1cmUgKHZlbmRvciByYXcgZm9ybWF0KSJdLFdlYXJfTGV2ZWxpbmdfQ291bnQ6WyLno6jmjZ/lnYfooaHorqHmlbDvvIjljoLllYblrprkuYnvvIkiLCJXZWFyIGxldmVsaW5nIGNvdW50ICh2ZW5kb3IgZGVmaW5lZCkiXSxNZWRpYV9XZWFyb3V0X0luZGljYXRvcjpbIuS7i+i0qOejqOaNn+aMh+agh++8iOWOguWVhuWumuS5ie+8iSIsIk1lZGlhIHdlYXJvdXQgaW5kaWNhdG9yICh2ZW5kb3IgZGVmaW5lZCkiXSxQZXJjZW50X0xpZmV0aW1lX1JlbWFpbjpbIuWJqeS9meWvv+WRve+8iOWOguWVhuWumuS5ie+8iSIsIlJlbWFpbmluZyBsaWZlICh2ZW5kb3IgZGVmaW5lZCkiXSxzY3NpX2dyb3duX2RlZmVjdF9saXN0Olsi5aKe6ZW/57y66Zm35YiX6KGoIiwiR3Jvd24gZGVmZWN0IGxpc3QiXSxzY3NpX3JlYWRfZXJyb3JzOlsi5LiN5Y+v57qg5q2j6K+75Y+W6ZSZ6K+vIiwiVW5jb3JyZWN0ZWQgcmVhZCBlcnJvcnMiXSxzY3NpX3dyaXRlX2Vycm9yczpbIuS4jeWPr+e6oOato+WGmeWFpemUmeivryIsIlVuY29ycmVjdGVkIHdyaXRlIGVycm9ycyJdLHNjc2lfdmVyaWZ5X2Vycm9yczpbIuS4jeWPr+e6oOato+agoemqjOmUmeivryIsIlVuY29ycmVjdGVkIHZlcmlmeSBlcnJvcnMiXX07ZnVuY3Rpb24gSihlLHQpe3JldHVybiBRW2VdP1kodCwuLi5RW2VdKTpZKHQsIuWOguWVhuWxnuaApyIsIlZlbmRvciBhdHRyaWJ1dGUiKX1jb25zdCBaPShlLHQpPT5ZKHQsLi4ue3Vua25vd246WyLmnKrnn6UiLCJVbmtub3duIl0sbm9ybWFsOlsi5pyq6Kem5Y+R6KeE5YiZIiwiTm8gcnVsZSB0cmlnZ2VyZWQiXSx5ZWxsb3c6WyLlhbPms6giLCJBdHRlbnRpb24iXSxyZWQ6WyLpq5jpo47pmakiLCJIaWdoIHJpc2siXSxkYXJrcmVkOlsi5Lil6YeN6aOO6ZmpIiwiQ3JpdGljYWwgcmlzayJdfVtlXXx8WyLmnKrnn6UiLCJVbmtub3duIl0pLGVlPXtmYWlsZWQ6WyLorr7lpIfmiqXlkYrlgaXlurfmo4Dmn6XlpLHotKUiLCJEZXZpY2UgcmVwb3J0cyBmYWlsZWQgaGVhbHRoIGFzc2Vzc21lbnQiXSxjcml0aWNhbDpbIuiuvuWkh+S4pemHjeitpuWRiuS9jemdnumbtiIsIkRldmljZSBjcml0aWNhbCB3YXJuaW5nIGJpdHMgYXJlIG5vbnplcm8iXSx0aHJlc2hvbGQ6WyLlt7Lovr7liLDorr7lpIfmiqXlkYrnmoTpmIjlgLwiLCJEZXZpY2UtcmVwb3J0ZWQgdGhyZXNob2xkIHJlYWNoZWQiXSxoaXN0b3JpY2FsOlsi6K6+5aSH5oql5ZGK5pu+6LaK6L+H6ZiI5YC8IiwiRGV2aWNlIHJlcG9ydHMgYSBwcmV2aW91cyB0aHJlc2hvbGQgZmFpbHVyZSJdLGVuZHVyYW5jZTpbIuW3sua2iOiAl+Wvv+WRvei+vuWIsOWxleekuuetlueVpemYiOWAvCIsIkVuZHVyYW5jZSB1c2VkIHJlYWNoZWQgYSBkaXNwbGF5IHBvbGljeSB0aHJlc2hvbGQiXSxjb3VudGVyOlsi6K+l6ZSZ6K+v5oiW57y66Zm36K6h5pWw6Z2e6Zu2IiwiVGhpcyBlcnJvciBvciBkZWZlY3QgY291bnRlciBpcyBub256ZXJvIl0saW5jcmVhc2VkOlsi55u46L6D5LiK5LiA5pyJ5pWI6YeH5qC35Yqj5YyWIiwiRGV0ZXJpb3JhdGVkIHNpbmNlIHRoZSBwcmV2aW91cyB2YWxpZCBzYW1wbGUiXSxub3JtYWxpemVkOlsi5b2S5LiA5YyW5YC85LiL6ZmN77yb5Y6f5aeL5YC85ZCr5LmJ55Sx5Y6C5ZWG5a6a5LmJIiwiTm9ybWFsaXplZCB2YWx1ZSBmZWxsOyByYXcgc2VtYW50aWNzIGFyZSB2ZW5kb3IgZGVmaW5lZCJdLHZlbmRvcjpbIuWOguWVhuWxnuaAp+WOn+Wni+WAvOS4jeWBmumAmueUqOmjjumZqeaOqOaWrSIsIk5vIGdlbmVyaWMgcmlzayBpbmZlcmVuY2UgZnJvbSB2ZW5kb3IgcmF3IHZhbHVlcyJdLGluZm9ybWF0aW9uYWw6WyLku4Xkvpvlj4LogIPvvIzkuI3mja7mraTmjqjmlq3lr7/lkb3miJbmlYXpmpwiLCJJbmZvcm1hdGlvbmFsOyBubyBsaWZlc3BhbiBvciBmYWlsdXJlIGluZmVyZW5jZSJdfSx0ZT0oZSx0KT0+ZWVbZV0/WSh0LC4uLmVlW2VdKToi4oCUIjtjb25zdCBuZT0nXG4ucGstc21hcnQtYWN0aW9uc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjhweDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9XG4ucGstc21hcnQtaGlzdG9yeXttYXgtaGVpZ2h0OjI0MHB4O292ZXJmbG93OmF1dG87cGFkZGluZzo0cHggNHB4IDRweCAyMnB4fS5way1zbWFydC1oaXN0b3J5IGxpe21hcmdpbjo0cHggMH0ucGstc21hcnQtaGlzdG9yeSBidXR0b25bYXJpYS1wcmVzc2VkPXRydWVde291dGxpbmU6MnB4IHNvbGlkICMwODdlZjV9XG4ucGstc21hcnQtdGFie2JvcmRlcjowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7cGFkZGluZzoxMHB4IDE0cHg7Y29sb3I6IzUzNjg4MDtjdXJzb3I6cG9pbnRlcjtmb250OmluaGVyaXQ7d2hpdGUtc3BhY2U6bm93cmFwfS5way1zbWFydC10YWJbYXJpYS1zZWxlY3RlZD10cnVlXXtjb2xvcjojMDg3ZWY1O2JvcmRlci1ib3R0b206MnB4IHNvbGlkICMwODdlZjV9LnBrLXNtYXJ0LXRhYjpmb2N1cy12aXNpYmxlLC5way1zbWFydC1wYW5lbCBidXR0b246Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjJweCBzb2xpZCAjMDg3ZWY1O291dGxpbmUtb2Zmc2V0OjJweH1cbi5way1zbWFydC1wYW5lbHtmb250OjEzcHgvMS42IC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCJTZWdvZSBVSSIsc2Fucy1zZXJpZjtjb2xvcjojMjQzYTU1O3BhZGRpbmc6MjBweDtiYWNrZ3JvdW5kOiNmNWY3ZmI7b3ZlcmZsb3c6YXV0bzttYXgtaGVpZ2h0OmNhbGMoMTAwdmggLSAyNDBweCl9LnBrLXNtYXJ0LXBhbmVsICp7Ym94LXNpemluZzpib3JkZXItYm94fS5way1zbWFydC1wYW5lbCBoM3tmb250LXNpemU6MTZweDttYXJnaW46MCAwIDEycHh9LnBrLXNtYXJ0LXBhbmVsIGg0e21hcmdpbjoxOHB4IDAgOHB4fS5way1zbWFydC1wYW5lbCBwe21hcmdpbjo4cHggMH0ucGstc21hcnQtY2FyZHtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZTJlOWYyO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MTZweDttYXJnaW4tYm90dG9tOjEycHh9LnBrLXNtYXJ0LW1ldGF7Y29sb3I6IzYzNzY4ZDtmb250LXNpemU6MTJweDtvdmVyZmxvdy13cmFwOmFueXdoZXJlfS5way1zbWFydC1iYW5uZXJ7cGFkZGluZzoxMHB4IDEycHg7YmFja2dyb3VuZDojZWFmM2ZmO2JvcmRlci1yYWRpdXM6NnB4O21hcmdpbjo4cHggMH0ucGstc21hcnQtbm90aWNle3BhZGRpbmc6MTBweCAxMnB4O2JhY2tncm91bmQ6I2ZmZjVkODtjb2xvcjojNjk0YzAwO2JvcmRlci1yYWRpdXM6NnB4O21hcmdpbjo4cHggMH0ucGstc21hcnQtc3VtbWFyeXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4fS5way1zbWFydC1wYW5lbCBidXR0b257Ym9yZGVyOjFweCBzb2xpZCAjZDVkZmViO2JhY2tncm91bmQ6d2hpdGU7Ym9yZGVyLXJhZGl1czo1cHg7cGFkZGluZzo1cHggMTBweDtjb2xvcjppbmhlcml0O2N1cnNvcjpwb2ludGVyfS5way1zbWFydC1wYW5lbCBidXR0b246ZGlzYWJsZWR7b3BhY2l0eTouNTtjdXJzb3I6ZGVmYXVsdH0ucGstc21hcnQtc2Nyb2xse292ZXJmbG93LXg6YXV0b30ucGstc21hcnQtdGFibGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO3dpZHRoOjEwMCU7Zm9udC1zaXplOjEycHh9LnBrLXNtYXJ0LXRhYmxlIHRoLC5way1zbWFydC10YWJsZSB0ZHtwYWRkaW5nOjEwcHggOHB4O3RleHQtYWxpZ246bGVmdDt2ZXJ0aWNhbC1hbGlnbjp0b3A7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2U1ZWJmMztvdmVyZmxvdy13cmFwOmFueXdoZXJlO21pbi13aWR0aDo3MnB4fS5way1zbWFydC10YWJsZSB0ZDpmaXJzdC1jaGlsZHttaW4td2lkdGg6MTkwcHh9LnBrLXNtYXJ0LXRhYmxlIHRoe2NvbG9yOiM2Mzc2OGQ7Zm9udC13ZWlnaHQ6NTAwO2JhY2tncm91bmQ6I2Y3ZjlmY30ucGstc21hcnQtY29kZXtmb250OjExcHggdWktbW9ub3NwYWNlLFNGTW9uby1SZWd1bGFyLENvbnNvbGFzLG1vbm9zcGFjZTtjb2xvcjppbmhlcml0O29wYWNpdHk6Ljg7ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjJweDtvdmVyZmxvdy13cmFwOmFueXdoZXJlfS5way1zbWFydC1yaXNrLXllbGxvd3tiYWNrZ3JvdW5kOiNmZmYxYjghaW1wb3J0YW50O2NvbG9yOiM1OTQwMDAhaW1wb3J0YW50fS5way1zbWFydC1yaXNrLXJlZHtiYWNrZ3JvdW5kOiNmZmQ4ZDIhaW1wb3J0YW50O2NvbG9yOiM4MjBkMTYhaW1wb3J0YW50fS5way1zbWFydC1yaXNrLWRhcmtyZWR7YmFja2dyb3VuZDojOGMxMDI2IWltcG9ydGFudDtjb2xvcjojZmZmIWltcG9ydGFudH0ucGstc21hcnQtcmlzay11bmtub3due2JhY2tncm91bmQ6I2YwZjJmNTtjb2xvcjojNWU2YTdifS5way1zbWFydC1waWxse2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlci1yYWRpdXM6NHB4O3BhZGRpbmc6M3B4IDhweDtmb250LXdlaWdodDo2MDB9LnBrLXNtYXJ0LXBvbGljeXtmb250LXNpemU6MTJweDtjb2xvcjojNjM3NjhkfS5way1zbWFydC1wYW5lbCBbaGlkZGVuXXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fVxuJztmdW5jdGlvbiByZSh7d2luOmUsc3RvcmU6dCxnZXRMb2NhbGU6bixwcm92aWRlcjpyLGZpbmREZXRhaWw6bz1CLHRpbWVvdXRNczphPThlMyxjb2xsZWN0aW9uVGltZW91dE1zOmk9NDVlMyxjb2xsZWN0aW9uSW50ZXJ2YWxNczpzPTE1MDB9KXtjb25zdCBsPWUuZG9jdW1lbnQsZD1sLmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7ZC5kYXRhc2V0LnBrU21hcnRTdHlsZT0iIixkLnRleHRDb250ZW50PW5lLGwuaGVhZC5hcHBlbmQoZCk7bGV0IGM9ITEsdT1udWxsLHA9bnVsbCxfPTA7ZnVuY3Rpb24gQSgpe3RyeXtyZXR1cm4gbyhlKX1jYXRjaHtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gbShlKXtjb25zdCB0PUEoKTtyZXR1cm4gQm9vbGVhbih0JiZ0LmRpc2tJZD09PWUuZGlza0lkJiZ0LnBhdGg9PT1lLnBhdGgmJnQucm9vdD09PWUucm9vdCYmdC50YWJzPT09ZS50YWJzJiZ0LmNvbnRlbnQ9PT1lLmNvbnRlbnQpfWZ1bmN0aW9uIGgoKXtpZighdSlyZXR1cm47Y29uc3R7cGFuZWw6ZSxidXR0b246dCxkZXRhaWw6bn09dTsicnVubmluZyI9PT11LnN0YXRlLmNvbGxlY3Rpb24/LnN0YXR1cyYmKHUuY29sbGVjdGlvbkFib3J0Py5hYm9ydCgpLHUuc3RhdGUuY29sbGVjdGlvbj17Li4udS5zdGF0ZS5jb2xsZWN0aW9uLHN0YXR1czoidW5rbm93biIsY29kZToiU01BUlRfQ09MTEVDVElPTl9XQUlUX0NBTkNFTExFRCJ9KSxlLmhpZGRlbj0hMCx0LnNldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsImZhbHNlIiksdS5vcGVuJiYobi5jb250ZW50LmhpZGRlbj11Lm9yaWdpbmFsSGlkZGVuLHUub3Blbj0hMSl9ZnVuY3Rpb24gZigpe18rKyx1JiYodS5hYm9ydD8uYWJvcnQoKSx1LmNvbGxlY3Rpb25BYm9ydD8uYWJvcnQoKSxlLmNsZWFyVGltZW91dCh1LnRpbWVvdXQpLGgoKSx1LmRldGFpbC50YWJzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIixUKSx1LmJ1dHRvbi5yZW1vdmUoKSx1LnBhbmVsLnJlbW92ZSgpLHU9bnVsbCl9ZnVuY3Rpb24gVChlKXtlLnRhcmdldC5jbG9zZXN0KCJbZGF0YS1way1zbWFydC10YWJdIil8fGgoKX1mdW5jdGlvbiBnKCl7aWYoIXUpcmV0dXJuO3UuYnV0dG9uLnRleHRDb250ZW50PVkobigpLCJTbWFydCDkv6Hmga8iLCJTTUFSVCBpbmZvcm1hdGlvbiIpO2NvbnN0IGU9ImZ1bmN0aW9uIj09dHlwZW9mIHI/LmNvbGxlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiByPy5jb2xsZWN0aW9uOyFmdW5jdGlvbihlLHQsbixyLG8sYSxpKXtjb25zdCBzPWUub3duZXJEb2N1bWVudCxsPShlLHQpPT5ZKG4sZSx0KSxkPSh0LG4scixvPWUpPT57Y29uc3QgYT1mdW5jdGlvbihlLHQsbixyKXtjb25zdCBvPWUuY3JlYXRlRWxlbWVudCh0KTtyZXR1cm4gdm9pZCAwIT09biYmKG8udGV4dENvbnRlbnQ9biksciYmKG8uY2xhc3NOYW1lPXIpLG99KHMsdCxuLHIpO3JldHVybiBvLmFwcGVuZChhKSxhfTtlLnJlcGxhY2VDaGlsZHJlbigpLGUubGFuZz1uO2NvbnN0IGM9ZCgiZGl2Iix2b2lkIDAsInBrLXNtYXJ0LWNhcmQiKSx1PWQoImRpdiIsdm9pZCAwLCJway1zbWFydC1zdW1tYXJ5IixjKTtkKCJoMyIsbCgiU21hcnQg5L+h5oGvIiwiU01BUlQgaW5mb3JtYXRpb24iKSwiIix1KTtjb25zdCBwPSJydW5uaW5nIj09PXQuY29sbGVjdGlvbj8uc3RhdHVzLF89ITA9PT10LnJlc3VsdD8udmlydHVhbERlbW8sQT1kKCJkaXYiLHZvaWQgMCwicGstc21hcnQtYWN0aW9ucyIsdSksbT1kKCJidXR0b24iLF8/bCgi5Yi35paw56S65L6LIiwiUmVmcmVzaCBleGFtcGxlIik6bCgi6YeN5paw6K+75Y+WIiwiUmVsb2FkIiksIiIsQSk7bS50eXBlPSJidXR0b24iLG0uZGlzYWJsZWQ9Qm9vbGVhbih0LmxvYWRpbmd8fHQuaGlzdG9yeUxvYWRpbmd8fHApLG0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHIpO2NvbnN0IGg9ZCgiYnV0dG9uIixwP2woIumHh+mbhuS4reKApiIsIkNvbGxlY3RpbmfigKYiKTpsKCLnq4vljbPph4fpm4YiLCJDb2xsZWN0IG5vdyIpLCIiLEEpO2lmKGgudHlwZT0iYnV0dG9uIixoLmRhdGFzZXQuc21hcnRDb2xsZWN0PSIiLGguZGlzYWJsZWQ9Qm9vbGVhbih0LmxvYWRpbmd8fHQuaGlzdG9yeUxvYWRpbmd8fHB8fCF0LnJlc3VsdD8uaWRlbnRpdHl8fCF0LmNhbkNvbGxlY3QpLGguYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGkpLGQoInAiLF8/bCgi6Jma5ouf55uY5ryU56S65LiN5omn6KGM55yf5a6e6YeH6ZuG77yb5Yi35paw5Y+q6YeN5paw5qC46aqM5Z6L5Y+35bm255Sf5oiQ5pys5Zyw56S65L6L44CCIiwiVmlydHVhbCBkaXNrIGRlbW9uc3RyYXRpb25zIGRvIG5vdCBjb2xsZWN0IGZyb20gYSBob3N0LiBSZWZyZXNoIG9ubHkgdmVyaWZpZXMgdGhlIG1vZGVsIGFuZCBnZW5lcmF0ZXMgbG9jYWwgZXhhbXBsZXMuIik6bCgi6YeN5paw6K+75Y+W5Y+q5Yi35paw5bey5pyJ6YeH5qC377yb56uL5Y2z6YeH6ZuG6ZyA5bey6YWN572u5Y+v5L+h6K6+5aSH5bm25a6M5oiQ5Lq65bel5a6h5qC444CCIiwiUmVsb2FkIG9ubHkgcmVhZHMgZXhpc3Rpbmcgc2FtcGxlcy4gQ29sbGVjdCBub3cgcmVxdWlyZXMgYSB0cnVzdGVkIGRldmljZSBhbmQgZXhwbGljaXQgYWRtaW5pc3RyYXRvciBhcHByb3ZhbC4iKSwicGstc21hcnQtbWV0YSIsYyksdC5jYW5Db2xsZWN0fHxffHxkKCJwIixXKHtzdGF0dXM6ImZhaWxlZCIsY29kZToiU01BUlRfQ09MTEVDVElPTl9VTkFWQUlMQUJMRSJ9LG4pLCJway1zbWFydC1tZXRhIixjKSx0LmNvbGxlY3Rpb24mJmQoInAiLFcodC5jb2xsZWN0aW9uLG4pLCJway1zbWFydC1ub3RpY2UgcGstc21hcnQtY29sbGVjdGlvbiIsYykuc2V0QXR0cmlidXRlKCJyb2xlIiwic3RhdHVzIiksdC5sb2FkaW5nKXJldHVybiB2b2lkIGQoInAiLGwoIuato+WcqOaguOmqjOejgeebmOi6q+S7veW5tuivu+WPluaVsOaNruKApiIsIlZlcmlmeWluZyBkaXNrIGlkZW50aXR5IGFuZCBsb2FkaW5n4oCmIiksIiIsYyk7aWYodC5lcnJvcilyZXR1cm4gdm9pZCBkKCJwIixLKHQuZXJyb3IsbiksInBrLXNtYXJ0LW5vdGljZSIsYykuc2V0QXR0cmlidXRlKCJyb2xlIiwic3RhdHVzIik7Y29uc3QgZj10LnJlc3VsdDtpZighZilyZXR1cm47Y29uc3QgVD1fP2YuaW52ZW50b3J5OmYuaWRlbnRpdHksZz1fP251bGw6Zi5oaXN0b3J5LmZpbmQoZT0+ZS5jb2xsZWN0ZWRBdD09PXQuc2VsZWN0ZWRBdCkse3NhbXBsZTpFLHByZXZpb3VzOlN9PV8/e3NhbXBsZTpmLmV4YW1wbGUscHJldmlvdXM6bnVsbH06VShnfHxmLmxhdGVzdCxmLmhpc3RvcnkpO2lmKGQoInAiLFQubW9kZWx8fCLigJQiLCJway1zbWFydC1tZXRhIixjKSxkKCJwIixfP2woIuiZmuaLn+ejgeebmOaooeaLn+ekuuS+iyIsIlZpcnR1YWwgZGlzayBkZW1vbnN0cmF0aW9uIik6Zz9sKCLmraPlnKjmn6XnnIvljoblj7Lph4fmoLciLCJWaWV3aW5nIGEgaGlzdG9yaWNhbCBzYW1wbGUiKTpsKCLmnIDov5Hph4fpm4bnu5PmnpwiLCJMYXRlc3QgY29sbGVjdGlvbiByZXN1bHQiKSwicGstc21hcnQtbWV0YSIsYyksXyYmZCgicCIsbCgi6Jma5ouf56OB55uY5qih5ouf56S65L6LIMK3IOS7peS4i+aVsOWAvOS4uuacrOWcsOaehOmAoO+8jOmdnuivpeebmOWunumZhSBTTUFSVOOAgeWBpeW6t+aIluWvv+WRveaVsOaNruOAguecn+WunuWBpeW6t+eKtuaAgeacquefpe+8m+ekuuS+i+S4jeWGmeWFpemHh+agt+WOhuWPsuOAgiIsIlZJUlRVQUwgRElTSyBFWEFNUExFIMK3IFZhbHVlcyBiZWxvdyBhcmUgZ2VuZXJhdGVkIGxvY2FsbHksIG5vdCB0aGlzIGRpc2vigJlzIGFjdHVhbCBTTUFSVCwgaGVhbHRoIG9yIGVuZHVyYW5jZSBkYXRhLiBSZWFsIGhlYWx0aCBpcyB1bmtub3duLiBFeGFtcGxlcyBhcmUgbm90IHN0b3JlZCBpbiBzYW1wbGUgaGlzdG9yeS4iKSwicGstc21hcnQtYmFubmVyIHBrLXNtYXJ0LXZpcnR1YWwtYmFubmVyIixjKS5zZXRBdHRyaWJ1dGUoInJvbGUiLCJzdGF0dXMiKSwibW9jayI9PT1FLnNvdXJjZSYmZCgicCIsbCgi5pys5Zyw5qih5ouf5pWw5o2uIMK3IOacqui/nuaOpeecn+WunuS4u+acuiDCtyDmnKrlkK/nlKjmr4/ml6Xph4fpm4YiLCJMb2NhbCBtb2NrIGRhdGEgwrcgTm8gbGl2ZSBob3N0IGNvbm5lY3RlZCDCtyBEYWlseSBjb2xsZWN0aW9uIGlzIGluYWN0aXZlIiksInBrLXNtYXJ0LWJhbm5lciIsYyksWyJ1bmF2YWlsYWJsZSIsInVuc3VwcG9ydGVkIl0uaW5jbHVkZXMoRS5zdGF0dXMpKWQoInAiLCJ1bnN1cHBvcnRlZCI9PT1FLnN0YXR1cz9sKCLor6Xorr7lpIfkuI3mlK/mjIEgU01BUlQg5oiW5pyq6YCP5Lyg77yb5YGl5bq354q25oCB5pyq55+l44CCIiwiU01BUlQgaXMgdW5zdXBwb3J0ZWQgb3Igbm90IHBhc3NlZCB0aHJvdWdoOyBoZWFsdGggaXMgdW5rbm93bi4iKTpLKEUuY29kZSxuKSwicGstc21hcnQtbm90aWNlIixjKSxFLmNvbGxlY3RlZEF0JiZkKCJwIixgJHtsKCLph4fpm4blsJ3or5Xml7bpl7TvvIhVVEPvvIkiLCJDb2xsZWN0aW9uIGF0dGVtcHQgKFVUQykiKX06ICR7RS5jb2xsZWN0ZWRBdH1gLCJway1zbWFydC1tZXRhIixjKSwiU01BUlRfTk9fU0FNUExFIiE9PUUuY29kZSYmZCgicCIsWChuKSwicGstc21hcnQtbWV0YSBway1zbWFydC1mYWlsdXJlLWd1aWRhbmNlIixjKTtlbHNle0UuZ2FwQ29kZSYmZCgicCIsZnVuY3Rpb24oZSx0KXtjb25zdCBuPXtTTUFSVF9DT0xMRUNUSU9OX0ZBSUxFRDpbIumHh+mbhuWksei0pSIsImNvbGxlY3Rpb24gZmFpbHVyZSJdLFNNQVJUX1VOQVZBSUxBQkxFOlsi5pWw5o2u5LiN5Y+v55SoIiwiZGF0YSB1bmF2YWlsYWJsZSJdLFNNQVJUX1VOU1VQUE9SVEVEOlsi5b2T5pe25LiN5pSv5oyBIFNNQVJUIiwiU01BUlQgd2FzIHVuc3VwcG9ydGVkIl0sU01BUlRfSU5WQUxJRF9EQVRBOlsi5pWw5o2u5peg5pWIIiwiaW52YWxpZCBkYXRhIl0sU01BUlRfREVWSUNFX0NIQU5HRUQ6WyLorr7lpIflj5jljJYiLCJkZXZpY2UgY2hhbmdlZCJdLFNNQVJUX0lERU5USVRZX01JU01BVENIOlsi6K6+5aSH6Lqr5Lu95LiN56ymIiwiZGV2aWNlIGlkZW50aXR5IG1pc21hdGNoIl0sU01BUlRfRVhFQ1VUSU9OX1RJTUVPVVQ6WyLph4fpm4botoXml7YiLCJjb2xsZWN0aW9uIHRpbWVkIG91dCJdLFNNQVJUX0VYRUNVVElPTl9DQU5DRUxMRUQ6WyLph4fpm4blj5bmtogiLCJjb2xsZWN0aW9uIGNhbmNlbGxlZCJdLFNNQVJUX09VVFBVVF9JTlZBTElEOlsi6YeH6ZuG57uT5p6c5peg5pWIIiwiaW52YWxpZCBjb2xsZWN0aW9uIG91dHB1dCJdfVtlXTtyZXR1cm4gbj9ZKHQsYOW9k+aXpeabvumHh+mbhuWksei0pe+8jOWQjuaBouWkje+8iCR7blswXX3vvInjgILmraTliY3lpLHotKXml7bliLvmnKrmj5DkvpvjgIJgLGBDb2xsZWN0aW9uIGZhaWxlZCBlYXJsaWVyIHRoYXQgVVRDIGRheSwgdGhlbiByZWNvdmVyZWQgKCR7blsxXX0pLiBUaGUgZWFybGllciBmYWlsdXJlIHRpbWUgd2FzIG5vdCBwcm92aWRlZC5gKToiIn0oRS5nYXBDb2RlLG4pLCJway1zbWFydC1ub3RpY2UgcGstc21hcnQtcmVjb3ZlcmVkIixjKS5zZXRBdHRyaWJ1dGUoInJvbGUiLCJzdGF0dXMiKSxkKCJzcGFuIixgJHtfP2woIuekuuS+i+mjjumZqe+8iOmdnuecn+WunuWIpOaWre+8iSIsIkV4YW1wbGUgcmlzayAobm90IGFuIGFjdHVhbCBhc3Nlc3NtZW50KSIpOmwoIuWxleekuumjjumZqSIsIkRpc3BsYXkgcmlzayIpfTogJHtaKEUucmlzayxuKX1gLGBway1zbWFydC1waWxsIHBrLXNtYXJ0LXJpc2stJHtFLnJpc2t9YCxjKSxkKCJwIixgJHtfP2woIuekuuS+i+eUn+aIkOaXtumXtO+8iOmdnumHh+mbhuaXtumXtO+8jFVUQ++8iSIsIkV4YW1wbGUgZ2VuZXJhdGVkIChub3QgY29sbGVjdGVkLCBVVEMpIik6bCgi6YeH5qC35pe26Ze077yIVVRD77yJIiwiU2FtcGxlIHRpbWUgKFVUQykiKX06ICR7Xz9FLmdlbmVyYXRlZEF0OkUuY29sbGVjdGVkQXR9YCwicGstc21hcnQtbWV0YSIsYyksZCgicCIsYCR7RS5wcm90b2NvbH0gwrcgJHtsKCLmlbDmja7mnaXmupAiLCJTb3VyY2UiKX06ICR7RS5zb3VyY2V9YCwicGstc21hcnQtbWV0YSIsYyksInN0YWxlIj09PUUuc3RhdHVzJiZkKCJwIixsKCLmlbDmja7lt7Lov4fmnJ/vvIjotoXov4cgMzYg5bCP5pe25oiW6YeH6ZuG5pyN5Yqh5qCH6K6w6L+H5pyf77yJ77yM5peg5rOV5o2u5q2k5Yik5pat5b2T5YmN5YGl5bq354q25oCB44CCIiwiRGF0YSBpcyBzdGFsZSAob3ZlciAzNiBob3VycyBvbGQgb3IgbWFya2VkIHN0YWxlIGJ5IHRoZSBwcm92aWRlcik7IGN1cnJlbnQgaGVhbHRoIGNhbm5vdCBiZSBkZXRlcm1pbmVkLiIpLCJway1zbWFydC1ub3RpY2UiLGMpLGQoInAiLF8/bCgi56S65L6L5LiN5LiO55yf5a6e5Y6G5Y+y5a+55q+U77yM5LiN6K6h566X6K+l55uY5a6e6ZmF5Yqj5YyW44CCIiwiRXhhbXBsZXMgYXJlIG5vdCBjb21wYXJlZCB3aXRoIHJlYWwgaGlzdG9yeSBhbmQgZG8gbm90IG1lYXN1cmUgdGhpcyBkaXNr4oCZcyBhY3R1YWwgZGV0ZXJpb3JhdGlvbi4iKTpTP2Ake2woIuWPmOWMluWvueavlOS4iuS4gOacieaViOmHh+agtyIsIkNoYW5nZXMgc2luY2UgcHJldmlvdXMgdmFsaWQgc2FtcGxlIil9OiAke1MuY29sbGVjdGVkQXR9YDpsKCLml6DkuIrkuIDmnInmlYjph4fmoLfvvIzlsJrkuI3og73orqHnrpfliqPljJbjgIIiLCJObyBwcmV2aW91cyB2YWxpZCBzYW1wbGU7IGRldGVyaW9yYXRpb24gY2Fubm90IHlldCBiZSBjYWxjdWxhdGVkLiIpLCJway1zbWFydC1tZXRhIixjKSxmLmhpc3RvcnlVbmF2YWlsYWJsZSYmZCgicCIsbCgi5Y6G5Y+y6K+75Y+W5aSx6LSl77yM5b2T5YmN5YC85LuN5Y+v5p+l55yL77yb5pyq6K6h566X5Yqj5YyW44CCIiwiSGlzdG9yeSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDdXJyZW50IHZhbHVlcyByZW1haW4gYXZhaWxhYmxlOyBkZXRlcmlvcmF0aW9uIHdhcyBub3QgY2FsY3VsYXRlZC4iKSwicGstc21hcnQtbm90aWNlIixjKSxkKCJoNCIsXz9sKCJTTUFSVCDmqKHmi5/npLrkvovmnaHnm64iLCJFeGFtcGxlIFNNQVJUIG1ldHJpY3MiKTpsKCJTTUFSVCDmnaHnm64gwrcg6aOO6Zmp5LyY5YWIIiwiU01BUlQgbWV0cmljcyDCtyBSaXNrcyBmaXJzdCIpKTtjb25zdCBlPWQoImRpdiIsdm9pZCAwLCJway1zbWFydC1zY3JvbGwiKSx0PWQoInRhYmxlIix2b2lkIDAsInBrLXNtYXJ0LXRhYmxlIixlKSxyPWQoInRoZWFkIix2b2lkIDAsIiIsdCksbz1kKCJ0ciIsdm9pZCAwLCIiLHIpO2Zvcihjb25zdCBlIG9mW2woIuadoeebriAvIOWOn+Wni+WQjeensCIsIk1ldHJpYyAvIG9yaWdpbmFsIG5hbWUiKSxsKCLlvZPliY3lgLwiLCJDdXJyZW50IiksbCgi5Y+Y5YyWIC8g5Yqj5YyWIiwiQ2hhbmdlIC8gZGV0ZXJpb3JhdGlvbiIpLGwoIumjjumZqeS4juS+neaNriIsIlJpc2sgYW5kIHJlYXNvbiIpXSlkKCJ0aCIsZSwiIixvKS5zY29wZT0iY29sIjtjb25zdCBhPWQoInRib2R5Iix2b2lkIDAsIiIsdCksaT17ZGFya3JlZDo0LHJlZDozLHllbGxvdzoyLHVua25vd246MSxub3JtYWw6MH07Zm9yKGNvbnN0IGUgb2ZbLi4uRS5tZXRyaWNzXS5zb3J0KChlLHQpPT5pW3Qucmlza10taVtlLnJpc2tdKSl7Y29uc3QgdD1kKCJ0ciIsdm9pZCAwLGBway1zbWFydC1yaXNrLSR7ZS5yaXNrfWAsYSk7dC5kYXRhc2V0Lm1ldHJpYz1lLmlkO2NvbnN0IHI9ZCgidGQiLEooZS5uYW1lLG4pLCIiLHQpO2QoInNwYW4iLGAke2UuaWR9IMK3ICR7ZS5uYW1lfWAsInBrLXNtYXJ0LWNvZGUiLHIpO2NvbnN0IG89ZCgidGQiLCJoZWFsdGgiPT09ZS5pZD8iMSI9PT1lLnZhbHVlP2woIumAmui/hyIsIlBhc3NlZCIpOmwoIuWksei0pSIsIkZhaWxlZCIpOmAke2UudmFsdWU/PyhlLnJhd1RleHR8fCLigJQiKX0ke251bGw9PT1lLnZhbHVlPyIiOmUudW5pdH1gLCIiLHQpO3ZvaWQgMCE9PWUubm9ybWFsaXplZD9kKCJzcGFuIixgJHtsKCLlvZLkuIDljJYgLyDmnIDlt64gLyDpmIjlgLwiLCJOb3JtYWxpemVkIC8gd29yc3QgLyB0aHJlc2hvbGQiKX06ICR7ZS5ub3JtYWxpemVkPz8i4oCUIn0gLyAke2Uud29yc3Q/PyLigJQifSAvICR7ZS50aHJlc2hvbGQ/PyLigJQifWAsInBrLXNtYXJ0LWNvZGUiLG8pOnZvaWQgMCE9PWUudGhyZXNob2xkJiZkKCJzcGFuIixgJHtsKCLorr7lpIfpmIjlgLwiLCJEZXZpY2UgdGhyZXNob2xkIil9OiAke2UudGhyZXNob2xkPz8i4oCUIn0lYCwicGstc21hcnQtY29kZSIsbyk7Y29uc3QgaT0iJSI9PT1lLnVuaXQ/bCgiIOS4queZvuWIhueCuSIsIiBwZXJjZW50YWdlIHBvaW50cyIpOmUudW5pdD9gICR7ZS51bml0fWA6IiIscz1kKCJ0ZCIsbnVsbD09PWUuZGVsdGE/IuKAlCI6YCR7QmlnSW50KGUuZGVsdGEpPjBuPyIrIjoiIn0ke2UuZGVsdGF9JHtpfWAsIiIsdCk7bnVsbCE9PWUuZGV0ZXJpb3JhdGlvbiYmZCgic3BhbiIsYCR7bCgi5Yqj5YyWIiwiRGV0ZXJpb3JhdGVkIil9OiAke2UuZGV0ZXJpb3JhdGlvbn0keyJub3JtYWxpemVkIj09PWUuZGV0ZXJpb3JhdGlvbktpbmQ/bCgiIOW9kuS4gOWMlueCuSIsIiBub3JtYWxpemVkIHBvaW50cyIpOml9YCwicGstc21hcnQtY29kZSIscyksImNvdW50ZXItcmVzZXQiPT09ZS50cmVuZCYmZCgic3BhbiIsbCgi6K6h5pWw5LiL6ZmN77ya5Y+v6IO96YeN572u77yb5LiN5b2T5L2c5pS55ZaEIiwiQ291bnRlciBkZWNyZWFzZWQ6IHBvc3NpYmxlIHJlc2V0OyBub3QgdHJlYXRlZCBhcyBpbXByb3ZlbWVudCIpLCJway1zbWFydC1jb2RlIixzKTtjb25zdCBjPWQoInRkIixaKGUucmlzayxuKSwiIix0KTtkKCJzcGFuIix0ZShlLnJlYXNvbixuKSwicGstc21hcnQtY29kZSIsYyl9fWlmKF8pcmV0dXJuIHZvaWQgZCgicCIsbCgi5pys6aG15pyq6K+75Y+W5oiW5YaZ5YWl55yf5a6e6YeH5qC35Y6G5Y+y77yM56S65L6L5LiN6K6h5Li65YWo5bGA5om55qyh6YeH6ZuG5oiQ5Yqf44CC5YWo5bGA6YeH6ZuG5LuN5Y+q5pON5L2c5bey57uR5a6a44CB5bey5a6h5qC455qE55yf5a6e55uu5qCH44CCIiwiVGhpcyBwYWdlIGRpZCBub3QgcmVhZCBvciB3cml0ZSBhY3R1YWwgc2FtcGxlIGhpc3RvcnkuIEV4YW1wbGVzIGRvIG5vdCBjb3VudCBhcyBzdWNjZXNzZnVsIGdsb2JhbCBiYXRjaCBjb2xsZWN0aW9ucy4gR2xvYmFsIGNvbGxlY3Rpb24gc3RpbGwgdXNlcyBib3VuZCwgYXBwcm92ZWQgcmVhbCB0YXJnZXRzLiIpLCJway1zbWFydC1tZXRhIik7ZCgiaDQiLGwoIuacgOi/kemHh+agt+iusOW9lSIsIlJlY2VudCBzYW1wbGVzIikpLGYuaGlzdG9yeVVuYXZhaWxhYmxlJiYhRS5tZXRyaWNzLmxlbmd0aCYmZCgicCIsbCgi5Y6G5Y+y6K+75Y+W5aSx6LSl77yM6K+36YeN5paw6K+75Y+W44CCIiwiSGlzdG9yeSBjb3VsZCBub3QgYmUgbG9hZGVkLiBSZWxvYWQgdG8gcmV0cnkuIiksInBrLXNtYXJ0LW5vdGljZSIpO2NvbnN0IEk9ZCgiYnV0dG9uIixsKCLmn6XnnIvmnIDov5Hnu5PmnpwiLCJWaWV3IGxhdGVzdCByZXN1bHQiKSk7aWYoSS50eXBlPSJidXR0b24iLEkuZGlzYWJsZWQ9IWcsSS5vbmNsaWNrPSgpPT5hKG51bGwpLGYuaGlzdG9yeS5sZW5ndGgpe2NvbnN0IGU9ZCgidWwiLHZvaWQgMCwicGstc21hcnQtbWV0YSBway1zbWFydC1oaXN0b3J5Iik7Zm9yKGNvbnN0IHIgb2YgZi5oaXN0b3J5KXtjb25zdCBvPWQoImxpIix2b2lkIDAsIiIsZSksaT1VKHIsZi5oaXN0b3J5KS5zYW1wbGUscz1yLm1ldHJpY3MubGVuZ3RoP1ooaS5yaXNrLG4pOiJ1bnN1cHBvcnRlZCI9PT1yLnN0YXR1cz9sKCLkuI3mlK/mjIEgwrcg5YGl5bq35pyq55+lIiwiVW5zdXBwb3J0ZWQgwrcgSGVhbHRoIHVua25vd24iKTpsKCLph4fpm4blpLHotKUgwrcg5YGl5bq35pyq55+lIiwiQ29sbGVjdGlvbiBmYWlsZWQgwrcgSGVhbHRoIHVua25vd24iKSxjPXIuZ2FwQ29kZT9sKCIgwrcg5b2T5pel6YeH6ZuG5bey5oGi5aSNIiwiIMK3IENvbGxlY3Rpb24gcmVjb3ZlcmVkIHRoYXQgZGF5Iik6IiIsdT1kKCJidXR0b24iLGAke3IuY29sbGVjdGVkQXR9IMK3ICR7c30ke2N9YCwiIixvKTt1LnR5cGU9ImJ1dHRvbiIsdS5kYXRhc2V0LnNhbXBsZVRpbWU9ci5jb2xsZWN0ZWRBdCx1LnNldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIixTdHJpbmcoci5jb2xsZWN0ZWRBdD09PXQuc2VsZWN0ZWRBdCkpLHUub25jbGljaz0oKT0+YShyLmNvbGxlY3RlZEF0KX19ZWxzZSBkKCJwIixsKCLmmoLml6Dljoblj7LorrDlvZXjgIIiLCJObyBoaXN0b3J5IGlzIGF2YWlsYWJsZS4iKSwicGstc21hcnQtbWV0YSIpO2lmKHQuaGlzdG9yeUVycm9yJiZkKCJwIixLKHQuaGlzdG9yeUVycm9yLG4pLCJway1zbWFydC1ub3RpY2UiKS5zZXRBdHRyaWJ1dGUoInJvbGUiLCJzdGF0dXMiKSxmLmhhc01vcmUpe2NvbnN0IGU9ZCgiYnV0dG9uIix0Lmhpc3RvcnlMb2FkaW5nP2woIuivu+WPluS4reKApiIsIkxvYWRpbmfigKYiKTpsKCLor7vlj5bmm7Tml6norrDlvZUiLCJMb2FkIG9sZGVyIHNhbXBsZXMiKSk7ZS50eXBlPSJidXR0b24iLGUuZGF0YXNldC5zbWFydE1vcmU9IiIsZS5kaXNhYmxlZD1Cb29sZWFuKHQuaGlzdG9yeUxvYWRpbmd8fHQuaGlzdG9yeUVycm9yfHxwKSxlLm9uY2xpY2s9b31kKCJwIixgJHtsKCLlt7Lor7vlj5borrDlvZUiLCJMb2FkZWQgcmVjb3JkcyIpfTogJHtmLmhpc3RvcnkubGVuZ3RofSAvIDM2NSDCtyAke2woIuS7heavlOi+g+WQjOS4gOeJqeeQhuebmOeahOacieaViOmHh+agt++8m+Wksei0peaXpeS4jeS9nOWfuue6v+OAgiIsIk9ubHkgdmFsaWQgc2FtcGxlcyBmcm9tIHRoaXMgZGlzayBnZW5lcmF0aW9uIGFyZSBjb21wYXJlZDsgZmFpbGVkIGRheXMgYXJlIGV4Y2x1ZGVkIGFzIGJhc2VsaW5lcy4iKX1gLCJway1zbWFydC1tZXRhIiksZCgicCIsbCgi5o+Q56S6562W55Wl77yaTlZNZSDlt7LnlKjlr7/lkb0g4omlODAlIOm7hOOAgeKJpTkwJSDnuqLjgIHiiaUxMDAlIOa3see6ou+8m+iuvuWkh+WBpeW6t+Wksei0peOAgeS4pemHjeitpuWRiuaIluW9k+WJjemYiOWAvOi2iueVjOS4uua3see6ouOAgumUmeivr+iuoeaVsOWSjOWKo+WMluWPpuingeadoeebruS+neaNruOAguminOiJsueUqOS6jui+heWKqeaOkuafpe+8jOS4jeS7o+ihqOaVhemanOmihOa1i+OAguWOguWVhuWxnuaAp+S4jemAmueUqOaOqOeul+Wvv+WRve+8m+a4qeW6puOAgemUmeivr+aXpeW/l+aVsOWSjOmdnuato+W4uOWFs+acuuaVsOS7heWxleekuuOAgiIsIkRpc3BsYXkgcG9saWN5OiBOVk1lIGVuZHVyYW5jZSB1c2VkIOKJpTgwJSB5ZWxsb3csIOKJpTkwJSByZWQsIOKJpTEwMCUgZGFyayByZWQuIEZhaWxlZCBoZWFsdGgsIGNyaXRpY2FsIHdhcm5pbmdzIG9yIGN1cnJlbnQgZGV2aWNlIHRocmVzaG9sZCBmYWlsdXJlcyBhcmUgZGFyayByZWQuIFNlZSByb3cgcmVhc29ucyBmb3IgZXJyb3JzIGFuZCBkZXRlcmlvcmF0aW9uLiBDb2xvcnMgYWlkIGludmVzdGlnYXRpb24gYW5kIGRvIG5vdCBwcmVkaWN0IGZhaWx1cmVzLiBWZW5kb3IgYXR0cmlidXRlcyBkbyBub3QgaW1wbHkgYSB1bml2ZXJzYWwgbGlmZXNwYW4uIFRlbXBlcmF0dXJlLCBlcnJvciBsb2cgZW50cmllcyBhbmQgdW5zYWZlIHNodXRkb3ducyBhcmUgaW5mb3JtYXRpb25hbC4iKSwicGstc21hcnQtcG9saWN5Iil9KHUucGFuZWwsey4uLnUuc3RhdGUsY2FuQ29sbGVjdDplfSxuKCksRSxTLGU9Pnt1LnN0YXRlLnNlbGVjdGVkQXQ9ZSxnKCksdS5wYW5lbC5zY3JvbGxUb3A9MH0sayl9ZnVuY3Rpb24gRSgpe3JldHVybiBJKCExKX1mdW5jdGlvbiBTKCl7aWYoIXU/LnN0YXRlLnJlc3VsdD8udmlydHVhbERlbW8pcmV0dXJuIEkoITApfWFzeW5jIGZ1bmN0aW9uIEkodCxuKXtpZighdXx8Y3x8IW0odS5kZXRhaWwpKXJldHVybiB2b2lkIGYoKTtpZigicnVubmluZyI9PT11LnN0YXRlLmNvbGxlY3Rpb24/LnN0YXR1cylyZXR1cm47aWYodCYmKCF1LnN0YXRlLnJlc3VsdD8ubmV4dEN1cnNvcnx8dS5zdGF0ZS5oaXN0b3J5TG9hZGluZ3x8dS5zdGF0ZS5oaXN0b3J5RXJyb3IpKXJldHVybjtjb25zdCBvPXUsaT0rK187by5hYm9ydD8uYWJvcnQoKSxlLmNsZWFyVGltZW91dChvLnRpbWVvdXQpO2NvbnN0IHM9bmV3IGUuQWJvcnRDb250cm9sbGVyO28uYWJvcnQ9cztjb25zdCBsPW8uc3RhdGUuY29sbGVjdGlvbjtvLnN0YXRlPXQ/ey4uLm8uc3RhdGUsaGlzdG9yeUxvYWRpbmc6ITB9Ontsb2FkaW5nOiEwLGNvbGxlY3Rpb246bH0sZygpO2NvbnN0IGQ9by50aW1lb3V0PWUuc2V0VGltZW91dCgoKT0+e3MuYWJvcnQoKSx1IT09b3x8XyE9PWl8fGN8fChvLnN0YXRlPXtlcnJvcjoiU01BUlRfUkVBRF9GQUlMRUQiLGNvbGxlY3Rpb246bH0sZygpKX0sYSk7dHJ5e2NvbnN0IGU9dD9hd2FpdCBIKHIsby5zdGF0ZS5yZXN1bHQsby5zdGF0ZS5yZXN1bHQubmV4dEN1cnNvcixzLnNpZ25hbCk6YXdhaXQgYXN5bmMgZnVuY3Rpb24oZSx0LG4scj1EYXRlLm5vdygpKXtpZighZXx8IVsicmVzb2x2ZURpc2siLCJyZWFkTGF0ZXN0IiwicmVhZEhpc3RvcnkiXS5ldmVyeSh0PT4iZnVuY3Rpb24iPT10eXBlb2YgZVt0XSkpdGhyb3cgbmV3IEVycm9yKCJTTUFSVF9QUk9WSURFUl9VTkFWQUlMQUJMRSIpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLnJlYWRJbnZlbnRvcnkpe2NvbnN0IG89YXdhaXQgZS5yZWFkSW52ZW50b3J5KHtkaXNrSWQ6dCxzaWduYWw6bn0pO2lmKE0obiksMSE9PW8/LnNjaGVtYVZlcnNpb258fCFDKG8uZGlzaz8uZGlza0lkKXx8by5kaXNrLmRpc2tJZCE9PXR8fCJzdHJpbmciIT10eXBlb2Ygby5kaXNrLm1vZGVsfHxvLmRpc2subW9kZWwubGVuZ3RoPjE2MCl0aHJvdyBuZXcgRXJyb3IoIkRJU0tfSURFTlRJVFlfVU5WRVJJRklFRCIpO2lmKHcoby5kaXNrLm1vZGVsKSlyZXR1cm4gYihvLmRpc2sscil9Y29uc3Qgbz1mdW5jdGlvbihlLHQpe2lmKCEoZSYmQyhlLmRpc2tJZCkmJmUuZGlza0lkPT09dCYmQyhlLmhvc3RJZCkmJi9eW2EtZjAtOV17NjR9JC8udGVzdChlLmdlbmVyYXRpb24pJiZlLmRldmljZUlkPT09ZS5nZW5lcmF0aW9uJiYiIj09PWUucGF0aCkpdGhyb3cgbmV3IEVycm9yKCJESVNLX0lERU5USVRZX1VOVkVSSUZJRUQiKTtyZXR1cm57ZGlza0lkOmUuZGlza0lkLGhvc3RJZDplLmhvc3RJZCxkZXZpY2VJZDplLmRldmljZUlkLGdlbmVyYXRpb246ZS5nZW5lcmF0aW9uLHBhdGg6IiIsbW9kZWw6InN0cmluZyI9PXR5cGVvZiBlLm1vZGVsP2UubW9kZWwuc2xpY2UoMCwxNjApOiIifX0oYXdhaXQgZS5yZXNvbHZlRGlzayh7ZGlza0lkOnQsc2lnbmFsOm59KSx0KTtpZihNKG4pLHcoby5tb2RlbCkpcmV0dXJuIGIoe2Rpc2tJZDp0LG1vZGVsOm8ubW9kZWx9LHIpO2NvbnN0IGE9RChhd2FpdCBlLnJlYWRMYXRlc3Qoe2lkZW50aXR5Om8sc2lnbmFsOm59KSxvLHIpO00obik7Y29uc3QgaT17aWRlbnRpdHk6byxsYXRlc3Q6VShhLFtdKS5zYW1wbGUsaGlzdG9yeTpbXSxwcmV2aW91czpudWxsLGhpc3RvcnlVbmF2YWlsYWJsZTohMSxoYXNNb3JlOiExLG5leHRDdXJzb3I6bnVsbH07bGV0IHM7dHJ5e3M9YXdhaXQgZS5yZWFkSGlzdG9yeSh7aWRlbnRpdHk6byxsaW1pdDozMCxjdXJzb3I6bnVsbCxzaWduYWw6bn0pfWNhdGNoKGUpe2lmKE0obiksISgiVHlwZUVycm9yIj09PWU/Lm5hbWV8fFs0MDgsNDI5XS5pbmNsdWRlcyhlPy5zdGF0dXMpfHxlPy5zdGF0dXM+PTUwMCl8fFsiU01BUlRfR0VORVJBVElPTl9DSEFOR0VEIiwiU01BUlRfSElTVE9SWV9DVVJTT1JfU1RBTEUiLCJTTUFSVF9ESVNLX1VOQk9VTkQiXS5pbmNsdWRlcyhMKGUpKSl0aHJvdyBlO3JldHVybnsuLi5pLGhpc3RvcnlVbmF2YWlsYWJsZTohMH19cmV0dXJuIEgoe3JlYWRIaXN0b3J5OmFzeW5jKCk9PnN9LGksbnVsbCxuLHIpfShyLG8uZGV0YWlsLmRpc2tJZCxzLnNpZ25hbCk7aWYoY3x8cy5zaWduYWwuYWJvcnRlZHx8dSE9PW98fF8hPT1pKXJldHVybjtpZighbShvLmRldGFpbCkpcmV0dXJuIHZvaWQgZigpO2lmKG4mJighdihlLmlkZW50aXR5LG4uaWRlbnRpdHkpfHxlLmxhdGVzdC5zb3VyY2UhPT1uLnNvdXJjZSkpdGhyb3cgbmV3IEVycm9yKCJTTUFSVF9HRU5FUkFUSU9OX0NIQU5HRUQiKTtvLnN0YXRlPXtyZXN1bHQ6ZSxzZWxlY3RlZEF0OnQ/by5zdGF0ZS5zZWxlY3RlZEF0Om51bGwsY29sbGVjdGlvbjplLnZpcnR1YWxEZW1vP3ZvaWQgMDpsfSxnKCl9Y2F0Y2goZSl7aWYoIWMmJiFzLnNpZ25hbC5hYm9ydGVkJiZ1PT09byYmXz09PWkpe2NvbnN0IG49TChlKTtvLnN0YXRlPXQmJiJTTUFSVF9ISVNUT1JZX0NVUlNPUl9TVEFMRSI9PT1uP3suLi5vLnN0YXRlLGhpc3RvcnlMb2FkaW5nOiExLGhpc3RvcnlFcnJvcjpufTp7ZXJyb3I6bixjb2xsZWN0aW9uOmx9LGcoKX19ZmluYWxseXtlLmNsZWFyVGltZW91dChkKX19YXN5bmMgZnVuY3Rpb24gaygpe2lmKCF1fHxjfHwhdS5vcGVufHwhbSh1LmRldGFpbCl8fCF1LnN0YXRlLnJlc3VsdHx8dS5zdGF0ZS5yZXN1bHQudmlydHVhbERlbW98fHUuc3RhdGUubG9hZGluZ3x8dS5zdGF0ZS5oaXN0b3J5TG9hZGluZ3x8InJ1bm5pbmciPT09dS5zdGF0ZS5jb2xsZWN0aW9uPy5zdGF0dXMpcmV0dXJuO2NvbnN0IHQ9dSxuPSsrXyxvPU9iamVjdC5mcmVlemUoey4uLnQuc3RhdGUucmVzdWx0LmlkZW50aXR5fSksYT10LnN0YXRlLnJlc3VsdC5sYXRlc3Quc291cmNlO3QuYWJvcnQ/LmFib3J0KCk7Y29uc3QgbD1uZXcgZS5BYm9ydENvbnRyb2xsZXI7dC5jb2xsZWN0aW9uQWJvcnQ9bCx0LnN0YXRlPXsuLi50LnN0YXRlLGNvbGxlY3Rpb246e3N0YXR1czoicnVubmluZyJ9fSxnKCk7Y29uc3QgZD0oKT0+IWMmJiFsLnNpZ25hbC5hYm9ydGVkJiZ1PT09dCYmXz09PW4mJm0odC5kZXRhaWwpO3RyeXtjb25zdCBuPWF3YWl0IHEocix7aWRlbnRpdHk6byxyZXF1ZXN0SWQ6JChlLmNyeXB0byksc2lnbmFsOmwuc2lnbmFsLHRpbWVvdXRNczppLGludGVydmFsTXM6cyxvblByb2dyZXNzOmU9PntkKCkmJih0LnN0YXRlLmNvbGxlY3Rpb249ZSxnKCkpfX0pO2lmKCFkKCkpcmV0dXJuO3Quc3RhdGUuY29sbGVjdGlvbj1uLGcoKSwoInN1Y2NlZWRlZCI9PT1uLnN0YXR1c3x8ImZhaWxlZCI9PT1uLnN0YXR1cyYmbi5vcGVyYXRpb25JZCkmJmF3YWl0IEkoITEse2lkZW50aXR5Om8sc291cmNlOmF9KX1jYXRjaChlKXtpZighZCgpKXJldHVybjtjb25zdCBuPUcoZSkscj17c3RhdHVzOiJmYWlsZWQiLGNvZGU6bn07dC5zdGF0ZT1GKG4pP3tlcnJvcjpuLGNvbGxlY3Rpb246cn06ey4uLnQuc3RhdGUsY29sbGVjdGlvbjpyfSxnKCl9fWZ1bmN0aW9uIFIoKXtpZihwPW51bGwsYylyZXR1cm47Y29uc3QgZT10LnN0YXR1cygpLmxvYWRlZCYmdC5nZXQoKS5lbmFibGVkP0EoKTpudWxsO2U/KHUmJiFtKHUuZGV0YWlsKSYmZigpLHV8fGZ1bmN0aW9uKGUpe2NvbnN0IHQ9bC5jcmVhdGVFbGVtZW50KCJidXR0b24iKSxuPWwuY3JlYXRlRWxlbWVudCgic2VjdGlvbiIpO3QudHlwZT0iYnV0dG9uIix0LmNsYXNzTmFtZT0idGFiLWl0ZW0gcGstc21hcnQtdGFiIix0LmRhdGFzZXQucGtTbWFydFRhYj0iIix0LmlkPSJway1zbWFydC1pbmZvLXRhYiIsdC5zZXRBdHRyaWJ1dGUoInJvbGUiLCJ0YWIiKSx0LnNldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsImZhbHNlIiksdC5zZXRBdHRyaWJ1dGUoImFyaWEtY29udHJvbHMiLCJway1zbWFydC1pbmZvLXBhbmVsIiksbi5pZD0icGstc21hcnQtaW5mby1wYW5lbCIsbi5jbGFzc05hbWU9InBrLXNtYXJ0LXBhbmVsIixuLmRhdGFzZXQucGtTbWFydFBhbmVsPSIiLG4uaGlkZGVuPSEwLG4uc2V0QXR0cmlidXRlKCJyb2xlIiwidGFicGFuZWwiKSxuLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbGxlZGJ5Iix0LmlkKSx1PXtkZXRhaWw6ZSxidXR0b246dCxwYW5lbDpuLG9wZW46ITEsb3JpZ2luYWxIaWRkZW46ZS5jb250ZW50LmhpZGRlbixzdGF0ZTp7fX0sdC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIscj0+e3Iuc3RvcFByb3BhZ2F0aW9uKCksdSYmbShlKT8odS5vcGVufHwodS5vcmlnaW5hbEhpZGRlbj1lLmNvbnRlbnQuaGlkZGVuKSxlLmNvbnRlbnQuaGlkZGVuPSEwLHUub3Blbj0hMCxuLmhpZGRlbj0hMSx0LnNldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsInRydWUiKSxFKCkpOmYoKX0pLGUudGFicy5hcHBlbmQodCksZS5jb250ZW50LmFmdGVyKG4pLGUudGFicy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsVCksZygpfShlKSx1LmxvY2FsZSE9PW4oKSYmKHUubG9jYWxlPW4oKSxnKCkpKTpmKCl9ZnVuY3Rpb24gTigpe2N8fG51bGwhPT1wfHwocD1lLnNldFRpbWVvdXQoUiw0MCkpfWNvbnN0IHk9bmV3IGUuTXV0YXRpb25PYnNlcnZlcihOKTt5Lm9ic2VydmUobC5ib2R5LHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pO2NvbnN0IE89bmV3IGUuTXV0YXRpb25PYnNlcnZlcihOKTtPLm9ic2VydmUobC5kb2N1bWVudEVsZW1lbnQse2F0dHJpYnV0ZXM6ITAsYXR0cmlidXRlRmlsdGVyOlsibGFuZyJdfSk7Y29uc3QgeD10LnN1YnNjcmliZShOKTtyZXR1cm4gZS5hZGRFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIixOKSxlLmFkZEV2ZW50TGlzdGVuZXIoInBvcHN0YXRlIixOKSxlLmFkZEV2ZW50TGlzdGVuZXIoImxhbmd1YWdlY2hhbmdlIixOKSxSKCksKCk9PntjfHwoYz0hMCxmKCkseS5kaXNjb25uZWN0KCksTy5kaXNjb25uZWN0KCkseCgpLGUuY2xlYXJUaW1lb3V0KHApLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsTiksZS5yZW1vdmVFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsTiksZS5yZW1vdmVFdmVudExpc3RlbmVyKCJsYW5ndWFnZWNoYW5nZSIsTiksZC5yZW1vdmUoKSl9fWNvbnN0IG9lPXtxdWV1ZWQ6WyLnrYnlvoXkuK0iLCJRdWV1ZWQiXSxydW5uaW5nOlsi6YeH6ZuG5LitIiwiUnVubmluZyJdLHN1Y2NlZWRlZDpbIuW3suWujOaIkCIsIlN1Y2NlZWRlZCJdLGZhaWxlZDpbIuWksei0pSIsIkZhaWxlZCJdLHVua25vd246WyLlvoXnoa7orqQiLCJVbmtub3duIl0sc2tpcHBlZDpbIuacquaJp+ihjCIsIlNraXBwZWQiXX0sYWU9ZT0+TnVtYmVyLmlzSW50ZWdlcihlKSYmZT49MCYmZTw9MTAwP2U6IuKAlCIsaWU9ZT0+ZSYmWyJ0b3RhbCIsLi4uT2JqZWN0LmtleXMob2UpXS5ldmVyeSh0PT4i4oCUIiE9PWFlKGVbdF0pKSYmT2JqZWN0LmtleXMob2UpLnJlZHVjZSgodCxuKT0+dCtlW25dLDApPT09ZS50b3RhbCxzZT1bInF1ZXVlZCIsInJ1bm5pbmciLCJzdWNjZWVkZWQiLCJmYWlsZWQiLCJ1bmtub3duIiwic2tpcHBlZCJdLGxlPWU9PiJzdHJpbmciPT10eXBlb2YgZSYmL15bQS1aYS16MC05XVtBLVphLXowLTlfLV17MCwxMjd9JC8udGVzdChlKSxkZT0oKT0+e3Rocm93IG5ldyBFcnJvcigiSU5WQUxJRF9DT0xMRUNUSU9OX1JFU1BPTlNFIil9O2Z1bmN0aW9uIGNlKGUsdCl7Y29uc3Qgbj16KGUsdCkscj1lLnN1bW1hcnk7L15bMC05YS1mXXs4fS1bMC05YS1mXXs0fS00WzAtOWEtZl17M30tWzg5YWJdWzAtOWEtZl17M30tWzAtOWEtZl17MTJ9JC8udGVzdChuLm9wZXJhdGlvbklkKXx8ZGUoKSxyJiZPYmplY3Qua2V5cyhyKS5zb3J0KCkuam9pbigpPT09WyJ0b3RhbCIsLi4uc2VdLnNvcnQoKS5qb2luKCkmJlsidG90YWwiLC4uLnNlXS5ldmVyeShlPT5OdW1iZXIuaXNJbnRlZ2VyKHJbZV0pJiZyW2VdPj0wJiZyW2VdPD0xMDApJiZzZS5yZWR1Y2UoKGUsdCk9PmUrclt0XSwwKT09PXIudG90YWwmJkFycmF5LmlzQXJyYXkoZS5pdGVtcykmJmUuaXRlbXMubGVuZ3RoPT09ci50b3RhbHx8ZGUoKTtjb25zdCBvPW5ldyBTZXQsYT1PYmplY3QuZnJvbUVudHJpZXMoc2UubWFwKGU9PltlLDBdKSksaT1lLml0ZW1zLm1hcChlPT4oZSYmbGUoZS5kaXNrSWQpJiYic3RyaW5nIj09dHlwZW9mIGUuZ2VuZXJhdGlvbiYmL15bMC05YS1mXXs2NH0kLy50ZXN0KGUuZ2VuZXJhdGlvbikmJnNlLmluY2x1ZGVzKGUuc3RhdHVzKSYmIW8uaGFzKGUuZGlza0lkKXx8ZGUoKSxvLmFkZChlLmRpc2tJZCksYVtlLnN0YXR1c10rKyx7ZGlza0lkOmUuZGlza0lkLGdlbmVyYXRpb246ZS5nZW5lcmF0aW9uLHN0YXR1czplLnN0YXR1cywuLi52b2lkIDA9PT1lLmNvZGU/e306e2NvZGU6Ryh7Y29kZTplLmNvZGV9KX19KSkscz1hLnF1ZXVlZHx8YS5ydW5uaW5nPyJydW5uaW5nIjphLnVua25vd24/InVua25vd24iOmEuc3VjY2VlZGVkPT09aS5sZW5ndGg/InN1Y2NlZWRlZCI6ImZhaWxlZCI7cmV0dXJuIGkubGVuZ3RoJiYhc2Uuc29tZShlPT5hW2VdIT09cltlXSkmJm4uc3RhdHVzPT09c3x8ZGUoKSx7Li4ubixzdW1tYXJ5Ont0b3RhbDpyLnRvdGFsLC4uLmF9LGl0ZW1zOml9fWZ1bmN0aW9uIHVlKHtSZWFjdDplLHdpbjp0LG9wdGlvbnM6bz17fSxnZXRMb2NhbGU6cz0oKT0+InpoLUNOIn0pe2NvbnN0IGw9ZS5jcmVhdGVFbGVtZW50LGQ9ZnVuY3Rpb24oZSx0LG4pe2NvbnN0e2RlZmF1bHRzOnIsZXF1YWw6byxzZWVkOmEsdmFsaWRhdGU6c309bixsPWZ1bmN0aW9uKGUpe2xldCB0PXtzaG93RmxvYXRpbmdCdXR0b246ITB9LG49ITA7Y29uc3Qgcj1uZXcgU2V0LG89KCk9Pntmb3IoY29uc3QgZSBvZiByKWUoey4uLnR9KX07ZnVuY3Rpb24gYShlKXtjb25zdCB0PUpTT04ucGFyc2UoZXx8Int9Iiksbj10LmZsb2F0aW5nUG9zaXRpb24scj1uJiZbIngiLCJ5Il0uZXZlcnkoZT0+TnVtYmVyLmlzRmluaXRlKG5bZV0pJiZuW2VdPj0wJiZuW2VdPD0xZTUpP3t4Ok1hdGgucm91bmQobi54KSx5Ok1hdGgucm91bmQobi55KX06bnVsbDtyZXR1cm57c2hvd0Zsb2F0aW5nQnV0dG9uOiExIT09dC5zaG93RmxvYXRpbmdCdXR0b24sZmxvYXRpbmdQb3NpdGlvbjpyfX10cnl7dD1hKGUubG9jYWxTdG9yYWdlLmdldEl0ZW0oaSkpfWNhdGNoe249ITF9ZnVuY3Rpb24gcyhlKXtpZihlLmtleT09PWl8fG51bGw9PT1lLmtleSl0cnl7dD1hKGUubmV3VmFsdWUpLG8oKX1jYXRjaHt9fXJldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIoInN0b3JhZ2UiLHMpLHtnZXQ6KCk9Pih7Li4udH0pLHBlcnNpc3RlbnQ6KCk9Pm4sdXBkYXRlKHIpe3Q9YShKU09OLnN0cmluZ2lmeSh7Li4udCwuLi5yfSkpO3RyeXtlLmxvY2FsU3RvcmFnZS5zZXRJdGVtKGksSlNPTi5zdHJpbmdpZnkodCkpLG49ITB9Y2F0Y2h7bj0hMX1yZXR1cm4gbygpLHsuLi50fX0sc3Vic2NyaWJlOmU9PihyLmFkZChlKSwoKT0+ci5kZWxldGUoZSkpLGRpc3Bvc2UoKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInN0b3JhZ2UiLHMpLHIuY2xlYXIoKX19fShlKSxkPW5ldyBTZXQ7bGV0IGM9cigpLHA9cigpLF89W10sQT17bG9hZGVkOiExLGxvYWRpbmc6ITEsc2F2aW5nOiExLGVycm9yOiIiLHJldmlzaW9uOjAsdXBkYXRlZEF0Om51bGx9O2NvbnN0IG09ZT0+SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlKSksaD0oKT0+KHsuLi5BLGRpcnR5OiFvKGMscCl9KSxmPSgpPT4oey4uLm0oYyksc2hvd0Zsb2F0aW5nQnV0dG9uOmwuZ2V0KCkuc2hvd0Zsb2F0aW5nQnV0dG9ufSksVD0oKT0+KHsuLi5tKHApLHNob3dGbG9hdGluZ0J1dHRvbjpsLmdldCgpLnNob3dGbG9hdGluZ0J1dHRvbn0pLGc9KCk9Pntmb3IoY29uc3QgZSBvZiBkKWUoZigpKX0sRT1sLnN1YnNjcmliZShnKTtmdW5jdGlvbiBTKCl7QS5sb2FkZWQmJihwPWEocCxfKSl9cmV0dXJue2dldDpmLGdldERyYWZ0OlQsc3RhdHVzOmgscGVyc2lzdGVudDpsLnBlcnNpc3RlbnQsc3Vic2NyaWJlOmU9PihkLmFkZChlKSwoKT0+ZC5kZWxldGUoZSkpLHVwZGF0ZShlKXtpZihBLnNhdmluZylyZXR1cm4gVCgpO09iamVjdC5oYXNPd24oZSwic2hvd0Zsb2F0aW5nQnV0dG9uIikmJmwudXBkYXRlKHtzaG93RmxvYXRpbmdCdXR0b246ZS5zaG93RmxvYXRpbmdCdXR0b259KTtjb25zdCB0PXsuLi5lfTtyZXR1cm4gZGVsZXRlIHQuc2hvd0Zsb2F0aW5nQnV0dG9uLE9iamVjdC5rZXlzKHQpLmxlbmd0aCYmQS5sb2FkZWQmJihwPXIoey4uLnAsLi4udH0pKSxnKCksVCgpfSxzZXRDbHVzdGVycyhlKXtfPWU7dHJ5e1MoKX1jYXRjaHtBLmVycm9yPSLpm4bnvqTmlbDph4/otoXov4fphY3nva7lrrnph4/vvIzmnKroh6rliqjooaXlhajop4TliJnjgIIifWcoKX0sYXN5bmMgbG9hZCgpe2lmKCFBLmxvYWRpbmcmJiFBLnNhdmluZyl7QT17Li4uQSxsb2FkaW5nOiEwfSxnKCk7dHJ5e2lmKCF0KXRocm93IG5ldyBFcnJvcigiQkFDS0VORF9VTkFWQUlMQUJMRSIpOyFmdW5jdGlvbihlKXtjb25zdCB0PXUoZSxzKSxuPWgoKS5kaXJ0eTtjPXQuc2V0dGluZ3Msbnx8KHA9bShjKSksQT17Li4uQSxsb2FkZWQ6ITAscmV2aXNpb246dC5yZXZpc2lvbix1cGRhdGVkQXQ6dC51cGRhdGVkQXQsZXJyb3I6IiJ9LFMoKX0oYXdhaXQgdC5sb2FkKCkpfWNhdGNoe0EuZXJyb3I9IuWFseS6q+mFjee9ruivu+WPluWksei0pe+8jOivt+mHjeivleOAgiJ9ZmluYWxseXtBLmxvYWRpbmc9ITEsZygpfX19LGFzeW5jIHNhdmUoKXtpZighQS5sb2FkZWR8fCF0fHxBLnNhdmluZylyZXR1cm4hMTtjb25zdCBlPW0ocCk7QT17Li4uQSxzYXZpbmc6ITAsZXJyb3I6IiJ9LGcoKTt0cnl7bGV0IG47dHJ5e249dShhd2FpdCB0LnNhdmUoZSkscyl9Y2F0Y2h7aWYobj11KGF3YWl0IHQubG9hZCgpLHMpLCFvKG4uc2V0dGluZ3MsZSkpdGhyb3cgbmV3IEVycm9yKCJTQVZFX05PVF9DT05GSVJNRUQiKX1pZighbyhuLnNldHRpbmdzLGUpKXRocm93IG5ldyBFcnJvcigiU0FWRV9OT1RfQ09ORklSTUVEIik7cmV0dXJuIGM9bi5zZXR0aW5ncyxwPW0oYyksQT17Li4uQSxyZXZpc2lvbjpuLnJldmlzaW9uLHVwZGF0ZWRBdDpuLnVwZGF0ZWRBdH0sITB9Y2F0Y2h7cmV0dXJuIEEuZXJyb3I9IuacquiDveehruiupOS/neWtmOaIkOWKn++8jOS/ruaUueW3suS/neeVme+8jOivt+mHjeivleOAgiIsITF9ZmluYWxseXtBLnNhdmluZz0hMSxnKCl9fSxkaXNjYXJkKCl7QS5zYXZpbmd8fChwPW0oYyksQS5lcnJvcj0iIixnKCkpfSxkaXNwb3NlKCl7RSgpLGwuZGlzcG9zZSgpLGQuY2xlYXIoKX19fSh0LG8uY29uZmlndXJhdGlvbkJhY2tlbmQ/LigpfHxwKHQsYSxyKSxhKSxjPWZ1bmN0aW9uKGUsdCxuPXt9KXtjb25zdCByPSJmdW5jdGlvbiI9PXR5cGVvZiB0Py5jb2xsZWN0QWxsJiYiZnVuY3Rpb24iPT10eXBlb2YgdD8uY29sbGVjdGlvbkFsbDtsZXQgbyxhPXthY3RpdmU6ITEsYXZhaWxhYmxlOnIsc3RhdHVzOiJpZGxlIn0saT0wO2NvbnN0IHM9bmV3IFNldCxsPWU9PnthPWU7Zm9yKGNvbnN0IGUgb2YgcyllKGEpfSxkPSgpPT57aSsrLG8/LmFib3J0KCksbz1udWxsLCJydW5uaW5nIj09PWEuc3RhdHVzJiZsKHsuLi5hLHN0YXR1czoidW5rbm93biIsY29kZToiU01BUlRfQ09MTEVDVElPTl9XQUlUX0NBTkNFTExFRCJ9KX07cmV0dXJue3NuYXBzaG90OigpPT5hLHN1YnNjcmliZTplPT4ocy5hZGQoZSksZShhKSwoKT0+e3MuZGVsZXRlKGUpLHMuc2l6ZXx8ZCgpfSksc3RhcnQoKXtsKHsuLi5hLGFjdGl2ZTohMH0pfSxzdG9wKCl7ZCgpLGwoey4uLmEsYWN0aXZlOiExfSl9LGFzeW5jIGNvbGxlY3QoKXtpZighYS5hY3RpdmV8fCFyfHwicnVubmluZyI9PT1hLnN0YXR1cylyZXR1cm47Y29uc3Qgcz0rK2k7bGV0IGQ7dHJ5e2Q9JChlLmNyeXB0byl9Y2F0Y2h7cmV0dXJuIHZvaWQgbCh7Li4uYSxzdGF0dXM6ImZhaWxlZCIsY29kZToiU01BUlRfQ09MTEVDVElPTl9VTkFWQUlMQUJMRSJ9KX1vPW5ldyBlLkFib3J0Q29udHJvbGxlcjtjb25zdCBjPSgpPT5zPT09aSYmIW8/LnNpZ25hbC5hYm9ydGVkJiZhLmFjdGl2ZTtsKHthY3RpdmU6ITAsYXZhaWxhYmxlOnIsc3RhdHVzOiJydW5uaW5nIn0pO3RyeXtjb25zdCBlPWF3YWl0IGFzeW5jIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGU/LmNvbGxlY3RBbGx8fCJmdW5jdGlvbiIhPXR5cGVvZiBlPy5jb2xsZWN0aW9uQWxsKXRocm93IG5ldyBFcnJvcigiU01BUlRfQ09MTEVDVElPTl9VTkFWQUlMQUJMRSIpO2xldCBuO2NvbnN0IHI9YXdhaXQgcSh7Y29sbGVjdDooe3JlcXVlc3RJZDp0LHNpZ25hbDpufSk9PmUuY29sbGVjdEFsbCh7cmVxdWVzdElkOnQsc2lnbmFsOm59KSxjb2xsZWN0aW9uOih7b3BlcmF0aW9uSWQ6dCxzaWduYWw6bn0pPT5lLmNvbGxlY3Rpb25BbGwoe29wZXJhdGlvbklkOnQsc2lnbmFsOm59KX0sey4uLnQsdmFsaWRhdGU6Y2Usb25Qcm9ncmVzczplPT57bj1lLHQub25Qcm9ncmVzcz8uKGUpfX0pO3JldHVybnsuLi5ufHx7fSwuLi5yfX0odCx7Li4ubixyZXF1ZXN0SWQ6ZCxzaWduYWw6by5zaWduYWwsb25Qcm9ncmVzczplPT57YygpJiZsKHsuLi5lLGFjdGl2ZTohMCxhdmFpbGFibGU6cn0pfX0pO2MoKSYmbCh7Li4uZSxhY3RpdmU6ITAsYXZhaWxhYmxlOnJ9KX1jYXRjaChlKXtjKCkmJmwoe2FjdGl2ZTohMCxhdmFpbGFibGU6cixzdGF0dXM6ImZhaWxlZCIsY29kZTpHKGUpfSl9ZmluYWxseXtzPT09aSYmKG89bnVsbCl9fX19KHQsby5kaXNrU21hcnRJbmZvPy5wcm92aWRlciksXz1mdW5jdGlvbihlKXtjb25zdCB0PWUuY3JlYXRlRWxlbWVudDtyZXR1cm4gZnVuY3Rpb24oe2xvY2FsZTplPSJ6aC1DTiIsc3RhdGU6bj17fSxvbkNvbGxlY3Q6cixkaXNhYmxlZDpvPSExfSl7Y29uc3QgYT0odCxuKT0+WShlLHQsbiksaT0icnVubmluZyI9PT1uLnN0YXR1cyxzPSJmdW5jdGlvbiI9PXR5cGVvZiByLGw9aWUobi5zdW1tYXJ5KT9uLnN1bW1hcnk6bnVsbCxkPUFycmF5LmlzQXJyYXkobi5pdGVtcyk/bi5pdGVtcy5zbGljZSgwLDEwMCk6W107bGV0IGM7cmV0dXJuIGk/Yz1hKCLlhajlsYDph4fpm4bmraPlnKjov5vooYzjgILlhbPpl63phY3nva7pobXlj6rlgZzmraLpobXpnaLnrYnlvoXvvIzlkI7lj7Dku7vliqHlj6/og73nu6fnu63jgIIiLCJHbG9iYWwgY29sbGVjdGlvbiBpcyBydW5uaW5nLiBDbG9zaW5nIHNldHRpbmdzIG9ubHkgc3RvcHMgd2FpdGluZzsgYmFja2dyb3VuZCB3b3JrIG1heSBjb250aW51ZS4iKToidW5rbm93biI9PT1uLnN0YXR1cz9jPSJTTUFSVF9DT0xMRUNUSU9OX1dBSVRfQ0FOQ0VMTEVEIj09PW4uY29kZT9hKCLlt7LlgZzmraLpobXpnaLnrYnlvoXvvIzlkI7lj7DmibnmrKHlj6/og73ku43lnKjmiafooYzvvIzmnKroh6rliqjph43lj5Hor7fmsYLjgILor7fmoLjlrp7lkI7lho3lj5HotbfmlrDnmoTph4fpm4bjgIIiLCJQYWdlIHdhaXRpbmcgc3RvcHBlZC4gVGhlIGJhY2tncm91bmQgYmF0Y2ggbWF5IHN0aWxsIGJlIHJ1bm5pbmcgYW5kIHdhcyBub3QgcmVzdWJtaXR0ZWQuIFZlcmlmeSBpdCBiZWZvcmUgc3RhcnRpbmcgYW5vdGhlciBjb2xsZWN0aW9uLiIpOmEoIuaJueasoee7k+aenOW+heehruiupO+8jOacquiHquWKqOmHjeWPkeivt+axguOAguivt+aguOWunuWQjuWGjeWPkei1t+aWsOeahOmHh+mbhuOAgiIsIlRoZSBiYXRjaCBvdXRjb21lIGlzIHVua25vd24uIFRoZSByZXF1ZXN0IHdhcyBub3QgcmVzZW50LiBWZXJpZnkgaXQgYmVmb3JlIHN0YXJ0aW5nIGFub3RoZXIgY29sbGVjdGlvbi4iKToic3VjY2VlZGVkIj09PW4uc3RhdHVzJiYoIWx8fGwucXVldWVkPjB8fGwucnVubmluZz4wKT9jPWEoIuaJueasoee7k+aenOS/oeaBr+S4jeWujOaVtO+8jOivt+mHjeaWsOaguOWunueKtuaAgeOAgiIsIkJhdGNoIHJlc3VsdCBpbmZvcm1hdGlvbiBpcyBpbmNvbXBsZXRlLiBWZXJpZnkgaXRzIHN0YXR1cyBhZ2Fpbi4iKTowPT09bD8udG90YWw/Yz1hKCLmsqHmnInlj6/miafooYznmoTph4fpm4bnm67moIfvvIzor7fmo4Dmn6Xlj6/kv6Horr7lpIfphY3nva7kuI7lrqHmoLjjgIIiLCJObyBjb2xsZWN0aW9uIHRhcmdldHMgYXJlIGF2YWlsYWJsZS4gQ2hlY2sgdHJ1c3RlZCBkZXZpY2VzIGFuZCBhcHByb3ZhbHMuIik6InN1Y2NlZWRlZCI9PT1uLnN0YXR1cz9jPWwmJihsLmZhaWxlZD4wfHxsLnVua25vd24+MHx8bC5za2lwcGVkPjApP2EoIuaJueasoeW3sue7k+adn++8jOWtmOWcqOWksei0peOAgeW+heehruiupOaIluacquaJp+ihjOeahOebruagh++8jOivt+afpeeci+mAkOebmOe7k+aenOOAgiIsIlRoZSBiYXRjaCBmaW5pc2hlZCB3aXRoIGZhaWxlZCwgdW5rbm93biBvciBza2lwcGVkIHRhcmdldHMuIFJldmlldyBlYWNoIGRpc2sgYmVsb3cuIik6YSgi5om55qyh6YeH6ZuG5bey5a6M5oiQ44CCIiwiQmF0Y2ggY29sbGVjdGlvbiBjb21wbGV0ZWQuIik6ImZhaWxlZCI9PT1uLnN0YXR1cyYmKGM9bCYmbC50b3RhbD4wP2EoIuaJueasoeacquWFqOmDqOaIkOWKn++8jOWtmOWcqOWksei0peOAgeW+heehruiupOaIluacquaJp+ihjOeahOebruagh++8jOivt+afpeeci+mAkOebmOe7k+aenOOAgiIsIlRoZSBiYXRjaCBkaWQgbm90IGZ1bGx5IHN1Y2NlZWQuIFJldmlldyBmYWlsZWQsIHVua25vd24gb3Igc2tpcHBlZCB0YXJnZXRzIGJlbG93LiIpOlcoe3N0YXR1czoiZmFpbGVkIixjb2RlOm4uY29kZX0sZSkpLHQoInNlY3Rpb24iLHtjbGFzc05hbWU6InBrLXNtYXJ0LWdsb2JhbCIsImFyaWEtbGFiZWwiOmEoIuWFqOWxgOaJi+WKqOmHh+mbhiIsIkdsb2JhbCBtYW51YWwgY29sbGVjdGlvbiIpfSx0KCJoNCIsbnVsbCxhKCLlhajlsYDmiYvliqjph4fpm4YiLCJHbG9iYWwgbWFudWFsIGNvbGxlY3Rpb24iKSksdCgicCIsbnVsbCxhKCLph4fpm4bmiYDmnInlt7LphY3nva7jgIHlt7Lnu5HlrprkuJTojrfmjojmnYPnmoTno4Hnm5jjgILmnKrphY3nva7miJbmnKrlrqHmoLjnmoTnm67moIfkuI3kvJrmiafooYzvvJvniannkIbnm5jkvqfmoI/ku43lj6/ljZXni6zph4fpm4bjgIIiLCJDb2xsZWN0IGFsbCBjb25maWd1cmVkLCBib3VuZCBhbmQgYXV0aG9yaXplZCBkaXNrcy4gVW5jb25maWd1cmVkIG9yIHVuYXBwcm92ZWQgdGFyZ2V0cyBhcmUgbm90IGV4ZWN1dGVkLiBJbmRpdmlkdWFsIGRpc2tzIGNhbiBzdGlsbCBiZSBjb2xsZWN0ZWQgZnJvbSB0aGVpciBzaWRlYmFyLiIpKSx0KCJwIixudWxsLGEoIueCueWHu+WNs+WPkei1t+S4gOasoemHh+mbhu+8jOS9v+eUqOacjeWKoeerr+W3suS/neWtmOeahOebruagh+S4juWuoeaguO+8m+aXoOmcgOS/neWtmOacrOmhteiuvue9ru+8jOacquS/neWtmOiNieeov+S4jeWPguS4jumHh+mbhuOAgiIsIkNsaWNrIHRvIHN0YXJ0IG9uZSBjb2xsZWN0aW9uIHVzaW5nIHNhdmVkIHNlcnZlciB0YXJnZXRzIGFuZCBhcHByb3ZhbHMuIE5vIHNldHRpbmdzIHNhdmUgaXMgbmVlZGVkOyB1bnNhdmVkIGRyYWZ0cyBhcmUgbm90IHVzZWQuIikpLHQoInAiLHtjbGFzc05hbWU6InBrLXNtYXJ0LW1ldGEifSxhKCLomZrmi5/nm5jnmoTmnKzlnLDmqKHmi5/npLrkvovkuI3orqHkuLrph4fpm4bmiJDlip/vvIzkuZ/kuI3kvJrlhpnlhaXnnJ/lrp7ljoblj7LjgIIiLCJMb2NhbCB2aXJ0dWFsIGRpc2sgZXhhbXBsZXMgZG8gbm90IGNvdW50IGFzIGNvbGxlY3RlZCBzYW1wbGVzIGFuZCBhcmUgbmV2ZXIgd3JpdHRlbiB0byBhY3R1YWwgaGlzdG9yeS4iKSksdCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIiwiZGF0YS1zbWFydC1jb2xsZWN0LWFsbCI6IiIsZGlzYWJsZWQ6b3x8aXx8IXMsb25DbGljazpyfSxpP2EoIuWFqOWxgOmHh+mbhuS4reKApiIsIkNvbGxlY3RpbmcgYWxs4oCmIik6YSgi5YWo5bGA56uL5Y2z6YeH6ZuGIiwiQ29sbGVjdCBhbGwgbm93IikpLCFzJiZ0KCJwIix7cm9sZToic3RhdHVzIn0sYSgi5b2T5YmN5qGG5p625bCa5pyq5o+Q5L6b5YWo5bGA6YeH6ZuG77yM6K+36IGU57O7566h55CG5ZGY5pu05paw44CCIiwiR2xvYmFsIGNvbGxlY3Rpb24gaXMgdW5hdmFpbGFibGUgaW4gdGhpcyBmcmFtZXdvcmsuIEFzayBhbiBhZG1pbmlzdHJhdG9yIHRvIHVwZGF0ZSBpdC4iKSksYyYmdCgicCIse3JvbGU6InN0YXR1cyIsImFyaWEtbGl2ZSI6InBvbGl0ZSJ9LGMpLGQuc29tZShlPT4iZmFpbGVkIj09PWUuc3RhdHVzJiZbIlNNQVJUX0NPTExFQ1RJT05fRkFJTEVEIiwiU01BUlRfRVhFQ1VUSU9OX1RJTUVPVVQiLCJTTUFSVF9PVVRQVVRfSU5WQUxJRCIsIlNNQVJUX0lOVkFMSURfREFUQSJdLmluY2x1ZGVzKGUuY29kZSkpJiZ0KCJwIix7Y2xhc3NOYW1lOiJway1zbWFydC1tZXRhIn0sWChlKSksbCYmdCgiZGwiLHtjbGFzc05hbWU6InBrLXNtYXJ0LWJhdGNoLXN1bW1hcnkiLHN0eWxlOntkaXNwbGF5OiJncmlkIixncmlkVGVtcGxhdGVDb2x1bW5zOiJyZXBlYXQoYXV0by1maXQsIG1pbm1heCg5MHB4LCAxZnIpKSIsZ2FwOiIxMnB4IixtYXJnaW46IjE2cHggMCJ9fSwuLi5bWyJ0b3RhbCIsYSgi55uu5qCH5oC75pWwIiwiVG90YWwgdGFyZ2V0cyIpXSwuLi5PYmplY3QuZW50cmllcyhvZSkubWFwKChbZSx0XSk9PltlLGEoLi4udCldKV0ubWFwKChbZSxuXSk9PnQoImRpdiIse2tleTplfSx0KCJkdCIsbnVsbCxuKSx0KCJkZCIse3N0eWxlOnttYXJnaW46IjRweCAwIDAiLGZvbnRTaXplOiIxOHB4Iixmb250V2VpZ2h0OjYwMH19LFN0cmluZyhhZShsW2VdKSkpKSkpLGQubGVuZ3RoPjAmJnQoImRpdiIse2NsYXNzTmFtZToicGstc21hcnQtc2Nyb2xsIn0sdCgidGFibGUiLHtjbGFzc05hbWU6InBrLXNtYXJ0LXRhYmxlIn0sdCgidGhlYWQiLG51bGwsdCgidHIiLG51bGwsLi4uW2EoIuejgeebmCIsIkRpc2siKSxhKCLph4fpm4bnirbmgIEiLCJDb2xsZWN0aW9uIHN0YXR1cyIpLGEoIuivtOaYjiIsIkRldGFpbHMiKV0ubWFwKGU9PnQoInRoIix7a2V5OmUsc2NvcGU6ImNvbCJ9LGUpKSkpLHQoInRib2R5IixudWxsLC4uLmQubWFwKChuLHIpPT50KCJ0ciIse2tleTpuLmtleXx8U3RyaW5nKHIpfSx0KCJ0ZCIsbnVsbCwic3RyaW5nIj09dHlwZW9mIG4ubGFiZWw/bi5sYWJlbC5zbGljZSgwLDIwMCk6YSgi5pyq55+l55uu5qCHIiwiVW5rbm93biB0YXJnZXQiKSksdCgidGQiLG51bGwsb2Vbbi5zdGF0dXNdP2EoLi4ub2Vbbi5zdGF0dXNdKTphKCLlvoXnoa7orqQiLCJVbmtub3duIikpLHQoInRkIixudWxsLG4uY29kZT9XKHtzdGF0dXM6InVua25vd24iPT09bi5zdGF0dXM/InVua25vd24iOiJmYWlsZWQiLGNvZGU6bi5jb2RlfSxlKToi4oCUIikpKSkpKSl9fShlKTtmdW5jdGlvbiBBKHtsb2NhbGU6dH0pe2NvbnN0W24scl09ZS51c2VTdGF0ZShjLnNuYXBzaG90KTtlLnVzZUVmZmVjdCgoKT0+Yy5zdWJzY3JpYmUociksW10pO2NvbnN0IG89bi5pdGVtcz8ubWFwKGU9Pih7Li4uZSxrZXk6ZS5kaXNrSWQsbGFiZWw6ZS5kaXNrSWR9KSk7cmV0dXJuIGwoXyx7bG9jYWxlOnQsc3RhdGU6ey4uLm4saXRlbXM6b30sZGlzYWJsZWQ6IW4uYWN0aXZlLG9uQ29sbGVjdDpuLmF2YWlsYWJsZT8oKT0+Yy5jb2xsZWN0KCk6dm9pZCAwfSl9cmV0dXJue2lkOm4sc3RvcmU6ZCxTZXR0aW5nczpmdW5jdGlvbih7cHJlZmVyZW5jZXM6dCxsb2NhbGU6bn0pe2NvbnN0IHI9KGUsdCk9PlkobixlLHQpO3JldHVybiBsKGUuRnJhZ21lbnQsbnVsbCxsKCJoMyIsbnVsbCxyKCLno4Hnm5jlgaXlurflsZXnpLoiLCJEaXNrIFNNQVJUIGluZm9ybWF0aW9uIikpLGwoInAiLG51bGwscigi5Zyo54mp55CG55uY6K+m5oOF5L6n5qCP5bGV56S6IFNNQVJUIOaVsOaNruOAgeWOhuWPsumHh+agt+WSjOaMh+agh+WKo+WMluOAgiIsIkRpc3BsYXkgU01BUlQgZGF0YSwgaGlzdG9yaWNhbCBzYW1wbGVzIGFuZCBtZXRyaWMgZGV0ZXJpb3JhdGlvbiBpbiBwaHlzaWNhbCBkaXNrIGRldGFpbHMuIikpLGwoImRpdiIse2NsYXNzTmFtZToiYzg5LXNldHRpbmcifSxsKCJkaXYiLHtjbGFzc05hbWU6ImM4OS1zZXR0aW5nLXJvdyJ9LGwoImxhYmVsIix7aHRtbEZvcjoicGstc21hcnQtZW5hYmxlZCJ9LHIoIuaYvuekuiBTbWFydCDkv6Hmga/lrZDpobUiLCJTaG93IFNNQVJUIGluZm9ybWF0aW9uIHRhYiIpKSxsKCJpbnB1dCIse2lkOiJway1zbWFydC1lbmFibGVkIix0eXBlOiJjaGVja2JveCIsY2hlY2tlZDp0LmVuYWJsZWQsb25DaGFuZ2U6ZT0+ZC51cGRhdGUoe2VuYWJsZWQ6ZS50YXJnZXQuY2hlY2tlZH0pfSkpKSxsKCJwIix7cm9sZToic3RhdHVzIn0scigi5q+P5pel6YeH6ZuG5LiO4oCc56uL5Y2z6YeH6ZuG4oCd5Z2H6ZyA6KaB5Y+v5L+h6K6+5aSH6YWN572u5ZKM54us56uL5Lq65bel5a6h5qC444CC4oCc6YeN5paw6K+75Y+W4oCd5Y+q5Yi35paw5bey5pyJ6YeH5qC377yb56a75byA5L6n5qCP5Y+q5YGc5q2i6aG16Z2i562J5b6F77yM5ZCO5Y+w5Lu75Yqh5Y+v6IO957un57ut44CC55yf5a6e5Li75py66YeH6ZuG5bCa5pyq6aqM5pS244CCIiwiRGFpbHkgY29sbGVjdGlvbiBhbmQgQ29sbGVjdCBub3cgcmVxdWlyZSB0cnVzdGVkIGRldmljZSBjb25maWd1cmF0aW9uIGFuZCBleHBsaWNpdCBhZG1pbmlzdHJhdG9yIGFwcHJvdmFsLiBSZWxvYWQgb25seSByZWFkcyBleGlzdGluZyBzYW1wbGVzLiBMZWF2aW5nIHRoZSBzaWRlYmFyIHN0b3BzIHdhaXRpbmc7IGEgYmFja2dyb3VuZCB0YXNrIG1heSBjb250aW51ZS4gTGl2ZSBob3N0IGNvbGxlY3Rpb24gaGFzIG5vdCBiZWVuIGFjY2VwdGVkLiIpKSxsKEEse2xvY2FsZTpufSksbCgicCIsbnVsbCxyKCLlip/og73phY3nva7lpI3nlKjmoYbmnrbnmoTkv53lrZjjgIHkuKLlvIPlkozpgIDlh7rmtYHnqIvvvJvlhbPpl63mnKzpobXmmL7npLrkuI3kvJrliKDpmaTljoblj7LorrDlvZXjgIIiLCJTZXR0aW5ncyB1c2UgdGhlIGZyYW1ld29yayBzYXZlLCBkaXNjYXJkIGFuZCBleGl0IGZsb3cuIEhpZGluZyB0aGUgdGFiIGRvZXMgbm90IGRlbGV0ZSBoaXN0b3JpY2FsIHJlY29yZHMuIikpKX0sYWN0aXZhdGUoKXtjLnN0YXJ0KCk7Y29uc3QgZT1yZSh7d2luOnQsc3RvcmU6ZCxnZXRMb2NhbGU6cyxwcm92aWRlcjpvLmRpc2tTbWFydEluZm8/LnByb3ZpZGVyLGZpbmREZXRhaWw6by5kaXNrU21hcnRJbmZvPy5maW5kRGV0YWlsfSksbj10LnNldEludGVydmFsKCgpPT57ZC5zdGF0dXMoKS5kaXJ0eXx8InZpc2libGUiIT09dC5kb2N1bWVudC52aXNpYmlsaXR5U3RhdGV8fGQubG9hZCgpfSwxNWUzKTtyZXR1cm4oKT0+e2Muc3RvcCgpLHQuY2xlYXJJbnRlcnZhbChuKSxlKCl9fX19KHdpbmRvdy5SaXZldGluUGx1Z2lucz13aW5kb3cuUml2ZXRpblBsdWdpbnN8fHt9KVsicml2ZXRpbi1kaXNrLXNtYXJ0LWluZm8iXT10fSkoKTs="},{"path":"LICENSE","sha256":"684bcbdab63a2fef35293d3a36b13e01a755dff694c18f0aa8367710c36e4d22","data":"TUlUIExpY2Vuc2UKCkNvcHlyaWdodCAoYykgMjAyNiBQbHVnaW5LaXQgY29udHJpYnV0b3JzCgpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cm9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbApjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKClRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbApjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQpBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFClNPRlRXQVJFLgo="}]}