@ibgib/vcs-gib 0.0.6 → 0.0.18

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.
Files changed (185) hide show
  1. package/README.md +24 -2
  2. package/VCS_CLI_USER_GUIDE.md +2 -2
  3. package/dist/AUTO-GENERATED-version.d.mts +1 -1
  4. package/dist/AUTO-GENERATED-version.d.mts.map +1 -1
  5. package/dist/AUTO-GENERATED-version.mjs +1 -1
  6. package/dist/AUTO-GENERATED-version.mjs.map +1 -1
  7. package/dist/bootstrap/node-bootstrap.d.mts.map +1 -1
  8. package/dist/bootstrap/node-bootstrap.mjs +9 -0
  9. package/dist/bootstrap/node-bootstrap.mjs.map +1 -1
  10. package/dist/bootstrap/{node-bootstrap.respec.node.d.mts → node-bootstrap.respec.d.mts} +1 -1
  11. package/dist/bootstrap/node-bootstrap.respec.d.mts.map +1 -0
  12. package/dist/bootstrap/{node-bootstrap.respec.node.mjs → node-bootstrap.respec.mjs} +1 -1
  13. package/dist/bootstrap/node-bootstrap.respec.mjs.map +1 -0
  14. package/dist/cli/cli-arg-parser.d.mts +3 -0
  15. package/dist/cli/cli-arg-parser.d.mts.map +1 -1
  16. package/dist/cli/cli-arg-parser.mjs +13 -1
  17. package/dist/cli/cli-arg-parser.mjs.map +1 -1
  18. package/dist/cli/{cli-arg-parser.respec.node.d.mts → cli-arg-parser.respec.d.mts} +1 -1
  19. package/dist/cli/cli-arg-parser.respec.d.mts.map +1 -0
  20. package/dist/cli/{cli-arg-parser.respec.node.mjs → cli-arg-parser.respec.mjs} +1 -1
  21. package/dist/cli/cli-arg-parser.respec.mjs.map +1 -0
  22. package/dist/cli/cli-constants.d.mts +6 -0
  23. package/dist/cli/cli-constants.d.mts.map +1 -1
  24. package/dist/cli/cli-constants.mjs +24 -0
  25. package/dist/cli/cli-constants.mjs.map +1 -1
  26. package/dist/cli/{cli-e2e.respec.node.d.mts → cli-e2e.respec.d.mts} +1 -1
  27. package/dist/cli/cli-e2e.respec.d.mts.map +1 -0
  28. package/dist/cli/{cli-e2e.respec.node.mjs → cli-e2e.respec.mjs} +2 -2
  29. package/dist/cli/cli-e2e.respec.mjs.map +1 -0
  30. package/dist/cli/commands/add-cmd.d.mts.map +1 -1
  31. package/dist/cli/commands/add-cmd.mjs +35 -30
  32. package/dist/cli/commands/add-cmd.mjs.map +1 -1
  33. package/dist/cli/commands/{branch-checkout-cmd.respec.node.d.mts → branch-checkout-cmd.respec.d.mts} +1 -1
  34. package/dist/cli/commands/branch-checkout-cmd.respec.d.mts.map +1 -0
  35. package/dist/cli/commands/{branch-checkout-cmd.respec.node.mjs → branch-checkout-cmd.respec.mjs} +172 -8
  36. package/dist/cli/commands/branch-checkout-cmd.respec.mjs.map +1 -0
  37. package/dist/cli/commands/branch-cmd.d.mts +2 -1
  38. package/dist/cli/commands/branch-cmd.d.mts.map +1 -1
  39. package/dist/cli/commands/branch-cmd.mjs +59 -8
  40. package/dist/cli/commands/branch-cmd.mjs.map +1 -1
  41. package/dist/cli/commands/checkout-cmd.d.mts.map +1 -1
  42. package/dist/cli/commands/checkout-cmd.mjs +38 -18
  43. package/dist/cli/commands/checkout-cmd.mjs.map +1 -1
  44. package/dist/cli/commands/commit-cmd.d.mts.map +1 -1
  45. package/dist/cli/commands/commit-cmd.mjs +26 -23
  46. package/dist/cli/commands/commit-cmd.mjs.map +1 -1
  47. package/dist/cli/commands/{commit-log-cmd.respec.node.d.mts → commit-log-cmd.respec.d.mts} +1 -1
  48. package/dist/cli/commands/commit-log-cmd.respec.d.mts.map +1 -0
  49. package/dist/cli/commands/{commit-log-cmd.respec.node.mjs → commit-log-cmd.respec.mjs} +1 -1
  50. package/dist/cli/commands/commit-log-cmd.respec.mjs.map +1 -0
  51. package/dist/cli/commands/{init-cmd.respec.node.d.mts → init-cmd.respec.d.mts} +1 -1
  52. package/dist/cli/commands/init-cmd.respec.d.mts.map +1 -0
  53. package/dist/cli/commands/{init-cmd.respec.node.mjs → init-cmd.respec.mjs} +1 -1
  54. package/dist/cli/commands/init-cmd.respec.mjs.map +1 -0
  55. package/dist/cli/commands/merge-cmd.d.mts +23 -0
  56. package/dist/cli/commands/merge-cmd.d.mts.map +1 -0
  57. package/dist/cli/commands/merge-cmd.mjs +224 -0
  58. package/dist/cli/commands/merge-cmd.mjs.map +1 -0
  59. package/dist/cli/commands/reset-cmd.d.mts +21 -0
  60. package/dist/cli/commands/reset-cmd.d.mts.map +1 -0
  61. package/dist/cli/commands/reset-cmd.mjs +93 -0
  62. package/dist/cli/commands/reset-cmd.mjs.map +1 -0
  63. package/dist/cli/commands/reset-restore-cmd.respec.d.mts +7 -0
  64. package/dist/cli/commands/reset-restore-cmd.respec.d.mts.map +1 -0
  65. package/dist/cli/commands/reset-restore-cmd.respec.mjs +185 -0
  66. package/dist/cli/commands/reset-restore-cmd.respec.mjs.map +1 -0
  67. package/dist/cli/commands/restore-cmd.d.mts +22 -0
  68. package/dist/cli/commands/restore-cmd.d.mts.map +1 -0
  69. package/dist/cli/commands/restore-cmd.mjs +115 -0
  70. package/dist/cli/commands/restore-cmd.mjs.map +1 -0
  71. package/dist/cli/commands/{status-add-cmd.respec.node.d.mts → status-add-cmd.respec.d.mts} +1 -1
  72. package/dist/cli/commands/status-add-cmd.respec.d.mts.map +1 -0
  73. package/dist/cli/commands/{status-add-cmd.respec.node.mjs → status-add-cmd.respec.mjs} +25 -1
  74. package/dist/cli/commands/status-add-cmd.respec.mjs.map +1 -0
  75. package/dist/cli/vcs-cli-main.d.mts.map +1 -1
  76. package/dist/cli/vcs-cli-main.mjs +36 -3
  77. package/dist/cli/vcs-cli-main.mjs.map +1 -1
  78. package/dist/engine/branch/branch-graph-helper.d.mts +12 -3
  79. package/dist/engine/branch/branch-graph-helper.d.mts.map +1 -1
  80. package/dist/engine/branch/branch-graph-helper.mjs +50 -18
  81. package/dist/engine/branch/branch-graph-helper.mjs.map +1 -1
  82. package/dist/engine/branch/branch-space-helper.d.mts +1 -0
  83. package/dist/engine/branch/branch-space-helper.d.mts.map +1 -1
  84. package/dist/engine/branch/branch-space-helper.mjs +1 -0
  85. package/dist/engine/branch/branch-space-helper.mjs.map +1 -1
  86. package/dist/engine/branch/{branch-space.respec.node.d.mts → branch-space.respec.d.mts} +1 -1
  87. package/dist/engine/branch/branch-space.respec.d.mts.map +1 -0
  88. package/dist/engine/branch/{branch-space.respec.node.mjs → branch-space.respec.mjs} +12 -7
  89. package/dist/engine/branch/branch-space.respec.mjs.map +1 -0
  90. package/dist/engine/diff/{line-diff-helper.respec.node.d.mts → line-diff-helper.respec.d.mts} +1 -1
  91. package/dist/engine/diff/line-diff-helper.respec.d.mts.map +1 -0
  92. package/dist/engine/diff/{line-diff-helper.respec.node.mjs → line-diff-helper.respec.mjs} +1 -1
  93. package/dist/engine/diff/line-diff-helper.respec.mjs.map +1 -0
  94. package/dist/engine/filter/{glob-helper.respec.node.d.mts → glob-helper.respec.d.mts} +1 -1
  95. package/dist/engine/filter/glob-helper.respec.d.mts.map +1 -0
  96. package/dist/engine/filter/{glob-helper.respec.node.mjs → glob-helper.respec.mjs} +1 -1
  97. package/dist/engine/filter/glob-helper.respec.mjs.map +1 -0
  98. package/dist/engine/index/index-helper.d.mts +35 -0
  99. package/dist/engine/index/index-helper.d.mts.map +1 -1
  100. package/dist/engine/index/index-helper.mjs +241 -0
  101. package/dist/engine/index/index-helper.mjs.map +1 -1
  102. package/dist/engine/item/item-helper.d.mts +29 -3
  103. package/dist/engine/item/item-helper.d.mts.map +1 -1
  104. package/dist/engine/item/item-helper.mjs +234 -56
  105. package/dist/engine/item/item-helper.mjs.map +1 -1
  106. package/dist/engine/item/item.respec.d.mts +7 -0
  107. package/dist/engine/item/item.respec.d.mts.map +1 -0
  108. package/dist/engine/item/item.respec.mjs +75 -0
  109. package/dist/engine/item/item.respec.mjs.map +1 -0
  110. package/dist/engine/merge/b2tfs-3way-merge-strategy.d.mts +38 -0
  111. package/dist/engine/merge/b2tfs-3way-merge-strategy.d.mts.map +1 -0
  112. package/dist/engine/merge/b2tfs-3way-merge-strategy.mjs +593 -0
  113. package/dist/engine/merge/b2tfs-3way-merge-strategy.mjs.map +1 -0
  114. package/dist/engine/merge/b2tfs-merge-strategy.respec.d.mts +7 -0
  115. package/dist/engine/merge/b2tfs-merge-strategy.respec.d.mts.map +1 -0
  116. package/dist/engine/merge/b2tfs-merge-strategy.respec.mjs +335 -0
  117. package/dist/engine/merge/b2tfs-merge-strategy.respec.mjs.map +1 -0
  118. package/dist/respec-gib.node.mjs +1 -1
  119. package/dist/respec-gib.node.mjs.map +1 -1
  120. package/dist/{vcs-gib.respec.node.d.mts → vcs-gib.respec.d.mts} +1 -1
  121. package/dist/vcs-gib.respec.d.mts.map +1 -0
  122. package/dist/{vcs-gib.respec.node.mjs → vcs-gib.respec.mjs} +1 -1
  123. package/dist/vcs-gib.respec.mjs.map +1 -0
  124. package/package.json +3 -3
  125. package/src/AUTO-GENERATED-version.mts +1 -1
  126. package/src/bootstrap/node-bootstrap.mts +6 -0
  127. package/src/cli/cli-arg-parser.mts +15 -0
  128. package/src/cli/cli-constants.mts +27 -0
  129. package/src/cli/{cli-e2e.respec.node.mts → cli-e2e.respec.mts} +2 -2
  130. package/src/cli/commands/add-cmd.mts +41 -29
  131. package/src/cli/commands/{branch-checkout-cmd.respec.node.mts → branch-checkout-cmd.respec.mts} +190 -8
  132. package/src/cli/commands/branch-cmd.mts +78 -8
  133. package/src/cli/commands/checkout-cmd.mts +48 -23
  134. package/src/cli/commands/commit-cmd.mts +35 -26
  135. package/src/cli/commands/merge-cmd.mts +289 -0
  136. package/src/cli/commands/reset-cmd.mts +128 -0
  137. package/src/cli/commands/reset-restore-cmd.respec.mts +222 -0
  138. package/src/cli/commands/restore-cmd.mts +155 -0
  139. package/src/cli/commands/{status-add-cmd.respec.node.mts → status-add-cmd.respec.mts} +27 -0
  140. package/src/cli/vcs-cli-main.mts +36 -3
  141. package/src/engine/branch/branch-graph-helper.mts +66 -18
  142. package/src/engine/branch/branch-space-helper.mts +6 -0
  143. package/src/engine/branch/{branch-space.respec.node.mts → branch-space.respec.mts} +12 -6
  144. package/src/engine/index/index-helper.mts +324 -0
  145. package/src/engine/item/item-helper.mts +284 -58
  146. package/src/engine/item/item.respec.mts +92 -0
  147. package/src/engine/merge/b2tfs-3way-merge-strategy.mts +725 -0
  148. package/src/engine/merge/b2tfs-merge-strategy.respec.mts +438 -0
  149. package/src/respec-gib.node.mts +2 -2
  150. package/tsconfig.tsbuildinfo +1 -1
  151. package/dist/bootstrap/node-bootstrap.respec.node.d.mts.map +0 -1
  152. package/dist/bootstrap/node-bootstrap.respec.node.mjs.map +0 -1
  153. package/dist/cli/cli-arg-parser.respec.node.d.mts.map +0 -1
  154. package/dist/cli/cli-arg-parser.respec.node.mjs.map +0 -1
  155. package/dist/cli/cli-e2e.respec.node.d.mts.map +0 -1
  156. package/dist/cli/cli-e2e.respec.node.mjs.map +0 -1
  157. package/dist/cli/commands/branch-checkout-cmd.respec.node.d.mts.map +0 -1
  158. package/dist/cli/commands/branch-checkout-cmd.respec.node.mjs.map +0 -1
  159. package/dist/cli/commands/commit-log-cmd.respec.node.d.mts.map +0 -1
  160. package/dist/cli/commands/commit-log-cmd.respec.node.mjs.map +0 -1
  161. package/dist/cli/commands/init-cmd.respec.node.d.mts.map +0 -1
  162. package/dist/cli/commands/init-cmd.respec.node.mjs.map +0 -1
  163. package/dist/cli/commands/status-add-cmd.respec.node.d.mts.map +0 -1
  164. package/dist/cli/commands/status-add-cmd.respec.node.mjs.map +0 -1
  165. package/dist/engine/branch/branch-space.respec.node.d.mts.map +0 -1
  166. package/dist/engine/branch/branch-space.respec.node.mjs.map +0 -1
  167. package/dist/engine/diff/line-diff-helper.respec.node.d.mts.map +0 -1
  168. package/dist/engine/diff/line-diff-helper.respec.node.mjs.map +0 -1
  169. package/dist/engine/filter/glob-helper.respec.node.d.mts.map +0 -1
  170. package/dist/engine/filter/glob-helper.respec.node.mjs.map +0 -1
  171. package/dist/vcs-gib.respec.node.d.mts.map +0 -1
  172. package/dist/vcs-gib.respec.node.mjs.map +0 -1
  173. package/test_runs/001-hello-node/20260728_090100_0001-flow-core-main.md +0 -39
  174. package/test_runs/001-hello-node/20260728_090200_0003-flow-branching-worktree.md +0 -54
  175. package/test_runs/001-hello-node/20260728_090300_0002-flow-selective-add.md +0 -45
  176. package/test_runs/001-hello-node/20260728_142100_0007-flow-edge-cases.md +0 -44
  177. package/test_runs/001-hello-node/20260728_142400_0005-flow-hardcoded-ignores.md +0 -36
  178. package/tools/pack-for-test.mjs +0 -73
  179. /package/src/bootstrap/{node-bootstrap.respec.node.mts → node-bootstrap.respec.mts} +0 -0
  180. /package/src/cli/{cli-arg-parser.respec.node.mts → cli-arg-parser.respec.mts} +0 -0
  181. /package/src/cli/commands/{commit-log-cmd.respec.node.mts → commit-log-cmd.respec.mts} +0 -0
  182. /package/src/cli/commands/{init-cmd.respec.node.mts → init-cmd.respec.mts} +0 -0
  183. /package/src/engine/diff/{line-diff-helper.respec.node.mts → line-diff-helper.respec.mts} +0 -0
  184. /package/src/engine/filter/{glob-helper.respec.node.mts → glob-helper.respec.mts} +0 -0
  185. /package/src/{vcs-gib.respec.node.mts → vcs-gib.respec.mts} +0 -0
