@goboost/scanner-typescript 1.2.1 → 1.2.2

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dto-extractor.js","sourceRoot":"","sources":["../src/dto-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Guard extractor - finds @UseGuards references and classifies them
3
+ * Resolves guard class definitions, classifies as jwt/basic/custom
4
+ */
5
+ import { Project } from 'ts-morph';
6
+ interface GuardSpec {
7
+ name: string;
8
+ sourceFile: string;
9
+ type: 'jwt' | 'basic' | 'custom';
10
+ canGenerate: boolean;
11
+ failureReason: string | null;
12
+ }
13
+ export declare function extractGuards(project: Project): Record<string, GuardSpec>;
14
+ export {};
15
+ //# sourceMappingURL=guard-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard-extractor.d.ts","sourceRoot":"","sources":["../src/guard-extractor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,OAAO,EAA8D,MAAM,UAAU,CAAC;AAE/F,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACjC,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAuBzE"}
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractGuards = extractGuards;
4
+ function extractGuards(project) {
5
+ const guards = {};
6
+ // First pass: find all guard class definitions
7
+ for (const sourceFile of project.getSourceFiles()) {
8
+ for (const classDecl of sourceFile.getClasses()) {
9
+ if (isGuardClass(classDecl)) {
10
+ const guard = extractGuard(classDecl, sourceFile);
11
+ if (guard && !guards[guard.name]) {
12
+ guards[guard.name] = guard;
13
+ }
14
+ }
15
+ }
16
+ }
17
+ // Second pass: find @UseGuards usages and ensure all guards are tracked
18
+ for (const sourceFile of project.getSourceFiles()) {
19
+ for (const classDecl of sourceFile.getClasses()) {
20
+ collectGuardsFromClass(classDecl, guards, sourceFile);
21
+ }
22
+ }
23
+ return guards;
24
+ }
25
+ function isGuardClass(classDecl) {
26
+ // Check if class implements CanActivate
27
+ const implementsList = classDecl.getImplements();
28
+ for (const impl of implementsList) {
29
+ const text = impl.getText();
30
+ if (text.includes('CanActivate')) {
31
+ return true;
32
+ }
33
+ }
34
+ // Check extends AuthGuard
35
+ const ext = classDecl.getExtends();
36
+ if (ext) {
37
+ const extText = ext.getText();
38
+ if (extText.includes('AuthGuard')) {
39
+ return true;
40
+ }
41
+ }
42
+ // Check for @Injectable decorator with guard-like patterns
43
+ const hasInjectable = classDecl.getDecorators().some(d => d.getName() === 'Injectable');
44
+ const className = classDecl.getName() || '';
45
+ const isGuardByName = className.includes('Guard') || className.includes('AuthGuard');
46
+ return hasInjectable && isGuardByName;
47
+ }
48
+ function extractGuard(classDecl, sourceFile) {
49
+ const name = classDecl.getName();
50
+ if (!name)
51
+ return null;
52
+ const guardType = classifyGuard(classDecl);
53
+ const canGenerate = guardType !== 'custom';
54
+ const failureReason = canGenerate ? null : 'Custom guard logic cannot be automatically translated';
55
+ return {
56
+ name,
57
+ sourceFile: getRelativePath(sourceFile.getFilePath()),
58
+ type: guardType,
59
+ canGenerate,
60
+ failureReason,
61
+ };
62
+ }
63
+ function classifyGuard(classDecl) {
64
+ const name = classDecl.getName() || '';
65
+ const ext = classDecl.getExtends();
66
+ // Check by name patterns
67
+ const nameLower = name.toLowerCase();
68
+ if (nameLower.includes('jwt') || nameLower.includes('jwtauth')) {
69
+ return 'jwt';
70
+ }
71
+ if (nameLower.includes('basic') || nameLower.includes('basicauth')) {
72
+ return 'basic';
73
+ }
74
+ // Check by extends
75
+ if (ext) {
76
+ const extText = ext.getText();
77
+ if (extText.includes('JwtAuthGuard') || extText.includes("AuthGuard('jwt')")) {
78
+ return 'jwt';
79
+ }
80
+ if (extText.includes("AuthGuard('basic')") || extText.includes('BasicAuthGuard')) {
81
+ return 'basic';
82
+ }
83
+ }
84
+ // Check source file content for patterns
85
+ const sourceFile = classDecl.getSourceFile();
86
+ const text = sourceFile.getFullText();
87
+ // JWT patterns
88
+ if (text.includes('JwtService') ||
89
+ text.includes('jwt.verify') ||
90
+ text.includes('extractToken') ||
91
+ text.includes('JwtPayload') ||
92
+ text.includes('fromAuthHeaderAsBearerToken')) {
93
+ return 'jwt';
94
+ }
95
+ // Basic auth patterns
96
+ if (text.includes('BasicAuth') ||
97
+ text.includes('btoa') ||
98
+ text.includes('atob') ||
99
+ text.includes('fromAuthHeaderAsBasicAuth')) {
100
+ return 'basic';
101
+ }
102
+ return 'custom';
103
+ }
104
+ function collectGuardsFromClass(classDecl, guards, sourceFile) {
105
+ // Check class-level @UseGuards
106
+ const classGuards = classDecl.getDecorators().find(d => d.getName() === 'UseGuards');
107
+ if (classGuards) {
108
+ parseGuardsFromDecorator(classGuards, guards, sourceFile);
109
+ }
110
+ // Check method-level @UseGuards
111
+ for (const method of classDecl.getMethods()) {
112
+ const methodGuards = method.getDecorators().find(d => d.getName() === 'UseGuards');
113
+ if (methodGuards) {
114
+ parseGuardsFromDecorator(methodGuards, guards, sourceFile);
115
+ }
116
+ }
117
+ }
118
+ function parseGuardsFromDecorator(decorator, guards, sourceFile) {
119
+ const args = decorator.getArguments();
120
+ for (const arg of args) {
121
+ let guardName = arg.getText().replace('()', '').trim();
122
+ // Handle new expressions or complex references
123
+ if (guardName.startsWith('new ')) {
124
+ guardName = guardName.replace('new ', '').replace(/\(.*\)/, '');
125
+ }
126
+ if (!guards[guardName]) {
127
+ // Try to classify the guard based on name
128
+ const guardType = classifyGuardByName(guardName);
129
+ const canGenerate = guardType !== 'custom';
130
+ guards[guardName] = {
131
+ name: guardName,
132
+ sourceFile: getRelativePath(sourceFile.getFilePath()),
133
+ type: guardType,
134
+ canGenerate,
135
+ failureReason: canGenerate ? null : 'Custom guard logic cannot be automatically translated',
136
+ };
137
+ }
138
+ }
139
+ }
140
+ function classifyGuardByName(name) {
141
+ const nameLower = name.toLowerCase();
142
+ if (nameLower.includes('jwt') || nameLower.includes('bearer')) {
143
+ return 'jwt';
144
+ }
145
+ if (nameLower.includes('basic')) {
146
+ return 'basic';
147
+ }
148
+ return 'custom';
149
+ }
150
+ function getRelativePath(filePath) {
151
+ const parts = filePath.split(/[\\/]/);
152
+ const srcIndex = parts.indexOf('src');
153
+ if (srcIndex !== -1) {
154
+ return parts.slice(srcIndex).join('/');
155
+ }
156
+ return filePath;
157
+ }
158
+ //# sourceMappingURL=guard-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard-extractor.js","sourceRoot":"","sources":["../src/guard-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { DBRoot } from './prisma-schema-extractor';
2
+ interface ScanOptions {
3
+ projectPath: string;
4
+ tsConfigPath?: string;
5
+ prismaSchemaPath?: string;
6
+ }
7
+ /** API IR root (goboost.api.json v2.0.0) — matches internal/ir/api_types.go */
8
+ interface APIRoot {
9
+ version: string;
10
+ sourceFramework: string;
11
+ projectRoot: string;
12
+ scannedAt: string;
13
+ controllers: any[];
14
+ dtos: Record<string, any>;
15
+ guards: Record<string, any>;
16
+ meta?: {
17
+ generatorVersion?: string;
18
+ scanDuration?: string;
19
+ };
20
+ }
21
+ interface ScanResult {
22
+ apiIR: APIRoot;
23
+ dbIR: DBRoot;
24
+ }
25
+ export declare function scan(options: ScanOptions): Promise<ScanResult>;
26
+ export { scan as scanProject };
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAuB,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAMxE,UAAU,WAAW;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,+EAA+E;AAC/E,UAAU,OAAO;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,GAAG,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D;AAED,UAAU,UAAU;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAyFpE;AAuJD,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.scan = scan;
4
+ exports.scanProject = scan;
5
+ /**
6
+ * Scanner entrypoint — orchestrates all extractors and outputs normalized IR JSON.
7
+ *
8
+ * Produces DUAL IR per the goBoost Decoupled Universal Extractor architecture:
9
+ * - goboost.api.json (API IR v2.0.0) — controllers, DTOs, guards
10
+ * - goboost.db.json (DB IR v1.0.0) — tables, columns, relations, enums (from Prisma)
11
+ *
12
+ * Constitution v1.2.0 compliance:
13
+ * - Principle V: Prisma as single source of truth for DB schema
14
+ * - Principle VIII: The Framework Rosetta Stone — JSII-compliant IR
15
+ */
16
+ const ts_morph_1 = require("ts-morph");
17
+ const controller_extractor_1 = require("./controller-extractor");
18
+ const dto_extractor_1 = require("./dto-extractor");
19
+ const prisma_schema_extractor_1 = require("./prisma-schema-extractor");
20
+ const guard_extractor_1 = require("./guard-extractor");
21
+ const unsupported_detector_1 = require("./unsupported-detector");
22
+ const API_IR_VERSION = '2.0.0';
23
+ async function scan(options) {
24
+ const { projectPath, tsConfigPath } = options;
25
+ const startTime = Date.now();
26
+ // Initialize ts-morph project for API extraction
27
+ const project = new ts_morph_1.Project({
28
+ tsConfigFilePath: tsConfigPath || `${projectPath}/tsconfig.json`,
29
+ skipAddingFilesFromTsConfig: false,
30
+ });
31
+ // ---- API IR extraction ----
32
+ // Extract controllers
33
+ const controllers = (0, controller_extractor_1.extractControllers)(project);
34
+ // Detect circular service dependencies
35
+ const circularDeps = detectCircularDependencies(project, controllers);
36
+ if (circularDeps.length > 0) {
37
+ console.error('Warning: Circular service dependencies detected:');
38
+ for (const dep of circularDeps) {
39
+ console.error(` - ${dep}`);
40
+ }
41
+ }
42
+ // Collect and extract DTOs
43
+ const referencedDTOs = (0, dto_extractor_1.collectReferencedDTOs)(controllers);
44
+ const dtos = (0, dto_extractor_1.extractDTOs)(project, referencedDTOs);
45
+ (0, dto_extractor_1.markSharedDTOs)(dtos, controllers);
46
+ // Extract guards
47
+ const guards = (0, guard_extractor_1.extractGuards)(project);
48
+ // Detect unsupported features per route
49
+ for (const controller of controllers) {
50
+ const controllerUnsupported = [];
51
+ const controllerCyclicDeps = circularDeps.filter(d => d.startsWith(controller.name));
52
+ for (const dep of controllerCyclicDeps) {
53
+ if (!controllerUnsupported.includes('circular-dependency')) {
54
+ controllerUnsupported.push('circular-dependency');
55
+ }
56
+ }
57
+ for (const route of controller.routes) {
58
+ const unsupported = (0, unsupported_detector_1.detectUnsupported)(project, {
59
+ handlerName: route.handlerName,
60
+ unsupportedFeatures: [],
61
+ });
62
+ route.unsupportedFeatures = unsupported;
63
+ route.canGenerate = (0, unsupported_detector_1.canGenerate)(unsupported);
64
+ for (const feature of unsupported) {
65
+ if (!controllerUnsupported.includes(feature)) {
66
+ controllerUnsupported.push(feature);
67
+ }
68
+ }
69
+ }
70
+ controller.unsupportedFeatures = controllerUnsupported;
71
+ }
72
+ const scanDuration = `${Date.now() - startTime}ms`;
73
+ // Build API IR
74
+ const apiIR = {
75
+ version: API_IR_VERSION,
76
+ sourceFramework: 'nestjs',
77
+ projectRoot: projectPath,
78
+ scannedAt: new Date().toISOString(),
79
+ controllers,
80
+ dtos,
81
+ guards,
82
+ meta: {
83
+ generatorVersion: '1.1.0',
84
+ scanDuration,
85
+ },
86
+ };
87
+ // Normalize API IR for determinism
88
+ normalizeAPIIR(apiIR);
89
+ // ---- DB IR extraction (Prisma DMMF) ----
90
+ const dbIR = await (0, prisma_schema_extractor_1.extractPrismaSchema)({
91
+ projectPath,
92
+ schemaPath: options.prismaSchemaPath,
93
+ });
94
+ return { apiIR, dbIR };
95
+ }
96
+ /**
97
+ * Detect circular dependencies between services in controllers
98
+ */
99
+ function detectCircularDependencies(project, controllers) {
100
+ const circularDeps = [];
101
+ const visited = new Set();
102
+ const dependencyGraph = new Map();
103
+ for (const controller of controllers) {
104
+ if (controller.dependencies && controller.dependencies.length > 0) {
105
+ const deps = new Set();
106
+ for (const dep of controller.dependencies) {
107
+ const serviceName = extractServiceName(dep);
108
+ if (serviceName) {
109
+ deps.add(serviceName);
110
+ }
111
+ }
112
+ dependencyGraph.set(controller.name, deps);
113
+ }
114
+ }
115
+ function dfs(node, path) {
116
+ if (visited.has(node)) {
117
+ const cycleStart = path.indexOf(node);
118
+ if (cycleStart !== -1) {
119
+ const cycle = [...path.slice(cycleStart), node].join(' -> ');
120
+ circularDeps.push(`${node}: ${cycle}`);
121
+ }
122
+ return true;
123
+ }
124
+ visited.add(node);
125
+ path.push(node);
126
+ const deps = dependencyGraph.get(node);
127
+ if (deps) {
128
+ for (const dep of deps) {
129
+ if (path.includes(dep) || dfs(dep, [...path])) {
130
+ // Continue to find all cycles
131
+ }
132
+ }
133
+ }
134
+ path.pop();
135
+ return false;
136
+ }
137
+ for (const controller of controllers) {
138
+ visited.clear();
139
+ dfs(controller.name, []);
140
+ }
141
+ return circularDeps;
142
+ }
143
+ function extractServiceName(typeText) {
144
+ const match = typeText.match(/(\w+Service)/);
145
+ return match ? match[1] : null;
146
+ }
147
+ /**
148
+ * Normalize API IR for deterministic output
149
+ */
150
+ function normalizeAPIIR(ir) {
151
+ for (const controller of ir.controllers) {
152
+ controller.routes.sort((a, b) => {
153
+ const methodCompare = a.httpMethod.localeCompare(b.httpMethod);
154
+ if (methodCompare !== 0)
155
+ return methodCompare;
156
+ return a.path.localeCompare(b.path);
157
+ });
158
+ }
159
+ ir.dtos = sortObjectKeys(ir.dtos);
160
+ ir.guards = sortObjectKeys(ir.guards);
161
+ }
162
+ function sortObjectKeys(obj) {
163
+ const sorted = {};
164
+ const keys = Object.keys(obj).sort();
165
+ for (const key of keys) {
166
+ sorted[key] = obj[key];
167
+ }
168
+ return sorted;
169
+ }
170
+ /**
171
+ * CLI entrypoint — outputs dual IR JSON to stdout or files
172
+ */
173
+ if (require.main === module) {
174
+ const args = process.argv.slice(2);
175
+ let projectPath = process.cwd();
176
+ let tsConfigPath;
177
+ let prismaSchemaPath;
178
+ let outputApiPath;
179
+ let outputDbPath;
180
+ for (let i = 0; i < args.length; i++) {
181
+ if (args[i] === '--project' || args[i] === '-p') {
182
+ projectPath = args[++i];
183
+ }
184
+ else if (args[i] === '--tsconfig' || args[i] === '-t') {
185
+ tsConfigPath = args[++i];
186
+ }
187
+ else if (args[i] === '--prisma-schema') {
188
+ prismaSchemaPath = args[++i];
189
+ }
190
+ else if (args[i] === '--output-api') {
191
+ outputApiPath = args[++i];
192
+ }
193
+ else if (args[i] === '--output-db') {
194
+ outputDbPath = args[++i];
195
+ }
196
+ else if (!args[i].startsWith('-') && i === 0) {
197
+ projectPath = args[i];
198
+ }
199
+ }
200
+ scan({ projectPath, tsConfigPath, prismaSchemaPath })
201
+ .then(({ apiIR, dbIR }) => {
202
+ const apiJson = JSON.stringify(apiIR, null, 2);
203
+ const dbJson = JSON.stringify(dbIR, null, 2);
204
+ if (outputApiPath) {
205
+ const fs = require('fs');
206
+ const path = require('path');
207
+ fs.mkdirSync(path.dirname(outputApiPath), { recursive: true });
208
+ fs.writeFileSync(outputApiPath, apiJson, 'utf-8');
209
+ console.error(`API IR written to: ${outputApiPath}`);
210
+ }
211
+ if (outputDbPath) {
212
+ const fs = require('fs');
213
+ const path = require('path');
214
+ fs.mkdirSync(path.dirname(outputDbPath), { recursive: true });
215
+ fs.writeFileSync(outputDbPath, dbJson, 'utf-8');
216
+ console.error(`DB IR written to: ${outputDbPath}`);
217
+ }
218
+ // If no output paths specified, write both to stdout as a combined object
219
+ if (!outputApiPath && !outputDbPath) {
220
+ console.log(JSON.stringify({ api: apiIR, db: dbIR }, null, 2));
221
+ }
222
+ })
223
+ .catch((err) => {
224
+ console.error(JSON.stringify({
225
+ error: true,
226
+ message: err.message,
227
+ stack: err.stack,
228
+ }));
229
+ process.exit(1);
230
+ });
231
+ }
232
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ export interface DBRoot {
2
+ version: string;
3
+ source: string;
4
+ databaseType: string;
5
+ schemaName: string;
6
+ extractedAt: string;
7
+ tables: TableSpec[];
8
+ enums: EnumSpec[];
9
+ }
10
+ export interface TableSpec {
11
+ name: string;
12
+ schema: string;
13
+ columns: ColumnSpec[];
14
+ relations: RelationSpec[];
15
+ }
16
+ export interface ColumnSpec {
17
+ name: string;
18
+ goType: string;
19
+ dbType: string;
20
+ isPrimary: boolean;
21
+ isAutoIncrement: boolean;
22
+ isNullable: boolean;
23
+ isUnique: boolean;
24
+ defaultValue?: string;
25
+ gormTag?: string;
26
+ }
27
+ export interface RelationSpec {
28
+ name: string;
29
+ type: string;
30
+ fromTable: string;
31
+ toTable: string;
32
+ fromColumns?: string[];
33
+ }
34
+ export interface EnumSpec {
35
+ name: string;
36
+ values: string[];
37
+ }
38
+ export interface ExtractOptions {
39
+ projectPath: string;
40
+ schemaPath?: string;
41
+ }
42
+ /**
43
+ * Extract DB IR from a Prisma schema file using @prisma/internals getDMMF().
44
+ * Output format matches internal/ir/db_types.go (DBRoot).
45
+ */
46
+ export declare function extractPrismaSchema(options: ExtractOptions): Promise<DBRoot>;
47
+ //# sourceMappingURL=prisma-schema-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prisma-schema-extractor.d.ts","sourceRoot":"","sources":["../src/prisma-schema-extractor.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAwCD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAwBD;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAyElF"}