@czap/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +19 -0
  3. package/dist/addressed-digest.d.ts +15 -0
  4. package/dist/addressed-digest.d.ts.map +1 -0
  5. package/dist/addressed-digest.js +35 -0
  6. package/dist/addressed-digest.js.map +1 -0
  7. package/dist/animation.d.ts +46 -0
  8. package/dist/animation.d.ts.map +1 -0
  9. package/dist/animation.js +70 -0
  10. package/dist/animation.js.map +1 -0
  11. package/dist/assembly.d.ts +25 -0
  12. package/dist/assembly.d.ts.map +1 -0
  13. package/dist/assembly.js +58 -0
  14. package/dist/assembly.js.map +1 -0
  15. package/dist/av-bridge.d.ts +74 -0
  16. package/dist/av-bridge.d.ts.map +1 -0
  17. package/dist/av-bridge.js +107 -0
  18. package/dist/av-bridge.js.map +1 -0
  19. package/dist/av-renderer.d.ts +56 -0
  20. package/dist/av-renderer.d.ts.map +1 -0
  21. package/dist/av-renderer.js +65 -0
  22. package/dist/av-renderer.js.map +1 -0
  23. package/dist/blend.d.ts +61 -0
  24. package/dist/blend.d.ts.map +1 -0
  25. package/dist/blend.js +100 -0
  26. package/dist/blend.js.map +1 -0
  27. package/dist/boundary.d.ts +154 -0
  28. package/dist/boundary.d.ts.map +1 -0
  29. package/dist/boundary.js +269 -0
  30. package/dist/boundary.js.map +1 -0
  31. package/dist/brands.d.ts +63 -0
  32. package/dist/brands.d.ts.map +1 -0
  33. package/dist/brands.js +31 -0
  34. package/dist/brands.js.map +1 -0
  35. package/dist/caps.d.ts +49 -0
  36. package/dist/caps.d.ts.map +1 -0
  37. package/dist/caps.js +73 -0
  38. package/dist/caps.js.map +1 -0
  39. package/dist/capsule.d.ts +77 -0
  40. package/dist/capsule.d.ts.map +1 -0
  41. package/dist/capsule.js +18 -0
  42. package/dist/capsule.js.map +1 -0
  43. package/dist/capsules/boundary-evaluate.d.ts +28 -0
  44. package/dist/capsules/boundary-evaluate.d.ts.map +1 -0
  45. package/dist/capsules/boundary-evaluate.js +117 -0
  46. package/dist/capsules/boundary-evaluate.js.map +1 -0
  47. package/dist/capsules/canonical-cbor.d.ts +13 -0
  48. package/dist/capsules/canonical-cbor.d.ts.map +1 -0
  49. package/dist/capsules/canonical-cbor.js +60 -0
  50. package/dist/capsules/canonical-cbor.js.map +1 -0
  51. package/dist/capsules/token-buffer.d.ts +24 -0
  52. package/dist/capsules/token-buffer.d.ts.map +1 -0
  53. package/dist/capsules/token-buffer.js +53 -0
  54. package/dist/capsules/token-buffer.js.map +1 -0
  55. package/dist/capture.d.ts +40 -0
  56. package/dist/capture.d.ts.map +1 -0
  57. package/dist/capture.js +10 -0
  58. package/dist/capture.js.map +1 -0
  59. package/dist/cbor.d.ts +33 -0
  60. package/dist/cbor.d.ts.map +1 -0
  61. package/dist/cbor.js +179 -0
  62. package/dist/cbor.js.map +1 -0
  63. package/dist/cell.d.ts +53 -0
  64. package/dist/cell.d.ts.map +1 -0
  65. package/dist/cell.js +83 -0
  66. package/dist/cell.js.map +1 -0
  67. package/dist/codec.d.ts +30 -0
  68. package/dist/codec.d.ts.map +1 -0
  69. package/dist/codec.js +25 -0
  70. package/dist/codec.js.map +1 -0
  71. package/dist/component.d.ts +52 -0
  72. package/dist/component.d.ts.map +1 -0
  73. package/dist/component.js +44 -0
  74. package/dist/component.js.map +1 -0
  75. package/dist/composable.d.ts +76 -0
  76. package/dist/composable.d.ts.map +1 -0
  77. package/dist/composable.js +221 -0
  78. package/dist/composable.js.map +1 -0
  79. package/dist/compositor-pool.d.ts +74 -0
  80. package/dist/compositor-pool.d.ts.map +1 -0
  81. package/dist/compositor-pool.js +119 -0
  82. package/dist/compositor-pool.js.map +1 -0
  83. package/dist/compositor.d.ts +90 -0
  84. package/dist/compositor.d.ts.map +1 -0
  85. package/dist/compositor.js +278 -0
  86. package/dist/compositor.js.map +1 -0
  87. package/dist/config.d.ts +72 -0
  88. package/dist/config.d.ts.map +1 -0
  89. package/dist/config.js +97 -0
  90. package/dist/config.js.map +1 -0
  91. package/dist/dag.d.ts +251 -0
  92. package/dist/dag.d.ts.map +1 -0
  93. package/dist/dag.js +450 -0
  94. package/dist/dag.js.map +1 -0
  95. package/dist/defaults.d.ts +45 -0
  96. package/dist/defaults.d.ts.map +1 -0
  97. package/dist/defaults.js +45 -0
  98. package/dist/defaults.js.map +1 -0
  99. package/dist/derived.d.ts +34 -0
  100. package/dist/derived.d.ts.map +1 -0
  101. package/dist/derived.js +101 -0
  102. package/dist/derived.js.map +1 -0
  103. package/dist/diagnostics.d.ts +77 -0
  104. package/dist/diagnostics.d.ts.map +1 -0
  105. package/dist/diagnostics.js +122 -0
  106. package/dist/diagnostics.js.map +1 -0
  107. package/dist/dirty.d.ts +55 -0
  108. package/dist/dirty.d.ts.map +1 -0
  109. package/dist/dirty.js +80 -0
  110. package/dist/dirty.js.map +1 -0
  111. package/dist/easing.d.ts +55 -0
  112. package/dist/easing.d.ts.map +1 -0
  113. package/dist/easing.js +291 -0
  114. package/dist/easing.js.map +1 -0
  115. package/dist/ecs.d.ts +105 -0
  116. package/dist/ecs.d.ts.map +1 -0
  117. package/dist/ecs.js +245 -0
  118. package/dist/ecs.js.map +1 -0
  119. package/dist/fnv.d.ts +14 -0
  120. package/dist/fnv.d.ts.map +1 -0
  121. package/dist/fnv.js +28 -0
  122. package/dist/fnv.js.map +1 -0
  123. package/dist/frame-budget.d.ts +73 -0
  124. package/dist/frame-budget.d.ts.map +1 -0
  125. package/dist/frame-budget.js +114 -0
  126. package/dist/frame-budget.js.map +1 -0
  127. package/dist/gen-frame.d.ts +102 -0
  128. package/dist/gen-frame.d.ts.map +1 -0
  129. package/dist/gen-frame.js +121 -0
  130. package/dist/gen-frame.js.map +1 -0
  131. package/dist/harness/arbitrary-from-schema.d.ts +28 -0
  132. package/dist/harness/arbitrary-from-schema.d.ts.map +1 -0
  133. package/dist/harness/arbitrary-from-schema.js +262 -0
  134. package/dist/harness/arbitrary-from-schema.js.map +1 -0
  135. package/dist/harness/cached-projection.d.ts +19 -0
  136. package/dist/harness/cached-projection.d.ts.map +1 -0
  137. package/dist/harness/cached-projection.js +39 -0
  138. package/dist/harness/cached-projection.js.map +1 -0
  139. package/dist/harness/index.d.ts +16 -0
  140. package/dist/harness/index.d.ts.map +1 -0
  141. package/dist/harness/index.js +15 -0
  142. package/dist/harness/index.js.map +1 -0
  143. package/dist/harness/policy-gate.d.ts +18 -0
  144. package/dist/harness/policy-gate.d.ts.map +1 -0
  145. package/dist/harness/policy-gate.js +46 -0
  146. package/dist/harness/policy-gate.js.map +1 -0
  147. package/dist/harness/pure-transform.d.ts +42 -0
  148. package/dist/harness/pure-transform.d.ts.map +1 -0
  149. package/dist/harness/pure-transform.js +76 -0
  150. package/dist/harness/pure-transform.js.map +1 -0
  151. package/dist/harness/receipted-mutation.d.ts +23 -0
  152. package/dist/harness/receipted-mutation.d.ts.map +1 -0
  153. package/dist/harness/receipted-mutation.js +52 -0
  154. package/dist/harness/receipted-mutation.js.map +1 -0
  155. package/dist/harness/scene-composition.d.ts +19 -0
  156. package/dist/harness/scene-composition.d.ts.map +1 -0
  157. package/dist/harness/scene-composition.js +47 -0
  158. package/dist/harness/scene-composition.js.map +1 -0
  159. package/dist/harness/site-adapter.d.ts +18 -0
  160. package/dist/harness/site-adapter.d.ts.map +1 -0
  161. package/dist/harness/site-adapter.js +38 -0
  162. package/dist/harness/site-adapter.js.map +1 -0
  163. package/dist/harness/state-machine.d.ts +19 -0
  164. package/dist/harness/state-machine.d.ts.map +1 -0
  165. package/dist/harness/state-machine.js +44 -0
  166. package/dist/harness/state-machine.js.map +1 -0
  167. package/dist/hlc.d.ts +99 -0
  168. package/dist/hlc.d.ts.map +1 -0
  169. package/dist/hlc.js +219 -0
  170. package/dist/hlc.js.map +1 -0
  171. package/dist/index.d.ts +104 -0
  172. package/dist/index.d.ts.map +1 -0
  173. package/dist/index.js +137 -0
  174. package/dist/index.js.map +1 -0
  175. package/dist/interpolate.d.ts +14 -0
  176. package/dist/interpolate.d.ts.map +1 -0
  177. package/dist/interpolate.js +31 -0
  178. package/dist/interpolate.js.map +1 -0
  179. package/dist/live-cell.d.ts +46 -0
  180. package/dist/live-cell.d.ts.map +1 -0
  181. package/dist/live-cell.js +154 -0
  182. package/dist/live-cell.js.map +1 -0
  183. package/dist/op.d.ts +58 -0
  184. package/dist/op.d.ts.map +1 -0
  185. package/dist/op.js +171 -0
  186. package/dist/op.js.map +1 -0
  187. package/dist/plan.d.ts +195 -0
  188. package/dist/plan.d.ts.map +1 -0
  189. package/dist/plan.js +211 -0
  190. package/dist/plan.js.map +1 -0
  191. package/dist/protocol.d.ts +33 -0
  192. package/dist/protocol.d.ts.map +1 -0
  193. package/dist/protocol.js +10 -0
  194. package/dist/protocol.js.map +1 -0
  195. package/dist/quantizer-types.d.ts +28 -0
  196. package/dist/quantizer-types.d.ts.map +1 -0
  197. package/dist/quantizer-types.js +9 -0
  198. package/dist/quantizer-types.js.map +1 -0
  199. package/dist/receipt.d.ts +294 -0
  200. package/dist/receipt.d.ts.map +1 -0
  201. package/dist/receipt.js +352 -0
  202. package/dist/receipt.js.map +1 -0
  203. package/dist/runtime-coordinator.d.ts +75 -0
  204. package/dist/runtime-coordinator.d.ts.map +1 -0
  205. package/dist/runtime-coordinator.js +149 -0
  206. package/dist/runtime-coordinator.js.map +1 -0
  207. package/dist/scheduler.d.ts +58 -0
  208. package/dist/scheduler.d.ts.map +1 -0
  209. package/dist/scheduler.js +109 -0
  210. package/dist/scheduler.js.map +1 -0
  211. package/dist/ship-capsule.d.ts +54 -0
  212. package/dist/ship-capsule.d.ts.map +1 -0
  213. package/dist/ship-capsule.js +142 -0
  214. package/dist/ship-capsule.js.map +1 -0
  215. package/dist/ship-manifest.d.ts +45 -0
  216. package/dist/ship-manifest.d.ts.map +1 -0
  217. package/dist/ship-manifest.js +175 -0
  218. package/dist/ship-manifest.js.map +1 -0
  219. package/dist/signal.d.ts +149 -0
  220. package/dist/signal.d.ts.map +1 -0
  221. package/dist/signal.js +277 -0
  222. package/dist/signal.js.map +1 -0
  223. package/dist/speculative.d.ts +67 -0
  224. package/dist/speculative.d.ts.map +1 -0
  225. package/dist/speculative.js +139 -0
  226. package/dist/speculative.js.map +1 -0
  227. package/dist/store.d.ts +39 -0
  228. package/dist/store.d.ts.map +1 -0
  229. package/dist/store.js +42 -0
  230. package/dist/store.js.map +1 -0
  231. package/dist/style.d.ts +119 -0
  232. package/dist/style.d.ts.map +1 -0
  233. package/dist/style.js +168 -0
  234. package/dist/style.js.map +1 -0
  235. package/dist/testing.d.ts +14 -0
  236. package/dist/testing.d.ts.map +1 -0
  237. package/dist/testing.js +14 -0
  238. package/dist/testing.js.map +1 -0
  239. package/dist/theme.d.ts +78 -0
  240. package/dist/theme.d.ts.map +1 -0
  241. package/dist/theme.js +109 -0
  242. package/dist/theme.js.map +1 -0
  243. package/dist/timeline.d.ts +45 -0
  244. package/dist/timeline.d.ts.map +1 -0
  245. package/dist/timeline.js +101 -0
  246. package/dist/timeline.js.map +1 -0
  247. package/dist/token-buffer.d.ts +43 -0
  248. package/dist/token-buffer.d.ts.map +1 -0
  249. package/dist/token-buffer.js +112 -0
  250. package/dist/token-buffer.js.map +1 -0
  251. package/dist/token.d.ts +107 -0
  252. package/dist/token.d.ts.map +1 -0
  253. package/dist/token.js +143 -0
  254. package/dist/token.js.map +1 -0
  255. package/dist/tuple.d.ts +16 -0
  256. package/dist/tuple.d.ts.map +1 -0
  257. package/dist/tuple.js +16 -0
  258. package/dist/tuple.js.map +1 -0
  259. package/dist/type-utils.d.ts +41 -0
  260. package/dist/type-utils.d.ts.map +1 -0
  261. package/dist/type-utils.js +10 -0
  262. package/dist/type-utils.js.map +1 -0
  263. package/dist/typed-ref.d.ts +50 -0
  264. package/dist/typed-ref.d.ts.map +1 -0
  265. package/dist/typed-ref.js +59 -0
  266. package/dist/typed-ref.js.map +1 -0
  267. package/dist/ui-quality.d.ts +50 -0
  268. package/dist/ui-quality.d.ts.map +1 -0
  269. package/dist/ui-quality.js +64 -0
  270. package/dist/ui-quality.js.map +1 -0
  271. package/dist/validation-error.d.ts +25 -0
  272. package/dist/validation-error.d.ts.map +1 -0
  273. package/dist/validation-error.js +32 -0
  274. package/dist/validation-error.js.map +1 -0
  275. package/dist/vector-clock.d.ts +46 -0
  276. package/dist/vector-clock.d.ts.map +1 -0
  277. package/dist/vector-clock.js +91 -0
  278. package/dist/vector-clock.js.map +1 -0
  279. package/dist/video.d.ts +62 -0
  280. package/dist/video.d.ts.map +1 -0
  281. package/dist/video.js +59 -0
  282. package/dist/video.js.map +1 -0
  283. package/dist/wasm-dispatch.d.ts +52 -0
  284. package/dist/wasm-dispatch.d.ts.map +1 -0
  285. package/dist/wasm-dispatch.js +204 -0
  286. package/dist/wasm-dispatch.js.map +1 -0
  287. package/dist/wasm-fallback.d.ts +19 -0
  288. package/dist/wasm-fallback.d.ts.map +1 -0
  289. package/dist/wasm-fallback.js +93 -0
  290. package/dist/wasm-fallback.js.map +1 -0
  291. package/dist/wire.d.ts +49 -0
  292. package/dist/wire.d.ts.map +1 -0
  293. package/dist/wire.js +201 -0
  294. package/dist/wire.js.map +1 -0
  295. package/dist/zap.d.ts +42 -0
  296. package/dist/zap.d.ts.map +1 -0
  297. package/dist/zap.js +172 -0
  298. package/dist/zap.js.map +1 -0
  299. package/package.json +71 -0
  300. package/src/addressed-digest.ts +48 -0
  301. package/src/animation.ts +103 -0
  302. package/src/assembly.ts +76 -0
  303. package/src/av-bridge.ts +161 -0
  304. package/src/av-renderer.ts +118 -0
  305. package/src/blend.ts +135 -0
  306. package/src/boundary.ts +363 -0
  307. package/src/brands.ts +86 -0
  308. package/src/caps.ts +100 -0
  309. package/src/capsule.ts +95 -0
  310. package/src/capsules/boundary-evaluate.ts +128 -0
  311. package/src/capsules/canonical-cbor.ts +60 -0
  312. package/src/capsules/token-buffer.ts +57 -0
  313. package/src/capture.ts +48 -0
  314. package/src/cbor.ts +199 -0
  315. package/src/cell.ts +130 -0
  316. package/src/codec.ts +39 -0
  317. package/src/component.ts +102 -0
  318. package/src/composable.ts +328 -0
  319. package/src/compositor-pool.ts +162 -0
  320. package/src/compositor.ts +387 -0
  321. package/src/config.ts +157 -0
  322. package/src/dag.ts +527 -0
  323. package/src/defaults.ts +60 -0
  324. package/src/derived.ts +164 -0
  325. package/src/diagnostics.ts +186 -0
  326. package/src/dirty.ts +101 -0
  327. package/src/easing.ts +334 -0
  328. package/src/ecs.ts +382 -0
  329. package/src/fnv.ts +31 -0
  330. package/src/frame-budget.ts +149 -0
  331. package/src/gen-frame.ts +229 -0
  332. package/src/harness/arbitrary-from-schema.ts +270 -0
  333. package/src/harness/cached-projection.ts +46 -0
  334. package/src/harness/index.ts +16 -0
  335. package/src/harness/policy-gate.ts +51 -0
  336. package/src/harness/pure-transform.ts +121 -0
  337. package/src/harness/receipted-mutation.ts +59 -0
  338. package/src/harness/scene-composition.ts +54 -0
  339. package/src/harness/site-adapter.ts +43 -0
  340. package/src/harness/state-machine.ts +49 -0
  341. package/src/hlc.ts +238 -0
  342. package/src/index.ts +274 -0
  343. package/src/interpolate.ts +37 -0
  344. package/src/live-cell.ts +199 -0
  345. package/src/op.ts +233 -0
  346. package/src/plan.ts +317 -0
  347. package/src/protocol.ts +49 -0
  348. package/src/quantizer-types.ts +29 -0
  349. package/src/receipt.ts +444 -0
  350. package/src/runtime-coordinator.ts +230 -0
  351. package/src/scheduler.ts +161 -0
  352. package/src/ship-capsule.ts +191 -0
  353. package/src/signal.ts +345 -0
  354. package/src/speculative.ts +186 -0
  355. package/src/store.ts +77 -0
  356. package/src/style.ts +249 -0
  357. package/src/testing.ts +14 -0
  358. package/src/theme.ts +153 -0
  359. package/src/timeline.ts +146 -0
  360. package/src/token-buffer.ts +151 -0
  361. package/src/token.ts +197 -0
  362. package/src/tuple.ts +19 -0
  363. package/src/type-utils.ts +48 -0
  364. package/src/typed-ref.ts +79 -0
  365. package/src/ui-quality.ts +105 -0
  366. package/src/validation-error.ts +34 -0
  367. package/src/vector-clock.ts +111 -0
  368. package/src/video.ts +106 -0
  369. package/src/wasm-dispatch.ts +300 -0
  370. package/src/wasm-fallback.ts +102 -0
  371. package/src/wire.ts +274 -0
  372. package/src/zap.ts +241 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compositor.d.ts","sourceRoot":"","sources":["../src/compositor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAmB,MAAM,QAAQ,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAI9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;QAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACvC,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAWD,UAAU,eAAe;IACvB,GAAG,CAAC,CAAC,SAAS,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1F,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACzC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpF,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1E,aAAa,IAAI,IAAI,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC,KAAK,CAAC;CAC5C;AAED,UAAU,iBAAiB;IACzB,MAAM,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;CACvF;AAmBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,UAAU,EAAE,iBAsQxB,CAAC;AAEF,MAAM,CAAC,OAAO,WAAW,UAAU,CAAC;IAClC,sDAAsD;IACtD,KAAY,KAAK,GAAG,eAAe,CAAC;IACpC,0CAA0C;IAC1C,KAAY,MAAM,GAAG,gBAAgB,CAAC;CACvC"}
