@graview/core 0.1.62 → 0.1.64

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 (340) hide show
  1. package/dist/app.d.ts +12 -0
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js.map +1 -1
  4. package/dist/arranging.js +2 -2
  5. package/dist/arranging.js.map +1 -1
  6. package/dist/cli/check/index.d.ts +1 -0
  7. package/dist/cli/check/index.d.ts.map +1 -1
  8. package/dist/cli/check/index.js +1 -0
  9. package/dist/cli/check/index.js.map +1 -1
  10. package/dist/cli/check/workflows.d.ts +11 -0
  11. package/dist/cli/check/workflows.d.ts.map +1 -0
  12. package/dist/cli/check/workflows.js +20 -0
  13. package/dist/cli/check/workflows.js.map +1 -0
  14. package/dist/cli/check.d.ts.map +1 -1
  15. package/dist/cli/check.js +2 -1
  16. package/dist/cli/check.js.map +1 -1
  17. package/dist/cli/describe.d.ts.map +1 -1
  18. package/dist/cli/describe.js +31 -1
  19. package/dist/cli/describe.js.map +1 -1
  20. package/dist/cli/document-schema.d.ts.map +1 -1
  21. package/dist/cli/document-schema.js +9 -0
  22. package/dist/cli/document-schema.js.map +1 -1
  23. package/dist/compose.d.ts +1 -1
  24. package/dist/compose.d.ts.map +1 -1
  25. package/dist/document/amount.d.ts +1 -1
  26. package/dist/document/amount.d.ts.map +1 -1
  27. package/dist/document/amount.js +2 -2
  28. package/dist/document/amount.js.map +1 -1
  29. package/dist/document/blocks.d.ts.map +1 -1
  30. package/dist/document/blocks.js +17 -1
  31. package/dist/document/blocks.js.map +1 -1
  32. package/dist/document/brand-check.d.ts.map +1 -1
  33. package/dist/document/brand-check.js +8 -2
  34. package/dist/document/brand-check.js.map +1 -1
  35. package/dist/document/compile-checked.d.ts.map +1 -1
  36. package/dist/document/compile-checked.js +4 -2
  37. package/dist/document/compile-checked.js.map +1 -1
  38. package/dist/document/compile.d.ts.map +1 -1
  39. package/dist/document/compile.js +48 -9
  40. package/dist/document/compile.js.map +1 -1
  41. package/dist/document/compiled.d.ts +14 -0
  42. package/dist/document/compiled.d.ts.map +1 -1
  43. package/dist/document/compiled.js +39 -4
  44. package/dist/document/compiled.js.map +1 -1
  45. package/dist/document/connection-findings.js +93 -21
  46. package/dist/document/connection-findings.js.map +1 -1
  47. package/dist/document/connection-spec.d.ts +54 -1
  48. package/dist/document/connection-spec.d.ts.map +1 -1
  49. package/dist/document/connection-spec.js +76 -8
  50. package/dist/document/connection-spec.js.map +1 -1
  51. package/dist/document/derives-findings.d.ts +4 -0
  52. package/dist/document/derives-findings.d.ts.map +1 -0
  53. package/dist/document/derives-findings.js +68 -0
  54. package/dist/document/derives-findings.js.map +1 -0
  55. package/dist/document/describe-forms.js +2 -2
  56. package/dist/document/describe-forms.js.map +1 -1
  57. package/dist/document/diff.d.ts +6 -0
  58. package/dist/document/diff.d.ts.map +1 -1
  59. package/dist/document/diff.js +43 -1
  60. package/dist/document/diff.js.map +1 -1
  61. package/dist/document/edit.d.ts +1 -1
  62. package/dist/document/edit.d.ts.map +1 -1
  63. package/dist/document/edit.js +264 -23
  64. package/dist/document/edit.js.map +1 -1
  65. package/dist/document/expr/evaluate.d.ts +7 -0
  66. package/dist/document/expr/evaluate.d.ts.map +1 -1
  67. package/dist/document/expr/evaluate.js +29 -2
  68. package/dist/document/expr/evaluate.js.map +1 -1
  69. package/dist/document/format-words.d.ts +1 -0
  70. package/dist/document/format-words.d.ts.map +1 -1
  71. package/dist/document/format-words.js +2 -2
  72. package/dist/document/format-words.js.map +1 -1
  73. package/dist/document/kept-in-step-with.d.ts +20 -0
  74. package/dist/document/kept-in-step-with.d.ts.map +1 -0
  75. package/dist/document/kept-in-step-with.js +38 -0
  76. package/dist/document/kept-in-step-with.js.map +1 -0
  77. package/dist/document/kept-in-step.d.ts.map +1 -1
  78. package/dist/document/kept-in-step.js +3 -1
  79. package/dist/document/kept-in-step.js.map +1 -1
  80. package/dist/document/money.d.ts +10 -2
  81. package/dist/document/money.d.ts.map +1 -1
  82. package/dist/document/money.js +14 -5
  83. package/dist/document/money.js.map +1 -1
  84. package/dist/document/policy-words.d.ts +2 -0
  85. package/dist/document/policy-words.d.ts.map +1 -1
  86. package/dist/document/policy-words.js +11 -1
  87. package/dist/document/policy-words.js.map +1 -1
  88. package/dist/document/schema.d.ts +46 -1
  89. package/dist/document/schema.d.ts.map +1 -1
  90. package/dist/document/schema.js +48 -8
  91. package/dist/document/schema.js.map +1 -1
  92. package/dist/document/template-parse.d.ts.map +1 -1
  93. package/dist/document/template-parse.js +7 -1
  94. package/dist/document/template-parse.js.map +1 -1
  95. package/dist/document/template.d.ts +2 -0
  96. package/dist/document/template.d.ts.map +1 -1
  97. package/dist/document/template.js +10 -1
  98. package/dist/document/template.js.map +1 -1
  99. package/dist/document/to-document.js +2 -2
  100. package/dist/document/to-document.js.map +1 -1
  101. package/dist/document/workflow-spec.d.ts +72 -0
  102. package/dist/document/workflow-spec.d.ts.map +1 -0
  103. package/dist/document/workflow-spec.js +45 -0
  104. package/dist/document/workflow-spec.js.map +1 -0
  105. package/dist/document.schema.json +883 -4
  106. package/dist/head.d.ts +81 -0
  107. package/dist/head.d.ts.map +1 -0
  108. package/dist/head.js +123 -0
  109. package/dist/head.js.map +1 -0
  110. package/dist/history.d.ts.map +1 -1
  111. package/dist/history.js +2 -0
  112. package/dist/history.js.map +1 -1
  113. package/dist/index.d.ts +7 -5
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.js +4 -3
  116. package/dist/index.js.map +1 -1
  117. package/dist/installation.d.ts +1 -1
  118. package/dist/job-findings.d.ts +5 -0
  119. package/dist/job-findings.d.ts.map +1 -1
  120. package/dist/job-findings.js +9 -3
  121. package/dist/job-findings.js.map +1 -1
  122. package/dist/keep-linked.d.ts +45 -0
  123. package/dist/keep-linked.d.ts.map +1 -0
  124. package/dist/keep-linked.js +188 -0
  125. package/dist/keep-linked.js.map +1 -0
  126. package/dist/mutations/derive-edits.js +2 -2
  127. package/dist/mutations/propose-changes.d.ts +24 -0
  128. package/dist/mutations/propose-changes.d.ts.map +1 -0
  129. package/dist/mutations/propose-changes.js +30 -0
  130. package/dist/mutations/propose-changes.js.map +1 -0
  131. package/dist/mutations/vote-suggestion.d.ts +30 -0
  132. package/dist/mutations/vote-suggestion.d.ts.map +1 -1
  133. package/dist/mutations/vote-suggestion.js +23 -0
  134. package/dist/mutations/vote-suggestion.js.map +1 -1
  135. package/dist/mutations/words.js +3 -3
  136. package/dist/ops/digest.d.ts +3 -1
  137. package/dist/ops/digest.d.ts.map +1 -1
  138. package/dist/ops/digest.js +7 -2
  139. package/dist/ops/digest.js.map +1 -1
  140. package/dist/ops/lineage.d.ts +19 -2
  141. package/dist/ops/lineage.d.ts.map +1 -1
  142. package/dist/ops/lineage.js +8 -4
  143. package/dist/ops/lineage.js.map +1 -1
  144. package/dist/ops/log.d.ts.map +1 -1
  145. package/dist/ops/log.js +13 -2
  146. package/dist/ops/log.js.map +1 -1
  147. package/dist/ops/suggestions.d.ts +47 -5
  148. package/dist/ops/suggestions.d.ts.map +1 -1
  149. package/dist/ops/suggestions.js +88 -13
  150. package/dist/ops/suggestions.js.map +1 -1
  151. package/dist/ops/tidying.d.ts.map +1 -1
  152. package/dist/ops/tidying.js +6 -1
  153. package/dist/ops/tidying.js.map +1 -1
  154. package/dist/ops/types.d.ts +28 -0
  155. package/dist/ops/types.d.ts.map +1 -1
  156. package/dist/ops/undo.d.ts.map +1 -1
  157. package/dist/ops/undo.js +17 -0
  158. package/dist/ops/undo.js.map +1 -1
  159. package/dist/permissions/policy.d.ts +7 -0
  160. package/dist/permissions/policy.d.ts.map +1 -1
  161. package/dist/permissions/policy.js +12 -0
  162. package/dist/permissions/policy.js.map +1 -1
  163. package/dist/permissions/types.d.ts +27 -0
  164. package/dist/permissions/types.d.ts.map +1 -1
  165. package/dist/permissions/types.js.map +1 -1
  166. package/dist/places.d.ts +10 -0
  167. package/dist/places.d.ts.map +1 -1
  168. package/dist/places.js +35 -1
  169. package/dist/places.js.map +1 -1
  170. package/dist/scene.d.ts +2 -0
  171. package/dist/scene.d.ts.map +1 -1
  172. package/dist/scene.js +2 -0
  173. package/dist/scene.js.map +1 -1
  174. package/dist/schema/amount-mark.d.ts +2 -0
  175. package/dist/schema/amount-mark.d.ts.map +1 -1
  176. package/dist/schema/amount-mark.js.map +1 -1
  177. package/dist/schema/amount-words.js +2 -2
  178. package/dist/schema/amount-words.js.map +1 -1
  179. package/dist/schema/choice-words.js +2 -2
  180. package/dist/schema/define-node.d.ts +8 -2
  181. package/dist/schema/define-node.d.ts.map +1 -1
  182. package/dist/schema/define-node.js +2 -2
  183. package/dist/schema/define-node.js.map +1 -1
  184. package/dist/schema/humanize.d.ts +17 -0
  185. package/dist/schema/humanize.d.ts.map +1 -1
  186. package/dist/schema/humanize.js +28 -1
  187. package/dist/schema/humanize.js.map +1 -1
  188. package/dist/schema/reading.d.ts +8 -0
  189. package/dist/schema/reading.d.ts.map +1 -1
  190. package/dist/schema/reading.js +16 -2
  191. package/dist/schema/reading.js.map +1 -1
  192. package/dist/schema/types.d.ts +8 -0
  193. package/dist/schema/types.d.ts.map +1 -1
  194. package/dist/schema/value-words.js +2 -2
  195. package/dist/schema/value-words.js.map +1 -1
  196. package/dist/starting-document.d.ts +16 -3
  197. package/dist/starting-document.d.ts.map +1 -1
  198. package/dist/starting-document.js +32 -5
  199. package/dist/starting-document.js.map +1 -1
  200. package/dist/store.d.ts +47 -2
  201. package/dist/store.d.ts.map +1 -1
  202. package/dist/store.js +176 -13
  203. package/dist/store.js.map +1 -1
  204. package/dist/sync/connection.d.ts +24 -5
  205. package/dist/sync/connection.d.ts.map +1 -1
  206. package/dist/sync/connection.js +168 -31
  207. package/dist/sync/connection.js.map +1 -1
  208. package/dist/sync/engine.d.ts +97 -0
  209. package/dist/sync/engine.d.ts.map +1 -1
  210. package/dist/sync/engine.js +159 -1
  211. package/dist/sync/engine.js.map +1 -1
  212. package/dist/sync/google-calendar.d.ts.map +1 -1
  213. package/dist/sync/google-calendar.js +18 -1
  214. package/dist/sync/google-calendar.js.map +1 -1
  215. package/dist/sync/guest-words.d.ts +9 -0
  216. package/dist/sync/guest-words.d.ts.map +1 -0
  217. package/dist/sync/guest-words.js +41 -0
  218. package/dist/sync/guest-words.js.map +1 -0
  219. package/dist/sync/index.d.ts +8 -5
  220. package/dist/sync/index.d.ts.map +1 -1
  221. package/dist/sync/index.js +2 -0
  222. package/dist/sync/index.js.map +1 -1
  223. package/dist/sync/notion-stub.d.ts +4 -1
  224. package/dist/sync/notion-stub.d.ts.map +1 -1
  225. package/dist/sync/notion-stub.js +40 -0
  226. package/dist/sync/notion-stub.js.map +1 -1
  227. package/dist/sync/notion.d.ts +44 -2
  228. package/dist/sync/notion.d.ts.map +1 -1
  229. package/dist/sync/notion.js +289 -143
  230. package/dist/sync/notion.js.map +1 -1
  231. package/dist/sync/status.d.ts +43 -0
  232. package/dist/sync/status.d.ts.map +1 -0
  233. package/dist/sync/status.js +46 -0
  234. package/dist/sync/status.js.map +1 -0
  235. package/dist/sync/types.d.ts +60 -0
  236. package/dist/sync/types.d.ts.map +1 -1
  237. package/dist/sync/types.js.map +1 -1
  238. package/dist/theme/marks.d.ts +12 -0
  239. package/dist/theme/marks.d.ts.map +1 -1
  240. package/dist/theme/marks.js +5 -0
  241. package/dist/theme/marks.js.map +1 -1
  242. package/dist/tidying.d.ts +53 -4
  243. package/dist/tidying.d.ts.map +1 -1
  244. package/dist/tidying.js +110 -8
  245. package/dist/tidying.js.map +1 -1
  246. package/dist/validate-graph.d.ts +2 -1
  247. package/dist/validate-graph.d.ts.map +1 -1
  248. package/dist/validate-graph.js +32 -1
  249. package/dist/validate-graph.js.map +1 -1
  250. package/dist/version.d.ts +1 -1
  251. package/dist/version.js +1 -1
  252. package/dist/words.d.ts +4 -1
  253. package/dist/words.d.ts.map +1 -1
  254. package/dist/words.js +4 -1
  255. package/dist/words.js.map +1 -1
  256. package/dist/workflow-shape.d.ts +223 -0
  257. package/dist/workflow-shape.d.ts.map +1 -0
  258. package/dist/workflow-shape.js +31 -0
  259. package/dist/workflow-shape.js.map +1 -0
  260. package/dist/workflows/findings.d.ts +13 -0
  261. package/dist/workflows/findings.d.ts.map +1 -0
  262. package/dist/workflows/findings.js +157 -0
  263. package/dist/workflows/findings.js.map +1 -0
  264. package/dist/workflows/generate-words.d.ts +12 -0
  265. package/dist/workflows/generate-words.d.ts.map +1 -0
  266. package/dist/workflows/generate-words.js +25 -0
  267. package/dist/workflows/generate-words.js.map +1 -0
  268. package/dist/workflows/generate.d.ts +59 -0
  269. package/dist/workflows/generate.d.ts.map +1 -0
  270. package/dist/workflows/generate.js +165 -0
  271. package/dist/workflows/generate.js.map +1 -0
  272. package/dist/workflows/judging.d.ts +17 -0
  273. package/dist/workflows/judging.d.ts.map +1 -0
  274. package/dist/workflows/judging.js +11 -0
  275. package/dist/workflows/judging.js.map +1 -0
  276. package/dist/workflows/next.d.ts +18 -0
  277. package/dist/workflows/next.d.ts.map +1 -0
  278. package/dist/workflows/next.js +75 -0
  279. package/dist/workflows/next.js.map +1 -0
  280. package/dist/workflows/on-the-map.d.ts +79 -0
  281. package/dist/workflows/on-the-map.d.ts.map +1 -0
  282. package/dist/workflows/on-the-map.js +96 -0
  283. package/dist/workflows/on-the-map.js.map +1 -0
  284. package/dist/workflows/policies.d.ts +39 -0
  285. package/dist/workflows/policies.d.ts.map +1 -0
  286. package/dist/workflows/policies.js +95 -0
  287. package/dist/workflows/policies.js.map +1 -0
  288. package/dist/workflows/resolve.d.ts +55 -0
  289. package/dist/workflows/resolve.d.ts.map +1 -0
  290. package/dist/workflows/resolve.js +57 -0
  291. package/dist/workflows/resolve.js.map +1 -0
  292. package/dist/workflows/schedule.d.ts +28 -0
  293. package/dist/workflows/schedule.d.ts.map +1 -0
  294. package/dist/workflows/schedule.js +160 -0
  295. package/dist/workflows/schedule.js.map +1 -0
  296. package/dist/workflows/step-act.d.ts +6 -0
  297. package/dist/workflows/step-act.d.ts.map +1 -0
  298. package/dist/workflows/step-act.js +79 -0
  299. package/dist/workflows/step-act.js.map +1 -0
  300. package/dist/workflows/step-agent.d.ts +4 -0
  301. package/dist/workflows/step-agent.d.ts.map +1 -0
  302. package/dist/workflows/step-agent.js +55 -0
  303. package/dist/workflows/step-agent.js.map +1 -0
  304. package/dist/workflows/step-archive.d.ts +8 -0
  305. package/dist/workflows/step-archive.d.ts.map +1 -0
  306. package/dist/workflows/step-archive.js +74 -0
  307. package/dist/workflows/step-archive.js.map +1 -0
  308. package/dist/workflows/step-classify.d.ts +25 -0
  309. package/dist/workflows/step-classify.d.ts.map +1 -0
  310. package/dist/workflows/step-classify.js +160 -0
  311. package/dist/workflows/step-classify.js.map +1 -0
  312. package/dist/workflows/step-generate.d.ts +7 -0
  313. package/dist/workflows/step-generate.d.ts.map +1 -0
  314. package/dist/workflows/step-generate.js +185 -0
  315. package/dist/workflows/step-generate.js.map +1 -0
  316. package/dist/workflows/steps.d.ts +75 -0
  317. package/dist/workflows/steps.d.ts.map +1 -0
  318. package/dist/workflows/steps.js +40 -0
  319. package/dist/workflows/steps.js.map +1 -0
  320. package/dist/workflows/triggered.d.ts +35 -0
  321. package/dist/workflows/triggered.d.ts.map +1 -0
  322. package/dist/workflows/triggered.js +69 -0
  323. package/dist/workflows/triggered.js.map +1 -0
  324. package/dist/workflows/values.d.ts +28 -0
  325. package/dist/workflows/values.d.ts.map +1 -0
  326. package/dist/workflows/values.js +75 -0
  327. package/dist/workflows/values.js.map +1 -0
  328. package/dist/workflows/words.d.ts +10 -0
  329. package/dist/workflows/words.d.ts.map +1 -0
  330. package/dist/workflows/words.js +30 -0
  331. package/dist/workflows/words.js.map +1 -0
  332. package/dist/workflows/world.d.ts +23 -0
  333. package/dist/workflows/world.d.ts.map +1 -0
  334. package/dist/workflows/world.js +50 -0
  335. package/dist/workflows/world.js.map +1 -0
  336. package/dist/workflows.d.ts +35 -0
  337. package/dist/workflows.d.ts.map +1 -0
  338. package/dist/workflows.js +20 -0
  339. package/dist/workflows.js.map +1 -0
  340. package/package.json +12 -2
