instar 1.3.491 → 1.3.492
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/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +3 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +53 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +11 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/CartographerSweepEngine.d.ts +55 -11
- package/dist/core/CartographerSweepEngine.d.ts.map +1 -1
- package/dist/core/CartographerSweepEngine.js +276 -95
- package/dist/core/CartographerSweepEngine.js.map +1 -1
- package/dist/core/CartographerTree.d.ts +77 -1
- package/dist/core/CartographerTree.d.ts.map +1 -1
- package/dist/core/CartographerTree.js +257 -5
- package/dist/core/CartographerTree.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +13 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/cartographerDetect.d.ts +133 -0
- package/dist/core/cartographerDetect.d.ts.map +1 -0
- package/dist/core/cartographerDetect.js +431 -0
- package/dist/core/cartographerDetect.js.map +1 -0
- package/dist/core/cartographerDetect.worker.d.ts +2 -0
- package/dist/core/cartographerDetect.worker.d.ts.map +1 -0
- package/dist/core/cartographerDetect.worker.js +37 -0
- package/dist/core/cartographerDetect.worker.js.map +1 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +103 -25
- package/dist/server/routes.js.map +1 -1
- package/package.json +2 -2
- package/scripts/lint-no-direct-destructive.js +4 -0
- package/scripts/lint-no-mainthread-cartographer-walk.js +101 -0
- package/src/data/builtin-manifest.json +63 -63
- package/upgrades/1.3.492.md +31 -0
- package/upgrades/side-effects/cartographer-sweep-eventloop-safety.md +110 -0
|
@@ -24,9 +24,32 @@
|
|
|
24
24
|
*/
|
|
25
25
|
import fs from 'node:fs';
|
|
26
26
|
import path from 'node:path';
|
|
27
|
+
import { Worker } from 'node:worker_threads';
|
|
27
28
|
import { SafeFsExecutor } from './SafeFsExecutor.js';
|
|
29
|
+
import { runDetect, applyIndexDeltas, writeSnapshot, readSnapshot, } from './cartographerDetect.js';
|
|
28
30
|
import { isSecretBearingPath, contentHasCredentialMaterial, extractCodeSymbols, validateSummaryDeterministic, neutralizeInstructionShapedContent, childDigestHash, delimitUntrusted, } from './cartographerSummary.js';
|
|
29
31
|
export const CARTOGRAPHER_SWEEP_COMPONENT = 'CartographerSweep';
|
|
32
|
+
/**
|
|
33
|
+
* Slice 3 (fix instar#1069): resolve the sweep's effective routing framework +
|
|
34
|
+
* its source, EXPLICIT-SET-ONLY. Precedence: an explicit
|
|
35
|
+
* overrides.CartographerSweep wins; else an explicitly-configured categories.job
|
|
36
|
+
* wins (migration safety — never silently override an operator's choice); else
|
|
37
|
+
* cartographer.freshnessSweep.framework becomes the effective override (the
|
|
38
|
+
* off-Claude knob the field was always meant to be); else the router default.
|
|
39
|
+
* `injectOverride` tells the caller to write overrides.CartographerSweep so BOTH
|
|
40
|
+
* the routing probe AND the author call resolve consistently. Pure → unit-tested.
|
|
41
|
+
*/
|
|
42
|
+
export function resolveSweepFrameworkRouting(cf, freshnessSweepFramework) {
|
|
43
|
+
const explicitOverride = cf?.overrides?.CartographerSweep;
|
|
44
|
+
if (explicitOverride)
|
|
45
|
+
return { framework: explicitOverride, source: 'overrides.CartographerSweep', injectOverride: false };
|
|
46
|
+
const explicitJob = cf?.categories?.job;
|
|
47
|
+
if (explicitJob)
|
|
48
|
+
return { framework: explicitJob, source: 'categories.job', injectOverride: false };
|
|
49
|
+
if (freshnessSweepFramework)
|
|
50
|
+
return { framework: freshnessSweepFramework, source: 'freshnessSweep.framework', injectOverride: true };
|
|
51
|
+
return { framework: undefined, source: 'default', injectOverride: false };
|
|
52
|
+
}
|
|
30
53
|
export class SweepAbortedError extends Error {
|
|
31
54
|
constructor() {
|
|
32
55
|
super('cartographer author aborted by higher-priority lane');
|
|
@@ -38,6 +61,8 @@ export class CartographerSweepEngine {
|
|
|
38
61
|
d;
|
|
39
62
|
now;
|
|
40
63
|
log;
|
|
64
|
+
/** Engine-level single-flight: one in-flight pass / one detect worker at a time. */
|
|
65
|
+
inflight = null;
|
|
41
66
|
constructor(deps) {
|
|
42
67
|
this.d = deps;
|
|
43
68
|
this.now = deps.now ?? (() => Date.parse(new Date().toISOString()));
|
|
@@ -70,13 +95,23 @@ export class CartographerSweepEngine {
|
|
|
70
95
|
return { ok: true, framework: r.framework };
|
|
71
96
|
}
|
|
72
97
|
async runPass() {
|
|
98
|
+
// Engine-level single-flight (Scalability Finding 7): every caller — the
|
|
99
|
+
// poller, or a future conformance audit reusing this engine — coalesces onto
|
|
100
|
+
// ONE in-flight pass / ONE detect worker, bounding peak host memory.
|
|
101
|
+
if (this.inflight)
|
|
102
|
+
return this.inflight;
|
|
103
|
+
this.inflight = this.runPassInner().finally(() => { this.inflight = null; });
|
|
104
|
+
return this.inflight;
|
|
105
|
+
}
|
|
106
|
+
async runPassInner() {
|
|
73
107
|
const base = {
|
|
74
108
|
ranAuthorPath: false, refused: false, candidateCount: 0, authored: 0,
|
|
75
109
|
fingerprintRefreshed: 0, failed: 0, quarantined: 0, deferred: 0, skipped: 0,
|
|
76
110
|
contentExcluded: 0, revalidated: 0, remaining: 0, centsSpent: 0,
|
|
77
111
|
abortedBackpressure: false, reason: 'ok',
|
|
78
112
|
};
|
|
79
|
-
// Lease gate — standby machines do
|
|
113
|
+
// Lease gate — standby machines do NOT spawn a detect worker (the snapshot is
|
|
114
|
+
// per-host; they serve /health + /stale as snapshot:'absent' honestly).
|
|
80
115
|
if (!this.d.holdsLease()) {
|
|
81
116
|
return { ...base, reason: 'not-lease-holder' };
|
|
82
117
|
}
|
|
@@ -87,38 +122,53 @@ export class CartographerSweepEngine {
|
|
|
87
122
|
return { ...base, refused: true, refusalReason: probe.reason, reason: 'routing-refused' };
|
|
88
123
|
}
|
|
89
124
|
const framework = probe.framework;
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
125
|
+
const cfg = this.d.config;
|
|
126
|
+
// DETECT — entirely off the main event loop (worker) or via the SAME bounded
|
|
127
|
+
// pure module synchronously (rollback). Never tree.staleNodes() on this thread.
|
|
128
|
+
const detect = await this.detect();
|
|
129
|
+
this.persistSnapshot(detect);
|
|
130
|
+
if (detect.refused) {
|
|
131
|
+
const reason = `detect-${detect.refusalReason?.replace(/^detect-/, '') ?? 'error'}`;
|
|
132
|
+
this.log(`[cartographer-sweep] detect refused: ${detect.refusalReason}`);
|
|
133
|
+
return {
|
|
134
|
+
...base, refused: true, refusalReason: detect.refusalReason, reason,
|
|
135
|
+
candidateCount: detect.staleTotal, detectStatus: this.detectStatus(detect),
|
|
136
|
+
detectDurationMs: detect.durationMs,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
base.candidateCount = detect.staleTotal;
|
|
140
|
+
base.detectStatus = 'ok';
|
|
141
|
+
base.detectDurationMs = detect.durationMs;
|
|
142
|
+
if (detect.candidates.length === 0) {
|
|
95
143
|
this.clearCursor();
|
|
96
144
|
// No stale work — but STILL re-validate a small sample of fresh nodes
|
|
97
145
|
// (fresh ≠ correct: a one-time bad author shouldn't be immortal).
|
|
98
146
|
const noWork = { ...base, ranAuthorPath: true, reason: 'no-candidates' };
|
|
99
147
|
const tier = this.d.pressure().tier;
|
|
100
|
-
if (tier !== 'critical' &&
|
|
101
|
-
|
|
148
|
+
if (tier !== 'critical' && cfg.revalidateSamplePerPass > 0) {
|
|
149
|
+
const deltas = [];
|
|
150
|
+
noWork.revalidated = await this.revalidateSample(detect.revalidationSample, framework, noWork, deltas);
|
|
151
|
+
await this.applyDeltas(deltas);
|
|
102
152
|
}
|
|
103
153
|
return noWork;
|
|
104
154
|
}
|
|
105
|
-
// Order deepest-first; defer dirs whose stale/never descendants aren't fresh yet.
|
|
106
|
-
const ordered = this.orderCandidates(candidates.map((c) => c.path));
|
|
107
155
|
// Honor a within-tick cursor (crash recovery) — bounded, fail-soft to full rescan.
|
|
108
|
-
const headSha =
|
|
156
|
+
const headSha = detect.counts.headSha;
|
|
109
157
|
const cursor = this.loadCursor(headSha);
|
|
110
158
|
const alreadyAuthored = new Set(cursor?.authoredPaths ?? []);
|
|
111
|
-
const cfg = this.d.config;
|
|
112
159
|
const result = { ...base, ranAuthorPath: true };
|
|
113
160
|
const authoredThisPass = [];
|
|
161
|
+
// fix instar#1069: all index updates this pass are batched into ONE off-thread
|
|
162
|
+
// write (closes the sixth starver — never a per-node main-thread 67MB write).
|
|
163
|
+
const deltas = [];
|
|
114
164
|
let curtail = false;
|
|
115
|
-
for (const nodePath of
|
|
165
|
+
for (const nodePath of detect.candidates) {
|
|
116
166
|
if (result.authored + result.fingerprintRefreshed >= cfg.maxNodesPerPass) {
|
|
117
|
-
result.remaining =
|
|
167
|
+
result.remaining = detect.candidates.length - (result.authored + result.fingerprintRefreshed + result.skipped + result.failed);
|
|
118
168
|
break;
|
|
119
169
|
}
|
|
120
170
|
if (result.centsSpent + cfg.estCentsPerAuthor > cfg.maxCentsPerPass) {
|
|
121
|
-
result.remaining =
|
|
171
|
+
result.remaining = detect.candidates.length - (result.authored + result.fingerprintRefreshed + result.skipped + result.failed);
|
|
122
172
|
break;
|
|
123
173
|
}
|
|
124
174
|
// Mid-tick CPU re-sample — critical breaks out immediately; moderate curtails.
|
|
@@ -149,7 +199,7 @@ export class CartographerSweepEngine {
|
|
|
149
199
|
continue;
|
|
150
200
|
}
|
|
151
201
|
try {
|
|
152
|
-
const outcome = await this.authorNode(node, framework);
|
|
202
|
+
const outcome = await this.authorNode(node, framework, deltas);
|
|
153
203
|
switch (outcome.kind) {
|
|
154
204
|
case 'authored':
|
|
155
205
|
result.authored += 1;
|
|
@@ -168,7 +218,7 @@ export class CartographerSweepEngine {
|
|
|
168
218
|
case 'failed':
|
|
169
219
|
result.failed += 1;
|
|
170
220
|
result.centsSpent += cfg.estCentsPerAuthor; // a rejected author still cost a call
|
|
171
|
-
if (this.recordFailure(node))
|
|
221
|
+
if (this.recordFailure(node, deltas))
|
|
172
222
|
result.quarantined += 1;
|
|
173
223
|
break;
|
|
174
224
|
case 'skipped':
|
|
@@ -185,22 +235,22 @@ export class CartographerSweepEngine {
|
|
|
185
235
|
}
|
|
186
236
|
// A genuine author error counts toward the node's quarantine.
|
|
187
237
|
result.failed += 1;
|
|
188
|
-
if (this.recordFailure(node))
|
|
238
|
+
if (this.recordFailure(node, deltas))
|
|
189
239
|
result.quarantined += 1;
|
|
190
240
|
}
|
|
191
241
|
}
|
|
192
|
-
//
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
this.d.tree.patchNodeMeta(dp, { staleSincePass: (n?.staleSincePass ?? 0) + 1 });
|
|
196
|
-
}
|
|
197
|
-
result.deferred = ordered.deferred.length;
|
|
242
|
+
// Defer increments were applied + persisted inside detect (write (a)); the
|
|
243
|
+
// main-thread defer loop is GONE (fix instar#1069 — it walked an unbounded set).
|
|
244
|
+
result.deferred = detect.deferredApplied;
|
|
198
245
|
// Re-validate a small sample of fresh nodes — skipped when curtailing/aborting.
|
|
199
246
|
if (!curtail && !result.abortedBackpressure &&
|
|
200
247
|
result.centsSpent + cfg.estCentsPerAuthor <= cfg.maxCentsPerPass &&
|
|
201
248
|
result.authored + result.fingerprintRefreshed < cfg.maxNodesPerPass) {
|
|
202
|
-
result.revalidated = await this.revalidateSample(framework,
|
|
249
|
+
result.revalidated = await this.revalidateSample(detect.revalidationSample, framework, result, deltas);
|
|
203
250
|
}
|
|
251
|
+
// Author-phase index write (b): ONE off-thread re-read+apply+write of the
|
|
252
|
+
// ≤maxNodesPerPass summary deltas. Never a per-node main-thread index write.
|
|
253
|
+
await this.applyDeltas(deltas);
|
|
204
254
|
if (result.remaining > 0) {
|
|
205
255
|
this.log(`[cartographer-sweep] pass bounded: ${result.remaining} candidate(s) left for next tick`);
|
|
206
256
|
}
|
|
@@ -209,57 +259,186 @@ export class CartographerSweepEngine {
|
|
|
209
259
|
this.clearCursor();
|
|
210
260
|
return result;
|
|
211
261
|
}
|
|
212
|
-
// ──
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
262
|
+
// ── off-event-loop detect + batched index write (fix instar#1069) ────────────
|
|
263
|
+
detectInput() {
|
|
264
|
+
const cfg = this.d.config;
|
|
265
|
+
const maxNodesPerPass = cfg.maxNodesPerPass;
|
|
266
|
+
return {
|
|
267
|
+
indexPath: this.d.tree.indexFilePath(),
|
|
268
|
+
projectDir: this.d.tree.projectDirPath(),
|
|
269
|
+
maxIndexBytes: cfg.maxIndexBytes ?? 200 * 1024 * 1024,
|
|
270
|
+
maxCandidates: maxNodesPerPass * (cfg.detectCandidateHeadroom ?? 4),
|
|
271
|
+
maxNodesPerPass,
|
|
272
|
+
maxDeferredPasses: cfg.maxDeferredPasses,
|
|
273
|
+
revalidateSamplePerPass: cfg.revalidateSamplePerPass,
|
|
274
|
+
graceMs: cfg.detectGraceMs ?? 1_200_000,
|
|
275
|
+
gitMaxBuffer: cfg.gitMaxBuffer ?? 64 * 1024 * 1024,
|
|
276
|
+
snapshotSampleMax: cfg.snapshotSampleMax ?? 500,
|
|
277
|
+
nowMs: this.now(),
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
/** Run detect off-thread (worker) or synchronously (rollback) — SAME bounded module. */
|
|
281
|
+
async detect() {
|
|
282
|
+
const input = this.detectInput();
|
|
283
|
+
if (this.d.config.detectInWorker === false) {
|
|
284
|
+
// Operator escape hatch: bounded pure module on the main thread (NEVER staleNodes()).
|
|
285
|
+
return runDetect(input);
|
|
286
|
+
}
|
|
287
|
+
const out = await this.runWorker('detect', input);
|
|
288
|
+
if (out.startFailed) {
|
|
289
|
+
return this.refusedDetect('detect-worker-start-failure', out.durationMs);
|
|
290
|
+
}
|
|
291
|
+
if (out.timedOut) {
|
|
292
|
+
return this.refusedDetect('detect-timeout', out.durationMs);
|
|
293
|
+
}
|
|
294
|
+
if (!out.ok || !out.result) {
|
|
295
|
+
// A worker crash/exit is treated as a refusal that feeds the breaker.
|
|
296
|
+
return this.refusedDetect('detect-worker-start-failure', out.durationMs);
|
|
297
|
+
}
|
|
298
|
+
return out.result;
|
|
299
|
+
}
|
|
300
|
+
refusedDetect(reason, durationMs) {
|
|
301
|
+
return {
|
|
302
|
+
refused: true, refusalReason: reason, candidates: [], deferredApplied: 0,
|
|
303
|
+
counts: { nodeCount: 0, authoredCount: 0, neverAuthored: 0, stale: 0, pathGone: 0, generatedAt: null, headSha: null },
|
|
304
|
+
freshness: {
|
|
305
|
+
nodeCount: 0, authorableCount: 0, freshCount: 0, staleCount: 0, neverAuthoredCount: 0,
|
|
306
|
+
neverAuthoredWithinGrace: 0, neverAuthoredPastGrace: 0, authorFailedCount: 0, freshRatio: 1, generatedAt: null,
|
|
307
|
+
},
|
|
308
|
+
revalidationSample: [], staleSample: [], staleTotal: 0, durationMs,
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
/** Apply the pass's batched summary deltas off-thread (worker) or synchronously (rollback). */
|
|
312
|
+
async applyDeltas(deltas) {
|
|
313
|
+
if (deltas.length === 0)
|
|
314
|
+
return;
|
|
315
|
+
const input = {
|
|
316
|
+
indexPath: this.d.tree.indexFilePath(),
|
|
317
|
+
maxIndexBytes: this.d.config.maxIndexBytes ?? 200 * 1024 * 1024,
|
|
318
|
+
deltas,
|
|
319
|
+
};
|
|
320
|
+
try {
|
|
321
|
+
if (this.d.config.detectInWorker === false) {
|
|
322
|
+
applyIndexDeltas(input);
|
|
323
|
+
return;
|
|
237
324
|
}
|
|
238
|
-
|
|
239
|
-
|
|
325
|
+
await this.runWorker('apply-deltas', input);
|
|
326
|
+
}
|
|
327
|
+
catch {
|
|
328
|
+
// @silent-fallback-ok — a failed index-delta write only means the node files
|
|
329
|
+
// (already written) are ahead of the index for one tick; the next detect
|
|
330
|
+
// re-derives staleness from git and re-converges. Never a freeze, never a loss.
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
detectStatus(r) {
|
|
334
|
+
if (!r.refused)
|
|
335
|
+
return 'ok';
|
|
336
|
+
switch (r.refusalReason) {
|
|
337
|
+
case 'detect-timeout': return 'timeout';
|
|
338
|
+
case 'detect-worker-start-failure': return 'worker-start-failed';
|
|
339
|
+
case 'detect-index-too-large': return 'index-too-large';
|
|
340
|
+
case 'detect-index-unreadable': return 'index-unreadable';
|
|
341
|
+
case 'detect-git-error': return 'git-error';
|
|
342
|
+
default: return 'ok';
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
/** Persist (or update) the per-host snapshot every /cartographer/* read route serves from. */
|
|
346
|
+
persistSnapshot(r) {
|
|
347
|
+
try {
|
|
348
|
+
const nowIso = new Date(this.now()).toISOString();
|
|
349
|
+
const status = this.detectStatus(r);
|
|
350
|
+
if (r.refused) {
|
|
351
|
+
// Keep the last-good sample/counts; only flip the detect-health fields so
|
|
352
|
+
// /stale serves snapshot:'detect-failing' with its prior sample (Slice 2).
|
|
353
|
+
const prior = readSnapshot(this.d.tree.snapshotPath());
|
|
354
|
+
const snap = prior
|
|
355
|
+
? { ...prior, lastDetectStatus: status, lastDetectAt: nowIso, durationMs: r.durationMs }
|
|
356
|
+
: {
|
|
357
|
+
generatedAt: nowIso, headSha: null, counts: r.counts, freshness: r.freshness,
|
|
358
|
+
staleSample: [], staleTotal: 0, staleSampleTruncated: false,
|
|
359
|
+
lastDetectStatus: status, lastDetectAt: nowIso, durationMs: r.durationMs,
|
|
360
|
+
};
|
|
361
|
+
writeSnapshot(this.d.tree.snapshotPath(), snap);
|
|
362
|
+
return;
|
|
363
|
+
}
|
|
364
|
+
const snap = {
|
|
365
|
+
generatedAt: nowIso,
|
|
366
|
+
headSha: r.counts.headSha,
|
|
367
|
+
counts: r.counts,
|
|
368
|
+
freshness: r.freshness,
|
|
369
|
+
staleSample: r.staleSample,
|
|
370
|
+
staleTotal: r.staleTotal,
|
|
371
|
+
staleSampleTruncated: r.staleSample.length < r.staleTotal,
|
|
372
|
+
lastDetectStatus: 'ok',
|
|
373
|
+
lastDetectAt: nowIso,
|
|
374
|
+
durationMs: r.durationMs,
|
|
375
|
+
};
|
|
376
|
+
writeSnapshot(this.d.tree.snapshotPath(), snap);
|
|
377
|
+
}
|
|
378
|
+
catch {
|
|
379
|
+
// @silent-fallback-ok — the snapshot is an observability surface; a write
|
|
380
|
+
// failure only costs route freshness for one tick, never correctness/safety.
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
/** Minimal env allowlist for a spawned worker — NEVER the parent process.env. */
|
|
384
|
+
workerEnv() {
|
|
385
|
+
const env = {};
|
|
386
|
+
for (const k of ['PATH', 'HOME', 'LANG', 'LC_ALL', 'LC_CTYPE', 'TMPDIR', 'SystemRoot', 'TEMP', 'TMP']) {
|
|
387
|
+
if (process.env[k])
|
|
388
|
+
env[k] = process.env[k];
|
|
240
389
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
.filter((p) => {
|
|
245
|
-
const n = this.d.tree.getNode(p);
|
|
246
|
-
return n?.kind === 'dir' && (n.staleSincePass ?? 0) >= this.d.config.maxDeferredPasses;
|
|
247
|
-
})
|
|
248
|
-
.slice(0, frontCap);
|
|
249
|
-
if (starved.length > 0) {
|
|
250
|
-
const starvedSet = new Set(starved);
|
|
251
|
-
const rest = toAuthor.filter((p) => !starvedSet.has(p));
|
|
252
|
-
return { toAuthor: [...starved, ...rest], deferred };
|
|
390
|
+
for (const k of Object.keys(process.env)) {
|
|
391
|
+
if (k.startsWith('GIT_'))
|
|
392
|
+
env[k] = process.env[k];
|
|
253
393
|
}
|
|
254
|
-
return
|
|
394
|
+
return env;
|
|
395
|
+
}
|
|
396
|
+
/** Spawn the detect/write worker, await its single message, bound by detectTimeoutMs. */
|
|
397
|
+
runWorker(mode, input) {
|
|
398
|
+
const startedAt = this.now();
|
|
399
|
+
const timeoutMs = this.d.config.detectTimeoutMs ?? 120_000;
|
|
400
|
+
const heapMb = this.d.config.detectWorkerHeapMb ?? 1536;
|
|
401
|
+
return new Promise((resolve) => {
|
|
402
|
+
let worker;
|
|
403
|
+
try {
|
|
404
|
+
const workerUrl = new URL('./cartographerDetect.worker.js', import.meta.url);
|
|
405
|
+
worker = new Worker(workerUrl, {
|
|
406
|
+
workerData: { mode, input },
|
|
407
|
+
resourceLimits: { maxOldGenerationSizeMb: heapMb },
|
|
408
|
+
env: this.workerEnv(),
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
catch (err) {
|
|
412
|
+
resolve({ ok: false, startFailed: true, error: err instanceof Error ? err.message : String(err), durationMs: this.now() - startedAt });
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
415
|
+
let settled = false;
|
|
416
|
+
const done = (r) => {
|
|
417
|
+
if (settled)
|
|
418
|
+
return;
|
|
419
|
+
settled = true;
|
|
420
|
+
clearTimeout(timer);
|
|
421
|
+
worker.terminate().catch(() => { });
|
|
422
|
+
resolve({ ...r, durationMs: this.now() - startedAt });
|
|
423
|
+
};
|
|
424
|
+
const timer = setTimeout(() => {
|
|
425
|
+
// terminate() (awaited inside done→terminate) reaps the worker + its child git.
|
|
426
|
+
done({ ok: false, timedOut: true });
|
|
427
|
+
}, timeoutMs);
|
|
428
|
+
worker.once('message', (msg) => done(msg));
|
|
429
|
+
worker.once('error', (err) => done({ ok: false, error: err.message }));
|
|
430
|
+
worker.once('exit', (code) => { if (!settled)
|
|
431
|
+
done({ ok: false, error: `worker exited (${code})` }); });
|
|
432
|
+
});
|
|
255
433
|
}
|
|
256
434
|
// ── authoring one node ──────────────────────────────────────────────────────
|
|
257
|
-
async authorNode(node, framework) {
|
|
435
|
+
async authorNode(node, framework, deltas) {
|
|
258
436
|
const cfg = this.d.config;
|
|
259
437
|
if (node.kind === 'file') {
|
|
260
438
|
// Secret exclusion — path glob first (cheapest), never read-and-send.
|
|
261
439
|
if (isSecretBearingPath(node.path)) {
|
|
262
|
-
|
|
440
|
+
// lastAuthoredBy is node-file-only (not an index field) → no index delta.
|
|
441
|
+
this.d.tree.patchNodeMeta(node.path, { lastAuthoredBy: 'content-excluded' }, { deferIndexWrite: true });
|
|
263
442
|
return { kind: 'content-excluded' };
|
|
264
443
|
}
|
|
265
444
|
const read = this.d.tree.committedContent(node.path, cfg.maxLeafBytes);
|
|
@@ -267,13 +446,13 @@ export class CartographerSweepEngine {
|
|
|
267
446
|
return { kind: 'skipped' }; // path gone from HEAD between detect and now
|
|
268
447
|
// Content tripwire — a credential-bearing file is excluded, not summarized.
|
|
269
448
|
if (contentHasCredentialMaterial(read.content)) {
|
|
270
|
-
this.d.tree.patchNodeMeta(node.path, { lastAuthoredBy: 'content-excluded' });
|
|
449
|
+
this.d.tree.patchNodeMeta(node.path, { lastAuthoredBy: 'content-excluded' }, { deferIndexWrite: true });
|
|
271
450
|
return { kind: 'content-excluded' };
|
|
272
451
|
}
|
|
273
452
|
const coveredSymbols = extractCodeSymbols(read.content);
|
|
274
453
|
const prompt = this.buildLeafPrompt(node.path, read.content, read.truncated);
|
|
275
454
|
const summary = await this.callAuthor(prompt);
|
|
276
|
-
return this.persistAuthored(node, summary, coveredSymbols, framework, {
|
|
455
|
+
return this.persistAuthored(node, summary, coveredSymbols, framework, deltas, {
|
|
277
456
|
modelTier: 'light', truncated: read.truncated,
|
|
278
457
|
});
|
|
279
458
|
}
|
|
@@ -284,10 +463,12 @@ export class CartographerSweepEngine {
|
|
|
284
463
|
// Dir re-author amplification guard: tree-oid flipped but child digest unchanged
|
|
285
464
|
// ⇒ fingerprint-only refresh, NO LLM call.
|
|
286
465
|
if (node.childDigestHash != null && node.childDigestHash === digest && node.summary.length > 0) {
|
|
287
|
-
this.d.tree.patchNodeMeta(node.path, {
|
|
466
|
+
const refreshed = this.d.tree.patchNodeMeta(node.path, {
|
|
288
467
|
codeHash: this.d.tree.currentNodeOid(node.path),
|
|
289
468
|
codeRev: this.d.tree.currentHeadShort(),
|
|
290
|
-
});
|
|
469
|
+
}, { deferIndexWrite: true });
|
|
470
|
+
// A fingerprint refresh changes codeHash → batch that index delta.
|
|
471
|
+
deltas.push({ path: node.path, codeHash: refreshed?.codeHash ?? node.codeHash });
|
|
291
472
|
return { kind: 'fingerprint' };
|
|
292
473
|
}
|
|
293
474
|
if (childSummaries.length === 0)
|
|
@@ -296,11 +477,11 @@ export class CartographerSweepEngine {
|
|
|
296
477
|
const coveredSymbols = extractCodeSymbols(coveredText);
|
|
297
478
|
const prompt = this.buildDirPrompt(node.path, childSummaries, children.map((c) => basename(c.path)));
|
|
298
479
|
const summary = await this.callAuthor(prompt);
|
|
299
|
-
return this.persistAuthored(node, summary, coveredSymbols, framework, {
|
|
480
|
+
return this.persistAuthored(node, summary, coveredSymbols, framework, deltas, {
|
|
300
481
|
modelTier: 'light', childDigestHash: digest,
|
|
301
482
|
});
|
|
302
483
|
}
|
|
303
|
-
persistAuthored(node, rawSummary, coveredSymbols, framework, opts) {
|
|
484
|
+
persistAuthored(node, rawSummary, coveredSymbols, framework, deltas, opts) {
|
|
304
485
|
// Neutralize instruction-shaped content BEFORE validation/persist (output-side injection guard).
|
|
305
486
|
const { text: neutralized, neutralized: wasNeutralized } = neutralizeInstructionShapedContent(rawSummary);
|
|
306
487
|
const validation = validateSummaryDeterministic({
|
|
@@ -314,13 +495,22 @@ export class CartographerSweepEngine {
|
|
|
314
495
|
return { kind: 'failed' };
|
|
315
496
|
}
|
|
316
497
|
const confidence = opts.truncated || wasNeutralized ? 'low' : 'medium';
|
|
317
|
-
this.d.tree.setSummary(node.path, neutralized.trim(), {
|
|
498
|
+
const written = this.d.tree.setSummary(node.path, neutralized.trim(), {
|
|
318
499
|
provenance: { source: 'sweep', framework, modelTier: opts.modelTier },
|
|
319
500
|
meta: {
|
|
320
501
|
lastAuthoredBy: `sweep:${framework}`,
|
|
321
502
|
confidence,
|
|
322
503
|
childDigestHash: opts.childDigestHash,
|
|
323
504
|
},
|
|
505
|
+
// fix instar#1069: write the small node file now; batch the 67MB index delta.
|
|
506
|
+
deferIndexWrite: true,
|
|
507
|
+
});
|
|
508
|
+
deltas.push({
|
|
509
|
+
path: node.path,
|
|
510
|
+
summaryUpdatedAt: written.summaryUpdatedAt,
|
|
511
|
+
codeHash: written.codeHash,
|
|
512
|
+
staleSincePass: 0,
|
|
513
|
+
authorFailed: false,
|
|
324
514
|
});
|
|
325
515
|
return { kind: 'authored' };
|
|
326
516
|
}
|
|
@@ -331,27 +521,20 @@ export class CartographerSweepEngine {
|
|
|
331
521
|
}), this.d.config.estCentsPerAuthor);
|
|
332
522
|
}
|
|
333
523
|
// ── re-validation sample (fresh ≠ correct) ──────────────────────────────────
|
|
334
|
-
async revalidateSample(framework,
|
|
335
|
-
|
|
524
|
+
async revalidateSample(samplePaths, framework, result, deltas) {
|
|
525
|
+
// fix instar#1069: the oldest-fresh nominees come from the off-thread detect
|
|
526
|
+
// payload — NO main-thread loadIndex() here (that was the second starver).
|
|
527
|
+
if (samplePaths.length === 0)
|
|
336
528
|
return 0;
|
|
337
|
-
const index = this.d.tree.loadIndex();
|
|
338
|
-
if (!index)
|
|
339
|
-
return 0;
|
|
340
|
-
// Oldest summaryUpdatedAt first, among fresh (authored + not stale) nodes.
|
|
341
|
-
const fresh = Object.entries(index.nodes)
|
|
342
|
-
.filter(([, e]) => e.codeHash != null && e.summaryUpdatedAt != null)
|
|
343
|
-
.sort((a, b) => Date.parse(a[1].summaryUpdatedAt) - Date.parse(b[1].summaryUpdatedAt))
|
|
344
|
-
.slice(0, sampleN)
|
|
345
|
-
.map(([p]) => p);
|
|
346
529
|
let n = 0;
|
|
347
|
-
for (const p of
|
|
530
|
+
for (const p of samplePaths) {
|
|
348
531
|
if (result.centsSpent + this.d.config.estCentsPerAuthor > this.d.config.maxCentsPerPass)
|
|
349
532
|
break;
|
|
350
533
|
const node = this.d.tree.getNode(p);
|
|
351
534
|
if (!node)
|
|
352
535
|
continue;
|
|
353
536
|
try {
|
|
354
|
-
const outcome = await this.authorNode(node, framework);
|
|
537
|
+
const outcome = await this.authorNode(node, framework, deltas);
|
|
355
538
|
if (outcome.kind === 'authored' || outcome.kind === 'fingerprint') {
|
|
356
539
|
n += 1;
|
|
357
540
|
result.centsSpent += this.d.config.estCentsPerAuthor;
|
|
@@ -367,13 +550,16 @@ export class CartographerSweepEngine {
|
|
|
367
550
|
}
|
|
368
551
|
// ── quarantine ──────────────────────────────────────────────────────────────
|
|
369
552
|
/** Record one author failure; returns true if the node just crossed into quarantine. */
|
|
370
|
-
recordFailure(node) {
|
|
553
|
+
recordFailure(node, deltas) {
|
|
371
554
|
const failures = (node.consecutiveAuthorFailures ?? 0) + 1;
|
|
372
555
|
const quarantined = failures >= this.d.config.nodeFailQuarantineThreshold;
|
|
556
|
+
const authorFailed = quarantined ? true : node.authorFailed;
|
|
373
557
|
this.d.tree.patchNodeMeta(node.path, {
|
|
374
558
|
consecutiveAuthorFailures: failures,
|
|
375
|
-
authorFailed
|
|
376
|
-
});
|
|
559
|
+
authorFailed,
|
|
560
|
+
}, { deferIndexWrite: true });
|
|
561
|
+
// authorFailed is mirrored on the index entry → batch the delta.
|
|
562
|
+
deltas.push({ path: node.path, authorFailed: authorFailed === true });
|
|
377
563
|
return quarantined && !node.authorFailed;
|
|
378
564
|
}
|
|
379
565
|
// ── prompts ─────────────────────────────────────────────────────────────────
|
|
@@ -442,11 +628,6 @@ export class CartographerSweepEngine {
|
|
|
442
628
|
(err instanceof Error && err.name === 'LlmAbortedError');
|
|
443
629
|
}
|
|
444
630
|
}
|
|
445
|
-
function depth(p) {
|
|
446
|
-
if (p === '')
|
|
447
|
-
return 0;
|
|
448
|
-
return p.split('/').length;
|
|
449
|
-
}
|
|
450
631
|
function basename(p) {
|
|
451
632
|
const i = p.lastIndexOf('/');
|
|
452
633
|
return i >= 0 ? p.slice(i + 1) : p;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CartographerSweepEngine.js","sourceRoot":"","sources":["../../src/core/CartographerSweepEngine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CartographerSweepEngine.js","sourceRoot":"","sources":["../../src/core/CartographerSweepEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,YAAY,GAOb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,mBAAmB,EACnB,4BAA4B,EAC5B,kBAAkB,EAClB,4BAA4B,EAC5B,kCAAkC,EAClC,eAAe,EACf,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAElC,MAAM,CAAC,MAAM,4BAA4B,GAAG,mBAAmB,CAAC;AAEhE;;;;;;;;;GASG;AACH,MAAM,UAAU,4BAA4B,CAC1C,EAA2F,EAC3F,uBAA2C;IAM3C,MAAM,gBAAgB,GAAG,EAAE,EAAE,SAAS,EAAE,iBAAiB,CAAC;IAC1D,IAAI,gBAAgB;QAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,6BAA6B,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAC3H,MAAM,WAAW,GAAG,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC;IACxC,IAAI,WAAW;QAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IACpG,IAAI,uBAAuB;QAAE,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,EAAE,0BAA0B,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IACrI,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;AAC5E,CAAC;AA4CD,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C;QACE,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAwDD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gCAAgC,CAAC,CAAC;AAExE,MAAM,OAAO,uBAAuB;IACjB,CAAC,CAAkB;IACnB,GAAG,CAAe;IAClB,GAAG,CAAwB;IAC5C,oFAAoF;IAC5E,QAAQ,GAAoC,IAAI,CAAC;IAEzD,YAAY,IAAqB;QAC/B,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QACd,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACpC,CAAC;IAED;;;;;;OAMG;IACH,YAAY;QACV,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1D,MAAM,iBAAiB,GAAG,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACzE,IAAI,iBAAiB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;YAC5D,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,MAAM,EAAE,6CAA6C,CAAC,CAAC,SAAS,2DAA2D;aAC5H,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,MAAM,EAAE,cAAc,CAAC,CAAC,SAAS,uDAAuD;aACzF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,OAAO;QACX,yEAAyE;QACzE,6EAA6E;QAC7E,qEAAqE;QACrE,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,MAAM,IAAI,GAAoB;YAC5B,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;YACpE,oBAAoB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;YAC3E,eAAe,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;YAC/D,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI;SACzC,CAAC;QAEF,8EAA8E;QAC9E,wEAAwE;QACxE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;YACzB,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;QACjD,CAAC;QAED,0EAA0E;QAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,4CAA4C,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACrE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;QAC5F,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QAE1B,6EAA6E;QAC7E,gFAAgF;QAChF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACnC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAE7B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,UAAU,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC;YACpF,IAAI,CAAC,GAAG,CAAC,wCAAwC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;YACzE,OAAO;gBACL,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM;gBACnE,cAAc,EAAE,MAAM,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;gBAC1E,gBAAgB,EAAE,MAAM,CAAC,UAAU;aACpC,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC;QAE1C,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,sEAAsE;YACtE,kEAAkE;YAClE,MAAM,MAAM,GAAoB,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;YAC1F,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;YACpC,IAAI,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,uBAAuB,GAAG,CAAC,EAAE,CAAC;gBAC3D,MAAM,MAAM,GAAiB,EAAE,CAAC;gBAChC,MAAM,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,kBAAkB,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBACvG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,mFAAmF;QACnF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAChD,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,+EAA+E;QAC/E,8EAA8E;QAC9E,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACzC,IAAI,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,oBAAoB,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;gBACzE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,oBAAoB,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC/H,MAAM;YACR,CAAC;YACD,IAAI,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;gBACpE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,oBAAoB,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC/H,MAAM;YACR,CAAC;YAED,+EAA+E;YAC/E,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;YACpC,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;gBAAC,MAAM,CAAC,MAAM,GAAG,oBAAoB,CAAC;gBAAC,MAAM;YAAC,CAAC;YACzE,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;gBACxB,OAAO,GAAG,IAAI,CAAC;gBACf,IAAI,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,oBAAoB,IAAI,GAAG,CAAC,qBAAqB,EAAE,CAAC;oBAC/E,MAAM,CAAC,MAAM,GAAG,sBAAsB,CAAC;oBACvC,MAAM;gBACR,CAAC;YACH,CAAC;YAED,IAAI,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YAErE,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;gBAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YAE7C,4EAA4E;YAC5E,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpF,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;gBACpB,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC/D,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;oBACrB,KAAK,UAAU;wBACb,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;wBACrB,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC,iBAAiB,CAAC;wBAC3C,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAChC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;wBAC3C,MAAM;oBACR,KAAK,aAAa;wBAChB,MAAM,CAAC,oBAAoB,IAAI,CAAC,CAAC;wBACjC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAChC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;wBAC3C,MAAM;oBACR,KAAK,kBAAkB;wBACrB,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC;wBAC5B,MAAM;oBACR,KAAK,QAAQ;wBACX,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;wBACnB,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC,sCAAsC;wBAClF,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC;4BAAE,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;wBAC9D,MAAM;oBACR,KAAK,SAAS;wBACZ,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;wBACpB,MAAM;gBACV,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,2FAA2F;oBAC3F,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC;oBAClC,MAAM,CAAC,MAAM,GAAG,sBAAsB,CAAC;oBACvC,MAAM;gBACR,CAAC;gBACD,8DAA8D;gBAC9D,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;gBACnB,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC;oBAAE,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,iFAAiF;QACjF,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC;QAEzC,gFAAgF;QAChF,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB;YACvC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,iBAAiB,IAAI,GAAG,CAAC,eAAe;YAChE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,oBAAoB,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;YACxE,MAAM,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,kBAAkB,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACzG,CAAC;QAED,0EAA0E;QAC1E,6EAA6E;QAC7E,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE/B,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,sCAAsC,MAAM,CAAC,SAAS,kCAAkC,CAAC,CAAC;QACrG,CAAC;QACD,kEAAkE;QAClE,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,eAAe;YAAE,IAAI,CAAC,WAAW,EAAE,CAAC;QACpF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,gFAAgF;IAExE,WAAW;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1B,MAAM,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC;QAC5C,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE;YACtC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE;YACxC,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI;YACrD,aAAa,EAAE,eAAe,GAAG,CAAC,GAAG,CAAC,uBAAuB,IAAI,CAAC,CAAC;YACnE,eAAe;YACf,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,uBAAuB,EAAE,GAAG,CAAC,uBAAuB;YACpD,OAAO,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;YACvC,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI;YAClD,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,IAAI,GAAG;YAC/C,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE;SAClB,CAAC;IACJ,CAAC;IAED,wFAAwF;IAChF,KAAK,CAAC,MAAM;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC;YAC3C,sFAAsF;YACtF,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAe,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChE,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,aAAa,CAAC,6BAA6B,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAC3B,sEAAsE;YACtE,OAAO,IAAI,CAAC,aAAa,CAAC,6BAA6B,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,GAAG,CAAC,MAAM,CAAC;IACpB,CAAC;IAEO,aAAa,CAAC,MAAkD,EAAE,UAAkB;QAC1F,OAAO;YACL,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC;YACxE,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;YACrH,SAAS,EAAE;gBACT,SAAS,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC;gBACrF,wBAAwB,EAAE,CAAC,EAAE,sBAAsB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI;aAC/G;YACD,kBAAkB,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU;SACnE,CAAC;IACJ,CAAC;IAED,+FAA+F;IACvF,KAAK,CAAC,WAAW,CAAC,MAAoB;QAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAChC,MAAM,KAAK,GAAqB;YAC9B,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE;YACtC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI;YAC/D,MAAM;SACP,CAAC;QACF,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC;gBAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YAChF,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,6EAA6E;YAC7E,yEAAyE;YACzE,gFAAgF;QAClF,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,CAAe;QAClC,IAAI,CAAC,CAAC,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC5B,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC;YACxB,KAAK,gBAAgB,CAAC,CAAC,OAAO,SAAS,CAAC;YACxC,KAAK,6BAA6B,CAAC,CAAC,OAAO,qBAAqB,CAAC;YACjE,KAAK,wBAAwB,CAAC,CAAC,OAAO,iBAAiB,CAAC;YACxD,KAAK,yBAAyB,CAAC,CAAC,OAAO,kBAAkB,CAAC;YAC1D,KAAK,kBAAkB,CAAC,CAAC,OAAO,WAAW,CAAC;YAC5C,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IAED,8FAA8F;IACtF,eAAe,CAAC,CAAe;QACrC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBACd,0EAA0E;gBAC1E,2EAA2E;gBAC3E,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;gBACvD,MAAM,IAAI,GAAyB,KAAK;oBACtC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE;oBACxF,CAAC,CAAC;wBACE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS;wBAC5E,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,oBAAoB,EAAE,KAAK;wBAC3D,gBAAgB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU;qBACzE,CAAC;gBACN,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;gBAChD,OAAO;YACT,CAAC;YACD,MAAM,IAAI,GAAyB;gBACjC,WAAW,EAAE,MAAM;gBACnB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;gBACzB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,oBAAoB,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,UAAU;gBACzD,gBAAgB,EAAE,IAAI;gBACtB,YAAY,EAAE,MAAM;gBACpB,UAAU,EAAE,CAAC,CAAC,UAAU;aACzB,CAAC;YACF,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,0EAA0E;YAC1E,6EAA6E;QAC/E,CAAC;IACH,CAAC;IAED,iFAAiF;IACzE,SAAS;QACf,MAAM,GAAG,GAAsB,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;YACtG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,yFAAyF;IACjF,SAAS,CACf,IAA+B,EAC/B,KAAqC;QAErC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,IAAI,OAAO,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,IAAI,IAAI,CAAC;QACxD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,MAAc,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,gCAAgC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC7E,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE;oBAC7B,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;oBAC3B,cAAc,EAAE,EAAE,sBAAsB,EAAE,MAAM,EAAE;oBAClD,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE;iBACtB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;gBACvI,OAAO;YACT,CAAC;YACD,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,MAAM,IAAI,GAAG,CAAC,CAAyF,EAAQ,EAAE;gBAC/G,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAA0B,CAAC,CAAC,CAAC;gBAC3D,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;YACxD,CAAC,CAAC;YACF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,gFAAgF;gBAChF,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACtC,CAAC,EAAE,SAAS,CAAC,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,GAAgD,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACxF,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC9E,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO;gBAAE,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,+EAA+E;IAEvE,KAAK,CAAC,UAAU,CACtB,IAAsB,EACtB,SAAiB,EACjB,MAAoB;QAEpB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QAE1B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,sEAAsE;YACtE,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,0EAA0E;gBAC1E,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxG,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;YACtC,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;YACvE,IAAI,CAAC,IAAI;gBAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,6CAA6C;YACpF,4EAA4E;YAC5E,IAAI,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/C,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxG,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;YACtC,CAAC;YACD,MAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxD,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE;gBAC5E,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS;aAC9C,CAAC,CAAC;QACL,CAAC;QAED,2EAA2E;QAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClF,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/D,iFAAiF;QACjF,2CAA2C;QAC3C,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/F,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE;gBACrD,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC/C,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE;aACxC,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9B,mEAAmE;YACnE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjF,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QACjC,CAAC;QACD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,+BAA+B;QAC5F,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvG,MAAM,cAAc,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrG,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE;YAC5E,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM;SAC5C,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,CACrB,IAAsB,EACtB,UAAkB,EAClB,cAA2B,EAC3B,SAAiB,EACjB,MAAoB,EACpB,IAAwF;QAExF,iGAAiG;QACjG,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,kCAAkC,CAAC,UAAU,CAAC,CAAC;QAC1G,MAAM,UAAU,GAAG,4BAA4B,CAAC;YAC9C,OAAO,EAAE,WAAW;YACpB,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe;YACvC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe;YACvC,cAAc;SACf,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACnB,IAAI,CAAC,GAAG,CAAC,6CAA6C,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YACzF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC5B,CAAC;QACD,MAAM,UAAU,GAA2B,IAAI,CAAC,SAAS,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC/F,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,EAAE;YACpE,UAAU,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;YACrE,IAAI,EAAE;gBACJ,cAAc,EAAE,SAAS,SAAS,EAAE;gBACpC,UAAU;gBACV,eAAe,EAAE,IAAI,CAAC,eAAe;aACtC;YACD,8EAA8E;YAC9E,eAAe,EAAE,IAAI;SACtB,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,cAAc,EAAE,CAAC;YACjB,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC9B,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,MAAc;QACrC,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAC5B,YAAY,EACZ,GAAG,EAAE,CACH,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC7B,WAAW,EAAE,EAAE,SAAS,EAAE,4BAA4B,EAAE,QAAQ,EAAE,KAAK,EAAE;YACzE,KAAK,EAAE,MAAM,EAAE,4DAA4D;SAC5E,CAAC,EACJ,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAChC,CAAC;IACJ,CAAC;IAED,+EAA+E;IAEvE,KAAK,CAAC,gBAAgB,CAC5B,WAAqB,EACrB,SAAiB,EACjB,MAAuB,EACvB,MAAoB;QAEpB,6EAA6E;QAC7E,2EAA2E;QAC3E,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5B,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe;gBAAE,MAAM;YAC/F,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC/D,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBAClE,CAAC,IAAI,CAAC,CAAC;oBACP,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC;gBACvD,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;oBAAE,MAAM;gBAC7B,6DAA6D;YAC/D,CAAC;QACH,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,+EAA+E;IAE/E,wFAAwF;IAChF,aAAa,CAAC,IAAsB,EAAE,MAAoB;QAChE,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,2BAA2B,CAAC;QAC1E,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAC5D,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE;YACnC,yBAAyB,EAAE,QAAQ;YACnC,YAAY;SACb,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9B,iEAAiE;QACjE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,KAAK,IAAI,EAAE,CAAC,CAAC;QACtE,OAAO,WAAW,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;IAC3C,CAAC;IAED,+EAA+E;IAEvE,eAAe,CAAC,QAAgB,EAAE,OAAe,EAAE,SAAkB;QAC3E,OAAO;YACL,yFAAyF;YACzF,6FAA6F;YAC7F,kGAAkG;YAClG,SAAS,CAAC,CAAC,CAAC,6EAA6E,CAAC,CAAC,CAAC,EAAE;YAC9F,SAAS,QAAQ,EAAE;YACnB,gBAAgB,CAAC,aAAa,QAAQ,EAAE,EAAE,OAAO,CAAC;SACnD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEO,cAAc,CAAC,QAAgB,EAAE,cAAwB,EAAE,UAAoB;QACrF,OAAO;YACL,uFAAuF;YACvF,sFAAsF;YACtF,+FAA+F;YAC/F,cAAc,QAAQ,IAAI,aAAa,EAAE;YACzC,aAAa,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACpC,gBAAgB,CAAC,sBAAsB,QAAQ,IAAI,MAAM,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,gFAAgF;IAExE,UAAU;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAChD,CAAC;IAEO,UAAU,CAAC,OAAsB;QACvC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;YAC7C,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;gBAAE,OAAO,IAAI,CAAC;YACjE,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO;gBAAE,OAAO,IAAI,CAAC,CAAC,0CAA0C;YACvF,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,6EAA6E;YAC7E,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,OAAsB,EAAE,aAAuB;QAChE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC5C,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACvC,cAAc,CAAC,mBAAmB,CAChC,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,aAAa,EAAuB,CAAC,EAC/D,EAAE,SAAS,EAAE,2BAA2B,EAAE,CAC3C,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,2EAA2E;YAC3E,mEAAmE;QACrE,CAAC;IACH,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC;YACH,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,iCAAiC,EAAE,CAAC,CAAC;QAC9G,CAAC;QAAC,MAAM,CAAC;YACP,6EAA6E;QAC/E,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,GAAY;QAC1B,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACzD,OAAO,GAAG,YAAY,iBAAiB;YACrC,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;IAC7D,CAAC;CACF;AAED,SAAS,QAAQ,CAAC,CAAS;IACzB,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC"}
|