erosolar-cli 2.1.203 → 2.1.205

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 (52) hide show
  1. package/dist/core/agentOrchestrator.d.ts +16 -4
  2. package/dist/core/agentOrchestrator.d.ts.map +1 -1
  3. package/dist/core/agentOrchestrator.js +181 -61
  4. package/dist/core/agentOrchestrator.js.map +1 -1
  5. package/dist/core/errors/errorTypes.d.ts +0 -6
  6. package/dist/core/errors/errorTypes.d.ts.map +1 -1
  7. package/dist/core/errors/errorTypes.js +0 -26
  8. package/dist/core/errors/errorTypes.js.map +1 -1
  9. package/dist/shell/interactiveShell.d.ts +0 -5
  10. package/dist/shell/interactiveShell.d.ts.map +1 -1
  11. package/dist/shell/interactiveShell.js +45 -205
  12. package/dist/shell/interactiveShell.js.map +1 -1
  13. package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
  14. package/dist/ui/UnifiedUIRenderer.js +6 -3
  15. package/dist/ui/UnifiedUIRenderer.js.map +1 -1
  16. package/package.json +1 -1
  17. package/dist/core/LazyLoader.d.ts +0 -129
  18. package/dist/core/LazyLoader.d.ts.map +0 -1
  19. package/dist/core/LazyLoader.js +0 -240
  20. package/dist/core/LazyLoader.js.map +0 -1
  21. package/dist/core/alphaZeroOrchestrator.d.ts +0 -140
  22. package/dist/core/alphaZeroOrchestrator.d.ts.map +0 -1
  23. package/dist/core/alphaZeroOrchestrator.js +0 -418
  24. package/dist/core/alphaZeroOrchestrator.js.map +0 -1
  25. package/dist/core/checkpoint.d.ts +0 -76
  26. package/dist/core/checkpoint.d.ts.map +0 -1
  27. package/dist/core/checkpoint.js +0 -278
  28. package/dist/core/checkpoint.js.map +0 -1
  29. package/dist/core/costTracker.d.ts +0 -87
  30. package/dist/core/costTracker.d.ts.map +0 -1
  31. package/dist/core/costTracker.js +0 -285
  32. package/dist/core/costTracker.js.map +0 -1
  33. package/dist/core/isolatedVerifier.d.ts +0 -40
  34. package/dist/core/isolatedVerifier.d.ts.map +0 -1
  35. package/dist/core/isolatedVerifier.js +0 -129
  36. package/dist/core/isolatedVerifier.js.map +0 -1
  37. package/dist/core/responseVerifier.d.ts +0 -98
  38. package/dist/core/responseVerifier.d.ts.map +0 -1
  39. package/dist/core/responseVerifier.js +0 -509
  40. package/dist/core/responseVerifier.js.map +0 -1
  41. package/dist/core/securityAssessment.d.ts +0 -91
  42. package/dist/core/securityAssessment.d.ts.map +0 -1
  43. package/dist/core/securityAssessment.js +0 -580
  44. package/dist/core/securityAssessment.js.map +0 -1
  45. package/dist/core/verification.d.ts +0 -137
  46. package/dist/core/verification.d.ts.map +0 -1
  47. package/dist/core/verification.js +0 -323
  48. package/dist/core/verification.js.map +0 -1
  49. package/dist/tools/softwareEngineeringTools.d.ts +0 -7
  50. package/dist/tools/softwareEngineeringTools.d.ts.map +0 -1
  51. package/dist/tools/softwareEngineeringTools.js +0 -338
  52. package/dist/tools/softwareEngineeringTools.js.map +0 -1
