{"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\\commandDispatch\\EventRegistration\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\commandDispatch\\EventRegistration\\index.vue","mtime":1741931490680},{"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:aW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zbGljZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmZpbmQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLnNvbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5qc29uLnN0cmluZ2lmeS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuZm9yLWVhY2guanMiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwoKaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnOwppbXBvcnQgUHViU3ViIGZyb20gJ3B1YnN1Yi1qcyc7CmltcG9ydCB7IHJlZmluZVJlcXVlc3RCb2R5IH0gZnJvbSAnQC91dGlscy9yZXF1ZXN0V3JhcHBlcnMnOwppbXBvcnQgeyB0YWJsZUFkZCwgdGFibGVEZXRhaWwsIHRhYmxlRWRpdCB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9jb21tYW5kRGlzcGF0Y2gvZXZlbnRSZWdpc3RyYXRpb24nOwppbXBvcnQgeyBnZXREaWN0aW9uYXJ5QnlDb2RlLCBkaWN0aW9uYXJ5RXNjYXBlIH0gZnJvbSAnQC91dGlscy9kaWN0aW9uYXJ5JzsKaW1wb3J0IFJvYWRDaG9pY2VEaWFsb2cgZnJvbSAnLi9jb21wb25lbnRzL1JvYWRDaG9pY2VEaWFsb2cnOwppbXBvcnQgQXBwb2ludERpYWxvZyBmcm9tICcuL2NvbXBvbmVudHMvQXBwb2ludERpYWxvZyc7CmltcG9ydCBUcmFmZmljQ29udHJvbCBmcm9tICcuL2NvbXBvbmVudHMvVHJhZmZpY0NvbnRyb2wnOwppbXBvcnQgVHJhZmZpY0phbSBmcm9tICcuL2NvbXBvbmVudHMvVHJhZmZpY0phbSc7CmltcG9ydCBCYXNpY3NJbmZvIGZyb20gJy4vY29tcG9uZW50cy9CYXNpY3NJbmZvJzsKaW1wb3J0IE1pbmVNYXAgZnJvbSAnQC9jb21wb25lbnRzL01pbmVNYXAvaW5kZXgudnVlJzsKaW1wb3J0IHsgb3JnVHJlZSB9IGZyb20gJ0AvYXBpL3N5c3RlbUludGVyZmFjZSc7CmltcG9ydCB7IHRhYmxlRGF0YSBhcyByb2FkU2VjdGlvbkluZm9JbnRlciB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL3JvYWRTZWN0aW9uSW5mbyc7CmltcG9ydCB7IHRhYmxlRGF0YSBhcyBhbG9uZ1JvdXRlSW5mb0ludGVyIH0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2luZm9NZ210UGF0cm9sc1Jlc2N1ZXMvYWxvbmdSb3V0ZUluZm8nOwppbXBvcnQgeyB0YWJsZURhdGEgYXMgdGVhbURhdGEgfSBmcm9tICdAL2FwaS9wYXRyb2xBbmRSZXNjdWUvaW5mb01nbXRQYXRyb2xzUmVzY3Vlcy9wYXRyb2xBbmRSZXNjdWVUZWFtc01nbXQnOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ0V2ZW50UmVnaXN0cmF0aW9uJywKICBjb21wb25lbnRzOiB7CiAgICBNaW5lTWFwOiBNaW5lTWFwLAogICAgUm9hZENob2ljZURpYWxvZzogUm9hZENob2ljZURpYWxvZywKICAgIEFwcG9pbnREaWFsb2c6IEFwcG9pbnREaWFsb2csCiAgICBUcmFmZmljQ29udHJvbDogVHJhZmZpY0NvbnRyb2wsCiAgICBCYXNpY3NJbmZvOiBCYXNpY3NJbmZvLAogICAgVHJhZmZpY0phbTogVHJhZmZpY0phbQogIH0sCiAgcHJvcHM6IHsKICAgIGNvbXBvbmVudE5hbWU6IHsKICAgICAgZGVmYXVsdDogJ0VkaXRBZGRQYWdlJywKICAgICAgdHlwZTogU3RyaW5nCiAgICB9CiAgfSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgYWN0aXZlTmFtZTogJ2Jhc2ljcycsCiAgICAgIGZvcm1Mb2FkaW5nOiB0cnVlLAogICAgICBhcHBvaW50RGlhbG9nOiBmYWxzZSwKICAgICAgYWRkRWRpdEZvcm06IHsKICAgICAgICBsbmc6ICcnLAogICAgICAgIGxhdDogJycsCiAgICAgICAgZXZlbnRUeXBlOiAiMSIsCiAgICAgICAgZXZlbnRUaW1lOiBuZXcgRGF0ZSgpCiAgICAgIH0sCiAgICAgIGFkZEVkaXRSdWxlczogewogICAgICAgIGV2ZW50VGVsOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5oql5qGI55S16K+d5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJywgJ2JsdXInXQogICAgICAgIH1dLAogICAgICAgIGV2ZW50VHlwZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeS6i+S7tuexu+WeiycsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZSddCiAgICAgICAgfV0sCiAgICAgICAgcm9hZElkOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6Lev5q615L+h5oGv5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICB0ZWFtSWQ6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICflpITnva7pmJ/kvI3kuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnXQogICAgICAgIH1dLAogICAgICAgIGV2ZW50VGltZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+S6i+S7tuWPkeeUn+aXtumXtOS4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZSddCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgc2F2ZUxvYWRpbmc6IGZhbHNlLAogICAgICAvLyDkuIrkvKBsb2FkaW5nCiAgICAgIGlkOiAnJywKICAgICAgLy8gaWTmoIfor4bnrKYKICAgICAgcm9hZENob2ljZURpYWxvZzogZmFsc2UsCiAgICAgIC8vIOaYr+WQpuWxleekuumAieaLqei3r+auteW8ueWxggogICAgICByb3V0ZXJEYXRhOiBbXSwKICAgICAgLy8g6Lev57q/5pWw5o2uCiAgICAgIHB1YlN1YjogbnVsbCwKICAgICAgbWFwTG9hZGluZzogdHJ1ZSwKICAgICAgLy8g5Zyw5Zu+5Yqg6L29bG9hZGluZwogICAgICBtYXA6IG51bGwsCiAgICAgIG1hcERlZmF1bHRPcHRpb25zOiB7CiAgICAgICAgY2VudGVyOiBbMTA2LjU1MDcsIDI5LjU2NDddIC8q5Zyw5Zu+5Lit5b+D54K5Ki8sCiAgICAgICAgem9vbTogOSAvKuWcsOWbvum7mOiupOe8qeaUvuetiee6pyovCiAgICAgIH0sCiAgICAgIG1hcmtlcnM6IFtdLAogICAgICB0ZWFtVHJlZURhdGE6IFtdLAogICAgICAvLyDmlZHmj7TpmJ/kvI3nu4Tnu4fmoJEKICAgICAgZXZlbnRHcmFkZU9wdGlvbnM6IFsKICAgICAgLy/kuovku7bnrYnnuqcKICAgICAgewogICAgICAgIGxhYmVsOiAnMee6pycsCiAgICAgICAgdmFsdWU6IDEKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAnMue6pycsCiAgICAgICAgdmFsdWU6IDIKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAnM+e6pycsCiAgICAgICAgdmFsdWU6IDMKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAnNOe6pycsCiAgICAgICAgdmFsdWU6IDQKICAgICAgfV0sCiAgICAgIHRhYmxlRGF0YTogW10sCiAgICAgIHJvYWRPcHRpb25zOiBbXSwKICAgICAgYWxvbmdSb3V0ZUluZm9EYXRhOiBbXSwKICAgICAgdGVhbU9wdGlvbnM6IFtdLAogICAgICBvcHRpb25zOiBbewogICAgICAgIGxhYmVsOiAn5ZCmJywKICAgICAgICB2YWx1ZTogMAogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICfmmK8nLAogICAgICAgIHZhbHVlOiAxCiAgICAgIH1dLAogICAgICBnZW5lcmF0ZWRPck5vdDogMCwKICAgICAgdGVhbUluZm86IHsKICAgICAgICB0ZWFtSWQ6ICcnLAogICAgICAgIHRlYW1GdWxsSWQ6ICcnCiAgICAgIH0KICAgIH07CiAgfSwKICB3YXRjaDogewogICAgY29tcG9uZW50TmFtZTogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKG5ld1ZhbCkgewogICAgICAgIGlmIChuZXdWYWwgPT09IHRoaXMuJG9wdGlvbnMubmFtZSkgewogICAgICAgICAgdGhpcy5vcGVuUGFnZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLmNsb3NlUGFnZSgpOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHsKICAgIHRoaXMuZ2V0T3JnVHJlZURhdGEoKTsKICB9LAogIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7CiAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgdGhpcy5wdWJTdWIgPSBQdWJTdWIuc3Vic2NyaWJlKCdFZGl0QWRkUGFnZScsIGZ1bmN0aW9uIChfLCBkYXRhKSB7CiAgICAgIGlmIChkYXRhLmlkKSB7CiAgICAgICAgX3RoaXMuaWQgPSBkYXRhLmlkOwogICAgICAgIF90aGlzLmdldERldGFpbChkYXRhLmlkKTsKICAgICAgfQogICAgfSk7CiAgICB0aGlzLmdldFJvYWRPcHRpb25zKCk7CiAgICB0aGlzLnNldE5hdkJhcldpZHRoKCk7CiAgICB0aGlzLnNjcm9sbFRvTmF2U3R5bGUoKTsKICB9LAogIG1ldGhvZHM6IHsKICAgIC8vIOiOt+WPlnRhYml0ZW3nmoTlrr3luqYKICAgIHNldE5hdkJhcldpZHRoOiBmdW5jdGlvbiBzZXROYXZCYXJXaWR0aCgpIHsKICAgICAgdmFyIHR5cGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6ICdiYXNpY3MnOwogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIGFjdGl2ZU5hdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCIiLmNvbmNhdCh0eXBlLCAiTmF2IikpOwogICAgICAgIHZhciBhY3RpdmVCYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0aXZlQmFyJyk7CiAgICAgICAgYWN0aXZlQmFyLnN0eWxlLndpZHRoID0gYWN0aXZlTmF2Lm9mZnNldFdpZHRoICsgJ3B4JzsKICAgICAgICBhY3RpdmVCYXIuc3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZVgoIi5jb25jYXQoYWN0aXZlTmF2Lm9mZnNldExlZnQsICJweCkiKTsKICAgICAgfSk7CiAgICB9LAogICAgdGFiQ2hhbmdlOiBmdW5jdGlvbiB0YWJDaGFuZ2UodHlwZSkgewogICAgICB0aGlzLnNldE5hdkJhcldpZHRoKHR5cGUpOwogICAgICB2YXIgdGFyZ2V0ID0gdGhpcy4kcmVmc1siIi5jb25jYXQodHlwZSwgIkNvbnRlbnQiKV0uJHJlZnMudGFyZ2V0U2VjdGlvbjsKICAgICAgdGFyZ2V0LnNjcm9sbEludG9WaWV3KHsKICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcKICAgICAgfSk7CiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgfSwKICAgIC8vIOa7muWKqOiuvue9rm5hduagt+W8jwogICAgc2Nyb2xsVG9OYXZTdHlsZTogZnVuY3Rpb24gc2Nyb2xsVG9OYXZTdHlsZSgpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICAgIHZhciB0YXJnZXQgPSB0aGlzLiRyZWZzWyJiYXNpY3NDb250ZW50Il0uJHJlZnMudGFyZ2V0U2VjdGlvbjsKICAgICAgdmFyIHRhcmdldDEgPSB0aGlzLiRyZWZzWyJjb250cm9sQ29udGVudCJdLiRyZWZzLnRhcmdldFNlY3Rpb247CiAgICAgIHZhciB0YXJnZXQyID0gdGhpcy4kcmVmc1siamFtQ29udGVudCJdLiRyZWZzLnRhcmdldFNlY3Rpb247CiAgICAgIHZhciBhcnIgPSBbdGFyZ2V0LCB0YXJnZXQxLCB0YXJnZXQyXTsKICAgICAgdmFyIG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uIChlbnRyaWVzKSB7CiAgICAgICAgZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uIChlbnRyeSkgewogICAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7CiAgICAgICAgICAgIF90aGlzMi5hY3RpdmVOYW1lID0gZW50cnkudGFyZ2V0LmRhdGFzZXQubmFtZTsKICAgICAgICAgICAgX3RoaXMyLnNldE5hdkJhcldpZHRoKGVudHJ5LnRhcmdldC5kYXRhc2V0Lm5hbWUpOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICB9LCB7CiAgICAgICAgcm9vdDogbnVsbCwKICAgICAgICAvLyDpu5jorqTkuLrop4blj6MKICAgICAgICByb290TWFyZ2luOiAnMHB4JywKICAgICAgICAvLyDmoLnlhYPntKDnmoTovrnot50KICAgICAgICB0aHJlc2hvbGQ6IDAuMyAvLyDlvZMgNTAlIOeahOWFg+e0oOi/m+WFpeinhuWPo+aXtuinpuWPkQogICAgICB9KTsKICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0YXJnZXQpOwogICAgICBvYnNlcnZlci5vYnNlcnZlKHRhcmdldDEpOwogICAgICBvYnNlcnZlci5vYnNlcnZlKHRhcmdldDIpOwogICAgfSwKICAgIGRpY3Rpb25hcnlFc2NhcGU6IGRpY3Rpb25hcnlFc2NhcGUsCiAgICBzaXRlQ2hhbmdlOiBmdW5jdGlvbiBzaXRlQ2hhbmdlKGUsIHR5cGUpIHsKICAgICAgdmFyIHNpdGVJbmZvID0gdGhpcy5hbG9uZ1JvdXRlSW5mb0RhdGEuZmluZChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIHJldHVybiBpdGVtLmlkID09PSBlOwogICAgICB9KTsKICAgICAgdGhpcy5hZGRFZGl0Rm9ybVsiIi5jb25jYXQodHlwZSwgIk5hbWUiKV0gPSBzaXRlSW5mby5uYW1lOwogICAgfSwKICAgIHNlbmRSZXNjdWVJbmZvOiBmdW5jdGlvbiBzZW5kUmVzY3VlSW5mbyhkYXRhKSB7CiAgICAgIC8vIHRoaXMuY2hhbmdlUGFnZSgnVGFibGVQYWdlJywgJ2VkaXQnKQogICAgICBjb25zb2xlLmxvZyhkYXRhKTsKICAgICAgdGhpcy50YWJsZURhdGEucHVzaChkYXRhKTsKICAgIH0sCiAgICBnZXREaWN0aW9uYXJ5QnlDb2RlOiBnZXREaWN0aW9uYXJ5QnlDb2RlLAogICAgLy8g6Lev5q615pWw5o2u5p+l6K+iCiAgICBnZXRSb2FkT3B0aW9uczogZnVuY3Rpb24gZ2V0Um9hZE9wdGlvbnMoKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7CiAgICAgICAgdmFyIF95aWVsZCRyb2FkU2VjdGlvbkluZiwgX3lpZWxkJHJvYWRTZWN0aW9uSW5mMiwgcm93czsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMjsKICAgICAgICAgICAgICByZXR1cm4gcm9hZFNlY3Rpb25JbmZvSW50ZXIoewogICAgICAgICAgICAgICAgcGFnZUJlYW46IHsKICAgICAgICAgICAgICAgICAgcGFnZVNpemU6IC0xCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBfeWllbGQkcm9hZFNlY3Rpb25JbmYgPSBfY29udGV4dC5zZW50OwogICAgICAgICAgICAgIF95aWVsZCRyb2FkU2VjdGlvbkluZjIgPSBfeWllbGQkcm9hZFNlY3Rpb25JbmYucm93czsKICAgICAgICAgICAgICByb3dzID0gX3lpZWxkJHJvYWRTZWN0aW9uSW5mMiA9PT0gdm9pZCAwID8gW10gOiBfeWllbGQkcm9hZFNlY3Rpb25JbmYyOwogICAgICAgICAgICAgIF90aGlzMy5yb2FkT3B0aW9ucyA9IHJvd3MubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICBpdGVtLnJvYWROYW1lID0gaXRlbS5uYW1lICsgJyAnICsgaXRlbS5jb2RlOwogICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgY29uc29sZS5sb2coIV90aGlzMy5pZCk7CiAgICAgICAgICAgICAgaWYgKCFfdGhpczMuaWQpIHsKICAgICAgICAgICAgICAgIF90aGlzMy4kc2V0KF90aGlzMy5hZGRFZGl0Rm9ybSwgJ3JvYWRJZCcsIF90aGlzMy5yb2FkT3B0aW9uc1swXS5pZCk7CiAgICAgICAgICAgICAgICBfdGhpczMucm9hZENoYW5nZShfdGhpczMucm9hZE9wdGlvbnNbMF0uaWQpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOi3r+autemAieaLqeWPmOWMlgogICAgcm9hZENoYW5nZTogZnVuY3Rpb24gcm9hZENoYW5nZSh2YWx1ZSkgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMigpIHsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX3RoaXM0LmdldFRlYW1EYXRhKHZhbHVlKTsKICAgICAgICAgICAgICAvLyDpgJrov4fot6/mrrXkv6Hmga/ojrflj5bmsr/nur/orr7lpIfkv6Hmga8KICAgICAgICAgICAgICBfdGhpczQuZ2V0QWxvbmdSb3V0ZUluZm8odmFsdWUsIGZ1bmN0aW9uIChkYXRhKSB7CiAgICAgICAgICAgICAgICB2YXIgX3RoaXM0JGFkZEVkaXRGb3JtID0gX3RoaXM0LmFkZEVkaXRGb3JtLAogICAgICAgICAgICAgICAgICBzdGFydFBhdHJvbElkID0gX3RoaXM0JGFkZEVkaXRGb3JtLnN0YXJ0UGF0cm9sSWQsCiAgICAgICAgICAgICAgICAgIGVuZFBhdHJvbElkID0gX3RoaXM0JGFkZEVkaXRGb3JtLmVuZFBhdHJvbElkOwoKICAgICAgICAgICAgICAgIC8qDQogICAgICAgICAgICAgICAgKiDlt6Hmo4DlvIDlp4vvvIznu5PmnZ/nq5kNCiAgICAgICAgICAgICAgICAqICovCiAgICAgICAgICAgICAgICBpZiAoc3RhcnRQYXRyb2xJZCkgewogICAgICAgICAgICAgICAgICBpZiAoIWRhdGEuc29tZShmdW5jdGlvbiAoaSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmlkID09PSBzdGFydFBhdHJvbElkOwogICAgICAgICAgICAgICAgICB9KSkgewogICAgICAgICAgICAgICAgICAgIF90aGlzNC5hZGRFZGl0Rm9ybS5zdGFydFBhdHJvbElkID0gJyc7CiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoXykgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNC4kbWVzc2FnZS53YXJuaW5nKCfor7fph43mlrDpgInmi6nlt6Hmo4DlvIDlp4vnq5kuLicpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZW5kUGF0cm9sSWQpIHsKICAgICAgICAgICAgICAgICAgaWYgKCFkYXRhLnNvbWUoZnVuY3Rpb24gKGkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaS5pZCA9PT0gZW5kUGF0cm9sSWQ7CiAgICAgICAgICAgICAgICAgIH0pKSB7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM0LmFkZEVkaXRGb3JtLmVuZFBhdHJvbElkID0gJyc7CiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoXykgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNC4kbWVzc2FnZS53YXJuaW5nKCfor7fph43mlrDpgInmi6nlt6Hmo4Dnu5PmnZ/nq5kuLicpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMik7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOmAmui/h+i3r+auteS/oeaBr+iOt+WPluayv+e6v+iuvuWkh+S/oeaBrwogICAgZ2V0QWxvbmdSb3V0ZUluZm86IGZ1bmN0aW9uIGdldEFsb25nUm91dGVJbmZvKHZhbHVlLCBjYWxsYmFjaykgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMygpIHsKICAgICAgICB2YXIgX3dpcGVEYXRhLCBfeWllbGQkYWxvbmdSb3V0ZUluZm8sIF95aWVsZCRhbG9uZ1JvdXRlSW5mbzIsIHJvd3M7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF93aXBlRGF0YSA9IGZ1bmN0aW9uIF93aXBlRGF0YSgpIHsKICAgICAgICAgICAgICAgIF90aGlzNS5hbG9uZ1JvdXRlSW5mb0RhdGEgPSBbXTsKICAgICAgICAgICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKF90aGlzNS5hbG9uZ1JvdXRlSW5mb0RhdGEpOwogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSAxOwogICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gNDsKICAgICAgICAgICAgICByZXR1cm4gYWxvbmdSb3V0ZUluZm9JbnRlcihyZWZpbmVSZXF1ZXN0Qm9keSh7CiAgICAgICAgICAgICAgICBxdWVyeXM6IFt7CiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogJ0lOJywKICAgICAgICAgICAgICAgICAgcHJvcGVydHk6ICdyb2FkX3NlZ21lbnRfaWRfJywKICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlCiAgICAgICAgICAgICAgICB9XQogICAgICAgICAgICAgIH0pLCAnYWRkRWRpdCcpOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgX3lpZWxkJGFsb25nUm91dGVJbmZvID0gX2NvbnRleHQzLnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJGFsb25nUm91dGVJbmZvMiA9IF95aWVsZCRhbG9uZ1JvdXRlSW5mby5yb3dzOwogICAgICAgICAgICAgIHJvd3MgPSBfeWllbGQkYWxvbmdSb3V0ZUluZm8yID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCRhbG9uZ1JvdXRlSW5mbzI7CiAgICAgICAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2socm93cyk7CiAgICAgICAgICAgICAgX3RoaXM1LmFsb25nUm91dGVJbmZvRGF0YSA9IHJvd3M7CiAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAxNDsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICBfY29udGV4dDMucHJldiA9IDExOwogICAgICAgICAgICAgIF9jb250ZXh0My50MCA9IF9jb250ZXh0M1siY2F0Y2giXSgxKTsKICAgICAgICAgICAgICAvLyDkuI3kuLror7fmsYLov4flv6vnu5PmnZ/nmoTmg4XlhrXkuIvvvIzph43nva4KICAgICAgICAgICAgICBpZiAoX2NvbnRleHQzLnQwLm1lc3NhZ2UgIT09ICdjYW5jZWxlZCcpIF93aXBlRGF0YSgpOwogICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUzLCBudWxsLCBbWzEsIDExXV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDpgJrov4fot6/mrrXkv6Hmga/ojrflj5blt6Hmn6XmlZHmj7TpmJ/kvI3kv6Hmga8KICAgIGdldFRlYW1EYXRhOiBmdW5jdGlvbiBnZXRUZWFtRGF0YSh2YWx1ZSkgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNCgpIHsKICAgICAgICB2YXIgX3lpZWxkJHRlYW1EYXRhLCBfeWllbGQkdGVhbURhdGEkcm93cywgcm93czsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTQkKF9jb250ZXh0NCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ0LnByZXYgPSBfY29udGV4dDQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiB0ZWFtRGF0YShyZWZpbmVSZXF1ZXN0Qm9keSh7CiAgICAgICAgICAgICAgICBxdWVyeXM6IFt7CiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogJ0lOJywKICAgICAgICAgICAgICAgICAgcHJvcGVydHk6ICdyLmlkXycsCiAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZQogICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICBvcGVyYXRpb246ICdFUVVBTCcsCiAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAndC50eXBlXycsCiAgICAgICAgICAgICAgICAgIHZhbHVlOiAnMScKICAgICAgICAgICAgICAgIH1dCiAgICAgICAgICAgICAgfSksICdhZGRFZGl0Jyk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBfeWllbGQkdGVhbURhdGEgPSBfY29udGV4dDQuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkdGVhbURhdGEkcm93cyA9IF95aWVsZCR0ZWFtRGF0YS5yb3dzOwogICAgICAgICAgICAgIHJvd3MgPSBfeWllbGQkdGVhbURhdGEkcm93cyA9PT0gdm9pZCAwID8gW10gOiBfeWllbGQkdGVhbURhdGEkcm93czsKICAgICAgICAgICAgICBfdGhpczYudGVhbU9wdGlvbnMgPSByb3dzOwogICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTQpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDojrflj5blhazlj7jmoJEKICAgIGdldE9yZ1RyZWVEYXRhOiBmdW5jdGlvbiBnZXRPcmdUcmVlRGF0YSgpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTUoKSB7CiAgICAgICAgdmFyIGRhdGE7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU1JChfY29udGV4dDUpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NS5wcmV2ID0gX2NvbnRleHQ1Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gMjsKICAgICAgICAgICAgICByZXR1cm4gb3JnVHJlZSgpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgZGF0YSA9IF9jb250ZXh0NS5zZW50OwogICAgICAgICAgICAgIF90aGlzNy50ZWFtVHJlZURhdGEgPSBkYXRhOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NS5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTUpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDpmJ/kvI3pgInmi6kKICAgIHRlYW1JZENoYW5nZTogZnVuY3Rpb24gdGVhbUlkQ2hhbmdlKHR5cGUpIHsKICAgICAgdmFyIF90aGlzJCRyZWZzLCBfdGhpcyQkcmVmczI7CiAgICAgIHRoaXNbdHlwZV0udGVhbUZ1bGxJZCA9ICgoX3RoaXMkJHJlZnMgPSB0aGlzLiRyZWZzWyIiLmNvbmNhdCh0eXBlLCAiQ2FzY2FkZXIiKV0pID09PSBudWxsIHx8IF90aGlzJCRyZWZzID09PSB2b2lkIDAgfHwgKF90aGlzJCRyZWZzID0gX3RoaXMkJHJlZnMuZ2V0Q2hlY2tlZE5vZGVzKClbMF0pID09PSBudWxsIHx8IF90aGlzJCRyZWZzID09PSB2b2lkIDAgfHwgKF90aGlzJCRyZWZzID0gX3RoaXMkJHJlZnMuZGF0YSkgPT09IG51bGwgfHwgX3RoaXMkJHJlZnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJCRyZWZzLnBhdGgpIHx8ICcnOwogICAgICB0aGlzW3R5cGVdLnRlYW1JZCA9ICgoX3RoaXMkJHJlZnMyID0gdGhpcy4kcmVmc1siIi5jb25jYXQodHlwZSwgIkNhc2NhZGVyIildKSA9PT0gbnVsbCB8fCBfdGhpcyQkcmVmczIgPT09IHZvaWQgMCB8fCAoX3RoaXMkJHJlZnMyID0gX3RoaXMkJHJlZnMyLmdldENoZWNrZWROb2RlcygpWzBdKSA9PT0gbnVsbCB8fCBfdGhpcyQkcmVmczIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJCRyZWZzMi52YWx1ZSkgfHwgJyc7CiAgICB9LAogICAgLy8g5Zyw5Zu+5oyC6L295ZCOCiAgICBtYXBMb2FkOiBmdW5jdGlvbiBtYXBMb2FkKG1hcCkgewogICAgICB2YXIgX3RoaXM4ID0gdGhpczsKICAgICAgdGhpcy5tYXBMb2FkaW5nID0gZmFsc2U7CiAgICAgIG1hcC5vbignY2xpY2snLCBmdW5jdGlvbiAoX3JlZikgewogICAgICAgIHZhciBsbmdMYXQgPSBfcmVmLmxuZ0xhdDsKICAgICAgICB2YXIgbG5nID0gbG5nTGF0LmxuZywKICAgICAgICAgIGxhdCA9IGxuZ0xhdC5sYXQ7CiAgICAgICAgX3RoaXM4LmFkZEVkaXRGb3JtID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBfdGhpczguYWRkRWRpdEZvcm0pLCB7fSwgewogICAgICAgICAgbG5nOiBsbmcsCiAgICAgICAgICBsYXQ6IGxhdAogICAgICAgIH0pOwogICAgICAgIF90aGlzOC5jdXN0b21UYWdQb2ludHMoW2xuZywgbGF0XSk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOiHquWumuS5ieagh+iusOeCuQogICAgY3VzdG9tVGFnUG9pbnRzOiBmdW5jdGlvbiBjdXN0b21UYWdQb2ludHMoKSB7CiAgICAgIHZhciBfdGhpcyRtYXJrZXJzLAogICAgICAgIF90aGlzOSA9IHRoaXM7CiAgICAgIHZhciBsbmdsYXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IFtdOwogICAgICAoX3RoaXMkbWFya2VycyA9IHRoaXMubWFya2Vyc1t0aGlzLm1hcmtlcnMubGVuZ3RoIC0gMV0pID09PSBudWxsIHx8IF90aGlzJG1hcmtlcnMgPT09IHZvaWQgMCB8fCBfdGhpcyRtYXJrZXJzLnJlbW92ZSgpOwogICAgICAvLyDoh6rlrprkuYnngrnmoIforrDnmoTlhoXpg6hET03lhYPntKAKICAgICAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgIGVsLmNsYXNzTmFtZSA9ICdtYXJrZXItdGlwJzsKICAgICAgLy8gTWFya2Vy5p6E6YCg5Ye95pWw5o6l5pS25Lik5Liq5Y+C5pWw77yM5LiA5Liq5Li66Ieq5a6a5LmJ55qERE9N5YWD57Sg77yM5LiA5Liq5pivT2JqZWN05Y+C5pWw77yM5YW25Lit5YyF5ous5YGP56e76YeP562JCiAgICAgIHZhciBtYXJrZXIgPSBuZXcgdGhpcy4kcmVmcy5taW5lTWFwLm1pbmVNYXAuTWFya2VyKGVsLCB7CiAgICAgICAgZHJhZ2dhYmxlOiB0cnVlLAogICAgICAgIGFuY2hvcjogJ2NlbnRlcicsCiAgICAgICAgb2Zmc2V0OiBbMCwgMF0gLy8gb2Zmc2V05Y+C5pWw5Li65qCH5rOo54K555u45a+55LqO5YW25bem5LiK6KeS5YGP56e75YOP57Sg5aSn5bCPCiAgICAgIH0pCiAgICAgIC8vIOiwg+eUqHNldExuZ0xhdOaWueazleaMh+Wumk1hcmtlcueahOWdkOagh+S9jee9rgogICAgICAuc2V0TG5nTGF0KGxuZ2xhdCkuYWRkVG8odGhpcy4kcmVmcy5taW5lTWFwLm1hcCkub24oJ2RyYWdlbmQnLCBmdW5jdGlvbiAoX3JlZjIpIHsKICAgICAgICB2YXIgdGFyZ2V0ID0gX3JlZjIudGFyZ2V0OwogICAgICAgIHZhciBfdGFyZ2V0JGdldExuZ0xhdCA9IHRhcmdldC5nZXRMbmdMYXQoKSwKICAgICAgICAgIGxuZyA9IF90YXJnZXQkZ2V0TG5nTGF0LmxuZywKICAgICAgICAgIGxhdCA9IF90YXJnZXQkZ2V0TG5nTGF0LmxhdDsKICAgICAgICBfdGhpczkuYWRkRWRpdEZvcm0gPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIF90aGlzOS5hZGRFZGl0Rm9ybSksIHt9LCB7CiAgICAgICAgICBsbmc6IGxuZywKICAgICAgICAgIGxhdDogbGF0CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgICB0aGlzLiRyZWZzLm1pbmVNYXAubWFwLnNldENlbnRlcihsbmdsYXQpOwogICAgICB0aGlzLm1hcmtlcnMucHVzaChtYXJrZXIpOwogICAgfSwKICAgIC8vIOS/ruaUuee7j+e6rOW6puabtOaWsOWcsOWbvuagh+eCuQogICAgdXBkYXRlUG9pbnQ6IGZ1bmN0aW9uIHVwZGF0ZVBvaW50KGUpIHsKICAgICAgdmFyIF90aGlzJGFkZEVkaXRGb3JtID0gdGhpcy5hZGRFZGl0Rm9ybSwKICAgICAgICBsbmcgPSBfdGhpcyRhZGRFZGl0Rm9ybS5sbmcsCiAgICAgICAgbGF0ID0gX3RoaXMkYWRkRWRpdEZvcm0ubGF0OwogICAgICB0aGlzLmN1c3RvbVRhZ1BvaW50cyhbbG5nLCBsYXRdKTsKICAgIH0sCiAgICAvLyDmiZPlvIDpobXpnaLmiafooYwKICAgIG9wZW5QYWdlOiBmdW5jdGlvbiBvcGVuUGFnZSgpIHsKICAgICAgdGhpcy5nZXRSb2FkT3B0aW9ucygpOwogICAgICAvLyBpZiAoIXRoaXMudGVhbVRyZWVEYXRhLmxlbmd0aCkgdGhpcy5nZXRPcmdUcmVlRGF0YSgpCiAgICAgIC8vIHRoaXMuJHJlZnMubWluZU1hcD8ubWFwPy5yZXNpemUoKQogICAgfSwKICAgIC8vIOWxleekuuW8ueWxggogICAgc2hvd0RpYWxvZzogZnVuY3Rpb24gc2hvd0RpYWxvZyhkaWFsb2dOYW1lKSB7CiAgICAgIGlmICghZGlhbG9nTmFtZSkgcmV0dXJuOwogICAgICB0aGlzW2RpYWxvZ05hbWUgKyAnRGlhbG9nJ10gPSB0cnVlOwogICAgfSwKICAgIHNob3dBcHBvaW50RGlhbG9nOiBmdW5jdGlvbiBzaG93QXBwb2ludERpYWxvZygpIHsKICAgICAgdmFyIF90aGlzMTAgPSB0aGlzOwogICAgICB0aGlzLiRyZWZzLmFkZEVkaXRGb3JtLnZhbGlkYXRlKC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9yZWYzID0gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU2KHZhbGlkLCBvYmplY3QpIHsKICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNiQoX2NvbnRleHQ2KSB7CiAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Ni5wcmV2ID0gX2NvbnRleHQ2Lm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBpZiAoIXZhbGlkKSB7CiAgICAgICAgICAgICAgICAgIF90aGlzMTAuJG1lc3NhZ2Uud2FybmluZygiXHU2NzA5Ii5jb25jYXQoT2JqZWN0LmtleXMob2JqZWN0KS5sZW5ndGgsICJcdTRFMkFcdTVCNTdcdTZCQjVcdTY3MkFcdTkwMUFcdThGQzdcdTY4MjFcdTlBOENcdUZGMENcdThCRjdcdTZCNjNcdTc4NkVcdTU4NkJcdTUxOTlcdTg4NjhcdTUzNTVcdTUxODVcdTVCQjlcdTMwMDIiKSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBfdGhpczEwLmFwcG9pbnREaWFsb2cgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ni5zdG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sIF9jYWxsZWU2KTsKICAgICAgICB9KSk7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeCwgX3gyKSB7CiAgICAgICAgICByZXR1cm4gX3JlZjMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICB9OwogICAgICB9KCkpOwogICAgfSwKICAgIG9mZlBhZ2U6IGZ1bmN0aW9uIG9mZlBhZ2UoKSB7CiAgICAgIHRoaXMuY2hhbmdlUGFnZSgnVGFibGVQYWdlJywgJ2VkaXQnKTsKICAgIH0sCiAgICAvLyDlhbPpl63pobXpnaLmiafooYwKICAgIGNsb3NlUGFnZTogZnVuY3Rpb24gY2xvc2VQYWdlKCkgewogICAgICB2YXIgX3RoaXMxMSA9IHRoaXM7CiAgICAgIHZhciBwdWJTdWIgPSB0aGlzLnB1YlN1YiwKICAgICAgICBhZGRFZGl0UnVsZXMgPSB0aGlzLmFkZEVkaXRSdWxlcywKICAgICAgICByb2FkT3B0aW9ucyA9IHRoaXMucm9hZE9wdGlvbnM7CiAgICAgIC8vIOmHjee9rue7hOS7tuaVsOaNrgogICAgICBPYmplY3QuYXNzaWduKHRoaXMuJGRhdGEsIHRoaXMuJG9wdGlvbnMuZGF0YS5jYWxsKHRoaXMpLCB7CiAgICAgICAgcHViU3ViOiBwdWJTdWIsCiAgICAgICAgYWRkRWRpdFJ1bGVzOiBhZGRFZGl0UnVsZXMsCiAgICAgICAgcm9hZE9wdGlvbnM6IHJvYWRPcHRpb25zCiAgICAgIH0pOwogICAgICAvLyB0aGlzLiRyZWZzLm1pbmVNYXA/LnJlc2V0TWFwKF8gPT4gdGhpcy5tYXBMb2FkaW5nID0gZmFsc2UpIC8vIOmHjee9ruWcsOWbvgogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoXykgewogICAgICAgIF90aGlzMTEuJHJlZnMuYWRkRWRpdEZvcm0uJGVsLnNjcm9sbFRvcCA9IDA7CiAgICAgICAgX3RoaXMxMS4kcmVmcy5hZGRFZGl0Rm9ybS5jbGVhclZhbGlkYXRlKCk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOiOt+WPluivpuaDhQogICAgZ2V0RGV0YWlsOiBmdW5jdGlvbiBnZXREZXRhaWwoaWQpIHsKICAgICAgdmFyIF90aGlzMTIgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU3KCkgewogICAgICAgIHZhciBfdGhpczEyJGFkZEVkaXRGb3JtLCBfdGhpczEyJGFkZEVkaXRGb3JtJHIsIHJvYWRJZCwgX3RoaXMxMiRhZGRFZGl0Rm9ybSRwLCBwZWdTVmFsLCBfdGhpczEyJGFkZEVkaXRGb3JtJHAyLCBwZWdFVmFsLCBzdGFydFBlZ0FyciwgZW5kUGVnQXJyOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNyQoX2NvbnRleHQ3KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDcucHJldiA9IF9jb250ZXh0Ny5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDcucHJldiA9IDA7CiAgICAgICAgICAgICAgX2NvbnRleHQ3Lm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiB0YWJsZURldGFpbChpZCk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICBfdGhpczEyLmFkZEVkaXRGb3JtID0gX2NvbnRleHQ3LnNlbnQ7CiAgICAgICAgICAgICAgX3RoaXMxMiRhZGRFZGl0Rm9ybSA9IF90aGlzMTIuYWRkRWRpdEZvcm0sIF90aGlzMTIkYWRkRWRpdEZvcm0kciA9IF90aGlzMTIkYWRkRWRpdEZvcm0ucm9hZElkLCByb2FkSWQgPSBfdGhpczEyJGFkZEVkaXRGb3JtJHIgPT09IHZvaWQgMCA/ICcnIDogX3RoaXMxMiRhZGRFZGl0Rm9ybSRyLCBfdGhpczEyJGFkZEVkaXRGb3JtJHAgPSBfdGhpczEyJGFkZEVkaXRGb3JtLnBlZ1NWYWwsIHBlZ1NWYWwgPSBfdGhpczEyJGFkZEVkaXRGb3JtJHAgPT09IHZvaWQgMCA/ICcnIDogX3RoaXMxMiRhZGRFZGl0Rm9ybSRwLCBfdGhpczEyJGFkZEVkaXRGb3JtJHAyID0gX3RoaXMxMiRhZGRFZGl0Rm9ybS5wZWdFVmFsLCBwZWdFVmFsID0gX3RoaXMxMiRhZGRFZGl0Rm9ybSRwMiA9PT0gdm9pZCAwID8gJycgOiBfdGhpczEyJGFkZEVkaXRGb3JtJHAyOwogICAgICAgICAgICAgIGlmIChwZWdTVmFsKSB7CiAgICAgICAgICAgICAgICBzdGFydFBlZ0FyciA9IHBlZ1NWYWwuc3BsaXQoJysnKTsKICAgICAgICAgICAgICAgIF90aGlzMTIuYWRkRWRpdEZvcm0uc3RhcnRQZWcgPSBzdGFydFBlZ0FyclswXS5zbGljZSgxKTsKICAgICAgICAgICAgICAgIF90aGlzMTIuYWRkRWRpdEZvcm0uc3RhcnRQZWdBZGQgPSBzdGFydFBlZ0FyclsxXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKHBlZ0VWYWwpIHsKICAgICAgICAgICAgICAgIGVuZFBlZ0FyciA9IHBlZ0VWYWwuc3BsaXQoJysnKTsKICAgICAgICAgICAgICAgIF90aGlzMTIuYWRkRWRpdEZvcm0uZW5kUGVnID0gZW5kUGVnQXJyWzBdLnNsaWNlKDEpOwogICAgICAgICAgICAgICAgX3RoaXMxMi5hZGRFZGl0Rm9ybS5lbmRQZWdBZGQgPSBlbmRQZWdBcnJbMV07CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF90aGlzMTIucm9hZENoYW5nZShyb2FkSWQpOwogICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgX2NvbnRleHQ3LnByZXYgPSA4OwogICAgICAgICAgICAgIF90aGlzMTIuZm9ybUxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ3LmZpbmlzaCg4KTsKICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ3LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNywgbnVsbCwgW1swLCwgOCwgMTFdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOS/neWtmAogICAgaGFuZGxlU2F2ZTogZnVuY3Rpb24gaGFuZGxlU2F2ZSgpIHsKICAgICAgdmFyIF90aGlzMTMgPSB0aGlzOwogICAgICB0aGlzLiRyZWZzLmFkZEVkaXRGb3JtLnZhbGlkYXRlKC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9yZWY0ID0gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU4KHZhbGlkLCBvYmplY3QpIHsKICAgICAgICAgIHZhciBkYXRhLCByb2FkSW5mbywgbXlJbnRlckZhY2U7CiAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTgkKF9jb250ZXh0OCkgewogICAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDgucHJldiA9IF9jb250ZXh0OC5uZXh0KSB7CiAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgaWYgKCF2YWxpZCkgewogICAgICAgICAgICAgICAgICBfdGhpczEzLiRtZXNzYWdlLndhcm5pbmcoIlx1NjcwOSIuY29uY2F0KE9iamVjdC5rZXlzKG9iamVjdCkubGVuZ3RoLCAiXHU0RTJBXHU1QjU3XHU2QkI1XHU2NzJBXHU5MDFBXHU4RkM3XHU2ODIxXHU5QThDXHVGRjBDXHU4QkY3XHU2QjYzXHU3ODZFXHU1ODZCXHU1MTk5XHU4ODY4XHU1MzU1XHU1MTg1XHU1QkI5XHUzMDAyIikpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgX3RoaXMxMy5zYXZlTG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KF90aGlzMTMuYWRkRWRpdEZvcm0pKTsKICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhcnRQZWcgJiYgZGF0YS5zdGFydFBlZ0FkZCkgewogICAgICAgICAgICAgICAgICAgIGRhdGEucGVnU1ZhbCA9ICdrJyArIChkYXRhLnN0YXJ0UGVnIHx8ICcnKSArICcrJyArIChkYXRhLnN0YXJ0UGVnQWRkIHx8ICcnKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoZGF0YS5lbmRQZWcgJiYgZGF0YS5lbmRQZWdBZGQpIHsKICAgICAgICAgICAgICAgICAgICBkYXRhLnBlZ0VWYWwgPSAnaycgKyAoZGF0YS5lbmRQZWcgfHwgJycpICsgJysnICsgKGRhdGEuZW5kUGVnQWRkIHx8ICcnKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBkYXRhLmV2ZW50VGltZSA9IG1vbWVudChkYXRhLmV2ZW50VGltZSkuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tOnNzJyk7CiAgICAgICAgICAgICAgICAgIHJvYWRJbmZvID0gX3RoaXMxMy5yb2FkT3B0aW9ucy5maW5kKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uaWQgPT09IGRhdGEucm9hZElkOwogICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgZGF0YS5yb2FkTmFtZSA9IHJvYWRJbmZvLm5hbWU7CiAgICAgICAgICAgICAgICAgIGRhdGEucm9hZENvZGUgPSByb2FkSW5mby5jb2RlOwogICAgICAgICAgICAgICAgICBteUludGVyRmFjZSA9IF90aGlzMTMuaWQgPyB0YWJsZUVkaXQgOiB0YWJsZUFkZDsKICAgICAgICAgICAgICAgICAgX3RoaXMxMy4kcm91dGVyLnB1c2goewogICAgICAgICAgICAgICAgICAgIHBhdGg6ICcvZnZ1ZS9wbGF0TGF5b3V0L3BhdHJvbEFuZFJlc2N1ZS9jb21tYW5kRGlzcGF0Y2gvRXZlbnRNYW5hZ2VtZW50JwogICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgLy8gdHJ5IHsKICAgICAgICAgICAgICAgICAgLy8gICBsZXQgeyBzdGF0ZSwgbWVzc2FnZSwgdmFsdWUgfSA9IGF3YWl0IG15SW50ZXJGYWNlKGRhdGEpCiAgICAgICAgICAgICAgICAgIC8vICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICAgIC8vICAgICBtZXNzYWdlID0gdGhpcy5pZCA/ICfnvJbovpEnIDogJ+aWsOWinicKICAgICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcyhg5L+d5a2Y5oiQ5YqfYCkKICAgICAgICAgICAgICAgICAgLy8gICAgIC8vIHRoaXMuY2hhbmdlUGFnZSgKICAgICAgICAgICAgICAgICAgLy8gICAgIC8vICAgJ1RhYmxlUGFnZScsCiAgICAgICAgICAgICAgICAgIC8vICAgICAvLyAgIHRoaXMuaWQgPyAnZWRpdCcgOiAnYWRkJwogICAgICAgICAgICAgICAgICAvLyAgICAgLy8gKQogICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy4kcm91dGVyLnB1c2goewogICAgICAgICAgICAgICAgICAvLyAgICAgICBwYXRoOiAnL2Z2dWUvcGxhdExheW91dC9wYXRyb2xBbmRSZXNjdWUvY29tbWFuZERpc3BhdGNoL0V2ZW50TWFuYWdlbWVudCcKICAgICAgICAgICAgICAgICAgLy8gICAgIH0pCiAgICAgICAgICAgICAgICAgIC8vICAgfQogICAgICAgICAgICAgICAgICAvLyB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAvLyAgIHRoaXMuc2F2ZUxvYWRpbmcgPSBmYWxzZQogICAgICAgICAgICAgICAgICAvLyB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ4LnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZTgpOwogICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94MywgX3g0KSB7CiAgICAgICAgICByZXR1cm4gX3JlZjQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICB9OwogICAgICB9KCkpOwogICAgfSwKICAgIC8vIOaUueWPmOmhtemdogogICAgY2hhbmdlUGFnZTogZnVuY3Rpb24gY2hhbmdlUGFnZSgpIHsKICAgICAgdmFyIHBhZ2VOYW1lID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAnJzsKICAgICAgdmFyIHR5cGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6ICcnOwogICAgICBpZiAoIXBhZ2VOYW1lKSByZXR1cm47CiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZVBhZ2UnLCBwYWdlTmFtZSwgZnVuY3Rpb24gKF8pIHsKICAgICAgICBQdWJTdWIucHVibGlzaChwYWdlTmFtZSwgewogICAgICAgICAgdHlwZTogdHlwZQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0KICB9LAogIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7CiAgICAvLyDlnKjnu4Tku7bplIDmr4HkuYvliY0g5riF6Zmk6K6i6ZiF5raI5oGvCiAgICBQdWJTdWIudW5zdWJzY3JpYmUodGhpcy5wdWJTdWIpOwogIH0KfTs="},null]}