@bananapus/nana-sdk-core 2.33.2 → 2.34.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,19 @@
1
- import { isAddress, } from "viem";
1
+ import { isAddress, toEventSelector, } from "viem";
2
2
  import { canonicalSafeTxHash, lookAtSafeProposalEnd, provenSafeProposalEnd, readSafeTransaction, SAFE_PROPOSAL_AWAITING, safeTransactionMessage, } from "../safeService.js";
3
- import { SAFE_PROPOSAL_EXECUTED_LINE, WRITE_HOLD_HASHED_EXIT_LINE, WRITE_HOLD_IN_TAB_LINE, WRITE_HOLD_LOOKS_DONE_LINE, WRITE_HOLD_NONCE_LINE, WRITE_HOLD_PENDING_LINE, WRITE_HOLD_UNCHECKED_LINE, WRITE_HOLD_REVERTED_LINE, WRITE_HOLD_SAFE_REPLACED_LINE, WRITE_HOLD_SAFE_UNPROVEN_LINE, writeHeldMessage, } from "./messages.js";
3
+ import { SAFE_PROPOSAL_EXECUTED_LINE, WRITE_HOLD_HASHED_EXIT_LINE, WRITE_HOLD_IN_TAB_LINE, WRITE_HOLD_LOOKS_DONE_LINE, WRITE_HOLD_MINED_LINE, WRITE_HOLD_NONCE_LINE, WRITE_HOLD_PENDING_LINE, WRITE_HOLD_UNCHECKED_LINE, WRITE_HOLD_REVERTED_LINE, WRITE_HOLD_SAFE_REPLACED_LINE, WRITE_HOLD_SAFE_UNPROVEN_LINE, writeHeldMessage, } from "./messages.js";
4
4
  import { createBrowserWriteRecovery, createHeldWriteStorage, findTransactionAtNonce, readReviewedWriteNonce, SubmittedWritePersistenceError, verifyReviewedWriteExpiry, verifyReviewedWriteReceipt, } from "./writeRecovery.js";
5
+ import { isBytes32 } from "../untrusted.js";
5
6
  import { atCanonicalFinalizedBlock } from "./relayr.js";
7
+ /**
8
+ * A state read without the chain (peek, a replay, another tab's change, a
9
+ * send's progress): its status and line, never the exit. Only the gate in
10
+ * state() and exit() offers that.
11
+ */
12
+ function ungated(state) {
13
+ return state.status === "clear" || !state.exit
14
+ ? state
15
+ : { ...state, exit: false };
16
+ }
6
17
  /** A send was refused because the exact call is held; `state` says how. */
