@sparkleideas/neural 3.5.2-patch.1

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 (122) hide show
  1. package/README.md +260 -0
  2. package/__tests__/README.md +235 -0
  3. package/__tests__/algorithms.test.ts +582 -0
  4. package/__tests__/patterns.test.ts +549 -0
  5. package/__tests__/sona.test.ts +445 -0
  6. package/docs/SONA_INTEGRATION.md +460 -0
  7. package/docs/SONA_QUICKSTART.md +168 -0
  8. package/examples/sona-usage.ts +318 -0
  9. package/package.json +23 -0
  10. package/src/algorithms/a2c.d.ts +86 -0
  11. package/src/algorithms/a2c.d.ts.map +1 -0
  12. package/src/algorithms/a2c.js +361 -0
  13. package/src/algorithms/a2c.js.map +1 -0
  14. package/src/algorithms/a2c.ts +478 -0
  15. package/src/algorithms/curiosity.d.ts +82 -0
  16. package/src/algorithms/curiosity.d.ts.map +1 -0
  17. package/src/algorithms/curiosity.js +392 -0
  18. package/src/algorithms/curiosity.js.map +1 -0
  19. package/src/algorithms/curiosity.ts +509 -0
  20. package/src/algorithms/decision-transformer.d.ts +82 -0
  21. package/src/algorithms/decision-transformer.d.ts.map +1 -0
  22. package/src/algorithms/decision-transformer.js +415 -0
  23. package/src/algorithms/decision-transformer.js.map +1 -0
  24. package/src/algorithms/decision-transformer.ts +521 -0
  25. package/src/algorithms/dqn.d.ts +72 -0
  26. package/src/algorithms/dqn.d.ts.map +1 -0
  27. package/src/algorithms/dqn.js +303 -0
  28. package/src/algorithms/dqn.js.map +1 -0
  29. package/src/algorithms/dqn.ts +382 -0
  30. package/src/algorithms/index.d.ts +32 -0
  31. package/src/algorithms/index.d.ts.map +1 -0
  32. package/src/algorithms/index.js +74 -0
  33. package/src/algorithms/index.js.map +1 -0
  34. package/src/algorithms/index.ts +122 -0
  35. package/src/algorithms/ppo.d.ts +72 -0
  36. package/src/algorithms/ppo.d.ts.map +1 -0
  37. package/src/algorithms/ppo.js +331 -0
  38. package/src/algorithms/ppo.js.map +1 -0
  39. package/src/algorithms/ppo.ts +429 -0
  40. package/src/algorithms/q-learning.d.ts +77 -0
  41. package/src/algorithms/q-learning.d.ts.map +1 -0
  42. package/src/algorithms/q-learning.js +259 -0
  43. package/src/algorithms/q-learning.js.map +1 -0
  44. package/src/algorithms/q-learning.ts +333 -0
  45. package/src/algorithms/sarsa.d.ts +82 -0
  46. package/src/algorithms/sarsa.d.ts.map +1 -0
  47. package/src/algorithms/sarsa.js +297 -0
  48. package/src/algorithms/sarsa.js.map +1 -0
  49. package/src/algorithms/sarsa.ts +383 -0
  50. package/src/algorithms/tmp.json +0 -0
  51. package/src/application/index.ts +11 -0
  52. package/src/application/services/neural-application-service.ts +217 -0
  53. package/src/domain/entities/pattern.ts +169 -0
  54. package/src/domain/index.ts +18 -0
  55. package/src/domain/services/learning-service.ts +256 -0
  56. package/src/index.d.ts +118 -0
  57. package/src/index.d.ts.map +1 -0
  58. package/src/index.js +201 -0
  59. package/src/index.js.map +1 -0
  60. package/src/index.ts +363 -0
  61. package/src/modes/balanced.d.ts +60 -0
  62. package/src/modes/balanced.d.ts.map +1 -0
  63. package/src/modes/balanced.js +234 -0
  64. package/src/modes/balanced.js.map +1 -0
  65. package/src/modes/balanced.ts +299 -0
  66. package/src/modes/base.ts +163 -0
  67. package/src/modes/batch.d.ts +82 -0
  68. package/src/modes/batch.d.ts.map +1 -0
  69. package/src/modes/batch.js +316 -0
  70. package/src/modes/batch.js.map +1 -0
  71. package/src/modes/batch.ts +434 -0
  72. package/src/modes/edge.d.ts +85 -0
  73. package/src/modes/edge.d.ts.map +1 -0
  74. package/src/modes/edge.js +310 -0
  75. package/src/modes/edge.js.map +1 -0
  76. package/src/modes/edge.ts +409 -0
  77. package/src/modes/index.d.ts +55 -0
  78. package/src/modes/index.d.ts.map +1 -0
  79. package/src/modes/index.js +83 -0
  80. package/src/modes/index.js.map +1 -0
  81. package/src/modes/index.ts +16 -0
  82. package/src/modes/real-time.d.ts +58 -0
  83. package/src/modes/real-time.d.ts.map +1 -0
  84. package/src/modes/real-time.js +196 -0
  85. package/src/modes/real-time.js.map +1 -0
  86. package/src/modes/real-time.ts +257 -0
  87. package/src/modes/research.d.ts +79 -0
  88. package/src/modes/research.d.ts.map +1 -0
  89. package/src/modes/research.js +389 -0
  90. package/src/modes/research.js.map +1 -0
  91. package/src/modes/research.ts +486 -0
  92. package/src/modes/tmp.json +0 -0
  93. package/src/pattern-learner.d.ts +117 -0
  94. package/src/pattern-learner.d.ts.map +1 -0
  95. package/src/pattern-learner.js +603 -0
  96. package/src/pattern-learner.js.map +1 -0
  97. package/src/pattern-learner.ts +757 -0
  98. package/src/reasoning-bank.d.ts +259 -0
  99. package/src/reasoning-bank.d.ts.map +1 -0
  100. package/src/reasoning-bank.js +993 -0
  101. package/src/reasoning-bank.js.map +1 -0
  102. package/src/reasoning-bank.ts +1279 -0
  103. package/src/reasoningbank-adapter.ts +697 -0
  104. package/src/sona-integration.d.ts +168 -0
  105. package/src/sona-integration.d.ts.map +1 -0
  106. package/src/sona-integration.js +316 -0
  107. package/src/sona-integration.js.map +1 -0
  108. package/src/sona-integration.ts +432 -0
  109. package/src/sona-manager.d.ts +147 -0
  110. package/src/sona-manager.d.ts.map +1 -0
  111. package/src/sona-manager.js +695 -0
  112. package/src/sona-manager.js.map +1 -0
  113. package/src/sona-manager.ts +835 -0
  114. package/src/tmp.json +0 -0
  115. package/src/types.d.ts +431 -0
  116. package/src/types.d.ts.map +1 -0
  117. package/src/types.js +11 -0
  118. package/src/types.js.map +1 -0
  119. package/src/types.ts +590 -0
  120. package/tmp.json +0 -0
  121. package/tsconfig.json +9 -0
  122. package/vitest.config.ts +19 -0
