@intentic/machine 1.345.0 → 1.347.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/README.md +100 -135
- package/dist/device/commands.d.ts +6 -1
- package/dist/device/commands.d.ts.map +1 -1
- package/dist/device/commands.js +19 -7
- package/dist/device/commands.js.map +1 -1
- package/dist/device/grant.d.ts +2 -1
- package/dist/device/grant.d.ts.map +1 -1
- package/dist/device/router.d.ts +2 -1
- package/dist/device/router.d.ts.map +1 -1
- package/dist/device/sandbox-rounds/keeper.js +1 -1
- package/dist/device/sandbox-rounds/keeper.js.map +1 -1
- package/dist/device/tools/agent.d.ts.map +1 -1
- package/dist/device/tools/agent.js +7 -7
- package/dist/device/tools/agent.js.map +1 -1
- package/dist/device/tools/ic-binary.d.ts +1 -0
- package/dist/device/tools/ic-binary.d.ts.map +1 -1
- package/dist/device/tools/ic-binary.js +29 -1
- package/dist/device/tools/ic-binary.js.map +1 -1
- package/dist/device/tools/os/settings.js +3 -3
- package/dist/device/tools/os/settings.js.map +1 -1
- package/dist/device/tools/sandboxes.d.ts +1 -0
- package/dist/device/tools/sandboxes.d.ts.map +1 -1
- package/dist/device/tools/sandboxes.js +7 -2
- package/dist/device/tools/sandboxes.js.map +1 -1
- package/dist/install.d.ts +9 -1
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +28 -4
- package/dist/install.js.map +1 -1
- package/dist/resident/resident.d.ts.map +1 -1
- package/dist/resident/resident.js +1 -2
- package/dist/resident/resident.js.map +1 -1
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +1 -8
- package/dist/status.js.map +1 -1
- package/dist/sync/commands.d.ts +1 -9
- package/dist/sync/commands.d.ts.map +1 -1
- package/dist/sync/commands.js +48 -89
- package/dist/sync/commands.js.map +1 -1
- package/dist/sync/config.d.ts +21 -25
- package/dist/sync/config.d.ts.map +1 -1
- package/dist/sync/config.js +76 -35
- package/dist/sync/config.js.map +1 -1
- package/dist/sync/endpoint.d.ts +1 -1
- package/dist/sync/endpoint.d.ts.map +1 -1
- package/dist/sync/endpoint.js +2 -3
- package/dist/sync/endpoint.js.map +1 -1
- package/dist/sync/folders.d.ts.map +1 -1
- package/dist/sync/folders.js.map +1 -1
- package/dist/sync/gone-watch.d.ts +0 -1
- package/dist/sync/gone-watch.d.ts.map +1 -1
- package/dist/sync/gone-watch.js +16 -53
- package/dist/sync/gone-watch.js.map +1 -1
- package/dist/sync/holds.d.ts +30 -0
- package/dist/sync/holds.d.ts.map +1 -0
- package/dist/sync/holds.js +117 -0
- package/dist/sync/holds.js.map +1 -0
- package/dist/sync/low-disk.d.ts +2 -9
- package/dist/sync/low-disk.d.ts.map +1 -1
- package/dist/sync/low-disk.js +10 -38
- package/dist/sync/low-disk.js.map +1 -1
- package/dist/sync/mirror.d.ts +1 -4
- package/dist/sync/mirror.d.ts.map +1 -1
- package/dist/sync/mirror.js +57 -161
- package/dist/sync/mirror.js.map +1 -1
- package/dist/sync/mutagen-env.d.ts +1 -3
- package/dist/sync/mutagen-env.d.ts.map +1 -1
- package/dist/sync/mutagen-env.js +2 -12
- package/dist/sync/mutagen-env.js.map +1 -1
- package/dist/sync/mutagen-move.d.ts +3 -1
- package/dist/sync/mutagen-move.d.ts.map +1 -1
- package/dist/sync/mutagen-move.js +30 -22
- package/dist/sync/mutagen-move.js.map +1 -1
- package/dist/sync/mutagen.d.ts +4 -9
- package/dist/sync/mutagen.d.ts.map +1 -1
- package/dist/sync/mutagen.js +11 -71
- package/dist/sync/mutagen.js.map +1 -1
- package/dist/sync/project/project-commands.d.ts +0 -3
- package/dist/sync/project/project-commands.d.ts.map +1 -1
- package/dist/sync/project/project-commands.js +3 -2
- package/dist/sync/project/project-commands.js.map +1 -1
- package/dist/sync/project/project-delivery.d.ts.map +1 -1
- package/dist/sync/project/project-delivery.js +3 -3
- package/dist/sync/project/project-delivery.js.map +1 -1
- package/dist/sync/project/project-transfer.d.ts +4 -0
- package/dist/sync/project/project-transfer.d.ts.map +1 -1
- package/dist/sync/project/project-transfer.js +9 -2
- package/dist/sync/project/project-transfer.js.map +1 -1
- package/dist/sync/report.d.ts.map +1 -1
- package/dist/sync/report.js +16 -10
- package/dist/sync/report.js.map +1 -1
- package/dist/sync/retire.d.ts.map +1 -1
- package/dist/sync/retire.js +1 -2
- package/dist/sync/retire.js.map +1 -1
- package/dist/sync/tunnel.d.ts +4 -3
- package/dist/sync/tunnel.d.ts.map +1 -1
- package/dist/sync/tunnel.js +107 -42
- package/dist/sync/tunnel.js.map +1 -1
- package/dist/sync/uninstall.d.ts.map +1 -1
- package/dist/sync/uninstall.js +1 -1
- package/dist/sync/uninstall.js.map +1 -1
- package/dist/sync/wake.d.ts +3 -0
- package/dist/sync/wake.d.ts.map +1 -0
- package/dist/sync/wake.js +43 -0
- package/dist/sync/wake.js.map +1 -0
- package/package.json +9 -9
- package/dist/sync/attach-commands.d.ts +0 -39
- package/dist/sync/attach-commands.d.ts.map +0 -1
- package/dist/sync/attach-commands.js +0 -164
- package/dist/sync/attach-commands.js.map +0 -1
- package/dist/sync/swap-pause.d.ts +0 -10
- package/dist/sync/swap-pause.d.ts.map +0 -1
- package/dist/sync/swap-pause.js +0 -29
- package/dist/sync/swap-pause.js.map +0 -1
package/dist/sync/mirror.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import net from "node:net";
|
|
2
|
-
import { sleep } from "@intentic/base/async";
|
|
3
2
|
import { errorMessage } from "@intentic/base/errors";
|
|
4
3
|
import { plural } from "@intentic/base/format";
|
|
5
4
|
import { writeFileAtomic } from "@intentic/base/fs";
|
|
6
5
|
import { PortsListSchema } from "@intentic/sandbox-contract/schemas/ports";
|
|
7
|
-
import {
|
|
6
|
+
import { mirrorHeartbeatPath, pairingKey, pairingTransport, readState, removeSandboxPairings, retireLegacyPairings, setSandboxGone, setSwapSince, setUnreachableSince, updateState, } from "./config.js";
|
|
8
7
|
import { pairingEndpoint } from "./endpoint.js";
|
|
9
8
|
import { runProcess, runProcessSync } from "./exec.js";
|
|
10
9
|
import { candidateBases, createDaemonBases, dialedPairings } from "../daemon-base.js";
|
|
@@ -14,14 +13,15 @@ import { retireSandbox } from "./retire.js";
|
|
|
14
13
|
import { readSwaps } from "../device/sandbox-rounds/ic-swaps.js";
|
|
15
14
|
import { publishedPortsReader } from "./docker-ports.js";
|
|
16
15
|
import { realBridgeExec, runGitBridge } from "./git-bridge.js";
|
|
16
|
+
import { holdSessions, holdsSync, recordOf, RELEASE_FORWARDS_MS, shouldReleaseForwards, swapBegan, swapStep, syncHeld, syncHolds, UNREACHABLE_HOLD_MS } from "./holds.js";
|
|
17
17
|
import { guardDisks } from "./low-disk.js";
|
|
18
|
-
import { ensureSyncSession, existingSyncSessions, forwardedPorts, forwardSessionName, healDerivedConflicts, MUTAGEN_CALL_TIMEOUT_MS, mutagenForwardArgs, ourForwardSessions,
|
|
18
|
+
import { ensureSyncSession, existingSyncSessions, forwardedPorts, forwardSessionName, healDerivedConflicts, MUTAGEN_CALL_TIMEOUT_MS, mutagenForwardArgs, ourForwardSessions, relabelBudget, retireOrphanSessions, runMutagenAsync, sayDaemonEventsTo, sessionLabels, startMutagenDaemon, syncMode, syncSessionNames, } from "./mutagen.js";
|
|
19
19
|
import { ensureMutagen } from "./binary/mutagen-binary.js";
|
|
20
20
|
import { moveOffSharedMutagen } from "./mutagen-move.js";
|
|
21
21
|
import { quieted } from "./repeats.js";
|
|
22
|
+
import { sleepUnlessWoken } from "./wake.js";
|
|
22
23
|
import { deviceReport, scopedReport } from "./report.js";
|
|
23
24
|
import { pairingSshConfig, writeManagedSshConfig } from "./ssh.js";
|
|
24
|
-
import { holdsSync, recordOf, RELEASE_FORWARDS_MS, shouldReleaseForwards, swapPauseStep } from "./swap-pause.js";
|
|
25
25
|
import { createTunnelPool, tunnelTargets } from "./tunnel.js";
|
|
26
26
|
const POLL_MS = 5000;
|
|
27
27
|
const PORTS_TIMEOUT_MS = 10_000;
|
|
@@ -29,8 +29,6 @@ const REPO_LIST_EVERY_TICKS = 12;
|
|
|
29
29
|
const REPORT_EVERY_TICKS = 3;
|
|
30
30
|
const REPORT_TIMEOUT_MS = 10_000;
|
|
31
31
|
const REVOKED_POLLS = 3;
|
|
32
|
-
const UNREACHABLE_PAUSE_MS = 60 * 60_000;
|
|
33
|
-
export const shouldAutoPauseFileSync = (unreachableForMs) => unreachableForMs >= UNREACHABLE_PAUSE_MS;
|
|
34
32
|
export const pollBackoffMs = (unreachableForMs) => unreachableForMs < 60_000 ? 0 : unreachableForMs < 10 * 60_000 ? 30_000 : 5 * 60_000;
|
|
35
33
|
export const pollDue = (held, now) => held === undefined || now - held.lastTried >= pollBackoffMs(now - held.since);
|
|
36
34
|
export class SyncAuthError extends Error {
|
|
@@ -226,9 +224,6 @@ const servePairing = async (context, pairing, base) => {
|
|
|
226
224
|
const { mutagen, claimedBy, holding, holders, say: log } = context;
|
|
227
225
|
const baseline = pairing.mirroredPorts ?? [];
|
|
228
226
|
const ports = pairing.syncToken === undefined ? [] : await fetchWorkspacePorts(base, pairing.syncToken);
|
|
229
|
-
if (isAttachedPairing(pairing)) {
|
|
230
|
-
return [];
|
|
231
|
-
}
|
|
232
227
|
if (pairing.mirrorOff === true) {
|
|
233
228
|
await retireSwitchedOff(mutagen, pairing, log);
|
|
234
229
|
return [];
|
|
@@ -287,7 +282,6 @@ const dropRevokedPairing = async (mutagen, sandboxId, log) => {
|
|
|
287
282
|
await removeSandboxPairings(sandboxId);
|
|
288
283
|
retireOrphanSessions(mutagen, (await readState()).pairings, log);
|
|
289
284
|
};
|
|
290
|
-
const keyOfSandbox = (key, sandboxId) => key === sandboxId || key.startsWith(`${sandboxId}~`);
|
|
291
285
|
const guard = async (log, what, step) => {
|
|
292
286
|
try {
|
|
293
287
|
await step();
|
|
@@ -309,15 +303,14 @@ const absorbRejectedPoll = async (mutagen, pairing, rejectedPolls, repos, sessio
|
|
|
309
303
|
log(`${pairing.sandboxId} rejected the sync token ${REVOKED_POLLS} polls in a row: this machine's enrollment was revoked.`);
|
|
310
304
|
rejectedPolls.delete(pairing.sandboxId);
|
|
311
305
|
repos.delete(pairing.sandboxId);
|
|
312
|
-
|
|
313
|
-
sessionsPending.delete(key);
|
|
314
|
-
}
|
|
306
|
+
sessionsPending.delete(pairingKey(pairing));
|
|
315
307
|
await dropRevokedPairing(mutagen, pairing.sandboxId, log);
|
|
316
308
|
return true;
|
|
317
309
|
};
|
|
318
310
|
const absorbUnreachablePoll = async (mutagen, pairing, unreachable, log) => {
|
|
319
311
|
const now = Date.now();
|
|
320
|
-
const
|
|
312
|
+
const before = unreachable.get(pairing.sandboxId);
|
|
313
|
+
const since = before?.since ?? pairing.unreachableSince ?? now;
|
|
321
314
|
unreachable.set(pairing.sandboxId, { since, lastTried: now });
|
|
322
315
|
if (pairing.unreachableSince === undefined) {
|
|
323
316
|
await setUnreachableSince(pairing.sandboxId, since);
|
|
@@ -327,15 +320,11 @@ const absorbUnreachablePoll = async (mutagen, pairing, unreachable, log) => {
|
|
|
327
320
|
await retirePairingMirror(mutagen, pairing.sandboxId);
|
|
328
321
|
log(` ${pairing.sandboxId}: unreachable for ${RELEASE_FORWARDS_MS / 60_000} minutes; took its ${plural(mirrored, "port")} off localhost. They come back when it answers again.`);
|
|
329
322
|
}
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
if (pairing.fileSyncAutoPaused === true || !shouldAutoPauseFileSync(unreachableForMs) || !pauseRunningSync(mutagen, pairing)) {
|
|
334
|
-
return false;
|
|
323
|
+
const holds = now - since >= UNREACHABLE_HOLD_MS;
|
|
324
|
+
if (holds && (before === undefined || before.lastTried - since < UNREACHABLE_HOLD_MS)) {
|
|
325
|
+
log(` ${pairing.sandboxId}: unreachable for an hour; its file sync holds still to stop permanent reconnect and scanning load, and carries on when it answers.`);
|
|
335
326
|
}
|
|
336
|
-
|
|
337
|
-
log(` ${pairingKey(pairing)}: unreachable for one hour; paused its Mutagen sessions to stop permanent reconnect/scanning load. They resume automatically when it returns.`);
|
|
338
|
-
return true;
|
|
327
|
+
return holds;
|
|
339
328
|
};
|
|
340
329
|
const startBridge = (tracking, pairing, tick, say) => {
|
|
341
330
|
const id = pairing.sandboxId;
|
|
@@ -393,7 +382,7 @@ export const markPrepared = (prepared, pairing) => void prepared.add(setupOf(pai
|
|
|
393
382
|
const prepareSession = async (mutagen, pairing, pending, relabels, say) => {
|
|
394
383
|
let converged = false;
|
|
395
384
|
await guard(say, `${pairingKey(pairing)}: preparing its file sync`, async () => {
|
|
396
|
-
converged = await ensureSyncSession(mutagen, pairing, say, relabels);
|
|
385
|
+
converged = await ensureSyncSession(mutagen, pairing, say, syncHeld(pairing, Date.now()), relabels);
|
|
397
386
|
});
|
|
398
387
|
if (converged) {
|
|
399
388
|
pending.delete(pairingKey(pairing));
|
|
@@ -404,62 +393,15 @@ const prepareSession = async (mutagen, pairing, pending, relabels, say) => {
|
|
|
404
393
|
return converged;
|
|
405
394
|
};
|
|
406
395
|
const dormant = (mutagen, pairing) => pairing.goneSince !== undefined ||
|
|
407
|
-
pairing.
|
|
408
|
-
(pairing.
|
|
409
|
-
|
|
410
|
-
const told = new Map();
|
|
411
|
-
const ready = [];
|
|
412
|
-
for (const pairing of setups) {
|
|
413
|
-
if (isAttachedPairing(pairing) && pairing.mode === "sync" && pairing.localDir !== undefined && firstCopyAhead(pairing)) {
|
|
414
|
-
const said = told.get(pairing.sandboxId) ?? (await announce(pairing));
|
|
415
|
-
told.set(pairing.sandboxId, said);
|
|
416
|
-
if (!said) {
|
|
417
|
-
continue;
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
ready.push(pairing);
|
|
421
|
-
}
|
|
422
|
-
return ready;
|
|
423
|
-
};
|
|
424
|
-
const announcer = (mutagen, bases, unsupported, unreachable, gone, say) => async (pairing) => {
|
|
425
|
-
if (pairing.goneSince !== undefined) {
|
|
426
|
-
return false;
|
|
427
|
-
}
|
|
428
|
-
if (pairing.syncToken === undefined || unsupported.has(pairing.sandboxId)) {
|
|
429
|
-
return true;
|
|
430
|
-
}
|
|
431
|
-
if (!pollDue(unreachable.get(pairing.sandboxId), Date.now())) {
|
|
432
|
-
return false;
|
|
433
|
-
}
|
|
434
|
-
try {
|
|
435
|
-
const response = await sendReport(await bases.resolve(pairing), pairing, await deviceReport(mutagen));
|
|
436
|
-
if (response.status === 404) {
|
|
437
|
-
unsupported.add(pairing.sandboxId);
|
|
438
|
-
say(` ${pairing.sandboxId}: this sandbox is running a daemon without machine reports, its Devices view will stay empty.`);
|
|
439
|
-
return true;
|
|
440
|
-
}
|
|
441
|
-
if (answeredGone(response)) {
|
|
442
|
-
await gone(pairing);
|
|
443
|
-
return false;
|
|
444
|
-
}
|
|
445
|
-
if (!response.ok) {
|
|
446
|
-
say(` ${pairingKey(pairing)}: ${pairing.sandboxId} did not take the report naming this folder (${response.status}); its first copy waits for it.`);
|
|
447
|
-
}
|
|
448
|
-
return response.ok;
|
|
449
|
-
}
|
|
450
|
-
catch (error) {
|
|
451
|
-
say(` ${pairingKey(pairing)}: ${pairing.sandboxId} could not be told of this folder (${errorMessage(error)}); its first copy waits until it can.`);
|
|
452
|
-
return false;
|
|
453
|
-
}
|
|
454
|
-
};
|
|
455
|
-
const prepareSessions = async (mutagen, pairings, prepared, pending, announce, passes, say) => {
|
|
456
|
-
const firstCopyAhead = (pairing) => (existingSyncSessions(mutagen, syncSessionNames(pairing)) ?? []).length === 0;
|
|
396
|
+
pairing.containerAway !== undefined ||
|
|
397
|
+
(syncHolds(pairing, Date.now()).includes("unreachable") && (existingSyncSessions(mutagen, syncSessionNames(pairing)) ?? [undefined]).length > 0);
|
|
398
|
+
const prepareSessions = async (mutagen, pairings, prepared, pending, passes, say) => {
|
|
457
399
|
const unprepared = unpreparedSetups(pairings, prepared);
|
|
458
400
|
const docker = unprepared.filter((pairing) => pairingTransport(pairing) === "docker");
|
|
459
401
|
if (docker.length > 0) {
|
|
460
402
|
await guard(say, "asking after the containers docker pairings reach", async () => await checkContainers(passes.fate, docker, answeringOf(passes.tracking)));
|
|
461
403
|
}
|
|
462
|
-
for (const pairing of
|
|
404
|
+
for (const pairing of unprepared) {
|
|
463
405
|
markPrepared(prepared, pairing);
|
|
464
406
|
if (dormant(mutagen, pairing)) {
|
|
465
407
|
pending.add(pairingKey(pairing));
|
|
@@ -479,29 +421,23 @@ const retryPendingSessions = async (mutagen, pairings, sessionsPending, tick, re
|
|
|
479
421
|
}
|
|
480
422
|
}
|
|
481
423
|
};
|
|
482
|
-
export const holdSyncDuringSwaps = async (
|
|
424
|
+
export const holdSyncDuringSwaps = async (pairings, unreachable, say, read = readSwaps, record = setSwapSince) => {
|
|
483
425
|
const records = await read();
|
|
484
426
|
const now = Date.now();
|
|
485
427
|
const held = new Set();
|
|
486
428
|
for (const pairing of pairings) {
|
|
487
|
-
const
|
|
488
|
-
const holds = holdsSync(
|
|
429
|
+
const swap = recordOf(pairing, records);
|
|
430
|
+
const holds = holdsSync(swap, pairing.swapSince, now, !unreachable.has(pairing.sandboxId));
|
|
489
431
|
if (holds) {
|
|
490
432
|
held.add(pairing.sandboxId);
|
|
491
433
|
}
|
|
492
|
-
const
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
await setFileSyncSwapPaused(pairingKey(pairing), false);
|
|
500
|
-
say(` ${pairingKey(pairing)}: its sandbox's swap is settled; file sync resumed.`);
|
|
501
|
-
}
|
|
502
|
-
else if (pairing.fileSyncLowDisk === undefined) {
|
|
503
|
-
say(` ${pairingKey(pairing)}: its sandbox's swap is settled, but Mutagen did not take the resume of its file sync; trying again.`);
|
|
504
|
-
}
|
|
434
|
+
const began = swapBegan(swap, pairing.swapSince, now);
|
|
435
|
+
const step = swapStep(pairing, holds, began);
|
|
436
|
+
if (step !== undefined) {
|
|
437
|
+
await record(pairingKey(pairing), step === "began" ? began : undefined);
|
|
438
|
+
say(step === "began"
|
|
439
|
+
? ` ${pairingKey(pairing)}: its sandbox is being swapped on this machine; file sync holds still until the new version has held.`
|
|
440
|
+
: ` ${pairingKey(pairing)}: its sandbox's swap is settled; file sync carries on.`);
|
|
505
441
|
}
|
|
506
442
|
}
|
|
507
443
|
return held;
|
|
@@ -511,7 +447,7 @@ const runPairingPass = async (context, pairing, base) => {
|
|
|
511
447
|
const { rejectedPolls, unreachable } = tracking;
|
|
512
448
|
const swapping = swapHeld.has(pairing.sandboxId);
|
|
513
449
|
const short = context.diskHeld.has(pairingKey(pairing));
|
|
514
|
-
let
|
|
450
|
+
let heldThisPass = false;
|
|
515
451
|
try {
|
|
516
452
|
const mirrored = await servePairing(context, pairing, base);
|
|
517
453
|
rejectedPolls.delete(pairing.sandboxId);
|
|
@@ -522,18 +458,12 @@ const runPairingPass = async (context, pairing, base) => {
|
|
|
522
458
|
if (context.pairings.some((held) => held.sandboxId === pairing.sandboxId && held.unreachableSince !== undefined)) {
|
|
523
459
|
await setUnreachableSince(pairing.sandboxId, undefined);
|
|
524
460
|
}
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
say(` ${pairingKey(pairing)}: reachable again; resumed its automatically paused file sync`);
|
|
461
|
+
for (const port of mirrored) {
|
|
462
|
+
claimedBy.set(port.port, pairing.sandboxId);
|
|
528
463
|
}
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
}
|
|
533
|
-
handOver(holding, pairing.sandboxId, mirrored);
|
|
534
|
-
if (tick % STRANDED_SWEEP_EVERY_TICKS === 0) {
|
|
535
|
-
sweepStrandedForwards(mutagen, pairing.sandboxId, mirrored, say);
|
|
536
|
-
}
|
|
464
|
+
handOver(holding, pairing.sandboxId, mirrored);
|
|
465
|
+
if (tick % STRANDED_SWEEP_EVERY_TICKS === 0) {
|
|
466
|
+
sweepStrandedForwards(mutagen, pairing.sandboxId, mirrored, say);
|
|
537
467
|
}
|
|
538
468
|
}
|
|
539
469
|
catch (error) {
|
|
@@ -542,49 +472,16 @@ const runPairingPass = async (context, pairing, base) => {
|
|
|
542
472
|
if (outcome.drop) {
|
|
543
473
|
return;
|
|
544
474
|
}
|
|
545
|
-
|
|
475
|
+
heldThisPass = outcome.paused;
|
|
546
476
|
say(` ${pairingKey(pairing)}: reconcile skipped: ${errorMessage(error)}`);
|
|
547
477
|
}
|
|
548
|
-
if (pairing
|
|
478
|
+
if (syncHeld({ ...pairing, unreachableSince: undefined }, Date.now()) || heldThisPass || swapping || short) {
|
|
549
479
|
stopBridge(tracking, pairing.sandboxId);
|
|
550
480
|
return;
|
|
551
481
|
}
|
|
552
482
|
await healPairing(mutagen, pairing, tick, say);
|
|
553
483
|
startBridge(tracking, pairing, tick, say);
|
|
554
484
|
};
|
|
555
|
-
export const pollingPairings = (pairings) => {
|
|
556
|
-
const polling = new Set();
|
|
557
|
-
for (const sandboxId of new Set(pairings.map((pairing) => pairing.sandboxId))) {
|
|
558
|
-
const own = pairings.filter((pairing) => pairing.sandboxId === sandboxId);
|
|
559
|
-
const poller = own.find((pairing) => !isAttachedPairing(pairing)) ?? own[0];
|
|
560
|
-
if (poller !== undefined) {
|
|
561
|
-
polling.add(pairingKey(poller));
|
|
562
|
-
}
|
|
563
|
-
}
|
|
564
|
-
return polling;
|
|
565
|
-
};
|
|
566
|
-
const followSandbox = async (context, pairing) => {
|
|
567
|
-
const { mutagen, tick, tracking, swapHeld, say } = context;
|
|
568
|
-
if (pairing.goneSince !== undefined || pairing.fileSyncPausedFor !== undefined) {
|
|
569
|
-
return;
|
|
570
|
-
}
|
|
571
|
-
const down = tracking.unreachable.get(pairing.sandboxId)?.since ?? pairing.unreachableSince;
|
|
572
|
-
const swapping = swapHeld.has(pairing.sandboxId);
|
|
573
|
-
const short = context.diskHeld.has(pairingKey(pairing));
|
|
574
|
-
if (down === undefined) {
|
|
575
|
-
if (!swapping && !short && (await resumeAutoPausedSync(mutagen, pairing))) {
|
|
576
|
-
await setFileSyncAutoPaused(pairingKey(pairing), false);
|
|
577
|
-
say(` ${pairingKey(pairing)}: reachable again; resumed its automatically paused file sync`);
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
|
-
else if (await pauseIfLongUnreachable(mutagen, pairing, Date.now() - down, say)) {
|
|
581
|
-
return;
|
|
582
|
-
}
|
|
583
|
-
if (pairing.fileSyncAutoPaused === true || swapping || short) {
|
|
584
|
-
return;
|
|
585
|
-
}
|
|
586
|
-
await healPairing(mutagen, pairing, tick, say);
|
|
587
|
-
};
|
|
588
485
|
const passGone = async (context, pairing) => {
|
|
589
486
|
const now = Date.now();
|
|
590
487
|
const step = goneStep(pairing, now);
|
|
@@ -605,15 +502,12 @@ const passGone = async (context, pairing) => {
|
|
|
605
502
|
tracking.unreachable.delete(pairing.sandboxId);
|
|
606
503
|
tracking.rejectedPolls.delete(pairing.sandboxId);
|
|
607
504
|
tracking.repos.delete(pairing.sandboxId);
|
|
608
|
-
|
|
609
|
-
tracking.sessionsPending.delete(key);
|
|
610
|
-
}
|
|
505
|
+
tracking.sessionsPending.delete(pairingKey(pairing));
|
|
611
506
|
}
|
|
612
507
|
return "skip";
|
|
613
508
|
};
|
|
614
|
-
const runPasses = async (context, dialed,
|
|
615
|
-
const
|
|
616
|
-
for (const { pairing, base } of dialed.filter((held) => polling.has(pairingKey(held.pairing)))) {
|
|
509
|
+
const runPasses = async (context, dialed, live) => {
|
|
510
|
+
for (const { pairing, base } of dialed) {
|
|
617
511
|
if (!live()) {
|
|
618
512
|
return;
|
|
619
513
|
}
|
|
@@ -627,12 +521,6 @@ const runPasses = async (context, dialed, pairings, live) => {
|
|
|
627
521
|
await runPairingPass(context, pairing, base);
|
|
628
522
|
context.progress(`${pairingKey(pairing)}'s pass`);
|
|
629
523
|
}
|
|
630
|
-
for (const { pairing } of dialed.filter((held) => !polling.has(pairingKey(held.pairing)))) {
|
|
631
|
-
if (!live()) {
|
|
632
|
-
return;
|
|
633
|
-
}
|
|
634
|
-
await guard(context.say, `${pairingKey(pairing)}: following its sandbox`, async () => await followSandbox(context, pairing));
|
|
635
|
-
}
|
|
636
524
|
};
|
|
637
525
|
const ORPHAN_SWEEP_EVERY_TICKS = 12;
|
|
638
526
|
const CONTAINER_CHECK_EVERY_TICKS = 12;
|
|
@@ -700,7 +588,7 @@ const watchLoop = async (log, generation) => {
|
|
|
700
588
|
if ((await watchTick(watch, tick)) === "stop") {
|
|
701
589
|
return;
|
|
702
590
|
}
|
|
703
|
-
await
|
|
591
|
+
await sleepUnlessWoken(POLL_MS, generation.signal);
|
|
704
592
|
}
|
|
705
593
|
};
|
|
706
594
|
const startWatch = async (log, generation) => {
|
|
@@ -708,8 +596,15 @@ const startWatch = async (log, generation) => {
|
|
|
708
596
|
const say = quieted(log);
|
|
709
597
|
sayDaemonEventsTo(say);
|
|
710
598
|
await guard(say, "moving off Mutagen's shared data directory", async () => await moveOffSharedMutagen(mutagen, say));
|
|
599
|
+
let retired = 0;
|
|
600
|
+
await guard(say, "retiring the pairings of this computer's old sandbox for folders", async () => {
|
|
601
|
+
retired = (await retireLegacyPairings(log)).length;
|
|
602
|
+
});
|
|
711
603
|
const initial = await readState();
|
|
712
604
|
if (initial.pairings.length === 0) {
|
|
605
|
+
if (retired > 0 && startMutagenDaemon(mutagen)) {
|
|
606
|
+
await guard(say, "retiring orphaned sessions", () => retireOrphanSessions(mutagen, [], say));
|
|
607
|
+
}
|
|
713
608
|
log("no sandboxes are paired: nothing to mirror. Enable it from a sandbox's Desktop sync card.");
|
|
714
609
|
return undefined;
|
|
715
610
|
}
|
|
@@ -718,9 +613,9 @@ const startWatch = async (log, generation) => {
|
|
|
718
613
|
}
|
|
719
614
|
const sshConfig = pairingSshConfig(initial.pairings);
|
|
720
615
|
await guard(say, "refreshing the ssh configuration", async () => await writeManagedSshConfig(sshConfig));
|
|
721
|
-
const tunnels = createTunnelPool(say, generation.signal);
|
|
722
|
-
generation.stopTransports = tunnels.stopAll;
|
|
723
616
|
const bases = createDaemonBases(say);
|
|
617
|
+
const tunnels = createTunnelPool(say, generation.signal, (sandboxId) => bases.failed(sandboxId));
|
|
618
|
+
generation.stopTransports = tunnels.stopAll;
|
|
724
619
|
await guard(say, "opening the sync transports", async () => await tunnels.reconcile(tunnelTargets(await dialedPairings(initial.pairings, bases))));
|
|
725
620
|
const tracking = {
|
|
726
621
|
rejectedPolls: new Map(),
|
|
@@ -731,7 +626,7 @@ const startWatch = async (log, generation) => {
|
|
|
731
626
|
};
|
|
732
627
|
generation.signal.addEventListener("abort", () => stopBridges(tracking), { once: true });
|
|
733
628
|
const reportUnsupported = new Set();
|
|
734
|
-
const fate = {
|
|
629
|
+
const fate = { releaseForwards: async (sandboxId) => await retirePairingMirror(mutagen, sandboxId), say };
|
|
735
630
|
const gone = async (pairing) => await sandboxSaidGone(fate, pairing.sandboxId, "edge");
|
|
736
631
|
const watch = {
|
|
737
632
|
log,
|
|
@@ -750,11 +645,10 @@ const startWatch = async (log, generation) => {
|
|
|
750
645
|
reportUnsupported,
|
|
751
646
|
fate,
|
|
752
647
|
gone,
|
|
753
|
-
announce: announcer(mutagen, bases, reportUnsupported, tracking.unreachable, gone, say),
|
|
754
648
|
holders: { dockerPorts: publishedPortsReader(say), freeSince: new Map() },
|
|
755
649
|
sshConfig,
|
|
756
650
|
};
|
|
757
|
-
await prepareSessions(mutagen, initial.pairings, watch.sessionsPrepared, tracking.sessionsPending,
|
|
651
|
+
await prepareSessions(mutagen, initial.pairings, watch.sessionsPrepared, tracking.sessionsPending, { fate, relabels: relabelBudget(1), tracking }, say);
|
|
758
652
|
await guard(say, "retiring orphaned sessions", () => retireOrphanSessions(mutagen, initial.pairings, say));
|
|
759
653
|
log(`sync started; polling ${plural(initial.pairings.length, "paired sandbox")} every ${POLL_MS / 1000}s`);
|
|
760
654
|
return watch;
|
|
@@ -784,7 +678,7 @@ const watchTick = async (watch, tick) => {
|
|
|
784
678
|
await guard(say, "reconciling the sync transports", async () => await watch.tunnels.reconcile(tunnelTargets(dialed)));
|
|
785
679
|
progress("the sync transports");
|
|
786
680
|
const relabels = relabelBudget(1);
|
|
787
|
-
await prepareSessions(mutagen, state.pairings, watch.sessionsPrepared, tracking.sessionsPending,
|
|
681
|
+
await prepareSessions(mutagen, state.pairings, watch.sessionsPrepared, tracking.sessionsPending, { fate, relabels, tracking }, say);
|
|
788
682
|
await retryPendingSessions(mutagen, state.pairings, tracking.sessionsPending, tick, relabels, say);
|
|
789
683
|
progress("preparing file sync");
|
|
790
684
|
if (!watch.live()) {
|
|
@@ -792,11 +686,11 @@ const watchTick = async (watch, tick) => {
|
|
|
792
686
|
}
|
|
793
687
|
let swapHeld = new Set();
|
|
794
688
|
await guard(say, "holding file sync still during swaps", async () => {
|
|
795
|
-
swapHeld = await holdSyncDuringSwaps(
|
|
689
|
+
swapHeld = await holdSyncDuringSwaps(state.pairings, tracking.unreachable, say);
|
|
796
690
|
});
|
|
797
691
|
let diskHeld = new Set();
|
|
798
692
|
await guard(say, "measuring the drives synced folders are on", async () => {
|
|
799
|
-
diskHeld = await guardDisks(
|
|
693
|
+
diskHeld = await guardDisks(state.pairings, say);
|
|
800
694
|
});
|
|
801
695
|
stopBridges(tracking, state.pairings);
|
|
802
696
|
const context = {
|
|
@@ -815,10 +709,12 @@ const watchTick = async (watch, tick) => {
|
|
|
815
709
|
pairings: state.pairings,
|
|
816
710
|
say,
|
|
817
711
|
};
|
|
818
|
-
await runPasses(context, dialed,
|
|
712
|
+
await runPasses(context, dialed, watch.live);
|
|
819
713
|
if (!watch.live()) {
|
|
820
714
|
return "stop";
|
|
821
715
|
}
|
|
716
|
+
await guard(say, "holding file sync still where something holds it", async () => void (await holdSessions(mutagen, (await readState()).pairings, say)));
|
|
717
|
+
progress("holding file sync");
|
|
822
718
|
if (tick % REPORT_EVERY_TICKS === 0) {
|
|
823
719
|
await guard(say, "posting this machine's reports", async () => await postReports(dialed, mutagen, watch.reportUnsupported, watch.gone, say));
|
|
824
720
|
}
|
|
@@ -836,7 +732,7 @@ const teardownForwards = async (mutagen, sandboxId) => {
|
|
|
836
732
|
await runProcess(mutagen, ["forward", "terminate", ...names], { timeoutMs: MUTAGEN_CALL_TIMEOUT_MS });
|
|
837
733
|
}
|
|
838
734
|
await updateState((state) => ({
|
|
839
|
-
pairings: state.pairings.map((held) =>
|
|
735
|
+
pairings: state.pairings.map((held) => sandboxId === undefined || held.sandboxId === sandboxId
|
|
840
736
|
? { ...held, mirroredPorts: [], skippedPorts: [] }
|
|
841
737
|
: held),
|
|
842
738
|
}));
|
|
@@ -848,7 +744,7 @@ export const retireMirroredPort = async (mutagen, sandboxId, port) => {
|
|
|
848
744
|
let wasMirrored = false;
|
|
849
745
|
await updateState((state) => ({
|
|
850
746
|
pairings: state.pairings.map((held) => {
|
|
851
|
-
if (held.sandboxId !== sandboxId
|
|
747
|
+
if (held.sandboxId !== sandboxId) {
|
|
852
748
|
return held;
|
|
853
749
|
}
|
|
854
750
|
const mirrored = held.mirroredPorts ?? [];
|
package/dist/sync/mirror.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mirror.js","sourceRoot":"","sources":["../../src/sync/mirror.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAoB,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC7F,OAAO,EACH,iBAAiB,EACjB,mBAAmB,EAGnB,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EAEnB,WAAW,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAiC,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACrH,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAkB,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAChI,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAEjE,OAAO,EAAuB,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EACH,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAEhB,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,gBAAgB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACjH,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAO9D,MAAM,OAAO,GAAG,IAAI,CAAC;AAGrB,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAGhC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAIjC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAG7B,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAGjC,MAAM,aAAa,GAAG,CAAC,CAAC;AAKxB,MAAM,oBAAoB,GAAG,EAAE,GAAG,MAAM,CAAC;AACzC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,gBAAwB,EAAW,EAAE,CAAC,gBAAgB,IAAI,oBAAoB,CAAC;AAMvH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,gBAAwB,EAAU,EAAE,CAC9D,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAUzF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAA6B,EAAE,GAAW,EAAW,EAAE,CAC3E,IAAI,KAAK,SAAS,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAIlF,MAAM,OAAO,aAAc,SAAQ,KAAK;CAAG;AAI3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,IAAY,EAAE,SAAiB,EAA0B,EAAE;IACjG,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE;QAC7D,OAAO,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAE;QACzC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC;KAChD,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACrD,MAAM,IAAI,aAAa,CACnB,wHAAwH,CAC3H,CAAC;IACN,CAAC;IAGD,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,gBAAgB,CAAC,oDAAoD,QAAQ,CAAC,MAAM,MAAM,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACjI,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,QAAQ,CAAC,MAAM,MAAM,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,OAAO,eAAe,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;AAC9H,CAAC,CAAC;AAKF,MAAM,aAAa,GAAG,CAAC,IAAY,EAAoB,EAAE,CACrD,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;IACxB,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC,CAAC,CAAC;AAYP,MAAM,eAAe,GAAG,CAAC,OAAe,EAAE,OAAgB,EAAE,GAAQ,EAAmB,EAAE,CAAC,CAAC;IACvF,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAChB,KAAK,cAAc,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,EAAE;QAChG,SAAS,EAAE,uBAAuB;QAClC,KAAK,EAAE,IAAI;KACd,CAAC;IACN,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CACtB,MAAM,eAAe,CACjB,OAAO,EACP,kBAAkB,CAAC;QACf,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC;QACzD,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC;QAChC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;KACtD,CAAC,EACF,GAAG,CACN;IACL,eAAe,EAAE,aAAa;CACjC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,GAAG,MAAM,CAAC;AAkBzC,MAAM,cAAc,GAAG,CACnB,QAAyB,EACzB,OAAgC,EAChC,aAA+C,EAC/C,OAA4B,EAC5B,MAAkC,EAClC,GAAQ,EACJ,EAAE;IACN,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAClC,GAAG,CAAC,eAAe,QAAQ,CAAC,IAAI,wDAAwD,CAAC,CAAC;QAC9F,CAAC;aAAM,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAGlC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAClC,GAAG,CAAC,eAAe,QAAQ,CAAC,IAAI,sEAAsE,UAAU,GAAG,CAAC,CAAC;QACzH,CAAC;aAAM,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAClC,GAAG,CAAC,eAAe,QAAQ,CAAC,IAAI,gDAAgD,CAAC,CAAC;QACtF,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAIF,MAAM,OAAO,GAAG,KAAK,EAAE,QAAyB,EAAE,OAAoB,EAAE,KAAiB,EAAE,GAAQ,EAAoB,EAAE;IACrH,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,IAAI,iBAAiB,CAAC;IACvD,IAAI,CAAC,CAAC,MAAM,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAClD,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrC,GAAG,CAAC,eAAe,OAAO,CAAC,IAAI,sCAAsC,SAAS,GAAG,CAAC,CAAC;QACnF,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC;IAC7D,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzC,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK,IAAI,aAAa,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,GAAG,CACC,eAAe,OAAO,CAAC,IAAI,sFAAsF,aAAa,GAAG,MAAM,aAAa,SAAS,GAAG,CACnK,CAAC;IACF,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAQF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAClC,QAAyB,EACzB,OAAgC,EAChC,OAA+B,EAC/B,SAAsC,EACtC,OAA4B,EAC5B,KAAiB,EACjB,GAAQ,EACe,EAAE;IACzB,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACxE,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7E,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,IAAI,GAAmB,EAAE,CAAC;IAChC,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;QAG5B,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,SAAS;QACb,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC3B,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACrC,GAAG,CACC,eAAe,OAAO,CAAC,IAAI,wDAAwD,UAAU,eAAe,OAAO,CAAC,OAAO,IAAI,iBAAiB,GAAG,CACtJ,CAAC;YACF,SAAS;QACb,CAAC;QACD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;YAC3D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpB,SAAS;QACb,CAAC;QACD,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,GAAG,CAAC,eAAe,OAAO,CAAC,IAAI,6BAA6B,MAAM,cAAc,OAAO,CAAC,OAAO,IAAI,iBAAiB,GAAG,CAAC,CAAC;YACzH,SAAS;QACb,CAAC;QACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAEzB,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;YAClD,SAAS;QACb,CAAC;QAGD,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE/B,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAChF,GAAG,CAAC,eAAe,OAAO,CAAC,IAAI,MAAM,OAAO,CAAC,OAAO,IAAI,iBAAiB,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAIF,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAOtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAuB,EAAE,QAAiC,EAAY,EAAE;IACrG,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD,CAAC,CAAC;AAIF,MAAM,qBAAqB,GAAG,CAAC,OAAe,EAAE,SAAiB,EAAE,QAAiC,EAAE,GAAQ,EAAQ,EAAE;IAEpH,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAChD,KAAK,MAAM,IAAI,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC5E,cAAc,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,uBAAuB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5I,GAAG,CAAC,eAAe,IAAI,4DAA4D,CAAC,CAAC;IACzF,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,QAAsB,EAAU,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;AAE1F,MAAM,aAAa,GAAG,CAAC,CAA0B,EAAE,CAA0B,EAAW,EAAE;IACtF,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC;AAIF,MAAM,UAAU,GAAG,CAAC,OAAoB,EAAU,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;AAEjH,MAAM,cAAc,GAAG,CAAC,CAAyB,EAAE,CAAyB,EAAW,EAAE;IACrF,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAC;AAQF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC1B,OAA+B,EAC/B,QAAiC,EACjC,SAAsC,EACtC,OAA4B,EACf,EAAE;IACf,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,OAAO,OAAO;SACT,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC3C,GAAG,CAAC,CAAC,OAAO,EAAe,EAAE;QAC1B,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAG3C,MAAM,MAAM,GAAmB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC;QACzH,OAAO;YACH,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM;YACN,MAAM,EAAE,MAAM,KAAK,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACzD,OAAO,EAAE,OAAO,CAAC,OAAO;SAC3B,CAAC;IACN,CAAC,CAAC,CAAC;AACX,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAiE,EAAuB,EAAE,CACvH,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAU,CAAC,CAAC,CAAC,CAAC;AAIxH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,OAA4B,EAAE,SAAiB,EAAE,QAAiC,EAAQ,EAAE;IACjH,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACnC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACtC,CAAC;AACL,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAoC,EAAE,SAAiB,EAA+B,EAAE,CAClH,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC;AAIvE,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE,CAAC,MAAM,eAAe,CAAC,mBAAmB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAIvH,MAAM,SAAS,GAAG,KAAK,EAAE,GAAW,EAAE,aAAsC,EAAE,YAAoC,EAAiB,EAAE,CACjI,MAAM,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CACvH,CAAC,CAAC,CAAC;AAKR,MAAM,iBAAiB,GAAG,KAAK,EAAE,OAAe,EAAE,OAAgB,EAAE,GAAQ,EAAiB,EAAE;IAC3F,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;IAC7C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrE,OAAO;IACX,CAAC;IACD,MAAM,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACtD,GAAG,CAAC,KAAK,OAAO,CAAC,SAAS,gDAAgD,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAChI,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAsC,EAAuB,EAAE,CACxF,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAUxH,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAoB,EAAE,OAAgB,EAAuB,EAAE;IACnF,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,EAAkB,CAAC;IACvF,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACnD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;AAC9G,CAAC,CAAC;AAIF,MAAM,YAAY,GAAG,KAAK,EAAE,OAAoB,EAAE,OAAgB,EAAE,IAAY,EAAoC,EAAE;IAClH,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;IAG7C,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAGxG,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACd,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC7B,MAAM,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAC/C,OAAO,EAAE,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAE9H,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;IAEhG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;QACzF,MAAM,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC1B,MAAoB,EACpB,WAAgC,EAC7B,EAAE;IACL,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QACjC,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1I,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAGF,MAAM,UAAU,GAAG,KAAK,EAAE,IAAY,EAAE,OAAiD,EAAE,MAAoB,EAAqB,EAAE,CAClI,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,EAAE;IACzD,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE;IAC3F,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7D,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC;CACjD,CAAC,CAAC;AAKP,MAAM,WAAW,GAAG,KAAK,EACrB,MAAkC,EAClC,OAAe,EACf,WAAwB,EACxB,IAAyC,EACzC,GAAQ,EACK,EAAE;IACf,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;IACX,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC3C,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,UAAU,EAAE,CAAC;QACzC,IAAI,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAEzD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC1B,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACnC,GAAG,CAAC,KAAK,OAAO,CAAC,SAAS,+FAA+F,CAAC,CAAC;YAC/H,CAAC;iBAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAEhC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;iBAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACtB,GAAG,CAAC,KAAK,OAAO,CAAC,SAAS,uBAAuB,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YACzE,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,GAAG,CAAC,KAAK,OAAO,CAAC,SAAS,qBAAqB,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAKF,MAAM,kBAAkB,GAAG,KAAK,EAAE,OAAe,EAAE,SAAiB,EAAE,GAAQ,EAAiB,EAAE;IAC7F,MAAM,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACvC,oBAAoB,CAAC,OAAO,EAAE,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACrE,CAAC,CAAC;AAGF,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,SAAiB,EAAW,EAAE,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;AAGvH,MAAM,KAAK,GAAG,KAAK,EAAE,GAAQ,EAAE,IAAY,EAAE,IAAgC,EAAoB,EAAE;IAC/F,IAAI,CAAC;QACD,MAAM,IAAI,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,IAAI,YAAY,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChD,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC,CAAC;AAGF,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAKrC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAM5B,MAAM,kBAAkB,GAAG,KAAK,EAC5B,OAAe,EACf,OAAgB,EAChB,aAAkC,EAClC,KAAqC,EACrC,eAA4B,EAC5B,GAAQ,EACQ,EAAE;IAClB,MAAM,QAAQ,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACjE,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC/C,IAAI,QAAQ,GAAG,aAAa,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,4BAA4B,aAAa,yDAAyD,CAAC,CAAC;IAC5H,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAC7F,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IACD,MAAM,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAKF,MAAM,qBAAqB,GAAG,KAAK,EAAE,OAAe,EAAE,OAAgB,EAAE,WAAqC,EAAE,GAAQ,EAAoB,EAAE;IACzI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAKvB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,OAAO,CAAC,gBAAgB,IAAI,GAAG,CAAC;IAC3F,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9D,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACzC,MAAM,mBAAmB,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACtD,IAAI,qBAAqB,CAAC,GAAG,GAAG,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC/C,MAAM,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACtD,GAAG,CACC,KAAK,OAAO,CAAC,SAAS,qBAAqB,mBAAmB,GAAG,MAAM,sBAAsB,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,uDAAuD,CAC/K,CAAC;IACN,CAAC;IACD,OAAO,MAAM,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;AAC5E,CAAC,CAAC;AAKF,MAAM,sBAAsB,GAAG,KAAK,EAAE,OAAe,EAAE,OAAgB,EAAE,gBAAwB,EAAE,GAAQ,EAAoB,EAAE;IAC7H,IAAI,OAAO,CAAC,kBAAkB,KAAK,IAAI,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;QAC3H,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,qBAAqB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;IACvD,GAAG,CACC,KAAK,UAAU,CAAC,OAAO,CAAC,+IAA+I,CAC1K,CAAC;IACF,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAuBF,MAAM,WAAW,GAAG,CAAC,QAAyB,EAAE,OAAgB,EAAE,IAAY,EAAE,GAAQ,EAAQ,EAAE;IAC9F,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IAC7B,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3B,OAAO;IACX,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,GAAG,qBAAqB,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtF,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,cAAc,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAChG,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACJ,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;IACL,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QACT,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC;YAC1C,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC;AAGF,MAAM,UAAU,GAAG,CAAC,QAAyB,EAAE,SAAiB,EAAQ,EAAE;IACtE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACvC,CAAC,CAAC;AAGF,MAAM,WAAW,GAAG,CAAC,QAAyB,EAAE,QAA6B,EAAQ,EAAE;IACnF,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACvC,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAIF,MAAM,oBAAoB,GAAG,KAAK,EAC9B,KAAc,EACd,OAAe,EACf,OAAgB,EAChB,QAAyB,EACzB,IAAe,EACf,GAAQ,EACqD,EAAE;IAE/D,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;QACpC,MAAM,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACvD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACxC,CAAC;IACD,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAC/H,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;AAC7G,CAAC,CAAC;AAIF,MAAM,WAAW,GAAG,KAAK,EAAE,OAAe,EAAE,OAAgB,EAAE,IAAY,EAAE,GAAQ,EAAiB,EAAE;IACnG,IAAI,IAAI,GAAG,gBAAgB,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO;IACX,CAAC;IACD,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/I,CAAC,CAAC;AAOF,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAU,EAAE,CACzC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAIpI,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAA4B,EAAE,QAA6B,EAAa,EAAE,CACvG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAqB,EAAE,OAAgB,EAAQ,EAAE,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAInH,MAAM,cAAc,GAAG,KAAK,EAAE,OAAe,EAAE,OAAgB,EAAE,OAAoB,EAAE,QAAuB,EAAE,GAAQ,EAAoB,EAAE;IAC1I,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QAC3E,SAAS,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IACH,IAAI,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAUF,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,OAAgB,EAAW,EAAE,CAC3D,OAAO,CAAC,SAAS,KAAK,SAAS;IAC/B,OAAO,CAAC,iBAAiB,KAAK,SAAS;IACvC,CAAC,OAAO,CAAC,kBAAkB,KAAK,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAQlI,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAC/B,MAA0B,EAC1B,cAA6C,EAC7C,QAAgD,EAC9B,EAAE;IACpB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAmB,CAAC;IACxC,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,iBAAiB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YAErH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YACtE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,SAAS;YACb,CAAC;QACL,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAKF,MAAM,SAAS,GACX,CACI,OAAe,EACf,KAAkB,EAClB,WAAwB,EACxB,WAA6C,EAC7C,IAAyC,EACzC,GAAQ,EACV,EAAE,CACJ,KAAK,EAAE,OAAgB,EAAoB,EAAE;IAEzC,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACxE,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QAC3D,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QACtG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC1B,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACnC,GAAG,CAAC,KAAK,OAAO,CAAC,SAAS,+FAA+F,CAAC,CAAC;YAC3H,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,GAAG,CACC,KAAK,UAAU,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,SAAS,gDAAgD,QAAQ,CAAC,MAAM,iCAAiC,CACjJ,CAAC;QACN,CAAC;QACD,OAAO,QAAQ,CAAC,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,GAAG,CACC,KAAK,UAAU,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,SAAS,sCAAsC,YAAY,CAAC,KAAK,CAAC,uCAAuC,CACjJ,CAAC;QACF,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC,CAAC;AAYN,MAAM,eAAe,GAAG,KAAK,EACzB,OAAe,EACf,QAA4B,EAC5B,QAAqB,EACrB,OAAoB,EACpB,QAAgD,EAChD,MAA2D,EAC3D,GAAQ,EACK,EAAE;IAEf,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAW,EAAE,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IACpI,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;IACtF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,KAAK,CACP,GAAG,EACH,mDAAmD,EACnD,KAAK,IAAI,EAAE,CAAC,MAAM,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CACvF,CAAC;IACN,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,MAAM,cAAc,CAAC,UAAU,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC/E,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YACjC,SAAS;QACb,CAAC;QACD,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC1E,CAAC;AACL,CAAC,CAAC;AAGF,MAAM,WAAW,GACb,CAAC,QAA8C,EAAE,EAAE,CACnD,CAAC,SAAiB,EAAW,EAAE,CAC3B,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAK7C,MAAM,oBAAoB,GAAG,KAAK,EAC9B,OAAe,EACf,QAA4B,EAC5B,eAA4B,EAC5B,IAAY,EACZ,QAAuB,EACvB,GAAQ,EACK,EAAE;IACf,IAAI,eAAe,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,yBAAyB,KAAK,CAAC,EAAE,CAAC;QACvE,OAAO;IACX,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;QAChH,IAAI,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;YACzE,GAAG,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;QAChF,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACpC,OAAe,EACf,QAA4B,EAC5B,WAA6C,EAC7C,GAAQ,EACR,IAAI,GAAyC,SAAS,EAC1B,EAAE;IAC9B,MAAM,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1E,IAAI,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,IAAI,KAAK,OAAO,IAAI,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;YAEzD,MAAM,qBAAqB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;YACvD,GAAG,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,qGAAqG,CAAC,CAAC;QACvI,CAAC;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAG3B,IAAI,MAAM,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;gBAE/C,MAAM,qBAAqB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;gBACxD,GAAG,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAC;YACvF,CAAC;iBAAM,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;gBAC/C,GAAG,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,sGAAsG,CAAC,CAAC;YACxI,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAgCF,MAAM,cAAc,GAAG,KAAK,EAAE,OAAoB,EAAE,OAAgB,EAAE,IAAY,EAAiB,EAAE;IACjG,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAC5F,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;IAChD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAC5D,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACxC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAItC,IAAI,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACnD,MAAM,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC,EAAE,CAAC;YAC/G,MAAM,mBAAmB,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC5D,CAAC;QAGD,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;YACxE,MAAM,qBAAqB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;YACxD,GAAG,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,+DAA+D,CAAC,CAAC;QACjG,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC1B,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YAChD,CAAC;YACD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAG/C,IAAI,IAAI,GAAG,0BAA0B,KAAK,CAAC,EAAE,CAAC;gBAC1C,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YACrE,CAAC;QACL,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAGb,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACzF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,OAAO;QACX,CAAC;QACD,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;QAEhC,GAAG,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,wBAAwB,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;IAID,IAAI,OAAO,CAAC,kBAAkB,KAAK,IAAI,IAAI,OAAO,CAAC,iBAAiB,KAAK,SAAS,IAAI,cAAc,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;QACxH,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACxC,OAAO;IACX,CAAC;IAGD,MAAM,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IAG/C,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AAC9C,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAuD,EAAuB,EAAE;IAC5G,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,SAAS,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAC5E,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QACpC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAMF,MAAM,aAAa,GAAG,KAAK,EAAE,OAAoB,EAAE,OAAgB,EAAiB,EAAE;IAClF,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAC3D,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC7E,OAAO;IACX,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAC5F,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;YACxE,MAAM,qBAAqB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;YACxD,GAAG,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,+DAA+D,CAAC,CAAC;QACjG,CAAC;IACL,CAAC;SAAM,IAAI,MAAM,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QAChF,OAAO;IACX,CAAC;IACD,IAAI,OAAO,CAAC,kBAAkB,KAAK,IAAI,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC3D,OAAO;IACX,CAAC;IACD,MAAM,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACnD,CAAC,CAAC;AAMF,MAAM,QAAQ,GAAG,KAAK,EAAE,OAAoB,EAAE,OAAgB,EAAoC,EAAE;IAChG,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC;IAClB,CAAC;IAGD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,MAAM,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,IAAI,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;QAC3H,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;QAC3C,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,wBAAwB,EAAE,KAAK,IAAI,EAAE;YAEtE,MAAM,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC9H,OAAO;aACV,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC/C,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjD,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzC,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACtG,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAIF,MAAM,SAAS,GAAG,KAAK,EACnB,OAAoB,EACpB,MAAkC,EAClC,QAA4B,EAC5B,IAAmB,EACN,EAAE;IACf,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC1C,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7F,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACV,OAAO;QACX,CAAC;QAGD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YAClB,SAAS;QACb,CAAC;QAGD,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YAC/F,SAAS;QACb,CAAC;QAED,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7C,OAAO,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;IACD,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACV,OAAO;QACX,CAAC;QAED,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACjI,CAAC;AACL,CAAC,CAAC;AAIF,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACpC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAGvC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAGxC,MAAM,cAAc,GAAG,CAAC,MAAkC,EAAuB,EAAE,CAC/E,IAAI,GAAG,CACH,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;IACjC,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACtD,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtF,CAAC,CAAC,CACL,CAAC;AAIN,MAAM,cAAc,GAAG,KAAK,EACxB,OAA4E,EAC5E,MAAkC,EACrB,EAAE;IACf,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IACvD,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,wBAAwB,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,KAAK,CAAC,GAAG,EAAE,4BAA4B,EAAE,KAAK,IAAI,EAAE,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IACjI,CAAC;IACD,IAAI,IAAI,GAAG,2BAA2B,KAAK,CAAC,EAAE,CAAC;QAC3C,MAAM,KAAK,CACP,GAAG,EACH,mDAAmD,EACnD,KAAK,IAAI,EAAE,CAAC,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAC/F,CAAC;IACN,CAAC;IACD,IAAI,IAAI,GAAG,2BAA2B,KAAK,CAAC,EAAE,CAAC;QAC3C,MAAM,KAAK,CACP,GAAG,EACH,mDAAmD,EACnD,KAAK,IAAI,EAAE,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAChI,CAAC;IACN,CAAC;AACL,CAAC,CAAC;AAUF,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,GAAG,MAAM,CAAC;AAC5C,MAAM,cAAc,GAAG,MAAM,CAAC;AAI9B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAE,GAAW,EAAW,EAAE,CAAC,GAAG,GAAG,QAAQ,IAAI,gBAAgB,CAAC;AAW7G,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,GAAQ,EAAiB,EAAE;IAC5D,SAAS,CAAC;QAEN,IAAI,CAAC,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;YAC1C,OAAO;QACX,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAIF,MAAM,eAAe,GAAG,KAAK,EAAE,GAAQ,EAA+B,EAAE;IACpE,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;IACtC,MAAM,UAAU,GAAe,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;IAC7H,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACxC,IAAI,KAAiC,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAY,CAAC,OAAO,EAAE,EAAE;QAC7C,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YACrB,IAAI,cAAc,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;gBAClD,OAAO,CAAC,SAAS,CAAC,CAAC;YACvB,CAAC;QACL,CAAC,EAAE,cAAc,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAe,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9E,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,EAAE,CAAC;YAGhB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC5B,GAAG,CACC,iCAAiC,gBAAgB,GAAG,MAAM,wBAAwB,UAAU,CAAC,IAAI,4FAA4F,CAChM,CAAC;YACF,MAAM,UAAU;iBACX,cAAc,EAAE,EAAE;iBAClB,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,GAAG,CAAC,+DAA+D,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/H,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;YAAS,CAAC;QACP,aAAa,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;AACL,CAAC,CAAC;AAsBF,MAAM,SAAS,GAAG,KAAK,EAAE,GAAQ,EAAE,UAAsB,EAAiB,EAAE;IACxE,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAChD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO;IACX,CAAC;IACD,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;QAEzC,IAAI,CAAC,MAAM,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;YAC5C,OAAO;QACX,CAAC;QAED,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IACxD,CAAC;AACL,CAAC,CAAC;AAGF,MAAM,UAAU,GAAG,KAAK,EAAE,GAAQ,EAAE,UAAsB,EAA8B,EAAE;IACtF,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;IAGtC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,KAAK,CAAC,GAAG,EAAE,4CAA4C,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAErH,MAAM,OAAO,GAAG,MAAM,SAAS,EAAE,CAAC;IAClC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,GAAG,CAAC,2FAA2F,CAAC,CAAC;QACjG,OAAO,SAAS,CAAC;IACrB,CAAC;IAGD,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,GAAG,CAAC,sFAAsF,CAAC,CAAC;IAChG,CAAC;IAMD,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAM,KAAK,CAAC,GAAG,EAAE,kCAAkC,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;IACzG,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACzD,UAAU,CAAC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAG5C,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,KAAK,CACP,GAAG,EACH,6BAA6B,EAC7B,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CACpG,CAAC;IAEF,MAAM,QAAQ,GAAoB;QAC9B,aAAa,EAAE,IAAI,GAAG,EAAE;QACxB,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,eAAe,EAAE,IAAI,GAAG,EAAE;QAC1B,OAAO,EAAE,IAAI,GAAG,EAAE;KACrB,CAAC;IAEF,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzF,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5C,MAAM,IAAI,GAAc,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,MAAM,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;IAC9H,MAAM,IAAI,GAAG,KAAK,EAAE,OAAgB,EAAiB,EAAE,CAAC,MAAM,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC/G,MAAM,KAAK,GAAU;QACjB,GAAG;QACH,GAAG;QACH,OAAO;QACP,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO;QAGtC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;YACf,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YACnC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,OAAO;QACP,KAAK;QACL,QAAQ;QACR,gBAAgB,EAAE,IAAI,GAAG,EAAE;QAC3B,iBAAiB;QACjB,IAAI;QACJ,IAAI;QACJ,QAAQ,EAAE,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC;QAGvF,OAAO,EAAE,EAAE,WAAW,EAAE,oBAAoB,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAE;QACzE,SAAS;KACZ,CAAC;IACF,MAAM,eAAe,CACjB,OAAO,EACP,OAAO,CAAC,QAAQ,EAChB,KAAK,CAAC,gBAAgB,EACtB,QAAQ,CAAC,eAAe,EACxB,KAAK,CAAC,QAAQ,EACd,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAC9C,GAAG,CACN,CAAC;IACF,MAAM,KAAK,CAAC,GAAG,EAAE,4BAA4B,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3G,GAAG,CAAC,yBAAyB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,UAAU,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC;IAC3G,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAGF,MAAM,SAAS,GAAG,KAAK,EAAE,KAAY,EAAE,IAAY,EAA4B,EAAE;IAC7E,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACzD,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IAEhC,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACrD,GAAG,CAAC,+CAA+C,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3E,OAAO,SAAS,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAG9B,WAAW,CAAC,QAAQ,CAAC,CAAC;QACtB,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC9B,KAAK,CAAC,GAAG,CAAC,gGAAgG,CAAC,CAAC;QAC5G,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,MAAM,YAAY,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,YAAY,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;QACnC,MAAM,KAAK,CAAC,GAAG,EAAE,kCAAkC,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC;QAC5G,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;IACnC,CAAC;IAGD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAGjE,MAAM,KAAK,CAAC,GAAG,EAAE,iCAAiC,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtH,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IAEhC,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAGlC,MAAM,eAAe,CACjB,OAAO,EACP,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,gBAAgB,EACtB,QAAQ,CAAC,eAAe,EACxB,KAAK,CAAC,QAAQ,EACd,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAC5B,GAAG,CACN,CAAC;IACF,MAAM,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACnG,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAChB,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,IAAI,QAAQ,GAAwB,IAAI,GAAG,EAAE,CAAC;IAC9C,MAAM,KAAK,CAAC,GAAG,EAAE,sCAAsC,EAAE,KAAK,IAAI,EAAE;QAChE,QAAQ,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;IACH,IAAI,QAAQ,GAAwB,IAAI,GAAG,EAAE,CAAC;IAC9C,MAAM,KAAK,CAAC,GAAG,EAAE,4CAA4C,EAAE,KAAK,IAAI,EAAE;QACtE,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IACH,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAGtC,MAAM,OAAO,GAAgB;QACzB,OAAO;QACP,IAAI;QACJ,SAAS,EAAE,IAAI,GAAG,EAAE;QACpB,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC;QACzC,QAAQ;QACR,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ;QACR,QAAQ;QACR,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI;QACJ,QAAQ;QACR,QAAQ;QACR,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,GAAG;KACN,CAAC;IACF,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAChB,OAAO,MAAM,CAAC;IAClB,CAAC;IAGD,IAAI,IAAI,GAAG,kBAAkB,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,KAAK,CAAC,GAAG,EAAE,gCAAgC,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACjJ,CAAC;IACD,MAAM,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAG9B,MAAM,IAAI,EAAE,CAAC;IACb,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAOF,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAAe,EAAE,SAAkB,EAAmB,EAAE;IACpF,MAAM,QAAQ,GAAG,KAAK,IAAuB,EAAE,CAC3C,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,QAAQ;SACvB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;SACzE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpH,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC;IAC3E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAC1G,CAAC;IAID,MAAM,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAClC,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;YACjF,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;YAClD,CAAC,CAAC,IAAI,CACb;KACJ,CAAC,CAAC,CAAC;IACJ,OAAO,KAAK,CAAC,MAAM,CAAC;AACxB,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,OAAe,EAAE,SAAiB,EAAmB,EAAE,CAAC,MAAM,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAO7I,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,OAAe,EAAE,SAAiB,EAAE,IAAY,EAAoB,EAAE;IAC3G,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC,CAAC;IACjI,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,MAAM,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAClC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1D,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAC/D,WAAW,GAAG,IAAI,KAAK,SAAS,CAAC;YAGjC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAC1F,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YACpF,OAAO;gBACH,GAAG,IAAI;gBACP,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;gBAClE,YAAY,EACR,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAkB,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;aACpI,CAAC;QACN,CAAC,CAAC;KACL,CAAC,CAAC,CAAC;IACJ,OAAO,WAAW,CAAC;AACvB,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,OAAe,EAAE,GAAQ,EAAiB,EAAE;IAClF,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACjD,GAAG,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,qCAAqC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;AAC1H,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mirror.js","sourceRoot":"","sources":["../../src/sync/mirror.ts"],"names":[],"mappings":"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"}
|