@@ -0,0 +1,593 @@
1
+ /**
2
+ * @module b2tfs-3way-merge-strategy
3
+ *
4
+ * Extensible Graft Merge Strategy for 3-way B2tFS filesystem snapshot trees and text files.
5
+ */
6
+ import { extractErrorMsg, hash } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
7
+ import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
8
+ import { getGib } from '@ibgib/ts-gib/dist/V1/transforms/transform-helper.mjs';
9
+ import { rel8 } from '@ibgib/ts-gib/dist/V1/transforms/rel8.mjs';
10
+ import { GraftMergeStrategyBase_V1 } from '@ibgib/core-gib/dist/sync/graft-info/graft-merge-strategy-base-v1.mjs';
11
+ import { getFromSpace, persistTransformResult, registerNewIbGib, putInSpace } from '@ibgib/core-gib/dist/witness/space/space-helper.mjs';
12
+ import { getBinIb, getIbGibsFromCache_fallbackToSpaces, getTimelinesGroupedByTjp, splitPerTjpAndOrDna } from '@ibgib/core-gib/dist/common/other/ibgib-helper.mjs';
13
+ import { applyTransforms, getUniqueDnas } from '@ibgib/core-gib/dist/witness/space/reconciliation-space/reconciliation-space-helper.mjs';
14
+ import { createGraftInfo } from '@ibgib/core-gib/dist/sync/graft-info/graft-info-helpers.mjs';
15
+ import { GRAFT_INFO_REL8N_NAME } from '@ibgib/core-gib/dist/sync/graft-info/graft-info-constants.mjs';
16
+ import { SyncConflictStrategy } from '@ibgib/core-gib/dist/sync/sync-constants.mjs';
17
+ import { GLOBAL_LOG_A_LOT } from '../../vcs-gib-constants.mjs';
18
+ import { isBinaryBuffer, decodeToLines, computeLineLcsDiff } from '../diff/line-diff-helper.mjs';
19
+ import { B2TFS_CHILD_ITEM_REL8N_NAME, BINARY_REL8N_NAME } from '../item/item-types.mjs';
20
+ import { evolveB2tFSItemIbGib } from '../item/item-helper.mjs';
21
+ const lcFile = `[b2tfs-3way-merge-strategy]`;
22
+ const logalot = GLOBAL_LOG_A_LOT;
23
+ /**
24
+ * Performs 3-way line diff merging across LCA, Base, and Orphan text lines.
25
+ * Inserts Git conflict markers (`<<<<<<< HEAD`, `=======`, `>>>>>>>`) when overlapping
26
+ * line changes conflict.
27
+ */
28
+ export function perform3WayTextLineMerge({ textLCA, textBase, textOrphan, }) {
29
+ console.log(`[DEBUG 3WAY] textLCA: ${JSON.stringify(textLCA)}`);
30
+ console.log(`[DEBUG 3WAY] textBase: ${JSON.stringify(textBase)}`);
31
+ console.log(`[DEBUG 3WAY] textOrphan: ${JSON.stringify(textOrphan)}`);
32
+ if (textBase === textOrphan) {
33
+ return { mergedText: textBase, hasConflict: false };
34
+ }
35
+ if (textBase === textLCA) {
36
+ return { mergedText: textOrphan, hasConflict: false };
37
+ }
38
+ if (textOrphan === textLCA) {
39
+ return { mergedText: textBase, hasConflict: false };
40
+ }
41
+ const linesLCA = textLCA.split(/\r?\n/);
42
+ const linesBase = textBase.split(/\r?\n/);
43
+ const linesOrphan = textOrphan.split(/\r?\n/);
44
+ const chunksBase = computeLineLcsDiff(linesLCA, linesBase);
45
+ const chunksOrphan = computeLineLcsDiff(linesLCA, linesOrphan);
46
+ if (chunksBase.length === 0) {
47
+ return { mergedText: textOrphan, hasConflict: false };
48
+ }
49
+ if (chunksOrphan.length === 0) {
50
+ return { mergedText: textBase, hasConflict: false };
51
+ }
52
+ let hasConflict = false;
53
+ const outputLines = [];
54
+ let lcaIdx = 0;
55
+ let baseChunkIdx = 0;
56
+ let orphanChunkIdx = 0;
57
+ while (lcaIdx < linesLCA.length || baseChunkIdx < chunksBase.length || orphanChunkIdx < chunksOrphan.length) {
58
+ const nextBaseChunk = chunksBase[baseChunkIdx];
59
+ const nextOrphanChunk = chunksOrphan[orphanChunkIdx];
60
+ const baseAtLca = nextBaseChunk && nextBaseChunk.old_i === lcaIdx;
61
+ const orphanAtLca = nextOrphanChunk && nextOrphanChunk.old_i === lcaIdx;
62
+ if (baseAtLca && orphanAtLca) {
63
+ const bLines = nextBaseChunk.newLines;
64
+ const oLines = nextOrphanChunk.newLines;
65
+ const bOldLen = nextBaseChunk.oldLines.length;
66
+ const oOldLen = nextOrphanChunk.oldLines.length;
67
+ if (bLines.join('\n') === oLines.join('\n') && bOldLen === oOldLen) {
68
+ outputLines.push(...bLines);
69
+ }
70
+ else {
71
+ hasConflict = true;
72
+ outputLines.push('<<<<<<< HEAD');
73
+ outputLines.push(...bLines);
74
+ outputLines.push('=======');
75
+ outputLines.push(...oLines);
76
+ outputLines.push('>>>>>>>');
77
+ }
78
+ const consumedLca = Math.max(bOldLen, oOldLen, 1);
79
+ lcaIdx += consumedLca;
80
+ baseChunkIdx++;
81
+ orphanChunkIdx++;
82
+ }
83
+ else if (baseAtLca) {
84
+ outputLines.push(...nextBaseChunk.newLines);
85
+ const consumedLca = Math.max(nextBaseChunk.oldLines.length, 1);
86
+ lcaIdx += consumedLca;
87
+ baseChunkIdx++;
88
+ }
89
+ else if (orphanAtLca) {
90
+ outputLines.push(...nextOrphanChunk.newLines);
91
+ const consumedLca = Math.max(nextOrphanChunk.oldLines.length, 1);
92
+ lcaIdx += consumedLca;
93
+ orphanChunkIdx++;
94
+ }
95
+ else {
96
+ if (lcaIdx < linesLCA.length) {
97
+ outputLines.push(linesLCA[lcaIdx]);
98
+ lcaIdx++;
99
+ }
100
+ else {
101
+ if (nextBaseChunk && baseChunkIdx < chunksBase.length) {
102
+ outputLines.push(...nextBaseChunk.newLines);
103
+ baseChunkIdx++;
104
+ }
105
+ if (nextOrphanChunk && orphanChunkIdx < chunksOrphan.length) {
106
+ outputLines.push(...nextOrphanChunk.newLines);
107
+ orphanChunkIdx++;
108
+ }
109
+ }
110
+ }
111
+ }
112
+ return {
113
+ mergedText: outputLines.join('\n'),
114
+ hasConflict,
115
+ };
116
+ }
117
+ export class B2tFS3WayGraftStrategy extends GraftMergeStrategyBase_V1 {
118
+ strategyId = 'B2tFS3WayGraftStrategy';
119
+ lc = '[B2tFS3WayGraftStrategy]';
120
+ isB2tFSNode(ibGib) {
121
+ if (!ibGib || !ibGib.ib) {
122
+ return false;
123
+ }
124
+ return ibGib.ib.startsWith('b2tfs_item') ||
125
+ ibGib.ib.startsWith('b2tfs_branch') ||
126
+ ibGib.data?.classname === 'B2tFSItemIbGib_V1' ||
127
+ ibGib.data?.classname === 'B2tFSBranchIbGib_V1';
128
+ }
129
+ async canGraft(context) {
130
+ const lc = `${this.lc}[${this.canGraft.name}]`;
131
+ try {
132
+ const { conflictStrategy, timelineAddrsA, timelineAddrsB, ibGibReadCache, space } = context;
133
+ if (conflictStrategy === SyncConflictStrategy.optimisticWithLCS || conflictStrategy === 'b2tfs3WayMerge') {
134
+ return true;
135
+ }
136
+ const tipAddrA = timelineAddrsA.at(-1);
137
+ const tipAddrB = timelineAddrsB.at(-1);
138
+ if (!tipAddrA || !tipAddrB) {
139
+ return false;
140
+ }
141
+ const [tipA, tipB] = await getIbGibsFromCache_fallbackToSpaces({
142
+ addrs: [tipAddrA, tipAddrB],
143
+ readCache_graph: ibGibReadCache,
144
+ space,
145
+ });
146
+ return this.isB2tFSNode(tipA) || this.isB2tFSNode(tipB);
147
+ }
148
+ catch (error) {
149
+ console.error(`${lc} ${extractErrorMsg(error)} (E: 8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e)`);
150
+ return false;
151
+ }
152
+ }
153
+ async graft(context) {
154
+ const lc = `${lcFile}[${this.strategyId}][${this.graft.name}]`;
155
+ try {
156
+ if (logalot) {
157
+ console.log(`${lc} starting 3-way B2tFS snapshot graft... (I: 91a82b3c4d5e6f7a8b9c0d1e2f3a4b5c)`);
158
+ }
159
+ const { conflictStrategy, timelineAddrsA, timelineAddrsB, latestCommonFrameAddr, ibGibReadCache, space, graftPreference, } = context;
160
+ // 1. Fetch branch slices since LCA (timeline A = Sender, timeline B = Receiver)
161
+ const indexLCA_A = timelineAddrsA.lastIndexOf(latestCommonFrameAddr);
162
+ const addrsA_sinceLCA = timelineAddrsA.slice(indexLCA_A + 1);
163
+ const branchA_sender_sinceLCA = await getIbGibsFromCache_fallbackToSpaces({
164
+ readCache_graph: ibGibReadCache,
165
+ addrs: addrsA_sinceLCA,
166
+ space,
167
+ });
168
+ const tipA_sender = branchA_sender_sinceLCA.at(-1);
169
+ const indexLCA_B = timelineAddrsB.lastIndexOf(latestCommonFrameAddr);
170
+ const addrsB_sinceLCA = timelineAddrsB.slice(indexLCA_B + 1);
171
+ const branchB_receiver_sinceLCA = await getIbGibsFromCache_fallbackToSpaces({
172
+ readCache_graph: ibGibReadCache,
173
+ addrs: addrsB_sinceLCA,
174
+ space,
175
+ });
176
+ const tipB_receiver = branchB_receiver_sinceLCA.at(-1);
177
+ // 2. Base & Orphan tip determination (directional preference) via DRY base helper
178
+ const { baseTip, baseBranch, orphanTip, orphanBranch, } = this.resolveBaseAndOrphan({
179
+ graftPreference,
180
+ tipA_sender,
181
+ branchA_sender_sinceLCA,
182
+ tipB_receiver,
183
+ branchB_receiver_sinceLCA,
184
+ });
185
+ const baseTipAddr = getIbGibAddr({ ibGib: baseTip });
186
+ const baseBranchAddrs = baseBranch.map(x => getIbGibAddr({ ibGib: x }));
187
+ const orphanTipAddr = getIbGibAddr({ ibGib: orphanTip });
188
+ const orphanBranchAddrs = orphanBranch.map(x => getIbGibAddr({ ibGib: x }));
189
+ // 3. Replay orphan branch transforms onto base tip
190
+ const [latestCommonFrameIbGib] = await getIbGibsFromCache_fallbackToSpaces({
191
+ addrs: [latestCommonFrameAddr],
192
+ space,
193
+ });
194
+ const dnaAddrsAlreadyAccountedFor = (latestCommonFrameIbGib?.rel8ns?.dna ?? []).concat();
195
+ const dnaAddrsToApply = [];
196
+ for (const orphanFrame of orphanBranch) {
197
+ const orphanDnaAddrsToApply = getUniqueDnas({
198
+ base: dnaAddrsAlreadyAccountedFor,
199
+ extended: orphanFrame.rel8ns?.dna ?? [],
200
+ throwIfExtendedDoesntContainBase: true,
201
+ });
202
+ orphanDnaAddrsToApply.forEach(x => dnaAddrsAlreadyAccountedFor.push(x));
203
+ orphanDnaAddrsToApply.forEach(x => dnaAddrsToApply.push(x));
204
+ }
205
+ const dnaIbGibsToApply = await getIbGibsFromCache_fallbackToSpaces({
206
+ addrs: dnaAddrsToApply,
207
+ readCache_graph: ibGibReadCache,
208
+ space,
209
+ });
210
+ const createdIbGibs_Running = [];
211
+ const newGraftedIntermediateIbGibs_ordered = [];
212
+ const newGraftDnaIbGibs = [];
213
+ let currentGraftTip = await applyTransforms({
214
+ src: baseTip,
215
+ dnaAddrsToApplyToStoreVersion_MUTATES_IN_PLACE: dnaAddrsToApply.concat(),
216
+ allLocalIbGibs: dnaIbGibsToApply,
217
+ createdIbGibs_Running,
218
+ });
219
+ if (space && createdIbGibs_Running.length > 0) {
220
+ await putInSpace({ space, ibGibs: createdIbGibs_Running });
221
+ const { mapWithTjp_YesDna: newGraftedIbGibsMap } = splitPerTjpAndOrDna({ ibGibs: createdIbGibs_Running });
222
+ const newGraftedIbGibs_orderNotGuaranteed = Object.values(newGraftedIbGibsMap);
223
+ const newGraftedIbGibsByTjp = getTimelinesGroupedByTjp({ ibGibs: newGraftedIbGibs_orderNotGuaranteed });
224
+ if (Object.keys(newGraftedIbGibsByTjp).length > 0) {
225
+ Object.values(newGraftedIbGibsByTjp)[0].forEach(x => newGraftedIntermediateIbGibs_ordered.push(x));
226
+ for (const item of newGraftedIntermediateIbGibs_ordered) {
227
+ await registerNewIbGib({ ibGib: item, space });
228
+ }
229
+ }
230
+ }
231
+ // 4. Perform 3-way filesystem tree merge across lcaItem, baseItem, orphanItem
232
+ const lcaNode = await this.fetchIbGib({ addr: latestCommonFrameAddr, space, readCache_graph: ibGibReadCache });
233
+ const lcaItem = await this.resolveRootItemNode({ nodeOrAddr: lcaNode, space, readCache_graph: ibGibReadCache });
234
+ const baseItem = await this.resolveRootItemNode({ nodeOrAddr: baseTip, space, readCache_graph: ibGibReadCache });
235
+ const orphanItem = await this.resolveRootItemNode({ nodeOrAddr: orphanTip, space, readCache_graph: ibGibReadCache });
236
+ let mergedRootItem;
237
+ if (lcaItem || baseItem || orphanItem) {
238
+ mergedRootItem = await this.mergeTreeNodes({
239
+ lcaItem,
240
+ baseItem,
241
+ orphanItem,
242
+ space,
243
+ readCache_graph: ibGibReadCache,
244
+ newGraftDnaIbGibs,
245
+ newGraftedIntermediateIbGibs_ordered,
246
+ });
247
+ }
248
+ // 5. Evolve currentGraftTip if root item changed
249
+ if (mergedRootItem) {
250
+ const mergedRootAddr = getIbGibAddr({ ibGib: mergedRootItem });
251
+ const currentRootAddr = baseItem ? getIbGibAddr({ ibGib: baseItem }) : undefined;
252
+ if (currentGraftTip.ib?.startsWith('b2tfs_branch') || currentGraftTip.data?.classname === 'B2tFSBranchIbGib_V1') {
253
+ if (mergedRootAddr !== currentRootAddr) {
254
+ const resRel8Branch = await rel8({
255
+ src: currentGraftTip,
256
+ rel8nsToAddByAddr: {
257
+ b2tfs_item: [mergedRootAddr],
258
+ },
259
+ dna: true,
260
+ nCounter: true,
261
+ });
262
+ const newGraftTip = await this.applyTransformAndRegister({
263
+ resTransform: resRel8Branch,
264
+ space,
265
+ newGraftDnaIbGibs,
266
+ newGraftedIntermediateIbGibs_ordered,
267
+ });
268
+ currentGraftTip = newGraftTip;
269
+ }
270
+ }
271
+ else if (currentGraftTip.ib?.startsWith('b2tfs_item') || currentGraftTip.data?.classname === 'B2tFSItemIbGib_V1') {
272
+ if (mergedRootAddr !== getIbGibAddr({ ibGib: currentGraftTip })) {
273
+ currentGraftTip = mergedRootItem;
274
+ }
275
+ }
276
+ }
277
+ // 6. Attach GraftInfo frame
278
+ const graftInfo = await createGraftInfo({
279
+ conflictStrategy,
280
+ details: `Replayed ${dnaAddrsToApply.length} transforms from orphan (${orphanTipAddr}) onto base (${baseTipAddr}) with 3-way B2tFS tree merge.`,
281
+ addlGraftDetails: undefined,
282
+ latestCommonFrameAddr,
283
+ baseAddrsSinceLCA: baseBranchAddrs,
284
+ orphanAddrsSinceLCA: orphanBranchAddrs,
285
+ dnaAddrsApplied: dnaAddrsToApply,
286
+ });
287
+ if (space) {
288
+ await putInSpace({ ibGib: graftInfo, space });
289
+ }
290
+ const graftInfoAddr = getIbGibAddr({ ibGib: graftInfo });
291
+ const resRel8GraftInfo = await rel8({
292
+ src: currentGraftTip,
293
+ rel8nsToAddByAddr: {
294
+ [GRAFT_INFO_REL8N_NAME]: [graftInfoAddr],
295
+ },
296
+ dna: true,
297
+ nCounter: !!currentGraftTip.data?.n,
298
+ });
299
+ for (const dna of resRel8GraftInfo.dnas ?? []) {
300
+ newGraftDnaIbGibs.push(dna);
301
+ }
302
+ if (space) {
303
+ await persistTransformResult({ resTransform: resRel8GraftInfo, space });
304
+ await registerNewIbGib({ ibGib: resRel8GraftInfo.newIbGib, space });
305
+ }
306
+ const finalGraftTip = resRel8GraftInfo.newIbGib;
307
+ return {
308
+ dnasReplayed: dnaIbGibsToApply,
309
+ dnasCreatedInGraft: newGraftDnaIbGibs,
310
+ intermediateIbGibsCreatedInGraft: newGraftedIntermediateIbGibs_ordered,
311
+ newGraftTip: finalGraftTip,
312
+ graftInfoCreated: graftInfo,
313
+ };
314
+ }
315
+ catch (error) {
316
+ console.error(`${lc} ${extractErrorMsg(error)} (E: 7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e)`);
317
+ throw error;
318
+ }
319
+ finally {
320
+ if (logalot) {
321
+ console.log(`${lc} complete. (I: 6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e1f)`);
322
+ }
323
+ }
324
+ }
325
+ async fetchIbGib({ addr, space, readCache_graph, }) {
326
+ if (!addr) {
327
+ return undefined;
328
+ }
329
+ const cleanAddr = addr.includes('^') ? addr.split('^')[0] : addr;
330
+ if (readCache_graph) {
331
+ if (readCache_graph[cleanAddr]) {
332
+ return readCache_graph[cleanAddr];
333
+ }
334
+ if (readCache_graph[addr]) {
335
+ return readCache_graph[addr];
336
+ }
337
+ const matchingKey = Object.keys(readCache_graph).find(k => k === cleanAddr || k.startsWith(cleanAddr + '^') || (k.includes('^') && k.split('^')[0] === cleanAddr));
338
+ if (matchingKey) {
339
+ return readCache_graph[matchingKey];
340
+ }
341
+ }
342
+ if (!space) {
343
+ return undefined;
344
+ }
345
+ try {
346
+ const res = await getFromSpace({ space, addrs: [addr, cleanAddr] });
347
+ if (res && res.success && res.ibGibs && res.ibGibs.length > 0) {
348
+ const found = res.ibGibs.find((x) => !!x);
349
+ if (found) {
350
+ return found;
351
+ }
352
+ }
353
+ }
354
+ catch {
355
+ // Suppress fetch error if address not found
356
+ }
357
+ return undefined;
358
+ }
359
+ async resolveRootItemNode({ nodeOrAddr, space, readCache_graph, }) {
360
+ if (!nodeOrAddr) {
361
+ return undefined;
362
+ }
363
+ let node;
364
+ if (typeof nodeOrAddr === 'string') {
365
+ node = await this.fetchIbGib({ addr: nodeOrAddr, space, readCache_graph });
366
+ }
367
+ else {
368
+ node = nodeOrAddr;
369
+ }
370
+ if (!node) {
371
+ return undefined;
372
+ }
373
+ if (node.ib?.startsWith('b2tfs_branch') || node.data?.classname === 'B2tFSBranchIbGib_V1') {
374
+ const rootItemAddr = node.rel8ns?.b2tfs_item?.at(-1);
375
+ if (rootItemAddr) {
376
+ const rootNode = await this.fetchIbGib({ addr: rootItemAddr, space, readCache_graph });
377
+ return rootNode;
378
+ }
379
+ return undefined;
380
+ }
381
+ if (node.ib?.startsWith('b2tfs_item') || node.data?.classname === 'B2tFSItemIbGib_V1') {
382
+ return node;
383
+ }
384
+ return undefined;
385
+ }
386
+ async getFilePayloadBuffer({ fileItem, space, readCache_graph, }) {
387
+ if (!fileItem || !fileItem.rel8ns) {
388
+ return undefined;
389
+ }
390
+ const binAddrs = fileItem.rel8ns[BINARY_REL8N_NAME] || [];
391
+ const latestBinAddr = binAddrs.at(-1);
392
+ if (!latestBinAddr) {
393
+ return undefined;
394
+ }
395
+ const binIbGib = await this.fetchIbGib({ addr: latestBinAddr, space, readCache_graph });
396
+ if (!binIbGib || binIbGib.data === undefined) {
397
+ return undefined;
398
+ }
399
+ let fileData;
400
+ const dataObj = binIbGib.data;
401
+ if (dataObj && typeof dataObj === 'object' && dataObj._dataType === 'Uint8Array_Base64' && typeof dataObj.value === 'string') {
402
+ fileData = Buffer.from(dataObj.value, 'base64');
403
+ }
404
+ else if (typeof dataObj === 'string') {
405
+ fileData = Buffer.from(dataObj, 'utf8');
406
+ }
407
+ else if (dataObj instanceof Uint8Array || Buffer.isBuffer(dataObj)) {
408
+ fileData = dataObj;
409
+ }
410
+ else if (typeof dataObj === 'object' && dataObj !== null) {
411
+ if (typeof dataObj.text === 'string') {
412
+ fileData = Buffer.from(dataObj.text, 'utf8');
413
+ }
414
+ else if (typeof dataObj.data === 'string') {
415
+ fileData = Buffer.from(dataObj.data, 'utf8');
416
+ }
417
+ else {
418
+ const vals = Object.values(dataObj);
419
+ fileData = new Uint8Array(vals);
420
+ }
421
+ }
422
+ else {
423
+ fileData = new Uint8Array(0);
424
+ }
425
+ return { buffer: fileData, binIbGib };
426
+ }
427
+ async getChildItemsMap({ folderItem, space, readCache_graph, }) {
428
+ const map = new Map();
429
+ if (!folderItem || !folderItem.rel8ns) {
430
+ return map;
431
+ }
432
+ const childAddrs = folderItem.rel8ns[B2TFS_CHILD_ITEM_REL8N_NAME] || [];
433
+ for (const addr of childAddrs) {
434
+ const childNode = await this.fetchIbGib({ addr, space, readCache_graph });
435
+ if (childNode && childNode.data?.name) {
436
+ map.set(childNode.data.name, childNode);
437
+ }
438
+ }
439
+ return map;
440
+ }
441
+ async mergeTreeNodes({ lcaItem, baseItem, orphanItem, space, readCache_graph, newGraftDnaIbGibs, newGraftedIntermediateIbGibs_ordered, }) {
442
+ const lc = `${lcFile}[${this.mergeTreeNodes.name}]`;
443
+ const baseAddr = baseItem ? getIbGibAddr({ ibGib: baseItem }) : undefined;
444
+ const orphanAddr = orphanItem ? getIbGibAddr({ ibGib: orphanItem }) : undefined;
445
+ const lcaAddr = lcaItem ? getIbGibAddr({ ibGib: lcaItem }) : undefined;
446
+ if (baseAddr && orphanAddr && baseAddr === orphanAddr) {
447
+ return baseItem;
448
+ }
449
+ if (lcaAddr && baseAddr && baseAddr === lcaAddr && orphanItem) {
450
+ return orphanItem;
451
+ }
452
+ if (lcaAddr && orphanAddr && orphanAddr === lcaAddr && baseItem) {
453
+ return baseItem;
454
+ }
455
+ if (!baseItem && !orphanItem) {
456
+ return undefined;
457
+ }
458
+ if (baseItem && !orphanItem) {
459
+ if (lcaAddr && baseAddr === lcaAddr) {
460
+ return undefined;
461
+ }
462
+ return baseItem;
463
+ }
464
+ if (orphanItem && !baseItem) {
465
+ if (lcaAddr && orphanAddr === lcaAddr) {
466
+ return undefined;
467
+ }
468
+ return orphanItem;
469
+ }
470
+ if (!baseItem || !orphanItem) {
471
+ throw new Error(`(UNEXPECTED) baseItem or orphanItem missing in 3-way merge branch (E: 5d4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a)`);
472
+ }
473
+ const fsType = baseItem.data?.fsType || orphanItem.data?.fsType;
474
+ if (fsType === 'file') {
475
+ const lcaPayload = await this.getFilePayloadBuffer({ fileItem: lcaItem, space, readCache_graph });
476
+ const basePayload = await this.getFilePayloadBuffer({ fileItem: baseItem, space, readCache_graph });
477
+ const orphanPayload = await this.getFilePayloadBuffer({ fileItem: orphanItem, space, readCache_graph });
478
+ const isBaseBin = basePayload ? isBinaryBuffer(basePayload.buffer) : false;
479
+ const isOrphanBin = orphanPayload ? isBinaryBuffer(orphanPayload.buffer) : false;
480
+ const isLcaBin = lcaPayload ? isBinaryBuffer(lcaPayload.buffer) : false;
481
+ if (isBaseBin || isOrphanBin || isLcaBin) {
482
+ if (logalot) {
483
+ console.log(`${lc} Non-text binary file detected (${baseItem.data?.name}). Skipping 3-way line diff. (I: 4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a9b)`);
484
+ }
485
+ return baseItem;
486
+ }
487
+ const textLCA = lcaPayload ? decodeToLines(lcaPayload.buffer).join('\n') : '';
488
+ const textBase = basePayload ? decodeToLines(basePayload.buffer).join('\n') : '';
489
+ const textOrphan = orphanPayload ? decodeToLines(orphanPayload.buffer).join('\n') : '';
490
+ console.log(`${lc} [MERGE DIAGNOSTIC] file: ${baseItem.data?.name}`);
491
+ console.log(`${lc} [MERGE DIAGNOSTIC] textLCA:\n${textLCA}`);
492
+ console.log(`${lc} [MERGE DIAGNOSTIC] textBase:\n${textBase}`);
493
+ console.log(`${lc} [MERGE DIAGNOSTIC] textOrphan:\n${textOrphan}`);
494
+ const { mergedText } = perform3WayTextLineMerge({ textLCA, textBase, textOrphan });
495
+ console.log(`${lc} [MERGE DIAGNOSTIC] mergedText:\n${mergedText}`);
496
+ const dataBuffer = Buffer.from(mergedText, 'utf8');
497
+ const fileHash = await hash({ s: mergedText });
498
+ const fileExt = baseItem.data?.fileExt || (baseItem.data?.name?.includes('.') ? baseItem.data.name.split('.').pop() || 'txt' : 'txt');
499
+ const binIb = getBinIb({
500
+ binHash: fileHash,
501
+ binExt: fileExt,
502
+ binEncoding: 'utf8',
503
+ });
504
+ const binIbGib = {
505
+ ib: binIb,
506
+ data: dataBuffer,
507
+ };
508
+ binIbGib.gib = await getGib({ ibGib: binIbGib, hasTjp: false });
509
+ const binAddr = getIbGibAddr({ ibGib: binIbGib });
510
+ if (space) {
511
+ await putInSpace({ ibGib: binIbGib, space });
512
+ await registerNewIbGib({ ibGib: binIbGib, space });
513
+ }
514
+ const evolveRes = await evolveB2tFSItemIbGib({
515
+ existingItem: baseItem,
516
+ dataToUpdate: {
517
+ fileHash,
518
+ },
519
+ rel8nsToUpdate: {
520
+ [BINARY_REL8N_NAME]: [binAddr],
521
+ },
522
+ });
523
+ if (evolveRes.dnas) {
524
+ newGraftDnaIbGibs.push(...evolveRes.dnas);
525
+ }
526
+ if (evolveRes.newIbGib) {
527
+ newGraftedIntermediateIbGibs_ordered.push(evolveRes.newIbGib);
528
+ }
529
+ if (space) {
530
+ await persistTransformResult({ resTransform: evolveRes, space });
531
+ await registerNewIbGib({ ibGib: evolveRes.newIbGib, space });
532
+ }
533
+ return evolveRes.newIbGib;
534
+ }
535
+ else if (fsType === 'folder') {
536
+ const lcaChildrenMap = await this.getChildItemsMap({ folderItem: lcaItem, space, readCache_graph });
537
+ const baseChildrenMap = await this.getChildItemsMap({ folderItem: baseItem, space, readCache_graph });
538
+ const orphanChildrenMap = await this.getChildItemsMap({ folderItem: orphanItem, space, readCache_graph });
539
+ const allNames = new Set([
540
+ ...lcaChildrenMap.keys(),
541
+ ...baseChildrenMap.keys(),
542
+ ...orphanChildrenMap.keys(),
543
+ ]);
544
+ const mergedChildAddrs = [];
545
+ for (const name of allNames) {
546
+ const childLCA = lcaChildrenMap.get(name);
547
+ const childBase = baseChildrenMap.get(name);
548
+ const childOrphan = orphanChildrenMap.get(name);
549
+ const mergedChild = await this.mergeTreeNodes({
550
+ lcaItem: childLCA,
551
+ baseItem: childBase,
552
+ orphanItem: childOrphan,
553
+ space,
554
+ readCache_graph,
555
+ newGraftDnaIbGibs,
556
+ newGraftedIntermediateIbGibs_ordered,
557
+ });
558
+ if (mergedChild) {
559
+ mergedChildAddrs.push(getIbGibAddr({ ibGib: mergedChild }));
560
+ }
561
+ }
562
+ const currentChildAddrs = baseItem.rel8ns?.[B2TFS_CHILD_ITEM_REL8N_NAME] || [];
563
+ const addrsChanged = mergedChildAddrs.length !== currentChildAddrs.length ||
564
+ mergedChildAddrs.some((addr, idx) => addr !== currentChildAddrs[idx]);
565
+ if (!addrsChanged) {
566
+ return baseItem;
567
+ }
568
+ const evolveRes = await evolveB2tFSItemIbGib({
569
+ existingItem: baseItem,
570
+ rel8nsToUpdate: {
571
+ [B2TFS_CHILD_ITEM_REL8N_NAME]: mergedChildAddrs,
572
+ },
573
+ rel8nsToRemove: {
574
+ [B2TFS_CHILD_ITEM_REL8N_NAME]: baseItem.rel8ns?.[B2TFS_CHILD_ITEM_REL8N_NAME] || [],
575
+ },
576
+ });
577
+ if (evolveRes.dnas) {
578
+ newGraftDnaIbGibs.push(...evolveRes.dnas);
579
+ }
580
+ if (evolveRes.newIbGib) {
581
+ newGraftedIntermediateIbGibs_ordered.push(evolveRes.newIbGib);
582
+ }
583
+ if (space) {
584
+ await persistTransformResult({ resTransform: evolveRes, space });
585
+ await registerNewIbGib({ ibGib: evolveRes.newIbGib, space });
586
+ }
587
+ return evolveRes.newIbGib;
588
+ }
589
+ return baseItem;
590
+ }
591
+ }
592
+ export const B2tFSItem3WayMergeStrategy = B2tFS3WayGraftStrategy;
593
+ //# sourceMappingURL=b2tfs-3way-merge-strategy.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"b2tfs-3way-merge-strategy.mjs","sourceRoot":"","sources":["../../../src/engine/merge/b2tfs-3way-merge-strategy.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,iDAAiD,CAAC;AAExF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,uDAAuD,CAAC;AAC/E,OAAO,EAAE,IAAI,EAAE,MAAM,2CAA2C,CAAC;AAGjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uEAAuE,CAAC;AAKlH,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,qDAAqD,CAAC;AACzI,OAAO,EAAE,QAAQ,EAAE,mCAAmC,EAAE,wBAAwB,EAAoB,mBAAmB,EAAE,MAAM,oDAAoD,CAAC;AAEpL,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,yFAAyF,CAAC;AACzI,OAAO,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,+DAA+D,CAAC;AAEtG,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAEpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACjG,OAAO,EAAqB,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3G,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAG/D,MAAM,MAAM,GAAG,6BAA6B,CAAC;AAC7C,MAAM,OAAO,GAAG,gBAAgB,CAAC;AAUjC;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,EACrC,OAAO,EACP,QAAQ,EACR,UAAU,GAKb;IACG,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACtE,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC1B,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACxD,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACvB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAC1D,CAAC;IACD,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACxD,CAAC;IAGD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE9C,MAAM,UAAU,GAAG,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAE/D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAC1D,CAAC;IACD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACxD,CAAC;IAED,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,OAAO,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,YAAY,GAAG,UAAU,CAAC,MAAM,IAAI,cAAc,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;QAC1G,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,eAAe,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;QAErD,MAAM,SAAS,GAAG,aAAa,IAAI,aAAa,CAAC,KAAK,KAAK,MAAM,CAAC;QAClE,MAAM,WAAW,GAAG,eAAe,IAAI,eAAe,CAAC,KAAK,KAAK,MAAM,CAAC;QAExE,IAAI,SAAS,IAAI,WAAW,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC;YACtC,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC;YACxC,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC9C,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC;YAEhD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;gBACjE,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACJ,WAAW,GAAG,IAAI,CAAC;gBACnB,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACjC,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;gBAC5B,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC5B,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;gBAC5B,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChC,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAClD,MAAM,IAAI,WAAW,CAAC;YACtB,YAAY,EAAE,CAAC;YACf,cAAc,EAAE,CAAC;QACrB,CAAC;aAAM,IAAI,SAAS,EAAE,CAAC;YACnB,WAAW,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC/D,MAAM,IAAI,WAAW,CAAC;YACtB,YAAY,EAAE,CAAC;QACnB,CAAC;aAAM,IAAI,WAAW,EAAE,CAAC;YACrB,WAAW,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACjE,MAAM,IAAI,WAAW,CAAC;YACtB,cAAc,EAAE,CAAC;QACrB,CAAC;aAAM,CAAC;YACJ,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC3B,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBACnC,MAAM,EAAE,CAAC;YACb,CAAC;iBAAM,CAAC;gBACJ,IAAI,aAAa,IAAI,YAAY,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;oBACpD,WAAW,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAC5C,YAAY,EAAE,CAAC;gBACnB,CAAC;gBACD,IAAI,eAAe,IAAI,cAAc,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;oBAC1D,WAAW,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;oBAC9C,cAAc,EAAE,CAAC;gBACrB,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO;QACH,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QAClC,WAAW;KACd,CAAC;AACN,CAAC;AAED,MAAM,OAAO,sBAAuB,SAAQ,yBAAyB;IACxD,UAAU,GAAW,wBAAwB,CAAC;IAC/C,EAAE,GAAG,0BAA0B,CAAC;IAEhC,WAAW,CAAC,KAAgB;QAChC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;QAC1C,OAAO,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;YACpC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;YACnC,KAAK,CAAC,IAAI,EAAE,SAAS,KAAK,mBAAmB;YAC7C,KAAK,CAAC,IAAI,EAAE,SAAS,KAAK,qBAAqB,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAqB;QAChC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;QAC/C,IAAI,CAAC;YACD,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;YAC5F,IAAI,gBAAgB,KAAK,oBAAoB,CAAC,iBAAiB,IAAK,gBAA2B,KAAK,gBAAgB,EAAE,CAAC;gBACnH,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAAC,OAAO,KAAK,CAAC;YAAC,CAAC;YAE7C,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,mCAAmC,CAAC;gBAC3D,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBAC3B,eAAe,EAAE,cAAc;gBAC/B,KAAK;aACR,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;YACvF,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAqB;QAC7B,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;QAC/D,IAAI,CAAC;YACD,IAAI,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,+EAA+E,CAAC,CAAC;YACtG,CAAC;YAED,MAAM,EACF,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,KAAK,EACL,eAAe,GAClB,GAAG,OAAO,CAAC;YAGZ,gFAAgF;YAChF,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;YACrE,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YAC7D,MAAM,uBAAuB,GAAG,MAAM,mCAAmC,CAAC;gBACtE,eAAe,EAAE,cAAc;gBAC/B,KAAK,EAAE,eAAe;gBACtB,KAAK;aACR,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;YAEpD,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;YACrE,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YAC7D,MAAM,yBAAyB,GAAG,MAAM,mCAAmC,CAAC;gBACxE,eAAe,EAAE,cAAc;gBAC/B,KAAK,EAAE,eAAe;gBACtB,KAAK;aACR,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,yBAAyB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;YAExD,kFAAkF;YAClF,MAAM,EACF,OAAO,EACP,UAAU,EACV,SAAS,EACT,YAAY,GACf,GAAG,IAAI,CAAC,oBAAoB,CAAC;gBAC1B,eAAe;gBACf,WAAW;gBACX,uBAAuB;gBACvB,aAAa;gBACb,yBAAyB;aAC5B,CAAC,CAAC;YAIH,MAAM,WAAW,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YACrD,MAAM,eAAe,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACxE,MAAM,aAAa,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACzD,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAE5E,mDAAmD;YACnD,MAAM,CAAC,sBAAsB,CAAC,GAAG,MAAM,mCAAmC,CAAC;gBACvE,KAAK,EAAE,CAAC,qBAAqB,CAAC;gBAC9B,KAAK;aACR,CAAC,CAAC;YAEH,MAAM,2BAA2B,GAAgB,CAAC,sBAAsB,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;YACtG,MAAM,eAAe,GAAgB,EAAE,CAAC;YACxC,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;gBACrC,MAAM,qBAAqB,GAAG,aAAa,CAAC;oBACxC,IAAI,EAAE,2BAA2B;oBACjC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE;oBACvC,gCAAgC,EAAE,IAAI;iBACzC,CAAC,CAAC;gBACH,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxE,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAChE,CAAC;YAED,MAAM,gBAAgB,GAAG,MAAM,mCAAmC,CAAC;gBAC/D,KAAK,EAAE,eAAe;gBACtB,eAAe,EAAE,cAAc;gBAC/B,KAAK;aACR,CAAC,CAAC;YAEH,MAAM,qBAAqB,GAAe,EAAE,CAAC;YAC7C,MAAM,oCAAoC,GAAe,EAAE,CAAC;YAC5D,MAAM,iBAAiB,GAAe,EAAE,CAAC;YAEzC,IAAI,eAAe,GAAG,MAAM,eAAe,CAAC;gBACxC,GAAG,EAAE,OAAO;gBACZ,8CAA8C,EAAE,eAAe,CAAC,MAAM,EAAE;gBACxE,cAAc,EAAE,gBAAgB;gBAChC,qBAAqB;aACxB,CAAC,CAAC;YAEH,IAAI,KAAK,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,MAAM,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;gBAC3D,MAAM,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;gBAC1G,MAAM,mCAAmC,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBAC/E,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,EAAE,MAAM,EAAE,mCAAmC,EAAE,CAAC,CAAC;gBACxG,IAAI,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChD,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,oCAAoC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnG,KAAK,MAAM,IAAI,IAAI,oCAAoC,EAAE,CAAC;wBACtD,MAAM,gBAAgB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;oBACnD,CAAC;gBACL,CAAC;YACL,CAAC;YAED,8EAA8E;YAC9E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC;YAC/G,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC;YAChH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC;YACjH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC;YAErH,IAAI,cAA6C,CAAC;YAClD,IAAI,OAAO,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;gBACpC,cAAc,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;oBACvC,OAAO;oBACP,QAAQ;oBACR,UAAU;oBACV,KAAK;oBACL,eAAe,EAAE,cAAc;oBAC/B,iBAAiB;oBACjB,oCAAoC;iBACvC,CAAC,CAAC;YACP,CAAC;YAGD,iDAAiD;YACjD,IAAI,cAAc,EAAE,CAAC;gBACjB,MAAM,cAAc,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;gBAC/D,MAAM,eAAe,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAEjF,IAAI,eAAe,CAAC,EAAE,EAAE,UAAU,CAAC,cAAc,CAAC,IAAI,eAAe,CAAC,IAAI,EAAE,SAAS,KAAK,qBAAqB,EAAE,CAAC;oBAC9G,IAAI,cAAc,KAAK,eAAe,EAAE,CAAC;wBACrC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC;4BAC7B,GAAG,EAAE,eAAe;4BACpB,iBAAiB,EAAE;gCACf,UAAU,EAAE,CAAC,cAAc,CAAC;6BAC/B;4BACD,GAAG,EAAE,IAAI;4BACT,QAAQ,EAAE,IAAI;yBACjB,CAAC,CAAC;wBAEH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC;4BACrD,YAAY,EAAE,aAAa;4BAC3B,KAAK;4BACL,iBAAiB;4BACjB,oCAAoC;yBACvC,CAAC,CAAC;wBAEH,eAAe,GAAG,WAAW,CAAC;oBAClC,CAAC;gBACL,CAAC;qBAAM,IAAI,eAAe,CAAC,EAAE,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,eAAe,CAAC,IAAI,EAAE,SAAS,KAAK,mBAAmB,EAAE,CAAC;oBACjH,IAAI,cAAc,KAAK,YAAY,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;wBAC9D,eAAe,GAAG,cAAc,CAAC;oBACrC,CAAC;gBACL,CAAC;YACL,CAAC;YAED,4BAA4B;YAC5B,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC;gBACpC,gBAAgB;gBAChB,OAAO,EAAE,YAAY,eAAe,CAAC,MAAM,4BAA4B,aAAa,gBAAgB,WAAW,gCAAgC;gBAC/I,gBAAgB,EAAE,SAAS;gBAC3B,qBAAqB;gBACrB,iBAAiB,EAAE,eAAe;gBAClC,mBAAmB,EAAE,iBAAiB;gBACtC,eAAe,EAAE,eAAe;aACnC,CAAC,CAAC;YAEH,IAAI,KAAK,EAAE,CAAC;gBACR,MAAM,UAAU,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAClD,CAAC;YACD,MAAM,aAAa,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACzD,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC;gBAChC,GAAG,EAAE,eAAe;gBACpB,iBAAiB,EAAE;oBACf,CAAC,qBAAqB,CAAC,EAAE,CAAC,aAAa,CAAC;iBAC3C;gBACD,GAAG,EAAE,IAAI;gBACT,QAAQ,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;aACtC,CAAC,CAAC;YAEH,KAAK,MAAM,GAAG,IAAI,gBAAgB,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;gBAC5C,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChC,CAAC;YACD,IAAI,KAAK,EAAE,CAAC;gBACR,MAAM,sBAAsB,CAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;gBACxE,MAAM,gBAAgB,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACxE,CAAC;YAED,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC;YAEhD,OAAO;gBACH,YAAY,EAAE,gBAAgB;gBAC9B,kBAAkB,EAAE,iBAAiB;gBACrC,gCAAgC,EAAE,oCAAoC;gBACtE,WAAW,EAAE,aAAa;gBAC1B,gBAAgB,EAAE,SAAS;aAC9B,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;YACvF,MAAM,KAAK,CAAC;QAChB,CAAC;gBAAS,CAAC;YACP,IAAI,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,kDAAkD,CAAC,CAAC;YACzE,CAAC;QACL,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,EACrB,IAAI,EACJ,KAAK,EACL,eAAe,GAKlB;QACG,IAAI,CAAC,IAAI,EAAE,CAAC;YAAC,OAAO,SAAS,CAAC;QAAC,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACjE,IAAI,eAAe,EAAE,CAAC;YAClB,IAAI,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;gBAAC,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;YAAC,CAAC;YACtE,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC;YACnK,IAAI,WAAW,EAAE,CAAC;gBAAC,OAAO,eAAe,CAAC,WAAW,CAAC,CAAC;YAAC,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;YAAC,OAAO,SAAS,CAAC;QAAC,CAAC;QACjC,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;YACpE,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5D,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/C,IAAI,KAAK,EAAE,CAAC;oBAAC,OAAO,KAAK,CAAC;gBAAC,CAAC;YAChC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACL,4CAA4C;QAChD,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAGO,KAAK,CAAC,mBAAmB,CAAC,EAC9B,UAAU,EACV,KAAK,EACL,eAAe,GAKlB;QACG,IAAI,CAAC,UAAU,EAAE,CAAC;YAAC,OAAO,SAAS,CAAC;QAAC,CAAC;QACtC,IAAI,IAA0B,CAAC;QAC/B,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACjC,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QAC/E,CAAC;aAAM,CAAC;YACJ,IAAI,GAAG,UAAU,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;YAAC,OAAO,SAAS,CAAC;QAAC,CAAC;QAEhC,IAAI,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,KAAK,qBAAqB,EAAE,CAAC;YACxF,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,YAAY,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;gBACvF,OAAO,QAA6B,CAAC;YACzC,CAAC;YACD,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,IAAI,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,KAAK,mBAAmB,EAAE,CAAC;YACpF,OAAO,IAAyB,CAAC;QACrC,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,EAC/B,QAAQ,EACR,KAAK,EACL,eAAe,GAKlB;QACG,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAAC,OAAO,SAAS,CAAC;QAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;QAC1D,MAAM,aAAa,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,EAAE,CAAC;YAAC,OAAO,SAAS,CAAC;QAAC,CAAC;QAEzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QACxF,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAAC,OAAO,SAAS,CAAC;QAAC,CAAC;QAEnE,IAAI,QAAoB,CAAC;QACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAW,CAAC;QACrC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,SAAS,KAAK,mBAAmB,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC3H,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACpD,CAAC;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YACrC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,OAAO,YAAY,UAAU,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACnE,QAAQ,GAAG,OAAqB,CAAC;QACrC,CAAC;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACzD,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACjD,CAAC;iBAAM,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1C,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,OAAiB,CAAC,CAAC;gBAC9C,QAAQ,GAAG,IAAI,UAAU,CAAC,IAAgB,CAAC,CAAC;YAChD,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,QAAQ,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QAGD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,EAC3B,UAAU,EACV,KAAK,EACL,eAAe,GAKlB;QACG,MAAM,GAAG,GAAG,IAAI,GAAG,EAA6B,CAAC;QACjD,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAAC,OAAO,GAAG,CAAC;QAAC,CAAC;QACtD,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,2BAA2B,CAAC,IAAI,EAAE,CAAC;QACxE,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,CAAsB,CAAC;YAC/F,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;gBACpC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,EACzB,OAAO,EACP,QAAQ,EACR,UAAU,EACV,KAAK,EACL,eAAe,EACf,iBAAiB,EACjB,oCAAoC,GASvC;QACG,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC;QAEpD,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEhF,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvE,IAAI,QAAQ,IAAI,UAAU,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;YACpD,OAAO,QAAQ,CAAC;QACpB,CAAC;QAED,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,KAAK,OAAO,IAAI,UAAU,EAAE,CAAC;YAC5D,OAAO,UAAU,CAAC;QACtB,CAAC;QAED,IAAI,OAAO,IAAI,UAAU,IAAI,UAAU,KAAK,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC9D,OAAO,QAAQ,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,IAAI,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;YAC1B,IAAI,OAAO,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;gBAClC,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,OAAO,QAAQ,CAAC;QACpB,CAAC;QAED,IAAI,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,OAAO,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;gBACpC,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,OAAO,UAAU,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,yGAAyG,CAAC,CAAC;QAC/H,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;QAEhE,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACpB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;YAClG,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;YACpG,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;YAExG,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC3E,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACjF,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAExE,IAAI,SAAS,IAAI,WAAW,IAAI,QAAQ,EAAE,CAAC;gBACvC,IAAI,OAAO,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,mCAAmC,QAAQ,CAAC,IAAI,EAAE,IAAI,oEAAoE,CAAC,CAAC;gBACjJ,CAAC;gBACD,OAAO,QAAQ,CAAC;YACpB,CAAC;YAED,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAEvF,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,6BAA6B,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,iCAAiC,OAAO,EAAE,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,kCAAkC,QAAQ,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,oCAAoC,UAAU,EAAE,CAAC,CAAC;YAEnE,MAAM,EAAE,UAAU,EAAE,GAAG,wBAAwB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,oCAAoC,UAAU,EAAE,CAAC,CAAC;YAEnE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;YAG/C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACtI,MAAM,KAAK,GAAG,QAAQ,CAAC;gBACnB,OAAO,EAAE,QAAQ;gBACjB,MAAM,EAAE,OAAO;gBACf,WAAW,EAAE,MAAM;aACtB,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAgB;gBAC1B,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,UAAU;aACnB,CAAC;YACF,QAAQ,CAAC,GAAG,GAAG,MAAM,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAEhE,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAClD,IAAI,KAAK,EAAE,CAAC;gBACR,MAAM,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC7C,MAAM,gBAAgB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACvD,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC;gBACzC,YAAY,EAAE,QAAQ;gBACtB,YAAY,EAAE;oBACV,QAAQ;iBACX;gBACD,cAAc,EAAE;oBACZ,CAAC,iBAAiB,CAAC,EAAE,CAAC,OAAO,CAAC;iBACjC;aACJ,CAAC,CAAC;YAEH,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;gBAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YAClE,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;gBAAC,oCAAoC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAAC,CAAC;YAC1F,IAAI,KAAK,EAAE,CAAC;gBACR,MAAM,sBAAsB,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;gBACjE,MAAM,gBAAgB,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACjE,CAAC;YAED,OAAO,SAAS,CAAC,QAA6B,CAAC;QACnD,CAAC;aAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;YACpG,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;YACtG,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;YAE1G,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;gBACrB,GAAG,cAAc,CAAC,IAAI,EAAE;gBACxB,GAAG,eAAe,CAAC,IAAI,EAAE;gBACzB,GAAG,iBAAiB,CAAC,IAAI,EAAE;aAC9B,CAAC,CAAC;YAEH,MAAM,gBAAgB,GAAa,EAAE,CAAC;YAEtC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC1C,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAEhD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;oBAC1C,OAAO,EAAE,QAAQ;oBACjB,QAAQ,EAAE,SAAS;oBACnB,UAAU,EAAE,WAAW;oBACvB,KAAK;oBACL,eAAe;oBACf,iBAAiB;oBACjB,oCAAoC;iBACvC,CAAC,CAAC;gBAGH,IAAI,WAAW,EAAE,CAAC;oBACd,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;gBAChE,CAAC;YACL,CAAC;YAED,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,2BAA2B,CAAC,IAAI,EAAE,CAAC;YAC/E,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,KAAK,iBAAiB,CAAC,MAAM;gBACrE,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,KAAK,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;YAE1E,IAAI,CAAC,YAAY,EAAE,CAAC;gBAChB,OAAO,QAAQ,CAAC;YACpB,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC;gBACzC,YAAY,EAAE,QAAQ;gBACtB,cAAc,EAAE;oBACZ,CAAC,2BAA2B,CAAC,EAAE,gBAAgB;iBAClD;gBACD,cAAc,EAAE;oBACZ,CAAC,2BAA2B,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,2BAA2B,CAAC,IAAI,EAAE;iBACtF;aACJ,CAAC,CAAC;YAEH,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;gBAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YAClE,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;gBAAC,oCAAoC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAAC,CAAC;YAC1F,IAAI,KAAK,EAAE,CAAC;gBACR,MAAM,sBAAsB,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;gBACjE,MAAM,gBAAgB,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACjE,CAAC;YAED,OAAO,SAAS,CAAC,QAA6B,CAAC;QACnD,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,sBAAsB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @module b2tfs-merge-strategy.respec.node
3
+ *
4
+ * In-memory respec unit tests for B2tFSItem3WayMergeStrategy.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=b2tfs-merge-strategy.respec.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"b2tfs-merge-strategy.respec.d.mts","sourceRoot":"","sources":["../../../src/engine/merge/b2tfs-merge-strategy.respec.mts"],"names":[],"mappings":"AAAA;;;;GAIG"}