@shapeshift-labs/frontier-swarm-codex 0.1.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.
package/dist/index.js ADDED
@@ -0,0 +1,594 @@
1
+ import { spawn } from 'node:child_process';
2
+ import fs from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ import { FRONTIER_SWARM_DEFAULT_MODEL, FRONTIER_SWARM_DEFAULT_REASONING_EFFORT, checkSwarmOwnership, completeSwarmJob, createSwarmPlan, createSwarmProof, createSwarmRun, recordSwarmEvent } from '@shapeshift-labs/frontier-swarm';
5
+ export const FRONTIER_SWARM_CODEX_DEFAULT_MODEL = FRONTIER_SWARM_DEFAULT_MODEL;
6
+ export const FRONTIER_SWARM_CODEX_DEFAULT_REASONING_EFFORT = FRONTIER_SWARM_DEFAULT_REASONING_EFFORT;
7
+ const DEFAULT_WORKSPACE_INCLUDES = ['AGENTS.md', 'package.json', 'package-lock.json', 'pnpm-lock.yaml', 'yarn.lock', 'config'];
8
+ const DEFAULT_WORKSPACE_EXCLUDES = [
9
+ '.git',
10
+ 'node_modules',
11
+ 'dist',
12
+ 'coverage',
13
+ '.frontier-framework',
14
+ 'agent-runs',
15
+ 'test/roms',
16
+ 'target'
17
+ ];
18
+ export function createCodexSwarmPlan(input) {
19
+ return createSwarmPlan(coerceCodexSwarmManifestInput(input.manifest), coerceCodexSwarmTasksInput(input.tasks), input.plan ?? {});
20
+ }
21
+ export function coerceCodexSwarmManifestInput(value) {
22
+ const input = isObject(value) ? value : {};
23
+ const lanes = arrayOfObjects(input.lanes).map((lane) => ({
24
+ ...lane,
25
+ allowedWrites: readStringArray(lane.allowedWrites).concat(readStringArray(lane.allowedGlobs)),
26
+ evidencePrefix: typeof lane.evidencePrefix === 'string'
27
+ ? lane.evidencePrefix
28
+ : typeof lane.evidenceOutDirPrefix === 'string'
29
+ ? lane.evidenceOutDirPrefix
30
+ : undefined
31
+ }));
32
+ return {
33
+ id: typeof input.id === 'string' ? input.id : 'codex-swarm',
34
+ title: typeof input.title === 'string' ? input.title : undefined,
35
+ description: typeof input.description === 'string' ? input.description : undefined,
36
+ compute: readCompute(input.compute),
37
+ layers: arrayOfObjects(input.layers),
38
+ lanes: lanes,
39
+ policy: isObject(input.policy) ? input.policy : {
40
+ defaultCompute: 'codex.deep',
41
+ defaultConcurrency: 1
42
+ },
43
+ resources: readStringArray(input.resources),
44
+ tags: readStringArray(input.tags),
45
+ metadata: isObject(input.metadata) ? input.metadata : undefined
46
+ };
47
+ }
48
+ export function coerceCodexSwarmTasksInput(value) {
49
+ const raw = Array.isArray(value)
50
+ ? value
51
+ : isObject(value) && Array.isArray(value.tasks)
52
+ ? value.tasks
53
+ : isObject(value) && Array.isArray(value.items)
54
+ ? value.items
55
+ : [];
56
+ return raw.filter(isObject).map((entry) => {
57
+ const task = entry;
58
+ return {
59
+ id: String(task.id ?? task.taskId ?? ''),
60
+ title: typeof task.title === 'string' ? task.title : undefined,
61
+ objective: typeof task.objective === 'string'
62
+ ? task.objective
63
+ : typeof task.description === 'string'
64
+ ? task.description
65
+ : typeof task.title === 'string'
66
+ ? task.title
67
+ : undefined,
68
+ kind: typeof task.kind === 'string' ? task.kind : typeof task.surfaceKind === 'string' ? task.surfaceKind : undefined,
69
+ status: typeof task.status === 'string' ? task.status : undefined,
70
+ lane: typeof task.lane === 'string' ? task.lane : undefined,
71
+ layer: typeof task.layer === 'string' ? task.layer : undefined,
72
+ compute: typeof task.compute === 'string' ? task.compute : undefined,
73
+ priority: typeof task.priority === 'number' ? task.priority : undefined,
74
+ sourceRefs: readStringArray(task.sourceRefs).concat(readStringArray(task.legacySourcePaths)),
75
+ targetRefs: readStringArray(task.targetRefs).concat(readStringArray(task.ownedFiles), readStringArray(task.files)),
76
+ allowedWrites: readStringArray(task.allowedWrites).concat(readStringArray(task.ownedFiles), readStringArray(task.files)),
77
+ acceptance: readStringArray(task.acceptance),
78
+ acceptanceChecks: Array.isArray(task.acceptanceChecks) ? task.acceptanceChecks : undefined,
79
+ verification: Array.isArray(task.verification) ? task.verification : undefined,
80
+ evidenceCommand: typeof task.evidenceCommand === 'string' ? task.evidenceCommand : undefined,
81
+ shardCommand: typeof task.shardCommand === 'string' ? task.shardCommand : undefined,
82
+ tags: readStringArray(task.tags),
83
+ metadata: { source: task }
84
+ };
85
+ }).filter((task) => task.id.length > 0);
86
+ }
87
+ export async function runCodexSwarm(plan, options) {
88
+ const outDir = path.resolve(options.cwd ?? process.cwd(), options.outDir);
89
+ await fs.mkdir(outDir, { recursive: true });
90
+ await fs.writeFile(path.join(outDir, 'swarm-plan.json'), JSON.stringify(plan, null, 2) + '\n');
91
+ let run = createSwarmRun({ plan, status: 'running', startedAt: Date.now() });
92
+ run = recordSwarmEvent(run, { type: 'swarm.started', at: run.startedAt, data: { jobCount: plan.jobs.length } });
93
+ const results = await runJobPool(plan.jobs, Math.max(1, options.maxConcurrency ?? 1), (job) => runCodexJob(job, options, outDir));
94
+ for (const result of results)
95
+ run = completeSwarmJob(run, result);
96
+ const proof = createSwarmProof(run, { validation: plan.validation });
97
+ const ok = run.summary.failedCount === 0 && run.summary.blockedCount === 0 && run.summary.ownershipViolationCount === 0;
98
+ await fs.writeFile(path.join(outDir, 'swarm-results.json'), JSON.stringify({ ok, outDir, run, proof }, null, 2) + '\n');
99
+ return { ok, outDir, plan, run, proof };
100
+ }
101
+ export async function runCodexJob(job, options, outDir) {
102
+ const paths = await createJobPaths(outDir, job);
103
+ const workspace = await prepareCodexWorkspace(job, options);
104
+ const workspacePlan = createCodexWorkspacePlan(job, options);
105
+ const fileSnapshot = shouldSnapshotWorkspaceChanges(workspacePlan, options)
106
+ ? await snapshotWorkspaceFiles(workspace)
107
+ : undefined;
108
+ const prompt = renderCodexPrompt(job, { workspacePath: workspace, paths });
109
+ await fs.writeFile(paths.promptPath, prompt);
110
+ const args = buildCodexArgs(job, { ...options, workspacePath: workspace, paths });
111
+ const startedAt = Date.now();
112
+ const execution = options.dryRun
113
+ ? { exitCode: 0, changedPaths: [] }
114
+ : await (options.executor ?? spawnCodexExecutor)({
115
+ job,
116
+ prompt,
117
+ args,
118
+ cwd: options.cwd ?? process.cwd(),
119
+ workspacePath: workspace,
120
+ codexPath: options.codexPath ?? 'codex',
121
+ paths,
122
+ timeoutMs: job.compute.timeoutMs ?? options.jobTimeoutMs ?? 7200000
123
+ });
124
+ const changedPaths = execution.changedPaths ?? (options.collectGitStatus === false ? [] : await collectChangedPaths(workspace, fileSnapshot));
125
+ const ownership = checkSwarmOwnership(job, changedPaths);
126
+ const verification = options.runVerification ? await runVerification(job.verification, workspace) : [];
127
+ const failedVerification = verification.some((entry) => entry.required !== false && entry.status !== 0);
128
+ const status = ownership.ok && execution.exitCode === 0 && !failedVerification ? 'completed' : 'failed';
129
+ return {
130
+ jobId: job.id,
131
+ status,
132
+ startedAt,
133
+ finishedAt: Date.now(),
134
+ exitCode: execution.exitCode,
135
+ signal: execution.signal,
136
+ changedPaths,
137
+ ownershipViolations: ownership.violations,
138
+ evidencePaths: [paths.evidenceDir],
139
+ verification,
140
+ lastMessage: execution.lastMessage,
141
+ error: execution.error
142
+ };
143
+ }
144
+ export function buildCodexArgs(job, input) {
145
+ const model = job.compute.model ?? input.model ?? FRONTIER_SWARM_CODEX_DEFAULT_MODEL;
146
+ const effort = job.compute.reasoningEffort ?? input.reasoningEffort ?? FRONTIER_SWARM_CODEX_DEFAULT_REASONING_EFFORT;
147
+ const sandbox = job.compute.sandbox ?? input.sandbox ?? 'workspace-write';
148
+ const approval = job.compute.approval ?? input.approval ?? 'never';
149
+ const args = [
150
+ 'exec',
151
+ '--cd',
152
+ input.workspacePath,
153
+ '--add-dir',
154
+ path.resolve(input.cwd ?? process.cwd(), input.outDir),
155
+ '--sandbox',
156
+ sandbox,
157
+ '--ask-for-approval',
158
+ approval,
159
+ '--json',
160
+ '--output-last-message',
161
+ input.paths.lastMessagePath,
162
+ '--model',
163
+ model,
164
+ '-c',
165
+ `model_reasoning_effort="${effort}"`
166
+ ];
167
+ if (shouldSkipGitRepoCheck(input))
168
+ args.push('--skip-git-repo-check');
169
+ for (const dir of input.addDirs ?? [])
170
+ args.push('--add-dir', dir);
171
+ const profile = job.compute.profile ?? input.profile;
172
+ if (profile)
173
+ args.push('--profile', profile);
174
+ if (input.ephemeral ?? true)
175
+ args.push('--ephemeral');
176
+ args.push('-');
177
+ return args;
178
+ }
179
+ export function renderCodexPrompt(job, input) {
180
+ return [
181
+ '# Frontier Swarm Codex Job',
182
+ '',
183
+ `Job: ${job.id}`,
184
+ `Task: ${job.taskId}`,
185
+ `Lane: ${job.lane}`,
186
+ `Layer: ${job.layer ?? 'none'}`,
187
+ `Compute: ${job.compute.id}`,
188
+ `Workspace: ${input.workspacePath}`,
189
+ '',
190
+ '## Ownership',
191
+ '',
192
+ 'Allowed write globs:',
193
+ ...bullets(job.allowedWrites),
194
+ '',
195
+ 'Shared read-only globs:',
196
+ ...bullets(job.sharedReadOnly),
197
+ '',
198
+ 'Never edit without parent assignment:',
199
+ ...bullets(job.neverEdit),
200
+ '',
201
+ '## Task',
202
+ '',
203
+ job.task.objective,
204
+ '',
205
+ 'Source refs:',
206
+ ...bullets(job.task.sourceRefs),
207
+ '',
208
+ 'Target refs:',
209
+ ...bullets(job.task.targetRefs),
210
+ '',
211
+ 'Acceptance:',
212
+ ...bullets(job.acceptance),
213
+ '',
214
+ 'Verification commands:',
215
+ ...bullets(job.verification.map(formatCommand)),
216
+ '',
217
+ '## Evidence',
218
+ '',
219
+ `Write evidence under ${input.paths.evidenceDir}.`,
220
+ 'Final response must include changed files, commands run, evidence paths, remaining gaps, and whether changed paths stayed inside allowed write globs.',
221
+ '',
222
+ 'Raw task JSON:',
223
+ '',
224
+ JSON.stringify(job.task, null, 2)
225
+ ].join('\n') + '\n';
226
+ }
227
+ export async function spawnCodexExecutor(input) {
228
+ await fs.writeFile(input.paths.eventsPath, '');
229
+ await fs.writeFile(input.paths.stderrPath, '');
230
+ return new Promise((resolve) => {
231
+ const child = spawn(input.codexPath, input.args, { cwd: input.cwd, stdio: ['pipe', 'pipe', 'pipe'] });
232
+ const timer = setTimeout(() => child.kill('SIGTERM'), input.timeoutMs);
233
+ child.stdout.on('data', (chunk) => fs.appendFile(input.paths.eventsPath, chunk).catch(() => { }));
234
+ child.stderr.on('data', (chunk) => fs.appendFile(input.paths.stderrPath, chunk).catch(() => { }));
235
+ child.stdin.end(input.prompt);
236
+ child.on('close', async (code, signal) => {
237
+ clearTimeout(timer);
238
+ resolve({
239
+ exitCode: code ?? 1,
240
+ ...(signal ? { signal } : {}),
241
+ lastMessage: await readOptionalText(input.paths.lastMessagePath)
242
+ });
243
+ });
244
+ child.on('error', (error) => {
245
+ clearTimeout(timer);
246
+ resolve({ exitCode: 1, error });
247
+ });
248
+ });
249
+ }
250
+ async function createJobPaths(outDir, job) {
251
+ const jobDir = path.join(outDir, job.id);
252
+ const paths = {
253
+ jobDir,
254
+ promptPath: path.join(jobDir, 'prompt.md'),
255
+ eventsPath: path.join(jobDir, 'codex-events.jsonl'),
256
+ stderrPath: path.join(jobDir, 'codex-stderr.log'),
257
+ lastMessagePath: path.join(jobDir, 'last-message.md'),
258
+ evidenceDir: path.join(jobDir, 'evidence')
259
+ };
260
+ await fs.mkdir(paths.evidenceDir, { recursive: true });
261
+ return paths;
262
+ }
263
+ export async function prepareCodexWorkspace(job, options) {
264
+ const cwd = path.resolve(options.cwd ?? process.cwd());
265
+ const plan = createCodexWorkspacePlan(job, options);
266
+ if (plan.mode === 'current')
267
+ return plan.path;
268
+ if (plan.mode === 'git-worktree') {
269
+ if (await pathExists(plan.path))
270
+ return plan.path;
271
+ if (options.workspace?.create === false)
272
+ throw new Error(`missing worktree for ${job.id}: ${plan.path}`);
273
+ await fs.mkdir(path.dirname(plan.path), { recursive: true });
274
+ await runProcess('git', ['worktree', 'add', '--detach', plan.path, 'HEAD'], { cwd });
275
+ return plan.path;
276
+ }
277
+ if (await pathExists(plan.path)) {
278
+ if (!plan.replace)
279
+ return plan.path;
280
+ await fs.rm(plan.path, { recursive: true, force: true });
281
+ }
282
+ await fs.mkdir(plan.path, { recursive: true });
283
+ for (const include of plan.includes)
284
+ await copyWorkspacePath(cwd, plan.path, include, plan.excludes);
285
+ for (const include of plan.artifactIncludes)
286
+ await copyWorkspacePath(cwd, plan.path, include, []);
287
+ for (const linkPath of plan.linkPaths)
288
+ await linkWorkspacePath(cwd, plan.path, linkPath);
289
+ if (plan.linkNodeModules)
290
+ await linkWorkspacePath(cwd, plan.path, 'node_modules');
291
+ return plan.path;
292
+ }
293
+ export function createCodexWorkspacePlan(job, options) {
294
+ const cwd = path.resolve(options.cwd ?? process.cwd());
295
+ const workspace = options.workspace ?? { mode: 'current' };
296
+ const mode = workspace.mode ?? 'current';
297
+ const root = path.resolve(cwd, workspace.root ?? path.join('agent-worktrees', 'frontier-swarm-codex'));
298
+ const rawTask = readRawTask(job);
299
+ if (mode === 'current') {
300
+ const currentPath = path.resolve(cwd, job.worktreePath ?? '.');
301
+ return {
302
+ mode,
303
+ root,
304
+ path: currentPath,
305
+ includes: [],
306
+ excludes: [],
307
+ artifactIncludes: [],
308
+ linkPaths: [],
309
+ linkNodeModules: false,
310
+ replace: false,
311
+ skipGitRepoCheck: workspace.skipGitRepoCheck ?? false
312
+ };
313
+ }
314
+ const includes = uniqueWorkspacePaths([
315
+ ...DEFAULT_WORKSPACE_INCLUDES,
316
+ ...readStringArray(workspace.includes),
317
+ ...readStringArray(rawTask.snapshotIncludes),
318
+ ...readStringArray(rawTask.files),
319
+ ...job.task.sourceRefs,
320
+ ...job.task.targetRefs
321
+ ]);
322
+ const excludes = uniqueWorkspacePaths([
323
+ ...DEFAULT_WORKSPACE_EXCLUDES,
324
+ ...readStringArray(workspace.excludes),
325
+ ...readStringArray(rawTask.snapshotExcludes)
326
+ ]);
327
+ const artifactIncludes = uniqueWorkspacePaths([
328
+ ...readStringArray(workspace.artifactIncludes),
329
+ ...readStringArray(rawTask.snapshotArtifactIncludes)
330
+ ]);
331
+ const linkPaths = uniqueWorkspacePaths([
332
+ ...readStringArray(workspace.linkPaths),
333
+ ...readStringArray(rawTask.snapshotLinkPaths),
334
+ ...readStringArray(rawTask.linkPaths)
335
+ ]);
336
+ return {
337
+ mode,
338
+ root,
339
+ path: path.resolve(root, job.id),
340
+ includes,
341
+ excludes,
342
+ artifactIncludes,
343
+ linkPaths,
344
+ linkNodeModules: workspace.linkNodeModules ?? (mode !== 'git-worktree'),
345
+ replace: workspace.replace ?? false,
346
+ skipGitRepoCheck: workspace.skipGitRepoCheck ?? (mode === 'copy' || mode === 'snapshot')
347
+ };
348
+ }
349
+ async function copyWorkspacePath(cwd, workspacePath, include, excludes) {
350
+ const relative = normalizeWorkspacePath(include);
351
+ if (!relative)
352
+ return;
353
+ const from = path.resolve(cwd, relative);
354
+ const to = path.resolve(workspacePath, relative);
355
+ if (!await pathExists(from))
356
+ return;
357
+ await fs.mkdir(path.dirname(to), { recursive: true });
358
+ await fs.cp(from, to, {
359
+ recursive: true,
360
+ force: true,
361
+ filter: (source) => !isExcluded(cwd, source, excludes)
362
+ });
363
+ }
364
+ async function linkWorkspacePath(cwd, workspacePath, include) {
365
+ const relative = normalizeWorkspacePath(include);
366
+ if (!relative)
367
+ return;
368
+ const from = path.resolve(cwd, relative);
369
+ const to = path.resolve(workspacePath, relative);
370
+ if (!await pathExists(from) || await pathExists(to))
371
+ return;
372
+ await fs.mkdir(path.dirname(to), { recursive: true });
373
+ const stat = await fs.lstat(from);
374
+ await fs.symlink(from, to, stat.isDirectory() ? 'dir' : 'file').catch(() => { });
375
+ }
376
+ function shouldSnapshotWorkspaceChanges(plan, options) {
377
+ return options.collectGitStatus !== false && (plan.mode === 'copy' || plan.mode === 'snapshot');
378
+ }
379
+ function shouldSkipGitRepoCheck(input) {
380
+ const workspace = input.workspace;
381
+ if (!workspace)
382
+ return false;
383
+ if (workspace.skipGitRepoCheck !== undefined)
384
+ return workspace.skipGitRepoCheck;
385
+ return workspace.mode === 'copy' || workspace.mode === 'snapshot';
386
+ }
387
+ function readRawTask(job) {
388
+ const metadata = isObject(job.task.metadata) ? job.task.metadata : {};
389
+ return isObject(metadata.source) ? metadata.source : {};
390
+ }
391
+ function normalizeWorkspacePath(value) {
392
+ const clean = value.replace(/\\/g, '/').replace(/\/+$/, '');
393
+ if (!clean || clean.includes('\0') || clean.includes('*') || path.isAbsolute(clean))
394
+ return undefined;
395
+ const normalized = path.normalize(clean).replace(/\\/g, '/');
396
+ if (normalized === '.' || normalized.startsWith('..') || path.isAbsolute(normalized))
397
+ return undefined;
398
+ return normalized;
399
+ }
400
+ function uniqueWorkspacePaths(values) {
401
+ const out = [];
402
+ const seen = new Set();
403
+ for (const value of values) {
404
+ const normalized = normalizeWorkspacePath(value);
405
+ if (!normalized || seen.has(normalized))
406
+ continue;
407
+ seen.add(normalized);
408
+ out.push(normalized);
409
+ }
410
+ return out;
411
+ }
412
+ async function gitChangedPaths(cwd) {
413
+ const result = await runProcess('git', ['status', '--porcelain'], { cwd, allowFailure: true });
414
+ if (result.status !== 0)
415
+ return [];
416
+ return result.stdout.split(/\r?\n/).filter(Boolean).flatMap((line) => {
417
+ const value = line.slice(3);
418
+ return value.includes(' -> ') ? value.split(' -> ') : [value];
419
+ });
420
+ }
421
+ async function collectChangedPaths(cwd, baseline) {
422
+ const gitPaths = await gitChangedPaths(cwd);
423
+ if (gitPaths.length > 0 || !baseline)
424
+ return gitPaths;
425
+ const after = await snapshotWorkspaceFiles(cwd);
426
+ return diffWorkspaceFiles(baseline, after);
427
+ }
428
+ async function snapshotWorkspaceFiles(root) {
429
+ const snapshot = new Map();
430
+ await walkWorkspaceFiles(root, root, snapshot);
431
+ return snapshot;
432
+ }
433
+ async function walkWorkspaceFiles(root, current, snapshot) {
434
+ let entries;
435
+ try {
436
+ entries = await fs.readdir(current);
437
+ }
438
+ catch {
439
+ return;
440
+ }
441
+ for (const entry of entries) {
442
+ const absolute = path.join(current, entry);
443
+ const relative = path.relative(root, absolute).replace(/\\/g, '/');
444
+ const stat = await fs.lstat(absolute).catch(() => undefined);
445
+ if (!stat)
446
+ continue;
447
+ if (stat.isSymbolicLink()) {
448
+ const target = await fs.readlink(absolute).catch(() => '');
449
+ snapshot.set(relative, `link:${target}`);
450
+ continue;
451
+ }
452
+ if (stat.isDirectory()) {
453
+ await walkWorkspaceFiles(root, absolute, snapshot);
454
+ continue;
455
+ }
456
+ if (stat.isFile())
457
+ snapshot.set(relative, `${stat.size}:${stat.mtimeMs}`);
458
+ }
459
+ }
460
+ function diffWorkspaceFiles(before, after) {
461
+ const changed = new Set();
462
+ for (const [file, marker] of after) {
463
+ if (before.get(file) !== marker)
464
+ changed.add(file);
465
+ }
466
+ for (const file of before.keys()) {
467
+ if (!after.has(file))
468
+ changed.add(file);
469
+ }
470
+ return Array.from(changed).sort();
471
+ }
472
+ async function runVerification(commands, cwd) {
473
+ const results = [];
474
+ for (const command of commands) {
475
+ const startedAt = Date.now();
476
+ const run = await runProcess(command.command, command.args, { cwd, allowFailure: true });
477
+ results.push({
478
+ name: command.name,
479
+ command: [command.command, ...command.args],
480
+ status: run.status,
481
+ durationMs: Date.now() - startedAt,
482
+ stdoutTail: tail(run.stdout),
483
+ stderrTail: tail(run.stderr),
484
+ required: command.required
485
+ });
486
+ if (run.status !== 0 && command.required)
487
+ break;
488
+ }
489
+ return results;
490
+ }
491
+ async function runJobPool(jobs, concurrency, worker) {
492
+ const results = [];
493
+ const pending = jobs.map((job, index) => ({ job, index }));
494
+ const activeKeys = new Set();
495
+ let active = 0;
496
+ await new Promise((resolve) => {
497
+ const schedule = () => {
498
+ if (pending.length === 0 && active === 0)
499
+ resolve();
500
+ while (active < concurrency && pending.length > 0) {
501
+ const nextIndex = pending.findIndex((entry) => !activeKeys.has(entry.job.concurrencyKey));
502
+ if (nextIndex < 0)
503
+ return;
504
+ const [next] = pending.splice(nextIndex, 1);
505
+ const concurrencyKey = next.job.concurrencyKey;
506
+ active += 1;
507
+ activeKeys.add(concurrencyKey);
508
+ worker(next.job).then((result) => {
509
+ results[next.index] = result;
510
+ }).catch((error) => {
511
+ results[next.index] = { jobId: next.job.id, status: 'failed', error };
512
+ }).finally(() => {
513
+ active -= 1;
514
+ activeKeys.delete(concurrencyKey);
515
+ schedule();
516
+ });
517
+ }
518
+ };
519
+ schedule();
520
+ });
521
+ return results;
522
+ }
523
+ function readCompute(value) {
524
+ if (Array.isArray(value) && value.length > 0)
525
+ return value;
526
+ return [{
527
+ id: 'codex.deep',
528
+ kind: 'codex',
529
+ model: FRONTIER_SWARM_CODEX_DEFAULT_MODEL,
530
+ reasoningEffort: FRONTIER_SWARM_CODEX_DEFAULT_REASONING_EFFORT
531
+ }];
532
+ }
533
+ function formatCommand(command) {
534
+ return [command.command, ...command.args].join(' ') + (command.required ? '' : ' (optional)');
535
+ }
536
+ function bullets(values) {
537
+ return values.length ? values.map((value) => `- ${value}`) : ['- none'];
538
+ }
539
+ function arrayOfObjects(value) {
540
+ return Array.isArray(value) ? value.filter(isObject) : [];
541
+ }
542
+ function readStringArray(value) {
543
+ return Array.isArray(value) ? value.map((item) => String(item)).filter(Boolean) : [];
544
+ }
545
+ function isObject(value) {
546
+ return !!value && typeof value === 'object' && !Array.isArray(value);
547
+ }
548
+ async function pathExists(file) {
549
+ try {
550
+ await fs.access(file);
551
+ return true;
552
+ }
553
+ catch {
554
+ return false;
555
+ }
556
+ }
557
+ async function readOptionalText(file) {
558
+ try {
559
+ return await fs.readFile(file, 'utf8');
560
+ }
561
+ catch {
562
+ return undefined;
563
+ }
564
+ }
565
+ function isExcluded(cwd, source, excludes) {
566
+ const relative = path.relative(cwd, source).replace(/\\/g, '/');
567
+ return excludes.some((exclude) => relative === exclude.replace(/\/$/, '') || relative.startsWith(exclude.replace(/\/$/, '') + '/'));
568
+ }
569
+ async function runProcess(command, args, options) {
570
+ return new Promise((resolve, reject) => {
571
+ const child = spawn(command, [...args], { cwd: options.cwd, stdio: ['ignore', 'pipe', 'pipe'] });
572
+ let stdout = '';
573
+ let stderr = '';
574
+ child.stdout.on('data', (chunk) => { stdout += chunk.toString(); });
575
+ child.stderr.on('data', (chunk) => { stderr += chunk.toString(); });
576
+ child.on('close', (status) => {
577
+ const result = { status: status ?? 1, stdout, stderr };
578
+ if (!options.allowFailure && result.status !== 0)
579
+ reject(new Error(stderr || stdout || `${command} failed`));
580
+ else
581
+ resolve(result);
582
+ });
583
+ child.on('error', (error) => {
584
+ if (options.allowFailure)
585
+ resolve({ status: 1, stdout, stderr: String(error) });
586
+ else
587
+ reject(error);
588
+ });
589
+ });
590
+ }
591
+ function tail(text, maxLines = 24) {
592
+ return text.trim().split(/\r?\n/).filter(Boolean).slice(-maxLines);
593
+ }
594
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,4BAA4B,EAC5B,uCAAuC,EACvC,mBAAmB,EACnB,gBAAgB,EAEhB,eAAe,EACf,gBAAgB,EAChB,cAAc,EAEd,gBAAgB,EASjB,MAAM,iCAAiC,CAAC;AAEzC,MAAM,CAAC,MAAM,kCAAkC,GAAG,4BAA4B,CAAC;AAC/E,MAAM,CAAC,MAAM,6CAA6C,GAAG,uCAAuC,CAAC;AAErG,MAAM,0BAA0B,GAAG,CAAC,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC/H,MAAM,0BAA0B,GAAG;IACjC,MAAM;IACN,cAAc;IACd,MAAM;IACN,UAAU;IACV,qBAAqB;IACrB,YAAY;IACZ,WAAW;IACX,QAAQ;CACT,CAAC;AAgGF,MAAM,UAAU,oBAAoB,CAAC,KAAiC;IACpE,OAAO,eAAe,CACpB,6BAA6B,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC7C,0BAA0B,CAAC,KAAK,CAAC,KAAK,CAAC,EACvC,KAAK,CAAC,IAAI,IAAI,EAAE,CACjB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAc;IAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAgC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACvD,GAAG,IAAI;QACP,aAAa,EAAE,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7F,cAAc,EAAE,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ;YACrD,CAAC,CAAC,IAAI,CAAC,cAAc;YACrB,CAAC,CAAC,OAAO,IAAI,CAAC,oBAAoB,KAAK,QAAQ;gBAC7C,CAAC,CAAC,IAAI,CAAC,oBAAoB;gBAC3B,CAAC,CAAC,SAAS;KAChB,CAAC,CAAC,CAAC;IACJ,OAAO;QACL,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa;QAC3D,KAAK,EAAE,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QAChE,WAAW,EAAE,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QAClF,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;QACnC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM,CAAoD;QACvF,KAAK,EAAE,KAAuD;QAC9D,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9C,cAAc,EAAE,YAAY;YAC5B,kBAAkB,EAAE,CAAC;SACtB;QACD,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC;QAC3C,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;QACjC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;KAChE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACvD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAC9B,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAE,KAAiC,CAAC,KAAK,CAAC;YAC1E,CAAC,CAAE,KAA8B,CAAC,KAAK;YACvC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAE,KAAiC,CAAC,KAAK,CAAC;gBAC1E,CAAC,CAAE,KAA8B,CAAC,KAAK;gBACvC,CAAC,CAAC,EAAE,CAAC;IACX,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,KAAgC,CAAC;QAC9C,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;YACxC,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YAC9D,SAAS,EAAE,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;gBAC3C,CAAC,CAAC,IAAI,CAAC,SAAS;gBAChB,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;oBACpC,CAAC,CAAC,IAAI,CAAC,WAAW;oBAClB,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;wBAC9B,CAAC,CAAC,IAAI,CAAC,KAAK;wBACZ,CAAC,CAAC,SAAS;YACjB,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;YACrH,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACjE,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC3D,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YAC9D,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACpE,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACvE,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC5F,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClH,aAAa,EAAE,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxH,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;YAC5C,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAA8D,CAAC,CAAC,CAAC,SAAS;YACxI,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAsD,CAAC,CAAC,CAAC,SAAS;YACxH,eAAe,EAAE,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;YAC5F,YAAY,EAAE,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;YACnF,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;YAChC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;SAC3B,CAAC;IACJ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAuB,EAAE,OAAqC;IAChG,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1E,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/F,IAAI,GAAG,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC7E,GAAG,GAAG,gBAAgB,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAChH,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAClI,KAAK,MAAM,MAAM,IAAI,OAAO;QAAE,GAAG,GAAG,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACrE,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,uBAAuB,KAAK,CAAC,CAAC;IACxH,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxH,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAqB,EACrB,OAAqC,EACrC,MAAc;IAEd,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,wBAAwB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,8BAA8B,CAAC,aAAa,EAAE,OAAO,CAAC;QACzE,CAAC,CAAC,MAAM,sBAAsB,CAAC,SAAS,CAAC;QACzC,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3E,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAClF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM;QAC9B,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE;QACnC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,kBAAkB,CAAC,CAAC;YAC/C,GAAG;YACH,MAAM;YACN,IAAI;YACJ,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;YACjC,aAAa,EAAE,SAAS;YACxB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,OAAO;YACvC,KAAK;YACL,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO;SACpE,CAAC,CAAC;IACL,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,gBAAgB,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;IAC9I,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvG,MAAM,kBAAkB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IACxG,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;IACxG,OAAO;QACL,KAAK,EAAE,GAAG,CAAC,EAAE;QACb,MAAM;QACN,SAAS;QACT,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;QACtB,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,YAAY;QACZ,mBAAmB,EAAE,SAAS,CAAC,UAAU;QACzC,aAAa,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;QAClC,YAAY;QACZ,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,KAAK,EAAE,SAAS,CAAC,KAAK;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,GAAqB,EACrB,KAA6F;IAE7F,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,kCAAkC,CAAC;IACrF,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,IAAI,KAAK,CAAC,eAAe,IAAI,6CAA6C,CAAC;IACrH,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,iBAAiB,CAAC;IAC1E,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC;IACnE,MAAM,IAAI,GAAG;QACX,MAAM;QACN,MAAM;QACN,KAAK,CAAC,aAAa;QACnB,WAAW;QACX,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC;QACtD,WAAW;QACX,OAAO;QACP,oBAAoB;QACpB,QAAQ;QACR,QAAQ;QACR,uBAAuB;QACvB,KAAK,CAAC,KAAK,CAAC,eAAe;QAC3B,SAAS;QACT,KAAK;QACL,IAAI;QACJ,2BAA2B,MAAM,GAAG;KACrC,CAAC;IACF,IAAI,sBAAsB,CAAC,KAAK,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACtE,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;IACrD,IAAI,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC7C,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACtD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,GAAqB,EACrB,KAA8D;IAE9D,OAAO;QACL,4BAA4B;QAC5B,EAAE;QACF,QAAQ,GAAG,CAAC,EAAE,EAAE;QAChB,SAAS,GAAG,CAAC,MAAM,EAAE;QACrB,SAAS,GAAG,CAAC,IAAI,EAAE;QACnB,UAAU,GAAG,CAAC,KAAK,IAAI,MAAM,EAAE;QAC/B,YAAY,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE;QAC5B,cAAc,KAAK,CAAC,aAAa,EAAE;QACnC,EAAE;QACF,cAAc;QACd,EAAE;QACF,sBAAsB;QACtB,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QAC7B,EAAE;QACF,yBAAyB;QACzB,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAC9B,EAAE;QACF,uCAAuC;QACvC,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QACzB,EAAE;QACF,SAAS;QACT,EAAE;QACF,GAAG,CAAC,IAAI,CAAC,SAAS;QAClB,EAAE;QACF,cAAc;QACd,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;QAC/B,EAAE;QACF,cAAc;QACd,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;QAC/B,EAAE;QACF,aAAa;QACb,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QAC1B,EAAE;QACF,wBAAwB;QACxB,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC/C,EAAE;QACF,aAAa;QACb,EAAE;QACF,wBAAwB,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG;QAClD,uJAAuJ;QACvJ,EAAE;QACF,gBAAgB;QAChB,EAAE;QACF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;KAClC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAiC;IACxE,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC/C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACtG,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACvE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC;QACzG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC;QACzG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAmB,EAAE,MAA6B,EAAE,EAAE;YAC7E,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC;gBACN,QAAQ,EAAE,IAAI,IAAI,CAAC;gBACnB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7B,WAAW,EAAE,MAAM,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC;aACjE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;YACjC,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,MAAc,EAAE,GAAqB;IACjE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG;QACZ,MAAM;QACN,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC;QAC1C,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC;QACnD,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC;QACjD,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC;QACrD,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC;KAC3C,CAAC;IACF,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAqB,EAAE,OAAqC;IACtG,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,wBAAwB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACpD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IAC9C,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACjC,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC;QAClD,IAAI,OAAO,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACzG,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IACD,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC;QACpC,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ;QAAE,MAAM,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrG,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,gBAAgB;QAAE,MAAM,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IAClG,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS;QAAE,MAAM,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzF,IAAI,IAAI,CAAC,eAAe;QAAE,MAAM,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAqB,EAAE,OAAqC;IACnG,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC3D,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CAAC,CAAC;IACvG,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC;QAC/D,OAAO;YACL,IAAI;YACJ,IAAI;YACJ,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;YACZ,gBAAgB,EAAE,EAAE;YACpB,SAAS,EAAE,EAAE;YACb,eAAe,EAAE,KAAK;YACtB,OAAO,EAAE,KAAK;YACd,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,IAAI,KAAK;SACtD,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,oBAAoB,CAAC;QACpC,GAAG,0BAA0B;QAC7B,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC;QACtC,GAAG,eAAe,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC5C,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC;QACjC,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU;QACtB,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU;KACvB,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,oBAAoB,CAAC;QACpC,GAAG,0BAA0B;QAC7B,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC;QACtC,GAAG,eAAe,CAAC,OAAO,CAAC,gBAAgB,CAAC;KAC7C,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;QAC5C,GAAG,eAAe,CAAC,SAAS,CAAC,gBAAgB,CAAC;QAC9C,GAAG,eAAe,CAAC,OAAO,CAAC,wBAAwB,CAAC;KACrD,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,oBAAoB,CAAC;QACrC,GAAG,eAAe,CAAC,SAAS,CAAC,SAAS,CAAC;QACvC,GAAG,eAAe,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC7C,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC;KACtC,CAAC,CAAC;IACH,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QAChC,QAAQ;QACR,QAAQ;QACR,gBAAgB;QAChB,SAAS;QACT,eAAe,EAAE,SAAS,CAAC,eAAe,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC;QACvE,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,KAAK;QACnC,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,UAAU,CAAC;KACzF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,GAAW,EAAE,aAAqB,EAAE,OAAe,EAAE,QAA2B;IAC/G,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO;IACpC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE;QACpB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC;KAC/D,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,GAAW,EAAE,aAAqB,EAAE,OAAe;IAClF,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,MAAM,UAAU,CAAC,EAAE,CAAC;QAAE,OAAO;IAC5D,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,8BAA8B,CAAC,IAAgC,EAAE,OAAqC;IAC7G,OAAO,OAAO,CAAC,gBAAgB,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;AAClG,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAmC;IACjE,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7B,IAAI,SAAS,CAAC,gBAAgB,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC,gBAAgB,CAAC;IAChF,OAAO,SAAS,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC;AACpE,CAAC;AAED,SAAS,WAAW,CAAC,GAAqB;IACxC,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACtG,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC7D,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IACvG,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAyB;IACrD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,SAAS;QAClD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACrB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,GAAW;IACxC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/F,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,GAAW,EAAE,QAAgC;IAC9E,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACtD,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAChD,OAAO,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,IAAY;IAChD,MAAM,QAAQ,GAA0B,IAAI,GAAG,EAAE,CAAC;IAClD,MAAM,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAAY,EAAE,OAAe,EAAE,QAA+B;IAC9F,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAC3D,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,MAAM,EAAE,CAAC,CAAC;YACzC,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,MAAM,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACnD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,MAA6B,EAAE,KAA4B;IACrF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AACpC,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,QAAyC,EAAE,GAAW;IACnF,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACzF,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAC3C,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAClC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YAC5B,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ;YAAE,MAAM;IAClD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,IAAiC,EACjC,WAAmB,EACnB,MAAuE;IAEvE,MAAM,OAAO,GAAkC,EAAE,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,GAAG,EAAE;YACpB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YACpD,OAAO,MAAM,GAAG,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1F,IAAI,SAAS,GAAG,CAAC;oBAAE,OAAO;gBAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC5C,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;gBAC/C,MAAM,IAAI,CAAC,CAAC;gBACZ,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC/B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;gBAC/B,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACjB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;gBACxE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;oBACd,MAAM,IAAI,CAAC,CAAC;oBACZ,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;oBAClC,QAAQ,EAAE,CAAC;gBACb,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC;QACF,QAAQ,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAA8C,CAAC;IACpG,OAAO,CAAC;YACN,EAAE,EAAE,YAAY;YAChB,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,kCAAkC;YACzC,eAAe,EAAE,6CAA6C;SAC/D,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,OAA6B;IAClD,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,OAAO,CAAC,MAAyB;IACxC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAA8B,CAAC,CAAC,CAAC,EAAE,CAAC;AACzF,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvF,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAC1C,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,GAAW,EAAE,MAAc,EAAE,QAA2B;IAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACtI,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,OAAe,EAAE,IAAuB,EAAE,OAAgD;IAClH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACjG,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAqB,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YACvD,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,MAAM,IAAI,GAAG,OAAO,SAAS,CAAC,CAAC,CAAC;;gBACxG,OAAO,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;YACjC,IAAI,OAAO,CAAC,YAAY;gBAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;;gBAC3E,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,IAAI,CAAC,IAAY,EAAE,QAAQ,GAAG,EAAE;IACvC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;AACrE,CAAC"}