{"remainingRequest":"/data/jenkins/workspace/badp-bcxin-web-5.x-vuechat/node_modules/thread-loader/dist/cjs.js!/data/jenkins/workspace/badp-bcxin-web-5.x-vuechat/node_modules/babel-loader/lib/index.js!/data/jenkins/workspace/badp-bcxin-web-5.x-vuechat/node_modules/cache-loader/dist/cjs.js??ref--0-0!/data/jenkins/workspace/badp-bcxin-web-5.x-vuechat/node_modules/vue-loader/lib/index.js??vue-loader-options!/data/jenkins/workspace/badp-bcxin-web-5.x-vuechat/src/ui/voip/Multi.vue?vue&type=script&lang=js&","dependencies":[{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-vuechat/src/ui/voip/Multi.vue","mtime":1703226585034},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-vuechat/node_modules/cache-loader/dist/cjs.js","mtime":1702017034107},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-vuechat/node_modules/thread-loader/dist/cjs.js","mtime":1702017030024},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-vuechat/node_modules/babel-loader/lib/index.js","mtime":1702017034360},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-vuechat/node_modules/cache-loader/dist/cjs.js","mtime":1702017034107},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-vuechat/node_modules/vue-loader/lib/index.js","mtime":1702017029242}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0IjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmlsdGVyIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZm9yLWVhY2giOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pbmRleC1vZiI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcCI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoIjsKaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tICIvZGF0YS9qZW5raW5zL3dvcmtzcGFjZS9iYWRwLWJjeGluLXdlYi01LngtdnVlY2hhdC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Db25zdW1hYmxlQXJyYXkiOwppbXBvcnQgX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIgZnJvbSAiL2RhdGEvamVua2lucy93b3Jrc3BhY2UvYmFkcC1iY3hpbi13ZWItNS54LXZ1ZWNoYXQvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwppbXBvcnQgYXZlbmdpbmVraXQgZnJvbSAiLi4vLi4vd2ZjL2F2L2ludGVybmFsL2VuZ2luZS5taW4iOwppbXBvcnQgQ2FsbFNlc3Npb25DYWxsYmFjayBmcm9tICIuLi8uLi93ZmMvYXYvZW5naW5lL2NhbGxTZXNzaW9uQ2FsbGJhY2siOwppbXBvcnQgQ2FsbFN0YXRlIGZyb20gIi4uLy4uL3dmYy9hdi9lbmdpbmUvY2FsbFN0YXRlIjsKaW1wb3J0IHsgaXNFbGVjdHJvbiB9IGZyb20gIi4uLy4uL3BsYXRmb3JtIjsKaW1wb3J0IFNjcmVlbk9yV2luZG93UGlja2VyIGZyb20gIi4vU2NyZWVuT3JXaW5kb3dQaWNrZXIiOwppbXBvcnQgTXVsdGlDYWxsT25nb2luZ01lc3NhZ2VDb250ZW50IGZyb20gIi4uLy4uL3dmYy9hdi9tZXNzYWdlcy9tdWx0aUNhbGxPbmdvaW5nTWVzc2FnZUNvbnRlbnQiOwppbXBvcnQgVmlkZW9UeXBlIGZyb20gIi4uLy4uL3dmYy9hdi9lbmdpbmUvdmlkZW9UeXBlIjsKaW1wb3J0IHdmYyBmcm9tICIuLi8uLi93ZmMvY2xpZW50L3dmYyI7CmltcG9ydCBDb25maWcgZnJvbSAiLi4vLi4vY29uZmlnIjsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICdNdWx0aScsCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIHNlc3Npb246IG51bGwsCiAgICAgIGF1ZGlvT25seTogZmFsc2UsCiAgICAgIHN0YXR1czogMSwKICAgICAgc2VsZlVzZXJJbmZvOiBudWxsLAogICAgICBpbml0aWF0b3JVc2VySW5mbzogbnVsbCwKICAgICAgcGFydGljaXBhbnRVc2VySW5mb3M6IFtdLAogICAgICBncm91cE1lbWJlclVzZXJJbmZvczogW10sCiAgICAgIHN0YXJ0VGltZXN0YW1wOiAwLAogICAgICBjdXJyZW50VGltZXN0YW1wOiAwLAogICAgICB2aWRlb0lucHV0RGV2aWNlSW5kZXg6IDAsCiAgICAgIGJyb2FkY2FzdE11bHRpQ2FsbE9uZ29pbmdUaW1lcjogMCwKICAgICAgYXV0b1BsYXlJbnRlcnZhbDogMCwKICAgICAgc2hvd1dlYnJ0Y1RpcDogZmFsc2UsCiAgICAgIHJpbmdBdWRpbzogbnVsbAogICAgfTsKICB9LAogIG1ldGhvZHM6IHsKICAgIC8vIOeUqOadpeino+WGsyBpT1Mg5LiK77yM5LiN6IO96Ieq5Yqo5pKt5pS+6Zeu6aKYCiAgICBhdXRvUGxheTogZnVuY3Rpb24gYXV0b1BsYXkoKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CgogICAgICBpZiAoaXNFbGVjdHJvbigpKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBjb25zb2xlLmxvZygnYXV0byBwbGF5Jyk7CgogICAgICBpZiAoIXRoaXMuYXV0b1BsYXlJbnRlcnZhbCkgewogICAgICAgIHRoaXMuYXV0b1BsYXlJbnRlcnZhbCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIHZhciB2aWRlb3MgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmlkZW8nKTsKICAgICAgICAgICAgdmFyIGFsbFBsYXlpbmcgPSB0cnVlOwoKICAgICAgICAgICAgdmFyIF9pdGVyYXRvciA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHZpZGVvcyksCiAgICAgICAgICAgICAgICBfc3RlcDsKCiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgZm9yIChfaXRlcmF0b3IucygpOyAhKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZTspIHsKICAgICAgICAgICAgICAgIHZhciB2aWRlbyA9IF9zdGVwLnZhbHVlOwoKICAgICAgICAgICAgICAgIGlmICh2aWRlby5wYXVzZWQpIHsKICAgICAgICAgICAgICAgICAgYWxsUGxheWluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9IC8vIHBhcnRpY2lwYW50VXNlckluZm9zIOS4jeWMheWQq+iHquW3sQoKICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgICAgICAgX2l0ZXJhdG9yLmUoZXJyKTsKICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICBfaXRlcmF0b3IuZigpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoYWxsUGxheWluZyAmJiB2aWRlb3MubGVuZ3RoID09PSBfdGhpcy5wYXJ0aWNpcGFudFVzZXJJbmZvcy5sZW5ndGggKyAxKSB7CiAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChfdGhpcy5hdXRvUGxheUludGVydmFsKTsKICAgICAgICAgICAgICBfdGhpcy5hdXRvUGxheUludGVydmFsID0gMDsKICAgICAgICAgICAgICBjb25zb2xlLmxvZygnYXV0byBwbGF5LCBhbGxQbGF5aW5nJywgdmlkZW9zLmxlbmd0aCk7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgX2l0ZXJhdG9yMiA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHZpZGVvcyksCiAgICAgICAgICAgICAgICBfc3RlcDI7CgogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgIGZvciAoX2l0ZXJhdG9yMi5zKCk7ICEoX3N0ZXAyID0gX2l0ZXJhdG9yMi5uKCkpLmRvbmU7KSB7CiAgICAgICAgICAgICAgICB2YXIgX3ZpZGVvID0gX3N0ZXAyLnZhbHVlOwoKICAgICAgICAgICAgICAgIGlmIChfdmlkZW8ucGF1c2VkKSB7CiAgICAgICAgICAgICAgICAgIF92aWRlby5wbGF5KCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICAgICAgICBfaXRlcmF0b3IyLmUoZXJyKTsKICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICBfaXRlcmF0b3IyLmYoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSBjYXRjaCAoZSkgey8vIGRvIG5vdGhpbmcKICAgICAgICAgIH0KICAgICAgICB9LCAxMDApOwogICAgICB9CiAgICB9LAogICAgc3dpdGNoVmlkZW9UeXBlOiBmdW5jdGlvbiBzd2l0Y2hWaWRlb1R5cGUodXNlcklkLCBzY3JlZW5TaGFyaW5nKSB7CiAgICAgIGlmICghdGhpcy5zZXNzaW9uKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICB2YXIgc3Vic2NyaWJlciA9IHRoaXMuc2Vzc2lvbi5nZXRTdWJzY3JpYmVyKHVzZXJJZCwgc2NyZWVuU2hhcmluZyk7CgogICAgICBpZiAoc3Vic2NyaWJlcikgewogICAgICAgIHZhciBjdXJyZW50VmlkZW9UeXBlID0gc3Vic2NyaWJlci5jdXJyZW50VmlkZW9UeXBlOwogICAgICAgIHZhciB2aWRlb1R5cGUgPSBWaWRlb1R5cGUuTk9ORTsKCiAgICAgICAgaWYgKGN1cnJlbnRWaWRlb1R5cGUgPT09IFZpZGVvVHlwZS5OT05FKSB7CiAgICAgICAgICB2aWRlb1R5cGUgPSBWaWRlb1R5cGUuQklHX1NUUkVBTTsKICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRWaWRlb1R5cGUgPT09IFZpZGVvVHlwZS5CSUdfU1RSRUFNKSB7CiAgICAgICAgICB2aWRlb1R5cGUgPSBWaWRlb1R5cGUuU01BTExfU1RSRUFNOwogICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFZpZGVvVHlwZSA9PT0gVmlkZW9UeXBlLlNNQUxMX1NUUkVBTSkgewogICAgICAgICAgdmlkZW9UeXBlID0gVmlkZW9UeXBlLk5PTkU7CiAgICAgICAgfQoKICAgICAgICB0aGlzLnNlc3Npb24uc2V0UGFydGljaXBhbnRWaWRlb1R5cGUodXNlcklkLCBzY3JlZW5TaGFyaW5nLCB2aWRlb1R5cGUpOwogICAgICB9CiAgICB9LAogICAgc2V0dXBTZXNzaW9uQ2FsbGJhY2s6IGZ1bmN0aW9uIHNldHVwU2Vzc2lvbkNhbGxiYWNrKCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKCiAgICAgIHZhciBzZXNzaW9uQ2FsbGJhY2sgPSBuZXcgQ2FsbFNlc3Npb25DYWxsYmFjaygpOwoKICAgICAgc2Vzc2lvbkNhbGxiYWNrLmRpZENoYW5nZVN0YXRlID0gZnVuY3Rpb24gKHN0YXRlKSB7CiAgICAgICAgX3RoaXMyLnN0YXR1cyA9IHN0YXRlOyAvLyDlk43pk4PnpLrkvovku6PnoIEKCiAgICAgICAgaWYgKHN0YXRlID09PSBDYWxsU3RhdGUuU1RBVFVTX09VVEdPSU5HKSB7CiAgICAgICAgICBjb25zb2xlLmxvZygnc3RhcnQgb3V0Z29pbmcgcmluZycpOwogICAgICAgICAgX3RoaXMyLnJpbmdBdWRpbyA9IG5ldyBBdWRpbyhyZXF1aXJlKCJAL2Fzc2V0cy9hdWRpb3Mvb3V0Z29pbmdfY2FsbF9yaW5nLm1wMyIpKTsKICAgICAgICAgIF90aGlzMi5yaW5nQXVkaW8ubG9vcCA9IHRydWU7CgogICAgICAgICAgX3RoaXMyLnJpbmdBdWRpby5wbGF5KCk7CiAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gQ2FsbFN0YXRlLlNUQVRVU19JTkNPTUlORykgey8vIOeUseS6jua1j+iniOWZqOeahOmZkOWItu+8jHdlYiDnq6/vvIzlj6/og73kuI3og73oh6rliqjmkq3mlL7vvIHvvIEhCiAgICAgICAgICAvLyDlj6blpJbvvIzlvq7kv6HmlLbliLDpn7Pop4bpopHpgJror53pgoDor7fml7bvvIzkuZ/msqHmnInlo7Dpn7MKICAgICAgICAgIC8vIHRoaXMucmluZ0F1ZGlvID0gbmV3IEF1ZGlvKHJlcXVpcmUoIkAvYXNzZXRzL2F1ZGlvcy9pbmNvbWluZ19jYWxsX3JpbmcubXAzIikpCiAgICAgICAgICAvLyB0aGlzLnJpbmdBdWRpby5sb29wID0gdHJ1ZTsKICAgICAgICAgIC8vIHRoaXMucmluZ0F1ZGlvLnBsYXkoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKF90aGlzMi5yaW5nQXVkaW8pIHsKICAgICAgICAgICAgX3RoaXMyLnJpbmdBdWRpby5wYXVzZSgpOwoKICAgICAgICAgICAgX3RoaXMyLnJpbmdBdWRpbyA9IG51bGw7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RhdGUgPT09IENhbGxTdGF0ZS5TVEFUVVNfQ09OTkVDVEVEKSB7CiAgICAgICAgICBpZiAoX3RoaXMyLnN0YXJ0VGltZXN0YW1wID09PSAwKSB7CiAgICAgICAgICAgIF90aGlzMi5zdGFydFRpbWVzdGFtcCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOwogICAgICAgICAgICBfdGhpczIudGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgX3RoaXMyLmN1cnJlbnRUaW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKICAgICAgICAgICAgfSwgMTAwMCk7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gQ2FsbFN0YXRlLlNUQVRVU19JRExFKSB7CiAgICAgICAgICBpZiAoX3RoaXMyLnRpbWVyKSB7CiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoX3RoaXMyLnRpbWVyKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH07CgogICAgICBzZXNzaW9uQ2FsbGJhY2sub25Jbml0aWFsID0gZnVuY3Rpb24gKHNlc3Npb24sIHNlbGZVc2VySW5mbywgaW5pdGlhdG9yVXNlckluZm8sIHBhcnRpY2lwYW50VXNlckluZm9zLCBncm91cE1lbWJlclVzZXJJbmZvcykgewogICAgICAgIF90aGlzMi5zZXNzaW9uID0gc2Vzc2lvbjsKICAgICAgICBfdGhpczIuYXVkaW9Pbmx5ID0gc2Vzc2lvbi5hdWRpb09ubHk7CiAgICAgICAgX3RoaXMyLnNlbGZVc2VySW5mbyA9IHNlbGZVc2VySW5mbzsKICAgICAgICBfdGhpczIuaW5pdGlhdG9yVXNlckluZm8gPSBpbml0aWF0b3JVc2VySW5mbzsgLy8g5Li65LqG6YC76L6R5pu05riF5pmw77yM5Y+C5pWw5byV55So5Lyg6YCS77yM5Y+C5pWw5Lit5Lyg5YWl55qEcGFydGljaXBhbnRVc2VySW5mb3PkvJrlj5jljJbvvIzlpoLmnpznm7TmjqXkvb/nlKjnmoTor53vvIxkaWRQYXJ0aWNpcGFudEpvaW5lZOmHjOmdou+8jOWPr+WVpemDveS4jeWBmgoKICAgICAgICBfdGhpczIucGFydGljaXBhbnRVc2VySW5mb3MgPSBfdG9Db25zdW1hYmxlQXJyYXkocGFydGljaXBhbnRVc2VySW5mb3MpOwogICAgICAgIF90aGlzMi5ncm91cE1lbWJlclVzZXJJbmZvcyA9IGdyb3VwTWVtYmVyVXNlckluZm9zOyAvLyBwbHMgcmVmZXIgdG86IGh0dHBzOi8vdnVlanMub3JnL3YyL2d1aWRlL3JlYWN0aXZpdHkuaHRtbAoKICAgICAgICBfdGhpczIuJHNldChfdGhpczIuc2VsZlVzZXJJbmZvLCAnX3N0cmVhbScsIG51bGwpOwoKICAgICAgICBfdGhpczIucGFydGljaXBhbnRVc2VySW5mb3MuZm9yRWFjaChmdW5jdGlvbiAocCkgewogICAgICAgICAgcmV0dXJuIF90aGlzMi4kc2V0KHAsICJfc3RyZWFtIiwgbnVsbCk7CiAgICAgICAgfSk7CgogICAgICAgIF90aGlzMi5ncm91cE1lbWJlclVzZXJJbmZvcy5mb3JFYWNoKGZ1bmN0aW9uIChtKSB7CiAgICAgICAgICByZXR1cm4gX3RoaXMyLiRzZXQobSwgIl9zdHJlYW0iLCBudWxsKTsKICAgICAgICB9KTsKCiAgICAgICAgaWYgKENvbmZpZy5FTkFCTEVfTVVMVElfQ0FMTF9BVVRPX0pPSU4gJiYgc2VsZlVzZXJJbmZvLnVpZCA9PT0gaW5pdGlhdG9yVXNlckluZm8udWlkKSB7CiAgICAgICAgICBfdGhpczIuYnJvYWRjYXN0TXVsdGlDYWxsT25nb2luZ1RpbWVyID0gc2V0SW50ZXJ2YWwoX3RoaXMyLmJyb2FkY2FzdE11bHRpQ2FsbE9uZ29pbmcsIDEwMDApOwogICAgICAgIH0KICAgICAgfTsKCiAgICAgIHNlc3Npb25DYWxsYmFjay5kaWRDaGFuZ2VNb2RlID0gZnVuY3Rpb24gKGF1ZGlvT25seSkgewogICAgICAgIF90aGlzMi5hdWRpb09ubHkgPSBhdWRpb09ubHk7CiAgICAgIH07CgogICAgICBzZXNzaW9uQ2FsbGJhY2suZGlkQ3JlYXRlTG9jYWxWaWRlb1RyYWNrID0gZnVuY3Rpb24gKHN0cmVhbSkgewogICAgICAgIF90aGlzMi5zZWxmVXNlckluZm8uX3N0cmVhbSA9IHN0cmVhbTsKCiAgICAgICAgX3RoaXMyLmF1dG9QbGF5KCk7CiAgICAgIH07CgogICAgICBzZXNzaW9uQ2FsbGJhY2suZGlkUmVjZWl2ZVJlbW90ZVZpZGVvVHJhY2sgPSBmdW5jdGlvbiAodXNlcklkLCBzdHJlYW0pIHsKICAgICAgICB2YXIgcDsKCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfdGhpczIucGFydGljaXBhbnRVc2VySW5mb3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHAgPSBfdGhpczIucGFydGljaXBhbnRVc2VySW5mb3NbaV07CgogICAgICAgICAgaWYgKHAudWlkID09PSB1c2VySWQpIHsKICAgICAgICAgICAgcC5fc3RyZWFtID0gc3RyZWFtOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIF90aGlzMi5hdXRvUGxheSgpOwogICAgICB9OwoKICAgICAgc2Vzc2lvbkNhbGxiYWNrLmRpZFBhcnRpY2lwYW50Sm9pbmVkID0gZnVuY3Rpb24gKHVzZXJJZCwgc2NyZWVuU2hhcmluZykgewogICAgICAgIHZhciB1c2VySW5mbyA9IHdmYy5nZXRVc2VySW5mbyh1c2VySWQpOwogICAgICAgIGNvbnNvbGUubG9nKCdkaWRQYXJ0aWNpcGFudEpvaW5lZCcsIHVzZXJJbmZvKTsKICAgICAgICB1c2VySW5mby5fc3RyZWFtID0gbnVsbDsKCiAgICAgICAgX3RoaXMyLnBhcnRpY2lwYW50VXNlckluZm9zLnB1c2godXNlckluZm8pOwogICAgICB9OwoKICAgICAgc2Vzc2lvbkNhbGxiYWNrLmRpZFBhcnRpY2lwYW50TGVmdCA9IGZ1bmN0aW9uICh1c2VySWQpIHsKICAgICAgICBjb25zb2xlLmxvZygnZGlkUGFydGljaXBhbnRMZWZ0JywgdXNlcklkLCBfdGhpczIucGFydGljaXBhbnRVc2VySW5mb3MubGVuZ3RoKTsKICAgICAgICBfdGhpczIucGFydGljaXBhbnRVc2VySW5mb3MgPSBfdGhpczIucGFydGljaXBhbnRVc2VySW5mb3MuZmlsdGVyKGZ1bmN0aW9uIChwKSB7CiAgICAgICAgICByZXR1cm4gcC51aWQgIT09IHVzZXJJZDsKICAgICAgICB9KTsKICAgICAgICBjb25zb2xlLmxvZygnZGlkUGFydGljaXBhbnRMZWZ0IGQnLCB1c2VySWQsIF90aGlzMi5wYXJ0aWNpcGFudFVzZXJJbmZvcy5sZW5ndGgpOwogICAgICB9OwoKICAgICAgc2Vzc2lvbkNhbGxiYWNrLmRpZENhbGxFbmRXaXRoUmVhc29uID0gZnVuY3Rpb24gKHJlYXNvbikgewogICAgICAgIGNvbnNvbGUubG9nKCdjYWxsRW5kV2l0aFJlYXNvbicsIHJlYXNvbik7CgogICAgICAgIF90aGlzMi5zZXNzaW9uLmNsb3NlVm9pcFdpbmRvdygpOwoKICAgICAgICBfdGhpczIuc2Vzc2lvbiA9IG51bGw7CiAgICAgIH07CgogICAgICBzZXNzaW9uQ2FsbGJhY2suZGlkVmlkZW9NdXRlZCA9IGZ1bmN0aW9uICh1c2VySWQsIG11dGVkKSB7CiAgICAgICAgX3RoaXMyLnBhcnRpY2lwYW50VXNlckluZm9zLmZvckVhY2goZnVuY3Rpb24gKHUpIHsKICAgICAgICAgIGlmICh1LnVpZCA9PT0gdXNlcklkKSB7CiAgICAgICAgICAgIHZhciBjbGllbnQgPSBfdGhpczIuc2Vzc2lvbi5nZXRTdWJzY3JpYmVyKHVzZXJJZCk7CgogICAgICAgICAgICB1Ll9pc1ZpZGVvTXV0ZWQgPSBjbGllbnQudmlkZW9NdXRlZDsKICAgICAgICAgICAgY29uc29sZS5sb2coJ2RpZE11dGVTdGF0ZUNoYW5nZWQnLCBjbGllbnQudmlkZW9NdXRlZCwgY2xpZW50LmF1ZGlvTXV0ZWQpOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICB9OwoKICAgICAgc2Vzc2lvbkNhbGxiYWNrLmRpZE1lZGlhTG9zdFBhY2tldCA9IGZ1bmN0aW9uIChtZWRpYSwgbG9zdFBhY2tldCkgewogICAgICAgIGlmIChsb3N0UGFja2V0ID4gNikgewogICAgICAgICAgY29uc29sZS5sb2coJ+aCqOeahOe9kee7nOS4jeWlvScpOwogICAgICAgIH0KICAgICAgfTsKCiAgICAgIHNlc3Npb25DYWxsYmFjay5kaWRVc2VyTWVkaWFMb3N0UGFja2V0ID0gZnVuY3Rpb24gKHVzZXJJZCwgbWVkaWEsIGxvc3RQYWNrZXQsIHVwbGluaykgewogICAgICAgIC8v5aaC5p6cdXBsaW5rIHR1cmXlr7nmlrnnvZHnu5zkuI3lpb3vvIxmYWxzZeaCqOeahOe9kee7nOS4jeWlvQogICAgICAgIC8v5o6l5pS25pa55Lii5YyF6LaF6L+HMTDkuLrnvZHnu5zkuI3lpb0KICAgICAgICBpZiAobG9zdFBhY2tldCA+IDEwKSB7CiAgICAgICAgICBpZiAodXBsaW5rKSB7CiAgICAgICAgICAgIHZhciB1c2VySW5mb3MgPSBfdGhpczIucGFydGljaXBhbnRVc2VySW5mb3MuZmlsdGVyKGZ1bmN0aW9uICh1KSB7CiAgICAgICAgICAgICAgcmV0dXJuIHUudWlkID09PSB1c2VySWQ7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgaWYgKHVzZXJJbmZvcyAmJiB1c2VySW5mb3MubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgIGNvbnNvbGUubG9nKHVzZXJJbmZvc1swXS5kaXNwbGF5TmFtZSwgIue9kee7nOS4jeWlvSIpOwogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjb25zb2xlLmxvZygn5oKo55qE572R57uc5LiN5aW9Jyk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9OwoKICAgICAgc2Vzc2lvbkNhbGxiYWNrLmRpZENoYW5nZUluaXRpYXRvciA9IGZ1bmN0aW9uIChpbml0aWF0b3IpIHsKICAgICAgICBfdGhpczIuaW5pdGlhdG9yVXNlckluZm8gPSB3ZmMuZ2V0VXNlckluZm8oaW5pdGlhdG9yKTsKCiAgICAgICAgaWYgKCFfdGhpczIuYnJvYWRjYXN0TXVsdGlDYWxsT25nb2luZ1RpbWVyKSB7CiAgICAgICAgICBfdGhpczIuYnJvYWRjYXN0TXVsdGlDYWxsT25nb2luZ1RpbWVyID0gc2V0SW50ZXJ2YWwoX3RoaXMyLmJyb2FkY2FzdE11bHRpQ2FsbE9uZ29pbmcsIDIwMCk7CiAgICAgICAgfQogICAgICB9OwoKICAgICAgYXZlbmdpbmVraXQuc2Vzc2lvbkNhbGxiYWNrID0gc2Vzc2lvbkNhbGxiYWNrOwogICAgfSwKICAgIGFuc3dlcjogZnVuY3Rpb24gYW5zd2VyKCkgewogICAgICB0aGlzLnNlc3Npb24uY2FsbCgpOwogICAgfSwKICAgIGhhbmd1cDogZnVuY3Rpb24gaGFuZ3VwKCkgewogICAgICB0aGlzLnNlc3Npb24uaGFuZ3VwKCk7CiAgICB9LAogICAgc3dpdGNoQ2FtZXJhOiBmdW5jdGlvbiBzd2l0Y2hDYW1lcmEoKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwoKICAgICAgaWYgKCF0aGlzLnNlc3Npb24gfHwgdGhpcy5zZXNzaW9uLmlzU2NyZWVuU2hhcmluZygpKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9IC8vIFRoZSBvcmRlciBpcyBzaWduaWZpY2FudCAtIHRoZSBkZWZhdWx0IGNhcHR1cmUgZGV2aWNlcyB3aWxsIGJlIGxpc3RlZCBmaXJzdC4KICAgICAgLy8gbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCkKCgogICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMoKS50aGVuKGZ1bmN0aW9uIChkZXZpY2VzKSB7CiAgICAgICAgZGV2aWNlcyA9IGRldmljZXMuZmlsdGVyKGZ1bmN0aW9uIChkKSB7CiAgICAgICAgICByZXR1cm4gZC5raW5kID09PSAndmlkZW9pbnB1dCc7CiAgICAgICAgfSk7CgogICAgICAgIGlmIChkZXZpY2VzLmxlbmd0aCA8IDIpIHsKICAgICAgICAgIGNvbnNvbGUubG9nKCdzd2l0Y2hDYW1lcmEgZXJyb3IsIG5vIG1vcmUgdmlkZW8gaW5wdXQgZGV2aWNlJyk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBfdGhpczMudmlkZW9JbnB1dERldmljZUluZGV4Kys7CgogICAgICAgIGlmIChfdGhpczMudmlkZW9JbnB1dERldmljZUluZGV4ID49IGRldmljZXMubGVuZ3RoKSB7CiAgICAgICAgICBfdGhpczMudmlkZW9JbnB1dERldmljZUluZGV4ID0gMDsKICAgICAgICB9CgogICAgICAgIF90aGlzMy5zZXNzaW9uLnNldFZpZGVvSW5wdXREZXZpY2VJZChkZXZpY2VzW190aGlzMy52aWRlb0lucHV0RGV2aWNlSW5kZXhdLmRldmljZUlkKTsKCiAgICAgICAgY29uc29sZS5sb2coJ3NldFZpZGVvSW5wdXREZXZpY2VJZCcsIGRldmljZXNbX3RoaXMzLnZpZGVvSW5wdXREZXZpY2VJbmRleF0pOwogICAgICB9KTsKICAgIH0sCiAgICBtdXRlOiBmdW5jdGlvbiBtdXRlKCkgewogICAgICB2YXIgdG9NdXRlID0gdGhpcy5zZXNzaW9uLmF1ZGlvTXV0ZWQgPyBmYWxzZSA6IHRydWU7CiAgICAgIHRoaXMuc2VsZlVzZXJJbmZvLl9pc0F1ZGlvTXV0ZWQgPSB0b011dGU7CiAgICAgIHRoaXMuc2Vzc2lvbi5tdXRlQXVkaW8odG9NdXRlKTsKICAgIH0sCiAgICBtdXRlVmlkZW86IGZ1bmN0aW9uIG11dGVWaWRlbygpIHsKICAgICAgdmFyIHRvTXV0ZSA9IHRoaXMuc2Vzc2lvbi52aWRlb011dGVkID8gZmFsc2UgOiB0cnVlOwogICAgICB0aGlzLnNlbGZVc2VySW5mby5faXNWaWRlb011dGVkID0gdG9NdXRlOwogICAgICB0aGlzLnNlc3Npb24ubXV0ZVZpZGVvKHRvTXV0ZSk7CiAgICB9LAogICAgZG93bjJ2b2ljZTogZnVuY3Rpb24gZG93bjJ2b2ljZSgpIHsKICAgICAgdGhpcy5zZXNzaW9uLmRvd25ncmFkZTJWb2ljZSgpOwogICAgfSwKICAgIHNjcmVlblNoYXJlOiBmdW5jdGlvbiBzY3JlZW5TaGFyZSgpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CgogICAgICBpZiAodGhpcy5zZXNzaW9uLmlzU2NyZWVuU2hhcmluZygpKSB7CiAgICAgICAgdGhpcy5zZXNzaW9uLnN0b3BTY3JlZW5TaGFyZSgpOwogICAgICB9IGVsc2UgewogICAgICAgIGlmIChpc0VsZWN0cm9uKCkpIHsKICAgICAgICAgIHZhciBiZWZvcmVDbG9zZSA9IGZ1bmN0aW9uIGJlZm9yZUNsb3NlKGV2ZW50KSB7CiAgICAgICAgICAgIC8vIFdoYXQgYSBnYW1ibGUuLi4gNTAlIGNoYW5jZSB0byBjYW5jZWwgY2xvc2luZwogICAgICAgICAgICBpZiAoIWV2ZW50LnBhcmFtcykgewogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGV2ZW50LnBhcmFtcy5zb3VyY2UpIHsKICAgICAgICAgICAgICB2YXIgc291cmNlID0gZXZlbnQucGFyYW1zLnNvdXJjZTsKICAgICAgICAgICAgICB2YXIgZGVza3RvcFNoYXJlT3B0aW9ucyA9IHsKICAgICAgICAgICAgICAgIHNvdXJjZUlkOiBzb3VyY2UuaWQsCiAgICAgICAgICAgICAgICBtaW5XaWR0aDogMTI4MCwKICAgICAgICAgICAgICAgIG1heFdpZHRoOiAxMjgwLAogICAgICAgICAgICAgICAgbWluSGVpZ2h0OiA3MjAsCiAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IDcyMAogICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgIF90aGlzNC5zZXNzaW9uLnN0YXJ0U2NyZWVuU2hhcmUoZGVza3RvcFNoYXJlT3B0aW9ucyk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH07CgogICAgICAgICAgdGhpcy4kbW9kYWwuc2hvdyhTY3JlZW5PcldpbmRvd1BpY2tlciwge30sIHsKICAgICAgICAgICAgd2lkdGg6IDgwMCwKICAgICAgICAgICAgaGVpZ2h0OiA2MDAsCiAgICAgICAgICAgIG5hbWU6ICdzY3JlZW4td2luZG93LXBpY2tlci1tb2RhbCcsCiAgICAgICAgICAgIGNsaWNrVG9DbG9zZTogZmFsc2UKICAgICAgICAgIH0sIHsKICAgICAgICAgICAgLy8gJ2JlZm9yZS1vcGVuJzogYmVmb3JlT3BlbiwKICAgICAgICAgICAgJ2JlZm9yZS1jbG9zZSc6IGJlZm9yZUNsb3NlIC8vICdjbG9zZWQnOiBjbG9zZWQsCgogICAgICAgICAgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuc2Vzc2lvbi5zdGFydFNjcmVlblNoYXJlKCk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgaW52aXRlOiBmdW5jdGlvbiBpbnZpdGUoKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwoKICAgICAgdmFyIHN1Y2Nlc3NDQiA9IGZ1bmN0aW9uIHN1Y2Nlc3NDQih1c2VycykgewogICAgICAgIHZhciB1c2VySWRzID0gdXNlcnMubWFwKGZ1bmN0aW9uICh1KSB7CiAgICAgICAgICByZXR1cm4gdS51aWQ7CiAgICAgICAgfSk7CgogICAgICAgIF90aGlzNS5zZXNzaW9uLmludml0ZU5ld1BhcnRpY2lwYW50cyh1c2VySWRzKTsKICAgICAgfTsKCiAgICAgIHRoaXMuJHBpY2tDb250YWN0KHsKICAgICAgICBzdWNjZXNzQ0I6IHN1Y2Nlc3NDQiwKICAgICAgICB1c2VyczogdGhpcy5zZXNzaW9uLmdyb3VwTWVtYmVyVXNlckluZm9zLAogICAgICAgIGluaXRpYWxDaGVja2VkVXNlcnM6IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkodGhpcy5zZXNzaW9uLnBhcnRpY2lwYW50VXNlckluZm9zKSwgW3RoaXMuc2Vzc2lvbi5zZWxmVXNlckluZm9dKSwKICAgICAgICB1bmNoZWNrYWJsZVVzZXJzOiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHRoaXMuc2Vzc2lvbi5wYXJ0aWNpcGFudFVzZXJJbmZvcyksIFt0aGlzLnNlc3Npb24uc2VsZlVzZXJJbmZvXSksCiAgICAgICAgc2hvd0NhdGVnb3J5TGFiZWw6IGZhbHNlLAogICAgICAgIGNvbmZpcm1UaXRsZTogJ+ehruWumicKICAgICAgfSk7CiAgICB9LAogICAgdXNlck5hbWU6IGZ1bmN0aW9uIHVzZXJOYW1lKHVzZXIpIHsKICAgICAgaWYgKHVzZXIuZ3JvdXBBbGlhcykgewogICAgICAgIG5hbWUgPSB1c2VyLmdyb3VwQWxpYXM7CiAgICAgIH0gZWxzZSBpZiAodXNlci5mcmllbmRBbGlhcykgewogICAgICAgIG5hbWUgPSB1c2VyLmZyaWVuZEFsaWFzOwogICAgICB9IGVsc2UgaWYgKHVzZXIuZGlzcGxheU5hbWUpIHsKICAgICAgICBuYW1lID0gdXNlci5kaXNwbGF5TmFtZTsKICAgICAgfSBlbHNlIHsKICAgICAgICBuYW1lID0gdXNlci5uYW1lOwogICAgICB9CgogICAgICByZXR1cm4gbmFtZTsKICAgIH0sCiAgICB0aW1lc3RhbXBGb3JtYXQ6IGZ1bmN0aW9uIHRpbWVzdGFtcEZvcm1hdCh0aW1lc3RhbXApIHsKICAgICAgdGltZXN0YW1wID0gfn4odGltZXN0YW1wIC8gMTAwMCk7CiAgICAgIHZhciBzdHIgPSAnJzsKICAgICAgdmFyIGhvdXIgPSB+fih0aW1lc3RhbXAgLyAzNjAwKTsKICAgICAgc3RyID0gaG91ciA+IDAgPyAoaG91ciA8IDEwID8gIjAiIDogIiIpICsgaG91ciArICc6JyA6ICcnOwogICAgICB2YXIgbWluID0gfn4odGltZXN0YW1wICUgMzYwMCAvIDYwKTsKICAgICAgc3RyICs9IChtaW4gPCAxMCA/ICIwIiA6ICIiKSArIG1pbiArICc6JzsKICAgICAgdmFyIHNlYyA9IH5+KHRpbWVzdGFtcCAlIDYwKTsKICAgICAgc3RyICs9IChzZWMgPCAxMCA/ICIwIiA6ICIiKSArIHNlYzsKICAgICAgcmV0dXJuIHN0cjsKICAgIH0sCiAgICBicm9hZGNhc3RNdWx0aUNhbGxPbmdvaW5nOiBmdW5jdGlvbiBicm9hZGNhc3RNdWx0aUNhbGxPbmdvaW5nKCkgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKCiAgICAgIHZhciBwYXJ0aWNpcGFudHMgPSB0aGlzLnBhcnRpY2lwYW50VXNlckluZm9zLm1hcChmdW5jdGlvbiAocHUpIHsKICAgICAgICByZXR1cm4gcHUudWlkOwogICAgICB9KS5maWx0ZXIoZnVuY3Rpb24gKHVpZCkgewogICAgICAgIHJldHVybiB1aWQgIT09IF90aGlzNi5zZWxmVXNlckluZm8udWlkOwogICAgICB9KTsKICAgICAgdmFyIG9uZ29pbmcgPSBuZXcgTXVsdGlDYWxsT25nb2luZ01lc3NhZ2VDb250ZW50KHRoaXMuc2Vzc2lvbi5jYWxsSWQsIHRoaXMuc2Vzc2lvbi5pbml0aWF0b3JJZCwgdGhpcy5zZXNzaW9uLmF1ZGlvT25seSwgcGFydGljaXBhbnRzKTsKICAgICAgd2ZjLnNlbmRDb252ZXJzYXRpb25NZXNzYWdlKHRoaXMuc2Vzc2lvbi5jb252ZXJzYXRpb24sIG9uZ29pbmcpOwogICAgfQogIH0sCiAgY29tcHV0ZWQ6IHsKICAgIGR1cmF0aW9uOiBmdW5jdGlvbiBkdXJhdGlvbigpIHsKICAgICAgaWYgKHRoaXMuY3VycmVudFRpbWVzdGFtcCA8PSAwKSB7CiAgICAgICAgcmV0dXJuICcwMDowMCc7CiAgICAgIH0KCiAgICAgIHZhciBlc2NhcGVNaWxsaXMgPSB0aGlzLmN1cnJlbnRUaW1lc3RhbXAgLSB0aGlzLnN0YXJ0VGltZXN0YW1wOwogICAgICByZXR1cm4gdGhpcy50aW1lc3RhbXBGb3JtYXQoZXNjYXBlTWlsbGlzKTsKICAgIH0KICB9LAogIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7CiAgICB2YXIgX3RoaXM3ID0gdGhpczsKCiAgICB2YXIgc3VwcG9ydENvbmZlcmVuY2UgPSBhdmVuZ2luZWtpdC5zdGFydENvbmZlcmVuY2UgIT09IHVuZGVmaW5lZDsKCiAgICBpZiAoIXN1cHBvcnRDb25mZXJlbmNlKSB7CiAgICAgIHZhciBob3N0ID0gd2luZG93LmxvY2F0aW9uLmhvc3Q7CgogICAgICBpZiAoaG9zdC5pbmRleE9mKCd3aWxkZmlyZWNoYXQuY24nKSA9PT0gLTEgJiYgaG9zdC5pbmRleE9mKCdsb2NhbGhvc3QnKSA9PT0gLTEpIHsKICAgICAgICB2YXIgX2l0ZXJhdG9yMyA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKENvbmZpZy5JQ0VfU0VSVkVSUyksCiAgICAgICAgICAgIF9zdGVwMzsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgIGZvciAoX2l0ZXJhdG9yMy5zKCk7ICEoX3N0ZXAzID0gX2l0ZXJhdG9yMy5uKCkpLmRvbmU7KSB7CiAgICAgICAgICAgIHZhciBpY2UgPSBfc3RlcDMudmFsdWU7CgogICAgICAgICAgICBpZiAoaWNlWzBdLmluZGV4T2YoJ3R1cm4ud2lsZGZpcmVjaGF0Lm5ldCcpID49IDApIHsKICAgICAgICAgICAgICAvLyDmmL7npLroh6rooYzpg6jnvbIgdHVybiDmj5DnpLoKICAgICAgICAgICAgICB0aGlzLnNob3dXZWJydGNUaXAgPSB0cnVlOwogICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgX3RoaXM3LnNob3dXZWJydGNUaXAgPSBmYWxzZTsKICAgICAgICAgICAgICB9LCAxMCAqIDEwMDApOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgICBfaXRlcmF0b3IzLmUoZXJyKTsKICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgX2l0ZXJhdG9yMy5mKCk7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgaWYgKGlzRWxlY3Ryb24oKSkgewogICAgICBhdmVuZ2luZWtpdC5zZXR1cCgpOwogICAgfQoKICAgIHRoaXMuc2V0dXBTZXNzaW9uQ2FsbGJhY2soKTsKICB9LAogIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkKCkgewogICAgdmFyIF90aGlzOCA9IHRoaXM7CgogICAgLy8gcmVzZXQKICAgIHRoaXMuJHNldCh0aGlzLnNlbGZVc2VySW5mbywgJ19zdHJlYW0nLCBudWxsKTsKICAgIHRoaXMuZ3JvdXBNZW1iZXJVc2VySW5mb3MuZm9yRWFjaChmdW5jdGlvbiAobSkgewogICAgICByZXR1cm4gX3RoaXM4LiRzZXQobSwgIl9zdHJlYW0iLCBudWxsKTsKICAgIH0pOwoKICAgIGlmICh0aGlzLmJyb2FkY2FzdE11bHRpQ2FsbE9uZ29pbmdUaW1lcikgewogICAgICBjbGVhckludGVydmFsKHRoaXMuYnJvYWRjYXN0TXVsdGlDYWxsT25nb2luZ1RpbWVyKTsKICAgIH0KICB9Cn07"},null]}