@solidstarters/solid-core 1.2.10 → 1.2.11
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/controllers/google-authentication.controller.d.ts +1 -0
- package/dist/controllers/google-authentication.controller.d.ts.map +1 -1
- package/dist/controllers/google-authentication.controller.js +12 -1
- package/dist/controllers/google-authentication.controller.js.map +1 -1
- package/dist/helpers/google-oauth.helper.d.ts +4 -0
- package/dist/helpers/google-oauth.helper.d.ts.map +1 -0
- package/dist/helpers/google-oauth.helper.js +9 -0
- package/dist/helpers/google-oauth.helper.js.map +1 -0
- package/dist/passport-strategies/google-oauth.strategy.d.ts +3 -4
- package/dist/passport-strategies/google-oauth.strategy.d.ts.map +1 -1
- package/dist/passport-strategies/google-oauth.strategy.js +19 -14
- package/dist/passport-strategies/google-oauth.strategy.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/controllers/google-authentication.controller.ts +14 -2
- package/src/helpers/google-oauth.helper.ts +9 -0
- package/src/passport-strategies/google-oauth.strategy.ts +18 -9
|
@@ -9,6 +9,7 @@ export declare class GoogleAuthenticationController {
|
|
|
9
9
|
private readonly authService;
|
|
10
10
|
constructor(iamConfiguration: ConfigType<typeof iamConfig>, userService: UserService, authService: AuthenticationService);
|
|
11
11
|
connect(): Promise<void>;
|
|
12
|
+
private validateConfiguration;
|
|
12
13
|
googleAuthCallback(req: Request, res: Response): void;
|
|
13
14
|
dummyGoogleAuthRedirect(accessCode: any): Promise<import("..").User>;
|
|
14
15
|
googleAuth(accessCode: any): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-authentication.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/google-authentication.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAK3E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"google-authentication.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/google-authentication.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAK3E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAIjD,qBAGa,8BAA8B;IAEZ,OAAO,CAAC,gBAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAFG,gBAAgB,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,EAC5D,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,qBAAqB;IAMjD,OAAO;IAIb,OAAO,CAAC,qBAAqB;IAS7B,kBAAkB,CAAQ,GAAG,EAAE,OAAO,EAAS,GAAG,EAAE,QAAQ;IA0BtD,uBAAuB,CAAsB,UAAU,KAAA;IAmBvD,UAAU,CAAsB,UAAU,KAAA;;;;CAInD"}
|
|
@@ -23,23 +23,34 @@ const google_oauth_strategy_1 = require("../passport-strategies/google-oauth.str
|
|
|
23
23
|
const user_service_1 = require("../services/user.service");
|
|
24
24
|
const public_decorator_1 = require("../decorators/public.decorator");
|
|
25
25
|
const iam_config_1 = require("../config/iam.config");
|
|
26
|
+
const google_oauth_helper_1 = require("../helpers/google-oauth.helper");
|
|
26
27
|
let GoogleAuthenticationController = class GoogleAuthenticationController {
|
|
27
28
|
constructor(iamConfiguration, userService, authService) {
|
|
28
29
|
this.iamConfiguration = iamConfiguration;
|
|
29
30
|
this.userService = userService;
|
|
30
31
|
this.authService = authService;
|
|
31
32
|
}
|
|
32
|
-
async connect() {
|
|
33
|
+
async connect() {
|
|
34
|
+
this.validateConfiguration();
|
|
35
|
+
}
|
|
36
|
+
validateConfiguration() {
|
|
37
|
+
if (!(0, google_oauth_helper_1.isGoogleOAuthConfigured)(this.iamConfiguration)) {
|
|
38
|
+
throw new common_1.InternalServerErrorException('Google OAuth is not configured');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
33
41
|
googleAuthCallback(req, res) {
|
|
42
|
+
this.validateConfiguration();
|
|
34
43
|
const user = req.user;
|
|
35
44
|
return res.redirect(`${this.iamConfiguration.googleOauth.redirectURL}?accessCode=${user['accessCode']}`);
|
|
36
45
|
}
|
|
37
46
|
async dummyGoogleAuthRedirect(accessCode) {
|
|
47
|
+
this.validateConfiguration();
|
|
38
48
|
const user = await this.userService.findOneByAccessCode(accessCode);
|
|
39
49
|
delete user['password'];
|
|
40
50
|
return user;
|
|
41
51
|
}
|
|
42
52
|
async googleAuth(accessCode) {
|
|
53
|
+
this.validateConfiguration();
|
|
43
54
|
return this.authService.signInUsingGoogle(accessCode);
|
|
44
55
|
}
|
|
45
56
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-authentication.controller.js","sourceRoot":"","sources":["../../src/controllers/google-authentication.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"google-authentication.controller.js","sourceRoot":"","sources":["../../src/controllers/google-authentication.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAmH;AACnH,+EAA2E;AAC3E,iEAAoD;AACpD,4DAAmD;AACnD,6CAAoD;AACpD,wFAAgF;AAGhF,2DAAuD;AACvD,qEAAwD;AACxD,qDAAiD;AACjD,wEAA0E;AAMnE,IAAM,8BAA8B,GAApC,MAAM,8BAA8B;IACvC,YACmC,gBAA8C,EAC5D,WAAwB,EACxB,WAAkC;QAFpB,qBAAgB,GAAhB,gBAAgB,CAA8B;QAC5D,gBAAW,GAAX,WAAW,CAAa;QACxB,gBAAW,GAAX,WAAW,CAAuB;IACnD,CAAC;IAKC,AAAN,KAAK,CAAC,OAAO;QACT,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAEO,qBAAqB;QACzB,IAAI,CAAC,IAAA,6CAAuB,EAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,qCAA4B,CAAC,gCAAgC,CAAC,CAAC;QAC7E,CAAC;IACL,CAAC;IAKD,kBAAkB,CAAQ,GAAY,EAAS,GAAa;QACxD,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QAYtB,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,WAAW,eAAe,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC7G,CAAC;IAWK,AAAN,KAAK,CAAC,uBAAuB,CAAsB,UAAU;QACzD,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAEpE,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC;QAExB,OAAO,IAAI,CAAC;IAChB,CAAC;IAYK,AAAN,KAAK,CAAC,UAAU,CAAsB,UAAU;QAC5C,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC1D,CAAC;CACJ,CAAA;AAxEY,wEAA8B;AAUjC;IAHL,IAAA,yBAAM,GAAE;IACR,IAAA,kBAAS,EAAC,wCAAgB,CAAC;IAC3B,IAAA,YAAG,EAAC,SAAS,CAAC;;;;;6DAGd;AAWD;IAHC,IAAA,yBAAM,GAAE;IACR,IAAA,YAAG,EAAC,kBAAkB,CAAC;IACvB,IAAA,kBAAS,EAAC,wCAAgB,CAAC;;IACR,WAAA,IAAA,YAAG,GAAE,CAAA;IAAgB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;wEAe7C;AAWK;IAFL,IAAA,yBAAM,GAAE;IACR,IAAA,YAAG,EAAC,gBAAgB,CAAC;;IACS,WAAA,IAAA,cAAK,EAAC,YAAY,CAAC,CAAA;;;;6EAOjD;AAYK;IAHL,IAAA,yBAAM,GAAE;IACR,IAAA,YAAG,EAAC,cAAc,CAAC;IACnB,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;IAC7C,WAAA,IAAA,cAAK,EAAC,YAAY,CAAC,CAAA;;;;gEAGpC;yCAvEQ,8BAA8B;IAH1C,IAAA,qBAAI,EAAC,yBAAQ,CAAC,IAAI,CAAC;IACnB,IAAA,mBAAU,EAAC,YAAY,CAAC;IACxB,IAAA,iBAAO,EAAC,KAAK,CAAC;IAGN,WAAA,IAAA,eAAM,EAAC,sBAAS,CAAC,GAAG,CAAC,CAAA;6CACQ,0BAAW;QACX,8CAAqB;GAJ9C,8BAA8B,CAwE1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-oauth.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/google-oauth.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,wBAAgB,uBAAuB,CAAC,gBAAgB,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,GAAG,OAAO,CAK7F"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isGoogleOAuthConfigured = isGoogleOAuthConfigured;
|
|
4
|
+
function isGoogleOAuthConfigured(iamConfiguration) {
|
|
5
|
+
const googleOauthConfig = iamConfiguration.googleOauth;
|
|
6
|
+
return !!googleOauthConfig.clientID
|
|
7
|
+
&& !!googleOauthConfig.clientSecret && !!googleOauthConfig.callbackURL && !!googleOauthConfig.redirectURL;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=google-oauth.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-oauth.helper.js","sourceRoot":"","sources":["../../src/helpers/google-oauth.helper.ts"],"names":[],"mappings":";;AAGA,0DAKG;AALH,SAAgB,uBAAuB,CAAC,gBAA8C;IAClF,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,WAAW,CAAC;IAEvD,OAAO,CAAC,CAAC,iBAAiB,CAAC,QAAQ;WAChC,CAAC,CAAC,iBAAiB,CAAC,YAAY,IAAI,CAAC,CAAC,iBAAiB,CAAC,WAAW,IAAI,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC;AAC5G,CAAC"}
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import { ConfigType } from '@nestjs/config';
|
|
2
2
|
import { Strategy, VerifyCallback } from 'passport-google-oauth2';
|
|
3
|
-
import { AuthenticationService } from '../services/authentication.service';
|
|
4
|
-
import { UserService } from '../services/user.service';
|
|
5
3
|
import { iamConfig } from '../config/iam.config';
|
|
4
|
+
import { UserService } from '../services/user.service';
|
|
6
5
|
declare const GoogleOauthGuard_base: import("@nestjs/passport").Type<import("@nestjs/passport").IAuthGuard>;
|
|
7
6
|
export declare class GoogleOauthGuard extends GoogleOauthGuard_base {
|
|
8
7
|
}
|
|
9
8
|
declare const GoogleOauthStrategy_base: new (...args: any[]) => Strategy;
|
|
10
9
|
export declare class GoogleOauthStrategy extends GoogleOauthStrategy_base {
|
|
11
10
|
private iamConfiguration;
|
|
12
|
-
private readonly authService;
|
|
13
11
|
private readonly userService;
|
|
14
|
-
|
|
12
|
+
private readonly logger;
|
|
13
|
+
constructor(iamConfiguration: ConfigType<typeof iamConfig>, userService: UserService);
|
|
15
14
|
validate(_accessToken: string, _refreshToken: string, profile: any, done: VerifyCallback): Promise<any>;
|
|
16
15
|
}
|
|
17
16
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-oauth.strategy.d.ts","sourceRoot":"","sources":["../../src/passport-strategies/google-oauth.strategy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"google-oauth.strategy.d.ts","sourceRoot":"","sources":["../../src/passport-strategies/google-oauth.strategy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGlE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;;AAMvD,qBACa,gBAAiB,SAAQ,qBAAmB;CAAI;;AAG7D,qBACa,mBAAoB,SAAQ,wBAAoC;IAGlD,OAAO,CAAC,gBAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW;IAH9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;gBAE9B,gBAAgB,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,EAC5D,WAAW,EAAE,WAAW;IAgBrC,QAAQ,CACZ,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,GAAG,CAAC;CAuBhB"}
|
|
@@ -11,33 +11,39 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
|
+
var GoogleOauthStrategy_1;
|
|
14
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
16
|
exports.GoogleOauthStrategy = exports.GoogleOauthGuard = void 0;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
16
18
|
const passport_1 = require("@nestjs/passport");
|
|
17
19
|
const passport_google_oauth2_1 = require("passport-google-oauth2");
|
|
18
|
-
const
|
|
19
|
-
const passport_2 = require("@nestjs/passport");
|
|
20
|
+
const google_oauth_helper_1 = require("../helpers/google-oauth.helper");
|
|
20
21
|
const uuid_1 = require("uuid");
|
|
21
|
-
const authentication_service_1 = require("../services/authentication.service");
|
|
22
|
-
const user_service_1 = require("../services/user.service");
|
|
23
22
|
const iam_config_1 = require("../config/iam.config");
|
|
24
|
-
|
|
23
|
+
const user_service_1 = require("../services/user.service");
|
|
24
|
+
const DUMMY_CLIENT_ID = 'DUMMY_CLIENT_ID';
|
|
25
|
+
const DUMMY_CLIENT_SECRET = 'DUMMY_CLIENT_SECRET';
|
|
26
|
+
const DUMMY_CALLBACK_URL = 'DUMMY_CALLBACK_URL';
|
|
27
|
+
let GoogleOauthGuard = class GoogleOauthGuard extends (0, passport_1.AuthGuard)('google') {
|
|
25
28
|
};
|
|
26
29
|
exports.GoogleOauthGuard = GoogleOauthGuard;
|
|
27
30
|
exports.GoogleOauthGuard = GoogleOauthGuard = __decorate([
|
|
28
31
|
(0, common_1.Injectable)()
|
|
29
32
|
], GoogleOauthGuard);
|
|
30
|
-
let GoogleOauthStrategy = class GoogleOauthStrategy extends (0, passport_1.PassportStrategy)(passport_google_oauth2_1.Strategy, 'google') {
|
|
31
|
-
constructor(iamConfiguration,
|
|
33
|
+
let GoogleOauthStrategy = GoogleOauthStrategy_1 = class GoogleOauthStrategy extends (0, passport_1.PassportStrategy)(passport_google_oauth2_1.Strategy, 'google') {
|
|
34
|
+
constructor(iamConfiguration, userService) {
|
|
32
35
|
super({
|
|
33
|
-
clientID: iamConfiguration.googleOauth.clientID,
|
|
34
|
-
clientSecret: iamConfiguration.googleOauth.clientSecret,
|
|
35
|
-
callbackURL: iamConfiguration.googleOauth.callbackURL,
|
|
36
|
+
clientID: iamConfiguration.googleOauth.clientID ?? DUMMY_CLIENT_ID,
|
|
37
|
+
clientSecret: iamConfiguration.googleOauth.clientSecret ?? DUMMY_CLIENT_SECRET,
|
|
38
|
+
callbackURL: iamConfiguration.googleOauth.callbackURL ?? DUMMY_CALLBACK_URL,
|
|
36
39
|
scope: ['profile', 'email'],
|
|
37
40
|
});
|
|
38
41
|
this.iamConfiguration = iamConfiguration;
|
|
39
|
-
this.authService = authService;
|
|
40
42
|
this.userService = userService;
|
|
43
|
+
this.logger = new common_1.Logger(GoogleOauthStrategy_1.name);
|
|
44
|
+
if (!(0, google_oauth_helper_1.isGoogleOAuthConfigured)(iamConfiguration)) {
|
|
45
|
+
this.logger.debug('Google OAuth strategy is not configured');
|
|
46
|
+
}
|
|
41
47
|
}
|
|
42
48
|
async validate(_accessToken, _refreshToken, profile, done) {
|
|
43
49
|
const { id, name, emails, photos } = profile;
|
|
@@ -55,10 +61,9 @@ let GoogleOauthStrategy = class GoogleOauthStrategy extends (0, passport_1.Passp
|
|
|
55
61
|
}
|
|
56
62
|
};
|
|
57
63
|
exports.GoogleOauthStrategy = GoogleOauthStrategy;
|
|
58
|
-
exports.GoogleOauthStrategy = GoogleOauthStrategy = __decorate([
|
|
64
|
+
exports.GoogleOauthStrategy = GoogleOauthStrategy = GoogleOauthStrategy_1 = __decorate([
|
|
59
65
|
(0, common_1.Injectable)(),
|
|
60
66
|
__param(0, (0, common_1.Inject)(iam_config_1.iamConfig.KEY)),
|
|
61
|
-
__metadata("design:paramtypes", [void 0,
|
|
62
|
-
user_service_1.UserService])
|
|
67
|
+
__metadata("design:paramtypes", [void 0, user_service_1.UserService])
|
|
63
68
|
], GoogleOauthStrategy);
|
|
64
69
|
//# sourceMappingURL=google-oauth.strategy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-oauth.strategy.js","sourceRoot":"","sources":["../../src/passport-strategies/google-oauth.strategy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"google-oauth.strategy.js","sourceRoot":"","sources":["../../src/passport-strategies/google-oauth.strategy.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA4D;AAE5D,+CAA+D;AAC/D,mEAAkE;AAClE,wEAA0E;AAC1E,+BAAkC;AAClC,qDAAiD;AACjD,2DAAuD;AAEvD,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAC1C,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAClD,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAGzC,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,IAAA,oBAAS,EAAC,QAAQ,CAAC;CAAI,CAAA;AAAhD,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;GACA,gBAAgB,CAAgC;AAItD,IAAM,mBAAmB,2BAAzB,MAAM,mBAAoB,SAAQ,IAAA,2BAAgB,EAAC,iCAAQ,EAAE,QAAQ,CAAC;IAE3E,YACyB,gBAAsD,EAC5D,WAAwB;QAIzC,KAAK,CAAC;YACJ,QAAQ,EAAE,gBAAgB,CAAC,WAAW,CAAC,QAAQ,IAAI,eAAe;YAClE,YAAY,EAAE,gBAAgB,CAAC,WAAW,CAAC,YAAY,IAAI,mBAAmB;YAC9E,WAAW,EAAE,gBAAgB,CAAC,WAAW,CAAC,WAAW,IAAI,kBAAkB;YAC3E,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;SAC5B,CAAC,CAAC;QAV4B,qBAAgB,GAAhB,gBAAgB,CAA8B;QAC5D,gBAAW,GAAX,WAAW,CAAa;QAH1B,WAAM,GAAG,IAAI,eAAM,CAAC,qBAAmB,CAAC,IAAI,CAAC,CAAC;QAc7D,IAAI,CAAC,IAAA,6CAAuB,EAAC,gBAAgB,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,YAAoB,EACpB,aAAqB,EACrB,OAAY,EACZ,IAAoB;QAEpB,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAG7C,MAAM,eAAe,GAAW,IAAA,SAAI,GAAE,CAAC;QAEvC,MAAM,IAAI,GAAG;YACX,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK;YACtB,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;YAC5C,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK;YACxB,UAAU,EAAE,eAAe;SAC5B,CAAC;QAKF,MAAM,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5G,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACnB,CAAC;CAEF,CAAA;AAhDY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;IAIR,WAAA,IAAA,eAAM,EAAC,sBAAS,CAAC,GAAG,CAAC,CAAA;6CACQ,0BAAW;GAJhC,mBAAmB,CAgD/B"}
|