@phantomind/core 0.1.1 → 0.1.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.
Files changed (53) hide show
  1. package/dist/cli/compare.d.ts +6 -0
  2. package/dist/cli/compare.d.ts.map +1 -0
  3. package/dist/cli/compare.js +34 -0
  4. package/dist/cli/compare.js.map +1 -0
  5. package/dist/cli/context.d.ts +8 -0
  6. package/dist/cli/context.d.ts.map +1 -0
  7. package/dist/cli/context.js +37 -0
  8. package/dist/cli/context.js.map +1 -0
  9. package/dist/cli/diff.d.ts +6 -0
  10. package/dist/cli/diff.d.ts.map +1 -0
  11. package/dist/cli/diff.js +46 -0
  12. package/dist/cli/diff.js.map +1 -0
  13. package/dist/cli/hooks.d.ts +5 -0
  14. package/dist/cli/hooks.d.ts.map +1 -0
  15. package/dist/cli/hooks.js +35 -0
  16. package/dist/cli/hooks.js.map +1 -0
  17. package/dist/cli/index.d.ts +5 -0
  18. package/dist/cli/index.d.ts.map +1 -1
  19. package/dist/cli/index.js +5 -0
  20. package/dist/cli/index.js.map +1 -1
  21. package/dist/cli/init.d.ts +2 -2
  22. package/dist/cli/init.d.ts.map +1 -1
  23. package/dist/cli/init.js +163 -84
  24. package/dist/cli/init.js.map +1 -1
  25. package/dist/cli/learn.d.ts +11 -0
  26. package/dist/cli/learn.d.ts.map +1 -0
  27. package/dist/cli/learn.js +50 -0
  28. package/dist/cli/learn.js.map +1 -0
  29. package/dist/cli/main.js +56 -0
  30. package/dist/cli/main.js.map +1 -1
  31. package/dist/cli/watch.d.ts +5 -0
  32. package/dist/cli/watch.d.ts.map +1 -0
  33. package/dist/cli/watch.js +60 -0
  34. package/dist/cli/watch.js.map +1 -0
  35. package/dist/config/loader.d.ts.map +1 -1
  36. package/dist/config/loader.js +8 -2
  37. package/dist/config/loader.js.map +1 -1
  38. package/dist/context/learner.d.ts +31 -6
  39. package/dist/context/learner.d.ts.map +1 -1
  40. package/dist/context/learner.js +328 -29
  41. package/dist/context/learner.js.map +1 -1
  42. package/dist/context/project-template.d.ts +21 -0
  43. package/dist/context/project-template.d.ts.map +1 -0
  44. package/dist/context/project-template.js +81 -0
  45. package/dist/context/project-template.js.map +1 -0
  46. package/dist/context/rules-generator.d.ts +7 -0
  47. package/dist/context/rules-generator.d.ts.map +1 -0
  48. package/dist/context/rules-generator.js +158 -0
  49. package/dist/context/rules-generator.js.map +1 -0
  50. package/dist/templates/engine.d.ts.map +1 -1
  51. package/dist/templates/engine.js +159 -10
  52. package/dist/templates/engine.js.map +1 -1
  53. package/package.json +1 -1
@@ -1,10 +1,25 @@
1
1
  /**
2
2
  * PhantomMindAI — Incremental Context Learner
3
- * Passively observes developer patterns and auto-generates SKILLS.md entries.
3
+ * Scans codebase to auto-detect tech stack, patterns, conventions,
4
+ * and writes actionable SKILLS.md content.
4
5
  */
5
6
  import { readFile, writeFile, mkdir } from 'node:fs/promises';
6
- import { join, extname, basename } from 'node:path';
7
+ import { join, extname, basename, dirname } from 'node:path';
8
+ import { existsSync, readFileSync } from 'node:fs';
7
9
  import fastGlob from 'fast-glob';
