{"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\\appLayer\\appLayerCatalogue\\fieldsManage.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\appLayer\\appLayerCatalogue\\fieldsManage.vue","mtime":1736535326078},{"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:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvZGF0YVNoYXJlLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2RhdGFTaGFyZS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZXJyb3IuY2F1c2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zcGxpY2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAudGVzdC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCBkaWFsb2dNaXhpbiBmcm9tICdAL21peGlucy9kaWFsb2cuanMnOwppbXBvcnQgdXRpbHMgZnJvbSAnQC9ob3RlbnQtdWktdXRpbC5qcyc7CmltcG9ydCBlbnVtRGljdERpYWxvZyBmcm9tICcuL2VudW1EaWN0RGlhbG9nLnZ1ZSc7CmltcG9ydCBtdWx0aURpY3REaWFsb2cgZnJvbSAnLi9tdWx0aURpY3REaWFsb2cudnVlJzsKaW1wb3J0IHsgZ2V0RGljdGlvbmFyeUJ5Q29kZSB9IGZyb20gJ0AvdXRpbHMvZGljdGlvbmFyeS5qcyc7CmltcG9ydCBBUEkgZnJvbSAnQC9hcGkvYnVzaW5lc3MvZGF0YUFQUENhdGFsb2cnOwppbXBvcnQgeyBtYXBTdGF0ZSB9IGZyb20gJ3Z1ZXgnOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ0ZpZWxkc01hbmFnZScsCiAgY29tcG9uZW50czogewogICAgZW51bURpY3REaWFsb2c6IGVudW1EaWN0RGlhbG9nLAogICAgbXVsdGlEaWN0RGlhbG9nOiBtdWx0aURpY3REaWFsb2cKICB9LAogIG1peGluczogW2RpYWxvZ01peGluXSwKICBwcm9wczogW10sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICB2YXIgY2hlY2tleSA9IGZ1bmN0aW9uIGNoZWNrZXkocnVsZSwgdmFsdWUsIGNhbGxiYWNrKSB7CiAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKCflrZfmrrXnvJbnoIHkuI3og73kuLrnqbonKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKF90aGlzLmZvcm0uYXR0ckRhdGEuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICByZXR1cm4gaXRlbS5jb2RlID09PSB2YWx1ZTsKICAgICAgICB9KS5sZW5ndGggPiAxKSB7CiAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoJ+Wtl+autee8lueggeS4jeiDvemHjeWkjSEnKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgfQogICAgICB9CiAgICB9OwogICAgcmV0dXJuIHsKICAgICAgZmllbGRzUnVsZXM6IHsKICAgICAgICBuYW1lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5a2X5q615ZCN56ew5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJwogICAgICAgIH1dLAogICAgICAgIGNvZGU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICflrZfmrrXnvJbnoIHkuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogJ2JsdXInCiAgICAgICAgfSwgewogICAgICAgICAgcGF0dGVybjogL15bYS16QS1aXVthLXpBLVowLTlfXSokLywKICAgICAgICAgIG1lc3NhZ2U6ICfku6XlrZfmr43lvIDlpLTnmoTlrZfmr43jgIHmlbDlrZfjgIHkuIvliJLnur/nu4TlkIgnLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnLCAnYmx1ciddCiAgICAgICAgfSwgewogICAgICAgICAgdmFsaWRhdG9yOiBjaGVja2V5LAogICAgICAgICAgdHJpZ2dlcjogJ2JsdXInCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgZm9ybTogewogICAgICAgIGF0dHJEYXRhOiBbXQogICAgICB9LAogICAgICBpbXBvcnREYXRhOiB7CiAgICAgICAgdGFibGVJZDogJycKICAgICAgfSwKICAgICAgZGlhbG9nVmlzaWJsZUVudW06IGZhbHNlLAogICAgICBkaWFsb2dWaXNpYmxlTXVsdGk6IGZhbHNlLAogICAgICBjdXJyZW50Um93OiBudWxsLAogICAgICBpbmRleDogbnVsbCwKICAgICAgdGFiZWxEYXRhOiBudWxsLAogICAgICB0YWJsZUxvYWRpbmc6IGZhbHNlLAogICAgICB1cGxvYWRMb2FkaW5nOiBmYWxzZSwKICAgICAgdXBsb2FkVmlzaWJsZTogZmFsc2UsCiAgICAgIHB1Ymxpc2hlZDogZmFsc2UsCiAgICAgIGZpZWxkc1F1ZXJ5OiB7CiAgICAgICAgcGFnZUJlYW46IHsKICAgICAgICAgIHBhZ2VTaXplOiAtMQogICAgICAgIH0sCiAgICAgICAgcXVlcnlzOiBbewogICAgICAgICAgZ3JvdXA6ICdtYWluJywKICAgICAgICAgIG9wZXJhdGlvbjogJ0VRVUFMJywKICAgICAgICAgIHBhcmVudEdyb3VwOiAnJywKICAgICAgICAgIHByb3BlcnR5OiAndGFibGVJZCcsCiAgICAgICAgICByZWxhdGlvbjogJ0FORCcsCiAgICAgICAgICB2YWx1ZTogJycKICAgICAgICB9XQogICAgICB9CiAgICB9OwogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgZG9jdW1lbnQub25rZXlkb3duID0gZnVuY3Rpb24gKCkgewogICAgICBpZiAoX3RoaXMyLmZvcm0uYXR0ckRhdGEpIHsKICAgICAgICB2YXIga2V5ID0gd2luZG93LmV2ZW50LmtleUNvZGU7CiAgICAgICAgaWYgKGtleSA9PSAxMTMpIHsKICAgICAgICAgIC8vID09IDgzICYmIGV2ZW50LmN0cmxLZXkKICAgICAgICAgIF90aGlzMi5hZGRBdHRyUm93cygpOwogICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIF90aGlzMi4kcmVmcy5hdHRyVGFibGVTY3JvbGxiYXJIZWlnaHQuYm9keVdyYXBwZXIuc2Nyb2xsVG9wID0gX3RoaXMyLiRyZWZzLmF0dHJUYWJsZVNjcm9sbGJhckhlaWdodC5ib2R5V3JhcHBlci5zY3JvbGxIZWlnaHQ7CiAgICAgICAgICB9LCA1MDApOwogICAgICAgIH0KICAgICAgfQogICAgfTsKICB9LAogIGNvbXB1dGVkOiBfb2JqZWN0U3ByZWFkKHsKICAgIGFjdGlvblVybDogZnVuY3Rpb24gYWN0aW9uVXJsKF8pIHsKICAgICAgcmV0dXJuICIiLmNvbmNhdCh3aW5kb3cuY29udGV4dC5wb3J0YWwsICIvYml6L2FwcC9jYXRhbG9ncy90YWJsZS9maWVsZC92MS9pbXBvcnRGaWxlIik7CiAgICB9CiAgfSwgbWFwU3RhdGUoewogICAgaGVhZGVyczogZnVuY3Rpb24gaGVhZGVycyhzdGF0ZSkgewogICAgICByZXR1cm4gewogICAgICAgIEF1dGhvcml6YXRpb246ICJCZWFyZXIgIi5jb25jYXQoc3RhdGUubG9naW4uY3VycmVudFVzZXIudG9rZW4pCiAgICAgIH07CiAgICB9CiAgfSkpLAogIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7fSwKICBtZXRob2RzOiB7CiAgICBpbml0RGF0YTogZnVuY3Rpb24gaW5pdERhdGEoZGF0YSkgewogICAgICB0aGlzLnRhYmVsRGF0YSA9IGRhdGE7CiAgICAgIHRoaXMuaW1wb3J0RGF0YS50YWJsZUlkID0gZGF0YS5pZDsKICAgICAgdGhpcy5wdWJsaXNoZWQgPSB0aGlzLnRhYmVsRGF0YS5kZXBsb3llZCA9PT0gJzEnOwogICAgICB0aGlzLmdldEZpZWxkc0J5VGFibGUoKTsKICAgIH0sCiAgICBnZXRGaWVsZHNCeVRhYmxlOiBmdW5jdGlvbiBnZXRGaWVsZHNCeVRhYmxlKCkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBfeWllbGQkQVBJJHF1ZXJ5RmllbGQsIF95aWVsZCRBUEkkcXVlcnlGaWVsZDIsIHJvd3M7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX3RoaXMzLnRhYmxlTG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgX3RoaXMzLmZpZWxkc1F1ZXJ5LnF1ZXJ5c1swXS52YWx1ZSA9IF90aGlzMy50YWJlbERhdGEuaWQ7CiAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDI7CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDU7CiAgICAgICAgICAgICAgcmV0dXJuIEFQSS5xdWVyeUZpZWxkc0J5VGFibGVJZChfdGhpczMuZmllbGRzUXVlcnkpOwogICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRxdWVyeUZpZWxkID0gX2NvbnRleHQuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkQVBJJHF1ZXJ5RmllbGQyID0gX3lpZWxkJEFQSSRxdWVyeUZpZWxkLnJvd3M7CiAgICAgICAgICAgICAgcm93cyA9IF95aWVsZCRBUEkkcXVlcnlGaWVsZDIgPT09IHZvaWQgMCA/IFtdIDogX3lpZWxkJEFQSSRxdWVyeUZpZWxkMjsKICAgICAgICAgICAgICBpZiAocm93cy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIHJvd3MuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgICBpZiAoaXRlbS5maWVsZFZhbHVlVHlwZSkgewogICAgICAgICAgICAgICAgICAgIGl0ZW0uZmllbGRWYWx1ZVR5cGUgPSBpdGVtLmZpZWxkVmFsdWVUeXBlLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgX3RoaXMzLmZvcm0uYXR0ckRhdGEgPSByb3dzLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5maWVsZFR5cGUgPT09ICcyJzsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBfdGhpczMuZm9ybS5hdHRyRGF0YSA9IFtdOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTQ7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDExOwogICAgICAgICAgICAgIF9jb250ZXh0LnQwID0gX2NvbnRleHRbImNhdGNoIl0oMik7CiAgICAgICAgICAgICAgX3RoaXMzLiRtZXNzYWdlLndhcm5pbmcoX2NvbnRleHQudDAgfHwgJ+i1hOa6kOmhueWtl+auteafpeivouWksei0pe+8gScpOwogICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAxNDsKICAgICAgICAgICAgICBfdGhpczMudGFibGVMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmZpbmlzaCgxNCk7CiAgICAgICAgICAgIGNhc2UgMTc6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlLCBudWxsLCBbWzIsIDExLCAxNCwgMTddXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGdldERpY3Rpb25hcnlCeUNvZGU6IGdldERpY3Rpb25hcnlCeUNvZGUsCiAgICBjaGFuZ2VEaWN0OiBmdW5jdGlvbiBjaGFuZ2VEaWN0KGRhdGEsIGtleSkgewogICAgICB0aGlzLmN1cnJlbnRSb3cuZGltZW5zaW9uSWQgPSBkYXRhW2tleV07CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YS5zcGxpY2UodGhpcy5pbmRleCwgMSwgdGhpcy5jdXJyZW50Um93KTsKICAgIH0sCiAgICAvLyDmlrDlop7lrZfmrrUKICAgIGFkZEF0dHJSb3dzOiBmdW5jdGlvbiBhZGRBdHRyUm93cygpIHsKICAgICAgdmFyIHJvdyA9IHsKICAgICAgICB0YWJsZUlkOiB0aGlzLnRhYmVsRGF0YS5pZCwKICAgICAgICBjb2RlOiAnJywKICAgICAgICBuYW1lOiAnJywKICAgICAgICBkZXNjOiAnJywKICAgICAgICBmaWVsZFR5cGU6ICcyJywKICAgICAgICBpc0luaXRGaWxlZDogJ04nLAogICAgICAgIGlzUGs6ICcwJywKICAgICAgICBpc1JlcXVpcmVkOiAnMCcsCiAgICAgICAgdWlDb21Db2RlOiAnaW5wdXQnLAogICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJywKICAgICAgICBkZWZhdWx0VmFsdWU6ICcnLAogICAgICAgIGZvcm1hdDogJycsCiAgICAgICAgZmllbGRWYWx1ZVR5cGU6ICcxJywKICAgICAgICBkaW1lbnNpb25JZDogJycsCiAgICAgICAgdW5pdDogJycsCiAgICAgICAgYXR0ckxlbmd0aDogMjAwLAogICAgICAgIGRlY2ltYWxMZW46IDAsCiAgICAgICAgaXNFbmNyeXB0OiAnMCcsCiAgICAgICAgaXNFZGl0OiAnMCcsCiAgICAgICAgaXNEZXNlbnNpdGl6ZTogJzAnLAogICAgICAgIGluZGV4OiB0aGlzLmZvcm0uYXR0ckRhdGEubGVuZ3RoICsgMQogICAgICB9OwogICAgICB0aGlzLmZvcm0uYXR0ckRhdGEuc3BsaWNlKHRoaXMuZm9ybS5hdHRyRGF0YS5sZW5ndGgsIDAsIHJvdyk7CiAgICB9LAogICAgY2hhbmdlRmllbGRWYWx1ZVR5cGU6IGZ1bmN0aW9uIGNoYW5nZUZpZWxkVmFsdWVUeXBlKHZhbCwgcm93LCBpbmRleCkgewogICAgICByb3cuZGltZW5zaW9uSWQgPSAnJzsKICAgICAgcm93LmZpZWxkVmFsdWVUeXBlID0gdmFsOwogICAgICB0aGlzLmZvcm0uYXR0ckRhdGEuc3BsaWNlKGluZGV4LCAxLCByb3cpOwogICAgfSwKICAgIC8vIFVJ57G75Z6L5YiH5o2i6K6+572u6buY6K6k5YC8CiAgICBjaGFuZ2VVSVR5cGU6IGZ1bmN0aW9uIGNoYW5nZVVJVHlwZSh2YWwsIHJvdywgaW5kZXgpIHsKICAgICAgY29uc29sZS5sb2codmFsLCByb3csIGluZGV4KTsKICAgICAgcm93LmRhdGFUeXBlID0gJ3N0cmluZyc7CiAgICAgIHJvdy5mb3JtYXQgPSAnJzsKICAgICAgcm93LmZpZWxkVmFsdWVUeXBlID0gJzEnOwogICAgICBpZiAodmFsID09PSAnZGF0ZScpIHsKICAgICAgICByb3cuZGF0YVR5cGUgPSAnZGF0ZXRpbWUnOwogICAgICAgIHJvdy5mb3JtYXQgPSAneXl5eS1NTS1kZCc7CiAgICAgIH0gZWxzZSBpZiAodmFsID09PSAnc2VsZWN0JyB8fCB2YWwgPT09ICdjaGVja2JveCcgfHwgdmFsID09PSAncmFkaW8nKSB7CiAgICAgICAgcm93LmZpZWxkVmFsdWVUeXBlID0gJzInOwogICAgICB9CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YS5zcGxpY2UoaW5kZXgsIDEsIHJvdyk7CiAgICB9LAogICAgLy8g5pWw5o2u57G75Z6L5YiH5o2i6K6+572u6buY6K6k5YC8CiAgICBjaGFuZ2VEYXRhVHlwZTogZnVuY3Rpb24gY2hhbmdlRGF0YVR5cGUodmFsLCByb3csIGluZGV4KSB7CiAgICAgIHJvdy5hdHRyTGVuZ3RoID0gMDsKICAgICAgcm93LmRlY2ltYWxMZW4gPSAwOwogICAgICByb3cuZm9ybWF0ID0gJyc7CiAgICAgIHJvdy5maWVsZFZhbHVlVHlwZSA9ICcxJzsKICAgICAgcm93LmRpbWVuc2lvbklkID0gJyc7CiAgICAgIGlmICh2YWwgPT09ICdkYXRldGltZScpIHsKICAgICAgICByb3cuZm9ybWF0ID0gJ3l5eXktTU0tZGQnOwogICAgICB9IGVsc2UgaWYgKHZhbCA9PT0gJ3N0cmluZycpIHsKICAgICAgICByb3cuYXR0ckxlbmd0aCA9IDIwMDsKICAgICAgfSBlbHNlIGlmICh2YWwgPT09ICdudW1iZXInKSB7CiAgICAgICAgcm93LmF0dHJMZW5ndGggPSAxMDsKICAgICAgICByb3cuZGVjaW1hbExlbiA9IDI7CiAgICAgIH0KICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhLnNwbGljZShpbmRleCwgMSwgcm93KTsKICAgIH0sCiAgICAvLyDpgInmi6nlrZflhbgKICAgIGhhbmRsZVNlYXJjaERpY3Q6IGZ1bmN0aW9uIGhhbmRsZVNlYXJjaERpY3Qocm93LCAkaW5kZXgpIHsKICAgICAgaWYgKHRoaXMucHVibGlzaGVkICYmIHJvdy5pZCkgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLmN1cnJlbnRSb3cgPSByb3c7CiAgICAgIHRoaXMuaW5kZXggPSAkaW5kZXg7CiAgICAgIGlmIChyb3cuZmllbGRWYWx1ZVR5cGUgPT09ICcyJykgewogICAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZUVudW0gPSB0cnVlOwogICAgICB9IGVsc2UgaWYgKHJvdy5maWVsZFZhbHVlVHlwZSA9PT0gJzMnKSB7CiAgICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlTXVsdGkgPSB0cnVlOwogICAgICB9CiAgICB9LAogICAgaGFuZGxlQ29tbWFuZDogZnVuY3Rpb24gaGFuZGxlQ29tbWFuZChwYXJhbSkgewogICAgICBzd2l0Y2ggKHBhcmFtLmNvbW1hbmQpIHsKICAgICAgICBjYXNlICdkZWwnOgogICAgICAgICAgdGhpcy5kZWxldGVBdHRyUm93cyhwYXJhbS5yb3csIHBhcmFtLmluZGV4KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ3VwJzoKICAgICAgICAgIHRoaXMuYXR0clVwKHBhcmFtLnJvdywgcGFyYW0uaW5kZXgpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnZG93bic6CiAgICAgICAgICB0aGlzLmF0dHJEb3duKHBhcmFtLnJvdywgcGFyYW0uaW5kZXgpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9LAogICAgaXNEZWw6IGZ1bmN0aW9uIGlzRGVsKHJvdywgaW5kZXgpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIoKSB7CiAgICAgICAgdmFyIF95aWVsZCRBUEkkZGVsZXRlRmllbCwgc3RhdGUsIG1lc3NhZ2U7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMDsKICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDM7CiAgICAgICAgICAgICAgcmV0dXJuIEFQSS5kZWxldGVGaWVsZChyb3cuaWQpOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRkZWxldGVGaWVsID0gX2NvbnRleHQyLnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkQVBJJGRlbGV0ZUZpZWwuc3RhdGU7CiAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCRBUEkkZGVsZXRlRmllbC5tZXNzYWdlOwogICAgICAgICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgICAgX3RoaXM0LmZvcm0uYXR0ckRhdGEuc3BsaWNlKGluZGV4LCAxKTsKICAgICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS5zdWNjZXNzKCflrZfmrrXliKDpmaTmiJDlip8nKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxMjsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gOTsKICAgICAgICAgICAgICBfY29udGV4dDIudDAgPSBfY29udGV4dDJbImNhdGNoIl0oMCk7CiAgICAgICAgICAgICAgX3RoaXM0LiRtZXNzYWdlLndhcm5pbmcoX2NvbnRleHQyLnQwIHx8ICfmk43kvZzlpLHotKUnKTsKICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDEyOwogICAgICAgICAgICAgIF90aGlzNC5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5maW5pc2goMTIpOwogICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUyLCBudWxsLCBbWzAsIDksIDEyLCAxNV1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g5Yig6Zmk5a2X5q61CiAgICBkZWxldGVBdHRyUm93czogZnVuY3Rpb24gZGVsZXRlQXR0clJvd3Mocm93LCBpbmRleCkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgaWYgKHRoaXMucHVibGlzaGVkICYmIHJvdy5pZCkgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpZiAocm93LmlzSW5pdEZpbGVkID09PSAnWScpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivpeWtl+auteS4uuWIneWni+Wtl+aute+8jOS4jeWPr+WIoOmZpO+8gScpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLiRjb25maXJtKCJcdTZCNjRcdTY0Q0RcdTRGNUNcdTVDMDZcdTUyMjBcdTk2NjRcdTVCNTdcdTZCQjVcdUZGMDgiLmNvbmNhdChyb3cubmFtZSwgIlx1RkYwOSwgXHU2NjJGXHU1NDI2XHU3RUU3XHU3RUVEPyIpLCAn5o+Q56S6JywgewogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgfSkudGhlbigvKiNfX1BVUkVfXyovX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKCkgewogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBpZiAocm93LmlkKSB7CiAgICAgICAgICAgICAgICBfdGhpczUuaXNEZWwocm93LCBpbmRleCk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF90aGlzNS5mb3JtLmF0dHJEYXRhLnNwbGljZShpbmRleCwgMSk7CiAgICAgICAgICAgICAgICBfdGhpczUuJG1lc3NhZ2Uuc3VjY2Vzcygn5a2X5q615Yig6Zmk5oiQ5YqfJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTMpOwogICAgICB9KSkpLmNhdGNoKGZ1bmN0aW9uICgpIHt9KTsKICAgIH0sCiAgICBhdHRyVXA6IGZ1bmN0aW9uIGF0dHJVcChyb3csIGluZGV4KSB7CiAgICAgIGlmICh0aGlzLnB1Ymxpc2hlZCAmJiByb3cuaWQpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4XS5pbmRleCA9IHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleF0uaW5kZXggLSAxOwogICAgICB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXggLSAxXS5pbmRleCA9IHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleCAtIDFdLmluZGV4ICsgMTsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhID0gdXRpbHMuYXJyYXlNb3ZlKHRoaXMuZm9ybS5hdHRyRGF0YSwgcm93LCAndXAnKTsKICAgIH0sCiAgICBhdHRyRG93bjogZnVuY3Rpb24gYXR0ckRvd24ocm93LCBpbmRleCkgewogICAgICBpZiAodGhpcy5wdWJsaXNoZWQgJiYgcm93LmlkKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleF0uaW5kZXggPSB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXhdLmluZGV4ICsgMTsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4ICsgMV0uaW5kZXggPSB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXggKyAxXS5pbmRleCAtIDE7CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YSA9IHV0aWxzLmFycmF5TW92ZSh0aGlzLmZvcm0uYXR0ckRhdGEsIHJvdywgJ2Rvd24nKTsKICAgIH0sCiAgICBvbkNhbmNlbDogZnVuY3Rpb24gb25DYW5jZWwoKSB7CiAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlOwogICAgfSwKICAgIG9uQ29uZmlybTogZnVuY3Rpb24gb25Db25maXJtKCkgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKICAgICAgdGhpcy4kcmVmcy5mb3JtLnZhbGlkYXRlKC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9yZWYyID0gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU0KHZhbGlkLCBvYmplY3QpIHsKICAgICAgICAgIHZhciBfeWllbGQkQVBJJHNhdmVGaWVsZHMsIHN0YXRlLCBtZXNzYWdlOwogICAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU0JChfY29udGV4dDQpIHsKICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ0LnByZXYgPSBfY29udGV4dDQubmV4dCkgewogICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIGlmICghdmFsaWQpIHsKICAgICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAxOTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhfdGhpczYuZm9ybS5hdHRyRGF0YSk7CiAgICAgICAgICAgICAgICBfY29udGV4dDQucHJldiA9IDI7CiAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDU7CiAgICAgICAgICAgICAgICByZXR1cm4gQVBJLnNhdmVGaWVsZHMoX3RoaXM2LmZvcm0uYXR0ckRhdGEpOwogICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgIF95aWVsZCRBUEkkc2F2ZUZpZWxkcyA9IF9jb250ZXh0NC5zZW50OwogICAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkQVBJJHNhdmVGaWVsZHMuc3RhdGU7CiAgICAgICAgICAgICAgICBtZXNzYWdlID0gX3lpZWxkJEFQSSRzYXZlRmllbGRzLm1lc3NhZ2U7CiAgICAgICAgICAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlLnN1Y2Nlc3MoJ+Wtl+auteS/neWtmOaIkOWKnycpOwogICAgICAgICAgICAgICAgICBfdGhpczYuJGVtaXQoJ2NvbmZpcm0nKTsKICAgICAgICAgICAgICAgICAgX3RoaXM2LnZpc2libGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIF90aGlzNi4kbWVzc2FnZS53YXJuaW5nKG1lc3NhZ2UgfHwgJ+aTjeS9nOWksei0pScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAxNDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgICAgICBfY29udGV4dDQucHJldiA9IDExOwogICAgICAgICAgICAgICAgX2NvbnRleHQ0LnQwID0gX2NvbnRleHQ0WyJjYXRjaCJdKDIpOwogICAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlLndhcm5pbmcoX2NvbnRleHQ0LnQwIHx8ICfmk43kvZzlpLHotKUnKTsKICAgICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICAgICAgX2NvbnRleHQ0LnByZXYgPSAxNDsKICAgICAgICAgICAgICAgIF90aGlzNi5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LmZpbmlzaCgxNCk7CiAgICAgICAgICAgICAgY2FzZSAxNzoKICAgICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMjE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBjYXNlIDE5OgogICAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlLndhcm5pbmcoIlx1NjcwOSIuY29uY2F0KE9iamVjdC5rZXlzKG9iamVjdCkubGVuZ3RoLCAiXHU0RTJBXHU1QjU3XHU2QkI1XHU2NzJBXHU5MDFBXHU4RkM3XHU2ODIxXHU5QThDXHVGRjBDXHU4QkY3XHU2QjYzXHU3ODZFXHU1ODZCXHU1MTk5XHU4ODY4XHU1MzU1XHUzMDAyIikpOwogICAgICAgICAgICAgICAgX3RoaXM2LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICBjYXNlIDIxOgogICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZTQsIG51bGwsIFtbMiwgMTEsIDE0LCAxN11dKTsKICAgICAgICB9KSk7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeCwgX3gyKSB7CiAgICAgICAgICByZXR1cm4gX3JlZjIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICB9OwogICAgICB9KCkpOwogICAgfSwKICAgIGRvd25sb2FkOiBmdW5jdGlvbiBkb3dubG9hZCgpIHsKICAgICAgdmFyIGZpbGVUeXBlMiA9ICfmlbDmja7lupTnlKjlsYLliqjmgIHooajlrZfmrrXmuIXljZUueGxzeCc7CiAgICAgIHZhciBmaWxlVHlwZTEgPSAn5pWw5o2u5bqU55So5bGC54mp55CG6KGo5a2X5q615riF5Y2VLnhsc3gnOwogICAgICB2YXIgZmlsZVR5cGU7CiAgICAgIGlmICh0aGlzLnRhYmVsRGF0YS50YWJsZUNsYXNzID09PSAnMScpIHsKICAgICAgICBmaWxlVHlwZSA9IGZpbGVUeXBlMTsKICAgICAgfSBlbHNlIHsKICAgICAgICBmaWxlVHlwZSA9IGZpbGVUeXBlMjsKICAgICAgfQogICAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICAgICAgYS5ocmVmID0gd2luZG93LmNvbnRleHQuZG93bmxvYWQgKyBmaWxlVHlwZTsKICAgICAgYS5kb3dubG9hZCA9IGZpbGVUeXBlOyAvLyDorr7nva7kuIvovb3mlofku7bmlofku7blkI0KICAgICAgYS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpOwogICAgICBhLmNsaWNrKCk7CiAgICAgIGEucmVtb3ZlKCk7CiAgICB9LAogICAgLy8gIOWvvOWFpeaWh+S7tuS4iuS8oOWJjQogICAgYmVmb3JlVXBsb2FkOiBmdW5jdGlvbiBiZWZvcmVVcGxvYWQoZmlsZSkgewogICAgICB2YXIgX3RoaXM3ID0gdGhpczsKICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICBfdGhpczcudXBsb2FkTG9hZGluZyA9IHRydWU7CiAgICAgICAgdmFyIHNpemUgPSBmaWxlLnNpemUsCiAgICAgICAgICBuYW1lID0gZmlsZS5uYW1lOwogICAgICAgIF90aGlzNy4kY29uZmlybSgiXHU4QkY3XHU3ODZFXHU4QkE0XHU2NjJGXHU1NDI2XHU1QkZDXHU1MTY1IFx1MjAxQyIuY29uY2F0KG5hbWUsICJcdTIwMUQgXHVGRjFGIiksICfmj5DnpLonLCB7CiAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruiupCcsCiAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKF8pIHsKICAgICAgICAgIHZhciBwYXNzZWRPck5vdCA9IHRydWU7IC8vIOaYr+WQpumAmui/h+mqjOivgQogICAgICAgICAgdmFyIHR5cGVSZWd1bGFyID0gL1wuKHhsc3x4bHN4KSQvaTsKICAgICAgICAgIHZhciB2ZXJpZmljYXRpb24gPSBbewogICAgICAgICAgICBjb25kaXRpb246ICF0eXBlUmVndWxhci50ZXN0KG5hbWUpLAogICAgICAgICAgICByZXN1bHQ6IGZ1bmN0aW9uIHJlc3VsdCgpIHsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXM3LiRtZXNzYWdlLmVycm9yKCflj6rog73kuIrkvKB4bHPmiJZ4bHN45paH5Lu257G75Z6LJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH1dOwogICAgICAgICAgdmVyaWZpY2F0aW9uLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgaWYgKGl0ZW0uY29uZGl0aW9uKSB7CiAgICAgICAgICAgICAgaXRlbS5yZXN1bHQoKTsKICAgICAgICAgICAgICBwYXNzZWRPck5vdCA9IGZhbHNlOwogICAgICAgICAgICAgIF90aGlzNy51cGxvYWRMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgICAgcGFzc2VkT3JOb3QgPyByZXNvbHZlKCkgOiByZWplY3QoKTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoXykgewogICAgICAgICAgcmVqZWN0KCk7CiAgICAgICAgICBfdGhpczcudXBsb2FkTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgX3RoaXM3LiRtZXNzYWdlLndhcm5pbmcoJ+W3suWPlua2iOS4iuS8oCcpOwogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDlr7zlhaXmlofku7bkuIrkvKDmiJDlip8KICAgIGhhbmRsZVN1Y2Nlc3M6IGZ1bmN0aW9uIGhhbmRsZVN1Y2Nlc3MocmVzKSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU1KCkgewogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNSQoX2NvbnRleHQ1KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDUucHJldiA9IF9jb250ZXh0NS5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBpZiAoIXJlcy5zdGF0ZSkgewogICAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSA3OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF90aGlzOC4kbWVzc2FnZS5zdWNjZXNzKCflr7zlhaXmiJDlip8nKTsKICAgICAgICAgICAgICBfdGhpczgudXBsb2FkTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gNTsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXM4LmdldEZpZWxkc0J5VGFibGUoKTsKICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gODsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgIF90aGlzOC4kbWVzc2FnZS5lcnJvcihyZXMubWVzc2FnZSk7CiAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOWvvOWFpeaWh+S7tuS4iuS8oOWksei0pQogICAgaGFuZGxlRXJyb3I6IGZ1bmN0aW9uIGhhbmRsZUVycm9yKGVycikgewogICAgICBpZiAoZXJyKSB7CiAgICAgICAgdmFyIGVyckRhdGEgPSBlcnIudG9TdHJpbmcoKS5yZXBsYWNlKCdFcnJvcjonLCAnJyk7CiAgICAgICAgZXJyRGF0YSA9IEpTT04ucGFyc2UoZXJyRGF0YSk7CiAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihlcnJEYXRhLm1lc3NhZ2UgfHwgJ+WvvOWFpeWksei0pe+8jOivt+mHjeivlScpOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+WvvOWFpeWksei0pe+8jOivt+mHjeivlScpOwogICAgICB9CiAgICAgIHRoaXMudXBsb2FkTG9hZGluZyA9IGZhbHNlOwogICAgfQogIH0KfTs="},null]}