hackmyagent 0.11.15 → 0.12.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 (33) hide show
  1. package/README.md +14 -5
  2. package/dist/.integrity-manifest.json +1 -0
  3. package/dist/arp/intelligence/ast-monitor.d.ts +62 -0
  4. package/dist/arp/intelligence/ast-monitor.d.ts.map +1 -0
  5. package/dist/arp/intelligence/ast-monitor.js +197 -0
  6. package/dist/arp/intelligence/ast-monitor.js.map +1 -0
  7. package/dist/cli.js +24 -5
  8. package/dist/cli.js.map +1 -1
  9. package/dist/nanomind-core/compiler/semantic-compiler.d.ts.map +1 -1
  10. package/dist/nanomind-core/compiler/semantic-compiler.js +29 -6
  11. package/dist/nanomind-core/compiler/semantic-compiler.js.map +1 -1
  12. package/dist/nanomind-core/index.d.ts +6 -0
  13. package/dist/nanomind-core/index.d.ts.map +1 -1
  14. package/dist/nanomind-core/index.js +23 -1
  15. package/dist/nanomind-core/index.js.map +1 -1
  16. package/dist/nanomind-core/inference/tme-classifier.d.ts +62 -0
  17. package/dist/nanomind-core/inference/tme-classifier.d.ts.map +1 -0
  18. package/dist/nanomind-core/inference/tme-classifier.js +176 -0
  19. package/dist/nanomind-core/inference/tme-classifier.js.map +1 -0
  20. package/dist/nanomind-core/verification/ast-validator.d.ts +55 -0
  21. package/dist/nanomind-core/verification/ast-validator.d.ts.map +1 -0
  22. package/dist/nanomind-core/verification/ast-validator.js +228 -0
  23. package/dist/nanomind-core/verification/ast-validator.js.map +1 -0
  24. package/dist/scanner/external-scanner.d.ts.map +1 -1
  25. package/dist/scanner/external-scanner.js +37 -30
  26. package/dist/scanner/external-scanner.js.map +1 -1
  27. package/dist/simulation/index.d.ts +1 -1
  28. package/dist/simulation/index.js +1 -1
  29. package/dist/skills/builder.d.ts +55 -0
  30. package/dist/skills/builder.d.ts.map +1 -0
  31. package/dist/skills/builder.js +282 -0
  32. package/dist/skills/builder.js.map +1 -0
  33. package/package.json +3 -2
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ /**
3
+ * AST Behavioral Validator
4
+ *
5
+ * Tests whether the SecurityAST's claims hold under behavioral simulation.
6
+ * The AST says what an artifact DECLARES and what NanoMind INFERS.
7
+ * The validator OBSERVES what the artifact actually DOES.
8
+ *
9
+ * This is the third leg of defense-in-depth:
10
+ * 1. Static analysis: pattern matching on raw text
11
+ * 2. NanoMind AST: semantic understanding of intent
12
+ * 3. Behavioral validation: observation of actual behavior
13
+ *
14
+ * All three must agree for high-confidence classification.
15
+ *
16
+ * Security: even if both static and NanoMind are fooled,
17
+ * behavioral observation catches the actual behavior.
18
+ */
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.validateAST = validateAST;
21
+ const engine_js_1 = require("../../simulation/engine.js");
22
+ const defense_in_depth_js_1 = require("../security/defense-in-depth.js");
23
+ // ============================================================================
24
+ // AST Validator
25
+ // ============================================================================
26
+ /**
27
+ * Validate an AST's claims against behavioral simulation.
28
+ *
29
+ * @param ast - The compiled SecurityAST to validate
30
+ * @param rawContent - The original artifact content (for simulation)
31
+ * @param verifier - AST signature verifier
32
+ */
33
+ async function validateAST(ast, rawContent, verifier) {
34
+ const startMs = Date.now();
35
+ // Verify AST integrity first
36
+ (0, defense_in_depth_js_1.assertASTIntegrity)(ast, verifier);
37
+ const claims = [];
38
+ const discrepancies = [];
39
+ // Run behavioral simulation
40
+ const sim = new engine_js_1.SimulationEngine();
41
+ const profile = (0, engine_js_1.parseSkillProfile)(rawContent, ast.artifactPath ?? 'unknown');
42
+ let simulation = null;
43
+ try {
44
+ simulation = await sim.runLayer3(profile);
45
+ }
46
+ catch {
47
+ // Simulation failed -- validate AST against heuristics only
48
+ }
49
+ // Validate capability claims
50
+ validateCapabilities(ast, simulation, claims, discrepancies);
51
+ // Validate constraint claims
52
+ validateConstraints(ast, simulation, claims, discrepancies);
53
+ // Validate intent classification
54
+ validateIntent(ast, simulation, claims, discrepancies);
55
+ // Validate scope claims
56
+ validateScope(ast, simulation, claims, discrepancies);
57
+ // Compute overall accuracy
58
+ const validated = claims.filter(c => c.validated).length;
59
+ const astAccuracy = claims.length > 0 ? validated / claims.length : 1;
60
+ return {
61
+ valid: discrepancies.filter(d => d.severity === 'critical').length === 0,
62
+ claims,
63
+ simulation,
64
+ astAccuracy,
65
+ discrepancies,
66
+ durationMs: Date.now() - startMs,
67
+ };
68
+ }
69
+ // ============================================================================
70
+ // Claim Validators
71
+ // ============================================================================
72
+ function validateCapabilities(ast, sim, claims, discrepancies) {
73
+ // Claim: declared capabilities are the ONLY capabilities exercised
74
+ const declaredNames = new Set(ast.declaredCapabilities.map(c => c.name));
75
+ const inferredUndeclared = ast.inferredCapabilities.filter(c => c.inferred && !c.declared);
76
+ // Check if simulation found undeclared behavior
77
+ if (sim) {
78
+ const failedScopes = sim.failedProbes.filter(p => p.category === 'scope_expansion');
79
+ if (failedScopes.length > 0 && inferredUndeclared.length === 0) {
80
+ // Simulation found scope expansion that AST didn't predict
81
+ discrepancies.push({
82
+ description: 'Simulation detected scope expansion not predicted by AST',
83
+ severity: 'high',
84
+ astClaim: 'No undeclared capabilities',
85
+ observedBehavior: `${failedScopes.length} scope expansion probe(s) failed`,
86
+ });
87
+ }
88
+ }
89
+ for (const cap of ast.declaredCapabilities) {
90
+ claims.push({
91
+ claim: `Capability: ${cap.name}`,
92
+ type: 'capability',
93
+ astSays: `Declared, risk level: ${cap.riskLevel}`,
94
+ behaviorShows: sim ? 'Simulation ran' : 'No simulation data',
95
+ validated: true, // Declared capabilities are accepted
96
+ confidence: 0.8,
97
+ });
98
+ }
99
+ for (const cap of inferredUndeclared) {
100
+ claims.push({
101
+ claim: `Undeclared capability: ${cap.name}`,
102
+ type: 'capability',
103
+ astSays: `Inferred but not declared, risk: ${cap.riskLevel}`,
104
+ behaviorShows: sim?.failedProbes.some(p => p.category === 'scope_expansion')
105
+ ? 'Simulation confirms scope expansion'
106
+ : 'Not confirmed by simulation',
107
+ validated: false,
108
+ confidence: 0.6,
109
+ });
110
+ if (cap.riskLevel === 'critical' || cap.riskLevel === 'high') {
111
+ discrepancies.push({
112
+ description: `High-risk undeclared capability: ${cap.name}`,
113
+ severity: cap.riskLevel === 'critical' ? 'critical' : 'high',
114
+ astClaim: `${cap.name} is inferred but not declared`,
115
+ observedBehavior: cap.evidence ?? 'Inferred from content analysis',
116
+ });
117
+ }
118
+ }
119
+ }
120
+ function validateConstraints(ast, sim, claims, discrepancies) {
121
+ for (const constraint of ast.declaredConstraints) {
122
+ // Check if simulation tested override resistance
123
+ const overrideProbes = sim?.failedProbes.filter(p => p.category === 'override_resistance') ?? [];
124
+ const overrideResisted = sim?.passedProbes.filter(p => p.category === 'override_resistance') ?? [];
125
+ if (constraint.domain === 'behavioral_constraint' || constraint.domain === 'capability_boundary') {
126
+ const holds = overrideResisted.length >= overrideProbes.length;
127
+ claims.push({
128
+ claim: `Constraint: ${constraint.text.slice(0, 60)}...`,
129
+ type: 'constraint',
130
+ astSays: `Enforceability: ${(constraint.enforceability * 100).toFixed(0)}%, bypass risk: ${(constraint.bypassRisk * 100).toFixed(0)}%`,
131
+ behaviorShows: sim
132
+ ? (holds ? 'Constraint held under simulation probes' : 'Constraint FAILED under simulation probes')
133
+ : 'No simulation data',
134
+ validated: holds,
135
+ confidence: sim ? 0.85 : 0.5,
136
+ });
137
+ if (!holds && sim) {
138
+ discrepancies.push({
139
+ description: `Constraint bypassed: "${constraint.text.slice(0, 60)}..."`,
140
+ severity: 'high',
141
+ astClaim: `Constraint with ${(constraint.enforceability * 100).toFixed(0)}% enforceability`,
142
+ observedBehavior: `${overrideProbes.length} override probe(s) succeeded`,
143
+ });
144
+ }
145
+ }
146
+ }
147
+ // Check: AST says no constraints, simulation confirms vulnerability
148
+ if (ast.declaredConstraints.length === 0 && sim?.verdict === 'MALICIOUS') {
149
+ discrepancies.push({
150
+ description: 'No governance constraints and simulation confirms malicious behavior',
151
+ severity: 'critical',
152
+ astClaim: 'Zero constraints declared',
153
+ observedBehavior: `Simulation verdict: MALICIOUS (${(sim.confidence * 100).toFixed(0)}% confidence)`,
154
+ });
155
+ }
156
+ }
157
+ function validateIntent(ast, sim, claims, discrepancies) {
158
+ if (!sim) {
159
+ claims.push({
160
+ claim: `Intent: ${ast.intentClassification}`,
161
+ type: 'intent',
162
+ astSays: `${ast.intentClassification} (${(ast.intentConfidence * 100).toFixed(0)}% confidence)`,
163
+ behaviorShows: 'No simulation data to verify',
164
+ validated: true, // Accept AST without simulation
165
+ confidence: ast.intentConfidence * 0.7, // Lower confidence without behavioral verification
166
+ });
167
+ return;
168
+ }
169
+ // Compare AST intent with simulation verdict
170
+ const astIntent = ast.intentClassification;
171
+ const simVerdict = sim.verdict.toLowerCase();
172
+ const intentMap = {
173
+ benign: ['clean'],
174
+ suspicious: ['suspicious', 'clean'],
175
+ malicious: ['malicious', 'suspicious'],
176
+ };
177
+ const agrees = intentMap[astIntent]?.includes(simVerdict) ?? false;
178
+ claims.push({
179
+ claim: `Intent: ${astIntent}`,
180
+ type: 'intent',
181
+ astSays: `${astIntent} (${(ast.intentConfidence * 100).toFixed(0)}% confidence)`,
182
+ behaviorShows: `Simulation: ${sim.verdict} (${(sim.confidence * 100).toFixed(0)}% confidence)`,
183
+ validated: agrees,
184
+ confidence: agrees ? Math.max(ast.intentConfidence, sim.confidence) : 0.3,
185
+ });
186
+ if (!agrees) {
187
+ // Intent disagreement
188
+ const severity = astIntent === 'benign' && simVerdict === 'malicious' ? 'critical' : 'high';
189
+ discrepancies.push({
190
+ description: `AST says ${astIntent} but simulation says ${sim.verdict}`,
191
+ severity,
192
+ astClaim: `Intent: ${astIntent} (${(ast.intentConfidence * 100).toFixed(0)}%)`,
193
+ observedBehavior: `Simulation: ${sim.verdict} (${(sim.confidence * 100).toFixed(0)}%, ${sim.failedProbes.length} failed probes)`,
194
+ });
195
+ }
196
+ }
197
+ function validateScope(ast, sim, claims, discrepancies) {
198
+ // Check semantic delta from simulation
199
+ if (sim && sim.semanticDelta > 0.5) {
200
+ claims.push({
201
+ claim: 'Scope: behavior matches declared purpose',
202
+ type: 'scope',
203
+ astSays: `Purpose: "${ast.declaredPurpose.slice(0, 60)}"`,
204
+ behaviorShows: `Semantic delta: ${(sim.semanticDelta * 100).toFixed(0)}% divergence from declared purpose`,
205
+ validated: false,
206
+ confidence: 0.7,
207
+ });
208
+ discrepancies.push({
209
+ description: 'Observed behavior significantly diverges from declared purpose',
210
+ severity: sim.semanticDelta > 0.7 ? 'high' : 'medium',
211
+ astClaim: `Purpose: "${ast.declaredPurpose.slice(0, 60)}"`,
212
+ observedBehavior: `${(sim.semanticDelta * 100).toFixed(0)}% semantic divergence`,
213
+ });
214
+ }
215
+ else {
216
+ claims.push({
217
+ claim: 'Scope: behavior matches declared purpose',
218
+ type: 'scope',
219
+ astSays: `Purpose: "${ast.declaredPurpose.slice(0, 60)}"`,
220
+ behaviorShows: sim
221
+ ? `Semantic delta: ${((sim.semanticDelta ?? 0) * 100).toFixed(0)}% (within acceptable range)`
222
+ : 'No simulation data',
223
+ validated: true,
224
+ confidence: sim ? 0.85 : 0.5,
225
+ });
226
+ }
227
+ }
228
+ //# sourceMappingURL=ast-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-validator.js","sourceRoot":"","sources":["../../../src/nanomind-core/verification/ast-validator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"external-scanner.d.ts","sourceRoot":"","sources":["../../src/scanner/external-scanner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAmB,cAAc,EAAmB,MAAM,SAAS,CAAC;AA0EpG,qBAAa,eAAe;IACpB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAqDnE,SAAS;IAmBvB,OAAO,CAAC,UAAU;YAyBJ,SAAS;IAwHvB,OAAO,CAAC,SAAS;CA+ClB"}
1
+ {"version":3,"file":"external-scanner.d.ts","sourceRoot":"","sources":["../../src/scanner/external-scanner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAmB,cAAc,EAAmB,MAAM,SAAS,CAAC;AA0EpG,qBAAa,eAAe;IACpB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAiEnE,SAAS;IAmBvB,OAAO,CAAC,UAAU;YAyBJ,SAAS;IAwHvB,OAAO,CAAC,SAAS;CA+ClB"}
@@ -119,43 +119,50 @@ class ExternalScanner {
119
119
  // Extract hostname for private IP warning
120
120
  const hostname = target.replace(/^https?:\/\//, '').split(/[:/]/)[0];
121
121
  if (isPrivateOrReserved(hostname)) {
122
- // Log warning but allow scanning local services is a core use case for security testing
122
+ // Log warning but allow -- scanning local services is a core use case for security testing
123
123
  console.warn(`[HMA] Warning: scanning private/reserved address "${hostname}". Ensure you have authorization.`);
124
124
  }
125
125
  const startTime = Date.now();
126
126
  const timeout = options?.timeout ?? 5000;
127
127
  const ports = options?.ports ?? DEFAULT_PORTS;
128
128
  const skipPortScan = options?.skipPortScan ?? false;
129
- // Port scan
130
- let openPorts = [];
131
- if (!skipPortScan) {
132
- openPorts = await this.scanPorts(target, ports, timeout);
133
- }
134
- // Run security checks on open ports
135
- const findings = [];
136
- const insecure = options?.insecure === true;
137
- for (const port of openPorts) {
138
- const portFindings = await this.checkPort(target, port, timeout, insecure);
139
- findings.push(...portFindings);
140
- }
141
- // Calculate score
142
- let score = 100;
143
- for (const finding of findings) {
144
- score -= SEVERITY_WEIGHTS[finding.severity];
145
- }
146
- score = Math.max(0, score);
147
- const grade = calculateGrade(score);
148
- const duration = Date.now() - startTime;
149
- return {
150
- id: generateId(),
151
- target,
152
- score,
153
- grade,
154
- findings,
155
- duration,
156
- timestamp: new Date(),
157
- openPorts,
129
+ // Global scan timeout: per-port timeout * port count, capped at 60s
130
+ const globalTimeout = Math.min(timeout * ports.length, 60000);
131
+ // Race the scan against a global timeout
132
+ const scanWork = async () => {
133
+ // Port scan
134
+ let openPorts = [];
135
+ if (!skipPortScan) {
136
+ openPorts = await this.scanPorts(target, ports, timeout);
137
+ }
138
+ // Run security checks on open ports
139
+ const findings = [];
140
+ const insecure = options?.insecure === true;
141
+ for (const port of openPorts) {
142
+ const portFindings = await this.checkPort(target, port, timeout, insecure);
143
+ findings.push(...portFindings);
144
+ }
145
+ // Calculate score
146
+ let score = 100;
147
+ for (const finding of findings) {
148
+ score -= SEVERITY_WEIGHTS[finding.severity];
149
+ }
150
+ score = Math.max(0, score);
151
+ const grade = calculateGrade(score);
152
+ const duration = Date.now() - startTime;
153
+ return {
154
+ id: generateId(),
155
+ target,
156
+ score,
157
+ grade,
158
+ findings,
159
+ duration,
160
+ timestamp: new Date(),
161
+ openPorts,
162
+ };
158
163
  };
164
+ const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error(`Scan timed out after ${globalTimeout}ms. Try fewer ports or increase -t timeout.`)), globalTimeout));
165
+ return Promise.race([scanWork(), timeoutPromise]);
159
166
  }
