{"remainingRequest":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataResource\\dataServices\\dataServiceAPI\\DetailDialog.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataResource\\dataServices\\dataServiceAPI\\DetailDialog.vue","mtime":1749063336055},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\babel.config.js","mtime":1733906004399},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvZGF0YVNoYXJlLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2RhdGFTaGFyZS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5jbHVkZXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5qc29uLnN0cmluZ2lmeS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pbmNsdWRlcy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy50cmltLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCgppbXBvcnQgQVBJIGZyb20gJ0AvYXBpL2J1c2luZXNzL2RhdGFTZXJ2aWNlQVBJJzsKaW1wb3J0IGRpYWxvZ01peGluIGZyb20gJ0AvbWl4aW5zL2RpYWxvZy5qcyc7CmltcG9ydCBjb2RlRWRpdG9yIGZyb20gJ0AvY29tcG9uZW50cy9jb2RlRWRpdG9yL2luZGV4LnZ1ZSc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnRGV0YWlsRGlhbG9nJywKICBjb21wb25lbnRzOiB7CiAgICBjb2RlRWRpdG9yOiBjb2RlRWRpdG9yCiAgfSwKICBtaXhpbnM6IFtkaWFsb2dNaXhpbl0sCiAgcHJvcHM6IHsKICAgIHNlbGVjdGVkUm93czogewogICAgICB0eXBlOiBBcnJheSwKICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7CiAgICAgICAgcmV0dXJuIFtdOwogICAgICB9CiAgICB9LAogICAgYWRkSWQ6IHsKICAgICAgdHlwZTogU3RyaW5nLAogICAgICBkZWZhdWx0OiAnJwogICAgfQogIH0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIGFkZEpzb25NdWx0aXBsZVJlcXVlc3RQYXJhbXM6IFtdLAogICAgICBhZGRKc29uTXVsdGlwbGVSZXF1ZXN0SGVhZGVyOiBbXSwKICAgICAgYWRkSnNvbk11bHRpcGxlUmVzcG9uc2VQYXJhbXM6IFtdLAogICAgICBhZGRKc29uTXVsdGlwbGVSZXNwb25zZVN0YXR1czogW10sCiAgICAgIHRhYkl0ZW1JZDogMSwKICAgICAgLy8g6KGo5qC85pWw5o2u55qEIGlkCiAgICAgIGxhYmVsUG9zaXRpb246ICdsZWZ0JywKICAgICAgdGltZVZhbHVlOiAnJywKICAgICAgcXVyZXk6ICcnLAogICAgICBtb2RlOiAnJywKICAgICAgc3Fsb3B0aW9uczogW10sCiAgICAgIG9wdGlvbnM6IFt7CiAgICAgICAgbGFiZWw6ICfliIbpobUnLAogICAgICAgIHZhbHVlOiAxCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+S4jeWIhumhtScsCiAgICAgICAgdmFsdWU6IDAKICAgICAgfV0sCiAgICAgIGZvcm06IHsKICAgICAgICBzb3VyY2VUeXBlOiAnMScsCiAgICAgICAgc3FsOiAnJywKICAgICAgICBhcGlRdXJleVR5cGU6ICcnCiAgICAgIH0sCiAgICAgIHR5cGVvcHRpb25zOiBbewogICAgICAgIHZhbHVlOiAnU3RyaW5nJywKICAgICAgICBsYWJlbDogJ+Wtl+espuS4sicKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnSW50ZWdlcicsCiAgICAgICAgbGFiZWw6ICfmlbDlrZflnosnCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJ0RhdGUnLAogICAgICAgIGxhYmVsOiAn5pel5pyfJwogICAgICB9CiAgICAgIC8vIHt2YWx1ZTogJzQnLCBsYWJlbDogJ+aXtumXtCd9CiAgICAgIF0sCiAgICAgIHRhYmxlTmFtZUxpc3Q6IFsnR0VUJywgJ1BPU1QnXSwKICAgICAgcnVsZXM6IHsKICAgICAgICBhcGlOYW1lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5o6l5Y+j5ZCN56ew5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJwogICAgICAgIH1dLAogICAgICAgIGFwaVVybDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+aOpeWPo+WcsOWdgOS4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XSwKICAgICAgICBhcGlRdXJleVR5cGU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfmjqXlj6Pmn6Xor6LmlrnlvI/kuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogJ2NoYW5nZScKICAgICAgICB9XSwKICAgICAgICBhcGlNb2RlOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+35rGC5pa55byP5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6ICdjaGFuZ2UnCiAgICAgICAgfV0sCiAgICAgICAgYXBpU3FsOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAnU1FM5p+l6K+i6K+t5Y+l5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJwogICAgICAgIH1dLAogICAgICAgIGRiQWxpYXM6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfor7fpgInmi6nmlbDmja7mupAnLAogICAgICAgICAgdHJpZ2dlcjogJ2NoYW5nZScKICAgICAgICB9XQogICAgICB9LAogICAgICBsb2FkaW5nOiBmYWxzZQogICAgfTsKICB9LAogIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7CiAgICB0aGlzLm9uQ29uZmlybSgpOwogIH0sCiAgbWV0aG9kczogewogICAgLyoqDQogICAgICogQGRlc2NyaXB0aW9uOiBkaWFsb2fmr4/mrKHmmL7npLrml7bop6blj5HnmoRpbml05pa55rOVDQogICAgICogQHBhcmFtIHsqfSBkYXRhIOS8oOWFpWRhdGENCiAgICAgKiBAcmV0dXJuIHsqfQ0KICAgICAqLwogICAgaW5pdERhdGE6IGZ1bmN0aW9uIGluaXREYXRhKGRhdGEpIHsKICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgLy8gY29uc29sZS5sb2coJ2lkaWRpZGknLCBkYXRhKTsgLy8g6L+b6aG16Z2i5omT5Y2waWQKICAgICAgLy8gY29uc29sZS5sb2coJ2lkaWRpZGknLCBkYXRhLnJlcXVlc3RQYXJhbXMpOyAvLyDov5vpobXpnaLmiZPljbBpZAogICAgICB2YXIgb3JnRm9ybSA9IHRoaXMuJG9wdGlvbnMuZGF0YSgpLmZvcm07CiAgICAgIHRoaXMuZm9ybSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgb3JnRm9ybSksIGRhdGEpOwogICAgICAvLyDph43ngrnkv67mlLnov5nph4zvvIznoa7kv53mraPnoa7otYvlgLwgcmVxdWVzdFBhcmFtcyDmlbDmja4KICAgICAgLy8g6K+35rGC5Y+C5pWw6K+05piOCiAgICAgIC8vIOivt+axguWPguaVsOivtOaYjgogICAgICBpZiAoZGF0YS5yZXF1ZXN0UGFyYW1zICYmIHR5cGVvZiBkYXRhLnJlcXVlc3RQYXJhbXMgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHZhciBwYXJzZWRQYXJhbXMgPSBKU09OLnBhcnNlKGRhdGEucmVxdWVzdFBhcmFtcyk7CiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJzZWRQYXJhbXMpKSB7CiAgICAgICAgICAgIHRoaXMuZm9ybS5yZXF1ZXN0UGFyYW1zID0gcGFyc2VkUGFyYW1zLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBwYXJhbTogaXRlbS5wYXJhbSB8fCAnJywKICAgICAgICAgICAgICAgIGNvbW1lbnQ6IGl0ZW0uY29tbWVudCB8fCAnJywKICAgICAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSB8fCAnJywKICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBpdGVtLnJlcXVpcmVkID09PSAndHJ1ZScgfHwgaXRlbS5yZXF1aXJlZCA9PT0gdHJ1ZSAvLyDkv67mraPluIPlsJTlgLzovazmjaIKICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgY29uc29sZS5lcnJvcign6Kej5p6QIHJlcXVlc3RQYXJhbXMg5pWw5o2u5Ye66ZSZOicsIGVycm9yKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIOivt+axguWktOivtOaYjgogICAgICBpZiAoZGF0YS5yZXF1ZXN0SGVhZGVyICYmIHR5cGVvZiBkYXRhLnJlcXVlc3RIZWFkZXIgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHZhciBfcGFyc2VkUGFyYW1zID0gSlNPTi5wYXJzZShkYXRhLnJlcXVlc3RIZWFkZXIpOwogICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoX3BhcnNlZFBhcmFtcykpIHsKICAgICAgICAgICAgdGhpcy5mb3JtLnJlcXVlc3RIZWFkZXIgPSBfcGFyc2VkUGFyYW1zLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBwYXJhbTogaXRlbS5wYXJhbSB8fCAnJywKICAgICAgICAgICAgICAgIGNvbW1lbnQ6IGl0ZW0uY29tbWVudCB8fCAnJywKICAgICAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSB8fCAnJywKICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBpdGVtLnJlcXVpcmVkID09PSAndHJ1ZScgfHwgaXRlbS5yZXF1aXJlZCA9PT0gdHJ1ZSAvLyDkv67mraPluIPlsJTlgLzovazmjaIKICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgY29uc29sZS5lcnJvcign6Kej5p6QIHJlcXVlc3RIZWFkZXIg5pWw5o2u5Ye66ZSZOicsIGVycm9yKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIOi/lOWbnuWPguaVsOivtOaYjgogICAgICBpZiAoZGF0YS5yZXNwb25zZVBhcmFtcyAmJiB0eXBlb2YgZGF0YS5yZXNwb25zZVBhcmFtcyA9PT0gJ3N0cmluZycpIHsKICAgICAgICB0cnkgewogICAgICAgICAgdmFyIF9wYXJzZWRQYXJhbXMyID0gSlNPTi5wYXJzZShkYXRhLnJlc3BvbnNlUGFyYW1zKTsKICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KF9wYXJzZWRQYXJhbXMyKSkgewogICAgICAgICAgICB0aGlzLmZvcm0ucmVzcG9uc2VQYXJhbXMgPSBfcGFyc2VkUGFyYW1zMi5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgcGFyYW06IGl0ZW0ucGFyYW0gfHwgJycsCiAgICAgICAgICAgICAgICBjb21tZW50OiBpdGVtLmNvbW1lbnQgfHwgJycsCiAgICAgICAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUgfHwgJycKICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgY29uc29sZS5lcnJvcign6Kej5p6QIHJlc3BvbnNlUGFyYW1zIOaVsOaNruWHuumUmTonLCBlcnJvcik7CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyDlk43lupTnirbmgIHnoIHkv6Hmga8KICAgICAgaWYgKGRhdGEucmVzcG9uc2VTdGF0dXMgJiYgdHlwZW9mIGRhdGEucmVzcG9uc2VTdGF0dXMgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHZhciBfcGFyc2VkUGFyYW1zMyA9IEpTT04ucGFyc2UoZGF0YS5yZXNwb25zZVN0YXR1cyk7CiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfcGFyc2VkUGFyYW1zMykpIHsKICAgICAgICAgICAgdGhpcy5mb3JtLnJlc3BvbnNlU3RhdHVzID0gX3BhcnNlZFBhcmFtczMubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhcmFtOiBpdGVtLnBhcmFtIHx8ICcnLAogICAgICAgICAgICAgICAgY29tbWVudDogaXRlbS5jb21tZW50IHx8ICcnCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+ino+aekCByZXNwb25zZVN0YXR1cyDmlbDmja7lh7rplJk6JywgZXJyb3IpOwogICAgICAgIH0KICAgICAgfQogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXMuJHJlZnMuZm9ybS5jbGVhclZhbGlkYXRlKCk7CiAgICAgIH0pOwogICAgICB0aGlzLnNlbGVjdFNxbCgpOwogICAgfSwKICAgIC8vIOaVsOaNrua6kOaOpeWPo+iwg+eUqAogICAgc2VsZWN0U3FsOiBmdW5jdGlvbiBzZWxlY3RTcWwoKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICByZXR1cm4gQVBJLmFkZFNvdXJjZURhdGEoKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBjb25zb2xlLmxvZygnY2FjYWNhY3MnLCByZXMpOyAvLyDmlbDmja7lupMKICAgICAgICBfdGhpczIuc3Fsb3B0aW9ucyA9IHJlcy5kYXRhLm1hcChmdW5jdGlvbiAoZGF0YSkgewogICAgICAgICAgdmFyIGZvcm0gPSB7CiAgICAgICAgICAgIC8vIGxhYmVsOiBkYXRhLmFsaWFzLAogICAgICAgICAgICAvLyB2YWx1ZTogZGF0YS5pZCwKICAgICAgICAgICAgbGFiZWw6IGRhdGEubmFtZSwKICAgICAgICAgICAgdmFsdWU6IGRhdGEuYWxpYXMKICAgICAgICAgIH07CiAgICAgICAgICByZXR1cm4gZm9ybTsKICAgICAgICB9KTsKICAgICAgICAvLyBjb25zb2xlLmxvZyhyZXMucm93cyk7CiAgICAgICAgY29uc29sZS5sb2coJ+aVsOaNrua6kCcsIF90aGlzMi5zcWxvcHRpb25zKTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgY29uc29sZS5lcnJvcign6I635Y+W5pWw5o2u5rqQ5aSx6LSlJywgZXJyb3IpOwogICAgICB9KTsKICAgIH0sCiAgICBSbmROdW06IGZ1bmN0aW9uIFJuZE51bShuKSB7CiAgICAgIC8vIOeUn+aIkOmaj+acuuaVsAogICAgICB2YXIgcmRtTnVtID0gJyc7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgcmRtTnVtICs9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwKTsgLy8gWzAsMTAp55qE5pW05pWwCiAgICAgIH0KICAgICAgcmV0dXJuIHJkbU51bTsKICAgIH0sCiAgICAvLyDor7fmsYLlj4LmlbDor7TmmI4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBhZGRKc29uUmVxdWVzdFBhcmFtczogZnVuY3Rpb24gYWRkSnNvblJlcXVlc3RQYXJhbXModmFsKSB7CiAgICAgIHRoaXMuYWRkSnNvbk11bHRpcGxlUmVxdWVzdFBhcmFtcyA9IHZhbDsKICAgIH0sCiAgICAvLyDmt7vliqAKICAgIGFkZFRhYmxlUmVxdWVzdFBhcmFtczogZnVuY3Rpb24gYWRkVGFibGVSZXF1ZXN0UGFyYW1zKCkgewogICAgICB0aGlzLnRhYkl0ZW1JZCA9ICJUIi5jb25jYXQodGhpcy5SbmROdW0oNikpOyAvLyDnlJ/miJDku6VU5byA5aS055qE5LiD5L2N6ZqP5py65pWwCiAgICAgIHRoaXMuZm9ybS5yZXF1ZXN0UGFyYW1zLnB1c2goewogICAgICAgIG5hbWU6ICcnLAogICAgICAgIHZhbHVlOiAnJywKICAgICAgICB0YWJJdGVtSWQ6IHRoaXMudGFiSXRlbUlkCiAgICAgIH0pOwogICAgfSwKICAgIC8vIOWIoOmZpAogICAgZGVsVGFibGVSZXF1ZXN0UGFyYW1zOiBmdW5jdGlvbiBkZWxUYWJsZVJlcXVlc3RQYXJhbXMoKSB7CiAgICAgIC8vIOehruiupOWIoOmZpAogICAgICBpZiAodGhpcy5hZGRKc29uTXVsdGlwbGVSZXF1ZXN0UGFyYW1zLmxlbmd0aCA+IDApIHsKICAgICAgICB2YXIgYXJycyA9IFtdOwogICAgICAgIHZhciBpZHMgPSB0aGlzLmFkZEpzb25NdWx0aXBsZVJlcXVlc3RQYXJhbXMubWFwKGZ1bmN0aW9uICh2YWwpIHsKICAgICAgICAgIHJldHVybiB2YWwudGFiSXRlbUlkOwogICAgICAgIH0pOyAvLyDmi7/liLDpgInkuK3nmoTmlbDmja5pZCwKICAgICAgICB0aGlzLmZvcm0ucmVxdWVzdFBhcmFtcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICBpZiAoIWlkcy5pbmNsdWRlcyhpdGVtLnRhYkl0ZW1JZCkpIHsKICAgICAgICAgICAgLy8g5b2TaWTlnKhwYXJhbXPkuK3vvIzooajnpLrmlbDmja7ooqvpgInkuK3vvIzor6XlsIblhbbliKDpmaTvvIzljbPlsIbkuI3ooqvpgInkuK3nmoTkv53nlZkKICAgICAgICAgICAgYXJycy5wdXNoKGl0ZW0pOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHRoaXMuZm9ybS5yZXF1ZXN0UGFyYW1zID0gYXJyczsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNricpOwogICAgICB9CiAgICB9LAogICAgLy8g6K+35rGC5aS06K+05piOLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBhZGRKc29uUmVxdWVzdEhlYWRlcjogZnVuY3Rpb24gYWRkSnNvblJlcXVlc3RIZWFkZXIodmFsKSB7CiAgICAgIHRoaXMuYWRkSnNvbk11bHRpcGxlUmVxdWVzdEhlYWRlciA9IHZhbDsKICAgIH0sCiAgICAvLyDmt7vliqAKICAgIGFkZFRhYmxlUmVxdWVzdEhlYWRlcjogZnVuY3Rpb24gYWRkVGFibGVSZXF1ZXN0SGVhZGVyKCkgewogICAgICB0aGlzLnRhYkl0ZW1JZCA9ICJUIi5jb25jYXQodGhpcy5SbmROdW0oNikpOyAvLyDnlJ/miJDku6VU5byA5aS055qE5LiD5L2N6ZqP5py65pWwCiAgICAgIHRoaXMuZm9ybS5yZXF1ZXN0SGVhZGVyLnB1c2goewogICAgICAgIG5hbWU6ICcnLAogICAgICAgIHZhbHVlOiAnJywKICAgICAgICB0YWJJdGVtSWQ6IHRoaXMudGFiSXRlbUlkCiAgICAgIH0pOwogICAgfSwKICAgIC8vIOWIoOmZpAogICAgZGVsVGFibGVSZXF1ZXN0SGVhZGVyOiBmdW5jdGlvbiBkZWxUYWJsZVJlcXVlc3RIZWFkZXIoKSB7CiAgICAgIC8vIOehruiupOWIoOmZpAogICAgICBpZiAodGhpcy5hZGRKc29uTXVsdGlwbGVSZXF1ZXN0SGVhZGVyLmxlbmd0aCA+IDApIHsKICAgICAgICB2YXIgYXJycyA9IFtdOwogICAgICAgIHZhciBpZHMgPSB0aGlzLmFkZEpzb25NdWx0aXBsZVJlcXVlc3RIZWFkZXIubWFwKGZ1bmN0aW9uICh2YWwpIHsKICAgICAgICAgIHJldHVybiB2YWwudGFiSXRlbUlkOwogICAgICAgIH0pOyAvLyDmi7/liLDpgInkuK3nmoTmlbDmja5pZCwKICAgICAgICB0aGlzLmZvcm0ucmVxdWVzdEhlYWRlci5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICBpZiAoIWlkcy5pbmNsdWRlcyhpdGVtLnRhYkl0ZW1JZCkpIHsKICAgICAgICAgICAgLy8g5b2TaWTlnKhwYXJhbXPkuK3vvIzooajnpLrmlbDmja7ooqvpgInkuK3vvIzor6XlsIblhbbliKDpmaTvvIzljbPlsIbkuI3ooqvpgInkuK3nmoTkv53nlZkKICAgICAgICAgICAgYXJycy5wdXNoKGl0ZW0pOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHRoaXMuZm9ybS5yZXF1ZXN0SGVhZGVyID0gYXJyczsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNricpOwogICAgICB9CiAgICB9LAogICAgLy8g6L+U5Zue5Y+C5pWw6K+05piOLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgYWRkSnNvblJlc3BvbnNlU3RhdHVzOiBmdW5jdGlvbiBhZGRKc29uUmVzcG9uc2VTdGF0dXModmFsKSB7CiAgICAgIHRoaXMuYWRkSnNvbk11bHRpcGxlUmVzcG9uc2VQYXJhbXMgPSB2YWw7CiAgICB9LAogICAgLy8g5re75YqgCiAgICBhZGRUYWJsZVJlc3BvbnNlUGFyYW1zOiBmdW5jdGlvbiBhZGRUYWJsZVJlc3BvbnNlUGFyYW1zKCkgewogICAgICB0aGlzLnRhYkl0ZW1JZCA9ICJUIi5jb25jYXQodGhpcy5SbmROdW0oNikpOyAvLyDnlJ/miJDku6VU5byA5aS055qE5LiD5L2N6ZqP5py65pWwCiAgICAgIHRoaXMuZm9ybS5yZXNwb25zZVBhcmFtcy5wdXNoKHsKICAgICAgICBuYW1lOiAnJywKICAgICAgICB2YWx1ZTogJycsCiAgICAgICAgdGFiSXRlbUlkOiB0aGlzLnRhYkl0ZW1JZAogICAgICB9KTsKICAgIH0sCiAgICAvLyDliKDpmaQKICAgIGRlbFRhYmxlUmVzcG9uc2VQYXJhbXM6IGZ1bmN0aW9uIGRlbFRhYmxlUmVzcG9uc2VQYXJhbXMoKSB7CiAgICAgIC8vIOehruiupOWIoOmZpAogICAgICBpZiAodGhpcy5hZGRKc29uTXVsdGlwbGVSZXNwb25zZVBhcmFtcy5sZW5ndGggPiAwKSB7CiAgICAgICAgdmFyIGFycnMgPSBbXTsKICAgICAgICB2YXIgaWRzID0gdGhpcy5hZGRKc29uTXVsdGlwbGVSZXNwb25zZVBhcmFtcy5tYXAoZnVuY3Rpb24gKHZhbCkgewogICAgICAgICAgcmV0dXJuIHZhbC50YWJJdGVtSWQ7CiAgICAgICAgfSk7IC8vIOaLv+WIsOmAieS4reeahOaVsOaNrmlkLAogICAgICAgIHRoaXMuZm9ybS5yZXNwb25zZVBhcmFtcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICBpZiAoIWlkcy5pbmNsdWRlcyhpdGVtLnRhYkl0ZW1JZCkpIHsKICAgICAgICAgICAgLy8g5b2TaWTlnKhwYXJhbXPkuK3vvIzooajnpLrmlbDmja7ooqvpgInkuK3vvIzor6XlsIblhbbliKDpmaTvvIzljbPlsIbkuI3ooqvpgInkuK3nmoTkv53nlZkKICAgICAgICAgICAgYXJycy5wdXNoKGl0ZW0pOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHRoaXMuZm9ybS5yZXNwb25zZVBhcmFtcyA9IGFycnM7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCfor7fpgInmi6nopoHliKDpmaTnmoTmlbDmja4nKTsKICAgICAgfQogICAgfSwKICAgIC8vIOWTjeW6lOeKtuaAgeeggeS/oeaBry0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgYWRkSnNvblJlc3BvbnNlUGFyYW1zOiBmdW5jdGlvbiBhZGRKc29uUmVzcG9uc2VQYXJhbXModmFsKSB7CiAgICAgIHRoaXMuYWRkSnNvbk11bHRpcGxlUmVzcG9uc2VTdGF0dXMgPSB2YWw7CiAgICB9LAogICAgLy8g5re75YqgCiAgICBhZGRUYWJsZVJlc3BvbnNlU3RhdHVzOiBmdW5jdGlvbiBhZGRUYWJsZVJlc3BvbnNlU3RhdHVzKCkgewogICAgICB0aGlzLnRhYkl0ZW1JZCA9ICJUIi5jb25jYXQodGhpcy5SbmROdW0oNikpOyAvLyDnlJ/miJDku6VU5byA5aS055qE5LiD5L2N6ZqP5py65pWwCiAgICAgIHRoaXMuZm9ybS5yZXNwb25zZVN0YXR1cy5wdXNoKHsKICAgICAgICBjb2RlOiAnJywKICAgICAgICBjb21tZW50OiAnJywKICAgICAgICB0YWJJdGVtSWQ6IHRoaXMudGFiSXRlbUlkCiAgICAgIH0pOwogICAgfSwKICAgIC8vIOWIoOmZpAogICAgZGVsVGFibGVSZXNwb25zZVN0YXR1czogZnVuY3Rpb24gZGVsVGFibGVSZXNwb25zZVN0YXR1cygpIHsKICAgICAgLy8g56Gu6K6k5Yig6ZmkCiAgICAgIGlmICh0aGlzLmFkZEpzb25NdWx0aXBsZVJlc3BvbnNlU3RhdHVzLmxlbmd0aCA+IDApIHsKICAgICAgICB2YXIgYXJycyA9IFtdOwogICAgICAgIHZhciBpZHMgPSB0aGlzLmFkZEpzb25NdWx0aXBsZVJlc3BvbnNlU3RhdHVzLm1hcChmdW5jdGlvbiAodmFsKSB7CiAgICAgICAgICByZXR1cm4gdmFsLnRhYkl0ZW1JZDsKICAgICAgICB9KTsgLy8g5ou/5Yiw6YCJ5Lit55qE5pWw5o2uaWQsCiAgICAgICAgdGhpcy5mb3JtLnJlc3BvbnNlU3RhdHVzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIGlmICghaWRzLmluY2x1ZGVzKGl0ZW0udGFiSXRlbUlkKSkgewogICAgICAgICAgICAvLyDlvZNpZOWcqHBhcmFtc+S4re+8jOihqOekuuaVsOaNruiiq+mAieS4re+8jOivpeWwhuWFtuWIoOmZpO+8jOWNs+WwhuS4jeiiq+mAieS4reeahOS/neeVmQogICAgICAgICAgICBhcnJzLnB1c2goaXRlbSk7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgdGhpcy5mb3JtLnJlc3BvbnNlU3RhdHVzID0gYXJyczsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNricpOwogICAgICB9CiAgICB9LAogICAgLy8g5Y+W5raI5oyJ6ZKuCiAgICBvbkNhbmNlbDogZnVuY3Rpb24gb25DYW5jZWwoKSB7CiAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlOwogICAgICB0aGlzLmZvcm0gPSB0aGlzLiRvcHRpb25zLmRhdGEoKS5mb3JtOwogICAgfSwKICAgIC8vIOehruWumuaMiemSri3mlrDlop7lkI7mjqXlj6PosIPnlKjvvIzlsZXnpLrlnKjliJfooagKICAgIG9uQ29uZmlybTogZnVuY3Rpb24gb25Db25maXJtKCkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgLy8gdGhpcy4kcmVmcy5mb3JtLnZhbGlkYXRlKGFzeW5jICh2YWxpZCkgPT4gewogICAgICAvLyAgIGlmICh2YWxpZCkgewogICAgICAvLyAgICAgdGhpcy5mb3JtLmNhdGFsb2dJZCA9IHRoaXMuYWRkSWQKICAgICAgLy8gICAgIHRoaXMuZm9ybS5yZXF1ZXN0UGFyYW1zID0gSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLnJlcXVlc3RQYXJhbXMpIC8vIOivt+axguWPguaVsOivtOaYjgogICAgICAvLyAgICAgdGhpcy5mb3JtLnJlcXVlc3RIZWFkZXIgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm0ucmVxdWVzdEhlYWRlcikgLy8g6K+35rGC5aS06K+05piOCiAgICAgIC8vICAgICB0aGlzLmZvcm0ucmVzcG9uc2VQYXJhbXMgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm0ucmVzcG9uc2VQYXJhbXMpIC8vIOi/lOWbnuWPguaVsOivtOaYjgogICAgICAvLyAgICAgdGhpcy5mb3JtLnJlc3BvbnNlU3RhdHVzID0gSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLnJlc3BvbnNlU3RhdHVzKSAvLyDlk43lupTnirbmgIHnoIHkv6Hmga8KICAgICAgLy8gICAgIEFQSS5kZWxBY3Rpb24odGhpcy5mb3JtLCBmYWxzZSkKICAgICAgLy8gICAgICAgLnRoZW4oKHJlcykgPT4gewogICAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKHJlcykKICAgICAgLy8gICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+aOpeWPo+e8lui+keaIkOWKn++8gScpCiAgICAgIC8vICAgICAgICAgLy8g5paw5aKe5oiQ5Yqf5ZCO77yM6YCa6L+HICRlbWl0IOinpuWPkeiHquWumuS5ieS6i+S7tu+8jOS8oOmAkuaWsOWinuaIkOWKn+eahOS/oeWPt+S7peWPiuWPr+iDveebuOWFs+eahOaVsOaNru+8iOeItue7hOS7tuWPr+S7peebkeWQrOi/meS4quS6i+S7tuadpeWBmuWHuuebuOW6lOeahOWkhOeQhu+8iQogICAgICAvLyAgICAgICAgIHRoaXMuJGVtaXQoJ2NvbmZpcm0nKQogICAgICAvLyAgICAgICB9KQogICAgICAvLyAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7CiAgICAgIC8vICAgICAgICAgY29uc29sZS5lcnJvcign6I635Y+W5pWw5o2u5aSx6LSlJywgZXJyb3IpCiAgICAgIC8vICAgICAgIH0pCiAgICAgIC8vICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZQogICAgICAvLyAgICAgLy8gfQogICAgICAvLyAgIH0gZWxzZSB7CiAgICAgIC8vICAgICBjb25zb2xlLmxvZygn6KGo5Y2V6aqM6K+B5aSx6LSl77yM6K+35qOA5p+l5omA5pyJ5b+F5aGr6aG5JykKICAgICAgLy8gICAgIHJldHVybiBmYWxzZQogICAgICAvLyAgIH0KICAgICAgLy8gfSkKICAgICAgLy8gdGhpcy5sb2FkaW5nID0gZmFsc2UKICAgICAgLy8gdGhpcy52aXNpYmxlID0gZmFsc2UKICAgICAgdGhpcy4kcmVmcy5mb3JtLnZhbGlkYXRlKC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9yZWYgPSBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSh2YWxpZCkgewogICAgICAgICAgdmFyIGZvcm1EYXRhLCByZXF1ZXN0RGF0YTsKICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkgewogICAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIGlmICh2YWxpZCkgewogICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMzsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygn6KGo5Y2V6aqM6K+B5aSx6LSl77yM6K+35qOA5p+l5omA5pyJ5b+F5aGr6aG5Jyk7CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KCJyZXR1cm4iLCBmYWxzZSk7CiAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgLy8g5byA5aeL5o+Q5Lqk77yM56aB55So5oyJ6ZKuCiAgICAgICAgICAgICAgICBfdGhpczMuaXNTdWJtaXR0aW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgIF90aGlzMy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSA1OwogICAgICAgICAgICAgICAgLy8g5qC85byP5YyW5pWw5o2uCiAgICAgICAgICAgICAgICAvLyB0aGlzLmZvcm0uY2F0YWxvZ0lkID0gdGhpcy5hZGRJZAogICAgICAgICAgICAgICAgLy8gdGhpcy5mb3JtLnJlcXVlc3RQYXJhbXMgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm0ucmVxdWVzdFBhcmFtcykKICAgICAgICAgICAgICAgIC8vIHRoaXMuZm9ybS5yZXF1ZXN0SGVhZGVyID0gSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLnJlcXVlc3RIZWFkZXIpCiAgICAgICAgICAgICAgICAvLyB0aGlzLmZvcm0ucmVzcG9uc2VQYXJhbXMgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm0ucmVzcG9uc2VQYXJhbXMpCiAgICAgICAgICAgICAgICAvLyB0aGlzLmZvcm0ucmVzcG9uc2VTdGF0dXMgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm0ucmVzcG9uc2VTdGF0dXMpCiAgICAgICAgICAgICAgICAvLyDmoLzlvI/ljJbmlbDmja7liY3lpITnkIbnqbrlj4LmlbAKICAgICAgICAgICAgICAgIGZvcm1EYXRhID0gX29iamVjdFNwcmVhZCh7fSwgX3RoaXMzLmZvcm0pOwogICAgICAgICAgICAgICAgZm9ybURhdGEuY2F0YWxvZ0lkID0gX3RoaXMzLmFkZElkOwoKICAgICAgICAgICAgICAgIC8vIOWkhOeQhuivt+axguWPguaVsOivtOaYjiAtIOS/neeVmee7k+aehOS9hua4heepuuepuuWPguaVsOeahOm7mOiupOWAvAogICAgICAgICAgICAgICAgZm9ybURhdGEucmVxdWVzdFBhcmFtcyA9IF90aGlzMy5mb3JtLnJlcXVlc3RQYXJhbXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICAgIGlmIChpdGVtLnBhcmFtLnRyaW0oKSA9PT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAvLyDlj4LmlbDlkI3kuLrnqbrml7bvvIzmuIXnqbrmiYDmnInlrZfmrrXlgLwKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgcGFyYW06ICcnLAogICAgICAgICAgICAgICAgICAgICAgY29tbWVudDogJycsCiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnJywKICAgICAgICAgICAgICAgICAgICAgIC8vIOa4heepuum7mOiupOexu+WeiwogICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICcnCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhcmFtOiBpdGVtLnBhcmFtLAogICAgICAgICAgICAgICAgICAgIGNvbW1lbnQ6IGl0ZW0uY29tbWVudCwKICAgICAgICAgICAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsCiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGl0ZW0ucmVxdWlyZWQKICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIC8vIOWQjOagt+WkhOeQhuWFtuS7luWPguaVsOivtOaYjgogICAgICAgICAgICAgICAgZm9ybURhdGEucmVxdWVzdEhlYWRlciA9IF90aGlzMy5mb3JtLnJlcXVlc3RIZWFkZXIubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICAgIGlmIChpdGVtLnBhcmFtLnRyaW0oKSA9PT0gJycpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgcGFyYW06ICcnLAogICAgICAgICAgICAgICAgICAgICAgY29tbWVudDogJycsCiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnJywKICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnJwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBwYXJhbTogaXRlbS5wYXJhbSwKICAgICAgICAgICAgICAgICAgICBjb21tZW50OiBpdGVtLmNvbW1lbnQsCiAgICAgICAgICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLAogICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBpdGVtLnJlcXVpcmVkCiAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGZvcm1EYXRhLnJlc3BvbnNlUGFyYW1zID0gX3RoaXMzLmZvcm0ucmVzcG9uc2VQYXJhbXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICAgIGlmIChpdGVtLnBhcmFtLnRyaW0oKSA9PT0gJycpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgcGFyYW06ICcnLAogICAgICAgICAgICAgICAgICAgICAgY29tbWVudDogJycsCiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnJwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBwYXJhbTogaXRlbS5wYXJhbSwKICAgICAgICAgICAgICAgICAgICBjb21tZW50OiBpdGVtLmNvbW1lbnQsCiAgICAgICAgICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlCiAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGZvcm1EYXRhLnJlc3BvbnNlU3RhdHVzID0gX3RoaXMzLmZvcm0ucmVzcG9uc2VTdGF0dXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICAgIGlmIChpdGVtLnBhcmFtLnRyaW0oKSA9PT0gJycpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgcGFyYW06ICcnLAogICAgICAgICAgICAgICAgICAgICAgY29tbWVudDogJycKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgcGFyYW06IGl0ZW0ucGFyYW0sCiAgICAgICAgICAgICAgICAgICAgY29tbWVudDogaXRlbS5jb21tZW50CiAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvLyDovazmjaLkuLpKU09O5a2X56ym5LiyCiAgICAgICAgICAgICAgICByZXF1ZXN0RGF0YSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZm9ybURhdGEpLCB7fSwgewogICAgICAgICAgICAgICAgICByZXF1ZXN0UGFyYW1zOiBKU09OLnN0cmluZ2lmeShmb3JtRGF0YS5yZXF1ZXN0UGFyYW1zKSwKICAgICAgICAgICAgICAgICAgcmVxdWVzdEhlYWRlcjogSlNPTi5zdHJpbmdpZnkoZm9ybURhdGEucmVxdWVzdEhlYWRlciksCiAgICAgICAgICAgICAgICAgIHJlc3BvbnNlUGFyYW1zOiBKU09OLnN0cmluZ2lmeShmb3JtRGF0YS5yZXNwb25zZVBhcmFtcyksCiAgICAgICAgICAgICAgICAgIHJlc3BvbnNlU3RhdHVzOiBKU09OLnN0cmluZ2lmeShmb3JtRGF0YS5yZXNwb25zZVN0YXR1cykKICAgICAgICAgICAgICAgIH0pOyAvLyDosIPnlKjmjqXlj6MKICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxNTsKICAgICAgICAgICAgICAgIHJldHVybiBBUEkuZGVsQWN0aW9uKHJlcXVlc3REYXRhLCBmYWxzZSk7CiAgICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICAgIF90aGlzMy4kbWVzc2FnZS5zdWNjZXNzKCfmjqXlj6PnvJbovpHmiJDlip/vvIEnKTsKICAgICAgICAgICAgICAgIF90aGlzMy4kZW1pdCgnY29uZmlybScpOwoKICAgICAgICAgICAgICAgIC8vIOaIkOWKn+WQjuWFs+mXreW8ueWxggogICAgICAgICAgICAgICAgX3RoaXMzLnZpc2libGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyNDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIGNhc2UgMjA6CiAgICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gMjA7CiAgICAgICAgICAgICAgICBfY29udGV4dC50MCA9IF9jb250ZXh0WyJjYXRjaCJdKDUpOwogICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5o+Q5Lqk5aSx6LSlOicsIF9jb250ZXh0LnQwKTsKICAgICAgICAgICAgICAgIF90aGlzMy4kbWVzc2FnZS5lcnJvcign5o6l5Y+j5paw5aKe5aSx6LSl77yM6K+36YeN6K+VJyk7CiAgICAgICAgICAgICAgY2FzZSAyNDoKICAgICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAyNDsKICAgICAgICAgICAgICAgIC8vIOaXoOiuuuaIkOWKn+Wksei0pe+8jOaBouWkjeaMiemSrueKtuaAgQogICAgICAgICAgICAgICAgX3RoaXMzLmlzU3VibWl0dGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgX3RoaXMzLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5maW5pc2goMjQpOwogICAgICAgICAgICAgIGNhc2UgMjg6CiAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sIF9jYWxsZWUsIG51bGwsIFtbNSwgMjAsIDI0LCAyOF1dKTsKICAgICAgICB9KSk7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeCkgewogICAgICAgICAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICB9OwogICAgICB9KCkpOwogICAgfQogIH0KfTs="},null]}