create-merlin-brain 3.14.0 → 3.15.0

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.
@@ -1,22 +1,9 @@
1
1
  /**
2
2
  * Session Coach — Persistent Protocol Enforcement
3
3
  *
4
- * The #1 problem: Claude starts strong with Merlin but drifts after 10-15 minutes.
5
- * CLAUDE.md instructions fade as context fills up. The Loop doesn't have this
6
- * problem because every iteration is a fresh 200K context.
7
- *
8
- * Solution: The MCP server IS the persistent thing in every session. Every tool
9
- * response goes through us. We use that channel to inject targeted, escalating
10
- * behavioral nudges that Claude's attention mechanism can't ignore.
11
- *
12
- * The key insight: <sub> tags and decorative boxes get ignored. What works is
13
- * content that looks like instructions — direct, specific, actionable.
14
- *
15
- * Escalation levels:
16
- * 0 - Green: Claude is following the protocol. Light footer.
17
- * 1 - Yellow: Starting to drift (5+ min since context check). Nudge.
18
- * 2 - Orange: Significant drift (10+ min or 12+ queries). Strong nudge.
19
- * 3 - Red: Protocol abandoned (20+ min). Hard interrupt.
4
+ * Tracks Claude's behavior and injects escalating nudges into MCP tool responses.
5
+ * Also provides the guardian HTTP sidecar with edit-check responses for hooks.
6
+ * Escalation: 0=Green, 1=Yellow(5m), 2=Orange(10m), 3=Red(20m)
20
7
  */
21
8
  // Thresholds
22
9
  const DRIFT_MINUTES_YELLOW = 5;
@@ -54,6 +41,8 @@ const state = {
54
41
  totalCalls: 0,
55
42
  contextCheckCount: 0,
56
43
  driftWarnings: 0,
44
+ externalEdits: [],
45
+ editsSinceContext: 0,
57
46
  };
58
47
  /**
59
48
  * Record a tool call. Called by every Merlin tool handler.
@@ -69,6 +58,7 @@ export function recordToolCall(toolName) {
69
58
  if (CONTEXT_TOOLS.has(toolName)) {
70
59
  state.lastContextCheck = now;
71
60
  state.callsSinceContext = 0;
61
+ state.editsSinceContext = 0; // Reset external edit counter too
72
62
  state.contextCheckCount++;
73
63
  }
74
64
  else {
@@ -173,60 +163,36 @@ export function getProtocolNudge(currentTool) {
173
163
  return '';
174
164
  }
175
165
  }
176
- /**
177
- * Green nudge — everything is fine, just a light reminder
178
- */
166
+ /** Minutes since last context check (-1 if never) */
167
+ function minutesSinceContext() {
168
+ return state.lastContextCheck > 0
169
+ ? Math.floor((Date.now() - state.lastContextCheck) / (1000 * 60))
170
+ : -1;
171
+ }
179
172
  function getGreenNudge() {
180
173
  const nudges = [
181
- '**⟡🔮 MERLIN ›** `merlin_get_context` before modifying files.',
182
- '**⟡🔮 MERLIN ›** Check Sights before creating new files to avoid duplicates.',
183
- '**⟡🔮 MERLIN ›** Call `merlin_get_context("your task")` before each edit.',
174
+ '`merlin_get_context` before modifying files.',
175
+ 'Check Sights before creating new files to avoid duplicates.',
176
+ 'Call `merlin_get_context("your task")` before each edit.',
184
177
  ];
185
- const pick = nudges[state.totalCalls % nudges.length];
186
- return `\n\n---\n${pick}`;
178
+ return `\n\n---\n**⟡🔮 MERLIN ›** ${nudges[state.totalCalls % nudges.length]}`;
187
179
  }
188
- /**
189
- * Yellow nudge — starting to drift, clear instruction
190
- */
191
180
  function getYellowNudge() {
192
- const minutesSince = state.lastContextCheck > 0
193
- ? Math.floor((Date.now() - state.lastContextCheck) / (1000 * 60))
194
- : 0;
195
- return `\n\n---\n` +
196
- `**⟡🔮 MERLIN › REFRESH CONTEXT** — ${minutesSince}min since last check, ${state.callsSinceContext} calls without context refresh.\n` +
197
- `Before your next file edit, run: \`merlin_get_context("what you're working on")\`\n` +
198
- `This prevents duplicating existing code and catches recent changes.`;
181
+ const m = minutesSinceContext();
182
+ return `\n\n---\n**⟡🔮 MERLIN › REFRESH CONTEXT** — ${m}min since last check, ${state.callsSinceContext} calls without refresh.\n` +
183
+ `Run: \`merlin_get_context("what you're working on")\` before your next edit.`;
199
184
  }
