| 1 |
- {"remainingRequest":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\babel-loader\\lib\\index.js!C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\pages\\setting\\devise\\diyIndex.vue?vue&type=script&crossorigin=anonymous&lang=js","dependencies":[{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\pages\\setting\\devise\\diyIndex.vue","mtime":1761185180172},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\babel.config.js","mtime":1761185179818},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\.babelrc","mtime":1761185179813},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiQzovVXNlcnMvQWRtaW5pc3RyYXRvci9EZXNrdG9wL2NybWViNS4wL3RlbXBsYXRlL2FkbWluL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkubWFwLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkucHVzaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNvcnQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zcGxpY2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmpzb24uc3RyaW5naWZ5LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy50cmltLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7CmltcG9ydCB7IGNhdGVnb3J5TGlzdCBhcyBfY2F0ZWdvcnlMaXN0LCBkaXlQcm9JbmZvLCBkaXlQcm9TYXZlLCBzZXREZWZhdWx0LCByZWNvdmVyeSwgZGl5VXBkYXRlTmFtZSwgZ2V0Um91dGluZUNvZGUgfSBmcm9tICdAL2FwaS9kaXknOwppbXBvcnQgdnVlZHJhZ2dhYmxlIGZyb20gJ3Z1ZWRyYWdnYWJsZSc7CmltcG9ydCBtUGFnZSBmcm9tICdAL2NvbXBvbmVudHMvbW9iaWxlUGFnZS9pbmRleC5qcyc7CmltcG9ydCBtQ29uZmlnIGZyb20gJ0AvY29tcG9uZW50cy9tb2JpbGVDb25maWcvaW5kZXguanMnOwppbXBvcnQgZm9vdFBhZ2UgZnJvbSAnQC9jb21wb25lbnRzL3BhZ2VzRm9vdCc7CmltcG9ydCB7IG1hcFN0YXRlIH0gZnJvbSAndnVleCc7CmltcG9ydCBodG1sMmNhbnZhcyBmcm9tICdodG1sMmNhbnZhcyc7CmltcG9ydCB0aGVtZSBmcm9tICdAL21peGlucy90aGVtZSc7CmltcG9ydCBTZXR0aW5nIGZyb20gJ0Avc2V0dGluZyc7CmltcG9ydCBRUkNvZGUgZnJvbSAncXJjb2RlanMyJzsKZXhwb3J0IGRlZmF1bHQgewogIGluamVjdDogWydyZWxvYWQnXSwKICBuYW1lOiAnaW5kZXgudnVlJywKICBjb21wb25lbnRzOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoewogICAgZm9vdFBhZ2U6IGZvb3RQYWdlLAogICAgaHRtbDJjYW52YXM6IGh0bWwyY2FudmFzLAogICAgZHJhZ2dhYmxlOiB2dWVkcmFnZ2FibGUKICB9LCBtUGFnZSksIG1Db25maWcpLAogIGZpbHRlcnM6IHsKICAgIGZpbHRlclR4dDogZnVuY3Rpb24gZmlsdGVyVHh0KHZhbCkgewogICAgICBpZiAodmFsKSB7CiAgICAgICAgcmV0dXJuIHZhbCA9IHZhbC5zdWJzdHIoMCwgdmFsLmxlbmd0aCAtIDEpOwogICAgICB9CiAgICB9CiAgfSwKICBjb21wdXRlZDogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBtYXBTdGF0ZSh7CiAgICB0aXRsZVR4dDogZnVuY3Rpb24gdGl0bGVUeHQoc3RhdGUpIHsKICAgICAgcmV0dXJuIHN0YXRlLm1vYmlsZENvbmZpZy5wYWdlVGl0bGUgfHwgJ+mmlumhtSc7CiAgICB9LAogICAgc2hvd1R4dDogZnVuY3Rpb24gc2hvd1R4dChzdGF0ZSkgewogICAgICByZXR1cm4gc3RhdGUubW9iaWxkQ29uZmlnLnBhZ2VTaG93OwogICAgfSwKICAgIGNvbG9yVHh0OiBmdW5jdGlvbiBjb2xvclR4dChzdGF0ZSkgewogICAgICByZXR1cm4gc3RhdGUubW9iaWxkQ29uZmlnLnBhZ2VDb2xvcjsKICAgIH0sCiAgICBwaWNUeHQ6IGZ1bmN0aW9uIHBpY1R4dChzdGF0ZSkgewogICAgICByZXR1cm4gc3RhdGUubW9iaWxkQ29uZmlnLnBhZ2VQaWM7CiAgICB9LAogICAgY29sb3JQaWNrZXJUeHQ6IGZ1bmN0aW9uIGNvbG9yUGlja2VyVHh0KHN0YXRlKSB7CiAgICAgIHJldHVybiBzdGF0ZS5tb2JpbGRDb25maWcucGFnZUNvbG9yUGlja2VyOwogICAgfSwKICAgIHRhYlZhbFR4dDogZnVuY3Rpb24gdGFiVmFsVHh0KHN0YXRlKSB7CiAgICAgIHJldHVybiBzdGF0ZS5tb2JpbGRDb25maWcucGFnZVRhYlZhbDsKICAgIH0sCiAgICBwaWNVcmxUeHQ6IGZ1bmN0aW9uIHBpY1VybFR4dChzdGF0ZSkgewogICAgICByZXR1cm4gc3RhdGUubW9iaWxkQ29uZmlnLnBhZ2VQaWNVcmw7CiAgICB9LAogICAgcGFnZUZvb3RlclR5cGU6IGZ1bmN0aW9uIHBhZ2VGb290ZXJUeXBlKHN0YXRlKSB7CiAgICAgIHJldHVybiBzdGF0ZS5tb2JpbGRDb25maWcucGFnZUZvb3Rlci5uYXZDb25maWcudGFiVmFsIHx8IDA7CiAgICB9LAogICAgcGFnZUZvb3RlckJvdHRvbTogZnVuY3Rpb24gcGFnZUZvb3RlckJvdHRvbShzdGF0ZSkgewogICAgICByZXR1cm4gc3RhdGUubW9iaWxkQ29uZmlnLnBhZ2VGb290ZXIubWJDb25maWcudmFsOwogICAgfSwKICAgIGRlZmF1bHRBcnJheXM6IGZ1bmN0aW9uIGRlZmF1bHRBcnJheXMoc3RhdGUpIHsKICAgICAgcmV0dXJuIHN0YXRlLm1vYmlsZENvbmZpZy5kZWZhdWx0QXJyYXk7CiAgICB9CiAgfSkpLCB7fSwgewogICAgbmFtZVR4dDogewogICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUubW9iaWxkQ29uZmlnLnBhZ2VOYW1lOwogICAgICB9LAogICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWx1ZSkgewogICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgnbW9iaWxkQ29uZmlnL1VQTkFNRScsIHZhbHVlKTsKICAgICAgfQogICAgfQogIH0pLAogIG1peGluczogW3RoZW1lXSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgQmFzZVVSTDogU2V0dGluZy5hcGlCYXNlVVJMLnJlcGxhY2UoL2FkbWluYXBpLywgJycpLAogICAgICBxcmNvZGVJbWc6ICcnLAogICAgICBtb2RhbDogZmFsc2UsCiAgICAgIGNsaWVudEhlaWdodDogJycsCiAgICAgIC8v6aG16Z2i5Yqo5oCB6auY5bqmCiAgICAgIHJvbGxIZWlnaHQ6ICcnLAogICAgICBsZWZ0TWVudTogW10sCiAgICAgIC8vIOW3puS+p+iPnOWNlQogICAgICBsQ29uZmlnOiBbXSwKICAgICAgLy8g5bem5L6n57uE5Lu2CiAgICAgIG1Db25maWc6IFtdLAogICAgICAvLyDkuK3pl7Tnu4Tku7bmuLLmn5MKICAgICAgckNvbmZpZzogW10sCiAgICAgIC8vIOWPs+S+p+e7hOS7tumFjee9rgogICAgICBhY3RpdmVDb25maWdOYW1lOiAnJywKICAgICAgcHJvcHNPYmo6IHt9LAogICAgICAvLyDnu4Tku7bkvKDpgJLnmoTmlbDmja4sCiAgICAgIGFjdGl2ZUluZGV4OiAtMTAwLAogICAgICAvLyDpgInkuK3nmoTkuIvmoIcKICAgICAgbnVtYmVyOiAwLAogICAgICBwYWdlSWQ6ICcnLAogICAgICBwYWdlTmFtZTogJycsCiAgICAgIHBhZ2VUeXBlOiAnJywKICAgICAgY2F0ZWdvcnk6IFtdLAogICAgICB0YWJMaXN0OiBbewogICAgICAgIHRpdGxlOiAn57uE5Lu25bqTJywKICAgICAgICBrZXk6IDAKICAgICAgfSwgewogICAgICAgIHRpdGxlOiAn6aG16Z2i6ZO+5o6lJywKICAgICAgICBrZXk6IDEKICAgICAgfV0sCiAgICAgIGZvb3RBY3RpdmU6IGZhbHNlLAogICAgICBsb2FkaW5nOiBmYWxzZSwKICAgICAgcmVsTG9hZGluZzogZmFsc2UsCiAgICAgIGlzU2VhcmNoOiBmYWxzZSwKICAgICAgaXNUYWI6IGZhbHNlLAogICAgICBpc0ZsbG93OiBmYWxzZSwKICAgICAgaXNDb21iOiBmYWxzZSwKICAgICAgaXNTZXJ2aWNlOiBmYWxzZSwKICAgICAgdmlzaWJsZTogdHJ1ZSwKICAgICAgZGl5U3RhdHVzOiAwLAogICAgICBuYW1lTW9kYWw6IGZhbHNlLAogICAgICBzYXZlTmFtZTogJycKICAgIH07CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgdmFyIF90aGlzID0gdGhpczsKICAgIHRoaXMuY2F0ZWdvcnlMaXN0KCk7CiAgICB0aGlzLnBhZ2VJZCA9IHRoaXMuJHJvdXRlLnF1ZXJ5LmlkOwogICAgdGhpcy5wYWdlTmFtZSA9IHRoaXMuJHJvdXRlLnF1ZXJ5Lm5hbWU7CiAgICB0aGlzLnBhZ2VUeXBlID0gdGhpcy4kcm91dGUucXVlcnkudHlwZTsKICAgIHRoaXMubENvbmZpZyA9IHRoaXMub2JqVG9BcnIobVBhZ2UpOwogICAgdmFyIGltZ0xpc3QgPSB7CiAgICAgIGltZ0xpc3Q6IFtyZXF1aXJlKCdAL2Fzc2V0cy9pbWFnZXMvZm9vdC0wMDUucG5nJyksIHJlcXVpcmUoJ0AvYXNzZXRzL2ltYWdlcy9mb290LTAwNi5wbmcnKV0sCiAgICAgIG5hbWU6ICfotK3nianovaYnLAogICAgICBsaW5rOiAnL3BhZ2VzL29yZGVyX2FkZGNhcnQvb3JkZXJfYWRkY2FydCcKICAgIH07CiAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgIF90aGlzLiRzdG9yZS5jb21taXQoJ21vYmlsZENvbmZpZy9GT09URVInLCB7CiAgICAgICAgdGl0bGU6ICfmmK/lkKboh6rlrprkuYknLAogICAgICAgIG5hbWU6IGltZ0xpc3QKICAgICAgfSk7CiAgICAgIF90aGlzLmFycmF5U29ydCgpOwogICAgICBpZiAoX3RoaXMucGFnZUlkICE9IDApIHsKICAgICAgICBfdGhpcy5nZXREZWZhdWx0Q29uZmlnKCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX3RoaXMuc2hvd1RpdGxlKCk7CiAgICAgIH0KICAgICAgX3RoaXMuY2xpZW50SGVpZ2h0ID0gIiIuY29uY2F0KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpIC0gNjUuODE7IC8v6I635Y+W5rWP6KeI5Zmo5Y+v6KeG5Yy65Z+f6auY5bqmCiAgICAgIHZhciBIID0gIiIuY29uY2F0KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpIC0gMTgwOwogICAgICBfdGhpcy5yb2xsSGVpZ2h0ID0gSCA+IDY1MCA/IDY1MCA6IEg7CiAgICAgIHZhciB0aGF0ID0gX3RoaXM7CiAgICAgIHdpbmRvdy5vbnJlc2l6ZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICB0aGF0LmNsaWVudEhlaWdodCA9ICIiLmNvbmNhdChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KSAtIDY1LjgxOwogICAgICAgIHZhciBIID0gIiIuY29uY2F0KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpIC0gMTgwOwogICAgICAgIHRoYXQucm9sbEhlaWdodCA9IEggPiA2NTAgPyA2NTAgOiBIOwogICAgICB9OwogICAgfSk7CiAgfSwKICBtZXRob2RzOiB7CiAgICBleHBvcnRWaWV3OiBmdW5jdGlvbiBleHBvcnRWaWV3KCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgdmFyIHRoYXQgPSB0aGlzOwogICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOwogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgY29uc29sZS5sb2coX3RoaXMyLm1Db25maWcpOwogICAgICB9KTsKICAgIH0sCiAgICBpbXBvcnRWaWV3OiBmdW5jdGlvbiBpbXBvcnRWaWV3KCkge30sCiAgICBwcmV2aWV3OiBmdW5jdGlvbiBwcmV2aWV3KCkgewogICAgICB0aGlzLm1vZGFsID0gdHJ1ZTsKICAgICAgdGhpcy5jcmVhdFFyQ29kZSh0aGlzLnBhZ2VJZCwgdGhpcy5kaXlTdGF0dXMpOwogICAgICB0aGlzLnJvdXRpbmVDb2RlKHRoaXMucGFnZUlkKTsKICAgIH0sCiAgICAvL+Wwj+eoi+W6j+S6jOe7tOeggQogICAgcm91dGluZUNvZGU6IGZ1bmN0aW9uIHJvdXRpbmVDb2RlKGlkKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICBnZXRSb3V0aW5lQ29kZShpZCkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXMzLnFyY29kZUltZyA9IHJlcy5kYXRhLmltYWdlOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgX3RoaXMzLiRtZXNzYWdlLmVycm9yKGVycik7CiAgICAgIH0pOwogICAgfSwKICAgIC8v55Sf5oiQ5LqM57u056CBCiAgICBjcmVhdFFyQ29kZTogZnVuY3Rpb24gY3JlYXRRckNvZGUoaWQsIHN0YXR1cykgewogICAgICB0aGlzLiRyZWZzLnFyQ29kZVVybC5pbm5lckhUTUwgPSAnJzsKICAgICAgdmFyIHVybCA9ICcnOwogICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgdXJsID0gIiIuY29uY2F0KHRoaXMuQmFzZVVSTCwgInBhZ2VzL2luZGV4L2luZGV4Iik7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdXJsID0gIiIuY29uY2F0KHRoaXMuQmFzZVVSTCwgInBhZ2VzL2FubmV4L3NwZWNpYWwvaW5kZXg/aWQ9IikuY29uY2F0KGlkKTsKICAgICAgfQogICAgICB2YXIgcXJjb2RlID0gbmV3IFFSQ29kZSh0aGlzLiRyZWZzLnFyQ29kZVVybCwgewogICAgICAgIHRleHQ6IHVybCwKICAgICAgICAvLyDpnIDopoHovazmjaLkuLrkuoznu7TnoIHnmoTlhoXlrrkKICAgICAgICB3aWR0aDogMTYwLAogICAgICAgIGhlaWdodDogMTYwLAogICAgICAgIGNvbG9yRGFyazogJyMwMDAwMDAnLAogICAgICAgIGNvbG9yTGlnaHQ6ICcjZmZmZmZmJywKICAgICAgICBjb3JyZWN0TGV2ZWw6IFFSQ29kZS5Db3JyZWN0TGV2ZWwuSAogICAgICB9KTsKICAgIH0sCiAgICBjaGFuZ05hbWU6IGZ1bmN0aW9uIGNoYW5nTmFtZSh2YWwpIHsKICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KCdtb2JpbGRDb25maWcvVVBOQU1FJywgdmFsKTsKICAgIH0sCiAgICBjYW5jZWw6IGZ1bmN0aW9uIGNhbmNlbCgpIHsKICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7CiAgICB9LAogICAgZGV0ZXJtaW5lOiBmdW5jdGlvbiBkZXRlcm1pbmUoKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICBpZiAodGhpcy5uYW1lVHh0LnRyaW0oKSA9PSAnJykgewogICAgICAgIHJldHVybiB0aGlzLiRtZXNzYWdlLmVycm9yKCfor7fovpPlhaXmqKHmnb/lkI3np7AnKTsKICAgICAgfQogICAgICBpZiAodGhpcy5wYWdlSWQgPT0gMCkgewogICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygn5L+u5pS55oiQ5YqfJyk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIGRpeVVwZGF0ZU5hbWUodGhpcy5wYWdlSWQsIHsKICAgICAgICBuYW1lOiB0aGlzLm5hbWVUeHQKICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXM0LnZpc2libGUgPSBmYWxzZTsKICAgICAgICBfdGhpczQuJG1lc3NhZ2Uuc3VjY2VzcyhyZXMubXNnKTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycikgewogICAgICAgIF90aGlzNC4kbWVzc2FnZS5lcnJvcihlcnIubXNnKTsKICAgICAgfSk7CiAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlOwogICAgfSwKICAgIHJldHVyblRhcDogZnVuY3Rpb24gcmV0dXJuVGFwKCkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgdGhpcy4kbXNnYm94KHsKICAgICAgICB0aXRsZTogJ+a4qemmqOaPkOekuicsCiAgICAgICAgbWVzc2FnZTogJ+ehruWumuemu+W8gOatpOmhtemdou+8n+ezu+e7n+WPr+iDveS4jeS8muS/neWtmOaCqOaJgOWBmueahOabtOaUueOAgicsCiAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSwKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgaWNvbkNsYXNzOiAnZWwtaWNvbi13YXJuaW5nJywKICAgICAgICBjb25maXJtQnV0dG9uQ2xhc3M6ICdidG4tY3VzdG9tLWNhbmNlbCcKICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXM1LiRyb3V0ZXIucHVzaChfdGhpczUuJHJvdXRlUHJvU3RyICsgJy9zZXR0aW5nL3BhZ2VzL2RldmlzZS8wJyk7CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHt9KTsKICAgIH0sCiAgICBsZWZ0UmVtb3ZlOiBmdW5jdGlvbiBsZWZ0UmVtb3ZlKF9yZWYpIHsKICAgICAgdmFyIHRvID0gX3JlZi50bywKICAgICAgICBmcm9tID0gX3JlZi5mcm9tLAogICAgICAgIGl0ZW0gPSBfcmVmLml0ZW0sCiAgICAgICAgY2xvbmUgPSBfcmVmLmNsb25lLAogICAgICAgIG9sZEluZGV4ID0gX3JlZi5vbGRJbmRleCwKICAgICAgICBuZXdJbmRleCA9IF9yZWYubmV3SW5kZXg7CiAgICAgIGlmICh0aGlzLmlzU2VhcmNoICYmIG5ld0luZGV4ID09IDApIHsKICAgICAgICBpZiAoaXRlbS5fdW5kZXJseWluZ192bV8ubmFtZSA9PSAnel93ZWNoYXRfYXR0ZW50aW9uJykgewogICAgICAgICAgdGhpcy5pc0ZsbG93ID0gdHJ1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KCdtb2JpbGRDb25maWcvQVJSQVlSRUFTVCcsIHRoaXMubUNvbmZpZ1swXS5udW0pOwogICAgICAgICAgdGhpcy5tQ29uZmlnLnNwbGljZSgwLCAxKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKHRoaXMuaXNGbGxvdyA9IHRydWUgJiYgbmV3SW5kZXggPj0gMSkgewogICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgnbW9iaWxkQ29uZmlnL0FSUkFZUkVBU1QnLCB0aGlzLm1Db25maWdbMF0ubnVtKTsKICAgICAgfQogICAgfSwKICAgIG9uTW92ZTogZnVuY3Rpb24gb25Nb3ZlKGUpIHsKICAgICAgaWYgKGUucmVsYXRlZENvbnRleHQuZWxlbWVudC5uYW1lID09ICdzZWFyY2hfYm94JykgcmV0dXJuIGZhbHNlOwogICAgICBpZiAoZS5yZWxhdGVkQ29udGV4dC5lbGVtZW50Lm5hbWUgPT0gJ25hdl9iYXInKSByZXR1cm4gZmFsc2U7CiAgICAgIGlmIChlLnJlbGF0ZWRDb250ZXh0LmVsZW1lbnQubmFtZSA9PSAnaG9tZV9jb21iJykgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0sCiAgICBvbkNvcHk6IGZ1bmN0aW9uIG9uQ29weSgpIHsKICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCflpI3liLbmiJDlip8nKTsKICAgIH0sCiAgICBvbkVycm9yOiBmdW5jdGlvbiBvbkVycm9yKCkgewogICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKCflpI3liLblpLHotKUnKTsKICAgIH0sCiAgICAvL+iuvue9rum7mOiupOaVsOaNrgogICAgc2V0bW9yZW46IGZ1bmN0aW9uIHNldG1vcmVuKCkgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKICAgICAgc2V0RGVmYXVsdCh0aGlzLnBhZ2VJZCkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXM2LiRtZXNzYWdlLnN1Y2Nlc3MocmVzLm1zZyk7CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICBfdGhpczYuJG1lc3NhZ2UuZXJyb3IoZXJyLm1zZyk7CiAgICAgIH0pOwogICAgfSwKICAgIC8v5oGi5aSN6buY6K6kCiAgICBnZXRtb3JlbjogZnVuY3Rpb24gZ2V0bW9yZW4oKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICByZWNvdmVyeSh0aGlzLnBhZ2VJZCkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXM3LiRtZXNzYWdlLnN1Y2Nlc3MocmVzLm1zZyk7CiAgICAgICAgX3RoaXM3LnJlbG9hZCgpOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgX3RoaXM3LiRtZXNzYWdlLmVycm9yKGVyci5tc2cpOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDpobXpnaLmoIfpopjngrnlh7sKICAgIHNob3dUaXRsZTogZnVuY3Rpb24gc2hvd1RpdGxlKCkgewogICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gLTEwMDsKICAgICAgdmFyIG9iaiA9IHt9OwogICAgICBmb3IgKHZhciBpIGluIG1Db25maWcpIHsKICAgICAgICBpZiAoaSA9PSAncGFnZVRpdGxlJykgewogICAgICAgICAgLy8gdGhpcy5yQ29uZmlnID0gb2JqCiAgICAgICAgICBvYmogPSBtQ29uZmlnW2ldOwogICAgICAgICAgb2JqLmNvbmZpZ05hbWUgPSBtQ29uZmlnW2ldLm5hbWU7CiAgICAgICAgICBvYmouY25hbWUgPSAn6aG16Z2i6K6+572uJzsKICAgICAgICB9CiAgICAgIH0KICAgICAgdmFyIGFiYyA9IG9iajsKICAgICAgdGhpcy5yQ29uZmlnID0gW107CiAgICAgIHRoaXMuckNvbmZpZ1swXSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqKSk7CiAgICB9LAogICAgLy8g6aG16Z2i5bqV6YOo54K55Ye7CiAgICBzaG93Rm9vdDogZnVuY3Rpb24gc2hvd0Zvb3QoKSB7CiAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSAtMTAxOwogICAgICB2YXIgb2JqID0ge307CiAgICAgIGZvciAodmFyIGkgaW4gbUNvbmZpZykgewogICAgICAgIGlmIChpID09ICdwYWdlRm9vdCcpIHsKICAgICAgICAgIC8vIHRoaXMuckNvbmZpZyA9IG9iagogICAgICAgICAgb2JqID0gbUNvbmZpZ1tpXTsKICAgICAgICAgIG9iai5jb25maWdOYW1lID0gbUNvbmZpZ1tpXS5uYW1lOwogICAgICAgICAgb2JqLmNuYW1lID0gJ+W6lemDqOiPnOWNlSc7CiAgICAgICAgfQogICAgICB9CiAgICAgIHZhciBhYmMgPSBvYmo7CiAgICAgIHRoaXMuckNvbmZpZyA9IFtdOwogICAgICB0aGlzLnJDb25maWdbMF0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpOwogICAgfSwKICAgIC8vIOWvueixoei9rOaVsOe7hAogICAgb2JqVG9BcnI6IGZ1bmN0aW9uIG9ialRvQXJyKGRhdGEpIHsKICAgICAgdmFyIG9iaiA9IE9iamVjdC5rZXlzKGRhdGEpOwogICAgICB2YXIgbSA9IG9iai5tYXAoZnVuY3Rpb24gKGtleSkgewogICAgICAgIHJldHVybiBkYXRhW2tleV07CiAgICAgIH0pOwogICAgICByZXR1cm4gbTsKICAgIH0sCiAgICBsb2c6IGZ1bmN0aW9uIGxvZyhldnQpIHsKICAgICAgLy8g5Lit6Ze05ouW5ou95o6S5bqPCiAgICAgIGlmIChldnQubW92ZWQpIHsKICAgICAgICBpZiAoZXZ0Lm1vdmVkLmVsZW1lbnQubmFtZSA9PSAnc2VhcmNoX2JveCcpIHsKICAgICAgICAgIHJldHVybiB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivpee7hOS7tuemgeatouaLluaLvScpOwogICAgICAgIH0KICAgICAgICAvLyBpZiAoZXZ0Lm1vdmVkLmVsZW1lbnQubmFtZSA9PSAibmF2X2JhciIpIHsKICAgICAgICAvLyAgICAgcmV0dXJuIHRoaXMuJG1lc3NhZ2Uud2FybmluZygi6K+l57uE5Lu256aB5q2i5ouW5ou9Iik7CiAgICAgICAgLy8gfQogICAgICAgIGV2dC5tb3ZlZC5vbGROdW0gPSB0aGlzLm1Db25maWdbZXZ0Lm1vdmVkLm9sZEluZGV4XS5udW07CiAgICAgICAgZXZ0Lm1vdmVkLm5ld051bSA9IHRoaXMubUNvbmZpZ1tldnQubW92ZWQubmV3SW5kZXhdLm51bTsKICAgICAgICBldnQubW92ZWQuc3RhdHVzID0gZXZ0Lm1vdmVkLm9sZEluZGV4ID4gZXZ0Lm1vdmVkLm5ld0luZGV4OwogICAgICAgIHRoaXMubUNvbmZpZy5mb3JFYWNoKGZ1bmN0aW9uIChlbCwgaW5kZXgpIHsKICAgICAgICAgIGVsLm51bSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpICogMTAwMCArIGluZGV4OwogICAgICAgIH0pOwogICAgICAgIGV2dC5tb3ZlZC5saXN0ID0gdGhpcy5tQ29uZmlnOwogICAgICAgIHRoaXMuckNvbmZpZyA9IFtdOwogICAgICAgIHZhciBpdGVtID0gZXZ0Lm1vdmVkLmVsZW1lbnQ7CiAgICAgICAgdmFyIHRlbXBJdGVtID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpdGVtKSk7CiAgICAgICAgdGhpcy5yQ29uZmlnLnB1c2godGVtcEl0ZW0pOwogICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSBldnQubW92ZWQubmV3SW5kZXg7CiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KCdtb2JpbGRDb25maWcvU0VUQ09ORklHTkFNRScsIGl0ZW0ubmFtZSk7CiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KCdtb2JpbGRDb25maWcvZGVmYXVsdEFycmF5U29ydCcsIGV2dC5tb3ZlZCk7CiAgICAgIH0KICAgICAgLy8g5LuO5bem5ZCR5Y+z5ouW5ou95o6S5bqPCiAgICAgIGlmIChldnQuYWRkZWQpIHsKICAgICAgICB2YXIgZGF0YSA9IGV2dC5hZGRlZC5lbGVtZW50OwogICAgICAgIHZhciBvYmogPSB7fTsKICAgICAgICB2YXIgdGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgKiAxMDAwOwogICAgICAgIGRhdGEubnVtID0gdGltZXN0YW1wOwogICAgICAgIHRoaXMuYWN0aXZlQ29uZmlnTmFtZSA9IGRhdGEubmFtZTsKICAgICAgICB2YXIgX3RlbXBJdGVtID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7CiAgICAgICAgX3RlbXBJdGVtLmlkID0gJ2lkJyArIF90ZW1wSXRlbS5udW07CiAgICAgICAgdGhpcy5tQ29uZmlnW2V2dC5hZGRlZC5uZXdJbmRleF0gPSBfdGVtcEl0ZW07CiAgICAgICAgdGhpcy5yQ29uZmlnID0gW107CiAgICAgICAgdGhpcy5yQ29uZmlnLnB1c2goX3RlbXBJdGVtKTsKICAgICAgICB0aGlzLm1Db25maWcuZm9yRWFjaChmdW5jdGlvbiAoZWwsIGluZGV4KSB7CiAgICAgICAgICBlbC5udW0gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAqIDEwMDAgKyBpbmRleDsKICAgICAgICB9KTsKICAgICAgICBldnQuYWRkZWQubGlzdCA9IHRoaXMubUNvbmZpZzsKICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gZXZ0LmFkZGVkLm5ld0luZGV4OwogICAgICAgIC8vIOS/neWtmOe7hOS7tuWQjeensAogICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgnbW9iaWxkQ29uZmlnL1NFVENPTkZJR05BTUUnLCBkYXRhLm5hbWUpOwogICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgnbW9iaWxkQ29uZmlnL2RlZmF1bHRBcnJheVNvcnQnLCBldnQuYWRkZWQpOwogICAgICB9CiAgICB9LAogICAgY2xvbmVEb2c6IGZ1bmN0aW9uIGNsb25lRG9nKGRhdGEpIHsKICAgICAgLy8gdGhpcy5tQ29uZmlnLnB1c2godGVtcEl0ZW0pCiAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKHt9LCBkYXRhKTsKICAgIH0sCiAgICAvL+aVsOe7hOWFg+e0oOS6kuaNouS9jee9rgogICAgc3dhcEFycmF5OiBmdW5jdGlvbiBzd2FwQXJyYXkoYXJyLCBpbmRleDEsIGluZGV4MikgewogICAgICBhcnJbaW5kZXgxXSA9IGFyci5zcGxpY2UoaW5kZXgyLCAxLCBhcnJbaW5kZXgxXSlbMF07CiAgICAgIHJldHVybiBhcnI7CiAgICB9LAogICAgLy/ngrnlh7vkuIrkuIvnp7vliqjvvJsKICAgIG1vdmVQYWdlOiBmdW5jdGlvbiBtb3ZlUGFnZShpdGVtLCBpbmRleCwgdHlwZSkgewogICAgICBpZiAodHlwZSkgewogICAgICAgIGlmIChpbmRleCA9PSAwKSB7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGlmIChpbmRleCA9PSB0aGlzLm1Db25maWcubGVuZ3RoIC0gMSkgewogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAoaXRlbS5uYW1lID09ICdzZWFyY2hfYm94JyB8fCBpdGVtLm5hbWUgPT0gJ25hdl9iYXInIHx8IGl0ZW0ubmFtZSA9PSAnaG9tZV9jb21iJykgewogICAgICAgIHJldHVybiB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivpee7hOS7tuemgeatouenu+WKqCcpOwogICAgICB9CiAgICAgIGlmICh0eXBlKSB7CiAgICAgICAgaWYgKHRoaXMubUNvbmZpZ1tpbmRleCAtIDFdLm5hbWUgPT0gJ3NlYXJjaF9ib3gnIHx8IHRoaXMubUNvbmZpZ1tpbmRleCAtIDFdLm5hbWUgPT0gJ25hdl9iYXInIHx8IHRoaXMubUNvbmZpZ1tpbmRleCAtIDFdLm5hbWUgPT0gJ2hvbWVfY29tYicpIHsKICAgICAgICAgIHJldHVybiB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+aQnOe0ouahhuaIlumAiemhueWNoeaIlui9ruaSreaQnOe0ouW/hemhu+S4uumhtumDqCcpOwogICAgICAgIH0KICAgICAgICB0aGlzLnN3YXBBcnJheSh0aGlzLm1Db25maWcsIGluZGV4IC0gMSwgaW5kZXgpOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuc3dhcEFycmF5KHRoaXMubUNvbmZpZywgaW5kZXgsIGluZGV4ICsgMSk7CiAgICAgIH0KICAgICAgdmFyIG9iaiA9IHt9OwogICAgICB0aGlzLnJDb25maWcgPSBbXTsKICAgICAgb2JqLm9sZEluZGV4ID0gaW5kZXg7CiAgICAgIGlmICh0eXBlKSB7CiAgICAgICAgb2JqLm5ld0luZGV4ID0gaW5kZXggLSAxOwogICAgICB9IGVsc2UgewogICAgICAgIG9iai5uZXdJbmRleCA9IGluZGV4ICsgMTsKICAgICAgfQogICAgICB0aGlzLm1Db25maWcuZm9yRWFjaChmdW5jdGlvbiAoZWwsIGluZGV4KSB7CiAgICAgICAgZWwubnVtID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgKiAxMDAwICsgaW5kZXg7CiAgICAgIH0pOwogICAgICB2YXIgdGVtcEl0ZW0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGl0ZW0pKTsKICAgICAgdGhpcy5yQ29uZmlnLnB1c2godGVtcEl0ZW0pOwogICAgICBvYmouZWxlbWVudCA9IGl0ZW07CiAgICAgIG9iai5saXN0ID0gdGhpcy5tQ29uZmlnOwogICAgICBpZiAodHlwZSkgewogICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSBpbmRleCAtIDE7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IGluZGV4ICsgMTsKICAgICAgfQogICAgICB0aGlzLiRzdG9yZS5jb21taXQoJ21vYmlsZENvbmZpZy9TRVRDT05GSUdOQU1FJywgaXRlbS5uYW1lKTsKICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KCdtb2JpbGRDb25maWcvZGVmYXVsdEFycmF5U29ydCcsIG9iaik7CiAgICB9LAogICAgLy8g57uE5Lu25re75YqgCiAgICBhZGREb21Db246IGZ1bmN0aW9uIGFkZERvbUNvbihpdGVtLCB0eXBlLCBpbmRleCkgewogICAgICBpZiAoaXRlbS5uYW1lID09ICdzZWFyY2hfYm94JykgewogICAgICAgIGlmICh0aGlzLmlzU2VhcmNoKSByZXR1cm4gdGhpcy4kbWVzc2FnZS5lcnJvcign6K+l57uE5Lu25Y+q6IO95re75Yqg5LiA5qyhJyk7CiAgICAgICAgaWYgKHRoaXMuaXNDb21iKSByZXR1cm4gdGhpcy4kbWVzc2FnZS5lcnJvcign6L2u5pKt5pCc57Si5LiN6IO95ZKM5pCc57Si57uE5Lu25LiO6YCJ6aG55Y2h57uE5Lu25ZCM5pe25a2Y5ZyoJyk7CiAgICAgICAgdGhpcy5pc1NlYXJjaCA9IHRydWU7CiAgICAgIH0KICAgICAgaWYgKGl0ZW0ubmFtZSA9PSAnbmF2X2JhcicpIHsKICAgICAgICBpZiAodGhpcy5pc1RhYikgcmV0dXJuIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+ivpee7hOS7tuWPquiDvea3u+WKoOS4gOasoScpOwogICAgICAgIGlmICh0aGlzLmlzQ29tYikgcmV0dXJuIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+i9ruaSreaQnOe0ouS4jeiDveWSjOaQnOe0oue7hOS7tuS4jumAiemhueWNoee7hOS7tuWQjOaXtuWtmOWcqCcpOwogICAgICAgIHRoaXMuaXNUYWIgPSB0cnVlOwogICAgICB9CiAgICAgIGlmIChpdGVtLm5hbWUgPT0gJ2hvbWVfY29tYicpIHsKICAgICAgICBpZiAodGhpcy5pc0NvbWIpIHJldHVybiB0aGlzLiRtZXNzYWdlLmVycm9yKCfor6Xnu4Tku7blj6rog73mt7vliqDkuIDmrKEnKTsKICAgICAgICBpZiAodGhpcy5pc1NlYXJjaCB8fCB0aGlzLmlzVGFiKSByZXR1cm4gdGhpcy4kbWVzc2FnZS5lcnJvcign6L2u5pKt5pCc57Si5LiN6IO95ZKM5pCc57Si57uE5Lu25LiO6YCJ6aG55Y2h57uE5Lu25ZCM5pe25a2Y5ZyoJyk7CiAgICAgICAgdGhpcy5pc0NvbWIgPSB0cnVlOwogICAgICB9CiAgICAgIGlmIChpdGVtLm5hbWUgPT0gJ2hvbWVfc2VydmljZScpIHsKICAgICAgICBpZiAodGhpcy5pc1NlcnZpY2UpIHJldHVybiB0aGlzLiRtZXNzYWdlLmVycm9yKCfor6Xnu4Tku7blj6rog73mt7vliqDkuIDmrKEnKTsKICAgICAgICB0aGlzLmlzU2VydmljZSA9IHRydWU7CiAgICAgIH0KICAgICAgdmFyIG9iaiA9IHt9OwogICAgICB2YXIgdGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgKiAxMDAwOwogICAgICBpdGVtLm51bSA9ICIiLmNvbmNhdCh0aW1lc3RhbXApOwogICAgICBpdGVtLmlkID0gImlkIi5jb25jYXQodGltZXN0YW1wKTsKICAgICAgdGhpcy5hY3RpdmVDb25maWdOYW1lID0gaXRlbS5uYW1lOwogICAgICB2YXIgdGVtcEl0ZW0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGl0ZW0pKTsKICAgICAgaWYgKGl0ZW0ubmFtZSA9PSAnaG9tZV9jb21iJykgewogICAgICAgIHRoaXMuckNvbmZpZyA9IFtdOwogICAgICAgIHRoaXMubUNvbmZpZy51bnNoaWZ0KHRlbXBJdGVtKTsKICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gMDsKICAgICAgICB0aGlzLnJDb25maWcucHVzaCh0ZW1wSXRlbSk7CiAgICAgIH0gZWxzZSBpZiAoaXRlbS5uYW1lID09ICdzZWFyY2hfYm94JykgewogICAgICAgIHRoaXMuckNvbmZpZyA9IFtdOwogICAgICAgIHRoaXMubUNvbmZpZy51bnNoaWZ0KHRlbXBJdGVtKTsKICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gMDsKICAgICAgICB0aGlzLnJDb25maWcucHVzaCh0ZW1wSXRlbSk7CiAgICAgIH0gZWxzZSBpZiAoaXRlbS5uYW1lID09ICduYXZfYmFyJykgewogICAgICAgIHRoaXMuckNvbmZpZyA9IFtdOwogICAgICAgIGlmICh0aGlzLm1Db25maWdbMF0gJiYgdGhpcy5tQ29uZmlnWzBdLm5hbWUgPT09ICdzZWFyY2hfYm94JykgewogICAgICAgICAgdGhpcy5tQ29uZmlnLnNwbGljZSgxLCAwLCB0ZW1wSXRlbSk7CiAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gMTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy5tQ29uZmlnLnNwbGljZSgwLCAwLCB0ZW1wSXRlbSk7CiAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gMDsKICAgICAgICB9CiAgICAgICAgdGhpcy5yQ29uZmlnLnB1c2godGVtcEl0ZW0pOwogICAgICB9IGVsc2UgewogICAgICAgIGlmICh0eXBlKSB7CiAgICAgICAgICB0aGlzLnJDb25maWcgPSBbXTsKICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZUluZGV4ID09IDAgJiYgdGhpcy5tQ29uZmlnWzFdICYmIHRoaXMubUNvbmZpZ1sxXS5uYW1lID09ICduYXZfYmFyJykgewogICAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gMjsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSB0aGlzLmFjdGl2ZUluZGV4ID49IDAgPyB0aGlzLmFjdGl2ZUluZGV4ICsgMSA6IHRoaXMubUNvbmZpZy5sZW5ndGg7CiAgICAgICAgICB9CiAgICAgICAgICB0aGlzLm1Db25maWcuc3BsaWNlKHRoaXMuYWN0aXZlSW5kZXgsIDAsIHRlbXBJdGVtKTsKICAgICAgICAgIHRoaXMuckNvbmZpZy5wdXNoKHRlbXBJdGVtKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy5tQ29uZmlnLnNwbGljZShpbmRleCArIDEsIDAsIHRlbXBJdGVtKTsKICAgICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSBpbmRleDsKICAgICAgICB9CiAgICAgIH0KICAgICAgdGhpcy5tQ29uZmlnLmZvckVhY2goZnVuY3Rpb24gKGVsLCBpbmRleCkgewogICAgICAgIGVsLm51bSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpICogMTAwMCArIGluZGV4OwogICAgICB9KTsKICAgICAgLy8g5L+d5a2Y57uE5Lu25ZCN56ewCiAgICAgIG9iai5lbGVtZW50ID0gaXRlbTsKICAgICAgb2JqLmxpc3QgPSB0aGlzLm1Db25maWc7CiAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgnbW9iaWxkQ29uZmlnL1NFVENPTkZJR05BTUUnLCBpdGVtLm5hbWUpOwogICAgICB0aGlzLiRzdG9yZS5jb21taXQoJ21vYmlsZENvbmZpZy9kZWZhdWx0QXJyYXlTb3J0Jywgb2JqKTsKICAgIH0sCiAgICAvL+S4remXtOmhteeCueWHu+a3u+WKoOaooeWdl++8mwogICAgYmluZEFkZERvbTogZnVuY3Rpb24gYmluZEFkZERvbShpdGVtLCB0eXBlLCBpbmRleCkgewogICAgICB2YXIgaSA9IGl0ZW07CiAgICAgIHRoaXMubENvbmZpZy5mb3JFYWNoKGZ1bmN0aW9uIChqKSB7CiAgICAgICAgaWYgKGl0ZW0ubmFtZSA9PSBqLm5hbWUpIHsKICAgICAgICAgIGkgPSBqOwogICAgICAgIH0KICAgICAgfSk7CiAgICAgIHRoaXMuYWRkRG9tQ29uKGksIHR5cGUsIGluZGV4KTsKICAgIH0sCiAgICAvL+W3pui+uemFjee9ruaooeWdl+eCueWHu+a3u+WKoO+8mwogICAgYWRkRG9tOiBmdW5jdGlvbiBhZGREb20oaXRlbSwgdHlwZSkgewogICAgICB0aGlzLmFkZERvbUNvbihpdGVtLCB0eXBlKTsKICAgIH0sCiAgICAvLyDngrnlh7vmmL7npLrnm7jlupTnmoTphY3nva4KICAgIGJpbmRjb25maWc6IGZ1bmN0aW9uIGJpbmRjb25maWcoaXRlbSwgaW5kZXgpIHsKICAgICAgdGhpcy5yQ29uZmlnID0gW107CiAgICAgIHZhciB0ZW1wSXRlbSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaXRlbSkpOwogICAgICB0aGlzLnJDb25maWcucHVzaCh0ZW1wSXRlbSk7CiAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSBpbmRleDsKICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KCdtb2JpbGRDb25maWcvU0VUQ09ORklHTkFNRScsIGl0ZW0ubmFtZSk7CiAgICB9LAogICAgYmluZEhpZGU6IGZ1bmN0aW9uIGJpbmRIaWRlKGl0ZW0pIHsKICAgICAgdmFyIG9iaiA9IHRoaXMuJHN0b3JlLnN0YXRlLm1vYmlsZENvbmZpZy5kZWZhdWx0QXJyYXk7CiAgICAgIHZhciBudW0gPSB0aGlzLnJDb25maWdbMF0ubnVtOwogICAgICBvYmpbbnVtXS5pc0hpZGUgPSAhb2JqW251bV0uaXNIaWRlOwogICAgICB0aGlzLiRzdG9yZS5jb21taXQoJ21vYmlsZENvbmZpZy9VUERBVEVBUlInLCB7CiAgICAgICAgbnVtOiBudW0sCiAgICAgICAgdmFsOiBvYmpbbnVtXQogICAgICB9KTsKICAgIH0sCiAgICAvLyDnu4Tku7bliKDpmaQKICAgIGJpbmREZWxldGU6IGZ1bmN0aW9uIGJpbmREZWxldGUoaXRlbSwga2V5KSB7CiAgICAgIGlmIChpdGVtLm5hbWUgPT0gJ3NlYXJjaF9ib3gnKSB7CiAgICAgICAgdGhpcy5pc1NlYXJjaCA9IGZhbHNlOwogICAgICB9CiAgICAgIGlmIChpdGVtLm5hbWUgPT0gJ25hdl9iYXInKSB7CiAgICAgICAgdGhpcy5pc1RhYiA9IGZhbHNlOwogICAgICB9CiAgICAgIGlmIChpdGVtLm5hbWUgPT0gJ2hvbWVfY29tYicpIHsKICAgICAgICB0aGlzLmlzQ29tYiA9IGZhbHNlOwogICAgICB9CiAgICAgIGlmIChpdGVtLm5hbWUgPT0gJ2hvbWVfc2VydmljZScpIHsKICAgICAgICB0aGlzLmlzU2VydmljZSA9IGZhbHNlOwogICAgICB9CiAgICAgIHRoaXMubUNvbmZpZy5zcGxpY2Uoa2V5LCAxKTsKICAgICAgdGhpcy5yQ29uZmlnLnNwbGljZSgwLCAxKTsKICAgICAgaWYgKHRoaXMubUNvbmZpZy5sZW5ndGggIT0ga2V5KSB7CiAgICAgICAgdGhpcy5yQ29uZmlnLnB1c2godGhpcy5tQ29uZmlnW2tleV0pOwogICAgICB9IGVsc2UgewogICAgICAgIGlmICh0aGlzLm1Db25maWcubGVuZ3RoKSB7CiAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0ga2V5IC0gMTsKICAgICAgICAgIHRoaXMuckNvbmZpZy5wdXNoKHRoaXMubUNvbmZpZ1trZXkgLSAxXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuc2hvd1RpdGxlKCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIC8vIOWIoOmZpOesrOWHoOS4qumFjee9rgogICAgICB0aGlzLiRzdG9yZS5jb21taXQoJ21vYmlsZENvbmZpZy9ERUxFVEVBUlJBWScsIGl0ZW0pOwogICAgfSwKICAgIC8vIOe7hOS7tui/lOWbngogICAgY29uZmlnOiBmdW5jdGlvbiBjb25maWcoZGF0YSkgewogICAgICB2YXIgcHJvcHNPYmogPSB0aGlzLnByb3BzT2JqOwogICAgICBwcm9wc09iai5kYXRhID0gZGF0YTsKICAgICAgcHJvcHNPYmoubmFtZSA9IHRoaXMuYWN0aXZlQ29uZmlnTmFtZTsKICAgIH0sCiAgICBhZGRTb3J0OiBmdW5jdGlvbiBhZGRTb3J0KGFyciwgaW5kZXgxLCBpbmRleDIpIHsKICAgICAgYXJyW2luZGV4MV0gPSBhcnIuc3BsaWNlKGluZGV4MiwgMSwgYXJyW2luZGV4MV0pWzBdOwogICAgICByZXR1cm4gYXJyOwogICAgfSwKICAgIC8vIOaVsOe7hOaOkuW6jwogICAgYXJyYXlTb3J0OiBmdW5jdGlvbiBhcnJheVNvcnQoKSB7CiAgICAgIHZhciB0ZW1wQXJyID0gW107CiAgICAgIHZhciBiYXNpcyA9IHsKICAgICAgICB0aXRsZTogJ+WfuuehgOe7hOS7ticsCiAgICAgICAgbGlzdDogW10sCiAgICAgICAgaXNPcGVuOiB0cnVlCiAgICAgIH07CiAgICAgIHZhciBtYXJrZXRpbmcgPSB7CiAgICAgICAgdGl0bGU6ICfokKXplIDnu4Tku7YnLAogICAgICAgIGxpc3Q6IFtdLAogICAgICAgIGlzT3BlbjogdHJ1ZQogICAgICB9OwogICAgICB2YXIgdG9vbCA9IHsKICAgICAgICB0aXRsZTogJ+W3peWFt+e7hOS7ticsCiAgICAgICAgbGlzdDogW10sCiAgICAgICAgaXNPcGVuOiB0cnVlCiAgICAgIH07CiAgICAgIHRoaXMubENvbmZpZy5tYXAoZnVuY3Rpb24gKGVsLCBpbmRleCkgewogICAgICAgIGlmIChlbC50eXBlID09IDApIHsKICAgICAgICAgIGJhc2lzLmxpc3QucHVzaChlbCk7CiAgICAgICAgfQogICAgICAgIGlmIChlbC50eXBlID09IDEpIHsKICAgICAgICAgIG1hcmtldGluZy5saXN0LnB1c2goZWwpOwogICAgICAgIH0KICAgICAgICBpZiAoZWwudHlwZSA9PSAyKSB7CiAgICAgICAgICB0b29sLmxpc3QucHVzaChlbCk7CiAgICAgICAgfQogICAgICB9KTsKICAgICAgdGVtcEFyci5wdXNoKGJhc2lzLCBtYXJrZXRpbmcsIHRvb2wpOwogICAgICB0aGlzLmxlZnRNZW51ID0gdGVtcEFycjsKICAgIH0sCiAgICAvLyB0b0ltYWdlKHZhbCl7CiAgICAvLyAgICAgaHRtbDJjYW52YXModGhpcy4kcmVmcy5pbWdDb250YWluZXIsewogICAgLy8gICAgICAgICB1c2VDT1JTOnRydWUsCiAgICAvLyAgICAgICAgIGxvZ2dpbmc6dHJ1ZSwKICAgIC8vICAgICAgICAgdGFpbnRUZXN0OiBmYWxzZSwKICAgIC8vICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBudWxsCiAgICAvLyAgICAgfSkudGhlbigoY2FudmFzKSA9PiB7CiAgICAvLyAgICAgICAgIGxldCBpbWdVcmwgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJyk7CiAgICAvLyAgICAgICAgIHRoaXMuZGl5U2F2ZURhdGUodmFsLGltZ1VybCkKICAgIC8vICAgICB9KTsKICAgIC8vIH0sCiAgICBkaXlTYXZlRGF0ZTogZnVuY3Rpb24gZGl5U2F2ZURhdGUodmFsLCBudW0sIHR5cGUsIHNhdmUpIHsKICAgICAgdmFyIF90aGlzOCA9IHRoaXM7CiAgICAgIGRpeVByb1NhdmUodHlwZSA/IDAgOiB0aGlzLnBhZ2VJZCwgewogICAgICAgIHR5cGU6IHRoaXMucGFnZVR5cGUgfHwgc2F2ZSwKICAgICAgICB2YWx1ZTogdmFsLAogICAgICAgIHRpdGxlOiB0aGlzLnRpdGxlVHh0LAogICAgICAgIG5hbWU6IHRoaXMubmFtZVR4dCB8fCAn5qih5p2/JywKICAgICAgICBpc19zaG93OiB0aGlzLnNob3dUeHQgPyAxIDogMCwKICAgICAgICBpc19iZ19jb2xvcjogdGhpcy5jb2xvclR4dCA/IDEgOiAwLAogICAgICAgIGNvbG9yX3BpY2tlcjogdGhpcy5jb2xvclBpY2tlclR4dCwKICAgICAgICBiZ19waWM6IHRoaXMucGljVXJsVHh0LAogICAgICAgIGJnX3RhYl92YWw6IHRoaXMudGFiVmFsVHh0LAogICAgICAgIGlzX2JnX3BpYzogdGhpcy5waWNUeHQgPyAxIDogMAogICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBfdGhpczgucGFnZUlkID0gcmVzLmRhdGEuaWQ7CiAgICAgICAgX3RoaXM4LiRtZXNzYWdlLnN1Y2Nlc3MocmVzLm1zZyk7CiAgICAgICAgdmFyIHRoYXQgPSBfdGhpczg7CiAgICAgICAgX3RoaXM4Lm5hbWVNb2RhbCA9IGZhbHNlOwogICAgICAgIGlmIChudW0gPT0gMikgewogICAgICAgICAgX3RoaXM4LnJlbExvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVwbGFjZShfdGhpczguJHJvdXRlUHJvU3RyICsgJy9zZXR0aW5nL3BhZ2VzL2RldmlzZS8wJyk7CiAgICAgICAgICB9LCAyMDAwKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgX3RoaXM4LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICB9CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBfdGhpczgucmVsTG9hZGluZyA9IGZhbHNlOwogICAgICAgIF90aGlzOC5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgX3RoaXM4LiRtZXNzYWdlLmVycm9yKHJlcy5tc2cpOwogICAgICB9KTsKICAgIH0sCiAgICBzYXZlTW9kYWw6IGZ1bmN0aW9uIHNhdmVNb2RhbCgpIHsKICAgICAgaWYgKCF0aGlzLnNhdmVOYW1lKSByZXR1cm4gdGhpcy4kbWVzc2FnZS53YXJuaW5nKCfor7flhYjovpPlhaXmqKHmnb/lkI3np7AnKTsKICAgICAgdGhpcy5zYXZlQ29uZmlnKDEsIHRoaXMuc2F2ZU5hbWUpOwogICAgfSwKICAgIGNsb3NlV2luZG93OiBmdW5jdGlvbiBjbG9zZVdpbmRvdygpIHsKICAgICAgdGhpcy4kbXNnYm94KHsKICAgICAgICB0aXRsZTogJ+aPkOekuicsCiAgICAgICAgbWVzc2FnZTogJ+WFs+mXremhtemdouWJjeivt+WFiOS/neWtmOaVsOaNru+8jOacquS/neWtmOeahOivneaVsOaNruS8muS4ouWksScsCiAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSwKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgaWNvbkNsYXNzOiAnZWwtaWNvbi13YXJuaW5nJywKICAgICAgICBjb25maXJtQnV0dG9uQ2xhc3M6ICdidG4tY3VzdG9tLWNhbmNlbCcKICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAvLyB0aGlzLnNhdmVDb25maWcoKTsKICAgICAgICAgIHdpbmRvdy5jbG9zZSgpOwogICAgICAgIH0sIDEwMDApOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7fSk7CiAgICB9LAogICAgLy8g5L+d5a2Y6YWN572uCiAgICBzYXZlQ29uZmlnOiBmdW5jdGlvbiBzYXZlQ29uZmlnKG51bSwgdHlwZSwgc2F2ZSkgewogICAgICB2YXIgX3RoaXM5ID0gdGhpczsKICAgICAgaWYgKHRoaXMubUNvbmZpZy5sZW5ndGggPT0gMCkgewogICAgICAgIHJldHVybiB0aGlzLiRtZXNzYWdlLmVycm9yKCfmmoLmnKrmt7vliqDku7vkvZXnu4Tku7bvvIzkv53lrZjlpLHotKXvvIEnKTsKICAgICAgfQogICAgICBpZiAobnVtID09IDEpIHsKICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMucmVsTG9hZGluZyA9IHRydWU7CiAgICAgIH0KICAgICAgdmFyIHZhbCA9IHRoaXMuJHN0b3JlLnN0YXRlLm1vYmlsZENvbmZpZy5kZWZhdWx0QXJyYXk7CiAgICAgIGlmICghdGhpcy5mb290QWN0aXZlKSB7CiAgICAgICAgdmFyIHRpbWVzdGFtcCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpICogMTAwMDsKICAgICAgICB2YWxbdGltZXN0YW1wXSA9IHRoaXMuJHN0b3JlLnN0YXRlLm1vYmlsZENvbmZpZy5wYWdlRm9vdGVyOwogICAgICAgIHRoaXMuZm9vdEFjdGl2ZSA9IHRydWU7CiAgICAgIH0KICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkgewogICAgICAgIF90aGlzOS5kaXlTYXZlRGF0ZSh2YWwsIG51bSwgdHlwZSwgc2F2ZSk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOiOt+WPlum7mOiupOmFjee9rgogICAgZ2V0RGVmYXVsdENvbmZpZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENvbmZpZygpIHsKICAgICAgdmFyIF90aGlzMCA9IHRoaXM7CiAgICAgIGRpeVByb0luZm8odGhpcy5wYWdlSWQsIHsKICAgICAgICB0eXBlOiAxCiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKF9yZWYyKSB7CiAgICAgICAgdmFyIGRhdGEgPSBfcmVmMi5kYXRhOwogICAgICAgIHZhciBvYmogPSB7fTsKICAgICAgICB2YXIgdGVtcEFSUiA9IFtdOwogICAgICAgIF90aGlzMC4kc3RvcmUuY29tbWl0KCdtb2JpbGRDb25maWcvdGl0bGVVcGRhdGEnLCBkYXRhLmluZm8udGl0bGUpOwogICAgICAgIF90aGlzMC4kc3RvcmUuY29tbWl0KCdtb2JpbGRDb25maWcvbmFtZVVwZGF0YScsIGRhdGEuaW5mby5uYW1lKTsKICAgICAgICBfdGhpczAuJHN0b3JlLmNvbW1pdCgnbW9iaWxkQ29uZmlnL3Nob3dVcGRhdGEnLCBkYXRhLmluZm8uaXNfc2hvdyk7CiAgICAgICAgX3RoaXMwLiRzdG9yZS5jb21taXQoJ21vYmlsZENvbmZpZy9jb2xvclVwZGF0YScsIGRhdGEuaW5mby5pc19iZ19jb2xvciB8fCAwKTsKICAgICAgICBfdGhpczAuJHN0b3JlLmNvbW1pdCgnbW9iaWxkQ29uZmlnL3BpY1VwZGF0YScsIGRhdGEuaW5mby5pc19iZ19waWMgfHwgMCk7CiAgICAgICAgX3RoaXMwLiRzdG9yZS5jb21taXQoJ21vYmlsZENvbmZpZy9waWNrZXJVcGRhdGEnLCBkYXRhLmluZm8uY29sb3JfcGlja2VyIHx8ICcjZjVmNWY1Jyk7CiAgICAgICAgX3RoaXMwLiRzdG9yZS5jb21taXQoJ21vYmlsZENvbmZpZy9yYWRpb1VwZGF0YScsIGRhdGEuaW5mby5iZ190YWJfdmFsIHx8IDApOwogICAgICAgIF90aGlzMC4kc3RvcmUuY29tbWl0KCdtb2JpbGRDb25maWcvcGljdXJsVXBkYXRhJywgZGF0YS5pbmZvLmJnX3BpYyB8fCAnJyk7CiAgICAgICAgX3RoaXMwLmRpeVN0YXR1cyA9IGRhdGEuaW5mby5zdGF0dXM7CiAgICAgICAgdmFyIG5ld0FyciA9IF90aGlzMC5vYmpUb0FycihkYXRhLmluZm8udmFsdWUpOwogICAgICAgIGZ1bmN0aW9uIHNvcnROdW1iZXIoYSwgYikgewogICAgICAgICAgcmV0dXJuIGEudGltZXN0YW1wIC0gYi50aW1lc3RhbXA7CiAgICAgICAgfQogICAgICAgIG5ld0Fyci5zb3J0KHNvcnROdW1iZXIpOwogICAgICAgIG5ld0Fyci5tYXAoZnVuY3Rpb24gKGVsLCBpbmRleCkgewogICAgICAgICAgaWYgKGVsLm5hbWUgPT0gJ2hlYWRlclNlcmNoJykgewogICAgICAgICAgICBfdGhpczAuaXNTZWFyY2ggPSB0cnVlOwogICAgICAgICAgfQogICAgICAgICAgaWYgKGVsLm5hbWUgPT0gJ3RhYk5hdicpIHsKICAgICAgICAgICAgX3RoaXMwLmlzVGFiID0gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChlbC5uYW1lID09ICdob21lQ29tYicpIHsKICAgICAgICAgICAgX3RoaXMwLmlzQ29tYiA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoZWwubmFtZSA9PSAnY3VzdG9tZXJTZXJ2aWNlJykgewogICAgICAgICAgICBfdGhpczAuaXNTZXJ2aWNlID0gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChlbC5uYW1lID09ICdnb29kTGlzdCcpIHsKICAgICAgICAgICAgLy8gbGV0IHN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlOwogICAgICAgICAgICAvLyBzdG9yYWdlLnNldEl0ZW0oZWwudGltZXN0YW1wLCBlbC5zZWxlY3RDb25maWcuYWN0aXZlVmFsdWUpOwogICAgICAgICAgfQogICAgICAgICAgZWwuaWQgPSAnaWQnICsgZWwudGltZXN0YW1wOwogICAgICAgICAgX3RoaXMwLmxDb25maWcubWFwKGZ1bmN0aW9uIChpdGVtLCBqKSB7CiAgICAgICAgICAgIGlmIChlbC5uYW1lID09IGl0ZW0uZGVmYXVsdE5hbWUpIHsKICAgICAgICAgICAgICBpdGVtLm51bSA9IGVsLnRpbWVzdGFtcDsKICAgICAgICAgICAgICBpdGVtLmlkID0gJ2lkJyArIGVsLnRpbWVzdGFtcDsKICAgICAgICAgICAgICB2YXIgdGVtcEl0ZW0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGl0ZW0pKTsKICAgICAgICAgICAgICB0ZW1wQVJSLnB1c2godGVtcEl0ZW0pOwogICAgICAgICAgICAgIG9ialtlbC50aW1lc3RhbXBdID0gZWw7CiAgICAgICAgICAgICAgX3RoaXMwLm1Db25maWcucHVzaCh0ZW1wSXRlbSk7CiAgICAgICAgICAgICAgLy8g5L+d5a2Y6buY6K6k57uE5Lu26YWN572uCiAgICAgICAgICAgICAgX3RoaXMwLiRzdG9yZS5jb21taXQoJ21vYmlsZENvbmZpZy9BRERBUlJBWScsIHsKICAgICAgICAgICAgICAgIG51bTogZWwudGltZXN0YW1wLAogICAgICAgICAgICAgICAgdmFsOiBlbAogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgICAgICB2YXIgb2JqcyA9IG5ld0FycltuZXdBcnIubGVuZ3RoIC0gMV07CiAgICAgICAgaWYgKG9ianMubmFtZSA9PSAncGFnZUZvb3QnKSB7CiAgICAgICAgICBfdGhpczAuJHN0b3JlLmNvbW1pdCgnbW9iaWxkQ29uZmlnL2Zvb3RQYWdlVXBkYXRhJywgb2Jqcyk7CiAgICAgICAgfQogICAgICAgIF90aGlzMC5zaG93VGl0bGUoKTsKICAgICAgfSk7CiAgICB9LAogICAgY2F0ZWdvcnlMaXN0OiBmdW5jdGlvbiBjYXRlZ29yeUxpc3QoKSB7CiAgICAgIHZhciBfdGhpczEgPSB0aGlzOwogICAgICBfY2F0ZWdvcnlMaXN0KGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBfdGhpczEuY2F0ZWdvcnkgPSByZXMuZGF0YTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g6YeN572uCiAgICByZWFzdDogZnVuY3Rpb24gcmVhc3QoKSB7CiAgICAgIHZhciBfdGhpczEwID0gdGhpczsKICAgICAgaWYgKHRoaXMucGFnZUlkID09IDApIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKCfmlrDlop7pobXpnaLvvIzml6Dms5Xph43nva4nKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRjb25maXJtKCfmraTmk43kvZzlsIbmuIXnqbrmqKHmnb/lhoXlrrksIOaYr+WQpue7p+e7rT8nLCAn5o+Q56S6JywgewogICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgIF90aGlzMTAubUNvbmZpZyA9IFtdOwogICAgICAgICAgX3RoaXMxMC5yQ29uZmlnID0gW107CiAgICAgICAgICBfdGhpczEwLmFjdGl2ZUluZGV4ID0gLTk5OwogICAgICAgICAgX3RoaXMxMC5nZXREZWZhdWx0Q29uZmlnKCk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0KICB9LAogIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7CiAgICB0aGlzLiRzdG9yZS5jb21taXQoJ21vYmlsZENvbmZpZy90aXRsZVVwZGF0YScsICcnKTsKICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgnbW9iaWxkQ29uZmlnL25hbWVVcGRhdGEnLCAnJyk7CiAgICB0aGlzLiRzdG9yZS5jb21taXQoJ21vYmlsZENvbmZpZy9zaG93VXBkYXRhJywgMSk7CiAgICB0aGlzLiRzdG9yZS5jb21taXQoJ21vYmlsZENvbmZpZy9jb2xvclVwZGF0YScsIDApOwogICAgdGhpcy4kc3RvcmUuY29tbWl0KCdtb2JpbGRDb25maWcvcGljVXBkYXRhJywgMCk7CiAgICB0aGlzLiRzdG9yZS5jb21taXQoJ21vYmlsZENvbmZpZy9waWNrZXJVcGRhdGEnLCAnI2Y1ZjVmNScpOwogICAgdGhpcy4kc3RvcmUuY29tbWl0KCdtb2JpbGRDb25maWcvcmFkaW9VcGRhdGEnLCAwKTsKICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgnbW9iaWxkQ29uZmlnL3BpY3VybFVwZGF0YScsICcnKTsKICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgnbW9iaWxkQ29uZmlnL1NFVEVNUFRZJyk7CiAgfSwKICBkZXN0cm95ZWQ6IGZ1bmN0aW9uIGRlc3Ryb3llZCgpIHsKICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgnbW9iaWxkQ29uZmlnL3RpdGxlVXBkYXRhJywgJycpOwogICAgdGhpcy4kc3RvcmUuY29tbWl0KCdtb2JpbGRDb25maWcvbmFtZVVwZGF0YScsICcnKTsKICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgnbW9iaWxkQ29uZmlnL3Nob3dVcGRhdGEnLCAxKTsKICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgnbW9iaWxkQ29uZmlnL2NvbG9yVXBkYXRhJywgMCk7CiAgICB0aGlzLiRzdG9yZS5jb21taXQoJ21vYmlsZENvbmZpZy9waWNVcGRhdGEnLCAwKTsKICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgnbW9iaWxkQ29uZmlnL3BpY2tlclVwZGF0YScsICcjZjVmNWY1Jyk7CiAgICB0aGlzLiRzdG9yZS5jb21taXQoJ21vYmlsZENvbmZpZy9yYWRpb1VwZGF0YScsIDApOwogICAgdGhpcy4kc3RvcmUuY29tbWl0KCdtb2JpbGRDb25maWcvcGljdXJsVXBkYXRhJywgJycpOwogICAgdGhpcy4kc3RvcmUuY29tbWl0KCdtb2JpbGRDb25maWcvU0VURU1QVFknKTsKICB9Cn07"},{"version":3,"names":["categoryList","diyProInfo","diyProSave","setDefault","recovery","diyUpdateName","getRoutineCode","vuedraggable","mPage","mConfig","footPage","mapState","html2canvas","theme","Setting","QRCode","inject","name","components","_objectSpread","draggable","filters","filterTxt","val","substr","length","computed","titleTxt","state","mobildConfig","pageTitle","showTxt","pageShow","colorTxt","pageColor","picTxt","pagePic","colorPickerTxt","pageColorPicker","tabValTxt","pageTabVal","picUrlTxt","pagePicUrl","pageFooterType","pageFooter","navConfig","tabVal","pageFooterBottom","mbConfig","defaultArrays","defaultArray","nameTxt","get","$store","pageName","set","value","commit","mixins","data","BaseURL","apiBaseURL","replace","qrcodeImg","modal","clientHeight","rollHeight","leftMenu","lConfig","rConfig","activeConfigName","propsObj","activeIndex","number","pageId","pageType","category","tabList","title","key","footActive","loading","relLoading","isSearch","isTab","isFllow","isComb","isService","visible","diyStatus","nameModal","saveName","created","_this","$route","query","id","type","objToArr","imgList","require","link","$nextTick","arraySort","getDefaultConfig","showTitle","concat","document","documentElement","H","that","window","onresize","methods","exportView","_this2","console","log","importView","preview","creatQrCode","routineCode","_this3","then","res","image","catch","err","$message","error","status","$refs","qrCodeUrl","innerHTML","url","qrcode","text","width","height","colorDark","colorLight","correctLevel","CorrectLevel","changName","cancel","determine","_this4","trim","success","msg","returnTap","_this5","$msgbox","message","showCancelButton","cancelButtonText","confirmButtonText","iconClass","confirmButtonClass","$router","push","$routeProStr","leftRemove","_ref","to","from","item","clone","oldIndex","newIndex","_underlying_vm_","num","splice","onMove","e","relatedContext","element","onCopy","onError","setmoren","_this6","getmoren","_this7","reload","obj","i","configName","cname","abc","JSON","parse","stringify","showFoot","Object","keys","m","map","evt","moved","warning","oldNum","newNum","forEach","el","index","Date","getTime","list","tempItem","added","timestamp","cloneDog","swapArray","arr","index1","index2","movePage","addDomCon","unshift","bindAddDom","j","addDom","bindconfig","bindHide","isHide","bindDelete","config","addSort","tempArr","basis","isOpen","marketing","tool","diySaveDate","save","_this8","is_show","is_bg_color","color_picker","bg_pic","bg_tab_val","is_bg_pic","setTimeout","location","saveModal","saveConfig","closeWindow","close","_this9","_this0","_ref2","tempARR","info","newArr","sortNumber","a","b","sort","defaultName","objs","_this1","reast","_this10","$confirm","beforeDestroy","destroyed"],"sources":["src/pages/setting/devise/diyIndex.vue"],"sourcesContent":["<template>\r\n <!-- 添加主题-首页装修 -->\r\n <div class=\"diy-page\">\r\n <div class=\"i-layout-page-header header-title\">\r\n <div class=\"fl_header\">\r\n <!-- <span class=\"ivu-page-header-title mr20\" style=\"padding: 0\" v-text=\"$route.meta.title\"></span> -->\r\n <div class=\"f-title acea-row row-middle\">\r\n <div class=\"acea-row row-middle cup\" @click=\"returnTap\">\r\n <div class=\"iconfont iconfanhui\"></div>\r\n <div class=\"return\">返回</div>\r\n </div>\r\n <div class=\"mr20\">\r\n <span class=\"name mr5\">当前页面:{{ nameTxt || '模板' }}</span>\r\n <el-popover v-model=\"visible\" width=\"347\">\r\n <span slot=\"reference\" class=\"iconfont iconzidingyicaidan cup\"></span>\r\n <template>\r\n <div class=\"flex\">\r\n <el-input\r\n v-model=\"nameTxt\"\r\n placeholder=\"必填不超过15个字\"\r\n maxlength=\"15\"\r\n style=\"width: 200px\"\r\n ></el-input>\r\n <el-button type=\"text\" @click=\"cancel\">取消</el-button>\r\n <el-button type=\"primary\" @click=\"determine\">确定</el-button>\r\n </div>\r\n </template>\r\n </el-popover>\r\n </div>\r\n </div>\r\n <div class=\"rbtn\">\r\n <!-- <el-button class=\"ml20 header-btn look\" v-db-click @click=\"exportView\" :loading=\"loading\">导出</el-button>\r\n <el-button class=\"ml20 header-btn look\" v-db-click @click=\"importView\" :loading=\"loading\">导入</el-button> -->\r\n <el-button class=\"ml20 header-btn look\" v-db-click @click=\"preview\" :loading=\"loading\">预览</el-button>\r\n <el-button class=\"ml20 header-btn close\" v-db-click @click=\"saveConfig(1)\" :loading=\"loading\">保存</el-button>\r\n <el-button class=\"ml20 header-btn save\" v-db-click @click=\"saveConfig(2)\" :loading=\"loading\"\r\n >保存并关闭</el-button\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n <el-card :bordered=\"false\" shadow=\"never\">\r\n <div class=\"diy-wrapper\" :style=\"'height:' + clientHeight + 'px;'\">\r\n <!-- 左侧 -->\r\n <div class=\"left\">\r\n <div class=\"wrapper\" :style=\"'height:' + clientHeight + 'px;'\">\r\n <div class=\"list\" v-for=\"(item, index) in leftMenu\" :key=\"index\">\r\n <div class=\"tips\" @click=\"item.isOpen = !item.isOpen\">\r\n {{ item.title }}\r\n <div class=\"iconfont iconyou\" v-if=\"!item.isOpen\"></div>\r\n <div class=\"iconfont iconxia\" v-else></div>\r\n </div>\r\n <!-- 拖拽组件 -->\r\n <draggable\r\n class=\"dragArea list-group\"\r\n :list=\"item.list\"\r\n :group=\"{ name: 'people', pull: 'clone', put: false }\"\r\n :clone=\"cloneDog\"\r\n dragClass=\"dragClass\"\r\n filter=\".search , .navbar , .homeComb , .service\"\r\n >\r\n <div\r\n class=\"list-group-item\"\r\n :class=\"{\r\n search: element.cname == '搜索框',\r\n navbar: element.cname == '选项卡',\r\n homeComb: element.cname == '轮播搜索',\r\n service: element.cname == '悬浮按钮',\r\n }\"\r\n v-for=\"(element, index) in item.list\"\r\n :key=\"element.id\"\r\n @click=\"addDom(element, 1)\"\r\n v-show=\"item.isOpen\"\r\n >\r\n <div>\r\n <div class=\"position\" style=\"display: none\">释放鼠标将组建添加到此处</div>\r\n <svg class=\"conter iconfont-diy icon svg-icon\" aria-hidden=\"true\">\r\n <use :xlink:href=\"element.icon\"></use>\r\n </svg>\r\n <p class=\"conter\">{{ element.cname }}</p>\r\n </div>\r\n </div>\r\n </draggable>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- 中间自定义配置移动端页面 -->\r\n <div class=\"wrapper-con\">\r\n <div class=\"content\">\r\n <div class=\"contxt\">\r\n <div class=\"overflowy\">\r\n <div class=\"picture\"><img src=\"@/assets/images/electric.png\" /></div>\r\n <div class=\"page-title\" :class=\"{ on: activeIndex == -100 }\" @click=\"showTitle\">\r\n {{ titleTxt }}\r\n <div class=\"delete-box\"></div>\r\n <div class=\"handle\"></div>\r\n </div>\r\n </div>\r\n <div class=\"scrollCon\" :style=\"'height:' + rollHeight + 'px;'\">\r\n <div style=\"width: 460px; margin: 0 auto\">\r\n <div\r\n class=\"scroll-box\"\r\n :class=\"\r\n picTxt && tabValTxt == 2\r\n ? 'fullsize noRepeat'\r\n : picTxt && tabValTxt == 1\r\n ? 'repeat ysize'\r\n : 'noRepeat ysize'\r\n \"\r\n :style=\"\r\n 'background-color:' +\r\n (colorTxt ? colorPickerTxt : '') +\r\n ';background-image: url(' +\r\n (picTxt ? picUrlTxt : '') +\r\n ');min-height:' +\r\n rollHeight +\r\n 'px;'\r\n \"\r\n ref=\"imgContainer\"\r\n >\r\n <draggable\r\n class=\"dragArea list-group\"\r\n :list=\"mConfig\"\r\n group=\"people\"\r\n @change=\"log\"\r\n filter=\".top\"\r\n :move=\"onMove\"\r\n animation=\"300\"\r\n >\r\n <div\r\n class=\"mConfig-item\"\r\n :class=\"{\r\n on: activeIndex == key,\r\n top: item.name == 'search_box' || item.name == 'nav_bar',\r\n hide: defaultArrays[item.num].isHide,\r\n }\"\r\n v-for=\"(item, key) in mConfig\"\r\n :key=\"key\"\r\n @click.stop=\"bindconfig(item, key)\"\r\n :style=\"colorTxt ? 'background-color:' + colorPickerTxt + ';' : 'background-color:#fff;'\"\r\n >\r\n <component\r\n :is=\"item.name\"\r\n ref=\"getComponentData\"\r\n :configData=\"propsObj\"\r\n :index=\"key\"\r\n :num=\"item.num\"\r\n :colorStyle=\"colorStyle\"\r\n ></component>\r\n <div class=\"delete-box\">\r\n <div class=\"handleType\">\r\n <div\r\n class=\"iconfont\"\r\n :class=\"defaultArrays[item.num].isHide ? 'iconyincang' : 'iconxianshi'\"\r\n @click.stop=\"bindHide(item)\"\r\n ></div>\r\n <div class=\"iconfont iconshanchu3\" @click.stop=\"bindDelete(item, key)\"></div>\r\n <div class=\"iconfont icona-fuzhi1\" @click.stop=\"bindAddDom(item, 0, key)\"></div>\r\n <div\r\n class=\"iconfont iconshang\"\r\n :class=\"key === 0 ? 'on' : ''\"\r\n @click.stop=\"movePage(item, key, 1)\"\r\n ></div>\r\n <div\r\n class=\"iconfont iconxia\"\r\n :class=\"key === mConfig.length - 1 ? 'on' : ''\"\r\n @click.stop=\"movePage(item, key, 0)\"\r\n ></div>\r\n </div>\r\n </div>\r\n <div class=\"handle\"></div>\r\n <div class=\"delete-name\" :class=\"{ on: activeIndex == key }\">{{ item.cname }}</div>\r\n </div>\r\n </draggable>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"overflowy\">\r\n <div\r\n class=\"page-foot\"\r\n @click=\"showFoot\"\r\n :class=\"{ on: activeIndex == -101 }\"\r\n :style=\"pageFooterType == 1 ? 'bottom:' + (50 + pageFooterBottom) + 'px' : ''\"\r\n >\r\n <footPage></footPage>\r\n <div class=\"delete-box\"></div>\r\n <div class=\"handle\"></div>\r\n </div>\r\n </div>\r\n <div class=\"defaultData\" v-if=\"pageId !== 0\">\r\n <!-- <div class=\"data\" @click=\"setmoren\">设置默认</div>\r\n <div class=\"data\" @click=\"getmoren\">恢复默认</div> -->\r\n <el-button class=\"data\" @click=\"showTitle\">页面设置</el-button>\r\n <el-button class=\"data\" @click=\"nameModal = true\">另存模板</el-button>\r\n <el-button class=\"data\" @click=\"reast\">重置</el-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- 右侧页面设置 -->\r\n <div class=\"right-box\">\r\n <div class=\"mConfig-item\" style=\"background-color: #fff\" v-for=\"(item, key) in rConfig\" :key=\"key\">\r\n <!-- <div class=\"title-bar\">{{ item.cname }}</div> -->\r\n <component\r\n :is=\"item.configName\"\r\n @config=\"config\"\r\n :activeIndex=\"activeIndex\"\r\n :num=\"item.num\"\r\n :index=\"key\"\r\n ></component>\r\n </div>\r\n </div>\r\n </div>\r\n </el-card>\r\n <el-dialog :visible.sync=\"modal\" width=\"540px\" title=\"预览\">\r\n <div>\r\n <div v-viewer class=\"acea-row row-around code\">\r\n <div class=\"acea-row row-column-around row-between-wrapper\">\r\n <div class=\"QRpic\" ref=\"qrCodeUrl\"></div>\r\n <span class=\"mt10\">公众号二维码</span>\r\n </div>\r\n <div class=\"acea-row row-column-around row-between-wrapper\">\r\n <div class=\"QRpic\">\r\n <img v-lazy=\"qrcodeImg\" />\r\n </div>\r\n <span class=\"mt10\">小程序二维码</span>\r\n </div>\r\n </div>\r\n </div>\r\n </el-dialog>\r\n <el-dialog :visible.sync=\"nameModal\" width=\"470px\" title=\"设置模版名称\" :show-close=\"true\">\r\n <el-input v-model=\"saveName\" placeholder=\"请输入模版名称\"></el-input>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button v-db-click @click=\"nameModal = false\">取 消</el-button>\r\n <el-button type=\"primary\" v-db-click @click=\"saveModal\">确 定</el-button>\r\n </span>\r\n </el-dialog>\r\n <!--<div class=\"foot-box\">-->\r\n <!--<Button @click=\"reast\">重置</Button>-->\r\n <!--<Button type=\"primary\" @click=\"saveConfig\" :loading=\"loading\"-->\r\n <!-->保存-->\r\n <!--</Button-->\r\n <!-->-->\r\n <!--</div>-->\r\n </div>\r\n</template>\r\n\r\n<script crossorigin=\"anonymous\">\r\nimport { categoryList, diyProInfo, diyProSave, setDefault, recovery, diyUpdateName, getRoutineCode } from '@/api/diy';\r\nimport vuedraggable from 'vuedraggable';\r\nimport mPage from '@/components/mobilePage/index.js';\r\nimport mConfig from '@/components/mobileConfig/index.js';\r\nimport footPage from '@/components/pagesFoot';\r\nimport { mapState } from 'vuex';\r\nimport html2canvas from 'html2canvas';\r\nimport theme from '@/mixins/theme';\r\nimport Setting from '@/setting';\r\nimport QRCode from 'qrcodejs2';\r\n\r\nexport default {\r\n inject: ['reload'],\r\n name: 'index.vue',\r\n components: {\r\n footPage,\r\n html2canvas,\r\n draggable: vuedraggable,\r\n ...mPage,\r\n ...mConfig,\r\n },\r\n filters: {\r\n filterTxt(val) {\r\n if (val) {\r\n return (val = val.substr(0, val.length - 1));\r\n }\r\n },\r\n },\r\n computed: {\r\n ...mapState({\r\n titleTxt: (state) => state.mobildConfig.pageTitle || '首页',\r\n showTxt: (state) => state.mobildConfig.pageShow,\r\n colorTxt: (state) => state.mobildConfig.pageColor,\r\n picTxt: (state) => state.mobildConfig.pagePic,\r\n colorPickerTxt: (state) => state.mobildConfig.pageColorPicker,\r\n tabValTxt: (state) => state.mobildConfig.pageTabVal,\r\n picUrlTxt: (state) => state.mobildConfig.pagePicUrl,\r\n pageFooterType: (state) => state.mobildConfig.pageFooter.navConfig.tabVal || 0,\r\n pageFooterBottom: (state) => state.mobildConfig.pageFooter.mbConfig.val,\r\n defaultArrays: (state) => state.mobildConfig.defaultArray,\r\n }),\r\n nameTxt: {\r\n get() {\r\n return this.$store.state.mobildConfig.pageName;\r\n },\r\n set(value) {\r\n this.$store.commit('mobildConfig/UPNAME', value);\r\n },\r\n },\r\n },\r\n mixins: [theme],\r\n data() {\r\n return {\r\n BaseURL: Setting.apiBaseURL.replace(/adminapi/, ''),\r\n qrcodeImg: '',\r\n modal: false,\r\n clientHeight: '', //页面动态高度\r\n rollHeight: '',\r\n leftMenu: [], // 左侧菜单\r\n lConfig: [], // 左侧组件\r\n mConfig: [], // 中间组件渲染\r\n rConfig: [], // 右侧组件配置\r\n activeConfigName: '',\r\n propsObj: {}, // 组件传递的数据,\r\n activeIndex: -100, // 选中的下标\r\n number: 0,\r\n pageId: '',\r\n pageName: '',\r\n pageType: '',\r\n category: [],\r\n tabList: [\r\n {\r\n title: '组件库',\r\n key: 0,\r\n },\r\n {\r\n title: '页面链接',\r\n key: 1,\r\n },\r\n ],\r\n footActive: false,\r\n loading: false,\r\n relLoading: false,\r\n isSearch: false,\r\n isTab: false,\r\n isFllow: false,\r\n isComb: false,\r\n isService: false,\r\n visible: true,\r\n diyStatus: 0,\r\n nameModal: false,\r\n saveName: '',\r\n };\r\n },\r\n created() {\r\n this.categoryList();\r\n this.pageId = this.$route.query.id;\r\n this.pageName = this.$route.query.name;\r\n this.pageType = this.$route.query.type;\r\n this.lConfig = this.objToArr(mPage);\r\n let imgList = {\r\n imgList: [require('@/assets/images/foot-005.png'), require('@/assets/images/foot-006.png')],\r\n name: '购物车',\r\n link: '/pages/order_addcart/order_addcart',\r\n };\r\n this.$nextTick(() => {\r\n this.$store.commit('mobildConfig/FOOTER', { title: '是否自定义', name: imgList });\r\n this.arraySort();\r\n if (this.pageId != 0) {\r\n this.getDefaultConfig();\r\n } else {\r\n this.showTitle();\r\n }\r\n this.clientHeight = `${document.documentElement.clientHeight}` - 65.81; //获取浏览器可视区域高度\r\n let H = `${document.documentElement.clientHeight}` - 180;\r\n this.rollHeight = H > 650 ? 650 : H;\r\n let that = this;\r\n window.onresize = function () {\r\n that.clientHeight = `${document.documentElement.clientHeight}` - 65.81;\r\n let H = `${document.documentElement.clientHeight}` - 180;\r\n that.rollHeight = H > 650 ? 650 : H;\r\n };\r\n });\r\n },\r\n methods: {\r\n exportView() {\r\n let that = this;\r\n this.loading = true;\r\n this.$nextTick(() => {\r\n console.log(this.mConfig);\r\n });\r\n },\r\n importView() {},\r\n preview() {\r\n this.modal = true;\r\n this.creatQrCode(this.pageId, this.diyStatus);\r\n this.routineCode(this.pageId);\r\n },\r\n //小程序二维码\r\n routineCode(id) {\r\n getRoutineCode(id)\r\n .then((res) => {\r\n this.qrcodeImg = res.data.image;\r\n })\r\n .catch((err) => {\r\n this.$message.error(err);\r\n });\r\n },\r\n //生成二维码\r\n creatQrCode(id, status) {\r\n this.$refs.qrCodeUrl.innerHTML = '';\r\n let url = '';\r\n if (status) {\r\n url = `${this.BaseURL}pages/index/index`;\r\n } else {\r\n url = `${this.BaseURL}pages/annex/special/index?id=${id}`;\r\n }\r\n var qrcode = new QRCode(this.$refs.qrCodeUrl, {\r\n text: url, // 需要转换为二维码的内容\r\n width: 160,\r\n height: 160,\r\n colorDark: '#000000',\r\n colorLight: '#ffffff',\r\n correctLevel: QRCode.CorrectLevel.H,\r\n });\r\n },\r\n changName(val) {\r\n this.$store.commit('mobildConfig/UPNAME', val);\r\n },\r\n cancel() {\r\n this.visible = false;\r\n },\r\n determine() {\r\n if (this.nameTxt.trim() == '') {\r\n return this.$message.error('请输入模板名称');\r\n }\r\n if (this.pageId == 0) {\r\n this.$message.success('修改成功');\r\n return false;\r\n }\r\n diyUpdateName(this.pageId, { name: this.nameTxt })\r\n .then((res) => {\r\n this.visible = false;\r\n this.$message.success(res.msg);\r\n })\r\n .catch((err) => {\r\n this.$message.error(err.msg);\r\n });\r\n this.visible = false;\r\n },\r\n returnTap() {\r\n this.$msgbox({\r\n title: '温馨提示',\r\n message: '确定离开此页面?系统可能不会保存您所做的更改。',\r\n showCancelButton: true,\r\n cancelButtonText: '取消',\r\n confirmButtonText: '确定',\r\n iconClass: 'el-icon-warning',\r\n confirmButtonClass: 'btn-custom-cancel',\r\n })\r\n .then(() => {\r\n this.$router.push(this.$routeProStr + '/setting/pages/devise/0');\r\n })\r\n .catch(() => {});\r\n },\r\n leftRemove({ to, from, item, clone, oldIndex, newIndex }) {\r\n if (this.isSearch && newIndex == 0) {\r\n if (item._underlying_vm_.name == 'z_wechat_attention') {\r\n this.isFllow = true;\r\n } else {\r\n this.$store.commit('mobildConfig/ARRAYREAST', this.mConfig[0].num);\r\n this.mConfig.splice(0, 1);\r\n }\r\n }\r\n if ((this.isFllow = true && newIndex >= 1)) {\r\n this.$store.commit('mobildConfig/ARRAYREAST', this.mConfig[0].num);\r\n }\r\n },\r\n onMove(e) {\r\n if (e.relatedContext.element.name == 'search_box') return false;\r\n if (e.relatedContext.element.name == 'nav_bar') return false;\r\n if (e.relatedContext.element.name == 'home_comb') return false;\r\n return true;\r\n },\r\n onCopy() {\r\n this.$message.success('复制成功');\r\n },\r\n onError() {\r\n this.$message.error('复制失败');\r\n },\r\n //设置默认数据\r\n setmoren() {\r\n setDefault(this.pageId)\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n })\r\n .catch((err) => {\r\n this.$message.error(err.msg);\r\n });\r\n },\r\n //恢复默认\r\n getmoren() {\r\n recovery(this.pageId)\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n this.reload();\r\n })\r\n .catch((err) => {\r\n this.$message.error(err.msg);\r\n });\r\n },\r\n // 页面标题点击\r\n showTitle() {\r\n this.activeIndex = -100;\r\n let obj = {};\r\n for (var i in mConfig) {\r\n if (i == 'pageTitle') {\r\n // this.rConfig = obj\r\n obj = mConfig[i];\r\n obj.configName = mConfig[i].name;\r\n obj.cname = '页面设置';\r\n }\r\n }\r\n let abc = obj;\r\n this.rConfig = [];\r\n this.rConfig[0] = JSON.parse(JSON.stringify(obj));\r\n },\r\n // 页面底部点击\r\n showFoot() {\r\n this.activeIndex = -101;\r\n let obj = {};\r\n for (var i in mConfig) {\r\n if (i == 'pageFoot') {\r\n // this.rConfig = obj\r\n obj = mConfig[i];\r\n obj.configName = mConfig[i].name;\r\n obj.cname = '底部菜单';\r\n }\r\n }\r\n let abc = obj;\r\n this.rConfig = [];\r\n this.rConfig[0] = JSON.parse(JSON.stringify(obj));\r\n },\r\n // 对象转数组\r\n objToArr(data) {\r\n let obj = Object.keys(data);\r\n let m = obj.map((key) => data[key]);\r\n return m;\r\n },\r\n log(evt) {\r\n // 中间拖拽排序\r\n if (evt.moved) {\r\n if (evt.moved.element.name == 'search_box') {\r\n return this.$message.warning('该组件禁止拖拽');\r\n }\r\n // if (evt.moved.element.name == \"nav_bar\") {\r\n // return this.$message.warning(\"该组件禁止拖拽\");\r\n // }\r\n evt.moved.oldNum = this.mConfig[evt.moved.oldIndex].num;\r\n evt.moved.newNum = this.mConfig[evt.moved.newIndex].num;\r\n evt.moved.status = evt.moved.oldIndex > evt.moved.newIndex;\r\n this.mConfig.forEach((el, index) => {\r\n el.num = new Date().getTime() * 1000 + index;\r\n });\r\n evt.moved.list = this.mConfig;\r\n this.rConfig = [];\r\n let item = evt.moved.element;\r\n let tempItem = JSON.parse(JSON.stringify(item));\r\n this.rConfig.push(tempItem);\r\n this.activeIndex = evt.moved.newIndex;\r\n this.$store.commit('mobildConfig/SETCONFIGNAME', item.name);\r\n this.$store.commit('mobildConfig/defaultArraySort', evt.moved);\r\n }\r\n // 从左向右拖拽排序\r\n if (evt.added) {\r\n let data = evt.added.element;\r\n let obj = {};\r\n let timestamp = new Date().getTime() * 1000;\r\n data.num = timestamp;\r\n this.activeConfigName = data.name;\r\n let tempItem = JSON.parse(JSON.stringify(data));\r\n tempItem.id = 'id' + tempItem.num;\r\n this.mConfig[evt.added.newIndex] = tempItem;\r\n this.rConfig = [];\r\n this.rConfig.push(tempItem);\r\n this.mConfig.forEach((el, index) => {\r\n el.num = new Date().getTime() * 1000 + index;\r\n });\r\n evt.added.list = this.mConfig;\r\n this.activeIndex = evt.added.newIndex;\r\n // 保存组件名称\r\n this.$store.commit('mobildConfig/SETCONFIGNAME', data.name);\r\n this.$store.commit('mobildConfig/defaultArraySort', evt.added);\r\n }\r\n },\r\n cloneDog(data) {\r\n // this.mConfig.push(tempItem)\r\n return {\r\n ...data,\r\n };\r\n },\r\n //数组元素互换位置\r\n swapArray(arr, index1, index2) {\r\n arr[index1] = arr.splice(index2, 1, arr[index1])[0];\r\n return arr;\r\n },\r\n //点击上下移动;\r\n movePage(item, index, type) {\r\n if (type) {\r\n if (index == 0) {\r\n return;\r\n }\r\n } else {\r\n if (index == this.mConfig.length - 1) {\r\n return;\r\n }\r\n }\r\n if (item.name == 'search_box' || item.name == 'nav_bar' || item.name == 'home_comb') {\r\n return this.$message.warning('该组件禁止移动');\r\n }\r\n if (type) {\r\n if (\r\n this.mConfig[index - 1].name == 'search_box' ||\r\n this.mConfig[index - 1].name == 'nav_bar' ||\r\n this.mConfig[index - 1].name == 'home_comb'\r\n ) {\r\n return this.$message.warning('搜索框或选项卡或轮播搜索必须为顶部');\r\n }\r\n this.swapArray(this.mConfig, index - 1, index);\r\n } else {\r\n this.swapArray(this.mConfig, index, index + 1);\r\n }\r\n let obj = {};\r\n this.rConfig = [];\r\n obj.oldIndex = index;\r\n if (type) {\r\n obj.newIndex = index - 1;\r\n } else {\r\n obj.newIndex = index + 1;\r\n }\r\n this.mConfig.forEach((el, index) => {\r\n el.num = new Date().getTime() * 1000 + index;\r\n });\r\n let tempItem = JSON.parse(JSON.stringify(item));\r\n this.rConfig.push(tempItem);\r\n obj.element = item;\r\n obj.list = this.mConfig;\r\n if (type) {\r\n this.activeIndex = index - 1;\r\n } else {\r\n this.activeIndex = index + 1;\r\n }\r\n\r\n this.$store.commit('mobildConfig/SETCONFIGNAME', item.name);\r\n this.$store.commit('mobildConfig/defaultArraySort', obj);\r\n },\r\n // 组件添加\r\n addDomCon(item, type, index) {\r\n if (item.name == 'search_box') {\r\n if (this.isSearch) return this.$message.error('该组件只能添加一次');\r\n if (this.isComb) return this.$message.error('轮播搜索不能和搜索组件与选项卡组件同时存在');\r\n this.isSearch = true;\r\n }\r\n if (item.name == 'nav_bar') {\r\n if (this.isTab) return this.$message.error('该组件只能添加一次');\r\n if (this.isComb) return this.$message.error('轮播搜索不能和搜索组件与选项卡组件同时存在');\r\n this.isTab = true;\r\n }\r\n if (item.name == 'home_comb') {\r\n if (this.isComb) return this.$message.error('该组件只能添加一次');\r\n if (this.isSearch || this.isTab) return this.$message.error('轮播搜索不能和搜索组件与选项卡组件同时存在');\r\n this.isComb = true;\r\n }\r\n if (item.name == 'home_service') {\r\n if (this.isService) return this.$message.error('该组件只能添加一次');\r\n this.isService = true;\r\n }\r\n let obj = {};\r\n let timestamp = new Date().getTime() * 1000;\r\n item.num = `${timestamp}`;\r\n item.id = `id${timestamp}`;\r\n this.activeConfigName = item.name;\r\n let tempItem = JSON.parse(JSON.stringify(item));\r\n if (item.name == 'home_comb') {\r\n this.rConfig = [];\r\n this.mConfig.unshift(tempItem);\r\n this.activeIndex = 0;\r\n this.rConfig.push(tempItem);\r\n } else if (item.name == 'search_box') {\r\n this.rConfig = [];\r\n this.mConfig.unshift(tempItem);\r\n this.activeIndex = 0;\r\n this.rConfig.push(tempItem);\r\n } else if (item.name == 'nav_bar') {\r\n this.rConfig = [];\r\n if (this.mConfig[0] && this.mConfig[0].name === 'search_box') {\r\n this.mConfig.splice(1, 0, tempItem);\r\n this.activeIndex = 1;\r\n } else {\r\n this.mConfig.splice(0, 0, tempItem);\r\n this.activeIndex = 0;\r\n }\r\n this.rConfig.push(tempItem);\r\n } else {\r\n if (type) {\r\n this.rConfig = [];\r\n if (this.activeIndex == 0 && this.mConfig[1] && this.mConfig[1].name == 'nav_bar') {\r\n this.activeIndex = 2;\r\n } else {\r\n this.activeIndex = this.activeIndex >= 0 ? this.activeIndex + 1 : this.mConfig.length;\r\n }\r\n this.mConfig.splice(this.activeIndex, 0, tempItem);\r\n this.rConfig.push(tempItem);\r\n } else {\r\n this.mConfig.splice(index + 1, 0, tempItem);\r\n this.activeIndex = index;\r\n }\r\n }\r\n this.mConfig.forEach((el, index) => {\r\n el.num = new Date().getTime() * 1000 + index;\r\n });\r\n // 保存组件名称\r\n obj.element = item;\r\n obj.list = this.mConfig;\r\n this.$store.commit('mobildConfig/SETCONFIGNAME', item.name);\r\n this.$store.commit('mobildConfig/defaultArraySort', obj);\r\n },\r\n //中间页点击添加模块;\r\n bindAddDom(item, type, index) {\r\n let i = item;\r\n this.lConfig.forEach((j) => {\r\n if (item.name == j.name) {\r\n i = j;\r\n }\r\n });\r\n this.addDomCon(i, type, index);\r\n },\r\n //左边配置模块点击添加;\r\n addDom(item, type) {\r\n this.addDomCon(item, type);\r\n },\r\n // 点击显示相应的配置\r\n bindconfig(item, index) {\r\n this.rConfig = [];\r\n let tempItem = JSON.parse(JSON.stringify(item));\r\n this.rConfig.push(tempItem);\r\n this.activeIndex = index;\r\n this.$store.commit('mobildConfig/SETCONFIGNAME', item.name);\r\n },\r\n bindHide(item) {\r\n let obj = this.$store.state.mobildConfig.defaultArray;\r\n let num = this.rConfig[0].num;\r\n obj[num].isHide = !obj[num].isHide;\r\n this.$store.commit('mobildConfig/UPDATEARR', { num: num, val: obj[num] });\r\n },\r\n // 组件删除\r\n bindDelete(item, key) {\r\n if (item.name == 'search_box') {\r\n this.isSearch = false;\r\n }\r\n if (item.name == 'nav_bar') {\r\n this.isTab = false;\r\n }\r\n if (item.name == 'home_comb') {\r\n this.isComb = false;\r\n }\r\n if (item.name == 'home_service') {\r\n this.isService = false;\r\n }\r\n this.mConfig.splice(key, 1);\r\n this.rConfig.splice(0, 1);\r\n if (this.mConfig.length != key) {\r\n this.rConfig.push(this.mConfig[key]);\r\n } else {\r\n if (this.mConfig.length) {\r\n this.activeIndex = key - 1;\r\n this.rConfig.push(this.mConfig[key - 1]);\r\n } else {\r\n this.showTitle();\r\n }\r\n }\r\n // 删除第几个配置\r\n this.$store.commit('mobildConfig/DELETEARRAY', item);\r\n },\r\n // 组件返回\r\n config(data) {\r\n let propsObj = this.propsObj;\r\n propsObj.data = data;\r\n propsObj.name = this.activeConfigName;\r\n },\r\n addSort(arr, index1, index2) {\r\n arr[index1] = arr.splice(index2, 1, arr[index1])[0];\r\n return arr;\r\n },\r\n // 数组排序\r\n arraySort() {\r\n let tempArr = [];\r\n let basis = {\r\n title: '基础组件',\r\n list: [],\r\n isOpen: true,\r\n };\r\n let marketing = {\r\n title: '营销组件',\r\n list: [],\r\n isOpen: true,\r\n };\r\n let tool = {\r\n title: '工具组件',\r\n list: [],\r\n isOpen: true,\r\n };\r\n this.lConfig.map((el, index) => {\r\n if (el.type == 0) {\r\n basis.list.push(el);\r\n }\r\n if (el.type == 1) {\r\n marketing.list.push(el);\r\n }\r\n if (el.type == 2) {\r\n tool.list.push(el);\r\n }\r\n });\r\n tempArr.push(basis, marketing, tool);\r\n this.leftMenu = tempArr;\r\n },\r\n // toImage(val){\r\n // html2canvas(this.$refs.imgContainer,{\r\n // useCORS:true,\r\n // logging:true,\r\n // taintTest: false,\r\n // backgroundColor: null\r\n // }).then((canvas) => {\r\n // let imgUrl = canvas.toDataURL('image/jpeg');\r\n // this.diySaveDate(val,imgUrl)\r\n // });\r\n // },\r\n diySaveDate(val, num, type, save) {\r\n diyProSave(type ? 0 : this.pageId, {\r\n type: this.pageType || save,\r\n value: val,\r\n title: this.titleTxt,\r\n name: this.nameTxt || '模板',\r\n is_show: this.showTxt ? 1 : 0,\r\n is_bg_color: this.colorTxt ? 1 : 0,\r\n color_picker: this.colorPickerTxt,\r\n bg_pic: this.picUrlTxt,\r\n bg_tab_val: this.tabValTxt,\r\n is_bg_pic: this.picTxt ? 1 : 0,\r\n })\r\n .then((res) => {\r\n this.pageId = res.data.id;\r\n this.$message.success(res.msg);\r\n let that = this;\r\n this.nameModal = false;\r\n if (num == 2) {\r\n this.relLoading = false;\r\n setTimeout(() => {\r\n window.location.replace(this.$routeProStr + '/setting/pages/devise/0');\r\n }, 2000);\r\n } else {\r\n this.loading = false;\r\n }\r\n })\r\n .catch((res) => {\r\n this.relLoading = false;\r\n this.loading = false;\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n saveModal() {\r\n if (!this.saveName) return this.$message.warning('请先输入模板名称');\r\n this.saveConfig(1, this.saveName);\r\n },\r\n closeWindow() {\r\n this.$msgbox({\r\n title: '提示',\r\n message: '关闭页面前请先保存数据,未保存的话数据会丢失',\r\n showCancelButton: true,\r\n cancelButtonText: '取消',\r\n confirmButtonText: '确定',\r\n iconClass: 'el-icon-warning',\r\n confirmButtonClass: 'btn-custom-cancel',\r\n })\r\n .then(() => {\r\n setTimeout(() => {\r\n // this.saveConfig();\r\n window.close();\r\n }, 1000);\r\n })\r\n .catch(() => {});\r\n },\r\n // 保存配置\r\n saveConfig(num, type, save) {\r\n if (this.mConfig.length == 0) {\r\n return this.$message.error('暂未添加任何组件,保存失败!');\r\n }\r\n if (num == 1) {\r\n this.loading = true;\r\n } else {\r\n this.relLoading = true;\r\n }\r\n let val = this.$store.state.mobildConfig.defaultArray;\r\n if (!this.footActive) {\r\n let timestamp = new Date().getTime() * 1000;\r\n val[timestamp] = this.$store.state.mobildConfig.pageFooter;\r\n this.footActive = true;\r\n }\r\n this.$nextTick(() => {\r\n this.diySaveDate(val, num, type, save);\r\n });\r\n },\r\n // 获取默认配置\r\n getDefaultConfig() {\r\n diyProInfo(this.pageId, {\r\n type: 1,\r\n }).then(({ data }) => {\r\n let obj = {};\r\n let tempARR = [];\r\n this.$store.commit('mobildConfig/titleUpdata', data.info.title);\r\n this.$store.commit('mobildConfig/nameUpdata', data.info.name);\r\n this.$store.commit('mobildConfig/showUpdata', data.info.is_show);\r\n this.$store.commit('mobildConfig/colorUpdata', data.info.is_bg_color || 0);\r\n this.$store.commit('mobildConfig/picUpdata', data.info.is_bg_pic || 0);\r\n this.$store.commit('mobildConfig/pickerUpdata', data.info.color_picker || '#f5f5f5');\r\n this.$store.commit('mobildConfig/radioUpdata', data.info.bg_tab_val || 0);\r\n this.$store.commit('mobildConfig/picurlUpdata', data.info.bg_pic || '');\r\n this.diyStatus = data.info.status;\r\n let newArr = this.objToArr(data.info.value);\r\n\r\n function sortNumber(a, b) {\r\n return a.timestamp - b.timestamp;\r\n }\r\n newArr.sort(sortNumber);\r\n newArr.map((el, index) => {\r\n if (el.name == 'headerSerch') {\r\n this.isSearch = true;\r\n }\r\n if (el.name == 'tabNav') {\r\n this.isTab = true;\r\n }\r\n if (el.name == 'homeComb') {\r\n this.isComb = true;\r\n }\r\n if (el.name == 'customerService') {\r\n this.isService = true;\r\n }\r\n if (el.name == 'goodList') {\r\n // let storage = window.localStorage;\r\n // storage.setItem(el.timestamp, el.selectConfig.activeValue);\r\n }\r\n el.id = 'id' + el.timestamp;\r\n this.lConfig.map((item, j) => {\r\n if (el.name == item.defaultName) {\r\n item.num = el.timestamp;\r\n item.id = 'id' + el.timestamp;\r\n let tempItem = JSON.parse(JSON.stringify(item));\r\n tempARR.push(tempItem);\r\n obj[el.timestamp] = el;\r\n this.mConfig.push(tempItem);\r\n // 保存默认组件配置\r\n this.$store.commit('mobildConfig/ADDARRAY', {\r\n num: el.timestamp,\r\n val: el,\r\n });\r\n }\r\n });\r\n });\r\n\r\n let objs = newArr[newArr.length - 1];\r\n\r\n if (objs.name == 'pageFoot') {\r\n this.$store.commit('mobildConfig/footPageUpdata', objs);\r\n }\r\n this.showTitle();\r\n });\r\n },\r\n categoryList() {\r\n categoryList((res) => {\r\n this.category = res.data;\r\n });\r\n },\r\n // 重置\r\n reast() {\r\n if (this.pageId == 0) {\r\n this.$message.error('新增页面,无法重置');\r\n } else {\r\n this.$confirm('此操作将清空模板内容, 是否继续?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning',\r\n }).then((res) => {\r\n this.mConfig = [];\r\n this.rConfig = [];\r\n this.activeIndex = -99;\r\n this.getDefaultConfig();\r\n });\r\n }\r\n },\r\n },\r\n beforeDestroy() {\r\n this.$store.commit('mobildConfig/titleUpdata', '');\r\n this.$store.commit('mobildConfig/nameUpdata', '');\r\n this.$store.commit('mobildConfig/showUpdata', 1);\r\n this.$store.commit('mobildConfig/colorUpdata', 0);\r\n this.$store.commit('mobildConfig/picUpdata', 0);\r\n this.$store.commit('mobildConfig/pickerUpdata', '#f5f5f5');\r\n this.$store.commit('mobildConfig/radioUpdata', 0);\r\n this.$store.commit('mobildConfig/picurlUpdata', '');\r\n this.$store.commit('mobildConfig/SETEMPTY');\r\n },\r\n destroyed() {\r\n this.$store.commit('mobildConfig/titleUpdata', '');\r\n this.$store.commit('mobildConfig/nameUpdata', '');\r\n this.$store.commit('mobildConfig/showUpdata', 1);\r\n this.$store.commit('mobildConfig/colorUpdata', 0);\r\n this.$store.commit('mobildConfig/picUpdata', 0);\r\n this.$store.commit('mobildConfig/pickerUpdata', '#f5f5f5');\r\n this.$store.commit('mobildConfig/radioUpdata', 0);\r\n this.$store.commit('mobildConfig/picurlUpdata', '');\r\n this.$store.commit('mobildConfig/SETEMPTY');\r\n },\r\n};\r\n</script>\r\n<style>\r\n.el-main {\r\n padding: 0px !important;\r\n}\r\n</style>\r\n<style scoped>\r\n.header-title {\r\n background: var(--prev-color-primary);\r\n border-radius: 0;\r\n margin-bottom: 0;\r\n padding: 16px;\r\n}\r\n.ivu-page-header-title {\r\n color: #fff;\r\n font-size: 16px;\r\n}\r\n</style>\r\n<style scoped lang=\"scss\">\r\n::v-deep .el-card__body {\r\n padding: 0;\r\n}\r\n::v-deep {\r\n .icondel_1,\r\n .upload-box {\r\n cursor: pointer;\r\n }\r\n .el-checkbox,\r\n .el-radio {\r\n margin-bottom: 15px;\r\n margin-right: 15px;\r\n }\r\n}\r\n.c_label {\r\n margin-top: 0;\r\n}\r\n::v-deep .el-button--small {\r\n // border-radius: 0;\r\n border-radius: 4px;\r\n}\r\n.look,\r\n.look:hover,\r\n.look:focus,\r\n.look:active,\r\n.close,\r\n.close:hover,\r\n.close:focus,\r\n.close:active {\r\n background: var(--prev-color-primary);\r\n color: #fff;\r\n border-color: #fff;\r\n}\r\n\r\n.save,\r\n.save:hover,\r\n.save:active,\r\n.save:focus {\r\n background: #fff;\r\n color: var(--prev-color-primary);\r\n border-color: var(--prev-color-primary);\r\n}\r\n::v-deep .c_row-item {\r\n margin-bottom: 15px;\r\n}\r\n.ysize {\r\n background-size: 100%;\r\n}\r\n\r\n.fullsize {\r\n background-size: 100% 100%;\r\n}\r\n\r\n.repeat {\r\n background-repeat: repeat;\r\n}\r\n\r\n.noRepeat {\r\n background-repeat: no-repeat;\r\n}\r\n.fl_header {\r\n color: #fff;\r\n .f-title {\r\n position: relative;\r\n }\r\n .return {\r\n color: #fff;\r\n margin-right: 34px;\r\n margin-left: 5px;\r\n &::after {\r\n content: ' ';\r\n position: absolute;\r\n width: 1px;\r\n height: 16px;\r\n background-color: rgba(238, 238, 238, 0.5);\r\n left: 65px;\r\n top: 50%;\r\n margin-top: -8px;\r\n }\r\n }\r\n .iconfont {\r\n color: #fff;\r\n }\r\n .f_title {\r\n &:hover {\r\n .return {\r\n color: rgba(255, 255, 255, 0.8);\r\n }\r\n .iconfanhui {\r\n color: rgba(255, 255, 255, 0.8);\r\n }\r\n }\r\n .name {\r\n font-size: 16px;\r\n }\r\n .iconfont {\r\n margin-left: 10px;\r\n color: #fff;\r\n }\r\n }\r\n}\r\n.wrapper-con {\r\n position: relative;\r\n flex: 1;\r\n background: #f0f2f5;\r\n display: flex;\r\n justify-content: center;\r\n padding-top: 20px;\r\n height: 100%;\r\n .acticons {\r\n position: absolute;\r\n right: 20px;\r\n top: 20px;\r\n display: flex;\r\n flex-direction: column;\r\n z-index: 1;\r\n .el-button + .el-button {\r\n margin-left: 0;\r\n }\r\n }\r\n /* min-width 700px; */\r\n}\r\n.main .content-wrapper {\r\n padding: 0 !important;\r\n}\r\n.defaultData {\r\n /* margin-left 20px; */\r\n cursor: pointer;\r\n position: absolute;\r\n left: 50%;\r\n margin-left: 245px;\r\n\r\n .data {\r\n display: block;\r\n margin-top: 20px;\r\n color: #282828;\r\n background-color: #fff;\r\n width: 94px;\r\n text-align: center;\r\n height: 32px;\r\n border-radius: 3px;\r\n font-size: 12px;\r\n margin-left: 0 !important;\r\n }\r\n\r\n .data:hover {\r\n background-color: #2d8cf0;\r\n color: #fff;\r\n border: 0;\r\n }\r\n}\r\n\r\n.overflowy {\r\n margin-right: 4px;\r\n\r\n .picture {\r\n width: 379px;\r\n height: 20px;\r\n margin: 0 auto;\r\n background-color: #fff;\r\n }\r\n}\r\n\r\n.bnt {\r\n width: 80px !important;\r\n}\r\n\r\n/* 定义滑块 内阴影+圆角 */\r\n::-webkit-scrollbar-thumb {\r\n -webkit-box-shadow: inset 0 0 6px #fff;\r\n display: none;\r\n}\r\n\r\n.left:hover::-webkit-scrollbar-thumb,\r\n.right-box:hover::-webkit-scrollbar-thumb {\r\n display: block;\r\n}\r\n\r\n.contxt:hover ::-webkit-scrollbar-thumb {\r\n display: block;\r\n}\r\n\r\n::-webkit-scrollbar {\r\n width: 4px !important; /* 对垂直流动条有效 */\r\n}\r\n\r\n.scrollCon {\r\n overflow-y: scroll;\r\n overflow-x: hidden;\r\n}\r\n\r\n.scroll-box .position {\r\n display: block !important;\r\n height: 40px;\r\n text-align: center;\r\n line-height: 40px;\r\n border: 1px dashed var(--prev-color-primary);\r\n color: var(--prev-color-primary);\r\n background-color: #edf4fb;\r\n}\r\n\r\n.scroll-box .conter {\r\n display: none !important;\r\n}\r\n.conter {\r\n margin-top: 3px;\r\n}\r\n.dragClass {\r\n background-color: #fff;\r\n}\r\n\r\n.ivu-mt {\r\n display: flex;\r\n justify-content: space-between;\r\n margin-bottom: 10px;\r\n}\r\n\r\n.iconfont-diy {\r\n font-size: 24px;\r\n color: var(--prev-color-primary);\r\n}\r\n\r\n.diy-wrapper {\r\n max-width: 100%;\r\n min-width: 1100px;\r\n display: flex;\r\n justify-content: space-between;\r\n height: calc(100vh - 62px);\r\n .left {\r\n min-width: 300px;\r\n max-width: 300px;\r\n /* border 1px solid #DDDDDD */\r\n border-radius: 4px;\r\n height: 100%;\r\n\r\n .title-bar {\r\n display: flex;\r\n color: #333;\r\n border-bottom: 1px solid #eee;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n\r\n .title-item {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex: 1;\r\n height: 45px;\r\n\r\n &.on {\r\n color: var(--prev-color-primary);\r\n font-size: 14px;\r\n border-bottom: 1px solid var(--prev-color-primary);\r\n }\r\n }\r\n }\r\n\r\n .wrapper {\r\n padding: 15px;\r\n overflow-y: scroll;\r\n -webkit-overflow-scrolling: touch;\r\n\r\n .tips {\r\n display: flex;\r\n justify-content: space-between;\r\n padding-bottom: 15px;\r\n font-size: 13px;\r\n color: #000;\r\n cursor: pointer;\r\n\r\n .ivu-icon {\r\n color: #000;\r\n }\r\n }\r\n }\r\n\r\n .link-item {\r\n padding: 10px;\r\n border-bottom: 1px solid #f5f5f5;\r\n font-size: 12px;\r\n color: #323232;\r\n\r\n .name {\r\n font-size: 14px;\r\n color: var(--prev-color-primary);\r\n }\r\n .copy_btn {\r\n cursor: pointer;\r\n }\r\n\r\n .link-txt {\r\n margin-top: 2px;\r\n word-break: break-all;\r\n }\r\n\r\n .params {\r\n margin-top: 5px;\r\n color: #1cbe6b;\r\n word-break: break-all;\r\n\r\n .txt {\r\n color: #323232;\r\n }\r\n\r\n span {\r\n &:last-child i {\r\n display: none;\r\n color: red;\r\n }\r\n }\r\n }\r\n\r\n .lable {\r\n display: flex;\r\n margin-top: 5px;\r\n color: #999;\r\n\r\n p {\r\n flex: 1;\r\n word-break: break-all;\r\n }\r\n\r\n button {\r\n margin-left: 30px;\r\n width: 38px;\r\n }\r\n }\r\n }\r\n\r\n .dragArea.list-group {\r\n display: flex;\r\n flex-wrap: wrap;\r\n\r\n .list-group-item {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n width: 74px;\r\n height: 66px;\r\n margin-right: 17px;\r\n margin-bottom: 10px;\r\n font-size: 12px;\r\n color: #666;\r\n cursor: pointer;\r\n border-radius: 5px;\r\n text-align: center;\r\n\r\n &:hover {\r\n box-shadow: 0 0 5px 0 rgba(24, 144, 255, 0.3);\r\n border-right: 5px;\r\n transform: scale(1.1);\r\n transition: all 0.2s;\r\n }\r\n\r\n &:nth-child(3n) {\r\n margin-right: 0;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .content {\r\n position: relative;\r\n height: 100%;\r\n width: 100%;\r\n\r\n .page-foot {\r\n position: relative;\r\n width: 379px;\r\n margin: 0 auto 20px auto;\r\n\r\n .delete-box {\r\n display: none;\r\n position: absolute;\r\n left: -2px;\r\n top: 0;\r\n width: 383px;\r\n height: 100%;\r\n border: 2px dashed var(--prev-color-primary);\r\n padding: 10px 0;\r\n }\r\n\r\n &:hover,\r\n &.on {\r\n /* cursor: move; */\r\n .delete-box {\r\n /* display: block; */\r\n }\r\n }\r\n\r\n &.on {\r\n cursor: move;\r\n\r\n .delete-box {\r\n display: block;\r\n border: 2px solid var(--prev-color-primary);\r\n box-shadow: 0 0 10px 0 rgba(24, 144, 255, 0.3);\r\n }\r\n }\r\n }\r\n\r\n .page-title {\r\n position: relative;\r\n height: 35px;\r\n line-height: 35px;\r\n background: #fff;\r\n font-size: 15px;\r\n color: #333333;\r\n text-align: center;\r\n width: 379px;\r\n margin: 0 auto;\r\n\r\n .delete-box {\r\n display: none;\r\n position: absolute;\r\n left: -2px;\r\n top: 0;\r\n width: 383px;\r\n height: 100%;\r\n border: 2px dashed var(--prev-color-primary);\r\n padding: 10px 0;\r\n\r\n span {\r\n position: absolute;\r\n right: 0;\r\n bottom: 0;\r\n width: 32px;\r\n height: 16px;\r\n line-height: 16px;\r\n display: inline-block;\r\n text-align: center;\r\n font-size: 10px;\r\n color: #fff;\r\n background: rgba(0, 0, 0, 0.4);\r\n margin-left: 2px;\r\n cursor: pointer;\r\n z-index: 11;\r\n }\r\n }\r\n\r\n &:hover,\r\n &.on {\r\n /* cursor: move; */\r\n .delete-box {\r\n /* display: block; */\r\n }\r\n }\r\n\r\n &.on {\r\n cursor: move;\r\n\r\n .delete-box {\r\n display: block;\r\n border: 2px solid var(--prev-color-primary);\r\n box-shadow: 0 0 10px 0 rgba(24, 144, 255, 0.3);\r\n }\r\n }\r\n }\r\n\r\n .scroll-box {\r\n flex: 1;\r\n background-color: #fff;\r\n width: 379px;\r\n margin: 0 auto;\r\n padding-top: 1px;\r\n }\r\n\r\n .dragArea.list-group {\r\n width: 100%;\r\n height: 100%;\r\n\r\n .mConfig-item {\r\n position: relative;\r\n cursor: move;\r\n &.hide {\r\n &::before {\r\n position: absolute;\r\n content: '已隐藏';\r\n background: rgba(0, 0, 0, 0.5);\r\n width: 100%;\r\n height: 100%;\r\n z-index: 99;\r\n color: #fff;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n }\r\n .delete-name.on {\r\n background: var(--prev-color-primary-light-3);\r\n color: #fff;\r\n &::before {\r\n background: var(--prev-color-primary-light-3);\r\n }\r\n }\r\n .delete-name {\r\n position: absolute;\r\n top: 0;\r\n background: #fff;\r\n left: -100px;\r\n width: 86px;\r\n height: 32px;\r\n text-align: center;\r\n line-height: 32px;\r\n font-size: 13px;\r\n color: #666;\r\n border-radius: 3px;\r\n\r\n &::before {\r\n content: '';\r\n position: absolute;\r\n width: 10px;\r\n height: 10px;\r\n background: #fff;\r\n transform: rotate(45deg);\r\n top: 50%;\r\n right: -5px;\r\n margin-top: -5px;\r\n }\r\n }\r\n .delete-box {\r\n display: none;\r\n position: absolute;\r\n left: -2px;\r\n top: 0;\r\n width: 383px;\r\n height: 100%;\r\n border: 2px dashed var(--prev-color-primary);\r\n\r\n /* padding: 10px 0; */\r\n .handleType {\r\n position: absolute;\r\n right: -43px;\r\n top: 0;\r\n width: 36px;\r\n border-radius: 4px;\r\n background-color: var(--prev-color-primary);\r\n cursor: pointer;\r\n color: #fff;\r\n font-weight: bold;\r\n text-align: center;\r\n padding: 4px 0;\r\n .el-tooltip {\r\n background-color: inherit;\r\n color: inherit;\r\n }\r\n .iconfont {\r\n padding: 5px 0;\r\n\r\n &.on {\r\n opacity: 0.4;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &.on {\r\n cursor: move;\r\n\r\n .delete-box {\r\n display: block;\r\n border: 2px solid var(--prev-color-primary);\r\n box-shadow: 0 0 10px 0 rgba(24, 144, 255, 0.3);\r\n }\r\n }\r\n }\r\n\r\n .mConfig-item:hover {\r\n transform: scale(1.01);\r\n box-shadow: 0 0 10px 0 rgba(24, 144, 255, 0.3);\r\n transition: all 0.2s;\r\n }\r\n }\r\n }\r\n\r\n .right-box {\r\n max-width: 400px;\r\n min-width: 400px;\r\n height: 100%;\r\n border-radius: 4px;\r\n overflow: scroll;\r\n -webkit-overflow-scrolling: touch;\r\n\r\n ::v-deep .ivu-tabs-bar {\r\n margin-bottom: 16px;\r\n }\r\n\r\n .title-bar {\r\n width: 100%;\r\n height: 45px;\r\n line-height: 45px;\r\n padding-left: 24px;\r\n color: #000;\r\n border-radius: 4px;\r\n border-bottom: 1px solid #eee;\r\n font-size: 14px;\r\n }\r\n }\r\n\r\n ::-webkit-scrollbar {\r\n width: 6px;\r\n background-color: transparent;\r\n }\r\n\r\n ::-webkit-scrollbar-track {\r\n border-radius: 10px;\r\n }\r\n\r\n ::-webkit-scrollbar-thumb {\r\n background-color: #bfc1c4;\r\n }\r\n}\r\n\r\n.foot-box {\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n height: 80px;\r\n background: #fff;\r\n box-shadow: 0px -2px 4px 0px rgba(0, 0, 0, 0.03);\r\n\r\n button {\r\n width: 100px;\r\n height: 32px;\r\n font-size: 13px;\r\n\r\n &:first-child {\r\n margin-right: 20px;\r\n }\r\n }\r\n}\r\n\r\n::v-deep .ivu-scroll-loader {\r\n display: none;\r\n}\r\n\r\n::v-deep .ivu-card-body {\r\n width: 100%;\r\n padding: 0;\r\n height: calc(100vh - 73px);\r\n}\r\n\r\n.rbtn {\r\n position: absolute;\r\n right: 20px;\r\n}\r\n.code {\r\n position: relative;\r\n}\r\n\r\n.QRpic {\r\n width: 160px;\r\n height: 160px;\r\n\r\n img {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n}\r\n.contxt {\r\n display: flex;\r\n flex-direction: column;\r\n overflow: hidden;\r\n height: 100%;\r\n}\r\n\r\n.contxt:hover ::-webkit-scrollbar-thumb {\r\n display: block;\r\n}\r\n.iconfont-diy {\r\n font-size: 24px;\r\n color: var(--prev-color-primary);\r\n}\r\n.icon {\r\n width: 28px;\r\n height: 28px;\r\n // vertical-align: -0.15em;\r\n fill: currentColor;\r\n overflow: hidden;\r\n}\r\n</style>\r\n"],"mappings":"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","ignoreList":[]}]}
|