{"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\\infoMgmtPatrolsRescues\\PatrolAndRescueVehicleMgmt\\components\\TablePage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\infoMgmtPatrolsRescues\\PatrolAndRescueVehicleMgmt\\components\\TablePage\\index.vue","mtime":1751364096905},{"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:aW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuam9pbi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5yZWR1Y2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLnJlZHVjZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCB7IHJlZmluZVJlcXVlc3RCb2R5LCBzZXRRdWVyeVZhbHVlIH0gZnJvbSAnQC91dGlscy9yZXF1ZXN0V3JhcHBlcnMnOwppbXBvcnQgcGFnaW5hdGlvbiBmcm9tICdAL2NvbXBvbmVudHMvU3VwZXJQYWdpbmF0aW9uL2luZGV4LnZ1ZSc7CmltcG9ydCB7IFRhYmxlTWl4aW4gfSBmcm9tICdAL21peGlucy90YWJsZU1peGluJzsKaW1wb3J0IHRyZWVTaWRlIGZyb20gJ0AvY29tcG9uZW50cy90cmVlU2lkZS9pbmRleC52dWUnOwppbXBvcnQgU2VhcmNoQ29tbW9uIGZyb20gJ0AvY29tcG9uZW50cy9TZWFyY2hDb21tb24vaW5kZXgudnVlJzsKaW1wb3J0IHsgdGFibGVEYXRhLCB0YWJsZURlbGV0ZSwgdHJlZURlbGV0ZSB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL3BhdHJvbEFuZFJlc2N1ZVZlaGljbGVNZ210JzsKaW1wb3J0IFB1YlN1YiBmcm9tICdwdWJzdWItanMnOwppbXBvcnQgeyBkaWN0aW9uYXJ5RXNjYXBlLCBnZXREaWN0aW9uYXJ5QnlDb2RlIH0gZnJvbSAnQC91dGlscy9kaWN0aW9uYXJ5JzsKLy8g6Lev5q61CmltcG9ydCB7IHRhYmxlRGF0YSBhcyBsb2FkUm9hZCB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL3JvYWRTZWN0aW9uSW5mbyc7CgovLyDmlZHmj7TngrkKaW1wb3J0IHsgdGFibGVEYXRhIGFzIHJlc2N1ZVBvaW50IH0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2luZm9NZ210UGF0cm9sc1Jlc2N1ZXMvcmVzY3VlU2l0ZU1nbXQnOwppbXBvcnQgeyBnZXRUcmVlIH0gZnJvbSAnQC9hcGkvdHJlZSc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnVGFibGVQYWdlJywKICBjb21wb25lbnRzOiB7CiAgICBwYWdpbmF0aW9uOiBwYWdpbmF0aW9uLAogICAgdHJlZVNpZGU6IHRyZWVTaWRlLAogICAgU2VhcmNoQ29tbW9uOiBTZWFyY2hDb21tb24KICB9LAogIG1peGluczogW1RhYmxlTWl4aW5dLAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICBpc0FkZERpc2FibGVkOiB0cnVlLAogICAgICAvLyDmlrDlop7mjInpkq7mmK/lkKbnpoHnlKgKICAgICAgcHViU3ViOiBudWxsLAogICAgICB0YWJsZU1heEhlaWdodDogJzYwMHB4JywKICAgICAgbG9hZGluZzogZmFsc2UsCiAgICAgIHRyZWVMb2FkaW5nOiB0cnVlLAogICAgICB0YWJsZUxvYWRpbmc6IGZhbHNlLAogICAgICB0cmVlRGF0YTogW10sCiAgICAgIC8v5bem6L655qCRCiAgICAgIHRhYkxpc3Q6IFsn6KGM5pS/57u05bqmJ10sCiAgICAgIC8v5bem6L65dGFiCiAgICAgIGRlZmF1bHRQcm9wczogewogICAgICAgIGNoaWxkcmVuOiAnY2hpbGRyZW4nLAogICAgICAgIGxhYmVsOiAnbmFtZScKICAgICAgfSwKICAgICAgdGFibGVEYXRhOiBbXSwKICAgICAgY3VycmVudERhdGFEZWw6IFtdLAogICAgICBvcHRpb25MaXN0OiBbewogICAgICAgIHRpdGxlOiAn6L2m54mM5Y+35oiW6L2m6L6G5ZOB54mMJywKICAgICAgICBwcm9wOiBbJ2Nhcl9OdW1iZXJfJywgJ2Nhcl9CcmFuZF8nXSwKICAgICAgICB0eXBlOiAnaW5wdXQnLAogICAgICAgIGRlZmF1bHQ6IHRydWUKICAgICAgfSwgewogICAgICAgIHRpdGxlOiAn6L2m6L6G57G75YirJywKICAgICAgICBwcm9wOiAnY2FyX0NsYXNzXycsCiAgICAgICAgdHlwZTogJ3NlbGVjdCcsCiAgICAgICAgb3B0aW9uOiBnZXREaWN0aW9uYXJ5QnlDb2RlKCdqeWNsLWNsbHgnKSwKICAgICAgICBtdWx0aXBsZTogZmFsc2UKICAgICAgfV0sCiAgICAgIHBhcmFtczogewogICAgICAgIHBhZ2VCZWFuOiB7CiAgICAgICAgICBwYWdlU2l6ZTogMjAsCiAgICAgICAgICBwYWdlOiAxLAogICAgICAgICAgdG90YWw6IDAKICAgICAgICB9LAogICAgICAgIHF1ZXJ5czogW3sKICAgICAgICAgIG9wZXJhdGlvbjogJ0lOJywKICAgICAgICAgIHByb3BlcnR5OiAncm9hZElkJwogICAgICAgIH0sIHsKICAgICAgICAgIGdyb3VwOiAncXVpY2snLAogICAgICAgICAgb3BlcmF0aW9uOiAnTElLRScsCiAgICAgICAgICByZWxhdGlvbjogJ09SJywKICAgICAgICAgIHByb3BlcnR5OiAnY2FyX051bWJlcl8nCiAgICAgICAgfSwgewogICAgICAgICAgZ3JvdXA6ICdxdWljaycsCiAgICAgICAgICBvcGVyYXRpb246ICdMSUtFJywKICAgICAgICAgIHJlbGF0aW9uOiAnT1InLAogICAgICAgICAgcHJvcGVydHk6ICdjYXJfQnJhbmRfJwogICAgICAgIH0sIHsKICAgICAgICAgIG9wZXJhdGlvbjogJ0VRVUFMJywKICAgICAgICAgIHByb3BlcnR5OiAnY2FyX0NsYXNzXycKICAgICAgICB9XSwKICAgICAgICBzb3J0ZXI6IFtdCiAgICAgIH0sCiAgICAgIHRyZWVEaWFsb2c6IGZhbHNlLAogICAgICAvLyDnp5Hnm67kv6Hmga/lvLnlsYIKICAgICAgdHJlZUl0ZW1JZDogJycsCiAgICAgIC8vIOagkeW9ouebruW9lWlkCiAgICAgIHRyZWVJdGVtOiB7fSwKICAgICAgLy8g5qCR5b2i6IqC54K56YCJ5Lit5a+56LGhCiAgICAgIHRyZWVJdGVtUGFyZW50SWQ6ICcnLAogICAgICAvLyDmoJHlvaLnm67lvZXniLbnuqdpZAogICAgICByZXNjdWVQb2ludE9wdGlvbnM6IFtdLAogICAgICByb2FkT3B0aW9uczogW10KICAgIH07CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgdmFyIF90aGlzID0gdGhpczsKICAgIC8vIOiOt+WPluagkeW9ouebruW9lS0KICAgIHRoaXMuZ2V0T3JnVHJlZURhdGEoZnVuY3Rpb24gKHRyZWVEYXRhKSB7CiAgICAgIC8vIOWbnuiwg+S4rem7mOiupOmAieS4reesrOS4gOmhueW5tuWwhuWFtmlk5L2c5Li65Y+C5pWw6K+35rGC6KGo5qC8CiAgICAgIF90aGlzLnRyZWVJdGVtID0gdHJlZURhdGFbMF0gfHwge307CiAgICAgIHZhciBhcnJheSA9IFtdOwogICAgICBpZiAoX3RoaXMudHJlZUl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkgewogICAgICAgIGFycmF5ID0gX3RoaXMuZXh0cmFjdElkcyhfdGhpcy50cmVlSXRlbSk7CiAgICAgIH0KICAgICAgX3RoaXMuJG5leHRUaWNrKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgdmFyIF90aGlzJCRyZWZzJHRyZWVTaWRlLCBfdHJlZURhdGEkLCBfdGhpcyQkcmVmcyR0cmVlU2lkZTI7CiAgICAgICAgKF90aGlzJCRyZWZzJHRyZWVTaWRlID0gX3RoaXMuJHJlZnMudHJlZVNpZGUpID09PSBudWxsIHx8IF90aGlzJCRyZWZzJHRyZWVTaWRlID09PSB2b2lkIDAgfHwgX3RoaXMkJHJlZnMkdHJlZVNpZGUuc2V0Q3VycmVudEtleSgoX3RyZWVEYXRhJCA9IHRyZWVEYXRhWzBdKSA9PT0gbnVsbCB8fCBfdHJlZURhdGEkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdHJlZURhdGEkLmlkKTsgLy/pgJrov4cgJHJlZnMg6I635Y+WdHJlZVNpZGXnu4Tku7blvJXnlKjvvIzlubbosIPnlKggc2V0Q3VycmVudEtleeaWueazleiuvue9ruW9k+WJjemAieS4reeahOagkeiKgueCueOAggogICAgICAgIChfdGhpcyQkcmVmcyR0cmVlU2lkZTIgPSBfdGhpcy4kcmVmcy50cmVlU2lkZSkgPT09IG51bGwgfHwgX3RoaXMkJHJlZnMkdHJlZVNpZGUyID09PSB2b2lkIDAgfHwgX3RoaXMkJHJlZnMkdHJlZVNpZGUyLmV4cGFuZEhhbmRsZSh0cnVlLCAyKTsKICAgICAgfSk7CiAgICAgIHNldFF1ZXJ5VmFsdWUoX3RoaXMucGFyYW1zLCAncm9hZElkJywgYXJyYXkpOyAvL+WwhumAieS4reeahOagkeiKgueCueeahCBwYXRoIOiuvue9ruS4uuafpeivouWPguaVsOeahOS4gOmDqOWIhu+8jOeUqOS6juWQjue7reeahOihqOagvOaVsOaNruivt+axguOAggogICAgICBfdGhpcy5sb2FkRGF0YSgpOyAvL+WKoOi9veihqOagvOaVsOaNrgogICAgfSk7CiAgICB0aGlzLmxvYWRSb2FkRGF0YSgpOwogICAgdGhpcy5sb2FkUmVzY3VlUG9pbnREYXRhKCk7CiAgICAvLyB0aGlzLmxvYWREYXRhKCkKICB9LAogIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7CiAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgIHRoaXMucHViU3ViID0gUHViU3ViLnN1YnNjcmliZSgnVGFibGVQYWdlJywgZnVuY3Rpb24gKF8sIGRhdGEpIHsKICAgICAgc3dpdGNoIChkYXRhLnR5cGUpIHsKICAgICAgICBjYXNlICdhZGQnOgogICAgICAgICAgX3RoaXMyLnBhcmFtcy5wYWdlQmVhbi5wYWdlID0gMTsKICAgICAgICAgIF90aGlzMi5sb2FkRGF0YSgpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnZWRpdCc6CiAgICAgICAgICBfdGhpczIubG9hZERhdGEoKTsKICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9KTsKICB9LAogIG1ldGhvZHM6IHsKICAgIGV4dHJhY3RJZHM6IGZ1bmN0aW9uIGV4dHJhY3RJZHMobm9kZSkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgdmFyIGlkcyA9IFtdOwogICAgICAvLyDlpoLmnpzlvZPliY3oioLngrnmnIkgY2hpbGRyZW7vvIzliJnpgJLlvZLmj5Dlj5YKICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHsKICAgICAgICBpZHMgPSBub2RlLmNoaWxkcmVuLm1hcChmdW5jdGlvbiAoY2hpbGQpIHsKICAgICAgICAgIHJldHVybiBjaGlsZC5pZDsKICAgICAgICB9KTsgLy8g5o+Q5Y+W5b2T5YmN6IqC54K555qEIGlkCiAgICAgICAgLy8g6YCS5b2S5o+Q5Y+W5a2Q6IqC54K555qEIGlkCiAgICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkgewogICAgICAgICAgaWRzID0gaWRzLmNvbmNhdChfdGhpczMuZXh0cmFjdElkcyhjaGlsZCkpOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIHJldHVybiBpZHM7CiAgICB9LAogICAgLy8g6I635Y+W5YWs5Y+45qCRLeW8guatpeaWueazle+8jOeUqOS6juS7juWQjuerr+iOt+WPluagkeW9ouaVsOaNrgogICAgZ2V0T3JnVHJlZURhdGE6IGZ1bmN0aW9uIGdldE9yZ1RyZWVEYXRhKGNhbGxiYWNrKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7CiAgICAgICAgdmFyIF95aWVsZCRnZXRUcmVlLCB2YWx1ZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gMDsKICAgICAgICAgICAgICBfdGhpczQudHJlZUxvYWRpbmcgPSB0cnVlOyAvL+W8gOWni+WKoOi9veaXtuaYvuekuuWKoOi9veeKtuaAgQogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA0OwogICAgICAgICAgICAgIHJldHVybiBnZXRUcmVlKCk7CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICBfeWllbGQkZ2V0VHJlZSA9IF9jb250ZXh0LnNlbnQ7CiAgICAgICAgICAgICAgdmFsdWUgPSBfeWllbGQkZ2V0VHJlZS52YWx1ZTsKICAgICAgICAgICAgICAvLyDosIPnlKggQVBJIOiOt+WPluagkeW9ouaVsOaNrgogICAgICAgICAgICAgIF90aGlzNC50cmVlRGF0YSA9IFt2YWx1ZV07CiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gNzsKICAgICAgICAgICAgICBfdGhpczQudHJlZUxvYWRpbmcgPSBmYWxzZTsgLy8g5peg6K665oiQ5Yqf5oiW5aSx6LSl77yM6YO95YWz6Zet5Yqg6L2954q25oCBCiAgICAgICAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2soX3RoaXM0LnRyZWVEYXRhKTsgLy8g5aaC5p6c5o+Q5L6b5LqG5Zue6LCD5Ye95pWw77yM5YiZ6LCD55So5a6D5bm25Lyg5YWl5qCR5b2i5pWw5o2uCiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmZpbmlzaCg3KTsKICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUsIG51bGwsIFtbMCwsIDcsIDExXV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICB0cmFuc2Zvcm1UcmVlRGF0YTogZnVuY3Rpb24gdHJhbnNmb3JtVHJlZURhdGEoZGF0YSkgewogICAgICByZXR1cm4gewogICAgICAgIG5hbWU6IGRhdGEubmFtZSwKICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICBjaGlsZHJlbjogZGF0YS5jaGlsZHJlbi5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgY2hpbGQpIHsKICAgICAgICAgIGFjYy5wdXNoKHsKICAgICAgICAgICAgaWQ6IGNoaWxkLmlkLAogICAgICAgICAgICBuYW1lOiBjaGlsZC5uYW1lLAogICAgICAgICAgICBwYXRoOiBjaGlsZC5wYXRoLAogICAgICAgICAgICBjaGlsZHJlbjogY2hpbGQucm9hZExpc3QubWFwKGZ1bmN0aW9uIChyb2FkKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIGlkOiByb2FkLmlkLAogICAgICAgICAgICAgICAgbmFtZTogcm9hZC5uYW1lLAogICAgICAgICAgICAgICAgcGF0aDogcm9hZC5wYXRoCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfSkKICAgICAgICAgIH0pOwogICAgICAgICAgcmV0dXJuIGFjYzsKICAgICAgICB9LCBbXSkKICAgICAgfTsKICAgIH0sCiAgICBkaWN0aW9uYXJ5RXNjYXBlOiBkaWN0aW9uYXJ5RXNjYXBlLAogICAgLy8g6Lev5q615L+h5oGvCiAgICBsb2FkUm9hZERhdGE6IGZ1bmN0aW9uIGxvYWRSb2FkRGF0YSgpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIoKSB7CiAgICAgICAgdmFyIF95aWVsZCRsb2FkUm9hZCwgX3lpZWxkJGxvYWRSb2FkJHJvd3MsIHJvd3M7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMDsKICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDM7CiAgICAgICAgICAgICAgcmV0dXJuIGxvYWRSb2FkKHsKICAgICAgICAgICAgICAgIHBhZ2VCZWFuOiB7CiAgICAgICAgICAgICAgICAgIHBhZ2VTaXplOiAtMSwKICAgICAgICAgICAgICAgICAgcGFnZTogMSwKICAgICAgICAgICAgICAgICAgdG90YWw6IDAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgIF95aWVsZCRsb2FkUm9hZCA9IF9jb250ZXh0Mi5zZW50OwogICAgICAgICAgICAgIF95aWVsZCRsb2FkUm9hZCRyb3dzID0gX3lpZWxkJGxvYWRSb2FkLnJvd3M7CiAgICAgICAgICAgICAgcm93cyA9IF95aWVsZCRsb2FkUm9hZCRyb3dzID09PSB2b2lkIDAgPyB7fSA6IF95aWVsZCRsb2FkUm9hZCRyb3dzOwogICAgICAgICAgICAgIF90aGlzNS5yb2FkT3B0aW9ucyA9IHJvd3M7CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxMjsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gOTsKICAgICAgICAgICAgICBfY29udGV4dDIudDAgPSBfY29udGV4dDJbImNhdGNoIl0oMCk7CiAgICAgICAgICAgICAgY29uc29sZS5sb2coX2NvbnRleHQyLnQwKTsKICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMiwgbnVsbCwgW1swLCA5XV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDmlZHmj7Tngrnkv6Hmga8KICAgIGxvYWRSZXNjdWVQb2ludERhdGE6IGZ1bmN0aW9uIGxvYWRSZXNjdWVQb2ludERhdGEoKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKCkgewogICAgICAgIHZhciBfeWllbGQkcmVzY3VlUG9pbnQsIF95aWVsZCRyZXNjdWVQb2ludCRybywgcm93czsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0MykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSAwOwogICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gMzsKICAgICAgICAgICAgICByZXR1cm4gcmVzY3VlUG9pbnQoewogICAgICAgICAgICAgICAgcGFnZUJlYW46IHsKICAgICAgICAgICAgICAgICAgcGFnZVNpemU6IC0xLAogICAgICAgICAgICAgICAgICBwYWdlOiAxLAogICAgICAgICAgICAgICAgICB0b3RhbDogMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgX3lpZWxkJHJlc2N1ZVBvaW50ID0gX2NvbnRleHQzLnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJHJlc2N1ZVBvaW50JHJvID0gX3lpZWxkJHJlc2N1ZVBvaW50LnJvd3M7CiAgICAgICAgICAgICAgcm93cyA9IF95aWVsZCRyZXNjdWVQb2ludCRybyA9PT0gdm9pZCAwID8ge30gOiBfeWllbGQkcmVzY3VlUG9pbnQkcm87CiAgICAgICAgICAgICAgX3RoaXM2LnJlc2N1ZVBvaW50T3B0aW9ucyA9IHJvd3M7CiAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAxMjsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gOTsKICAgICAgICAgICAgICBfY29udGV4dDMudDAgPSBfY29udGV4dDNbImNhdGNoIl0oMCk7CiAgICAgICAgICAgICAgY29uc29sZS5sb2coX2NvbnRleHQzLnQwKTsKICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMywgbnVsbCwgW1swLCA5XV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvL+iOt+WPluenkeebruagkQogICAgZ2V0VHJlZURhdGE6IGZ1bmN0aW9uIGdldFRyZWVEYXRhKGNhbGxiYWNrKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU0KCkgewogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNCQoX2NvbnRleHQ0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDQucHJldiA9IF9jb250ZXh0NC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIGdldFRyZWUoJzMnKTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIF9jb250ZXh0NC50MCA9IF9jb250ZXh0NC5zZW50OwogICAgICAgICAgICAgIF9jb250ZXh0NC50MSA9IHsKICAgICAgICAgICAgICAgIG5hbWU6ICfop4Tnq6DliLbluqYnLAogICAgICAgICAgICAgICAgZWRpdDogMSwKICAgICAgICAgICAgICAgIGlkOiAnJywKICAgICAgICAgICAgICAgIHBhcmVudElkOiAnJywKICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBfY29udGV4dDQudDAKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIF90aGlzNy50cmVlRGF0YSA9IFtfY29udGV4dDQudDFdOwogICAgICAgICAgICAgIC8vIOS/neivgemHjeaWsOWIt+aWsOagkeaVsOaNruWQju+8jOmAieS4reaViOaenOS4jeWkseaViAogICAgICAgICAgICAgIGlmIChfdGhpczcudHJlZUl0ZW0uaWQpIHsKICAgICAgICAgICAgICAgIF90aGlzNy4kbmV4dFRpY2soZnVuY3Rpb24gKF8pIHsKICAgICAgICAgICAgICAgICAgdmFyIF90aGlzNyQkcmVmcyR0cmVlU2lkZTsKICAgICAgICAgICAgICAgICAgKF90aGlzNyQkcmVmcyR0cmVlU2lkZSA9IF90aGlzNy4kcmVmcy50cmVlU2lkZSkgPT09IG51bGwgfHwgX3RoaXM3JCRyZWZzJHRyZWVTaWRlID09PSB2b2lkIDAgfHwgX3RoaXM3JCRyZWZzJHRyZWVTaWRlLnNldEN1cnJlbnRLZXkoX3RoaXM3LnRyZWVJdGVtLmlkKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBjYWxsYmFjayAmJiBjYWxsYmFjayhfdGhpczcudHJlZURhdGEpOwogICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTQpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvL+W3pui+ueagkeiKgueCuQogICAgY3VycmVudENoYW5nZTogZnVuY3Rpb24gY3VycmVudENoYW5nZShub2RlSXRlbSkgewogICAgICBpZiAobm9kZUl0ZW0uaWQgPT09ICcxNzY2MDE3NDY4NDQ0NDUwODE2JykgewogICAgICAgIHRoaXMuaXNBZGREaXNhYmxlZCA9IHRydWU7CiAgICAgICAgc2V0UXVlcnlWYWx1ZSh0aGlzLnBhcmFtcywgJ3JvYWRJZCAnLCB0aGlzLmV4dHJhY3RJZHMobm9kZUl0ZW0pKTsKICAgICAgfSBlbHNlIGlmIChub2RlSXRlbS5jaGlsZHJlbiAmJiBub2RlSXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7CiAgICAgICAgdGhpcy5pc0FkZERpc2FibGVkID0gdHJ1ZTsKICAgICAgICB2YXIgYXJyYXkgPSBub2RlSXRlbS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIHJldHVybiBpdGVtLmlkOwogICAgICAgIH0pOwogICAgICAgIHNldFF1ZXJ5VmFsdWUodGhpcy5wYXJhbXMsICdyb2FkSWQgJywgYXJyYXkpOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuaXNBZGREaXNhYmxlZCA9IGZhbHNlOwogICAgICAgIHNldFF1ZXJ5VmFsdWUodGhpcy5wYXJhbXMsICdyb2FkSWQgJywgW25vZGVJdGVtID09PSBudWxsIHx8IG5vZGVJdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlSXRlbS5pZF0gfHwgW10pOwogICAgICB9CiAgICAgIC8vIOWIpOaWreaYr+WQpuaYr+S4gOe6p+ebruW9le+8iOaciSBjaGlsZHJlbiDlsZ7mgKfvvIkKICAgICAgLy8gaWYgKG5vZGVJdGVtLmNoaWxkcmVuICYmIG5vZGVJdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHsKICAgICAgLy8gICB0aGlzLmlzQWRkRGlzYWJsZWQgPSB0cnVlIC8vIOemgeeUqOaWsOWinuaMiemSrgogICAgICAvLyAgIGNvbnN0IGFycmF5ID0gbm9kZUl0ZW0uY2hpbGRyZW4ubWFwKGl0ZW0gPT4gaXRlbS5pZCkKICAgICAgLy8gICBzZXRRdWVyeVZhbHVlKHRoaXMucGFyYW1zLCAncm9hZElkICcsIGFycmF5KQogICAgICAvLyAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygn6K+36YCJ5oup5LqM57qn55uu5b2V6L+b6KGM5paw5aKe5pON5L2cJykKICAgICAgLy8gfSBlbHNlIHsKICAgICAgLy8gICB0aGlzLmlzQWRkRGlzYWJsZWQgPSBmYWxzZSAvLyDlkK/nlKjmlrDlop7mjInpkq4KICAgICAgLy8gICAvLyDkv67mlLnlr7nlupTnmoTlrZfmrrXlgLwKICAgICAgLy8gICBzZXRRdWVyeVZhbHVlKHRoaXMucGFyYW1zLCAncm9hZElkICcsIFtub2RlSXRlbT8uaWRdIHx8IFtdKQogICAgICAvLyB9CiAgICAgIC8vIOS/ruaUueWvueW6lOeahOWtl+auteWAvAogICAgICAvLyBzZXRRdWVyeVZhbHVlKHRoaXMucGFyYW1zLCAnY2F0YWxvZ19mdWxsX2lkXyAnLCBub2RlSXRlbT8uaWQgfHwgJycpCiAgICAgIHRoaXMudHJlZUl0ZW0gPSBub2RlSXRlbSB8fCB7fTsKICAgICAgdGhpcy5jYWxjVGFibGVIZWlnaHQoNTAwKTsKICAgICAgUHViU3ViLnB1Ymxpc2goJ1RyZWVJdGVtU2VsZWN0ZWQnLCB7CiAgICAgICAgaWQ6IChub2RlSXRlbSA9PT0gbnVsbCB8fCBub2RlSXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZUl0ZW0uaWQpIHx8ICcnLAogICAgICAgIG5hbWU6IChub2RlSXRlbSA9PT0gbnVsbCB8fCBub2RlSXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZUl0ZW0ubmFtZSkgfHwgJycsCiAgICAgICAgcGF0aDogKG5vZGVJdGVtID09PSBudWxsIHx8IG5vZGVJdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlSXRlbS5wYXRoKSB8fCAnJwogICAgICB9KTsKICAgICAgdGhpcy5wYXJhbXMucGFnZUJlYW4ucGFnZSA9IDE7CiAgICAgIHRoaXMubG9hZERhdGEoKTsKICAgIH0sCiAgICAvL+iOt+WPluaVsOaNrgogICAgbG9hZERhdGE6IGZ1bmN0aW9uIGxvYWREYXRhKCkgewogICAgICB2YXIgX3RoaXM4ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNSgpIHsKICAgICAgICB2YXIgX3lpZWxkJHRhYmxlRGF0YSwgX3lpZWxkJHRhYmxlRGF0YSR0b3RhLCB0b3RhbCwgX3lpZWxkJHRhYmxlRGF0YSRyb3dzLCByb3dzOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNSQoX2NvbnRleHQ1KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDUucHJldiA9IF9jb250ZXh0NS5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfdGhpczgudGFibGVMb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDM7CiAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlRGF0YShyZWZpbmVSZXF1ZXN0Qm9keShfdGhpczgucGFyYW1zKSk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICBfeWllbGQkdGFibGVEYXRhID0gX2NvbnRleHQ1LnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJHRhYmxlRGF0YSR0b3RhID0gX3lpZWxkJHRhYmxlRGF0YS50b3RhbDsKICAgICAgICAgICAgICB0b3RhbCA9IF95aWVsZCR0YWJsZURhdGEkdG90YSA9PT0gdm9pZCAwID8gMCA6IF95aWVsZCR0YWJsZURhdGEkdG90YTsKICAgICAgICAgICAgICBfeWllbGQkdGFibGVEYXRhJHJvd3MgPSBfeWllbGQkdGFibGVEYXRhLnJvd3M7CiAgICAgICAgICAgICAgcm93cyA9IF95aWVsZCR0YWJsZURhdGEkcm93cyA9PT0gdm9pZCAwID8gW10gOiBfeWllbGQkdGFibGVEYXRhJHJvd3M7CiAgICAgICAgICAgICAgX3RoaXM4LnBhcmFtcy5wYWdlQmVhbi50b3RhbCA9IHRvdGFsOwogICAgICAgICAgICAgIF90aGlzOC50YWJsZURhdGEgPSByb3dzLm1hcChmdW5jdGlvbiAocm93KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByb3cpLCB7fSwgewogICAgICAgICAgICAgICAgICByb2FkTmFtZTogcm93LnJvYWROYW1lIHx8IF90aGlzOC50cmVlSXRlbS5uYW1lIC8vIOWmguaenCByb3cub3JnTmFtZSDkuLrnqbrvvIzkvb/nlKggdHJlZUl0ZW0ubmFtZQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgX3RoaXM4LnRhYmxlTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU1KTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g5qCR6IqC54K55pON5L2cCiAgICBvcGVyYXRlRXZlbnQ6IGZ1bmN0aW9uIG9wZXJhdGVFdmVudCh0eXBlLCBkYXRhKSB7CiAgICAgIHZhciBfdGhpczkgPSB0aGlzOwogICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICBjYXNlICfmlrDlop4nOgogICAgICAgICAgdGhpcy50cmVlSXRlbVBhcmVudElkID0gZGF0YS5pZDsKICAgICAgICAgIHRoaXMudHJlZURpYWxvZyA9IHRydWU7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICfnvJbovpEnOgogICAgICAgICAgdGhpcy50cmVlSXRlbUlkID0gZGF0YS5pZDsKICAgICAgICAgIHRoaXMudHJlZUl0ZW1QYXJlbnRJZCA9IGRhdGEucGFyZW50SWQ7CiAgICAgICAgICB0aGlzLnRyZWVEaWFsb2cgPSB0cnVlOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAn5Yig6ZmkJzoKICAgICAgICAgIHRoaXMuJGNvbmZpcm0oJ+ehruWumuWIoOmZpOmAieS4rei1hOaWmeWIhuexu+WQl++8nycsICfmj5DnpLonLCB7CiAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu6K6kJywKICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICAgICAgfSkudGhlbigvKiNfX1BVUkVfXyovX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU2KCkgewogICAgICAgICAgICB2YXIgX3lpZWxkJHRyZWVEZWxldGUsIHN0YXRlOwogICAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTYkKF9jb250ZXh0NikgewogICAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Ni5wcmV2ID0gX2NvbnRleHQ2Lm5leHQpIHsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgX2NvbnRleHQ2Lm5leHQgPSAyOwogICAgICAgICAgICAgICAgICByZXR1cm4gdHJlZURlbGV0ZShkYXRhLmlkKTsKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgX3lpZWxkJHRyZWVEZWxldGUgPSBfY29udGV4dDYuc2VudDsKICAgICAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkdHJlZURlbGV0ZS5zdGF0ZTsKICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM5LiRtZXNzYWdlLnN1Y2Nlc3MoIlx1NTIyMFx1OTY2NFx1OEQ0NFx1NjU5OVx1NTIwNlx1N0M3Qlx1NjIxMFx1NTI5RiIpOwogICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIF90aGlzOS4kbWVzc2FnZS5lcnJvcigiXHU1MjIwXHU5NjY0XHU4RDQ0XHU2NTk5XHU1MjA2XHU3QzdCXHU1OTMxXHU4RDI1Iik7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgX2NvbnRleHQ2Lm5leHQgPSA3OwogICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXM5LmdldFRyZWVEYXRhKCk7CiAgICAgICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ2LnN0b3AoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIF9jYWxsZWU2KTsKICAgICAgICAgIH0pKSkuY2F0Y2goZnVuY3Rpb24gKF8pIHsKICAgICAgICAgICAgcmV0dXJuIF87CiAgICAgICAgICB9KTsKICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9LAogICAgLy8g55uu5b2V5pS55Y+YCiAgICBjYXRhbG9nQ2hhbmdlOiBmdW5jdGlvbiBjYXRhbG9nQ2hhbmdlKGRpYWxvZ05hbWUpIHsKICAgICAgdmFyIF90aGlzMTAgPSB0aGlzOwogICAgICB0aGlzLmdldFRyZWVEYXRhKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgcmV0dXJuIF90aGlzMTBbZGlhbG9nTmFtZV0gPSBmYWxzZTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5Yig6ZmkCiAgICBoYW5kbGVEZWxldGU6IGZ1bmN0aW9uIGhhbmRsZURlbGV0ZShyb3cpIHsKICAgICAgdmFyIF90aGlzMTEgPSB0aGlzOwogICAgICB0aGlzLmNsaWNrVGltZXIgPSB0cnVlOwogICAgICB0aGlzLiRjb25maXJtKCfnoa7lrprliKDpmaTpgInkuK3otYTmlpnlkJfvvJ8nLCAn5o+Q56S6JywgewogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu6K6kJywKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgfSkudGhlbigvKiNfX1BVUkVfXyovX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU3KCkgewogICAgICAgIHZhciBpZHMsIF95aWVsZCR0YWJsZURlbGV0ZSwgc3RhdGUsIG1lc3NhZ2UsIF90aGlzMTEkcGFyYW1zJHBhZ2VCZSwgcGFnZSwgcGFnZVNpemUsIHRvdGFsLCB0b3RhbFBhZ2VzOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNyQoX2NvbnRleHQ3KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDcucHJldiA9IF9jb250ZXh0Ny5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBpZHMgPSByb3cgPyByb3cuaWQgOiBfdGhpczExLmN1cnJlbnREYXRhRGVsLmpvaW4oKTsKICAgICAgICAgICAgICBfY29udGV4dDcubmV4dCA9IDM7CiAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlRGVsZXRlKGlkcyk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICBfeWllbGQkdGFibGVEZWxldGUgPSBfY29udGV4dDcuc2VudDsKICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCR0YWJsZURlbGV0ZS5zdGF0ZTsKICAgICAgICAgICAgICBtZXNzYWdlID0gX3lpZWxkJHRhYmxlRGVsZXRlLm1lc3NhZ2U7CiAgICAgICAgICAgICAgaWYgKCFzdGF0ZSkgewogICAgICAgICAgICAgICAgX2NvbnRleHQ3Lm5leHQgPSAxNTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfdGhpczExLiRtZXNzYWdlLnN1Y2Nlc3MoIlx1OEQ0NFx1NjU5OVx1NTIyMFx1OTY2NFx1NjIxMFx1NTI5RiIpOwogICAgICAgICAgICAgIF90aGlzMTEkcGFyYW1zJHBhZ2VCZSA9IF90aGlzMTEucGFyYW1zLnBhZ2VCZWFuLCBwYWdlID0gX3RoaXMxMSRwYXJhbXMkcGFnZUJlLnBhZ2UsIHBhZ2VTaXplID0gX3RoaXMxMSRwYXJhbXMkcGFnZUJlLnBhZ2VTaXplLCB0b3RhbCA9IF90aGlzMTEkcGFyYW1zJHBhZ2VCZS50b3RhbDsKICAgICAgICAgICAgICB0b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHRvdGFsIC8gcGFnZVNpemUpOyAvLyDorqHnrpfmgLvpobXmlbAKICAgICAgICAgICAgICBpZiAodG90YWxQYWdlcyA+IDEgJiYgcGFnZSA9PT0gdG90YWxQYWdlcykgewogICAgICAgICAgICAgICAgaWYgKF90aGlzMTEudGFibGVEYXRhLmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgICAgICAgICAvLyDlvZPliY3pobXlj6rmnInkuIDmnaHmlbDmja4KICAgICAgICAgICAgICAgICAgX3RoaXMxMS5wYXJhbXMucGFnZUJlYW4ucGFnZSAtPSAxOyAvLyDov5Tlm57liY3kuIDpobUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX2NvbnRleHQ3Lm5leHQgPSAxMzsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMxMS5sb2FkRGF0YSgpOwogICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICAgIF9jb250ZXh0Ny5uZXh0ID0gMTY7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgX3RoaXMxMS4kbWVzc2FnZS5lcnJvcihtZXNzYWdlKTsKICAgICAgICAgICAgY2FzZSAxNjoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ3LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNyk7CiAgICAgIH0pKSkuY2F0Y2goZnVuY3Rpb24gKF8pIHsKICAgICAgICByZXR1cm4gXzsKICAgICAgfSk7CiAgICB9LAogICAgLy/kv67mlLkKICAgIGhhbmRsZURiQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZURiQ2xpY2socm93KSB7CiAgICAgIGNvbnNvbGUubG9nKHJvdywgJy8vLy8vY2FzY2FjYXMnKTsKICAgICAgaWYgKHRoaXMuY2xpY2tUaW1lcikgcmV0dXJuIHRoaXMuY2xpY2tUaW1lciA9IGZhbHNlOwogICAgICAvLyDnoa7kv50gcm93IOS4reWMheWQqyBvcmdOYW1lCiAgICAgIHZhciBwYXlsb2FkID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByb3cpLCB7fSwgewogICAgICAgIHJvYWROYW1lOiByb3cucm9hZE5hbWUgfHwgdGhpcy50cmVlSXRlbS5uYW1lIC8vIOWmguaenCByb3cub3JnTmFtZSDkuLrnqbrvvIzkvb/nlKggdHJlZUl0ZW0ubmFtZQogICAgICB9KTsKICAgICAgdGhpcy5jaGFuZ2VQYWdlKCdFZGl0QWRkUGFnZScsIHBheWxvYWQpOwogICAgfSwKICAgIC8vIOaUueWPmOmhtemdogogICAgY2hhbmdlUGFnZTogZnVuY3Rpb24gY2hhbmdlUGFnZSgpIHsKICAgICAgdmFyIHBhZ2VOYW1lID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAnJzsKICAgICAgdmFyIHJvdyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307CiAgICAgIGlmICghcGFnZU5hbWUpIHJldHVybjsKICAgICAgdmFyIHBheWxvYWQgPSByb3cuaWQgPyByb3cgOiB7CiAgICAgICAgY2F0YWxvZ0lkOiB0aGlzLnRyZWVJdGVtLmlkLAogICAgICAgIHJvYWROYW1lOiB0aGlzLnRyZWVJdGVtLm5hbWUsCiAgICAgICAgcGF0aDogdGhpcy50cmVlSXRlbS5wYXRoLAogICAgICAgIGNsZWFyRm9ybTogdHJ1ZSAvLyDmuIXnqbrooajljZXmoIflv5cKICAgICAgfTsKICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlUGFnZScsIHBhZ2VOYW1lLCBmdW5jdGlvbiAoXykgewogICAgICAgIFB1YlN1Yi5wdWJsaXNoKHBhZ2VOYW1lLCBwYXlsb2FkKTsKICAgICAgfSwgcm93LmlkID8gJ+e8lui+kScgOiAn5re75YqgJyk7CiAgICB9CiAgfSwKICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkgewogICAgLy8g5Zyo57uE5Lu26ZSA5q+B5LmL5YmNIOa4hemZpOiuoumYhea2iOaBrwogICAgUHViU3ViLnVuc3Vic2NyaWJlKHRoaXMucHViU3ViKTsKICB9Cn07"},null]}