200
- /**
201
- * Orange nudge — significant drift, strong instruction
202
- */
203
185
  function getOrangeNudge() {
204
- const minutesSince = state.lastContextCheck > 0
205
- ? Math.floor((Date.now() - state.lastContextCheck) / (1000 * 60))
206
- : 0;
207
- return `\n\n---\n` +
208
- `**⟡🔮 MERLIN › ⚠️ PROTOCOL DRIFT DETECTED** — ${minutesSince}min and ${state.callsSinceContext} tool calls without checking Sights.\n\n` +
209
- `**REQUIRED before continuing:** Call \`merlin_get_context("your current task")\` now.\n\n` +
210
- `Without fresh context you risk:\n` +
211
- `- Duplicating code that already exists\n` +
212
- `- Missing recent changes by other agents\n` +
213
- `- Breaking patterns the codebase expects`;
186
+ const m = minutesSinceContext();
187
+ return `\n\n---\n**⟡🔮 MERLIN › ⚠️ PROTOCOL DRIFT** — ${m}min, ${state.callsSinceContext} calls without Sights.\n` +
188
+ `**REQUIRED:** Call \`merlin_get_context("your current task")\` now.\n` +
189
+ `Risk: duplicating code, missing changes, breaking patterns.`;
214
190
  }
215
- /**
216
- * Red nudge — protocol abandoned, hard interrupt
217
- */
218
191
  function getRedNudge() {
219
- const minutesSince = state.lastContextCheck > 0
220
- ? Math.floor((Date.now() - state.lastContextCheck) / (1000 * 60))
221
- : 0;
222
- const health = getSessionHealth();
223
- return `\n\n---\n` +
224
- `**⟡🔮 MERLIN › 🛑 STOP — CONTEXT STALE (${minutesSince}min, session health: ${health}%)**\n\n` +
225
- `You have made ${state.callsSinceContext} tool calls without checking codebase context.\n` +
226
- `This is exactly how duplicate code and broken patterns happen.\n\n` +
227
- `**DO THIS NOW:**\n` +
228
- `\`\`\`\nmerlin_get_context("describe what you are currently working on")\n\`\`\`\n\n` +
229
- `Then continue your work with fresh understanding of the codebase.`;
192
+ const m = minutesSinceContext();
193
+ return `\n\n---\n**⟡🔮 MERLIN 🛑 STOP — CONTEXT STALE (${m}min, health: ${getSessionHealth()}%)**\n` +
194
+ `${state.callsSinceContext} tool calls without context check.\n` +
195
+ `**DO THIS NOW:** \`merlin_get_context("what you are working on")\``;
230
196
  }
231
197
  /**
232
198
  * Get a compact protocol status line for tool responses
@@ -247,6 +213,61 @@ export function getProtocolStatus() {
247
213
  : `${minutesSince}m ago`;
248
214
  return `${icon} ⟡🔮 Protocol: ${health}% │ Last context: ${lastCheck} │ Calls since: ${state.callsSinceContext}`;
249
215
  }
216
+ /**
217
+ * Record an external edit reported by a hook via the guardian HTTP sidecar.
218
+ * This gives us visibility into Claude's actual Edit/Write tool usage.
219
+ */
220
+ export function recordExternalEdit(filePath, tool) {
221
+ state.externalEdits.push({ file: filePath, tool, timestamp: Date.now() });
222
+ state.editsSinceContext++;
223
+ // Keep only last 30 edits
224
+ if (state.externalEdits.length > 30) {
225
+ state.externalEdits = state.externalEdits.slice(-30);
226
+ }
227
+ }
228
+ /** Generate graduated pre-edit hook response. Always allows (never blocks — that caused loops in v3.5.2). */
229
+ export function getEditCheckResponse() {
230
+ const drift = getDriftLevel();
231
+ const minutesSince = state.lastContextCheck > 0
232
+ ? Math.floor((Date.now() - state.lastContextCheck) / (1000 * 60))
233
+ : -1;
234
+ const edits = state.editsSinceContext;
235
+ // Also factor in external edits for drift calculation
236
+ // 5+ edits without context = at least Yellow, regardless of time
237
+ const editDrift = edits >= 10 ? 3 : edits >= 7 ? 2 : edits >= 4 ? 1 : 0;
238
+ const effectiveDrift = Math.max(drift, editDrift);
239
+ if (effectiveDrift === 0) {
240
+ // Green: allow silently — no additionalContext needed
241
+ return {};
242
+ }
243
+ const timeStr = minutesSince < 0 ? 'never checked' : `${minutesSince}m ago`;
244
+ if (effectiveDrift === 1) {
245
+ return {
246
+ hookSpecificOutput: {
247
+ hookEventName: 'PreToolUse',
248
+ permissionDecision: 'allow',
249
+ additionalContext: `⟡🔮 MERLIN › Sights context is getting stale (last check: ${timeStr}, ${edits} edits since). Call \`merlin_get_context("your current task")\` before your next edit to stay in sync with the codebase.`,
250
+ },
251
+ };
252
+ }
253
+ if (effectiveDrift === 2) {
254
+ return {
255
+ hookSpecificOutput: {
256
+ hookEventName: 'PreToolUse',
257
+ permissionDecision: 'allow',
258
+ additionalContext: `⟡🔮 MERLIN › ⚠️ CONTEXT DRIFT — Last Sights check: ${timeStr}, ${edits} edits without refresh. You MUST call \`merlin_get_context("what you're working on")\` NOW. Without fresh context you risk duplicating existing code or breaking established patterns.`,
259
+ },
260
+ };
261
+ }
262
+ // Red (3): strongest nudge, still allowing
263
+ return {
264
+ hookSpecificOutput: {
265
+ hookEventName: 'PreToolUse',
266
+ permissionDecision: 'allow',
267
+ additionalContext: `⟡🔮 MERLIN › 🛑 PROTOCOL VIOLATION — ${edits} file edits without ANY Sights context check (last: ${timeStr}). STOP editing and call \`merlin_get_context("describe your current task")\` IMMEDIATELY. This is exactly how duplicate code, broken patterns, and regressions happen. The codebase may have changed since you last checked.`,
268
+ },
269
+ };
270
+ }
250
271
  /**
251
272
  * Reset session state (for testing or session restart)
252
273
  */