7
18
  export class WriteHeldError extends Error {
8
19
  constructor(state) {
@@ -27,6 +38,11 @@ export class WriteHoldBusyError extends Error {
27
38
  }
28
39
  }
29
40
  const SETTLE_POLL_MS = 15_000;
41
+ /** A Safe's execution events, in its 1.3 and 1.4 layouts alike. */
42
+ const SAFE_EXECUTION_TOPICS = [
43
+ toEventSelector("ExecutionSuccess(bytes32,uint256)"),
44
+ toEventSelector("ExecutionFailure(bytes32,uint256)"),
45
+ ];
30
46
  /** A hash the network still hasn't seen this long after the wallet returned it was almost certainly never broadcast. */
31
47
  const UNSEEN_HASH_MS = 30 * 60_000;
32
48
  /** The 30 minutes have passed since the wallet returned the hash, or since it was first read. A clock that couldn't be saved (NaN) never runs out. */
@@ -76,11 +92,6 @@ function unchecked(record) {
76
92
  }
77
93
  /** About an hour of polls; a later state() looks again. */
78
94
  const SETTLE_POLL_ATTEMPTS = 240;
79
- function listenerKey(call) {
80
- const scope = call.namespace ??
81
- `${call.call.to}:${BigInt(call.call.value ?? 0)}:${call.call.data}`;
82
- return `${call.chainId}:${call.account}:${scope}`.toLowerCase();
83
- }
84
95
  function clear(settled) {
85
96
  return settled ? { status: "clear", settled } : { status: "clear" };
86
97
  }
@@ -152,7 +163,10 @@ export function createWriteHold(options = {}) {
152
163
  const peekers = new Map();
153
164
  const timers = new Map();
154
165
  let onStorage;
166
+ /** The latest state emitted for each call, replayed to a late subscriber. */
167
+ const latest = new Map();
155
168
  function emit(key, state) {
169
+ latest.set(key, state);
156
170
  for (const listener of listeners.get(key) ?? [])
157
171
  listener(state);
158
172
  }
@@ -179,10 +193,16 @@ export function createWriteHold(options = {}) {
179
193
  storage,
180
194
  locks: options.locks,
181
195
  });
182
- const key = listenerKey(call);
196
+ // The canonical recovery scope: a namespace and an exact call never share it.
197
+ const key = recovery.scopeKey;
183
198
  /** The effect read the last state() was given: the exit asks it again. */
184
199
  let lastEffect;
185
- const peek = () => classify(recovery.read());
200
+ /** Nothing held: how the call's last write settled, if saved. */
201
+ const cleared = () => clear(recovery.settled());
202
+ const peek = () => {
203
+ const record = recovery.read();
204
+ return record ? ungated(classify(record)) : cleared();
205
+ };
186
206
  const shown = (state) => (emit(key, state), state);
187
207
  async function locked(work, wait) {
188
208
  let entered = false;
@@ -225,11 +245,15 @@ export function createWriteHold(options = {}) {
225
245
  }
226
246
  async function settle(record, receipt, client, proof) {
227
247
  const verdict = await verifyReviewedWriteReceipt(client, record, receipt, proof).catch(() => null);
228
- if (verdict && release(record))
229
- return clear({
248
+ if (verdict && release(record)) {
249
+ const settled = {
230
250
  result: verdict,
231
251
  hash: receipt.transactionHash.toLowerCase(),
232
- });
252
+ };
253
+ // Kept for any later reader: another tab, a reload, a follow timer.
254
+ recovery.markSettled(record, settled);
255
+ return clear(settled);
256
+ }
233
257
  if (!record.safe &&
234
258
  receipt.status === "reverted" &&
235
259
  receipt.transactionHash.toLowerCase() === record.hash) {
@@ -287,6 +311,89 @@ export function createWriteHold(options = {}) {
287
311
  // A proof that can't be dropped keeps the exit refusing it.
288
312
  return unchecked(recovery.unexecuted(record));
289
313
  }
314
+ /** The first hash the hold has seen that the node knows as a transaction with no receipt yet. */
315
+ /**
316
+ * Positive proof that `receipt` isn't the held Safe proposal's
317
+ * execution: it is in a canonical block, and it reverted or its Safe
318
+ * logged no execution of the proposal's safeTxHash. A read that fails
319
+ * proves nothing.
320
+ */
321
+ async function disproves(record, receipt, client) {
322
+ const block = await client
323
+ .getBlock({ blockNumber: receipt.blockNumber })
324
+ .catch(() => null);
325
+ if (!block?.hash ||
326
+ block.hash.toLowerCase() !== receipt.blockHash?.toLowerCase())
327
+ return false;
328
+ if (receipt.status === "reverted")
329
+ return true;
330
+ return !receipt.logs.some((log) => log.address?.toLowerCase() === record.account &&
331
+ SAFE_EXECUTION_TOPICS.includes(log.topics?.[0]) &&
332
+ (log.topics.length === 2
333
+ ? log.topics[1]
334
+ : log.data?.slice(0, 66))?.toLowerCase() === record.hash);
335
+ }
336
+ /**
337
+ * A held hash the node shows mined, though its receipt can't be read: it
338
+ * may have run, so no exit at once, and no "speed it up" either. Once
339
+ * that has lasted 30 minutes (`minedAt` keeps the clock), the warned exit.
340
+ * Seen pending again, the clock stops.
341
+ */
342
+ async function minedUnread(state, client) {
343
+ const look = await lookAt(state.hash, client);
344
+ // Only positive pending evidence stops the clock; a read that fails
345
+ // keeps the one saved.
346
+ if (look === "pending")
347
+ return { ...state, record: recovery.mined(state.record, false) };
348
+ const record = look === "mined" ? recovery.mined(state.record, true) : state.record;
349
+ if (record.minedAt === undefined)
350
+ return state;
351
+ if (Date.now() - Number(record.minedAt) >= UNSEEN_HASH_MS)
352
+ return unchecked(record);
353
+ return { ...state, record, line: WRITE_HOLD_MINED_LINE };
354
+ }
355
+ /** What the node shows of `hash`: positive pending or mined metadata, or nothing it can say. */
356
+ async function lookAt(hash, client) {
357
+ const sent = await client.getTransaction({ hash }).catch(() => null);
358
+ if (sent?.hash?.toLowerCase() !== hash)
359
+ return null;
360
+ return sent.blockNumber === null ? "pending" : "mined";
361
+ }
362
+ /**
363
+ * No exit while a hash the hold has seen (its own, unless proven dropped,
364
+ * or a candidate) is pending, or was seen mined with its receipt
365
+ * unreadable less than 30 minutes ago: it may have run. Its clock is
366
+ * kept per hash, survives read failures, and stops only on positive
367
+ * pending evidence.
368
+ */
369
+ async function seenGate(saved, client, ownDropped) {
370
+ let record = saved;
371
+ const seen = [
372
+ ...(record.hash && !ownDropped ? [record.hash] : []),
373
+ ...(record.candidates ?? []),
374
+ ];
375
+ for (const hash of seen) {
376
+ const own = hash === record.hash;
377
+ const look = await lookAt(hash, client);
378
+ if (look !== null)
379
+ record = own
380
+ ? recovery.mined(record, look === "mined")
381
+ : recovery.candidateMined(record, hash, look === "mined");
382
+ const at = own ? record.minedAt : record.candidateMinedAt?.[hash];
383
+ if (look === "pending" ||
384
+ (at !== undefined && Date.now() - Number(at) < UNSEEN_HASH_MS))
385
+ return {
386
+ status: "pending-known-hash",
387
+ record,
388
+ hash,
389
+ exit: false,
390
+ line: look === "pending"
391
+ ? WRITE_HOLD_PENDING_LINE
392
+ : WRITE_HOLD_MINED_LINE,
393
+ };
394
+ }
395
+ return null;
396
+ }
290
397
  async function safeState(saved, client) {
291
398
  let record = saved;
292
399
  const hash = record.hash;
@@ -318,7 +425,24 @@ export function createWriteHold(options = {}) {
318
425
  }
319
426
  }
320
427
  }
321
- else if (record.executionHash) {
428
+ // An execution hash the app reported settles it only on its own
429
+ // authenticated receipt; until then it is a candidate, never proof.
430
+ if (!record.executionHash)
431
+ for (const candidate of record.candidates ?? []) {
432
+ const receipt = await client
433
+ .getTransactionReceipt({ hash: candidate })
434
+ .catch(() => null);
435
+ if (!receipt)
436
+ continue;
437
+ const settled = await settle(record, receipt, client);
438
+ if (settled.status === "clear" || settled.status === "ran-executed")
439
+ return settled;
440
+ // Only a canonical receipt that names no execution of this
441
+ // proposal disproves it; anything unread keeps it.
442
+ if (await disproves(record, receipt, client))
443
+ record = recovery.disproven(record, candidate);
444
+ }
445
+ if (record.executed && record.executionHash) {
322
446
  const settled = await execution(record, client);
323
447
  if (settled?.status === "clear")
324
448
  return settled;
@@ -351,16 +475,28 @@ export function createWriteHold(options = {}) {
351
475
  if (expired && release(record))
352
476
  return clear({ result: "expired" });
353
477
  }
354
- if (end.look === "executed" &&
355
- (!record.executed ||
478
+ if (end.look === "executed") {
479
+ if (!record.executed ||
356
480
  (end.execution &&
357
- end.execution.executionHash !== record.executionHash))) {
358
- record = recovery.executed(record, end.execution?.executionHash);
481
+ end.execution.executionHash !== record.executionHash))
482
+ record = recovery.executed(record, end.execution?.executionHash);
359
483
  if (record.executionHash) {
360
484
  const settled = await execution(record, client);
361
- if (settled)
485
+ // Only a settled receipt ends it here; one that can't be verified
486
+ // leaves the finalized log to decide.
487
+ if (settled?.status === "clear")
362
488
  return settled;
363
489
  }
490
+ // It ran: with its receipt unreadable, the canonical log at a
491
+ // finalized block carries its result. Never a resend exit.
492
+ if (end.execution && release(record)) {
493
+ const settled = {
494
+ result: end.execution.status,
495
+ hash: end.execution.executionHash,
496
+ };
497
+ recovery.markSettled(record, settled);
498
+ return clear(settled);
499
+ }
364
500
  }
365
501
  if (!record.executed &&
366
502
  !record.unproven &&
@@ -371,10 +507,35 @@ export function createWriteHold(options = {}) {
371
507
  follow(client, record.id);
372
508
  return classify(record);
373
509
  }
510
+ /**
511
+ * The one gate for every exit, offered or taken: no exit while any hash
512
+ * the hold has seen (its own, or a candidate) is a known pending
513
+ * transaction, whatever the state says, a replacement included.
514
+ */
374
515
  async function inspect(client, effect) {
516
+ const state = await inspectChain(client, effect);
517
+ if (state.status === "pending-known-hash")
518
+ return minedUnread(state, client);
519
+ if (state.status === "clear" || !state.exit)
520
+ return state;
521
+ // A hash proven dropped (another transaction used its sent nonce at a
522
+ // canonical finalized block) can't run, whatever a node still shows.
523
+ return ((await seenGate(state.record, client, state.status === "dropped-proven")) ?? state);
524
+ }
525
+ /**
526
+ * The way out of every method that has a client: a state that could
527
+ * offer the exit, or track a hash, is the gate's answer (inspect), so no
528
+ * method reports an exit state() would refuse. Under the call's lock.
529
+ */
530
+ async function finish(state, client) {
531
+ return state.status === "clear" || state.status === "ran-executed"
532
+ ? state
533
+ : inspect(client);
534
+ }
535
+ async function inspectChain(client, effect) {
375
536
  let record = recovery.read();
376
537
  if (!record)
377
- return clear();
538
+ return cleared();
378
539
  // No evidence from another chain.
379
540
  if ((await client.getChainId().catch(() => null)) !== record.chainId)
380
541
  return classify(record);
@@ -385,7 +546,7 @@ export function createWriteHold(options = {}) {
385
546
  .catch(() => null);
386
547
  record = recovery.read();
387
548
  if (!record)
388
- return clear();
549
+ return cleared();
389
550
  if (check?.status === "sent") {
390
551
  // An authenticated hash is seen: any vanished clock stops.
391
552
  if (record.vanishedAt !== undefined)
@@ -398,17 +559,6 @@ export function createWriteHold(options = {}) {
398
559
  // A hash saved before its clock existed starts it now.
399
560
  if (record.hash && record.submittedAt === undefined)
400
561
  record = recovery.firstSeen(record);
401
- // The app's effect read only changes the line, and offers the exit.
402
- if (check?.status === "pending" && check.effect)
403
- return {
404
- status: "looks-done",
405
- record,
406
- exit: true,
407
- line: WRITE_HOLD_LOOKS_DONE_LINE,
408
- ...(record.hash
409
- ? { hash: record.hash, warning: WRITE_HOLD_HASHED_EXIT_LINE }
410
- : {}),
411
- };
412
562
  if (record.hash &&
413
563
  record.sentNonce !== undefined &&
414
564
  check?.status === "pending" &&
@@ -422,6 +572,18 @@ export function createWriteHold(options = {}) {
422
572
  line: writeHeldMessage(),
423
573
  warning: WRITE_HOLD_HASHED_EXIT_LINE,
424
574
  };
575
+ // The app's effect read only changes the line, and offers the exit;
576
+ // a proven drop above takes priority.
577
+ if (check?.status === "pending" && check.effect)
578
+ return {
579
+ status: "looks-done",
580
+ record,
581
+ exit: true,
582
+ line: WRITE_HOLD_LOOKS_DONE_LINE,
583
+ ...(record.hash
584
+ ? { hash: record.hash, warning: WRITE_HOLD_HASHED_EXIT_LINE }
585
+ : {}),
586
+ };
425
587
  // A hash seen with its sent nonce that the node has since lost.
426
588
  if (record.hash &&
427
589
  record.sentNonce !== undefined &&
@@ -457,7 +619,10 @@ export function createWriteHold(options = {}) {
457
619
  state,
458
620
  /** What the saved record alone says, without asking the chain. */
459
621
  peek,
460
- /** Every state this controller reads or makes for the call, and other tabs' changes. */
622
+ /**
623
+ * Every state this controller reads or makes for the call, and other
624
+ * tabs' changes. The latest one, if any, is replayed at once.
625
+ */
461
626
  subscribe(listener) {
462
627
  let set = listeners.get(key);
463
628
  if (!set)
@@ -465,6 +630,16 @@ export function createWriteHold(options = {}) {
465
630
  set.add(listener);
466
631
  peekers.set(key, peek);
467
632
  watchTabs();
633
+ // A subscriber that arrives after the hold spoke hears its latest state.
634
+ // Only while it still names the call's current record; otherwise
635
+ // what the saved record says now.
636
+ const last = latest.get(key);
637
+ if (last) {
638
+ const now = peek();
639
+ // A clear is compared by its settlement's identity, a hold by its record.
640
+ const identity = (state) => JSON.stringify(state.status === "clear" ? (state.settled ?? null) : state.record);
641
+ listener(ungated(identity(now) === identity(last) ? last : now));
642
+ }
468
643
  return () => {
469
644
  set.delete(listener);
470
645
  if (!set.size) {
@@ -499,7 +674,8 @@ export function createWriteHold(options = {}) {
499
674
  attempt = recovery.reserve(actualCall, evidence);
500
675
  }
501
676
  catch (error) {
502
- const now = peek();
677
+ const now = await finish(classify(recovery.read()), client);
678
+ shown(now);
503
679
  if (now.status !== "clear")
504
680
  throw new WriteHeldError(now);
505
681
  throw error;
@@ -526,7 +702,7 @@ export function createWriteHold(options = {}) {
526
702
  catch {
527
703
  /* Not this proposal: the service is asked later. */
528
704
  }
529
- shown(classify(attempt));
705
+ shown(ungated(classify(attempt)));
530
706
  },
531
707
  onRejected() {
532
708
  recovery.rejected();
@@ -565,7 +741,10 @@ export function createWriteHold(options = {}) {
565
741
  recovery.abandon(snapshot.record, { checkedWallet: true });
566
742
  }
567
743
  catch {
568
- return { released: false, state: peek() };
744
+ return {
745
+ released: false,
746
+ state: await finish(classify(recovery.read()), client),
747
+ };
569
748
  }
570
749
  return { released: true, state: clear() };
571
750
  }, true);
@@ -584,8 +763,8 @@ export function createWriteHold(options = {}) {
584
763
  if (!record ||
585
764
  (!record.safe &&
586
765
  record.hash !== receipt?.transactionHash?.toLowerCase()))
587
- return classify(record);
588
- return settle(record, receipt, client, proof);
766
+ return finish(classify(record), client);
767
+ return finish(await settle(record, receipt, client, proof), client);
589
768
  }, true);
590
769
  return shown(result?.value ?? peek());
591
770
  },
@@ -608,15 +787,75 @@ export function createWriteHold(options = {}) {
608
787
  return shown(result?.value ?? peek());
609
788
  },
610
789
  /**
611
- * The app's own proof that the held Safe proposal ran, with its
612
- * execution's transaction when known. Kept until its result settles it.
790
+ * Attach a hash the chain authenticates as this exact call, sent by the
791
+ * account on the reservation's chain at or after its next nonce, and
792
+ * not mined before it was reserved, to the held write that has none: under
793
+ * one lock, without releasing it. The hold then follows that hash: no
794
+ * exit while it is pending, and its receipt settles it.
795
+ */
796
+ async attachHash(client, hash) {
797
+ const result = await locked(async () => {
798
+ const record = recovery.read();
799
+ if (record &&
800
+ !record.safe &&
801
+ !record.hash &&
802
+ isBytes32(hash) &&
803
+ (await client.getChainId().catch(() => null)) === record.chainId) {
804
+ const sent = await client
805
+ .getTransaction({ hash })
806
+ .catch(() => null);
807
+ if (sent?.hash?.toLowerCase() === hash.toLowerCase() &&
808
+ sent.from?.toLowerCase() === record.account &&
809
+ (sent.chainId === undefined || sent.chainId === record.chainId) &&
810
+ sent.to?.toLowerCase() === record.call.to &&
811
+ sent.input?.toLowerCase() === record.call.data &&
812
+ BigInt(sent.value) === BigInt(record.call.value) &&
813
+ // This attempt, not an earlier identical call: never below the
814
+ // account's next nonce or mined before it was reserved.
815
+ // With no such evidence, an identical earlier call can't be
816
+ // told apart: nothing is attached, and the exit stays.
817
+ record.nonce !== undefined &&
818
+ record.fromBlock !== undefined &&
819
+ BigInt(sent.nonce) >= BigInt(record.nonce) &&
820
+ (sent.blockNumber === null ||
821
+ sent.blockNumber >= BigInt(record.fromBlock)))
822
+ try {
823
+ recovery.submitted(hash, record);
824
+ }
825
+ catch {
826
+ /* Kept in this tab's memory, it still holds. */
827
+ }
828
+ }
829
+ return inspect(client);
830
+ }, true);
831
+ return shown(result?.value ?? peek());
832
+ },
833
+ /**
834
+ * The app's word that the held Safe proposal ran, with its execution's
835
+ * transaction when known. Nothing is saved as executed on its word:
836
+ * the hash is kept as a candidate, and settles it only once its own
837
+ * receipt proves this Safe's execution of the exact proposal or call.
613
838
  */
614
839
  async onExecuted(client, executionHash) {
615
840
  const result = await locked(async () => {
616
841
  const record = recovery.read();
617
842
  if (!record?.safe || !record.hash)
618
- return classify(record);
619
- recovery.executed(record, executionHash);
843
+ return finish(classify(record), client);
844
+ if (executionHash) {
845
+ // Authenticated on arrival: its own receipt settles it, or proves
846
+ // it isn't this write's; only an unresolved one is kept.
847
+ const receipt = await client
848
+ .getTransactionReceipt({ hash: executionHash })
849
+ .catch(() => null);
850
+ if (receipt) {
851
+ const settled = await settle(record, receipt, client);
852
+ if (settled.status === "clear" ||
853
+ settled.status === "ran-executed")
854
+ return settled;
855
+ }
856
+ if (!receipt || !(await disproves(record, receipt, client)))
857
+ recovery.candidate(record, executionHash);
858
+ }
620
859
  return inspect(client);
621
860
  }, true);
622
861
  return shown(result?.value ?? peek());
@@ -1 +1 @@
1
- {"version":3,"file":"writeHold.js","sourceRoot":"","sources":["../../../src/review/writeHold.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,GAIV,MAAM,MAAM,CAAC;AACd,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,GAGvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,EAC3B,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,6BAA6B,EAC7B,6BAA6B,EAC7B,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,EAC9B,yBAAyB,EACzB,0BAA0B,GAI3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAoFxD,2EAA2E;AAC3E,MAAM,OAAO,cAAe,SAAQ,KAAK;IAEvC,YAAqB,KAAqB;QACxC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QADC,UAAK,GAAL,KAAK,CAAgB;QADjC,SAAI,GAAG,gBAAgB,CAAC;IAGjC,CAAC;CACF;AAED,wEAAwE;AACxE,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAE5C,YAAqB,KAAc;QACjC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QADV,UAAK,GAAL,KAAK,CAAS;QAD1B,SAAI,GAAG,qBAAqB,CAAC;IAGtC,CAAC;CACF;AAED,qEAAqE;AACrE,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAE3C;QACE,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAFtD,SAAI,GAAG,oBAAoB,CAAC;IAGrC,CAAC;CACF;AAmBD,MAAM,cAAc,GAAG,MAAM,CAAC;AAC9B,wHAAwH;AACxH,MAAM,cAAc,GAAG,EAAE,GAAG,MAAM,CAAC;AAEnC,sJAAsJ;AACtJ,SAAS,aAAa,CAAC,MAAmC;IACxD,OAAO,CACL,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC;QAC7D,cAAc,CACf,CAAC;AACJ,CAAC;AAED,+HAA+H;AAC/H,KAAK,UAAU,WAAW,CACxB,MAAuB,EACvB,MAAmC;IAEnC,MAAM,KAAK,GAAG,MAAM,yBAAyB,CAC3C,MAAe,EACf,KAAK,EAAE,WAAW,EAAE,EAAE,CACpB,MAAM,CACJ,MAAM,MAAM,CAAC,mBAAmB,CAAC;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW;KACZ,CAAC,CACH,IAAI,MAAM,CAAC,MAAM,CAAC,SAAU,CAAC,CACjC,CAAC;IACF,OAAO,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;AAC/B,CAAC;AAED,yFAAyF;AACzF,SAAS,YAAY,CAAC,MAAmC;IACvD,OAAO;QACL,MAAM,EAAE,eAAe;QACvB,MAAM;QACN,IAAI,EAAE,MAAM,CAAC,IAAK;QAClB,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,6BAA6B;QACnC,OAAO,EAAE,2BAA2B;KACrC,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,SAAS,YAAY,CAAC,MAAmC;IACvD,OAAO;QACL,MAAM,EAAE,eAAe;QACvB,MAAM;QACN,IAAI,EAAE,MAAM,CAAC,IAAK;QAClB,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,6BAA6B;QACnC,OAAO,EAAE,2BAA2B;KACrC,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,MAAmC;IACpD,OAAO;QACL,MAAM,EAAE,gBAAgB;QACxB,MAAM;QACN,IAAI,EAAE,MAAM,CAAC,IAAK;QAClB,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,yBAAyB;QAC/B,OAAO,EAAE,2BAA2B;KACrC,CAAC;AACJ,CAAC;AACD,2DAA2D;AAC3D,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC,SAAS,WAAW,CAAC,IAAgC;IACnD,MAAM,KAAK,GACT,IAAI,CAAC,SAAS;QACd,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACtE,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,KAAK,CAAC,OAA0B;IACvC,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACtE,CAAC;AAED,SAAS,WAAW,CAClB,MAAmC,EACnC,aAAa,GAAG,MAAM,CAAC,aAAa,EACpC,MAAiB;IAEjB,OAAO;QACL,MAAM,EAAE,cAAc;QACtB,MAAM;QACN,IAAI,EAAE,KAAK;QACX,IAAI,EACF,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI;YACjC,CAAC,CAAC,wBAAwB;YAC1B,CAAC,CAAC,2BAA2B;QACjC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,MAAmC;IACtD,OAAO;QACL,MAAM,EAAE,oBAAoB;QAC5B,MAAM;QACN,IAAI,EAAE,MAAM,CAAC,IAAK;QAClB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,uBAAuB;KACrE,CAAC;AACJ,CAAC;AAED,kEAAkE;AAClE,SAAS,QAAQ,CAAC,MAA0C;IAC1D,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,EAAE,CAAC;IAC5B,IAAI,MAAM,CAAC,QAAQ;QAAE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,QAAQ;QAAE,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,MAAM,CAAC,QAAQ;QAAE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,CAAC,IAAI;QACd,OAAO;YACL,MAAM,EAAE,cAAc;YACtB,MAAM;YACN,IAAI,EAAE,IAAI;YACV,IAAI,EACF,MAAM,CAAC,IAAI;gBACX,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC;gBAC5D,CAAC,CAAC,gBAAgB,EAAE;gBACpB,CAAC,CAAC,yBAAyB;SAChC,CAAC;IACJ,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,eAAe,CAC7B,UAMI,EAAE;IAEN,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,sBAAsB,EAAE,CAAC;IAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,UAAU,IAAI,cAAc,CAAC;IAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,IAAI,oBAAoB,CAAC;IAClE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAgD,CAAC;IAC1E,MAAM,OAAO,GAAG,IAAI,GAAG,EAAgC,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyC,CAAC;IAChE,IAAI,SAAsD,CAAC;IAE3D,SAAS,IAAI,CAAC,GAAW,EAAE,KAAqB;QAC9C,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;YAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC;IAED,iFAAiF;IACjF,SAAS,SAAS;QAChB,IAAI,SAAS,IAAI,OAAO,UAAU,CAAC,gBAAgB,KAAK,UAAU;YAAE,OAAO;QAC3E,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE;YACpB,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,yBAAyB,CAAC;gBAAE,OAAO;YAC1E,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;gBAClC,IAAI,CAAC;oBACH,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpB,CAAC;gBAAC,MAAM,CAAC;oBACP,wDAAwD;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QACF,UAAU,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACpD,CAAC;IAED,SAAS,IAAI,CAAC,IAAgC;QAC5C,MAAM,QAAQ,GAAG,0BAA0B,CAAC,IAAI,EAAE;YAChD,OAAO;YACP,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9B,0EAA0E;QAC1E,IAAI,UAA+D,CAAC;QACpE,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,CAAC,KAAqB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QAEnE,KAAK,UAAU,MAAM,CACnB,IAAsB,EACtB,IAAa;YAEb,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC;gBACH,OAAO;oBACL,KAAK,EAAE,MAAM,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;wBACxC,OAAO,GAAG,IAAI,CAAC;wBACf,OAAO,IAAI,EAAE,CAAC;oBAChB,CAAC,EAAE,IAAI,CAAC;iBACT,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,OAAO;oBAAE,MAAM,KAAK,CAAC;gBACzB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,gGAAgG;QAChG,SAAS,OAAO,CAAC,MAAmC;YAClD,IAAI,CAAC;gBACH,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBACzD,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,SAAS,MAAM,CAAC,MAAuB,EAAE,EAAU,EAAE,IAAI,GAAG,QAAQ;YAClE,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC;gBAAE,OAAO;YACxC,MAAM,CAAC,GAAG,CACR,EAAE,EACF,UAAU,CAAC,GAAG,EAAE;gBACd,KAAK,KAAK,CAAC,MAAM,CAAC;qBACf,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;qBACjB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;oBACb,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAClB,IAAI,IAAI,EAAE,MAAM,KAAK,cAAc;wBAAE,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;gBACpE,CAAC,CAAC,CAAC;YACP,CAAC,EAAE,QAAQ,CAAC,CACb,CAAC;QACJ,CAAC;QAED,KAAK,UAAU,MAAM,CACnB,MAAmC,EACnC,OAA2B,EAC3B,MAAuB,EACvB,KAAwD;YAExD,MAAM,OAAO,GAAG,MAAM,0BAA0B,CAC9C,MAAe,EACf,MAAM,EACN,OAAO,EACP,KAAK,CACN,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;gBAC5B,OAAO,KAAK,CAAC;oBACX,MAAM,EAAE,OAAO;oBACf,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,WAAW,EAAS;iBACnD,CAAC,CAAC;YACL,IACE,CAAC,MAAM,CAAC,IAAI;gBACZ,OAAO,CAAC,MAAM,KAAK,UAAU;gBAC7B,OAAO,CAAC,eAAe,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,IAAI,EACrD,CAAC;gBACD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC1B,OAAO,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACpD,CAAC;YACD,4EAA4E;YAC5E,kDAAkD;YAClD,MAAM,GAAG,GACP,MAAM,CAAC,IAAI;gBACX,CAAC,MAAM,0BAA0B,CAC/B,MAAe,EACf,MAAM,EACN,OAAO,EACP,KAAK,EACL,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YACvB,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACrB,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC,WAAW,EAAS,CAAC;gBAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC9C,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;gBACzB,OAAO,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC5C,CAAC;YACD,IAAI,MAAM,CAAC,QAAQ;gBAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YAC/C,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;QAED,uEAAuE;QACvE,KAAK,UAAU,eAAe,CAC5B,MAAmC;YAEnC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CACxC,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,IAAK,EACZ,OAAO,CAAC,WAAW,CACpB,CAAC;gBACF,OAAO,sBAAsB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;YAChD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,wEAAwE;QACxE,KAAK,UAAU,SAAS,CACtB,MAAmC,EACnC,MAAuB;YAEvB,MAAM,OAAO,GAAG,MAAM,MAAM;iBACzB,qBAAqB,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,aAAc,EAAE,CAAC;iBACtD,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACrB,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1D,CAAC;QAED;;;;;WAKG;QACH,KAAK,UAAU,eAAe,CAC5B,MAAmC,EACnC,MAAuB;YAEvB,MAAM,IAAI,GACR,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;gBAC/C,CAAC,CAAC,MAAM,sBAAsB,CAC1B,MAAM,EACN,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CACzB;gBACH,CAAC,CAAC,IAAI,CAAC;YACX,+DAA+D;YAC/D,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;gBACnC,OAAO,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;YACxD,IACE,IAAI;gBACJ,CAAC,aAAa,CAAC,MAAM,CAAC;gBACtB,CAAC,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAK,EAAE,CAAC,CAAC,IAAI,CACxD,GAAG,EAAE,CAAC,KAAK,EACX,CAAC,KAAgC,EAAE,EAAE,CACnC,KAAK,EAAE,IAAI,KAAK,0BAA0B,CAC7C,CAAC;gBAEF,OAAO,IAAI,CAAC;YACd,4DAA4D;YAC5D,OAAO,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,KAAK,UAAU,SAAS,CACtB,KAAkC,EAClC,MAAuB;YAEvB,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ;gBAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;YACtD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS;gBAAE,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC1E,gEAAgE;YAChE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACrB,MAAM,MAAM,GAAG,MAAM,MAAM;qBACxB,qBAAqB,CAAC,EAAE,IAAI,EAAE,CAAC;qBAC/B,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBACrB,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;oBACrD,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO;wBAAE,OAAO,OAAO,CAAC;oBAC/C,2DAA2D;oBAC3D,kEAAkE;oBAClE,iDAAiD;oBACjD,IAAI,OAAO,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;wBACtC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;wBACxB,mEAAmE;wBACnE,MAAM,IAAI,GAAG,MAAM,MAAM;6BACtB,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC;6BACxB,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;wBACrB,IAAI,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;4BAC5D,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;wBAClE,OAAO,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;oBACnD,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAChD,IAAI,OAAO,EAAE,MAAM,KAAK,OAAO;oBAAE,OAAO,OAAO,CAAC;gBAChD,IAAI,MAAM,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;oBAClC,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBACzD,IAAI,UAAU;4BAAE,OAAO,UAAU,CAAC;oBACpC,CAAC;oBACD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC1B,OAAO,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;YACD,wEAAwE;YACxE,+CAA+C;YAC/C,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;gBAC5C,IAAI,KAAK,KAAK,IAAI;oBAAE,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,GAAG,GACP,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS;gBAC7B,CAAC,MAAM,qBAAqB,CAC1B,MAAM,EACN,MAAM,CAAC,OAAO,EACd,IAAI,EACJ,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CACzB,CAAC,CAAC;gBACL,CAAC,MAAM,qBAAqB,CAC1B,MAAe,EACf,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,OAAO,EACd,IAAI,EACJ,OAAO,CAAC,WAAW,CACpB,CAAC,CAAC;YACL,wEAAwE;YACxE,iFAAiF;YACjF,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU;gBACzB,OAAO,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;YACxD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAC/C,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAC7C,MAAM,EACN,MAAM,EACN,OAAO,CAAC,WAAW,CACpB,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;gBACrB,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;oBAAE,OAAO,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YACtE,CAAC;YACD,IACE,GAAG,CAAC,IAAI,KAAK,UAAU;gBACvB,CAAC,CAAC,MAAM,CAAC,QAAQ;oBACf,CAAC,GAAG,CAAC,SAAS;wBACZ,GAAG,CAAC,SAAS,CAAC,aAAa,KAAK,MAAM,CAAC,aAAa,CAAC,CAAC,EAC1D,CAAC;gBACD,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBACjE,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;oBAChD,IAAI,OAAO;wBAAE,OAAO,OAAO,CAAC;gBAC9B,CAAC;YACH,CAAC;YACD,IACE,CAAC,MAAM,CAAC,QAAQ;gBAChB,CAAC,MAAM,CAAC,QAAQ;gBAChB,MAAM,CAAC,SAAS,KAAK,SAAS;gBAC9B,aAAa,CAAC,MAAM,CAAC;gBAErB,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,MAAM,CAAC,QAAQ;gBAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YAC/C,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QAED,KAAK,UAAU,OAAO,CACpB,MAAuB,EACvB,MAA8C;YAE9C,IAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM;gBAAE,OAAO,KAAK,EAAE,CAAC;YAC5B,kCAAkC;YAClC,IAAI,CAAC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO;gBAClE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,MAAM,CAAC,IAAI;gBAAE,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,MAAM,QAAQ;iBACzB,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;iBAChD,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACrB,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM;gBAAE,OAAO,KAAK,EAAE,CAAC;YAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC7B,2DAA2D;gBAC3D,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;oBACjC,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC5C,MAAM,OAAO,GAAG,MAAM,MAAM;qBACzB,qBAAqB,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;qBAC3C,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBACrB,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzE,CAAC;YACD,uDAAuD;YACvD,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS;gBACjD,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACtC,oEAAoE;YACpE,IAAI,KAAK,EAAE,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM;gBAC7C,OAAO;oBACL,MAAM,EAAE,YAAY;oBACpB,MAAM;oBACN,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,0BAA0B;oBAChC,GAAG,CAAC,MAAM,CAAC,IAAI;wBACb,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,2BAA2B,EAAE;wBAC7D,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC;YACJ,IACE,MAAM,CAAC,IAAI;gBACX,MAAM,CAAC,SAAS,KAAK,SAAS;gBAC9B,KAAK,EAAE,MAAM,KAAK,SAAS;gBAC3B,KAAK,CAAC,MAAM;gBAEZ,OAAO;oBACL,MAAM,EAAE,gBAAgB;oBACxB,MAAM;oBACN,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,gBAAgB,EAAE;oBACxB,OAAO,EAAE,2BAA2B;iBACrC,CAAC;YACJ,gEAAgE;YAChE,IACE,MAAM,CAAC,IAAI;gBACX,MAAM,CAAC,SAAS,KAAK,SAAS;gBAC9B,KAAK,EAAE,MAAM,KAAK,SAAS;gBAC3B,CAAC,KAAK,CAAC,MAAM,EACb,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CACnE,GAAG,EAAE,CAAC,IAAI,EACV,CAAC,KAAgC,EAAE,EAAE,CACnC,KAAK,EAAE,IAAI,KAAK,0BAA0B,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAC5D,CAAC;gBACF,IAAI,KAAK,KAAK,IAAI;oBAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC/D,IACE,KAAK,KAAK,KAAK;oBACf,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,cAAc;oBACxD,CAAC,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;oBAEnC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;YACD,IACE,MAAM,CAAC,IAAI;gBACX,MAAM,CAAC,SAAS,KAAK,SAAS;gBAC9B,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS;oBACzB,MAAM,CAAC,SAAS,KAAK,SAAS;oBAC9B,aAAa,CAAC,MAAM,CAAC,CAAC;gBACxB,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CACtD,GAAG,EAAE,CAAC,KAAK,EACX,CAAC,KAAgC,EAAE,EAAE,CACnC,KAAK,EAAE,IAAI,KAAK,0BAA0B,CAC7C,CAAC;gBAEF,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;YAC3B,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QAED;;;WAGG;QACH,KAAK,UAAU,KAAK,CAClB,MAAuB,EACvB,SAA6D,EAAE;YAE/D,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;YACzE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO;YACL,KAAK;YACL,kEAAkE;YAClE,IAAI;YACJ,wFAAwF;YACxF,SAAS,CAAC,QAAyC;gBACjD,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,CAAC,GAAG;oBAAE,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;gBAChD,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACvB,SAAS,EAAE,CAAC;gBACZ,OAAO,GAAG,EAAE;oBACV,GAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACtB,IAAI,CAAC,GAAI,CAAC,IAAI,EAAE,CAAC;wBACf,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBACtB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACtB,CAAC;gBACH,CAAC,CAAC;YACJ,CAAC;YACD;;;;;;eAMG;YACH,KAAK,CAAC,IAAI,CACR,MAAuB,EACvB,GAAwC;gBAExC,IAAI,OAAgD,CAAC;gBACrD,MAAM,IAAI,GAAkB;oBAC1B,KAAK,CAAC,UAAU,CAAC,UAAU;wBACzB,IAAI,QAES,CAAC;wBACd,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;4BACf,kFAAkF;4BAClF,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;4BAChE,IAAI,CAAC;gCACH,QAAQ,GAAG,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BACtC,CAAC;4BAAC,OAAO,KAAK,EAAE,CAAC;gCACf,MAAM,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;4BACvC,CAAC;wBACH,CAAC;wBACD,IAAI,CAAC;4BACH,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;wBACnD,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,MAAM,GAAG,GAAG,IAAI,EAAE,CAAC;4BACnB,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO;gCAAE,MAAM,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;4BAC1D,MAAM,KAAK,CAAC;wBACd,CAAC;wBACD,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;oBAChB,CAAC;oBACD,WAAW,CAAC,IAAI,EAAE,QAAQ;wBACxB,IAAI,CAAC,OAAO;4BACV,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;wBAC7D,IAAI,CAAC;4BACH,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;wBAC9C,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,IAAI,CAAC,CAAC,KAAK,YAAY,8BAA8B,CAAC;gCACpD,MAAM,KAAK,CAAC;4BACd,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;wBACzB,CAAC;wBACD,mEAAmE;wBACnE,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ;4BACvB,IAAI,CAAC;gCACH,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;gCAChE,OAAO,GAAG,QAAQ,CAAC,aAAa,CAC9B,OAAO,EACP,sBAAsB,CAAC,QAAQ,CAAC,CAAC,KAAK,CACvC,CAAC;4BACJ,CAAC;4BAAC,MAAM,CAAC;gCACP,oDAAoD;4BACtD,CAAC;wBACH,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC3B,CAAC;oBACD,UAAU;wBACR,QAAQ,CAAC,QAAQ,EAAE,CAAC;wBACpB,OAAO,GAAG,SAAS,CAAC;wBACpB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;oBAChB,CAAC;iBACF,CAAC;gBACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,IAAI,EAAE;oBACrC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;oBACzC,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO;wBAAE,MAAM,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;oBAC1D,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,kBAAkB,EAAE,CAAC;gBAC5C,OAAO,MAAM,CAAC,KAAK,CAAC;YACtB,CAAC;YACD;;;;;eAKG;YACH,KAAK,CAAC,IAAI,CACR,QAAwB,EACxB,eAAwC,EACxC,MAAuB;gBAEvB,IAAI,eAAe,EAAE,aAAa,KAAK,IAAI;oBACzC,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;gBACJ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,IAAI,EAAE;oBACrC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;oBAC9C,IACE,QAAQ,CAAC,MAAM,KAAK,OAAO;wBAC3B,GAAG,CAAC,MAAM,KAAK,OAAO;wBACtB,CAAC,GAAG,CAAC,IAAI;wBACT,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;wBAC9B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;wBAE9D,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;oBACzC,IAAI,CAAC;wBACH,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC7D,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;oBAC5C,CAAC;oBACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC5C,CAAC,EAAE,IAAI,CAAC,CAAC;gBACT,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;gBAClE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACnB,OAAO,KAAK,CAAC;YACf,CAAC;YACD;;;;eAIG;YACH,KAAK,CAAC,SAAS,CACb,OAA2B,EAC3B,MAAuB,EACvB,KAAwD;gBAExD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,IAAI,EAAE;oBACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAC/B,IACE,CAAC,MAAM;wBACP,CAAC,CAAC,MAAM,CAAC,IAAI;4BACX,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC;wBAE1D,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC1B,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;gBAChD,CAAC,EAAE,IAAI,CAAC,CAAC;gBACT,OAAO,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC;YACxC,CAAC;YACD;;;;;eAKG;YACH,KAAK,CAAC,UAAU,CACd,MAAuB,EACvB,YAAkB;gBAElB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,IAAI,EAAE;oBACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAC/B,IACE,MAAM,EAAE,IAAI;wBACZ,MAAM,CAAC,IAAI;wBACX,CAAC,YAAY,KAAK,SAAS;4BACzB,YAAY,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC;wBAE7C,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;gBACzB,CAAC,EAAE,IAAI,CAAC,CAAC;gBACT,OAAO,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC;YACxC,CAAC;YACD;;;eAGG;YACH,KAAK,CAAC,UAAU,CACd,MAAuB,EACvB,aAAmB;gBAEnB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,IAAI,EAAE;oBACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAC/B,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI;wBAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC3D,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;oBACzC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;gBACzB,CAAC,EAAE,IAAI,CAAC,CAAC;gBACT,OAAO,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC;YACxC,CAAC;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI;QACJ,gDAAgD;QAChD,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;QAChC,oEAAoE;QACpE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC;QACrE,qEAAqE;QACrE,OAAO;YACL,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YACzD,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,SAAS;gBAAE,UAAU,CAAC,mBAAmB,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACtE,SAAS,GAAG,SAAS,CAAC;QACxB,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"writeHold.js","sourceRoot":"","sources":["../../../src/review/writeHold.ts"],"names":[],"mappings":"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"}