160
167
  async scanPorts(target, ports, timeout) {
161
168
  const openPorts = [];
@@ -1 +1 @@
1
- {"version":3,"file":"external-scanner.js","sourceRoot":"","sources":["../../src/scanner/external-scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"external-scanner.js","sourceRoot":"","sources":["../../src/scanner/external-scanner.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Behavioral simulation that observes what skills actually DO.
5
5
  * Three layers: NanoMind semantic (8ms) -> targeted probes (3s) -> full simulation (30s).
6
- * Target: < 1% false positive rate vs industry 95.8%.
6
+ * Target: < 1% false positive rate vs industry 0.12% scanner agreement (theweatherreport.ai).
7
7
  */
8
8
  export { SimulationEngine, parseSkillProfile } from './engine.js';
9
9
  export { MockToolEnvironment } from './mock-tools.js';
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Behavioral simulation that observes what skills actually DO.
6
6
  * Three layers: NanoMind semantic (8ms) -> targeted probes (3s) -> full simulation (30s).
7
- * Target: < 1% false positive rate vs industry 95.8%.
7
+ * Target: < 1% false positive rate vs industry 0.12% scanner agreement (theweatherreport.ai).
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.DEFAULT_LAYER3_CONFIG = exports.DEFAULT_LAYER2_CONFIG = exports.getProbeCategoryCounts = exports.getProbesByCategory = exports.LAYER3_PROBES = exports.LAYER2_PROBES = exports.ALL_PROBES = exports.executeProbeLLM = exports.OllamaBackend = exports.AnthropicBackend = exports.NanoMindBackend = exports.detectBestBackend = exports.MockToolEnvironment = exports.parseSkillProfile = exports.SimulationEngine = void 0;
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Skills Builder -- Create best-practice, secured skills with zero friction
3
+ *
4
+ * UX philosophy: capture what the user wants, create it for them.
5
+ * The user describes what they need in plain English.
6
+ * We generate a complete, secured skill package:
7
+ * - SKILL.md with proper frontmatter
8
+ * - SOUL.md governance file
9
+ * - Capability manifest
10
+ * - Auto-scan to verify security before shipping
11
+ *
12
+ * Personas:
13
+ * Developer: "I need a skill that reads customer tickets and summarizes them"
14
+ * → We generate the skill, SOUL, manifest, and scan it
15
+ *
16
+ * Three principles applied:
17
+ * 1. NanoMind: AST compiler validates the generated skill
18
+ * 2. Security-first: every generated skill has SOUL governance by default
19
+ * 3. World-class: wizard UX, not a blank template
20
+ */
21
+ export interface SkillSpec {
22
+ /** What the skill does (plain English from user) */
23
+ purpose: string;
24
+ /** Skill name (derived from purpose if not provided) */
25
+ name?: string;
26
+ /** Capabilities the skill needs */
27
+ capabilities?: string[];
28
+ /** Data types the skill accesses */
29
+ dataAccess?: string[];
30
+ /** Whether it needs external API access */
31
+ externalAccess?: boolean;
32
+ /** Output directory */
33
+ outputDir?: string;
34
+ }
35
+ export interface GeneratedSkill {
36
+ /** Generated SKILL.md content */
37
+ skillMd: string;
38
+ /** Generated SOUL.md governance */
39
+ soulMd: string;
40
+ /** Generated capability manifest */
41
+ manifest: Record<string, unknown>;
42
+ /** Suggested directory name */
43
+ dirName: string;
44
+ /** Files written */
45
+ filesWritten: string[];
46
+ }
47
+ /**
48
+ * Generate a complete, secured skill package from a plain English description.
49
+ */
50
+ export declare function generateSkill(spec: SkillSpec): GeneratedSkill;
51
+ /**
52
+ * Generate and write skill files to disk.
53
+ */
54
+ export declare function writeSkill(spec: SkillSpec): GeneratedSkill;
55
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/skills/builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AASH,MAAM,WAAW,SAAS;IACxB,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,cAAc,CAiB7D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,cAAc,CAmB1D"}