@steedos/accounts 3.0.4-beta.2 → 3.0.4-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
var tslib_1 = require("tslib");
|
|
4
4
|
var lodash_1 = require("lodash");
|
|
5
|
-
var two_factor_1 = require("@accounts/two-factor");
|
|
6
5
|
var server_1 = require("../server");
|
|
7
6
|
var utils_1 = require("./utils");
|
|
8
7
|
var errors_1 = require("./errors");
|
|
@@ -10,8 +9,8 @@ var objectql_1 = require("@steedos/objectql");
|
|
|
10
9
|
var EFFECTIVE_TIME = 10;
|
|
11
10
|
var CODE_LENGTH = 6;
|
|
12
11
|
var MAX_FAILURE_COUNT = 10;
|
|
13
|
-
var _ = require(
|
|
14
|
-
var moment = require(
|
|
12
|
+
var _ = require("underscore");
|
|
13
|
+
var moment = require("moment");
|
|
15
14
|
var defaultOptions = {
|
|
16
15
|
verifyEmailTokenExpiration: 259200000,
|
|
17
16
|
passwordResetTokenExpiration: 259200000,
|
|
@@ -36,8 +35,10 @@ var defaultOptions = {
|
|
|
36
35
|
};
|
|
37
36
|
var getPathFragmentPrefix = function () {
|
|
38
37
|
var config = (0, objectql_1.getSteedosConfig)().email;
|
|
39
|
-
var defaultPathPrefix =
|
|
40
|
-
var pathFragmentPrefix = config && config.pathFragmentPrefix
|
|
38
|
+
var defaultPathPrefix = "accounts/a/#";
|
|
39
|
+
var pathFragmentPrefix = config && config.pathFragmentPrefix
|
|
40
|
+
? config.pathFragmentPrefix
|
|
41
|
+
: defaultPathPrefix;
|
|
41
42
|
if (pathFragmentPrefix && !/\/$/.test(pathFragmentPrefix)) {
|
|
42
43
|
pathFragmentPrefix += "/";
|
|
43
44
|
}
|
|
@@ -46,9 +47,8 @@ var getPathFragmentPrefix = function () {
|
|
|
46
47
|
var AccountsPassword = (function () {
|
|
47
48
|
function AccountsPassword(options) {
|
|
48
49
|
if (options === void 0) { options = {}; }
|
|
49
|
-
this.serviceName =
|
|
50
|
+
this.serviceName = "password";
|
|
50
51
|
this.options = tslib_1.__assign(tslib_1.__assign({}, defaultOptions), options);
|
|
51
|
-
this.twoFactor = new two_factor_1.TwoFactor(options.twoFactor);
|
|
52
52
|
}
|
|
53
53
|
AccountsPassword.prototype.setStore = function (store) {
|
|
54
54
|
this.db = store;
|
|
@@ -60,7 +60,7 @@ var AccountsPassword = (function () {
|
|
|
60
60
|
switch (_a.label) {
|
|
61
61
|
case 0:
|
|
62
62
|
user = params.user, password = params.password, token = params.token, locale = params.locale;
|
|
63
|
-
passwordUnencrypted = params[
|
|
63
|
+
passwordUnencrypted = params["password-unencrypted"];
|
|
64
64
|
isHashPassword = true;
|
|
65
65
|
if (passwordUnencrypted && !password) {
|
|
66
66
|
password = passwordUnencrypted;
|
|
@@ -129,7 +129,8 @@ var AccountsPassword = (function () {
|
|
|
129
129
|
}
|
|
130
130
|
verificationTokens = (0, utils_1.getUserVerificationTokens)(user);
|
|
131
131
|
tokenRecord = (0, lodash_1.find)(verificationTokens, function (t) { return t.token === token; });
|
|
132
|
-
if (!tokenRecord ||
|
|
132
|
+
if (!tokenRecord ||
|
|
133
|
+
this.isTokenExpired(tokenRecord, this.options.verifyEmailTokenExpiration)) {
|
|
133
134
|
throw new Error(this.options.errors.verifyEmailLinkExpired);
|
|
134
135
|
}
|
|
135
136
|
emailRecord = (0, lodash_1.find)(user.emails, function (e) { return e.address === tokenRecord.address; });
|
|
@@ -165,7 +166,7 @@ var AccountsPassword = (function () {
|
|
|
165
166
|
resetTokens = (0, utils_1.getUserResetTokens)(user);
|
|
166
167
|
resetTokenRecord = (0, lodash_1.find)(resetTokens, function (t) { return t.token === token; });
|
|
167
168
|
if (!resetTokenRecord ||
|
|
168
|
-
this.isTokenExpired(resetTokenRecord, resetTokenRecord.reason ===
|
|
169
|
+
this.isTokenExpired(resetTokenRecord, resetTokenRecord.reason === "enroll"
|
|
169
170
|
? this.options.passwordEnrollTokenExpiration
|
|
170
171
|
: this.options.passwordResetTokenExpiration)) {
|
|
171
172
|
throw new Error(this.options.errors.resetPasswordLinkExpired);
|
|
@@ -181,7 +182,7 @@ var AccountsPassword = (function () {
|
|
|
181
182
|
case 3:
|
|
182
183
|
_a.sent();
|
|
183
184
|
this.server.getHooks().emit(server_1.ServerHooks.ResetPasswordSuccess, user);
|
|
184
|
-
if (!(resetTokenRecord.reason ===
|
|
185
|
+
if (!(resetTokenRecord.reason === "enroll")) return [3, 5];
|
|
185
186
|
return [4, this.db.verifyEmail(user.id, resetTokenRecord.address)];
|
|
186
187
|
case 4:
|
|
187
188
|
_a.sent();
|
|
@@ -196,7 +197,7 @@ var AccountsPassword = (function () {
|
|
|
196
197
|
if (!this.options.notifyUserAfterPasswordChanged) return [3, 9];
|
|
197
198
|
address = user.emails && user.emails[0].address;
|
|
198
199
|
if (!address) return [3, 9];
|
|
199
|
-
passwordChangedMail = this.server.prepareMail(address,
|
|
200
|
+
passwordChangedMail = this.server.prepareMail(address, "", this.server.sanitizeUser(user), "", this.server.options.emailTemplates.passwordChanged, this.server.options.emailTemplates.from);
|
|
200
201
|
return [4, this.server.options.sendMail(passwordChangedMail)];
|
|
201
202
|
case 8:
|
|
202
203
|
_a.sent();
|
|
@@ -322,7 +323,7 @@ var AccountsPassword = (function () {
|
|
|
322
323
|
case 4:
|
|
323
324
|
verify = _a.sent();
|
|
324
325
|
if (verify) {
|
|
325
|
-
throw new Error(
|
|
326
|
+
throw new Error("最近 " + userProfile.password_history + " 次密码不能相同");
|
|
326
327
|
}
|
|
327
328
|
_a.label = 5;
|
|
328
329
|
case 5:
|
|
@@ -344,7 +345,7 @@ var AccountsPassword = (function () {
|
|
|
344
345
|
if (!this.options.notifyUserAfterPasswordChanged) return [3, 12];
|
|
345
346
|
address = user.emails && user.emails[0].address;
|
|
346
347
|
if (!address) return [3, 12];
|
|
347
|
-
passwordChangedMail = this.server.prepareMail(address,
|
|
348
|
+
passwordChangedMail = this.server.prepareMail(address, "", this.server.sanitizeUser(user), "", this.server.options.emailTemplates.passwordChanged, this.server.options.emailTemplates.from);
|
|
348
349
|
return [4, this.server.options.sendMail(passwordChangedMail)];
|
|
349
350
|
case 11:
|
|
350
351
|
_a.sent();
|
|
@@ -379,7 +380,7 @@ var AccountsPassword = (function () {
|
|
|
379
380
|
return [4, this.db.addEmailVerificationToken(user.id, address, token, code)];
|
|
380
381
|
case 2:
|
|
381
382
|
_a.sent();
|
|
382
|
-
resetPasswordMail = this.server.prepareMail(address, code, this.server.sanitizeUser(user), getPathFragmentPrefix() +
|
|
383
|
+
resetPasswordMail = this.server.prepareMail(address, code, this.server.sanitizeUser(user), getPathFragmentPrefix() + "verify-email", this.server.options.emailTemplates.verifyEmail, this.server.options.emailTemplates.from);
|
|
383
384
|
return [4, this.server.options.sendMail(resetPasswordMail)];
|
|
384
385
|
case 3:
|
|
385
386
|
_a.sent();
|
|
@@ -407,10 +408,10 @@ var AccountsPassword = (function () {
|
|
|
407
408
|
throw new Error(this.options.errors.userNotFound);
|
|
408
409
|
}
|
|
409
410
|
token = (0, server_1.generateRandomToken)();
|
|
410
|
-
return [4, this.db.addResetPasswordToken(user.id, address, token,
|
|
411
|
+
return [4, this.db.addResetPasswordToken(user.id, address, token, "reset")];
|
|
411
412
|
case 2:
|
|
412
413
|
_a.sent();
|
|
413
|
-
resetPasswordMail = this.server.prepareMail(address, token, this.server.sanitizeUser(user), getPathFragmentPrefix() +
|
|
414
|
+
resetPasswordMail = this.server.prepareMail(address, token, this.server.sanitizeUser(user), getPathFragmentPrefix() + "reset-password", this.server.options.emailTemplates.resetPassword, this.server.options.emailTemplates.from);
|
|
414
415
|
return [4, this.server.options.sendMail(resetPasswordMail)];
|
|
415
416
|
case 3:
|
|
416
417
|
_a.sent();
|
|
@@ -435,10 +436,10 @@ var AccountsPassword = (function () {
|
|
|
435
436
|
throw new Error(this.options.errors.userNotFound);
|
|
436
437
|
}
|
|
437
438
|
token = (0, server_1.generateRandomToken)();
|
|
438
|
-
return [4, this.db.addResetPasswordToken(user.id, address, token,
|
|
439
|
+
return [4, this.db.addResetPasswordToken(user.id, address, token, "enroll")];
|
|
439
440
|
case 2:
|
|
440
441
|
_a.sent();
|
|
441
|
-
enrollmentMail = this.server.prepareMail(address, token, this.server.sanitizeUser(user), getPathFragmentPrefix() +
|
|
442
|
+
enrollmentMail = this.server.prepareMail(address, token, this.server.sanitizeUser(user), getPathFragmentPrefix() + "enroll-account", this.server.options.emailTemplates.enrollAccount, this.server.options.emailTemplates.from);
|
|
442
443
|
return [4, this.server.options.sendMail(enrollmentMail)];
|
|
443
444
|
case 3:
|
|
444
445
|
_a.sent();
|
|
@@ -530,7 +531,9 @@ var AccountsPassword = (function () {
|
|
|
530
531
|
return tslib_1.__generator(this, function (_a) {
|
|
531
532
|
switch (_a.label) {
|
|
532
533
|
case 0:
|
|
533
|
-
if (this.options.sendVerificationEmailAfterSignup &&
|
|
534
|
+
if (this.options.sendVerificationEmailAfterSignup &&
|
|
535
|
+
user.email &&
|
|
536
|
+
!user.email_verified)
|
|
534
537
|
this.sendVerificationEmail(user.email);
|
|
535
538
|
return [4, this.db.findUserById(userId_1)];
|
|
536
539
|
case 1:
|
|
@@ -571,7 +574,7 @@ var AccountsPassword = (function () {
|
|
|
571
574
|
return tslib_1.__generator(this, function (_b) {
|
|
572
575
|
switch (_b.label) {
|
|
573
576
|
case 0:
|
|
574
|
-
_a = typeof user ==
|
|
577
|
+
_a = typeof user == "string"
|
|
575
578
|
? this.toMobileAndEmail({ user: user })
|
|
576
579
|
: this.toMobileAndEmail(tslib_1.__assign({}, user)), username = _a.username, email = _a.email, id = _a.id, mobile = _a.mobile;
|
|
577
580
|
foundUser = null;
|
|
@@ -610,7 +613,7 @@ var AccountsPassword = (function () {
|
|
|
610
613
|
return tslib_1.__generator(this, function (_b) {
|
|
611
614
|
switch (_b.label) {
|
|
612
615
|
case 0:
|
|
613
|
-
_a = typeof user ==
|
|
616
|
+
_a = typeof user == "string"
|
|
614
617
|
? this.toMobileAndEmail({ user: user })
|
|
615
618
|
: this.toMobileAndEmail(tslib_1.__assign({}, user)), username = _a.username, email = _a.email, id = _a.id, mobile = _a.mobile;
|
|
616
619
|
foundUser = null;
|
|
@@ -655,11 +658,11 @@ var AccountsPassword = (function () {
|
|
|
655
658
|
login_failed_lockout_time = foundUser.login_failed_lockout_time;
|
|
656
659
|
if (locked) {
|
|
657
660
|
if (!login_failed_lockout_time) {
|
|
658
|
-
throw new Error(
|
|
661
|
+
throw new Error("账户已锁定,请联系管理员");
|
|
659
662
|
}
|
|
660
663
|
else {
|
|
661
664
|
if (moment(login_failed_lockout_time).isAfter(new Date())) {
|
|
662
|
-
throw new Error(
|
|
665
|
+
throw new Error("账户已锁定,请联系管理员");
|
|
663
666
|
}
|
|
664
667
|
}
|
|
665
668
|
}
|
|
@@ -681,12 +684,17 @@ var AccountsPassword = (function () {
|
|
|
681
684
|
case 11:
|
|
682
685
|
userProfile = _b.sent();
|
|
683
686
|
login_failed_lockout_time = foundUser.login_failed_lockout_time;
|
|
684
|
-
if (!(userProfile.lockout_interval != 0 &&
|
|
685
|
-
|
|
687
|
+
if (!(userProfile.lockout_interval != 0 &&
|
|
688
|
+
moment(login_failed_lockout_time).isBefore(new Date()))) return [3, 13];
|
|
689
|
+
return [4, this.db.updateUser(foundUser.id, {
|
|
690
|
+
$set: { login_failed_number: 1 },
|
|
691
|
+
})];
|
|
686
692
|
case 12:
|
|
687
693
|
_b.sent();
|
|
688
694
|
return [3, 15];
|
|
689
|
-
case 13: return [4, this.db.updateUser(foundUser.id, {
|
|
695
|
+
case 13: return [4, this.db.updateUser(foundUser.id, {
|
|
696
|
+
$inc: { login_failed_number: 1 },
|
|
697
|
+
})];
|
|
690
698
|
case 14:
|
|
691
699
|
_b.sent();
|
|
692
700
|
_b.label = 15;
|
|
@@ -700,16 +708,24 @@ var AccountsPassword = (function () {
|
|
|
700
708
|
login_failed_lockout_time_1 = null;
|
|
701
709
|
}
|
|
702
710
|
else {
|
|
703
|
-
login_failed_lockout_time_1 = new Date(moment().add(userProfile.lockout_interval,
|
|
711
|
+
login_failed_lockout_time_1 = new Date(moment().add(userProfile.lockout_interval, "m"));
|
|
704
712
|
}
|
|
705
|
-
return [4, this.db.updateUser(foundUser.id, {
|
|
713
|
+
return [4, this.db.updateUser(foundUser.id, {
|
|
714
|
+
$set: {
|
|
715
|
+
lockout: true,
|
|
716
|
+
login_failed_lockout_time: login_failed_lockout_time_1,
|
|
717
|
+
},
|
|
718
|
+
})];
|
|
706
719
|
case 17:
|
|
707
720
|
_b.sent();
|
|
708
721
|
_b.label = 18;
|
|
709
722
|
case 18: throw new Error(this.server.options.ambiguousErrorMessages
|
|
710
723
|
? this.options.errors.invalidCredentials
|
|
711
724
|
: this.options.errors.incorrectPassword);
|
|
712
|
-
case 19: return [4, this.db.updateUser(foundUser.id, {
|
|
725
|
+
case 19: return [4, this.db.updateUser(foundUser.id, {
|
|
726
|
+
$set: { lockout: false, login_failed_number: 0 },
|
|
727
|
+
$unset: { login_failed_lockout_time: 1 },
|
|
728
|
+
})];
|
|
713
729
|
case 20:
|
|
714
730
|
_b.sent();
|
|
715
731
|
_b.label = 21;
|
|
@@ -745,7 +761,9 @@ var AccountsPassword = (function () {
|
|
|
745
761
|
var hashAlgorithm, hashedPassword;
|
|
746
762
|
return tslib_1.__generator(this, function (_a) {
|
|
747
763
|
hashAlgorithm = this.options.passwordHashAlgorithm;
|
|
748
|
-
hashedPassword = hashAlgorithm
|
|
764
|
+
hashedPassword = hashAlgorithm
|
|
765
|
+
? (0, utils_1.hashPassword)(password, hashAlgorithm)
|
|
766
|
+
: password;
|
|
749
767
|
return [2, (0, utils_1.bcryptPassword)(hashedPassword)];
|
|
750
768
|
});
|
|
751
769
|
});
|
|
@@ -770,22 +788,28 @@ var AccountsPassword = (function () {
|
|
|
770
788
|
case 0:
|
|
771
789
|
code = (0, server_1.generateRandomCode)();
|
|
772
790
|
if (!user.email) return [3, 3];
|
|
773
|
-
return [4, this.db.addVerificationCode(user, code, {
|
|
791
|
+
return [4, this.db.addVerificationCode(user, code, {
|
|
792
|
+
MAX_FAILURE_COUNT: MAX_FAILURE_COUNT,
|
|
793
|
+
EFFECTIVE_TIME: EFFECTIVE_TIME,
|
|
794
|
+
})];
|
|
774
795
|
case 1:
|
|
775
796
|
result = _a.sent();
|
|
776
|
-
verificationCodeMail = this.server.prepareMail(user.email, result.code, null, getPathFragmentPrefix() +
|
|
797
|
+
verificationCodeMail = this.server.prepareMail(user.email, result.code, null, getPathFragmentPrefix() + "verify-email", this.server.options.emailTemplates.verificationCode, this.server.options.emailTemplates.from);
|
|
777
798
|
return [4, this.server.options.sendMail(verificationCodeMail)];
|
|
778
799
|
case 2:
|
|
779
800
|
_a.sent();
|
|
780
801
|
return [2, result.owner];
|
|
781
802
|
case 3:
|
|
782
803
|
if (!user.mobile) return [3, 6];
|
|
783
|
-
return [4, this.db.addVerificationCode(user, code, {
|
|
804
|
+
return [4, this.db.addVerificationCode(user, code, {
|
|
805
|
+
MAX_FAILURE_COUNT: MAX_FAILURE_COUNT,
|
|
806
|
+
EFFECTIVE_TIME: EFFECTIVE_TIME,
|
|
807
|
+
})];
|
|
784
808
|
case 4:
|
|
785
809
|
result = _a.sent();
|
|
786
810
|
sms = {
|
|
787
811
|
mobile: user.mobile,
|
|
788
|
-
message: "\u60A8\u7684\u9A8C\u8BC1\u7801\u4E3A\uFF1A".concat(result.code, "\uFF0C\u8BE5\u9A8C\u8BC1\u7801").concat(EFFECTIVE_TIME, "\u5206\u949F\u5185\u6709\u6548\uFF0C\u8BF7\u52FF\u6CC4\u6F0F\u4E8E\u4ED6\u4EBA\uFF01")
|
|
812
|
+
message: "\u60A8\u7684\u9A8C\u8BC1\u7801\u4E3A\uFF1A".concat(result.code, "\uFF0C\u8BE5\u9A8C\u8BC1\u7801").concat(EFFECTIVE_TIME, "\u5206\u949F\u5185\u6709\u6548\uFF0C\u8BF7\u52FF\u6CC4\u6F0F\u4E8E\u4ED6\u4EBA\uFF01"),
|
|
789
813
|
};
|
|
790
814
|
return [4, this.server.options.sendSMS(sms)];
|
|
791
815
|
case 5:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts-password.js","sourceRoot":"","sources":["../../src/password/accounts-password.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"accounts-password.js","sourceRoot":"","sources":["../../src/password/accounts-password.ts"],"names":[],"mappings":";;;AAAA,iCASgB;AAYhB,oCAKmB;AACnB,iCAOiB;AAOjB,mCAAkC;AAClC,8CAAgE;AAChE,IAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,IAAM,WAAW,GAAG,CAAC,CAAC;AACtB,IAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,IAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAChC,IAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AA2EjC,IAAM,cAAc,GAAG;IAErB,0BAA0B,EAAE,SAAS;IAErC,4BAA4B,EAAE,SAAS;IAEvC,6BAA6B,EAAE,UAAU;IACzC,8BAA8B,EAAE,IAAI;IACpC,8BAA8B,EAAE,KAAK;IACrC,uCAAuC,EAAE,IAAI;IAC7C,yCAAyC,EAAE,KAAK;IAChD,aAAa,YAAC,KAAc;QAC1B,OAAO,CAAC,IAAA,gBAAO,EAAC,IAAA,aAAI,EAAC,KAAK,CAAC,CAAC,IAAI,IAAA,eAAO,EAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IACD,gBAAgB,YAAC,QAAuB;QACtC,OAAO,CAAC,IAAA,gBAAO,EAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IACD,gBAAgB,YAAC,QAAiB;QAChC,IAAM,aAAa,GAAG,wBAAwB,CAAC;QAC/C,IAAM,OAAO,GACX,QAAQ,IAAI,CAAC,IAAA,gBAAO,EAAC,IAAA,aAAI,EAAC,QAAQ,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvE,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,iBAAA;IACN,gCAAgC,EAAE,KAAK;CACxC,CAAC;AAEF,IAAM,qBAAqB,GAAG;IAC5B,IAAM,MAAM,GAAG,IAAA,2BAAgB,GAAE,CAAC,KAAK,CAAC;IACxC,IAAM,iBAAiB,GAAG,cAAc,CAAC;IACzC,IAAI,kBAAkB,GACpB,MAAM,IAAI,MAAM,CAAC,kBAAkB;QACjC,CAAC,CAAC,MAAM,CAAC,kBAAkB;QAC3B,CAAC,CAAC,iBAAiB,CAAC;IACxB,IAAI,kBAAkB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC1D,kBAAkB,IAAI,GAAG,CAAC;IAC5B,CAAC;IACD,OAAO,kBAAkB,CAAC;AAC5B,CAAC,CAAC;AAKF;IAME,0BAAY,OAAqC;QAArC,wBAAA,EAAA,YAAqC;QAL1C,gBAAW,GAAG,UAAU,CAAC;QAM9B,IAAI,CAAC,OAAO,yCAAQ,cAAc,GAAK,OAAO,CAAE,CAAC;IACnD,CAAC;IAEM,mCAAQ,GAAf,UAAgB,KAAwB;QACtC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;IAElB,CAAC;IAEY,uCAAY,GAAzB,UAA0B,MAAW;;;;;;wBAC7B,IAAI,GAA8B,MAAM,KAApC,EAAE,QAAQ,GAAoB,MAAM,SAA1B,EAAE,KAAK,GAAa,MAAM,MAAnB,EAAE,MAAM,GAAK,MAAM,OAAX,CAAY;wBAEzC,mBAAmB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;wBACvD,cAAc,GAAG,IAAI,CAAC;wBAC1B,IAAI,mBAAmB,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACrC,QAAQ,GAAG,mBAAmB,CAAC;4BAC/B,cAAc,GAAG,KAAK,CAAC;wBACzB,CAAC;6BAEG,CAAA,IAAI,IAAI,KAAK,CAAA,EAAb,cAAa;wBACR,WAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,EAAA;4BAAxD,WAAO,SAAiD,EAAC;;wBAG3D,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACvB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;wBACnE,CAAC;wBAED,IAAI,CAAC,CAAC,IAAA,iBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,IAAA,sBAAa,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAA,iBAAQ,EAAC,QAAQ,CAAC,EAAE,CAAC;4BACrE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;wBACnD,CAAC;wBAEiB,WAAM,IAAI,CAAC,qBAAqB,CAChD,IAAI,EACJ,QAAQ,EACR,cAAc,CACf,EAAA;;wBAJK,SAAS,GAAG,SAIjB;wBAOD,WAAO,SAAS,EAAC;;;;KAClB;IAOM,0CAAe,GAAtB,UAAuB,KAAa;QAClC,OAAO,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAOM,uCAAY,GAAnB,UAAoB,EAAU;QAC5B,OAAO,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAOM,6CAAkB,GAAzB,UAA0B,QAAgB;QACxC,OAAO,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAEY,wCAAa,GAA1B,UAA2B,EAAU;;;;4BAC5B,WAAM,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,EAAA;4BAAtC,WAAO,SAA+B,EAAC;;;;KACxC;IAYM,mCAAQ,GAAf,UACE,MAAc,EACd,QAAgB,EAChB,QAAiB;QAEjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IASM,sCAAW,GAAlB,UAAmB,MAAc,EAAE,KAAa;QAC9C,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAOY,sCAAW,GAAxB,UAAyB,KAAa;;;;;;wBACpC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAA,iBAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;4BAC/B,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;wBACpD,CAAC;wBAEY,WAAM,IAAI,CAAC,EAAE,CAAC,gCAAgC,CAAC,KAAK,CAAC,EAAA;;wBAA5D,IAAI,GAAG,SAAqD;wBAClE,IAAI,CAAC,IAAI,EAAE,CAAC;4BACV,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;wBAC9D,CAAC;wBAEK,kBAAkB,GAAG,IAAA,iCAAyB,EAAC,IAAI,CAAC,CAAC;wBACrD,WAAW,GAAG,IAAA,aAAI,EACtB,kBAAkB,EAClB,UAAC,CAAc,IAAK,OAAA,CAAC,CAAC,KAAK,KAAK,KAAK,EAAjB,CAAiB,CACtC,CAAC;wBACF,IACE,CAAC,WAAW;4BACZ,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,EACzE,CAAC;4BACD,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;wBAC9D,CAAC;wBAEK,WAAW,GAAG,IAAA,aAAI,EACtB,IAAI,CAAC,MAAM,EACX,UAAC,CAAc,IAAK,OAAA,CAAC,CAAC,OAAO,KAAK,WAAW,CAAC,OAAO,EAAjC,CAAiC,CACtD,CAAC;wBACF,IAAI,CAAC,WAAW,EAAE,CAAC;4BACjB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC;wBACrE,CAAC;wBACD,WAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC,EAAA;;wBAAvD,SAAuD,CAAC;;;;;KACzD;IAQY,wCAAa,GAA1B,UACE,KAAa,EACb,WAAyB,EACzB,KAA6B;;;;;;wBAE7B,IAAI,CAAC,KAAK,IAAI,CAAC,IAAA,iBAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;4BAC/B,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;wBACpD,CAAC;wBACD,IAAI,CAAC,WAAW,IAAI,CAAC,IAAA,iBAAQ,EAAC,WAAW,CAAC,EAAE,CAAC;4BAC3C,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;wBAC1D,CAAC;wBAEY,WAAM,IAAI,CAAC,EAAE,CAAC,4BAA4B,CAAC,KAAK,CAAC,EAAA;;wBAAxD,IAAI,GAAG,SAAiD;wBAC9D,IAAI,CAAC,IAAI,EAAE,CAAC;4BACV,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;wBAChE,CAAC;wBAEK,WAAW,GAAG,IAAA,0BAAkB,EAAC,IAAI,CAAC,CAAC;wBACvC,gBAAgB,GAAG,IAAA,aAAI,EAAC,WAAW,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,KAAK,KAAK,KAAK,EAAjB,CAAiB,CAAC,CAAC;wBAErE,IACE,CAAC,gBAAgB;4BACjB,IAAI,CAAC,cAAc,CACjB,gBAAgB,EAChB,gBAAgB,CAAC,MAAM,KAAK,QAAQ;gCAClC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,6BAA6B;gCAC5C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAC9C,EACD,CAAC;4BACD,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;wBAChE,CAAC;wBAEK,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;wBACjC,IACE,CAAC,IAAA,iBAAQ,EACP,MAAM,CAAC,GAAG,CAAC,UAAC,KAAkB,IAAK,OAAA,KAAK,CAAC,OAAO,EAAb,CAAa,CAAC,EACjD,gBAAgB,CAAC,OAAO,CACzB,EACD,CAAC;4BACD,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC;wBACvE,CAAC;wBAEgB,WAAM,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAA;;wBAAxD,QAAQ,GAAG,SAA6C;wBAE9D,WAAM,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAC5B,IAAI,CAAC,EAAE,EACP,gBAAgB,CAAC,OAAO,EACxB,QAAQ,EACR,KAAK,CACN,EAAA;;wBALD,SAKC,CAAC;wBAEF,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,oBAAW,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;6BAGhE,CAAA,gBAAgB,CAAC,MAAM,KAAK,QAAQ,CAAA,EAApC,cAAoC;wBACtC,WAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAA;;wBAA5D,SAA4D,CAAC;;;6BAI3D,IAAI,CAAC,OAAO,CAAC,uCAAuC,EAApD,cAAoD;wBACtD,WAAM,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAA;;wBAA5C,SAA4C,CAAC;;;6BAG3C,IAAI,CAAC,OAAO,CAAC,8BAA8B,EAA3C,cAA2C;wBACvC,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;6BAClD,OAAO,EAAP,cAAO;wBACH,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CACjD,OAAO,EACP,EAAE,EACF,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAC9B,EAAE,EACF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,eAAe,EAClD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CACxC,CAAC;wBACF,WAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAA;;wBAAvD,SAAuD,CAAC;;;wBAI5D,IAAI,IAAI,CAAC,OAAO,CAAC,8BAA8B,EAAE,CAAC;4BAChD,WAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,EAAC;wBAChD,CAAC;wBACD,WAAO,IAAI,EAAC;;;;KACb;IAEY,yCAAc,GAA3B,UAA4B,MAAM;;;;;;wBAC1B,OAAO,GAAG,IAAA,2BAAgB,GAAE,CAAC,MAAM,CAAC,GAAG,CAAC;wBAC1C,gBAAgB,GAAG,CAAC,CAAC;wBACrB,kBAAkB,GAAG,EAAE,CAAC;wBACxB,gBAAgB,GAAG,EAAE,CAAC;wBACtB,UAAU,GAAG,KAAK,CAAC;wBACnB,oBAAoB,GAAG,KAAK,CAAC;wBAC7B,wBAAwB,GAAG,IAAI,CAAC;wBAChC,0BAA0B,GAAG,KAAK,CAAC;wBACnC,8BAA8B,GAAG,IAAI,CAAC;wBACvB,WAAM,IAAA,oBAAS,EAAC,aAAa,CAAC,CAAC,IAAI,CAAC;gCACrD,OAAO,EAAE,oBAAa,MAAM,+BAAqB,OAAO,OAAI;6BAC7D,CAAC,EAAA;;wBAFI,UAAU,GAAG,SAEjB;6BACE,CAAA,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA,EAArB,cAAqB;wBACjB,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;wBACf,WAAM,IAAA,oBAAS,EAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC;gCACtD,OAAO,EAAE,oBAAa,SAAS,CAAC,OAAO,uDAA6C,OAAO,OAAI;6BAChG,CAAC,EAAA;;wBAFI,QAAQ,GAAG,SAEf;wBACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAClB,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;4BAChC,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAAE,CAAC;gCAC3C,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;4BAC1D,CAAC;4BACD,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,oBAAoB,CAAC,EAAE,CAAC;gCAC7C,kBAAkB,GAAG,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;4BAC9D,CAAC;4BACD,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAAE,CAAC;gCAC3C,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;4BAC1D,CAAC;4BACD,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC;gCACrC,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;4BACtC,CAAC;4BACD,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,sBAAsB,CAAC,EAAE,CAAC;gCAC/C,oBAAoB,GAAG,WAAW,CAAC,oBAAoB,CAAC;4BAC1D,CAAC;4BACD,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,0BAA0B,CAAC,EAAE,CAAC;gCACnD,wBAAwB,GAAG,WAAW,CAAC,wBAAwB,CAAC;4BAClE,CAAC;4BACD,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,4BAA4B,CAAC,EAAE,CAAC;gCACrD,0BAA0B,GAAG,WAAW,CAAC,0BAA0B,CAAC;4BACtE,CAAC;4BACD,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,gCAAgC,CAAC,EAAE,CAAC;gCACzD,8BAA8B;oCAC5B,WAAW,CAAC,8BAA8B,CAAC;4BAC/C,CAAC;wBACH,CAAC;;4BAEH,WAAO,MAAM,CAAC,MAAM,CAAC;4BACnB,KAAK,EAAE,OAAO;4BACd,gBAAgB,EAAE,gBAAgB;4BAClC,kBAAkB,EAAE,kBAAkB;4BACtC,gBAAgB,EAAE,gBAAgB;4BAClC,oBAAoB,sBAAA;4BACpB,UAAU,YAAA;4BACV,wBAAwB,0BAAA;4BACxB,0BAA0B,4BAAA;4BAC1B,8BAA8B,gCAAA;yBAC/B,CAAC,EAAC;;;;KACJ;IAQY,sCAAW,GAAxB,UAAyB,MAAc,EAAE,WAAmB;;;;;4BACzC,WAAM,IAAA,sBAAc,EAAC,WAAW,CAAC,EAAA;;wBAA5C,QAAQ,GAAG,SAAiC;wBAClD,WAAO,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAC;;;;KAC9C;IAUY,yCAAc,GAA3B,UACE,MAAc,EACd,WAAmB,EACnB,WAAmB;;;;;;wBAEnB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;4BAChD,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;wBACvD,CAAC;wBAEiB,WAAM,IAAI,CAAC,qBAAqB,CAChD,EAAE,EAAE,EAAE,MAAM,EAAE,EACd,WAAW,CACZ,EAAA;;wBAHK,IAAI,GAAQ,SAGjB;wBACK,IAAI,GAAG,IAAA,2BAAgB,GAAE,CAAC,MAAM,CAAC,IAAI,CAAC;6BACxC,CAAC,IAAI,EAAL,cAAK;wBACD,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC;wBAEzC,WAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAA;;wBAA/C,WAAW,GAAG,SAAiC;wBAE/C,oBAAoB,GAAG,CAAC,CAAC,IAAI,CACjC,eAAe,EACf,WAAW,CAAC,gBAAgB,CAC7B,CAAC;8BACqC,EAApB,6CAAoB;;;6BAApB,CAAA,kCAAoB,CAAA;wBAA5B,IAAI;wBACA,WAAM,IAAA,sBAAc,EAAC,WAAW,EAAE,IAAI,CAAC,EAAA;;wBAAhD,MAAM,GAAG,SAAuC;wBACpD,IAAI,MAAM,EAAE,CAAC;4BACX,MAAM,IAAI,KAAK,CACb,KAAK,GAAG,WAAW,CAAC,gBAAgB,GAAG,UAAU,CAClD,CAAC;wBACJ,CAAC;;;wBANgB,IAAoB,CAAA;;4BAUxB,WAAM,IAAA,sBAAc,EAAC,WAAW,CAAC,EAAA;;wBAA5C,QAAQ,GAAG,SAAiC;wBAClD,WAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAA;;wBAA3C,SAA2C,CAAC;wBAE5C,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,oBAAW,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;6BAEjE,IAAI,CAAC,OAAO,CAAC,yCAAyC,EAAtD,eAAsD;wBACxD,WAAM,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAA;;wBAA5C,SAA4C,CAAC;;;6BAG3C,IAAI,CAAC,OAAO,CAAC,8BAA8B,EAA3C,eAA2C;wBACvC,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;6BAClD,OAAO,EAAP,eAAO;wBACH,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CACjD,OAAO,EACP,EAAE,EACF,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAC9B,EAAE,EACF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,eAAe,EAClD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CACxC,CAAC;wBACF,WAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAA;;wBAAvD,SAAuD,CAAC;;;;;;KAG7D;IAUY,gDAAqB,GAAlC,UAAmC,OAAe;;;;;;wBAChD,IAAI,CAAC,OAAO,IAAI,CAAC,IAAA,iBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC;4BACnC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;wBACpD,CAAC;wBAEY,WAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,EAAA;;wBAA7C,IAAI,GAAG,SAAsC;wBACnD,IAAI,CAAC,IAAI,EAAE,CAAC;4BAEV,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;gCAC/C,WAAO;4BACT,CAAC;4BACD,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;wBACpD,CAAC;wBAGD,IAAI,IAAI,CAAC,cAAc;4BAAE,WAAO;wBAE1B,IAAI,GAAG,IAAA,2BAAkB,GAAE,CAAC;wBAC5B,KAAK,GAAG,IAAA,4BAAmB,GAAE,CAAC;wBACpC,WAAM,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAA;;wBAAtE,SAAsE,CAAC;wBAEjE,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAC/C,OAAO,EACP,IAAI,EACJ,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAC9B,qBAAqB,EAAE,GAAG,cAAc,EACxC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,EAC9C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CACxC,CAAC;wBAEF,WAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAA;;wBAArD,SAAqD,CAAC;;;;;KACvD;IASY,iDAAsB,GAAnC,UAAoC,OAAe;;;;;;wBACjD,IAAI,CAAC,OAAO,IAAI,CAAC,IAAA,iBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC;4BACnC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;wBACpD,CAAC;wBAEY,WAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,EAAA;;wBAA7C,IAAI,GAAG,SAAsC;wBACnD,IAAI,CAAC,IAAI,EAAE,CAAC;4BAEV,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;gCAC/C,WAAO;4BACT,CAAC;4BACD,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;wBACpD,CAAC;wBACK,KAAK,GAAG,IAAA,4BAAmB,GAAE,CAAC;wBACpC,WAAM,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,EAAA;;wBAArE,SAAqE,CAAC;wBAEhE,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAC/C,OAAO,EACP,KAAK,EACL,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAC9B,qBAAqB,EAAE,GAAG,gBAAgB,EAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,aAAa,EAChD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CACxC,CAAC;wBAEF,WAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAA;;wBAArD,SAAqD,CAAC;;;;;KACvD;IAUY,8CAAmB,GAAhC,UAAiC,OAAe;;;;;;wBAC9C,IAAI,CAAC,OAAO,IAAI,CAAC,IAAA,iBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC;4BACnC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;wBACpD,CAAC;wBAEY,WAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,EAAA;;wBAA7C,IAAI,GAAG,SAAsC;wBACnD,IAAI,CAAC,IAAI,EAAE,CAAC;4BACV,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;wBACpD,CAAC;wBACK,KAAK,GAAG,IAAA,4BAAmB,GAAE,CAAC;wBACpC,WAAM,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAA;;wBAAtE,SAAsE,CAAC;wBAEjE,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAC5C,OAAO,EACP,KAAK,EACL,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAC9B,qBAAqB,EAAE,GAAG,gBAAgB,EAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,aAAa,EAChD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CACxC,CAAC;wBAEF,WAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAA;;wBAAlD,SAAkD,CAAC;;;;;KACpD;IAOY,qCAAU,GAAvB,UAAwB,IAA4B;;;;;;;wBAClD,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;4BAChC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;wBAC7D,CAAC;wBAED,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;4BACnE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;wBACvD,CAAC;wBAED,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;4BAC1D,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;wBACpD,CAAC;wBAEG,KAAA,IAAI,CAAC,MAAM,CAAA;iCAAX,cAAW;wBAAK,WAAM,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAA;;wBAA5C,KAAA,CAAC,SAA2C,CAAC,CAAA;;;wBAAhE,QAAkE,CAAC;4BACjE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;wBAC3D,CAAC;wBAEG,KAAA,IAAI,CAAC,QAAQ,CAAA;iCAAb,cAAa;wBAAK,WAAM,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAA;;wBAAhD,KAAA,CAAC,SAA+C,CAAC,CAAA;;;wBAAtE,QAAwE,CAAC;4BACvE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;wBAC7D,CAAC;wBAEG,KAAA,IAAI,CAAC,KAAK,CAAA;iCAAV,cAAU;wBAAK,WAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAA;;wBAA1C,KAAA,CAAC,SAAyC,CAAC,CAAA;;;wBAA7D,QAA+D,CAAC;4BAC9D,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;wBAC1D,CAAC;wBAED,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;4BACvC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;wBAC1D,CAAC;6BAEG,IAAI,CAAC,QAAQ,EAAb,cAAa;wBACf,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAClD,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;wBACvD,CAAC;wBAED,KAAA,IAAI,CAAA;wBAAkB,WAAM,IAAA,sBAAc,EAAC,IAAI,CAAC,QAAe,CAAC,EAAA;4BAAhD,WAAM,SAA0C,EAAA;;wBAAhE,GAAK,QAAQ,GAAG,SAAgD,CAAC;;;6BAG/D,IAAI,CAAC,UAAU,EAAf,eAAe;wBACP,WAAM,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,EAAA;;wBAA9D,CAAC,GAAG,SAA0D;wBACpE,IAAI,CAAC,CAAC,EAAE,CAAC;4BACP,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;wBACzD,CAAC;wBACD,OAAO,IAAI,CAAC,UAAU,CAAC;wBACvB,IAAI,IAAI,CAAC,KAAK;4BAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;wBAC3C,IAAI,IAAI,CAAC,MAAM;4BAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;;;;wBAe9B,WAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAA;;wBAAvC,WAAS,SAA8B;wBAC7C,IAAA,cAAK,EAAC;;;;;wCACJ,IACE,IAAI,CAAC,OAAO,CAAC,gCAAgC;4CAC7C,IAAI,CAAC,KAAK;4CACV,CAAC,IAAI,CAAC,cAAc;4CAEpB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wCAErB,WAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,QAAM,CAAC,EAAA;;wCAAhD,UAAU,GAAG,CAAC,SAAkC,CAAS;wCAC/D,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,oBAAW,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;;;;6BACxE,CAAC,CAAC;wBAEH,WAAO,QAAM,EAAC;;;wBAEd,WAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,oBAAW,CAAC,eAAe,EAAE,IAAI,CAAC,EAAA;;wBAApE,SAAoE,CAAC;wBACrE,MAAM,GAAC,CAAC;;;;;KAEX;IAEM,yCAAc,GAArB,UAAsB,WAAwB,EAAE,UAAkB;QAChE,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC5D,CAAC;IAEY,oDAAyB,GAAtC,UAAuC,KAAK,EAAE,QAAQ;;;;4BAC7C,WAAM,IAAI,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,EAAA;4BAAnE,WAAO,SAA4D,EAAC;;;;KACrE;IAEY,oCAAS,GAAtB,UAAuB,IAAgC;;;;;;wBAC/C,KACJ,OAAO,IAAI,IAAI,QAAQ;4BACrB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,MAAA,EAAE,CAAC;4BACjC,CAAC,CAAC,IAAI,CAAC,gBAAgB,sBAAM,IAAI,EAAG,EAHhC,QAAQ,cAAA,EAAE,KAAK,WAAA,EAAE,EAAE,QAAA,EAAE,MAAM,YAAA,CAGM;wBAErC,SAAS,GAAe,IAAI,CAAC;6BAE7B,EAAE,EAAF,cAAE;wBAEQ,WAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,EAAA;;wBAA1C,SAAS,GAAG,SAA8B,CAAC;;;6BAClC,QAAQ,EAAR,cAAQ;wBAEL,WAAM,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAA;;wBAAtD,SAAS,GAAG,SAA0C,CAAC;;;6BAC9C,MAAM,EAAN,cAAM;wBAEH,WAAM,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAA;;wBAAlD,SAAS,GAAG,SAAsC,CAAC;;;6BAC1C,KAAK,EAAL,cAAK;wBAEF,WAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAA;;wBAAhD,SAAS,GAAG,SAAoC,CAAC;;4BAEnD,WAAO,SAAS,EAAC;;;;KAClB;IAEY,gDAAqB,GAAlC;oEACE,IAAgC,EAChC,QAAsB,EACtB,cAAqB;;YAArB,+BAAA,EAAA,qBAAqB;;;;wBAEf,KACJ,OAAO,IAAI,IAAI,QAAQ;4BACrB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,MAAA,EAAE,CAAC;4BACjC,CAAC,CAAC,IAAI,CAAC,gBAAgB,sBAAM,IAAI,EAAG,EAHhC,QAAQ,cAAA,EAAE,KAAK,WAAA,EAAE,EAAE,QAAA,EAAE,MAAM,YAAA,CAGM;wBAErC,SAAS,GAAe,IAAI,CAAC;6BAE7B,EAAE,EAAF,cAAE;wBAEQ,WAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,EAAA;;wBAA1C,SAAS,GAAG,SAA8B,CAAC;;;6BAClC,QAAQ,EAAR,cAAQ;wBAEL,WAAM,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAA;;wBAAtD,SAAS,GAAG,SAA0C,CAAC;;;6BAC9C,MAAM,EAAN,cAAM;wBAEH,WAAM,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAA;;wBAAlD,SAAS,GAAG,SAAsC,CAAC;;;6BAC1C,KAAK,EAAL,cAAK;wBAEF,WAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAA;;wBAAhD,SAAS,GAAG,SAAoC,CAAC;;;wBAGnD,IAAI,CAAC,SAAS,EAAE,CAAC;4BACf,MAAM,IAAI,KAAK,CACb,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB;gCACxC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB;gCACxC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CACrC,CAAC;wBACJ,CAAC;wBAEY,WAAM,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,EAAA;;wBAAnD,IAAI,GAAG,SAA4C;wBACzD,IAAI,CAAC,IAAI,EAAE,CAAC;4BACV,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;wBACrD,CAAC;wBACK,IAAI,GAAG,IAAA,2BAAgB,GAAE,CAAC,MAAM,CAAC,IAAI,CAAC;wBAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;4BACJ,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;4BAC3B,yBAAyB,GAAG,SAAS,CAAC,yBAAyB,CAAC;4BACtE,IAAI,MAAM,EAAE,CAAC;gCACX,IAAI,CAAC,yBAAyB,EAAE,CAAC;oCAC/B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;gCAClC,CAAC;qCAAM,CAAC;oCACN,IAAI,MAAM,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;wCAC1D,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;oCAClC,CAAC;gCACH,CAAC;4BACH,CAAC;wBACH,CAAC;wBACK,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC;wBACrD,IAAI,GAAG,IAAI,CAAC;wBAChB,IAAI,cAAc,EAAE,CAAC;4BACnB,IAAI,GAAG,QAAQ,CAAC;wBAClB,CAAC;6BAAM,CAAC;4BACN,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,IAAA,oBAAY,EAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;wBAC1E,CAAC;wBACuB,WAAM,IAAA,sBAAc,EAAC,IAAI,EAAE,IAAI,CAAC,EAAA;;wBAAlD,eAAe,GAAG,SAAgC;6BAEpD,CAAC,eAAe,EAAhB,eAAgB;6BACd,CAAC,IAAI,EAAL,eAAK;wBACa,WAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,EAAA;;wBAArD,WAAW,GAAG,SAAuC;wBACrD,yBAAyB,GAAG,SAAS,CAAC,yBAAyB,CAAC;6BAGpE,CAAA,WAAW,CAAC,gBAAgB,IAAI,CAAC;4BACjC,MAAM,CAAC,yBAAyB,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA,EADtD,eACsD;wBAEtD,WAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE;gCACrC,IAAI,EAAE,EAAE,mBAAmB,EAAE,CAAC,EAAE;6BACjC,CAAC,EAAA;;wBAFF,SAEE,CAAC;;6BAEH,WAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE;4BACrC,IAAI,EAAE,EAAE,mBAAmB,EAAE,CAAC,EAAE;yBACjC,CAAC,EAAA;;wBAFF,SAEE,CAAC;;6BAGa,WAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,EAAA;;wBAApD,SAAY,SAAwC;6BACtD,CAAA,MAAI,CAAC,mBAAmB,IAAI,WAAW,CAAC,kBAAkB,CAAA,EAA1D,eAA0D;wBACxD,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,CAAC;wBAChD,8BAA4B,IAAI,CAAC;wBACrC,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;4BAC3B,2BAAyB,GAAG,IAAI,CAAC;wBACnC,CAAC;6BAAM,CAAC;4BACN,2BAAyB,GAAG,IAAI,IAAI,CAClC,MAAM,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAChD,CAAC;wBACJ,CAAC;wBACD,WAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE;gCACrC,IAAI,EAAE;oCACJ,OAAO,EAAE,IAAI;oCACb,yBAAyB,EAAE,2BAAyB;iCACrD;6BACF,CAAC,EAAA;;wBALF,SAKE,CAAC;;6BAGP,MAAM,IAAI,KAAK,CACb,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB;wBACxC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB;wBACxC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAC1C,CAAC;6BAEF,WAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE;4BACrC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,EAAE;4BAChD,MAAM,EAAE,EAAE,yBAAyB,EAAE,CAAC,EAAE;yBACzC,CAAC,EAAA;;wBAHF,SAGE,CAAC;;6BAGL,WAAO,SAAS,EAAC;;;;KAClB;IAEa,4CAAiB,GAA/B,UAAgC,IAAI,EAAE,KAAK,EAAE,MAAM;;;;;;wBAC3C,KAAkC,IAAA,iBAAQ,EAAC,IAAI,CAAC;4BACpD,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,MAAA,EAAE,CAAC;4BACjC,CAAC,CAAC,IAAI,CAAC,gBAAgB,sBAAM,IAAI,EAAG,EAF9B,QAAQ,cAAA,EAAE,KAAK,WAAA,EAAE,MAAM,YAAA,EAAE,EAAE,QAAA,CAEI;wBAEvB,WAAM,IAAI,CAAC,EAAE,CAAC,0BAA0B,CACtD,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAChC,KAAK,CACN,EAAA;;wBAHG,SAAS,GAAG,SAGf;wBACD,IAAI,CAAC,SAAS,EAAE,CAAC;4BACf,MAAM,IAAI,KAAK,CACb,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB;gCACxC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW;gCACjC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CACrC,CAAC;wBACJ,CAAC;wBACD,WAAO,SAAS,EAAC;;;;KAClB;IAEa,gDAAqB,GAAnC,UAAoC,QAAsB;;;;gBAClD,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC;gBACnD,cAAc,GAAQ,aAAa;oBACvC,CAAC,CAAC,IAAA,oBAAY,EAAC,QAAQ,EAAE,aAAa,CAAC;oBACvC,CAAC,CAAC,QAAQ,CAAC;gBACb,WAAO,IAAA,sBAAc,EAAC,cAAc,CAAC,EAAC;;;KACvC;IAQO,2CAAgB,GAAxB,UAAyB,EAA0C;YAAxC,IAAI,UAAA,EAAE,QAAQ,cAAA,EAAE,KAAK,WAAA,EAAE,MAAM,YAAA,EAAE,EAAE,QAAA;QAC1D,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3C,IAAI,IAAA,eAAO,EAAC,IAAI,CAAC,EAAE,CAAC;gBAClB,KAAK,GAAG,IAAI,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,IAAI,CAAC;YAChB,CAAC;QACH,CAAC;QACD,OAAO,EAAE,QAAQ,UAAA,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,EAAE,IAAA,EAAE,CAAC;IACzC,CAAC;IAUY,+CAAoB,GAAjC,UAAkC,IAAS;;;;;;wBACnC,IAAI,GAAG,IAAA,2BAAkB,GAAE,CAAC;6BAE9B,IAAI,CAAC,KAAK,EAAV,cAAU;wBACQ,WAAM,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE;gCAChE,iBAAiB,mBAAA;gCACjB,cAAc,gBAAA;6BACf,CAAC,EAAA;;wBAHI,MAAM,GAAQ,SAGlB;wBACI,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAClD,IAAI,CAAC,KAAK,EACV,MAAM,CAAC,IAAI,EACX,IAAI,EACJ,qBAAqB,EAAE,GAAG,cAAc,EACxC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,gBAAgB,EACnD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CACxC,CAAC;wBACF,WAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAA;;wBAAxD,SAAwD,CAAC;wBACzD,WAAO,MAAM,CAAC,KAAK,EAAC;;6BACX,IAAI,CAAC,MAAM,EAAX,cAAW;wBACA,WAAM,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE;gCAChE,iBAAiB,mBAAA;gCACjB,cAAc,gBAAA;6BACf,CAAC,EAAA;;wBAHI,MAAM,GAAQ,SAGlB;wBACI,GAAG,GAAG;4BACV,MAAM,EAAE,IAAI,CAAC,MAAM;4BACnB,OAAO,EAAE,oDAAU,MAAM,CAAC,IAAI,2CAAQ,cAAc,yFAAgB;yBACrE,CAAC;wBACF,WAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAA;;wBAAtC,SAAsC,CAAC;wBACvC,WAAO,MAAM,CAAC,KAAK,EAAC;;;;;KAEvB;IACH,uBAAC;AAAD,CAAC,AA9xBD,IA8xBC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/accounts",
|
|
3
|
-
"version": "3.0.4-beta.
|
|
3
|
+
"version": "3.0.4-beta.3",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"files": [
|
|
6
6
|
"/package.json",
|
|
@@ -23,14 +23,11 @@
|
|
|
23
23
|
"pubNext": "npm publish --tag next --registry https://registry.npmjs.org"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@accounts/mongo": "^0.19.0",
|
|
27
|
-
"@accounts/server": "^0.19.0",
|
|
28
|
-
"@accounts/two-factor": "^0.20.1",
|
|
29
26
|
"@accounts/types": "0.20.1",
|
|
30
27
|
"@babel/runtime": "^7.12.18",
|
|
31
|
-
"@steedos/auth": "3.0.4-beta.
|
|
32
|
-
"@steedos/objectql": "3.0.4-beta.
|
|
33
|
-
"@steedos/utils": "3.0.4-beta.
|
|
28
|
+
"@steedos/auth": "3.0.4-beta.3",
|
|
29
|
+
"@steedos/objectql": "3.0.4-beta.3",
|
|
30
|
+
"@steedos/utils": "3.0.4-beta.3",
|
|
34
31
|
"app-root-path": "^2.2.1",
|
|
35
32
|
"bcryptjs": "^3.0.3",
|
|
36
33
|
"body-parser": "^2.2.1",
|
|
@@ -54,10 +51,10 @@
|
|
|
54
51
|
"string-random": "^0.1.3",
|
|
55
52
|
"tslib": "^2.4.0",
|
|
56
53
|
"url-join": "^4.0.1",
|
|
57
|
-
"validator": "^13.
|
|
54
|
+
"validator": "^13.15.23"
|
|
58
55
|
},
|
|
59
56
|
"publishConfig": {
|
|
60
57
|
"access": "public"
|
|
61
58
|
},
|
|
62
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "196040f2f6f8ebd851c1bf108151b6d52609e62e"
|
|
63
60
|
}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
trim,
|
|
3
|
+
isEmpty,
|
|
4
|
+
pick,
|
|
5
|
+
isString,
|
|
6
|
+
isPlainObject,
|
|
7
|
+
find,
|
|
8
|
+
includes,
|
|
9
|
+
defer,
|
|
10
|
+
} from "lodash";
|
|
2
11
|
import {
|
|
3
12
|
User,
|
|
4
13
|
LoginUserIdentity,
|
|
@@ -9,9 +18,13 @@ import {
|
|
|
9
18
|
HashAlgorithm,
|
|
10
19
|
ConnectionInformations,
|
|
11
20
|
LoginResult,
|
|
12
|
-
} from
|
|
13
|
-
import {
|
|
14
|
-
|
|
21
|
+
} from "../types";
|
|
22
|
+
import {
|
|
23
|
+
AccountsServer,
|
|
24
|
+
ServerHooks,
|
|
25
|
+
generateRandomToken,
|
|
26
|
+
generateRandomCode,
|
|
27
|
+
} from "../server";
|
|
15
28
|
import {
|
|
16
29
|
getUserResetTokens,
|
|
17
30
|
getUserVerificationTokens,
|
|
@@ -19,20 +32,24 @@ import {
|
|
|
19
32
|
bcryptPassword,
|
|
20
33
|
verifyPassword,
|
|
21
34
|
isEmail,
|
|
22
|
-
} from
|
|
23
|
-
import {
|
|
24
|
-
|
|
25
|
-
|
|
35
|
+
} from "./utils";
|
|
36
|
+
import {
|
|
37
|
+
PasswordCreateUserType,
|
|
38
|
+
PasswordLoginType,
|
|
39
|
+
PasswordType,
|
|
40
|
+
ErrorMessages,
|
|
41
|
+
} from "./types";
|
|
42
|
+
import { errors } from "./errors";
|
|
43
|
+
import { getSteedosConfig, getObject } from "@steedos/objectql";
|
|
26
44
|
const EFFECTIVE_TIME = 10; //10分钟
|
|
27
45
|
const CODE_LENGTH = 6;
|
|
28
46
|
const MAX_FAILURE_COUNT = 10;
|
|
29
|
-
const _ = require(
|
|
30
|
-
const moment = require(
|
|
47
|
+
const _ = require("underscore");
|
|
48
|
+
const moment = require("moment");
|
|
31
49
|
export interface AccountsPasswordOptions {
|
|
32
50
|
/**
|
|
33
51
|
* Two factor options passed down to the @accounts/two-factor service.
|
|
34
52
|
*/
|
|
35
|
-
twoFactor?: AccountsTwoFactorOptions;
|
|
36
53
|
passwordHashAlgorithm?: HashAlgorithm;
|
|
37
54
|
/**
|
|
38
55
|
* The number of milliseconds from when a link to verify the user email is sent until token expires and user can't verify his email with the link anymore.
|
|
@@ -84,7 +101,7 @@ export interface AccountsPasswordOptions {
|
|
|
84
101
|
* By default we only allow `username`, `email` and `password` fields.
|
|
85
102
|
*/
|
|
86
103
|
validateNewUser?: (
|
|
87
|
-
user: PasswordCreateUserType
|
|
104
|
+
user: PasswordCreateUserType,
|
|
88
105
|
) => Promise<PasswordCreateUserType> | PasswordCreateUserType;
|
|
89
106
|
/**
|
|
90
107
|
* Function that check if the email is a valid email.
|
|
@@ -122,36 +139,38 @@ const defaultOptions = {
|
|
|
122
139
|
},
|
|
123
140
|
validateUsername(username?: string): boolean {
|
|
124
141
|
const usernameRegex = /^[a-zA-Z][a-zA-Z0-9]*$/;
|
|
125
|
-
const isValid =
|
|
142
|
+
const isValid =
|
|
143
|
+
username && !isEmpty(trim(username)) && usernameRegex.test(username);
|
|
126
144
|
return Boolean(isValid);
|
|
127
145
|
},
|
|
128
146
|
errors,
|
|
129
147
|
sendVerificationEmailAfterSignup: false,
|
|
130
148
|
};
|
|
131
149
|
|
|
132
|
-
const getPathFragmentPrefix = function(){
|
|
150
|
+
const getPathFragmentPrefix = function () {
|
|
133
151
|
const config = getSteedosConfig().email;
|
|
134
|
-
const defaultPathPrefix =
|
|
135
|
-
let pathFragmentPrefix =
|
|
136
|
-
|
|
152
|
+
const defaultPathPrefix = "accounts/a/#";
|
|
153
|
+
let pathFragmentPrefix =
|
|
154
|
+
config && config.pathFragmentPrefix
|
|
155
|
+
? config.pathFragmentPrefix
|
|
156
|
+
: defaultPathPrefix;
|
|
157
|
+
if (pathFragmentPrefix && !/\/$/.test(pathFragmentPrefix)) {
|
|
137
158
|
pathFragmentPrefix += "/";
|
|
138
159
|
}
|
|
139
160
|
return pathFragmentPrefix;
|
|
140
|
-
}
|
|
161
|
+
};
|
|
141
162
|
|
|
142
163
|
// interface MyDatabaseInterface extends DatabaseInterface{
|
|
143
164
|
// updateUser?(userId: string, options: any): Promise<void>;
|
|
144
165
|
// }
|
|
145
166
|
export default class AccountsPassword implements AuthenticationService {
|
|
146
|
-
public serviceName =
|
|
167
|
+
public serviceName = "password";
|
|
147
168
|
public server!: AccountsServer;
|
|
148
|
-
public twoFactor: TwoFactor;
|
|
149
169
|
private options: AccountsPasswordOptions & typeof defaultOptions;
|
|
150
170
|
private db!: DatabaseInterface;
|
|
151
171
|
|
|
152
172
|
constructor(options: AccountsPasswordOptions = {}) {
|
|
153
173
|
this.options = { ...defaultOptions, ...options };
|
|
154
|
-
this.twoFactor = new TwoFactor(options.twoFactor);
|
|
155
174
|
}
|
|
156
175
|
|
|
157
176
|
public setStore(store: DatabaseInterface) {
|
|
@@ -162,14 +181,14 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
162
181
|
public async authenticate(params: any): Promise<User> {
|
|
163
182
|
let { user, password, token, locale } = params;
|
|
164
183
|
|
|
165
|
-
const passwordUnencrypted = params[
|
|
184
|
+
const passwordUnencrypted = params["password-unencrypted"];
|
|
166
185
|
let isHashPassword = true;
|
|
167
|
-
if(passwordUnencrypted && !password
|
|
186
|
+
if (passwordUnencrypted && !password) {
|
|
168
187
|
password = passwordUnencrypted;
|
|
169
188
|
isHashPassword = false;
|
|
170
189
|
}
|
|
171
190
|
|
|
172
|
-
if(user && token){
|
|
191
|
+
if (user && token) {
|
|
173
192
|
return await this.codeAuthenticator(user, token, locale);
|
|
174
193
|
}
|
|
175
194
|
|
|
@@ -181,7 +200,11 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
181
200
|
throw new Error(this.options.errors.matchFailed);
|
|
182
201
|
}
|
|
183
202
|
|
|
184
|
-
const foundUser = await this.passwordAuthenticator(
|
|
203
|
+
const foundUser = await this.passwordAuthenticator(
|
|
204
|
+
user,
|
|
205
|
+
password,
|
|
206
|
+
isHashPassword,
|
|
207
|
+
);
|
|
185
208
|
|
|
186
209
|
// // If user activated two factor authentication try with the code
|
|
187
210
|
// if (getUserTwoFactorService(foundUser)) {
|
|
@@ -232,7 +255,11 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
232
255
|
* Defaults to false.
|
|
233
256
|
* @returns {Promise<void>} - Return a Promise.
|
|
234
257
|
*/
|
|
235
|
-
public addEmail(
|
|
258
|
+
public addEmail(
|
|
259
|
+
userId: string,
|
|
260
|
+
newEmail: string,
|
|
261
|
+
verified: boolean,
|
|
262
|
+
): Promise<void> {
|
|
236
263
|
if (!this.options.validateEmail(newEmail)) {
|
|
237
264
|
throw new Error(this.options.errors.invalidEmail);
|
|
238
265
|
}
|
|
@@ -266,12 +293,21 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
266
293
|
}
|
|
267
294
|
|
|
268
295
|
const verificationTokens = getUserVerificationTokens(user);
|
|
269
|
-
const tokenRecord = find(
|
|
270
|
-
|
|
296
|
+
const tokenRecord = find(
|
|
297
|
+
verificationTokens,
|
|
298
|
+
(t: TokenRecord) => t.token === token,
|
|
299
|
+
);
|
|
300
|
+
if (
|
|
301
|
+
!tokenRecord ||
|
|
302
|
+
this.isTokenExpired(tokenRecord, this.options.verifyEmailTokenExpiration)
|
|
303
|
+
) {
|
|
271
304
|
throw new Error(this.options.errors.verifyEmailLinkExpired);
|
|
272
305
|
}
|
|
273
306
|
|
|
274
|
-
const emailRecord = find(
|
|
307
|
+
const emailRecord = find(
|
|
308
|
+
user.emails,
|
|
309
|
+
(e: EmailRecord) => e.address === tokenRecord.address,
|
|
310
|
+
);
|
|
275
311
|
if (!emailRecord) {
|
|
276
312
|
throw new Error(this.options.errors.verifyEmailLinkUnknownAddress);
|
|
277
313
|
}
|
|
@@ -287,7 +323,7 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
287
323
|
public async resetPassword(
|
|
288
324
|
token: string,
|
|
289
325
|
newPassword: PasswordType,
|
|
290
|
-
infos: ConnectionInformations
|
|
326
|
+
infos: ConnectionInformations,
|
|
291
327
|
): Promise<LoginResult | null> {
|
|
292
328
|
if (!token || !isString(token)) {
|
|
293
329
|
throw new Error(this.options.errors.invalidToken);
|
|
@@ -302,15 +338,15 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
302
338
|
}
|
|
303
339
|
|
|
304
340
|
const resetTokens = getUserResetTokens(user);
|
|
305
|
-
const resetTokenRecord = find(resetTokens, t => t.token === token);
|
|
341
|
+
const resetTokenRecord = find(resetTokens, (t) => t.token === token);
|
|
306
342
|
|
|
307
343
|
if (
|
|
308
344
|
!resetTokenRecord ||
|
|
309
345
|
this.isTokenExpired(
|
|
310
346
|
resetTokenRecord,
|
|
311
|
-
resetTokenRecord.reason ===
|
|
347
|
+
resetTokenRecord.reason === "enroll"
|
|
312
348
|
? this.options.passwordEnrollTokenExpiration
|
|
313
|
-
: this.options.passwordResetTokenExpiration
|
|
349
|
+
: this.options.passwordResetTokenExpiration,
|
|
314
350
|
)
|
|
315
351
|
) {
|
|
316
352
|
throw new Error(this.options.errors.resetPasswordLinkExpired);
|
|
@@ -320,7 +356,7 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
320
356
|
if (
|
|
321
357
|
!includes(
|
|
322
358
|
emails.map((email: EmailRecord) => email.address),
|
|
323
|
-
resetTokenRecord.address
|
|
359
|
+
resetTokenRecord.address,
|
|
324
360
|
)
|
|
325
361
|
) {
|
|
326
362
|
throw new Error(this.options.errors.resetPasswordLinkUnknownAddress);
|
|
@@ -328,12 +364,17 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
328
364
|
|
|
329
365
|
const password = await this.hashAndBcryptPassword(newPassword);
|
|
330
366
|
// Change the user password and remove the old token
|
|
331
|
-
await this.db.setResetPassword(
|
|
367
|
+
await this.db.setResetPassword(
|
|
368
|
+
user.id,
|
|
369
|
+
resetTokenRecord.address,
|
|
370
|
+
password,
|
|
371
|
+
token,
|
|
372
|
+
);
|
|
332
373
|
|
|
333
374
|
this.server.getHooks().emit(ServerHooks.ResetPasswordSuccess, user);
|
|
334
375
|
|
|
335
376
|
// If user clicked on an enrollment link we can verify his email
|
|
336
|
-
if (resetTokenRecord.reason ===
|
|
377
|
+
if (resetTokenRecord.reason === "enroll") {
|
|
337
378
|
await this.db.verifyEmail(user.id, resetTokenRecord.address);
|
|
338
379
|
}
|
|
339
380
|
|
|
@@ -347,11 +388,11 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
347
388
|
if (address) {
|
|
348
389
|
const passwordChangedMail = this.server.prepareMail(
|
|
349
390
|
address,
|
|
350
|
-
|
|
391
|
+
"",
|
|
351
392
|
this.server.sanitizeUser(user),
|
|
352
|
-
|
|
393
|
+
"",
|
|
353
394
|
this.server.options.emailTemplates.passwordChanged,
|
|
354
|
-
this.server.options.emailTemplates.from
|
|
395
|
+
this.server.options.emailTemplates.from,
|
|
355
396
|
);
|
|
356
397
|
await this.server.options.sendMail(passwordChangedMail);
|
|
357
398
|
}
|
|
@@ -363,7 +404,7 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
363
404
|
return null;
|
|
364
405
|
}
|
|
365
406
|
|
|
366
|
-
public async getUserProfile(userId){
|
|
407
|
+
public async getUserProfile(userId) {
|
|
367
408
|
const spaceId = getSteedosConfig().tenant._id;
|
|
368
409
|
let password_history = 3;
|
|
369
410
|
let max_login_attempts = 10;
|
|
@@ -445,24 +486,32 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
445
486
|
public async changePassword(
|
|
446
487
|
userId: string,
|
|
447
488
|
oldPassword: string,
|
|
448
|
-
newPassword: string
|
|
489
|
+
newPassword: string,
|
|
449
490
|
): Promise<void> {
|
|
450
491
|
if (!this.options.validatePassword(newPassword)) {
|
|
451
492
|
throw new Error(this.options.errors.invalidPassword);
|
|
452
493
|
}
|
|
453
494
|
|
|
454
|
-
const user: any = await this.passwordAuthenticator(
|
|
495
|
+
const user: any = await this.passwordAuthenticator(
|
|
496
|
+
{ id: userId },
|
|
497
|
+
oldPassword,
|
|
498
|
+
);
|
|
455
499
|
const saas = getSteedosConfig().tenant.saas;
|
|
456
|
-
if(!saas){
|
|
457
|
-
const passwordHistory = user.services.password_history || []
|
|
500
|
+
if (!saas) {
|
|
501
|
+
const passwordHistory = user.services.password_history || [];
|
|
458
502
|
|
|
459
503
|
const userProfile = await this.getUserProfile(userId);
|
|
460
|
-
|
|
461
|
-
const validPasswordHistory = _.last(
|
|
504
|
+
|
|
505
|
+
const validPasswordHistory = _.last(
|
|
506
|
+
passwordHistory,
|
|
507
|
+
userProfile.password_history,
|
|
508
|
+
);
|
|
462
509
|
for (const item of validPasswordHistory) {
|
|
463
|
-
var verify = await verifyPassword(newPassword, item)
|
|
464
|
-
if(verify){
|
|
465
|
-
throw new Error(
|
|
510
|
+
var verify = await verifyPassword(newPassword, item);
|
|
511
|
+
if (verify) {
|
|
512
|
+
throw new Error(
|
|
513
|
+
"最近 " + userProfile.password_history + " 次密码不能相同",
|
|
514
|
+
);
|
|
466
515
|
}
|
|
467
516
|
}
|
|
468
517
|
}
|
|
@@ -481,11 +530,11 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
481
530
|
if (address) {
|
|
482
531
|
const passwordChangedMail = this.server.prepareMail(
|
|
483
532
|
address,
|
|
484
|
-
|
|
533
|
+
"",
|
|
485
534
|
this.server.sanitizeUser(user),
|
|
486
|
-
|
|
535
|
+
"",
|
|
487
536
|
this.server.options.emailTemplates.passwordChanged,
|
|
488
|
-
this.server.options.emailTemplates.from
|
|
537
|
+
this.server.options.emailTemplates.from,
|
|
489
538
|
);
|
|
490
539
|
await this.server.options.sendMail(passwordChangedMail);
|
|
491
540
|
}
|
|
@@ -515,8 +564,7 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
515
564
|
}
|
|
516
565
|
|
|
517
566
|
//Do not send an email if the address is already verified
|
|
518
|
-
if (user.email_verified)
|
|
519
|
-
return
|
|
567
|
+
if (user.email_verified) return;
|
|
520
568
|
|
|
521
569
|
const code = generateRandomCode();
|
|
522
570
|
const token = generateRandomToken();
|
|
@@ -526,9 +574,9 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
526
574
|
address,
|
|
527
575
|
code,
|
|
528
576
|
this.server.sanitizeUser(user),
|
|
529
|
-
getPathFragmentPrefix() +
|
|
577
|
+
getPathFragmentPrefix() + "verify-email",
|
|
530
578
|
this.server.options.emailTemplates.verifyEmail,
|
|
531
|
-
this.server.options.emailTemplates.from
|
|
579
|
+
this.server.options.emailTemplates.from,
|
|
532
580
|
);
|
|
533
581
|
|
|
534
582
|
await this.server.options.sendMail(resetPasswordMail);
|
|
@@ -555,15 +603,15 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
555
603
|
throw new Error(this.options.errors.userNotFound);
|
|
556
604
|
}
|
|
557
605
|
const token = generateRandomToken();
|
|
558
|
-
await this.db.addResetPasswordToken(user.id, address, token,
|
|
606
|
+
await this.db.addResetPasswordToken(user.id, address, token, "reset");
|
|
559
607
|
|
|
560
608
|
const resetPasswordMail = this.server.prepareMail(
|
|
561
609
|
address,
|
|
562
610
|
token,
|
|
563
611
|
this.server.sanitizeUser(user),
|
|
564
|
-
getPathFragmentPrefix() +
|
|
612
|
+
getPathFragmentPrefix() + "reset-password",
|
|
565
613
|
this.server.options.emailTemplates.resetPassword,
|
|
566
|
-
this.server.options.emailTemplates.from
|
|
614
|
+
this.server.options.emailTemplates.from,
|
|
567
615
|
);
|
|
568
616
|
|
|
569
617
|
await this.server.options.sendMail(resetPasswordMail);
|
|
@@ -587,15 +635,15 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
587
635
|
throw new Error(this.options.errors.userNotFound);
|
|
588
636
|
}
|
|
589
637
|
const token = generateRandomToken();
|
|
590
|
-
await this.db.addResetPasswordToken(user.id, address, token,
|
|
638
|
+
await this.db.addResetPasswordToken(user.id, address, token, "enroll");
|
|
591
639
|
|
|
592
640
|
const enrollmentMail = this.server.prepareMail(
|
|
593
641
|
address,
|
|
594
642
|
token,
|
|
595
643
|
this.server.sanitizeUser(user),
|
|
596
|
-
getPathFragmentPrefix() +
|
|
644
|
+
getPathFragmentPrefix() + "enroll-account",
|
|
597
645
|
this.server.options.emailTemplates.enrollAccount,
|
|
598
|
-
this.server.options.emailTemplates.from
|
|
646
|
+
this.server.options.emailTemplates.from,
|
|
599
647
|
);
|
|
600
648
|
|
|
601
649
|
await this.server.options.sendMail(enrollmentMail);
|
|
@@ -631,7 +679,7 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
631
679
|
throw new Error(this.options.errors.emailAlreadyExists);
|
|
632
680
|
}
|
|
633
681
|
|
|
634
|
-
if(!user.password && !user.verifyCode){
|
|
682
|
+
if (!user.password && !user.verifyCode) {
|
|
635
683
|
throw new Error(this.options.errors.invalidVerifyParam);
|
|
636
684
|
}
|
|
637
685
|
|
|
@@ -640,7 +688,7 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
640
688
|
throw new Error(this.options.errors.invalidPassword);
|
|
641
689
|
}
|
|
642
690
|
// user.password = await this.hashAndBcryptPassword(user.password);
|
|
643
|
-
user.password = await await bcryptPassword(
|
|
691
|
+
user.password = await await bcryptPassword(user.password as any);
|
|
644
692
|
}
|
|
645
693
|
|
|
646
694
|
if (user.verifyCode) {
|
|
@@ -649,12 +697,10 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
649
697
|
throw new Error(this.options.errors.invalidVerifyCode);
|
|
650
698
|
}
|
|
651
699
|
delete user.verifyCode;
|
|
652
|
-
if (user.email)
|
|
653
|
-
|
|
654
|
-
if (user.mobile)
|
|
655
|
-
user.mobile_verified = true
|
|
700
|
+
if (user.email) user.email_verified = true;
|
|
701
|
+
if (user.mobile) user.mobile_verified = true;
|
|
656
702
|
}
|
|
657
|
-
|
|
703
|
+
|
|
658
704
|
// // If user does not provide the validate function only allow some fields
|
|
659
705
|
// user = this.options.validateNewUser
|
|
660
706
|
// ? await this.options.validateNewUser(user)
|
|
@@ -669,7 +715,11 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
669
715
|
try {
|
|
670
716
|
const userId = await this.db.createUser(user);
|
|
671
717
|
defer(async () => {
|
|
672
|
-
if (
|
|
718
|
+
if (
|
|
719
|
+
this.options.sendVerificationEmailAfterSignup &&
|
|
720
|
+
user.email &&
|
|
721
|
+
!user.email_verified
|
|
722
|
+
)
|
|
673
723
|
this.sendVerificationEmail(user.email);
|
|
674
724
|
|
|
675
725
|
const userRecord = (await this.db.findUserById(userId)) as User;
|
|
@@ -687,14 +737,15 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
687
737
|
return Number(tokenRecord.when) + expiryDate < Date.now();
|
|
688
738
|
}
|
|
689
739
|
|
|
690
|
-
public async verifyUserPasswordByEmail(email, password){
|
|
691
|
-
return await this.passwordAuthenticator({email: email}, password);
|
|
740
|
+
public async verifyUserPasswordByEmail(email, password) {
|
|
741
|
+
return await this.passwordAuthenticator({ email: email }, password);
|
|
692
742
|
}
|
|
693
743
|
|
|
694
|
-
public async foundUser(user: string | LoginUserIdentity
|
|
695
|
-
const { username, email, id, mobile } =
|
|
696
|
-
|
|
697
|
-
|
|
744
|
+
public async foundUser(user: string | LoginUserIdentity) {
|
|
745
|
+
const { username, email, id, mobile } =
|
|
746
|
+
typeof user == "string"
|
|
747
|
+
? this.toMobileAndEmail({ user })
|
|
748
|
+
: this.toMobileAndEmail({ ...user });
|
|
698
749
|
|
|
699
750
|
let foundUser: any | null = null;
|
|
700
751
|
|
|
@@ -717,11 +768,12 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
717
768
|
public async passwordAuthenticator(
|
|
718
769
|
user: string | LoginUserIdentity,
|
|
719
770
|
password: PasswordType,
|
|
720
|
-
isHashPassword = true
|
|
771
|
+
isHashPassword = true,
|
|
721
772
|
): Promise<User> {
|
|
722
|
-
const { username, email, id, mobile } =
|
|
723
|
-
|
|
724
|
-
|
|
773
|
+
const { username, email, id, mobile } =
|
|
774
|
+
typeof user == "string"
|
|
775
|
+
? this.toMobileAndEmail({ user })
|
|
776
|
+
: this.toMobileAndEmail({ ...user });
|
|
725
777
|
|
|
726
778
|
let foundUser: any | null = null;
|
|
727
779
|
|
|
@@ -743,7 +795,7 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
743
795
|
throw new Error(
|
|
744
796
|
this.server.options.ambiguousErrorMessages
|
|
745
797
|
? this.options.errors.invalidCredentials
|
|
746
|
-
: this.options.errors.userNotFound
|
|
798
|
+
: this.options.errors.userNotFound,
|
|
747
799
|
);
|
|
748
800
|
}
|
|
749
801
|
|
|
@@ -752,76 +804,94 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
752
804
|
throw new Error(this.options.errors.noPasswordSet);
|
|
753
805
|
}
|
|
754
806
|
const saas = getSteedosConfig().tenant.saas;
|
|
755
|
-
if(!saas){
|
|
807
|
+
if (!saas) {
|
|
756
808
|
const locked = foundUser.lockout;
|
|
757
809
|
const login_failed_lockout_time = foundUser.login_failed_lockout_time;
|
|
758
|
-
if(locked){
|
|
759
|
-
if(!login_failed_lockout_time){
|
|
760
|
-
throw new Error(
|
|
761
|
-
}else{
|
|
762
|
-
if(moment(login_failed_lockout_time).isAfter(new Date())){
|
|
763
|
-
throw new Error(
|
|
810
|
+
if (locked) {
|
|
811
|
+
if (!login_failed_lockout_time) {
|
|
812
|
+
throw new Error("账户已锁定,请联系管理员");
|
|
813
|
+
} else {
|
|
814
|
+
if (moment(login_failed_lockout_time).isAfter(new Date())) {
|
|
815
|
+
throw new Error("账户已锁定,请联系管理员");
|
|
764
816
|
}
|
|
765
817
|
}
|
|
766
818
|
}
|
|
767
819
|
}
|
|
768
820
|
const hashAlgorithm = this.options.passwordHashAlgorithm;
|
|
769
821
|
let pass = null;
|
|
770
|
-
if(isHashPassword){
|
|
822
|
+
if (isHashPassword) {
|
|
771
823
|
pass = password;
|
|
772
|
-
}else{
|
|
824
|
+
} else {
|
|
773
825
|
pass = hashAlgorithm ? hashPassword(password, hashAlgorithm) : password;
|
|
774
826
|
}
|
|
775
827
|
const isPasswordValid = await verifyPassword(pass, hash);
|
|
776
828
|
|
|
777
829
|
if (!isPasswordValid) {
|
|
778
|
-
if(!saas){
|
|
830
|
+
if (!saas) {
|
|
779
831
|
const userProfile = await this.getUserProfile(foundUser.id);
|
|
780
832
|
const login_failed_lockout_time = foundUser.login_failed_lockout_time;
|
|
781
833
|
// 重置密码错误次数
|
|
782
|
-
if
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
834
|
+
if (
|
|
835
|
+
userProfile.lockout_interval != 0 &&
|
|
836
|
+
moment(login_failed_lockout_time).isBefore(new Date())
|
|
837
|
+
) {
|
|
838
|
+
await this.db.updateUser(foundUser.id, {
|
|
839
|
+
$set: { login_failed_number: 1 },
|
|
840
|
+
});
|
|
841
|
+
} else {
|
|
842
|
+
await this.db.updateUser(foundUser.id, {
|
|
843
|
+
$inc: { login_failed_number: 1 },
|
|
844
|
+
});
|
|
786
845
|
}
|
|
787
846
|
|
|
788
847
|
const user: any = await this.db.findUserById(foundUser.id);
|
|
789
|
-
if(user.login_failed_number >= userProfile.max_login_attempts){
|
|
848
|
+
if (user.login_failed_number >= userProfile.max_login_attempts) {
|
|
790
849
|
let lockout_interval = userProfile.lockout_interval;
|
|
791
850
|
let login_failed_lockout_time = null;
|
|
792
|
-
if(lockout_interval === 0){
|
|
851
|
+
if (lockout_interval === 0) {
|
|
793
852
|
login_failed_lockout_time = null;
|
|
794
|
-
}else{
|
|
795
|
-
login_failed_lockout_time = new Date(
|
|
853
|
+
} else {
|
|
854
|
+
login_failed_lockout_time = new Date(
|
|
855
|
+
moment().add(userProfile.lockout_interval, "m"),
|
|
856
|
+
);
|
|
796
857
|
}
|
|
797
|
-
await this.db.updateUser(foundUser.id, {
|
|
858
|
+
await this.db.updateUser(foundUser.id, {
|
|
859
|
+
$set: {
|
|
860
|
+
lockout: true,
|
|
861
|
+
login_failed_lockout_time: login_failed_lockout_time,
|
|
862
|
+
},
|
|
863
|
+
});
|
|
798
864
|
}
|
|
799
865
|
}
|
|
800
866
|
throw new Error(
|
|
801
867
|
this.server.options.ambiguousErrorMessages
|
|
802
868
|
? this.options.errors.invalidCredentials
|
|
803
|
-
: this.options.errors.incorrectPassword
|
|
869
|
+
: this.options.errors.incorrectPassword,
|
|
804
870
|
);
|
|
805
|
-
}else{
|
|
806
|
-
await this.db.updateUser(foundUser.id, {
|
|
871
|
+
} else {
|
|
872
|
+
await this.db.updateUser(foundUser.id, {
|
|
873
|
+
$set: { lockout: false, login_failed_number: 0 },
|
|
874
|
+
$unset: { login_failed_lockout_time: 1 },
|
|
875
|
+
});
|
|
807
876
|
}
|
|
808
877
|
|
|
809
878
|
return foundUser;
|
|
810
879
|
}
|
|
811
880
|
|
|
812
|
-
private async codeAuthenticator(
|
|
813
|
-
user, token, locale
|
|
814
|
-
): Promise<User> {
|
|
881
|
+
private async codeAuthenticator(user, token, locale): Promise<User> {
|
|
815
882
|
const { username, email, mobile, id } = isString(user)
|
|
816
883
|
? this.toMobileAndEmail({ user })
|
|
817
884
|
: this.toMobileAndEmail({ ...user });
|
|
818
|
-
|
|
819
|
-
let foundUser = await this.db.findUserByVerificationCode(
|
|
885
|
+
|
|
886
|
+
let foundUser = await this.db.findUserByVerificationCode(
|
|
887
|
+
{ email: email, mobile: mobile },
|
|
888
|
+
token,
|
|
889
|
+
);
|
|
820
890
|
if (!foundUser) {
|
|
821
891
|
throw new Error(
|
|
822
892
|
this.server.options.ambiguousErrorMessages
|
|
823
893
|
? this.options.errors.invalidCode
|
|
824
|
-
: this.options.errors.userNotFound
|
|
894
|
+
: this.options.errors.userNotFound,
|
|
825
895
|
);
|
|
826
896
|
}
|
|
827
897
|
return foundUser;
|
|
@@ -829,7 +899,9 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
829
899
|
|
|
830
900
|
private async hashAndBcryptPassword(password: PasswordType): Promise<string> {
|
|
831
901
|
const hashAlgorithm = this.options.passwordHashAlgorithm;
|
|
832
|
-
const hashedPassword: any = hashAlgorithm
|
|
902
|
+
const hashedPassword: any = hashAlgorithm
|
|
903
|
+
? hashPassword(password, hashAlgorithm)
|
|
904
|
+
: password;
|
|
833
905
|
return bcryptPassword(hashedPassword);
|
|
834
906
|
}
|
|
835
907
|
|
|
@@ -850,7 +922,6 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
850
922
|
return { username, email, mobile, id };
|
|
851
923
|
}
|
|
852
924
|
|
|
853
|
-
|
|
854
925
|
/**
|
|
855
926
|
* @description Send an email with a link the user can use verify their email address.
|
|
856
927
|
* @param {string} [address] - Which address of the user's to send the email to.
|
|
@@ -860,31 +931,34 @@ export default class AccountsPassword implements AuthenticationService {
|
|
|
860
931
|
* @returns {Promise<void>} - Return a Promise.
|
|
861
932
|
*/
|
|
862
933
|
public async sendVerificationCode(user: any): Promise<void> {
|
|
863
|
-
|
|
864
|
-
|
|
865
934
|
const code = generateRandomCode();
|
|
866
935
|
|
|
867
936
|
if (user.email) {
|
|
868
|
-
const result: any = await this.db.addVerificationCode(user, code, {
|
|
937
|
+
const result: any = await this.db.addVerificationCode(user, code, {
|
|
938
|
+
MAX_FAILURE_COUNT,
|
|
939
|
+
EFFECTIVE_TIME,
|
|
940
|
+
});
|
|
869
941
|
const verificationCodeMail = this.server.prepareMail(
|
|
870
942
|
user.email,
|
|
871
943
|
result.code,
|
|
872
944
|
null,
|
|
873
|
-
getPathFragmentPrefix() +
|
|
945
|
+
getPathFragmentPrefix() + "verify-email",
|
|
874
946
|
this.server.options.emailTemplates.verificationCode,
|
|
875
|
-
this.server.options.emailTemplates.from
|
|
947
|
+
this.server.options.emailTemplates.from,
|
|
876
948
|
);
|
|
877
949
|
await this.server.options.sendMail(verificationCodeMail);
|
|
878
|
-
return result.owner
|
|
950
|
+
return result.owner;
|
|
879
951
|
} else if (user.mobile) {
|
|
880
|
-
const result: any = await this.db.addVerificationCode(user, code, {
|
|
952
|
+
const result: any = await this.db.addVerificationCode(user, code, {
|
|
953
|
+
MAX_FAILURE_COUNT,
|
|
954
|
+
EFFECTIVE_TIME,
|
|
955
|
+
});
|
|
881
956
|
const sms = {
|
|
882
957
|
mobile: user.mobile,
|
|
883
|
-
message: `您的验证码为:${result.code},该验证码${EFFECTIVE_TIME}
|
|
884
|
-
}
|
|
958
|
+
message: `您的验证码为:${result.code},该验证码${EFFECTIVE_TIME}分钟内有效,请勿泄漏于他人!`,
|
|
959
|
+
};
|
|
885
960
|
await this.server.options.sendSMS(sms);
|
|
886
|
-
return result.owner
|
|
961
|
+
return result.owner;
|
|
887
962
|
}
|
|
888
|
-
|
|
889
963
|
}
|
|
890
964
|
}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import { DatabaseInterface } from './database-interface';
|
|
4
|
-
|
|
5
|
-
// TODO : Fix circular dependency for better type checking
|
|
6
|
-
// import AccountsServer from '@accounts/server';
|
|
1
|
+
import { User } from "./user";
|
|
2
|
+
import { DatabaseInterface } from "./database-interface";
|
|
7
3
|
|
|
8
4
|
export interface AuthenticationService {
|
|
9
5
|
server: any;
|