1 |
- {"remainingRequest":"D:\\test\\ssi-satoken\\ui\\node_modules\\thread-loader\\dist\\cjs.js!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\\thread-loader\\dist\\cjs.js","mtime":1697005520930},{"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:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovdGVzdC9zc2ktc2F0b2tlbi91aS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vcmVnZW5lcmF0b3JSdW50aW1lLmpzIjsKaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gIkQ6L3Rlc3Qvc3NpLXNhdG9rZW4vdWkvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FzeW5jVG9HZW5lcmF0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCB7IGRlYm91bmNlIH0gZnJvbSAnbG9kYXNoJzsKaW1wb3J0IHsgdXNlcmluZm9EZWNyeXB0IH0gZnJvbSAiQC91dGlscy9zbXV0aWwiOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogIlVzZXIiLAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICBwaWNrZXJPcHRpb25zOiB7CiAgICAgICAgZGlzYWJsZWREYXRlOiBmdW5jdGlvbiBkaXNhYmxlZERhdGUodGltZSkgewogICAgICAgICAgcmV0dXJuIHRpbWUuZ2V0VGltZSgpIDwgRGF0ZS5ub3coKSAtIDguNjRlNzsKICAgICAgICB9CiAgICAgIH0sCiAgICAgIHN5c1JvbGU6ICcnLAogICAgICBpZDogdW5kZWZpbmVkLAogICAgICB1c2VybmFtZTogdW5kZWZpbmVkLAogICAgICBuaWNrbmFtZTogdW5kZWZpbmVkLAogICAgICBpZGNhcmQ6IHVuZGVmaW5lZCwKICAgICAgcGhvbmVudW1iZXI6IHVuZGVmaW5lZCwKICAgICAgbWFpbGJveDogdW5kZWZpbmVkLAogICAgICBzdGF0dXM6ICIwIiwKICAgICAgdXNlcnR5cGU6ICIwIiwKICAgICAgcmVtYXJrOiB1bmRlZmluZWQsCiAgICAgIGV4cERhdGU6IHVuZGVmaW5lZCwKICAgICAgLy8g6KeS6Imy6KGo5qC85pWw5o2uCiAgICAgIGpzdXNlcmlkOiAnJywKICAgICAgcm9sZUxpc3Q6IFtdLAogICAgICBqc3VzZXJuYW1lOiAnJywKICAgICAganNuaWNrbmFtZTogJycsCiAgICAgIHVzZXJSb2xlSWQ6ICcnLAogICAgICBqc3VzZXJ0eXBlOiAnJywKICAgICAgc3RhdHVzT3B0aW9uczogW3sKICAgICAgICB2YWx1ZTogJzAnLAogICAgICAgIGxhYmVsOiAn5q2j5bi4JwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICcxJywKICAgICAgICBsYWJlbDogJ+mUgeWumicKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnMicsCiAgICAgICAgbGFiZWw6ICfms6jplIAnCiAgICAgIH1dLAogICAgICB0eXBlT3B0aW9uczogW3sKICAgICAgICB2YWx1ZTogJzAnLAogICAgICAgIGxhYmVsOiAn566h55CG5ZGYJwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICcxJywKICAgICAgICBsYWJlbDogJ+S4muWKoeeUqOaItycKICAgICAgfV0sCiAgICAgIC8vIOmBrue9qeWxggogICAgICBsb2FkaW5nOiB0cnVlLAogICAgICBzaG93VGFibGU6IHRydWUsCiAgICAgIC8vIOmAieS4reaVsOe7hAogICAgICBpZHM6IFtdLAogICAgICAvLyDpnZ7ljZXkuKrnpoHnlKgKICAgICAgc2luZ2xlOiB0cnVlLAogICAgICAvLyDpnZ7lpJrkuKrnpoHnlKgKICAgICAgbXVsdGlwbGU6IHRydWUsCiAgICAgIGN1cnJlbnRQYWdlOiAxLAogICAgICBwYWdlU2l6ZTogMTAsCiAgICAgIC8vIOaAu+adoeaVsAogICAgICB0b3RhbDogMCwKICAgICAgLy8g55So5oi36KGo5qC85pWw5o2uCiAgICAgIHVzZXJMaXN0OiBbXSwKICAgICAgbG9ja3RpdGxlOiAi6Ym05Yir5pON5L2cIiwKICAgICAgLy8g5by55Ye65bGC5qCH6aKYCiAgICAgIHRpdGxlOiAiIiwKICAgICAgLy8g6KeS6Imy5YiG6YWN5by55Ye65bGC5qCH6aKYCiAgICAgIGpzdGl0bGU6ICIiLAogICAgICAvLyDmmK/lkKbmmL7npLrlvLnlh7rlsYIKICAgICAgb3BlbjogZmFsc2UsCiAgICAgIGxvY2tvcGVuOiBmYWxzZSwKICAgICAgLy8g6KeS6Imy5piv5ZCm5pi+56S65by55Ye65bGCCiAgICAgIGpzb3BlbjogZmFsc2UsCiAgICAgIC8vIOm7mOiupOWvhueggQogICAgICBpbml0UGFzc3dvcmQ6IHVuZGVmaW5lZCwKICAgICAgLy8g6KeS6Imy6YCJ6aG5CiAgICAgIHJvbGVPcHRpb25zOiBbXSwKICAgICAgLy8g6KGo5Y2V5Y+C5pWwCiAgICAgIGZvcm06IHt9LAogICAgICBsb2NrZm9ybToge30sCiAgICAgIC8vIOafpeivouWPguaVsAogICAgICBxdWVyeVBhcmFtczogewogICAgICAgIHVzZXJuYW1lOiB1bmRlZmluZWQsCiAgICAgICAgcGhvbmVudW1iZXI6IHVuZGVmaW5lZCwKICAgICAgICBzdGF0dXM6IHVuZGVmaW5lZAogICAgICB9LAogICAgICBtZW51RXhwYW5kOiBmYWxzZSwKICAgICAgLy8g6I+c5Y2V5YiX6KGoCiAgICAgIG1lbnVPcHRpb25zOiBbXSwKICAgICAgZGVmYXVsdFByb3BzOiB7CiAgICAgICAgY2hpbGRyZW46ICJjaGlsZHJlbiIsCiAgICAgICAgbGFiZWw6ICJsYWJlbCIKICAgICAgfSwKICAgICAgZWRpdDogZmFsc2UsCiAgICAgIC8vIOihqOWNleagoemqjAogICAgICBydWxlczogewogICAgICAgIHVzZXJuYW1lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi55So5oi36LSm5Y+35LiN6IO95Li656m6IiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH0sIHsKICAgICAgICAgIG1pbjogNSwKICAgICAgICAgIG1heDogMjAsCiAgICAgICAgICBtZXNzYWdlOiAn55So5oi36LSm5Y+36ZW/5bqm5b+F6aG75LuL5LqOIDUg5ZKMIDIwIOS5i+mXtCcsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XSwKICAgICAgICBuaWNrbmFtZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIueUqOaIt+Wnk+WQjeS4jeiDveS4uuepuiIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9LCB7CiAgICAgICAgICBtaW46IDIsCiAgICAgICAgICBtYXg6IDMwLAogICAgICAgICAgbWVzc2FnZTogJ+eUqOaIt+Wnk+WQjemVv+W6puW/hemhu+S7i+S6jiAyIOWSjCAzMCDkuYvpl7QnLAogICAgICAgICAgdHJpZ2dlcjogJ2JsdXInCiAgICAgICAgfV0sCiAgICAgICAgaWRjYXJkOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6Lqr5Lu96K+B5Y+356CB5LiN6IO95Li656m6IiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH0sIHsKICAgICAgICAgIG1pbjogMTUsCiAgICAgICAgICBtYXg6IDE4LAogICAgICAgICAgbWVzc2FnZTogJ+i6q+S7veivgeWPt+ivt+i+k+WFpTE15L2N5oiW6ICFMTjkvY0nLAogICAgICAgICAgdHJpZ2dlcjogJ2JsdXInCiAgICAgICAgfV0sCiAgICAgICAgbWFpbGJveDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIumCrueuseS4jeiDveS4uuepuiIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9LCB7CiAgICAgICAgICB0eXBlOiAiZW1haWwiLAogICAgICAgICAgbWVzc2FnZTogIuivt+i+k+WFpeato+ehrueahOmCrueuseWcsOWdgCIsCiAgICAgICAgICB0cmlnZ2VyOiBbImJsdXIiLCAiY2hhbmdlIl0KICAgICAgICB9XSwKICAgICAgICBwaG9uZW51bWJlcjogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuaJi+acuuWPt+eggeS4jeiDveS4uuepuiIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9LCB7CiAgICAgICAgICBwYXR0ZXJuOiAvXjFbM3w0fDV8Nnw3fDh8OV1bMC05XVxkezh9JC8sCiAgICAgICAgICBtZXNzYWdlOiAi6K+36L6T5YWl5q2j56Gu55qE5omL5py65Y+356CBIiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dLAogICAgICAgIHBhc3N3b3JkOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi5a+G56CB5LiN6IO95Li656m6IiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH0sIHsKICAgICAgICAgIG1pbjogOCwKICAgICAgICAgIG1heDogMjAsCiAgICAgICAgICBtZXNzYWdlOiAi6ZW/5bqm5ZyoIDgg5YiwIDIwIOS4quWtl+espiIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9XQogICAgICB9CiAgICB9OwogIH0sCiAgd2F0Y2g6IHt9LAogIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7CiAgICB0aGlzLmdldExpc3QoKTsKICB9LAogIG1ldGhvZHM6IHsKICAgIC8vIOagkeadg+mZkO+8iOWxleW8gC/mipjlj6DvvIkKICAgIGhhbmRsZUNoZWNrZWRUcmVlRXhwYW5kOiBmdW5jdGlvbiBoYW5kbGVDaGVja2VkVHJlZUV4cGFuZCh2YWx1ZSwgdHlwZSkgewogICAgICBpZiAodHlwZSA9PSAnbWVudScpIHsKICAgICAgICB2YXIgdHJlZUxpc3QgPSB0aGlzLm1lbnVPcHRpb25zOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHJlZUxpc3QubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHRoaXMuJHJlZnMubWVudS5zdG9yZS5ub2Rlc01hcFt0cmVlTGlzdFtpXS5pZF0uZXhwYW5kZWQgPSB2YWx1ZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBzZXRSb3dDbGFzczogZnVuY3Rpb24gc2V0Um93Q2xhc3MoX3JlZikgewogICAgICB2YXIgcm93ID0gX3JlZi5yb3csCiAgICAgICAgcm93SW5kZXggPSBfcmVmLnJvd0luZGV4OwogICAgICBpZiAocm93LnNpZ25zdHIgPT09ICcxJykgewogICAgICAgIHJldHVybiAiYmFja2dyb3VuZDogI0ZGRUZENSI7CiAgICAgIH0KICAgIH0sCiAgICAvLyDms6jplIDmk43kvZwKICAgIGhhbmRsZUxvZ09mZjogZnVuY3Rpb24gaGFuZGxlTG9nT2ZmKCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgdmFyIF9zZWxlY3REYXRhID0gdGhpcy4kcmVmcy51c2VyVGFibGUuZ2V0UmFkaW9SZWNvcmQodHJ1ZSk7CiAgICAgIGlmIChfc2VsZWN0RGF0YSA9PSBudWxsKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup6K6w5b2VIScKICAgICAgICB9KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKF9zZWxlY3REYXRhLmlkID09IDEpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICflhoXnva7nlKjmiLfkuI3og73ms6jplIAhJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpZiAoX3NlbGVjdERhdGEuc3RhdHVzID09IDIpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICflt7Lms6jplIDnmoTotKblj7fkuI3og73lho3mrKHms6jplIAhJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLiRwcm9tcHQoJ+ivt+i+k+WFpeeZu+W9leWvhueggScsICfpibTliKvmk43kvZwnLCB7CiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgIGlucHV0VHlwZTogJ3Bhc3N3b3JkJywKICAgICAgICAvLyBjdXN0b21DbGFzczonbm8tYXV0b2ZpbGwtcHdkJywKICAgICAgICBpbnB1dFZhbGlkYXRvcjogZnVuY3Rpb24gaW5wdXRWYWxpZGF0b3IodmFsKSB7CiAgICAgICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbC5sZW5ndGggPCAxIHx8IHZhbC5sZW5ndGggPiAyMCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBpbnB1dEVycm9yTWVzc2FnZTogJ+S4jeiDveS4uuepuizmnIDlpJrlj6/lvZXlhaUyMOS4quWtl+espicsCiAgICAgICAgYmVmb3JlQ2xvc2U6IGZ1bmN0aW9uIGJlZm9yZUNsb3NlKGFjdGlvbiwgaW5zdGFuY2UsIGRvbmUpIHsKICAgICAgICAgIGlmIChhY3Rpb24gPT09ICJjb25maXJtIikgewogICAgICAgICAgICBpbnN0YW5jZS4kcmVmc1siY29uZmlybSJdLiRlbC5vbmNsaWNrID0gZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICBlID0gZSB8fCB3aW5kb3cuZXZlbnQ7CiAgICAgICAgICAgICAgaWYgKGUuZGV0YWlsICE9IDApIHsKICAgICAgICAgICAgICAgIGRvbmUoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0oKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGRvbmUoKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0pLnRoZW4oIC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9yZWYzID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKF9yZWYyKSB7CiAgICAgICAgICB2YXIgdmFsdWU7CiAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHsKICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICB2YWx1ZSA9IF9yZWYyLnZhbHVlOwogICAgICAgICAgICAgICAgX3RoaXMyLmRvTG9nb2ZmKF9zZWxlY3REYXRhLCB2YWx1ZSk7CiAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgICB9CiAgICAgICAgICB9LCBfY2FsbGVlKTsKICAgICAgICB9KSk7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeCkgewogICAgICAgICAgcmV0dXJuIF9yZWYzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSgpKS5jYXRjaChmdW5jdGlvbiAoZSkge30pOwogICAgfSwKICAgIC8qKg0KICAgICAqIOazqOmUgOaPkOS6pA0KICAgICAqLwogICAgZG9Mb2dvZmY6IGRlYm91bmNlKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICB2YXIgX3JlZjQgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKF9zZWxlY3REYXRhLCBhZ2FpblB3ZCkgewogICAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICAgIHZhciBwYXJhbTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgcGFyYW0gPSB7CiAgICAgICAgICAgICAgICBpZDogX3NlbGVjdERhdGEuaWQKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMzsKICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kYXhpb3MucG9zdCgnL3N5c1VzZXJDb250cm9sbGVyL2xvZ09mZlVzZXI/YWdhaW5Qd2Q9JyArIGFnYWluUHdkLCB0aGlzLiRxcy5zdHJpbmdpZnkocGFyYW0pKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgIF90aGlzMy4kbWVzc2FnZS5zdWNjZXNzKCfms6jplIDmiJDlip/vvIEnKTsKICAgICAgICAgICAgICAgIF90aGlzMy5nZXRMaXN0KCk7CiAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgICAgICAgICBfdGhpczMubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTIsIHRoaXMpOwogICAgICB9KSk7CiAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gyLCBfeDMpIHsKICAgICAgICByZXR1cm4gX3JlZjQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgfTsKICAgIH0oKSwgNTAwKSwKICAgIC8vIOWIl+ihqOeKtuaAgeagvOW8j+WMlgogICAgc3RhdHVzRm9ybWF0OiBmdW5jdGlvbiBzdGF0dXNGb3JtYXQoX3JlZjUpIHsKICAgICAgdmFyIGNlbGxWYWx1ZSA9IF9yZWY1LmNlbGxWYWx1ZTsKICAgICAgdmFyIGJlbG9uZ1RvID0gJ+acquefpeeahOexu+Weiyc7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zdGF0dXNPcHRpb25zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKGNlbGxWYWx1ZSA9PSAiMCIpIHsKICAgICAgICAgIGJlbG9uZ1RvID0gIuato+W4uCI7CiAgICAgICAgfSBlbHNlIGlmIChjZWxsVmFsdWUgPT0gIjEiKSB7CiAgICAgICAgICBiZWxvbmdUbyA9ICLplIHlrpoiOwogICAgICAgIH0gZWxzZSBpZiAoY2VsbFZhbHVlID09ICIyIikgewogICAgICAgICAgYmVsb25nVG8gPSAi5rOo6ZSAIjsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGJlbG9uZ1RvOwogICAgfSwKICAgIC8vIOWIl+ihqOeKtuaAgeagvOW8j+WMlgogICAgc2ZzaDogZnVuY3Rpb24gc2ZzaChfcmVmNikgewogICAgICB2YXIgY2VsbFZhbHVlID0gX3JlZjYuY2VsbFZhbHVlOwogICAgICB2YXIgYmVsb25nVG8gPSAn5ZCmJzsKICAgICAgaWYgKGNlbGxWYWx1ZSA9PSAiMSIpIHsKICAgICAgICBiZWxvbmdUbyA9ICLmmK8iOwogICAgICB9CiAgICAgIHJldHVybiBiZWxvbmdUbzsKICAgIH0sCiAgICAvLyDliJfooajnirbmgIHmoLzlvI/ljJYKICAgIHR5cGVGb3JtYXQ6IGZ1bmN0aW9uIHR5cGVGb3JtYXQoX3JlZjcpIHsKICAgICAgdmFyIGNlbGxWYWx1ZSA9IF9yZWY3LmNlbGxWYWx1ZTsKICAgICAgdmFyIGJlbG9uZ1RvID0gJ+acquefpeeahOexu+Weiyc7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy50eXBlT3B0aW9ucy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChjZWxsVmFsdWUgPT0gIjAiKSB7CiAgICAgICAgICBiZWxvbmdUbyA9ICLnrqHnkIblkZgiOwogICAgICAgIH0gZWxzZSBpZiAoY2VsbFZhbHVlID09ICIxIikgewogICAgICAgICAgYmVsb25nVG8gPSAi5Lia5Yqh55So5oi3IjsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGJlbG9uZ1RvOwogICAgfSwKICAgIC8qKiDmkJzntKLmjInpkq7mk43kvZwgKi8KICAgIGhhbmRsZVF1ZXJ5OiBkZWJvdW5jZShmdW5jdGlvbiAoKSB7CiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxOwogICAgICB0aGlzLnBhZ2VTaXplID0gMTA7CiAgICAgIHRoaXMuZ2V0TGlzdCgpOwogICAgfSwgMTAwMCksCiAgICAvKiog5p+l6K+i55So5oi35YiX6KGoICovZ2V0TGlzdDogZnVuY3Rpb24gZ2V0TGlzdCgpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKCkgewogICAgICAgIHZhciBzZWFyY2hQYXJhbXM7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF90aGlzNC5sb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICBzZWFyY2hQYXJhbXMgPSB7CiAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogX3RoaXM0LmN1cnJlbnRQYWdlLAogICAgICAgICAgICAgICAgcGFnZVNpemU6IF90aGlzNC5wYWdlU2l6ZSwKICAgICAgICAgICAgICAgIHVzZXJuYW1lOiBfdGhpczQucXVlcnlQYXJhbXMudXNlcm5hbWUsCiAgICAgICAgICAgICAgICBwaG9uZW51bWJlcjogX3RoaXM0LnF1ZXJ5UGFyYW1zLnBob25lbnVtYmVyLAogICAgICAgICAgICAgICAgc3RhdHVzOiBfdGhpczQucXVlcnlQYXJhbXMuc3RhdHVzCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDQ7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNC4kYXhpb3MuZ2V0KCcvc3lzVXNlckNvbnRyb2xsZXIvZ2V0QWxsJywgewogICAgICAgICAgICAgICAgcGFyYW1zOiBzZWFyY2hQYXJhbXMKICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgIF90aGlzNC51c2VyTGlzdCA9IHJlcy5kYXRhOwogICAgICAgICAgICAgICAgX3RoaXM0LnRvdGFsID0gcmVzLmRhdGEubGVuZ3RoOwogICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnJlY29yZHMgPT0gJycpIHsKICAgICAgICAgICAgICAgICAgX3RoaXM0LnNob3dUYWJsZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgX3RoaXM0LnNob3dUYWJsZSA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfdGhpczQubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgICAgICAgICAgX3RoaXM0LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgIC8vIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZXJyb3IpCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMyk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOeUqOaIt+eKtuaAgeS/ruaUuQogICAgaGFuZGxlU3RhdHVzQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVTdGF0dXNDaGFuZ2Uocm93KSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICB2YXIgdGV4dCA9IHJvdy5zdGF0dXMgPT09ICIwIiA/ICLlkK/nlKgiIDogIuWBnOeUqCI7CiAgICAgIHRoaXMuJG1vZGFsLmNvbmZpcm0oJ+ehruiupOimgSInICsgdGV4dCArICciIicgKyByb3cudXNlck5hbWUgKyAnIueUqOaIt+WQl++8nycpLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiBjaGFuZ2VVc2VyU3RhdHVzKHJvdy51c2VySWQsIHJvdy5zdGF0dXMpOwogICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICBfdGhpczUuJG1vZGFsLm1zZ1N1Y2Nlc3ModGV4dCArICLmiJDlip8iKTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkgewogICAgICAgIHJvdy5zdGF0dXMgPSByb3cuc3RhdHVzID09PSAiMCIgPyAiMSIgOiAiMCI7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOWPlua2iOaMiemSrgogICAgY2FuY2VsOiBmdW5jdGlvbiBjYW5jZWwoKSB7CiAgICAgIHRoaXMuZ2V0TGlzdCgpOwogICAgICB0aGlzLm9wZW4gPSBmYWxzZTsKICAgICAgdGhpcy5yZXNldCgpOwogICAgfSwKICAgIC8vIOinkuiJsuWPlua2iOaMiemSrgogICAganNjYW5jZWw6IGZ1bmN0aW9uIGpzY2FuY2VsKCkgewogICAgICB0aGlzLmpzb3BlbiA9IGZhbHNlOwogICAgICB0aGlzLnVzZXJSb2xlSWQgPSAnJzsKICAgICAgdGhpcy5tZW51T3B0aW9ucyA9IFtdOwogICAgfSwKICAgIC8vIOihqOWNlemHjee9rgogICAgcmVzZXQ6IGZ1bmN0aW9uIHJlc2V0KCkgewogICAgICB0aGlzLmVkaXQgPSBmYWxzZTsKICAgICAgdGhpcy5mb3JtID0gewogICAgICAgIGlkOiB1bmRlZmluZWQsCiAgICAgICAgdXNlcm5hbWU6IHVuZGVmaW5lZCwKICAgICAgICBuaWNrbmFtZTogdW5kZWZpbmVkLAogICAgICAgIGlkY2FyZDogdW5kZWZpbmVkLAogICAgICAgIHBob25lbnVtYmVyOiB1bmRlZmluZWQsCiAgICAgICAgbWFpbGJveDogdW5kZWZpbmVkLAogICAgICAgIHN0YXR1czogIjAiLAogICAgICAgIHVzZXJ0eXBlOiAiMCIsCiAgICAgICAgcmVtYXJrOiB1bmRlZmluZWQsCiAgICAgICAgZXhwRGF0ZTogdW5kZWZpbmVkCiAgICAgIH07CiAgICAgIGlmICh0aGlzLiRyZWZzWyJmb3JtIl0pIHsKICAgICAgICB0aGlzLiRyZWZzWyJmb3JtIl0uY2xlYXJWYWxpZGF0ZSgpOwogICAgICB9CiAgICB9LAogICAgLyoqIOmHjee9ruaMiemSruaTjeS9nCAqL3Jlc2V0UXVlcnk6IGZ1bmN0aW9uIHJlc2V0UXVlcnkoKSB7CiAgICAgIHRoaXMucmVzZXRGb3JtKCJxdWVyeUZvcm0iKTsKICAgIH0sCiAgICAvKiog5paw5aKe5oyJ6ZKu5pON5L2cICovaGFuZGxlQWRkOiBmdW5jdGlvbiBoYW5kbGVBZGQoKSB7CiAgICAgIHRoaXMucmVzZXQoKTsKICAgICAgdGhpcy5lZGl0ID0gZmFsc2U7CiAgICAgIHRoaXMub3BlbiA9IHRydWU7CiAgICAgIHRoaXMudGl0bGUgPSAi5re75Yqg55So5oi3IjsKICAgICAgLy8gdGhpcy5mb3JtLnBhc3N3b3JkID0gdGhpcy5pbml0UGFzc3dvcmQ7CiAgICB9LAoKICAgIC8qKiDmj5DkuqTmjInpkq4gKi8KICAgIHN1Ym1pdEZvcm06IGRlYm91bmNlKGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CiAgICAgIHRoaXMuJHJlZnNbImZvcm0iXS52YWxpZGF0ZSggLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICB2YXIgX3JlZjggPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU2KHZhbGlkKSB7CiAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTYkKF9jb250ZXh0NikgewogICAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDYucHJldiA9IF9jb250ZXh0Ni5uZXh0KSB7CiAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgaWYgKHZhbGlkKSB7CiAgICAgICAgICAgICAgICAgIGlmIChfdGhpczYuZm9ybS5pZCAhPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICBfdGhpczYuJHByb21wdCgn6K+36L6T5YWl55m75b2V5a+G56CBJywgJ+mJtOWIq+aTjeS9nCcsIHsKICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywKICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgICAgICAgICAgICAgICAgaW5wdXRUeXBlOiAncGFzc3dvcmQnLAogICAgICAgICAgICAgICAgICAgICAgLy8gY3VzdG9tQ2xhc3M6J25vLWF1dG9maWxsLXB3ZCcsCiAgICAgICAgICAgICAgICAgICAgICBpbnB1dFZhbGlkYXRvcjogZnVuY3Rpb24gaW5wdXRWYWxpZGF0b3IodmFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsLmxlbmd0aCA8IDEgfHwgdmFsLmxlbmd0aCA+IDIwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgaW5wdXRFcnJvck1lc3NhZ2U6ICfkuI3og73kuLrnqbos5pyA5aSa5Y+v5b2V5YWlMjDkuKrlrZfnrKYnLAogICAgICAgICAgICAgICAgICAgICAgYmVmb3JlQ2xvc2U6IGZ1bmN0aW9uIGJlZm9yZUNsb3NlKGFjdGlvbiwgaW5zdGFuY2UsIGRvbmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGlvbiA9PT0gImNvbmZpcm0iKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuJHJlZnNbImNvbmZpcm0iXS4kZWwub25jbGljayA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZSB8fCB3aW5kb3cuZXZlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5kZXRhaWwgIT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pLnRoZW4oIC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgX3JlZjEwID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNChfcmVmOSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNCQoX2NvbnRleHQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ0LnByZXYgPSBfY29udGV4dDQubmV4dCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IF9yZWY5LnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczYuJGF4aW9zLnBvc3QoJy9zeXNVc2VyQ29udHJvbGxlci91cGRhdGVVc2VyP2FnYWluUHdkPScgKyB2YWx1ZSwgX3RoaXM2LmZvcm0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNi4kbWVzc2FnZS5zdWNjZXNzKCfkv67mlLnnlKjmiLfmiJDlip8nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpczYub3BlbiA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNi5yZXNldCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNi5nZXRMaXN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM2LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM2LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LnN0b3AoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIF9jYWxsZWU0KTsKICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3g1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfcmVmMTAuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgfSgpKS5jYXRjaChmdW5jdGlvbiAoZSkge30pOwogICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIF90aGlzNi4kcHJvbXB0KCfor7fovpPlhaXnmbvlvZXlr4bnoIEnLCAn6Ym05Yir5pON5L2cJywgewogICAgICAgICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAgICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICAgICAgICAgICAgICBpbnB1dFR5cGU6ICdwYXNzd29yZCcsCiAgICAgICAgICAgICAgICAgICAgICAvLyBjdXN0b21DbGFzczonbm8tYXV0b2ZpbGwtcHdkJywKICAgICAgICAgICAgICAgICAgICAgIGlucHV0VmFsaWRhdG9yOiBmdW5jdGlvbiBpbnB1dFZhbGlkYXRvcih2YWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwubGVuZ3RoIDwgMSB8fCB2YWwubGVuZ3RoID4gMjApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICBpbnB1dEVycm9yTWVzc2FnZTogJ+S4jeiDveS4uuepuizmnIDlpJrlj6/lvZXlhaUyMOS4quWtl+espicsCiAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVDbG9zZTogZnVuY3Rpb24gYmVmb3JlQ2xvc2UoYWN0aW9uLCBpbnN0YW5jZSwgZG9uZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aW9uID09PSAiY29uZmlybSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4kcmVmc1siY29uZmlybSJdLiRlbC5vbmNsaWNrID0gZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBlIHx8IHdpbmRvdy5ldmVudDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmRldGFpbCAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICB9KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkudGhlbiggLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgIHZhciBfcmVmMTIgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU1KF9yZWYxMSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNSQoX2NvbnRleHQ1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ1LnByZXYgPSBfY29udGV4dDUubmV4dCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IF9yZWYxMS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXM2LiRheGlvcy5wb3N0KCcvc3lzVXNlckNvbnRyb2xsZXIvYWRkVXNlcj9hZ2FpblB3ZD0nICsgdmFsdWUsIF90aGlzNi5mb3JtKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpczYuJG1lc3NhZ2Uuc3VjY2Vzcygn5re75Yqg55So5oi35oiQ5YqfJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM2Lm9wZW4gPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpczYucmVzZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpczYuZ2V0TGlzdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNi5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZXJyb3IpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM2LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LnN0b3AoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIF9jYWxsZWU1KTsKICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3g2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfcmVmMTIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgfSgpKS5jYXRjaChmdW5jdGlvbiAoZSkge30pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ2LnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZTYpOwogICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94NCkgewogICAgICAgICAgcmV0dXJuIF9yZWY4LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSgpKTsKICAgIH0sIDEwMDApLAogICAgLyoqIOS/ruaUueaMiemSruaTjeS9nCAqL2hhbmRsZVVwZGF0ZTogZnVuY3Rpb24gaGFuZGxlVXBkYXRlKCkgewogICAgICB0aGlzLnJlc2V0KCk7CiAgICAgIHZhciBfc2VsZWN0RGF0YSA9IHRoaXMuJHJlZnMudXNlclRhYmxlLmdldFJhZGlvUmVjb3JkKHRydWUpOwogICAgICBpZiAoX3NlbGVjdERhdGEgPT0gbnVsbCkgewogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeiusOW9lSEnCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChfc2VsZWN0RGF0YS5pZCA9PSAxKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICBtZXNzYWdlOiAn5YaF572u55So5oi35LiN6IO95L+u5pS5IScKICAgICAgICB9KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKF9zZWxlY3REYXRhLnN0YXR1cyA9PSAyKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICBtZXNzYWdlOiAn5rOo6ZSA55qE6LSm5Y+35LiN6IO95pON5L2cIScKICAgICAgICB9KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgX3NlbGVjdERhdGEucGFzc3dvcmQgPSAnJzsKICAgICAgdGhpcy5mb3JtID0gX3NlbGVjdERhdGE7CiAgICAgIHRoaXMub3BlbiA9IHRydWU7CiAgICAgIHRoaXMudGl0bGUgPSAi5L+u5pS555So5oi3IjsKICAgICAgdGhpcy5lZGl0ID0gdHJ1ZTsKICAgIH0sCiAgICAvLyDlj5bmtojmjInpkq4KICAgIGxvY2tmb3JtY2FuY2VsOiBmdW5jdGlvbiBsb2NrZm9ybWNhbmNlbCgpIHsKICAgICAgdGhpcy5sb2Nrb3BlbiA9IGZhbHNlOwogICAgICB0aGlzLmxvY2tmb3JtID0ge307CiAgICB9LAogICAgc3VibG9ja2Zvcm06IGZ1bmN0aW9uIHN1YmxvY2tmb3JtKCkgewogICAgICBpZiAodGhpcy5sb2NrZm9ybS5leHBEYXRlID09IG51bGwgfHwgdGhpcy5sb2NrZm9ybS5leHBEYXRlID09IHVuZGVmaW5lZCkgewogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeaIquatouaXpeacnyEnCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmICh0aGlzLmxvY2tmb3JtLnBhc3N3b3JkID09IG51bGwgfHwgdGhpcy5sb2NrZm9ybS5wYXNzd29yZCA9PSB1bmRlZmluZWQpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICfor7fovpPlhaXnmbvlvZXlr4bnoIEhJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB2YXIgX3NlbGVjdERhdGEgPSB0aGlzLiRyZWZzLnVzZXJUYWJsZS5nZXRSYWRpb1JlY29yZCh0cnVlKTsKICAgICAgdGhpcy5kb1JlbG9jayhfc2VsZWN0RGF0YSwgdGhpcy5sb2NrZm9ybS5wYXNzd29yZCwgdGhpcy5sb2NrZm9ybS5leHBEYXRlKTsKICAgIH0sCiAgICAvKiog6Kej6ZSB5oyJ6ZKu5pON5L2cICovaGFuZGxlUmVsb2NrOiBmdW5jdGlvbiBoYW5kbGVSZWxvY2soKSB7CiAgICAgIHZhciBfc2VsZWN0RGF0YSA9IHRoaXMuJHJlZnMudXNlclRhYmxlLmdldFJhZGlvUmVjb3JkKHRydWUpOwogICAgICBpZiAoX3NlbGVjdERhdGEgPT0gbnVsbCkgewogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeiusOW9lSEnCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChfc2VsZWN0RGF0YS5zdGF0dXMgPT0gMikgewogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgbWVzc2FnZTogJ+azqOmUgOeahOi0puWPt+S4jeiDveaTjeS9nCEnCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChfc2VsZWN0RGF0YS5zdGF0dXMgIT09ICcxJykgewogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgbWVzc2FnZTogJ+WPquiDveWvueOAkOmUgeWumuOAkeeKtuaAgeeahOi/m+ihjOino+mUgSEnCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRoaXMuZG9SZWxvY2soX3NlbGVjdERhdGEpOwogICAgfSwKICAgIC8qKg0KICAgICAqIOino+mUgeaPkOS6pA0KICAgICAqLwogICAgZG9SZWxvY2s6IGRlYm91bmNlKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICB2YXIgX3JlZjEzID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNyhfc2VsZWN0RGF0YSkgewogICAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICAgIHZhciBwYXJhbTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTckKF9jb250ZXh0NykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ3LnByZXYgPSBfY29udGV4dDcubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgcGFyYW0gPSB7CiAgICAgICAgICAgICAgICBpZDogX3NlbGVjdERhdGEuaWQKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIF9jb250ZXh0Ny5uZXh0ID0gMzsKICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kYXhpb3MucG9zdCgnL3N5c1VzZXJDb250cm9sbGVyL3JlbG9ja1VzZXInLCB0aGlzLiRxcy5zdHJpbmdpZnkocGFyYW0pKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgIF90aGlzNy4kbWVzc2FnZS5zdWNjZXNzKCfop6PplIHmiJDlip8nKTsKICAgICAgICAgICAgICAgIF90aGlzNy5nZXRMaXN0KCk7CiAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgICAgICAgICBfdGhpczcubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ny5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTcsIHRoaXMpOwogICAgICB9KSk7CiAgICAgIHJldHVybiBmdW5jdGlvbiAoX3g3KSB7CiAgICAgICAgcmV0dXJuIF9yZWYxMy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICB9OwogICAgfSgpLCAxMDAwKSwKICAgIC8qKg0KICAgICAqIOinkuiJsuexu+Wei+aUueWPmOaXtuabtOaUueadg+mZkOWIl+ihqA0KICAgICAqIEBwYXJhbSByb3dSb2xlSWQNCiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx1bmtub3duPn0NCiAgICAgKi8KICAgIGdldE1lbnU6IGZ1bmN0aW9uIGdldE1lbnUocm93Um9sZUlkKSB7CiAgICAgIHZhciBhID0gdGhpcy4kYXhpb3M7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSggLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICB2YXIgX3JlZjE0ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlOChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgIHZhciBwYXJhbTE7CiAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTgkKF9jb250ZXh0OCkgewogICAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDgucHJldiA9IF9jb250ZXh0OC5uZXh0KSB7CiAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgcGFyYW0xID0gewogICAgICAgICAgICAgICAgICByb2xlSWQ6IHJvd1JvbGVJZAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIF9jb250ZXh0OC5uZXh0ID0gMzsKICAgICAgICAgICAgICAgIHJldHVybiBhLmdldCgnL3N5c01lbnVDb250cm9sbGVyL3JvbGVNZW51VHJlZXNlbGVjdEZvclVzZXInLCB7CiAgICAgICAgICAgICAgICAgIHBhcmFtczogcGFyYW0xCiAgICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgICAgX3RoaXMubWVudU9wdGlvbnMgPSByZXMuZGF0YS5tZW51czsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0OC5zdG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sIF9jYWxsZWU4KTsKICAgICAgICB9KSk7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeDgsIF94OSkgewogICAgICAgICAgcmV0dXJuIF9yZWYxNC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICAgIH0oKSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgY29uc29sZS5lcnJvcign6I635Y+W55So5oi36KeS6Imy5Ye66ZSZJyArIGVycm9yKTsKICAgICAgfSk7CiAgICB9LAogICAgZ2V0VXNlclJvbGU6IGZ1bmN0aW9uIGdldFVzZXJSb2xlKHVzZXJpZCkgewogICAgICB2YXIgYSA9IHRoaXMuJGF4aW9zOwogICAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgICByZXR1cm4gbmV3IFByb21pc2UoIC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9yZWYxNSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTkocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICB2YXIgdXNlclJvbGVQYXJhbXMsIHBhcmFtMTsKICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlOSQoX2NvbnRleHQ5KSB7CiAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0OS5wcmV2ID0gX2NvbnRleHQ5Lm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICB1c2VyUm9sZVBhcmFtcyA9IHsKICAgICAgICAgICAgICAgICAgdXNlcklkOiB1c2VyaWQKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBfY29udGV4dDkubmV4dCA9IDM7CiAgICAgICAgICAgICAgICByZXR1cm4gYS5nZXQoJy9zeXNVc2VyQ29udHJvbGxlci9nZXRVc2VyUm9sZScsIHsKICAgICAgICAgICAgICAgICAgcGFyYW1zOiB1c2VyUm9sZVBhcmFtcwogICAgICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YSA9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICBfdGhpcy51c2VyUm9sZUlkID0gJyc7CiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgX3RoaXMudXNlclJvbGVJZCA9IHJlcy5kYXRhLnJvbGVJZDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAvLyDov5Tlm551c2VyUm9sZeWvueixoQogICAgICAgICAgICAgICAgICByZXNvbHZlKHJlcy5kYXRhKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgIGlmICghKF90aGlzLnVzZXJSb2xlSWQgIT0gJycpKSB7CiAgICAgICAgICAgICAgICAgIF9jb250ZXh0OS5uZXh0ID0gNzsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwYXJhbTEgPSB7CiAgICAgICAgICAgICAgICAgIHJvbGVJZDogX3RoaXMudXNlclJvbGVJZAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIF9jb250ZXh0OS5uZXh0ID0gNzsKICAgICAgICAgICAgICAgIHJldHVybiBhLmdldCgnL3N5c01lbnVDb250cm9sbGVyL3JvbGVNZW51VHJlZXNlbGVjdEZvclVzZXInLCB7CiAgICAgICAgICAgICAgICAgIHBhcmFtczogcGFyYW0xCiAgICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgICAgX3RoaXMubWVudU9wdGlvbnMgPSByZXMuZGF0YS5tZW51czsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0OS5zdG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sIF9jYWxsZWU5KTsKICAgICAgICB9KSk7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeDEwLCBfeDExKSB7CiAgICAgICAgICByZXR1cm4gX3JlZjE1LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSgpKS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCfojrflj5bnlKjmiLfop5LoibLlh7rplJknICsgZXJyb3IpOwogICAgICB9KTsKICAgIH0sCiAgICBnZXRSb2xlQnlUeXBlOiBmdW5jdGlvbiBnZXRSb2xlQnlUeXBlKHVzZXJ0eXBlKSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwogICAgICAvLyDmoLnmja7nlKjmiLfnsbvlnovojrflj5bop5LoibLliJfooagKICAgICAgdmFyIGEgPSB0aGlzLiRheGlvczsKICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBfcmVmMTYgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUxMChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgIHZhciBzZWFyY2hQYXJhbXM7CiAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTEwJChfY29udGV4dDEwKSB7CiAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0MTAucHJldiA9IF9jb250ZXh0MTAubmV4dCkgewogICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIHNlYXJjaFBhcmFtcyA9IHsKICAgICAgICAgICAgICAgICAgdXNlcnR5cGU6IHVzZXJ0eXBlCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgX2NvbnRleHQxMC5uZXh0ID0gMzsKICAgICAgICAgICAgICAgIHJldHVybiBhLmdldCgnL3N5c1JvbGVDb250cm9sbGVyL2dldFJvbGVCeVR5cGUnLCB7CiAgICAgICAgICAgICAgICAgIHBhcmFtczogc2VhcmNoUGFyYW1zCiAgICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgICAgLy8g6L+U5Zue6KeS6Imy5YiX6KGoCiAgICAgICAgICAgICAgICAgIF90aGlzLnJvbGVMaXN0ID0gcmVzLmRhdGE7CiAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzLmRhdGEpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQxMC5zdG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sIF9jYWxsZWUxMCk7CiAgICAgICAgfSkpOwogICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gxMiwgX3gxMykgewogICAgICAgICAgcmV0dXJuIF9yZWYxNi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICAgIH0oKSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgX3RoaXM4LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICBfdGhpczguJG1lc3NhZ2UuZXJyb3IoZXJyb3IpOwogICAgICB9KTsKICAgIH0sCiAgICAvKiog5YiG6YWN6KeS6Imy5pON5L2cICovCiAgICBoYW5kbGVBdXRoUm9sZTogZGVib3VuY2UoZnVuY3Rpb24gKHJvdykgewogICAgICBpZiAocm93LnN0YXR1cyA9PSAnMicpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICfms6jplIDnmoTotKblj7fkuI3og73mk43kvZwhJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLmpzdXNlcmlkID0gcm93LmlkOwogICAgICB0aGlzLmpzdXNlcm5hbWUgPSByb3cudXNlcm5hbWU7CiAgICAgIHRoaXMuanNuaWNrbmFtZSA9IHJvdy5uaWNrbmFtZTsKICAgICAgdGhpcy5nZXRSb2xlQnlUeXBlKHJvdy51c2VydHlwZSk7CiAgICAgIHRoaXMuZ2V0VXNlclJvbGUodGhpcy5qc3VzZXJpZCk7CiAgICAgIHRoaXMuanNvcGVuID0gdHJ1ZTsKICAgICAgdGhpcy50aXRsZSA9ICLliIbphY3op5LoibIiOwogICAgfSwgMTAwMCksCiAgICAvKiog6KeS6Imy5YiG6YWN5o+Q5Lqk5oyJ6ZKuICovCiAgICBqc3N1Ym1pdEZvcm06IGRlYm91bmNlKCAvKiNfX1BVUkVfXyovX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMTIoKSB7CiAgICAgIHZhciBfdGhpczkgPSB0aGlzOwogICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTEyJChfY29udGV4dDEyKSB7CiAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQxMi5wcmV2ID0gX2NvbnRleHQxMi5uZXh0KSB7CiAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgIGlmICh0aGlzLnVzZXJSb2xlSWQgIT0gJycpIHsKICAgICAgICAgICAgICB0aGlzLiRwcm9tcHQoJ+ivt+i+k+WFpeeZu+W9leWvhueggScsICfpibTliKvmk43kvZwnLCB7CiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICAgICAgICAgIGlucHV0VHlwZTogJ3Bhc3N3b3JkJywKICAgICAgICAgICAgICAgIC8vIGN1c3RvbUNsYXNzOiduby1hdXRvZmlsbC1wd2QnLAogICAgICAgICAgICAgICAgaW5wdXRWYWxpZGF0b3I6IGZ1bmN0aW9uIGlucHV0VmFsaWRhdG9yKHZhbCkgewogICAgICAgICAgICAgICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbC5sZW5ndGggPCAxIHx8IHZhbC5sZW5ndGggPiAyMCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGlucHV0RXJyb3JNZXNzYWdlOiAn5LiN6IO95Li656m6LOacgOWkmuWPr+W9leWFpTIw5Liq5a2X56ymJywKICAgICAgICAgICAgICAgIGJlZm9yZUNsb3NlOiBmdW5jdGlvbiBiZWZvcmVDbG9zZShhY3Rpb24sIGluc3RhbmNlLCBkb25lKSB7CiAgICAgICAgICAgICAgICAgIGlmIChhY3Rpb24gPT09ICJjb25maXJtIikgewogICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLiRyZWZzWyJjb25maXJtIl0uJGVsLm9uY2xpY2sgPSBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgZSA9IGUgfHwgd2luZG93LmV2ZW50OwogICAgICAgICAgICAgICAgICAgICAgaWYgKGUuZGV0YWlsICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBkb25lKCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9KS50aGVuKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIF9yZWYxOSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTExKF9yZWYxOCkgewogICAgICAgICAgICAgICAgICB2YXIgdmFsdWUsIHBhcmFtOwogICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTExJChfY29udGV4dDExKSB7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQxMS5wcmV2ID0gX2NvbnRleHQxMS5uZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gX3JlZjE4LnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAvLyDmj5DkuqTlkI7lj7Dop5LoibLliIbphY0KICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcklkOiBfdGhpczkuanN1c2VyaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZUlkOiBfdGhpczkudXNlclJvbGVJZAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhwYXJhbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0MTEubmV4dCA9IDU7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczkuJGF4aW9zLnBvc3QoJy9zeXNVc2VyQ29udHJvbGxlci9hdXRoUm9sZT9hZ2FpblB3ZD0nICsgdmFsdWUsIF90aGlzOS4kcXMuc3RyaW5naWZ5KHBhcmFtKSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM5LiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICfmjojmnYPmiJDlip8nCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM5LmpzY2FuY2VsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM5LmdldExpc3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM5LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQxMS5zdG9wKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9LCBfY2FsbGVlMTEpOwogICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeDE0KSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiBfcmVmMTkuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgfSgpKS5jYXRjaChmdW5jdGlvbiAoZSkge30pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICfor7fpgInmi6nop5LoibLnsbvlnosnCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIGNhc2UgMToKICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgIHJldHVybiBfY29udGV4dDEyLnN0b3AoKTsKICAgICAgICB9CiAgICAgIH0sIF9jYWxsZWUxMiwgdGhpcyk7CiAgICB9KSksIDEwMDApCiAgfQp9Ow=="},{"version":3,"names":["debounce","userinfoDecrypt","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","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref2","wrap","_callee$","_context","prev","next","doLogoff","stop","_x","apply","arguments","catch","_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"],"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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"}]}
|