triage-ai 1.0.2

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 (61) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +209 -0
  3. package/dist/cli.d.ts +9 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +633 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/mcp-server.d.ts +24 -0
  8. package/dist/mcp-server.d.ts.map +1 -0
  9. package/dist/mcp-server.js +411 -0
  10. package/dist/mcp-server.js.map +1 -0
  11. package/dist/memory.d.ts +40 -0
  12. package/dist/memory.d.ts.map +1 -0
  13. package/dist/memory.js +241 -0
  14. package/dist/memory.js.map +1 -0
  15. package/dist/merge.d.ts +32 -0
  16. package/dist/merge.d.ts.map +1 -0
  17. package/dist/merge.js +251 -0
  18. package/dist/merge.js.map +1 -0
  19. package/dist/models/base.d.ts +72 -0
  20. package/dist/models/base.d.ts.map +1 -0
  21. package/dist/models/base.js +342 -0
  22. package/dist/models/base.js.map +1 -0
  23. package/dist/models/claude.d.ts +23 -0
  24. package/dist/models/claude.d.ts.map +1 -0
  25. package/dist/models/claude.js +30 -0
  26. package/dist/models/claude.js.map +1 -0
  27. package/dist/models/codex.d.ts +25 -0
  28. package/dist/models/codex.d.ts.map +1 -0
  29. package/dist/models/codex.js +34 -0
  30. package/dist/models/codex.js.map +1 -0
  31. package/dist/models/gemini.d.ts +23 -0
  32. package/dist/models/gemini.d.ts.map +1 -0
  33. package/dist/models/gemini.js +32 -0
  34. package/dist/models/gemini.js.map +1 -0
  35. package/dist/patch.d.ts +40 -0
  36. package/dist/patch.d.ts.map +1 -0
  37. package/dist/patch.js +183 -0
  38. package/dist/patch.js.map +1 -0
  39. package/dist/progress.d.ts +71 -0
  40. package/dist/progress.d.ts.map +1 -0
  41. package/dist/progress.js +268 -0
  42. package/dist/progress.js.map +1 -0
  43. package/dist/report.d.ts +19 -0
  44. package/dist/report.d.ts.map +1 -0
  45. package/dist/report.js +245 -0
  46. package/dist/report.js.map +1 -0
  47. package/dist/scanner.d.ts +64 -0
  48. package/dist/scanner.d.ts.map +1 -0
  49. package/dist/scanner.js +645 -0
  50. package/dist/scanner.js.map +1 -0
  51. package/dist/setup.d.ts +52 -0
  52. package/dist/setup.d.ts.map +1 -0
  53. package/dist/setup.js +252 -0
  54. package/dist/setup.js.map +1 -0
  55. package/dist/types.d.ts +153 -0
  56. package/dist/types.d.ts.map +1 -0
  57. package/dist/types.js +203 -0
  58. package/dist/types.js.map +1 -0
  59. package/examples/claude-code-skill.md +22 -0
  60. package/examples/mcp-config.json +9 -0
  61. package/package.json +77 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * MCP (Model Context Protocol) server for triage-ai.
