@visualprd/mcp-server 1.1.0

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.
Files changed (58) hide show
  1. package/README.md +396 -0
  2. package/dist/cli.d.ts +9 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +27 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/index.d.ts +20 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +243 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/intelligence/context-optimizer.d.ts +93 -0
  11. package/dist/intelligence/context-optimizer.d.ts.map +1 -0
  12. package/dist/intelligence/context-optimizer.js +481 -0
  13. package/dist/intelligence/context-optimizer.js.map +1 -0
  14. package/dist/intelligence/error-analyzer.d.ts +49 -0
  15. package/dist/intelligence/error-analyzer.d.ts.map +1 -0
  16. package/dist/intelligence/error-analyzer.js +765 -0
  17. package/dist/intelligence/error-analyzer.js.map +1 -0
  18. package/dist/intelligence/gap-filler.d.ts +56 -0
  19. package/dist/intelligence/gap-filler.d.ts.map +1 -0
  20. package/dist/intelligence/gap-filler.js +410 -0
  21. package/dist/intelligence/gap-filler.js.map +1 -0
  22. package/dist/intelligence/guidance-generator.d.ts +43 -0
  23. package/dist/intelligence/guidance-generator.d.ts.map +1 -0
  24. package/dist/intelligence/guidance-generator.js +314 -0
  25. package/dist/intelligence/guidance-generator.js.map +1 -0
  26. package/dist/intelligence/index.d.ts +132 -0
  27. package/dist/intelligence/index.d.ts.map +1 -0
  28. package/dist/intelligence/index.js +683 -0
  29. package/dist/intelligence/index.js.map +1 -0
  30. package/dist/server-http.d.ts +9 -0
  31. package/dist/server-http.d.ts.map +1 -0
  32. package/dist/server-http.js +141 -0
  33. package/dist/server-http.js.map +1 -0
  34. package/dist/services/api-key-service.d.ts +68 -0
  35. package/dist/services/api-key-service.d.ts.map +1 -0
  36. package/dist/services/api-key-service.js +298 -0
  37. package/dist/services/api-key-service.js.map +1 -0
  38. package/dist/services/llm-client.d.ts +66 -0
  39. package/dist/services/llm-client.d.ts.map +1 -0
  40. package/dist/services/llm-client.js +141 -0
  41. package/dist/services/llm-client.js.map +1 -0
  42. package/dist/services/model-registry.d.ts +135 -0
  43. package/dist/services/model-registry.d.ts.map +1 -0
  44. package/dist/services/model-registry.js +276 -0
  45. package/dist/services/model-registry.js.map +1 -0
  46. package/dist/services/visualprd-client.d.ts +191 -0
  47. package/dist/services/visualprd-client.d.ts.map +1 -0
  48. package/dist/services/visualprd-client.js +805 -0
  49. package/dist/services/visualprd-client.js.map +1 -0
  50. package/dist/tools/index.d.ts +803 -0
  51. package/dist/tools/index.d.ts.map +1 -0
  52. package/dist/tools/index.js +570 -0
  53. package/dist/tools/index.js.map +1 -0
  54. package/dist/types/index.d.ts +497 -0
  55. package/dist/types/index.d.ts.map +1 -0
  56. package/dist/types/index.js +8 -0
  57. package/dist/types/index.js.map +1 -0
  58. package/package.json +48 -0