@@ -0,0 +1,278 @@
1
+ /**
2
+ * Compositor -- merge multiple quantizers into composite state.
3
+ *
4
+ * The compositor aggregates discrete + blended state from all
5
+ * active quantizers into a single CompositeState, producing
6
+ * typed output channels (css, glsl, aria).
7
+ *
8
+ * Wired: DirtyFlags (selective recomputation), CompositorStatePool
9
+ * (zero-allocation), FrameBudget (priority scheduling), microtask batching,
10
+ * and RuntimeCoordinator (Plan + ECS-backed runtime bookkeeping).
11
+ *
12
+ * Hot path (computeStateSync) is plain JS — no Effect overhead.
13
+ * Effect is used only for resource lifecycle (create/scope) and
14
+ * reactive stream (SubscriptionRef.changes).
15
+ *
16
+ * @module
17
+ */
18
+ import { Effect, SubscriptionRef } from 'effect';
19
+ import { COMPOSITOR_POOL_CAP, DIRTY_FLAGS_MAX } from './defaults.js';
20
+ import { CompositorStatePool, accessCompositeState } from './compositor-pool.js';
21
+ import { DirtyFlags } from './dirty.js';
22
+ import { RuntimeCoordinator } from './runtime-coordinator.js';
23
+ import { SpeculativeEvaluator } from './speculative.js';
24
+ /**
25
+ * Widen a Quantizer's boundary parameter to Boundary.Shape for storage in
26
+ * a heterogeneous registry. Safe because Quantizer<B> is covariant in B
27
+ * (B only appears in return positions on Quantizer).
28
+ */
29
+ function widenQuantizer(q) {
30
+ return q;
31
+ }
32
+ function emptyCompositeState() {
33
+ return {
34
+ discrete: {},
35
+ blend: {},
36
+ outputs: { css: {}, glsl: {}, aria: {} },
37
+ };
38
+ }
39
+ const MAX_DIRTY_KEYS = DIRTY_FLAGS_MAX;
40
+ /**
41
+ * Compositor — the live merge point for every attached {@link Quantizer}.
42
+ *
43
+ * `Compositor.create` hands back a scoped Effect that, when run inside a
44
+ * `Scope`, produces a compositor bound to a {@link RuntimeCoordinator}. Adding
45
+ * quantizers, marking dirty flags, and emitting CSS/GLSL/ARIA outputs all flow
46
+ * through the zero-allocation hot path backed by {@link CompositorStatePool}.
47
+ *
48
+ * @example
49
+ * ```ts
50
+ * import { Effect } from 'effect';
51
+ * import { Compositor } from '@czap/core';
52
+ *
53
+ * const program = Effect.scoped(Effect.gen(function* () {
54
+ * const compositor = yield* Compositor.create({ poolCapacity: 64, speculative: true });
55
+ * yield* compositor.add('viewport', viewportQuantizer);
56
+ * const state = yield* compositor.compute();
57
+ * // state.discrete.viewport === 'tablet'
58
+ * // state.outputs.css['--czap-viewport'] === 'tablet'
59
+ * }));
60
+ * ```
61
+ */
62
+ export const Compositor = {
63
+ /** Build a scoped compositor bound to a fresh {@link RuntimeCoordinator}. */
64
+ create(config) {
65
+ return Effect.gen(function* () {
66
+ const stateRef = yield* SubscriptionRef.make(emptyCompositeState());
67
+ const qMap = new Map();
68
+ const metaMap = new Map();
69
+ const overrides = new Map();
70
+ const pool = CompositorStatePool.make(config?.poolCapacity ?? COMPOSITOR_POOL_CAP);
71
+ const frameBudget = config?.frameBudget;
72
+ const useSpeculative = config?.speculative ?? false;
73
+ const runtime = RuntimeCoordinator.create({
74
+ capacity: Math.max(config?.poolCapacity ?? COMPOSITOR_POOL_CAP, MAX_DIRTY_KEYS + 8),
75
+ name: 'czap-compositor-runtime',
76
+ });
77
+ const speculativeEvaluators = new Map();
78
+ const prefetchedStates = new Map();
79
+ let nameList = [];
80
+ let dirty = null;
81
+ let recomputeAll = false;
82
+ let previousState = emptyCompositeState();
83
+ let priorPreviousState = null;
84
+ let batchScheduled = false;
85
+ function rebuildDirtyFlags() {
86
+ if (nameList.length > MAX_DIRTY_KEYS) {
87
+ dirty = null;
88
+ recomputeAll = true;
89
+ return;
90
+ }
91
+ dirty = DirtyFlags.make(nameList);
92
+ recomputeAll = false;
93
+ for (const name of nameList) {
94
+ dirty.mark(name);
95
+ runtime.markDirty(name);
96
+ }
97
+ }
98
+ function computeStateSync() {
99
+ const dirtyFlags = dirty;
100
+ const dirtyNames = recomputeAll || dirtyFlags === null ? Array.from(qMap.keys()) : dirtyFlags.getDirty();
101
+ const shouldRecompute = recomputeAll || dirtyFlags === null ? () => true : (name) => dirtyFlags.isDirty(name);
102
+ const state = pool.acquire();
103
+ const { discrete, blend, css, glsl, aria } = accessCompositeState(state);
104
+ for (const [name] of qMap) {
105
+ if (shouldRecompute(name)) {
106
+ continue;
107
+ }
108
+ const meta = metaMap.get(name);
109
+ const previousDiscrete = previousState.discrete[name];
110
+ if (previousDiscrete !== undefined) {
111
+ discrete[name] = previousDiscrete;
112
+ }
113
+ const previousBlend = previousState.blend[name];
114
+ blend[name] = previousBlend;
115
+ const previousCss = previousState.outputs.css[meta.cssKey];
116
+ if (previousCss !== undefined) {
117
+ css[meta.cssKey] = previousCss;
118
+ }
119
+ const previousGlsl = previousState.outputs.glsl[meta.glslKey];
120
+ if (previousGlsl !== undefined) {
121
+ glsl[meta.glslKey] = previousGlsl;
122
+ }
123
+ const previousAria = previousState.outputs.aria[meta.ariaKey];
124
+ if (previousAria !== undefined) {
125
+ aria[meta.ariaKey] = previousAria;
126
+ }
127
+ }
128
+ for (const phase of runtime.phases) {
129
+ switch (phase) {
130
+ case 'compute-discrete':
131
+ for (const name of dirtyNames) {
132
+ const quantizer = qMap.get(name);
133
+ const prefetched = prefetchedStates.get(name);
134
+ const stateStr = prefetched ?? (quantizer.stateSync ? quantizer.stateSync() : Effect.runSync(quantizer.state));
135
+ discrete[name] = stateStr;
136
+ runtime.setState(name, stateStr);
137
+ prefetchedStates.delete(name);
138
+ }
139
+ break;
140
+ case 'compute-blend':
141
+ for (const name of dirtyNames) {
142
+ const meta = metaMap.get(name);
143
+ const override = overrides.get(name);
144
+ if (override !== undefined) {
145
+ blend[name] = override;
146
+ continue;
147
+ }
148
+ blend[name] = meta.oneHotWeights[discrete[name] ?? ''] ?? {};
149
+ }
150
+ break;
151
+ case 'emit-css':
152
+ for (const name of dirtyNames) {
153
+ const meta = metaMap.get(name);
154
+ const stateStr = discrete[name];
155
+ if (stateStr !== undefined && meta) {
156
+ css[meta.cssKey] = stateStr;
157
+ }
158
+ }
159
+ break;
160
+ case 'emit-glsl':
161
+ if (!frameBudget || frameBudget.canRun('high')) {
162
+ for (const name of dirtyNames) {
163
+ const meta = metaMap.get(name);
164
+ glsl[meta.glslKey] = runtime.getStateIndex(name);
165
+ }
166
+ }
167
+ break;
168
+ case 'emit-aria':
169
+ if (!frameBudget || frameBudget.canRun('low')) {
170
+ for (const name of dirtyNames) {
171
+ const meta = metaMap.get(name);
172
+ const stateStr = discrete[name];
173
+ if (stateStr !== undefined) {
174
+ aria[meta.ariaKey] = stateStr;
175
+ }
176
+ }
177
+ }
178
+ break;
179
+ }
180
+ }
181
+ if (dirty) {
182
+ dirty.clearAll();
183
+ }
184
+ // Two-slot rotation: the most-recently-published state stays readable for one
185
+ // more tick (so consumers who hold a reference returned from compute() see live
186
+ // data until the *next-next* publish). Without this rotation, every tick takes
187
+ // the overflow path in CompositorStatePool.acquire and the pool grows unboundedly.
188
+ const releasable = priorPreviousState;
189
+ priorPreviousState = previousState;
190
+ previousState = state;
191
+ Effect.runSync(SubscriptionRef.set(stateRef, state));
192
+ if (releasable && releasable !== state)
193
+ pool.release(releasable);
194
+ return state;
195
+ }
196
+ const compositor = {
197
+ add: (name, quantizer) => Effect.sync(() => {
198
+ // Quantizer<B> is covariant in B (B only appears in return types), so widening
199
+ // to Quantizer<Boundary.Shape> is sound; wrap in a named helper to document.
200
+ qMap.set(name, widenQuantizer(quantizer));
201
+ metaMap.set(name, {
202
+ cssKey: `--czap-${name}`,
203
+ glslKey: `u_${name}`,
204
+ ariaKey: `data-czap-${name}`,
205
+ oneHotWeights: Object.fromEntries(quantizer.boundary.states.map((activeState) => [
206
+ activeState,
207
+ Object.freeze(Object.fromEntries(quantizer.boundary.states.map((stateName) => [
208
+ stateName,
209
+ stateName === activeState ? 1 : 0,
210
+ ]))),
211
+ ])),
212
+ });
213
+ runtime.registerQuantizer(name, quantizer.boundary.states);
214
+ runtime.markDirty(name);
215
+ if (!nameList.includes(name)) {
216
+ nameList.push(name);
217
+ rebuildDirtyFlags();
218
+ }
219
+ if (dirty) {
220
+ dirty.mark(name);
221
+ }
222
+ if (useSpeculative) {
223
+ speculativeEvaluators.set(name, SpeculativeEvaluator.make(quantizer.boundary));
224
+ }
225
+ computeStateSync();
226
+ }),
227
+ remove: (name) => Effect.sync(() => {
228
+ qMap.delete(name);
229
+ metaMap.delete(name);
230
+ nameList = nameList.filter((entry) => entry !== name);
231
+ rebuildDirtyFlags();
232
+ runtime.removeQuantizer(name);
233
+ speculativeEvaluators.delete(name);
234
+ prefetchedStates.delete(name);
235
+ computeStateSync();
236
+ }),
237
+ compute: () => Effect.sync(() => computeStateSync()),
238
+ setBlendWeights: (name, weights) => Effect.sync(() => {
239
+ overrides.set(name, weights);
240
+ if (dirty) {
241
+ dirty.mark(name);
242
+ }
243
+ runtime.markDirty(name);
244
+ }),
245
+ evaluateSpeculative(name, value, velocity) {
246
+ const speculative = speculativeEvaluators.get(name);
247
+ if (!speculative) {
248
+ return;
249
+ }
250
+ const result = speculative.evaluate(value, velocity);
251
+ if (result.prefetched && result.confidence > 0.7) {
252
+ prefetchedStates.set(name, result.prefetched);
253
+ runtime.markDirty(name);
254
+ if (dirty) {
255
+ dirty.mark(name);
256
+ }
257
+ return;
258
+ }
259
+ prefetchedStates.delete(name);
260
+ },
261
+ scheduleBatch() {
262
+ if (batchScheduled) {
263
+ return;
264
+ }
265
+ batchScheduled = true;
266
+ queueMicrotask(() => {
267
+ batchScheduled = false;
268
+ computeStateSync();
269
+ });
270
+ },
271
+ changes: SubscriptionRef.changes(stateRef),
272
+ runtime,
273
+ };
274
+ return compositor;
275
+ });
276
+ },
277
+ };
278
+ //# sourceMappingURL=compositor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compositor.js","sourceRoot":"","sources":["../src/compositor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Config -- unified project configuration hub.
3
+ *
4
+ * Config.make() produces a frozen, FNV-1a content-addressed Config.Shape.
5
+ * Projection functions are pure — no side effects, no I/O.
6
+ */
7
+ import type { ContentAddress } from './brands.js';
8
+ import type { Boundary } from './boundary.js';
9
+ import type { Token } from './token.js';
10
+ import type { Theme } from './theme.js';
11
+ import type { Style } from './style.js';
12
+ /** Top-level discriminator for czap primitives: which bucket a declaration belongs to. */
13
+ export type PrimitiveKind = 'boundary' | 'token' | 'theme' | 'style';
14
+ /**
15
+ * Vite-plugin slice of a czap {@link Config.Shape}: source directories per
16
+ * primitive kind, HMR opt-in, environment targeting, and optional WASM hints.
17
+ */
18
+ export interface PluginConfig {
19
+ readonly dirs?: Partial<Record<PrimitiveKind, string>>;
20
+ readonly hmr?: boolean;
21
+ readonly environments?: readonly ('browser' | 'server' | 'shader')[];
22
+ readonly wasm?: {
23
+ readonly enabled?: boolean;
24
+ readonly path?: string;
25
+ };
26
+ }
27
+ /** Astro-integration slice of a czap {@link Config.Shape}. */
28
+ export interface AstroConfig {
29
+ readonly satellite?: boolean;
30
+ readonly edgeRuntime?: boolean;
31
+ }
32
+ /**
33
+ * Config namespace — the single hub that every czap adapter (Vite, Astro, test
34
+ * runners, edge runtime) projects from. {@link Config.make} produces a frozen,
35
+ * FNV-1a content-addressed {@link Config.Shape}; every projection function
36
+ * (`toViteConfig`, `toAstroConfig`, `toTestAliases`) is pure.
37
+ */
38
+ export declare const Config: {
39
+ /** Build a frozen, content-addressed {@link Config.Shape} from raw input. */
40
+ make(input: Config.Input): Config.Shape;
41
+ /** Project the Vite-plugin slice of a config for `@czap/vite`. */
42
+ toViteConfig(cfg: Config.Shape): PluginConfig;
43
+ /** Project the Astro-integration slice of a config for `@czap/astro`. */
44
+ toAstroConfig(cfg: Config.Shape): AstroConfig;
45
+ /** Materialize the `@czap/*` → source-path alias map used by the vitest runner. */
46
+ toTestAliases(cfg: Config.Shape, repoRoot: string): Record<string, string>;
47
+ };
48
+ export declare namespace Config {
49
+ /** Raw user-facing input to {@link Config.make} — every field is optional. */
50
+ interface Input {
51
+ readonly boundaries?: Record<string, Boundary.Shape>;
52
+ readonly tokens?: Record<string, Token.Shape>;
53
+ readonly themes?: Record<string, Theme.Shape>;
54
+ readonly styles?: Record<string, Style.Shape>;
55
+ readonly vite?: Partial<PluginConfig>;
56
+ readonly astro?: Partial<AstroConfig>;
57
+ }
58
+ /** Frozen, content-addressed result of {@link Config.make}. */
59
+ interface Shape {
60
+ readonly _tag: 'ConfigDef';
61
+ readonly id: ContentAddress;
62
+ readonly boundaries: Record<string, Boundary.Shape>;
63
+ readonly tokens: Record<string, Token.Shape>;
64
+ readonly themes: Record<string, Theme.Shape>;
65
+ readonly styles: Record<string, Style.Shape>;
66
+ readonly vite?: Partial<PluginConfig>;
67
+ readonly astro?: Partial<AstroConfig>;
68
+ }
69
+ }
70
+ /** Thin alias for {@link Config.make} — matches the `defineConfig(...)` ergonomics other tools use. */
71
+ export declare function defineConfig(input: Config.Input): Config.Shape;
72
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js ADDED
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Config -- unified project configuration hub.
3
+ *
4
+ * Config.make() produces a frozen, FNV-1a content-addressed Config.Shape.
5
+ * Projection functions are pure — no side effects, no I/O.
6
+ */
7
+ import { fnv1a } from './fnv.js';
8
+ // ─────────────────────────────────────────────────────────────────────────────
9
+ // Config namespace + value object (declaration merging — same pattern as Boundary)
10
+ // ─────────────────────────────────────────────────────────────────────────────
11
+ /**
12
+ * Config namespace — the single hub that every czap adapter (Vite, Astro, test
13
+ * runners, edge runtime) projects from. {@link Config.make} produces a frozen,
14
+ * FNV-1a content-addressed {@link Config.Shape}; every projection function
15
+ * (`toViteConfig`, `toAstroConfig`, `toTestAliases`) is pure.
16
+ */
17
+ export const Config = {
18
+ /** Build a frozen, content-addressed {@link Config.Shape} from raw input. */
19
+ make(input) {
20
+ // Sort named collection keys so insertion order doesn't affect the hash.
21
+ const sortKeys = (obj) => Object.fromEntries(Object.entries(obj).sort());
22
+ const canonical = JSON.stringify({
23
+ boundaries: sortKeys(input.boundaries ?? {}),
24
+ tokens: sortKeys(input.tokens ?? {}),
25
+ themes: sortKeys(input.themes ?? {}),
26
+ styles: sortKeys(input.styles ?? {}),
27
+ vite: input.vite,
28
+ astro: input.astro,
29
+ });
30
+ const id = fnv1a(canonical);
31
+ return Object.freeze({
32
+ _tag: 'ConfigDef',
33
+ id,
34
+ boundaries: input.boundaries ?? {},
35
+ tokens: input.tokens ?? {},
36
+ themes: input.themes ?? {},
37
+ styles: input.styles ?? {},
38
+ vite: input.vite,
39
+ astro: input.astro,
40
+ });
41
+ },
42
+ /** Project the Vite-plugin slice of a config for `@czap/vite`. */
43
+ toViteConfig(cfg) {
44
+ return {
45
+ ...(cfg.vite?.dirs !== undefined && { dirs: cfg.vite.dirs }),
46
+ ...(cfg.vite?.hmr !== undefined && { hmr: cfg.vite.hmr }),
47
+ ...(cfg.vite?.environments !== undefined && { environments: cfg.vite.environments }),
48
+ ...(cfg.vite?.wasm !== undefined && { wasm: cfg.vite.wasm }),
49
+ };
50
+ },
51
+ /** Project the Astro-integration slice of a config for `@czap/astro`. */
52
+ toAstroConfig(cfg) {
53
+ return {
54
+ ...(cfg.astro?.satellite !== undefined && { satellite: cfg.astro.satellite }),
55
+ ...(cfg.astro?.edgeRuntime !== undefined && { edgeRuntime: cfg.astro.edgeRuntime }),
56
+ };
57
+ },
58
+ /** Materialize the `@czap/*` → source-path alias map used by the vitest runner. */
59
+ toTestAliases(cfg, repoRoot) {
60
+ void cfg; // cfg reserved for future per-project customisation
61
+ // Use forward-slash join so paths are portable across platforms.
62
+ const r = (sub) => `${repoRoot.replace(/\\/g, '/')}/${sub}`;
63
+ // NOTE: longer prefixes MUST come before shorter ones — vitest's alias
64
+ // resolver matches the first prefix in iteration order, so e.g.
65
+ // `@czap/core/testing` would be intercepted by `@czap/core` if listed first.
66
+ return {
67
+ '@czap/core/testing': r('packages/core/src/testing.ts'),
68
+ '@czap/core/harness': r('packages/core/src/harness/index.ts'),
69
+ '@czap/core': r('packages/core/src/index.ts'),
70
+ '@czap/quantizer/testing': r('packages/quantizer/src/testing.ts'),
71
+ '@czap/quantizer': r('packages/quantizer/src/index.ts'),
72
+ '@czap/compiler': r('packages/compiler/src/index.ts'),
73
+ '@czap/web/lite': r('packages/web/src/lite.ts'),
74
+ '@czap/web': r('packages/web/src/index.ts'),
75
+ '@czap/detect': r('packages/detect/src/index.ts'),
76
+ '@czap/vite/html-transform': r('packages/vite/src/html-transform.ts'),
77
+ '@czap/vite': r('packages/vite/src/index.ts'),
78
+ '@czap/astro/runtime': r('packages/astro/src/runtime/index.ts'),
79
+ '@czap/astro': r('packages/astro/src/index.ts'),
80
+ '@czap/remotion': r('packages/remotion/src/index.ts'),
81
+ '@czap/scene/dev': r('packages/scene/src/dev/server.ts'),
82
+ '@czap/scene': r('packages/scene/src/index.ts'),
83
+ '@czap/assets/testing': r('packages/assets/src/testing.ts'),
84
+ '@czap/assets': r('packages/assets/src/index.ts'),
85
+ '@czap/cli': r('packages/cli/src/index.ts'),
86
+ '@czap/mcp-server': r('packages/mcp-server/src/index.ts'),
87
+ '@czap/edge': r('packages/edge/src/index.ts'),
88
+ '@czap/worker': r('packages/worker/src/index.ts'),
89
+ '@czap/_spine': r('packages/_spine'),
90
+ };
91
+ },
92
+ };
93
+ /** Thin alias for {@link Config.make} — matches the `defineConfig(...)` ergonomics other tools use. */
94
+ export function defineConfig(input) {
95
+ return Config.make(input);
96
+ }
97
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AA0BjC,gFAAgF;AAChF,mFAAmF;AACnF,gFAAgF;AAEhF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,6EAA6E;IAC7E,IAAI,CAAC,KAAmB;QACtB,yEAAyE;QACzE,MAAM,QAAQ,GAAG,CAAI,GAAsB,EAAqB,EAAE,CAChE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAC/B,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;YAC5C,MAAM,EAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,IAAQ,EAAE,CAAC;YAC5C,MAAM,EAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,IAAQ,EAAE,CAAC;YAC5C,MAAM,EAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,IAAQ,EAAE,CAAC;YAC5C,IAAI,EAAQ,KAAK,CAAC,IAAI;YACtB,KAAK,EAAO,KAAK,CAAC,KAAK;SACxB,CAAC,CAAC;QACH,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,IAAI,EAAQ,WAAoB;YAChC,EAAE;YACF,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE;YAClC,MAAM,EAAM,KAAK,CAAC,MAAM,IAAQ,EAAE;YAClC,MAAM,EAAM,KAAK,CAAC,MAAM,IAAQ,EAAE;YAClC,MAAM,EAAM,KAAK,CAAC,MAAM,IAAQ,EAAE;YAClC,IAAI,EAAQ,KAAK,CAAC,IAAI;YACtB,KAAK,EAAO,KAAK,CAAC,KAAK;SACxB,CAAC,CAAC;IACL,CAAC;IAED,kEAAkE;IAClE,YAAY,CAAC,GAAiB;QAC5B,OAAO;YACL,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,KAAa,SAAS,IAAI,EAAE,IAAI,EAAU,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5E,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,KAAc,SAAS,IAAI,EAAE,GAAG,EAAW,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3E,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,KAAK,SAAS,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACpF,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,KAAa,SAAS,IAAI,EAAE,IAAI,EAAU,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC7E,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,aAAa,CAAC,GAAiB;QAC7B,OAAO;YACL,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,KAAO,SAAS,IAAI,EAAE,SAAS,EAAI,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACjF,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;SACpF,CAAC;IACJ,CAAC;IAED,mFAAmF;IACnF,aAAa,CAAC,GAAiB,EAAE,QAAgB;QAC/C,KAAK,GAAG,CAAC,CAAC,oDAAoD;QAC9D,iEAAiE;QACjE,MAAM,CAAC,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;QACpE,uEAAuE;QACvE,gEAAgE;QAChE,6EAA6E;QAC7E,OAAO;YACL,oBAAoB,EAAS,CAAC,CAAC,8BAA8B,CAAC;YAC9D,oBAAoB,EAAS,CAAC,CAAC,oCAAoC,CAAC;YACpE,YAAY,EAAiB,CAAC,CAAC,4BAA4B,CAAC;YAC5D,yBAAyB,EAAI,CAAC,CAAC,mCAAmC,CAAC;YACnE,iBAAiB,EAAY,CAAC,CAAC,iCAAiC,CAAC;YACjE,gBAAgB,EAAa,CAAC,CAAC,gCAAgC,CAAC;YAChE,gBAAgB,EAAa,CAAC,CAAC,0BAA0B,CAAC;YAC1D,WAAW,EAAkB,CAAC,CAAC,2BAA2B,CAAC;YAC3D,cAAc,EAAe,CAAC,CAAC,8BAA8B,CAAC;YAC9D,2BAA2B,EAAE,CAAC,CAAC,qCAAqC,CAAC;YACrE,YAAY,EAAiB,CAAC,CAAC,4BAA4B,CAAC;YAC5D,qBAAqB,EAAQ,CAAC,CAAC,qCAAqC,CAAC;YACrE,aAAa,EAAgB,CAAC,CAAC,6BAA6B,CAAC;YAC7D,gBAAgB,EAAa,CAAC,CAAC,gCAAgC,CAAC;YAChE,iBAAiB,EAAY,CAAC,CAAC,kCAAkC,CAAC;YAClE,aAAa,EAAgB,CAAC,CAAC,6BAA6B,CAAC;YAC7D,sBAAsB,EAAO,CAAC,CAAC,gCAAgC,CAAC;YAChE,cAAc,EAAe,CAAC,CAAC,8BAA8B,CAAC;YAC9D,WAAW,EAAkB,CAAC,CAAC,2BAA2B,CAAC;YAC3D,kBAAkB,EAAW,CAAC,CAAC,kCAAkC,CAAC;YAClE,YAAY,EAAiB,CAAC,CAAC,4BAA4B,CAAC;YAC5D,cAAc,EAAe,CAAC,CAAC,8BAA8B,CAAC;YAC9D,cAAc,EAAe,CAAC,CAAC,iBAAiB,CAAC;SAClD,CAAC;IACJ,CAAC;CACF,CAAC;AA0BF,uGAAuG;AACvG,MAAM,UAAU,YAAY,CAAC,KAAmB;IAC9C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC"}