{"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\\EditAddPage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\videoPatrol\\videoInspection\\components\\EditAddPage\\index.vue","mtime":1743019738097},{"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:aW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS94Y2p5LWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIjsKaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS94Y2p5LWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5LmpzIjsKaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKdmFyIF9leGNsdWRlZCA9IFsicGxhblR5cGUiLCAidGFza0NvbmZWaWRlbyIsICJjb25mVHlwZSIsICJ0eXBlIl0sCiAgX2V4Y2x1ZGVkMiA9IFsidGFza0NvbmZWaWRlbyJdOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLWluZGV4LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5jbHVkZXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc29ydC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNwbGljZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmZpbHRlci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRlc3QuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmluY2x1ZGVzLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCBQdWJTdWIgZnJvbSAncHVic3ViLWpzJzsKaW1wb3J0IHsgdGFza0RldGFpbCwgdGFza1NhdmUgfSBmcm9tICdAL2FwaS9wYXRyb2xBbmRSZXNjdWUvdmlkZW9QYXRyb2wvdmlkZW9Db25maWcnOwppbXBvcnQgcGFnaW5hdGlvbiBmcm9tICdAL2NvbXBvbmVudHMvU3VwZXJQYWdpbmF0aW9uL2luZGV4LnZ1ZSc7CmltcG9ydCB7IGdldERpY3Rpb25hcnlCeUNvZGUsIGRpY3Rpb25hcnlFc2NhcGUgfSBmcm9tICdAL3V0aWxzL2RpY3Rpb25hcnknOwppbXBvcnQgVmlkZW9TaXRlU2VsZWN0b3JEaWFsb2cgZnJvbSAnQC9jb21wb25lbnRzL1RyZWVUYWJsZVNlbGVjdG9yL1ZpZGVvU2l0ZVNlbGVjdG9yRGlhbG9nL2luZGV4LnZ1ZSc7CmltcG9ydCB7IGdldFNvcnRlckRpcmVjdGlvbiwgcmVmaW5lUmVxdWVzdEJvZHksIHNldFF1ZXJ5VmFsdWUgfSBmcm9tICdAL3V0aWxzL3JlcXVlc3RXcmFwcGVycyc7CmltcG9ydCB7IHRhYmxlRGF0YSwgZXhlY3V0ZUpvYiB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS92aWRlb1BhdHJvbC92aWRlb0NvbmZpZyc7CmltcG9ydCB7IG1hcFN0YXRlIH0gZnJvbSAndnVleCc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnRWRpdEFkZFBhZ2UnLAogIHByb3BzOiB7CiAgICBjb21wb25lbnROYW1lOiB7CiAgICAgIGRlZmF1bHQ6ICdFZGl0QWRkUGFnZScsCiAgICAgIHR5cGU6IFN0cmluZwogICAgfQogIH0sCiAgY29tcG9uZW50czogewogICAgVmlkZW9TaXRlU2VsZWN0b3JEaWFsb2c6IFZpZGVvU2l0ZVNlbGVjdG9yRGlhbG9nLAogICAgcGFnaW5hdGlvbjogcGFnaW5hdGlvbgogIH0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIHRhYmxlTWF4SGVpZ2h0OiA0NjAsCiAgICAgIHNlbGVjdEZyb21Nb2RlbDogJ+mAieaLqeaooeeJiCcsCiAgICAgIGFkZEVkaXRGb3JtOiB7CiAgICAgICAgY29uZk5hbWU6ICcnLAogICAgICAgIGNvbmZDb2RlOiAnJywKICAgICAgICB0eXBlOiAnJywKICAgICAgICByb2FkSWQ6ICcnLAogICAgICAgIHJvYWROYW1lOiAnJywKICAgICAgICBjb25mVHlwZTogJycsCiAgICAgICAgdGFza0NvbmZWaWRlbzogW10KICAgICAgfSwKICAgICAgYWRkRWRpdFJ1bGVzOiB7CiAgICAgICAgY29uZk5hbWU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfmqKHniYjlkI3np7DkuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogWydibHVyJywgJ2NoYW5nZSddCiAgICAgICAgfV0sCiAgICAgICAgY29uZkNvZGU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfmqKHniYjnvJbnoIHkuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogWydibHVyJywgJ2NoYW5nZSddCiAgICAgICAgfV0sCiAgICAgICAgdHlwZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+W3oeajgOexu+Wei+S4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2JsdXInLCAnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICB0YXNrQ29uZlZpZGVvOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5beh5qOA6KeG6aKR54K55L2N5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6ICdjaGFuZ2UnCiAgICAgICAgfV0sCiAgICAgICAgcmFuazogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+aOkuW6j+WPt+S4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XQogICAgICB9LAogICAgICBzYXZlTG9hZGluZzogZmFsc2UsCiAgICAgIC8vIOS4iuS8oGxvYWRpbmcKICAgICAgaWQ6ICcnLAogICAgICAvLyBpZOagh+ivhuespgogICAgICBzYXZlZDogZmFsc2UsCiAgICAgIC8vIOaWsOWinuaIkOWKnwogICAgICB3aGV0aGVyVG9DYW5jZWw6IGZhbHNlLAogICAgICBwdWJTdWI6IG51bGwsCiAgICAgIHZpZGVvRGlhbG9nOiBmYWxzZSwKICAgICAgcGxhbkRpc2FibGU6IGZhbHNlLAogICAgICBjdXJyZW50RGF0YURlbDogW10sCiAgICAgIHRlbXBsYXRlRGF0YTogW10sCiAgICAgIC8vIOW3oeajgOaooeeJiOaVsOaNrgogICAgICB0ZW1wbGF0ZU5hbWU6IFtdLAogICAgICBjdXJyZW50Um93OiB7fSwKICAgICAgcGFyYW1zOiB7CiAgICAgICAgcGFnZUJlYW46IHsKICAgICAgICAgIHBhZ2VTaXplOiAyMCwKICAgICAgICAgIHBhZ2U6IDEsCiAgICAgICAgICB0b3RhbDogMAogICAgICAgIH0sCiAgICAgICAgcXVlcnlzOiBbewogICAgICAgICAgb3BlcmF0aW9uOiAnTElLRScsCiAgICAgICAgICBwcm9wZXJ0eTogJ2NvbmZOYW1lJwogICAgICAgIH0sIHsKICAgICAgICAgIG9wZXJhdGlvbjogJ0VRVUFMJywKICAgICAgICAgIHByb3BlcnR5OiAncm9hZElkJwogICAgICAgIH1dLAogICAgICAgIHNvcnRlcjogW3sKICAgICAgICAgIGRpcmVjdGlvbjogJycsCiAgICAgICAgICBwcm9wZXJ0eTogJycKICAgICAgICB9XQogICAgICB9CiAgICB9OwogIH0sCiAgd2F0Y2g6IHsKICAgIGNvbXBvbmVudE5hbWU6IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihuZXdWYWwpIHsKICAgICAgICBpZiAobmV3VmFsID09PSB0aGlzLiRvcHRpb25zLm5hbWUpIHsKICAgICAgICAgIHRoaXMub3BlblBhZ2UoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy5jbG9zZVBhZ2UoKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogIGNvbXB1dGVkOiBfb2JqZWN0U3ByZWFkKHsKICAgIGFjdGlvblVybDogZnVuY3Rpb24gYWN0aW9uVXJsKF8pIHsKICAgICAgcmV0dXJuIHdpbmRvdy5jb250ZXh0LnBvcnRhbDsKICAgIH0sCiAgICBwcmV2aWV3VXJsOiBmdW5jdGlvbiBwcmV2aWV3VXJsKF8pIHsKICAgICAgcmV0dXJuIHdpbmRvdy5jb250ZXh0LnBvcnRhbCArICcvZmlsZS9vbmxpbmVQcmV2aWV3Q29udHJvbGxlci92MS9nZXRGaWxlQnlJZF8nOwogICAgfSwKICAgIGRvd25sb2FkVXJsOiBmdW5jdGlvbiBkb3dubG9hZFVybChfKSB7CiAgICAgIHJldHVybiB3aW5kb3cuY29udGV4dC5wb3J0YWwgKyAnL2ZpbGUvdjEvZG93bmxvYWRGaWxlP2ZpbGVJZD0nOwogICAgfQogIH0sIG1hcFN0YXRlKHsKICAgIGhlYWRlcnM6IGZ1bmN0aW9uIGhlYWRlcnMoc3RhdGUpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBBdXRob3JpemF0aW9uOiAiQmVhcmVyICIuY29uY2F0KHN0YXRlLmxvZ2luLmN1cnJlbnRVc2VyLnRva2VuKQogICAgICB9OwogICAgfQogIH0pKSwKICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgewogICAgdmFyIF90aGlzID0gdGhpczsKICAgIHRoaXMucHViU3ViID0gUHViU3ViLnN1YnNjcmliZSgnRWRpdEFkZFBhZ2UnLCBmdW5jdGlvbiAoXywgZGF0YSkgewogICAgICBpZiAoZGF0YS5pZCkgewogICAgICAgIF90aGlzLmlkID0gZGF0YS5pZDsKICAgICAgICBfdGhpcy5nZXREZXRhaWwoZGF0YS5pZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX3RoaXMuY3VycmVudFJvdyA9IHt9OwogICAgICAgIF90aGlzLmFkZEVkaXRGb3JtLnJvYWRJZCA9IGRhdGEucm9hZElkIHx8ICcnOwogICAgICAgIF90aGlzLmFkZEVkaXRGb3JtLnJvYWROYW1lID0gZGF0YS5yb2FkTmFtZSB8fCAnJzsKICAgICAgICBzZXRRdWVyeVZhbHVlKF90aGlzLnBhcmFtcywgJ3JvYWRJZCcsIGRhdGEucm9hZElkIHx8ICcnKTsKICAgICAgICBfdGhpcy5sb2FkVGVtcGxhdGVEYXRhKCk7CiAgICAgIH0KICAgIH0pOwogIH0sCiAgbWV0aG9kczogewogICAgZGljdGlvbmFyeUVzY2FwZTogZGljdGlvbmFyeUVzY2FwZSwKICAgIGdldERpY3Rpb25hcnlCeUNvZGU6IGdldERpY3Rpb25hcnlCeUNvZGUsCiAgICAvLyDmiZPlvIDpobXpnaLmiafooYwKICAgIG9wZW5QYWdlOiBmdW5jdGlvbiBvcGVuUGFnZSgpIHsKICAgICAgdGhpcy53aGV0aGVyVG9DYW5jZWwgPSB0cnVlOwogICAgfSwKICAgIC8vIOWFs+mXremhtemdouaJp+ihjAogICAgY2xvc2VQYWdlOiBmdW5jdGlvbiBjbG9zZVBhZ2UoKSB7CiAgICAgIHZhciBfdGhpcyQkcmVmcyR1cGxvYWRlciwKICAgICAgICBfdGhpczIgPSB0aGlzOwogICAgICB2YXIgYWRkRWRpdFJ1bGVzID0gdGhpcy5hZGRFZGl0UnVsZXMsCiAgICAgICAgcHViU3ViID0gdGhpcy5wdWJTdWI7CiAgICAgIChfdGhpcyQkcmVmcyR1cGxvYWRlciA9IHRoaXMuJHJlZnMudXBsb2FkZXIpID09PSBudWxsIHx8IF90aGlzJCRyZWZzJHVwbG9hZGVyID09PSB2b2lkIDAgfHwgKF90aGlzJCRyZWZzJHVwbG9hZGVyID0gX3RoaXMkJHJlZnMkdXBsb2FkZXIudXBsb2FkZXIpID09PSBudWxsIHx8IF90aGlzJCRyZWZzJHVwbG9hZGVyID09PSB2b2lkIDAgfHwgX3RoaXMkJHJlZnMkdXBsb2FkZXIuY2FuY2VsKCk7CiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKF8pIHsKICAgICAgICBPYmplY3QuYXNzaWduKF90aGlzMi4kZGF0YSwgX3RoaXMyLiRvcHRpb25zLmRhdGEuY2FsbChfdGhpczIpLCB7CiAgICAgICAgICBhZGRFZGl0UnVsZXM6IGFkZEVkaXRSdWxlcywKICAgICAgICAgIHB1YlN1YjogcHViU3ViCiAgICAgICAgfSk7CiAgICAgICAgLy8g6YeN572u57uE5Lu25pWw5o2uCiAgICAgICAgX3RoaXMyLiRuZXh0VGljayhmdW5jdGlvbiAoXykgewogICAgICAgICAgX3RoaXMyLmN1cnJlbnRSb3cgPSB7fTsKICAgICAgICAgIF90aGlzMi4kcmVmcy5hZGRFZGl0Rm9ybS4kZWwuc2Nyb2xsVG9wID0gMDsKICAgICAgICAgIF90aGlzMi4kcmVmcy5hZGRFZGl0Rm9ybS5jbGVhclZhbGlkYXRlKCk7CiAgICAgICAgfSk7CiAgICAgIH0sIDApOwogICAgfSwKICAgIGxvYWRUZW1wbGF0ZURhdGE6IGZ1bmN0aW9uIGxvYWRUZW1wbGF0ZURhdGEoKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7CiAgICAgICAgdmFyIF95aWVsZCR0YWJsZURhdGEsIF95aWVsZCR0YWJsZURhdGEkdG90YSwgdG90YWwsIF95aWVsZCR0YWJsZURhdGEkcm93cywgcm93czsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gMDsKICAgICAgICAgICAgICBfdGhpczMudGFibGVMb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNDsKICAgICAgICAgICAgICByZXR1cm4gdGFibGVEYXRhKHJlZmluZVJlcXVlc3RCb2R5KF90aGlzMy5wYXJhbXMpKTsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgIF95aWVsZCR0YWJsZURhdGEgPSBfY29udGV4dC5zZW50OwogICAgICAgICAgICAgIF95aWVsZCR0YWJsZURhdGEkdG90YSA9IF95aWVsZCR0YWJsZURhdGEudG90YWw7CiAgICAgICAgICAgICAgdG90YWwgPSBfeWllbGQkdGFibGVEYXRhJHRvdGEgPT09IHZvaWQgMCA/IDAgOiBfeWllbGQkdGFibGVEYXRhJHRvdGE7CiAgICAgICAgICAgICAgX3lpZWxkJHRhYmxlRGF0YSRyb3dzID0gX3lpZWxkJHRhYmxlRGF0YS5yb3dzOwogICAgICAgICAgICAgIHJvd3MgPSBfeWllbGQkdGFibGVEYXRhJHJvd3MgPT09IHZvaWQgMCA/IFtdIDogX3lpZWxkJHRhYmxlRGF0YSRyb3dzOwogICAgICAgICAgICAgIF90aGlzMy5wYXJhbXMucGFnZUJlYW4udG90YWwgPSB0b3RhbDsKICAgICAgICAgICAgICBfdGhpczMudGVtcGxhdGVEYXRhID0gcm93cy5tYXAoZnVuY3Rpb24gKGkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKHsKICAgICAgICAgICAgICAgICAgaXNFbmFibGU6IGkudGFza1N0YXR1cyA9PT0gJ05PUk1BTCcKICAgICAgICAgICAgICAgIH0sIGkpOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAxMTsKICAgICAgICAgICAgICBfdGhpczMudGFibGVMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmZpbmlzaCgxMSk7CiAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlLCBudWxsLCBbWzAsLCAxMSwgMTRdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGdldFRlbXBsYXRlRGF0YTogZnVuY3Rpb24gZ2V0VGVtcGxhdGVEYXRhKHZhbCkgewogICAgICBzZXRRdWVyeVZhbHVlKHRoaXMucGFyYW1zLCAnY29uZk5hbWUnLCB2YWwgfHwgJycpOwogICAgICB0aGlzLmxvYWRUZW1wbGF0ZURhdGEoKTsKICAgIH0sCiAgICBoYW5kbGVTZWxlY3Rpb25DaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZVNlbGVjdGlvbkNoYW5nZSh2YWwpIHsKICAgICAgdGhpcy5jdXJyZW50RGF0YURlbCA9IHZhbC5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICByZXR1cm4gaXRlbS5pZDsKICAgICAgfSk7CiAgICB9LAogICAgaGFuZGxlVmlkZW9Db25maXJtOiBmdW5jdGlvbiBoYW5kbGVWaWRlb0NvbmZpcm0oZGF0YSkgewogICAgICB2YXIgdGVtcERhdGEgPSBkYXRhLm1hcChmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHsKICAgICAgICBpdGVtLnJhbmsgPSBpbmRleDsgLy8gaXRlbS5yYW5rID8gaXRlbS5yYW5rIDogaW5kZXggKyAxCiAgICAgICAgaXRlbS52aWRlb0lkID0gaXRlbS5pZDsKICAgICAgICBpdGVtLnZpZGVvTmFtZSA9IGl0ZW0ubmFtZTsKICAgICAgICByZXR1cm4gaXRlbTsKICAgICAgfSk7CiAgICAgIHRoaXMuJHNldCh0aGlzLmFkZEVkaXRGb3JtLCAndGFza0NvbmZWaWRlbycsIHRlbXBEYXRhKTsKICAgICAgdGhpcy5hZGRFZGl0Rm9ybS50YXNrQ29uZlZpZGVvID0gdGVtcERhdGE7CiAgICAgIHRoaXMuJGZvcmNlVXBkYXRlKCk7CiAgICB9LAogICAgZGVsZXRlVmlkZW86IGZ1bmN0aW9uIGRlbGV0ZVZpZGVvKGluZGV4KSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICB0aGlzLiRjb25maXJtKCfnoa7lrprliKDpmaTpgInkuK3op4bpopHngrnkvY3lkJfvvJ8nLCAn5o+Q56S6JywgewogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu6K6kJywKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgfSkudGhlbigvKiNfX1BVUkVfXyovX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKCkgewogICAgICAgIHZhciB0ZW1wRGF0YTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgaWYgKGluZGV4IHx8IGluZGV4ID09PSAwKSB7CiAgICAgICAgICAgICAgICBfdGhpczQuYWRkRWRpdEZvcm0udGFza0NvbmZWaWRlby5zcGxpY2UoaW5kZXgsIDEpOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0ZW1wRGF0YSA9IF90aGlzNC5hZGRFZGl0Rm9ybS50YXNrQ29uZlZpZGVvLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgICByZXR1cm4gIV90aGlzNC5jdXJyZW50RGF0YURlbC5pbmNsdWRlcyhpdGVtLmlkKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgY29uc29sZS5sb2codGVtcERhdGEsIF90aGlzNC5hZGRFZGl0Rm9ybS50YXNrQ29uZlZpZGVvKTsKICAgICAgICAgICAgICAgIF90aGlzNC5hZGRFZGl0Rm9ybS50YXNrQ29uZlZpZGVvID0gX3RvQ29uc3VtYWJsZUFycmF5KHRlbXBEYXRhKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMik7CiAgICAgIH0pKSkuY2F0Y2goZnVuY3Rpb24gKF8pIHsKICAgICAgICByZXR1cm4gXzsKICAgICAgfSk7CiAgICB9LAogICAgc2hvd0RpYWxvZzogZnVuY3Rpb24gc2hvd0RpYWxvZyh0eXBlKSB7CiAgICAgIHRoaXNbIiIuY29uY2F0KHR5cGUsICJEaWFsb2ciKV0gPSB0cnVlOwogICAgfSwKICAgIC8vIOiOt+WPluivpuaDhQogICAgZ2V0RGV0YWlsOiBmdW5jdGlvbiBnZXREZXRhaWwoaWQpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoKSB7CiAgICAgICAgdmFyIF95aWVsZCR0YXNrRGV0YWlsLCBfeWllbGQkdGFza0RldGFpbCRwbGEsIHBsYW5UeXBlLCBfeWllbGQkdGFza0RldGFpbCR0YXMsIHRhc2tDb25mVmlkZW8sIF95aWVsZCR0YXNrRGV0YWlsJGNvbiwgY29uZlR5cGUsIF95aWVsZCR0YXNrRGV0YWlsJHR5cCwgdHlwZSwgYWRkRWRpdEZvcm0sIHRhc2tDb25mVmlkZW9UYW1wOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIHRhc2tEZXRhaWwoaWQpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX3lpZWxkJHRhc2tEZXRhaWwgPSBfY29udGV4dDMuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkdGFza0RldGFpbCRwbGEgPSBfeWllbGQkdGFza0RldGFpbC5wbGFuVHlwZTsKICAgICAgICAgICAgICBwbGFuVHlwZSA9IF95aWVsZCR0YXNrRGV0YWlsJHBsYSA9PT0gdm9pZCAwID8gJycgOiBfeWllbGQkdGFza0RldGFpbCRwbGE7CiAgICAgICAgICAgICAgX3lpZWxkJHRhc2tEZXRhaWwkdGFzID0gX3lpZWxkJHRhc2tEZXRhaWwudGFza0NvbmZWaWRlbzsKICAgICAgICAgICAgICB0YXNrQ29uZlZpZGVvID0gX3lpZWxkJHRhc2tEZXRhaWwkdGFzID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCR0YXNrRGV0YWlsJHRhczsKICAgICAgICAgICAgICBfeWllbGQkdGFza0RldGFpbCRjb24gPSBfeWllbGQkdGFza0RldGFpbC5jb25mVHlwZTsKICAgICAgICAgICAgICBjb25mVHlwZSA9IF95aWVsZCR0YXNrRGV0YWlsJGNvbiA9PT0gdm9pZCAwID8gJycgOiBfeWllbGQkdGFza0RldGFpbCRjb247CiAgICAgICAgICAgICAgX3lpZWxkJHRhc2tEZXRhaWwkdHlwID0gX3lpZWxkJHRhc2tEZXRhaWwudHlwZTsKICAgICAgICAgICAgICB0eXBlID0gX3lpZWxkJHRhc2tEZXRhaWwkdHlwID09PSB2b2lkIDAgPyAnJyA6IF95aWVsZCR0YXNrRGV0YWlsJHR5cDsKICAgICAgICAgICAgICBhZGRFZGl0Rm9ybSA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfeWllbGQkdGFza0RldGFpbCwgX2V4Y2x1ZGVkKTsKICAgICAgICAgICAgICB0YXNrQ29uZlZpZGVvVGFtcCA9IHRhc2tDb25mVmlkZW8uc29ydChmdW5jdGlvbiAoYSwgYikgewogICAgICAgICAgICAgICAgcmV0dXJuIGEucmFuayAtIGIucmFuazsKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICBfdGhpczUuYWRkRWRpdEZvcm0gPSBfb2JqZWN0U3ByZWFkKHsKICAgICAgICAgICAgICAgIGNvbmZUeXBlOiBjb25mVHlwZS50b1N0cmluZygpIHx8ICcnLAogICAgICAgICAgICAgICAgcGxhblR5cGU6IHBsYW5UeXBlLnRvU3RyaW5nKCkgfHwgJycsCiAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLnRvU3RyaW5nKCkgfHwgJycsCiAgICAgICAgICAgICAgICB0YXNrQ29uZlZpZGVvOiB0YXNrQ29uZlZpZGVvVGFtcC5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgaXRlbS5pZCA9IGl0ZW0udmlkZW9JZDsKICAgICAgICAgICAgICAgICAgaXRlbS5yYW5rID0gaXRlbS5yYW5rOwogICAgICAgICAgICAgICAgICBpdGVtLm5hbWUgPSBpdGVtLnZpZGVvTmFtZTsKICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgIH0sIGFkZEVkaXRGb3JtKTsKICAgICAgICAgICAgY2FzZSAxNDoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMyk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOaooeeJiOexu+Wei+aUueWPmAogICAgY2hhbmdlQ29uZlR5cGU6IGZ1bmN0aW9uIGNoYW5nZUNvbmZUeXBlKHZhbCkgewogICAgICBpZiAodmFsID09PSAnMicpIHsKICAgICAgICB0aGlzLnBsYW5EaXNhYmxlID0gdHJ1ZTsKICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLnBsYW5UeXBlID0gJzEnOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMucGxhbkRpc2FibGUgPSBmYWxzZTsKICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLnBsYW5UeXBlID0gJzEnOwogICAgICB9CiAgICB9LAogICAgLy8g6YCJ5oup5qih54mICiAgICBoYW5kbGVDdXJyZW50Q2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVDdXJyZW50Q2hhbmdlKHZhbCkgewogICAgICB0aGlzLmN1cnJlbnRSb3cgPSB2YWw7CiAgICB9LAogICAgLy8g5L+d5a2YCiAgICBoYW5kbGVTYXZlOiBmdW5jdGlvbiBoYW5kbGVTYXZlKCkgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNSgpIHsKICAgICAgICB2YXIgZGF0YSwgX3lpZWxkJGV4ZWN1dGVKb2IsIHN0YXRlLCBtZXNzYWdlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNSQoX2NvbnRleHQ1KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDUucHJldiA9IF9jb250ZXh0NS5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBpZiAoIShfdGhpczYuc2VsZWN0RnJvbU1vZGVsID09PSAn6YCJ5oup5qih54mIJykpIHsKICAgICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gMTM7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKF90aGlzNi5jdXJyZW50Um93LmlkKSB7CiAgICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mAieaLqeaooeeJiCcpOwogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuYWJydXB0KCJyZXR1cm4iKTsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgIGRhdGEgPSBfdGhpczYucXMuc3RyaW5naWZ5KHsKICAgICAgICAgICAgICAgIGlkOiBfdGhpczYuY3VycmVudFJvdy5pZAogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gNzsKICAgICAgICAgICAgICByZXR1cm4gZXhlY3V0ZUpvYihkYXRhKTsKICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgIF95aWVsZCRleGVjdXRlSm9iID0gX2NvbnRleHQ1LnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkZXhlY3V0ZUpvYi5zdGF0ZTsKICAgICAgICAgICAgICBtZXNzYWdlID0gX3lpZWxkJGV4ZWN1dGVKb2IubWVzc2FnZTsKICAgICAgICAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgICAgICAgIF90aGlzNi4kbWVzc2FnZS5zdWNjZXNzKCJcdTg5QzZcdTk4OTFcdTVERTFcdTY4QzBcdTRFRkJcdTUyQTFcdTZERkJcdTUyQTBcdTYyMTBcdTUyOUYiKTsKICAgICAgICAgICAgICAgIF90aGlzNi5jaGFuZ2VQYWdlKCdUYWJsZVBhZ2UnLCBfdGhpczYuaWQgPyAnZWRpdCcgOiAnYWRkJyk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF90aGlzNi4kbWVzc2FnZS53YXJuaW5nKG1lc3NhZ2UgfHwgIlx1ODlDNlx1OTg5MVx1NURFMVx1NjhDMFx1NEVGQlx1NTJBMVx1NkRGQlx1NTJBMFx1NTkzMVx1OEQyNVx1RkYwMSIpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDE0OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICAgIF90aGlzNi4kcmVmcy5hZGRFZGl0Rm9ybS52YWxpZGF0ZSgvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIF9yZWYyID0gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU0KHZhbGlkLCBvYmplY3QpIHsKICAgICAgICAgICAgICAgICAgdmFyIF90aGlzNiRhZGRFZGl0Rm9ybSwgX3RoaXM2JGFkZEVkaXRGb3JtJHRhLCB0YXNrQ29uZlZpZGVvLCBhZGRFZGl0Rm9ybSwgX3lpZWxkJHRhc2tTYXZlLCBfc3RhdGUsIF9tZXNzYWdlLCB2YWx1ZSwgX2RhdGEsIF95aWVsZCRleGVjdXRlSm9iMiwgX3N0YXRlMiwgX21lc3NhZ2UyOwogICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTQkKF9jb250ZXh0NCkgewogICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NC5wcmV2ID0gX2NvbnRleHQ0Lm5leHQpIHsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSA0OwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNi4kbWVzc2FnZS53YXJuaW5nKCJcdTY3MDkiLmNvbmNhdChPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCwgIlx1NEUyQVx1NUI1N1x1NkJCNVx1NjcyQVx1OTAxQVx1OEZDN1x1NjgyMVx1OUE4Q1x1RkYwQ1x1OEJGN1x1NkI2M1x1Nzg2RVx1NTg2Qlx1NTE5OVx1ODg2OFx1NTM1NVx1NTE4NVx1NUJCOVx1MzAwMiIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAyODsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNi5zYXZlTG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNiRhZGRFZGl0Rm9ybSA9IF90aGlzNi5hZGRFZGl0Rm9ybSwgX3RoaXM2JGFkZEVkaXRGb3JtJHRhID0gX3RoaXM2JGFkZEVkaXRGb3JtLnRhc2tDb25mVmlkZW8sIHRhc2tDb25mVmlkZW8gPSBfdGhpczYkYWRkRWRpdEZvcm0kdGEgPT09IHZvaWQgMCA/IFtdIDogX3RoaXM2JGFkZEVkaXRGb3JtJHRhLCBhZGRFZGl0Rm9ybSA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdGhpczYkYWRkRWRpdEZvcm0sIF9leGNsdWRlZDIpOwogICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDQucHJldiA9IDY7CiAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gOTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhc2tTYXZlKF9vYmplY3RTcHJlYWQoewogICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tDb25mVmlkZW86IHRhc2tDb25mVmlkZW8ubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmFuayA9IGl0ZW0ucmFuaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2l0ZW0kdGFza0NvbmZJZCA9IGl0ZW0udGFza0NvbmZJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza0NvbmZJZCA9IF9pdGVtJHRhc2tDb25mSWQgPT09IHZvaWQgMCA/ICcnIDogX2l0ZW0kdGFza0NvbmZJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9JZCA9IGl0ZW0udmlkZW9JZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9OYW1lID0gaXRlbS52aWRlb05hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5rOiByYW5rLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrQ29uZklkOiB0YXNrQ29uZklkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0lkOiB2aWRlb0lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb05hbWU6IHZpZGVvTmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9LCBhZGRFZGl0Rm9ybSkpOwogICAgICAgICAgICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgICAgICAgICAgICBfeWllbGQkdGFza1NhdmUgPSBfY29udGV4dDQuc2VudDsKICAgICAgICAgICAgICAgICAgICAgICAgX3N0YXRlID0gX3lpZWxkJHRhc2tTYXZlLnN0YXRlOwogICAgICAgICAgICAgICAgICAgICAgICBfbWVzc2FnZSA9IF95aWVsZCR0YXNrU2F2ZS5tZXNzYWdlOwogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IF95aWVsZCR0YXNrU2F2ZS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFfc3RhdGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDI0OwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNi5jaGFuZ2VQYWdlKCdUYWJsZVBhZ2UnLCBfdGhpczYuaWQgPyAnZWRpdCcgOiAnYWRkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIF9kYXRhID0gX3RoaXM2LnFzLnN0cmluZ2lmeSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDE4OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhlY3V0ZUpvYihfZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE4OgogICAgICAgICAgICAgICAgICAgICAgICBfeWllbGQkZXhlY3V0ZUpvYjIgPSBfY29udGV4dDQuc2VudDsKICAgICAgICAgICAgICAgICAgICAgICAgX3N0YXRlMiA9IF95aWVsZCRleGVjdXRlSm9iMi5zdGF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgX21lc3NhZ2UyID0gX3lpZWxkJGV4ZWN1dGVKb2IyLm1lc3NhZ2U7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfc3RhdGUyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlLnN1Y2Nlc3MoIlx1ODlDNlx1OTg5MVx1NURFMVx1NjhDMFx1NEVGQlx1NTJBMVx1NkRGQlx1NTJBMFx1NjIxMFx1NTI5RiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNi5jaGFuZ2VQYWdlKCdUYWJsZVBhZ2UnLCBfdGhpczYuaWQgPyAnZWRpdCcgOiAnYWRkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlLndhcm5pbmcoX21lc3NhZ2UyIHx8ICJcdTg5QzZcdTk4OTFcdTVERTFcdTY4QzBcdTRFRkJcdTUyQTFcdTZERkJcdTUyQTBcdTU5MzFcdThEMjVcdUZGMDEiKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDI1OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjQ6CiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNi4kbWVzc2FnZS53YXJuaW5nKF9tZXNzYWdlIHx8ICJcdTg5QzZcdTk4OTFcdTVERTFcdTY4QzBcdTRFRkJcdTUyQTFcdTZERkJcdTUyQTBcdTU5MzFcdThEMjVcdUZGMDEiKTsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjU6CiAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0NC5wcmV2ID0gMjU7CiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNi5zYXZlTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LmZpbmlzaCgyNSk7CiAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI4OgogICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9LCBfY2FsbGVlNCwgbnVsbCwgW1s2LCwgMjUsIDI4XV0pOwogICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeCwgX3gyKSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiBfcmVmMi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICB9KCkpOwogICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU1KTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy/liIbpobXpobXmlbDliIfmjaIKICAgIGhhbmRsZUN1cnJlbnRQYWdlQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVDdXJyZW50UGFnZUNoYW5nZSgpIHsKICAgICAgdmFyIF90aGlzJHBhcmFtczsKICAgICAgdmFyIHBhZ2UgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IDE7CiAgICAgIGlmICghKChfdGhpcyRwYXJhbXMgPSB0aGlzLnBhcmFtcykgIT09IG51bGwgJiYgX3RoaXMkcGFyYW1zICE9PSB2b2lkIDAgJiYgKF90aGlzJHBhcmFtcyA9IF90aGlzJHBhcmFtcy5wYWdlQmVhbikgIT09IG51bGwgJiYgX3RoaXMkcGFyYW1zICE9PSB2b2lkIDAgJiYgX3RoaXMkcGFyYW1zLnBhZ2UpKSByZXR1cm47CiAgICAgIHRoaXMucGFyYW1zLnBhZ2VCZWFuLnBhZ2UgPSBwYWdlOwogICAgICB0aGlzLmxvYWRUZW1wbGF0ZURhdGEoKTsKICAgIH0sCiAgICAvL+WIhumhteWkp+Wwj+WIh+aNogogICAgaGFuZGxlU2l6ZUNoYW5nZTogZnVuY3Rpb24gaGFuZGxlU2l6ZUNoYW5nZSgpIHsKICAgICAgdmFyIF90aGlzJHBhcmFtczI7CiAgICAgIHZhciBwYWdlU2l6ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogMTA7CiAgICAgIGlmICghKChfdGhpcyRwYXJhbXMyID0gdGhpcy5wYXJhbXMpICE9PSBudWxsICYmIF90aGlzJHBhcmFtczIgIT09IHZvaWQgMCAmJiAoX3RoaXMkcGFyYW1zMiA9IF90aGlzJHBhcmFtczIucGFnZUJlYW4pICE9PSBudWxsICYmIF90aGlzJHBhcmFtczIgIT09IHZvaWQgMCAmJiBfdGhpcyRwYXJhbXMyLnBhZ2UpKSByZXR1cm47CiAgICAgIHRoaXMucGFyYW1zLnBhZ2VCZWFuLnBhZ2VTaXplID0gcGFnZVNpemU7CiAgICAgIHRoaXMubG9hZFRlbXBsYXRlRGF0YSgpOwogICAgfSwKICAgIC8vIOaWh+S7tuS4iuS8oOWJjQogICAgYmVmb3JlVXBsb2FkOiBmdW5jdGlvbiBiZWZvcmVVcGxvYWQoZmlsZSkgewogICAgICAvLyB0aGlzLnNhdmVMb2FkaW5nID0gdHJ1ZQogICAgICAvLyBjb25zdCB7c2l6ZX0gPSBmaWxlCiAgICAgIC8vIGNvbnN0IG1heFNpemUgPSAyMCAqIDEwMjQgKiAxMDI0IC8vIDIwTUIKICAgICAgLy8gaWYgKHNpemUgPiBtYXhTaXplKSB7CiAgICAgIC8vICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+mZhOS7tuWkp+Wwj+S4jeiDvei2hei/hzIwTUInKQogICAgICAvLyAgICAgc2V0VGltZW91dCgoXykgPT4gKHRoaXMuc2F2ZUxvYWRpbmcgPSBmYWxzZSksIDApCiAgICAgIC8vICAgICByZXR1cm4gZmFsc2UKICAgICAgLy8gfQogICAgfSwKICAgIC8vIOaWh+WMluS4iuS8oOaIkOWKnwogICAgaGFuZGxlU3VjY2VzczogZnVuY3Rpb24gaGFuZGxlU3VjY2VzcyhyZXNwb25zZSkgewogICAgICB2YXIgX3Jlc3BvbnNlJGZpbGVJZCA9IHJlc3BvbnNlLmZpbGVJZCwKICAgICAgICBmaWxlSWQgPSBfcmVzcG9uc2UkZmlsZUlkID09PSB2b2lkIDAgPyAnJyA6IF9yZXNwb25zZSRmaWxlSWQsCiAgICAgICAgX3Jlc3BvbnNlJGZpbGVOYW1lID0gcmVzcG9uc2UuZmlsZU5hbWUsCiAgICAgICAgZmlsZU5hbWUgPSBfcmVzcG9uc2UkZmlsZU5hbWUgPT09IHZvaWQgMCA/ICcnIDogX3Jlc3BvbnNlJGZpbGVOYW1lLAogICAgICAgIF9yZXNwb25zZSRzaXplID0gcmVzcG9uc2Uuc2l6ZSwKICAgICAgICBmaWxlU2l6ZXMgPSBfcmVzcG9uc2Ukc2l6ZSA9PT0gdm9pZCAwID8gMCA6IF9yZXNwb25zZSRzaXplLAogICAgICAgIHN1Y2Nlc3MgPSByZXNwb25zZS5zdWNjZXNzOwogICAgICBpZiAoc3VjY2VzcykgewogICAgICAgIHRoaXMuYWRkRWRpdEZvcm0ucG9saWN5RmlsZXMucHVzaCh7CiAgICAgICAgICBmaWxlSWQ6IGZpbGVJZCwKICAgICAgICAgIGZpbGVTaXplczogZmlsZVNpemVzLAogICAgICAgICAgZmlsZU5hbWU6IGZpbGVOYW1lCiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcign5paH5Lu25LiK5Lyg5aSx6LSlJyk7CiAgICAgIH0KICAgICAgdGhpcy5zYXZlTG9hZGluZyA9IGZhbHNlOwogICAgfSwKICAgIC8vIOaWh+S7tuS4iuS8oOWksei0pQogICAgaGFuZGxlRXJyb3I6IGZ1bmN0aW9uIGhhbmRsZUVycm9yKCkgewogICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+aWh+S7tuS4iuS8oOWksei0pScpOwogICAgfSwKICAgIC8vIOaWh+S7tuWIoOmZpOWJjQogICAgYmVmb3JlUmVtb3ZlOiBmdW5jdGlvbiBiZWZvcmVSZW1vdmUoZmlsZSkgewogICAgICB2YXIgX3RoaXM3ID0gdGhpczsKICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICBfdGhpczcuJGNvbmZpcm0oIlx1Nzg2RVx1NUI5QVx1NzlGQlx1OTY2NCIuY29uY2F0KGZpbGUubmFtZSwgIlx1NTQxN1x1RkYxRiIpLCAn5o+Q56S6JywgewogICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7orqQnLAogICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKF8pIHsKICAgICAgICAgIHJldHVybiByZWplY3QoKTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5paH5Lu25Yig6Zmk5ZCOCiAgICBoYW5kbGVSZW1vdmU6IGZ1bmN0aW9uIGhhbmRsZVJlbW92ZShmaWxlKSB7CiAgICAgIHZhciBmaWxlSWQgPSBmaWxlLmZpbGVJZCB8fCBmaWxlLnJlc3BvbnNlLmZpbGVJZCB8fCAnJzsKICAgICAgdmFyIGluZGV4ID0gdGhpcy5hZGRFZGl0Rm9ybS5wb2xpY3lGaWxlcy5maW5kSW5kZXgoZnVuY3Rpb24gKGkpIHsKICAgICAgICByZXR1cm4gaS5maWxlSWQgPT09IGZpbGVJZDsKICAgICAgfSk7CiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHRoaXMuYWRkRWRpdEZvcm0ucG9saWN5RmlsZXMuc3BsaWNlKGluZGV4LCAxKTsKICAgIH0sCiAgICAvLyDlt7LkuIrkvKDmlofku7bngrnlh7sKICAgIGhhbmRsZVByZXZpZXc6IGZ1bmN0aW9uIGhhbmRsZVByZXZpZXcoZmlsZSkgewogICAgICB2YXIgX3RoaXM4ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNigpIHsKICAgICAgICB2YXIgZmlsZUlkLCBmaWxlTmFtZSwgYnJvd3Nlck9wZXJhYmxlUGF0dGVybjsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTYkKF9jb250ZXh0NikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ2LnByZXYgPSBfY29udGV4dDYubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgZmlsZUlkID0gZmlsZS5maWxlSWQgfHwgZmlsZS5yZXNwb25zZS5maWxlSWQgfHwgJyc7IC8vIOaWh+S7tklECiAgICAgICAgICAgICAgZmlsZU5hbWUgPSBmaWxlLm5hbWUgfHwgZmlsZS5maWxlTmFtZSB8fCAnJzsgLy8g5paH5Lu25ZCNCiAgICAgICAgICAgICAgaWYgKGZpbGVJZCAmJiBmaWxlTmFtZSkgewogICAgICAgICAgICAgICAgX2NvbnRleHQ2Lm5leHQgPSA0OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDYuYWJydXB0KCJyZXR1cm4iLCBfdGhpczguJG1lc3NhZ2Uud2FybmluZygn5paH5Lu26ZSZ6K+v77yM6K+35Yig6Zmk5ZCO6YeN5paw5LiK5LygJykpOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgYnJvd3Nlck9wZXJhYmxlUGF0dGVybiA9IC9cLihqcGd8anBlZ3xwbmd8Z2lmfGJtcHx3ZWJwfHBkZikkL2k7CiAgICAgICAgICAgICAgaWYgKGJyb3dzZXJPcGVyYWJsZVBhdHRlcm4udGVzdChmaWxlTmFtZSkpIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKF90aGlzOC5wcmV2aWV3VXJsICsgZmlsZUlkLCAnX2JsYW5rJyk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKF90aGlzOC5kb3dubG9hZFVybCArIGZpbGVJZCwgJ19ibGFuaycpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDYuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU2KTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g5pS55Y+Y6aG16Z2iCiAgICBjaGFuZ2VQYWdlOiBmdW5jdGlvbiBjaGFuZ2VQYWdlKCkgewogICAgICB2YXIgcGFnZU5hbWUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6ICcnOwogICAgICB2YXIgdHlwZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogJyc7CiAgICAgIHZhciBkYXRhID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7fTsKICAgICAgaWYgKCFwYWdlTmFtZSkgcmV0dXJuOwogICAgICB0aGlzLiRlbWl0KCdjaGFuZ2VQYWdlJywgcGFnZU5hbWUsIGZ1bmN0aW9uIChfKSB7CiAgICAgICAgUHViU3ViLnB1Ymxpc2gocGFnZU5hbWUsIF9vYmplY3RTcHJlYWQoewogICAgICAgICAgdHlwZTogdHlwZQogICAgICAgIH0sIGRhdGEpKTsKICAgICAgfSk7CiAgICB9CiAgfSwKICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkgewogICAgLy8g5Zyo57uE5Lu26ZSA5q+B5LmL5YmNIOa4hemZpOiuoumYhea2iOaBrwogICAgUHViU3ViLnVuc3Vic2NyaWJlKHRoaXMucHViU3ViKTsKICB9Cn07"},null]}