@@ -0,0 +1,481 @@
1
+ "use strict";
2
+ /**
3
+ * Context Optimizer
4
+ *
5
+ * Intelligently decides what context to provide to the AI agent
6
+ * based on the current task. Goal: Minimize tokens while maximizing usefulness.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ContextOptimizer = void 0;
10
+ class ContextOptimizer {
11
+ MAX_CONTEXT_TOKENS = 20000;
12
+ AVERAGE_CHARS_PER_TOKEN = 4;
13
+ /**
14
+ * Optimize context for a specific build prompt
15
+ */
16
+ async optimizeContext(prompt, projectData) {
17
+ // Determine rules based on prompt category and content
18
+ const rules = this.determineContextRules(prompt);
19
+ // Gather relevant entities
20
+ let context = {
21
+ pages: [],
22
+ schemas: [],
23
+ endpoints: [],
24
+ techStack: [],
25
+ estimatedTokens: 0,
26
+ };
27
+ // 1. Always include directly referenced entities
28
+ context = await this.includeReferencedEntities(prompt, projectData, context);
29
+ // 2. Add design system for UI-related prompts
30
+ if (rules.includeDesignSystem && this.isUIPrompt(prompt)) {
31
+ context.designSystem = projectData.designSystem;
32
+ }
33
+ // 3. Add related schemas for database prompts
34
+ if (rules.includeFullSchemas && this.isDatabasePrompt(prompt)) {
35
+ context = this.includeRelatedSchemas(prompt, projectData, context);
36
+ }
37
+ // 4. Add endpoints for integration prompts
38
+ if (rules.includeFullEndpoints && this.isIntegrationPrompt(prompt)) {
39
+ context = this.includeRelatedEndpoints(prompt, projectData, context);
40
+ }
41
+ // 5. Add tech stack for setup/configuration prompts
42
+ if (rules.includeTechStack && this.isSetupPrompt(prompt)) {
43
+ context = this.includeRelevantTechStack(prompt, projectData, context);
44
+ }
45
+ // 6. Add completed dependencies for context
46
+ if (rules.includeDependencies && prompt.dependsOn?.length) {
47
+ context.completedDependencies = this.getCompletedDependencies(prompt, projectData.buildPrompts);
48
+ }
49
+ // 7. Compress if context is too large
50
+ context = this.compressIfNeeded(context, rules);
51
+ // 8. Calculate estimated tokens
52
+ context.estimatedTokens = this.estimateTokens(context);
53
+ return context;
54
+ }
55
+ /**
56
+ * Determine context rules based on prompt characteristics
57
+ */
58
+ determineContextRules(prompt) {
59
+ const category = prompt.category;
60
+ const title = prompt.title.toLowerCase();
61
+ const instruction = prompt.instruction?.toLowerCase() || '';
62
+ // Default rules
63
+ const rules = {
64
+ includeDesignSystem: false,
65
+ includeFullSchemas: false,
66
+ includeFullEndpoints: false,
67
+ includeTechStack: false,
68
+ includeDependencies: true,
69
+ maxEntitiesPerType: 10,
70
+ compressLargeEntities: true,
71
+ };
72
+ // UI/Pages prompts need design system
73
+ if (category === 'pages' ||
74
+ title.includes('page') ||
75
+ title.includes('ui') ||
76
+ title.includes('component') ||
77
+ title.includes('form') ||
78
+ title.includes('layout')) {
79
+ rules.includeDesignSystem = true;
80
+ }
81
+ // Database prompts need full schemas
82
+ if (category === 'database' ||
83
+ title.includes('schema') ||
84
+ title.includes('database') ||
85
+ title.includes('model') ||
86
+ title.includes('migration')) {
87
+ rules.includeFullSchemas = true;
88
+ }
89
+ // Integration prompts need endpoints
90
+ if (category === 'integration' ||
91
+ title.includes('api') ||
92
+ title.includes('endpoint') ||
93
+ title.includes('integration') ||
94
+ title.includes('fetch') ||
95
+ title.includes('service')) {
96
+ rules.includeFullEndpoints = true;
97
+ }
98
+ // Setup prompts need tech stack
99
+ if (category === 'scaffold' ||
100
+ title.includes('setup') ||
101
+ title.includes('config') ||
102
+ title.includes('install') ||
103
+ title.includes('initialize') ||
104
+ instruction.includes('firebase') ||
105
+ instruction.includes('database') ||
106
+ instruction.includes('authentication')) {
107
+ rules.includeTechStack = true;
108
+ }
109
+ return rules;
110
+ }
111
+ /**
112
+ * Include directly referenced entities from prompt
113
+ */
114
+ async includeReferencedEntities(prompt, projectData, context) {
115
+ const refs = prompt.relatedDocuments || {};
116
+ // Resolve page references
117
+ if (refs.pages?.length) {
118
+ context.pages = refs.pages
119
+ .map((ref) => this.findPage(ref, projectData.pages))
120
+ .filter(Boolean);
121
+ }
122
+ // Resolve schema references
123
+ if (refs.schemas?.length) {
124
+ context.schemas = refs.schemas
125
+ .map((ref) => this.findSchema(ref, projectData.schemas))
126
+ .filter(Boolean);
127
+ }
128
+ // Resolve endpoint references
129
+ if (refs.endpoints?.length) {
130
+ context.endpoints = refs.endpoints
131
+ .map((ref) => this.findEndpoint(ref, projectData.endpoints))
132
+ .filter(Boolean);
133
+ }
134
+ // Resolve tech stack references
135
+ if (refs.techStack?.length) {
136
+ // Handle "tech-stack" meaning all items
137
+ if (refs.techStack.some((ref) => this.normalize(ref) === 'techstack')) {
138
+ context.techStack = [...projectData.techStack];
139
+ }
140
+ else {
141
+ context.techStack = refs.techStack
142
+ .map((ref) => this.findTechStack(ref, projectData.techStack))
143
+ .filter(Boolean);
144
+ }
145
+ }
146
+ return context;
147
+ }
148
+ /**
149
+ * Include related schemas based on relationships
150
+ */
151
+ includeRelatedSchemas(prompt, projectData, context) {
152
+ const relatedSchemas = new Set(context.schemas.map((s) => s.id));
153
+ // Find schemas related to current schemas via relationships
154
+ for (const schema of context.schemas) {
155
+ if (schema.relationships) {
156
+ for (const rel of schema.relationships) {
157
+ const relatedSchema = projectData.schemas.find((s) => this.normalize(s.collectionName) === this.normalize(rel.target) ||
158
+ s.id === rel.target);
159
+ if (relatedSchema && !relatedSchemas.has(relatedSchema.id)) {
160
+ relatedSchemas.add(relatedSchema.id);
161
+ context.schemas.push(relatedSchema);
162
+ }
163
+ }
164
+ }
165
+ }
166
+ return context;
167
+ }
168
+ /**
169
+ * Include related endpoints based on referenced schemas
170
+ */
171
+ includeRelatedEndpoints(prompt, projectData, context) {
172
+ // Find endpoints that operate on the same schemas
173
+ const schemaNames = context.schemas.map((s) => this.normalize(s.collectionName));
174
+ for (const endpoint of projectData.endpoints) {
175
+ if (context.endpoints.find((e) => e.id === endpoint.id))
176
+ continue;
177
+ // Check if endpoint path or name relates to any schema
178
+ const endpointPath = this.normalize(endpoint.path || '');
179
+ const endpointName = this.normalize(endpoint.name || '');
180
+ for (const schemaName of schemaNames) {
181
+ if (endpointPath.includes(schemaName) || endpointName.includes(schemaName)) {
182
+ context.endpoints.push(endpoint);
183
+ break;
184
+ }
185
+ }
186
+ }
187
+ return context;
188
+ }
189
+ /**
190
+ * Include relevant tech stack items
191
+ */
192
+ includeRelevantTechStack(prompt, projectData, context) {
193
+ const instruction = (prompt.instruction || '').toLowerCase();
194
+ const title = prompt.title.toLowerCase();
195
+ // Keywords to match against tech stack
196
+ const keywords = this.extractKeywords(instruction + ' ' + title);
197
+ for (const tech of projectData.techStack) {
198
+ if (context.techStack.find((t) => t.id === tech.id))
199
+ continue;
200
+ const techName = this.normalize(tech.name || '');
201
+ const techCategory = this.normalize(tech.category || '');
202
+ const techPurpose = this.normalize(tech.purpose || '');
203
+ // Check if any keyword matches this tech
204
+ for (const keyword of keywords) {
205
+ if (techName.includes(keyword) ||
206
+ techCategory.includes(keyword) ||
207
+ techPurpose.includes(keyword) ||
208
+ keyword.includes(techName)) {
209
+ context.techStack.push(tech);
210
+ break;
211
+ }
212
+ }
213
+ }
214
+ return context;
215
+ }
216
+ /**
217
+ * Get completed dependency prompts
218
+ */
219
+ getCompletedDependencies(prompt, allPrompts) {
220
+ return (prompt.dependsOn || [])
221
+ .map((depId) => allPrompts.find((p) => p.promptId === depId || p.title === depId))
222
+ .filter((p) => p?.completed);
223
+ }
224
+ /**
225
+ * Compress context if it exceeds token limit
226
+ */
227
+ compressIfNeeded(context, rules) {
228
+ if (!rules.compressLargeEntities)
229
+ return context;
230
+ const estimatedTokens = this.estimateTokens(context);
231
+ if (estimatedTokens <= this.MAX_CONTEXT_TOKENS)
232
+ return context;
233
+ // Compression strategies in order of preference
234
+ const strategies = [
235
+ () => this.truncateEntityDescriptions(context),
236
+ () => this.limitEntitiesPerType(context, rules.maxEntitiesPerType / 2),
237
+ () => this.removeNonEssentialFields(context),
238
+ () => this.summarizeEntities(context),
239
+ ];
240
+ let compressed = { ...context };
241
+ for (const strategy of strategies) {
242
+ compressed = strategy();
243
+ if (this.estimateTokens(compressed) <= this.MAX_CONTEXT_TOKENS) {
244
+ break;
245
+ }
246
+ }
247
+ return compressed;
248
+ }
249
+ /**
250
+ * Truncate long descriptions
251
+ */
252
+ truncateEntityDescriptions(context) {
253
+ const maxDescLength = 200;
254
+ return {
255
+ ...context,
256
+ pages: context.pages.map((p) => ({
257
+ ...p,
258
+ description: this.truncate(p.description, maxDescLength),
259
+ purpose: this.truncate(p.purpose, maxDescLength),
260
+ })),
261
+ schemas: context.schemas.map((s) => ({
262
+ ...s,
263
+ description: this.truncate(s.description, maxDescLength),
264
+ fields: s.fields.map((f) => ({
265
+ ...f,
266
+ description: this.truncate(f.description, 100),
267
+ })),
268
+ })),
269
+ endpoints: context.endpoints.map((e) => ({
270
+ ...e,
271
+ description: this.truncate(e.description, maxDescLength),
272
+ })),
273
+ };
274
+ }
275
+ /**
276
+ * Limit number of entities per type
277
+ */
278
+ limitEntitiesPerType(context, maxPerType) {
279
+ return {
280
+ ...context,
281
+ pages: context.pages.slice(0, maxPerType),
282
+ schemas: context.schemas.slice(0, maxPerType),
283
+ endpoints: context.endpoints.slice(0, maxPerType),
284
+ techStack: context.techStack.slice(0, maxPerType),
285
+ };
286
+ }
287
+ /**
288
+ * Remove non-essential fields from entities
289
+ */
290
+ removeNonEssentialFields(context) {
291
+ return {
292
+ ...context,
293
+ pages: context.pages.map((p) => ({
294
+ id: p.id,
295
+ pageName: p.pageName,
296
+ route: p.route,
297
+ purpose: p.purpose,
298
+ components: p.components?.map((c) => ({
299
+ componentName: c.componentName,
300
+ purpose: c.purpose,
301
+ })),
302
+ })),
303
+ schemas: context.schemas.map((s) => ({
304
+ id: s.id,
305
+ collectionName: s.collectionName,
306
+ description: s.description,
307
+ fields: s.fields.map((f) => ({
308
+ fieldName: f.fieldName,
309
+ dataType: f.dataType,
310
+ required: f.required,
311
+ })),
312
+ relationships: s.relationships,
313
+ })),
314
+ endpoints: context.endpoints.map((e) => ({
315
+ id: e.id,
316
+ name: e.name,
317
+ method: e.method,
318
+ path: e.path,
319
+ description: e.description,
320
+ requestBody: e.requestBody,
321
+ responseBody: e.responseBody,
322
+ })),
323
+ };
324
+ }
325
+ /**
326
+ * Create summaries of entities
327
+ */
328
+ summarizeEntities(context) {
329
+ // For extreme compression, just keep names and key info
330
+ return {
331
+ ...context,
332
+ pages: context.pages.map((p) => ({
333
+ id: p.id,
334
+ pageName: p.pageName,
335
+ route: p.route,
336
+ })),
337
+ schemas: context.schemas.map((s) => ({
338
+ id: s.id,
339
+ collectionName: s.collectionName,
340
+ fields: s.fields.map((f) => ({ fieldName: f.fieldName, dataType: f.dataType })),
341
+ })),
342
+ endpoints: context.endpoints.map((e) => ({
343
+ id: e.id,
344
+ name: e.name,
345
+ method: e.method,
346
+ path: e.path,
347
+ })),
348
+ techStack: context.techStack.map((t) => ({
349
+ id: t.id,
350
+ name: t.name,
351
+ category: t.category,
352
+ })),
353
+ };
354
+ }
355
+ /**
356
+ * Estimate token count for context
357
+ */
358
+ estimateTokens(context) {
359
+ const jsonString = JSON.stringify(context);
360
+ return Math.ceil(jsonString.length / this.AVERAGE_CHARS_PER_TOKEN);
361
+ }
362
+ // ============================================================================
363
+ // CATEGORY DETECTION HELPERS
364
+ // ============================================================================
365
+ isUIPrompt(prompt) {
366
+ const category = prompt.category;
367
+ const title = (prompt.title || '').toLowerCase();
368
+ return (category === 'pages' ||
369
+ title.includes('page') ||
370
+ title.includes('ui') ||
371
+ title.includes('component') ||
372
+ title.includes('form') ||
373
+ title.includes('modal') ||
374
+ title.includes('layout') ||
375
+ title.includes('dashboard') ||
376
+ title.includes('view'));
377
+ }
378
+ isDatabasePrompt(prompt) {
379
+ const category = prompt.category;
380
+ const title = (prompt.title || '').toLowerCase();
381
+ return (category === 'database' ||
382
+ title.includes('schema') ||
383
+ title.includes('database') ||
384
+ title.includes('model') ||
385
+ title.includes('migration') ||
386
+ title.includes('firestore') ||
387
+ title.includes('collection'));
388
+ }
389
+ isIntegrationPrompt(prompt) {
390
+ const category = prompt.category;
391
+ const title = (prompt.title || '').toLowerCase();
392
+ return (category === 'integration' ||
393
+ title.includes('api') ||
394
+ title.includes('endpoint') ||
395
+ title.includes('integration') ||
396
+ title.includes('fetch') ||
397
+ title.includes('service') ||
398
+ title.includes('hook'));
399
+ }
400
+ isSetupPrompt(prompt) {
401
+ const category = prompt.category;
402
+ const title = (prompt.title || '').toLowerCase();
403
+ return (category === 'scaffold' ||
404
+ title.includes('setup') ||
405
+ title.includes('config') ||
406
+ title.includes('install') ||
407
+ title.includes('initialize') ||
408
+ title.includes('scaffold'));
409
+ }
410
+ // ============================================================================
411
+ // UTILITY METHODS
412
+ // ============================================================================
413
+ normalize(str) {
414
+ return (str || '')
415
+ .toLowerCase()
416
+ .replace(/[^a-z0-9]/g, '')
417
+ .trim();
418
+ }
419
+ truncate(str, maxLength) {
420
+ if (!str)
421
+ return str;
422
+ return str.length > maxLength ? str.substring(0, maxLength) + '...' : str;
423
+ }
424
+ extractKeywords(text) {
425
+ // Common tech-related keywords
426
+ const techKeywords = [
427
+ 'firebase',
428
+ 'auth',
429
+ 'authentication',
430
+ 'database',
431
+ 'firestore',
432
+ 'storage',
433
+ 'react',
434
+ 'next',
435
+ 'typescript',
436
+ 'tailwind',
437
+ 'css',
438
+ 'api',
439
+ 'rest',
440
+ 'graphql',
441
+ 'webhook',
442
+ 'payment',
443
+ 'stripe',
444
+ 'email',
445
+ 'notification',
446
+ 'analytics',
447
+ 'testing',
448
+ 'deployment',
449
+ 'hosting',
450
+ 'vercel',
451
+ 'cloudflare',
452
+ ];
453
+ return techKeywords.filter((keyword) => text.toLowerCase().includes(keyword));
454
+ }
455
+ findPage(ref, pages) {
456
+ const normalized = this.normalize(ref);
457
+ return pages.find((p) => p.id === ref ||
458
+ this.normalize(p.pageName) === normalized ||
459
+ this.normalize(p.id) === normalized);
460
+ }
461
+ findSchema(ref, schemas) {
462
+ const normalized = this.normalize(ref);
463
+ return schemas.find((s) => s.id === ref ||
464
+ this.normalize(s.collectionName) === normalized ||
465
+ this.normalize(s.id) === normalized);
466
+ }
467
+ findEndpoint(ref, endpoints) {
468
+ const normalized = this.normalize(ref);
469
+ return endpoints.find((e) => e.id === ref ||
470
+ this.normalize(e.name) === normalized ||
471
+ this.normalize(e.id) === normalized);
472
+ }
473
+ findTechStack(ref, techStack) {
474
+ const normalized = this.normalize(ref);
475
+ return techStack.find((t) => t.id === ref ||
476
+ this.normalize(t.name) === normalized ||
477
+ this.normalize(t.id) === normalized);
478
+ }
479
+ }
480
+ exports.ContextOptimizer = ContextOptimizer;
481
+ //# sourceMappingURL=context-optimizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-optimizer.js","sourceRoot":"","sources":["../../src/intelligence/context-optimizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Error Analyzer
3
+ *
4
+ * Intelligently analyzes errors reported during the build process
5
+ * and provides actionable fixes, migrations, or new build steps.
6
+ */
7
+ import { ReportErrorRequest, ErrorDiagnosis, SuggestedFix, BuildPrompt, ProjectData, SchemaEntity, EndpointEntity } from '../types/index.js';
8
+ export interface ErrorAnalysisResult {
9
+ diagnosis: ErrorDiagnosis;
10
+ suggestedFixes: SuggestedFix[];
11
+ relatedDocs: {
12
+ schemas?: SchemaEntity[];
13
+ endpoints?: EndpointEntity[];
14
+ };
15
+ shouldUncheckStep: boolean;
16
+ shouldInjectNewStep: boolean;
17
+ newStep?: Partial<BuildPrompt>;
18
+ }
19
+ interface ErrorContext {
20
+ prompt: BuildPrompt;
21
+ projectData: ProjectData;
22
+ }
23
+ export declare class ErrorAnalyzer {
24
+ private patterns;
25
+ constructor();
26
+ /**
27
+ * Analyze an error and provide diagnosis + fixes
28
+ */
29
+ analyzeError(error: ReportErrorRequest, context: ErrorContext): Promise<ErrorAnalysisResult>;
30
+ /**
31
+ * Register known error patterns
32
+ */
33
+ private registerPatterns;
34
+ private analyzeNullReference;
35
+ private analyzeMissingModule;
36
+ private analyzeExportError;
37
+ private analyzeSchemaMismatch;
38
+ private analyzeTypeMismatch;
39
+ private analyzePermissionError;
40
+ private analyzeFirebaseError;
41
+ private analyzeNetworkError;
42
+ private analyzeHTTPError;
43
+ private analyzeTestFailure;
44
+ private analyzeSyntaxError;
45
+ private genericAnalysis;
46
+ private buildFullResult;
47
+ }
48
+ export {};
49
+ //# sourceMappingURL=error-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-analyzer.d.ts","sourceRoot":"","sources":["../../src/intelligence/error-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,WAAW,EACX,YAAY,EACZ,cAAc,EACf,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,cAAc,CAAC;IAC1B,cAAc,EAAE,YAAY,EAAE,CAAC;IAC/B,WAAW,EAAE;QACX,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;QACzB,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;KAC9B,CAAC;IACF,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAChC;AAQD,UAAU,YAAY;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAsB;;IAMtC;;OAEG;IACG,YAAY,CAChB,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,mBAAmB,CAAC;IAkB/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;YAqFV,oBAAoB;YA2FpB,oBAAoB;YAmFpB,kBAAkB;YAmDlB,qBAAqB;YAkGrB,mBAAmB;YAiDnB,sBAAsB;YAwDtB,oBAAoB;YA0EpB,mBAAmB;YA8CnB,gBAAgB;YA0EhB,kBAAkB;YAyClB,kBAAkB;YAmDlB,eAAe;IA8C7B,OAAO,CAAC,eAAe;CAoBxB"}