{"remainingRequest":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\obstacleClearingRescue\\RescueRegistration\\components\\EditAddPage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\obstacleClearingRescue\\RescueRegistration\\components\\EditAddPage\\index.vue","mtime":1741925793602},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\babel.config.js","mtime":1741314102158},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS94Y2p5LWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDIuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmlsdGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmluY2x1ZGVzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuam9pbi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNsaWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZmlsdGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZmluZC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmZvci1lYWNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IubWFwLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3Iuc29tZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmpzb24uc3RyaW5naWZ5LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmluY2x1ZGVzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCgppbXBvcnQgUHViU3ViIGZyb20gJ3B1YnN1Yi1qcyc7CmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JzsKaW1wb3J0IHsgcmVmaW5lUmVxdWVzdEJvZHkgfSBmcm9tICdAL3V0aWxzL3JlcXVlc3RXcmFwcGVycyc7CmltcG9ydCB7IHRhYmxlQWRkLCB0YWJsZURldGFpbCwgdGFibGVFZGl0IH0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL29ic3RhY2xlQ2xlYXJpbmdSZXNjdWUvcmVzY3VlUmVnaXN0cmF0aW9uJzsKaW1wb3J0IHsgZ2V0RGljdGlvbmFyeUJ5Q29kZSB9IGZyb20gJ0AvdXRpbHMvZGljdGlvbmFyeSc7CmltcG9ydCB7IHRhYmxlRGF0YSBhcyByb2FkU2VjdGlvbkluZm9JbnRlciB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL3JvYWRTZWN0aW9uSW5mbyc7CmltcG9ydCB7IHRhYmxlRGF0YSBhcyB0ZWFtRGF0YSB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL3BhdHJvbEFuZFJlc2N1ZVRlYW1zTWdtdCc7CmltcG9ydCB7IHRhYmxlRGF0YSBhcyBhbG9uZ1JvdXRlSW5mb0ludGVyIH0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2luZm9NZ210UGF0cm9sc1Jlc2N1ZXMvYWxvbmdSb3V0ZUluZm8nOwppbXBvcnQgVXNlckNob2ljZURpYWxvZyBmcm9tICcuL2NvbXBvbmVudHMvQXBwb2ludERpYWxvZy9jb21wb25lbnRzL1VzZXJDaG9pY2VEaWFsb2cvaW5kZXgudnVlJzsKaW1wb3J0IEV2ZW50Q2hvaWNlRGlhbG9nIGZyb20gJy4vY29tcG9uZW50cy9BcHBvaW50RGlhbG9nL2NvbXBvbmVudHMvRXZlbnRDaG9pY2VEaWFsb2cvaW5kZXgudnVlJzsKaW1wb3J0IENhckNob2ljZURpYWxvZyBmcm9tICcuL2NvbXBvbmVudHMvQXBwb2ludERpYWxvZy9jb21wb25lbnRzL0NhckNob2ljZURpYWxvZy9pbmRleC52dWUnOwppbXBvcnQgeyBwZXJzb25BbmRDYXJJbmZvIH0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2NvbW1hbmREaXNwYXRjaC9ldmVudFJlZ2lzdHJhdGlvbic7CmltcG9ydCB7IGFwcG9pbnQgfSBmcm9tICdAL2FwaS9wYXRyb2xBbmRSZXNjdWUvb2JzdGFjbGVDbGVhcmluZ1Jlc2N1ZS9yZXNjdWVSZWdpc3RyYXRpb24nOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ0VkaXRBZGRQYWdlJywKICBjb21wb25lbnRzOiB7CiAgICBDYXJDaG9pY2VEaWFsb2c6IENhckNob2ljZURpYWxvZywKICAgIEV2ZW50Q2hvaWNlRGlhbG9nOiBFdmVudENob2ljZURpYWxvZywKICAgIFVzZXJDaG9pY2VEaWFsb2c6IFVzZXJDaG9pY2VEaWFsb2cKICB9LAogIHByb3BzOiB7CiAgICBjb21wb25lbnROYW1lOiB7CiAgICAgIGRlZmF1bHQ6ICdFZGl0QWRkUGFnZScsCiAgICAgIHR5cGU6IFN0cmluZwogICAgfQogIH0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIHB1YlN1YjogbnVsbCwKICAgICAgZm9ybUxvYWRpbmc6IHRydWUsCiAgICAgIGFkZEVkaXRGb3JtOiB7CiAgICAgICAgcm9hZElkOiAnJywKICAgICAgICBvY2N1cHk6IFtdLAogICAgICAgIHJlc2N1ZVR5cGU6IDEsCiAgICAgICAgY2FyQ2xhc3M6IDEsCiAgICAgICAgcmVzY3VlVGltZTogbmV3IERhdGUoKSwKICAgICAgICBjYXI6IHt9LAogICAgICAgIHBlcnNvbjogJycsCiAgICAgICAgZGlzcGF0Y2hDYXJDb2RlOiAnJywKICAgICAgICBpc0RlbGVnYXRlczogZmFsc2UKICAgICAgfSwKICAgICAgYWRkRWRpdFJ1bGVzOiB7CiAgICAgICAgcmVzY3VlVGVsOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5oql5qGI55S16K+d5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJywgJ2JsdXInXQogICAgICAgIH1dLAogICAgICAgIHJlc2N1ZVRpbWU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfmiqXmoYjml7bpl7TkuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnLCAnYmx1ciddCiAgICAgICAgfV0sCiAgICAgICAgZXZlbnRUeXBlOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup5LqL5Lu257G75Z6LJywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICByZXNjdWVUeXBlOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5pWR5o+057G75Z6L5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICByb2FkSWQ6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfot6/mrrXkv6Hmga/kuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnXQogICAgICAgIH1dLAogICAgICAgIHRlYW1JZDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+a0vumBo+mYn+S8jeS4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZSddCiAgICAgICAgfV0sCiAgICAgICAgZXZlbnRUaW1lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5LqL5Lu25Y+R55Sf5pe26Ze05LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICBjYXJVc2VyVGVsOiBbewogICAgICAgICAgcGF0dGVybjogL14xKDNbMC05XXw0WzU3XXw1WzAtMzUtOV18N1swNjc4XXw4WzAtOV0pXGR7OH0kLywKICAgICAgICAgIG1lc3NhZ2U6ICfovabkuLvnlLXor53ovpPlhaXmnInor68nLAogICAgICAgICAgdHJpZ2dlcjogJ2JsdXInCiAgICAgICAgfV0sCiAgICAgICAgcGVyc29uOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5rS+6YGj5Lq65ZGY5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICBkaXNwYXRjaENhckNvZGU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfmtL7pgaPovabovobkuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnXQogICAgICAgIH1dLAogICAgICAgIHJlc2N1ZVN0YXR1czogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeaVkeaPtOeKtuaAgScsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZSddCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgc2F2ZUxvYWRpbmc6IGZhbHNlLAogICAgICAvLyDkuIrkvKBsb2FkaW5nCiAgICAgIGlkOiAnJywKICAgICAgLy8gaWTmoIfor4bnrKYKICAgICAgcm9hZE9wdGlvbnM6IFtdLAogICAgICBhbG9uZ1JvdXRlSW5mb0RhdGE6IFtdLAogICAgICB0ZWFtT3B0aW9uczogW10sCiAgICAgIGNhckRhdGE6IFtdLAogICAgICBjYXJDaG9pY2VEaWFsb2c6IGZhbHNlLAogICAgICB1c2VyQ2hvaWNlRGlhbG9nOiBmYWxzZSwKICAgICAgcGVyc29uT3B0aW9uczogW10sCiAgICAgIGV2ZW50Q2hvaWNlRGlhbG9nOiBmYWxzZSwKICAgICAgdGVhbURhdGFMaXN0OiBbXSwKICAgICAgZGlzcGF0Y2hlczogW10sCiAgICAgIHJvYWRTaG93OiBmYWxzZQogICAgfTsKICB9LAogIHdhdGNoOiB7CiAgICBjb21wb25lbnROYW1lOiB7CiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIobmV3VmFsKSB7CiAgICAgICAgaWYgKG5ld1ZhbCA9PT0gdGhpcy4kb3B0aW9ucy5uYW1lKSB7CiAgICAgICAgICB0aGlzLm9wZW5QYWdlKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuY2xvc2VQYWdlKCk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge30sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICB0aGlzLnB1YlN1YiA9IFB1YlN1Yi5zdWJzY3JpYmUoJ0VkaXRBZGRQYWdlJywgZnVuY3Rpb24gKF8sIGRhdGEpIHsKICAgICAgY29uc29sZS5sb2coZGF0YSwgJy0tLS0tJyk7CiAgICAgIGlmIChkYXRhLnJvYWRJZC5sZW5ndGggPT09IDEpIHsKICAgICAgICBfdGhpcy5yb2FkU2hvdyA9IHRydWU7CiAgICAgICAgX3RoaXMuYWRkRWRpdEZvcm0ucm9hZElkID0gZGF0YS5yb2FkSWRbMF07CiAgICAgIH0KICAgICAgaWYgKGRhdGEuaWQpIHsKICAgICAgICBfdGhpcy5pZCA9IGRhdGEuaWQ7CiAgICAgICAgX3RoaXMuZ2V0RGV0YWlsKGRhdGEuaWQpOwogICAgICB9CiAgICAgIF90aGlzLmdldFJvYWREYXRhKCk7CiAgICB9KTsKICB9LAogIG1ldGhvZHM6IHsKICAgIGdldERpY3Rpb25hcnlCeUNvZGU6IGdldERpY3Rpb25hcnlCeUNvZGUsCiAgICAvLyDljaDliLDmg4XlhrXnpoHnlKgKICAgIGNoZWNrRGlzYWJsZWQ6IGZ1bmN0aW9uIGNoZWNrRGlzYWJsZWQoKSB7CiAgICAgIHJldHVybiB0aGlzLmFkZEVkaXRGb3JtLm9jY3VweS5pbmNsdWRlcygnMCcpOwogICAgfSwKICAgIGNoYWVja0NoYW5nZTogZnVuY3Rpb24gY2hhZWNrQ2hhbmdlKGUpIHsKICAgICAgaWYgKHRoaXMuYWRkRWRpdEZvcm0ub2NjdXB5LmluY2x1ZGVzKCcwJykpIHsKICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLm9jY3VweSA9IFsnMCddOwogICAgICB9CiAgICB9LAogICAgLy8g5aeU5rS+CiAgICB0ZWFtSWRDaGFuZ2U6IGZ1bmN0aW9uIHRlYW1JZENoYW5nZSh2YWx1ZSkgewogICAgICB0aGlzLmdldFBlcnNvbkFuZENhckluZm8odmFsdWUpOwogICAgICB2YXIgdGVhbUluZm8gPSB0aGlzLnRlYW1PcHRpb25zLmZpbmQoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICByZXR1cm4gaXRlbS5pZCA9PT0gdmFsdWU7CiAgICAgIH0pOwogICAgICB0aGlzLmFkZEVkaXRGb3JtLnRlYW1OYW1lID0gdGVhbUluZm8ubmFtZTsKICAgICAgdGhpcy4kc2V0KHRoaXMuYWRkRWRpdEZvcm0sICdwZXJzb24nLCAnJyk7CiAgICAgIHRoaXMuYWRkRWRpdEZvcm0udXNlciA9IFtdOwogICAgICB0aGlzLmRpc3BhdGNoZXMgPSBbXTsKICAgIH0sCiAgICAvLyDmoLnmja7pmJ/kvI1pZOafpeivouS6uuWRmOS/oeaBr+WPiui9pui+huS/oeaBrwogICAgZ2V0UGVyc29uQW5kQ2FySW5mbzogZnVuY3Rpb24gZ2V0UGVyc29uQW5kQ2FySW5mbyhpZCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgcGVyc29uQW5kQ2FySW5mbyhpZCkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgdmFyIF9yZXMkdmFsdWUgPSByZXMudmFsdWUsCiAgICAgICAgICBfcmVzJHZhbHVlJG1lbWJlcnMgPSBfcmVzJHZhbHVlLm1lbWJlcnMsCiAgICAgICAgICBtZW1iZXJzID0gX3JlcyR2YWx1ZSRtZW1iZXJzID09PSB2b2lkIDAgPyBbXSA6IF9yZXMkdmFsdWUkbWVtYmVycywKICAgICAgICAgIF9yZXMkdmFsdWUkY2FycyA9IF9yZXMkdmFsdWUuY2FycywKICAgICAgICAgIGNhcnMgPSBfcmVzJHZhbHVlJGNhcnMgPT09IHZvaWQgMCA/IFtdIDogX3JlcyR2YWx1ZSRjYXJzOwogICAgICAgIF90aGlzMi5wZXJzb25PcHRpb25zID0gbWVtYmVycy5tYXAoZnVuY3Rpb24gKHBlcnNvbikgewogICAgICAgICAgcGVyc29uLmxhYmVsID0gcGVyc29uLnRlbCArICcgJyArIHBlcnNvbi5uYW1lOwogICAgICAgICAgcmV0dXJuIHBlcnNvbjsKICAgICAgICB9KTsKICAgICAgICBfdGhpczIuY2FyRGF0YSA9IGNhcnM7CiAgICAgIH0pOwogICAgfSwKICAgIGhhbmRsZUV2ZW50U2VsZWN0OiBmdW5jdGlvbiBoYW5kbGVFdmVudFNlbGVjdChfcmVmKSB7CiAgICAgIHZhciBpZCA9IF9yZWYuaWQsCiAgICAgICAgZXZlbnRUZWwgPSBfcmVmLmV2ZW50VGVsLAogICAgICAgIGV2ZW50Tm8gPSBfcmVmLmV2ZW50Tm87CiAgICAgIC8vIGNvbnNvbGUubG9nKGlkLGV2ZW50VGVsLGV2ZW50Tm8sJzAwMDAwMCcpCiAgICAgIC8vIHRoaXMuZXZlbnRJbmZvLmV2ZW50VGVsID0gZXZlbnRUZWwKICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5ldmVudElkID0gaWQ7CiAgICAgIHRoaXMuYWRkRWRpdEZvcm0uZXZlbnRObyA9IGV2ZW50Tm87CiAgICB9LAogICAgaGFuZGxlQ2FyU2VsZWN0OiBmdW5jdGlvbiBoYW5kbGVDYXJTZWxlY3QoX3JlZjIpIHsKICAgICAgdmFyIGNhck51bWJlciA9IF9yZWYyLmNhck51bWJlciwKICAgICAgICBjYXJDbGFzcyA9IF9yZWYyLmNhckNsYXNzOwogICAgICB0aGlzLiRzZXQodGhpcy5hZGRFZGl0Rm9ybSwgJ2Rpc3BhdGNoQ2FyQ29kZScsIGNhck51bWJlcik7CiAgICAgIHRoaXMuJHNldCh0aGlzLmFkZEVkaXRGb3JtLCAnZGlzcGF0Y2hDYXJUeXBlJywgY2FyQ2xhc3MpOwogICAgICB0aGlzLmRpc3BhdGNoZXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIGl0ZW0uZGlzcGF0Y2hDYXJDb2RlID0gY2FyTnVtYmVyOwogICAgICAgIGl0ZW0uZGlzcGF0Y2hDYXJUeXBlID0gY2FyQ2xhc3M7CiAgICAgIH0pOwogICAgfSwKICAgIGhhbmRsZVVzZXJTZWxlY3Q6IGZ1bmN0aW9uIGhhbmRsZVVzZXJTZWxlY3QodXNlcikgewogICAgICB2YXIgX3RoaXMkYWRkRWRpdEZvcm0gPSB0aGlzLmFkZEVkaXRGb3JtLAogICAgICAgIF90aGlzJGFkZEVkaXRGb3JtJGRpcyA9IF90aGlzJGFkZEVkaXRGb3JtLmRpc3BhdGNoQ2FyQ29kZSwKICAgICAgICBkaXNwYXRjaENhckNvZGUgPSBfdGhpcyRhZGRFZGl0Rm9ybSRkaXMgPT09IHZvaWQgMCA/ICcnIDogX3RoaXMkYWRkRWRpdEZvcm0kZGlzLAogICAgICAgIF90aGlzJGFkZEVkaXRGb3JtJGRpczIgPSBfdGhpcyRhZGRFZGl0Rm9ybS5kaXNwYXRjaENhclR5cGUsCiAgICAgICAgZGlzcGF0Y2hDYXJUeXBlID0gX3RoaXMkYWRkRWRpdEZvcm0kZGlzMiA9PT0gdm9pZCAwID8gJycgOiBfdGhpcyRhZGRFZGl0Rm9ybSRkaXMyOwogICAgICBpZiAodXNlci5sZW5ndGggPiAwKSB7CiAgICAgICAgdGhpcy5hZGRFZGl0Rm9ybS51c2VyID0gdXNlcjsKICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLnBlcnNvbiA9IHVzZXIubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICByZXR1cm4gaXRlbS5uYW1lOwogICAgICAgIH0pLmpvaW4oJywnKTsKICAgICAgICB0aGlzLmRpc3BhdGNoZXMgPSB1c2VyLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgZGlzcGF0Y2hDYXJDb2RlOiBkaXNwYXRjaENhckNvZGUsCiAgICAgICAgICAgIGRpc3BhdGNoQ2FyVHlwZTogZGlzcGF0Y2hDYXJUeXBlLAogICAgICAgICAgICBkaXNwYXRjaFVzZXJJZDogaXRlbS5pZCwKICAgICAgICAgICAgZGlzcGF0Y2hVc2VyTmFtZTogaXRlbS5uYW1lLAogICAgICAgICAgICBkaXNwYXRjaFVzZXJUZWw6IGl0ZW0udGVsCiAgICAgICAgICB9OwogICAgICAgIH0pOwogICAgICB9CiAgICAgIC8vIHRoaXMuYWRkRWRpdEZvcm0ucGVyc29uID0gdXNlci5uYW1lCiAgICAgIC8vIHRoaXMuZGlzcGF0Y2hlcyA9IFsKICAgICAgLy8gICB7CiAgICAgIC8vICAgICBkaXNwYXRjaENhckNvZGUsCiAgICAgIC8vICAgICBkaXNwYXRjaENhclR5cGUsCiAgICAgIC8vICAgICBkaXNwYXRjaFVzZXJJZDogdXNlci5pZCwKICAgICAgLy8gICAgIGRpc3BhdGNoVXNlck5hbWU6IHVzZXIubmFtZSwKICAgICAgLy8gICAgIGRpc3BhdGNoVXNlclRlbDogdXNlci50ZWwsCiAgICAgIC8vICAgfQogICAgICAvLyBdCiAgICB9LAogICAgc2l0ZUNoYW5nZTogZnVuY3Rpb24gc2l0ZUNoYW5nZShlLCB0eXBlKSB7CiAgICAgIHZhciBzaXRlSW5mbyA9IHRoaXMuYWxvbmdSb3V0ZUluZm9EYXRhLmZpbmQoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICByZXR1cm4gaXRlbS5pZCA9PT0gZTsKICAgICAgfSk7CiAgICAgIHRoaXMuYWRkRWRpdEZvcm1bIiIuY29uY2F0KHR5cGUsICJOYW1lIildID0gc2l0ZUluZm8ubmFtZTsKICAgIH0sCiAgICBjbGVhckNhclR5cGU6IGZ1bmN0aW9uIGNsZWFyQ2FyVHlwZSgpIHsKICAgICAgdGhpcy4kc2V0KHRoaXMuYWRkRWRpdEZvcm0sICdjYXJUeXBlJywgJycpOwogICAgfSwKICAgIGdldENhckNsYXNzaWZ5OiBmdW5jdGlvbiBnZXRDYXJDbGFzc2lmeSh2YWx1ZSkgewogICAgICB2YXIgX2RpY3QkOwogICAgICB2YXIgZGljdF9hcnIgPSBnZXREaWN0aW9uYXJ5QnlDb2RlKCdnemNsJyk7CiAgICAgIHZhciBkaWN0ID0gZGljdF9hcnIuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgcmV0dXJuIGl0ZW0udmFsdWUgPT0gdmFsdWU7CiAgICAgIH0pOwogICAgICByZXR1cm4gZGljdC5sZW5ndGggPyAoX2RpY3QkID0gZGljdFswXSkgPT09IG51bGwgfHwgX2RpY3QkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGljdCQubG93ZXJEaWNbJ2d6Y3gnXSA6IFtdOwogICAgfSwKICAgIGhhbmRsZUFwcG9pbnQ6IGZ1bmN0aW9uIGhhbmRsZUFwcG9pbnQoKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICB0aGlzLiRyZWZzLmFkZEVkaXRGb3JtLnZhbGlkYXRlKC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9yZWYzID0gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKHZhbGlkLCBvYmplY3QpIHsKICAgICAgICAgIHZhciBkYXRhLCByb2FkSW5mbzsKICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7CiAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBpZiAoIXZhbGlkKSB7CiAgICAgICAgICAgICAgICAgIF90aGlzMy4kbWVzc2FnZS53YXJuaW5nKCJcdTY3MDkiLmNvbmNhdChPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCwgIlx1NEUyQVx1NUI1N1x1NkJCNVx1NjcyQVx1OTAxQVx1OEZDN1x1NjgyMVx1OUE4Q1x1RkYwQ1x1OEJGN1x1NkI2M1x1Nzg2RVx1NTg2Qlx1NTE5OVx1ODg2OFx1NTM1NVx1NTE4NVx1NUJCOVx1MzAwMiIpKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIF90aGlzMy5zYXZlTG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KF90aGlzMy5hZGRFZGl0Rm9ybSkpOwogICAgICAgICAgICAgICAgICBkYXRhLm9jY3VweSA9IGRhdGEub2NjdXB5LmpvaW4oJywnKTsKICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhcnRQZWcgJiYgZGF0YS5zdGFydFBlZ0FkZCkgewogICAgICAgICAgICAgICAgICAgIGRhdGEucGVnVmFsID0gJ2snICsgKGRhdGEuc3RhcnRQZWcgfHwgJycpICsgJysnICsgKGRhdGEuc3RhcnRQZWdBZGQgfHwgJycpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGRhdGEucmVzY3VlVGltZSA9IG1vbWVudChkYXRhLnJlc2N1ZVRpbWUpLmZvcm1hdCgnWVlZWS1NTS1ERCBISDptbTpzcycpOwogICAgICAgICAgICAgICAgICByb2FkSW5mbyA9IF90aGlzMy5yb2FkT3B0aW9ucy5maW5kKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uaWQgPT09IGRhdGEucm9hZElkOwogICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgZGF0YS5yb2FkTmFtZSA9IHJvYWRJbmZvLm5hbWU7CiAgICAgICAgICAgICAgICAgIGRhdGEucm9hZENvZGUgPSByb2FkSW5mby5jb2RlOwogICAgICAgICAgICAgICAgICBkYXRhLmNhci5kaXNwYXRjaENhckNvZGUgPSBkYXRhLmRpc3BhdGNoQ2FyQ29kZTsKICAgICAgICAgICAgICAgICAgZGF0YS5jYXIuZGlzcGF0Y2hDYXJUeXBlID0gZGF0YS5kaXNwYXRjaENhclR5cGU7CiAgICAgICAgICAgICAgICAgIGRhdGEuZGlzcGF0Y2hlcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoX3RoaXMzLmRpc3BhdGNoZXMpKTsKICAgICAgICAgICAgICAgICAgX3RoaXMzLiRjb25maXJtKCfnoa7orqTlp5TmtL7mlZHmj7TljZXlkJfvvJ8nLCAn5o+Q56S6JywgewogICAgICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu6K6kJywKICAgICAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICAgICAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICAgICAgICAgICAgfSkudGhlbigvKiNfX1BVUkVfXyovX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIF95aWVsZCRhcHBvaW50LCBzdGF0ZSwgbWVzc2FnZSwgdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwcG9pbnQoX29iamVjdFNwcmVhZCh7fSwgZGF0YSkpOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgX3lpZWxkJGFwcG9pbnQgPSBfY29udGV4dC5zZW50OwogICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJGFwcG9pbnQuc3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCRhcHBvaW50Lm1lc3NhZ2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBfeWllbGQkYXBwb2ludC52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzMy4kbWVzc2FnZS5zdWNjZXNzKCJcdTU5RDRcdTZEM0VcdTYyMTBcdTUyOUYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzMy5jaGFuZ2VQYWdlKCdUYWJsZVBhZ2UnLCAnZWRpdCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzMy5zYXZlTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5maW5pc2goOCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCBfY2FsbGVlLCBudWxsLCBbWzAsLCA4LCAxMV1dKTsKICAgICAgICAgICAgICAgICAgfSkpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpOwogICAgICAgICAgICB9CiAgICAgICAgICB9LCBfY2FsbGVlMik7CiAgICAgICAgfSkpOwogICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gsIF94MikgewogICAgICAgICAgcmV0dXJuIF9yZWYzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSgpKTsKICAgIH0sCiAgICAvL+iOt+WPluaJgOWcqOi3r+auteWIl+ihqOaVsOaNrgogICAgZ2V0Um9hZERhdGE6IGZ1bmN0aW9uIGdldFJvYWREYXRhKCkgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMygpIHsKICAgICAgICB2YXIgX3lpZWxkJHJvYWRTZWN0aW9uSW5mLCBfeWllbGQkcm9hZFNlY3Rpb25JbmYyLCByb3dzOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIHJvYWRTZWN0aW9uSW5mb0ludGVyKHsKICAgICAgICAgICAgICAgIHBhZ2VCZWFuOiB7CiAgICAgICAgICAgICAgICAgIHBhZ2VTaXplOiAtMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX3lpZWxkJHJvYWRTZWN0aW9uSW5mID0gX2NvbnRleHQzLnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJHJvYWRTZWN0aW9uSW5mMiA9IF95aWVsZCRyb2FkU2VjdGlvbkluZi5yb3dzOwogICAgICAgICAgICAgIHJvd3MgPSBfeWllbGQkcm9hZFNlY3Rpb25JbmYyID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCRyb2FkU2VjdGlvbkluZjI7CiAgICAgICAgICAgICAgX3RoaXM0LnJvYWRPcHRpb25zID0gcm93cy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgIGl0ZW0ucm9hZE5hbWUgPSBpdGVtLm5hbWUgKyAnICcgKyBpdGVtLmNvZGU7CiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTsKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICBpZiAoIV90aGlzNC5pZCkgewogICAgICAgICAgICAgICAgaWYgKF90aGlzNC5yb2FkU2hvdykgewogICAgICAgICAgICAgICAgICBfdGhpczQucm9hZENoYW5nZShfdGhpczQuYWRkRWRpdEZvcm0ucm9hZElkKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIF90aGlzNC4kc2V0KF90aGlzNC5hZGRFZGl0Rm9ybSwgJ3JvYWRJZCcsIF90aGlzNC5yb2FkT3B0aW9uc1swXS5pZCk7CiAgICAgICAgICAgICAgICAgIF90aGlzNC5yb2FkQ2hhbmdlKF90aGlzNC5yb2FkT3B0aW9uc1swXS5pZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTMpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICByb2FkQ2hhbmdlOiBmdW5jdGlvbiByb2FkQ2hhbmdlKHZhbHVlKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICB0aGlzLmdldFRlYW1EYXRhKHZhbHVlKTsKICAgICAgLy8g6YCa6L+H6Lev5q615L+h5oGv6I635Y+W5rK/57q/6K6+5aSH5L+h5oGvCiAgICAgIHRoaXMuZ2V0QWxvbmdSb3V0ZUluZm8odmFsdWUsIGZ1bmN0aW9uIChkYXRhKSB7CiAgICAgICAgdmFyIF90aGlzNSRhZGRFZGl0Rm9ybSA9IF90aGlzNS5hZGRFZGl0Rm9ybSwKICAgICAgICAgIHN0YXJ0UGF0cm9sSWQgPSBfdGhpczUkYWRkRWRpdEZvcm0uc3RhcnRQYXRyb2xJZCwKICAgICAgICAgIGVuZFBhdHJvbElkID0gX3RoaXM1JGFkZEVkaXRGb3JtLmVuZFBhdHJvbElkOwoKICAgICAgICAvKg0KICAgICAgICAqIOW3oeajgOW8gOWni++8jOe7k+adn+ermQ0KICAgICAgICAqICovCiAgICAgICAgaWYgKHN0YXJ0UGF0cm9sSWQpIHsKICAgICAgICAgIGlmICghZGF0YS5zb21lKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgICAgIHJldHVybiBpLmlkID09PSBzdGFydFBhdHJvbElkOwogICAgICAgICAgfSkpIHsKICAgICAgICAgICAgX3RoaXM1LmFkZEVkaXRGb3JtLnN0YXJ0UGF0cm9sSWQgPSAnJzsKICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoXykgewogICAgICAgICAgICAgIHJldHVybiBfdGhpczUuJG1lc3NhZ2Uud2FybmluZygn6K+36YeN5paw6YCJ5oup5byA5aeL56uZLi4nKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChlbmRQYXRyb2xJZCkgewogICAgICAgICAgaWYgKCFkYXRhLnNvbWUoZnVuY3Rpb24gKGkpIHsKICAgICAgICAgICAgcmV0dXJuIGkuaWQgPT09IGVuZFBhdHJvbElkOwogICAgICAgICAgfSkpIHsKICAgICAgICAgICAgX3RoaXM1LmFkZEVkaXRGb3JtLmVuZFBhdHJvbElkID0gJyc7CiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKF8pIHsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXM1LiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mHjeaWsOmAieaLqee7k+adn+ermS4uJyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAogICAgLy8g6YCa6L+H6Lev5q615L+h5oGv6I635Y+W5beh5p+l5pWR5o+06Zif5LyN5L+h5oGvCiAgICBnZXRUZWFtRGF0YTogZnVuY3Rpb24gZ2V0VGVhbURhdGEodmFsdWUpIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQoKSB7CiAgICAgICAgdmFyIF95aWVsZCR0ZWFtRGF0YSwgX3lpZWxkJHRlYW1EYXRhJHJvd3MsIHJvd3M7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU0JChfY29udGV4dDQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NC5wcmV2ID0gX2NvbnRleHQ0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMjsKICAgICAgICAgICAgICByZXR1cm4gdGVhbURhdGEocmVmaW5lUmVxdWVzdEJvZHkoewogICAgICAgICAgICAgICAgcXVlcnlzOiBbewogICAgICAgICAgICAgICAgICBvcGVyYXRpb246ICdJTicsCiAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAnci5pZF8nLAogICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUKICAgICAgICAgICAgICAgIH1dCiAgICAgICAgICAgICAgfSksICdhZGRFZGl0Jyk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBfeWllbGQkdGVhbURhdGEgPSBfY29udGV4dDQuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkdGVhbURhdGEkcm93cyA9IF95aWVsZCR0ZWFtRGF0YS5yb3dzOwogICAgICAgICAgICAgIHJvd3MgPSBfeWllbGQkdGVhbURhdGEkcm93cyA9PT0gdm9pZCAwID8gW10gOiBfeWllbGQkdGVhbURhdGEkcm93czsKICAgICAgICAgICAgICBfdGhpczYudGVhbU9wdGlvbnMgPSByb3dzOwogICAgICAgICAgICAgIF90aGlzNi50ZWFtRGF0YUxpc3QgPSByb3dzLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0udHlwZSA9PT0gJzInOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTQpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDpgJrov4fot6/mrrXkv6Hmga/ojrflj5bmsr/nur/orr7lpIfkv6Hmga8KICAgIGdldEFsb25nUm91dGVJbmZvOiBmdW5jdGlvbiBnZXRBbG9uZ1JvdXRlSW5mbyh2YWx1ZSwgY2FsbGJhY2spIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTUoKSB7CiAgICAgICAgdmFyIF93aXBlRGF0YSwgX3lpZWxkJGFsb25nUm91dGVJbmZvLCBfeWllbGQkYWxvbmdSb3V0ZUluZm8yLCByb3dzOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNSQoX2NvbnRleHQ1KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDUucHJldiA9IF9jb250ZXh0NS5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfd2lwZURhdGEgPSBmdW5jdGlvbiBfd2lwZURhdGEoKSB7CiAgICAgICAgICAgICAgICBfdGhpczcuYWxvbmdSb3V0ZUluZm9EYXRhID0gW107CiAgICAgICAgICAgICAgICBjYWxsYmFjayAmJiBjYWxsYmFjayhfdGhpczcuYWxvbmdSb3V0ZUluZm9EYXRhKTsKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIF9jb250ZXh0NS5wcmV2ID0gMTsKICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDQ7CiAgICAgICAgICAgICAgcmV0dXJuIGFsb25nUm91dGVJbmZvSW50ZXIocmVmaW5lUmVxdWVzdEJvZHkoewogICAgICAgICAgICAgICAgcXVlcnlzOiBbewogICAgICAgICAgICAgICAgICBvcGVyYXRpb246ICdJTicsCiAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAncm9hZF9zZWdtZW50X2lkXycsCiAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZQogICAgICAgICAgICAgICAgfV0KICAgICAgICAgICAgICB9KSwgJ2FkZEVkaXQnKTsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgIF95aWVsZCRhbG9uZ1JvdXRlSW5mbyA9IF9jb250ZXh0NS5zZW50OwogICAgICAgICAgICAgIF95aWVsZCRhbG9uZ1JvdXRlSW5mbzIgPSBfeWllbGQkYWxvbmdSb3V0ZUluZm8ucm93czsKICAgICAgICAgICAgICByb3dzID0gX3lpZWxkJGFsb25nUm91dGVJbmZvMiA9PT0gdm9pZCAwID8gW10gOiBfeWllbGQkYWxvbmdSb3V0ZUluZm8yOwogICAgICAgICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKHJvd3MpOwogICAgICAgICAgICAgIF90aGlzNy5hbG9uZ1JvdXRlSW5mb0RhdGEgPSByb3dzOwogICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gMTQ7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgICAgX2NvbnRleHQ1LnByZXYgPSAxMTsKICAgICAgICAgICAgICBfY29udGV4dDUudDAgPSBfY29udGV4dDVbImNhdGNoIl0oMSk7CiAgICAgICAgICAgICAgLy8g5LiN5Li66K+35rGC6L+H5b+r57uT5p2f55qE5oOF5Ya15LiL77yM6YeN572uCiAgICAgICAgICAgICAgaWYgKF9jb250ZXh0NS50MC5tZXNzYWdlICE9PSAnY2FuY2VsZWQnKSBfd2lwZURhdGEoKTsKICAgICAgICAgICAgY2FzZSAxNDoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNSwgbnVsbCwgW1sxLCAxMV1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g5omT5byA6aG16Z2i5omn6KGMCiAgICBvcGVuUGFnZTogZnVuY3Rpb24gb3BlblBhZ2UoKSB7fSwKICAgIC8vIOWxleekuuW8ueWxggogICAgc2hvd0RpYWxvZzogZnVuY3Rpb24gc2hvd0RpYWxvZyhkaWFsb2dOYW1lKSB7CiAgICAgIGlmICghZGlhbG9nTmFtZSkgcmV0dXJuOwogICAgICBpZiAoZGlhbG9nTmFtZSA9PT0gJ3VzZXJDaG9pY2UnKSB7CiAgICAgICAgaWYgKCF0aGlzLmFkZEVkaXRGb3JtLnRlYW1JZCkgewogICAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcign6K+35YWI6YCJ5oup5pWR5o+05rS+6YGj6Zif5LyNJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXNbZGlhbG9nTmFtZSArICdEaWFsb2cnXSA9IHRydWU7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIHRoaXNbZGlhbG9nTmFtZSArICdEaWFsb2cnXSA9IHRydWU7CiAgICAgIH0KICAgIH0sCiAgICAvLyDlhbPpl63pobXpnaLmiafooYwKICAgIGNsb3NlUGFnZTogZnVuY3Rpb24gY2xvc2VQYWdlKCkgewogICAgICB2YXIgX3RoaXM4ID0gdGhpczsKICAgICAgdmFyIHB1YlN1YiA9IHRoaXMucHViU3ViLAogICAgICAgIGFkZEVkaXRSdWxlcyA9IHRoaXMuYWRkRWRpdFJ1bGVzLAogICAgICAgIHJvYWRPcHRpb25zID0gdGhpcy5yb2FkT3B0aW9uczsKICAgICAgLy8g6YeN572u57uE5Lu25pWw5o2uCiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy4kZGF0YSwgdGhpcy4kb3B0aW9ucy5kYXRhLmNhbGwodGhpcyksIHsKICAgICAgICBwdWJTdWI6IHB1YlN1YiwKICAgICAgICBhZGRFZGl0UnVsZXM6IGFkZEVkaXRSdWxlcywKICAgICAgICByb2FkT3B0aW9uczogcm9hZE9wdGlvbnMKICAgICAgfSk7CiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgX3RoaXM4LiRyZWZzLmFkZEVkaXRGb3JtLiRlbC5zY3JvbGxUb3AgPSAwOwogICAgICAgIF90aGlzOC4kcmVmcy5hZGRFZGl0Rm9ybS5jbGVhclZhbGlkYXRlKCk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOiOt+WPluivpuaDhQogICAgZ2V0RGV0YWlsOiBmdW5jdGlvbiBnZXREZXRhaWwoaWQpIHsKICAgICAgdmFyIF90aGlzOSA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTYoKSB7CiAgICAgICAgdmFyIF90aGlzOSRhZGRFZGl0Rm9ybSwgX3RoaXM5JGFkZEVkaXRGb3JtJHJvLCByb2FkSWQsIF90aGlzOSRhZGRFZGl0Rm9ybSRwZSwgcGVnVmFsLCBfdGhpczkkYWRkRWRpdEZvcm0kb2MsIG9jY3VweSwgc3RhcnRQZWdBcnI7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU2JChfY29udGV4dDYpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Ni5wcmV2ID0gX2NvbnRleHQ2Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0Ni5wcmV2ID0gMDsKICAgICAgICAgICAgICBfY29udGV4dDYubmV4dCA9IDM7CiAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlRGV0YWlsKGlkKTsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgIF90aGlzOS5hZGRFZGl0Rm9ybSA9IF9jb250ZXh0Ni5zZW50OwogICAgICAgICAgICAgIF90aGlzOSRhZGRFZGl0Rm9ybSA9IF90aGlzOS5hZGRFZGl0Rm9ybSwgX3RoaXM5JGFkZEVkaXRGb3JtJHJvID0gX3RoaXM5JGFkZEVkaXRGb3JtLnJvYWRJZCwgcm9hZElkID0gX3RoaXM5JGFkZEVkaXRGb3JtJHJvID09PSB2b2lkIDAgPyAnJyA6IF90aGlzOSRhZGRFZGl0Rm9ybSRybywgX3RoaXM5JGFkZEVkaXRGb3JtJHBlID0gX3RoaXM5JGFkZEVkaXRGb3JtLnBlZ1ZhbCwgcGVnVmFsID0gX3RoaXM5JGFkZEVkaXRGb3JtJHBlID09PSB2b2lkIDAgPyAnJyA6IF90aGlzOSRhZGRFZGl0Rm9ybSRwZSwgX3RoaXM5JGFkZEVkaXRGb3JtJG9jID0gX3RoaXM5JGFkZEVkaXRGb3JtLm9jY3VweSwgb2NjdXB5ID0gX3RoaXM5JGFkZEVkaXRGb3JtJG9jID09PSB2b2lkIDAgPyAnJyA6IF90aGlzOSRhZGRFZGl0Rm9ybSRvYzsKICAgICAgICAgICAgICBfdGhpczkuYWRkRWRpdEZvcm0ub2NjdXB5ID0gb2NjdXB5LnNwbGl0KCcsJyk7CiAgICAgICAgICAgICAgaWYgKHBlZ1ZhbCkgewogICAgICAgICAgICAgICAgc3RhcnRQZWdBcnIgPSBwZWdWYWwuc3BsaXQoJysnKTsgLy8gdGhpcy5hZGRFZGl0Rm9ybS5zdGFydFBlZyA9IHN0YXJ0UGVnQXJyWzBdLnNsaWNlKDEpCiAgICAgICAgICAgICAgICAvLyB0aGlzLmFkZEVkaXRGb3JtLnN0YXJ0UGVnQWRkID0gc3RhcnRQZWdBcnJbMV0KICAgICAgICAgICAgICAgIF90aGlzOS4kc2V0KF90aGlzOS5hZGRFZGl0Rm9ybSwgJ3N0YXJ0UGVnJywgc3RhcnRQZWdBcnJbMF0uc2xpY2UoMSkpOwogICAgICAgICAgICAgICAgX3RoaXM5LiRzZXQoX3RoaXM5LmFkZEVkaXRGb3JtLCAnc3RhcnRQZWdBZGQnLCBzdGFydFBlZ0FyclsxXSk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF90aGlzOS4kc2V0KF90aGlzOS5hZGRFZGl0Rm9ybSwgJ3N0YXJ0UGVnJywgJycpOwogICAgICAgICAgICAgICAgX3RoaXM5LiRzZXQoX3RoaXM5LmFkZEVkaXRGb3JtLCAnc3RhcnRQZWdBZGQnLCAnJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF90aGlzOS5yb2FkQ2hhbmdlKHJvYWRJZCk7CiAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICBfY29udGV4dDYucHJldiA9IDg7CiAgICAgICAgICAgICAgX3RoaXM5LmZvcm1Mb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ni5maW5pc2goOCk7CiAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ni5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTYsIG51bGwsIFtbMCwsIDgsIDExXV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDkv53lrZgKICAgIGhhbmRsZVNhdmU6IGZ1bmN0aW9uIGhhbmRsZVNhdmUoKSB7CiAgICAgIHZhciBfdGhpczEwID0gdGhpczsKICAgICAgdGhpcy4kcmVmcy5hZGRFZGl0Rm9ybS52YWxpZGF0ZSgvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBfcmVmNSA9IF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNyh2YWxpZCwgb2JqZWN0KSB7CiAgICAgICAgICB2YXIgZGF0YSwgcm9hZEluZm8sIG15SW50ZXJGYWNlLCBfeWllbGQkbXlJbnRlckZhY2UsIHN0YXRlLCBtZXNzYWdlLCB2YWx1ZTsKICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNyQoX2NvbnRleHQ3KSB7CiAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Ny5wcmV2ID0gX2NvbnRleHQ3Lm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBpZiAodmFsaWQpIHsKICAgICAgICAgICAgICAgICAgX2NvbnRleHQ3Lm5leHQgPSA0OwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF90aGlzMTAuJG1lc3NhZ2Uud2FybmluZygiXHU2NzA5Ii5jb25jYXQoT2JqZWN0LmtleXMob2JqZWN0KS5sZW5ndGgsICJcdTRFMkFcdTVCNTdcdTZCQjVcdTY3MkFcdTkwMUFcdThGQzdcdTY4MjFcdTlBOENcdUZGMENcdThCRjdcdTZCNjNcdTc4NkVcdTU4NkJcdTUxOTlcdTg4NjhcdTUzNTVcdTUxODVcdTVCQjlcdTMwMDIiKSk7CiAgICAgICAgICAgICAgICBfY29udGV4dDcubmV4dCA9IDI2OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgX3RoaXMxMC5zYXZlTG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShfdGhpczEwLmFkZEVkaXRGb3JtKSk7CiAgICAgICAgICAgICAgICBkYXRhLm9jY3VweSA9IGRhdGEub2NjdXB5LmpvaW4oJywnKTsKICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXJ0UGVnICYmIGRhdGEuc3RhcnRQZWdBZGQpIHsKICAgICAgICAgICAgICAgICAgZGF0YS5wZWdWYWwgPSAnaycgKyAoZGF0YS5zdGFydFBlZyB8fCAnJykgKyAnKycgKyAoZGF0YS5zdGFydFBlZ0FkZCB8fCAnJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkYXRhLnJlc2N1ZVRpbWUgPSBtb21lbnQoZGF0YS5yZXNjdWVUaW1lKS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW06c3MnKTsKICAgICAgICAgICAgICAgIHJvYWRJbmZvID0gX3RoaXMxMC5yb2FkT3B0aW9ucy5maW5kKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmlkID09PSBkYXRhLnJvYWRJZDsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgZGF0YS5yb2FkTmFtZSA9IHJvYWRJbmZvLm5hbWU7CiAgICAgICAgICAgICAgICBkYXRhLnJvYWRDb2RlID0gcm9hZEluZm8uY29kZTsKICAgICAgICAgICAgICAgIGRhdGEuY2FyLmRpc3BhdGNoQ2FyQ29kZSA9IGRhdGEuZGlzcGF0Y2hDYXJDb2RlOwogICAgICAgICAgICAgICAgZGF0YS5jYXIuZGlzcGF0Y2hDYXJUeXBlID0gZGF0YS5kaXNwYXRjaENhclR5cGU7CiAgICAgICAgICAgICAgICBteUludGVyRmFjZSA9IF90aGlzMTAuaWQgPyB0YWJsZUVkaXQgOiB0YWJsZUFkZDsKICAgICAgICAgICAgICAgIF9jb250ZXh0Ny5wcmV2ID0gMTU7CiAgICAgICAgICAgICAgICBfY29udGV4dDcubmV4dCA9IDE4OwogICAgICAgICAgICAgICAgcmV0dXJuIG15SW50ZXJGYWNlKF9vYmplY3RTcHJlYWQoe30sIGRhdGEpKTsKICAgICAgICAgICAgICBjYXNlIDE4OgogICAgICAgICAgICAgICAgX3lpZWxkJG15SW50ZXJGYWNlID0gX2NvbnRleHQ3LnNlbnQ7CiAgICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCRteUludGVyRmFjZS5zdGF0ZTsKICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkbXlJbnRlckZhY2UubWVzc2FnZTsKICAgICAgICAgICAgICAgIHZhbHVlID0gX3lpZWxkJG15SW50ZXJGYWNlLnZhbHVlOwogICAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICAgIF90aGlzMTAuJG1lc3NhZ2Uuc3VjY2VzcygiXHU0RkREXHU1QjU4XHU2MjEwXHU1MjlGIik7CiAgICAgICAgICAgICAgICAgIF90aGlzMTAuY2hhbmdlUGFnZSgnVGFibGVQYWdlJywgX3RoaXMxMC5pZCA/ICdlZGl0JyA6ICdhZGQnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBjYXNlIDIzOgogICAgICAgICAgICAgICAgX2NvbnRleHQ3LnByZXYgPSAyMzsKICAgICAgICAgICAgICAgIF90aGlzMTAuc2F2ZUxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDcuZmluaXNoKDIzKTsKICAgICAgICAgICAgICBjYXNlIDI2OgogICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ3LnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZTcsIG51bGwsIFtbMTUsLCAyMywgMjZdXSk7CiAgICAgICAgfSkpOwogICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gzLCBfeDQpIHsKICAgICAgICAgIHJldHVybiBfcmVmNS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICAgIH0oKSk7CiAgICB9LAogICAgLy8g5pS55Y+Y6aG16Z2iCiAgICBjaGFuZ2VQYWdlOiBmdW5jdGlvbiBjaGFuZ2VQYWdlKCkgewogICAgICB2YXIgcGFnZU5hbWUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6ICcnOwogICAgICB2YXIgdHlwZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogJyc7CiAgICAgIGlmICghcGFnZU5hbWUpIHJldHVybjsKICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlUGFnZScsIHBhZ2VOYW1lLCBmdW5jdGlvbiAoXykgewogICAgICAgIFB1YlN1Yi5wdWJsaXNoKHBhZ2VOYW1lLCB7CiAgICAgICAgICB0eXBlOiB0eXBlCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfQogIH0sCiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHsKICAgIC8vIOWcqOe7hOS7tumUgOavgeS5i+WJjSDmuIXpmaTorqLpmIXmtojmga8KICAgIFB1YlN1Yi51bnN1YnNjcmliZSh0aGlzLnB1YlN1Yik7CiAgfQp9Ow=="},null]}