{"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\\dataCollect\\dataCollectCompany\\dataSourceItem\\FieldsManage.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataCollect\\dataCollectCompany\\dataSourceItem\\FieldsManage.vue","mtime":1735066560924},{"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:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvZGF0YVNoYXJlLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2RhdGFTaGFyZS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc3BsaWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRlc3QuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCBkaWFsb2dNaXhpbiBmcm9tICdAL21peGlucy9kaWFsb2cuanMnOwppbXBvcnQgdXRpbHMgZnJvbSAnQC9ob3RlbnQtdWktdXRpbC5qcyc7CmltcG9ydCBlbnVtRGljdERpYWxvZyBmcm9tICcuL0VudW1EaWN0RGlhbG9nLnZ1ZSc7CmltcG9ydCBtdWx0aURpY3REaWFsb2cgZnJvbSAnLi9NdWx0aURpY3REaWFsb2cudnVlJzsKaW1wb3J0IHsgZ2V0RGljdGlvbmFyeUJ5Q29kZSB9IGZyb20gJ0AvdXRpbHMvZGljdGlvbmFyeS5qcyc7CmltcG9ydCBBUEkgZnJvbSAnQC9hcGkvYnVzaW5lc3MvZGF0YUNvbGxlY3RDb21wYW55JzsKaW1wb3J0IHsgbWFwU3RhdGUgfSBmcm9tICd2dWV4JzsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICdTb3VyY2VGaWVsZHNNYW5hZ2UnLAogIGNvbXBvbmVudHM6IHsKICAgIGVudW1EaWN0RGlhbG9nOiBlbnVtRGljdERpYWxvZywKICAgIG11bHRpRGljdERpYWxvZzogbXVsdGlEaWN0RGlhbG9nCiAgfSwKICBtaXhpbnM6IFtkaWFsb2dNaXhpbl0sCiAgcHJvcHM6IHsKICAgIGRhdGE6IHsKICAgICAgdHlwZTogT2JqZWN0LAogICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHsKICAgICAgICByZXR1cm4ge307CiAgICAgIH0KICAgIH0KICB9LAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICB0YWJsZUNvbmZpZzogW3sKICAgICAgICBsYWJlbDogJ+i1hOa6kOWQjeensCcsCiAgICAgICAgdmFsdWVLZXk6ICduYW1lJwogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICfotYTmupDnvJbnoIEnLAogICAgICAgIHZhbHVlS2V5OiAnY29kZScKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAn5a6e5L2T6KGo5Lit5paH5ZCNJywKICAgICAgICB2YWx1ZUtleTogJ3RhYmxlTmFtZUNoJwogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICflrp7kvZPooajoi7HmloflkI0nLAogICAgICAgIHZhbHVlS2V5OiAndGFibGVOYW1lRW4nCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+WunuS9k+ihqOaPj+i/sCcsCiAgICAgICAgdmFsdWVLZXk6ICd0YWJsZURlc2MnCiAgICAgIH1dLAogICAgICBmaWVsZHNSdWxlczogewogICAgICAgIG5hbWU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICflrZfmrrXlkI3np7DkuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogJ2JsdXInCiAgICAgICAgfV0sCiAgICAgICAgY29kZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+Wtl+autee8lueggeS4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9LCB7CiAgICAgICAgICBwYXR0ZXJuOiAvXlthLXpBLVpdW2EtekEtWjAtOV9dKiQvLAogICAgICAgICAgbWVzc2FnZTogJ+S7peWtl+avjeW8gOWktOeahOWtl+avjeOAgeaVsOWtl+OAgeS4i+WIkue6v+e7hOWQiCcsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZScsICdibHVyJ10KICAgICAgICB9XQogICAgICB9LAogICAgICBmb3JtOiB7CiAgICAgICAgYXR0ckRhdGE6IFtdCiAgICAgIH0sCiAgICAgIGltcG9ydERhdGE6IHsKICAgICAgICB0YWJsZUlkOiAnJwogICAgICB9LAogICAgICBkaWFsb2dWaXNpYmxlRW51bTogZmFsc2UsCiAgICAgIGRpYWxvZ1Zpc2libGVNdWx0aTogZmFsc2UsCiAgICAgIGN1cnJlbnRSb3c6IG51bGwsCiAgICAgIGluZGV4OiBudWxsLAogICAgICB0YWJlbERhdGE6IG51bGwsCiAgICAgIHRhYmxlTG9hZGluZzogZmFsc2UsCiAgICAgIHVwbG9hZExvYWRpbmc6IGZhbHNlLAogICAgICB1cGxvYWRWaXNpYmxlOiBmYWxzZSwKICAgICAgbG9hZGluZzogZmFsc2UKICAgIH07CiAgfSwKICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgewogICAgdmFyIF90aGlzID0gdGhpczsKICAgIGRvY3VtZW50Lm9ua2V5ZG93biA9IGZ1bmN0aW9uICgpIHsKICAgICAgaWYgKF90aGlzLmZvcm0uYXR0ckRhdGEpIHsKICAgICAgICB2YXIga2V5ID0gd2luZG93LmV2ZW50LmtleUNvZGU7CiAgICAgICAgaWYgKGtleSA9PSAxMTMpIHsKICAgICAgICAgIC8vID09IDgzICYmIGV2ZW50LmN0cmxLZXkKICAgICAgICAgIF90aGlzLmFkZEF0dHJSb3dzKCk7CiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgX3RoaXMuJHJlZnMuYXR0clRhYmxlU2Nyb2xsYmFySGVpZ2h0LmJvZHlXcmFwcGVyLnNjcm9sbFRvcCA9IF90aGlzLiRyZWZzLmF0dHJUYWJsZVNjcm9sbGJhckhlaWdodC5ib2R5V3JhcHBlci5zY3JvbGxIZWlnaHQ7CiAgICAgICAgICB9LCA1MDApOwogICAgICAgIH0KICAgICAgfQogICAgfTsKICB9LAogIGNvbXB1dGVkOiBfb2JqZWN0U3ByZWFkKHsKICAgIGFjdGlvblVybDogZnVuY3Rpb24gYWN0aW9uVXJsKF8pIHsKICAgICAgcmV0dXJuICIiLmNvbmNhdCh3aW5kb3cuY29udGV4dC5wb3J0YWwsICIvYml6L2RhdGFDb2xsZWN0L2NsdXN0ZXJGaWVsZC92MS9pbXBvcnRGaWxlIik7CiAgICB9CiAgfSwgbWFwU3RhdGUoewogICAgaGVhZGVyczogZnVuY3Rpb24gaGVhZGVycyhzdGF0ZSkgewogICAgICByZXR1cm4gewogICAgICAgIEF1dGhvcml6YXRpb246ICJCZWFyZXIgIi5jb25jYXQoc3RhdGUubG9naW4uY3VycmVudFVzZXIudG9rZW4pCiAgICAgIH07CiAgICB9CiAgfSkpLAogIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7fSwKICBtZXRob2RzOiB7CiAgICBpbml0RGF0YTogZnVuY3Rpb24gaW5pdERhdGEoZGF0YSkgewogICAgICB0aGlzLnRhYmVsRGF0YSA9IGRhdGE7CiAgICAgIHRoaXMuaW1wb3J0RGF0YS50YWJsZUlkID0gZGF0YS5pZDsKICAgICAgdGhpcy5nZXRGaWVsZHNCeVRhYmxlKCk7CiAgICB9LAogICAgZ2V0RmllbGRzQnlUYWJsZTogZnVuY3Rpb24gZ2V0RmllbGRzQnlUYWJsZSgpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHsKICAgICAgICB2YXIgX3lpZWxkJEFQSSRnZXRGaWVsZHNMLCBmaWVsZExpc3Q7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX3RoaXMyLnRhYmxlTG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDE7CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDQ7CiAgICAgICAgICAgICAgcmV0dXJuIEFQSS5nZXRGaWVsZHNMaXN0KF90aGlzMi5kYXRhLmlkKTsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgIF95aWVsZCRBUEkkZ2V0RmllbGRzTCA9IF9jb250ZXh0LnNlbnQ7CiAgICAgICAgICAgICAgZmllbGRMaXN0ID0gX3lpZWxkJEFQSSRnZXRGaWVsZHNMLmZpZWxkTGlzdDsKICAgICAgICAgICAgICBjb25zb2xlLmxvZyhmaWVsZExpc3QpOwogICAgICAgICAgICAgIGlmIChmaWVsZExpc3QgJiYgZmllbGRMaXN0Lmxlbmd0aCkgewogICAgICAgICAgICAgICAgX3RoaXMyLmZvcm0uYXR0ckRhdGEgPSBmaWVsZExpc3Q7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxMzsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAxMDoKICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gMTA7CiAgICAgICAgICAgICAgX2NvbnRleHQudDAgPSBfY29udGV4dFsiY2F0Y2giXSgxKTsKICAgICAgICAgICAgICBjb25zb2xlLmxvZyhfY29udGV4dC50MCk7CiAgICAgICAgICAgICAgLy8gdGhpcy4kbWVzc2FnZS53YXJuaW5nKGVyciB8fCAn6LWE5rqQ6aG55a2X5q615p+l6K+i5aSx6LSl77yBJyk7CiAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDEzOwogICAgICAgICAgICAgIF90aGlzMi50YWJsZUxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuZmluaXNoKDEzKTsKICAgICAgICAgICAgY2FzZSAxNjoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUsIG51bGwsIFtbMSwgMTAsIDEzLCAxNl1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgZ2V0RGljdGlvbmFyeUJ5Q29kZTogZ2V0RGljdGlvbmFyeUJ5Q29kZSwKICAgIGNoYW5nZURpY3Q6IGZ1bmN0aW9uIGNoYW5nZURpY3QoZGF0YSkgewogICAgICB0aGlzLmN1cnJlbnRSb3cuZGltZW5zaW9uSWQgPSBkYXRhLmlkOwogICAgICB0aGlzLmZvcm0uYXR0ckRhdGEuc3BsaWNlKHRoaXMuaW5kZXgsIDEsIGRhdGEpOwogICAgfSwKICAgIC8vIOaWsOWinuWtl+autQogICAgYWRkQXR0clJvd3M6IGZ1bmN0aW9uIGFkZEF0dHJSb3dzKCkgewogICAgICB2YXIgcm93ID0gewogICAgICAgIHRhYmxlSWQ6IHRoaXMudGFiZWxEYXRhLmlkLAogICAgICAgIGNvZGU6ICcnLAogICAgICAgIG5hbWU6ICcnLAogICAgICAgIGRlc2M6ICcnLAogICAgICAgIGZpZWxkVHlwZTogJzEnLAogICAgICAgIGlzSW5pdEZpbGVkOiAnTicsCiAgICAgICAgaXNQazogJzAnLAogICAgICAgIGlzUmVxdWlyZWQ6ICcwJywKICAgICAgICBVaUNvbUNvZGU6ICdpbnB1dCcsCiAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLAogICAgICAgIGRlZmF1bHRWYWx1ZTogJycsCiAgICAgICAgZm9ybWF0OiAnJywKICAgICAgICBmaWVsZFZhbHVlVHlwZTogJzEnLAogICAgICAgIGRpbWVuc2lvbklkOiAnJywKICAgICAgICB1bml0OiAnJywKICAgICAgICBhdHRyTGVuZ3RoOiAyMDAsCiAgICAgICAgZGVjaW1hbExlbjogMCwKICAgICAgICBpc0VuY3J5cHQ6ICcwJywKICAgICAgICBpc0VkaXQ6ICcwJywKICAgICAgICBpc0Rlc2Vuc2l0aXplOiAnMCcsCiAgICAgICAgaW5kZXg6IHRoaXMuZm9ybS5hdHRyRGF0YS5sZW5ndGggKyAxCiAgICAgIH07CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YS5zcGxpY2UodGhpcy5mb3JtLmF0dHJEYXRhLmxlbmd0aCwgMCwgcm93KTsKICAgIH0sCiAgICBjaGFuZ2VGaWVsZFZhbHVlVHlwZTogZnVuY3Rpb24gY2hhbmdlRmllbGRWYWx1ZVR5cGUodmFsLCByb3csIGluZGV4KSB7CiAgICAgIHJvdy5kaW1lbnNpb25JZCA9ICcnOwogICAgICByb3cuZmllbGRWYWx1ZVR5cGUgPSB2YWw7CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YS5zcGxpY2UoaW5kZXgsIDEsIHJvdyk7CiAgICB9LAogICAgLy8gVUnnsbvlnovliIfmjaLorr7nva7pu5jorqTlgLwKICAgIGNoYW5nZVVJVHlwZTogZnVuY3Rpb24gY2hhbmdlVUlUeXBlKHZhbCwgcm93LCBpbmRleCkgewogICAgICBjb25zb2xlLmxvZyh2YWwsIHJvdywgaW5kZXgpOwogICAgICByb3cuZGF0YVR5cGUgPSAnc3RyaW5nJzsKICAgICAgcm93LmZvcm1hdCA9ICcnOwogICAgICByb3cuZmllbGRWYWx1ZVR5cGUgPSAnMSc7CiAgICAgIGlmICh2YWwgPT09ICdkYXRlJykgewogICAgICAgIHJvdy5kYXRhVHlwZSA9ICdkYXRldGltZSc7CiAgICAgICAgcm93LmZvcm1hdCA9ICd5eXl5LU1NLWRkJzsKICAgICAgfSBlbHNlIGlmICh2YWwgPT09ICdzZWxlY3QnIHx8IHZhbCA9PT0gJ2NoZWNrYm94JyB8fCB2YWwgPT09ICdyYWRpbycpIHsKICAgICAgICByb3cuZmllbGRWYWx1ZVR5cGUgPSAnMic7CiAgICAgIH0KICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhLnNwbGljZShpbmRleCwgMSwgcm93KTsKICAgIH0sCiAgICAvLyDmlbDmja7nsbvlnovliIfmjaLorr7nva7pu5jorqTlgLwKICAgIGNoYW5nZURhdGFUeXBlOiBmdW5jdGlvbiBjaGFuZ2VEYXRhVHlwZSh2YWwsIHJvdywgaW5kZXgpIHsKICAgICAgcm93LmF0dHJMZW5ndGggPSAwOwogICAgICByb3cuZGVjaW1hbExlbiA9IDA7CiAgICAgIHJvdy5mb3JtYXQgPSAnJzsKICAgICAgcm93LmZpZWxkVmFsdWVUeXBlID0gJzEnOwogICAgICByb3cuZGltZW5zaW9uSWQgPSAnJzsKICAgICAgaWYgKHZhbCA9PT0gJ2RhdGV0aW1lJykgewogICAgICAgIHJvdy5mb3JtYXQgPSAneXl5eS1NTS1kZCc7CiAgICAgIH0gZWxzZSBpZiAodmFsID09PSAnc3RyaW5nJykgewogICAgICAgIHJvdy5hdHRyTGVuZ3RoID0gMjAwOwogICAgICB9IGVsc2UgaWYgKHZhbCA9PT0gJ251bWJlcicpIHsKICAgICAgICByb3cuYXR0ckxlbmd0aCA9IDEwOwogICAgICAgIHJvdy5kZWNpbWFsTGVuID0gMjsKICAgICAgfQogICAgICB0aGlzLmZvcm0uYXR0ckRhdGEuc3BsaWNlKGluZGV4LCAxLCByb3cpOwogICAgfSwKICAgIC8vIOmAieaLqeWtl+WFuAogICAgaGFuZGxlU2VhcmNoRGljdDogZnVuY3Rpb24gaGFuZGxlU2VhcmNoRGljdChyb3csICRpbmRleCkgewogICAgICB0aGlzLmN1cnJlbnRSb3cgPSByb3c7CiAgICAgIHRoaXMuaW5kZXggPSAkaW5kZXg7CiAgICAgIGlmIChyb3cuZmllbGRWYWx1ZVR5cGUgPT09ICcyJykgewogICAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZUVudW0gPSB0cnVlOwogICAgICB9IGVsc2UgaWYgKHJvdy5maWVsZFZhbHVlVHlwZSA9PT0gJzMnKSB7CiAgICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlTXVsdGkgPSB0cnVlOwogICAgICB9CiAgICB9LAogICAgaGFuZGxlQ29tbWFuZDogZnVuY3Rpb24gaGFuZGxlQ29tbWFuZChwYXJhbSkgewogICAgICBzd2l0Y2ggKHBhcmFtLmNvbW1hbmQpIHsKICAgICAgICBjYXNlICdkZWwnOgogICAgICAgICAgdGhpcy5kZWxldGVBdHRyUm93cyhwYXJhbS5yb3csIHBhcmFtLmluZGV4KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ3VwJzoKICAgICAgICAgIHRoaXMuYXR0clVwKHBhcmFtLnJvdywgcGFyYW0uaW5kZXgpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnZG93bic6CiAgICAgICAgICB0aGlzLmF0dHJEb3duKHBhcmFtLnJvdywgcGFyYW0uaW5kZXgpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9LAogICAgLy8g5Yig6Zmk5a2X5q61IOS8quWIoOmZpCDorr7nva7lrZfmrrUgc3RhdHVzIOWAvCBoaWRlCiAgICBpc0RlbDogZnVuY3Rpb24gaXNEZWwocm93LCBpbmRleCkge30sCiAgICAvLyDliKDpmaTlrZfmrrUKICAgIGRlbGV0ZUF0dHJSb3dzOiBmdW5jdGlvbiBkZWxldGVBdHRyUm93cyhyb3csIGluZGV4KSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICBpZiAocm93LmlzSW5pdEZpbGVkID09PSAnWScpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivpeWtl+auteS4uuWIneWni+Wtl+aute+8jOS4jeWPr+WIoOmZpO+8gScpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLiRjb25maXJtKCJcdTY2MkZcdTU0MjZcdTUyMjBcdTk2NjRcdTVCNTdcdTZCQjVcdUZGMDgiLmNvbmNhdChyb3cubmFtZSwgIlx1RkYwOT8iKSwgJ+aPkOekuicsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgIH0pLnRoZW4oLyojX19QVVJFX18qL19hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMigpIHsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiBBUEkuZGVsRmllbGRzKHJvdy5pZCk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBfdGhpczMuJG1lc3NhZ2Uuc3VjY2Vzcygn5Yig6Zmk5oiQ5YqfJyk7CiAgICAgICAgICAgICAgX3RoaXMzLmZvcm0uYXR0ckRhdGEuc3BsaWNlKGluZGV4LCAxKTsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUyKTsKICAgICAgfSkpKTsKCiAgICAgIC8vICAgaWYgKCFyb3cuaWQpIHsKICAgICAgLy8gICAgIHRoaXMuZm9ybS5hdHRyRGF0YS5zcGxpY2UoaW5kZXgsIDEpOwogICAgICAvLyAgIH0KICAgICAgLy8gICB0aGlzLmlzRGVsKHJvdywgaW5kZXgpOwogICAgfSwKICAgIGF0dHJVcDogZnVuY3Rpb24gYXR0clVwKHJvdywgaW5kZXgpIHsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4XS5pbmRleCA9IHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleF0uaW5kZXggLSAxOwogICAgICB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXggLSAxXS5pbmRleCA9IHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleCAtIDFdLmluZGV4ICsgMTsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhID0gdXRpbHMuYXJyYXlNb3ZlKHRoaXMuZm9ybS5hdHRyRGF0YSwgcm93LCAndXAnKTsKICAgIH0sCiAgICBhdHRyRG93bjogZnVuY3Rpb24gYXR0ckRvd24ocm93LCBpbmRleCkgewogICAgICB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXhdLmluZGV4ID0gdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4XS5pbmRleCArIDE7CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleCArIDFdLmluZGV4ID0gdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4ICsgMV0uaW5kZXggLSAxOwogICAgICB0aGlzLmZvcm0uYXR0ckRhdGEgPSB1dGlscy5hcnJheU1vdmUodGhpcy5mb3JtLmF0dHJEYXRhLCByb3csICdkb3duJyk7CiAgICB9LAogICAgb25DYW5jZWw6IGZ1bmN0aW9uIG9uQ2FuY2VsKCkgewogICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTsKICAgIH0sCiAgICBoYW5kbGVQdWJsaXNoOiBmdW5jdGlvbiBoYW5kbGVQdWJsaXNoKCkgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNCgpIHsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTQkKF9jb250ZXh0NCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ0LnByZXYgPSBfY29udGV4dDQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX3RoaXM0LiRjb25maXJtKCflj5HluIPlkI7mlbDmja7lsIbml6Dms5Xkv67mlLnlkozliKDpmaQsIOaYr+WQpue7p+e7rT8nLCAn5o+Q56S6JywgewogICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICAgICAgICB9KS50aGVuKC8qI19fUFVSRV9fKi9fYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0MykgewogICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSAwOwogICAgICAgICAgICAgICAgICAgICAgX3RoaXM0LmxvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA0OwogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFQSS5wdWJsaXNoVGFibGUoX3RoaXM0LmRhdGEuaWQpOwogICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS5zdWNjZXNzKCflj5HluIPmiJDlip8nKTsKICAgICAgICAgICAgICAgICAgICAgIF90aGlzNC5nZXRGaWVsZHNCeVRhYmxlKCk7CiAgICAgICAgICAgICAgICAgICAgICBfdGhpczQudmlzaWJsZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gNzsKICAgICAgICAgICAgICAgICAgICAgIF90aGlzNC5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLmZpbmlzaCg3KTsKICAgICAgICAgICAgICAgICAgICBjYXNlIDEwOgogICAgICAgICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgX2NhbGxlZTMsIG51bGwsIFtbMCwsIDcsIDEwXV0pOwogICAgICAgICAgICAgIH0pKSk7CiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNCk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIG9uQ29uZmlybTogZnVuY3Rpb24gb25Db25maXJtKCkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgdGhpcy4kcmVmcy5mb3JtLnZhbGlkYXRlKC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9yZWYzID0gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU1KHZhbGlkLCBvYmplY3QpIHsKICAgICAgICAgIHZhciBwYXJhbXM7CiAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTUkKF9jb250ZXh0NSkgewogICAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDUucHJldiA9IF9jb250ZXh0NS5uZXh0KSB7CiAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgaWYgKCF2YWxpZCkgewogICAgICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDE5OwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF90aGlzNS5sb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgIHBhcmFtcyA9IHsKICAgICAgICAgICAgICAgICAgZmllbGRMaXN0OiBfdGhpczUuZm9ybS5hdHRyRGF0YSwKICAgICAgICAgICAgICAgICAgdGFibGU6IF90aGlzNS5kYXRhCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgX2NvbnRleHQ1LnByZXYgPSAzOwogICAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSA2OwogICAgICAgICAgICAgICAgcmV0dXJuIEFQSS5zYXZlRmllbGRzKHBhcmFtcyk7CiAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgX3RoaXM1LiRtZXNzYWdlLnN1Y2Nlc3MoJ+Wtl+auteS/neWtmOaIkOWKnycpOwogICAgICAgICAgICAgICAgX3RoaXM1LnZpc2libGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgIF90aGlzNS4kZW1pdCgnY29uZmlybScpOwogICAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAxNDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgICAgICBfY29udGV4dDUucHJldiA9IDExOwogICAgICAgICAgICAgICAgX2NvbnRleHQ1LnQwID0gX2NvbnRleHQ1WyJjYXRjaCJdKDMpOwogICAgICAgICAgICAgICAgX3RoaXM1LiRtZXNzYWdlLndhcm5pbmcoX2NvbnRleHQ1LnQwIHx8ICfmk43kvZzlpLHotKUnKTsKICAgICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICAgICAgX2NvbnRleHQ1LnByZXYgPSAxNDsKICAgICAgICAgICAgICAgIF90aGlzNS5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LmZpbmlzaCgxNCk7CiAgICAgICAgICAgICAgY2FzZSAxNzoKICAgICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gMjE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBjYXNlIDE5OgogICAgICAgICAgICAgICAgX3RoaXM1LiRtZXNzYWdlLndhcm5pbmcoIlx1NjcwOSIuY29uY2F0KE9iamVjdC5rZXlzKG9iamVjdCkubGVuZ3RoLCAiXHU0RTJBXHU1QjU3XHU2QkI1XHU2NzJBXHU5MDFBXHU4RkM3XHU2ODIxXHU5QThDXHVGRjBDXHU4QkY3XHU2QjYzXHU3ODZFXHU1ODZCXHU1MTk5XHU4ODY4XHU1MzU1XHUzMDAyIikpOwogICAgICAgICAgICAgICAgX3RoaXM1LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICBjYXNlIDIxOgogICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZTUsIG51bGwsIFtbMywgMTEsIDE0LCAxN11dKTsKICAgICAgICB9KSk7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeCwgX3gyKSB7CiAgICAgICAgICByZXR1cm4gX3JlZjMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICB9OwogICAgICB9KCkpOwogICAgfSwKICAgIGRvd25sb2FkOiBmdW5jdGlvbiBkb3dubG9hZCgpIHsKICAgICAgdmFyIGZpbGVOYW1lID0gJ+aVsOaNruaPkOS+m+aWuS3mlbDmja7lrZfmrrXmuIXljZUueGxzeCc7CiAgICAgIHZhciBmaWxlID0gIi9maWxlL2Rvd25sb2FkLyIuY29uY2F0KGZpbGVOYW1lKTsKICAgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CiAgICAgIGEuaHJlZiA9IGZpbGU7CiAgICAgIGEuZG93bmxvYWQgPSBmaWxlTmFtZTsgLy8g6K6+572u5LiL6L295paH5Lu25paH5Lu25ZCNCiAgICAgIGEuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsKICAgICAgYS5jbGljaygpOwogICAgICBhLnJlbW92ZSgpOwogICAgfSwKICAgIC8vICDlr7zlhaXmlofku7bkuIrkvKDliY0KICAgIGJlZm9yZVVwbG9hZDogZnVuY3Rpb24gYmVmb3JlVXBsb2FkKGZpbGUpIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CiAgICAgIHRoaXMudXBsb2FkVmlzaWJsZSA9IGZhbHNlOwogICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgIF90aGlzNi51cGxvYWRMb2FkaW5nID0gdHJ1ZTsKICAgICAgICB2YXIgc2l6ZSA9IGZpbGUuc2l6ZSwKICAgICAgICAgIG5hbWUgPSBmaWxlLm5hbWU7CiAgICAgICAgX3RoaXM2LiRjb25maXJtKCJcdThCRjdcdTc4NkVcdThCQTRcdTY2MkZcdTU0MjZcdTVCRkNcdTUxNjUgXHUyMDFDIi5jb25jYXQobmFtZSwgIlx1MjAxRCBcdUZGMUYiKSwgJ+aPkOekuicsIHsKICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu6K6kJywKICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoXykgewogICAgICAgICAgdmFyIHBhc3NlZE9yTm90ID0gdHJ1ZTsgLy8g5piv5ZCm6YCa6L+H6aqM6K+BCiAgICAgICAgICB2YXIgdHlwZVJlZ3VsYXIgPSAvXC4oeGxzfHhsc3gpJC9pOwogICAgICAgICAgdmFyIHZlcmlmaWNhdGlvbiA9IFt7CiAgICAgICAgICAgIGNvbmRpdGlvbjogIXR5cGVSZWd1bGFyLnRlc3QobmFtZSksCiAgICAgICAgICAgIHJlc3VsdDogZnVuY3Rpb24gcmVzdWx0KCkgewogICAgICAgICAgICAgIHJldHVybiBfdGhpczYuJG1lc3NhZ2UuZXJyb3IoJ+WPquiDveS4iuS8oHhsc+aIlnhsc3jmlofku7bnsbvlnosnKTsKICAgICAgICAgICAgfQogICAgICAgICAgfV07CiAgICAgICAgICB2ZXJpZmljYXRpb24uZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICBpZiAoaXRlbS5jb25kaXRpb24pIHsKICAgICAgICAgICAgICBpdGVtLnJlc3VsdCgpOwogICAgICAgICAgICAgIHBhc3NlZE9yTm90ID0gZmFsc2U7CiAgICAgICAgICAgICAgX3RoaXM2LnVwbG9hZExvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgICBwYXNzZWRPck5vdCA/IHJlc29sdmUoKSA6IHJlamVjdCgpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgIF90aGlzNi51cGxvYWRMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICBfdGhpczYuJG1lc3NhZ2Uud2FybmluZygn5bey5Y+W5raI5LiK5LygJyk7CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOWvvOWFpeaWh+S7tuS4iuS8oOaIkOWKnwogICAgaGFuZGxlU3VjY2VzczogZnVuY3Rpb24gaGFuZGxlU3VjY2VzcyhyZXMpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTYoKSB7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU2JChfY29udGV4dDYpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Ni5wcmV2ID0gX2NvbnRleHQ2Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIGlmICghcmVzLnN0YXRlKSB7CiAgICAgICAgICAgICAgICBfY29udGV4dDYubmV4dCA9IDc7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX3RoaXM3LiRtZXNzYWdlLnN1Y2Nlc3MoJ+WvvOWFpeaIkOWKnycpOwogICAgICAgICAgICAgIF90aGlzNy51cGxvYWRMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgX2NvbnRleHQ2Lm5leHQgPSA1OwogICAgICAgICAgICAgIHJldHVybiBfdGhpczcuZ2V0RmllbGRzQnlUYWJsZSgpOwogICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgX2NvbnRleHQ2Lm5leHQgPSA4OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgX3RoaXM3LiRtZXNzYWdlLmVycm9yKHJlcy5tZXNzYWdlKTsKICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDYuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU2KTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g5a+85YWl5paH5Lu25LiK5Lyg5aSx6LSlCiAgICBoYW5kbGVFcnJvcjogZnVuY3Rpb24gaGFuZGxlRXJyb3IoKSB7CiAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+WvvOWFpeWksei0pe+8jOivt+mHjeivlScpOwogICAgICB0aGlzLnVwbG9hZExvYWRpbmcgPSBmYWxzZTsKICAgIH0KICB9Cn07"},null]}