@@ -0,0 +1,318 @@
1
+ /**
2
+ * Example: Using SONA Integration with V3 Neural Module
3
+ *
4
+ * Demonstrates:
5
+ * - Creating a SONA learning engine
6
+ * - Learning from trajectories
7
+ * - Adapting behavior based on context
8
+ * - Performance monitoring (<0.05ms learning target)
9
+ */
10
+
11
+ import {
12
+ createSONALearningEngine,
13
+ type Context,
14
+ type Trajectory,
15
+ type TrajectoryStep,
16
+ } from '../src/index.js';
17
+ import { getModeConfig } from '../src/sona-manager.js';
18
+
19
+ // =============================================================================
20
+ // Example 1: Basic SONA Learning
21
+ // =============================================================================
22
+
23
+ async function basicLearningExample() {
24
+ console.log('\n=== Example 1: Basic SONA Learning ===\n');
25
+
26
+ // Create SONA engine with balanced mode
27
+ const modeConfig = getModeConfig('balanced');
28
+ const sona = createSONALearningEngine('balanced', modeConfig);
29
+
30
+ console.log(`Created SONA engine (balanced mode)`);
31
+ console.log(`- LoRA Rank: ${modeConfig.loraRank}`);
32
+ console.log(`- Learning Rate: ${modeConfig.learningRate}`);
33
+ console.log(`- Quality Threshold: ${modeConfig.qualityThreshold}`);
34
+
35
+ // Create a sample trajectory
36
+ const trajectory: Trajectory = {
37
+ trajectoryId: 'traj-001',
38
+ context: 'Implement authentication middleware',
39
+ domain: 'code',
40
+ steps: [
41
+ {
42
+ stepId: 'step-1',
43
+ timestamp: Date.now(),
44
+ action: 'analyze requirements',
45
+ stateBefore: new Float32Array(768).fill(0.1),
46
+ stateAfter: new Float32Array(768).fill(0.2),
47
+ reward: 0.8,
48
+ },
49
+ {
50
+ stepId: 'step-2',
51
+ timestamp: Date.now() + 1000,
52
+ action: 'implement JWT validation',
53
+ stateBefore: new Float32Array(768).fill(0.2),
54
+ stateAfter: new Float32Array(768).fill(0.3),
55
+ reward: 0.9,
56
+ },
57
+ {
58
+ stepId: 'step-3',
59
+ timestamp: Date.now() + 2000,
60
+ action: 'write tests',
61
+ stateBefore: new Float32Array(768).fill(0.3),
62
+ stateAfter: new Float32Array(768).fill(0.4),
63
+ reward: 0.95,
64
+ },
65
+ ],
66
+ qualityScore: 0.88,
67
+ isComplete: true,
68
+ startTime: Date.now(),
69
+ endTime: Date.now() + 3000,
70
+ };
71
+
72
+ // Learn from trajectory
73
+ await sona.learn(trajectory);
74
+
75
+ console.log(`\nLearned from trajectory:`);
76
+ console.log(`- Steps: ${trajectory.steps.length}`);
77
+ console.log(`- Quality: ${trajectory.qualityScore}`);
78
+ console.log(`- Learning time: ${sona.getLearningTime().toFixed(4)}ms`);
79
+ console.log(`- Target: <0.05ms ✓`);
80
+
81
+ // Get statistics
82
+ const stats = sona.getStats();
83
+ console.log(`\nEngine statistics:`);
84
+ console.log(`- Total trajectories: ${stats.totalTrajectories}`);
85
+ console.log(`- Patterns learned: ${stats.patternsLearned}`);
86
+ console.log(`- Avg quality: ${stats.avgQuality.toFixed(3)}`);
87
+ console.log(`- Enabled: ${stats.enabled}`);
88
+ }
89
+
90
+ // =============================================================================
91
+ // Example 2: Context Adaptation
92
+ // =============================================================================
93
+
94
+ async function adaptationExample() {
95
+ console.log('\n=== Example 2: Context Adaptation ===\n');
96
+
97
+ // Create SONA engine with real-time mode (fastest)
98
+ const modeConfig = getModeConfig('real-time');
99
+ const sona = createSONALearningEngine('real-time', modeConfig);
100
+
101
+ console.log(`Created SONA engine (real-time mode)`);
102
+ console.log(`- Max Latency: ${modeConfig.maxLatencyMs}ms`);
103
+
104
+ // First, learn from some trajectories to build patterns
105
+ const trajectories: Trajectory[] = [
106
+ {
107
+ trajectoryId: 'traj-auth-1',
108
+ context: 'Implement JWT authentication',
109
+ domain: 'code',
110
+ steps: createMockSteps(3, 0.9),
111
+ qualityScore: 0.9,
112
+ isComplete: true,
113
+ startTime: Date.now(),
114
+ },
115
+ {
116
+ trajectoryId: 'traj-auth-2',
117
+ context: 'Add OAuth2 flow',
118
+ domain: 'code',
119
+ steps: createMockSteps(4, 0.85),
120
+ qualityScore: 0.85,
121
+ isComplete: true,
122
+ startTime: Date.now(),
123
+ },
124
+ {
125
+ trajectoryId: 'traj-api-1',
126
+ context: 'Build REST API endpoint',
127
+ domain: 'code',
128
+ steps: createMockSteps(5, 0.8),
129
+ qualityScore: 0.8,
130
+ isComplete: true,
131
+ startTime: Date.now(),
132
+ },
133
+ ];
134
+
135
+ // Learn from all trajectories
136
+ for (const traj of trajectories) {
137
+ await sona.learn(traj);
138
+ }
139
+
140
+ console.log(`\nLearned from ${trajectories.length} trajectories`);
141
+
142
+ // Now adapt to a new context
143
+ const context: Context = {
144
+ domain: 'code',
145
+ queryEmbedding: new Float32Array(768).fill(0.15),
146
+ metadata: {
147
+ task: 'Implement user session management',
148
+ },
149
+ };
150
+
151
+ const adapted = await sona.adapt(context);
152
+
153
+ console.log(`\nAdapted behavior:`);
154
+ console.log(`- Transformation applied: micro-LoRA`);
155
+ console.log(`- Similar patterns found: ${adapted.patterns.length}`);
156
+ console.log(`- Suggested route: ${adapted.suggestedRoute}`);
157
+ console.log(`- Confidence: ${adapted.confidence.toFixed(3)}`);
158
+ console.log(`- Adaptation time: ${sona.getAdaptationTime().toFixed(4)}ms`);
159
+
160
+ if (adapted.patterns.length > 0) {
161
+ console.log(`\nTop pattern:`);
162
+ console.log(`- Type: ${adapted.patterns[0].patternType}`);
163
+ console.log(`- Quality: ${adapted.patterns[0].avgQuality.toFixed(3)}`);
164
+ console.log(`- Cluster size: ${adapted.patterns[0].clusterSize}`);
165
+ }
166
+ }
167
+
168
+ // =============================================================================
169
+ // Example 3: Pattern Discovery
170
+ // =============================================================================
171
+
172
+ async function patternDiscoveryExample() {
173
+ console.log('\n=== Example 3: Pattern Discovery ===\n');
174
+
175
+ const modeConfig = getModeConfig('research');
176
+ const sona = createSONALearningEngine('research', modeConfig);
177
+
178
+ console.log(`Created SONA engine (research mode)`);
179
+ console.log(`- Pattern Clusters: ${modeConfig.patternClusters}`);
180
+
181
+ // Learn from multiple high-quality trajectories
182
+ const domains: Array<'code' | 'math' | 'reasoning'> = ['code', 'math', 'reasoning'];
183
+
184
+ for (let i = 0; i < 10; i++) {
185
+ const domain = domains[i % domains.length];
186
+ const trajectory: Trajectory = {
187
+ trajectoryId: `traj-${domain}-${i}`,
188
+ context: `${domain} task ${i}`,
189
+ domain,
190
+ steps: createMockSteps(3 + (i % 3), 0.7 + Math.random() * 0.3),
191
+ qualityScore: 0.7 + Math.random() * 0.3,
192
+ isComplete: true,
193
+ startTime: Date.now(),
194
+ };
195
+
196
+ await sona.learn(trajectory);
197
+ }
198
+
199
+ console.log(`\nLearned from 10 trajectories across ${domains.length} domains`);
200
+
201
+ // Force a learning cycle to cluster patterns
202
+ const learnStatus = sona.forceLearning();
203
+ console.log(`\nForced learning cycle: ${learnStatus}`);
204
+
205
+ // Find patterns for each domain
206
+ for (const domain of domains) {
207
+ const queryEmbedding = new Float32Array(768).fill(0.1 + Math.random() * 0.1);
208
+ const patterns = sona.findPatterns(queryEmbedding, 3);
209
+
210
+ console.log(`\n${domain.toUpperCase()} patterns:`);
211
+ patterns.forEach((pattern, idx) => {
212
+ console.log(` ${idx + 1}. Quality: ${pattern.avgQuality.toFixed(3)}, Cluster: ${pattern.clusterSize} trajectories`);
213
+ });
214
+ }
215
+
216
+ const stats = sona.getStats();
217
+ console.log(`\nFinal statistics:`);
218
+ console.log(`- Total trajectories: ${stats.totalTrajectories}`);
219
+ console.log(`- Patterns learned: ${stats.patternsLearned}`);
220
+ console.log(`- Avg quality: ${stats.avgQuality.toFixed(3)}`);
221
+ }
222
+
223
+ // =============================================================================
224
+ // Example 4: Performance Monitoring
225
+ // =============================================================================
226
+
227
+ async function performanceMonitoringExample() {
228
+ console.log('\n=== Example 4: Performance Monitoring ===\n');
229
+
230
+ const modes: Array<'real-time' | 'balanced' | 'edge'> = ['real-time', 'balanced', 'edge'];
231
+
232
+ for (const mode of modes) {
233
+ const modeConfig = getModeConfig(mode);
234
+ const sona = createSONALearningEngine(mode, modeConfig);
235
+
236
+ // Benchmark learning
237
+ const trajectory: Trajectory = {
238
+ trajectoryId: `perf-${mode}`,
239
+ context: 'Performance test',
240
+ domain: 'general',
241
+ steps: createMockSteps(5, 0.8),
242
+ qualityScore: 0.8,
243
+ isComplete: true,
244
+ startTime: Date.now(),
245
+ };
246
+
247
+ const iterations = 100;
248
+ const times: number[] = [];
249
+
250
+ for (let i = 0; i < iterations; i++) {
251
+ await sona.learn(trajectory);
252
+ times.push(sona.getLearningTime());
253
+ }
254
+
255
+ const avgTime = times.reduce((sum, t) => sum + t, 0) / times.length;
256
+ const minTime = Math.min(...times);
257
+ const maxTime = Math.max(...times);
258
+ const meetsTarget = avgTime < 0.05;
259
+
260
+ console.log(`\n${mode.toUpperCase()} mode (${iterations} iterations):`);
261
+ console.log(`- Avg learning time: ${avgTime.toFixed(4)}ms ${meetsTarget ? '✓' : '✗'}`);
262
+ console.log(`- Min time: ${minTime.toFixed(4)}ms`);
263
+ console.log(`- Max time: ${maxTime.toFixed(4)}ms`);
264
+ console.log(`- Target: <0.05ms`);
265
+ }
266
+ }
267
+
268
+ // =============================================================================
269
+ // Helper Functions
270
+ // =============================================================================
271
+
272
+ function createMockSteps(count: number, avgReward: number): TrajectoryStep[] {
273
+ const steps: TrajectoryStep[] = [];
274
+ const baseTime = Date.now();
275
+
276
+ for (let i = 0; i < count; i++) {
277
+ steps.push({
278
+ stepId: `step-${i}`,
279
+ timestamp: baseTime + i * 1000,
280
+ action: `action-${i}`,
281
+ stateBefore: new Float32Array(768).fill(0.1 + i * 0.05),
282
+ stateAfter: new Float32Array(768).fill(0.15 + i * 0.05),
283
+ reward: avgReward + (Math.random() - 0.5) * 0.1,
284
+ });
285
+ }
286
+
287
+ return steps;
288
+ }
289
+
290
+ // =============================================================================
291
+ // Run All Examples
292
+ // =============================================================================
293
+
294
+ async function main() {
295
+ console.log('\n╔═══════════════════════════════════════════════════════════╗');
296
+ console.log('║ SONA Integration Examples - V3 Neural Module ║');
297
+ console.log('║ @ruvector/sona v0.1.5 ║');
298
+ console.log('╚═══════════════════════════════════════════════════════════╝');
299
+
300
+ try {
301
+ await basicLearningExample();
302
+ await adaptationExample();
303
+ await patternDiscoveryExample();
304
+ await performanceMonitoringExample();
305
+
306
+ console.log('\n✓ All examples completed successfully!\n');
307
+ } catch (error) {
308
+ console.error('\n✗ Error running examples:', error);
309
+ process.exit(1);
310
+ }
311
+ }
312
+
313
+ // Run if executed directly
314
+ if (import.meta.url === `file://${process.argv[1]}`) {
315
+ main();
316
+ }
317
+
318
+ export { main };
package/package.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "@sparkleideas/neural",
3
+ "version": "3.5.2-patch.1",
4
+ "type": "module",
5
+ "description": "Neural module - SONA learning integration, neural modes",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": "./dist/index.js"
10
+ },
11
+ "scripts": {
12
+ "test": "vitest run",
13
+ "build": "tsc"
14
+ },
15
+ "dependencies": {
16
+ "@ruvector/sona": "latest",
17
+ "@sparkleideas/memory": "^3.0.0-alpha.2"
18
+ },
19
+ "publishConfig": {
20
+ "access": "public",
21
+ "tag": "v3alpha"
22
+ }
23
+ }
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Advantage Actor-Critic (A2C)
3
+ *
4
+ * Implements synchronous A2C algorithm with:
5
+ * - Shared actor-critic network
6
+ * - N-step returns
7
+ * - Entropy regularization
8
+ * - Advantage normalization
9
+ *
10
+ * Performance Target: <10ms per update step
11
+ */
12
+ import type { RLConfig, Trajectory } from '../types.js';
13
+ /**
14
+ * A2C configuration
15
+ */
16
+ export interface A2CConfig extends RLConfig {
17
+ algorithm: 'a2c';
18
+ nSteps: number;
19
+ useGAE: boolean;
20
+ gaeLambda: number;
21
+ }
22
+ /**
23
+ * Default A2C configuration
24
+ */
25
+ export declare const DEFAULT_A2C_CONFIG: A2CConfig;
26
+ /**
27
+ * A2C Algorithm Implementation
28
+ */
29
+ export declare class A2CAlgorithm {
30
+ private config;
31
+ private sharedWeights;
32
+ private policyHead;
33
+ private valueHead;
34
+ private sharedMomentum;
35
+ private policyMomentum;
36
+ private valueMomentum;
37
+ private buffer;
38
+ private inputDim;
39
+ private hiddenDim;
40
+ private numActions;
41
+ private updateCount;
42
+ private avgPolicyLoss;
43
+ private avgValueLoss;
44
+ private avgEntropy;
45
+ constructor(config?: Partial<A2CConfig>);
46
+ /**
47
+ * Add experience from trajectory
48
+ */
49
+ addExperience(trajectory: Trajectory): void;
50
+ /**
51
+ * Perform A2C update
52
+ * Target: <10ms
53
+ */
54
+ update(): {
55
+ policyLoss: number;
56
+ valueLoss: number;
57
+ entropy: number;
58
+ };
59
+ /**
60
+ * Get action from policy
61
+ */
62
+ getAction(state: Float32Array): {
63
+ action: number;
64
+ value: number;
65
+ };
66
+ /**
67
+ * Get statistics
68
+ */
69
+ getStats(): Record<string, number>;
70
+ private evaluate;
71
+ private forward;
72
+ private forwardWithHidden;
73
+ private computeReturns;
74
+ private computeAdvantages;
75
+ private computeGAE;
76
+ private accumulateGradients;
77
+ private applyGradients;
78
+ private softmax;
79
+ private sampleAction;
80
+ private hashAction;
81
+ }
82
+ /**
83
+ * Factory function
84
+ */
85
+ export declare function createA2C(config?: Partial<A2CConfig>): A2CAlgorithm;
86
+ //# sourceMappingURL=a2c.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2c.d.ts","sourceRoot":"","sources":["a2c.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EAEX,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACzC,SAAS,EAAE,KAAK,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAYhC,CAAC;AAcF;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAY;IAG1B,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,SAAS,CAAe;IAGhC,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,aAAa,CAAe;IAGpC,OAAO,CAAC,MAAM,CAAuB;IAGrC,OAAO,CAAC,QAAQ,CAAO;IACvB,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,UAAU,CAAK;IAGvB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,UAAU,CAAK;gBAEX,MAAM,GAAE,OAAO,CAAC,SAAS,CAAM;IAyB3C;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAgB3C;;;OAGG;IACH,MAAM,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAiFpE;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAMjE;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAclC,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,OAAO;IA+Bf,OAAO,CAAC,iBAAiB;IA4BzB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,mBAAmB;IAkC3B,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,OAAO;IAiBf,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,UAAU;CAOnB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,YAAY,CAEnE"}