@@ -259,6 +280,8 @@ export function resetCoach() {
259
280
  state.totalCalls = 0;
260
281
  state.contextCheckCount = 0;
261
282
  state.driftWarnings = 0;
283
+ state.externalEdits = [];
284
+ state.editsSinceContext = 0;
262
285
  }
263
286
  /**
264
287
  * Get coach stats for debugging
@@ -268,6 +291,8 @@ export function getCoachStats() {
268
291
  totalCalls: state.totalCalls,
269
292
  contextChecks: state.contextCheckCount,
270
293
  callsSinceContext: state.callsSinceContext,
294
+ editsSinceContext: state.editsSinceContext,
295
+ totalExternalEdits: state.externalEdits.length,
271
296
  driftLevel: getDriftLevel(),
272
297
  health: getSessionHealth(),
273
298
  driftWarnings: state.driftWarnings,
@@ -1 +1 @@
1
- {"version":3,"file":"session-coach.js","sourceRoot":"","sources":["../../src/server/session-coach.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-coach.js","sourceRoot":"","sources":["../../src/server/session-coach.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Session Guardian — HTTP sidecar for hook↔MCP communication.
3
+ *
4
+ * The MCP server communicates via stdio (JSON-RPC). Shell hooks can't
5
+ * talk stdio. This lightweight HTTP server bridges the gap: hooks curl
6
+ * localhost, the guardian reads MCP-side session state and returns
7
+ * hook-compatible JSON responses.
8
+ *
9
+ * Lifecycle:
10
+ * - Started asynchronously AFTER MCP transport connects (zero startup cost)
11
+ * - Listens on port 0 (OS-assigned) to avoid conflicts
12
+ * - Writes { port, pid } to ~/.claude/merlin/.guardian-PORT.json
13
+ * - Cleans up on exit
14
+ *
15
+ * Endpoints:
16
+ * GET /health — Liveness check
17
+ * GET /edit-check — Pre-edit hook calls this; returns graduated enforcement
18
+ * POST /record-edit — Post-edit hook reports that an edit happened
19
+ * GET /state — Full session state dump (for pre-compact injection)
20
+ */
21
+ /**
22
+ * Start the guardian HTTP sidecar.
23
+ * Call AFTER MCP transport is connected (non-blocking).
24
+ */
25
+ export declare function startGuardian(): Promise<number>;
26
+ /** Get the guardian port (0 if not started) */
27
+ export declare function getGuardianPort(): number;
28
+ //# sourceMappingURL=session-guardian.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-guardian.d.ts","sourceRoot":"","sources":["../../src/server/session-guardian.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAgGH;;;GAGG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAuDrD;AAED,+CAA+C;AAC/C,wBAAgB,eAAe,IAAI,MAAM,CAExC"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Session Guardian — HTTP sidecar for hook↔MCP communication.
3
+ *
4
+ * The MCP server communicates via stdio (JSON-RPC). Shell hooks can't
5
+ * talk stdio. This lightweight HTTP server bridges the gap: hooks curl
6
+ * localhost, the guardian reads MCP-side session state and returns
7
+ * hook-compatible JSON responses.
8
+ *
9
+ * Lifecycle:
10
+ * - Started asynchronously AFTER MCP transport connects (zero startup cost)
11
+ * - Listens on port 0 (OS-assigned) to avoid conflicts
12
+ * - Writes { port, pid } to ~/.claude/merlin/.guardian-PORT.json
13
+ * - Cleans up on exit
14
+ *
15
+ * Endpoints:
16
+ * GET /health — Liveness check
17
+ * GET /edit-check — Pre-edit hook calls this; returns graduated enforcement
18
+ * POST /record-edit — Post-edit hook reports that an edit happened
19
+ * GET /state — Full session state dump (for pre-compact injection)
20
+ */
21
+ import { createServer } from 'http';
22
+ import { writeFileSync, unlinkSync, mkdirSync } from 'fs';
23
+ import { join } from 'path';
24
+ import { homedir } from 'os';
25
+ import { getDriftLevel, getSessionHealth, getCoachStats, recordExternalEdit, getEditCheckResponse, } from './session-coach.js';
26
+ const MERLIN_DIR = join(homedir(), '.claude', 'merlin');
27
+ let guardianPort = 0;
28
+ let portFilePath = '';
29
+ /** Parse JSON body from a POST request (max 4KB) */
30
+ function parseBody(req) {
31
+ return new Promise((resolve) => {
32
+ let data = '';
33
+ req.on('data', (chunk) => {
34
+ data += chunk.toString();
35
+ if (data.length > 4096) {
36
+ resolve({});
37
+ req.destroy();
38
+ }
39
+ });
40
+ req.on('end', () => {
41
+ try {
42
+ resolve(JSON.parse(data));
43
+ }
44
+ catch {
45
+ resolve({});
46
+ }
47
+ });
48
+ req.on('error', () => resolve({}));
49
+ });
50
+ }
51
+ /** Handle incoming HTTP requests */
52
+ async function handleRequest(req, res) {
53
+ const url = req.url || '/';
54
+ const method = req.method || 'GET';
55
+ // CORS-like: allow any local caller
56
+ res.setHeader('Content-Type', 'application/json');
57
+ try {
58
+ if (url === '/health' && method === 'GET') {
59
+ res.writeHead(200);
60
+ res.end(JSON.stringify({
61
+ ok: true,
62
+ pid: process.pid,
63
+ uptime: Math.floor(process.uptime()),
64
+ }));
65
+ return;
66
+ }
67
+ if (url === '/edit-check' && method === 'GET') {
68
+ // Pre-edit hook calls this before every Edit/Write
69
+ const response = getEditCheckResponse();
70
+ res.writeHead(200);
71
+ res.end(JSON.stringify(response));
72
+ return;
73
+ }
74
+ if (url === '/record-edit' && method === 'POST') {
75
+ // Post-edit hook reports an edit happened
76
+ const body = await parseBody(req);
77
+ const filePath = body.file || 'unknown';
78
+ const tool = body.tool || 'unknown';
79
+ recordExternalEdit(filePath, tool);
80
+ res.writeHead(200);
81
+ res.end('{"ok":true}');
82
+ return;
83
+ }
84
+ if (url === '/state' && method === 'GET') {
85
+ // Full state dump for pre-compact hook
86
+ const stats = getCoachStats();
87
+ const health = getSessionHealth();
88
+ const drift = getDriftLevel();
89
+ res.writeHead(200);
90
+ res.end(JSON.stringify({
91
+ ...stats,
92
+ health,
93
+ driftLevel: drift,
94
+ guardianPort,
95
+ pid: process.pid,
96
+ }));
97
+ return;
98
+ }
99
+ // Unknown endpoint
100
+ res.writeHead(404);
101
+ res.end('{"error":"not found"}');
102
+ }
103
+ catch (err) {
104
+ res.writeHead(500);
105
+ res.end(`{"error":"${err instanceof Error ? err.message : 'unknown'}"}`);
106
+ }
107
+ }
108
+ /**
109
+ * Start the guardian HTTP sidecar.
110
+ * Call AFTER MCP transport is connected (non-blocking).
111
+ */
112
+ export async function startGuardian() {
113
+ return new Promise((resolve, reject) => {
114
+ const server = createServer((req, res) => {
115
+ handleRequest(req, res).catch(() => {
116
+ if (!res.headersSent) {
117
+ res.writeHead(500);
118
+ res.end('{"error":"internal"}');
119
+ }
120
+ });
121
+ });
122
+ // Listen on port 0 = OS assigns a free port
123
+ server.listen(0, '127.0.0.1', () => {
124
+ const addr = server.address();
125
+ if (!addr || typeof addr === 'string') {
126
+ reject(new Error('Guardian: could not determine port'));
127
+ return;
128
+ }
129
+ guardianPort = addr.port;
130
+ // Write port file so hooks can find us
131
+ try {
132
+ mkdirSync(MERLIN_DIR, { recursive: true });
133
+ portFilePath = join(MERLIN_DIR, `.guardian-port`);
134
+ writeFileSync(portFilePath, JSON.stringify({
135
+ port: guardianPort,
136
+ pid: process.pid,
137
+ started: Date.now(),
138
+ }));
139
+ }
140
+ catch {
141
+ // Non-fatal — hooks will fall back to file-based checks
142
+ }
143
+ console.error(`Merlin Guardian listening on 127.0.0.1:${guardianPort}`);
144
+ resolve(guardianPort);
145
+ });
146
+ server.on('error', (err) => {
147
+ console.error(`Merlin Guardian failed to start: ${err.message}`);
148
+ reject(err);
149
+ });
150
+ // Cleanup on exit
151
+ const cleanup = () => {
152
+ try {
153
+ if (portFilePath)
154
+ unlinkSync(portFilePath);
155
+ }
156
+ catch { /* already gone */ }
157
+ server.close();
158
+ };
159
+ process.on('exit', cleanup);
160
+ process.on('SIGTERM', cleanup);
161
+ process.on('SIGINT', cleanup);
162
+ });
163
+ }
164
+ /** Get the guardian port (0 if not started) */
165
+ export function getGuardianPort() {
166
+ return guardianPort;
167
+ }
168
+ //# sourceMappingURL=session-guardian.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-guardian.js","sourceRoot":"","sources":["../../src/server/session-guardian.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/server/tools/context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAyB9C,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CA+jB3D"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/server/tools/context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAyC9C,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAqkB3D"}
@@ -3,8 +3,27 @@
3
3
  * Tools for getting codebase context, searching, and asking questions
