| | |
| | | /***/ (function(module, exports, __webpack_require__) { |
| | | |
| | | "use strict"; |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0; //\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n// import {\n// \tmapState,\n// \tmapMutations,\n// \tmapActions ,\n// } from 'vuex'\nvar _default = {\n data: function data() {\n //获取全局参数:url-服务器地址\n var server = uni.getStorageSync('server');\n var account = uni.getStorageSync('account');\n var password = uni.getStorageSync('password');\n var url = this.$store.state.url;\n var username = this.$store.state.username;\n var userpwd = this.$store.state.userpwd;\n var ischecked = false;\n if (!server)\n server = url;\n if (!account)\n account = username;\n if (account && password)\n ischecked = true;\n // console.log(url);\n return {\n login: \"开始登录\",\n userServer: server,\n userName: account,\n userPwd: password,\n ischecked: ischecked,\n version: \"1.0.0\" };\n\n },\n // computed: mapState({\n // \t// 从state中拿到数据 箭头函数可使代码更简练\n // \thasLogin: state => state.hasLogin,\n // \tloginprovider: state => state.loginProvider,\n // \tappinfo:state=>state.appInfo\n // }),\n methods: {\n // ...mapMutations({\n // \tmutatLogin:'login'\n // }),\n // ...mapActions({\n // \tactionLogin:'login'\n // }),\n inputDialogToggle: function inputDialogToggle() {\n this.$refs.inputDialog.open();\n },\n dialogInputConfirm: function dialogInputConfirm(val) {\n // console.log(val);\n // uni.showLoading({\n // \ttitle: '3秒后会关闭'\n // })\n // setTimeout(() => {\n // uni.hideLoading();\n this.userServer = val;\n uni.setStorageSync('server', val);\n // this.value = val\n // 关闭窗口后,恢复默认内容\n this.$refs.inputDialog.close();\n // }, 3000)\n },\n rememberPwd: function rememberPwd(e) {//记住密码\n __f__(\"log\", e.target, \" at pages/login/index.vue:231\");\n uni.setStorageSync('account', '');\n uni.setStorageSync('password', '');\n if (e.target.value[0] == '1') {\n uni.setStorageSync('account', this.userName);\n uni.setStorageSync('password', this.userPwd);\n }\n },\n // getCookie(key){\n // \tif(document.cookie.length>0){\n // \t\tvar start = document.cookie.indexOf(key +'=');\n // \t\tif(start !== -1){\n // \t\t\tstart = start+key.length+1;\n // \t\t\tvar end = document.cookie.indexOf(';',start);\n // \t\t\tif(end === -1) end=document.cookie.length;\n // \t\t\treturn document.cookie.substring(start,end);\n // \t\t}\n // \t}\n // \treturn '';\n // },\n // setCookie(cName,value,expiredays){\n // \tvar exdate = new Date();\n // \texdate.setDate(exdate.getDate(),expiredays)\n // \tdocument.cookie = cName+'='+ documentURLComponent(value)+\n // \t((expiredays==null)?'':';expires='+exdate.toGMTString());\n\n // },\n logind: function logind() {var _this = this;\n if (!this.userServer) {\n uni.showModal({ title: \"提示\", content: \"未输入网站地址,请重新配置输入!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n if (!this.userName) {\n uni.showModal({ title: \"提示\", content: \"未输入用户名,请重新输入!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n if (!this.userPwd) {\n uni.showModal({ title: \"提示\", content: \"未输入密码,请重新输入!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n //检查 \"登录状态/锁屏状态\" 结束\n var loginInfo = {\n server: this.userServer,\n uname: this.userName,\n pwd: this.userPwd,\n cname: plus.device.model,\n type: \"0\" };\n\n __f__(\"log\", loginInfo, \" at pages/login/index.vue:279\");\n\n this.$data.login = \"loading......\";\n //登录\n this.$store.dispatch('login', loginInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/login/index.vue:284\");\n if (success.code == '00000') {\n //设置全局参数:user-用户信息\n uni.setStorageSync('server', loginInfo.server);\n // uni.setStorageSync('account',loginInfo.uname);\n // uni.setStorageSync('password',loginInfo.pwd);\n // this.mutatLogin({loginid:success});\n _this.$store.commit('login', {\n loginid: success });\n\n uni.navigateTo({\n url: '../index/index?args=9999999999' });\n\n // uni.redirectTo({\n // \turl:'../index/index?args=9999999999'\n // });\n _this.login = \"开始登录\";\n } else {\n uni.showModal({ title: \"错误\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n _this.login = \"开始登录\";\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/login/index.vue:306\");\n uni.showModal({ title: \"错误\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n _this.login = \"开始登录\";\n });\n } },\n\n onLoad: function onLoad() {var _this2 = this;\n plus.runtime.getProperty(plus.runtime.appid, function (info) {\n // console.log(info);\n _this2.$data.version = info.version;\n });\n } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 13)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbG9naW4vaW5kZXgudnVlIl0sIm5hbWVzIjpbImRhdGEiLCJzZXJ2ZXIiLCJ1bmkiLCJnZXRTdG9yYWdlU3luYyIsImFjY291bnQiLCJwYXNzd29yZCIsInVybCIsIiRzdG9yZSIsInN0YXRlIiwidXNlcm5hbWUiLCJ1c2VycHdkIiwiaXNjaGVja2VkIiwibG9naW4iLCJ1c2VyU2VydmVyIiwidXNlck5hbWUiLCJ1c2VyUHdkIiwidmVyc2lvbiIsIm1ldGhvZHMiLCJpbnB1dERpYWxvZ1RvZ2dsZSIsIiRyZWZzIiwiaW5wdXREaWFsb2ciLCJvcGVuIiwiZGlhbG9nSW5wdXRDb25maXJtIiwidmFsIiwic2V0U3RvcmFnZVN5bmMiLCJjbG9zZSIsInJlbWVtYmVyUHdkIiwiZSIsInRhcmdldCIsInZhbHVlIiwibG9naW5kIiwic2hvd01vZGFsIiwidGl0bGUiLCJjb250ZW50Iiwic2hvd0NhbmNlbCIsImNvbmZpcm1UZXh0IiwibG9naW5JbmZvIiwidW5hbWUiLCJwd2QiLCJjbmFtZSIsInBsdXMiLCJkZXZpY2UiLCJtb2RlbCIsInR5cGUiLCIkZGF0YSIsImRpc3BhdGNoIiwidGhlbiIsInN1Y2Nlc3MiLCJjb2RlIiwiY29tbWl0IiwibG9naW5pZCIsIm5hdmlnYXRlVG8iLCJtc2ciLCJjYXRjaCIsImV4IiwiZXJyTXNnIiwib25Mb2FkIiwicnVudGltZSIsImdldFByb3BlcnR5IiwiYXBwaWQiLCJpbmZvIl0sIm1hcHBpbmdzIjoicUlBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUMsSUFBUCxFQUFZQyxPQUFPLEVBQUNxQixFQUFFLENBQUNDLE1BQXZCLEVBQThCckIsVUFBVSxFQUFDLEtBQXpDLEVBQStDQyxXQUFXLEVBQUMsSUFBM0QsRUFBZDtBQUNBLGFBQUksQ0FBQ3ZCLEtBQUwsR0FBVyxNQUFYO0FBQ0EsT0ExQkQ7QUEyQkEsS0F4R00sRUFoQ007O0FBMElkNEMsUUExSWMsb0JBMElMO0FBQ1JoQixRQUFJLENBQUNpQixPQUFMLENBQWFDLFdBQWIsQ0FBeUJsQixJQUFJLENBQUNpQixPQUFMLENBQWFFLEtBQXRDLEVBQTRDLFVBQUNDLElBQUQsRUFBUTtBQUNuRDtBQUNBLFlBQUksQ0FBQ2hCLEtBQUwsQ0FBVzVCLE9BQVgsR0FBbUI0QyxJQUFJLENBQUM1QyxPQUF4QjtBQUNBLEtBSEQ7QUFJQSxHQS9JYSxFIiwiZmlsZSI6IjM0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbi8vIGltcG9ydCB7XG4vLyBcdG1hcFN0YXRlLFxuLy8gXHRtYXBNdXRhdGlvbnMsXG4vLyBcdG1hcEFjdGlvbnMgLFxuLy8gfSBmcm9tICd2dWV4J1xuZXhwb3J0IGRlZmF1bHQge1xuXHRkYXRhKCl7XG5cdFx0Ly/ojrflj5blhajlsYDlj4LmlbDvvJp1cmwt5pyN5Yqh5Zmo5Zyw5Z2AXG5cdFx0dmFyIHNlcnZlciA9IHVuaS5nZXRTdG9yYWdlU3luYygnc2VydmVyJyk7XG5cdFx0dmFyIGFjY291bnQgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ2FjY291bnQnKTtcblx0XHR2YXIgcGFzc3dvcmQgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ3Bhc3N3b3JkJyk7XG5cdFx0dmFyIHVybCA9IHRoaXMuJHN0b3JlLnN0YXRlLnVybDtcblx0XHR2YXIgdXNlcm5hbWUgPSB0aGlzLiRzdG9yZS5zdGF0ZS51c2VybmFtZTtcblx0XHR2YXIgdXNlcnB3ZCA9IHRoaXMuJHN0b3JlLnN0YXRlLnVzZXJwd2Q7XG5cdFx0dmFyIGlzY2hlY2tlZD1mYWxzZTtcblx0XHRpZighc2VydmVyKVxuXHRcdFx0c2VydmVyID0gdXJsO1xuXHRcdGlmKCFhY2NvdW50KVxuXHRcdFx0YWNjb3VudCA9IHVzZXJuYW1lO1xuXHRcdGlmKGFjY291bnQgJiYgcGFzc3dvcmQpXG5cdFx0XHRpc2NoZWNrZWQ9dHJ1ZTtcblx0XHQvLyBjb25zb2xlLmxvZyh1cmwpO1xuXHRcdHJldHVybiB7XG5cdFx0XHRsb2dpbjpcIuW8gOWni+eZu+W9lVwiLFxuXHRcdFx0dXNlclNlcnZlcjpzZXJ2ZXIsXG5cdFx0XHR1c2VyTmFtZTphY2NvdW50LFxuXHRcdFx0dXNlclB3ZDpwYXNzd29yZCxcblx0XHRcdGlzY2hlY2tlZDppc2NoZWNrZWQsXG5cdFx0XHR2ZXJzaW9uOlwiMS4wLjBcIixcblx0XHR9XG5cdH0sXG5cdC8vIGNvbXB1dGVkOiBtYXBTdGF0ZSh7XG5cdC8vIFx0Ly8g5LuOc3RhdGXkuK3mi7/liLDmlbDmja4g566t5aS05Ye95pWw5Y+v5L2/5Luj56CB5pu0566A57uDXG5cdC8vIFx0aGFzTG9naW46IHN0YXRlID0+IHN0YXRlLmhhc0xvZ2luLFxuXHQvLyBcdGxvZ2lucHJvdmlkZXI6IHN0YXRlID0+IHN0YXRlLmxvZ2luUHJvdmlkZXIsXG5cdC8vIFx0YXBwaW5mbzpzdGF0ZT0+c3RhdGUuYXBwSW5mb1xuXHQvLyB9KSxcblx0bWV0aG9kczp7XG5cdFx0Ly8gLi4ubWFwTXV0YXRpb25zKHtcblx0XHQvLyBcdG11dGF0TG9naW46J2xvZ2luJ1xuXHRcdC8vIH0pLFxuXHRcdC8vIC4uLm1hcEFjdGlvbnMoe1xuXHRcdC8vIFx0YWN0aW9uTG9naW46J2xvZ2luJ1xuXHRcdC8vIH0pLFxuXHRcdGlucHV0RGlhbG9nVG9nZ2xlKCkge1xuXHRcdFx0dGhpcy4kcmVmcy5pbnB1dERpYWxvZy5vcGVuKClcblx0XHR9LFxuXHRcdGRpYWxvZ0lucHV0Q29uZmlybSh2YWwpIHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKHZhbCk7XG5cdFx0XHQvLyB1bmkuc2hvd0xvYWRpbmcoe1xuXHRcdFx0Ly8gXHR0aXRsZTogJzPnp5LlkI7kvJrlhbPpl60nXG5cdFx0XHQvLyB9KVxuXHRcdFx0Ly8gc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHQvLyB1bmkuaGlkZUxvYWRpbmcoKTtcblx0XHRcdHRoaXMudXNlclNlcnZlciA9IHZhbDtcblx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnc2VydmVyJyx2YWwpO1xuXHRcdFx0Ly8gdGhpcy52YWx1ZSA9IHZhbFxuXHRcdFx0Ly8g5YWz6Zet56qX5Y+j5ZCO77yM5oGi5aSN6buY6K6k5YaF5a65XG5cdFx0XHR0aGlzLiRyZWZzLmlucHV0RGlhbG9nLmNsb3NlKClcblx0XHRcdC8vIH0sIDMwMDApXG5cdFx0fSxcblx0XHRyZW1lbWJlclB3ZChlKXsgIC8v6K6w5L2P5a+G56CBXG5cdFx0XHRjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ2FjY291bnQnLCcnKTtcblx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygncGFzc3dvcmQnLCcnKTtcblx0XHRcdGlmKGUudGFyZ2V0LnZhbHVlWzBdPT0nMScpe1xuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ2FjY291bnQnLHRoaXMudXNlck5hbWUpO1xuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ3Bhc3N3b3JkJyx0aGlzLnVzZXJQd2QpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Ly8gZ2V0Q29va2llKGtleSl7XG5cdFx0Ly8gXHRpZihkb2N1bWVudC5jb29raWUubGVuZ3RoPjApe1xuXHRcdC8vIFx0XHR2YXIgc3RhcnQgPSBkb2N1bWVudC5jb29raWUuaW5kZXhPZihrZXkgKyc9Jyk7XG5cdFx0Ly8gXHRcdGlmKHN0YXJ0ICE9PSAtMSl7XG5cdFx0Ly8gXHRcdFx0c3RhcnQgPSBzdGFydCtrZXkubGVuZ3RoKzE7XG5cdFx0Ly8gXHRcdFx0dmFyIGVuZCA9IGRvY3VtZW50LmNvb2tpZS5pbmRleE9mKCc7JyxzdGFydCk7XG5cdFx0Ly8gXHRcdFx0aWYoZW5kID09PSAtMSkgZW5kPWRvY3VtZW50LmNvb2tpZS5sZW5ndGg7XG5cdFx0Ly8gXHRcdFx0cmV0dXJuIGRvY3VtZW50LmNvb2tpZS5zdWJzdHJpbmcoc3RhcnQsZW5kKTtcblx0XHQvLyBcdFx0fVxuXHRcdC8vIFx0fVxuXHRcdC8vIFx0cmV0dXJuICcnO1xuXHRcdC8vIH0sXG5cdFx0Ly8gc2V0Q29va2llKGNOYW1lLHZhbHVlLGV4cGlyZWRheXMpe1xuXHRcdC8vIFx0dmFyIGV4ZGF0ZSA9IG5ldyBEYXRlKCk7XG5cdFx0Ly8gXHRleGRhdGUuc2V0RGF0ZShleGRhdGUuZ2V0RGF0ZSgpLGV4cGlyZWRheXMpXG5cdFx0Ly8gXHRkb2N1bWVudC5jb29raWUgPSBjTmFtZSsnPScrIGRvY3VtZW50VVJMQ29tcG9uZW50KHZhbHVlKStcblx0XHQvLyBcdCgoZXhwaXJlZGF5cz09bnVsbCk/Jyc6JztleHBpcmVzPScrZXhkYXRlLnRvR01UU3RyaW5nKCkpO1xuXHRcdFx0XG5cdFx0Ly8gfSxcblx0XHRsb2dpbmQoKXtcblx0XHRcdGlmKCF0aGlzLnVzZXJTZXJ2ZXIpe1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLmnKrovpPlhaXnvZHnq5nlnLDlnYDvvIzor7fph43mlrDphY3nva7ovpPlhaXvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYoIXRoaXMudXNlck5hbWUpe1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLmnKrovpPlhaXnlKjmiLflkI3vvIzor7fph43mlrDovpPlhaXvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYoIXRoaXMudXNlclB3ZCl7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuacqui+k+WFpeWvhuegge+8jOivt+mHjeaWsOi+k+WFpe+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHQvL+ajgOafpSBcIueZu+W9leeKtuaAgS/plIHlsY/nirbmgIFcIiDnu5PmnZ9cblx0XHRcdHZhciBsb2dpbkluZm8gPSB7XG5cdFx0XHRcdHNlcnZlcjogdGhpcy51c2VyU2VydmVyLFxuXHRcdFx0XHR1bmFtZTogdGhpcy51c2VyTmFtZSxcblx0XHRcdFx0cHdkOiB0aGlzLnVzZXJQd2QsXG5cdFx0XHRcdGNuYW1lOiBwbHVzLmRldmljZS5tb2RlbCxcblx0XHRcdFx0dHlwZTpcIjBcIlxuXHRcdFx0fTtcblx0XHRcdGNvbnNvbGUubG9nKGxvZ2luSW5mbyk7XG5cdFx0XHRcblx0XHRcdHRoaXMuJGRhdGEubG9naW49XCJsb2FkaW5nLi4uLi4uXCI7XG5cdFx0XHQvL+eZu+W9lVxuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2xvZ2luJyxsb2dpbkluZm8pLnRoZW4oc3VjY2Vzcz0+e1xuXHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZSA9PSAnMDAwMDAnKSB7XG5cdFx0XHRcdFx0Ly/orr7nva7lhajlsYDlj4LmlbDvvJp1c2VyLeeUqOaIt+S/oeaBr1xuXHRcdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnc2VydmVyJyxsb2dpbkluZm8uc2VydmVyKTtcblx0XHRcdFx0XHQvLyB1bmkuc2V0U3RvcmFnZVN5bmMoJ2FjY291bnQnLGxvZ2luSW5mby51bmFtZSk7XG5cdFx0XHRcdFx0Ly8gdW5pLnNldFN0b3JhZ2VTeW5jKCdwYXNzd29yZCcsbG9naW5JbmZvLnB3ZCk7XG5cdFx0XHRcdFx0Ly8gdGhpcy5tdXRhdExvZ2luKHtsb2dpbmlkOnN1Y2Nlc3N9KTtcblx0XHRcdFx0XHR0aGlzLiRzdG9yZS5jb21taXQoJ2xvZ2luJyx7XG5cdFx0XHRcdFx0XHRsb2dpbmlkOnN1Y2Nlc3MgXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdFx0dXJsOicuLi9pbmRleC9pbmRleD9hcmdzPTk5OTk5OTk5OTknXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQvLyB1bmkucmVkaXJlY3RUbyh7XG5cdFx0XHRcdFx0Ly8gXHR1cmw6Jy4uL2luZGV4L2luZGV4P2FyZ3M9OTk5OTk5OTk5OSdcblx0XHRcdFx0XHQvLyB9KTtcblx0XHRcdFx0XHR0aGlzLmxvZ2luPVwi5byA5aeL55m75b2VXCI7XG5cdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0XHR0aGlzLmxvZ2luPVwi5byA5aeL55m75b2VXCI7XG5cdFx0XHRcdH1cblx0XHRcdH0pLmNhdGNoKGV4PT57XG5cdFx0XHRcdGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor69cIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0dGhpcy5sb2dpbj1cIuW8gOWni+eZu+W9lVwiO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9LFxuXHRvbkxvYWQoKSB7XG5cdFx0cGx1cy5ydW50aW1lLmdldFByb3BlcnR5KHBsdXMucnVudGltZS5hcHBpZCwoaW5mbyk9Pntcblx0XHRcdC8vIGNvbnNvbGUubG9nKGluZm8pO1xuXHRcdFx0dGhpcy4kZGF0YS52ZXJzaW9uPWluZm8udmVyc2lvbjtcblx0XHR9KTtcblx0fVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///34\n"); |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0; //\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n// import {\n// \tmapState,\n// \tmapMutations,\n// \tmapActions ,\n// } from 'vuex'\nvar _default = {\n data: function data() {\n //获取全局参数:url-服务器地址\n var server = uni.getStorageSync('server');\n var account = uni.getStorageSync('account');\n var password = uni.getStorageSync('password');\n var url = this.$store.state.url;\n var username = this.$store.state.username;\n var userpwd = this.$store.state.userpwd;\n var ischecked = false;\n if (!server)\n server = url;\n if (!account)\n account = username;\n if (account && password)\n ischecked = true;\n // console.log(url);\n return {\n login: \"开始登录\",\n userServer: server,\n userName: account,\n userPwd: password,\n ischecked: ischecked,\n version: \"1.0.0\" };\n\n },\n // computed: mapState({\n // \t// 从state中拿到数据 箭头函数可使代码更简练\n // \thasLogin: state => state.hasLogin,\n // \tloginprovider: state => state.loginProvider,\n // \tappinfo:state=>state.appInfo\n // }),\n methods: {\n // ...mapMutations({\n // \tmutatLogin:'login'\n // }),\n // ...mapActions({\n // \tactionLogin:'login'\n // }),\n inputDialogToggle: function inputDialogToggle() {\n this.$refs.inputDialog.open();\n },\n dialogInputConfirm: function dialogInputConfirm(val) {\n // console.log(val);\n // uni.showLoading({\n // \ttitle: '3秒后会关闭'\n // })\n // setTimeout(() => {\n // uni.hideLoading();\n this.userServer = val;\n uni.setStorageSync('server', val);\n // this.value = val\n // 关闭窗口后,恢复默认内容\n this.$refs.inputDialog.close();\n // }, 3000)\n },\n rememberPwd: function rememberPwd(e) {//记住密码\n __f__(\"log\", e.target, \" at pages/login/index.vue:231\");\n uni.setStorageSync('account', '');\n uni.setStorageSync('password', '');\n if (e.target.value[0] == '1') {\n uni.setStorageSync('account', this.userName);\n uni.setStorageSync('password', this.userPwd);\n }\n },\n // getCookie(key){\n // \tif(document.cookie.length>0){\n // \t\tvar start = document.cookie.indexOf(key +'=');\n // \t\tif(start !== -1){\n // \t\t\tstart = start+key.length+1;\n // \t\t\tvar end = document.cookie.indexOf(';',start);\n // \t\t\tif(end === -1) end=document.cookie.length;\n // \t\t\treturn document.cookie.substring(start,end);\n // \t\t}\n // \t}\n // \treturn '';\n // },\n // setCookie(cName,value,expiredays){\n // \tvar exdate = new Date();\n // \texdate.setDate(exdate.getDate(),expiredays)\n // \tdocument.cookie = cName+'='+ documentURLComponent(value)+\n // \t((expiredays==null)?'':';expires='+exdate.toGMTString());\n\n // },\n logind: function logind() {var _this = this;\n if (!this.userServer) {\n uni.showModal({ title: \"提示\", content: \"未输入网站地址,请重新配置输入!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n if (!this.userName) {\n uni.showModal({ title: \"提示\", content: \"未输入用户名,请重新输入!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n if (!this.userPwd) {\n uni.showModal({ title: \"提示\", content: \"未输入密码,请重新输入!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n //检查 \"登录状态/锁屏状态\" 结束\n var loginInfo = {\n server: this.userServer,\n uname: this.userName,\n pwd: this.userPwd,\n cname: plus.device.model,\n type: \"0\" };\n\n __f__(\"log\", loginInfo, \" at pages/login/index.vue:279\");\n\n this.$data.login = \"loading......\";\n //登录\n this.$store.dispatch('login', loginInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/login/index.vue:284\");\n if (success.code == '00000') {\n //设置全局参数:user-用户信息\n uni.setStorageSync('server', loginInfo.server);\n // uni.setStorageSync('account',loginInfo.uname);\n // uni.setStorageSync('password',loginInfo.pwd);\n // this.mutatLogin({loginid:success});\n _this.$store.commit('login', {\n loginid: success });\n\n uni.navigateTo({\n url: '../index/index?args=9999999999' });\n\n // uni.redirectTo({\n // \turl:'../index/index?args=9999999999'\n // });\n _this.login = \"开始登录\";\n } else {\n uni.showModal({ title: \"错误\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n _this.login = \"开始登录\";\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/login/index.vue:306\");\n uni.showModal({ title: \"错误\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n _this.login = \"开始登录\";\n });\n } },\n\n onLoad: function onLoad() {var _this2 = this;\n plus.runtime.getProperty(plus.runtime.appid, function (info) {\n // console.log(info);\n _this2.$data.version = info.version;\n });\n } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 13)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbG9naW4vaW5kZXgudnVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO2VBQ0E7QUFDQSxNQURBLGtCQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFEQTtBQUVBLHdCQUZBO0FBR0EsdUJBSEE7QUFJQSx1QkFKQTtBQUtBLDBCQUxBO0FBTUEsc0JBTkE7O0FBUUEsR0F6QkE7QUEwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFQQSwrQkFPQTtBQUNBO0FBQ0EsS0FUQTtBQVVBLHNCQVZBLDhCQVVBLEdBVkEsRUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBdkJBO0FBd0JBLGVBeEJBLHVCQXdCQSxDQXhCQSxFQXdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FoQ0E7QUFpQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFVBcERBLG9CQW9EQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFEQTtBQUVBLDRCQUZBO0FBR0EseUJBSEE7QUFJQSxnQ0FKQTtBQUtBLGlCQUxBOztBQU9BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFEQTs7QUFHQTtBQUNBLGlEQURBOztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FoQkEsTUFnQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQXRCQSxFQXNCQSxLQXRCQSxDQXNCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BMUJBO0FBMkJBLEtBeEdBLEVBaENBOztBQTBJQSxRQTFJQSxvQkEwSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUhBO0FBSUEsR0EvSUEsRSIsImZpbGUiOiIzNC5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG48c3R5bGU+XHJcblx0aW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xyXG5cdFx0Zm9udC1zaXplOiAxMnJweDtcclxuXHR9XHJcblx0I2hlYWRyIHtcclxuXHRcdGJhY2tncm91bmQ6ICM0MzQzNDM7XHJcblx0XHQvKiB3aWR0aDogMzc1cHg7ICovXHJcblx0XHRoZWlnaHQ6IDI1MHJweDtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICM0MzhFQjk7XHJcblx0XHQvKiBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vaW1hZ2VzL2xvZ2luL3Jvb3QucG5nKSAhaW1wb3J0YW50O1xyXG5cdFx0YmFja2dyb3VuZC1zaXplOiBjb3ZlciAhaW1wb3J0YW50OyBcclxuXHRcdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQgIWltcG9ydGFudDsgKi9cclxuXHR9XHJcblx0LlNldFNlcnZlcnsgICAgXHJcblx0XHRmbG9hdDogbGVmdDtcclxuXHRcdG1hcmdpbi1sZWZ0OiAyMHJweDtcclxuXHR9XHJcblx0LmNoZWNrX3JlbWVtYmVyUHdke1xyXG5cdFx0bWFyZ2luLXRvcDogMjBycHg7XHJcblx0XHRtYXJnaW4tbGVmdDogMjBycHg7XHJcblx0fVxyXG5cdC5sb2dvIHtcclxuXHRcdGhlaWdodDogMTgwcnB4O1xyXG5cdFx0d2lkdGg6IDE4MHJweDsgXHJcblx0XHRtYXJnaW4tdG9wOiAxNzBycHg7XHJcblx0fVxyXG5cdC5sb2dvX2lucHV0IHtcclxuXHRcdGhlaWdodDogNDBycHg7XHJcblx0XHR3aWR0aDogNDBycHg7XHJcblx0XHRtYXJnaW4tbGVmdDogNDBycHg7XHJcblx0fVxyXG5cdC5sb2dvX2ljb24ge1xyXG5cdFx0aGVpZ2h0OiA1MHJweDtcclxuXHRcdHdpZHRoOiA1MHJweDtcclxuXHRcdG1hcmdpbi1sZWZ0OiAxNXJweDtcclxuXHRcdG1hcmdpbi10b3A6IDIwcnB4O1xyXG5cdH1cclxuXHQubXVpLWNvbnRlbnR7XHJcblx0XHRoZWlnaHQ6IDEwMCU7XHJcblx0XHRwYWRkaW5nLXRvcDogMTQwcnB4O1xyXG5cdFx0YmFja2dyb3VuZDogI0ZGRkZGRjtcclxuXHRcdHotaW5kZXg6IDE7XHJcblx0fVxyXG5cdC5tdWktaW5wdXQtZ3JvdXAgLmxhX2ljb24ge1xyXG5cdCAgICB3aWR0aDogMTAwcnB4O1xyXG5cdCAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0ICAgIGZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhIE5ldWUnLEhlbHZldGljYSxzYW5zLXNlcmlmO1xyXG5cdCAgICBsaW5lLWhlaWdodDogMS41O1xyXG5cdCAgICBmbG9hdDogbGVmdDtcclxuXHQgICAgcGFkZGluZzogN3B4IDEzcHg7XHJcblx0fVxyXG5cdC5tdWktaW5wdXQtZ3JvdXAgLm11aS1pbnB1dC1yb3cge1xyXG5cdCAgICBoZWlnaHQ6IDg1cnB4O1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0Y2xlYXI6IGxlZnQ7XHJcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cdH1cclxuXHQubXVpLWlucHV0LXJvdzpmaXJzdC1jaGlsZCB7XHJcblx0XHRib3JkZXItdG9wOiAxcHggc29saWQgI2M4YzdjYztcclxuXHR9XHJcblx0Lm11aS1pbnB1dC1yb3c6bGFzdC1jaGlsZCB7XHJcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2M4YzdjYztcclxuXHR9XHJcblx0Lm11aS1pbnB1dC1ncm91cCAubXVpLWlucHV0LXJvdzpsYXN0LWNoaWxkOmFmdGVyIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6I2ZmZjtcclxuXHR9XHJcblx0Lm11aS1pbnB1dC1ncm91cCAubXVpLWlucHV0LXJvdzphZnRlciB7XHJcblx0ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHQgICAgcmlnaHQ6IDA7XHJcblx0ICAgIGJvdHRvbTogMDtcclxuXHQgICAgbGVmdDogMTVweDtcclxuXHQgICAgaGVpZ2h0OiAxcHg7XHJcblx0ICAgIGNvbnRlbnQ6ICcnO1xyXG5cdCAgICB0cmFuc2Zvcm06IHNjYWxlWSguNSk7XHJcblx0ICAgIGJhY2tncm91bmQtY29sb3I6ICNjOGM3Y2M7XHJcblx0fVxyXG5cdC5tdWktaW5wdXQtcm93IGlucHV0IHtcclxuXHRcdGZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhIE5ldWUnLEhlbHZldGljYSxzYW5zLXNlcmlmO1xyXG5cdFx0Zm9udC1zaXplOiAxNXB4O1xyXG5cdFx0d2lkdGg6IDQ4MHJweDtcclxuXHRcdC8qIGZsb2F0OiByaWdodDsgKi9cclxuXHRcdG1hcmdpbi1ib3R0b206IDA7XHJcblx0XHRwYWRkaW5nLWxlZnQ6IDIwcnB4O1xyXG5cdFx0LyogcGFkZGluZy1yaWdodDogMTBycHg7ICovXHJcblx0XHQvKiBsaW5lLWhlaWdodDogMzBycHg7ICovXHJcblx0XHRoZWlnaHQ6IDg1cnB4O1xyXG5cdFx0LyogcGFkZGluZzogN3B4IDQwcHggN3B4IDBweDsgKi9cclxuXHRcdC13ZWJraXQtdXNlci1zZWxlY3Q6IHRleHQ7XHJcblx0XHQvKiBib3JkZXI6IDA7ICovXHJcblx0XHQvKiBib3JkZXItcmFkaXVzOiAwOyAqL1xyXG5cdFx0Ym94LXNoYWRvdzogbm9uZTtcclxuXHRcdG91dGxpbmU6IDA7XHJcblx0XHRiYWNrZ3JvdW5kOiAwIDA7XHJcblx0XHQtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcblx0fVxyXG5cdFxyXG5cdC5tdWktaW5wdXQtZ3JvdXAgbGFiZWwubXVpLW5hdmlnYXRlLXJpZ2h0IHtcclxuXHRcdGZvbnQtc2l6ZTogMjVweDtcclxuXHRcdGZsb2F0OiByaWdodDtcclxuXHRcdHBhZGRpbmc6IDA7XHJcblx0XHR3aWR0aDogODBycHg7XHJcblx0XHRtYXJnaW4tcmlnaHQ6IDVycHg7XHJcblx0XHRtYXJnaW4tdG9wOiAtODhycHg7XHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0fVxyXG5cdFxyXG5cdGJ1dHRvbi5idG5fbG9naW4ge1xyXG5cdFx0bWFyZ2luLXRvcDogNTBycHg7XHJcblx0XHRwYWRkaW5nOiAyMHJweDtcclxuXHRcdGxpbmUtaGVpZ2h0OiAxLjU7XHJcblx0XHRiYWNrZ3JvdW5kOiAjMjdBNkUxO1xyXG5cdFx0Ym9yZGVyOiBub25lO1xyXG5cdFx0Y29sb3I6ICNmZmY7XHJcblx0fVxyXG48L3N0eWxlPlxyXG4gXHJcblxyXG48dGVtcGxhdGU+XHJcblx0PHZpZXcgY2xhc3M9XCJcIiBzdHlsZT1cIndpZHRoOiAxMDB2dztoZWlnaHQ6IDY0dmg7XCI+XHJcblx0XHQ8ZGl2IGlkPVwiaGVhZHJcIiBjbGFzcz1cIm11aS1iYXIgbXVpLWJhci1uYXZcIj5cclxuXHRcdFx0PGltYWdlIGNsYXNzPVwibG9nb1wiIHNyYz1cIi4uLy4uL2ltYWdlcy9sb2dpbi9tb2JveF9sb2dfMjAwLnBuZ1wiPjwvaW1hZ2U+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDxkaXYgY2xhc3M9XCJtdWktY29udGVudFwiPlxyXG5cdFx0XHQ8Zm9ybSBpZD0nbG9naW4tZm9ybScgY2xhc3M9XCJtdWktaW5wdXQtZ3JvdXBcIj5cclxuXHRcdFx0XHQ8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgY2xhc3M9XCJTZXRTZXJ2ZXJcIiBAY2xpY2s9XCJpbnB1dERpYWxvZ1RvZ2dsZVwiPumFjee9rjwvYT5cclxuXHRcdFx0XHQ8IS0tIDxkaXYgY2xhc3M9XCJtdWktaW5wdXQtcm93XCI+XHJcblx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJsYV9pY29uXCI+PGltYWdlIGNsYXNzPVwibG9nb19pbnB1dFwiIHNyYz1cIi4uLy4uL2ltYWdlcy9sb2dpbi9zdnJfMzAucG5nXCI+PC9pbWFnZT48L2xhYmVsPlxyXG5cdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJtdWktaW5wdXRcIiB2LW1vZGVsPVwidXNlclNlcnZlclwiIHBsYWNlaG9sZGVyPVwi5pyN5Yqh5Zmo5Zyw5Z2AXCI+XHJcblx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJtdWktbmF2aWdhdGUtcmlnaHRcIiBpZD1cInNlcnNlbFwiPjxpbWFnZSBjbGFzcz1cImxvZ29faWNvblwiIHNyYz1cIi4uLy4uL2ltYWdlcy9sb2dpbi9zZWxfbGVmdC5wbmdcIiA+PC9pbWFnZT48L2xhYmVsPlxyXG5cdFx0XHRcdDwvZGl2PiAtLT5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwibXVpLWlucHV0LXJvd1wiPlxyXG5cdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwibGFfaWNvblwiID48aW1hZ2UgY2xhc3M9XCJsb2dvX2lucHV0XCIgc3JjPVwiLi4vLi4vaW1hZ2VzL2xvZ2luL3BlcnNvbl8zMC5wbmdcIj48L2ltYWdlPjwvbGFiZWw+XHJcblx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIm11aS1pbnB1dFwiIHYtbW9kZWw9XCJ1c2VyTmFtZVwiIHBsYWNlaG9sZGVyPVwi6K+36L6T5YWl6LSm5Y+3XCI+XHJcblx0XHRcdFx0XHQ8IS0tIDxsYWJlbCBjbGFzcz1cIm11aS1uYXZpZ2F0ZS1yaWdodFwiIGlkPVwibmFtc2VsXCI+PGltYWdlIGNsYXNzPVwibG9nb19pY29uXCIgc3JjPVwiLi4vLi4vaW1hZ2VzL2xvZ2luL3VzZXItcGhvdG8ucG5nPC9pbWFnZT48L2xhYmVsPiAtLT5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwibXVpLWlucHV0LXJvd1wiPlxyXG5cdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwibGFfaWNvblwiID48aW1hZ2UgY2xhc3M9XCJsb2dvX2lucHV0XCIgc3JjPVwiLi4vLi4vaW1hZ2VzL2xvZ2luL2xvY2tfMzAucG5nXCI+PC9pbWFnZT48L2xhYmVsPlxyXG5cdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIGNsYXNzPVwibXVpLWlucHV0XCIgdi1tb2RlbD1cInVzZXJQd2RcIiBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpeWvhueggVwiPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDxjaGVja2JveC1ncm91cCBjbGFzcz1cImNoZWNrX3JlbWVtYmVyUHdkXCIgQGNoYW5nZT1cInJlbWVtYmVyUHdkXCI+XHJcblx0XHRcdFx0XHQ8bGFiZWw+XHJcblx0XHRcdFx0XHRcdDxjaGVja2JveCB2YWx1ZT1cIjFcIiA6Y2hlY2tlZD1cImlzY2hlY2tlZFwiLz5cclxuXHRcdFx0XHRcdFx0PHRleHQ+6K6w5L2P5a+G56CBPC90ZXh0PlxyXG5cdFx0XHRcdFx0PC9sYWJlbD5cclxuXHRcdFx0XHQ8L2NoZWNrYm94LWdyb3VwPlxyXG5cdFx0XHQ8L2Zvcm0+XHJcblx0XHRcdDxidXR0b24gaWQ9J2xvZ2luJyB0eXBlPVwiZGVmYXVsdFwiIEB0YXA9XCJsb2dpbmRcIiBjbGFzcz1cImJ0bl9sb2dpblwiPnt7bG9naW59fTwvYnV0dG9uPlxyXG5cdFx0XHQ8cCBzdHlsZT1cImZsb2F0OnJpZ2h0OyBtYXJnaW46IDEwcHggMTBweDtjb2xvcjojYzhjN2NjXCI+XHJcblx0XHRcdFx0PHNwYW4+54mI5pys5Y+377yaPC9zcGFuPlxyXG5cdFx0XHRcdDxzcGFuPnt7dmVyc2lvbn19PC9zcGFuPlxyXG5cdFx0XHQ8L3A+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJcIiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtiYWNrZ3JvdW5kOiB3aGl0ZTtib3JkZXItdG9wOiAwcHggc29saWQgI0MwQzBDMDtjb2xvcjogIzdjZDBmODtwb3NpdGlvbjogYWJzb2x1dGU7Ym90dG9tOiAwO3dpZHRoOiAxMDAlO2hlaWdodDogMjRweDtwYWRkaW5nLXRvcDozcHg7Zm9udC1zaXplOiAxMXB4O1wiPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PHZpZXc+XHJcblx0XHRcdDwhLS0g6L6T5YWl5qGG56S65L6LIC0tPlxyXG5cdFx0XHQ8dW5pLXBvcHVwIHJlZj1cImlucHV0RGlhbG9nXCIgdHlwZT1cImRpYWxvZ1wiPlxyXG5cdFx0XHRcdDx1bmktcG9wdXAtZGlhbG9nIHJlZj1cImlucHV0Q2xvc2VcIiAgbW9kZT1cImlucHV0XCIgdGl0bGU9XCLorr7nva5cIiA6dmFsdWU9XCJ1c2VyU2VydmVyXCJcclxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwi6K+36L6T5YWl5YaF5a65XCIgQGNvbmZpcm09XCJkaWFsb2dJbnB1dENvbmZpcm1cIj48L3VuaS1wb3B1cC1kaWFsb2c+XHJcblx0XHRcdDwvdW5pLXBvcHVwPlxyXG5cdFx0PC92aWV3PlxyXG5cdDwvdmlldz5cclxuXHQgXHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PiBcclxuXHQvLyBpbXBvcnQge1xyXG5cdC8vIFx0bWFwU3RhdGUsXHJcblx0Ly8gXHRtYXBNdXRhdGlvbnMsXHJcblx0Ly8gXHRtYXBBY3Rpb25zICxcclxuXHQvLyB9IGZyb20gJ3Z1ZXgnXHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0ZGF0YSgpe1xyXG5cdFx0XHQvL+iOt+WPluWFqOWxgOWPguaVsO+8mnVybC3mnI3liqHlmajlnLDlnYBcclxuXHRcdFx0dmFyIHNlcnZlciA9IHVuaS5nZXRTdG9yYWdlU3luYygnc2VydmVyJyk7XHJcblx0XHRcdHZhciBhY2NvdW50ID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdhY2NvdW50Jyk7XHJcblx0XHRcdHZhciBwYXNzd29yZCA9IHVuaS5nZXRTdG9yYWdlU3luYygncGFzc3dvcmQnKTtcclxuXHRcdFx0dmFyIHVybCA9IHRoaXMuJHN0b3JlLnN0YXRlLnVybDtcclxuXHRcdFx0dmFyIHVzZXJuYW1lID0gdGhpcy4kc3RvcmUuc3RhdGUudXNlcm5hbWU7XHJcblx0XHRcdHZhciB1c2VycHdkID0gdGhpcy4kc3RvcmUuc3RhdGUudXNlcnB3ZDtcclxuXHRcdFx0dmFyIGlzY2hlY2tlZD1mYWxzZTtcclxuXHRcdFx0aWYoIXNlcnZlcilcclxuXHRcdFx0XHRzZXJ2ZXIgPSB1cmw7XHJcblx0XHRcdGlmKCFhY2NvdW50KVxyXG5cdFx0XHRcdGFjY291bnQgPSB1c2VybmFtZTtcclxuXHRcdFx0aWYoYWNjb3VudCAmJiBwYXNzd29yZClcclxuXHRcdFx0XHRpc2NoZWNrZWQ9dHJ1ZTtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2codXJsKTtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRsb2dpbjpcIuW8gOWni+eZu+W9lVwiLFxyXG5cdFx0XHRcdHVzZXJTZXJ2ZXI6c2VydmVyLFxyXG5cdFx0XHRcdHVzZXJOYW1lOmFjY291bnQsXHJcblx0XHRcdFx0dXNlclB3ZDpwYXNzd29yZCxcclxuXHRcdFx0XHRpc2NoZWNrZWQ6aXNjaGVja2VkLFxyXG5cdFx0XHRcdHZlcnNpb246XCIxLjAuMFwiLFxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0Ly8gY29tcHV0ZWQ6IG1hcFN0YXRlKHtcclxuXHRcdC8vIFx0Ly8g5LuOc3RhdGXkuK3mi7/liLDmlbDmja4g566t5aS05Ye95pWw5Y+v5L2/5Luj56CB5pu0566A57uDXHJcblx0XHQvLyBcdGhhc0xvZ2luOiBzdGF0ZSA9PiBzdGF0ZS5oYXNMb2dpbixcclxuXHRcdC8vIFx0bG9naW5wcm92aWRlcjogc3RhdGUgPT4gc3RhdGUubG9naW5Qcm92aWRlcixcclxuXHRcdC8vIFx0YXBwaW5mbzpzdGF0ZT0+c3RhdGUuYXBwSW5mb1xyXG5cdFx0Ly8gfSksXHJcblx0XHRtZXRob2RzOntcclxuXHRcdFx0Ly8gLi4ubWFwTXV0YXRpb25zKHtcclxuXHRcdFx0Ly8gXHRtdXRhdExvZ2luOidsb2dpbidcclxuXHRcdFx0Ly8gfSksXHJcblx0XHRcdC8vIC4uLm1hcEFjdGlvbnMoe1xyXG5cdFx0XHQvLyBcdGFjdGlvbkxvZ2luOidsb2dpbidcclxuXHRcdFx0Ly8gfSksXHJcblx0XHRcdGlucHV0RGlhbG9nVG9nZ2xlKCkge1xyXG5cdFx0XHRcdHRoaXMuJHJlZnMuaW5wdXREaWFsb2cub3BlbigpXHJcblx0XHRcdH0sXHJcblx0XHRcdGRpYWxvZ0lucHV0Q29uZmlybSh2YWwpIHtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyh2YWwpO1xyXG5cdFx0XHRcdC8vIHVuaS5zaG93TG9hZGluZyh7XHJcblx0XHRcdFx0Ly8gXHR0aXRsZTogJzPnp5LlkI7kvJrlhbPpl60nXHJcblx0XHRcdFx0Ly8gfSlcclxuXHRcdFx0XHQvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHQvLyB1bmkuaGlkZUxvYWRpbmcoKTtcclxuXHRcdFx0XHR0aGlzLnVzZXJTZXJ2ZXIgPSB2YWw7XHJcblx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdzZXJ2ZXInLHZhbCk7XHJcblx0XHRcdFx0Ly8gdGhpcy52YWx1ZSA9IHZhbFxyXG5cdFx0XHRcdC8vIOWFs+mXreeql+WPo+WQju+8jOaBouWkjem7mOiupOWGheWuuVxyXG5cdFx0XHRcdHRoaXMuJHJlZnMuaW5wdXREaWFsb2cuY2xvc2UoKVxyXG5cdFx0XHRcdC8vIH0sIDMwMDApXHJcblx0XHRcdH0sXHJcblx0XHRcdHJlbWVtYmVyUHdkKGUpeyAgLy/orrDkvY/lr4bnoIFcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhlLnRhcmdldCk7XHJcblx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdhY2NvdW50JywnJyk7XHJcblx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdwYXNzd29yZCcsJycpO1xyXG5cdFx0XHRcdGlmKGUudGFyZ2V0LnZhbHVlWzBdPT0nMScpe1xyXG5cdFx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdhY2NvdW50Jyx0aGlzLnVzZXJOYW1lKTtcclxuXHRcdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygncGFzc3dvcmQnLHRoaXMudXNlclB3ZCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyBnZXRDb29raWUoa2V5KXtcclxuXHRcdFx0Ly8gXHRpZihkb2N1bWVudC5jb29raWUubGVuZ3RoPjApe1xyXG5cdFx0XHQvLyBcdFx0dmFyIHN0YXJ0ID0gZG9jdW1lbnQuY29va2llLmluZGV4T2Yoa2V5ICsnPScpO1xyXG5cdFx0XHQvLyBcdFx0aWYoc3RhcnQgIT09IC0xKXtcclxuXHRcdFx0Ly8gXHRcdFx0c3RhcnQgPSBzdGFydCtrZXkubGVuZ3RoKzE7XHJcblx0XHRcdC8vIFx0XHRcdHZhciBlbmQgPSBkb2N1bWVudC5jb29raWUuaW5kZXhPZignOycsc3RhcnQpO1xyXG5cdFx0XHQvLyBcdFx0XHRpZihlbmQgPT09IC0xKSBlbmQ9ZG9jdW1lbnQuY29va2llLmxlbmd0aDtcclxuXHRcdFx0Ly8gXHRcdFx0cmV0dXJuIGRvY3VtZW50LmNvb2tpZS5zdWJzdHJpbmcoc3RhcnQsZW5kKTtcclxuXHRcdFx0Ly8gXHRcdH1cclxuXHRcdFx0Ly8gXHR9XHJcblx0XHRcdC8vIFx0cmV0dXJuICcnO1xyXG5cdFx0XHQvLyB9LFxyXG5cdFx0XHQvLyBzZXRDb29raWUoY05hbWUsdmFsdWUsZXhwaXJlZGF5cyl7XHJcblx0XHRcdC8vIFx0dmFyIGV4ZGF0ZSA9IG5ldyBEYXRlKCk7XHJcblx0XHRcdC8vIFx0ZXhkYXRlLnNldERhdGUoZXhkYXRlLmdldERhdGUoKSxleHBpcmVkYXlzKVxyXG5cdFx0XHQvLyBcdGRvY3VtZW50LmNvb2tpZSA9IGNOYW1lKyc9JysgZG9jdW1lbnRVUkxDb21wb25lbnQodmFsdWUpK1xyXG5cdFx0XHQvLyBcdCgoZXhwaXJlZGF5cz09bnVsbCk/Jyc6JztleHBpcmVzPScrZXhkYXRlLnRvR01UU3RyaW5nKCkpO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHQvLyB9LFxyXG5cdFx0XHRsb2dpbmQoKXtcclxuXHRcdFx0XHRpZighdGhpcy51c2VyU2VydmVyKXtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuacqui+k+WFpee9keermeWcsOWdgO+8jOivt+mHjeaWsOmFjee9rui+k+WFpe+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZighdGhpcy51c2VyTmFtZSl7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLmnKrovpPlhaXnlKjmiLflkI3vvIzor7fph43mlrDovpPlhaXvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYoIXRoaXMudXNlclB3ZCl7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLmnKrovpPlhaXlr4bnoIHvvIzor7fph43mlrDovpPlhaXvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly/mo4Dmn6UgXCLnmbvlvZXnirbmgIEv6ZSB5bGP54q25oCBXCIg57uT5p2fXHJcblx0XHRcdFx0dmFyIGxvZ2luSW5mbyA9IHtcclxuXHRcdFx0XHRcdHNlcnZlcjogdGhpcy51c2VyU2VydmVyLFxyXG5cdFx0XHRcdFx0dW5hbWU6IHRoaXMudXNlck5hbWUsXHJcblx0XHRcdFx0XHRwd2Q6IHRoaXMudXNlclB3ZCxcclxuXHRcdFx0XHRcdGNuYW1lOiBwbHVzLmRldmljZS5tb2RlbCxcclxuXHRcdFx0XHRcdHR5cGU6XCIwXCJcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKGxvZ2luSW5mbyk7XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0dGhpcy4kZGF0YS5sb2dpbj1cImxvYWRpbmcuLi4uLi5cIjtcclxuXHRcdFx0XHQvL+eZu+W9lVxyXG5cdFx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdsb2dpbicsbG9naW5JbmZvKS50aGVuKHN1Y2Nlc3M9PntcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZSA9PSAnMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdC8v6K6+572u5YWo5bGA5Y+C5pWw77yadXNlci3nlKjmiLfkv6Hmga9cclxuXHRcdFx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdzZXJ2ZXInLGxvZ2luSW5mby5zZXJ2ZXIpO1xyXG5cdFx0XHRcdFx0XHQvLyB1bmkuc2V0U3RvcmFnZVN5bmMoJ2FjY291bnQnLGxvZ2luSW5mby51bmFtZSk7XHJcblx0XHRcdFx0XHRcdC8vIHVuaS5zZXRTdG9yYWdlU3luYygncGFzc3dvcmQnLGxvZ2luSW5mby5wd2QpO1xyXG5cdFx0XHRcdFx0XHQvLyB0aGlzLm11dGF0TG9naW4oe2xvZ2luaWQ6c3VjY2Vzc30pO1xyXG5cdFx0XHRcdFx0XHR0aGlzLiRzdG9yZS5jb21taXQoJ2xvZ2luJyx7XHJcblx0XHRcdFx0XHRcdFx0bG9naW5pZDpzdWNjZXNzIFxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdFx0XHRcdHVybDonLi4vaW5kZXgvaW5kZXg/YXJncz05OTk5OTk5OTk5J1xyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0XHQvLyB1bmkucmVkaXJlY3RUbyh7XHJcblx0XHRcdFx0XHRcdC8vIFx0dXJsOicuLi9pbmRleC9pbmRleD9hcmdzPTk5OTk5OTk5OTknXHJcblx0XHRcdFx0XHRcdC8vIH0pO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmxvZ2luPVwi5byA5aeL55m75b2VXCI7XHJcblx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor69cIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmxvZ2luPVwi5byA5aeL55m75b2VXCI7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHR0aGlzLmxvZ2luPVwi5byA5aeL55m75b2VXCI7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRvbkxvYWQoKSB7XHJcblx0XHRcdHBsdXMucnVudGltZS5nZXRQcm9wZXJ0eShwbHVzLnJ1bnRpbWUuYXBwaWQsKGluZm8pPT57XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coaW5mbyk7XHJcblx0XHRcdFx0dGhpcy4kZGF0YS52ZXJzaW9uPWluZm8udmVyc2lvbjtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///34\n"); |
| | | |
| | | /***/ }), |
| | | /* 35 */ |
| | |
| | | /***/ (function(module, exports, __webpack_require__) { |
| | | |
| | | "use strict"; |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0; //\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default =\n{\n onNavigationBarButtonTap: function onNavigationBarButtonTap(e) {\n // console.log(e.text);\n // console.log(e.fontSize);\n this.$store.state.areaFunc = '';\n this.$store.commit(\"classAttrList\", null);\n this.$store.commit(\"classGridStyleInfo\", null);\n this.$store.commit(\"dicValueInfo\", null);\n //刷新当前页面\n // location.reload();\n uni.redirectTo({\n url: '../index/index?args=9999999999' });\n\n },\n data: function data() {\n return {\n title: 'Hello',\n data: [] };\n\n },\n onLoad: function onLoad(options) {var _this = this;\n __f__(\"log\", options, \" at pages/index/index.vue:106\");\n\n // 获取所有AppType=\"MES\",ClientType=\"2\"(PDA)的引用领域功能点信息\n if (this.$store.state.areaFunc)\n this.data = this.$store.state.areaFunc.data;else\n\n this.$store.dispatch('areaFunc', {}).then(function (success) {\n __f__(\"log\", success, \" at pages/index/index.vue:113\");\n if (success.code == '00000') {\n _this.data = success.data;\n } else {\n uni.showModal({ title: \"错误\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n\n // var data = {\n // \t\tin1:\"ll1\",\n // \t\tin2:\"ll2\",\n // \t\tin3:\"ll3\",\n // \t\tin4:\"ll4\",\n // \t\tin5:\"ll5\",\n // \t\tin6:\"ll6\",\n // \t};\n // for(var i in data)\n // \tthis.$data.keys.push(i)\n // this.$data.data = data;\n // console.log(this.$data.keys);\n },\n methods: {\n appCreate: function appCreate(app) {//点击功能点跳转页面\n __f__(\"log\", app, \" at pages/index/index.vue:139\");\n if (!app.Param) {\n uni.showModal({ title: \"提示\", content: \"该功能点未配置参数,请重新配置参数!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n if (app.DefCode == '3018') {\n uni.navigateTo({\n url: '../modal/classAttr?param=' + app.Param + \"&titlename=\" + app.Name });\n\n } else if (app.DefCode == '3037') {\n uni.navigateTo({\n url: '../modal/ms_classAttr?param=' + app.Param + \"&titlename=\" + app.Name });\n\n }\n // uni.redirectTo({\n // \turl:'../index/index?args=9999999999'\n // });\n },\n ontap: function ontap(e) {var _this2 = this; //扫码功能\n // console.log(e.target)\n getApp().onScan(function (result) {\n // console.log(result.decodedata);\n _this2.$data.data[e.target.dataset['key']] = result.decodedata;\n });\n } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 13)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvaW5kZXgudnVlIl0sIm5hbWVzIjpbIm9uTmF2aWdhdGlvbkJhckJ1dHRvblRhcCIsImUiLCIkc3RvcmUiLCJzdGF0ZSIsImFyZWFGdW5jIiwiY29tbWl0IiwidW5pIiwicmVkaXJlY3RUbyIsInVybCIsImRhdGEiLCJ0aXRsZSIsIm9uTG9hZCIsIm9wdGlvbnMiLCJkaXNwYXRjaCIsInRoZW4iLCJzdWNjZXNzIiwiY29kZSIsInNob3dNb2RhbCIsImNvbnRlbnQiLCJtc2ciLCJzaG93Q2FuY2VsIiwiY29uZmlybVRleHQiLCJjYXRjaCIsImV4IiwiZXJyTXNnIiwibWV0aG9kcyIsImFwcENyZWF0ZSIsImFwcCIsIlBhcmFtIiwiRGVmQ29kZSIsIm5hdmlnYXRlVG8iLCJOYW1lIiwib250YXAiLCJnZXRBcHAiLCJvblNjYW4iLCJyZXN1bHQiLCIkZGF0YSIsInRhcmdldCIsImRhdGFzZXQiLCJkZWNvZGVkYXRhIl0sIm1hcHBpbmdzIjoicUlBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZTtBQUNkQSwwQkFEYyxvQ0FDV0MsQ0FEWCxFQUNjO0FBQzNCO0FBQ0E7QUFDQSxTQUFLQyxNQUFMLENBQVlDLEtBQVosQ0FBa0JDLFFBQWxCLEdBQTJCLEVBQTNCO0FBQ0EsU0FBS0YsTUFBTCxDQUFZRyxNQUFaLENBQW1CLGVBQW5CLEVBQW1DLElBQW5DO0FBQ0EsU0FBS0gsTUFBTCxDQUFZRyxNQUFaLENBQW1CLG9CQUFuQixFQUF3QyxJQUF4QztBQUNBLFNBQUtILE1BQUwsQ0FBWUcsTUFBWixDQUFtQixjQUFuQixFQUFrQyxJQUFsQztBQUNBO0FBQ0E7QUFDQUMsT0FBRyxDQUFDQyxVQUFKLENBQWU7QUFDZEMsU0FBRyxFQUFDLGdDQURVLEVBQWY7O0FBR0EsR0FiYTtBQWNkQyxNQWRjLGtCQWNQO0FBQ04sV0FBTztBQUNOQyxXQUFLLEVBQUUsT0FERDtBQUVORCxVQUFJLEVBQUMsRUFGQyxFQUFQOztBQUlBLEdBbkJhO0FBb0JkRSxRQXBCYyxrQkFvQlBDLE9BcEJPLEVBb0JFO0FBQ2YsaUJBQVlBLE9BQVo7O0FBRUE7QUFDQSxRQUFHLEtBQUtWLE1BQUwsQ0FBWUMsS0FBWixDQUFrQkMsUUFBckI7QUFDQyxTQUFLSyxJQUFMLEdBQVksS0FBS1AsTUFBTCxDQUFZQyxLQUFaLENBQWtCQyxRQUFsQixDQUEyQkssSUFBdkMsQ0FERDs7QUFHQyxTQUFLUCxNQUFMLENBQVlXLFFBQVosQ0FBcUIsVUFBckIsRUFBZ0MsRUFBaEMsRUFBb0NDLElBQXBDLENBQXlDLFVBQUFDLE9BQU8sRUFBRTtBQUNqRCxtQkFBWUEsT0FBWjtBQUNBLFVBQUlBLE9BQU8sQ0FBQ0MsSUFBUixJQUFjLE9BQWxCLEVBQTJCO0FBQzFCLGFBQUksQ0FBQ1AsSUFBTCxHQUFZTSxPQUFPLENBQUNOLElBQXBCO0FBQ0EsT0FGRCxNQUVLO0FBQ0pILFdBQUcsQ0FBQ1csU0FBSixDQUFjLEVBQUNQLEtBQUssRUFBQyxJQUFQLEVBQVlRLE9BQU8sRUFBQ0gsT0FBTyxDQUFDSSxHQUE1QixFQUFnQ0MsVUFBVSxFQUFDLEtBQTNDLEVBQWlEQyxXQUFXLEVBQUMsSUFBN0QsRUFBZDtBQUNBO0FBQ0QsS0FQRCxFQU9HQyxLQVBILENBT1MsVUFBQUMsRUFBRSxFQUFFO0FBQ1o7QUFDQWpCLFNBQUcsQ0FBQ1csU0FBSixDQUFjLEVBQUNQLEtBQUssRUFBQyxJQUFQLEVBQVlRLE9BQU8sRUFBQ0ssRUFBRSxDQUFDQyxNQUF2QixFQUE4QkosVUFBVSxFQUFDLEtBQXpDLEVBQStDQyxXQUFXLEVBQUMsSUFBM0QsRUFBZDtBQUNBLEtBVkQ7O0FBWUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FuRGE7QUFvRGRJLFNBQU8sRUFBRTtBQUNSQyxhQURRLHFCQUNFQyxHQURGLEVBQ00sQ0FBRTtBQUNmLG1CQUFZQSxHQUFaO0FBQ0EsVUFBRyxDQUFDQSxHQUFHLENBQUNDLEtBQVIsRUFBYztBQUNidEIsV0FBRyxDQUFDVyxTQUFKLENBQWMsRUFBQ1AsS0FBSyxFQUFDLElBQVAsRUFBWVEsT0FBTyxFQUFDLG9CQUFwQixFQUF5Q0UsVUFBVSxFQUFDLEtBQXBELEVBQTBEQyxXQUFXLEVBQUMsSUFBdEUsRUFBZDtBQUNBO0FBQ0E7QUFDRCxVQUFHTSxHQUFHLENBQUNFLE9BQUosSUFBZSxNQUFsQixFQUF5QjtBQUN4QnZCLFdBQUcsQ0FBQ3dCLFVBQUosQ0FBZTtBQUNkdEIsYUFBRyxFQUFDLDhCQUE0Qm1CLEdBQUcsQ0FBQ0MsS0FBaEMsR0FBc0MsYUFBdEMsR0FBb0RELEdBQUcsQ0FBQ0ksSUFEOUMsRUFBZjs7QUFHQSxPQUpELE1BSU8sSUFBR0osR0FBRyxDQUFDRSxPQUFKLElBQWUsTUFBbEIsRUFBeUI7QUFDL0J2QixXQUFHLENBQUN3QixVQUFKLENBQWU7QUFDZHRCLGFBQUcsRUFBQyxpQ0FBK0JtQixHQUFHLENBQUNDLEtBQW5DLEdBQXlDLGFBQXpDLEdBQXVERCxHQUFHLENBQUNJLElBRGpELEVBQWY7O0FBR0E7QUFDRDtBQUNBO0FBQ0E7QUFDQSxLQW5CTztBQW9CUkMsU0FwQlEsaUJBb0JGL0IsQ0FwQkUsRUFvQkEsb0JBQUU7QUFDVDtBQUNBZ0MsWUFBTSxHQUFHQyxNQUFULENBQWdCLFVBQUNDLE1BQUQsRUFBVTtBQUN6QjtBQUNBLGNBQUksQ0FBQ0MsS0FBTCxDQUFXM0IsSUFBWCxDQUFnQlIsQ0FBQyxDQUFDb0MsTUFBRixDQUFTQyxPQUFULENBQWlCLEtBQWpCLENBQWhCLElBQXlDSCxNQUFNLENBQUNJLFVBQWhEO0FBQ0EsT0FIRDtBQUlBLEtBMUJPLEVBcERLLEUiLCJmaWxlIjoiMzkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuZXhwb3J0IGRlZmF1bHQge1xuXHRvbk5hdmlnYXRpb25CYXJCdXR0b25UYXAoZSkge1xuXHRcdC8vIGNvbnNvbGUubG9nKGUudGV4dCk7XG5cdFx0Ly8gY29uc29sZS5sb2coZS5mb250U2l6ZSk7XG5cdFx0dGhpcy4kc3RvcmUuc3RhdGUuYXJlYUZ1bmM9Jyc7XG5cdFx0dGhpcy4kc3RvcmUuY29tbWl0KFwiY2xhc3NBdHRyTGlzdFwiLG51bGwpO1xuXHRcdHRoaXMuJHN0b3JlLmNvbW1pdChcImNsYXNzR3JpZFN0eWxlSW5mb1wiLG51bGwpO1xuXHRcdHRoaXMuJHN0b3JlLmNvbW1pdChcImRpY1ZhbHVlSW5mb1wiLG51bGwpO1xuXHRcdC8v5Yi35paw5b2T5YmN6aG16Z2iXG5cdFx0Ly8gbG9jYXRpb24ucmVsb2FkKCk7XG5cdFx0dW5pLnJlZGlyZWN0VG8oe1xuXHRcdFx0dXJsOicuLi9pbmRleC9pbmRleD9hcmdzPTk5OTk5OTk5OTknXG5cdFx0fSlcblx0fSxcblx0ZGF0YSgpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0dGl0bGU6ICdIZWxsbycsXG5cdFx0XHRkYXRhOltdXG5cdFx0fVxuXHR9LFxuXHRvbkxvYWQob3B0aW9ucykge1xuXHRcdGNvbnNvbGUubG9nKG9wdGlvbnMpO1xuXHRcdFxuXHRcdC8vIOiOt+WPluaJgOaciUFwcFR5cGU9XCJNRVNcIixDbGllbnRUeXBlPVwiMlwiKFBEQSnnmoTlvJXnlKjpoobln5/lip/og73ngrnkv6Hmga9cblx0XHRpZih0aGlzLiRzdG9yZS5zdGF0ZS5hcmVhRnVuYylcblx0XHRcdHRoaXMuZGF0YSA9IHRoaXMuJHN0b3JlLnN0YXRlLmFyZWFGdW5jLmRhdGE7XG5cdFx0ZWxzZVxuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2FyZWFGdW5jJyx7fSkudGhlbihzdWNjZXNzPT57XG5cdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlPT0nMDAwMDAnKSB7XG5cdFx0XHRcdFx0dGhpcy5kYXRhID0gc3VjY2Vzcy5kYXRhO1xuXHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivr1wiLGNvbnRlbnQ6c3VjY2Vzcy5tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLmNhdGNoKGV4PT57XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor69cIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdH0pO1xuXHRcdFxuXHRcdC8vIHZhciBkYXRhID0ge1xuXHRcdC8vIFx0XHRpbjE6XCJsbDFcIixcblx0XHQvLyBcdFx0aW4yOlwibGwyXCIsXG5cdFx0Ly8gXHRcdGluMzpcImxsM1wiLFxuXHRcdC8vIFx0XHRpbjQ6XCJsbDRcIixcblx0XHQvLyBcdFx0aW41OlwibGw1XCIsXG5cdFx0Ly8gXHRcdGluNjpcImxsNlwiLFxuXHRcdC8vIFx0fTtcblx0XHQvLyBmb3IodmFyIGkgaW4gZGF0YSlcblx0XHQvLyBcdHRoaXMuJGRhdGEua2V5cy5wdXNoKGkpXG5cdFx0Ly8gdGhpcy4kZGF0YS5kYXRhID0gZGF0YTtcblx0XHQvLyBjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmtleXMpO1xuXHR9LFxuXHRtZXRob2RzOiB7XG5cdFx0YXBwQ3JlYXRlKGFwcCl7IC8v54K55Ye75Yqf6IO954K56Lez6L2s6aG16Z2iXG5cdFx0XHRjb25zb2xlLmxvZyhhcHApO1xuXHRcdFx0aWYoIWFwcC5QYXJhbSl7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuivpeWKn+iDveeCueacqumFjee9ruWPguaVsO+8jOivt+mHjeaWsOmFjee9ruWPguaVsO+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZihhcHAuRGVmQ29kZSA9PSAnMzAxOCcpe1xuXHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XG5cdFx0XHRcdFx0dXJsOicuLi9tb2RhbC9jbGFzc0F0dHI/cGFyYW09JythcHAuUGFyYW0rXCImdGl0bGVuYW1lPVwiK2FwcC5OYW1lXG5cdFx0XHRcdH0pXG5cdFx0XHR9IGVsc2UgaWYoYXBwLkRlZkNvZGUgPT0gJzMwMzcnKXtcblx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdHVybDonLi4vbW9kYWwvbXNfY2xhc3NBdHRyP3BhcmFtPScrYXBwLlBhcmFtK1wiJnRpdGxlbmFtZT1cIithcHAuTmFtZVxuXHRcdFx0XHR9KVxuXHRcdFx0fSBcblx0XHRcdC8vIHVuaS5yZWRpcmVjdFRvKHtcblx0XHRcdC8vIFx0dXJsOicuLi9pbmRleC9pbmRleD9hcmdzPTk5OTk5OTk5OTknXG5cdFx0XHQvLyB9KTtcblx0XHR9LFxuXHRcdG9udGFwKGUpeyAvL+aJq+eggeWKn+iDvVxuXHRcdFx0Ly8gY29uc29sZS5sb2coZS50YXJnZXQpXG5cdFx0XHRnZXRBcHAoKS5vblNjYW4oKHJlc3VsdCk9Pntcblx0XHRcdFx0Ly8gY29uc29sZS5sb2cocmVzdWx0LmRlY29kZWRhdGEpO1xuXHRcdFx0XHR0aGlzLiRkYXRhLmRhdGFbZS50YXJnZXQuZGF0YXNldFsna2V5J11dPXJlc3VsdC5kZWNvZGVkYXRhO1xuXHRcdFx0fSlcblx0XHR9XG5cdFxuXHR9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///39\n"); |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0; //\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default =\n{\n onNavigationBarButtonTap: function onNavigationBarButtonTap(e) {\n // console.log(e.text);\n // console.log(e.fontSize);\n this.$store.state.areaFunc = '';\n this.$store.commit(\"classAttrList\", null);\n this.$store.commit(\"classGridStyleInfo\", null);\n this.$store.commit(\"dicValueInfo\", null);\n //刷新当前页面\n // location.reload();\n uni.redirectTo({\n url: '../index/index?args=9999999999' });\n\n },\n data: function data() {\n return {\n title: 'Hello',\n data: [] };\n\n },\n onLoad: function onLoad(options) {var _this = this;\n __f__(\"log\", options, \" at pages/index/index.vue:106\");\n\n // 获取所有AppType=\"MES\",ClientType=\"2\"(PDA)的引用领域功能点信息\n if (this.$store.state.areaFunc)\n this.data = this.$store.state.areaFunc.data;else\n\n this.$store.dispatch('areaFunc', {}).then(function (success) {\n __f__(\"log\", success, \" at pages/index/index.vue:113\");\n if (success.code == '00000') {\n _this.data = success.data;\n } else {\n uni.showModal({ title: \"错误\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n\n // var data = {\n // \t\tin1:\"ll1\",\n // \t\tin2:\"ll2\",\n // \t\tin3:\"ll3\",\n // \t\tin4:\"ll4\",\n // \t\tin5:\"ll5\",\n // \t\tin6:\"ll6\",\n // \t};\n // for(var i in data)\n // \tthis.$data.keys.push(i)\n // this.$data.data = data;\n // console.log(this.$data.keys);\n },\n methods: {\n appCreate: function appCreate(app) {//点击功能点跳转页面\n __f__(\"log\", app, \" at pages/index/index.vue:139\");\n if (!app.Param) {\n uni.showModal({ title: \"提示\", content: \"该功能点未配置参数,请重新配置参数!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n if (app.DefCode == '3018') {\n uni.navigateTo({\n url: '../modal/classAttr?param=' + app.Param + \"&titlename=\" + app.Name });\n\n } else if (app.DefCode == '3037') {\n uni.navigateTo({\n url: '../modal/ms_classAttr?param=' + app.Param + \"&titlename=\" + app.Name });\n\n }\n // uni.redirectTo({\n // \turl:'../index/index?args=9999999999'\n // });\n },\n ontap: function ontap(e) {var _this2 = this; //扫码功能\n // console.log(e.target)\n getApp().onScan(function (result) {\n // console.log(result.decodedata);\n _this2.$data.data[e.target.dataset['key']] = result.decodedata;\n });\n } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 13)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvaW5kZXgudnVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9GQTtBQUNBLDBCQURBLG9DQUNBLENBREEsRUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQURBOztBQUdBLEdBYkE7QUFjQSxNQWRBLGtCQWNBO0FBQ0E7QUFDQSxvQkFEQTtBQUVBLGNBRkE7O0FBSUEsR0FuQkE7QUFvQkEsUUFwQkEsa0JBb0JBLE9BcEJBLEVBb0JBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdEQURBOztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FGQSxNQUVBO0FBQ0E7QUFDQTtBQUNBLEtBUEEsRUFPQSxLQVBBLENBT0E7QUFDQTtBQUNBO0FBQ0EsS0FWQTs7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQW5EQTtBQW9EQTtBQUNBLGFBREEscUJBQ0EsR0FEQSxFQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRkFEQTs7QUFHQSxPQUpBLE1BSUE7QUFDQTtBQUNBLG9GQURBOztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FuQkE7QUFvQkEsU0FwQkEsaUJBb0JBLENBcEJBLEVBb0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUhBO0FBSUEsS0ExQkEsRUFwREEsRSIsImZpbGUiOiIzOS5qcyIsInNvdXJjZXNDb250ZW50IjpbIjxzdHlsZT5cclxuXHQuY29udGVudCB7XHJcblx0XHQvKiBkaXNwbGF5OiBmbGV4O1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgKi9cclxuXHRcdHdpZHRoOiAxMDB2dztcclxuXHRcdGhlaWdodDogMTAwdmg7XHJcblx0XHRiYWNrZ3JvdW5kOiAjRUFFQUVBO1xyXG5cdFx0cGFkZGluZzogMXJweCAwcnB4O1xyXG5cdH1cclxuXHQudi1hcmVhe1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMTJycHg7XHJcblx0XHRtYXJnaW46IDMwcnB4O1xyXG5cdFx0cGFkZGluZzogMTBycHg7XHJcblx0XHRiYWNrZ3JvdW5kOiAjRkZGRkZGOyAgICBcclxuXHR9XHJcblx0LmFyZWFMaXN0e1xyXG5cdFx0cGFkZGluZzogMDtcclxuXHR9XHJcblx0LmFyZWFMaXN0IGxpe1xyXG5cdFx0LyogYm9yZGVyOiAxcHggc29saWQgIzAwNjJDQzsgKi9cclxuXHRcdGxpc3Qtc3R5bGU6IG5vbmU7XHJcblx0XHQvKiB3aWR0aDogMTIwcnB4OyAqL1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0cGFkZGluZzogMzBycHggMTZycHggMTZycHggMjBycHg7XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRmb250LXNpemU6IDE0cHg7XHJcblx0fVxyXG5cdC5sb2dvIHtcclxuXHRcdGhlaWdodDogMTIwcnB4O1xyXG5cdFx0d2lkdGg6IDEyMHJweDtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDIwcnB4O1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdFx0cGFkZGluZzogMThycHg7XHJcblx0XHRjb2xvcjogIzAwMDAwMDtcclxuXHRcdGJvcmRlcjogMHB4IHNvbGlkIHJnYigyMjEsIDIyMSwgMjIxKTtcclxuXHR9XHJcblx0LmxvZ28gaXtcclxuXHRcdGNvbG9yOiAjMDAwMDAwO1xyXG5cdFx0Zm9udC1zaXplOiA0MHB4O1xyXG5cdFx0bGluZS1oZWlnaHQ6IDUzcHg7XHJcblx0fVxyXG5cdFxyXG48L3N0eWxlPlxyXG5cclxuPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwiY29udGVudFwiPlxyXG5cdFx0PCEtLSA8dmlldyBjbGFzcz1cInYtYXJlYVwiPlxyXG5cdFx0XHQ8cD50dHR0dHR0dHR0PC9wPlxyXG5cdFx0XHQ8dWwgY2xhc3M9XCJhcmVhTGlzdFwiPlxyXG5cdFx0XHRcdDxsaT5cclxuXHRcdFx0XHRcdDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiBjbGFzcz1cImxvZ29cIiA+XHJcblx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiZnUtc3lzX2xvZ1wiPjwvaT5cclxuXHRcdFx0XHRcdDwvYT5cclxuXHRcdFx0XHRcdDxwID7mlrDlop7lhYPmlbDmja48L3A+XHJcblx0XHRcdFx0PC9saT5cclxuXHRcdFx0PC91bD5cclxuXHRcdDwvdmlldz4gLS0+XHJcblx0XHRcclxuXHRcdDx2aWV3IGNsYXNzPVwidi1hcmVhXCIgdi1mb3I9XCIoYXJlYSxpbmRleCkgaW4gZGF0YVwiPlxyXG5cdFx0XHQ8cCA6ZGF0YS1rZXk9XCJhcmVhLklEXCI+e3sgYXJlYS5OYW1lIH19PC9wPlxyXG5cdFx0XHQ8dWwgY2xhc3M9XCJhcmVhTGlzdFwiPlxyXG5cdFx0XHRcdDxsaSB2LWZvcj1cIihhcHAsa2V5KSBpbiBhcmVhLkFwcFwiPlxyXG5cdFx0XHRcdFx0PGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIEB0YXA9XCJhcHBDcmVhdGUoYXBwKVwiIGNsYXNzPVwibG9nb1wiIDpzdHlsZT1cInsnYmFja2dyb3VuZC1jb2xvcic6YXBwLkJrQ29sb3IsJ2NvbG9yJzphcHAuQmtDb2xvcn1cIj5cclxuXHRcdFx0XHRcdFx0PGkgOmNsYXNzPVwiYXBwLkltZ0ZvbnRTdHlsZVwiIDpzdHlsZT1cInsnY29sb3InOmFwcC5UeHRDb2xvcn1cIj48L2k+XHJcblx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHQ8cCA6ZGF0YS1rZXk9XCJhcmVhLklEXCI+e3sgYXBwLk5hbWUgfX08L3A+XHJcblx0XHRcdFx0PC9saT5cclxuXHRcdFx0PC91bD5cclxuXHRcdDwvdmlldz5cclxuXHRcdFxyXG5cdFx0PCEtLSA8aW1hZ2UgY2xhc3M9XCJsb2dvXCIgc3JjPVwiL3N0YXRpYy9sb2dvLnBuZ1wiPjwvaW1hZ2U+XHJcblx0XHQ8dmlldyBjbGFzcz1cInRleHQtYXJlYVwiPlxyXG5cdFx0XHQ8dGV4dCBjbGFzcz1cInRpdGxlXCI+e3t0aXRsZX19PC90ZXh0PlxyXG5cdFx0PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJcIiB2LWZvcj1cIih2LGluZGV4KSBpbiBkYXRhXCI+XHJcblx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIDp2YWx1ZT1cInZcIiBAZm9jdXM9XCJvbnRhcFwiIDpkYXRhLWtleT1cImluZGV4XCIgIDprZXk9XCJpbmRleFwiLz5cclxuXHRcdDwvdmlldz4gLS0+XHJcblx0PC92aWV3PlxyXG48L3RlbXBsYXRlPiBcclxuXHJcbjxzY3JpcHQ+XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0b25OYXZpZ2F0aW9uQmFyQnV0dG9uVGFwKGUpIHtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZS50ZXh0KTtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZS5mb250U2l6ZSk7XHJcblx0XHRcdHRoaXMuJHN0b3JlLnN0YXRlLmFyZWFGdW5jPScnO1xyXG5cdFx0XHR0aGlzLiRzdG9yZS5jb21taXQoXCJjbGFzc0F0dHJMaXN0XCIsbnVsbCk7XHJcblx0XHRcdHRoaXMuJHN0b3JlLmNvbW1pdChcImNsYXNzR3JpZFN0eWxlSW5mb1wiLG51bGwpO1xyXG5cdFx0XHR0aGlzLiRzdG9yZS5jb21taXQoXCJkaWNWYWx1ZUluZm9cIixudWxsKTtcclxuXHRcdFx0Ly/liLfmlrDlvZPliY3pobXpnaJcclxuXHRcdFx0Ly8gbG9jYXRpb24ucmVsb2FkKCk7XHJcblx0XHRcdHVuaS5yZWRpcmVjdFRvKHtcclxuXHRcdFx0XHR1cmw6Jy4uL2luZGV4L2luZGV4P2FyZ3M9OTk5OTk5OTk5OSdcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdHRpdGxlOiAnSGVsbG8nLFxyXG5cdFx0XHRcdGRhdGE6W11cclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdG9uTG9hZChvcHRpb25zKSB7XHJcblx0XHRcdGNvbnNvbGUubG9nKG9wdGlvbnMpO1xyXG5cdFx0XHRcclxuXHRcdFx0Ly8g6I635Y+W5omA5pyJQXBwVHlwZT1cIk1FU1wiLENsaWVudFR5cGU9XCIyXCIoUERBKeeahOW8leeUqOmihuWfn+WKn+iDveeCueS/oeaBr1xyXG5cdFx0XHRpZih0aGlzLiRzdG9yZS5zdGF0ZS5hcmVhRnVuYylcclxuXHRcdFx0XHR0aGlzLmRhdGEgPSB0aGlzLiRzdG9yZS5zdGF0ZS5hcmVhRnVuYy5kYXRhO1xyXG5cdFx0XHRlbHNlXHJcblx0XHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2FyZWFGdW5jJyx7fSkudGhlbihzdWNjZXNzPT57XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0XHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5kYXRhID0gc3VjY2Vzcy5kYXRhO1xyXG5cdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor69cIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHJcblx0XHRcdC8vIHZhciBkYXRhID0ge1xyXG5cdFx0XHQvLyBcdFx0aW4xOlwibGwxXCIsXHJcblx0XHRcdC8vIFx0XHRpbjI6XCJsbDJcIixcclxuXHRcdFx0Ly8gXHRcdGluMzpcImxsM1wiLFxyXG5cdFx0XHQvLyBcdFx0aW40OlwibGw0XCIsXHJcblx0XHRcdC8vIFx0XHRpbjU6XCJsbDVcIixcclxuXHRcdFx0Ly8gXHRcdGluNjpcImxsNlwiLFxyXG5cdFx0XHQvLyBcdH07XHJcblx0XHRcdC8vIGZvcih2YXIgaSBpbiBkYXRhKVxyXG5cdFx0XHQvLyBcdHRoaXMuJGRhdGEua2V5cy5wdXNoKGkpXHJcblx0XHRcdC8vIHRoaXMuJGRhdGEuZGF0YSA9IGRhdGE7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKHRoaXMuJGRhdGEua2V5cyk7XHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRhcHBDcmVhdGUoYXBwKXsgLy/ngrnlh7vlip/og73ngrnot7PovazpobXpnaJcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhhcHApO1xyXG5cdFx0XHRcdGlmKCFhcHAuUGFyYW0pe1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50Olwi6K+l5Yqf6IO954K55pyq6YWN572u5Y+C5pWw77yM6K+36YeN5paw6YWN572u5Y+C5pWw77yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmKGFwcC5EZWZDb2RlID09ICczMDE4Jyl7XHJcblx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XHJcblx0XHRcdFx0XHRcdHVybDonLi4vbW9kYWwvY2xhc3NBdHRyP3BhcmFtPScrYXBwLlBhcmFtK1wiJnRpdGxlbmFtZT1cIithcHAuTmFtZVxyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHR9IGVsc2UgaWYoYXBwLkRlZkNvZGUgPT0gJzMwMzcnKXtcclxuXHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcclxuXHRcdFx0XHRcdFx0dXJsOicuLi9tb2RhbC9tc19jbGFzc0F0dHI/cGFyYW09JythcHAuUGFyYW0rXCImdGl0bGVuYW1lPVwiK2FwcC5OYW1lXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdH0gXHJcblx0XHRcdFx0Ly8gdW5pLnJlZGlyZWN0VG8oe1xyXG5cdFx0XHRcdC8vIFx0dXJsOicuLi9pbmRleC9pbmRleD9hcmdzPTk5OTk5OTk5OTknXHJcblx0XHRcdFx0Ly8gfSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdG9udGFwKGUpeyAvL+aJq+eggeWKn+iDvVxyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGUudGFyZ2V0KVxyXG5cdFx0XHRcdGdldEFwcCgpLm9uU2NhbigocmVzdWx0KT0+e1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2cocmVzdWx0LmRlY29kZWRhdGEpO1xyXG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5kYXRhW2UudGFyZ2V0LmRhdGFzZXRbJ2tleSddXT1yZXN1bHQuZGVjb2RlZGF0YTtcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9XHJcblx0XHRcclxuXHRcdH1cclxuXHR9XHJcbjwvc2NyaXB0PlxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///39\n"); |
| | | |
| | | /***/ }), |
| | | /* 40 */ |
| | |
| | | /***/ (function(module, exports, __webpack_require__) { |
| | | |
| | | "use strict"; |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;var _regenerator = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/regenerator */ 50));\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _pickerAddress = _interopRequireDefault(__webpack_require__(/*! ../../js/pickerAddress/pickerAddress.vue */ 53));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {try {var info = gen[key](arg);var value = info.value;} catch (error) {reject(error);return;}if (info.done) {resolve(value);} else {Promise.resolve(value).then(_next, _throw);}}function _asyncToGenerator(fn) {return function () {var self = this,args = arguments;return new Promise(function (resolve, reject) {var gen = fn.apply(self, args);function _next(value) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);}function _throw(err) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);}_next(undefined);});};}var _default =\n{\n components: {\n pickerAddress: _pickerAddress.default },\n\n data: function data() {\n return {\n title: '新增',\n param: {},\n classAttrList: [],\n classGridStyle: [],\n edit_inital_event: \"\", //弹窗初始化事件ID\n edit_ok_event: \"\", //弹窗点击OK 触发事件ID\n edit_select_compose_event: \"\", //选择组成对象时调用\n edit_compose_cls_id: \"\",\n global_attr: [],\n refdatastore: [], //引用数据存储区// {attr:'G_PRJ_' + bindattr + '_ID', value:info.id}\n inputValList: [{ Name: \"test\" }, { Name: \"test2\" }, { Name: \"test3\" }, { Name: \"test4\" }, { Name: \"test5\" }, { Name: \"test6\" }, { Name: \"test7\" }] };\n\n },\n onLoad: function onLoad(options) {\n // console.log(options);\n uni.setNavigationBarTitle({ title: options.titlename }); //设置顶部标题 \n var param = JSON.parse(options.param);\n this.$data.title = param.Add_BtnName ? param.Add_BtnName : options.titlename; //设置按钮文字\n // console.log(param);\n if (!param.EditDlgMode) {\n uni.showModal({ title: \"提示\", content: \"该功能点未配置编辑窗口,请重新配置!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n if (!param.Edit_dlg.Name) {\n uni.showModal({ title: \"提示\", content: \"该功能点未配置窗口样式,请重新配置!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n this.$data.param = param;\n var edit_dlg = {\n Model: param.EditDlgMode,\n Name: param.Edit_dlg.Name };\n\n var dataInfo = {\n class_id: param.clsid };\n\n var $this = this;\n $this.$store.state.thisareaFuncID = param.clsid;\n // console.log($this.$store.getters.getclassAttrList);\n //获取\n if ($this.$store.getters.getclassAttrList) {\n $this.$data.classAttrList = $this.$store.getters.getclassAttrList.data;\n $this.classGridStyleInfo();\n } else\n $this.$store.dispatch('classAttrList', dataInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n $this.$data.classAttrList = success.data;\n\n $this.classGridStyleInfo();\n } else {\n uni.showModal({ title: \"错误1\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误1.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n\n },\n methods: {\n cancel: function cancel(e) {\n uni.navigateBack({\n delta: 1 //返回层数,2则上上页\n });\n },\n classGridStyleInfo: function classGridStyleInfo() {var _this = this;return _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee() {var $this, gridstyleInfo;return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:\n $this = _this;\n gridstyleInfo = {\n class_id: $this.$data.param.clsid,\n name: $this.$data.param.Edit_dlg.Name,\n type: '2' };\n\n $this.$store.state.thisEditName = $this.$data.param.Edit_dlg.Name;\n // console.log($this.$store.getters.getclassGridStyleInfo);\n //获取\n if ($this.$store.getters.getclassGridStyleInfo) {\n $this.$data.classGridStyle = $this.$store.getters.getclassGridStyleInfo.data;\n $this.class_attr_init();\n } else {\n //console.log(gridstyleInfo);\n $this.$store.dispatch('classGridStyleInfo', gridstyleInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n success.data.StyleDef = JSON.parse(success.data.StyleDef);\n $this.$data.classGridStyle = success.data;\n\n $this.class_attr_init();\n } else {\n uni.showModal({ title: \"错误1.2\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/classAttr.vue:482\");\n uni.showModal({ title: \"错误1.3\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n }case 4:case \"end\":return _context.stop();}}}, _callee);}))();\n },\n ontap: function ontap(e) {var _this2 = this; //扫码功能\n //console.log(e.target)\n getApp().onScan(function (result) {\n //console.log(result.decodedata);\n _this2.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = result.decodedata;\n });\n },\n onarrow: function onarrow(index, open) {\n // console.log(index+'--'+open);\n this.$data.classAttrList[index].Open = open == true ? false : true;\n },\n ondateTime: function ondateTime(e) {\n //console.log(e.target)\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n },\n onchange: function onchange(e) {\n __f__(\"log\", e.target, \" at pages/modal/classAttr.vue:503\");\n var value = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].dictitem[e.target.value];\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n __f__(\"log\", data_attr, \" at pages/modal/classAttr.vue:506\");\n if (value.Name != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = value.Name;\n __f__(\"log\", this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value, \" at pages/modal/classAttr.vue:509\");\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info);\n }\n }\n\n },\n onchange2: function onchange2(item, value, delvalue) {\n // console.log(item);\n // console.log(value);\n // console.log(delvalue);\n if (item.length == 0) {//为空时,清空属性value\n var index,iindex,dindex = 0;\n for (var i in this.$data.classAttrList) {\n for (var j in this.$data.classAttrList[i].Attr) {\n for (var d in this.$data.classAttrList[i].Attr[j].dictitem) {\n if (delvalue[0].Name == this.$data.classAttrList[i].Attr[j].dictitem[d].Name) {\n this.$data.classAttrList[i].Attr[j].Value = \"\";\n }\n }\n }\n }\n }\n\n for (var v in item) {\n var index,iindex,dindex = 0;\n for (var i in this.$data.classAttrList) {\n for (var j in this.$data.classAttrList[i].Attr) {\n for (var d in this.$data.classAttrList[i].Attr[j].dictitem) {\n if (item[v].Name == this.$data.classAttrList[i].Attr[j].dictitem[d].Name) {\n index = i;iindex = j;dindex = d;\n }\n }\n }\n }\n var itemvalue = item[v];\n var data_attr = this.$data.classAttrList[index].Attr[iindex];\n\n __f__(\"log\", data_attr, \" at pages/modal/classAttr.vue:576\");\n if (itemvalue.Name != data_attr.Value) {\n this.$data.classAttrList[index].Attr[iindex].Value = value;\n __f__(\"log\", this.$data.classAttrList[index].Attr[iindex].Value, \" at pages/modal/classAttr.vue:579\");\n var eventid = this.$data.classAttrList[index].Attr[iindex].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n if (ar.Type == '字典' || ar.Type == '字典-字符串')\n req.push({ attr: ar.Name, val: itemvalue.Name });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info);\n }\n }\n }\n\n\n },\n onevent: function onevent(e) {\n // console.log(e.target);\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n // console.log(data_attr);\n if (e.target.value != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info, data_attr);\n }\n }\n\n },\n oncheck: function oncheck(e) {\n // console.log(e.target);\n var ischecked = e.target.dataset.ischeck ? false : true;\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n // console.log(data_attr);\n if (ischecked != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = ischecked;\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info);\n }\n }\n\n },\n inputValListIsDel: function inputValListIsDel(index) {\n // console.log(index);\n this.$data.inputValList.splice(index, 1); //删除tabPagejson的内容\n // console.log(this.$data.inputValList);\n },\n addresschange: function addresschange(e) {\n // console.log(e.target);\n __f__(\"log\", e.data.join(';'), \" at pages/modal/classAttr.vue:710\");\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.data.join(';');\n },\n classAttr_extButton: function classAttr_extButton(index, iindex) {\n var $this = this;\n var before_click_button = $this.$data.classAttrList[index].Attr[iindex].before_click_button;\n var button_callback = $this.$data.classAttrList[index].Attr[iindex].button_callback;\n if (!before_click_button) {\n uni.showModal({ title: \"提示\", content: \"before_click_button-event_id为空!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n if (!button_callback) {\n uni.showModal({ title: \"提示\", content: \"button_callback-event_id为空!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n var data_attr = this.$data.classAttrList[index].Attr[iindex];\n this.DataObjRunCustomEvent_Return(before_click_button, data_attr, button_callback, index, iindex);\n },\n classAttr_AddPer: function classAttr_AddPer(index, iindex) {\n var param = { index: index, iindex: iindex };\n var $this = this;\n uni.navigateTo({\n url: '../selpsn/index?mulit=false¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n __f__(\"log\", data, \" at pages/modal/classAttr.vue:736\");\n $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].Login + ';' + data[0].Name;\n\n var eventid = $this.$data.classAttrList[param.index].Attr[param.iindex].action;\n if (eventid) {\n eventid = eventid.trim();\n if (eventid) {\n var info = {\n eventid: eventid,\n edtype: \"4\",\n projectid: \"\",\n rclsid: \"\",\n robjid: \"\",\n userlogin: data[0].Login,\n clsid: $this.$data.param.clsid,\n objid: \"\",\n attr: [] };\n\n\n // var data_attr = $this.$data.classAttrList[param.index].Attr[param.iindex];\n $this.DataObjRunCustomEvent(info);\n }\n }\n } } });\n\n\n },\n classAttr_AddRef: function classAttr_AddRef(e) {\n __f__(\"log\", e.target, \" at pages/modal/classAttr.vue:765\");\n uni.showModal({ title: \"提示\", content: \"此功能还未实现!\", showCancel: false, confirmText: \"取消\" });\n // var value=this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].RelCls[e.target.value];\n // this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value=value;\n },\n classAttr_AddPrj: function classAttr_AddPrj(index, iindex) {\n var param = { index: index, iindex: iindex };\n var $this = this;\n uni.navigateTo({\n url: '../selPrj/index?relation=-1¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n // console.log(data);\n $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].ID + ';' + data[0].Name;\n\n var eventid = $this.$data.classAttrList[param.index].Attr[param.iindex].action;\n if (eventid) {\n eventid = eventid.trim();\n if (eventid) {\n var info = {\n eventid: eventid,\n edtype: \"2\",\n projectid: data[0].ID,\n rclsid: \"\",\n robjid: \"\",\n userlogin: \"\",\n clsid: $this.$data.param.clsid,\n objid: \"\",\n attr: [] };\n\n\n // var data_attr = $this.$data.classAttrList[param.index].Attr[param.iindex];\n $this.DataObjRunCustomEvent(info);\n }\n }\n } } });\n\n\n },\n sava: function sava() {\n if (this.$data.edit_ok_event)\n this.OKDataObjRunCustomEvent();else\n\n this.add();\n },\n add: function add() {var _this3 = this;\n uni.showLoading({\n title: \"加载中...\" });\n\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '请选择' || ar.Value == '——请选择——') ar.Value = '';\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ name: ar.Name, value: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ name: ar.Name, value: ar.Value ? '1' : '0' });else\n if (ar.Type == '字典' || ar.Type == '字典-字符串') {\n if (ar.select == true) {//判断下拉是否多选\n var valStr = \"\";\n for (var v in ar.Value) {\n if (valStr)\n valStr += \";\";\n valStr += ar.Value[v];\n }\n req.push({ name: ar.Name, value: valStr });\n } else\n req.push({ name: ar.Name, value: ar.Value });\n } else\n\n req.push({ name: ar.Name, value: ar.Value ? ar.Value : '' });\n\n if ((ar.NotEmpty == '1' || ar.notempty == true) && !ar.Value) {\n // if(ar.notEmpty=='1'){\n uni.hideLoading();\n // uni.showToast({title:ar.DispName+'不能为空!',icon:\"success\",duration:3000});\n uni.showModal({ title: \"提示\", content: ar.DispName + '不能为空!', showCancel: false, confirmText: \"取消\" });\n return;\n }\n }\n }\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.clsid, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.clsid } };\n\n\n\n var dataInfo = {\n class_id: this.$data.param.clsid, data_obj_id: '', masterclsid: '',\n req: JSON.stringify(req), upfile: JSON.stringify([]), post_data: JSON.stringify({}),\n compose: JSON.stringify([]), refdatastore: JSON.stringify([]), extinfo: JSON.stringify(enviroment),\n not_trigger_sys_event: '' };\n\n\n // return\n __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:871\");\n this.$store.dispatch('addclassattr', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/classAttr.vue:873\");\n uni.hideLoading();\n if (success.code == '00000') {\n var action = JSON.parse(success.data.Action);\n if (action.ret == '0') {\n if (action.result_type == '0') {\n uni.showToast({ title: action.result, icon: \"success\", duration: 3000 });\n }\n // \"{\"ret\":0, \"result_type\":0, \"result\":\"创建成功123123123\",\"info\":\"\"}\"\n }\n //刷新\n uni.redirectTo({\n url: '../modal/classAttr?param=' + JSON.stringify(_this3.$data.param) + \"&titlename=\" + _this3.$data.title });\n\n // this.class_attr_init();\n } else {\n uni.showModal({ title: \"错误\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/classAttr.vue:892\");\n uni.hideLoading();\n uni.showModal({ title: \"提示\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n class_attr_init: function class_attr_init() {\n var attrlist = this.$data.classGridStyle.StyleDef.show_style;\n var newattrlist = [];\n if (this.$data.classAttrList.length > 0) {\n for (var i = 0; i < attrlist.length; i++) {\n var open = attrlist[i].open;\n var name = attrlist[i].attrgroup_name;\n var attrs = attrlist[i].attrs;\n for (var s = 0; s < this.$data.classAttrList.length; s++) {\n var clsattr = this.$data.classAttrList[s];\n if (name == clsattr.Name) {\n var attr = [];\n for (var j = 0; j < attrs.length; j++) {\n for (var l = 0; l < clsattr.Attr.length; l++) {\n var ca = clsattr.Attr[l];\n if (attrs[j].attr == ca.Name) {\n ca.action = attrs[j].action;\n ca.edit = attrs[j].edit;\n ca.notempty = attrs[j].notempty;\n ca.ext_button = attrs[j].ext_button;\n ca.button_img = attrs[j].button_img;\n ca.button_tooltip = attrs[j].button_tooltip;\n ca.before_click_button = attrs[j].before_click_button;\n ca.button_callback = attrs[j].button_callback;\n ca.hidden = attrs[j].hidden;\n ca.select = attrs[j].select == undefined ? false : attrs[j].select;\n ca.Value = \"\";\n if (ca.dictitem) {\n var dictitemlist = [];\n for (var d = 0; d < ca.dictitem.length; d++) {\n ca.dictitem[d].label = ca.dictitem[d].CN_S_NAME;\n ca.dictitem[d].value = ca.dictitem[d].CN_S_NAME;\n }\n if (ca.select == true)\n ca.Value = []; //ca.dictitem[0].CN_S_NAME;\n else\n ca.Value = '请选择'; //ca.dictitem[0].CN_S_NAME;\n }\n if (ca.Type == '日期' || ca.Type == '时间') {\n var nowDate = new Date();\n var date = { year: nowDate.getFullYear(), month: nowDate.getMonth() + 1, day: nowDate.getDate() };\n ca.Value = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day);\n }\n if (ca.Type == '引用对象(多个)') {\n var relClsList = [];\n var attr_rescls = ca.RelCls.split(',');\n for (var ii in attr_rescls) {\n var rescls = attr_rescls[ii].split('|');\n relClsList.push({ id: rescls[0], name: rescls[1] });\n }\n ca.RelClsList = relClsList;\n ca.Value = '请';\n }\n if (ca.Type == '省市区')\n ca.Value = '请选择';\n if (ca.Type == '布尔值')\n ca.Value = false;\n\n attr.push(ca);\n }\n }\n }\n newattrlist.push({\n BkColor: clsattr.BkColor,\n HasAce: clsattr.HasAce,\n ImgFontStyle: clsattr.ImgFontStyle,\n Name: clsattr.Name,\n Order: clsattr.Order,\n Open: open,\n Attr: attr,\n control_style: this.$data.classGridStyle.StyleDef.control_style,\n title_p_wdith: this.$data.classGridStyle.StyleDef.title_p_wdith });\n\n }\n }\n }\n if (newattrlist.length > 0) {\n this.$data.classAttrList = newattrlist;\n }\n var req = [];\n if (this.$data.classGridStyle.StyleDef) {\n if (this.$data.classGridStyle.StyleDef.show_style.length > 0) {\n var attrlist = this.$data.classGridStyle.StyleDef.show_style;\n // $el.find('.attr_field').prop('readonly', true);\n // $el.find('.attr_field').prop('disabled', true);\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].attrs;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n req.push({ attr: ar.attr, val: ar.value ? ar.value : '' });\n }\n }\n }\n }\n\n var eventlist = this.$data.classGridStyle.StyleDef.event;\n if (eventlist) {\n if (eventlist.length > 0) {\n for (var i = 0; i < eventlist.length; i++) {\n if (eventlist[i].event_id == 'before_ok') {\n this.$data.edit_ok_event = eventlist[i];\n } else if (eventlist[i].event_id == 'initial') {\n this.$data.edit_inital_event = eventlist[i];\n } else if (eventlist[i].event_id == 'before_select_compose') {\n this.$data.edit_select_compose_event = eventlist[i].scrip_id;\n this.$data.edit_compose_cls_id = eventlist[i].compose_cls_id;\n }\n }\n }\n }\n __f__(\"log\", req, \" at pages/modal/classAttr.vue:1007\");\n if (this.$data.edit_inital_event) {\n var eventid = this.$data.edit_inital_event.scrip_id;\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n this.ini_DataObjRunCustomEvent(info);\n }\n __f__(\"log\", this.$data.classGridStyle, \" at pages/modal/classAttr.vue:1023\");\n __f__(\"log\", this.$data.classAttrList, \" at pages/modal/classAttr.vue:1024\");\n\n } else {\n uni.showModal({ title: \"提示\", content: \"未找到可显示的的属性\", showCancel: false, confirmText: \"取消\" });\n }\n },\n ini_DataObjRunCustomEvent: function ini_DataObjRunCustomEvent(info) {var _this4 = this;\n var param = {\n EditStyle: this.$data.param.Edit_dlg.Name,\n ViewStyle: this.$data.param.Edit_dlg.Name,\n NotTriggerSysEvent: 0,\n enviroment: {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.clsid, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.clsid // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } } };\n\n\n var inputparameter = '';\n var global_attr = '';\n\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid,\n rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(param), inputparameter: inputparameter, global_attr: global_attr };\n\n __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1054\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/classAttr.vue:1056\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n if (actionlist) {\n for (var j = 0; j < actionlist.length; j++) {\n var action = actionlist[j];\n var action_type = action.action_type;\n var value = action.value;\n if (action_type == 'set_dlg_attr') {\n if (value) {\n var val = value;\n if (typeof value == 'string') {\n val = JSON.parse(value);\n }\n __f__(\"log\", val, \" at pages/modal/classAttr.vue:1071\");\n for (var i = 0; i < val.length; i++) {\n for (var a = 0; a < _this4.$data.classAttrList.length; a++) {\n for (var l = 0; l < _this4.$data.classAttrList[a].Attr.length; l++) {\n var ca = _this4.$data.classAttrList[a].Attr[l];\n if (val[i].attr == ca.Name) {\n if (ca.Type == '字典' || ca.Type == '字典-字符串') {\n var dictItemList = [];\n for (var d in val[i].choice_list) {\n var val = val[i].choice_list[d];\n dictItemList.push({ \"CN_S_NAME\": val, \"Name\": val, \"label\": val, \"value\": val });\n\n }\n ca.dictitem = dictItemList;\n // attr[j].dictitem = val[i].choice_list;\n } else {\n // ca.value = val[i].value;\n }\n }\n }\n }\n\n var length = 0;\n if (!_this4.$data.refdatastore.filter(function (s) {\n return val[i].attr == s.attr;\n }).length) {\n length = 1;\n _this4.$data.refdatastore.push(val[i]);\n }\n if (length == 0) {\n for (var j = 0; j < _this4.$data.refdatastore.length; j++) {\n if (_this4.$data.refdatastore[j].attr == val[i].attr) {\n _this4.$data.refdatastore[j].value = val[i].value;\n }\n }\n }\n }\n }\n }\n if (action_type == 'open_select_userdlg') {\n uni.showModal({ title: \"错误2.2\", content: \"open_select_userdlg这个action_type还未处理!\", showCancel: false, confirmText: \"取消\" });\n }\n }\n }\n\n } else {\n uni.showModal({ title: \"错误2\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误2.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n DataObjRunCustomEvent: function DataObjRunCustomEvent(info, data_attr) {\n var $this = this;\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.clsid, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.clsid // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } };\n\n if (data_attr) {\n enviroment.edit_dlg = {\n type: 'small', //小窗口\n class_id: this.$data.param.clsid //当前数据类id\n };\n if (data_attr) {\n enviroment.edit_dlg.form_control = { //所属的表单控件\n name: data_attr.Name, //字段属性\n text: data_attr.DispName, //显示文本\n group_name: data_attr.GroupName, //属性组\n type: data_attr.Type, //字段类型\n readonly: data_attr.ReadOnly, //是否只读\n button_img: data_attr.button_img, //引用按钮的图标\n button_tooltip: data_attr.button_tooltip //引用按钮的tooltip\n };\n }\n }\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid.replace('{', '').replace('}', ''),\n rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), inputparameter: '', global_attr: JSON.stringify(this.$data.global_attr) };\n\n __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1158\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/classAttr.vue:1160\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n\n if (actionlist) {\n __f__(\"log\", actionlist, \" at pages/modal/classAttr.vue:1166\");\n for (var i = 0; i < actionlist.length; i++) {\n var action = actionlist[i];\n if (action.action_type == 'set_dlg_attr') {\n var result = action.value;\n for (var i = 0; i < result.length; i++) {\n if (result[i].choice_list) {\n for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n if (attr[j].Name == result[i].attr) {\n if (attr[j].Type == '字典' || attr[j].Type == '字典-字符串') {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({ \"CN_S_NAME\": val, \"Name\": val, \"label\": val, \"value\": val });\n }\n attr[j].dictitem = dictItemList;\n // attr[j].dictitem = result[i].choice_list;\n }\n }\n }\n }\n }\n for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n __f__(\"log\", attr[j].Name + '==' + result[i].attr, \" at pages/modal/classAttr.vue:1193\");\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n }\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n } else if (data.action[i].action_type == 'set_global_attr') {\n $this.$data.global_attr = data.action[i].value || [];\n }\n }\n }\n\n if (data.result) {\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n }\n }\n }\n\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n }\n } else {\n uni.showModal({ title: \"错误3\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误3.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n OKDataObjRunCustomEvent: function OKDataObjRunCustomEvent() {var _this5 = this;\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.clsid, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.clsid // button=bottom时 master的cls_id\n } };\n\n\n\n var eventid = this.$data.edit_ok_event.scrip_id;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '请选择' || ar.Value == '——请选择——') ar.Value = '';\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value });\n }\n }\n\n if (this.$data.refdatastore.length > 0) {\n for (var i = 0; i < this.$data.refdatastore.length; i++) {\n if (!req.filter(function (s) {\n return this.$data.refdatastore[i].attr == s.name;\n }).length) {\n length = 1;\n req.push({ 'attr': this.$data.refdatastore[i].attr, 'val': this.$data.refdatastore[i].value });\n }\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid, rclsid: info.rclsid,\n robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), global_attr: JSON.stringify(this.$data.global_attr) };\n\n __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1313\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/classAttr.vue:1315\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n // self.class_attr_ele.find('.attr_field[data-field=\"' + result[i].attr + '\"]').val(result[i].value).data('val', result[i].value);\n var length = 0;\n if (!_this5.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n _this5.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < _this5.$data.refdatastore.length; j++) {\n if (_this5.$data.refdatastore[j].attr == result[i].attr) {\n _this5.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n\n _this5.add();\n } else {\n uni.showModal({ title: \"错误4\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误4.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n DataObjRunCustomEvent_Return: function DataObjRunCustomEvent_Return(eventid, data_attr, button_callback, index, iindex) {var _this6 = this;\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.clsid, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.clsid // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } };\n\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value });\n }\n }\n if (this.$data.refdatastore.length > 0) {\n for (var i = 0; i < this.$data.refdatastore.length; i++) {\n if (!req.filter(function (s) {\n return this.$data.refdatastore[i].attr == s.name;\n }).length) {\n length = 1;\n req.push({ 'attr': this.$data.refdatastore[i].attr, 'val': this.$data.refdatastore[i].value });\n }\n }\n }\n var extinfo = enviroment;\n extinfo.edit_dlg = {\n type: 'small', //小窗口\n class_id: this.$data.param.clsid //当前数据类id\n };\n if (data_attr) {\n extinfo.edit_dlg.form_control = { //所属的表单控件\n name: data_attr.Name, //字段属性\n text: data_attr.DispName, //显示文本\n group_name: data_attr.GroupName, //属性组\n type: data_attr.Type, //字段类型\n readonly: data_attr.ReadOnly, //是否只读\n button_img: data_attr.button_img, //引用按钮的图标\n button_tooltip: data_attr.button_tooltip //引用按钮的tooltip\n };\n }\n var dataInfo = {\n edtype: \"0\", eventid: eventid, projectid: '', rclsid: '', robjid: '', userlogin: '',\n clsid: this.$data.param.clsid, objid: '', attr: JSON.stringify(req),\n extinfo: JSON.stringify(extinfo), global_attr: JSON.stringify(this.$data.global_attr) };\n\n __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1404\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/classAttr.vue:1406\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n if (data != \"\") {\n\n var actions = data.action;\n __f__(\"log\", actions, \" at pages/modal/classAttr.vue:1412\");\n if (actions) {\n for (var i = 0; i < actions.length; i++) {\n var action = actions[i];\n var val = action.value;\n var enviroment = JSON.stringify(enviroment);\n\n if (action.action_type == 'open_panel') {\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!' });\n\n d.show();\n } else\n if (action.action_type == 'open_select_userdlg') {\n var style = val.style;\n // style == 'user' ? '选择人员' : style == 'department' ? '选择部门' : style == 'role' ? '选择角色' : ''\n var $this = _this6;\n var param = {\n index: index,\n iindex: iindex,\n button_callback: button_callback,\n req: req,\n data_attr: data_attr };\n\n uni.navigateTo({\n url: '../selpsn/index?mulit=false¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n __f__(\"log\", data, \" at pages/modal/classAttr.vue:1442\");\n var callback_eventid = param.button_callback.trim();\n var info = {\n eventid: callback_eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: $this.$data.param.clsid,\n objid: \"\",\n attr: param.req,\n inputparameter: data };\n\n $this.DataObjRunCustomEvent(info, param.data_attr);\n } } });\n\n\n } else\n if (action.action_type == 'open_data_query_dlg') {\n\n } else\n if (action.action_type == 'open_common_dlg') {\n var value = action.value;\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!' });\n\n d.show();\n } else\n if (action.action_type == 'open_project_query_dlg') {\n //console.log(action.value.select_range);\n //console.log(action.value.mulit_select);\n var priRel = '-1';\n if (action.value.select_range == '全部相关')\n priRel = '0';else\n if (action.value.select_range == '我负责的项目')\n priRel = '1';else\n if (action.value.select_range == '我创建的')\n priRel = '2';else\n if (action.value.select_range == '我参与的' || action.value.select_range == '我参加的')\n priRel = '3';else\n if (action.value.select_range == '我关注的')\n priRel = '4';else\n if (action.value.select_range == '我下属的项目')\n priRel = '5';\n\n var $this = _this6;\n var param_ = {\n index: index,\n iindex: iindex,\n button_callback: button_callback,\n req: req };\n\n uni.navigateTo({\n url: '../selPrj/index?relation=' + priRel + '¶m=' + JSON.stringify(param_),\n events: {\n AddPer: function AddPer(data, param) {\n $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].ID + ';' + data[0].Name;\n var callback_eventid = param.button_callback.trim();\n if (callback_eventid) {\n var info = {\n eventid: callback_eventid,\n edtype: \"2\",\n projectid: data[0].ID,\n rclsid: \"\",\n robjid: \"\",\n userlogin: \"\",\n clsid: $this.$data.param.clsid,\n objid: \"\",\n attr: param.req };\n\n\n $this.DataObjRunCustomEvent(info);\n }\n } } });\n\n\n } else {\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!' });\n\n d.show();\n }\n }\n }\n } else {\n uni.showModal({ title: \"提示5.2\", content: '调用 before_click_button 脚本返回空,event_id' + eventid, showCancel: false, confirmText: \"取消\" });\n }\n } else {\n uni.showModal({ title: \"错误5\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"提示5.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 13)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvY2xhc3NBdHRyLnZ1ZSJdLCJuYW1lcyI6WyJjb21wb25lbnRzIiwicGlja2VyQWRkcmVzcyIsImRhdGEiLCJ0aXRsZSIsInBhcmFtIiwiY2xhc3NBdHRyTGlzdCIsImNsYXNzR3JpZFN0eWxlIiwiZWRpdF9pbml0YWxfZXZlbnQiLCJlZGl0X29rX2V2ZW50IiwiZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudCIsImVkaXRfY29tcG9zZV9jbHNfaWQiLCJnbG9iYWxfYXR0ciIsInJlZmRhdGFzdG9yZSIsImlucHV0VmFsTGlzdCIsIk5hbWUiLCJvbkxvYWQiLCJvcHRpb25zIiwidW5pIiwic2V0TmF2aWdhdGlvbkJhclRpdGxlIiwidGl0bGVuYW1lIiwiSlNPTiIsInBhcnNlIiwiJGRhdGEiLCJBZGRfQnRuTmFtZSIsIkVkaXREbGdNb2RlIiwic2hvd01vZGFsIiwiY29udGVudCIsInNob3dDYW5jZWwiLCJjb25maXJtVGV4dCIsIkVkaXRfZGxnIiwiZWRpdF9kbGciLCJNb2RlbCIsImRhdGFJbmZvIiwiY2xhc3NfaWQiLCJjbHNpZCIsIiR0aGlzIiwiJHN0b3JlIiwic3RhdGUiLCJ0aGlzYXJlYUZ1bmNJRCIsImdldHRlcnMiLCJnZXRjbGFzc0F0dHJMaXN0IiwiY2xhc3NHcmlkU3R5bGVJbmZvIiwiZGlzcGF0Y2giLCJ0aGVuIiwic3VjY2VzcyIsImNvZGUiLCJtc2ciLCJjYXRjaCIsImV4IiwiZXJyTXNnIiwibWV0aG9kcyIsImNhbmNlbCIsImUiLCJuYXZpZ2F0ZUJhY2siLCJkZWx0YSIsImdyaWRzdHlsZUluZm8iLCJuYW1lIiwidHlwZSIsInRoaXNFZGl0TmFtZSIsImdldGNsYXNzR3JpZFN0eWxlSW5mbyIsImNsYXNzX2F0dHJfaW5pdCIsIlN0eWxlRGVmIiwib250YXAiLCJnZXRBcHAiLCJvblNjYW4iLCJyZXN1bHQiLCJ0YXJnZXQiLCJkYXRhc2V0IiwiQXR0ciIsIlZhbHVlIiwiZGVjb2RlZGF0YSIsIm9uYXJyb3ciLCJpbmRleCIsIm9wZW4iLCJPcGVuIiwib25kYXRlVGltZSIsInZhbHVlIiwib25jaGFuZ2UiLCJkaWN0aXRlbSIsImRhdGFfYXR0ciIsImV2ZW50aWQiLCJhY3Rpb24iLCJyZXEiLCJhdHRybGlzdCIsImkiLCJsZW5ndGgiLCJhdHRyIiwiaiIsImFyIiwiVHlwZSIsInB1c2giLCJ2YWwiLCJWYWxJRCIsImluZm8iLCJlZHR5cGUiLCJwcm9qZWN0aWQiLCJyY2xzaWQiLCJyb2JqaWQiLCJ1c2VybG9naW4iLCJvYmppZCIsIkRhdGFPYmpSdW5DdXN0b21FdmVudCIsIm9uY2hhbmdlMiIsIml0ZW0iLCJkZWx2YWx1ZSIsImlpbmRleCIsImRpbmRleCIsImQiLCJ2IiwiaXRlbXZhbHVlIiwib25ldmVudCIsIm9uY2hlY2siLCJpc2NoZWNrZWQiLCJpc2NoZWNrIiwiaW5wdXRWYWxMaXN0SXNEZWwiLCJzcGxpY2UiLCJhZGRyZXNzY2hhbmdlIiwiam9pbiIsImNsYXNzQXR0cl9leHRCdXR0b24iLCJiZWZvcmVfY2xpY2tfYnV0dG9uIiwiYnV0dG9uX2NhbGxiYWNrIiwiRGF0YU9ialJ1bkN1c3RvbUV2ZW50X1JldHVybiIsImNsYXNzQXR0cl9BZGRQZXIiLCJuYXZpZ2F0ZVRvIiwidXJsIiwic3RyaW5naWZ5IiwiZXZlbnRzIiwiQWRkUGVyIiwiTG9naW4iLCJ0cmltIiwiY2xhc3NBdHRyX0FkZFJlZiIsImNsYXNzQXR0cl9BZGRQcmoiLCJJRCIsInNhdmEiLCJPS0RhdGFPYmpSdW5DdXN0b21FdmVudCIsImFkZCIsInNob3dMb2FkaW5nIiwic2VsZWN0IiwidmFsU3RyIiwiTm90RW1wdHkiLCJub3RlbXB0eSIsImhpZGVMb2FkaW5nIiwiRGlzcE5hbWUiLCJlbnZpcm9tZW50IiwiY2xzX2lkIiwiYnV0dG9uX25hbWUiLCJtYXN0ZXIiLCJkYXRhX29ial9pZCIsIm1hc3RlcmNsc2lkIiwidXBmaWxlIiwicG9zdF9kYXRhIiwiY29tcG9zZSIsImV4dGluZm8iLCJub3RfdHJpZ2dlcl9zeXNfZXZlbnQiLCJBY3Rpb24iLCJyZXQiLCJyZXN1bHRfdHlwZSIsInNob3dUb2FzdCIsImljb24iLCJkdXJhdGlvbiIsInJlZGlyZWN0VG8iLCJzaG93X3N0eWxlIiwibmV3YXR0cmxpc3QiLCJhdHRyZ3JvdXBfbmFtZSIsImF0dHJzIiwicyIsImNsc2F0dHIiLCJsIiwiY2EiLCJlZGl0IiwiZXh0X2J1dHRvbiIsImJ1dHRvbl9pbWciLCJidXR0b25fdG9vbHRpcCIsImhpZGRlbiIsInVuZGVmaW5lZCIsImRpY3RpdGVtbGlzdCIsImxhYmVsIiwiQ05fU19OQU1FIiwibm93RGF0ZSIsIkRhdGUiLCJkYXRlIiwieWVhciIsImdldEZ1bGxZZWFyIiwibW9udGgiLCJnZXRNb250aCIsImRheSIsImdldERhdGUiLCJyZWxDbHNMaXN0IiwiYXR0cl9yZXNjbHMiLCJSZWxDbHMiLCJzcGxpdCIsImlpIiwicmVzY2xzIiwiaWQiLCJSZWxDbHNMaXN0IiwiQmtDb2xvciIsIkhhc0FjZSIsIkltZ0ZvbnRTdHlsZSIsIk9yZGVyIiwiY29udHJvbF9zdHlsZSIsInRpdGxlX3Bfd2RpdGgiLCJldmVudGxpc3QiLCJldmVudCIsImV2ZW50X2lkIiwic2NyaXBfaWQiLCJjb21wb3NlX2Nsc19pZCIsImluaV9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQiLCJFZGl0U3R5bGUiLCJWaWV3U3R5bGUiLCJOb3RUcmlnZ2VyU3lzRXZlbnQiLCJpbnB1dHBhcmFtZXRlciIsImFjdGlvbmxpc3QiLCJhY3Rpb25fdHlwZSIsImEiLCJkaWN0SXRlbUxpc3QiLCJjaG9pY2VfbGlzdCIsImZpbHRlciIsImZvcm1fY29udHJvbCIsInRleHQiLCJncm91cF9uYW1lIiwiR3JvdXBOYW1lIiwicmVhZG9ubHkiLCJSZWFkT25seSIsInJlcGxhY2UiLCJjIiwiYWN0aW9ucyIsImRpYWxvZyIsInNob3ciLCJzdHlsZSIsImNhbGxiYWNrX2V2ZW50aWQiLCJwcmlSZWwiLCJzZWxlY3RfcmFuZ2UiLCJwYXJhbV8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7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LFVBQUFDLEVBQUUsRUFBRTtBQUNaO0FBQ0EvQixXQUFHLENBQUNRLFNBQUosQ0FBYyxFQUFDdEIsS0FBSyxFQUFDLE9BQVAsRUFBZXVCLE9BQU8sRUFBQ3NCLEVBQUUsQ0FBQ0MsTUFBMUIsRUFBaUN0QixVQUFVLEVBQUMsS0FBNUMsRUFBa0RDLFdBQVcsRUFBQyxJQUE5RCxFQUFkO0FBQ0EsT0F0SUQ7QUF1SUcsS0Fsa0NJLEVBaEVLLEUiLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXHRpbXBvcnQgcGlja2VyQWRkcmVzcyBmcm9tICcuLi8uLi9qcy9waWNrZXJBZGRyZXNzL3BpY2tlckFkZHJlc3MudnVlJ1xuXHRleHBvcnQgZGVmYXVsdCB7XG5cdFx0Y29tcG9uZW50czoge1xuICAgICAgICAgICAgcGlja2VyQWRkcmVzc1xuICAgICAgICB9LFxuXHRcdGRhdGEoKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHR0aXRsZTogJ+aWsOWinicsXG5cdFx0XHRcdHBhcmFtOnt9LFxuXHRcdFx0XHRjbGFzc0F0dHJMaXN0OltdLFxuXHRcdFx0XHRjbGFzc0dyaWRTdHlsZTpbXSxcblx0XHRcdFx0ZWRpdF9pbml0YWxfZXZlbnQ6XCJcIiwgIC8v5by556qX5Yid5aeL5YyW5LqL5Lu2SURcblx0XHRcdFx0ZWRpdF9va19ldmVudDpcIlwiLCAgICAgIC8v5by556qX54K55Ye7T0sg6Kem5Y+R5LqL5Lu2SURcblx0XHRcdFx0ZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudDpcIlwiLCAgLy/pgInmi6nnu4TmiJDlr7nosaHml7bosIPnlKhcblx0XHRcdFx0ZWRpdF9jb21wb3NlX2Nsc19pZDpcIlwiLFxuXHRcdFx0XHRnbG9iYWxfYXR0cjpbXSxcblx0XHRcdFx0cmVmZGF0YXN0b3JlOiBbXSxcdCAgIC8v5byV55So5pWw5o2u5a2Y5YKo5Yy6Ly8ge2F0dHI6J0dfUFJKXycgKyBiaW5kYXR0ciArICdfSUQnLCB2YWx1ZTppbmZvLmlkfVxuXHRcdFx0XHRpbnB1dFZhbExpc3Q6W3tOYW1lOlwidGVzdFwifSx7TmFtZTpcInRlc3QyXCJ9LHtOYW1lOlwidGVzdDNcIn0se05hbWU6XCJ0ZXN0NFwifSx7TmFtZTpcInRlc3Q1XCJ9LHtOYW1lOlwidGVzdDZcIn0se05hbWU6XCJ0ZXN0N1wifV0sXG5cdFx0XHR9XG5cdFx0fSxcblx0XHRvbkxvYWQob3B0aW9ucykge1xuXHRcdFx0Ly8gY29uc29sZS5sb2cob3B0aW9ucyk7XG5cdFx0XHR1bmkuc2V0TmF2aWdhdGlvbkJhclRpdGxlKHsgdGl0bGU6IG9wdGlvbnMudGl0bGVuYW1lfSk7IC8v6K6+572u6aG26YOo5qCH6aKYIFxuXHRcdFx0dmFyIHBhcmFtID0gSlNPTi5wYXJzZShvcHRpb25zLnBhcmFtKTtcblx0XHRcdHRoaXMuJGRhdGEudGl0bGUgPSBwYXJhbS5BZGRfQnRuTmFtZT9wYXJhbS5BZGRfQnRuTmFtZTpvcHRpb25zLnRpdGxlbmFtZTsgLy/orr7nva7mjInpkq7mloflrZdcblx0XHRcdC8vIGNvbnNvbGUubG9nKHBhcmFtKTtcblx0XHRcdGlmKCFwYXJhbS5FZGl0RGxnTW9kZSl7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuivpeWKn+iDveeCueacqumFjee9rue8lui+keeql+WPo++8jOivt+mHjeaWsOmFjee9ru+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZighcGFyYW0uRWRpdF9kbGcuTmFtZSl7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuivpeWKn+iDveeCueacqumFjee9rueql+WPo+agt+W8j++8jOivt+mHjeaWsOmFjee9ru+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR0aGlzLiRkYXRhLnBhcmFtID0gcGFyYW07XG5cdFx0XHR2YXIgZWRpdF9kbGcgPSB7XG5cdFx0XHQgICAgTW9kZWw6IHBhcmFtLkVkaXREbGdNb2RlLFxuXHRcdFx0ICAgIE5hbWU6IHBhcmFtLkVkaXRfZGxnLk5hbWVcblx0XHRcdH1cblx0XHRcdHZhciBkYXRhSW5mbyA9IHtcblx0XHRcdFx0Y2xhc3NfaWQ6IHBhcmFtLmNsc2lkXG5cdFx0XHR9O1xuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdCR0aGlzLiRzdG9yZS5zdGF0ZS50aGlzYXJlYUZ1bmNJRCA9IHBhcmFtLmNsc2lkO1xuXHRcdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Y2xhc3NBdHRyTGlzdCk7XG5cdFx0XHQgLy/ojrflj5Zcblx0XHRcdGlmKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzQXR0ckxpc3Qpe1xuXHRcdFx0IFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCA9ICR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzQXR0ckxpc3QuZGF0YTtcblx0XHRcdFx0JHRoaXMuY2xhc3NHcmlkU3R5bGVJbmZvKCk7XG5cdFx0XHR9ZWxzZVxuXHRcdFx0XHQkdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2NsYXNzQXR0ckxpc3QnLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9Pntcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlPT0nMDAwMDAnKSB7XG5cdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0ID0gc3VjY2Vzcy5kYXRhO1xuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHQkdGhpcy5jbGFzc0dyaWRTdHlsZUluZm8oKTtcblx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMVwiLGNvbnRlbnQ6c3VjY2Vzcy5tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KS5jYXRjaChleD0+e1xuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzEuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdFxuXHRcdH0sXG5cdFx0bWV0aG9kczoge1xuXHRcdFx0Y2FuY2VsKGUpe1xuXHRcdFx0XHR1bmkubmF2aWdhdGVCYWNrKHtcblx0XHRcdFx0XHRkZWx0YToxIC8v6L+U5Zue5bGC5pWw77yMMuWImeS4iuS4iumhtVxuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHRhc3luYyBjbGFzc0dyaWRTdHlsZUluZm8oKXtcblx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdFx0dmFyIGdyaWRzdHlsZUluZm8gPSB7XG5cdFx0XHRcdFx0Y2xhc3NfaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHRcdG5hbWU6ICR0aGlzLiRkYXRhLnBhcmFtLkVkaXRfZGxnLk5hbWUsXG5cdFx0XHRcdFx0dHlwZTogJzInXG5cdFx0XHRcdH07XG5cdFx0XHRcdCR0aGlzLiRzdG9yZS5zdGF0ZS50aGlzRWRpdE5hbWUgPSAkdGhpcy4kZGF0YS5wYXJhbS5FZGl0X2RsZy5OYW1lXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzR3JpZFN0eWxlSW5mbyk7XG5cdFx0XHRcdCAvL+iOt+WPllxuXHRcdFx0XHRpZigkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRjbGFzc0dyaWRTdHlsZUluZm8pe1xuXHRcdFx0XHQgXHQkdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZSA9ICR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzR3JpZFN0eWxlSW5mby5kYXRhO1xuXHRcdFx0XHRcdCR0aGlzLmNsYXNzX2F0dHJfaW5pdCgpO1xuXHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHQvL2NvbnNvbGUubG9nKGdyaWRzdHlsZUluZm8pO1xuXHRcdFx0XHRcdCR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnY2xhc3NHcmlkU3R5bGVJbmZvJyxncmlkc3R5bGVJbmZvKS50aGVuKHN1Y2Nlc3M9Pntcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xuXHRcdFx0XHRcdFx0XHRzdWNjZXNzLmRhdGEuU3R5bGVEZWYgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YS5TdHlsZURlZik7XG5cdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlID0gc3VjY2Vzcy5kYXRhO1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0JHRoaXMuY2xhc3NfYXR0cl9pbml0KCk7XG5cdFx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xLjJcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLmNhdGNoKGV4PT57XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzEuM1wiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0b250YXAoZSl7IC8v5omr56CB5Yqf6IO9XG5cdFx0XHRcdC8vY29uc29sZS5sb2coZS50YXJnZXQpXG5cdFx0XHRcdGdldEFwcCgpLm9uU2NhbigocmVzdWx0KT0+e1xuXHRcdFx0XHRcdC8vY29uc29sZS5sb2cocmVzdWx0LmRlY29kZWRhdGEpO1xuXHRcdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZT1yZXN1bHQuZGVjb2RlZGF0YTtcblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cdFx0XHRvbmFycm93KGluZGV4LG9wZW4pe1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhpbmRleCsnLS0nK29wZW4pO1xuXHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLk9wZW49b3Blbj09dHJ1ZT9mYWxzZTp0cnVlO1xuXHRcdFx0fSxcblx0XHRcdG9uZGF0ZVRpbWUoZSkge1xuXHRcdFx0XHQvL2NvbnNvbGUubG9nKGUudGFyZ2V0KVxuXHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9ZS50YXJnZXQudmFsdWU7XG5cdFx0XHR9LFxuXHRcdFx0b25jaGFuZ2UoZSkge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHRcdHZhciB2YWx1ZT10aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uZGljdGl0ZW1bZS50YXJnZXQudmFsdWVdO1xuXHRcdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dO1xuXHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhX2F0dHIpO1xuXHRcdFx0XHRpZiAodmFsdWUuTmFtZSAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9dmFsdWUuTmFtZTtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUpO1xuXHRcdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLmFjdGlvbjtcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHQgICAgICAgIC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcblx0XHRcdFx0ICAgICAgICB2YXIgcmVxPVtdO1xuXHRcdFx0XHQgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdCAgICAgICAgXHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdCAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0ICAgICAgICBcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0ICAgICAgICBcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xuXHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcblx0XHRcdFx0ICAgICAgICBcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcblx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZT8nMSc6JzAnfSk7XG5cdFx0XHRcdCAgICAgICAgXHRcdGVsc2Vcblx0XHRcdFx0ICAgICAgICBcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWUgP2FyLlZhbHVlIDonJ30pO1xuXHRcdFx0XHQgICAgICAgIFx0fVxuXHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcblx0XHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0ICAgICAgICAgICAgZWR0eXBlOiBcIjBcIixcblx0XHRcdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiAnJyxcblx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiAnJyxcblx0XHRcdFx0ICAgICAgICAgICAgcm9iamlkOiAnJyxcblx0XHRcdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXG5cdFx0XHRcdCAgICAgICAgICAgIG9iamlkOiBcIlwiLFxuXHRcdFx0XHQgICAgICAgICAgICBhdHRyOiByZXEsXG5cdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHQgICAgICAgIHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHQgICAgfVxuXHRcdFx0XHR9XG5cdFx0XHRcdFxuXHRcdFx0fSxcblx0XHRcdG9uY2hhbmdlMihpdGVtLHZhbHVlLGRlbHZhbHVlKSB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGl0ZW0pO1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyh2YWx1ZSk7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGRlbHZhbHVlKTtcblx0XHRcdFx0aWYoaXRlbS5sZW5ndGg9PTApeyAvL+S4uuepuuaXtu+8jOa4heepuuWxnuaAp3ZhbHVlXG5cdFx0XHRcdFx0dmFyIGluZGV4ICxpaW5kZXgsZGluZGV4PTA7XG5cdFx0XHRcdFx0Zm9yKHZhciBpIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCl7XG5cdFx0XHRcdFx0XHRmb3IodmFyIGogaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHIpe1xuXHRcdFx0XHRcdFx0XHRmb3IodmFyIGQgaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHJbal0uZGljdGl0ZW0pe1xuXHRcdFx0XHRcdFx0XHRcdGlmKGRlbHZhbHVlWzBdLk5hbWUgPT0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHJbal0uZGljdGl0ZW1bZF0uTmFtZSl7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cltqXS5WYWx1ZT1cIlwiO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRcdFxuXHRcdFx0XHRmb3IodmFyIHYgaW4gaXRlbSl7XG5cdFx0XHRcdFx0dmFyIGluZGV4ICxpaW5kZXgsZGluZGV4PTA7XG5cdFx0XHRcdFx0Zm9yKHZhciBpIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCl7XG5cdFx0XHRcdFx0XHRmb3IodmFyIGogaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHIpe1xuXHRcdFx0XHRcdFx0XHRmb3IodmFyIGQgaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHJbal0uZGljdGl0ZW0pe1xuXHRcdFx0XHRcdFx0XHRcdGlmKGl0ZW1bdl0uTmFtZSA9PSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cltqXS5kaWN0aXRlbVtkXS5OYW1lKXtcblx0XHRcdFx0XHRcdFx0XHRcdGluZGV4PWk7aWluZGV4PWo7ZGluZGV4PWQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhciBpdGVtdmFsdWUgPSBpdGVtW3ZdO1xuXHRcdFx0XHRcdHZhciBkYXRhX2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XTtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhX2F0dHIpO1xuXHRcdFx0XHRcdGlmIChpdGVtdmFsdWUuTmFtZSAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdLlZhbHVlPXZhbHVlO1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF0uVmFsdWUpO1xuXHRcdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5hY3Rpb247XG5cdFx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdCAgICAgICAgLy8gc2VsZi5ldmVudF9ub19zdWIgPSAxO1xuXHRcdFx0XHRcdCAgICAgICAgdmFyIHJlcT1bXTtcblx0XHRcdFx0XHQgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0XHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHQgICAgICAgIFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdCAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHQgICAgICAgIFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xuXHRcdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGU9PSflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbElEID9hci5WYWxJRCA6JycgfSk7XG5cdFx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlPycxJzonMCd9KTtcblx0XHRcdFx0XHQgICAgICAgIFx0XHRlbHNlIGlmKGFyLlR5cGU9PSflrZflhbgnIHx8IGFyLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGl0ZW12YWx1ZS5OYW1lfSk7XG5cdFx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZVxuXHRcdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcblx0XHRcdFx0XHQgICAgICAgIFx0fVxuXHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHQgICAgICAgICAgICBlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogJycsXG5cdFx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiAnJyxcblx0XHRcdFx0XHQgICAgICAgICAgICByb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXG5cdFx0XHRcdFx0ICAgICAgICAgICAgb2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogcmVxLFxuXHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdCAgICAgICAgdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdFx0ICAgIH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0XG5cdFx0XHRcdFxuXHRcdFx0fSxcblx0XHRcdG9uZXZlbnQoZSl7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcblx0XHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXTtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZGF0YV9hdHRyKTtcblx0XHRcdFx0aWYgKGUudGFyZ2V0LnZhbHVlICE9IGRhdGFfYXR0ci5WYWx1ZSkge1xuXHRcdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZT1lLnRhcmdldC52YWx1ZTtcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5hY3Rpb247XG5cdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0ICAgICAgICAvLyBzZWxmLmV2ZW50X25vX3N1YiA9IDE7XG5cdFx0XHRcdCAgICAgICAgdmFyIHJlcT1bXTtcblx0XHRcdFx0ICAgICAgICB2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XG5cdFx0XHRcdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHQgICAgICAgIFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHQgICAgICAgIFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdCAgICAgICAgXHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0aWYoYXIuVmFsdWU9PSfor7cnKSBhci5WYWx1ZT0nJztcblx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZT09J+W8leeUqOmhueebricpXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbElEID9hci5WYWxJRCA6JycgfSk7XG5cdFx0XHRcdCAgICAgICAgXHRcdGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWU/JzEnOicwJ30pO1xuXHRcdFx0XHQgICAgICAgIFx0XHRlbHNlXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcblx0XHRcdFx0ICAgICAgICBcdH1cblx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XG5cdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdCAgICAgICAgICAgIGVkdHlwZTogXCIwXCIsXG5cdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHJjbHNpZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcblx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogcmVxLFxuXHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0ICAgICAgICB0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBkYXRhX2F0dHIpO1xuXHRcdFx0XHQgICAgfVxuXHRcdFx0XHR9XG5cdFx0XHRcdFxuXHRcdFx0fSxcblx0XHRcdG9uY2hlY2soZSkge1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHRcdHZhciBpc2NoZWNrZWQgPSBlLnRhcmdldC5kYXRhc2V0LmlzY2hlY2s/ZmFsc2U6dHJ1ZTtcblx0XHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXTtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZGF0YV9hdHRyKTtcblx0XHRcdFx0aWYgKGlzY2hlY2tlZCAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9aXNjaGVja2VkO1xuXHRcdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLmFjdGlvbjtcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHQgICAgICAgIC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcblx0XHRcdFx0ICAgICAgICB2YXIgcmVxPVtdO1xuXHRcdFx0XHQgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdCAgICAgICAgXHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdCAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0ICAgICAgICBcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0ICAgICAgICBcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xuXHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcblx0XHRcdFx0ICAgICAgICBcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcblx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZT8nMSc6JzAnfSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcblx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0ICAgICAgICBcdH1cblx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XG5cdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdCAgICAgICAgICAgIGVkdHlwZTogXCIwXCIsXG5cdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHJjbHNpZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcblx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogcmVxLFxuXHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0ICAgICAgICB0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcblx0XHRcdFx0ICAgIH1cblx0XHRcdFx0fVxuXHRcdFx0XHRcblx0XHRcdH0sXG5cdFx0XHRpbnB1dFZhbExpc3RJc0RlbChpbmRleCl7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGluZGV4KTtcbiAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLmlucHV0VmFsTGlzdC5zcGxpY2UoaW5kZXgsIDEpOyAvL+WIoOmZpHRhYlBhZ2Vqc29u55qE5YaF5a65XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuaW5wdXRWYWxMaXN0KTtcblx0XHRcdH0sXG5cdFx0XHRhZGRyZXNzY2hhbmdlKGUpIHtcblx0XHRcdCAgICAvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHQgICAgY29uc29sZS5sb2coZS5kYXRhLmpvaW4oJzsnKSlcblx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlPWUuZGF0YS5qb2luKCc7Jyk7XG5cdFx0XHR9LFxuXHRcdFx0Y2xhc3NBdHRyX2V4dEJ1dHRvbihpbmRleCxpaW5kZXgpe1xuXHRcdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdFx0XHR2YXIgYmVmb3JlX2NsaWNrX2J1dHRvbiA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5iZWZvcmVfY2xpY2tfYnV0dG9uO1xuXHRcdFx0XHR2YXIgYnV0dG9uX2NhbGxiYWNrID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdLmJ1dHRvbl9jYWxsYmFjaztcblx0XHRcdFx0aWYoIWJlZm9yZV9jbGlja19idXR0b24pe1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcImJlZm9yZV9jbGlja19idXR0b24tZXZlbnRfaWTkuLrnqbrvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoIWJ1dHRvbl9jYWxsYmFjayl7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OlwiYnV0dG9uX2NhbGxiYWNrLWV2ZW50X2lk5Li656m677yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHZhciBkYXRhX2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XTtcblx0XHRcdFx0dGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnRfUmV0dXJuKGJlZm9yZV9jbGlja19idXR0b24sIGRhdGFfYXR0ciwgYnV0dG9uX2NhbGxiYWNrLCBpbmRleCxpaW5kZXgpO1xuXHRcdFx0fSxcblx0XHRcdGNsYXNzQXR0cl9BZGRQZXIoaW5kZXgsaWluZGV4KXtcblx0XHRcdFx0dmFyIHBhcmFtPXtpbmRleDppbmRleCxpaW5kZXg6aWluZGV4fTtcblx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdHVybDonLi4vc2VscHNuL2luZGV4P211bGl0PWZhbHNlJnBhcmFtPScrSlNPTi5zdHJpbmdpZnkocGFyYW0pLFxuXHRcdFx0XHRcdGV2ZW50czp7XG5cdFx0XHRcdFx0XHRBZGRQZXIoZGF0YSxwYXJhbSl7IFxuXHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhwYXJhbSk7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGRhdGEpO1xuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsdWU9ZGF0YVswXS5OYW1lO1xuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsSUQ9ZGF0YVswXS5Mb2dpbisnOycrZGF0YVswXS5OYW1lO1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uYWN0aW9uO1xuXHRcdFx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdFx0XHQgICAgZXZlbnRpZCA9IGV2ZW50aWQudHJpbSgpO1xuXHRcdFx0XHRcdFx0XHQgICAgaWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWR0eXBlOiBcIjRcIixcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICByY2xzaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiBkYXRhWzBdLkxvZ2luLFxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBjbHNpZDogJHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBhdHRyOiBbXSxcblx0XHRcdFx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRcdC8vIHZhciBkYXRhX2F0dHIgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF07XG5cdFx0XHRcdFx0XHRcdCAgICAgICAgJHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHRcdFx0XHQgICAgfVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHRjbGFzc0F0dHJfQWRkUmVmKGUpe1xuXHRcdFx0XHRjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuatpOWKn+iDvei/mOacquWunueOsO+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHQvLyB2YXIgdmFsdWU9dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlJlbENsc1tlLnRhcmdldC52YWx1ZV07XG5cdFx0XHRcdC8vIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZT12YWx1ZTtcblx0XHRcdH0sXG5cdFx0XHRjbGFzc0F0dHJfQWRkUHJqKGluZGV4LGlpbmRleCl7XG5cdFx0XHRcdHZhciBwYXJhbT17aW5kZXg6aW5kZXgsaWluZGV4OmlpbmRleH07XG5cdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHR1cmw6Jy4uL3NlbFByai9pbmRleD9yZWxhdGlvbj0tMSZwYXJhbT0nK0pTT04uc3RyaW5naWZ5KHBhcmFtKSxcblx0XHRcdFx0XHRldmVudHM6e1xuXHRcdFx0XHRcdFx0QWRkUGVyKGRhdGEscGFyYW0peyBcblx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2cocGFyYW0pO1xuXHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhkYXRhKTtcblx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbHVlPWRhdGFbMF0uTmFtZTtcblx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbElEPWRhdGFbMF0uSUQrJzsnK2RhdGFbMF0uTmFtZTtcblx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdHZhciBldmVudGlkID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLmFjdGlvbjtcblx0XHRcdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdFx0ICAgIGV2ZW50aWQgPSBldmVudGlkLnRyaW0oKTtcblx0XHRcdFx0XHRcdFx0ICAgIGlmIChldmVudGlkKSB7XG5cdFx0XHRcdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIGVkdHlwZTogXCIyXCIsXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogZGF0YVswXS5JRCxcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICByb2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogXCJcIixcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogW10sXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdCAgICAgICAgLy8gdmFyIGRhdGFfYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XTtcblx0XHRcdFx0XHRcdFx0ICAgICAgICAkdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdFx0XHRcdCAgICB9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdHNhdmEoKXtcblx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuZWRpdF9va19ldmVudClcblx0XHRcdFx0XHR0aGlzLk9LRGF0YU9ialJ1bkN1c3RvbUV2ZW50KCk7XG5cdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHR0aGlzLmFkZCgpO1xuXHRcdFx0fSxcblx0XHRcdGFkZCgpe1xuXHRcdFx0XHR1bmkuc2hvd0xvYWRpbmcoe1xuXHRcdFx0XHRcdHRpdGxlOlwi5Yqg6L295LitLi4uXCJcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHZhciByZXE9W107XG5cdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRpZihhci5WYWx1ZT09J+ivt+mAieaLqScgfHwgYXIuVmFsdWU9PSfigJTigJTor7fpgInmi6nigJTigJQnKSBhci5WYWx1ZT0nJztcblx0XHRcdFx0XHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdGlmKGFyLlZhbHVlPT0n6K+3JykgYXIuVmFsdWU9Jyc7XG5cdFx0XHRcdCAgICAgICAgaWYoYXIuVHlwZT09J+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZT09J+W8leeUqOmhueebricpXG5cdFx0XHRcdCAgICAgICAgXHRyZXEucHVzaCh7IG5hbWU6IGFyLk5hbWUsIHZhbHVlOiBhci5WYWxJRCA/YXIuVmFsSUQgOicnIH0pO1xuXHRcdFx0XHQgICAgICAgIGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgbmFtZTogYXIuTmFtZSwgdmFsdWU6IGFyLlZhbHVlPycxJzonMCd9KTtcblx0XHRcdFx0ICAgICAgICBlbHNlIGlmKGFyLlR5cGU9PSflrZflhbgnIHx8IGFyLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJyl7XG5cdFx0XHRcdFx0XHRcdGlmKGFyLnNlbGVjdD09dHJ1ZSl7IC8v5Yik5pat5LiL5ouJ5piv5ZCm5aSa6YCJXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHZhbFN0ciA9XCJcIjtcblx0XHRcdFx0XHRcdFx0XHRmb3IodmFyIHYgaW4gYXIuVmFsdWUpe1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYodmFsU3RyKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWxTdHIrPVwiO1wiO1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFsU3RyKz1hci5WYWx1ZVt2XTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogdmFsU3RyfSk7XG5cdFx0XHRcdFx0XHRcdH1lbHNlXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWV9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWUgP2FyLlZhbHVlIDonJ30pO1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdGlmICgoYXIuTm90RW1wdHkgPT0gJzEnIHx8IGFyLm5vdGVtcHR5ID09IHRydWUpICYmICFhci5WYWx1ZSkge1xuXHRcdFx0XHRcdFx0Ly8gaWYoYXIubm90RW1wdHk9PScxJyl7XG5cdFx0XHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHRcdFx0XHQvLyB1bmkuc2hvd1RvYXN0KHt0aXRsZTphci5EaXNwTmFtZSsn5LiN6IO95Li656m677yBJyxpY29uOlwic3VjY2Vzc1wiLGR1cmF0aW9uOjMwMDB9KTtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OmFyLkRpc3BOYW1lKyfkuI3og73kuLrnqbrvvIEnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHZhciBlbnZpcm9tZW50ID0ge1xuXHRcdFx0XHQgICAgICdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XG5cdFx0XHRcdCAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAgICAgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXG5cdFx0XHRcdCAgICAgJ2J1dHRvbic6ICd0b3AnLCAgIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0ICAgICBidXR0b25fbmFtZTogJ+aWsOWinicsXG5cdFx0XHRcdCAgICAgbWFzdGVyOiB7XG5cdFx0XHRcdCAgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgXG5cdFx0XHRcdCAgICAgfVxuXHRcdFx0XHR9O1xuXHRcdFx0XHQgXG5cdFx0XHRcdHZhciBkYXRhSW5mbz17XG5cdFx0XHRcdCAgICBjbGFzc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgZGF0YV9vYmpfaWQ6ICcnLCBtYXN0ZXJjbHNpZDogJycsXG5cdFx0XHRcdCAgICByZXE6IEpTT04uc3RyaW5naWZ5KHJlcSksIHVwZmlsZTogSlNPTi5zdHJpbmdpZnkoW10pLCBwb3N0X2RhdGE6IEpTT04uc3RyaW5naWZ5KHt9KSxcblx0XHRcdFx0ICAgIGNvbXBvc2U6IEpTT04uc3RyaW5naWZ5KFtdKSwgcmVmZGF0YXN0b3JlOiBKU09OLnN0cmluZ2lmeShbXSksIGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpLCBcblx0XHRcdFx0XHRub3RfdHJpZ2dlcl9zeXNfZXZlbnQ6ICcnXG5cdFx0XHRcdH07XG5cdFx0XHRcdFxuXHRcdFx0XHQvLyByZXR1cm5cblx0XHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnYWRkY2xhc3NhdHRyJyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xuXHRcdFx0XHRcdFx0dmFyIGFjdGlvbiA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhLkFjdGlvbik7XG5cdFx0XHRcdFx0XHRpZihhY3Rpb24ucmV0PT0nMCcpe1xuXHRcdFx0XHRcdFx0XHRpZihhY3Rpb24ucmVzdWx0X3R5cGU9PScwJyl7XG5cdFx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7dGl0bGU6YWN0aW9uLnJlc3VsdCxpY29uOlwic3VjY2Vzc1wiLGR1cmF0aW9uOjMwMDB9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQvLyBcIntcInJldFwiOjAsIFwicmVzdWx0X3R5cGVcIjowLCBcInJlc3VsdFwiOlwi5Yib5bu65oiQ5YqfMTIzMTIzMTIzXCIsXCJpbmZvXCI6XCJcIn1cIlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Ly/liLfmlrBcblx0XHRcdFx0XHRcdHVuaS5yZWRpcmVjdFRvKHtcblx0XHRcdFx0XHRcdFx0dXJsOicuLi9tb2RhbC9jbGFzc0F0dHI/cGFyYW09JytKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLnBhcmFtKStcIiZ0aXRsZW5hbWU9XCIrdGhpcy4kZGF0YS50aXRsZVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHQvLyB0aGlzLmNsYXNzX2F0dHJfaW5pdCgpO1xuXHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor69cIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSkuY2F0Y2goZXg9Pntcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0Y2xhc3NfYXR0cl9pbml0KCl7XG5cdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuc2hvd19zdHlsZVxuXHRcdFx0XHR2YXIgbmV3YXR0cmxpc3QgPSBbXTtcblx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdCAgICAgICAgdmFyIG9wZW4gPSBhdHRybGlzdFtpXS5vcGVuO1xuXHRcdFx0XHQgICAgICAgIHZhciBuYW1lID0gYXR0cmxpc3RbaV0uYXR0cmdyb3VwX25hbWU7XG5cdFx0XHRcdCAgICAgICAgdmFyIGF0dHJzID0gYXR0cmxpc3RbaV0uYXR0cnM7XG5cdFx0XHRcdCAgICAgICAgZm9yICh2YXIgcyA9IDA7IHMgPCB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBzKyspIHtcblx0XHRcdFx0ICAgICAgICAgICAgdmFyIGNsc2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Rbc107XG5cdFx0XHRcdCAgICAgICAgICAgIGlmIChuYW1lID09IGNsc2F0dHIuTmFtZSkge1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgdmFyIGF0dHIgPSBbXTtcblx0XHRcdFx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYXR0cnMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsID0gMDsgbCA8IGNsc2F0dHIuQXR0ci5sZW5ndGg7IGwrKykge1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2EgPSBjbHNhdHRyLkF0dHJbbF07XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyc1tqXS5hdHRyID09IGNhLk5hbWUpIHtcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmFjdGlvbiA9IGF0dHJzW2pdLmFjdGlvbjtcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmVkaXQgPSBhdHRyc1tqXS5lZGl0O1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Eubm90ZW1wdHkgPSBhdHRyc1tqXS5ub3RlbXB0eTtcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmV4dF9idXR0b24gPSBhdHRyc1tqXS5leHRfYnV0dG9uO1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuYnV0dG9uX2ltZyA9IGF0dHJzW2pdLmJ1dHRvbl9pbWc7XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5idXR0b25fdG9vbHRpcCA9IGF0dHJzW2pdLmJ1dHRvbl90b29sdGlwO1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuYmVmb3JlX2NsaWNrX2J1dHRvbiA9IGF0dHJzW2pdLmJlZm9yZV9jbGlja19idXR0b247XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5idXR0b25fY2FsbGJhY2sgPSBhdHRyc1tqXS5idXR0b25fY2FsbGJhY2s7XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5oaWRkZW4gPSBhdHRyc1tqXS5oaWRkZW47XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5zZWxlY3QgPSBhdHRyc1tqXS5zZWxlY3Q9PXVuZGVmaW5lZD9mYWxzZTphdHRyc1tqXS5zZWxlY3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPVwiXCI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuZGljdGl0ZW0pe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RpdGVtbGlzdD1bXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGQgPSAwOyBkIDwgY2EuZGljdGl0ZW0ubGVuZ3RoOyBkKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW1bZF0ubGFiZWw9Y2EuZGljdGl0ZW1bZF0uQ05fU19OQU1FO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5kaWN0aXRlbVtkXS52YWx1ZT1jYS5kaWN0aXRlbVtkXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5zZWxlY3QgPT0gdHJ1ZSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBbXTsvL2NhLmRpY3RpdGVtWzBdLkNOX1NfTkFNRTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gJ+ivt+mAieaLqSc7Ly9jYS5kaWN0aXRlbVswXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLlR5cGU9PSfml6XmnJ8nIHx8IGNhLlR5cGU9PSfml7bpl7QnKXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBub3dEYXRlID0gbmV3IERhdGUoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkYXRlID0ge3llYXI6IG5vd0RhdGUuZ2V0RnVsbFllYXIoKSxtb250aDogbm93RGF0ZS5nZXRNb250aCgpICsgMSxkYXk6IG5vd0RhdGUuZ2V0RGF0ZSgpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBkYXRlLnllYXIgKyAnLScgKyAoZGF0ZS5tb250aCA+PSAxMCA/IGRhdGUubW9udGggOiAnMCcgKyBkYXRlLm1vbnRoKSArICctJyArIChkYXRlLmRheSA+PSAxMCA/IGRhdGUuZGF5IDogJzAnICsgZGF0ZS5kYXkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByZWxDbHNMaXN0PVtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHJfcmVzY2xzID0gY2EuUmVsQ2xzLnNwbGl0KCcsJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IodmFyIGlpIGluIGF0dHJfcmVzY2xzKXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJlc2NscyA9IGF0dHJfcmVzY2xzW2lpXS5zcGxpdCgnfCcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZWxDbHNMaXN0LnB1c2goe2lkOnJlc2Nsc1swXSxuYW1lOnJlc2Nsc1sxXX0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuUmVsQ2xzTGlzdCA9IHJlbENsc0xpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9ICfor7cnO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5UeXBlPT0n55yB5biC5Yy6Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gJ+ivt+mAieaLqSc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuVHlwZT09J+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLnB1c2goY2EpO1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB9XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgfVxuXHRcdFx0XHQgICAgICAgICAgICAgICAgfVxuXHRcdFx0XHQgICAgICAgICAgICAgICAgbmV3YXR0cmxpc3QucHVzaCh7XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgQmtDb2xvcjogY2xzYXR0ci5Ca0NvbG9yLFxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIEhhc0FjZTogY2xzYXR0ci5IYXNBY2UsXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgSW1nRm9udFN0eWxlOiBjbHNhdHRyLkltZ0ZvbnRTdHlsZSxcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBOYW1lOiBjbHNhdHRyLk5hbWUsXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgT3JkZXI6IGNsc2F0dHIuT3JkZXIsXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgT3Blbjogb3Blbixcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBBdHRyOiBhdHRyLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29udHJvbF9zdHlsZTp0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLmNvbnRyb2xfc3R5bGUsXG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZV9wX3dkaXRoOnRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYudGl0bGVfcF93ZGl0aFxuXHRcdFx0XHQgICAgICAgICAgICAgICAgfSlcblx0XHRcdFx0ICAgICAgICAgICAgfVxuXHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0ICAgIH1cblx0XHRcdFx0ICAgIGlmIChuZXdhdHRybGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdCAgICAgICAgdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0ID0gbmV3YXR0cmxpc3Q7XG5cdFx0XHRcdCAgICB9XG5cdFx0XHRcdFx0dmFyIHJlcT1bXTtcblx0XHRcdFx0ICAgIGlmICh0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmKSB7XG5cdFx0XHRcdCAgICAgICAgIGlmICh0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHQgICAgICAgICAgICB2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGVcblx0XHRcdFx0ICAgICAgICAgICAgLy8gJGVsLmZpbmQoJy5hdHRyX2ZpZWxkJykucHJvcCgncmVhZG9ubHknLCB0cnVlKTtcblx0XHRcdFx0ICAgICAgICAgICAgLy8gJGVsLmZpbmQoJy5hdHRyX2ZpZWxkJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTtcblx0XHRcdFx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgdmFyIGF0dHIgPSBhdHRybGlzdFtpXS5hdHRyc1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgdmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuYXR0ciwgdmFsOiBhci52YWx1ZT9hci52YWx1ZTonJyB9KTtcblx0XHRcdFx0ICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0ICAgICAgICAgICAgfVxuXHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0XHR9XHRcblx0XHRcdFx0XHRcblx0XHRcdFx0XHR2YXIgZXZlbnRsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5ldmVudDtcblx0XHRcdFx0XHRpZiAoZXZlbnRsaXN0KSB7XG5cdFx0XHRcdFx0ICAgIGlmIChldmVudGxpc3QubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudGxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHQgICAgICAgICAgICBpZiAoZXZlbnRsaXN0W2ldLmV2ZW50X2lkID09ICdiZWZvcmVfb2snKSB7XG5cdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEuZWRpdF9va19ldmVudCA9IGV2ZW50bGlzdFtpXTtcblx0XHRcdFx0XHQgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50bGlzdFtpXS5ldmVudF9pZCA9PSAnaW5pdGlhbCcpIHtcblx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5lZGl0X2luaXRhbF9ldmVudCA9IGV2ZW50bGlzdFtpXTtcblx0XHRcdFx0XHQgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50bGlzdFtpXS5ldmVudF9pZCA9PSAnYmVmb3JlX3NlbGVjdF9jb21wb3NlJykge1xuXHRcdFx0XHRcdCAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLmVkaXRfc2VsZWN0X2NvbXBvc2VfZXZlbnQgPSBldmVudGxpc3RbaV0uc2NyaXBfaWQ7XG5cdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEuZWRpdF9jb21wb3NlX2Nsc19pZCA9IGV2ZW50bGlzdFtpXS5jb21wb3NlX2Nsc19pZDtcblx0XHRcdFx0XHQgICAgICAgICAgICB9XG5cdFx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcSk7XG5cdFx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuZWRpdF9pbml0YWxfZXZlbnQpIHtcblx0XHRcdFx0XHQgICAgdmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmVkaXRfaW5pdGFsX2V2ZW50LnNjcmlwX2lkO1xuXHRcdFx0XHRcdCAgICB2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHQgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0ICAgICAgICBlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdCAgICAgICAgcHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHQgICAgICAgIHJjbHNpZDogJycsXG5cdFx0XHRcdFx0ICAgICAgICByb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdCAgICAgICAgdXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHQgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHRcdCAgICAgICAgb2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0ICAgICAgICBhdHRyOiByZXEsXG5cdFx0XHRcdFx0ICAgIH1cblx0XHRcdFx0XHQgICAgdGhpcy5pbmlfRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlKTtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QpO1xuXHRcdFx0XHRcdFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuacquaJvuWIsOWPr+aYvuekuueahOeahOWxnuaAp1wiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0aW5pX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKXtcblx0XHRcdFx0dmFyIHBhcmFtID0ge1xuXHRcdFx0XHQgICAgRWRpdFN0eWxlOiB0aGlzLiRkYXRhLnBhcmFtLkVkaXRfZGxnLk5hbWUsXG5cdFx0XHRcdCAgICBWaWV3U3R5bGU6IHRoaXMuJGRhdGEucGFyYW0uRWRpdF9kbGcuTmFtZSxcblx0XHRcdFx0ICAgIE5vdFRyaWdnZXJTeXNFdmVudDogMCxcblx0XHRcdFx0ICAgIGVudmlyb21lbnQ6IHtcblx0XHRcdFx0ICAgICAgICAnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xuXHRcdFx0XHQgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgICAgIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxuXHRcdFx0XHQgICAgICAgICdidXR0b24nOiAndG9wJywgICAvLyB0b3AvYm90dG9tXG5cdFx0XHRcdCAgICAgICAgYnV0dG9uX25hbWU6ICfmlrDlop4nLFxuXHRcdFx0XHQgICAgICAgIG1hc3Rlcjoge1xuXHRcdFx0XHQgICAgICAgICAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXG5cdFx0XHRcdCAgICAgICAgICAgIC8vb2JqX2lkOiAnJyAgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRvYmpfaWRcblx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdCAgICB9XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIGlucHV0cGFyYW1ldGVyID0gJyc7XG5cdFx0XHRcdHZhciBnbG9iYWxfYXR0ciA9ICcnO1xuXHRcdFx0XHRcblx0XHRcdFx0dmFyIGRhdGFJbmZvID0ge1xuICAgICAgICAgICAgICAgICAgICBlZHR5cGU6IGluZm8uZWR0eXBlLCBldmVudGlkOiBpbmZvLmV2ZW50aWQsIHByb2plY3RpZDogaW5mby5wcm9qZWN0aWQsXG4gICAgICAgICAgICAgICAgICAgIHJjbHNpZDogaW5mby5yY2xzaWQsIHJvYmppZDogaW5mby5yb2JqaWQsIHVzZXJsb2dpbjogaW5mby51c2VybG9naW4sIGNsc2lkOiBpbmZvLmNsc2lkLCBvYmppZDogaW5mby5vYmppZCxcbiAgICAgICAgICAgICAgICAgICAgYXR0cjogSlNPTi5zdHJpbmdpZnkoaW5mby5hdHRyKSwgZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkocGFyYW0pLCBpbnB1dHBhcmFtZXRlcjogaW5wdXRwYXJhbWV0ZXIsIGdsb2JhbF9hdHRyOiBnbG9iYWxfYXR0clxuICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbycsZGF0YUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcblx0XHRcdFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1xuXHRcdFx0XHRcdFx0dmFyIGFjdGlvbmxpc3QgPSBkYXRhLmFjdGlvbjtcblx0XHRcdFx0XHRcdGlmIChhY3Rpb25saXN0KSB7XG5cdFx0XHRcdFx0XHQgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhY3Rpb25saXN0Lmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHQgICAgICAgIHZhciBhY3Rpb24gPSBhY3Rpb25saXN0W2pdXG5cdFx0XHRcdFx0XHQgICAgICAgIHZhciBhY3Rpb25fdHlwZSA9IGFjdGlvbi5hY3Rpb25fdHlwZTtcblx0XHRcdFx0XHRcdCAgICAgICAgdmFyIHZhbHVlID0gYWN0aW9uLnZhbHVlO1xuXHRcdFx0XHRcdFx0ICAgICAgICBpZiAoYWN0aW9uX3R5cGUgPT0gJ3NldF9kbGdfYXR0cicpIHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHZhciB2YWwgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIHZhbCA9IEpTT04ucGFyc2UodmFsdWUpO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2codmFsKTtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGEgPSAwOyBhIDwgdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBsID0gMDsgbCA8IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFthXS5BdHRyLmxlbmd0aDsgbCsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBjYSA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFthXS5BdHRyW2xdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodmFsW2ldLmF0dHIgID09IGNhLk5hbWUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5UeXBlPT0n5a2X5YW4JyB8fCBjYS5UeXBlPT0n5a2X5YW4LeWtl+espuS4sicpe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RJdGVtTGlzdD1bXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvcih2YXIgZCBpbiB2YWxbaV0uY2hvaWNlX2xpc3Qpe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsID12YWxbaV0uY2hvaWNlX2xpc3RbZF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpY3RJdGVtTGlzdC5wdXNoKHtcIkNOX1NfTkFNRVwiOnZhbCxcIk5hbWVcIjp2YWwsXCJsYWJlbFwiOnZhbCxcInZhbHVlXCI6dmFsfSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW0gPSBkaWN0SXRlbUxpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhdHRyW2pdLmRpY3RpdGVtID0gdmFsW2ldLmNob2ljZV9saXN0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gY2EudmFsdWUgPSB2YWxbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICB2YXIgbGVuZ3RoID0gMDtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWxbaV0uYXR0ciA9PSBzLmF0dHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgfSkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAxO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaCh2YWxbaV0pO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICB9XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gMCkge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHZhbFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gdmFsW2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgfVxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICAgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdFx0ICAgICAgICBpZiAoYWN0aW9uX3R5cGUgPT0gJ29wZW5fc2VsZWN0X3VzZXJkbGcnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzIuMlwiLGNvbnRlbnQ6XCJvcGVuX3NlbGVjdF91c2VyZGxn6L+Z5LiqYWN0aW9uX3R5cGXov5jmnKrlpITnkIbvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdFx0ICAgIH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68yXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLmNhdGNoKGV4PT57XG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMi4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHQgICAgRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sZGF0YV9hdHRyKXtcblx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHQgICAgXHR2YXIgZW52aXJvbWVudCA9IHtcblx0XHQgICAgXHQgICAgJ2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcblx0XHQgICAgXHQgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAgICAgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXG5cdFx0ICAgIFx0ICAgICdidXR0b24nOiAndG9wJywgICAvLyB0b3AvYm90dG9tXG5cdFx0ICAgIFx0ICAgIGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcblx0XHQgICAgXHQgICAgbWFzdGVyOiB7XG5cdFx0ICAgIFx0ICAgICAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXG5cdFx0ICAgIFx0ICAgICAgICAvL29ial9pZDogJycgIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEb2JqX2lkXG5cdFx0ICAgIFx0ICAgIH1cblx0XHQgICAgXHR9O1xuXHRcdCAgICBcdGlmKGRhdGFfYXR0cil7XG5cdFx0XHRcdFx0ZW52aXJvbWVudC5lZGl0X2RsZyA9IHtcblx0XHRcdFx0XHQgICAgdHlwZTogJ3NtYWxsJywvL+Wwj+eql+WPo1xuXHRcdFx0XHRcdCAgICBjbGFzc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwvL+W9k+WJjeaVsOaNruexu2lkXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChkYXRhX2F0dHIpIHtcblx0XHRcdFx0XHQgICAgZW52aXJvbWVudC5lZGl0X2RsZy5mb3JtX2NvbnRyb2wgPSB7Ly/miYDlsZ7nmoTooajljZXmjqfku7Zcblx0XHRcdFx0XHQgICAgICAgIG5hbWU6IGRhdGFfYXR0ci5OYW1lLC8v5a2X5q615bGe5oCnXG5cdFx0XHRcdFx0ICAgICAgICB0ZXh0OiBkYXRhX2F0dHIuRGlzcE5hbWUsLy/mmL7npLrmlofmnKxcblx0XHRcdFx0XHQgICAgICAgIGdyb3VwX25hbWU6IGRhdGFfYXR0ci5Hcm91cE5hbWUsLy/lsZ7mgKfnu4Rcblx0XHRcdFx0XHQgICAgICAgIHR5cGU6IGRhdGFfYXR0ci5UeXBlLC8v5a2X5q6157G75Z6LXG5cdFx0XHRcdFx0ICAgICAgICByZWFkb25seTogZGF0YV9hdHRyLlJlYWRPbmx5LC8v5piv5ZCm5Y+q6K+7XG5cdFx0XHRcdFx0ICAgICAgICBidXR0b25faW1nOiBkYXRhX2F0dHIuYnV0dG9uX2ltZywvL+W8leeUqOaMiemSrueahOWbvuagh1xuXHRcdFx0XHRcdCAgICAgICAgYnV0dG9uX3Rvb2x0aXA6IGRhdGFfYXR0ci5idXR0b25fdG9vbHRpcC8v5byV55So5oyJ6ZKu55qEdG9vbHRpcFxuXHRcdFx0XHRcdCAgICB9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0ICAgIFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdCAgICAgICAgICAgIGVkdHlwZTogaW5mby5lZHR5cGUsIGV2ZW50aWQ6IGluZm8uZXZlbnRpZCwgcHJvamVjdGlkOiBpbmZvLnByb2plY3RpZC5yZXBsYWNlKCd7JywnJykucmVwbGFjZSgnfScsJycpLFxuXHRcdCAgICAgICAgICAgIHJjbHNpZDogaW5mby5yY2xzaWQsIHJvYmppZDogaW5mby5yb2JqaWQsIHVzZXJsb2dpbjogaW5mby51c2VybG9naW4sIGNsc2lkOiBpbmZvLmNsc2lkLCBvYmppZDogaW5mby5vYmppZCxcblx0XHQgICAgICAgICAgICBhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLCBleHRpbmZvOiBKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KSwgaW5wdXRwYXJhbWV0ZXI6ICcnLCBnbG9iYWxfYXR0cjogSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5nbG9iYWxfYXR0cilcblx0XHQgICAgICAgIH1cblx0XHQgICAgXHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XG5cdFx0ICAgIFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9Pntcblx0XHQgICAgXHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdCAgICBcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xuXHRcdFx0XHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XG5cdFx0ICAgIFx0XHRcdHZhciBhY3Rpb25saXN0ID0gZGF0YS5hY3Rpb247XG5cdFx0XHRcdFx0XHRcdFx0XHRcblx0XHQgICAgXHRcdFx0aWYgKGFjdGlvbmxpc3QpIHtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYWN0aW9ubGlzdCk7XG5cdFx0ICAgIFx0XHRcdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjdGlvbmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHQgICAgXHRcdFx0ICAgICAgICB2YXIgYWN0aW9uID0gYWN0aW9ubGlzdFtpXTtcblx0XHQgICAgXHRcdFx0ICAgICAgICBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdzZXRfZGxnX2F0dHInKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIHZhciByZXN1bHQgPSBhY3Rpb24udmFsdWU7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdFtpXS5jaG9pY2VfbGlzdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGg7IGMrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2NdLkF0dHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoYXR0cltqXS5OYW1lPT1yZXN1bHRbaV0uYXR0cil7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoYXR0cltqXS5UeXBlPT0n5a2X5YW4JyB8fCBhdHRyW2pdLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJyl7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGljdEl0ZW1MaXN0PVtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yKHZhciBkIGluIHJlc3VsdFtpXS5jaG9pY2VfbGlzdCl7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciB2YWwgPXJlc3VsdFtpXS5jaG9pY2VfbGlzdFtkXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1wiQ05fU19OQU1FXCI6dmFsLFwiTmFtZVwiOnZhbCxcImxhYmVsXCI6dmFsLFwidmFsdWVcIjp2YWx9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHJbal0uZGljdGl0ZW0gPSBkaWN0SXRlbUxpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhdHRyW2pdLmRpY3RpdGVtID0gcmVzdWx0W2ldLmNob2ljZV9saXN0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH1cblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGg7IGMrKykge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbY10uQXR0cjtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhdHRyW2pdLk5hbWUrJz09JytyZXN1bHRbaV0uYXR0cik7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdFx0aWYoYXR0cltqXS5OYW1lPT1yZXN1bHRbaV0uYXR0cil7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdFx0XHRhdHRyW2pdLlZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHRcdH1cblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIFx0fVxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbGVuZ3RoID0gMDtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIGlmICghJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbiAocykge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH0pLmxlbmd0aCkge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IDE7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH1cblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gMCkge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0uYXR0ciA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB9XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICB9XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfSBlbHNlIGlmIChkYXRhLmFjdGlvbltpXS5hY3Rpb25fdHlwZSA9PSAnc2V0X2dsb2JhbF9hdHRyJykge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgJHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIgPSBkYXRhLmFjdGlvbltpXS52YWx1ZSB8fCBbXTtcblx0XHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgfVxuXHRcdCAgICBcdFx0XHR9XG5cdFx0ICAgIFx0XHRcdFxuXHRcdCAgICBcdFx0XHRpZiAoZGF0YS5yZXN1bHQpIHtcblx0XHQgICAgXHRcdFx0ICAgIHZhciByZXN1bHQgPSBkYXRhLnJlc3VsdDtcblx0XHQgICAgXHRcdFx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYysrKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgXHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbY10uQXR0cjtcblx0XHQgICAgXHRcdFx0ICAgICAgICBcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdCAgICBcdFx0XHQgICAgICAgIFx0XHRpZihhdHRyW2pdLk5hbWU9PXJlc3VsdFtpXS5hdHRyKXtcblx0XHQgICAgXHRcdFx0ICAgICAgICBcdFx0XHRhdHRyW2pdLlZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdCAgICBcdFx0XHQgICAgICAgIFx0XHR9XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgXHR9XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xuXHRcdCAgICBcdFx0XHQgICAgICAgIGlmICghJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbiAocykge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICByZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfSkubGVuZ3RoKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIGxlbmd0aCA9IDE7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgICAgIGlmIChsZW5ndGggPT0gMCkge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgaWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICB9XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgfVxuXHRcdCAgICBcdFx0XHR9XG5cdFx0ICAgIFx0XHR9ZWxzZXtcblx0XHQgICAgXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68zXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHQgICAgXHRcdH1cblx0XHQgICAgXHR9KS5jYXRjaChleD0+e1xuXHRcdCAgICBcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdCAgICBcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68zLjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHQgICAgXHR9KTtcblx0XHQgICAgfSxcblx0XHRcdE9LRGF0YU9ialJ1bkN1c3RvbUV2ZW50KCl7XG5cdFx0ICAgIFx0dmFyIGVudmlyb21lbnQgPSB7XG5cdFx0XHRcdCAgICAnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xuXHRcdFx0XHQgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAgICAgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXG5cdFx0XHRcdCAgICAnYnV0dG9uJzogJ3RvcCcsICAgLy8gdG9wL2JvdHRvbVxuXHRcdFx0XHQgICAgYnV0dG9uX25hbWU6ICfmlrDlop4nLFxuXHRcdFx0XHQgICAgbWFzdGVyOiB7XG5cdFx0XHRcdCAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahGNsc19pZFxuXHRcdFx0XHQgICAgICAgIFxuXHRcdFx0XHQgICAgfVxuXHRcdFx0XHR9O1xuXHRcdCAgICBcdFxuXHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuZWRpdF9va19ldmVudC5zY3JpcF9pZDtcblx0XHRcdFx0dmFyIHJlcT1bXTtcblx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdGlmKGFyLlZhbHVlPT0n6K+36YCJ5oupJyB8fCBhci5WYWx1ZT09J+KAlOKAlOivt+mAieaLqeKAlOKAlCcpIGFyLlZhbHVlPScnO1xuXHRcdFx0XHRcdFx0aWYoYXIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0aWYoYXIuVmFsdWU9PSfor7cnKSBhci5WYWx1ZT0nJztcblx0XHRcdFx0ICAgICAgICBpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcblx0XHRcdFx0ICAgICAgICBcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWxJRCA/YXIuVmFsSUQgOicnIH0pO1xuXHRcdFx0XHQgICAgICAgIGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZT8nMSc6JzAnfSk7XG5cdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZSB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0XG5cdFx0ICAgIFx0aWYgKHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aCA+IDApIHtcblx0XHQgICAgXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGkrKykge1xuXHRcdCAgICBcdCAgICAgICAgaWYgKCFyZXEuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XG5cdFx0ICAgIFx0ICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLmF0dHIgPT0gcy5uYW1lXG5cdFx0ICAgIFx0ICAgICAgICB9KS5sZW5ndGgpIHtcblx0XHQgICAgXHQgICAgICAgICAgICBsZW5ndGggPSAxO1xuXHRcdCAgICBcdCAgICAgICAgICAgIHJlcS5wdXNoKHsgJ2F0dHInOiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS5hdHRyLCAndmFsJzogdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0udmFsdWUgfSk7XG5cdFx0ICAgIFx0ICAgICAgICB9XG5cdFx0ICAgIFx0ICAgIH1cblx0XHQgICAgXHR9XG5cdFx0ICAgIFx0dmFyIGluZm8gPSB7XG5cdFx0ICAgIFx0ICAgIGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0ICAgIFx0ICAgIGVkdHlwZTogXCIwXCIsXG5cdFx0ICAgIFx0ICAgIHByb2plY3RpZDogJycsXG5cdFx0ICAgIFx0ICAgIHJjbHNpZDogJycsXG5cdFx0ICAgIFx0ICAgIHJvYmppZDogJycsXG5cdFx0ICAgIFx0ICAgIHVzZXJsb2dpbjogJycsXG5cdFx0ICAgIFx0ICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdCAgICBcdCAgICBvYmppZDogXCJcIixcblx0XHQgICAgXHQgICAgYXR0cjogcmVxLFxuXHRcdCAgICBcdH1cblx0XHQgICAgXHR2YXIgZGF0YUluZm8gPSB7XG5cdFx0ICAgICAgICAgICAgZWR0eXBlOiBpbmZvLmVkdHlwZSwgZXZlbnRpZDogaW5mby5ldmVudGlkLCBwcm9qZWN0aWQ6IGluZm8ucHJvamVjdGlkLHJjbHNpZDogaW5mby5yY2xzaWQsIFxuXHRcdFx0XHRcdHJvYmppZDogaW5mby5yb2JqaWQsIHVzZXJsb2dpbjogaW5mby51c2VybG9naW4sIGNsc2lkOiBpbmZvLmNsc2lkLCBvYmppZDogaW5mby5vYmppZCxcblx0XHRcdFx0XHRhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLCBleHRpbmZvOiBKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KSwgZ2xvYmFsX2F0dHI6IEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpXG5cdFx0ICAgICAgICB9XG5cdFx0ICAgIFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdCAgICBcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XG5cdFx0ICAgIFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHQgICAgXHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcblx0XHRcdFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1x0XHRcblx0XHQgICAgXHRcdFx0dmFyIHJlc3VsdCA9IGRhdGEucmVzdWx0O1xuXHRcdCAgICBcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xuXHRcdCAgICBcdFx0XHQgICAgLy8gc2VsZi5jbGFzc19hdHRyX2VsZS5maW5kKCcuYXR0cl9maWVsZFtkYXRhLWZpZWxkPVwiJyArIHJlc3VsdFtpXS5hdHRyICsgJ1wiXScpLnZhbChyZXN1bHRbaV0udmFsdWUpLmRhdGEoJ3ZhbCcsIHJlc3VsdFtpXS52YWx1ZSk7XG5cdFx0ICAgIFx0XHRcdCAgICB2YXIgbGVuZ3RoID0gMDtcblx0XHQgICAgXHRcdFx0ICAgIGlmICghdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgcmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxuXHRcdCAgICBcdFx0XHQgICAgfSkubGVuZ3RoKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgbGVuZ3RoID0gMTtcblx0XHQgICAgXHRcdFx0ICAgICAgICB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XG5cdFx0ICAgIFx0XHRcdCAgICB9XG5cdFx0ICAgIFx0XHRcdCAgICBpZiAobGVuZ3RoID09IDApIHtcblx0XHQgICAgXHRcdFx0ICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIGlmICh0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgICAgIH1cblx0XHQgICAgXHRcdFx0ICAgIH1cblx0XHQgICAgXHRcdFx0fVxuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHR0aGlzLmFkZCgpO1xuXHRcdCAgICBcdFx0fWVsc2V7XG5cdFx0ICAgIFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNFwiLGNvbnRlbnQ6c3VjY2Vzcy5tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0ICAgIFx0XHR9XG5cdFx0ICAgIFx0fSkuY2F0Y2goZXg9Pntcblx0XHQgICAgXHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHQgICAgXHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNC4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0ICAgIFx0fSk7XG5cdFx0ICAgIH0sXG5cdFx0ICAgIERhdGFPYmpSdW5DdXN0b21FdmVudF9SZXR1cm4oZXZlbnRpZCxkYXRhX2F0dHIsYnV0dG9uX2NhbGxiYWNrLGluZGV4LGlpbmRleCl7XG5cdFx0XHRcdHZhciBlbnZpcm9tZW50ID0ge1xuXHRcdFx0XHQgICAgJ2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcblx0XHRcdFx0ICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgICAgIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxuXHRcdFx0XHQgICAgJ2J1dHRvbic6ICd0b3AnLCAgIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0ICAgIGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcblx0XHRcdFx0ICAgIG1hc3Rlcjoge1xuXHRcdFx0XHQgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRjbHNfaWRcblx0XHRcdFx0ICAgICAgICAvL29ial9pZDogJycgIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEb2JqX2lkXG5cdFx0XHRcdCAgICB9XG5cdFx0XHRcdH07XG5cdFx0XHRcdHZhciByZXE9W107XG5cdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRpZihhci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xuXHRcdFx0XHQgICAgICAgIGlmKGFyLlR5cGU9PSflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGU9PSflvJXnlKjpobnnm64nKVxuXHRcdFx0XHQgICAgICAgIFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbElEID9hci5WYWxJRCA6JycgfSk7XG5cdFx0XHRcdCAgICAgICAgZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlPycxJzonMCd9KTtcblx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHQgICAgICAgIGlmICghcmVxLmZpbHRlcihmdW5jdGlvbiAocykge1xuXHRcdFx0XHQgICAgICAgICAgICByZXR1cm4gdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0uYXR0ciA9PSBzLm5hbWVcblx0XHRcdFx0ICAgICAgICB9KS5sZW5ndGgpIHtcblx0XHRcdFx0ICAgICAgICAgICAgbGVuZ3RoID0gMTtcblx0XHRcdFx0ICAgICAgICAgICAgcmVxLnB1c2goeyAnYXR0cic6IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLmF0dHIsICd2YWwnOiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS52YWx1ZSB9KTtcblx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdCAgICB9XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIGV4dGluZm8gPSBlbnZpcm9tZW50O1xuXHRcdFx0XHRleHRpbmZvLmVkaXRfZGxnID0ge1xuXHRcdFx0XHQgICAgdHlwZTogJ3NtYWxsJywvL+Wwj+eql+WPo1xuXHRcdFx0XHQgICAgY2xhc3NfaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsLy/lvZPliY3mlbDmja7nsbtpZFxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhX2F0dHIpIHtcblx0XHRcdFx0ICAgIGV4dGluZm8uZWRpdF9kbGcuZm9ybV9jb250cm9sID0gey8v5omA5bGe55qE6KGo5Y2V5o6n5Lu2XG5cdFx0XHRcdCAgICAgICAgbmFtZTogZGF0YV9hdHRyLk5hbWUsLy/lrZfmrrXlsZ7mgKdcblx0XHRcdFx0ICAgICAgICB0ZXh0OiBkYXRhX2F0dHIuRGlzcE5hbWUsLy/mmL7npLrmlofmnKxcblx0XHRcdFx0ICAgICAgICBncm91cF9uYW1lOiBkYXRhX2F0dHIuR3JvdXBOYW1lLC8v5bGe5oCn57uEXG5cdFx0XHRcdCAgICAgICAgdHlwZTogZGF0YV9hdHRyLlR5cGUsLy/lrZfmrrXnsbvlnotcblx0XHRcdFx0ICAgICAgICByZWFkb25seTogZGF0YV9hdHRyLlJlYWRPbmx5LC8v5piv5ZCm5Y+q6K+7XG5cdFx0XHRcdCAgICAgICAgYnV0dG9uX2ltZzogZGF0YV9hdHRyLmJ1dHRvbl9pbWcsLy/lvJXnlKjmjInpkq7nmoTlm77moIdcblx0XHRcdFx0ICAgICAgICBidXR0b25fdG9vbHRpcDogZGF0YV9hdHRyLmJ1dHRvbl90b29sdGlwLy/lvJXnlKjmjInpkq7nmoR0b29sdGlwXG5cdFx0XHRcdCAgICB9XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdFx0XHRcdGVkdHlwZTogIFwiMFwiLCBldmVudGlkOiBldmVudGlkLCBwcm9qZWN0aWQ6ICcnLHJjbHNpZDogJycsIHJvYmppZDogJycsIHVzZXJsb2dpbjogJycsIFxuXHRcdFx0XHRcdGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCBvYmppZDogJycsYXR0cjogSlNPTi5zdHJpbmdpZnkocmVxKSwgXG5cdFx0XHRcdFx0ZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkoZXh0aW5mbyksIGdsb2JhbF9hdHRyOiBKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLmdsb2JhbF9hdHRyKVxuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcblx0XHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9Pntcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlPT0nMDAwMDAnKSB7XG5cdFx0XHRcdFx0XHR2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhKTtcblx0XHRcdFx0XHRcdGlmIChkYXRhICE9IFwiXCIpIHtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdHZhciBhY3Rpb25zID0gZGF0YS5hY3Rpb247XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhY3Rpb25zKTtcblx0XHRcdFx0XHRcdGlmIChhY3Rpb25zKSB7XG5cdFx0XHRcdFx0XHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHQgICAgICAgIHZhciBhY3Rpb24gPSBhY3Rpb25zW2ldO1xuXHRcdFx0XHRcdFx0ICAgICAgICB2YXIgdmFsID0gYWN0aW9uLnZhbHVlO1xuXHRcdFx0XHRcdFx0ICAgICAgICB2YXIgZW52aXJvbWVudCA9IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpO1xuXHRcdFx0XHRcdFx0ICAgICAgICBcblx0XHRcdFx0XHRcdCAgICAgICAgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9wYW5lbCcpIHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgdmFyIGQgPSBkaWFsb2coe1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgdGl0bGU6ICc8aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLWluZm8tY2lyY2xlXCI+PC9pPiAnICsgJ+aPkOekuicsXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICBjb250ZW50OiBhY3Rpb24uYWN0aW9uX3R5cGUgKyAn5q2kYWN0aW9u5bCa5pyq5aSE55CG77yBJ1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICB9KTtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgZC5zaG93KCk7XG5cdFx0XHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX3NlbGVjdF91c2VyZGxnJykge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgdmFyIHN0eWxlID0gdmFsLnN0eWxlO1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gc3R5bGUgPT0gJ3VzZXInID8gJ+mAieaLqeS6uuWRmCcgOiBzdHlsZSA9PSAnZGVwYXJ0bWVudCcgPyAn6YCJ5oup6YOo6ZeoJyA6IHN0eWxlID09ICdyb2xlJyA/ICfpgInmi6nop5LoibInIDogJydcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcGFyYW09e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpbmRleDogaW5kZXgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlpbmRleDppaW5kZXgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJ1dHRvbl9jYWxsYmFjazpidXR0b25fY2FsbGJhY2ssXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlcTpyZXEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRhdGFfYXR0cjpkYXRhX2F0dHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0dXJsOicuLi9zZWxwc24vaW5kZXg/bXVsaXQ9ZmFsc2UmcGFyYW09JytKU09OLnN0cmluZ2lmeShwYXJhbSksXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBcdGV2ZW50czp7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBcdFx0QWRkUGVyKGRhdGEscGFyYW0peyBcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0XHRcdC8vIGNvbnNvbGUubG9nKHBhcmFtKTtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0XHRcdGNvbnNvbGUubG9nKGRhdGEpO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHRcdFx0dmFyIGNhbGxiYWNrX2V2ZW50aWQgPSBwYXJhbS5idXR0b25fY2FsbGJhY2sudHJpbSgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgZXZlbnRpZDogY2FsbGJhY2tfZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIHByb2plY3RpZDogJycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgcmNsc2lkOiAnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICByb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgY2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIGF0dHI6IHBhcmFtLnJlcSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBpbnB1dHBhcmFtZXRlcjogZGF0YVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sIHBhcmFtLmRhdGFfYXR0cik7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBcdFx0fVxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHR9XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB9KTtcdFxuXHRcdFx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdFx0XHQgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9kYXRhX3F1ZXJ5X2RsZycpIHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFxuXHRcdFx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdFx0XHQgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9jb21tb25fZGxnJykge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgdmFyIHZhbHVlID0gYWN0aW9uLnZhbHVlO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgdmFyIGQgPSBkaWFsb2coe1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHRpdGxlOiAnPGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1pbmZvLWNpcmNsZVwiPjwvaT4gJyArICfmj5DnpLonLFxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGFjdGlvbi5hY3Rpb25fdHlwZSArICfmraRhY3Rpb27lsJrmnKrlpITnkIbvvIEnXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB9KTtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGQuc2hvdygpO1xuXHRcdFx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdFx0XHQgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9wcm9qZWN0X3F1ZXJ5X2RsZycpIHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIC8vY29uc29sZS5sb2coYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSk7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAvL2NvbnNvbGUubG9nKGFjdGlvbi52YWx1ZS5tdWxpdF9zZWxlY3QpO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgdmFyIHByaVJlbCA9ICctMSc7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5YWo6YOo55u45YWzJylcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBwcmlSZWwgPSAnMCc7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHotJ/otKPnmoTpobnnm64nKVxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHByaVJlbCA9ICcxJztcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeWIm+W7uueahCcpXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgcHJpUmVsID0gJzInO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5oiR5Y+C5LiO55qEJyB8fCBhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHlj4LliqDnmoQnKVxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHByaVJlbCA9ICczJztcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeWFs+azqOeahCcpXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgcHJpUmVsID0gJzQnO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5oiR5LiL5bGe55qE6aG555uuJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0cHJpUmVsID0gJzUnO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcGFyYW1fPXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aW5kZXg6IGluZGV4LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpaW5kZXg6aWluZGV4LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRidXR0b25fY2FsbGJhY2s6YnV0dG9uX2NhbGxiYWNrLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXE6cmVxXG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHVybDonLi4vc2VsUHJqL2luZGV4P3JlbGF0aW9uPScrcHJpUmVsKycmcGFyYW09JytKU09OLnN0cmluZ2lmeShwYXJhbV8pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRldmVudHM6e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEFkZFBlcihkYXRhLHBhcmFtKXsgXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsdWU9ZGF0YVswXS5OYW1lO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbElEPWRhdGFbMF0uSUQrJzsnK2RhdGFbMF0uTmFtZTtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0XHRcdHZhciBjYWxsYmFja19ldmVudGlkID0gcGFyYW0uYnV0dG9uX2NhbGxiYWNrLnRyaW0oKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYWxsYmFja19ldmVudGlkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgdmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIGV2ZW50aWQ6IGNhbGxiYWNrX2V2ZW50aWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIGVkdHlwZTogXCIyXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIHByb2plY3RpZDogZGF0YVswXS5JRCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgcmNsc2lkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICByb2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIHVzZXJsb2dpbjogXCJcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgY2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICBvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgYXR0cjogcGFyYW0ucmVxLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgJHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHQgICAgICAgIH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB2YXIgZCA9IGRpYWxvZyh7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGl0bGU6ICc8aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLWluZm8tY2lyY2xlXCI+PC9pPiAnICsgJ+aPkOekuicsXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgY29udGVudDogYWN0aW9uLmFjdGlvbl90eXBlICsgJ+atpGFjdGlvbuWwmuacquWkhOeQhu+8gSdcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIH0pO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZC5zaG93KCk7XG5cdFx0XHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICB9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLo1LjJcIixjb250ZW50OiAn6LCD55SoIGJlZm9yZV9jbGlja19idXR0b24g6ISa5pys6L+U5Zue56m677yMZXZlbnRfaWQnICsgZXZlbnRpZCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNVwiLGNvbnRlbnQ6c3VjY2Vzcy5tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KS5jYXRjaChleD0+e1xuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekujUuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHR9KTtcblx0XHQgICAgfSxcblx0XHQgICAgXG5cdFx0XHRcblx0XHR9XG5cdH1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///49\n"); |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;var _regenerator = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/regenerator */ 50));\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _pickerAddress = _interopRequireDefault(__webpack_require__(/*! ../../js/pickerAddress/pickerAddress.vue */ 53));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {try {var info = gen[key](arg);var value = info.value;} catch (error) {reject(error);return;}if (info.done) {resolve(value);} else {Promise.resolve(value).then(_next, _throw);}}function _asyncToGenerator(fn) {return function () {var self = this,args = arguments;return new Promise(function (resolve, reject) {var gen = fn.apply(self, args);function _next(value) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);}function _throw(err) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);}_next(undefined);});};}var _default =\n{\n components: {\n pickerAddress: _pickerAddress.default },\n\n data: function data() {\n return {\n title: '新增',\n param: {},\n classAttrList: [],\n classGridStyle: [],\n edit_inital_event: \"\", //弹窗初始化事件ID\n edit_ok_event: \"\", //弹窗点击OK 触发事件ID\n edit_select_compose_event: \"\", //选择组成对象时调用\n edit_compose_cls_id: \"\",\n global_attr: [],\n refdatastore: [], //引用数据存储区// {attr:'G_PRJ_' + bindattr + '_ID', value:info.id}\n inputValList: [{ Name: \"test\" }, { Name: \"test2\" }, { Name: \"test3\" }, { Name: \"test4\" }, { Name: \"test5\" }, { Name: \"test6\" }, { Name: \"test7\" }] };\n\n },\n onLoad: function onLoad(options) {\n // console.log(options);\n uni.setNavigationBarTitle({ title: options.titlename }); //设置顶部标题 \n var param = JSON.parse(options.param);\n this.$data.title = param.Add_BtnName ? param.Add_BtnName : options.titlename; //设置按钮文字\n // console.log(param);\n if (!param.EditDlgMode) {\n uni.showModal({ title: \"提示\", content: \"该功能点未配置编辑窗口,请重新配置!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n if (!param.Edit_dlg.Name) {\n uni.showModal({ title: \"提示\", content: \"该功能点未配置窗口样式,请重新配置!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n this.$data.param = param;\n var edit_dlg = {\n Model: param.EditDlgMode,\n Name: param.Edit_dlg.Name };\n\n var dataInfo = {\n class_id: param.clsid };\n\n var $this = this;\n $this.$store.state.thisareaFuncID = param.clsid;\n // console.log($this.$store.getters.getclassAttrList);\n //获取\n if ($this.$store.getters.getclassAttrList) {\n $this.$data.classAttrList = $this.$store.getters.getclassAttrList.data;\n $this.classGridStyleInfo();\n } else\n $this.$store.dispatch('classAttrList', dataInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n $this.$data.classAttrList = success.data;\n\n $this.classGridStyleInfo();\n } else {\n uni.showModal({ title: \"错误1\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误1.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n\n },\n methods: {\n cancel: function cancel(e) {\n uni.navigateBack({\n delta: 1 //返回层数,2则上上页\n });\n },\n classGridStyleInfo: function classGridStyleInfo() {var _this = this;return _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee() {var $this, gridstyleInfo;return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:\n $this = _this;\n gridstyleInfo = {\n class_id: $this.$data.param.clsid,\n name: $this.$data.param.Edit_dlg.Name,\n type: '2' };\n\n $this.$store.state.thisEditName = $this.$data.param.Edit_dlg.Name;\n // console.log($this.$store.getters.getclassGridStyleInfo);\n //获取\n if ($this.$store.getters.getclassGridStyleInfo) {\n $this.$data.classGridStyle = $this.$store.getters.getclassGridStyleInfo.data;\n $this.class_attr_init();\n } else {\n //console.log(gridstyleInfo);\n $this.$store.dispatch('classGridStyleInfo', gridstyleInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n success.data.StyleDef = JSON.parse(success.data.StyleDef);\n $this.$data.classGridStyle = success.data;\n\n $this.class_attr_init();\n } else {\n uni.showModal({ title: \"错误1.2\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/classAttr.vue:482\");\n uni.showModal({ title: \"错误1.3\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n }case 4:case \"end\":return _context.stop();}}}, _callee);}))();\n },\n ontap: function ontap(e) {var _this2 = this; //扫码功能\n //console.log(e.target)\n getApp().onScan(function (result) {\n //console.log(result.decodedata);\n _this2.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = result.decodedata;\n });\n },\n onarrow: function onarrow(index, open) {\n // console.log(index+'--'+open);\n this.$data.classAttrList[index].Open = open == true ? false : true;\n },\n ondateTime: function ondateTime(e) {\n //console.log(e.target)\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n },\n onchange: function onchange(e) {\n __f__(\"log\", e.target, \" at pages/modal/classAttr.vue:503\");\n var value = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].dictitem[e.target.value];\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n __f__(\"log\", data_attr, \" at pages/modal/classAttr.vue:506\");\n if (value.Name != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = value.Name;\n __f__(\"log\", this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value, \" at pages/modal/classAttr.vue:509\");\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info);\n }\n }\n\n },\n onchange2: function onchange2(item, value, delvalue) {\n // console.log(item);\n // console.log(value);\n // console.log(delvalue);\n if (item.length == 0) {//为空时,清空属性value\n var index,iindex,dindex = 0;\n for (var i in this.$data.classAttrList) {\n for (var j in this.$data.classAttrList[i].Attr) {\n for (var d in this.$data.classAttrList[i].Attr[j].dictitem) {\n if (delvalue[0].Name == this.$data.classAttrList[i].Attr[j].dictitem[d].Name) {\n this.$data.classAttrList[i].Attr[j].Value = \"\";\n }\n }\n }\n }\n }\n\n for (var v in item) {\n var index,iindex,dindex = 0;\n for (var i in this.$data.classAttrList) {\n for (var j in this.$data.classAttrList[i].Attr) {\n for (var d in this.$data.classAttrList[i].Attr[j].dictitem) {\n if (item[v].Name == this.$data.classAttrList[i].Attr[j].dictitem[d].Name) {\n index = i;iindex = j;dindex = d;\n }\n }\n }\n }\n var itemvalue = item[v];\n var data_attr = this.$data.classAttrList[index].Attr[iindex];\n\n __f__(\"log\", data_attr, \" at pages/modal/classAttr.vue:576\");\n if (itemvalue.Name != data_attr.Value) {\n this.$data.classAttrList[index].Attr[iindex].Value = value;\n __f__(\"log\", this.$data.classAttrList[index].Attr[iindex].Value, \" at pages/modal/classAttr.vue:579\");\n var eventid = this.$data.classAttrList[index].Attr[iindex].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n if (ar.Type == '字典' || ar.Type == '字典-字符串')\n req.push({ attr: ar.Name, val: itemvalue.Name });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info);\n }\n }\n }\n\n\n },\n onevent: function onevent(e) {\n // console.log(e.target);\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n // console.log(data_attr);\n if (e.target.value != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info, data_attr);\n }\n }\n\n },\n oncheck: function oncheck(e) {\n // console.log(e.target);\n var ischecked = e.target.dataset.ischeck ? false : true;\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n // console.log(data_attr);\n if (ischecked != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = ischecked;\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info);\n }\n }\n\n },\n inputValListIsDel: function inputValListIsDel(index) {\n // console.log(index);\n this.$data.inputValList.splice(index, 1); //删除tabPagejson的内容\n // console.log(this.$data.inputValList);\n },\n addresschange: function addresschange(e) {\n // console.log(e.target);\n __f__(\"log\", e.data.join(';'), \" at pages/modal/classAttr.vue:710\");\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.data.join(';');\n },\n classAttr_extButton: function classAttr_extButton(index, iindex) {\n var $this = this;\n var before_click_button = $this.$data.classAttrList[index].Attr[iindex].before_click_button;\n var button_callback = $this.$data.classAttrList[index].Attr[iindex].button_callback;\n if (!before_click_button) {\n uni.showModal({ title: \"提示\", content: \"before_click_button-event_id为空!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n if (!button_callback) {\n uni.showModal({ title: \"提示\", content: \"button_callback-event_id为空!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n var data_attr = this.$data.classAttrList[index].Attr[iindex];\n this.DataObjRunCustomEvent_Return(before_click_button, data_attr, button_callback, index, iindex);\n },\n classAttr_AddPer: function classAttr_AddPer(index, iindex) {\n var param = { index: index, iindex: iindex };\n var $this = this;\n uni.navigateTo({\n url: '../selpsn/index?mulit=false¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n __f__(\"log\", data, \" at pages/modal/classAttr.vue:736\");\n $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].Login + ';' + data[0].Name;\n\n var eventid = $this.$data.classAttrList[param.index].Attr[param.iindex].action;\n if (eventid) {\n eventid = eventid.trim();\n if (eventid) {\n var info = {\n eventid: eventid,\n edtype: \"4\",\n projectid: \"\",\n rclsid: \"\",\n robjid: \"\",\n userlogin: data[0].Login,\n clsid: $this.$data.param.clsid,\n objid: \"\",\n attr: [] };\n\n\n // var data_attr = $this.$data.classAttrList[param.index].Attr[param.iindex];\n $this.DataObjRunCustomEvent(info);\n }\n }\n } } });\n\n\n },\n classAttr_AddRef: function classAttr_AddRef(e) {\n __f__(\"log\", e.target, \" at pages/modal/classAttr.vue:765\");\n uni.showModal({ title: \"提示\", content: \"此功能还未实现!\", showCancel: false, confirmText: \"取消\" });\n // var value=this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].RelCls[e.target.value];\n // this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value=value;\n },\n classAttr_AddPrj: function classAttr_AddPrj(index, iindex) {\n var param = { index: index, iindex: iindex };\n var $this = this;\n uni.navigateTo({\n url: '../selPrj/index?relation=-1¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n // console.log(data);\n $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].ID + ';' + data[0].Name;\n\n var eventid = $this.$data.classAttrList[param.index].Attr[param.iindex].action;\n if (eventid) {\n eventid = eventid.trim();\n if (eventid) {\n var info = {\n eventid: eventid,\n edtype: \"2\",\n projectid: data[0].ID,\n rclsid: \"\",\n robjid: \"\",\n userlogin: \"\",\n clsid: $this.$data.param.clsid,\n objid: \"\",\n attr: [] };\n\n\n // var data_attr = $this.$data.classAttrList[param.index].Attr[param.iindex];\n $this.DataObjRunCustomEvent(info);\n }\n }\n } } });\n\n\n },\n sava: function sava() {\n if (this.$data.edit_ok_event)\n this.OKDataObjRunCustomEvent();else\n\n this.add();\n },\n add: function add() {var _this3 = this;\n uni.showLoading({\n title: \"加载中...\" });\n\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '请选择' || ar.Value == '——请选择——') ar.Value = '';\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ name: ar.Name, value: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ name: ar.Name, value: ar.Value ? '1' : '0' });else\n if (ar.Type == '字典' || ar.Type == '字典-字符串') {\n if (ar.select == true) {//判断下拉是否多选\n var valStr = \"\";\n for (var v in ar.Value) {\n if (valStr)\n valStr += \";\";\n valStr += ar.Value[v];\n }\n req.push({ name: ar.Name, value: valStr });\n } else\n req.push({ name: ar.Name, value: ar.Value });\n } else\n\n req.push({ name: ar.Name, value: ar.Value ? ar.Value : '' });\n\n if ((ar.NotEmpty == '1' || ar.notempty == true) && !ar.Value) {\n // if(ar.notEmpty=='1'){\n uni.hideLoading();\n // uni.showToast({title:ar.DispName+'不能为空!',icon:\"success\",duration:3000});\n uni.showModal({ title: \"提示\", content: ar.DispName + '不能为空!', showCancel: false, confirmText: \"取消\" });\n return;\n }\n }\n }\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.clsid, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.clsid } };\n\n\n\n var dataInfo = {\n class_id: this.$data.param.clsid, data_obj_id: '', masterclsid: '',\n req: JSON.stringify(req), upfile: JSON.stringify([]), post_data: JSON.stringify({}),\n compose: JSON.stringify([]), refdatastore: JSON.stringify([]), extinfo: JSON.stringify(enviroment),\n not_trigger_sys_event: '' };\n\n\n // return\n __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:871\");\n this.$store.dispatch('addclassattr', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/classAttr.vue:873\");\n uni.hideLoading();\n if (success.code == '00000') {\n var action = JSON.parse(success.data.Action);\n if (action.ret == '0') {\n if (action.result_type == '0') {\n uni.showToast({ title: action.result, icon: \"success\", duration: 3000 });\n }\n // \"{\"ret\":0, \"result_type\":0, \"result\":\"创建成功123123123\",\"info\":\"\"}\"\n }\n //刷新\n uni.redirectTo({\n url: '../modal/classAttr?param=' + JSON.stringify(_this3.$data.param) + \"&titlename=\" + _this3.$data.title });\n\n // this.class_attr_init();\n } else {\n uni.showModal({ title: \"错误\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/classAttr.vue:892\");\n uni.hideLoading();\n uni.showModal({ title: \"提示\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n class_attr_init: function class_attr_init() {\n var attrlist = this.$data.classGridStyle.StyleDef.show_style;\n var newattrlist = [];\n if (this.$data.classAttrList.length > 0) {\n for (var i = 0; i < attrlist.length; i++) {\n var open = attrlist[i].open;\n var name = attrlist[i].attrgroup_name;\n var attrs = attrlist[i].attrs;\n for (var s = 0; s < this.$data.classAttrList.length; s++) {\n var clsattr = this.$data.classAttrList[s];\n if (name == clsattr.Name) {\n var attr = [];\n for (var j = 0; j < attrs.length; j++) {\n for (var l = 0; l < clsattr.Attr.length; l++) {\n var ca = clsattr.Attr[l];\n if (attrs[j].attr == ca.Name) {\n ca.action = attrs[j].action;\n ca.edit = attrs[j].edit;\n ca.notempty = attrs[j].notempty;\n ca.ext_button = attrs[j].ext_button;\n ca.button_img = attrs[j].button_img;\n ca.button_tooltip = attrs[j].button_tooltip;\n ca.before_click_button = attrs[j].before_click_button;\n ca.button_callback = attrs[j].button_callback;\n ca.hidden = attrs[j].hidden;\n ca.select = attrs[j].select == undefined ? false : attrs[j].select;\n ca.Value = \"\";\n if (ca.dictitem) {\n var dictitemlist = [];\n for (var d = 0; d < ca.dictitem.length; d++) {\n ca.dictitem[d].label = ca.dictitem[d].CN_S_NAME;\n ca.dictitem[d].value = ca.dictitem[d].CN_S_NAME;\n }\n if (ca.select == true)\n ca.Value = []; //ca.dictitem[0].CN_S_NAME;\n else\n ca.Value = '请选择'; //ca.dictitem[0].CN_S_NAME;\n }\n if (ca.Type == '日期' || ca.Type == '时间') {\n var nowDate = new Date();\n var date = { year: nowDate.getFullYear(), month: nowDate.getMonth() + 1, day: nowDate.getDate() };\n ca.Value = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day);\n }\n if (ca.Type == '引用对象(多个)') {\n var relClsList = [];\n var attr_rescls = ca.RelCls.split(',');\n for (var ii in attr_rescls) {\n var rescls = attr_rescls[ii].split('|');\n relClsList.push({ id: rescls[0], name: rescls[1] });\n }\n ca.RelClsList = relClsList;\n ca.Value = '请';\n }\n if (ca.Type == '省市区')\n ca.Value = '请选择';\n if (ca.Type == '布尔值')\n ca.Value = false;\n\n attr.push(ca);\n }\n }\n }\n newattrlist.push({\n BkColor: clsattr.BkColor,\n HasAce: clsattr.HasAce,\n ImgFontStyle: clsattr.ImgFontStyle,\n Name: clsattr.Name,\n Order: clsattr.Order,\n Open: open,\n Attr: attr,\n control_style: this.$data.classGridStyle.StyleDef.control_style,\n title_p_wdith: this.$data.classGridStyle.StyleDef.title_p_wdith });\n\n }\n }\n }\n if (newattrlist.length > 0) {\n this.$data.classAttrList = newattrlist;\n }\n var req = [];\n if (this.$data.classGridStyle.StyleDef) {\n if (this.$data.classGridStyle.StyleDef.show_style.length > 0) {\n var attrlist = this.$data.classGridStyle.StyleDef.show_style;\n // $el.find('.attr_field').prop('readonly', true);\n // $el.find('.attr_field').prop('disabled', true);\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].attrs;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n req.push({ attr: ar.attr, val: ar.value ? ar.value : '' });\n }\n }\n }\n }\n\n var eventlist = this.$data.classGridStyle.StyleDef.event;\n if (eventlist) {\n if (eventlist.length > 0) {\n for (var i = 0; i < eventlist.length; i++) {\n if (eventlist[i].event_id == 'before_ok') {\n this.$data.edit_ok_event = eventlist[i];\n } else if (eventlist[i].event_id == 'initial') {\n this.$data.edit_inital_event = eventlist[i];\n } else if (eventlist[i].event_id == 'before_select_compose') {\n this.$data.edit_select_compose_event = eventlist[i].scrip_id;\n this.$data.edit_compose_cls_id = eventlist[i].compose_cls_id;\n }\n }\n }\n }\n __f__(\"log\", req, \" at pages/modal/classAttr.vue:1007\");\n if (this.$data.edit_inital_event) {\n var eventid = this.$data.edit_inital_event.scrip_id;\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n this.ini_DataObjRunCustomEvent(info);\n }\n __f__(\"log\", this.$data.classGridStyle, \" at pages/modal/classAttr.vue:1023\");\n __f__(\"log\", this.$data.classAttrList, \" at pages/modal/classAttr.vue:1024\");\n\n } else {\n uni.showModal({ title: \"提示\", content: \"未找到可显示的的属性\", showCancel: false, confirmText: \"取消\" });\n }\n },\n ini_DataObjRunCustomEvent: function ini_DataObjRunCustomEvent(info) {var _this4 = this;\n var param = {\n EditStyle: this.$data.param.Edit_dlg.Name,\n ViewStyle: this.$data.param.Edit_dlg.Name,\n NotTriggerSysEvent: 0,\n enviroment: {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.clsid, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.clsid // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } } };\n\n\n var inputparameter = '';\n var global_attr = '';\n\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid,\n rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(param), inputparameter: inputparameter, global_attr: global_attr };\n\n __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1054\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/classAttr.vue:1056\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n if (actionlist) {\n for (var j = 0; j < actionlist.length; j++) {\n var action = actionlist[j];\n var action_type = action.action_type;\n var value = action.value;\n if (action_type == 'set_dlg_attr') {\n if (value) {\n var val = value;\n if (typeof value == 'string') {\n val = JSON.parse(value);\n }\n __f__(\"log\", val, \" at pages/modal/classAttr.vue:1071\");\n for (var i = 0; i < val.length; i++) {\n for (var a = 0; a < _this4.$data.classAttrList.length; a++) {\n for (var l = 0; l < _this4.$data.classAttrList[a].Attr.length; l++) {\n var ca = _this4.$data.classAttrList[a].Attr[l];\n if (val[i].attr == ca.Name) {\n if (ca.Type == '字典' || ca.Type == '字典-字符串') {\n var dictItemList = [];\n for (var d in val[i].choice_list) {\n var val = val[i].choice_list[d];\n dictItemList.push({ \"CN_S_NAME\": val, \"Name\": val, \"label\": val, \"value\": val });\n\n }\n ca.dictitem = dictItemList;\n // attr[j].dictitem = val[i].choice_list;\n } else {\n // ca.value = val[i].value;\n }\n }\n }\n }\n\n var length = 0;\n if (!_this4.$data.refdatastore.filter(function (s) {\n return val[i].attr == s.attr;\n }).length) {\n length = 1;\n _this4.$data.refdatastore.push(val[i]);\n }\n if (length == 0) {\n for (var j = 0; j < _this4.$data.refdatastore.length; j++) {\n if (_this4.$data.refdatastore[j].attr == val[i].attr) {\n _this4.$data.refdatastore[j].value = val[i].value;\n }\n }\n }\n }\n }\n }\n if (action_type == 'open_select_userdlg') {\n uni.showModal({ title: \"错误2.2\", content: \"open_select_userdlg这个action_type还未处理!\", showCancel: false, confirmText: \"取消\" });\n }\n }\n }\n\n } else {\n uni.showModal({ title: \"错误2\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误2.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n DataObjRunCustomEvent: function DataObjRunCustomEvent(info, data_attr) {\n var $this = this;\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.clsid, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.clsid // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } };\n\n if (data_attr) {\n enviroment.edit_dlg = {\n type: 'small', //小窗口\n class_id: this.$data.param.clsid //当前数据类id\n };\n if (data_attr) {\n enviroment.edit_dlg.form_control = { //所属的表单控件\n name: data_attr.Name, //字段属性\n text: data_attr.DispName, //显示文本\n group_name: data_attr.GroupName, //属性组\n type: data_attr.Type, //字段类型\n readonly: data_attr.ReadOnly, //是否只读\n button_img: data_attr.button_img, //引用按钮的图标\n button_tooltip: data_attr.button_tooltip //引用按钮的tooltip\n };\n }\n }\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid.replace('{', '').replace('}', ''),\n rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), inputparameter: '', global_attr: JSON.stringify(this.$data.global_attr) };\n\n __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1158\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/classAttr.vue:1160\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n\n if (actionlist) {\n __f__(\"log\", actionlist, \" at pages/modal/classAttr.vue:1166\");\n for (var i = 0; i < actionlist.length; i++) {\n var action = actionlist[i];\n if (action.action_type == 'set_dlg_attr') {\n var result = action.value;\n for (var i = 0; i < result.length; i++) {\n if (result[i].choice_list) {\n for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n if (attr[j].Name == result[i].attr) {\n if (attr[j].Type == '字典' || attr[j].Type == '字典-字符串') {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({ \"CN_S_NAME\": val, \"Name\": val, \"label\": val, \"value\": val });\n }\n attr[j].dictitem = dictItemList;\n // attr[j].dictitem = result[i].choice_list;\n }\n }\n }\n }\n }\n for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n __f__(\"log\", attr[j].Name + '==' + result[i].attr, \" at pages/modal/classAttr.vue:1193\");\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n }\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n } else if (data.action[i].action_type == 'set_global_attr') {\n $this.$data.global_attr = data.action[i].value || [];\n }\n }\n }\n\n if (data.result) {\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n }\n }\n }\n\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n }\n } else {\n uni.showModal({ title: \"错误3\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误3.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n OKDataObjRunCustomEvent: function OKDataObjRunCustomEvent() {var _this5 = this;\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.clsid, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.clsid // button=bottom时 master的cls_id\n } };\n\n\n\n var eventid = this.$data.edit_ok_event.scrip_id;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '请选择' || ar.Value == '——请选择——') ar.Value = '';\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value });\n }\n }\n\n if (this.$data.refdatastore.length > 0) {\n for (var i = 0; i < this.$data.refdatastore.length; i++) {\n if (!req.filter(function (s) {\n return this.$data.refdatastore[i].attr == s.name;\n }).length) {\n length = 1;\n req.push({ 'attr': this.$data.refdatastore[i].attr, 'val': this.$data.refdatastore[i].value });\n }\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid, rclsid: info.rclsid,\n robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), global_attr: JSON.stringify(this.$data.global_attr) };\n\n __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1313\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/classAttr.vue:1315\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n // self.class_attr_ele.find('.attr_field[data-field=\"' + result[i].attr + '\"]').val(result[i].value).data('val', result[i].value);\n var length = 0;\n if (!_this5.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n _this5.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < _this5.$data.refdatastore.length; j++) {\n if (_this5.$data.refdatastore[j].attr == result[i].attr) {\n _this5.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n\n _this5.add();\n } else {\n uni.showModal({ title: \"错误4\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误4.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n DataObjRunCustomEvent_Return: function DataObjRunCustomEvent_Return(eventid, data_attr, button_callback, index, iindex) {var _this6 = this;\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.clsid, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.clsid // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } };\n\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value });\n }\n }\n if (this.$data.refdatastore.length > 0) {\n for (var i = 0; i < this.$data.refdatastore.length; i++) {\n if (!req.filter(function (s) {\n return this.$data.refdatastore[i].attr == s.name;\n }).length) {\n length = 1;\n req.push({ 'attr': this.$data.refdatastore[i].attr, 'val': this.$data.refdatastore[i].value });\n }\n }\n }\n var extinfo = enviroment;\n extinfo.edit_dlg = {\n type: 'small', //小窗口\n class_id: this.$data.param.clsid //当前数据类id\n };\n if (data_attr) {\n extinfo.edit_dlg.form_control = { //所属的表单控件\n name: data_attr.Name, //字段属性\n text: data_attr.DispName, //显示文本\n group_name: data_attr.GroupName, //属性组\n type: data_attr.Type, //字段类型\n readonly: data_attr.ReadOnly, //是否只读\n button_img: data_attr.button_img, //引用按钮的图标\n button_tooltip: data_attr.button_tooltip //引用按钮的tooltip\n };\n }\n var dataInfo = {\n edtype: \"0\", eventid: eventid, projectid: '', rclsid: '', robjid: '', userlogin: '',\n clsid: this.$data.param.clsid, objid: '', attr: JSON.stringify(req),\n extinfo: JSON.stringify(extinfo), global_attr: JSON.stringify(this.$data.global_attr) };\n\n __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1404\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/classAttr.vue:1406\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n if (data != \"\") {\n\n var actions = data.action;\n __f__(\"log\", actions, \" at pages/modal/classAttr.vue:1412\");\n if (actions) {\n for (var i = 0; i < actions.length; i++) {\n var action = actions[i];\n var val = action.value;\n var enviroment = JSON.stringify(enviroment);\n\n if (action.action_type == 'open_panel') {\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!' });\n\n d.show();\n } else\n if (action.action_type == 'open_select_userdlg') {\n var style = val.style;\n // style == 'user' ? '选择人员' : style == 'department' ? '选择部门' : style == 'role' ? '选择角色' : ''\n var $this = _this6;\n var param = {\n index: index,\n iindex: iindex,\n button_callback: button_callback,\n req: req,\n data_attr: data_attr };\n\n uni.navigateTo({\n url: '../selpsn/index?mulit=false¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n __f__(\"log\", data, \" at pages/modal/classAttr.vue:1442\");\n var callback_eventid = param.button_callback.trim();\n var info = {\n eventid: callback_eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: $this.$data.param.clsid,\n objid: \"\",\n attr: param.req,\n inputparameter: data };\n\n $this.DataObjRunCustomEvent(info, param.data_attr);\n } } });\n\n\n } else\n if (action.action_type == 'open_data_query_dlg') {\n\n } else\n if (action.action_type == 'open_common_dlg') {\n var value = action.value;\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!' });\n\n d.show();\n } else\n if (action.action_type == 'open_project_query_dlg') {\n //console.log(action.value.select_range);\n //console.log(action.value.mulit_select);\n var priRel = '-1';\n if (action.value.select_range == '全部相关')\n priRel = '0';else\n if (action.value.select_range == '我负责的项目')\n priRel = '1';else\n if (action.value.select_range == '我创建的')\n priRel = '2';else\n if (action.value.select_range == '我参与的' || action.value.select_range == '我参加的')\n priRel = '3';else\n if (action.value.select_range == '我关注的')\n priRel = '4';else\n if (action.value.select_range == '我下属的项目')\n priRel = '5';\n\n var $this = _this6;\n var param_ = {\n index: index,\n iindex: iindex,\n button_callback: button_callback,\n req: req };\n\n uni.navigateTo({\n url: '../selPrj/index?relation=' + priRel + '¶m=' + JSON.stringify(param_),\n events: {\n AddPer: function AddPer(data, param) {\n $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].ID + ';' + data[0].Name;\n var callback_eventid = param.button_callback.trim();\n if (callback_eventid) {\n var info = {\n eventid: callback_eventid,\n edtype: \"2\",\n projectid: data[0].ID,\n rclsid: \"\",\n robjid: \"\",\n userlogin: \"\",\n clsid: $this.$data.param.clsid,\n objid: \"\",\n attr: param.req };\n\n\n $this.DataObjRunCustomEvent(info);\n }\n } } });\n\n\n } else {\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!' });\n\n d.show();\n }\n }\n }\n } else {\n uni.showModal({ title: \"提示5.2\", content: '调用 before_click_button 脚本返回空,event_id' + eventid, showCancel: false, confirmText: \"取消\" });\n }\n } else {\n uni.showModal({ title: \"错误5\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"提示5.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 13)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvY2xhc3NBdHRyLnZ1ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnWUEscUg7QUFDQTtBQUNBO0FBQ0EseUNBREEsRUFEQTs7QUFJQSxNQUpBLGtCQUlBO0FBQ0E7QUFDQSxpQkFEQTtBQUVBLGVBRkE7QUFHQSx1QkFIQTtBQUlBLHdCQUpBO0FBS0EsMkJBTEEsRUFLQTtBQUNBLHVCQU5BLEVBTUE7QUFDQSxtQ0FQQSxFQU9BO0FBQ0EsNkJBUkE7QUFTQSxxQkFUQTtBQVVBLHNCQVZBLEVBVUE7QUFDQSx3SkFYQTs7QUFhQSxHQWxCQTtBQW1CQSxRQW5CQSxrQkFtQkEsT0FuQkEsRUFtQkE7QUFDQTtBQUNBLDREQUZBLENBRUE7QUFDQTtBQUNBLGlGQUpBLENBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBREE7QUFFQSwrQkFGQTs7QUFJQTtBQUNBLDJCQURBOztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FIQTtBQUlBO0FB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LCtFQURBO0FBRUEsZ0VBRkE7O0FBSUE7QUFDQSxpQkFQQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFEQTtBQUVBO0FBQ0EsK0JBREE7QUFFQTtBQUNBLCtCQURBO0FBRUE7QUFDQSwrQkFEQTtBQUVBO0FBQ0EsK0JBREE7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQ0FEQTtBQUVBLGtDQUZBO0FBR0Esb0RBSEE7QUFJQSw0QkFKQTs7QUFNQTtBQUNBLGtHQURBO0FBRUE7QUFDQSw0QkFEQSxrQkFDQSxJQURBLEVBQ0EsS0FEQSxFQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQURBO0FBRUEsdUNBRkE7QUFHQSxpREFIQTtBQUlBLHNDQUpBO0FBS0Esc0NBTEE7QUFNQSx5Q0FOQTtBQU9BLDBEQVBBO0FBUUEscUNBUkE7QUFTQSwyQ0FUQTs7O0FBWUE7QUFDQTtBQUNBLHVCQXBCQSxFQUZBOzs7QUF5QkEsaUJBakRBLE1BaURBO0FBQ0E7QUFDQSwrRUFEQTtBQUVBLGdFQUZBOztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0F6SEEsTUF5SEE7QUFDQTtBQUNBO0FBQ0EsU0E5SEEsTUE4SEE7QUFDQTtBQUNBO0FBQ0EsT0FuSUEsRUFtSUEsS0FuSUEsQ0FtSUE7QUFDQTtBQUNBO0FBQ0EsT0F0SUE7QUF1SUEsS0Fsa0NBLEVBaEVBLEUiLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8c3R5bGU+XHJcblx0LmNsYXNzX2F0dHJfdGl0bGUge1xyXG5cdFx0Zm9udC1zaXplOiA0NHJweDtcclxuXHQgICAgcGFkZGluZy1ib3R0b206IDIycnB4O1xyXG5cdCAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0fVxyXG5cdC5jbGFzc19hdHRyX3RpdGxlIC50aXRsZV9saW5lIHtcclxuXHQgICAgYm9yZGVyLWJvdHRvbTogMnJweCBzb2xpZCAjYWFhO1xyXG5cdCAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0ICAgIGJvdHRvbTogLTUwcnB4O1xyXG5cdCAgICB3aWR0aDogY2FsYygxMDAlIC0gMjkwcnB4KTtcclxuXHQgICAgbWFyZ2luLWxlZnQ6IDEwMHB4O1xyXG5cdH1cclxuXHQuY2xhc3NfYXR0cl90aXRsZSAudGl0bGVfaWNvbiB7XHJcblx0ICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuXHQgICAgd2lkdGg6IDEwMHJweDtcclxuXHRcdGxpbmUtaGVpZ2h0OiA2NHJweDtcclxuXHQgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdCAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG5cdCAgICBwYWRkaW5nLXRvcDogMTBycHg7ICAgIFxyXG5cdFx0cGFkZGluZy1sZWZ0OiAyMHJweDtcclxuXHQgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdCAgICBjb2xvcjogI2ZmZjtcclxuXHR9XHJcblx0LmNsYXNzX2F0dHJfdGl0bGUgaSB7XHJcblx0ICAgIGNvbG9yOiAjMmM2YWEwIWltcG9ydGFudDtcclxuXHR9XHJcblx0LmNsYXNzX2F0dHJfdGl0bGUgLnRpdGxlX2ljb24gaSB7XHJcblx0ICAgIGZvbnQtc2l6ZTogODBycHg7XHJcblx0fVxyXG5cdC5jbGFzc19hdHRyX3RpdGxlIC50aXRsZSB7XHJcblx0ICAgIHBhZGRpbmctcmlnaHQ6IDIycnB4O1xyXG5cdCAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0ICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcblx0ICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHQgICAgYm90dG9tOiAtOHJweDtcclxuXHR9XHJcblx0LmNsYXNzX2F0dHJfdGl0bGUgLmFycm93IHtcclxuXHQgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0dG9wOiA2cnB4O1xyXG5cdFx0cmlnaHQ6IDMwcnB4O1xyXG5cdFx0Zm9udC1zaXplOiA2MHJweDtcclxuXHR9XHJcblx0aW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xyXG5cdFx0Zm9udC1zaXplOiAxMnJweDtcclxuXHR9XHJcblx0dGV4dGFyZWF7XHJcblx0XHR3aWR0aDogOTglO1xyXG5cdFx0Ym9yZGVyOiAxcHggc29saWQgI2Q1ZDVkNTtcclxuXHRcdHBhZGRpbmc6IDEwcnB4IDhycHggMTJycHg7XHJcblx0XHRiYWNrZ3JvdW5kOiAjRkZGO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xyXG5cdFx0Zm9udC1zaXplOiAzNHJweDtcclxuXHRcdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG5cdFx0Ym94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xyXG5cdFx0dHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xcztcclxuXHRcdGNvbG9yOiAjMDQ2ZGIzO1xyXG5cdFx0bWFyZ2luLXRvcDogNHB4O1xyXG5cdH1cclxuXHRpbnB1dHtcclxuXHRcdGJvcmRlcjogMXB4IHNvbGlkICNkNWQ1ZDU7XHJcblx0XHR3aWR0aDogOTglO1xyXG5cdFx0aGVpZ2h0OiA1MnJweDtcclxuXHRcdGJhY2tncm91bmQ6ICNGRkY7XHJcblx0XHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XHJcblx0XHRjb2xvcjogIzA0NmRiMztcclxuXHRcdHBhZGRpbmc6IDEwcnB4IDhycHggMTJycHg7XHJcblx0XHRmb250LXNpemU6IDM0cnB4O1xyXG5cdFx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcblx0XHRib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XHJcblx0XHR0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjFzO1xyXG5cdFx0bWFyZ2luLXRvcDogNHJweDtcclxuXHR9XHJcblx0LnNlbGVjdHsgICAgXHJcblx0XHR3aWR0aDogMjBweDtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdG9wYWNpdHk6IDA7XHJcblx0fVxyXG5cdC5jbGFzc19hdHRyX2JvZHkgLmZvcm0tZ3JvdXAge1xyXG5cdFx0bWFyZ2luOiAyMHJweCAzMHJweDtcclxuXHQgICAgLyogbWFyZ2luLWxlZnQ6IC0xMnB4O1xyXG5cdCAgICBtYXJnaW4tcmlnaHQ6IC0xMnB4OyAqL1xyXG5cdH1cclxuXHQuZm9ybS1ncm91cCA+IGxhYmVsW2NsYXNzKj1cImNvbC1cIl0ge1xyXG5cdCAgICBtYXJnaW4tYm90dG9tOiA4cnB4O1xyXG5cdFx0Zm9udC1zaXplOiAzMnJweDtcclxuXHR9XHJcblx0LmZvcm0tZ3JvdXAgbGFiZWwge1xyXG5cdCAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG5cdCAgICBsaW5lLWhlaWdodDogNjBycHg7XHJcblx0fVxyXG5cdC5uby1wYWRkaW5nLXJpZ2h0IHtcclxuXHQgICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50O1xyXG5cdH1cclxuXHQuY29sLXhzLTEyIHtcclxuXHQgICAgd2lkdGg6IDEwMCU7XHJcblx0fVxyXG5cdC50eF90aXRsZXtcclxuXHRcdGZvbnQtc2l6ZTogMzJycHg7XHJcblx0fVxyXG5cdC50eF90aXRsZTJ7XHJcblx0XHRmb250LXNpemU6IDMycnB4O1xyXG5cdFx0dGV4dC1hbGlnbjogcmlnaHQ7XHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHR2ZXJ0aWNhbC1hbGlnbjogLTJweDtcclxuXHR9XHJcblx0LnRleHQtcmlnaHR7XHJcblx0XHRtYXJnaW4tcmlnaHQ6IDIwcnB4O1xyXG5cdFx0bWFyZ2luLXRvcDogLTZycHg7XHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHRmbG9hdDogcmlnaHQ7XHJcblx0XHRmb250LXNpemU6IDQ0cnB4O1xyXG5cdH1cclxuXHQudGV4dC1yaWdodDIge1xyXG5cdFx0bWFyZ2luOiAwO1xyXG5cdFx0dmVydGljYWwtYWxpZ246IC00cHg7XHJcblx0XHRtYXJnaW4tbGVmdDogOXB4O1xyXG5cdFx0ZmxvYXQ6IG5vbmU7XHJcblx0XHRmb250LXNpemU6IDQ0cnB4O1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdH1cclxuXHQuc2VjdGlvbl9pcHV0e1xyXG5cdFx0Ym9yZGVyOiAxcHggc29saWQgI2Q1ZDVkNTtcclxuXHRcdHdpZHRoOiA5OCU7XHJcblx0XHRoZWlnaHQ6IDYycnB4O1xyXG5cdFx0YmFja2dyb3VuZDogI0ZGRjtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcclxuXHRcdGNvbG9yOiAjMDQ2ZGIzO1xyXG5cdFx0cGFkZGluZzogMTBycHggOHJweCAxMHJweDtcclxuXHRcdGZvbnQtc2l6ZTogMzRycHg7XHJcblx0XHRmb250LWZhbWlseTogaW5oZXJpdDtcclxuXHRcdGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcclxuXHRcdHRyYW5zaXRpb24tZHVyYXRpb246IDAuMXM7XHJcblx0fVxyXG5cdC5kYXRlX2lwdXR7XHJcblx0XHRib3JkZXI6IDFweCBzb2xpZCAjZDVkNWQ1O1xyXG5cdFx0Lyogd2lkdGg6IDk4JTsgKi9cclxuXHRcdGhlaWdodDogNjJycHg7XHJcblx0XHRiYWNrZ3JvdW5kOiAjRkZGO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xyXG5cdFx0Y29sb3I6ICMwNDZkYjM7XHJcblx0XHRwYWRkaW5nOiAxMHJweCA4cnB4IDRycHg7XHJcblx0XHRmb250LXNpemU6IDM0cnB4O1xyXG5cdFx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcblx0XHRib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XHJcblx0XHR0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjFzO1xyXG5cdH1cclxuXHRidXR0b24uYnRuX2FkZCB7XHJcblx0XHR3aWR0aDo0OS41JTtcclxuXHRcdG1hcmdpbi10b3A6IDUwcnB4O1xyXG5cdFx0cGFkZGluZzogMjBycHg7XHJcblx0XHRsaW5lLWhlaWdodDogMS41O1xyXG5cdFx0YmFja2dyb3VuZDogIzI3QTZFMTtcclxuXHRcdGJvcmRlcjogbm9uZTtcclxuXHRcdGNvbG9yOiAjZmZmO1xyXG5cdCAgICBmb250LXNpemU6IDM4cnB4O1xyXG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0XHRmbG9hdDogcmlnaHQ7XHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0fVxyXG5cdGJ1dHRvbi5idG5fY2FuY2VsIHtcclxuXHRcdHdpZHRoOjQ5LjUlO1xyXG5cdFx0bWFyZ2luLXRvcDogNTBycHg7XHJcblx0XHRwYWRkaW5nOiAyMHJweDtcclxuXHRcdGxpbmUtaGVpZ2h0OiAxLjU7XHJcblx0XHRiYWNrZ3JvdW5kOiAjMjdBNkUxO1xyXG5cdFx0Ym9yZGVyOiBub25lO1xyXG5cdFx0Y29sb3I6ICNmZmY7XHJcblx0ICAgIGZvbnQtc2l6ZTogMzhycHg7XHJcblx0XHRmb250LXdlaWdodDogYm9sZDtcclxuXHRcdGZsb2F0OiBsZWZ0O1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdH1cclxuXHQuaV90aXNoaXtcclxuXHRcdGNvbG9yOiByZWQ7XHJcblx0XHR2ZXJ0aWNhbC1hbGlnbjogc3ViO1xyXG5cdFx0Zm9udC1zdHlsZTogaW5pdGlhbDtcclxuXHRcdG1hcmdpbi1sZWZ0OiAyMHJweDtcclxuXHRcdGZvbnQtc2l6ZTogMTdweDtcclxuXHR9XHJcblx0LmF0dHJfZmllbGR7XHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDhweDtcclxuXHRcdC8qIHdpZHRoOiA3MSU7ICovXHJcblx0fVxyXG5cdFxyXG5cdC5pbnB1dF92YWxsaXN0IHtcclxuXHRcdG1heC1oZWlnaHQ6IDM1MHJweDtcclxuXHRcdG92ZXJmbG93LXk6YXV0bztcclxuXHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0fVxyXG5cdC5pbnB1dF92YWxsaXN0IHVse1xyXG5cdFx0LyogYm9yZGVyOiAxcHggc29saWQgcmVkOyAqL1xyXG5cdFx0cGFkZGluZzogMCAyMHJweDtcclxuXHR9XHJcblx0LmlucHV0X3ZhbGxpc3QgdWwgbGl7XHJcblx0XHRsaXN0LXN0eWxlOiBub25lO1xyXG5cdFx0cGFkZGluZzogMjBycHg7XHJcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2NjYztcclxuXHR9XHJcblx0LmlucHV0X3ZhbGxpc3QgdWwgbGkgYXtcclxuXHRcdGZsb2F0OiByaWdodDtcclxuXHR9XHJcblx0LmlucHV0X3ZhbGxpc3QgdWwgbGkgYSBpIHtcclxuXHQgICAgZm9udC1zaXplOiA0NXJweDtcclxuXHR9XHJcbjwvc3R5bGU+XHJcblxyXG48dGVtcGxhdGU+XHJcblx0PHZpZXcgY2xhc3M9XCJjb250ZW50XCI+XHJcblx0XHQ8dmlldyBjbGFzcz1cInYtYXJlYVwiIHYtZm9yPVwiKGNsYXNzYXR0cixpbmRleCkgaW4gY2xhc3NBdHRyTGlzdFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY2xhc3NfYXR0cl90aXRsZVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGl0bGVfbGluZVwiPjwvZGl2PlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJ0aXRsZV9pY29uXCIgOnN0eWxlPVwieydiYWNrZ3JvdW5kLWNvbG9yJzpjbGFzc2F0dHIuQmtDb2xvcn1cIj4gICBcclxuXHRcdFx0XHRcdDxpIGNsYXNzPVwiYWNlLWljb24gZmFcIiA6Y2xhc3M9XCJjbGFzc2F0dHIuSW1nRm9udFN0eWxlXCI+PC9pPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwidGl0bGVcIj57e2NsYXNzYXR0ci5OYW1lfX08L3NwYW4+XHJcblx0XHRcdFx0PGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIGNsYXNzPVwiYXJyb3dcIiBAdGFwPVwib25hcnJvdyhpbmRleCxjbGFzc2F0dHIuT3BlbilcIj48aSBjbGFzcz1cImFjZS1pY29uIGZhIFwiOmNsYXNzPVwiY2xhc3NhdHRyLk9wZW4/J2ZhLWFuZ2xlLWRvd24nOidmYS1hbmdsZS11cCdcIj48L2k+PC9hPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImNsYXNzX2F0dHJfYm9keVwiIDpzdHlsZT1cInsnZGlzcGxheSc6Y2xhc3NhdHRyLk9wZW4/J2Jsb2NrJzonbm9uZSd9XCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImR2X2ZpZWxkX2RpdlwiIHYtZm9yPVwiKGF0dHIsaWluZGV4KSBpbiBjbGFzc2F0dHIuQXR0clwiPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLWdyb3VwXCIgdi1pZj1cImF0dHIuVHlwZT09J+Wtl+espuS4sicgfHwgYXR0ci5UeXBlPT0n5Y+v5Y+Y6ZW/5a2X56ym5LiyJyB8fCBhdHRyLlR5cGU9PSfmlbTmlbAnIHx8IGF0dHIuVHlwZT09J+a1rueCueaVsCdcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOmF0dHIuaGlkZGVuID09ICdUcnVlJz8nbm9uZSc6Jyd9XCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+S4iuS4i+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4X3RpdGxlXCIgOnN0eWxlPVwieyd3aWR0aCc6Y2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPnt7YXR0ci5EaXNwTmFtZX19OjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlXCI+KjwvaT48L3RleHQ+ICA8IS0tIGF0dHIuTm90RW1wdHk9PScxJyAtLT5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGV4dC1yaWdodFwiIHYtaWY9XCJhdHRyLmV4dF9idXR0b249PXRydWVcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIEB0YXA9XCJjbGFzc0F0dHJfZXh0QnV0dG9uKGluZGV4LGlpbmRleClcIiA+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBmb2N1cz1cIm9udGFwXCIgQGJsdXI9XCJvbmV2ZW50XCIgdi1pZj1cImF0dHIuSGVpZ2h0PT0nMSdcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiA6ZGlzYWJsZWQ9XCJhdHRyLmVkaXQ/ZmFsc2U6dHJ1ZVwiID4gPCEtLSA9PSdmbGFzZSc/dHJ1ZTpmYWxzZSAtLT5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dGFyZWEgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBmb2N1cz1cIm9udGFwXCIgQGJsdXI9XCJvbmV2ZW50XCIgdi1lbHNlLWlmPVwiYXR0ci5IZWlnaHQ9PScyJ1wiIDpkYXRhLWluZGV4PVwiaW5kZXhcIjpkYXRhLWlpbmRleD1cImlpbmRleFwiIHN0eWxlPVwiaGVpZ2h0OjYwcHg7XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiA6ZGlzYWJsZWQ9XCJhdHRyLmVkaXQ/ZmFsc2U6dHJ1ZVwiPjwvdGV4dGFyZWE+XHJcblx0XHRcdFx0XHRcdFx0PHRleHRhcmVhIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiBAZm9jdXM9XCJvbnRhcFwiIEBibHVyPVwib25ldmVudFwiIHYtZWxzZS1pZj1cImF0dHIuSGVpZ2h0PT0nMydcIiA6ZGF0YS1pbmRleD1cImluZGV4XCI6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiBzdHlsZT1cImhlaWdodDo5MHB4O1wiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCIgOmRpc2FibGVkPVwiYXR0ci5lZGl0P2ZhbHNlOnRydWVcIj48L3RleHRhcmVhPlxyXG5cdFx0XHRcdFx0XHRcdDwhLS0g5omr56CB5ZCO5LqL5Lu26L+U5ZueIC0tPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpbnB1dF92YWxsaXN0XCIgPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHVsIHYtZm9yPVwiKGlucHV0dmFsLHZpbmRleCkgaW4gaW5wdXRWYWxMaXN0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxsaT48c3Bhbj57e2lucHV0dmFsLk5hbWV9fTwvc3Bhbj48YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgQHRhcD1cImlucHV0VmFsTGlzdElzRGVsKHZpbmRleClcIj48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXRpbWVzXCI+PC9pPjwvYT48L2xpPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC91bD5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSflt6blj7PluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJ0eF90aXRsZTJcIiA6c3R5bGU9XCJ7J3dpZHRoJzpjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+e3thdHRyLkRpc3BOYW1lfX06PC9wPlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYXR0cl9maWVsZFwiIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiBAZm9jdXM9XCJvbnRhcFwiIEBibHVyPVwib25ldmVudFwiIHYtaWY9XCJhdHRyLkhlaWdodD09JzEnXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOiBhdHRyLldpZHRoLnNwbGl0KCclJylbMF0gLSBjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCAtIChhdHRyLk5vdEVtcHR5PT0nMSc/MTA6NSkgLSAoYXR0ci5leHRfYnV0dG9uPT10cnVlPzk6MCkgKyclJ31cIiA6ZGlzYWJsZWQ9XCJhdHRyLmVkaXQ/ZmFsc2U6dHJ1ZVwiID5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dGFyZWEgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBmb2N1cz1cIm9udGFwXCIgQGJsdXI9XCJvbmV2ZW50XCIgdi1lbHNlLWlmPVwiYXR0ci5IZWlnaHQ9PScyJ1wiIDpkYXRhLWluZGV4PVwiaW5kZXhcIjpkYXRhLWlpbmRleD1cImlpbmRleFwiIHN0eWxlPVwiaGVpZ2h0OjYwcHg7XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIGNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gKGF0dHIuTm90RW1wdHk9PScxJz8xMDo1KSAtIChhdHRyLmV4dF9idXR0b249PXRydWU/OTowKSArJyUnfVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCI+PC90ZXh0YXJlYT5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dGFyZWEgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBmb2N1cz1cIm9udGFwXCIgQGJsdXI9XCJvbmV2ZW50XCIgdi1lbHNlLWlmPVwiYXR0ci5IZWlnaHQ9PSczJ1wiIDpkYXRhLWluZGV4PVwiaW5kZXhcIjpkYXRhLWlpbmRleD1cImlpbmRleFwiIHN0eWxlPVwiaGVpZ2h0OjkwcHg7XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIGNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gKGF0dHIuTm90RW1wdHk9PScxJz8xMDo1KSAtIChhdHRyLmV4dF9idXR0b249PXRydWU/OTowKSArJyUnfVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCI+PC90ZXh0YXJlYT5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGV4dC1yaWdodDJcIiB2LWlmPVwiYXR0ci5leHRfYnV0dG9uPT10cnVlXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YSBAdGFwPVwiY2xhc3NBdHRyX2V4dEJ1dHRvbihpbmRleCxpaW5kZXgpXCIgPjxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtcGx1cy1jaXJjbGVcIj48L2k+PC9hPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlXCI+KjwvaT5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLWdyb3VwXCIgdi1pZj1cImF0dHIuVHlwZT09J+W4g+WwlOWAvCdcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOmF0dHIuaGlkZGVuID09ICdUcnVlJz8nbm9uZSc6Jyd9XCI+XHJcblx0XHRcdFx0XHRcdDxjaGVja2JveC1ncm91cCBjbGFzcz1cImNoZWNrX3JlbWVtYmVyUHdkXCIgQGNoYW5nZT1cIm9uY2hlY2tcIiA6ZGF0YS1pc2NoZWNrPVwiYXR0ci5WYWx1ZVwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J21hcmdpbi1sZWZ0JzogY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSflt6blj7PluIPlsYAnP2NsYXNzYXR0ci50aXRsZV9wX3dkaXRoKzIgKyclJzonMTBycHgnfVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxsYWJlbD5cclxuXHRcdFx0XHRcdFx0XHRcdDxjaGVja2JveCA6dmFsdWU9XCJhdHRyLlZhbHVlXCIgOmNoZWNrZWQ9XCJhdHRyLlZhbHVlXCIvPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHRleHQ+e3thdHRyLkRpc3BOYW1lfX08aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZVwiPio8L2k+PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdDwvbGFiZWw+XHJcblx0XHRcdFx0XHRcdDwvY2hlY2tib3gtZ3JvdXA+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZvcm0tZ3JvdXBcIiB2LWlmPVwiYXR0ci5UeXBlPT0n5pel5pyfJyB8fCBhdHRyLlR5cGU9PSfml7bpl7QnXCIgOnN0eWxlPVwieydkaXNwbGF5JzphdHRyLmhpZGRlbiA9PSAnVHJ1ZSc/J25vbmUnOicnfVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSfkuIrkuIvluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eF90aXRsZVwiIDpzdHlsZT1cInsnd2lkdGgnOmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoKyclJ31cIj57e2F0dHIuRGlzcE5hbWV9fTo8aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZVwiPio8L2k+PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdDxwaWNrZXIgbW9kZT1cImRhdGVcIiA6dmFsdWU9XCJhdHRyLlZhbHVlXCIgQGNoYW5nZT1cIm9uZGF0ZVRpbWVcIiBjbGFzcz1cImRhdGVfaXB1dFwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiPlxyXG5cdFx0XHRcdFx0XHRcdCAgIDx2aWV3IGNsYXNzPVwicGlja2VyXCI+e3thdHRyLlZhbHVlfX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC9waWNrZXI+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwidHhfdGl0bGUyXCIgOnN0eWxlPVwieyd3aWR0aCc6Y2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPnt7YXR0ci5EaXNwTmFtZX19OjwvcD5cclxuXHRcdFx0XHRcdFx0XHQ8cGlja2VyIG1vZGU9XCJkYXRlXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBjaGFuZ2U9XCJvbmRhdGVUaW1lXCIgY2xhc3M9XCJkYXRlX2lwdXQgYXR0cl9maWVsZFwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzogYXR0ci5XaWR0aC5zcGxpdCgnJScpWzBdIC0gY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGggLSAoYXR0ci5Ob3RFbXB0eT09JzEnPzEwOjUpICsnJSd9XCI+XHJcblx0XHRcdFx0XHRcdFx0ICAgPHZpZXcgY2xhc3M9XCJwaWNrZXJcIj57e2F0dHIuVmFsdWV9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8L3BpY2tlcj5cclxuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZVwiPio8L2k+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZm9ybS1ncm91cFwiIHYtaWY9XCJhdHRyLlR5cGU9PSflrZflhbgnIHx8IGF0dHIuVHlwZT09J+Wtl+WFuC3lrZfnrKbkuLInXCIgOnN0eWxlPVwieydkaXNwbGF5JzphdHRyLmhpZGRlbiA9PSAnVHJ1ZSc/J25vbmUnOicnfVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSfkuIrkuIvluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eF90aXRsZVwiPnt7YXR0ci5EaXNwTmFtZX19OjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlXCI+KjwvaT48L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0PHBpY2tlciBjbGFzcz1cInNlY3Rpb25faXB1dFwiIEBjaGFuZ2U9XCJvbmNoYW5nZVwiIDpyYW5nZT1cImF0dHIuZGljdGl0ZW1cIiByYW5nZS1rZXk9XCJDTl9TX05BTUVcIiB2LWlmPVwiYXR0ci5zZWxlY3Q9PWZhbHNlXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCIgOmRpc2FibGVkPVwiYXR0ci5lZGl0P2ZhbHNlOnRydWVcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cIlwiPnt7IGF0dHIuVmFsdWUgfX08L2xhYmVsPlxyXG5cdFx0XHRcdFx0XHRcdDwvcGlja2VyPlxyXG5cdFx0XHRcdFx0XHRcdDxzZWxlY3QtY3kgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIDpuYW1lPVwiYXR0ci5OYW1lXCIgOm9wdGlvbnM9XCJhdHRyLmRpY3RpdGVtXCIgc2hvd0NsZWFySWNvbj1cInRydWVcIiBAY2hhbmdlPVwib25jaGFuZ2UyXCIgdi1lbHNlLWlmPVwiYXR0ci5zZWxlY3Q9PXRydWVcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiA6ZGlzYWJsZWQ9XCJhdHRyLmVkaXQ/ZmFsc2U6dHJ1ZVwiPjwvc2VsZWN0LWN5PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+W3puWPs+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInR4X3RpdGxlMlwiIDpzdHlsZT1cInsnd2lkdGgnOmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoKyclJ31cIj57e2F0dHIuRGlzcE5hbWV9fTo8L3A+XHJcblx0XHRcdFx0XHRcdFx0PHBpY2tlciBjbGFzcz1cInNlY3Rpb25faXB1dCBhdHRyX2ZpZWxkXCIgQGNoYW5nZT1cIm9uY2hhbmdlXCIgOnJhbmdlPVwiYXR0ci5kaWN0aXRlbVwiIHJhbmdlLWtleT1cIkNOX1NfTkFNRVwiIHYtaWY9XCJhdHRyLnNlbGVjdD09ZmFsc2VcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIGNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gKGF0dHIuTm90RW1wdHk9PScxJz8xMDo1KSArJyUnfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwiXCI+e3sgYXR0ci5WYWx1ZSB9fTwvbGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0PC9waWNrZXI+XHJcblx0XHRcdFx0XHRcdFx0PHNlbGVjdC1jeSA6dmFsdWU9XCJhdHRyLlZhbHVlXCIgOm5hbWU9XCJhdHRyLk5hbWVcIiA6b3B0aW9ucz1cImF0dHIuZGljdGl0ZW1cIiBzaG93Q2xlYXJJY29uPVwidHJ1ZVwiIEBjaGFuZ2U9XCJvbmNoYW5nZTJcIiB2LWVsc2UtaWY9XCJhdHRyLnNlbGVjdD09dHJ1ZVwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiPjwvc2VsZWN0LWN5PlxyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlXCI+KjwvaT5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLWdyb3VwXCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOWvueixoSjljZXkuKopJyB8fCBhdHRyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKSdcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOmF0dHIuaGlkZGVuID09ICdUcnVlJz8nbm9uZSc6Jyd9XCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+S4iuS4i+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4X3RpdGxlXCI+e3thdHRyLkRpc3BOYW1lfX06PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWVcIj4qPC9pPjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGV4dC1yaWdodFwiIHYtaWY9XCJhdHRyLlR5cGU9PSflvJXnlKjlr7nosaEo5Y2V5LiqKSdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIEB0YXA9XCJjbGFzc0F0dHJfQWRkUmVmXCIgOmRhdGEtY2xhc3NpZD1cImF0dHIuUmVsQ2xzLnNwbGl0KCd8JylbMF1cIiA6ZGF0YS1jbGFzc25hbWU9XCJhdHRyLlJlbENscy5zcGxpdCgnfCcpWzFdXCIgPjxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtcGx1cy1jaXJjbGVcIj48L2k+PC9hPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHBpY2tlciBjbGFzcz1cInNlbGVjdFwiIEBjaGFuZ2U9XCJjbGFzc0F0dHJfQWRkUmVmXCIgOnJhbmdlPVwiYXR0ci5SZWxDbHNMaXN0XCIgcmFuZ2Uta2V5PVwibmFtZVwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwiXCI+e3sgYXR0ci5WYWx1ZSB9fTwvbGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3BpY2tlcj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIGNsYXNzPVwiY2xhc3NfYXR0cl9hZGRfcmVmXCI+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+W3puWPs+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInR4X3RpdGxlMlwiIDpzdHlsZT1cInsnd2lkdGgnOmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoKyclJ31cIj57e2F0dHIuRGlzcE5hbWV9fTo8L3A+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOiBhdHRyLldpZHRoLnNwbGl0KCclJylbMF0gLSBjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCAtIChhdHRyLk5vdEVtcHR5PT0nMSc/MTA6NSkgLSA5ICsnJSd9XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0MlwiIHYtaWY9XCJhdHRyLlR5cGU9PSflvJXnlKjlr7nosaEo5Y2V5LiqKSdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIEB0YXA9XCJjbGFzc0F0dHJfQWRkUmVmXCIgOmRhdGEtY2xhc3NpZD1cImF0dHIuUmVsQ2xzLnNwbGl0KCd8JylbMF1cIiA6ZGF0YS1jbGFzc25hbWU9XCJhdHRyLlJlbENscy5zcGxpdCgnfCcpWzFdXCIgPjxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtcGx1cy1jaXJjbGVcIj48L2k+PC9hPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0MlwiIHYtaWY9XCJhdHRyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKSdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxwaWNrZXIgY2xhc3M9XCJzZWxlY3RcIiBAY2hhbmdlPVwiY2xhc3NBdHRyX0FkZFJlZlwiIDpyYW5nZT1cImF0dHIuUmVsQ2xzTGlzdFwiIHJhbmdlLWtleT1cIm5hbWVcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cIlwiPnt7IGF0dHIuVmFsdWUgfX08L2xhYmVsPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9waWNrZXI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YSBjbGFzcz1cImNsYXNzX2F0dHJfYWRkX3JlZlwiPjxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtcGx1cy1jaXJjbGVcIj48L2k+PC9hPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlXCI+KjwvaT5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLWdyb3VwXCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOS6uuWRmCdcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOmF0dHIuaGlkZGVuID09ICdUcnVlJz8nbm9uZSc6Jyd9XCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+S4iuS4i+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4X3RpdGxlXCI+e3thdHRyLkRpc3BOYW1lfX06PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWVcIj4qPC9pPjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGV4dC1yaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGEgY2xhc3M9XCJjbGFzc19hdHRyX2FkZF9wZXJcIiBAdGFwPVwiY2xhc3NBdHRyX0FkZFBlcihpbmRleCxpaW5kZXgpXCI+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+W3puWPs+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInR4X3RpdGxlMlwiIDpzdHlsZT1cInsnd2lkdGgnOmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoKyclJ31cIj57e2F0dHIuRGlzcE5hbWV9fTo8L3A+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIDpzdHlsZT1cInsnd2lkdGgnOiBhdHRyLldpZHRoLnNwbGl0KCclJylbMF0gLSBjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCAtIChhdHRyLk5vdEVtcHR5PT0nMSc/MTA6NSkgLSA5ICsnJSd9XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0MlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGEgY2xhc3M9XCJjbGFzc19hdHRyX2FkZF9wZXJcIiBAdGFwPVwiY2xhc3NBdHRyX0FkZFBlcihpbmRleCxpaW5kZXgpXCI+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWVcIj4qPC9pPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZvcm0tZ3JvdXBcIiB2LWlmPVwiYXR0ci5UeXBlPT0n5byV55So6aG555uuJ1wiIDpzdHlsZT1cInsnZGlzcGxheSc6YXR0ci5oaWRkZW4gPT0gJ1RydWUnPydub25lJzonJ31cIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5LiK5LiL5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHhfdGl0bGVcIj57e2F0dHIuRGlzcE5hbWV9fTo8aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZVwiPio8L2k+PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YSBocmVmPVwiI1wiIGNsYXNzPVwiY2xhc3NfYXR0cl9hZGRfcHJqXCIgQHRhcD1cImNsYXNzQXR0cl9BZGRQcmooaW5kZXgsaWluZGV4KVwiPjxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtcGx1cy1jaXJjbGVcIj48L2k+PC9hPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiIGRpc2FibGVkPVwidHJ1ZVwiID5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSflt6blj7PluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJ0eF90aXRsZTJcIiA6c3R5bGU9XCJ7J3dpZHRoJzpjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+e3thdHRyLkRpc3BOYW1lfX06PC9wPlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYXR0cl9maWVsZFwiIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiA6c3R5bGU9XCJ7J3dpZHRoJzogYXR0ci5XaWR0aC5zcGxpdCgnJScpWzBdIC0gY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGggLSAoYXR0ci5Ob3RFbXB0eT09JzEnPzEwOjUpIC0gOSArJyUnfVwiIGRpc2FibGVkPVwidHJ1ZVwiID5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGV4dC1yaWdodDJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIGNsYXNzPVwiY2xhc3NfYXR0cl9hZGRfcHJqXCIgQHRhcD1cImNsYXNzQXR0cl9BZGRQcmooaW5kZXgsaWluZGV4KVwiPjxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtcGx1cy1jaXJjbGVcIj48L2k+PC9hPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlXCI+KjwvaT5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLWdyb3VwXCIgdi1pZj1cImF0dHIuVHlwZT09J+e8lueggSdcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOmF0dHIuaGlkZGVuID09ICdUcnVlJz8nbm9uZSc6Jyd9XCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+S4iuS4i+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4X3RpdGxlXCI+e3thdHRyLkRpc3BOYW1lfX06PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWVcIj4qPC9pPjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiA6ZGlzYWJsZWQ9XCJhdHRyLmVkaXQ/ZmFsc2U6dHJ1ZVwiID5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSflt6blj7PluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJ0eF90aXRsZTJcIiA6c3R5bGU9XCJ7J3dpZHRoJzpjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+e3thdHRyLkRpc3BOYW1lfX06PC9wPlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYXR0cl9maWVsZFwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzogYXR0ci5XaWR0aC5zcGxpdCgnJScpWzBdIC0gY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGggLSAoYXR0ci5Ob3RFbXB0eT09JzEnPzEwOjUpICsnJSd9XCIgOmRpc2FibGVkPVwiYXR0ci5lZGl0P2ZhbHNlOnRydWVcIiA+XHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWVcIj4qPC9pPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZvcm0tZ3JvdXBcIiB2LWlmPVwiYXR0ci5UeXBlPT0n55yB5biC5Yy6J1wiIDpzdHlsZT1cInsnZGlzcGxheSc6YXR0ci5oaWRkZW4gPT0gJ1RydWUnPydub25lJzonJ31cIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5LiK5LiL5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHhfdGl0bGVcIj57e2F0dHIuRGlzcE5hbWV9fTo8aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZVwiPio8L2k+PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdDxwaWNrZXJBZGRyZXNzIGNsYXNzPVwiZGF0ZV9pcHV0XCIgQGNoYW5nZT1cImFkZHJlc3NjaGFuZ2VcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiA+e3thdHRyLlZhbHVlfX08L3BpY2tlckFkZHJlc3M+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwidHhfdGl0bGUyXCIgOnN0eWxlPVwieyd3aWR0aCc6Y2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPnt7YXR0ci5EaXNwTmFtZX19OjwvcD5cclxuXHRcdFx0XHRcdFx0XHQ8cGlja2VyQWRkcmVzcyBjbGFzcz1cImRhdGVfaXB1dCBhdHRyX2ZpZWxkXCIgQGNoYW5nZT1cImFkZHJlc3NjaGFuZ2VcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIGNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gKGF0dHIuTm90RW1wdHk9PScxJz8xMDo1KSArJyUnfVwiPnt7YXR0ci5WYWx1ZX19PC9waWNrZXJBZGRyZXNzPlxyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlXCI+KjwvaT5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHQ8YnV0dG9uIHR5cGU9XCJkZWZhdWx0XCIgQHRhcD1cImNhbmNlbFwiIGNsYXNzPVwiYnRuX2NhbmNlbFwiPuWPlua2iDwvYnV0dG9uPlxyXG5cdFx0PGJ1dHRvbiB0eXBlPVwiZGVmYXVsdFwiIEB0YXA9XCJzYXZhXCIgY2xhc3M9XCJidG5fYWRkXCI+e3t0aXRsZX19PC9idXR0b24+XHJcblx0PC92aWV3PlxyXG48L3RlbXBsYXRlPiBcclxuXHJcbjxzY3JpcHQ+XHJcblx0aW1wb3J0IHBpY2tlckFkZHJlc3MgZnJvbSAnLi4vLi4vanMvcGlja2VyQWRkcmVzcy9waWNrZXJBZGRyZXNzLnZ1ZSdcclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRjb21wb25lbnRzOiB7XHJcbiAgICAgICAgICAgIHBpY2tlckFkZHJlc3NcclxuICAgICAgICB9LFxyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHR0aXRsZTogJ+aWsOWinicsXHJcblx0XHRcdFx0cGFyYW06e30sXHJcblx0XHRcdFx0Y2xhc3NBdHRyTGlzdDpbXSxcclxuXHRcdFx0XHRjbGFzc0dyaWRTdHlsZTpbXSxcclxuXHRcdFx0XHRlZGl0X2luaXRhbF9ldmVudDpcIlwiLCAgLy/lvLnnqpfliJ3lp4vljJbkuovku7ZJRFxyXG5cdFx0XHRcdGVkaXRfb2tfZXZlbnQ6XCJcIiwgICAgICAvL+W8ueeql+eCueWHu09LIOinpuWPkeS6i+S7tklEXHJcblx0XHRcdFx0ZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudDpcIlwiLCAgLy/pgInmi6nnu4TmiJDlr7nosaHml7bosIPnlKhcclxuXHRcdFx0XHRlZGl0X2NvbXBvc2VfY2xzX2lkOlwiXCIsXHJcblx0XHRcdFx0Z2xvYmFsX2F0dHI6W10sXHJcblx0XHRcdFx0cmVmZGF0YXN0b3JlOiBbXSxcdCAgIC8v5byV55So5pWw5o2u5a2Y5YKo5Yy6Ly8ge2F0dHI6J0dfUFJKXycgKyBiaW5kYXR0ciArICdfSUQnLCB2YWx1ZTppbmZvLmlkfVxyXG5cdFx0XHRcdGlucHV0VmFsTGlzdDpbe05hbWU6XCJ0ZXN0XCJ9LHtOYW1lOlwidGVzdDJcIn0se05hbWU6XCJ0ZXN0M1wifSx7TmFtZTpcInRlc3Q0XCJ9LHtOYW1lOlwidGVzdDVcIn0se05hbWU6XCJ0ZXN0NlwifSx7TmFtZTpcInRlc3Q3XCJ9XSxcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdG9uTG9hZChvcHRpb25zKSB7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKG9wdGlvbnMpO1xyXG5cdFx0XHR1bmkuc2V0TmF2aWdhdGlvbkJhclRpdGxlKHsgdGl0bGU6IG9wdGlvbnMudGl0bGVuYW1lfSk7IC8v6K6+572u6aG26YOo5qCH6aKYIFxyXG5cdFx0XHR2YXIgcGFyYW0gPSBKU09OLnBhcnNlKG9wdGlvbnMucGFyYW0pO1xyXG5cdFx0XHR0aGlzLiRkYXRhLnRpdGxlID0gcGFyYW0uQWRkX0J0bk5hbWU/cGFyYW0uQWRkX0J0bk5hbWU6b3B0aW9ucy50aXRsZW5hbWU7IC8v6K6+572u5oyJ6ZKu5paH5a2XXHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKHBhcmFtKTtcclxuXHRcdFx0aWYoIXBhcmFtLkVkaXREbGdNb2RlKXtcclxuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLor6Xlip/og73ngrnmnKrphY3nva7nvJbovpHnqpflj6PvvIzor7fph43mlrDphY3nva7vvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHRcdFx0aWYoIXBhcmFtLkVkaXRfZGxnLk5hbWUpe1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuivpeWKn+iDveeCueacqumFjee9rueql+WPo+agt+W8j++8jOivt+mHjeaWsOmFjee9ru+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLiRkYXRhLnBhcmFtID0gcGFyYW07XHJcblx0XHRcdHZhciBlZGl0X2RsZyA9IHtcclxuXHRcdFx0ICAgIE1vZGVsOiBwYXJhbS5FZGl0RGxnTW9kZSxcclxuXHRcdFx0ICAgIE5hbWU6IHBhcmFtLkVkaXRfZGxnLk5hbWVcclxuXHRcdFx0fVxyXG5cdFx0XHR2YXIgZGF0YUluZm8gPSB7XHJcblx0XHRcdFx0Y2xhc3NfaWQ6IHBhcmFtLmNsc2lkXHJcblx0XHRcdH07XHJcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdCR0aGlzLiRzdG9yZS5zdGF0ZS50aGlzYXJlYUZ1bmNJRCA9IHBhcmFtLmNsc2lkO1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZygkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRjbGFzc0F0dHJMaXN0KTtcclxuXHRcdFx0IC8v6I635Y+WXHJcblx0XHRcdGlmKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzQXR0ckxpc3Qpe1xyXG5cdFx0XHQgXHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0ID0gJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Y2xhc3NBdHRyTGlzdC5kYXRhO1xyXG5cdFx0XHRcdCR0aGlzLmNsYXNzR3JpZFN0eWxlSW5mbygpO1xyXG5cdFx0XHR9ZWxzZVxyXG5cdFx0XHRcdCR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnY2xhc3NBdHRyTGlzdCcsZGF0YUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coc3VjY2Vzcyk7XHJcblx0XHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QgPSBzdWNjZXNzLmRhdGE7XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHQkdGhpcy5jbGFzc0dyaWRTdHlsZUluZm8oKTtcclxuXHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzFcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzEuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdGNhbmNlbChlKXtcclxuXHRcdFx0XHR1bmkubmF2aWdhdGVCYWNrKHtcclxuXHRcdFx0XHRcdGRlbHRhOjEgLy/ov5Tlm57lsYLmlbDvvIwy5YiZ5LiK5LiK6aG1XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGFzeW5jIGNsYXNzR3JpZFN0eWxlSW5mbygpe1xyXG5cdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdFx0dmFyIGdyaWRzdHlsZUluZm8gPSB7XHJcblx0XHRcdFx0XHRjbGFzc19pZDogJHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXHJcblx0XHRcdFx0XHRuYW1lOiAkdGhpcy4kZGF0YS5wYXJhbS5FZGl0X2RsZy5OYW1lLFxyXG5cdFx0XHRcdFx0dHlwZTogJzInXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHQkdGhpcy4kc3RvcmUuc3RhdGUudGhpc0VkaXROYW1lID0gJHRoaXMuJGRhdGEucGFyYW0uRWRpdF9kbGcuTmFtZVxyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzR3JpZFN0eWxlSW5mbyk7XHJcblx0XHRcdFx0IC8v6I635Y+WXHJcblx0XHRcdFx0aWYoJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Y2xhc3NHcmlkU3R5bGVJbmZvKXtcclxuXHRcdFx0XHQgXHQkdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZSA9ICR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzR3JpZFN0eWxlSW5mby5kYXRhO1xyXG5cdFx0XHRcdFx0JHRoaXMuY2xhc3NfYXR0cl9pbml0KCk7XHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHQvL2NvbnNvbGUubG9nKGdyaWRzdHlsZUluZm8pO1xyXG5cdFx0XHRcdFx0JHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdjbGFzc0dyaWRTdHlsZUluZm8nLGdyaWRzdHlsZUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHRcdHN1Y2Nlc3MuZGF0YS5TdHlsZURlZiA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhLlN0eWxlRGVmKTtcclxuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZSA9IHN1Y2Nlc3MuZGF0YTtcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHQkdGhpcy5jbGFzc19hdHRyX2luaXQoKTtcclxuXHRcdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xLjJcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMS4zXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdG9udGFwKGUpeyAvL+aJq+eggeWKn+iDvVxyXG5cdFx0XHRcdC8vY29uc29sZS5sb2coZS50YXJnZXQpXHJcblx0XHRcdFx0Z2V0QXBwKCkub25TY2FuKChyZXN1bHQpPT57XHJcblx0XHRcdFx0XHQvL2NvbnNvbGUubG9nKHJlc3VsdC5kZWNvZGVkYXRhKTtcclxuXHRcdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZT1yZXN1bHQuZGVjb2RlZGF0YTtcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRvbmFycm93KGluZGV4LG9wZW4pe1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGluZGV4KyctLScrb3Blbik7XHJcblx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5PcGVuPW9wZW49PXRydWU/ZmFsc2U6dHJ1ZTtcclxuXHRcdFx0fSxcclxuXHRcdFx0b25kYXRlVGltZShlKSB7XHJcblx0XHRcdFx0Ly9jb25zb2xlLmxvZyhlLnRhcmdldClcclxuXHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9ZS50YXJnZXQudmFsdWU7XHJcblx0XHRcdH0sXHJcblx0XHRcdG9uY2hhbmdlKGUpIHtcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhlLnRhcmdldCk7XHJcblx0XHRcdFx0dmFyIHZhbHVlPXRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5kaWN0aXRlbVtlLnRhcmdldC52YWx1ZV07XHJcblx0XHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXTtcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhX2F0dHIpO1xyXG5cdFx0XHRcdGlmICh2YWx1ZS5OYW1lICE9IGRhdGFfYXR0ci5WYWx1ZSkge1xyXG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlPXZhbHVlLk5hbWU7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUpO1xyXG5cdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uYWN0aW9uO1xyXG5cdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcclxuXHRcdFx0XHQgICAgICAgIC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcclxuXHRcdFx0XHQgICAgICAgIHZhciByZXE9W107XHJcblx0XHRcdFx0ICAgICAgICB2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XHJcblx0XHRcdFx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0ICAgICAgICBcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcclxuXHRcdFx0XHQgICAgICAgIFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0ICAgICAgICBcdFx0dmFyIGFyID0gYXR0cltqXTtcclxuXHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKVxyXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0aWYoYXIuVmFsdWU9PSfor7cnKSBhci5WYWx1ZT0nJztcclxuXHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcclxuXHRcdFx0XHQgICAgICAgIFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWxJRCA/YXIuVmFsSUQgOicnIH0pO1xyXG5cdFx0XHRcdCAgICAgICAgXHRcdGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXHJcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZT8nMSc6JzAnfSk7XHJcblx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZVxyXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcclxuXHRcdFx0XHQgICAgICAgIFx0fVxyXG5cdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcclxuXHRcdFx0XHQgICAgICAgICAgICBlZHR5cGU6IFwiMFwiLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogJycsXHJcblx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiAnJyxcclxuXHRcdFx0XHQgICAgICAgICAgICByb2JqaWQ6ICcnLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogJycsXHJcblx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXHJcblx0XHRcdFx0ICAgICAgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogcmVxLFxyXG5cdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XHJcblx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0XHJcblx0XHRcdH0sXHJcblx0XHRcdG9uY2hhbmdlMihpdGVtLHZhbHVlLGRlbHZhbHVlKSB7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coaXRlbSk7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2codmFsdWUpO1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGRlbHZhbHVlKTtcclxuXHRcdFx0XHRpZihpdGVtLmxlbmd0aD09MCl7IC8v5Li656m65pe277yM5riF56m65bGe5oCndmFsdWVcclxuXHRcdFx0XHRcdHZhciBpbmRleCAsaWluZGV4LGRpbmRleD0wO1xyXG5cdFx0XHRcdFx0Zm9yKHZhciBpIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCl7XHJcblx0XHRcdFx0XHRcdGZvcih2YXIgaiBpbiB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cil7XHJcblx0XHRcdFx0XHRcdFx0Zm9yKHZhciBkIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpXS5BdHRyW2pdLmRpY3RpdGVtKXtcclxuXHRcdFx0XHRcdFx0XHRcdGlmKGRlbHZhbHVlWzBdLk5hbWUgPT0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHJbal0uZGljdGl0ZW1bZF0uTmFtZSl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpXS5BdHRyW2pdLlZhbHVlPVwiXCI7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0Zm9yKHZhciB2IGluIGl0ZW0pe1xyXG5cdFx0XHRcdFx0dmFyIGluZGV4ICxpaW5kZXgsZGluZGV4PTA7XHJcblx0XHRcdFx0XHRmb3IodmFyIGkgaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0KXtcclxuXHRcdFx0XHRcdFx0Zm9yKHZhciBqIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpXS5BdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRmb3IodmFyIGQgaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHJbal0uZGljdGl0ZW0pe1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYoaXRlbVt2XS5OYW1lID09IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpXS5BdHRyW2pdLmRpY3RpdGVtW2RdLk5hbWUpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpbmRleD1pO2lpbmRleD1qO2RpbmRleD1kO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dmFyIGl0ZW12YWx1ZSA9IGl0ZW1bdl07XHJcblx0XHRcdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF07XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGRhdGFfYXR0cik7XHJcblx0XHRcdFx0XHRpZiAoaXRlbXZhbHVlLk5hbWUgIT0gZGF0YV9hdHRyLlZhbHVlKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdLlZhbHVlPXZhbHVlO1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5WYWx1ZSk7XHJcblx0XHRcdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF0uYWN0aW9uO1xyXG5cdFx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xyXG5cdFx0XHRcdFx0ICAgICAgICAvLyBzZWxmLmV2ZW50X25vX3N1YiA9IDE7XHJcblx0XHRcdFx0XHQgICAgICAgIHZhciByZXE9W107XHJcblx0XHRcdFx0XHQgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcclxuXHRcdFx0XHRcdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0ICAgICAgICBcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcclxuXHRcdFx0XHRcdCAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdCAgICAgICAgXHRcdHZhciBhciA9IGF0dHJbal07XHJcblx0XHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKVxyXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xyXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZT09J+W8leeUqOmhueebricpXHJcblx0XHRcdFx0XHQgICAgICAgIFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWxJRCA/YXIuVmFsSUQgOicnIH0pO1xyXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8JylcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWU/JzEnOicwJ30pO1xyXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZSBpZihhci5UeXBlPT0n5a2X5YW4JyB8fCBhci5UeXBlPT0n5a2X5YW4LeWtl+espuS4sicpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGl0ZW12YWx1ZS5OYW1lfSk7XHJcblx0XHRcdFx0XHQgICAgICAgIFx0XHRlbHNlXHJcblx0XHRcdFx0XHQgICAgICAgIFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZSA/YXIuVmFsdWUgOicnfSk7XHJcblx0XHRcdFx0XHQgICAgICAgIFx0fVxyXG5cdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHQgICAgICAgIHZhciBpbmZvID0ge1xyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIGVkdHlwZTogXCIwXCIsXHJcblx0XHRcdFx0XHQgICAgICAgICAgICBwcm9qZWN0aWQ6ICcnLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogJycsXHJcblx0XHRcdFx0XHQgICAgICAgICAgICB1c2VybG9naW46ICcnLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXHJcblx0XHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIGF0dHI6IHJlcSxcclxuXHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0ICAgICAgICB0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcclxuXHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRvbmV2ZW50KGUpe1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcclxuXHRcdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dO1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGRhdGFfYXR0cik7XHJcblx0XHRcdFx0aWYgKGUudGFyZ2V0LnZhbHVlICE9IGRhdGFfYXR0ci5WYWx1ZSkge1xyXG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlPWUudGFyZ2V0LnZhbHVlO1xyXG5cdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uYWN0aW9uO1xyXG5cdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcclxuXHRcdFx0XHQgICAgICAgIC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcclxuXHRcdFx0XHQgICAgICAgIHZhciByZXE9W107XHJcblx0XHRcdFx0ICAgICAgICB2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XHJcblx0XHRcdFx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0ICAgICAgICBcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcclxuXHRcdFx0XHQgICAgICAgIFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0ICAgICAgICBcdFx0dmFyIGFyID0gYXR0cltqXTtcclxuXHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKVxyXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0aWYoYXIuVmFsdWU9PSfor7cnKSBhci5WYWx1ZT0nJztcclxuXHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcclxuXHRcdFx0XHQgICAgICAgIFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWxJRCA/YXIuVmFsSUQgOicnIH0pO1xyXG5cdFx0XHRcdCAgICAgICAgXHRcdGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXHJcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZT8nMSc6JzAnfSk7XHJcblx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZVxyXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcclxuXHRcdFx0XHQgICAgICAgIFx0fVxyXG5cdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcclxuXHRcdFx0XHQgICAgICAgICAgICBlZHR5cGU6IFwiMFwiLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogJycsXHJcblx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiAnJyxcclxuXHRcdFx0XHQgICAgICAgICAgICByb2JqaWQ6ICcnLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogJycsXHJcblx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXHJcblx0XHRcdFx0ICAgICAgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogcmVxLFxyXG5cdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgZGF0YV9hdHRyKTtcclxuXHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRcclxuXHRcdFx0fSxcclxuXHRcdFx0b25jaGVjayhlKSB7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZS50YXJnZXQpO1xyXG5cdFx0XHRcdHZhciBpc2NoZWNrZWQgPSBlLnRhcmdldC5kYXRhc2V0LmlzY2hlY2s/ZmFsc2U6dHJ1ZTtcclxuXHRcdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dO1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGRhdGFfYXR0cik7XHJcblx0XHRcdFx0aWYgKGlzY2hlY2tlZCAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcclxuXHRcdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZT1pc2NoZWNrZWQ7XHJcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5hY3Rpb247XHJcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xyXG5cdFx0XHRcdCAgICAgICAgLy8gc2VsZi5ldmVudF9ub19zdWIgPSAxO1xyXG5cdFx0XHRcdCAgICAgICAgdmFyIHJlcT1bXTtcclxuXHRcdFx0XHQgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcclxuXHRcdFx0XHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHQgICAgICAgIFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xyXG5cdFx0XHRcdCAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHQgICAgICAgIFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xyXG5cdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXHJcblx0XHRcdFx0ICAgICAgICBcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xyXG5cdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGU9PSflvJXnlKjpobnnm64nKVxyXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbElEID9hci5WYWxJRCA6JycgfSk7XHJcblx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8JylcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlPycxJzonMCd9KTtcclxuXHRcdFx0XHRcdFx0XHRcdGVsc2VcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdCAgICAgICAgXHR9XHJcblx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcclxuXHRcdFx0XHQgICAgICAgICAgICBldmVudGlkOiBldmVudGlkLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIGVkdHlwZTogXCIwXCIsXHJcblx0XHRcdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdFx0XHQgICAgICAgICAgICByY2xzaWQ6ICcnLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogJycsXHJcblx0XHRcdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdFx0XHQgICAgICAgICAgICBjbHNpZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCxcclxuXHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcclxuXHRcdFx0XHQgICAgICAgICAgICBhdHRyOiByZXEsXHJcblx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0ICAgICAgICB0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcclxuXHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRcclxuXHRcdFx0fSxcclxuXHRcdFx0aW5wdXRWYWxMaXN0SXNEZWwoaW5kZXgpe1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGluZGV4KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEuaW5wdXRWYWxMaXN0LnNwbGljZShpbmRleCwgMSk7IC8v5Yig6ZmkdGFiUGFnZWpzb27nmoTlhoXlrrlcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmlucHV0VmFsTGlzdCk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGFkZHJlc3NjaGFuZ2UoZSkge1xyXG5cdFx0XHQgICAgLy8gY29uc29sZS5sb2coZS50YXJnZXQpO1xyXG5cdFx0XHQgICAgY29uc29sZS5sb2coZS5kYXRhLmpvaW4oJzsnKSlcclxuXHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9ZS5kYXRhLmpvaW4oJzsnKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0Y2xhc3NBdHRyX2V4dEJ1dHRvbihpbmRleCxpaW5kZXgpe1xyXG5cdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdFx0dmFyIGJlZm9yZV9jbGlja19idXR0b24gPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF0uYmVmb3JlX2NsaWNrX2J1dHRvbjtcclxuXHRcdFx0XHR2YXIgYnV0dG9uX2NhbGxiYWNrID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdLmJ1dHRvbl9jYWxsYmFjaztcclxuXHRcdFx0XHRpZighYmVmb3JlX2NsaWNrX2J1dHRvbil7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCJiZWZvcmVfY2xpY2tfYnV0dG9uLWV2ZW50X2lk5Li656m677yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmKCFidXR0b25fY2FsbGJhY2spe1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OlwiYnV0dG9uX2NhbGxiYWNrLWV2ZW50X2lk5Li656m677yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHZhciBkYXRhX2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XTtcclxuXHRcdFx0XHR0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudF9SZXR1cm4oYmVmb3JlX2NsaWNrX2J1dHRvbiwgZGF0YV9hdHRyLCBidXR0b25fY2FsbGJhY2ssIGluZGV4LGlpbmRleCk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGNsYXNzQXR0cl9BZGRQZXIoaW5kZXgsaWluZGV4KXtcclxuXHRcdFx0XHR2YXIgcGFyYW09e2luZGV4OmluZGV4LGlpbmRleDppaW5kZXh9O1xyXG5cdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdFx0dXJsOicuLi9zZWxwc24vaW5kZXg/bXVsaXQ9ZmFsc2UmcGFyYW09JytKU09OLnN0cmluZ2lmeShwYXJhbSksXHJcblx0XHRcdFx0XHRldmVudHM6e1xyXG5cdFx0XHRcdFx0XHRBZGRQZXIoZGF0YSxwYXJhbSl7IFxyXG5cdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHBhcmFtKTtcclxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhKTtcclxuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsdWU9ZGF0YVswXS5OYW1lO1xyXG5cdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XS5WYWxJRD1kYXRhWzBdLkxvZ2luKyc7JytkYXRhWzBdLk5hbWU7XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uYWN0aW9uO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChldmVudGlkKSB7XHJcblx0XHRcdFx0XHRcdFx0ICAgIGV2ZW50aWQgPSBldmVudGlkLnRyaW0oKTtcclxuXHRcdFx0XHRcdFx0XHQgICAgaWYgKGV2ZW50aWQpIHtcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgIHZhciBpbmZvID0ge1xyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWR0eXBlOiBcIjRcIixcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBwcm9qZWN0aWQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogXCJcIixcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICB1c2VybG9naW46IGRhdGFbMF0uTG9naW4sXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIG9iamlkOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIGF0dHI6IFtdLFxyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gdmFyIGRhdGFfYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XTtcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICR0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcclxuXHRcdFx0XHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRjbGFzc0F0dHJfQWRkUmVmKGUpe1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcclxuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLmraTlip/og73ov5jmnKrlrp7njrDvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHQvLyB2YXIgdmFsdWU9dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlJlbENsc1tlLnRhcmdldC52YWx1ZV07XHJcblx0XHRcdFx0Ly8gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlPXZhbHVlO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRjbGFzc0F0dHJfQWRkUHJqKGluZGV4LGlpbmRleCl7XHJcblx0XHRcdFx0dmFyIHBhcmFtPXtpbmRleDppbmRleCxpaW5kZXg6aWluZGV4fTtcclxuXHRcdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcclxuXHRcdFx0XHRcdHVybDonLi4vc2VsUHJqL2luZGV4P3JlbGF0aW9uPS0xJnBhcmFtPScrSlNPTi5zdHJpbmdpZnkocGFyYW0pLFxyXG5cdFx0XHRcdFx0ZXZlbnRzOntcclxuXHRcdFx0XHRcdFx0QWRkUGVyKGRhdGEscGFyYW0peyBcclxuXHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhwYXJhbSk7XHJcblx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZGF0YSk7XHJcblx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbHVlPWRhdGFbMF0uTmFtZTtcclxuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsSUQ9ZGF0YVswXS5JRCsnOycrZGF0YVswXS5OYW1lO1xyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdHZhciBldmVudGlkID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLmFjdGlvbjtcclxuXHRcdFx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xyXG5cdFx0XHRcdFx0XHRcdCAgICBldmVudGlkID0gZXZlbnRpZC50cmltKCk7XHJcblx0XHRcdFx0XHRcdFx0ICAgIGlmIChldmVudGlkKSB7XHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBldmVudGlkOiBldmVudGlkLFxyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIGVkdHlwZTogXCIyXCIsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiBkYXRhWzBdLklELFxyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIHJjbHNpZDogXCJcIixcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICByb2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIGNsc2lkOiAkdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCxcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBhdHRyOiBbXSxcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAvLyB2YXIgZGF0YV9hdHRyID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdO1xyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgJHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xyXG5cdFx0XHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdHNhdmEoKXtcclxuXHRcdFx0XHRpZiAodGhpcy4kZGF0YS5lZGl0X29rX2V2ZW50KVxyXG5cdFx0XHRcdFx0dGhpcy5PS0RhdGFPYmpSdW5DdXN0b21FdmVudCgpO1xyXG5cdFx0XHRcdGVsc2VcclxuXHRcdFx0XHRcdHRoaXMuYWRkKCk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGFkZCgpe1xyXG5cdFx0XHRcdHVuaS5zaG93TG9hZGluZyh7XHJcblx0XHRcdFx0XHR0aXRsZTpcIuWKoOi9veS4rS4uLlwiXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dmFyIHJlcT1bXTtcclxuXHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XHJcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xyXG5cdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XHJcblx0XHRcdFx0XHRcdGlmKGFyLlZhbHVlPT0n6K+36YCJ5oupJyB8fCBhci5WYWx1ZT09J+KAlOKAlOivt+mAieaLqeKAlOKAlCcpIGFyLlZhbHVlPScnO1xyXG5cdFx0XHRcdFx0XHRpZihhci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKVxyXG5cdFx0XHRcdFx0XHRcdGlmKGFyLlZhbHVlPT0n6K+3JykgYXIuVmFsdWU9Jyc7XHJcblx0XHRcdFx0ICAgICAgICBpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcclxuXHRcdFx0XHQgICAgICAgIFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcclxuXHRcdFx0XHQgICAgICAgIGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXHJcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWU/JzEnOicwJ30pO1xyXG5cdFx0XHRcdCAgICAgICAgZWxzZSBpZihhci5UeXBlPT0n5a2X5YW4JyB8fCBhci5UeXBlPT0n5a2X5YW4LeWtl+espuS4sicpe1xyXG5cdFx0XHRcdFx0XHRcdGlmKGFyLnNlbGVjdD09dHJ1ZSl7IC8v5Yik5pat5LiL5ouJ5piv5ZCm5aSa6YCJXHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsU3RyID1cIlwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0Zm9yKHZhciB2IGluIGFyLlZhbHVlKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYodmFsU3RyKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbFN0cis9XCI7XCI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhbFN0cis9YXIuVmFsdWVbdl07XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IG5hbWU6IGFyLk5hbWUsIHZhbHVlOiB2YWxTdHJ9KTtcclxuXHRcdFx0XHRcdFx0XHR9ZWxzZVxyXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWV9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRlbHNlXHJcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWUgP2FyLlZhbHVlIDonJ30pO1xyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRpZiAoKGFyLk5vdEVtcHR5ID09ICcxJyB8fCBhci5ub3RlbXB0eSA9PSB0cnVlKSAmJiAhYXIuVmFsdWUpIHtcclxuXHRcdFx0XHRcdFx0Ly8gaWYoYXIubm90RW1wdHk9PScxJyl7XHJcblx0XHRcdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHRcdFx0XHRcdFx0Ly8gdW5pLnNob3dUb2FzdCh7dGl0bGU6YXIuRGlzcE5hbWUrJ+S4jeiDveS4uuepuu+8gScsaWNvbjpcInN1Y2Nlc3NcIixkdXJhdGlvbjozMDAwfSk7XHJcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OmFyLkRpc3BOYW1lKyfkuI3og73kuLrnqbrvvIEnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR2YXIgZW52aXJvbWVudCA9IHtcclxuXHRcdFx0XHQgICAgICdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XHJcblx0XHRcdFx0ICAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsICAgICAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4ZcclxuXHRcdFx0XHQgICAgICdidXR0b24nOiAndG9wJywgICAvLyB0b3AvYm90dG9tXHJcblx0XHRcdFx0ICAgICBidXR0b25fbmFtZTogJ+aWsOWinicsXHJcblx0XHRcdFx0ICAgICBtYXN0ZXI6IHtcclxuXHRcdFx0XHQgICAgICAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsIFxyXG5cdFx0XHRcdCAgICAgfVxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0IFxyXG5cdFx0XHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHRcdFx0ICAgIGNsYXNzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCBkYXRhX29ial9pZDogJycsIG1hc3RlcmNsc2lkOiAnJyxcclxuXHRcdFx0XHQgICAgcmVxOiBKU09OLnN0cmluZ2lmeShyZXEpLCB1cGZpbGU6IEpTT04uc3RyaW5naWZ5KFtdKSwgcG9zdF9kYXRhOiBKU09OLnN0cmluZ2lmeSh7fSksXHJcblx0XHRcdFx0ICAgIGNvbXBvc2U6IEpTT04uc3RyaW5naWZ5KFtdKSwgcmVmZGF0YXN0b3JlOiBKU09OLnN0cmluZ2lmeShbXSksIGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpLCBcclxuXHRcdFx0XHRcdG5vdF90cmlnZ2VyX3N5c19ldmVudDogJydcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdC8vIHJldHVyblxyXG5cdFx0XHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcclxuXHRcdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnYWRkY2xhc3NhdHRyJyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xyXG5cdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHR2YXIgYWN0aW9uID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEuQWN0aW9uKTtcclxuXHRcdFx0XHRcdFx0aWYoYWN0aW9uLnJldD09JzAnKXtcclxuXHRcdFx0XHRcdFx0XHRpZihhY3Rpb24ucmVzdWx0X3R5cGU9PScwJyl7XHJcblx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHt0aXRsZTphY3Rpb24ucmVzdWx0LGljb246XCJzdWNjZXNzXCIsZHVyYXRpb246MzAwMH0pO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHQvLyBcIntcInJldFwiOjAsIFwicmVzdWx0X3R5cGVcIjowLCBcInJlc3VsdFwiOlwi5Yib5bu65oiQ5YqfMTIzMTIzMTIzXCIsXCJpbmZvXCI6XCJcIn1cIlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdC8v5Yi35pawXHJcblx0XHRcdFx0XHRcdHVuaS5yZWRpcmVjdFRvKHtcclxuXHRcdFx0XHRcdFx0XHR1cmw6Jy4uL21vZGFsL2NsYXNzQXR0cj9wYXJhbT0nK0pTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEucGFyYW0pK1wiJnRpdGxlbmFtZT1cIit0aGlzLiRkYXRhLnRpdGxlXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHQvLyB0aGlzLmNsYXNzX2F0dHJfaW5pdCgpO1xyXG5cdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRjbGFzc19hdHRyX2luaXQoKXtcclxuXHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGVcclxuXHRcdFx0XHR2YXIgbmV3YXR0cmxpc3QgPSBbXTtcclxuXHRcdFx0XHRpZiAodGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0Lmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdCAgICAgICAgdmFyIG9wZW4gPSBhdHRybGlzdFtpXS5vcGVuO1xyXG5cdFx0XHRcdCAgICAgICAgdmFyIG5hbWUgPSBhdHRybGlzdFtpXS5hdHRyZ3JvdXBfbmFtZTtcclxuXHRcdFx0XHQgICAgICAgIHZhciBhdHRycyA9IGF0dHJsaXN0W2ldLmF0dHJzO1xyXG5cdFx0XHRcdCAgICAgICAgZm9yICh2YXIgcyA9IDA7IHMgPCB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBzKyspIHtcclxuXHRcdFx0XHQgICAgICAgICAgICB2YXIgY2xzYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtzXTtcclxuXHRcdFx0XHQgICAgICAgICAgICBpZiAobmFtZSA9PSBjbHNhdHRyLk5hbWUpIHtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgdmFyIGF0dHIgPSBbXTtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhdHRycy5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCBjbHNhdHRyLkF0dHIubGVuZ3RoOyBsKyspIHtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2EgPSBjbHNhdHRyLkF0dHJbbF07XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHJzW2pdLmF0dHIgPT0gY2EuTmFtZSkge1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5hY3Rpb24gPSBhdHRyc1tqXS5hY3Rpb247XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmVkaXQgPSBhdHRyc1tqXS5lZGl0O1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5ub3RlbXB0eSA9IGF0dHJzW2pdLm5vdGVtcHR5O1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5leHRfYnV0dG9uID0gYXR0cnNbal0uZXh0X2J1dHRvbjtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuYnV0dG9uX2ltZyA9IGF0dHJzW2pdLmJ1dHRvbl9pbWc7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmJ1dHRvbl90b29sdGlwID0gYXR0cnNbal0uYnV0dG9uX3Rvb2x0aXA7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmJlZm9yZV9jbGlja19idXR0b24gPSBhdHRyc1tqXS5iZWZvcmVfY2xpY2tfYnV0dG9uO1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5idXR0b25fY2FsbGJhY2sgPSBhdHRyc1tqXS5idXR0b25fY2FsbGJhY2s7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmhpZGRlbiA9IGF0dHJzW2pdLmhpZGRlbjtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Euc2VsZWN0ID0gYXR0cnNbal0uc2VsZWN0PT11bmRlZmluZWQ/ZmFsc2U6YXR0cnNbal0uc2VsZWN0O1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPVwiXCI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5kaWN0aXRlbSl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkaWN0aXRlbWxpc3Q9W107XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGQgPSAwOyBkIDwgY2EuZGljdGl0ZW0ubGVuZ3RoOyBkKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5kaWN0aXRlbVtkXS5sYWJlbD1jYS5kaWN0aXRlbVtkXS5DTl9TX05BTUU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW1bZF0udmFsdWU9Y2EuZGljdGl0ZW1bZF0uQ05fU19OQU1FO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLnNlbGVjdCA9PSB0cnVlKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gW107Ly9jYS5kaWN0aXRlbVswXS5DTl9TX05BTUU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSAn6K+36YCJ5oupJzsvL2NhLmRpY3RpdGVtWzBdLkNOX1NfTkFNRTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLlR5cGU9PSfml6XmnJ8nIHx8IGNhLlR5cGU9PSfml7bpl7QnKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIG5vd0RhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGF0ZSA9IHt5ZWFyOiBub3dEYXRlLmdldEZ1bGxZZWFyKCksbW9udGg6IG5vd0RhdGUuZ2V0TW9udGgoKSArIDEsZGF5OiBub3dEYXRlLmdldERhdGUoKX1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBkYXRlLnllYXIgKyAnLScgKyAoZGF0ZS5tb250aCA+PSAxMCA/IGRhdGUubW9udGggOiAnMCcgKyBkYXRlLm1vbnRoKSArICctJyArIChkYXRlLmRheSA+PSAxMCA/IGRhdGUuZGF5IDogJzAnICsgZGF0ZS5kYXkpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJyl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByZWxDbHNMaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0cl9yZXNjbHMgPSBjYS5SZWxDbHMuc3BsaXQoJywnKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yKHZhciBpaSBpbiBhdHRyX3Jlc2Nscyl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJlc2NscyA9IGF0dHJfcmVzY2xzW2lpXS5zcGxpdCgnfCcpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlbENsc0xpc3QucHVzaCh7aWQ6cmVzY2xzWzBdLG5hbWU6cmVzY2xzWzFdfSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuUmVsQ2xzTGlzdCA9IHJlbENsc0xpc3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gJ+ivtyc7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5UeXBlPT0n55yB5biC5Yy6JylcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSAn6K+36YCJ5oupJztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLlR5cGU9PSfluIPlsJTlgLwnKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5wdXNoKGNhKTtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgbmV3YXR0cmxpc3QucHVzaCh7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBCa0NvbG9yOiBjbHNhdHRyLkJrQ29sb3IsXHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBIYXNBY2U6IGNsc2F0dHIuSGFzQWNlLFxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgSW1nRm9udFN0eWxlOiBjbHNhdHRyLkltZ0ZvbnRTdHlsZSxcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIE5hbWU6IGNsc2F0dHIuTmFtZSxcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIE9yZGVyOiBjbHNhdHRyLk9yZGVyLFxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgT3Blbjogb3BlbixcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIEF0dHI6IGF0dHIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnRyb2xfc3R5bGU6dGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5jb250cm9sX3N0eWxlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZV9wX3dkaXRoOnRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYudGl0bGVfcF93ZGl0aFxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICB9KVxyXG5cdFx0XHRcdCAgICAgICAgICAgIH1cclxuXHRcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdCAgICBpZiAobmV3YXR0cmxpc3QubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdCAgICAgICAgdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0ID0gbmV3YXR0cmxpc3Q7XHJcblx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHRcdHZhciByZXE9W107XHJcblx0XHRcdFx0ICAgIGlmICh0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmKSB7XHJcblx0XHRcdFx0ICAgICAgICAgaWYgKHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuc2hvd19zdHlsZS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgdmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5zaG93X3N0eWxlXHJcblx0XHRcdFx0ICAgICAgICAgICAgLy8gJGVsLmZpbmQoJy5hdHRyX2ZpZWxkJykucHJvcCgncmVhZG9ubHknLCB0cnVlKTtcclxuXHRcdFx0XHQgICAgICAgICAgICAvLyAkZWwuZmluZCgnLmF0dHJfZmllbGQnKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpO1xyXG5cdFx0XHRcdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgdmFyIGF0dHIgPSBhdHRybGlzdFtpXS5hdHRyc1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIHZhciBhciA9IGF0dHJbal07XHJcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuYXR0ciwgdmFsOiBhci52YWx1ZT9hci52YWx1ZTonJyB9KTtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgICAgIH1cclxuXHRcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHRcdH1cdFxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHR2YXIgZXZlbnRsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5ldmVudDtcclxuXHRcdFx0XHRcdGlmIChldmVudGxpc3QpIHtcclxuXHRcdFx0XHRcdCAgICBpZiAoZXZlbnRsaXN0Lmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudGxpc3QubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIGlmIChldmVudGxpc3RbaV0uZXZlbnRfaWQgPT0gJ2JlZm9yZV9vaycpIHtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLmVkaXRfb2tfZXZlbnQgPSBldmVudGxpc3RbaV07XHJcblx0XHRcdFx0XHQgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50bGlzdFtpXS5ldmVudF9pZCA9PSAnaW5pdGlhbCcpIHtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLmVkaXRfaW5pdGFsX2V2ZW50ID0gZXZlbnRsaXN0W2ldO1xyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudGxpc3RbaV0uZXZlbnRfaWQgPT0gJ2JlZm9yZV9zZWxlY3RfY29tcG9zZScpIHtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLmVkaXRfc2VsZWN0X2NvbXBvc2VfZXZlbnQgPSBldmVudGxpc3RbaV0uc2NyaXBfaWQ7XHJcblx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5lZGl0X2NvbXBvc2VfY2xzX2lkID0gZXZlbnRsaXN0W2ldLmNvbXBvc2VfY2xzX2lkO1xyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgfVxyXG5cdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcSk7XHJcblx0XHRcdFx0XHRpZiAodGhpcy4kZGF0YS5lZGl0X2luaXRhbF9ldmVudCkge1xyXG5cdFx0XHRcdFx0ICAgIHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5lZGl0X2luaXRhbF9ldmVudC5zY3JpcF9pZDtcclxuXHRcdFx0XHRcdCAgICB2YXIgaW5mbyA9IHtcclxuXHRcdFx0XHRcdCAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcclxuXHRcdFx0XHRcdCAgICAgICAgZWR0eXBlOiBcIjBcIixcclxuXHRcdFx0XHRcdCAgICAgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgcmNsc2lkOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgcm9iamlkOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXHJcblx0XHRcdFx0XHQgICAgICAgIG9iamlkOiBcIlwiLFxyXG5cdFx0XHRcdFx0ICAgICAgICBhdHRyOiByZXEsXHJcblx0XHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdFx0ICAgIHRoaXMuaW5pX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUpO1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0KTtcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLmnKrmib7liLDlj6/mmL7npLrnmoTnmoTlsZ7mgKdcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdGluaV9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyl7XHJcblx0XHRcdFx0dmFyIHBhcmFtID0ge1xyXG5cdFx0XHRcdCAgICBFZGl0U3R5bGU6IHRoaXMuJGRhdGEucGFyYW0uRWRpdF9kbGcuTmFtZSxcclxuXHRcdFx0XHQgICAgVmlld1N0eWxlOiB0aGlzLiRkYXRhLnBhcmFtLkVkaXRfZGxnLk5hbWUsXHJcblx0XHRcdFx0ICAgIE5vdFRyaWdnZXJTeXNFdmVudDogMCxcclxuXHRcdFx0XHQgICAgZW52aXJvbWVudDoge1xyXG5cdFx0XHRcdCAgICAgICAgJ2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcclxuXHRcdFx0XHQgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgICAgIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxyXG5cdFx0XHRcdCAgICAgICAgJ2J1dHRvbic6ICd0b3AnLCAgIC8vIHRvcC9ib3R0b21cclxuXHRcdFx0XHQgICAgICAgIGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcclxuXHRcdFx0XHQgICAgICAgIG1hc3Rlcjoge1xyXG5cdFx0XHRcdCAgICAgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRjbHNfaWRcclxuXHRcdFx0XHQgICAgICAgICAgICAvL29ial9pZDogJycgIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEb2JqX2lkXHJcblx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dmFyIGlucHV0cGFyYW1ldGVyID0gJyc7XHJcblx0XHRcdFx0dmFyIGdsb2JhbF9hdHRyID0gJyc7XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0dmFyIGRhdGFJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGVkdHlwZTogaW5mby5lZHR5cGUsIGV2ZW50aWQ6IGluZm8uZXZlbnRpZCwgcHJvamVjdGlkOiBpbmZvLnByb2plY3RpZCxcclxuICAgICAgICAgICAgICAgICAgICByY2xzaWQ6IGluZm8ucmNsc2lkLCByb2JqaWQ6IGluZm8ucm9iamlkLCB1c2VybG9naW46IGluZm8udXNlcmxvZ2luLCBjbHNpZDogaW5mby5jbHNpZCwgb2JqaWQ6IGluZm8ub2JqaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgYXR0cjogSlNPTi5zdHJpbmdpZnkoaW5mby5hdHRyKSwgZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkocGFyYW0pLCBpbnB1dHBhcmFtZXRlcjogaW5wdXRwYXJhbWV0ZXIsIGdsb2JhbF9hdHRyOiBnbG9iYWxfYXR0clxyXG4gICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcclxuXHRcdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbycsZGF0YUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XHJcblx0XHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1xyXG5cdFx0XHRcdFx0XHR2YXIgYWN0aW9ubGlzdCA9IGRhdGEuYWN0aW9uO1xyXG5cdFx0XHRcdFx0XHRpZiAoYWN0aW9ubGlzdCkge1xyXG5cdFx0XHRcdFx0XHQgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhY3Rpb25saXN0Lmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgdmFyIGFjdGlvbiA9IGFjdGlvbmxpc3Rbal1cclxuXHRcdFx0XHRcdFx0ICAgICAgICB2YXIgYWN0aW9uX3R5cGUgPSBhY3Rpb24uYWN0aW9uX3R5cGU7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgdmFyIHZhbHVlID0gYWN0aW9uLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgIGlmIChhY3Rpb25fdHlwZSA9PSAnc2V0X2RsZ19hdHRyJykge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBpZiAodmFsdWUpIHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHZhciB2YWwgPSB2YWx1ZTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICB2YWwgPSBKU09OLnBhcnNlKHZhbHVlKTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyh2YWwpO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWwubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGEgPSAwOyBhIDwgdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGwgPSAwOyBsIDwgdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2FdLkF0dHIubGVuZ3RoOyBsKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgY2EgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbYV0uQXR0cltsXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodmFsW2ldLmF0dHIgID09IGNhLk5hbWUpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLlR5cGU9PSflrZflhbgnIHx8IGNhLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJyl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkaWN0SXRlbUxpc3Q9W107XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvcih2YXIgZCBpbiB2YWxbaV0uY2hvaWNlX2xpc3Qpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciB2YWwgPXZhbFtpXS5jaG9pY2VfbGlzdFtkXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaWN0SXRlbUxpc3QucHVzaCh7XCJDTl9TX05BTUVcIjp2YWwsXCJOYW1lXCI6dmFsLFwibGFiZWxcIjp2YWwsXCJ2YWx1ZVwiOnZhbH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmRpY3RpdGVtID0gZGljdEl0ZW1MaXN0O1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhdHRyW2pdLmRpY3RpdGVtID0gdmFsW2ldLmNob2ljZV9saXN0O1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGNhLnZhbHVlID0gdmFsW2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgdmFyIGxlbmd0aCA9IDA7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbFtpXS5hdHRyID09IHMuYXR0clxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIH0pLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAxO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHZhbFtpXSk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gMCkge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0uYXR0ciA9PSB2YWxbaV0uYXR0cikge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gdmFsW2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB9XHJcblx0XHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHQgICAgICAgIGlmIChhY3Rpb25fdHlwZSA9PSAnb3Blbl9zZWxlY3RfdXNlcmRsZycpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68yLjJcIixjb250ZW50Olwib3Blbl9zZWxlY3RfdXNlcmRsZ+i/meS4qmFjdGlvbl90eXBl6L+Y5pyq5aSE55CG77yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMlwiLGNvbnRlbnQ6c3VjY2Vzcy5tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMi4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHQgICAgRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sZGF0YV9hdHRyKXtcclxuXHRcdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0ICAgIFx0dmFyIGVudmlyb21lbnQgPSB7XHJcblx0XHQgICAgXHQgICAgJ2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcclxuXHRcdCAgICBcdCAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsICAgICAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4ZcclxuXHRcdCAgICBcdCAgICAnYnV0dG9uJzogJ3RvcCcsICAgLy8gdG9wL2JvdHRvbVxyXG5cdFx0ICAgIFx0ICAgIGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcclxuXHRcdCAgICBcdCAgICBtYXN0ZXI6IHtcclxuXHRcdCAgICBcdCAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahGNsc19pZFxyXG5cdFx0ICAgIFx0ICAgICAgICAvL29ial9pZDogJycgIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEb2JqX2lkXHJcblx0XHQgICAgXHQgICAgfVxyXG5cdFx0ICAgIFx0fTtcclxuXHRcdCAgICBcdGlmKGRhdGFfYXR0cil7XHJcblx0XHRcdFx0XHRlbnZpcm9tZW50LmVkaXRfZGxnID0ge1xyXG5cdFx0XHRcdFx0ICAgIHR5cGU6ICdzbWFsbCcsLy/lsI/nqpflj6NcclxuXHRcdFx0XHRcdCAgICBjbGFzc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwvL+W9k+WJjeaVsOaNruexu2lkXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRpZiAoZGF0YV9hdHRyKSB7XHJcblx0XHRcdFx0XHQgICAgZW52aXJvbWVudC5lZGl0X2RsZy5mb3JtX2NvbnRyb2wgPSB7Ly/miYDlsZ7nmoTooajljZXmjqfku7ZcclxuXHRcdFx0XHRcdCAgICAgICAgbmFtZTogZGF0YV9hdHRyLk5hbWUsLy/lrZfmrrXlsZ7mgKdcclxuXHRcdFx0XHRcdCAgICAgICAgdGV4dDogZGF0YV9hdHRyLkRpc3BOYW1lLC8v5pi+56S65paH5pysXHJcblx0XHRcdFx0XHQgICAgICAgIGdyb3VwX25hbWU6IGRhdGFfYXR0ci5Hcm91cE5hbWUsLy/lsZ7mgKfnu4RcclxuXHRcdFx0XHRcdCAgICAgICAgdHlwZTogZGF0YV9hdHRyLlR5cGUsLy/lrZfmrrXnsbvlnotcclxuXHRcdFx0XHRcdCAgICAgICAgcmVhZG9ubHk6IGRhdGFfYXR0ci5SZWFkT25seSwvL+aYr+WQpuWPquivu1xyXG5cdFx0XHRcdFx0ICAgICAgICBidXR0b25faW1nOiBkYXRhX2F0dHIuYnV0dG9uX2ltZywvL+W8leeUqOaMiemSrueahOWbvuagh1xyXG5cdFx0XHRcdFx0ICAgICAgICBidXR0b25fdG9vbHRpcDogZGF0YV9hdHRyLmJ1dHRvbl90b29sdGlwLy/lvJXnlKjmjInpkq7nmoR0b29sdGlwXHJcblx0XHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdCAgICBcdHZhciBkYXRhSW5mbyA9IHtcclxuXHRcdCAgICAgICAgICAgIGVkdHlwZTogaW5mby5lZHR5cGUsIGV2ZW50aWQ6IGluZm8uZXZlbnRpZCwgcHJvamVjdGlkOiBpbmZvLnByb2plY3RpZC5yZXBsYWNlKCd7JywnJykucmVwbGFjZSgnfScsJycpLFxyXG5cdFx0ICAgICAgICAgICAgcmNsc2lkOiBpbmZvLnJjbHNpZCwgcm9iamlkOiBpbmZvLnJvYmppZCwgdXNlcmxvZ2luOiBpbmZvLnVzZXJsb2dpbiwgY2xzaWQ6IGluZm8uY2xzaWQsIG9iamlkOiBpbmZvLm9iamlkLFxyXG5cdFx0ICAgICAgICAgICAgYXR0cjogSlNPTi5zdHJpbmdpZnkoaW5mby5hdHRyKSwgZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkoZW52aXJvbWVudCksIGlucHV0cGFyYW1ldGVyOiAnJywgZ2xvYmFsX2F0dHI6IEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpXHJcblx0XHQgICAgICAgIH1cclxuXHRcdCAgICBcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcclxuXHRcdCAgICBcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XHJcblx0XHQgICAgXHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0ICAgIFx0XHRpZiAoc3VjY2Vzcy5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1xyXG5cdFx0ICAgIFx0XHRcdHZhciBhY3Rpb25saXN0ID0gZGF0YS5hY3Rpb247XHJcblx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0ICAgIFx0XHRcdGlmIChhY3Rpb25saXN0KSB7XHJcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYWN0aW9ubGlzdCk7XHJcblx0XHQgICAgXHRcdFx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWN0aW9ubGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgdmFyIGFjdGlvbiA9IGFjdGlvbmxpc3RbaV07XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdzZXRfZGxnX2F0dHInKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGFjdGlvbi52YWx1ZTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdFtpXS5jaG9pY2VfbGlzdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtjXS5BdHRyO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihhdHRyW2pdLk5hbWU9PXJlc3VsdFtpXS5hdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGF0dHJbal0uVHlwZT09J+Wtl+WFuCcgfHwgYXR0cltqXS5UeXBlPT0n5a2X5YW4LeWtl+espuS4sicpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGljdEl0ZW1MaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IodmFyIGQgaW4gcmVzdWx0W2ldLmNob2ljZV9saXN0KXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsID1yZXN1bHRbaV0uY2hvaWNlX2xpc3RbZF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1wiQ05fU19OQU1FXCI6dmFsLFwiTmFtZVwiOnZhbCxcImxhYmVsXCI6dmFsLFwidmFsdWVcIjp2YWx9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyW2pdLmRpY3RpdGVtID0gZGljdEl0ZW1MaXN0O1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhdHRyW2pdLmRpY3RpdGVtID0gcmVzdWx0W2ldLmNob2ljZV9saXN0O1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGg7IGMrKykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdHZhciBhdHRyID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtjXS5BdHRyO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhdHRyW2pdLk5hbWUrJz09JytyZXN1bHRbaV0uYXR0cik7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIFx0XHRpZihhdHRyW2pdLk5hbWU9PXJlc3VsdFtpXS5hdHRyKXtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHRcdFx0YXR0cltqXS5WYWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHRcdH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHR9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbGVuZ3RoID0gMDtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgaWYgKCEkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH0pLmxlbmd0aCkge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gMTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA9PSAwKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0uYXR0ciA9PSByZXN1bHRbaV0uYXR0cikge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfSBlbHNlIGlmIChkYXRhLmFjdGlvbltpXS5hY3Rpb25fdHlwZSA9PSAnc2V0X2dsb2JhbF9hdHRyJykge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAkdGhpcy4kZGF0YS5nbG9iYWxfYXR0ciA9IGRhdGEuYWN0aW9uW2ldLnZhbHVlIHx8IFtdO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgfVxyXG5cdFx0ICAgIFx0XHRcdH1cclxuXHRcdCAgICBcdFx0XHRcclxuXHRcdCAgICBcdFx0XHRpZiAoZGF0YS5yZXN1bHQpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgdmFyIHJlc3VsdCA9IGRhdGEucmVzdWx0O1xyXG5cdFx0ICAgIFx0XHRcdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYysrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBcdHZhciBhdHRyID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtjXS5BdHRyO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIFx0XHRpZihhdHRyW2pdLk5hbWU9PXJlc3VsdFtpXS5hdHRyKXtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIFx0XHRcdGF0dHJbal0uVmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBcdFx0fVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgXHR9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgaWYgKCEkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfSkubGVuZ3RoKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgbGVuZ3RoID0gMTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaChyZXN1bHRbaV0pO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgaWYgKGxlbmd0aCA9PSAwKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgaWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgIH1cclxuXHRcdCAgICBcdFx0XHR9XHJcblx0XHQgICAgXHRcdH1lbHNle1xyXG5cdFx0ICAgIFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vM1wiLGNvbnRlbnQ6c3VjY2Vzcy5tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHQgICAgXHRcdH1cclxuXHRcdCAgICBcdH0pLmNhdGNoKGV4PT57XHJcblx0XHQgICAgXHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdCAgICBcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68zLjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdCAgICBcdH0pO1xyXG5cdFx0ICAgIH0sXHJcblx0XHRcdE9LRGF0YU9ialJ1bkN1c3RvbUV2ZW50KCl7XHJcblx0XHQgICAgXHR2YXIgZW52aXJvbWVudCA9IHtcclxuXHRcdFx0XHQgICAgJ2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcclxuXHRcdFx0XHQgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAgICAgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXHJcblx0XHRcdFx0ICAgICdidXR0b24nOiAndG9wJywgICAvLyB0b3AvYm90dG9tXHJcblx0XHRcdFx0ICAgIGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcclxuXHRcdFx0XHQgICAgbWFzdGVyOiB7XHJcblx0XHRcdFx0ICAgICAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXHJcblx0XHRcdFx0ICAgICAgICBcclxuXHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdH07XHJcblx0XHQgICAgXHRcclxuXHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuZWRpdF9va19ldmVudC5zY3JpcF9pZDtcclxuXHRcdFx0XHR2YXIgcmVxPVtdO1xyXG5cdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcclxuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XHJcblx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcclxuXHRcdFx0XHRcdFx0aWYoYXIuVmFsdWU9PSfor7fpgInmi6knIHx8IGFyLlZhbHVlPT0n4oCU4oCU6K+36YCJ5oup4oCU4oCUJykgYXIuVmFsdWU9Jyc7XHJcblx0XHRcdFx0XHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXHJcblx0XHRcdFx0XHRcdFx0aWYoYXIuVmFsdWU9PSfor7cnKSBhci5WYWx1ZT0nJztcclxuXHRcdFx0XHQgICAgICAgIGlmKGFyLlR5cGU9PSflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGU9PSflvJXnlKjpobnnm64nKVxyXG5cdFx0XHRcdCAgICAgICAgXHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcclxuXHRcdFx0XHQgICAgICAgIGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXHJcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlPycxJzonMCd9KTtcclxuXHRcdFx0XHRcdFx0ZWxzZVxyXG5cdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZSB9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0XHJcblx0XHQgICAgXHRpZiAodGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoID4gMCkge1xyXG5cdFx0ICAgIFx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBpKyspIHtcclxuXHRcdCAgICBcdCAgICAgICAgaWYgKCFyZXEuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XHJcblx0XHQgICAgXHQgICAgICAgICAgICByZXR1cm4gdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0uYXR0ciA9PSBzLm5hbWVcclxuXHRcdCAgICBcdCAgICAgICAgfSkubGVuZ3RoKSB7XHJcblx0XHQgICAgXHQgICAgICAgICAgICBsZW5ndGggPSAxO1xyXG5cdFx0ICAgIFx0ICAgICAgICAgICAgcmVxLnB1c2goeyAnYXR0cic6IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLmF0dHIsICd2YWwnOiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS52YWx1ZSB9KTtcclxuXHRcdCAgICBcdCAgICAgICAgfVxyXG5cdFx0ICAgIFx0ICAgIH1cclxuXHRcdCAgICBcdH1cclxuXHRcdCAgICBcdHZhciBpbmZvID0ge1xyXG5cdFx0ICAgIFx0ICAgIGV2ZW50aWQ6IGV2ZW50aWQsXHJcblx0XHQgICAgXHQgICAgZWR0eXBlOiBcIjBcIixcclxuXHRcdCAgICBcdCAgICBwcm9qZWN0aWQ6ICcnLFxyXG5cdFx0ICAgIFx0ICAgIHJjbHNpZDogJycsXHJcblx0XHQgICAgXHQgICAgcm9iamlkOiAnJyxcclxuXHRcdCAgICBcdCAgICB1c2VybG9naW46ICcnLFxyXG5cdFx0ICAgIFx0ICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxyXG5cdFx0ICAgIFx0ICAgIG9iamlkOiBcIlwiLFxyXG5cdFx0ICAgIFx0ICAgIGF0dHI6IHJlcSxcclxuXHRcdCAgICBcdH1cclxuXHRcdCAgICBcdHZhciBkYXRhSW5mbyA9IHtcclxuXHRcdCAgICAgICAgICAgIGVkdHlwZTogaW5mby5lZHR5cGUsIGV2ZW50aWQ6IGluZm8uZXZlbnRpZCwgcHJvamVjdGlkOiBpbmZvLnByb2plY3RpZCxyY2xzaWQ6IGluZm8ucmNsc2lkLCBcclxuXHRcdFx0XHRcdHJvYmppZDogaW5mby5yb2JqaWQsIHVzZXJsb2dpbjogaW5mby51c2VybG9naW4sIGNsc2lkOiBpbmZvLmNsc2lkLCBvYmppZDogaW5mby5vYmppZCxcclxuXHRcdFx0XHRcdGF0dHI6IEpTT04uc3RyaW5naWZ5KGluZm8uYXR0ciksIGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpLCBnbG9iYWxfYXR0cjogSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5nbG9iYWxfYXR0cilcclxuXHRcdCAgICAgICAgfVxyXG5cdFx0ICAgIFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0ICAgIFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9PntcclxuXHRcdCAgICBcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XHJcblx0XHQgICAgXHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XHRcdFxyXG5cdFx0ICAgIFx0XHRcdHZhciByZXN1bHQgPSBkYXRhLnJlc3VsdDtcclxuXHRcdCAgICBcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAvLyBzZWxmLmNsYXNzX2F0dHJfZWxlLmZpbmQoJy5hdHRyX2ZpZWxkW2RhdGEtZmllbGQ9XCInICsgcmVzdWx0W2ldLmF0dHIgKyAnXCJdJykudmFsKHJlc3VsdFtpXS52YWx1ZSkuZGF0YSgndmFsJywgcmVzdWx0W2ldLnZhbHVlKTtcclxuXHRcdCAgICBcdFx0XHQgICAgdmFyIGxlbmd0aCA9IDA7XHJcblx0XHQgICAgXHRcdFx0ICAgIGlmICghdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICByZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXHJcblx0XHQgICAgXHRcdFx0ICAgIH0pLmxlbmd0aCkge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgbGVuZ3RoID0gMTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcclxuXHRcdCAgICBcdFx0XHQgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICBpZiAobGVuZ3RoID09IDApIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICBpZiAodGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0uYXR0ciA9PSByZXN1bHRbaV0uYXR0cikge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgIH1cclxuXHRcdCAgICBcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHR0aGlzLmFkZCgpO1xyXG5cdFx0ICAgIFx0XHR9ZWxzZXtcclxuXHRcdCAgICBcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzRcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0ICAgIFx0XHR9XHJcblx0XHQgICAgXHR9KS5jYXRjaChleD0+e1xyXG5cdFx0ICAgIFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHQgICAgXHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNC4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHQgICAgXHR9KTtcclxuXHRcdCAgICB9LFxyXG5cdFx0ICAgIERhdGFPYmpSdW5DdXN0b21FdmVudF9SZXR1cm4oZXZlbnRpZCxkYXRhX2F0dHIsYnV0dG9uX2NhbGxiYWNrLGluZGV4LGlpbmRleCl7XHJcblx0XHRcdFx0dmFyIGVudmlyb21lbnQgPSB7XHJcblx0XHRcdFx0ICAgICdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XHJcblx0XHRcdFx0ICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgICAgIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxyXG5cdFx0XHRcdCAgICAnYnV0dG9uJzogJ3RvcCcsICAgLy8gdG9wL2JvdHRvbVxyXG5cdFx0XHRcdCAgICBidXR0b25fbmFtZTogJ+aWsOWinicsXHJcblx0XHRcdFx0ICAgIG1hc3Rlcjoge1xyXG5cdFx0XHRcdCAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahGNsc19pZFxyXG5cdFx0XHRcdCAgICAgICAgLy9vYmpfaWQ6ICcnICAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahG9ial9pZFxyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHR2YXIgcmVxPVtdO1xyXG5cdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcclxuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XHJcblx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcclxuXHRcdFx0XHRcdFx0aWYoYXIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJylcclxuXHRcdFx0XHRcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xyXG5cdFx0XHRcdCAgICAgICAgaWYoYXIuVHlwZT09J+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZT09J+W8leeUqOmhueebricpXHJcblx0XHRcdFx0ICAgICAgICBcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWxJRCA/YXIuVmFsSUQgOicnIH0pO1xyXG5cdFx0XHRcdCAgICAgICAgZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8JylcclxuXHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWU/JzEnOicwJ30pO1xyXG5cdFx0XHRcdFx0XHRlbHNlXHJcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlIH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAodGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0ICAgICAgICBpZiAoIXJlcS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcclxuXHRcdFx0XHQgICAgICAgICAgICByZXR1cm4gdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0uYXR0ciA9PSBzLm5hbWVcclxuXHRcdFx0XHQgICAgICAgIH0pLmxlbmd0aCkge1xyXG5cdFx0XHRcdCAgICAgICAgICAgIGxlbmd0aCA9IDE7XHJcblx0XHRcdFx0ICAgICAgICAgICAgcmVxLnB1c2goeyAnYXR0cic6IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLmF0dHIsICd2YWwnOiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS52YWx1ZSB9KTtcclxuXHRcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR2YXIgZXh0aW5mbyA9IGVudmlyb21lbnQ7XHJcblx0XHRcdFx0ZXh0aW5mby5lZGl0X2RsZyA9IHtcclxuXHRcdFx0XHQgICAgdHlwZTogJ3NtYWxsJywvL+Wwj+eql+WPo1xyXG5cdFx0XHRcdCAgICBjbGFzc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwvL+W9k+WJjeaVsOaNruexu2lkXHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChkYXRhX2F0dHIpIHtcclxuXHRcdFx0XHQgICAgZXh0aW5mby5lZGl0X2RsZy5mb3JtX2NvbnRyb2wgPSB7Ly/miYDlsZ7nmoTooajljZXmjqfku7ZcclxuXHRcdFx0XHQgICAgICAgIG5hbWU6IGRhdGFfYXR0ci5OYW1lLC8v5a2X5q615bGe5oCnXHJcblx0XHRcdFx0ICAgICAgICB0ZXh0OiBkYXRhX2F0dHIuRGlzcE5hbWUsLy/mmL7npLrmlofmnKxcclxuXHRcdFx0XHQgICAgICAgIGdyb3VwX25hbWU6IGRhdGFfYXR0ci5Hcm91cE5hbWUsLy/lsZ7mgKfnu4RcclxuXHRcdFx0XHQgICAgICAgIHR5cGU6IGRhdGFfYXR0ci5UeXBlLC8v5a2X5q6157G75Z6LXHJcblx0XHRcdFx0ICAgICAgICByZWFkb25seTogZGF0YV9hdHRyLlJlYWRPbmx5LC8v5piv5ZCm5Y+q6K+7XHJcblx0XHRcdFx0ICAgICAgICBidXR0b25faW1nOiBkYXRhX2F0dHIuYnV0dG9uX2ltZywvL+W8leeUqOaMiemSrueahOWbvuagh1xyXG5cdFx0XHRcdCAgICAgICAgYnV0dG9uX3Rvb2x0aXA6IGRhdGFfYXR0ci5idXR0b25fdG9vbHRpcC8v5byV55So5oyJ6ZKu55qEdG9vbHRpcFxyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHZhciBkYXRhSW5mbyA9IHtcclxuXHRcdFx0XHRcdGVkdHlwZTogIFwiMFwiLCBldmVudGlkOiBldmVudGlkLCBwcm9qZWN0aWQ6ICcnLHJjbHNpZDogJycsIHJvYmppZDogJycsIHVzZXJsb2dpbjogJycsIFxyXG5cdFx0XHRcdFx0Y2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsIG9iamlkOiAnJyxhdHRyOiBKU09OLnN0cmluZ2lmeShyZXEpLCBcclxuXHRcdFx0XHRcdGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGV4dGluZm8pLCBnbG9iYWxfYXR0cjogSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5nbG9iYWxfYXR0cilcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0XHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XHJcblx0XHRcdFx0XHRcdGlmIChkYXRhICE9IFwiXCIpIHtcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHR2YXIgYWN0aW9ucyA9IGRhdGEuYWN0aW9uO1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhY3Rpb25zKTtcclxuXHRcdFx0XHRcdFx0aWYgKGFjdGlvbnMpIHtcclxuXHRcdFx0XHRcdFx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWN0aW9ucy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgIHZhciBhY3Rpb24gPSBhY3Rpb25zW2ldO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgIHZhciB2YWwgPSBhY3Rpb24udmFsdWU7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgdmFyIGVudmlyb21lbnQgPSBKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICBcclxuXHRcdFx0XHRcdFx0ICAgICAgICBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX3BhbmVsJykge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgIHZhciBkID0gZGlhbG9nKHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgdGl0bGU6ICc8aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLWluZm8tY2lyY2xlXCI+PC9pPiAnICsgJ+aPkOekuicsXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgIGNvbnRlbnQ6IGFjdGlvbi5hY3Rpb25fdHlwZSArICfmraRhY3Rpb27lsJrmnKrlpITnkIbvvIEnXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgfSk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgZC5zaG93KCk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHQgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9zZWxlY3RfdXNlcmRsZycpIHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgdmFyIHN0eWxlID0gdmFsLnN0eWxlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBzdHlsZSA9PSAndXNlcicgPyAn6YCJ5oup5Lq65ZGYJyA6IHN0eWxlID09ICdkZXBhcnRtZW50JyA/ICfpgInmi6npg6jpl6gnIDogc3R5bGUgPT0gJ3JvbGUnID8gJ+mAieaLqeinkuiJsicgOiAnJ1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcGFyYW09e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGluZGV4OiBpbmRleCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpaW5kZXg6aWluZGV4LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJ1dHRvbl9jYWxsYmFjazpidXR0b25fY2FsbGJhY2ssXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVxOnJlcSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRkYXRhX2F0dHI6ZGF0YV9hdHRyXHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBcdHVybDonLi4vc2VscHNuL2luZGV4P211bGl0PWZhbHNlJnBhcmFtPScrSlNPTi5zdHJpbmdpZnkocGFyYW0pLFxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBcdGV2ZW50czp7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0XHRBZGRQZXIoZGF0YSxwYXJhbSl7IFxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBcdFx0XHQvLyBjb25zb2xlLmxvZyhwYXJhbSk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0XHRcdGNvbnNvbGUubG9nKGRhdGEpO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBcdFx0XHR2YXIgY2FsbGJhY2tfZXZlbnRpZCA9IHBhcmFtLmJ1dHRvbl9jYWxsYmFjay50cmltKCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgZXZlbnRpZDogY2FsbGJhY2tfZXZlbnRpZCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIGVkdHlwZTogXCIwXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBwcm9qZWN0aWQ6ICcnLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgcmNsc2lkOiAnJyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIHJvYmppZDogJycsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICB1c2VybG9naW46ICcnLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgY2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBhdHRyOiBwYXJhbS5yZXEsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBpbnB1dHBhcmFtZXRlcjogZGF0YVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBwYXJhbS5kYXRhX2F0dHIpO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBcdFx0fVxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBcdH1cclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgfSk7XHRcclxuXHRcdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdCAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX2RhdGFfcXVlcnlfZGxnJykge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBcclxuXHRcdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdCAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX2NvbW1vbl9kbGcnKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIHZhciB2YWx1ZSA9IGFjdGlvbi52YWx1ZTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgdmFyIGQgPSBkaWFsb2coe1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGl0bGU6ICc8aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLWluZm8tY2lyY2xlXCI+PC9pPiAnICsgJ+aPkOekuicsXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBjb250ZW50OiBhY3Rpb24uYWN0aW9uX3R5cGUgKyAn5q2kYWN0aW9u5bCa5pyq5aSE55CG77yBJ1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB9KTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZC5zaG93KCk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHQgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9wcm9qZWN0X3F1ZXJ5X2RsZycpIHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlKTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhhY3Rpb24udmFsdWUubXVsaXRfc2VsZWN0KTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgdmFyIHByaVJlbCA9ICctMSc7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICflhajpg6jnm7jlhbMnKVxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgcHJpUmVsID0gJzAnO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHotJ/otKPnmoTpobnnm64nKVxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgcHJpUmVsID0gJzEnO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHliJvlu7rnmoQnKVxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgcHJpUmVsID0gJzInO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHlj4LkuI7nmoQnIHx8IGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeWPguWKoOeahCcpXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBwcmlSZWwgPSAnMyc7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeWFs+azqOeahCcpXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBwcmlSZWwgPSAnNCc7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeS4i+WxnueahOmhueebricpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0cHJpUmVsID0gJzUnO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcGFyYW1fPXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpbmRleDogaW5kZXgsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWluZGV4OmlpbmRleCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRidXR0b25fY2FsbGJhY2s6YnV0dG9uX2NhbGxiYWNrLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlcTpyZXFcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dXJsOicuLi9zZWxQcmovaW5kZXg/cmVsYXRpb249JytwcmlSZWwrJyZwYXJhbT0nK0pTT04uc3RyaW5naWZ5KHBhcmFtXyksXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZXZlbnRzOntcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEFkZFBlcihkYXRhLHBhcmFtKXsgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XS5WYWx1ZT1kYXRhWzBdLk5hbWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XS5WYWxJRD1kYXRhWzBdLklEKyc7JytkYXRhWzBdLk5hbWU7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0XHRcdHZhciBjYWxsYmFja19ldmVudGlkID0gcGFyYW0uYnV0dG9uX2NhbGxiYWNrLnRyaW0oKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhbGxiYWNrX2V2ZW50aWQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIHZhciBpbmZvID0ge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIGV2ZW50aWQ6IGNhbGxiYWNrX2V2ZW50aWQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgZWR0eXBlOiBcIjJcIixcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICBwcm9qZWN0aWQ6IGRhdGFbMF0uSUQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgcmNsc2lkOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIHJvYmppZDogXCJcIixcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICB1c2VybG9naW46IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgY2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIG9iamlkOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIGF0dHI6IHBhcmFtLnJlcSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICR0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgfSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgdmFyIGQgPSBkaWFsb2coe1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGl0bGU6ICc8aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLWluZm8tY2lyY2xlXCI+PC9pPiAnICsgJ+aPkOekuicsXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBjb250ZW50OiBhY3Rpb24uYWN0aW9uX3R5cGUgKyAn5q2kYWN0aW9u5bCa5pyq5aSE55CG77yBJ1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB9KTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZC5zaG93KCk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6NS4yXCIsY29udGVudDogJ+iwg+eUqCBiZWZvcmVfY2xpY2tfYnV0dG9uIOiEmuacrOi/lOWbnuepuu+8jGV2ZW50X2lkJyArIGV2ZW50aWQsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzVcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekujUuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0ICAgIH0sXHJcblx0XHQgICAgXHJcblx0XHRcdFxyXG5cdFx0fVxyXG5cdH1cclxuPC9zY3JpcHQ+XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///49\n"); |
| | | |
| | | /***/ }), |
| | | /* 50 */ |
| | |
| | | /***/ (function(module, exports, __webpack_require__) { |
| | | |
| | | "use strict"; |
| | | eval("Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;\n\n\n\n\n\n\nvar _data = _interopRequireDefault(__webpack_require__(/*! @/js/pickerAddress/data.js */ 58));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} //\n//\n//\n//\n//\n//\nvar selectVal = ['', '', ''];var _default = { data: function data() {return { value: [0, 0, 0],\n array: [],\n index: 0 };\n\n },\n created: function created() {\n this.initSelect();\n },\n methods: {\n // 初始化地址选项\n initSelect: function initSelect() {\n this.updateSourceDate() // 更新源数据\n .updateAddressDate() // 更新结果数据\n .$forceUpdate(); // 触发双向绑定\n },\n // 地址控件改变控件\n columnchange: function columnchange(d) {\n this.updateSelectIndex(d.detail.column, d.detail.value) // 更新选择索引\n .updateSourceDate() // 更新源数据\n .updateAddressDate() // 更新结果数据\n .$forceUpdate(); // 触发双向绑定\n },\n\n /**\n * 更新源数据\n * */\n updateSourceDate: function updateSourceDate() {\n this.array = [];\n this.array[0] = _data.default.map(function (obj) {\n return {\n name: obj.name };\n\n });\n this.array[1] = _data.default[this.value[0]].city.map(function (obj) {\n return {\n name: obj.name };\n\n });\n this.array[2] = _data.default[this.value[0]].city[this.value[1]].area.map(function (obj) {\n return {\n name: obj };\n\n });\n return this;\n },\n\n /**\n * 更新索引\n * */\n updateSelectIndex: function updateSelectIndex(column, value) {\n var arr = JSON.parse(JSON.stringify(this.value));\n arr[column] = value;\n if (column === 0) {\n arr[1] = 0;\n arr[2] = 0;\n }\n if (column === 1) {\n arr[2] = 0;\n }\n this.value = arr;\n return this;\n },\n\n /**\n * 更新结果数据 \n * */\n updateAddressDate: function updateAddressDate() {\n selectVal[0] = this.array[0][this.value[0]].name;\n selectVal[1] = this.array[1][this.value[1]].name;\n selectVal[2] = this.array[2][this.value[2]].name;\n return this;\n },\n\n /**\n * 点击确定\n * */\n bindPickerChange: function bindPickerChange(e) {\n // console.log(e);\n this.$emit('change', {\n target: e.target,\n data: selectVal });\n\n return this;\n } } };exports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vanMvcGlja2VyQWRkcmVzcy9waWNrZXJBZGRyZXNzLnZ1ZSJdLCJuYW1lcyI6WyJzZWxlY3RWYWwiLCJkYXRhIiwidmFsdWUiLCJhcnJheSIsImluZGV4IiwiY3JlYXRlZCIsImluaXRTZWxlY3QiLCJtZXRob2RzIiwidXBkYXRlU291cmNlRGF0ZSIsInVwZGF0ZUFkZHJlc3NEYXRlIiwiJGZvcmNlVXBkYXRlIiwiY29sdW1uY2hhbmdlIiwiZCIsInVwZGF0ZVNlbGVjdEluZGV4IiwiZGV0YWlsIiwiY29sdW1uIiwiQWxsQWRkcmVzcyIsIm1hcCIsIm9iaiIsIm5hbWUiLCJjaXR5IiwiYXJlYSIsImFyciIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsImJpbmRQaWNrZXJDaGFuZ2UiLCJlIiwiJGVtaXQiLCJ0YXJnZXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFPSSw4Riw4RkFQSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHSSxJQUFJQSxTQUFTLEdBQUcsQ0FBQyxFQUFELEVBQUksRUFBSixFQUFPLEVBQVAsQ0FBaEIsQyxlQUVlLEVBQ1hDLElBRFcsa0JBQ0osQ0FDSCxPQUFNLEVBQ0ZDLEtBQUssRUFBRSxDQUFDLENBQUQsRUFBRyxDQUFILEVBQUssQ0FBTCxDQURMO0FBRUZDLFdBQUssRUFBRSxFQUZMO0FBR0ZDLFdBQUssRUFBRSxDQUhMLEVBQU47O0FBS0gsR0FQVTtBQVFYQyxTQVJXLHFCQVFEO0FBQ04sU0FBS0MsVUFBTDtBQUNILEdBVlU7QUFXWEMsU0FBTyxFQUFDO0FBQ0o7QUFDQUQsY0FGSSx3QkFFUztBQUNULFdBQUtFLGdCQUFMLEdBQXdCO0FBQXhCLE9BQ0NDLGlCQURELEdBQ3FCO0FBRHJCLE9BRUNDLFlBRkQsR0FEUyxDQUdRO0FBQ3BCLEtBTkc7QUFPSjtBQUNBQyxnQkFSSSx3QkFRU0MsQ0FSVCxFQVFZO0FBQ1osV0FBS0MsaUJBQUwsQ0FBdUJELENBQUMsQ0FBQ0UsTUFBRixDQUFTQyxNQUFoQyxFQUF3Q0gsQ0FBQyxDQUFDRSxNQUFGLENBQVNaLEtBQWpELEVBQXdEO0FBQXhELE9BQ0NNLGdCQURELEdBQ29CO0FBRHBCLE9BRUNDLGlCQUZELEdBRXFCO0FBRnJCLE9BR0NDLFlBSEQsR0FEWSxDQUlLO0FBQ3BCLEtBYkc7O0FBZUo7OztBQUdBRixvQkFsQkksOEJBa0JlO0FBQ2YsV0FBS0wsS0FBTCxHQUFhLEVBQWI7QUFDQSxXQUFLQSxLQUFMLENBQVcsQ0FBWCxJQUFnQmEsY0FBV0MsR0FBWCxDQUFlLFVBQUFDLEdBQUcsRUFBSTtBQUNsQyxlQUFPO0FBQ0hDLGNBQUksRUFBRUQsR0FBRyxDQUFDQyxJQURQLEVBQVA7O0FBR0gsT0FKZSxDQUFoQjtBQUtBLFdBQUtoQixLQUFMLENBQVcsQ0FBWCxJQUFnQmEsY0FBVyxLQUFLZCxLQUFMLENBQVcsQ0FBWCxDQUFYLEVBQTBCa0IsSUFBMUIsQ0FBK0JILEdBQS9CLENBQW1DLFVBQUFDLEdBQUcsRUFBSTtBQUN0RCxlQUFPO0FBQ0hDLGNBQUksRUFBRUQsR0FBRyxDQUFDQyxJQURQLEVBQVA7O0FBR0gsT0FKZSxDQUFoQjtBQUtBLFdBQUtoQixLQUFMLENBQVcsQ0FBWCxJQUFnQmEsY0FBVyxLQUFLZCxLQUFMLENBQVcsQ0FBWCxDQUFYLEVBQTBCa0IsSUFBMUIsQ0FBK0IsS0FBS2xCLEtBQUwsQ0FBVyxDQUFYLENBQS9CLEVBQThDbUIsSUFBOUMsQ0FBbURKLEdBQW5ELENBQXVELFVBQUFDLEdBQUcsRUFBSTtBQUMxRSxlQUFPO0FBQ0hDLGNBQUksRUFBRUQsR0FESCxFQUFQOztBQUdILE9BSmUsQ0FBaEI7QUFLQSxhQUFPLElBQVA7QUFDSCxLQXBDRzs7QUFzQ0o7OztBQUdBTCxxQkF6Q0ksNkJBeUNjRSxNQXpDZCxFQXlDc0JiLEtBekN0QixFQXlDNEI7QUFDNUIsVUFBSW9CLEdBQUcsR0FBR0MsSUFBSSxDQUFDQyxLQUFMLENBQVdELElBQUksQ0FBQ0UsU0FBTCxDQUFlLEtBQUt2QixLQUFwQixDQUFYLENBQVY7QUFDQW9CLFNBQUcsQ0FBQ1AsTUFBRCxDQUFILEdBQWNiLEtBQWQ7QUFDQSxVQUFHYSxNQUFNLEtBQUssQ0FBZCxFQUFrQjtBQUNkTyxXQUFHLENBQUMsQ0FBRCxDQUFILEdBQVMsQ0FBVDtBQUNBQSxXQUFHLENBQUMsQ0FBRCxDQUFILEdBQVMsQ0FBVDtBQUNIO0FBQ0QsVUFBR1AsTUFBTSxLQUFLLENBQWQsRUFBa0I7QUFDZE8sV0FBRyxDQUFDLENBQUQsQ0FBSCxHQUFTLENBQVQ7QUFDSDtBQUNELFdBQUtwQixLQUFMLEdBQWFvQixHQUFiO0FBQ0EsYUFBTyxJQUFQO0FBQ0gsS0FyREc7O0FBdURKOzs7QUFHQWIscUJBMURJLCtCQTBEZ0I7QUFDaEJULGVBQVMsQ0FBQyxDQUFELENBQVQsR0FBZSxLQUFLRyxLQUFMLENBQVcsQ0FBWCxFQUFjLEtBQUtELEtBQUwsQ0FBVyxDQUFYLENBQWQsRUFBNkJpQixJQUE1QztBQUNBbkIsZUFBUyxDQUFDLENBQUQsQ0FBVCxHQUFlLEtBQUtHLEtBQUwsQ0FBVyxDQUFYLEVBQWMsS0FBS0QsS0FBTCxDQUFXLENBQVgsQ0FBZCxFQUE2QmlCLElBQTVDO0FBQ0FuQixlQUFTLENBQUMsQ0FBRCxDQUFULEdBQWUsS0FBS0csS0FBTCxDQUFXLENBQVgsRUFBYyxLQUFLRCxLQUFMLENBQVcsQ0FBWCxDQUFkLEVBQTZCaUIsSUFBNUM7QUFDQSxhQUFPLElBQVA7QUFDSCxLQS9ERzs7QUFpRUo7OztBQUdBTyxvQkFwRUksNEJBb0VhQyxDQXBFYixFQW9FZ0I7QUFDNUI7QUFDWSxXQUFLQyxLQUFMLENBQVcsUUFBWCxFQUFxQjtBQUNqQkMsY0FBTSxFQUFFRixDQUFDLENBQUNFLE1BRE87QUFFakI1QixZQUFJLEVBQUVELFNBRlcsRUFBckI7O0FBSUEsYUFBTyxJQUFQO0FBQ0gsS0EzRUcsRUFYRyxFIiwiZmlsZSI6IjU3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4gICAgaW1wb3J0IEFsbEFkZHJlc3MgZnJvbSAnQC9qcy9waWNrZXJBZGRyZXNzL2RhdGEuanMnXG4gICAgbGV0IHNlbGVjdFZhbCA9IFsnJywnJywnJ11cbiAgICBcbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIGRhdGEoKSB7XG4gICAgICAgICAgICByZXR1cm57XG4gICAgICAgICAgICAgICAgdmFsdWU6IFswLDAsMF0sXG4gICAgICAgICAgICAgICAgYXJyYXk6IFtdLFxuICAgICAgICAgICAgICAgIGluZGV4OiAwXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZWQoKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRTZWxlY3QoKVxuICAgICAgICB9LFxuICAgICAgICBtZXRob2RzOntcbiAgICAgICAgICAgIC8vIOWIneWni+WMluWcsOWdgOmAiemhuVxuICAgICAgICAgICAgaW5pdFNlbGVjdCgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNvdXJjZURhdGUoKSAvLyDmm7TmlrDmupDmlbDmja5cbiAgICAgICAgICAgICAgICAudXBkYXRlQWRkcmVzc0RhdGUoKSAvLyDmm7TmlrDnu5PmnpzmlbDmja5cbiAgICAgICAgICAgICAgICAuJGZvcmNlVXBkYXRlKCkgIC8vIOinpuWPkeWPjOWQkee7keWumlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIOWcsOWdgOaOp+S7tuaUueWPmOaOp+S7tlxuICAgICAgICAgICAgY29sdW1uY2hhbmdlKGQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdEluZGV4KGQuZGV0YWlsLmNvbHVtbiwgZC5kZXRhaWwudmFsdWUpIC8vIOabtOaWsOmAieaLqee0ouW8lVxuICAgICAgICAgICAgICAgIC51cGRhdGVTb3VyY2VEYXRlKCkgLy8g5pu05paw5rqQ5pWw5o2uXG4gICAgICAgICAgICAgICAgLnVwZGF0ZUFkZHJlc3NEYXRlKCkgLy8g5pu05paw57uT5p6c5pWw5o2uXG4gICAgICAgICAgICAgICAgLiRmb3JjZVVwZGF0ZSgpICAvLyDop6blj5Hlj4zlkJHnu5HlrppcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICog5pu05paw5rqQ5pWw5o2uXG4gICAgICAgICAgICAgKiAqL1xuICAgICAgICAgICAgdXBkYXRlU291cmNlRGF0ZSgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFycmF5ID0gW11cbiAgICAgICAgICAgICAgICB0aGlzLmFycmF5WzBdID0gQWxsQWRkcmVzcy5tYXAob2JqID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG9iai5uYW1lXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIHRoaXMuYXJyYXlbMV0gPSBBbGxBZGRyZXNzW3RoaXMudmFsdWVbMF1dLmNpdHkubWFwKG9iaiA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBvYmoubmFtZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB0aGlzLmFycmF5WzJdID0gQWxsQWRkcmVzc1t0aGlzLnZhbHVlWzBdXS5jaXR5W3RoaXMudmFsdWVbMV1dLmFyZWEubWFwKG9iaiA9PiB7IFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogb2JqXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIOabtOaWsOe0ouW8lVxuICAgICAgICAgICAgICogKi9cbiAgICAgICAgICAgIHVwZGF0ZVNlbGVjdEluZGV4KGNvbHVtbiwgdmFsdWUpe1xuICAgICAgICAgICAgICAgIGxldCBhcnIgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMudmFsdWUpKSBcbiAgICAgICAgICAgICAgICBhcnJbY29sdW1uXSA9IHZhbHVlXG4gICAgICAgICAgICAgICAgaWYoY29sdW1uID09PSAwICkge1xuICAgICAgICAgICAgICAgICAgICBhcnJbMV0gPSAwXG4gICAgICAgICAgICAgICAgICAgIGFyclsyXSA9IDBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYoY29sdW1uID09PSAxICkge1xuICAgICAgICAgICAgICAgICAgICBhcnJbMl0gPSAwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBhcnJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiDmm7TmlrDnu5PmnpzmlbDmja4gXG4gICAgICAgICAgICAgKiAqL1xuICAgICAgICAgICAgdXBkYXRlQWRkcmVzc0RhdGUoKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0VmFsWzBdID0gdGhpcy5hcnJheVswXVt0aGlzLnZhbHVlWzBdXS5uYW1lXG4gICAgICAgICAgICAgICAgc2VsZWN0VmFsWzFdID0gdGhpcy5hcnJheVsxXVt0aGlzLnZhbHVlWzFdXS5uYW1lIFxuICAgICAgICAgICAgICAgIHNlbGVjdFZhbFsyXSA9IHRoaXMuYXJyYXlbMl1bdGhpcy52YWx1ZVsyXV0ubmFtZSBcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiDngrnlh7vnoa7lrppcbiAgICAgICAgICAgICAqICovXG4gICAgICAgICAgICBiaW5kUGlja2VyQ2hhbmdlKGUpIHtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZSk7XG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGUudGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBzZWxlY3RWYWxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgfVxuICAgIH1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///57\n"); |
| | | eval("Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;\n\n\n\n\n\n\nvar _data = _interopRequireDefault(__webpack_require__(/*! @/js/pickerAddress/data.js */ 58));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} //\n//\n//\n//\n//\n//\nvar selectVal = ['', '', ''];var _default = { data: function data() {return { value: [0, 0, 0],\n array: [],\n index: 0 };\n\n },\n created: function created() {\n this.initSelect();\n },\n methods: {\n // 初始化地址选项\n initSelect: function initSelect() {\n this.updateSourceDate() // 更新源数据\n .updateAddressDate() // 更新结果数据\n .$forceUpdate(); // 触发双向绑定\n },\n // 地址控件改变控件\n columnchange: function columnchange(d) {\n this.updateSelectIndex(d.detail.column, d.detail.value) // 更新选择索引\n .updateSourceDate() // 更新源数据\n .updateAddressDate() // 更新结果数据\n .$forceUpdate(); // 触发双向绑定\n },\n\n /**\n * 更新源数据\n * */\n updateSourceDate: function updateSourceDate() {\n this.array = [];\n this.array[0] = _data.default.map(function (obj) {\n return {\n name: obj.name };\n\n });\n this.array[1] = _data.default[this.value[0]].city.map(function (obj) {\n return {\n name: obj.name };\n\n });\n this.array[2] = _data.default[this.value[0]].city[this.value[1]].area.map(function (obj) {\n return {\n name: obj };\n\n });\n return this;\n },\n\n /**\n * 更新索引\n * */\n updateSelectIndex: function updateSelectIndex(column, value) {\n var arr = JSON.parse(JSON.stringify(this.value));\n arr[column] = value;\n if (column === 0) {\n arr[1] = 0;\n arr[2] = 0;\n }\n if (column === 1) {\n arr[2] = 0;\n }\n this.value = arr;\n return this;\n },\n\n /**\n * 更新结果数据 \n * */\n updateAddressDate: function updateAddressDate() {\n selectVal[0] = this.array[0][this.value[0]].name;\n selectVal[1] = this.array[1][this.value[1]].name;\n selectVal[2] = this.array[2][this.value[2]].name;\n return this;\n },\n\n /**\n * 点击确定\n * */\n bindPickerChange: function bindPickerChange(e) {\n // console.log(e);\n this.$emit('change', {\n target: e.target,\n data: selectVal });\n\n return this;\n } } };exports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vanMvcGlja2VyQWRkcmVzcy9waWNrZXJBZGRyZXNzLnZ1ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBT0EsOEY7Ozs7OztBQUNBLDZCLGVBRUEsRUFDQSxJQURBLGtCQUNBLENBQ0EsU0FDQSxnQkFEQTtBQUVBLGVBRkE7QUFHQSxjQUhBOztBQUtBLEdBUEE7QUFRQSxTQVJBLHFCQVFBO0FBQ0E7QUFDQSxHQVZBO0FBV0E7QUFDQTtBQUNBLGNBRkEsd0JBRUE7QUFDQTtBQUFBLE9BQ0EsaUJBREEsR0FDQTtBQURBLE9BRUEsWUFGQSxHQURBLENBR0E7QUFDQSxLQU5BO0FBT0E7QUFDQSxnQkFSQSx3QkFRQSxDQVJBLEVBUUE7QUFDQTtBQUFBLE9BQ0EsZ0JBREEsR0FDQTtBQURBLE9BRUEsaUJBRkEsR0FFQTtBQUZBLE9BR0EsWUFIQSxHQURBLENBSUE7QUFDQSxLQWJBOztBQWVBOzs7QUFHQSxvQkFsQkEsOEJBa0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBREE7O0FBR0EsT0FKQTtBQUtBO0FBQ0E7QUFDQSx3QkFEQTs7QUFHQSxPQUpBO0FBS0E7QUFDQTtBQUNBLG1CQURBOztBQUdBLE9BSkE7QUFLQTtBQUNBLEtBcENBOztBQXNDQTs7O0FBR0EscUJBekNBLDZCQXlDQSxNQXpDQSxFQXlDQSxLQXpDQSxFQXlDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQXJEQTs7QUF1REE7OztBQUdBLHFCQTFEQSwrQkEwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBL0RBOztBQWlFQTs7O0FBR0Esb0JBcEVBLDRCQW9FQSxDQXBFQSxFQW9FQTtBQUNBO0FBQ0E7QUFDQSx3QkFEQTtBQUVBLHVCQUZBOztBQUlBO0FBQ0EsS0EzRUEsRUFYQSxFIiwiZmlsZSI6IjU3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG4gICAgPHBpY2tlciBAY2hhbmdlPVwiYmluZFBpY2tlckNoYW5nZVwiIEBjb2x1bW5jaGFuZ2U9XCJjb2x1bW5jaGFuZ2VcIiA6cmFuZ2U9XCJhcnJheVwiIHJhbmdlLWtleT1cIm5hbWVcIiA6dmFsdWU9XCJ2YWx1ZVwiIG1vZGU9XCJtdWx0aVNlbGVjdG9yXCI+XHJcbiAgICAgICAgPHNsb3Q+PC9zbG90PlxyXG4gICAgPC9waWNrZXI+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG4gICAgaW1wb3J0IEFsbEFkZHJlc3MgZnJvbSAnQC9qcy9waWNrZXJBZGRyZXNzL2RhdGEuanMnXHJcbiAgICBsZXQgc2VsZWN0VmFsID0gWycnLCcnLCcnXVxyXG4gICAgXHJcbiAgICBleHBvcnQgZGVmYXVsdCB7XHJcbiAgICAgICAgZGF0YSgpIHtcclxuICAgICAgICAgICAgcmV0dXJue1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6IFswLDAsMF0sXHJcbiAgICAgICAgICAgICAgICBhcnJheTogW10sXHJcbiAgICAgICAgICAgICAgICBpbmRleDogMFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjcmVhdGVkKCkge1xyXG4gICAgICAgICAgICB0aGlzLmluaXRTZWxlY3QoKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbWV0aG9kczp7XHJcbiAgICAgICAgICAgIC8vIOWIneWni+WMluWcsOWdgOmAiemhuVxyXG4gICAgICAgICAgICBpbml0U2VsZWN0KCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTb3VyY2VEYXRlKCkgLy8g5pu05paw5rqQ5pWw5o2uXHJcbiAgICAgICAgICAgICAgICAudXBkYXRlQWRkcmVzc0RhdGUoKSAvLyDmm7TmlrDnu5PmnpzmlbDmja5cclxuICAgICAgICAgICAgICAgIC4kZm9yY2VVcGRhdGUoKSAgLy8g6Kem5Y+R5Y+M5ZCR57uR5a6aXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIOWcsOWdgOaOp+S7tuaUueWPmOaOp+S7tlxyXG4gICAgICAgICAgICBjb2x1bW5jaGFuZ2UoZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RJbmRleChkLmRldGFpbC5jb2x1bW4sIGQuZGV0YWlsLnZhbHVlKSAvLyDmm7TmlrDpgInmi6nntKLlvJVcclxuICAgICAgICAgICAgICAgIC51cGRhdGVTb3VyY2VEYXRlKCkgLy8g5pu05paw5rqQ5pWw5o2uXHJcbiAgICAgICAgICAgICAgICAudXBkYXRlQWRkcmVzc0RhdGUoKSAvLyDmm7TmlrDnu5PmnpzmlbDmja5cclxuICAgICAgICAgICAgICAgIC4kZm9yY2VVcGRhdGUoKSAgLy8g6Kem5Y+R5Y+M5ZCR57uR5a6aXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICog5pu05paw5rqQ5pWw5o2uXHJcbiAgICAgICAgICAgICAqICovXHJcbiAgICAgICAgICAgIHVwZGF0ZVNvdXJjZURhdGUoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFycmF5ID0gW11cclxuICAgICAgICAgICAgICAgIHRoaXMuYXJyYXlbMF0gPSBBbGxBZGRyZXNzLm1hcChvYmogPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG9iai5uYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIHRoaXMuYXJyYXlbMV0gPSBBbGxBZGRyZXNzW3RoaXMudmFsdWVbMF1dLmNpdHkubWFwKG9iaiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogb2JqLm5hbWVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgdGhpcy5hcnJheVsyXSA9IEFsbEFkZHJlc3NbdGhpcy52YWx1ZVswXV0uY2l0eVt0aGlzLnZhbHVlWzFdXS5hcmVhLm1hcChvYmogPT4geyBcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBvYmpcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiDmm7TmlrDntKLlvJVcclxuICAgICAgICAgICAgICogKi9cclxuICAgICAgICAgICAgdXBkYXRlU2VsZWN0SW5kZXgoY29sdW1uLCB2YWx1ZSl7XHJcbiAgICAgICAgICAgICAgICBsZXQgYXJyID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnZhbHVlKSkgXHJcbiAgICAgICAgICAgICAgICBhcnJbY29sdW1uXSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgICBpZihjb2x1bW4gPT09IDAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXJyWzFdID0gMFxyXG4gICAgICAgICAgICAgICAgICAgIGFyclsyXSA9IDBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKGNvbHVtbiA9PT0gMSApIHtcclxuICAgICAgICAgICAgICAgICAgICBhcnJbMl0gPSAwXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gYXJyXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIOabtOaWsOe7k+aenOaVsOaNriBcclxuICAgICAgICAgICAgICogKi9cclxuICAgICAgICAgICAgdXBkYXRlQWRkcmVzc0RhdGUoKSB7XHJcbiAgICAgICAgICAgICAgICBzZWxlY3RWYWxbMF0gPSB0aGlzLmFycmF5WzBdW3RoaXMudmFsdWVbMF1dLm5hbWVcclxuICAgICAgICAgICAgICAgIHNlbGVjdFZhbFsxXSA9IHRoaXMuYXJyYXlbMV1bdGhpcy52YWx1ZVsxXV0ubmFtZSBcclxuICAgICAgICAgICAgICAgIHNlbGVjdFZhbFsyXSA9IHRoaXMuYXJyYXlbMl1bdGhpcy52YWx1ZVsyXV0ubmFtZSBcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICog54K55Ye756Gu5a6aXHJcbiAgICAgICAgICAgICAqICovXHJcbiAgICAgICAgICAgIGJpbmRQaWNrZXJDaGFuZ2UoZSkge1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywge1xyXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogZS50YXJnZXQsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogc2VsZWN0VmFsXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICB9XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlPlxyXG48L3N0eWxlPiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///57\n"); |
| | | |
| | | /***/ }), |
| | | /* 58 */ |
| | |
| | | /***/ (function(module, exports, __webpack_require__) { |
| | | |
| | | "use strict"; |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;var _regenerator = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/regenerator */ 50));\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _pickerAddress = _interopRequireDefault(__webpack_require__(/*! ../../js/pickerAddress/pickerAddress.vue */ 53));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {try {var info = gen[key](arg);var value = info.value;} catch (error) {reject(error);return;}if (info.done) {resolve(value);} else {Promise.resolve(value).then(_next, _throw);}}function _asyncToGenerator(fn) {return function () {var self = this,args = arguments;return new Promise(function (resolve, reject) {var gen = fn.apply(self, args);function _next(value) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);}function _throw(err) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);}_next(undefined);});};}var _default =\n{\n components: {\n pickerAddress: _pickerAddress.default },\n\n data: function data() {\n return {\n title: '新增',\n param: {},\n classAttrList: [],\n classGridStyle: [],\n edit_inital_event: \"\", //弹窗初始化事件ID\n edit_ok_event: \"\", //弹窗点击OK 触发事件ID\n edit_select_compose_event: \"\", //选择组成对象时调用\n edit_compose_cls_id: \"\",\n global_attr: [],\n refdatastore: [], //引用数据存储区// {attr:'G_PRJ_' + bindattr + '_ID', value:info.id}\n scanCodeVal: \"\",\n subClassAttrList: [],\n subPanelList: [],\n subClassGridStyle: [] };\n\n },\n onLoad: function onLoad(options) {\n // console.log(options);\n uni.setNavigationBarTitle({ title: options.titlename }); //设置顶部标题 \n var param = JSON.parse(options.param);\n this.$data.title = param.Add_BtnName ? param.Add_BtnName : options.titlename; //设置按钮文字\n __f__(\"log\", param, \" at pages/modal/ms_classAttr.vue:621\");\n if (!param.Master_Cls.View_Style) {\n uni.showModal({ title: \"提示\", content: \"该功能点未配置界面窗口,请重新配置!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n if (!param.Master_Cls.View_Style.Name) {\n uni.showModal({ title: \"提示\", content: \"该功能点未配置窗口样式,请重新配置!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n this.$data.param = param;\n // var edit_dlg = {\n // Model: param.EditDlgMode,\n // Name: param.Master_Cls.View_Style.Name\n // }\n //主数据类获取\n var dataInfo = {\n class_id: param.Master_Cls.ID };\n\n var $this = this;\n $this.$store.state.thisareaFuncID = param.Master_Cls.ID;\n // console.log($this.$store.getters.getclassAttrList);\n if ($this.$store.getters.getclassAttrList) {\n $this.$data.classAttrList = $this.$store.getters.getclassAttrList.data;\n $this.classGridStyleInfo(param.Master_Cls.ID, $this.$data.param.Master_Cls.View_Style.Name, 'Mast');\n } else {\n $this.$store.dispatch('classAttrList', dataInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n $this.$data.classAttrList = success.data;\n\n $this.classGridStyleInfo(param.Master_Cls.ID, $this.$data.param.Master_Cls.View_Style.Name, 'Mast');\n } else {\n uni.showModal({ title: \"错误1\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误1.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n }\n\n //从数据类获取\n var subdataInfo = {\n class_id: param.Sub_Cls.ID };\n\n $this.$store.state.thisareaFuncSubID = param.Sub_Cls.ID;\n if ($this.$store.getters.getSubClassAttrList) {\n $this.$data.subClassAttrList = $this.$store.getters.getSubClassAttrList.data;\n $this.classGridStyleInfo(param.Sub_Cls.ID, $this.$data.param.Sub_Cls.View_Style.Name, 'Sub');\n } else {\n $this.$store.dispatch('subClassAttrList', subdataInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n $this.$data.subClassAttrList = success.data;\n\n $this.classGridStyleInfo(param.Sub_Cls.ID, $this.$data.param.Sub_Cls.View_Style.Name, 'Sub');\n } else {\n uni.showModal({ title: \"错误1_1\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误1_1.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n }\n },\n methods: {\n cancel: function cancel(e) {\n uni.navigateBack({\n delta: 1 //返回层数,2则上上页\n });\n },\n panel_del: function panel_del(index) {\n if (this.$data.subPanelList[index].scanCodeVal == this.$data.scanCodeVal) {\n this.$data.scanCodeVal = '';\n }\n this.$data.subPanelList.splice(index, 1);\n },\n classGridStyleInfo: function classGridStyleInfo(clsid, styleName, clsType) {var _this = this;return _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee() {var $this, gridstyleInfo;return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:\n $this = _this;\n gridstyleInfo = {\n class_id: clsid,\n name: styleName,\n type: '2' };\n\n $this.$store.state.thisEditName = styleName;\n // console.log($this.$store.getters.getclassGridStyleInfo);\n //获取主数据类界面样式\n if (clsType == 'Mast') {\n if ($this.$store.getters.getclassGridStyleInfo) {\n $this.$data.classGridStyle = $this.$store.getters.getclassGridStyleInfo.data;\n $this.class_attr_init();\n } else {\n //console.log(gridstyleInfo);\n $this.$store.dispatch('classGridStyleInfo', gridstyleInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n success.data.StyleDef = JSON.parse(success.data.StyleDef);\n $this.$data.classGridStyle = success.data;\n\n $this.class_attr_init();\n } else {\n uni.showModal({ title: \"错误1.2\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/ms_classAttr.vue:724\");\n uni.showModal({ title: \"错误1.3\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n }\n } else if (clsType == 'Sub') {//获取从数据类界面样式\n if ($this.$store.getters.getSubClassGridStyleInfo) {\n $this.$data.subClassGridStyle = $this.$store.getters.getSubClassGridStyleInfo.data;\n $this.subClass_attr_init();\n } else {\n //console.log(gridstyleInfo);\n $this.$store.dispatch('subClassGridStyleInfo', gridstyleInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n success.data.StyleDef = JSON.parse(success.data.StyleDef);\n $this.$data.subClassGridStyle = success.data;\n\n $this.subClass_attr_init();\n } else {\n uni.showModal({ title: \"错误1.2\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/ms_classAttr.vue:745\");\n uni.showModal({ title: \"错误1.3\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n }\n }case 4:case \"end\":return _context.stop();}}}, _callee);}))();\n },\n ontap: function ontap(e) {var _this2 = this; //扫码功能\n //console.log(e.target)\n getApp().onScan(function (result) {\n //console.log(result.decodedata);\n _this2.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = result.decodedata;\n });\n },\n scan_ontap: function scan_ontap(e) {var _this3 = this; //扫码区扫码功能\n //console.log(e.target)\n getApp().onScan(function (result) {\n __f__(\"log\", result.decodedata, \" at pages/modal/ms_classAttr.vue:761\");\n var isflag = true;\n for (var i in _this3.$data.subPanelList) {\n if (_this3.$data.subPanelList[i].scanCodeVal == result.decodedata)\n isflag = false;\n }\n\n if (isflag) {\n _this3.$data.scanCodeVal = result.decodedata;\n var eventid = _this3.$data.param.Scan_Code.Input_Change_Event.ID;\n if (eventid) {\n var req = [];\n var attrlist = _this3.$data.subClassAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, value: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, value: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, value: ar.Value ? ar.Value : '' });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: _this3.$data.param.Sub_Cls.ID,\n objid: \"\",\n attr: req,\n inputParamter: [{ attr: 'input_3037', value: _this3.$data.scanCodeVal }] };\n\n\n _this3.scan_DataObjRunCustomEvent(info, \"\");\n }\n }\n });\n },\n onarrow: function onarrow(index, open) {\n // console.log(index+'--'+open);\n this.$data.classAttrList[index].Open = open == true ? false : true;\n },\n ondateTime: function ondateTime(e) {\n //console.log(e.target)\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n },\n onchange: function onchange(e) {\n __f__(\"log\", e.target, \" at pages/modal/ms_classAttr.vue:815\");\n var value = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].dictitem[e.target.value];\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n __f__(\"log\", data_attr, \" at pages/modal/ms_classAttr.vue:818\");\n if (value.Name != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = value.Name;\n __f__(\"log\", this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value, \" at pages/modal/ms_classAttr.vue:821\");\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info);\n }\n }\n\n },\n onchange2: function onchange2(item, value, delvalue) {\n // console.log(item);\n // console.log(value);\n // console.log(delvalue);\n if (item.length == 0) {//为空时,清空属性value\n var index,iindex,dindex = 0;\n for (var i in this.$data.classAttrList) {\n for (var j in this.$data.classAttrList[i].Attr) {\n for (var d in this.$data.classAttrList[i].Attr[j].dictitem) {\n if (delvalue[0].Name == this.$data.classAttrList[i].Attr[j].dictitem[d].Name) {\n this.$data.classAttrList[i].Attr[j].Value = \"\";\n }\n }\n }\n }\n }\n\n for (var v in item) {\n var index,iindex,dindex = 0;\n for (var i in this.$data.classAttrList) {\n for (var j in this.$data.classAttrList[i].Attr) {\n for (var d in this.$data.classAttrList[i].Attr[j].dictitem) {\n if (item[v].Name == this.$data.classAttrList[i].Attr[j].dictitem[d].Name) {\n index = i;iindex = j;dindex = d;\n }\n }\n }\n }\n var itemvalue = item[v];\n var data_attr = this.$data.classAttrList[index].Attr[iindex];\n\n __f__(\"log\", data_attr, \" at pages/modal/ms_classAttr.vue:888\");\n if (itemvalue.Name != data_attr.Value) {\n this.$data.classAttrList[index].Attr[iindex].Value = value;\n __f__(\"log\", this.$data.classAttrList[index].Attr[iindex].Value, \" at pages/modal/ms_classAttr.vue:891\");\n var eventid = this.$data.classAttrList[index].Attr[iindex].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n if (ar.Type == '字典' || ar.Type == '字典-字符串')\n req.push({ attr: ar.Name, val: itemvalue.Name });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info);\n }\n }\n }\n\n\n },\n onevent: function onevent(e) {\n // console.log(e.target);\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n // console.log(data_attr);\n if (e.target.value != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info, data_attr);\n }\n }\n\n },\n oncheck: function oncheck(e) {\n // console.log(e.target);\n var ischecked = e.target.dataset.ischeck ? false : true;\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n // console.log(data_attr);\n if (ischecked != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = ischecked;\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info);\n }\n }\n\n },\n inputValListIsDel: function inputValListIsDel(index) {\n // console.log(index);\n this.$data.inputValList.splice(index, 1); //删除tabPagejson的内容\n // console.log(this.$data.inputValList);\n },\n addresschange: function addresschange(e) {\n // console.log(e.target);\n __f__(\"log\", e.data.join(';'), \" at pages/modal/ms_classAttr.vue:1022\");\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.data.join(';');\n },\n classAttr_extButton: function classAttr_extButton(index, iindex) {\n var $this = this;\n var before_click_button = $this.$data.classAttrList[index].Attr[iindex].before_click_button;\n var button_callback = $this.$data.classAttrList[index].Attr[iindex].button_callback;\n if (!before_click_button) {\n uni.showModal({ title: \"提示\", content: \"before_click_button-event_id为空!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n if (!button_callback) {\n uni.showModal({ title: \"提示\", content: \"button_callback-event_id为空!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n var data_attr = this.$data.classAttrList[index].Attr[iindex];\n this.DataObjRunCustomEvent_Return(before_click_button, data_attr, button_callback, index, iindex);\n },\n scan_classAttr_extButton: function scan_classAttr_extButton(e) {//---------未完成-----------\n var $this = this;\n var Before_Select_Event = $this.$data.param.Scan_Code.Before_Select_Event.ID;\n var After_Select_Event = $this.$data.param.Scan_Code.After_Select_Event.ID;\n if (!Before_Select_Event) {\n uni.showModal({ title: \"提示\", content: \"选择按钮前事件为空!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n if (!After_Select_Event) {\n uni.showModal({ title: \"提示\", content: \"新增按钮后事件为空!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n // var data_attr = this.$data.classAttrList[index].Attr[iindex];\n this.DataObjRunCustomEvent_Return(Before_Select_Event, '', After_Select_Event, '', '');\n },\n classAttr_AddPer: function classAttr_AddPer(index, iindex) {\n var param = { index: index, iindex: iindex };\n var $this = this;\n uni.navigateTo({\n url: '../selpsn/index?mulit=false¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n __f__(\"log\", data, \" at pages/modal/ms_classAttr.vue:1063\");\n $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].Login + ';' + data[0].Name;\n\n var eventid = $this.$data.classAttrList[param.index].Attr[param.iindex].action;\n if (eventid) {\n eventid = eventid.trim();\n if (eventid) {\n var info = {\n eventid: eventid,\n edtype: \"4\",\n projectid: \"\",\n rclsid: \"\",\n robjid: \"\",\n userlogin: data[0].Login,\n clsid: $this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: [] };\n\n\n // var data_attr = $this.$data.classAttrList[param.index].Attr[param.iindex];\n $this.DataObjRunCustomEvent(info);\n }\n }\n } } });\n\n\n },\n classAttr_AddRef: function classAttr_AddRef(e) {\n __f__(\"log\", e.target, \" at pages/modal/ms_classAttr.vue:1092\");\n uni.showModal({ title: \"提示\", content: \"此功能还未实现!\", showCancel: false, confirmText: \"取消\" });\n // var value=this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].RelCls[e.target.value];\n // this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value=value;\n },\n classAttr_AddPrj: function classAttr_AddPrj(index, iindex) {\n var param = { index: index, iindex: iindex };\n var $this = this;\n uni.navigateTo({\n url: '../selPrj/index?relation=-1¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n // console.log(data);\n $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].ID + ';' + data[0].Name;\n\n var eventid = $this.$data.classAttrList[param.index].Attr[param.iindex].action;\n if (eventid) {\n eventid = eventid.trim();\n if (eventid) {\n var info = {\n eventid: eventid,\n edtype: \"2\",\n projectid: data[0].ID,\n rclsid: \"\",\n robjid: \"\",\n userlogin: \"\",\n clsid: $this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: [] };\n\n\n // var data_attr = $this.$data.classAttrList[param.index].Attr[param.iindex];\n $this.DataObjRunCustomEvent(info);\n }\n }\n } } });\n\n\n },\n sava: function sava() {\n if (this.$data.param.Before_OK_Event) //判断功能点参数是否有确定前脚本\n this.scan_OKDataObjRunCustomEvent(this.$data.param.Before_OK_Event.ID);else\n\n this.scan_OKDataObjRunCustomEvent(this.$data.param.After_OK_Event.ID);\n },\n add: function add() {var _this4 = this;\n uni.showLoading({\n title: \"加载中...\" });\n\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '请选择' || ar.Value == '——请选择——') ar.Value = '';\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ name: ar.Name, value: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ name: ar.Name, value: ar.Value ? '1' : '0' });else\n if (ar.Type == '字典' || ar.Type == '字典-字符串') {\n if (ar.select == true) {//判断下拉是否多选\n var valStr = \"\";\n for (var v in ar.Value) {\n if (valStr)\n valStr += \";\";\n valStr += ar.Value[v];\n }\n req.push({ name: ar.Name, value: valStr });\n } else\n req.push({ name: ar.Name, value: ar.Value });\n } else\n\n req.push({ name: ar.Name, value: ar.Value ? ar.Value : '' });\n\n if ((ar.NotEmpty == '1' || ar.notempty == true) && !ar.Value) {\n // if(ar.notEmpty=='1'){\n uni.hideLoading();\n // uni.showToast({title:ar.DispName+'不能为空!',icon:\"success\",duration:3000});\n uni.showModal({ title: \"提示\", content: ar.DispName + '不能为空!', showCancel: false, confirmText: \"取消\" });\n return;\n }\n }\n }\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.Master_Cls.ID, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.Master_Cls.ID } };\n\n\n\n var dataInfo = {\n class_id: this.$data.param.Master_Cls.ID, data_obj_id: '', masterclsid: '',\n req: JSON.stringify(req), upfile: JSON.stringify([]), post_data: JSON.stringify({}),\n compose: JSON.stringify([]), refdatastore: JSON.stringify([]), extinfo: JSON.stringify(enviroment),\n not_trigger_sys_event: '' };\n\n\n // return\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:1198\");\n this.$store.dispatch('addclassattr', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:1200\");\n uni.hideLoading();\n if (success.code == '00000') {\n var action = JSON.parse(success.data.Action);\n if (action.ret == '0') {\n if (action.result_type == '0') {\n uni.showToast({ title: action.result, icon: \"success\", duration: 3000 });\n }\n // \"{\"ret\":0, \"result_type\":0, \"result\":\"创建成功123123123\",\"info\":\"\"}\"\n }\n //刷新\n uni.redirectTo({\n url: '../modal/ms_classAttr?param=' + JSON.stringify(_this4.$data.param) + \"&titlename=\" + _this4.$data.title });\n\n // this.class_attr_init();\n } else {\n uni.showModal({ title: \"错误\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/ms_classAttr.vue:1219\");\n uni.hideLoading();\n uni.showModal({ title: \"提示\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n class_attr_init: function class_attr_init() {\n var attrlist = this.$data.classGridStyle.StyleDef.show_style;\n var newattrlist = [];\n if (this.$data.classAttrList.length > 0) {\n for (var i = 0; i < attrlist.length; i++) {\n var open = attrlist[i].open;\n var name = attrlist[i].attrgroup_name;\n var attrs = attrlist[i].attrs;\n for (var s = 0; s < this.$data.classAttrList.length; s++) {\n var clsattr = this.$data.classAttrList[s];\n if (name == clsattr.Name) {\n var attr = [];\n for (var j = 0; j < attrs.length; j++) {\n for (var l = 0; l < clsattr.Attr.length; l++) {\n var ca = clsattr.Attr[l];\n if (attrs[j].attr == ca.Name) {\n ca.action = attrs[j].action;\n ca.edit = attrs[j].edit;\n ca.notempty = attrs[j].notempty;\n ca.ext_button = attrs[j].ext_button;\n ca.button_img = attrs[j].button_img;\n ca.button_tooltip = attrs[j].button_tooltip;\n ca.before_click_button = attrs[j].before_click_button;\n ca.button_callback = attrs[j].button_callback;\n ca.hidden = attrs[j].hidden;\n ca.select = attrs[j].select == undefined ? false : attrs[j].select;\n ca.Value = \"\";\n if (ca.dictitem) {\n if (ca.select == true)\n ca.Value = []; //ca.dictitem[0].CN_S_NAME;\n else\n ca.Value = '请选择'; //ca.dictitem[0].CN_S_NAME;\n var dictitemlist = [];\n for (var d = 0; d < ca.dictitem.length; d++) {\n ca.dictitem[d].label = ca.dictitem[d].CN_S_NAME;\n ca.dictitem[d].value = ca.dictitem[d].CN_S_NAME;\n if (ca.dictitem[d].CN_C_IS_DEFAULT == '1')\n ca.Value = ca.dictitem[d].CN_S_NAME;\n }\n }\n if (ca.Type == '日期' || ca.Type == '时间') {\n var nowDate = new Date();\n var date = { year: nowDate.getFullYear(), month: nowDate.getMonth() + 1, day: nowDate.getDate() };\n ca.Value = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day);\n }\n if (ca.Type == '引用对象(多个)') {\n var relClsList = [];\n var attr_rescls = ca.RelCls.split(',');\n for (var ii in attr_rescls) {\n var rescls = attr_rescls[ii].split('|');\n relClsList.push({ id: rescls[0], name: rescls[1] });\n }\n ca.RelClsList = relClsList;\n ca.Value = '请';\n }\n if (ca.Type == '省市区')\n ca.Value = '请选择';\n if (ca.Type == '布尔值')\n ca.Value = false;\n\n attr.push(ca);\n }\n }\n }\n newattrlist.push({\n BkColor: clsattr.BkColor,\n HasAce: clsattr.HasAce,\n ImgFontStyle: clsattr.ImgFontStyle,\n Name: clsattr.Name,\n Order: clsattr.Order,\n Open: open,\n Attr: attr,\n control_style: this.$data.classGridStyle.StyleDef.control_style,\n title_p_wdith: this.$data.classGridStyle.StyleDef.title_p_wdith,\n Font: this.$data.classGridStyle.StyleDef.Font ? this.$data.classGridStyle.StyleDef.Font : {},\n Bk_Color: this.$data.classGridStyle.StyleDef.Bk_Color ? this.$data.classGridStyle.StyleDef.Bk_Color : '#FFFFFF',\n Text_Color: this.$data.classGridStyle.StyleDef.Text_Color ? this.$data.classGridStyle.StyleDef.Text_Color : '#000000' });\n\n }\n }\n }\n if (newattrlist.length > 0) {\n this.$data.classAttrList = newattrlist;\n }\n var req = [];\n if (this.$data.classGridStyle.StyleDef) {\n if (this.$data.classGridStyle.StyleDef.show_style.length > 0) {\n var attrlist = this.$data.classGridStyle.StyleDef.show_style;\n // $el.find('.attr_field').prop('readonly', true);\n // $el.find('.attr_field').prop('disabled', true);\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].attrs;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n req.push({ attr: ar.attr, value: ar.value ? ar.value : '' });\n }\n }\n }\n }\n\n var eventlist = this.$data.classGridStyle.StyleDef.event;\n if (eventlist) {\n if (eventlist.length > 0) {\n for (var i = 0; i < eventlist.length; i++) {\n if (eventlist[i].event_id == 'before_ok') {\n this.$data.edit_ok_event = eventlist[i];\n } else if (eventlist[i].event_id == 'initial') {\n this.$data.edit_inital_event = eventlist[i];\n } else if (eventlist[i].event_id == 'before_select_compose') {\n this.$data.edit_select_compose_event = eventlist[i].scrip_id;\n this.$data.edit_compose_cls_id = eventlist[i].compose_cls_id;\n }\n }\n }\n }\n // console.log(req);\n if (this.$data.edit_inital_event) {\n var eventid = this.$data.edit_inital_event.scrip_id;\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: req };\n\n this.ini_DataObjRunCustomEvent(info);\n }\n __f__(\"log\", this.$data.classGridStyle, \" at pages/modal/ms_classAttr.vue:1355\");\n __f__(\"log\", this.$data.classAttrList, \" at pages/modal/ms_classAttr.vue:1356\");\n\n } else {\n uni.showModal({ title: \"提示\", content: \"未找到可显示的的属性\", showCancel: false, confirmText: \"取消\" });\n }\n },\n subClass_attr_init: function subClass_attr_init() {\n var attrlist = this.$data.subClassGridStyle.StyleDef.show_style;\n var newattrlist = [];\n if (this.$data.subClassAttrList.length > 0) {\n for (var i = 0; i < attrlist.length; i++) {\n var open = attrlist[i].open;\n var name = attrlist[i].attrgroup_name;\n var attrs = attrlist[i].attrs;\n for (var s = 0; s < this.$data.subClassAttrList.length; s++) {\n var clsattr = this.$data.subClassAttrList[s];\n if (name == clsattr.Name) {\n var attr = [];\n for (var j = 0; j < attrs.length; j++) {\n for (var l = 0; l < clsattr.Attr.length; l++) {\n var ca = clsattr.Attr[l];\n if (attrs[j].attr == ca.Name) {\n ca.action = attrs[j].action;\n ca.edit = attrs[j].edit;\n ca.notempty = attrs[j].notempty;\n ca.ext_button = attrs[j].ext_button;\n ca.button_img = attrs[j].button_img;\n ca.button_tooltip = attrs[j].button_tooltip;\n ca.before_click_button = attrs[j].before_click_button;\n ca.button_callback = attrs[j].button_callback;\n ca.hidden = attrs[j].hidden;\n ca.select = attrs[j].select == undefined ? false : attrs[j].select;\n ca.Value = \"\";\n if (ca.dictitem) {\n if (ca.select == true)\n ca.Value = []; //ca.dictitem[0].CN_S_NAME;\n else\n ca.Value = '请选择'; //ca.dictitem[0].CN_S_NAME;\n var dictitemlist = [];\n for (var d = 0; d < ca.dictitem.length; d++) {\n ca.dictitem[d].label = ca.dictitem[d].CN_S_NAME;\n ca.dictitem[d].value = ca.dictitem[d].CN_S_NAME;\n if (ca.dictitem[d].CN_C_IS_DEFAULT == '1')\n ca.Value = ca.dictitem[d].CN_S_NAME;\n }\n }\n if (ca.Type == '日期' || ca.Type == '时间') {\n var nowDate = new Date();\n var date = { year: nowDate.getFullYear(), month: nowDate.getMonth() + 1, day: nowDate.getDate() };\n ca.Value = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day);\n }\n if (ca.Type == '引用对象(多个)') {\n var relClsList = [];\n var attr_rescls = ca.RelCls.split(',');\n for (var ii in attr_rescls) {\n var rescls = attr_rescls[ii].split('|');\n relClsList.push({ id: rescls[0], name: rescls[1] });\n }\n ca.RelClsList = relClsList;\n ca.Value = '请';\n }\n if (ca.Type == '省市区')\n ca.Value = '请选择';\n if (ca.Type == '布尔值')\n ca.Value = false;\n\n attr.push(ca);\n }\n }\n }\n newattrlist.push({\n BkColor: clsattr.BkColor,\n HasAce: clsattr.HasAce,\n ImgFontStyle: clsattr.ImgFontStyle,\n Name: clsattr.Name,\n Order: clsattr.Order,\n Open: open,\n Attr: attr,\n control_style: this.$data.subClassGridStyle.StyleDef.control_style,\n title_p_wdith: this.$data.subClassGridStyle.StyleDef.title_p_wdith,\n Font: this.$data.subClassGridStyle.StyleDef.Font ? this.$data.subClassGridStyle.StyleDef.Font : {},\n Bk_Color: this.$data.subClassGridStyle.StyleDef.Bk_Color ? this.$data.subClassGridStyle.StyleDef.Bk_Color : '#FFFFFF',\n Text_Color: this.$data.subClassGridStyle.StyleDef.Text_Color ? this.$data.subClassGridStyle.StyleDef.Text_Color : '#000000' });\n\n }\n }\n }\n if (newattrlist.length > 0) {\n this.$data.subClassAttrList = newattrlist;\n }\n var req = [];\n if (this.$data.subClassGridStyle.StyleDef) {\n if (this.$data.subClassGridStyle.StyleDef.show_style.length > 0) {\n var attrlist = this.$data.subClassGridStyle.StyleDef.show_style;\n // $el.find('.attr_field').prop('readonly', true);\n // $el.find('.attr_field').prop('disabled', true);\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].attrs;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n req.push({ attr: ar.attr, value: ar.value ? ar.value : '' });\n }\n }\n }\n }\n\n var eventlist = this.$data.subClassGridStyle.StyleDef.event;\n if (eventlist) {\n if (eventlist.length > 0) {\n for (var i = 0; i < eventlist.length; i++) {\n if (eventlist[i].event_id == 'before_ok') {\n this.$data.edit_ok_event = eventlist[i];\n } else if (eventlist[i].event_id == 'initial') {\n this.$data.edit_inital_event = eventlist[i];\n } else if (eventlist[i].event_id == 'before_select_compose') {\n this.$data.edit_select_compose_event = eventlist[i].scrip_id;\n this.$data.edit_compose_cls_id = eventlist[i].compose_cls_id;\n }\n }\n }\n }\n // console.log(req);\n if (this.$data.edit_inital_event) {\n var eventid = this.$data.edit_inital_event.scrip_id;\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Sub_Cls.ID,\n objid: \"\",\n attr: req };\n\n this.scan_ini_DataObjRunCustomEvent(info);\n }\n __f__(\"log\", this.$data.subClassGridStyle, \" at pages/modal/ms_classAttr.vue:1493\");\n __f__(\"log\", this.$data.subClassAttrList, \" at pages/modal/ms_classAttr.vue:1494\");\n\n } else {\n uni.showModal({ title: \"提示\", content: \"未找到可显示的的属性\", showCancel: false, confirmText: \"取消\" });\n }\n },\n ini_DataObjRunCustomEvent: function ini_DataObjRunCustomEvent(info) {var _this5 = this;\n var param = {\n EditStyle: this.$data.param.Master_Cls.View_Style.Name,\n ViewStyle: this.$data.param.Master_Cls.View_Style.Name,\n NotTriggerSysEvent: 0,\n enviroment: {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.Master_Cls.ID, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.Master_Cls.ID // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } } };\n\n\n var inputparameter = '';\n var global_attr = '';\n\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid,\n rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(param), inputparameter: inputparameter, global_attr: global_attr };\n\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:1524\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:1526\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n if (actionlist) {\n for (var j = 0; j < actionlist.length; j++) {\n var action = actionlist[j];\n var action_type = action.action_type;\n var value = action.value;\n if (action_type == 'set_dlg_attr') {\n if (value) {\n var val = value;\n if (typeof value == 'string') {\n val = JSON.parse(value);\n }\n __f__(\"log\", val, \" at pages/modal/ms_classAttr.vue:1541\");\n for (var i = 0; i < val.length; i++) {\n for (var a = 0; a < _this5.$data.classAttrList.length; a++) {\n for (var l = 0; l < _this5.$data.classAttrList[a].Attr.length; l++) {\n var ca = _this5.$data.classAttrList[a].Attr[l];\n if (val[i].attr == ca.Name) {\n if (ca.Type == '字典' || ca.Type == '字典-字符串') {\n var dictItemList = [];\n for (var d in val[i].choice_list) {\n var val = val[i].choice_list[d];\n dictItemList.push({ \"CN_S_NAME\": val, \"Name\": val, \"label\": val, \"value\": val });\n\n }\n ca.dictitem = dictItemList;\n // attr[j].dictitem = val[i].choice_list;\n } else {\n // ca.value = val[i].value;\n }\n }\n }\n }\n\n var length = 0;\n if (!_this5.$data.refdatastore.filter(function (s) {\n return val[i].attr == s.attr;\n }).length) {\n length = 1;\n _this5.$data.refdatastore.push(val[i]);\n }\n if (length == 0) {\n for (var j = 0; j < _this5.$data.refdatastore.length; j++) {\n if (_this5.$data.refdatastore[j].attr == val[i].attr) {\n _this5.$data.refdatastore[j].value = val[i].value;\n }\n }\n }\n }\n }\n }\n if (action_type == 'open_select_userdlg') {\n uni.showModal({ title: \"错误2.2\", content: \"open_select_userdlg这个action_type还未处理!\", showCancel: false, confirmText: \"取消\" });\n }\n }\n }\n\n } else {\n uni.showModal({ title: \"错误2\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误2.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n DataObjRunCustomEvent: function DataObjRunCustomEvent(info, data_attr) {\n var $this = this;\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.Master_Cls.ID, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.Master_Cls.ID // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } };\n\n enviroment.edit_dlg = {\n type: 'small', //小窗口\n class_id: this.$data.param.Master_Cls.ID //当前数据类id\n };\n if (data_attr) {\n enviroment.edit_dlg.form_control = { //所属的表单控件\n name: data_attr.Name, //字段属性\n text: data_attr.DispName, //显示文本\n group_name: data_attr.GroupName, //属性组\n type: data_attr.Type, //字段类型\n readonly: data_attr.ReadOnly, //是否只读\n button_img: data_attr.button_img, //引用按钮的图标\n button_tooltip: data_attr.button_tooltip //引用按钮的tooltip\n };\n }\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid.replace('{', '').replace('}', ''),\n rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), inputparameter: '', global_attr: JSON.stringify(this.$data.global_attr) };\n\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:1626\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:1628\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n\n if (actionlist) {\n __f__(\"log\", actionlist, \" at pages/modal/ms_classAttr.vue:1634\");\n for (var i = 0; i < actionlist.length; i++) {\n var action = actionlist[i];\n if (action.action_type == 'set_dlg_attr') {\n var result = action.value;\n for (var i = 0; i < result.length; i++) {\n if (result[i].choice_list) {\n for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n if (attr[j].Name == result[i].attr) {\n if (attr[j].Type == '字典' || attr[j].Type == '字典-字符串') {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({ \"CN_S_NAME\": val, \"Name\": val, \"label\": val, \"value\": val });\n }\n attr[j].dictitem = dictItemList;\n // attr[j].dictitem = result[i].choice_list;\n }\n }\n }\n }\n }\n for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n __f__(\"log\", attr[j].Name + '==' + result[i].attr, \" at pages/modal/ms_classAttr.vue:1661\");\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n }\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n } else if (data.action[i].action_type == 'set_global_attr') {\n $this.$data.global_attr = data.action[i].value || [];\n }\n }\n }\n\n if (data.result) {\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n }\n }\n }\n\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n }\n } else {\n uni.showModal({ title: \"错误3\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误3.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n OKDataObjRunCustomEvent: function OKDataObjRunCustomEvent() {var _this6 = this;\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.Master_Cls.ID, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.Master_Cls.ID // button=bottom时 master的cls_id\n } };\n\n\n\n var eventid = this.$data.edit_ok_event.scrip_id;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '请选择' || ar.Value == '——请选择——') ar.Value = '';\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, value: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, value: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, value: ar.Value });\n }\n }\n\n if (this.$data.refdatastore.length > 0) {\n for (var i = 0; i < this.$data.refdatastore.length; i++) {\n if (!req.filter(function (s) {\n return this.$data.refdatastore[i].attr == s.name;\n }).length) {\n length = 1;\n req.push({ 'attr': this.$data.refdatastore[i].attr, 'value': this.$data.refdatastore[i].value });\n }\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: req };\n\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid, rclsid: info.rclsid,\n robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), global_attr: JSON.stringify(this.$data.global_attr) };\n\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:1781\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:1783\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n // self.class_attr_ele.find('.attr_field[data-field=\"' + result[i].attr + '\"]').val(result[i].value).data('val', result[i].value);\n var length = 0;\n if (!_this6.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n _this6.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < _this6.$data.refdatastore.length; j++) {\n if (_this6.$data.refdatastore[j].attr == result[i].attr) {\n _this6.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n\n _this6.add();\n } else {\n uni.showModal({ title: \"错误4\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误4.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n DataObjRunCustomEvent_Return: function DataObjRunCustomEvent_Return(eventid, data_attr, button_callback, index, iindex) {var _this7 = this;\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.Master_Cls.ID, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.Master_Cls.ID // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } };\n\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, value: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, value: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, value: ar.Value });\n }\n }\n if (this.$data.refdatastore.length > 0) {\n for (var i = 0; i < this.$data.refdatastore.length; i++) {\n if (!req.filter(function (s) {\n return this.$data.refdatastore[i].attr == s.name;\n }).length) {\n length = 1;\n req.push({ 'attr': this.$data.refdatastore[i].attr, 'value': this.$data.refdatastore[i].value });\n }\n }\n }\n var extinfo = enviroment;\n extinfo.edit_dlg = {\n type: 'small', //小窗口\n class_id: this.$data.param.Master_Cls.ID //当前数据类id\n };\n if (data_attr) {\n extinfo.edit_dlg.form_control = { //所属的表单控件\n name: data_attr.Name, //字段属性\n text: data_attr.DispName, //显示文本\n group_name: data_attr.GroupName, //属性组\n type: data_attr.Type, //字段类型\n readonly: data_attr.ReadOnly, //是否只读\n button_img: data_attr.button_img, //引用按钮的图标\n button_tooltip: data_attr.button_tooltip //引用按钮的tooltip\n };\n }\n var dataInfo = {\n edtype: \"0\", eventid: eventid, projectid: '', rclsid: '', robjid: '', userlogin: '',\n clsid: this.$data.param.Master_Cls.ID, objid: '', attr: JSON.stringify(req),\n extinfo: JSON.stringify(extinfo), global_attr: JSON.stringify(this.$data.global_attr) };\n\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:1872\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:1874\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n if (data != \"\") {\n\n var actions = data.action;\n __f__(\"log\", actions, \" at pages/modal/ms_classAttr.vue:1880\");\n if (actions) {\n for (var i = 0; i < actions.length; i++) {\n var action = actions[i];\n var val = action.value;\n var enviroment = JSON.stringify(enviroment);\n\n if (action.action_type == 'open_panel') {\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!' });\n\n d.show();\n } else\n if (action.action_type == 'open_select_userdlg') {\n var style = val.style;\n // style == 'user' ? '选择人员' : style == 'department' ? '选择部门' : style == 'role' ? '选择角色' : ''\n var $this = _this7;\n var param = {\n index: index,\n iindex: iindex,\n button_callback: button_callback,\n req: req,\n data_attr: data_attr };\n\n uni.navigateTo({\n url: '../selpsn/index?mulit=false¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n __f__(\"log\", data, \" at pages/modal/ms_classAttr.vue:1910\");\n var callback_eventid = param.button_callback.trim();\n var info = {\n eventid: callback_eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: $this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: param.req,\n inputparameter: data };\n\n $this.DataObjRunCustomEvent(info, param.data_attr);\n } } });\n\n\n } else\n if (action.action_type == 'open_data_query_dlg') {\n\n } else\n if (action.action_type == 'open_common_dlg') {\n var value = action.value;\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!' });\n\n d.show();\n } else\n if (action.action_type == 'open_project_query_dlg') {\n //console.log(action.value.select_range);\n //console.log(action.value.mulit_select);\n var priRel = '-1';\n if (action.value.select_range == '全部相关')\n priRel = '0';else\n if (action.value.select_range == '我负责的项目')\n priRel = '1';else\n if (action.value.select_range == '我创建的')\n priRel = '2';else\n if (action.value.select_range == '我参与的' || action.value.select_range == '我参加的')\n priRel = '3';else\n if (action.value.select_range == '我关注的')\n priRel = '4';else\n if (action.value.select_range == '我下属的项目')\n priRel = '5';\n\n var $this = _this7;\n var param_ = {\n index: index,\n iindex: iindex,\n button_callback: button_callback,\n req: req };\n\n uni.navigateTo({\n url: '../selPrj/index?relation=' + priRel + '¶m=' + JSON.stringify(param_),\n events: {\n AddPer: function AddPer(data, param) {\n $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].ID + ';' + data[0].Name;\n var callback_eventid = param.button_callback.trim();\n if (callback_eventid) {\n var info = {\n eventid: callback_eventid,\n edtype: \"2\",\n projectid: data[0].ID,\n rclsid: \"\",\n robjid: \"\",\n userlogin: \"\",\n clsid: $this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: param.req };\n\n\n $this.DataObjRunCustomEvent(info);\n }\n } } });\n\n\n } else {\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!' });\n\n d.show();\n }\n }\n }\n } else {\n uni.showModal({ title: \"提示5.2\", content: '调用 before_click_button 脚本返回空,event_id' + eventid, showCancel: false, confirmText: \"取消\" });\n }\n } else {\n uni.showModal({ title: \"错误5\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"提示5.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n scan_ini_DataObjRunCustomEvent: function scan_ini_DataObjRunCustomEvent(info) {var _this8 = this;\n var param = {\n EditStyle: this.$data.param.Sub_Cls.View_Style.Name,\n ViewStyle: this.$data.param.Sub_Cls.View_Style.Name,\n NotTriggerSysEvent: 0,\n enviroment: {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.Sub_Cls.ID, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.Sub_Cls.ID // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } } };\n\n\n var inputparameter = '';\n var global_attr = '';\n\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid,\n rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(param), inputparameter: inputparameter, global_attr: global_attr };\n\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:2033\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:2035\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n if (actionlist) {\n for (var j = 0; j < actionlist.length; j++) {\n var action = actionlist[j];\n var action_type = action.action_type;\n var value = action.value;\n if (action_type == 'set_dlg_attr') {\n if (value) {\n var val = value;\n if (typeof value == 'string') {\n val = JSON.parse(value);\n }\n __f__(\"log\", val, \" at pages/modal/ms_classAttr.vue:2050\");\n for (var i = 0; i < val.length; i++) {\n for (var a = 0; a < _this8.$data.subClassAttrList.length; a++) {\n for (var l = 0; l < _this8.$data.subClassAttrList[a].Attr.length; l++) {\n var ca = _this8.$data.subClassAttrList[a].Attr[l];\n if (val[i].attr == ca.Name) {\n if (ca.Type == '字典' || ca.Type == '字典-字符串') {\n var dictItemList = [];\n for (var d in val[i].choice_list) {\n var val = val[i].choice_list[d];\n dictItemList.push({ \"CN_S_NAME\": val, \"Name\": val, \"label\": val, \"value\": val });\n\n }\n ca.dictitem = dictItemList;\n // attr[j].dictitem = val[i].choice_list;\n } else {\n // ca.value = val[i].value;\n }\n }\n }\n }\n\n var length = 0;\n if (!_this8.$data.refdatastore.filter(function (s) {\n return val[i].attr == s.attr;\n }).length) {\n length = 1;\n _this8.$data.refdatastore.push(val[i]);\n }\n if (length == 0) {\n for (var j = 0; j < _this8.$data.refdatastore.length; j++) {\n if (_this8.$data.refdatastore[j].attr == val[i].attr) {\n _this8.$data.refdatastore[j].value = val[i].value;\n }\n }\n }\n }\n }\n }\n if (action_type == 'open_select_userdlg') {\n uni.showModal({ title: \"错误6.2\", content: \"open_select_userdlg这个action_type还未处理!\", showCancel: false, confirmText: \"取消\" });\n }\n }\n }\n\n } else {\n uni.showModal({ title: \"错误6\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误6.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n scan_DataObjRunCustomEvent: function scan_DataObjRunCustomEvent(info, data_attr) {var _this9 = this;\n var $this = this;\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.Sub_Cls.ID, // 功能点从数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.Sub_Cls.ID // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } };\n\n enviroment.edit_dlg = {\n type: 'small', //小窗口\n class_id: this.$data.param.Sub_Cls.ID //当前数据类id\n };\n if (data_attr) {\n enviroment.edit_dlg.form_control = { //所属的表单控件\n name: data_attr.Name, //字段属性\n text: data_attr.DispName, //显示文本\n group_name: data_attr.GroupName, //属性组\n type: data_attr.Type, //字段类型\n readonly: data_attr.ReadOnly, //是否只读\n button_img: data_attr.button_img, //引用按钮的图标\n button_tooltip: data_attr.button_tooltip //引用按钮的tooltip\n };\n }\n\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid.replace('{', '').replace('}', ''),\n rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), inputparameter: JSON.stringify(info.inputParamter), global_attr: JSON.stringify(this.$data.global_attr) };\n\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:2136\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:2138\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n\n if (actionlist) {\n __f__(\"log\", actionlist, \" at pages/modal/ms_classAttr.vue:2144\");\n for (var i = 0; i < actionlist.length; i++) {\n var action = actionlist[i];\n if (action.action_type == 'set_dlg_attr') {\n var result = action.value;\n for (var i = 0; i < result.length; i++) {\n if (result[i].choice_list) {\n for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n for (var c = 0; c < $this.$data.subPanelList[s].subClassAttrList.length; c++) {\n var attr = $this.$data.subPanelList[s].subClassAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n if (attr[j].Name == result[i].attr) {\n if (attr[j].Type == '字典' || attr[j].Type == '字典-字符串') {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({ \"CN_S_NAME\": val, \"Name\": val, \"label\": val, \"value\": val });\n }\n attr[j].dictitem = dictItemList;\n // attr[j].dictitem = result[i].choice_list;\n }\n }\n }\n }\n }\n }\n for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n for (var c = 0; c < $this.$data.subPanelList[s].subClassAttrList.length; c++) {\n var attr = $this.$data.subPanelList[s].subClassAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n __f__(\"log\", attr[j].Name + '==' + result[i].attr, \" at pages/modal/ms_classAttr.vue:2174\");\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n }\n }\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n } else if (data.action[i].action_type == 'set_global_attr') {\n $this.$data.global_attr = data.action[i].value || [];\n } else if (data.action[i].action_type == 'add_subcls_panel') {\n var result = action.value;\n var list_1 = JSON.parse(JSON.stringify(_this9.$data.subClassAttrList));\n $this.$data.subPanelList.push({\n scanCodeVal: $this.$data.scanCodeVal,\n subClassAttr: list_1 });\n\n for (var i = 0; i < result.length; i++) {\n for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n if ($this.$data.subPanelList[s].scanCodeVal == $this.$data.scanCodeVal) {\n var _subClassAttr = $this.$data.subPanelList[s].subClassAttr;\n for (var c = 0; c < _subClassAttr.length; c++) {\n var attr = _subClassAttr[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n // console.log(attr[j].Name+'=='+result[i].attr);\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n }\n }\n }\n\n // $this.$data.subPanelList[s].subClassAttr=list_1;\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n }\n }\n }\n\n if (data.result) {\n var _list_ = JSON.parse(JSON.stringify(_this9.$data.subClassAttrList));\n $this.$data.subPanelList.push({\n scanCodeVal: $this.$data.scanCodeVal,\n subClassAttr: _list_ });\n\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n if ($this.$data.subPanelList[s].scanCodeVal == $this.$data.scanCodeVal) {\n var _subClassAttr = $this.$data.subPanelList[s].subClassAttr;\n for (var c = 0; c < _subClassAttr.length; c++) {\n var attr = _subClassAttr[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n // console.log(attr[j].Name+'=='+result[i].attr);\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n }\n }\n }\n }\n }\n\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n }\n } else {\n uni.showModal({ title: \"错误7\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误7.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n scan_OKDataObjRunCustomEvent: function scan_OKDataObjRunCustomEvent(eventID) {\n uni.showLoading({\n title: \"加载中...\" });\n\n var $this = this;\n var req = [];\n var attrlist = $this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '请选择' || ar.Value == '——请选择——') ar.Value = '';\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, value: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, value: ar.Value ? '1' : '0' });else\n if (ar.Type == '字典' || ar.Type == '字典-字符串') {\n if (ar.select == true) {//判断下拉是否多选\n var valStr = \"\";\n for (var v in ar.Value) {\n if (valStr)\n valStr += \";\";\n valStr += ar.Value[v];\n }\n req.push({ attr: ar.Name, value: valStr });\n } else\n req.push({ attr: ar.Name, value: ar.Value });\n } else\n\n req.push({ attr: ar.Name, value: ar.Value ? ar.Value : '' });\n\n if ((ar.NotEmpty == '1' || ar.notempty == true) && !ar.Value) {\n // if(ar.notEmpty=='1'){\n uni.hideLoading();\n // uni.showToast({title:ar.DispName+'不能为空!',icon:\"success\",duration:3000});\n uni.showModal({ title: \"提示\", content: ar.DispName + '不能为空!', showCancel: false, confirmText: \"取消\" });\n return;\n }\n }\n }\n var objects = [];\n var subPanelList = $this.$data.subPanelList;\n for (var s = 0; s < subPanelList.length; s++) {\n var sub_req = [];\n for (var i = 0; i < subPanelList[s].subClassAttr.length; i++) {\n var attr = subPanelList[s].subClassAttr[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '请选择' || ar.Value == '——请选择——') ar.Value = '';\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n sub_req.push({ attr: ar.Name, value: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n sub_req.push({ attr: ar.Name, value: ar.Value ? '1' : '0' });else\n if (ar.Type == '字典' || ar.Type == '字典-字符串') {\n if (ar.select == true) {//判断下拉是否多选\n var valStr = \"\";\n for (var v in ar.Value) {\n if (valStr)\n valStr += \";\";\n valStr += ar.Value[v];\n }\n sub_req.push({ attr: ar.Name, value: valStr });\n } else\n sub_req.push({ attr: ar.Name, value: ar.Value });\n } else\n\n sub_req.push({ attr: ar.Name, value: ar.Value ? ar.Value : '' });\n\n if ((ar.NotEmpty == '1' || ar.notempty == true) && !ar.Value) {\n // if(ar.notEmpty=='1'){\n uni.hideLoading();\n // uni.showToast({title:ar.DispName+'不能为空!',icon:\"success\",duration:3000});\n uni.showModal({ title: \"提示\", content: ar.DispName + '不能为空!', showCancel: false, confirmText: \"取消\" });\n return;\n }\n }\n }\n objects.push({\n obj_id: subPanelList[s].scanCodeVal,\n obj_attrs: sub_req });\n\n }\n var dataJson = {\n master_cls: {\n cls_name: $this.$data.param.Master_Cls.Name,\n obj_attrs: req },\n\n input_3037: $this.$data.scanCodeVal,\n sub_cls: {\n cls_name: $this.$data.param.Sub_Cls.Name,\n objects: objects } };\n\n\n __f__(\"log\", JSON.stringify(dataJson), \" at pages/modal/ms_classAttr.vue:2385\");\n var dataInfo = {\n edtype: \"0\", eventid: eventID, projectid: '', rclsid: '', robjid: '', userlogin: '',\n clsid: $this.$data.param.Sub_Cls.ID, objid: '', attr: JSON.stringify([]), extinfo: JSON.stringify([]),\n global_attr: JSON.stringify($this.$data.global_attr), dataJson: JSON.stringify(dataJson) };\n\n __f__(\"log\", JSON.stringify(dataInfo), \" at pages/modal/ms_classAttr.vue:2391\");\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:2392\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:2394\");\n uni.hideLoading();\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n // self.class_attr_ele.find('.attr_field[data-field=\"' + result[i].attr + '\"]').val(result[i].value).data('val', result[i].value);\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n\n if (eventID != $this.$data.param.After_OK_Event.ID)\n $this.scan_OKDataObjRunCustomEvent($this.$data.param.After_OK_Event.ID);else\n {\n //刷新\n uni.redirectTo({\n url: '../modal/ms_classAttr?param=' + JSON.stringify($this.$data.param) + \"&titlename=\" + $this.$data.title });\n\n }\n } else {\n uni.showModal({ title: \"错误8\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.hideLoading();\n uni.showModal({ title: \"错误8.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 13)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvbXNfY2xhc3NBdHRyLnZ1ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ2xCQSxxSDtBQUNBO0FBQ0E7QUFDQSx5Q0FEQSxFQURBOztBQUlBLE1BSkEsa0JBSUE7QUFDQTtBQUNBLGlCQURBO0FBRUEsZUFGQTtBQUdBLHVCQUhBO0FBSUEsd0JBSkE7QUFLQSwyQkFMQSxFQUtBO0FBQ0EsdUJBTkEsRUFNQTtBQUNBLG1DQVBBLEVBT0E7QUFDQSw2QkFSQTtBQVNBLHFCQVRBO0FBVUEsc0JBVkEsRUFVQTtBQUNBLHFCQVhBO0FBWUEsMEJBWkE7QUFhQSxzQkFi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Q0FGQSxFQUVBO0FBQ0EseUNBSEEsRUFHQTtBQUNBLDhCQUpBLEVBSUE7QUFDQSxzQ0FMQSxFQUtBO0FBQ0EsMENBTkEsRUFNQTtBQUNBLGtEQVBBLENBT0E7QUFQQTtBQVNBOztBQUVBO0FBQ0EsMkJBREEsRUFDQSxxQkFEQSxFQUNBLDJEQURBO0FBRUEsMkJBRkEsRUFFQSxtQkFGQSxFQUVBLHlCQUZBLEVBRUEsaUJBRkEsRUFFQSxpQkFGQTtBQUdBLHVDQUhBLEVBR0EsbUNBSEEsRUFHQSxrREFIQSxFQUdBLG1EQUhBOztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBRkEsRUFFQSxNQUZBLEVBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFqREEsTUFpREE7QUFDQTtBQUNBLGVBRkEsTUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQURBO0FBRUEsc0NBRkE7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBRkEsRUFFQSxNQUZBLEVBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQURBO0FBRUEsa0NBRkE7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFGQSxFQUVBLE1BRkEsRUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBN0lBLE1BNklBO0FBQ0E7QUFDQTtBQUNBLE9BbEpBLEVBa0pBLEtBbEpBLENBa0pBO0FBQ0E7QUFDQTtBQUNBLE9BckpBO0FBc0pBLEtBbGtEQTtBQW1rREEsZ0NBbmtEQSx3Q0Fta0RBLE9BbmtEQSxFQW1rREE7QUFDQTtBQUNBLHVCQURBOztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1RUFEQTtBQUVBO0FBQ0EsbUVBREE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQVJBO0FBU0E7QUFDQSxXQVhBOztBQWFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZFQURBO0FBRUE7QUFDQSx5RUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBUkE7QUFTQTtBQUNBLGFBWEE7O0FBYUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FEQTtBQUVBLDRCQUZBOztBQUlBO0FBQ0E7QUFDQTtBQUNBLHFEQURBO0FBRUEsd0JBRkEsRUFEQTs7QUFLQSwyQ0FMQTtBQU1BO0FBQ0Esa0RBREE7QUFFQSwwQkFGQSxFQU5BOzs7QUFXQTtBQUNBO0FBQ0EsbUJBREEsRUFDQSxnQkFEQSxFQUNBLGFBREEsRUFDQSxVQURBLEVBQ0EsVUFEQSxFQUNBLGFBREE7QUFFQSwyQ0FGQSxFQUVBLFNBRkEsRUFFQSx3QkFGQSxFQUVBLDJCQUZBO0FBR0EsNERBSEEsRUFHQSxrQ0FIQTs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBRkEsRUFFQSxNQUZBLEVBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0ZBREE7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5SEFEQTs7QUFHQTtBQUNBLFNBN0JBLE1BNkJBO0FBQ0E7QUFDQTtBQUNBLE9BbkNBLEVBbUNBLEtBbkNBLENBbUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0F2Q0E7QUF3Q0EsS0FwdERBLEVBM0ZBLEUiLCJmaWxlIjoiNjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8c3R5bGU+XHJcblx0LmNsYXNzX2F0dHJfdGl0bGUge1xyXG5cdFx0Zm9udC1zaXplOiA0NHJweDtcclxuXHQgICAgcGFkZGluZy1ib3R0b206IDIycnB4O1xyXG5cdCAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0fVxyXG5cdC5jbGFzc19hdHRyX3RpdGxlIC50aXRsZV9saW5lIHtcclxuXHQgICAgYm9yZGVyLWJvdHRvbTogMnJweCBzb2xpZCAjYWFhO1xyXG5cdCAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0ICAgIGJvdHRvbTogLTUwcnB4O1xyXG5cdCAgICB3aWR0aDogY2FsYygxMDAlIC0gMjkwcnB4KTtcclxuXHQgICAgbWFyZ2luLWxlZnQ6IDEwMHB4O1xyXG5cdH1cclxuXHQuY2xhc3NfYXR0cl90aXRsZSAudGl0bGVfaWNvbiB7XHJcblx0ICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuXHQgICAgd2lkdGg6IDEwMHJweDtcclxuXHRcdGxpbmUtaGVpZ2h0OiA2NHJweDtcclxuXHQgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdCAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG5cdCAgICBwYWRkaW5nLXRvcDogMTBycHg7ICAgIFxyXG5cdFx0cGFkZGluZy1sZWZ0OiAyMHJweDtcclxuXHQgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdCAgICBjb2xvcjogI2ZmZjtcclxuXHR9XHJcblx0LmNsYXNzX2F0dHJfdGl0bGUgaSB7XHJcblx0ICAgIGNvbG9yOiAjMmM2YWEwIWltcG9ydGFudDtcclxuXHR9XHJcblx0LmNsYXNzX2F0dHJfdGl0bGUgLnRpdGxlX2ljb24gaSB7XHJcblx0ICAgIGZvbnQtc2l6ZTogODBycHg7XHJcblx0fVxyXG5cdC5jbGFzc19hdHRyX3RpdGxlIC50aXRsZSB7XHJcblx0ICAgIHBhZGRpbmctcmlnaHQ6IDIycnB4O1xyXG5cdCAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0ICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcblx0ICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHQgICAgYm90dG9tOiAtOHJweDtcclxuXHR9XHJcblx0LmNsYXNzX2F0dHJfdGl0bGUgLmFycm93IHtcclxuXHQgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0dG9wOiA2cnB4O1xyXG5cdFx0cmlnaHQ6IDMwcnB4O1xyXG5cdFx0Zm9udC1zaXplOiA2MHJweDtcclxuXHR9XHJcblx0aW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xyXG5cdFx0Zm9udC1zaXplOiAxMnJweDtcclxuXHR9XHJcblx0dGV4dGFyZWF7XHJcblx0XHR3aWR0aDogOTglO1xyXG5cdFx0Ym9yZGVyOiAxcHggc29saWQgI2Q1ZDVkNTtcclxuXHRcdHBhZGRpbmc6IDEwcnB4IDhycHggMTJycHg7XHJcblx0XHRiYWNrZ3JvdW5kOiAjRkZGO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xyXG5cdFx0Zm9udC1zaXplOiAzNHJweDtcclxuXHRcdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG5cdFx0Ym94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xyXG5cdFx0dHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xcztcclxuXHRcdGNvbG9yOiAjMDQ2ZGIzO1xyXG5cdFx0bWFyZ2luLXRvcDogNHB4O1xyXG5cdH1cclxuXHRpbnB1dHtcclxuXHRcdGJvcmRlcjogMXB4IHNvbGlkICNkNWQ1ZDU7XHJcblx0XHR3aWR0aDogOTglO1xyXG5cdFx0aGVpZ2h0OiA1MnJweDtcclxuXHRcdGJhY2tncm91bmQ6ICNGRkY7XHJcblx0XHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XHJcblx0XHRjb2xvcjogIzA0NmRiMztcclxuXHRcdHBhZGRpbmc6IDEwcnB4IDhycHggMTJycHg7XHJcblx0XHRmb250LXNpemU6IDM0cnB4O1xyXG5cdFx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcblx0XHRib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XHJcblx0XHR0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjFzO1xyXG5cdFx0bWFyZ2luLXRvcDogNHJweDtcclxuXHR9XHJcblx0LnNlbGVjdHsgICAgXHJcblx0XHR3aWR0aDogMjBweDtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdG9wYWNpdHk6IDA7XHJcblx0fVxyXG5cdC5jbGFzc19hdHRyX2JvZHkgLmZvcm0tZ3JvdXAge1xyXG5cdFx0bWFyZ2luOiAyMHJweCAzMHJweDtcclxuXHQgICAgLyogbWFyZ2luLWxlZnQ6IC0xMnB4O1xyXG5cdCAgICBtYXJnaW4tcmlnaHQ6IC0xMnB4OyAqL1xyXG5cdH1cclxuXHQuc3ViY2xhc3NfYXR0cl9ib2R5IC5mb3JtLWdyb3VwIHtcclxuXHRcdG1hcmdpbjogMjBycHggMTBycHg7XHJcblx0ICAgIC8qIG1hcmdpbi1sZWZ0OiAtMTJweDtcclxuXHQgICAgbWFyZ2luLXJpZ2h0OiAtMTJweDsgKi9cclxuXHR9XHJcblx0LmZvcm0tZ3JvdXAgPiBsYWJlbFtjbGFzcyo9XCJjb2wtXCJdIHtcclxuXHQgICAgbWFyZ2luLWJvdHRvbTogOHJweDtcclxuXHRcdGZvbnQtc2l6ZTogMzJycHg7XHJcblx0fVxyXG5cdC5mb3JtLWdyb3VwIGxhYmVsIHtcclxuXHQgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuXHQgICAgbGluZS1oZWlnaHQ6IDYwcnB4O1xyXG5cdH1cclxuXHQubm8tcGFkZGluZy1yaWdodCB7XHJcblx0ICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDtcclxuXHR9XHJcblx0LmNvbC14cy0xMiB7XHJcblx0ICAgIHdpZHRoOiAxMDAlO1xyXG5cdH1cclxuXHQudHhfdGl0bGV7XHJcblx0XHRmb250LXNpemU6IDMycnB4O1xyXG5cdH1cclxuXHQudHhfdGl0bGUye1xyXG5cdFx0Zm9udC1zaXplOiAzMnJweDtcclxuXHRcdHRleHQtYWxpZ246IHJpZ2h0O1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0dmVydGljYWwtYWxpZ246IC0ycHg7XHJcblx0fVxyXG5cdC50ZXh0LXJpZ2h0e1xyXG5cdFx0bWFyZ2luLXJpZ2h0OiAyMHJweDtcclxuXHRcdG1hcmdpbi10b3A6IC02cnB4O1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0ZmxvYXQ6IHJpZ2h0O1xyXG5cdFx0Zm9udC1zaXplOiA0NHJweDtcclxuXHR9XHJcblx0LnRleHQtcmlnaHQyIHtcclxuXHRcdG1hcmdpbjogMDtcclxuXHRcdHZlcnRpY2FsLWFsaWduOiAtNHB4O1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDlweDtcclxuXHRcdGZsb2F0OiBub25lO1xyXG5cdFx0Zm9udC1zaXplOiA0NHJweDtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHR9XHJcblx0LnNlY3Rpb25faXB1dHtcclxuXHRcdGJvcmRlcjogMXB4IHNvbGlkICNkNWQ1ZDU7XHJcblx0XHR3aWR0aDogOTglO1xyXG5cdFx0aGVpZ2h0OiA2MnJweDtcclxuXHRcdGJhY2tncm91bmQ6ICNGRkY7XHJcblx0XHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XHJcblx0XHRjb2xvcjogIzA0NmRiMztcclxuXHRcdHBhZGRpbmc6IDEwcnB4IDhycHggMTBycHg7XHJcblx0XHRmb250LXNpemU6IDM0cnB4O1xyXG5cdFx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcblx0XHRib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XHJcblx0XHR0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjFzO1xyXG5cdH1cclxuXHQuZGF0ZV9pcHV0e1xyXG5cdFx0Ym9yZGVyOiAxcHggc29saWQgI2Q1ZDVkNTtcclxuXHRcdC8qIHdpZHRoOiA5OCU7ICovXHJcblx0XHRoZWlnaHQ6IDYycnB4O1xyXG5cdFx0YmFja2dyb3VuZDogI0ZGRjtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcclxuXHRcdGNvbG9yOiAjMDQ2ZGIzO1xyXG5cdFx0cGFkZGluZzogMTBycHggOHJweCA0cnB4O1xyXG5cdFx0Zm9udC1zaXplOiAzNHJweDtcclxuXHRcdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG5cdFx0Ym94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xyXG5cdFx0dHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xcztcclxuXHR9XHJcblx0YnV0dG9uLmJ0bl9hZGQge1xyXG5cdFx0d2lkdGg6NDkuNSU7XHJcblx0XHRtYXJnaW4tdG9wOiA1MHJweDtcclxuXHRcdHBhZGRpbmc6IDIwcnB4O1xyXG5cdFx0bGluZS1oZWlnaHQ6IDEuNTtcclxuXHRcdGJhY2tncm91bmQ6ICMyN0E2RTE7XHJcblx0XHRib3JkZXI6IG5vbmU7XHJcblx0XHRjb2xvcjogI2ZmZjtcclxuXHQgICAgZm9udC1zaXplOiAzOHJweDtcclxuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdFx0ZmxvYXQ6IHJpZ2h0O1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdH1cclxuXHRidXR0b24uYnRuX2NhbmNlbCB7XHJcblx0XHR3aWR0aDo0OS41JTtcclxuXHRcdG1hcmdpbi10b3A6IDUwcnB4O1xyXG5cdFx0cGFkZGluZzogMjBycHg7XHJcblx0XHRsaW5lLWhlaWdodDogMS41O1xyXG5cdFx0YmFja2dyb3VuZDogIzI3QTZFMTtcclxuXHRcdGJvcmRlcjogbm9uZTtcclxuXHRcdGNvbG9yOiAjZmZmO1xyXG5cdCAgICBmb250LXNpemU6IDM4cnB4O1xyXG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0XHRmbG9hdDogbGVmdDtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHR9XHJcblx0LmlfdGlzaGl7XHJcblx0XHRjb2xvcjogcmVkO1xyXG5cdFx0dmVydGljYWwtYWxpZ246IHN1YjtcclxuXHRcdGZvbnQtc3R5bGU6IGluaXRpYWw7XHJcblx0XHRtYXJnaW4tbGVmdDogMjBycHg7XHJcblx0XHRmb250LXNpemU6IDE3cHg7XHJcblx0fVxyXG5cdC5hdHRyX2ZpZWxke1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuXHRcdG1hcmdpbi1sZWZ0OiA4cHg7XHJcblx0XHQvKiB3aWR0aDogNzElOyAqL1xyXG5cdH1cclxuXHRcclxuXHQuaW5wdXRfdmFsbGlzdCB7XHJcblx0XHRtYXgtaGVpZ2h0OiAzNTBycHg7XHJcblx0XHRvdmVyZmxvdy15OmF1dG87XHJcblx0XHRkaXNwbGF5OiBub25lO1xyXG5cdH1cclxuXHQuaW5wdXRfdmFsbGlzdCB1bHtcclxuXHRcdC8qIGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgKi9cclxuXHRcdHBhZGRpbmc6IDAgMjBycHg7XHJcblx0fVxyXG5cdC5pbnB1dF92YWxsaXN0IHVsIGxpe1xyXG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcclxuXHRcdHBhZGRpbmc6IDIwcnB4O1xyXG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7XHJcblx0fVxyXG5cdC5pbnB1dF92YWxsaXN0IHVsIGxpIGF7XHJcblx0XHRmbG9hdDogcmlnaHQ7XHJcblx0fVxyXG5cdC5pbnB1dF92YWxsaXN0IHVsIGxpIGEgaSB7XHJcblx0ICAgIGZvbnQtc2l6ZTogNDVycHg7XHJcblx0fVxyXG5cdC5wYW5lbF90aXRsZXtcclxuXHQgICAgZm9udC1zaXplOiAzOHJweDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICMyN0E2RTE7XHJcblx0XHRsaW5lLWhlaWdodDogODBycHg7XHJcblx0XHRjb2xvcjogI2ZmZjtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdH1cclxuXHQudi1wYW5lbGxpc3R7XHJcblx0XHRib3JkZXI6NHJweCBzb2xpZCAjYWFhO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMTBycHg7XHJcblx0XHRtYXJnaW46IDBycHggMjBycHggMTBycHggMjBycHg7XHJcblx0fVxyXG5cdC52LXBhbmVsZGVse1xyXG5cdFx0dGV4dC1hbGlnbjogcmlnaHQ7XHJcblx0fVxyXG5cdC5wYW5lbF9kZWx7XHJcblx0XHRmb250LXNpemU6IDQ0cnB4O1xyXG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBpbml0aWFsO1xyXG5cdFx0bWFyZ2luLXRvcDogMTBycHg7XHJcblx0XHRtYXJnaW4tcmlnaHQ6IDIwcnB4O1xyXG5cdH1cclxuXHQuZGl2WHtcclxuXHQgICAgd2lkdGg6IDIwcHg7XHJcblx0ICAgIGhlaWdodDogMjBweDtcclxuXHQgICAgYm9yZGVyLXJhZGl1czogNjAlO1xyXG5cdCAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0ICAgIHRvcDogLTEwcHg7XHJcblx0ICAgIHJpZ2h0OiAtMTBweDtcclxuXHQgICAgei1pbmRleDogMTAwO1xyXG5cdH1cclxuXHRcclxuPC9zdHlsZT5cclxuXHJcbjx0ZW1wbGF0ZT5cclxuXHQ8dmlldyBjbGFzcz1cImNvbnRlbnRcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwidi1hcmVhXCIgdi1mb3I9XCIoY2xhc3NhdHRyLGluZGV4KSBpbiBjbGFzc0F0dHJMaXN0XCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJjbGFzc19hdHRyX3RpdGxlXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJ0aXRsZV9saW5lXCI+PC9kaXY+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cInRpdGxlX2ljb25cIiA6c3R5bGU9XCJ7J2JhY2tncm91bmQtY29sb3InOmNsYXNzYXR0ci5Ca0NvbG9yfVwiPiAgIFxyXG5cdFx0XHRcdFx0PGkgY2xhc3M9XCJhY2UtaWNvbiBmYVwiIDpjbGFzcz1cImNsYXNzYXR0ci5JbWdGb250U3R5bGVcIj48L2k+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PHNwYW4gY2xhc3M9XCJ0aXRsZVwiPnt7Y2xhc3NhdHRyLk5hbWV9fTwvc3Bhbj5cclxuXHRcdFx0XHQ8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgY2xhc3M9XCJhcnJvd1wiIEB0YXA9XCJvbmFycm93KGluZGV4LGNsYXNzYXR0ci5PcGVuKVwiPjxpIGNsYXNzPVwiYWNlLWljb24gZmEgXCI6Y2xhc3M9XCJjbGFzc2F0dHIuT3Blbj8nZmEtYW5nbGUtZG93bic6J2ZhLWFuZ2xlLXVwJ1wiPjwvaT48L2E+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY2xhc3NfYXR0cl9ib2R5XCIgOnN0eWxlPVwieydkaXNwbGF5JzpjbGFzc2F0dHIuT3Blbj8nYmxvY2snOidub25lJ31cIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZHZfZmllbGRfZGl2XCIgdi1mb3I9XCIoYXR0cixpaW5kZXgpIGluIGNsYXNzYXR0ci5BdHRyXCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZvcm0tZ3JvdXBcIiB2LWlmPVwiYXR0ci5UeXBlPT0n5a2X56ym5LiyJyB8fCBhdHRyLlR5cGU9PSflj6/lj5jplb/lrZfnrKbkuLInIHx8IGF0dHIuVHlwZT09J+aVtOaVsCcgfHwgYXR0ci5UeXBlPT0n5rWu54K55pWwJ1wiIDpzdHlsZT1cInsnZGlzcGxheSc6YXR0ci5oaWRkZW4gPT0gJ1RydWUnPydub25lJzonJ31cIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5LiK5LiL5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHhfdGl0bGVcIiA6c3R5bGU9XCJ7J2ZvbnQtZmFtaWx5JzpjbGFzc2F0dHIuRm9udC5OYW1lP2NsYXNzYXR0ci5Gb250Lk5hbWU6J2luaXRpYWwnLCdmb250LXNpemUnOmNsYXNzYXR0ci5Gb250LlNpemU/Y2xhc3NhdHRyLkZvbnQuU2l6ZTonaW5pdGlhbCcsJ2ZvbnQtd2VpZ2h0JzpjbGFzc2F0dHIuRm9udC5Cb2xkPydib2xkJzonaW5pdGlhbCcsJ2ZvbnQtc3R5bGUnOmNsYXNzYXR0ci5Gb250LlRpbHQ/J2l0YWxpYyc6J2luaXRpYWwnLCd0ZXh0LWRlY29yYXRpb24nOmNsYXNzYXR0ci5Gb250LlVuZGVybGluZT8ndW5kZXJsaW5lJzonaW5pdGlhbCcsJ2JhY2tncm91bmQtY29sb3InOmNsYXNzYXR0ci5Gb250LkJrX0NvbG9yLCdjb2xvcic6Y2xhc3NhdHRyLkZvbnQuVGV4dF9Db2xvciwnd2lkdGgnOmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoKyclJ31cIj48aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZSB8fCBhdHRyLk5vdEVtcHR5PT0nMSdcIj4qPC9pPnt7YXR0ci5EaXNwTmFtZX19OjwvdGV4dD4gIDwhLS0gYXR0ci5Ob3RFbXB0eT09JzEnIC0tPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCIgdi1pZj1cImF0dHIuZXh0X2J1dHRvbj09dHJ1ZVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGEgQHRhcD1cImNsYXNzQXR0cl9leHRCdXR0b24oaW5kZXgsaWluZGV4KVwiID48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXBsdXMtY2lyY2xlXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8IS0tIDxkaXYgc3R5bGU9J3dpZHRoOiAxMDBweDtwb3NpdGlvbjogcmVsYXRpdmU7Jz4gXHJcblx0XHRcdFx0XHRcdFx0PGltYWdlIGNsYXNzPVwiZGl2WFwiIHNyYz1cIi4uLy4uL2ltYWdlcy9tc2dfNTBfbmV3LnBuZ1wiPjwvaW1hZ2U+LS0+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBmb2N1cz1cIm9udGFwXCIgQGJsdXI9XCJvbmV2ZW50XCIgdi1pZj1cImF0dHIuSGVpZ2h0PT0nMSdcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiA6ZGlzYWJsZWQ9XCJhdHRyLmVkaXQ/ZmFsc2U6dHJ1ZVwiID4gPCEtLSA9PSdmbGFzZSc/dHJ1ZTpmYWxzZSAtLT5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dGFyZWEgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBmb2N1cz1cIm9udGFwXCIgQGJsdXI9XCJvbmV2ZW50XCIgdi1lbHNlLWlmPVwiYXR0ci5IZWlnaHQ9PScyJ1wiIDpkYXRhLWluZGV4PVwiaW5kZXhcIjpkYXRhLWlpbmRleD1cImlpbmRleFwiIHN0eWxlPVwiaGVpZ2h0OjYwcHg7XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiA6ZGlzYWJsZWQ9XCJhdHRyLmVkaXQ/ZmFsc2U6dHJ1ZVwiPjwvdGV4dGFyZWE+XHJcblx0XHRcdFx0XHRcdFx0PHRleHRhcmVhIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiBAZm9jdXM9XCJvbnRhcFwiIEBibHVyPVwib25ldmVudFwiIHYtZWxzZS1pZj1cImF0dHIuSGVpZ2h0PT0nMydcIiA6ZGF0YS1pbmRleD1cImluZGV4XCI6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiBzdHlsZT1cImhlaWdodDo5MHB4O1wiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCIgOmRpc2FibGVkPVwiYXR0ci5lZGl0P2ZhbHNlOnRydWVcIj48L3RleHRhcmVhPlxyXG5cdFx0XHRcdFx0XHRcdDwhLS0gPC9kaXY+IC0tPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+W3puWPs+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInR4X3RpdGxlMlwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOmNsYXNzYXR0ci5Gb250Lk5hbWU/Y2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6Y2xhc3NhdHRyLkZvbnQuU2l6ZT9jbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6Y2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6Y2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6Y2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6Y2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJ1wiPio8L2k+e3thdHRyLkRpc3BOYW1lfX06PC9wPlxyXG5cdFx0XHRcdFx0XHRcdDwhLS0gPGRpdiBzdHlsZT0nd2lkdGg6IDEwMCU7cG9zaXRpb246IHJlbGF0aXZlOyc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJkaXZYXCIgc3JjPVwiLi4vLi4vaW1hZ2VzL21zZ181MF9uZXcucG5nXCI+PC9pbWFnZT4gLS0+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBmb2N1cz1cIm9udGFwXCIgQGJsdXI9XCJvbmV2ZW50XCIgdi1pZj1cImF0dHIuSGVpZ2h0PT0nMSdcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIGNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gKGF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnPzEwOjUpIC0gKGF0dHIuZXh0X2J1dHRvbj09dHJ1ZT85OjApICsnJSd9XCIgOmRpc2FibGVkPVwiYXR0ci5lZGl0P2ZhbHNlOnRydWVcIiA+XHJcblx0XHRcdFx0XHRcdFx0PHRleHRhcmVhIGNsYXNzPVwiYXR0cl9maWVsZFwiIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiBAZm9jdXM9XCJvbnRhcFwiIEBibHVyPVwib25ldmVudFwiIHYtZWxzZS1pZj1cImF0dHIuSGVpZ2h0PT0nMidcIiA6ZGF0YS1pbmRleD1cImluZGV4XCI6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiBzdHlsZT1cImhlaWdodDo2MHB4O1wiIDpzdHlsZT1cInsnd2lkdGgnOiBhdHRyLldpZHRoLnNwbGl0KCclJylbMF0gLSBjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCAtIChhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJz8xMDo1KSAtIChhdHRyLmV4dF9idXR0b249PXRydWU/OTowKSArJyUnfVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCI+PC90ZXh0YXJlYT5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dGFyZWEgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBmb2N1cz1cIm9udGFwXCIgQGJsdXI9XCJvbmV2ZW50XCIgdi1lbHNlLWlmPVwiYXR0ci5IZWlnaHQ9PSczJ1wiIDpkYXRhLWluZGV4PVwiaW5kZXhcIjpkYXRhLWlpbmRleD1cImlpbmRleFwiIHN0eWxlPVwiaGVpZ2h0OjkwcHg7XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIGNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gKGF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnPzEwOjUpIC0gKGF0dHIuZXh0X2J1dHRvbj09dHJ1ZT85OjApICsnJSd9XCIgOmRpc2FibGVkPVwiYXR0ci5lZGl0P2ZhbHNlOnRydWVcIj48L3RleHRhcmVhPlxyXG5cdFx0XHRcdFx0XHRcdDwhLS0gPC9kaXY+IC0tPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0MlwiIHYtaWY9XCJhdHRyLmV4dF9idXR0b249PXRydWVcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIEB0YXA9XCJjbGFzc0F0dHJfZXh0QnV0dG9uKGluZGV4LGlpbmRleClcIiA+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZm9ybS1ncm91cFwiIHYtaWY9XCJhdHRyLlR5cGU9PSfluIPlsJTlgLwnXCIgOnN0eWxlPVwieydkaXNwbGF5JzphdHRyLmhpZGRlbiA9PSAnVHJ1ZSc/J25vbmUnOicnfVwiPlxyXG5cdFx0XHRcdFx0XHQ8Y2hlY2tib3gtZ3JvdXAgY2xhc3M9XCJjaGVja19yZW1lbWJlclB3ZFwiIEBjaGFuZ2U9XCJvbmNoZWNrXCIgOmRhdGEtaXNjaGVjaz1cImF0dHIuVmFsdWVcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieydtYXJnaW4tbGVmdCc6IGNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJz9jbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsyICsnJSc6JzEwcnB4J31cIj5cclxuXHRcdFx0XHRcdFx0XHQ8bGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0XHQ8Y2hlY2tib3ggOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIDpjaGVja2VkPVwiYXR0ci5WYWx1ZVwiLz5cclxuXHRcdFx0XHRcdFx0XHRcdDx0ZXh0Pnt7YXR0ci5EaXNwTmFtZX19PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT48L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0PC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0PC9jaGVja2JveC1ncm91cD5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZm9ybS1ncm91cFwiIHYtaWY9XCJhdHRyLlR5cGU9PSfml6XmnJ8nIHx8IGF0dHIuVHlwZT09J+aXtumXtCdcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOmF0dHIuaGlkZGVuID09ICdUcnVlJz8nbm9uZSc6Jyd9XCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+S4iuS4i+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4X3RpdGxlXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6Y2xhc3NhdHRyLkZvbnQuTmFtZT9jbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpjbGFzc2F0dHIuRm9udC5TaXplP2NsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6Y2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0PHBpY2tlciBtb2RlPVwiZGF0ZVwiIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiBAY2hhbmdlPVwib25kYXRlVGltZVwiIGNsYXNzPVwiZGF0ZV9pcHV0XCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCI+XHJcblx0XHRcdFx0XHRcdFx0ICAgPHZpZXcgY2xhc3M9XCJwaWNrZXJcIj57e2F0dHIuVmFsdWV9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8L3BpY2tlcj5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSflt6blj7PluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJ0eF90aXRsZTJcIiA6c3R5bGU9XCJ7J2ZvbnQtZmFtaWx5JzpjbGFzc2F0dHIuRm9udC5OYW1lP2NsYXNzYXR0ci5Gb250Lk5hbWU6J2luaXRpYWwnLCdmb250LXNpemUnOmNsYXNzYXR0ci5Gb250LlNpemU/Y2xhc3NhdHRyLkZvbnQuU2l6ZTonaW5pdGlhbCcsJ2ZvbnQtd2VpZ2h0JzpjbGFzc2F0dHIuRm9udC5Cb2xkPydib2xkJzonaW5pdGlhbCcsJ2ZvbnQtc3R5bGUnOmNsYXNzYXR0ci5Gb250LlRpbHQ/J2l0YWxpYyc6J2luaXRpYWwnLCd0ZXh0LWRlY29yYXRpb24nOmNsYXNzYXR0ci5Gb250LlVuZGVybGluZT8ndW5kZXJsaW5lJzonaW5pdGlhbCcsJ2JhY2tncm91bmQtY29sb3InOmNsYXNzYXR0ci5Gb250LkJrX0NvbG9yLCdjb2xvcic6Y2xhc3NhdHRyLkZvbnQuVGV4dF9Db2xvciwnd2lkdGgnOmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoKyclJ31cIj48aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZSB8fCBhdHRyLk5vdEVtcHR5PT0nMSdcIj4qPC9pPnt7YXR0ci5EaXNwTmFtZX19OjwvcD5cclxuXHRcdFx0XHRcdFx0XHQ8cGlja2VyIG1vZGU9XCJkYXRlXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBjaGFuZ2U9XCJvbmRhdGVUaW1lXCIgY2xhc3M9XCJkYXRlX2lwdXQgYXR0cl9maWVsZFwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzogYXR0ci5XaWR0aC5zcGxpdCgnJScpWzBdIC0gY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGggLSAoYXR0ci5ub3RlbXB0eT09dHJ1ZSB8fCBhdHRyLk5vdEVtcHR5PT0nMSc/MTA6NSkgKyclJ31cIj5cclxuXHRcdFx0XHRcdFx0XHQgICA8dmlldyBjbGFzcz1cInBpY2tlclwiPnt7YXR0ci5WYWx1ZX19PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDwvcGlja2VyPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZvcm0tZ3JvdXBcIiB2LWlmPVwiYXR0ci5UeXBlPT0n5a2X5YW4JyB8fCBhdHRyLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJ1wiIDpzdHlsZT1cInsnZGlzcGxheSc6YXR0ci5oaWRkZW4gPT0gJ1RydWUnPydub25lJzonJ31cIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5LiK5LiL5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHhfdGl0bGVcIiA6c3R5bGU9XCJ7J2ZvbnQtZmFtaWx5JzpjbGFzc2F0dHIuRm9udC5OYW1lP2NsYXNzYXR0ci5Gb250Lk5hbWU6J2luaXRpYWwnLCdmb250LXNpemUnOmNsYXNzYXR0ci5Gb250LlNpemU/Y2xhc3NhdHRyLkZvbnQuU2l6ZTonaW5pdGlhbCcsJ2ZvbnQtd2VpZ2h0JzpjbGFzc2F0dHIuRm9udC5Cb2xkPydib2xkJzonaW5pdGlhbCcsJ2ZvbnQtc3R5bGUnOmNsYXNzYXR0ci5Gb250LlRpbHQ/J2l0YWxpYyc6J2luaXRpYWwnLCd0ZXh0LWRlY29yYXRpb24nOmNsYXNzYXR0ci5Gb250LlVuZGVybGluZT8ndW5kZXJsaW5lJzonaW5pdGlhbCcsJ2JhY2tncm91bmQtY29sb3InOmNsYXNzYXR0ci5Gb250LkJrX0NvbG9yLCdjb2xvcic6Y2xhc3NhdHRyLkZvbnQuVGV4dF9Db2xvciwnd2lkdGgnOmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoKyclJ31cIj48aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZSB8fCBhdHRyLk5vdEVtcHR5PT0nMSdcIj4qPC9pPnt7YXR0ci5EaXNwTmFtZX19OjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHQ8cGlja2VyIGNsYXNzPVwic2VjdGlvbl9pcHV0XCIgQGNoYW5nZT1cIm9uY2hhbmdlXCIgOnJhbmdlPVwiYXR0ci5kaWN0aXRlbVwiIHJhbmdlLWtleT1cIkNOX1NfTkFNRVwiIHYtaWY9XCJhdHRyLnNlbGVjdD09ZmFsc2VcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiA6ZGlzYWJsZWQ9XCJhdHRyLmVkaXQ/ZmFsc2U6dHJ1ZVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwiXCI+e3sgYXR0ci5WYWx1ZSB9fTwvbGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0PC9waWNrZXI+XHJcblx0XHRcdFx0XHRcdFx0PHNlbGVjdC1jeSA6dmFsdWU9XCJhdHRyLlZhbHVlXCIgOm5hbWU9XCJhdHRyLk5hbWVcIiA6b3B0aW9ucz1cImF0dHIuZGljdGl0ZW1cIiBzaG93Q2xlYXJJY29uPVwidHJ1ZVwiIEBjaGFuZ2U9XCJvbmNoYW5nZTJcIiB2LWVsc2UtaWY9XCJhdHRyLnNlbGVjdD09dHJ1ZVwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCI+PC9zZWxlY3QtY3k+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwidHhfdGl0bGUyXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6Y2xhc3NhdHRyLkZvbnQuTmFtZT9jbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpjbGFzc2F0dHIuRm9udC5TaXplP2NsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6Y2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3A+XHJcblx0XHRcdFx0XHRcdFx0PHBpY2tlciBjbGFzcz1cInNlY3Rpb25faXB1dCBhdHRyX2ZpZWxkXCIgQGNoYW5nZT1cIm9uY2hhbmdlXCIgOnJhbmdlPVwiYXR0ci5kaWN0aXRlbVwiIHJhbmdlLWtleT1cIkNOX1NfTkFNRVwiIHYtaWY9XCJhdHRyLnNlbGVjdD09ZmFsc2VcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIGNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gKGF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnPzEwOjUpICsnJSd9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJcIj57eyBhdHRyLlZhbHVlIH19PC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHQ8L3BpY2tlcj5cclxuXHRcdFx0XHRcdFx0XHQ8c2VsZWN0LWN5IDp2YWx1ZT1cImF0dHIuVmFsdWVcIiA6bmFtZT1cImF0dHIuTmFtZVwiIDpvcHRpb25zPVwiYXR0ci5kaWN0aXRlbVwiIHNob3dDbGVhckljb249XCJ0cnVlXCIgQGNoYW5nZT1cIm9uY2hhbmdlMlwiIHYtZWxzZS1pZj1cImF0dHIuc2VsZWN0PT10cnVlXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCI+PC9zZWxlY3QtY3k+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZm9ybS1ncm91cFwiIHYtaWY9XCJhdHRyLlR5cGU9PSflvJXnlKjlr7nosaEo5Y2V5LiqKScgfHwgYXR0ci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknXCIgOnN0eWxlPVwieydkaXNwbGF5JzphdHRyLmhpZGRlbiA9PSAnVHJ1ZSc/J25vbmUnOicnfVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSfkuIrkuIvluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eF90aXRsZVwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOmNsYXNzYXR0ci5Gb250Lk5hbWU/Y2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6Y2xhc3NhdHRyLkZvbnQuU2l6ZT9jbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6Y2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6Y2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6Y2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6Y2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJ1wiPio8L2k+e3thdHRyLkRpc3BOYW1lfX06PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOWvueixoSjljZXkuKopJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGEgQHRhcD1cImNsYXNzQXR0cl9BZGRSZWZcIiA6ZGF0YS1jbGFzc2lkPVwiYXR0ci5SZWxDbHMuc3BsaXQoJ3wnKVswXVwiIDpkYXRhLWNsYXNzbmFtZT1cImF0dHIuUmVsQ2xzLnNwbGl0KCd8JylbMV1cIiA+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHRcIiB2LWlmPVwiYXR0ci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8cGlja2VyIGNsYXNzPVwic2VsZWN0XCIgQGNoYW5nZT1cImNsYXNzQXR0cl9BZGRSZWZcIiA6cmFuZ2U9XCJhdHRyLlJlbENsc0xpc3RcIiByYW5nZS1rZXk9XCJuYW1lXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJcIj57eyBhdHRyLlZhbHVlIH19PC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHRcdDwvcGlja2VyPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGEgY2xhc3M9XCJjbGFzc19hdHRyX2FkZF9yZWZcIj48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXBsdXMtY2lyY2xlXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiBkaXNhYmxlZD1cInRydWVcIiA+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwidHhfdGl0bGUyXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6Y2xhc3NhdHRyLkZvbnQuTmFtZT9jbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpjbGFzc2F0dHIuRm9udC5TaXplP2NsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6Y2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3A+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOiBhdHRyLldpZHRoLnNwbGl0KCclJylbMF0gLSBjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCAtIChhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJz8xMDo1KSAtIDkgKyclJ31cIiBkaXNhYmxlZD1cInRydWVcIiA+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHQyXCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOWvueixoSjljZXkuKopJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGEgQHRhcD1cImNsYXNzQXR0cl9BZGRSZWZcIiA6ZGF0YS1jbGFzc2lkPVwiYXR0ci5SZWxDbHMuc3BsaXQoJ3wnKVswXVwiIDpkYXRhLWNsYXNzbmFtZT1cImF0dHIuUmVsQ2xzLnNwbGl0KCd8JylbMV1cIiA+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHQyXCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHBpY2tlciBjbGFzcz1cInNlbGVjdFwiIEBjaGFuZ2U9XCJjbGFzc0F0dHJfQWRkUmVmXCIgOnJhbmdlPVwiYXR0ci5SZWxDbHNMaXN0XCIgcmFuZ2Uta2V5PVwibmFtZVwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwiXCI+e3sgYXR0ci5WYWx1ZSB9fTwvbGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3BpY2tlcj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIGNsYXNzPVwiY2xhc3NfYXR0cl9hZGRfcmVmXCI+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZm9ybS1ncm91cFwiIHYtaWY9XCJhdHRyLlR5cGU9PSflvJXnlKjkurrlkZgnXCIgOnN0eWxlPVwieydkaXNwbGF5JzphdHRyLmhpZGRlbiA9PSAnVHJ1ZSc/J25vbmUnOicnfVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSfkuIrkuIvluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eF90aXRsZVwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOmNsYXNzYXR0ci5Gb250Lk5hbWU/Y2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6Y2xhc3NhdHRyLkZvbnQuU2l6ZT9jbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6Y2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6Y2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6Y2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6Y2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJ1wiPio8L2k+e3thdHRyLkRpc3BOYW1lfX06PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YSBjbGFzcz1cImNsYXNzX2F0dHJfYWRkX3BlclwiIEB0YXA9XCJjbGFzc0F0dHJfQWRkUGVyKGluZGV4LGlpbmRleClcIj48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXBsdXMtY2lyY2xlXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiA6dmFsdWU9XCJhdHRyLlZhbHVlXCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiBkaXNhYmxlZD1cInRydWVcIiA+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwidHhfdGl0bGUyXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6Y2xhc3NhdHRyLkZvbnQuTmFtZT9jbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpjbGFzc2F0dHIuRm9udC5TaXplP2NsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6Y2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3A+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIDpzdHlsZT1cInsnd2lkdGgnOiBhdHRyLldpZHRoLnNwbGl0KCclJylbMF0gLSBjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCAtIChhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJz8xMDo1KSAtIDkgKyclJ31cIiBkaXNhYmxlZD1cInRydWVcIiA+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHQyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YSBjbGFzcz1cImNsYXNzX2F0dHJfYWRkX3BlclwiIEB0YXA9XCJjbGFzc0F0dHJfQWRkUGVyKGluZGV4LGlpbmRleClcIj48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXBsdXMtY2lyY2xlXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLWdyb3VwXCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOmhueebridcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOmF0dHIuaGlkZGVuID09ICdUcnVlJz8nbm9uZSc6Jyd9XCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+S4iuS4i+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4X3RpdGxlXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6Y2xhc3NhdHRyLkZvbnQuTmFtZT9jbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpjbGFzc2F0dHIuRm9udC5TaXplP2NsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6Y2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIGhyZWY9XCIjXCIgY2xhc3M9XCJjbGFzc19hdHRyX2FkZF9wcmpcIiBAdGFwPVwiY2xhc3NBdHRyX0FkZFByaihpbmRleCxpaW5kZXgpXCI+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+W3puWPs+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInR4X3RpdGxlMlwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOmNsYXNzYXR0ci5Gb250Lk5hbWU/Y2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6Y2xhc3NhdHRyLkZvbnQuU2l6ZT9jbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6Y2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6Y2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6Y2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6Y2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJ1wiPio8L2k+e3thdHRyLkRpc3BOYW1lfX06PC9wPlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYXR0cl9maWVsZFwiIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiA6c3R5bGU9XCJ7J3dpZHRoJzogYXR0ci5XaWR0aC5zcGxpdCgnJScpWzBdIC0gY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGggLSAoYXR0ci5ub3RlbXB0eT09dHJ1ZSB8fCBhdHRyLk5vdEVtcHR5PT0nMSc/MTA6NSkgLSA5ICsnJSd9XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0MlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGEgY2xhc3M9XCJjbGFzc19hdHRyX2FkZF9wcmpcIiBAdGFwPVwiY2xhc3NBdHRyX0FkZFByaihpbmRleCxpaW5kZXgpXCI+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZm9ybS1ncm91cFwiIHYtaWY9XCJhdHRyLlR5cGU9PSfnvJbnoIEnXCIgOnN0eWxlPVwieydkaXNwbGF5JzphdHRyLmhpZGRlbiA9PSAnVHJ1ZSc/J25vbmUnOicnfVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSfkuIrkuIvluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eF90aXRsZVwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOmNsYXNzYXR0ci5Gb250Lk5hbWU/Y2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6Y2xhc3NhdHRyLkZvbnQuU2l6ZT9jbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6Y2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6Y2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6Y2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6Y2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJ1wiPio8L2k+e3thdHRyLkRpc3BOYW1lfX06PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+W3puWPs+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInR4X3RpdGxlMlwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOmNsYXNzYXR0ci5Gb250Lk5hbWU/Y2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6Y2xhc3NhdHRyLkZvbnQuU2l6ZT9jbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6Y2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6Y2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6Y2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6Y2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPnt7YXR0ci5EaXNwTmFtZX19OjwvcD5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImF0dHJfZmllbGRcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIGNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gKGF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnPzEwOjUpICsnJSd9XCIgOmRpc2FibGVkPVwiYXR0ci5lZGl0P2ZhbHNlOnRydWVcIiA+XHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLWdyb3VwXCIgdi1pZj1cImF0dHIuVHlwZT09J+ecgeW4guWMuidcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOmF0dHIuaGlkZGVuID09ICdUcnVlJz8nbm9uZSc6Jyd9XCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+S4iuS4i+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4X3RpdGxlXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6Y2xhc3NhdHRyLkZvbnQuTmFtZT9jbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpjbGFzc2F0dHIuRm9udC5TaXplP2NsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6Y2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0PHBpY2tlckFkZHJlc3MgY2xhc3M9XCJkYXRlX2lwdXRcIiBAY2hhbmdlPVwiYWRkcmVzc2NoYW5nZVwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiID57e2F0dHIuVmFsdWV9fTwvcGlja2VyQWRkcmVzcz5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSflt6blj7PluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJ0eF90aXRsZTJcIiA6c3R5bGU9XCJ7J2ZvbnQtZmFtaWx5JzpjbGFzc2F0dHIuRm9udC5OYW1lP2NsYXNzYXR0ci5Gb250Lk5hbWU6J2luaXRpYWwnLCdmb250LXNpemUnOmNsYXNzYXR0ci5Gb250LlNpemU/Y2xhc3NhdHRyLkZvbnQuU2l6ZTonaW5pdGlhbCcsJ2ZvbnQtd2VpZ2h0JzpjbGFzc2F0dHIuRm9udC5Cb2xkPydib2xkJzonaW5pdGlhbCcsJ2ZvbnQtc3R5bGUnOmNsYXNzYXR0ci5Gb250LlRpbHQ/J2l0YWxpYyc6J2luaXRpYWwnLCd0ZXh0LWRlY29yYXRpb24nOmNsYXNzYXR0ci5Gb250LlVuZGVybGluZT8ndW5kZXJsaW5lJzonaW5pdGlhbCcsJ2JhY2tncm91bmQtY29sb3InOmNsYXNzYXR0ci5Gb250LkJrX0NvbG9yLCdjb2xvcic6Y2xhc3NhdHRyLkZvbnQuVGV4dF9Db2xvciwnd2lkdGgnOmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoKyclJ31cIj48aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZSB8fCBhdHRyLk5vdEVtcHR5PT0nMSdcIj4qPC9pPnt7YXR0ci5EaXNwTmFtZX19OjwvcD5cclxuXHRcdFx0XHRcdFx0XHQ8cGlja2VyQWRkcmVzcyBjbGFzcz1cImRhdGVfaXB1dCBhdHRyX2ZpZWxkXCIgQGNoYW5nZT1cImFkZHJlc3NjaGFuZ2VcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIGNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gKGF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnPzEwOjUpICsnJSd9XCI+e3thdHRyLlZhbHVlfX08L3BpY2tlckFkZHJlc3M+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cInYtYXJlYSBjbGFzc19hdHRyX2JvZHlcIj5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcblx0XHRcdFx0PCEtLSDlt6blj7PluIPlsYAgLS0+XHJcblx0XHRcdFx0PHAgY2xhc3M9XCJ0eF90aXRsZTJcIiA+e3twYXJhbS5TY2FuX0NvZGUuTmFtZX19OjwvcD5cclxuXHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImF0dHJfZmllbGRcIiA6dmFsdWU9XCJzY2FuQ29kZVZhbFwiIEBmb2N1cz1cInNjYW5fb250YXBcIiA6c3R5bGU9XCJwYXJhbS5TY2FuX0NvZGUuSGF2ZV9TZWxlY3RfQnV0dG9uPT10cnVlPyd3aWR0aDogJysoMTAwLShwYXJhbS5TY2FuX0NvZGUuTmFtZS5sZW5ndGggKiA1KS0xNCkrJyU7Jzond2lkdGg6ICcrKDEwMC0ocGFyYW0uU2Nhbl9Db2RlLk5hbWUubGVuZ3RoICogNSktNSkrJyU7J1wiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0MlwiIHYtaWY9XCJwYXJhbS5TY2FuX0NvZGUuSGF2ZV9TZWxlY3RfQnV0dG9uPT10cnVlXCI+XHJcblx0XHRcdFx0XHQ8YSBAdGFwPVwic2Nhbl9jbGFzc0F0dHJfZXh0QnV0dG9uKClcIiA+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYVwiIDpjbGFzcz1cInBhcmFtLlNjYW5fQ29kZS5JbWc/cGFyYW0uU2Nhbl9Db2RlLkltZzonZmEtcGx1cy1jaXJjbGUnXCI+PC9pPjwvYT5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8IS0tIOS4iuS4i+W4g+WxgCAtLT5cclxuXHRcdFx0XHQ8IS0tIDx0ZXh0IGNsYXNzPVwidHhfdGl0bGVcIj57e3BhcmFtLlNjYW5fQ29kZS5OYW1lfX3vvJo8L3RleHQ+IFxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCIgdi1pZj1cInBhcmFtLlNjYW5fQ29kZS5IYXZlX1NlbGVjdF9CdXR0b249PXRydWVcIj4gIFxyXG5cdFx0XHRcdFx0PGEgQHRhcD1cIm1zX2NsYXNzQXR0cl9leHRCdXR0b24oKVwiPjxpIGNsYXNzPVwiYWNlLWljb24gZmFcIiA6Y2xhc3M9XCJwYXJhbS5TY2FuX0NvZGUuSW1nP3BhcmFtLlNjYW5fQ29kZS5JbWc6J2ZhLXBsdXMtY2lyY2xlJ1wiPjwvaT48L2E+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgdmFsdWU9XCJcIiA+IC0tPlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHRcclxuXHRcdDx2aWV3IGNsYXNzPVwidi1wYW5lbFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwicGFuZWxfdGl0bGVcIj57e3BhcmFtLlN1Yl9DbHMuVGl0bGV9fTwvZGl2PlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInYtcGFuZWxsaXN0XCIgdi1mb3I9XCIoc3VicGFuZWwsaW5kZXgpIGluIHN1YlBhbmVsTGlzdFwiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidi1hcmVhXCIgdi1mb3I9XCIoc3ViY2xhc3NhdHRyLGluZGV4KSBpbiBzdWJwYW5lbC5zdWJDbGFzc0F0dHJcIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjbGFzc19hdHRyX3RpdGxlXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGl0bGVfbGluZVwiPjwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGl0bGVfaWNvblwiIDpzdHlsZT1cInsnYmFja2dyb3VuZC1jb2xvcic6c3ViY2xhc3NhdHRyLkJrQ29sb3J9XCI+ICAgXHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJhY2UtaWNvbiBmYVwiIDpjbGFzcz1cInN1YmNsYXNzYXR0ci5JbWdGb250U3R5bGVcIj48L2k+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRpdGxlXCI+e3tzdWJjbGFzc2F0dHIuTmFtZX19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgY2xhc3M9XCJhcnJvd1wiIEB0YXA9XCJvbmFycm93KGluZGV4LHN1YmNsYXNzYXR0ci5PcGVuKVwiPjxpIGNsYXNzPVwiYWNlLWljb24gZmEgXCI6Y2xhc3M9XCJzdWJjbGFzc2F0dHIuT3Blbj8nZmEtYW5nbGUtZG93bic6J2ZhLWFuZ2xlLXVwJ1wiPjwvaT48L2E+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJzdWJjbGFzc19hdHRyX2JvZHlcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOnN1YmNsYXNzYXR0ci5PcGVuPydibG9jayc6J25vbmUnfVwiPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZHZfZmllbGRfZGl2XCIgdi1mb3I9XCIoYXR0cixpaW5kZXgpIGluIHN1YmNsYXNzYXR0ci5BdHRyXCI+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLWdyb3VwXCIgdi1pZj1cImF0dHIuVHlwZT09J+Wtl+espuS4sicgfHwgYXR0ci5UeXBlPT0n5Y+v5Y+Y6ZW/5a2X56ym5LiyJyB8fCBhdHRyLlR5cGU9PSfmlbTmlbAnIHx8IGF0dHIuVHlwZT09J+a1rueCueaVsCdcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOmF0dHIuaGlkZGVuID09ICdUcnVlJz8nbm9uZSc6Jyd9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwic3ViY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSfkuIrkuIvluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHhfdGl0bGVcIiA6c3R5bGU9XCJ7J2ZvbnQtZmFtaWx5JzpzdWJjbGFzc2F0dHIuRm9udC5OYW1lP3N1YmNsYXNzYXR0ci5Gb250Lk5hbWU6J2luaXRpYWwnLCdmb250LXNpemUnOnN1YmNsYXNzYXR0ci5Gb250LlNpemU/c3ViY2xhc3NhdHRyLkZvbnQuU2l6ZTonaW5pdGlhbCcsJ2ZvbnQtd2VpZ2h0JzpzdWJjbGFzc2F0dHIuRm9udC5Cb2xkPydib2xkJzonaW5pdGlhbCcsJ2ZvbnQtc3R5bGUnOnN1YmNsYXNzYXR0ci5Gb250LlRpbHQ/J2l0YWxpYyc6J2luaXRpYWwnLCd0ZXh0LWRlY29yYXRpb24nOnN1YmNsYXNzYXR0ci5Gb250LlVuZGVybGluZT8ndW5kZXJsaW5lJzonaW5pdGlhbCcsJ2JhY2tncm91bmQtY29sb3InOnN1YmNsYXNzYXR0ci5Gb250LkJrX0NvbG9yLCdjb2xvcic6c3ViY2xhc3NhdHRyLkZvbnQuVGV4dF9Db2xvciwnd2lkdGgnOnN1YmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoICsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3RleHQ+ICA8IS0tIGF0dHIuTm90RW1wdHk9PScxJyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHRcIiB2LWlmPVwiYXR0ci5leHRfYnV0dG9uPT10cnVlXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgQHRhcD1cImNsYXNzQXR0cl9leHRCdXR0b24oaW5kZXgsaWluZGV4KVwiID48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXBsdXMtY2lyY2xlXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiBAZm9jdXM9XCJvbnRhcFwiIEBibHVyPVwib25ldmVudFwiIHYtaWY9XCJhdHRyLkhlaWdodD09JzEnXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCIgOmRpc2FibGVkPVwiYXR0ci5lZGl0P2ZhbHNlOnRydWVcIiA+IDwhLS0gPT0nZmxhc2UnP3RydWU6ZmFsc2UgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0YXJlYSA6dmFsdWU9XCJhdHRyLlZhbHVlXCIgQGZvY3VzPVwib250YXBcIiBAYmx1cj1cIm9uZXZlbnRcIiB2LWVsc2UtaWY9XCJhdHRyLkhlaWdodD09JzInXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgc3R5bGU9XCJoZWlnaHQ6NjBweDtcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCI+PC90ZXh0YXJlYT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHRhcmVhIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiBAZm9jdXM9XCJvbnRhcFwiIEBibHVyPVwib25ldmVudFwiIHYtZWxzZS1pZj1cImF0dHIuSGVpZ2h0PT0nMydcIiA6ZGF0YS1pbmRleD1cImluZGV4XCI6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiBzdHlsZT1cImhlaWdodDo5MHB4O1wiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCIgOmRpc2FibGVkPVwiYXR0ci5lZGl0P2ZhbHNlOnRydWVcIj48L3RleHRhcmVhPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cInN1YmNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInR4X3RpdGxlMlwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOnN1YmNsYXNzYXR0ci5Gb250Lk5hbWU/c3ViY2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6c3ViY2xhc3NhdHRyLkZvbnQuU2l6ZT9zdWJjbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOnN1YmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6c3ViY2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6c3ViY2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6c3ViY2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6c3ViY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGggKyclJ31cIj48aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZSB8fCBhdHRyLk5vdEVtcHR5PT0nMSdcIj4qPC9pPnt7YXR0ci5EaXNwTmFtZX19OjwvcD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBmb2N1cz1cIm9udGFwXCIgQGJsdXI9XCJvbmV2ZW50XCIgdi1pZj1cImF0dHIuSGVpZ2h0PT0nMSdcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIHN1YmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gNyAtIChhdHRyLmV4dF9idXR0b249PXRydWU/OTowKSArJyUnfVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dGFyZWEgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBmb2N1cz1cIm9udGFwXCIgQGJsdXI9XCJvbmV2ZW50XCIgdi1lbHNlLWlmPVwiYXR0ci5IZWlnaHQ9PScyJ1wiIDpkYXRhLWluZGV4PVwiaW5kZXhcIjpkYXRhLWlpbmRleD1cImlpbmRleFwiIHN0eWxlPVwiaGVpZ2h0OjYwcHg7XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIHN1YmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gNyAtIChhdHRyLmV4dF9idXR0b249PXRydWU/OTowKSArJyUnfVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCI+PC90ZXh0YXJlYT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHRhcmVhIGNsYXNzPVwiYXR0cl9maWVsZFwiIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiBAZm9jdXM9XCJvbnRhcFwiIEBibHVyPVwib25ldmVudFwiIHYtZWxzZS1pZj1cImF0dHIuSGVpZ2h0PT0nMydcIiA6ZGF0YS1pbmRleD1cImluZGV4XCI6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiBzdHlsZT1cImhlaWdodDo5MHB4O1wiIDpzdHlsZT1cInsnd2lkdGgnOiBhdHRyLldpZHRoLnNwbGl0KCclJylbMF0gLSBzdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCAtIDcgLSAoYXR0ci5leHRfYnV0dG9uPT10cnVlPzk6MCkgKyclJ31cIiA6ZGlzYWJsZWQ9XCJhdHRyLmVkaXQ/ZmFsc2U6dHJ1ZVwiPjwvdGV4dGFyZWE+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0MlwiIHYtaWY9XCJhdHRyLmV4dF9idXR0b249PXRydWVcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8YSBAdGFwPVwiY2xhc3NBdHRyX2V4dEJ1dHRvbihpbmRleCxpaW5kZXgpXCIgPjxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtcGx1cy1jaXJjbGVcIj48L2k+PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLWdyb3VwXCIgdi1pZj1cImF0dHIuVHlwZT09J+W4g+WwlOWAvCdcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOmF0dHIuaGlkZGVuID09ICdUcnVlJz8nbm9uZSc6Jyd9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8Y2hlY2tib3gtZ3JvdXAgY2xhc3M9XCJjaGVja19yZW1lbWJlclB3ZFwiIEBjaGFuZ2U9XCJvbmNoZWNrXCIgOmRhdGEtaXNjaGVjaz1cImF0dHIuVmFsdWVcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieydtYXJnaW4tbGVmdCc6IHN1YmNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJz9zdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsyICsnJSc6JzEwcnB4J31cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxjaGVja2JveCA6dmFsdWU9XCJhdHRyLlZhbHVlXCIgOmNoZWNrZWQ9XCJhdHRyLlZhbHVlXCIvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0Pnt7YXR0ci5EaXNwTmFtZX19PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT48L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvbGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2NoZWNrYm94LWdyb3VwPlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZvcm0tZ3JvdXBcIiB2LWlmPVwiYXR0ci5UeXBlPT0n5pel5pyfJyB8fCBhdHRyLlR5cGU9PSfml7bpl7QnXCIgOnN0eWxlPVwieydkaXNwbGF5JzphdHRyLmhpZGRlbiA9PSAnVHJ1ZSc/J25vbmUnOicnfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cInN1YmNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5LiK5LiL5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4X3RpdGxlXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6c3ViY2xhc3NhdHRyLkZvbnQuTmFtZT9zdWJjbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpzdWJjbGFzc2F0dHIuRm9udC5TaXplP3N1YmNsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6c3ViY2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpzdWJjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpzdWJjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOnN1YmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpzdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWVcIj4qPC9pPnt7YXR0ci5EaXNwTmFtZX19OjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHBpY2tlciBtb2RlPVwiZGF0ZVwiIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiBAY2hhbmdlPVwib25kYXRlVGltZVwiIGNsYXNzPVwiZGF0ZV9pcHV0XCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgIDx2aWV3IGNsYXNzPVwicGlja2VyXCI+e3thdHRyLlZhbHVlfX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvcGlja2VyPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cInN1YmNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInR4X3RpdGxlMlwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOnN1YmNsYXNzYXR0ci5Gb250Lk5hbWU/c3ViY2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6c3ViY2xhc3NhdHRyLkZvbnQuU2l6ZT9zdWJjbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOnN1YmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6c3ViY2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6c3ViY2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6c3ViY2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6c3ViY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJ1wiPio8L2k+e3thdHRyLkRpc3BOYW1lfX06PC9wPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cGlja2VyIG1vZGU9XCJkYXRlXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBjaGFuZ2U9XCJvbmRhdGVUaW1lXCIgY2xhc3M9XCJkYXRlX2lwdXQgYXR0cl9maWVsZFwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzogYXR0ci5XaWR0aC5zcGxpdCgnJScpWzBdIC0gc3ViY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGggLSA3ICsnJSd9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgIDx2aWV3IGNsYXNzPVwicGlja2VyXCI+e3thdHRyLlZhbHVlfX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvcGlja2VyPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZvcm0tZ3JvdXBcIiB2LWlmPVwiYXR0ci5UeXBlPT0n5a2X5YW4JyB8fCBhdHRyLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJ1wiIDpzdHlsZT1cInsnZGlzcGxheSc6YXR0ci5oaWRkZW4gPT0gJ1RydWUnPydub25lJzonJ31cIj5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJzdWJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+S4iuS4i+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eF90aXRsZVwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOnN1YmNsYXNzYXR0ci5Gb250Lk5hbWU/c3ViY2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6c3ViY2xhc3NhdHRyLkZvbnQuU2l6ZT9zdWJjbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOnN1YmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6c3ViY2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6c3ViY2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6c3ViY2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6c3ViY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJ1wiPio8L2k+e3thdHRyLkRpc3BOYW1lfX06PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cGlja2VyIGNsYXNzPVwic2VjdGlvbl9pcHV0XCIgQGNoYW5nZT1cIm9uY2hhbmdlXCIgOnJhbmdlPVwiYXR0ci5kaWN0aXRlbVwiIHJhbmdlLWtleT1cIkNOX1NfTkFNRVwiIHYtaWY9XCJhdHRyLnNlbGVjdD09ZmFsc2VcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiA6ZGlzYWJsZWQ9XCJhdHRyLmVkaXQ/ZmFsc2U6dHJ1ZVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cIlwiPnt7IGF0dHIuVmFsdWUgfX08L2xhYmVsPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3BpY2tlcj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHNlbGVjdC1jeSA6dmFsdWU9XCJhdHRyLlZhbHVlXCIgOm5hbWU9XCJhdHRyLk5hbWVcIiA6b3B0aW9ucz1cImF0dHIuZGljdGl0ZW1cIiBzaG93Q2xlYXJJY29uPVwidHJ1ZVwiIEBjaGFuZ2U9XCJvbmNoYW5nZTJcIiB2LWVsc2UtaWY9XCJhdHRyLnNlbGVjdD09dHJ1ZVwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCI+PC9zZWxlY3QtY3k+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwic3ViY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSflt6blj7PluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwidHhfdGl0bGUyXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6c3ViY2xhc3NhdHRyLkZvbnQuTmFtZT9zdWJjbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpzdWJjbGFzc2F0dHIuRm9udC5TaXplP3N1YmNsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6c3ViY2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpzdWJjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpzdWJjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOnN1YmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpzdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3A+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxwaWNrZXIgY2xhc3M9XCJzZWN0aW9uX2lwdXQgYXR0cl9maWVsZFwiIEBjaGFuZ2U9XCJvbmNoYW5nZVwiIDpyYW5nZT1cImF0dHIuZGljdGl0ZW1cIiByYW5nZS1rZXk9XCJDTl9TX05BTUVcIiB2LWlmPVwiYXR0ci5zZWxlY3Q9PWZhbHNlXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOiBhdHRyLldpZHRoLnNwbGl0KCclJylbMF0gLSBzdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCAtIDcgKyclJ31cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJcIj57eyBhdHRyLlZhbHVlIH19PC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9waWNrZXI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzZWxlY3QtY3kgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIDpuYW1lPVwiYXR0ci5OYW1lXCIgOm9wdGlvbnM9XCJhdHRyLmRpY3RpdGVtXCIgc2hvd0NsZWFySWNvbj1cInRydWVcIiBAY2hhbmdlPVwib25jaGFuZ2UyXCIgdi1lbHNlLWlmPVwiYXR0ci5zZWxlY3Q9PXRydWVcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIj48L3NlbGVjdC1jeT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZm9ybS1ncm91cFwiIHYtaWY9XCJhdHRyLlR5cGU9PSflvJXnlKjlr7nosaEo5Y2V5LiqKScgfHwgYXR0ci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknXCIgOnN0eWxlPVwieydkaXNwbGF5JzphdHRyLmhpZGRlbiA9PSAnVHJ1ZSc/J25vbmUnOicnfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cInN1YmNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5LiK5LiL5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4X3RpdGxlXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6c3ViY2xhc3NhdHRyLkZvbnQuTmFtZT9zdWJjbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpzdWJjbGFzc2F0dHIuRm9udC5TaXplP3N1YmNsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6c3ViY2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpzdWJjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpzdWJjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOnN1YmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpzdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOWvueixoSjljZXkuKopJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxhIEB0YXA9XCJjbGFzc0F0dHJfQWRkUmVmXCIgOmRhdGEtY2xhc3NpZD1cImF0dHIuUmVsQ2xzLnNwbGl0KCd8JylbMF1cIiA6ZGF0YS1jbGFzc25hbWU9XCJhdHRyLlJlbENscy5zcGxpdCgnfCcpWzFdXCIgPjxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtcGx1cy1jaXJjbGVcIj48L2k+PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHRcIiB2LWlmPVwiYXR0ci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHBpY2tlciBjbGFzcz1cInNlbGVjdFwiIEBjaGFuZ2U9XCJjbGFzc0F0dHJfQWRkUmVmXCIgOnJhbmdlPVwiYXR0ci5SZWxDbHNMaXN0XCIgcmFuZ2Uta2V5PVwibmFtZVwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cIlwiPnt7IGF0dHIuVmFsdWUgfX08L2xhYmVsPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvcGlja2VyPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxhIGNsYXNzPVwiY2xhc3NfYXR0cl9hZGRfcmVmXCI+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiBkaXNhYmxlZD1cInRydWVcIiA+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwic3ViY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSflt6blj7PluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwidHhfdGl0bGUyXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6c3ViY2xhc3NhdHRyLkZvbnQuTmFtZT9zdWJjbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpzdWJjbGFzc2F0dHIuRm9udC5TaXplP3N1YmNsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6c3ViY2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpzdWJjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpzdWJjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOnN1YmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpzdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3A+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYXR0cl9maWVsZFwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzogYXR0ci5XaWR0aC5zcGxpdCgnJScpWzBdIC0gc3ViY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGggLSAxNiArJyUnfVwiIGRpc2FibGVkPVwidHJ1ZVwiID5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHQyXCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOWvueixoSjljZXkuKopJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxhIEB0YXA9XCJjbGFzc0F0dHJfQWRkUmVmXCIgOmRhdGEtY2xhc3NpZD1cImF0dHIuUmVsQ2xzLnNwbGl0KCd8JylbMF1cIiA6ZGF0YS1jbGFzc25hbWU9XCJhdHRyLlJlbENscy5zcGxpdCgnfCcpWzFdXCIgPjxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtcGx1cy1jaXJjbGVcIj48L2k+PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHQyXCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxwaWNrZXIgY2xhc3M9XCJzZWxlY3RcIiBAY2hhbmdlPVwiY2xhc3NBdHRyX0FkZFJlZlwiIDpyYW5nZT1cImF0dHIuUmVsQ2xzTGlzdFwiIHJhbmdlLWtleT1cIm5hbWVcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJcIj57eyBhdHRyLlZhbHVlIH19PC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3BpY2tlcj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8YSBjbGFzcz1cImNsYXNzX2F0dHJfYWRkX3JlZlwiPjxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtcGx1cy1jaXJjbGVcIj48L2k+PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLWdyb3VwXCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOS6uuWRmCdcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOmF0dHIuaGlkZGVuID09ICdUcnVlJz8nbm9uZSc6Jyd9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwic3ViY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSfkuIrkuIvluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHhfdGl0bGVcIiA6c3R5bGU9XCJ7J2ZvbnQtZmFtaWx5JzpzdWJjbGFzc2F0dHIuRm9udC5OYW1lP3N1YmNsYXNzYXR0ci5Gb250Lk5hbWU6J2luaXRpYWwnLCdmb250LXNpemUnOnN1YmNsYXNzYXR0ci5Gb250LlNpemU/c3ViY2xhc3NhdHRyLkZvbnQuU2l6ZTonaW5pdGlhbCcsJ2ZvbnQtd2VpZ2h0JzpzdWJjbGFzc2F0dHIuRm9udC5Cb2xkPydib2xkJzonaW5pdGlhbCcsJ2ZvbnQtc3R5bGUnOnN1YmNsYXNzYXR0ci5Gb250LlRpbHQ/J2l0YWxpYyc6J2luaXRpYWwnLCd0ZXh0LWRlY29yYXRpb24nOnN1YmNsYXNzYXR0ci5Gb250LlVuZGVybGluZT8ndW5kZXJsaW5lJzonaW5pdGlhbCcsJ2JhY2tncm91bmQtY29sb3InOnN1YmNsYXNzYXR0ci5Gb250LkJrX0NvbG9yLCdjb2xvcic6c3ViY2xhc3NhdHRyLkZvbnQuVGV4dF9Db2xvciwnd2lkdGgnOnN1YmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoKyclJ31cIj48aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZSB8fCBhdHRyLk5vdEVtcHR5PT0nMSdcIj4qPC9pPnt7YXR0ci5EaXNwTmFtZX19OjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8YSBjbGFzcz1cImNsYXNzX2F0dHJfYWRkX3BlclwiIEB0YXA9XCJjbGFzc0F0dHJfQWRkUGVyKGluZGV4LGlpbmRleClcIj48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXBsdXMtY2lyY2xlXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiIGRpc2FibGVkPVwidHJ1ZVwiID5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJzdWJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+W3puWPs+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJ0eF90aXRsZTJcIiA6c3R5bGU9XCJ7J2ZvbnQtZmFtaWx5JzpzdWJjbGFzc2F0dHIuRm9udC5OYW1lP3N1YmNsYXNzYXR0ci5Gb250Lk5hbWU6J2luaXRpYWwnLCdmb250LXNpemUnOnN1YmNsYXNzYXR0ci5Gb250LlNpemU/c3ViY2xhc3NhdHRyLkZvbnQuU2l6ZTonaW5pdGlhbCcsJ2ZvbnQtd2VpZ2h0JzpzdWJjbGFzc2F0dHIuRm9udC5Cb2xkPydib2xkJzonaW5pdGlhbCcsJ2ZvbnQtc3R5bGUnOnN1YmNsYXNzYXR0ci5Gb250LlRpbHQ/J2l0YWxpYyc6J2luaXRpYWwnLCd0ZXh0LWRlY29yYXRpb24nOnN1YmNsYXNzYXR0ci5Gb250LlVuZGVybGluZT8ndW5kZXJsaW5lJzonaW5pdGlhbCcsJ2JhY2tncm91bmQtY29sb3InOnN1YmNsYXNzYXR0ci5Gb250LkJrX0NvbG9yLCdjb2xvcic6c3ViY2xhc3NhdHRyLkZvbnQuVGV4dF9Db2xvciwnd2lkdGgnOnN1YmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoKyclJ31cIj48aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZSB8fCBhdHRyLk5vdEVtcHR5PT0nMSdcIj4qPC9pPnt7YXR0ci5EaXNwTmFtZX19OjwvcD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIDpzdHlsZT1cInsnd2lkdGgnOiBhdHRyLldpZHRoLnNwbGl0KCclJylbMF0gLSBzdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCAtIDE2ICsnJSd9XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGV4dC1yaWdodDJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8YSBjbGFzcz1cImNsYXNzX2F0dHJfYWRkX3BlclwiIEB0YXA9XCJjbGFzc0F0dHJfQWRkUGVyKGluZGV4LGlpbmRleClcIj48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXBsdXMtY2lyY2xlXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZm9ybS1ncm91cFwiIHYtaWY9XCJhdHRyLlR5cGU9PSflvJXnlKjpobnnm64nXCIgOnN0eWxlPVwieydkaXNwbGF5JzphdHRyLmhpZGRlbiA9PSAnVHJ1ZSc/J25vbmUnOicnfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cInN1YmNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5LiK5LiL5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4X3RpdGxlXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6c3ViY2xhc3NhdHRyLkZvbnQuTmFtZT9zdWJjbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpzdWJjbGFzc2F0dHIuRm9udC5TaXplP3N1YmNsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6c3ViY2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpzdWJjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpzdWJjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOnN1YmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpzdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgaHJlZj1cIiNcIiBjbGFzcz1cImNsYXNzX2F0dHJfYWRkX3ByalwiIEB0YXA9XCJjbGFzc0F0dHJfQWRkUHJqKGluZGV4LGlpbmRleClcIj48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXBsdXMtY2lyY2xlXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiIGRpc2FibGVkPVwidHJ1ZVwiID5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJzdWJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+W3puWPs+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJ0eF90aXRsZTJcIiA6c3R5bGU9XCJ7J2ZvbnQtZmFtaWx5JzpzdWJjbGFzc2F0dHIuRm9udC5OYW1lP3N1YmNsYXNzYXR0ci5Gb250Lk5hbWU6J2luaXRpYWwnLCdmb250LXNpemUnOnN1YmNsYXNzYXR0ci5Gb250LlNpemU/c3ViY2xhc3NhdHRyLkZvbnQuU2l6ZTonaW5pdGlhbCcsJ2ZvbnQtd2VpZ2h0JzpzdWJjbGFzc2F0dHIuRm9udC5Cb2xkPydib2xkJzonaW5pdGlhbCcsJ2ZvbnQtc3R5bGUnOnN1YmNsYXNzYXR0ci5Gb250LlRpbHQ/J2l0YWxpYyc6J2luaXRpYWwnLCd0ZXh0LWRlY29yYXRpb24nOnN1YmNsYXNzYXR0ci5Gb250LlVuZGVybGluZT8ndW5kZXJsaW5lJzonaW5pdGlhbCcsJ2JhY2tncm91bmQtY29sb3InOnN1YmNsYXNzYXR0ci5Gb250LkJrX0NvbG9yLCdjb2xvcic6c3ViY2xhc3NhdHRyLkZvbnQuVGV4dF9Db2xvciwnd2lkdGgnOnN1YmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoKyclJ31cIj48aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZSB8fCBhdHRyLk5vdEVtcHR5PT0nMSdcIj4qPC9pPnt7YXR0ci5EaXNwTmFtZX19OjwvcD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIDpzdHlsZT1cInsnd2lkdGgnOiBhdHRyLldpZHRoLnNwbGl0KCclJylbMF0gLSBzdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCAtIDE2ICsnJSd9XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGV4dC1yaWdodDJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8YSBjbGFzcz1cImNsYXNzX2F0dHJfYWRkX3ByalwiIEB0YXA9XCJjbGFzc0F0dHJfQWRkUHJqKGluZGV4LGlpbmRleClcIj48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXBsdXMtY2lyY2xlXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZm9ybS1ncm91cFwiIHYtaWY9XCJhdHRyLlR5cGU9PSfnvJbnoIEnXCIgOnN0eWxlPVwieydkaXNwbGF5JzphdHRyLmhpZGRlbiA9PSAnVHJ1ZSc/J25vbmUnOicnfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cInN1YmNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5LiK5LiL5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4X3RpdGxlXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6c3ViY2xhc3NhdHRyLkZvbnQuTmFtZT9zdWJjbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpzdWJjbGFzc2F0dHIuRm9udC5TaXplP3N1YmNsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6c3ViY2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpzdWJjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpzdWJjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOnN1YmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpzdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cInN1YmNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInR4X3RpdGxlMlwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOnN1YmNsYXNzYXR0ci5Gb250Lk5hbWU/c3ViY2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6c3ViY2xhc3NhdHRyLkZvbnQuU2l6ZT9zdWJjbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOnN1YmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6c3ViY2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6c3ViY2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6c3ViY2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6c3ViY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJ1wiPio8L2k+e3thdHRyLkRpc3BOYW1lfX06PC9wPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImF0dHJfZmllbGRcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIHN1YmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gNyArJyUnfVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZvcm0tZ3JvdXBcIiB2LWlmPVwiYXR0ci5UeXBlPT0n55yB5biC5Yy6J1wiIDpzdHlsZT1cInsnZGlzcGxheSc6YXR0ci5oaWRkZW4gPT0gJ1RydWUnPydub25lJzonJ31cIj5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJzdWJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+S4iuS4i+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eF90aXRsZVwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOnN1YmNsYXNzYXR0ci5Gb250Lk5hbWU/c3ViY2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6c3ViY2xhc3NhdHRyLkZvbnQuU2l6ZT9zdWJjbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOnN1YmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6c3ViY2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6c3ViY2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6c3ViY2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6c3ViY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJ1wiPio8L2k+e3thdHRyLkRpc3BOYW1lfX06PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cGlja2VyQWRkcmVzcyBjbGFzcz1cImRhdGVfaXB1dFwiIEBjaGFuZ2U9XCJhZGRyZXNzY2hhbmdlXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCIgPnt7YXR0ci5WYWx1ZX19PC9waWNrZXJBZGRyZXNzPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cInN1YmNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInR4X3RpdGxlMlwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOnN1YmNsYXNzYXR0ci5Gb250Lk5hbWU/c3ViY2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6c3ViY2xhc3NhdHRyLkZvbnQuU2l6ZT9zdWJjbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOnN1YmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6c3ViY2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6c3ViY2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6c3ViY2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6c3ViY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJ1wiPio8L2k+e3thdHRyLkRpc3BOYW1lfX06PC9wPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cGlja2VyQWRkcmVzcyBjbGFzcz1cImRhdGVfaXB1dCBhdHRyX2ZpZWxkXCIgQGNoYW5nZT1cImFkZHJlc3NjaGFuZ2VcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIHN1YmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gNyArJyUnfVwiPnt7YXR0ci5WYWx1ZX19PC9waWNrZXJBZGRyZXNzPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ2LXBhbmVsZGVsXCI+PGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIGNsYXNzPVwicGFuZWxfZGVsXCIgQHRhcD1cInBhbmVsX2RlbChpbmRleClcIj48aSBjbGFzcz1cImFjZS1pY29uIGZ1LWRlbGV0ZVwiPjwvaT48L2E+PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHRcclxuXHRcdDxidXR0b24gdHlwZT1cImRlZmF1bHRcIiBAdGFwPVwiY2FuY2VsXCIgY2xhc3M9XCJidG5fY2FuY2VsXCI+5Y+W5raIPC9idXR0b24+XHJcblx0XHQ8YnV0dG9uIHR5cGU9XCJkZWZhdWx0XCIgQHRhcD1cInNhdmFcIiBjbGFzcz1cImJ0bl9hZGRcIj57e3RpdGxlfX08L2J1dHRvbj5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+IFxyXG5cclxuPHNjcmlwdD5cclxuXHRpbXBvcnQgcGlja2VyQWRkcmVzcyBmcm9tICcuLi8uLi9qcy9waWNrZXJBZGRyZXNzL3BpY2tlckFkZHJlc3MudnVlJ1xyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdGNvbXBvbmVudHM6IHtcclxuICAgICAgICAgICAgcGlja2VyQWRkcmVzc1xyXG4gICAgICAgIH0sXHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdHRpdGxlOiAn5paw5aKeJyxcclxuXHRcdFx0XHRwYXJhbTp7fSxcclxuXHRcdFx0XHRjbGFzc0F0dHJMaXN0OltdLFxyXG5cdFx0XHRcdGNsYXNzR3JpZFN0eWxlOltdLFxyXG5cdFx0XHRcdGVkaXRfaW5pdGFsX2V2ZW50OlwiXCIsICAvL+W8ueeql+WIneWni+WMluS6i+S7tklEXHJcblx0XHRcdFx0ZWRpdF9va19ldmVudDpcIlwiLCAgICAgIC8v5by556qX54K55Ye7T0sg6Kem5Y+R5LqL5Lu2SURcclxuXHRcdFx0XHRlZGl0X3NlbGVjdF9jb21wb3NlX2V2ZW50OlwiXCIsICAvL+mAieaLqee7hOaIkOWvueixoeaXtuiwg+eUqFxyXG5cdFx0XHRcdGVkaXRfY29tcG9zZV9jbHNfaWQ6XCJcIixcclxuXHRcdFx0XHRnbG9iYWxfYXR0cjpbXSxcclxuXHRcdFx0XHRyZWZkYXRhc3RvcmU6IFtdLFx0ICAgLy/lvJXnlKjmlbDmja7lrZjlgqjljLovLyB7YXR0cjonR19QUkpfJyArIGJpbmRhdHRyICsgJ19JRCcsIHZhbHVlOmluZm8uaWR9XHJcblx0XHRcdFx0c2NhbkNvZGVWYWw6XCJcIixcclxuXHRcdFx0XHRzdWJDbGFzc0F0dHJMaXN0OltdLFxyXG5cdFx0XHRcdHN1YlBhbmVsTGlzdDpbXSxcclxuXHRcdFx0XHRzdWJDbGFzc0dyaWRTdHlsZTpbXSxcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdG9uTG9hZChvcHRpb25zKSB7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKG9wdGlvbnMpO1xyXG5cdFx0XHR1bmkuc2V0TmF2aWdhdGlvbkJhclRpdGxlKHsgdGl0bGU6IG9wdGlvbnMudGl0bGVuYW1lfSk7IC8v6K6+572u6aG26YOo5qCH6aKYIFxyXG5cdFx0XHR2YXIgcGFyYW0gPSBKU09OLnBhcnNlKG9wdGlvbnMucGFyYW0pO1xyXG5cdFx0XHR0aGlzLiRkYXRhLnRpdGxlID0gcGFyYW0uQWRkX0J0bk5hbWU/cGFyYW0uQWRkX0J0bk5hbWU6b3B0aW9ucy50aXRsZW5hbWU7IC8v6K6+572u5oyJ6ZKu5paH5a2XXHJcblx0XHRcdGNvbnNvbGUubG9nKHBhcmFtKTtcclxuXHRcdFx0aWYoIXBhcmFtLk1hc3Rlcl9DbHMuVmlld19TdHlsZSl7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50Olwi6K+l5Yqf6IO954K55pyq6YWN572u55WM6Z2i56qX5Y+j77yM6K+36YeN5paw6YWN572u77yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmKCFwYXJhbS5NYXN0ZXJfQ2xzLlZpZXdfU3R5bGUuTmFtZSl7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50Olwi6K+l5Yqf6IO954K55pyq6YWN572u56qX5Y+j5qC35byP77yM6K+36YeN5paw6YWN572u77yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuJGRhdGEucGFyYW0gPSBwYXJhbTtcclxuXHRcdFx0Ly8gdmFyIGVkaXRfZGxnID0ge1xyXG5cdFx0XHQvLyAgICAgTW9kZWw6IHBhcmFtLkVkaXREbGdNb2RlLFxyXG5cdFx0XHQvLyAgICAgTmFtZTogcGFyYW0uTWFzdGVyX0Nscy5WaWV3X1N0eWxlLk5hbWVcclxuXHRcdFx0Ly8gfVxyXG5cdFx0XHQvL+S4u+aVsOaNruexu+iOt+WPllxyXG5cdFx0XHR2YXIgZGF0YUluZm8gPSB7XHJcblx0XHRcdFx0Y2xhc3NfaWQ6IHBhcmFtLk1hc3Rlcl9DbHMuSURcclxuXHRcdFx0fTtcclxuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdFx0JHRoaXMuJHN0b3JlLnN0YXRlLnRoaXNhcmVhRnVuY0lEID0gcGFyYW0uTWFzdGVyX0Nscy5JRDtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Y2xhc3NBdHRyTGlzdCk7XHJcblx0XHRcdGlmKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzQXR0ckxpc3Qpe1xyXG5cdFx0XHQgXHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0ID0gJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Y2xhc3NBdHRyTGlzdC5kYXRhO1xyXG5cdFx0XHRcdCR0aGlzLmNsYXNzR3JpZFN0eWxlSW5mbyhwYXJhbS5NYXN0ZXJfQ2xzLklELCR0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuVmlld19TdHlsZS5OYW1lLCdNYXN0Jyk7XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdCR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnY2xhc3NBdHRyTGlzdCcsZGF0YUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coc3VjY2Vzcyk7XHJcblx0XHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QgPSBzdWNjZXNzLmRhdGE7XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHQkdGhpcy5jbGFzc0dyaWRTdHlsZUluZm8ocGFyYW0uTWFzdGVyX0Nscy5JRCwkdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLlZpZXdfU3R5bGUuTmFtZSwnTWFzdCcpO1xyXG5cdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMVwiLGNvbnRlbnQ6c3VjY2Vzcy5tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMS4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdFx0XHJcblx0XHRcdC8v5LuO5pWw5o2u57G76I635Y+WXHJcblx0XHRcdHZhciBzdWJkYXRhSW5mbyA9IHtcclxuXHRcdFx0XHRjbGFzc19pZDogcGFyYW0uU3ViX0Nscy5JRFxyXG5cdFx0XHR9O1xyXG5cdFx0XHQkdGhpcy4kc3RvcmUuc3RhdGUudGhpc2FyZWFGdW5jU3ViSUQgPSBwYXJhbS5TdWJfQ2xzLklEO1xyXG5cdFx0XHRpZigkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRTdWJDbGFzc0F0dHJMaXN0KXtcclxuXHRcdFx0IFx0JHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdCA9ICR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFN1YkNsYXNzQXR0ckxpc3QuZGF0YTtcclxuXHRcdFx0XHRcdFx0JHRoaXMuY2xhc3NHcmlkU3R5bGVJbmZvKHBhcmFtLlN1Yl9DbHMuSUQsJHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5WaWV3X1N0eWxlLk5hbWUsJ1N1YicpO1xyXG5cdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHQkdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3N1YkNsYXNzQXR0ckxpc3QnLHN1YmRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9PntcclxuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0ID0gc3VjY2Vzcy5kYXRhO1xyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0JHRoaXMuY2xhc3NHcmlkU3R5bGVJbmZvKHBhcmFtLlN1Yl9DbHMuSUQsJHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5WaWV3X1N0eWxlLk5hbWUsJ1N1YicpO1xyXG5cdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMV8xXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xXzEuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRjYW5jZWwoZSl7XHJcblx0XHRcdFx0dW5pLm5hdmlnYXRlQmFjayh7XHJcblx0XHRcdFx0XHRkZWx0YToxIC8v6L+U5Zue5bGC5pWw77yMMuWImeS4iuS4iumhtVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRwYW5lbF9kZWwoaW5kZXgpe1xyXG5cdFx0XHRcdGlmICh0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtpbmRleF0uc2NhbkNvZGVWYWwgPT0gdGhpcy4kZGF0YS5zY2FuQ29kZVZhbCkge1xyXG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5zY2FuQ29kZVZhbD0nJztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy4kZGF0YS5zdWJQYW5lbExpc3Quc3BsaWNlKGluZGV4LCAxKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0YXN5bmMgY2xhc3NHcmlkU3R5bGVJbmZvKGNsc2lkLHN0eWxlTmFtZSxjbHNUeXBlKXtcclxuXHRcdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0XHRcdHZhciBncmlkc3R5bGVJbmZvID0ge1xyXG5cdFx0XHRcdFx0Y2xhc3NfaWQ6IGNsc2lkLFxyXG5cdFx0XHRcdFx0bmFtZTogc3R5bGVOYW1lLFxyXG5cdFx0XHRcdFx0dHlwZTogJzInXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHQkdGhpcy4kc3RvcmUuc3RhdGUudGhpc0VkaXROYW1lID0gc3R5bGVOYW1lO1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzR3JpZFN0eWxlSW5mbyk7XHJcblx0XHRcdFx0Ly/ojrflj5bkuLvmlbDmja7nsbvnlYzpnaLmoLflvI9cclxuXHRcdFx0XHRpZihjbHNUeXBlPT0nTWFzdCcpe1xyXG5cdFx0XHRcdFx0aWYoJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Y2xhc3NHcmlkU3R5bGVJbmZvKXtcclxuXHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUgPSAkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRjbGFzc0dyaWRTdHlsZUluZm8uZGF0YTtcclxuXHRcdFx0XHRcdFx0JHRoaXMuY2xhc3NfYXR0cl9pbml0KCk7XHJcblx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0Ly9jb25zb2xlLmxvZyhncmlkc3R5bGVJbmZvKTtcclxuXHRcdFx0XHRcdFx0JHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdjbGFzc0dyaWRTdHlsZUluZm8nLGdyaWRzdHlsZUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHN1Y2Nlc3MuZGF0YS5TdHlsZURlZiA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhLlN0eWxlRGVmKTtcclxuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlID0gc3VjY2Vzcy5kYXRhO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHQkdGhpcy5jbGFzc19hdHRyX2luaXQoKTtcclxuXHRcdFx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMS4yXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMS4zXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSBpZihjbHNUeXBlPT0nU3ViJyl7ICAvL+iOt+WPluS7juaVsOaNruexu+eVjOmdouagt+W8j1xyXG5cdFx0XHRcdFx0aWYoJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0U3ViQ2xhc3NHcmlkU3R5bGVJbmZvKXtcclxuXHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUgPSAkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRTdWJDbGFzc0dyaWRTdHlsZUluZm8uZGF0YTtcclxuXHRcdFx0XHRcdFx0JHRoaXMuc3ViQ2xhc3NfYXR0cl9pbml0KCk7XHJcblx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0Ly9jb25zb2xlLmxvZyhncmlkc3R5bGVJbmZvKTtcclxuXHRcdFx0XHRcdFx0JHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdzdWJDbGFzc0dyaWRTdHlsZUluZm8nLGdyaWRzdHlsZUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHN1Y2Nlc3MuZGF0YS5TdHlsZURlZiA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhLlN0eWxlRGVmKTtcclxuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlID0gc3VjY2Vzcy5kYXRhO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHQkdGhpcy5zdWJDbGFzc19hdHRyX2luaXQoKTtcclxuXHRcdFx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMS4yXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMS4zXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0b250YXAoZSl7IC8v5omr56CB5Yqf6IO9XHJcblx0XHRcdFx0Ly9jb25zb2xlLmxvZyhlLnRhcmdldClcclxuXHRcdFx0XHRnZXRBcHAoKS5vblNjYW4oKHJlc3VsdCk9PntcclxuXHRcdFx0XHRcdC8vY29uc29sZS5sb2cocmVzdWx0LmRlY29kZWRhdGEpO1xyXG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlPXJlc3VsdC5kZWNvZGVkYXRhO1xyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0sXHJcblx0XHRcdHNjYW5fb250YXAoZSl7IC8v5omr56CB5Yy65omr56CB5Yqf6IO9XHJcblx0XHRcdFx0Ly9jb25zb2xlLmxvZyhlLnRhcmdldClcclxuXHRcdFx0XHRnZXRBcHAoKS5vblNjYW4oKHJlc3VsdCk9PntcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlc3VsdC5kZWNvZGVkYXRhKTtcclxuXHRcdFx0XHRcdHZhciBpc2ZsYWc9dHJ1ZTtcclxuXHRcdFx0XHRcdGZvcih2YXIgaSBpbiB0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdCl7XHJcblx0XHRcdFx0XHRcdGlmKHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2ldLnNjYW5Db2RlVmFsID09IHJlc3VsdC5kZWNvZGVkYXRhKSBcclxuXHRcdFx0XHRcdFx0XHRpc2ZsYWc9ZmFsc2U7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdGlmIChpc2ZsYWcpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5zY2FuQ29kZVZhbD1yZXN1bHQuZGVjb2RlZGF0YTtcclxuXHRcdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLnBhcmFtLlNjYW5fQ29kZS5JbnB1dF9DaGFuZ2VfRXZlbnQuSUQ7XHJcblx0XHRcdFx0XHRcdGlmIChldmVudGlkKSB7XHJcblx0XHRcdFx0XHQgICAgICAgIHZhciByZXE9W107XHJcblx0XHRcdFx0XHQgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdDtcclxuXHRcdFx0XHRcdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0ICAgICAgICBcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcclxuXHRcdFx0XHRcdCAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdCAgICAgICAgXHRcdHZhciBhciA9IGF0dHJbal07XHJcblx0XHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKVxyXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xyXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZT09J+W8leeUqOmhueebricpXHJcblx0XHRcdFx0XHQgICAgICAgIFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsdWU6IGFyLlZhbElEID9hci5WYWxJRCA6JycgfSk7XHJcblx0XHRcdFx0XHQgICAgICAgIFx0XHRlbHNlIGlmKGFyLlR5cGU9PSfluIPlsJTlgLwnKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsdWU6IGFyLlZhbHVlPycxJzonMCd9KTtcclxuXHRcdFx0XHRcdCAgICAgICAgXHRcdGVsc2VcclxuXHRcdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWUgP2FyLlZhbHVlIDonJ30pO1xyXG5cdFx0XHRcdFx0ICAgICAgICBcdH1cclxuXHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXHJcblx0XHRcdFx0XHQgICAgICAgICAgICBlZHR5cGU6IFwiMFwiLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIHJjbHNpZDogJycsXHJcblx0XHRcdFx0XHQgICAgICAgICAgICByb2JqaWQ6ICcnLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsXHJcblx0XHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIGF0dHI6IHJlcSxcclxuXHRcdFx0XHRcdFx0XHRcdGlucHV0UGFyYW10ZXI6W3sgYXR0cjogJ2lucHV0XzMwMzcnLCB2YWx1ZTogdGhpcy4kZGF0YS5zY2FuQ29kZVZhbCB9XVxyXG5cdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHQgICAgICAgIHRoaXMuc2Nhbl9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgXCJcIik7XHJcblx0XHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0sXHJcblx0XHRcdG9uYXJyb3coaW5kZXgsb3Blbil7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coaW5kZXgrJy0tJytvcGVuKTtcclxuXHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLk9wZW49b3Blbj09dHJ1ZT9mYWxzZTp0cnVlO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRvbmRhdGVUaW1lKGUpIHtcclxuXHRcdFx0XHQvL2NvbnNvbGUubG9nKGUudGFyZ2V0KVxyXG5cdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZT1lLnRhcmdldC52YWx1ZTtcclxuXHRcdFx0fSxcclxuXHRcdFx0b25jaGFuZ2UoZSkge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcclxuXHRcdFx0XHR2YXIgdmFsdWU9dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLmRpY3RpdGVtW2UudGFyZ2V0LnZhbHVlXTtcclxuXHRcdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dO1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKGRhdGFfYXR0cik7XHJcblx0XHRcdFx0aWYgKHZhbHVlLk5hbWUgIT0gZGF0YV9hdHRyLlZhbHVlKSB7XHJcblx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9dmFsdWUuTmFtZTtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZSk7XHJcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5hY3Rpb247XHJcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xyXG5cdFx0XHRcdCAgICAgICAgLy8gc2VsZi5ldmVudF9ub19zdWIgPSAxO1xyXG5cdFx0XHRcdCAgICAgICAgdmFyIHJlcT1bXTtcclxuXHRcdFx0XHQgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcclxuXHRcdFx0XHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHQgICAgICAgIFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xyXG5cdFx0XHRcdCAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHQgICAgICAgIFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xyXG5cdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXHJcblx0XHRcdFx0ICAgICAgICBcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xyXG5cdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGU9PSflvJXnlKjpobnnm64nKVxyXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbElEID9hci5WYWxJRCA6JycgfSk7XHJcblx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8JylcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlPycxJzonMCd9KTtcclxuXHRcdFx0XHQgICAgICAgIFx0XHRlbHNlXHJcblx0XHRcdFx0ICAgICAgICBcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWUgP2FyLlZhbHVlIDonJ30pO1xyXG5cdFx0XHRcdCAgICAgICAgXHR9XHJcblx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcclxuXHRcdFx0XHQgICAgICAgICAgICBldmVudGlkOiBldmVudGlkLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIGVkdHlwZTogXCIwXCIsXHJcblx0XHRcdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdFx0XHQgICAgICAgICAgICByY2xzaWQ6ICcnLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogJycsXHJcblx0XHRcdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdFx0XHQgICAgICAgICAgICBjbHNpZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELFxyXG5cdFx0XHRcdCAgICAgICAgICAgIG9iamlkOiBcIlwiLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIGF0dHI6IHJlcSxcclxuXHRcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHQgICAgICAgIHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRvbmNoYW5nZTIoaXRlbSx2YWx1ZSxkZWx2YWx1ZSkge1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGl0ZW0pO1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHZhbHVlKTtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhkZWx2YWx1ZSk7XHJcblx0XHRcdFx0aWYoaXRlbS5sZW5ndGg9PTApeyAvL+S4uuepuuaXtu+8jOa4heepuuWxnuaAp3ZhbHVlXHJcblx0XHRcdFx0XHR2YXIgaW5kZXggLGlpbmRleCxkaW5kZXg9MDtcclxuXHRcdFx0XHRcdGZvcih2YXIgaSBpbiB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Qpe1xyXG5cdFx0XHRcdFx0XHRmb3IodmFyIGogaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHIpe1xyXG5cdFx0XHRcdFx0XHRcdGZvcih2YXIgZCBpbiB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cltqXS5kaWN0aXRlbSl7XHJcblx0XHRcdFx0XHRcdFx0XHRpZihkZWx2YWx1ZVswXS5OYW1lID09IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpXS5BdHRyW2pdLmRpY3RpdGVtW2RdLk5hbWUpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cltqXS5WYWx1ZT1cIlwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdGZvcih2YXIgdiBpbiBpdGVtKXtcclxuXHRcdFx0XHRcdHZhciBpbmRleCAsaWluZGV4LGRpbmRleD0wO1xyXG5cdFx0XHRcdFx0Zm9yKHZhciBpIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCl7XHJcblx0XHRcdFx0XHRcdGZvcih2YXIgaiBpbiB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cil7XHJcblx0XHRcdFx0XHRcdFx0Zm9yKHZhciBkIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpXS5BdHRyW2pdLmRpY3RpdGVtKXtcclxuXHRcdFx0XHRcdFx0XHRcdGlmKGl0ZW1bdl0uTmFtZSA9PSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cltqXS5kaWN0aXRlbVtkXS5OYW1lKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aW5kZXg9aTtpaW5kZXg9ajtkaW5kZXg9ZDtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHZhciBpdGVtdmFsdWUgPSBpdGVtW3ZdO1xyXG5cdFx0XHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdO1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhX2F0dHIpO1xyXG5cdFx0XHRcdFx0aWYgKGl0ZW12YWx1ZS5OYW1lICE9IGRhdGFfYXR0ci5WYWx1ZSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5WYWx1ZT12YWx1ZTtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF0uVmFsdWUpO1xyXG5cdFx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdLmFjdGlvbjtcclxuXHRcdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcclxuXHRcdFx0XHRcdCAgICAgICAgLy8gc2VsZi5ldmVudF9ub19zdWIgPSAxO1xyXG5cdFx0XHRcdFx0ICAgICAgICB2YXIgcmVxPVtdO1xyXG5cdFx0XHRcdFx0ICAgICAgICB2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XHJcblx0XHRcdFx0XHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdCAgICAgICAgXHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XHJcblx0XHRcdFx0XHQgICAgICAgIFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHQgICAgICAgIFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xyXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJylcclxuXHRcdFx0XHRcdCAgICAgICAgXHRcdFx0aWYoYXIuVmFsdWU9PSfor7cnKSBhci5WYWx1ZT0nJztcclxuXHRcdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGU9PSflvJXnlKjpobnnm64nKVxyXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcclxuXHRcdFx0XHRcdCAgICAgICAgXHRcdGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlPycxJzonMCd9KTtcclxuXHRcdFx0XHRcdCAgICAgICAgXHRcdGVsc2UgaWYoYXIuVHlwZT09J+Wtl+WFuCcgfHwgYXIuVHlwZT09J+Wtl+WFuC3lrZfnrKbkuLInKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBpdGVtdmFsdWUuTmFtZX0pO1xyXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZVxyXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWUgP2FyLlZhbHVlIDonJ30pO1xyXG5cdFx0XHRcdFx0ICAgICAgICBcdH1cclxuXHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXHJcblx0XHRcdFx0XHQgICAgICAgICAgICBlZHR5cGU6IFwiMFwiLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIHJjbHNpZDogJycsXHJcblx0XHRcdFx0XHQgICAgICAgICAgICByb2JqaWQ6ICcnLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXHJcblx0XHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIGF0dHI6IHJlcSxcclxuXHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0ICAgICAgICB0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcclxuXHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRvbmV2ZW50KGUpe1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcclxuXHRcdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dO1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGRhdGFfYXR0cik7XHJcblx0XHRcdFx0aWYgKGUudGFyZ2V0LnZhbHVlICE9IGRhdGFfYXR0ci5WYWx1ZSkge1xyXG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlPWUudGFyZ2V0LnZhbHVlO1xyXG5cdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uYWN0aW9uO1xyXG5cdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcclxuXHRcdFx0XHQgICAgICAgIC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcclxuXHRcdFx0XHQgICAgICAgIHZhciByZXE9W107XHJcblx0XHRcdFx0ICAgICAgICB2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XHJcblx0XHRcdFx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0ICAgICAgICBcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcclxuXHRcdFx0XHQgICAgICAgIFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0ICAgICAgICBcdFx0dmFyIGFyID0gYXR0cltqXTtcclxuXHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKVxyXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0aWYoYXIuVmFsdWU9PSfor7cnKSBhci5WYWx1ZT0nJztcclxuXHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcclxuXHRcdFx0XHQgICAgICAgIFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWxJRCA/YXIuVmFsSUQgOicnIH0pO1xyXG5cdFx0XHRcdCAgICAgICAgXHRcdGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXHJcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZT8nMSc6JzAnfSk7XHJcblx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZVxyXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcclxuXHRcdFx0XHQgICAgICAgIFx0fVxyXG5cdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcclxuXHRcdFx0XHQgICAgICAgICAgICBlZHR5cGU6IFwiMFwiLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogJycsXHJcblx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiAnJyxcclxuXHRcdFx0XHQgICAgICAgICAgICByb2JqaWQ6ICcnLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogJycsXHJcblx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcclxuXHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcclxuXHRcdFx0XHQgICAgICAgICAgICBhdHRyOiByZXEsXHJcblx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0ICAgICAgICB0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBkYXRhX2F0dHIpO1xyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRvbmNoZWNrKGUpIHtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XHJcblx0XHRcdFx0dmFyIGlzY2hlY2tlZCA9IGUudGFyZ2V0LmRhdGFzZXQuaXNjaGVjaz9mYWxzZTp0cnVlO1xyXG5cdFx0XHRcdHZhciBkYXRhX2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV07XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZGF0YV9hdHRyKTtcclxuXHRcdFx0XHRpZiAoaXNjaGVja2VkICE9IGRhdGFfYXR0ci5WYWx1ZSkge1xyXG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlPWlzY2hlY2tlZDtcclxuXHRcdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLmFjdGlvbjtcclxuXHRcdFx0XHRcdGlmIChldmVudGlkKSB7XHJcblx0XHRcdFx0ICAgICAgICAvLyBzZWxmLmV2ZW50X25vX3N1YiA9IDE7XHJcblx0XHRcdFx0ICAgICAgICB2YXIgcmVxPVtdO1xyXG5cdFx0XHRcdCAgICAgICAgdmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xyXG5cdFx0XHRcdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdCAgICAgICAgXHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XHJcblx0XHRcdFx0ICAgICAgICBcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdCAgICAgICAgXHRcdHZhciBhciA9IGF0dHJbal07XHJcblx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJylcclxuXHRcdFx0XHQgICAgICAgIFx0XHRcdGlmKGFyLlZhbHVlPT0n6K+3JykgYXIuVmFsdWU9Jyc7XHJcblx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZT09J+W8leeUqOmhueebricpXHJcblx0XHRcdFx0ICAgICAgICBcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcclxuXHRcdFx0XHQgICAgICAgIFx0XHRlbHNlIGlmKGFyLlR5cGU9PSfluIPlsJTlgLwnKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWU/JzEnOicwJ30pO1xyXG5cdFx0XHRcdFx0XHRcdFx0ZWxzZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWUgP2FyLlZhbHVlIDonJ30pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0ICAgICAgICBcdH1cclxuXHRcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHQgICAgICAgIHZhciBpbmZvID0ge1xyXG5cdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXHJcblx0XHRcdFx0ICAgICAgICAgICAgZWR0eXBlOiBcIjBcIixcclxuXHRcdFx0XHQgICAgICAgICAgICBwcm9qZWN0aWQ6ICcnLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIHJjbHNpZDogJycsXHJcblx0XHRcdFx0ICAgICAgICAgICAgcm9iamlkOiAnJyxcclxuXHRcdFx0XHQgICAgICAgICAgICB1c2VybG9naW46ICcnLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXHJcblx0XHRcdFx0ICAgICAgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogcmVxLFxyXG5cdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XHJcblx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0XHJcblx0XHRcdH0sXHJcblx0XHRcdGlucHV0VmFsTGlzdElzRGVsKGluZGV4KXtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhpbmRleCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLmlucHV0VmFsTGlzdC5zcGxpY2UoaW5kZXgsIDEpOyAvL+WIoOmZpHRhYlBhZ2Vqc29u55qE5YaF5a65XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2codGhpcy4kZGF0YS5pbnB1dFZhbExpc3QpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRhZGRyZXNzY2hhbmdlKGUpIHtcclxuXHRcdFx0ICAgIC8vIGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcclxuXHRcdFx0ICAgIGNvbnNvbGUubG9nKGUuZGF0YS5qb2luKCc7JykpXHJcblx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlPWUuZGF0YS5qb2luKCc7Jyk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGNsYXNzQXR0cl9leHRCdXR0b24oaW5kZXgsaWluZGV4KXtcclxuXHRcdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0XHRcdHZhciBiZWZvcmVfY2xpY2tfYnV0dG9uID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdLmJlZm9yZV9jbGlja19idXR0b247XHJcblx0XHRcdFx0dmFyIGJ1dHRvbl9jYWxsYmFjayA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5idXR0b25fY2FsbGJhY2s7XHJcblx0XHRcdFx0aWYoIWJlZm9yZV9jbGlja19idXR0b24pe1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OlwiYmVmb3JlX2NsaWNrX2J1dHRvbi1ldmVudF9pZOS4uuepuu+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZighYnV0dG9uX2NhbGxiYWNrKXtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcImJ1dHRvbl9jYWxsYmFjay1ldmVudF9pZOS4uuepuu+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF07XHJcblx0XHRcdFx0dGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnRfUmV0dXJuKGJlZm9yZV9jbGlja19idXR0b24sIGRhdGFfYXR0ciwgYnV0dG9uX2NhbGxiYWNrLCBpbmRleCxpaW5kZXgpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRzY2FuX2NsYXNzQXR0cl9leHRCdXR0b24oZSl7ICAvLy0tLS0tLS0tLeacquWujOaIkC0tLS0tLS0tLS0tXHJcblx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdFx0XHR2YXIgQmVmb3JlX1NlbGVjdF9FdmVudCA9ICR0aGlzLiRkYXRhLnBhcmFtLlNjYW5fQ29kZS5CZWZvcmVfU2VsZWN0X0V2ZW50LklEO1xyXG5cdFx0XHRcdHZhciBBZnRlcl9TZWxlY3RfRXZlbnQgPSAkdGhpcy4kZGF0YS5wYXJhbS5TY2FuX0NvZGUuQWZ0ZXJfU2VsZWN0X0V2ZW50LklEO1xyXG5cdFx0XHRcdGlmKCFCZWZvcmVfU2VsZWN0X0V2ZW50KXtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIumAieaLqeaMiemSruWJjeS6i+S7tuS4uuepuu+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZighQWZ0ZXJfU2VsZWN0X0V2ZW50KXtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuaWsOWinuaMiemSruWQjuS6i+S7tuS4uuepuu+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQvLyB2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF07XHJcblx0XHRcdFx0dGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnRfUmV0dXJuKEJlZm9yZV9TZWxlY3RfRXZlbnQsICcnLCBBZnRlcl9TZWxlY3RfRXZlbnQsICcnLCAnJyk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGNsYXNzQXR0cl9BZGRQZXIoaW5kZXgsaWluZGV4KXtcclxuXHRcdFx0XHR2YXIgcGFyYW09e2luZGV4OmluZGV4LGlpbmRleDppaW5kZXh9O1xyXG5cdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdFx0dXJsOicuLi9zZWxwc24vaW5kZXg/bXVsaXQ9ZmFsc2UmcGFyYW09JytKU09OLnN0cmluZ2lmeShwYXJhbSksXHJcblx0XHRcdFx0XHRldmVudHM6e1xyXG5cdFx0XHRcdFx0XHRBZGRQZXIoZGF0YSxwYXJhbSl7IFxyXG5cdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHBhcmFtKTtcclxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhKTtcclxuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsdWU9ZGF0YVswXS5OYW1lO1xyXG5cdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XS5WYWxJRD1kYXRhWzBdLkxvZ2luKyc7JytkYXRhWzBdLk5hbWU7XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uYWN0aW9uO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChldmVudGlkKSB7XHJcblx0XHRcdFx0XHRcdFx0ICAgIGV2ZW50aWQgPSBldmVudGlkLnRyaW0oKTtcclxuXHRcdFx0XHRcdFx0XHQgICAgaWYgKGV2ZW50aWQpIHtcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgIHZhciBpbmZvID0ge1xyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWR0eXBlOiBcIjRcIixcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBwcm9qZWN0aWQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogXCJcIixcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICB1c2VybG9naW46IGRhdGFbMF0uTG9naW4sXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogW10sXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyB2YXIgZGF0YV9hdHRyID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdO1xyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgJHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xyXG5cdFx0XHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGNsYXNzQXR0cl9BZGRSZWYoZSl7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coZS50YXJnZXQpO1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuatpOWKn+iDvei/mOacquWunueOsO+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdC8vIHZhciB2YWx1ZT10aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uUmVsQ2xzW2UudGFyZ2V0LnZhbHVlXTtcclxuXHRcdFx0XHQvLyB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9dmFsdWU7XHJcblx0XHRcdH0sXHJcblx0XHRcdGNsYXNzQXR0cl9BZGRQcmooaW5kZXgsaWluZGV4KXtcclxuXHRcdFx0XHR2YXIgcGFyYW09e2luZGV4OmluZGV4LGlpbmRleDppaW5kZXh9O1xyXG5cdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdFx0dXJsOicuLi9zZWxQcmovaW5kZXg/cmVsYXRpb249LTEmcGFyYW09JytKU09OLnN0cmluZ2lmeShwYXJhbSksXHJcblx0XHRcdFx0XHRldmVudHM6e1xyXG5cdFx0XHRcdFx0XHRBZGRQZXIoZGF0YSxwYXJhbSl7IFxyXG5cdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHBhcmFtKTtcclxuXHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhkYXRhKTtcclxuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsdWU9ZGF0YVswXS5OYW1lO1xyXG5cdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XS5WYWxJRD1kYXRhWzBdLklEKyc7JytkYXRhWzBdLk5hbWU7XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uYWN0aW9uO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChldmVudGlkKSB7XHJcblx0XHRcdFx0XHRcdFx0ICAgIGV2ZW50aWQgPSBldmVudGlkLnRyaW0oKTtcclxuXHRcdFx0XHRcdFx0XHQgICAgaWYgKGV2ZW50aWQpIHtcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgIHZhciBpbmZvID0ge1xyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWR0eXBlOiBcIjJcIixcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBwcm9qZWN0aWQ6IGRhdGFbMF0uSUQsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogXCJcIixcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICB1c2VybG9naW46IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogW10sXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgLy8gdmFyIGRhdGFfYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XTtcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICR0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcclxuXHRcdFx0XHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRzYXZhKCl7XHJcblx0XHRcdFx0aWYgKHRoaXMuJGRhdGEucGFyYW0uQmVmb3JlX09LX0V2ZW50KSAvL+WIpOaWreWKn+iDveeCueWPguaVsOaYr+WQpuacieehruWumuWJjeiEmuacrFxyXG5cdFx0XHRcdFx0dGhpcy5zY2FuX09LRGF0YU9ialJ1bkN1c3RvbUV2ZW50KHRoaXMuJGRhdGEucGFyYW0uQmVmb3JlX09LX0V2ZW50LklEKTtcclxuXHRcdFx0XHRlbHNlXHJcblx0XHRcdFx0XHR0aGlzLnNjYW5fT0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQodGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudC5JRCk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGFkZCgpe1xyXG5cdFx0XHRcdHVuaS5zaG93TG9hZGluZyh7XHJcblx0XHRcdFx0XHR0aXRsZTpcIuWKoOi9veS4rS4uLlwiXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dmFyIHJlcT1bXTtcclxuXHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XHJcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xyXG5cdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XHJcblx0XHRcdFx0XHRcdGlmKGFyLlZhbHVlPT0n6K+36YCJ5oupJyB8fCBhci5WYWx1ZT09J+KAlOKAlOivt+mAieaLqeKAlOKAlCcpIGFyLlZhbHVlPScnO1xyXG5cdFx0XHRcdFx0XHRpZihhci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKVxyXG5cdFx0XHRcdFx0XHRcdGlmKGFyLlZhbHVlPT0n6K+3JykgYXIuVmFsdWU9Jyc7XHJcblx0XHRcdFx0ICAgICAgICBpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcclxuXHRcdFx0XHQgICAgICAgIFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcclxuXHRcdFx0XHQgICAgICAgIGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXHJcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWU/JzEnOicwJ30pO1xyXG5cdFx0XHRcdCAgICAgICAgZWxzZSBpZihhci5UeXBlPT0n5a2X5YW4JyB8fCBhci5UeXBlPT0n5a2X5YW4LeWtl+espuS4sicpe1xyXG5cdFx0XHRcdFx0XHRcdGlmKGFyLnNlbGVjdD09dHJ1ZSl7IC8v5Yik5pat5LiL5ouJ5piv5ZCm5aSa6YCJXHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsU3RyID1cIlwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0Zm9yKHZhciB2IGluIGFyLlZhbHVlKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYodmFsU3RyKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbFN0cis9XCI7XCI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhbFN0cis9YXIuVmFsdWVbdl07XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IG5hbWU6IGFyLk5hbWUsIHZhbHVlOiB2YWxTdHJ9KTtcclxuXHRcdFx0XHRcdFx0XHR9ZWxzZVxyXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWV9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRlbHNlXHJcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWUgP2FyLlZhbHVlIDonJ30pO1xyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRpZiAoKGFyLk5vdEVtcHR5ID09ICcxJyB8fCBhci5ub3RlbXB0eSA9PSB0cnVlKSAmJiAhYXIuVmFsdWUpIHtcclxuXHRcdFx0XHRcdFx0Ly8gaWYoYXIubm90RW1wdHk9PScxJyl7XHJcblx0XHRcdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHRcdFx0XHRcdFx0Ly8gdW5pLnNob3dUb2FzdCh7dGl0bGU6YXIuRGlzcE5hbWUrJ+S4jeiDveS4uuepuu+8gScsaWNvbjpcInN1Y2Nlc3NcIixkdXJhdGlvbjozMDAwfSk7XHJcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OmFyLkRpc3BOYW1lKyfkuI3og73kuLrnqbrvvIEnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR2YXIgZW52aXJvbWVudCA9IHtcclxuXHRcdFx0XHQgICAgICdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XHJcblx0XHRcdFx0ICAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgICAgIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxyXG5cdFx0XHRcdCAgICAgJ2J1dHRvbic6ICd0b3AnLCAgIC8vIHRvcC9ib3R0b21cclxuXHRcdFx0XHQgICAgIGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcclxuXHRcdFx0XHQgICAgIG1hc3Rlcjoge1xyXG5cdFx0XHRcdCAgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELCBcclxuXHRcdFx0XHQgICAgIH1cclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdCBcclxuXHRcdFx0XHR2YXIgZGF0YUluZm89e1xyXG5cdFx0XHRcdCAgICBjbGFzc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELCBkYXRhX29ial9pZDogJycsIG1hc3RlcmNsc2lkOiAnJyxcclxuXHRcdFx0XHQgICAgcmVxOiBKU09OLnN0cmluZ2lmeShyZXEpLCB1cGZpbGU6IEpTT04uc3RyaW5naWZ5KFtdKSwgcG9zdF9kYXRhOiBKU09OLnN0cmluZ2lmeSh7fSksXHJcblx0XHRcdFx0ICAgIGNvbXBvc2U6IEpTT04uc3RyaW5naWZ5KFtdKSwgcmVmZGF0YXN0b3JlOiBKU09OLnN0cmluZ2lmeShbXSksIGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpLCBcclxuXHRcdFx0XHRcdG5vdF90cmlnZ2VyX3N5c19ldmVudDogJydcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdC8vIHJldHVyblxyXG5cdFx0XHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcclxuXHRcdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnYWRkY2xhc3NhdHRyJyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xyXG5cdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHR2YXIgYWN0aW9uID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEuQWN0aW9uKTtcclxuXHRcdFx0XHRcdFx0aWYoYWN0aW9uLnJldD09JzAnKXtcclxuXHRcdFx0XHRcdFx0XHRpZihhY3Rpb24ucmVzdWx0X3R5cGU9PScwJyl7XHJcblx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHt0aXRsZTphY3Rpb24ucmVzdWx0LGljb246XCJzdWNjZXNzXCIsZHVyYXRpb246MzAwMH0pO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHQvLyBcIntcInJldFwiOjAsIFwicmVzdWx0X3R5cGVcIjowLCBcInJlc3VsdFwiOlwi5Yib5bu65oiQ5YqfMTIzMTIzMTIzXCIsXCJpbmZvXCI6XCJcIn1cIlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdC8v5Yi35pawXHJcblx0XHRcdFx0XHRcdHVuaS5yZWRpcmVjdFRvKHtcclxuXHRcdFx0XHRcdFx0XHR1cmw6Jy4uL21vZGFsL21zX2NsYXNzQXR0cj9wYXJhbT0nK0pTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEucGFyYW0pK1wiJnRpdGxlbmFtZT1cIit0aGlzLiRkYXRhLnRpdGxlXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHQvLyB0aGlzLmNsYXNzX2F0dHJfaW5pdCgpO1xyXG5cdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRjbGFzc19hdHRyX2luaXQoKXtcclxuXHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGVcclxuXHRcdFx0XHR2YXIgbmV3YXR0cmxpc3QgPSBbXTtcclxuXHRcdFx0XHRpZiAodGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0Lmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdCAgICAgICAgdmFyIG9wZW4gPSBhdHRybGlzdFtpXS5vcGVuO1xyXG5cdFx0XHRcdCAgICAgICAgdmFyIG5hbWUgPSBhdHRybGlzdFtpXS5hdHRyZ3JvdXBfbmFtZTtcclxuXHRcdFx0XHQgICAgICAgIHZhciBhdHRycyA9IGF0dHJsaXN0W2ldLmF0dHJzO1xyXG5cdFx0XHRcdCAgICAgICAgZm9yICh2YXIgcyA9IDA7IHMgPCB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBzKyspIHtcclxuXHRcdFx0XHQgICAgICAgICAgICB2YXIgY2xzYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtzXTtcclxuXHRcdFx0XHQgICAgICAgICAgICBpZiAobmFtZSA9PSBjbHNhdHRyLk5hbWUpIHtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgdmFyIGF0dHIgPSBbXTtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhdHRycy5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCBjbHNhdHRyLkF0dHIubGVuZ3RoOyBsKyspIHtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2EgPSBjbHNhdHRyLkF0dHJbbF07XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHJzW2pdLmF0dHIgPT0gY2EuTmFtZSkge1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5hY3Rpb24gPSBhdHRyc1tqXS5hY3Rpb247XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmVkaXQgPSBhdHRyc1tqXS5lZGl0O1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5ub3RlbXB0eSA9IGF0dHJzW2pdLm5vdGVtcHR5O1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5leHRfYnV0dG9uID0gYXR0cnNbal0uZXh0X2J1dHRvbjtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuYnV0dG9uX2ltZyA9IGF0dHJzW2pdLmJ1dHRvbl9pbWc7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmJ1dHRvbl90b29sdGlwID0gYXR0cnNbal0uYnV0dG9uX3Rvb2x0aXA7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmJlZm9yZV9jbGlja19idXR0b24gPSBhdHRyc1tqXS5iZWZvcmVfY2xpY2tfYnV0dG9uO1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5idXR0b25fY2FsbGJhY2sgPSBhdHRyc1tqXS5idXR0b25fY2FsbGJhY2s7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmhpZGRlbiA9IGF0dHJzW2pdLmhpZGRlbjtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Euc2VsZWN0ID0gYXR0cnNbal0uc2VsZWN0PT11bmRlZmluZWQ/ZmFsc2U6YXR0cnNbal0uc2VsZWN0O1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPVwiXCI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5kaWN0aXRlbSl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLnNlbGVjdCA9PSB0cnVlKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gW107Ly9jYS5kaWN0aXRlbVswXS5DTl9TX05BTUU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSAn6K+36YCJ5oupJzsvL2NhLmRpY3RpdGVtWzBdLkNOX1NfTkFNRTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RpdGVtbGlzdD1bXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgZCA9IDA7IGQgPCBjYS5kaWN0aXRlbS5sZW5ndGg7IGQrKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmRpY3RpdGVtW2RdLmxhYmVsPWNhLmRpY3RpdGVtW2RdLkNOX1NfTkFNRTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5kaWN0aXRlbVtkXS52YWx1ZT1jYS5kaWN0aXRlbVtkXS5DTl9TX05BTUU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuZGljdGl0ZW1bZF0uQ05fQ19JU19ERUZBVUxUPT0nMScpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZT1jYS5kaWN0aXRlbVtkXS5DTl9TX05BTUU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLlR5cGU9PSfml6XmnJ8nIHx8IGNhLlR5cGU9PSfml7bpl7QnKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIG5vd0RhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGF0ZSA9IHt5ZWFyOiBub3dEYXRlLmdldEZ1bGxZZWFyKCksbW9udGg6IG5vd0RhdGUuZ2V0TW9udGgoKSArIDEsZGF5OiBub3dEYXRlLmdldERhdGUoKX1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBkYXRlLnllYXIgKyAnLScgKyAoZGF0ZS5tb250aCA+PSAxMCA/IGRhdGUubW9udGggOiAnMCcgKyBkYXRlLm1vbnRoKSArICctJyArIChkYXRlLmRheSA+PSAxMCA/IGRhdGUuZGF5IDogJzAnICsgZGF0ZS5kYXkpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJyl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByZWxDbHNMaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0cl9yZXNjbHMgPSBjYS5SZWxDbHMuc3BsaXQoJywnKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yKHZhciBpaSBpbiBhdHRyX3Jlc2Nscyl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJlc2NscyA9IGF0dHJfcmVzY2xzW2lpXS5zcGxpdCgnfCcpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlbENsc0xpc3QucHVzaCh7aWQ6cmVzY2xzWzBdLG5hbWU6cmVzY2xzWzFdfSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuUmVsQ2xzTGlzdCA9IHJlbENsc0xpc3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gJ+ivtyc7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5UeXBlPT0n55yB5biC5Yy6JylcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSAn6K+36YCJ5oupJztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLlR5cGU9PSfluIPlsJTlgLwnKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5wdXNoKGNhKTtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgbmV3YXR0cmxpc3QucHVzaCh7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBCa0NvbG9yOiBjbHNhdHRyLkJrQ29sb3IsXHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBIYXNBY2U6IGNsc2F0dHIuSGFzQWNlLFxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgSW1nRm9udFN0eWxlOiBjbHNhdHRyLkltZ0ZvbnRTdHlsZSxcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIE5hbWU6IGNsc2F0dHIuTmFtZSxcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIE9yZGVyOiBjbHNhdHRyLk9yZGVyLFxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgT3Blbjogb3BlbixcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIEF0dHI6IGF0dHIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnRyb2xfc3R5bGU6dGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5jb250cm9sX3N0eWxlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZV9wX3dkaXRoOnRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYudGl0bGVfcF93ZGl0aCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Rm9udDp0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLkZvbnQ/dGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5Gb250Ont9LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRCa19Db2xvcjp0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLkJrX0NvbG9yP3RoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuQmtfQ29sb3I6JyNGRkZGRkYnLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRUZXh0X0NvbG9yOnRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuVGV4dF9Db2xvcj90aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLlRleHRfQ29sb3I6JyMwMDAwMDAnXHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgIH0pXHJcblx0XHRcdFx0ICAgICAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0ICAgIGlmIChuZXdhdHRybGlzdC5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0ICAgICAgICB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QgPSBuZXdhdHRybGlzdDtcclxuXHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdFx0dmFyIHJlcT1bXTtcclxuXHRcdFx0XHQgICAgaWYgKHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYpIHtcclxuXHRcdFx0XHQgICAgICAgICBpZiAodGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5zaG93X3N0eWxlLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHQgICAgICAgICAgICB2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGVcclxuXHRcdFx0XHQgICAgICAgICAgICAvLyAkZWwuZmluZCgnLmF0dHJfZmllbGQnKS5wcm9wKCdyZWFkb25seScsIHRydWUpO1xyXG5cdFx0XHRcdCAgICAgICAgICAgIC8vICRlbC5maW5kKCcuYXR0cl9maWVsZCcpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7XHJcblx0XHRcdFx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICB2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLmF0dHJzXHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgdmFyIGFyID0gYXR0cltqXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5hdHRyLCB2YWx1ZTogYXIudmFsdWU/YXIudmFsdWU6JycgfSk7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHQgICAgICAgICAgICB9XHJcblx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHR9XHRcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0dmFyIGV2ZW50bGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuZXZlbnQ7XHJcblx0XHRcdFx0XHRpZiAoZXZlbnRsaXN0KSB7XHJcblx0XHRcdFx0XHQgICAgaWYgKGV2ZW50bGlzdC5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXZlbnRsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHQgICAgICAgICAgICBpZiAoZXZlbnRsaXN0W2ldLmV2ZW50X2lkID09ICdiZWZvcmVfb2snKSB7XHJcblx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5lZGl0X29rX2V2ZW50ID0gZXZlbnRsaXN0W2ldO1xyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudGxpc3RbaV0uZXZlbnRfaWQgPT0gJ2luaXRpYWwnKSB7XHJcblx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5lZGl0X2luaXRhbF9ldmVudCA9IGV2ZW50bGlzdFtpXTtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnRsaXN0W2ldLmV2ZW50X2lkID09ICdiZWZvcmVfc2VsZWN0X2NvbXBvc2UnKSB7XHJcblx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5lZGl0X3NlbGVjdF9jb21wb3NlX2V2ZW50ID0gZXZlbnRsaXN0W2ldLnNjcmlwX2lkO1xyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEuZWRpdF9jb21wb3NlX2Nsc19pZCA9IGV2ZW50bGlzdFtpXS5jb21wb3NlX2Nsc19pZDtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhyZXEpO1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuZWRpdF9pbml0YWxfZXZlbnQpIHtcclxuXHRcdFx0XHRcdCAgICB2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuZWRpdF9pbml0YWxfZXZlbnQuc2NyaXBfaWQ7XHJcblx0XHRcdFx0XHQgICAgdmFyIGluZm8gPSB7XHJcblx0XHRcdFx0XHQgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXHJcblx0XHRcdFx0XHQgICAgICAgIGVkdHlwZTogXCIwXCIsXHJcblx0XHRcdFx0XHQgICAgICAgIHByb2plY3RpZDogJycsXHJcblx0XHRcdFx0XHQgICAgICAgIHJjbHNpZDogJycsXHJcblx0XHRcdFx0XHQgICAgICAgIHJvYmppZDogJycsXHJcblx0XHRcdFx0XHQgICAgICAgIHVzZXJsb2dpbjogJycsXHJcblx0XHRcdFx0XHQgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXHJcblx0XHRcdFx0XHQgICAgICAgIG9iamlkOiBcIlwiLFxyXG5cdFx0XHRcdFx0ICAgICAgICBhdHRyOiByZXEsXHJcblx0XHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdFx0ICAgIHRoaXMuaW5pX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUpO1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0KTtcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLmnKrmib7liLDlj6/mmL7npLrnmoTnmoTlsZ7mgKdcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHN1YkNsYXNzX2F0dHJfaW5pdCgpe1xyXG5cdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuc2hvd19zdHlsZVxyXG5cdFx0XHRcdHZhciBuZXdhdHRybGlzdCA9IFtdO1xyXG5cdFx0XHRcdGlmICh0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3QubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0ICAgICAgICB2YXIgb3BlbiA9IGF0dHJsaXN0W2ldLm9wZW47XHJcblx0XHRcdFx0ICAgICAgICB2YXIgbmFtZSA9IGF0dHJsaXN0W2ldLmF0dHJncm91cF9uYW1lO1xyXG5cdFx0XHRcdCAgICAgICAgdmFyIGF0dHJzID0gYXR0cmxpc3RbaV0uYXR0cnM7XHJcblx0XHRcdFx0ICAgICAgICBmb3IgKHZhciBzID0gMDsgcyA8IHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdC5sZW5ndGg7IHMrKykge1xyXG5cdFx0XHRcdCAgICAgICAgICAgIHZhciBjbHNhdHRyID0gdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0W3NdO1xyXG5cdFx0XHRcdCAgICAgICAgICAgIGlmIChuYW1lID09IGNsc2F0dHIuTmFtZSkge1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICB2YXIgYXR0ciA9IFtdO1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGF0dHJzLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsID0gMDsgbCA8IGNsc2F0dHIuQXR0ci5sZW5ndGg7IGwrKykge1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjYSA9IGNsc2F0dHIuQXR0cltsXTtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXR0cnNbal0uYXR0ciA9PSBjYS5OYW1lKSB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmFjdGlvbiA9IGF0dHJzW2pdLmFjdGlvbjtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuZWRpdCA9IGF0dHJzW2pdLmVkaXQ7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLm5vdGVtcHR5ID0gYXR0cnNbal0ubm90ZW1wdHk7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmV4dF9idXR0b24gPSBhdHRyc1tqXS5leHRfYnV0dG9uO1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5idXR0b25faW1nID0gYXR0cnNbal0uYnV0dG9uX2ltZztcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuYnV0dG9uX3Rvb2x0aXAgPSBhdHRyc1tqXS5idXR0b25fdG9vbHRpcDtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuYmVmb3JlX2NsaWNrX2J1dHRvbiA9IGF0dHJzW2pdLmJlZm9yZV9jbGlja19idXR0b247XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmJ1dHRvbl9jYWxsYmFjayA9IGF0dHJzW2pdLmJ1dHRvbl9jYWxsYmFjaztcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuaGlkZGVuID0gYXR0cnNbal0uaGlkZGVuO1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5zZWxlY3QgPSBhdHRyc1tqXS5zZWxlY3Q9PXVuZGVmaW5lZD9mYWxzZTphdHRyc1tqXS5zZWxlY3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9XCJcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLmRpY3RpdGVtKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2Euc2VsZWN0ID09IHRydWUpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBbXTsvL2NhLmRpY3RpdGVtWzBdLkNOX1NfTkFNRTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9ICfor7fpgInmi6knOy8vY2EuZGljdGl0ZW1bMF0uQ05fU19OQU1FO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGljdGl0ZW1saXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBkID0gMDsgZCA8IGNhLmRpY3RpdGVtLmxlbmd0aDsgZCsrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW1bZF0ubGFiZWw9Y2EuZGljdGl0ZW1bZF0uQ05fU19OQU1FO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmRpY3RpdGVtW2RdLnZhbHVlPWNhLmRpY3RpdGVtW2RdLkNOX1NfTkFNRTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5kaWN0aXRlbVtkXS5DTl9DX0lTX0RFRkFVTFQ9PScxJylcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlPWNhLmRpY3RpdGVtW2RdLkNOX1NfTkFNRTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuVHlwZT09J+aXpeacnycgfHwgY2EuVHlwZT09J+aXtumXtCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbm93RGF0ZSA9IG5ldyBEYXRlKCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkYXRlID0ge3llYXI6IG5vd0RhdGUuZ2V0RnVsbFllYXIoKSxtb250aDogbm93RGF0ZS5nZXRNb250aCgpICsgMSxkYXk6IG5vd0RhdGUuZ2V0RGF0ZSgpfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGRhdGUueWVhciArICctJyArIChkYXRlLm1vbnRoID49IDEwID8gZGF0ZS5tb250aCA6ICcwJyArIGRhdGUubW9udGgpICsgJy0nICsgKGRhdGUuZGF5ID49IDEwID8gZGF0ZS5kYXkgOiAnMCcgKyBkYXRlLmRheSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJlbENsc0xpc3Q9W107XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyX3Jlc2NscyA9IGNhLlJlbENscy5zcGxpdCgnLCcpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IodmFyIGlpIGluIGF0dHJfcmVzY2xzKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgcmVzY2xzID0gYXR0cl9yZXNjbHNbaWldLnNwbGl0KCd8Jyk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVsQ2xzTGlzdC5wdXNoKHtpZDpyZXNjbHNbMF0sbmFtZTpyZXNjbHNbMV19KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5SZWxDbHNMaXN0ID0gcmVsQ2xzTGlzdDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSAn6K+3JztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLlR5cGU9PSfnnIHluILljLonKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9ICfor7fpgInmi6knO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuVHlwZT09J+W4g+WwlOWAvCcpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLnB1c2goY2EpO1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICBuZXdhdHRybGlzdC5wdXNoKHtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIEJrQ29sb3I6IGNsc2F0dHIuQmtDb2xvcixcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIEhhc0FjZTogY2xzYXR0ci5IYXNBY2UsXHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBJbWdGb250U3R5bGU6IGNsc2F0dHIuSW1nRm9udFN0eWxlLFxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgTmFtZTogY2xzYXR0ci5OYW1lLFxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgT3JkZXI6IGNsc2F0dHIuT3JkZXIsXHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBPcGVuOiBvcGVuLFxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgQXR0cjogYXR0cixcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29udHJvbF9zdHlsZTp0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLmNvbnRyb2xfc3R5bGUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlX3Bfd2RpdGg6dGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZi50aXRsZV9wX3dkaXRoLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRGb250OnRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuRm9udD90aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLkZvbnQ6e30sXHJcblx0XHRcdFx0XHRcdFx0XHRcdEJrX0NvbG9yOnRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuQmtfQ29sb3I/dGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5Ca19Db2xvcjonI0ZGRkZGRicsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFRleHRfQ29sb3I6dGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5UZXh0X0NvbG9yP3RoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuVGV4dF9Db2xvcjonIzAwMDAwMCdcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgfSlcclxuXHRcdFx0XHQgICAgICAgICAgICB9XHJcblx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHQgICAgaWYgKG5ld2F0dHJsaXN0Lmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHQgICAgICAgIHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdCA9IG5ld2F0dHJsaXN0O1xyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHR2YXIgcmVxPVtdO1xyXG5cdFx0XHRcdCAgICBpZiAodGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZikge1xyXG5cdFx0XHRcdCAgICAgICAgIGlmICh0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGUubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdCAgICAgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuc2hvd19zdHlsZVxyXG5cdFx0XHRcdCAgICAgICAgICAgIC8vICRlbC5maW5kKCcuYXR0cl9maWVsZCcpLnByb3AoJ3JlYWRvbmx5JywgdHJ1ZSk7XHJcblx0XHRcdFx0ICAgICAgICAgICAgLy8gJGVsLmZpbmQoJy5hdHRyX2ZpZWxkJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTtcclxuXHRcdFx0XHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgIHZhciBhdHRyID0gYXR0cmxpc3RbaV0uYXR0cnNcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICB2YXIgYXIgPSBhdHRyW2pdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLmF0dHIsIHZhbHVlOiBhci52YWx1ZT9hci52YWx1ZTonJyB9KTtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgICAgIH1cclxuXHRcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHRcdH1cdFxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHR2YXIgZXZlbnRsaXN0ID0gdGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5ldmVudDtcclxuXHRcdFx0XHRcdGlmIChldmVudGxpc3QpIHtcclxuXHRcdFx0XHRcdCAgICBpZiAoZXZlbnRsaXN0Lmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudGxpc3QubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIGlmIChldmVudGxpc3RbaV0uZXZlbnRfaWQgPT0gJ2JlZm9yZV9vaycpIHtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLmVkaXRfb2tfZXZlbnQgPSBldmVudGxpc3RbaV07XHJcblx0XHRcdFx0XHQgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50bGlzdFtpXS5ldmVudF9pZCA9PSAnaW5pdGlhbCcpIHtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLmVkaXRfaW5pdGFsX2V2ZW50ID0gZXZlbnRsaXN0W2ldO1xyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudGxpc3RbaV0uZXZlbnRfaWQgPT0gJ2JlZm9yZV9zZWxlY3RfY29tcG9zZScpIHtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLmVkaXRfc2VsZWN0X2NvbXBvc2VfZXZlbnQgPSBldmVudGxpc3RbaV0uc2NyaXBfaWQ7XHJcblx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5lZGl0X2NvbXBvc2VfY2xzX2lkID0gZXZlbnRsaXN0W2ldLmNvbXBvc2VfY2xzX2lkO1xyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgfVxyXG5cdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHJlcSk7XHJcblx0XHRcdFx0XHRpZiAodGhpcy4kZGF0YS5lZGl0X2luaXRhbF9ldmVudCkge1xyXG5cdFx0XHRcdFx0ICAgIHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5lZGl0X2luaXRhbF9ldmVudC5zY3JpcF9pZDtcclxuXHRcdFx0XHRcdCAgICB2YXIgaW5mbyA9IHtcclxuXHRcdFx0XHRcdCAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcclxuXHRcdFx0XHRcdCAgICAgICAgZWR0eXBlOiBcIjBcIixcclxuXHRcdFx0XHRcdCAgICAgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgcmNsc2lkOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgcm9iamlkOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcclxuXHRcdFx0XHRcdCAgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0XHQgICAgICAgIGF0dHI6IHJlcSxcclxuXHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHQgICAgdGhpcy5zY2FuX2luaV9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlKTtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdCk7XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50Olwi5pyq5om+5Yiw5Y+v5pi+56S655qE55qE5bGe5oCnXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRpbmlfRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pe1xyXG5cdFx0XHRcdHZhciBwYXJhbSA9IHtcclxuXHRcdFx0XHQgICAgRWRpdFN0eWxlOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuVmlld19TdHlsZS5OYW1lLFxyXG5cdFx0XHRcdCAgICBWaWV3U3R5bGU6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5WaWV3X1N0eWxlLk5hbWUsXHJcblx0XHRcdFx0ICAgIE5vdFRyaWdnZXJTeXNFdmVudDogMCxcclxuXHRcdFx0XHQgICAgZW52aXJvbWVudDoge1xyXG5cdFx0XHRcdCAgICAgICAgJ2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcclxuXHRcdFx0XHQgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELCAgICAgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXHJcblx0XHRcdFx0ICAgICAgICAnYnV0dG9uJzogJ3RvcCcsICAgLy8gdG9wL2JvdHRvbVxyXG5cdFx0XHRcdCAgICAgICAgYnV0dG9uX25hbWU6ICfmlrDlop4nLFxyXG5cdFx0XHRcdCAgICAgICAgbWFzdGVyOiB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXHJcblx0XHRcdFx0ICAgICAgICAgICAgLy9vYmpfaWQ6ICcnICAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahG9ial9pZFxyXG5cdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHZhciBpbnB1dHBhcmFtZXRlciA9ICcnO1xyXG5cdFx0XHRcdHZhciBnbG9iYWxfYXR0ciA9ICcnO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdHZhciBkYXRhSW5mbyA9IHtcclxuICAgICAgICAgICAgICAgICAgICBlZHR5cGU6IGluZm8uZWR0eXBlLCBldmVudGlkOiBpbmZvLmV2ZW50aWQsIHByb2plY3RpZDogaW5mby5wcm9qZWN0aWQsXHJcbiAgICAgICAgICAgICAgICAgICAgcmNsc2lkOiBpbmZvLnJjbHNpZCwgcm9iamlkOiBpbmZvLnJvYmppZCwgdXNlcmxvZ2luOiBpbmZvLnVzZXJsb2dpbiwgY2xzaWQ6IGluZm8uY2xzaWQsIG9iamlkOiBpbmZvLm9iamlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGF0dHI6IEpTT04uc3RyaW5naWZ5KGluZm8uYXR0ciksIGV4dGluZm86IEpTT04uc3RyaW5naWZ5KHBhcmFtKSwgaW5wdXRwYXJhbWV0ZXI6IGlucHV0cGFyYW1ldGVyLCBnbG9iYWxfYXR0cjogZ2xvYmFsX2F0dHJcclxuICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XHJcblx0XHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9PntcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHR2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhKTtcclxuXHRcdFx0XHRcdFx0dmFyIGFjdGlvbmxpc3QgPSBkYXRhLmFjdGlvbjtcclxuXHRcdFx0XHRcdFx0aWYgKGFjdGlvbmxpc3QpIHtcclxuXHRcdFx0XHRcdFx0ICAgIGZvciAodmFyIGogPSAwOyBqIDwgYWN0aW9ubGlzdC5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgIHZhciBhY3Rpb24gPSBhY3Rpb25saXN0W2pdXHJcblx0XHRcdFx0XHRcdCAgICAgICAgdmFyIGFjdGlvbl90eXBlID0gYWN0aW9uLmFjdGlvbl90eXBlO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgIHZhciB2YWx1ZSA9IGFjdGlvbi52YWx1ZTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICBpZiAoYWN0aW9uX3R5cGUgPT0gJ3NldF9kbGdfYXR0cicpIHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgaWYgKHZhbHVlKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICB2YXIgdmFsID0gdmFsdWU7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgdmFsID0gSlNPTi5wYXJzZSh2YWx1ZSk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2codmFsKTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBhID0gMDsgYSA8IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGg7IGErKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBsID0gMDsgbCA8IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFthXS5BdHRyLmxlbmd0aDsgbCsrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGNhID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2FdLkF0dHJbbF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHZhbFtpXS5hdHRyICA9PSBjYS5OYW1lKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5UeXBlPT0n5a2X5YW4JyB8fCBjYS5UeXBlPT0n5a2X5YW4LeWtl+espuS4sicpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGljdEl0ZW1MaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IodmFyIGQgaW4gdmFsW2ldLmNob2ljZV9saXN0KXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsID12YWxbaV0uY2hvaWNlX2xpc3RbZF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1wiQ05fU19OQU1FXCI6dmFsLFwiTmFtZVwiOnZhbCxcImxhYmVsXCI6dmFsLFwidmFsdWVcIjp2YWx9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5kaWN0aXRlbSA9IGRpY3RJdGVtTGlzdDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYXR0cltqXS5kaWN0aXRlbSA9IHZhbFtpXS5jaG9pY2VfbGlzdDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjYS52YWx1ZSA9IHZhbFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSAwO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWxbaV0uYXR0ciA9PSBzLmF0dHJcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICB9KS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gMTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaCh2YWxbaV0pO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID09IDApIHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gdmFsW2ldLmF0dHIpIHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHZhbFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0ICAgICAgICBpZiAoYWN0aW9uX3R5cGUgPT0gJ29wZW5fc2VsZWN0X3VzZXJkbGcnKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMi4yXCIsY29udGVudDpcIm9wZW5fc2VsZWN0X3VzZXJkbGfov5nkuKphY3Rpb25fdHlwZei/mOacquWkhOeQhu+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzJcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzIuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0ICAgIERhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLGRhdGFfYXR0cil7XHJcblx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdCAgICBcdHZhciBlbnZpcm9tZW50ID0ge1xyXG5cdFx0ICAgIFx0ICAgICdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XHJcblx0XHQgICAgXHQgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsICAgICAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4ZcclxuXHRcdCAgICBcdCAgICAnYnV0dG9uJzogJ3RvcCcsICAgLy8gdG9wL2JvdHRvbVxyXG5cdFx0ICAgIFx0ICAgIGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcclxuXHRcdCAgICBcdCAgICBtYXN0ZXI6IHtcclxuXHRcdCAgICBcdCAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXHJcblx0XHQgICAgXHQgICAgICAgIC8vb2JqX2lkOiAnJyAgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRvYmpfaWRcclxuXHRcdCAgICBcdCAgICB9XHJcblx0XHQgICAgXHR9O1xyXG5cdFx0XHRcdGVudmlyb21lbnQuZWRpdF9kbGcgPSB7XHJcblx0XHRcdFx0ICAgIHR5cGU6ICdzbWFsbCcsLy/lsI/nqpflj6NcclxuXHRcdFx0XHQgICAgY2xhc3NfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwvL+W9k+WJjeaVsOaNruexu2lkXHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChkYXRhX2F0dHIpIHtcclxuXHRcdFx0XHQgICAgZW52aXJvbWVudC5lZGl0X2RsZy5mb3JtX2NvbnRyb2wgPSB7Ly/miYDlsZ7nmoTooajljZXmjqfku7ZcclxuXHRcdFx0XHQgICAgICAgIG5hbWU6IGRhdGFfYXR0ci5OYW1lLC8v5a2X5q615bGe5oCnXHJcblx0XHRcdFx0ICAgICAgICB0ZXh0OiBkYXRhX2F0dHIuRGlzcE5hbWUsLy/mmL7npLrmlofmnKxcclxuXHRcdFx0XHQgICAgICAgIGdyb3VwX25hbWU6IGRhdGFfYXR0ci5Hcm91cE5hbWUsLy/lsZ7mgKfnu4RcclxuXHRcdFx0XHQgICAgICAgIHR5cGU6IGRhdGFfYXR0ci5UeXBlLC8v5a2X5q6157G75Z6LXHJcblx0XHRcdFx0ICAgICAgICByZWFkb25seTogZGF0YV9hdHRyLlJlYWRPbmx5LC8v5piv5ZCm5Y+q6K+7XHJcblx0XHRcdFx0ICAgICAgICBidXR0b25faW1nOiBkYXRhX2F0dHIuYnV0dG9uX2ltZywvL+W8leeUqOaMiemSrueahOWbvuagh1xyXG5cdFx0XHRcdCAgICAgICAgYnV0dG9uX3Rvb2x0aXA6IGRhdGFfYXR0ci5idXR0b25fdG9vbHRpcC8v5byV55So5oyJ6ZKu55qEdG9vbHRpcFxyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0fVxyXG5cdFx0ICAgIFx0dmFyIGRhdGFJbmZvID0ge1xyXG5cdFx0ICAgICAgICAgICAgZWR0eXBlOiBpbmZvLmVkdHlwZSwgZXZlbnRpZDogaW5mby5ldmVudGlkLCBwcm9qZWN0aWQ6IGluZm8ucHJvamVjdGlkLnJlcGxhY2UoJ3snLCcnKS5yZXBsYWNlKCd9JywnJyksXHJcblx0XHQgICAgICAgICAgICByY2xzaWQ6IGluZm8ucmNsc2lkLCByb2JqaWQ6IGluZm8ucm9iamlkLCB1c2VybG9naW46IGluZm8udXNlcmxvZ2luLCBjbHNpZDogaW5mby5jbHNpZCwgb2JqaWQ6IGluZm8ub2JqaWQsXHJcblx0XHQgICAgICAgICAgICBhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLCBleHRpbmZvOiBKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KSwgaW5wdXRwYXJhbWV0ZXI6ICcnLCBnbG9iYWxfYXR0cjogSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5nbG9iYWxfYXR0cilcclxuXHRcdCAgICAgICAgfVxyXG5cdFx0ICAgIFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0ICAgIFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9PntcclxuXHRcdCAgICBcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XHJcblx0XHQgICAgXHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XHJcblx0XHQgICAgXHRcdFx0dmFyIGFjdGlvbmxpc3QgPSBkYXRhLmFjdGlvbjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHQgICAgXHRcdFx0aWYgKGFjdGlvbmxpc3QpIHtcclxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhY3Rpb25saXN0KTtcclxuXHRcdCAgICBcdFx0XHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY3Rpb25saXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB2YXIgYWN0aW9uID0gYWN0aW9ubGlzdFtpXTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ3NldF9kbGdfYXR0cicpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICB2YXIgcmVzdWx0ID0gYWN0aW9uLnZhbHVlO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAocmVzdWx0W2ldLmNob2ljZV9saXN0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBjID0gMDsgYyA8ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBjKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2NdLkF0dHI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGF0dHJbal0uTmFtZT09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoYXR0cltqXS5UeXBlPT0n5a2X5YW4JyB8fCBhdHRyW2pdLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJyl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkaWN0SXRlbUxpc3Q9W107XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvcih2YXIgZCBpbiByZXN1bHRbaV0uY2hvaWNlX2xpc3Qpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciB2YWwgPXJlc3VsdFtpXS5jaG9pY2VfbGlzdFtkXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaWN0SXRlbUxpc3QucHVzaCh7XCJDTl9TX05BTUVcIjp2YWwsXCJOYW1lXCI6dmFsLFwibGFiZWxcIjp2YWwsXCJ2YWx1ZVwiOnZhbH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHJbal0uZGljdGl0ZW0gPSBkaWN0SXRlbUxpc3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGF0dHJbal0uZGljdGl0ZW0gPSByZXN1bHRbaV0uY2hvaWNlX2xpc3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYysrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIFx0dmFyIGF0dHIgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2NdLkF0dHI7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGF0dHJbal0uTmFtZSsnPT0nK3Jlc3VsdFtpXS5hdHRyKTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHRcdGlmKGF0dHJbal0uTmFtZT09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdFx0XHRhdHRyW2pdLlZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdFx0fVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBpZiAoISR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfSkubGVuZ3RoKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAxO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID09IDApIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB9IGVsc2UgaWYgKGRhdGEuYWN0aW9uW2ldLmFjdGlvbl90eXBlID09ICdzZXRfZ2xvYmFsX2F0dHInKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICR0aGlzLiRkYXRhLmdsb2JhbF9hdHRyID0gZGF0YS5hY3Rpb25baV0udmFsdWUgfHwgW107XHJcblx0XHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICB9XHJcblx0XHQgICAgXHRcdFx0fVxyXG5cdFx0ICAgIFx0XHRcdFxyXG5cdFx0ICAgIFx0XHRcdGlmIChkYXRhLnJlc3VsdCkge1xyXG5cdFx0ICAgIFx0XHRcdCAgICB2YXIgcmVzdWx0ID0gZGF0YS5yZXN1bHQ7XHJcblx0XHQgICAgXHRcdFx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBjKyspIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIFx0dmFyIGF0dHIgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2NdLkF0dHI7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgXHRcdGlmKGF0dHJbal0uTmFtZT09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgXHRcdFx0YXR0cltqXS5WYWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIFx0XHR9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBcdH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIGxlbmd0aCA9IDA7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBpZiAoISR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICByZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB9KS5sZW5ndGgpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICBsZW5ndGggPSAxO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBpZiAobGVuZ3RoID09IDApIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBpZiAoJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgfVxyXG5cdFx0ICAgIFx0XHRcdH1cclxuXHRcdCAgICBcdFx0fWVsc2V7XHJcblx0XHQgICAgXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68zXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdCAgICBcdFx0fVxyXG5cdFx0ICAgIFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdCAgICBcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0ICAgIFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzMuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0ICAgIFx0fSk7XHJcblx0XHQgICAgfSxcclxuXHRcdFx0T0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQoKXtcclxuXHRcdCAgICBcdHZhciBlbnZpcm9tZW50ID0ge1xyXG5cdFx0XHRcdCAgICAnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xyXG5cdFx0XHRcdCAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgICAgIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxyXG5cdFx0XHRcdCAgICAnYnV0dG9uJzogJ3RvcCcsICAgLy8gdG9wL2JvdHRvbVxyXG5cdFx0XHRcdCAgICBidXR0b25fbmFtZTogJ+aWsOWinicsXHJcblx0XHRcdFx0ICAgIG1hc3Rlcjoge1xyXG5cdFx0XHRcdCAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXHJcblx0XHRcdFx0ICAgICAgICBcclxuXHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdH07XHJcblx0XHQgICAgXHRcclxuXHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuZWRpdF9va19ldmVudC5zY3JpcF9pZDtcclxuXHRcdFx0XHR2YXIgcmVxPVtdO1xyXG5cdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcclxuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XHJcblx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcclxuXHRcdFx0XHRcdFx0aWYoYXIuVmFsdWU9PSfor7fpgInmi6knIHx8IGFyLlZhbHVlPT0n4oCU4oCU6K+36YCJ5oup4oCU4oCUJykgYXIuVmFsdWU9Jyc7XHJcblx0XHRcdFx0XHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXHJcblx0XHRcdFx0XHRcdFx0aWYoYXIuVmFsdWU9PSfor7cnKSBhci5WYWx1ZT0nJztcclxuXHRcdFx0XHQgICAgICAgIGlmKGFyLlR5cGU9PSflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGU9PSflvJXnlKjpobnnm64nKVxyXG5cdFx0XHRcdCAgICAgICAgXHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbHVlOiBhci5WYWxJRCA/YXIuVmFsSUQgOicnIH0pO1xyXG5cdFx0XHRcdCAgICAgICAgZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8JylcclxuXHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbHVlOiBhci5WYWx1ZT8nMSc6JzAnfSk7XHJcblx0XHRcdFx0XHRcdGVsc2VcclxuXHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbHVlOiBhci5WYWx1ZSB9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0XHJcblx0XHQgICAgXHRpZiAodGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoID4gMCkge1xyXG5cdFx0ICAgIFx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBpKyspIHtcclxuXHRcdCAgICBcdCAgICAgICAgaWYgKCFyZXEuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XHJcblx0XHQgICAgXHQgICAgICAgICAgICByZXR1cm4gdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0uYXR0ciA9PSBzLm5hbWVcclxuXHRcdCAgICBcdCAgICAgICAgfSkubGVuZ3RoKSB7XHJcblx0XHQgICAgXHQgICAgICAgICAgICBsZW5ndGggPSAxO1xyXG5cdFx0ICAgIFx0ICAgICAgICAgICAgcmVxLnB1c2goeyAnYXR0cic6IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLmF0dHIsICd2YWx1ZSc6IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLnZhbHVlIH0pO1xyXG5cdFx0ICAgIFx0ICAgICAgICB9XHJcblx0XHQgICAgXHQgICAgfVxyXG5cdFx0ICAgIFx0fVxyXG5cdFx0ICAgIFx0dmFyIGluZm8gPSB7XHJcblx0XHQgICAgXHQgICAgZXZlbnRpZDogZXZlbnRpZCxcclxuXHRcdCAgICBcdCAgICBlZHR5cGU6IFwiMFwiLFxyXG5cdFx0ICAgIFx0ICAgIHByb2plY3RpZDogJycsXHJcblx0XHQgICAgXHQgICAgcmNsc2lkOiAnJyxcclxuXHRcdCAgICBcdCAgICByb2JqaWQ6ICcnLFxyXG5cdFx0ICAgIFx0ICAgIHVzZXJsb2dpbjogJycsXHJcblx0XHQgICAgXHQgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcclxuXHRcdCAgICBcdCAgICBvYmppZDogXCJcIixcclxuXHRcdCAgICBcdCAgICBhdHRyOiByZXEsXHJcblx0XHQgICAgXHR9XHJcblx0XHQgICAgXHR2YXIgZGF0YUluZm8gPSB7XHJcblx0XHQgICAgICAgICAgICBlZHR5cGU6IGluZm8uZWR0eXBlLCBldmVudGlkOiBpbmZvLmV2ZW50aWQsIHByb2plY3RpZDogaW5mby5wcm9qZWN0aWQscmNsc2lkOiBpbmZvLnJjbHNpZCwgXHJcblx0XHRcdFx0XHRyb2JqaWQ6IGluZm8ucm9iamlkLCB1c2VybG9naW46IGluZm8udXNlcmxvZ2luLCBjbHNpZDogaW5mby5jbHNpZCwgb2JqaWQ6IGluZm8ub2JqaWQsXHJcblx0XHRcdFx0XHRhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLCBleHRpbmZvOiBKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KSwgZ2xvYmFsX2F0dHI6IEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpXHJcblx0XHQgICAgICAgIH1cclxuXHRcdCAgICBcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcclxuXHRcdCAgICBcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XHJcblx0XHQgICAgXHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0ICAgIFx0XHRpZiAoc3VjY2Vzcy5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1x0XHRcclxuXHRcdCAgICBcdFx0XHR2YXIgcmVzdWx0ID0gZGF0YS5yZXN1bHQ7XHJcblx0XHQgICAgXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHtcclxuXHRcdCAgICBcdFx0XHQgICAgLy8gc2VsZi5jbGFzc19hdHRyX2VsZS5maW5kKCcuYXR0cl9maWVsZFtkYXRhLWZpZWxkPVwiJyArIHJlc3VsdFtpXS5hdHRyICsgJ1wiXScpLnZhbChyZXN1bHRbaV0udmFsdWUpLmRhdGEoJ3ZhbCcsIHJlc3VsdFtpXS52YWx1ZSk7XHJcblx0XHQgICAgXHRcdFx0ICAgIHZhciBsZW5ndGggPSAwO1xyXG5cdFx0ICAgIFx0XHRcdCAgICBpZiAoIXRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgcmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxyXG5cdFx0ICAgIFx0XHRcdCAgICB9KS5sZW5ndGgpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIGxlbmd0aCA9IDE7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XHJcblx0XHQgICAgXHRcdFx0ICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgaWYgKGxlbmd0aCA9PSAwKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgaWYgKHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICB9XHJcblx0XHQgICAgXHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0dGhpcy5hZGQoKTtcclxuXHRcdCAgICBcdFx0fWVsc2V7XHJcblx0XHQgICAgXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor680XCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdCAgICBcdFx0fVxyXG5cdFx0ICAgIFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdCAgICBcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0ICAgIFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzQuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0ICAgIFx0fSk7XHJcblx0XHQgICAgfSxcclxuXHRcdCAgICBEYXRhT2JqUnVuQ3VzdG9tRXZlbnRfUmV0dXJuKGV2ZW50aWQsZGF0YV9hdHRyLGJ1dHRvbl9jYWxsYmFjayxpbmRleCxpaW5kZXgpe1xyXG5cdFx0XHRcdHZhciBlbnZpcm9tZW50ID0ge1xyXG5cdFx0XHRcdCAgICAnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xyXG5cdFx0XHRcdCAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgICAgIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxyXG5cdFx0XHRcdCAgICAnYnV0dG9uJzogJ3RvcCcsICAgLy8gdG9wL2JvdHRvbVxyXG5cdFx0XHRcdCAgICBidXR0b25fbmFtZTogJ+aWsOWinicsXHJcblx0XHRcdFx0ICAgIG1hc3Rlcjoge1xyXG5cdFx0XHRcdCAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXHJcblx0XHRcdFx0ICAgICAgICAvL29ial9pZDogJycgIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEb2JqX2lkXHJcblx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdHZhciByZXE9W107XHJcblx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xyXG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcclxuXHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xyXG5cdFx0XHRcdFx0XHRpZihhci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKVxyXG5cdFx0XHRcdFx0XHRcdGlmKGFyLlZhbHVlPT0n6K+3JykgYXIuVmFsdWU9Jyc7XHJcblx0XHRcdFx0ICAgICAgICBpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcclxuXHRcdFx0XHQgICAgICAgIFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcclxuXHRcdFx0XHQgICAgICAgIGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXHJcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWU/JzEnOicwJ30pO1xyXG5cdFx0XHRcdFx0XHRlbHNlXHJcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWUgfSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmICh0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHQgICAgICAgIGlmICghcmVxLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG5cdFx0XHRcdCAgICAgICAgICAgIHJldHVybiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS5hdHRyID09IHMubmFtZVxyXG5cdFx0XHRcdCAgICAgICAgfSkubGVuZ3RoKSB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgbGVuZ3RoID0gMTtcclxuXHRcdFx0XHQgICAgICAgICAgICByZXEucHVzaCh7ICdhdHRyJzogdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0uYXR0ciwgJ3ZhbHVlJzogdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0udmFsdWUgfSk7XHJcblx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dmFyIGV4dGluZm8gPSBlbnZpcm9tZW50O1xyXG5cdFx0XHRcdGV4dGluZm8uZWRpdF9kbGcgPSB7XHJcblx0XHRcdFx0ICAgIHR5cGU6ICdzbWFsbCcsLy/lsI/nqpflj6NcclxuXHRcdFx0XHQgICAgY2xhc3NfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwvL+W9k+WJjeaVsOaNruexu2lkXHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChkYXRhX2F0dHIpIHtcclxuXHRcdFx0XHQgICAgZXh0aW5mby5lZGl0X2RsZy5mb3JtX2NvbnRyb2wgPSB7Ly/miYDlsZ7nmoTooajljZXmjqfku7ZcclxuXHRcdFx0XHQgICAgICAgIG5hbWU6IGRhdGFfYXR0ci5OYW1lLC8v5a2X5q615bGe5oCnXHJcblx0XHRcdFx0ICAgICAgICB0ZXh0OiBkYXRhX2F0dHIuRGlzcE5hbWUsLy/mmL7npLrmlofmnKxcclxuXHRcdFx0XHQgICAgICAgIGdyb3VwX25hbWU6IGRhdGFfYXR0ci5Hcm91cE5hbWUsLy/lsZ7mgKfnu4RcclxuXHRcdFx0XHQgICAgICAgIHR5cGU6IGRhdGFfYXR0ci5UeXBlLC8v5a2X5q6157G75Z6LXHJcblx0XHRcdFx0ICAgICAgICByZWFkb25seTogZGF0YV9hdHRyLlJlYWRPbmx5LC8v5piv5ZCm5Y+q6K+7XHJcblx0XHRcdFx0ICAgICAgICBidXR0b25faW1nOiBkYXRhX2F0dHIuYnV0dG9uX2ltZywvL+W8leeUqOaMiemSrueahOWbvuagh1xyXG5cdFx0XHRcdCAgICAgICAgYnV0dG9uX3Rvb2x0aXA6IGRhdGFfYXR0ci5idXR0b25fdG9vbHRpcC8v5byV55So5oyJ6ZKu55qEdG9vbHRpcFxyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHZhciBkYXRhSW5mbyA9IHtcclxuXHRcdFx0XHRcdGVkdHlwZTogIFwiMFwiLCBldmVudGlkOiBldmVudGlkLCBwcm9qZWN0aWQ6ICcnLHJjbHNpZDogJycsIHJvYmppZDogJycsIHVzZXJsb2dpbjogJycsIFxyXG5cdFx0XHRcdFx0Y2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgb2JqaWQ6ICcnLGF0dHI6IEpTT04uc3RyaW5naWZ5KHJlcSksIFxyXG5cdFx0XHRcdFx0ZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkoZXh0aW5mbyksIGdsb2JhbF9hdHRyOiBKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLmdsb2JhbF9hdHRyKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XHJcblx0XHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9PntcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHR2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhKTtcclxuXHRcdFx0XHRcdFx0aWYgKGRhdGEgIT0gXCJcIikge1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdHZhciBhY3Rpb25zID0gZGF0YS5hY3Rpb247XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGFjdGlvbnMpO1xyXG5cdFx0XHRcdFx0XHRpZiAoYWN0aW9ucykge1xyXG5cdFx0XHRcdFx0XHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY3Rpb25zLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgdmFyIGFjdGlvbiA9IGFjdGlvbnNbaV07XHJcblx0XHRcdFx0XHRcdCAgICAgICAgdmFyIHZhbCA9IGFjdGlvbi52YWx1ZTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICB2YXIgZW52aXJvbWVudCA9IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgIFxyXG5cdFx0XHRcdFx0XHQgICAgICAgIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ29wZW5fcGFuZWwnKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgdmFyIGQgPSBkaWFsb2coe1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICB0aXRsZTogJzxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtaW5mby1jaXJjbGVcIj48L2k+ICcgKyAn5o+Q56S6JyxcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgY29udGVudDogYWN0aW9uLmFjdGlvbl90eXBlICsgJ+atpGFjdGlvbuWwmuacquWkhOeQhu+8gSdcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICB9KTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICBkLnNob3coKTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdCAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX3NlbGVjdF91c2VyZGxnJykge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB2YXIgc3R5bGUgPSB2YWwuc3R5bGU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdC8vIHN0eWxlID09ICd1c2VyJyA/ICfpgInmi6nkurrlkZgnIDogc3R5bGUgPT0gJ2RlcGFydG1lbnQnID8gJ+mAieaLqemDqOmXqCcgOiBzdHlsZSA9PSAncm9sZScgPyAn6YCJ5oup6KeS6ImyJyA6ICcnXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBwYXJhbT17XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aW5kZXg6IGluZGV4LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlpbmRleDppaW5kZXgsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnV0dG9uX2NhbGxiYWNrOmJ1dHRvbl9jYWxsYmFjayxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXE6cmVxLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRhdGFfYXR0cjpkYXRhX2F0dHJcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0dXJsOicuLi9zZWxwc24vaW5kZXg/bXVsaXQ9ZmFsc2UmcGFyYW09JytKU09OLnN0cmluZ2lmeShwYXJhbSksXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0ZXZlbnRzOntcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHRcdEFkZFBlcihkYXRhLHBhcmFtKXsgXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0XHRcdC8vIGNvbnNvbGUubG9nKHBhcmFtKTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHRcdFx0Y29uc29sZS5sb2coZGF0YSk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0XHRcdHZhciBjYWxsYmFja19ldmVudGlkID0gcGFyYW0uYnV0dG9uX2NhbGxiYWNrLnRyaW0oKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGluZm8gPSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBldmVudGlkOiBjYWxsYmFja19ldmVudGlkLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgZWR0eXBlOiBcIjBcIixcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIHByb2plY3RpZDogJycsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICByY2xzaWQ6ICcnLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgcm9iamlkOiAnJyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIHVzZXJsb2dpbjogJycsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBjbHNpZDogJHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIG9iamlkOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgYXR0cjogcGFyYW0ucmVxLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgaW5wdXRwYXJhbWV0ZXI6IGRhdGFcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgcGFyYW0uZGF0YV9hdHRyKTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHRcdH1cclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHR9XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIH0pO1x0XHJcblx0XHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHQgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9kYXRhX3F1ZXJ5X2RsZycpIHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHJcblx0XHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHQgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9jb21tb25fZGxnJykge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB2YXIgdmFsdWUgPSBhY3Rpb24udmFsdWU7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIHZhciBkID0gZGlhbG9nKHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHRpdGxlOiAnPGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1pbmZvLWNpcmNsZVwiPjwvaT4gJyArICfmj5DnpLonLFxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgY29udGVudDogYWN0aW9uLmFjdGlvbl90eXBlICsgJ+atpGFjdGlvbuWwmuacquWkhOeQhu+8gSdcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgfSk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGQuc2hvdygpO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0ICAgICAgICBlbHNlIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ29wZW5fcHJvamVjdF9xdWVyeV9kbGcnKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIC8vY29uc29sZS5sb2coYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIC8vY29uc29sZS5sb2coYWN0aW9uLnZhbHVlLm11bGl0X3NlbGVjdCk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIHZhciBwcmlSZWwgPSAnLTEnO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5YWo6YOo55u45YWzJylcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHByaVJlbCA9ICcwJztcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5oiR6LSf6LSj55qE6aG555uuJylcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHByaVJlbCA9ICcxJztcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5oiR5Yib5bu655qEJylcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHByaVJlbCA9ICcyJztcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5oiR5Y+C5LiO55qEJyB8fCBhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHlj4LliqDnmoQnKVxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgcHJpUmVsID0gJzMnO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHlhbPms6jnmoQnKVxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgcHJpUmVsID0gJzQnO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHkuIvlsZ7nmoTpobnnm64nKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByaVJlbCA9ICc1JztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHBhcmFtXz17XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aW5kZXg6IGluZGV4LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlpbmRleDppaW5kZXgsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnV0dG9uX2NhbGxiYWNrOmJ1dHRvbl9jYWxsYmFjayxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXE6cmVxXHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHVybDonLi4vc2VsUHJqL2luZGV4P3JlbGF0aW9uPScrcHJpUmVsKycmcGFyYW09JytKU09OLnN0cmluZ2lmeShwYXJhbV8pLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGV2ZW50czp7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRBZGRQZXIoZGF0YSxwYXJhbSl7IFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsdWU9ZGF0YVswXS5OYW1lO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsSUQ9ZGF0YVswXS5JRCsnOycrZGF0YVswXS5OYW1lO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBcdFx0XHR2YXIgY2FsbGJhY2tfZXZlbnRpZCA9IHBhcmFtLmJ1dHRvbl9jYWxsYmFjay50cmltKCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYWxsYmFja19ldmVudGlkKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICB2YXIgaW5mbyA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICBldmVudGlkOiBjYWxsYmFja19ldmVudGlkLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIGVkdHlwZTogXCIyXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgcHJvamVjdGlkOiBkYXRhWzBdLklELFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIHJjbHNpZDogXCJcIixcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICByb2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgdXNlcmxvZ2luOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIGNsc2lkOiAkdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIG9iamlkOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIGF0dHI6IHBhcmFtLnJlcSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICR0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgfSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgdmFyIGQgPSBkaWFsb2coe1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGl0bGU6ICc8aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLWluZm8tY2lyY2xlXCI+PC9pPiAnICsgJ+aPkOekuicsXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBjb250ZW50OiBhY3Rpb24uYWN0aW9uX3R5cGUgKyAn5q2kYWN0aW9u5bCa5pyq5aSE55CG77yBJ1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB9KTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZC5zaG93KCk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6NS4yXCIsY29udGVudDogJ+iwg+eUqCBiZWZvcmVfY2xpY2tfYnV0dG9uIOiEmuacrOi/lOWbnuepuu+8jGV2ZW50X2lkJyArIGV2ZW50aWQsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzVcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekujUuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0ICAgIH0sXHJcblx0XHQgICAgc2Nhbl9pbmlfRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pe1xyXG5cdFx0ICAgIFx0dmFyIHBhcmFtID0ge1xyXG5cdFx0ICAgIFx0ICAgIEVkaXRTdHlsZTogdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLlZpZXdfU3R5bGUuTmFtZSxcclxuXHRcdCAgICBcdCAgICBWaWV3U3R5bGU6IHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5WaWV3X1N0eWxlLk5hbWUsXHJcblx0XHQgICAgXHQgICAgTm90VHJpZ2dlclN5c0V2ZW50OiAwLFxyXG5cdFx0ICAgIFx0ICAgIGVudmlyb21lbnQ6IHtcclxuXHRcdCAgICBcdCAgICAgICAgJ2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcclxuXHRcdCAgICBcdCAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsICAgICAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4ZcclxuXHRcdCAgICBcdCAgICAgICAgJ2J1dHRvbic6ICd0b3AnLCAgIC8vIHRvcC9ib3R0b21cclxuXHRcdCAgICBcdCAgICAgICAgYnV0dG9uX25hbWU6ICfmlrDlop4nLFxyXG5cdFx0ICAgIFx0ICAgICAgICBtYXN0ZXI6IHtcclxuXHRcdCAgICBcdCAgICAgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELCAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahGNsc19pZFxyXG5cdFx0ICAgIFx0ICAgICAgICAgICAgLy9vYmpfaWQ6ICcnICAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahG9ial9pZFxyXG5cdFx0ICAgIFx0ICAgICAgICB9XHJcblx0XHQgICAgXHQgICAgfVxyXG5cdFx0ICAgIFx0fVxyXG5cdFx0ICAgIFx0dmFyIGlucHV0cGFyYW1ldGVyID0gJyc7XHJcblx0XHQgICAgXHR2YXIgZ2xvYmFsX2F0dHIgPSAnJztcclxuXHRcdCAgICBcdFxyXG5cdFx0ICAgIFx0dmFyIGRhdGFJbmZvID0ge1xyXG5cdFx0ICAgICAgICAgICAgZWR0eXBlOiBpbmZvLmVkdHlwZSwgZXZlbnRpZDogaW5mby5ldmVudGlkLCBwcm9qZWN0aWQ6IGluZm8ucHJvamVjdGlkLFxyXG5cdFx0ICAgICAgICAgICAgcmNsc2lkOiBpbmZvLnJjbHNpZCwgcm9iamlkOiBpbmZvLnJvYmppZCwgdXNlcmxvZ2luOiBpbmZvLnVzZXJsb2dpbiwgY2xzaWQ6IGluZm8uY2xzaWQsIG9iamlkOiBpbmZvLm9iamlkLFxyXG5cdFx0ICAgICAgICAgICAgYXR0cjogSlNPTi5zdHJpbmdpZnkoaW5mby5hdHRyKSwgZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkocGFyYW0pLCBpbnB1dHBhcmFtZXRlcjogaW5wdXRwYXJhbWV0ZXIsIGdsb2JhbF9hdHRyOiBnbG9iYWxfYXR0clxyXG5cdFx0ICAgICAgICB9XHJcblx0XHQgICAgXHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XHJcblx0XHQgICAgXHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbycsZGF0YUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0ICAgIFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdCAgICBcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xyXG5cdFx0ICAgIFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1xyXG5cdFx0ICAgIFx0XHRcdHZhciBhY3Rpb25saXN0ID0gZGF0YS5hY3Rpb247XHJcblx0XHQgICAgXHRcdFx0aWYgKGFjdGlvbmxpc3QpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhY3Rpb25saXN0Lmxlbmd0aDsgaisrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB2YXIgYWN0aW9uID0gYWN0aW9ubGlzdFtqXVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgdmFyIGFjdGlvbl90eXBlID0gYWN0aW9uLmFjdGlvbl90eXBlO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgdmFyIHZhbHVlID0gYWN0aW9uLnZhbHVlO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgaWYgKGFjdGlvbl90eXBlID09ICdzZXRfZGxnX2F0dHInKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgaWYgKHZhbHVlKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIHZhciB2YWwgPSB2YWx1ZTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgdmFsID0gSlNPTi5wYXJzZSh2YWx1ZSk7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHZhbCk7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsLmxlbmd0aDsgaSsrKSB7XHJcblx0XHQgICAgXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGEgPSAwOyBhIDwgdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYSsrKSB7XHJcblx0XHQgICAgXHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgbCA9IDA7IGwgPCB0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3RbYV0uQXR0ci5sZW5ndGg7IGwrKykge1xyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGNhID0gdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0W2FdLkF0dHJbbF07XHJcblx0XHQgICAgXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodmFsW2ldLmF0dHIgID09IGNhLk5hbWUpIHtcclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuVHlwZT09J+Wtl+WFuCcgfHwgY2EuVHlwZT09J+Wtl+WFuC3lrZfnrKbkuLInKXtcclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGljdEl0ZW1MaXN0PVtdO1xyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvcih2YXIgZCBpbiB2YWxbaV0uY2hvaWNlX2xpc3Qpe1xyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9dmFsW2ldLmNob2ljZV9saXN0W2RdO1xyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1wiQ05fU19OQU1FXCI6dmFsLFwiTmFtZVwiOnZhbCxcImxhYmVsXCI6dmFsLFwidmFsdWVcIjp2YWx9KTtcclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5kaWN0aXRlbSA9IGRpY3RJdGVtTGlzdDtcclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhdHRyW2pdLmRpY3RpdGVtID0gdmFsW2ldLmNob2ljZV9saXN0O1xyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjYS52YWx1ZSA9IHZhbFtpXS52YWx1ZTtcclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0ICAgIFx0XHRcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSAwO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsW2ldLmF0dHIgPT0gcy5hdHRyXHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICB9KS5sZW5ndGgpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAxO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2godmFsW2ldKTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gMCkge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gdmFsW2ldLmF0dHIpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gdmFsW2ldLnZhbHVlO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgaWYgKGFjdGlvbl90eXBlID09ICdvcGVuX3NlbGVjdF91c2VyZGxnJykge1xyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNi4yXCIsY29udGVudDpcIm9wZW5fc2VsZWN0X3VzZXJkbGfov5nkuKphY3Rpb25fdHlwZei/mOacquWkhOeQhu+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICB9XHJcblx0XHQgICAgXHRcdFx0fVxyXG5cdFx0ICAgIFx0XHRcdFxyXG5cdFx0ICAgIFx0XHR9ZWxzZXtcclxuXHRcdCAgICBcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzZcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0ICAgIFx0XHR9XHJcblx0XHQgICAgXHR9KS5jYXRjaChleD0+e1xyXG5cdFx0ICAgIFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHQgICAgXHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNi4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHQgICAgXHR9KTtcclxuXHRcdCAgICB9LFxyXG5cdFx0ICAgIHNjYW5fRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sZGF0YV9hdHRyKXtcclxuXHRcdCAgICBcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHQgICAgXHR2YXIgZW52aXJvbWVudCA9IHtcclxuXHRcdCAgICBcdCAgICAnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xyXG5cdFx0ICAgIFx0ICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELCAgICAgLy8g5Yqf6IO954K55LuO5pWw5o2u57G75qCH6K+GXHJcblx0XHQgICAgXHQgICAgJ2J1dHRvbic6ICd0b3AnLCAgIC8vIHRvcC9ib3R0b21cclxuXHRcdCAgICBcdCAgICBidXR0b25fbmFtZTogJ+aWsOWinicsXHJcblx0XHQgICAgXHQgICAgbWFzdGVyOiB7XHJcblx0XHQgICAgXHQgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELCAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahGNsc19pZFxyXG5cdFx0ICAgIFx0ICAgICAgICAvL29ial9pZDogJycgIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEb2JqX2lkXHJcblx0XHQgICAgXHQgICAgfVxyXG5cdFx0ICAgIFx0fTtcclxuXHRcdCAgICBcdGVudmlyb21lbnQuZWRpdF9kbGcgPSB7XHJcblx0XHRcdFx0XHR0eXBlOiAnc21hbGwnLC8v5bCP56qX5Y+jXHJcblx0XHQgICAgXHQgICAgY2xhc3NfaWQ6IHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCwvL+W9k+WJjeaVsOaNruexu2lkXHJcblx0XHQgICAgXHR9XHJcblx0XHQgICAgXHRpZiAoZGF0YV9hdHRyKSB7XHJcblx0XHQgICAgXHQgICAgZW52aXJvbWVudC5lZGl0X2RsZy5mb3JtX2NvbnRyb2wgPSB7Ly/miYDlsZ7nmoTooajljZXmjqfku7ZcclxuXHRcdCAgICBcdCAgICAgICAgbmFtZTogZGF0YV9hdHRyLk5hbWUsLy/lrZfmrrXlsZ7mgKdcclxuXHRcdCAgICBcdCAgICAgICAgdGV4dDogZGF0YV9hdHRyLkRpc3BOYW1lLC8v5pi+56S65paH5pysXHJcblx0XHQgICAgXHQgICAgICAgIGdyb3VwX25hbWU6IGRhdGFfYXR0ci5Hcm91cE5hbWUsLy/lsZ7mgKfnu4RcclxuXHRcdCAgICBcdCAgICAgICAgdHlwZTogZGF0YV9hdHRyLlR5cGUsLy/lrZfmrrXnsbvlnotcclxuXHRcdCAgICBcdCAgICAgICAgcmVhZG9ubHk6IGRhdGFfYXR0ci5SZWFkT25seSwvL+aYr+WQpuWPquivu1xyXG5cdFx0ICAgIFx0ICAgICAgICBidXR0b25faW1nOiBkYXRhX2F0dHIuYnV0dG9uX2ltZywvL+W8leeUqOaMiemSrueahOWbvuagh1xyXG5cdFx0ICAgIFx0ICAgICAgICBidXR0b25fdG9vbHRpcDogZGF0YV9hdHRyLmJ1dHRvbl90b29sdGlwLy/lvJXnlKjmjInpkq7nmoR0b29sdGlwXHJcblx0XHQgICAgXHQgICAgfVxyXG5cdFx0ICAgIFx0fVxyXG5cdFx0ICAgIFx0XHJcblx0XHQgICAgXHR2YXIgZGF0YUluZm8gPSB7XHJcblx0XHQgICAgICAgICAgICBlZHR5cGU6IGluZm8uZWR0eXBlLCBldmVudGlkOiBpbmZvLmV2ZW50aWQsIHByb2plY3RpZDogaW5mby5wcm9qZWN0aWQucmVwbGFjZSgneycsJycpLnJlcGxhY2UoJ30nLCcnKSxcclxuXHRcdCAgICAgICAgICAgIHJjbHNpZDogaW5mby5yY2xzaWQsIHJvYmppZDogaW5mby5yb2JqaWQsIHVzZXJsb2dpbjogaW5mby51c2VybG9naW4sIGNsc2lkOiBpbmZvLmNsc2lkLCBvYmppZDogaW5mby5vYmppZCxcclxuXHRcdCAgICAgICAgICAgIGF0dHI6IEpTT04uc3RyaW5naWZ5KGluZm8uYXR0ciksIGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpLCBpbnB1dHBhcmFtZXRlcjogSlNPTi5zdHJpbmdpZnkoaW5mby5pbnB1dFBhcmFtdGVyKSwgZ2xvYmFsX2F0dHI6IEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpXHJcblx0XHQgICAgICAgIH1cclxuXHRcdCAgICBcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcclxuXHRcdCAgICBcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XHJcblx0XHQgICAgXHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0ICAgIFx0XHRpZiAoc3VjY2Vzcy5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHQgICAgXHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XHJcblx0XHQgICAgXHRcdFx0dmFyIGFjdGlvbmxpc3QgPSBkYXRhLmFjdGlvbjtcclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcclxuXHRcdCAgICBcdFx0XHRpZiAoYWN0aW9ubGlzdCkge1xyXG5cdFx0ICAgIFx0XHRcdFx0Y29uc29sZS5sb2coYWN0aW9ubGlzdCk7XHJcblx0XHQgICAgXHRcdFx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWN0aW9ubGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgdmFyIGFjdGlvbiA9IGFjdGlvbmxpc3RbaV07XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdzZXRfZGxnX2F0dHInKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGFjdGlvbi52YWx1ZTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdFtpXS5jaG9pY2VfbGlzdCkge1xyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBzID0gMDsgcyA8ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdC5sZW5ndGg7IHMrKykge1xyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0ckxpc3QubGVuZ3RoOyBjKyspIHtcclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0ckxpc3RbY10uQXR0cjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGF0dHJbal0uTmFtZT09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihhdHRyW2pdLlR5cGU9PSflrZflhbgnIHx8IGF0dHJbal0uVHlwZT09J+Wtl+WFuC3lrZfnrKbkuLInKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGljdEl0ZW1MaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvcih2YXIgZCBpbiByZXN1bHRbaV0uY2hvaWNlX2xpc3Qpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9cmVzdWx0W2ldLmNob2ljZV9saXN0W2RdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1wiQ05fU19OQU1FXCI6dmFsLFwiTmFtZVwiOnZhbCxcImxhYmVsXCI6dmFsLFwidmFsdWVcIjp2YWx9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cltqXS5kaWN0aXRlbSA9IGRpY3RJdGVtTGlzdDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhdHRyW2pdLmRpY3RpdGVtID0gcmVzdWx0W2ldLmNob2ljZV9saXN0O1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHQgICAgXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gMDsgcyA8ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdC5sZW5ndGg7IHMrKykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0ckxpc3QubGVuZ3RoOyBjKyspIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHRcdHZhciBhdHRyID0gJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0ckxpc3RbY10uQXR0cjtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdFx0XHRjb25zb2xlLmxvZyhhdHRyW2pdLk5hbWUrJz09JytyZXN1bHRbaV0uYXR0cik7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIFx0XHRcdGlmKGF0dHJbal0uTmFtZT09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdFx0XHRcdGF0dHJbal0uVmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIFx0XHRcdH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHRcdH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHR9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBpZiAoISR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfSkubGVuZ3RoKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAxO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID09IDApIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB9IGVsc2UgaWYgKGRhdGEuYWN0aW9uW2ldLmFjdGlvbl90eXBlID09ICdzZXRfZ2xvYmFsX2F0dHInKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgJHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIgPSBkYXRhLmFjdGlvbltpXS52YWx1ZSB8fCBbXTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5hY3Rpb25baV0uYWN0aW9uX3R5cGUgPT0gJ2FkZF9zdWJjbHNfcGFuZWwnKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGFjdGlvbi52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IGxpc3RfMSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0KSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdC5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzY2FuQ29kZVZhbDokdGhpcy4kZGF0YS5zY2FuQ29kZVZhbCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzdWJDbGFzc0F0dHI6bGlzdF8xXHJcblx0XHRcdFx0XHRcdFx0XHRcdH0pOyBcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHMgPSAwOyBzIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZigkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc2NhbkNvZGVWYWwgPT0gJHRoaXMuJGRhdGEuc2NhbkNvZGVWYWwpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgX3N1YkNsYXNzQXR0ciA9ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgX3N1YkNsYXNzQXR0ci5sZW5ndGg7IGMrKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gX3N1YkNsYXNzQXR0cltjXS5BdHRyO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coYXR0cltqXS5OYW1lKyc9PScrcmVzdWx0W2ldLmF0dHIpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoYXR0cltqXS5OYW1lPT1yZXN1bHRbaV0uYXR0cil7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHJbal0uVmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyPWxpc3RfMTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGxlbmd0aCA9IDA7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCEkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgbGVuZ3RoID0gMTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIGZvciAodmFyIGogPSAwOyBqIDwgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICBpZiAoJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgICAgICAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgfVxyXG5cdFx0ICAgIFx0XHRcdH1cclxuXHRcdCAgICBcdFx0XHRcclxuXHRcdCAgICBcdFx0XHRpZiAoZGF0YS5yZXN1bHQpIHtcclxuXHRcdFx0XHRcdFx0XHRsZXQgbGlzdF8xID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3QpKTtcclxuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3QucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0XHRzY2FuQ29kZVZhbDokdGhpcy4kZGF0YS5zY2FuQ29kZVZhbCxcclxuXHRcdFx0XHRcdFx0XHRcdHN1YkNsYXNzQXR0cjpsaXN0XzFcclxuXHRcdFx0XHRcdFx0XHR9KTsgXHJcblx0XHQgICAgXHRcdFx0ICAgIHZhciByZXN1bHQgPSBkYXRhLnJlc3VsdDtcclxuXHRcdCAgICBcdFx0XHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIGZvciAodmFyIHMgPSAwOyBzIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmKCR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zY2FuQ29kZVZhbCA9PSAkdGhpcy4kZGF0YS5zY2FuQ29kZVZhbCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIF9zdWJDbGFzc0F0dHIgPSAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgX3N1YkNsYXNzQXR0ci5sZW5ndGg7IGMrKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBfc3ViQ2xhc3NBdHRyW2NdLkF0dHI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coYXR0cltqXS5OYW1lKyc9PScrcmVzdWx0W2ldLmF0dHIpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihhdHRyW2pdLk5hbWU9PXJlc3VsdFtpXS5hdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyW2pdLlZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgXHR9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0XHRcdFxyXG5cdFx0ICAgIFx0XHRcdFx0XHR2YXIgbGVuZ3RoID0gMDtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIGlmICghJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIH0pLmxlbmd0aCkge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIGxlbmd0aCA9IDE7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgIGlmIChsZW5ndGggPT0gMCkge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIGlmICgkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0uYXR0ciA9PSByZXN1bHRbaV0uYXR0cikge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICB9XHJcblx0XHQgICAgXHRcdFx0fVxyXG5cdFx0ICAgIFx0XHR9ZWxzZXtcclxuXHRcdCAgICBcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzdcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0ICAgIFx0XHR9XHJcblx0XHQgICAgXHR9KS5jYXRjaChleD0+e1xyXG5cdFx0ICAgIFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHQgICAgXHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNy4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHQgICAgXHR9KTtcclxuXHRcdCAgICB9LFxyXG5cdFx0ICAgIHNjYW5fT0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQoZXZlbnRJRCl7XHJcblx0XHRcdFx0dW5pLnNob3dMb2FkaW5nKHtcclxuXHRcdFx0XHRcdHRpdGxlOlwi5Yqg6L295LitLi4uXCJcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0XHRcdHZhciByZXE9W107XHJcblx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcclxuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XHJcblx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcclxuXHRcdFx0XHRcdFx0aWYoYXIuVmFsdWU9PSfor7fpgInmi6knIHx8IGFyLlZhbHVlPT0n4oCU4oCU6K+36YCJ5oup4oCU4oCUJykgYXIuVmFsdWU9Jyc7XHJcblx0XHRcdFx0XHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXHJcblx0XHRcdFx0XHRcdFx0aWYoYXIuVmFsdWU9PSfor7cnKSBhci5WYWx1ZT0nJztcclxuXHRcdFx0XHRcdFx0aWYoYXIuVHlwZT09J+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZT09J+W8leeUqOmhueebricpXHJcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcclxuXHRcdFx0XHRcdFx0ZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8JylcclxuXHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbHVlOiBhci5WYWx1ZT8nMSc6JzAnfSk7XHJcblx0XHRcdFx0XHRcdGVsc2UgaWYoYXIuVHlwZT09J+Wtl+WFuCcgfHwgYXIuVHlwZT09J+Wtl+WFuC3lrZfnrKbkuLInKXtcclxuXHRcdFx0XHRcdFx0XHRpZihhci5zZWxlY3Q9PXRydWUpeyAvL+WIpOaWreS4i+aLieaYr+WQpuWkmumAiVxyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHZhbFN0ciA9XCJcIjtcclxuXHRcdFx0XHRcdFx0XHRcdGZvcih2YXIgdiBpbiBhci5WYWx1ZSl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmKHZhbFN0cilcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWxTdHIrPVwiO1wiO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWxTdHIrPWFyLlZhbHVlW3ZdO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWx1ZTogdmFsU3RyfSk7XHJcblx0XHRcdFx0XHRcdFx0fWVsc2VcclxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsdWU6IGFyLlZhbHVlfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0ZWxzZVxyXG5cdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsdWU6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0aWYgKChhci5Ob3RFbXB0eSA9PSAnMScgfHwgYXIubm90ZW1wdHkgPT0gdHJ1ZSkgJiYgIWFyLlZhbHVlKSB7XHJcblx0XHRcdFx0XHRcdC8vIGlmKGFyLm5vdEVtcHR5PT0nMScpe1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xyXG5cdFx0XHRcdFx0XHRcdC8vIHVuaS5zaG93VG9hc3Qoe3RpdGxlOmFyLkRpc3BOYW1lKyfkuI3og73kuLrnqbrvvIEnLGljb246XCJzdWNjZXNzXCIsZHVyYXRpb246MzAwMH0pO1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDphci5EaXNwTmFtZSsn5LiN6IO95Li656m677yBJyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dmFyIG9iamVjdHM9W107XHJcblx0XHRcdFx0dmFyIHN1YlBhbmVsTGlzdCA9ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdDtcclxuXHRcdFx0XHRmb3IgKHZhciBzID0gMDsgcyA8IHN1YlBhbmVsTGlzdC5sZW5ndGg7IHMrKykge1xyXG5cdFx0XHRcdFx0dmFyIHN1Yl9yZXE9W107XHJcblx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHIubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBzdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyW2ldLkF0dHI7XHJcblx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XHJcblx0XHRcdFx0XHRcdFx0aWYoYXIuVmFsdWU9PSfor7fpgInmi6knIHx8IGFyLlZhbHVlPT0n4oCU4oCU6K+36YCJ5oup4oCU4oCUJykgYXIuVmFsdWU9Jyc7XHJcblx0XHRcdFx0XHRcdFx0aWYoYXIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJylcclxuXHRcdFx0XHRcdFx0XHRcdGlmKGFyLlZhbHVlPT0n6K+3JykgYXIuVmFsdWU9Jyc7XHJcblx0XHRcdFx0XHRcdFx0aWYoYXIuVHlwZT09J+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZT09J+W8leeUqOmhueebricpXHJcblx0XHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcclxuXHRcdFx0XHRcdFx0XHRlbHNlIGlmKGFyLlR5cGU9PSfluIPlsJTlgLwnKVxyXG5cdFx0XHRcdFx0XHRcdFx0c3ViX3JlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsdWU6IGFyLlZhbHVlPycxJzonMCd9KTtcclxuXHRcdFx0XHRcdFx0XHRlbHNlIGlmKGFyLlR5cGU9PSflrZflhbgnIHx8IGFyLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJyl7XHJcblx0XHRcdFx0XHRcdFx0XHRpZihhci5zZWxlY3Q9PXRydWUpeyAvL+WIpOaWreS4i+aLieaYr+WQpuWkmumAiVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsU3RyID1cIlwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IodmFyIHYgaW4gYXIuVmFsdWUpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmKHZhbFN0cilcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbFN0cis9XCI7XCI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsU3RyKz1hci5WYWx1ZVt2XTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWx1ZTogdmFsU3RyfSk7XHJcblx0XHRcdFx0XHRcdFx0XHR9ZWxzZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWV9KTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0ZWxzZVxyXG5cdFx0XHRcdFx0XHRcdFx0c3ViX3JlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsdWU6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdGlmICgoYXIuTm90RW1wdHkgPT0gJzEnIHx8IGFyLm5vdGVtcHR5ID09IHRydWUpICYmICFhci5WYWx1ZSkge1xyXG5cdFx0XHRcdFx0XHRcdC8vIGlmKGFyLm5vdEVtcHR5PT0nMScpe1xyXG5cdFx0XHRcdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHRcdFx0XHRcdFx0XHQvLyB1bmkuc2hvd1RvYXN0KHt0aXRsZTphci5EaXNwTmFtZSsn5LiN6IO95Li656m677yBJyxpY29uOlwic3VjY2Vzc1wiLGR1cmF0aW9uOjMwMDB9KTtcclxuXHRcdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDphci5EaXNwTmFtZSsn5LiN6IO95Li656m677yBJyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdG9iamVjdHMucHVzaCh7XHJcblx0XHRcdFx0XHRcdG9ial9pZDpzdWJQYW5lbExpc3Rbc10uc2NhbkNvZGVWYWwsXHJcblx0XHRcdFx0XHRcdG9ial9hdHRyczpzdWJfcmVxXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dmFyIGRhdGFKc29uPXtcclxuXHRcdFx0XHRcdG1hc3Rlcl9jbHM6e1xyXG5cdFx0XHRcdFx0XHRjbHNfbmFtZTokdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLk5hbWUsXHJcblx0XHRcdFx0XHRcdG9ial9hdHRyczpyZXFcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRpbnB1dF8zMDM3OiR0aGlzLiRkYXRhLnNjYW5Db2RlVmFsLFxyXG5cdFx0XHRcdFx0c3ViX2Nsczp7XHJcblx0XHRcdFx0XHRcdGNsc19uYW1lOiR0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuTmFtZSxcclxuXHRcdFx0XHRcdFx0b2JqZWN0czpvYmplY3RzXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShkYXRhSnNvbikpO1xyXG5cdFx0ICAgIFx0dmFyIGRhdGFJbmZvID0ge1xyXG5cdFx0ICAgICAgICAgICAgZWR0eXBlOiBcIjBcIiwgZXZlbnRpZDogZXZlbnRJRCwgcHJvamVjdGlkOiAnJyxyY2xzaWQ6ICcnLCByb2JqaWQ6ICcnLCB1c2VybG9naW46ICcnLCBcclxuXHRcdFx0XHRcdGNsc2lkOiAkdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELCBvYmppZDogJycsYXR0cjogSlNPTi5zdHJpbmdpZnkoW10pLCBleHRpbmZvOiBKU09OLnN0cmluZ2lmeShbXSksIFxyXG5cdFx0XHRcdFx0Z2xvYmFsX2F0dHI6IEpTT04uc3RyaW5naWZ5KCR0aGlzLiRkYXRhLmdsb2JhbF9hdHRyKSxkYXRhSnNvbjpKU09OLnN0cmluZ2lmeShkYXRhSnNvbilcclxuXHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGRhdGFJbmZvKSk7XHJcblx0XHQgICAgXHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XHJcblx0XHQgICAgXHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbycsZGF0YUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0ICAgIFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xyXG5cdFx0ICAgIFx0XHRpZiAoc3VjY2Vzcy5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHQgICAgXHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XHRcdFxyXG5cdFx0ICAgIFx0XHRcdHZhciByZXN1bHQgPSBkYXRhLnJlc3VsdDtcclxuXHRcdCAgICBcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAvLyBzZWxmLmNsYXNzX2F0dHJfZWxlLmZpbmQoJy5hdHRyX2ZpZWxkW2RhdGEtZmllbGQ9XCInICsgcmVzdWx0W2ldLmF0dHIgKyAnXCJdJykudmFsKHJlc3VsdFtpXS52YWx1ZSkuZGF0YSgndmFsJywgcmVzdWx0W2ldLnZhbHVlKTtcclxuXHRcdCAgICBcdFx0XHQgICAgdmFyIGxlbmd0aCA9IDA7XHJcblx0XHQgICAgXHRcdFx0ICAgIGlmICghJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgcmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxyXG5cdFx0ICAgIFx0XHRcdCAgICB9KS5sZW5ndGgpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIGxlbmd0aCA9IDE7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaChyZXN1bHRbaV0pO1xyXG5cdFx0ICAgIFx0XHRcdCAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgIGlmIChsZW5ndGggPT0gMCkge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICBpZiAoJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgfVxyXG5cdFx0ICAgIFx0XHRcdH1cclxuXHRcdCAgICBcdFx0XHRcclxuXHRcdCAgICBcdFx0XHRpZihldmVudElEICE9ICR0aGlzLiRkYXRhLnBhcmFtLkFmdGVyX09LX0V2ZW50LklEKVxyXG5cdFx0ICAgIFx0XHRcdFx0JHRoaXMuc2Nhbl9PS0RhdGFPYmpSdW5DdXN0b21FdmVudCgkdGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudC5JRCk7XHJcblx0XHRcdFx0XHRcdGVsc2V7XHJcblx0XHRcdFx0XHRcdFx0Ly/liLfmlrBcclxuXHRcdFx0XHRcdFx0XHR1bmkucmVkaXJlY3RUbyh7XHJcblx0XHRcdFx0XHRcdFx0XHR1cmw6Jy4uL21vZGFsL21zX2NsYXNzQXR0cj9wYXJhbT0nK0pTT04uc3RyaW5naWZ5KCR0aGlzLiRkYXRhLnBhcmFtKStcIiZ0aXRsZW5hbWU9XCIrJHRoaXMuJGRhdGEudGl0bGVcclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0ICAgIFx0XHR9ZWxzZXtcclxuXHRcdCAgICBcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzhcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0ICAgIFx0XHR9XHJcblx0XHQgICAgXHR9KS5jYXRjaChleD0+e1xyXG5cdFx0ICAgIFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcclxuXHRcdCAgICBcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor684LjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdCAgICBcdH0pO1xyXG5cdFx0ICAgIH0sXHJcblx0XHQgICAgXHJcblx0XHRcdFxyXG5cdFx0fVxyXG5cdH1cclxuPC9zY3JpcHQ+XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///63\n"); |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;var _regenerator = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/regenerator */ 50));\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _pickerAddress = _interopRequireDefault(__webpack_require__(/*! ../../js/pickerAddress/pickerAddress.vue */ 53));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {try {var info = gen[key](arg);var value = info.value;} catch (error) {reject(error);return;}if (info.done) {resolve(value);} else {Promise.resolve(value).then(_next, _throw);}}function _asyncToGenerator(fn) {return function () {var self = this,args = arguments;return new Promise(function (resolve, reject) {var gen = fn.apply(self, args);function _next(value) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);}function _throw(err) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);}_next(undefined);});};}var _default =\n{\n components: {\n pickerAddress: _pickerAddress.default },\n\n data: function data() {\n return {\n title: '新增',\n param: {},\n classAttrList: [],\n classGridStyle: [],\n edit_inital_event: \"\", //弹窗初始化事件ID\n edit_ok_event: \"\", //弹窗点击OK 触发事件ID\n edit_select_compose_event: \"\", //选择组成对象时调用\n edit_compose_cls_id: \"\",\n global_attr: [],\n refdatastore: [], //引用数据存储区// {attr:'G_PRJ_' + bindattr + '_ID', value:info.id}\n scanCodeVal: \"\",\n subClassAttrList: [],\n subPanelList: [],\n subClassGridStyle: [] };\n\n },\n onLoad: function onLoad(options) {\n // console.log(options);\n uni.setNavigationBarTitle({ title: options.titlename }); //设置顶部标题 \n var param = JSON.parse(options.param);\n this.$data.title = param.Add_BtnName ? param.Add_BtnName : options.titlename; //设置按钮文字\n __f__(\"log\", param, \" at pages/modal/ms_classAttr.vue:621\");\n if (!param.Master_Cls.View_Style) {\n uni.showModal({ title: \"提示\", content: \"该功能点未配置界面窗口,请重新配置!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n if (!param.Master_Cls.View_Style.Name) {\n uni.showModal({ title: \"提示\", content: \"该功能点未配置窗口样式,请重新配置!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n this.$data.param = param;\n // var edit_dlg = {\n // Model: param.EditDlgMode,\n // Name: param.Master_Cls.View_Style.Name\n // }\n //主数据类获取\n var dataInfo = {\n class_id: param.Master_Cls.ID };\n\n var $this = this;\n $this.$store.state.thisareaFuncID = param.Master_Cls.ID;\n // console.log($this.$store.getters.getclassAttrList);\n if ($this.$store.getters.getclassAttrList) {\n $this.$data.classAttrList = $this.$store.getters.getclassAttrList.data;\n $this.classGridStyleInfo(param.Master_Cls.ID, $this.$data.param.Master_Cls.View_Style.Name, 'Mast');\n } else {\n $this.$store.dispatch('classAttrList', dataInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n $this.$data.classAttrList = success.data;\n\n $this.classGridStyleInfo(param.Master_Cls.ID, $this.$data.param.Master_Cls.View_Style.Name, 'Mast');\n } else {\n uni.showModal({ title: \"错误1\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误1.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n }\n\n //从数据类获取\n var subdataInfo = {\n class_id: param.Sub_Cls.ID };\n\n $this.$store.state.thisareaFuncSubID = param.Sub_Cls.ID;\n if ($this.$store.getters.getSubClassAttrList) {\n $this.$data.subClassAttrList = $this.$store.getters.getSubClassAttrList.data;\n $this.classGridStyleInfo(param.Sub_Cls.ID, $this.$data.param.Sub_Cls.View_Style.Name, 'Sub');\n } else {\n $this.$store.dispatch('subClassAttrList', subdataInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n $this.$data.subClassAttrList = success.data;\n\n $this.classGridStyleInfo(param.Sub_Cls.ID, $this.$data.param.Sub_Cls.View_Style.Name, 'Sub');\n } else {\n uni.showModal({ title: \"错误1_1\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误1_1.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n }\n },\n methods: {\n cancel: function cancel(e) {\n uni.navigateBack({\n delta: 1 //返回层数,2则上上页\n });\n },\n panel_del: function panel_del(index) {\n if (this.$data.subPanelList[index].scanCodeVal == this.$data.scanCodeVal) {\n this.$data.scanCodeVal = '';\n }\n this.$data.subPanelList.splice(index, 1);\n },\n classGridStyleInfo: function classGridStyleInfo(clsid, styleName, clsType) {var _this = this;return _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee() {var $this, gridstyleInfo;return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:\n $this = _this;\n gridstyleInfo = {\n class_id: clsid,\n name: styleName,\n type: '2' };\n\n $this.$store.state.thisEditName = styleName;\n // console.log($this.$store.getters.getclassGridStyleInfo);\n //获取主数据类界面样式\n if (clsType == 'Mast') {\n if ($this.$store.getters.getclassGridStyleInfo) {\n $this.$data.classGridStyle = $this.$store.getters.getclassGridStyleInfo.data;\n $this.class_attr_init();\n } else {\n //console.log(gridstyleInfo);\n $this.$store.dispatch('classGridStyleInfo', gridstyleInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n success.data.StyleDef = JSON.parse(success.data.StyleDef);\n $this.$data.classGridStyle = success.data;\n\n $this.class_attr_init();\n } else {\n uni.showModal({ title: \"错误1.2\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/ms_classAttr.vue:724\");\n uni.showModal({ title: \"错误1.3\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n }\n } else if (clsType == 'Sub') {//获取从数据类界面样式\n if ($this.$store.getters.getSubClassGridStyleInfo) {\n $this.$data.subClassGridStyle = $this.$store.getters.getSubClassGridStyleInfo.data;\n $this.subClass_attr_init();\n } else {\n //console.log(gridstyleInfo);\n $this.$store.dispatch('subClassGridStyleInfo', gridstyleInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n success.data.StyleDef = JSON.parse(success.data.StyleDef);\n $this.$data.subClassGridStyle = success.data;\n\n $this.subClass_attr_init();\n } else {\n uni.showModal({ title: \"错误1.2\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/ms_classAttr.vue:745\");\n uni.showModal({ title: \"错误1.3\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n }\n }case 4:case \"end\":return _context.stop();}}}, _callee);}))();\n },\n ontap: function ontap(e) {var _this2 = this; //扫码功能\n //console.log(e.target)\n getApp().onScan(function (result) {\n //console.log(result.decodedata);\n _this2.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = result.decodedata;\n });\n },\n scan_ontap: function scan_ontap(e) {var _this3 = this; //扫码区扫码功能\n //console.log(e.target)\n getApp().onScan(function (result) {\n __f__(\"log\", result.decodedata, \" at pages/modal/ms_classAttr.vue:761\");\n var isflag = true;\n for (var i in _this3.$data.subPanelList) {\n if (_this3.$data.subPanelList[i].scanCodeVal == result.decodedata)\n isflag = false;\n }\n\n if (isflag) {\n _this3.$data.scanCodeVal = result.decodedata;\n var eventid = _this3.$data.param.Scan_Code.Input_Change_Event.ID;\n if (eventid) {\n var req = [];\n var attrlist = _this3.$data.subClassAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, value: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, value: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, value: ar.Value ? ar.Value : '' });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: _this3.$data.param.Sub_Cls.ID,\n objid: \"\",\n attr: req,\n inputParamter: [{ attr: 'input_3037', value: _this3.$data.scanCodeVal }] };\n\n\n _this3.scan_DataObjRunCustomEvent(info, \"\");\n }\n }\n });\n },\n onarrow: function onarrow(index, open) {\n // console.log(index+'--'+open);\n this.$data.classAttrList[index].Open = open == true ? false : true;\n },\n ondateTime: function ondateTime(e) {\n //console.log(e.target)\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n },\n onchange: function onchange(e) {\n __f__(\"log\", e.target, \" at pages/modal/ms_classAttr.vue:815\");\n var value = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].dictitem[e.target.value];\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n __f__(\"log\", data_attr, \" at pages/modal/ms_classAttr.vue:818\");\n if (value.Name != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = value.Name;\n __f__(\"log\", this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value, \" at pages/modal/ms_classAttr.vue:821\");\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info);\n }\n }\n\n },\n onchange2: function onchange2(item, value, delvalue) {\n // console.log(item);\n // console.log(value);\n // console.log(delvalue);\n if (item.length == 0) {//为空时,清空属性value\n var index,iindex,dindex = 0;\n for (var i in this.$data.classAttrList) {\n for (var j in this.$data.classAttrList[i].Attr) {\n for (var d in this.$data.classAttrList[i].Attr[j].dictitem) {\n if (delvalue[0].Name == this.$data.classAttrList[i].Attr[j].dictitem[d].Name) {\n this.$data.classAttrList[i].Attr[j].Value = \"\";\n }\n }\n }\n }\n }\n\n for (var v in item) {\n var index,iindex,dindex = 0;\n for (var i in this.$data.classAttrList) {\n for (var j in this.$data.classAttrList[i].Attr) {\n for (var d in this.$data.classAttrList[i].Attr[j].dictitem) {\n if (item[v].Name == this.$data.classAttrList[i].Attr[j].dictitem[d].Name) {\n index = i;iindex = j;dindex = d;\n }\n }\n }\n }\n var itemvalue = item[v];\n var data_attr = this.$data.classAttrList[index].Attr[iindex];\n\n __f__(\"log\", data_attr, \" at pages/modal/ms_classAttr.vue:888\");\n if (itemvalue.Name != data_attr.Value) {\n this.$data.classAttrList[index].Attr[iindex].Value = value;\n __f__(\"log\", this.$data.classAttrList[index].Attr[iindex].Value, \" at pages/modal/ms_classAttr.vue:891\");\n var eventid = this.$data.classAttrList[index].Attr[iindex].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n if (ar.Type == '字典' || ar.Type == '字典-字符串')\n req.push({ attr: ar.Name, val: itemvalue.Name });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info);\n }\n }\n }\n\n\n },\n onevent: function onevent(e) {\n // console.log(e.target);\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n // console.log(data_attr);\n if (e.target.value != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info, data_attr);\n }\n }\n\n },\n oncheck: function oncheck(e) {\n // console.log(e.target);\n var ischecked = e.target.dataset.ischeck ? false : true;\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n // console.log(data_attr);\n if (ischecked != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = ischecked;\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info);\n }\n }\n\n },\n inputValListIsDel: function inputValListIsDel(index) {\n // console.log(index);\n this.$data.inputValList.splice(index, 1); //删除tabPagejson的内容\n // console.log(this.$data.inputValList);\n },\n addresschange: function addresschange(e) {\n // console.log(e.target);\n __f__(\"log\", e.data.join(';'), \" at pages/modal/ms_classAttr.vue:1022\");\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.data.join(';');\n },\n classAttr_extButton: function classAttr_extButton(index, iindex) {\n var $this = this;\n var before_click_button = $this.$data.classAttrList[index].Attr[iindex].before_click_button;\n var button_callback = $this.$data.classAttrList[index].Attr[iindex].button_callback;\n if (!before_click_button) {\n uni.showModal({ title: \"提示\", content: \"before_click_button-event_id为空!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n if (!button_callback) {\n uni.showModal({ title: \"提示\", content: \"button_callback-event_id为空!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n var data_attr = this.$data.classAttrList[index].Attr[iindex];\n this.DataObjRunCustomEvent_Return(before_click_button, data_attr, button_callback, index, iindex);\n },\n scan_classAttr_extButton: function scan_classAttr_extButton(e) {//---------未完成-----------\n var $this = this;\n var Before_Select_Event = $this.$data.param.Scan_Code.Before_Select_Event.ID;\n var After_Select_Event = $this.$data.param.Scan_Code.After_Select_Event.ID;\n if (!Before_Select_Event) {\n uni.showModal({ title: \"提示\", content: \"选择按钮前事件为空!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n if (!After_Select_Event) {\n uni.showModal({ title: \"提示\", content: \"新增按钮后事件为空!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n // var data_attr = this.$data.classAttrList[index].Attr[iindex];\n this.DataObjRunCustomEvent_Return(Before_Select_Event, '', After_Select_Event, '', '');\n },\n classAttr_AddPer: function classAttr_AddPer(index, iindex) {\n var param = { index: index, iindex: iindex };\n var $this = this;\n uni.navigateTo({\n url: '../selpsn/index?mulit=false¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n __f__(\"log\", data, \" at pages/modal/ms_classAttr.vue:1063\");\n $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].Login + ';' + data[0].Name;\n\n var eventid = $this.$data.classAttrList[param.index].Attr[param.iindex].action;\n if (eventid) {\n eventid = eventid.trim();\n if (eventid) {\n var info = {\n eventid: eventid,\n edtype: \"4\",\n projectid: \"\",\n rclsid: \"\",\n robjid: \"\",\n userlogin: data[0].Login,\n clsid: $this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: [] };\n\n\n // var data_attr = $this.$data.classAttrList[param.index].Attr[param.iindex];\n $this.DataObjRunCustomEvent(info);\n }\n }\n } } });\n\n\n },\n classAttr_AddRef: function classAttr_AddRef(e) {\n __f__(\"log\", e.target, \" at pages/modal/ms_classAttr.vue:1092\");\n uni.showModal({ title: \"提示\", content: \"此功能还未实现!\", showCancel: false, confirmText: \"取消\" });\n // var value=this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].RelCls[e.target.value];\n // this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value=value;\n },\n classAttr_AddPrj: function classAttr_AddPrj(index, iindex) {\n var param = { index: index, iindex: iindex };\n var $this = this;\n uni.navigateTo({\n url: '../selPrj/index?relation=-1¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n // console.log(data);\n $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].ID + ';' + data[0].Name;\n\n var eventid = $this.$data.classAttrList[param.index].Attr[param.iindex].action;\n if (eventid) {\n eventid = eventid.trim();\n if (eventid) {\n var info = {\n eventid: eventid,\n edtype: \"2\",\n projectid: data[0].ID,\n rclsid: \"\",\n robjid: \"\",\n userlogin: \"\",\n clsid: $this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: [] };\n\n\n // var data_attr = $this.$data.classAttrList[param.index].Attr[param.iindex];\n $this.DataObjRunCustomEvent(info);\n }\n }\n } } });\n\n\n },\n sava: function sava() {\n if (this.$data.param.Before_OK_Event) //判断功能点参数是否有确定前脚本\n this.scan_OKDataObjRunCustomEvent(this.$data.param.Before_OK_Event.ID);else\n\n this.scan_OKDataObjRunCustomEvent(this.$data.param.After_OK_Event.ID);\n },\n add: function add() {var _this4 = this;\n uni.showLoading({\n title: \"加载中...\" });\n\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '请选择' || ar.Value == '——请选择——') ar.Value = '';\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ name: ar.Name, value: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ name: ar.Name, value: ar.Value ? '1' : '0' });else\n if (ar.Type == '字典' || ar.Type == '字典-字符串') {\n if (ar.select == true) {//判断下拉是否多选\n var valStr = \"\";\n for (var v in ar.Value) {\n if (valStr)\n valStr += \";\";\n valStr += ar.Value[v];\n }\n req.push({ name: ar.Name, value: valStr });\n } else\n req.push({ name: ar.Name, value: ar.Value });\n } else\n\n req.push({ name: ar.Name, value: ar.Value ? ar.Value : '' });\n\n if ((ar.NotEmpty == '1' || ar.notempty == true) && !ar.Value) {\n // if(ar.notEmpty=='1'){\n uni.hideLoading();\n // uni.showToast({title:ar.DispName+'不能为空!',icon:\"success\",duration:3000});\n uni.showModal({ title: \"提示\", content: ar.DispName + '不能为空!', showCancel: false, confirmText: \"取消\" });\n return;\n }\n }\n }\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.Master_Cls.ID, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.Master_Cls.ID } };\n\n\n\n var dataInfo = {\n class_id: this.$data.param.Master_Cls.ID, data_obj_id: '', masterclsid: '',\n req: JSON.stringify(req), upfile: JSON.stringify([]), post_data: JSON.stringify({}),\n compose: JSON.stringify([]), refdatastore: JSON.stringify([]), extinfo: JSON.stringify(enviroment),\n not_trigger_sys_event: '' };\n\n\n // return\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:1198\");\n this.$store.dispatch('addclassattr', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:1200\");\n uni.hideLoading();\n if (success.code == '00000') {\n var action = JSON.parse(success.data.Action);\n if (action.ret == '0') {\n if (action.result_type == '0') {\n uni.showToast({ title: action.result, icon: \"success\", duration: 3000 });\n }\n // \"{\"ret\":0, \"result_type\":0, \"result\":\"创建成功123123123\",\"info\":\"\"}\"\n }\n //刷新\n uni.redirectTo({\n url: '../modal/ms_classAttr?param=' + JSON.stringify(_this4.$data.param) + \"&titlename=\" + _this4.$data.title });\n\n // this.class_attr_init();\n } else {\n uni.showModal({ title: \"错误\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/ms_classAttr.vue:1219\");\n uni.hideLoading();\n uni.showModal({ title: \"提示\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n class_attr_init: function class_attr_init() {\n var attrlist = this.$data.classGridStyle.StyleDef.show_style;\n var newattrlist = [];\n if (this.$data.classAttrList.length > 0) {\n for (var i = 0; i < attrlist.length; i++) {\n var open = attrlist[i].open;\n var name = attrlist[i].attrgroup_name;\n var attrs = attrlist[i].attrs;\n for (var s = 0; s < this.$data.classAttrList.length; s++) {\n var clsattr = this.$data.classAttrList[s];\n if (name == clsattr.Name) {\n var attr = [];\n for (var j = 0; j < attrs.length; j++) {\n for (var l = 0; l < clsattr.Attr.length; l++) {\n var ca = clsattr.Attr[l];\n if (attrs[j].attr == ca.Name) {\n ca.action = attrs[j].action;\n ca.edit = attrs[j].edit;\n ca.notempty = attrs[j].notempty;\n ca.ext_button = attrs[j].ext_button;\n ca.button_img = attrs[j].button_img;\n ca.button_tooltip = attrs[j].button_tooltip;\n ca.before_click_button = attrs[j].before_click_button;\n ca.button_callback = attrs[j].button_callback;\n ca.hidden = attrs[j].hidden;\n ca.select = attrs[j].select == undefined ? false : attrs[j].select;\n ca.Value = \"\";\n if (ca.dictitem) {\n if (ca.select == true)\n ca.Value = []; //ca.dictitem[0].CN_S_NAME;\n else\n ca.Value = '请选择'; //ca.dictitem[0].CN_S_NAME;\n var dictitemlist = [];\n for (var d = 0; d < ca.dictitem.length; d++) {\n ca.dictitem[d].label = ca.dictitem[d].CN_S_NAME;\n ca.dictitem[d].value = ca.dictitem[d].CN_S_NAME;\n if (ca.dictitem[d].CN_C_IS_DEFAULT == '1')\n ca.Value = ca.dictitem[d].CN_S_NAME;\n }\n }\n if (ca.Type == '日期' || ca.Type == '时间') {\n var nowDate = new Date();\n var date = { year: nowDate.getFullYear(), month: nowDate.getMonth() + 1, day: nowDate.getDate() };\n ca.Value = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day);\n }\n if (ca.Type == '引用对象(多个)') {\n var relClsList = [];\n var attr_rescls = ca.RelCls.split(',');\n for (var ii in attr_rescls) {\n var rescls = attr_rescls[ii].split('|');\n relClsList.push({ id: rescls[0], name: rescls[1] });\n }\n ca.RelClsList = relClsList;\n ca.Value = '请';\n }\n if (ca.Type == '省市区')\n ca.Value = '请选择';\n if (ca.Type == '布尔值')\n ca.Value = false;\n\n attr.push(ca);\n }\n }\n }\n newattrlist.push({\n BkColor: clsattr.BkColor,\n HasAce: clsattr.HasAce,\n ImgFontStyle: clsattr.ImgFontStyle,\n Name: clsattr.Name,\n Order: clsattr.Order,\n Open: open,\n Attr: attr,\n control_style: this.$data.classGridStyle.StyleDef.control_style,\n title_p_wdith: this.$data.classGridStyle.StyleDef.title_p_wdith,\n Font: this.$data.classGridStyle.StyleDef.Font ? this.$data.classGridStyle.StyleDef.Font : {},\n Bk_Color: this.$data.classGridStyle.StyleDef.Bk_Color ? this.$data.classGridStyle.StyleDef.Bk_Color : '#FFFFFF',\n Text_Color: this.$data.classGridStyle.StyleDef.Text_Color ? this.$data.classGridStyle.StyleDef.Text_Color : '#000000' });\n\n }\n }\n }\n if (newattrlist.length > 0) {\n this.$data.classAttrList = newattrlist;\n }\n var req = [];\n if (this.$data.classGridStyle.StyleDef) {\n if (this.$data.classGridStyle.StyleDef.show_style.length > 0) {\n var attrlist = this.$data.classGridStyle.StyleDef.show_style;\n // $el.find('.attr_field').prop('readonly', true);\n // $el.find('.attr_field').prop('disabled', true);\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].attrs;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n req.push({ attr: ar.attr, value: ar.value ? ar.value : '' });\n }\n }\n }\n }\n\n var eventlist = this.$data.classGridStyle.StyleDef.event;\n if (eventlist) {\n if (eventlist.length > 0) {\n for (var i = 0; i < eventlist.length; i++) {\n if (eventlist[i].event_id == 'before_ok') {\n this.$data.edit_ok_event = eventlist[i];\n } else if (eventlist[i].event_id == 'initial') {\n this.$data.edit_inital_event = eventlist[i];\n } else if (eventlist[i].event_id == 'before_select_compose') {\n this.$data.edit_select_compose_event = eventlist[i].scrip_id;\n this.$data.edit_compose_cls_id = eventlist[i].compose_cls_id;\n }\n }\n }\n }\n // console.log(req);\n if (this.$data.edit_inital_event) {\n var eventid = this.$data.edit_inital_event.scrip_id;\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: req };\n\n this.ini_DataObjRunCustomEvent(info);\n }\n __f__(\"log\", this.$data.classGridStyle, \" at pages/modal/ms_classAttr.vue:1355\");\n __f__(\"log\", this.$data.classAttrList, \" at pages/modal/ms_classAttr.vue:1356\");\n\n } else {\n uni.showModal({ title: \"提示\", content: \"未找到可显示的的属性\", showCancel: false, confirmText: \"取消\" });\n }\n },\n subClass_attr_init: function subClass_attr_init() {\n var attrlist = this.$data.subClassGridStyle.StyleDef.show_style;\n var newattrlist = [];\n if (this.$data.subClassAttrList.length > 0) {\n for (var i = 0; i < attrlist.length; i++) {\n var open = attrlist[i].open;\n var name = attrlist[i].attrgroup_name;\n var attrs = attrlist[i].attrs;\n for (var s = 0; s < this.$data.subClassAttrList.length; s++) {\n var clsattr = this.$data.subClassAttrList[s];\n if (name == clsattr.Name) {\n var attr = [];\n for (var j = 0; j < attrs.length; j++) {\n for (var l = 0; l < clsattr.Attr.length; l++) {\n var ca = clsattr.Attr[l];\n if (attrs[j].attr == ca.Name) {\n ca.action = attrs[j].action;\n ca.edit = attrs[j].edit;\n ca.notempty = attrs[j].notempty;\n ca.ext_button = attrs[j].ext_button;\n ca.button_img = attrs[j].button_img;\n ca.button_tooltip = attrs[j].button_tooltip;\n ca.before_click_button = attrs[j].before_click_button;\n ca.button_callback = attrs[j].button_callback;\n ca.hidden = attrs[j].hidden;\n ca.select = attrs[j].select == undefined ? false : attrs[j].select;\n ca.Value = \"\";\n if (ca.dictitem) {\n if (ca.select == true)\n ca.Value = []; //ca.dictitem[0].CN_S_NAME;\n else\n ca.Value = '请选择'; //ca.dictitem[0].CN_S_NAME;\n var dictitemlist = [];\n for (var d = 0; d < ca.dictitem.length; d++) {\n ca.dictitem[d].label = ca.dictitem[d].CN_S_NAME;\n ca.dictitem[d].value = ca.dictitem[d].CN_S_NAME;\n if (ca.dictitem[d].CN_C_IS_DEFAULT == '1')\n ca.Value = ca.dictitem[d].CN_S_NAME;\n }\n }\n if (ca.Type == '日期' || ca.Type == '时间') {\n var nowDate = new Date();\n var date = { year: nowDate.getFullYear(), month: nowDate.getMonth() + 1, day: nowDate.getDate() };\n ca.Value = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day);\n }\n if (ca.Type == '引用对象(多个)') {\n var relClsList = [];\n var attr_rescls = ca.RelCls.split(',');\n for (var ii in attr_rescls) {\n var rescls = attr_rescls[ii].split('|');\n relClsList.push({ id: rescls[0], name: rescls[1] });\n }\n ca.RelClsList = relClsList;\n ca.Value = '请';\n }\n if (ca.Type == '省市区')\n ca.Value = '请选择';\n if (ca.Type == '布尔值')\n ca.Value = false;\n\n attr.push(ca);\n }\n }\n }\n newattrlist.push({\n BkColor: clsattr.BkColor,\n HasAce: clsattr.HasAce,\n ImgFontStyle: clsattr.ImgFontStyle,\n Name: clsattr.Name,\n Order: clsattr.Order,\n Open: open,\n Attr: attr,\n control_style: this.$data.subClassGridStyle.StyleDef.control_style,\n title_p_wdith: this.$data.subClassGridStyle.StyleDef.title_p_wdith,\n Font: this.$data.subClassGridStyle.StyleDef.Font ? this.$data.subClassGridStyle.StyleDef.Font : {},\n Bk_Color: this.$data.subClassGridStyle.StyleDef.Bk_Color ? this.$data.subClassGridStyle.StyleDef.Bk_Color : '#FFFFFF',\n Text_Color: this.$data.subClassGridStyle.StyleDef.Text_Color ? this.$data.subClassGridStyle.StyleDef.Text_Color : '#000000' });\n\n }\n }\n }\n if (newattrlist.length > 0) {\n this.$data.subClassAttrList = newattrlist;\n }\n var req = [];\n if (this.$data.subClassGridStyle.StyleDef) {\n if (this.$data.subClassGridStyle.StyleDef.show_style.length > 0) {\n var attrlist = this.$data.subClassGridStyle.StyleDef.show_style;\n // $el.find('.attr_field').prop('readonly', true);\n // $el.find('.attr_field').prop('disabled', true);\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].attrs;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n req.push({ attr: ar.attr, value: ar.value ? ar.value : '' });\n }\n }\n }\n }\n\n var eventlist = this.$data.subClassGridStyle.StyleDef.event;\n if (eventlist) {\n if (eventlist.length > 0) {\n for (var i = 0; i < eventlist.length; i++) {\n if (eventlist[i].event_id == 'before_ok') {\n this.$data.edit_ok_event = eventlist[i];\n } else if (eventlist[i].event_id == 'initial') {\n this.$data.edit_inital_event = eventlist[i];\n } else if (eventlist[i].event_id == 'before_select_compose') {\n this.$data.edit_select_compose_event = eventlist[i].scrip_id;\n this.$data.edit_compose_cls_id = eventlist[i].compose_cls_id;\n }\n }\n }\n }\n // console.log(req);\n if (this.$data.edit_inital_event) {\n var eventid = this.$data.edit_inital_event.scrip_id;\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Sub_Cls.ID,\n objid: \"\",\n attr: req };\n\n this.scan_ini_DataObjRunCustomEvent(info);\n }\n __f__(\"log\", this.$data.subClassGridStyle, \" at pages/modal/ms_classAttr.vue:1493\");\n __f__(\"log\", this.$data.subClassAttrList, \" at pages/modal/ms_classAttr.vue:1494\");\n\n } else {\n uni.showModal({ title: \"提示\", content: \"未找到可显示的的属性\", showCancel: false, confirmText: \"取消\" });\n }\n },\n ini_DataObjRunCustomEvent: function ini_DataObjRunCustomEvent(info) {var _this5 = this;\n var param = {\n EditStyle: this.$data.param.Master_Cls.View_Style.Name,\n ViewStyle: this.$data.param.Master_Cls.View_Style.Name,\n NotTriggerSysEvent: 0,\n enviroment: {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.Master_Cls.ID, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.Master_Cls.ID // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } } };\n\n\n var inputparameter = '';\n var global_attr = '';\n\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid,\n rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(param), inputparameter: inputparameter, global_attr: global_attr };\n\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:1524\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:1526\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n if (actionlist) {\n for (var j = 0; j < actionlist.length; j++) {\n var action = actionlist[j];\n var action_type = action.action_type;\n var value = action.value;\n if (action_type == 'set_dlg_attr') {\n if (value) {\n var val = value;\n if (typeof value == 'string') {\n val = JSON.parse(value);\n }\n __f__(\"log\", val, \" at pages/modal/ms_classAttr.vue:1541\");\n for (var i = 0; i < val.length; i++) {\n for (var a = 0; a < _this5.$data.classAttrList.length; a++) {\n for (var l = 0; l < _this5.$data.classAttrList[a].Attr.length; l++) {\n var ca = _this5.$data.classAttrList[a].Attr[l];\n if (val[i].attr == ca.Name) {\n if (ca.Type == '字典' || ca.Type == '字典-字符串') {\n var dictItemList = [];\n for (var d in val[i].choice_list) {\n var val = val[i].choice_list[d];\n dictItemList.push({ \"CN_S_NAME\": val, \"Name\": val, \"label\": val, \"value\": val });\n\n }\n ca.dictitem = dictItemList;\n // attr[j].dictitem = val[i].choice_list;\n } else {\n // ca.value = val[i].value;\n }\n }\n }\n }\n\n var length = 0;\n if (!_this5.$data.refdatastore.filter(function (s) {\n return val[i].attr == s.attr;\n }).length) {\n length = 1;\n _this5.$data.refdatastore.push(val[i]);\n }\n if (length == 0) {\n for (var j = 0; j < _this5.$data.refdatastore.length; j++) {\n if (_this5.$data.refdatastore[j].attr == val[i].attr) {\n _this5.$data.refdatastore[j].value = val[i].value;\n }\n }\n }\n }\n }\n }\n if (action_type == 'open_select_userdlg') {\n uni.showModal({ title: \"错误2.2\", content: \"open_select_userdlg这个action_type还未处理!\", showCancel: false, confirmText: \"取消\" });\n }\n }\n }\n\n } else {\n uni.showModal({ title: \"错误2\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误2.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n DataObjRunCustomEvent: function DataObjRunCustomEvent(info, data_attr) {\n var $this = this;\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.Master_Cls.ID, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.Master_Cls.ID // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } };\n\n enviroment.edit_dlg = {\n type: 'small', //小窗口\n class_id: this.$data.param.Master_Cls.ID //当前数据类id\n };\n if (data_attr) {\n enviroment.edit_dlg.form_control = { //所属的表单控件\n name: data_attr.Name, //字段属性\n text: data_attr.DispName, //显示文本\n group_name: data_attr.GroupName, //属性组\n type: data_attr.Type, //字段类型\n readonly: data_attr.ReadOnly, //是否只读\n button_img: data_attr.button_img, //引用按钮的图标\n button_tooltip: data_attr.button_tooltip //引用按钮的tooltip\n };\n }\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid.replace('{', '').replace('}', ''),\n rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), inputparameter: '', global_attr: JSON.stringify(this.$data.global_attr) };\n\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:1626\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:1628\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n\n if (actionlist) {\n __f__(\"log\", actionlist, \" at pages/modal/ms_classAttr.vue:1634\");\n for (var i = 0; i < actionlist.length; i++) {\n var action = actionlist[i];\n if (action.action_type == 'set_dlg_attr') {\n var result = action.value;\n for (var i = 0; i < result.length; i++) {\n if (result[i].choice_list) {\n for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n if (attr[j].Name == result[i].attr) {\n if (attr[j].Type == '字典' || attr[j].Type == '字典-字符串') {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({ \"CN_S_NAME\": val, \"Name\": val, \"label\": val, \"value\": val });\n }\n attr[j].dictitem = dictItemList;\n // attr[j].dictitem = result[i].choice_list;\n }\n }\n }\n }\n }\n for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n __f__(\"log\", attr[j].Name + '==' + result[i].attr, \" at pages/modal/ms_classAttr.vue:1661\");\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n }\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n } else if (data.action[i].action_type == 'set_global_attr') {\n $this.$data.global_attr = data.action[i].value || [];\n }\n }\n }\n\n if (data.result) {\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n }\n }\n }\n\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n }\n } else {\n uni.showModal({ title: \"错误3\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误3.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n OKDataObjRunCustomEvent: function OKDataObjRunCustomEvent() {var _this6 = this;\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.Master_Cls.ID, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.Master_Cls.ID // button=bottom时 master的cls_id\n } };\n\n\n\n var eventid = this.$data.edit_ok_event.scrip_id;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '请选择' || ar.Value == '——请选择——') ar.Value = '';\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, value: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, value: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, value: ar.Value });\n }\n }\n\n if (this.$data.refdatastore.length > 0) {\n for (var i = 0; i < this.$data.refdatastore.length; i++) {\n if (!req.filter(function (s) {\n return this.$data.refdatastore[i].attr == s.name;\n }).length) {\n length = 1;\n req.push({ 'attr': this.$data.refdatastore[i].attr, 'value': this.$data.refdatastore[i].value });\n }\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: req };\n\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid, rclsid: info.rclsid,\n robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), global_attr: JSON.stringify(this.$data.global_attr) };\n\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:1781\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:1783\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n // self.class_attr_ele.find('.attr_field[data-field=\"' + result[i].attr + '\"]').val(result[i].value).data('val', result[i].value);\n var length = 0;\n if (!_this6.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n _this6.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < _this6.$data.refdatastore.length; j++) {\n if (_this6.$data.refdatastore[j].attr == result[i].attr) {\n _this6.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n\n _this6.add();\n } else {\n uni.showModal({ title: \"错误4\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误4.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n DataObjRunCustomEvent_Return: function DataObjRunCustomEvent_Return(eventid, data_attr, button_callback, index, iindex) {var _this7 = this;\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.Master_Cls.ID, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.Master_Cls.ID // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } };\n\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, value: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, value: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, value: ar.Value });\n }\n }\n if (this.$data.refdatastore.length > 0) {\n for (var i = 0; i < this.$data.refdatastore.length; i++) {\n if (!req.filter(function (s) {\n return this.$data.refdatastore[i].attr == s.name;\n }).length) {\n length = 1;\n req.push({ 'attr': this.$data.refdatastore[i].attr, 'value': this.$data.refdatastore[i].value });\n }\n }\n }\n var extinfo = enviroment;\n extinfo.edit_dlg = {\n type: 'small', //小窗口\n class_id: this.$data.param.Master_Cls.ID //当前数据类id\n };\n if (data_attr) {\n extinfo.edit_dlg.form_control = { //所属的表单控件\n name: data_attr.Name, //字段属性\n text: data_attr.DispName, //显示文本\n group_name: data_attr.GroupName, //属性组\n type: data_attr.Type, //字段类型\n readonly: data_attr.ReadOnly, //是否只读\n button_img: data_attr.button_img, //引用按钮的图标\n button_tooltip: data_attr.button_tooltip //引用按钮的tooltip\n };\n }\n var dataInfo = {\n edtype: \"0\", eventid: eventid, projectid: '', rclsid: '', robjid: '', userlogin: '',\n clsid: this.$data.param.Master_Cls.ID, objid: '', attr: JSON.stringify(req),\n extinfo: JSON.stringify(extinfo), global_attr: JSON.stringify(this.$data.global_attr) };\n\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:1872\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:1874\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n if (data != \"\") {\n\n var actions = data.action;\n __f__(\"log\", actions, \" at pages/modal/ms_classAttr.vue:1880\");\n if (actions) {\n for (var i = 0; i < actions.length; i++) {\n var action = actions[i];\n var val = action.value;\n var enviroment = JSON.stringify(enviroment);\n\n if (action.action_type == 'open_panel') {\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!' });\n\n d.show();\n } else\n if (action.action_type == 'open_select_userdlg') {\n var style = val.style;\n // style == 'user' ? '选择人员' : style == 'department' ? '选择部门' : style == 'role' ? '选择角色' : ''\n var $this = _this7;\n var param = {\n index: index,\n iindex: iindex,\n button_callback: button_callback,\n req: req,\n data_attr: data_attr };\n\n uni.navigateTo({\n url: '../selpsn/index?mulit=false¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n __f__(\"log\", data, \" at pages/modal/ms_classAttr.vue:1910\");\n var callback_eventid = param.button_callback.trim();\n var info = {\n eventid: callback_eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: $this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: param.req,\n inputparameter: data };\n\n $this.DataObjRunCustomEvent(info, param.data_attr);\n } } });\n\n\n } else\n if (action.action_type == 'open_data_query_dlg') {\n\n } else\n if (action.action_type == 'open_common_dlg') {\n var value = action.value;\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!' });\n\n d.show();\n } else\n if (action.action_type == 'open_project_query_dlg') {\n //console.log(action.value.select_range);\n //console.log(action.value.mulit_select);\n var priRel = '-1';\n if (action.value.select_range == '全部相关')\n priRel = '0';else\n if (action.value.select_range == '我负责的项目')\n priRel = '1';else\n if (action.value.select_range == '我创建的')\n priRel = '2';else\n if (action.value.select_range == '我参与的' || action.value.select_range == '我参加的')\n priRel = '3';else\n if (action.value.select_range == '我关注的')\n priRel = '4';else\n if (action.value.select_range == '我下属的项目')\n priRel = '5';\n\n var $this = _this7;\n var param_ = {\n index: index,\n iindex: iindex,\n button_callback: button_callback,\n req: req };\n\n uni.navigateTo({\n url: '../selPrj/index?relation=' + priRel + '¶m=' + JSON.stringify(param_),\n events: {\n AddPer: function AddPer(data, param) {\n $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].ID + ';' + data[0].Name;\n var callback_eventid = param.button_callback.trim();\n if (callback_eventid) {\n var info = {\n eventid: callback_eventid,\n edtype: \"2\",\n projectid: data[0].ID,\n rclsid: \"\",\n robjid: \"\",\n userlogin: \"\",\n clsid: $this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: param.req };\n\n\n $this.DataObjRunCustomEvent(info);\n }\n } } });\n\n\n } else {\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!' });\n\n d.show();\n }\n }\n }\n } else {\n uni.showModal({ title: \"提示5.2\", content: '调用 before_click_button 脚本返回空,event_id' + eventid, showCancel: false, confirmText: \"取消\" });\n }\n } else {\n uni.showModal({ title: \"错误5\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"提示5.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n scan_ini_DataObjRunCustomEvent: function scan_ini_DataObjRunCustomEvent(info) {var _this8 = this;\n var param = {\n EditStyle: this.$data.param.Sub_Cls.View_Style.Name,\n ViewStyle: this.$data.param.Sub_Cls.View_Style.Name,\n NotTriggerSysEvent: 0,\n enviroment: {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.Sub_Cls.ID, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.Sub_Cls.ID // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } } };\n\n\n var inputparameter = '';\n var global_attr = '';\n\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid,\n rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(param), inputparameter: inputparameter, global_attr: global_attr };\n\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:2033\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:2035\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n if (actionlist) {\n for (var j = 0; j < actionlist.length; j++) {\n var action = actionlist[j];\n var action_type = action.action_type;\n var value = action.value;\n if (action_type == 'set_dlg_attr') {\n if (value) {\n var val = value;\n if (typeof value == 'string') {\n val = JSON.parse(value);\n }\n __f__(\"log\", val, \" at pages/modal/ms_classAttr.vue:2050\");\n for (var i = 0; i < val.length; i++) {\n for (var a = 0; a < _this8.$data.subClassAttrList.length; a++) {\n for (var l = 0; l < _this8.$data.subClassAttrList[a].Attr.length; l++) {\n var ca = _this8.$data.subClassAttrList[a].Attr[l];\n if (val[i].attr == ca.Name) {\n if (ca.Type == '字典' || ca.Type == '字典-字符串') {\n var dictItemList = [];\n for (var d in val[i].choice_list) {\n var val = val[i].choice_list[d];\n dictItemList.push({ \"CN_S_NAME\": val, \"Name\": val, \"label\": val, \"value\": val });\n\n }\n ca.dictitem = dictItemList;\n // attr[j].dictitem = val[i].choice_list;\n } else {\n // ca.value = val[i].value;\n }\n }\n }\n }\n\n var length = 0;\n if (!_this8.$data.refdatastore.filter(function (s) {\n return val[i].attr == s.attr;\n }).length) {\n length = 1;\n _this8.$data.refdatastore.push(val[i]);\n }\n if (length == 0) {\n for (var j = 0; j < _this8.$data.refdatastore.length; j++) {\n if (_this8.$data.refdatastore[j].attr == val[i].attr) {\n _this8.$data.refdatastore[j].value = val[i].value;\n }\n }\n }\n }\n }\n }\n if (action_type == 'open_select_userdlg') {\n uni.showModal({ title: \"错误6.2\", content: \"open_select_userdlg这个action_type还未处理!\", showCancel: false, confirmText: \"取消\" });\n }\n }\n }\n\n } else {\n uni.showModal({ title: \"错误6\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误6.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n scan_DataObjRunCustomEvent: function scan_DataObjRunCustomEvent(info, data_attr) {var _this9 = this;\n var $this = this;\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.Sub_Cls.ID, // 功能点从数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.Sub_Cls.ID // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } };\n\n enviroment.edit_dlg = {\n type: 'small', //小窗口\n class_id: this.$data.param.Sub_Cls.ID //当前数据类id\n };\n if (data_attr) {\n enviroment.edit_dlg.form_control = { //所属的表单控件\n name: data_attr.Name, //字段属性\n text: data_attr.DispName, //显示文本\n group_name: data_attr.GroupName, //属性组\n type: data_attr.Type, //字段类型\n readonly: data_attr.ReadOnly, //是否只读\n button_img: data_attr.button_img, //引用按钮的图标\n button_tooltip: data_attr.button_tooltip //引用按钮的tooltip\n };\n }\n\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid.replace('{', '').replace('}', ''),\n rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), inputparameter: JSON.stringify(info.inputParamter), global_attr: JSON.stringify(this.$data.global_attr) };\n\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:2136\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:2138\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n\n if (actionlist) {\n __f__(\"log\", actionlist, \" at pages/modal/ms_classAttr.vue:2144\");\n for (var i = 0; i < actionlist.length; i++) {\n var action = actionlist[i];\n if (action.action_type == 'set_dlg_attr') {\n var result = action.value;\n for (var i = 0; i < result.length; i++) {\n if (result[i].choice_list) {\n for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n for (var c = 0; c < $this.$data.subPanelList[s].subClassAttrList.length; c++) {\n var attr = $this.$data.subPanelList[s].subClassAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n if (attr[j].Name == result[i].attr) {\n if (attr[j].Type == '字典' || attr[j].Type == '字典-字符串') {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({ \"CN_S_NAME\": val, \"Name\": val, \"label\": val, \"value\": val });\n }\n attr[j].dictitem = dictItemList;\n // attr[j].dictitem = result[i].choice_list;\n }\n }\n }\n }\n }\n }\n for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n for (var c = 0; c < $this.$data.subPanelList[s].subClassAttrList.length; c++) {\n var attr = $this.$data.subPanelList[s].subClassAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n __f__(\"log\", attr[j].Name + '==' + result[i].attr, \" at pages/modal/ms_classAttr.vue:2174\");\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n }\n }\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n } else if (data.action[i].action_type == 'set_global_attr') {\n $this.$data.global_attr = data.action[i].value || [];\n } else if (data.action[i].action_type == 'add_subcls_panel') {\n var result = action.value;\n var list_1 = JSON.parse(JSON.stringify(_this9.$data.subClassAttrList));\n $this.$data.subPanelList.push({\n scanCodeVal: $this.$data.scanCodeVal,\n subClassAttr: list_1 });\n\n for (var i = 0; i < result.length; i++) {\n for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n if ($this.$data.subPanelList[s].scanCodeVal == $this.$data.scanCodeVal) {\n var _subClassAttr = $this.$data.subPanelList[s].subClassAttr;\n for (var c = 0; c < _subClassAttr.length; c++) {\n var attr = _subClassAttr[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n // console.log(attr[j].Name+'=='+result[i].attr);\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n }\n }\n }\n\n // $this.$data.subPanelList[s].subClassAttr=list_1;\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n }\n }\n }\n\n if (data.result) {\n var _list_ = JSON.parse(JSON.stringify(_this9.$data.subClassAttrList));\n $this.$data.subPanelList.push({\n scanCodeVal: $this.$data.scanCodeVal,\n subClassAttr: _list_ });\n\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n if ($this.$data.subPanelList[s].scanCodeVal == $this.$data.scanCodeVal) {\n var _subClassAttr = $this.$data.subPanelList[s].subClassAttr;\n for (var c = 0; c < _subClassAttr.length; c++) {\n var attr = _subClassAttr[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n // console.log(attr[j].Name+'=='+result[i].attr);\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n }\n }\n }\n }\n }\n\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n }\n } else {\n uni.showModal({ title: \"错误7\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误7.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n scan_OKDataObjRunCustomEvent: function scan_OKDataObjRunCustomEvent(eventID) {\n uni.showLoading({\n title: \"加载中...\" });\n\n var $this = this;\n var req = [];\n var attrlist = $this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '请选择' || ar.Value == '——请选择——') ar.Value = '';\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, value: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, value: ar.Value ? '1' : '0' });else\n if (ar.Type == '字典' || ar.Type == '字典-字符串') {\n if (ar.select == true) {//判断下拉是否多选\n var valStr = \"\";\n for (var v in ar.Value) {\n if (valStr)\n valStr += \";\";\n valStr += ar.Value[v];\n }\n req.push({ attr: ar.Name, value: valStr });\n } else\n req.push({ attr: ar.Name, value: ar.Value });\n } else\n\n req.push({ attr: ar.Name, value: ar.Value ? ar.Value : '' });\n\n if ((ar.NotEmpty == '1' || ar.notempty == true) && !ar.Value) {\n // if(ar.notEmpty=='1'){\n uni.hideLoading();\n // uni.showToast({title:ar.DispName+'不能为空!',icon:\"success\",duration:3000});\n uni.showModal({ title: \"提示\", content: ar.DispName + '不能为空!', showCancel: false, confirmText: \"取消\" });\n return;\n }\n }\n }\n var objects = [];\n var subPanelList = $this.$data.subPanelList;\n for (var s = 0; s < subPanelList.length; s++) {\n var sub_req = [];\n for (var i = 0; i < subPanelList[s].subClassAttr.length; i++) {\n var attr = subPanelList[s].subClassAttr[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '请选择' || ar.Value == '——请选择——') ar.Value = '';\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n sub_req.push({ attr: ar.Name, value: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n sub_req.push({ attr: ar.Name, value: ar.Value ? '1' : '0' });else\n if (ar.Type == '字典' || ar.Type == '字典-字符串') {\n if (ar.select == true) {//判断下拉是否多选\n var valStr = \"\";\n for (var v in ar.Value) {\n if (valStr)\n valStr += \";\";\n valStr += ar.Value[v];\n }\n sub_req.push({ attr: ar.Name, value: valStr });\n } else\n sub_req.push({ attr: ar.Name, value: ar.Value });\n } else\n\n sub_req.push({ attr: ar.Name, value: ar.Value ? ar.Value : '' });\n\n if ((ar.NotEmpty == '1' || ar.notempty == true) && !ar.Value) {\n // if(ar.notEmpty=='1'){\n uni.hideLoading();\n // uni.showToast({title:ar.DispName+'不能为空!',icon:\"success\",duration:3000});\n uni.showModal({ title: \"提示\", content: ar.DispName + '不能为空!', showCancel: false, confirmText: \"取消\" });\n return;\n }\n }\n }\n objects.push({\n obj_id: subPanelList[s].scanCodeVal,\n obj_attrs: sub_req });\n\n }\n var dataJson = {\n master_cls: {\n cls_name: $this.$data.param.Master_Cls.Name,\n obj_attrs: req },\n\n input_3037: $this.$data.scanCodeVal, //扫码内容\n op_type: $this.$data.param.OperationType, //作业类型定义\n sub_cls: {\n cls_name: $this.$data.param.Sub_Cls.Name,\n objects: objects } };\n\n\n __f__(\"log\", JSON.stringify(dataJson), \" at pages/modal/ms_classAttr.vue:2386\");\n var dataInfo = {\n edtype: \"0\", eventid: eventID, projectid: '', rclsid: '', robjid: '', userlogin: '',\n clsid: $this.$data.param.Sub_Cls.ID, objid: '', attr: JSON.stringify([]), extinfo: JSON.stringify([]),\n global_attr: JSON.stringify($this.$data.global_attr), dataJson: JSON.stringify(dataJson) };\n\n // console.log(JSON.stringify(dataInfo));\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:2393\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:2395\");\n uni.hideLoading();\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n // self.class_attr_ele.find('.attr_field[data-field=\"' + result[i].attr + '\"]').val(result[i].value).data('val', result[i].value);\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n\n if (eventID != $this.$data.param.After_OK_Event.ID)\n $this.scan_OKDataObjRunCustomEvent($this.$data.param.After_OK_Event.ID);else\n {\n //刷新\n uni.redirectTo({\n url: '../modal/ms_classAttr?param=' + JSON.stringify($this.$data.param) + \"&titlename=\" + $this.$data.title });\n\n }\n } else {\n uni.showModal({ title: \"错误8\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.hideLoading();\n uni.showModal({ title: \"错误8.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 13)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvbXNfY2xhc3NBdHRyLnZ1ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ2xCQSxxSDtBQUNBO0FBQ0E7QUFDQSx5Q0FEQSxFQURBOztBQUlBLE1BSkEsa0JBSUE7QUFDQTtBQUNBLGlCQURBO0FBRUEsZUFGQTtBQUdBLHVCQUhBO0FBSUEsd0JBSkE7QUFLQSwyQkFMQSxFQUtBO0FBQ0EsdUJBTkEsRUFNQTtBQUNBLG1DQVBBLEVBT0E7QUFDQSw2QkFSQTtBQVNBLHFCQVRBO0FBVUEsc0JBVkEsRUFVQTtBQUNBLHFCQVhBO0FBWUEsMEJBWkE7QUFhQSxzQkFi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Q0FGQSxFQUVBO0FBQ0EseUNBSEEsRUFHQTtBQUNBLDhCQUpBLEVBSUE7QUFDQSxzQ0FMQSxFQUtBO0FBQ0EsMENBTkEsRUFNQTtBQUNBLGtEQVBBLENBT0E7QUFQQTtBQVNBOztBQUVBO0FBQ0EsMkJBREEsRUFDQSxxQkFEQSxFQUNBLDJEQURBO0FBRUEsMkJBRkEsRUFFQSxtQkFGQSxFQUVBLHlCQUZBLEVBRUEsaUJBRkEsRUFFQSxpQkFGQTtBQUdBLHVDQUhBLEVBR0EsbUNBSEEsRUFHQSxrREFIQSxFQUdBLG1EQUhBOztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBRkEsRUFFQSxNQUZBLEVBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFqREEsTUFpREE7QUFDQTtBQUNBLGVBRkEsTUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQURBO0FBRUEsc0NBRkE7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBRkEsRUFFQSxNQUZBLEVBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQURBO0FBRUEsa0NBRkE7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFGQSxFQUVBLE1BRkEsRUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBN0lBLE1BNklBO0FBQ0E7QUFDQTtBQUNBLE9BbEpBLEVBa0pBLEtBbEpBLENBa0pBO0FBQ0E7QUFDQTtBQUNBLE9BckpBO0FBc0pBLEtBbGtEQTtBQW1rREEsZ0NBbmtEQSx3Q0Fta0RBLE9BbmtEQSxFQW1rREE7QUFDQTtBQUNBLHVCQURBOztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1RUFEQTtBQUVBO0FBQ0EsbUVBREE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQVJBO0FBU0E7QUFDQSxXQVhBOztBQWFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZFQURBO0FBRUE7QUFDQSx5RUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBUkE7QUFTQTtBQUNBLGFBWEE7O0FBYUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FEQTtBQUVBLDRCQUZBOztBQUlBO0FBQ0E7QUFDQTtBQUNBLHFEQURBO0FBRUEsd0JBRkEsRUFEQTs7QUFLQSwyQ0FMQSxFQUtBO0FBQ0EsZ0RBTkEsRUFNQTtBQUNBO0FBQ0Esa0RBREE7QUFFQSwwQkFGQSxFQVBBOzs7QUFZQTtBQUNBO0FBQ0EsbUJBREEsRUFDQSxnQkFEQSxFQUNBLGFBREEsRUFDQSxVQURBLEVBQ0EsVUFEQSxFQUNBLGFBREE7QUFFQSwyQ0FGQSxFQUVBLFNBRkEsRUFFQSx3QkFGQSxFQUVBLDJCQUZBO0FBR0EsNERBSEEsRUFHQSxrQ0FIQTs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBRkEsRUFFQSxNQUZBLEVBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0ZBREE7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5SEFEQTs7QUFHQTtBQUNBLFNBN0JBLE1BNkJBO0FBQ0E7QUFDQTtBQUNBLE9BbkNBLEVBbUNBLEtBbkNBLENBbUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0F2Q0E7QUF3Q0EsS0FydERBLEVBM0ZBLEUiLCJmaWxlIjoiNjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8c3R5bGU+XHJcblx0LmNsYXNzX2F0dHJfdGl0bGUge1xyXG5cdFx0Zm9udC1zaXplOiA0NHJweDtcclxuXHQgICAgcGFkZGluZy1ib3R0b206IDIycnB4O1xyXG5cdCAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0fVxyXG5cdC5jbGFzc19hdHRyX3RpdGxlIC50aXRsZV9saW5lIHtcclxuXHQgICAgYm9yZGVyLWJvdHRvbTogMnJweCBzb2xpZCAjYWFhO1xyXG5cdCAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0ICAgIGJvdHRvbTogLTUwcnB4O1xyXG5cdCAgICB3aWR0aDogY2FsYygxMDAlIC0gMjkwcnB4KTtcclxuXHQgICAgbWFyZ2luLWxlZnQ6IDEwMHB4O1xyXG5cdH1cclxuXHQuY2xhc3NfYXR0cl90aXRsZSAudGl0bGVfaWNvbiB7XHJcblx0ICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuXHQgICAgd2lkdGg6IDEwMHJweDtcclxuXHRcdGxpbmUtaGVpZ2h0OiA2NHJweDtcclxuXHQgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdCAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG5cdCAgICBwYWRkaW5nLXRvcDogMTBycHg7ICAgIFxyXG5cdFx0cGFkZGluZy1sZWZ0OiAyMHJweDtcclxuXHQgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdCAgICBjb2xvcjogI2ZmZjtcclxuXHR9XHJcblx0LmNsYXNzX2F0dHJfdGl0bGUgaSB7XHJcblx0ICAgIGNvbG9yOiAjMmM2YWEwIWltcG9ydGFudDtcclxuXHR9XHJcblx0LmNsYXNzX2F0dHJfdGl0bGUgLnRpdGxlX2ljb24gaSB7XHJcblx0ICAgIGZvbnQtc2l6ZTogODBycHg7XHJcblx0fVxyXG5cdC5jbGFzc19hdHRyX3RpdGxlIC50aXRsZSB7XHJcblx0ICAgIHBhZGRpbmctcmlnaHQ6IDIycnB4O1xyXG5cdCAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0ICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcblx0ICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHQgICAgYm90dG9tOiAtOHJweDtcclxuXHR9XHJcblx0LmNsYXNzX2F0dHJfdGl0bGUgLmFycm93IHtcclxuXHQgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0dG9wOiA2cnB4O1xyXG5cdFx0cmlnaHQ6IDMwcnB4O1xyXG5cdFx0Zm9udC1zaXplOiA2MHJweDtcclxuXHR9XHJcblx0aW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xyXG5cdFx0Zm9udC1zaXplOiAxMnJweDtcclxuXHR9XHJcblx0dGV4dGFyZWF7XHJcblx0XHR3aWR0aDogOTglO1xyXG5cdFx0Ym9yZGVyOiAxcHggc29saWQgI2Q1ZDVkNTtcclxuXHRcdHBhZGRpbmc6IDEwcnB4IDhycHggMTJycHg7XHJcblx0XHRiYWNrZ3JvdW5kOiAjRkZGO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xyXG5cdFx0Zm9udC1zaXplOiAzNHJweDtcclxuXHRcdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG5cdFx0Ym94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xyXG5cdFx0dHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xcztcclxuXHRcdGNvbG9yOiAjMDQ2ZGIzO1xyXG5cdFx0bWFyZ2luLXRvcDogNHB4O1xyXG5cdH1cclxuXHRpbnB1dHtcclxuXHRcdGJvcmRlcjogMXB4IHNvbGlkICNkNWQ1ZDU7XHJcblx0XHR3aWR0aDogOTglO1xyXG5cdFx0aGVpZ2h0OiA1MnJweDtcclxuXHRcdGJhY2tncm91bmQ6ICNGRkY7XHJcblx0XHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XHJcblx0XHRjb2xvcjogIzA0NmRiMztcclxuXHRcdHBhZGRpbmc6IDEwcnB4IDhycHggMTJycHg7XHJcblx0XHRmb250LXNpemU6IDM0cnB4O1xyXG5cdFx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcblx0XHRib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XHJcblx0XHR0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjFzO1xyXG5cdFx0bWFyZ2luLXRvcDogNHJweDtcclxuXHR9XHJcblx0LnNlbGVjdHsgICAgXHJcblx0XHR3aWR0aDogMjBweDtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdG9wYWNpdHk6IDA7XHJcblx0fVxyXG5cdC5jbGFzc19hdHRyX2JvZHkgLmZvcm0tZ3JvdXAge1xyXG5cdFx0bWFyZ2luOiAyMHJweCAzMHJweDtcclxuXHQgICAgLyogbWFyZ2luLWxlZnQ6IC0xMnB4O1xyXG5cdCAgICBtYXJnaW4tcmlnaHQ6IC0xMnB4OyAqL1xyXG5cdH1cclxuXHQuc3ViY2xhc3NfYXR0cl9ib2R5IC5mb3JtLWdyb3VwIHtcclxuXHRcdG1hcmdpbjogMjBycHggMTBycHg7XHJcblx0ICAgIC8qIG1hcmdpbi1sZWZ0OiAtMTJweDtcclxuXHQgICAgbWFyZ2luLXJpZ2h0OiAtMTJweDsgKi9cclxuXHR9XHJcblx0LmZvcm0tZ3JvdXAgPiBsYWJlbFtjbGFzcyo9XCJjb2wtXCJdIHtcclxuXHQgICAgbWFyZ2luLWJvdHRvbTogOHJweDtcclxuXHRcdGZvbnQtc2l6ZTogMzJycHg7XHJcblx0fVxyXG5cdC5mb3JtLWdyb3VwIGxhYmVsIHtcclxuXHQgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuXHQgICAgbGluZS1oZWlnaHQ6IDYwcnB4O1xyXG5cdH1cclxuXHQubm8tcGFkZGluZy1yaWdodCB7XHJcblx0ICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDtcclxuXHR9XHJcblx0LmNvbC14cy0xMiB7XHJcblx0ICAgIHdpZHRoOiAxMDAlO1xyXG5cdH1cclxuXHQudHhfdGl0bGV7XHJcblx0XHRmb250LXNpemU6IDMycnB4O1xyXG5cdH1cclxuXHQudHhfdGl0bGUye1xyXG5cdFx0Zm9udC1zaXplOiAzMnJweDtcclxuXHRcdHRleHQtYWxpZ246IHJpZ2h0O1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0dmVydGljYWwtYWxpZ246IC0ycHg7XHJcblx0fVxyXG5cdC50ZXh0LXJpZ2h0e1xyXG5cdFx0bWFyZ2luLXJpZ2h0OiAyMHJweDtcclxuXHRcdG1hcmdpbi10b3A6IC02cnB4O1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0ZmxvYXQ6IHJpZ2h0O1xyXG5cdFx0Zm9udC1zaXplOiA0NHJweDtcclxuXHR9XHJcblx0LnRleHQtcmlnaHQyIHtcclxuXHRcdG1hcmdpbjogMDtcclxuXHRcdHZlcnRpY2FsLWFsaWduOiAtNHB4O1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDlweDtcclxuXHRcdGZsb2F0OiBub25lO1xyXG5cdFx0Zm9udC1zaXplOiA0NHJweDtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHR9XHJcblx0LnNlY3Rpb25faXB1dHtcclxuXHRcdGJvcmRlcjogMXB4IHNvbGlkICNkNWQ1ZDU7XHJcblx0XHR3aWR0aDogOTglO1xyXG5cdFx0aGVpZ2h0OiA2MnJweDtcclxuXHRcdGJhY2tncm91bmQ6ICNGRkY7XHJcblx0XHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XHJcblx0XHRjb2xvcjogIzA0NmRiMztcclxuXHRcdHBhZGRpbmc6IDEwcnB4IDhycHggMTBycHg7XHJcblx0XHRmb250LXNpemU6IDM0cnB4O1xyXG5cdFx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcblx0XHRib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XHJcblx0XHR0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjFzO1xyXG5cdH1cclxuXHQuZGF0ZV9pcHV0e1xyXG5cdFx0Ym9yZGVyOiAxcHggc29saWQgI2Q1ZDVkNTtcclxuXHRcdC8qIHdpZHRoOiA5OCU7ICovXHJcblx0XHRoZWlnaHQ6IDYycnB4O1xyXG5cdFx0YmFja2dyb3VuZDogI0ZGRjtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcclxuXHRcdGNvbG9yOiAjMDQ2ZGIzO1xyXG5cdFx0cGFkZGluZzogMTBycHggOHJweCA0cnB4O1xyXG5cdFx0Zm9udC1zaXplOiAzNHJweDtcclxuXHRcdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG5cdFx0Ym94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xyXG5cdFx0dHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xcztcclxuXHR9XHJcblx0YnV0dG9uLmJ0bl9hZGQge1xyXG5cdFx0d2lkdGg6NDkuNSU7XHJcblx0XHRtYXJnaW4tdG9wOiA1MHJweDtcclxuXHRcdHBhZGRpbmc6IDIwcnB4O1xyXG5cdFx0bGluZS1oZWlnaHQ6IDEuNTtcclxuXHRcdGJhY2tncm91bmQ6ICMyN0E2RTE7XHJcblx0XHRib3JkZXI6IG5vbmU7XHJcblx0XHRjb2xvcjogI2ZmZjtcclxuXHQgICAgZm9udC1zaXplOiAzOHJweDtcclxuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdFx0ZmxvYXQ6IHJpZ2h0O1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdH1cclxuXHRidXR0b24uYnRuX2NhbmNlbCB7XHJcblx0XHR3aWR0aDo0OS41JTtcclxuXHRcdG1hcmdpbi10b3A6IDUwcnB4O1xyXG5cdFx0cGFkZGluZzogMjBycHg7XHJcblx0XHRsaW5lLWhlaWdodDogMS41O1xyXG5cdFx0YmFja2dyb3VuZDogIzI3QTZFMTtcclxuXHRcdGJvcmRlcjogbm9uZTtcclxuXHRcdGNvbG9yOiAjZmZmO1xyXG5cdCAgICBmb250LXNpemU6IDM4cnB4O1xyXG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0XHRmbG9hdDogbGVmdDtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHR9XHJcblx0LmlfdGlzaGl7XHJcblx0XHRjb2xvcjogcmVkO1xyXG5cdFx0dmVydGljYWwtYWxpZ246IHN1YjtcclxuXHRcdGZvbnQtc3R5bGU6IGluaXRpYWw7XHJcblx0XHRtYXJnaW4tbGVmdDogMjBycHg7XHJcblx0XHRmb250LXNpemU6IDE3cHg7XHJcblx0fVxyXG5cdC5hdHRyX2ZpZWxke1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuXHRcdG1hcmdpbi1sZWZ0OiA4cHg7XHJcblx0XHQvKiB3aWR0aDogNzElOyAqL1xyXG5cdH1cclxuXHRcclxuXHQuaW5wdXRfdmFsbGlzdCB7XHJcblx0XHRtYXgtaGVpZ2h0OiAzNTBycHg7XHJcblx0XHRvdmVyZmxvdy15OmF1dG87XHJcblx0XHRkaXNwbGF5OiBub25lO1xyXG5cdH1cclxuXHQuaW5wdXRfdmFsbGlzdCB1bHtcclxuXHRcdC8qIGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgKi9cclxuXHRcdHBhZGRpbmc6IDAgMjBycHg7XHJcblx0fVxyXG5cdC5pbnB1dF92YWxsaXN0IHVsIGxpe1xyXG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcclxuXHRcdHBhZGRpbmc6IDIwcnB4O1xyXG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7XHJcblx0fVxyXG5cdC5pbnB1dF92YWxsaXN0IHVsIGxpIGF7XHJcblx0XHRmbG9hdDogcmlnaHQ7XHJcblx0fVxyXG5cdC5pbnB1dF92YWxsaXN0IHVsIGxpIGEgaSB7XHJcblx0ICAgIGZvbnQtc2l6ZTogNDVycHg7XHJcblx0fVxyXG5cdC5wYW5lbF90aXRsZXtcclxuXHQgICAgZm9udC1zaXplOiAzOHJweDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICMyN0E2RTE7XHJcblx0XHRsaW5lLWhlaWdodDogODBycHg7XHJcblx0XHRjb2xvcjogI2ZmZjtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdH1cclxuXHQudi1wYW5lbGxpc3R7XHJcblx0XHRib3JkZXI6NHJweCBzb2xpZCAjYWFhO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMTBycHg7XHJcblx0XHRtYXJnaW46IDBycHggMjBycHggMTBycHggMjBycHg7XHJcblx0fVxyXG5cdC52LXBhbmVsZGVse1xyXG5cdFx0dGV4dC1hbGlnbjogcmlnaHQ7XHJcblx0fVxyXG5cdC5wYW5lbF9kZWx7XHJcblx0XHRmb250LXNpemU6IDQ0cnB4O1xyXG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBpbml0aWFsO1xyXG5cdFx0bWFyZ2luLXRvcDogMTBycHg7XHJcblx0XHRtYXJnaW4tcmlnaHQ6IDIwcnB4O1xyXG5cdH1cclxuXHQuZGl2WHtcclxuXHQgICAgd2lkdGg6IDIwcHg7XHJcblx0ICAgIGhlaWdodDogMjBweDtcclxuXHQgICAgYm9yZGVyLXJhZGl1czogNjAlO1xyXG5cdCAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0ICAgIHRvcDogLTEwcHg7XHJcblx0ICAgIHJpZ2h0OiAtMTBweDtcclxuXHQgICAgei1pbmRleDogMTAwO1xyXG5cdH1cclxuXHRcclxuPC9zdHlsZT5cclxuXHJcbjx0ZW1wbGF0ZT5cclxuXHQ8dmlldyBjbGFzcz1cImNvbnRlbnRcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwidi1hcmVhXCIgdi1mb3I9XCIoY2xhc3NhdHRyLGluZGV4KSBpbiBjbGFzc0F0dHJMaXN0XCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJjbGFzc19hdHRyX3RpdGxlXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJ0aXRsZV9saW5lXCI+PC9kaXY+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cInRpdGxlX2ljb25cIiA6c3R5bGU9XCJ7J2JhY2tncm91bmQtY29sb3InOmNsYXNzYXR0ci5Ca0NvbG9yfVwiPiAgIFxyXG5cdFx0XHRcdFx0PGkgY2xhc3M9XCJhY2UtaWNvbiBmYVwiIDpjbGFzcz1cImNsYXNzYXR0ci5JbWdGb250U3R5bGVcIj48L2k+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PHNwYW4gY2xhc3M9XCJ0aXRsZVwiPnt7Y2xhc3NhdHRyLk5hbWV9fTwvc3Bhbj5cclxuXHRcdFx0XHQ8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgY2xhc3M9XCJhcnJvd1wiIEB0YXA9XCJvbmFycm93KGluZGV4LGNsYXNzYXR0ci5PcGVuKVwiPjxpIGNsYXNzPVwiYWNlLWljb24gZmEgXCI6Y2xhc3M9XCJjbGFzc2F0dHIuT3Blbj8nZmEtYW5nbGUtZG93bic6J2ZhLWFuZ2xlLXVwJ1wiPjwvaT48L2E+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY2xhc3NfYXR0cl9ib2R5XCIgOnN0eWxlPVwieydkaXNwbGF5JzpjbGFzc2F0dHIuT3Blbj8nYmxvY2snOidub25lJ31cIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZHZfZmllbGRfZGl2XCIgdi1mb3I9XCIoYXR0cixpaW5kZXgpIGluIGNsYXNzYXR0ci5BdHRyXCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZvcm0tZ3JvdXBcIiB2LWlmPVwiYXR0ci5UeXBlPT0n5a2X56ym5LiyJyB8fCBhdHRyLlR5cGU9PSflj6/lj5jplb/lrZfnrKbkuLInIHx8IGF0dHIuVHlwZT09J+aVtOaVsCcgfHwgYXR0ci5UeXBlPT0n5rWu54K55pWwJ1wiIDpzdHlsZT1cInsnZGlzcGxheSc6YXR0ci5oaWRkZW4gPT0gJ1RydWUnPydub25lJzonJ31cIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5LiK5LiL5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHhfdGl0bGVcIiA6c3R5bGU9XCJ7J2ZvbnQtZmFtaWx5JzpjbGFzc2F0dHIuRm9udC5OYW1lP2NsYXNzYXR0ci5Gb250Lk5hbWU6J2luaXRpYWwnLCdmb250LXNpemUnOmNsYXNzYXR0ci5Gb250LlNpemU/Y2xhc3NhdHRyLkZvbnQuU2l6ZTonaW5pdGlhbCcsJ2ZvbnQtd2VpZ2h0JzpjbGFzc2F0dHIuRm9udC5Cb2xkPydib2xkJzonaW5pdGlhbCcsJ2ZvbnQtc3R5bGUnOmNsYXNzYXR0ci5Gb250LlRpbHQ/J2l0YWxpYyc6J2luaXRpYWwnLCd0ZXh0LWRlY29yYXRpb24nOmNsYXNzYXR0ci5Gb250LlVuZGVybGluZT8ndW5kZXJsaW5lJzonaW5pdGlhbCcsJ2JhY2tncm91bmQtY29sb3InOmNsYXNzYXR0ci5Gb250LkJrX0NvbG9yLCdjb2xvcic6Y2xhc3NhdHRyLkZvbnQuVGV4dF9Db2xvciwnd2lkdGgnOmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoKyclJ31cIj48aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZSB8fCBhdHRyLk5vdEVtcHR5PT0nMSdcIj4qPC9pPnt7YXR0ci5EaXNwTmFtZX19OjwvdGV4dD4gIDwhLS0gYXR0ci5Ob3RFbXB0eT09JzEnIC0tPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCIgdi1pZj1cImF0dHIuZXh0X2J1dHRvbj09dHJ1ZVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGEgQHRhcD1cImNsYXNzQXR0cl9leHRCdXR0b24oaW5kZXgsaWluZGV4KVwiID48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXBsdXMtY2lyY2xlXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8IS0tIDxkaXYgc3R5bGU9J3dpZHRoOiAxMDBweDtwb3NpdGlvbjogcmVsYXRpdmU7Jz4gXHJcblx0XHRcdFx0XHRcdFx0PGltYWdlIGNsYXNzPVwiZGl2WFwiIHNyYz1cIi4uLy4uL2ltYWdlcy9tc2dfNTBfbmV3LnBuZ1wiPjwvaW1hZ2U+LS0+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBmb2N1cz1cIm9udGFwXCIgQGJsdXI9XCJvbmV2ZW50XCIgdi1pZj1cImF0dHIuSGVpZ2h0PT0nMSdcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiA6ZGlzYWJsZWQ9XCJhdHRyLmVkaXQ/ZmFsc2U6dHJ1ZVwiID4gPCEtLSA9PSdmbGFzZSc/dHJ1ZTpmYWxzZSAtLT5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dGFyZWEgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBmb2N1cz1cIm9udGFwXCIgQGJsdXI9XCJvbmV2ZW50XCIgdi1lbHNlLWlmPVwiYXR0ci5IZWlnaHQ9PScyJ1wiIDpkYXRhLWluZGV4PVwiaW5kZXhcIjpkYXRhLWlpbmRleD1cImlpbmRleFwiIHN0eWxlPVwiaGVpZ2h0OjYwcHg7XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiA6ZGlzYWJsZWQ9XCJhdHRyLmVkaXQ/ZmFsc2U6dHJ1ZVwiPjwvdGV4dGFyZWE+XHJcblx0XHRcdFx0XHRcdFx0PHRleHRhcmVhIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiBAZm9jdXM9XCJvbnRhcFwiIEBibHVyPVwib25ldmVudFwiIHYtZWxzZS1pZj1cImF0dHIuSGVpZ2h0PT0nMydcIiA6ZGF0YS1pbmRleD1cImluZGV4XCI6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiBzdHlsZT1cImhlaWdodDo5MHB4O1wiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCIgOmRpc2FibGVkPVwiYXR0ci5lZGl0P2ZhbHNlOnRydWVcIj48L3RleHRhcmVhPlxyXG5cdFx0XHRcdFx0XHRcdDwhLS0gPC9kaXY+IC0tPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+W3puWPs+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInR4X3RpdGxlMlwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOmNsYXNzYXR0ci5Gb250Lk5hbWU/Y2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6Y2xhc3NhdHRyLkZvbnQuU2l6ZT9jbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6Y2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6Y2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6Y2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6Y2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJ1wiPio8L2k+e3thdHRyLkRpc3BOYW1lfX06PC9wPlxyXG5cdFx0XHRcdFx0XHRcdDwhLS0gPGRpdiBzdHlsZT0nd2lkdGg6IDEwMCU7cG9zaXRpb246IHJlbGF0aXZlOyc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJkaXZYXCIgc3JjPVwiLi4vLi4vaW1hZ2VzL21zZ181MF9uZXcucG5nXCI+PC9pbWFnZT4gLS0+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBmb2N1cz1cIm9udGFwXCIgQGJsdXI9XCJvbmV2ZW50XCIgdi1pZj1cImF0dHIuSGVpZ2h0PT0nMSdcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIGNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gKGF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnPzEwOjUpIC0gKGF0dHIuZXh0X2J1dHRvbj09dHJ1ZT85OjApICsnJSd9XCIgOmRpc2FibGVkPVwiYXR0ci5lZGl0P2ZhbHNlOnRydWVcIiA+XHJcblx0XHRcdFx0XHRcdFx0PHRleHRhcmVhIGNsYXNzPVwiYXR0cl9maWVsZFwiIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiBAZm9jdXM9XCJvbnRhcFwiIEBibHVyPVwib25ldmVudFwiIHYtZWxzZS1pZj1cImF0dHIuSGVpZ2h0PT0nMidcIiA6ZGF0YS1pbmRleD1cImluZGV4XCI6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiBzdHlsZT1cImhlaWdodDo2MHB4O1wiIDpzdHlsZT1cInsnd2lkdGgnOiBhdHRyLldpZHRoLnNwbGl0KCclJylbMF0gLSBjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCAtIChhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJz8xMDo1KSAtIChhdHRyLmV4dF9idXR0b249PXRydWU/OTowKSArJyUnfVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCI+PC90ZXh0YXJlYT5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dGFyZWEgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBmb2N1cz1cIm9udGFwXCIgQGJsdXI9XCJvbmV2ZW50XCIgdi1lbHNlLWlmPVwiYXR0ci5IZWlnaHQ9PSczJ1wiIDpkYXRhLWluZGV4PVwiaW5kZXhcIjpkYXRhLWlpbmRleD1cImlpbmRleFwiIHN0eWxlPVwiaGVpZ2h0OjkwcHg7XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIGNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gKGF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnPzEwOjUpIC0gKGF0dHIuZXh0X2J1dHRvbj09dHJ1ZT85OjApICsnJSd9XCIgOmRpc2FibGVkPVwiYXR0ci5lZGl0P2ZhbHNlOnRydWVcIj48L3RleHRhcmVhPlxyXG5cdFx0XHRcdFx0XHRcdDwhLS0gPC9kaXY+IC0tPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0MlwiIHYtaWY9XCJhdHRyLmV4dF9idXR0b249PXRydWVcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIEB0YXA9XCJjbGFzc0F0dHJfZXh0QnV0dG9uKGluZGV4LGlpbmRleClcIiA+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZm9ybS1ncm91cFwiIHYtaWY9XCJhdHRyLlR5cGU9PSfluIPlsJTlgLwnXCIgOnN0eWxlPVwieydkaXNwbGF5JzphdHRyLmhpZGRlbiA9PSAnVHJ1ZSc/J25vbmUnOicnfVwiPlxyXG5cdFx0XHRcdFx0XHQ8Y2hlY2tib3gtZ3JvdXAgY2xhc3M9XCJjaGVja19yZW1lbWJlclB3ZFwiIEBjaGFuZ2U9XCJvbmNoZWNrXCIgOmRhdGEtaXNjaGVjaz1cImF0dHIuVmFsdWVcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieydtYXJnaW4tbGVmdCc6IGNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJz9jbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsyICsnJSc6JzEwcnB4J31cIj5cclxuXHRcdFx0XHRcdFx0XHQ8bGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0XHQ8Y2hlY2tib3ggOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIDpjaGVja2VkPVwiYXR0ci5WYWx1ZVwiLz5cclxuXHRcdFx0XHRcdFx0XHRcdDx0ZXh0Pnt7YXR0ci5EaXNwTmFtZX19PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT48L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0PC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0PC9jaGVja2JveC1ncm91cD5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZm9ybS1ncm91cFwiIHYtaWY9XCJhdHRyLlR5cGU9PSfml6XmnJ8nIHx8IGF0dHIuVHlwZT09J+aXtumXtCdcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOmF0dHIuaGlkZGVuID09ICdUcnVlJz8nbm9uZSc6Jyd9XCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+S4iuS4i+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4X3RpdGxlXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6Y2xhc3NhdHRyLkZvbnQuTmFtZT9jbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpjbGFzc2F0dHIuRm9udC5TaXplP2NsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6Y2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0PHBpY2tlciBtb2RlPVwiZGF0ZVwiIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiBAY2hhbmdlPVwib25kYXRlVGltZVwiIGNsYXNzPVwiZGF0ZV9pcHV0XCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCI+XHJcblx0XHRcdFx0XHRcdFx0ICAgPHZpZXcgY2xhc3M9XCJwaWNrZXJcIj57e2F0dHIuVmFsdWV9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8L3BpY2tlcj5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSflt6blj7PluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJ0eF90aXRsZTJcIiA6c3R5bGU9XCJ7J2ZvbnQtZmFtaWx5JzpjbGFzc2F0dHIuRm9udC5OYW1lP2NsYXNzYXR0ci5Gb250Lk5hbWU6J2luaXRpYWwnLCdmb250LXNpemUnOmNsYXNzYXR0ci5Gb250LlNpemU/Y2xhc3NhdHRyLkZvbnQuU2l6ZTonaW5pdGlhbCcsJ2ZvbnQtd2VpZ2h0JzpjbGFzc2F0dHIuRm9udC5Cb2xkPydib2xkJzonaW5pdGlhbCcsJ2ZvbnQtc3R5bGUnOmNsYXNzYXR0ci5Gb250LlRpbHQ/J2l0YWxpYyc6J2luaXRpYWwnLCd0ZXh0LWRlY29yYXRpb24nOmNsYXNzYXR0ci5Gb250LlVuZGVybGluZT8ndW5kZXJsaW5lJzonaW5pdGlhbCcsJ2JhY2tncm91bmQtY29sb3InOmNsYXNzYXR0ci5Gb250LkJrX0NvbG9yLCdjb2xvcic6Y2xhc3NhdHRyLkZvbnQuVGV4dF9Db2xvciwnd2lkdGgnOmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoKyclJ31cIj48aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZSB8fCBhdHRyLk5vdEVtcHR5PT0nMSdcIj4qPC9pPnt7YXR0ci5EaXNwTmFtZX19OjwvcD5cclxuXHRcdFx0XHRcdFx0XHQ8cGlja2VyIG1vZGU9XCJkYXRlXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBjaGFuZ2U9XCJvbmRhdGVUaW1lXCIgY2xhc3M9XCJkYXRlX2lwdXQgYXR0cl9maWVsZFwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzogYXR0ci5XaWR0aC5zcGxpdCgnJScpWzBdIC0gY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGggLSAoYXR0ci5ub3RlbXB0eT09dHJ1ZSB8fCBhdHRyLk5vdEVtcHR5PT0nMSc/MTA6NSkgKyclJ31cIj5cclxuXHRcdFx0XHRcdFx0XHQgICA8dmlldyBjbGFzcz1cInBpY2tlclwiPnt7YXR0ci5WYWx1ZX19PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDwvcGlja2VyPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZvcm0tZ3JvdXBcIiB2LWlmPVwiYXR0ci5UeXBlPT0n5a2X5YW4JyB8fCBhdHRyLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJ1wiIDpzdHlsZT1cInsnZGlzcGxheSc6YXR0ci5oaWRkZW4gPT0gJ1RydWUnPydub25lJzonJ31cIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5LiK5LiL5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHhfdGl0bGVcIiA6c3R5bGU9XCJ7J2ZvbnQtZmFtaWx5JzpjbGFzc2F0dHIuRm9udC5OYW1lP2NsYXNzYXR0ci5Gb250Lk5hbWU6J2luaXRpYWwnLCdmb250LXNpemUnOmNsYXNzYXR0ci5Gb250LlNpemU/Y2xhc3NhdHRyLkZvbnQuU2l6ZTonaW5pdGlhbCcsJ2ZvbnQtd2VpZ2h0JzpjbGFzc2F0dHIuRm9udC5Cb2xkPydib2xkJzonaW5pdGlhbCcsJ2ZvbnQtc3R5bGUnOmNsYXNzYXR0ci5Gb250LlRpbHQ/J2l0YWxpYyc6J2luaXRpYWwnLCd0ZXh0LWRlY29yYXRpb24nOmNsYXNzYXR0ci5Gb250LlVuZGVybGluZT8ndW5kZXJsaW5lJzonaW5pdGlhbCcsJ2JhY2tncm91bmQtY29sb3InOmNsYXNzYXR0ci5Gb250LkJrX0NvbG9yLCdjb2xvcic6Y2xhc3NhdHRyLkZvbnQuVGV4dF9Db2xvciwnd2lkdGgnOmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoKyclJ31cIj48aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZSB8fCBhdHRyLk5vdEVtcHR5PT0nMSdcIj4qPC9pPnt7YXR0ci5EaXNwTmFtZX19OjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHQ8cGlja2VyIGNsYXNzPVwic2VjdGlvbl9pcHV0XCIgQGNoYW5nZT1cIm9uY2hhbmdlXCIgOnJhbmdlPVwiYXR0ci5kaWN0aXRlbVwiIHJhbmdlLWtleT1cIkNOX1NfTkFNRVwiIHYtaWY9XCJhdHRyLnNlbGVjdD09ZmFsc2VcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiA6ZGlzYWJsZWQ9XCJhdHRyLmVkaXQ/ZmFsc2U6dHJ1ZVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwiXCI+e3sgYXR0ci5WYWx1ZSB9fTwvbGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0PC9waWNrZXI+XHJcblx0XHRcdFx0XHRcdFx0PHNlbGVjdC1jeSA6dmFsdWU9XCJhdHRyLlZhbHVlXCIgOm5hbWU9XCJhdHRyLk5hbWVcIiA6b3B0aW9ucz1cImF0dHIuZGljdGl0ZW1cIiBzaG93Q2xlYXJJY29uPVwidHJ1ZVwiIEBjaGFuZ2U9XCJvbmNoYW5nZTJcIiB2LWVsc2UtaWY9XCJhdHRyLnNlbGVjdD09dHJ1ZVwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCI+PC9zZWxlY3QtY3k+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwidHhfdGl0bGUyXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6Y2xhc3NhdHRyLkZvbnQuTmFtZT9jbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpjbGFzc2F0dHIuRm9udC5TaXplP2NsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6Y2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3A+XHJcblx0XHRcdFx0XHRcdFx0PHBpY2tlciBjbGFzcz1cInNlY3Rpb25faXB1dCBhdHRyX2ZpZWxkXCIgQGNoYW5nZT1cIm9uY2hhbmdlXCIgOnJhbmdlPVwiYXR0ci5kaWN0aXRlbVwiIHJhbmdlLWtleT1cIkNOX1NfTkFNRVwiIHYtaWY9XCJhdHRyLnNlbGVjdD09ZmFsc2VcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIGNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gKGF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnPzEwOjUpICsnJSd9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJcIj57eyBhdHRyLlZhbHVlIH19PC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHQ8L3BpY2tlcj5cclxuXHRcdFx0XHRcdFx0XHQ8c2VsZWN0LWN5IDp2YWx1ZT1cImF0dHIuVmFsdWVcIiA6bmFtZT1cImF0dHIuTmFtZVwiIDpvcHRpb25zPVwiYXR0ci5kaWN0aXRlbVwiIHNob3dDbGVhckljb249XCJ0cnVlXCIgQGNoYW5nZT1cIm9uY2hhbmdlMlwiIHYtZWxzZS1pZj1cImF0dHIuc2VsZWN0PT10cnVlXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCI+PC9zZWxlY3QtY3k+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZm9ybS1ncm91cFwiIHYtaWY9XCJhdHRyLlR5cGU9PSflvJXnlKjlr7nosaEo5Y2V5LiqKScgfHwgYXR0ci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknXCIgOnN0eWxlPVwieydkaXNwbGF5JzphdHRyLmhpZGRlbiA9PSAnVHJ1ZSc/J25vbmUnOicnfVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSfkuIrkuIvluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eF90aXRsZVwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOmNsYXNzYXR0ci5Gb250Lk5hbWU/Y2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6Y2xhc3NhdHRyLkZvbnQuU2l6ZT9jbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6Y2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6Y2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6Y2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6Y2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJ1wiPio8L2k+e3thdHRyLkRpc3BOYW1lfX06PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOWvueixoSjljZXkuKopJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGEgQHRhcD1cImNsYXNzQXR0cl9BZGRSZWZcIiA6ZGF0YS1jbGFzc2lkPVwiYXR0ci5SZWxDbHMuc3BsaXQoJ3wnKVswXVwiIDpkYXRhLWNsYXNzbmFtZT1cImF0dHIuUmVsQ2xzLnNwbGl0KCd8JylbMV1cIiA+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHRcIiB2LWlmPVwiYXR0ci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8cGlja2VyIGNsYXNzPVwic2VsZWN0XCIgQGNoYW5nZT1cImNsYXNzQXR0cl9BZGRSZWZcIiA6cmFuZ2U9XCJhdHRyLlJlbENsc0xpc3RcIiByYW5nZS1rZXk9XCJuYW1lXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJcIj57eyBhdHRyLlZhbHVlIH19PC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHRcdDwvcGlja2VyPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGEgY2xhc3M9XCJjbGFzc19hdHRyX2FkZF9yZWZcIj48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXBsdXMtY2lyY2xlXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiBkaXNhYmxlZD1cInRydWVcIiA+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwidHhfdGl0bGUyXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6Y2xhc3NhdHRyLkZvbnQuTmFtZT9jbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpjbGFzc2F0dHIuRm9udC5TaXplP2NsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6Y2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3A+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOiBhdHRyLldpZHRoLnNwbGl0KCclJylbMF0gLSBjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCAtIChhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJz8xMDo1KSAtIDkgKyclJ31cIiBkaXNhYmxlZD1cInRydWVcIiA+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHQyXCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOWvueixoSjljZXkuKopJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGEgQHRhcD1cImNsYXNzQXR0cl9BZGRSZWZcIiA6ZGF0YS1jbGFzc2lkPVwiYXR0ci5SZWxDbHMuc3BsaXQoJ3wnKVswXVwiIDpkYXRhLWNsYXNzbmFtZT1cImF0dHIuUmVsQ2xzLnNwbGl0KCd8JylbMV1cIiA+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHQyXCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHBpY2tlciBjbGFzcz1cInNlbGVjdFwiIEBjaGFuZ2U9XCJjbGFzc0F0dHJfQWRkUmVmXCIgOnJhbmdlPVwiYXR0ci5SZWxDbHNMaXN0XCIgcmFuZ2Uta2V5PVwibmFtZVwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwiXCI+e3sgYXR0ci5WYWx1ZSB9fTwvbGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3BpY2tlcj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIGNsYXNzPVwiY2xhc3NfYXR0cl9hZGRfcmVmXCI+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZm9ybS1ncm91cFwiIHYtaWY9XCJhdHRyLlR5cGU9PSflvJXnlKjkurrlkZgnXCIgOnN0eWxlPVwieydkaXNwbGF5JzphdHRyLmhpZGRlbiA9PSAnVHJ1ZSc/J25vbmUnOicnfVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSfkuIrkuIvluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eF90aXRsZVwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOmNsYXNzYXR0ci5Gb250Lk5hbWU/Y2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6Y2xhc3NhdHRyLkZvbnQuU2l6ZT9jbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6Y2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6Y2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6Y2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6Y2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJ1wiPio8L2k+e3thdHRyLkRpc3BOYW1lfX06PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YSBjbGFzcz1cImNsYXNzX2F0dHJfYWRkX3BlclwiIEB0YXA9XCJjbGFzc0F0dHJfQWRkUGVyKGluZGV4LGlpbmRleClcIj48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXBsdXMtY2lyY2xlXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiA6dmFsdWU9XCJhdHRyLlZhbHVlXCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiBkaXNhYmxlZD1cInRydWVcIiA+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwidHhfdGl0bGUyXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6Y2xhc3NhdHRyLkZvbnQuTmFtZT9jbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpjbGFzc2F0dHIuRm9udC5TaXplP2NsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6Y2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3A+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIDpzdHlsZT1cInsnd2lkdGgnOiBhdHRyLldpZHRoLnNwbGl0KCclJylbMF0gLSBjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCAtIChhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJz8xMDo1KSAtIDkgKyclJ31cIiBkaXNhYmxlZD1cInRydWVcIiA+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHQyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YSBjbGFzcz1cImNsYXNzX2F0dHJfYWRkX3BlclwiIEB0YXA9XCJjbGFzc0F0dHJfQWRkUGVyKGluZGV4LGlpbmRleClcIj48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXBsdXMtY2lyY2xlXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLWdyb3VwXCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOmhueebridcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOmF0dHIuaGlkZGVuID09ICdUcnVlJz8nbm9uZSc6Jyd9XCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+S4iuS4i+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4X3RpdGxlXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6Y2xhc3NhdHRyLkZvbnQuTmFtZT9jbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpjbGFzc2F0dHIuRm9udC5TaXplP2NsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6Y2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIGhyZWY9XCIjXCIgY2xhc3M9XCJjbGFzc19hdHRyX2FkZF9wcmpcIiBAdGFwPVwiY2xhc3NBdHRyX0FkZFByaihpbmRleCxpaW5kZXgpXCI+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+W3puWPs+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInR4X3RpdGxlMlwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOmNsYXNzYXR0ci5Gb250Lk5hbWU/Y2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6Y2xhc3NhdHRyLkZvbnQuU2l6ZT9jbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6Y2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6Y2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6Y2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6Y2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJ1wiPio8L2k+e3thdHRyLkRpc3BOYW1lfX06PC9wPlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYXR0cl9maWVsZFwiIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiA6c3R5bGU9XCJ7J3dpZHRoJzogYXR0ci5XaWR0aC5zcGxpdCgnJScpWzBdIC0gY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGggLSAoYXR0ci5ub3RlbXB0eT09dHJ1ZSB8fCBhdHRyLk5vdEVtcHR5PT0nMSc/MTA6NSkgLSA5ICsnJSd9XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0MlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGEgY2xhc3M9XCJjbGFzc19hdHRyX2FkZF9wcmpcIiBAdGFwPVwiY2xhc3NBdHRyX0FkZFByaihpbmRleCxpaW5kZXgpXCI+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZm9ybS1ncm91cFwiIHYtaWY9XCJhdHRyLlR5cGU9PSfnvJbnoIEnXCIgOnN0eWxlPVwieydkaXNwbGF5JzphdHRyLmhpZGRlbiA9PSAnVHJ1ZSc/J25vbmUnOicnfVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSfkuIrkuIvluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eF90aXRsZVwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOmNsYXNzYXR0ci5Gb250Lk5hbWU/Y2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6Y2xhc3NhdHRyLkZvbnQuU2l6ZT9jbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6Y2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6Y2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6Y2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6Y2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJ1wiPio8L2k+e3thdHRyLkRpc3BOYW1lfX06PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+W3puWPs+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInR4X3RpdGxlMlwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOmNsYXNzYXR0ci5Gb250Lk5hbWU/Y2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6Y2xhc3NhdHRyLkZvbnQuU2l6ZT9jbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6Y2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6Y2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6Y2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6Y2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPnt7YXR0ci5EaXNwTmFtZX19OjwvcD5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImF0dHJfZmllbGRcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIGNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gKGF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnPzEwOjUpICsnJSd9XCIgOmRpc2FibGVkPVwiYXR0ci5lZGl0P2ZhbHNlOnRydWVcIiA+XHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLWdyb3VwXCIgdi1pZj1cImF0dHIuVHlwZT09J+ecgeW4guWMuidcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOmF0dHIuaGlkZGVuID09ICdUcnVlJz8nbm9uZSc6Jyd9XCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+S4iuS4i+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4X3RpdGxlXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6Y2xhc3NhdHRyLkZvbnQuTmFtZT9jbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpjbGFzc2F0dHIuRm9udC5TaXplP2NsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6Y2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0PHBpY2tlckFkZHJlc3MgY2xhc3M9XCJkYXRlX2lwdXRcIiBAY2hhbmdlPVwiYWRkcmVzc2NoYW5nZVwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiID57e2F0dHIuVmFsdWV9fTwvcGlja2VyQWRkcmVzcz5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSflt6blj7PluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJ0eF90aXRsZTJcIiA6c3R5bGU9XCJ7J2ZvbnQtZmFtaWx5JzpjbGFzc2F0dHIuRm9udC5OYW1lP2NsYXNzYXR0ci5Gb250Lk5hbWU6J2luaXRpYWwnLCdmb250LXNpemUnOmNsYXNzYXR0ci5Gb250LlNpemU/Y2xhc3NhdHRyLkZvbnQuU2l6ZTonaW5pdGlhbCcsJ2ZvbnQtd2VpZ2h0JzpjbGFzc2F0dHIuRm9udC5Cb2xkPydib2xkJzonaW5pdGlhbCcsJ2ZvbnQtc3R5bGUnOmNsYXNzYXR0ci5Gb250LlRpbHQ/J2l0YWxpYyc6J2luaXRpYWwnLCd0ZXh0LWRlY29yYXRpb24nOmNsYXNzYXR0ci5Gb250LlVuZGVybGluZT8ndW5kZXJsaW5lJzonaW5pdGlhbCcsJ2JhY2tncm91bmQtY29sb3InOmNsYXNzYXR0ci5Gb250LkJrX0NvbG9yLCdjb2xvcic6Y2xhc3NhdHRyLkZvbnQuVGV4dF9Db2xvciwnd2lkdGgnOmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoKyclJ31cIj48aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZSB8fCBhdHRyLk5vdEVtcHR5PT0nMSdcIj4qPC9pPnt7YXR0ci5EaXNwTmFtZX19OjwvcD5cclxuXHRcdFx0XHRcdFx0XHQ8cGlja2VyQWRkcmVzcyBjbGFzcz1cImRhdGVfaXB1dCBhdHRyX2ZpZWxkXCIgQGNoYW5nZT1cImFkZHJlc3NjaGFuZ2VcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIGNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gKGF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnPzEwOjUpICsnJSd9XCI+e3thdHRyLlZhbHVlfX08L3BpY2tlckFkZHJlc3M+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cInYtYXJlYSBjbGFzc19hdHRyX2JvZHlcIj5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcblx0XHRcdFx0PCEtLSDlt6blj7PluIPlsYAgLS0+XHJcblx0XHRcdFx0PHAgY2xhc3M9XCJ0eF90aXRsZTJcIiA+e3twYXJhbS5TY2FuX0NvZGUuTmFtZX19OjwvcD5cclxuXHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImF0dHJfZmllbGRcIiA6dmFsdWU9XCJzY2FuQ29kZVZhbFwiIEBmb2N1cz1cInNjYW5fb250YXBcIiA6c3R5bGU9XCJwYXJhbS5TY2FuX0NvZGUuSGF2ZV9TZWxlY3RfQnV0dG9uPT10cnVlPyd3aWR0aDogJysoMTAwLShwYXJhbS5TY2FuX0NvZGUuTmFtZS5sZW5ndGggKiA1KS0xNCkrJyU7Jzond2lkdGg6ICcrKDEwMC0ocGFyYW0uU2Nhbl9Db2RlLk5hbWUubGVuZ3RoICogNSktNSkrJyU7J1wiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0MlwiIHYtaWY9XCJwYXJhbS5TY2FuX0NvZGUuSGF2ZV9TZWxlY3RfQnV0dG9uPT10cnVlXCI+XHJcblx0XHRcdFx0XHQ8YSBAdGFwPVwic2Nhbl9jbGFzc0F0dHJfZXh0QnV0dG9uKClcIiA+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYVwiIDpjbGFzcz1cInBhcmFtLlNjYW5fQ29kZS5JbWc/cGFyYW0uU2Nhbl9Db2RlLkltZzonZmEtcGx1cy1jaXJjbGUnXCI+PC9pPjwvYT5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8IS0tIOS4iuS4i+W4g+WxgCAtLT5cclxuXHRcdFx0XHQ8IS0tIDx0ZXh0IGNsYXNzPVwidHhfdGl0bGVcIj57e3BhcmFtLlNjYW5fQ29kZS5OYW1lfX3vvJo8L3RleHQ+IFxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCIgdi1pZj1cInBhcmFtLlNjYW5fQ29kZS5IYXZlX1NlbGVjdF9CdXR0b249PXRydWVcIj4gIFxyXG5cdFx0XHRcdFx0PGEgQHRhcD1cIm1zX2NsYXNzQXR0cl9leHRCdXR0b24oKVwiPjxpIGNsYXNzPVwiYWNlLWljb24gZmFcIiA6Y2xhc3M9XCJwYXJhbS5TY2FuX0NvZGUuSW1nP3BhcmFtLlNjYW5fQ29kZS5JbWc6J2ZhLXBsdXMtY2lyY2xlJ1wiPjwvaT48L2E+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgdmFsdWU9XCJcIiA+IC0tPlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHRcclxuXHRcdDx2aWV3IGNsYXNzPVwidi1wYW5lbFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwicGFuZWxfdGl0bGVcIj57e3BhcmFtLlN1Yl9DbHMuVGl0bGV9fTwvZGl2PlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInYtcGFuZWxsaXN0XCIgdi1mb3I9XCIoc3VicGFuZWwsaW5kZXgpIGluIHN1YlBhbmVsTGlzdFwiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidi1hcmVhXCIgdi1mb3I9XCIoc3ViY2xhc3NhdHRyLGluZGV4KSBpbiBzdWJwYW5lbC5zdWJDbGFzc0F0dHJcIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjbGFzc19hdHRyX3RpdGxlXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGl0bGVfbGluZVwiPjwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGl0bGVfaWNvblwiIDpzdHlsZT1cInsnYmFja2dyb3VuZC1jb2xvcic6c3ViY2xhc3NhdHRyLkJrQ29sb3J9XCI+ICAgXHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJhY2UtaWNvbiBmYVwiIDpjbGFzcz1cInN1YmNsYXNzYXR0ci5JbWdGb250U3R5bGVcIj48L2k+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRpdGxlXCI+e3tzdWJjbGFzc2F0dHIuTmFtZX19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgY2xhc3M9XCJhcnJvd1wiIEB0YXA9XCJvbmFycm93KGluZGV4LHN1YmNsYXNzYXR0ci5PcGVuKVwiPjxpIGNsYXNzPVwiYWNlLWljb24gZmEgXCI6Y2xhc3M9XCJzdWJjbGFzc2F0dHIuT3Blbj8nZmEtYW5nbGUtZG93bic6J2ZhLWFuZ2xlLXVwJ1wiPjwvaT48L2E+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJzdWJjbGFzc19hdHRyX2JvZHlcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOnN1YmNsYXNzYXR0ci5PcGVuPydibG9jayc6J25vbmUnfVwiPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZHZfZmllbGRfZGl2XCIgdi1mb3I9XCIoYXR0cixpaW5kZXgpIGluIHN1YmNsYXNzYXR0ci5BdHRyXCI+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLWdyb3VwXCIgdi1pZj1cImF0dHIuVHlwZT09J+Wtl+espuS4sicgfHwgYXR0ci5UeXBlPT0n5Y+v5Y+Y6ZW/5a2X56ym5LiyJyB8fCBhdHRyLlR5cGU9PSfmlbTmlbAnIHx8IGF0dHIuVHlwZT09J+a1rueCueaVsCdcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOmF0dHIuaGlkZGVuID09ICdUcnVlJz8nbm9uZSc6Jyd9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwic3ViY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSfkuIrkuIvluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHhfdGl0bGVcIiA6c3R5bGU9XCJ7J2ZvbnQtZmFtaWx5JzpzdWJjbGFzc2F0dHIuRm9udC5OYW1lP3N1YmNsYXNzYXR0ci5Gb250Lk5hbWU6J2luaXRpYWwnLCdmb250LXNpemUnOnN1YmNsYXNzYXR0ci5Gb250LlNpemU/c3ViY2xhc3NhdHRyLkZvbnQuU2l6ZTonaW5pdGlhbCcsJ2ZvbnQtd2VpZ2h0JzpzdWJjbGFzc2F0dHIuRm9udC5Cb2xkPydib2xkJzonaW5pdGlhbCcsJ2ZvbnQtc3R5bGUnOnN1YmNsYXNzYXR0ci5Gb250LlRpbHQ/J2l0YWxpYyc6J2luaXRpYWwnLCd0ZXh0LWRlY29yYXRpb24nOnN1YmNsYXNzYXR0ci5Gb250LlVuZGVybGluZT8ndW5kZXJsaW5lJzonaW5pdGlhbCcsJ2JhY2tncm91bmQtY29sb3InOnN1YmNsYXNzYXR0ci5Gb250LkJrX0NvbG9yLCdjb2xvcic6c3ViY2xhc3NhdHRyLkZvbnQuVGV4dF9Db2xvciwnd2lkdGgnOnN1YmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoICsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3RleHQ+ICA8IS0tIGF0dHIuTm90RW1wdHk9PScxJyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHRcIiB2LWlmPVwiYXR0ci5leHRfYnV0dG9uPT10cnVlXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgQHRhcD1cImNsYXNzQXR0cl9leHRCdXR0b24oaW5kZXgsaWluZGV4KVwiID48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXBsdXMtY2lyY2xlXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiBAZm9jdXM9XCJvbnRhcFwiIEBibHVyPVwib25ldmVudFwiIHYtaWY9XCJhdHRyLkhlaWdodD09JzEnXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCIgOmRpc2FibGVkPVwiYXR0ci5lZGl0P2ZhbHNlOnRydWVcIiA+IDwhLS0gPT0nZmxhc2UnP3RydWU6ZmFsc2UgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0YXJlYSA6dmFsdWU9XCJhdHRyLlZhbHVlXCIgQGZvY3VzPVwib250YXBcIiBAYmx1cj1cIm9uZXZlbnRcIiB2LWVsc2UtaWY9XCJhdHRyLkhlaWdodD09JzInXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgc3R5bGU9XCJoZWlnaHQ6NjBweDtcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCI+PC90ZXh0YXJlYT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHRhcmVhIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiBAZm9jdXM9XCJvbnRhcFwiIEBibHVyPVwib25ldmVudFwiIHYtZWxzZS1pZj1cImF0dHIuSGVpZ2h0PT0nMydcIiA6ZGF0YS1pbmRleD1cImluZGV4XCI6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiBzdHlsZT1cImhlaWdodDo5MHB4O1wiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCIgOmRpc2FibGVkPVwiYXR0ci5lZGl0P2ZhbHNlOnRydWVcIj48L3RleHRhcmVhPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cInN1YmNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInR4X3RpdGxlMlwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOnN1YmNsYXNzYXR0ci5Gb250Lk5hbWU/c3ViY2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6c3ViY2xhc3NhdHRyLkZvbnQuU2l6ZT9zdWJjbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOnN1YmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6c3ViY2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6c3ViY2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6c3ViY2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6c3ViY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGggKyclJ31cIj48aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZSB8fCBhdHRyLk5vdEVtcHR5PT0nMSdcIj4qPC9pPnt7YXR0ci5EaXNwTmFtZX19OjwvcD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBmb2N1cz1cIm9udGFwXCIgQGJsdXI9XCJvbmV2ZW50XCIgdi1pZj1cImF0dHIuSGVpZ2h0PT0nMSdcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIHN1YmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gNyAtIChhdHRyLmV4dF9idXR0b249PXRydWU/OTowKSArJyUnfVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dGFyZWEgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBmb2N1cz1cIm9udGFwXCIgQGJsdXI9XCJvbmV2ZW50XCIgdi1lbHNlLWlmPVwiYXR0ci5IZWlnaHQ9PScyJ1wiIDpkYXRhLWluZGV4PVwiaW5kZXhcIjpkYXRhLWlpbmRleD1cImlpbmRleFwiIHN0eWxlPVwiaGVpZ2h0OjYwcHg7XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIHN1YmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gNyAtIChhdHRyLmV4dF9idXR0b249PXRydWU/OTowKSArJyUnfVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCI+PC90ZXh0YXJlYT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHRhcmVhIGNsYXNzPVwiYXR0cl9maWVsZFwiIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiBAZm9jdXM9XCJvbnRhcFwiIEBibHVyPVwib25ldmVudFwiIHYtZWxzZS1pZj1cImF0dHIuSGVpZ2h0PT0nMydcIiA6ZGF0YS1pbmRleD1cImluZGV4XCI6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiBzdHlsZT1cImhlaWdodDo5MHB4O1wiIDpzdHlsZT1cInsnd2lkdGgnOiBhdHRyLldpZHRoLnNwbGl0KCclJylbMF0gLSBzdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCAtIDcgLSAoYXR0ci5leHRfYnV0dG9uPT10cnVlPzk6MCkgKyclJ31cIiA6ZGlzYWJsZWQ9XCJhdHRyLmVkaXQ/ZmFsc2U6dHJ1ZVwiPjwvdGV4dGFyZWE+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0MlwiIHYtaWY9XCJhdHRyLmV4dF9idXR0b249PXRydWVcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8YSBAdGFwPVwiY2xhc3NBdHRyX2V4dEJ1dHRvbihpbmRleCxpaW5kZXgpXCIgPjxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtcGx1cy1jaXJjbGVcIj48L2k+PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLWdyb3VwXCIgdi1pZj1cImF0dHIuVHlwZT09J+W4g+WwlOWAvCdcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOmF0dHIuaGlkZGVuID09ICdUcnVlJz8nbm9uZSc6Jyd9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8Y2hlY2tib3gtZ3JvdXAgY2xhc3M9XCJjaGVja19yZW1lbWJlclB3ZFwiIEBjaGFuZ2U9XCJvbmNoZWNrXCIgOmRhdGEtaXNjaGVjaz1cImF0dHIuVmFsdWVcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieydtYXJnaW4tbGVmdCc6IHN1YmNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJz9zdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsyICsnJSc6JzEwcnB4J31cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxjaGVja2JveCA6dmFsdWU9XCJhdHRyLlZhbHVlXCIgOmNoZWNrZWQ9XCJhdHRyLlZhbHVlXCIvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0Pnt7YXR0ci5EaXNwTmFtZX19PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT48L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvbGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2NoZWNrYm94LWdyb3VwPlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZvcm0tZ3JvdXBcIiB2LWlmPVwiYXR0ci5UeXBlPT0n5pel5pyfJyB8fCBhdHRyLlR5cGU9PSfml7bpl7QnXCIgOnN0eWxlPVwieydkaXNwbGF5JzphdHRyLmhpZGRlbiA9PSAnVHJ1ZSc/J25vbmUnOicnfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cInN1YmNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5LiK5LiL5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4X3RpdGxlXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6c3ViY2xhc3NhdHRyLkZvbnQuTmFtZT9zdWJjbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpzdWJjbGFzc2F0dHIuRm9udC5TaXplP3N1YmNsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6c3ViY2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpzdWJjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpzdWJjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOnN1YmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpzdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWVcIj4qPC9pPnt7YXR0ci5EaXNwTmFtZX19OjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHBpY2tlciBtb2RlPVwiZGF0ZVwiIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiBAY2hhbmdlPVwib25kYXRlVGltZVwiIGNsYXNzPVwiZGF0ZV9pcHV0XCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgIDx2aWV3IGNsYXNzPVwicGlja2VyXCI+e3thdHRyLlZhbHVlfX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvcGlja2VyPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cInN1YmNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInR4X3RpdGxlMlwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOnN1YmNsYXNzYXR0ci5Gb250Lk5hbWU/c3ViY2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6c3ViY2xhc3NhdHRyLkZvbnQuU2l6ZT9zdWJjbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOnN1YmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6c3ViY2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6c3ViY2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6c3ViY2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6c3ViY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJ1wiPio8L2k+e3thdHRyLkRpc3BOYW1lfX06PC9wPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cGlja2VyIG1vZGU9XCJkYXRlXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBjaGFuZ2U9XCJvbmRhdGVUaW1lXCIgY2xhc3M9XCJkYXRlX2lwdXQgYXR0cl9maWVsZFwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzogYXR0ci5XaWR0aC5zcGxpdCgnJScpWzBdIC0gc3ViY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGggLSA3ICsnJSd9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgIDx2aWV3IGNsYXNzPVwicGlja2VyXCI+e3thdHRyLlZhbHVlfX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvcGlja2VyPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZvcm0tZ3JvdXBcIiB2LWlmPVwiYXR0ci5UeXBlPT0n5a2X5YW4JyB8fCBhdHRyLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJ1wiIDpzdHlsZT1cInsnZGlzcGxheSc6YXR0ci5oaWRkZW4gPT0gJ1RydWUnPydub25lJzonJ31cIj5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJzdWJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+S4iuS4i+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eF90aXRsZVwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOnN1YmNsYXNzYXR0ci5Gb250Lk5hbWU/c3ViY2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6c3ViY2xhc3NhdHRyLkZvbnQuU2l6ZT9zdWJjbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOnN1YmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6c3ViY2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6c3ViY2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6c3ViY2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6c3ViY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJ1wiPio8L2k+e3thdHRyLkRpc3BOYW1lfX06PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cGlja2VyIGNsYXNzPVwic2VjdGlvbl9pcHV0XCIgQGNoYW5nZT1cIm9uY2hhbmdlXCIgOnJhbmdlPVwiYXR0ci5kaWN0aXRlbVwiIHJhbmdlLWtleT1cIkNOX1NfTkFNRVwiIHYtaWY9XCJhdHRyLnNlbGVjdD09ZmFsc2VcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiA6ZGlzYWJsZWQ9XCJhdHRyLmVkaXQ/ZmFsc2U6dHJ1ZVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cIlwiPnt7IGF0dHIuVmFsdWUgfX08L2xhYmVsPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3BpY2tlcj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHNlbGVjdC1jeSA6dmFsdWU9XCJhdHRyLlZhbHVlXCIgOm5hbWU9XCJhdHRyLk5hbWVcIiA6b3B0aW9ucz1cImF0dHIuZGljdGl0ZW1cIiBzaG93Q2xlYXJJY29uPVwidHJ1ZVwiIEBjaGFuZ2U9XCJvbmNoYW5nZTJcIiB2LWVsc2UtaWY9XCJhdHRyLnNlbGVjdD09dHJ1ZVwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCI+PC9zZWxlY3QtY3k+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwic3ViY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSflt6blj7PluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwidHhfdGl0bGUyXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6c3ViY2xhc3NhdHRyLkZvbnQuTmFtZT9zdWJjbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpzdWJjbGFzc2F0dHIuRm9udC5TaXplP3N1YmNsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6c3ViY2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpzdWJjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpzdWJjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOnN1YmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpzdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3A+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxwaWNrZXIgY2xhc3M9XCJzZWN0aW9uX2lwdXQgYXR0cl9maWVsZFwiIEBjaGFuZ2U9XCJvbmNoYW5nZVwiIDpyYW5nZT1cImF0dHIuZGljdGl0ZW1cIiByYW5nZS1rZXk9XCJDTl9TX05BTUVcIiB2LWlmPVwiYXR0ci5zZWxlY3Q9PWZhbHNlXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOiBhdHRyLldpZHRoLnNwbGl0KCclJylbMF0gLSBzdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCAtIDcgKyclJ31cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJcIj57eyBhdHRyLlZhbHVlIH19PC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9waWNrZXI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzZWxlY3QtY3kgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIDpuYW1lPVwiYXR0ci5OYW1lXCIgOm9wdGlvbnM9XCJhdHRyLmRpY3RpdGVtXCIgc2hvd0NsZWFySWNvbj1cInRydWVcIiBAY2hhbmdlPVwib25jaGFuZ2UyXCIgdi1lbHNlLWlmPVwiYXR0ci5zZWxlY3Q9PXRydWVcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIj48L3NlbGVjdC1jeT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZm9ybS1ncm91cFwiIHYtaWY9XCJhdHRyLlR5cGU9PSflvJXnlKjlr7nosaEo5Y2V5LiqKScgfHwgYXR0ci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknXCIgOnN0eWxlPVwieydkaXNwbGF5JzphdHRyLmhpZGRlbiA9PSAnVHJ1ZSc/J25vbmUnOicnfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cInN1YmNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5LiK5LiL5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4X3RpdGxlXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6c3ViY2xhc3NhdHRyLkZvbnQuTmFtZT9zdWJjbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpzdWJjbGFzc2F0dHIuRm9udC5TaXplP3N1YmNsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6c3ViY2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpzdWJjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpzdWJjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOnN1YmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpzdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOWvueixoSjljZXkuKopJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxhIEB0YXA9XCJjbGFzc0F0dHJfQWRkUmVmXCIgOmRhdGEtY2xhc3NpZD1cImF0dHIuUmVsQ2xzLnNwbGl0KCd8JylbMF1cIiA6ZGF0YS1jbGFzc25hbWU9XCJhdHRyLlJlbENscy5zcGxpdCgnfCcpWzFdXCIgPjxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtcGx1cy1jaXJjbGVcIj48L2k+PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHRcIiB2LWlmPVwiYXR0ci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHBpY2tlciBjbGFzcz1cInNlbGVjdFwiIEBjaGFuZ2U9XCJjbGFzc0F0dHJfQWRkUmVmXCIgOnJhbmdlPVwiYXR0ci5SZWxDbHNMaXN0XCIgcmFuZ2Uta2V5PVwibmFtZVwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cIlwiPnt7IGF0dHIuVmFsdWUgfX08L2xhYmVsPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvcGlja2VyPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxhIGNsYXNzPVwiY2xhc3NfYXR0cl9hZGRfcmVmXCI+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiBkaXNhYmxlZD1cInRydWVcIiA+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwic3ViY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSflt6blj7PluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwidHhfdGl0bGUyXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6c3ViY2xhc3NhdHRyLkZvbnQuTmFtZT9zdWJjbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpzdWJjbGFzc2F0dHIuRm9udC5TaXplP3N1YmNsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6c3ViY2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpzdWJjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpzdWJjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOnN1YmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpzdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3A+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYXR0cl9maWVsZFwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzogYXR0ci5XaWR0aC5zcGxpdCgnJScpWzBdIC0gc3ViY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGggLSAxNiArJyUnfVwiIGRpc2FibGVkPVwidHJ1ZVwiID5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHQyXCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOWvueixoSjljZXkuKopJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxhIEB0YXA9XCJjbGFzc0F0dHJfQWRkUmVmXCIgOmRhdGEtY2xhc3NpZD1cImF0dHIuUmVsQ2xzLnNwbGl0KCd8JylbMF1cIiA6ZGF0YS1jbGFzc25hbWU9XCJhdHRyLlJlbENscy5zcGxpdCgnfCcpWzFdXCIgPjxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtcGx1cy1jaXJjbGVcIj48L2k+PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHQyXCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxwaWNrZXIgY2xhc3M9XCJzZWxlY3RcIiBAY2hhbmdlPVwiY2xhc3NBdHRyX0FkZFJlZlwiIDpyYW5nZT1cImF0dHIuUmVsQ2xzTGlzdFwiIHJhbmdlLWtleT1cIm5hbWVcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJcIj57eyBhdHRyLlZhbHVlIH19PC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3BpY2tlcj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8YSBjbGFzcz1cImNsYXNzX2F0dHJfYWRkX3JlZlwiPjxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtcGx1cy1jaXJjbGVcIj48L2k+PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLWdyb3VwXCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOS6uuWRmCdcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOmF0dHIuaGlkZGVuID09ICdUcnVlJz8nbm9uZSc6Jyd9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwic3ViY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSfkuIrkuIvluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHhfdGl0bGVcIiA6c3R5bGU9XCJ7J2ZvbnQtZmFtaWx5JzpzdWJjbGFzc2F0dHIuRm9udC5OYW1lP3N1YmNsYXNzYXR0ci5Gb250Lk5hbWU6J2luaXRpYWwnLCdmb250LXNpemUnOnN1YmNsYXNzYXR0ci5Gb250LlNpemU/c3ViY2xhc3NhdHRyLkZvbnQuU2l6ZTonaW5pdGlhbCcsJ2ZvbnQtd2VpZ2h0JzpzdWJjbGFzc2F0dHIuRm9udC5Cb2xkPydib2xkJzonaW5pdGlhbCcsJ2ZvbnQtc3R5bGUnOnN1YmNsYXNzYXR0ci5Gb250LlRpbHQ/J2l0YWxpYyc6J2luaXRpYWwnLCd0ZXh0LWRlY29yYXRpb24nOnN1YmNsYXNzYXR0ci5Gb250LlVuZGVybGluZT8ndW5kZXJsaW5lJzonaW5pdGlhbCcsJ2JhY2tncm91bmQtY29sb3InOnN1YmNsYXNzYXR0ci5Gb250LkJrX0NvbG9yLCdjb2xvcic6c3ViY2xhc3NhdHRyLkZvbnQuVGV4dF9Db2xvciwnd2lkdGgnOnN1YmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoKyclJ31cIj48aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZSB8fCBhdHRyLk5vdEVtcHR5PT0nMSdcIj4qPC9pPnt7YXR0ci5EaXNwTmFtZX19OjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8YSBjbGFzcz1cImNsYXNzX2F0dHJfYWRkX3BlclwiIEB0YXA9XCJjbGFzc0F0dHJfQWRkUGVyKGluZGV4LGlpbmRleClcIj48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXBsdXMtY2lyY2xlXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiIGRpc2FibGVkPVwidHJ1ZVwiID5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJzdWJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+W3puWPs+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJ0eF90aXRsZTJcIiA6c3R5bGU9XCJ7J2ZvbnQtZmFtaWx5JzpzdWJjbGFzc2F0dHIuRm9udC5OYW1lP3N1YmNsYXNzYXR0ci5Gb250Lk5hbWU6J2luaXRpYWwnLCdmb250LXNpemUnOnN1YmNsYXNzYXR0ci5Gb250LlNpemU/c3ViY2xhc3NhdHRyLkZvbnQuU2l6ZTonaW5pdGlhbCcsJ2ZvbnQtd2VpZ2h0JzpzdWJjbGFzc2F0dHIuRm9udC5Cb2xkPydib2xkJzonaW5pdGlhbCcsJ2ZvbnQtc3R5bGUnOnN1YmNsYXNzYXR0ci5Gb250LlRpbHQ/J2l0YWxpYyc6J2luaXRpYWwnLCd0ZXh0LWRlY29yYXRpb24nOnN1YmNsYXNzYXR0ci5Gb250LlVuZGVybGluZT8ndW5kZXJsaW5lJzonaW5pdGlhbCcsJ2JhY2tncm91bmQtY29sb3InOnN1YmNsYXNzYXR0ci5Gb250LkJrX0NvbG9yLCdjb2xvcic6c3ViY2xhc3NhdHRyLkZvbnQuVGV4dF9Db2xvciwnd2lkdGgnOnN1YmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoKyclJ31cIj48aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZSB8fCBhdHRyLk5vdEVtcHR5PT0nMSdcIj4qPC9pPnt7YXR0ci5EaXNwTmFtZX19OjwvcD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIDpzdHlsZT1cInsnd2lkdGgnOiBhdHRyLldpZHRoLnNwbGl0KCclJylbMF0gLSBzdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCAtIDE2ICsnJSd9XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGV4dC1yaWdodDJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8YSBjbGFzcz1cImNsYXNzX2F0dHJfYWRkX3BlclwiIEB0YXA9XCJjbGFzc0F0dHJfQWRkUGVyKGluZGV4LGlpbmRleClcIj48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXBsdXMtY2lyY2xlXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZm9ybS1ncm91cFwiIHYtaWY9XCJhdHRyLlR5cGU9PSflvJXnlKjpobnnm64nXCIgOnN0eWxlPVwieydkaXNwbGF5JzphdHRyLmhpZGRlbiA9PSAnVHJ1ZSc/J25vbmUnOicnfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cInN1YmNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5LiK5LiL5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4X3RpdGxlXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6c3ViY2xhc3NhdHRyLkZvbnQuTmFtZT9zdWJjbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpzdWJjbGFzc2F0dHIuRm9udC5TaXplP3N1YmNsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6c3ViY2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpzdWJjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpzdWJjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOnN1YmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpzdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgaHJlZj1cIiNcIiBjbGFzcz1cImNsYXNzX2F0dHJfYWRkX3ByalwiIEB0YXA9XCJjbGFzc0F0dHJfQWRkUHJqKGluZGV4LGlpbmRleClcIj48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXBsdXMtY2lyY2xlXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiIGRpc2FibGVkPVwidHJ1ZVwiID5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJzdWJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+W3puWPs+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJ0eF90aXRsZTJcIiA6c3R5bGU9XCJ7J2ZvbnQtZmFtaWx5JzpzdWJjbGFzc2F0dHIuRm9udC5OYW1lP3N1YmNsYXNzYXR0ci5Gb250Lk5hbWU6J2luaXRpYWwnLCdmb250LXNpemUnOnN1YmNsYXNzYXR0ci5Gb250LlNpemU/c3ViY2xhc3NhdHRyLkZvbnQuU2l6ZTonaW5pdGlhbCcsJ2ZvbnQtd2VpZ2h0JzpzdWJjbGFzc2F0dHIuRm9udC5Cb2xkPydib2xkJzonaW5pdGlhbCcsJ2ZvbnQtc3R5bGUnOnN1YmNsYXNzYXR0ci5Gb250LlRpbHQ/J2l0YWxpYyc6J2luaXRpYWwnLCd0ZXh0LWRlY29yYXRpb24nOnN1YmNsYXNzYXR0ci5Gb250LlVuZGVybGluZT8ndW5kZXJsaW5lJzonaW5pdGlhbCcsJ2JhY2tncm91bmQtY29sb3InOnN1YmNsYXNzYXR0ci5Gb250LkJrX0NvbG9yLCdjb2xvcic6c3ViY2xhc3NhdHRyLkZvbnQuVGV4dF9Db2xvciwnd2lkdGgnOnN1YmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoKyclJ31cIj48aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZSB8fCBhdHRyLk5vdEVtcHR5PT0nMSdcIj4qPC9pPnt7YXR0ci5EaXNwTmFtZX19OjwvcD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIDpzdHlsZT1cInsnd2lkdGgnOiBhdHRyLldpZHRoLnNwbGl0KCclJylbMF0gLSBzdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCAtIDE2ICsnJSd9XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGV4dC1yaWdodDJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8YSBjbGFzcz1cImNsYXNzX2F0dHJfYWRkX3ByalwiIEB0YXA9XCJjbGFzc0F0dHJfQWRkUHJqKGluZGV4LGlpbmRleClcIj48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXBsdXMtY2lyY2xlXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZm9ybS1ncm91cFwiIHYtaWY9XCJhdHRyLlR5cGU9PSfnvJbnoIEnXCIgOnN0eWxlPVwieydkaXNwbGF5JzphdHRyLmhpZGRlbiA9PSAnVHJ1ZSc/J25vbmUnOicnfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cInN1YmNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5LiK5LiL5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4X3RpdGxlXCIgOnN0eWxlPVwieydmb250LWZhbWlseSc6c3ViY2xhc3NhdHRyLkZvbnQuTmFtZT9zdWJjbGFzc2F0dHIuRm9udC5OYW1lOidpbml0aWFsJywnZm9udC1zaXplJzpzdWJjbGFzc2F0dHIuRm9udC5TaXplP3N1YmNsYXNzYXR0ci5Gb250LlNpemU6J2luaXRpYWwnLCdmb250LXdlaWdodCc6c3ViY2xhc3NhdHRyLkZvbnQuQm9sZD8nYm9sZCc6J2luaXRpYWwnLCdmb250LXN0eWxlJzpzdWJjbGFzc2F0dHIuRm9udC5UaWx0PydpdGFsaWMnOidpbml0aWFsJywndGV4dC1kZWNvcmF0aW9uJzpzdWJjbGFzc2F0dHIuRm9udC5VbmRlcmxpbmU/J3VuZGVybGluZSc6J2luaXRpYWwnLCdiYWNrZ3JvdW5kLWNvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5Ca19Db2xvciwnY29sb3InOnN1YmNsYXNzYXR0ci5Gb250LlRleHRfQ29sb3IsJ3dpZHRoJzpzdWJjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWUgfHwgYXR0ci5Ob3RFbXB0eT09JzEnXCI+KjwvaT57e2F0dHIuRGlzcE5hbWV9fTo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cInN1YmNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInR4X3RpdGxlMlwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOnN1YmNsYXNzYXR0ci5Gb250Lk5hbWU/c3ViY2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6c3ViY2xhc3NhdHRyLkZvbnQuU2l6ZT9zdWJjbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOnN1YmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6c3ViY2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6c3ViY2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6c3ViY2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6c3ViY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJ1wiPio8L2k+e3thdHRyLkRpc3BOYW1lfX06PC9wPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImF0dHJfZmllbGRcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIHN1YmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gNyArJyUnfVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZvcm0tZ3JvdXBcIiB2LWlmPVwiYXR0ci5UeXBlPT0n55yB5biC5Yy6J1wiIDpzdHlsZT1cInsnZGlzcGxheSc6YXR0ci5oaWRkZW4gPT0gJ1RydWUnPydub25lJzonJ31cIj5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJzdWJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+S4iuS4i+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eF90aXRsZVwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOnN1YmNsYXNzYXR0ci5Gb250Lk5hbWU/c3ViY2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6c3ViY2xhc3NhdHRyLkZvbnQuU2l6ZT9zdWJjbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOnN1YmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6c3ViY2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6c3ViY2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6c3ViY2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6c3ViY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJ1wiPio8L2k+e3thdHRyLkRpc3BOYW1lfX06PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cGlja2VyQWRkcmVzcyBjbGFzcz1cImRhdGVfaXB1dFwiIEBjaGFuZ2U9XCJhZGRyZXNzY2hhbmdlXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCIgPnt7YXR0ci5WYWx1ZX19PC9waWNrZXJBZGRyZXNzPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cInN1YmNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInR4X3RpdGxlMlwiIDpzdHlsZT1cInsnZm9udC1mYW1pbHknOnN1YmNsYXNzYXR0ci5Gb250Lk5hbWU/c3ViY2xhc3NhdHRyLkZvbnQuTmFtZTonaW5pdGlhbCcsJ2ZvbnQtc2l6ZSc6c3ViY2xhc3NhdHRyLkZvbnQuU2l6ZT9zdWJjbGFzc2F0dHIuRm9udC5TaXplOidpbml0aWFsJywnZm9udC13ZWlnaHQnOnN1YmNsYXNzYXR0ci5Gb250LkJvbGQ/J2JvbGQnOidpbml0aWFsJywnZm9udC1zdHlsZSc6c3ViY2xhc3NhdHRyLkZvbnQuVGlsdD8naXRhbGljJzonaW5pdGlhbCcsJ3RleHQtZGVjb3JhdGlvbic6c3ViY2xhc3NhdHRyLkZvbnQuVW5kZXJsaW5lPyd1bmRlcmxpbmUnOidpbml0aWFsJywnYmFja2dyb3VuZC1jb2xvcic6c3ViY2xhc3NhdHRyLkZvbnQuQmtfQ29sb3IsJ2NvbG9yJzpzdWJjbGFzc2F0dHIuRm9udC5UZXh0X0NvbG9yLCd3aWR0aCc6c3ViY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlIHx8IGF0dHIuTm90RW1wdHk9PScxJ1wiPio8L2k+e3thdHRyLkRpc3BOYW1lfX06PC9wPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cGlja2VyQWRkcmVzcyBjbGFzcz1cImRhdGVfaXB1dCBhdHRyX2ZpZWxkXCIgQGNoYW5nZT1cImFkZHJlc3NjaGFuZ2VcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIHN1YmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gNyArJyUnfVwiPnt7YXR0ci5WYWx1ZX19PC9waWNrZXJBZGRyZXNzPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ2LXBhbmVsZGVsXCI+PGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIGNsYXNzPVwicGFuZWxfZGVsXCIgQHRhcD1cInBhbmVsX2RlbChpbmRleClcIj48aSBjbGFzcz1cImFjZS1pY29uIGZ1LWRlbGV0ZVwiPjwvaT48L2E+PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHRcclxuXHRcdDxidXR0b24gdHlwZT1cImRlZmF1bHRcIiBAdGFwPVwiY2FuY2VsXCIgY2xhc3M9XCJidG5fY2FuY2VsXCI+5Y+W5raIPC9idXR0b24+XHJcblx0XHQ8YnV0dG9uIHR5cGU9XCJkZWZhdWx0XCIgQHRhcD1cInNhdmFcIiBjbGFzcz1cImJ0bl9hZGRcIj57e3RpdGxlfX08L2J1dHRvbj5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+IFxyXG5cclxuPHNjcmlwdD5cclxuXHRpbXBvcnQgcGlja2VyQWRkcmVzcyBmcm9tICcuLi8uLi9qcy9waWNrZXJBZGRyZXNzL3BpY2tlckFkZHJlc3MudnVlJ1xyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdGNvbXBvbmVudHM6IHtcclxuICAgICAgICAgICAgcGlja2VyQWRkcmVzc1xyXG4gICAgICAgIH0sXHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdHRpdGxlOiAn5paw5aKeJyxcclxuXHRcdFx0XHRwYXJhbTp7fSxcclxuXHRcdFx0XHRjbGFzc0F0dHJMaXN0OltdLFxyXG5cdFx0XHRcdGNsYXNzR3JpZFN0eWxlOltdLFxyXG5cdFx0XHRcdGVkaXRfaW5pdGFsX2V2ZW50OlwiXCIsICAvL+W8ueeql+WIneWni+WMluS6i+S7tklEXHJcblx0XHRcdFx0ZWRpdF9va19ldmVudDpcIlwiLCAgICAgIC8v5by556qX54K55Ye7T0sg6Kem5Y+R5LqL5Lu2SURcclxuXHRcdFx0XHRlZGl0X3NlbGVjdF9jb21wb3NlX2V2ZW50OlwiXCIsICAvL+mAieaLqee7hOaIkOWvueixoeaXtuiwg+eUqFxyXG5cdFx0XHRcdGVkaXRfY29tcG9zZV9jbHNfaWQ6XCJcIixcclxuXHRcdFx0XHRnbG9iYWxfYXR0cjpbXSxcclxuXHRcdFx0XHRyZWZkYXRhc3RvcmU6IFtdLFx0ICAgLy/lvJXnlKjmlbDmja7lrZjlgqjljLovLyB7YXR0cjonR19QUkpfJyArIGJpbmRhdHRyICsgJ19JRCcsIHZhbHVlOmluZm8uaWR9XHJcblx0XHRcdFx0c2NhbkNvZGVWYWw6XCJcIixcclxuXHRcdFx0XHRzdWJDbGFzc0F0dHJMaXN0OltdLFxyXG5cdFx0XHRcdHN1YlBhbmVsTGlzdDpbXSxcclxuXHRcdFx0XHRzdWJDbGFzc0dyaWRTdHlsZTpbXSxcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdG9uTG9hZChvcHRpb25zKSB7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKG9wdGlvbnMpO1xyXG5cdFx0XHR1bmkuc2V0TmF2aWdhdGlvbkJhclRpdGxlKHsgdGl0bGU6IG9wdGlvbnMudGl0bGVuYW1lfSk7IC8v6K6+572u6aG26YOo5qCH6aKYIFxyXG5cdFx0XHR2YXIgcGFyYW0gPSBKU09OLnBhcnNlKG9wdGlvbnMucGFyYW0pO1xyXG5cdFx0XHR0aGlzLiRkYXRhLnRpdGxlID0gcGFyYW0uQWRkX0J0bk5hbWU/cGFyYW0uQWRkX0J0bk5hbWU6b3B0aW9ucy50aXRsZW5hbWU7IC8v6K6+572u5oyJ6ZKu5paH5a2XXHJcblx0XHRcdGNvbnNvbGUubG9nKHBhcmFtKTtcclxuXHRcdFx0aWYoIXBhcmFtLk1hc3Rlcl9DbHMuVmlld19TdHlsZSl7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50Olwi6K+l5Yqf6IO954K55pyq6YWN572u55WM6Z2i56qX5Y+j77yM6K+36YeN5paw6YWN572u77yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmKCFwYXJhbS5NYXN0ZXJfQ2xzLlZpZXdfU3R5bGUuTmFtZSl7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50Olwi6K+l5Yqf6IO954K55pyq6YWN572u56qX5Y+j5qC35byP77yM6K+36YeN5paw6YWN572u77yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuJGRhdGEucGFyYW0gPSBwYXJhbTtcclxuXHRcdFx0Ly8gdmFyIGVkaXRfZGxnID0ge1xyXG5cdFx0XHQvLyAgICAgTW9kZWw6IHBhcmFtLkVkaXREbGdNb2RlLFxyXG5cdFx0XHQvLyAgICAgTmFtZTogcGFyYW0uTWFzdGVyX0Nscy5WaWV3X1N0eWxlLk5hbWVcclxuXHRcdFx0Ly8gfVxyXG5cdFx0XHQvL+S4u+aVsOaNruexu+iOt+WPllxyXG5cdFx0XHR2YXIgZGF0YUluZm8gPSB7XHJcblx0XHRcdFx0Y2xhc3NfaWQ6IHBhcmFtLk1hc3Rlcl9DbHMuSURcclxuXHRcdFx0fTtcclxuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdFx0JHRoaXMuJHN0b3JlLnN0YXRlLnRoaXNhcmVhRnVuY0lEID0gcGFyYW0uTWFzdGVyX0Nscy5JRDtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Y2xhc3NBdHRyTGlzdCk7XHJcblx0XHRcdGlmKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzQXR0ckxpc3Qpe1xyXG5cdFx0XHQgXHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0ID0gJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Y2xhc3NBdHRyTGlzdC5kYXRhO1xyXG5cdFx0XHRcdCR0aGlzLmNsYXNzR3JpZFN0eWxlSW5mbyhwYXJhbS5NYXN0ZXJfQ2xzLklELCR0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuVmlld19TdHlsZS5OYW1lLCdNYXN0Jyk7XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdCR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnY2xhc3NBdHRyTGlzdCcsZGF0YUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coc3VjY2Vzcyk7XHJcblx0XHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QgPSBzdWNjZXNzLmRhdGE7XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHQkdGhpcy5jbGFzc0dyaWRTdHlsZUluZm8ocGFyYW0uTWFzdGVyX0Nscy5JRCwkdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLlZpZXdfU3R5bGUuTmFtZSwnTWFzdCcpO1xyXG5cdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMVwiLGNvbnRlbnQ6c3VjY2Vzcy5tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMS4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdFx0XHJcblx0XHRcdC8v5LuO5pWw5o2u57G76I635Y+WXHJcblx0XHRcdHZhciBzdWJkYXRhSW5mbyA9IHtcclxuXHRcdFx0XHRjbGFzc19pZDogcGFyYW0uU3ViX0Nscy5JRFxyXG5cdFx0XHR9O1xyXG5cdFx0XHQkdGhpcy4kc3RvcmUuc3RhdGUudGhpc2FyZWFGdW5jU3ViSUQgPSBwYXJhbS5TdWJfQ2xzLklEO1xyXG5cdFx0XHRpZigkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRTdWJDbGFzc0F0dHJMaXN0KXtcclxuXHRcdFx0IFx0JHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdCA9ICR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFN1YkNsYXNzQXR0ckxpc3QuZGF0YTtcclxuXHRcdFx0XHRcdFx0JHRoaXMuY2xhc3NHcmlkU3R5bGVJbmZvKHBhcmFtLlN1Yl9DbHMuSUQsJHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5WaWV3X1N0eWxlLk5hbWUsJ1N1YicpO1xyXG5cdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHQkdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3N1YkNsYXNzQXR0ckxpc3QnLHN1YmRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9PntcclxuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0ID0gc3VjY2Vzcy5kYXRhO1xyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0JHRoaXMuY2xhc3NHcmlkU3R5bGVJbmZvKHBhcmFtLlN1Yl9DbHMuSUQsJHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5WaWV3X1N0eWxlLk5hbWUsJ1N1YicpO1xyXG5cdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMV8xXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xXzEuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRjYW5jZWwoZSl7XHJcblx0XHRcdFx0dW5pLm5hdmlnYXRlQmFjayh7XHJcblx0XHRcdFx0XHRkZWx0YToxIC8v6L+U5Zue5bGC5pWw77yMMuWImeS4iuS4iumhtVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRwYW5lbF9kZWwoaW5kZXgpe1xyXG5cdFx0XHRcdGlmICh0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtpbmRleF0uc2NhbkNvZGVWYWwgPT0gdGhpcy4kZGF0YS5zY2FuQ29kZVZhbCkge1xyXG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5zY2FuQ29kZVZhbD0nJztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy4kZGF0YS5zdWJQYW5lbExpc3Quc3BsaWNlKGluZGV4LCAxKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0YXN5bmMgY2xhc3NHcmlkU3R5bGVJbmZvKGNsc2lkLHN0eWxlTmFtZSxjbHNUeXBlKXtcclxuXHRcdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0XHRcdHZhciBncmlkc3R5bGVJbmZvID0ge1xyXG5cdFx0XHRcdFx0Y2xhc3NfaWQ6IGNsc2lkLFxyXG5cdFx0XHRcdFx0bmFtZTogc3R5bGVOYW1lLFxyXG5cdFx0XHRcdFx0dHlwZTogJzInXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHQkdGhpcy4kc3RvcmUuc3RhdGUudGhpc0VkaXROYW1lID0gc3R5bGVOYW1lO1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzR3JpZFN0eWxlSW5mbyk7XHJcblx0XHRcdFx0Ly/ojrflj5bkuLvmlbDmja7nsbvnlYzpnaLmoLflvI9cclxuXHRcdFx0XHRpZihjbHNUeXBlPT0nTWFzdCcpe1xyXG5cdFx0XHRcdFx0aWYoJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Y2xhc3NHcmlkU3R5bGVJbmZvKXtcclxuXHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUgPSAkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRjbGFzc0dyaWRTdHlsZUluZm8uZGF0YTtcclxuXHRcdFx0XHRcdFx0JHRoaXMuY2xhc3NfYXR0cl9pbml0KCk7XHJcblx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0Ly9jb25zb2xlLmxvZyhncmlkc3R5bGVJbmZvKTtcclxuXHRcdFx0XHRcdFx0JHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdjbGFzc0dyaWRTdHlsZUluZm8nLGdyaWRzdHlsZUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHN1Y2Nlc3MuZGF0YS5TdHlsZURlZiA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhLlN0eWxlRGVmKTtcclxuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlID0gc3VjY2Vzcy5kYXRhO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHQkdGhpcy5jbGFzc19hdHRyX2luaXQoKTtcclxuXHRcdFx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMS4yXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMS4zXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSBpZihjbHNUeXBlPT0nU3ViJyl7ICAvL+iOt+WPluS7juaVsOaNruexu+eVjOmdouagt+W8j1xyXG5cdFx0XHRcdFx0aWYoJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0U3ViQ2xhc3NHcmlkU3R5bGVJbmZvKXtcclxuXHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUgPSAkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRTdWJDbGFzc0dyaWRTdHlsZUluZm8uZGF0YTtcclxuXHRcdFx0XHRcdFx0JHRoaXMuc3ViQ2xhc3NfYXR0cl9pbml0KCk7XHJcblx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0Ly9jb25zb2xlLmxvZyhncmlkc3R5bGVJbmZvKTtcclxuXHRcdFx0XHRcdFx0JHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdzdWJDbGFzc0dyaWRTdHlsZUluZm8nLGdyaWRzdHlsZUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHN1Y2Nlc3MuZGF0YS5TdHlsZURlZiA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhLlN0eWxlRGVmKTtcclxuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlID0gc3VjY2Vzcy5kYXRhO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHQkdGhpcy5zdWJDbGFzc19hdHRyX2luaXQoKTtcclxuXHRcdFx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMS4yXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMS4zXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0b250YXAoZSl7IC8v5omr56CB5Yqf6IO9XHJcblx0XHRcdFx0Ly9jb25zb2xlLmxvZyhlLnRhcmdldClcclxuXHRcdFx0XHRnZXRBcHAoKS5vblNjYW4oKHJlc3VsdCk9PntcclxuXHRcdFx0XHRcdC8vY29uc29sZS5sb2cocmVzdWx0LmRlY29kZWRhdGEpO1xyXG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlPXJlc3VsdC5kZWNvZGVkYXRhO1xyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0sXHJcblx0XHRcdHNjYW5fb250YXAoZSl7IC8v5omr56CB5Yy65omr56CB5Yqf6IO9XHJcblx0XHRcdFx0Ly9jb25zb2xlLmxvZyhlLnRhcmdldClcclxuXHRcdFx0XHRnZXRBcHAoKS5vblNjYW4oKHJlc3VsdCk9PntcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlc3VsdC5kZWNvZGVkYXRhKTtcclxuXHRcdFx0XHRcdHZhciBpc2ZsYWc9dHJ1ZTtcclxuXHRcdFx0XHRcdGZvcih2YXIgaSBpbiB0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdCl7XHJcblx0XHRcdFx0XHRcdGlmKHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2ldLnNjYW5Db2RlVmFsID09IHJlc3VsdC5kZWNvZGVkYXRhKSBcclxuXHRcdFx0XHRcdFx0XHRpc2ZsYWc9ZmFsc2U7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdGlmIChpc2ZsYWcpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5zY2FuQ29kZVZhbD1yZXN1bHQuZGVjb2RlZGF0YTtcclxuXHRcdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLnBhcmFtLlNjYW5fQ29kZS5JbnB1dF9DaGFuZ2VfRXZlbnQuSUQ7XHJcblx0XHRcdFx0XHRcdGlmIChldmVudGlkKSB7XHJcblx0XHRcdFx0XHQgICAgICAgIHZhciByZXE9W107XHJcblx0XHRcdFx0XHQgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdDtcclxuXHRcdFx0XHRcdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0ICAgICAgICBcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcclxuXHRcdFx0XHRcdCAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdCAgICAgICAgXHRcdHZhciBhciA9IGF0dHJbal07XHJcblx0XHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKVxyXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xyXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZT09J+W8leeUqOmhueebricpXHJcblx0XHRcdFx0XHQgICAgICAgIFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsdWU6IGFyLlZhbElEID9hci5WYWxJRCA6JycgfSk7XHJcblx0XHRcdFx0XHQgICAgICAgIFx0XHRlbHNlIGlmKGFyLlR5cGU9PSfluIPlsJTlgLwnKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsdWU6IGFyLlZhbHVlPycxJzonMCd9KTtcclxuXHRcdFx0XHRcdCAgICAgICAgXHRcdGVsc2VcclxuXHRcdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWUgP2FyLlZhbHVlIDonJ30pO1xyXG5cdFx0XHRcdFx0ICAgICAgICBcdH1cclxuXHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXHJcblx0XHRcdFx0XHQgICAgICAgICAgICBlZHR5cGU6IFwiMFwiLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIHJjbHNpZDogJycsXHJcblx0XHRcdFx0XHQgICAgICAgICAgICByb2JqaWQ6ICcnLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsXHJcblx0XHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIGF0dHI6IHJlcSxcclxuXHRcdFx0XHRcdFx0XHRcdGlucHV0UGFyYW10ZXI6W3sgYXR0cjogJ2lucHV0XzMwMzcnLCB2YWx1ZTogdGhpcy4kZGF0YS5zY2FuQ29kZVZhbCB9XVxyXG5cdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHQgICAgICAgIHRoaXMuc2Nhbl9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgXCJcIik7XHJcblx0XHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0sXHJcblx0XHRcdG9uYXJyb3coaW5kZXgsb3Blbil7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coaW5kZXgrJy0tJytvcGVuKTtcclxuXHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLk9wZW49b3Blbj09dHJ1ZT9mYWxzZTp0cnVlO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRvbmRhdGVUaW1lKGUpIHtcclxuXHRcdFx0XHQvL2NvbnNvbGUubG9nKGUudGFyZ2V0KVxyXG5cdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZT1lLnRhcmdldC52YWx1ZTtcclxuXHRcdFx0fSxcclxuXHRcdFx0b25jaGFuZ2UoZSkge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcclxuXHRcdFx0XHR2YXIgdmFsdWU9dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLmRpY3RpdGVtW2UudGFyZ2V0LnZhbHVlXTtcclxuXHRcdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dO1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKGRhdGFfYXR0cik7XHJcblx0XHRcdFx0aWYgKHZhbHVlLk5hbWUgIT0gZGF0YV9hdHRyLlZhbHVlKSB7XHJcblx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9dmFsdWUuTmFtZTtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZSk7XHJcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5hY3Rpb247XHJcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xyXG5cdFx0XHRcdCAgICAgICAgLy8gc2VsZi5ldmVudF9ub19zdWIgPSAxO1xyXG5cdFx0XHRcdCAgICAgICAgdmFyIHJlcT1bXTtcclxuXHRcdFx0XHQgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcclxuXHRcdFx0XHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHQgICAgICAgIFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xyXG5cdFx0XHRcdCAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHQgICAgICAgIFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xyXG5cdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXHJcblx0XHRcdFx0ICAgICAgICBcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xyXG5cdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGU9PSflvJXnlKjpobnnm64nKVxyXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbElEID9hci5WYWxJRCA6JycgfSk7XHJcblx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8JylcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlPycxJzonMCd9KTtcclxuXHRcdFx0XHQgICAgICAgIFx0XHRlbHNlXHJcblx0XHRcdFx0ICAgICAgICBcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWUgP2FyLlZhbHVlIDonJ30pO1xyXG5cdFx0XHRcdCAgICAgICAgXHR9XHJcblx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcclxuXHRcdFx0XHQgICAgICAgICAgICBldmVudGlkOiBldmVudGlkLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIGVkdHlwZTogXCIwXCIsXHJcblx0XHRcdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdFx0XHQgICAgICAgICAgICByY2xzaWQ6ICcnLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogJycsXHJcblx0XHRcdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdFx0XHQgICAgICAgICAgICBjbHNpZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELFxyXG5cdFx0XHRcdCAgICAgICAgICAgIG9iamlkOiBcIlwiLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIGF0dHI6IHJlcSxcclxuXHRcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHQgICAgICAgIHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRvbmNoYW5nZTIoaXRlbSx2YWx1ZSxkZWx2YWx1ZSkge1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGl0ZW0pO1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHZhbHVlKTtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhkZWx2YWx1ZSk7XHJcblx0XHRcdFx0aWYoaXRlbS5sZW5ndGg9PTApeyAvL+S4uuepuuaXtu+8jOa4heepuuWxnuaAp3ZhbHVlXHJcblx0XHRcdFx0XHR2YXIgaW5kZXggLGlpbmRleCxkaW5kZXg9MDtcclxuXHRcdFx0XHRcdGZvcih2YXIgaSBpbiB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Qpe1xyXG5cdFx0XHRcdFx0XHRmb3IodmFyIGogaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHIpe1xyXG5cdFx0XHRcdFx0XHRcdGZvcih2YXIgZCBpbiB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cltqXS5kaWN0aXRlbSl7XHJcblx0XHRcdFx0XHRcdFx0XHRpZihkZWx2YWx1ZVswXS5OYW1lID09IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpXS5BdHRyW2pdLmRpY3RpdGVtW2RdLk5hbWUpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cltqXS5WYWx1ZT1cIlwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdGZvcih2YXIgdiBpbiBpdGVtKXtcclxuXHRcdFx0XHRcdHZhciBpbmRleCAsaWluZGV4LGRpbmRleD0wO1xyXG5cdFx0XHRcdFx0Zm9yKHZhciBpIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCl7XHJcblx0XHRcdFx0XHRcdGZvcih2YXIgaiBpbiB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cil7XHJcblx0XHRcdFx0XHRcdFx0Zm9yKHZhciBkIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpXS5BdHRyW2pdLmRpY3RpdGVtKXtcclxuXHRcdFx0XHRcdFx0XHRcdGlmKGl0ZW1bdl0uTmFtZSA9PSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cltqXS5kaWN0aXRlbVtkXS5OYW1lKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aW5kZXg9aTtpaW5kZXg9ajtkaW5kZXg9ZDtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHZhciBpdGVtdmFsdWUgPSBpdGVtW3ZdO1xyXG5cdFx0XHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdO1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhX2F0dHIpO1xyXG5cdFx0XHRcdFx0aWYgKGl0ZW12YWx1ZS5OYW1lICE9IGRhdGFfYXR0ci5WYWx1ZSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5WYWx1ZT12YWx1ZTtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF0uVmFsdWUpO1xyXG5cdFx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdLmFjdGlvbjtcclxuXHRcdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcclxuXHRcdFx0XHRcdCAgICAgICAgLy8gc2VsZi5ldmVudF9ub19zdWIgPSAxO1xyXG5cdFx0XHRcdFx0ICAgICAgICB2YXIgcmVxPVtdO1xyXG5cdFx0XHRcdFx0ICAgICAgICB2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XHJcblx0XHRcdFx0XHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdCAgICAgICAgXHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XHJcblx0XHRcdFx0XHQgICAgICAgIFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHQgICAgICAgIFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xyXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJylcclxuXHRcdFx0XHRcdCAgICAgICAgXHRcdFx0aWYoYXIuVmFsdWU9PSfor7cnKSBhci5WYWx1ZT0nJztcclxuXHRcdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGU9PSflvJXnlKjpobnnm64nKVxyXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcclxuXHRcdFx0XHRcdCAgICAgICAgXHRcdGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlPycxJzonMCd9KTtcclxuXHRcdFx0XHRcdCAgICAgICAgXHRcdGVsc2UgaWYoYXIuVHlwZT09J+Wtl+WFuCcgfHwgYXIuVHlwZT09J+Wtl+WFuC3lrZfnrKbkuLInKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBpdGVtdmFsdWUuTmFtZX0pO1xyXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZVxyXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWUgP2FyLlZhbHVlIDonJ30pO1xyXG5cdFx0XHRcdFx0ICAgICAgICBcdH1cclxuXHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXHJcblx0XHRcdFx0XHQgICAgICAgICAgICBlZHR5cGU6IFwiMFwiLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIHJjbHNpZDogJycsXHJcblx0XHRcdFx0XHQgICAgICAgICAgICByb2JqaWQ6ICcnLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXHJcblx0XHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIGF0dHI6IHJlcSxcclxuXHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0ICAgICAgICB0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcclxuXHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRvbmV2ZW50KGUpe1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcclxuXHRcdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dO1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGRhdGFfYXR0cik7XHJcblx0XHRcdFx0aWYgKGUudGFyZ2V0LnZhbHVlICE9IGRhdGFfYXR0ci5WYWx1ZSkge1xyXG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlPWUudGFyZ2V0LnZhbHVlO1xyXG5cdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uYWN0aW9uO1xyXG5cdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcclxuXHRcdFx0XHQgICAgICAgIC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcclxuXHRcdFx0XHQgICAgICAgIHZhciByZXE9W107XHJcblx0XHRcdFx0ICAgICAgICB2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XHJcblx0XHRcdFx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0ICAgICAgICBcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcclxuXHRcdFx0XHQgICAgICAgIFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0ICAgICAgICBcdFx0dmFyIGFyID0gYXR0cltqXTtcclxuXHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKVxyXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0aWYoYXIuVmFsdWU9PSfor7cnKSBhci5WYWx1ZT0nJztcclxuXHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcclxuXHRcdFx0XHQgICAgICAgIFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWxJRCA/YXIuVmFsSUQgOicnIH0pO1xyXG5cdFx0XHRcdCAgICAgICAgXHRcdGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXHJcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZT8nMSc6JzAnfSk7XHJcblx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZVxyXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcclxuXHRcdFx0XHQgICAgICAgIFx0fVxyXG5cdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcclxuXHRcdFx0XHQgICAgICAgICAgICBlZHR5cGU6IFwiMFwiLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogJycsXHJcblx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiAnJyxcclxuXHRcdFx0XHQgICAgICAgICAgICByb2JqaWQ6ICcnLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogJycsXHJcblx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcclxuXHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcclxuXHRcdFx0XHQgICAgICAgICAgICBhdHRyOiByZXEsXHJcblx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0ICAgICAgICB0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBkYXRhX2F0dHIpO1xyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRvbmNoZWNrKGUpIHtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XHJcblx0XHRcdFx0dmFyIGlzY2hlY2tlZCA9IGUudGFyZ2V0LmRhdGFzZXQuaXNjaGVjaz9mYWxzZTp0cnVlO1xyXG5cdFx0XHRcdHZhciBkYXRhX2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV07XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZGF0YV9hdHRyKTtcclxuXHRcdFx0XHRpZiAoaXNjaGVja2VkICE9IGRhdGFfYXR0ci5WYWx1ZSkge1xyXG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlPWlzY2hlY2tlZDtcclxuXHRcdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLmFjdGlvbjtcclxuXHRcdFx0XHRcdGlmIChldmVudGlkKSB7XHJcblx0XHRcdFx0ICAgICAgICAvLyBzZWxmLmV2ZW50X25vX3N1YiA9IDE7XHJcblx0XHRcdFx0ICAgICAgICB2YXIgcmVxPVtdO1xyXG5cdFx0XHRcdCAgICAgICAgdmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xyXG5cdFx0XHRcdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdCAgICAgICAgXHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XHJcblx0XHRcdFx0ICAgICAgICBcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdCAgICAgICAgXHRcdHZhciBhciA9IGF0dHJbal07XHJcblx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJylcclxuXHRcdFx0XHQgICAgICAgIFx0XHRcdGlmKGFyLlZhbHVlPT0n6K+3JykgYXIuVmFsdWU9Jyc7XHJcblx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZT09J+W8leeUqOmhueebricpXHJcblx0XHRcdFx0ICAgICAgICBcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcclxuXHRcdFx0XHQgICAgICAgIFx0XHRlbHNlIGlmKGFyLlR5cGU9PSfluIPlsJTlgLwnKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWU/JzEnOicwJ30pO1xyXG5cdFx0XHRcdFx0XHRcdFx0ZWxzZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWUgP2FyLlZhbHVlIDonJ30pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0ICAgICAgICBcdH1cclxuXHRcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHQgICAgICAgIHZhciBpbmZvID0ge1xyXG5cdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXHJcblx0XHRcdFx0ICAgICAgICAgICAgZWR0eXBlOiBcIjBcIixcclxuXHRcdFx0XHQgICAgICAgICAgICBwcm9qZWN0aWQ6ICcnLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIHJjbHNpZDogJycsXHJcblx0XHRcdFx0ICAgICAgICAgICAgcm9iamlkOiAnJyxcclxuXHRcdFx0XHQgICAgICAgICAgICB1c2VybG9naW46ICcnLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXHJcblx0XHRcdFx0ICAgICAgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogcmVxLFxyXG5cdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XHJcblx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0XHJcblx0XHRcdH0sXHJcblx0XHRcdGlucHV0VmFsTGlzdElzRGVsKGluZGV4KXtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhpbmRleCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLmlucHV0VmFsTGlzdC5zcGxpY2UoaW5kZXgsIDEpOyAvL+WIoOmZpHRhYlBhZ2Vqc29u55qE5YaF5a65XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2codGhpcy4kZGF0YS5pbnB1dFZhbExpc3QpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRhZGRyZXNzY2hhbmdlKGUpIHtcclxuXHRcdFx0ICAgIC8vIGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcclxuXHRcdFx0ICAgIGNvbnNvbGUubG9nKGUuZGF0YS5qb2luKCc7JykpXHJcblx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlPWUuZGF0YS5qb2luKCc7Jyk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGNsYXNzQXR0cl9leHRCdXR0b24oaW5kZXgsaWluZGV4KXtcclxuXHRcdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0XHRcdHZhciBiZWZvcmVfY2xpY2tfYnV0dG9uID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdLmJlZm9yZV9jbGlja19idXR0b247XHJcblx0XHRcdFx0dmFyIGJ1dHRvbl9jYWxsYmFjayA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5idXR0b25fY2FsbGJhY2s7XHJcblx0XHRcdFx0aWYoIWJlZm9yZV9jbGlja19idXR0b24pe1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OlwiYmVmb3JlX2NsaWNrX2J1dHRvbi1ldmVudF9pZOS4uuepuu+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZighYnV0dG9uX2NhbGxiYWNrKXtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcImJ1dHRvbl9jYWxsYmFjay1ldmVudF9pZOS4uuepuu+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF07XHJcblx0XHRcdFx0dGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnRfUmV0dXJuKGJlZm9yZV9jbGlja19idXR0b24sIGRhdGFfYXR0ciwgYnV0dG9uX2NhbGxiYWNrLCBpbmRleCxpaW5kZXgpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRzY2FuX2NsYXNzQXR0cl9leHRCdXR0b24oZSl7ICAvLy0tLS0tLS0tLeacquWujOaIkC0tLS0tLS0tLS0tXHJcblx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdFx0XHR2YXIgQmVmb3JlX1NlbGVjdF9FdmVudCA9ICR0aGlzLiRkYXRhLnBhcmFtLlNjYW5fQ29kZS5CZWZvcmVfU2VsZWN0X0V2ZW50LklEO1xyXG5cdFx0XHRcdHZhciBBZnRlcl9TZWxlY3RfRXZlbnQgPSAkdGhpcy4kZGF0YS5wYXJhbS5TY2FuX0NvZGUuQWZ0ZXJfU2VsZWN0X0V2ZW50LklEO1xyXG5cdFx0XHRcdGlmKCFCZWZvcmVfU2VsZWN0X0V2ZW50KXtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIumAieaLqeaMiemSruWJjeS6i+S7tuS4uuepuu+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZighQWZ0ZXJfU2VsZWN0X0V2ZW50KXtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuaWsOWinuaMiemSruWQjuS6i+S7tuS4uuepuu+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQvLyB2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF07XHJcblx0XHRcdFx0dGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnRfUmV0dXJuKEJlZm9yZV9TZWxlY3RfRXZlbnQsICcnLCBBZnRlcl9TZWxlY3RfRXZlbnQsICcnLCAnJyk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGNsYXNzQXR0cl9BZGRQZXIoaW5kZXgsaWluZGV4KXtcclxuXHRcdFx0XHR2YXIgcGFyYW09e2luZGV4OmluZGV4LGlpbmRleDppaW5kZXh9O1xyXG5cdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdFx0dXJsOicuLi9zZWxwc24vaW5kZXg/bXVsaXQ9ZmFsc2UmcGFyYW09JytKU09OLnN0cmluZ2lmeShwYXJhbSksXHJcblx0XHRcdFx0XHRldmVudHM6e1xyXG5cdFx0XHRcdFx0XHRBZGRQZXIoZGF0YSxwYXJhbSl7IFxyXG5cdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHBhcmFtKTtcclxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhKTtcclxuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsdWU9ZGF0YVswXS5OYW1lO1xyXG5cdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XS5WYWxJRD1kYXRhWzBdLkxvZ2luKyc7JytkYXRhWzBdLk5hbWU7XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uYWN0aW9uO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChldmVudGlkKSB7XHJcblx0XHRcdFx0XHRcdFx0ICAgIGV2ZW50aWQgPSBldmVudGlkLnRyaW0oKTtcclxuXHRcdFx0XHRcdFx0XHQgICAgaWYgKGV2ZW50aWQpIHtcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgIHZhciBpbmZvID0ge1xyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWR0eXBlOiBcIjRcIixcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBwcm9qZWN0aWQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogXCJcIixcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICB1c2VybG9naW46IGRhdGFbMF0uTG9naW4sXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogW10sXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyB2YXIgZGF0YV9hdHRyID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdO1xyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgJHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xyXG5cdFx0XHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGNsYXNzQXR0cl9BZGRSZWYoZSl7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coZS50YXJnZXQpO1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuatpOWKn+iDvei/mOacquWunueOsO+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdC8vIHZhciB2YWx1ZT10aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uUmVsQ2xzW2UudGFyZ2V0LnZhbHVlXTtcclxuXHRcdFx0XHQvLyB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9dmFsdWU7XHJcblx0XHRcdH0sXHJcblx0XHRcdGNsYXNzQXR0cl9BZGRQcmooaW5kZXgsaWluZGV4KXtcclxuXHRcdFx0XHR2YXIgcGFyYW09e2luZGV4OmluZGV4LGlpbmRleDppaW5kZXh9O1xyXG5cdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdFx0dXJsOicuLi9zZWxQcmovaW5kZXg/cmVsYXRpb249LTEmcGFyYW09JytKU09OLnN0cmluZ2lmeShwYXJhbSksXHJcblx0XHRcdFx0XHRldmVudHM6e1xyXG5cdFx0XHRcdFx0XHRBZGRQZXIoZGF0YSxwYXJhbSl7IFxyXG5cdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHBhcmFtKTtcclxuXHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhkYXRhKTtcclxuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsdWU9ZGF0YVswXS5OYW1lO1xyXG5cdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XS5WYWxJRD1kYXRhWzBdLklEKyc7JytkYXRhWzBdLk5hbWU7XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uYWN0aW9uO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChldmVudGlkKSB7XHJcblx0XHRcdFx0XHRcdFx0ICAgIGV2ZW50aWQgPSBldmVudGlkLnRyaW0oKTtcclxuXHRcdFx0XHRcdFx0XHQgICAgaWYgKGV2ZW50aWQpIHtcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgIHZhciBpbmZvID0ge1xyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWR0eXBlOiBcIjJcIixcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBwcm9qZWN0aWQ6IGRhdGFbMF0uSUQsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogXCJcIixcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICB1c2VybG9naW46IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogW10sXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgLy8gdmFyIGRhdGFfYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XTtcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICR0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcclxuXHRcdFx0XHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRzYXZhKCl7XHJcblx0XHRcdFx0aWYgKHRoaXMuJGRhdGEucGFyYW0uQmVmb3JlX09LX0V2ZW50KSAvL+WIpOaWreWKn+iDveeCueWPguaVsOaYr+WQpuacieehruWumuWJjeiEmuacrFxyXG5cdFx0XHRcdFx0dGhpcy5zY2FuX09LRGF0YU9ialJ1bkN1c3RvbUV2ZW50KHRoaXMuJGRhdGEucGFyYW0uQmVmb3JlX09LX0V2ZW50LklEKTtcclxuXHRcdFx0XHRlbHNlXHJcblx0XHRcdFx0XHR0aGlzLnNjYW5fT0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQodGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudC5JRCk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGFkZCgpe1xyXG5cdFx0XHRcdHVuaS5zaG93TG9hZGluZyh7XHJcblx0XHRcdFx0XHR0aXRsZTpcIuWKoOi9veS4rS4uLlwiXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dmFyIHJlcT1bXTtcclxuXHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XHJcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xyXG5cdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XHJcblx0XHRcdFx0XHRcdGlmKGFyLlZhbHVlPT0n6K+36YCJ5oupJyB8fCBhci5WYWx1ZT09J+KAlOKAlOivt+mAieaLqeKAlOKAlCcpIGFyLlZhbHVlPScnO1xyXG5cdFx0XHRcdFx0XHRpZihhci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKVxyXG5cdFx0XHRcdFx0XHRcdGlmKGFyLlZhbHVlPT0n6K+3JykgYXIuVmFsdWU9Jyc7XHJcblx0XHRcdFx0ICAgICAgICBpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcclxuXHRcdFx0XHQgICAgICAgIFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcclxuXHRcdFx0XHQgICAgICAgIGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXHJcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWU/JzEnOicwJ30pO1xyXG5cdFx0XHRcdCAgICAgICAgZWxzZSBpZihhci5UeXBlPT0n5a2X5YW4JyB8fCBhci5UeXBlPT0n5a2X5YW4LeWtl+espuS4sicpe1xyXG5cdFx0XHRcdFx0XHRcdGlmKGFyLnNlbGVjdD09dHJ1ZSl7IC8v5Yik5pat5LiL5ouJ5piv5ZCm5aSa6YCJXHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsU3RyID1cIlwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0Zm9yKHZhciB2IGluIGFyLlZhbHVlKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYodmFsU3RyKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbFN0cis9XCI7XCI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhbFN0cis9YXIuVmFsdWVbdl07XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IG5hbWU6IGFyLk5hbWUsIHZhbHVlOiB2YWxTdHJ9KTtcclxuXHRcdFx0XHRcdFx0XHR9ZWxzZVxyXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWV9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRlbHNlXHJcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWUgP2FyLlZhbHVlIDonJ30pO1xyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRpZiAoKGFyLk5vdEVtcHR5ID09ICcxJyB8fCBhci5ub3RlbXB0eSA9PSB0cnVlKSAmJiAhYXIuVmFsdWUpIHtcclxuXHRcdFx0XHRcdFx0Ly8gaWYoYXIubm90RW1wdHk9PScxJyl7XHJcblx0XHRcdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHRcdFx0XHRcdFx0Ly8gdW5pLnNob3dUb2FzdCh7dGl0bGU6YXIuRGlzcE5hbWUrJ+S4jeiDveS4uuepuu+8gScsaWNvbjpcInN1Y2Nlc3NcIixkdXJhdGlvbjozMDAwfSk7XHJcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OmFyLkRpc3BOYW1lKyfkuI3og73kuLrnqbrvvIEnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR2YXIgZW52aXJvbWVudCA9IHtcclxuXHRcdFx0XHQgICAgICdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XHJcblx0XHRcdFx0ICAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgICAgIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxyXG5cdFx0XHRcdCAgICAgJ2J1dHRvbic6ICd0b3AnLCAgIC8vIHRvcC9ib3R0b21cclxuXHRcdFx0XHQgICAgIGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcclxuXHRcdFx0XHQgICAgIG1hc3Rlcjoge1xyXG5cdFx0XHRcdCAgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELCBcclxuXHRcdFx0XHQgICAgIH1cclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdCBcclxuXHRcdFx0XHR2YXIgZGF0YUluZm89e1xyXG5cdFx0XHRcdCAgICBjbGFzc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELCBkYXRhX29ial9pZDogJycsIG1hc3RlcmNsc2lkOiAnJyxcclxuXHRcdFx0XHQgICAgcmVxOiBKU09OLnN0cmluZ2lmeShyZXEpLCB1cGZpbGU6IEpTT04uc3RyaW5naWZ5KFtdKSwgcG9zdF9kYXRhOiBKU09OLnN0cmluZ2lmeSh7fSksXHJcblx0XHRcdFx0ICAgIGNvbXBvc2U6IEpTT04uc3RyaW5naWZ5KFtdKSwgcmVmZGF0YXN0b3JlOiBKU09OLnN0cmluZ2lmeShbXSksIGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpLCBcclxuXHRcdFx0XHRcdG5vdF90cmlnZ2VyX3N5c19ldmVudDogJydcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdC8vIHJldHVyblxyXG5cdFx0XHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcclxuXHRcdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnYWRkY2xhc3NhdHRyJyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xyXG5cdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHR2YXIgYWN0aW9uID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEuQWN0aW9uKTtcclxuXHRcdFx0XHRcdFx0aWYoYWN0aW9uLnJldD09JzAnKXtcclxuXHRcdFx0XHRcdFx0XHRpZihhY3Rpb24ucmVzdWx0X3R5cGU9PScwJyl7XHJcblx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHt0aXRsZTphY3Rpb24ucmVzdWx0LGljb246XCJzdWNjZXNzXCIsZHVyYXRpb246MzAwMH0pO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHQvLyBcIntcInJldFwiOjAsIFwicmVzdWx0X3R5cGVcIjowLCBcInJlc3VsdFwiOlwi5Yib5bu65oiQ5YqfMTIzMTIzMTIzXCIsXCJpbmZvXCI6XCJcIn1cIlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdC8v5Yi35pawXHJcblx0XHRcdFx0XHRcdHVuaS5yZWRpcmVjdFRvKHtcclxuXHRcdFx0XHRcdFx0XHR1cmw6Jy4uL21vZGFsL21zX2NsYXNzQXR0cj9wYXJhbT0nK0pTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEucGFyYW0pK1wiJnRpdGxlbmFtZT1cIit0aGlzLiRkYXRhLnRpdGxlXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHQvLyB0aGlzLmNsYXNzX2F0dHJfaW5pdCgpO1xyXG5cdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRjbGFzc19hdHRyX2luaXQoKXtcclxuXHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGVcclxuXHRcdFx0XHR2YXIgbmV3YXR0cmxpc3QgPSBbXTtcclxuXHRcdFx0XHRpZiAodGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0Lmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdCAgICAgICAgdmFyIG9wZW4gPSBhdHRybGlzdFtpXS5vcGVuO1xyXG5cdFx0XHRcdCAgICAgICAgdmFyIG5hbWUgPSBhdHRybGlzdFtpXS5hdHRyZ3JvdXBfbmFtZTtcclxuXHRcdFx0XHQgICAgICAgIHZhciBhdHRycyA9IGF0dHJsaXN0W2ldLmF0dHJzO1xyXG5cdFx0XHRcdCAgICAgICAgZm9yICh2YXIgcyA9IDA7IHMgPCB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBzKyspIHtcclxuXHRcdFx0XHQgICAgICAgICAgICB2YXIgY2xzYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtzXTtcclxuXHRcdFx0XHQgICAgICAgICAgICBpZiAobmFtZSA9PSBjbHNhdHRyLk5hbWUpIHtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgdmFyIGF0dHIgPSBbXTtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhdHRycy5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCBjbHNhdHRyLkF0dHIubGVuZ3RoOyBsKyspIHtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2EgPSBjbHNhdHRyLkF0dHJbbF07XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHJzW2pdLmF0dHIgPT0gY2EuTmFtZSkge1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5hY3Rpb24gPSBhdHRyc1tqXS5hY3Rpb247XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmVkaXQgPSBhdHRyc1tqXS5lZGl0O1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5ub3RlbXB0eSA9IGF0dHJzW2pdLm5vdGVtcHR5O1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5leHRfYnV0dG9uID0gYXR0cnNbal0uZXh0X2J1dHRvbjtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuYnV0dG9uX2ltZyA9IGF0dHJzW2pdLmJ1dHRvbl9pbWc7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmJ1dHRvbl90b29sdGlwID0gYXR0cnNbal0uYnV0dG9uX3Rvb2x0aXA7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmJlZm9yZV9jbGlja19idXR0b24gPSBhdHRyc1tqXS5iZWZvcmVfY2xpY2tfYnV0dG9uO1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5idXR0b25fY2FsbGJhY2sgPSBhdHRyc1tqXS5idXR0b25fY2FsbGJhY2s7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmhpZGRlbiA9IGF0dHJzW2pdLmhpZGRlbjtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Euc2VsZWN0ID0gYXR0cnNbal0uc2VsZWN0PT11bmRlZmluZWQ/ZmFsc2U6YXR0cnNbal0uc2VsZWN0O1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPVwiXCI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5kaWN0aXRlbSl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLnNlbGVjdCA9PSB0cnVlKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gW107Ly9jYS5kaWN0aXRlbVswXS5DTl9TX05BTUU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSAn6K+36YCJ5oupJzsvL2NhLmRpY3RpdGVtWzBdLkNOX1NfTkFNRTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RpdGVtbGlzdD1bXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgZCA9IDA7IGQgPCBjYS5kaWN0aXRlbS5sZW5ndGg7IGQrKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmRpY3RpdGVtW2RdLmxhYmVsPWNhLmRpY3RpdGVtW2RdLkNOX1NfTkFNRTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5kaWN0aXRlbVtkXS52YWx1ZT1jYS5kaWN0aXRlbVtkXS5DTl9TX05BTUU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuZGljdGl0ZW1bZF0uQ05fQ19JU19ERUZBVUxUPT0nMScpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZT1jYS5kaWN0aXRlbVtkXS5DTl9TX05BTUU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLlR5cGU9PSfml6XmnJ8nIHx8IGNhLlR5cGU9PSfml7bpl7QnKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIG5vd0RhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGF0ZSA9IHt5ZWFyOiBub3dEYXRlLmdldEZ1bGxZZWFyKCksbW9udGg6IG5vd0RhdGUuZ2V0TW9udGgoKSArIDEsZGF5OiBub3dEYXRlLmdldERhdGUoKX1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBkYXRlLnllYXIgKyAnLScgKyAoZGF0ZS5tb250aCA+PSAxMCA/IGRhdGUubW9udGggOiAnMCcgKyBkYXRlLm1vbnRoKSArICctJyArIChkYXRlLmRheSA+PSAxMCA/IGRhdGUuZGF5IDogJzAnICsgZGF0ZS5kYXkpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJyl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByZWxDbHNMaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0cl9yZXNjbHMgPSBjYS5SZWxDbHMuc3BsaXQoJywnKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yKHZhciBpaSBpbiBhdHRyX3Jlc2Nscyl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJlc2NscyA9IGF0dHJfcmVzY2xzW2lpXS5zcGxpdCgnfCcpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlbENsc0xpc3QucHVzaCh7aWQ6cmVzY2xzWzBdLG5hbWU6cmVzY2xzWzFdfSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuUmVsQ2xzTGlzdCA9IHJlbENsc0xpc3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gJ+ivtyc7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5UeXBlPT0n55yB5biC5Yy6JylcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSAn6K+36YCJ5oupJztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLlR5cGU9PSfluIPlsJTlgLwnKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5wdXNoKGNhKTtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgbmV3YXR0cmxpc3QucHVzaCh7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBCa0NvbG9yOiBjbHNhdHRyLkJrQ29sb3IsXHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBIYXNBY2U6IGNsc2F0dHIuSGFzQWNlLFxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgSW1nRm9udFN0eWxlOiBjbHNhdHRyLkltZ0ZvbnRTdHlsZSxcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIE5hbWU6IGNsc2F0dHIuTmFtZSxcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIE9yZGVyOiBjbHNhdHRyLk9yZGVyLFxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgT3Blbjogb3BlbixcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIEF0dHI6IGF0dHIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnRyb2xfc3R5bGU6dGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5jb250cm9sX3N0eWxlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZV9wX3dkaXRoOnRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYudGl0bGVfcF93ZGl0aCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Rm9udDp0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLkZvbnQ/dGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5Gb250Ont9LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRCa19Db2xvcjp0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLkJrX0NvbG9yP3RoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuQmtfQ29sb3I6JyNGRkZGRkYnLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRUZXh0X0NvbG9yOnRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuVGV4dF9Db2xvcj90aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLlRleHRfQ29sb3I6JyMwMDAwMDAnXHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgIH0pXHJcblx0XHRcdFx0ICAgICAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0ICAgIGlmIChuZXdhdHRybGlzdC5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0ICAgICAgICB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QgPSBuZXdhdHRybGlzdDtcclxuXHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdFx0dmFyIHJlcT1bXTtcclxuXHRcdFx0XHQgICAgaWYgKHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYpIHtcclxuXHRcdFx0XHQgICAgICAgICBpZiAodGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5zaG93X3N0eWxlLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHQgICAgICAgICAgICB2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGVcclxuXHRcdFx0XHQgICAgICAgICAgICAvLyAkZWwuZmluZCgnLmF0dHJfZmllbGQnKS5wcm9wKCdyZWFkb25seScsIHRydWUpO1xyXG5cdFx0XHRcdCAgICAgICAgICAgIC8vICRlbC5maW5kKCcuYXR0cl9maWVsZCcpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7XHJcblx0XHRcdFx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICB2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLmF0dHJzXHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgdmFyIGFyID0gYXR0cltqXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5hdHRyLCB2YWx1ZTogYXIudmFsdWU/YXIudmFsdWU6JycgfSk7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHQgICAgICAgICAgICB9XHJcblx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHR9XHRcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0dmFyIGV2ZW50bGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuZXZlbnQ7XHJcblx0XHRcdFx0XHRpZiAoZXZlbnRsaXN0KSB7XHJcblx0XHRcdFx0XHQgICAgaWYgKGV2ZW50bGlzdC5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXZlbnRsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHQgICAgICAgICAgICBpZiAoZXZlbnRsaXN0W2ldLmV2ZW50X2lkID09ICdiZWZvcmVfb2snKSB7XHJcblx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5lZGl0X29rX2V2ZW50ID0gZXZlbnRsaXN0W2ldO1xyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudGxpc3RbaV0uZXZlbnRfaWQgPT0gJ2luaXRpYWwnKSB7XHJcblx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5lZGl0X2luaXRhbF9ldmVudCA9IGV2ZW50bGlzdFtpXTtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnRsaXN0W2ldLmV2ZW50X2lkID09ICdiZWZvcmVfc2VsZWN0X2NvbXBvc2UnKSB7XHJcblx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5lZGl0X3NlbGVjdF9jb21wb3NlX2V2ZW50ID0gZXZlbnRsaXN0W2ldLnNjcmlwX2lkO1xyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEuZWRpdF9jb21wb3NlX2Nsc19pZCA9IGV2ZW50bGlzdFtpXS5jb21wb3NlX2Nsc19pZDtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhyZXEpO1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuZWRpdF9pbml0YWxfZXZlbnQpIHtcclxuXHRcdFx0XHRcdCAgICB2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuZWRpdF9pbml0YWxfZXZlbnQuc2NyaXBfaWQ7XHJcblx0XHRcdFx0XHQgICAgdmFyIGluZm8gPSB7XHJcblx0XHRcdFx0XHQgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXHJcblx0XHRcdFx0XHQgICAgICAgIGVkdHlwZTogXCIwXCIsXHJcblx0XHRcdFx0XHQgICAgICAgIHByb2plY3RpZDogJycsXHJcblx0XHRcdFx0XHQgICAgICAgIHJjbHNpZDogJycsXHJcblx0XHRcdFx0XHQgICAgICAgIHJvYmppZDogJycsXHJcblx0XHRcdFx0XHQgICAgICAgIHVzZXJsb2dpbjogJycsXHJcblx0XHRcdFx0XHQgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXHJcblx0XHRcdFx0XHQgICAgICAgIG9iamlkOiBcIlwiLFxyXG5cdFx0XHRcdFx0ICAgICAgICBhdHRyOiByZXEsXHJcblx0XHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdFx0ICAgIHRoaXMuaW5pX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUpO1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0KTtcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLmnKrmib7liLDlj6/mmL7npLrnmoTnmoTlsZ7mgKdcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHN1YkNsYXNzX2F0dHJfaW5pdCgpe1xyXG5cdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuc2hvd19zdHlsZVxyXG5cdFx0XHRcdHZhciBuZXdhdHRybGlzdCA9IFtdO1xyXG5cdFx0XHRcdGlmICh0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3QubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0ICAgICAgICB2YXIgb3BlbiA9IGF0dHJsaXN0W2ldLm9wZW47XHJcblx0XHRcdFx0ICAgICAgICB2YXIgbmFtZSA9IGF0dHJsaXN0W2ldLmF0dHJncm91cF9uYW1lO1xyXG5cdFx0XHRcdCAgICAgICAgdmFyIGF0dHJzID0gYXR0cmxpc3RbaV0uYXR0cnM7XHJcblx0XHRcdFx0ICAgICAgICBmb3IgKHZhciBzID0gMDsgcyA8IHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdC5sZW5ndGg7IHMrKykge1xyXG5cdFx0XHRcdCAgICAgICAgICAgIHZhciBjbHNhdHRyID0gdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0W3NdO1xyXG5cdFx0XHRcdCAgICAgICAgICAgIGlmIChuYW1lID09IGNsc2F0dHIuTmFtZSkge1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICB2YXIgYXR0ciA9IFtdO1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGF0dHJzLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsID0gMDsgbCA8IGNsc2F0dHIuQXR0ci5sZW5ndGg7IGwrKykge1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjYSA9IGNsc2F0dHIuQXR0cltsXTtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXR0cnNbal0uYXR0ciA9PSBjYS5OYW1lKSB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmFjdGlvbiA9IGF0dHJzW2pdLmFjdGlvbjtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuZWRpdCA9IGF0dHJzW2pdLmVkaXQ7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLm5vdGVtcHR5ID0gYXR0cnNbal0ubm90ZW1wdHk7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmV4dF9idXR0b24gPSBhdHRyc1tqXS5leHRfYnV0dG9uO1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5idXR0b25faW1nID0gYXR0cnNbal0uYnV0dG9uX2ltZztcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuYnV0dG9uX3Rvb2x0aXAgPSBhdHRyc1tqXS5idXR0b25fdG9vbHRpcDtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuYmVmb3JlX2NsaWNrX2J1dHRvbiA9IGF0dHJzW2pdLmJlZm9yZV9jbGlja19idXR0b247XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmJ1dHRvbl9jYWxsYmFjayA9IGF0dHJzW2pdLmJ1dHRvbl9jYWxsYmFjaztcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuaGlkZGVuID0gYXR0cnNbal0uaGlkZGVuO1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5zZWxlY3QgPSBhdHRyc1tqXS5zZWxlY3Q9PXVuZGVmaW5lZD9mYWxzZTphdHRyc1tqXS5zZWxlY3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9XCJcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLmRpY3RpdGVtKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2Euc2VsZWN0ID09IHRydWUpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBbXTsvL2NhLmRpY3RpdGVtWzBdLkNOX1NfTkFNRTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9ICfor7fpgInmi6knOy8vY2EuZGljdGl0ZW1bMF0uQ05fU19OQU1FO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGljdGl0ZW1saXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBkID0gMDsgZCA8IGNhLmRpY3RpdGVtLmxlbmd0aDsgZCsrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW1bZF0ubGFiZWw9Y2EuZGljdGl0ZW1bZF0uQ05fU19OQU1FO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmRpY3RpdGVtW2RdLnZhbHVlPWNhLmRpY3RpdGVtW2RdLkNOX1NfTkFNRTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5kaWN0aXRlbVtkXS5DTl9DX0lTX0RFRkFVTFQ9PScxJylcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlPWNhLmRpY3RpdGVtW2RdLkNOX1NfTkFNRTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuVHlwZT09J+aXpeacnycgfHwgY2EuVHlwZT09J+aXtumXtCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbm93RGF0ZSA9IG5ldyBEYXRlKCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkYXRlID0ge3llYXI6IG5vd0RhdGUuZ2V0RnVsbFllYXIoKSxtb250aDogbm93RGF0ZS5nZXRNb250aCgpICsgMSxkYXk6IG5vd0RhdGUuZ2V0RGF0ZSgpfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGRhdGUueWVhciArICctJyArIChkYXRlLm1vbnRoID49IDEwID8gZGF0ZS5tb250aCA6ICcwJyArIGRhdGUubW9udGgpICsgJy0nICsgKGRhdGUuZGF5ID49IDEwID8gZGF0ZS5kYXkgOiAnMCcgKyBkYXRlLmRheSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJlbENsc0xpc3Q9W107XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyX3Jlc2NscyA9IGNhLlJlbENscy5zcGxpdCgnLCcpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IodmFyIGlpIGluIGF0dHJfcmVzY2xzKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgcmVzY2xzID0gYXR0cl9yZXNjbHNbaWldLnNwbGl0KCd8Jyk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVsQ2xzTGlzdC5wdXNoKHtpZDpyZXNjbHNbMF0sbmFtZTpyZXNjbHNbMV19KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5SZWxDbHNMaXN0ID0gcmVsQ2xzTGlzdDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSAn6K+3JztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLlR5cGU9PSfnnIHluILljLonKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9ICfor7fpgInmi6knO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuVHlwZT09J+W4g+WwlOWAvCcpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLnB1c2goY2EpO1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICBuZXdhdHRybGlzdC5wdXNoKHtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIEJrQ29sb3I6IGNsc2F0dHIuQmtDb2xvcixcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIEhhc0FjZTogY2xzYXR0ci5IYXNBY2UsXHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBJbWdGb250U3R5bGU6IGNsc2F0dHIuSW1nRm9udFN0eWxlLFxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgTmFtZTogY2xzYXR0ci5OYW1lLFxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgT3JkZXI6IGNsc2F0dHIuT3JkZXIsXHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBPcGVuOiBvcGVuLFxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgQXR0cjogYXR0cixcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29udHJvbF9zdHlsZTp0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLmNvbnRyb2xfc3R5bGUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlX3Bfd2RpdGg6dGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZi50aXRsZV9wX3dkaXRoLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRGb250OnRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuRm9udD90aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLkZvbnQ6e30sXHJcblx0XHRcdFx0XHRcdFx0XHRcdEJrX0NvbG9yOnRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuQmtfQ29sb3I/dGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5Ca19Db2xvcjonI0ZGRkZGRicsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFRleHRfQ29sb3I6dGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5UZXh0X0NvbG9yP3RoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuVGV4dF9Db2xvcjonIzAwMDAwMCdcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgfSlcclxuXHRcdFx0XHQgICAgICAgICAgICB9XHJcblx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHQgICAgaWYgKG5ld2F0dHJsaXN0Lmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHQgICAgICAgIHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdCA9IG5ld2F0dHJsaXN0O1xyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHR2YXIgcmVxPVtdO1xyXG5cdFx0XHRcdCAgICBpZiAodGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZikge1xyXG5cdFx0XHRcdCAgICAgICAgIGlmICh0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGUubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdCAgICAgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuc2hvd19zdHlsZVxyXG5cdFx0XHRcdCAgICAgICAgICAgIC8vICRlbC5maW5kKCcuYXR0cl9maWVsZCcpLnByb3AoJ3JlYWRvbmx5JywgdHJ1ZSk7XHJcblx0XHRcdFx0ICAgICAgICAgICAgLy8gJGVsLmZpbmQoJy5hdHRyX2ZpZWxkJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTtcclxuXHRcdFx0XHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgIHZhciBhdHRyID0gYXR0cmxpc3RbaV0uYXR0cnNcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICB2YXIgYXIgPSBhdHRyW2pdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLmF0dHIsIHZhbHVlOiBhci52YWx1ZT9hci52YWx1ZTonJyB9KTtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgICAgIH1cclxuXHRcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHRcdH1cdFxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHR2YXIgZXZlbnRsaXN0ID0gdGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5ldmVudDtcclxuXHRcdFx0XHRcdGlmIChldmVudGxpc3QpIHtcclxuXHRcdFx0XHRcdCAgICBpZiAoZXZlbnRsaXN0Lmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudGxpc3QubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIGlmIChldmVudGxpc3RbaV0uZXZlbnRfaWQgPT0gJ2JlZm9yZV9vaycpIHtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLmVkaXRfb2tfZXZlbnQgPSBldmVudGxpc3RbaV07XHJcblx0XHRcdFx0XHQgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50bGlzdFtpXS5ldmVudF9pZCA9PSAnaW5pdGlhbCcpIHtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLmVkaXRfaW5pdGFsX2V2ZW50ID0gZXZlbnRsaXN0W2ldO1xyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudGxpc3RbaV0uZXZlbnRfaWQgPT0gJ2JlZm9yZV9zZWxlY3RfY29tcG9zZScpIHtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLmVkaXRfc2VsZWN0X2NvbXBvc2VfZXZlbnQgPSBldmVudGxpc3RbaV0uc2NyaXBfaWQ7XHJcblx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5lZGl0X2NvbXBvc2VfY2xzX2lkID0gZXZlbnRsaXN0W2ldLmNvbXBvc2VfY2xzX2lkO1xyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgfVxyXG5cdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHJlcSk7XHJcblx0XHRcdFx0XHRpZiAodGhpcy4kZGF0YS5lZGl0X2luaXRhbF9ldmVudCkge1xyXG5cdFx0XHRcdFx0ICAgIHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5lZGl0X2luaXRhbF9ldmVudC5zY3JpcF9pZDtcclxuXHRcdFx0XHRcdCAgICB2YXIgaW5mbyA9IHtcclxuXHRcdFx0XHRcdCAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcclxuXHRcdFx0XHRcdCAgICAgICAgZWR0eXBlOiBcIjBcIixcclxuXHRcdFx0XHRcdCAgICAgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgcmNsc2lkOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgcm9iamlkOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcclxuXHRcdFx0XHRcdCAgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0XHQgICAgICAgIGF0dHI6IHJlcSxcclxuXHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHQgICAgdGhpcy5zY2FuX2luaV9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlKTtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdCk7XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50Olwi5pyq5om+5Yiw5Y+v5pi+56S655qE55qE5bGe5oCnXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRpbmlfRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pe1xyXG5cdFx0XHRcdHZhciBwYXJhbSA9IHtcclxuXHRcdFx0XHQgICAgRWRpdFN0eWxlOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuVmlld19TdHlsZS5OYW1lLFxyXG5cdFx0XHRcdCAgICBWaWV3U3R5bGU6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5WaWV3X1N0eWxlLk5hbWUsXHJcblx0XHRcdFx0ICAgIE5vdFRyaWdnZXJTeXNFdmVudDogMCxcclxuXHRcdFx0XHQgICAgZW52aXJvbWVudDoge1xyXG5cdFx0XHRcdCAgICAgICAgJ2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcclxuXHRcdFx0XHQgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELCAgICAgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXHJcblx0XHRcdFx0ICAgICAgICAnYnV0dG9uJzogJ3RvcCcsICAgLy8gdG9wL2JvdHRvbVxyXG5cdFx0XHRcdCAgICAgICAgYnV0dG9uX25hbWU6ICfmlrDlop4nLFxyXG5cdFx0XHRcdCAgICAgICAgbWFzdGVyOiB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXHJcblx0XHRcdFx0ICAgICAgICAgICAgLy9vYmpfaWQ6ICcnICAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahG9ial9pZFxyXG5cdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHZhciBpbnB1dHBhcmFtZXRlciA9ICcnO1xyXG5cdFx0XHRcdHZhciBnbG9iYWxfYXR0ciA9ICcnO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdHZhciBkYXRhSW5mbyA9IHtcclxuICAgICAgICAgICAgICAgICAgICBlZHR5cGU6IGluZm8uZWR0eXBlLCBldmVudGlkOiBpbmZvLmV2ZW50aWQsIHByb2plY3RpZDogaW5mby5wcm9qZWN0aWQsXHJcbiAgICAgICAgICAgICAgICAgICAgcmNsc2lkOiBpbmZvLnJjbHNpZCwgcm9iamlkOiBpbmZvLnJvYmppZCwgdXNlcmxvZ2luOiBpbmZvLnVzZXJsb2dpbiwgY2xzaWQ6IGluZm8uY2xzaWQsIG9iamlkOiBpbmZvLm9iamlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGF0dHI6IEpTT04uc3RyaW5naWZ5KGluZm8uYXR0ciksIGV4dGluZm86IEpTT04uc3RyaW5naWZ5KHBhcmFtKSwgaW5wdXRwYXJhbWV0ZXI6IGlucHV0cGFyYW1ldGVyLCBnbG9iYWxfYXR0cjogZ2xvYmFsX2F0dHJcclxuICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XHJcblx0XHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9PntcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHR2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhKTtcclxuXHRcdFx0XHRcdFx0dmFyIGFjdGlvbmxpc3QgPSBkYXRhLmFjdGlvbjtcclxuXHRcdFx0XHRcdFx0aWYgKGFjdGlvbmxpc3QpIHtcclxuXHRcdFx0XHRcdFx0ICAgIGZvciAodmFyIGogPSAwOyBqIDwgYWN0aW9ubGlzdC5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgIHZhciBhY3Rpb24gPSBhY3Rpb25saXN0W2pdXHJcblx0XHRcdFx0XHRcdCAgICAgICAgdmFyIGFjdGlvbl90eXBlID0gYWN0aW9uLmFjdGlvbl90eXBlO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgIHZhciB2YWx1ZSA9IGFjdGlvbi52YWx1ZTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICBpZiAoYWN0aW9uX3R5cGUgPT0gJ3NldF9kbGdfYXR0cicpIHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgaWYgKHZhbHVlKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICB2YXIgdmFsID0gdmFsdWU7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgdmFsID0gSlNPTi5wYXJzZSh2YWx1ZSk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2codmFsKTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBhID0gMDsgYSA8IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGg7IGErKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBsID0gMDsgbCA8IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFthXS5BdHRyLmxlbmd0aDsgbCsrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGNhID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2FdLkF0dHJbbF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHZhbFtpXS5hdHRyICA9PSBjYS5OYW1lKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5UeXBlPT0n5a2X5YW4JyB8fCBjYS5UeXBlPT0n5a2X5YW4LeWtl+espuS4sicpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGljdEl0ZW1MaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IodmFyIGQgaW4gdmFsW2ldLmNob2ljZV9saXN0KXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsID12YWxbaV0uY2hvaWNlX2xpc3RbZF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1wiQ05fU19OQU1FXCI6dmFsLFwiTmFtZVwiOnZhbCxcImxhYmVsXCI6dmFsLFwidmFsdWVcIjp2YWx9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5kaWN0aXRlbSA9IGRpY3RJdGVtTGlzdDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYXR0cltqXS5kaWN0aXRlbSA9IHZhbFtpXS5jaG9pY2VfbGlzdDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjYS52YWx1ZSA9IHZhbFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSAwO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWxbaV0uYXR0ciA9PSBzLmF0dHJcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICB9KS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gMTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaCh2YWxbaV0pO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID09IDApIHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gdmFsW2ldLmF0dHIpIHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHZhbFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0ICAgICAgICBpZiAoYWN0aW9uX3R5cGUgPT0gJ29wZW5fc2VsZWN0X3VzZXJkbGcnKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMi4yXCIsY29udGVudDpcIm9wZW5fc2VsZWN0X3VzZXJkbGfov5nkuKphY3Rpb25fdHlwZei/mOacquWkhOeQhu+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzJcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzIuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0ICAgIERhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLGRhdGFfYXR0cil7XHJcblx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdCAgICBcdHZhciBlbnZpcm9tZW50ID0ge1xyXG5cdFx0ICAgIFx0ICAgICdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XHJcblx0XHQgICAgXHQgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsICAgICAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4ZcclxuXHRcdCAgICBcdCAgICAnYnV0dG9uJzogJ3RvcCcsICAgLy8gdG9wL2JvdHRvbVxyXG5cdFx0ICAgIFx0ICAgIGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcclxuXHRcdCAgICBcdCAgICBtYXN0ZXI6IHtcclxuXHRcdCAgICBcdCAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXHJcblx0XHQgICAgXHQgICAgICAgIC8vb2JqX2lkOiAnJyAgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRvYmpfaWRcclxuXHRcdCAgICBcdCAgICB9XHJcblx0XHQgICAgXHR9O1xyXG5cdFx0XHRcdGVudmlyb21lbnQuZWRpdF9kbGcgPSB7XHJcblx0XHRcdFx0ICAgIHR5cGU6ICdzbWFsbCcsLy/lsI/nqpflj6NcclxuXHRcdFx0XHQgICAgY2xhc3NfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwvL+W9k+WJjeaVsOaNruexu2lkXHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChkYXRhX2F0dHIpIHtcclxuXHRcdFx0XHQgICAgZW52aXJvbWVudC5lZGl0X2RsZy5mb3JtX2NvbnRyb2wgPSB7Ly/miYDlsZ7nmoTooajljZXmjqfku7ZcclxuXHRcdFx0XHQgICAgICAgIG5hbWU6IGRhdGFfYXR0ci5OYW1lLC8v5a2X5q615bGe5oCnXHJcblx0XHRcdFx0ICAgICAgICB0ZXh0OiBkYXRhX2F0dHIuRGlzcE5hbWUsLy/mmL7npLrmlofmnKxcclxuXHRcdFx0XHQgICAgICAgIGdyb3VwX25hbWU6IGRhdGFfYXR0ci5Hcm91cE5hbWUsLy/lsZ7mgKfnu4RcclxuXHRcdFx0XHQgICAgICAgIHR5cGU6IGRhdGFfYXR0ci5UeXBlLC8v5a2X5q6157G75Z6LXHJcblx0XHRcdFx0ICAgICAgICByZWFkb25seTogZGF0YV9hdHRyLlJlYWRPbmx5LC8v5piv5ZCm5Y+q6K+7XHJcblx0XHRcdFx0ICAgICAgICBidXR0b25faW1nOiBkYXRhX2F0dHIuYnV0dG9uX2ltZywvL+W8leeUqOaMiemSrueahOWbvuagh1xyXG5cdFx0XHRcdCAgICAgICAgYnV0dG9uX3Rvb2x0aXA6IGRhdGFfYXR0ci5idXR0b25fdG9vbHRpcC8v5byV55So5oyJ6ZKu55qEdG9vbHRpcFxyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0fVxyXG5cdFx0ICAgIFx0dmFyIGRhdGFJbmZvID0ge1xyXG5cdFx0ICAgICAgICAgICAgZWR0eXBlOiBpbmZvLmVkdHlwZSwgZXZlbnRpZDogaW5mby5ldmVudGlkLCBwcm9qZWN0aWQ6IGluZm8ucHJvamVjdGlkLnJlcGxhY2UoJ3snLCcnKS5yZXBsYWNlKCd9JywnJyksXHJcblx0XHQgICAgICAgICAgICByY2xzaWQ6IGluZm8ucmNsc2lkLCByb2JqaWQ6IGluZm8ucm9iamlkLCB1c2VybG9naW46IGluZm8udXNlcmxvZ2luLCBjbHNpZDogaW5mby5jbHNpZCwgb2JqaWQ6IGluZm8ub2JqaWQsXHJcblx0XHQgICAgICAgICAgICBhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLCBleHRpbmZvOiBKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KSwgaW5wdXRwYXJhbWV0ZXI6ICcnLCBnbG9iYWxfYXR0cjogSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5nbG9iYWxfYXR0cilcclxuXHRcdCAgICAgICAgfVxyXG5cdFx0ICAgIFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0ICAgIFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9PntcclxuXHRcdCAgICBcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XHJcblx0XHQgICAgXHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XHJcblx0XHQgICAgXHRcdFx0dmFyIGFjdGlvbmxpc3QgPSBkYXRhLmFjdGlvbjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHQgICAgXHRcdFx0aWYgKGFjdGlvbmxpc3QpIHtcclxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhY3Rpb25saXN0KTtcclxuXHRcdCAgICBcdFx0XHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY3Rpb25saXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB2YXIgYWN0aW9uID0gYWN0aW9ubGlzdFtpXTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ3NldF9kbGdfYXR0cicpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICB2YXIgcmVzdWx0ID0gYWN0aW9uLnZhbHVlO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAocmVzdWx0W2ldLmNob2ljZV9saXN0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBjID0gMDsgYyA8ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBjKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2NdLkF0dHI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGF0dHJbal0uTmFtZT09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoYXR0cltqXS5UeXBlPT0n5a2X5YW4JyB8fCBhdHRyW2pdLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJyl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkaWN0SXRlbUxpc3Q9W107XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvcih2YXIgZCBpbiByZXN1bHRbaV0uY2hvaWNlX2xpc3Qpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciB2YWwgPXJlc3VsdFtpXS5jaG9pY2VfbGlzdFtkXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaWN0SXRlbUxpc3QucHVzaCh7XCJDTl9TX05BTUVcIjp2YWwsXCJOYW1lXCI6dmFsLFwibGFiZWxcIjp2YWwsXCJ2YWx1ZVwiOnZhbH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHJbal0uZGljdGl0ZW0gPSBkaWN0SXRlbUxpc3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGF0dHJbal0uZGljdGl0ZW0gPSByZXN1bHRbaV0uY2hvaWNlX2xpc3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYysrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIFx0dmFyIGF0dHIgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2NdLkF0dHI7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGF0dHJbal0uTmFtZSsnPT0nK3Jlc3VsdFtpXS5hdHRyKTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHRcdGlmKGF0dHJbal0uTmFtZT09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdFx0XHRhdHRyW2pdLlZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdFx0fVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBpZiAoISR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfSkubGVuZ3RoKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAxO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID09IDApIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB9IGVsc2UgaWYgKGRhdGEuYWN0aW9uW2ldLmFjdGlvbl90eXBlID09ICdzZXRfZ2xvYmFsX2F0dHInKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICR0aGlzLiRkYXRhLmdsb2JhbF9hdHRyID0gZGF0YS5hY3Rpb25baV0udmFsdWUgfHwgW107XHJcblx0XHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICB9XHJcblx0XHQgICAgXHRcdFx0fVxyXG5cdFx0ICAgIFx0XHRcdFxyXG5cdFx0ICAgIFx0XHRcdGlmIChkYXRhLnJlc3VsdCkge1xyXG5cdFx0ICAgIFx0XHRcdCAgICB2YXIgcmVzdWx0ID0gZGF0YS5yZXN1bHQ7XHJcblx0XHQgICAgXHRcdFx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBjKyspIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIFx0dmFyIGF0dHIgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2NdLkF0dHI7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgXHRcdGlmKGF0dHJbal0uTmFtZT09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgXHRcdFx0YXR0cltqXS5WYWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIFx0XHR9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBcdH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIGxlbmd0aCA9IDA7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBpZiAoISR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICByZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB9KS5sZW5ndGgpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICBsZW5ndGggPSAxO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBpZiAobGVuZ3RoID09IDApIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBpZiAoJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgfVxyXG5cdFx0ICAgIFx0XHRcdH1cclxuXHRcdCAgICBcdFx0fWVsc2V7XHJcblx0XHQgICAgXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68zXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdCAgICBcdFx0fVxyXG5cdFx0ICAgIFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdCAgICBcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0ICAgIFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzMuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0ICAgIFx0fSk7XHJcblx0XHQgICAgfSxcclxuXHRcdFx0T0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQoKXtcclxuXHRcdCAgICBcdHZhciBlbnZpcm9tZW50ID0ge1xyXG5cdFx0XHRcdCAgICAnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xyXG5cdFx0XHRcdCAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgICAgIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxyXG5cdFx0XHRcdCAgICAnYnV0dG9uJzogJ3RvcCcsICAgLy8gdG9wL2JvdHRvbVxyXG5cdFx0XHRcdCAgICBidXR0b25fbmFtZTogJ+aWsOWinicsXHJcblx0XHRcdFx0ICAgIG1hc3Rlcjoge1xyXG5cdFx0XHRcdCAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXHJcblx0XHRcdFx0ICAgICAgICBcclxuXHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdH07XHJcblx0XHQgICAgXHRcclxuXHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuZWRpdF9va19ldmVudC5zY3JpcF9pZDtcclxuXHRcdFx0XHR2YXIgcmVxPVtdO1xyXG5cdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcclxuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XHJcblx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcclxuXHRcdFx0XHRcdFx0aWYoYXIuVmFsdWU9PSfor7fpgInmi6knIHx8IGFyLlZhbHVlPT0n4oCU4oCU6K+36YCJ5oup4oCU4oCUJykgYXIuVmFsdWU9Jyc7XHJcblx0XHRcdFx0XHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXHJcblx0XHRcdFx0XHRcdFx0aWYoYXIuVmFsdWU9PSfor7cnKSBhci5WYWx1ZT0nJztcclxuXHRcdFx0XHQgICAgICAgIGlmKGFyLlR5cGU9PSflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGU9PSflvJXnlKjpobnnm64nKVxyXG5cdFx0XHRcdCAgICAgICAgXHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbHVlOiBhci5WYWxJRCA/YXIuVmFsSUQgOicnIH0pO1xyXG5cdFx0XHRcdCAgICAgICAgZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8JylcclxuXHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbHVlOiBhci5WYWx1ZT8nMSc6JzAnfSk7XHJcblx0XHRcdFx0XHRcdGVsc2VcclxuXHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbHVlOiBhci5WYWx1ZSB9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0XHJcblx0XHQgICAgXHRpZiAodGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoID4gMCkge1xyXG5cdFx0ICAgIFx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBpKyspIHtcclxuXHRcdCAgICBcdCAgICAgICAgaWYgKCFyZXEuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XHJcblx0XHQgICAgXHQgICAgICAgICAgICByZXR1cm4gdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0uYXR0ciA9PSBzLm5hbWVcclxuXHRcdCAgICBcdCAgICAgICAgfSkubGVuZ3RoKSB7XHJcblx0XHQgICAgXHQgICAgICAgICAgICBsZW5ndGggPSAxO1xyXG5cdFx0ICAgIFx0ICAgICAgICAgICAgcmVxLnB1c2goeyAnYXR0cic6IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLmF0dHIsICd2YWx1ZSc6IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLnZhbHVlIH0pO1xyXG5cdFx0ICAgIFx0ICAgICAgICB9XHJcblx0XHQgICAgXHQgICAgfVxyXG5cdFx0ICAgIFx0fVxyXG5cdFx0ICAgIFx0dmFyIGluZm8gPSB7XHJcblx0XHQgICAgXHQgICAgZXZlbnRpZDogZXZlbnRpZCxcclxuXHRcdCAgICBcdCAgICBlZHR5cGU6IFwiMFwiLFxyXG5cdFx0ICAgIFx0ICAgIHByb2plY3RpZDogJycsXHJcblx0XHQgICAgXHQgICAgcmNsc2lkOiAnJyxcclxuXHRcdCAgICBcdCAgICByb2JqaWQ6ICcnLFxyXG5cdFx0ICAgIFx0ICAgIHVzZXJsb2dpbjogJycsXHJcblx0XHQgICAgXHQgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcclxuXHRcdCAgICBcdCAgICBvYmppZDogXCJcIixcclxuXHRcdCAgICBcdCAgICBhdHRyOiByZXEsXHJcblx0XHQgICAgXHR9XHJcblx0XHQgICAgXHR2YXIgZGF0YUluZm8gPSB7XHJcblx0XHQgICAgICAgICAgICBlZHR5cGU6IGluZm8uZWR0eXBlLCBldmVudGlkOiBpbmZvLmV2ZW50aWQsIHByb2plY3RpZDogaW5mby5wcm9qZWN0aWQscmNsc2lkOiBpbmZvLnJjbHNpZCwgXHJcblx0XHRcdFx0XHRyb2JqaWQ6IGluZm8ucm9iamlkLCB1c2VybG9naW46IGluZm8udXNlcmxvZ2luLCBjbHNpZDogaW5mby5jbHNpZCwgb2JqaWQ6IGluZm8ub2JqaWQsXHJcblx0XHRcdFx0XHRhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLCBleHRpbmZvOiBKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KSwgZ2xvYmFsX2F0dHI6IEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpXHJcblx0XHQgICAgICAgIH1cclxuXHRcdCAgICBcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcclxuXHRcdCAgICBcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XHJcblx0XHQgICAgXHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0ICAgIFx0XHRpZiAoc3VjY2Vzcy5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1x0XHRcclxuXHRcdCAgICBcdFx0XHR2YXIgcmVzdWx0ID0gZGF0YS5yZXN1bHQ7XHJcblx0XHQgICAgXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHtcclxuXHRcdCAgICBcdFx0XHQgICAgLy8gc2VsZi5jbGFzc19hdHRyX2VsZS5maW5kKCcuYXR0cl9maWVsZFtkYXRhLWZpZWxkPVwiJyArIHJlc3VsdFtpXS5hdHRyICsgJ1wiXScpLnZhbChyZXN1bHRbaV0udmFsdWUpLmRhdGEoJ3ZhbCcsIHJlc3VsdFtpXS52YWx1ZSk7XHJcblx0XHQgICAgXHRcdFx0ICAgIHZhciBsZW5ndGggPSAwO1xyXG5cdFx0ICAgIFx0XHRcdCAgICBpZiAoIXRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgcmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxyXG5cdFx0ICAgIFx0XHRcdCAgICB9KS5sZW5ndGgpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIGxlbmd0aCA9IDE7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XHJcblx0XHQgICAgXHRcdFx0ICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgaWYgKGxlbmd0aCA9PSAwKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgaWYgKHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICB9XHJcblx0XHQgICAgXHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0dGhpcy5hZGQoKTtcclxuXHRcdCAgICBcdFx0fWVsc2V7XHJcblx0XHQgICAgXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor680XCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdCAgICBcdFx0fVxyXG5cdFx0ICAgIFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdCAgICBcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0ICAgIFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzQuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0ICAgIFx0fSk7XHJcblx0XHQgICAgfSxcclxuXHRcdCAgICBEYXRhT2JqUnVuQ3VzdG9tRXZlbnRfUmV0dXJuKGV2ZW50aWQsZGF0YV9hdHRyLGJ1dHRvbl9jYWxsYmFjayxpbmRleCxpaW5kZXgpe1xyXG5cdFx0XHRcdHZhciBlbnZpcm9tZW50ID0ge1xyXG5cdFx0XHRcdCAgICAnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xyXG5cdFx0XHRcdCAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgICAgIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxyXG5cdFx0XHRcdCAgICAnYnV0dG9uJzogJ3RvcCcsICAgLy8gdG9wL2JvdHRvbVxyXG5cdFx0XHRcdCAgICBidXR0b25fbmFtZTogJ+aWsOWinicsXHJcblx0XHRcdFx0ICAgIG1hc3Rlcjoge1xyXG5cdFx0XHRcdCAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXHJcblx0XHRcdFx0ICAgICAgICAvL29ial9pZDogJycgIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEb2JqX2lkXHJcblx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdHZhciByZXE9W107XHJcblx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xyXG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcclxuXHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xyXG5cdFx0XHRcdFx0XHRpZihhci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKVxyXG5cdFx0XHRcdFx0XHRcdGlmKGFyLlZhbHVlPT0n6K+3JykgYXIuVmFsdWU9Jyc7XHJcblx0XHRcdFx0ICAgICAgICBpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcclxuXHRcdFx0XHQgICAgICAgIFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcclxuXHRcdFx0XHQgICAgICAgIGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXHJcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWU/JzEnOicwJ30pO1xyXG5cdFx0XHRcdFx0XHRlbHNlXHJcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWUgfSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmICh0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHQgICAgICAgIGlmICghcmVxLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG5cdFx0XHRcdCAgICAgICAgICAgIHJldHVybiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS5hdHRyID09IHMubmFtZVxyXG5cdFx0XHRcdCAgICAgICAgfSkubGVuZ3RoKSB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgbGVuZ3RoID0gMTtcclxuXHRcdFx0XHQgICAgICAgICAgICByZXEucHVzaCh7ICdhdHRyJzogdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0uYXR0ciwgJ3ZhbHVlJzogdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0udmFsdWUgfSk7XHJcblx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dmFyIGV4dGluZm8gPSBlbnZpcm9tZW50O1xyXG5cdFx0XHRcdGV4dGluZm8uZWRpdF9kbGcgPSB7XHJcblx0XHRcdFx0ICAgIHR5cGU6ICdzbWFsbCcsLy/lsI/nqpflj6NcclxuXHRcdFx0XHQgICAgY2xhc3NfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwvL+W9k+WJjeaVsOaNruexu2lkXHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChkYXRhX2F0dHIpIHtcclxuXHRcdFx0XHQgICAgZXh0aW5mby5lZGl0X2RsZy5mb3JtX2NvbnRyb2wgPSB7Ly/miYDlsZ7nmoTooajljZXmjqfku7ZcclxuXHRcdFx0XHQgICAgICAgIG5hbWU6IGRhdGFfYXR0ci5OYW1lLC8v5a2X5q615bGe5oCnXHJcblx0XHRcdFx0ICAgICAgICB0ZXh0OiBkYXRhX2F0dHIuRGlzcE5hbWUsLy/mmL7npLrmlofmnKxcclxuXHRcdFx0XHQgICAgICAgIGdyb3VwX25hbWU6IGRhdGFfYXR0ci5Hcm91cE5hbWUsLy/lsZ7mgKfnu4RcclxuXHRcdFx0XHQgICAgICAgIHR5cGU6IGRhdGFfYXR0ci5UeXBlLC8v5a2X5q6157G75Z6LXHJcblx0XHRcdFx0ICAgICAgICByZWFkb25seTogZGF0YV9hdHRyLlJlYWRPbmx5LC8v5piv5ZCm5Y+q6K+7XHJcblx0XHRcdFx0ICAgICAgICBidXR0b25faW1nOiBkYXRhX2F0dHIuYnV0dG9uX2ltZywvL+W8leeUqOaMiemSrueahOWbvuagh1xyXG5cdFx0XHRcdCAgICAgICAgYnV0dG9uX3Rvb2x0aXA6IGRhdGFfYXR0ci5idXR0b25fdG9vbHRpcC8v5byV55So5oyJ6ZKu55qEdG9vbHRpcFxyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHZhciBkYXRhSW5mbyA9IHtcclxuXHRcdFx0XHRcdGVkdHlwZTogIFwiMFwiLCBldmVudGlkOiBldmVudGlkLCBwcm9qZWN0aWQ6ICcnLHJjbHNpZDogJycsIHJvYmppZDogJycsIHVzZXJsb2dpbjogJycsIFxyXG5cdFx0XHRcdFx0Y2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgb2JqaWQ6ICcnLGF0dHI6IEpTT04uc3RyaW5naWZ5KHJlcSksIFxyXG5cdFx0XHRcdFx0ZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkoZXh0aW5mbyksIGdsb2JhbF9hdHRyOiBKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLmdsb2JhbF9hdHRyKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XHJcblx0XHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9PntcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHR2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhKTtcclxuXHRcdFx0XHRcdFx0aWYgKGRhdGEgIT0gXCJcIikge1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdHZhciBhY3Rpb25zID0gZGF0YS5hY3Rpb247XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGFjdGlvbnMpO1xyXG5cdFx0XHRcdFx0XHRpZiAoYWN0aW9ucykge1xyXG5cdFx0XHRcdFx0XHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY3Rpb25zLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgdmFyIGFjdGlvbiA9IGFjdGlvbnNbaV07XHJcblx0XHRcdFx0XHRcdCAgICAgICAgdmFyIHZhbCA9IGFjdGlvbi52YWx1ZTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICB2YXIgZW52aXJvbWVudCA9IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgIFxyXG5cdFx0XHRcdFx0XHQgICAgICAgIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ29wZW5fcGFuZWwnKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgdmFyIGQgPSBkaWFsb2coe1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICB0aXRsZTogJzxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtaW5mby1jaXJjbGVcIj48L2k+ICcgKyAn5o+Q56S6JyxcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgY29udGVudDogYWN0aW9uLmFjdGlvbl90eXBlICsgJ+atpGFjdGlvbuWwmuacquWkhOeQhu+8gSdcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICB9KTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICBkLnNob3coKTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdCAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX3NlbGVjdF91c2VyZGxnJykge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB2YXIgc3R5bGUgPSB2YWwuc3R5bGU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdC8vIHN0eWxlID09ICd1c2VyJyA/ICfpgInmi6nkurrlkZgnIDogc3R5bGUgPT0gJ2RlcGFydG1lbnQnID8gJ+mAieaLqemDqOmXqCcgOiBzdHlsZSA9PSAncm9sZScgPyAn6YCJ5oup6KeS6ImyJyA6ICcnXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBwYXJhbT17XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aW5kZXg6IGluZGV4LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlpbmRleDppaW5kZXgsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnV0dG9uX2NhbGxiYWNrOmJ1dHRvbl9jYWxsYmFjayxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXE6cmVxLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRhdGFfYXR0cjpkYXRhX2F0dHJcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0dXJsOicuLi9zZWxwc24vaW5kZXg/bXVsaXQ9ZmFsc2UmcGFyYW09JytKU09OLnN0cmluZ2lmeShwYXJhbSksXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0ZXZlbnRzOntcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHRcdEFkZFBlcihkYXRhLHBhcmFtKXsgXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0XHRcdC8vIGNvbnNvbGUubG9nKHBhcmFtKTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHRcdFx0Y29uc29sZS5sb2coZGF0YSk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0XHRcdHZhciBjYWxsYmFja19ldmVudGlkID0gcGFyYW0uYnV0dG9uX2NhbGxiYWNrLnRyaW0oKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGluZm8gPSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBldmVudGlkOiBjYWxsYmFja19ldmVudGlkLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgZWR0eXBlOiBcIjBcIixcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIHByb2plY3RpZDogJycsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICByY2xzaWQ6ICcnLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgcm9iamlkOiAnJyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIHVzZXJsb2dpbjogJycsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBjbHNpZDogJHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIG9iamlkOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgYXR0cjogcGFyYW0ucmVxLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgaW5wdXRwYXJhbWV0ZXI6IGRhdGFcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgcGFyYW0uZGF0YV9hdHRyKTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHRcdH1cclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHR9XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIH0pO1x0XHJcblx0XHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHQgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9kYXRhX3F1ZXJ5X2RsZycpIHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHJcblx0XHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHQgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9jb21tb25fZGxnJykge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB2YXIgdmFsdWUgPSBhY3Rpb24udmFsdWU7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIHZhciBkID0gZGlhbG9nKHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHRpdGxlOiAnPGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1pbmZvLWNpcmNsZVwiPjwvaT4gJyArICfmj5DnpLonLFxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgY29udGVudDogYWN0aW9uLmFjdGlvbl90eXBlICsgJ+atpGFjdGlvbuWwmuacquWkhOeQhu+8gSdcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgfSk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGQuc2hvdygpO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0ICAgICAgICBlbHNlIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ29wZW5fcHJvamVjdF9xdWVyeV9kbGcnKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIC8vY29uc29sZS5sb2coYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIC8vY29uc29sZS5sb2coYWN0aW9uLnZhbHVlLm11bGl0X3NlbGVjdCk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIHZhciBwcmlSZWwgPSAnLTEnO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5YWo6YOo55u45YWzJylcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHByaVJlbCA9ICcwJztcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5oiR6LSf6LSj55qE6aG555uuJylcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHByaVJlbCA9ICcxJztcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5oiR5Yib5bu655qEJylcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHByaVJlbCA9ICcyJztcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5oiR5Y+C5LiO55qEJyB8fCBhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHlj4LliqDnmoQnKVxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgcHJpUmVsID0gJzMnO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHlhbPms6jnmoQnKVxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgcHJpUmVsID0gJzQnO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHkuIvlsZ7nmoTpobnnm64nKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByaVJlbCA9ICc1JztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHBhcmFtXz17XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aW5kZXg6IGluZGV4LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlpbmRleDppaW5kZXgsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnV0dG9uX2NhbGxiYWNrOmJ1dHRvbl9jYWxsYmFjayxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXE6cmVxXHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHVybDonLi4vc2VsUHJqL2luZGV4P3JlbGF0aW9uPScrcHJpUmVsKycmcGFyYW09JytKU09OLnN0cmluZ2lmeShwYXJhbV8pLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGV2ZW50czp7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRBZGRQZXIoZGF0YSxwYXJhbSl7IFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsdWU9ZGF0YVswXS5OYW1lO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsSUQ9ZGF0YVswXS5JRCsnOycrZGF0YVswXS5OYW1lO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBcdFx0XHR2YXIgY2FsbGJhY2tfZXZlbnRpZCA9IHBhcmFtLmJ1dHRvbl9jYWxsYmFjay50cmltKCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYWxsYmFja19ldmVudGlkKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICB2YXIgaW5mbyA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICBldmVudGlkOiBjYWxsYmFja19ldmVudGlkLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIGVkdHlwZTogXCIyXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgcHJvamVjdGlkOiBkYXRhWzBdLklELFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIHJjbHNpZDogXCJcIixcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICByb2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgdXNlcmxvZ2luOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIGNsc2lkOiAkdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIG9iamlkOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIGF0dHI6IHBhcmFtLnJlcSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICR0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgfSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgdmFyIGQgPSBkaWFsb2coe1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGl0bGU6ICc8aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLWluZm8tY2lyY2xlXCI+PC9pPiAnICsgJ+aPkOekuicsXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBjb250ZW50OiBhY3Rpb24uYWN0aW9uX3R5cGUgKyAn5q2kYWN0aW9u5bCa5pyq5aSE55CG77yBJ1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB9KTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZC5zaG93KCk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6NS4yXCIsY29udGVudDogJ+iwg+eUqCBiZWZvcmVfY2xpY2tfYnV0dG9uIOiEmuacrOi/lOWbnuepuu+8jGV2ZW50X2lkJyArIGV2ZW50aWQsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzVcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekujUuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0ICAgIH0sXHJcblx0XHQgICAgc2Nhbl9pbmlfRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pe1xyXG5cdFx0ICAgIFx0dmFyIHBhcmFtID0ge1xyXG5cdFx0ICAgIFx0ICAgIEVkaXRTdHlsZTogdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLlZpZXdfU3R5bGUuTmFtZSxcclxuXHRcdCAgICBcdCAgICBWaWV3U3R5bGU6IHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5WaWV3X1N0eWxlLk5hbWUsXHJcblx0XHQgICAgXHQgICAgTm90VHJpZ2dlclN5c0V2ZW50OiAwLFxyXG5cdFx0ICAgIFx0ICAgIGVudmlyb21lbnQ6IHtcclxuXHRcdCAgICBcdCAgICAgICAgJ2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcclxuXHRcdCAgICBcdCAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsICAgICAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4ZcclxuXHRcdCAgICBcdCAgICAgICAgJ2J1dHRvbic6ICd0b3AnLCAgIC8vIHRvcC9ib3R0b21cclxuXHRcdCAgICBcdCAgICAgICAgYnV0dG9uX25hbWU6ICfmlrDlop4nLFxyXG5cdFx0ICAgIFx0ICAgICAgICBtYXN0ZXI6IHtcclxuXHRcdCAgICBcdCAgICAgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELCAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahGNsc19pZFxyXG5cdFx0ICAgIFx0ICAgICAgICAgICAgLy9vYmpfaWQ6ICcnICAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahG9ial9pZFxyXG5cdFx0ICAgIFx0ICAgICAgICB9XHJcblx0XHQgICAgXHQgICAgfVxyXG5cdFx0ICAgIFx0fVxyXG5cdFx0ICAgIFx0dmFyIGlucHV0cGFyYW1ldGVyID0gJyc7XHJcblx0XHQgICAgXHR2YXIgZ2xvYmFsX2F0dHIgPSAnJztcclxuXHRcdCAgICBcdFxyXG5cdFx0ICAgIFx0dmFyIGRhdGFJbmZvID0ge1xyXG5cdFx0ICAgICAgICAgICAgZWR0eXBlOiBpbmZvLmVkdHlwZSwgZXZlbnRpZDogaW5mby5ldmVudGlkLCBwcm9qZWN0aWQ6IGluZm8ucHJvamVjdGlkLFxyXG5cdFx0ICAgICAgICAgICAgcmNsc2lkOiBpbmZvLnJjbHNpZCwgcm9iamlkOiBpbmZvLnJvYmppZCwgdXNlcmxvZ2luOiBpbmZvLnVzZXJsb2dpbiwgY2xzaWQ6IGluZm8uY2xzaWQsIG9iamlkOiBpbmZvLm9iamlkLFxyXG5cdFx0ICAgICAgICAgICAgYXR0cjogSlNPTi5zdHJpbmdpZnkoaW5mby5hdHRyKSwgZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkocGFyYW0pLCBpbnB1dHBhcmFtZXRlcjogaW5wdXRwYXJhbWV0ZXIsIGdsb2JhbF9hdHRyOiBnbG9iYWxfYXR0clxyXG5cdFx0ICAgICAgICB9XHJcblx0XHQgICAgXHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XHJcblx0XHQgICAgXHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbycsZGF0YUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0ICAgIFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdCAgICBcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xyXG5cdFx0ICAgIFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1xyXG5cdFx0ICAgIFx0XHRcdHZhciBhY3Rpb25saXN0ID0gZGF0YS5hY3Rpb247XHJcblx0XHQgICAgXHRcdFx0aWYgKGFjdGlvbmxpc3QpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhY3Rpb25saXN0Lmxlbmd0aDsgaisrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB2YXIgYWN0aW9uID0gYWN0aW9ubGlzdFtqXVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgdmFyIGFjdGlvbl90eXBlID0gYWN0aW9uLmFjdGlvbl90eXBlO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgdmFyIHZhbHVlID0gYWN0aW9uLnZhbHVlO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgaWYgKGFjdGlvbl90eXBlID09ICdzZXRfZGxnX2F0dHInKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgaWYgKHZhbHVlKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIHZhciB2YWwgPSB2YWx1ZTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgdmFsID0gSlNPTi5wYXJzZSh2YWx1ZSk7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHZhbCk7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsLmxlbmd0aDsgaSsrKSB7XHJcblx0XHQgICAgXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGEgPSAwOyBhIDwgdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYSsrKSB7XHJcblx0XHQgICAgXHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgbCA9IDA7IGwgPCB0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3RbYV0uQXR0ci5sZW5ndGg7IGwrKykge1xyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGNhID0gdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0W2FdLkF0dHJbbF07XHJcblx0XHQgICAgXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodmFsW2ldLmF0dHIgID09IGNhLk5hbWUpIHtcclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuVHlwZT09J+Wtl+WFuCcgfHwgY2EuVHlwZT09J+Wtl+WFuC3lrZfnrKbkuLInKXtcclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGljdEl0ZW1MaXN0PVtdO1xyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvcih2YXIgZCBpbiB2YWxbaV0uY2hvaWNlX2xpc3Qpe1xyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9dmFsW2ldLmNob2ljZV9saXN0W2RdO1xyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1wiQ05fU19OQU1FXCI6dmFsLFwiTmFtZVwiOnZhbCxcImxhYmVsXCI6dmFsLFwidmFsdWVcIjp2YWx9KTtcclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5kaWN0aXRlbSA9IGRpY3RJdGVtTGlzdDtcclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhdHRyW2pdLmRpY3RpdGVtID0gdmFsW2ldLmNob2ljZV9saXN0O1xyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjYS52YWx1ZSA9IHZhbFtpXS52YWx1ZTtcclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0ICAgIFx0XHRcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSAwO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsW2ldLmF0dHIgPT0gcy5hdHRyXHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICB9KS5sZW5ndGgpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAxO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2godmFsW2ldKTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gMCkge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gdmFsW2ldLmF0dHIpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gdmFsW2ldLnZhbHVlO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgaWYgKGFjdGlvbl90eXBlID09ICdvcGVuX3NlbGVjdF91c2VyZGxnJykge1xyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNi4yXCIsY29udGVudDpcIm9wZW5fc2VsZWN0X3VzZXJkbGfov5nkuKphY3Rpb25fdHlwZei/mOacquWkhOeQhu+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICB9XHJcblx0XHQgICAgXHRcdFx0fVxyXG5cdFx0ICAgIFx0XHRcdFxyXG5cdFx0ICAgIFx0XHR9ZWxzZXtcclxuXHRcdCAgICBcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzZcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0ICAgIFx0XHR9XHJcblx0XHQgICAgXHR9KS5jYXRjaChleD0+e1xyXG5cdFx0ICAgIFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHQgICAgXHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNi4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHQgICAgXHR9KTtcclxuXHRcdCAgICB9LFxyXG5cdFx0ICAgIHNjYW5fRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sZGF0YV9hdHRyKXtcclxuXHRcdCAgICBcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHQgICAgXHR2YXIgZW52aXJvbWVudCA9IHtcclxuXHRcdCAgICBcdCAgICAnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xyXG5cdFx0ICAgIFx0ICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELCAgICAgLy8g5Yqf6IO954K55LuO5pWw5o2u57G75qCH6K+GXHJcblx0XHQgICAgXHQgICAgJ2J1dHRvbic6ICd0b3AnLCAgIC8vIHRvcC9ib3R0b21cclxuXHRcdCAgICBcdCAgICBidXR0b25fbmFtZTogJ+aWsOWinicsXHJcblx0XHQgICAgXHQgICAgbWFzdGVyOiB7XHJcblx0XHQgICAgXHQgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELCAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahGNsc19pZFxyXG5cdFx0ICAgIFx0ICAgICAgICAvL29ial9pZDogJycgIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEb2JqX2lkXHJcblx0XHQgICAgXHQgICAgfVxyXG5cdFx0ICAgIFx0fTtcclxuXHRcdCAgICBcdGVudmlyb21lbnQuZWRpdF9kbGcgPSB7XHJcblx0XHRcdFx0XHR0eXBlOiAnc21hbGwnLC8v5bCP56qX5Y+jXHJcblx0XHQgICAgXHQgICAgY2xhc3NfaWQ6IHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCwvL+W9k+WJjeaVsOaNruexu2lkXHJcblx0XHQgICAgXHR9XHJcblx0XHQgICAgXHRpZiAoZGF0YV9hdHRyKSB7XHJcblx0XHQgICAgXHQgICAgZW52aXJvbWVudC5lZGl0X2RsZy5mb3JtX2NvbnRyb2wgPSB7Ly/miYDlsZ7nmoTooajljZXmjqfku7ZcclxuXHRcdCAgICBcdCAgICAgICAgbmFtZTogZGF0YV9hdHRyLk5hbWUsLy/lrZfmrrXlsZ7mgKdcclxuXHRcdCAgICBcdCAgICAgICAgdGV4dDogZGF0YV9hdHRyLkRpc3BOYW1lLC8v5pi+56S65paH5pysXHJcblx0XHQgICAgXHQgICAgICAgIGdyb3VwX25hbWU6IGRhdGFfYXR0ci5Hcm91cE5hbWUsLy/lsZ7mgKfnu4RcclxuXHRcdCAgICBcdCAgICAgICAgdHlwZTogZGF0YV9hdHRyLlR5cGUsLy/lrZfmrrXnsbvlnotcclxuXHRcdCAgICBcdCAgICAgICAgcmVhZG9ubHk6IGRhdGFfYXR0ci5SZWFkT25seSwvL+aYr+WQpuWPquivu1xyXG5cdFx0ICAgIFx0ICAgICAgICBidXR0b25faW1nOiBkYXRhX2F0dHIuYnV0dG9uX2ltZywvL+W8leeUqOaMiemSrueahOWbvuagh1xyXG5cdFx0ICAgIFx0ICAgICAgICBidXR0b25fdG9vbHRpcDogZGF0YV9hdHRyLmJ1dHRvbl90b29sdGlwLy/lvJXnlKjmjInpkq7nmoR0b29sdGlwXHJcblx0XHQgICAgXHQgICAgfVxyXG5cdFx0ICAgIFx0fVxyXG5cdFx0ICAgIFx0XHJcblx0XHQgICAgXHR2YXIgZGF0YUluZm8gPSB7XHJcblx0XHQgICAgICAgICAgICBlZHR5cGU6IGluZm8uZWR0eXBlLCBldmVudGlkOiBpbmZvLmV2ZW50aWQsIHByb2plY3RpZDogaW5mby5wcm9qZWN0aWQucmVwbGFjZSgneycsJycpLnJlcGxhY2UoJ30nLCcnKSxcclxuXHRcdCAgICAgICAgICAgIHJjbHNpZDogaW5mby5yY2xzaWQsIHJvYmppZDogaW5mby5yb2JqaWQsIHVzZXJsb2dpbjogaW5mby51c2VybG9naW4sIGNsc2lkOiBpbmZvLmNsc2lkLCBvYmppZDogaW5mby5vYmppZCxcclxuXHRcdCAgICAgICAgICAgIGF0dHI6IEpTT04uc3RyaW5naWZ5KGluZm8uYXR0ciksIGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpLCBpbnB1dHBhcmFtZXRlcjogSlNPTi5zdHJpbmdpZnkoaW5mby5pbnB1dFBhcmFtdGVyKSwgZ2xvYmFsX2F0dHI6IEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpXHJcblx0XHQgICAgICAgIH1cclxuXHRcdCAgICBcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcclxuXHRcdCAgICBcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XHJcblx0XHQgICAgXHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0ICAgIFx0XHRpZiAoc3VjY2Vzcy5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHQgICAgXHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XHJcblx0XHQgICAgXHRcdFx0dmFyIGFjdGlvbmxpc3QgPSBkYXRhLmFjdGlvbjtcclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcclxuXHRcdCAgICBcdFx0XHRpZiAoYWN0aW9ubGlzdCkge1xyXG5cdFx0ICAgIFx0XHRcdFx0Y29uc29sZS5sb2coYWN0aW9ubGlzdCk7XHJcblx0XHQgICAgXHRcdFx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWN0aW9ubGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgdmFyIGFjdGlvbiA9IGFjdGlvbmxpc3RbaV07XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdzZXRfZGxnX2F0dHInKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGFjdGlvbi52YWx1ZTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdFtpXS5jaG9pY2VfbGlzdCkge1xyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBzID0gMDsgcyA8ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdC5sZW5ndGg7IHMrKykge1xyXG5cdFx0ICAgIFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0ckxpc3QubGVuZ3RoOyBjKyspIHtcclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0ckxpc3RbY10uQXR0cjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGF0dHJbal0uTmFtZT09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihhdHRyW2pdLlR5cGU9PSflrZflhbgnIHx8IGF0dHJbal0uVHlwZT09J+Wtl+WFuC3lrZfnrKbkuLInKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGljdEl0ZW1MaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvcih2YXIgZCBpbiByZXN1bHRbaV0uY2hvaWNlX2xpc3Qpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9cmVzdWx0W2ldLmNob2ljZV9saXN0W2RdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1wiQ05fU19OQU1FXCI6dmFsLFwiTmFtZVwiOnZhbCxcImxhYmVsXCI6dmFsLFwidmFsdWVcIjp2YWx9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cltqXS5kaWN0aXRlbSA9IGRpY3RJdGVtTGlzdDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhdHRyW2pdLmRpY3RpdGVtID0gcmVzdWx0W2ldLmNob2ljZV9saXN0O1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHQgICAgXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gMDsgcyA8ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdC5sZW5ndGg7IHMrKykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0ckxpc3QubGVuZ3RoOyBjKyspIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHRcdHZhciBhdHRyID0gJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0ckxpc3RbY10uQXR0cjtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdFx0XHRjb25zb2xlLmxvZyhhdHRyW2pdLk5hbWUrJz09JytyZXN1bHRbaV0uYXR0cik7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIFx0XHRcdGlmKGF0dHJbal0uTmFtZT09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdFx0XHRcdGF0dHJbal0uVmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIFx0XHRcdH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHRcdH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHR9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBpZiAoISR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfSkubGVuZ3RoKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAxO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID09IDApIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB9IGVsc2UgaWYgKGRhdGEuYWN0aW9uW2ldLmFjdGlvbl90eXBlID09ICdzZXRfZ2xvYmFsX2F0dHInKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgJHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIgPSBkYXRhLmFjdGlvbltpXS52YWx1ZSB8fCBbXTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5hY3Rpb25baV0uYWN0aW9uX3R5cGUgPT0gJ2FkZF9zdWJjbHNfcGFuZWwnKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGFjdGlvbi52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IGxpc3RfMSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0KSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdC5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzY2FuQ29kZVZhbDokdGhpcy4kZGF0YS5zY2FuQ29kZVZhbCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzdWJDbGFzc0F0dHI6bGlzdF8xXHJcblx0XHRcdFx0XHRcdFx0XHRcdH0pOyBcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHMgPSAwOyBzIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZigkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc2NhbkNvZGVWYWwgPT0gJHRoaXMuJGRhdGEuc2NhbkNvZGVWYWwpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgX3N1YkNsYXNzQXR0ciA9ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgX3N1YkNsYXNzQXR0ci5sZW5ndGg7IGMrKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gX3N1YkNsYXNzQXR0cltjXS5BdHRyO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coYXR0cltqXS5OYW1lKyc9PScrcmVzdWx0W2ldLmF0dHIpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoYXR0cltqXS5OYW1lPT1yZXN1bHRbaV0uYXR0cil7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHJbal0uVmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyPWxpc3RfMTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGxlbmd0aCA9IDA7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCEkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgbGVuZ3RoID0gMTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIGZvciAodmFyIGogPSAwOyBqIDwgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICBpZiAoJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgICAgICAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgfVxyXG5cdFx0ICAgIFx0XHRcdH1cclxuXHRcdCAgICBcdFx0XHRcclxuXHRcdCAgICBcdFx0XHRpZiAoZGF0YS5yZXN1bHQpIHtcclxuXHRcdFx0XHRcdFx0XHRsZXQgbGlzdF8xID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3QpKTtcclxuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3QucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0XHRzY2FuQ29kZVZhbDokdGhpcy4kZGF0YS5zY2FuQ29kZVZhbCxcclxuXHRcdFx0XHRcdFx0XHRcdHN1YkNsYXNzQXR0cjpsaXN0XzFcclxuXHRcdFx0XHRcdFx0XHR9KTsgXHJcblx0XHQgICAgXHRcdFx0ICAgIHZhciByZXN1bHQgPSBkYXRhLnJlc3VsdDtcclxuXHRcdCAgICBcdFx0XHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIGZvciAodmFyIHMgPSAwOyBzIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmKCR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zY2FuQ29kZVZhbCA9PSAkdGhpcy4kZGF0YS5zY2FuQ29kZVZhbCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIF9zdWJDbGFzc0F0dHIgPSAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgX3N1YkNsYXNzQXR0ci5sZW5ndGg7IGMrKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBfc3ViQ2xhc3NBdHRyW2NdLkF0dHI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coYXR0cltqXS5OYW1lKyc9PScrcmVzdWx0W2ldLmF0dHIpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihhdHRyW2pdLk5hbWU9PXJlc3VsdFtpXS5hdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyW2pdLlZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgXHR9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0XHRcdFxyXG5cdFx0ICAgIFx0XHRcdFx0XHR2YXIgbGVuZ3RoID0gMDtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIGlmICghJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIH0pLmxlbmd0aCkge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIGxlbmd0aCA9IDE7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgIGlmIChsZW5ndGggPT0gMCkge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIGlmICgkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0uYXR0ciA9PSByZXN1bHRbaV0uYXR0cikge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICB9XHJcblx0XHQgICAgXHRcdFx0fVxyXG5cdFx0ICAgIFx0XHR9ZWxzZXtcclxuXHRcdCAgICBcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzdcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0ICAgIFx0XHR9XHJcblx0XHQgICAgXHR9KS5jYXRjaChleD0+e1xyXG5cdFx0ICAgIFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHQgICAgXHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNy4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHQgICAgXHR9KTtcclxuXHRcdCAgICB9LFxyXG5cdFx0ICAgIHNjYW5fT0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQoZXZlbnRJRCl7XHJcblx0XHRcdFx0dW5pLnNob3dMb2FkaW5nKHtcclxuXHRcdFx0XHRcdHRpdGxlOlwi5Yqg6L295LitLi4uXCJcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0XHRcdHZhciByZXE9W107XHJcblx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcclxuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XHJcblx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcclxuXHRcdFx0XHRcdFx0aWYoYXIuVmFsdWU9PSfor7fpgInmi6knIHx8IGFyLlZhbHVlPT0n4oCU4oCU6K+36YCJ5oup4oCU4oCUJykgYXIuVmFsdWU9Jyc7XHJcblx0XHRcdFx0XHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXHJcblx0XHRcdFx0XHRcdFx0aWYoYXIuVmFsdWU9PSfor7cnKSBhci5WYWx1ZT0nJztcclxuXHRcdFx0XHRcdFx0aWYoYXIuVHlwZT09J+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZT09J+W8leeUqOmhueebricpXHJcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcclxuXHRcdFx0XHRcdFx0ZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8JylcclxuXHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbHVlOiBhci5WYWx1ZT8nMSc6JzAnfSk7XHJcblx0XHRcdFx0XHRcdGVsc2UgaWYoYXIuVHlwZT09J+Wtl+WFuCcgfHwgYXIuVHlwZT09J+Wtl+WFuC3lrZfnrKbkuLInKXtcclxuXHRcdFx0XHRcdFx0XHRpZihhci5zZWxlY3Q9PXRydWUpeyAvL+WIpOaWreS4i+aLieaYr+WQpuWkmumAiVxyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHZhbFN0ciA9XCJcIjtcclxuXHRcdFx0XHRcdFx0XHRcdGZvcih2YXIgdiBpbiBhci5WYWx1ZSl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmKHZhbFN0cilcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWxTdHIrPVwiO1wiO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWxTdHIrPWFyLlZhbHVlW3ZdO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWx1ZTogdmFsU3RyfSk7XHJcblx0XHRcdFx0XHRcdFx0fWVsc2VcclxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsdWU6IGFyLlZhbHVlfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0ZWxzZVxyXG5cdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsdWU6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0aWYgKChhci5Ob3RFbXB0eSA9PSAnMScgfHwgYXIubm90ZW1wdHkgPT0gdHJ1ZSkgJiYgIWFyLlZhbHVlKSB7XHJcblx0XHRcdFx0XHRcdC8vIGlmKGFyLm5vdEVtcHR5PT0nMScpe1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xyXG5cdFx0XHRcdFx0XHRcdC8vIHVuaS5zaG93VG9hc3Qoe3RpdGxlOmFyLkRpc3BOYW1lKyfkuI3og73kuLrnqbrvvIEnLGljb246XCJzdWNjZXNzXCIsZHVyYXRpb246MzAwMH0pO1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDphci5EaXNwTmFtZSsn5LiN6IO95Li656m677yBJyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dmFyIG9iamVjdHM9W107XHJcblx0XHRcdFx0dmFyIHN1YlBhbmVsTGlzdCA9ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdDtcclxuXHRcdFx0XHRmb3IgKHZhciBzID0gMDsgcyA8IHN1YlBhbmVsTGlzdC5sZW5ndGg7IHMrKykge1xyXG5cdFx0XHRcdFx0dmFyIHN1Yl9yZXE9W107XHJcblx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHIubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBzdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyW2ldLkF0dHI7XHJcblx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XHJcblx0XHRcdFx0XHRcdFx0aWYoYXIuVmFsdWU9PSfor7fpgInmi6knIHx8IGFyLlZhbHVlPT0n4oCU4oCU6K+36YCJ5oup4oCU4oCUJykgYXIuVmFsdWU9Jyc7XHJcblx0XHRcdFx0XHRcdFx0aWYoYXIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJylcclxuXHRcdFx0XHRcdFx0XHRcdGlmKGFyLlZhbHVlPT0n6K+3JykgYXIuVmFsdWU9Jyc7XHJcblx0XHRcdFx0XHRcdFx0aWYoYXIuVHlwZT09J+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZT09J+W8leeUqOmhueebricpXHJcblx0XHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcclxuXHRcdFx0XHRcdFx0XHRlbHNlIGlmKGFyLlR5cGU9PSfluIPlsJTlgLwnKVxyXG5cdFx0XHRcdFx0XHRcdFx0c3ViX3JlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsdWU6IGFyLlZhbHVlPycxJzonMCd9KTtcclxuXHRcdFx0XHRcdFx0XHRlbHNlIGlmKGFyLlR5cGU9PSflrZflhbgnIHx8IGFyLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJyl7XHJcblx0XHRcdFx0XHRcdFx0XHRpZihhci5zZWxlY3Q9PXRydWUpeyAvL+WIpOaWreS4i+aLieaYr+WQpuWkmumAiVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsU3RyID1cIlwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IodmFyIHYgaW4gYXIuVmFsdWUpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmKHZhbFN0cilcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbFN0cis9XCI7XCI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsU3RyKz1hci5WYWx1ZVt2XTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWx1ZTogdmFsU3RyfSk7XHJcblx0XHRcdFx0XHRcdFx0XHR9ZWxzZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWV9KTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0ZWxzZVxyXG5cdFx0XHRcdFx0XHRcdFx0c3ViX3JlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsdWU6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdGlmICgoYXIuTm90RW1wdHkgPT0gJzEnIHx8IGFyLm5vdGVtcHR5ID09IHRydWUpICYmICFhci5WYWx1ZSkge1xyXG5cdFx0XHRcdFx0XHRcdC8vIGlmKGFyLm5vdEVtcHR5PT0nMScpe1xyXG5cdFx0XHRcdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHRcdFx0XHRcdFx0XHQvLyB1bmkuc2hvd1RvYXN0KHt0aXRsZTphci5EaXNwTmFtZSsn5LiN6IO95Li656m677yBJyxpY29uOlwic3VjY2Vzc1wiLGR1cmF0aW9uOjMwMDB9KTtcclxuXHRcdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDphci5EaXNwTmFtZSsn5LiN6IO95Li656m677yBJyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdG9iamVjdHMucHVzaCh7XHJcblx0XHRcdFx0XHRcdG9ial9pZDpzdWJQYW5lbExpc3Rbc10uc2NhbkNvZGVWYWwsXHJcblx0XHRcdFx0XHRcdG9ial9hdHRyczpzdWJfcmVxXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dmFyIGRhdGFKc29uPXtcclxuXHRcdFx0XHRcdG1hc3Rlcl9jbHM6e1xyXG5cdFx0XHRcdFx0XHRjbHNfbmFtZTokdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLk5hbWUsXHJcblx0XHRcdFx0XHRcdG9ial9hdHRyczpyZXFcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRpbnB1dF8zMDM3OiR0aGlzLiRkYXRhLnNjYW5Db2RlVmFsLCAgIC8v5omr56CB5YaF5a65XHJcblx0XHRcdFx0XHRvcF90eXBlOiR0aGlzLiRkYXRhLnBhcmFtLk9wZXJhdGlvblR5cGUsIC8v5L2c5Lia57G75Z6L5a6a5LmJXHJcblx0XHRcdFx0XHRzdWJfY2xzOntcclxuXHRcdFx0XHRcdFx0Y2xzX25hbWU6JHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5OYW1lLFxyXG5cdFx0XHRcdFx0XHRvYmplY3RzOm9iamVjdHNcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGRhdGFKc29uKSk7XHJcblx0XHQgICAgXHR2YXIgZGF0YUluZm8gPSB7XHJcblx0XHQgICAgICAgICAgICBlZHR5cGU6IFwiMFwiLCBldmVudGlkOiBldmVudElELCBwcm9qZWN0aWQ6ICcnLHJjbHNpZDogJycsIHJvYmppZDogJycsIHVzZXJsb2dpbjogJycsIFxyXG5cdFx0XHRcdFx0Y2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsIG9iamlkOiAnJyxhdHRyOiBKU09OLnN0cmluZ2lmeShbXSksIGV4dGluZm86IEpTT04uc3RyaW5naWZ5KFtdKSwgXHJcblx0XHRcdFx0XHRnbG9iYWxfYXR0cjogSlNPTi5zdHJpbmdpZnkoJHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpLGRhdGFKc29uOkpTT04uc3RyaW5naWZ5KGRhdGFKc29uKVxyXG5cdFx0ICAgICAgICB9XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZGF0YUluZm8pKTtcclxuXHRcdCAgICBcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcclxuXHRcdCAgICBcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XHJcblx0XHQgICAgXHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHQgICAgXHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdCAgICBcdFx0XHR2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhKTtcdFx0XHJcblx0XHQgICAgXHRcdFx0dmFyIHJlc3VsdCA9IGRhdGEucmVzdWx0O1xyXG5cdFx0ICAgIFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgIC8vIHNlbGYuY2xhc3NfYXR0cl9lbGUuZmluZCgnLmF0dHJfZmllbGRbZGF0YS1maWVsZD1cIicgKyByZXN1bHRbaV0uYXR0ciArICdcIl0nKS52YWwocmVzdWx0W2ldLnZhbHVlKS5kYXRhKCd2YWwnLCByZXN1bHRbaV0udmFsdWUpO1xyXG5cdFx0ICAgIFx0XHRcdCAgICB2YXIgbGVuZ3RoID0gMDtcclxuXHRcdCAgICBcdFx0XHQgICAgaWYgKCEkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICByZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXHJcblx0XHQgICAgXHRcdFx0ICAgIH0pLmxlbmd0aCkge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgbGVuZ3RoID0gMTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XHJcblx0XHQgICAgXHRcdFx0ICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgaWYgKGxlbmd0aCA9PSAwKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIGlmICgkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0uYXR0ciA9PSByZXN1bHRbaV0uYXR0cikge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICB9XHJcblx0XHQgICAgXHRcdFx0fVxyXG5cdFx0ICAgIFx0XHRcdFxyXG5cdFx0ICAgIFx0XHRcdGlmKGV2ZW50SUQgIT0gJHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfT0tfRXZlbnQuSUQpXHJcblx0XHQgICAgXHRcdFx0XHQkdGhpcy5zY2FuX09LRGF0YU9ialJ1bkN1c3RvbUV2ZW50KCR0aGlzLiRkYXRhLnBhcmFtLkFmdGVyX09LX0V2ZW50LklEKTtcclxuXHRcdFx0XHRcdFx0ZWxzZXtcclxuXHRcdFx0XHRcdFx0XHQvL+WIt+aWsFxyXG5cdFx0XHRcdFx0XHRcdHVuaS5yZWRpcmVjdFRvKHtcclxuXHRcdFx0XHRcdFx0XHRcdHVybDonLi4vbW9kYWwvbXNfY2xhc3NBdHRyP3BhcmFtPScrSlNPTi5zdHJpbmdpZnkoJHRoaXMuJGRhdGEucGFyYW0pK1wiJnRpdGxlbmFtZT1cIiskdGhpcy4kZGF0YS50aXRsZVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHQgICAgXHRcdH1lbHNle1xyXG5cdFx0ICAgIFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vOFwiLGNvbnRlbnQ6c3VjY2Vzcy5tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHQgICAgXHRcdH1cclxuXHRcdCAgICBcdH0pLmNhdGNoKGV4PT57XHJcblx0XHQgICAgXHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xyXG5cdFx0ICAgIFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzguMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0ICAgIFx0fSk7XHJcblx0XHQgICAgfSxcclxuXHRcdCAgICBcclxuXHRcdFx0XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///63\n"); |
| | | |
| | | /***/ }), |
| | | /* 64 */ |
| | |
| | | /***/ (function(module, exports, __webpack_require__) { |
| | | |
| | | "use strict"; |
| | | eval("Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;\n\n\n\n\n\n\nvar _data = _interopRequireDefault(__webpack_require__(/*! @/js/pickerAddress/data.js */ 58));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} //\n//\n//\n//\n//\n//\nvar selectVal = ['', '', ''];var _default = { data: function data() {return { value: [0, 0, 0],\n array: [],\n index: 0 };\n\n },\n created: function created() {\n this.initSelect();\n },\n methods: {\n // 初始化地址选项\n initSelect: function initSelect() {\n this.updateSourceDate() // 更新源数据\n .updateAddressDate() // 更新结果数据\n .$forceUpdate(); // 触发双向绑定\n },\n // 地址控件改变控件\n columnchange: function columnchange(d) {\n this.updateSelectIndex(d.detail.column, d.detail.value) // 更新选择索引\n .updateSourceDate() // 更新源数据\n .updateAddressDate() // 更新结果数据\n .$forceUpdate(); // 触发双向绑定\n },\n\n /**\n * 更新源数据\n * */\n updateSourceDate: function updateSourceDate() {\n this.array = [];\n this.array[0] = _data.default.map(function (obj) {\n return {\n name: obj.name };\n\n });\n this.array[1] = _data.default[this.value[0]].city.map(function (obj) {\n return {\n name: obj.name };\n\n });\n this.array[2] = _data.default[this.value[0]].city[this.value[1]].area.map(function (obj) {\n return {\n name: obj };\n\n });\n return this;\n },\n\n /**\n * 更新索引\n * */\n updateSelectIndex: function updateSelectIndex(column, value) {\n var arr = JSON.parse(JSON.stringify(this.value));\n arr[column] = value;\n if (column === 0) {\n arr[1] = 0;\n arr[2] = 0;\n }\n if (column === 1) {\n arr[2] = 0;\n }\n this.value = arr;\n return this;\n },\n\n /**\n * 更新结果数据 \n * */\n updateAddressDate: function updateAddressDate() {\n selectVal[0] = this.array[0][this.value[0]].name;\n selectVal[1] = this.array[1][this.value[1]].name;\n selectVal[2] = this.array[2][this.value[2]].name;\n return this;\n },\n\n /**\n * 点击确定\n * */\n bindPickerChange: function bindPickerChange(e) {\n // console.log(e);\n this.$emit('change', {\n target: e.target,\n data: selectVal });\n\n return this;\n } } };exports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vanMvcGlja2VyQWRkcmVzcy9waWNrZXJBZGRyZXNzLnZ1ZSJdLCJuYW1lcyI6WyJzZWxlY3RWYWwiLCJkYXRhIiwidmFsdWUiLCJhcnJheSIsImluZGV4IiwiY3JlYXRlZCIsImluaXRTZWxlY3QiLCJtZXRob2RzIiwidXBkYXRlU291cmNlRGF0ZSIsInVwZGF0ZUFkZHJlc3NEYXRlIiwiJGZvcmNlVXBkYXRlIiwiY29sdW1uY2hhbmdlIiwiZCIsInVwZGF0ZVNlbGVjdEluZGV4IiwiZGV0YWlsIiwiY29sdW1uIiwiQWxsQWRkcmVzcyIsIm1hcCIsIm9iaiIsIm5hbWUiLCJjaXR5IiwiYXJlYSIsImFyciIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsImJpbmRQaWNrZXJDaGFuZ2UiLCJlIiwiJGVtaXQiLCJ0YXJnZXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFPSSw4Riw4RkFQSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHSSxJQUFJQSxTQUFTLEdBQUcsQ0FBQyxFQUFELEVBQUksRUFBSixFQUFPLEVBQVAsQ0FBaEIsQyxlQUVlLEVBQ1hDLElBRFcsa0JBQ0osQ0FDSCxPQUFNLEVBQ0ZDLEtBQUssRUFBRSxDQUFDLENBQUQsRUFBRyxDQUFILEVBQUssQ0FBTCxDQURMO0FBRUZDLFdBQUssRUFBRSxFQUZMO0FBR0ZDLFdBQUssRUFBRSxDQUhMLEVBQU47O0FBS0gsR0FQVTtBQVFYQyxTQVJXLHFCQVFEO0FBQ04sU0FBS0MsVUFBTDtBQUNILEdBVlU7QUFXWEMsU0FBTyxFQUFDO0FBQ0o7QUFDQUQsY0FGSSx3QkFFUztBQUNULFdBQUtFLGdCQUFMLEdBQXdCO0FBQXhCLE9BQ0NDLGlCQURELEdBQ3FCO0FBRHJCLE9BRUNDLFlBRkQsR0FEUyxDQUdRO0FBQ3BCLEtBTkc7QUFPSjtBQUNBQyxnQkFSSSx3QkFRU0MsQ0FSVCxFQVFZO0FBQ1osV0FBS0MsaUJBQUwsQ0FBdUJELENBQUMsQ0FBQ0UsTUFBRixDQUFTQyxNQUFoQyxFQUF3Q0gsQ0FBQyxDQUFDRSxNQUFGLENBQVNaLEtBQWpELEVBQXdEO0FBQXhELE9BQ0NNLGdCQURELEdBQ29CO0FBRHBCLE9BRUNDLGlCQUZELEdBRXFCO0FBRnJCLE9BR0NDLFlBSEQsR0FEWSxDQUlLO0FBQ3BCLEtBYkc7O0FBZUo7OztBQUdBRixvQkFsQkksOEJBa0JlO0FBQ2YsV0FBS0wsS0FBTCxHQUFhLEVBQWI7QUFDQSxXQUFLQSxLQUFMLENBQVcsQ0FBWCxJQUFnQmEsY0FBV0MsR0FBWCxDQUFlLFVBQUFDLEdBQUcsRUFBSTtBQUNsQyxlQUFPO0FBQ0hDLGNBQUksRUFBRUQsR0FBRyxDQUFDQyxJQURQLEVBQVA7O0FBR0gsT0FKZSxDQUFoQjtBQUtBLFdBQUtoQixLQUFMLENBQVcsQ0FBWCxJQUFnQmEsY0FBVyxLQUFLZCxLQUFMLENBQVcsQ0FBWCxDQUFYLEVBQTBCa0IsSUFBMUIsQ0FBK0JILEdBQS9CLENBQW1DLFVBQUFDLEdBQUcsRUFBSTtBQUN0RCxlQUFPO0FBQ0hDLGNBQUksRUFBRUQsR0FBRyxDQUFDQyxJQURQLEVBQVA7O0FBR0gsT0FKZSxDQUFoQjtBQUtBLFdBQUtoQixLQUFMLENBQVcsQ0FBWCxJQUFnQmEsY0FBVyxLQUFLZCxLQUFMLENBQVcsQ0FBWCxDQUFYLEVBQTBCa0IsSUFBMUIsQ0FBK0IsS0FBS2xCLEtBQUwsQ0FBVyxDQUFYLENBQS9CLEVBQThDbUIsSUFBOUMsQ0FBbURKLEdBQW5ELENBQXVELFVBQUFDLEdBQUcsRUFBSTtBQUMxRSxlQUFPO0FBQ0hDLGNBQUksRUFBRUQsR0FESCxFQUFQOztBQUdILE9BSmUsQ0FBaEI7QUFLQSxhQUFPLElBQVA7QUFDSCxLQXBDRzs7QUFzQ0o7OztBQUdBTCxxQkF6Q0ksNkJBeUNjRSxNQXpDZCxFQXlDc0JiLEtBekN0QixFQXlDNEI7QUFDNUIsVUFBSW9CLEdBQUcsR0FBR0MsSUFBSSxDQUFDQyxLQUFMLENBQVdELElBQUksQ0FBQ0UsU0FBTCxDQUFlLEtBQUt2QixLQUFwQixDQUFYLENBQVY7QUFDQW9CLFNBQUcsQ0FBQ1AsTUFBRCxDQUFILEdBQWNiLEtBQWQ7QUFDQSxVQUFHYSxNQUFNLEtBQUssQ0FBZCxFQUFrQjtBQUNkTyxXQUFHLENBQUMsQ0FBRCxDQUFILEdBQVMsQ0FBVDtBQUNBQSxXQUFHLENBQUMsQ0FBRCxDQUFILEdBQVMsQ0FBVDtBQUNIO0FBQ0QsVUFBR1AsTUFBTSxLQUFLLENBQWQsRUFBa0I7QUFDZE8sV0FBRyxDQUFDLENBQUQsQ0FBSCxHQUFTLENBQVQ7QUFDSDtBQUNELFdBQUtwQixLQUFMLEdBQWFvQixHQUFiO0FBQ0EsYUFBTyxJQUFQO0FBQ0gsS0FyREc7O0FBdURKOzs7QUFHQWIscUJBMURJLCtCQTBEZ0I7QUFDaEJULGVBQVMsQ0FBQyxDQUFELENBQVQsR0FBZSxLQUFLRyxLQUFMLENBQVcsQ0FBWCxFQUFjLEtBQUtELEtBQUwsQ0FBVyxDQUFYLENBQWQsRUFBNkJpQixJQUE1QztBQUNBbkIsZUFBUyxDQUFDLENBQUQsQ0FBVCxHQUFlLEtBQUtHLEtBQUwsQ0FBVyxDQUFYLEVBQWMsS0FBS0QsS0FBTCxDQUFXLENBQVgsQ0FBZCxFQUE2QmlCLElBQTVDO0FBQ0FuQixlQUFTLENBQUMsQ0FBRCxDQUFULEdBQWUsS0FBS0csS0FBTCxDQUFXLENBQVgsRUFBYyxLQUFLRCxLQUFMLENBQVcsQ0FBWCxDQUFkLEVBQTZCaUIsSUFBNUM7QUFDQSxhQUFPLElBQVA7QUFDSCxLQS9ERzs7QUFpRUo7OztBQUdBTyxvQkFwRUksNEJBb0VhQyxDQXBFYixFQW9FZ0I7QUFDNUI7QUFDWSxXQUFLQyxLQUFMLENBQVcsUUFBWCxFQUFxQjtBQUNqQkMsY0FBTSxFQUFFRixDQUFDLENBQUNFLE1BRE87QUFFakI1QixZQUFJLEVBQUVELFNBRlcsRUFBckI7O0FBSUEsYUFBTyxJQUFQO0FBQ0gsS0EzRUcsRUFYRyxFIiwiZmlsZSI6IjY4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4gICAgaW1wb3J0IEFsbEFkZHJlc3MgZnJvbSAnQC9qcy9waWNrZXJBZGRyZXNzL2RhdGEuanMnXG4gICAgbGV0IHNlbGVjdFZhbCA9IFsnJywnJywnJ11cbiAgICBcbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIGRhdGEoKSB7XG4gICAgICAgICAgICByZXR1cm57XG4gICAgICAgICAgICAgICAgdmFsdWU6IFswLDAsMF0sXG4gICAgICAgICAgICAgICAgYXJyYXk6IFtdLFxuICAgICAgICAgICAgICAgIGluZGV4OiAwXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZWQoKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRTZWxlY3QoKVxuICAgICAgICB9LFxuICAgICAgICBtZXRob2RzOntcbiAgICAgICAgICAgIC8vIOWIneWni+WMluWcsOWdgOmAiemhuVxuICAgICAgICAgICAgaW5pdFNlbGVjdCgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNvdXJjZURhdGUoKSAvLyDmm7TmlrDmupDmlbDmja5cbiAgICAgICAgICAgICAgICAudXBkYXRlQWRkcmVzc0RhdGUoKSAvLyDmm7TmlrDnu5PmnpzmlbDmja5cbiAgICAgICAgICAgICAgICAuJGZvcmNlVXBkYXRlKCkgIC8vIOinpuWPkeWPjOWQkee7keWumlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIOWcsOWdgOaOp+S7tuaUueWPmOaOp+S7tlxuICAgICAgICAgICAgY29sdW1uY2hhbmdlKGQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdEluZGV4KGQuZGV0YWlsLmNvbHVtbiwgZC5kZXRhaWwudmFsdWUpIC8vIOabtOaWsOmAieaLqee0ouW8lVxuICAgICAgICAgICAgICAgIC51cGRhdGVTb3VyY2VEYXRlKCkgLy8g5pu05paw5rqQ5pWw5o2uXG4gICAgICAgICAgICAgICAgLnVwZGF0ZUFkZHJlc3NEYXRlKCkgLy8g5pu05paw57uT5p6c5pWw5o2uXG4gICAgICAgICAgICAgICAgLiRmb3JjZVVwZGF0ZSgpICAvLyDop6blj5Hlj4zlkJHnu5HlrppcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICog5pu05paw5rqQ5pWw5o2uXG4gICAgICAgICAgICAgKiAqL1xuICAgICAgICAgICAgdXBkYXRlU291cmNlRGF0ZSgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFycmF5ID0gW11cbiAgICAgICAgICAgICAgICB0aGlzLmFycmF5WzBdID0gQWxsQWRkcmVzcy5tYXAob2JqID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG9iai5uYW1lXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIHRoaXMuYXJyYXlbMV0gPSBBbGxBZGRyZXNzW3RoaXMudmFsdWVbMF1dLmNpdHkubWFwKG9iaiA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBvYmoubmFtZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB0aGlzLmFycmF5WzJdID0gQWxsQWRkcmVzc1t0aGlzLnZhbHVlWzBdXS5jaXR5W3RoaXMudmFsdWVbMV1dLmFyZWEubWFwKG9iaiA9PiB7IFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogb2JqXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIOabtOaWsOe0ouW8lVxuICAgICAgICAgICAgICogKi9cbiAgICAgICAgICAgIHVwZGF0ZVNlbGVjdEluZGV4KGNvbHVtbiwgdmFsdWUpe1xuICAgICAgICAgICAgICAgIGxldCBhcnIgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMudmFsdWUpKSBcbiAgICAgICAgICAgICAgICBhcnJbY29sdW1uXSA9IHZhbHVlXG4gICAgICAgICAgICAgICAgaWYoY29sdW1uID09PSAwICkge1xuICAgICAgICAgICAgICAgICAgICBhcnJbMV0gPSAwXG4gICAgICAgICAgICAgICAgICAgIGFyclsyXSA9IDBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYoY29sdW1uID09PSAxICkge1xuICAgICAgICAgICAgICAgICAgICBhcnJbMl0gPSAwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBhcnJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiDmm7TmlrDnu5PmnpzmlbDmja4gXG4gICAgICAgICAgICAgKiAqL1xuICAgICAgICAgICAgdXBkYXRlQWRkcmVzc0RhdGUoKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0VmFsWzBdID0gdGhpcy5hcnJheVswXVt0aGlzLnZhbHVlWzBdXS5uYW1lXG4gICAgICAgICAgICAgICAgc2VsZWN0VmFsWzFdID0gdGhpcy5hcnJheVsxXVt0aGlzLnZhbHVlWzFdXS5uYW1lIFxuICAgICAgICAgICAgICAgIHNlbGVjdFZhbFsyXSA9IHRoaXMuYXJyYXlbMl1bdGhpcy52YWx1ZVsyXV0ubmFtZSBcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiDngrnlh7vnoa7lrppcbiAgICAgICAgICAgICAqICovXG4gICAgICAgICAgICBiaW5kUGlja2VyQ2hhbmdlKGUpIHtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZSk7XG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGUudGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBzZWxlY3RWYWxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgfVxuICAgIH1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///68\n"); |
| | | eval("Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;\n\n\n\n\n\n\nvar _data = _interopRequireDefault(__webpack_require__(/*! @/js/pickerAddress/data.js */ 58));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} //\n//\n//\n//\n//\n//\nvar selectVal = ['', '', ''];var _default = { data: function data() {return { value: [0, 0, 0],\n array: [],\n index: 0 };\n\n },\n created: function created() {\n this.initSelect();\n },\n methods: {\n // 初始化地址选项\n initSelect: function initSelect() {\n this.updateSourceDate() // 更新源数据\n .updateAddressDate() // 更新结果数据\n .$forceUpdate(); // 触发双向绑定\n },\n // 地址控件改变控件\n columnchange: function columnchange(d) {\n this.updateSelectIndex(d.detail.column, d.detail.value) // 更新选择索引\n .updateSourceDate() // 更新源数据\n .updateAddressDate() // 更新结果数据\n .$forceUpdate(); // 触发双向绑定\n },\n\n /**\n * 更新源数据\n * */\n updateSourceDate: function updateSourceDate() {\n this.array = [];\n this.array[0] = _data.default.map(function (obj) {\n return {\n name: obj.name };\n\n });\n this.array[1] = _data.default[this.value[0]].city.map(function (obj) {\n return {\n name: obj.name };\n\n });\n this.array[2] = _data.default[this.value[0]].city[this.value[1]].area.map(function (obj) {\n return {\n name: obj };\n\n });\n return this;\n },\n\n /**\n * 更新索引\n * */\n updateSelectIndex: function updateSelectIndex(column, value) {\n var arr = JSON.parse(JSON.stringify(this.value));\n arr[column] = value;\n if (column === 0) {\n arr[1] = 0;\n arr[2] = 0;\n }\n if (column === 1) {\n arr[2] = 0;\n }\n this.value = arr;\n return this;\n },\n\n /**\n * 更新结果数据 \n * */\n updateAddressDate: function updateAddressDate() {\n selectVal[0] = this.array[0][this.value[0]].name;\n selectVal[1] = this.array[1][this.value[1]].name;\n selectVal[2] = this.array[2][this.value[2]].name;\n return this;\n },\n\n /**\n * 点击确定\n * */\n bindPickerChange: function bindPickerChange(e) {\n // console.log(e);\n this.$emit('change', {\n target: e.target,\n data: selectVal });\n\n return this;\n } } };exports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vanMvcGlja2VyQWRkcmVzcy9waWNrZXJBZGRyZXNzLnZ1ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBT0EsOEY7Ozs7OztBQUNBLDZCLGVBRUEsRUFDQSxJQURBLGtCQUNBLENBQ0EsU0FDQSxnQkFEQTtBQUVBLGVBRkE7QUFHQSxjQUhBOztBQUtBLEdBUEE7QUFRQSxTQVJBLHFCQVFBO0FBQ0E7QUFDQSxHQVZBO0FBV0E7QUFDQTtBQUNBLGNBRkEsd0JBRUE7QUFDQTtBQUFBLE9BQ0EsaUJBREEsR0FDQTtBQURBLE9BRUEsWUFGQSxHQURBLENBR0E7QUFDQSxLQU5BO0FBT0E7QUFDQSxnQkFSQSx3QkFRQSxDQVJBLEVBUUE7QUFDQTtBQUFBLE9BQ0EsZ0JBREEsR0FDQTtBQURBLE9BRUEsaUJBRkEsR0FFQTtBQUZBLE9BR0EsWUFIQSxHQURBLENBSUE7QUFDQSxLQWJBOztBQWVBOzs7QUFHQSxvQkFsQkEsOEJBa0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBREE7O0FBR0EsT0FKQTtBQUtBO0FBQ0E7QUFDQSx3QkFEQTs7QUFHQSxPQUpBO0FBS0E7QUFDQTtBQUNBLG1CQURBOztBQUdBLE9BSkE7QUFLQTtBQUNBLEtBcENBOztBQXNDQTs7O0FBR0EscUJBekNBLDZCQXlDQSxNQXpDQSxFQXlDQSxLQXpDQSxFQXlDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQXJEQTs7QUF1REE7OztBQUdBLHFCQTFEQSwrQkEwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBL0RBOztBQWlFQTs7O0FBR0Esb0JBcEVBLDRCQW9FQSxDQXBFQSxFQW9FQTtBQUNBO0FBQ0E7QUFDQSx3QkFEQTtBQUVBLHVCQUZBOztBQUlBO0FBQ0EsS0EzRUEsRUFYQSxFIiwiZmlsZSI6IjY4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG4gICAgPHBpY2tlciBAY2hhbmdlPVwiYmluZFBpY2tlckNoYW5nZVwiIEBjb2x1bW5jaGFuZ2U9XCJjb2x1bW5jaGFuZ2VcIiA6cmFuZ2U9XCJhcnJheVwiIHJhbmdlLWtleT1cIm5hbWVcIiA6dmFsdWU9XCJ2YWx1ZVwiIG1vZGU9XCJtdWx0aVNlbGVjdG9yXCI+XHJcbiAgICAgICAgPHNsb3Q+PC9zbG90PlxyXG4gICAgPC9waWNrZXI+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG4gICAgaW1wb3J0IEFsbEFkZHJlc3MgZnJvbSAnQC9qcy9waWNrZXJBZGRyZXNzL2RhdGEuanMnXHJcbiAgICBsZXQgc2VsZWN0VmFsID0gWycnLCcnLCcnXVxyXG4gICAgXHJcbiAgICBleHBvcnQgZGVmYXVsdCB7XHJcbiAgICAgICAgZGF0YSgpIHtcclxuICAgICAgICAgICAgcmV0dXJue1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6IFswLDAsMF0sXHJcbiAgICAgICAgICAgICAgICBhcnJheTogW10sXHJcbiAgICAgICAgICAgICAgICBpbmRleDogMFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjcmVhdGVkKCkge1xyXG4gICAgICAgICAgICB0aGlzLmluaXRTZWxlY3QoKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbWV0aG9kczp7XHJcbiAgICAgICAgICAgIC8vIOWIneWni+WMluWcsOWdgOmAiemhuVxyXG4gICAgICAgICAgICBpbml0U2VsZWN0KCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTb3VyY2VEYXRlKCkgLy8g5pu05paw5rqQ5pWw5o2uXHJcbiAgICAgICAgICAgICAgICAudXBkYXRlQWRkcmVzc0RhdGUoKSAvLyDmm7TmlrDnu5PmnpzmlbDmja5cclxuICAgICAgICAgICAgICAgIC4kZm9yY2VVcGRhdGUoKSAgLy8g6Kem5Y+R5Y+M5ZCR57uR5a6aXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIOWcsOWdgOaOp+S7tuaUueWPmOaOp+S7tlxyXG4gICAgICAgICAgICBjb2x1bW5jaGFuZ2UoZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RJbmRleChkLmRldGFpbC5jb2x1bW4sIGQuZGV0YWlsLnZhbHVlKSAvLyDmm7TmlrDpgInmi6nntKLlvJVcclxuICAgICAgICAgICAgICAgIC51cGRhdGVTb3VyY2VEYXRlKCkgLy8g5pu05paw5rqQ5pWw5o2uXHJcbiAgICAgICAgICAgICAgICAudXBkYXRlQWRkcmVzc0RhdGUoKSAvLyDmm7TmlrDnu5PmnpzmlbDmja5cclxuICAgICAgICAgICAgICAgIC4kZm9yY2VVcGRhdGUoKSAgLy8g6Kem5Y+R5Y+M5ZCR57uR5a6aXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICog5pu05paw5rqQ5pWw5o2uXHJcbiAgICAgICAgICAgICAqICovXHJcbiAgICAgICAgICAgIHVwZGF0ZVNvdXJjZURhdGUoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFycmF5ID0gW11cclxuICAgICAgICAgICAgICAgIHRoaXMuYXJyYXlbMF0gPSBBbGxBZGRyZXNzLm1hcChvYmogPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG9iai5uYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIHRoaXMuYXJyYXlbMV0gPSBBbGxBZGRyZXNzW3RoaXMudmFsdWVbMF1dLmNpdHkubWFwKG9iaiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogb2JqLm5hbWVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgdGhpcy5hcnJheVsyXSA9IEFsbEFkZHJlc3NbdGhpcy52YWx1ZVswXV0uY2l0eVt0aGlzLnZhbHVlWzFdXS5hcmVhLm1hcChvYmogPT4geyBcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBvYmpcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiDmm7TmlrDntKLlvJVcclxuICAgICAgICAgICAgICogKi9cclxuICAgICAgICAgICAgdXBkYXRlU2VsZWN0SW5kZXgoY29sdW1uLCB2YWx1ZSl7XHJcbiAgICAgICAgICAgICAgICBsZXQgYXJyID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnZhbHVlKSkgXHJcbiAgICAgICAgICAgICAgICBhcnJbY29sdW1uXSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgICBpZihjb2x1bW4gPT09IDAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXJyWzFdID0gMFxyXG4gICAgICAgICAgICAgICAgICAgIGFyclsyXSA9IDBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKGNvbHVtbiA9PT0gMSApIHtcclxuICAgICAgICAgICAgICAgICAgICBhcnJbMl0gPSAwXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gYXJyXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIOabtOaWsOe7k+aenOaVsOaNriBcclxuICAgICAgICAgICAgICogKi9cclxuICAgICAgICAgICAgdXBkYXRlQWRkcmVzc0RhdGUoKSB7XHJcbiAgICAgICAgICAgICAgICBzZWxlY3RWYWxbMF0gPSB0aGlzLmFycmF5WzBdW3RoaXMudmFsdWVbMF1dLm5hbWVcclxuICAgICAgICAgICAgICAgIHNlbGVjdFZhbFsxXSA9IHRoaXMuYXJyYXlbMV1bdGhpcy52YWx1ZVsxXV0ubmFtZSBcclxuICAgICAgICAgICAgICAgIHNlbGVjdFZhbFsyXSA9IHRoaXMuYXJyYXlbMl1bdGhpcy52YWx1ZVsyXV0ubmFtZSBcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICog54K55Ye756Gu5a6aXHJcbiAgICAgICAgICAgICAqICovXHJcbiAgICAgICAgICAgIGJpbmRQaWNrZXJDaGFuZ2UoZSkge1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywge1xyXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogZS50YXJnZXQsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogc2VsZWN0VmFsXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICB9XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlPlxyXG48L3N0eWxlPiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///68\n"); |
| | | |
| | | /***/ }), |
| | | /* 69 */ |
| | |
| | | /***/ (function(module, exports, __webpack_require__) { |
| | | |
| | | "use strict"; |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0; //\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default =\n{\n data: function data() {\n return {\n title: '选择人员',\n mulit: '',\n param: {},\n searchVal: '',\n ischecked: false,\n data: [] };\n\n },\n onLoad: function onLoad(options) {\n __f__(\"log\", options, \" at pages/selpsn/index.vue:87\");\n var param = JSON.parse(options.param);\n this.$data.param = param;\n this.$data.mulit = options.mulit;\n // console.log(this.$data.param);\n },\n methods: {\n onkeyup: function onkeyup(e) {var _this = this;\n if (this.$data.searchVal) {\n var datainfo = { jp: this.$data.searchVal, dept_id: '' };\n this.$store.dispatch('querySelpsn', datainfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n for (var i in success.data) {\n success.data[i].ischeck = false;\n }\n\n _this.$data.data = success.data;\n } else {\n uni.showModal({ title: \"错误\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n } else\n this.$data.data = [];\n },\n onchange: function onchange(e) {\n // console.log(e.target);\n var data = this.$data.data;\n this.$data.data = [];\n if (this.$data.mulit == \"false\") {\n for (var i in data) {\n data[i].ischeck = false;\n }\n }\n\n data[e.target.dataset.index].ischeck = e.target.dataset.ischeck ? false : true;\n this.$data.data = data;\n },\n sava: function sava() {//点击功能点跳转页面\n var data = [];\n for (var i in this.$data.data) {\n if (this.$data.data[i].ischeck == true) {\n data.push(this.$data.data[i]);\n }\n }\n if (data.length == 0) {\n uni.showModal({ title: \"提示\", content: '未选择人员!', showCancel: false, confirmText: \"取消\" });\n return;\n }\n var eventChannel = this.$scope.eventChannel;\n // const eventChannel = this.getOpenerEventChannel();\n eventChannel.emit('AddPer', data, this.$data.param);\n\n uni.navigateBack();\n } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 13)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvc2VscHNuL2luZGV4LnZ1ZSJdLCJuYW1lcyI6WyJkYXRhIiwidGl0bGUiLCJtdWxpdCIsInBhcmFtIiwic2VhcmNoVmFsIiwiaXNjaGVja2VkIiwib25Mb2FkIiwib3B0aW9ucyIsIkpTT04iLCJwYXJzZSIsIiRkYXRhIiwibWV0aG9kcyIsIm9ua2V5dXAiLCJlIiwiZGF0YWluZm8iLCJqcCIsImRlcHRfaWQiLCIkc3RvcmUiLCJkaXNwYXRjaCIsInRoZW4iLCJzdWNjZXNzIiwiY29kZSIsImkiLCJpc2NoZWNrIiwidW5pIiwic2hvd01vZGFsIiwiY29udGVudCIsIm1zZyIsInNob3dDYW5jZWwiLCJjb25maXJtVGV4dCIsImNhdGNoIiwiZXgiLCJlcnJNc2ciLCJvbmNoYW5nZSIsInRhcmdldCIsImRhdGFzZXQiLCJpbmRleCIsInNhdmEiLCJwdXNoIiwibGVuZ3RoIiwiZXZlbnRDaGFubmVsIiwiJHNjb3BlIiwiZW1pdCIsIm5hdmlnYXRlQmFjayJdLCJtYXBwaW5ncyI6InFJQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlO0FBQ2RBLE1BRGMsa0JBQ1A7QUFDTixXQUFPO0FBQ05DLFdBQUssRUFBRSxNQUREO0FB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LEtBQUwsQ0FBV1YsSUFBeEIsRUFBNkI7QUFDNUIsWUFBRyxLQUFLVSxLQUFMLENBQVdWLElBQVgsQ0FBZ0JzQixDQUFoQixFQUFtQkMsT0FBbkIsSUFBNEIsSUFBL0IsRUFBb0M7QUFDbkN2QixjQUFJLENBQUNzQyxJQUFMLENBQVUsS0FBSzVCLEtBQUwsQ0FBV1YsSUFBWCxDQUFnQnNCLENBQWhCLENBQVY7QUFDQTtBQUNEO0FBQ0QsVUFBR3RCLElBQUksQ0FBQ3VDLE1BQUwsSUFBYSxDQUFoQixFQUFrQjtBQUNqQmYsV0FBRyxDQUFDQyxTQUFKLENBQWMsRUFBQ3hCLEtBQUssRUFBQyxJQUFQLEVBQVl5QixPQUFPLEVBQUMsUUFBcEIsRUFBNkJFLFVBQVUsRUFBQyxLQUF4QyxFQUE4Q0MsV0FBVyxFQUFDLElBQTFELEVBQWQ7QUFDQTtBQUNBO0FBQ0QsVUFBTVcsWUFBWSxHQUFHLEtBQUtDLE1BQUwsQ0FBWUQsWUFBakM7QUFDQTtBQUNBQSxrQkFBWSxDQUFDRSxJQUFiLENBQWtCLFFBQWxCLEVBQTJCMUMsSUFBM0IsRUFBZ0MsS0FBS1UsS0FBTCxDQUFXUCxLQUEzQzs7QUFFQXFCLFNBQUcsQ0FBQ21CLFlBQUo7QUFDQSxLQW5ETyxFQWxCSyxFIiwiZmlsZSI6IjczLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuZXhwb3J0IGRlZmF1bHQge1xuXHRkYXRhKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHR0aXRsZTogJ+mAieaLqeS6uuWRmCcsXG5cdFx0XHRtdWxpdDonJyxcblx0XHRcdHBhcmFtOnt9LFxuXHRcdFx0c2VhcmNoVmFsOicnLFxuXHRcdFx0aXNjaGVja2VkOmZhbHNlLFxuXHRcdFx0ZGF0YTpbXVxuXHRcdH1cblx0fSxcblx0b25Mb2FkKG9wdGlvbnMpIHtcblx0XHRjb25zb2xlLmxvZyhvcHRpb25zKTtcblx0XHR2YXIgcGFyYW0gPSBKU09OLnBhcnNlKG9wdGlvbnMucGFyYW0pO1xuXHRcdHRoaXMuJGRhdGEucGFyYW09cGFyYW07XG5cdFx0dGhpcy4kZGF0YS5tdWxpdD1vcHRpb25zLm11bGl0O1xuXHRcdC8vIGNvbnNvbGUubG9nKHRoaXMuJGRhdGEucGFyYW0pO1xuXHR9LFxuXHRtZXRob2RzOiB7XG5cdFx0b25rZXl1cChlKSB7XG5cdFx0XHRpZih0aGlzLiRkYXRhLnNlYXJjaFZhbCl7XG5cdFx0XHRcdHZhciBkYXRhaW5mbyA9eyBqcDogdGhpcy4kZGF0YS5zZWFyY2hWYWwsIGRlcHRfaWQ6ICcnIH1cblx0XHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3F1ZXJ5U2VscHNuJyxkYXRhaW5mbykudGhlbihzdWNjZXNzPT57XG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xuXHRcdFx0XHRcdFx0Zm9yKHZhciBpIGluIHN1Y2Nlc3MuZGF0YSl7XG5cdFx0XHRcdFx0XHRcdHN1Y2Nlc3MuZGF0YVtpXS5pc2NoZWNrPWZhbHNlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmRhdGEgPSBzdWNjZXNzLmRhdGE7XG5cdFx0XHRcdFx0fWVsc2V7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivr1wiLGNvbnRlbnQ6c3VjY2Vzcy5tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KS5jYXRjaChleD0+e1xuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivr1wiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSBcblx0XHRcdFx0dGhpcy4kZGF0YS5kYXRhID0gW107XG5cdFx0fSxcblx0XHRvbmNoYW5nZShlKSB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHR2YXIgZGF0YSA9IHRoaXMuJGRhdGEuZGF0YTtcblx0XHRcdHRoaXMuJGRhdGEuZGF0YT1bXTtcblx0XHRcdGlmKHRoaXMuJGRhdGEubXVsaXQ9PVwiZmFsc2VcIil7XG5cdFx0XHRcdGZvcih2YXIgaSBpbiBkYXRhKXtcblx0XHRcdFx0XHRkYXRhW2ldLmlzY2hlY2s9ZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdFxuXHRcdFx0ZGF0YVtlLnRhcmdldC5kYXRhc2V0LmluZGV4XS5pc2NoZWNrPWUudGFyZ2V0LmRhdGFzZXQuaXNjaGVjaz9mYWxzZTp0cnVlXG5cdFx0XHR0aGlzLiRkYXRhLmRhdGE9ZGF0YTtcblx0XHR9LFxuXHRcdHNhdmEoKXsgLy/ngrnlh7vlip/og73ngrnot7PovazpobXpnaJcblx0XHRcdHZhciBkYXRhID0gW107XG5cdFx0XHRmb3IodmFyIGkgaW4gdGhpcy4kZGF0YS5kYXRhKXtcblx0XHRcdFx0aWYodGhpcy4kZGF0YS5kYXRhW2ldLmlzY2hlY2s9PXRydWUpe1xuXHRcdFx0XHRcdGRhdGEucHVzaCh0aGlzLiRkYXRhLmRhdGFbaV0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZihkYXRhLmxlbmd0aD09MCl7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDon5pyq6YCJ5oup5Lq65ZGY77yBJyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgZXZlbnRDaGFubmVsID0gdGhpcy4kc2NvcGUuZXZlbnRDaGFubmVsO1xuXHRcdFx0Ly8gY29uc3QgZXZlbnRDaGFubmVsID0gdGhpcy5nZXRPcGVuZXJFdmVudENoYW5uZWwoKTtcblx0XHRcdGV2ZW50Q2hhbm5lbC5lbWl0KCdBZGRQZXInLGRhdGEsdGhpcy4kZGF0YS5wYXJhbSk7XG5cdFx0XHRcblx0XHRcdHVuaS5uYXZpZ2F0ZUJhY2soKVxuXHRcdH1cblx0XG5cdH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///73\n"); |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0; //\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default =\n{\n data: function data() {\n return {\n title: '选择人员',\n mulit: '',\n param: {},\n searchVal: '',\n ischecked: false,\n data: [] };\n\n },\n onLoad: function onLoad(options) {\n __f__(\"log\", options, \" at pages/selpsn/index.vue:87\");\n var param = JSON.parse(options.param);\n this.$data.param = param;\n this.$data.mulit = options.mulit;\n // console.log(this.$data.param);\n },\n methods: {\n onkeyup: function onkeyup(e) {var _this = this;\n if (this.$data.searchVal) {\n var datainfo = { jp: this.$data.searchVal, dept_id: '' };\n this.$store.dispatch('querySelpsn', datainfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n for (var i in success.data) {\n success.data[i].ischeck = false;\n }\n\n _this.$data.data = success.data;\n } else {\n uni.showModal({ title: \"错误\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n } else\n this.$data.data = [];\n },\n onchange: function onchange(e) {\n // console.log(e.target);\n var data = this.$data.data;\n this.$data.data = [];\n if (this.$data.mulit == \"false\") {\n for (var i in data) {\n data[i].ischeck = false;\n }\n }\n\n data[e.target.dataset.index].ischeck = e.target.dataset.ischeck ? false : true;\n this.$data.data = data;\n },\n sava: function sava() {//点击功能点跳转页面\n var data = [];\n for (var i in this.$data.data) {\n if (this.$data.data[i].ischeck == true) {\n data.push(this.$data.data[i]);\n }\n }\n if (data.length == 0) {\n uni.showModal({ title: \"提示\", content: '未选择人员!', showCancel: false, confirmText: \"取消\" });\n return;\n }\n var eventChannel = this.$scope.eventChannel;\n // const eventChannel = this.getOpenerEventChannel();\n eventChannel.emit('AddPer', data, this.$data.param);\n\n uni.navigateBack();\n } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 13)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvc2VscHNuL2luZGV4LnZ1ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBFQTtBQUNBLE1BREEsa0JBQ0E7QUFDQTtBQUNBLG1CQURBO0FBRUEsZUFGQTtBQUdBLGVBSEE7QUFJQSxtQkFKQTtBQUtBLHNCQUxBO0FBTUEsY0FOQTs7QUFRQSxHQVZBO0FBV0EsUUFYQSxrQkFXQSxPQVhBLEVBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FqQkE7QUFrQkE7QUFDQSxXQURBLG1CQUNBLENBREEsRUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQU5BLE1BTUE7QUFDQTtBQUNBO0FBQ0EsU0FYQSxFQVdBLEtBWEEsQ0FXQTtBQUNBO0FBQ0E7QUFDQSxTQWRBO0FBZUEsT0FqQkE7QUFrQkE7QUFDQSxLQXJCQTtBQXNCQSxZQXRCQSxvQkFzQkEsQ0F0QkEsRUFzQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQWxDQTtBQW1DQSxRQW5DQSxrQkFtQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBbkRBLEVBbEJBLEUiLCJmaWxlIjoiNzMuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8c3R5bGU+XHJcblx0LmNvbnRlbnQge1xyXG5cdFx0d2lkdGg6IDEwMHZ3O1xyXG5cdFx0aGVpZ2h0OiA5M3ZoO1xyXG5cdFx0YmFja2dyb3VuZDogI0VBRUFFQTtcclxuXHRcdHBhZGRpbmc6IDE0cnB4IDBycHggMHJweCAwcnB4O1xyXG5cdH1cclxuXHRpbnB1dHtcclxuXHRcdGJvcmRlcjogMXB4IHNvbGlkICNkNWQ1ZDU7XHJcblx0XHR3aWR0aDogNzclO1xyXG5cdFx0aGVpZ2h0OiA4MHJweDtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDYwcnB4IWltcG9ydGFudDtcclxuXHRcdHBhZGRpbmc6IDAgNjBycHggMCA2NnJweDtcclxuXHRcdG1hcmdpbjogMHJweCAyMHJweCAxMHJweCAyMHJweDtcclxuXHRcdGJhY2tncm91bmQ6ICNGRkY7XHJcblx0fVxyXG5cdC5kdl9xdWVyeV9ib2R5IHtcclxuXHQgICAgaGVpZ2h0OiA5MSU7XHJcblx0ICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcblx0ICAgIGJvcmRlcjogMnJweCBzb2xpZCAjZDVkNWQ1O1xyXG5cdCAgICBwYWRkaW5nOiAxNHJweDtcclxuXHR9XHJcblx0LnBzbiB7XHJcblx0ICAgIG1hcmdpbjogMCAxMnJweCAxMnJweCAwO1xyXG5cdCAgICBwYWRkaW5nOiA4cnB4IDIwcnB4IDEwcnB4O1xyXG5cdCAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTVhMWRkO1xyXG5cdCAgICBmb250LXNpemU6IDMwcnB4O1xyXG5cdCAgICBjb2xvcjogI2ZmZjtcclxuXHQgICAgYm9yZGVyLXJhZGl1czogMjBycHg7XHJcblx0ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHQgICAgY3Vyc29yOiBwb2ludGVyO1xyXG5cdH1cclxuXHRidXR0b24uYnRuX3NhdmEge1xyXG5cdFx0bWFyZ2luLXRvcDogNjBycHg7XHJcblx0XHRwYWRkaW5nOiAyMHJweDtcclxuXHRcdGxpbmUtaGVpZ2h0OiAxLjI7XHJcblx0XHRiYWNrZ3JvdW5kOiAjMjdBNkUxO1xyXG5cdFx0Ym9yZGVyOiBub25lO1xyXG5cdFx0Y29sb3I6ICNmZmY7XHJcblx0fVxyXG48L3N0eWxlPlxyXG5cclxuPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwiY29udGVudFwiPlxyXG5cdFx0PHZpZXcgc3R5bGU9XCJoZWlnaHQ6OTAlO1wiPlxyXG5cdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cInR4dF9zZWFyY2hcIiB2LW1vZGVsPVwic2VhcmNoVmFsXCIgIEBrZXl1cD1cIm9ua2V5dXBcIiBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpeS6uuWRmOWnk+WQjeaIlueugOaLvOi/m+ihjOafpeivolwiID5cclxuXHRcdFx0PCEtLSA8ZGl2IGNsYXNzPVwiZHZfcXVlcnlfYm9keVwiID5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwicHNuXCI+XHJcblx0XHRcdFx0XHQ8Y2hlY2tib3gtZ3JvdXAgY2xhc3M9XCJpc2NoZWNrXCIgQGNoYW5nZT1cIm9uY2hhbmdlXCIgZGF0YS1pc2NoZWNrPVwiZmFsc2VcIiBkYXRhLWluZGV4PVwiMFwiID5cclxuXHRcdFx0XHRcdFx0PGxhYmVsPlxyXG5cdFx0XHRcdFx0XHRcdDxjaGVja2JveCBiYWx1ZT1cIjFcIiA6Y2hlY2tlZD1cImlzY2hlY2tlZFwiIC8+XHJcblx0XHRcdFx0XHRcdFx0PHRleHQ+dGVzdDwvdGV4dD5cclxuXHRcdFx0XHRcdFx0PC9sYWJlbD5cclxuXHRcdFx0XHRcdDwvY2hlY2tib3gtZ3JvdXA+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PiAtLT5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImR2X3F1ZXJ5X2JvZHlcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwicHNuXCIgdi1mb3I9XCIocHNuLGluZGV4KSBpbiBkYXRhXCI+XHJcblx0XHRcdFx0XHQ8Y2hlY2tib3gtZ3JvdXAgY2xhc3M9XCJpc2NoZWNrXCIgQGNoYW5nZT1cIm9uY2hhbmdlXCIgOmRhdGEtaXNjaGVjaz1cInBzbi5pc2NoZWNrXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiID5cclxuXHRcdFx0XHRcdFx0PGxhYmVsPlxyXG5cdFx0XHRcdFx0XHRcdDxjaGVja2JveCA6Y2hlY2tlZD1cInBzbi5pc2NoZWNrXCIgLz5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dD57e3Bzbi5OYW1lfX08L3RleHQ+XHJcblx0XHRcdFx0XHRcdDwvbGFiZWw+XHJcblx0XHRcdFx0XHQ8L2NoZWNrYm94LWdyb3VwPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHJcblx0XHRcdDxidXR0b24gdHlwZT1cImRlZmF1bHRcIiBAdGFwPVwic2F2YVwiIGNsYXNzPVwiYnRuX3NhdmFcIj7noa7lrpo8L2J1dHRvbj5cclxuXHRcdDwvdmlldz5cclxuXHRcdFxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT4gXHJcblxyXG48c2NyaXB0PlxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0dGl0bGU6ICfpgInmi6nkurrlkZgnLFxyXG5cdFx0XHRcdG11bGl0OicnLFxyXG5cdFx0XHRcdHBhcmFtOnt9LFxyXG5cdFx0XHRcdHNlYXJjaFZhbDonJyxcclxuXHRcdFx0XHRpc2NoZWNrZWQ6ZmFsc2UsXHJcblx0XHRcdFx0ZGF0YTpbXVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0b25Mb2FkKG9wdGlvbnMpIHtcclxuXHRcdFx0Y29uc29sZS5sb2cob3B0aW9ucyk7XHJcblx0XHRcdHZhciBwYXJhbSA9IEpTT04ucGFyc2Uob3B0aW9ucy5wYXJhbSk7XHJcblx0XHRcdHRoaXMuJGRhdGEucGFyYW09cGFyYW07XHJcblx0XHRcdHRoaXMuJGRhdGEubXVsaXQ9b3B0aW9ucy5tdWxpdDtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2codGhpcy4kZGF0YS5wYXJhbSk7XHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRvbmtleXVwKGUpIHtcclxuXHRcdFx0XHRpZih0aGlzLiRkYXRhLnNlYXJjaFZhbCl7XHJcblx0XHRcdFx0XHR2YXIgZGF0YWluZm8gPXsganA6IHRoaXMuJGRhdGEuc2VhcmNoVmFsLCBkZXB0X2lkOiAnJyB9XHJcblx0XHRcdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgncXVlcnlTZWxwc24nLGRhdGFpbmZvKS50aGVuKHN1Y2Nlc3M9PntcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coc3VjY2Vzcyk7XHJcblx0XHRcdFx0XHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0XHRmb3IodmFyIGkgaW4gc3VjY2Vzcy5kYXRhKXtcclxuXHRcdFx0XHRcdFx0XHRcdHN1Y2Nlc3MuZGF0YVtpXS5pc2NoZWNrPWZhbHNlO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmRhdGEgPSBzdWNjZXNzLmRhdGE7XHJcblx0XHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivr1wiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fSBlbHNlIFxyXG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5kYXRhID0gW107XHJcblx0XHRcdH0sXHJcblx0XHRcdG9uY2hhbmdlKGUpIHtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XHJcblx0XHRcdFx0dmFyIGRhdGEgPSB0aGlzLiRkYXRhLmRhdGE7XHJcblx0XHRcdFx0dGhpcy4kZGF0YS5kYXRhPVtdO1xyXG5cdFx0XHRcdGlmKHRoaXMuJGRhdGEubXVsaXQ9PVwiZmFsc2VcIil7XHJcblx0XHRcdFx0XHRmb3IodmFyIGkgaW4gZGF0YSl7XHJcblx0XHRcdFx0XHRcdGRhdGFbaV0uaXNjaGVjaz1mYWxzZTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0ZGF0YVtlLnRhcmdldC5kYXRhc2V0LmluZGV4XS5pc2NoZWNrPWUudGFyZ2V0LmRhdGFzZXQuaXNjaGVjaz9mYWxzZTp0cnVlXHJcblx0XHRcdFx0dGhpcy4kZGF0YS5kYXRhPWRhdGE7XHJcblx0XHRcdH0sXHJcblx0XHRcdHNhdmEoKXsgLy/ngrnlh7vlip/og73ngrnot7PovazpobXpnaJcclxuXHRcdFx0XHR2YXIgZGF0YSA9IFtdO1xyXG5cdFx0XHRcdGZvcih2YXIgaSBpbiB0aGlzLiRkYXRhLmRhdGEpe1xyXG5cdFx0XHRcdFx0aWYodGhpcy4kZGF0YS5kYXRhW2ldLmlzY2hlY2s9PXRydWUpe1xyXG5cdFx0XHRcdFx0XHRkYXRhLnB1c2godGhpcy4kZGF0YS5kYXRhW2ldKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYoZGF0YS5sZW5ndGg9PTApe1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OifmnKrpgInmi6nkurrlkZjvvIEnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb25zdCBldmVudENoYW5uZWwgPSB0aGlzLiRzY29wZS5ldmVudENoYW5uZWw7XHJcblx0XHRcdFx0Ly8gY29uc3QgZXZlbnRDaGFubmVsID0gdGhpcy5nZXRPcGVuZXJFdmVudENoYW5uZWwoKTtcclxuXHRcdFx0XHRldmVudENoYW5uZWwuZW1pdCgnQWRkUGVyJyxkYXRhLHRoaXMuJGRhdGEucGFyYW0pO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdHVuaS5uYXZpZ2F0ZUJhY2soKVxyXG5cdFx0XHR9XHJcblx0XHRcclxuXHRcdH1cclxuXHR9XHJcbjwvc2NyaXB0PlxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///73\n"); |
| | | |
| | | /***/ }), |
| | | /* 74 */ |
| | |
| | | /***/ (function(module, exports, __webpack_require__) { |
| | | |
| | | "use strict"; |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0; //\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default =\n{\n data: function data() {\n return {\n title: '选择项目',\n relation: '-1',\n param: {},\n searchVal: '',\n ischecked: false,\n data: [] };\n\n },\n onLoad: function onLoad(options) {var _this = this;\n // console.log(options);\n var param = JSON.parse(options.param);\n this.$data.param = param;\n this.$data.relation = options.relation;\n // console.log(this.$data.param);\n\n\n var datainfo = { relation: this.$data.relation, tag: '', type: '', kw: '', pindex: 1, psize: 999999999, state: '', order: 'CN_T_CREATE DESC', kwpmname: '', kwcode: '', sessionid: '' };\n\n // console.log(datainfo);\n this.$store.dispatch('ProjectGetAnalysisList', datainfo).then(function (success) {\n __f__(\"log\", success, \" at pages/selPrj/index.vue:106\");\n if (success.code == '00000') {\n for (var i in success.data.Body) {\n success.data.Body[i].ischeck = false;\n }\n\n _this.$data.data = success.data.Body;\n\n } else {\n uni.showModal({ title: \"错误1\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误1.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n methods: {\n onkeyup: function onkeyup(e) {var _this2 = this;\n // console.log(e.target);\n // console.log(this.$data.searchVal);\n var datainfo = { relation: this.$data.priRel, tag: '', type: '', kw: this.$data.searchVal, pindex: 1, psize: 999999999, state: '', order: 'CN_T_CREATE DESC', kwpmname: '', kwcode: '', sessionid: '' };\n this.$store.dispatch('ProjectGetAnalysisList', datainfo).then(function (success) {\n __f__(\"log\", success, \" at pages/selPrj/index.vue:128\");\n if (success.code == '00000') {\n for (var i in success.data.Body) {\n success.data.Body[i].ischeck = false;\n }\n\n _this2.$data.data = success.data.Body;\n } else {\n uni.showModal({ title: \"错误2\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误2.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n\n },\n onchange: function onchange(e) {\n // console.log(e.target);\n var data = this.$data.data;\n this.$data.data = [];\n for (var i in data) {\n data[i].ischeck = false;\n }\n\n data[e.target.dataset.index].ischeck = e.target.dataset.ischeck ? false : true;\n this.$data.data = data;\n },\n sava: function sava() {//点击功能点跳转页面\n // console.log(this.$data.data);\n var data = [];\n for (var i in this.$data.data) {\n if (this.$data.data[i].ischeck == true) {\n data.push(this.$data.data[i]);\n }\n }\n if (data.length == 0) {\n uni.showModal({ title: \"提示\", content: '未选择项目!', showCancel: false, confirmText: \"取消\" });\n return;\n }\n var eventChannel = this.$scope.eventChannel;\n // const eventChannel = this.getOpenerEventChannel();\n eventChannel.emit('AddPer', data, this.$data.param);\n\n uni.navigateBack();\n } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 13)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvc2VsUHJqL2luZGV4LnZ1ZSJdLCJuYW1lcyI6WyJkYXRhIiwidGl0bGUiLCJyZWxhdGlvbiIsInBhcmFtIiwic2VhcmNoVmFsIiwiaXNjaGVja2VkIiwib25Mb2FkIiwib3B0aW9ucyIsIkpTT04iLCJwYXJzZSIsIiRkYXRhIiwiZGF0YWluZm8iLCJ0YWciLCJ0eXBlIiwia3ciLCJwaW5kZXgiLCJwc2l6ZSIsInN0YXRlIiwib3JkZXIiLCJrd3BtbmFtZSIsImt3Y29kZSIsInNlc3Npb25pZCIsIiRzdG9yZSIsImRpc3BhdGNoIiwidGhlbiIsInN1Y2Nlc3MiLCJjb2RlIiwiaSIsIkJvZHkiLCJpc2NoZWNrIiwidW5pIiwic2hvd01vZGFsIiwiY29udGVudCIsIm1zZyIsInNob3dDYW5jZWwiLCJjb25maXJtVGV4dCIsImNhdGNoIiwiZXgiLCJlcnJNc2ciLCJtZXRob2RzIiwib25rZXl1cCIsImUiLCJwcmlSZWwiLCJvbmNoYW5nZSIsInRhcmdldCIsImRhdGFzZXQiLCJpbmRleCIsInNhdmEiLCJwdXNoIiwibGVuZ3RoIiwiZXZlbnRDaGFubmVsIiwiJHNjb3BlIiwiZW1pdCIsIm5hdmlnYXRlQmFjayJdLCJtYXBwaW5ncyI6InFJQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QUNBLEtBbERPLEVBdkNLLEUiLCJmaWxlIjoiNzguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbmV4cG9ydCBkZWZhdWx0IHtcblx0ZGF0YSgpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0dGl0bGU6ICfpgInmi6npobnnm64nLFxuXHRcdFx0cmVsYXRpb246Jy0xJyxcblx0XHRcdHBhcmFtOnt9LFxuXHRcdFx0c2VhcmNoVmFsOicnLFxuXHRcdFx0aXNjaGVja2VkOmZhbHNlLFxuXHRcdFx0ZGF0YTpbXVxuXHRcdH1cblx0fSxcblx0b25Mb2FkKG9wdGlvbnMpIHtcblx0XHQvLyBjb25zb2xlLmxvZyhvcHRpb25zKTtcblx0XHR2YXIgcGFyYW0gPSBKU09OLnBhcnNlKG9wdGlvbnMucGFyYW0pO1xuXHRcdHRoaXMuJGRhdGEucGFyYW09cGFyYW07XG5cdFx0dGhpcy4kZGF0YS5yZWxhdGlvbj0gb3B0aW9ucy5yZWxhdGlvbjtcblx0XHQvLyBjb25zb2xlLmxvZyh0aGlzLiRkYXRhLnBhcmFtKTtcblx0XHRcblx0XHRcblx0XHR2YXIgZGF0YWluZm8gPXsgcmVsYXRpb246IHRoaXMuJGRhdGEucmVsYXRpb24sIHRhZzogJycsIHR5cGU6ICcnLCBrdzogJycsIHBpbmRleDogMSwgcHNpemU6IDk5OTk5OTk5OSwgc3RhdGU6ICcnLCBvcmRlcjogJ0NOX1RfQ1JFQVRFIERFU0MnLCBrd3BtbmFtZTogJycsIGt3Y29kZTogJycsIHNlc3Npb25pZDogJycgfTtcblx0XHRcblx0XHQvLyBjb25zb2xlLmxvZyhkYXRhaW5mbyk7XG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ1Byb2plY3RHZXRBbmFseXNpc0xpc3QnLGRhdGFpbmZvKS50aGVuKHN1Y2Nlc3M9Pntcblx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xuXHRcdFx0XHRmb3IodmFyIGkgaW4gc3VjY2Vzcy5kYXRhLkJvZHkpe1xuXHRcdFx0XHRcdHN1Y2Nlc3MuZGF0YS5Cb2R5W2ldLmlzY2hlY2s9ZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0XG5cdFx0XHRcdHRoaXMuJGRhdGEuZGF0YSA9IHN1Y2Nlc3MuZGF0YS5Cb2R5O1xuXHRcdFx0XHRcblx0XHRcdH1lbHNle1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzFcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0fVxuXHRcdH0pLmNhdGNoKGV4PT57XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzEuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdH0pO1xuXHR9LFxuXHRtZXRob2RzOiB7XG5cdFx0b25rZXl1cChlKSB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyh0aGlzLiRkYXRhLnNlYXJjaFZhbCk7XG5cdFx0XHR2YXIgZGF0YWluZm8gPXsgcmVsYXRpb246IHRoaXMuJGRhdGEucHJpUmVsLCB0YWc6ICcnLCB0eXBlOiAnJywga3c6IHRoaXMuJGRhdGEuc2VhcmNoVmFsLCBwaW5kZXg6IDEsIHBzaXplOiA5OTk5OTk5OTksIHN0YXRlOiAnJywgb3JkZXI6ICdDTl9UX0NSRUFURSBERVNDJywga3dwbW5hbWU6ICcnLCBrd2NvZGU6ICcnLCBzZXNzaW9uaWQ6ICcnIH07XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnUHJvamVjdEdldEFuYWx5c2lzTGlzdCcsZGF0YWluZm8pLnRoZW4oc3VjY2Vzcz0+e1xuXHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xuXHRcdFx0XHRcdGZvcih2YXIgaSBpbiBzdWNjZXNzLmRhdGEuQm9keSl7XG5cdFx0XHRcdFx0XHRzdWNjZXNzLmRhdGEuQm9keVtpXS5pc2NoZWNrPWZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcblx0XHRcdFx0XHR0aGlzLiRkYXRhLmRhdGEgPSBzdWNjZXNzLmRhdGEuQm9keTtcblx0XHRcdFx0fWVsc2V7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68yXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSkuY2F0Y2goZXg9Pntcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzIuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0fSk7XG5cdFx0XHRcblx0XHR9LFxuXHRcdG9uY2hhbmdlKGUpIHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcblx0XHRcdHZhciBkYXRhID0gdGhpcy4kZGF0YS5kYXRhO1xuXHRcdFx0dGhpcy4kZGF0YS5kYXRhPVtdO1xuXHRcdFx0Zm9yKHZhciBpIGluIGRhdGEpe1xuXHRcdFx0XHRkYXRhW2ldLmlzY2hlY2s9ZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdGRhdGFbZS50YXJnZXQuZGF0YXNldC5pbmRleF0uaXNjaGVjaz1lLnRhcmdldC5kYXRhc2V0LmlzY2hlY2s/ZmFsc2U6dHJ1ZVxuXHRcdFx0dGhpcy4kZGF0YS5kYXRhPWRhdGE7XG5cdFx0fSxcblx0XHRzYXZhKCl7IC8v54K55Ye75Yqf6IO954K56Lez6L2s6aG16Z2iXG5cdFx0XHQvLyBjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmRhdGEpO1xuXHRcdFx0dmFyIGRhdGEgPSBbXTtcblx0XHRcdGZvcih2YXIgaSBpbiB0aGlzLiRkYXRhLmRhdGEpe1xuXHRcdFx0XHRpZih0aGlzLiRkYXRhLmRhdGFbaV0uaXNjaGVjaz09dHJ1ZSl7XG5cdFx0XHRcdFx0ZGF0YS5wdXNoKHRoaXMuJGRhdGEuZGF0YVtpXSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmKGRhdGEubGVuZ3RoPT0wKXtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OifmnKrpgInmi6npobnnm67vvIEnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBldmVudENoYW5uZWwgPSB0aGlzLiRzY29wZS5ldmVudENoYW5uZWw7XG5cdFx0XHQvLyBjb25zdCBldmVudENoYW5uZWwgPSB0aGlzLmdldE9wZW5lckV2ZW50Q2hhbm5lbCgpO1xuXHRcdFx0ZXZlbnRDaGFubmVsLmVtaXQoJ0FkZFBlcicsZGF0YSx0aGlzLiRkYXRhLnBhcmFtKTtcblx0XHRcdFxuXHRcdFx0dW5pLm5hdmlnYXRlQmFjaygpXG5cdFx0fVxuXHRcblx0fVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///78\n"); |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0; //\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default =\n{\n data: function data() {\n return {\n title: '选择项目',\n relation: '-1',\n param: {},\n searchVal: '',\n ischecked: false,\n data: [] };\n\n },\n onLoad: function onLoad(options) {var _this = this;\n // console.log(options);\n var param = JSON.parse(options.param);\n this.$data.param = param;\n this.$data.relation = options.relation;\n // console.log(this.$data.param);\n\n\n var datainfo = { relation: this.$data.relation, tag: '', type: '', kw: '', pindex: 1, psize: 999999999, state: '', order: 'CN_T_CREATE DESC', kwpmname: '', kwcode: '', sessionid: '' };\n\n // console.log(datainfo);\n this.$store.dispatch('ProjectGetAnalysisList', datainfo).then(function (success) {\n __f__(\"log\", success, \" at pages/selPrj/index.vue:106\");\n if (success.code == '00000') {\n for (var i in success.data.Body) {\n success.data.Body[i].ischeck = false;\n }\n\n _this.$data.data = success.data.Body;\n\n } else {\n uni.showModal({ title: \"错误1\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误1.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n methods: {\n onkeyup: function onkeyup(e) {var _this2 = this;\n // console.log(e.target);\n // console.log(this.$data.searchVal);\n var datainfo = { relation: this.$data.priRel, tag: '', type: '', kw: this.$data.searchVal, pindex: 1, psize: 999999999, state: '', order: 'CN_T_CREATE DESC', kwpmname: '', kwcode: '', sessionid: '' };\n this.$store.dispatch('ProjectGetAnalysisList', datainfo).then(function (success) {\n __f__(\"log\", success, \" at pages/selPrj/index.vue:128\");\n if (success.code == '00000') {\n for (var i in success.data.Body) {\n success.data.Body[i].ischeck = false;\n }\n\n _this2.$data.data = success.data.Body;\n } else {\n uni.showModal({ title: \"错误2\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误2.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n\n },\n onchange: function onchange(e) {\n // console.log(e.target);\n var data = this.$data.data;\n this.$data.data = [];\n for (var i in data) {\n data[i].ischeck = false;\n }\n\n data[e.target.dataset.index].ischeck = e.target.dataset.ischeck ? false : true;\n this.$data.data = data;\n },\n sava: function sava() {//点击功能点跳转页面\n // console.log(this.$data.data);\n var data = [];\n for (var i in this.$data.data) {\n if (this.$data.data[i].ischeck == true) {\n data.push(this.$data.data[i]);\n }\n }\n if (data.length == 0) {\n uni.showModal({ title: \"提示\", content: '未选择项目!', showCancel: false, confirmText: \"取消\" });\n return;\n }\n var eventChannel = this.$scope.eventChannel;\n // const eventChannel = this.getOpenerEventChannel();\n eventChannel.emit('AddPer', data, this.$data.param);\n\n uni.navigateBack();\n } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 13)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvc2VsUHJqL2luZGV4LnZ1ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0ZBO0FBQ0EsTUFEQSxrQkFDQTtBQUNBO0FBQ0EsbUJBREE7QUFFQSxvQkFGQTtBQUdBLGVBSEE7QUFJQSxtQkFKQTtBQUtBLHNCQUxBO0FBTUEsY0FOQTs7QUFRQSxHQVZBO0FBV0EsUUFYQSxrQkFXQSxPQVhBLEVBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQVBBLE1BT0E7QUFDQTtBQUNBO0FBQ0EsS0FaQSxFQVlBLEtBWkEsQ0FZQTtBQUNBO0FBQ0E7QUFDQSxLQWZBO0FBZ0JBLEdBdENBO0FBdUNBO0FBQ0EsV0FEQSxtQkFDQSxDQURBLEVBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxTQU5BLE1BTUE7QUFDQTtBQUNBO0FBQ0EsT0FYQSxFQVdBLEtBWEEsQ0FXQTtBQUNBO0FBQ0E7QUFDQSxPQWRBOztBQWdCQSxLQXJCQTtBQXNCQSxZQXRCQSxvQkFzQkEsQ0F0QkEsRUFzQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBaENBO0FBaUNBLFFBakNBLGtCQWlDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQWxEQSxFQXZDQSxFIiwiZmlsZSI6Ijc4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHN0eWxlPlxyXG5cdC5jb250ZW50IHtcclxuXHRcdHdpZHRoOiAxMDB2dztcclxuXHRcdGhlaWdodDogOTN2aDtcclxuXHRcdGJhY2tncm91bmQ6ICNFQUVBRUE7XHJcblx0XHRwYWRkaW5nOiAxNHJweCAwcnB4IDBycHggMHJweDtcclxuXHR9XHJcblx0aW5wdXR7XHJcblx0XHRib3JkZXI6IDFweCBzb2xpZCAjZDVkNWQ1O1xyXG5cdFx0d2lkdGg6IDc3JTtcclxuXHRcdGhlaWdodDogODBycHg7XHJcblx0XHRib3JkZXItcmFkaXVzOiA2MHJweCFpbXBvcnRhbnQ7XHJcblx0XHRwYWRkaW5nOiAwIDYwcnB4IDAgNjZycHg7XHJcblx0XHRtYXJnaW46IDBycHggMjBycHggMTBycHggMjBycHg7XHJcblx0XHRiYWNrZ3JvdW5kOiAjRkZGO1xyXG5cdH1cclxuXHQuZHZfcXVlcnlfYm9keSB7XHJcblx0ICAgIGhlaWdodDogOTElO1xyXG5cdCAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG5cdCAgICBib3JkZXI6IDJycHggc29saWQgI2Q1ZDVkNTtcclxuXHQgICAgcGFkZGluZzogMTRycHg7XHJcblx0XHRvdmVyZmxvdy15OiBhdXRvO1xyXG5cdH1cclxuXHQucHNuIHtcclxuXHRcdHdpZHRoOiA5MyU7XHJcblx0ICAgIG1hcmdpbjogMCAxMnJweCAxMnJweCAwO1xyXG5cdCAgICBwYWRkaW5nOiA4cnB4IDIwcnB4IDEwcnB4O1xyXG5cdCAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTVhMWRkO1xyXG5cdCAgICBmb250LXNpemU6IDMwcnB4O1xyXG5cdCAgICBjb2xvcjogI2ZmZjtcclxuXHQgICAgYm9yZGVyLXJhZGl1czogMjBycHg7XHJcblx0ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHQgICAgY3Vyc29yOiBwb2ludGVyO1xyXG5cdH1cclxuXHQuZHZfdGl0bGV7XHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHR3aWR0aDogOTAlO1xyXG5cdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuXHR9XHJcblx0YnV0dG9uLmJ0bl9zYXZhIHtcclxuXHRcdG1hcmdpbi10b3A6IDYwcnB4O1xyXG5cdFx0cGFkZGluZzogMjBycHg7XHJcblx0XHRsaW5lLWhlaWdodDogMS4yO1xyXG5cdFx0YmFja2dyb3VuZDogIzI3QTZFMTtcclxuXHRcdGJvcmRlcjogbm9uZTtcclxuXHRcdGNvbG9yOiAjZmZmO1xyXG5cdH1cclxuPC9zdHlsZT5cclxuXHJcbjx0ZW1wbGF0ZT5cclxuXHQ8dmlldyBjbGFzcz1cImNvbnRlbnRcIj5cclxuXHRcdDx2aWV3IHN0eWxlPVwiaGVpZ2h0OjkwJTtcIj5cclxuXHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJ0eHRfc2VhcmNoXCIgdi1tb2RlbD1cInNlYXJjaFZhbFwiICBAa2V5dXA9XCJvbmtleXVwXCIgcGxhY2Vob2xkZXI9XCLor7fovpPlhaXpobnnm67lkI3np7Dov5vooYzmn6Xor6JcIiA+XHJcblx0XHRcdDwhLS0gPGRpdiBjbGFzcz1cImR2X3F1ZXJ5X2JvZHlcIiA+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cInBzblwiPlxyXG5cdFx0XHRcdFx0PGNoZWNrYm94LWdyb3VwIGNsYXNzPVwiaXNjaGVja1wiIEBjaGFuZ2U9XCJvbmNoYW5nZVwiIGRhdGEtaXNjaGVjaz1cImZhbHNlXCIgZGF0YS1pbmRleD1cIjBcIiA+XHJcblx0XHRcdFx0XHRcdDxsYWJlbD5cclxuXHRcdFx0XHRcdFx0XHQ8Y2hlY2tib3ggYmFsdWU9XCIxXCIgOmNoZWNrZWQ9XCJpc2NoZWNrZWRcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJkdl90aXRsZVwiPnRlc3Qt5rWL6K+VLSjmsZ/mtpspdGVzdC3mtYvor5UtKOaxn+a2myk8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC9sYWJlbD5cclxuXHRcdFx0XHRcdDwvY2hlY2tib3gtZ3JvdXA+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PiAtLT5cclxuXHRcdFx0XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJkdl9xdWVyeV9ib2R5XCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cInBzblwiIHYtZm9yPVwiKHByaixpbmRleCkgaW4gZGF0YVwiPlxyXG5cdFx0XHRcdFx0PGNoZWNrYm94LWdyb3VwIGNsYXNzPVwiaXNjaGVja1wiIEBjaGFuZ2U9XCJvbmNoYW5nZVwiIDpkYXRhLWlzY2hlY2s9XCJwcmouaXNjaGVja1wiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA+XHJcblx0XHRcdFx0XHRcdDxsYWJlbD5cclxuXHRcdFx0XHRcdFx0XHQ8Y2hlY2tib3ggOmNoZWNrZWQ9XCJwcmouaXNjaGVja1wiICAvPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJkdl90aXRsZVwiPnt7cHJqLlByakNvZGV9fS17e3Byai5OYW1lfX0tKHt7cHJqLlBNTmFtZX19KTwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L2xhYmVsPlxyXG5cdFx0XHRcdFx0PC9jaGVja2JveC1ncm91cD5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdFxyXG5cdFx0XHQ8YnV0dG9uIHR5cGU9XCJkZWZhdWx0XCIgQHRhcD1cInNhdmFcIiBjbGFzcz1cImJ0bl9zYXZhXCI+56Gu5a6aPC9idXR0b24+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHRcclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+IFxyXG5cclxuPHNjcmlwdD5cclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdHRpdGxlOiAn6YCJ5oup6aG555uuJyxcclxuXHRcdFx0XHRyZWxhdGlvbjonLTEnLFxyXG5cdFx0XHRcdHBhcmFtOnt9LFxyXG5cdFx0XHRcdHNlYXJjaFZhbDonJyxcclxuXHRcdFx0XHRpc2NoZWNrZWQ6ZmFsc2UsXHJcblx0XHRcdFx0ZGF0YTpbXVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0b25Mb2FkKG9wdGlvbnMpIHtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2cob3B0aW9ucyk7XHJcblx0XHRcdHZhciBwYXJhbSA9IEpTT04ucGFyc2Uob3B0aW9ucy5wYXJhbSk7XHJcblx0XHRcdHRoaXMuJGRhdGEucGFyYW09cGFyYW07XHJcblx0XHRcdHRoaXMuJGRhdGEucmVsYXRpb249IG9wdGlvbnMucmVsYXRpb247XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKHRoaXMuJGRhdGEucGFyYW0pO1xyXG5cdFx0XHRcclxuXHRcdFx0XHJcblx0XHRcdHZhciBkYXRhaW5mbyA9eyByZWxhdGlvbjogdGhpcy4kZGF0YS5yZWxhdGlvbiwgdGFnOiAnJywgdHlwZTogJycsIGt3OiAnJywgcGluZGV4OiAxLCBwc2l6ZTogOTk5OTk5OTk5LCBzdGF0ZTogJycsIG9yZGVyOiAnQ05fVF9DUkVBVEUgREVTQycsIGt3cG1uYW1lOiAnJywga3djb2RlOiAnJywgc2Vzc2lvbmlkOiAnJyB9O1xyXG5cdFx0XHRcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZGF0YWluZm8pO1xyXG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnUHJvamVjdEdldEFuYWx5c2lzTGlzdCcsZGF0YWluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdGZvcih2YXIgaSBpbiBzdWNjZXNzLmRhdGEuQm9keSl7XHJcblx0XHRcdFx0XHRcdHN1Y2Nlc3MuZGF0YS5Cb2R5W2ldLmlzY2hlY2s9ZmFsc2U7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdHRoaXMuJGRhdGEuZGF0YSA9IHN1Y2Nlc3MuZGF0YS5Cb2R5O1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzFcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xLjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fSk7XHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRvbmtleXVwKGUpIHtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2codGhpcy4kZGF0YS5zZWFyY2hWYWwpO1xyXG5cdFx0XHRcdHZhciBkYXRhaW5mbyA9eyByZWxhdGlvbjogdGhpcy4kZGF0YS5wcmlSZWwsIHRhZzogJycsIHR5cGU6ICcnLCBrdzogdGhpcy4kZGF0YS5zZWFyY2hWYWwsIHBpbmRleDogMSwgcHNpemU6IDk5OTk5OTk5OSwgc3RhdGU6ICcnLCBvcmRlcjogJ0NOX1RfQ1JFQVRFIERFU0MnLCBrd3BtbmFtZTogJycsIGt3Y29kZTogJycsIHNlc3Npb25pZDogJycgfTtcclxuXHRcdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnUHJvamVjdEdldEFuYWx5c2lzTGlzdCcsZGF0YWluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XHJcblx0XHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdGZvcih2YXIgaSBpbiBzdWNjZXNzLmRhdGEuQm9keSl7XHJcblx0XHRcdFx0XHRcdFx0c3VjY2Vzcy5kYXRhLkJvZHlbaV0uaXNjaGVjaz1mYWxzZTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5kYXRhID0gc3VjY2Vzcy5kYXRhLkJvZHk7XHJcblx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68yXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68yLjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcclxuXHRcdFx0fSxcclxuXHRcdFx0b25jaGFuZ2UoZSkge1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcclxuXHRcdFx0XHR2YXIgZGF0YSA9IHRoaXMuJGRhdGEuZGF0YTtcclxuXHRcdFx0XHR0aGlzLiRkYXRhLmRhdGE9W107XHJcblx0XHRcdFx0Zm9yKHZhciBpIGluIGRhdGEpe1xyXG5cdFx0XHRcdFx0ZGF0YVtpXS5pc2NoZWNrPWZhbHNlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRcclxuXHRcdFx0XHRkYXRhW2UudGFyZ2V0LmRhdGFzZXQuaW5kZXhdLmlzY2hlY2s9ZS50YXJnZXQuZGF0YXNldC5pc2NoZWNrP2ZhbHNlOnRydWVcclxuXHRcdFx0XHR0aGlzLiRkYXRhLmRhdGE9ZGF0YTtcclxuXHRcdFx0fSxcclxuXHRcdFx0c2F2YSgpeyAvL+eCueWHu+WKn+iDveeCuei3s+i9rOmhtemdolxyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuZGF0YSk7XHJcblx0XHRcdFx0dmFyIGRhdGEgPSBbXTtcclxuXHRcdFx0XHRmb3IodmFyIGkgaW4gdGhpcy4kZGF0YS5kYXRhKXtcclxuXHRcdFx0XHRcdGlmKHRoaXMuJGRhdGEuZGF0YVtpXS5pc2NoZWNrPT10cnVlKXtcclxuXHRcdFx0XHRcdFx0ZGF0YS5wdXNoKHRoaXMuJGRhdGEuZGF0YVtpXSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmKGRhdGEubGVuZ3RoPT0wKXtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDon5pyq6YCJ5oup6aG555uu77yBJyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29uc3QgZXZlbnRDaGFubmVsID0gdGhpcy4kc2NvcGUuZXZlbnRDaGFubmVsO1xyXG5cdFx0XHRcdC8vIGNvbnN0IGV2ZW50Q2hhbm5lbCA9IHRoaXMuZ2V0T3BlbmVyRXZlbnRDaGFubmVsKCk7XHJcblx0XHRcdFx0ZXZlbnRDaGFubmVsLmVtaXQoJ0FkZFBlcicsZGF0YSx0aGlzLiRkYXRhLnBhcmFtKTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHR1bmkubmF2aWdhdGVCYWNrKClcclxuXHRcdFx0fVxyXG5cdFx0XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///78\n"); |
| | | |
| | | /***/ }), |
| | | /* 79 */ |