3
+ *
4
+ * Exposes triage functionality as the "triage" tool that any MCP-compatible
5
+ * client (Claude Desktop, Claude Code, Cursor, Windsurf, Cline, etc.) can call.
6
+ *
7
+ * Transport: stdio (stdin/stdout) — standard for local MCP servers.
8
+ *
9
+ * Port of triage_cli/mcp_server.py:
10
+ * - McpServer high-level API from @modelcontextprotocol/sdk
11
+ * - StdioServerTransport for stdio transport
12
+ * - Zod schema validation on tool inputs
13
+ * - Per-request UUID-suffixed results directories for concurrent safety
14
+ * - Old results directories pruned to MAX_RESULTS_DIRS newest
15
+ * - Errors from individual models appended as Notes in the report
16
+ */
17
+ /**
18
+ * Create the MCP server, connect the stdio transport and start listening.
19
+ *
20
+ * Called from cli.ts when the --mcp flag is set.
21
+ * Resolves when the transport closes (client disconnects).
22
+ */
23
+ export declare function startMcpServer(): Promise<void>;
24
+ //# sourceMappingURL=mcp-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAmdH;;;;;GAKG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CASpD"}
@@ -0,0 +1,411 @@
1
+ /**
2
+ * MCP (Model Context Protocol) server for triage-ai.
3
+ *
4
+ * Exposes triage functionality as the "triage" tool that any MCP-compatible
5
+ * client (Claude Desktop, Claude Code, Cursor, Windsurf, Cline, etc.) can call.
6
+ *
7
+ * Transport: stdio (stdin/stdout) — standard for local MCP servers.
8
+ *
9
+ * Port of triage_cli/mcp_server.py:
10
+ * - McpServer high-level API from @modelcontextprotocol/sdk
11
+ * - StdioServerTransport for stdio transport
12
+ * - Zod schema validation on tool inputs
13
+ * - Per-request UUID-suffixed results directories for concurrent safety
14
+ * - Old results directories pruned to MAX_RESULTS_DIRS newest
15
+ * - Errors from individual models appended as Notes in the report
16
+ */
17
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
18
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
19
+ import { rmSync, mkdirSync, readdirSync, statSync, readFileSync, writeFileSync } from 'node:fs';
20
+ import { writeFile } from 'node:fs/promises';
21
+ import { join, resolve } from 'node:path';
22
+ import { randomBytes } from 'node:crypto';
23
+ import { z } from 'zod';
24
+ import { RepoScanner } from './scanner.js';
25
+ import { MergeEngine, mergedResultToDict } from './merge.js';
26
+ // ---------------------------------------------------------------------------
27
+ // Constants
28
+ // ---------------------------------------------------------------------------
29
+ /** Maximum number of per-run result directories to keep (oldest pruned). */
30
+ const MAX_RESULTS_DIRS = 20;
31
+ /** Base directory for intermediate results. */
32
+ const RESULTS_BASE = resolve(process.cwd(), 'triage_results');
33
+ // ---------------------------------------------------------------------------
34
+ // Tool input schema (Zod — required by McpServer.tool())
35
+ // ---------------------------------------------------------------------------
36
+ const TriageInputSchema = {
37
+ prompt: z.string().describe('What to analyze (e.g., "find security vulnerabilities in the authentication flow")'),
38
+ models: z
39
+ .string()
40
+ .optional()
41
+ .default('claude,gemini,codex')
42
+ .describe('Comma-separated models to use (default: claude,gemini,codex)'),
43
+ diff_only: z
44
+ .boolean()
45
+ .optional()
46
+ .default(false)
47
+ .describe('Only analyze git diff instead of full files'),
48
+ max_files: z
49
+ .number()
50
+ .int()
51
+ .min(1)
52
+ .max(200)
53
+ .optional()
54
+ .default(30)
55
+ .describe('Maximum files to analyze (default: 30)'),
56
+ format: z
57
+ .enum(['md', 'json'])
58
+ .optional()
59
+ .default('md')
60
+ .describe('Output format (default: md)'),
61
+ timeout: z
62
+ .number()
63
+ .int()
64
+ .min(30)
65
+ .max(1800)
66
+ .optional()
67
+ .default(300)
68
+ .describe('Timeout per model in seconds (default: 300)'),
69
+ remember: z
70
+ .boolean()
71
+ .optional()
72
+ .default(false)
73
+ .describe('Save findings to AI memory files (CLAUDE.md, GEMINI.md, AGENTS.md)'),
74
+ };
75
+ // ---------------------------------------------------------------------------
76
+ // Helpers
77
+ // ---------------------------------------------------------------------------
78
+ /**
79
+ * Check whether a path exists.
80
+ */
81
+ function pathExists(p) {
82
+ try {
83
+ statSync(p);
84
+ return true;
85
+ }
86
+ catch {
87
+ return false;
88
+ }
89
+ }
90
+ /**
91
+ * Check whether a path is a directory.
92
+ */
93
+ function isDirectory(p) {
94
+ try {
95
+ return statSync(p).isDirectory();
96
+ }
97
+ catch {
98
+ return false;
99
+ }
100
+ }
101
+ /**
102
+ * Prune old results directories, keeping only the newest MAX_RESULTS_DIRS.
103
+ */
104
+ function pruneResultsDirs() {
105
+ if (!pathExists(RESULTS_BASE))
106
+ return;
107
+ let entries = [];
108
+ try {
109
+ entries = readdirSync(RESULTS_BASE)
110
+ .map((name) => {
111
+ const full = join(RESULTS_BASE, name);
112
+ try {
113
+ return { path: full, mtime: statSync(full).mtimeMs };
114
+ }
115
+ catch {
116
+ return null;
117
+ }
118
+ })
119
+ .filter((e) => e !== null && isDirectory(e.path))
120
+ .sort((a, b) => b.mtime - a.mtime); // newest first
121
+ }
122
+ catch {
123
+ return;
124
+ }
125
+ for (const entry of entries.slice(MAX_RESULTS_DIRS)) {
126
+ try {
127
+ rmSync(entry.path, { recursive: true, force: true });
128
+ }
129
+ catch {
130
+ // Best-effort
131
+ }
132
+ }
133
+ }
134
+ /**
135
+ * Dynamically import and instantiate a model class by name.
136
+ * Returns null if the name is not recognised or the module is unavailable.
137
+ */
138
+ async function loadModel(name) {
139
+ const lower = name.trim().toLowerCase();
140
+ try {
141
+ if (lower === 'claude') {
142
+ const { ClaudeModel } = await import('./models/claude.js');
143
+ return new ClaudeModel();
144
+ }
145
+ if (lower === 'gemini') {
146
+ const { GeminiModel } = await import('./models/gemini.js');
147
+ return new GeminiModel();
148
+ }
149
+ if (lower === 'codex') {
150
+ const { CodexModel } = await import('./models/codex.js');
151
+ return new CodexModel();
152
+ }
153
+ }
154
+ catch {
155
+ // Module missing — treat as unavailable
156
+ }
157
+ return null;
158
+ }
159
+ /**
160
+ * Generate a Markdown report from merged findings.
161
+ */
162
+ function toMarkdown(merged, prompt, elapsedSec, modelNames) {
163
+ const totalFindings = merged.blockers.length +
164
+ merged.high.length +
165
+ merged.medium.length +
166
+ merged.low.length;
167
+ const lines = [
168
+ '# Triage Report',
169
+ '',
170
+ `**Prompt:** ${prompt}`,
171
+ `**Models:** ${modelNames.join(', ')}`,
172
+ `**Time:** ${elapsedSec.toFixed(1)}s`,
173
+ `**Total findings:** ${totalFindings}` +
174
+ (merged.consensus.length > 0 ? ` (${merged.consensus.length} consensus)` : ''),
175
+ '',
176
+ ];
177
+ if (Object.keys(merged.summaries).length > 0) {
178
+ lines.push('## Model Summaries', '');
179
+ for (const [model, summary] of Object.entries(merged.summaries)) {
180
+ lines.push(`**${model}:** ${summary}`, '');
181
+ }
182
+ }
183
+ const sections = [
184
+ ['S0 — Blockers', merged.blockers],
185
+ ['S1 — High', merged.high],
186
+ ['S2 — Medium', merged.medium],
187
+ ['S3 — Low', merged.low],
188
+ ];
189
+ for (const [heading, clusters] of sections) {
190
+ if (clusters.length === 0)
191
+ continue;
192
+ lines.push(`## ${heading}`, '');
193
+ for (const cluster of clusters) {
194
+ const rep = cluster.findings[0];
195
+ if (!rep)
196
+ continue;
197
+ const consensus = cluster.models.size >= 2 ? ' ⚡ consensus' : '';
198
+ const models = [...cluster.models].join(', ');
199
+ lines.push(`### ${rep.title}${consensus}`, '', `**Location:** \`${rep.location.path}:${rep.location.start_line}\` ` +
200
+ `**Category:** ${rep.category} ` +
201
+ `**Confidence:** ${rep.confidence} ` +
202
+ `**Models:** ${models}`, '', rep.evidence, '', `**Recommendation:** ${rep.recommendation}`, '');
203
+ if (rep.patch) {
204
+ lines.push('```diff', rep.patch, '```', '');
205
+ }
206
+ }
207
+ }
208
+ if (merged.conflicts.length > 0) {
209
+ lines.push('## Conflicts', '');
210
+ for (const conflict of merged.conflicts) {
211
+ lines.push(`- **${conflict.title}:** ${conflict.details}`);
212
+ }
213
+ lines.push('');
214
+ }
215
+ return lines.join('\n');
216
+ }
217
+ /**
218
+ * Write triage findings into AI memory files (CLAUDE.md, GEMINI.md, AGENTS.md).
219
+ */
220
+ function writeMemory(merged, prompt) {
221
+ const allFindings = [
222
+ ...merged.blockers,
223
+ ...merged.high,
224
+ ...merged.medium,
225
+ ...merged.low,
226
+ ];
227
+ if (allFindings.length === 0)
228
+ return;
229
+ const lines = [
230
+ '<!-- triage-ai:start -->',
231
+ `## Triage Findings (${new Date().toISOString().slice(0, 10)})`,
232
+ '',
233
+ `**Prompt:** ${prompt}`,
234
+ '',
235
+ ];
236
+ for (const cluster of allFindings.slice(0, 20)) {
237
+ const rep = cluster.findings[0];
238
+ if (!rep)
239
+ continue;
240
+ const models = [...cluster.models].join(', ');
241
+ lines.push(`- **[${rep.severity}]** ${rep.title} ` +
242
+ `(\`${rep.location.path}:${rep.location.start_line}\`) — ${models}`);
243
+ }
244
+ lines.push('<!-- triage-ai:end -->');
245
+ const block = lines.join('\n') + '\n';
246
+ for (const file of ['CLAUDE.md', 'GEMINI.md', 'AGENTS.md']) {
247
+ const full = resolve(process.cwd(), file);
248
+ if (!pathExists(full))
249
+ continue;
250
+ try {
251
+ const existing = readFileSync(full, 'utf8');
252
+ const replaced = existing.replace(/<!-- triage-ai:start -->[\s\S]*?<!-- triage-ai:end -->\n?/g, block);
253
+ writeFileSync(full, replaced === existing ? existing + '\n' + block : replaced, 'utf8');
254
+ }
255
+ catch {
256
+ // Best-effort
257
+ }
258
+ }
259
+ }
260
+ // ---------------------------------------------------------------------------
261
+ // MCP server creation
262
+ // ---------------------------------------------------------------------------
263
+ function createServer() {
264
+ const server = new McpServer({
265
+ name: 'triage-ai',
266
+ version: '1.0.2',
267
+ });
268
+ // -------------------------------------------------------------------------
269
+ // Tool: triage
270
+ // -------------------------------------------------------------------------
271
+ server.tool('triage', 'Run multi-model code triage using Claude, Gemini and Codex in parallel. ' +
272
+ 'Analyzes code for bugs, security issues, performance problems and more. ' +
273
+ 'Models run concurrently and findings are merged with consensus detection.', TriageInputSchema, async (args) => {
274
+ const { prompt, models: modelsArg = 'claude,gemini,codex', diff_only = false, max_files = 30, format = 'md', timeout = 300, remember = false, } = args;
275
+ if (!prompt?.trim()) {
276
+ return {
277
+ content: [{ type: 'text', text: 'Error: No prompt provided' }],
278
+ isError: true,
279
+ };
280
+ }
281
+ // Create a per-request results directory with a UUID suffix to prevent
282
+ // collisions under concurrent requests.
283
+ const uid = randomBytes(4).toString('hex');
284
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-').replace('T', '_').slice(0, 19) +
285
+ '_' +
286
+ uid;
287
+ const resultsDir = join(RESULTS_BASE, timestamp);
288
+ mkdirSync(resultsDir, { recursive: true });
289
+ // Prune old directories (best-effort)
290
+ pruneResultsDirs();
291
+ // Scan repository — scanner.scan() takes positional args
292
+ const scanner = new RepoScanner();
293
+ let context;
294
+ try {
295
+ context = scanner.scan(diff_only, Math.max(1, Math.min(200, max_files)), prompt);
296
+ }
297
+ catch (err) {
298
+ const msg = err instanceof Error ? err.message : String(err);
299
+ return {
300
+ content: [{ type: 'text', text: `Error scanning repository: ${msg}` }],
301
+ isError: true,
302
+ };
303
+ }
304
+ // Instantiate model instances (BaseModel gives us the typed analyze() method)
305
+ const modelNames = modelsArg.split(',').map((m) => m.trim()).filter(Boolean);
306
+ const modelPairs = await Promise.all(modelNames.map(async (name) => ({ name, model: await loadModel(name) })));
307
+ const validPairs = modelPairs.filter((p) => p.model !== null);
308
+ if (validPairs.length === 0) {
309
+ return {
310
+ content: [
311
+ {
312
+ type: 'text',
313
+ text: 'Error: No valid models available. Install claude, gemini, or codex CLIs.',
314
+ },
315
+ ],
316
+ isError: true,
317
+ };
318
+ }
319
+ // Run all models in parallel using Promise.allSettled so one failure
320
+ // does not cancel the others. Cancellation propagates naturally via
321
+ // the async task machinery if the MCP client closes the connection.
322
+ const startTime = Date.now();
323
+ const taskResults = await Promise.allSettled(validPairs.map(async ({ name, model }) => {
324
+ try {
325
+ const result = await model.analyze(prompt, context, resultsDir, timeout, 10);
326
+ return { name, result, error: null };
327
+ }
328
+ catch (err) {
329
+ const msg = err instanceof Error ? err.message : String(err);
330
+ return { name, result: null, error: msg };
331
+ }
332
+ }));
333
+ const successResults = [];
334
+ const errors = [];
335
+ for (const outcome of taskResults) {
336
+ if (outcome.status === 'rejected') {
337
+ errors.push(`unknown: ${String(outcome.reason)}`);
338
+ continue;
339
+ }
340
+ const { name, result, error } = outcome.value;
341
+ if (result) {
342
+ successResults.push(result);
343
+ }
344
+ else {
345
+ errors.push(`${name}: ${error ?? 'no output'}`);
346
+ }
347
+ }
348
+ const elapsedSec = (Date.now() - startTime) / 1000;
349
+ if (successResults.length === 0) {
350
+ const detail = errors.join('; ');
351
+ return {
352
+ content: [
353
+ { type: 'text', text: `Error: All models failed — ${detail}` },
354
+ ],
355
+ isError: true,
356
+ };
357
+ }
358
+ // Merge findings
359
+ const merger = new MergeEngine();
360
+ const merged = merger.merge(successResults);
361
+ // Generate report
362
+ const activeNames = successResults.map((r) => r.model);
363
+ let report;
364
+ if (format === 'json') {
365
+ report = JSON.stringify({
366
+ prompt,
367
+ models: activeNames,
368
+ elapsed_sec: elapsedSec,
369
+ ...mergedResultToDict(merged),
370
+ }, null, 2);
371
+ }
372
+ else {
373
+ report = toMarkdown(merged, prompt, elapsedSec, activeNames);
374
+ }
375
+ // Append failure notes so the caller knows which models were skipped
376
+ if (errors.length > 0) {
377
+ const noteLines = errors.map((e) => `- ${e}`).join('\n');
378
+ report += `\n\n**Note: Some models failed:**\n${noteLines}\n`;
379
+ }
380
+ // Write memory if requested
381
+ if (remember) {
382
+ writeMemory(merged, prompt);
383
+ }
384
+ // Save merged.json for debugging / archival
385
+ const mergedPath = join(resultsDir, 'merged.json');
386
+ await writeFile(mergedPath, JSON.stringify(mergedResultToDict(merged), null, 2), 'utf8');
387
+ return {
388
+ content: [{ type: 'text', text: report }],
389
+ };
390
+ });
391
+ return server;
392
+ }
393
+ // ---------------------------------------------------------------------------
394
+ // Public export
395
+ // ---------------------------------------------------------------------------
396
+ /**
397
+ * Create the MCP server, connect the stdio transport and start listening.
398
+ *
399
+ * Called from cli.ts when the --mcp flag is set.
400
+ * Resolves when the transport closes (client disconnects).
401
+ */
402
+ export async function startMcpServer() {
403
+ const server = createServer();
404
+ const transport = new StdioServerTransport();
405
+ await server.connect(transport);
406
+ // Keep the process alive until the transport closes
407
+ await new Promise((res) => {
408
+ transport.onclose = () => res();
409
+ });
410
+ }
411
+ //# sourceMappingURL=mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Memory writer — saves triage findings to AI model memory files.
3
+ *
4
+ * After triage runs, findings are written to model-specific memory files
5
+ * so that Claude, Gemini and Codex remember issues in future sessions.
6
+ *
7
+ * Supported memory files:
8
+ * - CLAUDE.md — Claude Code project instructions
9
+ * - GEMINI.md — Gemini CLI project context
10
+ * - AGENTS.md — Codex/OpenAI agent instructions
11
+ */
12
+ import { type MergedResult, type FindingCluster } from './types.js';
13
+ export declare const MEMORY_START = "<!-- triage:start -->";
14
+ export declare const MEMORY_END = "<!-- triage:end -->";
15
+ export declare const MEMORY_FILES: Record<string, string>;
16
+ /**
17
+ * Write triage findings to AI model memory files.
18
+ *
19
+ * Replaces any existing triage section (between markers) or appends
20
+ * a new one. This keeps memory current — old findings are replaced by
21
+ * the latest run, not accumulated forever.
22
+ */
23
+ export declare function writeMemory(merged: MergedResult, prompt: string, root?: string, models?: string[]): Promise<Record<string, boolean>>;
24
+ /**
25
+ * Remove triage sections from AI model memory files.
26
+ */
27
+ export declare function clearMemory(root?: string, models?: string[]): Promise<Record<string, boolean>>;
28
+ /** Build the memory content block from merged results. */
29
+ export declare function _buildMemoryContent(merged: MergedResult, prompt: string): string;
30
+ /** Format a finding cluster for memory output. */
31
+ export declare function _formatCluster(cluster: FindingCluster): string[];
32
+ /**
33
+ * Update a memory file with triage content.
34
+ *
35
+ * - If the file has an existing triage section, replace it.
36
+ * - If the file exists without a triage section, append.
37
+ * - If the file does not exist, create it with a minimal header.
38
+ */
39
+ export declare function _updateMemoryFile(filepath: string, content: string): Promise<boolean>;
40
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAsC,MAAM,YAAY,CAAC;AAMxG,eAAO,MAAM,YAAY,0BAA0B,CAAC;AACpD,eAAO,MAAM,UAAU,wBAAwB,CAAC;AAEhD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAI/C,CAAC;AAMF;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA0BlC;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA6ClC;AAMD,0DAA0D;AAC1D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CA+FhF;AAED,kDAAkD;AAClD,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,EAAE,CAmBhE;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAqClB"}