{"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\\components\\SuperTableSelectorDialog\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\components\\SuperTableSelectorDialog\\index.vue","mtime":1741314105065},{"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:aW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS94Y2p5LWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5LmpzIjsKaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmlsdGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZpbmQtaW5kZXguanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5mbGF0LW1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmpvaW4uanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkucmVkdWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc3BsaWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkudW5zY29wYWJsZXMuZmxhdC1tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmV2ZXJ5LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZmlsdGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZmluZC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmZsYXQtbWFwLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5yZWR1Y2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5zb21lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMubnVtYmVyLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuZm9yLWVhY2guanMiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwoKaW1wb3J0IFN1cGVyRGlhbG9nIGZyb20gJ0AvY29tcG9uZW50cy9TdXBlckRpYWxvZy9pbmRleC52dWUnOwppbXBvcnQgdHJlZVNpZGUgZnJvbSAnQC9jb21wb25lbnRzL3RyZWVTaWRlL2luZGV4LnZ1ZSc7CmltcG9ydCB7IHNldFF1ZXJ5VmFsdWUgfSBmcm9tICdAL3V0aWxzL3JlcXVlc3RXcmFwcGVycyc7CmltcG9ydCBTZWFyY2hDb21tb24gZnJvbSAnQC9jb21wb25lbnRzL1NlYXJjaENvbW1vbi9pbmRleC52dWUnOwppbXBvcnQgcGFnaW5hdGlvbiBmcm9tICdAL2NvbXBvbmVudHMvU3VwZXJQYWdpbmF0aW9uL2luZGV4LnZ1ZSc7CmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7CmltcG9ydCB7IFRhYmxlTWl4aW4gfSBmcm9tICdAL21peGlucy90YWJsZU1peGluJzsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICdTdXBlclRhYmxlU2VsZWN0b3JEaWFsb2cnLAogIGluaGVyaXRBdHRyczogZmFsc2UsCiAgbWl4aW5zOiBbVGFibGVNaXhpbl0sCiAgcHJvcHM6IHsKICAgIGlzU2hvdzogewogICAgICBkZWZhdWx0OiBmYWxzZSwKICAgICAgdHlwZTogQm9vbGVhbgogICAgfSwKICAgIHNlbGVjdGVkQ29udGVudDogewogICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHsKICAgICAgICByZXR1cm4gW107CiAgICAgIH0sCiAgICAgIHR5cGU6IFtBcnJheSwgT2JqZWN0XQogICAgfSwKICAgIHRvcDogewogICAgICBkZWZhdWx0OiAnMTR2aCcsCiAgICAgIHR5cGU6IFN0cmluZwogICAgfSwKICAgIHdpZHRoOiB7CiAgICAgIGRlZmF1bHQ6ICc4MCUnLAogICAgICB0eXBlOiBTdHJpbmcKICAgIH0sCiAgICBoZWlnaHQ6IHsKICAgICAgZGVmYXVsdDogJzY1dmgnLAogICAgICB0eXBlOiBTdHJpbmcKICAgIH0sCiAgICBpc1Nob3dUcmVlOiB7CiAgICAgIGRlZmF1bHQ6IHRydWUsCiAgICAgIHR5cGU6IEJvb2xlYW4KICAgIH0sCiAgICB0cmVlT3B0aW9uczogewogICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgY2hpbGRyZW46ICdjaGlsZHJlbicsCiAgICAgICAgICBsYWJlbDogJ25hbWUnCiAgICAgICAgfTsKICAgICAgfSwKICAgICAgdHlwZTogT2JqZWN0CiAgICB9LAogICAgdHJlZVRhYkxpc3Q6IHsKICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7CiAgICAgICAgcmV0dXJuIFtdOwogICAgICB9LAogICAgICB0eXBlOiBBcnJheQogICAgfSwKICAgIHRyZWVBY3RpdmVUYWJOYW1lOiB7CiAgICAgIGRlZmF1bHQ6ICcnLAogICAgICB0eXBlOiBTdHJpbmcKICAgIH0sCiAgICB0cmVlTG9hZGluZzogewogICAgICBkZWZhdWx0OiBmYWxzZSwKICAgICAgdHlwZTogQm9vbGVhbgogICAgfSwKICAgIHRyZWVJdGVtOiB7CiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkgewogICAgICAgIHJldHVybiB7fTsKICAgICAgfSwKICAgICAgdHlwZTogT2JqZWN0CiAgICB9LAogICAgdGFibGVMb2FkaW5nOiB7CiAgICAgIGRlZmF1bHQ6IGZhbHNlLAogICAgICB0eXBlOiBCb29sZWFuCiAgICB9LAogICAgdGFibGVQYXJhbXM6IHsKICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIHBhZ2VCZWFuOiB7CiAgICAgICAgICAgIHBhZ2VTaXplOiAwLAogICAgICAgICAgICBwYWdlOiAwLAogICAgICAgICAgICB0b3RhbDogMAogICAgICAgICAgfSwKICAgICAgICAgIHF1ZXJ5czogW10sCiAgICAgICAgICBzb3J0ZXI6IFtdCiAgICAgICAgfTsKICAgICAgfSwKICAgICAgdHlwZTogT2JqZWN0CiAgICB9LAogICAgdGFibGVEYXRhOiB7CiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfSwKICAgICAgdHlwZTogQXJyYXkKICAgIH0sCiAgICB0cmVlRGF0YTogewogICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHsKICAgICAgICByZXR1cm4gW107CiAgICAgIH0sCiAgICAgIHR5cGU6IEFycmF5CiAgICB9LAogICAgc2VhcmNoT3B0aW9uOiB7CiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfSwKICAgICAgdHlwZTogQXJyYXkKICAgIH0sCiAgICB0YWJsZU9wdGlvbnM6IHsKICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7CiAgICAgICAgcmV0dXJuIFtdOwogICAgICB9LAogICAgICB0eXBlOiBBcnJheQogICAgfSwKICAgIHRyZWVLZXk6IHsKICAgICAgZGVmYXVsdDogJ2lkJywKICAgICAgdHlwZTogU3RyaW5nCiAgICB9LAogICAgc2VsZWN0S2V5OiB7CiAgICAgIGRlZmF1bHQ6ICdpZCcsCiAgICAgIHR5cGU6IFN0cmluZwogICAgfSwKICAgIHNlbGVjdExhYmVsOiB7CiAgICAgIGRlZmF1bHQ6ICduYW1lJywKICAgICAgdHlwZTogU3RyaW5nCiAgICB9LAogICAgc2VsZWN0VGl0bGVOYW1lOiB7CiAgICAgIGRlZmF1bHQ6ICflt7LpgInmi6knLAogICAgICB0eXBlOiBTdHJpbmcKICAgIH0sCiAgICB0cmVlVmFsdWVLZXk6IHsKICAgICAgZGVmYXVsdDogJycsCiAgICAgIHR5cGU6IFN0cmluZwogICAgfSwKICAgIGRlZmF1bHRUcmVlRXhwYW5kTGV2ZWw6IHsKICAgICAgZGVmYXVsdDogLTEsCiAgICAgIHR5cGU6IE51bWJlcgogICAgfSwKICAgIGlzU2luZ2xlQ2hvaWNlOiB7CiAgICAgIGRlZmF1bHQ6IGZhbHNlLAogICAgICB0eXBlOiBCb29sZWFuCiAgICB9LAogICAgaXNTaG93U2VsZWN0OiB7CiAgICAgIGRlZmF1bHQ6IHRydWUsCiAgICAgIHR5cGU6IEJvb2xlYW4KICAgIH0sCiAgICBpc1Nob3dUYWJsZUNoZWNrYm94OiB7CiAgICAgIGRlZmF1bHQ6IHRydWUsCiAgICAgIHR5cGU6IEJvb2xlYW4KICAgIH0sCiAgICBjb25maXJtQ2xvc2VEaWFsb2c6IHsKICAgICAgZGVmYXVsdDogdHJ1ZSwKICAgICAgdHlwZTogQm9vbGVhbgogICAgfSwKICAgIGlzU2hvd1BhZ2luYXRpb246IHsKICAgICAgZGVmYXVsdDogdHJ1ZSwKICAgICAgdHlwZTogQm9vbGVhbgogICAgfSwKICAgIGlzU2hvd1NlYXJjaDogewogICAgICBkZWZhdWx0OiB0cnVlLAogICAgICB0eXBlOiBCb29sZWFuCiAgICB9LAogICAgaXNTaG93QWRkQnV0dG9uOiB7CiAgICAgIGRlZmF1bHQ6IGZhbHNlLAogICAgICB0eXBlOiBCb29sZWFuCiAgICB9CiAgfSwKICBjb21wb25lbnRzOiB7CiAgICBwYWdpbmF0aW9uOiBwYWdpbmF0aW9uLAogICAgU2VhcmNoQ29tbW9uOiBTZWFyY2hDb21tb24sCiAgICB0cmVlU2lkZTogdHJlZVNpZGUsCiAgICBTdXBlckRpYWxvZzogU3VwZXJEaWFsb2cKICB9LAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICBpbml0aWFsaXplUmVuZGVyaW5nOiBmYWxzZSwKICAgICAgLy8g5by55bGC5YaF5a655Yid5aeL5YyW5riy5p+TCiAgICAgIHRhYmxlTWF4SGVpZ2h0OiAnNjAwcHgnLAogICAgICBlbmhhbmNlZFRhYmxlRGF0YTogW10sCiAgICAgIC8vIOWinuW8uueahOihqOagvOaVsOaNru+8iOWinuWKoOmineWklueJueaAp++8iQogICAgICBhbGxTZWxlY3Rpb246IFtdLAogICAgICAvLyDooajmoLzpgInkuK0KICAgICAgY2hlY2tib3hPcHQ6IFtdLAogICAgICAvLyDlpJrpgInmoYbphY3nva7mlbDnu4QKICAgICAgY2hlY2tib3hTZWxlY3Q6IFtdLAogICAgICAvLyDlpJrpgInmoYbpgInkuK0KICAgICAgY2hlY2tBbGw6IGZhbHNlLAogICAgICAvLyDlhajpgIkKICAgICAgdGFibGVDaGVja0FsbDogZmFsc2UsCiAgICAgIC8vIOihqOagvOWFqOmAiQogICAgICB0YWJsZUlzSW5kZXRlcm1pbmF0ZTogZmFsc2UsCiAgICAgIC8vIOihqOagvOWkmumAieahhuS4jeehruWumgogICAgICBpc0luZGV0ZXJtaW5hdGU6IGZhbHNlIC8vIOWkmumAieahhuS4jeehruWumgogICAgfTsKICB9LAogIGNvbXB1dGVkOiB7CiAgICBpc1Nob3dEaWFsb2c6IHsKICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuaXNTaG93OwogICAgICB9LAogICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWwpIHsKICAgICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6aXNTaG93JywgdmFsKTsKICAgICAgfQogICAgfQogIH0sCiAgd2F0Y2g6IHsKICAgIHRyZWVEYXRhOiB7CiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoKSB7CiAgICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgICBpZiAoIXRoaXMuaXNTaG93VHJlZSkgcmV0dXJuOwogICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgICB2YXIgX3RoaXMkJHJlZnMkdHJlZVNpZGUsIF90aGlzJHRyZWVJdGVtLCBfdGhpcyQkcmVmcyR0cmVlU2lkZTI7CiAgICAgICAgICAoX3RoaXMkJHJlZnMkdHJlZVNpZGUgPSBfdGhpcy4kcmVmcy50cmVlU2lkZSkgPT09IG51bGwgfHwgX3RoaXMkJHJlZnMkdHJlZVNpZGUgPT09IHZvaWQgMCB8fCBfdGhpcyQkcmVmcyR0cmVlU2lkZS5zZXRDdXJyZW50S2V5KCgoX3RoaXMkdHJlZUl0ZW0gPSBfdGhpcy50cmVlSXRlbSkgPT09IG51bGwgfHwgX3RoaXMkdHJlZUl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHRyZWVJdGVtW190aGlzLnRyZWVLZXldKSB8fCAnJyk7CiAgICAgICAgICAoX3RoaXMkJHJlZnMkdHJlZVNpZGUyID0gX3RoaXMuJHJlZnMudHJlZVNpZGUpID09PSBudWxsIHx8IF90aGlzJCRyZWZzJHRyZWVTaWRlMiA9PT0gdm9pZCAwIHx8IF90aGlzJCRyZWZzJHRyZWVTaWRlMi5leHBhbmRIYW5kbGUodHJ1ZSwgX3RoaXMuZGVmYXVsdFRyZWVFeHBhbmRMZXZlbCk7CiAgICAgICAgfSk7CiAgICAgIH0sCiAgICAgIGltbWVkaWF0ZTogdHJ1ZQogICAgfSwKICAgIHRhYmxlRGF0YTogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGRhdGEpIHsKICAgICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgICB0aGlzLmVuaGFuY2VkVGFibGVEYXRhID0gZGF0YS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIHZhciBfdGhpczIkYWxsU2VsZWN0aW9uJGYsIF90aGlzMiRhbGxTZWxlY3Rpb24kZjI7CiAgICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBpdGVtKSwge30sIHsKICAgICAgICAgICAgY2hlY2tlZDogX3RoaXMyLmFsbFNlbGVjdGlvbi5zb21lKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgICAgICAgcmV0dXJuIGlbX3RoaXMyLnNlbGVjdEtleV0gPT09IGl0ZW1bX3RoaXMyLnNlbGVjdEtleV07CiAgICAgICAgICAgIH0pLAogICAgICAgICAgICBkaXNhYmxlZDogKF90aGlzMiRhbGxTZWxlY3Rpb24kZiA9IChfdGhpczIkYWxsU2VsZWN0aW9uJGYyID0gX3RoaXMyLmFsbFNlbGVjdGlvbi5maW5kKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgICAgICAgcmV0dXJuIGlbX3RoaXMyLnNlbGVjdEtleV0gPT09IGl0ZW1bX3RoaXMyLnNlbGVjdEtleV07CiAgICAgICAgICAgIH0pKSA9PT0gbnVsbCB8fCBfdGhpczIkYWxsU2VsZWN0aW9uJGYyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpczIkYWxsU2VsZWN0aW9uJGYyLmRpc2FibGVkKSAhPT0gbnVsbCAmJiBfdGhpczIkYWxsU2VsZWN0aW9uJGYgIT09IHZvaWQgMCA/IF90aGlzMiRhbGxTZWxlY3Rpb24kZiA6IGZhbHNlCiAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgICAgICB0aGlzLnRhYmxlQ2hlY2tBbGwgPSB0aGlzLmVuaGFuY2VkVGFibGVEYXRhLmxlbmd0aCA/IHRoaXMuZW5oYW5jZWRUYWJsZURhdGEuZXZlcnkoZnVuY3Rpb24gKGkpIHsKICAgICAgICAgIHJldHVybiBpLmNoZWNrZWQ7CiAgICAgICAgfSkgOiBmYWxzZTsKICAgICAgICB0aGlzLnRhYmxlSXNJbmRldGVybWluYXRlID0gdGhpcy5lbmhhbmNlZFRhYmxlRGF0YS5zb21lKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgICByZXR1cm4gaS5jaGVja2VkOwogICAgICAgIH0pICYmICF0aGlzLnRhYmxlQ2hlY2tBbGw7CiAgICAgIH0sCiAgICAgIGltbWVkaWF0ZTogdHJ1ZSwKICAgICAgZGVlcDogdHJ1ZQogICAgfSwKICAgIHNlbGVjdGVkQ29udGVudDogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGRhdGEpIHsKICAgICAgICB2YXIgYWxsU2VsZWN0aW9uOwogICAgICAgIGlmICh0aGlzLmlzU2luZ2xlQ2hvaWNlKSB7CiAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGRhdGEpID09PSAnW29iamVjdCBPYmplY3RdJyAmJiBPYmplY3Qua2V5cyhkYXRhKS5sZW5ndGgpIHsKICAgICAgICAgICAgYWxsU2VsZWN0aW9uID0gW18uY2xvbmVEZWVwKGRhdGEpXSB8fCBbXTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGFsbFNlbGVjdGlvbiA9IFtdOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBhbGxTZWxlY3Rpb24gPSBfLmNsb25lRGVlcChkYXRhKSB8fCBbXTsKICAgICAgICB9CiAgICAgICAgdGhpcy5hbGxTZWxlY3Rpb24gPSBhbGxTZWxlY3Rpb24ubWFwKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBpKSwge30sIHsKICAgICAgICAgICAgY2hlY2tlZDogdHJ1ZQogICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICAgICAgdGhpcy51cGRhdGVDaGVja2JveE9wdCgpOwogICAgICB9LAogICAgICBpbW1lZGlhdGU6IHRydWUsCiAgICAgIGRlZXA6IHRydWUKICAgIH0KICB9LAogIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7CiAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgIHRoaXMuJHJvb3QuJG9uKCdyZXNpemUnLCBmdW5jdGlvbiAoKSB7CiAgICAgIF90aGlzMy5jYWxjVGFibGVIZWlnaHQoNTAwKTsKICAgIH0pOwogIH0sCiAgbWV0aG9kczogewogICAgdHJlZVRhYkNoYW5nZTogZnVuY3Rpb24gdHJlZVRhYkNoYW5nZSh0cmVlQWN0aXZlVGFiTmFtZSkgewogICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6dHJlZUFjdGl2ZVRhYk5hbWUnLCB0cmVlQWN0aXZlVGFiTmFtZSk7CiAgICAgIHRoaXMuJGVtaXQoJ3RyZWVUYWJDaGFuZ2UnLCB0cmVlQWN0aXZlVGFiTmFtZSk7CiAgICB9LAogICAgLy8g5omT5byA5by55bGC5pe26Kem5Y+RCiAgICBvcGVuOiBmdW5jdGlvbiBvcGVuKCkgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgaWYgKCF0aGlzLmluaXRpYWxpemVSZW5kZXJpbmcpIHRoaXMuJGVtaXQoJ2luaXRpYWxpemVSZW5kZXJpbmcnKTsKICAgICAgdmFyIGFsbFNlbGVjdGlvbjsKICAgICAgaWYgKHRoaXMuaXNTaW5nbGVDaG9pY2UpIHsKICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaXMuc2VsZWN0ZWRDb250ZW50KSA9PT0gJ1tvYmplY3QgT2JqZWN0XScgJiYgT2JqZWN0LmtleXModGhpcy5zZWxlY3RlZENvbnRlbnQpLmxlbmd0aCkgewogICAgICAgICAgYWxsU2VsZWN0aW9uID0gW18uY2xvbmVEZWVwKHRoaXMuc2VsZWN0ZWRDb250ZW50KV0gfHwgW107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGFsbFNlbGVjdGlvbiA9IFtdOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBhbGxTZWxlY3Rpb24gPSBfLmNsb25lRGVlcCh0aGlzLnNlbGVjdGVkQ29udGVudCkgfHwgW107CiAgICAgIH0KICAgICAgdGhpcy5hbGxTZWxlY3Rpb24gPSBhbGxTZWxlY3Rpb24ubWFwKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgaSksIHt9LCB7CiAgICAgICAgICBjaGVja2VkOiB0cnVlCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgICB0aGlzLnVwZGF0ZUNoZWNrYm94T3B0KCk7CgogICAgICAvLyDliJ3lp4vljJbpppbmrKHmiZPlvIDlvLnlsYLpgInkuK3mlYjmnpwsCiAgICAgIGlmICh0aGlzLmlzU2hvd1RyZWUgJiYgIXRoaXMuaW5pdGlhbGl6ZVJlbmRlcmluZykgewogICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgICB2YXIgX3RoaXM0JCRyZWZzJHRyZWVTaWRlLCBfdGhpczQkdHJlZUl0ZW0sIF90aGlzNCQkcmVmcyR0cmVlU2lkZTI7CiAgICAgICAgICAoX3RoaXM0JCRyZWZzJHRyZWVTaWRlID0gX3RoaXM0LiRyZWZzLnRyZWVTaWRlKSA9PT0gbnVsbCB8fCBfdGhpczQkJHJlZnMkdHJlZVNpZGUgPT09IHZvaWQgMCB8fCBfdGhpczQkJHJlZnMkdHJlZVNpZGUuc2V0Q3VycmVudEtleSgoKF90aGlzNCR0cmVlSXRlbSA9IF90aGlzNC50cmVlSXRlbSkgPT09IG51bGwgfHwgX3RoaXM0JHRyZWVJdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpczQkdHJlZUl0ZW1bX3RoaXM0LnRyZWVLZXldKSB8fCAnJyk7CiAgICAgICAgICAoX3RoaXM0JCRyZWZzJHRyZWVTaWRlMiA9IF90aGlzNC4kcmVmcy50cmVlU2lkZSkgPT09IG51bGwgfHwgX3RoaXM0JCRyZWZzJHRyZWVTaWRlMiA9PT0gdm9pZCAwIHx8IF90aGlzNCQkcmVmcyR0cmVlU2lkZTIuZXhwYW5kSGFuZGxlKHRydWUsIF90aGlzNC5kZWZhdWx0VHJlZUV4cGFuZExldmVsKTsKICAgICAgICB9KTsKICAgICAgfQogICAgICB0aGlzLiRlbWl0KCdvcGVuJywgdGhpcy5pbml0aWFsaXplUmVuZGVyaW5nKTsKICAgICAgdGhpcy5pbml0aWFsaXplUmVuZGVyaW5nID0gdHJ1ZTsKICAgIH0sCiAgICAvLyDlhbPpl63lvLnlsYLlkI7op6blj5EKICAgIGNsb3NlZDogZnVuY3Rpb24gY2xvc2VkKCkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLiRkYXRhLCB0aGlzLiRvcHRpb25zLmRhdGEuY2FsbCh0aGlzKSk7IC8vIOmHjee9rmRhdGHkuK3nmoTmlbDmja4KICAgICAgLy8g6YeN572u5omT5byA5by55bGC6YCJ5Lit5pWI5p6cLAogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoXykgewogICAgICAgIHZhciBfdGhpczUkJHJlZnMkc2VhcmNoQ28sIF90aGlzNSQkcmVmcyRtdWx0aXBsZTsKICAgICAgICBpZiAoX3RoaXM1LmlzU2hvd1RyZWUpIHsKICAgICAgICAgIHZhciBfdGhpczUkJHJlZnMkdHJlZVNpZGUsIF90aGlzNSR0cmVlSXRlbSwgX3RoaXM1JCRyZWZzJHRyZWVTaWRlMjsKICAgICAgICAgIChfdGhpczUkJHJlZnMkdHJlZVNpZGUgPSBfdGhpczUuJHJlZnMudHJlZVNpZGUpID09PSBudWxsIHx8IF90aGlzNSQkcmVmcyR0cmVlU2lkZSA9PT0gdm9pZCAwIHx8IF90aGlzNSQkcmVmcyR0cmVlU2lkZS5zZXRDdXJyZW50S2V5KCgoX3RoaXM1JHRyZWVJdGVtID0gX3RoaXM1LnRyZWVJdGVtKSA9PT0gbnVsbCB8fCBfdGhpczUkdHJlZUl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzNSR0cmVlSXRlbVtfdGhpczUudHJlZUtleV0pIHx8ICcnKTsKICAgICAgICAgIChfdGhpczUkJHJlZnMkdHJlZVNpZGUyID0gX3RoaXM1LiRyZWZzLnRyZWVTaWRlKSA9PT0gbnVsbCB8fCBfdGhpczUkJHJlZnMkdHJlZVNpZGUyID09PSB2b2lkIDAgfHwgX3RoaXM1JCRyZWZzJHRyZWVTaWRlMi5leHBhbmRIYW5kbGUodHJ1ZSwgX3RoaXM1LmRlZmF1bHRUcmVlRXhwYW5kTGV2ZWwpOwogICAgICAgIH0KICAgICAgICAoX3RoaXM1JCRyZWZzJHNlYXJjaENvID0gX3RoaXM1LiRyZWZzLnNlYXJjaENvbW1vbikgPT09IG51bGwgfHwgX3RoaXM1JCRyZWZzJHNlYXJjaENvID09PSB2b2lkIDAgfHwgX3RoaXM1JCRyZWZzJHNlYXJjaENvLmRlbGV0ZUNob29zZSgnYWxsJywgZmFsc2UpOyAvLyDmuIXnqbrmkJzntKLpgInkuK0KICAgICAgICAoX3RoaXM1JCRyZWZzJG11bHRpcGxlID0gX3RoaXM1LiRyZWZzLm11bHRpcGxlU2VsZWN0aW9uKSA9PT0gbnVsbCB8fCBfdGhpczUkJHJlZnMkbXVsdGlwbGUgPT09IHZvaWQgMCB8fCBfdGhpczUkJHJlZnMkbXVsdGlwbGUuY2xlYXJTb3J0KCk7IC8vIOeUqOS6jua4heepuuaOkuW6j+adoeS7tu+8jOaVsOaNruS8muaBouWkjeaIkOacquaOkuW6j+eahOeKtuaAgQogICAgICB9KTsKICAgICAgdGhpcy4kZW1pdCgnY2xvc2VkJyk7CiAgICB9LAogICAgLy8g6KGo5qC86KGM5qC35byP6Ieq5a6a5LmJCiAgICByb3dDbGFzc05hbWU6IGZ1bmN0aW9uIHJvd0NsYXNzTmFtZShfcmVmKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICB2YXIgcm93ID0gX3JlZi5yb3c7CiAgICAgIHZhciBjbGFzc0FyciA9IFtdOwogICAgICBpZiAodGhpcy5hbGxTZWxlY3Rpb24uc29tZShmdW5jdGlvbiAoaSkgewogICAgICAgIHJldHVybiBpW190aGlzNi5zZWxlY3RLZXldID09PSByb3dbX3RoaXM2LnNlbGVjdEtleV07CiAgICAgIH0pKSB7CiAgICAgICAgY2xhc3NBcnIucHVzaCgnY3VycmVudC1yb3cnKTsKICAgICAgfQogICAgICBpZiAocm93LmRpc2FibGVkKSB7CiAgICAgICAgY2xhc3NBcnIucHVzaCgnZGlzYWJsZWQtcm93Jyk7CiAgICAgIH0KICAgICAgcmV0dXJuIGNsYXNzQXJyLmpvaW4oJyAnKTsKICAgIH0sCiAgICAvL+W3pui+ueagkeiKgumAieS4reaUueWPmAogICAgY3VycmVudENoYW5nZTogZnVuY3Rpb24gY3VycmVudENoYW5nZShub2RlSXRlbSkgewogICAgICB0aGlzLnRhYmxlUGFyYW1zLnBhZ2VCZWFuLnBhZ2UgPSAxOwogICAgICAvLyDkuLrkuobpgb/lhY3lt6bkvqfmoJHli77pgInnmoTlj4LmlbDnlKjkuo7ooajmoLzmn6Xor6LkuK3nmoTmlrnlvI/mnInkuI3noa7lrprmgKfvvIzliJnmiorkv67mlLnmn6Xor6Lpobnlip/og73nlZnnu5nniLbnu4Tku7boh6rlt7HlgZoKICAgICAgdGhpcy4kZW1pdCgndXBkYXRlOnRyZWVJdGVtJywgbm9kZUl0ZW0gfHwge30pOwogICAgICB0aGlzLiRlbWl0KCd0cmVlQ2hhbmdlJywgbm9kZUl0ZW0pOwogICAgfSwKICAgIC8vIOmhtumDqOaQnOe0oumAu+i+keinpuWPkQogICAgaGFuZGxlU2VhcmNoOiBmdW5jdGlvbiBoYW5kbGVTZWFyY2goZGF0YSkgewogICAgICB2YXIgX3RoaXM3ID0gdGhpczsKICAgICAgdGhpcy50YWJsZVBhcmFtcy5wYWdlQmVhbi5wYWdlID0gMTsKICAgICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbS5wcm9wKSAmJiBpdGVtLnByb3AubGVuZ3RoKSB7CiAgICAgICAgICBpdGVtLnByb3AuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkgewogICAgICAgICAgICBzZXRRdWVyeVZhbHVlKF90aGlzNy50YWJsZVBhcmFtcywgcHJvcCwgaXRlbS52YWx1ZSk7CiAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpdGVtLnByb3AgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICBzZXRRdWVyeVZhbHVlKF90aGlzNy50YWJsZVBhcmFtcywgaXRlbS5wcm9wLCBpdGVtLnZhbHVlKTsKICAgICAgICB9CiAgICAgICAgY29uc29sZS5sb2coX3RoaXM3LnRhYmxlUGFyYW1zLnF1ZXJ5cyk7CiAgICAgIH0pOwogICAgICBjb25zb2xlLmxvZyhkYXRhLCB0aGlzLnRhYmxlUGFyYW1zLnF1ZXJ5cyk7CiAgICAgIHRoaXMuJGVtaXQoJ3RhYmxlUmVmcmVzaCcsIHRoaXMudGFibGVQYXJhbXMpOwogICAgfSwKICAgIC8v5YiG6aG16aG15pWwCiAgICBoYW5kbGVDdXJyZW50Q2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVDdXJyZW50Q2hhbmdlKHBhZ2UpIHsKICAgICAgdGhpcy50YWJsZVBhcmFtcy5wYWdlQmVhbi5wYWdlID0gcGFnZTsKICAgICAgdGhpcy4kZW1pdCgndGFibGVSZWZyZXNoJywgdGhpcy50YWJsZVBhcmFtcyk7CiAgICB9LAogICAgLy/liIbpobXlpKflsI8KICAgIGhhbmRsZVNpemVDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZVNpemVDaGFuZ2UocGFnZVNpemUpIHsKICAgICAgdGhpcy50YWJsZVBhcmFtcy5wYWdlQmVhbi5wYWdlU2l6ZSA9IHBhZ2VTaXplOwogICAgICB0aGlzLiRlbWl0KCd0YWJsZVJlZnJlc2gnLCB0aGlzLnRhYmxlUGFyYW1zKTsKICAgIH0sCiAgICAvLyDooajmoLzooYzngrnlh7sKICAgIHRhYmxlUm93Q2xpY2s6IGZ1bmN0aW9uIHRhYmxlUm93Q2xpY2socm93LCBzdGF0dXMpIHsKICAgICAgdGhpcy50YWJsZVNlbGVjdGlvbihyb3csIHN0YXR1cyk7CiAgICAgIHRoaXMudXBkYXRlQ2hlY2tib3hPcHQoKTsKICAgIH0sCiAgICAvLyDooajmoLzli77pgInmiJblj5bmtojli77pgIkKICAgIHRhYmxlU2VsZWN0aW9uOiBmdW5jdGlvbiB0YWJsZVNlbGVjdGlvbihpdGVtLCBzdGF0dXMpIHsKICAgICAgdmFyIF90aGlzOCA9IHRoaXM7CiAgICAgIGlmIChpdGVtLmRpc2FibGVkKSByZXR1cm47CiAgICAgIHZhciB0YWJsZUluZGV4ID0gdGhpcy5lbmhhbmNlZFRhYmxlRGF0YS5maW5kSW5kZXgoZnVuY3Rpb24gKGkpIHsKICAgICAgICByZXR1cm4gaVtfdGhpczguc2VsZWN0S2V5XSA9PT0gaXRlbVtfdGhpczguc2VsZWN0S2V5XTsKICAgICAgfSk7CiAgICAgIHZhciBmaW5kSW5kZXggPSB0aGlzLmFsbFNlbGVjdGlvbi5maW5kSW5kZXgoZnVuY3Rpb24gKGkpIHsKICAgICAgICByZXR1cm4gaVtfdGhpczguc2VsZWN0S2V5XSA9PT0gaXRlbVtfdGhpczguc2VsZWN0S2V5XTsKICAgICAgfSk7CiAgICAgIGlmICh0YWJsZUluZGV4ICE9PSAtMSkgdGhpcy5lbmhhbmNlZFRhYmxlRGF0YVt0YWJsZUluZGV4XS5jaGVja2VkID0gc3RhdHVzOwogICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgaWYgKHRoaXMuaXNTaW5nbGVDaG9pY2UpIHsKICAgICAgICAgIHRoaXMuYWxsU2VsZWN0aW9uID0gW2l0ZW1dOwogICAgICAgICAgdGhpcy5lbmhhbmNlZFRhYmxlRGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgICAgIGlmIChpW190aGlzOC5zZWxlY3RLZXldICE9PSBpdGVtW190aGlzOC5zZWxlY3RLZXldKSBpLmNoZWNrZWQgPSBmYWxzZTsKICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAoZmluZEluZGV4ID09PSAtMSkgdGhpcy5hbGxTZWxlY3Rpb24ucHVzaChpdGVtKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGZpbmRJbmRleCAhPT0gLTEpIHRoaXMuYWxsU2VsZWN0aW9uLnNwbGljZShmaW5kSW5kZXgsIDEpOwogICAgICB9CiAgICAgIHRoaXMudGFibGVDaGVja0FsbCA9IHRoaXMuZW5oYW5jZWRUYWJsZURhdGEuZXZlcnkoZnVuY3Rpb24gKGkpIHsKICAgICAgICByZXR1cm4gaS5jaGVja2VkOwogICAgICB9KTsKICAgICAgdGhpcy50YWJsZUlzSW5kZXRlcm1pbmF0ZSA9IHRoaXMuZW5oYW5jZWRUYWJsZURhdGEuc29tZShmdW5jdGlvbiAoaSkgewogICAgICAgIHJldHVybiBpLmNoZWNrZWQ7CiAgICAgIH0pICYmICF0aGlzLnRhYmxlQ2hlY2tBbGw7CiAgICB9LAogICAgLy8g5aSa6YCJ5qGG5YiX6KGo5rua5Yqo5Yiw5bqV6YOoCiAgICBjaGVja2JveFNjcm9sbEJvdHRvbTogZnVuY3Rpb24gY2hlY2tib3hTY3JvbGxCb3R0b20oKSB7CiAgICAgIHZhciBfdGhpczkgPSB0aGlzOwogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoXykgewogICAgICAgIHZhciBfdGhpczkkJHJlZnMkY2hlY2tib3g7CiAgICAgICAgdmFyIGNvbnRhaW5lciA9IChfdGhpczkkJHJlZnMkY2hlY2tib3ggPSBfdGhpczkuJHJlZnMuY2hlY2tib3hHcm91cCkgPT09IG51bGwgfHwgX3RoaXM5JCRyZWZzJGNoZWNrYm94ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpczkkJHJlZnMkY2hlY2tib3guJGVsOwogICAgICAgIGNvbnRhaW5lciA9PT0gbnVsbCB8fCBjb250YWluZXIgPT09IHZvaWQgMCB8fCBjb250YWluZXIuc2Nyb2xsVG8oewogICAgICAgICAgdG9wOiBjb250YWluZXIuc2Nyb2xsSGVpZ2h0LAogICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOihqOagvOa7muWKqOWIsOafkOS4gOihjAogICAgdGFibGVUclNjcm9sbDogZnVuY3Rpb24gdGFibGVUclNjcm9sbChpdGVtKSB7CiAgICAgIHZhciBfdGhpczEwID0gdGhpczsKICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKF8pIHsKICAgICAgICB2YXIgX3RhYmxlRWxlbWVudCRib2R5V3JhOwogICAgICAgIHZhciB0YWJsZUVsZW1lbnQgPSBfdGhpczEwLiRyZWZzLm11bHRpcGxlU2VsZWN0aW9uOwogICAgICAgIHZhciB0aGVUYWJsZVJvd0FyciA9IHRhYmxlRWxlbWVudC5ib2R5V3JhcHBlci5xdWVyeVNlbGVjdG9yQWxsKCcuZWwtdGFibGVfX2JvZHkgdGJvZHkgLmVsLXRhYmxlX19yb3cnKTsKICAgICAgICB2YXIgcm93SW5kZXggPSBfdGhpczEwLmVuaGFuY2VkVGFibGVEYXRhLmZpbmRJbmRleChmdW5jdGlvbiAoaSkgewogICAgICAgICAgcmV0dXJuIGlbX3RoaXMxMC5zZWxlY3RLZXldID09PSBpdGVtW190aGlzMTAuc2VsZWN0S2V5XTsKICAgICAgICB9KTsKICAgICAgICBpZiAocm93SW5kZXggPT09IC0xKSByZXR1cm47CiAgICAgICAgdmFyIHRvcCA9IF90b0NvbnN1bWFibGVBcnJheSh0aGVUYWJsZVJvd0FycikucmVkdWNlKGZ1bmN0aW9uICh0b3BTdW0sIGksIGluZGV4KSB7CiAgICAgICAgICBpZiAoaW5kZXggPCByb3dJbmRleCkgewogICAgICAgICAgICByZXR1cm4gdG9wU3VtICsgdGhlVGFibGVSb3dBcnJbaW5kZXhdLm9mZnNldEhlaWdodDsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiB0b3BTdW07CiAgICAgICAgICB9CiAgICAgICAgfSwgMCk7CiAgICAgICAgKF90YWJsZUVsZW1lbnQkYm9keVdyYSA9IHRhYmxlRWxlbWVudC5ib2R5V3JhcHBlcikgPT09IG51bGwgfHwgX3RhYmxlRWxlbWVudCRib2R5V3JhID09PSB2b2lkIDAgfHwgX3RhYmxlRWxlbWVudCRib2R5V3JhLnNjcm9sbFRvKHsKICAgICAgICAgIHRvcDogdG9wLAogICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOabtOaWsOWkmumAieahhumFjee9rumhuQogICAgdXBkYXRlQ2hlY2tib3hPcHQ6IGZ1bmN0aW9uIHVwZGF0ZUNoZWNrYm94T3B0KCkgewogICAgICB2YXIgX3RoaXMxMSA9IHRoaXM7CiAgICAgIHRoaXMuY2hlY2tib3hPcHQgPSBfLmNsb25lRGVlcCh0aGlzLmFsbFNlbGVjdGlvbik7CiAgICAgIHRoaXMuY2hlY2tib3hTZWxlY3QgPSB0aGlzLmNoZWNrYm94T3B0Lm1hcChmdW5jdGlvbiAoaSkgewogICAgICAgIHJldHVybiBpW190aGlzMTEuc2VsZWN0S2V5XTsKICAgICAgfSk7CiAgICAgIHRoaXMuY2hlY2tBbGwgPSAhIXRoaXMuY2hlY2tib3hTZWxlY3QubGVuZ3RoOwogICAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9IGZhbHNlOwogICAgICB0aGlzLmNoZWNrYm94U2Nyb2xsQm90dG9tKCk7CiAgICB9LAogICAgLy8g6KGo5qC85YWo6YCJ5pS55Y+YCiAgICB0YWJsZUhhbmRsZUNoZWNrQWxsQ2hhbmdlOiBmdW5jdGlvbiB0YWJsZUhhbmRsZUNoZWNrQWxsQ2hhbmdlKHZhbCkgewogICAgICB2YXIgX3RoaXMxMiA9IHRoaXM7CiAgICAgIHRoaXMuZW5oYW5jZWRUYWJsZURhdGEuZm9yRWFjaChmdW5jdGlvbiAoaSkgewogICAgICAgIHJldHVybiBfdGhpczEyLnRhYmxlUm93Q2xpY2soaSwgdmFsKTsKICAgICAgfSk7CiAgICAgIHRoaXMuaXNJbmRldGVybWluYXRlID0gZmFsc2U7CiAgICB9LAogICAgLy8g5aSa6YCJ5qGG5YiX6KGo5YWo6YCJ5qGG5pS55Y+YCiAgICBoYW5kbGVDaGVja0FsbENoYW5nZTogZnVuY3Rpb24gaGFuZGxlQ2hlY2tBbGxDaGFuZ2UodmFsKSB7CiAgICAgIHZhciBfdGhpczEzID0gdGhpczsKICAgICAgaWYgKHZhbCkgewogICAgICAgIHRoaXMuY2hlY2tib3hTZWxlY3QgPSB0aGlzLmNoZWNrYm94T3B0Lm1hcChmdW5jdGlvbiAoaSkgewogICAgICAgICAgcmV0dXJuIGlbX3RoaXMxMy5zZWxlY3RLZXldOwogICAgICAgIH0pOwogICAgICAgIHRoaXMuYWxsU2VsZWN0aW9uID0gdGhpcy5jaGVja2JveE9wdDsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmNoZWNrYm94U2VsZWN0ID0gdGhpcy5jaGVja2JveE9wdC5mbGF0TWFwKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgICByZXR1cm4gaS5kaXNhYmxlZCA/IGlbX3RoaXMxMy5zZWxlY3RLZXldIDogW107CiAgICAgICAgfSk7CiAgICAgICAgdGhpcy5hbGxTZWxlY3Rpb24gPSB0aGlzLmFsbFNlbGVjdGlvbi5mbGF0TWFwKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgICByZXR1cm4gaS5kaXNhYmxlZCAmJiBpLmNoZWNrZWQgPyBpIDogW107CiAgICAgICAgfSk7CiAgICAgICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPSAhIXRoaXMuY2hlY2tib3hTZWxlY3QubGVuZ3RoOwogICAgICB9CiAgICAgIHRoaXMuY2hlY2tib3hPcHQuZm9yRWFjaChmdW5jdGlvbiAoaSkgewogICAgICAgIHZhciBmaW5kSXRlbSA9IF90aGlzMTMuZW5oYW5jZWRUYWJsZURhdGEuZmluZChmdW5jdGlvbiAoX2kpIHsKICAgICAgICAgIHJldHVybiBfaVtfdGhpczEzLnNlbGVjdEtleV0gPT09IGlbX3RoaXMxMy5zZWxlY3RLZXldOwogICAgICAgIH0pOwogICAgICAgIGlmICghZmluZEl0ZW0pIHJldHVybjsKICAgICAgICBfdGhpczEzLnRhYmxlU2VsZWN0aW9uKGZpbmRJdGVtLCB2YWwpOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDlpJrpgInmoYbliJfooajlpJrpgInmoYbmlLnlj5gKICAgIGhhbmRsZUNoZWNrZWRDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUNoZWNrZWRDaGFuZ2Uoc3RhdHVzLCBpdGVtLCB2YWx1ZSkgewogICAgICB0aGlzLnRhYmxlVHJTY3JvbGwoaXRlbSk7CiAgICAgIHRoaXMudGFibGVTZWxlY3Rpb24oaXRlbSwgc3RhdHVzKTsKICAgICAgdmFyIGNoZWNrZWRDb3VudCA9IHZhbHVlLmxlbmd0aDsKICAgICAgdGhpcy5jaGVja0FsbCA9IGNoZWNrZWRDb3VudCA9PT0gdGhpcy5jaGVja2JveE9wdC5sZW5ndGg7CiAgICAgIHRoaXMuaXNJbmRldGVybWluYXRlID0gY2hlY2tlZENvdW50ID4gMCAmJiBjaGVja2VkQ291bnQgPCB0aGlzLmNoZWNrYm94T3B0Lmxlbmd0aDsKICAgIH0sCiAgICAvLyDnoa7orqTmjInpkq7ngrnlh7sKICAgIGNvbmZpcm06IGZ1bmN0aW9uIGNvbmZpcm0oKSB7CiAgICAgIHZhciBfdGhpczE0ID0gdGhpczsKICAgICAgdmFyIHNlbGVjdGVkQ29udGVudCA9IHRoaXMuYWxsU2VsZWN0aW9uLmZpbHRlcihmdW5jdGlvbiAoaSkgewogICAgICAgIHJldHVybiBfdGhpczE0LmNoZWNrYm94U2VsZWN0LnNvbWUoZnVuY3Rpb24gKHNlbGVjdEtleSkgewogICAgICAgICAgcmV0dXJuIHNlbGVjdEtleSA9PT0gaVtfdGhpczE0LnNlbGVjdEtleV07CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgICBzZWxlY3RlZENvbnRlbnQgPSB0aGlzLmlzU2luZ2xlQ2hvaWNlID8gc2VsZWN0ZWRDb250ZW50WzBdIHx8IHt9IDogc2VsZWN0ZWRDb250ZW50OwogICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6c2VsZWN0ZWRDb250ZW50Jywgc2VsZWN0ZWRDb250ZW50KTsKICAgICAgdGhpcy4kZW1pdCgnY29uZmlybScsIHNlbGVjdGVkQ29udGVudCk7CiAgICAgIGlmICh0aGlzLmNvbmZpcm1DbG9zZURpYWxvZykgdGhpcy5pc1Nob3dEaWFsb2cgPSBmYWxzZTsKICAgIH0sCiAgICBoYW5kbGVBZGQ6IGZ1bmN0aW9uIGhhbmRsZUFkZCgpIHsKICAgICAgdGhpcy4kZW1pdCgnYWRkJyk7CiAgICB9LAogICAgaGFuZGxlQ2xlYXJSb3c6IGZ1bmN0aW9uIGhhbmRsZUNsZWFyUm93KHJvdywgc3RhdHVzKSB7CiAgICAgIC8vIOihqOagvOihjOeCueWHuwogICAgICB0aGlzLnRhYmxlUm93Q2xpY2socm93LCBzdGF0dXMpOwogICAgfQogIH0KfTs="},null]}