{"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\\videoPatrol\\videoInspection\\components\\VideoPage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\videoPatrol\\videoInspection\\components\\VideoPage\\index.vue","mtime":1741314105800},{"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:aW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS94Y2p5LWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5LmpzIjsKaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS94Y2p5LWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDIuanMiOwppbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL3hjanktZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXMuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKdmFyIF9leGNsdWRlZCA9IFsidGFza1N0YXR1cyJdOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5jb25jYXQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5mcm9tLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5jbHVkZXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc2xpY2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pbmNsdWRlcy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5zcGxpdC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuZm9yLWVhY2guanMiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwoKaW1wb3J0IHsgcmVmaW5lUmVxdWVzdEJvZHksIHNldFF1ZXJ5VmFsdWUgfSBmcm9tICdAL3V0aWxzL3JlcXVlc3RXcmFwcGVycyc7CmltcG9ydCB7IHRhc2tEZXRhaWwsIHByZXZpZXdVUkxzLCBzYXZlUmVzdWx0QmF0Y2gsIHRhc2tVcGRhdGUgfSBmcm9tICdAL2FwaS9wYXRyb2xBbmRSZXNjdWUvdmlkZW9QYXRyb2wvdmlkZW9JbnNwZWN0aW9uJzsKaW1wb3J0IFB1YlN1YiBmcm9tICdwdWJzdWItanMnOwppbXBvcnQgeyBkaWN0aW9uYXJ5RXNjYXBlLCBnZXREaWN0aW9uYXJ5QnlDb2RlIH0gZnJvbSAnQC91dGlscy9kaWN0aW9uYXJ5JzsKaW1wb3J0IFZpZGVvUGxheWVyIGZyb20gJ0AvY29tcG9uZW50cy9WaWRlb1BsYXllci9pbmRleC52dWUnOwppbXBvcnQgdHJlZVNpZGUgZnJvbSAnQC9jb21wb25lbnRzL3RyZWVTaWRlL2luZGV4LnZ1ZSc7CmltcG9ydCBSZXBvcnREaWFsb2cgZnJvbSAnLi9jb21wb25lbnRzL1JlcG9ydERpYWxvZy9pbmRleCc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnVGFibGVQYWdlJywKICBjb21wb25lbnRzOiB7CiAgICB0cmVlU2lkZTogdHJlZVNpZGUsCiAgICBWaWRlb1BsYXllcjogVmlkZW9QbGF5ZXIsCiAgICBSZXBvcnREaWFsb2c6IFJlcG9ydERpYWxvZwogIH0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIHB1YlN1YjogbnVsbCwKICAgICAgb3JpZ2luVHJlZURhdGE6IFtdLAogICAgICBzZWFyY2hTaXRlOiAnJywKICAgICAgdHJlZURhdGE6IFtdLAogICAgICB0ZW1wRGF0YTogW10sCiAgICAgIC8vIOWMuuWIq+W3suajgOafpeWSjOacquajgOafpeeahOS4tOaXtuaVsOaNrgogICAgICB0cmVlTG9hZGluZzogZmFsc2UsCiAgICAgIHRyZWVJdGVtOiB7fSwKICAgICAgLy8g5qCR5b2i6IqC54K56YCJ5Lit5a+56LGhCiAgICAgIGRlZmF1bHRQcm9wczogewogICAgICAgIGNoaWxkcmVuOiAnY2hpbGRyZW4nLAogICAgICAgIGxhYmVsOiAnbmFtZScKICAgICAgfSwKICAgICAgaW5pdFZpZGVvOiBmYWxzZSwKICAgICAgaW50ZXJ2YWxUaW1lOiAxMCwKICAgICAgc3BsaXQ6IDMsCiAgICAgIHBsYXlpbmc6IGZhbHNlLAogICAgICBzcGxpdE9wdGlvbnM6IFt7CiAgICAgICAgbGFiZWw6ICczWDMnLAogICAgICAgIHZhbHVlOiAzCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJzJYMicsCiAgICAgICAgdmFsdWU6IDIKICAgICAgfV0sCiAgICAgIHZpZGVvV3JhcHBlcjogMCwKICAgICAgcmVhZHlDb3VudDogMCwKICAgICAgY3VycmVudFBsYXllcjogMSwKICAgICAgdGltZXI6IG51bGwsCiAgICAgIHJlcG9ydERpYWxvZzogZmFsc2UsCiAgICAgIHRhc2tEYXRhOiBudWxsLAogICAgICB1cmxMaXN0OiBbXSwKICAgICAgLy8g5pKt5pS+5Zyw5Z2ACiAgICAgIHRlbXBSYW5rTGlzdDogW10sCiAgICAgIC8vIOWfuuS6juS4iuasoeafpeeci+e7k+aenOmHjee7hOeahOaSreaUvumhuuW6jwogICAgICBxdWVyeXM6IFtdLAogICAgICAvLyAg5q+P5bGP6K+35rGC5Y+C5pWwCiAgICAgIHF1ZXJ5c0NvdW50OiAxLAogICAgICAvLyDor7fmsYLmrKHmlbAKICAgICAgcXVlcnlzQ291bnRUb3RhbDogMSAvLyDmgLvor7fmsYLmrKHmlbAKICAgIH07CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge30sCiAgd2F0Y2g6IHsKICAgIGNvbXBvbmVudE5hbWU6IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihuZXdWYWwpIHsKICAgICAgICBpZiAobmV3VmFsICE9PSB0aGlzLiRvcHRpb25zLm5hbWUpIHsKICAgICAgICAgIHRoaXMuY2xlYXIoKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7CiAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgdGhpcy5wdWJTdWIgPSBQdWJTdWIuc3Vic2NyaWJlKCdWaWRlb1BhZ2UnLCBmdW5jdGlvbiAoXywgZGF0YSkgewogICAgICBfdGhpcy5jaGFuZ2VUYXNrU3RhdHVzKGRhdGEudGFza0RhdGEsIDEpOwogICAgICBfdGhpcy5sb2FkVHJlZSgoZGF0YSA9PT0gbnVsbCB8fCBkYXRhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkYXRhLnRhc2tEYXRhKSB8fCB7fSk7CiAgICB9KTsKICB9LAogIG1ldGhvZHM6IHsKICAgIGRpY3Rpb25hcnlFc2NhcGU6IGRpY3Rpb25hcnlFc2NhcGUsCiAgICBoYW5kbGVGaW5pc2g6IGZ1bmN0aW9uIGhhbmRsZUZpbmlzaCgpIHsKICAgICAgdGhpcy5jaGFuZ2VUYXNrU3RhdHVzKHRoaXMudGFza0RhdGEsIDIpOwogICAgfSwKICAgIGNoYW5nZVRhc2tTdGF0dXM6IGZ1bmN0aW9uIGNoYW5nZVRhc2tTdGF0dXMoZGF0YSwgc3RhdHVzKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7CiAgICAgICAgdmFyIHRhc2tTdGF0dXMsIHRhc2ssIF95aWVsZCR0YXNrVXBkYXRlLCBzdGF0ZSwgbWVzc2FnZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICB0YXNrU3RhdHVzID0gZGF0YS50YXNrU3RhdHVzLCB0YXNrID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKGRhdGEsIF9leGNsdWRlZCk7CiAgICAgICAgICAgICAgaWYgKCEoc3RhdHVzID09PSAxICYmIHRhc2tTdGF0dXMgPT09IDAgfHwgc3RhdHVzID09PSAyICYmIHRhc2tTdGF0dXMgPT09IDEpKSB7CiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gODsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNDsKICAgICAgICAgICAgICByZXR1cm4gdGFza1VwZGF0ZShfb2JqZWN0U3ByZWFkKHsKICAgICAgICAgICAgICAgIHRhc2tTdGF0dXM6IHN0YXR1cwogICAgICAgICAgICAgIH0sIHRhc2spKTsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgIF95aWVsZCR0YXNrVXBkYXRlID0gX2NvbnRleHQuc2VudDsKICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCR0YXNrVXBkYXRlLnN0YXRlOwogICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkdGFza1VwZGF0ZS5tZXNzYWdlOwogICAgICAgICAgICAgIGlmIChzdGF0ZSAmJiBzdGF0dXMgPT09IDIpIHsKICAgICAgICAgICAgICAgIF90aGlzMi4kbWVzc2FnZS5zdWNjZXNzKCfku7vliqHlt7LlrozmiJAnKTsKICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFzdGF0ZSAmJiBzdGF0dXMgPT09IDIpIHsKICAgICAgICAgICAgICAgIF90aGlzMi4kbWVzc2FnZS53YXJuaW5nKG1lc3NhZ2UgfHwgJ+S7u+WKoeabtOaWsOWksei0pScpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIHByZWxvYWRWaWRlb1VybDogZnVuY3Rpb24gcHJlbG9hZFZpZGVvVXJsKCkgewogICAgICBpZiAodGhpcy50YXNrRGF0YS5yYW5rID09PSAwIHx8IHRoaXMudGFza0RhdGEucmFuayA9PT0gdGhpcy50cmVlRGF0YS5sZW5ndGggLSAxKSB7CiAgICAgICAgdGhpcy50ZW1wRGF0YSA9IF90b0NvbnN1bWFibGVBcnJheSh0aGlzLnRyZWVEYXRhKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgdGVtcEJlZm9yZSA9IHRoaXMudHJlZURhdGEuc2xpY2UodGhpcy50YXNrRGF0YS5yYW5rICsgMSk7CiAgICAgICAgdmFyIHRlbXBBZnRlciA9IHRoaXMudHJlZURhdGEuc2xpY2UoMCwgdGhpcy50YXNrRGF0YS5yYW5rICsgMSk7CiAgICAgICAgdGhpcy50ZW1wRGF0YSA9IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkodGVtcEJlZm9yZSksIF90b0NvbnN1bWFibGVBcnJheSh0ZW1wQWZ0ZXIpKTsKICAgICAgfQogICAgICB0aGlzLmdldFVSbFF1ZXJ5cyh0aGlzLnNwbGl0KTsKICAgICAgdGhpcy5xdWVyeXNDb3VudCA9IDE7CiAgICAgIHRoaXMuZ2V0VXJsKCk7CiAgICB9LAogICAgZ2V0VVJsUXVlcnlzOiBmdW5jdGlvbiBnZXRVUmxRdWVyeXMoc3BsaXQpIHsKICAgICAgdmFyIHNwbGl0TnVtID0gc3BsaXQgKiBzcGxpdDsKICAgICAgdGhpcy5xdWVyeXMgPSB0aGlzLmNodW5rQXJyYXkodGhpcy50ZW1wRGF0YSwgc3BsaXROdW0pOwogICAgICB0aGlzLnF1ZXJ5c0NvdW50VG90YWwgPSBNYXRoLmNlaWwodGhpcy5xdWVyeXMubGVuZ3RoIC8gMTApOwogICAgICBjb25zb2xlLmxvZyh0aGlzLnF1ZXJ5cywgdGhpcy5xdWVyeXNDb3VudFRvdGFsLCAndGhpcy5xdWVyeXMnKTsKICAgIH0sCiAgICAvLyDliIblsY/lpKfkuo4xICDmi4bliIbmlbDmja7liIbnprvmr4/lsY/or7fmsYLmlbDph48KICAgIGNodW5rQXJyYXk6IGZ1bmN0aW9uIGNodW5rQXJyYXkoYXJyYXksIGNodW5rU2l6ZSkgewogICAgICBpZiAoYXJyYXkubGVuZ3RoID09PSAwKSB7CiAgICAgICAgcmV0dXJuIFtdOwogICAgICB9CiAgICAgIHZhciBjaHVua3MgPSBbXTsKICAgICAgdmFyIGkgPSAwOwogICAgICB3aGlsZSAoaSA8IGFycmF5Lmxlbmd0aCkgewogICAgICAgIGNodW5rcy5wdXNoKGFycmF5LnNsaWNlKGksIGkgKyBjaHVua1NpemUpKTsKICAgICAgICBpICs9IGNodW5rU2l6ZTsKICAgICAgfQogICAgICByZXR1cm4gY2h1bmtzOwogICAgfSwKICAgIGdldFVybDogZnVuY3Rpb24gZ2V0VXJsKCkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgdmFyIHRlbXBSZXF1ZXN0RGF0YSA9IFtdOwogICAgICBpZiAodGhpcy52aWRlb1dyYXBwZXIgPiAxMCkgewogICAgICAgIHRlbXBSZXF1ZXN0RGF0YSA9IHRoaXMucXVlcnlzLnNsaWNlKHRoaXMucXVlcnlzQ291bnQgPiAxID8gdGhpcy5xdWVyeXNDb3VudCAqIDEwIC0gOSA6IDAsIHRoaXMucXVlcnlzQ291bnQgKiAxMCk7CiAgICAgICAgdGhpcy5xdWVyeXNDb3VudCsrOwogICAgICB9IGVsc2UgewogICAgICAgIHRlbXBSZXF1ZXN0RGF0YSA9IHRoaXMucXVlcnlzOwogICAgICB9CiAgICAgIHRlbXBSZXF1ZXN0RGF0YS5mb3JFYWNoKC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9yZWYgPSBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIoc2l0ZUFyciwgYXJySW5kZXgpIHsKICAgICAgICAgIHZhciBpZHMsIF95aWVsZCRwcmV2aWV3VVJMcywgdmFsdWUsIHVybHM7CiAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7CiAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSAwOwogICAgICAgICAgICAgICAgaWRzID0gewogICAgICAgICAgICAgICAgICBtb25pdG9yUG9pbnRJbmZvSWRzOiBzaXRlQXJyLm1hcChmdW5jdGlvbiAoaSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmNhbWVyYUluZGV4Q29kZTsKICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDQ7CiAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlld1VSTHMoaWRzKTsKICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICBfeWllbGQkcHJldmlld1VSTHMgPSBfY29udGV4dDIuc2VudDsKICAgICAgICAgICAgICAgIHZhbHVlID0gX3lpZWxkJHByZXZpZXdVUkxzLnZhbHVlOwogICAgICAgICAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICB1cmxzID0gW107CiAgICAgICAgICAgICAgICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGkpIHsKICAgICAgICAgICAgICAgICAgICB1cmxzLnB1c2goaXRlbS51cmwpOwogICAgICAgICAgICAgICAgICAgIF90aGlzMy4kcmVmc1sidmlkZW9QbGF5ZXIiLmNvbmNhdChhcnJJbmRleCArIDEpXVswXS5yZWFscGxheShpdGVtLnVybCwgaSk7CiAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICBpZiAoX3RoaXMzLmN1cnJlbnRQbGF5ZXIgPT09IDEpIHsKICAgICAgICAgICAgICAgICAgICBfdGhpczMudGFnVmlkZW8oKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gOTsKICAgICAgICAgICAgICAgIF9jb250ZXh0Mi50MCA9IF9jb250ZXh0MlsiY2F0Y2giXSgwKTsKICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCfor7fmsYLlpLHotKUnKTsKICAgICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZTIsIG51bGwsIFtbMCwgOV1dKTsKICAgICAgICB9KSk7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeCwgX3gyKSB7CiAgICAgICAgICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICAgIH0oKSk7CiAgICB9LAogICAgLy8g6KeG6aKR5pKt5pS+5Zmo5YWo6YOo5YeG5aSH54q25oCB5pu05pawCiAgICBoYW5kbGVSZWFkeTogZnVuY3Rpb24gaGFuZGxlUmVhZHkoKSB7CiAgICAgIHRoaXMucmVhZHlDb3VudCArPSAxOwogICAgICBpZiAodGhpcy5yZWFkeUNvdW50ID09PSB0aGlzLnZpZGVvV3JhcHBlcikgewogICAgICAgIHRoaXMucGxheWVyUmVhZHkgPSB0cnVlOwoKICAgICAgICAvLyDkuI3oh6rliqjmkq3mlL7vvIzkuLrojrflj5botYTmupDkv53nlZnml7bpl7Tpl7TpmpQKICAgICAgICAvLyB0aGlzLnN0YXJ0UGxheSgpCiAgICAgICAgLy8gdGhpcy5wbGF5aW5nID0gdHJ1ZQogICAgICB9CiAgICB9LAogICAgLy8g6K6h566X5bGP5bmV5pWw6YePCiAgICBjb3VudFdyYXBwZXI6IGZ1bmN0aW9uIGNvdW50V3JhcHBlcigpIHsKICAgICAgdGhpcy52aWRlb1dyYXBwZXIgPSBNYXRoLmNlaWwodGhpcy50cmVlRGF0YS5sZW5ndGggLyAodGhpcy5zcGxpdCAqIHRoaXMuc3BsaXQpKTsKICAgICAgdGhpcy5jdXJyZW50UGxheWVyID0gMTsKICAgICAgdGhpcy5pbml0VmlkZW8gPSB0cnVlOwogICAgfSwKICAgIC8vIOW8gOWQr+OAgeaaguWBnOi9ruaSrQogICAgaGFuZGxlUGxheTogZnVuY3Rpb24gaGFuZGxlUGxheSgpIHsKICAgICAgdGhpcy5wbGF5aW5nID0gIXRoaXMucGxheWluZzsKICAgICAgaWYgKHRoaXMucGxheWluZykgewogICAgICAgIHRoaXMuc3RhcnRQbGF5KCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKHRoaXMudGltZXIpIHsKICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgcGxheWVyU3RhcnQ6IGZ1bmN0aW9uIHBsYXllclN0YXJ0KCkgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgaWYgKHRoaXMuc3BsaXQgPiAxKSB7CiAgICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkgewogICAgICAgICAgX3RoaXM0LnVybExpc3QuZm9yRWFjaChmdW5jdGlvbiAodXJsQXJyLCBwbGF5ZXJpbmRleCkgewogICAgICAgICAgICB1cmxBcnIuZm9yRWFjaChmdW5jdGlvbiAodXJsLCB1cmxpbmRleCkgewogICAgICAgICAgICAgIGlmIChfdGhpczQuJHJlZnNbInZpZGVvUGxheWVyIi5jb25jYXQocGxheWVyaW5kZXggKyAxKV1bMF0gJiYgX3RoaXM0LiRyZWZzWyJ2aWRlb1BsYXllciIuY29uY2F0KHBsYXllcmluZGV4ICsgMSldWzBdLnJlYWxwbGF5KSB7CiAgICAgICAgICAgICAgICBfdGhpczQuJHJlZnNbInZpZGVvUGxheWVyIi5jb25jYXQocGxheWVyaW5kZXggKyAxKV1bMF0ucmVhbHBsYXkodXJsLCB1cmxpbmRleCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICB9CiAgICB9LAogICAgaGFuZGxlQXJyYW5nZVdpbmRvdzogZnVuY3Rpb24gaGFuZGxlQXJyYW5nZVdpbmRvdyh2YWwpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CiAgICAgIHRoaXMuc3BsaXQgPSB2YWw7CiAgICAgIHRoaXMuaW5pdFZpZGVvID0gZmFsc2U7CiAgICAgIHRoaXMuY291bnRXcmFwcGVyKCk7CiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICBjb25zb2xlLmxvZyhfdGhpczUudmlkZW9XcmFwcGVyLCBfdGhpczUuJHJlZnMpOwogICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgX3RoaXM1LnZpZGVvV3JhcHBlcjsgaSsrKSB7CiAgICAgICAgICBpZiAoX3RoaXM1LiRyZWZzWyJ2aWRlb1BsYXllciIuY29uY2F0KGkpXSAmJiBfdGhpczUuJHJlZnNbInZpZGVvUGxheWVyIi5jb25jYXQoaSldLmFycmFuZ2VXaW5kb3cpIHsKICAgICAgICAgICAgX3RoaXM1LiRyZWZzWyJ2aWRlb1BsYXllciIuY29uY2F0KGkpXS5hcnJhbmdlV2luZG93KHZhbCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIF90aGlzNS5zdGFydFBsYXkoKTsKICAgICAgfSk7CiAgICAgIC8vICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCfliIblsY/orr7nva7lsIbliLfmlrDpobXpnaLvvIzor7fogJDlv4PnrYnlvoUnKQogICAgICAvLyAgIHRoaXMuJHJvdXRlci5wdXNoKHt9KQogICAgfSwKICAgIHN0b3BBbGw6IGZ1bmN0aW9uIHN0b3BBbGwoKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBfdGhpczYudmlkZW9XcmFwcGVyOyBpKyspIHsKICAgICAgICAgIGlmIChfdGhpczYuJHJlZnNbInZpZGVvUGxheWVyIi5jb25jYXQoaSldICYmIF90aGlzNi4kcmVmc1sidmlkZW9QbGF5ZXIiLmNvbmNhdChpKV0uc3RvcEFsbFBsYXkpIHsKICAgICAgICAgICAgX3RoaXM2LiRyZWZzWyJ2aWRlb1BsYXllciIuY29uY2F0KGkpXS5zdG9wQWxsUGxheSgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAogICAgY2hhbmdlSW50ZXJ2YWw6IGZ1bmN0aW9uIGNoYW5nZUludGVydmFsKCkgewogICAgICB0aGlzLnN0YXJ0UGxheSgpOwogICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+iuvue9ruaXtumXtOmXtOmalOaIkOWKnycpOwogICAgfSwKICAgIC8vIOW8gOWni+i9ruivogogICAgc3RhcnRQbGF5OiBmdW5jdGlvbiBzdGFydFBsYXkoKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICB0aGlzLnRpbWVyICYmIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7CiAgICAgIHRoaXMudGltZXIgPSBudWxsOwogICAgICB0aGlzLnRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBfdGhpczckJHJlZnM7CiAgICAgICAgX3RoaXM3LnNldEN1cnJlbnRQbGF5ZXIoJ25leHQnKTsKICAgICAgICAoX3RoaXM3JCRyZWZzID0gX3RoaXM3LiRyZWZzKSA9PT0gbnVsbCB8fCBfdGhpczckJHJlZnMgPT09IHZvaWQgMCB8fCAoX3RoaXM3JCRyZWZzID0gX3RoaXM3JCRyZWZzLmNhcm91c2VsKSA9PT0gbnVsbCB8fCBfdGhpczckJHJlZnMgPT09IHZvaWQgMCB8fCBfdGhpczckJHJlZnMubmV4dCgpOwogICAgICAgIF90aGlzNy50YWdWaWRlbygpOwogICAgICB9LCB0aGlzLmludGVydmFsVGltZSAqIDEwMDApOwogICAgfSwKICAgIC8vIOiuvue9ruW9k+WJjeaSreaUvuW6j+WPtwogICAgc2V0Q3VycmVudFBsYXllcjogZnVuY3Rpb24gc2V0Q3VycmVudFBsYXllcih0eXBlKSB7CiAgICAgIGlmICh0eXBlID09PSAncHJldicpIHsKICAgICAgICAvLyDlvZPliY3mkq3mlL7lsY/nmoTluo/lj7cKICAgICAgICB0aGlzLmN1cnJlbnRQbGF5ZXIgPT09IDEgPyB0aGlzLmN1cnJlbnRQbGF5ZXIgPSB0aGlzLnZpZGVvV3JhcHBlciA6IHRoaXMuY3VycmVudFBsYXllci0tOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuY3VycmVudFBsYXllciA8IHRoaXMudmlkZW9XcmFwcGVyID8gdGhpcy5jdXJyZW50UGxheWVyKysgOiB0aGlzLmN1cnJlbnRQbGF5ZXIgPSAxOwogICAgICAgIGlmICh0aGlzLmN1cnJlbnRQbGF5ZXIgJSA1ICYmIHRoaXMucXVlcnlzQ291bnQgPCB0aGlzLnF1ZXJ5c0NvdW50VG90YWwpIHsKICAgICAgICAgIHRoaXMucXVlcnlzQ291bnQgPSB0aGlzLmN1cnJlbnRQbGF5ZXIgLyA1OwogICAgICAgICAgdGhpcy5nZXRVcmwoKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgY29uc29sZS5sb2coJ+W9k+WJjeaSreaUvuWxj+eahOW6j+WPtycsIHRoaXMuY3VycmVudFBsYXllciwgJy8nLCB0aGlzLnZpZGVvV3JhcHBlcik7CiAgICB9LAogICAgLy8g5bey57uP55yL6L+H55qEdGFn5Li65bey5beh5qOACiAgICB0YWdWaWRlbzogZnVuY3Rpb24gdGFnVmlkZW8oKSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwogICAgICB0aGlzLm9yaWdpblRyZWVEYXRhLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGluZGV4KSB7CiAgICAgICAgdmFyIG1pbkluZGV4ID0gX3RoaXM4LmN1cnJlbnRQbGF5ZXIgPT09IDEgPyAwIDogX3RoaXM4LmN1cnJlbnRQbGF5ZXIgKiBfdGhpczguc3BsaXQgKiBfdGhpczguc3BsaXQ7CiAgICAgICAgdmFyIG1heEluZGV4ID0gX3RoaXM4LmN1cnJlbnRQbGF5ZXIgKiBfdGhpczguc3BsaXQgKiBfdGhpczguc3BsaXQgLSAxOwogICAgICAgIHZhciBpbmRleFJhbmdlID0gQXJyYXkuZnJvbSh7CiAgICAgICAgICBsZW5ndGg6IG1heEluZGV4IC0gbWluSW5kZXggKyAxCiAgICAgICAgfSwgZnVuY3Rpb24gKF8sIGkpIHsKICAgICAgICAgIHJldHVybiBtaW5JbmRleCArIGk7CiAgICAgICAgfSk7CiAgICAgICAgaWYgKGluZGV4UmFuZ2UuaW5jbHVkZXMoaW5kZXgpKSB7CiAgICAgICAgICBpdGVtLmNoZWNrZWQgPSAxOwogICAgICAgIH0KICAgICAgfSk7CiAgICAgIGlmICh0aGlzLnNlYXJjaFNpdGUpIHsKICAgICAgICB0aGlzLnRyZWVEYXRhID0gdGhpcy5vcmlnaW5UcmVlRGF0YS5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIHJldHVybiBpdGVtLm5hbWUuaW5jbHVkZXMoX3RoaXM4LnNlYXJjaFNpdGUpOwogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMudHJlZURhdGEgPSBfdG9Db25zdW1hYmxlQXJyYXkodGhpcy5vcmlnaW5UcmVlRGF0YSk7CiAgICAgIH0KICAgIH0sCiAgICAvLyDliIfmjaLlsY/luZXml7bpu5jorqTkuIrmiqXmraPluLgKICAgIGNoYW5nZVBsYXllcjogZnVuY3Rpb24gY2hhbmdlUGxheWVyKG5ld0luZGV4LCBvbGRJbmRleCkgewogICAgICB0aGlzLnVwbG9hZFN0YXR1cyhvbGRJbmRleCk7IC8vIOm7mOiupOS4iuaKpeato+W4uAogICAgfSwKICAgIHVwbG9hZFN0YXR1czogZnVuY3Rpb24gdXBsb2FkU3RhdHVzKG9sZEluZGV4KSB7CiAgICAgIHZhciBfdGhpczkgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKCkgewogICAgICAgIHZhciB0YXJnZXQsIHF1ZXJ5OwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBpZiAoX3RoaXM5LnNwbGl0ID4gMSkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gX3RoaXM5LnF1ZXJ5c1tvbGRJbmRleF07CiAgICAgICAgICAgICAgICAgIHF1ZXJ5ID0gW107CiAgICAgICAgICAgICAgICAgIHRhcmdldC5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgcXVlcnkucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICBpbnNwZWNldFN0YXR1czogMCwKICAgICAgICAgICAgICAgICAgICAgIC8vMCDmraPluLgKICAgICAgICAgICAgICAgICAgICAgIHJhbms6IGl0ZW0ucmFuaywKICAgICAgICAgICAgICAgICAgICAgIHZpZGVvSWQ6IGl0ZW0uaWQsCiAgICAgICAgICAgICAgICAgICAgICB0YXNrSWQ6IF90aGlzOS50YXNrRGF0YS5pZAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IGRhdGEgPSBhd2FpdCBzYXZlUmVzdWx0QmF0Y2goKQogICAgICAgICAgICAgICAgfSBjYXRjaCAoX3VudXNlZDIpIHt9CiAgICAgICAgICAgICAgfSBlbHNlIHt9CiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMyk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOWIh+aNogogICAgaGFuZGxlQ2hhbmdlUGFnZTogZnVuY3Rpb24gaGFuZGxlQ2hhbmdlUGFnZSh0eXBlKSB7CiAgICAgIHRoaXMuJHJlZnMuY2Fyb3VzZWxbdHlwZV0oKTsKICAgICAgdGhpcy5zZXRDdXJyZW50UGxheWVyKHR5cGUpOwogICAgICB0aGlzLnRhZ1ZpZGVvKCk7CiAgICB9LAogICAgaGFuZGxlUmVwb3J0OiBmdW5jdGlvbiBoYW5kbGVSZXBvcnQoaW5kZXgpIHsKICAgICAgaWYgKHRoaXMucGxheWluZykgdGhpcy5oYW5kbGVQbGF5KCk7CiAgICAgIGNvbnNvbGUubG9nKGluZGV4KTsKICAgICAgdGhpcy5yZXBvcnREaWFsb2cgPSB0cnVlOwogICAgfSwKICAgIGhhbmRsZUN1dDogZnVuY3Rpb24gaGFuZGxlQ3V0KCkgewogICAgICBpZiAodGhpcy5wbGF5aW5nKSB0aGlzLmhhbmRsZVBsYXkoKTsKICAgICAgY29uc29sZS5sb2coaW5kZXgpOwogICAgfSwKICAgIGhhbmRsZVNlYXJjaFNpdGU6IGZ1bmN0aW9uIGhhbmRsZVNlYXJjaFNpdGUodmFsKSB7CiAgICAgIGlmICh2YWwpIHsKICAgICAgICB0aGlzLnRyZWVEYXRhID0gdGhpcy5vcmlnaW5UcmVlRGF0YS5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIHJldHVybiBpdGVtLm5hbWUuaW5jbHVkZXModmFsKTsKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLnRyZWVEYXRhID0gX3RvQ29uc3VtYWJsZUFycmF5KHRoaXMub3JpZ2luVHJlZURhdGEpOwogICAgICB9CiAgICB9LAogICAgLy/ojrflj5bmlbDmja4KICAgIGxvYWRUcmVlOiBmdW5jdGlvbiBsb2FkVHJlZSh0YXNrRGF0YSkgewogICAgICB2YXIgX3RoaXMxMCA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQoKSB7CiAgICAgICAgdmFyIGRhdGE7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU0JChfY29udGV4dDQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NC5wcmV2ID0gX2NvbnRleHQ0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIGlmICh0YXNrRGF0YS5pZCkgewogICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuYWJydXB0KCJyZXR1cm4iKTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIF9jb250ZXh0NC5wcmV2ID0gMjsKICAgICAgICAgICAgICBfdGhpczEwLnRyZWVMb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDY7CiAgICAgICAgICAgICAgcmV0dXJuIHRhc2tEZXRhaWwodGFza0RhdGEuaWQpOwogICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgZGF0YSA9IF9jb250ZXh0NC5zZW50OwogICAgICAgICAgICAgIF90aGlzMTAudGFza0RhdGEgPSBkYXRhOwogICAgICAgICAgICAgIF90aGlzMTAudHJlZURhdGEgPSBkYXRhLnRhc2tWaWRlbyB8fCBbXTsKICAgICAgICAgICAgICBfdGhpczEwLm9yaWdpblRyZWVEYXRhID0gX3RvQ29uc3VtYWJsZUFycmF5KF90aGlzMTAudHJlZURhdGEpOwogICAgICAgICAgICAgIF90aGlzMTAudHJlZUxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICBfdGhpczEwLmNvdW50V3JhcHBlcigpOwogICAgICAgICAgICAgIF90aGlzMTAucHJlbG9hZFZpZGVvVXJsKCk7CiAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAxODsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICBfY29udGV4dDQucHJldiA9IDE1OwogICAgICAgICAgICAgIF9jb250ZXh0NC50MCA9IF9jb250ZXh0NFsiY2F0Y2giXSgyKTsKICAgICAgICAgICAgICBjb25zb2xlLmxvZyhfY29udGV4dDQudDApOwogICAgICAgICAgICBjYXNlIDE4OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU0LCBudWxsLCBbWzIsIDE1XV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDmlLnlj5jpobXpnaIKICAgIGNoYW5nZVBhZ2U6IGZ1bmN0aW9uIGNoYW5nZVBhZ2UoKSB7CiAgICAgIHZhciBwYWdlTmFtZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogJyc7CiAgICAgIHZhciByb3cgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9OwogICAgICBpZiAoIXBhZ2VOYW1lKSByZXR1cm47CiAgICAgIHRoaXMuY2xlYXIoKTsKICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlUGFnZScsIHBhZ2VOYW1lLCBmdW5jdGlvbiAoXykgewogICAgICAgIFB1YlN1Yi5wdWJsaXNoKHBhZ2VOYW1lLCByb3cpOwogICAgICB9LCByb3cuaWQgPyAn57yW6L6RJyA6ICfmt7vliqAnKTsKICAgIH0sCiAgICBjbGVhcjogZnVuY3Rpb24gY2xlYXIoKSB7CiAgICAgIHRoaXMuaW5pdFZpZGVvID0gZmFsc2U7CiAgICAgIHRoaXMucGxheWluZyA9IGZhbHNlOwogICAgICB0aGlzLnJlYWR5Q291bnQgPSAwOwogICAgICB0aGlzLnRpbWVyICYmIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7CiAgICAgIHRoaXMudGltZXIgPSBudWxsOwogICAgICB0aGlzLnRhc2tEYXRhID0gbnVsbDsKICAgICAgdGhpcy5zdG9wQWxsKCk7CiAgICAgIHRoaXMuY3VycmVudFBsYXllciA9IDE7CiAgICB9CiAgfSwKICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkgewogICAgdGhpcy5jbGVhcigpOwogICAgLy8g5Zyo57uE5Lu26ZSA5q+B5LmL5YmNIOa4hemZpOiuoumYhea2iOaBrwogICAgUHViU3ViLnVuc3Vic2NyaWJlKHRoaXMucHViU3ViKTsKICB9Cn07"},null]}