@mlightcad/cad-mcp-server 1.7.8-preview.1 → 1.7.8-preview.3

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.
package/dist/session.js CHANGED
@@ -1,9 +1,39 @@
1
1
  import { existsSync } from 'node:fs';
2
- import { readFile } from 'node:fs/promises';
2
+ import { mkdir, readFile, writeFile } from 'node:fs/promises';
3
3
  import { createServer } from 'node:http';
4
4
  import path from 'node:path';
5
5
  import { fileURLToPath } from 'node:url';
6
+ import { CAD_MCP_DXF_OUTBOX_KEY } from '@mlightcad/cad-agent-core/script-api';
6
7
  import { launchHeadlessChromium } from './headlessGpu.js';
8
+ const DEFAULT_IDLE_CLOSE_MS = 30_000;
9
+ async function writeDxfOutbox(page) {
10
+ const items = await page.evaluate((key) => {
11
+ const host = window;
12
+ const queued = host[key] ?? [];
13
+ host[key] = [];
14
+ return queued;
15
+ }, CAD_MCP_DXF_OUTBOX_KEY);
16
+ const saved = [];
17
+ for (const item of items) {
18
+ const fileName = item.fileName.toLowerCase().endsWith('.dxf')
19
+ ? item.fileName
20
+ : `${item.fileName}.dxf`;
21
+ const requested = item.path?.trim() || fileName;
22
+ const absolute = path.resolve(requested);
23
+ const target = absolute.toLowerCase().endsWith('.dxf')
24
+ ? absolute
25
+ : `${absolute}.dxf`;
26
+ await mkdir(path.dirname(target), { recursive: true });
27
+ await writeFile(target, item.text, 'utf8');
28
+ saved.push({
29
+ path: target,
30
+ fileName: path.basename(target),
31
+ bytes: Buffer.byteLength(item.text),
32
+ delivery: 'file'
33
+ });
34
+ }
35
+ return saved;
36
+ }
7
37
  function packageRoot() {
8
38
  return path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
9
39
  }
@@ -39,6 +69,19 @@ function contentTypeFor(filePath) {
39
69
  };
40
70
  return types[ext] ?? 'application/octet-stream';
41
71
  }