10
+ export const EMPTY_TECH_STACK = {
11
+ languages: [],
12
+ frameworks: [],
13
+ buildTools: [],
14
+ testingTools: [],
15
+ linters: [],
16
+ databases: [],
17
+ runtime: [],
18
+ packageManager: 'npm',
19
+ projectType: 'unknown',
20
+ entryPoints: [],
21
+ scripts: {},
22
+ };
8
23
  export class ContextLearner {
9
24
  projectRoot;
10
25
  state;
@@ -12,7 +27,7 @@ export class ContextLearner {
12
27
  constructor(projectRoot) {
13
28
  this.projectRoot = projectRoot;
14
29
  this.statePath = join(projectRoot, '.phantomind', 'memory', 'learning-state.json');
15
- this.state = { patterns: [], fileHistory: [], lastScanTimestamp: '' };
30
+ this.state = { patterns: [], techStack: { ...EMPTY_TECH_STACK }, fileHistory: [], lastScanTimestamp: '' };
16
31
  }
17
32
  /**
18
33
  * Load persisted learning state
@@ -27,27 +42,29 @@ export class ContextLearner {
27
42
  }
28
43
  }
29
44
  /**
30
- * Scan project and learn patterns
45
+ * Scan project and learn patterns + tech stack
31
46
  */
32
47
  async learn() {
33
48
  await this.load();
34
- const files = await fastGlob('**/*.{ts,tsx,js,jsx,swift,go,py,rs,java,kt}', {
49
+ // Phase 1: Detect tech stack from config files
50
+ this.state.techStack = await this.detectTechStack();
51
+ // Phase 2: Scan source files for patterns
52
+ const files = await fastGlob('**/*.{ts,tsx,js,jsx,swift,go,py,rs,java,kt,rb,php,vue,svelte}', {
35
53
  cwd: this.projectRoot,
36
- ignore: ['node_modules/**', 'dist/**', 'build/**', '.git/**'],
54
+ ignore: ['node_modules/**', 'dist/**', 'build/**', '.git/**', 'vendor/**', '__pycache__/**'],
37
55
  });
38
56
  const namingPatterns = new Map();
39
57
  const importPatterns = new Map();
40
58
  const structurePatterns = new Map();
59
+ const conventionPatterns = new Map();
41
60
  for (const file of files) {
42
61
  try {
43
62
  const content = await readFile(join(this.projectRoot, file), 'utf-8');
44
63
  const ext = extname(file);
45
- // Detect naming conventions
46
64
  this.detectNamingPatterns(content, ext, namingPatterns);
47
- // Detect import patterns
48
65
  this.detectImportPatterns(content, ext, importPatterns);
49
- // Detect architecture patterns
50
66
  this.detectStructurePatterns(file, structurePatterns);
67
+ this.detectConventionPatterns(file, content, conventionPatterns);
51
68
  }
52
69
  catch {
53
70
  continue;
@@ -95,6 +112,19 @@ export class ContextLearner {
95
112
  });
96
113
  }
97
114
  }
115
+ for (const [pattern, examples] of conventionPatterns) {
116
+ if (examples.length >= 2) {
117
+ newPatterns.push({
118
+ type: 'convention',
119
+ pattern,
120
+ confidence: Math.min(examples.length / 5, 1.0),
121
+ examples: examples.slice(0, 5),
122
+ firstSeen: now,
123
+ lastSeen: now,
124
+ occurrences: examples.length,
125
+ });
126
+ }
127
+ }
98
128
  // Merge with existing patterns
99
129
  this.mergePatterns(newPatterns);
100
130
  this.state.lastScanTimestamp = now;
@@ -102,50 +132,299 @@ export class ContextLearner {
102
132
  return this.state.patterns;
103
133
  }
104
134
  /**
105
- * Generate SKILLS.md content from learned patterns
135
+ * Generate rich SKILLS.md content from detected tech stack + patterns
106
136
  */
107
- generateSkillsContent() {
108
- const lines = [
109
- '# Project Skills (Auto-learned)',
110
- '',
111
- '> This file was auto-generated by PhantomMindAI incremental learning.',
112
- '> Review and edit as needed.',
113
- '',
114
- ];
115
- const namingPatterns = this.state.patterns.filter(p => p.type === 'naming' && p.confidence > 0.5);
137
+ generateSkillsContent(projectName = 'Project') {
138
+ const ts = this.state.techStack;
139
+ const lines = [];
140
+ lines.push(`# ${projectName} — AI Skills & Context`);
141
+ lines.push('');
142
+ lines.push('> Auto-generated by PhantomMindAI. Review and customize as needed.');
143
+ lines.push(`> Last scanned: ${this.state.lastScanTimestamp || new Date().toISOString()}`);
144
+ lines.push('');
145
+ // Tech Stack
146
+ lines.push('## Tech Stack');
147
+ lines.push('');
148
+ if (ts.languages.length)
149
+ lines.push(`- **Languages**: ${ts.languages.join(', ')}`);
150
+ if (ts.frameworks.length)
151
+ lines.push(`- **Frameworks**: ${ts.frameworks.join(', ')}`);
152
+ if (ts.runtime.length)
153
+ lines.push(`- **Runtime**: ${ts.runtime.join(', ')}`);
154
+ if (ts.buildTools.length)
155
+ lines.push(`- **Build Tools**: ${ts.buildTools.join(', ')}`);
156
+ if (ts.testingTools.length)
157
+ lines.push(`- **Testing**: ${ts.testingTools.join(', ')}`);
158
+ if (ts.linters.length)
159
+ lines.push(`- **Linting/Formatting**: ${ts.linters.join(', ')}`);
160
+ if (ts.databases.length)
161
+ lines.push(`- **Databases**: ${ts.databases.join(', ')}`);
162
+ lines.push(`- **Package Manager**: ${ts.packageManager}`);
163
+ if (ts.nodeVersion)
164
+ lines.push(`- **Node.js**: ${ts.nodeVersion}`);
165
+ lines.push(`- **Project Type**: ${ts.projectType}`);
166
+ lines.push('');
167
+ // Key Scripts
168
+ if (Object.keys(ts.scripts).length > 0) {
169
+ lines.push('## Key Commands');
170
+ lines.push('');
171
+ const importantScripts = ['build', 'dev', 'start', 'test', 'lint', 'format', 'typecheck'];
172
+ for (const key of importantScripts) {
173
+ if (ts.scripts[key]) {
174
+ lines.push(`- \`npm run ${key}\` → \`${ts.scripts[key]}\``);
175
+ }
176
+ }
177
+ lines.push('');
178
+ }
179
+ // Entry Points
180
+ if (ts.entryPoints.length > 0) {
181
+ lines.push('## Entry Points');
182
+ lines.push('');
183
+ for (const ep of ts.entryPoints) {
184
+ lines.push(`- \`${ep}\``);
185
+ }
186
+ lines.push('');
187
+ }
188
+ // Naming Conventions
189
+ const namingPatterns = this.state.patterns.filter(p => p.type === 'naming' && p.confidence > 0.3);
116
190
  if (namingPatterns.length > 0) {
117
- lines.push('## Naming Conventions', '');
118
- for (const p of namingPatterns) {
119
- lines.push(`- ${p.pattern} (confidence: ${(p.confidence * 100).toFixed(0)}%, seen ${p.occurrences} times)`);
191
+ lines.push('## Naming Conventions');
192
+ lines.push('');
193
+ for (const p of namingPatterns.sort((a, b) => b.occurrences - a.occurrences)) {
194
+ lines.push(`- ${p.pattern} (${p.occurrences}× found)`);
120
195
  }
121
196
  lines.push('');
122
197
  }
123
- const importP = this.state.patterns.filter(p => p.type === 'import' && p.confidence > 0.5);
198
+ // Import Patterns
199
+ const importP = this.state.patterns.filter(p => p.type === 'import' && p.confidence > 0.3);
124
200
  if (importP.length > 0) {
125
- lines.push('## Import Patterns', '');
201
+ lines.push('## Import Patterns');
202
+ lines.push('');
126
203
  for (const p of importP) {
127
204
  lines.push(`- ${p.pattern}`);
128
205
  }
129
206
  lines.push('');
130
207
  }
131
- const structureP = this.state.patterns.filter(p => p.type === 'structure' && p.confidence > 0.5);
208
+ // Architecture Patterns
209
+ const structureP = this.state.patterns.filter(p => p.type === 'structure' && p.confidence > 0.3);
132
210
  if (structureP.length > 0) {
133
- lines.push('## Architecture Patterns', '');
211
+ lines.push('## Architecture Patterns');
212
+ lines.push('');
134
213
  for (const p of structureP) {
135
214
  lines.push(`- ${p.pattern}`);
136
- for (const ex of p.examples) {
137
- lines.push(` - e.g., \`${ex}\``);
215
+ for (const ex of p.examples.slice(0, 3)) {
216
+ lines.push(` - e.g. \`${ex}\``);
138
217
  }
139
218
  }
140
219
  lines.push('');
141
220
  }
221
+ const conventionP = this.state.patterns.filter(p => p.type === 'convention' && p.confidence > 0.3);
222
+ if (conventionP.length > 0) {
223
+ lines.push('## Project Conventions');
224
+ lines.push('');
225
+ for (const p of conventionP.sort((a, b) => b.occurrences - a.occurrences)) {
226
+ lines.push(`- ${p.pattern}`);
227
+ }
228
+ lines.push('');
229
+ }
142
230
  return lines.join('\n');
143
231
  }
232
+ getTechStack() {
233
+ return structuredClone(this.state.techStack);
234
+ }
235
+ getPatterns() {
236
+ return structuredClone(this.state.patterns);
237
+ }
238
+ /**
239
+ * Write the generated SKILLS.md to the project's .phantomind directory
240
+ */
241
+ async writeSkills(projectName) {
242
+ const name = projectName ?? this.detectProjectName();
243
+ const content = this.generateSkillsContent(name);
244
+ const skillsPath = join(this.projectRoot, '.phantomind', 'SKILLS.md');
245
+ await mkdir(dirname(skillsPath), { recursive: true });
246
+ await writeFile(skillsPath, content, 'utf-8');
247
+ return content;
248
+ }
249
+ /** Detect tech stack from package.json, config files, etc. */
250
+ async detectTechStack() {
251
+ const ts = { ...EMPTY_TECH_STACK, languages: [], frameworks: [], buildTools: [], testingTools: [], linters: [], databases: [], runtime: [], entryPoints: [], scripts: {} };
252
+ // Detect package manager
253
+ if (existsSync(join(this.projectRoot, 'pnpm-lock.yaml')))
254
+ ts.packageManager = 'pnpm';
255
+ else if (existsSync(join(this.projectRoot, 'yarn.lock')))
256
+ ts.packageManager = 'yarn';
257
+ else if (existsSync(join(this.projectRoot, 'bun.lockb')))
258
+ ts.packageManager = 'bun';
259
+ else
260
+ ts.packageManager = 'npm';
261
+ // Parse package.json
262
+ const pkgPath = join(this.projectRoot, 'package.json');
263
+ if (existsSync(pkgPath)) {
264
+ try {
265
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
266
+ const allDeps = { ...pkg.dependencies, ...pkg.devDependencies };
267
+ // Languages
268
+ if (allDeps['typescript'] || existsSync(join(this.projectRoot, 'tsconfig.json')))
269
+ ts.languages.push('TypeScript');
270
+ ts.languages.push('JavaScript');
271
+ // Module type
272
+ if (pkg.workspaces)
273
+ ts.projectType = 'Monorepo';
274
+ else if (pkg.type === 'module')
275
+ ts.projectType = 'ESM (ES Modules)';
276
+ else
277
+ ts.projectType = 'CommonJS';
278
+ // Frameworks
279
+ if (allDeps['next'])
280
+ ts.frameworks.push('Next.js');
281
+ if (allDeps['react'])
282
+ ts.frameworks.push('React');
283
+ if (allDeps['vue'])
284
+ ts.frameworks.push('Vue.js');
285
+ if (allDeps['@angular/core'])
286
+ ts.frameworks.push('Angular');
287
+ if (allDeps['svelte'])
288
+ ts.frameworks.push('Svelte');
289
+ if (allDeps['express'])
290
+ ts.frameworks.push('Express');
291
+ if (allDeps['fastify'])
292
+ ts.frameworks.push('Fastify');
293
+ if (allDeps['koa'])
294
+ ts.frameworks.push('Koa');
295
+ if (allDeps['hono'])
296
+ ts.frameworks.push('Hono');
297
+ if (allDeps['nestjs'] || allDeps['@nestjs/core'])
298
+ ts.frameworks.push('NestJS');
299
+ if (allDeps['nuxt'])
300
+ ts.frameworks.push('Nuxt');
301
+ if (allDeps['astro'])
302
+ ts.frameworks.push('Astro');
303
+ if (allDeps['remix'] || allDeps['@remix-run/node'])
304
+ ts.frameworks.push('Remix');
305
+ if (allDeps['electron'])
306
+ ts.frameworks.push('Electron');
307
+ // Build tools
308
+ if (allDeps['vite'])
309
+ ts.buildTools.push('Vite');
310
+ if (allDeps['webpack'])
311
+ ts.buildTools.push('Webpack');
312
+ if (allDeps['esbuild'])
313
+ ts.buildTools.push('esbuild');
314
+ if (allDeps['rollup'])
315
+ ts.buildTools.push('Rollup');
316
+ if (allDeps['turbo'] || existsSync(join(this.projectRoot, 'turbo.json')))
317
+ ts.buildTools.push('Turborepo');
318
+ if (allDeps['tsup'])
319
+ ts.buildTools.push('tsup');
320
+ if (existsSync(join(this.projectRoot, 'tsconfig.json')))
321
+ ts.buildTools.push('tsc');
322
+ // Testing
323
+ if (allDeps['vitest'])
324
+ ts.testingTools.push('Vitest');
325
+ if (allDeps['jest'])
326
+ ts.testingTools.push('Jest');
327
+ if (allDeps['mocha'])
328
+ ts.testingTools.push('Mocha');
329
+ if (allDeps['@testing-library/react'] || allDeps['@testing-library/vue'])
330
+ ts.testingTools.push('Testing Library');
331
+ if (allDeps['playwright'] || allDeps['@playwright/test'])
332
+ ts.testingTools.push('Playwright');
333
+ if (allDeps['cypress'])
334
+ ts.testingTools.push('Cypress');
335
+ // Linters
336
+ if (allDeps['eslint'])
337
+ ts.linters.push('ESLint');
338
+ if (allDeps['prettier'])
339
+ ts.linters.push('Prettier');
340
+ if (allDeps['biome'] || allDeps['@biomejs/biome'])
341
+ ts.linters.push('Biome');
342
+ if (allDeps['oxlint'] || allDeps['@oxlint/core'])
343
+ ts.linters.push('oxlint');
344
+ // Databases
345
+ if (allDeps['prisma'] || allDeps['@prisma/client'])
346
+ ts.databases.push('Prisma');
347
+ if (allDeps['drizzle-orm'])
348
+ ts.databases.push('Drizzle');
349
+ if (allDeps['typeorm'])
350
+ ts.databases.push('TypeORM');
351
+ if (allDeps['mongoose'])
352
+ ts.databases.push('MongoDB (Mongoose)');
353
+ if (allDeps['pg'] || allDeps['postgres'])
354
+ ts.databases.push('PostgreSQL');
355
+ if (allDeps['redis'] || allDeps['ioredis'])
356
+ ts.databases.push('Redis');
357
+ if (allDeps['better-sqlite3'] || allDeps['sql.js'])
358
+ ts.databases.push('SQLite');
359
+ // Runtime
360
+ ts.runtime.push('Node.js');
361
+ if (pkg.engines?.node)
362
+ ts.nodeVersion = pkg.engines.node;
363
+ // Scripts
364
+ ts.scripts = pkg.scripts ?? {};
365
+ // Entry points
366
+ if (pkg.main)
367
+ ts.entryPoints.push(pkg.main);
368
+ if (pkg.bin) {
369
+ const bins = typeof pkg.bin === 'string' ? { [pkg.name]: pkg.bin } : pkg.bin;
370
+ for (const [name, path] of Object.entries(bins)) {
371
+ ts.entryPoints.push(`${name} → ${path}`);
372
+ }
373
+ }
374
+ if (pkg.workspaces)
375
+ ts.entryPoints.push('workspaces → packages/*');
376
+ }
377
+ catch { /* skip */ }
378
+ }
379
+ // Python
380
+ if (existsSync(join(this.projectRoot, 'requirements.txt')) || existsSync(join(this.projectRoot, 'pyproject.toml'))) {
381
+ ts.languages.push('Python');
382
+ ts.runtime.push('Python');
383
+ }
384
+ // Go
385
+ if (existsSync(join(this.projectRoot, 'go.mod'))) {
386
+ ts.languages.push('Go');
387
+ ts.runtime.push('Go');
388
+ }
389
+ // Rust
390
+ if (existsSync(join(this.projectRoot, 'Cargo.toml'))) {
391
+ ts.languages.push('Rust');
392
+ ts.runtime.push('Rust');
393
+ }
394
+ // Swift
395
+ if (existsSync(join(this.projectRoot, 'Package.swift'))) {
396
+ ts.languages.push('Swift');
397
+ }
398
+ // Docker
399
+ if (existsSync(join(this.projectRoot, 'Dockerfile')) || existsSync(join(this.projectRoot, 'docker-compose.yml'))) {
400
+ ts.buildTools.push('Docker');
401
+ }
402
+ // Deduplicate
403
+ ts.languages = [...new Set(ts.languages)];
404
+ ts.frameworks = [...new Set(ts.frameworks)];
405
+ ts.buildTools = [...new Set(ts.buildTools)];
406
+ ts.testingTools = [...new Set(ts.testingTools)];
407
+ ts.linters = [...new Set(ts.linters)];
408
+ ts.databases = [...new Set(ts.databases)];
409
+ ts.runtime = [...new Set(ts.runtime)];
410
+ return ts;
411
+ }
412
+ detectProjectName() {
413
+ try {
414
+ const pkgPath = join(this.projectRoot, 'package.json');
415
+ if (existsSync(pkgPath)) {
416
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
417
+ return pkg.name ?? basename(this.projectRoot);
418
+ }
419
+ }
420
+ catch { /* skip */ }
421
+ return basename(this.projectRoot);
422
+ }
144
423
  /**
145
424
  * Reset all learned patterns
146
425
  */
147
426
  async reset() {
148
- this.state = { patterns: [], fileHistory: [], lastScanTimestamp: '' };
427
+ this.state = { patterns: [], techStack: { ...EMPTY_TECH_STACK }, fileHistory: [], lastScanTimestamp: '' };
149
428
  await this.save();
150
429
  }
151
430
  detectNamingPatterns(content, ext, patterns) {
@@ -191,6 +470,26 @@ export class ContextLearner {
191
470
  this.incr(patterns, 'Use namespace imports (import * as)');
192
471
  }
193
472
  }
473
+ detectConventionPatterns(file, content, patterns) {
474
+ if (/\b(createSlice|configureStore|useSelector|useDispatch)\b/.test(content)) {
475
+ this.addToList(patterns, 'Redux-style state management present', file);
476
+ }
477
+ if (/\b(create|use)Store\b|zustand/.test(content)) {
478
+ this.addToList(patterns, 'Store-based client state management present', file);
479
+ }
480
+ if (/\b(passport|next-auth|jsonwebtoken|jwt|session)\b/i.test(content)) {
481
+ this.addToList(patterns, 'Authentication/session patterns present', file);
482
+ }
483
+ if (/\b(?:router|app)\.(?:get|post|put|delete|patch)\b/.test(content)) {
484
+ this.addToList(patterns, 'Express-style route handlers present', file);
485
+ }
486
+ if (/export\s+(async\s+)?function\s+(GET|POST|PUT|PATCH|DELETE)\b/.test(content)) {
487
+ this.addToList(patterns, 'File-based HTTP handlers present', file);
488
+ }
489
+ if (/(^|\/)packages\//.test(file) || /(^|\/)apps\//.test(file)) {
490
+ this.addToList(patterns, 'Workspace package layout present', file);
491
+ }
492
+ }
194
493
  detectStructurePatterns(file, patterns) {
195
494
  const parts = file.split('/');
196
495
  if (parts.length >= 2) {
@@ -1 +1 @@
1
- {"version":3,"file":"learner.js","sourceRoot":"","sources":["../../src/context/learner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"learner.js","sourceRoot":"","sources":["../../src/context/learner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,QAAQ,MAAM,WAAW,CAAC;AAkCjC,MAAM,CAAC,MAAM,gBAAgB,GAAkB;IAC7C,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,EAAE;IACd,UAAU,EAAE,EAAE;IACd,YAAY,EAAE,EAAE;IAChB,OAAO,EAAE,EAAE;IACX,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,EAAE;IACX,cAAc,EAAE,KAAK;IACrB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,EAAE;IACf,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF,MAAM,OAAO,cAAc;IACjB,WAAW,CAAS;IACpB,KAAK,CAAgB;IACrB,SAAS,CAAS;IAE1B,YAAY,WAAmB;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CAAC;QACnF,IAAI,CAAC,KAAK,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,gBAAgB,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC;IAC5G,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,+CAA+C;QAC/C,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAEpD,0CAA0C;QAC1C,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,+DAA+D,EAAE;YAC5F,GAAG,EAAE,IAAI,CAAC,WAAW;YACrB,MAAM,EAAE,CAAC,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,CAAC;SAC7F,CAAC,CAAC;QAEH,MAAM,cAAc,GAAwB,IAAI,GAAG,EAAE,CAAC;QACtD,MAAM,cAAc,GAAwB,IAAI,GAAG,EAAE,CAAC;QACtD,MAAM,iBAAiB,GAA0B,IAAI,GAAG,EAAE,CAAC;QAC3D,MAAM,kBAAkB,GAA0B,IAAI,GAAG,EAAE,CAAC;QAE5D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;gBACtE,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBAE1B,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;gBACxD,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;gBACxD,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;gBACtD,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;YACnE,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,MAAM,WAAW,GAAqB,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,cAAc,EAAE,CAAC;YAC9C,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACf,WAAW,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE,QAAQ;oBACd,OAAO;oBACP,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,GAAG,CAAC;oBACrC,QAAQ,EAAE,EAAE;oBACZ,SAAS,EAAE,GAAG;oBACd,QAAQ,EAAE,GAAG;oBACb,WAAW,EAAE,KAAK;iBACnB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,cAAc,EAAE,CAAC;YAC9C,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACf,WAAW,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE,QAAQ;oBACd,OAAO;oBACP,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC;oBACpC,QAAQ,EAAE,EAAE;oBACZ,SAAS,EAAE,GAAG;oBACd,QAAQ,EAAE,GAAG;oBACb,WAAW,EAAE,KAAK;iBACnB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,iBAAiB,EAAE,CAAC;YACpD,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACzB,WAAW,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE,WAAW;oBACjB,OAAO;oBACP,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC;oBAC9C,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC9B,SAAS,EAAE,GAAG;oBACd,QAAQ,EAAE,GAAG;oBACb,WAAW,EAAE,QAAQ,CAAC,MAAM;iBAC7B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,kBAAkB,EAAE,CAAC;YACrD,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACzB,WAAW,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE,YAAY;oBAClB,OAAO;oBACP,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC;oBAC9C,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC9B,SAAS,EAAE,GAAG;oBACd,QAAQ,EAAE,GAAG;oBACb,WAAW,EAAE,QAAQ,CAAC,MAAM;iBAC7B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC;QACnC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,cAAsB,SAAS;QACnD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAChC,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,CAAC,IAAI,CAAC,KAAK,WAAW,wBAAwB,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;QACjF,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC1F,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,aAAa;QACb,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnF,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtF,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7E,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvF,IAAI,EAAE,CAAC,YAAY,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvF,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxF,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnF,KAAK,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1D,IAAI,EAAE,CAAC,WAAW;YAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,cAAc;QACd,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC1F,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;gBACnC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpB,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,eAAe;QACf,IAAI,EAAE,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,MAAM,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAChC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC5B,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,qBAAqB;QACrB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;QAClG,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,MAAM,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7E,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,WAAW,UAAU,CAAC,CAAC;YACzD,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,kBAAkB;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;QAC3F,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/B,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,wBAAwB;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;QACjG,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC7B,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;oBACxC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;QACnG,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC1E,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/B,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,YAAY;QACV,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED,WAAW;QACT,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,WAAoB;QACpC,MAAM,IAAI,GAAG,WAAW,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;QACtE,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,8DAA8D;IACtD,KAAK,CAAC,eAAe;QAC3B,MAAM,EAAE,GAAkB,EAAE,GAAG,gBAAgB,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAE1L,yBAAyB;QACzB,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;YAAE,EAAE,CAAC,cAAc,GAAG,MAAM,CAAC;aAChF,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAAE,EAAE,CAAC,cAAc,GAAG,MAAM,CAAC;aAChF,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAAE,EAAE,CAAC,cAAc,GAAG,KAAK,CAAC;;YAC/E,EAAE,CAAC,cAAc,GAAG,KAAK,CAAC;QAE/B,qBAAqB;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACvD,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;gBACvD,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;gBAEhE,YAAY;gBACZ,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;oBAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAClH,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAEhC,cAAc;gBACd,IAAI,GAAG,CAAC,UAAU;oBAAE,EAAE,CAAC,WAAW,GAAG,UAAU,CAAC;qBAC3C,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;oBAAE,EAAE,CAAC,WAAW,GAAG,kBAAkB,CAAC;;oBAC/D,EAAE,CAAC,WAAW,GAAG,UAAU,CAAC;gBAEjC,aAAa;gBACb,IAAI,OAAO,CAAC,MAAM,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACnD,IAAI,OAAO,CAAC,OAAO,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAClD,IAAI,OAAO,CAAC,KAAK,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACjD,IAAI,OAAO,CAAC,eAAe,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC5D,IAAI,OAAO,CAAC,QAAQ,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACpD,IAAI,OAAO,CAAC,SAAS,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACtD,IAAI,OAAO,CAAC,SAAS,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACtD,IAAI,OAAO,CAAC,KAAK,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9C,IAAI,OAAO,CAAC,MAAM,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC/E,IAAI,OAAO,CAAC,MAAM,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChD,IAAI,OAAO,CAAC,OAAO,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAClD,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,iBAAiB,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAChF,IAAI,OAAO,CAAC,UAAU,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAExD,cAAc;gBACd,IAAI,OAAO,CAAC,MAAM,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChD,IAAI,OAAO,CAAC,SAAS,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACtD,IAAI,OAAO,CAAC,SAAS,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACtD,IAAI,OAAO,CAAC,QAAQ,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACpD,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC1G,IAAI,OAAO,CAAC,MAAM,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEnF,UAAU;gBACV,IAAI,OAAO,CAAC,QAAQ,CAAC;oBAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtD,IAAI,OAAO,CAAC,MAAM,CAAC;oBAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAClD,IAAI,OAAO,CAAC,OAAO,CAAC;oBAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpD,IAAI,OAAO,CAAC,wBAAwB,CAAC,IAAI,OAAO,CAAC,sBAAsB,CAAC;oBAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAClH,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,kBAAkB,CAAC;oBAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC7F,IAAI,OAAO,CAAC,SAAS,CAAC;oBAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAExD,UAAU;gBACV,IAAI,OAAO,CAAC,QAAQ,CAAC;oBAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACjD,IAAI,OAAO,CAAC,UAAU,CAAC;oBAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACrD,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,gBAAgB,CAAC;oBAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC5E,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC;oBAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAE5E,YAAY;gBACZ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,gBAAgB,CAAC;oBAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChF,IAAI,OAAO,CAAC,aAAa,CAAC;oBAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACzD,IAAI,OAAO,CAAC,SAAS,CAAC;oBAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACrD,IAAI,OAAO,CAAC,UAAU,CAAC;oBAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBACjE,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC;oBAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC1E,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC;oBAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvE,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC;oBAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAEhF,UAAU;gBACV,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC3B,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI;oBAAE,EAAE,CAAC,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;gBAEzD,UAAU;gBACV,EAAE,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;gBAE/B,eAAe;gBACf,IAAI,GAAG,CAAC,IAAI;oBAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;oBACZ,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;oBAC7E,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;wBAChD,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,MAAM,IAAI,EAAE,CAAC,CAAC;oBAC3C,CAAC;gBACH,CAAC;gBACD,IAAI,GAAG,CAAC,UAAU;oBAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACrE,CAAC;YAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;QACxB,CAAC;QAED,SAAS;QACT,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;YACnH,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5B,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;QAED,KAAK;QACL,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;YACjD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAED,OAAO;QACP,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;YACrD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QAED,QAAQ;QACR,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;YACxD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAED,SAAS;QACT,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC;YACjH,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;QAED,cAAc;QACd,EAAE,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1C,EAAE,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAC5C,EAAE,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAC5C,EAAE,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QAChD,EAAE,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACtC,EAAE,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1C,EAAE,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAEtC,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YACvD,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;gBACvD,OAAO,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;QACtB,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,KAAK,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,gBAAgB,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC;QAC1G,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAEO,oBAAoB,CAAC,OAAe,EAAE,GAAW,EAAE,QAA6B;QACtF,+BAA+B;QAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,IAAI,EAAE,CAAC;QACtG,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,sCAAsC,CAAC,CAAC;YAC1F,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,yCAAyC,CAAC,CAAC;YAChG,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,yCAAyC,CAAC,CAAC;YAChG,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;YAC9F,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,sCAAsC,CAAC,CAAC;YAC1F,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,sCAAsC,CAAC,CAAC;YAC1F,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,sCAAsC,CAAC,CAAC;YAC1F,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,uCAAuC,CAAC,CAAC;YAC5F,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,sCAAsC,CAAC,CAAC;QACnH,CAAC;QAED,yBAAyB;QACzB,IAAI,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAC;YACvD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gCAAgC,CAAC,CAAC;QACxD,CAAC;QAED,mBAAmB;QACnB,IAAI,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;YAClD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gCAAgC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,OAAe,EAAE,GAAW,EAAE,QAA6B;QACtF,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACvE,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,iDAAiD,CAAC,CAAC;YAC5G,IAAI,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,MAAM;gBAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;YACzG,IAAI,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,MAAM;gBAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,qCAAqC,CAAC,CAAC;QACzG,CAAC;IACH,CAAC;IAEO,wBAAwB,CAAC,IAAY,EAAE,OAAe,EAAE,QAA+B;QAC7F,IAAI,0DAA0D,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7E,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,sCAAsC,EAAE,IAAI,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,6CAA6C,EAAE,IAAI,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,oDAAoD,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACvE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,yCAAyC,EAAE,IAAI,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,mDAAmD,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACtE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,sCAAsC,EAAE,IAAI,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,8DAA8D,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACjF,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,kCAAkC,EAAE,IAAI,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/D,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,kCAAkC,EAAE,IAAI,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAEO,uBAAuB,CAAC,IAAY,EAAE,QAA+B;QAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAE/C,6BAA6B;YAC7B,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7D,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,oCAAoC,EAAE,IAAI,CAAC,CAAC;YACvE,CAAC;YAED,iCAAiC;YACjC,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC1E,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBACzC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,uCAAuC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACtF,CAAC;YAED,+BAA+B;YAC/B,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YACrF,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,qCAAqC,OAAO,IAAI,EAAE,IAAI,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,WAA6B;QACjD,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;YAC/F,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;gBACnE,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;gBACtE,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAEO,IAAI,CAAC,GAAwB,EAAE,GAAW;QAChD,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;IAEO,SAAS,CAAC,GAA0B,EAAE,GAAW,EAAE,KAAa;QACtE,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClF,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAChF,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,21 @@
1
+ export type ProjectTemplateName = 'auto' | 'default' | 'node-library' | 'node-cli' | 'react-app' | 'nextjs-app';
2
+ export interface ProjectTemplate {
3
+ name: Exclude<ProjectTemplateName, 'auto'>;
4
+ displayName: string;
5
+ languageRules: string[];
6
+ frameworkRules: string[];
7
+ fileOrganization: string[];
8
+ importRules: string[];
9
+ testingRules: string[];
10
+ performanceRules: string[];
11
+ documentationRules: string[];
12
+ forbiddenPatterns: string[];
13
+ customRules: string[];
14
+ }
15
+ export declare const PROJECT_TEMPLATES: Record<Exclude<ProjectTemplateName, 'auto'>, ProjectTemplate>;
16
+ export declare function detectProjectTemplate(input: {
17
+ frameworks: string[];
18
+ entryPoints: string[];
19
+ projectType: string;
20
+ }): Exclude<ProjectTemplateName, 'auto'>;
21
+ //# sourceMappingURL=project-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-template.d.ts","sourceRoot":"","sources":["../../src/context/project-template.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAC3B,MAAM,GACN,SAAS,GACT,cAAc,GACd,UAAU,GACV,WAAW,GACX,YAAY,CAAC;AAEjB,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,EAAE,eAAe,CAkE3F,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CASvC"}
@@ -0,0 +1,81 @@
1
+ export const PROJECT_TEMPLATES = {
2
+ default: {
3
+ name: 'default',
4
+ displayName: 'Default Project',
5
+ languageRules: ['Prefer explicit types where they clarify public APIs.'],
6
+ frameworkRules: ['Preserve existing framework conventions before introducing new abstractions.'],
7
+ fileOrganization: ['Keep related code close together and avoid deep nesting without strong justification.'],
8
+ importRules: ['Prefer stable imports over brittle relative paths when aliases already exist.'],
9
+ testingRules: ['Add or update tests when behavior changes.'],
10
+ performanceRules: ['Measure before optimizing hot paths.'],
11
+ documentationRules: ['Document non-obvious architecture decisions close to the code.'],
12
+ forbiddenPatterns: ['Large files with mixed responsibilities', 'Silent failure paths'],
13
+ customRules: [],
14
+ },
15
+ 'node-library': {
16
+ name: 'node-library',
17
+ displayName: 'Node Library',
18
+ languageRules: ['Keep exported APIs stable and avoid implicit breaking changes.'],
19
+ frameworkRules: ['Favor small composable modules over framework-heavy abstractions.'],
20
+ fileOrganization: ['Separate CLI entrypoints, runtime code, and shared utilities.'],
21
+ importRules: ['Use the node: protocol for built-in modules.'],
22
+ testingRules: ['Cover public APIs and error cases.'],
23
+ performanceRules: ['Avoid unnecessary startup work in library entrypoints.'],
24
+ documentationRules: ['Document exported types and user-facing CLI behavior.'],
25
+ forbiddenPatterns: ['Top-level side effects in reusable modules', 'Breaking output format without versioning'],
26
+ customRules: ['Keep generated files deterministic when possible.'],
27
+ },
28
+ 'node-cli': {
29
+ name: 'node-cli',
30
+ displayName: 'Node CLI',
31
+ languageRules: ['Keep command handlers focused and side-effect boundaries clear.'],
32
+ frameworkRules: ['Provide actionable CLI output for both success and failure paths.'],
33
+ fileOrganization: ['Keep one command per file when command complexity grows.'],
34
+ importRules: ['Centralize command registration in the CLI entrypoint.'],
35
+ testingRules: ['Cover parsing and output contracts for commands with branching behavior.'],
36
+ performanceRules: ['Avoid blocking startup with unnecessary scans before argument parsing.'],
37
+ documentationRules: ['Document commands, flags, and examples.'],
38
+ forbiddenPatterns: ['Ambiguous command names', 'Hidden destructive behavior'],
39
+ customRules: ['Prefer dry-run support before destructive writes.'],
40
+ },
41
+ 'react-app': {
42
+ name: 'react-app',
43
+ displayName: 'React App',
44
+ languageRules: ['Model component props explicitly and keep rendering logic predictable.'],
45
+ frameworkRules: ['Prefer composition over prop-drilling-heavy component trees.'],
46
+ fileOrganization: ['Group components by feature or route rather than by file type alone.'],
47
+ importRules: ['Keep browser-only code out of shared server modules.'],
48
+ testingRules: ['Test behavior visible to users rather than implementation details.'],
49
+ performanceRules: ['Avoid unnecessary renders before adding memoization.'],
50
+ documentationRules: ['Document app-level state boundaries and data flow.'],
51
+ forbiddenPatterns: ['Monolithic page components', 'State duplicated across distant branches'],
52
+ customRules: ['Keep hooks pure and deterministic.'],
53
+ },
54
+ 'nextjs-app': {
55
+ name: 'nextjs-app',
56
+ displayName: 'Next.js App',
57
+ languageRules: ['Keep server and client boundaries explicit.'],
58
+ frameworkRules: ['Prefer Server Components by default and use client components only when needed.'],
59
+ fileOrganization: ['Keep route segments cohesive and colocate data-fetching with routes when appropriate.'],
60
+ importRules: ['Do not import server-only modules into client components.'],
61
+ testingRules: ['Cover route handlers, data loaders, and rendering edge cases.'],
62
+ performanceRules: ['Be deliberate about caching, revalidation, and bundle size.'],
63
+ documentationRules: ['Document route conventions and env var requirements.'],
64
+ forbiddenPatterns: ['Mixing browser-only APIs into server modules', 'Fetching the same data redundantly across nested routes'],
65
+ customRules: ['Use route handlers and server actions consistently within a feature.'],
66
+ },
67
+ };
68
+ export function detectProjectTemplate(input) {
69
+ const frameworks = new Set(input.frameworks);
70
+ const entryPoints = input.entryPoints.join(' ');
71
+ if (frameworks.has('Next.js'))
72
+ return 'nextjs-app';
73
+ if (frameworks.has('React'))
74
+ return 'react-app';
75
+ if (entryPoints.includes('bin') || input.projectType.toLowerCase().includes('cli'))
76
+ return 'node-cli';
77
+ if (input.projectType.toLowerCase().includes('monorepo') || input.projectType.toLowerCase().includes('module'))
78
+ return 'node-library';
79
+ return 'default';
80
+ }
81
+ //# sourceMappingURL=project-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-template.js","sourceRoot":"","sources":["../../src/context/project-template.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type ProjectTemplateName } from './project-template.js';
2
+ export interface RulesGenerationOptions {
3
+ template?: ProjectTemplateName;
4
+ }
5
+ export declare function generateRulesContent(projectRoot: string, options?: RulesGenerationOptions): Promise<string>;
6
+ export declare function writeRulesContent(projectRoot: string, options?: RulesGenerationOptions): Promise<string>;
7
+ //# sourceMappingURL=rules-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules-generator.d.ts","sourceRoot":"","sources":["../../src/context/rules-generator.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC;AA2FD,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,MAAM,CAAC,CAiDjB;AAED,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,MAAM,CAAC,CAKjB"}