@@ -34,6 +34,17 @@ import { NOTION_EDGE, NOTION_FITS, NOTION_LEFT_ALONE, NOTION_READ_ONLY, notionFi
34
34
  * type `NOTION_EDGE`): its value is the ids of the pages it reaches, every
35
35
  * one of them — Notion lists 25 on a page and the rest through the
36
36
  * property's own endpoint, which is followed — and it is written whole.
37
+ * - SEVERAL DATA SOURCES of one database are kept by one transport, each
38
+ * its own resource (`sources`): a pull reads each in turn, with a cursor
39
+ * of its own, and a push writes each page to the source its resource is.
40
+ * - THE PROPERTIES A MAPPING NEEDS ARE MADE (`make`): a name that finds no
41
+ * property, and has a property to make, is given one by changing the
42
+ * data source (PATCH /data_sources/{id}), each pull that finds it missing;
43
+ * a relation's is made to the source of this transport it links. Nothing
44
+ * there is renamed or deleted, and a property of another type is said and
45
+ * left. What was made is said in the pull's `said`, as every note is the
46
+ * first time; with several sources each sentence names its kind, and
47
+ * `saidOf` keeps each with its resource (request:notion-said-names-its-source).
37
48
  * - Notion asking us to slow down (429) is waited out as its `Retry-After`
