@alore/auth-react-ui 1.0.3-alpha → 1.0.5-alpha
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.
- package/dist/cjs/auth/Login.d.ts +2 -1
- package/dist/cjs/auth/Login.js +76 -54
- package/dist/cjs/auth/Login.js.map +1 -1
- package/dist/cjs/auth/Register.d.ts +2 -1
- package/dist/cjs/auth/Register.js +88 -85
- package/dist/cjs/auth/Register.js.map +1 -1
- package/dist/cjs/components/Auth.d.ts +6 -3
- package/dist/cjs/components/Auth.js +38 -17
- package/dist/cjs/components/Auth.js.map +1 -1
- package/dist/cjs/components/AuthProvider.d.ts +13 -3
- package/dist/cjs/components/AuthProvider.js.map +1 -1
- package/dist/cjs/components/BackButton.js +1 -1
- package/dist/cjs/components/BackButton.js.map +1 -1
- package/dist/cjs/components/CheckboxForm.js +1 -1
- package/dist/cjs/components/CheckboxForm.js.map +1 -1
- package/dist/cjs/components/InputForm.js +2 -47
- package/dist/cjs/components/InputForm.js.map +1 -1
- package/dist/cjs/components/InputOTP.js +1 -1
- package/dist/cjs/components/InputOTP.js.map +1 -1
- package/dist/cjs/components/TermsModal.js +3 -3
- package/dist/cjs/components/TermsModal.js.map +1 -1
- package/dist/cjs/dictionaries/en.json +9 -1
- package/dist/cjs/dictionaries/pt.json +13 -5
- package/dist/cjs/get-dictionary.d.ts +24 -0
- package/dist/cjs/helpers/index.d.ts +2 -0
- package/dist/cjs/helpers/index.js +31 -1
- package/dist/cjs/helpers/index.js.map +1 -1
- package/dist/cjs/hooks/useAuthService.d.ts +36 -6
- package/dist/cjs/hooks/useAuthServiceInstance.d.ts +12 -2
- package/dist/cjs/hooks/useDictionary.d.ts +8 -0
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/machine/index.d.ts +24 -4
- package/dist/cjs/machine/index.js +32 -12
- package/dist/cjs/machine/index.js.map +1 -1
- package/dist/cjs/machine/index.typegen.d.ts +2 -2
- package/dist/cjs/machine/types.d.ts +11 -1
- package/dist/cjs/styles/themes.d.ts +4 -0
- package/dist/cjs/styles/themes.js +53 -0
- package/dist/cjs/styles/themes.js.map +1 -0
- package/dist/cjs/types.d.ts +1 -33
- package/dist/mjs/auth/Login.d.ts +2 -1
- package/dist/mjs/auth/Login.js +79 -55
- package/dist/mjs/auth/Login.js.map +1 -1
- package/dist/mjs/auth/Register.d.ts +2 -1
- package/dist/mjs/auth/Register.js +91 -86
- package/dist/mjs/auth/Register.js.map +1 -1
- package/dist/mjs/components/Auth.d.ts +6 -3
- package/dist/mjs/components/Auth.js +40 -19
- package/dist/mjs/components/Auth.js.map +1 -1
- package/dist/mjs/components/AuthProvider.d.ts +13 -3
- package/dist/mjs/components/AuthProvider.js.map +1 -1
- package/dist/mjs/components/BackButton.js +1 -1
- package/dist/mjs/components/BackButton.js.map +1 -1
- package/dist/mjs/components/CheckboxForm.js +1 -1
- package/dist/mjs/components/CheckboxForm.js.map +1 -1
- package/dist/mjs/components/InputForm.js +3 -48
- package/dist/mjs/components/InputForm.js.map +1 -1
- package/dist/mjs/components/InputOTP.js +1 -1
- package/dist/mjs/components/InputOTP.js.map +1 -1
- package/dist/mjs/components/TermsModal.js +4 -4
- package/dist/mjs/components/TermsModal.js.map +1 -1
- package/dist/mjs/dictionaries/en.json +9 -1
- package/dist/mjs/dictionaries/pt.json +13 -5
- package/dist/mjs/get-dictionary.d.ts +24 -0
- package/dist/mjs/helpers/index.d.ts +2 -0
- package/dist/mjs/helpers/index.js +28 -0
- package/dist/mjs/helpers/index.js.map +1 -1
- package/dist/mjs/hooks/useAuthService.d.ts +36 -6
- package/dist/mjs/hooks/useAuthServiceInstance.d.ts +12 -2
- package/dist/mjs/hooks/useDictionary.d.ts +8 -0
- package/dist/mjs/index.d.ts +1 -1
- package/dist/mjs/index.js.map +1 -1
- package/dist/mjs/machine/index.d.ts +24 -4
- package/dist/mjs/machine/index.js +32 -12
- package/dist/mjs/machine/index.js.map +1 -1
- package/dist/mjs/machine/index.typegen.d.ts +2 -2
- package/dist/mjs/machine/types.d.ts +11 -1
- package/dist/mjs/styles/themes.d.ts +4 -0
- package/dist/mjs/styles/themes.js +62 -0
- package/dist/mjs/styles/themes.js.map +1 -0
- package/dist/mjs/types.d.ts +1 -33
- package/package.json +5 -4
|
@@ -23,7 +23,10 @@ declare const useAuthService: () => readonly [import("xstate").State<import("../
|
|
|
23
23
|
};
|
|
24
24
|
} | {
|
|
25
25
|
type: "GOOGLE_LOGIN";
|
|
26
|
-
|
|
26
|
+
payload: {
|
|
27
|
+
accessToken: string;
|
|
28
|
+
providerName: string;
|
|
29
|
+
};
|
|
27
30
|
} | {
|
|
28
31
|
type: "START_PASSKEY_LOGIN";
|
|
29
32
|
payload: {
|
|
@@ -233,6 +236,8 @@ declare const useAuthService: () => readonly [import("xstate").State<import("../
|
|
|
233
236
|
};
|
|
234
237
|
} | {
|
|
235
238
|
type: "SIGN_IN_WITH_PASSKEY";
|
|
239
|
+
} | {
|
|
240
|
+
type: "USER_CREATE_ACCOUNT_BUT_NOT_LOGIN";
|
|
236
241
|
} | {
|
|
237
242
|
type: "SET_CONDITIONAL_UI_PASSKEY";
|
|
238
243
|
}, any, {
|
|
@@ -263,7 +268,10 @@ declare const useAuthService: () => readonly [import("xstate").State<import("../
|
|
|
263
268
|
};
|
|
264
269
|
} | {
|
|
265
270
|
type: "GOOGLE_LOGIN";
|
|
266
|
-
|
|
271
|
+
payload: {
|
|
272
|
+
accessToken: string;
|
|
273
|
+
providerName: string;
|
|
274
|
+
};
|
|
267
275
|
} | {
|
|
268
276
|
type: "START_PASSKEY_LOGIN";
|
|
269
277
|
payload: {
|
|
@@ -473,6 +481,8 @@ declare const useAuthService: () => readonly [import("xstate").State<import("../
|
|
|
473
481
|
};
|
|
474
482
|
} | {
|
|
475
483
|
type: "SIGN_IN_WITH_PASSKEY";
|
|
484
|
+
} | {
|
|
485
|
+
type: "USER_CREATE_ACCOUNT_BUT_NOT_LOGIN";
|
|
476
486
|
} | {
|
|
477
487
|
type: "SET_CONDITIONAL_UI_PASSKEY";
|
|
478
488
|
}, import("xstate").BaseActionObject, import("../machine/types").AuthMachineServices>>>, (event: import("xstate").SingleOrArray<import("xstate").Event<{
|
|
@@ -500,7 +510,10 @@ declare const useAuthService: () => readonly [import("xstate").State<import("../
|
|
|
500
510
|
};
|
|
501
511
|
} | {
|
|
502
512
|
type: "GOOGLE_LOGIN";
|
|
503
|
-
|
|
513
|
+
payload: {
|
|
514
|
+
accessToken: string;
|
|
515
|
+
providerName: string;
|
|
516
|
+
};
|
|
504
517
|
} | {
|
|
505
518
|
type: "START_PASSKEY_LOGIN";
|
|
506
519
|
payload: {
|
|
@@ -710,6 +723,8 @@ declare const useAuthService: () => readonly [import("xstate").State<import("../
|
|
|
710
723
|
};
|
|
711
724
|
} | {
|
|
712
725
|
type: "SIGN_IN_WITH_PASSKEY";
|
|
726
|
+
} | {
|
|
727
|
+
type: "USER_CREATE_ACCOUNT_BUT_NOT_LOGIN";
|
|
713
728
|
} | {
|
|
714
729
|
type: "SET_CONDITIONAL_UI_PASSKEY";
|
|
715
730
|
}>> | import("xstate").SCXML.Event<{
|
|
@@ -737,7 +752,10 @@ declare const useAuthService: () => readonly [import("xstate").State<import("../
|
|
|
737
752
|
};
|
|
738
753
|
} | {
|
|
739
754
|
type: "GOOGLE_LOGIN";
|
|
740
|
-
|
|
755
|
+
payload: {
|
|
756
|
+
accessToken: string;
|
|
757
|
+
providerName: string;
|
|
758
|
+
};
|
|
741
759
|
} | {
|
|
742
760
|
type: "START_PASSKEY_LOGIN";
|
|
743
761
|
payload: {
|
|
@@ -947,6 +965,8 @@ declare const useAuthService: () => readonly [import("xstate").State<import("../
|
|
|
947
965
|
};
|
|
948
966
|
} | {
|
|
949
967
|
type: "SIGN_IN_WITH_PASSKEY";
|
|
968
|
+
} | {
|
|
969
|
+
type: "USER_CREATE_ACCOUNT_BUT_NOT_LOGIN";
|
|
950
970
|
} | {
|
|
951
971
|
type: "SET_CONDITIONAL_UI_PASSKEY";
|
|
952
972
|
}>, payload?: import("xstate").EventData | undefined) => import("xstate").State<import("../machine/types").AuthMachineContext, {
|
|
@@ -974,7 +994,10 @@ declare const useAuthService: () => readonly [import("xstate").State<import("../
|
|
|
974
994
|
};
|
|
975
995
|
} | {
|
|
976
996
|
type: "GOOGLE_LOGIN";
|
|
977
|
-
|
|
997
|
+
payload: {
|
|
998
|
+
accessToken: string;
|
|
999
|
+
providerName: string;
|
|
1000
|
+
};
|
|
978
1001
|
} | {
|
|
979
1002
|
type: "START_PASSKEY_LOGIN";
|
|
980
1003
|
payload: {
|
|
@@ -1184,6 +1207,8 @@ declare const useAuthService: () => readonly [import("xstate").State<import("../
|
|
|
1184
1207
|
};
|
|
1185
1208
|
} | {
|
|
1186
1209
|
type: "SIGN_IN_WITH_PASSKEY";
|
|
1210
|
+
} | {
|
|
1211
|
+
type: "USER_CREATE_ACCOUNT_BUT_NOT_LOGIN";
|
|
1187
1212
|
} | {
|
|
1188
1213
|
type: "SET_CONDITIONAL_UI_PASSKEY";
|
|
1189
1214
|
}, any, {
|
|
@@ -1214,7 +1239,10 @@ declare const useAuthService: () => readonly [import("xstate").State<import("../
|
|
|
1214
1239
|
};
|
|
1215
1240
|
} | {
|
|
1216
1241
|
type: "GOOGLE_LOGIN";
|
|
1217
|
-
|
|
1242
|
+
payload: {
|
|
1243
|
+
accessToken: string;
|
|
1244
|
+
providerName: string;
|
|
1245
|
+
};
|
|
1218
1246
|
} | {
|
|
1219
1247
|
type: "START_PASSKEY_LOGIN";
|
|
1220
1248
|
payload: {
|
|
@@ -1424,6 +1452,8 @@ declare const useAuthService: () => readonly [import("xstate").State<import("../
|
|
|
1424
1452
|
};
|
|
1425
1453
|
} | {
|
|
1426
1454
|
type: "SIGN_IN_WITH_PASSKEY";
|
|
1455
|
+
} | {
|
|
1456
|
+
type: "USER_CREATE_ACCOUNT_BUT_NOT_LOGIN";
|
|
1427
1457
|
} | {
|
|
1428
1458
|
type: "SET_CONDITIONAL_UI_PASSKEY";
|
|
1429
1459
|
}, import("xstate").BaseActionObject, import("../machine/types").AuthMachineServices>>>];
|
|
@@ -23,7 +23,10 @@ declare const useAuthServiceInstance: () => import("xstate").Interpreter<import(
|
|
|
23
23
|
};
|
|
24
24
|
} | {
|
|
25
25
|
type: "GOOGLE_LOGIN";
|
|
26
|
-
|
|
26
|
+
payload: {
|
|
27
|
+
accessToken: string;
|
|
28
|
+
providerName: string;
|
|
29
|
+
};
|
|
27
30
|
} | {
|
|
28
31
|
type: "START_PASSKEY_LOGIN";
|
|
29
32
|
payload: {
|
|
@@ -233,6 +236,8 @@ declare const useAuthServiceInstance: () => import("xstate").Interpreter<import(
|
|
|
233
236
|
};
|
|
234
237
|
} | {
|
|
235
238
|
type: "SIGN_IN_WITH_PASSKEY";
|
|
239
|
+
} | {
|
|
240
|
+
type: "USER_CREATE_ACCOUNT_BUT_NOT_LOGIN";
|
|
236
241
|
} | {
|
|
237
242
|
type: "SET_CONDITIONAL_UI_PASSKEY";
|
|
238
243
|
}, {
|
|
@@ -263,7 +268,10 @@ declare const useAuthServiceInstance: () => import("xstate").Interpreter<import(
|
|
|
263
268
|
};
|
|
264
269
|
} | {
|
|
265
270
|
type: "GOOGLE_LOGIN";
|
|
266
|
-
|
|
271
|
+
payload: {
|
|
272
|
+
accessToken: string;
|
|
273
|
+
providerName: string;
|
|
274
|
+
};
|
|
267
275
|
} | {
|
|
268
276
|
type: "START_PASSKEY_LOGIN";
|
|
269
277
|
payload: {
|
|
@@ -473,6 +481,8 @@ declare const useAuthServiceInstance: () => import("xstate").Interpreter<import(
|
|
|
473
481
|
};
|
|
474
482
|
} | {
|
|
475
483
|
type: "SIGN_IN_WITH_PASSKEY";
|
|
484
|
+
} | {
|
|
485
|
+
type: "USER_CREATE_ACCOUNT_BUT_NOT_LOGIN";
|
|
476
486
|
} | {
|
|
477
487
|
type: "SET_CONDITIONAL_UI_PASSKEY";
|
|
478
488
|
}, import("xstate").BaseActionObject, import("../machine/types").AuthMachineServices>>>;
|
|
@@ -43,6 +43,7 @@ declare const useDictionary: (locale: Locale) => {
|
|
|
43
43
|
};
|
|
44
44
|
login: {
|
|
45
45
|
login: string;
|
|
46
|
+
passkeyLogin: string;
|
|
46
47
|
password: string;
|
|
47
48
|
continue: string;
|
|
48
49
|
passkey: string;
|
|
@@ -60,6 +61,7 @@ declare const useDictionary: (locale: Locale) => {
|
|
|
60
61
|
verifyEmail: string;
|
|
61
62
|
verifyEmailDescription: string;
|
|
62
63
|
wrongCode: string;
|
|
64
|
+
codeExpired: string;
|
|
63
65
|
confirmCode: string;
|
|
64
66
|
resendCode: string;
|
|
65
67
|
inform2FACode: string;
|
|
@@ -78,6 +80,8 @@ declare const useDictionary: (locale: Locale) => {
|
|
|
78
80
|
selectMethodPasskey: string;
|
|
79
81
|
passkeyNotSupported: string;
|
|
80
82
|
passkeyNotSupportedDescription: string;
|
|
83
|
+
noPasskey: string;
|
|
84
|
+
noPasskeyDescription: string;
|
|
81
85
|
};
|
|
82
86
|
register: {
|
|
83
87
|
password: string;
|
|
@@ -85,6 +89,9 @@ declare const useDictionary: (locale: Locale) => {
|
|
|
85
89
|
passkeyNotSupported: string;
|
|
86
90
|
continue: string;
|
|
87
91
|
title: string;
|
|
92
|
+
passkeyCreatedButNotAuthenticated: string;
|
|
93
|
+
passkeyCreatedButNotAuthenticatedDescription: string;
|
|
94
|
+
backToLogin: string;
|
|
88
95
|
forgeTitle: string;
|
|
89
96
|
emailLabel: string;
|
|
90
97
|
emailPlaceholder: string;
|
|
@@ -101,6 +108,7 @@ declare const useDictionary: (locale: Locale) => {
|
|
|
101
108
|
verifyEmail: string;
|
|
102
109
|
informCode: string;
|
|
103
110
|
wrongCode: string;
|
|
111
|
+
codeExpired: string;
|
|
104
112
|
confirmCode: string;
|
|
105
113
|
resendCode: string;
|
|
106
114
|
createPassword: string;
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { AuthProviderConfig } from '@alore/auth-react-sdk/dist/types';
|
|
1
2
|
import Auth, { AuthProps } from './components/Auth';
|
|
2
3
|
import { AuthProvider } from './components/AuthProvider';
|
|
3
4
|
import useAuthService from './hooks/useAuthService';
|
|
4
5
|
import { SessionUser } from './machine/types';
|
|
5
|
-
import { AuthProviderConfig } from './types';
|
|
6
6
|
export type { AuthProps, SessionUser, AuthProviderConfig };
|
|
7
7
|
export { useAuthService, AuthProvider };
|
|
8
8
|
export default Auth;
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":";;;;;;AAEA,6DAAoD;AACpD,4DAAyD;AAKhC,6FALhB,2BAAY,OAKgB;AAJrC,4EAAoD;AAI3C,yBAJF,wBAAc,CAIE;AACvB,kBAAe,cAAI,CAAC"}
|
|
@@ -24,7 +24,10 @@ export declare const authMachine: import("xstate").StateMachine<AuthMachineConte
|
|
|
24
24
|
};
|
|
25
25
|
} | {
|
|
26
26
|
type: "GOOGLE_LOGIN";
|
|
27
|
-
|
|
27
|
+
payload: {
|
|
28
|
+
accessToken: string;
|
|
29
|
+
providerName: string;
|
|
30
|
+
};
|
|
28
31
|
} | {
|
|
29
32
|
type: "START_PASSKEY_LOGIN";
|
|
30
33
|
payload: {
|
|
@@ -234,6 +237,8 @@ export declare const authMachine: import("xstate").StateMachine<AuthMachineConte
|
|
|
234
237
|
};
|
|
235
238
|
} | {
|
|
236
239
|
type: "SIGN_IN_WITH_PASSKEY";
|
|
240
|
+
} | {
|
|
241
|
+
type: "USER_CREATE_ACCOUNT_BUT_NOT_LOGIN";
|
|
237
242
|
} | {
|
|
238
243
|
type: "SET_CONDITIONAL_UI_PASSKEY";
|
|
239
244
|
}, {
|
|
@@ -264,7 +269,10 @@ export declare const authMachine: import("xstate").StateMachine<AuthMachineConte
|
|
|
264
269
|
};
|
|
265
270
|
} | {
|
|
266
271
|
type: "GOOGLE_LOGIN";
|
|
267
|
-
|
|
272
|
+
payload: {
|
|
273
|
+
accessToken: string;
|
|
274
|
+
providerName: string;
|
|
275
|
+
};
|
|
268
276
|
} | {
|
|
269
277
|
type: "START_PASSKEY_LOGIN";
|
|
270
278
|
payload: {
|
|
@@ -474,6 +482,8 @@ export declare const authMachine: import("xstate").StateMachine<AuthMachineConte
|
|
|
474
482
|
};
|
|
475
483
|
} | {
|
|
476
484
|
type: "SIGN_IN_WITH_PASSKEY";
|
|
485
|
+
} | {
|
|
486
|
+
type: "USER_CREATE_ACCOUNT_BUT_NOT_LOGIN";
|
|
477
487
|
} | {
|
|
478
488
|
type: "SET_CONDITIONAL_UI_PASSKEY";
|
|
479
489
|
}, import("xstate").BaseActionObject, AuthMachineServices>>;
|
|
@@ -502,7 +512,10 @@ export declare const authService: (services: {}, context: AuthMachineContext) =>
|
|
|
502
512
|
};
|
|
503
513
|
} | {
|
|
504
514
|
type: "GOOGLE_LOGIN";
|
|
505
|
-
|
|
515
|
+
payload: {
|
|
516
|
+
accessToken: string;
|
|
517
|
+
providerName: string;
|
|
518
|
+
};
|
|
506
519
|
} | {
|
|
507
520
|
type: "START_PASSKEY_LOGIN";
|
|
508
521
|
payload: {
|
|
@@ -712,6 +725,8 @@ export declare const authService: (services: {}, context: AuthMachineContext) =>
|
|
|
712
725
|
};
|
|
713
726
|
} | {
|
|
714
727
|
type: "SIGN_IN_WITH_PASSKEY";
|
|
728
|
+
} | {
|
|
729
|
+
type: "USER_CREATE_ACCOUNT_BUT_NOT_LOGIN";
|
|
715
730
|
} | {
|
|
716
731
|
type: "SET_CONDITIONAL_UI_PASSKEY";
|
|
717
732
|
}, {
|
|
@@ -742,7 +757,10 @@ export declare const authService: (services: {}, context: AuthMachineContext) =>
|
|
|
742
757
|
};
|
|
743
758
|
} | {
|
|
744
759
|
type: "GOOGLE_LOGIN";
|
|
745
|
-
|
|
760
|
+
payload: {
|
|
761
|
+
accessToken: string;
|
|
762
|
+
providerName: string;
|
|
763
|
+
};
|
|
746
764
|
} | {
|
|
747
765
|
type: "START_PASSKEY_LOGIN";
|
|
748
766
|
payload: {
|
|
@@ -952,6 +970,8 @@ export declare const authService: (services: {}, context: AuthMachineContext) =>
|
|
|
952
970
|
};
|
|
953
971
|
} | {
|
|
954
972
|
type: "SIGN_IN_WITH_PASSKEY";
|
|
973
|
+
} | {
|
|
974
|
+
type: "USER_CREATE_ACCOUNT_BUT_NOT_LOGIN";
|
|
955
975
|
} | {
|
|
956
976
|
type: "SET_CONDITIONAL_UI_PASSKEY";
|
|
957
977
|
}, import("xstate").BaseActionObject, AuthMachineServices>>>;
|
|
@@ -19,6 +19,7 @@ const initialContext = {
|
|
|
19
19
|
active2fa: undefined,
|
|
20
20
|
sessionId: undefined,
|
|
21
21
|
registerUser: undefined,
|
|
22
|
+
socialProviderRegisterUser: undefined,
|
|
22
23
|
googleOtpCode: undefined,
|
|
23
24
|
googleUser: undefined,
|
|
24
25
|
sessionUser: undefined,
|
|
@@ -27,7 +28,7 @@ const initialContext = {
|
|
|
27
28
|
RCRPublicKey: undefined,
|
|
28
29
|
};
|
|
29
30
|
exports.authMachine = (0, xstate_1.createMachine)({
|
|
30
|
-
/** #no-spell-check @xstate-layout N4IgpgJg5mDOIC5QEMCuAXAFgWWQY0wEsA7MAYgCUBRAZSoBUB9AYQHkA5eqgDXoG0ADAF1EoAA4B7WIXSEJxUSAAeiALQBmAIwCAdAHYATHoCcANnUAOUwBYLevQBoQATzUGDmzTuMWB603oWBuohpgC+YU5oWLgEJGA6JPiyAG7kAJLs6fTpAIIAMukAWlSCIkggktKy8ooqCBrW1jrq1vaaBkECVqaaAKxOrg2adhY6pgJtHkZWbeoRURg4+ESkicTJhGlkmdl5hSV8muXiUjJyChX1qpp6pjqavbfGBn161sYvji5qI5M6QXsfQMAhefjsCxA0WWcTWm221Do-GEiiq51qV0Q2jGI0+QWmrT6AlMgzcAk8LWsrWM5NMPjakOhsVWCXh5Bo6QA4uxGABVAAKZVRZxql1A9QMVOM+iammswVMNgC3yGqncHW8NJpfWMJnUr0ZS2Z8R0bLIHO5fMFx2F1QudUQkvU0ve1jlCqV9lJDWmfQegVaHwsWluhpiKxNZvyrE5mSFFTRoodCHcFj9-RMwPspgM5gs3rV2l01gE3V1bxeboMYZhLNNeFS5AAYqwKJzWEx+bkaDQAOqtgAi8dOdox4sdAj6YzsRJMk0+NmsBc0xj692MthCmnUdwstj6NeNcIbWwSAHcwAAjdTMeSkBsSABOOjwd7AJ+IUDIbHYTfSFGwRheyoAAhdRGGjWN2GHSoRXtTEEEeOwHgMHwvlzHd5W9dw1x0PprGBKwp1GatIihI0I2PRsdAva9b2Ie90CfHQwAAW2QQgABt0mIMQMDIAA1KgKHSJsAE1GCobBcnSfJJMKWMQNk7IxJgxN4PHRDTCCFC0KMDD3gMbCQTGfDCNMYjAlIxZw1hVkTzSGirxvN8H2fNJH0IAAzZwSCgKh2K4qhOMIKBCEvLiZGcMgIHkBISBSCQAGtWQouz62o2iXIY98mPcsBPJ8vyAo4zjgtC8LIvQZwEASiQ8GQUUyjUuCx2ULETGldRyTuewDKwn4U38PQdEmczLKCQ9KPszLnPoxjmI87zfM-EqgpCsKIpC6qyAKx9mLETjGq8p9WNNNK6zZJy6NcvKdCWorVsCsqNsq7aarqhqmuEFrRzFdrEM6loeuVfqjMGyVczwgjOgsiwSKm9Krqy+bcuYtjSoMLzkFvCByCEkTxJYfIZMA38mCkmS5IMJtcl+9F-vqW5-kVTx5UMcxDOw2x7jG2GJus8jbMuhzzzm27FoK5a-OYI7CFY9gvPQNbOKx5AYri9ZEpS87hcjUXruyhb8sKlaoFljiFaVlW1dq4hEq+i5mpRBNWsZrELEecYCL6W4Ocw8GhleWxofG+GrMRkXZpunK3PuqXHvNuWreV561d2x99ufQ7jtO3Xa316OjbRk3pc-C35cV1PMexu2Hcap2fpdkcGeTEYvZsPpfb6zmBqDiYxj5ojw8msimWmjLT0N1G48ICBOPZKh8ioZgmB-dgV-oVt6aTBC5Q1N0LBedRfd8SxsO6rxUKnARc3lGx5jHi7C6nziJDC4hzQYAVGGoWMaC4BQPkdAKA7w0gDEsbQ8Kggss8E+HQSSDXlH6EE7g8SeEnBZA8T89ZUVfu-Eg5p6C5AoJ2bsNAADSVAJKQTjM3WCf1kzOlePoNc+ozABjsEuQatwLL6D0F3N0jxnQjEji-Ryb8P6JHnuQWhPJezZAABJAVAjeDgG9V7b3oepNqTMqReHeDqTwPh3gjHzDwncuhVyLiPsgkI1gxF4IkQQ4g0iF5kHbDGZeEEYx0JOAw1uCF2bpjdNYXoa53CBG9LqAwOhgjGE8H0fUeh-CtEcTNfBUi57uNyAOASuR2DMCoIwLejAuw9n7BQIc2i3bJiaCwgI7dgy6kCOYoY2l1AtBCJ8Vc8oCKhhwQXJxCRJEkDceyLkPJMhASUWU8hVDVI1MYQhIwegvC2BLAI4EjxtLehGHw7S3QiQ0hBBs9Jk9nFZJkV-Zeq85kVMHIwbADBFGsGqf4nR7sUyGBdPhSUt9SzkgIns4IzQBGPHlPqI+wJwiDKPBky5YzsmL1uWQh5VSnkvLeUcD5tSEJaElOMCYJgOi2BBOoPZoS8IpPsLqJU25zlXVGa45FNzN73L7I8559BXlDgMLi5Zml9TyjwrqUsntDJym4UMfozoARWBCJYX2U5BbjyRgbZl4ydBvwapxfkyBYCwBSs4GgoVP5-iyDQZR5TKHUJ8VBMBujECWH8N7cwpZupWD3NhN4sTOj4mOQINZehGUapcVqnVyA9UGqNWAE1ZqyAgVyMwChjqvmtCMOMfwBELLmG0MYClEMqTNCCF3E+ayj5H1DdRTVyLtX1Sjfqw1xrTVQE-jahZjB2AdkYDQAU-JWxcHebaQJQq3S6CPo8HppYEkCOwoEXQcNTHaSaJA6tmSkUyJ0NINtvYZCYCbbG6KFr0hWo5Z2uRaamFJPuJDT25JnRvCaNhbozR-A5h1JYEs2CbJDIRSM8Ndad3ED3VgQ9xrE3JtTUs0dANOgirlL4FJVJDDnwhq+h4NhdQdDpWkuFE8mWAa3cB0DB6Y0QY7Xa7tTA+38gHaQqgw7XaCrg8CTpCSXhvGIq8AYENJRXz0KCPcZjiSTnXYillW7oQ0DwI+MAYBP5IhYBwAcewOAFD5Okc91Cr34tBM0DoqFupUlvp0FUjosMtDWfUzouI0ziYA1che+cZNyYU2QE9Z7KM0N8dBGDu8hVjQBB8CY2h3iGUQUHN0I1i1-DsB4I+qrn7DPrU51KWBXPyfbfMqjPbaP0aHbpzS197grjuLiAiupgzzt8OMKcAQzDWKDQ51Lm7nN7SfB53YXmcs+Ydf58B9QtyxMwdpWl8NyTYW0H6SwG5u7+G6HKFrtat0dcfGQbzXa8v9sHYxorrHgjeBXK8AR8MeMXypC0P5NIT50iCI-X98KLmObGcy7AYAsASAgDQMAC8TzyDZXcm1lSmMtwCxAgRI3PYEXnDOyLWJFSxK7mzbS8NFTOmW+Gt7H3MBfZ+390UkGU37fqG0KBeYUnqjTC8PZZb+FygzVZDcIb8PqpreGuT6BPJgBSH5GgUb0AazWHVHWaqo4btcZz7nvPPz884ugOuDbvpCBJ4gNoXcATAlCZ7VCxg9mTi8Fh+pQQC3B0x1IqXhAed84FxnLOOgc7oBOo+M6YvxEvclx96XNv5eK8dvIZ2ArYOk-6OmQItx7GKlLLxoYhgDM6h8P0RL2lzdIt4hgQ9Z4nwQCJ9BoP4PScn2aK8EeYSTfejTJ01mtw1wnOQanll6f0CZ+z7nnFI6C9q5C9S-o2gOmWHMwgZnXTL4hGJIY2Fj2CNhqyU3lvj4c9sGwPyZeXBGCeM5N4i0Uy-P58G2rxUzQcylg6bKkYezCR4TpB0W4R8xUPaFn+57rXG98WbzGrPC-BLCVEn1vxHf98EAPhDBvYmhgRcwONC0hg7BeYqR4YkktAuhNAG945TY-J8gXEhd4p7Zkp0sn9CMpEHozYMCP4-cG4A8m498nUEA1w-BRpUxnRAh8IQgY9EBfBmhb45RtQIDPYH83cUtNUiD0DMDYphccDRdkt-0X9UCy4oASCSAyDld29mNg9EAu4fBvBugx8-Bgg2k2CNCUkC0Ulb5DEqQUChDPx5DP5RDsDtY8CnsCCxkLC5CXFFDG4Vd+UADqD1CxgaRgxuodC0MZUPUARyQ7BuojACIzDWdxcJMZDE4rCsCtZcD84HCZ8nCE5iDXDPpyDiBmp1AqCvk1wKQ8wklyVeg+4sRmZ9BRN3BupDBeDzDMjhCP47cDojonc85+CpDBDmjLDsicD-c8jKCvCvkc1mg8QSxJgRgpwoC1DtJNQjBSw1lb5-BjAUDYBUA8A8A4BYAvJUBOJEjqAmxERlFk0ikewSlWAqFd9Ri25b4Sx5UT5fBiQkl8JvQUkxgAgPhkEeYQsNiJAlYzxkA5N04fw-wAJe1exlMBxSgBtqDfBeg8JtxDCzNb8PjPYdAmhBMn0dw6QLIASgSQSwB05eQ6BGBFESEBxewSFikaY6Z4Svk7gNwAQYk1lFx6tvQuM4lESSxtxb8OhCT0BgTQTsY29GTkwbB+gWgcw9xgw4Z9QPiwkHhy00xehuhPZJ9H80j2dCC+ioA1ZcZyAbDkiJDcEejw1nDDSvswA3CKCVcJSEI7AQD3QNlekIUlT1kM1LAPBtxoip82cJd4izZrS8YkiRd7Dp9dSMi0DPxQzbScilCbQVDO8h9yRdBOpphv1KiEATARoBF-BZVYZJg+DJDn9ejYyDTsYjS2js4OjndXcyzHDXErTqybS7ThiHTCjkxETSt25txtIXgPAK8dQsStdmYSyQQf1tSoygzMAQSIARSSSxSyTikaBWAmx6AaTqBGB6TVdcz8TRokk-i1xZxvRBzNQC0SxVxu4LAUD5yF8lz04CZf8KToTcheQeV9zeTRodlyi0wj5vQdw-QJgy0PhQRQQQQtTujyzw0HzFziT04k1idHTNIu5zBRUjAJhj4pxpVnV4ZoF-B8IC0XUCSYj3dpDSAzwBxrcdjvwOAITAJYSBJ0gikYS4TuyEINwvZQQNwAjNS5ih9Lt2Z9RLBtxgK7zyKBDw0qKaLec6LEQqB2ABx2LvyzBOlgLBNghsQ9DEJILRp4YdwtAPgNxmspKLS9TKyayTSIzUjZy4jnCjSOzA87iuLPgvATdVxnRoccyhy4lQQUkpwu5PYpwmirKbTayHd6yuimz0iWz9SnLEz3D9zmdOlw87h2E6RUJ9d9QHg8QNxYFTCUC5NYAFMIAZZ5AvJCAXdciVZwzxDIzAy4iSqyqKriAqqarRQVZnKRiUzAD4ZlSqQtBiINxUw9kpUAQVxegM1gwxNzLYKpEMYuJ05FLlLVLUKAZTtpRo9Jxa9nj4dEIpR5VQR95kk3QUClrVYxSXyiZKZZJdzaZ9ymC-Qg1b5gQEk2grAQVPh9A79JQF1yR+gLq04xTkK89XLNJzAzAsTiRbAIVRrWDEJuoupQs1kRgQwWcAzYiPdgzioQb1YbKGq7KmqcbnCbZa4kr7Tvy6QRpPhAVMJjlB9twGkb86QIK9wAgwrZDyb1Y1sorc4XdibsbpCyb8aequyIbNq0wRoj57AtBLAuE8LEJqjBMJg6ig1bNSzzSFqxkWriByqnpSprLNZbKYLmydA9aDb-JnpErBjciXK+rqDsxdBHg-YfA74aceFD46sqQ7tByV0ubE5FEzxcglh6q7ChaKKKzZDg7Q6sBxaUqVwQLcxggklQ93AgLoapS9x6ttJVlA6zZY6w7CaI6za4rcbPwi747KbOzlCwdAC6Uxgdw7gQRljV1M77hs6CIehARMaZySaRb9Sq7MBIrHcGzI7pLLKY6Q6lgE6Nr6h2CUFNwn0JgSxBKPgvBgR0yiLmbPYUCvIPtYQoAmwnwYABxGoCaTaiay7ozXED70Aj6T7Hwz6L657OKhUAxfrPhLFD9YYPiQgYbwLv1Aq3h97D7Vhj7T6wBz70BebM52iBbGztbzb77H6oGYHkA37Jahs+KARegBFpjcw51BopTQicTug2bSxkD5rzbnDOQJB34F5EiS6Uib6gy6GGGoAmGBj64lD575iVwHgOgBEhy1x3hKU1lvY5QjFPAdxcwC6-J6HGGwBEi+ax6YrkHy6OHlGrCsHHaxi3hB417Ft6QvqvaiR9BbgeMFwj4tb8Dy6oBOHuHWiWGzT7Hb6dBHGdGeGldkr+GaC-TxhgxSV309QL9LsiGEkT4n1fUUCvGuGVGRCr7S7YqPH4nnGFCa7mpkz67vDFUukdQGjQQgisRJRpRT5PAUTd7qGsao7w10nEnWi1HorBa2G4iGndGsnercmxj7s4lfZX15tHgQViR9AxL3AbAgQkliqvcrcZdzY5M8ZiBZAo0KBmAKBw7WHUmgzLdrdy5FmFMVnOI1mKA9Gem6knhRpj9Vag0yU9k9wrEZjDA2ZEMZmuc5mZYDnlnCBVn1nR6WmkH3GdnZm9mFnIBDmfnjn1mzmAlUywkKRKc06RGcM9lBNOkg1kdPh9IsKNizVPnwXvnfmNnPNrVet7V-99G6kObRoFtnRzAcx+gX0KROhSx+klVSVcW218WlmjmTnxT36AZ3rmgmhMFUJsQEl7mcwVTCmSxocQg+62mcbgNuWIWiW28cnYXACb0PL4NJx-Aj5b49kzAwVOhonHg5agaaHy7lX9mCXeW-nNtqNe0dsGNQdNXvDJgwU6RV1PXtxEbbhtwaXyR8quNpzFXB7KyKAwAwpYB0ACp+RUBLwQo8AKE41mAvmjnNm3GdT2H9So2Y243HwE2k3CAU202M3IWYXPkqWkS+ps13g6QtBjINQiQByRGKxHgFHPx83CBY343E3k3U3nB027XIWs3Grhbo7E4e2+2i2B3S2h2R2eXK2umVcNXq2gkElYkcNIVpblVjIdI9RS12XXg7Gc2HK83o3e3C3i3B3y3R2o1x2J6LKYzZCZ2b352y3h2K2o0E7PDKXN2FjYbnhnmdxdLU77gvVXQg0C0u2oB33+2S2v2l3VXOIn3w2p2zYEO52kPF2f3OIE6CjsG1CYOs03QnhdQwlBLIYvBljWZiRDKktNGPHnDsPb2F373l3H3mnEHn2db4rI2r3Z32PkP8Oq28VNJQl7h+ltIiQkk9WX1uh+m-T+Ttw-Az37LSbL2C3EO73v2H20OePOjWntmL3BOdOcO9OUPCWCPV2673X00vVNdFQGsabPaZV-CsTmS4CTqOgNOB65MLPxlzRXloTAFsAaAnk3kCh9yiRDselkcdxpHB81Q3r+nFQVUrBiQU8rXqJAvr2Cpgu6A1q-5T16AKBcgcgOBJJpJZJ9yyVfCKiixBEwDlxiK4lWhBzJhPiWt8vZ3gvcl8lClilSlgdBxYv3AMzmYrBUJw9Eabhup2MTAPAYVEt8JeuhPC3gu5EZkeUVEwJ15N4tEBWmZfAxhnnghAUaQQtadcIYF1PJwpQu4NugvWUkQf5SuAFhJgFhJ6vmkHhx09Q2aa9lwC1Dd7BHveErBLXamUs+utvWUN9vFL1-HT40rAhDBdx5P5uVw6CNkBEsFg53gXuCvnxC3WJYBsAvtH3mBoxyTwvIvsBov8h6vPgRp8Jgw2hZVg3Qe+FTGCIIighObcup54fCvSr9a8bSp0PTOEgxfnwJerbuq7PUfwssSRFc0c1GXBobgpjRp5QpynQcISf+vFepeuJ-nePw35ft1WrDauJxOWNSc06UJkMaVcQce1lpQ79LFotMfJLYepCbfLqBIo055cjv9CYJI7qWf-HV631TF6QA3dKbgXP-RgwU6dQQsA-+7hbg-npQ+QoIAI+waJuXgYbrFgxfUAg2uMK0wQRPAcIC0IQRfHJ8-SpC-w-CdVqVK2BYTYu7BF14Zbh1dcwVxlwUlpO0wgrAh1KTetvRbpfXGJ2KKbfF+HeVeTvEBc0xhZvcLJ-Zhlwq+ZQfBARfUPB5-Cv1+0Pl++Oro1-9Tle7akyt+EBD8-R9Eu41w3QFbQeg0WgEuvsBJLMBz7W9NuV-R-s9Bl7MdRe4A0uInCf68Nkq-7c5ghACBIkrAayLuN1zCQHUbg9ITDNxWvg5oTAl-eAWbDqpGdx6YAoLtf0d6qE3+wcS8rqG8pzY8BveWjoJm0A-Eb4oDVvnLzgEvg5MjUMAPPkXysBl8q+YpJ93K6Vd0gHAJ6rZk1yPATIxFN0MuDT7kc3ggVU-gyn4EW1BBsmMACILEG54rijAdIAOGXhPVQQ6YMsIZk8CGUCwK3WJN3Xwg14FaZAoQcYLjamDS+cfVCLoEwgmA6QPgMRhPz3BxIdku1RVKhi8GvhWIh0D7H5HfaPgI+t-GgaTxfASBEhC8WQN2025pDRQ9A1Mpwm8CdwkMoQj4BoJsBHZc0nwN4KfniE5Ckh+Q+DoUIj5UCNGQLNvoYJaF5CUhHQ4oZv2I65kpwI0XoAWi+AJI-SR-EOBARXALgMqDifQTb1QClVHwI7EQTnmOKnFGA5xWgJFy3g3FvyIwCYXSji5ZV-AR-FtiYGEyw1TsXgy2oMILZFCLgdVDIbLwMFBdnhBQ14bVWeglCtWa4MYG6FXA7IggtwDQbqH9AssHi5gdwCsMD7P4beHTJJmIRSYwDehQXNEaQRGEAdIat8XfrwSMDdQoaKXMxOxjk5JISUpmJjj0IEE4inGjTQhJ8KxGMishuIzJs-2SrrsJOAMCYN1CPJc9WgM4MwKDzuAGV-qq4Pft0C8FcjP4XQkzuyO+GcjmRnTHkVTVR5mYABk-GGIiUDi-A0wzQHUNslMT9ApyTwkFvM2YB-M2RDI1Uf112Y2joW+I1AZDS8p4RWgr1KPMEwLDH5NCPGe+JOHsBWj3moLW0RsyVGAtz2HIp0daJliujNRtdOPtDm8C+0NwYIVcHrh15s84kPGSnC8AaHrFVhggyNJxEjGtpzU3WUlj2E7QyDfu-jZGp0jO6dQ2ecBFLq0BbGYRGss4PpP5zz5liG0FY9ZlWI2xksnW+WXbG6w3bFYsWXol4OYC7FWMCwHwdjCCBpDkhIYwvZEffyHG6pKxCafwa-2bGhE7APSSjgPmcE6QHiC4VcLcydBeDyxJzMcSS20wSQPyX5Jsd+hpZFjYabQLBM4IIhRCymg-DhH0ifHDiXxR4qDOYMsHWCmxxTM8W2MvF2A2uTdC8XSD7GPjSxQXZ8aOITSOttsdGacfuVPGtiLx7wK8bmPuDjCQs94wyP6Vz6r9BBwJc4J+Cfp8sAEJCNFLaj-y3ECRAMZGgJllIQE3gzobCOUwSxA8c6NgekbGMdFbczen4ETtZ0zb2iFJNvZSVAFUlic3RDnZMKdhGhfpjy4+MJjrzRxedv04SGmsCC8HaTdJBnS3sZxjGadFJ4vO3jpM-ZqSV2yYh2u6IFGfAOCIQHXJ9X9QFhTseEGbqhmQyjxdxBsG3vL3eyfZvsv2XKBcEBy8SQc+5WTiNjCQPpJggIDQQIm8BgUsEsCKtLhKyFJScceONKf9kUzEJSE743+FQH-iAIcp5gD-n4HcqZjTsy4KFJSA1JTCXgZ8K0RZ2Sm45UpBODKceNGGCikcII7yitzpADSoYgmYkI8CEzaCwx3ubtnaOSZbMVRiUhMftNOb6TZxUtWoT4D1bUgTIEUy7GKO1BThTK8ktySdPDHzM+W0Yu-glMEHOiUhSYpAVqNf53ByQlIXgZKDzqCVVAR1YMO8F7EPimJmQ03p5LjoHpvJ+HaAQ6K0loylgjkrjrZz8ndMDJTpGYg8GRzBgHmXvHHmsTwiEQeptgh+PZLxlgZMZTkn6SjKUmsyMZSHHyb+wun8iF65MwEKhFQibIqQy4TaVEN7yBAAg3QSUC1mdyON38hqT-BACK5KVe+byDiqMOsyaEOgA1AINCk0DOC-OQjFcPAm0CkoFWXw5WRIFVmwB1ZwXRSllPG6o9HiBEO4AM1don4JRugerOpzRweAkRzElLPbMdnOztJxtDEUdIdERyxBtvSXuXHbKCynepTF0vlNXB2Ak6KfAkP5X4zHYaU0FO2afQdmJzo5EVTmaXOfrlyP82eJOVbVtrAyUxr-EKliVRzGyT4RhJWql1HIRF9w1Ob4iXJVEJz65C+HQFRVMHgl-wgEMblUieqBAeSQaE+HfDvgp8Zim9HUHdhA5nclZZcyOQ3NgDIB5mpgjSW5LHlqyj5J8vyGIKBHUE1OXUaJlshEQEoj+U4fptvPwhzgNwoc8NpfKdnXzT548nPNXNHkHyK5N8lSSAvvlMlgw3gMVgazk6gUJ+5fMkVOXqwJIw2XwzVDazBaEy+WREmjC60Kx8j05ATHijAnxAmRS0eyUCkSmDZ5hCpG4SCQeIIltpxxdY3LMQpImut7Ol0iUAuBqI6hCp4qL0Dr2-4AhRK98RoaFgiBkRiANpeABUG6KjCNAaCtoGsk6AmRWY83KGVfCS6m4eo51eakkFFhqKxWYzA3LN0mE18de5KF6lYDMCJJyUuoBzKMNXRjlvZ1s9UsSGcFGUjs7MNWqBVtkqiUYEsR8KMIHLCtcQqdP4CUxTC2DNQG9afjNwZD6DwlscO6K+CyV+QolAvIRvfB7gBxuYpYUOPzBHhvSB6mS42CxGeg8Q38+SpJIUqIb+wuYEMN4vrzDgIwMl4sLJZLErIqxyom0KqEMACl6JmlbMVpWDGwiKhym+ouGD0vilFwZ4d0S6vGSaWdIploMXuIaJTBphaOCygWC1hqUlwK6ScS2FXB5qbKWlOykpRDDCHlLh4SysOVIVOVxxLq9EDqqxEgA3LtlxS9pUMC0ABAulFSl5eG3eV3RkUTS6UGzxwF6gNaU2eBVoADDiSTMVgBvKMMhi01jsXGM7F3Cmyb0k6rxcAmEkMAoFoVgkiUOriOycZTspaf1ikk3q2Ag5u1QRBSq3TljwMcaKsaMMJAeVtI-QMwJzx1CzKPgNLIwJxjlBBoamry-jlqhIz7puVYy0mcVj6gPATq4IQUVmCNbl9W6RYZbg3w5XOZpMRghTFivxA1FEMtgQwL7AOoe0aWxmOSSYkmDGqEga2C1UKN9QvSHmPQJWhMyrxJJFxBacENgpVGapscKU-HOlLagCK1cOEMco0n0SDkmaMMcoVZGPJmQ5R+gzVADNlwC4PFDQ0aCSvwiycC0+uTNLNmy7Og2g2oClXPhAUeK0aoqMJJ0G3khUK8koz1qZkH5bjQlDozDi0RICjCYUfoewIiVnBUzXgFeR4iYD5LjEfANgDYlsR2KGp9ihxFxFEtWLlMK0RhcwN+hHL5kSyanTcELyFJPlsYowroPcEEzIIJmfgEwLTkExeds5EPUsK8FlUYdLS+pDZVSrYLgUeSe4AfD8U9gfEPAY5JVOoQZwjyB1cFBcheuQB6yfkv1WflKmaSI1gK4wR7hnzCJEhQBOCmSmAGoq0UwAV6+Ag8Gh5LjKRulA1aKjHx94-A2gAcXUynqJwjSow7DNKAF7wIheKSQShxjHIsDCQaOMyssuBaVz2q1VdiF1WegcaNadWb-g1jonjUNcVIYOIWVBSghgaNcRDX+oPKTgaWmPcLLQRzEypgVia32uARzBuKc136wZfjSvUQEjybGLPjML2VqdF0hmIvO4N4QzNtJKsdjXpsMhpUc6tgaWqyyfUmtdqW0nwvhvDV2bp66Mq9WEmLxnYxUGPYEEBUkbZ0uMxIHcCWLE1xFUGEDJ+i-VgZ8rgmUjfpH61lZcl4uXwfLSYlsBwclGCTKwh4qF48khVta0IcQxlQ-8sNieH0rNwIhxN1Rm6vTWnXTA5gvex+BJBZHGqPFFhJYJviyr-kEaLcp0-BahxOYeKM0dWDWt0i3GCUa8QQlpL6VPJy1OWxAFVjZ122TbaQ+vZ0tiBBGmaPYtbGJOOmEQM44ObHT9nhwM4eLceHclgb4H+SeApsFjZmM9K-RmAyBWK5bnVmzBpgdCPgZwbDFFR+t4CD65jXD0EGUrxlJHN4PwkSxzrJ+qC6cKvM9g0g86n6r4Tb3J6U9qenEEddMX16Thpi4KZ9PYvEpEovKt8POpVMK1xjuZyc62qVA8WdL+gUwF4GFneI68k8Y6zrnJMVT6svBIfMPsX3BxxqaCMBRNQqDuFk4cekzfhA22jy5gwiXg6-vNM+reBZ+cXWRabIV1aVJqkw2xFoCDRxacZhg4Qb4MbVBbbm0CFeZOFnRvAah0nR4GuEOSijggzQ3IckL+HXs3hsaoWYgAEQpJ1e5YBAp1GN2KgsSke-dVuCrBeD1hBULYXGwgCObb4l5aJu4GyoK7FQoIqYvqCJBQpb4Vo7SakIBES7JtZTfhGtt9QKyJ+tQ8WfUgRGdAbNwu9yc+AVEjrmCBlIDXDGsl-9fCcnIMXhoK1yq9xPwrbZGPmmwJRowq+kHUXPw68cwWykRhzW0i9Aqlg4vCcOMPFtoLVjxCyMjtb2oQU+XYqRQjKwlIzcdQffcUS15V6bdWSOrHqjrzmghKQJKMLbLR5heC2JbQzies2f2LptBsnCAw9M1z+FtFhgDWl7s0mCCHJ7MwmXrKhnBZb1pKtngWHhjncycA+GbfFnGmk9JpdUmaSnvIWH5QRkoH1StwpFf98x9iYflCkn1b6-pO+z6YDIoB6z2EWaGblVjpbzdV6WJQELwUsD6Z1tx0ogzzIJmocr1Qq8YCoK3DDVJZCuy7umKiJdxTsF-fQQAvVmFrXBjQn2b4rwHqgRsp7ZuoiS0D7za5h8ieQTtVWCsl5JZIKiywYJmzDslTEig1gfQ+GVZFczyYFsJ16USpJZT3Z3Hdq9ysyNRfjLP2saaH45ECkBdkLxg-ZlmUS2cHVjWJUdgKk4CI2CgeJQV5wcwOI3XKvkTyp5-u5I70C+Ialkc1mc-e-NiS+AxUveGVS8FaN+GNZx84Be0cr16bpsxeIVQWh1C5ggNQx0IqMYGZe9b9FFOww3LEAgL+caQeY8kdDwy1m6JKXoB+hhkzFfkWfUScXvkVAA */
|
|
31
|
+
/** #no-spell-check @xstate-layout N4IgpgJg5mDOIC5QEMCuAXAFgWWQY0wEsA7MAYgCUBRAZSoBUB9AYQHkA5eqgDXoG0ADAF1EoAA4B7WIXSEJxUSAAeiALQBmAIwCAdAHYATHoCcANnUAOUwBYLevQBoQATzUGDmzTuMWB603oWBuohpgC+YU5oWLgEJGA6JPiyAG7kAJLs6fTpAIIAMukAWlSCIkggktKy8ooqCBrW1jrq1vaaBkECVqaaAKxOrg2adhY6pgJtHkZWbeoRURg4+ESkicTJhGlkmdl5hSV8muXiUjJyChX1qpp6pjqavbfGBn161sYvji5qI5M6QXsfQMAhefjsCxA0WWcTWm221Do-GEiiq51qV0Q2jGI0+QWmrT6AlMgzcAk8LWsrWM5NMPjakOhsVWCXh5Bo6QA4uxGABVAAKZVRZxql1A9QMVOM+iammswVMNgC3yGqncHW8NJpfWMJnUr0ZS2Z8R0bLIHO5fMFx2F1QudUQkvU0ve1jlCqV9lJDWmfQegVaHwsWluhpiKxNZvyrE5mSFFTRoodCHcFj9-RMwPspgM5gs3rV2l01gE3V1bxeboMYZhLNNeFS5AAYqwKJzWEx+bkaDQAOqtgAi8dOdox4sdAj6YzsRJMk0+NmsBc0xj692MthCmnUdwstj6NeNcIbWwSAHcwAAjdTMeSkBsSABOOjwd7AJ+IUDIbHYTfSFGwRheyoAAhdRGGjWN2GHSoRXtTEEEeOwHgMHwvlzHd5W9dw1x0PprGBKwp1GatIihI0I2PRsdAva9b2Ie90CfHQwAAW2QQgABt0mIMQMDIAA1KgKHSJsAE1GCobBcnSfJJMKWMQNk7IxJgxN4PHRDTCCFC0KMDD3gMbCQTGfDCNMYjAlIxZw1hVkTzSGirxvN8H2fNJH0IAAzZwSCgKh2K4qhOMIKBCEvLiZGcMgIHkBISBSCQAGtWQouz62o2iXIY98mPcsBPJ8vyAo4zjgtC8LIvQZwEASiQ8GQUUyjUuCx2ULETGldRyTuewDKwn4U38PQdEmczLKCQ9KPszLnPoxjmI87zfM-EqgpCsKIpC6qyAKx9mLETjGq8p9WNNNK6zZJy6NcvKdCWorVsCsqNsq7aarqhqmuEFrRzFdrEM6loeuVfqjMGyVczwgjOgsiwSKm9Krqy+bcuYtjSoMLzkFvCByCEkTxJYfIZMA38mCkmS5IMJtcl+9F-vqW5-kVTx5UMcxDOw2x7jG2GJus8jbMuhzzzm27FoK5a-OYI7CFY9gvPQNbOKx5AYri9ZEpS87hcjUXruyhb8sKlaoFljiFaVlW1dq4hEq+i5mpRBNWsZrELEecYCL6W4Ocw8GhleWxofG+GrMRkXZpunK3PuqXHvNuWreV561d2x99ufQ7jtO3Xa316OjbRk3pc-C35cV1PMexu2Hcap2fpdkcGeTEYvZsPpfb6zmBqDiYxj5ojw8msimWmjLT0N1G48ICBOPZKh8ioZgmB-dgV-oVt6aTBC5Q1N0LBedRfd8SxsO6rxUKnARc3lGx5jHi7C6nziJDC4hzQYAVGGoWMaC4BQPkdAKA7w0gDEsbQ8Kggss8E+HQSSDXlH6EE7g8SeEnBZA8T89ZUVfu-Eg5p6C5AoJ2bsNAADSVAJKQTjM3WCf1kzOlePoNc+ozABjsEuQatwLL6D0F3N0jxnQjEji-Ryb8P6JHnuQWhPJezZAABJAVAjeDgG9V7b3oepNqTMqReHeDqTwPh3gjHzDwncuhVyLiPsgkI1gxF4IkQQ4g0iF5kHbDGZeEEYx0JOAw1uCF2bpjdNYXoa53CBG9LqAwOhgjGE8H0fUeh-CtEcTNfBUi57uNyAOASuR2DMCoIwLejAuw9n7BQIc2i3bJiaCwgI7dgy6kCOYoY2l1AtBCJ8Vc8oCKhhwQXJxCRJEkDceyLkPJMhASUWU8hVDVI1MYQhIwegvC2BLAI4EjxtLehGHw7S3QiQ0hBBs9Jk9nFZJkV-Zeq85kVMHIwbADBFGsGqf4nR7sUyGBdPhSUt9SzkgIns4IzQBGPHlPqI+wJwiDKPBky5YzsmL1uWQh5VSnkvLeUcD5tSEJaElOMCYJgOi2BBOoPZoS8IpPsLqJU25zlXVGa45FNzN73L7I8559BXlDgMLi5Zml9TyjwrqUsntDJym4UMfozoARWBCJYX2U5BbjyRgbZl4ydDSCgMQXsMhMD8mQLAWAKVop-iyDQZR5TKHUJ8VBMBujEAn38HE+UntyTOjeE0bC3Rmj+BzDqSwJZsE2SGQikZLitU6r1Qao1JqzVkBArkZgFDHVfM6CKuUvgUlUkMOfCGfqHg2F1B0OlaS4UTyZVG5F2rQqxqwPG01YBoo2oWYwdgHZGA0AFPyVsXB3m2kCZpV4wRvArleAI+GrwBgQ0lFfPQoI9xmOJJORlGqa0yPzjQPAj4wBgE-ha9IVqOXtrkemphY0AQfAmNod4hlEFBzdCNKkh9uiGFxKq5+wydCatrdCHde6D1kDbXaztTAe38j7aQqgg7XaCoBtfe4K47i4gIrqYM2FAi6DhgEMw1iBB6HXdRP9W69pPjIEek9oGaG+Ogks4dAMtyxMwdpWl8NyTYW0H6SwG5u7+G6HKYjmSkVkczhRmjHau2QegwOi9KzgSdISS8N4xEZ0XypC0P5NIT50iCI-MN8KLmRqkcy7AYAsASAgDQMAC8TzyDZXcm1lS4Mt13ppNowJRqewIvOUsZg9mKliV3Nm2l4aKmdMJxFrizMWcwFZmzdnRRJpTWmhj7mIH3vGJYFJ6o0wvD2V3Tp7RX0zFQgySt6qSNRr3egTyYAUh+RoMgTi6ANZrDqjrNVUcROuNq-Vxrn5mutbrvVBu8hnYCsY-UTzfo0zztsGW4wezJxeBLfUoIxh9T4SiyZsZ-XCANaay1tr5Hs5HXQCdR8Z1uviL231izA3jsjc+uN4gk2h0ZZm-0dMgRbj2MVKWWdQxDDNH6OgqcLxtK7d-TW3iGAm1nifBAFLqb5MeZPs0V4I8wmbe9GmTprNbhrhOcgmHf74foER8j1HaabTwem4gJoZhqX9G0B0nL0SoGKs9d1AIBFYWGarRurJlPqePhR2wbA-Jl5cEYJ4zk3iLRTPo1Nr7TPFTNBzKWDpsqRh7MJHhOkHRbhHzFQZoW4bjOw9F3xKnxrYBI4l4JYSolaMOvS+AmbMTvZNGBLmZTFLBp2F5lSeGSStBdE0OTqND0zb5Bce1+K9tkqpVwRGm3Yy49+QTx-UbjsJtNzV17xAa4-CjVTM6QI+EQjA8QL4Zot85TagD57C3t2f2auz5+XPhDYodZT1179Geu8J3jy4-Pb3mr07cyXhAXcfDeG6CEUs+oC1DCPmMFJW2Um30MVSGPUju9QF75-fvyftZp6t9Wo-Y+c8T9e99IQfB+WfbnwvsYNJgzdT8MENpWJV8ARyQ7BuojACID9Ksetot45TZ78P4k8tZU984jMb8s878e8H8U8C93sfp1Bi8nV58nhssCdyVeg+4sRmZ9BV13BupDA29D80DYCMD4CzsdAc5Ls84O8R9Y90CT9MD64n90cIE1xmg8QSxJgRgpwg8hg1xP8vhSw1lb5-BjAGDXFYBUA8A8A4BYAvJUBOJT9KAqAmxERlEU0ikewSlWAqFVc38CDtB-l5UT5fBiQkl8JvQUkxh+cNxg5ZgzBVDtUJAlYzxkA9104fw-wAJu1ewWA3lShPcCDfBeg8Jtxt9Og1kolBo-sdAmhF1vUdw6QLJ-DYBAj0BgjQjsYyBeQ6BGBFESEBxewSFikaY6Z4ivk7gNwAQYk1lFwpxH1S8BE4lEiSxtxTcOgiiSiyiwB05k00dWjkwbB+gWgcw9xgw4Z9R3CwkHgT5q9ehuhPZBdLcUCRdGCy4oA1ZcZyBz9ECh909rdR8mCzjsYLjJ9BC5iEI7BDAHg+k9xekIUNj1lWg-8PBtwIChcqtesYDTjzirNLjNZOsr8jjqtb8HjoS8YXjG5n8Z8Al1cEAaRtB9BPhpgQ1yCEATARoBF-BZVYZJh29h87ieCUSniYSM4s42CLsrsbs6TUDXFj9USwB0TC9n83jNJEjkN25txtIXgPB8cdRsjgRn1SwqQQRQ1DjhckSxlMAQiIBJj04qjikaBWAmx6AGjqBGBmihD6h2jeYkkeYBdZxvRJTNQtsSxVxu4LB-DNSJcdSKiCY3cajojcheQeULT69iRG8dlSC0wj5vQdw-QJgisPhQRQQQQDiuD6SpFPTtSQipiKiZi0t8Cvku5zBRUjAJhj4pxpVnV4ZoF-B8IttLBaz-DSAzwBwjstDvwOAIjAIBwqABJ0gikYieyQzcS3ReZPgqRxVhEudOl2Y1829Yz3TIC7tM9XFmzWzGt2zEQqB2ABxBy4iCzkwj5izYzF1ghsR-9EJkzvNgwUlm8NxCN-Dj8LiED4TkC1SISnyYSBScChSDyEIekvBNtVxnQfMSSpS4lQQUkpwu5PYpxHzeDnzWD2COS3zwToDPy0TH8MThyNwUl9AJVzBUI6RUIVt9QHg8QNxYF99-C91YAD0IAZZ5AvJCBrs3sVYXzB8ET3zoDaL6LGLiBmLWLRQVZvyPsGccT4ZNiqQtBiJvDOg9kpUAQVxehATgw10lzO8o0MYuJ04tydy9zhyp1pQgdJwScnC+jEIpR5VQR95kk3R-DtLVYfTXciZKZZIzTaZDK0w-RCNb5gQEk2grAQVPh8LCTArSxEkHK05czUthzzAWcSwbB9iPhkEDdQQliepPBgxPAiMNLuDkTTibYKirjXy0zuTITE4irkBRKi9bCvkrBdRNRAVMJjkVQsRttxgTc6Qky9wAh4KHiqqWSDp2TOCuTjieTeCqqarfy6rkxq8Roj57AtBLAuFKzEJKDF0JgaDCNOgGU8r0z9s4A+KnpSpnySrOLUKoD7sdBeLiAGKTquJnisLBTDK7hdBHg-YfA74CseFD5xga89NJTtIHF9ryrj9FEzxcglgOLL9Lrlz7jTiIaoasBpqcKVw4zcxggkkft3AYyWcFi9xejtJVl+rEbIbobzrYayrxqKqzYkalhUasTPlkw6Uxgdw7gQQFCmg1rnR7gCaCIehARcqwSrqVzaa-J6asAhrztc5rs4bNKCrE5JbMBUbhSAYG8UFNxvUJgSxpCmcEk8IQRtBaztxdr-CvILNYQoAmwnwYABxGp1ZKakDqb1TXELb0ArabbHw7aHbVa-yhUAxQqd9iQbBYZ3CQhsi-MQ0oK3hzbLbVhrbbawB7b0B1YkKRq5aXaIT3bPak6U7qrnqfzhznRNMrBicJDcwBEHS3QgDcjuhuqIrSbE5OQJB34F4DCnabjr8abj8W626wBT8-bZqEI1wVwHgOgBEpS1x3hKU1lvY5QjFPAdxcwm6zY+6oB27E907ZbOTbiwbeD17N689C6xLZ8CCCJAhRpdbBN6QgrfqiR9BbgZ0Fwj5aS96aaoBW6N6B7E9O6uK0LrrP7+7B6T7arxL39Ek4kUNrFcwQ6DckkWhVxm8ZK8MVDQaP6v6j6+84SLqs7oCgHv6QGsCp8foma8VNJ8JyRvA3g9w9ikkjkQUj4HggVDBvVDAjB-CCGsHP5t6ODM6xrXadAuGf7j7iHXj-aIF9M4lfY-V+NHgQViR9BLAOg74gQkkaLHtDtBtzY908ZiBZAWsKBmAKAYbnaBGISDsjty5dGD0DHOIjGKAh7wHz6iDiQQRNrCMyU9laHx00wP195bANG6stGZYbH9HCBDHjHpa2Sd75b8rDrgmrGdHIBbGIn7HjGnGz6vkwkKRctsbJ6y09lF1OlCMQtCT2G7gij61QmUnwnImTGqNrV5k7Vz01aZterRoBNeb-APA68UxyQr5nD+klVSUqndUam9G7GHHadhz-LmgmhMFUJsQElvGcwtidR3hBNpLhbVSAGxaY0JnUn6mZmyGEN6gkkkighaGLmj5b49kzAwVOgT5fZlQZKxniBDm6n0mTHJNwNu1e1+1YNZnJgwU6RuaQXtw+nbhtxOnyQKLVMVS8HrqDnrHampmonfnpMAWYMhxTnGd59PBeYYF8QTIggoX4yiU4W8xJhbFV6-IKAwAwpYB0ACp+RUBLwQo8AKEW1mAwm7HTGu7ESPzeCGWmWWXHw2WOXCAuWeW+W0nMnsS58eYDF80bB3g6QtBjINQiQJTJ6KxHg6XPxRXCBmXWX2XOXuXnBeW0W0mBX-7RaEbE5jXTWJXzXpXLXrXJn5XQHMSJHvcNQy1IU-HlVjIdI9QyWRnXg37u7BHj9nXxXJWLXZWbWWs7W4mDqJqHj42zWpWZWrW5WWtUbX9nHsmzBB4FiySPAdwLysb7grBVrCMttDWoBs3XXc2PWC3OI02kWxa43GWTWE23W83PWjnOJUa8Dh6KHG3stRzjF1W9aUx5QvAFDWZiR4Z9Rm3W3E33Xk2vXU3eGUKe3HWzYt2h2O2U2x2fXhzQl7h+ltIiR6GklfVuhpGQSRjtw-Bo2hX0KRX+2XXt3h3O3onkLRr37Y3f2xWc2k382L3Ga-WqztIAQ1xFQTA6QTBA4PYI62gwXLAbKOgv3uKEg91IPnxWUrVWBojAFsAaAnk3kChgWx0ekQsdwF62qfQ-LpHFQVUrAQ7FyRblziOB2Cpxkv59K-5j16AKBcgcgOBJJpJZJr2rnvAyCixBE-dlw6y4lWhJTJgPCYdBOXWRPcl8lClilSlnNBxZn3BdB0j67UI-s+mbhuolN0P+hcwj5g59O-3xWRO5EZkeUVEwJ15N4tF4PEJfAt8CRAUaQb1CtcIYFP3JwpQu4vOSOROkQf5xOAFhJgFhJr3AhpRekfBTKZgLKbhbFvBQggxZwPho90HqIDOfPWUFdvFWmwvT5itAhDBdxH3lwdNsi9wBEsFg53hUuhPnxxXWJYBsArNU3mBoxqiqOaPsA6P8hr3PgRp8Jgw2hZU4W+u+Fb6CJQCgg+r6up5GvhO6K7ripnpu3zHHILvnwrv7r-JnoFXmaR6sspRHgRDR7HO5RSwr7rP5T9QDQzuHvvPLvjrXvSpgOM7d6Y3zvIenvoeRKr22mmdsaUJc0aVcR-u1lpQzdLFn1uu+PdnRbHuWJnoBIWs543sXdCYJI3K1uMeEAdb-VTF6RoWLybhFRkMAxMadQb0yee3KfHKaeQoIB6e8yrOXhI7rFgw3hK6NPiz5sBmcItsIRweiPkeqfSoJe6fks9Ldy2AhzWepxF1xh4ZbhPNcwVxlwUlb3vK-GjyCO9nKfj92K-702roPfJq3v0ewuLJEP7OKzHfZhlxFeZQfBAQlePAxvDPPfbvvfRfdek-So4PJ2AZNc-R9Eu4RDtx4Y+vCNEHPgyn9lAntebq0--fYeU-7ude0v0+uIi2g-UMARGku5dOwkyuVw9xi0Nwy0zI8ME+fPm+u2D3QPEeIem-a+W-A+s-6hA1RCelt9bE1wNOKRfLtAUqb5Y6q-Kfd0wBGowBxdJdWBpdZdiksvJPpP0gOBDLdqkPHgTI6y3Rlw+fsifulqdRre3eKfdeR-E-mf1pyWFGA6QAcMvEMr2Fa6KqOdnxgLAeBFQo0UsKgkWp+VR+wnIASyxAEy9Wei6T4n4CfqEZGkdzQaGqBIHeBJQX1LcEeRBr8cf0h-CQKxEOgWZ6W3nR8PT3r5gckeaXV8CwIXiyAjWHAt7O93IYAxOEynAWiQPHLLZyBOyUQj9zpCrhdwWgTAc+H4GsChBLbEQclkn78MeBM-cbi+GYFaD2BYrTgaKDEFnNEAU6EaL0C2xfAEkIJSPiHADwrgFwdwCtAwIzyU9UAdFR8NaxP4o5qAxhWgKYWYDmEaOW8awsOU9jIQ0OFkW+MRX8CR9tWJgZdGGSnTqDq+z3cwQO0sEXAveODKmg32r5pdbqL3eNoUPkBo8xG2Fc3rIS-5INFQQQW4B-0apP1nCkoQipKByHCMO6JQsxoYMb7GCBh-BMbOI0X6IAtqYwXaskj5xV5I+wYahqZR3AJJb47gfoZgxEbYMB8pQkYeULGE7CiGAhbCnixxITBuoo0fCGslaAzgAs8gulN5klCZhQ+3QbYcAy3riYZafDBHt+1GGGdxhojM4S9XN5pFEGjvGGIkQw7DA0wzQHUNslMRud1KPg63JT0sbaNIhJjbgdP0BE+dMRMsDJgvxLbzFgKeEVoL5UBzZUCw2uJfDOnviTh7AOQwkeXCib6D-hhHI4YZ1ZHmxiR9QsEUHx8zeAqQYLMEKuDkGqgNucSGdLlheBl80GaI33rrzfgNROI2ImgPWkoy7BqMzTCSDfzy6s9uoW2IAnYB6S6gw8bHRoJ0hvI3pVwnjJ0DkNVEtYNRWozFhBmxZyZWeqEOXkkihz2ItAhgAsB8CUwggaQ5ISGKdyVEGxKezo9UcY01G6oQMeoqTB6KgyAtcWYXH0fcFyIxdnCHxAsCIQBBr574bwQHHV2jENcVRY2eMRQETGfw8BYXY0TaPfTmj3gnOcgZ0BYzUD8MNXR0Qf2rFqiHG9Y7UZaiaY9h20gZYMkaJDSdN5RYZbDl3EQEEQoG1AuwDAkMj0DyeAnQcfUxHF5kwBEAqAUaNBAtizRq-S0RpzZrmi6QfY0EtuMYG69gi5wT8F7WmYAISEaKW1O7j8TTCEAxohdMsQDxvBnQ2EaUNsjNH+BCaodHIXkM-AAcR2XzO7ocMp5wSoACEzttYPxZ2CWghNSkcqC2wFhws2RTZn9zQ7AhYJ0PDCRezh6xNU+aXNCdRL3aXsBRRdVnsoMbwhBPYrwq5jzynR4QrA+kHcPcK-QoTdej3czJZmsy2ZcoFwRzF+JcxxV5sV9W9N1DJRWjHgAxV0tpyLKnxFRD43weJOR6ST4s0kpLHJI-GkJT0dqA0aAnYnmBc+fgT4CuA+BTplwUKSkHsUcEvAz4LI4yXFgSwyT7MDY2KuxN-x4RZCIFXpnSHclQxF0xIR4EujeA7N6Jxg3kdM1xEAjuRBIzRkkwcZYScSgQGwN4F8AR4PgJkAsO2IBCT1tQkOEsKJLxHZThO6U9kT8JiZ-CfeMYoyYk20b5SSRWTOarekpB78eh+mYMXKltG9iHR941KYZzQnI1DUQ7RCfy0ylcjUJ0PBaUxNHYFS588Q9MCFmDC0MCe-3ZQhFM6BOTQQIhf-juIYkbSlgW0pCRyM6lVjbp13T8JtKWmYT+pirBIpIQBD6R5RmyKkMuASlQM2cRUxdEEC3E9srsn9e3CaidwQB0u25E3rEWgGiEIxklAINCk0CID8O49FcPAm0CkoUpZQ2GRIHhmO5kcInLcgpMs7m8SwcpO4DIw+o64+ulvXop+3CweBoZZM22hTLP7apoeZ1IYYKy5HkzKZiMoWW9PNhflvpH3TSBPViRygyyFvdGjzwJAQV50E6GlKmT5ne0BZDuKWWhMQptSQOBgxqRLMFkmy5ZrE0+j9PqqLFccVgAMEGhnqdjJwXUW+PuHyz849Zhwq2UbOpnNkQB4Rf8IBAs5VJXqcwnNCfDvh3weekhLwAvj0zPBsMIvfWXDOtnIBtGIA1aXs0DkIzqZsAHOX5DP47S7CxorpF3C2QiICUkfKcNIx1AWQ2gWoJoDDkLlUyJc2qUufBKDnO4npMM-mZLOLm9z0J-ciABXLaIrD5RuIScJgknAO85efOZUr0QSSIsyhpGBeLDjVFNozUI4xptZJ-E2FSR+KfiahBCCoR4h9gSYNzGQHggPA3hEOqTMOFbzI0u8h3PvK1GNi-xgJewf4DtLmBtAhEiGK+n+lFY3guII+P4VrRxi95LaEce6P+bpicWxdN0LoCPiPAek-mYnFhl8D-UuESEcFrzNfmbpt5AGI-sBiRAxEdyewDgAUD5DpAj5xdUEGDjQRqTQCaRbCCWhaBrJ6ku1TfBvLElpc4xw4rUXqSATGMqA0nYpGYVYC8hOAjAECEGVTH2pfxp8oVG3n9AYZhi86cwERN9j-SA0+iHmNAoHFpcxAn85NsEJAgYB2AFMhaaky+iQBQBpSI8fuT-G2BFGhfathPXWEFgOESjX2FjQ+qmIIgZEYgDCXgAVAuCf4jQMvLaBrIux9dcJMuPeD8JwxboccuVnORJBRYcSpZko1Wz2cHBAQRAX4B8oNUngwIJyS-LxGeKmgTM2BLSCLBlc-8L6FOa8BiQ2AYcKMCWI+D-ESl5mn6eBGfBraXTNQHwZKWYG6gUSq+fS2OHdFfCLK-Igyo7uPXvg9wA43MQHmZH5gjwGpWUhZcbD15cQeIduNZQgzZiV1-YXMCGK4SvphwEY8y8WIsslgDVno5UTaFVCGADS946y65aDF7iwjcwdIUOPsueWVip4xykuKcqco4wYSlyzpICq2V3Kg4aYZdtCLhiQqDJ1uGFXHCfLJwq4VVJFRspuVgwwJaYcFcPBxU9t8Vd0RyvREEqsRIApKlFbcpJJaAAgjyiFRHBeUxwTlyKS5YVzFRtBW5tBEFSME6SBjFeuabqFYFUJ-jIYI0ZTJOjUxLiIYFIX2EgwpIbgNwWvKFdASFUaLEMnmcdCpinRksoWt5aGGfFw758dsVfN+XWl1T6pG0Vi35Q7OTCrJlZNlcEFcKzD3M5enNIsOhyNowKt0FCoDP9AVmIZ8QVBbNLYFYbyMIYPCxLmEnlAmJJgEa7eWdiVVqVqU2OekCkrWruBiyFkZhBq3BBCLGpmqWLFJMSyyS2osambDhDlKNJ9EkpNjgvViQcII24BIkBnNIVSJeRw2dAJ4rL4oCsE+Ee9iAplR75cJNICLLhW1AwKxcE8zxWsmTmUVOgzc2CvjjuBX16paRCKhwydUMlTip+P8TCj9D2BEis4Q6a8HxyMyTAwxAXEGB6XnqpE6hTQtoV0L6EXEgy2+IvgJSm172rQBdvSHwp3AqQRIZJMSHGJBFsyasP8V0BzGTBR0sDfxTwjeDFhMwHxQFK8ArG4r96jJBFXjFQ2JlBie4HLClU9juEPAcpJVAvjlD+APSWpb0sgD-F9QXQowAKpuFXAxkBi8ZTcEbTTAfCv1YyNcm2TACobw8DwMuuYEjyHSVsJfINJfFXRaA-AzbC4n+NLTSgjuoyyuiEGiRj10MKSQkOFgfKSaHsNsgSixXYjCVnoemnav9REJ4YLea1RJLn22yij8OLpKKjXC40mrLSFLPwN13vRl5JR7VL2O+trJlr7OzbElSFvrwB4bhimIXs4NhEfscMKjTHPhByr+za1NWI6jLJVi6aUtpJSFPhXALh54pXm71PoFXmJSP8Q64rYrTprk0sAlG4qZ0E2wECZwsIljvPWDbEh1hcdD2gnS9o+1U6v87KvPX6SQsSwF5RTJqCMDrCTElfQ1ddV7onDANlWslPcF2pC9UOG3KFm6EJxLpC+aCQxJwz20fxr1MlYtEYGUphifuClRmR4OPVC8G8QTJ7Ki2YkONPFgJf6jtW6QRiF25dSEf4zXDJTrpCtMZCi2SaA7jG162kFfQ+LYhZC0W8LkkUrboLhErGzdsjwA7ntmJnilcMWDQ64d-kngLjA-WZi1Tg0fhcxeNyVXod-q2YcTewg1k-4tiqEMMfaJ8BFasplPY1X8qnZvB+EHnV9Y7yXnTg45nsJdW0JyGTdpus3TiGjprqTB55z6X2D6k7HbhCct40AsTTMXbampKPMrc5oO0PL+gUwF4HejcLyDoKSjHvpCkVTQ5WdhncXrTyl4ZYW1peEPO2oVAZCxV-3NVvwnVZA5YGoib3WPzn6a7KtarT-AVyJCTpWYDvW+EpQcG2ItNgQHIdgNP4brKtBAhEQoVmUJIBEGkz-qOWQ5nwyU8OwyXwNMGCD8hzLGoTGvEGWkQJ2RKvEVg20R7kBde8wNJX3iHK1puvfwQVCCEssIAqG1BE6WebuASK8g1odkXELbZf8vgCfe7yMloTqhbFG3RLoBjykXQ7wDWoYG6CwibgMGuJBuHqS9DFqnwwhvtpP3nMa815UURWUwTF9P8D7BkYOv0mzScpPUokRQD-Fcdl2ZbekDQX1zkCcwyKyer1W0i9Bd9AAkRTWNdG6p81jMiyFzrg1XyCwEG4se8Cmmbim96I3cd83rG4GcMyU+9r-h8DlKuorc7NPDAtEKr49wnZ8doLfGo7KtmaegwQaYN8TmgUZS+YCHcadBKJMsh6XY2409Dr0i6GGD2KtHwwt8YqnLDmC67oGbpaU-yQ2qCkB7u9MwpKtkUlCQ42hbwDTl3BlH2I-+nQXUH5LANGsBD7+2wewmII5gMMvNRzjrQG4zAjdvgB-bIZe4fTc2y0tJqhvBydVEDy1e3QuxuDBArEfuH2FOnj5V9O5iMidbEgvrNLWZxIRAdMArwzrrOW6sHhbuyPUzxdXqz7oPFg3zYd9TzPGWOk8CEzhoeJSg1dGqPdybZFGyrU7qvq0FZgv-SUK0bBTezTcKmIXh3OHmCzXweMGzPo0GWzh-qyhMJCEAESLzDdhKU8vKFXQpUUkcxg2SPO7khyS9HhtniMHGB0Nu4Ks4IA3NiQhHF0bOQjBOhONZyJ5Pc3OZcbqOKykuUDHUFth1DudgZ8g5SS8fJAyMCeehn9L0aRmWKi5EuZrGkHn2DGa5pB2lB9UDRJHJCvyIXkBKrA5r35LWeBc4FoOVbCQgFbSODg6ToZuFHwTpkYBUwA81kOQpE82hg42K7FDipYE4uCFZ8mIYgNQGW1GiO9aURtbGU4AXhKwmcE5R+vpDQ4TonAl4CmUxFYiimQQ4p4aOh1pAZFPIUATAOOoQA+wbOSs5Uz9TPBzxutiEEEE4EwBgBQoxppnOYhmwKmklHMfTTfrFOEZdTYITSYuQiBAA */
|
|
31
32
|
id: 'authMachine',
|
|
32
33
|
predictableActionArguments: true,
|
|
33
34
|
tsTypes: {},
|
|
@@ -73,6 +74,7 @@ exports.authMachine = (0, xstate_1.createMachine)({
|
|
|
73
74
|
googleOtpCode: () => undefined,
|
|
74
75
|
googleUser: () => undefined,
|
|
75
76
|
registerUser: () => undefined,
|
|
77
|
+
socialProviderRegisterUser: () => undefined,
|
|
76
78
|
salt: () => undefined,
|
|
77
79
|
sessionId: () => undefined,
|
|
78
80
|
}),
|
|
@@ -130,7 +132,7 @@ exports.authMachine = (0, xstate_1.createMachine)({
|
|
|
130
132
|
states: {
|
|
131
133
|
idle: {
|
|
132
134
|
states: {
|
|
133
|
-
|
|
135
|
+
signWithPasskey: {
|
|
134
136
|
on: {
|
|
135
137
|
FINISH_PASSKEY_LOGIN: '#authMachine.active.login.verifyingRegisterPublicKeyCredential',
|
|
136
138
|
BACK: '#authMachine.active.login.idle.error',
|
|
@@ -142,23 +144,22 @@ exports.authMachine = (0, xstate_1.createMachine)({
|
|
|
142
144
|
},
|
|
143
145
|
},
|
|
144
146
|
},
|
|
145
|
-
|
|
147
|
+
authScreen: {
|
|
146
148
|
on: {
|
|
147
149
|
FINISH_PASSKEY_LOGIN: '#authMachine.active.login.verifyingRegisterPublicKeyCredential',
|
|
148
|
-
BACK: '#authMachine.active.login.idle.error',
|
|
149
150
|
PASSKEY_NOT_SUPPORTED: {
|
|
150
151
|
target: '#authMachine.active.login.idle.authScreen',
|
|
151
152
|
actions: (0, xstate_1.assign)({
|
|
152
153
|
error: (_, event) => event.payload.error,
|
|
153
154
|
}),
|
|
154
155
|
},
|
|
155
|
-
},
|
|
156
|
-
},
|
|
157
|
-
authScreen: {
|
|
158
|
-
on: {
|
|
159
156
|
SET_CONDITIONAL_UI_PASSKEY: {
|
|
160
157
|
target: '#authMachine.active.login.idle.localPasskeySign',
|
|
161
158
|
},
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
error: {
|
|
162
|
+
on: {
|
|
162
163
|
FINISH_PASSKEY_LOGIN: '#authMachine.active.login.verifyingRegisterPublicKeyCredential',
|
|
163
164
|
PASSKEY_NOT_SUPPORTED: {
|
|
164
165
|
target: '#authMachine.active.login.idle.authScreen',
|
|
@@ -168,15 +169,16 @@ exports.authMachine = (0, xstate_1.createMachine)({
|
|
|
168
169
|
},
|
|
169
170
|
},
|
|
170
171
|
},
|
|
171
|
-
|
|
172
|
+
localPasskeySign: {
|
|
172
173
|
on: {
|
|
173
|
-
FINISH_PASSKEY_LOGIN: '#authMachine.active.login.verifyingRegisterPublicKeyCredential',
|
|
174
174
|
PASSKEY_NOT_SUPPORTED: {
|
|
175
175
|
target: '#authMachine.active.login.idle.authScreen',
|
|
176
176
|
actions: (0, xstate_1.assign)({
|
|
177
177
|
error: (_, event) => event.payload.error,
|
|
178
178
|
}),
|
|
179
179
|
},
|
|
180
|
+
BACK: '#authMachine.active.login.idle.error',
|
|
181
|
+
FINISH_PASSKEY_LOGIN: '#authMachine.active.login.verifyingRegisterPublicKeyCredential',
|
|
180
182
|
},
|
|
181
183
|
},
|
|
182
184
|
},
|
|
@@ -193,6 +195,7 @@ exports.authMachine = (0, xstate_1.createMachine)({
|
|
|
193
195
|
googleOtpCode: () => undefined,
|
|
194
196
|
googleUser: () => undefined,
|
|
195
197
|
registerUser: () => undefined,
|
|
198
|
+
socialProviderRegisterUser: () => undefined,
|
|
196
199
|
sessionId: () => undefined,
|
|
197
200
|
CCRPublicKey: () => undefined,
|
|
198
201
|
RCRPublicKey: () => undefined,
|
|
@@ -218,6 +221,7 @@ exports.authMachine = (0, xstate_1.createMachine)({
|
|
|
218
221
|
actions: (0, xstate_1.assign)({
|
|
219
222
|
googleUser: () => undefined,
|
|
220
223
|
registerUser: () => undefined,
|
|
224
|
+
socialProviderRegisterUser: () => undefined,
|
|
221
225
|
error: () => undefined,
|
|
222
226
|
}),
|
|
223
227
|
},
|
|
@@ -251,6 +255,7 @@ exports.authMachine = (0, xstate_1.createMachine)({
|
|
|
251
255
|
actions: (0, xstate_1.assign)({
|
|
252
256
|
googleUser: () => undefined,
|
|
253
257
|
registerUser: () => undefined,
|
|
258
|
+
socialProviderRegisterUser: () => undefined,
|
|
254
259
|
error: () => undefined,
|
|
255
260
|
}),
|
|
256
261
|
cond: 'isPasskeyEnabled',
|
|
@@ -304,6 +309,7 @@ exports.authMachine = (0, xstate_1.createMachine)({
|
|
|
304
309
|
entry: (0, xstate_1.assign)({
|
|
305
310
|
googleUser: () => undefined,
|
|
306
311
|
registerUser: () => undefined,
|
|
312
|
+
socialProviderRegisterUser: () => undefined,
|
|
307
313
|
}),
|
|
308
314
|
on: {
|
|
309
315
|
REFRESH_ACCESS_TOKEN: {
|
|
@@ -491,7 +497,7 @@ exports.authMachine = (0, xstate_1.createMachine)({
|
|
|
491
497
|
{
|
|
492
498
|
target: 'idle',
|
|
493
499
|
actions: (0, xstate_1.assign)({
|
|
494
|
-
|
|
500
|
+
socialProviderRegisterUser: (_, event) => { var _a; return (_a = event.data) === null || _a === void 0 ? void 0 : _a.socialProviderRegisterUser; },
|
|
495
501
|
}),
|
|
496
502
|
cond: 'isNewUser',
|
|
497
503
|
},
|
|
@@ -515,6 +521,7 @@ exports.authMachine = (0, xstate_1.createMachine)({
|
|
|
515
521
|
entry: (0, xstate_1.assign)({
|
|
516
522
|
googleUser: () => undefined,
|
|
517
523
|
registerUser: () => undefined,
|
|
524
|
+
socialProviderRegisterUser: () => undefined,
|
|
518
525
|
}),
|
|
519
526
|
},
|
|
520
527
|
retrievingCredentialRCR: {
|
|
@@ -628,6 +635,7 @@ exports.authMachine = (0, xstate_1.createMachine)({
|
|
|
628
635
|
googleOtpCode: () => undefined,
|
|
629
636
|
googleUser: () => undefined,
|
|
630
637
|
registerUser: () => undefined,
|
|
638
|
+
socialProviderRegisterUser: () => undefined,
|
|
631
639
|
}),
|
|
632
640
|
},
|
|
633
641
|
ADVANCE_TO_PASSWORD: 'createPassword',
|
|
@@ -719,11 +727,12 @@ exports.authMachine = (0, xstate_1.createMachine)({
|
|
|
719
727
|
actions: (0, xstate_1.assign)({
|
|
720
728
|
googleUser: () => undefined,
|
|
721
729
|
registerUser: () => undefined,
|
|
730
|
+
socialProviderRegisterUser: () => undefined,
|
|
722
731
|
error: () => undefined,
|
|
723
732
|
}),
|
|
724
733
|
},
|
|
725
734
|
BACK: {
|
|
726
|
-
target: '
|
|
735
|
+
target: '#authMachine.active.login',
|
|
727
736
|
actions: (0, xstate_1.assign)({
|
|
728
737
|
error: () => undefined,
|
|
729
738
|
}),
|
|
@@ -750,6 +759,7 @@ exports.authMachine = (0, xstate_1.createMachine)({
|
|
|
750
759
|
entry: (0, xstate_1.assign)({
|
|
751
760
|
googleUser: () => undefined,
|
|
752
761
|
registerUser: () => undefined,
|
|
762
|
+
socialProviderRegisterUser: () => undefined,
|
|
753
763
|
}),
|
|
754
764
|
on: {
|
|
755
765
|
REFRESH_ACCESS_TOKEN: {
|
|
@@ -801,6 +811,7 @@ exports.authMachine = (0, xstate_1.createMachine)({
|
|
|
801
811
|
entry: (0, xstate_1.assign)({
|
|
802
812
|
googleUser: () => undefined,
|
|
803
813
|
registerUser: () => undefined,
|
|
814
|
+
socialProviderRegisterUser: () => undefined,
|
|
804
815
|
}),
|
|
805
816
|
},
|
|
806
817
|
retrievingCCR: {
|
|
@@ -847,6 +858,7 @@ exports.authMachine = (0, xstate_1.createMachine)({
|
|
|
847
858
|
on: {
|
|
848
859
|
FINISH_PASSKEY_AUTH: '#authMachine.active.register.sendingAuthPublicCredential',
|
|
849
860
|
BACK_TO_IDLE: '#authMachine.active.register.idle',
|
|
861
|
+
USER_CREATE_ACCOUNT_BUT_NOT_LOGIN: 'passkeyCreatedButNotAuthenticated',
|
|
850
862
|
},
|
|
851
863
|
},
|
|
852
864
|
waitingForRCR: {
|
|
@@ -881,6 +893,7 @@ exports.authMachine = (0, xstate_1.createMachine)({
|
|
|
881
893
|
actions: (0, xstate_1.assign)({
|
|
882
894
|
googleUser: () => undefined,
|
|
883
895
|
registerUser: () => undefined,
|
|
896
|
+
socialProviderRegisterUser: () => undefined,
|
|
884
897
|
error: () => undefined,
|
|
885
898
|
}),
|
|
886
899
|
},
|
|
@@ -922,6 +935,11 @@ exports.authMachine = (0, xstate_1.createMachine)({
|
|
|
922
935
|
},
|
|
923
936
|
},
|
|
924
937
|
},
|
|
938
|
+
passkeyCreatedButNotAuthenticated: {
|
|
939
|
+
on: {
|
|
940
|
+
BACK_TO_IDLE: 'idle',
|
|
941
|
+
},
|
|
942
|
+
},
|
|
925
943
|
},
|
|
926
944
|
initial: 'idle',
|
|
927
945
|
entry: (0, xstate_1.assign)({
|
|
@@ -1210,6 +1228,7 @@ const authService = (services, context) => {
|
|
|
1210
1228
|
error: () => undefined,
|
|
1211
1229
|
active2fa: () => undefined,
|
|
1212
1230
|
registerUser: () => undefined,
|
|
1231
|
+
socialProviderRegisterUser: () => undefined,
|
|
1213
1232
|
googleOtpCode: () => undefined,
|
|
1214
1233
|
googleUser: () => undefined,
|
|
1215
1234
|
sessionUser: () => undefined,
|
|
@@ -1223,6 +1242,7 @@ const authService = (services, context) => {
|
|
|
1223
1242
|
.onTransition((state) => {
|
|
1224
1243
|
const shouldUpdate = state.changed &&
|
|
1225
1244
|
(state.matches('inactive') ||
|
|
1245
|
+
state.matches('active.login.idle') ||
|
|
1226
1246
|
state.matches('active.register.userCreated') ||
|
|
1227
1247
|
state.matches('active.login.successfulLogin') ||
|
|
1228
1248
|
state.matches('active.web3Connector.emailConfirmed') ||
|