4
4
  */
5
5
  import { z } from 'zod';
6
+ import { writeFileSync, mkdirSync } from 'fs';
7
+ import { join } from 'path';
8
+ import { homedir } from 'os';
6
9
  import { detectLanguage } from '../lang/detector.js';
7
10
  import { getLanguageRules } from '../lang/rules.js';
11
+ /**
12
+ * Record that Sights was just consulted.
13
+ * Writes epoch timestamp to ~/.claude/merlin/.last-sights-check
14
+ * so that pre-edit hooks know context is fresh.
15
+ * Also notifies the guardian HTTP sidecar if running.
16
+ */
17
+ function recordSightsCall() {
18
+ try {
19
+ const dir = join(homedir(), '.claude', 'merlin');
20
+ mkdirSync(dir, { recursive: true });
21
+ writeFileSync(join(dir, '.last-sights-check'), Math.floor(Date.now() / 1000).toString());
22
+ }
23
+ catch {
24
+ // Non-fatal — hooks will fall back to stale detection
25
+ }
26
+ }
8
27
  /** Module-level cache: repoId → detected language profile */
9
28
  const langProfileCache = new Map();
10
29
  /** Detect language for a repo, using cached result if available */
@@ -317,6 +336,8 @@ export function registerContextTools(ctx) {
317
336
  catch {
318
337
  // Silently skip if team state unavailable
319
338
  }
339
+ // Bridge: update file-based timestamp so pre-edit hooks know Sights is fresh
340
+ recordSightsCall();
320
341
  return { content: [{ type: 'text', text: context }] };
321
342
  }
