{"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\\operationalMonitoring\\informatiOnForAttention\\components\\TablePage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\operationalMonitoring\\informatiOnForAttention\\components\\TablePage\\index.vue","mtime":1754078935647},{"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:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS94Y2p5LWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5LmpzIjsKaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuam9pbi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5yZWR1Y2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLnJlZHVjZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLnNvbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5qc29uLnN0cmluZ2lmeS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRlc3QuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zZXQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zZXQuZGlmZmVyZW5jZS52Mi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnNldC5pbnRlcnNlY3Rpb24udjIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zZXQuaXMtZGlzam9pbnQtZnJvbS52Mi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnNldC5pcy1zdWJzZXQtb2YudjIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zZXQuaXMtc3VwZXJzZXQtb2YudjIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zZXQuc3ltbWV0cmljLWRpZmZlcmVuY2UudjIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zZXQudW5pb24udjIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaXRlcmF0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5pdGVyYXRvci5qcyI7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCgppbXBvcnQgeyByZWZpbmVSZXF1ZXN0Qm9keSwgc2V0UXVlcnlWYWx1ZSB9IGZyb20gJ0AvdXRpbHMvcmVxdWVzdFdyYXBwZXJzJzsKaW1wb3J0IHBhZ2luYXRpb24gZnJvbSAnQC9jb21wb25lbnRzL1N1cGVyUGFnaW5hdGlvbi9pbmRleC52dWUnOwppbXBvcnQgeyBUYWJsZU1peGluIH0gZnJvbSAnQC9taXhpbnMvdGFibGVNaXhpbic7CmltcG9ydCB0cmVlU2lkZSBmcm9tICdAL2NvbXBvbmVudHMvdHJlZVNpZGUvaW5kZXgudnVlJzsKaW1wb3J0IFNlYXJjaENvbW1vbiBmcm9tICdAL2NvbXBvbmVudHMvU2VhcmNoQ29tbW9uL2luZGV4LnZ1ZSc7CmltcG9ydCB7IGRvd25sb2FkTW9kZWwsIGV4cG9ydEZpbGUsIHRhYmxlRGF0YSwgdGFibGVEZWxldGUgfSBmcm9tICdAL2FwaS9wYXRyb2xBbmRSZXNjdWUvb3BlcmF0aW9uYWxNb25pdG9yaW5nL2luZm9ybWF0aU9uRm9yQXR0ZW50aW9uJzsKaW1wb3J0IFB1YlN1YiBmcm9tICdwdWJzdWItanMnOwppbXBvcnQgeyBkaWN0aW9uYXJ5RXNjYXBlLCBnZXREaWN0aW9uYXJ5QnlDb2RlIH0gZnJvbSAnQC91dGlscy9kaWN0aW9uYXJ5JzsKaW1wb3J0IHsgbWFwU3RhdGUgfSBmcm9tICd2dWV4JzsKaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnOwppbXBvcnQgYmF0Y2hEaWFsb2cgZnJvbSAnLi4vYmF0Y2hEaWFsb2cudnVlJzsKaW1wb3J0IHsgZ2V0VHJlZSB9IGZyb20gJ0AvYXBpL3RyZWUnOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ1RhYmxlUGFnZScsCiAgY29tcG9uZW50czogewogICAgYmF0Y2hEaWFsb2c6IGJhdGNoRGlhbG9nLAogICAgcGFnaW5hdGlvbjogcGFnaW5hdGlvbiwKICAgIHRyZWVTaWRlOiB0cmVlU2lkZSwKICAgIFNlYXJjaENvbW1vbjogU2VhcmNoQ29tbW9uCiAgfSwKICBtaXhpbnM6IFtUYWJsZU1peGluXSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgYmF0Y2hEaWFsb2c6IGZhbHNlLAogICAgICBzdGF0dXNMaXN0OiBbewogICAgICAgIG5hbWU6ICflhajpg6gnLAogICAgICAgIHZhbHVlOiAnJwogICAgICB9LCB7CiAgICAgICAgbmFtZTogJ+W3suehruiupCcsCiAgICAgICAgdmFsdWU6IDEKICAgICAgfSwgewogICAgICAgIG5hbWU6ICfmnKrnoa7orqQnLAogICAgICAgIHZhbHVlOiAwCiAgICAgIH1dLAogICAgICBpc0FkZFNob3c6IGZhbHNlLAogICAgICBwdWJTdWI6IG51bGwsCiAgICAgIHRhYmxlTWF4SGVpZ2h0OiAnNjAwcHgnLAogICAgICBsb2FkaW5nOiBmYWxzZSwKICAgICAgdHJlZUxvYWRpbmc6IHRydWUsCiAgICAgIHRhYmxlTG9hZGluZzogZmFsc2UsCiAgICAgIHRyZWVEYXRhOiBbXSwKICAgICAgLy/lt6bovrnmoJEKICAgICAgZGVmYXVsdFByb3BzOiB7CiAgICAgICAgY2hpbGRyZW46ICdjaGlsZHJlbicsCiAgICAgICAgbGFiZWw6ICduYW1lJwogICAgICB9LAogICAgICB0YWJsZURhdGE6IFtdLAogICAgICBjdXJyZW50RGF0YURlbDogW10sCiAgICAgIG9wdGlvbkxpc3Q6IFsKICAgICAgLy8ge3RpdGxlOiAn5omA5bGe6Lev5q61JywgcHJvcDogJ3JvYWROYW1lJywgdHlwZTogJ2lucHV0JywgZGVmYXVsdDogdHJ1ZX0sCiAgICAgIHsKICAgICAgICB0aXRsZTogJ+mihOitpuetiee6pycsCiAgICAgICAgcHJvcDogJ3dhcm5pbmdMZXZlbCcsCiAgICAgICAgdHlwZTogJ3NlbGVjdCcsCiAgICAgICAgb3B0aW9uOiBnZXREaWN0aW9uYXJ5QnlDb2RlKCd5eGpjLXlqZGonKSwKICAgICAgICBtdWx0aXBsZTogdHJ1ZSwKICAgICAgICBkZWZhdWx0OiB0cnVlCiAgICAgIH0sCiAgICAgIC8vIHsKICAgICAgLy8gICB0aXRsZTogJ+aWueWQkScsCiAgICAgIC8vICAgcHJvcDogJ2RpcmVjdGlvbicsCiAgICAgIC8vICAgdHlwZTogJ3NlbGVjdCcsCiAgICAgIC8vICAgb3B0aW9uOiBnZXREaWN0aW9uYXJ5QnlDb2RlKCd5eGpjLWZ4JyksCiAgICAgIC8vICAgbXVsdGlwbGU6IHRydWUKICAgICAgLy8gfSwKICAgICAgewogICAgICAgIHRpdGxlOiAn6aKE6K2m57G75Z6LJywKICAgICAgICBwcm9wOiAnd2FybmluZ190eXBlXycsCiAgICAgICAgdHlwZTogJ3NlbGVjdCcsCiAgICAgICAgb3B0aW9uOiBnZXREaWN0aW9uYXJ5QnlDb2RlKCd5eGpjLXlqbHgnKSwKICAgICAgICBtdWx0aXBsZTogdHJ1ZQogICAgICB9LCB7CiAgICAgICAgdGl0bGU6ICflj5HluIPorr7lpIfnsbvlnosnLAogICAgICAgIHByb3A6ICdwdWJsaXNoRGV2aWNlVHlwZScsCiAgICAgICAgdHlwZTogJ3NlbGVjdCcsCiAgICAgICAgb3B0aW9uOiBnZXREaWN0aW9uYXJ5QnlDb2RlKCd5eGpjLWZic2JseCcpLAogICAgICAgIG11bHRpcGxlOiB0cnVlCiAgICAgIH1dLAogICAgICBwYXJhbXM6IHsKICAgICAgICBwYWdlQmVhbjogewogICAgICAgICAgcGFnZVNpemU6IDIwLAogICAgICAgICAgcGFnZTogMSwKICAgICAgICAgIHRvdGFsOiAwCiAgICAgICAgfSwKICAgICAgICBxdWVyeXM6IFt7CiAgICAgICAgICBvcGVyYXRpb246ICdJTicsCiAgICAgICAgICBwcm9wZXJ0eTogJ3JvYWRJZCcKICAgICAgICB9LAogICAgICAgIC8vIHsKICAgICAgICAvLyAgIGdyb3VwOiAncXVpY2snLAogICAgICAgIC8vICAgb3BlcmF0aW9uOiAnTElLRScsCiAgICAgICAgLy8gICByZWxhdGlvbjogJ09SJywKICAgICAgICAvLyAgIHByb3BlcnR5OiAncm9hZE5hbWUnCiAgICAgICAgLy8gfSwKICAgICAgICB7CiAgICAgICAgICBncm91cDogJ3F1aWNrJywKICAgICAgICAgIG9wZXJhdGlvbjogJ0lOJywKICAgICAgICAgIHJlbGF0aW9uOiAnQU5EJywKICAgICAgICAgIHByb3BlcnR5OiAnd2FybmluZ0xldmVsJwogICAgICAgIH0sIHsKICAgICAgICAgIGdyb3VwOiAncXVpY2snLAogICAgICAgICAgb3BlcmF0aW9uOiAnSU4nLAogICAgICAgICAgcmVsYXRpb246ICdBTkQnLAogICAgICAgICAgcHJvcGVydHk6ICd3YXJuaW5nX3R5cGVfJwogICAgICAgIH0sIHsKICAgICAgICAgIGdyb3VwOiAncXVpY2snLAogICAgICAgICAgb3BlcmF0aW9uOiAnSU4nLAogICAgICAgICAgcmVsYXRpb246ICdBTkQnLAogICAgICAgICAgcHJvcGVydHk6ICdwdWJsaXNoRGV2aWNlVHlwZScKICAgICAgICB9LCB7CiAgICAgICAgICBvcGVyYXRpb246ICdCRVRXRUVOJywKICAgICAgICAgIHByb3BlcnR5OiAnd2FybmluZ190aW1lXycsCiAgICAgICAgICB2YWx1ZTogW21vbWVudCgpLnN1YnRyYWN0KDEsICdtb250aCcpLnN0YXJ0T2YoJ21vbnRoJykuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tOnNzJyksIG1vbWVudCgpLmVuZE9mKCdtb250aCcpLmZvcm1hdCgnWVlZWS1NTS1ERCBISDptbTpzcycpXQogICAgICAgIH0sIHsKICAgICAgICAgIG9wZXJhdGlvbjogJ0lOJywKICAgICAgICAgIHJlbGF0aW9uOiAnQU5EJywKICAgICAgICAgIHByb3BlcnR5OiAnUFVCX1NUQVRVU18nLAogICAgICAgICAgdmFsdWU6ICcnCiAgICAgICAgfV0sCiAgICAgICAgc29ydGVyOiBbewogICAgICAgICAgcHJvcGVydHk6ICdjcmVhdGVUaW1lJywKICAgICAgICAgIGRpcmVjdGlvbjogJ0RFU0MnCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgdHJlZURpYWxvZzogZmFsc2UsCiAgICAgIC8vIOenkeebruS/oeaBr+W8ueWxggogICAgICB0cmVlSXRlbUlkOiAnJywKICAgICAgLy8g5qCR5b2i55uu5b2VaWQKICAgICAgdHJlZUl0ZW06IHt9LAogICAgICAvLyDmoJHlvaLoioLngrnpgInkuK3lr7nosaEKICAgICAgaXNTaG93UG9wb3ZlcjogZmFsc2UsCiAgICAgIGRvd25sb2FkTG9hZGluZzogZmFsc2UsCiAgICAgIHVwbG9hZExvYWRpbmc6IGZhbHNlLAogICAgICBzdGF0dXNTaG93OiAyLAogICAgICBoYXNQdWJTdGF0dXNPbmU6IHRydWUKICAgIH07CiAgfSwKICBjb21wdXRlZDogX29iamVjdFNwcmVhZCh7CiAgICBhY3Rpb25Vcmw6IGZ1bmN0aW9uIGFjdGlvblVybChfKSB7CiAgICAgIHJldHVybiB3aW5kb3cuY29udGV4dC5wb3J0YWw7CiAgICB9LAogICAgdXBsb2FkRGF0YTogZnVuY3Rpb24gdXBsb2FkRGF0YSgpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBiZWxvbmdBcmVhSWQ6IHRoaXMudHJlZUl0ZW0ub3JnSWQsCiAgICAgICAgcm9hZElkOiB0aGlzLnRyZWVJdGVtLmlkCiAgICAgIH07CiAgICB9LAogICAgYWN0aW9uOiBmdW5jdGlvbiBhY3Rpb24oKSB7CiAgICAgIHJldHVybiAiIi5jb25jYXQodGhpcy5hY3Rpb25VcmwsICIvbW9uaXRvci9iaXpFYXJseVdhcm5pbmdNYW5hZ2VtZW50L3YxL2ltcG9ydEV4Y2VsIik7CiAgICB9CiAgfSwgbWFwU3RhdGUoewogICAgaGVhZGVyczogZnVuY3Rpb24gaGVhZGVycyhzdGF0ZSkgewogICAgICByZXR1cm4gewogICAgICAgIEF1dGhvcml6YXRpb246ICJCZWFyZXIgIi5jb25jYXQoc3RhdGUubG9naW4uY3VycmVudFVzZXIudG9rZW4pCiAgICAgIH07CiAgICB9CiAgfSkpLAogIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7CiAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgLy8g6I635Y+W5qCR5b2i55uu5b2VLQogICAgdGhpcy5nZXRPcmdUcmVlRGF0YShmdW5jdGlvbiAodHJlZURhdGEpIHsKICAgICAgLy8g5Zue6LCD5Lit6buY6K6k6YCJ5Lit56ys5LiA6aG55bm25bCG5YW2aWTkvZzkuLrlj4LmlbDor7fmsYLooajmoLwKICAgICAgX3RoaXMudHJlZUl0ZW0gPSB0cmVlRGF0YVswXSB8fCB7fTsKICAgICAgdmFyIGFycmF5ID0gW107CiAgICAgIGlmIChfdGhpcy50cmVlSXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7CiAgICAgICAgYXJyYXkgPSBfdGhpcy5leHRyYWN0SWRzKF90aGlzLnRyZWVJdGVtKTsKICAgICAgfQogICAgICBpZiAoX3RoaXMuJHJvdXRlLnF1ZXJ5ICYmIF90aGlzLiRyb3V0ZS5xdWVyeS5wdWJsaXNoSWQpIHsKICAgICAgICBfdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKF8pIHsKICAgICAgICAgIHZhciBfdGhpcyQkcmVmcyR0cmVlU2lkZSwgX3RoaXMkJHJlZnMkdHJlZVNpZGUyOwogICAgICAgICAgKF90aGlzJCRyZWZzJHRyZWVTaWRlID0gX3RoaXMuJHJlZnMudHJlZVNpZGUpID09PSBudWxsIHx8IF90aGlzJCRyZWZzJHRyZWVTaWRlID09PSB2b2lkIDAgfHwgX3RoaXMkJHJlZnMkdHJlZVNpZGUuc2V0Q3VycmVudEtleShfdGhpcy4kcm91dGUucXVlcnkucHVibGlzaElkKTsKICAgICAgICAgIChfdGhpcyQkcmVmcyR0cmVlU2lkZTIgPSBfdGhpcy4kcmVmcy50cmVlU2lkZSkgPT09IG51bGwgfHwgX3RoaXMkJHJlZnMkdHJlZVNpZGUyID09PSB2b2lkIDAgfHwgX3RoaXMkJHJlZnMkdHJlZVNpZGUyLmV4cGFuZEhhbmRsZSh0cnVlLCAyKTsKICAgICAgICB9KTsKICAgICAgICB2YXIgcm9hZExpc3QgPSBfdGhpcy5jb2xsZWN0QWxsQ2hpbGRJZHModHJlZURhdGEsIF90aGlzLiRyb3V0ZS5xdWVyeS5wdWJsaXNoSWQpOwogICAgICAgIHNldFF1ZXJ5VmFsdWUoX3RoaXMucGFyYW1zLCAncm9hZElkJywgcm9hZExpc3QpOwogICAgICAgIF90aGlzLmxvYWREYXRhKCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX3RoaXMuJG5leHRUaWNrKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgICB2YXIgX3RoaXMkJHJlZnMkdHJlZVNpZGUzLCBfdHJlZURhdGEkLCBfdGhpcyQkcmVmcyR0cmVlU2lkZTQ7CiAgICAgICAgICAoX3RoaXMkJHJlZnMkdHJlZVNpZGUzID0gX3RoaXMuJHJlZnMudHJlZVNpZGUpID09PSBudWxsIHx8IF90aGlzJCRyZWZzJHRyZWVTaWRlMyA9PT0gdm9pZCAwIHx8IF90aGlzJCRyZWZzJHRyZWVTaWRlMy5zZXRDdXJyZW50S2V5KChfdHJlZURhdGEkID0gdHJlZURhdGFbMF0pID09PSBudWxsIHx8IF90cmVlRGF0YSQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90cmVlRGF0YSQuaWQpOwogICAgICAgICAgKF90aGlzJCRyZWZzJHRyZWVTaWRlNCA9IF90aGlzLiRyZWZzLnRyZWVTaWRlKSA9PT0gbnVsbCB8fCBfdGhpcyQkcmVmcyR0cmVlU2lkZTQgPT09IHZvaWQgMCB8fCBfdGhpcyQkcmVmcyR0cmVlU2lkZTQuZXhwYW5kSGFuZGxlKHRydWUsIDIpOwogICAgICAgIH0pOwogICAgICAgIHNldFF1ZXJ5VmFsdWUoX3RoaXMucGFyYW1zLCAncm9hZElkJywgYXJyYXkpOwogICAgICAgIF90aGlzLmxvYWREYXRhKCk7CiAgICAgIH0KICAgIH0pOwogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgdGhpcy5wdWJTdWIgPSBQdWJTdWIuc3Vic2NyaWJlKCdUYWJsZVBhZ2UnLCBmdW5jdGlvbiAoXywgZGF0YSkgewogICAgICBzd2l0Y2ggKGRhdGEudHlwZSkgewogICAgICAgIGNhc2UgJ2FkZCc6CiAgICAgICAgICBfdGhpczIucGFyYW1zLnBhZ2VCZWFuLnBhZ2UgPSAxOwogICAgICAgICAgX3RoaXMyLmxvYWREYXRhKCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdlZGl0JzoKICAgICAgICAgIF90aGlzMi5sb2FkRGF0YSgpOwogICAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0pOwogIH0sCiAgbWV0aG9kczogewogICAgZGljdGlvbmFyeUVzY2FwZTogZGljdGlvbmFyeUVzY2FwZSwKICAgIGNvbGxlY3RBbGxDaGlsZElkczogZnVuY3Rpb24gY29sbGVjdEFsbENoaWxkSWRzKHRyZWUsIHRhcmdldElkKSB7CiAgICAgIHZhciByZXN1bHQgPSBbXTsKICAgICAgdmFyIGlzQ29sbGVjdGluZyA9IGZhbHNlOwogICAgICBmdW5jdGlvbiB0cmF2ZXJzZShub2RlcykgewogICAgICAgIG5vZGVzID09PSBudWxsIHx8IG5vZGVzID09PSB2b2lkIDAgfHwgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkgewogICAgICAgICAgaWYgKG5vZGUuaWQgPT09IHRhcmdldElkKSBpc0NvbGxlY3RpbmcgPSB0cnVlOwogICAgICAgICAgaWYgKGlzQ29sbGVjdGluZykgcmVzdWx0LnB1c2gobm9kZS5pZCk7CiAgICAgICAgICB0cmF2ZXJzZShub2RlLmNoaWxkcmVuKTsKICAgICAgICAgIGlmIChub2RlLmlkID09PSB0YXJnZXRJZCkgaXNDb2xsZWN0aW5nID0gZmFsc2U7CiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgdHJhdmVyc2UoQXJyYXkuaXNBcnJheSh0cmVlKSA/IHRyZWUgOiBbXSk7CiAgICAgIHJldHVybiBfdG9Db25zdW1hYmxlQXJyYXkobmV3IFNldChyZXN1bHQpKTsgLy8g5Y676YeNIOayoeaciSDnrZvpgInkuI3lh7rmnaUKICAgIH0sCiAgICAvLyDpgJLlvZLpgY3ljoblh73mlbAKICAgIGV4dHJhY3RJZHM6IGZ1bmN0aW9uIGV4dHJhY3RJZHMobm9kZSkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgdmFyIGlkcyA9IFtdOwogICAgICAvLyDlpoLmnpzlvZPliY3oioLngrnmnIkgY2hpbGRyZW7vvIzliJnpgJLlvZLmj5Dlj5YKICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHsKICAgICAgICBpZHMgPSBub2RlLmNoaWxkcmVuLm1hcChmdW5jdGlvbiAoY2hpbGQpIHsKICAgICAgICAgIHJldHVybiBjaGlsZC5pZDsKICAgICAgICB9KTsgLy8g5o+Q5Y+W5b2T5YmN6IqC54K555qEIGlkCiAgICAgICAgLy8g6YCS5b2S5o+Q5Y+W5a2Q6IqC54K555qEIGlkCiAgICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkgewogICAgICAgICAgaWRzID0gaWRzLmNvbmNhdChfdGhpczMuZXh0cmFjdElkcyhjaGlsZCkpOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIHJldHVybiBpZHM7CiAgICB9LAogICAgaGFuZGxlU2VsZWN0aW9uQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVTZWxlY3Rpb25DaGFuZ2UodmFsKSB7CiAgICAgIHRoaXMuaGFzUHViU3RhdHVzT25lID0gdmFsLnNvbWUoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICByZXR1cm4gaXRlbS5wdWJTdGF0dXMgPT09IDE7CiAgICAgIH0pOwogICAgICB0aGlzLmN1cnJlbnREYXRhRGVsID0gdmFsLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIHJldHVybiBpdGVtLmlkOwogICAgICB9KTsKICAgIH0sCiAgICBjaGVja2JveEluaXQ6IGZ1bmN0aW9uIGNoZWNrYm94SW5pdChyb3csIGluZGV4KSB7CiAgICAgIC8vIGlmIChyb3cucHViU3RhdHVzKSB7CiAgICAgIC8vICAgcmV0dXJuIDAgLy/kuI3lj6/li77pgIkKICAgICAgLy8gfSBlbHNlIHsKICAgICAgcmV0dXJuIDE7CiAgICAgIC8vIH0KICAgIH0sCiAgICBiYXRjaENoYW5nZTogZnVuY3Rpb24gYmF0Y2hDaGFuZ2UoKSB7CiAgICAgIHRoaXMucGFyYW1zLnBhZ2VCZWFuLnBhZ2UgPSAxOwogICAgICB0aGlzLmxvYWREYXRhKCk7CiAgICB9LAogICAgYmF0Y2hDb25maXJtYXRpb246IGZ1bmN0aW9uIGJhdGNoQ29uZmlybWF0aW9uKCkgewogICAgICB0aGlzLmJhdGNoRGlhbG9nID0gdHJ1ZTsKICAgIH0sCiAgICAvLyDnirbmgIHliIfmjaIKICAgIHN0YXR1c1BpY2tlckNoYW5nZTogZnVuY3Rpb24gc3RhdHVzUGlja2VyQ2hhbmdlKHZhbCkgewogICAgICBzZXRRdWVyeVZhbHVlKHRoaXMucGFyYW1zLCAnUFVCX1NUQVRVU18nLCB2YWwpOwogICAgICB0aGlzLnBhcmFtcy5wYWdlQmVhbi5wYWdlID0gMTsKICAgICAgdGhpcy5sb2FkRGF0YSgpOwogICAgfSwKICAgIC8vIOaXtumXtOiMg+WbtOWIh+aNogogICAgZGF0ZVBpY2tlckNoYW5nZTogZnVuY3Rpb24gZGF0ZVBpY2tlckNoYW5nZSh2YWwpIHsKICAgICAgc2V0UXVlcnlWYWx1ZSh0aGlzLnBhcmFtcywgJ3dhcm5pbmdfdGltZV8nLCB2YWwpOwogICAgICB0aGlzLnBhcmFtcy5wYWdlQmVhbi5wYWdlID0gMTsKICAgICAgdGhpcy5sb2FkRGF0YSgpOwogICAgfSwKICAgIC8vIOiOt+WPluWFrOWPuOagkS3lvILmraXmlrnms5XvvIznlKjkuo7ku47lkI7nq6/ojrflj5bmoJHlvaLmlbDmja4KICAgIGdldE9yZ1RyZWVEYXRhOiBmdW5jdGlvbiBnZXRPcmdUcmVlRGF0YShjYWxsYmFjaykgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBfeWllbGQkZ2V0VHJlZSwgdmFsdWU7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDA7CiAgICAgICAgICAgICAgX3RoaXM0LnRyZWVMb2FkaW5nID0gdHJ1ZTsgLy/lvIDlp4vliqDovb3ml7bmmL7npLrliqDovb3nirbmgIEKICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNDsKICAgICAgICAgICAgICByZXR1cm4gZ2V0VHJlZSgpOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgX3lpZWxkJGdldFRyZWUgPSBfY29udGV4dC5zZW50OwogICAgICAgICAgICAgIHZhbHVlID0gX3lpZWxkJGdldFRyZWUudmFsdWU7CiAgICAgICAgICAgICAgLy8g6LCD55SoIEFQSSDojrflj5bmoJHlvaLmlbDmja4KICAgICAgICAgICAgICBfdGhpczQudHJlZURhdGEgPSBbdmFsdWVdOwogICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDc7CiAgICAgICAgICAgICAgX3RoaXM0LnRyZWVMb2FkaW5nID0gZmFsc2U7IC8vIOaXoOiuuuaIkOWKn+aIluWksei0pe+8jOmDveWFs+mXreWKoOi9veeKtuaAgQogICAgICAgICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKF90aGlzNC50cmVlRGF0YSk7IC8vIOWmguaenOaPkOS+m+S6huWbnuiwg+WHveaVsO+8jOWImeiwg+eUqOWug+W5tuS8oOWFpeagkeW9ouaVsOaNrgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5maW5pc2goNyk7CiAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlLCBudWxsLCBbWzAsLCA3LCAxMV1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgdHJhbnNmb3JtVHJlZURhdGE6IGZ1bmN0aW9uIHRyYW5zZm9ybVRyZWVEYXRhKGRhdGEpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBuYW1lOiBkYXRhLm5hbWUsCiAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgY2hpbGRyZW46IGRhdGEuY2hpbGRyZW4ucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGNoaWxkKSB7CiAgICAgICAgICBhY2MucHVzaCh7CiAgICAgICAgICAgIGlkOiBjaGlsZC5pZCwKICAgICAgICAgICAgbmFtZTogY2hpbGQubmFtZSwKICAgICAgICAgICAgcGF0aDogY2hpbGQucGF0aCwKICAgICAgICAgICAgY2hpbGRyZW46IGNoaWxkLnJvYWRMaXN0Lm1hcChmdW5jdGlvbiAocm9hZCkgewogICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBpZDogcm9hZC5pZCwKICAgICAgICAgICAgICAgIG5hbWU6IHJvYWQubmFtZSwKICAgICAgICAgICAgICAgIHBhdGg6IHJvYWQucGF0aAogICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0pCiAgICAgICAgICB9KTsKICAgICAgICAgIHJldHVybiBhY2M7CiAgICAgICAgfSwgW10pCiAgICAgIH07CiAgICB9LAogICAgLy/lt6bovrnmoJHoioLngrkKICAgIGN1cnJlbnRDaGFuZ2U6IGZ1bmN0aW9uIGN1cnJlbnRDaGFuZ2Uobm9kZUl0ZW0pIHsKICAgICAgaWYgKG5vZGVJdGVtLmlkID09PSAnMTc2NjAxNzQ2ODQ0NDQ1MDgxNicpIHsKICAgICAgICB0aGlzLmlzQWRkU2hvdyA9IGZhbHNlOwogICAgICAgIHNldFF1ZXJ5VmFsdWUodGhpcy5wYXJhbXMsICdyb2FkSWQgJywgdGhpcy5leHRyYWN0SWRzKG5vZGVJdGVtKSk7CiAgICAgIH0gZWxzZSBpZiAobm9kZUl0ZW0uY2hpbGRyZW4gJiYgbm9kZUl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkgewogICAgICAgIHRoaXMuaXNBZGRTaG93ID0gZmFsc2U7CiAgICAgICAgdmFyIGFycmF5ID0gbm9kZUl0ZW0uY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICByZXR1cm4gaXRlbS5pZDsKICAgICAgICB9KTsKICAgICAgICBzZXRRdWVyeVZhbHVlKHRoaXMucGFyYW1zLCAncm9hZElkICcsIGFycmF5KTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmlzQWRkU2hvdyA9IHRydWU7CiAgICAgICAgc2V0UXVlcnlWYWx1ZSh0aGlzLnBhcmFtcywgJ3JvYWRJZCAnLCBbbm9kZUl0ZW0gPT09IG51bGwgfHwgbm9kZUl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGVJdGVtLmlkXSB8fCBbXSk7CiAgICAgIH0KICAgICAgLy8gaWYgKG5vZGVJdGVtLmNoaWxkcmVuICYmIG5vZGVJdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHsKICAgICAgLy8gICB0aGlzLmlzQWRkU2hvdyA9IGZhbHNlCiAgICAgIC8vICAgY29uc3QgYXJyYXkgPSBub2RlSXRlbS5jaGlsZHJlbi5tYXAoaXRlbSA9PiBpdGVtLmlkKQogICAgICAvLyAgIHNldFF1ZXJ5VmFsdWUodGhpcy5wYXJhbXMsICdyb2FkSWQgJywgYXJyYXkpCiAgICAgIC8vIH0gZWxzZSB7CiAgICAgIC8vICAgdGhpcy5pc0FkZFNob3cgPSB0cnVlCiAgICAgIC8vICAgc2V0UXVlcnlWYWx1ZSh0aGlzLnBhcmFtcywgJ3JvYWRJZCAnLCBbbm9kZUl0ZW0/LmlkXSB8fCBbXSkKICAgICAgLy8gfQogICAgICB0aGlzLnRyZWVJdGVtID0gbm9kZUl0ZW0gfHwge307CiAgICAgIHRoaXMuY2FsY1RhYmxlSGVpZ2h0KDUwMCk7CiAgICAgIFB1YlN1Yi5wdWJsaXNoKCdUcmVlSXRlbVNlbGVjdGVkJywgewogICAgICAgIGlkOiAobm9kZUl0ZW0gPT09IG51bGwgfHwgbm9kZUl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGVJdGVtLmlkKSB8fCAnJywKICAgICAgICBuYW1lOiAobm9kZUl0ZW0gPT09IG51bGwgfHwgbm9kZUl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGVJdGVtLm5hbWUpIHx8ICcnLAogICAgICAgIHBhdGg6IChub2RlSXRlbSA9PT0gbnVsbCB8fCBub2RlSXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZUl0ZW0ucGF0aCkgfHwgJycKICAgICAgfSk7CiAgICAgIHRoaXMucGFyYW1zLnBhZ2VCZWFuLnBhZ2UgPSAxOwogICAgICB0aGlzLmxvYWREYXRhKCk7CiAgICB9LAogICAgLy/ojrflj5bmlbDmja4KICAgIGxvYWREYXRhOiBmdW5jdGlvbiBsb2FkRGF0YSgpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIoKSB7CiAgICAgICAgdmFyIF95aWVsZCR0YWJsZURhdGEsIF95aWVsZCR0YWJsZURhdGEkdG90YSwgdG90YWwsIF95aWVsZCR0YWJsZURhdGEkcm93cywgcm93czsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX3RoaXM1LnRhYmxlTG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiB0YWJsZURhdGEocmVmaW5lUmVxdWVzdEJvZHkoX3RoaXM1LnBhcmFtcykpOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgX3lpZWxkJHRhYmxlRGF0YSA9IF9jb250ZXh0Mi5zZW50OwogICAgICAgICAgICAgIF95aWVsZCR0YWJsZURhdGEkdG90YSA9IF95aWVsZCR0YWJsZURhdGEudG90YWw7CiAgICAgICAgICAgICAgdG90YWwgPSBfeWllbGQkdGFibGVEYXRhJHRvdGEgPT09IHZvaWQgMCA/IDAgOiBfeWllbGQkdGFibGVEYXRhJHRvdGE7CiAgICAgICAgICAgICAgX3lpZWxkJHRhYmxlRGF0YSRyb3dzID0gX3lpZWxkJHRhYmxlRGF0YS5yb3dzOwogICAgICAgICAgICAgIHJvd3MgPSBfeWllbGQkdGFibGVEYXRhJHJvd3MgPT09IHZvaWQgMCA/IFtdIDogX3lpZWxkJHRhYmxlRGF0YSRyb3dzOwogICAgICAgICAgICAgIF90aGlzNS5wYXJhbXMucGFnZUJlYW4udG90YWwgPSB0b3RhbDsKICAgICAgICAgICAgICBfdGhpczUudGFibGVEYXRhID0gcm93cy5tYXAoZnVuY3Rpb24gKHJvdykgewogICAgICAgICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcm93KSwge30sIHsKICAgICAgICAgICAgICAgICAgcm9hZE5hbWU6IHJvdy5yb2FkTmFtZSB8fCBfdGhpczUudHJlZUl0ZW0ubmFtZQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgX3RoaXM1LnRhYmxlTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUyKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g5LiL6L295a+85YWl5qih54mICiAgICBkb3dubG9hZFRlbXBsYXRlOiBmdW5jdGlvbiBkb3dubG9hZFRlbXBsYXRlKCkgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKICAgICAgdGhpcy5kb3dubG9hZExvYWRpbmcgPSB0cnVlOwogICAgICBkb3dubG9hZE1vZGVsKCkudGhlbihmdW5jdGlvbiAoXykgewogICAgICAgIHJldHVybiBfdGhpczYuJG1lc3NhZ2Uuc3VjY2Vzcygn6aKE6K2m5L+h5oGv5qih5p2/5oiQ5YqfJyk7CiAgICAgIH0pLmZpbmFsbHkoZnVuY3Rpb24gKF8pIHsKICAgICAgICBfdGhpczYuZG93bmxvYWRMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgX3RoaXM2LmlzU2hvd1BvcG92ZXIgPSBmYWxzZTsKICAgICAgfSk7CiAgICB9LAogICAgZXhwb3J0RGF0YTogZnVuY3Rpb24gZXhwb3J0RGF0YSgpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoKSB7CiAgICAgICAgdmFyIHBhcmFtOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfdGhpczcuZG93bmxvYWRMb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICBwYXJhbSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoX3RoaXM3LnBhcmFtcykpOwogICAgICAgICAgICAgIHBhcmFtLnBhZ2VCZWFuID0gewogICAgICAgICAgICAgICAgcGFnZVNpemU6IC0xLAogICAgICAgICAgICAgICAgcGFnZTogMSwKICAgICAgICAgICAgICAgIHRvdGFsOiAwCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBwYXJhbS5xdWVyeXMucHVzaCh7CiAgICAgICAgICAgICAgICBncm91cDogJ3F1aWNrJywKICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogJ0lOJywKICAgICAgICAgICAgICAgIHJlbGF0aW9uOiAnQU5EJywKICAgICAgICAgICAgICAgIHByb3BlcnR5OiAnaWQnLAogICAgICAgICAgICAgICAgdmFsdWU6IF90aGlzNy5jdXJyZW50RGF0YURlbAogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gNDsKICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDc7CiAgICAgICAgICAgICAgcmV0dXJuIGV4cG9ydEZpbGUocmVmaW5lUmVxdWVzdEJvZHkocGFyYW0pKTsKICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgIF90aGlzNy4kbWVzc2FnZS5zdWNjZXNzKCJcdTY1NzBcdTYzNkVcdTVCRkNcdTUxRkFcdTYyMTBcdTUyOUYiKTsKICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gODsKICAgICAgICAgICAgICBfdGhpczcuZG93bmxvYWRMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5maW5pc2goOCk7CiAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTMsIG51bGwsIFtbNCwsIDgsIDExXV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDmlofku7bkuIrkvKDliY0KICAgIGJlZm9yZVVwbG9hZDogZnVuY3Rpb24gYmVmb3JlVXBsb2FkKGZpbGUpIHsKICAgICAgdmFyIF90aGlzOCA9IHRoaXM7CiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgX3RoaXM4LnVwbG9hZExvYWRpbmcgPSB0cnVlOwogICAgICAgIHZhciBzaXplID0gZmlsZS5zaXplLAogICAgICAgICAgbmFtZSA9IGZpbGUubmFtZTsKICAgICAgICBfdGhpczguJGNvbmZpcm0oIlx1OEJGN1x1Nzg2RVx1OEJBNFx1NjYyRlx1NTQyNlx1NUJGQ1x1NTE2NSBcdTIwMUMiLmNvbmNhdChuYW1lLCAiXHUyMDFEIFx1RkYxRiIpLCAn5o+Q56S6JywgewogICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7orqQnLAogICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgICB2YXIgcGFzc2VkT3JOb3QgPSB0cnVlOyAvLyDmmK/lkKbpgJrov4fpqozor4EKICAgICAgICAgIHZhciBtYXhTaXplID0gNTAwICogMTAyNCAqIDEwMjQ7IC8vIDIwTUIKICAgICAgICAgIHZhciB0eXBlUmVndWxhciA9IC9cLih4bHN8eGxzeCkkL2k7CiAgICAgICAgICB2YXIgdmVyaWZpY2F0aW9uID0gW3sKICAgICAgICAgICAgY29uZGl0aW9uOiAhdHlwZVJlZ3VsYXIudGVzdChuYW1lKSwKICAgICAgICAgICAgcmVzdWx0OiBmdW5jdGlvbiByZXN1bHQoKSB7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzOC4kbWVzc2FnZS5lcnJvcign5Y+q6IO95LiK5LygeGxz5oiWeGxzeOaWh+S7tuexu+WeiycpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICAvLyB7CiAgICAgICAgICAvLyAgIGNvbmRpdGlvbjogc2l6ZSA+IG1heFNpemUsCiAgICAgICAgICAvLyAgIHJlc3VsdDogKCkgPT4gdGhpcy4kbWVzc2FnZS5lcnJvcign6ZmE5Lu25aSn5bCP5LiN6IO96LaF6L+HNTAwTUInKQogICAgICAgICAgLy8gfQogICAgICAgICAgXTsKICAgICAgICAgIHZlcmlmaWNhdGlvbi5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgIGlmIChpdGVtLmNvbmRpdGlvbikgewogICAgICAgICAgICAgIGl0ZW0ucmVzdWx0KCk7CiAgICAgICAgICAgICAgcGFzc2VkT3JOb3QgPSBmYWxzZTsKICAgICAgICAgICAgICBfdGhpczgudXBsb2FkTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICAgIHBhc3NlZE9yTm90ID8gcmVzb2x2ZSgpIDogcmVqZWN0KCk7CiAgICAgICAgICBfdGhpczguaXNTaG93UG9wb3ZlciA9IHBhc3NlZE9yTm90OwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgIF90aGlzOC5pc1Nob3dQb3BvdmVyID0gdHJ1ZTsKICAgICAgICAgIF90aGlzOC51cGxvYWRMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICBfdGhpczguJG1lc3NhZ2Uud2FybmluZygn5bey5Y+W5raI5o6S54+t5LiK5LygJyk7CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOaWh+WMluS4iuS8oOaIkOWKnwogICAgaGFuZGxlU3VjY2VzczogZnVuY3Rpb24gaGFuZGxlU3VjY2VzcygpIHsKICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCfpooTorablr7zlhaXmiJDlip8nKTsKICAgICAgdGhpcy51cGxvYWRMb2FkaW5nID0gZmFsc2U7CiAgICAgIHRoaXMuaXNTaG93UG9wb3ZlciA9IGZhbHNlOwogICAgICB0aGlzLmxvYWREYXRhKCk7CiAgICB9LAogICAgLy8g5paH5Lu25LiK5Lyg5aSx6LSlCiAgICBoYW5kbGVFcnJvcjogZnVuY3Rpb24gaGFuZGxlRXJyb3IoZXJyKSB7CiAgICAgIHZhciBlcnJNZXNzYWdlID0gJyc7CiAgICAgIGlmIChlcnIgJiYgZXJyLm1lc3NhZ2UpIHsKICAgICAgICB2YXIgX0pTT04kcGFyc2UgPSBKU09OLnBhcnNlKGVyci5tZXNzYWdlKSwKICAgICAgICAgIG1lc3NhZ2UgPSBfSlNPTiRwYXJzZS5tZXNzYWdlOwogICAgICAgIGVyck1lc3NhZ2UgPSBtZXNzYWdlOwogICAgICB9CiAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZXJyTWVzc2FnZSB8fCAn6aKE6K2m5a+85YWl5aSx6LSl77yM6K+36YeN6K+VJyk7CiAgICAgIHRoaXMudXBsb2FkTG9hZGluZyA9IGZhbHNlOwogICAgICB0aGlzLmlzU2hvd1BvcG92ZXIgPSBmYWxzZTsKICAgIH0sCiAgICAvLyDliKDpmaQKICAgIGhhbmRsZURlbGV0ZTogZnVuY3Rpb24gaGFuZGxlRGVsZXRlKHJvdykgewogICAgICB2YXIgX3RoaXM5ID0gdGhpczsKICAgICAgdGhpcy5jbGlja1RpbWVyID0gdHJ1ZTsKICAgICAgdGhpcy4kY29uZmlybSgn56Gu5a6a5Yig6Zmk6YCJ5Lit6aKE6K2m5L+h5oGv5ZCX77yfJywgJ+aPkOekuicsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruiupCcsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgIH0pLnRoZW4oLyojX19QVVJFX18qL19hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNCgpIHsKICAgICAgICB2YXIgaWRzLCBfeWllbGQkdGFibGVEZWxldGUsIHN0YXRlLCBtZXNzYWdlLCBfdGhpczkkcGFyYW1zJHBhZ2VCZWEsIHBhZ2UsIHBhZ2VTaXplLCB0b3RhbCwgdG90YWxQYWdlczsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTQkKF9jb250ZXh0NCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ0LnByZXYgPSBfY29udGV4dDQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgaWRzID0gcm93ID8gcm93LmlkIDogX3RoaXM5LmN1cnJlbnREYXRhRGVsLmpvaW4oKTsKICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDM7CiAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlRGVsZXRlKGlkcyk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICBfeWllbGQkdGFibGVEZWxldGUgPSBfY29udGV4dDQuc2VudDsKICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCR0YWJsZURlbGV0ZS5zdGF0ZTsKICAgICAgICAgICAgICBtZXNzYWdlID0gX3lpZWxkJHRhYmxlRGVsZXRlLm1lc3NhZ2U7CiAgICAgICAgICAgICAgaWYgKCFzdGF0ZSkgewogICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAxNTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfdGhpczkuJG1lc3NhZ2Uuc3VjY2VzcygiXHU5ODg0XHU4QjY2XHU0RkUxXHU2MDZGXHU1MjIwXHU5NjY0XHU2MjEwXHU1MjlGIik7CiAgICAgICAgICAgICAgX3RoaXM5JHBhcmFtcyRwYWdlQmVhID0gX3RoaXM5LnBhcmFtcy5wYWdlQmVhbiwgcGFnZSA9IF90aGlzOSRwYXJhbXMkcGFnZUJlYS5wYWdlLCBwYWdlU2l6ZSA9IF90aGlzOSRwYXJhbXMkcGFnZUJlYS5wYWdlU2l6ZSwgdG90YWwgPSBfdGhpczkkcGFyYW1zJHBhZ2VCZWEudG90YWw7CiAgICAgICAgICAgICAgdG90YWxQYWdlcyA9IE1hdGguY2VpbCh0b3RhbCAvIHBhZ2VTaXplKTsgLy8g6K6h566X5oC76aG15pWwCiAgICAgICAgICAgICAgaWYgKHRvdGFsUGFnZXMgPiAxICYmIHBhZ2UgPT09IHRvdGFsUGFnZXMpIHsKICAgICAgICAgICAgICAgIGlmIChfdGhpczkudGFibGVEYXRhLmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgICAgICAgICAvLyDlvZPliY3pobXlj6rmnInkuIDmnaHmlbDmja4KICAgICAgICAgICAgICAgICAgX3RoaXM5LnBhcmFtcy5wYWdlQmVhbi5wYWdlIC09IDE7IC8vIOi/lOWbnuWJjeS4gOmhtQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDEzOwogICAgICAgICAgICAgIHJldHVybiBfdGhpczkubG9hZERhdGEoKTsKICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDE2OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgIF90aGlzOS4kbWVzc2FnZS5lcnJvcihtZXNzYWdlKTsKICAgICAgICAgICAgY2FzZSAxNjoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNCk7CiAgICAgIH0pKSkuY2F0Y2goZnVuY3Rpb24gKF8pIHsKICAgICAgICByZXR1cm4gXzsKICAgICAgfSk7CiAgICB9LAogICAgLy/kv67mlLkKICAgIGhhbmRsZURiQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZURiQ2xpY2socm93KSB7CiAgICAgIGlmICh0aGlzLmNsaWNrVGltZXIpIHJldHVybiB0aGlzLmNsaWNrVGltZXIgPSBmYWxzZTsKICAgICAgdmFyIHBheWxvYWQgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJvdyksIHt9LCB7CiAgICAgICAgcm9hZE5hbWU6IHJvdy5yb2FkTmFtZSB8fCB0aGlzLnRyZWVJdGVtLm5hbWUKICAgICAgfSk7CiAgICAgIHRoaXMuY2hhbmdlUGFnZSgnRWRpdEFkZFBhZ2UnLCBwYXlsb2FkKTsKICAgIH0sCiAgICAvLyDmlLnlj5jpobXpnaIKICAgIGNoYW5nZVBhZ2U6IGZ1bmN0aW9uIGNoYW5nZVBhZ2UoKSB7CiAgICAgIHZhciBwYWdlTmFtZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogJyc7CiAgICAgIHZhciByb3cgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9OwogICAgICBpZiAoIXBhZ2VOYW1lKSByZXR1cm47CiAgICAgIHZhciBwYXlsb2FkID0gcm93LmlkID8gcm93IDogewogICAgICAgIHJvYWRJZDogdGhpcy50cmVlSXRlbS5pZCwKICAgICAgICByb2FkTmFtZTogdGhpcy50cmVlSXRlbS5uYW1lLAogICAgICAgIHBhdGg6IHRoaXMudHJlZUl0ZW0ucGF0aAogICAgICB9OwogICAgICB0aGlzLiRlbWl0KCdjaGFuZ2VQYWdlJywgcGFnZU5hbWUsIGZ1bmN0aW9uIChfKSB7CiAgICAgICAgUHViU3ViLnB1Ymxpc2gocGFnZU5hbWUsIHBheWxvYWQpOwogICAgICB9LCByb3cuaWQgPyAn57yW6L6RJyA6ICfmt7vliqAnKTsKICAgIH0KICB9LAogIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7CiAgICAvLyDlnKjnu4Tku7bplIDmr4HkuYvliY0g5riF6Zmk6K6i6ZiF5raI5oGvCiAgICBQdWJTdWIudW5zdWJzY3JpYmUodGhpcy5wdWJTdWIpOwogIH0KfTs="},null]}