@@ -1,418 +0,0 @@
1
- /**
2
- * AlphaZero Orchestrator - Complete Self-Improvement System
3
- *
4
- * This module provides the "best" AlphaZero-style self-improvement for erosolar-cli:
5
- *
6
- * 1. DUAL-RESPONSE GENERATION
7
- * - Generate 2 responses with different temperatures
8
- * - Use LLM to evaluate and pick the winner
9
- * - Learn which approach works better for task types
10
- *
11
- * 2. SELF-CRITIQUE LOOP
12
- * - Critique responses for issues
13
- * - Iteratively improve until quality threshold met
14
- * - Learn from improvements for future responses
15
- *
16
- * 3. PATTERN LEARNING
17
- * - Track tool sequences that work well
18
- * - Record failure patterns to avoid
19
- * - Store successful prompts for reuse
20
- *
21
- * 4. SOURCE IMPROVEMENT
22
- * - Detect patterns in erosolar-cli itself
23
- * - Apply validated fixes with git safety
24
- * - Rollback on any failure
25
- *
26
- * Principal Investigator: Bo Shang
27
- */
28
- import { existsSync, writeFileSync, readFileSync, mkdirSync } from 'node:fs';
29
- import { join } from 'node:path';
30
- import { homedir } from 'node:os';
31
- import { buildEvaluationPrompt, buildCritiquePrompt, buildImprovementPrompt, parseEvaluationResponse, parseCritiqueResponse, quickQualityScore, classifyTaskType, } from './alphaZeroEngine.js';
32
- import { addToolPattern, recordFailurePattern, recordPromptImprovement, getBestToolPattern, getFailurePatternsToAvoid, getLearningSummary, } from './learningPersistence.js';
33
- import { detectFailure, clearActionHistory, } from './failureRecovery.js';
34
- export const DEFAULT_ALPHAZERO_CONFIG = {
35
- dualResponseEnabled: true,
36
- temperatureConservative: 0.2,
37
- temperatureCreative: 0.7,
38
- selfCritiqueEnabled: true,
39
- maxCritiqueIterations: 2,
40
- minQualityThreshold: 75,
41
- patternLearningEnabled: true,
42
- autoApplyLearning: true,
43
- sourceImprovementEnabled: true,
44
- minValidationsForSourceFix: 3,
45
- };
46
- const STATE_FILE = join(homedir(), '.erosolar', 'learning', 'alphazero-state.json');
47
- function loadState() {
48
- try {
49
- if (existsSync(STATE_FILE)) {
50
- return JSON.parse(readFileSync(STATE_FILE, 'utf-8'));
51
- }
52
- }
53
- catch {
54
- // Ignore
55
- }
56
- return {
57
- currentSession: null,
58
- totalSessions: 0,
59
- totalImprovements: 0,
60
- avgQualityScore: 0,
61
- lastUpdated: new Date().toISOString(),
62
- };
63
- }
64
- function saveState(state) {
65
- const dir = join(homedir(), '.erosolar', 'learning');
66
- if (!existsSync(dir)) {
67
- mkdirSync(dir, { recursive: true });
68
- }
69
- state.lastUpdated = new Date().toISOString();
70
- writeFileSync(STATE_FILE, JSON.stringify(state, null, 2));
71
- }
72
- // ============================================================================
73
- // CORE ORCHESTRATOR
74
- // ============================================================================
75
- export class AlphaZeroOrchestrator {
76
- config;
77
- provider = null;
78
- state;
79
- constructor(config = {}) {
80
- this.config = { ...DEFAULT_ALPHAZERO_CONFIG, ...config };
81
- this.state = loadState();
82
- }
83
- /**
84
- * Set the LLM provider for evaluations
85
- */
86
- setProvider(provider) {
87
- this.provider = provider;
88
- }
89
- /**
90
- * Start tracking a new task
91
- */
92
- startTask(userQuery) {
93
- const sessionId = `az-${Date.now()}`;
94
- const taskType = classifyTaskType(userQuery);
95
- this.state.currentSession = {
96
- sessionId,
97
- startTime: new Date().toISOString(),
98
- taskType,
99
- userQuery,
100
- dualResponseUsed: false,
101
- critiqueIterations: 0,
102
- finalQuality: 0,
103
- toolsUsed: [],
104
- success: false,
105
- improvementsLearned: 0,
106
- };
107
- return sessionId;
108
- }
109
- /**
110
- * Record a tool call in current session
111
- */
112
- recordToolCall(toolName, success) {
113
- if (this.state.currentSession) {
114
- this.state.currentSession.toolsUsed.push(toolName);
115
- }
116
- }
117
- /**
118
- * Complete the current task and learn from it
119
- */
120
- async completeTask(response, toolCalls, success) {
121
- const session = this.state.currentSession;
122
- if (!session) {
123
- return { qualityScore: 0, learned: [], suggestions: [] };
124
- }
125
- const learned = [];
126
- const suggestions = [];
127
- // Calculate quality score
128
- const quality = quickQualityScore(response, toolCalls);
129
- session.finalQuality = quality.overall;
130
- session.success = success;
131
- // Learn from this interaction
132
- if (this.config.patternLearningEnabled) {
133
- // Record tool pattern
134
- if (toolCalls.length > 0 && success) {
135
- const pattern = {
136
- taskType: session.taskType,
137
- toolSequence: toolCalls.map(t => t.name),
138
- successRate: success ? 1.0 : 0.0,
139
- avgDuration: toolCalls.reduce((sum, t) => sum + t.duration, 0) / toolCalls.length,
140
- occurrences: 1,
141
- };
142
- addToolPattern(session.taskType, pattern);
143
- learned.push(`Learned tool pattern for ${session.taskType}: ${pattern.toolSequence.join(' → ')}`);
144
- }
145
- // Record failure if applicable
146
- if (!success) {
147
- const failure = detectFailure(response, { toolCalls, userMessage: session.userQuery });
148
- if (failure) {
149
- recordFailurePattern(session.taskType, toolCalls.map(t => t.name), failure.message, failure.message.slice(0, 100));
150
- learned.push(`Learned to avoid: ${failure.message.slice(0, 50)}...`);
151
- }
152
- }
153
- }
154
- // Get suggestions for next time
155
- const bestPattern = getBestToolPattern(session.taskType);
156
- if (bestPattern && !success) {
157
- suggestions.push(`Try using: ${bestPattern.toolSequence.join(' → ')} (${Math.round(bestPattern.successRate * 100)}% success rate)`);
158
- }
159
- const toAvoid = getFailurePatternsToAvoid(session.taskType);
160
- for (const pattern of toAvoid.slice(0, 2)) {
161
- suggestions.push(`Avoid: ${pattern.description.slice(0, 50)}...`);
162
- }
163
- // Update state
164
- this.state.totalSessions++;
165
- this.state.totalImprovements += learned.length;
166
- this.state.avgQualityScore = ((this.state.avgQualityScore * (this.state.totalSessions - 1) + quality.overall) /
167
- this.state.totalSessions);
168
- // Clear action history on success
169
- if (success) {
170
- clearActionHistory();
171
- }
172
- saveState(this.state);
173
- this.state.currentSession = null;
174
- return {
175
- qualityScore: quality.overall,
176
- learned,
177
- suggestions,
178
- };
179
- }
180
- // ============================================================================
181
- // DUAL RESPONSE GENERATION
182
- // ============================================================================
183
- /**
184
- * Generate two responses and pick the better one
185
- */
186
- async generateDualResponse(messages, userQuery) {
187
- if (!this.config.dualResponseEnabled || !this.provider) {
188
- return { winningResponse: '', evaluation: null, used: false };
189
- }
190
- try {
191
- // Generate response A (conservative)
192
- const messagesA = [...messages];
193
- const responseA = await this.provider.generate(messagesA, []);
194
- const contentA = responseA.content ?? '';
195
- // Generate response B (creative)
196
- const messagesB = [...messages];
197
- const responseB = await this.provider.generate(messagesB, []);
198
- const contentB = responseB.content ?? '';
199
- // If both responses are similar, just return A
200
- if (this.responsesAreSimilar(contentA, contentB)) {
201
- return { winningResponse: contentA, evaluation: null, used: false };
202
- }
203
- // Evaluate which is better
204
- const evaluation = await this.evaluateResponses(userQuery, contentA, contentB);
205
- if (this.state.currentSession) {
206
- this.state.currentSession.dualResponseUsed = true;
207
- }
208
- if (evaluation) {
209
- const winner = evaluation.qualityScoreA >= evaluation.qualityScoreB ? contentA : contentB;
210
- return { winningResponse: winner, evaluation, used: true };
211
- }
212
- // Default to A if evaluation fails
213
- return { winningResponse: contentA, evaluation: null, used: true };
214
- }
215
- catch (error) {
216
- console.warn('[AlphaZero] Dual response generation failed:', error);
217
- return { winningResponse: '', evaluation: null, used: false };
218
- }
219
- }
220
- responsesAreSimilar(a, b) {
221
- // Simple similarity check - if >80% of words match
222
- const wordsA = new Set(a.toLowerCase().split(/\s+/));
223
- const wordsB = new Set(b.toLowerCase().split(/\s+/));
224
- const intersection = new Set([...wordsA].filter(x => wordsB.has(x)));
225
- const union = new Set([...wordsA, ...wordsB]);
226
- return intersection.size / union.size > 0.8;
227
- }
228
- async evaluateResponses(userQuery, responseA, responseB) {
229
- if (!this.provider)
230
- return null;
231
- try {
232
- const evalPrompt = buildEvaluationPrompt(userQuery, responseA, responseB);
233
- const evalResponse = await this.provider.generate([{ role: 'user', content: evalPrompt }], []);
234
- return parseEvaluationResponse(evalResponse.content ?? '');
235
- }
236
- catch {
237
- return null;
238
- }
239
- }
240
- // ============================================================================
241
- // SELF-CRITIQUE LOOP
242
- // ============================================================================
243
- /**
244
- * Critique and iteratively improve a response
245
- */
246
- async selfCritiqueLoop(response, userQuery, toolCalls) {
247
- if (!this.config.selfCritiqueEnabled || !this.provider) {
248
- return {
249
- improvedResponse: response,
250
- iterations: 0,
251
- issues: [],
252
- qualityImprovement: 0,
253
- };
254
- }
255
- let currentResponse = response;
256
- let allIssues = [];
257
- let iterations = 0;
258
- const initialQuality = quickQualityScore(response, toolCalls).overall;
259
- while (iterations < this.config.maxCritiqueIterations) {
260
- // Critique the current response
261
- const issues = await this.critiqueResponse(userQuery, currentResponse, toolCalls);
262
- if (issues.length === 0) {
263
- break; // No issues found, we're done
264
- }
265
- // Only fix critical and major issues
266
- const significantIssues = issues.filter(i => i.severity !== 'minor');
267
- if (significantIssues.length === 0) {
268
- break;
269
- }
270
- allIssues = [...allIssues, ...significantIssues];
271
- // Generate improved response
272
- const improved = await this.improveResponse(userQuery, currentResponse, significantIssues);
273
- if (!improved || improved === currentResponse) {
274
- break; // No improvement possible
275
- }
276
- currentResponse = improved;
277
- iterations++;
278
- // Check if we've reached quality threshold
279
- const newQuality = quickQualityScore(currentResponse, toolCalls).overall;
280
- if (newQuality >= this.config.minQualityThreshold) {
281
- break;
282
- }
283
- }
284
- if (this.state.currentSession) {
285
- this.state.currentSession.critiqueIterations = iterations;
286
- }
287
- const finalQuality = quickQualityScore(currentResponse, toolCalls).overall;
288
- // Learn from the improvement
289
- if (iterations > 0 && this.config.patternLearningEnabled) {
290
- recordPromptImprovement('error-recovery', // Category for self-critique improvements
291
- response.slice(0, 500), currentResponse.slice(0, 500), finalQuality - initialQuality);
292
- }
293
- return {
294
- improvedResponse: currentResponse,
295
- iterations,
296
- issues: allIssues,
297
- qualityImprovement: finalQuality - initialQuality,
298
- };
299
- }
300
- async critiqueResponse(userQuery, response, toolCalls) {
301
- if (!this.provider)
302
- return [];
303
- try {
304
- const critiquePrompt = buildCritiquePrompt(userQuery, response, toolCalls);
305
- const critiqueResponse = await this.provider.generate([{ role: 'user', content: critiquePrompt }], []);
306
- return parseCritiqueResponse(critiqueResponse.content ?? '');
307
- }
308
- catch {
309
- return [];
310
- }
311
- }
312
- async improveResponse(userQuery, response, issues) {
313
- if (!this.provider)
314
- return null;
315
- try {
316
- const improvePrompt = buildImprovementPrompt(userQuery, response, issues);
317
- const improved = await this.provider.generate([{ role: 'user', content: improvePrompt }], []);
318
- return improved.content ?? null;
319
- }
320
- catch {
321
- return null;
322
- }
323
- }
324
- // ============================================================================
325
- // LEARNING AND SUGGESTIONS
326
- // ============================================================================
327
- /**
328
- * Get recommended tools for a task type
329
- */
330
- getRecommendedTools(taskType) {
331
- const pattern = getBestToolPattern(taskType);
332
- return pattern?.toolSequence ?? null;
333
- }
334
- /**
335
- * Get patterns to avoid for a task type
336
- */
337
- getPatternsToAvoid(taskType) {
338
- const patterns = getFailurePatternsToAvoid(taskType);
339
- return patterns.map(p => p.description);
340
- }
341
- /**
342
- * Get comprehensive learning summary
343
- */
344
- getSummary() {
345
- return {
346
- sessions: this.state.totalSessions,
347
- improvements: this.state.totalImprovements,
348
- avgQuality: Math.round(this.state.avgQualityScore),
349
- learningData: getLearningSummary(),
350
- };
351
- }
352
- // ============================================================================
353
- // STATUS AND CONFIGURATION
354
- // ============================================================================
355
- /**
356
- * Get current configuration
357
- */
358
- getConfig() {
359
- return { ...this.config };
360
- }
361
- /**
362
- * Update configuration
363
- */
364
- updateConfig(updates) {
365
- this.config = { ...this.config, ...updates };
366
- }
367
- /**
368
- * Get formatted status for display
369
- */
370
- getStatus() {
371
- const summary = this.getSummary();
372
- const lines = [];
373
- lines.push('═══════════════════════════════════════════');
374
- lines.push(' 🧠 AlphaZero Self-Improvement Status');
375
- lines.push('═══════════════════════════════════════════');
376
- lines.push('');
377
- lines.push('📊 Session Statistics:');
378
- lines.push(` Total Sessions: ${summary.sessions}`);
379
- lines.push(` Improvements Made: ${summary.improvements}`);
380
- lines.push(` Average Quality: ${summary.avgQuality}/100`);
381
- lines.push('');
382
- lines.push('🎯 Learning Data:');
383
- lines.push(` Tool Patterns: ${summary.learningData.toolPatterns.totalPatterns}`);
384
- lines.push(` Failure Patterns: ${summary.learningData.failurePatterns.totalPatterns}`);
385
- lines.push(` Prompt Improvements: ${summary.learningData.promptImprovements.totalImprovements}`);
386
- lines.push('');
387
- lines.push('⚙️ Configuration:');
388
- lines.push(` Dual Response: ${this.config.dualResponseEnabled ? '✅ Enabled' : '❌ Disabled'}`);
389
- lines.push(` Self-Critique: ${this.config.selfCritiqueEnabled ? '✅ Enabled' : '❌ Disabled'}`);
390
- lines.push(` Pattern Learning: ${this.config.patternLearningEnabled ? '✅ Enabled' : '❌ Disabled'}`);
391
- lines.push(` Source Improvement: ${this.config.sourceImprovementEnabled ? '✅ Enabled' : '❌ Disabled'}`);
392
- lines.push('');
393
- lines.push('═══════════════════════════════════════════');
394
- return lines.join('\n');
395
- }
396
- }
397
- // ============================================================================
398
- // SINGLETON INSTANCE
399
- // ============================================================================
400
- let globalOrchestrator = null;
401
- /**
402
- * Get the global AlphaZero orchestrator instance
403
- */
404
- export function getAlphaZeroOrchestrator() {
405
- if (!globalOrchestrator) {
406
- globalOrchestrator = new AlphaZeroOrchestrator();
407
- }
408
- return globalOrchestrator;
409
- }
410
- /**
411
- * Initialize with a provider
412
- */
413
- export function initializeAlphaZero(provider) {
414
- const orchestrator = getAlphaZeroOrchestrator();
415
- orchestrator.setProvider(provider);
416
- return orchestrator;
417
- }
418
- //# sourceMappingURL=alphaZeroOrchestrator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"alphaZeroOrchestrator.js","sourceRoot":"","sources":["../../src/core/alphaZeroOrchestrator.ts"],"names":[],"mappings":"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"}
@@ -1,76 +0,0 @@
1
- /**
2
- * Checkpoint System - Erosolar-CLI Style
3
- *
4
- * Automatic checkpointing before code changes with instant rewind capability.
5
- * Saves both code state and conversation state for full restoration.
6
- *
7
- * Features:
8
- * - Automatic checkpoint creation before file modifications
9
- * - Rewind to any previous checkpoint (code only, conversation only, or both)
10
- * - Efficient diff-based storage to minimize disk usage
11
- * - Integration with session management
12
- */
13
- export interface FileSnapshot {
14
- path: string;
15
- content: string;
16
- hash: string;
17
- mtime: number;
18
- }
19
- export interface ConversationSnapshot {
20
- messages: Array<{
21
- role: 'user' | 'assistant' | 'system';
22
- content: string;
23
- timestamp: number;
24
- }>;
25
- contextTokens: number;
26
- }
27
- export interface Checkpoint {
28
- id: string;
29
- timestamp: number;
30
- sessionId: string;
31
- description: string;
32
- trigger: 'auto' | 'manual' | 'pre-edit' | 'pre-write' | 'pre-delete';
33
- files: FileSnapshot[];
34
- conversation?: ConversationSnapshot;
35
- metadata: {
36
- toolName?: string;
37
- filePath?: string;
38
- changeType?: 'edit' | 'write' | 'delete';
39
- };
40
- }
41
- export interface RewindOptions {
42
- mode: 'code-only' | 'conversation-only' | 'both';
43
- checkpointId: string;
44
- }
45
- export interface CheckpointManager {
46
- createCheckpoint(options: CreateCheckpointOptions): Promise<Checkpoint>;
47
- getCheckpoints(sessionId: string): Checkpoint[];
48
- getCheckpoint(id: string): Checkpoint | null;
49
- rewind(options: RewindOptions): Promise<RewindResult>;
50
- cleanupOldCheckpoints(): void;
51
- }
52
- export interface CreateCheckpointOptions {
53
- sessionId: string;
54
- description: string;
55
- trigger: Checkpoint['trigger'];
56
- files?: string[];
57
- conversation?: ConversationSnapshot;
58
- metadata?: Checkpoint['metadata'];
59
- }
60
- export interface RewindResult {
61
- success: boolean;
62
- checkpoint: Checkpoint;
63
- restoredFiles: string[];
64
- restoredConversation: boolean;
65
- errors: string[];
66
- }
67
- /**
68
- * Create a checkpoint manager for a working directory
69
- */
70
- export declare function createCheckpointManager(workingDir: string): CheckpointManager;
71
- /**
72
- * Format checkpoint for display
73
- */
74
- export declare function formatCheckpointForDisplay(checkpoint: Checkpoint): string;
75
- export declare function getCheckpointManager(workingDir?: string): CheckpointManager;
76
- //# sourceMappingURL=checkpoint.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../src/core/checkpoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAWH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;QACtC,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC;IACrE,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,QAAQ,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;KAC1C,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,GAAG,mBAAmB,GAAG,MAAM,CAAC;IACjD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACxE,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE,CAAC;IAChD,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;IAC7C,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACtD,qBAAqB,IAAI,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAwDD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,CA+L7E;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAkBzE;AAOD,wBAAgB,oBAAoB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAK3E"}