@sixb/core 0.1.9 → 0.1.10

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 (279) hide show
  1. package/dist/actions/index.js +8 -8
  2. package/dist/agents/index.js +16 -15
  3. package/dist/agents/index.js.map +1 -1
  4. package/dist/bootstrap/index.js +20 -19
  5. package/dist/bootstrap/index.js.map +1 -1
  6. package/dist/broker/in-memory.d.ts +8 -2
  7. package/dist/broker/in-memory.d.ts.map +1 -1
  8. package/dist/broker/index.d.ts +4 -2
  9. package/dist/broker/index.d.ts.map +1 -1
  10. package/dist/broker/index.js +7 -3
  11. package/dist/broker/index.js.map +1 -1
  12. package/dist/broker/retention.d.ts +4 -0
  13. package/dist/broker/retention.d.ts.map +1 -0
  14. package/dist/broker/subscriber.d.ts +10 -0
  15. package/dist/broker/subscriber.d.ts.map +1 -0
  16. package/dist/broker/types.d.ts +14 -1
  17. package/dist/broker/types.d.ts.map +1 -1
  18. package/dist/{chunk-k3cqkkn2.js → chunk-1824gssz.js} +30 -65
  19. package/dist/chunk-1824gssz.js.map +12 -0
  20. package/dist/{chunk-h1gfhhbh.js → chunk-28ja2cjs.js} +1 -1
  21. package/dist/chunk-2c4j899j.js.map +1 -1
  22. package/dist/{chunk-ppytyr6w.js → chunk-358caqf5.js} +4 -4
  23. package/dist/chunk-358caqf5.js.map +12 -0
  24. package/dist/{chunk-kxwa347f.js → chunk-3qms4nax.js} +2 -2
  25. package/dist/{chunk-kxwa347f.js.map → chunk-3qms4nax.js.map} +3 -3
  26. package/dist/{chunk-emyyk7dx.js → chunk-5c7ga8zz.js} +22 -145
  27. package/dist/chunk-5c7ga8zz.js.map +12 -0
  28. package/dist/{chunk-hpr1r6av.js → chunk-5p1v802y.js} +46 -39
  29. package/dist/{chunk-hpr1r6av.js.map → chunk-5p1v802y.js.map} +4 -4
  30. package/dist/{chunk-zcnq6105.js → chunk-85cd7e8c.js} +2 -1
  31. package/dist/chunk-85cd7e8c.js.map +10 -0
  32. package/dist/{chunk-1enhpacz.js → chunk-976rxdpx.js} +5 -5
  33. package/dist/{chunk-3f7veca0.js → chunk-9x8dybsb.js} +3 -3
  34. package/dist/chunk-9x8dybsb.js.map +10 -0
  35. package/dist/{chunk-r29fxdhn.js → chunk-aa6z4a19.js} +160 -44
  36. package/dist/chunk-aa6z4a19.js.map +12 -0
  37. package/dist/{chunk-r4tfx1sf.js → chunk-agbbygvh.js} +4 -4
  38. package/dist/{chunk-jjy0fhrn.js → chunk-b0ec55a1.js} +20 -3
  39. package/dist/chunk-b0ec55a1.js.map +12 -0
  40. package/dist/{chunk-xfbydgzy.js → chunk-bn138h9w.js} +7 -8
  41. package/dist/{chunk-xfbydgzy.js.map → chunk-bn138h9w.js.map} +3 -3
  42. package/dist/{chunk-an5tt9y0.js → chunk-ftv470j8.js} +42 -4
  43. package/dist/{chunk-an5tt9y0.js.map → chunk-ftv470j8.js.map} +7 -7
  44. package/dist/{chunk-0w35wavj.js → chunk-g7knyczr.js} +1 -1
  45. package/dist/{chunk-x57ycxq0.js → chunk-gqh45d2n.js} +42 -3
  46. package/dist/{chunk-x57ycxq0.js.map → chunk-gqh45d2n.js.map} +3 -3
  47. package/dist/{chunk-0rdrecsb.js → chunk-kfee1h52.js} +116 -32
  48. package/dist/chunk-kfee1h52.js.map +13 -0
  49. package/dist/{chunk-ypbtykv6.js → chunk-nmbxcaqx.js} +1 -1
  50. package/dist/{chunk-3tgwrcyh.js → chunk-nt99sxd6.js} +2 -2
  51. package/dist/{chunk-3tgwrcyh.js.map → chunk-nt99sxd6.js.map} +3 -3
  52. package/dist/{chunk-vf691g1r.js → chunk-p5vcsw9c.js} +2 -2
  53. package/dist/{chunk-mjbk2djy.js → chunk-p6a4npdx.js} +211 -106
  54. package/dist/{chunk-mjbk2djy.js.map → chunk-p6a4npdx.js.map} +9 -8
  55. package/dist/{chunk-3frsnm7x.js → chunk-qma80ych.js} +4 -6
  56. package/dist/chunk-qma80ych.js.map +11 -0
  57. package/dist/{chunk-qhcpj9wc.js → chunk-qyeptdyv.js} +96 -2
  58. package/dist/chunk-qyeptdyv.js.map +15 -0
  59. package/dist/{chunk-52hbv0ak.js → chunk-r7fj830t.js} +101 -48
  60. package/dist/chunk-r7fj830t.js.map +36 -0
  61. package/dist/{chunk-xyr8kppc.js → chunk-rtk71jzp.js} +1 -1
  62. package/dist/{chunk-m3z3x9v0.js → chunk-t1f4f1ve.js} +1 -1
  63. package/dist/chunk-v2vcg0w6.js +151 -0
  64. package/dist/chunk-v2vcg0w6.js.map +11 -0
  65. package/dist/connectors/connections/authorizations.d.ts.map +1 -1
  66. package/dist/connectors/connections/contracts.d.ts +3 -0
  67. package/dist/connectors/connections/contracts.d.ts.map +1 -1
  68. package/dist/connectors/connections/internal.js +1 -1
  69. package/dist/connectors/connections/request.d.ts +3 -1
  70. package/dist/connectors/connections/request.d.ts.map +1 -1
  71. package/dist/connectors/connections/runs.d.ts.map +1 -1
  72. package/dist/connectors/connections/tokens.d.ts.map +1 -1
  73. package/dist/connectors/connections/validation.d.ts +5 -1
  74. package/dist/connectors/connections/validation.d.ts.map +1 -1
  75. package/dist/connectors/types.d.ts +19 -4
  76. package/dist/connectors/types.d.ts.map +1 -1
  77. package/dist/events/execution.d.ts +1 -1
  78. package/dist/events/execution.d.ts.map +1 -1
  79. package/dist/events/index.js +1 -1
  80. package/dist/events/service.d.ts +2 -2
  81. package/dist/events/service.d.ts.map +1 -1
  82. package/dist/execution/agent.js +16 -15
  83. package/dist/execution/agent.js.map +1 -1
  84. package/dist/execution/primitive.js +16 -15
  85. package/dist/execution/primitive.js.map +2 -2
  86. package/dist/execution/request.js +16 -15
  87. package/dist/execution/request.js.map +2 -2
  88. package/dist/index.d.ts +3 -3
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +30 -28
  91. package/dist/index.js.map +1 -1
  92. package/dist/lake-storage/changes.d.ts +5 -0
  93. package/dist/lake-storage/changes.d.ts.map +1 -0
  94. package/dist/lake-storage/in-memory.d.ts +2 -1
  95. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  96. package/dist/lake-storage/index.d.ts +2 -1
  97. package/dist/lake-storage/index.d.ts.map +1 -1
  98. package/dist/lake-storage/index.js +4 -2
  99. package/dist/lake-storage/index.js.map +1 -1
  100. package/dist/lake-storage/types.d.ts +36 -0
  101. package/dist/lake-storage/types.d.ts.map +1 -1
  102. package/dist/logging/internal.js +1 -1
  103. package/dist/materialization/index.d.ts +1 -1
  104. package/dist/materialization/index.d.ts.map +1 -1
  105. package/dist/materialization/model.d.ts +12 -1
  106. package/dist/materialization/model.d.ts.map +1 -1
  107. package/dist/materializer/index.d.ts +1 -1
  108. package/dist/materializer/index.d.ts.map +1 -1
  109. package/dist/materializer/index.js +5 -5
  110. package/dist/materializer/materializer.d.ts +5 -1
  111. package/dist/materializer/materializer.d.ts.map +1 -1
  112. package/dist/materializer/projections/entry-validator.d.ts +2 -1
  113. package/dist/materializer/projections/entry-validator.d.ts.map +1 -1
  114. package/dist/materializer/projections/replace.d.ts.map +1 -1
  115. package/dist/materializer/projections/source-materialization.d.ts +4 -3
  116. package/dist/materializer/projections/source-materialization.d.ts.map +1 -1
  117. package/dist/materializer/shared/normalize.d.ts +2 -1
  118. package/dist/materializer/shared/normalize.d.ts.map +1 -1
  119. package/dist/models/execution/index.js +5 -5
  120. package/dist/objects/index.js +9 -9
  121. package/dist/objects/query/index.js +5 -5
  122. package/dist/pipelines/index.js +6 -6
  123. package/dist/pipelines/run-dispatch.d.ts.map +1 -1
  124. package/dist/projections/internal.js +6 -8
  125. package/dist/projections/internal.js.map +1 -1
  126. package/dist/projections/run-dispatch.d.ts.map +1 -1
  127. package/dist/queues/in-memory.d.ts +7 -3
  128. package/dist/queues/in-memory.d.ts.map +1 -1
  129. package/dist/queues/index.js +1 -1
  130. package/dist/queues/indexed-heap.d.ts +15 -0
  131. package/dist/queues/indexed-heap.d.ts.map +1 -0
  132. package/dist/runtime/host.d.ts.map +1 -1
  133. package/dist/runtime/internal.js +1 -1
  134. package/dist/runtime/ontology-mutations.d.ts +3 -1
  135. package/dist/runtime/ontology-mutations.d.ts.map +1 -1
  136. package/dist/shares/internal.js +4 -4
  137. package/dist/storage/connector-connections/in-memory.d.ts.map +1 -1
  138. package/dist/storage/connector-connections/provider/runs.d.ts.map +1 -1
  139. package/dist/storage/connector-connections/provider.js +2 -2
  140. package/dist/storage/connector-connections/provider.js.map +3 -3
  141. package/dist/storage/connector-connections/types.d.ts +3 -2
  142. package/dist/storage/connector-connections/types.d.ts.map +1 -1
  143. package/dist/storage/index.d.ts +1 -1
  144. package/dist/storage/index.d.ts.map +1 -1
  145. package/dist/storage/index.js +4 -4
  146. package/dist/storage/internal.js +1 -1
  147. package/dist/storage/ontology/in-memory/materializations-state.d.ts.map +1 -1
  148. package/dist/storage/ontology/in-memory/materializations.d.ts +1 -1
  149. package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
  150. package/dist/storage/ontology/in-memory/shared-state.d.ts +15 -2
  151. package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
  152. package/dist/storage/ontology/in-memory/source-roots.d.ts +6 -0
  153. package/dist/storage/ontology/in-memory/source-roots.d.ts.map +1 -0
  154. package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
  155. package/dist/storage/ontology/index.d.ts +1 -1
  156. package/dist/storage/ontology/index.d.ts.map +1 -1
  157. package/dist/storage/ontology/provider.d.ts +16 -0
  158. package/dist/storage/ontology/provider.d.ts.map +1 -1
  159. package/dist/storage/ontology/provider.js +4 -2
  160. package/dist/storage/ontology/provider.js.map +1 -1
  161. package/dist/storage/ontology/sources.d.ts +13 -4
  162. package/dist/storage/ontology/sources.d.ts.map +1 -1
  163. package/dist/storage/projection-runs/lifecycle.d.ts.map +1 -1
  164. package/dist/storage/projection-runs/provider.js +2 -2
  165. package/dist/storage/projection-runs/types.d.ts +2 -0
  166. package/dist/storage/projection-runs/types.d.ts.map +1 -1
  167. package/dist/syncs/index.js +8 -7
  168. package/dist/syncs/index.js.map +1 -1
  169. package/dist/syncs/run-dispatch.d.ts.map +1 -1
  170. package/dist/testing/broker-contract.d.ts.map +1 -1
  171. package/dist/testing/connector-connection-storage-contract.d.ts.map +1 -1
  172. package/dist/testing/index.d.ts +1 -0
  173. package/dist/testing/index.d.ts.map +1 -1
  174. package/dist/testing/index.js +1459 -951
  175. package/dist/testing/index.js.map +9 -8
  176. package/dist/testing/lake-changes-contract.d.ts +6 -0
  177. package/dist/testing/lake-changes-contract.d.ts.map +1 -0
  178. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  179. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  180. package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
  181. package/dist/webhooks/connections.d.ts +6 -0
  182. package/dist/webhooks/connections.d.ts.map +1 -0
  183. package/dist/webhooks/index.d.ts +1 -1
  184. package/dist/webhooks/index.d.ts.map +1 -1
  185. package/dist/webhooks/internal.d.ts +2 -0
  186. package/dist/webhooks/internal.d.ts.map +1 -1
  187. package/dist/webhooks/internal.js +54 -9
  188. package/dist/webhooks/internal.js.map +4 -3
  189. package/dist/webhooks/registry.d.ts +1 -1
  190. package/dist/webhooks/registry.d.ts.map +1 -1
  191. package/dist/webhooks/types.d.ts +15 -4
  192. package/dist/webhooks/types.d.ts.map +1 -1
  193. package/dist/workflows/index.js +17 -16
  194. package/dist/workflows/index.js.map +1 -1
  195. package/dist/workflows/run-dispatch.d.ts +3 -1
  196. package/dist/workflows/run-dispatch.d.ts.map +1 -1
  197. package/package.json +1 -1
  198. package/src/broker/in-memory.ts +104 -39
  199. package/src/broker/index.ts +4 -1
  200. package/src/broker/retention.ts +28 -0
  201. package/src/broker/subscriber.ts +21 -0
  202. package/src/broker/types.ts +15 -1
  203. package/src/connectors/builders.ts +0 -6
  204. package/src/connectors/connections/authorizations.ts +11 -5
  205. package/src/connectors/connections/contracts.ts +3 -0
  206. package/src/connectors/connections/request.ts +56 -22
  207. package/src/connectors/connections/runs.ts +1 -0
  208. package/src/connectors/connections/tokens.ts +4 -0
  209. package/src/connectors/connections/validation.ts +91 -5
  210. package/src/connectors/types.ts +19 -4
  211. package/src/events/execution.ts +2 -2
  212. package/src/events/service.ts +3 -3
  213. package/src/index.ts +10 -2
  214. package/src/lake-storage/changes.ts +43 -0
  215. package/src/lake-storage/in-memory.ts +73 -0
  216. package/src/lake-storage/index.ts +4 -0
  217. package/src/lake-storage/types.ts +40 -0
  218. package/src/logging/service.ts +1 -1
  219. package/src/materialization/index.ts +2 -0
  220. package/src/materialization/model.ts +14 -1
  221. package/src/materializer/index.ts +2 -0
  222. package/src/materializer/materializer.ts +10 -0
  223. package/src/materializer/projections/entry-validator.ts +19 -1
  224. package/src/materializer/projections/replace.ts +36 -1
  225. package/src/materializer/projections/source-materialization.ts +26 -6
  226. package/src/materializer/shared/normalize.ts +1 -1
  227. package/src/pipelines/run-dispatch.ts +21 -1
  228. package/src/projections/run-dispatch.ts +30 -68
  229. package/src/queues/in-memory.ts +105 -62
  230. package/src/queues/indexed-heap.ts +74 -0
  231. package/src/runtime/host.ts +0 -14
  232. package/src/runtime/ontology-mutations.ts +4 -0
  233. package/src/storage/connector-connections/in-memory.ts +3 -1
  234. package/src/storage/connector-connections/provider/runs.ts +3 -1
  235. package/src/storage/connector-connections/types.ts +3 -2
  236. package/src/storage/index.ts +1 -0
  237. package/src/storage/ontology/in-memory/materializations-state.ts +5 -18
  238. package/src/storage/ontology/in-memory/materializations.ts +73 -92
  239. package/src/storage/ontology/in-memory/shared-state.ts +26 -1
  240. package/src/storage/ontology/in-memory/source-roots.ts +123 -0
  241. package/src/storage/ontology/in-memory/sources.ts +78 -23
  242. package/src/storage/ontology/index.ts +1 -0
  243. package/src/storage/ontology/provider.ts +70 -0
  244. package/src/storage/ontology/sources.ts +14 -3
  245. package/src/storage/projection-runs/lifecycle.ts +5 -2
  246. package/src/storage/projection-runs/types.ts +4 -3
  247. package/src/syncs/run-dispatch.ts +19 -1
  248. package/src/testing/broker-contract.ts +95 -0
  249. package/src/testing/connector-connection-storage-contract.ts +18 -1
  250. package/src/testing/index.ts +1 -0
  251. package/src/testing/lake-changes-contract.ts +240 -0
  252. package/src/testing/materializer-storage-contract.ts +172 -1
  253. package/src/testing/ontology-storage-contract.ts +7 -0
  254. package/src/testing/projection-run-storage-contract.ts +34 -0
  255. package/src/webhooks/connections.ts +56 -0
  256. package/src/webhooks/index.ts +2 -0
  257. package/src/webhooks/internal.ts +2 -0
  258. package/src/webhooks/registry.ts +3 -4
  259. package/src/webhooks/types.ts +17 -4
  260. package/src/workflows/run-dispatch.ts +42 -29
  261. package/dist/chunk-0rdrecsb.js.map +0 -11
  262. package/dist/chunk-3f7veca0.js.map +0 -10
  263. package/dist/chunk-3frsnm7x.js.map +0 -11
  264. package/dist/chunk-52hbv0ak.js.map +0 -36
  265. package/dist/chunk-emyyk7dx.js.map +0 -14
  266. package/dist/chunk-jjy0fhrn.js.map +0 -12
  267. package/dist/chunk-k3cqkkn2.js.map +0 -12
  268. package/dist/chunk-ppytyr6w.js.map +0 -12
  269. package/dist/chunk-qhcpj9wc.js.map +0 -14
  270. package/dist/chunk-r29fxdhn.js.map +0 -11
  271. package/dist/chunk-zcnq6105.js.map +0 -10
  272. /package/dist/{chunk-h1gfhhbh.js.map → chunk-28ja2cjs.js.map} +0 -0
  273. /package/dist/{chunk-1enhpacz.js.map → chunk-976rxdpx.js.map} +0 -0
  274. /package/dist/{chunk-r4tfx1sf.js.map → chunk-agbbygvh.js.map} +0 -0
  275. /package/dist/{chunk-0w35wavj.js.map → chunk-g7knyczr.js.map} +0 -0
  276. /package/dist/{chunk-ypbtykv6.js.map → chunk-nmbxcaqx.js.map} +0 -0
  277. /package/dist/{chunk-vf691g1r.js.map → chunk-p5vcsw9c.js.map} +0 -0
  278. /package/dist/{chunk-xyr8kppc.js.map → chunk-rtk71jzp.js.map} +0 -0
  279. /package/dist/{chunk-m3z3x9v0.js.map → chunk-t1f4f1ve.js.map} +0 -0
@@ -15,7 +15,7 @@
15
15
  "import { utf8JsonByteLength } from \"../../materialization/refs\"\nimport type {\n ExactEffectiveLinkDelete,\n ExactEffectiveLinkWrite,\n ExactEffectiveObjectDelete,\n ExactEffectiveObjectWrite,\n ExactLinkOverrideDelete,\n ExactLinkOverrideWrite,\n ExactLinkSlotOverrideDelete,\n ExactLinkSlotOverrideWrite,\n ExactObjectOverrideDelete,\n ExactObjectOverrideWrite,\n ExactTimeseriesPointWrite,\n MaterializationPlanChunk,\n MaterializationPlanWorkItem,\n OntologyOutboxWrite,\n} from \"../../storage/ontology\"\nimport type { MaterializationBatching } from \"../shared/batching\"\nimport { chunkBySize } from \"../shared/chunking\"\n\nexport type MaterializationPlanItem =\n | MaterializationPlanWorkItem\n | { readonly kind: \"outbox\"; readonly value: OntologyOutboxWrite }\n\nexport async function* planStream(\n items: Iterable<MaterializationPlanItem> | AsyncIterable<MaterializationPlanItem>,\n batching: MaterializationBatching\n): AsyncIterable<MaterializationPlanChunk> {\n for await (const itemsChunk of chunkBySize(items, {\n maxRows: batching.planChunkRows,\n maxBytes: batching.planChunkBytes,\n byteLength: utf8JsonByteLength,\n })) {\n const chunk = mutableChunk()\n for (const item of itemsChunk) appendItem(chunk, item)\n yield chunk\n }\n}\n\ntype MutableChunk = {\n overrides: {\n objects: {\n upserts: ExactObjectOverrideWrite[]\n deletes: ExactObjectOverrideDelete[]\n }\n links: {\n edges: {\n upserts: ExactLinkOverrideWrite[]\n deletes: ExactLinkOverrideDelete[]\n }\n slots: {\n upserts: ExactLinkSlotOverrideWrite[]\n deletes: ExactLinkSlotOverrideDelete[]\n }\n }\n }\n effective: {\n objectUpserts: ExactEffectiveObjectWrite[]\n objectDeletes: ExactEffectiveObjectDelete[]\n linkUpserts: ExactEffectiveLinkWrite[]\n linkDeletes: ExactEffectiveLinkDelete[]\n }\n timeseries: { pointUpserts: ExactTimeseriesPointWrite[] }\n outbox: OntologyOutboxWrite[]\n}\n\nfunction mutableChunk(): MutableChunk {\n return {\n overrides: {\n objects: { upserts: [], deletes: [] },\n links: {\n edges: { upserts: [], deletes: [] },\n slots: { upserts: [], deletes: [] },\n },\n },\n effective: { objectUpserts: [], objectDeletes: [], linkUpserts: [], linkDeletes: [] },\n timeseries: { pointUpserts: [] },\n outbox: [],\n }\n}\n\nfunction appendItem(chunk: MutableChunk, item: MaterializationPlanItem): void {\n switch (item.kind) {\n case \"object-override-upsert\":\n chunk.overrides.objects.upserts.push(item.value)\n break\n case \"object-override-delete\":\n chunk.overrides.objects.deletes.push(item.value)\n break\n case \"link-override-upsert\":\n chunk.overrides.links.edges.upserts.push(item.value)\n break\n case \"link-override-delete\":\n chunk.overrides.links.edges.deletes.push(item.value)\n break\n case \"link-slot-override-upsert\":\n chunk.overrides.links.slots.upserts.push(item.value)\n break\n case \"link-slot-override-delete\":\n chunk.overrides.links.slots.deletes.push(item.value)\n break\n case \"object-upsert\":\n chunk.effective.objectUpserts.push(item.value)\n break\n case \"object-delete\":\n chunk.effective.objectDeletes.push(item.value)\n break\n case \"link-upsert\":\n chunk.effective.linkUpserts.push(item.value)\n break\n case \"link-delete\":\n chunk.effective.linkDeletes.push(item.value)\n break\n case \"point-upsert\":\n chunk.timeseries.pointUpserts.push(item.value)\n break\n case \"outbox\":\n chunk.outbox.push(item.value)\n break\n }\n}\n",
16
16
  "import { stableJsonStringify } from \"../../json\"\nimport type { EffectiveLinkChange, EffectiveObjectChange } from \"../../materialization/model\"\nimport type {\n MaterializationClassificationWorkRecord,\n MaterializationEventWorkRecord,\n MaterializationPlanWorkItem,\n MaterializationPlanWorkRecord,\n MaterializationWorkEntityKind,\n OntologyMaterializationEvent,\n OntologyOutboxWrite,\n} from \"../../storage/ontology\"\nimport { materializationApplyPhase } from \"../../storage/ontology/materializations\"\nimport type { WorkingLinkEdge, WorkingLinkSlot, WorkingObject } from \"../edits/working-state\"\nimport type { OrderedMaterializationEventDraft } from \"../effective/build-events\"\nimport type { TimedCommitIdentity } from \"../shared/identity\"\nimport type { MaterializationPlanItem } from \"./plan-stream\"\n\nexport function appendObjectOverrideWork(\n items: MaterializationPlanWorkItem[],\n working: WorkingObject,\n identity: TimedCommitIdentity\n): void {\n if (\n stableJsonStringify(working.originalOverride?.value ?? null) ===\n stableJsonStringify(working.override) &&\n stableJsonStringify(working.originalEditedAt) === stableJsonStringify(working.editedAt)\n ) {\n return\n }\n if (working.override) {\n items.push({\n kind: \"object-override-upsert\",\n value: {\n ref: working.ref,\n value: working.override,\n editedAt: working.editedAt,\n expectedLastCommitId: working.originalOverride?.lastCommitId ?? null,\n lastCommitId: identity.commitId,\n updatedAt: identity.committedAt,\n },\n })\n } else if (working.originalOverride) {\n items.push({\n kind: \"object-override-delete\",\n value: { ref: working.ref, expectedLastCommitId: working.originalOverride.lastCommitId },\n })\n }\n}\n\nexport function appendLinkEdgeOverrideWork(\n items: MaterializationPlanWorkItem[],\n working: WorkingLinkEdge,\n identity: TimedCommitIdentity\n): void {\n if (\n stableJsonStringify(working.originalOverride?.value ?? null) ===\n stableJsonStringify(working.override)\n ) {\n return\n }\n if (working.override) {\n items.push({\n kind: \"link-override-upsert\",\n value: {\n ref: working.ref,\n value: working.override,\n expectedLastCommitId: working.originalOverride?.lastCommitId ?? null,\n lastCommitId: identity.commitId,\n updatedAt: identity.committedAt,\n },\n })\n } else if (working.originalOverride) {\n items.push({\n kind: \"link-override-delete\",\n value: { ref: working.ref, expectedLastCommitId: working.originalOverride.lastCommitId },\n })\n }\n}\n\nexport function appendLinkSlotOverrideWork(\n items: MaterializationPlanWorkItem[],\n working: WorkingLinkSlot,\n identity: TimedCommitIdentity\n): void {\n if (\n stableJsonStringify(working.originalOverride?.value ?? null) ===\n stableJsonStringify(working.override)\n ) {\n return\n }\n if (working.override) {\n items.push({\n kind: \"link-slot-override-upsert\",\n value: {\n ref: working.ref,\n value: working.override,\n expectedLastCommitId: working.originalOverride?.lastCommitId ?? null,\n lastCommitId: identity.commitId,\n updatedAt: identity.committedAt,\n },\n })\n } else if (working.originalOverride) {\n items.push({\n kind: \"link-slot-override-delete\",\n value: {\n ref: working.ref,\n expectedLastCommitId: working.originalOverride.lastCommitId,\n },\n })\n }\n}\n\nexport function appendEffectiveObjectWork(\n items: MaterializationPlanWorkItem[],\n change: EffectiveObjectChange\n): void {\n if (change.kind === \"deleted\") {\n items.push({\n kind: \"object-delete\",\n value: {\n ref: change.ref,\n expected: expectedObject(change.before),\n },\n })\n } else {\n items.push({\n kind: \"object-upsert\",\n value: {\n row: change.after,\n expected: change.before\n ? expectedObject(change.before)\n : { ref: change.ref, exists: false },\n },\n })\n }\n}\n\nexport function appendEffectiveLinkWork(\n items: MaterializationPlanWorkItem[],\n change: EffectiveLinkChange\n): void {\n if (change.kind === \"deleted\") {\n items.push({\n kind: \"link-delete\",\n value: {\n ref: change.ref,\n expected: expectedLink(change.before),\n },\n })\n } else {\n items.push({\n kind: \"link-upsert\",\n value: {\n row: change.after,\n expected: change.before ? expectedLink(change.before) : { ref: change.ref, exists: false },\n },\n })\n }\n}\n\nexport function outboxItem(\n event: OntologyMaterializationEvent,\n committedAt: string\n): MaterializationPlanItem {\n const value: OntologyOutboxWrite = {\n envelope: event,\n availableAt: committedAt,\n createdAt: committedAt,\n }\n return { kind: \"outbox\", value }\n}\n\nexport function classificationWork(\n entityKind: MaterializationWorkEntityKind,\n identityKey: string,\n sortKey: string\n): MaterializationClassificationWorkRecord {\n return {\n kind: \"classification\",\n recordKey: `classification:${entityKind}:${sortKey}`,\n entityKind,\n identityKey,\n }\n}\n\nexport function planWork(\n item: MaterializationPlanWorkItem,\n sortKey: string\n): MaterializationPlanWorkRecord {\n const applyPhase = materializationApplyPhase(item.kind)\n return {\n kind: \"plan\",\n recordKey: `plan:${item.kind}:${sortKey}`,\n applyPhase,\n sortKey,\n item,\n }\n}\n\nexport function eventWork(value: OrderedMaterializationEventDraft): MaterializationEventWorkRecord {\n return {\n kind: \"event\",\n recordKey: `event:${value.kindRank}:${value.sortKey}`,\n eventKindRank: value.kindRank,\n sortKey: value.sortKey,\n draft: value.draft,\n }\n}\n\nfunction expectedObject(snapshot: NonNullable<EffectiveObjectChange[\"before\"]>) {\n return {\n ref: snapshot.ref,\n exists: true as const,\n version: snapshot.version,\n lastCommitId: snapshot.lastCommitId,\n }\n}\n\nfunction expectedLink(snapshot: NonNullable<EffectiveLinkChange[\"before\"]>) {\n return { ref: snapshot.ref, exists: true as const, lastCommitId: snapshot.lastCommitId }\n}\n",
17
17
  "import { MaterializationValidationError } from \"../../materialization/errors\"\nimport { utf8JsonByteLength } from \"../../materialization/refs\"\nimport type {\n MaterializationSession,\n MaterializationWorkRecord,\n OntologyMaterializationStorage,\n} from \"../../storage/ontology\"\nimport type { MaterializerContext } from \"../context\"\nimport { sequenceMaterializationEvent } from \"../effective/build-events\"\nimport { throwIfAborted } from \"../shared/abort\"\nimport { chunkBySize } from \"../shared/chunking\"\nimport type { TimedCommitIdentity } from \"../shared/identity\"\nimport { type MaterializationPlanItem, planStream } from \"./plan-stream\"\nimport { outboxItem } from \"./work-records\"\n\ntype BatchingContext = Pick<MaterializerContext, \"batching\">\n\ntype EventContext = Pick<MaterializerContext, \"batching\" | \"projectId\">\n\nexport async function applyItems(\n context: BatchingContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n items: Iterable<MaterializationPlanItem>,\n signal?: AbortSignal\n): Promise<void> {\n for await (const chunk of planStream(items, context.batching)) {\n throwIfAborted(signal)\n await storage.applyChunk({ session, chunk })\n }\n}\n\nexport async function stageWorkBounded(\n context: BatchingContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n records: readonly MaterializationWorkRecord[]\n): Promise<void> {\n for await (const chunk of chunkBySize(records, {\n maxRows: context.batching.planChunkRows,\n maxBytes: context.batching.planChunkBytes,\n byteLength: utf8JsonByteLength,\n })) {\n await storage.stageWork({ session, records: chunk })\n }\n}\n\nexport async function drainStagedWork(\n context: BatchingContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n signal?: AbortSignal\n): Promise<void> {\n let phase: number | null = null\n let pending: MaterializationPlanItem[] = []\n const flush = async () => {\n if (pending.length === 0) return\n await applyItems(context, storage, session, pending, signal)\n pending = []\n }\n for await (const page of storage.streamWork({\n session,\n order: \"apply\",\n pageRows: context.batching.planChunkRows,\n })) {\n for (const record of page.records) {\n if (record.kind !== \"plan\") {\n throw new MaterializationValidationError(\"Provider returned non-plan apply work.\")\n }\n if (phase !== null && record.applyPhase !== phase) await flush()\n phase = record.applyPhase\n pending.push(record.item)\n if (pending.length >= context.batching.planChunkRows) await flush()\n }\n }\n await flush()\n}\n\nexport async function validateStagedCardinality(\n context: BatchingContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n signal?: AbortSignal\n): Promise<void> {\n let currentView: \"candidate\" | \"effective\" | null = null\n let currentScope: string | null = null\n let occupant: string | null = null\n for await (const page of storage.streamWork({\n session,\n order: \"cardinality\",\n pageRows: context.batching.statePageRows,\n })) {\n throwIfAborted(signal)\n for (const record of page.records) {\n if (record.kind !== \"cardinality\") {\n throw new MaterializationValidationError(\n \"Provider returned non-cardinality cardinality work.\"\n )\n }\n if (record.view !== currentView || record.scopeSortKey !== currentScope) {\n currentView = record.view\n currentScope = record.scopeSortKey\n occupant = null\n }\n if (!record.occupied) continue\n if (occupant && occupant !== record.linkSortKey) {\n throw new MaterializationValidationError(\n record.view === \"candidate\"\n ? `Projection source scope '${record.ref.source.objectTypeId}.${record.ref.linkId}' has cardinality one.`\n : `Link scope '${record.ref.source.objectTypeId}.${record.ref.linkId}' has cardinality one.`\n )\n }\n occupant = record.linkSortKey\n }\n }\n}\n\nexport async function drainStagedEvents(\n context: EventContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n identity: TimedCommitIdentity,\n signal?: AbortSignal\n): Promise<number> {\n let ordinal = 0\n for await (const page of storage.streamWork({\n session,\n order: \"event\",\n pageRows: context.batching.planChunkRows,\n })) {\n const items: MaterializationPlanItem[] = []\n for (const record of page.records) {\n if (record.kind !== \"event\") {\n throw new MaterializationValidationError(\"Provider returned non-event event work.\")\n }\n const event = sequenceMaterializationEvent(\n context.projectId,\n identity.commitId,\n ordinal++,\n record.draft\n )\n items.push(outboxItem(event, identity.committedAt))\n }\n await applyItems(context, storage, session, items, signal)\n }\n return ordinal\n}\n",
18
- "import { assertJsonValue, cloneJsonValue, compareStrings, stableJsonStringify } from \"../../json\"\nimport { MaterializationValidationError } from \"../../materialization/errors\"\nimport type {\n ExpectedLinkRevision,\n ExpectedLinkScopeRevision,\n ExpectedObjectRevision,\n OntologyEditCommit,\n OntologyEditOperation,\n PinnedDatasetVersion,\n ProjectionEntityRef,\n ProjectionExecution,\n ProjectionSourceAssertion,\n ProjectionSourceEntry,\n ProjectionSourceRef,\n TelemetryAppend,\n TelemetryPointWrite,\n TelemetrySeriesRef,\n} from \"../../materialization/model\"\nimport {\n linkRefKey,\n linkScopeKey,\n normalizeLinkRef,\n normalizeObjectRef,\n objectRefKey,\n projectionEntityKey,\n telemetryPointKey,\n} from \"../../materialization/refs\"\nimport { parseDatasetTimestamp } from \"../../projections/timestamp\"\n\nexport function normalizeJsonProperties(\n properties: Readonly<Record<string, unknown>>,\n label = \"Properties\"\n): Readonly<Record<string, import(\"../../json\").JsonValue>> {\n if (typeof properties !== \"object\" || properties === null || Array.isArray(properties)) {\n throw new MaterializationValidationError(`${label} must be a JSON object.`)\n }\n\n const normalized: Record<string, import(\"../../json\").JsonValue> = {}\n for (const propertyId of Object.keys(properties).sort(compareStrings)) {\n if (propertyId.trim().length === 0) {\n throw new MaterializationValidationError(`${label} contains a blank property id.`)\n }\n const value = properties[propertyId]\n try {\n assertJsonValue(value, `${label}.${propertyId}`)\n } catch (error) {\n throw new MaterializationValidationError(\n error instanceof Error ? error.message : `${label}.${propertyId} must be JSON.`\n )\n }\n normalized[propertyId] = cloneJsonValue(value)\n }\n return Object.freeze(normalized)\n}\n\nfunction normalizeNonblank(value: string, label: string): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new MaterializationValidationError(`${label} must be a nonblank string.`)\n }\n return value\n}\n\nfunction normalizeTimestamp(value: string, label: string): string {\n const milliseconds = Date.parse(value)\n if (!Number.isFinite(milliseconds)) {\n throw new MaterializationValidationError(`${label} must be a valid timestamp.`)\n }\n return new Date(milliseconds).toISOString()\n}\n\nfunction normalizeProjectionSourceTimestamp(value: string): string {\n const timestamp = parseDatasetTimestamp(value)\n if (!timestamp) {\n throw new MaterializationValidationError(\n \"Projection source update timestamp must be a valid timestamp.\"\n )\n }\n return timestamp.toISOString()\n}\n\nfunction normalizePropertyIds(values: readonly string[], label: string): readonly string[] {\n const seen = new Set<string>()\n const normalized: string[] = []\n for (const value of values) {\n normalizeNonblank(value, label)\n if (seen.has(value)) {\n throw new MaterializationValidationError(`${label} contains duplicate '${value}'.`)\n }\n seen.add(value)\n normalized.push(value)\n }\n return Object.freeze(normalized.sort(compareStrings))\n}\n\nfunction normalizeOperation(operation: OntologyEditOperation): OntologyEditOperation {\n normalizeNonblank(operation.id, \"Operation id\")\n if (operation.kind === \"object.create\" || operation.kind === \"object.upsert\") {\n return Object.freeze({\n id: operation.id,\n kind: operation.kind,\n ref: normalizeObjectRef(operation.ref),\n properties: normalizeJsonProperties(operation.properties),\n })\n }\n if (operation.kind === \"object.patch\") {\n const set = normalizeJsonProperties(operation.set, `Operation '${operation.id}' set`)\n const unset = normalizePropertyIds(operation.unset, `Operation '${operation.id}' unset`)\n const reset = normalizePropertyIds(operation.reset, `Operation '${operation.id}' reset`)\n const setIds = new Set(Object.keys(set))\n for (const propertyId of [...unset, ...reset]) {\n if (setIds.has(propertyId)) {\n throw new MaterializationValidationError(\n `Operation '${operation.id}' property '${propertyId}' appears in set and unset/reset.`\n )\n }\n }\n for (const propertyId of unset) {\n if (reset.includes(propertyId)) {\n throw new MaterializationValidationError(\n `Operation '${operation.id}' property '${propertyId}' appears in unset and reset.`\n )\n }\n }\n return Object.freeze({\n id: operation.id,\n kind: operation.kind,\n ref: normalizeObjectRef(operation.ref),\n set,\n unset,\n reset,\n })\n }\n if (operation.kind === \"object.delete\" || operation.kind === \"object.restore\") {\n return Object.freeze({\n id: operation.id,\n kind: operation.kind,\n ref: normalizeObjectRef(operation.ref),\n })\n }\n if (operation.kind === \"link.upsert\") {\n return Object.freeze({\n id: operation.id,\n kind: operation.kind,\n ref: normalizeLinkRef(operation.ref),\n ...(operation.properties !== undefined\n ? { properties: normalizeJsonProperties(operation.properties) }\n : {}),\n })\n }\n if (operation.kind === \"link.delete\" || operation.kind === \"link.reset\") {\n return Object.freeze({\n id: operation.id,\n kind: operation.kind,\n ref: normalizeLinkRef(operation.ref),\n })\n }\n throw new MaterializationValidationError(\"Unknown ontology edit operation kind.\")\n}\n\nfunction deduplicateExpectations<T>(\n values: readonly T[],\n keyOf: (value: T) => string,\n label: string\n): readonly T[] {\n const byKey = new Map<string, T>()\n for (const value of values) {\n const key = keyOf(value)\n const existing = byKey.get(key)\n if (existing && stableJsonStringify(existing) !== stableJsonStringify(value)) {\n throw new MaterializationValidationError(`${label} has contradictory values for ${key}.`)\n }\n byKey.set(key, value)\n }\n return Object.freeze(\n [...byKey.entries()]\n .sort(([left], [right]) => compareStrings(left, right))\n .map(([, value]) => value)\n )\n}\n\nfunction normalizeExpectedObject(value: ExpectedObjectRevision): ExpectedObjectRevision {\n const ref = normalizeObjectRef(value.ref)\n if (!value.exists) return Object.freeze({ ref, exists: false })\n if (!Number.isSafeInteger(value.version) || value.version < 1) {\n throw new MaterializationValidationError(\"Expected object version must be a positive integer.\")\n }\n return Object.freeze({\n ref,\n exists: true,\n version: value.version,\n lastCommitId: normalizeNonblank(value.lastCommitId, \"Expected object lastCommitId\"),\n })\n}\n\nfunction normalizeExpectedLink(value: ExpectedLinkRevision): ExpectedLinkRevision {\n const ref = normalizeLinkRef(value.ref)\n if (!value.exists) return Object.freeze({ ref, exists: false })\n return Object.freeze({\n ref,\n exists: true,\n lastCommitId: normalizeNonblank(value.lastCommitId, \"Expected link lastCommitId\"),\n })\n}\n\nfunction normalizeExpectedLinkScope(value: ExpectedLinkScopeRevision): ExpectedLinkScopeRevision {\n return Object.freeze({\n source: normalizeObjectRef(value.source),\n linkId: normalizeNonblank(value.linkId, \"Expected link scope link id\"),\n fingerprint: normalizeNonblank(value.fingerprint, \"Expected link scope fingerprint\"),\n })\n}\n\n/**\n * Validates that every grouped id exists exactly once across the declared groups.\n *\n * A group naming an unknown or repeated id would silently widen or split the unit a caller item\n * relies on, so both are rejected before any operation applies.\n */\nfunction normalizeOperationGroups(\n groups: readonly (readonly string[])[],\n operationIds: ReadonlyMap<string, number>\n): readonly (readonly string[])[] {\n const grouped = new Set<string>()\n const normalized = groups.map((group) => {\n if (group.length < 2) {\n throw new MaterializationValidationError(\n \"Operation groups must contain at least two operations.\"\n )\n }\n\n const positions = group.map((id) => {\n const position = operationIds.get(id)\n if (position === undefined) {\n throw new MaterializationValidationError(\n `Operation group references unknown operation id '${id}'.`\n )\n }\n if (grouped.has(id)) {\n throw new MaterializationValidationError(\n `Operation id '${id}' appears in more than one operation group.`\n )\n }\n grouped.add(id)\n return position\n })\n\n const first = positions[0]!\n if (positions.some((position, index) => position !== first + index)) {\n throw new MaterializationValidationError(\n \"Operation groups must list a contiguous run in operation order.\"\n )\n }\n return { first, ids: Object.freeze([...group]) }\n })\n\n normalized.sort((left, right) => left.first - right.first)\n return Object.freeze(normalized.map(({ ids }) => ids))\n}\n\nexport function normalizeOntologyEditCommit(input: OntologyEditCommit): OntologyEditCommit {\n const operationIds = new Map<string, number>()\n const operations = input.operations.map((operation, index) => {\n const normalized = normalizeOperation(operation)\n if (operationIds.has(normalized.id)) {\n throw new MaterializationValidationError(`Duplicate operation id '${normalized.id}'.`)\n }\n operationIds.set(normalized.id, index)\n return normalized\n })\n\n if (input.mode === \"continue\") {\n return Object.freeze({\n mode: \"continue\",\n source: Object.freeze({\n kind: \"runtime\",\n requestId: normalizeNonblank(input.source.requestId, \"Runtime request id\"),\n }),\n operations: Object.freeze(operations),\n ...(input.operationGroups !== undefined\n ? { operationGroups: normalizeOperationGroups(input.operationGroups, operationIds) }\n : {}),\n })\n }\n\n const source =\n input.source.kind === \"action\"\n ? Object.freeze({\n kind: \"action\" as const,\n actionId: normalizeNonblank(input.source.actionId, \"Action id\"),\n runId: normalizeNonblank(input.source.runId, \"Action run id\"),\n })\n : Object.freeze({\n kind: \"runtime\" as const,\n requestId: normalizeNonblank(input.source.requestId, \"Runtime request id\"),\n })\n const expectedObjects = input.expectedObjects.map(normalizeExpectedObject)\n const expectedLinks = input.expectedLinks.map(normalizeExpectedLink)\n const expectedLinkScopes = input.expectedLinkScopes.map(normalizeExpectedLinkScope)\n\n return Object.freeze({\n mode: \"atomic\",\n source,\n operations: Object.freeze(operations),\n expectedObjects: deduplicateExpectations(\n expectedObjects,\n (value) => objectRefKey(value.ref),\n \"Expected objects\"\n ),\n expectedLinks: deduplicateExpectations(\n expectedLinks,\n (value) => linkRefKey(value.ref),\n \"Expected links\"\n ),\n expectedLinkScopes: deduplicateExpectations(\n expectedLinkScopes,\n (value) => linkScopeKey(value.source, value.linkId),\n \"Expected link scopes\"\n ),\n })\n}\n\nexport function normalizeProjectionSourceRef(source: ProjectionSourceRef): ProjectionSourceRef {\n return Object.freeze({\n projectionId: normalizeNonblank(source.projectionId, \"Projection id\"),\n })\n}\n\nexport function normalizePinnedDatasetVersion(version: PinnedDatasetVersion): PinnedDatasetVersion {\n return Object.freeze({\n datasetId: normalizeNonblank(version.datasetId, \"Dataset id\"),\n versionId: normalizeNonblank(version.versionId, \"Dataset version id\"),\n createdAt: normalizeTimestamp(version.createdAt, \"Dataset version createdAt\"),\n })\n}\n\nexport function normalizeProjectionRunId(runId: string): string {\n return normalizeNonblank(runId, \"Projection run id\")\n}\n\nexport function normalizeProjectionExecution(input: ProjectionExecution): ProjectionExecution {\n return Object.freeze({\n projectionRunId: normalizeProjectionRunId(input.projectionRunId),\n executionToken: normalizeNonblank(input.executionToken, \"Projection execution token\"),\n })\n}\n\nfunction normalizeProjectionEntity(entity: ProjectionEntityRef): ProjectionEntityRef {\n return entity.kind === \"object\"\n ? Object.freeze({ kind: \"object\", ref: normalizeObjectRef(entity.ref) })\n : Object.freeze({ kind: \"link\", ref: normalizeLinkRef(entity.ref) })\n}\n\nfunction normalizeProjectionAssertion(\n assertion: ProjectionSourceAssertion\n): ProjectionSourceAssertion {\n return assertion.kind === \"object\"\n ? Object.freeze({\n kind: \"object\",\n ref: normalizeObjectRef(assertion.ref),\n properties: normalizeJsonProperties(assertion.properties),\n ...(assertion.sourceUpdatedAt !== undefined\n ? {\n sourceUpdatedAt: normalizeProjectionSourceTimestamp(assertion.sourceUpdatedAt),\n }\n : {}),\n })\n : Object.freeze({\n kind: \"link\",\n ref: normalizeLinkRef(assertion.ref),\n ...(assertion.properties !== undefined\n ? { properties: normalizeJsonProperties(assertion.properties) }\n : {}),\n })\n}\n\nexport function normalizeProjectionSourceEntry(\n input: ProjectionSourceEntry\n): ProjectionSourceEntry {\n const root = normalizeProjectionEntity(input.root)\n const seen = new Set<string>()\n const assertions = input.assertions.map((assertion) => {\n const normalized = normalizeProjectionAssertion(assertion)\n const key = projectionEntityKey(normalized)\n if (seen.has(key)) {\n throw new MaterializationValidationError(`Projection entry repeats asserted entity ${key}.`)\n }\n seen.add(key)\n return normalized\n })\n const rootKey = projectionEntityKey(root)\n if (!seen.has(rootKey)) {\n throw new MaterializationValidationError(\n `Projection entry must contain an assertion matching root ${rootKey}.`\n )\n }\n if (root.kind === \"object\") {\n const objectAssertions = assertions.filter((assertion) => assertion.kind === \"object\")\n if (objectAssertions.length !== 1 || projectionEntityKey(objectAssertions[0]) !== rootKey) {\n throw new MaterializationValidationError(\n \"An object projection root must contain exactly its matching object assertion plus links.\"\n )\n }\n for (const assertion of assertions) {\n if (\n assertion.kind === \"link\" &&\n objectRefKey(assertion.ref.source) !== objectRefKey(root.ref)\n ) {\n throw new MaterializationValidationError(\n \"An object projection root may contain only links sourced from that root.\"\n )\n }\n }\n } else if (\n assertions.length !== 1 ||\n assertions[0].kind !== \"link\" ||\n projectionEntityKey(assertions[0]) !== rootKey\n ) {\n throw new MaterializationValidationError(\n \"A link projection root must contain exactly its matching link assertion.\"\n )\n }\n return Object.freeze({\n root,\n assertions: Object.freeze(\n assertions.sort((left, right) =>\n compareStrings(projectionEntityKey(left), projectionEntityKey(right))\n )\n ),\n })\n}\n\nfunction normalizeTelemetrySeries(series: TelemetrySeriesRef): TelemetrySeriesRef {\n return Object.freeze({\n object: normalizeObjectRef(series.object),\n propertyId: normalizeNonblank(series.propertyId, \"Telemetry property id\"),\n })\n}\n\nfunction normalizeTelemetryPoint(point: TelemetryPointWrite): TelemetryPointWrite {\n try {\n assertJsonValue(point.value, \"Telemetry point value\")\n } catch (error) {\n throw new MaterializationValidationError(\n error instanceof Error ? error.message : \"Telemetry point value must be JSON.\"\n )\n }\n return Object.freeze({\n series: normalizeTelemetrySeries(point.series),\n value: cloneJsonValue(point.value),\n ...(point.unit !== undefined\n ? { unit: normalizeNonblank(point.unit, \"Telemetry point unit\") }\n : {}),\n at: normalizeTimestamp(point.at, \"Telemetry point timestamp\"),\n })\n}\n\nexport function normalizeTelemetryAppend(input: TelemetryAppend): TelemetryAppend {\n const pointsByKey = new Map<string, TelemetryPointWrite>()\n for (const point of input.points) {\n const normalized = normalizeTelemetryPoint(point)\n const key = telemetryPointKey(normalized.series, normalized.at)\n const existing = pointsByKey.get(key)\n if (\n input.source.kind === \"runtime\" &&\n existing &&\n stableJsonStringify(existing) !== stableJsonStringify(normalized)\n ) {\n throw new MaterializationValidationError(`Conflicting telemetry points for ${key}.`)\n }\n // Projection batches follow stable physical source order: the last occurrence wins. Runtime\n // callers remain strict because contradictory points usually indicate a request bug.\n pointsByKey.set(key, normalized)\n }\n const points = [...pointsByKey.entries()]\n .sort(([left], [right]) => compareStrings(left, right))\n .map(([, point]) => point)\n const source =\n input.source.kind === \"runtime\"\n ? Object.freeze({\n kind: \"runtime\" as const,\n requestId: normalizeNonblank(input.source.requestId, \"Runtime request id\"),\n })\n : Object.freeze({\n kind: \"projection\" as const,\n projection: normalizeProjectionSourceRef(input.source.projection),\n datasetVersion: normalizePinnedDatasetVersion(input.source.datasetVersion),\n execution: normalizeProjectionExecution(input.source.execution),\n batchOrdinal: input.source.batchOrdinal,\n sourceRowCount: input.source.sourceRowCount,\n sourceRowsSkipped: input.source.sourceRowsSkipped,\n inputExhausted: input.source.inputExhausted,\n })\n if (source.kind === \"projection\") {\n if (!Number.isSafeInteger(source.batchOrdinal) || source.batchOrdinal < 0) {\n throw new MaterializationValidationError(\n \"Telemetry projection batch ordinal must be a nonnegative safe integer.\"\n )\n }\n if (!Number.isSafeInteger(source.sourceRowCount) || source.sourceRowCount < 0) {\n throw new MaterializationValidationError(\n \"Telemetry projection sourceRowCount must be a nonnegative safe integer.\"\n )\n }\n if (!Number.isSafeInteger(source.sourceRowsSkipped) || source.sourceRowsSkipped < 0) {\n throw new MaterializationValidationError(\n \"Telemetry projection sourceRowsSkipped must be a nonnegative safe integer.\"\n )\n }\n if (source.sourceRowsSkipped > source.sourceRowCount) {\n throw new MaterializationValidationError(\n \"Telemetry projection sourceRowsSkipped cannot exceed sourceRowCount.\"\n )\n }\n if (typeof source.inputExhausted !== \"boolean\") {\n throw new MaterializationValidationError(\n \"Telemetry projection inputExhausted must be a boolean.\"\n )\n }\n }\n return Object.freeze({\n source,\n points: Object.freeze(points),\n })\n}\n",
18
+ "import { assertJsonValue, cloneJsonValue, compareStrings, stableJsonStringify } from \"../../json\"\nimport { MaterializationValidationError } from \"../../materialization/errors\"\nimport type {\n ExpectedLinkRevision,\n ExpectedLinkScopeRevision,\n ExpectedObjectRevision,\n OntologyEditCommit,\n OntologyEditOperation,\n PinnedDatasetVersion,\n ProjectionEntityRef,\n ProjectionExecution,\n ProjectionSourceAssertion,\n ProjectionSourceEntry,\n ProjectionSourceRef,\n TelemetryAppend,\n TelemetryPointWrite,\n TelemetrySeriesRef,\n} from \"../../materialization/model\"\nimport {\n linkRefKey,\n linkScopeKey,\n normalizeLinkRef,\n normalizeObjectRef,\n objectRefKey,\n projectionEntityKey,\n telemetryPointKey,\n} from \"../../materialization/refs\"\nimport { parseDatasetTimestamp } from \"../../projections/timestamp\"\n\nexport function normalizeJsonProperties(\n properties: Readonly<Record<string, unknown>>,\n label = \"Properties\"\n): Readonly<Record<string, import(\"../../json\").JsonValue>> {\n if (typeof properties !== \"object\" || properties === null || Array.isArray(properties)) {\n throw new MaterializationValidationError(`${label} must be a JSON object.`)\n }\n\n const normalized: Record<string, import(\"../../json\").JsonValue> = {}\n for (const propertyId of Object.keys(properties).sort(compareStrings)) {\n if (propertyId.trim().length === 0) {\n throw new MaterializationValidationError(`${label} contains a blank property id.`)\n }\n const value = properties[propertyId]\n try {\n assertJsonValue(value, `${label}.${propertyId}`)\n } catch (error) {\n throw new MaterializationValidationError(\n error instanceof Error ? error.message : `${label}.${propertyId} must be JSON.`\n )\n }\n normalized[propertyId] = cloneJsonValue(value)\n }\n return Object.freeze(normalized)\n}\n\nfunction normalizeNonblank(value: string, label: string): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new MaterializationValidationError(`${label} must be a nonblank string.`)\n }\n return value\n}\n\nfunction normalizeTimestamp(value: string, label: string): string {\n const milliseconds = Date.parse(value)\n if (!Number.isFinite(milliseconds)) {\n throw new MaterializationValidationError(`${label} must be a valid timestamp.`)\n }\n return new Date(milliseconds).toISOString()\n}\n\nfunction normalizeProjectionSourceTimestamp(value: string): string {\n const timestamp = parseDatasetTimestamp(value)\n if (!timestamp) {\n throw new MaterializationValidationError(\n \"Projection source update timestamp must be a valid timestamp.\"\n )\n }\n return timestamp.toISOString()\n}\n\nfunction normalizePropertyIds(values: readonly string[], label: string): readonly string[] {\n const seen = new Set<string>()\n const normalized: string[] = []\n for (const value of values) {\n normalizeNonblank(value, label)\n if (seen.has(value)) {\n throw new MaterializationValidationError(`${label} contains duplicate '${value}'.`)\n }\n seen.add(value)\n normalized.push(value)\n }\n return Object.freeze(normalized.sort(compareStrings))\n}\n\nfunction normalizeOperation(operation: OntologyEditOperation): OntologyEditOperation {\n normalizeNonblank(operation.id, \"Operation id\")\n if (operation.kind === \"object.create\" || operation.kind === \"object.upsert\") {\n return Object.freeze({\n id: operation.id,\n kind: operation.kind,\n ref: normalizeObjectRef(operation.ref),\n properties: normalizeJsonProperties(operation.properties),\n })\n }\n if (operation.kind === \"object.patch\") {\n const set = normalizeJsonProperties(operation.set, `Operation '${operation.id}' set`)\n const unset = normalizePropertyIds(operation.unset, `Operation '${operation.id}' unset`)\n const reset = normalizePropertyIds(operation.reset, `Operation '${operation.id}' reset`)\n const setIds = new Set(Object.keys(set))\n for (const propertyId of [...unset, ...reset]) {\n if (setIds.has(propertyId)) {\n throw new MaterializationValidationError(\n `Operation '${operation.id}' property '${propertyId}' appears in set and unset/reset.`\n )\n }\n }\n for (const propertyId of unset) {\n if (reset.includes(propertyId)) {\n throw new MaterializationValidationError(\n `Operation '${operation.id}' property '${propertyId}' appears in unset and reset.`\n )\n }\n }\n return Object.freeze({\n id: operation.id,\n kind: operation.kind,\n ref: normalizeObjectRef(operation.ref),\n set,\n unset,\n reset,\n })\n }\n if (operation.kind === \"object.delete\" || operation.kind === \"object.restore\") {\n return Object.freeze({\n id: operation.id,\n kind: operation.kind,\n ref: normalizeObjectRef(operation.ref),\n })\n }\n if (operation.kind === \"link.upsert\") {\n return Object.freeze({\n id: operation.id,\n kind: operation.kind,\n ref: normalizeLinkRef(operation.ref),\n ...(operation.properties !== undefined\n ? { properties: normalizeJsonProperties(operation.properties) }\n : {}),\n })\n }\n if (operation.kind === \"link.delete\" || operation.kind === \"link.reset\") {\n return Object.freeze({\n id: operation.id,\n kind: operation.kind,\n ref: normalizeLinkRef(operation.ref),\n })\n }\n throw new MaterializationValidationError(\"Unknown ontology edit operation kind.\")\n}\n\nfunction deduplicateExpectations<T>(\n values: readonly T[],\n keyOf: (value: T) => string,\n label: string\n): readonly T[] {\n const byKey = new Map<string, T>()\n for (const value of values) {\n const key = keyOf(value)\n const existing = byKey.get(key)\n if (existing && stableJsonStringify(existing) !== stableJsonStringify(value)) {\n throw new MaterializationValidationError(`${label} has contradictory values for ${key}.`)\n }\n byKey.set(key, value)\n }\n return Object.freeze(\n [...byKey.entries()]\n .sort(([left], [right]) => compareStrings(left, right))\n .map(([, value]) => value)\n )\n}\n\nfunction normalizeExpectedObject(value: ExpectedObjectRevision): ExpectedObjectRevision {\n const ref = normalizeObjectRef(value.ref)\n if (!value.exists) return Object.freeze({ ref, exists: false })\n if (!Number.isSafeInteger(value.version) || value.version < 1) {\n throw new MaterializationValidationError(\"Expected object version must be a positive integer.\")\n }\n return Object.freeze({\n ref,\n exists: true,\n version: value.version,\n lastCommitId: normalizeNonblank(value.lastCommitId, \"Expected object lastCommitId\"),\n })\n}\n\nfunction normalizeExpectedLink(value: ExpectedLinkRevision): ExpectedLinkRevision {\n const ref = normalizeLinkRef(value.ref)\n if (!value.exists) return Object.freeze({ ref, exists: false })\n return Object.freeze({\n ref,\n exists: true,\n lastCommitId: normalizeNonblank(value.lastCommitId, \"Expected link lastCommitId\"),\n })\n}\n\nfunction normalizeExpectedLinkScope(value: ExpectedLinkScopeRevision): ExpectedLinkScopeRevision {\n return Object.freeze({\n source: normalizeObjectRef(value.source),\n linkId: normalizeNonblank(value.linkId, \"Expected link scope link id\"),\n fingerprint: normalizeNonblank(value.fingerprint, \"Expected link scope fingerprint\"),\n })\n}\n\n/**\n * Validates that every grouped id exists exactly once across the declared groups.\n *\n * A group naming an unknown or repeated id would silently widen or split the unit a caller item\n * relies on, so both are rejected before any operation applies.\n */\nfunction normalizeOperationGroups(\n groups: readonly (readonly string[])[],\n operationIds: ReadonlyMap<string, number>\n): readonly (readonly string[])[] {\n const grouped = new Set<string>()\n const normalized = groups.map((group) => {\n if (group.length < 2) {\n throw new MaterializationValidationError(\n \"Operation groups must contain at least two operations.\"\n )\n }\n\n const positions = group.map((id) => {\n const position = operationIds.get(id)\n if (position === undefined) {\n throw new MaterializationValidationError(\n `Operation group references unknown operation id '${id}'.`\n )\n }\n if (grouped.has(id)) {\n throw new MaterializationValidationError(\n `Operation id '${id}' appears in more than one operation group.`\n )\n }\n grouped.add(id)\n return position\n })\n\n const first = positions[0]!\n if (positions.some((position, index) => position !== first + index)) {\n throw new MaterializationValidationError(\n \"Operation groups must list a contiguous run in operation order.\"\n )\n }\n return { first, ids: Object.freeze([...group]) }\n })\n\n normalized.sort((left, right) => left.first - right.first)\n return Object.freeze(normalized.map(({ ids }) => ids))\n}\n\nexport function normalizeOntologyEditCommit(input: OntologyEditCommit): OntologyEditCommit {\n const operationIds = new Map<string, number>()\n const operations = input.operations.map((operation, index) => {\n const normalized = normalizeOperation(operation)\n if (operationIds.has(normalized.id)) {\n throw new MaterializationValidationError(`Duplicate operation id '${normalized.id}'.`)\n }\n operationIds.set(normalized.id, index)\n return normalized\n })\n\n if (input.mode === \"continue\") {\n return Object.freeze({\n mode: \"continue\",\n source: Object.freeze({\n kind: \"runtime\",\n requestId: normalizeNonblank(input.source.requestId, \"Runtime request id\"),\n }),\n operations: Object.freeze(operations),\n ...(input.operationGroups !== undefined\n ? { operationGroups: normalizeOperationGroups(input.operationGroups, operationIds) }\n : {}),\n })\n }\n\n const source =\n input.source.kind === \"action\"\n ? Object.freeze({\n kind: \"action\" as const,\n actionId: normalizeNonblank(input.source.actionId, \"Action id\"),\n runId: normalizeNonblank(input.source.runId, \"Action run id\"),\n })\n : Object.freeze({\n kind: \"runtime\" as const,\n requestId: normalizeNonblank(input.source.requestId, \"Runtime request id\"),\n })\n const expectedObjects = input.expectedObjects.map(normalizeExpectedObject)\n const expectedLinks = input.expectedLinks.map(normalizeExpectedLink)\n const expectedLinkScopes = input.expectedLinkScopes.map(normalizeExpectedLinkScope)\n\n return Object.freeze({\n mode: \"atomic\",\n source,\n operations: Object.freeze(operations),\n expectedObjects: deduplicateExpectations(\n expectedObjects,\n (value) => objectRefKey(value.ref),\n \"Expected objects\"\n ),\n expectedLinks: deduplicateExpectations(\n expectedLinks,\n (value) => linkRefKey(value.ref),\n \"Expected links\"\n ),\n expectedLinkScopes: deduplicateExpectations(\n expectedLinkScopes,\n (value) => linkScopeKey(value.source, value.linkId),\n \"Expected link scopes\"\n ),\n })\n}\n\nexport function normalizeProjectionSourceRef(source: ProjectionSourceRef): ProjectionSourceRef {\n return Object.freeze({\n projectionId: normalizeNonblank(source.projectionId, \"Projection id\"),\n })\n}\n\nexport function normalizePinnedDatasetVersion(version: PinnedDatasetVersion): PinnedDatasetVersion {\n return Object.freeze({\n datasetId: normalizeNonblank(version.datasetId, \"Dataset id\"),\n versionId: normalizeNonblank(version.versionId, \"Dataset version id\"),\n createdAt: normalizeTimestamp(version.createdAt, \"Dataset version createdAt\"),\n })\n}\n\nexport function normalizeProjectionRunId(runId: string): string {\n return normalizeNonblank(runId, \"Projection run id\")\n}\n\nexport function normalizeProjectionExecution(input: ProjectionExecution): ProjectionExecution {\n return Object.freeze({\n projectionRunId: normalizeProjectionRunId(input.projectionRunId),\n executionToken: normalizeNonblank(input.executionToken, \"Projection execution token\"),\n })\n}\n\nexport function normalizeProjectionEntity(entity: ProjectionEntityRef): ProjectionEntityRef {\n return entity.kind === \"object\"\n ? Object.freeze({ kind: \"object\", ref: normalizeObjectRef(entity.ref) })\n : Object.freeze({ kind: \"link\", ref: normalizeLinkRef(entity.ref) })\n}\n\nfunction normalizeProjectionAssertion(\n assertion: ProjectionSourceAssertion\n): ProjectionSourceAssertion {\n return assertion.kind === \"object\"\n ? Object.freeze({\n kind: \"object\",\n ref: normalizeObjectRef(assertion.ref),\n properties: normalizeJsonProperties(assertion.properties),\n ...(assertion.sourceUpdatedAt !== undefined\n ? {\n sourceUpdatedAt: normalizeProjectionSourceTimestamp(assertion.sourceUpdatedAt),\n }\n : {}),\n })\n : Object.freeze({\n kind: \"link\",\n ref: normalizeLinkRef(assertion.ref),\n ...(assertion.properties !== undefined\n ? { properties: normalizeJsonProperties(assertion.properties) }\n : {}),\n })\n}\n\nexport function normalizeProjectionSourceEntry(\n input: ProjectionSourceEntry\n): ProjectionSourceEntry {\n const root = normalizeProjectionEntity(input.root)\n const seen = new Set<string>()\n const assertions = input.assertions.map((assertion) => {\n const normalized = normalizeProjectionAssertion(assertion)\n const key = projectionEntityKey(normalized)\n if (seen.has(key)) {\n throw new MaterializationValidationError(`Projection entry repeats asserted entity ${key}.`)\n }\n seen.add(key)\n return normalized\n })\n const rootKey = projectionEntityKey(root)\n if (!seen.has(rootKey)) {\n throw new MaterializationValidationError(\n `Projection entry must contain an assertion matching root ${rootKey}.`\n )\n }\n if (root.kind === \"object\") {\n const objectAssertions = assertions.filter((assertion) => assertion.kind === \"object\")\n if (objectAssertions.length !== 1 || projectionEntityKey(objectAssertions[0]) !== rootKey) {\n throw new MaterializationValidationError(\n \"An object projection root must contain exactly its matching object assertion plus links.\"\n )\n }\n for (const assertion of assertions) {\n if (\n assertion.kind === \"link\" &&\n objectRefKey(assertion.ref.source) !== objectRefKey(root.ref)\n ) {\n throw new MaterializationValidationError(\n \"An object projection root may contain only links sourced from that root.\"\n )\n }\n }\n } else if (\n assertions.length !== 1 ||\n assertions[0].kind !== \"link\" ||\n projectionEntityKey(assertions[0]) !== rootKey\n ) {\n throw new MaterializationValidationError(\n \"A link projection root must contain exactly its matching link assertion.\"\n )\n }\n return Object.freeze({\n root,\n assertions: Object.freeze(\n assertions.sort((left, right) =>\n compareStrings(projectionEntityKey(left), projectionEntityKey(right))\n )\n ),\n })\n}\n\nfunction normalizeTelemetrySeries(series: TelemetrySeriesRef): TelemetrySeriesRef {\n return Object.freeze({\n object: normalizeObjectRef(series.object),\n propertyId: normalizeNonblank(series.propertyId, \"Telemetry property id\"),\n })\n}\n\nfunction normalizeTelemetryPoint(point: TelemetryPointWrite): TelemetryPointWrite {\n try {\n assertJsonValue(point.value, \"Telemetry point value\")\n } catch (error) {\n throw new MaterializationValidationError(\n error instanceof Error ? error.message : \"Telemetry point value must be JSON.\"\n )\n }\n return Object.freeze({\n series: normalizeTelemetrySeries(point.series),\n value: cloneJsonValue(point.value),\n ...(point.unit !== undefined\n ? { unit: normalizeNonblank(point.unit, \"Telemetry point unit\") }\n : {}),\n at: normalizeTimestamp(point.at, \"Telemetry point timestamp\"),\n })\n}\n\nexport function normalizeTelemetryAppend(input: TelemetryAppend): TelemetryAppend {\n const pointsByKey = new Map<string, TelemetryPointWrite>()\n for (const point of input.points) {\n const normalized = normalizeTelemetryPoint(point)\n const key = telemetryPointKey(normalized.series, normalized.at)\n const existing = pointsByKey.get(key)\n if (\n input.source.kind === \"runtime\" &&\n existing &&\n stableJsonStringify(existing) !== stableJsonStringify(normalized)\n ) {\n throw new MaterializationValidationError(`Conflicting telemetry points for ${key}.`)\n }\n // Projection batches follow stable physical source order: the last occurrence wins. Runtime\n // callers remain strict because contradictory points usually indicate a request bug.\n pointsByKey.set(key, normalized)\n }\n const points = [...pointsByKey.entries()]\n .sort(([left], [right]) => compareStrings(left, right))\n .map(([, point]) => point)\n const source =\n input.source.kind === \"runtime\"\n ? Object.freeze({\n kind: \"runtime\" as const,\n requestId: normalizeNonblank(input.source.requestId, \"Runtime request id\"),\n })\n : Object.freeze({\n kind: \"projection\" as const,\n projection: normalizeProjectionSourceRef(input.source.projection),\n datasetVersion: normalizePinnedDatasetVersion(input.source.datasetVersion),\n execution: normalizeProjectionExecution(input.source.execution),\n batchOrdinal: input.source.batchOrdinal,\n sourceRowCount: input.source.sourceRowCount,\n sourceRowsSkipped: input.source.sourceRowsSkipped,\n inputExhausted: input.source.inputExhausted,\n })\n if (source.kind === \"projection\") {\n if (!Number.isSafeInteger(source.batchOrdinal) || source.batchOrdinal < 0) {\n throw new MaterializationValidationError(\n \"Telemetry projection batch ordinal must be a nonnegative safe integer.\"\n )\n }\n if (!Number.isSafeInteger(source.sourceRowCount) || source.sourceRowCount < 0) {\n throw new MaterializationValidationError(\n \"Telemetry projection sourceRowCount must be a nonnegative safe integer.\"\n )\n }\n if (!Number.isSafeInteger(source.sourceRowsSkipped) || source.sourceRowsSkipped < 0) {\n throw new MaterializationValidationError(\n \"Telemetry projection sourceRowsSkipped must be a nonnegative safe integer.\"\n )\n }\n if (source.sourceRowsSkipped > source.sourceRowCount) {\n throw new MaterializationValidationError(\n \"Telemetry projection sourceRowsSkipped cannot exceed sourceRowCount.\"\n )\n }\n if (typeof source.inputExhausted !== \"boolean\") {\n throw new MaterializationValidationError(\n \"Telemetry projection inputExhausted must be a boolean.\"\n )\n }\n }\n return Object.freeze({\n source,\n points: Object.freeze(points),\n })\n}\n",
19
19
  "import type { OntologyEditOperation } from \"../../materialization/model\"\n\nexport type EditExecutionUnit =\n | { readonly kind: \"single\"; readonly operation: OntologyEditOperation }\n | { readonly kind: \"atomic-group\"; readonly operations: readonly OntologyEditOperation[] }\n\n/** Compiles validated operation groups into the exact units the executor applies. */\nexport function compileEditExecutionUnits(input: {\n readonly operations: readonly OntologyEditOperation[]\n readonly operationGroups?: readonly (readonly string[])[]\n}): readonly EditExecutionUnit[] {\n const groupByFirstId = new Map(\n (input.operationGroups ?? []).map((ids) => [ids[0]!, new Set(ids)] as const)\n )\n const units: EditExecutionUnit[] = []\n\n for (let index = 0; index < input.operations.length; ) {\n const operation = input.operations[index]!\n const groupIds = groupByFirstId.get(operation.id)\n if (!groupIds) {\n units.push({ kind: \"single\", operation })\n index += 1\n continue\n }\n\n const operations = input.operations.slice(index, index + groupIds.size)\n units.push({ kind: \"atomic-group\", operations })\n index += operations.length\n }\n\n return units\n}\n",
20
20
  "import type {\n MaterializationLinkScopeState,\n MaterializationLinkState,\n MaterializationObjectState,\n MaterializationSession,\n MaterializationStatePage,\n MaterializationStateRequestChunk,\n OntologyMaterializationStorage,\n StoredTelemetryPoint,\n} from \"../../storage/ontology\"\nimport type { MaterializerContext } from \"../context\"\n\ninterface MutableStatePage {\n objects: MaterializationObjectState[]\n links: MaterializationLinkState[]\n linkScopes: MaterializationLinkScopeState[]\n points: StoredTelemetryPoint[]\n}\n\nexport async function* oneStateRequest(\n request: MaterializationStateRequestChunk\n): AsyncIterable<MaterializationStateRequestChunk> {\n yield request\n}\n\nexport async function loadState(\n context: Pick<MaterializerContext, \"batching\">,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n request: MaterializationStateRequestChunk\n): Promise<MaterializationStatePage> {\n const result: MutableStatePage = { objects: [], links: [], linkScopes: [], points: [] }\n for await (const page of storage.streamState({\n session,\n requests: oneStateRequest(request),\n pageRows: context.batching.statePageRows,\n })) {\n result.objects.push(...page.objects)\n result.links.push(...page.links)\n result.linkScopes.push(...page.linkScopes)\n result.points.push(...page.points)\n }\n return result\n}\n",
21
21
  "import type { JsonValue } from \"../../json\"\nimport { MaterializationConflictError } from \"../../materialization/errors\"\nimport type {\n LinkOverride,\n LinkSlotOverride,\n ObjectOverride,\n OntologyLinkRef,\n OntologyLinkScopeRef,\n OntologyObjectRef,\n} from \"../../materialization/model\"\nimport { linkRefKey } from \"../../materialization/refs\"\nimport type {\n StoredLinkSlotOverride,\n StoredObjectOverride,\n StoredSourceLinkAssertion,\n StoredSourceObjectAssertion,\n StoredTelemetryPoint,\n} from \"../../storage/ontology\"\n\nexport interface ResolvedObjectValue {\n readonly ref: OntologyObjectRef\n readonly properties: Readonly<Record<string, JsonValue>>\n}\n\nexport interface ResolvedLinkValue {\n readonly ref: OntologyLinkRef\n readonly properties?: Readonly<Record<string, JsonValue>>\n}\n\nexport function usableLinkSlotOverride(\n stored: StoredLinkSlotOverride | null\n): LinkSlotOverride | null {\n if (!stored) return null\n if (stored.value.kind !== \"legacy-conflict\") return stored.value\n const { source, linkId } = stored.ref\n const scopeLabel = JSON.stringify([source.objectTypeId, source.primaryId, linkId])\n throw new MaterializationConflictError(\n \"effective-state\",\n `Cardinality-one link slot ${scopeLabel} could not be migrated automatically because it ` +\n \"contains multiple legacy upsert overrides. Consolidate the stored overrides and clear \" +\n \"the migration conflict marker before materializing this scope.\"\n )\n}\n\nexport function resolveEffectiveObject(input: {\n readonly ref: OntologyObjectRef\n readonly primaryPropertyId: string\n readonly source: StoredSourceObjectAssertion | null\n readonly override: ObjectOverride | null\n readonly editedAt: Readonly<Record<string, string>>\n readonly latestTelemetry: readonly StoredTelemetryPoint[]\n}): ResolvedObjectValue | null {\n const properties = resolveObjectAuthority(input.source, input.override, input.editedAt)\n if (!properties) return null\n\n properties[input.primaryPropertyId] = input.ref.primaryId\n applyLatestTelemetry(properties, input.latestTelemetry)\n return { ref: input.ref, properties }\n}\n\nfunction resolveObjectAuthority(\n source: StoredSourceObjectAssertion | null,\n override: ObjectOverride | null,\n editedAt: Readonly<Record<string, string>>\n): Record<string, JsonValue> | null {\n switch (override?.kind) {\n case \"delete\":\n return null\n case \"create\":\n if (!source) return { ...override.properties }\n return resolveSourceAndEdits(source, override, editedAt)\n case \"patch\":\n if (!source) return null\n return resolveSourceAndEdits(source, override, editedAt)\n default:\n if (!source) return null\n return { ...source.assertion.properties }\n }\n}\n\nfunction resolveSourceAndEdits(\n source: StoredSourceObjectAssertion,\n override: Exclude<ObjectOverride, { readonly kind: \"delete\" }>,\n editedAt: Readonly<Record<string, string>>\n): Record<string, JsonValue> {\n const properties = { ...source.assertion.properties }\n const absentSourcePropertyIds = new Set(source.assertion.absentSourcePropertyIds ?? [])\n\n for (const propertyId of objectEditCandidateIds(override, editedAt)) {\n const edit = objectEditCandidate(override, propertyId)\n const editTimestamp = editedAt[propertyId]\n const hasSourceCandidate =\n Object.hasOwn(source.assertion.properties, propertyId) ||\n absentSourcePropertyIds.has(propertyId)\n const sourceWins =\n hasSourceCandidate &&\n source.assertion.sourceUpdatedAt !== undefined &&\n editTimestamp !== undefined &&\n source.assertion.sourceUpdatedAt.localeCompare(editTimestamp) >= 0\n\n if (!sourceWins) applyObjectEditCandidate(properties, propertyId, edit)\n }\n return properties\n}\n\ninterface ObjectPropertyCandidate {\n readonly present: boolean\n readonly value?: JsonValue\n}\n\nfunction objectEditCandidateIds(\n override: Exclude<ObjectOverride, { readonly kind: \"delete\" }>,\n editedAt: Readonly<Record<string, string>>\n): string[] {\n const ids = new Set(Object.keys(editedAt))\n if (override.kind === \"create\") {\n for (const propertyId of Object.keys(override.properties)) ids.add(propertyId)\n } else {\n for (const propertyId of Object.keys(override.set)) ids.add(propertyId)\n for (const propertyId of override.unset) ids.add(propertyId)\n }\n return [...ids]\n}\n\nfunction objectEditCandidate(\n override: Exclude<ObjectOverride, { readonly kind: \"delete\" }>,\n propertyId: string\n): ObjectPropertyCandidate {\n const values = override.kind === \"create\" ? override.properties : override.set\n return Object.hasOwn(values, propertyId)\n ? { present: true, value: values[propertyId] }\n : { present: false }\n}\n\nfunction applyObjectEditCandidate(\n properties: Record<string, JsonValue>,\n propertyId: string,\n candidate: ObjectPropertyCandidate\n): void {\n if (candidate.present) properties[propertyId] = candidate.value as JsonValue\n else delete properties[propertyId]\n}\n\nexport function storedObjectEditedAt(stored: StoredObjectOverride | null): Record<string, string> {\n if (!stored || stored.value.kind === \"delete\") return {}\n const editedAt = { ...(stored.editedAt ?? {}) }\n const candidateIds =\n stored.value.kind === \"create\"\n ? Object.keys(stored.value.properties)\n : [...Object.keys(stored.value.set), ...stored.value.unset]\n for (const propertyId of candidateIds) editedAt[propertyId] ??= stored.updatedAt\n return editedAt\n}\n\nfunction applyLatestTelemetry(\n properties: Record<string, JsonValue>,\n latestTelemetry: readonly StoredTelemetryPoint[]\n): void {\n for (const point of latestTelemetry) properties[point.series.propertyId] = point.value\n}\n\nexport function resolveEffectiveLink(input: {\n readonly ref: OntologyLinkRef\n readonly source: StoredSourceLinkAssertion | null\n readonly override: LinkOverride | null\n readonly sourceEndpointExists: boolean\n readonly targetEndpointExists: boolean\n}): ResolvedLinkValue | null {\n if (!input.sourceEndpointExists || !input.targetEndpointExists) return null\n if (input.override?.kind === \"delete\") return null\n\n if (input.override?.kind === \"upsert\") {\n return resolvedLink(input.ref, input.override.properties)\n }\n if (!input.source) return null\n return resolvedLink(input.ref, input.source.assertion.properties)\n}\n\n/** Resolves the effective edge selected by a cardinality-one link slot. */\nexport function resolveEffectiveLinkSlot(input: {\n readonly scope: OntologyLinkScopeRef\n readonly source: StoredSourceLinkAssertion | null\n readonly override: LinkSlotOverride | null\n readonly endpointExists: (ref: OntologyObjectRef) => boolean\n}): ResolvedLinkValue | null {\n if (!input.endpointExists(input.scope.source)) return null\n if (input.override?.kind === \"clear\") return null\n\n if (input.override?.kind === \"set\") {\n if (!input.endpointExists(input.override.target)) return null\n return resolvedLink(\n {\n source: input.scope.source,\n linkId: input.scope.linkId,\n target: input.override.target,\n },\n input.override.properties\n )\n }\n\n if (!input.source || !input.endpointExists(input.source.assertion.ref.target)) return null\n return resolvedLink(input.source.assertion.ref, input.source.assertion.properties)\n}\n\n/** Resolves one exact edge as a member of its cardinality-one link slot. */\nexport function resolveEffectiveLinkSlotMember(input: {\n readonly ref: OntologyLinkRef\n readonly source: StoredSourceLinkAssertion | null\n readonly override: LinkSlotOverride | null\n readonly endpointExists: (ref: OntologyObjectRef) => boolean\n}): ResolvedLinkValue | null {\n const resolved = resolveEffectiveLinkSlot({\n scope: { source: input.ref.source, linkId: input.ref.linkId },\n source: input.source,\n override: input.override,\n endpointExists: input.endpointExists,\n })\n return resolved && linkRefKey(resolved.ref) === linkRefKey(input.ref) ? resolved : null\n}\n\nfunction resolvedLink(\n ref: OntologyLinkRef,\n properties: Readonly<Record<string, JsonValue>> | undefined\n): ResolvedLinkValue {\n if (properties === undefined) return { ref }\n return { ref, properties }\n}\n",
@@ -31,15 +31,15 @@
31
31
  "import {\n MaterializationConflictError,\n MaterializationValidationError,\n} from \"../../materialization/errors\"\nimport type { ProjectionMaterializationIdentity } from \"../../materialization/model\"\nimport type { ProjectionDefinition, ResolvedProjection } from \"../../projections/types\"\nimport type { ProjectionRunRecord, ProjectionRunStorage, Storage } from \"../../storage\"\n\nexport interface LockProjectionExecutionInput {\n readonly projectId: string\n readonly projectionRunId: string\n readonly executionToken: string\n readonly identity: ProjectionMaterializationIdentity\n readonly resolved: ResolvedProjection<ProjectionDefinition>\n readonly capabilityErrorMessage?: string\n}\n\nexport interface LockedProjectionExecution {\n readonly projectionRuns: ProjectionRunStorage\n readonly run: ProjectionRunRecord\n}\n\n/** Locks and validates the current execution inside the materialization transaction. */\nexport async function lockProjectionRunForMaterialization(\n storage: Pick<Storage, \"projectionRuns\">,\n input: LockProjectionExecutionInput\n): Promise<LockedProjectionExecution> {\n const projectionRuns = storage.projectionRuns\n if (!projectionRuns) {\n throw new MaterializationValidationError(\n input.capabilityErrorMessage ??\n \"Storage transaction does not provide projection run capabilities.\"\n )\n }\n\n const run = await projectionRuns.lockForMaterialization({\n id: input.projectionRunId,\n projectId: input.projectId,\n executionToken: input.executionToken,\n identity: input.identity,\n })\n assertProjectionRunTargets(run, input.resolved)\n return { projectionRuns, run }\n}\n\nexport function assertProjectionRunTargets(\n run: ProjectionRunRecord,\n resolved: ResolvedProjection<ProjectionDefinition>\n): void {\n if (projectionRunTargetsMatch(run, resolved.definition)) return\n\n throw new MaterializationConflictError(\n \"run-correlation\",\n `Projection run '${run.id}' target object types do not match projection '${resolved.projectionId}'.`\n )\n}\n\nfunction projectionRunTargetsMatch(\n run: ProjectionRunRecord,\n definition: ProjectionDefinition\n): boolean {\n switch (definition._tag) {\n case \"ObjectProjectionDefinition\":\n case \"TelemetryProjectionDefinition\":\n return \"objectTypeId\" in run.target && run.target.objectTypeId === definition.objectTypeId\n case \"LinkProjectionDefinition\":\n return (\n \"sourceObjectTypeId\" in run.target &&\n run.target.sourceObjectTypeId === definition.sourceObjectTypeId &&\n run.target.targetObjectTypeId === definition.targetObjectTypeId\n )\n }\n}\n",
32
32
  "import { MaterializationValidationError } from \"../../materialization/errors\"\nimport type {\n PinnedDatasetVersion,\n ProjectionMaterializationIdentity,\n} from \"../../materialization/model\"\nimport type {\n LinkProjectionDefinition,\n ObjectProjectionDefinition,\n ResolvedProjection,\n TelemetryProjectionDefinition,\n} from \"../../projections/types\"\n\ntype SourceProjectionDefinition = ObjectProjectionDefinition | LinkProjectionDefinition\ntype SourceMaterializationIdentity = Extract<\n ProjectionMaterializationIdentity,\n { readonly protocol: \"replacement\" }\n>\ntype TelemetryMaterializationIdentity = Extract<\n ProjectionMaterializationIdentity,\n { readonly protocol: \"telemetry\" }\n>\n\ninterface ProjectionRunIdentityInput<\n TDefinition extends SourceProjectionDefinition | TelemetryProjectionDefinition,\n> {\n readonly resolved: ResolvedProjection<TDefinition>\n readonly datasetVersion: PinnedDatasetVersion\n readonly ontologyRevision: string\n}\n\nexport function createProjectionRunMaterializationIdentity(\n input: ProjectionRunIdentityInput<SourceProjectionDefinition>\n): SourceMaterializationIdentity\nexport function createProjectionRunMaterializationIdentity(\n input: ProjectionRunIdentityInput<TelemetryProjectionDefinition>\n): TelemetryMaterializationIdentity\nexport function createProjectionRunMaterializationIdentity(\n input: ProjectionRunIdentityInput<SourceProjectionDefinition | TelemetryProjectionDefinition>\n): ProjectionMaterializationIdentity\nexport function createProjectionRunMaterializationIdentity(\n input: ProjectionRunIdentityInput<SourceProjectionDefinition | TelemetryProjectionDefinition>\n): ProjectionMaterializationIdentity {\n const base = {\n projectionId: input.resolved.projectionId,\n datasetVersion: input.datasetVersion,\n ontologyRevision: input.ontologyRevision,\n projectionRevision: input.resolved.projectionRevision,\n ownershipHash: input.resolved.ownershipHash,\n }\n\n switch (input.resolved.definition._tag) {\n case \"ObjectProjectionDefinition\":\n return { ...base, projectionKind: \"object\", protocol: \"replacement\" }\n case \"LinkProjectionDefinition\":\n return { ...base, projectionKind: \"link\", protocol: \"replacement\" }\n case \"TelemetryProjectionDefinition\":\n return { ...base, projectionKind: \"telemetry\", protocol: \"telemetry\" }\n default:\n throw new MaterializationValidationError(\"Expected a supported projection definition.\")\n }\n}\n",
33
33
  "import {\n MaterializationConflictError,\n MaterializationValidationError,\n} from \"../../materialization/errors\"\nimport type {\n PinnedDatasetVersion,\n ProjectionMaterializationIdentity,\n ProjectionRunFinishInput,\n ProjectionRunTerminalDecision,\n} from \"../../materialization/model\"\nimport type { ProjectionDefinition, ResolvedProjection } from \"../../projections/types\"\nimport type { OntologyCommitRecord } from \"../../storage/ontology\"\nimport type { MaterializerContext, MaterializerStorage } from \"../context\"\nimport { withSerializationRetry } from \"../execution/commit-lifecycle\"\nimport { lockProjectionRunForMaterialization } from \"../execution/run-correlation\"\nimport {\n assertMaterializerRunExecution,\n assertTrustedPrimitiveMutationExecution,\n ensureMaterializerExecution,\n type MaterializerExecution,\n prepareMaterializerExecution,\n} from \"../execution/scope\"\nimport type { MaterializerCommand } from \"../materializer\"\nimport {\n normalizePinnedDatasetVersion,\n normalizeProjectionExecution,\n normalizeProjectionSourceRef,\n} from \"../shared/normalize\"\nimport { createProjectionRunMaterializationIdentity } from \"../shared/projection-run\"\n\ninterface PreparedProjectionRunFinish {\n readonly projectId: string\n readonly input: ProjectionRunFinishInput\n readonly identity: ProjectionMaterializationIdentity\n readonly resolved: ResolvedProjection<ProjectionDefinition>\n readonly finishedAt: Date\n readonly execution: MaterializerExecution\n}\n\nexport async function finishProjectionRun(\n context: MaterializerContext,\n raw: MaterializerCommand<ProjectionRunFinishInput>\n): Promise<void> {\n const command = prepareProjectionRunFinish(context, raw)\n await withSerializationRetry(context, () =>\n context.storage.transaction((storage) => finishProjectionRunTransaction(storage, command), {\n isolation: \"serializable\",\n })\n )\n}\n\nfunction prepareProjectionRunFinish(\n context: Pick<MaterializerContext, \"projectId\" | \"projectionRegistry\" | \"clock\">,\n raw: MaterializerCommand<ProjectionRunFinishInput>\n): PreparedProjectionRunFinish {\n assertValidTerminalDecision(raw.input)\n const source = normalizeProjectionSourceRef(raw.input.source)\n const datasetVersion = normalizePinnedDatasetVersion(raw.input.datasetVersion)\n const projectionExecution = normalizeProjectionExecution(raw.input.execution)\n const resolved =\n raw.input.protocol === \"replacement\"\n ? context.projectionRegistry.resolveSource(source.projectionId)\n : context.projectionRegistry.resolveTelemetry(source.projectionId)\n if (resolved.datasetId !== datasetVersion.datasetId) {\n throw new MaterializationValidationError(\n `Projection '${resolved.projectionId}' requires dataset '${resolved.datasetId}'.`\n )\n }\n const identity = createProjectionRunMaterializationIdentity({\n resolved,\n datasetVersion,\n ontologyRevision: context.projectionRegistry.ontologyRevision,\n })\n return {\n projectId: context.projectId,\n input: { ...raw.input, source, datasetVersion, execution: projectionExecution },\n identity,\n resolved,\n finishedAt: new Date(raw.input.finishedAt ?? context.clock()),\n execution: prepareMaterializerExecution(context.projectId, raw.scope),\n }\n}\n\nasync function finishProjectionRunTransaction(\n storage: MaterializerStorage,\n command: PreparedProjectionRunFinish\n): Promise<void> {\n await ensureMaterializerExecution(storage.executions, command.execution)\n assertTrustedPrimitiveMutationExecution(command.execution, {\n kind: \"projection\",\n id: command.input.source.projectionId,\n runId: command.input.execution.projectionRunId,\n })\n const { projectionRuns, run } = await lockProjectionRunForMaterialization(storage, {\n projectId: command.projectId,\n projectionRunId: command.input.execution.projectionRunId,\n executionToken: command.input.execution.executionToken,\n identity: command.identity,\n resolved: command.resolved,\n })\n assertMaterializerRunExecution(command.execution, run.executionId, `Projection run '${run.id}'`)\n\n if (command.input.protocol === \"replacement\") {\n await assertReplacementTerminalDecision(storage, command)\n }\n\n await projectionRuns.finish({\n id: command.input.execution.projectionRunId,\n projectId: command.projectId,\n executionToken: command.input.execution.executionToken,\n identity: command.identity,\n ...terminalDecision(command.input),\n finishedAt: command.finishedAt,\n })\n}\n\nfunction assertValidTerminalDecision(input: ProjectionRunFinishInput): void {\n if (input.protocol !== \"replacement\" && input.protocol !== \"telemetry\") {\n throw new MaterializationValidationError(\"Projection finish protocol is invalid.\")\n }\n if (input.status !== \"succeeded\" && input.status !== \"failed\" && input.status !== \"cancelled\") {\n throw new MaterializationValidationError(\"Projection finish status must be terminal.\")\n }\n const inputExhausted = \"inputExhausted\" in input ? input.inputExhausted : undefined\n if (input.status === \"succeeded\" && input.protocol === \"telemetry\") {\n if (inputExhausted === true) return\n throw new MaterializationValidationError(\n \"Telemetry projection success requires an explicit exhausted-input acknowledgement.\"\n )\n }\n if (inputExhausted !== undefined) {\n throw new MaterializationValidationError(\n \"Only telemetry projection success can acknowledge exhausted input.\"\n )\n }\n}\n\nfunction terminalDecision(input: ProjectionRunFinishInput): ProjectionRunTerminalDecision {\n if (input.status !== \"succeeded\") {\n return {\n protocol: input.protocol,\n status: input.status,\n ...(input.error === undefined ? {} : { error: input.error }),\n }\n }\n if (input.protocol === \"telemetry\") {\n return { protocol: \"telemetry\", status: \"succeeded\", inputExhausted: true }\n }\n return { protocol: \"replacement\", status: \"succeeded\" }\n}\n\nasync function assertReplacementTerminalDecision(\n storage: MaterializerStorage,\n command: PreparedProjectionRunFinish\n): Promise<void> {\n const commit = await storage.ontology.commits.getByOrigin({\n projectId: command.projectId,\n origin: {\n kind: \"projection\",\n projectionRunId: command.input.execution.projectionRunId,\n },\n })\n if (command.input.status === \"succeeded\") {\n if (!commit) {\n throw new MaterializationConflictError(\n \"run-correlation\",\n `Projection replacement run '${command.input.execution.projectionRunId}' cannot succeed before its ontology commit exists.`\n )\n }\n assertReplacementCommitCorrelation(commit, command)\n return\n }\n if (commit) {\n throw new MaterializationConflictError(\n \"run-correlation\",\n `Projection replacement run '${command.input.execution.projectionRunId}' cannot finish as '${command.input.status}' after its ontology commit exists.`\n )\n }\n}\n\nfunction assertReplacementCommitCorrelation(\n commit: OntologyCommitRecord,\n command: PreparedProjectionRunFinish\n): void {\n const { input, identity } = command\n if (\n commit.origin.kind !== \"projection\" ||\n commit.executionId !== command.execution.executionId ||\n commit.intent.kind !== \"projection\" ||\n commit.result.kind !== \"projection\" ||\n commit.origin.projectionRunId !== input.execution.projectionRunId ||\n commit.origin.projectionId !== input.source.projectionId ||\n commit.intent.source.projectionId !== input.source.projectionId ||\n !datasetVersionsEqual(commit.intent.datasetVersion, input.datasetVersion) ||\n commit.ontologyRevision !== identity.ontologyRevision ||\n commit.projectionRevision !== identity.projectionRevision ||\n commit.ownershipHash !== identity.ownershipHash\n ) {\n throw new MaterializationConflictError(\n \"run-correlation\",\n `Projection replacement run '${input.execution.projectionRunId}' commit identity does not match.`\n )\n }\n}\n\nfunction datasetVersionsEqual(left: PinnedDatasetVersion, right: PinnedDatasetVersion): boolean {\n return (\n left.datasetId === right.datasetId &&\n left.versionId === right.versionId &&\n left.createdAt === right.createdAt\n )\n}\n",
34
- "import { MaterializationValidationError } from \"../../materialization/errors\"\nimport type { ProjectionSourceEntry } from \"../../materialization/model\"\nimport { linkOwnershipKey } from \"../../materialization/refs\"\nimport type { OntologyRegistry } from \"../../ontology\"\nimport type { ProjectionRegistry } from \"../../projections/registry\"\nimport {\n validateLinkAuthorityProperties,\n validateObjectAuthorityProperties,\n} from \"../effective/validate\"\n\ntype ResolvedSourceProjection = ReturnType<ProjectionRegistry[\"resolveSource\"]>\ntype ProjectionAssertion = ProjectionSourceEntry[\"assertions\"][number]\ntype ObjectAssertion = Extract<ProjectionAssertion, { readonly kind: \"object\" }>\ntype LinkAssertion = Extract<ProjectionAssertion, { readonly kind: \"link\" }>\n\ninterface ProjectionValidationPolicy {\n readonly expectedRootKind: ProjectionSourceEntry[\"root\"][\"kind\"]\n readonly expectedRootDescription: string\n readonly ownedProperties: ReadonlyMap<string, ReadonlySet<string>>\n readonly ownedLinks: ReadonlySet<string>\n}\n\nexport type ProjectionEntryValidator = (entry: ProjectionSourceEntry) => ProjectionSourceEntry\n\nexport function createProjectionEntryValidator(\n ontology: OntologyRegistry,\n resolved: ResolvedSourceProjection\n): ProjectionEntryValidator {\n const policy = createValidationPolicy(resolved)\n return (entry) => validateProjectionEntry(ontology, resolved, policy, entry)\n}\n\nfunction createValidationPolicy(resolved: ResolvedSourceProjection): ProjectionValidationPolicy {\n const ownedProperties = new Map(\n resolved.ownership.objects.map((object) => [object.objectTypeId, new Set(object.propertyIds)])\n )\n const ownedLinks = new Set(\n resolved.ownership.links.map((link) => linkOwnershipKey(link.sourceObjectTypeId, link.linkId))\n )\n if (resolved.definition._tag === \"ObjectProjectionDefinition\") {\n return {\n expectedRootKind: \"object\",\n expectedRootDescription: \"an object\",\n ownedProperties,\n ownedLinks,\n }\n }\n return {\n expectedRootKind: \"link\",\n expectedRootDescription: \"a link\",\n ownedProperties,\n ownedLinks,\n }\n}\n\nfunction validateProjectionEntry(\n ontology: OntologyRegistry,\n resolved: ResolvedSourceProjection,\n policy: ProjectionValidationPolicy,\n entry: ProjectionSourceEntry\n): ProjectionSourceEntry {\n validateProjectionRoot(resolved, policy, entry)\n return {\n root: entry.root,\n assertions: entry.assertions.map((assertion) =>\n validateProjectionAssertion(ontology, resolved, policy, assertion)\n ),\n }\n}\n\nfunction validateProjectionRoot(\n resolved: ResolvedSourceProjection,\n policy: ProjectionValidationPolicy,\n entry: ProjectionSourceEntry\n): void {\n if (entry.root.kind === policy.expectedRootKind) return\n throw new MaterializationValidationError(\n `Projection '${resolved.projectionId}' requires ${policy.expectedRootDescription} root.`\n )\n}\n\nfunction validateProjectionAssertion(\n ontology: OntologyRegistry,\n resolved: ResolvedSourceProjection,\n policy: ProjectionValidationPolicy,\n assertion: ProjectionAssertion\n): ProjectionAssertion {\n if (assertion.kind === \"object\") {\n return validateObjectAssertion(ontology, resolved, policy, assertion)\n }\n return validateLinkAssertion(ontology, resolved, policy, assertion)\n}\n\nfunction validateObjectAssertion(\n ontology: OntologyRegistry,\n resolved: ResolvedSourceProjection,\n policy: ProjectionValidationPolicy,\n assertion: ObjectAssertion\n): ObjectAssertion {\n if (\n resolved.definition._tag !== \"ObjectProjectionDefinition\" ||\n assertion.ref.objectTypeId !== resolved.definition.objectTypeId\n ) {\n throw new MaterializationValidationError(\n \"Projection asserted an object outside its owned type.\"\n )\n }\n\n const properties = validateObjectAuthorityProperties(\n ontology,\n assertion.ref,\n assertion.properties\n )\n const owned = policy.ownedProperties.get(assertion.ref.objectTypeId) ?? new Set<string>()\n for (const propertyId of Object.keys(properties)) {\n if (owned.has(propertyId)) continue\n throw new MaterializationValidationError(\n `Projection '${resolved.projectionId}' asserted unowned property '${assertion.ref.objectTypeId}.${propertyId}'.`\n )\n }\n const conflictResolution = resolved.definition.conflictResolution ?? { strategy: \"editsWin\" }\n if (conflictResolution.strategy !== \"mostRecent\") {\n return { kind: \"object\", ref: assertion.ref, properties }\n }\n if (assertion.sourceUpdatedAt === undefined) {\n throw new MaterializationValidationError(\n `Projection '${resolved.projectionId}' requires source update timestamp ` +\n `'${conflictResolution.sourceTimestamp}' on every object assertion.`\n )\n }\n const primaryPropertyId = ontology.getPrimaryPropertyId(assertion.ref.objectTypeId)\n const absentSourcePropertyIds = [...owned]\n .filter(\n (propertyId) => propertyId !== primaryPropertyId && !Object.hasOwn(properties, propertyId)\n )\n .sort()\n return {\n kind: \"object\",\n ref: assertion.ref,\n properties,\n sourceUpdatedAt: assertion.sourceUpdatedAt,\n ...(absentSourcePropertyIds.length === 0 ? {} : { absentSourcePropertyIds }),\n }\n}\n\nfunction validateLinkAssertion(\n ontology: OntologyRegistry,\n resolved: ResolvedSourceProjection,\n policy: ProjectionValidationPolicy,\n assertion: LinkAssertion\n): LinkAssertion {\n const ownershipKey = linkOwnershipKey(assertion.ref.source.objectTypeId, assertion.ref.linkId)\n if (!policy.ownedLinks.has(ownershipKey)) {\n throw new MaterializationValidationError(\"Projection asserted a link outside its owned scope.\")\n }\n\n const expectedTargetTypeId = projectionLinkTargetType(resolved, assertion)\n if (expectedTargetTypeId !== assertion.ref.target.objectTypeId) {\n throw new MaterializationValidationError(\n `Projection '${resolved.projectionId}' asserted link target type '${assertion.ref.target.objectTypeId}' outside its mapping.`\n )\n }\n\n validateLinkAuthorityProperties(ontology, assertion.ref, assertion.properties)\n if (assertion.properties !== undefined) {\n throw new MaterializationValidationError(\n `Projection '${resolved.projectionId}' does not map link assertion properties.`\n )\n }\n return { ...assertion }\n}\n\nfunction projectionLinkTargetType(\n resolved: ResolvedSourceProjection,\n assertion: LinkAssertion\n): string | undefined {\n if (resolved.definition._tag === \"LinkProjectionDefinition\") {\n return resolved.definition.targetObjectTypeId\n }\n if (resolved.definition._tag === \"ObjectProjectionDefinition\") {\n return resolved.definition.links[assertion.ref.linkId]?.targetObjectTypeId\n }\n return undefined\n}\n",
34
+ "import { MaterializationValidationError } from \"../../materialization/errors\"\nimport type { ProjectionEntityRef, ProjectionSourceEntry } from \"../../materialization/model\"\nimport { linkOwnershipKey } from \"../../materialization/refs\"\nimport type { OntologyRegistry } from \"../../ontology\"\nimport type { ProjectionRegistry } from \"../../projections/registry\"\nimport {\n validateLinkAuthorityProperties,\n validateObjectAuthorityProperties,\n} from \"../effective/validate\"\n\ntype ResolvedSourceProjection = ReturnType<ProjectionRegistry[\"resolveSource\"]>\ntype ProjectionAssertion = ProjectionSourceEntry[\"assertions\"][number]\ntype ObjectAssertion = Extract<ProjectionAssertion, { readonly kind: \"object\" }>\ntype LinkAssertion = Extract<ProjectionAssertion, { readonly kind: \"link\" }>\n\ninterface ProjectionValidationPolicy {\n readonly expectedRootKind: ProjectionSourceEntry[\"root\"][\"kind\"]\n readonly expectedRootDescription: string\n readonly ownedProperties: ReadonlyMap<string, ReadonlySet<string>>\n readonly ownedLinks: ReadonlySet<string>\n}\n\nexport type ProjectionEntryValidator = (entry: ProjectionSourceEntry) => ProjectionSourceEntry\n\nexport function createProjectionEntryValidator(\n ontology: OntologyRegistry,\n resolved: ResolvedSourceProjection\n): ProjectionEntryValidator {\n const policy = createValidationPolicy(resolved)\n return (entry) => validateProjectionEntry(ontology, resolved, policy, entry)\n}\n\nexport function validateProjectionRootRef(\n resolved: ResolvedSourceProjection,\n root: ProjectionEntityRef\n): void {\n const definition = resolved.definition\n const owned =\n definition._tag === \"ObjectProjectionDefinition\"\n ? root.kind === \"object\" && root.ref.objectTypeId === definition.objectTypeId\n : root.kind === \"link\" &&\n root.ref.source.objectTypeId === definition.sourceObjectTypeId &&\n root.ref.target.objectTypeId === definition.targetObjectTypeId &&\n root.ref.linkId === definition.linkId\n if (!owned)\n throw new MaterializationValidationError(\n \"Projection root is outside its owned type or link scope.\"\n )\n}\n\nfunction createValidationPolicy(resolved: ResolvedSourceProjection): ProjectionValidationPolicy {\n const ownedProperties = new Map(\n resolved.ownership.objects.map((object) => [object.objectTypeId, new Set(object.propertyIds)])\n )\n const ownedLinks = new Set(\n resolved.ownership.links.map((link) => linkOwnershipKey(link.sourceObjectTypeId, link.linkId))\n )\n if (resolved.definition._tag === \"ObjectProjectionDefinition\") {\n return {\n expectedRootKind: \"object\",\n expectedRootDescription: \"an object\",\n ownedProperties,\n ownedLinks,\n }\n }\n return {\n expectedRootKind: \"link\",\n expectedRootDescription: \"a link\",\n ownedProperties,\n ownedLinks,\n }\n}\n\nfunction validateProjectionEntry(\n ontology: OntologyRegistry,\n resolved: ResolvedSourceProjection,\n policy: ProjectionValidationPolicy,\n entry: ProjectionSourceEntry\n): ProjectionSourceEntry {\n validateProjectionRoot(resolved, policy, entry)\n return {\n root: entry.root,\n assertions: entry.assertions.map((assertion) =>\n validateProjectionAssertion(ontology, resolved, policy, assertion)\n ),\n }\n}\n\nfunction validateProjectionRoot(\n resolved: ResolvedSourceProjection,\n policy: ProjectionValidationPolicy,\n entry: ProjectionSourceEntry\n): void {\n if (entry.root.kind === policy.expectedRootKind) return\n throw new MaterializationValidationError(\n `Projection '${resolved.projectionId}' requires ${policy.expectedRootDescription} root.`\n )\n}\n\nfunction validateProjectionAssertion(\n ontology: OntologyRegistry,\n resolved: ResolvedSourceProjection,\n policy: ProjectionValidationPolicy,\n assertion: ProjectionAssertion\n): ProjectionAssertion {\n if (assertion.kind === \"object\") {\n return validateObjectAssertion(ontology, resolved, policy, assertion)\n }\n return validateLinkAssertion(ontology, resolved, policy, assertion)\n}\n\nfunction validateObjectAssertion(\n ontology: OntologyRegistry,\n resolved: ResolvedSourceProjection,\n policy: ProjectionValidationPolicy,\n assertion: ObjectAssertion\n): ObjectAssertion {\n if (\n resolved.definition._tag !== \"ObjectProjectionDefinition\" ||\n assertion.ref.objectTypeId !== resolved.definition.objectTypeId\n ) {\n throw new MaterializationValidationError(\n \"Projection asserted an object outside its owned type.\"\n )\n }\n\n const properties = validateObjectAuthorityProperties(\n ontology,\n assertion.ref,\n assertion.properties\n )\n const owned = policy.ownedProperties.get(assertion.ref.objectTypeId) ?? new Set<string>()\n for (const propertyId of Object.keys(properties)) {\n if (owned.has(propertyId)) continue\n throw new MaterializationValidationError(\n `Projection '${resolved.projectionId}' asserted unowned property '${assertion.ref.objectTypeId}.${propertyId}'.`\n )\n }\n const conflictResolution = resolved.definition.conflictResolution ?? { strategy: \"editsWin\" }\n if (conflictResolution.strategy !== \"mostRecent\") {\n return { kind: \"object\", ref: assertion.ref, properties }\n }\n if (assertion.sourceUpdatedAt === undefined) {\n throw new MaterializationValidationError(\n `Projection '${resolved.projectionId}' requires source update timestamp ` +\n `'${conflictResolution.sourceTimestamp}' on every object assertion.`\n )\n }\n const primaryPropertyId = ontology.getPrimaryPropertyId(assertion.ref.objectTypeId)\n const absentSourcePropertyIds = [...owned]\n .filter(\n (propertyId) => propertyId !== primaryPropertyId && !Object.hasOwn(properties, propertyId)\n )\n .sort()\n return {\n kind: \"object\",\n ref: assertion.ref,\n properties,\n sourceUpdatedAt: assertion.sourceUpdatedAt,\n ...(absentSourcePropertyIds.length === 0 ? {} : { absentSourcePropertyIds }),\n }\n}\n\nfunction validateLinkAssertion(\n ontology: OntologyRegistry,\n resolved: ResolvedSourceProjection,\n policy: ProjectionValidationPolicy,\n assertion: LinkAssertion\n): LinkAssertion {\n const ownershipKey = linkOwnershipKey(assertion.ref.source.objectTypeId, assertion.ref.linkId)\n if (!policy.ownedLinks.has(ownershipKey)) {\n throw new MaterializationValidationError(\"Projection asserted a link outside its owned scope.\")\n }\n\n const expectedTargetTypeId = projectionLinkTargetType(resolved, assertion)\n if (expectedTargetTypeId !== assertion.ref.target.objectTypeId) {\n throw new MaterializationValidationError(\n `Projection '${resolved.projectionId}' asserted link target type '${assertion.ref.target.objectTypeId}' outside its mapping.`\n )\n }\n\n validateLinkAuthorityProperties(ontology, assertion.ref, assertion.properties)\n if (assertion.properties !== undefined) {\n throw new MaterializationValidationError(\n `Projection '${resolved.projectionId}' does not map link assertion properties.`\n )\n }\n return { ...assertion }\n}\n\nfunction projectionLinkTargetType(\n resolved: ResolvedSourceProjection,\n assertion: LinkAssertion\n): string | undefined {\n if (resolved.definition._tag === \"LinkProjectionDefinition\") {\n return resolved.definition.targetObjectTypeId\n }\n if (resolved.definition._tag === \"ObjectProjectionDefinition\") {\n return resolved.definition.links[assertion.ref.linkId]?.targetObjectTypeId\n }\n return undefined\n}\n",
35
35
  "import type {\n EffectiveChangeCounts,\n EffectiveLinkChange,\n EffectiveObjectChange,\n OntologyMaterializationOrigin,\n OntologyObjectRef,\n ProjectionSourceRef,\n} from \"../../materialization/model\"\nimport {\n linkRefKey,\n linkRefSortKey,\n linkScopeSortKey,\n objectRefKey,\n objectRefSortKey,\n} from \"../../materialization/refs\"\nimport type {\n MaterializationPlanWorkItem,\n MaterializationSession,\n MaterializationWorkRecord,\n OntologyMaterializationStorage,\n SourceReplacementLinkState,\n SourceReplacementObjectState,\n SourceReplacementStatePage,\n} from \"../../storage/ontology\"\nimport type { MaterializerContext } from \"../context\"\nimport {\n buildLinkMaterializationEventDraft,\n buildObjectMaterializationEventDraft,\n} from \"../effective/build-events\"\nimport { diffEffectiveLink, diffEffectiveObject } from \"../effective/diff\"\nimport { oneStateRequest } from \"../effective/load-state\"\nimport {\n resolveEffectiveLink,\n resolveEffectiveLinkSlotMember,\n resolveEffectiveObject,\n storedObjectEditedAt,\n usableLinkSlotOverride,\n} from \"../effective/resolve\"\nimport { validateEffectiveObject } from \"../effective/validate\"\nimport { stageWorkBounded, validateStagedCardinality } from \"../execution/work-executor\"\nimport {\n appendEffectiveLinkWork,\n appendEffectiveObjectWork,\n classificationWork,\n eventWork,\n planWork,\n} from \"../execution/work-records\"\nimport { throwIfAborted } from \"../shared/abort\"\nimport type { TimedCommitIdentity } from \"../shared/identity\"\n\nexport interface ProjectionReplacementPlanInput {\n readonly source: ProjectionSourceRef\n readonly materializationId: string\n readonly projectionKind: \"object\" | \"link\"\n readonly identity: TimedCommitIdentity\n readonly origin: OntologyMaterializationOrigin\n readonly correlationId: string\n readonly signal?: AbortSignal\n}\n\nexport async function planProjectionReplacement(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n input: ProjectionReplacementPlanInput\n): Promise<EffectiveChangeCounts> {\n const counts = emptyCounts()\n if (input.projectionKind === \"object\") {\n await planObjectReplacement(context, storage, session, input, counts)\n }\n await planLinkReplacement(context, storage, session, input, counts)\n await validateStagedCardinality(context, storage, session, input.signal)\n return counts\n}\n\nasync function planObjectReplacement(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n input: ProjectionReplacementPlanInput,\n counts: MutableCounts\n): Promise<void> {\n for await (const page of storage.streamSourceReplacementState({\n session,\n source: input.source,\n candidateMaterializationId: input.materializationId,\n entityKind: \"object\",\n pageRows: context.batching.statePageRows,\n })) {\n throwIfAborted(input.signal)\n const work = planObjectPage(context, input, page, counts)\n await stageWorkBounded(context, storage, session, work)\n }\n}\n\nfunction planObjectPage(\n context: MaterializerContext,\n input: ProjectionReplacementPlanInput,\n page: SourceReplacementStatePage,\n counts: MutableCounts\n): MaterializationWorkRecord[] {\n const work: MaterializationWorkRecord[] = []\n for (const state of page.objects) {\n work.push(...planReplacementObject(context, input, state, counts))\n }\n return work\n}\n\nfunction planReplacementObject(\n context: MaterializerContext,\n input: ProjectionReplacementPlanInput,\n state: SourceReplacementObjectState,\n counts: MutableCounts\n): MaterializationWorkRecord[] {\n const resolved = resolveReplacementObject(context, state)\n if (resolved) validateEffectiveObject(context.ontology, resolved.ref, resolved.properties)\n\n const change = diffEffectiveObject({\n before: state.effective,\n resolved,\n commitId: input.identity.commitId,\n committedAt: input.identity.committedAt,\n })\n const sortKey = objectRefSortKey(state.ref)\n const work: MaterializationWorkRecord[] = [\n classificationWork(\"object\", objectRefKey(state.ref), sortKey),\n {\n kind: \"object-existence\",\n recordKey: `existence:${sortKey}`,\n ref: state.ref,\n exists: resolved !== null,\n },\n ]\n if (Boolean(state.effective) !== Boolean(resolved)) {\n work.push({ kind: \"incident-object\", recordKey: `incident:${sortKey}`, ref: state.ref })\n }\n\n if (!change) {\n counts.objectsUnchanged += 1\n return work\n }\n\n incrementObjectCount(counts, change.kind)\n appendObjectChangeWork(work, sortKey, context, input, change)\n return work\n}\n\nfunction appendObjectChangeWork(\n work: MaterializationWorkRecord[],\n sortKey: string,\n context: Pick<MaterializerContext, \"projectId\">,\n input: ProjectionReplacementPlanInput,\n change: EffectiveObjectChange\n): void {\n const items: MaterializationPlanWorkItem[] = []\n appendEffectiveObjectWork(items, change)\n for (const item of items) work.push(planWork(item, sortKey))\n work.push(\n eventWork(\n buildObjectMaterializationEventDraft({\n projectId: context.projectId,\n commitId: input.identity.commitId,\n committedAt: input.identity.committedAt,\n origin: input.origin,\n correlationId: input.correlationId,\n change,\n })\n )\n )\n}\n\nasync function planLinkReplacement(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n input: ProjectionReplacementPlanInput,\n counts: MutableCounts\n): Promise<void> {\n for await (const page of storage.streamSourceReplacementState({\n session,\n source: input.source,\n candidateMaterializationId: input.materializationId,\n entityKind: \"link\",\n pageRows: context.batching.statePageRows,\n })) {\n throwIfAborted(input.signal)\n const endpointExistence = await loadEndpointExistence(context, storage, session, page)\n const work = planLinkPage(context, input, page, endpointExistence, counts)\n await stageWorkBounded(context, storage, session, work)\n }\n}\n\nasync function loadEndpointExistence(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n page: SourceReplacementStatePage\n): Promise<ReadonlyMap<string, boolean>> {\n const endpointRefs = collectEndpointRefs(page.links)\n const endpointExistence = new Map<string, boolean>()\n for (const value of await storage.readObjectExistence({\n session,\n refs: [...endpointRefs.values()],\n })) {\n endpointExistence.set(objectRefKey(value.ref), value.exists)\n }\n\n const missingEndpoints = [...endpointRefs.values()].filter(\n (ref) => !endpointExistence.has(objectRefKey(ref))\n )\n if (missingEndpoints.length === 0) return endpointExistence\n\n for await (const endpointPage of storage.streamState({\n session,\n requests: oneStateRequest({\n objects: missingEndpoints,\n links: [],\n linkScopes: [],\n incidentObjects: [],\n points: [],\n }),\n pageRows: context.batching.statePageRows,\n })) {\n for (const endpoint of endpointPage.objects) {\n endpointExistence.set(objectRefKey(endpoint.ref), endpoint.effective !== null)\n }\n }\n return endpointExistence\n}\n\nfunction collectEndpointRefs(\n links: readonly SourceReplacementLinkState[]\n): ReadonlyMap<string, OntologyObjectRef> {\n const refs = new Map<string, OntologyObjectRef>()\n for (const state of links) {\n refs.set(objectRefKey(state.ref.source), state.ref.source)\n refs.set(objectRefKey(state.ref.target), state.ref.target)\n }\n return refs\n}\n\nfunction planLinkPage(\n context: MaterializerContext,\n input: ProjectionReplacementPlanInput,\n page: SourceReplacementStatePage,\n endpointExistence: ReadonlyMap<string, boolean>,\n counts: MutableCounts\n): MaterializationWorkRecord[] {\n const work: MaterializationWorkRecord[] = []\n for (const state of page.links) {\n work.push(...planReplacementLink(context, input, state, endpointExistence, counts))\n }\n return work\n}\n\nfunction planReplacementLink(\n context: MaterializerContext,\n input: ProjectionReplacementPlanInput,\n state: SourceReplacementLinkState,\n endpointExistence: ReadonlyMap<string, boolean>,\n counts: MutableCounts\n): MaterializationWorkRecord[] {\n const resolved = resolveReplacementLink(context, state, endpointExistence)\n const work = cardinalityWork(context, state, resolved !== null)\n if (!state.diffRequired) return work\n\n const change = diffEffectiveLink({\n before: state.effective,\n resolved,\n commitId: input.identity.commitId,\n committedAt: input.identity.committedAt,\n })\n const sortKey = linkRefSortKey(state.ref)\n work.push(classificationWork(\"link\", linkRefKey(state.ref), sortKey))\n if (!change) {\n counts.linksUnchanged += 1\n return work\n }\n\n incrementLinkCount(counts, change.kind)\n appendLinkChangeWork(work, sortKey, context, input, change)\n return work\n}\n\nfunction resolveReplacementLink(\n context: Pick<MaterializerContext, \"ontology\">,\n state: SourceReplacementLinkState,\n endpointExistence: ReadonlyMap<string, boolean>\n) {\n if (!state.diffRequired) return state.effective\n const definition = context.ontology\n .resolveObjectType(state.ref.source.objectTypeId)\n .links.find((candidate) => candidate.id === state.ref.linkId)\n if (definition?.cardinality === \"one\") {\n return resolveEffectiveLinkSlotMember({\n ref: state.ref,\n source: state.candidateSource,\n override: usableLinkSlotOverride(state.slotOverride),\n endpointExists: (ref) => endpointExistence.get(objectRefKey(ref)) ?? false,\n })\n }\n return resolveEffectiveLink({\n ref: state.ref,\n source: state.candidateSource,\n override: state.override?.value ?? null,\n sourceEndpointExists: endpointExistence.get(objectRefKey(state.ref.source)) ?? false,\n targetEndpointExists: endpointExistence.get(objectRefKey(state.ref.target)) ?? false,\n })\n}\n\nfunction cardinalityWork(\n context: Pick<MaterializerContext, \"ontology\">,\n state: SourceReplacementLinkState,\n occupied: boolean\n): MaterializationWorkRecord[] {\n const definition = context.ontology\n .resolveObjectType(state.ref.source.objectTypeId)\n .links.find((candidate) => candidate.id === state.ref.linkId)\n if (definition?.cardinality !== \"one\") return []\n\n const scopeSortKey = linkScopeSortKey(state.ref.source, state.ref.linkId)\n const linkSortKey = linkRefSortKey(state.ref)\n return [\n {\n kind: \"cardinality\",\n recordKey: `cardinality:candidate:${scopeSortKey}:${linkSortKey}`,\n view: \"candidate\",\n scopeSortKey,\n linkSortKey,\n ref: state.ref,\n occupied: state.candidateSource !== null,\n },\n {\n kind: \"cardinality\",\n recordKey: `cardinality:effective:${scopeSortKey}:${linkSortKey}`,\n view: \"effective\",\n scopeSortKey,\n linkSortKey,\n ref: state.ref,\n occupied,\n },\n ]\n}\n\nfunction appendLinkChangeWork(\n work: MaterializationWorkRecord[],\n sortKey: string,\n context: Pick<MaterializerContext, \"projectId\">,\n input: ProjectionReplacementPlanInput,\n change: EffectiveLinkChange\n): void {\n const items: MaterializationPlanWorkItem[] = []\n appendEffectiveLinkWork(items, change)\n for (const item of items) work.push(planWork(item, sortKey))\n work.push(\n eventWork(\n buildLinkMaterializationEventDraft({\n projectId: context.projectId,\n commitId: input.identity.commitId,\n committedAt: input.identity.committedAt,\n origin: input.origin,\n correlationId: input.correlationId,\n change,\n })\n )\n )\n}\n\nfunction resolveReplacementObject(\n context: Pick<MaterializerContext, \"ontology\">,\n state: SourceReplacementObjectState\n) {\n return resolveEffectiveObject({\n ref: state.ref,\n primaryPropertyId: context.ontology.getPrimaryPropertyId(state.ref.objectTypeId),\n source: state.candidateSource,\n override: state.override?.value ?? null,\n editedAt: storedObjectEditedAt(state.override),\n latestTelemetry: state.latestTelemetry,\n })\n}\n\nfunction emptyCounts(): MutableCounts {\n return {\n objectsCreated: 0,\n objectsUpdated: 0,\n objectsDeleted: 0,\n objectsUnchanged: 0,\n linksCreated: 0,\n linksUpdated: 0,\n linksDeleted: 0,\n linksUnchanged: 0,\n }\n}\n\ntype MutableCounts = { -readonly [K in keyof EffectiveChangeCounts]: EffectiveChangeCounts[K] }\n\nfunction incrementObjectCount(counts: MutableCounts, kind: EffectiveObjectChange[\"kind\"]): void {\n if (kind === \"created\") counts.objectsCreated += 1\n else if (kind === \"updated\") counts.objectsUpdated += 1\n else counts.objectsDeleted += 1\n}\n\nfunction incrementLinkCount(counts: MutableCounts, kind: EffectiveLinkChange[\"kind\"]): void {\n if (kind === \"created\") counts.linksCreated += 1\n else if (kind === \"updated\") counts.linksUpdated += 1\n else counts.linksDeleted += 1\n}\n",
36
- "import type {\n PinnedDatasetVersion,\n ProjectionExecution,\n ProjectionSourceEntry,\n ProjectionSourceRef,\n} from \"../../materialization/model\"\nimport { utf8JsonByteLength } from \"../../materialization/refs\"\nimport type { StageSourceAssertion } from \"../../storage/ontology\"\nimport type { MaterializerContext } from \"../context\"\nimport { throwIfAborted } from \"../shared/abort\"\nimport { chunkBySize } from \"../shared/chunking\"\nimport { normalizeProjectionSourceEntry } from \"../shared/normalize\"\nimport type { ProjectionEntryValidator } from \"./entry-validator\"\n\nexport interface StagedProjectionMaterialization {\n readonly rootCount: number\n readonly assertionCount: number\n}\n\n/**\n * Persist and seal one explicit source-materialization candidate.\n *\n * A candidate is deliberately left staging/ready when execution is interrupted. The next claim\n * reclaims it with a fresh execution token; age is never used to infer abandonment.\n */\nexport async function stageProjectionMaterialization(\n context: Pick<\n MaterializerContext,\n \"projectId\" | \"storage\" | \"batching\" | \"projectionRegistry\" | \"clock\"\n >,\n input: {\n readonly source: ProjectionSourceRef\n readonly materializationId: string\n readonly execution: ProjectionExecution\n readonly projectionKind: \"object\" | \"link\"\n readonly datasetVersion: PinnedDatasetVersion\n readonly projectionRevision: string\n readonly ownershipHash: string\n readonly createdAt: string\n readonly entries: AsyncIterable<ProjectionSourceEntry>\n readonly validateEntry: ProjectionEntryValidator\n readonly signal?: AbortSignal\n }\n): Promise<StagedProjectionMaterialization> {\n await context.storage.ontology.sources.beginMaterialization({\n projectId: context.projectId,\n source: input.source,\n materializationId: input.materializationId,\n execution: input.execution,\n projectionKind: input.projectionKind,\n protocol: \"replacement\",\n datasetVersion: input.datasetVersion,\n projectionRevision: input.projectionRevision,\n ownershipHash: input.ownershipHash,\n ontologyRevision: context.projectionRegistry.ontologyRevision,\n createdAt: input.createdAt,\n })\n\n let rootCount = 0\n let assertionCount = 0\n async function* assertions(): AsyncIterable<StageSourceAssertion> {\n for await (const rawEntry of input.entries) {\n throwIfAborted(input.signal)\n const entry = input.validateEntry(normalizeProjectionSourceEntry(rawEntry))\n const stagingOrdinal = rootCount\n for (const assertion of entry.assertions) {\n assertionCount += 1\n yield { root: entry.root, assertion, stagingOrdinal }\n }\n rootCount += 1\n }\n throwIfAborted(input.signal)\n }\n\n for await (const rows of chunkBySize(assertions(), {\n maxRows: context.batching.sourceStageRows,\n maxBytes: context.batching.sourceStageBytes,\n byteLength: utf8JsonByteLength,\n })) {\n await context.storage.ontology.sources.stageRows({\n projectId: context.projectId,\n source: input.source,\n materializationId: input.materializationId,\n execution: input.execution,\n rows,\n })\n }\n\n await context.storage.ontology.sources.markReady({\n projectId: context.projectId,\n source: input.source,\n materializationId: input.materializationId,\n execution: input.execution,\n rootCount,\n assertionCount,\n readyAt: context.clock().toISOString(),\n })\n return { rootCount, assertionCount }\n}\n",
37
- "import { assertPinnedDatasetWatermark } from \"../../materialization/dataset-watermark\"\nimport {\n MaterializationCancellationError,\n MaterializationConflictError,\n MaterializationValidationError,\n} from \"../../materialization/errors\"\nimport type {\n OntologyMaterializationOrigin,\n PinnedDatasetVersion,\n ProjectionCommitResult,\n ProjectionExecution,\n ProjectionMaterializationIdentity,\n ProjectionSourceEntry,\n ProjectionSourceRef,\n ProjectionSourceReplacement,\n} from \"../../materialization/model\"\nimport type { ProjectionRegistry } from \"../../projections/registry\"\nimport type {\n OntologyCommitRecord,\n OntologyCommitWrite,\n OntologyMaterializationStorage,\n OntologyStorage,\n} from \"../../storage/ontology\"\nimport type { MaterializerContext, MaterializerStorage } from \"../context\"\nimport { replayCommitRecord, withSerializationRetry } from \"../execution/commit-lifecycle\"\nimport { lockProjectionRunForMaterialization } from \"../execution/run-correlation\"\nimport {\n assertMaterializerRunExecution,\n assertTrustedPrimitiveMutationExecution,\n ensureMaterializerExecution,\n type MaterializerExecution,\n prepareMaterializerExecution,\n} from \"../execution/scope\"\nimport { drainStagedEvents, drainStagedWork } from \"../execution/work-executor\"\nimport type { MaterializerCommand } from \"../materializer\"\nimport { throwIfAborted } from \"../shared/abort\"\nimport {\n type CommitIdentity,\n createCommitIdentity,\n createProjectionIdempotencyKey,\n type TimedCommitIdentity,\n timestampCommitIdentity,\n} from \"../shared/identity\"\nimport {\n normalizePinnedDatasetVersion,\n normalizeProjectionExecution,\n normalizeProjectionSourceRef,\n} from \"../shared/normalize\"\nimport { createProjectionRunMaterializationIdentity } from \"../shared/projection-run\"\nimport { createProjectionEntryValidator } from \"./entry-validator\"\nimport { planProjectionReplacement } from \"./replacement-plan\"\nimport {\n type StagedProjectionMaterialization,\n stageProjectionMaterialization,\n} from \"./source-materialization\"\n\ntype ResolvedSourceProjection = ReturnType<ProjectionRegistry[\"resolveSource\"]>\n\ninterface PreparedProjectionReplacement {\n readonly source: ProjectionSourceRef\n readonly datasetVersion: PinnedDatasetVersion\n readonly execution: ProjectionExecution\n readonly entries: AsyncIterable<ProjectionSourceEntry>\n readonly signal?: AbortSignal\n readonly resolved: ResolvedSourceProjection\n readonly projectionKind: \"object\" | \"link\"\n readonly runIdentity: ProjectionMaterializationIdentity\n readonly identity: CommitIdentity\n readonly scopeExecution: MaterializerExecution\n}\n\ninterface ProjectionCandidate {\n readonly materializationId: string\n readonly createdAt: string\n readonly expectedSource: {\n readonly source: ProjectionSourceRef\n readonly activeMaterializationId: string | null\n readonly lastCommitId: string | null\n }\n}\n\ninterface ReadyProjectionReplacement extends ProjectionCandidate {\n readonly staged: StagedProjectionMaterialization\n readonly identity: TimedCommitIdentity\n}\n\nexport async function replaceProjection(\n context: MaterializerContext,\n raw: MaterializerCommand<ProjectionSourceReplacement>\n): Promise<ProjectionCommitResult> {\n const command = prepareProjectionReplacement(context, raw)\n const replay = await admitProjectionExecution(context, command)\n if (replay) return replay\n\n const candidate = await prepareProjectionCandidate(context, command)\n try {\n const ready = await stageProjectionCandidate(context, command, candidate)\n return await commitProjectionCandidate(context, command, ready)\n } catch (error) {\n await abandonFailedCandidate(context, command, candidate, error)\n throw error\n }\n}\n\nfunction prepareProjectionReplacement(\n context: Pick<MaterializerContext, \"projectId\" | \"projectionRegistry\">,\n raw: MaterializerCommand<ProjectionSourceReplacement>\n): PreparedProjectionReplacement {\n const source = normalizeProjectionSourceRef(raw.input.source)\n const datasetVersion = normalizePinnedDatasetVersion(raw.input.datasetVersion)\n const execution = normalizeProjectionExecution(raw.input.execution)\n const resolved = context.projectionRegistry.resolveSource(source.projectionId)\n validateProjectionDataset(resolved, datasetVersion)\n\n const projectionKind = sourceProjectionKind(resolved)\n const runIdentity = createProjectionRunMaterializationIdentity({\n resolved,\n datasetVersion,\n ontologyRevision: context.projectionRegistry.ontologyRevision,\n })\n const identity = createCommitIdentity({\n projectId: context.projectId,\n idempotencyKey: createProjectionIdempotencyKey(runIdentity),\n normalizedCallerIntent: { source, datasetVersion },\n })\n const command = {\n source,\n datasetVersion,\n execution,\n entries: raw.input.entries,\n resolved,\n projectionKind,\n runIdentity,\n identity,\n scopeExecution: prepareMaterializerExecution(context.projectId, raw.scope),\n }\n if (raw.input.signal === undefined) return command\n return { ...command, signal: raw.input.signal }\n}\n\nfunction validateProjectionDataset(\n resolved: ResolvedSourceProjection,\n datasetVersion: PinnedDatasetVersion\n): void {\n if (datasetVersion.datasetId === resolved.datasetId) return\n throw new MaterializationValidationError(\n `Projection '${resolved.projectionId}' requires dataset '${resolved.datasetId}'.`\n )\n}\n\nfunction sourceProjectionKind(resolved: ResolvedSourceProjection): \"object\" | \"link\" {\n if (resolved.definition._tag === \"ObjectProjectionDefinition\") return \"object\"\n return \"link\"\n}\n\nasync function assertProjectionExecution(\n storage: MaterializerStorage,\n projectId: string,\n command: PreparedProjectionReplacement,\n options: { readonly capabilityErrorMessage?: string } = {}\n): Promise<void> {\n assertTrustedPrimitiveMutationExecution(command.scopeExecution, {\n kind: \"projection\",\n id: command.source.projectionId,\n runId: command.execution.projectionRunId,\n })\n const locked = await lockProjectionRunForMaterialization(storage, {\n projectId,\n projectionRunId: command.execution.projectionRunId,\n executionToken: command.execution.executionToken,\n identity: command.runIdentity,\n resolved: command.resolved,\n ...options,\n })\n assertMaterializerRunExecution(\n command.scopeExecution,\n locked.run.executionId,\n `Projection run '${locked.run.id}'`\n )\n}\n\nasync function admitProjectionExecution(\n context: MaterializerContext,\n command: PreparedProjectionReplacement\n): Promise<ProjectionCommitResult | null> {\n return withSerializationRetry(context, () =>\n context.storage.transaction(\n async (storage) => {\n await ensureMaterializerExecution(storage.executions, command.scopeExecution)\n await assertProjectionExecution(storage, context.projectId, command, {\n capabilityErrorMessage:\n \"Storage does not provide projection run capabilities required by source replacement.\",\n })\n const commit = await replayCommitRecord(\n context,\n command.identity,\n command.scopeExecution.executionId,\n storage\n )\n return commit ? projectionReplayResult(commit, command) : null\n },\n { isolation: \"serializable\" }\n )\n )\n}\n\nfunction projectionReplayResult(\n commit: OntologyCommitRecord,\n command: PreparedProjectionReplacement\n): ProjectionCommitResult {\n if (\n commit.origin.kind !== \"projection\" ||\n commit.origin.projectionRunId !== command.execution.projectionRunId ||\n commit.result.kind !== \"projection\"\n ) {\n throw new MaterializationConflictError(\n \"run-correlation\",\n `Projection commit '${commit.id}' belongs to a different logical run.`\n )\n }\n return { ...structuredClone(commit.result), created: false }\n}\n\nasync function prepareProjectionCandidate(\n context: MaterializerContext,\n command: PreparedProjectionReplacement\n): Promise<ProjectionCandidate> {\n await context.storage.ontology.sources.abandon({\n kind: \"reclaim\",\n projectId: context.projectId,\n source: command.source,\n execution: command.execution,\n abandonedAt: context.clock().toISOString(),\n })\n const active = await context.storage.ontology.sources.getActive({\n projectId: context.projectId,\n source: command.source,\n })\n validateProjectionWatermark(active, command.datasetVersion)\n return {\n materializationId: context.materializationId(),\n createdAt: context.clock().toISOString(),\n expectedSource: {\n source: command.source,\n activeMaterializationId: active?.materializationId ?? null,\n lastCommitId: active?.lastCommitId ?? null,\n },\n }\n}\n\nasync function stageProjectionCandidate(\n context: MaterializerContext,\n command: PreparedProjectionReplacement,\n candidate: ProjectionCandidate\n): Promise<ReadyProjectionReplacement> {\n const input = {\n source: command.source,\n materializationId: candidate.materializationId,\n execution: command.execution,\n projectionKind: command.projectionKind,\n datasetVersion: command.datasetVersion,\n projectionRevision: command.resolved.projectionRevision,\n ownershipHash: command.resolved.ownershipHash,\n createdAt: candidate.createdAt,\n entries: command.entries,\n validateEntry: createProjectionEntryValidator(context.ontology, command.resolved),\n }\n const staged = await stageCandidateEntries(context, input, command.signal)\n return {\n ...candidate,\n staged,\n // Commit time starts only after the source candidate is sealed ready.\n identity: timestampCommitIdentity(command.identity, context.clock()),\n }\n}\n\nasync function stageCandidateEntries(\n context: MaterializerContext,\n input: Parameters<typeof stageProjectionMaterialization>[1],\n signal: AbortSignal | undefined\n): Promise<StagedProjectionMaterialization> {\n if (signal === undefined) return stageProjectionMaterialization(context, input)\n return stageProjectionMaterialization(context, { ...input, signal })\n}\n\nasync function commitProjectionCandidate(\n context: MaterializerContext,\n command: PreparedProjectionReplacement,\n ready: ReadyProjectionReplacement\n): Promise<ProjectionCommitResult> {\n return withSerializationRetry(context, () =>\n context.storage.transaction(\n (storage) => executeProjectionTransaction(context, storage, command, ready),\n { isolation: \"serializable\" }\n )\n )\n}\n\nasync function executeProjectionTransaction(\n context: MaterializerContext,\n storage: MaterializerStorage,\n command: PreparedProjectionReplacement,\n ready: ReadyProjectionReplacement\n): Promise<ProjectionCommitResult> {\n await ensureMaterializerExecution(storage.executions, command.scopeExecution)\n await assertProjectionExecution(storage, context.projectId, command)\n const replay = await replayCommitRecord(\n context,\n command.identity,\n command.scopeExecution.executionId,\n storage\n )\n if (replay) return projectionReplayResult(replay, command)\n\n const origin = projectionOrigin(command)\n throwIfAborted(command.signal)\n const session = await storage.ontology.materializations.begin({\n commit: projectionCommit(context.projectId, command, ready.identity, origin),\n expected: {\n sources: [ready.expectedSource],\n objects: [],\n links: [],\n linkScopes: [],\n points: [],\n },\n })\n const counts = await planReadyProjection(\n context,\n storage.ontology.materializations,\n session,\n command,\n ready,\n origin\n )\n await drainStagedWork(context, storage.ontology.materializations, session, command.signal)\n const eventCount = await drainStagedEvents(\n context,\n storage.ontology.materializations,\n session,\n ready.identity,\n command.signal\n )\n const result: ProjectionCommitResult = {\n kind: \"projection\",\n commitId: ready.identity.commitId,\n created: true,\n eventCount,\n committedAt: ready.identity.committedAt,\n counts,\n }\n throwIfAborted(command.signal)\n return finalizeProjectionMaterialization(storage, session, command, ready, result)\n}\n\nasync function finalizeProjectionMaterialization(\n storage: MaterializerStorage,\n session: Parameters<OntologyMaterializationStorage[\"finalize\"]>[0][\"session\"],\n command: PreparedProjectionReplacement,\n ready: ReadyProjectionReplacement,\n result: ProjectionCommitResult\n): Promise<ProjectionCommitResult> {\n const applied = await storage.ontology.materializations.finalize({\n session,\n finalization: {\n sourceActivations: [projectionActivation(command, ready)],\n result,\n },\n })\n return applied.commit.result as ProjectionCommitResult\n}\n\nfunction projectionOrigin(command: PreparedProjectionReplacement): OntologyMaterializationOrigin {\n return {\n kind: \"projection\",\n projectionId: command.resolved.projectionId,\n projectionRunId: command.execution.projectionRunId,\n datasetId: command.datasetVersion.datasetId,\n datasetVersionId: command.datasetVersion.versionId,\n }\n}\n\nfunction projectionCommit(\n projectId: string,\n command: PreparedProjectionReplacement,\n identity: TimedCommitIdentity,\n origin: OntologyMaterializationOrigin\n): OntologyCommitWrite {\n return {\n projectId,\n id: identity.commitId,\n idempotencyKey: identity.idempotencyKey,\n requestHash: identity.requestHash,\n executionId: command.scopeExecution.executionId,\n origin,\n ontologyRevision: command.runIdentity.ontologyRevision,\n projectionRevision: command.runIdentity.projectionRevision,\n ownershipHash: command.runIdentity.ownershipHash,\n intent: { kind: \"projection\", source: command.source, datasetVersion: command.datasetVersion },\n committedAt: identity.committedAt,\n }\n}\n\nasync function planReadyProjection(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: Parameters<OntologyMaterializationStorage[\"finalize\"]>[0][\"session\"],\n command: PreparedProjectionReplacement,\n ready: ReadyProjectionReplacement,\n origin: OntologyMaterializationOrigin\n) {\n const input = {\n source: command.source,\n materializationId: ready.materializationId,\n projectionKind: command.projectionKind,\n identity: ready.identity,\n origin,\n correlationId: command.scopeExecution.correlationId,\n }\n if (command.signal === undefined) {\n return planProjectionReplacement(context, storage, session, input)\n }\n return planProjectionReplacement(context, storage, session, {\n ...input,\n signal: command.signal,\n })\n}\n\nfunction projectionActivation(\n command: PreparedProjectionReplacement,\n ready: ReadyProjectionReplacement\n) {\n return {\n source: command.source,\n materializationId: ready.materializationId,\n execution: command.execution,\n projectionKind: command.projectionKind,\n protocol: \"replacement\" as const,\n datasetVersion: command.datasetVersion,\n projectionRevision: command.runIdentity.projectionRevision,\n ownershipHash: command.runIdentity.ownershipHash,\n ontologyRevision: command.runIdentity.ontologyRevision,\n expected: ready.expectedSource,\n lastCommitId: ready.identity.commitId,\n updatedAt: ready.identity.committedAt,\n }\n}\n\nasync function abandonFailedCandidate(\n context: MaterializerContext,\n command: PreparedProjectionReplacement,\n candidate: ProjectionCandidate,\n error: unknown\n): Promise<void> {\n if (!shouldAbandonCandidate(error)) return\n await context.storage.ontology.sources.abandon({\n kind: \"candidate\",\n projectId: context.projectId,\n source: command.source,\n materializationId: candidate.materializationId,\n execution: command.execution,\n abandonedAt: context.clock().toISOString(),\n })\n}\n\nfunction shouldAbandonCandidate(error: unknown): boolean {\n if (error instanceof MaterializationValidationError) return true\n if (error instanceof MaterializationCancellationError) return true\n return (\n error instanceof MaterializationConflictError &&\n (error.kind === \"run-correlation\" || error.kind === \"idempotency\")\n )\n}\n\nfunction validateProjectionWatermark(\n active: Awaited<ReturnType<OntologyStorage[\"sources\"][\"getActive\"]>>,\n next: PinnedDatasetVersion\n): void {\n if (!active) return\n assertPinnedDatasetWatermark(active.datasetVersion, next, \"Projection replacement\")\n}\n",
36
+ "import { MaterializationValidationError } from \"../../materialization/errors\"\nimport type {\n PinnedDatasetVersion,\n ProjectionExecution,\n ProjectionSourceBase,\n ProjectionSourceDeletion,\n ProjectionSourceEntry,\n ProjectionSourceRef,\n} from \"../../materialization/model\"\nimport { utf8JsonByteLength } from \"../../materialization/refs\"\nimport type { StageSourceAssertion, StageSourceRoot } from \"../../storage/ontology\"\nimport type { MaterializerContext } from \"../context\"\nimport { throwIfAborted } from \"../shared/abort\"\nimport { chunkBySize } from \"../shared/chunking\"\nimport { normalizeProjectionEntity, normalizeProjectionSourceEntry } from \"../shared/normalize\"\nimport { type ProjectionEntryValidator, validateProjectionRootRef } from \"./entry-validator\"\n\nexport interface StagedProjectionMaterialization {\n readonly rootCount: number\n readonly assertionCount: number\n}\n\n/**\n * Persist and seal one explicit source-materialization candidate.\n *\n * A candidate is deliberately left staging/ready when execution is interrupted. The next claim\n * reclaims it with a fresh execution token; age is never used to infer abandonment.\n */\nexport async function stageProjectionMaterialization(\n context: Pick<\n MaterializerContext,\n \"projectId\" | \"storage\" | \"batching\" | \"projectionRegistry\" | \"clock\"\n >,\n input: {\n readonly source: ProjectionSourceRef\n readonly materializationId: string\n readonly execution: ProjectionExecution\n readonly projectionKind: \"object\" | \"link\"\n readonly datasetVersion: PinnedDatasetVersion\n readonly projectionRevision: string\n readonly ownershipHash: string\n readonly createdAt: string\n readonly entries: AsyncIterable<ProjectionSourceEntry | ProjectionSourceDeletion>\n readonly base?: ProjectionSourceBase\n readonly validateEntry: ProjectionEntryValidator\n readonly signal?: AbortSignal\n }\n): Promise<StagedProjectionMaterialization> {\n await context.storage.ontology.sources.beginMaterialization({\n projectId: context.projectId,\n source: input.source,\n materializationId: input.materializationId,\n execution: input.execution,\n projectionKind: input.projectionKind,\n protocol: \"replacement\",\n datasetVersion: input.datasetVersion,\n projectionRevision: input.projectionRevision,\n ownershipHash: input.ownershipHash,\n ontologyRevision: context.projectionRegistry.ontologyRevision,\n createdAt: input.createdAt,\n ...(input.base ? { base: input.base } : {}),\n })\n\n let rootCount = 0\n let assertionCount = 0\n async function* assertions(): AsyncIterable<StageSourceAssertion | StageSourceRoot> {\n for await (const rawEntry of input.entries) {\n throwIfAborted(input.signal)\n if (\"deleted\" in rawEntry) {\n if (!input.base || rawEntry.deleted !== true) {\n throw new MaterializationValidationError(\n \"Explicit root deletions require a pinned source base.\"\n )\n }\n const root = normalizeProjectionEntity(rawEntry.root)\n validateProjectionRootRef(\n context.projectionRegistry.resolveSource(input.source.projectionId),\n root\n )\n yield { root, stagingOrdinal: rootCount++ }\n continue\n }\n const entry = input.validateEntry(normalizeProjectionSourceEntry(rawEntry))\n const stagingOrdinal = rootCount\n for (const assertion of entry.assertions) {\n assertionCount += 1\n yield { root: entry.root, assertion, stagingOrdinal }\n }\n rootCount += 1\n }\n throwIfAborted(input.signal)\n }\n\n for await (const rows of chunkBySize(assertions(), {\n maxRows: context.batching.sourceStageRows,\n maxBytes: context.batching.sourceStageBytes,\n byteLength: utf8JsonByteLength,\n })) {\n await context.storage.ontology.sources.stageRows({\n projectId: context.projectId,\n source: input.source,\n materializationId: input.materializationId,\n execution: input.execution,\n rows: rows.filter((row): row is StageSourceAssertion => \"assertion\" in row),\n deletions: rows.filter((row) => !(\"assertion\" in row)),\n })\n }\n\n await context.storage.ontology.sources.markReady({\n projectId: context.projectId,\n source: input.source,\n materializationId: input.materializationId,\n execution: input.execution,\n rootCount,\n assertionCount,\n readyAt: context.clock().toISOString(),\n })\n return { rootCount, assertionCount }\n}\n",
37
+ "import { assertPinnedDatasetWatermark } from \"../../materialization/dataset-watermark\"\nimport {\n MaterializationCancellationError,\n MaterializationConflictError,\n MaterializationValidationError,\n} from \"../../materialization/errors\"\nimport type {\n OntologyMaterializationOrigin,\n PinnedDatasetVersion,\n ProjectionCommitResult,\n ProjectionExecution,\n ProjectionMaterializationIdentity,\n ProjectionSourceBase,\n ProjectionSourceDeletion,\n ProjectionSourceEntry,\n ProjectionSourceRef,\n ProjectionSourceReplacement,\n} from \"../../materialization/model\"\nimport type { ProjectionRegistry } from \"../../projections/registry\"\nimport type {\n OntologyCommitRecord,\n OntologyCommitWrite,\n OntologyMaterializationStorage,\n OntologySourceRecord,\n OntologyStorage,\n} from \"../../storage/ontology\"\nimport type { MaterializerContext, MaterializerStorage } from \"../context\"\nimport { replayCommitRecord, withSerializationRetry } from \"../execution/commit-lifecycle\"\nimport { lockProjectionRunForMaterialization } from \"../execution/run-correlation\"\nimport {\n assertMaterializerRunExecution,\n assertTrustedPrimitiveMutationExecution,\n ensureMaterializerExecution,\n type MaterializerExecution,\n prepareMaterializerExecution,\n} from \"../execution/scope\"\nimport { drainStagedEvents, drainStagedWork } from \"../execution/work-executor\"\nimport type { MaterializerCommand } from \"../materializer\"\nimport { throwIfAborted } from \"../shared/abort\"\nimport {\n type CommitIdentity,\n createCommitIdentity,\n createProjectionIdempotencyKey,\n type TimedCommitIdentity,\n timestampCommitIdentity,\n} from \"../shared/identity\"\nimport {\n normalizePinnedDatasetVersion,\n normalizeProjectionExecution,\n normalizeProjectionSourceRef,\n} from \"../shared/normalize\"\nimport { createProjectionRunMaterializationIdentity } from \"../shared/projection-run\"\nimport { createProjectionEntryValidator } from \"./entry-validator\"\nimport { planProjectionReplacement } from \"./replacement-plan\"\nimport {\n type StagedProjectionMaterialization,\n stageProjectionMaterialization,\n} from \"./source-materialization\"\n\ntype ResolvedSourceProjection = ReturnType<ProjectionRegistry[\"resolveSource\"]>\n\ninterface PreparedProjectionReplacement {\n readonly source: ProjectionSourceRef\n readonly datasetVersion: PinnedDatasetVersion\n readonly execution: ProjectionExecution\n readonly entries: AsyncIterable<ProjectionSourceEntry | ProjectionSourceDeletion>\n readonly base?: ProjectionSourceBase\n readonly signal?: AbortSignal\n readonly resolved: ResolvedSourceProjection\n readonly projectionKind: \"object\" | \"link\"\n readonly runIdentity: ProjectionMaterializationIdentity\n readonly identity: CommitIdentity\n readonly scopeExecution: MaterializerExecution\n}\n\ninterface ProjectionCandidate {\n readonly materializationId: string\n readonly createdAt: string\n readonly expectedSource: {\n readonly source: ProjectionSourceRef\n readonly activeMaterializationId: string | null\n readonly lastCommitId: string | null\n }\n}\n\ninterface ReadyProjectionReplacement extends ProjectionCandidate {\n readonly staged: StagedProjectionMaterialization\n readonly identity: TimedCommitIdentity\n}\n\nexport async function replaceProjection(\n context: MaterializerContext,\n raw: MaterializerCommand<ProjectionSourceReplacement>\n): Promise<ProjectionCommitResult> {\n const command = prepareProjectionReplacement(context, raw)\n const replay = await admitProjectionExecution(context, command)\n if (replay) return replay\n\n const candidate = await prepareProjectionCandidate(context, command)\n try {\n const ready = await stageProjectionCandidate(context, command, candidate)\n return await commitProjectionCandidate(context, command, ready)\n } catch (error) {\n await abandonFailedCandidate(context, command, candidate, error)\n throw error\n }\n}\n\nfunction prepareProjectionReplacement(\n context: Pick<MaterializerContext, \"projectId\" | \"projectionRegistry\">,\n raw: MaterializerCommand<ProjectionSourceReplacement>\n): PreparedProjectionReplacement {\n const source = normalizeProjectionSourceRef(raw.input.source)\n const datasetVersion = normalizePinnedDatasetVersion(raw.input.datasetVersion)\n const execution = normalizeProjectionExecution(raw.input.execution)\n const resolved = context.projectionRegistry.resolveSource(source.projectionId)\n validateProjectionDataset(resolved, datasetVersion)\n\n const projectionKind = sourceProjectionKind(resolved)\n const runIdentity = createProjectionRunMaterializationIdentity({\n resolved,\n datasetVersion,\n ontologyRevision: context.projectionRegistry.ontologyRevision,\n })\n const identity = createCommitIdentity({\n projectId: context.projectId,\n idempotencyKey: createProjectionIdempotencyKey(runIdentity),\n normalizedCallerIntent: { source, datasetVersion },\n })\n const command = {\n source,\n datasetVersion,\n execution,\n entries: raw.input.entries,\n ...(raw.input.base ? { base: Object.freeze({ ...raw.input.base }) } : {}),\n resolved,\n projectionKind,\n runIdentity,\n identity,\n scopeExecution: prepareMaterializerExecution(context.projectId, raw.scope),\n }\n if (raw.input.signal === undefined) return command\n return { ...command, signal: raw.input.signal }\n}\n\nfunction validateProjectionDataset(\n resolved: ResolvedSourceProjection,\n datasetVersion: PinnedDatasetVersion\n): void {\n if (datasetVersion.datasetId === resolved.datasetId) return\n throw new MaterializationValidationError(\n `Projection '${resolved.projectionId}' requires dataset '${resolved.datasetId}'.`\n )\n}\n\nfunction sourceProjectionKind(resolved: ResolvedSourceProjection): \"object\" | \"link\" {\n if (resolved.definition._tag === \"ObjectProjectionDefinition\") return \"object\"\n return \"link\"\n}\n\nasync function assertProjectionExecution(\n storage: MaterializerStorage,\n projectId: string,\n command: PreparedProjectionReplacement,\n options: { readonly capabilityErrorMessage?: string } = {}\n): Promise<void> {\n assertTrustedPrimitiveMutationExecution(command.scopeExecution, {\n kind: \"projection\",\n id: command.source.projectionId,\n runId: command.execution.projectionRunId,\n })\n const locked = await lockProjectionRunForMaterialization(storage, {\n projectId,\n projectionRunId: command.execution.projectionRunId,\n executionToken: command.execution.executionToken,\n identity: command.runIdentity,\n resolved: command.resolved,\n ...options,\n })\n assertMaterializerRunExecution(\n command.scopeExecution,\n locked.run.executionId,\n `Projection run '${locked.run.id}'`\n )\n}\n\nasync function admitProjectionExecution(\n context: MaterializerContext,\n command: PreparedProjectionReplacement\n): Promise<ProjectionCommitResult | null> {\n return withSerializationRetry(context, () =>\n context.storage.transaction(\n async (storage) => {\n await ensureMaterializerExecution(storage.executions, command.scopeExecution)\n await assertProjectionExecution(storage, context.projectId, command, {\n capabilityErrorMessage:\n \"Storage does not provide projection run capabilities required by source replacement.\",\n })\n const commit = await replayCommitRecord(\n context,\n command.identity,\n command.scopeExecution.executionId,\n storage\n )\n return commit ? projectionReplayResult(commit, command) : null\n },\n { isolation: \"serializable\" }\n )\n )\n}\n\nfunction projectionReplayResult(\n commit: OntologyCommitRecord,\n command: PreparedProjectionReplacement\n): ProjectionCommitResult {\n if (\n commit.origin.kind !== \"projection\" ||\n commit.origin.projectionRunId !== command.execution.projectionRunId ||\n commit.result.kind !== \"projection\"\n ) {\n throw new MaterializationConflictError(\n \"run-correlation\",\n `Projection commit '${commit.id}' belongs to a different logical run.`\n )\n }\n return { ...structuredClone(commit.result), created: false }\n}\n\nasync function prepareProjectionCandidate(\n context: MaterializerContext,\n command: PreparedProjectionReplacement\n): Promise<ProjectionCandidate> {\n await context.storage.ontology.sources.abandon({\n kind: \"reclaim\",\n projectId: context.projectId,\n source: command.source,\n execution: command.execution,\n abandonedAt: context.clock().toISOString(),\n })\n const active = await context.storage.ontology.sources.getActive({\n projectId: context.projectId,\n source: command.source,\n })\n validateProjectionWatermark(active, command.datasetVersion)\n assertDeltaBase(active, command)\n return {\n materializationId: context.materializationId(),\n createdAt: context.clock().toISOString(),\n expectedSource: {\n source: command.source,\n activeMaterializationId: active?.materializationId ?? null,\n lastCommitId: active?.lastCommitId ?? null,\n },\n }\n}\n\nasync function stageProjectionCandidate(\n context: MaterializerContext,\n command: PreparedProjectionReplacement,\n candidate: ProjectionCandidate\n): Promise<ReadyProjectionReplacement> {\n const input = {\n source: command.source,\n materializationId: candidate.materializationId,\n execution: command.execution,\n projectionKind: command.projectionKind,\n datasetVersion: command.datasetVersion,\n projectionRevision: command.resolved.projectionRevision,\n ownershipHash: command.resolved.ownershipHash,\n createdAt: candidate.createdAt,\n entries: command.entries,\n ...(command.base ? { base: command.base } : {}),\n validateEntry: createProjectionEntryValidator(context.ontology, command.resolved),\n }\n const staged = await stageCandidateEntries(context, input, command.signal)\n return {\n ...candidate,\n staged,\n // Commit time starts only after the source candidate is sealed ready.\n identity: timestampCommitIdentity(command.identity, context.clock()),\n }\n}\n\nasync function stageCandidateEntries(\n context: MaterializerContext,\n input: Parameters<typeof stageProjectionMaterialization>[1],\n signal: AbortSignal | undefined\n): Promise<StagedProjectionMaterialization> {\n if (signal === undefined) return stageProjectionMaterialization(context, input)\n return stageProjectionMaterialization(context, { ...input, signal })\n}\n\nasync function commitProjectionCandidate(\n context: MaterializerContext,\n command: PreparedProjectionReplacement,\n ready: ReadyProjectionReplacement\n): Promise<ProjectionCommitResult> {\n return withSerializationRetry(context, () =>\n context.storage.transaction(\n (storage) => executeProjectionTransaction(context, storage, command, ready),\n { isolation: \"serializable\" }\n )\n )\n}\n\nasync function executeProjectionTransaction(\n context: MaterializerContext,\n storage: MaterializerStorage,\n command: PreparedProjectionReplacement,\n ready: ReadyProjectionReplacement\n): Promise<ProjectionCommitResult> {\n await ensureMaterializerExecution(storage.executions, command.scopeExecution)\n await assertProjectionExecution(storage, context.projectId, command)\n const replay = await replayCommitRecord(\n context,\n command.identity,\n command.scopeExecution.executionId,\n storage\n )\n if (replay) return projectionReplayResult(replay, command)\n\n if (command.base) {\n const active = await storage.ontology.sources.getActive({\n projectId: context.projectId,\n source: command.source,\n })\n validateProjectionWatermark(active, command.datasetVersion)\n assertDeltaBase(active, command)\n }\n const origin = projectionOrigin(command)\n throwIfAborted(command.signal)\n const session = await storage.ontology.materializations.begin({\n commit: projectionCommit(context.projectId, command, ready.identity, origin),\n expected: {\n sources: [ready.expectedSource],\n objects: [],\n links: [],\n linkScopes: [],\n points: [],\n },\n })\n const counts = await planReadyProjection(\n context,\n storage.ontology.materializations,\n session,\n command,\n ready,\n origin\n )\n await drainStagedWork(context, storage.ontology.materializations, session, command.signal)\n const eventCount = await drainStagedEvents(\n context,\n storage.ontology.materializations,\n session,\n ready.identity,\n command.signal\n )\n const result: ProjectionCommitResult = {\n kind: \"projection\",\n commitId: ready.identity.commitId,\n created: true,\n eventCount,\n committedAt: ready.identity.committedAt,\n counts,\n }\n throwIfAborted(command.signal)\n return finalizeProjectionMaterialization(storage, session, command, ready, result)\n}\n\nasync function finalizeProjectionMaterialization(\n storage: MaterializerStorage,\n session: Parameters<OntologyMaterializationStorage[\"finalize\"]>[0][\"session\"],\n command: PreparedProjectionReplacement,\n ready: ReadyProjectionReplacement,\n result: ProjectionCommitResult\n): Promise<ProjectionCommitResult> {\n const applied = await storage.ontology.materializations.finalize({\n session,\n finalization: {\n sourceActivations: [projectionActivation(command, ready)],\n result,\n },\n })\n return applied.commit.result as ProjectionCommitResult\n}\n\nfunction projectionOrigin(command: PreparedProjectionReplacement): OntologyMaterializationOrigin {\n return {\n kind: \"projection\",\n projectionId: command.resolved.projectionId,\n projectionRunId: command.execution.projectionRunId,\n datasetId: command.datasetVersion.datasetId,\n datasetVersionId: command.datasetVersion.versionId,\n }\n}\n\nfunction projectionCommit(\n projectId: string,\n command: PreparedProjectionReplacement,\n identity: TimedCommitIdentity,\n origin: OntologyMaterializationOrigin\n): OntologyCommitWrite {\n return {\n projectId,\n id: identity.commitId,\n idempotencyKey: identity.idempotencyKey,\n requestHash: identity.requestHash,\n executionId: command.scopeExecution.executionId,\n origin,\n ontologyRevision: command.runIdentity.ontologyRevision,\n projectionRevision: command.runIdentity.projectionRevision,\n ownershipHash: command.runIdentity.ownershipHash,\n intent: { kind: \"projection\", source: command.source, datasetVersion: command.datasetVersion },\n committedAt: identity.committedAt,\n }\n}\n\nasync function planReadyProjection(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: Parameters<OntologyMaterializationStorage[\"finalize\"]>[0][\"session\"],\n command: PreparedProjectionReplacement,\n ready: ReadyProjectionReplacement,\n origin: OntologyMaterializationOrigin\n) {\n const input = {\n source: command.source,\n materializationId: ready.materializationId,\n projectionKind: command.projectionKind,\n identity: ready.identity,\n origin,\n correlationId: command.scopeExecution.correlationId,\n }\n if (command.signal === undefined) {\n return planProjectionReplacement(context, storage, session, input)\n }\n return planProjectionReplacement(context, storage, session, {\n ...input,\n signal: command.signal,\n })\n}\n\nfunction projectionActivation(\n command: PreparedProjectionReplacement,\n ready: ReadyProjectionReplacement\n) {\n return {\n source: command.source,\n materializationId: ready.materializationId,\n execution: command.execution,\n projectionKind: command.projectionKind,\n protocol: \"replacement\" as const,\n datasetVersion: command.datasetVersion,\n projectionRevision: command.runIdentity.projectionRevision,\n ownershipHash: command.runIdentity.ownershipHash,\n ontologyRevision: command.runIdentity.ontologyRevision,\n expected: ready.expectedSource,\n lastCommitId: ready.identity.commitId,\n updatedAt: ready.identity.committedAt,\n }\n}\n\nasync function abandonFailedCandidate(\n context: MaterializerContext,\n command: PreparedProjectionReplacement,\n candidate: ProjectionCandidate,\n error: unknown\n): Promise<void> {\n if (!shouldAbandonCandidate(error)) return\n await context.storage.ontology.sources.abandon({\n kind: \"candidate\",\n projectId: context.projectId,\n source: command.source,\n materializationId: candidate.materializationId,\n execution: command.execution,\n abandonedAt: context.clock().toISOString(),\n })\n}\n\nfunction shouldAbandonCandidate(error: unknown): boolean {\n if (error instanceof MaterializationValidationError) return true\n if (error instanceof MaterializationCancellationError) return true\n return (\n error instanceof MaterializationConflictError &&\n (error.kind === \"run-correlation\" || error.kind === \"idempotency\")\n )\n}\n\nfunction validateProjectionWatermark(\n active: Awaited<ReturnType<OntologyStorage[\"sources\"][\"getActive\"]>>,\n next: PinnedDatasetVersion\n): void {\n if (!active) return\n assertPinnedDatasetWatermark(active.datasetVersion, next, \"Projection replacement\")\n}\n\nfunction assertDeltaBase(\n active: OntologySourceRecord | null,\n command: PreparedProjectionReplacement\n): void {\n if (\n command.base &&\n (!active ||\n active.materializationId !== command.base.materializationId ||\n active.lastCommitId !== command.base.lastCommitId ||\n active.projectionRevision !== command.runIdentity.projectionRevision ||\n active.ontologyRevision !== command.runIdentity.ontologyRevision ||\n active.ownershipHash !== command.runIdentity.ownershipHash)\n ) {\n throw new MaterializationConflictError(\n \"source-materialization\",\n \"Projection delta no longer matches the active source or its definition.\"\n )\n }\n}\n",
38
38
  "import type { EventActor } from \"../../events/envelope\"\nimport { stableJsonStringify } from \"../../json\"\nimport { MaterializationObjectNotFoundError } from \"../../materialization/errors\"\nimport type {\n OntologyMaterializationOrigin,\n OntologyObjectRef,\n TelemetryAppend,\n TelemetryPointWrite,\n} from \"../../materialization/model\"\nimport {\n objectRefKey,\n objectRefSortKey,\n telemetryPointKey,\n telemetryPointSortKey,\n} from \"../../materialization/refs\"\nimport type {\n MaterializationObjectState,\n MaterializationPlanWorkItem,\n MaterializationSession,\n MaterializationWorkRecord,\n OntologyMaterializationStorage,\n StoredTelemetryPoint,\n} from \"../../storage/ontology\"\nimport type { MaterializerContext } from \"../context\"\nimport { resolveObject, type WorkingObject, workingObjectFromState } from \"../edits/working-state\"\nimport {\n buildObjectMaterializationEventDraft,\n buildTelemetryMaterializationEventDraft,\n} from \"../effective/build-events\"\nimport { diffEffectiveObject } from \"../effective/diff\"\nimport { loadState, oneStateRequest } from \"../effective/load-state\"\nimport { validateEffectiveObject } from \"../effective/validate\"\nimport { stageWorkBounded } from \"../execution/work-executor\"\nimport {\n appendEffectiveObjectWork,\n classificationWork,\n eventWork,\n planWork,\n} from \"../execution/work-records\"\nimport type { TimedCommitIdentity } from \"../shared/identity\"\n\nexport interface TelemetryPlanCounts {\n readonly pointsCreated: number\n readonly pointsUpdated: number\n readonly pointsUnchanged: number\n readonly latestObjectsChanged: number\n}\n\ninterface MutableTelemetryPlanCounts {\n pointsCreated: number\n pointsUpdated: number\n pointsUnchanged: number\n latestObjectsChanged: number\n}\n\ninterface TelemetryObjectGroup {\n readonly objectRef: OntologyObjectRef\n readonly start: number\n readonly end: number\n}\n\ninterface TelemetryPlanContext {\n readonly input: TelemetryAppend\n readonly identity: TimedCommitIdentity\n readonly origin: OntologyMaterializationOrigin\n readonly event: TelemetryEventContext\n}\n\ninterface TelemetryEventContext {\n readonly correlationId: string\n readonly actor?: EventActor\n}\n\nexport async function planTelemetryAppend(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n input: TelemetryAppend,\n identity: TimedCommitIdentity,\n origin: OntologyMaterializationOrigin,\n event: TelemetryEventContext\n): Promise<TelemetryPlanCounts> {\n const counts = emptyTelemetryCounts()\n const planContext = { input, identity, origin, event }\n const objects = await loadTelemetryObjects(context, storage, session, input.points)\n const existingPoints = await loadExistingPoints(context, storage, session, input.points)\n for (const group of telemetryObjectGroups(input.points)) {\n const storedObject = objects.get(objectRefKey(group.objectRef))\n if (!storedObject?.effective) {\n throw new MaterializationObjectNotFoundError(\n group.objectRef.objectTypeId,\n group.objectRef.primaryId\n )\n }\n await planTelemetryObject(\n context,\n storage,\n session,\n planContext,\n group,\n workingObjectFromState(storedObject),\n existingPoints,\n counts\n )\n }\n return counts\n}\n\nfunction* telemetryObjectGroups(\n points: readonly TelemetryPointWrite[]\n): Iterable<TelemetryObjectGroup> {\n let start = 0\n while (start < points.length) {\n const objectRef = points[start].series.object\n const objectKey = objectRefKey(objectRef)\n let end = start + 1\n while (end < points.length && objectRefKey(points[end].series.object) === objectKey) {\n end += 1\n }\n yield { objectRef, start, end }\n start = end\n }\n}\n\nasync function planTelemetryObject(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n planContext: TelemetryPlanContext,\n group: TelemetryObjectGroup,\n working: WorkingObject,\n existingPoints: ReadonlyMap<string, StoredTelemetryPoint>,\n counts: MutableTelemetryPlanCounts\n): Promise<void> {\n const latest = new Map(working.latestTelemetry.map((point) => [point.series.propertyId, point]))\n\n for (let start = group.start; start < group.end; start += context.batching.statePageRows) {\n const end = Math.min(group.end, start + context.batching.statePageRows)\n const points = planContext.input.points.slice(start, end)\n const work = planTelemetryChunk(context, planContext, points, existingPoints, latest, counts)\n await stageWorkBounded(context, storage, session, work)\n }\n\n working.latestTelemetry = [...latest.values()]\n await stageTelemetryObjectPlan(context, storage, session, planContext, working, counts)\n}\n\nasync function loadTelemetryObjects(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n points: readonly TelemetryPointWrite[]\n): Promise<ReadonlyMap<string, MaterializationObjectState>> {\n const refs = new Map<string, OntologyObjectRef>()\n for (const point of points) refs.set(objectRefKey(point.series.object), point.series.object)\n const objectState = await loadState(context, storage, session, {\n objects: [...refs.values()],\n links: [],\n linkScopes: [],\n incidentObjects: [],\n points: [],\n })\n return new Map(objectState.objects.map((object) => [objectRefKey(object.ref), object]))\n}\n\nfunction planTelemetryChunk(\n context: Pick<MaterializerContext, \"projectId\">,\n planContext: TelemetryPlanContext,\n points: readonly TelemetryPointWrite[],\n existingPoints: ReadonlyMap<string, StoredTelemetryPoint>,\n latest: Map<string, StoredTelemetryPoint>,\n counts: MutableTelemetryPlanCounts\n): MaterializationWorkRecord[] {\n const work: MaterializationWorkRecord[] = []\n for (const point of points) {\n work.push(...planTelemetryPoint(context, planContext, point, existingPoints, latest, counts))\n }\n return work\n}\n\nasync function loadExistingPoints(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n points: readonly TelemetryPointWrite[]\n): Promise<ReadonlyMap<string, StoredTelemetryPoint>> {\n const existingPoints = new Map<string, StoredTelemetryPoint>()\n for await (const page of storage.streamState({\n session,\n requests: oneStateRequest({\n objects: [],\n links: [],\n linkScopes: [],\n incidentObjects: [],\n points: points.map((point) => ({ series: point.series, at: point.at })),\n }),\n pageRows: context.batching.statePageRows,\n })) {\n for (const existing of page.points) {\n existingPoints.set(telemetryPointKey(existing.series, existing.at), existing)\n }\n }\n context.observeCoreBuffer?.(\"telemetry.existing-points\", existingPoints.size)\n return existingPoints\n}\n\nfunction planTelemetryPoint(\n context: Pick<MaterializerContext, \"projectId\">,\n planContext: TelemetryPlanContext,\n point: TelemetryPointWrite,\n existingPoints: ReadonlyMap<string, StoredTelemetryPoint>,\n latest: Map<string, StoredTelemetryPoint>,\n counts: MutableTelemetryPlanCounts\n): MaterializationWorkRecord[] {\n const identityKey = telemetryPointKey(point.series, point.at)\n const sortKey = telemetryPointSortKey(point.series, point.at)\n const existing = existingPoints.get(identityKey)\n const unchanged = telemetryPointUnchanged(existing, point)\n const work: MaterializationWorkRecord[] = [classificationWork(\"point\", identityKey, sortKey)]\n\n if (unchanged) {\n counts.pointsUnchanged += 1\n } else {\n countTelemetryPointChange(counts, existing)\n work.push(planWork(telemetryPointUpsert(point, existing, planContext.identity), sortKey))\n work.push(eventWork(buildTelemetryEvent(context, planContext, point)))\n }\n\n updateLatestPoint(latest, point, existing, unchanged, planContext.identity)\n return work\n}\n\nfunction telemetryPointUnchanged(\n existing: StoredTelemetryPoint | undefined,\n point: TelemetryPointWrite\n): boolean {\n if (!existing) return false\n return (\n stableJsonStringify({ value: existing.value, unit: existing.unit ?? null }) ===\n stableJsonStringify({ value: point.value, unit: point.unit ?? null })\n )\n}\n\nfunction countTelemetryPointChange(\n counts: MutableTelemetryPlanCounts,\n existing: StoredTelemetryPoint | undefined\n): void {\n if (existing) counts.pointsUpdated += 1\n else counts.pointsCreated += 1\n}\n\nfunction telemetryPointUpsert(\n point: TelemetryPointWrite,\n existing: StoredTelemetryPoint | undefined,\n identity: TimedCommitIdentity\n): MaterializationPlanWorkItem {\n const storedPoint = {\n series: point.series,\n value: point.value,\n at: point.at,\n lastCommitId: identity.commitId,\n }\n const pointWithUnit = storedTelemetryPointWithUnit(storedPoint, point.unit)\n return {\n kind: \"point-upsert\",\n value: {\n point: pointWithUnit,\n expected: {\n series: point.series,\n at: point.at,\n lastCommitId: existing?.lastCommitId ?? null,\n },\n },\n }\n}\n\nfunction storedTelemetryPointWithUnit<T extends object>(\n point: T,\n unit: string | undefined\n): T | (T & { readonly unit: string }) {\n if (unit === undefined) return point\n return { ...point, unit }\n}\n\nfunction buildTelemetryEvent(\n context: Pick<MaterializerContext, \"projectId\">,\n planContext: TelemetryPlanContext,\n point: TelemetryPointWrite\n) {\n const eventContext = telemetryEventContext(context, planContext)\n return buildTelemetryMaterializationEventDraft({ ...eventContext, point })\n}\n\nfunction updateLatestPoint(\n latest: Map<string, StoredTelemetryPoint>,\n point: TelemetryPointWrite,\n existing: StoredTelemetryPoint | undefined,\n unchanged: boolean,\n identity: TimedCommitIdentity\n): void {\n const current = latest.get(point.series.propertyId)\n if (current && point.at < current.at) return\n\n let lastCommitId = identity.commitId\n if (unchanged && existing) lastCommitId = existing.lastCommitId\n const storedPoint = {\n series: point.series,\n value: point.value,\n at: point.at,\n lastCommitId,\n }\n if (point.unit === undefined) {\n latest.set(point.series.propertyId, storedPoint)\n return\n }\n latest.set(point.series.propertyId, { ...storedPoint, unit: point.unit })\n}\n\nasync function stageTelemetryObjectPlan(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n planContext: TelemetryPlanContext,\n working: WorkingObject,\n counts: MutableTelemetryPlanCounts\n): Promise<void> {\n const resolved = resolveObject(context.ontology, working)\n if (resolved) validateEffectiveObject(context.ontology, resolved.ref, resolved.properties)\n const change = diffEffectiveObject({\n before: working.before,\n resolved,\n commitId: planContext.identity.commitId,\n committedAt: planContext.identity.committedAt,\n })\n const sortKey = objectRefSortKey(working.ref)\n const work: MaterializationWorkRecord[] = [\n classificationWork(\"object\", objectRefKey(working.ref), sortKey),\n ]\n if (change) {\n counts.latestObjectsChanged += 1\n const items: MaterializationPlanWorkItem[] = []\n appendEffectiveObjectWork(items, change)\n work.push(...items.map((item) => planWork(item, sortKey)))\n const eventContext = telemetryEventContext(context, planContext)\n work.push(eventWork(buildObjectMaterializationEventDraft({ ...eventContext, change })))\n }\n await stageWorkBounded(context, storage, session, work)\n}\n\nfunction telemetryEventContext(\n context: Pick<MaterializerContext, \"projectId\">,\n planContext: TelemetryPlanContext\n) {\n const eventContext = {\n projectId: context.projectId,\n commitId: planContext.identity.commitId,\n committedAt: planContext.identity.committedAt,\n origin: planContext.origin,\n correlationId: planContext.event.correlationId,\n }\n if (planContext.event.actor === undefined) return eventContext\n return { ...eventContext, actor: planContext.event.actor }\n}\n\nfunction emptyTelemetryCounts(): MutableTelemetryPlanCounts {\n return {\n pointsCreated: 0,\n pointsUpdated: 0,\n pointsUnchanged: 0,\n latestObjectsChanged: 0,\n }\n}\n",
39
39
  "import {\n MaterializationConflictError,\n MaterializationValidationError,\n} from \"../../materialization/errors\"\nimport type {\n OntologyMaterializationOrigin,\n ProjectionMaterializationIdentity,\n TelemetryAppend,\n TelemetryCommitResult,\n} from \"../../materialization/model\"\nimport { telemetryOwnershipKey } from \"../../materialization/refs\"\nimport type { ProjectionRegistry } from \"../../projections/registry\"\nimport type { ProjectionRunRecord, ProjectionRunStorage } from \"../../storage\"\nimport type {\n MaterializationSession,\n OntologyCommitRecord,\n OntologyCommitWrite,\n TelemetryOntologyCommitIntent,\n} from \"../../storage/ontology\"\nimport type { MaterializerContext, MaterializerStorage } from \"../context\"\nimport { validateTelemetryPoint } from \"../effective/validate\"\nimport { replayCommitRecord, withSerializationRetry } from \"../execution/commit-lifecycle\"\nimport {\n type LockedProjectionExecution,\n lockProjectionRunForMaterialization,\n} from \"../execution/run-correlation\"\nimport {\n assertMaterializerRunExecution,\n assertRuntimeMutationExecution,\n assertTrustedPrimitiveMutationExecution,\n ensureMaterializerExecution,\n type MaterializerExecution,\n prepareMaterializerExecution,\n} from \"../execution/scope\"\nimport { drainStagedEvents, drainStagedWork } from \"../execution/work-executor\"\nimport type { MaterializerCommand } from \"../materializer\"\nimport {\n createProjectionTelemetryIdempotencyKey,\n createRuntimeTelemetryIdempotencyKey,\n createTimedCommitIdentity,\n type TimedCommitIdentity,\n} from \"../shared/identity\"\nimport { normalizeTelemetryAppend } from \"../shared/normalize\"\nimport { createProjectionRunMaterializationIdentity } from \"../shared/projection-run\"\nimport { planTelemetryAppend } from \"./plan\"\n\ntype NormalizedTelemetryAppend = ReturnType<typeof normalizeTelemetryAppend>\ntype NormalizedTelemetrySource = NormalizedTelemetryAppend[\"source\"]\ntype RuntimeTelemetrySource = Extract<NormalizedTelemetrySource, { readonly kind: \"runtime\" }>\ntype ProjectionTelemetrySource = Extract<NormalizedTelemetrySource, { readonly kind: \"projection\" }>\ntype ResolvedTelemetryProjection = ReturnType<ProjectionRegistry[\"resolveTelemetry\"]>\n\ninterface PreparedTelemetryBase {\n readonly input: NormalizedTelemetryAppend\n readonly inputPointCount: number\n readonly ontologyRevision: string\n readonly identity: TimedCommitIdentity\n readonly execution: MaterializerExecution\n}\n\ninterface PreparedRuntimeTelemetry extends PreparedTelemetryBase {\n readonly kind: \"runtime\"\n readonly source: RuntimeTelemetrySource\n}\n\ninterface PreparedProjectionTelemetry extends PreparedTelemetryBase {\n readonly kind: \"projection\"\n readonly source: ProjectionTelemetrySource\n readonly resolvedProjection: ResolvedTelemetryProjection\n readonly runIdentity: ProjectionMaterializationIdentity\n}\n\ntype PreparedTelemetryAppend = PreparedRuntimeTelemetry | PreparedProjectionTelemetry\n\nexport async function appendTelemetry(\n context: MaterializerContext,\n raw: MaterializerCommand<TelemetryAppend>\n): Promise<TelemetryCommitResult> {\n const command = prepareTelemetryAppend(context, raw)\n return executeTelemetryCommit(context, command)\n}\n\nfunction prepareTelemetryAppend(\n context: Pick<MaterializerContext, \"projectId\" | \"ontology\" | \"projectionRegistry\" | \"clock\">,\n raw: MaterializerCommand<TelemetryAppend>\n): PreparedTelemetryAppend {\n const rawInputPointCount = raw.input.points.length\n const input = normalizeTelemetryAppend({\n ...raw.input,\n points: raw.input.points.map((point) => validateTelemetryPoint(context.ontology, point)),\n })\n const inputPointCount = telemetryInputPointCount(input, rawInputPointCount)\n\n const ontologyRevision = context.projectionRegistry.ontologyRevision\n const execution = prepareMaterializerExecution(context.projectId, raw.scope)\n if (input.source.kind === \"runtime\") {\n return {\n ...prepareRuntimeTelemetry(context, input, input.source, inputPointCount, ontologyRevision),\n execution,\n }\n }\n return {\n ...prepareProjectionTelemetry(context, input, input.source, inputPointCount, ontologyRevision),\n execution,\n }\n}\n\nfunction telemetryInputPointCount(\n input: NormalizedTelemetryAppend,\n rawInputPointCount: number\n): number {\n if (input.source.kind === \"projection\") return rawInputPointCount\n return input.points.length\n}\n\nfunction prepareRuntimeTelemetry(\n context: Pick<MaterializerContext, \"projectId\" | \"clock\">,\n input: NormalizedTelemetryAppend,\n source: RuntimeTelemetrySource,\n inputPointCount: number,\n ontologyRevision: string\n): Omit<PreparedRuntimeTelemetry, \"execution\"> {\n const identity = createTimedCommitIdentity({\n projectId: context.projectId,\n idempotencyKey: createRuntimeTelemetryIdempotencyKey(source.requestId),\n normalizedCallerIntent: input,\n now: context.clock(),\n })\n return { kind: \"runtime\", input, source, inputPointCount, ontologyRevision, identity }\n}\n\nfunction prepareProjectionTelemetry(\n context: Pick<MaterializerContext, \"projectId\" | \"projectionRegistry\" | \"clock\">,\n input: NormalizedTelemetryAppend,\n source: ProjectionTelemetrySource,\n inputPointCount: number,\n ontologyRevision: string\n): Omit<PreparedProjectionTelemetry, \"execution\"> {\n const resolvedProjection = context.projectionRegistry.resolveTelemetry(\n source.projection.projectionId\n )\n validateTelemetryProjectionDataset(resolvedProjection, source)\n validateTelemetryOwnership(resolvedProjection, input)\n validateTelemetryBatchCardinality(resolvedProjection, source, inputPointCount)\n\n const runIdentity = createProjectionRunMaterializationIdentity({\n resolved: resolvedProjection,\n datasetVersion: source.datasetVersion,\n ontologyRevision,\n })\n const identity = createTimedCommitIdentity({\n projectId: context.projectId,\n idempotencyKey: createProjectionTelemetryIdempotencyKey(runIdentity, source.batchOrdinal),\n // Execution ownership is transient: a reclaimed delivery retains the same request hash.\n normalizedCallerIntent: projectionTelemetryCallerIntent(input, source, inputPointCount),\n now: context.clock(),\n })\n return {\n kind: \"projection\",\n input,\n source,\n inputPointCount,\n ontologyRevision,\n identity,\n resolvedProjection,\n runIdentity,\n }\n}\n\nfunction validateTelemetryBatchCardinality(\n resolved: ResolvedTelemetryProjection,\n source: ProjectionTelemetrySource,\n inputPointCount: number\n): void {\n if (source.sourceRowCount === 0) {\n throw new MaterializationValidationError(\n \"Projection telemetry batches must consume at least one source row; an empty dataset produces no batch commit.\"\n )\n }\n\n const mappedPropertyCount = resolved.ownership.telemetry.length\n if (mappedPropertyCount === 0) {\n throw new MaterializationValidationError(\n `Telemetry projection '${resolved.projectionId}' must own at least one telemetry property.`\n )\n }\n\n const sourceRowsEmitted = source.sourceRowCount - source.sourceRowsSkipped\n const maximumPointCount = sourceRowsEmitted * mappedPropertyCount\n if (!Number.isSafeInteger(maximumPointCount)) {\n throw new MaterializationValidationError(\n `Telemetry projection '${resolved.projectionId}' batch point capacity exceeds the safe integer range.`\n )\n }\n if (inputPointCount < sourceRowsEmitted || inputPointCount > maximumPointCount) {\n throw new MaterializationValidationError(\n `Telemetry projection '${resolved.projectionId}' must emit between ${sourceRowsEmitted} and ${maximumPointCount} points for ${source.sourceRowCount} source rows with ${source.sourceRowsSkipped} skipped.`\n )\n }\n}\n\nfunction validateTelemetryProjectionDataset(\n resolved: ResolvedTelemetryProjection,\n source: ProjectionTelemetrySource\n): void {\n if (resolved.datasetId === source.datasetVersion.datasetId) return\n throw new MaterializationValidationError(\n `Telemetry projection '${resolved.projectionId}' requires dataset '${resolved.datasetId}'.`\n )\n}\n\nfunction validateTelemetryOwnership(\n resolved: ResolvedTelemetryProjection,\n input: NormalizedTelemetryAppend\n): void {\n const ownedSeries = new Set(\n resolved.ownership.telemetry.map(({ objectTypeId, propertyId }) =>\n telemetryOwnershipKey(objectTypeId, propertyId)\n )\n )\n for (const point of input.points) {\n const scope = telemetryOwnershipKey(point.series.object.objectTypeId, point.series.propertyId)\n if (ownedSeries.has(scope)) continue\n throw new MaterializationValidationError(\n `Telemetry projection '${resolved.projectionId}' does not own series '${point.series.object.objectTypeId}.${point.series.propertyId}'.`\n )\n }\n}\n\nfunction projectionTelemetryCallerIntent(\n input: NormalizedTelemetryAppend,\n source: ProjectionTelemetrySource,\n inputPointCount: number\n) {\n const intent = {\n source: {\n kind: \"projection\" as const,\n projection: source.projection,\n datasetVersion: source.datasetVersion,\n batchOrdinal: source.batchOrdinal,\n sourceRowCount: source.sourceRowCount,\n sourceRowsSkipped: source.sourceRowsSkipped,\n inputExhausted: source.inputExhausted,\n },\n inputPointCount,\n points: input.points,\n }\n return intent\n}\n\nasync function assertTelemetryExecution(\n storage: MaterializerStorage,\n projectId: string,\n command: PreparedTelemetryAppend\n): Promise<LockedProjectionExecution | null> {\n if (command.kind === \"runtime\") {\n assertRuntimeMutationExecution(command.execution)\n return null\n }\n assertTrustedPrimitiveMutationExecution(command.execution, {\n kind: \"projection\",\n id: command.source.projection.projectionId,\n runId: command.source.execution.projectionRunId,\n })\n const execution = await lockProjectionRunForMaterialization(storage, {\n projectId,\n projectionRunId: command.source.execution.projectionRunId,\n executionToken: command.source.execution.executionToken,\n identity: command.runIdentity,\n resolved: command.resolvedProjection,\n capabilityErrorMessage:\n \"Storage does not provide projection run capabilities required by telemetry projection.\",\n })\n assertMaterializerRunExecution(\n command.execution,\n execution.run.executionId,\n `Projection run '${execution.run.id}'`\n )\n assertTelemetryBatchPosition(\n execution.run,\n command.source.batchOrdinal,\n command.source.sourceRowCount,\n command.source.inputExhausted\n )\n return execution\n}\n\nfunction assertTelemetryBatchPosition(\n run: ProjectionRunRecord,\n batchOrdinal: number,\n sourceRowCount: number,\n inputExhausted: boolean\n): void {\n const checkpoint = run.telemetryCheckpoint\n if (!checkpoint) {\n throw new MaterializationValidationError(\n `Telemetry projection run '${run.id}' has incomplete checkpoint state.`\n )\n }\n if (batchOrdinal > checkpoint.nextBatchOrdinal) {\n throw new MaterializationValidationError(\n `Telemetry projection run '${run.id}' expected batch ordinal ${checkpoint.nextBatchOrdinal}, got ${batchOrdinal}.`\n )\n }\n if (checkpoint.inputExhausted && batchOrdinal >= checkpoint.nextBatchOrdinal) {\n throw new MaterializationValidationError(\n `Telemetry projection run '${run.id}' has already exhausted its input.`\n )\n }\n if (sourceRowCount > checkpoint.fixedBatchSize) {\n throw new MaterializationValidationError(\n `Telemetry projection run '${run.id}' batch exceeds its fixed size.`\n )\n }\n if (!inputExhausted && sourceRowCount !== checkpoint.fixedBatchSize) {\n throw new MaterializationValidationError(\n `Telemetry projection run '${run.id}' cannot advance past a partial non-final batch.`\n )\n }\n}\n\nfunction assertTelemetryReplayCheckpoint(run: ProjectionRunRecord, batchOrdinal: number): void {\n if (!run.telemetryCheckpoint || batchOrdinal >= run.telemetryCheckpoint.nextBatchOrdinal) {\n throw new MaterializationValidationError(\n `Telemetry commit batch ${batchOrdinal} exists without an advanced run checkpoint.`\n )\n }\n}\n\nfunction telemetryProjectionReplayResult(\n commit: OntologyCommitRecord,\n command: PreparedProjectionTelemetry\n): TelemetryCommitResult {\n const origin = commit.origin\n if (\n origin.kind !== \"telemetry\" ||\n origin.source.kind !== \"projection\" ||\n origin.source.projectionRunId !== command.source.execution.projectionRunId ||\n origin.source.batchOrdinal !== command.source.batchOrdinal ||\n commit.result.kind !== \"telemetry\"\n ) {\n throw new MaterializationConflictError(\n \"run-correlation\",\n `Telemetry commit '${commit.id}' belongs to a different logical run or batch.`\n )\n }\n return { ...structuredClone(commit.result), created: false }\n}\n\nasync function executeTelemetryCommit(\n context: MaterializerContext,\n command: PreparedTelemetryAppend\n): Promise<TelemetryCommitResult> {\n return withSerializationRetry(context, () =>\n context.storage.transaction(\n (storage) => executeTelemetryTransaction(context, storage, command),\n { isolation: \"serializable\" }\n )\n )\n}\n\nasync function executeTelemetryTransaction(\n context: MaterializerContext,\n storage: MaterializerStorage,\n command: PreparedTelemetryAppend\n): Promise<TelemetryCommitResult> {\n await ensureMaterializerExecution(storage.executions, command.execution)\n const execution = await assertTelemetryExecution(storage, context.projectId, command)\n const replay = await replayCommitRecord(\n context,\n command.identity,\n command.execution.executionId,\n storage\n )\n if (replay) {\n if (command.kind === \"projection\" && execution) {\n assertTelemetryReplayCheckpoint(execution.run, command.source.batchOrdinal)\n return telemetryProjectionReplayResult(replay, command)\n }\n return { ...structuredClone(replay.result), created: false } as TelemetryCommitResult\n }\n if (command.kind === \"projection\") {\n if (\n !execution?.run.telemetryCheckpoint ||\n execution.run.telemetryCheckpoint.nextBatchOrdinal !== command.source.batchOrdinal\n ) {\n throw new MaterializationValidationError(\n `Telemetry projection batch ${command.source.batchOrdinal} is behind its run checkpoint.`\n )\n }\n }\n\n const origin = telemetryOrigin(command)\n const session = await beginTelemetryMaterialization(context, storage, command, origin)\n const counts = await planTelemetryAppend(\n context,\n storage.ontology.materializations,\n session,\n command.input,\n command.identity,\n origin,\n {\n correlationId: command.execution.correlationId,\n ...(command.execution.actor === undefined ? {} : { actor: command.execution.actor }),\n }\n )\n await drainStagedWork(context, storage.ontology.materializations, session)\n const eventCount = await drainStagedEvents(\n context,\n storage.ontology.materializations,\n session,\n command.identity\n )\n const result: TelemetryCommitResult = {\n kind: \"telemetry\",\n commitId: command.identity.commitId,\n created: true,\n eventCount,\n committedAt: command.identity.committedAt,\n ...counts,\n }\n return finalizeTelemetryMaterialization(\n storage,\n session,\n command,\n result,\n execution?.projectionRuns\n )\n}\n\nfunction telemetryOrigin(command: PreparedTelemetryAppend): OntologyMaterializationOrigin {\n if (command.kind === \"runtime\") {\n return { kind: \"telemetry\", source: command.source }\n }\n return {\n kind: \"telemetry\",\n source: {\n kind: \"projection\",\n projectionId: command.source.projection.projectionId,\n projectionRunId: command.source.execution.projectionRunId,\n datasetId: command.source.datasetVersion.datasetId,\n datasetVersionId: command.source.datasetVersion.versionId,\n batchOrdinal: command.source.batchOrdinal,\n },\n }\n}\n\nasync function beginTelemetryMaterialization(\n context: Pick<MaterializerContext, \"projectId\">,\n storage: MaterializerStorage,\n command: PreparedTelemetryAppend,\n origin: OntologyMaterializationOrigin\n): Promise<MaterializationSession> {\n return storage.ontology.materializations.begin({\n commit: telemetryCommit(context.projectId, command, origin),\n expected: {\n sources: [],\n objects: [],\n links: [],\n linkScopes: [],\n points: [],\n },\n })\n}\n\nfunction telemetryCommit(\n projectId: string,\n command: PreparedTelemetryAppend,\n origin: OntologyMaterializationOrigin\n): OntologyCommitWrite {\n const base: OntologyCommitWrite = {\n projectId,\n id: command.identity.commitId,\n idempotencyKey: command.identity.idempotencyKey,\n requestHash: command.identity.requestHash,\n executionId: command.execution.executionId,\n origin,\n ontologyRevision: command.ontologyRevision,\n intent: telemetryCommitIntent(command),\n committedAt: command.identity.committedAt,\n }\n const withActor = telemetryCommitActor(base, command)\n if (command.kind === \"runtime\") return withActor\n return {\n ...withActor,\n projectionRevision: command.resolvedProjection.projectionRevision,\n ownershipHash: command.resolvedProjection.ownershipHash,\n }\n}\n\nfunction telemetryCommitActor(\n commit: OntologyCommitWrite,\n command: PreparedTelemetryAppend\n): OntologyCommitWrite {\n if (command.execution.actor === undefined) return commit\n return { ...commit, actor: command.execution.actor }\n}\n\nfunction telemetryCommitIntent(command: PreparedTelemetryAppend): TelemetryOntologyCommitIntent {\n if (command.kind === \"runtime\") {\n return {\n kind: \"telemetry\",\n pointCount: command.input.points.length,\n inputPointCount: command.inputPointCount,\n source: { kind: \"runtime\" },\n }\n }\n return {\n kind: \"telemetry\",\n pointCount: command.input.points.length,\n inputPointCount: command.inputPointCount,\n source: {\n kind: \"projection\",\n projection: command.source.projection,\n datasetVersion: command.source.datasetVersion,\n batchOrdinal: command.source.batchOrdinal,\n sourceRowCount: command.source.sourceRowCount,\n sourceRowsSkipped: command.source.sourceRowsSkipped,\n inputExhausted: command.source.inputExhausted,\n },\n }\n}\n\nasync function finalizeTelemetryMaterialization(\n storage: MaterializerStorage,\n session: MaterializationSession,\n command: PreparedTelemetryAppend,\n result: TelemetryCommitResult,\n projectionRuns: ProjectionRunStorage | undefined\n): Promise<TelemetryCommitResult> {\n const applied = await storage.ontology.materializations.finalize({\n session,\n finalization: { sourceActivations: [], result },\n })\n if (command.kind === \"projection\") {\n if (!projectionRuns) {\n throw new MaterializationValidationError(\"Expected an asserted telemetry projection run.\")\n }\n await projectionRuns.advanceTelemetryCheckpoint({\n id: command.source.execution.projectionRunId,\n projectId: applied.commit.projectId,\n executionToken: command.source.execution.executionToken,\n identity: command.runIdentity,\n batchOrdinal: command.source.batchOrdinal,\n batchRowCount: command.source.sourceRowCount,\n batchRowsSkipped: command.source.sourceRowsSkipped,\n inputExhausted: command.source.inputExhausted,\n })\n }\n return applied.commit.result as TelemetryCommitResult\n}\n",
40
- "import type { ExecutionScope } from \"../execution\"\nimport type {\n EditCommitResult,\n OntologyEditCommit,\n ProjectionCommitResult,\n ProjectionRunFinishInput,\n ProjectionSourceReplacement,\n TelemetryAppend,\n TelemetryCommitResult,\n} from \"../materialization/model\"\nimport type { OntologyRegistry } from \"../ontology\"\nimport type { ProjectionRegistry } from \"../projections/registry\"\nimport {\n createMaterializerContext,\n type MaterializerContext,\n type MaterializerStorage,\n type OntologyMaterializerDependencies,\n} from \"./context\"\nimport { commitEdits } from \"./edits/commit\"\nimport { finishProjectionRun } from \"./projections/finish-run\"\nimport { replaceProjection } from \"./projections/replace\"\nimport { appendTelemetry } from \"./telemetry/append\"\n\nexport type { MaterializerStorage, OntologyMaterializerDependencies } from \"./context\"\n\nexport interface MaterializerCommand<TInput> {\n readonly scope: ExecutionScope\n readonly input: TInput\n}\n\nexport interface OntologyMaterializerContract {\n withScope(scope: ExecutionScope): BoundOntologyMaterializer\n readonly edits: {\n commit(input: MaterializerCommand<OntologyEditCommit>): Promise<EditCommitResult>\n }\n readonly projections: {\n replace(\n input: MaterializerCommand<ProjectionSourceReplacement>\n ): Promise<ProjectionCommitResult>\n finishRun(input: MaterializerCommand<ProjectionRunFinishInput>): Promise<void>\n }\n readonly telemetry: {\n append(input: MaterializerCommand<TelemetryAppend>): Promise<TelemetryCommitResult>\n }\n}\n\n/** Materializer facade closed over one explicit execution scope. */\nexport interface BoundOntologyMaterializer {\n readonly edits: {\n commit(input: OntologyEditCommit): Promise<EditCommitResult>\n }\n readonly projections: {\n replace(input: ProjectionSourceReplacement): Promise<ProjectionCommitResult>\n finishRun(input: ProjectionRunFinishInput): Promise<void>\n }\n readonly telemetry: {\n append(input: TelemetryAppend): Promise<TelemetryCommitResult>\n }\n}\n\nexport class OntologyMaterializer implements OntologyMaterializerContract {\n readonly edits = {\n commit: (command: MaterializerCommand<OntologyEditCommit>) =>\n commitEdits(this.context, command),\n }\n readonly projections = {\n replace: (command: MaterializerCommand<ProjectionSourceReplacement>) =>\n replaceProjection(this.context, command),\n finishRun: (command: MaterializerCommand<ProjectionRunFinishInput>) =>\n finishProjectionRun(this.context, command),\n }\n readonly telemetry = {\n append: (command: MaterializerCommand<TelemetryAppend>) =>\n appendTelemetry(this.context, command),\n }\n\n withScope(scope: ExecutionScope): BoundOntologyMaterializer {\n return Object.freeze({\n edits: Object.freeze({\n commit: (input: OntologyEditCommit) => this.edits.commit({ scope, input }),\n }),\n projections: Object.freeze({\n replace: (input: ProjectionSourceReplacement) => this.projections.replace({ scope, input }),\n finishRun: (input: ProjectionRunFinishInput) =>\n this.projections.finishRun({ scope, input }),\n }),\n telemetry: Object.freeze({\n append: (input: TelemetryAppend) => this.telemetry.append({ scope, input }),\n }),\n })\n }\n\n private readonly context: MaterializerContext\n\n constructor(\n projectId: string,\n ontology: OntologyRegistry,\n projectionRegistry: ProjectionRegistry,\n storage: MaterializerStorage,\n dependencies: OntologyMaterializerDependencies = {}\n ) {\n this.context = createMaterializerContext({\n projectId,\n ontology,\n projections: projectionRegistry,\n storage,\n dependencies,\n })\n }\n}\n\nexport function createOntologyMaterializer(input: {\n readonly projectId: string\n readonly ontology: OntologyRegistry\n readonly projections: ProjectionRegistry\n readonly storage: MaterializerStorage\n readonly dependencies?: OntologyMaterializerDependencies\n}): OntologyMaterializer {\n return new OntologyMaterializer(\n input.projectId,\n input.ontology,\n input.projections,\n input.storage,\n input.dependencies\n )\n}\n"
40
+ "import type { ExecutionScope } from \"../execution\"\nimport type {\n EditCommitResult,\n OntologyEditCommit,\n ProjectionCommitResult,\n ProjectionRunFinishInput,\n ProjectionSourceRef,\n ProjectionSourceReplacement,\n TelemetryAppend,\n TelemetryCommitResult,\n} from \"../materialization/model\"\nimport type { OntologyRegistry } from \"../ontology\"\nimport type { ProjectionRegistry } from \"../projections/registry\"\nimport type { OntologySourceRecord } from \"../storage/ontology\"\nimport {\n createMaterializerContext,\n type MaterializerContext,\n type MaterializerStorage,\n type OntologyMaterializerDependencies,\n} from \"./context\"\nimport { commitEdits } from \"./edits/commit\"\nimport { finishProjectionRun } from \"./projections/finish-run\"\nimport { replaceProjection } from \"./projections/replace\"\nimport { appendTelemetry } from \"./telemetry/append\"\n\nexport type { MaterializerStorage, OntologyMaterializerDependencies } from \"./context\"\n\nexport interface MaterializerCommand<TInput> {\n readonly scope: ExecutionScope\n readonly input: TInput\n}\n\nexport interface OntologyMaterializerContract {\n withScope(scope: ExecutionScope): BoundOntologyMaterializer\n readonly edits: {\n commit(input: MaterializerCommand<OntologyEditCommit>): Promise<EditCommitResult>\n }\n readonly projections: {\n getActive(source: ProjectionSourceRef): Promise<OntologySourceRecord | null>\n replace(\n input: MaterializerCommand<ProjectionSourceReplacement>\n ): Promise<ProjectionCommitResult>\n finishRun(input: MaterializerCommand<ProjectionRunFinishInput>): Promise<void>\n }\n readonly telemetry: {\n append(input: MaterializerCommand<TelemetryAppend>): Promise<TelemetryCommitResult>\n }\n}\n\n/** Materializer facade closed over one explicit execution scope. */\nexport interface BoundOntologyMaterializer {\n readonly edits: {\n commit(input: OntologyEditCommit): Promise<EditCommitResult>\n }\n readonly projections: {\n getActive(source: ProjectionSourceRef): Promise<OntologySourceRecord | null>\n replace(input: ProjectionSourceReplacement): Promise<ProjectionCommitResult>\n finishRun(input: ProjectionRunFinishInput): Promise<void>\n }\n readonly telemetry: {\n append(input: TelemetryAppend): Promise<TelemetryCommitResult>\n }\n}\n\nexport class OntologyMaterializer implements OntologyMaterializerContract {\n readonly edits = {\n commit: (command: MaterializerCommand<OntologyEditCommit>) =>\n commitEdits(this.context, command),\n }\n readonly projections = {\n getActive: (source: ProjectionSourceRef) =>\n this.context.storage.ontology.sources.getActive({\n projectId: this.context.projectId,\n source,\n }),\n replace: (command: MaterializerCommand<ProjectionSourceReplacement>) =>\n replaceProjection(this.context, command),\n finishRun: (command: MaterializerCommand<ProjectionRunFinishInput>) =>\n finishProjectionRun(this.context, command),\n }\n readonly telemetry = {\n append: (command: MaterializerCommand<TelemetryAppend>) =>\n appendTelemetry(this.context, command),\n }\n\n withScope(scope: ExecutionScope): BoundOntologyMaterializer {\n return Object.freeze({\n edits: Object.freeze({\n commit: (input: OntologyEditCommit) => this.edits.commit({ scope, input }),\n }),\n projections: Object.freeze({\n getActive: (source: ProjectionSourceRef) => this.projections.getActive(source),\n replace: (input: ProjectionSourceReplacement) => this.projections.replace({ scope, input }),\n finishRun: (input: ProjectionRunFinishInput) =>\n this.projections.finishRun({ scope, input }),\n }),\n telemetry: Object.freeze({\n append: (input: TelemetryAppend) => this.telemetry.append({ scope, input }),\n }),\n })\n }\n\n private readonly context: MaterializerContext\n\n constructor(\n projectId: string,\n ontology: OntologyRegistry,\n projectionRegistry: ProjectionRegistry,\n storage: MaterializerStorage,\n dependencies: OntologyMaterializerDependencies = {}\n ) {\n this.context = createMaterializerContext({\n projectId,\n ontology,\n projections: projectionRegistry,\n storage,\n dependencies,\n })\n }\n}\n\nexport function createOntologyMaterializer(input: {\n readonly projectId: string\n readonly ontology: OntologyRegistry\n readonly projections: ProjectionRegistry\n readonly storage: MaterializerStorage\n readonly dependencies?: OntologyMaterializerDependencies\n}): OntologyMaterializer {\n return new OntologyMaterializer(\n input.projectId,\n input.ontology,\n input.projections,\n input.storage,\n input.dependencies\n )\n}\n"
41
41
  ],
42
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,SAAS,wBAAuB,CAAC,UAA6C;AAAA,EACnF,MAAM,yBAAyB,qCAAqC,QAAQ;AAAA,EAC5E,OAAO,iBAAgB;AAAA,IACrB,aAAa,6BAA6B,QAAQ;AAAA,IAClD,YAAY,4BAA4B,UAAU,sBAAsB;AAAA,EAC1E,CAAC;AAAA;AAGH,SAAS,oCAAoC,CAC3C,UACqB;AAAA,EACrB,MAAM,yBAAyB,IAAI;AAAA,EACnC,WAAW,cAAc,SAAS,mBAAmB,EAAE,OAAO,GAAG;AAAA,IAC/D,WAAW,YAAY,WAAW,YAAY;AAAA,MAC5C,8BAA8B,SAAS,QAAQ,sBAAsB;AAAA,IACvE;AAAA,IACA,WAAW,QAAQ,WAAW,OAAO;AAAA,MACnC,WAAW,YAAY,KAAK,cAAc,CAAC,GAAG;AAAA,QAC5C,8BAA8B,SAAS,QAAQ,sBAAsB;AAAA,MACvE;AAAA,IACF;AAAA,EACF;AAAA,EACA,MAAM,UAAU,CAAC,GAAG,sBAAsB;AAAA,EAC1C,MAAM,SAAS,IAAI,IAAI,OAAO;AAAA,EAC9B,SAAS,QAAQ,EAAG,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AAAA,IACtD,MAAM,YAAY,SAAS,kBAAkB,EAAE,IAAI,QAAQ,MAAM;AAAA,IACjE,IAAI,CAAC;AAAA,MAAW;AAAA,IAChB,8BAA8B,UAAU,QAAQ,sBAAsB;AAAA,IACtE,WAAW,eAAe,wBAAwB;AAAA,MAChD,IAAI,OAAO,IAAI,WAAW;AAAA,QAAG;AAAA,MAC7B,OAAO,IAAI,WAAW;AAAA,MACtB,QAAQ,KAAK,WAAW;AAAA,IAC1B;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,2BAA2B,CAClC,UACA,wBACa;AAAA,EACb,OAAO,CAAC,GAAG,sBAAsB,EAC9B,KAAK,cAAc,EACnB,IAAI,CAAC,gBAAgB,SAAS,kBAAkB,EAAE,IAAI,WAAW,CAAC,EAClE,OAAO,CAAC,cAAc,cAAc,SAAS,EAC7C,IAAI,CAAC,eAAe;AAAA,IACnB,IAAI,UAAU;AAAA,IACd,QAAQ,gBAAgB,UAAU,MAAM;AAAA,IACxC,cAAc,UAAU,gBAAgB;AAAA,EAC1C,EAAE;AAAA;AAGN,SAAS,4BAA4B,CAAC,UAAkD;AAAA,EACtF,OAAO,CAAC,GAAG,SAAS,mBAAmB,EAAE,OAAO,CAAC,EAC9C,KAAK,CAAC,MAAM,UAAU,eAAe,KAAK,IAAI,MAAM,EAAE,CAAC,EACvD,IAAI,CAAC,gBAAgB;AAAA,IACpB,IAAI,WAAW;AAAA,IACf,SAAS,WAAW,WAAW;AAAA,IAC/B,SAAS,CAAC,GAAI,WAAW,WAAW,CAAC,CAAE,EAAE,KAAK;AAAA,IAC9C,YAAY,CAAC,GAAI,WAAW,cAAc,CAAC,CAAE,EAAE,KAAK;AAAA,IACpD,YAAY,CAAC,GAAG,WAAW,UAAU,EAClC,KAAK,CAAC,MAAM,UAAU,eAAe,KAAK,IAAI,MAAM,EAAE,CAAC,EACvD,IAAI,iBAAiB;AAAA,IACxB,OAAO,CAAC,GAAG,WAAW,KAAK,EACxB,KAAK,CAAC,MAAM,UAAU,eAAe,KAAK,IAAI,MAAM,EAAE,CAAC,EACvD,IAAI,CAAC,UAAU;AAAA,MACd,IAAI,KAAK;AAAA,MACT,qBAAqB,MAAM,QAAQ,KAAK,kBAAkB,IACtD,CAAC,GAAG,KAAK,kBAAkB,EAAE,KAAK,IAClC,CAAC,KAAK,kBAAkB;AAAA,MAC5B,aAAa,KAAK,eAAe;AAAA,MACjC,YAAY,CAAC,GAAI,KAAK,cAAc,CAAC,CAAE,EACpC,KAAK,CAAC,MAAM,UAAU,eAAe,KAAK,IAAI,MAAM,EAAE,CAAC,EACvD,IAAI,iBAAiB;AAAA,IAC1B,EAAE;AAAA,EACN,EAAE;AAAA;AAGN,SAAS,6BAA6B,CAAC,QAAgB,cAAiC;AAAA,EACtF,IAAI,OAAO,WAAW,YAAY,OAAO,SAAS;AAAA,IAAQ;AAAA,EAC1D,IAAI,OAAO,SAAS,gBAAgB;AAAA,IAClC,aAAa,IAAI,OAAO,WAAW;AAAA,IACnC;AAAA,EACF;AAAA,EACA,IAAI,OAAO,SAAS,SAAS;AAAA,IAC3B,8BAA8B,OAAO,OAAO,YAAY;AAAA,IACxD;AAAA,EACF;AAAA,EACA,IAAI,OAAO,SAAS,OAAO;AAAA,IACzB,8BAA8B,OAAO,aAAa,YAAY;AAAA,IAC9D;AAAA,EACF;AAAA,EACA,WAAW,SAAS,OAAO,OAAO,OAAO,UAAU,GAAG;AAAA,IACpD,8BAA8B,MAAM,QAAQ,YAAY;AAAA,EAC1D;AAAA;AAGK,SAAS,0BAAyB,CACvC,YACA,SACQ;AAAA,EACR,MAAM,oBAAoB,kBAAkB,UAAU;AAAA,EACtD,MAAM,UAAU,QAAQ,OAAO,QAC5B,OAAO,CAAC,WAAW,kBAAkB,IAAI,OAAO,IAAI,CAAC,EACrD,IAAI,CAAC,YAAY;AAAA,IAChB,MAAM,OAAO;AAAA,IACb,MAAM,OAAO;AAAA,IACb,UAAU,OAAO,YAAY;AAAA,EAC/B,EAAE,EACD,KAAK,CAAC,MAAM,UAAU,eAAe,KAAK,MAAM,MAAM,IAAI,CAAC;AAAA,EAE9D,OAAO,iBAAgB;AAAA,IACrB,SAAS,8BAA8B,UAAU;AAAA,IACjD;AAAA,EACF,CAAC;AAAA;AAGI,SAAS,+BAA8B,CAAC,WAAwC;AAAA,EACrF,OAAO,iBAAgB,SAAS;AAAA;AAGlC,SAAS,6BAA6B,CAAC,YAA6C;AAAA,EAClF,IAAI,WAAW,SAAS,8BAA8B;AAAA,IACpD,OAAO;AAAA,MACL,MAAM;AAAA,MACN,cAAc,WAAW;AAAA,MACzB,YAAY,OAAO,YACjB,OAAO,QAAQ,WAAW,UAAU,EAAE,KAAK,EAAE,QAAQ,WAAW,eAAe,MAAM,KAAK,CAAC,CAC7F;AAAA,MACA,OAAO,OAAO,YACZ,OAAO,QAAQ,WAAW,KAAK,EAC5B,KAAK,EAAE,QAAQ,WAAW,eAAe,MAAM,KAAK,CAAC,EACrD,IAAI,EAAE,QAAQ,UAAU;AAAA,QACvB;AAAA,QACA;AAAA,UACE,QAAQ,KAAK;AAAA,UACb,kBAAkB,KAAK,oBAAoB;AAAA,UAC3C,aAAa,KAAK,eAAe;AAAA,UACjC,oBAAoB,KAAK;AAAA,QAC3B;AAAA,MACF,CAAC,CACL;AAAA,MACA,oBAAoB,WAAW,sBAAsB,EAAE,UAAU,WAAW;AAAA,IAC9E;AAAA,EACF;AAAA,EACA,IAAI,WAAW,SAAS,4BAA4B;AAAA,IAClD,OAAO;AAAA,MACL,MAAM;AAAA,MACN,oBAAoB,WAAW;AAAA,MAC/B,QAAQ,WAAW;AAAA,MACnB,oBAAoB,WAAW;AAAA,MAC/B,aAAa,WAAW;AAAA,MACxB,aAAa,WAAW;AAAA,IAC1B;AAAA,EACF;AAAA,EACA,MAAM,aAAa,OAAO,QAAQ,WAAW,UAAU,EAAE,KAAK,EAAE,QAAQ,WACtE,eAAe,MAAM,KAAK,CAC5B;AAAA,EACA,IAAI,WAAW,WAAW,GAAG;AAAA,IAC3B,OAAO,YAAY,WAAW,WAAW;AAAA,IAIzC,OAAO;AAAA,MACL,MAAM;AAAA,MACN,cAAc,WAAW;AAAA,MACzB;AAAA,MACA,eAAe,WAAW;AAAA,MAC1B,SAAS,WAAW;AAAA,MACpB,YAAY,QAAQ;AAAA,MACpB,WAAW,QAAQ,aAAa;AAAA,IAClC;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,cAAc,WAAW;AAAA,IACzB,eAAe,WAAW;AAAA,IAC1B,SAAS,WAAW;AAAA,IACpB,YAAY,OAAO,YACjB,WAAW,IAAI,EAAE,YAAY,aAAa;AAAA,MACxC;AAAA,MACA;AAAA,QACE,YAAY,QAAQ;AAAA,QACpB,WAAW,QAAQ,aAAa;AAAA,MAClC;AAAA,IACF,CAAC,CACH;AAAA,EACF;AAAA;AAGF,SAAS,iBAAiB,CAAC,YAA+C;AAAA,EACxE,IAAI,WAAW,SAAS,8BAA8B;AAAA,IACpD,OAAO,IAAI,IAAI;AAAA,MACb,GAAG,OAAO,OAAO,WAAW,UAAU;AAAA,MACtC,GAAG,OAAO,OAAO,WAAW,KAAK,EAAE,QAAQ,CAAC,SAC1C,KAAK,gBAAgB,YAAY,CAAC,IAAI,CAAC,KAAK,WAAW,CACzD;AAAA,MACA,GAAI,WAAW,oBAAoB,aAAa,eAC5C,CAAC,WAAW,mBAAmB,eAAe,IAC9C,CAAC;AAAA,IACP,CAAC;AAAA,EACH;AAAA,EACA,IAAI,WAAW,SAAS,4BAA4B;AAAA,IAClD,OAAO,IAAI,IAAI,CAAC,WAAW,aAAa,WAAW,WAAW,CAAC;AAAA,EACjE;AAAA,EACA,OAAO,IAAI,IAAI;AAAA,IACb,WAAW;AAAA,IACX,WAAW;AAAA,IACX,GAAG,OAAO,OAAO,WAAW,UAAU,EAAE,QAAQ,CAAC,YAAY;AAAA,MAC3D,QAAQ;AAAA,MACR,GAAI,QAAQ,cAAc,YAAY,CAAC,IAAI,CAAC,QAAQ,SAAS;AAAA,IAC/D,CAAC;AAAA,EACH,CAAC;AAAA;AAGH,SAAS,iBAAiB,CAAC,UAA+B;AAAA,EACxD,OAAO;AAAA,IACL,IAAI,SAAS;AAAA,IACb,QAAQ,gBAAgB,SAAS,MAAM;AAAA,IACvC,UAAU,SAAS,YAAY;AAAA,IAC/B,UAAU,SAAS,YAAY;AAAA,IAC/B,SAAS,SAAS,WAAW;AAAA,IAC7B,MAAM,SAAS,QAAQ;AAAA,IACvB,cAAc,SAAS,gBAAgB;AAAA,EACzC;AAAA;AAGF,SAAS,eAAe,CAAC,QAA2B;AAAA,EAClD,IAAI,OAAO,WAAW;AAAA,IAAU,OAAO;AAAA,EACvC,IAAI,OAAO,SAAS,gBAAgB;AAAA,IAClC,OAAO,EAAE,MAAM,gBAAgB,aAAa,OAAO,YAAY;AAAA,EACjE;AAAA,EACA,IAAI,OAAO,SAAS,QAAQ;AAAA,IAC1B,OAAO;AAAA,MACL,MAAM;AAAA,MACN,WAAW,OAAO;AAAA,MAClB,QACE,OAAO,cAAc,WACjB,CAAC,GAAG,OAAO,MAAM,EAAE,KAAK,cAAc,IACtC,CAAC,GAAG,OAAO,MAAM,EAAE,KAAK,CAAC,MAAM,UAAU,OAAO,KAAK;AAAA,IAC7D;AAAA,EACF;AAAA,EACA,IAAI,OAAO,SAAS,SAAS;AAAA,IAC3B,OAAO,EAAE,MAAM,SAAS,OAAO,gBAAgB,OAAO,KAAK,EAAE;AAAA,EAC/D;AAAA,EACA,IAAI,OAAO,SAAS,OAAO;AAAA,IACzB,OAAO;AAAA,MACL,MAAM;AAAA,MACN,WAAW,OAAO;AAAA,MAClB,aAAa,gBAAgB,OAAO,WAAW;AAAA,IACjD;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,YAAY,OAAO,YACjB,OAAO,QAAQ,OAAO,UAAU,EAC7B,KAAK,EAAE,QAAQ,WAAW,eAAe,MAAM,KAAK,CAAC,EACrD,IAAI,EAAE,SAAS,WAAW,CAAC,SAAS,eAAe,KAAK,CAAC,CAAC,CAC/D;AAAA,EACF;AAAA;AAGF,SAAS,cAAc,CAAC,OAAqC;AAAA,EAC3D,OAAO;AAAA,IACL,QAAQ,gBAAgB,MAAM,MAAM;AAAA,IACpC,UAAU,MAAM,YAAY;AAAA,IAC5B,UAAU,MAAM,YAAY;AAAA,IAC5B,cAAc,MAAM,gBAAgB;AAAA,EACtC;AAAA;;;AC/OK,MAAM,oBAA0D;AAAA,EAC5D;AAAA,EACQ;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB,IAAI;AAAA,EACtB,aAAa,IAAI;AAAA,EACjB,gBAAgB,IAAI;AAAA,EAIpB,eAAe,IAAI;AAAA,EACnB;AAAA,EAEjB,WAAW,CAAC,OAAkC;AAAA,IAC5C,MAAM,oBAAkD,CAAC;AAAA,IACzD,MAAM,kBAA8C,CAAC;AAAA,IACrD,MAAM,uBAAwD,CAAC;AAAA,IAC/D,WAAW,cAAc,MAAM,aAAa;AAAA,MAC1C,IAAI,CAAC,wBAAuB,UAAU,GAAG;AAAA,QACvC,MAAM,IAAI,2BAA0B,uCAAuC;AAAA,MAC7E;AAAA,MACA,QAAQ,WAAW;AAAA,aACZ;AAAA,UACH,kBAAkB,KAAK,WAAW,gCAAgC,UAAU,CAAC,CAAC;AAAA,UAC9E;AAAA,aACG;AAAA,UACH,gBAAgB,KAAK,WAAW,8BAA8B,UAAU,CAAC,CAAC;AAAA,UAC1E;AAAA,aACG;AAAA,UACH,qBAAqB,KAAK,WAAW,mCAAmC,UAAU,CAAC,CAAC;AAAA,UACpF;AAAA;AAAA,IAEN;AAAA,IACA,KAAK,oBAAoB,OAAO,OAAO,iBAAiB;AAAA,IACxD,KAAK,kBAAkB,OAAO,OAAO,eAAe;AAAA,IACpD,KAAK,uBAAuB,OAAO,OAAO,oBAAoB;AAAA,IAE9D,MAAM,cAAc;AAAA,MAClB,GAAG,KAAK;AAAA,MACR,GAAG,KAAK;AAAA,MACR,GAAG,KAAK;AAAA,IACV;AAAA,IACA,0BAA0B,WAAW;AAAA,IACrC,MAAM,YAAY,6BAChB;AAAA,MACE,mBAAmB,KAAK;AAAA,MACxB,iBAAiB,KAAK;AAAA,MACtB,sBAAsB,KAAK;AAAA,IAC7B,GACA,MAAM,UACN,MAAM,YACR;AAAA,IACA,KAAK,mBAAmB,yBAAwB,MAAM,QAAQ;AAAA,IAE9D,MAAM,sBAAsD,CAAC;AAAA,IAC7D,WAAW,UAAU,UAAU,mBAAmB;AAAA,MAChD,MAAM,WAAW,yBAAyB,MAAM;AAAA,MAChD,KAAK,WAAW,IAAI,SAAS,cAAc,QAAQ;AAAA,MACnD,KAAK,gBAAgB,IAAI,SAAS,cAAc,SAAS,UAAU;AAAA,MACnE,oBAAoB,KAAK,yBAAyB,UAAU,KAAK,gBAAgB,CAAC;AAAA,IACpF;AAAA,IACA,WAAW,UAAU,UAAU,iBAAiB;AAAA,MAC9C,MAAM,WAAW,yBAAyB,MAAM;AAAA,MAChD,KAAK,WAAW,IAAI,SAAS,cAAc,QAAQ;AAAA,MACnD,KAAK,gBAAgB,IAAI,SAAS,cAAc,SAAS,UAAU;AAAA,MACnE,oBAAoB,KAAK,yBAAyB,UAAU,KAAK,gBAAgB,CAAC;AAAA,IACpF;AAAA,IACA,WAAW,UAAU,UAAU,sBAAsB;AAAA,MACnD,MAAM,WAAW,yBAAyB,MAAM;AAAA,MAChD,KAAK,cAAc,IAAI,SAAS,cAAc,QAAQ;AAAA,MACtD,KAAK,gBAAgB,IAAI,SAAS,cAAc,SAAS,UAAU;AAAA,MACnE,oBAAoB,KAAK,yBAAyB,UAAU,KAAK,gBAAgB,CAAC;AAAA,IACpF;AAAA,IACA,KAAK,sBAAsB,OAAO,OAAO,mBAAmB;AAAA,IAC5D,WAAW,cAAc,KAAK,qBAAqB;AAAA,MACjD,KAAK,aAAa,IAAI,WAAW,cAAc,UAAU;AAAA,IAC3D;AAAA;AAAA,EAGF,IAAI,GAAoC;AAAA,IACtC,OAAO,CAAC,GAAG,KAAK,mBAAmB,GAAG,KAAK,iBAAiB,GAAG,KAAK,oBAAoB;AAAA;AAAA,EAG1F,WAAW,GAA0C;AAAA,IACnD,OAAO,KAAK;AAAA;AAAA,EAGd,SAAS,GAAwC;AAAA,IAC/C,OAAO,KAAK;AAAA;AAAA,EAGd,aAAa,GAA6C;AAAA,IACxD,OAAO,KAAK;AAAA;AAAA,EAGd,OAAO,CAAC,cAAmD;AAAA,IACzD,OAAO,KAAK,gBAAgB,IAAI,YAAY,KAAK;AAAA;AAAA,EAGnD,sBAAsB,GAA4C;AAAA,IAChE,OAAO,KAAK;AAAA;AAAA,EAGd,eAAe,CAAC,cAAoD;AAAA,IAClE,MAAM,aAAa,KAAK,aAAa,IAAI,YAAY;AAAA,IACrD,IAAI;AAAA,MAAY,OAAO;AAAA,IACvB,MAAM,IAAI,2BAA0B,8BAA8B,gBAAgB;AAAA;AAAA,EAGpF,aAAa,CAAC,cAAsE;AAAA,IAClF,MAAM,WAAW,KAAK,WAAW,IAAI,YAAY;AAAA,IACjD,IAAI,CAAC,UAAU;AAAA,MACb,IAAI,KAAK,cAAc,IAAI,YAAY,GAAG;AAAA,QACxC,MAAM,IAAI,2BACR,sBAAsB,kEACxB;AAAA,MACF;AAAA,MACA,MAAM,IAAI,2BAA0B,qCAAqC,gBAAgB;AAAA,IAC3F;AAAA,IACA,OAAO;AAAA;AAAA,EAGT,gBAAgB,CAAC,cAAyE;AAAA,IACxF,MAAM,WAAW,KAAK,cAAc,IAAI,YAAY;AAAA,IACpD,IAAI,CAAC,UAAU;AAAA,MACb,IAAI,KAAK,WAAW,IAAI,YAAY,GAAG;AAAA,QACrC,MAAM,IAAI,2BACR,sBAAsB,gDACxB;AAAA,MACF;AAAA,MACA,MAAM,IAAI,2BAA0B,wCAAwC,gBAAgB;AAAA,IAC9F;AAAA,IACA,OAAO;AAAA;AAEX;AAEA,SAAS,wBAAwB,CAC/B,UACA,kBAC8B;AAAA,EAC9B,MAAM,SAAS;AAAA,IACb,cAAc,SAAS;AAAA,IACvB,WAAW,SAAS;AAAA,IACpB;AAAA,IACA,oBAAoB,SAAS;AAAA,IAC7B,eAAe,SAAS;AAAA,EAC1B;AAAA,EAEA,QAAQ,SAAS,WAAW;AAAA,SACrB;AAAA,MACH,OAAO,WAAW,KAAK,QAAQ,gBAAgB,UAAU,UAAU,cAAc,CAAC;AAAA,SAC/E;AAAA,MACH,OAAO,WAAW,KAAK,QAAQ,gBAAgB,QAAQ,UAAU,cAAc,CAAC;AAAA,SAC7E;AAAA,MACH,OAAO,WAAW,KAAK,QAAQ,gBAAgB,aAAa,UAAU,YAAY,CAAC;AAAA;AAAA;AAIzF,SAAS,yBAAyB,CAAC,aAAoD;AAAA,EACrF,MAAM,MAAM,IAAI;AAAA,EAChB,WAAW,cAAc,aAAa;AAAA,IACpC,IAAI,IAAI,IAAI,WAAW,EAAE,GAAG;AAAA,MAC1B,MAAM,IAAI,2BAA0B,mCAAmC,WAAW,IAAI;AAAA,IACxF;AAAA,IACA,IAAI,IAAI,WAAW,EAAE;AAAA,EACvB;AAAA;AAGF,SAAS,wBAAkE,CACzE,WACiC;AAAA,EACjC,QAAQ,YAAY,SAAS,cAAc;AAAA,EAC3C,OAAO,WAAW;AAAA,IAChB,cAAc,WAAW;AAAA,IACzB,WAAW,WAAW;AAAA,IACtB,oBAAoB,2BAA0B,YAAY,OAAO;AAAA,IACjE,eAAe,gCAA+B,SAAS;AAAA,IACvD;AAAA,IACA;AAAA,EACF,CAAC;AAAA;AAKH,SAAS,+BAA+B,CACtC,YAC4B;AAAA,EAC5B,OAAO;AAAA,IACL,MAAM,WAAW;AAAA,IACjB,IAAI,WAAW;AAAA,IACf,cAAc,WAAW;AAAA,IACzB,WAAW,WAAW;AAAA,IACtB,YAAY,KAAK,WAAW,WAAW;AAAA,IACvC,OAAO,OAAO,YACZ,OAAO,QAAQ,WAAW,KAAK,EAAE,IAAI,EAAE,QAAQ,gBAAgB;AAAA,MAC7D;AAAA,MACA;AAAA,QACE,QAAQ,WAAW;AAAA,WACf,WAAW,qBAAqB,YAChC,EAAE,kBAAkB,WAAW,iBAAiB,IAChD,CAAC;AAAA,WACD,WAAW,gBAAgB,YAAY,EAAE,aAAa,WAAW,YAAY,IAAI,CAAC;AAAA,QACtF,oBAAoB,WAAW;AAAA,MACjC;AAAA,IACF,CAAC,CACH;AAAA,IACA,oBACE,WAAW,oBAAoB,aAAa,eACxC;AAAA,MACE,UAAU;AAAA,MACV,iBAAiB,WAAW,mBAAmB;AAAA,IACjD,IACA,EAAE,UAAU,WAAW;AAAA,EAC/B;AAAA;AAGF,SAAS,6BAA6B,CACpC,YAC0B;AAAA,EAC1B,OAAO;AAAA,IACL,MAAM;AAAA,IACN,IAAI,WAAW;AAAA,IACf,QAAQ,WAAW;AAAA,IACnB,oBAAoB,WAAW;AAAA,IAC/B,oBAAoB,WAAW;AAAA,IAC/B,WAAW,WAAW;AAAA,IACtB,aAAa,WAAW;AAAA,IACxB,aAAa,WAAW;AAAA,EAC1B;AAAA;AAGF,SAAS,kCAAkC,CACzC,YAC+B;AAAA,EAC/B,OAAO;AAAA,IACL,MAAM;AAAA,IACN,IAAI,WAAW;AAAA,IACf,cAAc,WAAW;AAAA,IACzB,WAAW,WAAW;AAAA,IACtB,eAAe,WAAW;AAAA,IAC1B,SAAS,WAAW;AAAA,IACpB,YAAY,OAAO,YACjB,OAAO,QAAQ,WAAW,UAAU,EAAE,IAAI,EAAE,YAAY,aAAa;AAAA,MACnE;AAAA,MACA;AAAA,QACE,YAAY,QAAQ;AAAA,WAChB,QAAQ,cAAc,YAAY,EAAE,WAAW,QAAQ,UAAU,IAAI,CAAC;AAAA,MAC5E;AAAA,IACF,CAAC,CACH;AAAA,EACF;AAAA;AAGF,SAAS,UAAa,CAAC,OAAa;AAAA,EAClC,IAAI,UAAU,QAAQ,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK;AAAA,IAAG,OAAO;AAAA,EAClF,WAAW,SAAS,OAAO,OAAO,KAAgC,GAAG;AAAA,IACnE,WAAW,KAAK;AAAA,EAClB;AAAA,EACA,OAAO,OAAO,OAAO,KAAK;AAAA;;AC7RrB,IAAM,mCAA4D,OAAO,OAAO;AAAA,EAIrF,iBAAiB;AAAA,EACjB,kBAAkB,IAAI,OAAO;AAAA,EAC7B,eAAe;AAAA,EACf,eAAe;AAAA,EACf,gBAAgB,IAAI,OAAO;AAC7B,CAAC;AAGM,SAAS,8BAA8B,CAC5C,YAA8C,CAAC,GACtB;AAAA,EACzB,MAAM,WAAW,KAAK,qCAAqC,UAAU;AAAA,EACrE,YAAY,MAAM,UAAU,OAAO,QAAQ,QAAQ,GAAG;AAAA,IACpD,IAAI,CAAC,OAAO,cAAc,KAAK,KAAK,SAAS,GAAG;AAAA,MAC9C,MAAM,IAAI,gCACR,6BAA6B,wCAC/B;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO,OAAO,OAAO,QAAQ;AAAA;;;ACjC/B;AAoBO,SAAS,2BAA0B,CAAC,OAAuB;AAAA,EAChE,OAAO,UAAU;AAAA;AAGZ,SAAS,4BAA2B,CAAC,WAA2B;AAAA,EACrE,OAAO,WAAW;AAAA;AAYpB,SAAS,uBAAuB,CAC9B,OACmF;AAAA,EACnF,OAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM,eAAe;AAAA,IACrB,MAAM,eAAe;AAAA,IACrB,MAAM,eAAe;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA;AAGK,SAAS,+BAA8B,CAC5C,UACQ;AAAA,EACR,OAAO,sBAAsB,iBAAgB,wBAAwB,QAAQ,CAAC;AAAA;AAGzE,SAAS,qCAAoC,CAAC,WAA2B;AAAA,EAC9E,OAAO,qBAAqB;AAAA;AAGvB,SAAS,wCAAuC,CACrD,UACA,cACQ;AAAA,EACR,OAAO,wBAAwB,iBAAgB;AAAA,IAC7C,GAAG,wBAAwB,QAAQ;AAAA,IACnC;AAAA,EACF,CAAC;AAAA;AAaI,SAAS,qBAAoB,CAAC,OAIlB;AAAA,EACjB,OAAO,OAAO,OAAO;AAAA,IACnB,gBAAgB,MAAM;AAAA,IACtB,aAAa,mBAAkB,MAAM,sBAAsB;AAAA,IAC3D,UAAU,gBAAe,MAAM,WAAW,MAAM,cAAc;AAAA,EAChE,CAAC;AAAA;AAGI,SAAS,wBAAuB,CACrC,UACA,MAAY,IAAI,MACK;AAAA,EACrB,MAAM,cAAc,IAAI,KAAK,GAAG;AAAA,EAChC,IAAI,OAAO,MAAM,YAAY,QAAQ,CAAC,GAAG;AAAA,IACvC,MAAM,IAAI,gCAA+B,mDAAmD;AAAA,EAC9F;AAAA,EACA,OAAO,OAAO,OAAO;AAAA,OAChB;AAAA,IACH,aAAa,YAAY,YAAY;AAAA,EACvC,CAAC;AAAA;AAGI,SAAS,0BAAyB,CAAC,OAKlB;AAAA,EACtB,OAAO,yBACL,sBAAqB;AAAA,IACnB,WAAW,MAAM;AAAA,IACjB,gBAAgB,MAAM;AAAA,IACtB,wBAAwB,MAAM;AAAA,EAChC,CAAC,GACD,MAAM,GACR;AAAA;AAIK,SAAS,kCAAiC,GAAW;AAAA,EAC1D,OAAO,WAAW;AAAA;AAGb,SAAS,2BAA0B,CAAC,OAAiD;AAAA,EAC1F,OAAO,iBACL,CAAC,GAAG,KAAK,EACN,KAAK,CAAC,MAAM,UAAU,iBAAgB,KAAK,KAAK,MAAM,GAAG,CAAC,EAC1D,IAAI,CAAC,UAAU;AAAA,IACd,KAAK,KAAK;AAAA,IACV,YAAY,KAAK,cAAc,CAAC;AAAA,IAChC,cAAc,KAAK;AAAA,EACrB,EAAE,CACN;AAAA;;;AC1GK,SAAS,yBAAyB,CAAC,OAMlB;AAAA,EACtB,IAAI,MAAM,UAAU,KAAK,EAAE,WAAW,GAAG;AAAA,IACvC,MAAM,IAAI,gCAA+B,2CAA2C;AAAA,EACtF;AAAA,EACA,IAAI,CAAC,MAAM,SAAS,UAAU;AAAA,IAC5B,MAAM,IAAI,gCAA+B,iDAAiD;AAAA,EAC5F;AAAA,EACA,IAAI,yBAAwB,MAAM,QAAQ,MAAM,MAAM,YAAY,kBAAkB;AAAA,IAClF,MAAM,IAAI,gCACR,sFACF;AAAA,EACF;AAAA,EACA,MAAM,eAAe,MAAM,gBAAgB,CAAC;AAAA,EAC5C,MAAM,0BAA0B,aAAa,2BAA2B;AAAA,EACxE,IAAI,CAAC,OAAO,cAAc,uBAAuB,KAAK,0BAA0B,GAAG;AAAA,IACjF,MAAM,IAAI,gCACR,4EACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,WAAW,MAAM;AAAA,IACjB,UAAU,MAAM;AAAA,IAChB,oBAAoB,MAAM;AAAA,IAC1B,SAAS,MAAM;AAAA,IACf,UAAU,+BAA+B,aAAa,QAAQ;AAAA,IAC9D,OAAO,aAAa,UAAU,MAAM,IAAI;AAAA,IACxC,mBAAmB,aAAa,qBAAqB;AAAA,IACrD;AAAA,OACI,aAAa,yBAAyB,YACtC,EAAE,sBAAsB,aAAa,qBAAqB,IAC1D,CAAC;AAAA,OACD,aAAa,sBAAsB,YACnC,EAAE,mBAAmB,aAAa,kBAAkB,IACpD,CAAC;AAAA,EACP;AAAA;;;AC9DF,eAAsB,kBAAkB,CACtC,SACA,UACA,aACA,UAA+B,QAAQ,SACD;AAAA,EACtC,MAAM,WAAW,MAAM,QAAQ,SAAS,QAAQ,oBAAoB;AAAA,IAClE,WAAW,QAAQ;AAAA,IACnB,gBAAgB,SAAS;AAAA,EAC3B,CAAC;AAAA,EACD,IAAI,CAAC;AAAA,IAAU,OAAO;AAAA,EACtB,IAAI,SAAS,gBAAgB,SAAS,aAAa;AAAA,IACjD,MAAM,IAAI,8BACR,eACA,oBAAoB,SAAS,mDAC/B;AAAA,EACF;AAAA,EACA,IAAI,SAAS,gBAAgB,aAAa;AAAA,IACxC,MAAM,IAAI,8BACR,eACA,oBAAoB,SAAS,yCAAyC,SAAS,sBAAsB,eACvG;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,eAAsB,YAErB,CACC,SACA,UACA,aACA,UAA+B,QAAQ,SACd;AAAA,EACzB,MAAM,WAAW,MAAM,mBAAmB,SAAS,UAAU,aAAa,OAAO;AAAA,EACjF,IAAI,CAAC;AAAA,IAAU,OAAO;AAAA,EACtB,OAAO,KAAK,gBAAgB,SAAS,MAAM,GAAG,SAAS,MAAM;AAAA;AAG/D,eAAsB,sBAAyB,CAC7C,SACA,KACY;AAAA,EACZ,SAAS,UAAU,IAAK,WAAW,GAAG;AAAA,IACpC,IAAI;AAAA,MACF,OAAO,MAAM,IAAI;AAAA,MACjB,OAAO,OAAO;AAAA,MACd,IAAI,CAAC,+BAA8B,KAAK,KAAK,WAAW,QAAQ,yBAAyB;AAAA,QACvF,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,uBAAuB,UAAU,GAAG,KAAK;AAAA;AAAA,EAErD;AAAA;;;ACvCK,SAAS,4BAA4B,CAC1C,WACA,OACuB;AAAA,EACvB,MAAM,gBAAgB,mCAAmC,WAAW,KAAK;AAAA,EAEzE,MAAM,OAAO;AAAA,IACX;AAAA,IACA,QAAQ,gCAAgC;AAAA,MACtC,WAAW,MAAM;AAAA,MACjB,sBAAsB,MAAM;AAAA,IAC9B,CAAC;AAAA,IACD,aAAa,MAAM,UAAU;AAAA,IAC7B,eAAe,MAAM,UAAU;AAAA,EACjC;AAAA,EACA,IAAI,cAAc,SAAS;AAAA,IAAa,OAAO;AAAA,EAC/C,OAAO,KAAK,MAAM,OAAO,cAAc,QAAQ,UAAU;AAAA;AAIpD,SAAS,2BAA2B,CACzC,YACA,WAC0B;AAAA,EAC1B,OAAO,uBAAsB,YAAY,UAAU,MAAM;AAAA;AAIpD,SAAS,8BAA8B,CAAC,WAAwC;AAAA,EACrF,IAAI,UAAU,MAAM,UAAU,SAAS,SAAS;AAAA,IAAU;AAAA,EAC1D,MAAM,IAAI,gCACR,qBAAqB,UAAU,0DACjC;AAAA;AAIK,SAAS,uCAAuC,CACrD,WACA,WAKM;AAAA,EACN,MAAM,WAAW,UAAU,MAAM,UAAU;AAAA,EAC3C,IACE,SAAS,SAAS,eAClB,SAAS,SAAS,UAAU,QAC5B,SAAS,OAAO,UAAU,MAC1B,SAAS,UAAU,UAAU,OAC7B;AAAA,IACA;AAAA,EACF;AAAA,EACA,MAAM,IAAI,8BACR,mBACA,cAAc,UAAU,6BAA6B,UAAU,aAAa,UAAU,SACxF;AAAA;AAIK,SAAS,8BAA8B,CAC5C,WACA,gBACA,OACM;AAAA,EACN,IAAI,mBAAmB,UAAU;AAAA,IAAa;AAAA,EAC9C,MAAM,IAAI,8BACR,mBACA,GAAG,+BAA+B,yBAAyB,UAAU,eACvE;AAAA;;;AChEK,SAAS,oCAAoC,CAClD,OACkC;AAAA,EAClC,MAAM,QAAQ,sBAAsB,OAAO,MAAM,MAAM;AAAA,EACvD,OAAO,aAAa,kBAAiB,MAAM,OAAO,GAAG,GAAG,KAAK;AAAA;AAG/D,SAAS,qBAAqB,CAC5B,SACA,QACmC;AAAA,EACnC,MAAM,OAAO,eAAe,OAAO;AAAA,EACnC,MAAM,eAAe,GAAG,OAAO,IAAI,gBAAgB,OAAO,IAAI;AAAA,EAE9D,IAAI,OAAO,SAAS,WAAW;AAAA,IAC7B,OAAO;AAAA,SACF;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP;AAAA,MACA,SAAS;AAAA,QACP,cAAc,OAAO,IAAI;AAAA,QACzB,WAAW,OAAO,IAAI;AAAA,QACtB,iBAAiB,OAAO;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,OAAO,gBAAgB,MAAM;AAAA,EACnC,OAAO;AAAA,OACF;AAAA,IACH;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA,SAAS;AAAA,MACP,cAAc,OAAO,IAAI;AAAA,MACzB,WAAW,OAAO,IAAI;AAAA,MACtB,YAAY,OAAO,MAAM;AAAA,MACzB,iBAAiB,OAAO;AAAA,IAC1B;AAAA,EACF;AAAA;AAGF,SAAS,eAAe,CACtB,QACqC;AAAA,EACrC,IAAI,OAAO,SAAS;AAAA,IAAW,OAAO;AAAA,EACtC,OAAO;AAAA;AAGF,SAAS,kCAAkC,CAChD,OACkC;AAAA,EAClC,MAAM,QAAQ,oBAAoB,OAAO,MAAM,MAAM;AAAA,EACrD,OAAO,aAAa,gBAAe,MAAM,OAAO,GAAG,GAAG,KAAK;AAAA;AAG7D,SAAS,mBAAmB,CAC1B,SACA,QACmC;AAAA,EACnC,MAAM,OAAO,eAAe,OAAO;AAAA,EACnC,MAAM,eAAe,GAAG,OAAO,IAAI,OAAO,gBAAgB,OAAO,IAAI,OAAO,aAAa,OAAO,IAAI;AAAA,EACpG,MAAM,gBAAgB;AAAA,IACpB,cAAc,OAAO,IAAI,OAAO;AAAA,IAChC,UAAU,OAAO,IAAI,OAAO;AAAA,IAC5B,QAAQ,OAAO,IAAI;AAAA,IACnB,cAAc,OAAO,IAAI,OAAO;AAAA,IAChC,UAAU,OAAO,IAAI,OAAO;AAAA,IAC5B,iBAAiB,OAAO;AAAA,EAC1B;AAAA,EAEA,IAAI,OAAO,SAAS,WAAW;AAAA,IAC7B,OAAO;AAAA,SACF;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP;AAAA,MACA,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EAEA,MAAM,OAAO,cAAc,MAAM;AAAA,EACjC,IAAI,OAAO,MAAM,eAAe,WAAW;AAAA,IACzC,OAAO,KAAK,MAAM,MAAM,OAAO,SAAS,cAAc,SAAS,cAAc;AAAA,EAC/E;AAAA,EACA,OAAO;AAAA,OACF;AAAA,IACH;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA,SAAS,KAAK,eAAe,YAAY,OAAO,MAAM,WAAW;AAAA,EACnE;AAAA;AAGF,SAAS,aAAa,CACpB,QACiC;AAAA,EACjC,IAAI,OAAO,SAAS;AAAA,IAAW,OAAO;AAAA,EACtC,OAAO;AAAA;AAGF,SAAS,uCAAuC,CACrD,OACkC;AAAA,EAClC,MAAM,QAAQ,yBAAyB,OAAO,MAAM,KAAK;AAAA,EACzD,OAAO,aAAa,uBAAsB,MAAM,MAAM,QAAQ,MAAM,MAAM,EAAE,GAAG,KAAK;AAAA;AAGtF,SAAS,wBAAwB,CAC/B,SACA,OACmC;AAAA,EACnC,MAAM,OAAO,eAAe,OAAO;AAAA,EACnC,MAAM,eAAe,GAAG,MAAM,OAAO,OAAO,gBAAgB,MAAM,OAAO,OAAO,aAAa,MAAM,OAAO;AAAA,EAC1G,MAAM,UAAU;AAAA,IACd,cAAc,MAAM,OAAO,OAAO;AAAA,IAClC,UAAU,MAAM,OAAO,OAAO;AAAA,IAC9B,YAAY,MAAM,OAAO;AAAA,IACzB,OAAO,MAAM;AAAA,IACb,IAAI,MAAM;AAAA,EACZ;AAAA,EACA,IAAI,MAAM,SAAS,WAAW;AAAA,IAC5B,OAAO,KAAK,MAAM,MAAM,sBAAsB,OAAO,aAAa,cAAc,QAAQ;AAAA,EAC1F;AAAA,EACA,OAAO;AAAA,OACF;AAAA,IACH,MAAM;AAAA,IACN,OAAO;AAAA,IACP;AAAA,IACA,SAAS,KAAK,SAAS,MAAM,MAAM,KAAK;AAAA,EAC1C;AAAA;AAGF,SAAS,cAAc,CAAC,SAA2C;AAAA,EACjE,MAAM,OAAO;AAAA,IACX,eAAe;AAAA,IACf,WAAW,QAAQ;AAAA,IACnB,YAAY,QAAQ;AAAA,IACpB,eAAe,QAAQ;AAAA,IACvB,QAAQ,QAAQ;AAAA,IAChB,UAAU,QAAQ;AAAA,EACpB;AAAA,EACA,IAAI,QAAQ,UAAU;AAAA,IAAW,OAAO;AAAA,EACxC,OAAO,KAAK,MAAM,OAAO,QAAQ,MAAM;AAAA;AAGzC,SAAS,YAAY,CACnB,SACA,OACkC;AAAA,EAClC,OAAO;AAAA,IACL,UAAU,iCAAgC,MAAM,IAAI;AAAA,IACpD;AAAA,IACA;AAAA,EACF;AAAA;AAGK,SAAS,4BAA4B,CAC1C,WACA,UACA,eACA,OAC8B;AAAA,EAC9B,MAAM,WAAW;AAAA,IACf,IAAI,eAAc,WAAW,UAAU,aAAa;AAAA,IACpD;AAAA,EACF;AAAA,EACA,OAAO,KAAK,UAAU,SAAS;AAAA;;;ACrM1B,SAAS,cAAc,CAAC,QAA4B;AAAA,EACzD,IAAI,QAAQ,SAAS;AAAA,IACnB,MAAM,OAAO,kBAAkB,QAC3B,OAAO,SACP,IAAI,aAAa,kCAAkC,YAAY;AAAA,EACrE;AAAA;;;ACLF,gBAAuB,WAAc,CACnC,OACA,OAK6B;AAAA,EAC7B,IAAI,QAAa,CAAC;AAAA,EAClB,IAAI,QAAQ;AAAA,EACZ,iBAAiB,QAAQ,OAAO;AAAA,IAC9B,MAAM,YAAY,MAAM,WAAW,IAAI;AAAA,IACvC,IAAI,MAAM,SAAS,KAAK,QAAQ,YAAY,MAAM,UAAU;AAAA,MAC1D,MAAM;AAAA,MACN,QAAQ,CAAC;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,IACA,MAAM,KAAK,IAAI;AAAA,IACf,SAAS;AAAA,IACT,IAAI,MAAM,UAAU,MAAM,WAAW,SAAS,MAAM,UAAU;AAAA,MAC5D,MAAM;AAAA,MACN,QAAQ,CAAC;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,IAAI,MAAM,SAAS;AAAA,IAAG,MAAM;AAAA;;;ACD9B,gBAAuB,UAAU,CAC/B,OACA,UACyC;AAAA,EACzC,iBAAiB,cAAc,YAAY,OAAO;AAAA,IAChD,SAAS,SAAS;AAAA,IAClB,UAAU,SAAS;AAAA,IACnB,YAAY;AAAA,EACd,CAAC,GAAG;AAAA,IACF,MAAM,QAAQ,aAAa;AAAA,IAC3B,WAAW,QAAQ;AAAA,MAAY,WAAW,OAAO,IAAI;AAAA,IACrD,MAAM;AAAA,EACR;AAAA;AA8BF,SAAS,YAAY,GAAiB;AAAA,EACpC,OAAO;AAAA,IACL,WAAW;AAAA,MACT,SAAS,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,EAAE;AAAA,MACpC,OAAO;AAAA,QACL,OAAO,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,EAAE;AAAA,QAClC,OAAO,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,EAAE;AAAA,MACpC;AAAA,IACF;AAAA,IACA,WAAW,EAAE,eAAe,CAAC,GAAG,eAAe,CAAC,GAAG,aAAa,CAAC,GAAG,aAAa,CAAC,EAAE;AAAA,IACpF,YAAY,EAAE,cAAc,CAAC,EAAE;AAAA,IAC/B,QAAQ,CAAC;AAAA,EACX;AAAA;AAGF,SAAS,UAAU,CAAC,OAAqB,MAAqC;AAAA,EAC5E,QAAQ,KAAK;AAAA,SACN;AAAA,MACH,MAAM,UAAU,QAAQ,QAAQ,KAAK,KAAK,KAAK;AAAA,MAC/C;AAAA,SACG;AAAA,MACH,MAAM,UAAU,QAAQ,QAAQ,KAAK,KAAK,KAAK;AAAA,MAC/C;AAAA,SACG;AAAA,MACH,MAAM,UAAU,MAAM,MAAM,QAAQ,KAAK,KAAK,KAAK;AAAA,MACnD;AAAA,SACG;AAAA,MACH,MAAM,UAAU,MAAM,MAAM,QAAQ,KAAK,KAAK,KAAK;AAAA,MACnD;AAAA,SACG;AAAA,MACH,MAAM,UAAU,MAAM,MAAM,QAAQ,KAAK,KAAK,KAAK;AAAA,MACnD;AAAA,SACG;AAAA,MACH,MAAM,UAAU,MAAM,MAAM,QAAQ,KAAK,KAAK,KAAK;AAAA,MACnD;AAAA,SACG;AAAA,MACH,MAAM,UAAU,cAAc,KAAK,KAAK,KAAK;AAAA,MAC7C;AAAA,SACG;AAAA,MACH,MAAM,UAAU,cAAc,KAAK,KAAK,KAAK;AAAA,MAC7C;AAAA,SACG;AAAA,MACH,MAAM,UAAU,YAAY,KAAK,KAAK,KAAK;AAAA,MAC3C;AAAA,SACG;AAAA,MACH,MAAM,UAAU,YAAY,KAAK,KAAK,KAAK;AAAA,MAC3C;AAAA,SACG;AAAA,MACH,MAAM,WAAW,aAAa,KAAK,KAAK,KAAK;AAAA,MAC7C;AAAA,SACG;AAAA,MACH,MAAM,OAAO,KAAK,KAAK,KAAK;AAAA,MAC5B;AAAA;AAAA;;;ACrGC,SAAS,wBAAwB,CACtC,OACA,SACA,UACM;AAAA,EACN,IACE,qBAAoB,QAAQ,kBAAkB,SAAS,IAAI,MACzD,qBAAoB,QAAQ,QAAQ,KACtC,qBAAoB,QAAQ,gBAAgB,MAAM,qBAAoB,QAAQ,QAAQ,GACtF;AAAA,IACA;AAAA,EACF;AAAA,EACA,IAAI,QAAQ,UAAU;AAAA,IACpB,MAAM,KAAK;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,QACL,KAAK,QAAQ;AAAA,QACb,OAAO,QAAQ;AAAA,QACf,UAAU,QAAQ;AAAA,QAClB,sBAAsB,QAAQ,kBAAkB,gBAAgB;AAAA,QAChE,cAAc,SAAS;AAAA,QACvB,WAAW,SAAS;AAAA,MACtB;AAAA,IACF,CAAC;AAAA,EACH,EAAO,SAAI,QAAQ,kBAAkB;AAAA,IACnC,MAAM,KAAK;AAAA,MACT,MAAM;AAAA,MACN,OAAO,EAAE,KAAK,QAAQ,KAAK,sBAAsB,QAAQ,iBAAiB,aAAa;AAAA,IACzF,CAAC;AAAA,EACH;AAAA;AAGK,SAAS,0BAA0B,CACxC,OACA,SACA,UACM;AAAA,EACN,IACE,qBAAoB,QAAQ,kBAAkB,SAAS,IAAI,MAC3D,qBAAoB,QAAQ,QAAQ,GACpC;AAAA,IACA;AAAA,EACF;AAAA,EACA,IAAI,QAAQ,UAAU;AAAA,IACpB,MAAM,KAAK;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,QACL,KAAK,QAAQ;AAAA,QACb,OAAO,QAAQ;AAAA,QACf,sBAAsB,QAAQ,kBAAkB,gBAAgB;AAAA,QAChE,cAAc,SAAS;AAAA,QACvB,WAAW,SAAS;AAAA,MACtB;AAAA,IACF,CAAC;AAAA,EACH,EAAO,SAAI,QAAQ,kBAAkB;AAAA,IACnC,MAAM,KAAK;AAAA,MACT,MAAM;AAAA,MACN,OAAO,EAAE,KAAK,QAAQ,KAAK,sBAAsB,QAAQ,iBAAiB,aAAa;AAAA,IACzF,CAAC;AAAA,EACH;AAAA;AAGK,SAAS,0BAA0B,CACxC,OACA,SACA,UACM;AAAA,EACN,IACE,qBAAoB,QAAQ,kBAAkB,SAAS,IAAI,MAC3D,qBAAoB,QAAQ,QAAQ,GACpC;AAAA,IACA;AAAA,EACF;AAAA,EACA,IAAI,QAAQ,UAAU;AAAA,IACpB,MAAM,KAAK;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,QACL,KAAK,QAAQ;AAAA,QACb,OAAO,QAAQ;AAAA,QACf,sBAAsB,QAAQ,kBAAkB,gBAAgB;AAAA,QAChE,cAAc,SAAS;AAAA,QACvB,WAAW,SAAS;AAAA,MACtB;AAAA,IACF,CAAC;AAAA,EACH,EAAO,SAAI,QAAQ,kBAAkB;AAAA,IACnC,MAAM,KAAK;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,QACL,KAAK,QAAQ;AAAA,QACb,sBAAsB,QAAQ,iBAAiB;AAAA,MACjD;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAGK,SAAS,yBAAyB,CACvC,OACA,QACM;AAAA,EACN,IAAI,OAAO,SAAS,WAAW;AAAA,IAC7B,MAAM,KAAK;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,QACL,KAAK,OAAO;AAAA,QACZ,UAAU,eAAe,OAAO,MAAM;AAAA,MACxC;AAAA,IACF,CAAC;AAAA,EACH,EAAO;AAAA,IACL,MAAM,KAAK;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,QACL,KAAK,OAAO;AAAA,QACZ,UAAU,OAAO,SACb,eAAe,OAAO,MAAM,IAC5B,EAAE,KAAK,OAAO,KAAK,QAAQ,MAAM;AAAA,MACvC;AAAA,IACF,CAAC;AAAA;AAAA;AAIE,SAAS,uBAAuB,CACrC,OACA,QACM;AAAA,EACN,IAAI,OAAO,SAAS,WAAW;AAAA,IAC7B,MAAM,KAAK;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,QACL,KAAK,OAAO;AAAA,QACZ,UAAU,aAAa,OAAO,MAAM;AAAA,MACtC;AAAA,IACF,CAAC;AAAA,EACH,EAAO;AAAA,IACL,MAAM,KAAK;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,QACL,KAAK,OAAO;AAAA,QACZ,UAAU,OAAO,SAAS,aAAa,OAAO,MAAM,IAAI,EAAE,KAAK,OAAO,KAAK,QAAQ,MAAM;AAAA,MAC3F;AAAA,IACF,CAAC;AAAA;AAAA;AAIE,SAAS,UAAU,CACxB,OACA,aACyB;AAAA,EACzB,MAAM,QAA6B;AAAA,IACjC,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,EACb;AAAA,EACA,OAAO,EAAE,MAAM,UAAU,MAAM;AAAA;AAG1B,SAAS,kBAAkB,CAChC,YACA,aACA,SACyC;AAAA,EACzC,OAAO;AAAA,IACL,MAAM;AAAA,IACN,WAAW,kBAAkB,cAAc;AAAA,IAC3C;AAAA,IACA;AAAA,EACF;AAAA;AAGK,SAAS,QAAQ,CACtB,MACA,SAC+B;AAAA,EAC/B,MAAM,aAAa,0BAA0B,KAAK,IAAI;AAAA,EACtD,OAAO;AAAA,IACL,MAAM;AAAA,IACN,WAAW,QAAQ,KAAK,QAAQ;AAAA,IAChC;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;AAGK,SAAS,SAAS,CAAC,OAAyE;AAAA,EACjG,OAAO;AAAA,IACL,MAAM;AAAA,IACN,WAAW,SAAS,MAAM,YAAY,MAAM;AAAA,IAC5C,eAAe,MAAM;AAAA,IACrB,SAAS,MAAM;AAAA,IACf,OAAO,MAAM;AAAA,EACf;AAAA;AAGF,SAAS,cAAc,CAAC,UAAwD;AAAA,EAC9E,OAAO;AAAA,IACL,KAAK,SAAS;AAAA,IACd,QAAQ;AAAA,IACR,SAAS,SAAS;AAAA,IAClB,cAAc,SAAS;AAAA,EACzB;AAAA;AAGF,SAAS,YAAY,CAAC,UAAsD;AAAA,EAC1E,OAAO,EAAE,KAAK,SAAS,KAAK,QAAQ,MAAe,cAAc,SAAS,aAAa;AAAA;;;ACxMzF,eAAsB,UAAU,CAC9B,SACA,SACA,SACA,OACA,QACe;AAAA,EACf,iBAAiB,SAAS,WAAW,OAAO,QAAQ,QAAQ,GAAG;AAAA,IAC7D,eAAe,MAAM;AAAA,IACrB,MAAM,QAAQ,WAAW,EAAE,SAAS,MAAM,CAAC;AAAA,EAC7C;AAAA;AAGF,eAAsB,gBAAgB,CACpC,SACA,SACA,SACA,SACe;AAAA,EACf,iBAAiB,SAAS,YAAY,SAAS;AAAA,IAC7C,SAAS,QAAQ,SAAS;AAAA,IAC1B,UAAU,QAAQ,SAAS;AAAA,IAC3B,YAAY;AAAA,EACd,CAAC,GAAG;AAAA,IACF,MAAM,QAAQ,UAAU,EAAE,SAAS,SAAS,MAAM,CAAC;AAAA,EACrD;AAAA;AAGF,eAAsB,eAAe,CACnC,SACA,SACA,SACA,QACe;AAAA,EACf,IAAI,QAAuB;AAAA,EAC3B,IAAI,UAAqC,CAAC;AAAA,EAC1C,MAAM,QAAQ,YAAY;AAAA,IACxB,IAAI,QAAQ,WAAW;AAAA,MAAG;AAAA,IAC1B,MAAM,WAAW,SAAS,SAAS,SAAS,SAAS,MAAM;AAAA,IAC3D,UAAU,CAAC;AAAA;AAAA,EAEb,iBAAiB,QAAQ,QAAQ,WAAW;AAAA,IAC1C;AAAA,IACA,OAAO;AAAA,IACP,UAAU,QAAQ,SAAS;AAAA,EAC7B,CAAC,GAAG;AAAA,IACF,WAAW,UAAU,KAAK,SAAS;AAAA,MACjC,IAAI,OAAO,SAAS,QAAQ;AAAA,QAC1B,MAAM,IAAI,gCAA+B,wCAAwC;AAAA,MACnF;AAAA,MACA,IAAI,UAAU,QAAQ,OAAO,eAAe;AAAA,QAAO,MAAM,MAAM;AAAA,MAC/D,QAAQ,OAAO;AAAA,MACf,QAAQ,KAAK,OAAO,IAAI;AAAA,MACxB,IAAI,QAAQ,UAAU,QAAQ,SAAS;AAAA,QAAe,MAAM,MAAM;AAAA,IACpE;AAAA,EACF;AAAA,EACA,MAAM,MAAM;AAAA;AAGd,eAAsB,yBAAyB,CAC7C,SACA,SACA,SACA,QACe;AAAA,EACf,IAAI,cAAgD;AAAA,EACpD,IAAI,eAA8B;AAAA,EAClC,IAAI,WAA0B;AAAA,EAC9B,iBAAiB,QAAQ,QAAQ,WAAW;AAAA,IAC1C;AAAA,IACA,OAAO;AAAA,IACP,UAAU,QAAQ,SAAS;AAAA,EAC7B,CAAC,GAAG;AAAA,IACF,eAAe,MAAM;AAAA,IACrB,WAAW,UAAU,KAAK,SAAS;AAAA,MACjC,IAAI,OAAO,SAAS,eAAe;AAAA,QACjC,MAAM,IAAI,gCACR,qDACF;AAAA,MACF;AAAA,MACA,IAAI,OAAO,SAAS,eAAe,OAAO,iBAAiB,cAAc;AAAA,QACvE,cAAc,OAAO;AAAA,QACrB,eAAe,OAAO;AAAA,QACtB,WAAW;AAAA,MACb;AAAA,MACA,IAAI,CAAC,OAAO;AAAA,QAAU;AAAA,MACtB,IAAI,YAAY,aAAa,OAAO,aAAa;AAAA,QAC/C,MAAM,IAAI,gCACR,OAAO,SAAS,cACZ,4BAA4B,OAAO,IAAI,OAAO,gBAAgB,OAAO,IAAI,iCACzE,eAAe,OAAO,IAAI,OAAO,gBAAgB,OAAO,IAAI,8BAClE;AAAA,MACF;AAAA,MACA,WAAW,OAAO;AAAA,IACpB;AAAA,EACF;AAAA;AAGF,eAAsB,iBAAiB,CACrC,SACA,SACA,SACA,UACA,QACiB;AAAA,EACjB,IAAI,UAAU;AAAA,EACd,iBAAiB,QAAQ,QAAQ,WAAW;AAAA,IAC1C;AAAA,IACA,OAAO;AAAA,IACP,UAAU,QAAQ,SAAS;AAAA,EAC7B,CAAC,GAAG;AAAA,IACF,MAAM,QAAmC,CAAC;AAAA,IAC1C,WAAW,UAAU,KAAK,SAAS;AAAA,MACjC,IAAI,OAAO,SAAS,SAAS;AAAA,QAC3B,MAAM,IAAI,gCAA+B,yCAAyC;AAAA,MACpF;AAAA,MACA,MAAM,QAAQ,6BACZ,QAAQ,WACR,SAAS,UACT,WACA,OAAO,KACT;AAAA,MACA,MAAM,KAAK,WAAW,OAAO,SAAS,WAAW,CAAC;AAAA,IACpD;AAAA,IACA,MAAM,WAAW,SAAS,SAAS,SAAS,OAAO,MAAM;AAAA,EAC3D;AAAA,EACA,OAAO;AAAA;;;ACpHF,SAAS,wBAAuB,CACrC,YACA,QAAQ,cACkD;AAAA,EAC1D,IAAI,OAAO,eAAe,YAAY,eAAe,QAAQ,MAAM,QAAQ,UAAU,GAAG;AAAA,IACtF,MAAM,IAAI,gCAA+B,GAAG,8BAA8B;AAAA,EAC5E;AAAA,EAEA,MAAM,aAA6D,CAAC;AAAA,EACpE,WAAW,cAAc,OAAO,KAAK,UAAU,EAAE,KAAK,cAAc,GAAG;AAAA,IACrE,IAAI,WAAW,KAAK,EAAE,WAAW,GAAG;AAAA,MAClC,MAAM,IAAI,gCAA+B,GAAG,qCAAqC;AAAA,IACnF;AAAA,IACA,MAAM,QAAQ,WAAW;AAAA,IACzB,IAAI;AAAA,MACF,iBAAgB,OAAO,GAAG,SAAS,YAAY;AAAA,MAC/C,OAAO,OAAO;AAAA,MACd,MAAM,IAAI,gCACR,iBAAiB,QAAQ,MAAM,UAAU,GAAG,SAAS,0BACvD;AAAA;AAAA,IAEF,WAAW,cAAc,gBAAe,KAAK;AAAA,EAC/C;AAAA,EACA,OAAO,OAAO,OAAO,UAAU;AAAA;AAGjC,SAAS,iBAAiB,CAAC,OAAe,OAAuB;AAAA,EAC/D,IAAI,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,WAAW,GAAG;AAAA,IAC1D,MAAM,IAAI,gCAA+B,GAAG,kCAAkC;AAAA,EAChF;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,kBAAkB,CAAC,OAAe,OAAuB;AAAA,EAChE,MAAM,eAAe,KAAK,MAAM,KAAK;AAAA,EACrC,IAAI,CAAC,OAAO,SAAS,YAAY,GAAG;AAAA,IAClC,MAAM,IAAI,gCAA+B,GAAG,kCAAkC;AAAA,EAChF;AAAA,EACA,OAAO,IAAI,KAAK,YAAY,EAAE,YAAY;AAAA;AAG5C,SAAS,kCAAkC,CAAC,OAAuB;AAAA,EACjE,MAAM,YAAY,uBAAsB,KAAK;AAAA,EAC7C,IAAI,CAAC,WAAW;AAAA,IACd,MAAM,IAAI,gCACR,+DACF;AAAA,EACF;AAAA,EACA,OAAO,UAAU,YAAY;AAAA;AAG/B,SAAS,oBAAoB,CAAC,QAA2B,OAAkC;AAAA,EACzF,MAAM,OAAO,IAAI;AAAA,EACjB,MAAM,aAAuB,CAAC;AAAA,EAC9B,WAAW,SAAS,QAAQ;AAAA,IAC1B,kBAAkB,OAAO,KAAK;AAAA,IAC9B,IAAI,KAAK,IAAI,KAAK,GAAG;AAAA,MACnB,MAAM,IAAI,gCAA+B,GAAG,6BAA6B,SAAS;AAAA,IACpF;AAAA,IACA,KAAK,IAAI,KAAK;AAAA,IACd,WAAW,KAAK,KAAK;AAAA,EACvB;AAAA,EACA,OAAO,OAAO,OAAO,WAAW,KAAK,cAAc,CAAC;AAAA;AAGtD,SAAS,kBAAkB,CAAC,WAAyD;AAAA,EACnF,kBAAkB,UAAU,IAAI,cAAc;AAAA,EAC9C,IAAI,UAAU,SAAS,mBAAmB,UAAU,SAAS,iBAAiB;AAAA,IAC5E,OAAO,OAAO,OAAO;AAAA,MACnB,IAAI,UAAU;AAAA,MACd,MAAM,UAAU;AAAA,MAChB,KAAK,oBAAmB,UAAU,GAAG;AAAA,MACrC,YAAY,yBAAwB,UAAU,UAAU;AAAA,IAC1D,CAAC;AAAA,EACH;AAAA,EACA,IAAI,UAAU,SAAS,gBAAgB;AAAA,IACrC,MAAM,MAAM,yBAAwB,UAAU,KAAK,cAAc,UAAU,SAAS;AAAA,IACpF,MAAM,QAAQ,qBAAqB,UAAU,OAAO,cAAc,UAAU,WAAW;AAAA,IACvF,MAAM,QAAQ,qBAAqB,UAAU,OAAO,cAAc,UAAU,WAAW;AAAA,IACvF,MAAM,SAAS,IAAI,IAAI,OAAO,KAAK,GAAG,CAAC;AAAA,IACvC,WAAW,cAAc,CAAC,GAAG,OAAO,GAAG,KAAK,GAAG;AAAA,MAC7C,IAAI,OAAO,IAAI,UAAU,GAAG;AAAA,QAC1B,MAAM,IAAI,gCACR,cAAc,UAAU,iBAAiB,6CAC3C;AAAA,MACF;AAAA,IACF;AAAA,IACA,WAAW,cAAc,OAAO;AAAA,MAC9B,IAAI,MAAM,SAAS,UAAU,GAAG;AAAA,QAC9B,MAAM,IAAI,gCACR,cAAc,UAAU,iBAAiB,yCAC3C;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO,OAAO,OAAO;AAAA,MACnB,IAAI,UAAU;AAAA,MACd,MAAM,UAAU;AAAA,MAChB,KAAK,oBAAmB,UAAU,GAAG;AAAA,MACrC;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,IAAI,UAAU,SAAS,mBAAmB,UAAU,SAAS,kBAAkB;AAAA,IAC7E,OAAO,OAAO,OAAO;AAAA,MACnB,IAAI,UAAU;AAAA,MACd,MAAM,UAAU;AAAA,MAChB,KAAK,oBAAmB,UAAU,GAAG;AAAA,IACvC,CAAC;AAAA,EACH;AAAA,EACA,IAAI,UAAU,SAAS,eAAe;AAAA,IACpC,OAAO,OAAO,OAAO;AAAA,MACnB,IAAI,UAAU;AAAA,MACd,MAAM,UAAU;AAAA,MAChB,KAAK,kBAAiB,UAAU,GAAG;AAAA,SAC/B,UAAU,eAAe,YACzB,EAAE,YAAY,yBAAwB,UAAU,UAAU,EAAE,IAC5D,CAAC;AAAA,IACP,CAAC;AAAA,EACH;AAAA,EACA,IAAI,UAAU,SAAS,iBAAiB,UAAU,SAAS,cAAc;AAAA,IACvE,OAAO,OAAO,OAAO;AAAA,MACnB,IAAI,UAAU;AAAA,MACd,MAAM,UAAU;AAAA,MAChB,KAAK,kBAAiB,UAAU,GAAG;AAAA,IACrC,CAAC;AAAA,EACH;AAAA,EACA,MAAM,IAAI,gCAA+B,uCAAuC;AAAA;AAGlF,SAAS,uBAA0B,CACjC,QACA,OACA,OACc;AAAA,EACd,MAAM,QAAQ,IAAI;AAAA,EAClB,WAAW,SAAS,QAAQ;AAAA,IAC1B,MAAM,MAAM,MAAM,KAAK;AAAA,IACvB,MAAM,WAAW,MAAM,IAAI,GAAG;AAAA,IAC9B,IAAI,YAAY,qBAAoB,QAAQ,MAAM,qBAAoB,KAAK,GAAG;AAAA,MAC5E,MAAM,IAAI,gCAA+B,GAAG,sCAAsC,MAAM;AAAA,IAC1F;AAAA,IACA,MAAM,IAAI,KAAK,KAAK;AAAA,EACtB;AAAA,EACA,OAAO,OAAO,OACZ,CAAC,GAAG,MAAM,QAAQ,CAAC,EAChB,KAAK,EAAE,QAAQ,WAAW,eAAe,MAAM,KAAK,CAAC,EACrD,IAAI,IAAI,WAAW,KAAK,CAC7B;AAAA;AAGF,SAAS,uBAAuB,CAAC,OAAuD;AAAA,EACtF,MAAM,MAAM,oBAAmB,MAAM,GAAG;AAAA,EACxC,IAAI,CAAC,MAAM;AAAA,IAAQ,OAAO,OAAO,OAAO,EAAE,KAAK,QAAQ,MAAM,CAAC;AAAA,EAC9D,IAAI,CAAC,OAAO,cAAc,MAAM,OAAO,KAAK,MAAM,UAAU,GAAG;AAAA,IAC7D,MAAM,IAAI,gCAA+B,qDAAqD;AAAA,EAChG;AAAA,EACA,OAAO,OAAO,OAAO;AAAA,IACnB;AAAA,IACA,QAAQ;AAAA,IACR,SAAS,MAAM;AAAA,IACf,cAAc,kBAAkB,MAAM,cAAc,8BAA8B;AAAA,EACpF,CAAC;AAAA;AAGH,SAAS,qBAAqB,CAAC,OAAmD;AAAA,EAChF,MAAM,MAAM,kBAAiB,MAAM,GAAG;AAAA,EACtC,IAAI,CAAC,MAAM;AAAA,IAAQ,OAAO,OAAO,OAAO,EAAE,KAAK,QAAQ,MAAM,CAAC;AAAA,EAC9D,OAAO,OAAO,OAAO;AAAA,IACnB;AAAA,IACA,QAAQ;AAAA,IACR,cAAc,kBAAkB,MAAM,cAAc,4BAA4B;AAAA,EAClF,CAAC;AAAA;AAGH,SAAS,0BAA0B,CAAC,OAA6D;AAAA,EAC/F,OAAO,OAAO,OAAO;AAAA,IACnB,QAAQ,oBAAmB,MAAM,MAAM;AAAA,IACvC,QAAQ,kBAAkB,MAAM,QAAQ,6BAA6B;AAAA,IACrE,aAAa,kBAAkB,MAAM,aAAa,iCAAiC;AAAA,EACrF,CAAC;AAAA;AASH,SAAS,wBAAwB,CAC/B,QACA,cACgC;AAAA,EAChC,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,aAAa,OAAO,IAAI,CAAC,UAAU;AAAA,IACvC,IAAI,MAAM,SAAS,GAAG;AAAA,MACpB,MAAM,IAAI,gCACR,wDACF;AAAA,IACF;AAAA,IAEA,MAAM,YAAY,MAAM,IAAI,CAAC,OAAO;AAAA,MAClC,MAAM,WAAW,aAAa,IAAI,EAAE;AAAA,MACpC,IAAI,aAAa,WAAW;AAAA,QAC1B,MAAM,IAAI,gCACR,oDAAoD,MACtD;AAAA,MACF;AAAA,MACA,IAAI,QAAQ,IAAI,EAAE,GAAG;AAAA,QACnB,MAAM,IAAI,gCACR,iBAAiB,+CACnB;AAAA,MACF;AAAA,MACA,QAAQ,IAAI,EAAE;AAAA,MACd,OAAO;AAAA,KACR;AAAA,IAED,MAAM,QAAQ,UAAU;AAAA,IACxB,IAAI,UAAU,KAAK,CAAC,UAAU,UAAU,aAAa,QAAQ,KAAK,GAAG;AAAA,MACnE,MAAM,IAAI,gCACR,iEACF;AAAA,IACF;AAAA,IACA,OAAO,EAAE,OAAO,KAAK,OAAO,OAAO,CAAC,GAAG,KAAK,CAAC,EAAE;AAAA,GAChD;AAAA,EAED,WAAW,KAAK,CAAC,MAAM,UAAU,KAAK,QAAQ,MAAM,KAAK;AAAA,EACzD,OAAO,OAAO,OAAO,WAAW,IAAI,GAAG,UAAU,GAAG,CAAC;AAAA;AAGhD,SAAS,4BAA2B,CAAC,OAA+C;AAAA,EACzF,MAAM,eAAe,IAAI;AAAA,EACzB,MAAM,aAAa,MAAM,WAAW,IAAI,CAAC,WAAW,UAAU;AAAA,IAC5D,MAAM,aAAa,mBAAmB,SAAS;AAAA,IAC/C,IAAI,aAAa,IAAI,WAAW,EAAE,GAAG;AAAA,MACnC,MAAM,IAAI,gCAA+B,2BAA2B,WAAW,MAAM;AAAA,IACvF;AAAA,IACA,aAAa,IAAI,WAAW,IAAI,KAAK;AAAA,IACrC,OAAO;AAAA,GACR;AAAA,EAED,IAAI,MAAM,SAAS,YAAY;AAAA,IAC7B,OAAO,OAAO,OAAO;AAAA,MACnB,MAAM;AAAA,MACN,QAAQ,OAAO,OAAO;AAAA,QACpB,MAAM;AAAA,QACN,WAAW,kBAAkB,MAAM,OAAO,WAAW,oBAAoB;AAAA,MAC3E,CAAC;AAAA,MACD,YAAY,OAAO,OAAO,UAAU;AAAA,SAChC,MAAM,oBAAoB,YAC1B,EAAE,iBAAiB,yBAAyB,MAAM,iBAAiB,YAAY,EAAE,IACjF,CAAC;AAAA,IACP,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,SACJ,MAAM,OAAO,SAAS,WAClB,OAAO,OAAO;AAAA,IACZ,MAAM;AAAA,IACN,UAAU,kBAAkB,MAAM,OAAO,UAAU,WAAW;AAAA,IAC9D,OAAO,kBAAkB,MAAM,OAAO,OAAO,eAAe;AAAA,EAC9D,CAAC,IACD,OAAO,OAAO;AAAA,IACZ,MAAM;AAAA,IACN,WAAW,kBAAkB,MAAM,OAAO,WAAW,oBAAoB;AAAA,EAC3E,CAAC;AAAA,EACP,MAAM,kBAAkB,MAAM,gBAAgB,IAAI,uBAAuB;AAAA,EACzE,MAAM,gBAAgB,MAAM,cAAc,IAAI,qBAAqB;AAAA,EACnE,MAAM,qBAAqB,MAAM,mBAAmB,IAAI,0BAA0B;AAAA,EAElF,OAAO,OAAO,OAAO;AAAA,IACnB,MAAM;AAAA,IACN;AAAA,IACA,YAAY,OAAO,OAAO,UAAU;AAAA,IACpC,iBAAiB,wBACf,iBACA,CAAC,UAAU,cAAa,MAAM,GAAG,GACjC,kBACF;AAAA,IACA,eAAe,wBACb,eACA,CAAC,UAAU,YAAW,MAAM,GAAG,GAC/B,gBACF;AAAA,IACA,oBAAoB,wBAClB,oBACA,CAAC,UAAU,aAAa,MAAM,QAAQ,MAAM,MAAM,GAClD,sBACF;AAAA,EACF,CAAC;AAAA;AAGI,SAAS,4BAA4B,CAAC,QAAkD;AAAA,EAC7F,OAAO,OAAO,OAAO;AAAA,IACnB,cAAc,kBAAkB,OAAO,cAAc,eAAe;AAAA,EACtE,CAAC;AAAA;AAGI,SAAS,6BAA6B,CAAC,SAAqD;AAAA,EACjG,OAAO,OAAO,OAAO;AAAA,IACnB,WAAW,kBAAkB,QAAQ,WAAW,YAAY;AAAA,IAC5D,WAAW,kBAAkB,QAAQ,WAAW,oBAAoB;AAAA,IACpE,WAAW,mBAAmB,QAAQ,WAAW,2BAA2B;AAAA,EAC9E,CAAC;AAAA;AAGI,SAAS,wBAAwB,CAAC,OAAuB;AAAA,EAC9D,OAAO,kBAAkB,OAAO,mBAAmB;AAAA;AAG9C,SAAS,6BAA4B,CAAC,OAAiD;AAAA,EAC5F,OAAO,OAAO,OAAO;AAAA,IACnB,iBAAiB,yBAAyB,MAAM,eAAe;AAAA,IAC/D,gBAAgB,kBAAkB,MAAM,gBAAgB,4BAA4B;AAAA,EACtF,CAAC;AAAA;AAGH,SAAS,yBAAyB,CAAC,QAAkD;AAAA,EACnF,OAAO,OAAO,SAAS,WACnB,OAAO,OAAO,EAAE,MAAM,UAAU,KAAK,oBAAmB,OAAO,GAAG,EAAE,CAAC,IACrE,OAAO,OAAO,EAAE,MAAM,QAAQ,KAAK,kBAAiB,OAAO,GAAG,EAAE,CAAC;AAAA;AAGvE,SAAS,4BAA4B,CACnC,WAC2B;AAAA,EAC3B,OAAO,UAAU,SAAS,WACtB,OAAO,OAAO;AAAA,IACZ,MAAM;AAAA,IACN,KAAK,oBAAmB,UAAU,GAAG;AAAA,IACrC,YAAY,yBAAwB,UAAU,UAAU;AAAA,OACpD,UAAU,oBAAoB,YAC9B;AAAA,MACE,iBAAiB,mCAAmC,UAAU,eAAe;AAAA,IAC/E,IACA,CAAC;AAAA,EACP,CAAC,IACD,OAAO,OAAO;AAAA,IACZ,MAAM;AAAA,IACN,KAAK,kBAAiB,UAAU,GAAG;AAAA,OAC/B,UAAU,eAAe,YACzB,EAAE,YAAY,yBAAwB,UAAU,UAAU,EAAE,IAC5D,CAAC;AAAA,EACP,CAAC;AAAA;AAGA,SAAS,+BAA8B,CAC5C,OACuB;AAAA,EACvB,MAAM,OAAO,0BAA0B,MAAM,IAAI;AAAA,EACjD,MAAM,OAAO,IAAI;AAAA,EACjB,MAAM,aAAa,MAAM,WAAW,IAAI,CAAC,cAAc;AAAA,IACrD,MAAM,aAAa,6BAA6B,SAAS;AAAA,IACzD,MAAM,MAAM,qBAAoB,UAAU;AAAA,IAC1C,IAAI,KAAK,IAAI,GAAG,GAAG;AAAA,MACjB,MAAM,IAAI,gCAA+B,4CAA4C,MAAM;AAAA,IAC7F;AAAA,IACA,KAAK,IAAI,GAAG;AAAA,IACZ,OAAO;AAAA,GACR;AAAA,EACD,MAAM,UAAU,qBAAoB,IAAI;AAAA,EACxC,IAAI,CAAC,KAAK,IAAI,OAAO,GAAG;AAAA,IACtB,MAAM,IAAI,gCACR,4DAA4D,UAC9D;AAAA,EACF;AAAA,EACA,IAAI,KAAK,SAAS,UAAU;AAAA,IAC1B,MAAM,mBAAmB,WAAW,OAAO,CAAC,cAAc,UAAU,SAAS,QAAQ;AAAA,IACrF,IAAI,iBAAiB,WAAW,KAAK,qBAAoB,iBAAiB,EAAE,MAAM,SAAS;AAAA,MACzF,MAAM,IAAI,gCACR,0FACF;AAAA,IACF;AAAA,IACA,WAAW,aAAa,YAAY;AAAA,MAClC,IACE,UAAU,SAAS,UACnB,cAAa,UAAU,IAAI,MAAM,MAAM,cAAa,KAAK,GAAG,GAC5D;AAAA,QACA,MAAM,IAAI,gCACR,0EACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,EAAO,SACL,WAAW,WAAW,KACtB,WAAW,GAAG,SAAS,UACvB,qBAAoB,WAAW,EAAE,MAAM,SACvC;AAAA,IACA,MAAM,IAAI,gCACR,0EACF;AAAA,EACF;AAAA,EACA,OAAO,OAAO,OAAO;AAAA,IACnB;AAAA,IACA,YAAY,OAAO,OACjB,WAAW,KAAK,CAAC,MAAM,UACrB,eAAe,qBAAoB,IAAI,GAAG,qBAAoB,KAAK,CAAC,CACtE,CACF;AAAA,EACF,CAAC;AAAA;AAGH,SAAS,wBAAwB,CAAC,QAAgD;AAAA,EAChF,OAAO,OAAO,OAAO;AAAA,IACnB,QAAQ,oBAAmB,OAAO,MAAM;AAAA,IACxC,YAAY,kBAAkB,OAAO,YAAY,uBAAuB;AAAA,EAC1E,CAAC;AAAA;AAGH,SAAS,uBAAuB,CAAC,OAAiD;AAAA,EAChF,IAAI;AAAA,IACF,iBAAgB,MAAM,OAAO,uBAAuB;AAAA,IACpD,OAAO,OAAO;AAAA,IACd,MAAM,IAAI,gCACR,iBAAiB,QAAQ,MAAM,UAAU,qCAC3C;AAAA;AAAA,EAEF,OAAO,OAAO,OAAO;AAAA,IACnB,QAAQ,yBAAyB,MAAM,MAAM;AAAA,IAC7C,OAAO,gBAAe,MAAM,KAAK;AAAA,OAC7B,MAAM,SAAS,YACf,EAAE,MAAM,kBAAkB,MAAM,MAAM,sBAAsB,EAAE,IAC9D,CAAC;AAAA,IACL,IAAI,mBAAmB,MAAM,IAAI,2BAA2B;AAAA,EAC9D,CAAC;AAAA;AAGI,SAAS,yBAAwB,CAAC,OAAyC;AAAA,EAChF,MAAM,cAAc,IAAI;AAAA,EACxB,WAAW,SAAS,MAAM,QAAQ;AAAA,IAChC,MAAM,aAAa,wBAAwB,KAAK;AAAA,IAChD,MAAM,MAAM,mBAAkB,WAAW,QAAQ,WAAW,EAAE;AAAA,IAC9D,MAAM,WAAW,YAAY,IAAI,GAAG;AAAA,IACpC,IACE,MAAM,OAAO,SAAS,aACtB,YACA,qBAAoB,QAAQ,MAAM,qBAAoB,UAAU,GAChE;AAAA,MACA,MAAM,IAAI,gCAA+B,oCAAoC,MAAM;AAAA,IACrF;AAAA,IAGA,YAAY,IAAI,KAAK,UAAU;AAAA,EACjC;AAAA,EACA,MAAM,SAAS,CAAC,GAAG,YAAY,QAAQ,CAAC,EACrC,KAAK,EAAE,QAAQ,WAAW,eAAe,MAAM,KAAK,CAAC,EACrD,IAAI,IAAI,WAAW,KAAK;AAAA,EAC3B,MAAM,SACJ,MAAM,OAAO,SAAS,YAClB,OAAO,OAAO;AAAA,IACZ,MAAM;AAAA,IACN,WAAW,kBAAkB,MAAM,OAAO,WAAW,oBAAoB;AAAA,EAC3E,CAAC,IACD,OAAO,OAAO;AAAA,IACZ,MAAM;AAAA,IACN,YAAY,6BAA6B,MAAM,OAAO,UAAU;AAAA,IAChE,gBAAgB,8BAA8B,MAAM,OAAO,cAAc;AAAA,IACzE,WAAW,8BAA6B,MAAM,OAAO,SAAS;AAAA,IAC9D,cAAc,MAAM,OAAO;AAAA,IAC3B,gBAAgB,MAAM,OAAO;AAAA,IAC7B,mBAAmB,MAAM,OAAO;AAAA,IAChC,gBAAgB,MAAM,OAAO;AAAA,EAC/B,CAAC;AAAA,EACP,IAAI,OAAO,SAAS,cAAc;AAAA,IAChC,IAAI,CAAC,OAAO,cAAc,OAAO,YAAY,KAAK,OAAO,eAAe,GAAG;AAAA,MACzE,MAAM,IAAI,gCACR,wEACF;AAAA,IACF;AAAA,IACA,IAAI,CAAC,OAAO,cAAc,OAAO,cAAc,KAAK,OAAO,iBAAiB,GAAG;AAAA,MAC7E,MAAM,IAAI,gCACR,yEACF;AAAA,IACF;AAAA,IACA,IAAI,CAAC,OAAO,cAAc,OAAO,iBAAiB,KAAK,OAAO,oBAAoB,GAAG;AAAA,MACnF,MAAM,IAAI,gCACR,4EACF;AAAA,IACF;AAAA,IACA,IAAI,OAAO,oBAAoB,OAAO,gBAAgB;AAAA,MACpD,MAAM,IAAI,gCACR,sEACF;AAAA,IACF;AAAA,IACA,IAAI,OAAO,OAAO,mBAAmB,WAAW;AAAA,MAC9C,MAAM,IAAI,gCACR,wDACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO,OAAO,OAAO;AAAA,IACnB;AAAA,IACA,QAAQ,OAAO,OAAO,MAAM;AAAA,EAC9B,CAAC;AAAA;;;ACngBI,SAAS,yBAAyB,CAAC,OAGT;AAAA,EAC/B,MAAM,iBAAiB,IAAI,KACxB,MAAM,mBAAmB,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAK,IAAI,IAAI,GAAG,CAAC,CAAU,CAC7E;AAAA,EACA,MAAM,QAA6B,CAAC;AAAA,EAEpC,SAAS,QAAQ,EAAG,QAAQ,MAAM,WAAW,UAAU;AAAA,IACrD,MAAM,YAAY,MAAM,WAAW;AAAA,IACnC,MAAM,WAAW,eAAe,IAAI,UAAU,EAAE;AAAA,IAChD,IAAI,CAAC,UAAU;AAAA,MACb,MAAM,KAAK,EAAE,MAAM,UAAU,UAAU,CAAC;AAAA,MACxC,SAAS;AAAA,MACT;AAAA,IACF;AAAA,IAEA,MAAM,aAAa,MAAM,WAAW,MAAM,OAAO,QAAQ,SAAS,IAAI;AAAA,IACtE,MAAM,KAAK,EAAE,MAAM,gBAAgB,WAAW,CAAC;AAAA,IAC/C,SAAS,WAAW;AAAA,EACtB;AAAA,EAEA,OAAO;AAAA;;;ACXT,gBAAuB,eAAe,CACpC,SACiD;AAAA,EACjD,MAAM;AAAA;AAGR,eAAsB,SAAS,CAC7B,SACA,SACA,SACA,SACmC;AAAA,EACnC,MAAM,SAA2B,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,GAAG,YAAY,CAAC,GAAG,QAAQ,CAAC,EAAE;AAAA,EACtF,iBAAiB,QAAQ,QAAQ,YAAY;AAAA,IAC3C;AAAA,IACA,UAAU,gBAAgB,OAAO;AAAA,IACjC,UAAU,QAAQ,SAAS;AAAA,EAC7B,CAAC,GAAG;AAAA,IACF,OAAO,QAAQ,KAAK,GAAG,KAAK,OAAO;AAAA,IACnC,OAAO,MAAM,KAAK,GAAG,KAAK,KAAK;AAAA,IAC/B,OAAO,WAAW,KAAK,GAAG,KAAK,UAAU;AAAA,IACzC,OAAO,OAAO,KAAK,GAAG,KAAK,MAAM;AAAA,EACnC;AAAA,EACA,OAAO;AAAA;;;ACbF,SAAS,sBAAsB,CACpC,QACyB;AAAA,EACzB,IAAI,CAAC;AAAA,IAAQ,OAAO;AAAA,EACpB,IAAI,OAAO,MAAM,SAAS;AAAA,IAAmB,OAAO,OAAO;AAAA,EAC3D,QAAQ,QAAQ,WAAW,OAAO;AAAA,EAClC,MAAM,aAAa,KAAK,UAAU,CAAC,OAAO,cAAc,OAAO,WAAW,MAAM,CAAC;AAAA,EACjF,MAAM,IAAI,8BACR,mBACA,6BAA6B,+DAC3B,2FACA,gEACJ;AAAA;AAGK,SAAS,sBAAsB,CAAC,OAOR;AAAA,EAC7B,MAAM,aAAa,uBAAuB,MAAM,QAAQ,MAAM,UAAU,MAAM,QAAQ;AAAA,EACtF,IAAI,CAAC;AAAA,IAAY,OAAO;AAAA,EAExB,WAAW,MAAM,qBAAqB,MAAM,IAAI;AAAA,EAChD,qBAAqB,YAAY,MAAM,eAAe;AAAA,EACtD,OAAO,EAAE,KAAK,MAAM,KAAK,WAAW;AAAA;AAGtC,SAAS,sBAAsB,CAC7B,QACA,UACA,UACkC;AAAA,EAClC,QAAQ,UAAU;AAAA,SACX;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,IAAI,CAAC;AAAA,QAAQ,OAAO,KAAK,SAAS,WAAW;AAAA,MAC7C,OAAO,sBAAsB,QAAQ,UAAU,QAAQ;AAAA,SACpD;AAAA,MACH,IAAI,CAAC;AAAA,QAAQ,OAAO;AAAA,MACpB,OAAO,sBAAsB,QAAQ,UAAU,QAAQ;AAAA;AAAA,MAEvD,IAAI,CAAC;AAAA,QAAQ,OAAO;AAAA,MACpB,OAAO,KAAK,OAAO,UAAU,WAAW;AAAA;AAAA;AAI9C,SAAS,qBAAqB,CAC5B,QACA,UACA,UAC2B;AAAA,EAC3B,MAAM,aAAa,KAAK,OAAO,UAAU,WAAW;AAAA,EACpD,MAAM,0BAA0B,IAAI,IAAI,OAAO,UAAU,2BAA2B,CAAC,CAAC;AAAA,EAEtF,WAAW,cAAc,uBAAuB,UAAU,QAAQ,GAAG;AAAA,IACnE,MAAM,OAAO,oBAAoB,UAAU,UAAU;AAAA,IACrD,MAAM,gBAAgB,SAAS;AAAA,IAC/B,MAAM,qBACJ,OAAO,OAAO,OAAO,UAAU,YAAY,UAAU,KACrD,wBAAwB,IAAI,UAAU;AAAA,IACxC,MAAM,aACJ,sBACA,OAAO,UAAU,oBAAoB,aACrC,kBAAkB,aAClB,OAAO,UAAU,gBAAgB,cAAc,aAAa,KAAK;AAAA,IAEnE,IAAI,CAAC;AAAA,MAAY,yBAAyB,YAAY,YAAY,IAAI;AAAA,EACxE;AAAA,EACA,OAAO;AAAA;AAQT,SAAS,sBAAsB,CAC7B,UACA,UACU;AAAA,EACV,MAAM,MAAM,IAAI,IAAI,OAAO,KAAK,QAAQ,CAAC;AAAA,EACzC,IAAI,SAAS,SAAS,UAAU;AAAA,IAC9B,WAAW,cAAc,OAAO,KAAK,SAAS,UAAU;AAAA,MAAG,IAAI,IAAI,UAAU;AAAA,EAC/E,EAAO;AAAA,IACL,WAAW,cAAc,OAAO,KAAK,SAAS,GAAG;AAAA,MAAG,IAAI,IAAI,UAAU;AAAA,IACtE,WAAW,cAAc,SAAS;AAAA,MAAO,IAAI,IAAI,UAAU;AAAA;AAAA,EAE7D,OAAO,CAAC,GAAG,GAAG;AAAA;AAGhB,SAAS,mBAAmB,CAC1B,UACA,YACyB;AAAA,EACzB,MAAM,SAAS,SAAS,SAAS,WAAW,SAAS,aAAa,SAAS;AAAA,EAC3E,OAAO,OAAO,OAAO,QAAQ,UAAU,IACnC,EAAE,SAAS,MAAM,OAAO,OAAO,YAAY,IAC3C,EAAE,SAAS,MAAM;AAAA;AAGvB,SAAS,wBAAwB,CAC/B,YACA,YACA,WACM;AAAA,EACN,IAAI,UAAU;AAAA,IAAS,WAAW,cAAc,UAAU;AAAA,EACrD;AAAA,WAAO,WAAW;AAAA;AAGlB,SAAS,oBAAoB,CAAC,QAA6D;AAAA,EAChG,IAAI,CAAC,UAAU,OAAO,MAAM,SAAS;AAAA,IAAU,OAAO,CAAC;AAAA,EACvD,MAAM,WAAW,KAAM,OAAO,YAAY,CAAC,EAAG;AAAA,EAC9C,MAAM,eACJ,OAAO,MAAM,SAAS,WAClB,OAAO,KAAK,OAAO,MAAM,UAAU,IACnC,CAAC,GAAG,OAAO,KAAK,OAAO,MAAM,GAAG,GAAG,GAAG,OAAO,MAAM,KAAK;AAAA,EAC9D,WAAW,cAAc;AAAA,IAAc,SAAS,gBAAgB,OAAO;AAAA,EACvE,OAAO;AAAA;AAGT,SAAS,oBAAoB,CAC3B,YACA,iBACM;AAAA,EACN,WAAW,SAAS;AAAA,IAAiB,WAAW,MAAM,OAAO,cAAc,MAAM;AAAA;AAG5E,SAAS,oBAAoB,CAAC,OAMR;AAAA,EAC3B,IAAI,CAAC,MAAM,wBAAwB,CAAC,MAAM;AAAA,IAAsB,OAAO;AAAA,EACvE,IAAI,MAAM,UAAU,SAAS;AAAA,IAAU,OAAO;AAAA,EAE9C,IAAI,MAAM,UAAU,SAAS,UAAU;AAAA,IACrC,OAAO,aAAa,MAAM,KAAK,MAAM,SAAS,UAAU;AAAA,EAC1D;AAAA,EACA,IAAI,CAAC,MAAM;AAAA,IAAQ,OAAO;AAAA,EAC1B,OAAO,aAAa,MAAM,KAAK,MAAM,OAAO,UAAU,UAAU;AAAA;AAI3D,SAAS,wBAAwB,CAAC,OAKZ;AAAA,EAC3B,IAAI,CAAC,MAAM,eAAe,MAAM,MAAM,MAAM;AAAA,IAAG,OAAO;AAAA,EACtD,IAAI,MAAM,UAAU,SAAS;AAAA,IAAS,OAAO;AAAA,EAE7C,IAAI,MAAM,UAAU,SAAS,OAAO;AAAA,IAClC,IAAI,CAAC,MAAM,eAAe,MAAM,SAAS,MAAM;AAAA,MAAG,OAAO;AAAA,IACzD,OAAO,aACL;AAAA,MACE,QAAQ,MAAM,MAAM;AAAA,MACpB,QAAQ,MAAM,MAAM;AAAA,MACpB,QAAQ,MAAM,SAAS;AAAA,IACzB,GACA,MAAM,SAAS,UACjB;AAAA,EACF;AAAA,EAEA,IAAI,CAAC,MAAM,UAAU,CAAC,MAAM,eAAe,MAAM,OAAO,UAAU,IAAI,MAAM;AAAA,IAAG,OAAO;AAAA,EACtF,OAAO,aAAa,MAAM,OAAO,UAAU,KAAK,MAAM,OAAO,UAAU,UAAU;AAAA;AAI5E,SAAS,8BAA8B,CAAC,OAKlB;AAAA,EAC3B,MAAM,WAAW,yBAAyB;AAAA,IACxC,OAAO,EAAE,QAAQ,MAAM,IAAI,QAAQ,QAAQ,MAAM,IAAI,OAAO;AAAA,IAC5D,QAAQ,MAAM;AAAA,IACd,UAAU,MAAM;AAAA,IAChB,gBAAgB,MAAM;AAAA,EACxB,CAAC;AAAA,EACD,OAAO,YAAY,YAAW,SAAS,GAAG,MAAM,YAAW,MAAM,GAAG,IAAI,WAAW;AAAA;AAGrF,SAAS,YAAY,CACnB,KACA,YACmB;AAAA,EACnB,IAAI,eAAe;AAAA,IAAW,OAAO,EAAE,IAAI;AAAA,EAC3C,OAAO,EAAE,KAAK,WAAW;AAAA;;;ACjNpB,SAAS,gBAAgB,CAC9B,UACA,YACkC;AAAA,EAClC,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,QAAQ,IAAI;AAAA,EAClB,MAAM,SAAS,IAAI;AAAA,EACnB,MAAM,kBAAkB,IAAI;AAAA,EAE5B,WAAW,aAAa,YAAY;AAAA,IAClC,IAAI,kBAAkB,SAAS,GAAG;AAAA,MAChC,IAAI,CAAC,SAAS,kBAAkB,UAAU,IAAI,YAAY;AAAA,QAAG;AAAA,MAC7D,QAAQ,IAAI,cAAa,UAAU,GAAG,GAAG,UAAU,GAAG;AAAA,MACtD,IAAI,UAAU,SAAS,gBAAgB;AAAA,QACrC,gBAAgB,IAAI,cAAa,UAAU,GAAG,GAAG,UAAU,GAAG;AAAA,MAChE;AAAA,MACA;AAAA,IACF;AAAA,IAEA,IAAI,CAAC,eAAe,UAAU,UAAU,GAAG;AAAA,MAAG;AAAA,IAC9C,MAAM,IAAI,YAAW,UAAU,GAAG,GAAG,UAAU,GAAG;AAAA,IAClD,QAAQ,IAAI,cAAa,UAAU,IAAI,MAAM,GAAG,UAAU,IAAI,MAAM;AAAA,IACpE,QAAQ,IAAI,cAAa,UAAU,IAAI,MAAM,GAAG,UAAU,IAAI,MAAM;AAAA,IACpE,IAAI,gBAAgB,UAAU,UAAU,GAAG,MAAM,OAAO;AAAA,MACtD,MAAM,QAAQ,EAAE,QAAQ,UAAU,IAAI,QAAQ,QAAQ,UAAU,IAAI,OAAO;AAAA,MAC3E,OAAO,IAAI,aAAa,MAAM,QAAQ,MAAM,MAAM,GAAG,KAAK;AAAA,IAC5D;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,SAAS,CAAC,GAAG,QAAQ,OAAO,CAAC,EAAE,KAAK,kBAAiB;AAAA,IACrD,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE,KAAK,gBAAe;AAAA,IAC/C,YAAY,CAAC,GAAG,OAAO,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,UAC3C,aAAa,KAAK,QAAQ,KAAK,MAAM,EAAE,cAAc,aAAa,MAAM,QAAQ,MAAM,MAAM,CAAC,CAC/F;AAAA,IACA,iBAAiB,CAAC,GAAG,gBAAgB,OAAO,CAAC,EAAE,KAAK,kBAAiB;AAAA,IACrE,QAAQ,CAAC;AAAA,EACX;AAAA;AAGK,SAAS,cAAc,CAAC,UAA4B,KAA+B;AAAA,EACxF,MAAM,aAAa,SAAS,kBAAkB,IAAI,OAAO,YAAY;AAAA,EACrE,IAAI,CAAC,cAAc,CAAC,SAAS,kBAAkB,IAAI,OAAO,YAAY;AAAA,IAAG,OAAO;AAAA,EAChF,MAAM,OAAO,WAAW,MAAM,KAAK,CAAC,cAAc,UAAU,OAAO,IAAI,MAAM;AAAA,EAC7E,OAAO,QACL,QAAQ,SAAS,kBAAkB,KAAK,oBAAoB,IAAI,OAAO,YAAY,CACrF;AAAA;AAGK,SAAS,eAAe,CAAC,UAA4B,KAAsC;AAAA,EAGhG,MAAM,aAAa,SAChB,kBAAkB,IAAI,OAAO,YAAY,GACxC,MAAM,KAAK,CAAC,cAAc,UAAU,OAAO,IAAI,MAAM;AAAA,EACzD,OAAO,YAAY,eAAe;AAAA;AAGpC,SAAS,iBAAiB,CACxB,WACoF;AAAA,EACpF,OAAO,UAAU,KAAK,WAAW,SAAS;AAAA;;;ACErC,SAAS,iBAAiB,CAC/B,UACA,SACA,OACM;AAAA,EACN,WAAW,UAAU,MAAM,SAAS;AAAA,IAClC,IAAI,CAAC,QAAQ,QAAQ,IAAI,cAAa,OAAO,GAAG,CAAC,GAAG;AAAA,MAClD,QAAQ,QAAQ,IAAI,cAAa,OAAO,GAAG,GAAG,uBAAuB,MAAM,CAAC;AAAA,IAC9E;AAAA,EACF;AAAA,EACA,WAAW,QAAQ,MAAM,OAAO;AAAA,IAC9B,IACE,gBAAgB,UAAU,KAAK,GAAG,MAAM,SACxC,CAAC,QAAQ,MAAM,MAAM,IAAI,YAAW,KAAK,GAAG,CAAC,GAC7C;AAAA,MACA,QAAQ,MAAM,MAAM,IAAI,YAAW,KAAK,GAAG,GAAG,yBAAyB,IAAI,CAAC;AAAA,IAC9E;AAAA,EACF;AAAA,EACA,WAAW,SAAS,MAAM,YAAY;AAAA,IACpC,MAAM,MAAM,aAAa,MAAM,QAAQ,MAAM,MAAM;AAAA,IACnD,IAAI,CAAC,QAAQ,MAAM,MAAM,IAAI,GAAG,GAAG;AAAA,MACjC,QAAQ,MAAM,MAAM,IAAI,KAAK,yBAAyB,KAAK,CAAC;AAAA,IAC9D;AAAA,EACF;AAAA;AAGF,SAAS,wBAAwB,CAAC,OAAuD;AAAA,EACvF,OAAO;AAAA,IACL,KAAK,EAAE,QAAQ,MAAM,QAAQ,QAAQ,MAAM,OAAO;AAAA,IAClD,QAAQ,MAAM;AAAA,IACd,kBAAkB,MAAM;AAAA,IACxB,UAAU,uBAAuB,MAAM,QAAQ;AAAA,IAC/C,QAAQ,MAAM;AAAA,IACd,gBAAgB,MAAM;AAAA,EACxB;AAAA;AAGK,SAAS,sBAAsB,CAAC,QAAmD;AAAA,EACxF,MAAM,WAAW,qBAAqB,OAAO,QAAQ;AAAA,EACrD,OAAO;AAAA,IACL,KAAK,OAAO;AAAA,IACZ,QAAQ,OAAO;AAAA,IACf,kBAAkB,OAAO;AAAA,IACzB,UAAU,OAAO,UAAU,SAAS;AAAA,IACpC,kBAAkB;AAAA,IAClB,UAAU,KAAK,SAAS;AAAA,IACxB,QAAQ,OAAO;AAAA,IACf,iBAAiB,CAAC,GAAG,OAAO,eAAe;AAAA,EAC7C;AAAA;AAGK,SAAS,wBAAwB,CAAC,MAAiD;AAAA,EACxF,OAAO;AAAA,IACL,KAAK,KAAK;AAAA,IACV,QAAQ,KAAK;AAAA,IACb,kBAAkB,KAAK;AAAA,IACvB,UAAU,KAAK,UAAU,SAAS;AAAA,IAClC,QAAQ,KAAK;AAAA,EACf;AAAA;AAGK,SAAS,aAAa,CAC3B,UACA,SAC4B;AAAA,EAC5B,OAAO,uBAAuB;AAAA,IAC5B,KAAK,QAAQ;AAAA,IACb,mBAAmB,SAAS,qBAAqB,QAAQ,IAAI,YAAY;AAAA,IACzE,QAAQ,QAAQ;AAAA,IAChB,UAAU,QAAQ;AAAA,IAClB,UAAU,QAAQ;AAAA,IAClB,iBAAiB,QAAQ;AAAA,EAC3B,CAAC;AAAA;AAGI,SAAS,eAAe,CAC7B,UACA,SACA,SAC0B;AAAA,EAC1B,MAAM,SAAS,QAAQ,IAAI,cAAa,QAAQ,IAAI,MAAM,CAAC;AAAA,EAC3D,MAAM,SAAS,QAAQ,IAAI,cAAa,QAAQ,IAAI,MAAM,CAAC;AAAA,EAC3D,OAAO,qBAAqB;AAAA,IAC1B,KAAK,QAAQ;AAAA,IACb,QAAQ,QAAQ;AAAA,IAChB,UAAU,QAAQ;AAAA,IAClB,sBAAsB,QAAQ,UAAU,cAAc,UAAU,MAAM,CAAC;AAAA,IACvE,sBAAsB,QAAQ,UAAU,cAAc,UAAU,MAAM,CAAC;AAAA,EACzE,CAAC;AAAA;AAGI,SAAS,eAAe,CAC7B,UACA,SACA,SAC0B;AAAA,EAC1B,OAAO,yBAAyB;AAAA,IAC9B,OAAO,QAAQ;AAAA,IACf,QAAQ,QAAQ;AAAA,IAChB,UAAU,QAAQ;AAAA,IAClB,gBAAgB,CAAC,QAAQ;AAAA,MACvB,MAAM,SAAS,QAAQ,IAAI,cAAa,GAAG,CAAC;AAAA,MAC5C,OAAO,QAAQ,UAAU,cAAc,UAAU,MAAM,CAAC;AAAA;AAAA,EAE5D,CAAC;AAAA;AAGI,SAAS,4BAA4B,CAC1C,UACA,OACA,UACmE;AAAA,EACnE,MAAM,SAAS,IAAI;AAAA,EACnB,WAAW,SAAS,OAAO;AAAA,IACzB,MAAM,MAAM,aAAa,MAAM,IAAI,QAAQ,MAAM,IAAI,MAAM;AAAA,IAC3D,IAAI,gBAAgB,UAAU,MAAM,GAAG,MAAM,SAAS,CAAC,SAAS,IAAI,GAAG,GAAG;AAAA,MACxE,OAAO,IAAI,KAAK,EAAE,QAAQ,MAAM,IAAI,QAAQ,QAAQ,MAAM,IAAI,OAAO,CAAC;AAAA,IACxE;AAAA,EACF;AAAA,EACA,OAAO,CAAC,GAAG,OAAO,OAAO,CAAC;AAAA;AAGrB,SAAS,0BAA0B,CAAC,OAAmD;AAAA,EAC5F,aAAa,gBAAgB,SAAS,MAAM,OAAO,GAAG;AAAA,IACpD,IAAI,kBAAkB;AAAA,MAAG;AAAA,IACzB,MAAM,IAAI,gCACR,eAAe,IAAI,OAAO,gBAAgB,IAAI,8BAChD;AAAA,EACF;AAAA;;;AC1LF,eAAsB,oBAAoB,CACxC,SACA,SACA,SACA,YAC2B;AAAA,EAC3B,MAAM,QAA0B;AAAA,IAC9B,SAAS,IAAI;AAAA,IACb,OAAO;AAAA,MACL,OAAO,IAAI;AAAA,MACX,OAAO,IAAI;AAAA,IACb;AAAA,EACF;AAAA,EACA,MAAM,UAAU,iBAAiB,QAAQ,UAAU,UAAU;AAAA,EAC7D,MAAM,mBAAmB,IAAI,IAAI,QAAQ,MAAM,IAAI,WAAU,CAAC;AAAA,EAC9D,MAAM,gBAAgB,IAAI;AAAA,EAC1B,MAAM,cAAgC;AAAA,IACpC,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,MACL,OAAO,IAAI;AAAA,MACX,OAAO,MAAM,MAAM;AAAA,IACrB;AAAA,EACF;AAAA,EACA,MAAM,kBAAkB,IAAI,IAC1B,WAAW,OAAO,yBAAyB,EAAE,IAAI,CAAC,cAAc,cAAa,UAAU,GAAG,CAAC,CAC7F;AAAA,EAEA,iBAAiB,QAAQ,QAAQ,YAAY;AAAA,IAC3C;AAAA,IACA,UAAU,gBAAgB,OAAO;AAAA,IACjC,UAAU,QAAQ,SAAS;AAAA,EAC7B,CAAC,GAAG;AAAA,IACF,kBAAkB,QAAQ,UAAU,aAAa,IAAI;AAAA,IACrD,WAAW,QAAQ,KAAK,OAAO;AAAA,MAC7B,MAAM,MAAM,YAAW,KAAK,GAAG;AAAA,MAC/B,IACE,gBAAgB,QAAQ,UAAU,KAAK,GAAG,MAAM,SAChD,iBAAiB,IAAI,GAAG,KACxB,CAAC,MAAM,MAAM,MAAM,IAAI,GAAG,GAC1B;AAAA,QACA,MAAM,MAAM,MAAM,IAAI,KAAK,yBAAyB,IAAI,CAAC;AAAA,MAC3D;AAAA,MACA,IAAI,QAAQ,gBAAgB,SAAS;AAAA,QAAG,cAAc,IAAI,KAAK,IAAI;AAAA,IACrE;AAAA,EACF;AAAA,EAEA,MAAM,8BAA8B,SAAS,SAAS,SAAS,KAAK;AAAA,EAEpE,MAAM,mBACJ,SACA,SACA,SACA,OACA,CAAC,GAAG,cAAc,OAAO,CAAC,GAC1B,eACF;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,yBAAyB,CAChC,WAIA;AAAA,EACA,OACE,UAAU,SAAS,mBACnB,UAAU,SAAS,mBACnB,UAAU,SAAS;AAAA;AAIvB,eAAe,kBAAkB,CAC/B,SACA,SACA,SACA,OACA,gBACA,iBACe;AAAA,EACf,MAAM,sBAAsB,eAAe,OAAO,CAAC,SACjD,eAAe,QAAQ,UAAU,KAAK,GAAG,CAC3C;AAAA,EACA,MAAM,mBAAmB,IAAI;AAAA,EAC7B,WAAW,QAAQ,qBAAqB;AAAA,IACtC,WAAW,OAAO,CAAC,KAAK,IAAI,QAAQ,KAAK,IAAI,MAAM,GAAG;AAAA,MACpD,IAAI,CAAC,MAAM,QAAQ,IAAI,cAAa,GAAG,CAAC;AAAA,QAAG,iBAAiB,IAAI,cAAa,GAAG,GAAG,GAAG;AAAA,IACxF;AAAA,EACF;AAAA,EAEA,IAAI,iBAAiB,OAAO,GAAG;AAAA,IAC7B,MAAM,iBAAiB,SAAS,SAAS,SAAS,OAAO;AAAA,MACvD,SAAS,CAAC,GAAG,iBAAiB,OAAO,CAAC;AAAA,MACtC,OAAO,CAAC;AAAA,MACR,YAAY,CAAC;AAAA,MACb,iBAAiB,CAAC;AAAA,MAClB,QAAQ,CAAC;AAAA,IACX,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,iBAAiB,oBAAoB,OAAO,CAAC,SAAS;AAAA,IAC1D,IAAI,KAAK;AAAA,MAAW,OAAO;AAAA,IAC3B,IACE,gBAAgB,IAAI,cAAa,KAAK,IAAI,MAAM,CAAC,KACjD,gBAAgB,IAAI,cAAa,KAAK,IAAI,MAAM,CAAC,GACjD;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,IAAI,gBAAgB,QAAQ,UAAU,KAAK,GAAG,MAAM,OAAO;AAAA,MACzD,OAAO,QACL,+BAA+B;AAAA,QAC7B,KAAK,KAAK;AAAA,QACV,QAAQ,KAAK;AAAA,QACb,UAAU,uBAAuB,KAAK,YAAY;AAAA,QAClD,gBAAgB,CAAC,QAAQ;AAAA,UACvB,MAAM,SAAS,MAAM,QAAQ,IAAI,cAAa,GAAG,CAAC;AAAA,UAClD,OAAO,QAAQ,UAAU,cAAc,QAAQ,UAAU,MAAM,CAAC;AAAA;AAAA,MAEpE,CAAC,CACH;AAAA,IACF;AAAA,IACA,OAAO,QAAQ,gBAAgB,QAAQ,UAAU,yBAAyB,IAAI,GAAG,MAAM,OAAO,CAAC;AAAA,GAChG;AAAA,EACD,MAAM,gBAAgB,6BACpB,QAAQ,UACR,gBACA,MAAM,MAAM,KACd;AAAA,EACA,IAAI,cAAc,SAAS,GAAG;AAAA,IAC5B,MAAM,iBAAiB,SAAS,SAAS,SAAS,OAAO;AAAA,MACvD,SAAS,CAAC;AAAA,MACV,OAAO,CAAC;AAAA,MACR,YAAY;AAAA,MACZ,iBAAiB,CAAC;AAAA,MAClB,QAAQ,CAAC;AAAA,IACX,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,8BAA8B,SAAS,SAAS,SAAS,KAAK;AAAA,EAEpE,WAAW,QAAQ,gBAAgB;AAAA,IACjC,IAAI,gBAAgB,QAAQ,UAAU,KAAK,GAAG,MAAM;AAAA,MAAO;AAAA,IAC3D,MAAM,MAAM,YAAW,KAAK,GAAG;AAAA,IAC/B,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG;AAAA,MAAG;AAAA,IAChC,MAAM,MAAM,MAAM,IAAI,KAAK,yBAAyB,IAAI,CAAC;AAAA,EAC3D;AAAA,EACA,QAAQ,oBACN,wBACA,MAAM,MAAM,MAAM,OAAO,MAAM,MAAM,MAAM,IAC7C;AAAA;AAGF,eAAe,6BAA6B,CAC1C,SACA,SACA,SACA,OACe;AAAA,EACf,MAAM,UAAU,IAAI;AAAA,EACpB,WAAW,WAAW,MAAM,MAAM,MAAM,OAAO,GAAG;AAAA,IAChD,MAAM,OAAO;AAAA,MACX,QAAQ,IAAI;AAAA,MACZ,QAAQ,QAAQ,UAAU,IAAI;AAAA,MAC9B,QAAQ,UAAU;AAAA,MAClB,QAAQ,QAAQ,IAAI;AAAA,IACtB;AAAA,IACA,WAAW,OAAO,MAAM;AAAA,MACtB,IAAI,OAAO,CAAC,MAAM,QAAQ,IAAI,cAAa,GAAG,CAAC;AAAA,QAAG,QAAQ,IAAI,cAAa,GAAG,GAAG,GAAG;AAAA,IACtF;AAAA,EACF;AAAA,EACA,IAAI,QAAQ,SAAS;AAAA,IAAG;AAAA,EACxB,MAAM,iBAAiB,SAAS,SAAS,SAAS,OAAO;AAAA,IACvD,SAAS,CAAC,GAAG,QAAQ,OAAO,CAAC;AAAA,IAC7B,OAAO,CAAC;AAAA,IACR,YAAY,CAAC;AAAA,IACb,iBAAiB,CAAC;AAAA,IAClB,QAAQ,CAAC;AAAA,EACX,CAAC;AAAA;AAGH,eAAe,gBAAgB,CAC7B,SACA,SACA,SACA,OACA,SACe;AAAA,EACf,MAAM,SAAS,MAAM,UAAU,SAAS,SAAS,SAAS,OAAO;AAAA,EACjE,kBAAkB,QAAQ,UAAU,OAAO,MAAM;AAAA;;;ACtM5C,SAAS,mBAAmB,CAAC,OAKH;AAAA,EAC/B,IAAI,CAAC,MAAM,QAAQ;AAAA,IACjB,IAAI,CAAC,MAAM;AAAA,MAAU,OAAO;AAAA,IAC5B,OAAO,mBAAmB,MAAM,UAAU,MAAM,UAAU,MAAM,WAAW;AAAA,EAC7E;AAAA,EACA,IAAI,CAAC,MAAM;AAAA,IAAU,OAAO,mBAAmB,MAAM,MAAM;AAAA,EAC3D,IAAI,eAAe,MAAM,OAAO,YAAY,MAAM,SAAS,UAAU;AAAA,IAAG,OAAO;AAAA,EAC/E,OAAO,mBAAmB,MAAM,QAAQ,MAAM,UAAU,MAAM,UAAU,MAAM,WAAW;AAAA;AAG3F,SAAS,kBAAkB,CACzB,UACA,UACA,aACuB;AAAA,EACvB,MAAM,QAAiC;AAAA,OAClC;AAAA,IACH,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,cAAc;AAAA,EAChB;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,KAAK,MAAM;AAAA,IACX,QAAQ;AAAA,IACR;AAAA,IACA,iBAAiB,gBAAgB,CAAC,GAAG,MAAM,UAAU;AAAA,EACvD;AAAA;AAGF,SAAS,kBAAkB,CAAC,QAAwD;AAAA,EAClF,OAAO;AAAA,IACL,MAAM;AAAA,IACN,KAAK,OAAO;AAAA,IACZ;AAAA,IACA,OAAO;AAAA,IACP,iBAAiB,gBAAgB,OAAO,YAAY,CAAC,CAAC;AAAA,EACxD;AAAA;AAGF,SAAS,kBAAkB,CACzB,QACA,UACA,UACA,aACuB;AAAA,EACvB,MAAM,QAAiC;AAAA,OAClC;AAAA,IACH,SAAS,OAAO,UAAU;AAAA,IAC1B,WAAW,OAAO;AAAA,IAClB,WAAW;AAAA,IACX,cAAc;AAAA,EAChB;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,KAAK,MAAM;AAAA,IACX;AAAA,IACA;AAAA,IACA,iBAAiB,gBAAgB,OAAO,YAAY,MAAM,UAAU;AAAA,EACtE;AAAA;AAGK,SAAS,iBAAiB,CAAC,OAKH;AAAA,EAC7B,IAAI,CAAC,MAAM,QAAQ;AAAA,IACjB,IAAI,CAAC,MAAM;AAAA,MAAU,OAAO;AAAA,IAC5B,OAAO,iBAAiB,MAAM,UAAU,MAAM,UAAU,MAAM,WAAW;AAAA,EAC3E;AAAA,EACA,IAAI,CAAC,MAAM;AAAA,IAAU,OAAO,iBAAiB,MAAM,MAAM;AAAA,EACzD,IAAI,eAAe,MAAM,OAAO,cAAc,CAAC,GAAG,MAAM,SAAS,cAAc,CAAC,CAAC;AAAA,IAAG,OAAO;AAAA,EAC3F,OAAO,iBAAiB,MAAM,QAAQ,MAAM,UAAU,MAAM,UAAU,MAAM,WAAW;AAAA;AAIlF,SAAS,qBAAqB,CAAC,OAKZ;AAAA,EACxB,IACE,MAAM,UACN,MAAM,YACN,YAAW,MAAM,OAAO,GAAG,MAAM,YAAW,MAAM,SAAS,GAAG,GAC9D;AAAA,IACA,OAAO;AAAA,MACL,kBAAkB,KAAK,OAAO,UAAU,KAAK,CAAC;AAAA,MAC9C,kBAAkB,KAAK,OAAO,QAAQ,KAAK,CAAC;AAAA,IAC9C;AAAA,EACF;AAAA,EACA,MAAM,SAAS,kBAAkB,KAAK;AAAA,EACtC,OAAO,SAAS,CAAC,MAAM,IAAI,CAAC;AAAA;AAG9B,SAAS,gBAAgB,CACvB,UACA,UACA,aACqB;AAAA,EACrB,MAAM,QAA+B;AAAA,OAChC;AAAA,IACH,WAAW;AAAA,IACX,WAAW;AAAA,IACX,cAAc;AAAA,EAChB;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,KAAK,MAAM;AAAA,IACX,QAAQ;AAAA,IACR;AAAA,IACA,iBAAiB,gBAAgB,CAAC,GAAG,MAAM,cAAc,CAAC,CAAC;AAAA,EAC7D;AAAA;AAGF,SAAS,gBAAgB,CAAC,QAAoD;AAAA,EAC5E,OAAO;AAAA,IACL,MAAM;AAAA,IACN,KAAK,OAAO;AAAA,IACZ;AAAA,IACA,OAAO;AAAA,IACP,iBAAiB,gBAAgB,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;AAAA,EAC9D;AAAA;AAGF,SAAS,gBAAgB,CACvB,QACA,UACA,UACA,aACqB;AAAA,EACrB,MAAM,QAA+B;AAAA,OAChC;AAAA,IACH,WAAW,OAAO;AAAA,IAClB,WAAW;AAAA,IACX,cAAc;AAAA,EAChB;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,KAAK,MAAM;AAAA,IACX;AAAA,IACA;AAAA,IACA,iBAAiB,gBAAgB,OAAO,cAAc,CAAC,GAAG,MAAM,cAAc,CAAC,CAAC;AAAA,EAClF;AAAA;AAGF,SAAS,cAAc,CACrB,MACA,OACS;AAAA,EACT,OAAO,qBAAoB,IAAI,MAAM,qBAAoB,KAAK;AAAA;AAGhE,SAAS,eAAe,CACtB,QACA,OAC0C;AAAA,EAC1C,MAAM,UAGF,CAAC;AAAA,EACL,MAAM,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,OAAO,KAAK,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc;AAAA,EAC7F,WAAW,MAAM,KAAK;AAAA,IACpB,IAAI,EAAE,MAAM;AAAA,MAAS,QAAQ,MAAM,EAAE,WAAW,WAAW,OAAO,MAAM,IAAI;AAAA,IACvE,SAAI,EAAE,MAAM;AAAA,MAAQ,QAAQ,MAAM,EAAE,WAAW,WAAW,QAAQ,OAAO,KAAK,OAAO,KAAK;AAAA,IAC1F,SAAI,qBAAoB,OAAO,GAAG,MAAM,qBAAoB,MAAM,GAAG,GAAG;AAAA,MAC3E,QAAQ,MAAM,EAAE,WAAW,WAAW,QAAQ,OAAO,KAAK,OAAO,MAAM,IAAI;AAAA,IAC7E;AAAA,EACF;AAAA,EACA,OAAO;AAAA;;;AC1KF,SAAS,iBAAiB,CAAC,UAA4B,KAA8B;AAAA,EAC1F,0BAA0B,MAAM;AAAA,IAC9B,SAAS,kBAAkB,IAAI,YAAY;AAAA,GAC5C;AAAA;AAGI,SAAS,eAAe,CAAC,UAA4B,KAA4B;AAAA,EACtF,0BAA0B,MAAM;AAAA,IAC9B,MAAM,aAAa,SAAS,kBAAkB,IAAI,OAAO,YAAY;AAAA,IACrE,SAAS,kBAAkB,IAAI,OAAO,YAAY;AAAA,IAClD,MAAM,OAAO,WAAW,MAAM,KAAK,CAAC,cAAc,UAAU,OAAO,IAAI,MAAM;AAAA,IAC7E,IAAI,CAAC;AAAA,MAAM,MAAM,IAAI,MAAM,wBAAwB,IAAI,OAAO,gBAAgB,IAAI,UAAU;AAAA,IAC5F,IAAI,CAAC,SAAS,kBAAkB,KAAK,oBAAoB,IAAI,OAAO,YAAY,GAAG;AAAA,MACjF,MAAM,IAAI,MACR,gBAAgB,IAAI,OAAO,gBAAgB,IAAI,0BAA0B,IAAI,OAAO,gBACtF;AAAA,IACF;AAAA,GACD;AAAA;AAGI,SAAS,iCAAiC,CAC/C,UACA,KACA,YACqC;AAAA,EACrC,OAAO,0BAA0B,MAAM;AAAA,IACrC,MAAM,aAAa,SAAS,kBAAkB,IAAI,YAAY;AAAA,IAC9D,uBAAsB,YAAY,UAAU;AAAA,IAC5C,MAAM,YAAY,SAAS,qBAAqB,IAAI,YAAY;AAAA,IAChE,MAAM,SAAS,KAAK,WAAW;AAAA,IAC/B,IAAI,aAAa,QAAQ;AAAA,MACvB,IAAI,OAAO,eAAe,IAAI,WAAW;AAAA,QACvC,MAAM,IAAI,MACR,4BAA4B,0CAA0C,IAAI,aAC5E;AAAA,MACF;AAAA,MACA,OAAO,OAAO;AAAA,IAChB;AAAA,IACA,WAAW,cAAc,OAAO,KAAK,MAAM,GAAG;AAAA,MAC5C,MAAM,WAAW,WAAW,WAAW,KAAK,CAAC,cAAc,UAAU,OAAO,UAAU;AAAA,MACtF,IAAI,SAAS,SAAS,aAAa;AAAA,QACjC,MAAM,IAAI,MACR,4DAA4D,IAAI,gBAAgB,cAClF;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM,iBAAiB,SAAS,kBAAkB;AAAA,IAClD,0BAAyB,YAAY,QAAQ,cAAc;AAAA,IAC3D,OAAO,2BAA0B,WAAW,YAAY,QAAQ,gBAAgB,WAAW,EAAE;AAAA,GAC9F;AAAA;AAGI,SAAS,8BAA8B,CAC5C,UACA,KACA,aACA,OACM;AAAA,EACN,0BAA0B,MAAM;AAAA,IAC9B,MAAM,aAAa,SAAS,kBAAkB,IAAI,YAAY;AAAA,IAC9D,MAAM,YAAY,SAAS,qBAAqB,IAAI,YAAY;AAAA,IAChE,WAAW,cAAc,aAAa;AAAA,MACpC,MAAM,WAAW,WAAW,WAAW,KAAK,CAAC,cAAc,UAAU,OAAO,UAAU;AAAA,MACtF,IAAI,CAAC,UAAU;AAAA,QACb,MAAM,IAAI,MACR,uBAAuB,sCAAsC,IAAI,gBAAgB,cACnF;AAAA,MACF;AAAA,MACA,IAAI,eAAe,WAAW;AAAA,QAC5B,MAAM,IAAI,MACR,uBAAuB,yCAAyC,IAAI,gBAAgB,cACtF;AAAA,MACF;AAAA,MACA,IAAI,SAAS,SAAS,aAAa;AAAA,QACjC,MAAM,IAAI,MACR,uBAAuB,2CAA2C,IAAI,gBAAgB,cACxF;AAAA,MACF;AAAA,IACF;AAAA,GACD;AAAA;AAGI,SAAS,uBAAuB,CACrC,UACA,KACA,YACM;AAAA,EACN,0BAA0B,MAAM;AAAA,IAC9B,MAAM,aAAa,SAAS,kBAAkB,IAAI,YAAY;AAAA,IAC9D,uBAAsB,YAAY,UAAU;AAAA,IAC5C,WAAW,YAAY,WAAW,YAAY;AAAA,MAC5C,IACE,SAAS,SAAS,eAClB,SAAS,YACT,WAAW,SAAS,QAAQ,WAC5B;AAAA,QACA,MAAM,IAAI,MACR,qCAAqC,SAAS,wBAAwB,WAAW,KACnF;AAAA,MACF;AAAA,IACF;AAAA,IACA,0BAAyB,YAAY,YAAY,SAAS,kBAAkB,CAAC;AAAA,GAC9E;AAAA;AAGI,SAAS,+BAA+B,CAC7C,UACA,KACA,YACiD;AAAA,EACjD,OAAO,0BAA0B,MAAM;AAAA,IACrC,MAAM,aAAa,SAAS,kBAAkB,IAAI,OAAO,YAAY;AAAA,IACrE,MAAM,OAAO,WAAW,MAAM,KAAK,CAAC,cAAc,UAAU,OAAO,IAAI,MAAM;AAAA,IAC7E,IAAI,CAAC;AAAA,MAAM,MAAM,IAAI,MAAM,wBAAwB,IAAI,OAAO,gBAAgB,IAAI,UAAU;AAAA,IAC5F,IAAI,CAAC,SAAS,kBAAkB,KAAK,oBAAoB,IAAI,OAAO,YAAY,GAAG;AAAA,MACjF,MAAM,IAAI,MACR,gBAAgB,IAAI,OAAO,gBAAgB,IAAI,0BAA0B,IAAI,OAAO,gBACtF;AAAA,IACF;AAAA,IACA,MAAM,iBAAiB,SAAS,kBAAkB;AAAA,IAClD,wBAAuB,YAAY,MAAM,YAAY,WAAW,cAAc;AAAA,IAC9E,OAAO,yBAAwB,YAAY,MAAM,YAAY,cAAc;AAAA,GAC5E;AAAA;AAGI,SAAS,sBAAsB,CACpC,UACA,OACqB;AAAA,EACrB,OAAO,0BAA0B,MAAM;AAAA,IACrC,MAAM,aAAa,SAAS,kBAAkB,MAAM,OAAO,OAAO,YAAY;AAAA,IAC9E,MAAM,WAAW,WAAW,WAAW,KACrC,CAAC,cAAc,UAAU,OAAO,MAAM,OAAO,UAC/C;AAAA,IACA,IAAI,CAAC,YAAY,SAAS,SAAS,aAAa;AAAA,MAC9C,MAAM,IAAI,MACR,oBAAoB,MAAM,OAAO,OAAO,gBAAgB,MAAM,OAAO,uCACvE;AAAA,IACF;AAAA,IACA,MAAM,OAAO,GAAG,WAAW,MAAM,SAAS;AAAA,IAC1C,MAAM,iBAAiB,SAAS,kBAAkB;AAAA,IAClD,uBAAsB,UAAU,MAAM,OAAO,MAAM,cAAc;AAAA,IACjE,uBAAsB,UAAU,MAAM,MAAM,MAAM,cAAc;AAAA,IAChE,OAAO;AAAA,SACF;AAAA,MACH,OACE,MAAM,UAAU,OACZ,OACA,sBAAqB,SAAS,QAAQ,MAAM,OAAO,MAAM,cAAc;AAAA,IAC/E;AAAA,GACD;AAAA;AAGH,SAAS,yBAA4B,CAAC,KAAiB;AAAA,EACrD,IAAI;AAAA,IACF,OAAO,IAAI;AAAA,IACX,OAAO,OAAO;AAAA,IACd,IAAI,iBAAiB;AAAA,MAAgC,MAAM;AAAA,IAC3D,MAAM,IAAI,gCAA+B,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA;AAAA;;;AC9H5F,SAAS,eAAe,CAAC,OAAmD;AAAA,EACjF,MAAM,UAAU,MAAM;AAAA,EACtB,IAAI;AAAA,EAEJ,QAAQ,MAAM,UAAU;AAAA,SACjB;AAAA,MACH,OAAO,kBAAkB,OAAO,MAAM,SAAS;AAAA,MAC/C;AAAA,SACG;AAAA,MACH,OAAO,kBAAkB,OAAO,MAAM,SAAS;AAAA,MAC/C;AAAA,SACG;AAAA,MACH,OAAO,iBAAiB,OAAO,MAAM,SAAS;AAAA,MAC9C;AAAA,SACG;AAAA,MACH,OAAO,kBAAkB,KAAK;AAAA,MAC9B;AAAA,SACG;AAAA,MACH,OAAO,mBAAmB,KAAK;AAAA,MAC/B;AAAA;AAAA,MAEA,MAAM,IAAI,gCAA+B,oCAAoC;AAAA;AAAA,EAGjF,MAAM,WAAW,qBAAqB,OAAO,IAAI;AAAA,EACjD,MAAM,YAAY,WAAW,SAAS,IAAI;AAAA,EAC1C,OAAO;AAAA,OACF;AAAA,IACH;AAAA,IACA,SAAS,UAAU,WAAW,CAAC,iBAAiB,MAAM,UAAU,QAAQ;AAAA,EAC1E;AAAA;AAGF,SAAS,oBAAoB,CAC3B,OACA,MACkC;AAAA,EAClC,IAAI,CAAC,QAAQ,KAAK,SAAS;AAAA,IAAU,OAAO,CAAC;AAAA,EAC7C,MAAM,WACJ,MAAM,UAAU,SAAS,mBAAmB,MAAM,WAAW,SAAS,WAClE,CAAC,IACD,KAAK,MAAM,SAAS;AAAA,EAE1B,QAAQ,MAAM,UAAU;AAAA,SACjB;AAAA,SACA,iBAAiB;AAAA,MACpB,MAAM,aAAa,MAAM,wBAAwB,MAAM,UAAU;AAAA,MACjE,WAAW,cAAc,OAAO,KAAK,UAAU;AAAA,QAAG,SAAS,cAAc,MAAM;AAAA,MAC/E;AAAA,IACF;AAAA,SACK;AAAA,MACH,WAAW,cAAc,MAAM,UAAU;AAAA,QAAO,OAAO,SAAS;AAAA,MAChE,WAAW,cAAc,MAAM,UAAU;AAAA,QAAO,SAAS,cAAc,MAAM;AAAA,MAC7E,WAAW,cAAc,OAAO,KAAK,MAAM,iBAAiB,MAAM,UAAU,GAAG,GAAG;AAAA,QAChF,SAAS,cAAc,MAAM;AAAA,MAC/B;AAAA,MACA;AAAA,SACG;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH;AAAA;AAAA,EAEJ,OAAO;AAAA;AAGT,SAAS,gBAAgB,CACvB,MACA,OACS;AAAA,EACT,MAAM,WAAW,OAAO,KAAK,IAAI;AAAA,EACjC,IAAI,SAAS,WAAW,OAAO,KAAK,KAAK,EAAE;AAAA,IAAQ,OAAO;AAAA,EAC1D,OAAO,SAAS,MAAM,CAAC,QAAQ,KAAK,SAAS,MAAM,IAAI;AAAA;AAGzD,SAAS,iBAAiB,CACxB,OACA,WACgB;AAAA,EAChB,IAAI,MAAM,oBAAoB,MAAM,WAAW;AAAA,IAC7C,MAAM,IAAI,gCACR,yDAAyD,UAAU,IAAI,gBAAgB,UAAU,IAAI,YACvG;AAAA,EACF;AAAA,EACA,OAAO,EAAE,MAAM,UAAU,YAAY,MAAM,wBAAwB,UAAU,WAAW;AAAA;AAG1F,SAAS,iBAAiB,CACxB,OACA,WACgB;AAAA,EAChB,MAAM,aAAa,MAAM,wBAAwB,UAAU;AAAA,EAC3D,MAAM,UAAU,MAAM;AAAA,EAEtB,IAAI,SAAS,SAAS,UAAU;AAAA,IAC9B,OAAO,EAAE,MAAM,UAAU,YAAY,KAAK,QAAQ,eAAe,WAAW,EAAE;AAAA,EAChF;AAAA,EACA,IAAI,SAAS,SAAS,SAAS;AAAA,IAC7B,OAAO,qBAAqB,SAAS,YAAY,MAAM,qBAAqB,IAAI;AAAA,EAClF;AAAA,EACA,IAAI,MAAM;AAAA,IAAkB,OAAO,EAAE,MAAM,SAAS,KAAK,YAAY,OAAO,CAAC,EAAE;AAAA,EAC/E,OAAO,EAAE,MAAM,UAAU,WAAW;AAAA;AAGtC,SAAS,oBAAoB,CAC3B,SACA,YACA,WACgB;AAAA,EAChB,IAAI,WAAW;AAAA,IACb,MAAM,QAAQ,QAAQ,MAAM,OAAO,CAAC,eAAe,EAAE,cAAc,WAAW;AAAA,IAC9E,OAAO,EAAE,MAAM,SAAS,KAAK,KAAK,QAAQ,QAAQ,WAAW,GAAG,MAAM;AAAA,EACxE;AAAA,EAEA,MAAM,UAAU,KAAK,QAAQ,IAAI;AAAA,EACjC,WAAW,cAAc,QAAQ;AAAA,IAAO,OAAO,QAAQ;AAAA,EACvD,OAAO,EAAE,MAAM,UAAU,YAAY,KAAK,YAAY,WAAW,EAAE;AAAA;AAGrE,SAAS,gBAAgB,CACvB,OACA,WACuB;AAAA,EACvB,MAAM,UAAU,MAAM;AAAA,EACtB,IAAI,CAAC,MAAM,mBAAmB,SAAS,SAAS,SAAS;AAAA,IACvD,MAAM,IAAI,gCACR,iDAAiD,UAAU,IAAI,gBAAgB,UAAU,IAAI,YAC/F;AAAA,EACF;AAAA,EAEA,MAAM,WAAW,MAAM,iBAAiB,UAAU;AAAA,EAClD,IAAI,SAAS,SAAS,YAAY,CAAC,MAAM,kBAAkB;AAAA,IACzD,OAAO,mBAAmB,SAAS,WAAW,QAAQ;AAAA,EACxD;AAAA,EAEA,OAAO,cAAc,gBAAgB,OAAO,GAAG,WAAW,QAAQ;AAAA;AAGpE,SAAS,kBAAkB,CACzB,SACA,WACA,UACgB;AAAA,EAChB,MAAM,aAAa,KAAK,QAAQ,eAAe,SAAS;AAAA,EACxD,WAAW,cAAc,CAAC,GAAG,UAAU,OAAO,GAAG,UAAU,KAAK,GAAG;AAAA,IACjE,OAAO,WAAW;AAAA,EACpB;AAAA,EACA,OAAO,EAAE,MAAM,UAAU,WAAW;AAAA;AAGtC,SAAS,eAAe,CAAC,SAAqD;AAAA,EAC5E,IAAI,SAAS,SAAS;AAAA,IAAS,OAAO;AAAA,EACtC,IAAI,SAAS,SAAS,UAAU;AAAA,IAC9B,OAAO,EAAE,MAAM,SAAS,KAAK,KAAK,QAAQ,WAAW,GAAG,OAAO,CAAC,EAAE;AAAA,EACpE;AAAA,EACA,OAAO,EAAE,MAAM,SAAS,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE;AAAA;AAG7C,SAAS,aAAa,CACpB,MACA,WACA,UACuB;AAAA,EACvB,MAAM,MAAM,KAAK,KAAK,IAAI;AAAA,EAC1B,MAAM,QAAQ,IAAI,IAAI,KAAK,KAAK;AAAA,EAEhC,WAAW,cAAc,UAAU,OAAO;AAAA,IACxC,OAAO,IAAI;AAAA,IACX,MAAM,OAAO,UAAU;AAAA,EACzB;AAAA,EACA,WAAW,cAAc,UAAU,OAAO;AAAA,IACxC,OAAO,IAAI;AAAA,IACX,MAAM,IAAI,UAAU;AAAA,EACtB;AAAA,EACA,YAAY,YAAY,UAAU,OAAO,QAAQ,QAAQ,GAAG;AAAA,IAC1D,IAAI,cAAc;AAAA,IAClB,MAAM,OAAO,UAAU;AAAA,EACzB;AAAA,EAEA,IAAI,OAAO,KAAK,GAAG,EAAE,WAAW,KAAK,MAAM,SAAS;AAAA,IAAG,OAAO;AAAA,EAC9D,OAAO,EAAE,MAAM,SAAS,KAAK,OAAO,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE;AAAA;AAGxD,SAAS,iBAAiB,CAAC,OAA+C;AAAA,EACxE,IAAI,CAAC,MAAM;AAAA,IAAiB,OAAO,MAAM;AAAA,EACzC,IAAI,MAAM,WAAW,SAAS,YAAY,CAAC,MAAM;AAAA,IAAkB,OAAO;AAAA,EAC1E,OAAO,EAAE,MAAM,SAAS;AAAA;AAG1B,SAAS,kBAAkB,CAAC,OAA+C;AAAA,EACzE,IAAI,MAAM,WAAW,SAAS;AAAA,IAAU,OAAO,MAAM;AAAA,EACrD,OAAO;AAAA;AAGF,SAAS,aAAa,CAAC,OAAyD;AAAA,EACrF,MAAM,UAAU,MAAM;AAAA,EACtB,IAAI;AAAA,EAEJ,QAAQ,MAAM,UAAU;AAAA,SACjB;AAAA,MACH,OAAO,mBAAmB,KAAK;AAAA,MAC/B;AAAA,SACG;AAAA,MACH,OAAO,mBAAmB,KAAK;AAAA,MAC/B;AAAA,SACG;AAAA,MACH,OAAO;AAAA,MACP;AAAA;AAAA,MAEA,MAAM,IAAI,gCAA+B,iCAAiC;AAAA;AAAA,EAG9E,OAAO,WAAW,SAAS,IAAI;AAAA;AAGjC,SAAS,kBAAkB,CAAC,OAAoC;AAAA,EAC9D,IAAI,MAAM,yBAAyB,WAAW;AAAA,IAC5C,OAAO,EAAE,MAAM,UAAU,YAAY,MAAM,qBAAqB;AAAA,EAClE;AAAA,EACA,IAAI,MAAM,UAAU,SAAS,iBAAiB,MAAM,UAAU,eAAe,WAAW;AAAA,IACtF,OAAO,EAAE,MAAM,UAAU,YAAY,MAAM,UAAU,WAAW;AAAA,EAClE;AAAA,EACA,OAAO,EAAE,MAAM,SAAS;AAAA;AAG1B,SAAS,kBAAkB,CAAC,OAA2C;AAAA,EACrE,IAAI,CAAC,MAAM;AAAA,IAAiB,OAAO,MAAM;AAAA,EACzC,IAAI,MAAM,WAAW,SAAS,YAAY,CAAC,MAAM;AAAA,IAAW,OAAO;AAAA,EACnE,OAAO,EAAE,MAAM,SAAS;AAAA;AAG1B,SAAS,UAAmD,CAC1D,SACA,MACwB;AAAA,EACxB,OAAO,EAAE,MAAM,SAAS,CAAC,cAAc,SAAS,IAAI,EAAE;AAAA;AAGxD,SAAS,aAAa,CACpB,MACA,OACS;AAAA,EACT,OAAO,qBAAoB,IAAI,MAAM,qBAAoB,KAAK;AAAA;;;ACxPzD,SAAS,eAAe,CAAC,SAAgC;AAAA,EAC9D,SAAS,QAAQ,QAAQ,SAAS,EAAG,SAAS,GAAG,SAAS,GAAG;AAAA,IAC3D,QAAQ,QAAQ,QAAQ;AAAA,EAC1B;AAAA;AAGK,SAAS,kBAAkB,CAChC,SACA,OACA,WACA,UACA,SAC0B;AAAA,EAC1B,qBAAqB,SAAS,SAAS;AAAA,EACvC,IAAI,mBAAkB,SAAS,GAAG;AAAA,IAChC,OAAO,qBAAqB,SAAS,OAAO,WAAW,UAAU,OAAO;AAAA,EAC1E;AAAA,EACA,OAAO,mBACL,SACA,OACA,WACA,gBAAgB,QAAQ,UAAU,UAAU,GAAG,GAC/C,OACF;AAAA;AAGF,SAAS,oBAAoB,CAC3B,SACA,WACM;AAAA,EACN,IAAI,mBAAkB,SAAS,GAAG;AAAA,IAChC,kBAAkB,QAAQ,UAAU,UAAU,GAAG;AAAA,IACjD;AAAA,EACF;AAAA,EACA,gBAAgB,QAAQ,UAAU,UAAU,GAAG;AAAA;AAGjD,SAAS,oBAAoB,CAC3B,SACA,OACA,WACA,UACA,SAC0B;AAAA,EAC1B,MAAM,UAAU,qBAAqB,OAAO,SAAS;AAAA,EACrD,MAAM,aAAa,wBAAwB,SAAS,SAAS;AAAA,EAC7D,MAAM,mBAAmB,cAAc,QAAQ,UAAU,OAAO;AAAA,EAChE,MAAM,aAAa,gBAAgB;AAAA,IACjC;AAAA,IACA,kBAAkB,QAAQ,QAAQ,UAAU,cAAc;AAAA,IAC1D,WAAW,QAAQ;AAAA,IACnB,UAAU,QAAQ;AAAA,IAClB,aAAa,SAAS;AAAA,IACtB,iBAAiB,qBAAqB;AAAA,OACnC;AAAA,EACL,CAAC;AAAA,EAED,sBAAsB,SAAS,OAAO,SAAS,WAAW,MAAM,WAAW,UAAU,OAAO;AAAA,EAE5F,OAAO,uBAAuB,WAAW,SAAS,WAAW,SAAS,SAAS,QAAQ;AAAA;AAGzF,SAAS,oBAAoB,CAAC,OAAyB,WAA2C;AAAA,EAChG,MAAM,UAAU,MAAM,QAAQ,IAAI,cAAa,UAAU,GAAG,CAAC;AAAA,EAC7D,IAAI,CAAC;AAAA,IAAS,MAAM,IAAI,gCAA+B,8BAA8B;AAAA,EACrF,OAAO;AAAA;AAGT,SAAS,uBAAuB,CAC9B,SACA,WAIA;AAAA,EACA,QAAQ,UAAU;AAAA,SACX;AAAA,SACA;AAAA,MACH,OAAO;AAAA,QACL,sBAAsB,kCACpB,QAAQ,UACR,UAAU,KACV,UAAU,UACZ;AAAA,MACF;AAAA,SACG;AAAA,MACH,+BAA+B,QAAQ,UAAU,UAAU,KAAK,UAAU,OAAO,OAAO;AAAA,MACxF,+BAA+B,QAAQ,UAAU,UAAU,KAAK,UAAU,OAAO,OAAO;AAAA,MACxF,OAAO;AAAA,QACL,eAAe,kCACb,QAAQ,UACR,UAAU,KACV,UAAU,GACZ;AAAA,MACF;AAAA,SACG;AAAA,SACA;AAAA,MACH,OAAO,CAAC;AAAA;AAAA;AAId,SAAS,qBAAqB,CAC5B,SACA,OACA,SACA,MACA,cACA,SACM;AAAA,EACN,MAAM,WAAW,QAAQ;AAAA,EACzB,MAAM,mBAAmB,QAAQ;AAAA,EACjC,QAAQ,WAAW;AAAA,EACnB,QAAQ,WAAW,KAAK,aAAa;AAAA,EACrC,IAAI;AAAA,IACF,MAAM,WAAW,cAAc,QAAQ,UAAU,OAAO;AAAA,IACxD,IAAI;AAAA,MAAU,wBAAwB,QAAQ,UAAU,SAAS,KAAK,SAAS,UAAU;AAAA,IACzF,2BAA2B,MAAM,MAAM,KAAK;AAAA,IAC5C,OAAO,OAAO;AAAA,IACd,QAAQ,WAAW;AAAA,IACnB,QAAQ,WAAW;AAAA,IACnB,MAAM;AAAA;AAAA,EAER,SAAS,KAAK;AAAA,IACZ,SAAS,MAAM;AAAA,MACb,QAAQ,WAAW;AAAA,MACnB,QAAQ,WAAW;AAAA;AAAA,EAEvB,CAAC;AAAA;AAGH,SAAS,sBAAsB,CAC7B,WACA,SACA,SACA,SACA,UAC0B;AAAA,EAC1B,MAAM,UAAoC;AAAA,IACxC,IAAI,UAAU;AAAA,IACd,IAAI;AAAA,IACJ,WAAW,iBAAiB,OAAO;AAAA,EACrC;AAAA,EACA,MAAM,WAAW,cAAc,QAAQ,UAAU,OAAO;AAAA,EACxD,IAAI,CAAC;AAAA,IAAU,OAAO;AAAA,EACtB,MAAM,SAAS,oBAAoB;AAAA,IACjC,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA,UAAU,SAAS;AAAA,IACnB,aAAa,SAAS;AAAA,EACxB,CAAC;AAAA,EACD,MAAM,SAAS,QAAQ,SAAS,QAAQ;AAAA,EACxC,IAAI,CAAC,QAAQ;AAAA,IACX,MAAM,IAAI,gCAA+B,iDAAiD;AAAA,EAC5F;AAAA,EACA,OAAO,KAAK,SAAS,OAAO;AAAA;AAG9B,SAAS,kBAAkB,CACzB,SACA,OACA,WACA,aACA,SAC0B;AAAA,EAC1B,sBAAsB,SAAS,OAAO,SAAS;AAAA,EAC/C,MAAM,uBAAuB,sBAAsB,SAAS,SAAS;AAAA,EACrE,IAAI,gBAAgB,OAAO;AAAA,IACzB,OAAO,uBAAuB,SAAS,OAAO,WAAW,sBAAsB,OAAO;AAAA,EACxF;AAAA,EACA,MAAM,UAAU,uBAAuB,OAAO,SAAS;AAAA,EACvD,MAAM,mBAAmB,gBAAgB,QAAQ,UAAU,SAAS,MAAM,OAAO;AAAA,EACjF,MAAM,kBAAkB;AAAA,IACtB;AAAA,IACA,WAAW,QAAQ,WAAW;AAAA,IAC9B,WAAW,QAAQ;AAAA,IACnB,iBAAiB,qBAAqB;AAAA,EACxC;AAAA,EACA,MAAM,aAAa,cAAc,KAAK,iBAAiB,qBAAqB,CAAC;AAAA,EAC7E,wBAAwB,SAAS,WAAW,MAAM,OAAO;AAAA,EACzD,OAAO,EAAE,IAAI,UAAU,IAAI,IAAI,MAAM,WAAW,iBAAiB,WAAW,OAAO,EAAE;AAAA;AAGvF,SAAS,sBAAsB,CAC7B,SACA,OACA,WACA,sBACA,SAC0B;AAAA,EAC1B,MAAM,MAAM,aAAa,UAAU,IAAI,QAAQ,UAAU,IAAI,MAAM;AAAA,EACnE,MAAM,UAAU,MAAM,MAAM,MAAM,IAAI,GAAG;AAAA,EACzC,IAAI,CAAC,SAAS;AAAA,IACZ,MAAM,IAAI,gCAA+B,iCAAiC;AAAA,EAC5E;AAAA,EACA,MAAM,UAAU,gBAAgB,QAAQ,UAAU,SAAS,MAAM,OAAO;AAAA,EACxE,MAAM,WAAW,QAAQ;AAAA,EACzB,IAAI,OAAO;AAAA,EAEX,QAAQ,UAAU;AAAA,SACX;AAAA,MACH,IAAI,WAAW,YAAW,QAAQ,GAAG,MAAM,YAAW,UAAU,GAAG,GAAG;AAAA,QACpE,MAAM,IAAI,gCACR,eAAe,UAAU,IAAI,OAAO,gBAAgB,UAAU,IAAI,8BACpE;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ,UAAU,IAAI;AAAA,WAClB,yBAAyB,YAAY,EAAE,YAAY,qBAAqB,IAAI,CAAC;AAAA,MACnF;AAAA,MACA;AAAA,SACG;AAAA,MACH,IAAI,WAAW,YAAW,QAAQ,GAAG,MAAM,YAAW,UAAU,GAAG,GAAG;AAAA,QACpE,OAAO,EAAE,MAAM,SAAS,QAAQ,UAAU,IAAI,OAAO;AAAA,MACvD;AAAA,MACA;AAAA,SACG;AAAA,MACH,IAAI,YAAY,cAAa,SAAS,MAAM,MAAM,cAAa,UAAU,IAAI,MAAM,GAAG;AAAA,QACpF,OAAO;AAAA,MACT;AAAA,MACA;AAAA;AAAA,EAGJ,MAAM,UAAU,qBAAoB,QAAQ,MAAM,qBAAoB,IAAI;AAAA,EAC1E,QAAQ,WAAW;AAAA,EACnB,SAAS,KAAK;AAAA,IACZ,SAAS,MAAM;AAAA,MACb,QAAQ,WAAW;AAAA;AAAA,EAEvB,CAAC;AAAA,EACD,OAAO,EAAE,IAAI,UAAU,IAAI,IAAI,MAAM,WAAW,iBAAiB,OAAO,EAAE;AAAA;AAG5E,SAAS,sBAAsB,CAC7B,OACA,WACiB;AAAA,EACjB,MAAM,UAAU,MAAM,MAAM,MAAM,IAAI,YAAW,UAAU,GAAG,CAAC;AAAA,EAC/D,IAAI,CAAC;AAAA,IAAS,MAAM,IAAI,gCAA+B,4BAA4B;AAAA,EACnF,OAAO;AAAA;AAGT,SAAS,qBAAqB,CAC5B,SACA,OACA,WACM;AAAA,EACN,IAAI,UAAU,SAAS;AAAA,IAAe;AAAA,EACtC,MAAM,SAAS,MAAM,QAAQ,IAAI,cAAa,UAAU,IAAI,MAAM,CAAC;AAAA,EACnE,MAAM,SAAS,MAAM,QAAQ,IAAI,cAAa,UAAU,IAAI,MAAM,CAAC;AAAA,EACnE,MAAM,eAAe,UAAU,cAAc,QAAQ,UAAU,MAAM;AAAA,EACrE,MAAM,eAAe,UAAU,cAAc,QAAQ,UAAU,MAAM;AAAA,EACrE,IAAI,gBAAgB;AAAA,IAAc;AAAA,EAClC,MAAM,IAAI,gCAA+B,sDAAsD;AAAA;AAGjG,SAAS,qBAAqB,CAC5B,SACA,WACgE;AAAA,EAChE,IAAI,UAAU,SAAS;AAAA,IAAe;AAAA,EACtC,OAAO,gCAAgC,QAAQ,UAAU,UAAU,KAAK,UAAU,UAAU;AAAA;AAG9F,SAAS,uBAAuB,CAC9B,SACA,MACA,SACM;AAAA,EACN,MAAM,WAAW,QAAQ;AAAA,EACzB,QAAQ,WAAW;AAAA,EACnB,SAAS,KAAK;AAAA,IACZ,SAAS,MAAM;AAAA,MACb,QAAQ,WAAW;AAAA;AAAA,EAEvB,CAAC;AAAA;AAGH,SAAS,gBAAgB,CAAC,SAA2C;AAAA,EACnE,IAAI;AAAA,IAAS,OAAO;AAAA,EACpB,OAAO;AAAA;AAGT,SAAS,kBAAiB,CAAC,WAAgE;AAAA,EACzF,QAAQ,UAAU;AAAA,SACX;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,SACA;AAAA,SACA;AAAA,MACH,OAAO;AAAA;AAAA;;;AClRb,eAAsB,aAAa,CACjC,SACA,SACA,SACA,OACA,aAC0B;AAAA,EAC1B,2BAA2B,MAAM,MAAM,KAAK;AAAA,EAE5C,MAAM,gBAAyC,CAAC;AAAA,EAChD,WAAW,WAAW,cAAc,MAAM,OAAO,GAAG;AAAA,IAClD,MAAM,SAAS,MAAM,YAAY,SAAS,SAAS,SAAS,SAAS,WAAW;AAAA,IAChF,IAAI;AAAA,MAAQ,cAAc,KAAK,MAAM;AAAA,EACvC;AAAA,EAEA,MAAM,cAAqC,CAAC;AAAA,EAC5C,WAAW,WAAW,gBAAgB,MAAM,MAAM,KAAK,GAAG;AAAA,IACxD,MAAM,SAAS,MAAM,cACnB,SACA,SACA,SACA,MAAM,SACN,SACA,WACF;AAAA,IACA,IAAI;AAAA,MAAQ,YAAY,KAAK,MAAM;AAAA,EACrC;AAAA,EACA,WAAW,WAAW,gBAAgB,MAAM,MAAM,KAAK,GAAG;AAAA,IACxD,YAAY,KACV,GAAI,MAAM,cAAc,SAAS,SAAS,SAAS,MAAM,SAAS,SAAS,WAAW,CACxF;AAAA,EACF;AAAA,EAEA,OAAO,EAAE,SAAS,eAAe,OAAO,YAAY;AAAA;AAQtD,eAAe,aAAa,CAC1B,SACA,SACA,SACA,SACA,SACA,aACgC;AAAA,EAChC,MAAM,gBAA+C,CAAC;AAAA,EACtD,2BAA2B,eAAe,SAAS,YAAY,QAAQ;AAAA,EACvE,MAAM,WAAW,gBAAgB,QAAQ,UAAU,SAAS,OAAO;AAAA,EACnE,MAAM,UAAU,sBAAsB;AAAA,IACpC,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA,UAAU,YAAY,SAAS;AAAA,IAC/B,aAAa,YAAY,SAAS;AAAA,EACpC,CAAC;AAAA,EAED,MAAM,iBACJ,UAAU,OACV,QAAQ,QAAQ,QACf,QAAQ,WACL;AAAA,IACE,QAAQ,QAAQ,IAAI;AAAA,IACpB,QAAQ,QAAQ,IAAI;AAAA,IACpB,QAAQ,QAAQ,SAAS;AAAA,EAC3B,IACA;AAAA,EACN,MAAM,eAAe,kBAAiB,QAAQ,IAAI,QAAQ,QAAQ,IAAI,MAAM;AAAA,EAC5E,MAAM,OAAoC,cAAc,IAAI,CAAC,SAC3D,SAAS,MAAM,YAAY,CAC7B;AAAA,EACA,IAAI,gBAAgB;AAAA,IAClB,KAAK,KACH,mBAAmB,QAAQ,YAAW,cAAc,GAAG,gBAAe,cAAc,CAAC,CACvF;AAAA,EACF;AAAA,EACA,WAAW,UAAU,SAAS;AAAA,IAC5B,MAAM,iBAAgD,CAAC;AAAA,IACvD,wBAAwB,gBAAgB,MAAM;AAAA,IAC9C,MAAM,UAAU,gBAAe,OAAO,GAAG;AAAA,IACzC,KAAK,KAAK,GAAG,eAAe,IAAI,CAAC,SAAS,SAAS,MAAM,OAAO,CAAC,CAAC;AAAA,IAClE,KAAK,KAAK,UAAU,eAAe,SAAS,aAAa,MAAM,CAAC,CAAC;AAAA,EACnE;AAAA,EACA,MAAM,iBAAiB,SAAS,SAAS,SAAS,IAAI;AAAA,EACtD,OAAO;AAAA;AAGT,eAAe,WAAW,CACxB,SACA,SACA,SACA,SACA,aACuC;AAAA,EACvC,MAAM,QAAuC,CAAC;AAAA,EAC9C,yBAAyB,OAAO,SAAS,YAAY,QAAQ;AAAA,EAE7D,MAAM,WAAW,cAAc,QAAQ,UAAU,OAAO;AAAA,EACxD,IAAI;AAAA,IAAU,wBAAwB,QAAQ,UAAU,SAAS,KAAK,SAAS,UAAU;AAAA,EACzF,MAAM,SAAS,oBAAoB;AAAA,IACjC,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA,UAAU,YAAY,SAAS;AAAA,IAC/B,aAAa,YAAY,SAAS;AAAA,EACpC,CAAC;AAAA,EACD,IAAI;AAAA,IAAQ,0BAA0B,OAAO,MAAM;AAAA,EAEnD,MAAM,UAAU,kBAAiB,QAAQ,GAAG;AAAA,EAC5C,MAAM,OAAoC;AAAA,IACxC,mBAAmB,UAAU,cAAa,QAAQ,GAAG,GAAG,OAAO;AAAA,IAC/D,GAAG,MAAM,IAAI,CAAC,SAAS,SAAS,MAAM,OAAO,CAAC;AAAA,EAChD;AAAA,EACA,IAAI,QAAQ;AAAA,IACV,KAAK,KAAK,UAAU,iBAAiB,SAAS,aAAa,MAAM,CAAC,CAAC;AAAA,EACrE;AAAA,EACA,MAAM,iBAAiB,SAAS,SAAS,SAAS,IAAI;AAAA,EACtD,OAAO;AAAA;AAGT,eAAe,aAAa,CAC1B,SACA,SACA,SACA,SACA,SACA,aACqC;AAAA,EACrC,MAAM,QAAuC,CAAC;AAAA,EAC9C,2BAA2B,OAAO,SAAS,YAAY,QAAQ;AAAA,EAE/D,MAAM,WAAW,gBAAgB,QAAQ,UAAU,SAAS,OAAO;AAAA,EACnE,MAAM,SAAS,kBAAkB;AAAA,IAC/B,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA,UAAU,YAAY,SAAS;AAAA,IAC/B,aAAa,YAAY,SAAS;AAAA,EACpC,CAAC;AAAA,EACD,IAAI;AAAA,IAAQ,wBAAwB,OAAO,MAAM;AAAA,EAEjD,MAAM,UAAU,gBAAe,QAAQ,GAAG;AAAA,EAC1C,MAAM,OAAoC;AAAA,IACxC,mBAAmB,QAAQ,YAAW,QAAQ,GAAG,GAAG,OAAO;AAAA,IAC3D,GAAG,MAAM,IAAI,CAAC,SAAS,SAAS,MAAM,OAAO,CAAC;AAAA,EAChD;AAAA,EACA,IAAI,QAAQ;AAAA,IACV,KAAK,KAAK,UAAU,eAAe,SAAS,aAAa,MAAM,CAAC,CAAC;AAAA,EACnE;AAAA,EACA,MAAM,iBAAiB,SAAS,SAAS,SAAS,IAAI;AAAA,EACtD,OAAO;AAAA;AAGT,SAAS,gBAAgB,CACvB,SACA,aACA,QACA;AAAA,EACA,MAAM,eAAe,4BAA4B,SAAS,WAAW;AAAA,EACrE,OAAO,qCAAqC,KAAK,cAAc,OAAO,CAAC;AAAA;AAGzE,SAAS,cAAc,CACrB,SACA,aACA,QACA;AAAA,EACA,MAAM,eAAe,4BAA4B,SAAS,WAAW;AAAA,EACrE,OAAO,mCAAmC,KAAK,cAAc,OAAO,CAAC;AAAA;AAGvE,SAAS,2BAA2B,CAClC,SACA,aACA;AAAA,EACA,MAAM,OAAO;AAAA,IACX,WAAW,QAAQ;AAAA,IACnB,UAAU,YAAY,SAAS;AAAA,IAC/B,aAAa,YAAY,SAAS;AAAA,IAClC,QAAQ,YAAY;AAAA,IACpB,eAAe,YAAY;AAAA,EAC7B;AAAA,EACA,IAAI,YAAY,UAAU;AAAA,IAAW,OAAO;AAAA,EAC5C,OAAO,KAAK,MAAM,OAAO,YAAY,MAAM;AAAA;AAG7C,SAAS,aAAa,CAAC,SAAuD;AAAA,EAC5E,OAAO,CAAC,GAAG,QAAQ,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,UAAU,mBAAkB,KAAK,KAAK,MAAM,GAAG,CAAC;AAAA;AAG3F,SAAS,eAAe,CAAC,OAA8D;AAAA,EACrF,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,UAAU,iBAAgB,KAAK,KAAK,MAAM,GAAG,CAAC;AAAA;AAGvF,SAAS,eAAe,CAAC,OAA8D;AAAA,EACrF,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,UACrC,aAAa,KAAK,IAAI,QAAQ,KAAK,IAAI,MAAM,EAAE,cAC7C,aAAa,MAAM,IAAI,QAAQ,MAAM,IAAI,MAAM,CACjD,CACF;AAAA;;;ACxNF,eAAsB,WAAW,CAC/B,SACA,KAC2B;AAAA,EAC3B,MAAM,UAAU,kBAAkB,SAAS,GAAG;AAAA,EAC9C,OAAO,kBAAkB,SAAS,OAAO;AAAA;AAG3C,SAAS,iBAAiB,CACxB,SACA,KACoB;AAAA,EACpB,MAAM,QAAQ,6BAA4B,IAAI,KAAK;AAAA,EACnD,MAAM,iBAAiB,mBAAmB,KAAK;AAAA,EAC/C,MAAM,WAAW,2BAA0B;AAAA,IACzC,WAAW,QAAQ;AAAA,IACnB;AAAA,IACA,wBAAwB;AAAA,IACxB,KAAK,QAAQ,MAAM;AAAA,EACrB,CAAC;AAAA,EACD,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,QAAQ,MAAM;AAAA,IACd,WAAW,6BAA6B,QAAQ,WAAW,IAAI,KAAK;AAAA,EACtE;AAAA;AAGF,SAAS,kBAAkB,CAAC,OAAqC;AAAA,EAC/D,IAAI,MAAM,OAAO,SAAS,UAAU;AAAA,IAClC,OAAO,4BAA2B,MAAM,OAAO,KAAK;AAAA,EACtD;AAAA,EACA,OAAO,6BAA4B,MAAM,OAAO,SAAS;AAAA;AAG3D,eAAe,+BAA+B,CAC5C,SACA,WACA,OACA,WACe;AAAA,EACf,IAAI,MAAM,OAAO,SAAS;AAAA,IAAU;AAAA,EACpC,IAAI,CAAC,QAAQ,YAAY;AAAA,IACvB,MAAM,IAAI,gCACR,2EACF;AAAA,EACF;AAAA,EACA,MAAM,MAAM,MAAM,QAAQ,WAAW,uBAAuB;AAAA,IAC1D;AAAA,IACA,UAAU,MAAM,OAAO;AAAA,IACvB,OAAO,MAAM,OAAO;AAAA,EACtB,CAAC;AAAA,EACD,+BAA+B,WAAW,IAAI,aAAa,eAAe,IAAI,KAAK;AAAA;AAGrF,eAAe,yBAAyB,CACtC,SACA,WACA,OACA,WACe;AAAA,EACf,IAAI,MAAM,OAAO,SAAS,UAAU;AAAA,IAClC,+BAA+B,SAAS;AAAA,IACxC;AAAA,EACF;AAAA,EACA,wCAAwC,WAAW;AAAA,IACjD,MAAM;AAAA,IACN,IAAI,MAAM,OAAO;AAAA,IACjB,OAAO,MAAM,OAAO;AAAA,EACtB,CAAC;AAAA,EACD,IAAI,CAAC,QAAQ,YAAY;AAAA,IACvB,MAAM,IAAI,gCACR,2EACF;AAAA,EACF;AAAA,EACA,MAAM,MAAM,MAAM,QAAQ,WAAW,QAAQ,EAAE,WAAW,IAAI,MAAM,OAAO,MAAM,CAAC;AAAA,EAClF,IAAI,CAAC,KAAK;AAAA,IACR,MAAM,IAAI,gCAA+B,eAAe,MAAM,OAAO,uBAAuB;AAAA,EAC9F;AAAA,EACA,IAAI,IAAI,aAAa,MAAM,OAAO,UAAU;AAAA,IAC1C,MAAM,IAAI,8BACR,mBACA,eAAe,IAAI,kCAAkC,MAAM,OAAO,YACpE;AAAA,EACF;AAAA,EACA,+BAA+B,WAAW,IAAI,aAAa,eAAe,IAAI,KAAK;AAAA;AAGrF,eAAe,iBAAiB,CAC9B,SACA,SAC2B;AAAA,EAC3B,OAAO,uBAAuB,SAAS,MACrC,QAAQ,QAAQ,YAAY,CAAC,YAAY,uBAAuB,SAAS,SAAS,OAAO,GAAG;AAAA,IAC1F,WAAW;AAAA,EACb,CAAC,CACH;AAAA;AAGF,eAAe,sBAAsB,CACnC,SACA,SACA,SAC2B;AAAA,EAC3B,MAAM,4BAA4B,QAAQ,YAAY,QAAQ,SAAS;AAAA,EACvE,MAAM,0BAA0B,SAAS,QAAQ,WAAW,QAAQ,OAAO,QAAQ,SAAS;AAAA,EAE5F,MAAM,SAAS,MAAM,aACnB,SACA,QAAQ,UACR,QAAQ,UAAU,aAClB,OACF;AAAA,EACA,IAAI;AAAA,IAAQ,OAAO;AAAA,EAEnB,MAAM,gCACJ,SACA,QAAQ,WACR,QAAQ,OACR,QAAQ,SACV;AAAA,EAEA,MAAM,UAAU,MAAM,yBAAyB,SAAS,SAAS,OAAO;AAAA,EACxE,MAAM,eAAe,MAAM,qBACzB,SACA,QAAQ,SAAS,kBACjB,SACA,QAAQ,MAAM,UAChB;AAAA,EACA,MAAM,WAAW,oBAAoB,SAAS,cAAc,OAAO;AAAA,EACnE,MAAM,UAAU,MAAM,cACpB,SACA,QAAQ,SAAS,kBACjB,SACA,cACA,gBAAgB,OAAO,CACzB;AAAA,EACA,MAAM,gBAAgB,SAAS,QAAQ,SAAS,kBAAkB,OAAO;AAAA,EACzE,MAAM,aAAa,MAAM,kBACvB,SACA,QAAQ,SAAS,kBACjB,SACA,QAAQ,QACV;AAAA,EAEA,MAAM,SAA2B;AAAA,IAC/B,MAAM;AAAA,IACN,UAAU,QAAQ,SAAS;AAAA,IAC3B,SAAS;AAAA,IACT;AAAA,IACA,aAAa,QAAQ,SAAS;AAAA,IAC9B;AAAA,IACA;AAAA,EACF;AAAA,EACA,OAAO,4BAA4B,SAAS,SAAS,MAAM;AAAA;AAG7D,eAAe,wBAAwB,CACrC,SACA,SACA,SACiC;AAAA,EACjC,MAAM,SAAS,gBAAgB,SAAS,OAAO;AAAA,EAC/C,OAAO,QAAQ,SAAS,iBAAiB,MAAM;AAAA,IAC7C;AAAA,IACA,UAAU;AAAA,MACR,SAAS,CAAC;AAAA,SACP,iBAAiB,QAAQ,KAAK;AAAA,MACjC,QAAQ,CAAC;AAAA,IACX;AAAA,EACF,CAAC;AAAA;AAGH,SAAS,eAAe,CACtB,SACA,SACqB;AAAA,EACrB,MAAM,SAA8B;AAAA,IAClC,WAAW,QAAQ;AAAA,IACnB,IAAI,QAAQ,SAAS;AAAA,IACrB,gBAAgB,QAAQ,SAAS;AAAA,IACjC,aAAa,QAAQ,SAAS;AAAA,IAC9B,aAAa,QAAQ,UAAU;AAAA,IAC/B,QAAQ,QAAQ;AAAA,IAChB,kBAAkB,QAAQ,mBAAmB;AAAA,IAC7C,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,MAAM,QAAQ,MAAM;AAAA,MACpB,gBAAgB,QAAQ,MAAM,WAAW;AAAA,IAC3C;AAAA,IACA,aAAa,QAAQ,SAAS;AAAA,EAChC;AAAA,EACA,IAAI,QAAQ,UAAU,UAAU;AAAA,IAAW,OAAO;AAAA,EAClD,OAAO,KAAK,QAAQ,OAAO,QAAQ,UAAU,MAAM;AAAA;AAGrD,SAAS,gBAAgB,CAAC,OAA6B;AAAA,EACrD,IAAI,MAAM,SAAS,UAAU;AAAA,IAC3B,OAAO;AAAA,MACL,SAAS,MAAM;AAAA,MACf,OAAO,MAAM;AAAA,MACb,YAAY,MAAM;AAAA,IACpB;AAAA,EACF;AAAA,EACA,OAAO,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA;AAGlD,SAAS,mBAAmB,CAC1B,SACA,OACA,SAC4B;AAAA,EAC5B,MAAM,WAAuC,CAAC;AAAA,EAC9C,MAAM,QAAQ,0BAA0B,QAAQ,KAAK;AAAA,EACrD,WAAW,QAAQ,OAAO;AAAA,IACxB,SAAS,KAAK,GAAG,uBAAuB,SAAS,OAAO,SAAS,IAAI,CAAC;AAAA,EACxE;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,sBAAsB,CAC7B,SACA,OACA,SACA,MAC4B;AAAA,EAC5B,IAAI,KAAK,SAAS,gBAAgB;AAAA,IAChC,OAAO,wBAAwB,SAAS,OAAO,SAAS,KAAK,UAAU;AAAA,EACzE;AAAA,EACA,OAAO,CAAC,sBAAsB,SAAS,OAAO,KAAK,WAAW,OAAO,CAAC;AAAA;AAGxE,SAAS,qBAAqB,CAC5B,SACA,OACA,WACA,SAC0B;AAAA,EAC1B,IAAI;AAAA,IACF,OAAO,mBAAmB,SAAS,OAAO,WAAW,QAAQ,QAAQ;AAAA,IACrE,OAAO,OAAO;AAAA,IACd,IAAI,CAAC,4BAA4B,QAAQ,OAAO,KAAK;AAAA,MAAG,MAAM;AAAA,IAC9D,OAAO,EAAE,IAAI,UAAU,IAAI,IAAI,OAAO,OAAO,EAAE,MAAM,cAAc,SAAS,MAAM,QAAQ,EAAE;AAAA;AAAA;AAWhG,SAAS,uBAAuB,CAC9B,SACA,OACA,SACA,OAC4B;AAAA,EAC5B,MAAM,UAA2B,CAAC;AAAA,EAClC,MAAM,UAAsC,CAAC;AAAA,EAE7C,WAAW,aAAa,OAAO;AAAA,IAC7B,IAAI;AAAA,IACJ,IAAI;AAAA,MACF,UAAU,mBAAmB,SAAS,OAAO,WAAW,QAAQ,UAAU,OAAO;AAAA,MACjF,OAAO,OAAO;AAAA,MACd,IAAI,CAAC,4BAA4B,QAAQ,OAAO,KAAK;AAAA,QAAG,MAAM;AAAA,MAC9D,gBAAgB,OAAO;AAAA,MACvB,OAAO,gBAAgB,OAAO,MAAM,OAAO;AAAA;AAAA,IAE7C,IAAI,CAAC,QAAQ,IAAI;AAAA,MACf,gBAAgB,OAAO;AAAA,MACvB,OAAO,gBAAgB,OAAO,QAAQ,MAAM,OAAO;AAAA,IACrD;AAAA,IACA,QAAQ,KAAK,OAAO;AAAA,EACtB;AAAA,EACA,OAAO;AAAA;AAIT,SAAS,eAAe,CACtB,OACA,SAC4B;AAAA,EAC5B,OAAO,MAAM,IAAI,CAAC,eAAe;AAAA,IAC/B,IAAI,UAAU;AAAA,IACd,IAAI;AAAA,IACJ,OAAO,EAAE,MAAM,cAAuB,QAAQ;AAAA,EAChD,EAAE;AAAA;AAGJ,SAAS,2BAA2B,CAClC,OACA,OACyC;AAAA,EACzC,IAAI,MAAM,SAAS;AAAA,IAAU,OAAO;AAAA,EACpC,OAAO,iBAAiB;AAAA;AAG1B,SAAS,eAAe,CAAC,SAA6B;AAAA,EACpD,MAAM,UAAU;AAAA,IACd,UAAU,QAAQ;AAAA,IAClB,QAAQ,QAAQ;AAAA,IAChB,eAAe,QAAQ,UAAU;AAAA,EACnC;AAAA,EACA,IAAI,QAAQ,UAAU,UAAU;AAAA,IAAW,OAAO;AAAA,EAClD,OAAO,KAAK,SAAS,OAAO,QAAQ,UAAU,MAAM;AAAA;AAGtD,eAAe,2BAA2B,CACxC,SACA,SACA,QAC2B;AAAA,EAC3B,MAAM,UAAU,MAAM,QAAQ,SAAS,iBAAiB,SAAS;AAAA,IAC/D;AAAA,IACA,cAAc,EAAE,mBAAmB,CAAC,GAAG,OAAO;AAAA,EAChD,CAAC;AAAA,EACD,OAAO,QAAQ,OAAO;AAAA;;;ACvVxB,eAAsB,mCAAmC,CACvD,SACA,OACoC;AAAA,EACpC,MAAM,iBAAiB,QAAQ;AAAA,EAC/B,IAAI,CAAC,gBAAgB;AAAA,IACnB,MAAM,IAAI,gCACR,MAAM,0BACJ,mEACJ;AAAA,EACF;AAAA,EAEA,MAAM,MAAM,MAAM,eAAe,uBAAuB;AAAA,IACtD,IAAI,MAAM;AAAA,IACV,WAAW,MAAM;AAAA,IACjB,gBAAgB,MAAM;AAAA,IACtB,UAAU,MAAM;AAAA,EAClB,CAAC;AAAA,EACD,2BAA2B,KAAK,MAAM,QAAQ;AAAA,EAC9C,OAAO,EAAE,gBAAgB,IAAI;AAAA;AAGxB,SAAS,0BAA0B,CACxC,KACA,UACM;AAAA,EACN,IAAI,0BAA0B,KAAK,SAAS,UAAU;AAAA,IAAG;AAAA,EAEzD,MAAM,IAAI,8BACR,mBACA,mBAAmB,IAAI,oDAAoD,SAAS,gBACtF;AAAA;AAGF,SAAS,yBAAyB,CAChC,KACA,YACS;AAAA,EACT,QAAQ,WAAW;AAAA,SACZ;AAAA,SACA;AAAA,MACH,OAAO,kBAAkB,IAAI,UAAU,IAAI,OAAO,iBAAiB,WAAW;AAAA,SAC3E;AAAA,MACH,OACE,wBAAwB,IAAI,UAC5B,IAAI,OAAO,uBAAuB,WAAW,sBAC7C,IAAI,OAAO,uBAAuB,WAAW;AAAA;AAAA;;;AC9B9C,SAAS,0CAA0C,CACxD,OACmC;AAAA,EACnC,MAAM,OAAO;AAAA,IACX,cAAc,MAAM,SAAS;AAAA,IAC7B,gBAAgB,MAAM;AAAA,IACtB,kBAAkB,MAAM;AAAA,IACxB,oBAAoB,MAAM,SAAS;AAAA,IACnC,eAAe,MAAM,SAAS;AAAA,EAChC;AAAA,EAEA,QAAQ,MAAM,SAAS,WAAW;AAAA,SAC3B;AAAA,MACH,OAAO,KAAK,MAAM,gBAAgB,UAAU,UAAU,cAAc;AAAA,SACjE;AAAA,MACH,OAAO,KAAK,MAAM,gBAAgB,QAAQ,UAAU,cAAc;AAAA,SAC/D;AAAA,MACH,OAAO,KAAK,MAAM,gBAAgB,aAAa,UAAU,YAAY;AAAA;AAAA,MAErE,MAAM,IAAI,gCAA+B,6CAA6C;AAAA;AAAA;;;ACnB5F,eAAsB,mBAAmB,CACvC,SACA,KACe;AAAA,EACf,MAAM,UAAU,2BAA2B,SAAS,GAAG;AAAA,EACvD,MAAM,uBAAuB,SAAS,MACpC,QAAQ,QAAQ,YAAY,CAAC,YAAY,+BAA+B,SAAS,OAAO,GAAG;AAAA,IACzF,WAAW;AAAA,EACb,CAAC,CACH;AAAA;AAGF,SAAS,0BAA0B,CACjC,SACA,KAC6B;AAAA,EAC7B,4BAA4B,IAAI,KAAK;AAAA,EACrC,MAAM,SAAS,6BAA6B,IAAI,MAAM,MAAM;AAAA,EAC5D,MAAM,iBAAiB,8BAA8B,IAAI,MAAM,cAAc;AAAA,EAC7E,MAAM,sBAAsB,8BAA6B,IAAI,MAAM,SAAS;AAAA,EAC5E,MAAM,WACJ,IAAI,MAAM,aAAa,gBACnB,QAAQ,mBAAmB,cAAc,OAAO,YAAY,IAC5D,QAAQ,mBAAmB,iBAAiB,OAAO,YAAY;AAAA,EACrE,IAAI,SAAS,cAAc,eAAe,WAAW;AAAA,IACnD,MAAM,IAAI,gCACR,eAAe,SAAS,mCAAmC,SAAS,aACtE;AAAA,EACF;AAAA,EACA,MAAM,WAAW,2CAA2C;AAAA,IAC1D;AAAA,IACA;AAAA,IACA,kBAAkB,QAAQ,mBAAmB;AAAA,EAC/C,CAAC;AAAA,EACD,OAAO;AAAA,IACL,WAAW,QAAQ;AAAA,IACnB,OAAO,KAAK,IAAI,OAAO,QAAQ,gBAAgB,WAAW,oBAAoB;AAAA,IAC9E;AAAA,IACA;AAAA,IACA,YAAY,IAAI,KAAK,IAAI,MAAM,cAAc,QAAQ,MAAM,CAAC;AAAA,IAC5D,WAAW,6BAA6B,QAAQ,WAAW,IAAI,KAAK;AAAA,EACtE;AAAA;AAGF,eAAe,8BAA8B,CAC3C,SACA,SACe;AAAA,EACf,MAAM,4BAA4B,QAAQ,YAAY,QAAQ,SAAS;AAAA,EACvE,wCAAwC,QAAQ,WAAW;AAAA,IACzD,MAAM;AAAA,IACN,IAAI,QAAQ,MAAM,OAAO;AAAA,IACzB,OAAO,QAAQ,MAAM,UAAU;AAAA,EACjC,CAAC;AAAA,EACD,QAAQ,gBAAgB,QAAQ,MAAM,oCAAoC,SAAS;AAAA,IACjF,WAAW,QAAQ;AAAA,IACnB,iBAAiB,QAAQ,MAAM,UAAU;AAAA,IACzC,gBAAgB,QAAQ,MAAM,UAAU;AAAA,IACxC,UAAU,QAAQ;AAAA,IAClB,UAAU,QAAQ;AAAA,EACpB,CAAC;AAAA,EACD,+BAA+B,QAAQ,WAAW,IAAI,aAAa,mBAAmB,IAAI,KAAK;AAAA,EAE/F,IAAI,QAAQ,MAAM,aAAa,eAAe;AAAA,IAC5C,MAAM,kCAAkC,SAAS,OAAO;AAAA,EAC1D;AAAA,EAEA,MAAM,eAAe,OAAO;AAAA,IAC1B,IAAI,QAAQ,MAAM,UAAU;AAAA,IAC5B,WAAW,QAAQ;AAAA,IACnB,gBAAgB,QAAQ,MAAM,UAAU;AAAA,IACxC,UAAU,QAAQ;AAAA,OACf,iBAAiB,QAAQ,KAAK;AAAA,IACjC,YAAY,QAAQ;AAAA,EACtB,CAAC;AAAA;AAGH,SAAS,2BAA2B,CAAC,OAAuC;AAAA,EAC1E,IAAI,MAAM,aAAa,iBAAiB,MAAM,aAAa,aAAa;AAAA,IACtE,MAAM,IAAI,gCAA+B,wCAAwC;AAAA,EACnF;AAAA,EACA,IAAI,MAAM,WAAW,eAAe,MAAM,WAAW,YAAY,MAAM,WAAW,aAAa;AAAA,IAC7F,MAAM,IAAI,gCAA+B,4CAA4C;AAAA,EACvF;AAAA,EACA,MAAM,iBAAiB,oBAAoB,QAAQ,MAAM,iBAAiB;AAAA,EAC1E,IAAI,MAAM,WAAW,eAAe,MAAM,aAAa,aAAa;AAAA,IAClE,IAAI,mBAAmB;AAAA,MAAM;AAAA,IAC7B,MAAM,IAAI,gCACR,oFACF;AAAA,EACF;AAAA,EACA,IAAI,mBAAmB,WAAW;AAAA,IAChC,MAAM,IAAI,gCACR,oEACF;AAAA,EACF;AAAA;AAGF,SAAS,gBAAgB,CAAC,OAAgE;AAAA,EACxF,IAAI,MAAM,WAAW,aAAa;AAAA,IAChC,OAAO;AAAA,MACL,UAAU,MAAM;AAAA,MAChB,QAAQ,MAAM;AAAA,SACV,MAAM,UAAU,YAAY,CAAC,IAAI,EAAE,OAAO,MAAM,MAAM;AAAA,IAC5D;AAAA,EACF;AAAA,EACA,IAAI,MAAM,aAAa,aAAa;AAAA,IAClC,OAAO,EAAE,UAAU,aAAa,QAAQ,aAAa,gBAAgB,KAAK;AAAA,EAC5E;AAAA,EACA,OAAO,EAAE,UAAU,eAAe,QAAQ,YAAY;AAAA;AAGxD,eAAe,iCAAiC,CAC9C,SACA,SACe;AAAA,EACf,MAAM,SAAS,MAAM,QAAQ,SAAS,QAAQ,YAAY;AAAA,IACxD,WAAW,QAAQ;AAAA,IACnB,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,iBAAiB,QAAQ,MAAM,UAAU;AAAA,IAC3C;AAAA,EACF,CAAC;AAAA,EACD,IAAI,QAAQ,MAAM,WAAW,aAAa;AAAA,IACxC,IAAI,CAAC,QAAQ;AAAA,MACX,MAAM,IAAI,8BACR,mBACA,+BAA+B,QAAQ,MAAM,UAAU,oEACzD;AAAA,IACF;AAAA,IACA,mCAAmC,QAAQ,OAAO;AAAA,IAClD;AAAA,EACF;AAAA,EACA,IAAI,QAAQ;AAAA,IACV,MAAM,IAAI,8BACR,mBACA,+BAA+B,QAAQ,MAAM,UAAU,sCAAsC,QAAQ,MAAM,2CAC7G;AAAA,EACF;AAAA;AAGF,SAAS,kCAAkC,CACzC,QACA,SACM;AAAA,EACN,QAAQ,OAAO,aAAa;AAAA,EAC5B,IACE,OAAO,OAAO,SAAS,gBACvB,OAAO,gBAAgB,QAAQ,UAAU,eACzC,OAAO,OAAO,SAAS,gBACvB,OAAO,OAAO,SAAS,gBACvB,OAAO,OAAO,oBAAoB,MAAM,UAAU,mBAClD,OAAO,OAAO,iBAAiB,MAAM,OAAO,gBAC5C,OAAO,OAAO,OAAO,iBAAiB,MAAM,OAAO,gBACnD,CAAC,qBAAqB,OAAO,OAAO,gBAAgB,MAAM,cAAc,KACxE,OAAO,qBAAqB,SAAS,oBACrC,OAAO,uBAAuB,SAAS,sBACvC,OAAO,kBAAkB,SAAS,eAClC;AAAA,IACA,MAAM,IAAI,8BACR,mBACA,+BAA+B,MAAM,UAAU,kDACjD;AAAA,EACF;AAAA;AAGF,SAAS,oBAAoB,CAAC,MAA4B,OAAsC;AAAA,EAC9F,OACE,KAAK,cAAc,MAAM,aACzB,KAAK,cAAc,MAAM,aACzB,KAAK,cAAc,MAAM;AAAA;;;ACzLtB,SAAS,8BAA8B,CAC5C,UACA,UAC0B;AAAA,EAC1B,MAAM,SAAS,uBAAuB,QAAQ;AAAA,EAC9C,OAAO,CAAC,UAAU,wBAAwB,UAAU,UAAU,QAAQ,KAAK;AAAA;AAG7E,SAAS,sBAAsB,CAAC,UAAgE;AAAA,EAC9F,MAAM,kBAAkB,IAAI,IAC1B,SAAS,UAAU,QAAQ,IAAI,CAAC,WAAW,CAAC,OAAO,cAAc,IAAI,IAAI,OAAO,WAAW,CAAC,CAAC,CAC/F;AAAA,EACA,MAAM,aAAa,IAAI,IACrB,SAAS,UAAU,MAAM,IAAI,CAAC,SAAS,iBAAiB,KAAK,oBAAoB,KAAK,MAAM,CAAC,CAC/F;AAAA,EACA,IAAI,SAAS,WAAW,SAAS,8BAA8B;AAAA,IAC7D,OAAO;AAAA,MACL,kBAAkB;AAAA,MAClB,yBAAyB;AAAA,MACzB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,kBAAkB;AAAA,IAClB,yBAAyB;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AAAA;AAGF,SAAS,uBAAuB,CAC9B,UACA,UACA,QACA,OACuB;AAAA,EACvB,uBAAuB,UAAU,QAAQ,KAAK;AAAA,EAC9C,OAAO;AAAA,IACL,MAAM,MAAM;AAAA,IACZ,YAAY,MAAM,WAAW,IAAI,CAAC,cAChC,4BAA4B,UAAU,UAAU,QAAQ,SAAS,CACnE;AAAA,EACF;AAAA;AAGF,SAAS,sBAAsB,CAC7B,UACA,QACA,OACM;AAAA,EACN,IAAI,MAAM,KAAK,SAAS,OAAO;AAAA,IAAkB;AAAA,EACjD,MAAM,IAAI,gCACR,eAAe,SAAS,0BAA0B,OAAO,+BAC3D;AAAA;AAGF,SAAS,2BAA2B,CAClC,UACA,UACA,QACA,WACqB;AAAA,EACrB,IAAI,UAAU,SAAS,UAAU;AAAA,IAC/B,OAAO,wBAAwB,UAAU,UAAU,QAAQ,SAAS;AAAA,EACtE;AAAA,EACA,OAAO,sBAAsB,UAAU,UAAU,QAAQ,SAAS;AAAA;AAGpE,SAAS,uBAAuB,CAC9B,UACA,UACA,QACA,WACiB;AAAA,EACjB,IACE,SAAS,WAAW,SAAS,gCAC7B,UAAU,IAAI,iBAAiB,SAAS,WAAW,cACnD;AAAA,IACA,MAAM,IAAI,gCACR,uDACF;AAAA,EACF;AAAA,EAEA,MAAM,aAAa,kCACjB,UACA,UAAU,KACV,UAAU,UACZ;AAAA,EACA,MAAM,QAAQ,OAAO,gBAAgB,IAAI,UAAU,IAAI,YAAY,KAAK,IAAI;AAAA,EAC5E,WAAW,cAAc,OAAO,KAAK,UAAU,GAAG;AAAA,IAChD,IAAI,MAAM,IAAI,UAAU;AAAA,MAAG;AAAA,IAC3B,MAAM,IAAI,gCACR,eAAe,SAAS,4CAA4C,UAAU,IAAI,gBAAgB,cACpG;AAAA,EACF;AAAA,EACA,MAAM,qBAAqB,SAAS,WAAW,sBAAsB,EAAE,UAAU,WAAW;AAAA,EAC5F,IAAI,mBAAmB,aAAa,cAAc;AAAA,IAChD,OAAO,EAAE,MAAM,UAAU,KAAK,UAAU,KAAK,WAAW;AAAA,EAC1D;AAAA,EACA,IAAI,UAAU,oBAAoB,WAAW;AAAA,IAC3C,MAAM,IAAI,gCACR,eAAe,SAAS,oDACtB,IAAI,mBAAmB,6CAC3B;AAAA,EACF;AAAA,EACA,MAAM,oBAAoB,SAAS,qBAAqB,UAAU,IAAI,YAAY;AAAA,EAClF,MAAM,0BAA0B,CAAC,GAAG,KAAK,EACtC,OACC,CAAC,eAAe,eAAe,qBAAqB,CAAC,OAAO,OAAO,YAAY,UAAU,CAC3F,EACC,KAAK;AAAA,EACR,OAAO;AAAA,IACL,MAAM;AAAA,IACN,KAAK,UAAU;AAAA,IACf;AAAA,IACA,iBAAiB,UAAU;AAAA,OACvB,wBAAwB,WAAW,IAAI,CAAC,IAAI,EAAE,wBAAwB;AAAA,EAC5E;AAAA;AAGF,SAAS,qBAAqB,CAC5B,UACA,UACA,QACA,WACe;AAAA,EACf,MAAM,eAAe,iBAAiB,UAAU,IAAI,OAAO,cAAc,UAAU,IAAI,MAAM;AAAA,EAC7F,IAAI,CAAC,OAAO,WAAW,IAAI,YAAY,GAAG;AAAA,IACxC,MAAM,IAAI,gCAA+B,qDAAqD;AAAA,EAChG;AAAA,EAEA,MAAM,uBAAuB,yBAAyB,UAAU,SAAS;AAAA,EACzE,IAAI,yBAAyB,UAAU,IAAI,OAAO,cAAc;AAAA,IAC9D,MAAM,IAAI,gCACR,eAAe,SAAS,4CAA4C,UAAU,IAAI,OAAO,oCAC3F;AAAA,EACF;AAAA,EAEA,gCAAgC,UAAU,UAAU,KAAK,UAAU,UAAU;AAAA,EAC7E,IAAI,UAAU,eAAe,WAAW;AAAA,IACtC,MAAM,IAAI,gCACR,eAAe,SAAS,uDAC1B;AAAA,EACF;AAAA,EACA,OAAO,KAAK,UAAU;AAAA;AAGxB,SAAS,wBAAwB,CAC/B,UACA,WACoB;AAAA,EACpB,IAAI,SAAS,WAAW,SAAS,4BAA4B;AAAA,IAC3D,OAAO,SAAS,WAAW;AAAA,EAC7B;AAAA,EACA,IAAI,SAAS,WAAW,SAAS,8BAA8B;AAAA,IAC7D,OAAO,SAAS,WAAW,MAAM,UAAU,IAAI,SAAS;AAAA,EAC1D;AAAA,EACA;AAAA;;;AC1HF,eAAsB,yBAAyB,CAC7C,SACA,SACA,SACA,OACgC;AAAA,EAChC,MAAM,SAAS,YAAY;AAAA,EAC3B,IAAI,MAAM,mBAAmB,UAAU;AAAA,IACrC,MAAM,sBAAsB,SAAS,SAAS,SAAS,OAAO,MAAM;AAAA,EACtE;AAAA,EACA,MAAM,oBAAoB,SAAS,SAAS,SAAS,OAAO,MAAM;AAAA,EAClE,MAAM,0BAA0B,SAAS,SAAS,SAAS,MAAM,MAAM;AAAA,EACvE,OAAO;AAAA;AAGT,eAAe,qBAAqB,CAClC,SACA,SACA,SACA,OACA,QACe;AAAA,EACf,iBAAiB,QAAQ,QAAQ,6BAA6B;AAAA,IAC5D;AAAA,IACA,QAAQ,MAAM;AAAA,IACd,4BAA4B,MAAM;AAAA,IAClC,YAAY;AAAA,IACZ,UAAU,QAAQ,SAAS;AAAA,EAC7B,CAAC,GAAG;AAAA,IACF,eAAe,MAAM,MAAM;AAAA,IAC3B,MAAM,OAAO,eAAe,SAAS,OAAO,MAAM,MAAM;AAAA,IACxD,MAAM,iBAAiB,SAAS,SAAS,SAAS,IAAI;AAAA,EACxD;AAAA;AAGF,SAAS,cAAc,CACrB,SACA,OACA,MACA,QAC6B;AAAA,EAC7B,MAAM,OAAoC,CAAC;AAAA,EAC3C,WAAW,SAAS,KAAK,SAAS;AAAA,IAChC,KAAK,KAAK,GAAG,sBAAsB,SAAS,OAAO,OAAO,MAAM,CAAC;AAAA,EACnE;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,qBAAqB,CAC5B,SACA,OACA,OACA,QAC6B;AAAA,EAC7B,MAAM,WAAW,yBAAyB,SAAS,KAAK;AAAA,EACxD,IAAI;AAAA,IAAU,wBAAwB,QAAQ,UAAU,SAAS,KAAK,SAAS,UAAU;AAAA,EAEzF,MAAM,SAAS,oBAAoB;AAAA,IACjC,QAAQ,MAAM;AAAA,IACd;AAAA,IACA,UAAU,MAAM,SAAS;AAAA,IACzB,aAAa,MAAM,SAAS;AAAA,EAC9B,CAAC;AAAA,EACD,MAAM,UAAU,kBAAiB,MAAM,GAAG;AAAA,EAC1C,MAAM,OAAoC;AAAA,IACxC,mBAAmB,UAAU,cAAa,MAAM,GAAG,GAAG,OAAO;AAAA,IAC7D;AAAA,MACE,MAAM;AAAA,MACN,WAAW,aAAa;AAAA,MACxB,KAAK,MAAM;AAAA,MACX,QAAQ,aAAa;AAAA,IACvB;AAAA,EACF;AAAA,EACA,IAAI,QAAQ,MAAM,SAAS,MAAM,QAAQ,QAAQ,GAAG;AAAA,IAClD,KAAK,KAAK,EAAE,MAAM,mBAAmB,WAAW,YAAY,WAAW,KAAK,MAAM,IAAI,CAAC;AAAA,EACzF;AAAA,EAEA,IAAI,CAAC,QAAQ;AAAA,IACX,OAAO,oBAAoB;AAAA,IAC3B,OAAO;AAAA,EACT;AAAA,EAEA,qBAAqB,QAAQ,OAAO,IAAI;AAAA,EACxC,uBAAuB,MAAM,SAAS,SAAS,OAAO,MAAM;AAAA,EAC5D,OAAO;AAAA;AAGT,SAAS,sBAAsB,CAC7B,MACA,SACA,SACA,OACA,QACM;AAAA,EACN,MAAM,QAAuC,CAAC;AAAA,EAC9C,0BAA0B,OAAO,MAAM;AAAA,EACvC,WAAW,QAAQ;AAAA,IAAO,KAAK,KAAK,SAAS,MAAM,OAAO,CAAC;AAAA,EAC3D,KAAK,KACH,UACE,qCAAqC;AAAA,IACnC,WAAW,QAAQ;AAAA,IACnB,UAAU,MAAM,SAAS;AAAA,IACzB,aAAa,MAAM,SAAS;AAAA,IAC5B,QAAQ,MAAM;AAAA,IACd,eAAe,MAAM;AAAA,IACrB;AAAA,EACF,CAAC,CACH,CACF;AAAA;AAGF,eAAe,mBAAmB,CAChC,SACA,SACA,SACA,OACA,QACe;AAAA,EACf,iBAAiB,QAAQ,QAAQ,6BAA6B;AAAA,IAC5D;AAAA,IACA,QAAQ,MAAM;AAAA,IACd,4BAA4B,MAAM;AAAA,IAClC,YAAY;AAAA,IACZ,UAAU,QAAQ,SAAS;AAAA,EAC7B,CAAC,GAAG;AAAA,IACF,eAAe,MAAM,MAAM;AAAA,IAC3B,MAAM,oBAAoB,MAAM,sBAAsB,SAAS,SAAS,SAAS,IAAI;AAAA,IACrF,MAAM,OAAO,aAAa,SAAS,OAAO,MAAM,mBAAmB,MAAM;AAAA,IACzE,MAAM,iBAAiB,SAAS,SAAS,SAAS,IAAI;AAAA,EACxD;AAAA;AAGF,eAAe,qBAAqB,CAClC,SACA,SACA,SACA,MACuC;AAAA,EACvC,MAAM,eAAe,oBAAoB,KAAK,KAAK;AAAA,EACnD,MAAM,oBAAoB,IAAI;AAAA,EAC9B,WAAW,SAAS,MAAM,QAAQ,oBAAoB;AAAA,IACpD;AAAA,IACA,MAAM,CAAC,GAAG,aAAa,OAAO,CAAC;AAAA,EACjC,CAAC,GAAG;AAAA,IACF,kBAAkB,IAAI,cAAa,MAAM,GAAG,GAAG,MAAM,MAAM;AAAA,EAC7D;AAAA,EAEA,MAAM,mBAAmB,CAAC,GAAG,aAAa,OAAO,CAAC,EAAE,OAClD,CAAC,QAAQ,CAAC,kBAAkB,IAAI,cAAa,GAAG,CAAC,CACnD;AAAA,EACA,IAAI,iBAAiB,WAAW;AAAA,IAAG,OAAO;AAAA,EAE1C,iBAAiB,gBAAgB,QAAQ,YAAY;AAAA,IACnD;AAAA,IACA,UAAU,gBAAgB;AAAA,MACxB,SAAS;AAAA,MACT,OAAO,CAAC;AAAA,MACR,YAAY,CAAC;AAAA,MACb,iBAAiB,CAAC;AAAA,MAClB,QAAQ,CAAC;AAAA,IACX,CAAC;AAAA,IACD,UAAU,QAAQ,SAAS;AAAA,EAC7B,CAAC,GAAG;AAAA,IACF,WAAW,YAAY,aAAa,SAAS;AAAA,MAC3C,kBAAkB,IAAI,cAAa,SAAS,GAAG,GAAG,SAAS,cAAc,IAAI;AAAA,IAC/E;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,mBAAmB,CAC1B,OACwC;AAAA,EACxC,MAAM,OAAO,IAAI;AAAA,EACjB,WAAW,SAAS,OAAO;AAAA,IACzB,KAAK,IAAI,cAAa,MAAM,IAAI,MAAM,GAAG,MAAM,IAAI,MAAM;AAAA,IACzD,KAAK,IAAI,cAAa,MAAM,IAAI,MAAM,GAAG,MAAM,IAAI,MAAM;AAAA,EAC3D;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,YAAY,CACnB,SACA,OACA,MACA,mBACA,QAC6B;AAAA,EAC7B,MAAM,OAAoC,CAAC;AAAA,EAC3C,WAAW,SAAS,KAAK,OAAO;AAAA,IAC9B,KAAK,KAAK,GAAG,oBAAoB,SAAS,OAAO,OAAO,mBAAmB,MAAM,CAAC;AAAA,EACpF;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,mBAAmB,CAC1B,SACA,OACA,OACA,mBACA,QAC6B;AAAA,EAC7B,MAAM,WAAW,uBAAuB,SAAS,OAAO,iBAAiB;AAAA,EACzE,MAAM,OAAO,gBAAgB,SAAS,OAAO,aAAa,IAAI;AAAA,EAC9D,IAAI,CAAC,MAAM;AAAA,IAAc,OAAO;AAAA,EAEhC,MAAM,SAAS,kBAAkB;AAAA,IAC/B,QAAQ,MAAM;AAAA,IACd;AAAA,IACA,UAAU,MAAM,SAAS;AAAA,IACzB,aAAa,MAAM,SAAS;AAAA,EAC9B,CAAC;AAAA,EACD,MAAM,UAAU,gBAAe,MAAM,GAAG;AAAA,EACxC,KAAK,KAAK,mBAAmB,QAAQ,YAAW,MAAM,GAAG,GAAG,OAAO,CAAC;AAAA,EACpE,IAAI,CAAC,QAAQ;AAAA,IACX,OAAO,kBAAkB;AAAA,IACzB,OAAO;AAAA,EACT;AAAA,EAEA,mBAAmB,QAAQ,OAAO,IAAI;AAAA,EACtC,qBAAqB,MAAM,SAAS,SAAS,OAAO,MAAM;AAAA,EAC1D,OAAO;AAAA;AAGT,SAAS,sBAAsB,CAC7B,SACA,OACA,mBACA;AAAA,EACA,IAAI,CAAC,MAAM;AAAA,IAAc,OAAO,MAAM;AAAA,EACtC,MAAM,aAAa,QAAQ,SACxB,kBAAkB,MAAM,IAAI,OAAO,YAAY,EAC/C,MAAM,KAAK,CAAC,cAAc,UAAU,OAAO,MAAM,IAAI,MAAM;AAAA,EAC9D,IAAI,YAAY,gBAAgB,OAAO;AAAA,IACrC,OAAO,+BAA+B;AAAA,MACpC,KAAK,MAAM;AAAA,MACX,QAAQ,MAAM;AAAA,MACd,UAAU,uBAAuB,MAAM,YAAY;AAAA,MACnD,gBAAgB,CAAC,QAAQ,kBAAkB,IAAI,cAAa,GAAG,CAAC,KAAK;AAAA,IACvE,CAAC;AAAA,EACH;AAAA,EACA,OAAO,qBAAqB;AAAA,IAC1B,KAAK,MAAM;AAAA,IACX,QAAQ,MAAM;AAAA,IACd,UAAU,MAAM,UAAU,SAAS;AAAA,IACnC,sBAAsB,kBAAkB,IAAI,cAAa,MAAM,IAAI,MAAM,CAAC,KAAK;AAAA,IAC/E,sBAAsB,kBAAkB,IAAI,cAAa,MAAM,IAAI,MAAM,CAAC,KAAK;AAAA,EACjF,CAAC;AAAA;AAGH,SAAS,eAAe,CACtB,SACA,OACA,UAC6B;AAAA,EAC7B,MAAM,aAAa,QAAQ,SACxB,kBAAkB,MAAM,IAAI,OAAO,YAAY,EAC/C,MAAM,KAAK,CAAC,cAAc,UAAU,OAAO,MAAM,IAAI,MAAM;AAAA,EAC9D,IAAI,YAAY,gBAAgB;AAAA,IAAO,OAAO,CAAC;AAAA,EAE/C,MAAM,eAAe,kBAAiB,MAAM,IAAI,QAAQ,MAAM,IAAI,MAAM;AAAA,EACxE,MAAM,cAAc,gBAAe,MAAM,GAAG;AAAA,EAC5C,OAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,WAAW,yBAAyB,gBAAgB;AAAA,MACpD,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,KAAK,MAAM;AAAA,MACX,UAAU,MAAM,oBAAoB;AAAA,IACtC;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,WAAW,yBAAyB,gBAAgB;AAAA,MACpD,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,KAAK,MAAM;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA;AAGF,SAAS,oBAAoB,CAC3B,MACA,SACA,SACA,OACA,QACM;AAAA,EACN,MAAM,QAAuC,CAAC;AAAA,EAC9C,wBAAwB,OAAO,MAAM;AAAA,EACrC,WAAW,QAAQ;AAAA,IAAO,KAAK,KAAK,SAAS,MAAM,OAAO,CAAC;AAAA,EAC3D,KAAK,KACH,UACE,mCAAmC;AAAA,IACjC,WAAW,QAAQ;AAAA,IACnB,UAAU,MAAM,SAAS;AAAA,IACzB,aAAa,MAAM,SAAS;AAAA,IAC5B,QAAQ,MAAM;AAAA,IACd,eAAe,MAAM;AAAA,IACrB;AAAA,EACF,CAAC,CACH,CACF;AAAA;AAGF,SAAS,wBAAwB,CAC/B,SACA,OACA;AAAA,EACA,OAAO,uBAAuB;AAAA,IAC5B,KAAK,MAAM;AAAA,IACX,mBAAmB,QAAQ,SAAS,qBAAqB,MAAM,IAAI,YAAY;AAAA,IAC/E,QAAQ,MAAM;AAAA,IACd,UAAU,MAAM,UAAU,SAAS;AAAA,IACnC,UAAU,qBAAqB,MAAM,QAAQ;AAAA,IAC7C,iBAAiB,MAAM;AAAA,EACzB,CAAC;AAAA;AAGH,SAAS,WAAW,GAAkB;AAAA,EACpC,OAAO;AAAA,IACL,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,IAClB,cAAc;AAAA,IACd,cAAc;AAAA,IACd,cAAc;AAAA,IACd,gBAAgB;AAAA,EAClB;AAAA;AAKF,SAAS,oBAAoB,CAAC,QAAuB,MAA2C;AAAA,EAC9F,IAAI,SAAS;AAAA,IAAW,OAAO,kBAAkB;AAAA,EAC5C,SAAI,SAAS;AAAA,IAAW,OAAO,kBAAkB;AAAA,EACjD;AAAA,WAAO,kBAAkB;AAAA;AAGhC,SAAS,kBAAkB,CAAC,QAAuB,MAAyC;AAAA,EAC1F,IAAI,SAAS;AAAA,IAAW,OAAO,gBAAgB;AAAA,EAC1C,SAAI,SAAS;AAAA,IAAW,OAAO,gBAAgB;AAAA,EAC/C;AAAA,WAAO,gBAAgB;AAAA;;;AC7X9B,eAAsB,8BAA8B,CAClD,SAIA,OAa0C;AAAA,EAC1C,MAAM,QAAQ,QAAQ,SAAS,QAAQ,qBAAqB;AAAA,IAC1D,WAAW,QAAQ;AAAA,IACnB,QAAQ,MAAM;AAAA,IACd,mBAAmB,MAAM;AAAA,IACzB,WAAW,MAAM;AAAA,IACjB,gBAAgB,MAAM;AAAA,IACtB,UAAU;AAAA,IACV,gBAAgB,MAAM;AAAA,IACtB,oBAAoB,MAAM;AAAA,IAC1B,eAAe,MAAM;AAAA,IACrB,kBAAkB,QAAQ,mBAAmB;AAAA,IAC7C,WAAW,MAAM;AAAA,EACnB,CAAC;AAAA,EAED,IAAI,YAAY;AAAA,EAChB,IAAI,iBAAiB;AAAA,EACrB,gBAAgB,UAAU,GAAwC;AAAA,IAChE,iBAAiB,YAAY,MAAM,SAAS;AAAA,MAC1C,eAAe,MAAM,MAAM;AAAA,MAC3B,MAAM,QAAQ,MAAM,cAAc,gCAA+B,QAAQ,CAAC;AAAA,MAC1E,MAAM,iBAAiB;AAAA,MACvB,WAAW,aAAa,MAAM,YAAY;AAAA,QACxC,kBAAkB;AAAA,QAClB,MAAM,EAAE,MAAM,MAAM,MAAM,WAAW,eAAe;AAAA,MACtD;AAAA,MACA,aAAa;AAAA,IACf;AAAA,IACA,eAAe,MAAM,MAAM;AAAA;AAAA,EAG7B,iBAAiB,QAAQ,YAAY,WAAW,GAAG;AAAA,IACjD,SAAS,QAAQ,SAAS;AAAA,IAC1B,UAAU,QAAQ,SAAS;AAAA,IAC3B,YAAY;AAAA,EACd,CAAC,GAAG;AAAA,IACF,MAAM,QAAQ,QAAQ,SAAS,QAAQ,UAAU;AAAA,MAC/C,WAAW,QAAQ;AAAA,MACnB,QAAQ,MAAM;AAAA,MACd,mBAAmB,MAAM;AAAA,MACzB,WAAW,MAAM;AAAA,MACjB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,QAAQ,QAAQ,SAAS,QAAQ,UAAU;AAAA,IAC/C,WAAW,QAAQ;AAAA,IACnB,QAAQ,MAAM;AAAA,IACd,mBAAmB,MAAM;AAAA,IACzB,WAAW,MAAM;AAAA,IACjB;AAAA,IACA;AAAA,IACA,SAAS,QAAQ,MAAM,EAAE,YAAY;AAAA,EACvC,CAAC;AAAA,EACD,OAAO,EAAE,WAAW,eAAe;AAAA;;;ACXrC,eAAsB,iBAAiB,CACrC,SACA,KACiC;AAAA,EACjC,MAAM,UAAU,6BAA6B,SAAS,GAAG;AAAA,EACzD,MAAM,SAAS,MAAM,yBAAyB,SAAS,OAAO;AAAA,EAC9D,IAAI;AAAA,IAAQ,OAAO;AAAA,EAEnB,MAAM,YAAY,MAAM,2BAA2B,SAAS,OAAO;AAAA,EACnE,IAAI;AAAA,IACF,MAAM,QAAQ,MAAM,yBAAyB,SAAS,SAAS,SAAS;AAAA,IACxE,OAAO,MAAM,0BAA0B,SAAS,SAAS,KAAK;AAAA,IAC9D,OAAO,OAAO;AAAA,IACd,MAAM,uBAAuB,SAAS,SAAS,WAAW,KAAK;AAAA,IAC/D,MAAM;AAAA;AAAA;AAIV,SAAS,4BAA4B,CACnC,SACA,KAC+B;AAAA,EAC/B,MAAM,SAAS,6BAA6B,IAAI,MAAM,MAAM;AAAA,EAC5D,MAAM,iBAAiB,8BAA8B,IAAI,MAAM,cAAc;AAAA,EAC7E,MAAM,YAAY,8BAA6B,IAAI,MAAM,SAAS;AAAA,EAClE,MAAM,WAAW,QAAQ,mBAAmB,cAAc,OAAO,YAAY;AAAA,EAC7E,0BAA0B,UAAU,cAAc;AAAA,EAElD,MAAM,iBAAiB,qBAAqB,QAAQ;AAAA,EACpD,MAAM,cAAc,2CAA2C;AAAA,IAC7D;AAAA,IACA;AAAA,IACA,kBAAkB,QAAQ,mBAAmB;AAAA,EAC/C,CAAC;AAAA,EACD,MAAM,WAAW,sBAAqB;AAAA,IACpC,WAAW,QAAQ;AAAA,IACnB,gBAAgB,gCAA+B,WAAW;AAAA,IAC1D,wBAAwB,EAAE,QAAQ,eAAe;AAAA,EACnD,CAAC;AAAA,EACD,MAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,IAAI,MAAM;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB,6BAA6B,QAAQ,WAAW,IAAI,KAAK;AAAA,EAC3E;AAAA,EACA,IAAI,IAAI,MAAM,WAAW;AAAA,IAAW,OAAO;AAAA,EAC3C,OAAO,KAAK,SAAS,QAAQ,IAAI,MAAM,OAAO;AAAA;AAGhD,SAAS,yBAAyB,CAChC,UACA,gBACM;AAAA,EACN,IAAI,eAAe,cAAc,SAAS;AAAA,IAAW;AAAA,EACrD,MAAM,IAAI,gCACR,eAAe,SAAS,mCAAmC,SAAS,aACtE;AAAA;AAGF,SAAS,oBAAoB,CAAC,UAAuD;AAAA,EACnF,IAAI,SAAS,WAAW,SAAS;AAAA,IAA8B,OAAO;AAAA,EACtE,OAAO;AAAA;AAGT,eAAe,yBAAyB,CACtC,SACA,WACA,SACA,UAAwD,CAAC,GAC1C;AAAA,EACf,wCAAwC,QAAQ,gBAAgB;AAAA,IAC9D,MAAM;AAAA,IACN,IAAI,QAAQ,OAAO;AAAA,IACnB,OAAO,QAAQ,UAAU;AAAA,EAC3B,CAAC;AAAA,EACD,MAAM,SAAS,MAAM,oCAAoC,SAAS;AAAA,IAChE;AAAA,IACA,iBAAiB,QAAQ,UAAU;AAAA,IACnC,gBAAgB,QAAQ,UAAU;AAAA,IAClC,UAAU,QAAQ;AAAA,IAClB,UAAU,QAAQ;AAAA,OACf;AAAA,EACL,CAAC;AAAA,EACD,+BACE,QAAQ,gBACR,OAAO,IAAI,aACX,mBAAmB,OAAO,IAAI,KAChC;AAAA;AAGF,eAAe,wBAAwB,CACrC,SACA,SACwC;AAAA,EACxC,OAAO,uBAAuB,SAAS,MACrC,QAAQ,QAAQ,YACd,OAAO,YAAY;AAAA,IACjB,MAAM,4BAA4B,QAAQ,YAAY,QAAQ,cAAc;AAAA,IAC5E,MAAM,0BAA0B,SAAS,QAAQ,WAAW,SAAS;AAAA,MACnE,wBACE;AAAA,IACJ,CAAC;AAAA,IACD,MAAM,SAAS,MAAM,mBACnB,SACA,QAAQ,UACR,QAAQ,eAAe,aACvB,OACF;AAAA,IACA,OAAO,SAAS,uBAAuB,QAAQ,OAAO,IAAI;AAAA,KAE5D,EAAE,WAAW,eAAe,CAC9B,CACF;AAAA;AAGF,SAAS,sBAAsB,CAC7B,QACA,SACwB;AAAA,EACxB,IACE,OAAO,OAAO,SAAS,gBACvB,OAAO,OAAO,oBAAoB,QAAQ,UAAU,mBACpD,OAAO,OAAO,SAAS,cACvB;AAAA,IACA,MAAM,IAAI,8BACR,mBACA,sBAAsB,OAAO,yCAC/B;AAAA,EACF;AAAA,EACA,OAAO,KAAK,gBAAgB,OAAO,MAAM,GAAG,SAAS,MAAM;AAAA;AAG7D,eAAe,0BAA0B,CACvC,SACA,SAC8B;AAAA,EAC9B,MAAM,QAAQ,QAAQ,SAAS,QAAQ,QAAQ;AAAA,IAC7C,MAAM;AAAA,IACN,WAAW,QAAQ;AAAA,IACnB,QAAQ,QAAQ;AAAA,IAChB,WAAW,QAAQ;AAAA,IACnB,aAAa,QAAQ,MAAM,EAAE,YAAY;AAAA,EAC3C,CAAC;AAAA,EACD,MAAM,SAAS,MAAM,QAAQ,QAAQ,SAAS,QAAQ,UAAU;AAAA,IAC9D,WAAW,QAAQ;AAAA,IACnB,QAAQ,QAAQ;AAAA,EAClB,CAAC;AAAA,EACD,4BAA4B,QAAQ,QAAQ,cAAc;AAAA,EAC1D,OAAO;AAAA,IACL,mBAAmB,QAAQ,kBAAkB;AAAA,IAC7C,WAAW,QAAQ,MAAM,EAAE,YAAY;AAAA,IACvC,gBAAgB;AAAA,MACd,QAAQ,QAAQ;AAAA,MAChB,yBAAyB,QAAQ,qBAAqB;AAAA,MACtD,cAAc,QAAQ,gBAAgB;AAAA,IACxC;AAAA,EACF;AAAA;AAGF,eAAe,wBAAwB,CACrC,SACA,SACA,WACqC;AAAA,EACrC,MAAM,QAAQ;AAAA,IACZ,QAAQ,QAAQ;AAAA,IAChB,mBAAmB,UAAU;AAAA,IAC7B,WAAW,QAAQ;AAAA,IACnB,gBAAgB,QAAQ;AAAA,IACxB,gBAAgB,QAAQ;AAAA,IACxB,oBAAoB,QAAQ,SAAS;AAAA,IACrC,eAAe,QAAQ,SAAS;AAAA,IAChC,WAAW,UAAU;AAAA,IACrB,SAAS,QAAQ;AAAA,IACjB,eAAe,+BAA+B,QAAQ,UAAU,QAAQ,QAAQ;AAAA,EAClF;AAAA,EACA,MAAM,SAAS,MAAM,sBAAsB,SAAS,OAAO,QAAQ,MAAM;AAAA,EACzE,OAAO;AAAA,OACF;AAAA,IACH;AAAA,IAEA,UAAU,yBAAwB,QAAQ,UAAU,QAAQ,MAAM,CAAC;AAAA,EACrE;AAAA;AAGF,eAAe,qBAAqB,CAClC,SACA,OACA,QAC0C;AAAA,EAC1C,IAAI,WAAW;AAAA,IAAW,OAAO,+BAA+B,SAAS,KAAK;AAAA,EAC9E,OAAO,+BAA+B,SAAS,KAAK,OAAO,OAAO,CAAC;AAAA;AAGrE,eAAe,yBAAyB,CACtC,SACA,SACA,OACiC;AAAA,EACjC,OAAO,uBAAuB,SAAS,MACrC,QAAQ,QAAQ,YACd,CAAC,YAAY,6BAA6B,SAAS,SAAS,SAAS,KAAK,GAC1E,EAAE,WAAW,eAAe,CAC9B,CACF;AAAA;AAGF,eAAe,4BAA4B,CACzC,SACA,SACA,SACA,OACiC;AAAA,EACjC,MAAM,4BAA4B,QAAQ,YAAY,QAAQ,cAAc;AAAA,EAC5E,MAAM,0BAA0B,SAAS,QAAQ,WAAW,OAAO;AAAA,EACnE,MAAM,SAAS,MAAM,mBACnB,SACA,QAAQ,UACR,QAAQ,eAAe,aACvB,OACF;AAAA,EACA,IAAI;AAAA,IAAQ,OAAO,uBAAuB,QAAQ,OAAO;AAAA,EAEzD,MAAM,SAAS,iBAAiB,OAAO;AAAA,EACvC,eAAe,QAAQ,MAAM;AAAA,EAC7B,MAAM,UAAU,MAAM,QAAQ,SAAS,iBAAiB,MAAM;AAAA,IAC5D,QAAQ,iBAAiB,QAAQ,WAAW,SAAS,MAAM,UAAU,MAAM;AAAA,IAC3E,UAAU;AAAA,MACR,SAAS,CAAC,MAAM,cAAc;AAAA,MAC9B,SAAS,CAAC;AAAA,MACV,OAAO,CAAC;AAAA,MACR,YAAY,CAAC;AAAA,MACb,QAAQ,CAAC;AAAA,IACX;AAAA,EACF,CAAC;AAAA,EACD,MAAM,SAAS,MAAM,oBACnB,SACA,QAAQ,SAAS,kBACjB,SACA,SACA,OACA,MACF;AAAA,EACA,MAAM,gBAAgB,SAAS,QAAQ,SAAS,kBAAkB,SAAS,QAAQ,MAAM;AAAA,EACzF,MAAM,aAAa,MAAM,kBACvB,SACA,QAAQ,SAAS,kBACjB,SACA,MAAM,UACN,QAAQ,MACV;AAAA,EACA,MAAM,SAAiC;AAAA,IACrC,MAAM;AAAA,IACN,UAAU,MAAM,SAAS;AAAA,IACzB,SAAS;AAAA,IACT;AAAA,IACA,aAAa,MAAM,SAAS;AAAA,IAC5B;AAAA,EACF;AAAA,EACA,eAAe,QAAQ,MAAM;AAAA,EAC7B,OAAO,kCAAkC,SAAS,SAAS,SAAS,OAAO,MAAM;AAAA;AAGnF,eAAe,iCAAiC,CAC9C,SACA,SACA,SACA,OACA,QACiC;AAAA,EACjC,MAAM,UAAU,MAAM,QAAQ,SAAS,iBAAiB,SAAS;AAAA,IAC/D;AAAA,IACA,cAAc;AAAA,MACZ,mBAAmB,CAAC,qBAAqB,SAAS,KAAK,CAAC;AAAA,MACxD;AAAA,IACF;AAAA,EACF,CAAC;AAAA,EACD,OAAO,QAAQ,OAAO;AAAA;AAGxB,SAAS,gBAAgB,CAAC,SAAuE;AAAA,EAC/F,OAAO;AAAA,IACL,MAAM;AAAA,IACN,cAAc,QAAQ,SAAS;AAAA,IAC/B,iBAAiB,QAAQ,UAAU;AAAA,IACnC,WAAW,QAAQ,eAAe;AAAA,IAClC,kBAAkB,QAAQ,eAAe;AAAA,EAC3C;AAAA;AAGF,SAAS,gBAAgB,CACvB,WACA,SACA,UACA,QACqB;AAAA,EACrB,OAAO;AAAA,IACL;AAAA,IACA,IAAI,SAAS;AAAA,IACb,gBAAgB,SAAS;AAAA,IACzB,aAAa,SAAS;AAAA,IACtB,aAAa,QAAQ,eAAe;AAAA,IACpC;AAAA,IACA,kBAAkB,QAAQ,YAAY;AAAA,IACtC,oBAAoB,QAAQ,YAAY;AAAA,IACxC,eAAe,QAAQ,YAAY;AAAA,IACnC,QAAQ,EAAE,MAAM,cAAc,QAAQ,QAAQ,QAAQ,gBAAgB,QAAQ,eAAe;AAAA,IAC7F,aAAa,SAAS;AAAA,EACxB;AAAA;AAGF,eAAe,mBAAmB,CAChC,SACA,SACA,SACA,SACA,OACA,QACA;AAAA,EACA,MAAM,QAAQ;AAAA,IACZ,QAAQ,QAAQ;AAAA,IAChB,mBAAmB,MAAM;AAAA,IACzB,gBAAgB,QAAQ;AAAA,IACxB,UAAU,MAAM;AAAA,IAChB;AAAA,IACA,eAAe,QAAQ,eAAe;AAAA,EACxC;AAAA,EACA,IAAI,QAAQ,WAAW,WAAW;AAAA,IAChC,OAAO,0BAA0B,SAAS,SAAS,SAAS,KAAK;AAAA,EACnE;AAAA,EACA,OAAO,0BAA0B,SAAS,SAAS,SAAS;AAAA,OACvD;AAAA,IACH,QAAQ,QAAQ;AAAA,EAClB,CAAC;AAAA;AAGH,SAAS,oBAAoB,CAC3B,SACA,OACA;AAAA,EACA,OAAO;AAAA,IACL,QAAQ,QAAQ;AAAA,IAChB,mBAAmB,MAAM;AAAA,IACzB,WAAW,QAAQ;AAAA,IACnB,gBAAgB,QAAQ;AAAA,IACxB,UAAU;AAAA,IACV,gBAAgB,QAAQ;AAAA,IACxB,oBAAoB,QAAQ,YAAY;AAAA,IACxC,eAAe,QAAQ,YAAY;AAAA,IACnC,kBAAkB,QAAQ,YAAY;AAAA,IACtC,UAAU,MAAM;AAAA,IAChB,cAAc,MAAM,SAAS;AAAA,IAC7B,WAAW,MAAM,SAAS;AAAA,EAC5B;AAAA;AAGF,eAAe,sBAAsB,CACnC,SACA,SACA,WACA,OACe;AAAA,EACf,IAAI,CAAC,uBAAuB,KAAK;AAAA,IAAG;AAAA,EACpC,MAAM,QAAQ,QAAQ,SAAS,QAAQ,QAAQ;AAAA,IAC7C,MAAM;AAAA,IACN,WAAW,QAAQ;AAAA,IACnB,QAAQ,QAAQ;AAAA,IAChB,mBAAmB,UAAU;AAAA,IAC7B,WAAW,QAAQ;AAAA,IACnB,aAAa,QAAQ,MAAM,EAAE,YAAY;AAAA,EAC3C,CAAC;AAAA;AAGH,SAAS,sBAAsB,CAAC,OAAyB;AAAA,EACvD,IAAI,iBAAiB;AAAA,IAAgC,OAAO;AAAA,EAC5D,IAAI,iBAAiB;AAAA,IAAkC,OAAO;AAAA,EAC9D,OACE,iBAAiB,kCAChB,MAAM,SAAS,qBAAqB,MAAM,SAAS;AAAA;AAIxD,SAAS,2BAA2B,CAClC,QACA,MACM;AAAA,EACN,IAAI,CAAC;AAAA,IAAQ;AAAA,EACb,8BAA6B,OAAO,gBAAgB,MAAM,wBAAwB;AAAA;;;ACrZpF,eAAsB,mBAAmB,CACvC,SACA,SACA,SACA,OACA,UACA,QACA,OAC8B;AAAA,EAC9B,MAAM,SAAS,qBAAqB;AAAA,EACpC,MAAM,cAAc,EAAE,OAAO,UAAU,QAAQ,MAAM;AAAA,EACrD,MAAM,UAAU,MAAM,qBAAqB,SAAS,SAAS,SAAS,MAAM,MAAM;AAAA,EAClF,MAAM,iBAAiB,MAAM,mBAAmB,SAAS,SAAS,SAAS,MAAM,MAAM;AAAA,EACvF,WAAW,SAAS,sBAAsB,MAAM,MAAM,GAAG;AAAA,IACvD,MAAM,eAAe,QAAQ,IAAI,cAAa,MAAM,SAAS,CAAC;AAAA,IAC9D,IAAI,CAAC,cAAc,WAAW;AAAA,MAC5B,MAAM,IAAI,oCACR,MAAM,UAAU,cAChB,MAAM,UAAU,SAClB;AAAA,IACF;AAAA,IACA,MAAM,oBACJ,SACA,SACA,SACA,aACA,OACA,uBAAuB,YAAY,GACnC,gBACA,MACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,UAAU,qBAAqB,CAC7B,QACgC;AAAA,EAChC,IAAI,QAAQ;AAAA,EACZ,OAAO,QAAQ,OAAO,QAAQ;AAAA,IAC5B,MAAM,YAAY,OAAO,OAAO,OAAO;AAAA,IACvC,MAAM,YAAY,cAAa,SAAS;AAAA,IACxC,IAAI,MAAM,QAAQ;AAAA,IAClB,OAAO,MAAM,OAAO,UAAU,cAAa,OAAO,KAAK,OAAO,MAAM,MAAM,WAAW;AAAA,MACnF,OAAO;AAAA,IACT;AAAA,IACA,MAAM,EAAE,WAAW,OAAO,IAAI;AAAA,IAC9B,QAAQ;AAAA,EACV;AAAA;AAGF,eAAe,mBAAmB,CAChC,SACA,SACA,SACA,aACA,OACA,SACA,gBACA,QACe;AAAA,EACf,MAAM,SAAS,IAAI,IAAI,QAAQ,gBAAgB,IAAI,CAAC,UAAU,CAAC,MAAM,OAAO,YAAY,KAAK,CAAC,CAAC;AAAA,EAE/F,SAAS,QAAQ,MAAM,MAAO,QAAQ,MAAM,KAAK,SAAS,QAAQ,SAAS,eAAe;AAAA,IACxF,MAAM,MAAM,KAAK,IAAI,MAAM,KAAK,QAAQ,QAAQ,SAAS,aAAa;AAAA,IACtE,MAAM,SAAS,YAAY,MAAM,OAAO,MAAM,OAAO,GAAG;AAAA,IACxD,MAAM,OAAO,mBAAmB,SAAS,aAAa,QAAQ,gBAAgB,QAAQ,MAAM;AAAA,IAC5F,MAAM,iBAAiB,SAAS,SAAS,SAAS,IAAI;AAAA,EACxD;AAAA,EAEA,QAAQ,kBAAkB,CAAC,GAAG,OAAO,OAAO,CAAC;AAAA,EAC7C,MAAM,yBAAyB,SAAS,SAAS,SAAS,aAAa,SAAS,MAAM;AAAA;AAGxF,eAAe,oBAAoB,CACjC,SACA,SACA,SACA,QAC0D;AAAA,EAC1D,MAAM,OAAO,IAAI;AAAA,EACjB,WAAW,SAAS;AAAA,IAAQ,KAAK,IAAI,cAAa,MAAM,OAAO,MAAM,GAAG,MAAM,OAAO,MAAM;AAAA,EAC3F,MAAM,cAAc,MAAM,UAAU,SAAS,SAAS,SAAS;AAAA,IAC7D,SAAS,CAAC,GAAG,KAAK,OAAO,CAAC;AAAA,IAC1B,OAAO,CAAC;AAAA,IACR,YAAY,CAAC;AAAA,IACb,iBAAiB,CAAC;AAAA,IAClB,QAAQ,CAAC;AAAA,EACX,CAAC;AAAA,EACD,OAAO,IAAI,IAAI,YAAY,QAAQ,IAAI,CAAC,WAAW,CAAC,cAAa,OAAO,GAAG,GAAG,MAAM,CAAC,CAAC;AAAA;AAGxF,SAAS,kBAAkB,CACzB,SACA,aACA,QACA,gBACA,QACA,QAC6B;AAAA,EAC7B,MAAM,OAAoC,CAAC;AAAA,EAC3C,WAAW,SAAS,QAAQ;AAAA,IAC1B,KAAK,KAAK,GAAG,mBAAmB,SAAS,aAAa,OAAO,gBAAgB,QAAQ,MAAM,CAAC;AAAA,EAC9F;AAAA,EACA,OAAO;AAAA;AAGT,eAAe,kBAAkB,CAC/B,SACA,SACA,SACA,QACoD;AAAA,EACpD,MAAM,iBAAiB,IAAI;AAAA,EAC3B,iBAAiB,QAAQ,QAAQ,YAAY;AAAA,IAC3C;AAAA,IACA,UAAU,gBAAgB;AAAA,MACxB,SAAS,CAAC;AAAA,MACV,OAAO,CAAC;AAAA,MACR,YAAY,CAAC;AAAA,MACb,iBAAiB,CAAC;AAAA,MAClB,QAAQ,OAAO,IAAI,CAAC,WAAW,EAAE,QAAQ,MAAM,QAAQ,IAAI,MAAM,GAAG,EAAE;AAAA,IACxE,CAAC;AAAA,IACD,UAAU,QAAQ,SAAS;AAAA,EAC7B,CAAC,GAAG;AAAA,IACF,WAAW,YAAY,KAAK,QAAQ;AAAA,MAClC,eAAe,IAAI,mBAAkB,SAAS,QAAQ,SAAS,EAAE,GAAG,QAAQ;AAAA,IAC9E;AAAA,EACF;AAAA,EACA,QAAQ,oBAAoB,6BAA6B,eAAe,IAAI;AAAA,EAC5E,OAAO;AAAA;AAGT,SAAS,kBAAkB,CACzB,SACA,aACA,OACA,gBACA,QACA,QAC6B;AAAA,EAC7B,MAAM,cAAc,mBAAkB,MAAM,QAAQ,MAAM,EAAE;AAAA,EAC5D,MAAM,UAAU,uBAAsB,MAAM,QAAQ,MAAM,EAAE;AAAA,EAC5D,MAAM,WAAW,eAAe,IAAI,WAAW;AAAA,EAC/C,MAAM,YAAY,wBAAwB,UAAU,KAAK;AAAA,EACzD,MAAM,OAAoC,CAAC,mBAAmB,SAAS,aAAa,OAAO,CAAC;AAAA,EAE5F,IAAI,WAAW;AAAA,IACb,OAAO,mBAAmB;AAAA,EAC5B,EAAO;AAAA,IACL,0BAA0B,QAAQ,QAAQ;AAAA,IAC1C,KAAK,KAAK,SAAS,qBAAqB,OAAO,UAAU,YAAY,QAAQ,GAAG,OAAO,CAAC;AAAA,IACxF,KAAK,KAAK,UAAU,oBAAoB,SAAS,aAAa,KAAK,CAAC,CAAC;AAAA;AAAA,EAGvE,kBAAkB,QAAQ,OAAO,UAAU,WAAW,YAAY,QAAQ;AAAA,EAC1E,OAAO;AAAA;AAGT,SAAS,uBAAuB,CAC9B,UACA,OACS;AAAA,EACT,IAAI,CAAC;AAAA,IAAU,OAAO;AAAA,EACtB,OACE,qBAAoB,EAAE,OAAO,SAAS,OAAO,MAAM,SAAS,QAAQ,KAAK,CAAC,MAC1E,qBAAoB,EAAE,OAAO,MAAM,OAAO,MAAM,MAAM,QAAQ,KAAK,CAAC;AAAA;AAIxE,SAAS,yBAAyB,CAChC,QACA,UACM;AAAA,EACN,IAAI;AAAA,IAAU,OAAO,iBAAiB;AAAA,EACjC;AAAA,WAAO,iBAAiB;AAAA;AAG/B,SAAS,oBAAoB,CAC3B,OACA,UACA,UAC6B;AAAA,EAC7B,MAAM,cAAc;AAAA,IAClB,QAAQ,MAAM;AAAA,IACd,OAAO,MAAM;AAAA,IACb,IAAI,MAAM;AAAA,IACV,cAAc,SAAS;AAAA,EACzB;AAAA,EACA,MAAM,gBAAgB,6BAA6B,aAAa,MAAM,IAAI;AAAA,EAC1E,OAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,QACR,QAAQ,MAAM;AAAA,QACd,IAAI,MAAM;AAAA,QACV,cAAc,UAAU,gBAAgB;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAAA;AAGF,SAAS,4BAA8C,CACrD,OACA,MACqC;AAAA,EACrC,IAAI,SAAS;AAAA,IAAW,OAAO;AAAA,EAC/B,OAAO,KAAK,OAAO,KAAK;AAAA;AAG1B,SAAS,mBAAmB,CAC1B,SACA,aACA,OACA;AAAA,EACA,MAAM,eAAe,sBAAsB,SAAS,WAAW;AAAA,EAC/D,OAAO,wCAAwC,KAAK,cAAc,MAAM,CAAC;AAAA;AAG3E,SAAS,iBAAiB,CACxB,QACA,OACA,UACA,WACA,UACM;AAAA,EACN,MAAM,UAAU,OAAO,IAAI,MAAM,OAAO,UAAU;AAAA,EAClD,IAAI,WAAW,MAAM,KAAK,QAAQ;AAAA,IAAI;AAAA,EAEtC,IAAI,eAAe,SAAS;AAAA,EAC5B,IAAI,aAAa;AAAA,IAAU,eAAe,SAAS;AAAA,EACnD,MAAM,cAAc;AAAA,IAClB,QAAQ,MAAM;AAAA,IACd,OAAO,MAAM;AAAA,IACb,IAAI,MAAM;AAAA,IACV;AAAA,EACF;AAAA,EACA,IAAI,MAAM,SAAS,WAAW;AAAA,IAC5B,OAAO,IAAI,MAAM,OAAO,YAAY,WAAW;AAAA,IAC/C;AAAA,EACF;AAAA,EACA,OAAO,IAAI,MAAM,OAAO,YAAY,KAAK,aAAa,MAAM,MAAM,KAAK,CAAC;AAAA;AAG1E,eAAe,wBAAwB,CACrC,SACA,SACA,SACA,aACA,SACA,QACe;AAAA,EACf,MAAM,WAAW,cAAc,QAAQ,UAAU,OAAO;AAAA,EACxD,IAAI;AAAA,IAAU,wBAAwB,QAAQ,UAAU,SAAS,KAAK,SAAS,UAAU;AAAA,EACzF,MAAM,SAAS,oBAAoB;AAAA,IACjC,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA,UAAU,YAAY,SAAS;AAAA,IAC/B,aAAa,YAAY,SAAS;AAAA,EACpC,CAAC;AAAA,EACD,MAAM,UAAU,kBAAiB,QAAQ,GAAG;AAAA,EAC5C,MAAM,OAAoC;AAAA,IACxC,mBAAmB,UAAU,cAAa,QAAQ,GAAG,GAAG,OAAO;AAAA,EACjE;AAAA,EACA,IAAI,QAAQ;AAAA,IACV,OAAO,wBAAwB;AAAA,IAC/B,MAAM,QAAuC,CAAC;AAAA,IAC9C,0BAA0B,OAAO,MAAM;AAAA,IACvC,KAAK,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,SAAS,MAAM,OAAO,CAAC,CAAC;AAAA,IACzD,MAAM,eAAe,sBAAsB,SAAS,WAAW;AAAA,IAC/D,KAAK,KAAK,UAAU,qCAAqC,KAAK,cAAc,OAAO,CAAC,CAAC,CAAC;AAAA,EACxF;AAAA,EACA,MAAM,iBAAiB,SAAS,SAAS,SAAS,IAAI;AAAA;AAGxD,SAAS,qBAAqB,CAC5B,SACA,aACA;AAAA,EACA,MAAM,eAAe;AAAA,IACnB,WAAW,QAAQ;AAAA,IACnB,UAAU,YAAY,SAAS;AAAA,IAC/B,aAAa,YAAY,SAAS;AAAA,IAClC,QAAQ,YAAY;AAAA,IACpB,eAAe,YAAY,MAAM;AAAA,EACnC;AAAA,EACA,IAAI,YAAY,MAAM,UAAU;AAAA,IAAW,OAAO;AAAA,EAClD,OAAO,KAAK,cAAc,OAAO,YAAY,MAAM,MAAM;AAAA;AAG3D,SAAS,oBAAoB,GAA+B;AAAA,EAC1D,OAAO;AAAA,IACL,eAAe;AAAA,IACf,eAAe;AAAA,IACf,iBAAiB;AAAA,IACjB,sBAAsB;AAAA,EACxB;AAAA;;;ACxSF,eAAsB,eAAe,CACnC,SACA,KACgC;AAAA,EAChC,MAAM,UAAU,uBAAuB,SAAS,GAAG;AAAA,EACnD,OAAO,uBAAuB,SAAS,OAAO;AAAA;AAGhD,SAAS,sBAAsB,CAC7B,SACA,KACyB;AAAA,EACzB,MAAM,qBAAqB,IAAI,MAAM,OAAO;AAAA,EAC5C,MAAM,QAAQ,0BAAyB;AAAA,OAClC,IAAI;AAAA,IACP,QAAQ,IAAI,MAAM,OAAO,IAAI,CAAC,UAAU,uBAAuB,QAAQ,UAAU,KAAK,CAAC;AAAA,EACzF,CAAC;AAAA,EACD,MAAM,kBAAkB,yBAAyB,OAAO,kBAAkB;AAAA,EAE1E,MAAM,mBAAmB,QAAQ,mBAAmB;AAAA,EACpD,MAAM,YAAY,6BAA6B,QAAQ,WAAW,IAAI,KAAK;AAAA,EAC3E,IAAI,MAAM,OAAO,SAAS,WAAW;AAAA,IACnC,OAAO;AAAA,SACF,wBAAwB,SAAS,OAAO,MAAM,QAAQ,iBAAiB,gBAAgB;AAAA,MAC1F;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA,OACF,2BAA2B,SAAS,OAAO,MAAM,QAAQ,iBAAiB,gBAAgB;AAAA,IAC7F;AAAA,EACF;AAAA;AAGF,SAAS,wBAAwB,CAC/B,OACA,oBACQ;AAAA,EACR,IAAI,MAAM,OAAO,SAAS;AAAA,IAAc,OAAO;AAAA,EAC/C,OAAO,MAAM,OAAO;AAAA;AAGtB,SAAS,uBAAuB,CAC9B,SACA,OACA,QACA,iBACA,kBAC6C;AAAA,EAC7C,MAAM,WAAW,2BAA0B;AAAA,IACzC,WAAW,QAAQ;AAAA,IACnB,gBAAgB,sCAAqC,OAAO,SAAS;AAAA,IACrE,wBAAwB;AAAA,IACxB,KAAK,QAAQ,MAAM;AAAA,EACrB,CAAC;AAAA,EACD,OAAO,EAAE,MAAM,WAAW,OAAO,QAAQ,iBAAiB,kBAAkB,SAAS;AAAA;AAGvF,SAAS,0BAA0B,CACjC,SACA,OACA,QACA,iBACA,kBACgD;AAAA,EAChD,MAAM,qBAAqB,QAAQ,mBAAmB,iBACpD,OAAO,WAAW,YACpB;AAAA,EACA,mCAAmC,oBAAoB,MAAM;AAAA,EAC7D,2BAA2B,oBAAoB,KAAK;AAAA,EACpD,kCAAkC,oBAAoB,QAAQ,eAAe;AAAA,EAE7E,MAAM,cAAc,2CAA2C;AAAA,IAC7D,UAAU;AAAA,IACV,gBAAgB,OAAO;AAAA,IACvB;AAAA,EACF,CAAC;AAAA,EACD,MAAM,WAAW,2BAA0B;AAAA,IACzC,WAAW,QAAQ;AAAA,IACnB,gBAAgB,yCAAwC,aAAa,OAAO,YAAY;AAAA,IAExF,wBAAwB,gCAAgC,OAAO,QAAQ,eAAe;AAAA,IACtF,KAAK,QAAQ,MAAM;AAAA,EACrB,CAAC;AAAA,EACD,OAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;AAGF,SAAS,iCAAiC,CACxC,UACA,QACA,iBACM;AAAA,EACN,IAAI,OAAO,mBAAmB,GAAG;AAAA,IAC/B,MAAM,IAAI,gCACR,+GACF;AAAA,EACF;AAAA,EAEA,MAAM,sBAAsB,SAAS,UAAU,UAAU;AAAA,EACzD,IAAI,wBAAwB,GAAG;AAAA,IAC7B,MAAM,IAAI,gCACR,yBAAyB,SAAS,yDACpC;AAAA,EACF;AAAA,EAEA,MAAM,oBAAoB,OAAO,iBAAiB,OAAO;AAAA,EACzD,MAAM,oBAAoB,oBAAoB;AAAA,EAC9C,IAAI,CAAC,OAAO,cAAc,iBAAiB,GAAG;AAAA,IAC5C,MAAM,IAAI,gCACR,yBAAyB,SAAS,oEACpC;AAAA,EACF;AAAA,EACA,IAAI,kBAAkB,qBAAqB,kBAAkB,mBAAmB;AAAA,IAC9E,MAAM,IAAI,gCACR,yBAAyB,SAAS,mCAAmC,yBAAyB,gCAAgC,OAAO,mCAAmC,OAAO,4BACjL;AAAA,EACF;AAAA;AAGF,SAAS,kCAAkC,CACzC,UACA,QACM;AAAA,EACN,IAAI,SAAS,cAAc,OAAO,eAAe;AAAA,IAAW;AAAA,EAC5D,MAAM,IAAI,gCACR,yBAAyB,SAAS,mCAAmC,SAAS,aAChF;AAAA;AAGF,SAAS,0BAA0B,CACjC,UACA,OACM;AAAA,EACN,MAAM,cAAc,IAAI,IACtB,SAAS,UAAU,UAAU,IAAI,GAAG,cAAc,iBAChD,sBAAsB,cAAc,UAAU,CAChD,CACF;AAAA,EACA,WAAW,SAAS,MAAM,QAAQ;AAAA,IAChC,MAAM,QAAQ,sBAAsB,MAAM,OAAO,OAAO,cAAc,MAAM,OAAO,UAAU;AAAA,IAC7F,IAAI,YAAY,IAAI,KAAK;AAAA,MAAG;AAAA,IAC5B,MAAM,IAAI,gCACR,yBAAyB,SAAS,sCAAsC,MAAM,OAAO,OAAO,gBAAgB,MAAM,OAAO,cAC3H;AAAA,EACF;AAAA;AAGF,SAAS,+BAA+B,CACtC,OACA,QACA,iBACA;AAAA,EACA,MAAM,SAAS;AAAA,IACb,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,OAAO;AAAA,MACnB,gBAAgB,OAAO;AAAA,MACvB,cAAc,OAAO;AAAA,MACrB,gBAAgB,OAAO;AAAA,MACvB,mBAAmB,OAAO;AAAA,MAC1B,gBAAgB,OAAO;AAAA,IACzB;AAAA,IACA;AAAA,IACA,QAAQ,MAAM;AAAA,EAChB;AAAA,EACA,OAAO;AAAA;AAGT,eAAe,wBAAwB,CACrC,SACA,WACA,SAC2C;AAAA,EAC3C,IAAI,QAAQ,SAAS,WAAW;AAAA,IAC9B,+BAA+B,QAAQ,SAAS;AAAA,IAChD,OAAO;AAAA,EACT;AAAA,EACA,wCAAwC,QAAQ,WAAW;AAAA,IACzD,MAAM;AAAA,IACN,IAAI,QAAQ,OAAO,WAAW;AAAA,IAC9B,OAAO,QAAQ,OAAO,UAAU;AAAA,EAClC,CAAC;AAAA,EACD,MAAM,YAAY,MAAM,oCAAoC,SAAS;AAAA,IACnE;AAAA,IACA,iBAAiB,QAAQ,OAAO,UAAU;AAAA,IAC1C,gBAAgB,QAAQ,OAAO,UAAU;AAAA,IACzC,UAAU,QAAQ;AAAA,IAClB,UAAU,QAAQ;AAAA,IAClB,wBACE;AAAA,EACJ,CAAC;AAAA,EACD,+BACE,QAAQ,WACR,UAAU,IAAI,aACd,mBAAmB,UAAU,IAAI,KACnC;AAAA,EACA,6BACE,UAAU,KACV,QAAQ,OAAO,cACf,QAAQ,OAAO,gBACf,QAAQ,OAAO,cACjB;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,4BAA4B,CACnC,KACA,cACA,gBACA,gBACM;AAAA,EACN,MAAM,aAAa,IAAI;AAAA,EACvB,IAAI,CAAC,YAAY;AAAA,IACf,MAAM,IAAI,gCACR,6BAA6B,IAAI,sCACnC;AAAA,EACF;AAAA,EACA,IAAI,eAAe,WAAW,kBAAkB;AAAA,IAC9C,MAAM,IAAI,gCACR,6BAA6B,IAAI,8BAA8B,WAAW,yBAAyB,eACrG;AAAA,EACF;AAAA,EACA,IAAI,WAAW,kBAAkB,gBAAgB,WAAW,kBAAkB;AAAA,IAC5E,MAAM,IAAI,gCACR,6BAA6B,IAAI,sCACnC;AAAA,EACF;AAAA,EACA,IAAI,iBAAiB,WAAW,gBAAgB;AAAA,IAC9C,MAAM,IAAI,gCACR,6BAA6B,IAAI,mCACnC;AAAA,EACF;AAAA,EACA,IAAI,CAAC,kBAAkB,mBAAmB,WAAW,gBAAgB;AAAA,IACnE,MAAM,IAAI,gCACR,6BAA6B,IAAI,oDACnC;AAAA,EACF;AAAA;AAGF,SAAS,+BAA+B,CAAC,KAA0B,cAA4B;AAAA,EAC7F,IAAI,CAAC,IAAI,uBAAuB,gBAAgB,IAAI,oBAAoB,kBAAkB;AAAA,IACxF,MAAM,IAAI,gCACR,0BAA0B,yDAC5B;AAAA,EACF;AAAA;AAGF,SAAS,+BAA+B,CACtC,QACA,SACuB;AAAA,EACvB,MAAM,SAAS,OAAO;AAAA,EACtB,IACE,OAAO,SAAS,eAChB,OAAO,OAAO,SAAS,gBACvB,OAAO,OAAO,oBAAoB,QAAQ,OAAO,UAAU,mBAC3D,OAAO,OAAO,iBAAiB,QAAQ,OAAO,gBAC9C,OAAO,OAAO,SAAS,aACvB;AAAA,IACA,MAAM,IAAI,8BACR,mBACA,qBAAqB,OAAO,kDAC9B;AAAA,EACF;AAAA,EACA,OAAO,KAAK,gBAAgB,OAAO,MAAM,GAAG,SAAS,MAAM;AAAA;AAG7D,eAAe,sBAAsB,CACnC,SACA,SACgC;AAAA,EAChC,OAAO,uBAAuB,SAAS,MACrC,QAAQ,QAAQ,YACd,CAAC,YAAY,4BAA4B,SAAS,SAAS,OAAO,GAClE,EAAE,WAAW,eAAe,CAC9B,CACF;AAAA;AAGF,eAAe,2BAA2B,CACxC,SACA,SACA,SACgC;AAAA,EAChC,MAAM,4BAA4B,QAAQ,YAAY,QAAQ,SAAS;AAAA,EACvE,MAAM,YAAY,MAAM,yBAAyB,SAAS,QAAQ,WAAW,OAAO;AAAA,EACpF,MAAM,SAAS,MAAM,mBACnB,SACA,QAAQ,UACR,QAAQ,UAAU,aAClB,OACF;AAAA,EACA,IAAI,QAAQ;AAAA,IACV,IAAI,QAAQ,SAAS,gBAAgB,WAAW;AAAA,MAC9C,gCAAgC,UAAU,KAAK,QAAQ,OAAO,YAAY;AAAA,MAC1E,OAAO,gCAAgC,QAAQ,OAAO;AAAA,IACxD;AAAA,IACA,OAAO,KAAK,gBAAgB,OAAO,MAAM,GAAG,SAAS,MAAM;AAAA,EAC7D;AAAA,EACA,IAAI,QAAQ,SAAS,cAAc;AAAA,IACjC,IACE,CAAC,WAAW,IAAI,uBAChB,UAAU,IAAI,oBAAoB,qBAAqB,QAAQ,OAAO,cACtE;AAAA,MACA,MAAM,IAAI,gCACR,8BAA8B,QAAQ,OAAO,4CAC/C;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,gBAAgB,OAAO;AAAA,EACtC,MAAM,UAAU,MAAM,8BAA8B,SAAS,SAAS,SAAS,MAAM;AAAA,EACrF,MAAM,SAAS,MAAM,oBACnB,SACA,QAAQ,SAAS,kBACjB,SACA,QAAQ,OACR,QAAQ,UACR,QACA;AAAA,IACE,eAAe,QAAQ,UAAU;AAAA,OAC7B,QAAQ,UAAU,UAAU,YAAY,CAAC,IAAI,EAAE,OAAO,QAAQ,UAAU,MAAM;AAAA,EACpF,CACF;AAAA,EACA,MAAM,gBAAgB,SAAS,QAAQ,SAAS,kBAAkB,OAAO;AAAA,EACzE,MAAM,aAAa,MAAM,kBACvB,SACA,QAAQ,SAAS,kBACjB,SACA,QAAQ,QACV;AAAA,EACA,MAAM,SAAgC;AAAA,IACpC,MAAM;AAAA,IACN,UAAU,QAAQ,SAAS;AAAA,IAC3B,SAAS;AAAA,IACT;AAAA,IACA,aAAa,QAAQ,SAAS;AAAA,OAC3B;AAAA,EACL;AAAA,EACA,OAAO,iCACL,SACA,SACA,SACA,QACA,WAAW,cACb;AAAA;AAGF,SAAS,eAAe,CAAC,SAAiE;AAAA,EACxF,IAAI,QAAQ,SAAS,WAAW;AAAA,IAC9B,OAAO,EAAE,MAAM,aAAa,QAAQ,QAAQ,OAAO;AAAA,EACrD;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,cAAc,QAAQ,OAAO,WAAW;AAAA,MACxC,iBAAiB,QAAQ,OAAO,UAAU;AAAA,MAC1C,WAAW,QAAQ,OAAO,eAAe;AAAA,MACzC,kBAAkB,QAAQ,OAAO,eAAe;AAAA,MAChD,cAAc,QAAQ,OAAO;AAAA,IAC/B;AAAA,EACF;AAAA;AAGF,eAAe,6BAA6B,CAC1C,SACA,SACA,SACA,QACiC;AAAA,EACjC,OAAO,QAAQ,SAAS,iBAAiB,MAAM;AAAA,IAC7C,QAAQ,gBAAgB,QAAQ,WAAW,SAAS,MAAM;AAAA,IAC1D,UAAU;AAAA,MACR,SAAS,CAAC;AAAA,MACV,SAAS,CAAC;AAAA,MACV,OAAO,CAAC;AAAA,MACR,YAAY,CAAC;AAAA,MACb,QAAQ,CAAC;AAAA,IACX;AAAA,EACF,CAAC;AAAA;AAGH,SAAS,eAAe,CACtB,WACA,SACA,QACqB;AAAA,EACrB,MAAM,OAA4B;AAAA,IAChC;AAAA,IACA,IAAI,QAAQ,SAAS;AAAA,IACrB,gBAAgB,QAAQ,SAAS;AAAA,IACjC,aAAa,QAAQ,SAAS;AAAA,IAC9B,aAAa,QAAQ,UAAU;AAAA,IAC/B;AAAA,IACA,kBAAkB,QAAQ;AAAA,IAC1B,QAAQ,sBAAsB,OAAO;AAAA,IACrC,aAAa,QAAQ,SAAS;AAAA,EAChC;AAAA,EACA,MAAM,YAAY,qBAAqB,MAAM,OAAO;AAAA,EACpD,IAAI,QAAQ,SAAS;AAAA,IAAW,OAAO;AAAA,EACvC,OAAO;AAAA,OACF;AAAA,IACH,oBAAoB,QAAQ,mBAAmB;AAAA,IAC/C,eAAe,QAAQ,mBAAmB;AAAA,EAC5C;AAAA;AAGF,SAAS,oBAAoB,CAC3B,QACA,SACqB;AAAA,EACrB,IAAI,QAAQ,UAAU,UAAU;AAAA,IAAW,OAAO;AAAA,EAClD,OAAO,KAAK,QAAQ,OAAO,QAAQ,UAAU,MAAM;AAAA;AAGrD,SAAS,qBAAqB,CAAC,SAAiE;AAAA,EAC9F,IAAI,QAAQ,SAAS,WAAW;AAAA,IAC9B,OAAO;AAAA,MACL,MAAM;AAAA,MACN,YAAY,QAAQ,MAAM,OAAO;AAAA,MACjC,iBAAiB,QAAQ;AAAA,MACzB,QAAQ,EAAE,MAAM,UAAU;AAAA,IAC5B;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,YAAY,QAAQ,MAAM,OAAO;AAAA,IACjC,iBAAiB,QAAQ;AAAA,IACzB,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,QAAQ,OAAO;AAAA,MAC3B,gBAAgB,QAAQ,OAAO;AAAA,MAC/B,cAAc,QAAQ,OAAO;AAAA,MAC7B,gBAAgB,QAAQ,OAAO;AAAA,MAC/B,mBAAmB,QAAQ,OAAO;AAAA,MAClC,gBAAgB,QAAQ,OAAO;AAAA,IACjC;AAAA,EACF;AAAA;AAGF,eAAe,gCAAgC,CAC7C,SACA,SACA,SACA,QACA,gBACgC;AAAA,EAChC,MAAM,UAAU,MAAM,QAAQ,SAAS,iBAAiB,SAAS;AAAA,IAC/D;AAAA,IACA,cAAc,EAAE,mBAAmB,CAAC,GAAG,OAAO;AAAA,EAChD,CAAC;AAAA,EACD,IAAI,QAAQ,SAAS,cAAc;AAAA,IACjC,IAAI,CAAC,gBAAgB;AAAA,MACnB,MAAM,IAAI,gCAA+B,gDAAgD;AAAA,IAC3F;AAAA,IACA,MAAM,eAAe,2BAA2B;AAAA,MAC9C,IAAI,QAAQ,OAAO,UAAU;AAAA,MAC7B,WAAW,QAAQ,OAAO;AAAA,MAC1B,gBAAgB,QAAQ,OAAO,UAAU;AAAA,MACzC,UAAU,QAAQ;AAAA,MAClB,cAAc,QAAQ,OAAO;AAAA,MAC7B,eAAe,QAAQ,OAAO;AAAA,MAC9B,kBAAkB,QAAQ,OAAO;AAAA,MACjC,gBAAgB,QAAQ,OAAO;AAAA,IACjC,CAAC;AAAA,EACH;AAAA,EACA,OAAO,QAAQ,OAAO;AAAA;;;ACzejB,MAAM,sBAA6D;AAAA,EAC/D,QAAQ;AAAA,IACf,QAAQ,CAAC,YACP,YAAY,KAAK,SAAS,OAAO;AAAA,EACrC;AAAA,EACS,cAAc;AAAA,IACrB,SAAS,CAAC,YACR,kBAAkB,KAAK,SAAS,OAAO;AAAA,IACzC,WAAW,CAAC,YACV,oBAAoB,KAAK,SAAS,OAAO;AAAA,EAC7C;AAAA,EACS,YAAY;AAAA,IACnB,QAAQ,CAAC,YACP,gBAAgB,KAAK,SAAS,OAAO;AAAA,EACzC;AAAA,EAEA,SAAS,CAAC,OAAkD;AAAA,IAC1D,OAAO,OAAO,OAAO;AAAA,MACnB,OAAO,OAAO,OAAO;AAAA,QACnB,QAAQ,CAAC,UAA8B,KAAK,MAAM,OAAO,EAAE,OAAO,MAAM,CAAC;AAAA,MAC3E,CAAC;AAAA,MACD,aAAa,OAAO,OAAO;AAAA,QACzB,SAAS,CAAC,UAAuC,KAAK,YAAY,QAAQ,EAAE,OAAO,MAAM,CAAC;AAAA,QAC1F,WAAW,CAAC,UACV,KAAK,YAAY,UAAU,EAAE,OAAO,MAAM,CAAC;AAAA,MAC/C,CAAC;AAAA,MACD,WAAW,OAAO,OAAO;AAAA,QACvB,QAAQ,CAAC,UAA2B,KAAK,UAAU,OAAO,EAAE,OAAO,MAAM,CAAC;AAAA,MAC5E,CAAC;AAAA,IACH,CAAC;AAAA;AAAA,EAGc;AAAA,EAEjB,WAAW,CACT,WACA,UACA,oBACA,SACA,eAAiD,CAAC,GAClD;AAAA,IACA,KAAK,UAAU,0BAA0B;AAAA,MACvC;AAAA,MACA;AAAA,MACA,aAAa;AAAA,MACb;AAAA,MACA;AAAA,IACF,CAAC;AAAA;AAEL;AAEO,SAAS,2BAA0B,CAAC,OAMlB;AAAA,EACvB,OAAO,IAAI,sBACT,MAAM,WACN,MAAM,UACN,MAAM,aACN,MAAM,SACN,MAAM,YACR;AAAA;",
43
- "debugId": "D5AC53F589D39D7164756E2164756E21",
42
+ "mappings": "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",
43
+ "debugId": "45B690D58E462D3C64756E2164756E21",
44
44
  "names": []
45
45
  }