agentic-qe 2.3.2 → 2.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +43 -0
- package/README.md +1 -1
- package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.js +53 -27
- package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.d.ts +5 -0
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +20 -5
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/agents/QualityGateAgent.js +44 -6
- package/dist/agents/QualityGateAgent.js.map +1 -1
- package/dist/cli/index.js +0 -0
- package/dist/cli/init/database-init.js +5 -0
- package/dist/cli/init/database-init.js.map +1 -1
- package/dist/learning/PerformanceTracker.d.ts +9 -0
- package/dist/learning/PerformanceTracker.d.ts.map +1 -1
- package/dist/learning/PerformanceTracker.js +26 -2
- package/dist/learning/PerformanceTracker.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/package.json +3 -1
- package/scripts/README.md +352 -0
- package/scripts/hooks/capture-task-learning.js +191 -0
- package/scripts/hooks/emit-task-complete.sh +35 -0
- package/scripts/hooks/emit-task-spawn.sh +27 -0
- package/.claude/agents/failing-agent.json +0 -9
- package/.claude/agents/test-agent.json +0 -9
- package/dist/App.d.ts +0 -5
- package/dist/App.d.ts.map +0 -1
- package/dist/App.js +0 -15
- package/dist/App.js.map +0 -1
- package/dist/cli/init/utils.d.ts +0 -183
- package/dist/cli/init/utils.d.ts.map +0 -1
- package/dist/cli/init/utils.js +0 -354
- package/dist/cli/init/utils.js.map +0 -1
- package/dist/components/Dashboard/Dashboard.d.ts +0 -4
- package/dist/components/Dashboard/Dashboard.d.ts.map +0 -1
- package/dist/components/Dashboard/Dashboard.js +0 -148
- package/dist/components/Dashboard/Dashboard.js.map +0 -1
- package/dist/components/Dashboard/DashboardHeader.d.ts +0 -4
- package/dist/components/Dashboard/DashboardHeader.d.ts.map +0 -1
- package/dist/components/Dashboard/DashboardHeader.js +0 -138
- package/dist/components/Dashboard/DashboardHeader.js.map +0 -1
- package/dist/contexts/DashboardContext.d.ts +0 -41
- package/dist/contexts/DashboardContext.d.ts.map +0 -1
- package/dist/contexts/DashboardContext.js +0 -187
- package/dist/contexts/DashboardContext.js.map +0 -1
- package/dist/core/transport/QUICTransport.d.ts +0 -320
- package/dist/core/transport/QUICTransport.d.ts.map +0 -1
- package/dist/core/transport/QUICTransport.js +0 -711
- package/dist/core/transport/QUICTransport.js.map +0 -1
- package/dist/learning/LearningPersistenceAdapter.d.ts +0 -84
- package/dist/learning/LearningPersistenceAdapter.d.ts.map +0 -1
- package/dist/learning/LearningPersistenceAdapter.js +0 -202
- package/dist/learning/LearningPersistenceAdapter.js.map +0 -1
- package/dist/learning/algorithms/QLearning.d.ts +0 -68
- package/dist/learning/algorithms/QLearning.d.ts.map +0 -1
- package/dist/learning/algorithms/QLearning.js +0 -116
- package/dist/learning/algorithms/QLearning.js.map +0 -1
- package/dist/mcp/handlers/advanced/requirements-generate-bdd.d.ts +0 -7
- package/dist/mcp/handlers/advanced/requirements-generate-bdd.d.ts.map +0 -1
- package/dist/mcp/handlers/advanced/requirements-generate-bdd.js +0 -267
- package/dist/mcp/handlers/advanced/requirements-generate-bdd.js.map +0 -1
- package/dist/mcp/handlers/advanced/requirements-validate.d.ts +0 -7
- package/dist/mcp/handlers/advanced/requirements-validate.d.ts.map +0 -1
- package/dist/mcp/handlers/advanced/requirements-validate.js +0 -175
- package/dist/mcp/handlers/advanced/requirements-validate.js.map +0 -1
- package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.d.ts +0 -15
- package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.d.ts.map +0 -1
- package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.js +0 -43
- package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.js.map +0 -1
- package/dist/mcp/handlers/analysis/performanceBenchmarkRun.d.ts +0 -58
- package/dist/mcp/handlers/analysis/performanceBenchmarkRun.d.ts.map +0 -1
- package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js +0 -188
- package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js.map +0 -1
- package/dist/mcp/handlers/optimize-tests.d.ts +0 -219
- package/dist/mcp/handlers/optimize-tests.d.ts.map +0 -1
- package/dist/mcp/handlers/optimize-tests.js +0 -533
- package/dist/mcp/handlers/optimize-tests.js.map +0 -1
- package/dist/mcp/handlers/predict-defects.d.ts +0 -194
- package/dist/mcp/handlers/predict-defects.d.ts.map +0 -1
- package/dist/mcp/handlers/predict-defects.js +0 -722
- package/dist/mcp/handlers/predict-defects.js.map +0 -1
- package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts +0 -199
- package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts.map +0 -1
- package/dist/mcp/handlers/prediction/regression-risk-analyze.js +0 -471
- package/dist/mcp/handlers/prediction/regression-risk-analyze.js.map +0 -1
- package/dist/mcp/handlers/quality/quality-decision-make.d.ts +0 -104
- package/dist/mcp/handlers/quality/quality-decision-make.d.ts.map +0 -1
- package/dist/mcp/handlers/quality/quality-decision-make.js +0 -408
- package/dist/mcp/handlers/quality/quality-decision-make.js.map +0 -1
- package/dist/mcp/handlers/quality/quality-gate-execute.d.ts +0 -160
- package/dist/mcp/handlers/quality/quality-gate-execute.d.ts.map +0 -1
- package/dist/mcp/handlers/quality/quality-gate-execute.js +0 -412
- package/dist/mcp/handlers/quality/quality-gate-execute.js.map +0 -1
- package/dist/mcp/handlers/quality/quality-policy-check.d.ts +0 -163
- package/dist/mcp/handlers/quality/quality-policy-check.d.ts.map +0 -1
- package/dist/mcp/handlers/quality/quality-policy-check.js +0 -455
- package/dist/mcp/handlers/quality/quality-policy-check.js.map +0 -1
- package/dist/mcp/handlers/quality/quality-risk-assess.d.ts +0 -123
- package/dist/mcp/handlers/quality/quality-risk-assess.d.ts.map +0 -1
- package/dist/mcp/handlers/quality/quality-risk-assess.js +0 -522
- package/dist/mcp/handlers/quality/quality-risk-assess.js.map +0 -1
- package/dist/mcp/handlers/quality/quality-validate-metrics.d.ts +0 -117
- package/dist/mcp/handlers/quality/quality-validate-metrics.d.ts.map +0 -1
- package/dist/mcp/handlers/quality/quality-validate-metrics.js +0 -288
- package/dist/mcp/handlers/quality/quality-validate-metrics.js.map +0 -1
- package/dist/mcp/handlers/quality-analyze.d.ts +0 -279
- package/dist/mcp/handlers/quality-analyze.d.ts.map +0 -1
- package/dist/mcp/handlers/quality-analyze.js +0 -720
- package/dist/mcp/handlers/quality-analyze.js.map +0 -1
- package/dist/mcp/handlers/security/check-authz.d.ts +0 -152
- package/dist/mcp/handlers/security/check-authz.d.ts.map +0 -1
- package/dist/mcp/handlers/security/check-authz.js +0 -434
- package/dist/mcp/handlers/security/check-authz.js.map +0 -1
- package/dist/mcp/handlers/security/scan-dependencies.d.ts +0 -148
- package/dist/mcp/handlers/security/scan-dependencies.d.ts.map +0 -1
- package/dist/mcp/handlers/security/scan-dependencies.js +0 -354
- package/dist/mcp/handlers/security/scan-dependencies.js.map +0 -1
- package/dist/mcp/handlers/security/validate-auth.d.ts +0 -128
- package/dist/mcp/handlers/security/validate-auth.d.ts.map +0 -1
- package/dist/mcp/handlers/security/validate-auth.js +0 -294
- package/dist/mcp/handlers/security/validate-auth.js.map +0 -1
- package/dist/mcp/handlers/test-generate.d.ts +0 -107
- package/dist/mcp/handlers/test-generate.d.ts.map +0 -1
- package/dist/mcp/handlers/test-generate.js +0 -454
- package/dist/mcp/handlers/test-generate.js.map +0 -1
|
@@ -1,533 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Test Optimization Handler
|
|
4
|
-
*
|
|
5
|
-
* Handles test suite optimization using sublinear algorithms.
|
|
6
|
-
* Integrates with sublinear-core for mathematical optimization.
|
|
7
|
-
*
|
|
8
|
-
* @version 1.0.0
|
|
9
|
-
* @author Agentic QE Team
|
|
10
|
-
*/
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.OptimizeTestsHandler = void 0;
|
|
13
|
-
const base_handler_js_1 = require("./base-handler.js");
|
|
14
|
-
const SecureRandom_js_1 = require("../../utils/SecureRandom.js");
|
|
15
|
-
class OptimizeTestsHandler extends base_handler_js_1.BaseHandler {
|
|
16
|
-
constructor(registry, hookExecutor) {
|
|
17
|
-
super();
|
|
18
|
-
this.optimizationHistory = new Map();
|
|
19
|
-
this.algorithms = new Map();
|
|
20
|
-
this.registry = registry;
|
|
21
|
-
this.hookExecutor = hookExecutor;
|
|
22
|
-
this.initializeAlgorithms();
|
|
23
|
-
}
|
|
24
|
-
async handle(args) {
|
|
25
|
-
const requestId = this.generateRequestId();
|
|
26
|
-
this.log('info', 'Starting test optimization', { requestId, optimization: args.optimization });
|
|
27
|
-
try {
|
|
28
|
-
// Execute pre-task hook
|
|
29
|
-
await this.hookExecutor.executePreTask({
|
|
30
|
-
description: `Optimize tests using ${args.optimization.algorithm} algorithm targeting ${args.optimization.targetMetric}`,
|
|
31
|
-
agentType: 'test-optimizer'
|
|
32
|
-
});
|
|
33
|
-
// Validate required parameters
|
|
34
|
-
this.validateRequired(args, ['optimization']);
|
|
35
|
-
this.validateOptimizationSpec(args.optimization);
|
|
36
|
-
// Spawn test optimization agent via registry
|
|
37
|
-
const { id: agentId } = await this.registry.spawnAgent('test-optimizer', {} // Agent config - using defaults
|
|
38
|
-
);
|
|
39
|
-
const { result: optimization, executionTime } = await this.measureExecutionTime(() => this.optimizeTestSuite(args));
|
|
40
|
-
// Execute post-task hook with results
|
|
41
|
-
await this.hookExecutor.executePostTask({
|
|
42
|
-
taskId: agentId,
|
|
43
|
-
results: {
|
|
44
|
-
optimizationId: optimization.id,
|
|
45
|
-
algorithm: optimization.algorithm,
|
|
46
|
-
improvement: optimization.optimization.improvements[optimization.targetMetric],
|
|
47
|
-
selectedTests: optimization.optimization.selectedTests.length,
|
|
48
|
-
performance: optimization.performance
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
this.log('info', `Test optimization completed in ${executionTime.toFixed(2)}ms`, {
|
|
52
|
-
optimizationId: optimization.id,
|
|
53
|
-
algorithm: optimization.algorithm,
|
|
54
|
-
improvement: optimization.optimization.improvements[optimization.targetMetric]
|
|
55
|
-
});
|
|
56
|
-
return this.createSuccessResponse(optimization, requestId);
|
|
57
|
-
}
|
|
58
|
-
catch (error) {
|
|
59
|
-
this.log('error', 'Test optimization failed', {
|
|
60
|
-
error: error instanceof Error ? error.message : String(error)
|
|
61
|
-
});
|
|
62
|
-
return this.createErrorResponse(error instanceof Error ? error.message : 'Test optimization failed', requestId);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
initializeAlgorithms() {
|
|
66
|
-
// Sublinear algorithm implementation
|
|
67
|
-
this.algorithms.set('sublinear', {
|
|
68
|
-
name: 'Sublinear Test Selection',
|
|
69
|
-
complexity: 'O(log n)',
|
|
70
|
-
description: 'Uses Johnson-Lindenstrauss dimension reduction for optimal test selection',
|
|
71
|
-
parameters: {
|
|
72
|
-
dimensionReduction: true,
|
|
73
|
-
spectralSparsification: true,
|
|
74
|
-
convergenceThreshold: 0.001
|
|
75
|
-
},
|
|
76
|
-
strengths: ['Low complexity', 'Scalable', 'Mathematically proven'],
|
|
77
|
-
limitations: ['Requires large test suites', 'Approximation algorithm']
|
|
78
|
-
});
|
|
79
|
-
// Johnson-Lindenstrauss dimension reduction
|
|
80
|
-
this.algorithms.set('johnson-lindenstrauss', {
|
|
81
|
-
name: 'Johnson-Lindenstrauss Embedding',
|
|
82
|
-
complexity: 'O(log²n)',
|
|
83
|
-
description: 'Reduces high-dimensional test space while preserving distances',
|
|
84
|
-
parameters: {
|
|
85
|
-
targetDimension: 'auto',
|
|
86
|
-
distortionFactor: 0.1,
|
|
87
|
-
randomProjection: true
|
|
88
|
-
},
|
|
89
|
-
strengths: ['Preserves test relationships', 'Reduces complexity', 'Parallelizable'],
|
|
90
|
-
limitations: ['Probabilistic guarantees', 'Memory overhead']
|
|
91
|
-
});
|
|
92
|
-
// Temporal advantage algorithm
|
|
93
|
-
this.algorithms.set('temporal-advantage', {
|
|
94
|
-
name: 'Temporal Computational Lead',
|
|
95
|
-
complexity: 'O(n log n)',
|
|
96
|
-
description: 'Optimizes for temporal advantage in distributed testing',
|
|
97
|
-
parameters: {
|
|
98
|
-
lightSpeedCalculation: true,
|
|
99
|
-
networkLatency: true,
|
|
100
|
-
distributedExecution: true
|
|
101
|
-
},
|
|
102
|
-
strengths: ['Future-proof', 'Distributed optimization', 'Real-time benefits'],
|
|
103
|
-
limitations: ['Network dependent', 'Complex setup']
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
validateOptimizationSpec(optimization) {
|
|
107
|
-
const validAlgorithms = ['sublinear', 'johnson-lindenstrauss', 'temporal-advantage'];
|
|
108
|
-
if (!validAlgorithms.includes(optimization.algorithm)) {
|
|
109
|
-
throw new Error(`Invalid algorithm: ${optimization.algorithm}. Must be one of: ${validAlgorithms.join(', ')}`);
|
|
110
|
-
}
|
|
111
|
-
const validTargetMetrics = ['execution-time', 'coverage', 'cost', 'reliability'];
|
|
112
|
-
if (!validTargetMetrics.includes(optimization.targetMetric)) {
|
|
113
|
-
throw new Error(`Invalid target metric: ${optimization.targetMetric}. Must be one of: ${validTargetMetrics.join(', ')}`);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
async optimizeTestSuite(args) {
|
|
117
|
-
const optimizationId = `optimization-${Date.now()}-${SecureRandom_js_1.SecureRandom.generateId(3)}`;
|
|
118
|
-
this.log('info', 'Performing test suite optimization', {
|
|
119
|
-
optimizationId,
|
|
120
|
-
algorithm: args.optimization.algorithm
|
|
121
|
-
});
|
|
122
|
-
// Analyze original test suite
|
|
123
|
-
const originalSuite = await this.analyzeTestSuite(args.testSuite);
|
|
124
|
-
// Apply optimization algorithm
|
|
125
|
-
const optimizationResults = await this.applyOptimizationAlgorithm(args.optimization, originalSuite);
|
|
126
|
-
// Generate optimized suite metrics
|
|
127
|
-
const optimizedSuite = this.calculateOptimizedMetrics(originalSuite, optimizationResults);
|
|
128
|
-
// Generate recommendations
|
|
129
|
-
const recommendations = await this.generateOptimizationRecommendations(originalSuite, optimizedSuite, optimizationResults);
|
|
130
|
-
// Create implementation plan
|
|
131
|
-
const implementation = this.createImplementationPlan(optimizationResults, recommendations);
|
|
132
|
-
// Calculate performance metrics
|
|
133
|
-
const performance = this.calculateOptimizationPerformance(args.optimization, originalSuite, optimizedSuite);
|
|
134
|
-
const testOptimization = {
|
|
135
|
-
id: optimizationId,
|
|
136
|
-
algorithm: args.optimization.algorithm,
|
|
137
|
-
targetMetric: args.optimization.targetMetric,
|
|
138
|
-
optimizedAt: new Date().toISOString(),
|
|
139
|
-
originalSuite,
|
|
140
|
-
optimizedSuite,
|
|
141
|
-
optimization: optimizationResults,
|
|
142
|
-
recommendations,
|
|
143
|
-
implementation,
|
|
144
|
-
performance
|
|
145
|
-
};
|
|
146
|
-
// Store optimization
|
|
147
|
-
this.optimizationHistory.set(optimizationId, testOptimization);
|
|
148
|
-
return testOptimization;
|
|
149
|
-
}
|
|
150
|
-
async analyzeTestSuite(testSuite) {
|
|
151
|
-
// Simulate test suite analysis
|
|
152
|
-
await new Promise(resolve => setTimeout(resolve, 100));
|
|
153
|
-
const size = testSuite?.size || Math.floor(SecureRandom_js_1.SecureRandom.randomFloat() * 1000 + 100); // 100-1100 tests
|
|
154
|
-
return {
|
|
155
|
-
totalTests: size,
|
|
156
|
-
executionTime: size * (SecureRandom_js_1.SecureRandom.randomFloat() * 5 + 2), // 2-7 seconds per test
|
|
157
|
-
coverage: SecureRandom_js_1.SecureRandom.randomFloat() * 20 + 75, // 75-95%
|
|
158
|
-
cost: size * (SecureRandom_js_1.SecureRandom.randomFloat() * 0.5 + 0.1), // $0.10-$0.60 per test
|
|
159
|
-
reliability: SecureRandom_js_1.SecureRandom.randomFloat() * 10 + 90, // 90-100%
|
|
160
|
-
characteristics: this.analyzeTestCharacteristics(size)
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
analyzeTestCharacteristics(size) {
|
|
164
|
-
return {
|
|
165
|
-
complexityDistribution: {
|
|
166
|
-
'low': SecureRandom_js_1.SecureRandom.randomFloat() * 0.4 + 0.3, // 30-70%
|
|
167
|
-
'medium': SecureRandom_js_1.SecureRandom.randomFloat() * 0.3 + 0.2, // 20-50%
|
|
168
|
-
'high': SecureRandom_js_1.SecureRandom.randomFloat() * 0.2 + 0.05 // 5-25%
|
|
169
|
-
},
|
|
170
|
-
typeDistribution: {
|
|
171
|
-
'unit': SecureRandom_js_1.SecureRandom.randomFloat() * 0.3 + 0.5, // 50-80%
|
|
172
|
-
'integration': SecureRandom_js_1.SecureRandom.randomFloat() * 0.2 + 0.15, // 15-35%
|
|
173
|
-
'e2e': SecureRandom_js_1.SecureRandom.randomFloat() * 0.1 + 0.05 // 5-15%
|
|
174
|
-
},
|
|
175
|
-
dependencyGraph: this.generateDependencyGraph(size),
|
|
176
|
-
parallelizationPotential: SecureRandom_js_1.SecureRandom.randomFloat() * 0.4 + 0.6 // 60-100%
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
generateDependencyGraph(size) {
|
|
180
|
-
const nodes = [];
|
|
181
|
-
const nodeCount = Math.min(size, 50); // Limit for simulation
|
|
182
|
-
for (let i = 0; i < nodeCount; i++) {
|
|
183
|
-
const dependencies = [];
|
|
184
|
-
const depCount = Math.floor(SecureRandom_js_1.SecureRandom.randomFloat() * 3); // 0-2 dependencies
|
|
185
|
-
for (let j = 0; j < depCount && j < i; j++) {
|
|
186
|
-
dependencies.push(`test-${j}`);
|
|
187
|
-
}
|
|
188
|
-
nodes.push({
|
|
189
|
-
testId: `test-${i}`,
|
|
190
|
-
dependencies,
|
|
191
|
-
weight: SecureRandom_js_1.SecureRandom.randomFloat() * 10 + 1 // 1-11
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
return nodes;
|
|
195
|
-
}
|
|
196
|
-
async applyOptimizationAlgorithm(optimization, originalSuite) {
|
|
197
|
-
const algorithm = this.algorithms.get(optimization.algorithm);
|
|
198
|
-
this.log('info', 'Applying optimization algorithm', {
|
|
199
|
-
algorithm: algorithm.name,
|
|
200
|
-
complexity: algorithm.complexity
|
|
201
|
-
});
|
|
202
|
-
// Simulate algorithm execution
|
|
203
|
-
const executionTime = this.simulateAlgorithmExecution(algorithm, originalSuite);
|
|
204
|
-
await new Promise(resolve => setTimeout(resolve, Math.min(executionTime, 1000))); // Cap simulation time
|
|
205
|
-
// Calculate improvements
|
|
206
|
-
const improvements = this.calculateImprovements(optimization, originalSuite);
|
|
207
|
-
// Select optimal tests
|
|
208
|
-
const selectedTests = this.selectOptimalTests(originalSuite, optimization, improvements);
|
|
209
|
-
// Create execution plan
|
|
210
|
-
const executionPlan = this.createExecutionPlan(selectedTests, originalSuite);
|
|
211
|
-
// Calculate algorithm metrics
|
|
212
|
-
const algorithmMetrics = this.calculateAlgorithmMetrics(algorithm, originalSuite, executionTime);
|
|
213
|
-
// Identify tradeoffs
|
|
214
|
-
const tradeoffs = this.identifyTradeoffs(optimization, improvements);
|
|
215
|
-
return {
|
|
216
|
-
improvements,
|
|
217
|
-
selectedTests,
|
|
218
|
-
executionPlan,
|
|
219
|
-
algorithmMetrics,
|
|
220
|
-
tradeoffs
|
|
221
|
-
};
|
|
222
|
-
}
|
|
223
|
-
simulateAlgorithmExecution(algorithm, suite) {
|
|
224
|
-
// Simulate execution time based on complexity
|
|
225
|
-
const baseTime = 100; // Base 100ms
|
|
226
|
-
const complexityMultiplier = algorithm.complexity.includes('log') ? 1.5 : 2.0;
|
|
227
|
-
const sizeMultiplier = Math.log(suite.totalTests + 1);
|
|
228
|
-
return baseTime * complexityMultiplier * sizeMultiplier;
|
|
229
|
-
}
|
|
230
|
-
calculateImprovements(optimization, originalSuite) {
|
|
231
|
-
const targetMetric = optimization.targetMetric;
|
|
232
|
-
const constraints = optimization.constraints || {};
|
|
233
|
-
const improvements = {};
|
|
234
|
-
// Calculate improvement for target metric
|
|
235
|
-
switch (targetMetric) {
|
|
236
|
-
case 'execution-time':
|
|
237
|
-
improvements['execution-time'] = SecureRandom_js_1.SecureRandom.randomFloat() * 40 + 20; // 20-60% improvement
|
|
238
|
-
improvements['coverage'] = -(SecureRandom_js_1.SecureRandom.randomFloat() * 5); // Slight coverage loss
|
|
239
|
-
break;
|
|
240
|
-
case 'coverage':
|
|
241
|
-
improvements['coverage'] = SecureRandom_js_1.SecureRandom.randomFloat() * 10 + 5; // 5-15% improvement
|
|
242
|
-
improvements['execution-time'] = SecureRandom_js_1.SecureRandom.randomFloat() * 10 + 5; // Some time increase
|
|
243
|
-
break;
|
|
244
|
-
case 'cost':
|
|
245
|
-
improvements['cost'] = SecureRandom_js_1.SecureRandom.randomFloat() * 30 + 15; // 15-45% cost reduction
|
|
246
|
-
improvements['execution-time'] = SecureRandom_js_1.SecureRandom.randomFloat() * 20 + 10; // Time improvement
|
|
247
|
-
break;
|
|
248
|
-
case 'reliability':
|
|
249
|
-
improvements['reliability'] = SecureRandom_js_1.SecureRandom.randomFloat() * 5 + 2; // 2-7% improvement
|
|
250
|
-
improvements['execution-time'] = SecureRandom_js_1.SecureRandom.randomFloat() * 15 + 5; // Time improvement
|
|
251
|
-
break;
|
|
252
|
-
}
|
|
253
|
-
return improvements;
|
|
254
|
-
}
|
|
255
|
-
selectOptimalTests(suite, optimization, improvements) {
|
|
256
|
-
const selectedTests = [];
|
|
257
|
-
const selectionRatio = SecureRandom_js_1.SecureRandom.randomFloat() * 0.3 + 0.6; // Select 60-90% of tests
|
|
258
|
-
const selectedCount = Math.floor(suite.totalTests * selectionRatio);
|
|
259
|
-
for (let i = 0; i < selectedCount; i++) {
|
|
260
|
-
selectedTests.push({
|
|
261
|
-
testId: `test-${i}`,
|
|
262
|
-
priority: SecureRandom_js_1.SecureRandom.randomFloat() * 100,
|
|
263
|
-
executionOrder: i,
|
|
264
|
-
reason: this.getSelectionReason(optimization.targetMetric),
|
|
265
|
-
estimatedImpact: SecureRandom_js_1.SecureRandom.randomFloat() * 10 + 1
|
|
266
|
-
});
|
|
267
|
-
}
|
|
268
|
-
// Sort by priority
|
|
269
|
-
selectedTests.sort((a, b) => b.priority - a.priority);
|
|
270
|
-
// Update execution order
|
|
271
|
-
selectedTests.forEach((test, index) => {
|
|
272
|
-
test.executionOrder = index;
|
|
273
|
-
});
|
|
274
|
-
return selectedTests;
|
|
275
|
-
}
|
|
276
|
-
getSelectionReason(targetMetric) {
|
|
277
|
-
const reasons = {
|
|
278
|
-
'execution-time': ['Fast execution', 'Low complexity', 'Independent'],
|
|
279
|
-
'coverage': ['High coverage contribution', 'Critical path', 'Edge case testing'],
|
|
280
|
-
'cost': ['Cost-effective', 'High ROI', 'Efficient resource usage'],
|
|
281
|
-
'reliability': ['Stable test', 'Low flakiness', 'Consistent results']
|
|
282
|
-
};
|
|
283
|
-
const metricReasons = reasons[targetMetric] || ['Optimal selection'];
|
|
284
|
-
return metricReasons[Math.floor(SecureRandom_js_1.SecureRandom.randomFloat() * metricReasons.length)];
|
|
285
|
-
}
|
|
286
|
-
createExecutionPlan(selectedTests, suite) {
|
|
287
|
-
const phaseCount = Math.ceil(selectedTests.length / 50); // Max 50 tests per phase
|
|
288
|
-
const phases = [];
|
|
289
|
-
for (let i = 0; i < phaseCount; i++) {
|
|
290
|
-
const startIndex = i * 50;
|
|
291
|
-
const endIndex = Math.min(startIndex + 50, selectedTests.length);
|
|
292
|
-
const phaseTests = selectedTests.slice(startIndex, endIndex);
|
|
293
|
-
phases.push({
|
|
294
|
-
phaseId: `phase-${i + 1}`,
|
|
295
|
-
tests: phaseTests.map(t => t.testId),
|
|
296
|
-
estimatedDuration: phaseTests.length * 3, // 3 seconds per test average
|
|
297
|
-
dependencies: i > 0 ? [`phase-${i}`] : [],
|
|
298
|
-
parallelizable: SecureRandom_js_1.SecureRandom.randomFloat() > 0.3 // 70% chance of being parallelizable
|
|
299
|
-
});
|
|
300
|
-
}
|
|
301
|
-
return {
|
|
302
|
-
phases,
|
|
303
|
-
parallelization: {
|
|
304
|
-
maxParallelTests: Math.min(10, Math.ceil(selectedTests.length / 10)),
|
|
305
|
-
batchSize: Math.min(5, Math.ceil(selectedTests.length / 20)),
|
|
306
|
-
loadBalancing: 'adaptive',
|
|
307
|
-
resourceSharing: true
|
|
308
|
-
},
|
|
309
|
-
estimatedDuration: Math.max(...phases.map(p => p.estimatedDuration)),
|
|
310
|
-
resourceRequirements: this.calculateResourceRequirements(selectedTests)
|
|
311
|
-
};
|
|
312
|
-
}
|
|
313
|
-
calculateResourceRequirements(selectedTests) {
|
|
314
|
-
return [
|
|
315
|
-
{
|
|
316
|
-
type: 'cpu',
|
|
317
|
-
amount: Math.min(80, selectedTests.length * 0.5), // Max 80% CPU
|
|
318
|
-
duration: selectedTests.length * 2, // 2 seconds per test
|
|
319
|
-
critical: true
|
|
320
|
-
},
|
|
321
|
-
{
|
|
322
|
-
type: 'memory',
|
|
323
|
-
amount: Math.min(1024, selectedTests.length * 10), // Max 1GB
|
|
324
|
-
duration: selectedTests.length * 2,
|
|
325
|
-
critical: true
|
|
326
|
-
},
|
|
327
|
-
{
|
|
328
|
-
type: 'network',
|
|
329
|
-
amount: selectedTests.length * 0.1, // Network usage
|
|
330
|
-
duration: selectedTests.length * 2,
|
|
331
|
-
critical: false
|
|
332
|
-
}
|
|
333
|
-
];
|
|
334
|
-
}
|
|
335
|
-
calculateAlgorithmMetrics(algorithm, suite, executionTime) {
|
|
336
|
-
return {
|
|
337
|
-
complexity: algorithm.complexity,
|
|
338
|
-
convergenceTime: executionTime,
|
|
339
|
-
memoryUsage: suite.totalTests * 0.1, // MB
|
|
340
|
-
accuracy: SecureRandom_js_1.SecureRandom.randomFloat() * 0.1 + 0.9, // 90-100%
|
|
341
|
-
stability: SecureRandom_js_1.SecureRandom.randomFloat() * 0.05 + 0.95 // 95-100%
|
|
342
|
-
};
|
|
343
|
-
}
|
|
344
|
-
identifyTradeoffs(optimization, improvements) {
|
|
345
|
-
const tradeoffs = [];
|
|
346
|
-
for (const [metric, improvement] of Object.entries(improvements)) {
|
|
347
|
-
if (metric !== optimization.targetMetric) {
|
|
348
|
-
tradeoffs.push({
|
|
349
|
-
metric,
|
|
350
|
-
originalValue: 100, // Normalized base value
|
|
351
|
-
optimizedValue: 100 + improvement,
|
|
352
|
-
tradeoffRatio: improvement / 100,
|
|
353
|
-
impact: improvement > 0 ? 'positive' : improvement < 0 ? 'negative' : 'neutral'
|
|
354
|
-
});
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
return tradeoffs;
|
|
358
|
-
}
|
|
359
|
-
calculateOptimizedMetrics(originalSuite, optimization) {
|
|
360
|
-
const improvements = optimization.improvements;
|
|
361
|
-
return {
|
|
362
|
-
totalTests: optimization.selectedTests.length,
|
|
363
|
-
executionTime: originalSuite.executionTime * (1 - (improvements['execution-time'] || 0) / 100),
|
|
364
|
-
coverage: originalSuite.coverage * (1 + (improvements['coverage'] || 0) / 100),
|
|
365
|
-
cost: originalSuite.cost * (1 - (improvements['cost'] || 0) / 100),
|
|
366
|
-
reliability: originalSuite.reliability * (1 + (improvements['reliability'] || 0) / 100),
|
|
367
|
-
characteristics: originalSuite.characteristics // Simplified: keep original characteristics
|
|
368
|
-
};
|
|
369
|
-
}
|
|
370
|
-
async generateOptimizationRecommendations(originalSuite, optimizedSuite, optimization) {
|
|
371
|
-
const recommendations = [];
|
|
372
|
-
// Test removal recommendations
|
|
373
|
-
const removedTests = originalSuite.totalTests - optimizedSuite.totalTests;
|
|
374
|
-
if (removedTests > 0) {
|
|
375
|
-
recommendations.push({
|
|
376
|
-
id: `rec-remove-${Date.now()}`,
|
|
377
|
-
category: 'test-removal',
|
|
378
|
-
title: 'Remove Low-Value Tests',
|
|
379
|
-
description: `Remove ${removedTests} tests that provide minimal value`,
|
|
380
|
-
impact: optimization.improvements['execution-time'] || 0,
|
|
381
|
-
effort: 'low',
|
|
382
|
-
priority: 'medium',
|
|
383
|
-
actions: [{
|
|
384
|
-
type: 'test-removal',
|
|
385
|
-
description: 'Remove identified low-value tests',
|
|
386
|
-
automated: true
|
|
387
|
-
}]
|
|
388
|
-
});
|
|
389
|
-
}
|
|
390
|
-
// Parallelization recommendations
|
|
391
|
-
if (optimization.executionPlan.parallelization.maxParallelTests > 1) {
|
|
392
|
-
recommendations.push({
|
|
393
|
-
id: `rec-parallel-${Date.now()}`,
|
|
394
|
-
category: 'parallelization',
|
|
395
|
-
title: 'Enable Parallel Test Execution',
|
|
396
|
-
description: 'Configure test runner for parallel execution',
|
|
397
|
-
impact: 40, // Estimated 40% time reduction
|
|
398
|
-
effort: 'medium',
|
|
399
|
-
priority: 'high',
|
|
400
|
-
actions: [{
|
|
401
|
-
type: 'infrastructure-change',
|
|
402
|
-
description: 'Configure CI/CD for parallel test execution',
|
|
403
|
-
automated: false
|
|
404
|
-
}]
|
|
405
|
-
});
|
|
406
|
-
}
|
|
407
|
-
// Resource optimization recommendations
|
|
408
|
-
recommendations.push({
|
|
409
|
-
id: `rec-resource-${Date.now()}`,
|
|
410
|
-
category: 'resource-optimization',
|
|
411
|
-
title: 'Optimize Resource Usage',
|
|
412
|
-
description: 'Implement resource-aware test scheduling',
|
|
413
|
-
impact: 20,
|
|
414
|
-
effort: 'high',
|
|
415
|
-
priority: 'medium',
|
|
416
|
-
actions: [{
|
|
417
|
-
type: 'infrastructure-change',
|
|
418
|
-
description: 'Implement resource monitoring and scheduling',
|
|
419
|
-
automated: true
|
|
420
|
-
}]
|
|
421
|
-
});
|
|
422
|
-
return recommendations;
|
|
423
|
-
}
|
|
424
|
-
createImplementationPlan(optimization, recommendations) {
|
|
425
|
-
const phases = [
|
|
426
|
-
{
|
|
427
|
-
phaseId: 'phase-1',
|
|
428
|
-
name: 'Test Selection Implementation',
|
|
429
|
-
description: 'Implement optimized test selection',
|
|
430
|
-
tasks: [
|
|
431
|
-
{
|
|
432
|
-
taskId: 'task-1-1',
|
|
433
|
-
description: 'Update test configuration',
|
|
434
|
-
type: 'configuration',
|
|
435
|
-
effort: 2,
|
|
436
|
-
automated: true
|
|
437
|
-
},
|
|
438
|
-
{
|
|
439
|
-
taskId: 'task-1-2',
|
|
440
|
-
description: 'Remove low-value tests',
|
|
441
|
-
type: 'code-change',
|
|
442
|
-
effort: 4,
|
|
443
|
-
automated: false
|
|
444
|
-
}
|
|
445
|
-
],
|
|
446
|
-
estimatedDuration: 6,
|
|
447
|
-
dependencies: []
|
|
448
|
-
},
|
|
449
|
-
{
|
|
450
|
-
phaseId: 'phase-2',
|
|
451
|
-
name: 'Infrastructure Optimization',
|
|
452
|
-
description: 'Implement infrastructure changes',
|
|
453
|
-
tasks: [
|
|
454
|
-
{
|
|
455
|
-
taskId: 'task-2-1',
|
|
456
|
-
description: 'Configure parallel execution',
|
|
457
|
-
type: 'infrastructure',
|
|
458
|
-
effort: 8,
|
|
459
|
-
automated: false
|
|
460
|
-
}
|
|
461
|
-
],
|
|
462
|
-
estimatedDuration: 8,
|
|
463
|
-
dependencies: ['phase-1']
|
|
464
|
-
}
|
|
465
|
-
];
|
|
466
|
-
return {
|
|
467
|
-
phases,
|
|
468
|
-
rollbackPlan: [
|
|
469
|
-
{
|
|
470
|
-
stepId: 'rollback-1',
|
|
471
|
-
description: 'Restore original test configuration',
|
|
472
|
-
automated: true,
|
|
473
|
-
estimatedTime: 30
|
|
474
|
-
}
|
|
475
|
-
],
|
|
476
|
-
validation: [
|
|
477
|
-
{
|
|
478
|
-
stepId: 'validate-1',
|
|
479
|
-
description: 'Verify test coverage maintained',
|
|
480
|
-
criteria: ['Coverage >= 80%', 'No critical tests removed'],
|
|
481
|
-
automated: true
|
|
482
|
-
}
|
|
483
|
-
],
|
|
484
|
-
estimatedEffort: phases.reduce((sum, phase) => sum + phase.tasks.reduce((taskSum, task) => taskSum + task.effort, 0), 0)
|
|
485
|
-
};
|
|
486
|
-
}
|
|
487
|
-
calculateOptimizationPerformance(optimization, originalSuite, optimizedSuite) {
|
|
488
|
-
const optimizationRatio = (originalSuite.executionTime - optimizedSuite.executionTime) / originalSuite.executionTime;
|
|
489
|
-
const performance = {
|
|
490
|
-
algorithmExecutionTime: SecureRandom_js_1.SecureRandom.randomFloat() * 1000 + 100, // 100-1100ms
|
|
491
|
-
memoryUsed: originalSuite.totalTests * 0.05, // MB
|
|
492
|
-
optimizationRatio,
|
|
493
|
-
confidenceScore: SecureRandom_js_1.SecureRandom.randomFloat() * 0.2 + 0.8 // 80-100%
|
|
494
|
-
};
|
|
495
|
-
// Add temporal advantage for temporal-advantage algorithm
|
|
496
|
-
if (optimization.algorithm === 'temporal-advantage') {
|
|
497
|
-
performance.temporalAdvantage = {
|
|
498
|
-
enabled: true,
|
|
499
|
-
lightTravelTime: 36.3, // Tokyo to NYC example
|
|
500
|
-
computationTime: optimizedSuite.executionTime / 1000, // Convert to seconds
|
|
501
|
-
advantage: Math.max(0, 36.3 - optimizedSuite.executionTime / 1000),
|
|
502
|
-
scenario: 'Tokyo to New York distributed testing'
|
|
503
|
-
};
|
|
504
|
-
}
|
|
505
|
-
return performance;
|
|
506
|
-
}
|
|
507
|
-
/**
|
|
508
|
-
* Get optimization by ID
|
|
509
|
-
*/
|
|
510
|
-
getOptimization(optimizationId) {
|
|
511
|
-
return this.optimizationHistory.get(optimizationId);
|
|
512
|
-
}
|
|
513
|
-
/**
|
|
514
|
-
* List all optimizations
|
|
515
|
-
*/
|
|
516
|
-
listOptimizations() {
|
|
517
|
-
return Array.from(this.optimizationHistory.values());
|
|
518
|
-
}
|
|
519
|
-
/**
|
|
520
|
-
* Get algorithm information
|
|
521
|
-
*/
|
|
522
|
-
getAlgorithmInfo(algorithmName) {
|
|
523
|
-
return this.algorithms.get(algorithmName);
|
|
524
|
-
}
|
|
525
|
-
/**
|
|
526
|
-
* List available algorithms
|
|
527
|
-
*/
|
|
528
|
-
listAlgorithms() {
|
|
529
|
-
return Array.from(this.algorithms.values());
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
exports.OptimizeTestsHandler = OptimizeTestsHandler;
|
|
533
|
-
//# sourceMappingURL=optimize-tests.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"optimize-tests.js","sourceRoot":"","sources":["../../../src/mcp/handlers/optimize-tests.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,uDAAiE;AACjE,iEAA2D;AA6L3D,MAAa,oBAAqB,SAAQ,6BAAW;IAMnD,YAAY,QAAuB,EAAE,YAA0B;QAC7D,KAAK,EAAE,CAAC;QANF,wBAAmB,GAAkC,IAAI,GAAG,EAAE,CAAC;QAC/D,eAAU,GAAqB,IAAI,GAAG,EAAE,CAAC;QAM/C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAuB;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,4BAA4B,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAE/F,IAAI,CAAC;YACH,wBAAwB;YACxB,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;gBACrC,WAAW,EAAE,wBAAwB,IAAI,CAAC,YAAY,CAAC,SAAS,wBAAwB,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;gBACxH,SAAS,EAAE,gBAAgB;aAC5B,CAAC,CAAC;YAEH,+BAA+B;YAC/B,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAEjD,6CAA6C;YAC7C,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CACpD,gBAAgB,EAChB,EAAE,CAAC,gCAAgC;aACpC,CAAC;YAEF,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAC7E,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CACnC,CAAC;YAEF,sCAAsC;YACtC,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC;gBACtC,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE;oBACP,cAAc,EAAE,YAAY,CAAC,EAAE;oBAC/B,SAAS,EAAE,YAAY,CAAC,SAAS;oBACjC,WAAW,EAAE,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC;oBAC9E,aAAa,EAAE,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM;oBAC7D,WAAW,EAAE,YAAY,CAAC,WAAW;iBACtC;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,kCAAkC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE;gBAC/E,cAAc,EAAE,YAAY,CAAC,EAAE;gBAC/B,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,WAAW,EAAE,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC;aAC/E,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,0BAA0B,EAAE;gBAC5C,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,mBAAmB,CAC7B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,EACnE,SAAS,CACV,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,oBAAoB;QAC1B,qCAAqC;QACrC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE;YAC/B,IAAI,EAAE,0BAA0B;YAChC,UAAU,EAAE,UAAU;YACtB,WAAW,EAAE,2EAA2E;YACxF,UAAU,EAAE;gBACV,kBAAkB,EAAE,IAAI;gBACxB,sBAAsB,EAAE,IAAI;gBAC5B,oBAAoB,EAAE,KAAK;aAC5B;YACD,SAAS,EAAE,CAAC,gBAAgB,EAAE,UAAU,EAAE,uBAAuB,CAAC;YAClE,WAAW,EAAE,CAAC,4BAA4B,EAAE,yBAAyB,CAAC;SACvE,CAAC,CAAC;QAEH,4CAA4C;QAC5C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,uBAAuB,EAAE;YAC3C,IAAI,EAAE,iCAAiC;YACvC,UAAU,EAAE,UAAU;YACtB,WAAW,EAAE,gEAAgE;YAC7E,UAAU,EAAE;gBACV,eAAe,EAAE,MAAM;gBACvB,gBAAgB,EAAE,GAAG;gBACrB,gBAAgB,EAAE,IAAI;aACvB;YACD,SAAS,EAAE,CAAC,8BAA8B,EAAE,oBAAoB,EAAE,gBAAgB,CAAC;YACnF,WAAW,EAAE,CAAC,0BAA0B,EAAE,iBAAiB,CAAC;SAC7D,CAAC,CAAC;QAEH,+BAA+B;QAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,EAAE;YACxC,IAAI,EAAE,6BAA6B;YACnC,UAAU,EAAE,YAAY;YACxB,WAAW,EAAE,yDAAyD;YACtE,UAAU,EAAE;gBACV,qBAAqB,EAAE,IAAI;gBAC3B,cAAc,EAAE,IAAI;gBACpB,oBAAoB,EAAE,IAAI;aAC3B;YACD,SAAS,EAAE,CAAC,cAAc,EAAE,0BAA0B,EAAE,oBAAoB,CAAC;YAC7E,WAAW,EAAE,CAAC,mBAAmB,EAAE,eAAe,CAAC;SACpD,CAAC,CAAC;IACL,CAAC;IAEO,wBAAwB,CAAC,YAAiB;QAChD,MAAM,eAAe,GAAG,CAAC,WAAW,EAAE,uBAAuB,EAAE,oBAAoB,CAAC,CAAC;QACrF,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,sBAAsB,YAAY,CAAC,SAAS,qBAAqB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjH,CAAC;QAED,MAAM,kBAAkB,GAAG,CAAC,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QACjF,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,CAAC,YAAY,qBAAqB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3H,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,IAAuB;QACrD,MAAM,cAAc,GAAG,gBAAgB,IAAI,CAAC,GAAG,EAAE,IAAI,8BAAY,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAElF,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,oCAAoC,EAAE;YACrD,cAAc;YACd,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS;SACvC,CAAC,CAAC;QAEH,8BAA8B;QAC9B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAElE,+BAA+B;QAC/B,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAC/D,IAAI,CAAC,YAAY,EACjB,aAAa,CACd,CAAC;QAEF,mCAAmC;QACnC,MAAM,cAAc,GAAG,IAAI,CAAC,yBAAyB,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;QAE1F,2BAA2B;QAC3B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,mCAAmC,CACpE,aAAa,EACb,cAAc,EACd,mBAAmB,CACpB,CAAC;QAEF,6BAA6B;QAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;QAE3F,gCAAgC;QAChC,MAAM,WAAW,GAAG,IAAI,CAAC,gCAAgC,CACvD,IAAI,CAAC,YAAY,EACjB,aAAa,EACb,cAAc,CACf,CAAC;QAEF,MAAM,gBAAgB,GAAqB;YACzC,EAAE,EAAE,cAAc;YAClB,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS;YACtC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY;YAC5C,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,aAAa;YACb,cAAc;YACd,YAAY,EAAE,mBAAmB;YACjC,eAAe;YACf,cAAc;YACd,WAAW;SACZ,CAAC;QAEF,qBAAqB;QACrB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;QAE/D,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,SAAe;QAC5C,+BAA+B;QAC/B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAEvD,MAAM,IAAI,GAAG,SAAS,EAAE,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,8BAAY,CAAC,WAAW,EAAE,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,iBAAiB;QAEtG,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,IAAI,GAAG,CAAC,8BAAY,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,uBAAuB;YACnF,QAAQ,EAAE,8BAAY,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,SAAS;YACzD,IAAI,EAAE,IAAI,GAAG,CAAC,8BAAY,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,uBAAuB;YAC9E,WAAW,EAAE,8BAAY,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU;YAC7D,eAAe,EAAE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC;SACvD,CAAC;IACJ,CAAC;IAEO,0BAA0B,CAAC,IAAY;QAC7C,OAAO;YACL,sBAAsB,EAAE;gBACtB,KAAK,EAAE,8BAAY,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,SAAS;gBACxD,QAAQ,EAAE,8BAAY,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,SAAS;gBAC3D,MAAM,EAAE,8BAAY,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ;aACzD;YACD,gBAAgB,EAAE;gBAChB,MAAM,EAAE,8BAAY,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,SAAS;gBACzD,aAAa,EAAE,8BAAY,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,IAAI,EAAE,SAAS;gBACjE,KAAK,EAAE,8BAAY,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ;aACxD;YACD,eAAe,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;YACnD,wBAAwB,EAAE,8BAAY,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,UAAU;SAC5E,CAAC;IACJ,CAAC;IAEO,uBAAuB,CAAC,IAAY;QAC1C,MAAM,KAAK,GAAqB,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,uBAAuB;QAE7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,YAAY,GAAa,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,8BAAY,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB;YAEhF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACjC,CAAC;YAED,KAAK,CAAC,IAAI,CAAC;gBACT,MAAM,EAAE,QAAQ,CAAC,EAAE;gBACnB,YAAY;gBACZ,MAAM,EAAE,8BAAY,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO;aACpD,CAAC,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,0BAA0B,CACtC,YAAiB,EACjB,aAA+B;QAE/B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAE,CAAC;QAE/D,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,iCAAiC,EAAE;YAClD,SAAS,EAAE,SAAS,CAAC,IAAI;YACzB,UAAU,EAAE,SAAS,CAAC,UAAU;SACjC,CAAC,CAAC;QAEH,+BAA+B;QAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAChF,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB;QAExG,yBAAyB;QACzB,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAE7E,uBAAuB;QACvB,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;QAEzF,wBAAwB;QACxB,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QAE7E,8BAA8B;QAC9B,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;QAEjG,qBAAqB;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAErE,OAAO;YACL,YAAY;YACZ,aAAa;YACb,aAAa;YACb,gBAAgB;YAChB,SAAS;SACV,CAAC;IACJ,CAAC;IAEO,0BAA0B,CAAC,SAAc,EAAE,KAAuB;QACxE,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,aAAa;QACnC,MAAM,oBAAoB,GAAG,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9E,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAEtD,OAAO,QAAQ,GAAG,oBAAoB,GAAG,cAAc,CAAC;IAC1D,CAAC;IAEO,qBAAqB,CAAC,YAAiB,EAAE,aAA+B;QAC9E,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;QAC/C,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,IAAI,EAAE,CAAC;QAEnD,MAAM,YAAY,GAA2B,EAAE,CAAC;QAEhD,0CAA0C;QAC1C,QAAQ,YAAY,EAAE,CAAC;YACrB,KAAK,gBAAgB;gBACnB,YAAY,CAAC,gBAAgB,CAAC,GAAG,8BAAY,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,qBAAqB;gBAC5F,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,8BAAY,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB;gBACrF,MAAM;YACR,KAAK,UAAU;gBACb,YAAY,CAAC,UAAU,CAAC,GAAG,8BAAY,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,oBAAoB;gBACpF,YAAY,CAAC,gBAAgB,CAAC,GAAG,8BAAY,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,qBAAqB;gBAC3F,MAAM;YACR,KAAK,MAAM;gBACT,YAAY,CAAC,MAAM,CAAC,GAAG,8BAAY,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,wBAAwB;gBACrF,YAAY,CAAC,gBAAgB,CAAC,GAAG,8BAAY,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,mBAAmB;gBAC1F,MAAM;YACR,KAAK,aAAa;gBAChB,YAAY,CAAC,aAAa,CAAC,GAAG,8BAAY,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB;gBACrF,YAAY,CAAC,gBAAgB,CAAC,GAAG,8BAAY,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,mBAAmB;gBACzF,MAAM;QACV,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,kBAAkB,CACxB,KAAuB,EACvB,YAAiB,EACjB,YAAoC;QAEpC,MAAM,aAAa,GAAmB,EAAE,CAAC;QACzC,MAAM,cAAc,GAAG,8BAAY,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,yBAAyB;QACxF,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,cAAc,CAAC,CAAC;QAEpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,aAAa,CAAC,IAAI,CAAC;gBACjB,MAAM,EAAE,QAAQ,CAAC,EAAE;gBACnB,QAAQ,EAAE,8BAAY,CAAC,WAAW,EAAE,GAAG,GAAG;gBAC1C,cAAc,EAAE,CAAC;gBACjB,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,YAAY,CAAC;gBAC1D,eAAe,EAAE,8BAAY,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC;aACrD,CAAC,CAAC;QACL,CAAC;QAED,mBAAmB;QACnB,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QAEtD,yBAAyB;QACzB,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACpC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,kBAAkB,CAAC,YAAoB;QAC7C,MAAM,OAAO,GAA6B;YACxC,gBAAgB,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,CAAC;YACrE,UAAU,EAAE,CAAC,4BAA4B,EAAE,eAAe,EAAE,mBAAmB,CAAC;YAChF,MAAM,EAAE,CAAC,gBAAgB,EAAE,UAAU,EAAE,0BAA0B,CAAC;YAClE,aAAa,EAAE,CAAC,aAAa,EAAE,eAAe,EAAE,oBAAoB,CAAC;SACtE,CAAC;QAEF,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACrE,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,8BAAY,CAAC,WAAW,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IACtF,CAAC;IAEO,mBAAmB,CAAC,aAA6B,EAAE,KAAuB;QAChF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,yBAAyB;QAClF,MAAM,MAAM,GAAqB,EAAE,CAAC;QAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;YACjE,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAE7D,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE;gBACzB,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;gBACpC,iBAAiB,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,6BAA6B;gBACvE,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzC,cAAc,EAAE,8BAAY,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,qCAAqC;aACvF,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,MAAM;YACN,eAAe,EAAE;gBACf,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;gBACpE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;gBAC5D,aAAa,EAAE,UAAU;gBACzB,eAAe,EAAE,IAAI;aACtB;YACD,iBAAiB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;YACpE,oBAAoB,EAAE,IAAI,CAAC,6BAA6B,CAAC,aAAa,CAAC;SACxE,CAAC;IACJ,CAAC;IAEO,6BAA6B,CAAC,aAA6B;QACjE,OAAO;YACL;gBACE,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,cAAc;gBAChE,QAAQ,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,qBAAqB;gBACzD,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,UAAU;gBAC7D,QAAQ,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC;gBAClC,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,GAAG,EAAE,gBAAgB;gBACpD,QAAQ,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC;gBAClC,QAAQ,EAAE,KAAK;aAChB;SACF,CAAC;IACJ,CAAC;IAEO,yBAAyB,CAAC,SAAc,EAAE,KAAuB,EAAE,aAAqB;QAC9F,OAAO;YACL,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,eAAe,EAAE,aAAa;YAC9B,WAAW,EAAE,KAAK,CAAC,UAAU,GAAG,GAAG,EAAE,KAAK;YAC1C,QAAQ,EAAE,8BAAY,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,UAAU;YAC5D,SAAS,EAAE,8BAAY,CAAC,WAAW,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU;SAC/D,CAAC;IACJ,CAAC;IAEO,iBAAiB,CAAC,YAAiB,EAAE,YAAoC;QAC/E,MAAM,SAAS,GAAe,EAAE,CAAC;QAEjC,KAAK,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACjE,IAAI,MAAM,KAAK,YAAY,CAAC,YAAY,EAAE,CAAC;gBACzC,SAAS,CAAC,IAAI,CAAC;oBACb,MAAM;oBACN,aAAa,EAAE,GAAG,EAAE,wBAAwB;oBAC5C,cAAc,EAAE,GAAG,GAAG,WAAW;oBACjC,aAAa,EAAE,WAAW,GAAG,GAAG;oBAChC,MAAM,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;iBAChF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,yBAAyB,CAC/B,aAA+B,EAC/B,YAAiC;QAEjC,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;QAE/C,OAAO;YACL,UAAU,EAAE,YAAY,CAAC,aAAa,CAAC,MAAM;YAC7C,aAAa,EAAE,aAAa,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;YAC9F,QAAQ,EAAE,aAAa,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;YAC9E,IAAI,EAAE,aAAa,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;YAClE,WAAW,EAAE,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;YACvF,eAAe,EAAE,aAAa,CAAC,eAAe,CAAC,4CAA4C;SAC5F,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,mCAAmC,CAC/C,aAA+B,EAC/B,cAAgC,EAChC,YAAiC;QAEjC,MAAM,eAAe,GAAiC,EAAE,CAAC;QAEzD,+BAA+B;QAC/B,MAAM,YAAY,GAAG,aAAa,CAAC,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC;QAC1E,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,eAAe,CAAC,IAAI,CAAC;gBACnB,EAAE,EAAE,cAAc,IAAI,CAAC,GAAG,EAAE,EAAE;gBAC9B,QAAQ,EAAE,cAAc;gBACxB,KAAK,EAAE,wBAAwB;gBAC/B,WAAW,EAAE,UAAU,YAAY,mCAAmC;gBACtE,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC;gBACxD,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,cAAc;wBACpB,WAAW,EAAE,mCAAmC;wBAChD,SAAS,EAAE,IAAI;qBAChB,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QAED,kCAAkC;QAClC,IAAI,YAAY,CAAC,aAAa,CAAC,eAAe,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;YACpE,eAAe,CAAC,IAAI,CAAC;gBACnB,EAAE,EAAE,gBAAgB,IAAI,CAAC,GAAG,EAAE,EAAE;gBAChC,QAAQ,EAAE,iBAAiB;gBAC3B,KAAK,EAAE,gCAAgC;gBACvC,WAAW,EAAE,8CAA8C;gBAC3D,MAAM,EAAE,EAAE,EAAE,+BAA+B;gBAC3C,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,uBAAuB;wBAC7B,WAAW,EAAE,6CAA6C;wBAC1D,SAAS,EAAE,KAAK;qBACjB,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QAED,wCAAwC;QACxC,eAAe,CAAC,IAAI,CAAC;YACnB,EAAE,EAAE,gBAAgB,IAAI,CAAC,GAAG,EAAE,EAAE;YAChC,QAAQ,EAAE,uBAAuB;YACjC,KAAK,EAAE,yBAAyB;YAChC,WAAW,EAAE,0CAA0C;YACvD,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,uBAAuB;oBAC7B,WAAW,EAAE,8CAA8C;oBAC3D,SAAS,EAAE,IAAI;iBAChB,CAAC;SACH,CAAC,CAAC;QAEH,OAAO,eAAe,CAAC;IACzB,CAAC;IAEO,wBAAwB,CAC9B,YAAiC,EACjC,eAA6C;QAE7C,MAAM,MAAM,GAA0B;YACpC;gBACE,OAAO,EAAE,SAAS;gBAClB,IAAI,EAAE,+BAA+B;gBACrC,WAAW,EAAE,oCAAoC;gBACjD,KAAK,EAAE;oBACL;wBACE,MAAM,EAAE,UAAU;wBAClB,WAAW,EAAE,2BAA2B;wBACxC,IAAI,EAAE,eAAe;wBACrB,MAAM,EAAE,CAAC;wBACT,SAAS,EAAE,IAAI;qBAChB;oBACD;wBACE,MAAM,EAAE,UAAU;wBAClB,WAAW,EAAE,wBAAwB;wBACrC,IAAI,EAAE,aAAa;wBACnB,MAAM,EAAE,CAAC;wBACT,SAAS,EAAE,KAAK;qBACjB;iBACF;gBACD,iBAAiB,EAAE,CAAC;gBACpB,YAAY,EAAE,EAAE;aACjB;YACD;gBACE,OAAO,EAAE,SAAS;gBAClB,IAAI,EAAE,6BAA6B;gBACnC,WAAW,EAAE,kCAAkC;gBAC/C,KAAK,EAAE;oBACL;wBACE,MAAM,EAAE,UAAU;wBAClB,WAAW,EAAE,8BAA8B;wBAC3C,IAAI,EAAE,gBAAgB;wBACtB,MAAM,EAAE,CAAC;wBACT,SAAS,EAAE,KAAK;qBACjB;iBACF;gBACD,iBAAiB,EAAE,CAAC;gBACpB,YAAY,EAAE,CAAC,SAAS,CAAC;aAC1B;SACF,CAAC;QAEF,OAAO;YACL,MAAM;YACN,YAAY,EAAE;gBACZ;oBACE,MAAM,EAAE,YAAY;oBACpB,WAAW,EAAE,qCAAqC;oBAClD,SAAS,EAAE,IAAI;oBACf,aAAa,EAAE,EAAE;iBAClB;aACF;YACD,UAAU,EAAE;gBACV;oBACE,MAAM,EAAE,YAAY;oBACpB,WAAW,EAAE,iCAAiC;oBAC9C,QAAQ,EAAE,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;oBAC1D,SAAS,EAAE,IAAI;iBAChB;aACF;YACD,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAC5C,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CACzE;SACF,CAAC;IACJ,CAAC;IAEO,gCAAgC,CACtC,YAAiB,EACjB,aAA+B,EAC/B,cAAgC;QAEhC,MAAM,iBAAiB,GAAG,CAAC,aAAa,CAAC,aAAa,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC,aAAa,CAAC;QAErH,MAAM,WAAW,GAA4B;YAC3C,sBAAsB,EAAE,8BAAY,CAAC,WAAW,EAAE,GAAG,IAAI,GAAG,GAAG,EAAE,aAAa;YAC9E,UAAU,EAAE,aAAa,CAAC,UAAU,GAAG,IAAI,EAAE,KAAK;YAClD,iBAAiB;YACjB,eAAe,EAAE,8BAAY,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,UAAU;SACnE,CAAC;QAEF,0DAA0D;QAC1D,IAAI,YAAY,CAAC,SAAS,KAAK,oBAAoB,EAAE,CAAC;YACpD,WAAW,CAAC,iBAAiB,GAAG;gBAC9B,OAAO,EAAE,IAAI;gBACb,eAAe,EAAE,IAAI,EAAE,uBAAuB;gBAC9C,eAAe,EAAE,cAAc,CAAC,aAAa,GAAG,IAAI,EAAE,qBAAqB;gBAC3E,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC;gBAClE,QAAQ,EAAE,uCAAuC;aAClD,CAAC;QACJ,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,cAAsB;QACpC,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,aAAqB;QACpC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,CAAC;CACF;AAhoBD,oDAgoBC"}
|