@theihtisham/agent-shadow-brain 4.0.3 → 5.0.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 (53) hide show
  1. package/README.md +515 -305
  2. package/dist/adapters/index.d.ts.map +1 -1
  3. package/dist/adapters/index.js +1 -0
  4. package/dist/adapters/index.js.map +1 -1
  5. package/dist/brain/auto-setup.d.ts +54 -0
  6. package/dist/brain/auto-setup.d.ts.map +1 -0
  7. package/dist/brain/auto-setup.js +660 -0
  8. package/dist/brain/auto-setup.js.map +1 -0
  9. package/dist/brain/brain-portability.d.ts +81 -0
  10. package/dist/brain/brain-portability.d.ts.map +1 -0
  11. package/dist/brain/brain-portability.js +329 -0
  12. package/dist/brain/brain-portability.js.map +1 -0
  13. package/dist/brain/collective-learning.d.ts +54 -0
  14. package/dist/brain/collective-learning.d.ts.map +1 -0
  15. package/dist/brain/collective-learning.js +357 -0
  16. package/dist/brain/collective-learning.js.map +1 -0
  17. package/dist/brain/consensus-engine.d.ts +65 -0
  18. package/dist/brain/consensus-engine.d.ts.map +1 -0
  19. package/dist/brain/consensus-engine.js +385 -0
  20. package/dist/brain/consensus-engine.js.map +1 -0
  21. package/dist/brain/context-recall.d.ts +49 -0
  22. package/dist/brain/context-recall.d.ts.map +1 -0
  23. package/dist/brain/context-recall.js +502 -0
  24. package/dist/brain/context-recall.js.map +1 -0
  25. package/dist/brain/hierarchical-memory.d.ts +49 -0
  26. package/dist/brain/hierarchical-memory.d.ts.map +1 -0
  27. package/dist/brain/hierarchical-memory.js +451 -0
  28. package/dist/brain/hierarchical-memory.js.map +1 -0
  29. package/dist/brain/mcp-server.d.ts +12 -0
  30. package/dist/brain/mcp-server.d.ts.map +1 -1
  31. package/dist/brain/mcp-server.js +396 -37
  32. package/dist/brain/mcp-server.js.map +1 -1
  33. package/dist/brain/orchestrator.d.ts +34 -0
  34. package/dist/brain/orchestrator.d.ts.map +1 -1
  35. package/dist/brain/orchestrator.js +83 -1
  36. package/dist/brain/orchestrator.js.map +1 -1
  37. package/dist/brain/plugin-system.d.ts +97 -0
  38. package/dist/brain/plugin-system.d.ts.map +1 -0
  39. package/dist/brain/plugin-system.js +404 -0
  40. package/dist/brain/plugin-system.js.map +1 -0
  41. package/dist/cli.js +429 -3
  42. package/dist/cli.js.map +1 -1
  43. package/dist/dashboard/server.d.ts +4 -0
  44. package/dist/dashboard/server.d.ts.map +1 -1
  45. package/dist/dashboard/server.js +453 -330
  46. package/dist/dashboard/server.js.map +1 -1
  47. package/dist/index.d.ts +8 -1
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +10 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/types.d.ts +201 -1
  52. package/dist/types.d.ts.map +1 -1
  53. package/package.json +32 -4