38
49
  * says, within a bound; a refused secret (401) and a database the
39
50
  * integration cannot see (404) are said as sentences that say what to do.
@@ -171,17 +182,44 @@ function valuesOf(page) {
171
182
  export function notionVersion(page) {
172
183
  return `${String(page["last_edited_time"] ?? "")}~${hashOf(valuesOf(page))}`;
173
184
  }
174
- const readCursor = (cursor) => {
185
+ const oneCursor = (parsed) => parsed && typeof parsed.swept === "number" ? { swept: parsed.swept, ...(typeof parsed.since === "string" ? { since: parsed.since } : {}) } : undefined;
186
+ /** Each resource's cursor: a connection of one source keeps its own as it always has; one of several keeps them by resource (`by`). */
187
+ const readCursors = (cursor) => {
188
+ const out = new Map();
175
189
  if (!cursor)
176
- return undefined;
190
+ return out;
177
191
  try {
178
192
  const parsed = JSON.parse(cursor);
179
- return typeof parsed.swept === "number" ? { swept: parsed.swept, ...(typeof parsed.since === "string" ? { since: parsed.since } : {}) } : undefined;
193
+ const single = oneCursor(parsed);
194
+ if (single)
195
+ out.set("pages", single);
196
+ for (const [resource, one] of Object.entries(parsed.by ?? {})) {
197
+ const read = oneCursor(one);
198
+ if (read)
199
+ out.set(resource, read);
200
+ }
180
201
  }
181
202
  catch {
182
- return undefined;
203
+ // A cursor this build cannot read is a whole read, as none is.
183
204
  }
205
+ return out;
184
206
  };
207
+ /** A property's settings as Notion takes them when one is made. */
208
+ function madeSettings(made, linked) {
209
+ switch (made.type) {
210
+ case "select":
211
+ case "multi_select":
212
+ return { [made.type]: { options: (made.options ?? []).map((name) => ({ name })) } };
213
+ case "number":
214
+ return { number: { format: "number" } };
215
+ case "relation":
216
+ return { relation: { data_source_id: linked, type: "single_property", single_property: {} } };
217
+ default:
218
+ return { [made.type]: {} };
219
+ }
220
+ }
221
+ /** "Status, Due and Owner". */
222
+ const listed = (names) => (names.length <= 1 ? names.join("") : `${names.slice(0, -1).join(", ")} and ${names.at(-1)}`);
185
223
  export function notion(options) {
186
224
  const doFetch = options.fetch ?? globalThis.fetch;
187
225
  const base = options.baseUrl ?? NOTION_API;
@@ -191,10 +229,14 @@ export function notion(options) {
191
229
  const sleep = options.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
192
230
  const maxWait = options.maxWait ?? 60_000;
193
231
  const said = new Set();
194
- const note = (line) => {
195
- if (said.has(line))
232
+ /* What was said for the first time since the last pull returned, each with the resource it is of: the pull's `said` and `saidOf`. */
233
+ let fresh = [];
234
+ const note = (line, resource) => {
235
+ const key = `${resource ?? ""}\n${line}`;
236
+ if (said.has(key))
196
237
  return;
197
- said.add(line);
238
+ said.add(key);
239
+ fresh.push({ ...(resource ? { resource } : {}), sentence: line });
198
240
  options.say?.(line);
199
241
  };
200
242
  /** One request, Notion's rate limit waited out; anything but a yes thrown as a `NotionError`. */
@@ -233,11 +275,11 @@ export function notion(options) {
233
275
  throw new NotionError(`notion: HTTP ${response.status}${code ? ` ${code}` : ""}${said ? `: ${said}` : ""}`, response.status, code);
234
276
  }
235
277
  };
236
- /** The data source this connection keeps in step: the database's only one, or the one `source` names. */
237
- let sourceId;
238
- const dataSource = async () => {
239
- if (sourceId)
240
- return sourceId;
278
+ /** The database, read once: its title and its data sources. */
279
+ let held;
280
+ const databaseOf = async () => {
281
+ if (held)
282
+ return held;
241
283
  let answer;
242
284
  try {
243
285
  answer = await call("GET", `/databases/${encodeURIComponent(databaseId)}`);
@@ -251,88 +293,226 @@ export function notion(options) {
251
293
  }
252
294
  throw error;
253
295
  }
254
- const sources = (answer["data_sources"] ?? []).map((one) => ({ id: String(one["id"]), name: String(one["name"] ?? "") }));
255
- const title = (answer["title"] ?? []).map((part) => String(part["plain_text"] ?? "")).join("") || databaseId;
256
- const named = options.source;
257
- const chosen = named
258
- ? (sources.find((one) => notionKey(one.id) === notionKey(named)) ?? sources.find((one) => one.name === named) ?? sources.find((one) => loose(one.name) === loose(named)))
259
- : sources.length === 1
260
- ? sources[0]
261
- : undefined;
262
- if (!chosen) {
263
- const list = sources.map((one) => one.name || one.id).join(", ");
264
- throw new NotionError(named
265
- ? `notion: the database ${title} has no data source ${named}; it holds ${list || "none"}`
266
- : `notion: the database ${title} holds ${sources.length} data sources — ${list} — so the connection says which with source`, 400, "validation_error");
267
- }
268
- sourceId = chosen.id;
269
- return chosen.id;
270
- };
271
- /** The data source's properties, by name — and a sentence when the integration cannot see it. */
272
- let schema;
273
- const database = async () => {
274
- const answer = await call("GET", `/data_sources/${encodeURIComponent(await dataSource())}`);
275
- const properties = new Map();
276
- for (const [name, property] of Object.entries(answer["properties"] ?? {})) {
277
- const type = String(property["type"]);
278
- const options = property[type]?.["options"] ?? [];
279
- properties.set(name, { name, type, options: options.map((option) => String(option["name"])) });
280
- }
281
- schema = properties;
282
- return properties;
283
- };
284
- /** The mapping's names, each to the property it finds: by name, loosely, and the title for `titleRef`. */
285
- const resolve = (properties) => {
286
- const found = resolveRefs(properties);
287
- // What is kept in step by nothing, said once: a formula, a rollup, a relation no relation here holds.
288
- const held = new Set([...found.values()].map((property) => property.name));
289
- const alone = [...properties.values()].filter((property) => !NOTION_FITS[property.type] && !held.has(property.name));
290
- if (alone.length > 0) {
291
- note(`left alone in Notion: ${alone.map((property) => `${property.name} (${property.type}${NOTION_LEFT_ALONE[property.type] ? `: ${NOTION_LEFT_ALONE[property.type]}` : ""})`).join(", ")}`);
292
- }
293
- return found;
296
+ held = {
297
+ title: (answer["title"] ?? []).map((part) => String(part["plain_text"] ?? "")).join("") || databaseId,
298
+ sources: (answer["data_sources"] ?? []).map((one) => ({ id: String(one["id"]), name: String(one["name"] ?? "") })),
299
+ };
300
+ return held;
294
301
  };
295
- const resolveRefs = (properties) => {
296
- const found = new Map();
297
- if (!options.refs) {
298
- for (const property of properties.values())
299
- if (NOTION_FITS[property.type])
300
- found.set(property.name, property);
302
+ const declared = options.sources ?? [
303
+ {
304
+ resource: "pages",
305
+ ...(options.source ? { source: options.source } : {}),
306
+ ...(options.refs ? { refs: options.refs } : {}),
307
+ ...(options.quiet ? { quiet: options.quiet } : {}),
308
+ ...(options.titleRef ? { titleRef: options.titleRef } : {}),
309
+ ...(options.make ? { make: options.make } : {}),
310
+ },
311
+ ];
312
+ /** One data source, kept as one resource: its id, its properties, and the pages it reads and writes. */
313
+ const keeper = (spec) => {
314
+ /*
315
+ * WHICH SOURCE A SENTENCE IS OF (request:notion-said-names-its-source):
316
+ * with several, every sentence names its kind — " for <kind>", or
317
+ * "<kind>'s <name>" — and each is kept with its resource beside it.
318
+ */
319
+ const several = declared.length > 1;
320
+ const kindName = spec.resource.replace(/^pages:/, "");
321
+ const forKind = several ? ` for ${kindName}` : "";
322
+ const refOf = (ref) => (several ? `${kindName}'s ${ref}` : ref);
323
+ const noteHere = (line) => note(line, spec.resource);
324
+ let sourceId;
325
+ /** Its id: the database's only source, or the one `source` names. */
326
+ const dataSource = async () => {
327
+ if (sourceId)
328
+ return sourceId;
329
+ const { title, sources } = await databaseOf();
330
+ const named = spec.source;
331
+ const chosen = named
332
+ ? (sources.find((one) => notionKey(one.id) === notionKey(named)) ?? sources.find((one) => one.name === named) ?? sources.find((one) => loose(one.name) === loose(named)))
333
+ : sources.length === 1
334
+ ? sources[0]
335
+ : undefined;
336
+ if (!chosen) {
337
+ const list = sources.map((one) => one.name || one.id).join(", ");
338
+ throw new NotionError(named
339
+ ? `notion: the database ${title} has no data source ${named}; it holds ${list || "none"}`
340
+ : `notion: the database ${title} holds ${sources.length} data sources — ${list} — so the connection says which with source`, 400, "validation_error");
341
+ }
342
+ sourceId = chosen.id;
343
+ return chosen.id;
344
+ };
345
+ /** Its properties, by name. */
346
+ let schema;
347
+ const readSchema = async () => {
348
+ const answer = await call("GET", `/data_sources/${encodeURIComponent(await dataSource())}`);
349
+ const properties = new Map();
350
+ for (const [name, property] of Object.entries(answer["properties"] ?? {})) {
351
+ const type = String(property["type"]);
352
+ const listed = property[type]?.["options"] ?? [];
353
+ properties.set(name, { name, type, options: listed.map((option) => String(option["name"])) });
354
+ }
355
+ schema = properties;
356
+ return properties;
357
+ };
358
+ /** The property a mapping's name finds: by name, loosely, and the title for `titleRef`. */
359
+ const find = (properties, ref) => {
360
+ const byLoose = [...properties.values()].find((property) => loose(property.name) === loose(ref));
361
+ return properties.get(ref) ?? byLoose ?? (ref === spec.titleRef ? [...properties.values()].find((property) => property.type === "title") : undefined);
362
+ };
363
+ /**
364
+ * THE PROPERTIES IT LACKS, MADE: each name of `make` that finds no
365
+ * property is given one in a single change of the data source; a
366
+ * relation's links the source of the resource it names. Said once, as
367
+ * a sentence; a refusal is said and the pass goes on without them.
368
+ */
369
+ const makeMissing = async (properties) => {
370
+ if (!spec.make)
371
+ return properties;
372
+ const wanted = {};
373
+ const names = [];
374
+ for (const [ref, made] of Object.entries(spec.make)) {
375
+ if (find(properties, ref))
376
+ continue;
377
+ let linked;
378
+ if (made.type === "relation") {
379
+ const other = keepers.find((one) => one.resource === made.to);
380
+ if (!other)
381
+ continue;
382
+ linked = await other.dataSource();
383
+ }
384
+ const name = made.name ?? ref;
385
+ wanted[name] = madeSettings(made, linked);
386
+ names.push(name);
387
+ }
388
+ if (names.length === 0)
389
+ return properties;
390
+ try {
391
+ await call("PATCH", `/data_sources/${encodeURIComponent(await dataSource())}`, { properties: wanted });
392
+ }
393
+ catch (error) {
394
+ noteHere(`could not make ${listed(names)} in Notion${forKind}: ${error instanceof Error ? error.message.replace(/^notion: /, "") : String(error)}`);
395
+ return properties;
396
+ }
397
+ noteHere(`Made ${names.length} ${names.length === 1 ? "property" : "properties"} in Notion${forKind}: ${listed(names)}`);
398
+ return readSchema();
399
+ };
400
+ /** The mapping's names, each to the property it finds. */
401
+ const resolve = (properties) => {
402
+ const found = resolveRefs(properties);
403
+ // What is kept in step by nothing, said once: a formula, a rollup, a relation no relation here holds.
404
+ const kept = new Set([...found.values()].map((property) => property.name));
405
+ const alone = [...properties.values()].filter((property) => !NOTION_FITS[property.type] && !kept.has(property.name));
406
+ if (alone.length > 0) {
407
+ noteHere(`left alone in Notion${forKind}: ${alone.map((property) => `${property.name} (${property.type}${NOTION_LEFT_ALONE[property.type] ? `: ${NOTION_LEFT_ALONE[property.type]}` : ""})`).join(", ")}`);
408
+ }
301
409
  return found;
302
- }
303
- const byLoose = new Map([...properties.values()].map((property) => [loose(property.name), property]));
304
- const title = [...properties.values()].find((property) => property.type === "title");
305
- const missing = [];
306
- for (const [ref, fieldType] of Object.entries(options.refs)) {
307
- const property = properties.get(ref) ?? byLoose.get(loose(ref)) ?? (ref === options.titleRef ? title : undefined);
308
- if (!property) {
309
- if (!options.quiet?.includes(ref))
310
- missing.push(ref);
311
- continue;
410
+ };
411
+ const resolveRefs = (properties) => {
412
+ const found = new Map();
413
+ if (!spec.refs) {
414
+ for (const property of properties.values())
415
+ if (NOTION_FITS[property.type])
416
+ found.set(property.name, property);
417
+ return found;
312
418
  }
313
- if (fieldType === NOTION_EDGE || property.type === "relation") {
314
- if (fieldType === NOTION_EDGE && property.type === "relation")
315
- found.set(ref, property);
316
- else if (fieldType === NOTION_EDGE)
317
- note(`${ref}: the property ${property.name} is a ${property.type} property, and a relation holds only a relation property, so it is left out`);
318
- else
319
- note(`${ref}: the property ${property.name} is a relation, which a relation of the kind holds and a field does not, so it is left out`);
320
- continue;
419
+ const missing = [];
420
+ for (const [ref, fieldType] of Object.entries(spec.refs)) {
421
+ const property = find(properties, ref);
422
+ if (!property) {
423
+ if (!spec.quiet?.includes(ref))
424
+ missing.push(ref);
425
+ continue;
426
+ }
427
+ if (fieldType === NOTION_EDGE || property.type === "relation") {
428
+ if (fieldType === NOTION_EDGE && property.type === "relation")
429
+ found.set(ref, property);
430
+ else if (fieldType === NOTION_EDGE)
431
+ noteHere(`${refOf(ref)}: the property ${property.name} is a ${property.type} property, and a relation holds only a relation property, so it is left out`);
432
+ else
433
+ noteHere(`${refOf(ref)}: the property ${property.name} is a relation, which a relation of the kind holds and a field does not, so it is left out`);
434
+ continue;
435
+ }
436
+ if (!NOTION_FITS[property.type]) {
437
+ noteHere(`${refOf(ref)}: the property ${property.name} is a ${property.type} property, which is not kept in step, so it is left out`);
438
+ continue;
439
+ }
440
+ if (fieldType && !notionFits(property.type, fieldType)) {
441
+ noteHere(`${refOf(ref)}: the property ${property.name} is a ${property.type} property, and a ${fieldType} field cannot hold it, so it is left out`);
442
+ continue;
443
+ }
444
+ found.set(ref, property);
321
445
  }
322
- if (!NOTION_FITS[property.type]) {
323
- note(`${ref}: the property ${property.name} is a ${property.type} property, which is not kept in step, so it is left out`);
324
- continue;
446
+ if (missing.length > 0)
447
+ noteHere(`no property in the ${several ? `data source for ${kindName}` : "database"} for ${missing.join(", ")}, so ${missing.length === 1 ? "it is" : "they are"} not kept in step`);
448
+ return found;
449
+ };
450
+ /** Every page of one query: edited on or after `since`, oldest first; without it, the whole source. */
451
+ const query = async (since) => {
452
+ const pages = [];
453
+ let start;
454
+ for (;;) {
455
+ const answer = await call("POST", `/data_sources/${encodeURIComponent(await dataSource())}/query`, {
456
+ page_size: options.pageSize ?? 100,
457
+ sorts: [{ timestamp: "last_edited_time", direction: "ascending" }],
458
+ ...(since ? { filter: { timestamp: "last_edited_time", last_edited_time: { on_or_after: since } } } : {}),
459
+ ...(start ? { start_cursor: start } : {}),
460
+ });
461
+ pages.push(...(answer["results"] ?? []));
462
+ if (answer["has_more"] === true && typeof answer["next_cursor"] === "string") {
463
+ start = answer["next_cursor"];
464
+ continue;
465
+ }
466
+ return pages;
325
467
  }
326
- if (fieldType && !notionFits(property.type, fieldType)) {
327
- note(`${ref}: the property ${property.name} is a ${property.type} property, and a ${fieldType} field cannot hold it, so it is left out`);
328
- continue;
468
+ };
469
+ /** Whether a page this sync knew is gone from the source: archived, in the trash, moved out, or not there at all. */
470
+ const goneFromSource = async (id) => {
471
+ try {
472
+ const page = await call("GET", `/pages/${encodeURIComponent(id)}`);
473
+ const parent = page["parent"];
474
+ return page["archived"] === true || page["in_trash"] === true || notionKey(String(parent?.["data_source_id"] ?? "")) !== notionKey(await dataSource());
329
475
  }
330
- found.set(ref, property);
331
- }
332
- if (missing.length > 0)
333
- note(`no property in the database for ${missing.join(", ")}, so ${missing.length === 1 ? "it is" : "they are"} not kept in step`);
334
- return found;
476
+ catch (error) {
477
+ if (error instanceof NotionError && error.status === 404)
478
+ return true;
479
+ throw error;
480
+ }
481
+ };
482
+ /** Its properties as this pass keeps them: read, what it lacks made, resolved. */
483
+ const ready = async () => resolve(await makeMissing(await readSchema()));
484
+ return {
485
+ resource: spec.resource,
486
+ dataSource,
487
+ ready,
488
+ /** What a push resolves against: the properties the last pull read, or read now. */
489
+ resolved: async () => (schema ? resolve(schema) : ready()),
490
+ async pull(at, resolved, time) {
491
+ const whole = !at || time - at.swept >= (options.sweepEvery ?? DEFAULT_SWEEP);
492
+ const pages = await query(whole ? undefined : at.since);
493
+ let since = at?.since;
494
+ const changes = [];
495
+ for (const page of pages) {
496
+ const edited = String(page["last_edited_time"] ?? "");
497
+ if (edited && (!since || edited > since))
498
+ since = edited;
499
+ const archived = page["archived"] === true || page["in_trash"] === true;
500
+ changes.push({ resource: spec.resource, id: String(page["id"]), version: notionVersion(page), ...(archived ? { deleted: true } : { fields: await fieldsOf(page, resolved) }) });
501
+ }
502
+ if (whole && options.known) {
503
+ const listedHere = new Set(pages.map((page) => notionKey(String(page["id"]))));
504
+ for (const id of options.known(spec.resource)) {
505
+ if (listedHere.has(notionKey(id)))
506
+ continue;
507
+ if (await goneFromSource(id))
508
+ changes.push({ resource: spec.resource, id, version: "gone", deleted: true });
509
+ }
510
+ }
511
+ return { changes, cursor: { ...(since ? { since } : {}), swept: whole ? time : at.swept } };
512
+ },
513
+ };
335
514
  };
515
+ const keepers = declared.map(keeper);
336
516
  const fieldsOf = async (page, resolved) => {
337
517
  const properties = page["properties"] ?? {};
338
518
  const out = {};
@@ -363,72 +543,38 @@ export function notion(options) {
363
543
  return ids.length > 0 ? ids : null;
364
544
  }
365
545
  };
366
- /** Every page of one query: edited on or after `since`, oldest first; without it, the whole database. */
367
- const query = async (since) => {
368
- const pages = [];
369
- let start;
370
- for (;;) {
371
- const answer = await call("POST", `/data_sources/${encodeURIComponent(await dataSource())}/query`, {
372
- page_size: options.pageSize ?? 100,
373
- sorts: [{ timestamp: "last_edited_time", direction: "ascending" }],
374
- ...(since ? { filter: { timestamp: "last_edited_time", last_edited_time: { on_or_after: since } } } : {}),
375
- ...(start ? { start_cursor: start } : {}),
376
- });
377
- pages.push(...(answer["results"] ?? []));
378
- if (answer["has_more"] === true && typeof answer["next_cursor"] === "string") {
379
- start = answer["next_cursor"];
380
- continue;
381
- }
382
- return pages;
383
- }
384
- };
385
- /** Whether a page this sync knew is gone from the database: archived, in the trash, moved out, or not there at all. */
386
- const goneFromDatabase = async (id) => {
387
- try {
388
- const page = await call("GET", `/pages/${encodeURIComponent(id)}`);
389
- const parent = page["parent"];
390
- return page["archived"] === true || page["in_trash"] === true || notionKey(String(parent?.["data_source_id"] ?? "")) !== notionKey(await dataSource());
391
- }
392
- catch (error) {
393
- if (error instanceof NotionError && error.status === 404)
394
- return true;
395
- throw error;
396
- }
397
- };
398
546
  return {
399
547
  name: "notion",
400
548
  async pull(cursor) {
401
- const resolved = resolve(await database());
402
- const at = readCursor(cursor);
549
+ fresh = [];
403
550
  const time = now();
404
- const whole = !at || time - at.swept >= (options.sweepEvery ?? DEFAULT_SWEEP);
405
- const pages = await query(whole ? undefined : at.since);
406
- let since = at?.since;
551
+ const cursors = readCursors(cursor);
552
+ // Every source made ready first: a relation made on one links another's source.
553
+ const resolved = new Map();
554
+ for (const one of keepers)
555
+ resolved.set(one.resource, await one.ready());
407
556
  const changes = [];
408
- for (const page of pages) {
409
- const edited = String(page["last_edited_time"] ?? "");
410
- if (edited && (!since || edited > since))
411
- since = edited;
412
- const archived = page["archived"] === true || page["in_trash"] === true;
413
- changes.push({ resource: "pages", id: String(page["id"]), version: notionVersion(page), ...(archived ? { deleted: true } : { fields: await fieldsOf(page, resolved) }) });
414
- }
415
- if (whole && options.known) {
416
- const listed = new Set(pages.map((page) => notionKey(String(page["id"]))));
417
- for (const id of options.known()) {
418
- if (listed.has(notionKey(id)))
419
- continue;
420
- if (await goneFromDatabase(id))
421
- changes.push({ resource: "pages", id, version: "gone", deleted: true });
422
- }
557
+ const next = new Map();
558
+ for (const one of keepers) {
559
+ const pulled = await one.pull(cursors.get(one.resource), resolved.get(one.resource), time);
560
+ changes.push(...pulled.changes);
561
+ next.set(one.resource, pulled.cursor);
423
562
  }
424
- return { changes, cursor: JSON.stringify({ ...(since ? { since } : {}), swept: whole ? time : at.swept }) };
563
+ // One source of `pages` keeps its cursor as it always has; several keep theirs by resource.
564
+ const only = keepers.length === 1 && keepers[0].resource === "pages" ? next.get("pages") : undefined;
565
+ const written = only ?? { by: Object.fromEntries(next) };
566
+ const saidOf = fresh;
567
+ fresh = [];
568
+ return { changes, cursor: JSON.stringify(written), ...(saidOf.length > 0 ? { said: saidOf.map((one) => one.sentence), saidOf } : {}) };
425
569
  },
426
570
  async push(writes) {
427
- const resolved = resolve(schema ?? (await database()));
428
571
  const acks = [];
429
572
  for (const write of writes) {
430
573
  try {
431
- acks.push(await one(write, resolved));
574
+ const one = keepers.find((keeper) => keeper.resource === write.resource) ?? (keepers.length === 1 ? keepers[0] : undefined);
575
+ if (!one)
576
+ throw new Error(`notion: no data source here keeps ${write.resource}`);
577
+ acks.push(await writeOne(write, await one.resolved(), one.dataSource));
432
578
  }
433
579
  catch (error) {
434
580
  // One refusal is not a failed run: the engine keeps the local state for this write and says so.
@@ -438,7 +584,7 @@ export function notion(options) {
438
584
  return acks;
439
585
  },
440
586
  };
441
- async function one(write, resolved) {
587
+ async function writeOne(write, resolved, dataSource) {
442
588
  if (write.deleted && write.id) {
443
589
  try {
444
590
  await call("PATCH", `/pages/${encodeURIComponent(write.id)}`, { in_trash: true });
@@ -1 +1 @@
1
- {"version":3,"file":"notion.js","sourceRoot":"","sources":["../../src/sync/notion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notion.js","sourceRoot":"","sources":["../../src/sync/notion.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG9G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,2BAA2B,CAAC;AACtD,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC;AAuE3C,mDAAmD;AACnD,MAAM,OAAO,WAAY,SAAQ,KAAK;IAGzB;IACA;IAHX,YACE,OAAe,EACN,MAAc,EACd,IAAa;QAEtB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHN,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAS;QAGtB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAUD,4HAA4H;AAC5H,SAAS,QAAQ,CAAC,QAAkB,EAAE,KAAc;IAClD,MAAM,GAAG,GAAG,CAAC,IAAa,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpM,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAErC,kEAAkE;AAClE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAC5E,6EAA6E;AAC7E,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAE7E,iCAAiC;AACjC,MAAM,UAAU,WAAW,CAAC,QAAc;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO,CAAC;QACb,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,IAAI,GAAG,CAAE,GAA0B,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAK,IAAI,CAAC,MAAM,CAAsB,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7J,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACnC,CAAC;QACD,KAAK,QAAQ;YACX,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9C,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAE,GAAY,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACjF,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,KAAK,GAAG,CAAE,GAA0B,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1F,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACzC,CAAC;QACD,KAAK,MAAM;YACT,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAE,GAAY,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAClF,KAAK,UAAU;YACb,OAAO,GAAG,KAAK,IAAI,CAAC;QACtB,KAAK,KAAK,CAAC;QACX,KAAK,OAAO,CAAC;QACb,KAAK,cAAc;YACjB,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5D,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,KAAK,GAAG,CAAE,GAA0B,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1G,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACzC,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,GAAG,GAAG,CAAE,GAA0B,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClF,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QACrC,CAAC;QACD;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,kHAAkH;AAClH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,MAAM,IAAI,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClH,MAAM,MAAM,GAAW,EAAE,CAAC;IAC1B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,GAAI,CAAC;QACpC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACtC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM;YAAE,GAAG,IAAI,CAAC,CAAC;QACpE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QACtE,EAAE,GAAG,GAAG,CAAC;IACX,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,MAAM,qDAAqD,SAAS,GAAG,WAAW,GAAG,CAAC,CAAC;IACzH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,KAAc;IACzD,MAAM,KAAK,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC;IACpE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO,CAAC;QACb,KAAK,WAAW;YACd,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,KAAK,QAAQ;YACX,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QAC5D,KAAK,cAAc;YACjB,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACzH,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QAC3D,KAAK,UAAU;YACb,OAAO,EAAE,QAAQ,EAAE,KAAK,KAAK,IAAI,EAAE,CAAC;QACtC,KAAK,KAAK,CAAC;QACX,KAAK,OAAO,CAAC;QACb,KAAK,cAAc;YACjB,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,KAAK,UAAU;YACb,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC/G;YACE,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,oCAAoC,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,mGAAmG;AACnG,SAAS,MAAM,CAAC,MAAY;IAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACjG,IAAI,IAAI,GAAG,UAAU,CAAC;IACtB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;QACxC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,oEAAoE;AACpE,SAAS,QAAQ,CAAC,IAAU;IAC1B,MAAM,GAAG,GAAS,EAAE,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAE,IAAI,CAAC,YAAY,CAAsC,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9G,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,UAAU;YAAE,SAAS;QACxF,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,aAAa,CAAC,IAAU;IACtC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AAC/E,CAAC;AAMD,MAAM,SAAS,GAAG,CAAC,MAAmC,EAAsB,EAAE,CAC5E,MAAM,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACzJ,uIAAuI;AACvI,MAAM,WAAW,GAAG,CAAC,MAA0B,EAAuB,EAAE;IACtE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,IAAI,CAAC,MAAM;QAAE,OAAO,GAAG,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA+D,CAAC;QAChG,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,MAAM;YAAE,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACrC,KAAK,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,IAAI;gBAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,+DAA+D;IACjE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,mEAAmE;AACnE,SAAS,YAAY,CAAC,IAAgB,EAAE,MAAe;IACrD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ,CAAC;QACd,KAAK,cAAc;YACjB,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QACtF,KAAK,QAAQ;YACX,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC1C,KAAK,UAAU;YACb,OAAO,EAAE,QAAQ,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,eAAe,EAAE,EAAE,EAAE,EAAE,CAAC;QAChG;YACE,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,+BAA+B;AAC/B,MAAM,MAAM,GAAG,CAAC,KAAwB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAE3I,MAAM,UAAU,MAAM,CAAC,OAAsB;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,IAAK,UAAU,CAAC,KAAiB,CAAC;IAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC;IAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,IAAI,0BAA0B,CAAC;IAChE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACzG,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,qIAAqI;IACrI,IAAI,KAAK,GAA8C,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,QAAiB,EAAE,EAAE;QAC/C,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,iGAAiG;IACjG,MAAM,IAAI,GAAG,KAAK,EAAE,MAAc,EAAE,IAAY,EAAE,IAAW,EAAiB,EAAE;QAC9E,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,SAAS,CAAC;YACR,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE;gBAC/C,MAAM;gBACN,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,MAAM,OAAO,CAAC,KAAK,EAAE,EAAE;oBAChD,gBAAgB,EAAE,cAAc;oBAChC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChD,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;gBACjE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC1F,IAAI,MAAM,GAAG,IAAI,GAAG,OAAO;oBAAE,MAAM,IAAI,WAAW,CAAC,mDAAmD,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;gBAC3M,MAAM,IAAI,IAAI,CAAC;gBACf,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClB,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAS,CAAC;YACjE,IAAI,QAAQ,CAAC,EAAE;gBAAE,OAAO,MAAM,CAAC;YAC/B,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7E,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,IAAI,WAAW,CAAC,0BAA0B,MAAM,oIAAoI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACzM,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,IAAI,WAAW,CAAC,iHAAiH,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACtJ,CAAC;YACD,MAAM,IAAI,WAAW,CAAC,gBAAgB,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACrI,CAAC;IACH,CAAC,CAAC;IAEF,+DAA+D;IAC/D,IAAI,IAAyH,CAAC;IAC9H,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;QAC5B,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QACtB,IAAI,MAAY,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,cAAc,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACzD,MAAM,IAAI,WAAW,CACnB,iDAAiD,UAAU,kHAAkH,EAC7K,GAAG,EACH,KAAK,CAAC,IAAI,CACX,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACzD,MAAM,IAAI,WAAW,CAAC,WAAW,UAAU,iHAAiH,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACtO,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QACD,IAAI,GAAG;YACL,KAAK,EAAE,CAAE,MAAM,CAAC,OAAO,CAAwB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,UAAU;YAC7H,OAAO,EAAE,CAAE,MAAM,CAAC,cAAc,CAAwB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;SAC3I,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAmC,OAAO,CAAC,OAAO,IAAI;QAClE;YACE,QAAQ,EAAE,OAAO;YACjB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChD;KACF,CAAC;IAEF,wGAAwG;IACxG,MAAM,MAAM,GAAG,CAAC,IAAyB,EAAE,EAAE;QAC3C;;;;WAIG;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,QAA4B,CAAC;QACjC,qEAAqE;QACrE,MAAM,UAAU,GAAG,KAAK,IAAqB,EAAE;YAC7C,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC;YAC9B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1B,MAAM,MAAM,GAAG,KAAK;gBAClB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzK,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;oBACpB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;oBACZ,CAAC,CAAC,SAAS,CAAC;YAChB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjE,MAAM,IAAI,WAAW,CACnB,KAAK;oBACH,CAAC,CAAC,wBAAwB,KAAK,uBAAuB,KAAK,cAAc,IAAI,IAAI,MAAM,EAAE;oBACzF,CAAC,CAAC,wBAAwB,KAAK,UAAU,OAAO,CAAC,MAAM,mBAAmB,IAAI,6CAA6C,EAC7H,GAAG,EACH,kBAAkB,CACnB,CAAC;YACJ,CAAC;YACD,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;YACrB,OAAO,MAAM,CAAC,EAAE,CAAC;QACnB,CAAC,CAAC;QAEF,+BAA+B;QAC/B,IAAI,MAAyC,CAAC;QAC9C,MAAM,UAAU,GAAG,KAAK,IAAoC,EAAE;YAC5D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,iBAAiB,kBAAkB,CAAC,MAAM,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;YAC5F,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;YAC/C,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAE,MAAM,CAAC,YAAY,CAAsC,IAAI,EAAE,CAAC,EAAE,CAAC;gBAChH,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBACtC,MAAM,MAAM,GAAK,QAAQ,CAAC,IAAI,CAAsB,EAAE,CAAC,SAAS,CAAwB,IAAI,EAAE,CAAC;gBAC/F,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChG,CAAC;YACD,MAAM,GAAG,UAAU,CAAC;YACpB,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC;QAEF,2FAA2F;QAC3F,MAAM,IAAI,GAAG,CAAC,UAAiC,EAAE,GAAW,EAAwB,EAAE;YACpF,MAAM,OAAO,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACjG,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACxJ,CAAC,CAAC;QAEF;;;;;WAKG;QACH,MAAM,WAAW,GAAG,KAAK,EAAE,UAAiC,EAAkC,EAAE;YAC9F,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,OAAO,UAAU,CAAC;YAClC,MAAM,MAAM,GAAyB,EAAE,CAAC;YACxC,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpD,IAAI,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC;oBAAE,SAAS;gBACpC,IAAI,MAA0B,CAAC;gBAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC9D,IAAI,CAAC,KAAK;wBAAE,SAAS;oBACrB,MAAM,GAAG,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;gBACpC,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC1C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,UAAU,CAAC;YAC1C,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,OAAO,EAAE,iBAAiB,kBAAkB,CAAC,MAAM,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;YACzG,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CAAC,kBAAkB,MAAM,CAAC,KAAK,CAAC,aAAa,OAAO,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACpJ,OAAO,UAAU,CAAC;YACpB,CAAC;YACD,QAAQ,CAAC,QAAQ,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,aAAa,OAAO,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACzH,OAAO,UAAU,EAAE,CAAC;QACtB,CAAC,CAAC;QAEF,0DAA0D;QAC1D,MAAM,OAAO,GAAG,CAAC,UAAiC,EAAyB,EAAE;YAC3E,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;YACtC,sGAAsG;YACtG,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3E,MAAM,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACrH,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,QAAQ,CAAC,uBAAuB,OAAO,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7M,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QACF,MAAM,WAAW,GAAG,CAAC,UAAiC,EAAyB,EAAE;YAC/E,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,MAAM,EAAE;oBAAE,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;wBAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC/G,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC;wBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClD,SAAS;gBACX,CAAC;gBACD,IAAI,SAAS,KAAK,WAAW,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC9D,IAAI,SAAS,KAAK,WAAW,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU;wBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;yBACnF,IAAI,SAAS,KAAK,WAAW;wBAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,IAAI,SAAS,QAAQ,CAAC,IAAI,6EAA6E,CAAC,CAAC;;wBACzL,QAAQ,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,IAAI,4FAA4F,CAAC,CAAC;oBACxJ,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChC,QAAQ,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,IAAI,SAAS,QAAQ,CAAC,IAAI,yDAAyD,CAAC,CAAC;oBACtI,SAAS;gBACX,CAAC;gBACD,IAAI,SAAS,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;oBACvD,QAAQ,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,IAAI,SAAS,QAAQ,CAAC,IAAI,oBAAoB,SAAS,0CAA0C,CAAC,CAAC;oBACpJ,SAAS;gBACX,CAAC;gBACD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC3B,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,QAAQ,CAAC,sBAAsB,OAAO,CAAC,CAAC,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU,QAAQ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,mBAAmB,CAAC,CAAC;YAC7M,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,uGAAuG;QACvG,MAAM,KAAK,GAAG,KAAK,EAAE,KAAyB,EAAmB,EAAE;YACjE,MAAM,KAAK,GAAW,EAAE,CAAC;YACzB,IAAI,KAAyB,CAAC;YAC9B,SAAS,CAAC;gBACR,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,iBAAiB,kBAAkB,CAAC,MAAM,UAAU,EAAE,CAAC,QAAQ,EAAE;oBACjG,SAAS,EAAE,OAAO,CAAC,QAAQ,IAAI,GAAG;oBAClC,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;oBAClE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC1C,CAAC,CAAC;gBACH,KAAK,CAAC,IAAI,CAAC,GAAG,CAAE,MAAM,CAAC,SAAS,CAAwB,IAAI,EAAE,CAAC,CAAC,CAAC;gBACjE,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAC7E,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;oBAC9B,SAAS;gBACX,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC,CAAC;QAEF,qHAAqH;QACrH,MAAM,cAAc,GAAG,KAAK,EAAE,EAAU,EAAoB,EAAE;YAC5D,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,UAAU,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACnE,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAqB,CAAC;gBAClD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,MAAM,UAAU,EAAE,CAAC,CAAC;YACzJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG;oBAAE,OAAO,IAAI,CAAC;gBACtE,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC;QAEF,kFAAkF;QAClF,MAAM,KAAK,GAAG,KAAK,IAAoC,EAAE,CAAC,OAAO,CAAC,MAAM,WAAW,CAAC,MAAM,UAAU,EAAE,CAAC,CAAC,CAAC;QAEzG,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU;YACV,KAAK;YACL,oFAAoF;YACpF,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YAE1D,KAAK,CAAC,IAAI,CAAC,EAAsB,EAAE,QAA+B,EAAE,IAAY;gBAC9E,MAAM,KAAK,GAAG,CAAC,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,aAAa,CAAC,CAAC;gBAC9E,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;gBACxD,IAAI,KAAK,GAAG,EAAE,EAAE,KAAK,CAAC;gBACtB,MAAM,OAAO,GAAmB,EAAE,CAAC;gBACnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;oBACtD,IAAI,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,GAAG,KAAK,CAAC;wBAAE,KAAK,GAAG,MAAM,CAAC;oBACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;oBACxE,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAClL,CAAC;gBACD,IAAI,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBAC3B,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/E,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC9C,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;4BAAE,SAAS;wBAC5C,IAAI,MAAM,cAAc,CAAC,EAAE,CAAC;4BAAE,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC9G,CAAC;gBACH,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;YAC9F,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAErC,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAU,EAAE,QAA+B,EAAiB,EAAE;QACpF,MAAM,UAAU,GAAI,IAAI,CAAC,YAAY,CAAsC,IAAI,EAAE,CAAC;QAClF,MAAM,GAAG,GAAS,EAAE,CAAC;QACrB,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,+GAA+G;YAC/G,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACzJ,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,yGAAyG;IACzG,MAAM,UAAU,GAAG,KAAK,EAAE,MAAc,EAAE,UAAkB,EAA4B,EAAE;QACxF,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,IAAI,KAAyB,CAAC;QAC9B,SAAS,CAAC;YACR,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,UAAU,kBAAkB,CAAC,MAAM,CAAC,eAAe,kBAAkB,CAAC,UAAU,CAAC,iBAAiB,KAAK,CAAC,CAAC,CAAC,iBAAiB,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChM,KAAK,MAAM,IAAI,IAAK,MAAM,CAAC,SAAS,CAAwB,IAAI,EAAE,EAAE,CAAC;gBACnE,MAAM,EAAE,GAAI,IAAI,CAAC,UAAU,CAAsB,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC1D,IAAI,OAAO,EAAE,KAAK,QAAQ;oBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3C,CAAC;YACD,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC7E,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;gBAC9B,SAAS;YACX,CAAC;YACD,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QACrC,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,QAAQ;QAEd,KAAK,CAAC,IAAI,CAAC,MAAM;YACf,KAAK,GAAG,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC;YACnB,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;YACpC,gFAAgF;YAChF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAiC,CAAC;YAC1D,KAAK,MAAM,GAAG,IAAI,OAAO;gBAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YACzE,MAAM,OAAO,GAAmB,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;YACvC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAE,EAAE,IAAI,CAAC,CAAC;gBAC5F,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;gBAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC;YACD,4FAA4F;YAC5F,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAE,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACtG,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACzD,MAAM,MAAM,GAAG,KAAK,CAAC;YACrB,KAAK,GAAG,EAAE,CAAC;YACX,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzI,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,MAAM;YACf,MAAM,IAAI,GAAgB,EAAE,CAAC;YAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;oBAC5H,IAAI,CAAC,GAAG;wBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACjF,IAAI,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;gBACzE,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,gGAAgG;oBAChG,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACxI,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;IAEF,KAAK,UAAU,QAAQ,CAAC,KAAkB,EAAE,QAA+B,EAAE,UAAiC;QAC5G,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,OAAO,EAAE,UAAU,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACpF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,gDAAgD;gBAChD,IAAI,CAAC,CAAC,KAAK,YAAY,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC;oBAAE,MAAM,KAAK,CAAC;YAC3E,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC/D,CAAC;QACD,MAAM,UAAU,GAAS,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,CAAC,QAAQ,IAAI,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC/D,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7H,CAAC;QACD,IAAI,KAAK,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACnH,IAAI,IAAU,CAAC;QACf,IAAI,CAAC;YACH,IAAI,GAAG,KAAK,CAAC,EAAE;gBACb,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,UAAU,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;gBAC/E,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAC3H,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACrE,MAAM,IAAI,WAAW,CAAC,oBAAoB,KAAK,CAAC,EAAE,wHAAwH,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/L,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1F,CAAC;AACH,CAAC"}