a6617299d002bcb9f8b97e7caad6e5e2.json 95 KB

1
  1. {"remainingRequest":"D:\\test\\ssi-satoken\\ui\\node_modules\\babel-loader\\lib\\index.js!D:\\test\\ssi-satoken\\ui\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\test\\ssi-satoken\\ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\test\\ssi-satoken\\ui\\src\\views\\sysManager\\userManager\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\test\\ssi-satoken\\ui\\src\\views\\sysManager\\userManager\\index.vue","mtime":1697615040526},{"path":"D:\\test\\ssi-satoken\\ui\\babel.config.js","mtime":1696909835000},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1697005520931},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\babel-loader\\lib\\index.js","mtime":1697005523218},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1697005520931},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\vue-loader\\lib\\index.js","mtime":1697005524089}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:InVzZSBzdHJpY3QiOwoKdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKCJEOi90ZXN0L3NzaS1zYXRva2VuL3VpL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdC5qcyIpLmRlZmF1bHQ7Ck9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsKICB2YWx1ZTogdHJ1ZQp9KTsKZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyIpOwp2YXIgX3JlZ2VuZXJhdG9yUnVudGltZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoIkQ6L3Rlc3Qvc3NpLXNhdG9rZW4vdWkvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvcmVnZW5lcmF0b3JSdW50aW1lLmpzIikpOwp2YXIgX2FzeW5jVG9HZW5lcmF0b3IyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKCJEOi90ZXN0L3NzaS1zYXRva2VuL3VpL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3IuanMiKSk7CnZhciBfbG9kYXNoID0gcmVxdWlyZSgibG9kYXNoIik7CnZhciBfc211dGlsID0gcmVxdWlyZSgiQC91dGlscy9zbXV0aWwiKTsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KdmFyIF9kZWZhdWx0ID0gewogIG5hbWU6ICJVc2VyIiwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgcGlja2VyT3B0aW9uczogewogICAgICAgIGRpc2FibGVkRGF0ZTogZnVuY3Rpb24gZGlzYWJsZWREYXRlKHRpbWUpIHsKICAgICAgICAgIHJldHVybiB0aW1lLmdldFRpbWUoKSA8IERhdGUubm93KCkgLSA4LjY0ZTc7CiAgICAgICAgfQogICAgICB9LAogICAgICBzeXNSb2xlOiAnJywKICAgICAgaWQ6IHVuZGVmaW5lZCwKICAgICAgdXNlcm5hbWU6IHVuZGVmaW5lZCwKICAgICAgbmlja25hbWU6IHVuZGVmaW5lZCwKICAgICAgaWRjYXJkOiB1bmRlZmluZWQsCiAgICAgIHBob25lbnVtYmVyOiB1bmRlZmluZWQsCiAgICAgIG1haWxib3g6IHVuZGVmaW5lZCwKICAgICAgc3RhdHVzOiAiMCIsCiAgICAgIHVzZXJ0eXBlOiAiMCIsCiAgICAgIHJlbWFyazogdW5kZWZpbmVkLAogICAgICBleHBEYXRlOiB1bmRlZmluZWQsCiAgICAgIC8vIOinkuiJsuihqOagvOaVsOaNrgogICAgICBqc3VzZXJpZDogJycsCiAgICAgIHJvbGVMaXN0OiBbXSwKICAgICAganN1c2VybmFtZTogJycsCiAgICAgIGpzbmlja25hbWU6ICcnLAogICAgICB1c2VyUm9sZUlkOiAnJywKICAgICAganN1c2VydHlwZTogJycsCiAgICAgIHN0YXR1c09wdGlvbnM6IFt7CiAgICAgICAgdmFsdWU6ICcwJywKICAgICAgICBsYWJlbDogJ+ato+W4uCcKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnMScsCiAgICAgICAgbGFiZWw6ICfplIHlrponCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJzInLAogICAgICAgIGxhYmVsOiAn5rOo6ZSAJwogICAgICB9XSwKICAgICAgdHlwZU9wdGlvbnM6IFt7CiAgICAgICAgdmFsdWU6ICcwJywKICAgICAgICBsYWJlbDogJ+euoeeQhuWRmCcKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnMScsCiAgICAgICAgbGFiZWw6ICfkuJrliqHnlKjmiLcnCiAgICAgIH1dLAogICAgICAvLyDpga7nvanlsYIKICAgICAgbG9hZGluZzogdHJ1ZSwKICAgICAgc2hvd1RhYmxlOiB0cnVlLAogICAgICAvLyDpgInkuK3mlbDnu4QKICAgICAgaWRzOiBbXSwKICAgICAgLy8g6Z2e5Y2V5Liq56aB55SoCiAgICAgIHNpbmdsZTogdHJ1ZSwKICAgICAgLy8g6Z2e5aSa5Liq56aB55SoCiAgICAgIG11bHRpcGxlOiB0cnVlLAogICAgICBjdXJyZW50UGFnZTogMSwKICAgICAgcGFnZVNpemU6IDEwLAogICAgICAvLyDmgLvmnaHmlbAKICAgICAgdG90YWw6IDAsCiAgICAgIC8vIOeUqOaIt+ihqOagvOaVsOaNrgogICAgICB1c2VyTGlzdDogW10sCiAgICAgIGxvY2t0aXRsZTogIumJtOWIq+aTjeS9nCIsCiAgICAgIC8vIOW8ueWHuuWxguagh+mimAogICAgICB0aXRsZTogIiIsCiAgICAgIC8vIOinkuiJsuWIhumFjeW8ueWHuuWxguagh+mimAogICAgICBqc3RpdGxlOiAiIiwKICAgICAgLy8g5piv5ZCm5pi+56S65by55Ye65bGCCiAgICAgIG9wZW46IGZhbHNlLAogICAgICBsb2Nrb3BlbjogZmFsc2UsCiAgICAgIC8vIOinkuiJsuaYr+WQpuaYvuekuuW8ueWHuuWxggogICAgICBqc29wZW46IGZhbHNlLAogICAgICAvLyDpu5jorqTlr4bnoIEKICAgICAgaW5pdFBhc3N3b3JkOiB1bmRlZmluZWQsCiAgICAgIC8vIOinkuiJsumAiemhuQogICAgICByb2xlT3B0aW9uczogW10sCiAgICAgIC8vIOihqOWNleWPguaVsAogICAgICBmb3JtOiB7fSwKICAgICAgbG9ja2Zvcm06IHt9LAogICAgICAvLyDmn6Xor6Llj4LmlbAKICAgICAgcXVlcnlQYXJhbXM6IHsKICAgICAgICB1c2VybmFtZTogdW5kZWZpbmVkLAogICAgICAgIHBob25lbnVtYmVyOiB1bmRlZmluZWQsCiAgICAgICAgc3RhdHVzOiB1bmRlZmluZWQKICAgICAgfSwKICAgICAgbWVudUV4cGFuZDogZmFsc2UsCiAgICAgIC8vIOiPnOWNleWIl+ihqAogICAgICBtZW51T3B0aW9uczogW10sCiAgICAgIGRlZmF1bHRQcm9wczogewogICAgICAgIGNoaWxkcmVuOiAiY2hpbGRyZW4iLAogICAgICAgIGxhYmVsOiAibGFiZWwiCiAgICAgIH0sCiAgICAgIGVkaXQ6IGZhbHNlLAogICAgICAvLyDooajljZXmoKHpqowKICAgICAgcnVsZXM6IHsKICAgICAgICB1c2VybmFtZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIueUqOaIt+i0puWPt+S4jeiDveS4uuepuiIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9LCB7CiAgICAgICAgICBtaW46IDUsCiAgICAgICAgICBtYXg6IDIwLAogICAgICAgICAgbWVzc2FnZTogJ+eUqOaIt+i0puWPt+mVv+W6puW/hemhu+S7i+S6jiA1IOWSjCAyMCDkuYvpl7QnLAogICAgICAgICAgdHJpZ2dlcjogJ2JsdXInCiAgICAgICAgfV0sCiAgICAgICAgbmlja25hbWU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLnlKjmiLflp5PlkI3kuI3og73kuLrnqboiLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfSwgewogICAgICAgICAgbWluOiAyLAogICAgICAgICAgbWF4OiAzMCwKICAgICAgICAgIG1lc3NhZ2U6ICfnlKjmiLflp5PlkI3plb/luqblv4Xpobvku4vkuo4gMiDlkowgMzAg5LmL6Ze0JywKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJwogICAgICAgIH1dLAogICAgICAgIGlkY2FyZDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIui6q+S7veivgeWPt+eggeS4jeiDveS4uuepuiIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9LCB7CiAgICAgICAgICBtaW46IDE1LAogICAgICAgICAgbWF4OiAxOCwKICAgICAgICAgIG1lc3NhZ2U6ICfouqvku73or4Hlj7for7fovpPlhaUxNeS9jeaIluiAhTE45L2NJywKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJwogICAgICAgIH1dLAogICAgICAgIG1haWxib3g6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLpgq7nrrHkuI3og73kuLrnqboiLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfSwgewogICAgICAgICAgdHlwZTogImVtYWlsIiwKICAgICAgICAgIG1lc3NhZ2U6ICLor7fovpPlhaXmraPnoa7nmoTpgq7nrrHlnLDlnYAiLAogICAgICAgICAgdHJpZ2dlcjogWyJibHVyIiwgImNoYW5nZSJdCiAgICAgICAgfV0sCiAgICAgICAgcGhvbmVudW1iZXI6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLmiYvmnLrlj7fnoIHkuI3og73kuLrnqboiLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfSwgewogICAgICAgICAgcGF0dGVybjogL14xWzN8NHw1fDZ8N3w4fDldWzAtOV1cZHs4fSQvLAogICAgICAgICAgbWVzc2FnZTogIuivt+i+k+WFpeato+ehrueahOaJi+acuuWPt+eggSIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9XSwKICAgICAgICBwYXNzd29yZDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuWvhueggeS4jeiDveS4uuepuiIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9LCB7CiAgICAgICAgICBtaW46IDgsCiAgICAgICAgICBtYXg6IDIwLAogICAgICAgICAgbWVzc2FnZTogIumVv+W6puWcqCA4IOWIsCAyMCDkuKrlrZfnrKYiLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfV0KICAgICAgfQogICAgfTsKICB9LAogIHdhdGNoOiB7fSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgdGhpcy5nZXRMaXN0KCk7CiAgfSwKICBtZXRob2RzOiB7CiAgICAvLyDmoJHmnYPpmZDvvIjlsZXlvIAv5oqY5Y+g77yJCiAgICBoYW5kbGVDaGVja2VkVHJlZUV4cGFuZDogZnVuY3Rpb24gaGFuZGxlQ2hlY2tlZFRyZWVFeHBhbmQodmFsdWUsIHR5cGUpIHsKICAgICAgaWYgKHR5cGUgPT0gJ21lbnUnKSB7CiAgICAgICAgdmFyIHRyZWVMaXN0ID0gdGhpcy5tZW51T3B0aW9uczsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRyZWVMaXN0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB0aGlzLiRyZWZzLm1lbnUuc3RvcmUubm9kZXNNYXBbdHJlZUxpc3RbaV0uaWRdLmV4cGFuZGVkID0gdmFsdWU7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgc2V0Um93Q2xhc3M6IGZ1bmN0aW9uIHNldFJvd0NsYXNzKF9yZWYpIHsKICAgICAgdmFyIHJvdyA9IF9yZWYucm93LAogICAgICAgIHJvd0luZGV4ID0gX3JlZi5yb3dJbmRleDsKICAgICAgaWYgKHJvdy5zaWduc3RyID09PSAnMScpIHsKICAgICAgICByZXR1cm4gImJhY2tncm91bmQ6ICNGRkVGRDUiOwogICAgICB9CiAgICB9LAogICAgLy8g5rOo6ZSA5pON5L2cCiAgICBoYW5kbGVMb2dPZmY6IGZ1bmN0aW9uIGhhbmRsZUxvZ09mZigpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICAgIHZhciBfc2VsZWN0RGF0YSA9IHRoaXMuJHJlZnMudXNlclRhYmxlLmdldFJhZGlvUmVjb3JkKHRydWUpOwogICAgICBpZiAoX3NlbGVjdERhdGEgPT0gbnVsbCkgewogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeiusOW9lSEnCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChfc2VsZWN0RGF0YS5pZCA9PSAxKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICBtZXNzYWdlOiAn5YaF572u55So5oi35LiN6IO95rOo6ZSAIScKICAgICAgICB9KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKF9zZWxlY3REYXRhLnN0YXR1cyA9PSAyKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICBtZXNzYWdlOiAn5bey5rOo6ZSA55qE6LSm5Y+35LiN6IO95YaN5qyh5rOo6ZSAIScKICAgICAgICB9KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhpcy4kcHJvbXB0KCfor7fovpPlhaXnmbvlvZXlr4bnoIEnLCAn6Ym05Yir5pON5L2cJywgewogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICBpbnB1dFR5cGU6ICdwYXNzd29yZCcsCiAgICAgICAgLy8gY3VzdG9tQ2xhc3M6J25vLWF1dG9maWxsLXB3ZCcsCiAgICAgICAgaW5wdXRWYWxpZGF0b3I6IGZ1bmN0aW9uIGlucHV0VmFsaWRhdG9yKHZhbCkgewogICAgICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwubGVuZ3RoIDwgMSB8fCB2YWwubGVuZ3RoID4gMjApIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgaW5wdXRFcnJvck1lc3NhZ2U6ICfkuI3og73kuLrnqbos5pyA5aSa5Y+v5b2V5YWlMjDkuKrlrZfnrKYnLAogICAgICAgIGJlZm9yZUNsb3NlOiBmdW5jdGlvbiBiZWZvcmVDbG9zZShhY3Rpb24sIGluc3RhbmNlLCBkb25lKSB7CiAgICAgICAgICBpZiAoYWN0aW9uID09PSAiY29uZmlybSIpIHsKICAgICAgICAgICAgaW5zdGFuY2UuJHJlZnNbImNvbmZpcm0iXS4kZWwub25jbGljayA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgZSA9IGUgfHwgd2luZG93LmV2ZW50OwogICAgICAgICAgICAgIGlmIChlLmRldGFpbCAhPSAwKSB7CiAgICAgICAgICAgICAgICBkb25lKCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KCk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBkb25lKCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9KS50aGVuKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBfcmVmMyA9ICgwLCBfYXN5bmNUb0dlbmVyYXRvcjIuZGVmYXVsdCkoIC8qI19fUFVSRV9fKi8oMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoX3JlZjIpIHsKICAgICAgICAgIHZhciB2YWx1ZTsKICAgICAgICAgIHJldHVybiAoMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgdmFsdWUgPSBfcmVmMi52YWx1ZTsKICAgICAgICAgICAgICAgIF90aGlzMi5kb0xvZ29mZihfc2VsZWN0RGF0YSwgdmFsdWUpOwogICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZSk7CiAgICAgICAgfSkpOwogICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gpIHsKICAgICAgICAgIHJldHVybiBfcmVmMy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICAgIH0oKSkuY2F0Y2goZnVuY3Rpb24gKGUpIHt9KTsKICAgIH0sCiAgICAvKioNCiAgICAgKiDms6jplIDmj5DkuqQNCiAgICAgKi8KICAgIGRvTG9nb2ZmOiAoMCwgX2xvZGFzaC5kZWJvdW5jZSkoIC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgIHZhciBfcmVmNCA9ICgwLCBfYXN5bmNUb0dlbmVyYXRvcjIuZGVmYXVsdCkoIC8qI19fUFVSRV9fKi8oMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKF9zZWxlY3REYXRhLCBhZ2FpblB3ZCkgewogICAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICAgIHZhciBwYXJhbTsKICAgICAgICByZXR1cm4gKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBwYXJhbSA9IHsKICAgICAgICAgICAgICAgIGlkOiBfc2VsZWN0RGF0YS5pZAogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiB0aGlzLiRheGlvcy5wb3N0KCcvc3lzVXNlckNvbnRyb2xsZXIvbG9nT2ZmVXNlcj9hZ2FpblB3ZD0nICsgYWdhaW5Qd2QsIHRoaXMuJHFzLnN0cmluZ2lmeShwYXJhbSkpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgX3RoaXMzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+azqOmUgOaIkOWKn++8gScpOwogICAgICAgICAgICAgICAgX3RoaXMzLmdldExpc3QoKTsKICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgIF90aGlzMy5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMiwgdGhpcyk7CiAgICAgIH0pKTsKICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeDIsIF94MykgewogICAgICAgIHJldHVybiBfcmVmNC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICB9OwogICAgfSgpLCA1MDApLAogICAgLy8g5YiX6KGo54q25oCB5qC85byP5YyWCiAgICBzdGF0dXNGb3JtYXQ6IGZ1bmN0aW9uIHN0YXR1c0Zvcm1hdChfcmVmNSkgewogICAgICB2YXIgY2VsbFZhbHVlID0gX3JlZjUuY2VsbFZhbHVlOwogICAgICB2YXIgYmVsb25nVG8gPSAn5pyq55+l55qE57G75Z6LJzsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnN0YXR1c09wdGlvbnMubGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAoY2VsbFZhbHVlID09ICIwIikgewogICAgICAgICAgYmVsb25nVG8gPSAi5q2j5bi4IjsKICAgICAgICB9IGVsc2UgaWYgKGNlbGxWYWx1ZSA9PSAiMSIpIHsKICAgICAgICAgIGJlbG9uZ1RvID0gIumUgeWumiI7CiAgICAgICAgfSBlbHNlIGlmIChjZWxsVmFsdWUgPT0gIjIiKSB7CiAgICAgICAgICBiZWxvbmdUbyA9ICLms6jplIAiOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gYmVsb25nVG87CiAgICB9LAogICAgLy8g5YiX6KGo54q25oCB5qC85byP5YyWCiAgICBzZnNoOiBmdW5jdGlvbiBzZnNoKF9yZWY2KSB7CiAgICAgIHZhciBjZWxsVmFsdWUgPSBfcmVmNi5jZWxsVmFsdWU7CiAgICAgIHZhciBiZWxvbmdUbyA9ICflkKYnOwogICAgICBpZiAoY2VsbFZhbHVlID09ICIxIikgewogICAgICAgIGJlbG9uZ1RvID0gIuaYryI7CiAgICAgIH0KICAgICAgcmV0dXJuIGJlbG9uZ1RvOwogICAgfSwKICAgIC8vIOWIl+ihqOeKtuaAgeagvOW8j+WMlgogICAgdHlwZUZvcm1hdDogZnVuY3Rpb24gdHlwZUZvcm1hdChfcmVmNykgewogICAgICB2YXIgY2VsbFZhbHVlID0gX3JlZjcuY2VsbFZhbHVlOwogICAgICB2YXIgYmVsb25nVG8gPSAn5pyq55+l55qE57G75Z6LJzsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnR5cGVPcHRpb25zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKGNlbGxWYWx1ZSA9PSAiMCIpIHsKICAgICAgICAgIGJlbG9uZ1RvID0gIueuoeeQhuWRmCI7CiAgICAgICAgfSBlbHNlIGlmIChjZWxsVmFsdWUgPT0gIjEiKSB7CiAgICAgICAgICBiZWxvbmdUbyA9ICLkuJrliqHnlKjmiLciOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gYmVsb25nVG87CiAgICB9LAogICAgLyoqIOaQnOe0ouaMiemSruaTjeS9nCAqLwogICAgaGFuZGxlUXVlcnk6ICgwLCBfbG9kYXNoLmRlYm91bmNlKShmdW5jdGlvbiAoKSB7CiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxOwogICAgICB0aGlzLnBhZ2VTaXplID0gMTA7CiAgICAgIHRoaXMuZ2V0TGlzdCgpOwogICAgfSwgMTAwMCksCiAgICAvKiog5p+l6K+i55So5oi35YiX6KGoICovZ2V0TGlzdDogZnVuY3Rpb24gZ2V0TGlzdCgpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIHJldHVybiAoMCwgX2FzeW5jVG9HZW5lcmF0b3IyLmRlZmF1bHQpKCAvKiNfX1BVUkVfXyovKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMygpIHsKICAgICAgICB2YXIgc2VhcmNoUGFyYW1zOwogICAgICAgIHJldHVybiAoMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF90aGlzNC5sb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICBzZWFyY2hQYXJhbXMgPSB7CiAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogX3RoaXM0LmN1cnJlbnRQYWdlLAogICAgICAgICAgICAgICAgcGFnZVNpemU6IF90aGlzNC5wYWdlU2l6ZSwKICAgICAgICAgICAgICAgIHVzZXJuYW1lOiBfdGhpczQucXVlcnlQYXJhbXMudXNlcm5hbWUsCiAgICAgICAgICAgICAgICBwaG9uZW51bWJlcjogX3RoaXM0LnF1ZXJ5UGFyYW1zLnBob25lbnVtYmVyLAogICAgICAgICAgICAgICAgc3RhdHVzOiBfdGhpczQucXVlcnlQYXJhbXMuc3RhdHVzCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDQ7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNC4kYXhpb3MuZ2V0KCcvc3lzVXNlckNvbnRyb2xsZXIvZ2V0QWxsJywgewogICAgICAgICAgICAgICAgcGFyYW1zOiBzZWFyY2hQYXJhbXMKICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgIF90aGlzNC51c2VyTGlzdCA9IHJlcy5kYXRhOwogICAgICAgICAgICAgICAgX3RoaXM0LnRvdGFsID0gcmVzLmRhdGEubGVuZ3RoOwogICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnJlY29yZHMgPT0gJycpIHsKICAgICAgICAgICAgICAgICAgX3RoaXM0LnNob3dUYWJsZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgX3RoaXM0LnNob3dUYWJsZSA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfdGhpczQubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgICAgICAgICAgX3RoaXM0LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgIC8vIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZXJyb3IpCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMyk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOeUqOaIt+eKtuaAgeS/ruaUuQogICAgaGFuZGxlU3RhdHVzQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVTdGF0dXNDaGFuZ2Uocm93KSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICB2YXIgdGV4dCA9IHJvdy5zdGF0dXMgPT09ICIwIiA/ICLlkK/nlKgiIDogIuWBnOeUqCI7CiAgICAgIHRoaXMuJG1vZGFsLmNvbmZpcm0oJ+ehruiupOimgSInICsgdGV4dCArICciIicgKyByb3cudXNlck5hbWUgKyAnIueUqOaIt+WQl++8nycpLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiBjaGFuZ2VVc2VyU3RhdHVzKHJvdy51c2VySWQsIHJvdy5zdGF0dXMpOwogICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICBfdGhpczUuJG1vZGFsLm1zZ1N1Y2Nlc3ModGV4dCArICLmiJDlip8iKTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkgewogICAgICAgIHJvdy5zdGF0dXMgPSByb3cuc3RhdHVzID09PSAiMCIgPyAiMSIgOiAiMCI7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOWPlua2iOaMiemSrgogICAgY2FuY2VsOiBmdW5jdGlvbiBjYW5jZWwoKSB7CiAgICAgIHRoaXMuZ2V0TGlzdCgpOwogICAgICB0aGlzLm9wZW4gPSBmYWxzZTsKICAgICAgdGhpcy5yZXNldCgpOwogICAgfSwKICAgIC8vIOinkuiJsuWPlua2iOaMiemSrgogICAganNjYW5jZWw6IGZ1bmN0aW9uIGpzY2FuY2VsKCkgewogICAgICB0aGlzLmpzb3BlbiA9IGZhbHNlOwogICAgICB0aGlzLnVzZXJSb2xlSWQgPSAnJzsKICAgICAgdGhpcy5tZW51T3B0aW9ucyA9IFtdOwogICAgfSwKICAgIC8vIOihqOWNlemHjee9rgogICAgcmVzZXQ6IGZ1bmN0aW9uIHJlc2V0KCkgewogICAgICB0aGlzLmVkaXQgPSBmYWxzZTsKICAgICAgdGhpcy5mb3JtID0gewogICAgICAgIGlkOiB1bmRlZmluZWQsCiAgICAgICAgdXNlcm5hbWU6IHVuZGVmaW5lZCwKICAgICAgICBuaWNrbmFtZTogdW5kZWZpbmVkLAogICAgICAgIGlkY2FyZDogdW5kZWZpbmVkLAogICAgICAgIHBob25lbnVtYmVyOiB1bmRlZmluZWQsCiAgICAgICAgbWFpbGJveDogdW5kZWZpbmVkLAogICAgICAgIHN0YXR1czogIjAiLAogICAgICAgIHVzZXJ0eXBlOiAiMCIsCiAgICAgICAgcmVtYXJrOiB1bmRlZmluZWQsCiAgICAgICAgZXhwRGF0ZTogdW5kZWZpbmVkCiAgICAgIH07CiAgICAgIGlmICh0aGlzLiRyZWZzWyJmb3JtIl0pIHsKICAgICAgICB0aGlzLiRyZWZzWyJmb3JtIl0uY2xlYXJWYWxpZGF0ZSgpOwogICAgICB9CiAgICB9LAogICAgLyoqIOmHjee9ruaMiemSruaTjeS9nCAqL3Jlc2V0UXVlcnk6IGZ1bmN0aW9uIHJlc2V0UXVlcnkoKSB7CiAgICAgIHRoaXMucmVzZXRGb3JtKCJxdWVyeUZvcm0iKTsKICAgIH0sCiAgICAvKiog5paw5aKe5oyJ6ZKu5pON5L2cICovaGFuZGxlQWRkOiBmdW5jdGlvbiBoYW5kbGVBZGQoKSB7CiAgICAgIHRoaXMucmVzZXQoKTsKICAgICAgdGhpcy5lZGl0ID0gZmFsc2U7CiAgICAgIHRoaXMub3BlbiA9IHRydWU7CiAgICAgIHRoaXMudGl0bGUgPSAi5re75Yqg55So5oi3IjsKICAgICAgLy8gdGhpcy5mb3JtLnBhc3N3b3JkID0gdGhpcy5pbml0UGFzc3dvcmQ7CiAgICB9LAoKICAgIC8qKiDmj5DkuqTmjInpkq4gKi8KICAgIHN1Ym1pdEZvcm06ICgwLCBfbG9kYXNoLmRlYm91bmNlKShmdW5jdGlvbiAoKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICB0aGlzLiRyZWZzWyJmb3JtIl0udmFsaWRhdGUoIC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9yZWY4ID0gKDAsIF9hc3luY1RvR2VuZXJhdG9yMi5kZWZhdWx0KSggLyojX19QVVJFX18qLygwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTYodmFsaWQpIHsKICAgICAgICAgIHJldHVybiAoMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU2JChfY29udGV4dDYpIHsKICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ2LnByZXYgPSBfY29udGV4dDYubmV4dCkgewogICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIGlmICh2YWxpZCkgewogICAgICAgICAgICAgICAgICBpZiAoX3RoaXM2LmZvcm0uaWQgIT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM2LiRwcm9tcHQoJ+ivt+i+k+WFpeeZu+W9leWvhueggScsICfpibTliKvmk43kvZwnLCB7CiAgICAgICAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICAgICAgICAgICAgICAgIGlucHV0VHlwZTogJ3Bhc3N3b3JkJywKICAgICAgICAgICAgICAgICAgICAgIC8vIGN1c3RvbUNsYXNzOiduby1hdXRvZmlsbC1wd2QnLAogICAgICAgICAgICAgICAgICAgICAgaW5wdXRWYWxpZGF0b3I6IGZ1bmN0aW9uIGlucHV0VmFsaWRhdG9yKHZhbCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbC5sZW5ndGggPCAxIHx8IHZhbC5sZW5ndGggPiAyMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgIGlucHV0RXJyb3JNZXNzYWdlOiAn5LiN6IO95Li656m6LOacgOWkmuWPr+W9leWFpTIw5Liq5a2X56ymJywKICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZUNsb3NlOiBmdW5jdGlvbiBiZWZvcmVDbG9zZShhY3Rpb24sIGluc3RhbmNlLCBkb25lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3Rpb24gPT09ICJjb25maXJtIikgewogICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLiRyZWZzWyJjb25maXJtIl0uJGVsLm9uY2xpY2sgPSBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGUgfHwgd2luZG93LmV2ZW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuZGV0YWlsICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KS50aGVuKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgdmFyIF9yZWYxMCA9ICgwLCBfYXN5bmNUb0dlbmVyYXRvcjIuZGVmYXVsdCkoIC8qI19fUFVSRV9fKi8oMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU0KF9yZWY5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTQkKF9jb250ZXh0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NC5wcmV2ID0gX2NvbnRleHQ0Lm5leHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBfcmVmOS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXM2LiRheGlvcy5wb3N0KCcvc3lzVXNlckNvbnRyb2xsZXIvdXBkYXRlVXNlcj9hZ2FpblB3ZD0nICsgdmFsdWUsIF90aGlzNi5mb3JtKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpczYuJG1lc3NhZ2Uuc3VjY2Vzcygn5L+u5pS555So5oi35oiQ5YqfJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM2Lm9wZW4gPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpczYucmVzZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpczYuZ2V0TGlzdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNi5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNi5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LCBfY2FsbGVlNCk7CiAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94NSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZjEwLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0oKSkuY2F0Y2goZnVuY3Rpb24gKGUpIHt9KTsKICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBfdGhpczYuJHByb21wdCgn6K+36L6T5YWl55m75b2V5a+G56CBJywgJ+mJtOWIq+aTjeS9nCcsIHsKICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywKICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgICAgICAgICAgICAgICAgaW5wdXRUeXBlOiAncGFzc3dvcmQnLAogICAgICAgICAgICAgICAgICAgICAgLy8gY3VzdG9tQ2xhc3M6J25vLWF1dG9maWxsLXB3ZCcsCiAgICAgICAgICAgICAgICAgICAgICBpbnB1dFZhbGlkYXRvcjogZnVuY3Rpb24gaW5wdXRWYWxpZGF0b3IodmFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsLmxlbmd0aCA8IDEgfHwgdmFsLmxlbmd0aCA+IDIwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgaW5wdXRFcnJvck1lc3NhZ2U6ICfkuI3og73kuLrnqbos5pyA5aSa5Y+v5b2V5YWlMjDkuKrlrZfnrKYnLAogICAgICAgICAgICAgICAgICAgICAgYmVmb3JlQ2xvc2U6IGZ1bmN0aW9uIGJlZm9yZUNsb3NlKGFjdGlvbiwgaW5zdGFuY2UsIGRvbmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGlvbiA9PT0gImNvbmZpcm0iKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuJHJlZnNbImNvbmZpcm0iXS4kZWwub25jbGljayA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZSB8fCB3aW5kb3cuZXZlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5kZXRhaWwgIT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pLnRoZW4oIC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgX3JlZjEyID0gKDAsIF9hc3luY1RvR2VuZXJhdG9yMi5kZWZhdWx0KSggLyojX19QVVJFX18qLygwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTUoX3JlZjExKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTUkKF9jb250ZXh0NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NS5wcmV2ID0gX2NvbnRleHQ1Lm5leHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBfcmVmMTEudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNi4kYXhpb3MucG9zdCgnL3N5c1VzZXJDb250cm9sbGVyL2FkZFVzZXI/YWdhaW5Qd2Q9JyArIHZhbHVlLCBfdGhpczYuZm9ybSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlLnN1Y2Nlc3MoJ+a3u+WKoOeUqOaIt+aIkOWKnycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNi5vcGVuID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM2LnJlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM2LmdldExpc3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpczYubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLiRtZXNzYWdlLmVycm9yKGVycm9yKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNi5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NS5zdG9wKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LCBfY2FsbGVlNSk7CiAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94NikgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZjEyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0oKSkuY2F0Y2goZnVuY3Rpb24gKGUpIHt9KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ni5zdG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sIF9jYWxsZWU2KTsKICAgICAgICB9KSk7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeDQpIHsKICAgICAgICAgIHJldHVybiBfcmVmOC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICAgIH0oKSk7CiAgICB9LCAxMDAwKSwKICAgIC8qKiDkv67mlLnmjInpkq7mk43kvZwgKi9oYW5kbGVVcGRhdGU6IGZ1bmN0aW9uIGhhbmRsZVVwZGF0ZSgpIHsKICAgICAgdGhpcy5yZXNldCgpOwogICAgICB2YXIgX3NlbGVjdERhdGEgPSB0aGlzLiRyZWZzLnVzZXJUYWJsZS5nZXRSYWRpb1JlY29yZCh0cnVlKTsKICAgICAgaWYgKF9zZWxlY3REYXRhID09IG51bGwpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICfor7fpgInmi6norrDlvZUhJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpZiAoX3NlbGVjdERhdGEuaWQgPT0gMSkgewogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgbWVzc2FnZTogJ+WGhee9rueUqOaIt+S4jeiDveS/ruaUuSEnCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChfc2VsZWN0RGF0YS5zdGF0dXMgPT0gMikgewogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgbWVzc2FnZTogJ+azqOmUgOeahOi0puWPt+S4jeiDveaTjeS9nCEnCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIF9zZWxlY3REYXRhLnBhc3N3b3JkID0gJyc7CiAgICAgIHRoaXMuZm9ybSA9IF9zZWxlY3REYXRhOwogICAgICB0aGlzLm9wZW4gPSB0cnVlOwogICAgICB0aGlzLnRpdGxlID0gIuS/ruaUueeUqOaItyI7CiAgICAgIHRoaXMuZWRpdCA9IHRydWU7CiAgICB9LAogICAgLy8g5Y+W5raI5oyJ6ZKuCiAgICBsb2NrZm9ybWNhbmNlbDogZnVuY3Rpb24gbG9ja2Zvcm1jYW5jZWwoKSB7CiAgICAgIHRoaXMubG9ja29wZW4gPSBmYWxzZTsKICAgICAgdGhpcy5sb2NrZm9ybSA9IHt9OwogICAgfSwKICAgIHN1YmxvY2tmb3JtOiBmdW5jdGlvbiBzdWJsb2NrZm9ybSgpIHsKICAgICAgaWYgKHRoaXMubG9ja2Zvcm0uZXhwRGF0ZSA9PSBudWxsIHx8IHRoaXMubG9ja2Zvcm0uZXhwRGF0ZSA9PSB1bmRlZmluZWQpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICfor7fpgInmi6nmiKrmraLml6XmnJ8hJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpZiAodGhpcy5sb2NrZm9ybS5wYXNzd29yZCA9PSBudWxsIHx8IHRoaXMubG9ja2Zvcm0ucGFzc3dvcmQgPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWl55m75b2V5a+G56CBIScKICAgICAgICB9KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdmFyIF9zZWxlY3REYXRhID0gdGhpcy4kcmVmcy51c2VyVGFibGUuZ2V0UmFkaW9SZWNvcmQodHJ1ZSk7CiAgICAgIHRoaXMuZG9SZWxvY2soX3NlbGVjdERhdGEsIHRoaXMubG9ja2Zvcm0ucGFzc3dvcmQsIHRoaXMubG9ja2Zvcm0uZXhwRGF0ZSk7CiAgICB9LAogICAgLyoqIOino+mUgeaMiemSruaTjeS9nCAqL2hhbmRsZVJlbG9jazogZnVuY3Rpb24gaGFuZGxlUmVsb2NrKCkgewogICAgICB2YXIgX3NlbGVjdERhdGEgPSB0aGlzLiRyZWZzLnVzZXJUYWJsZS5nZXRSYWRpb1JlY29yZCh0cnVlKTsKICAgICAgaWYgKF9zZWxlY3REYXRhID09IG51bGwpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICfor7fpgInmi6norrDlvZUhJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpZiAoX3NlbGVjdERhdGEuc3RhdHVzID09IDIpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICfms6jplIDnmoTotKblj7fkuI3og73mk43kvZwhJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpZiAoX3NlbGVjdERhdGEuc3RhdHVzICE9PSAnMScpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICflj6rog73lr7njgJDplIHlrprjgJHnirbmgIHnmoTov5vooYzop6PplIEhJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLmRvUmVsb2NrKF9zZWxlY3REYXRhKTsKICAgIH0sCiAgICAvKioNCiAgICAgKiDop6PplIHmj5DkuqQNCiAgICAgKi8KICAgIGRvUmVsb2NrOiAoMCwgX2xvZGFzaC5kZWJvdW5jZSkoIC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgIHZhciBfcmVmMTMgPSAoMCwgX2FzeW5jVG9HZW5lcmF0b3IyLmRlZmF1bHQpKCAvKiNfX1BVUkVfXyovKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNyhfc2VsZWN0RGF0YSkgewogICAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICAgIHZhciBwYXJhbTsKICAgICAgICByZXR1cm4gKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNyQoX2NvbnRleHQ3KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDcucHJldiA9IF9jb250ZXh0Ny5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBwYXJhbSA9IHsKICAgICAgICAgICAgICAgIGlkOiBfc2VsZWN0RGF0YS5pZAogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX2NvbnRleHQ3Lm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiB0aGlzLiRheGlvcy5wb3N0KCcvc3lzVXNlckNvbnRyb2xsZXIvcmVsb2NrVXNlcicsIHRoaXMuJHFzLnN0cmluZ2lmeShwYXJhbSkpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgX3RoaXM3LiRtZXNzYWdlLnN1Y2Nlc3MoJ+ino+mUgeaIkOWKnycpOwogICAgICAgICAgICAgICAgX3RoaXM3LmdldExpc3QoKTsKICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgIF90aGlzNy5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ3LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNywgdGhpcyk7CiAgICAgIH0pKTsKICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeDcpIHsKICAgICAgICByZXR1cm4gX3JlZjEzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgIH07CiAgICB9KCksIDEwMDApLAogICAgLyoqDQogICAgICog6KeS6Imy57G75Z6L5pS55Y+Y5pe25pu05pS55p2D6ZmQ5YiX6KGoDQogICAgICogQHBhcmFtIHJvd1JvbGVJZA0KICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHVua25vd24+fQ0KICAgICAqLwogICAgZ2V0TWVudTogZnVuY3Rpb24gZ2V0TWVudShyb3dSb2xlSWQpIHsKICAgICAgdmFyIGEgPSB0aGlzLiRheGlvczsKICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBfcmVmMTQgPSAoMCwgX2FzeW5jVG9HZW5lcmF0b3IyLmRlZmF1bHQpKCAvKiNfX1BVUkVfXyovKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlOChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgIHZhciBwYXJhbTE7CiAgICAgICAgICByZXR1cm4gKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlOCQoX2NvbnRleHQ4KSB7CiAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0OC5wcmV2ID0gX2NvbnRleHQ4Lm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBwYXJhbTEgPSB7CiAgICAgICAgICAgICAgICAgIHJvbGVJZDogcm93Um9sZUlkCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgX2NvbnRleHQ4Lm5leHQgPSAzOwogICAgICAgICAgICAgICAgcmV0dXJuIGEuZ2V0KCcvc3lzTWVudUNvbnRyb2xsZXIvcm9sZU1lbnVUcmVlc2VsZWN0Rm9yVXNlcicsIHsKICAgICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbTEKICAgICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgICBfdGhpcy5tZW51T3B0aW9ucyA9IHJlcy5kYXRhLm1lbnVzOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ4LnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZTgpOwogICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94OCwgX3g5KSB7CiAgICAgICAgICByZXR1cm4gX3JlZjE0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSgpKS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCfojrflj5bnlKjmiLfop5LoibLlh7rplJknICsgZXJyb3IpOwogICAgICB9KTsKICAgIH0sCiAgICBnZXRVc2VyUm9sZTogZnVuY3Rpb24gZ2V0VXNlclJvbGUodXNlcmlkKSB7CiAgICAgIHZhciBhID0gdGhpcy4kYXhpb3M7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSggLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICB2YXIgX3JlZjE1ID0gKDAsIF9hc3luY1RvR2VuZXJhdG9yMi5kZWZhdWx0KSggLyojX19QVVJFX18qLygwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTkocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICB2YXIgdXNlclJvbGVQYXJhbXMsIHBhcmFtMTsKICAgICAgICAgIHJldHVybiAoMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU5JChfY29udGV4dDkpIHsKICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ5LnByZXYgPSBfY29udGV4dDkubmV4dCkgewogICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIHVzZXJSb2xlUGFyYW1zID0gewogICAgICAgICAgICAgICAgICB1c2VySWQ6IHVzZXJpZAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIF9jb250ZXh0OS5uZXh0ID0gMzsKICAgICAgICAgICAgICAgIHJldHVybiBhLmdldCgnL3N5c1VzZXJDb250cm9sbGVyL2dldFVzZXJSb2xlJywgewogICAgICAgICAgICAgICAgICBwYXJhbXM6IHVzZXJSb2xlUGFyYW1zCiAgICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhID09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgIF90aGlzLnVzZXJSb2xlSWQgPSAnJzsKICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBfdGhpcy51c2VyUm9sZUlkID0gcmVzLmRhdGEucm9sZUlkOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIC8vIOi/lOWbnnVzZXJSb2xl5a+56LGhCiAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzLmRhdGEpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgaWYgKCEoX3RoaXMudXNlclJvbGVJZCAhPSAnJykpIHsKICAgICAgICAgICAgICAgICAgX2NvbnRleHQ5Lm5leHQgPSA3OwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHBhcmFtMSA9IHsKICAgICAgICAgICAgICAgICAgcm9sZUlkOiBfdGhpcy51c2VyUm9sZUlkCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgX2NvbnRleHQ5Lm5leHQgPSA3OwogICAgICAgICAgICAgICAgcmV0dXJuIGEuZ2V0KCcvc3lzTWVudUNvbnRyb2xsZXIvcm9sZU1lbnVUcmVlc2VsZWN0Rm9yVXNlcicsIHsKICAgICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbTEKICAgICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgICBfdGhpcy5tZW51T3B0aW9ucyA9IHJlcy5kYXRhLm1lbnVzOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ5LnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZTkpOwogICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94MTAsIF94MTEpIHsKICAgICAgICAgIHJldHVybiBfcmVmMTUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICB9OwogICAgICB9KCkpLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ+iOt+WPlueUqOaIt+inkuiJsuWHuumUmScgKyBlcnJvcik7CiAgICAgIH0pOwogICAgfSwKICAgIGdldFJvbGVCeVR5cGU6IGZ1bmN0aW9uIGdldFJvbGVCeVR5cGUodXNlcnR5cGUpIHsKICAgICAgdmFyIF90aGlzOCA9IHRoaXM7CiAgICAgIC8vIOagueaNrueUqOaIt+exu+Wei+iOt+WPluinkuiJsuWIl+ihqAogICAgICB2YXIgYSA9IHRoaXMuJGF4aW9zOwogICAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgICByZXR1cm4gbmV3IFByb21pc2UoIC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9yZWYxNiA9ICgwLCBfYXN5bmNUb0dlbmVyYXRvcjIuZGVmYXVsdCkoIC8qI19fUFVSRV9fKi8oMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUxMChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgIHZhciBzZWFyY2hQYXJhbXM7CiAgICAgICAgICByZXR1cm4gKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMTAkKF9jb250ZXh0MTApIHsKICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQxMC5wcmV2ID0gX2NvbnRleHQxMC5uZXh0KSB7CiAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgc2VhcmNoUGFyYW1zID0gewogICAgICAgICAgICAgICAgICB1c2VydHlwZTogdXNlcnR5cGUKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBfY29udGV4dDEwLm5leHQgPSAzOwogICAgICAgICAgICAgICAgcmV0dXJuIGEuZ2V0KCcvc3lzUm9sZUNvbnRyb2xsZXIvZ2V0Um9sZUJ5VHlwZScsIHsKICAgICAgICAgICAgICAgICAgcGFyYW1zOiBzZWFyY2hQYXJhbXMKICAgICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgICAvLyDov5Tlm57op5LoibLliJfooagKICAgICAgICAgICAgICAgICAgX3RoaXMucm9sZUxpc3QgPSByZXMuZGF0YTsKICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXMuZGF0YSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDEwLnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZTEwKTsKICAgICAgICB9KSk7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeDEyLCBfeDEzKSB7CiAgICAgICAgICByZXR1cm4gX3JlZjE2LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSgpKS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICBfdGhpczgubG9hZGluZyA9IGZhbHNlOwogICAgICAgIF90aGlzOC4kbWVzc2FnZS5lcnJvcihlcnJvcik7CiAgICAgIH0pOwogICAgfSwKICAgIC8qKiDliIbphY3op5LoibLmk43kvZwgKi8KICAgIGhhbmRsZUF1dGhSb2xlOiAoMCwgX2xvZGFzaC5kZWJvdW5jZSkoZnVuY3Rpb24gKHJvdykgewogICAgICBpZiAocm93LnN0YXR1cyA9PSAnMicpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICfms6jplIDnmoTotKblj7fkuI3og73mk43kvZwhJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLmpzdXNlcmlkID0gcm93LmlkOwogICAgICB0aGlzLmpzdXNlcm5hbWUgPSByb3cudXNlcm5hbWU7CiAgICAgIHRoaXMuanNuaWNrbmFtZSA9IHJvdy5uaWNrbmFtZTsKICAgICAgdGhpcy5nZXRSb2xlQnlUeXBlKHJvdy51c2VydHlwZSk7CiAgICAgIHRoaXMuZ2V0VXNlclJvbGUodGhpcy5qc3VzZXJpZCk7CiAgICAgIHRoaXMuanNvcGVuID0gdHJ1ZTsKICAgICAgdGhpcy50aXRsZSA9ICLliIbphY3op5LoibIiOwogICAgfSwgMTAwMCksCiAgICAvKiog6KeS6Imy5YiG6YWN5o+Q5Lqk5oyJ6ZKuICovCiAgICBqc3N1Ym1pdEZvcm06ICgwLCBfbG9kYXNoLmRlYm91bmNlKSggLyojX19QVVJFX18qLygwLCBfYXN5bmNUb0dlbmVyYXRvcjIuZGVmYXVsdCkoIC8qI19fUFVSRV9fKi8oMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUxMigpIHsKICAgICAgdmFyIF90aGlzOSA9IHRoaXM7CiAgICAgIHJldHVybiAoMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUxMiQoX2NvbnRleHQxMikgewogICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0MTIucHJldiA9IF9jb250ZXh0MTIubmV4dCkgewogICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICBpZiAodGhpcy51c2VyUm9sZUlkICE9ICcnKSB7CiAgICAgICAgICAgICAgdGhpcy4kcHJvbXB0KCfor7fovpPlhaXnmbvlvZXlr4bnoIEnLCAn6Ym05Yir5pON5L2cJywgewogICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICAgICAgICBpbnB1dFR5cGU6ICdwYXNzd29yZCcsCiAgICAgICAgICAgICAgICAvLyBjdXN0b21DbGFzczonbm8tYXV0b2ZpbGwtcHdkJywKICAgICAgICAgICAgICAgIGlucHV0VmFsaWRhdG9yOiBmdW5jdGlvbiBpbnB1dFZhbGlkYXRvcih2YWwpIHsKICAgICAgICAgICAgICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwubGVuZ3RoIDwgMSB8fCB2YWwubGVuZ3RoID4gMjApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBpbnB1dEVycm9yTWVzc2FnZTogJ+S4jeiDveS4uuepuizmnIDlpJrlj6/lvZXlhaUyMOS4quWtl+espicsCiAgICAgICAgICAgICAgICBiZWZvcmVDbG9zZTogZnVuY3Rpb24gYmVmb3JlQ2xvc2UoYWN0aW9uLCBpbnN0YW5jZSwgZG9uZSkgewogICAgICAgICAgICAgICAgICBpZiAoYWN0aW9uID09PSAiY29uZmlybSIpIHsKICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4kcmVmc1siY29uZmlybSJdLiRlbC5vbmNsaWNrID0gZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICAgIGUgPSBlIHx8IHdpbmRvdy5ldmVudDsKICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmRldGFpbCAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KCk7CiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZG9uZSgpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSkudGhlbiggLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHZhciBfcmVmMTkgPSAoMCwgX2FzeW5jVG9HZW5lcmF0b3IyLmRlZmF1bHQpKCAvKiNfX1BVUkVfXyovKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMTEoX3JlZjE4KSB7CiAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSwgcGFyYW07CiAgICAgICAgICAgICAgICAgIHJldHVybiAoMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUxMSQoX2NvbnRleHQxMSkgewogICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0MTEucHJldiA9IF9jb250ZXh0MTEubmV4dCkgewogICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IF9yZWYxOC52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8g5o+Q5Lqk5ZCO5Y+w6KeS6Imy5YiG6YWNCiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtID0gewogICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJZDogX3RoaXM5LmpzdXNlcmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGVJZDogX3RoaXM5LnVzZXJSb2xlSWQKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocGFyYW0pOwogICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDExLm5leHQgPSA1OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXM5LiRheGlvcy5wb3N0KCcvc3lzVXNlckNvbnRyb2xsZXIvYXV0aFJvbGU/YWdhaW5Qd2Q9JyArIHZhbHVlLCBfdGhpczkuJHFzLnN0cmluZ2lmeShwYXJhbSkpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzOS4kbWVzc2FnZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAn5o6I5p2D5oiQ5YqfJwogICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzOS5qc2NhbmNlbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzOS5nZXRMaXN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzOS5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0MTEuc3RvcCgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSwgX2NhbGxlZTExKTsKICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gxNCkgewogICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZjE5LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIH0oKSkuY2F0Y2goZnVuY3Rpb24gKGUpIHt9KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup6KeS6Imy57G75Z6LJwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICByZXR1cm4gX2NvbnRleHQxMi5zdG9wKCk7CiAgICAgICAgfQogICAgICB9LCBfY2FsbGVlMTIsIHRoaXMpOwogICAgfSkpLCAxMDAwKQogIH0KfTsKZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7"},{"version":3,"names":["_lodash","require","_smutil","name","data","pickerOptions","disabledDate","time","getTime","Date","now","sysRole","id","undefined","username","nickname","idcard","phonenumber","mailbox","status","usertype","remark","expDate","jsuserid","roleList","jsusername","jsnickname","userRoleId","jsusertype","statusOptions","value","label","typeOptions","loading","showTable","ids","single","multiple","currentPage","pageSize","total","userList","locktitle","title","jstitle","open","lockopen","jsopen","initPassword","roleOptions","form","lockform","queryParams","menuExpand","menuOptions","defaultProps","children","edit","rules","required","message","trigger","min","max","type","pattern","password","watch","created","getList","methods","handleCheckedTreeExpand","treeList","i","length","$refs","menu","store","nodesMap","expanded","setRowClass","_ref","row","rowIndex","signstr","handleLogOff","_this2","_selectData","userTable","getRadioRecord","$message","$prompt","confirmButtonText","cancelButtonText","inputType","inputValidator","val","inputErrorMessage","beforeClose","action","instance","done","$el","onclick","e","window","event","detail","then","_ref3","_asyncToGenerator2","default","_regeneratorRuntime2","mark","_callee","_ref2","wrap","_callee$","_context","prev","next","doLogoff","stop","_x","apply","arguments","catch","debounce","_ref4","_callee2","againPwd","_this3","param","_callee2$","_context2","$axios","post","$qs","stringify","res","success","error","_x2","_x3","statusFormat","_ref5","cellValue","belongTo","sfsh","_ref6","typeFormat","_ref7","handleQuery","_this4","_callee3","searchParams","_callee3$","_context3","get","params","records","handleStatusChange","_this5","text","$modal","confirm","userName","changeUserStatus","userId","msgSuccess","cancel","reset","jscancel","clearValidate","resetQuery","resetForm","handleAdd","submitForm","_this6","validate","_ref8","_callee6","valid","_callee6$","_context6","_ref10","_callee4","_ref9","_callee4$","_context4","_x5","_ref12","_callee5","_ref11","_callee5$","_context5","_x6","_x4","handleUpdate","lockformcancel","sublockform","doRelock","handleRelock","_ref13","_callee7","_this7","_callee7$","_context7","_x7","getMenu","rowRoleId","a","_this","Promise","_ref14","_callee8","resolve","reject","param1","_callee8$","_context8","roleId","menus","_x8","_x9","console","getUserRole","userid","_ref15","_callee9","userRoleParams","_callee9$","_context9","_x10","_x11","getRoleByType","_this8","_ref16","_callee10","_callee10$","_context10","_x12","_x13","handleAuthRole","jssubmitForm","_callee12","_this9","_callee12$","_context12","_ref19","_callee11","_ref18","_callee11$","_context11","log","_x14","exports","_default"],"sources":["src/views/sysManager/userManager/index.vue"],"sourcesContent":["<template>\r\n <div class=\"app-container\">\r\n <el-row :gutter=\"24\">\r\n <!--用户数据-->\r\n <el-col :span=\"24\" :xs=\"24\">\r\n <el-form :model=\"queryParams\" ref=\"queryForm\" size=\"small\" :inline=\"true\" label-width=\"68px\">\r\n <el-form-item label=\"用户账号\" prop=\"username\">\r\n <el-input\r\n maxlength=\"20\"\r\n v-model=\"queryParams.username\"\r\n placeholder=\"请输入用户账号\"\r\n clearable\r\n style=\"width: 240px\"\r\n />\r\n </el-form-item>\r\n <el-form-item label=\"手机号码\" prop=\"phonenumber\">\r\n <el-input\r\n maxlength=\"11\"\r\n v-model=\"queryParams.phonenumber\"\r\n placeholder=\"请输入手机号码\"\r\n clearable\r\n style=\"width: 240px\"\r\n />\r\n </el-form-item>\r\n <el-form-item label=\"用户状态\" prop=\"status\">\r\n <el-select\r\n v-model=\"queryParams.status\"\r\n placeholder=\"请选择用户状态\"\r\n clearable\r\n style=\"width: 240px\"\r\n >\r\n <el-option\r\n v-for=\"item in statusOptions\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\">\r\n </el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button type=\"primary\" icon=\"el-icon-search\" size=\"mini\" @click=\"handleQuery\">搜索</el-button>\r\n <el-button icon=\"el-icon-refresh\" size=\"mini\" @click=\"resetQuery\">重置</el-button>\r\n </el-form-item>\r\n </el-form>\r\n <el-row :gutter=\"10\" class=\"mb8\">\r\n <el-col :span=\"1.5\">\r\n <el-button\r\n type=\"primary\"\r\n plain\r\n icon=\"el-icon-plus\"\r\n size=\"mini\"\r\n @click=\"handleAdd\"\r\n v-hasPermi=\"['system:user:add']\"\r\n >新增\r\n </el-button>\r\n </el-col>\r\n <el-col :span=\"1.5\">\r\n <el-button\r\n type=\"success\"\r\n plain\r\n icon=\"el-icon-edit\"\r\n size=\"mini\"\r\n @click=\"handleUpdate\"\r\n v-hasPermi=\"['system:user:edit']\"\r\n >修改\r\n </el-button>\r\n </el-col>\r\n<!-- <el-col :span=\"1.5\">-->\r\n<!-- <el-button-->\r\n<!-- type=\"danger\"-->\r\n<!-- plain-->\r\n<!-- icon=\"el-icon-delete\"-->\r\n<!-- size=\"mini\"-->\r\n<!-- @click=\"handleDelete\"-->\r\n<!-- v-hasPermi=\"['system:user:remove']\"-->\r\n<!-- >删除-->\r\n<!-- </el-button>-->\r\n<!-- </el-col>-->\r\n <el-col :span=\"1.5\">\r\n <el-button\r\n type=\"danger\"\r\n plain\r\n icon=\"el-icon-delete\"\r\n size=\"mini\"\r\n @click=\"handleLogOff\"\r\n v-hasPermi=\"['system:user:logoff']\"\r\n >注销\r\n </el-button>\r\n </el-col>\r\n <el-col :span=\"1.5\">\r\n <el-button\r\n type=\"success\"\r\n plain\r\n icon=\"el-icon-unlock\"\r\n size=\"mini\"\r\n @click=\"handleRelock\"\r\n v-hasPermi=\"['system:user:relock']\"\r\n >解锁\r\n </el-button>\r\n </el-col>\r\n </el-row>\r\n <div style=\"padding-top: 10px\">\r\n <vxe-table\r\n :row-style=\"setRowClass\"\r\n ref=\"userTable\"\r\n align=\"center\"\r\n :loading=\"loading\"\r\n class=\"mytable-style\"\r\n auto-resize\r\n border\r\n resizable\r\n highlight-current-row\r\n show-overflow\r\n max-height=\"700\"\r\n :radio-config=\"{trigger: 'row'}\"\r\n :data=\"userList.slice((currentPage-1)*pageSize,currentPage*pageSize)\"\r\n >\r\n <vxe-column type=\"radio\" width=\"60\"/>\r\n <vxe-table-column field=\"username\" title=\"用户账号\"/>\r\n <vxe-table-column field=\"nickname\" title=\"用户姓名\"/>\r\n <vxe-table-column field=\"idcard\" title=\"身份证号码\"/>\r\n <vxe-table-column field=\"mailbox\" title=\"用户邮箱\"/>\r\n <vxe-table-column field=\"phonenumber\" title=\"手机号码\"/>\r\n <vxe-table-column field=\"status\" title=\"用户状态\" :formatter=\"statusFormat\"/>\r\n <vxe-table-column title=\"操作\" width=\"320\">\r\n <template slot-scope=\"scope\">\r\n <el-button\r\n v-if=\"scope.row.id !== 1\"\r\n size=\"mini\"\r\n type=\"text\"\r\n icon=\"el-icon-circle-check\"\r\n @click=\"handleAuthRole(scope.row)\"\r\n v-hasPermi=\"['system:user:role']\"\r\n >分配角色\r\n </el-button>\r\n </template>\r\n </vxe-table-column>\r\n </vxe-table>\r\n\r\n <vxe-pager\r\n v-show=\"showTable\"\r\n perfect\r\n :current-page.sync=\"currentPage\"\r\n :page-size.sync=\"pageSize\"\r\n :total=\"total\"\r\n :page-sizes=\"[10,50,100]\"\r\n :layouts=\"['PrevJump', 'PrevPage','JumpNumber', 'NextPage', 'NextJump', 'Sizes', 'FullJump', 'Total']\"\r\n >\r\n </vxe-pager>\r\n </div>\r\n </el-col>\r\n </el-row>\r\n\r\n <!-- 添加或修改用户配置对话框 -->\r\n <el-dialog :title=\"title\" :visible.sync=\"open\" width=\"750px\" append-to-body>\r\n <el-form ref=\"form\" :model=\"form\" :rules=\"rules\" width=\"730px\" label-width=\"100px\">\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"用户账号\" prop=\"username\">\r\n <el-input id=\"un\" ref=\"un\" style=\"width: 220px\" v-model=\"form.username\" placeholder=\"请输入用户账号\"\r\n maxlength=\"20\" :disabled=\"edit\"/>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"密码\" prop=\"password\">\r\n <el-input style=\"width: 220px\" v-model=\"form.password\" placeholder=\"请输入密码\" type=\"password\" show-password/>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n<!-- <el-form-item label=\"用户类型\">-->\r\n<!-- <el-select style=\"width: 220px\" v-model=\"form.usertype\" placeholder=\"请选择类型\" :disabled=\"edit\">-->\r\n<!-- <el-option-->\r\n<!-- v-for=\"item in typeOptions\"-->\r\n<!-- :key=\"item.value\"-->\r\n<!-- :label=\"item.label\"-->\r\n<!-- :value=\"item.value\"-->\r\n<!-- ></el-option>-->\r\n<!-- </el-select>-->\r\n<!-- </el-form-item>-->\r\n <el-form-item label=\"身份证号码\" prop=\"idcard\">\r\n <el-input style=\"width: 220px\" v-model=\"form.idcard\" placeholder=\"请输入身份证号码\" maxlength=\"18\" :disabled=\"edit\"/>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"用户姓名\" prop=\"nickname\">\r\n <el-input style=\"width: 220px\" v-model=\"form.nickname\" placeholder=\"请输入用户姓名\" maxlength=\"30\"/>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"手机号码\" prop=\"phonenumber\">\r\n <el-input style=\"width: 220px\" v-model=\"form.phonenumber\" placeholder=\"请输入手机号码\" maxlength=\"11\"/>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"用户邮箱\" prop=\"mailbox\">\r\n <el-input style=\"width: 220px\" v-model=\"form.mailbox\" placeholder=\"请输入邮箱\" maxlength=\"50\"/>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n <div slot=\"footer\" class=\"dialog-footer\">\r\n <el-button type=\"primary\" @click=\"submitForm\">确 定</el-button>\r\n <el-button @click=\"cancel\">取 消</el-button>\r\n </div>\r\n </el-dialog>\r\n\r\n <!-- 解锁用户对于临时账号需要弹出页面选择截止日期 -->\r\n <el-dialog :title=\"locktitle\" :visible.sync=\"lockopen\" width=\"430px\" append-to-body>\r\n <el-form ref=\"lockform\" :model=\"lockform\" width=\"430px\" label-width=\"120px\">\r\n <font size=\"3\" color=\"red\">解锁临时账号,需要重置账号截止日期!</font>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"账号截止日期\">\r\n <el-date-picker\r\n style=\"width: 220px\"\r\n value-format=\"yyyy-MM-dd\"\r\n v-model=\"lockform.expDate\"\r\n type=\"date\"\r\n placeholder=\"请选择账号截止日期\"\r\n :picker-options=\"pickerOptions\">\r\n </el-date-picker>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"输入登录密码\">\r\n <el-input\r\n style=\"width: 220px\"\r\n v-model=\"lockform.password\"\r\n type=\"password\"\r\n auto-complete=\"off\"\r\n placeholder=\"密码\"\r\n maxlength=\"20\"\r\n />\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n <div slot=\"footer\" class=\"dialog-footer\">\r\n <el-button type=\"primary\" @click=\"sublockform\">确 定</el-button>\r\n <el-button @click=\"lockformcancel\">取 消</el-button>\r\n </div>\r\n </el-dialog>\r\n\r\n <!-- 分配角色对话框 -->\r\n <el-dialog :title=\"jstitle\" :visible.sync=\"jsopen\" width=\"650px\" append-to-body>\r\n <el-form width=\"630px\" label-width=\"80px\">\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"用户账号\">\r\n <el-input style=\"width: 220px\" v-model=\"jsusername\"\r\n maxlength=\"20\" :disabled=\"true\"/>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"用户姓名\">\r\n <el-input style=\"width: 220px\" v-model=\"jsnickname\" maxlength=\"30\" :disabled=\"true\"/>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"角色类型\" style=\"width: 100px\">\r\n <el-select style=\"width: 220px\" v-model=\"userRoleId\" placeholder=\"请选择类型\" :disabled=\"edit\" @change=\"getMenu(userRoleId)\">\r\n <el-option\r\n v-for=\"item in roleList\"\r\n :key=\"item.roleId\"\r\n :label=\"item.roleName\"\r\n :value=\"item.roleId\"\r\n ></el-option>\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"菜单权限\">\r\n <el-checkbox v-model=\"menuExpand\" @change=\"handleCheckedTreeExpand($event, 'menu')\">展开/折叠</el-checkbox>\r\n <el-tree\r\n class=\"tree-border\"\r\n :data=\"menuOptions\"\r\n ref=\"menu\"\r\n node-key=\"id\"\r\n empty-text=\"无数据,请选择角色类型!\"\r\n :props=\"defaultProps\"\r\n ></el-tree>\r\n </el-form-item>\r\n\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n\r\n <div slot=\"footer\" class=\"dialog-footer\">\r\n <el-button type=\"primary\" @click=\"jssubmitForm\">确 定</el-button>\r\n <el-button @click=\"jscancel\">取 消</el-button>\r\n </div>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport {debounce} from 'lodash'\r\nimport {userinfoDecrypt} from \"@/utils/smutil\";\r\n\r\nexport default {\r\n name: \"User\",\r\n data() {\r\n return {\r\n pickerOptions:{\r\n disabledDate(time){\r\n return time.getTime()<Date.now()-8.64e7\r\n }\r\n },\r\n sysRole:'',\r\n id: undefined,\r\n username: undefined,\r\n nickname: undefined,\r\n idcard: undefined,\r\n phonenumber: undefined,\r\n mailbox: undefined,\r\n status: \"0\",\r\n usertype: \"0\",\r\n remark: undefined,\r\n expDate: undefined,\r\n // 角色表格数据\r\n jsuserid: '',\r\n roleList: [],\r\n jsusername: '',\r\n jsnickname: '',\r\n userRoleId: '',\r\n jsusertype: '',\r\n statusOptions: [\r\n {value: '0', label: '正常'},\r\n {value: '1', label: '锁定'},\r\n {value: '2', label: '注销'}\r\n ],\r\n typeOptions: [\r\n {value: '0', label: '管理员'},\r\n {value: '1', label: '业务用户'}\r\n ],\r\n // 遮罩层\r\n loading: true,\r\n showTable: true,\r\n // 选中数组\r\n ids: [],\r\n // 非单个禁用\r\n single: true,\r\n // 非多个禁用\r\n multiple: true,\r\n currentPage: 1,\r\n pageSize: 10,\r\n // 总条数\r\n total: 0,\r\n // 用户表格数据\r\n userList: [],\r\n locktitle:\"鉴别操作\",\r\n // 弹出层标题\r\n title: \"\",\r\n // 角色分配弹出层标题\r\n jstitle: \"\",\r\n // 是否显示弹出层\r\n open: false,\r\n lockopen:false,\r\n // 角色是否显示弹出层\r\n jsopen: false,\r\n // 默认密码\r\n initPassword: undefined,\r\n // 角色选项\r\n roleOptions: [],\r\n // 表单参数\r\n form: {},\r\n lockform:{},\r\n // 查询参数\r\n queryParams: {\r\n username: undefined,\r\n phonenumber: undefined,\r\n status: undefined\r\n },\r\n menuExpand: false,\r\n // 菜单列表\r\n menuOptions: [],\r\n defaultProps: {\r\n children: \"children\",\r\n label: \"label\"\r\n },\r\n edit: false,\r\n // 表单校验\r\n rules: {\r\n username: [\r\n {required: true, message: \"用户账号不能为空\", trigger: \"blur\"},\r\n {min: 5, max: 20, message: '用户账号长度必须介于 5 和 20 之间', trigger: 'blur'}\r\n ],\r\n nickname: [\r\n {required: true, message: \"用户姓名不能为空\", trigger: \"blur\"},\r\n {min: 2, max: 30, message: '用户姓名长度必须介于 2 和 30 之间', trigger: 'blur'}\r\n ],\r\n idcard: [\r\n {required: true, message: \"身份证号码不能为空\", trigger: \"blur\"},\r\n {min: 15, max: 18, message: '身份证号请输入15位或者18位', trigger: 'blur'}\r\n ],\r\n mailbox: [\r\n {required: true, message: \"邮箱不能为空\", trigger: \"blur\"},\r\n {type: \"email\", message: \"请输入正确的邮箱地址\", trigger: [\"blur\", \"change\"]}\r\n ],\r\n phonenumber: [\r\n {required: true, message: \"手机号码不能为空\", trigger: \"blur\"},\r\n {pattern: /^1[3|4|5|6|7|8|9][0-9]\\d{8}$/, message: \"请输入正确的手机号码\", trigger: \"blur\"}\r\n ],\r\n password: [\r\n { required: true, message: \"密码不能为空\", trigger: \"blur\" },\r\n { min: 8, max: 20, message: \"长度在 8 到 20 个字符\", trigger: \"blur\" }\r\n ],\r\n }\r\n };\r\n },\r\n watch: {},\r\n created() {\r\n this.getList()\r\n },\r\n methods: {\r\n // 树权限(展开/折叠)\r\n handleCheckedTreeExpand(value, type) {\r\n if (type == 'menu') {\r\n let treeList = this.menuOptions;\r\n for (let i = 0; i < treeList.length; i++) {\r\n this.$refs.menu.store.nodesMap[treeList[i].id].expanded = value;\r\n }\r\n }\r\n },\r\n\r\n setRowClass({row, rowIndex}){\r\n if(row.signstr === '1'){\r\n return \"background: #FFEFD5\";\r\n }\r\n },\r\n // 注销操作\r\n handleLogOff(){\r\n let _selectData = this.$refs.userTable.getRadioRecord(true)\r\n if (_selectData == null) {\r\n this.$message({\r\n type: 'warning',\r\n message: '请选择记录!'\r\n });\r\n return\r\n }\r\n if (_selectData.id == 1) {\r\n this.$message({\r\n type: 'warning',\r\n message: '内置用户不能注销!'\r\n });\r\n return\r\n }\r\n if (_selectData.status == 2) {\r\n this.$message({\r\n type: 'warning',\r\n message: '已注销的账号不能再次注销!'\r\n });\r\n return\r\n }\r\n this.$prompt('请输入登录密码', '鉴别操作', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n inputType: 'password',\r\n // customClass:'no-autofill-pwd',\r\n inputValidator: (val) => {\r\n if (val === null || val.length < 1 || val.length > 20) {\r\n return false;\r\n }\r\n },\r\n inputErrorMessage: '不能为空,最多可录入20个字符',\r\n beforeClose(action, instance, done) {\r\n if (action === \"confirm\") {\r\n instance.$refs[\"confirm\"].$el.onclick = (function (e) {\r\n e = e || window.event;\r\n if (e.detail != 0) {\r\n done();\r\n }\r\n })();\r\n } else {\r\n done();\r\n }\r\n }\r\n }).then(async ({value}) => {\r\n this.doLogoff(_selectData, value)\r\n }).catch((e) => {\r\n })\r\n },\r\n /**\r\n * 注销提交\r\n */\r\n doLogoff: debounce(async function (_selectData, againPwd) {\r\n const param = {\r\n id: _selectData.id\r\n }\r\n await this.$axios.post('/sysUserController/logOffUser?againPwd='+againPwd, this.$qs.stringify(param)).then((res) => {\r\n this.$message.success('注销成功!')\r\n this.getList();\r\n }).catch((error) => {\r\n this.loading = false\r\n })\r\n }, 500),\r\n // 列表状态格式化\r\n statusFormat({cellValue}) {\r\n let belongTo = '未知的类型'\r\n for (let i = 0; i < this.statusOptions.length; i++) {\r\n if (cellValue == \"0\") {\r\n belongTo = \"正常\"\r\n } else if (cellValue == \"1\") {\r\n belongTo = \"锁定\"\r\n } else if (cellValue == \"2\") {\r\n belongTo = \"注销\"\r\n }\r\n }\r\n return belongTo\r\n },\r\n // 列表状态格式化\r\n sfsh({cellValue}) {\r\n let belongTo = '否'\r\n if (cellValue == \"1\") {\r\n belongTo = \"是\"\r\n }\r\n return belongTo\r\n },\r\n // 列表状态格式化\r\n typeFormat({cellValue}) {\r\n let belongTo = '未知的类型'\r\n for (let i = 0; i < this.typeOptions.length; i++) {\r\n if (cellValue == \"0\") {\r\n belongTo = \"管理员\"\r\n } else if (cellValue == \"1\") {\r\n belongTo = \"业务用户\"\r\n }\r\n }\r\n return belongTo\r\n },\r\n /** 搜索按钮操作 */\r\n handleQuery: debounce(function () {\r\n this.currentPage = 1\r\n this.pageSize = 10\r\n this.getList()\r\n }, 1000),\r\n /** 查询用户列表 */\r\n async getList() {\r\n this.loading = true;\r\n var searchParams = {\r\n currentPage: this.currentPage,\r\n pageSize: this.pageSize,\r\n username: this.queryParams.username,\r\n phonenumber: this.queryParams.phonenumber,\r\n status: this.queryParams.status\r\n }\r\n await this.$axios.get('/sysUserController/getAll',\r\n {params: searchParams}).then((res) => {\r\n this.userList = res.data\r\n this.total = res.data.length\r\n\r\n if (res.data.records == '') {\r\n this.showTable = false\r\n } else {\r\n this.showTable = true\r\n }\r\n this.loading = false\r\n }).catch((error) => {\r\n this.loading = false;\r\n // this.$message.error(error)\r\n })\r\n },\r\n // 用户状态修改\r\n handleStatusChange(row) {\r\n let text = row.status === \"0\" ? \"启用\" : \"停用\";\r\n this.$modal.confirm('确认要\"' + text + '\"\"' + row.userName + '\"用户吗?').then(function () {\r\n return changeUserStatus(row.userId, row.status);\r\n }).then(() => {\r\n this.$modal.msgSuccess(text + \"成功\");\r\n }).catch(function () {\r\n row.status = row.status === \"0\" ? \"1\" : \"0\";\r\n });\r\n },\r\n // 取消按钮\r\n cancel() {\r\n this.getList()\r\n this.open = false;\r\n this.reset();\r\n },\r\n // 角色取消按钮\r\n jscancel() {\r\n this.jsopen = false;\r\n this.userRoleId = ''\r\n this.menuOptions=[]\r\n },\r\n // 表单重置\r\n reset() {\r\n this.edit = false;\r\n this.form = {\r\n id: undefined,\r\n username: undefined,\r\n nickname: undefined,\r\n idcard: undefined,\r\n phonenumber: undefined,\r\n mailbox: undefined,\r\n status: \"0\",\r\n usertype: \"0\",\r\n remark: undefined,\r\n expDate: undefined\r\n };\r\n\r\n if (this.$refs[\"form\"]) {\r\n this.$refs[\"form\"].clearValidate();\r\n }\r\n },\r\n /** 重置按钮操作 */\r\n resetQuery() {\r\n this.resetForm(\"queryForm\");\r\n },\r\n /** 新增按钮操作 */\r\n handleAdd() {\r\n this.reset();\r\n this.edit = false;\r\n this.open = true;\r\n this.title = \"添加用户\";\r\n // this.form.password = this.initPassword;\r\n },\r\n /** 提交按钮 */\r\n submitForm: debounce(function () {\r\n this.$refs[\"form\"].validate(async valid => {\r\n if (valid) {\r\n if (this.form.id != undefined) {\r\n this.$prompt('请输入登录密码', '鉴别操作', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n inputType: 'password',\r\n // customClass:'no-autofill-pwd',\r\n inputValidator: (val) => {\r\n if (val === null || val.length < 1 || val.length > 20) {\r\n return false;\r\n }\r\n },\r\n inputErrorMessage: '不能为空,最多可录入20个字符',\r\n beforeClose(action, instance, done) {\r\n if (action === \"confirm\") {\r\n instance.$refs[\"confirm\"].$el.onclick = (function (e) {\r\n e = e || window.event;\r\n if (e.detail != 0) {\r\n done();\r\n }\r\n })();\r\n } else {\r\n done();\r\n }\r\n }\r\n }).then(async ({value}) => {\r\n // 更新操作\r\n await this.$axios.post('/sysUserController/updateUser?againPwd='+value, this.form).then((res) => {\r\n this.$message.success('修改用户成功')\r\n this.open = false;\r\n this.reset();\r\n this.getList();\r\n this.loading = false\r\n }).catch((error) => {\r\n this.loading = false\r\n })\r\n }).catch((e) => {\r\n })\r\n } else {\r\n this.$prompt('请输入登录密码', '鉴别操作', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n inputType: 'password',\r\n // customClass:'no-autofill-pwd',\r\n inputValidator: (val) => {\r\n if (val === null || val.length < 1 || val.length > 20) {\r\n return false;\r\n }\r\n },\r\n inputErrorMessage: '不能为空,最多可录入20个字符',\r\n beforeClose(action, instance, done) {\r\n if (action === \"confirm\") {\r\n instance.$refs[\"confirm\"].$el.onclick = (function (e) {\r\n e = e || window.event;\r\n if (e.detail != 0) {\r\n done();\r\n }\r\n })();\r\n } else {\r\n done();\r\n }\r\n }\r\n }).then(async ({value}) => {\r\n // 新增操作\r\n await this.$axios.post('/sysUserController/addUser?againPwd='+value, this.form).then((res) => {\r\n this.$message.success('添加用户成功')\r\n this.open = false;\r\n this.reset();\r\n this.getList();\r\n this.loading = false\r\n }).catch((error) => {\r\n // this.$message.error(error)\r\n this.loading = false\r\n })\r\n }).catch((e) => {\r\n })\r\n }\r\n }\r\n });\r\n }, 1000),\r\n /** 修改按钮操作 */\r\n handleUpdate() {\r\n this.reset();\r\n let _selectData = this.$refs.userTable.getRadioRecord(true)\r\n if (_selectData == null) {\r\n this.$message({\r\n type: 'warning',\r\n message: '请选择记录!'\r\n });\r\n return\r\n }\r\n if (_selectData.id == 1) {\r\n this.$message({\r\n type: 'warning',\r\n message: '内置用户不能修改!'\r\n });\r\n return\r\n }\r\n if (_selectData.status == 2) {\r\n this.$message({\r\n type: 'warning',\r\n message: '注销的账号不能操作!'\r\n });\r\n return\r\n }\r\n _selectData.password = ''\r\n this.form = _selectData;\r\n this.open = true;\r\n this.title = \"修改用户\";\r\n this.edit = true;\r\n },\r\n\r\n // 取消按钮\r\n lockformcancel() {\r\n this.lockopen = false;\r\n this.lockform = {}\r\n },\r\n sublockform(){\r\n if (this.lockform.expDate==null || this.lockform.expDate==undefined){\r\n this.$message({\r\n type: 'warning',\r\n message: '请选择截止日期!'\r\n });\r\n return\r\n }\r\n if (this.lockform.password==null || this.lockform.password==undefined){\r\n this.$message({\r\n type: 'warning',\r\n message: '请输入登录密码!'\r\n });\r\n return\r\n }\r\n const _selectData = this.$refs.userTable.getRadioRecord(true)\r\n this.doRelock(_selectData, this.lockform.password,this.lockform.expDate)\r\n },\r\n /** 解锁按钮操作 */\r\n handleRelock() {\r\n const _selectData = this.$refs.userTable.getRadioRecord(true)\r\n if (_selectData == null) {\r\n this.$message({\r\n type: 'warning',\r\n message: '请选择记录!'\r\n });\r\n return\r\n }\r\n if (_selectData.status == 2) {\r\n this.$message({\r\n type: 'warning',\r\n message: '注销的账号不能操作!'\r\n });\r\n return\r\n }\r\n if (_selectData.status !== '1') {\r\n this.$message({\r\n type: 'warning',\r\n message: '只能对【锁定】状态的进行解锁!'\r\n });\r\n return\r\n }\r\n this.doRelock(_selectData)\r\n },\r\n /**\r\n * 解锁提交\r\n */\r\n doRelock: debounce(async function (_selectData) {\r\n const param = {\r\n id: _selectData.id\r\n }\r\n await this.$axios.post('/sysUserController/relockUser', this.$qs.stringify(param)).then((res) => {\r\n this.$message.success('解锁成功')\r\n this.getList();\r\n }).catch((error) => {\r\n this.loading = false\r\n })\r\n }, 1000),\r\n\r\n /**\r\n * 角色类型改变时更改权限列表\r\n * @param rowRoleId\r\n * @returns {Promise<unknown>}\r\n */\r\n getMenu(rowRoleId){\r\n const a = this.$axios\r\n const _this = this\r\n return new Promise(async function (resolve, reject) {\r\n var param1 = {\r\n roleId: rowRoleId\r\n }\r\n await a.get('/sysMenuController/roleMenuTreeselectForUser',\r\n {params: param1}).then((res) => {\r\n _this.menuOptions = res.data.menus;\r\n })\r\n }).catch((error) => {\r\n console.error('获取用户角色出错' + error)\r\n })\r\n },\r\n getUserRole(userid) {\r\n const a = this.$axios\r\n const _this = this\r\n return new Promise(async function (resolve, reject) {\r\n var userRoleParams = {\r\n userId: userid\r\n }\r\n await a.get('/sysUserController/getUserRole',\r\n {params: userRoleParams}).then(res => {\r\n\r\n if (res.data==undefined){\r\n _this.userRoleId = ''\r\n }\r\n else{\r\n _this.userRoleId = res.data.roleId\r\n }\r\n // 返回userRole对象\r\n resolve(res.data)\r\n })\r\n if (_this.userRoleId!=''){\r\n var param1 = {\r\n roleId: _this.userRoleId\r\n }\r\n\r\n await a.get('/sysMenuController/roleMenuTreeselectForUser',\r\n {params: param1}).then((res) => {\r\n _this.menuOptions = res.data.menus;\r\n })\r\n }\r\n\r\n }).catch((error) => {\r\n console.error('获取用户角色出错' + error)\r\n })\r\n },\r\n getRoleByType(usertype) {\r\n // 根据用户类型获取角色列表\r\n const a = this.$axios\r\n let _this = this\r\n return new Promise(async function (resolve, reject) {\r\n var searchParams = {\r\n usertype: usertype\r\n }\r\n await a.get('/sysRoleController/getRoleByType',\r\n {params: searchParams}).then(res => {\r\n // 返回角色列表\r\n _this.roleList = res.data\r\n resolve(res.data)\r\n })\r\n }).catch((error) => {\r\n this.loading = false\r\n this.$message.error(error)\r\n })\r\n },\r\n /** 分配角色操作 */\r\n handleAuthRole: debounce(function (row) {\r\n if (row.status == '2') {\r\n this.$message({\r\n type: 'warning',\r\n message: '注销的账号不能操作!'\r\n });\r\n return\r\n }\r\n\r\n this.jsuserid = row.id\r\n this.jsusername = row.username\r\n this.jsnickname = row.nickname\r\n\r\n this.getRoleByType(row.usertype)\r\n this.getUserRole(this.jsuserid)\r\n this.jsopen = true;\r\n this.title = \"分配角色\";\r\n }, 1000),\r\n\r\n /** 角色分配提交按钮 */\r\n jssubmitForm: debounce(async function () {\r\n if (this.userRoleId!=''){\r\n this.$prompt('请输入登录密码', '鉴别操作', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n inputType: 'password',\r\n // customClass:'no-autofill-pwd',\r\n inputValidator: (val) => {\r\n if (val === null || val.length < 1 || val.length > 20) {\r\n return false;\r\n }\r\n },\r\n inputErrorMessage: '不能为空,最多可录入20个字符',\r\n beforeClose(action, instance, done) {\r\n if (action === \"confirm\") {\r\n instance.$refs[\"confirm\"].$el.onclick = (function (e) {\r\n e = e || window.event;\r\n if (e.detail != 0) {\r\n done();\r\n }\r\n })();\r\n } else {\r\n done();\r\n }\r\n }\r\n }).then(async ({value}) => {\r\n // 提交后台角色分配\r\n const param = {\r\n userId: this.jsuserid,\r\n roleId: this.userRoleId\r\n }\r\n console.log(param)\r\n await this.$axios.post('/sysUserController/authRole?againPwd='+value, this.$qs.stringify(param)).then((res) => {\r\n this.$message({\r\n type: 'success',\r\n message: '授权成功'\r\n });\r\n this.jscancel()\r\n this.getList()\r\n }).catch((error) => {\r\n this.loading = false\r\n })\r\n }).catch((e) => {\r\n })\r\n }\r\n else{\r\n this.$message({\r\n type: 'error',\r\n message: '请选择角色类型'\r\n });\r\n }\r\n }, 1000)\r\n }\r\n};\r\n</script>\r\n"],"mappings":"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"}]}