@@ -0,0 +1,357 @@
1
+ // src/brain/collective-learning.ts — Cross-Project Collective Intelligence
2
+ // Verified rules, viral propagation, accuracy tracking
3
+ // v5.0.0 — Infinite Intelligence Edition
4
+ import * as fs from 'fs';
5
+ import * as path from 'path';
6
+ import * as crypto from 'crypto';
7
+ const STORE_DIR = path.join(process.env.HOME || process.env.USERPROFILE || '~', '.shadow-brain', 'collective');
8
+ const MAX_RULES = 10000;
9
+ const VERIFICATION_THRESHOLD = 2; // Needs 2+ verifications to be "verified"
10
+ const ACCURACY_THRESHOLD = 0.7; // 70% accuracy required for viral propagation
11
+ /**
12
+ * CollectiveLearning — cross-project knowledge sharing with verified rules.
13
+ *
14
+ * When an insight or pattern is discovered in one project, it can be shared
15
+ * as a "rule" to all other projects. Rules go through:
16
+ *
17
+ * 1. **Proposal**: A pattern is extracted and proposed as a general rule
18
+ * 2. **Verification**: Other agents/projects test the rule and report results
19
+ * 3. **Adoption**: Rules that pass verification threshold are adopted
20
+ * 4. **Tracking**: Accuracy is continuously tracked — rules decay if inaccurate
21
+ * 5. **Viral Propagation**: High-accuracy rules spread to more projects
22
+ *
23
+ * Trust model: Rules start with low trust and earn trust through verification.
24
+ */
25
+ export class CollectiveLearning {
26
+ constructor(projectId, customDir) {
27
+ this.rules = new Map();
28
+ this.projectRules = new Map(); // projectId → rule IDs
29
+ this.projectId = projectId;
30
+ this.storeDir = customDir || STORE_DIR;
31
+ this.loadFromDisk();
32
+ }
33
+ // ── Rule Management ──────────────────────────────────────────────────────────
34
+ /** Propose a new rule from a discovered pattern */
35
+ proposeRule(content, category, originAgent, evidence = [], exceptions = []) {
36
+ // Check for duplicate rules
37
+ const contentHash = crypto
38
+ .createHash('sha256')
39
+ .update(content.toLowerCase().trim())
40
+ .digest('hex');
41
+ for (const existing of this.rules.values()) {
42
+ const existingHash = crypto
43
+ .createHash('sha256')
44
+ .update(existing.content.toLowerCase().trim())
45
+ .digest('hex');
46
+ if (existingHash === contentHash) {
47
+ // Already exists — verify it from this project
48
+ this.verifyRule(existing.id, true);
49
+ return existing.id;
50
+ }
51
+ }
52
+ const id = crypto.randomUUID();
53
+ const rule = {
54
+ id,
55
+ content,
56
+ category,
57
+ originProject: this.projectId,
58
+ originAgent,
59
+ verifiedBy: [],
60
+ verifiedCount: 0,
61
+ contradictCount: 0,
62
+ trustScore: 0.3, // Start with low trust
63
+ applicability: this.inferApplicability(content, category),
64
+ exceptions,
65
+ createdAt: new Date(),
66
+ lastVerifiedAt: new Date(),
67
+ timesApplied: 0,
68
+ timesCorrect: 0,
69
+ accuracy: 0.5,
70
+ viralScore: 0,
71
+ };
72
+ this.rules.set(id, rule);
73
+ // Track which rules this project knows about
74
+ if (!this.projectRules.has(this.projectId)) {
75
+ this.projectRules.set(this.projectId, new Set());
76
+ }
77
+ this.projectRules.get(this.projectId).add(id);
78
+ // Cap total rules
79
+ if (this.rules.size > MAX_RULES) {
80
+ this.evictWeakestRules();
81
+ }
82
+ this.persistToDisk();
83
+ return id;
84
+ }
85
+ /** Verify a rule (confirm or contradict from another project/agent) */
86
+ verifyRule(ruleId, confirmed) {
87
+ const rule = this.rules.get(ruleId);
88
+ if (!rule)
89
+ return false;
90
+ if (confirmed) {
91
+ rule.verifiedCount++;
92
+ if (!rule.verifiedBy.includes(this.projectId)) {
93
+ rule.verifiedBy.push(this.projectId);
94
+ }
95
+ }
96
+ else {
97
+ rule.contradictCount++;
98
+ }
99
+ rule.lastVerifiedAt = new Date();
100
+ // Recalculate trust score
101
+ const totalEvidence = rule.verifiedCount + rule.contradictCount;
102
+ if (totalEvidence > 0) {
103
+ const verificationRate = rule.verifiedCount / totalEvidence;
104
+ rule.trustScore = Math.min(1, verificationRate * 0.7 + Math.min(totalEvidence * 0.03, 0.3));
105
+ }
106
+ // Track accuracy
107
+ rule.accuracy = totalEvidence > 0
108
+ ? rule.timesCorrect / Math.max(1, rule.timesApplied)
109
+ : 0.5;
110
+ // Update viral score
111
+ rule.viralScore = this.calculateViralScore(rule);
112
+ this.persistToDisk();
113
+ return true;
114
+ }
115
+ /** Record that a rule was applied and whether it was correct */
116
+ recordApplication(ruleId, wasCorrect) {
117
+ const rule = this.rules.get(ruleId);
118
+ if (!rule)
119
+ return;
120
+ rule.timesApplied++;
121
+ if (wasCorrect) {
122
+ rule.timesCorrect++;
123
+ }
124
+ rule.accuracy = rule.timesApplied > 0
125
+ ? rule.timesCorrect / rule.timesApplied
126
+ : 0;
127
+ // Auto-verify based on application outcome
128
+ this.verifyRule(ruleId, wasCorrect);
129
+ }
130
+ // ── Rule Retrieval ────────────────────────────────────────────────────────────
131
+ /** Get rules applicable to a given context */
132
+ getApplicableRules(context, topK = 20) {
133
+ const candidates = [];
134
+ for (const rule of this.rules.values()) {
135
+ let score = rule.trustScore * 0.4 + rule.accuracy * 0.3 + rule.viralScore * 0.2;
136
+ // Category match
137
+ if (context.category && rule.category === context.category) {
138
+ score += 0.2;
139
+ }
140
+ // Applicability match
141
+ if (context.projectType && rule.applicability.includes(context.projectType)) {
142
+ score += 0.15;
143
+ }
144
+ // Keyword overlap
145
+ if (context.keywords) {
146
+ const ruleLower = rule.content.toLowerCase();
147
+ const matches = context.keywords.filter(k => ruleLower.includes(k.toLowerCase())).length;
148
+ score += Math.min(0.2, matches * 0.05);
149
+ }
150
+ // File path relevance
151
+ if (context.files) {
152
+ for (const file of context.files) {
153
+ if (rule.content.toLowerCase().includes(path.extname(file).slice(1))) {
154
+ score += 0.1;
155
+ }
156
+ }
157
+ }
158
+ // Only include rules with minimum trust
159
+ if (score > 0.3) {
160
+ candidates.push({ rule, score });
161
+ }
162
+ }
163
+ candidates.sort((a, b) => b.score - a.score);
164
+ return candidates.slice(0, topK).map(c => c.rule);
165
+ }
166
+ /** Get rules proposed by a specific project */
167
+ getByOrigin(projectId) {
168
+ return Array.from(this.rules.values())
169
+ .filter(r => r.originProject === projectId);
170
+ }
171
+ /** Get rules verified by a specific project */
172
+ getVerifiedBy(projectId) {
173
+ return Array.from(this.rules.values())
174
+ .filter(r => r.verifiedBy.includes(projectId));
175
+ }
176
+ /** Get all verified rules (above verification threshold) */
177
+ getVerifiedRules() {
178
+ return Array.from(this.rules.values())
179
+ .filter(r => r.verifiedCount >= VERIFICATION_THRESHOLD && r.accuracy >= ACCURACY_THRESHOLD);
180
+ }
181
+ /** Get a specific rule by ID */
182
+ get(ruleId) {
183
+ return this.rules.get(ruleId);
184
+ }
185
+ // ── Viral Propagation ────────────────────────────────────────────────────────
186
+ /** Export high-value rules for sharing with other projects/agents */
187
+ exportViralRules() {
188
+ return this.getVerifiedRules()
189
+ .filter(r => r.viralScore > 0.5)
190
+ .sort((a, b) => b.viralScore - a.viralScore);
191
+ }
192
+ /** Import rules from another project/agent */
193
+ importRules(rules) {
194
+ let imported = 0;
195
+ for (const rule of rules) {
196
+ const existing = this.rules.get(rule.id);
197
+ if (existing) {
198
+ // Merge verification data
199
+ existing.verifiedCount = Math.max(existing.verifiedCount, rule.verifiedCount);
200
+ existing.contradictCount = Math.max(existing.contradictCount, rule.contradictCount);
201
+ existing.trustScore = Math.max(existing.trustScore, rule.trustScore);
202
+ // Merge verifiedBy
203
+ for (const verifier of rule.verifiedBy) {
204
+ if (!existing.verifiedBy.includes(verifier)) {
205
+ existing.verifiedBy.push(verifier);
206
+ }
207
+ }
208
+ // Take higher accuracy
209
+ existing.accuracy = Math.max(existing.accuracy, rule.accuracy);
210
+ existing.viralScore = Math.max(existing.viralScore, rule.viralScore);
211
+ }
212
+ else {
213
+ this.rules.set(rule.id, { ...rule });
214
+ imported++;
215
+ }
216
+ }
217
+ if (imported > 0) {
218
+ this.persistToDisk();
219
+ }
220
+ return imported;
221
+ }
222
+ // ── Internal Helpers ─────────────────────────────────────────────────────────
223
+ calculateViralScore(rule) {
224
+ const verificationScore = Math.min(1, rule.verifiedCount * 0.15);
225
+ const accuracyScore = rule.accuracy;
226
+ const reachScore = Math.min(1, rule.verifiedBy.length * 0.1);
227
+ const ageBonus = Math.min(0.1, (Date.now() - rule.createdAt.getTime()) / (1000 * 60 * 60 * 24 * 30) * 0.02);
228
+ return verificationScore * 0.3 + accuracyScore * 0.4 + reachScore * 0.2 + ageBonus;
229
+ }
230
+ inferApplicability(content, category) {
231
+ const applicability = ['general'];
232
+ const lower = content.toLowerCase();
233
+ const techMap = {
234
+ 'typescript': ['typescript', 'frontend', 'backend'],
235
+ 'javascript': ['javascript', 'frontend', 'backend'],
236
+ 'python': ['python', 'backend', 'ml'],
237
+ 'react': ['react', 'frontend'],
238
+ 'vue': ['vue', 'frontend'],
239
+ 'angular': ['angular', 'frontend'],
240
+ 'node': ['node', 'backend'],
241
+ 'express': ['express', 'backend'],
242
+ 'sql': ['database', 'sql'],
243
+ 'mongodb': ['database', 'mongodb'],
244
+ 'docker': ['devops', 'docker'],
245
+ 'kubernetes': ['devops', 'kubernetes'],
246
+ 'aws': ['cloud', 'aws'],
247
+ 'gcp': ['cloud', 'gcp'],
248
+ 'security': ['security'],
249
+ 'performance': ['performance'],
250
+ 'testing': ['testing'],
251
+ };
252
+ for (const [keyword, tags] of Object.entries(techMap)) {
253
+ if (lower.includes(keyword) || category.includes(keyword)) {
254
+ applicability.push(...tags);
255
+ }
256
+ }
257
+ return [...new Set(applicability)];
258
+ }
259
+ evictWeakestRules() {
260
+ const sorted = Array.from(this.rules.entries())
261
+ .sort((a, b) => a[1].trustScore * a[1].accuracy - b[1].trustScore * b[1].accuracy);
262
+ // Remove bottom 10%
263
+ const toRemove = Math.floor(sorted.length * 0.1);
264
+ for (let i = 0; i < toRemove; i++) {
265
+ this.rules.delete(sorted[i][0]);
266
+ }
267
+ }
268
+ // ── Statistics ────────────────────────────────────────────────────────────────
269
+ getStats() {
270
+ const rules = Array.from(this.rules.values());
271
+ const verified = rules.filter(r => r.verifiedCount >= VERIFICATION_THRESHOLD);
272
+ const categoryCount = new Map();
273
+ for (const rule of rules) {
274
+ categoryCount.set(rule.category, (categoryCount.get(rule.category) || 0) + 1);
275
+ }
276
+ const topCategories = Array.from(categoryCount.entries())
277
+ .sort((a, b) => b[1] - a[1])
278
+ .slice(0, 10)
279
+ .map(([cat, count]) => {
280
+ const catRules = rules.filter(r => r.category === cat);
281
+ const avgAcc = catRules.length > 0
282
+ ? catRules.reduce((s, r) => s + r.accuracy, 0) / catRules.length
283
+ : 0;
284
+ return { category: cat, count, avgAccuracy: avgAcc };
285
+ });
286
+ const avgAccuracy = verified.length > 0
287
+ ? verified.reduce((s, r) => s + r.accuracy, 0) / verified.length
288
+ : 0;
289
+ const recentRules = rules
290
+ .filter(r => Date.now() - r.createdAt.getTime() < 7 * 24 * 60 * 60 * 1000)
291
+ .length;
292
+ return {
293
+ totalRules: rules.length,
294
+ verifiedRules: verified.length,
295
+ averageAccuracy: avgAccuracy,
296
+ topCategories,
297
+ recentAdoptions: recentRules,
298
+ consensusRate: rules.length > 0
299
+ ? rules.filter(r => r.verifiedCount > 0).length / rules.length
300
+ : 0,
301
+ networkSize: new Set(rules.flatMap(r => r.verifiedBy)).size,
302
+ knowledgeBaseSizeMB: 0, // Approximate — would need actual file size
303
+ };
304
+ }
305
+ // ── Persistence ──────────────────────────────────────────────────────────────
306
+ persistToDisk() {
307
+ try {
308
+ if (!fs.existsSync(this.storeDir)) {
309
+ fs.mkdirSync(this.storeDir, { recursive: true });
310
+ }
311
+ const data = {
312
+ rules: Array.from(this.rules.entries()).map(([id, r]) => [
313
+ id,
314
+ {
315
+ ...r,
316
+ createdAt: r.createdAt.toISOString(),
317
+ lastVerifiedAt: r.lastVerifiedAt.toISOString(),
318
+ },
319
+ ]),
320
+ projectRules: Array.from(this.projectRules.entries()).map(([pid, rids]) => [
321
+ pid,
322
+ Array.from(rids),
323
+ ]),
324
+ version: '5.0.0',
325
+ };
326
+ fs.writeFileSync(path.join(this.storeDir, 'collective-rules.json'), JSON.stringify(data));
327
+ }
328
+ catch {
329
+ // Non-blocking
330
+ }
331
+ }
332
+ loadFromDisk() {
333
+ try {
334
+ const file = path.join(this.storeDir, 'collective-rules.json');
335
+ if (!fs.existsSync(file))
336
+ return;
337
+ const data = JSON.parse(fs.readFileSync(file, 'utf-8'));
338
+ if (data.rules) {
339
+ for (const [id, r] of data.rules) {
340
+ const rule = { ...r };
341
+ rule.createdAt = new Date(r.createdAt);
342
+ rule.lastVerifiedAt = new Date(r.lastVerifiedAt);
343
+ this.rules.set(id, rule);
344
+ }
345
+ }
346
+ if (data.projectRules) {
347
+ for (const [pid, rids] of data.projectRules) {
348
+ this.projectRules.set(pid, new Set(rids));
349
+ }
350
+ }
351
+ }
352
+ catch {
353
+ // Fresh start
354
+ }
355
+ }
356
+ }
357
+ //# sourceMappingURL=collective-learning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collective-learning.js","sourceRoot":"","sources":["../../src/brain/collective-learning.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { ConsensusProposal, ConsensusVote, ConsensusResult, TrustScore } from '../types.js';
2
+ type Verdict = 'accepted' | 'rejected' | 'conflict' | 'pending';
3
+ /**
4
+ * ConsensusEngine — multi-agent agreement protocol.
5
+ *
6
+ * When multiple AI agents observe the same codebase, they may produce
7
+ * conflicting insights. This engine:
8
+ *
9
+ * 1. Collects proposals from agents
10
+ * 2. Opens voting windows where agents vote accept/reject with confidence
11
+ * 3. Computes agreement scores and confidence intervals
12
+ * 4. Resolves conflicts via weighted trust scores
13
+ * 5. Tracks long-term trust for each agent based on proposal accuracy
14
+ */
15
+ export declare class ConsensusEngine {
16
+ private proposals;
17
+ private votes;
18
+ private results;
19
+ private trustScores;
20
+ private pendingTimers;
21
+ private storeDir;
22
+ private agentId;
23
+ constructor(agentId?: string, customDir?: string);
24
+ /** Submit a new proposal for consensus */
25
+ propose(content: string, category: string, confidence: number, evidence?: string[]): string;
26
+ /** Vote on a proposal */
27
+ vote(proposalId: string, vote: 'agree' | 'disagree' | 'abstain', confidence: number, reasoning: string): boolean;
28
+ /** Process an incoming vote from a remote agent */
29
+ receiveVote(vote: ConsensusVote): boolean;
30
+ /** Resolve a proposal by computing consensus */
31
+ resolveProposal(proposalId: string): ConsensusResult | null;
32
+ private getTrustScore;
33
+ getTrustScores(): TrustScore[];
34
+ private updateTrustFromResult;
35
+ /** Manually adjust trust for an agent (e.g., human override) */
36
+ setTrust(agentId: string, score: number): void;
37
+ /** Get result for a specific proposal */
38
+ getResult(proposalId: string): ConsensusResult | undefined;
39
+ /** Get all proposals with a specific verdict */
40
+ getByVerdict(verdict: Verdict): ConsensusResult[];
41
+ /** Get proposals by category */
42
+ getByCategory(category: string): ConsensusProposal[];
43
+ /** Get pending proposals (not yet resolved) */
44
+ getPending(): ConsensusProposal[];
45
+ getStats(): {
46
+ totalProposals: number;
47
+ acceptedCount: number;
48
+ rejectedCount: number;
49
+ conflictCount: number;
50
+ pendingCount: number;
51
+ averageAgreement: number;
52
+ agentCount: number;
53
+ topTrustedAgents: Array<{
54
+ agent: string;
55
+ score: number;
56
+ accuracy: number;
57
+ }>;
58
+ };
59
+ private persistToDisk;
60
+ private loadFromDisk;
61
+ /** Clean up timers */
62
+ dispose(): void;
63
+ }
64
+ export {};
65
+ //# sourceMappingURL=consensus-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consensus-engine.d.ts","sourceRoot":"","sources":["../../src/brain/consensus-engine.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,UAAU,EACX,MAAM,aAAa,CAAC;AAWrB,KAAK,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;AAEhE;;;;;;;;;;;GAWG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,KAAK,CAA2C;IACxD,OAAO,CAAC,OAAO,CAA2C;IAC1D,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,aAAa,CAA0C;IAC/D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IAQhD,0CAA0C;IAC1C,OAAO,CACL,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAAM,EAAO,GACtB,MAAM;IA8BT,yBAAyB;IACzB,IAAI,CACF,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,EACtC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO;IA+BV,mDAAmD;IACnD,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAsBzC,gDAAgD;IAChD,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAiF3D,OAAO,CAAC,aAAa;IAMrB,cAAc,IAAI,UAAU,EAAE;IAI9B,OAAO,CAAC,qBAAqB;IAuC7B,gEAAgE;IAChE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAiB9C,yCAAyC;IACzC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI1D,gDAAgD;IAChD,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,EAAE;IAKjD,gCAAgC;IAChC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAKpD,+CAA+C;IAC/C,UAAU,IAAI,iBAAiB,EAAE;IASjC,QAAQ,IAAI;QACV,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC7E;YAsCa,aAAa;IA4C3B,OAAO,CAAC,YAAY;IAqDpB,sBAAsB;IACtB,OAAO,IAAI,IAAI;CAMhB"}