322
343
  catch (error) {
@@ -356,9 +377,11 @@ export function registerContextTools(ctx) {
356
377
  }
357
378
  result += '\n';
358
379
  });
380
+ recordSightsCall();
359
381
  return { content: [{ type: 'text', text: result }] };
360
382
  }
361
383
  const findResult = await client.findFiles(repoId, query);
384
+ recordSightsCall();
362
385
  return { content: [{ type: 'text', text: findResult }] };
363
386
  }
364
387
  catch (error) {
@@ -471,6 +494,7 @@ export function registerContextTools(ctx) {
471
494
  };
472
495
  }
473
496
  const results = await client.search(repoId, query);
497
+ recordSightsCall();
474
498
  return { content: [{ type: 'text', text: results }] };
475
499
  }
476
500
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/server/tools/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/server/tools/context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD;;;;;GAKG;AACH,SAAS,gBAAgB;IACvB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACjD,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3F,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;IACxD,CAAC;AACH,CAAC;AAED,6DAA6D;AAC7D,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA2B,CAAC;AAE5D,mEAAmE;AACnE,KAAK,UAAU,sBAAsB,CACnC,MAAc,EACd,MAA6B;IAE7B,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;IACvE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3B,MAAM,OAAO,GAAG,cAAc,CAAC,QAA8C,CAAC,CAAC;QAC/E,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAgB;IACnD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC;IAE9C,0EAA0E;IAC1E,yBAAyB;IACzB,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,uWAAuW,EACvW;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;KACxG,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACpB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yEAAyE,EAAE,CAAC;iBAC7G,CAAC;YACJ,CAAC;YAED,MAAM,CAAC,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChF,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;gBAC9C,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;gBACrD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;gBAC1D,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;gBACrE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;aAC7C,CAAC,CAAC;YAEH,IAAI,KAAK,GAAG,qBAAqB,CAAC;YAElC,qBAAqB;YACrB,KAAK,IAAI,0BAA0B,CAAC;YACpC,IAAI,YAAY,EAAE,KAAK,EAAE,CAAC;gBACxB,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC;gBAChC,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,IAAI,gBAAgB,CAAC;gBAC5E,IAAI,IAAI,CAAC,UAAU;oBAAE,KAAK,IAAI,UAAU,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC1D,IAAI,IAAI,CAAC,SAAS;oBAAE,KAAK,IAAI,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5D,CAAC;iBAAM,IAAI,QAAQ,EAAE,CAAC;gBACpB,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,IAAI,SAAS,CAAC;gBACrD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,WAAW,IAAI,EAAE,CAAC;gBACrD,KAAK,IAAI,GAAG,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACtC,CAAC;iBAAM,IAAI,UAAU,EAAE,CAAC;gBACtB,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3F,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,KAAK,IAAI,4DAA4D,CAAC;YACxE,CAAC;YACD,KAAK,IAAI,MAAM,CAAC;YAEhB,0BAA0B;YAC1B,KAAK,IAAI,qBAAqB,CAAC;YAC/B,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;gBAC9C,KAAK,IAAI,UAAU,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC;gBAChH,KAAK,IAAI,iBAAiB,QAAQ,CAAC,OAAO,EAAE,mBAAmB,IAAI,cAAc,IAAI,CAAC;gBACtF,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC;gBACrC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnD,KAAK,IAAI,aAAa,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACxE,CAAC;YACH,CAAC;iBAAM,IAAI,UAAU,EAAE,CAAC;gBACtB,KAAK,IAAI,+BAA+B,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,KAAK,IAAI,qBAAqB,CAAC;YACjC,CAAC;YACD,KAAK,IAAI,IAAI,CAAC;YAEd,YAAY;YACZ,KAAK,IAAI,aAAa,CAAC;YACvB,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;gBAClF,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,MAAM,CAAC;gBACrF,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;gBAC9E,KAAK,IAAI,UAAU,SAAS,UAAU,UAAU,iBAAiB,OAAO,YAAY,CAAC;gBAErF,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC;gBAC1E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,KAAK,IAAI,eAAe,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,IAAI,6DAA6D,CAAC;YACzE,CAAC;YACD,KAAK,IAAI,IAAI,CAAC;YAEd,+CAA+C;YAC/C,MAAM,aAAa,GAAG,QAAQ,EAAE,aAAa,IAAI,EAAE,CAAC;YACpD,MAAM,aAAa,GAAG,QAAQ,EAAE,aAAa,IAAI,EAAE,CAAC;YACpD,MAAM,kBAAkB,GAAG,QAAQ,EAAE,kBAAkB,IAAI,EAAE,CAAC;YAE9D,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9D,KAAK,IAAI,uBAAuB,CAAC;gBAEjC,iCAAiC;gBACjC,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE;wBAChD,KAAK,IAAI,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,WAAW,IAAI,CAAC;oBACjD,CAAC,CAAC,CAAC;gBACL,CAAC;gBAED,qBAAqB;gBACrB,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;gBAC1F,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,KAAK,IAAI,sBAAsB,MAAM,CAAC,MAAM,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACpG,CAAC;gBAED,KAAK,IAAI,IAAI,CAAC;YAChB,CAAC;YAED,qCAAqC;YACrC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,KAAK,IAAI,uCAAuC,CAAC;gBACjD,aAAa,CAAC,OAAO,CAAC,CAAC,GAAQ,EAAE,EAAE;oBACjC,KAAK,IAAI,KAAK,GAAG,CAAC,OAAO,OAAO,GAAG,CAAC,cAAc,IAAI,aAAa,MAAM,CAAC;oBAC1E,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE;wBACzC,KAAK,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;oBACvE,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBACH,KAAK,IAAI,IAAI,CAAC;YAChB,CAAC;YAED,yBAAyB;YACzB,KAAK,IAAI,+BAA+B,CAAC;YACzC,MAAM,WAAW,GAAG,QAAQ,EAAE,WAAW,CAAC;YAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzD,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAO,EAAE,EAAE;oBAC1C,KAAK,IAAI,KAAK,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,OAAO,IAAI,CAAC;gBAC3C,CAAC,CAAC,CAAC;gBACH,KAAK,IAAI,uEAAuE,CAAC;YACnF,CAAC;iBAAM,CAAC;gBACN,KAAK,IAAI,8CAA8C,CAAC;YAC1D,CAAC;YACD,KAAK,IAAI,IAAI,CAAC;YAEd,WAAW;YACX,IAAI,UAAU,EAAE,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5D,KAAK,IAAI,iBAAiB,CAAC;gBAC3B,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE;oBACvD,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;gBACtB,CAAC,CAAC,CAAC;gBACH,KAAK,IAAI,IAAI,CAAC;YAChB,CAAC;YAED,KAAK,IAAI,yBAAyB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC;YAE9D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC;gBACrH,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,2EAA2E;IAC3E,2BAA2B;IAC3B,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,6gBAA6gB,EAC7gB;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QACxD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;KAC5G,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4KAA4K,EAAE,CAAC;iBAChN,CAAC;YACJ,CAAC;YAED,qDAAqD;YACrD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACrE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;gBAC7B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC1C,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;gBAC7B,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;aACrF,CAAC,CAAC;YAEH,IAAI,OAAO,GAAG,kBAAkB,IAAI,MAAM,CAAC;YAE3C,+DAA+D;YAC/D,MAAM,kBAAkB,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC9E,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,OAAO,IAAI,4CAA4C,CAAC;gBACxD,OAAO,IAAI,yFAAyF,CAAC;gBACrG,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBAC7B,OAAO,IAAI,aAAa,CAAC,CAAC,OAAO,IAAI,CAAC;oBACtC,OAAO,IAAI,WAAW,CAAC,CAAC,MAAM,IAAI,CAAC;oBACnC,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACrE,CAAC,CAAC,CAAC;YACL,CAAC;YAED,yCAAyC;YACzC,MAAM,kBAAkB,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;YACtG,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,OAAO,IAAI,6CAA6C,CAAC;gBACzD,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,IAAI,CAAC;gBAClD,CAAC,CAAC,CAAC;gBACH,OAAO,IAAI,IAAI,CAAC;YAClB,CAAC;YAED,OAAO,IAAI,oBAAoB,KAAK,MAAM,CAAC;YAE3C,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,IAAI,sBAAsB,KAAK,CAAC,KAAK,WAAW,CAAC;gBACxD,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACtB,OAAO,IAAI,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;oBAC7C,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACzB,OAAO,IAAI,cAAc,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBACrE,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,OAAO,IAAI,IAAI,CAAC;YAClB,CAAC;YAED,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvC,OAAO,IAAI,4BAA4B,CAAC;gBACxC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBAClC,OAAO,IAAI,OAAO,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;oBAC9C,IAAI,CAAC,CAAC,OAAO;wBAAE,OAAO,IAAI,cAAc,CAAC,CAAC,OAAO,IAAI,CAAC;gBACxD,CAAC,CAAC,CAAC;gBACH,OAAO,IAAI,IAAI,CAAC;YAClB,CAAC;YAED,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,OAAO,IAAI,6BAA6B,CAAC;gBACzC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;oBACpC,OAAO,IAAI,OAAO,EAAE,CAAC,OAAO,kBAAkB,EAAE,CAAC,OAAO,IAAI,CAAC;gBAC/D,CAAC,CAAC,CAAC;YACL,CAAC;YAED,wDAAwD;YACxD,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACjE,IAAI,WAAW,IAAI,WAAW,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBACrD,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;oBAChD,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC7F,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC;wBAChF,OAAO,IAAI,sBAAsB,SAAS,KAAK,UAAU,KAAK,CAAC;wBAC/D,OAAO,IAAI,SAAS,GAAG,IAAI,CAAC;oBAC9B,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,4CAA4C;YAC9C,CAAC;YAED,yDAAyD;YACzD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,mBAAmB,GAAG,EAAE,CAAC;YAE7B,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/F,mBAAmB,GAAG,aAAa,CAAC;YACtC,CAAC;iBAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChI,mBAAmB,GAAG,WAAW,CAAC;YACpC,CAAC;iBAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3G,mBAAmB,GAAG,aAAa,CAAC;YACtC,CAAC;iBAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpE,mBAAmB,GAAG,SAAS,CAAC;YAClC,CAAC;iBAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC5G,mBAAmB,GAAG,iBAAiB,CAAC;YAC1C,CAAC;iBAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtG,mBAAmB,GAAG,YAAY,CAAC;YACrC,CAAC;YAED,IAAI,mBAAmB,EAAE,CAAC;gBACxB,OAAO,IAAI,iCAAiC,mBAAmB,IAAI,CAAC;gBACpE,OAAO,IAAI,yCAAyC,mBAAmB,cAAc,CAAC;YACxF,CAAC;YAED,oDAAoD;YACpD,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC3D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,OAAO,IAAI,sCAAsC,CAAC;oBAClD,OAAO,IAAI,kFAAkF,CAAC;oBAC9F,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACvB,OAAO,IAAI,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,WAAW,IAAI,CAAC;wBAC1F,OAAO,IAAI,uDAAuD,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,IAAI,gBAAgB,CAAC;oBAC7G,CAAC,CAAC,CAAC;oBACH,OAAO,IAAI,IAAI,CAAC;gBAClB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,6CAA6C;YAC/C,CAAC;YAED,8DAA8D;YAC9D,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACpD,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,eAAe,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;oBAC1G,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC;oBACzD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;oBAErD,IAAI,eAAe,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACpE,OAAO,IAAI,iCAAiC,CAAC;wBAC7C,OAAO,IAAI,oEAAoE,CAAC;wBAEhF,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;4BACxB,OAAO,IAAI,qBAAqB,eAAe,KAAK,SAAS,CAAC,WAAW,EAAE,WAAW,IAAI,CAAC,iBAAiB,SAAS,CAAC,WAAW,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC;wBAC/J,CAAC;wBAED,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;4BACrB,OAAO,IAAI,sBAAsB,YAAY,iCAAiC,CAAC;4BAC/E,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE;gCAC5D,OAAO,IAAI,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,QAAQ,IAAI,QAAQ,KAAK,CAAC;4BAC3E,CAAC,CAAC,CAAC;wBACL,CAAC;wBAED,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CACnD,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC/G,CAAC;wBACF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC7B,OAAO,IAAI,6BAA6B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;wBACvE,CAAC;wBAED,OAAO,IAAI,IAAI,CAAC;oBAClB,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,0CAA0C;YAC5C,CAAC;YAED,6EAA6E;YAC7E,gBAAgB,EAAE,CAAC;YAEnB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC;gBACvH,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,2EAA2E;IAC3E,0BAA0B;IAC1B,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,6bAA6b,EAC7b;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;QAC5G,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;KAC5G,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4EAA4E,EAAE,CAAC;iBAChH,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAEvE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,IAAI,MAAM,GAAG,qBAAqB,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;gBACnF,MAAM,IAAI,SAAS,KAAK,CAAC,KAAK,aAAa,CAAC;gBAE5C,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACtB,MAAM,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC;oBAC3B,MAAM,IAAI,kBAAkB,CAAC,CAAC,OAAO,IAAI,CAAC;oBAC1C,MAAM,IAAI,gBAAgB,CAAC,CAAC,KAAK,IAAI,CAAC;oBACtC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACzB,MAAM,IAAI,kBAAkB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBACzF,CAAC;oBACD,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC3B,MAAM,IAAI,qBAAqB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC5D,CAAC;oBACD,MAAM,IAAI,IAAI,CAAC;gBACjB,CAAC,CAAC,CAAC;gBAEH,gBAAgB,EAAE,CAAC;gBACnB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YACvD,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACzD,gBAAgB,EAAE,CAAC;YACnB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC;gBACrH,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,2EAA2E;IAC3E,+BAA+B;IAC/B,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,uZAAuZ,EACvZ;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;KAC5G,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACpB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4EAA4E,EAAE,CAAC;iBAChH,CAAC;YACJ,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACxD,IAAI,MAAM,GAAG,0BAA0B,CAAC;YAExC,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,oBAAoB,CAAC;gBAC/B,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBAClC,MAAM,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC;oBAC3C,IAAI,CAAC,CAAC,OAAO;wBAAE,MAAM,IAAI,2BAA2B,CAAC,CAAC,OAAO,YAAY,CAAC;oBAC1E,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;wBAAE,MAAM,IAAI,cAAc,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBACrF,MAAM,IAAI,IAAI,CAAC;gBACjB,CAAC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,oCAAoC,CAAC;gBAC/C,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;oBACpC,MAAM,IAAI,SAAS,EAAE,CAAC,OAAO,IAAI,CAAC;oBAClC,MAAM,IAAI,eAAe,EAAE,CAAC,MAAM,kBAAkB,EAAE,CAAC,OAAO,mBAAmB,EAAE,CAAC,QAAQ,MAAM,CAAC;gBACrG,CAAC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,sBAAsB,CAAC;gBACjC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;oBAChD,MAAM,IAAI,OAAO,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,WAAW,kBAAkB,CAAC;oBAC9D,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACnB,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,IAAI,CAAC;oBACxD,CAAC,CAAC,CAAC;oBACH,MAAM,IAAI,IAAI,CAAC;gBACjB,CAAC,CAAC,CAAC;YACL,CAAC;YAED,wDAAwD;YACxD,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACjE,IAAI,WAAW,IAAI,WAAW,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBACrD,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;oBAChD,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC7F,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC;wBAChF,MAAM,IAAI,0BAA0B,SAAS,KAAK,UAAU,OAAO,CAAC;wBACpE,MAAM,IAAI,SAAS,GAAG,IAAI,CAAC;oBAC7B,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,4CAA4C;YAC9C,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC;gBAC3H,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,2EAA2E;IAC3E,0BAA0B;IAC1B,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,8XAA8X,EAC9X;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;KAC5G,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACpB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4EAA4E,EAAE,CAAC;iBAChH,CAAC;YACJ,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACtD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC;gBAC1H,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,2EAA2E;IAC3E,sBAAsB;IACtB,MAAM,CAAC,IAAI,CACT,eAAe,EACf,+ZAA+Z,EAC/Z;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACnD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;KAC5G,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QAC3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4EAA4E,EAAE,CAAC;iBAChH,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACnD,gBAAgB,EAAE,CAAC;YACnB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC;gBACjH,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,0EAA0E;IAC1E,mBAAmB;IACnB,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,8aAA8a,EAC9a;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAClE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,uEAAuE,CAAC;QAC9H,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;KAC5G,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QACrC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4EAA4E,EAAE,CAAC;iBAChH,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAE/D,IAAI,MAAM,GAAG,eAAe,QAAQ,CAAC,MAAM,IAAI,CAAC;YAEhD,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC9D,MAAM,IAAI,gBAAgB,CAAC;gBAC3B,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC;gBAC3E,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC;gBAE/E,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,MAAM,IAAI,sBAAsB,CAAC;oBACjC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACxB,MAAM,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC;oBAClD,CAAC,CAAC,CAAC;gBACL,CAAC;gBAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/B,MAAM,IAAI,kBAAkB,CAAC;oBAC7B,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACtC,MAAM,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;oBACtC,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACxB,MAAM,eAAe,GAAG,QAAQ,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC5G,MAAM,IAAI,uBAAuB,eAAe,IAAI,QAAQ,CAAC,UAAU,cAAc,QAAQ,CAAC,YAAY,IAAI,SAAS,GAAG,CAAC;YAC7H,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC;gBAC1H,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}