72
+ function resolveIdleCloseMs(override) {
73
+ if (typeof override === 'number' && Number.isFinite(override) && override >= 0) {
74
+ return override;
75
+ }
76
+ const fromEnv = process.env.CAD_MCP_IDLE_CLOSE_MS;
77
+ if (fromEnv !== undefined && fromEnv !== '') {
78
+ const parsed = Number(fromEnv);
79
+ if (Number.isFinite(parsed) && parsed >= 0) {
80
+ return parsed;
81
+ }
82
+ }
83
+ return DEFAULT_IDLE_CLOSE_MS;
84
+ }
42
85
  function startStaticServer(root) {
43
86
  return new Promise((resolve, reject) => {
44
87
  const mountedInputs = new Map();
@@ -108,28 +151,55 @@ function startStaticServer(root) {
108
151
  });
109
152
  }
110
153
  /**
111
- * Long-lived headless Chromium session hosting cad-simple-viewer + agent-core.
154
+ * Long-lived Chromium session hosting cad-simple-viewer + agent-core.
112
155
  *
113
- * Started lazily on the first tool call and kept for the process lifetime so
114
- * drawing state persists across MCP tool invocations.
156
+ * Started lazily on the first tool call. Headless sessions auto-close after
157
+ * idle time; headed sessions stay open so the user can watch the drawing.
115
158
  */
116
159
  export class CadMcpSession {
117
160
  browser;
118
161
  page;
119
162
  server;
120
- constructor(browser, page, server) {
163
+ headed;
164
+ idleCloseMs;
165
+ idleTimer;
166
+ constructor(browser, page, server, headed, idleCloseMs) {
121
167
  this.browser = browser;
122
168
  this.page = page;
123
169
  this.server = server;
170
+ this.headed = headed;
171
+ this.idleCloseMs = idleCloseMs;
124
172
  }
125
173
  static instance;
174
+ /** Resolved session used to detect headed mismatches before await. */
175
+ static resolved;
126
176
  /**
127
177
  * Returns the shared session, creating it on first call.
178
+ *
179
+ * If an existing session has a different `headed` flag, it is closed and
180
+ * rebuilt (drawing state is lost).
128
181
  */
129
- static shared(options = {}) {
182
+ static async shared(options = {}) {
183
+ const headed = options.headed === true;
184
+ if (this.instance) {
185
+ const existing = await this.instance.catch(() => undefined);
186
+ if (existing) {
187
+ if (existing.headed === headed) {
188
+ return existing;
189
+ }
190
+ console.error(`[cad-mcp-server] switching to ${headed ? 'headed' : 'headless'}; rebuilding session (drawing state reset)`);
191
+ await existing.close();
192
+ }
193
+ }
130
194
  if (!this.instance) {
131
- this.instance = this.create(options).catch(error => {
195
+ this.instance = this.create(options)
196
+ .then(session => {
197
+ this.resolved = session;
198
+ return session;
199
+ })
200
+ .catch(error => {
132
201
  this.instance = undefined;
202
+ this.resolved = undefined;
133
203
  throw error;
134
204
  });
135
205
  }
@@ -140,15 +210,20 @@ export class CadMcpSession {
140
210
  if (!existsSync(path.join(runnerDir, 'index.html'))) {
141
211
  throw new Error('MCP runner is not built. Run "pnpm --filter @mlightcad/cad-mcp-server build".');
142
212
  }
213
+ const headed = options.headed === true;
214
+ const idleCloseMs = resolveIdleCloseMs(options.idleCloseMs);
143
215
  const server = await startStaticServer(runnerDir);
144
216
  const channel = process.env.PLAYWRIGHT_BROWSER_CHANNEL;
145
217
  const gpu = await launchHeadlessChromium({
146
218
  channel,
147
- useGpu: options.useGpu
219
+ useGpu: options.useGpu,
220
+ headed
148
221
  });
149
222
  const browser = gpu.browser;
150
- console.error(`[cad-mcp-server] webgl: ${gpu.renderer} (${gpu.backend})`);
151
- const context = await browser.newContext();
223
+ console.error(`[cad-mcp-server] webgl: ${gpu.renderer} (${gpu.backend}); ${headed ? 'headed' : 'headless'}`);
224
+ // Headed: match the real window so resizing updates layout / canvas.
225
+ // Headless: keep Playwright's default fixed viewport for stable capture.
226
+ const context = await browser.newContext(headed ? { viewport: null } : undefined);
152
227
  const page = await context.newPage();
153
228
  page.on('console', msg => {
154
229
  const text = msg.text();
@@ -168,9 +243,37 @@ export class CadMcpSession {
168
243
  await page.waitForFunction(() => typeof window.__cadMcp !==
169
244
  'undefined');
170
245
  console.error('[cad-mcp-server] browser ready');
171
- return new CadMcpSession(browser, page, server);
246
+ return new CadMcpSession(browser, page, server, headed, idleCloseMs);
247
+ }
248
+ clearIdleClose() {
249
+ if (this.idleTimer !== undefined) {
250
+ clearTimeout(this.idleTimer);
251
+ this.idleTimer = undefined;
252
+ }
253
+ }
254
+ scheduleIdleClose() {
255
+ this.clearIdleClose();
256
+ if (this.headed || this.idleCloseMs <= 0) {
257
+ return;
258
+ }
259
+ this.idleTimer = setTimeout(() => {
260
+ console.error(`[cad-mcp-server] headless idle ${this.idleCloseMs}ms; closing browser`);
261
+ void this.close();
262
+ }, this.idleCloseMs);
263
+ // Allow the Node process to exit if only the idle timer remains.
264
+ this.idleTimer.unref?.();
265
+ }
266
+ touchActivity() {
267
+ if (this.headed) {
268
+ this.clearIdleClose();
269
+ return;
270
+ }
271
+ this.scheduleIdleClose();
172
272
  }
173
273
  async openDrawing(input) {
274
+ // Pause idle close for the whole tool call — a prior 30s timer must not
275
+ // kill Chromium while open/load (or a long script) is still running.
276
+ this.clearIdleClose();
174
277
  let fileName = null;
175
278
  let drawingUrl = null;
176
279
  const pathArg = input.path?.trim();
@@ -189,23 +292,46 @@ export class CadMcpSession {
189
292
  }
190
293
  }
191
294
  const mode = input.mode ?? (pathArg ? 'read' : 'write');
192
- return this.page.evaluate(async ({ fileName: name, drawingUrl: url, mode: openMode }) => {
193
- const api = window.__cadMcp;
194
- return api.openDrawing({
195
- fileName: name,
196
- drawingUrl: url,
197
- mode: openMode,
198
- startBlank: !url
199
- });
200
- }, { fileName, drawingUrl, mode });
295
+ try {
296
+ return await this.page.evaluate(async ({ fileName: name, drawingUrl: url, mode: openMode }) => {
297
+ const api = window.__cadMcp;
298
+ return api.openDrawing({
299
+ fileName: name,
300
+ drawingUrl: url,
301
+ mode: openMode,
302
+ startBlank: !url
303
+ });
304
+ }, { fileName, drawingUrl, mode });
305
+ }
306
+ finally {
307
+ this.touchActivity();
308
+ }
201
309
  }
202
310
  async executeCadScript(input) {
203
- return this.page.evaluate(async (args) => {
204
- const api = window.__cadMcp;
205
- return api.executeCadScript(args);
206
- }, input);
311
+ // Scripts can exceed the idle window (MCP raises tick/ms limits for large
312
+ // drawings). Clear before evaluate so the prior idle timer cannot close us.
313
+ this.clearIdleClose();
314
+ try {
315
+ const result = await this.page.evaluate(async (args) => {
316
+ const api = window.__cadMcp;
317
+ return api.executeCadScript(args);
318
+ }, input);
319
+ const written = await writeDxfOutbox(this.page);
320
+ if (written.length) {
321
+ result.savedFiles = written;
322
+ }
323
+ return result;
324
+ }
325
+ finally {
326
+ this.touchActivity();
327
+ }
207
328
  }
208
329
  async close() {
330
+ this.clearIdleClose();
331
+ if (CadMcpSession.resolved === this) {
332
+ CadMcpSession.resolved = undefined;
333
+ }
334
+ CadMcpSession.instance = undefined;
209
335
  await this.browser.close().catch(() => undefined);
210
336
  await this.server.close().catch(() => undefined);
211
337
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EACL,YAAY,EAGb,MAAM,WAAW,CAAA;AAClB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAGxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAA;AAG7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAIzD,MAAM,qBAAqB,GAAG,MAAM,CAAA;AAuBpC,KAAK,UAAU,cAAc,CAAC,IAAU;IACtC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAW,EAAE,EAAE;QAChD,MAAM,IAAI,GAAG,MAA4C,CAAA;QACzD,MAAM,MAAM,GACT,IAAI,CAAC,GAAG,CAEK,IAAI,EAAE,CAAA;QACtB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;QACd,OAAO,MAAM,CAAA;IACf,CAAC,EAAE,sBAAsB,CAAC,CAAA;IAE1B,MAAM,KAAK,GAA0B,EAAE,CAAA;IACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC3D,CAAC,CAAC,IAAI,CAAC,QAAQ;YACf,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,MAAM,CAAA;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAA;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YACpD,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,GAAG,QAAQ,MAAM,CAAA;QACrB,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACtD,MAAM,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC1C,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC/B,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YACnC,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;AACzE,CAAC;AAED,SAAS,aAAa;IACpB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,CAAA;AAChD,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;AAC3C,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAiB;IAC3C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAA;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QACpC,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IACD,OAAO,aAAa,CAAA;AACtB,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;IAChD,MAAM,KAAK,GAA2B;QACpC,OAAO,EAAE,0BAA0B;QACnC,KAAK,EAAE,gCAAgC;QACvC,MAAM,EAAE,yBAAyB;QACjC,OAAO,EAAE,kBAAkB;QAC3B,OAAO,EAAE,kBAAkB;QAC3B,MAAM,EAAE,0BAA0B;QAClC,MAAM,EAAE,0BAA0B;KACnC,CAAA;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,0BAA0B,CAAA;AACjD,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAiB;IAC3C,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QAC/E,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAA;IACjD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;QAC9B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAC3C,OAAO,MAAM,CAAA;QACf,CAAC;IACH,CAAC;IACD,OAAO,qBAAqB,CAAA;AAC9B,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAA;QAC/C,IAAI,QAAQ,GAAG,CAAC,CAAA;QAEhB,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACvC,KAAK,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAC9B,CAAC,CAAC,CAAA;QAEF,KAAK,UAAU,aAAa,CAAC,GAAoB,EAAE,GAAmB;YACpE,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,kBAAkB,CAChC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CACtC,CAAA;gBAED,IAAI,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAC1C,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;oBAC3C,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACvC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;wBAClB,GAAG,CAAC,GAAG,EAAE,CAAA;wBACT,OAAM;oBACR,CAAC;oBACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAA;oBACrC,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAA;oBACvD,GAAG,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;oBACxD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;oBAClB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;oBACb,OAAM;gBACR,CAAC;gBAED,MAAM,QAAQ,GACZ,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;gBAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;gBAE1C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC/B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;oBAClB,GAAG,CAAC,GAAG,EAAE,CAAA;oBACT,OAAM;gBACR,CAAC;gBAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;oBAClB,GAAG,CAAC,GAAG,EAAE,CAAA;oBACT,OAAM;gBACR,CAAC;gBAED,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAA;gBACvD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAA;gBACrC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;gBAClB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACf,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;gBAClB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;YACxB,CAAC;QACH,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE;YACjC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAA;YAChC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC5C,MAAM,CAAC,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC,CAAA;gBAClE,OAAM;YACR,CAAC;YACD,MAAM,OAAO,GAAG,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAA;YAClD,OAAO,CAAC;gBACN,GAAG,EAAE,OAAO;gBACZ,UAAU,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,EAAE;oBACtC,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAA;oBAChC,MAAM,OAAO,GAAG,kBAAkB,KAAK,EAAE,CAAA;oBACzC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;oBACxC,OAAO,GAAG,OAAO,GAAG,OAAO,EAAE,CAAA;gBAC/B,CAAC;gBACD,KAAK,EAAE,GAAG,EAAE,CACV,IAAI,OAAO,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE;oBACxC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAA;gBAChE,CAAC,CAAC;aACL,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,aAAa;IAIL;IACA;IACA;IACR;IACQ;IAPX,SAAS,CAA2C;IAE5D,YACmB,OAAgB,EAChB,IAAU,EACV,MAAuB,EAC/B,MAAe,EACP,WAAmB;QAJnB,YAAO,GAAP,OAAO,CAAS;QAChB,SAAI,GAAJ,IAAI,CAAM;QACV,WAAM,GAAN,MAAM,CAAiB;QAC/B,WAAM,GAAN,MAAM,CAAS;QACP,gBAAW,GAAX,WAAW,CAAQ;IACnC,CAAC;IAEI,MAAM,CAAC,QAAQ,CAAoC;IAC3D,sEAAsE;IAC9D,MAAM,CAAC,QAAQ,CAA2B;IAElD;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,UAAsC,EAAE;QAExC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,CAAA;QAEtC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;YAC3D,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBAC/B,OAAO,QAAQ,CAAA;gBACjB,CAAC;gBACD,OAAO,CAAC,KAAK,CACX,iCAAiC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,4CAA4C,CAC5G,CAAA;gBACD,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAA;YACxB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;iBACjC,IAAI,CAAC,OAAO,CAAC,EAAE;gBACd,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;gBACvB,OAAO,OAAO,CAAA;YAChB,CAAC,CAAC;iBACD,KAAK,CAAC,KAAK,CAAC,EAAE;gBACb,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAA;gBACzB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAA;gBACzB,MAAM,KAAK,CAAA;YACb,CAAC,CAAC,CAAA;QACN,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,UAAsC,EAAE;QAExC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAA;QACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAA;QACH,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,CAAA;QACtC,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QAC3D,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAA;QACjD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAA;QACtD,MAAM,GAAG,GAAG,MAAM,sBAAsB,CAAC;YACvC,OAAO;YACP,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM;SACP,CAAC,CAAA;QACF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAA;QAC3B,OAAO,CAAC,KAAK,CACX,2BAA2B,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,OAAO,MAAM,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,CAC9F,CAAA;QACD,qEAAqE;QACrE,yEAAyE;QACzE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CACxC,CAAA;QACD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;QACpC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE;YACvB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;YACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBACvC,OAAM;YACR,CAAC;YACD,IACE,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC;gBACnC,GAAG,CAAC,IAAI,EAAE,KAAK,OAAO;gBACtB,GAAG,CAAC,IAAI,EAAE,KAAK,SAAS,EACxB,CAAC;gBACD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACrB,CAAC;QACH,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE;YAC3B,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;QACF,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,aAAa,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAA;QACzE,MAAM,IAAI,CAAC,eAAe,CACxB,GAAG,EAAE,CACH,OAAQ,MAA4C,CAAC,QAAQ;YAC7D,WAAW,CACd,CAAA;QACD,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAC/C,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAA;IACtE,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC5B,CAAC;IACH,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC;YACzC,OAAM;QACR,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC/B,OAAO,CAAC,KAAK,CACX,kCAAkC,IAAI,CAAC,WAAW,qBAAqB,CACxE,CAAA;YACD,KAAK,IAAI,CAAC,KAAK,EAAE,CAAA;QACnB,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;QACpB,iEAAiE;QACjE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAA;IAC1B,CAAC;IAEO,aAAa;QACnB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,cAAc,EAAE,CAAA;YACrB,OAAM;QACR,CAAC;QACD,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAGjB;QACC,wEAAwE;QACxE,qEAAqE;QACrE,IAAI,CAAC,cAAc,EAAE,CAAA;QAErB,IAAI,QAAQ,GAAkB,IAAI,CAAA;QAClC,IAAI,UAAU,GAAkB,IAAI,CAAA;QACpC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAA;QAElC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvB,UAAU,GAAG,OAAO,CAAA;gBACpB,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAA;YACxC,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBACtC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1B,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAA;gBACnD,CAAC;gBACD,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;gBAClC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;YACzD,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAE5C,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAC7B,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;gBAC5D,MAAM,GAAG,GACP,MAUD,CAAC,QAAQ,CAAA;gBACV,OAAO,GAAG,CAAC,WAAW,CAAC;oBACrB,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,CAAC,GAAG;iBACjB,CAAC,CAAA;YACJ,CAAC,EACD,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAC/B,CAAA;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,aAAa,EAAE,CAAA;QACtB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,KAGtB;QACC,0EAA0E;QAC1E,4EAA4E;QAC5E,IAAI,CAAC,cAAc,EAAE,CAAA;QAErB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;gBACnD,MAAM,GAAG,GACP,MAQD,CAAC,QAAQ,CAAA;gBACV,OAAO,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;YACnC,CAAC,EAAE,KAAK,CAAC,CAAA;YACT,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC/C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,CAAC,UAAU,GAAG,OAAO,CAAA;YAC7B,CAAC;YACD,OAAO,MAAM,CAAA;QACf,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,aAAa,EAAE,CAAA;QACtB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,IAAI,aAAa,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YACpC,aAAa,CAAC,QAAQ,GAAG,SAAS,CAAA;QACpC,CAAC;QACD,aAAa,CAAC,QAAQ,GAAG,SAAS,CAAA;QAClC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QACjD,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IAClD,CAAC;CACF"}