framefields 2.13.0 → 2.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/README.md +9 -4
  2. package/dist/audio/index.d.mts +3 -3
  3. package/dist/audio/index.mjs +10 -10
  4. package/dist/{audio-CHV33Od9.d.mts → audio-C4B9p_yq.d.mts} +2 -2
  5. package/dist/{audio-CHV33Od9.d.mts.map → audio-C4B9p_yq.d.mts.map} +1 -1
  6. package/dist/{audio-DHzLQ_RG.mjs → audio-DIvi6hTD.mjs} +3 -3
  7. package/dist/{audio-DHzLQ_RG.mjs.map → audio-DIvi6hTD.mjs.map} +1 -1
  8. package/dist/cli/check-worker.mjs +43 -43
  9. package/dist/cloud/index.d.mts.map +1 -1
  10. package/dist/components/index.d.mts +7 -7
  11. package/dist/components/index.mjs +42 -42
  12. package/dist/{dist-CUNvNDS3.mjs → dist-CCrYOkcc.mjs} +18 -4
  13. package/dist/dist-CCrYOkcc.mjs.map +1 -0
  14. package/dist/{dist-D3BeAZ7X.mjs → dist-DtPPPsZV.mjs} +314 -137
  15. package/dist/dist-DtPPPsZV.mjs.map +1 -0
  16. package/dist/effects/index.d.mts +3 -3
  17. package/dist/effects/index.mjs +34 -34
  18. package/dist/{effects-BiDgCK1L.mjs → effects-B-L3rLs6.mjs} +2 -2
  19. package/dist/{effects-BiDgCK1L.mjs.map → effects-B-L3rLs6.mjs.map} +1 -1
  20. package/dist/fonts/index.mjs +2 -2
  21. package/dist/{fonts-DeDPWdvJ.mjs → fonts-k5ll8NTE.mjs} +2 -2
  22. package/dist/{fonts-DeDPWdvJ.mjs.map → fonts-k5ll8NTE.mjs.map} +1 -1
  23. package/dist/{gpu-CWjgql4C.mjs → gpu-D2HT3KcE.mjs} +2 -2
  24. package/dist/{gpu-CWjgql4C.mjs.map → gpu-D2HT3KcE.mjs.map} +1 -1
  25. package/dist/{index-D68eGFNE.d.mts → index-B08eSpaI.d.mts} +2 -2
  26. package/dist/{index-D68eGFNE.d.mts.map → index-B08eSpaI.d.mts.map} +1 -1
  27. package/dist/index-BFTtXosj.d.mts.map +1 -1
  28. package/dist/{index-YB9j9KUx.d.mts → index-BGlaws7-.d.mts} +2 -2
  29. package/dist/{index-YB9j9KUx.d.mts.map → index-BGlaws7-.d.mts.map} +1 -1
  30. package/dist/{index-Dibc_xpC.d.mts → index-ByhlTwxh.d.mts} +3 -3
  31. package/dist/{index-Dibc_xpC.d.mts.map → index-ByhlTwxh.d.mts.map} +1 -1
  32. package/dist/{index-X2u96TEo.d.mts → index-C2yaponf.d.mts} +2 -3
  33. package/dist/index-C2yaponf.d.mts.map +1 -0
  34. package/dist/{index-E2IXX0Cz.d.mts → index-CtKUQ2VG.d.mts} +4 -4
  35. package/dist/{index-E2IXX0Cz.d.mts.map → index-CtKUQ2VG.d.mts.map} +1 -1
  36. package/dist/index.d.mts +7 -7
  37. package/dist/index.mjs +49 -49
  38. package/dist/preview/index.d.mts +1 -1
  39. package/dist/preview/index.mjs +10 -10
  40. package/dist/preview-engine/audio.mjs +1 -1
  41. package/dist/preview-engine/{chunk-IEEV5RB3.mjs → chunk-3C2XT64C.mjs} +1 -1
  42. package/dist/preview-engine/chunk-52X7SURQ.mjs +494 -0
  43. package/dist/preview-engine/{chunk-77WWW75O.mjs → chunk-5ZS46EFB.mjs} +1 -1
  44. package/dist/preview-engine/{chunk-4P3MMJWD.mjs → chunk-FZ4RD7HV.mjs} +1 -1
  45. package/dist/preview-engine/{chunk-UFPA36D2.mjs → chunk-N3XTDAL6.mjs} +18 -18
  46. package/dist/preview-engine/chunk-OBIJIQCZ.mjs +1 -0
  47. package/dist/preview-engine/{chunk-SMHEMYCV.mjs → chunk-UBY2UYEL.mjs} +1 -1
  48. package/dist/preview-engine/{chunk-XYCR3STG.mjs → chunk-XCPRRMMW.mjs} +31 -31
  49. package/dist/preview-engine/components.mjs +1 -1
  50. package/dist/preview-engine/effects.mjs +1 -1
  51. package/dist/preview-engine/framefields.mjs +1 -1
  52. package/dist/preview-engine/player.mjs +1 -1
  53. package/dist/preview-engine/renderers-ZMMQ7S2A.mjs +228 -0
  54. package/dist/preview-engine/signals.mjs +1 -1
  55. package/dist/{preview-PDz7o2xg.mjs → preview-lHH8Tv4j.mjs} +3 -3
  56. package/dist/{preview-PDz7o2xg.mjs.map → preview-lHH8Tv4j.mjs.map} +1 -1
  57. package/dist/{program-Bn6ko_I4.mjs → program-BfiB9ttP.mjs} +15 -2
  58. package/dist/program-BfiB9ttP.mjs.map +1 -0
  59. package/dist/renderer/index.d.mts +1 -1
  60. package/dist/renderer/index.mjs +2 -2
  61. package/dist/renderer-0rLmztAv.mjs +5 -0
  62. package/dist/{renderer-BjgFpwVK.mjs → renderer-4nsuReW2.mjs} +3 -3
  63. package/dist/{renderer-BjgFpwVK.mjs.map → renderer-4nsuReW2.mjs.map} +1 -1
  64. package/dist/{renderer-DJPZs_zV.mjs → renderer-7xQmXXMH.mjs} +3 -3
  65. package/dist/{renderer-DJPZs_zV.mjs.map → renderer-7xQmXXMH.mjs.map} +1 -1
  66. package/dist/renderer-B0pjOXFY.mjs +5 -0
  67. package/dist/{renderer-C_1eqfI0.mjs → renderer-B10HDC13.mjs} +3 -3
  68. package/dist/{renderer-C_1eqfI0.mjs.map → renderer-B10HDC13.mjs.map} +1 -1
  69. package/dist/{renderer-DRal7Goa.mjs → renderer-B2IUPjhw.mjs} +3 -3
  70. package/dist/{renderer-DRal7Goa.mjs.map → renderer-B2IUPjhw.mjs.map} +1 -1
  71. package/dist/{renderer-Br8km655.mjs → renderer-B3_GddgJ.mjs} +2 -2
  72. package/dist/{renderer-Br8km655.mjs.map → renderer-B3_GddgJ.mjs.map} +1 -1
  73. package/dist/{renderer-DOZPZTxe.mjs → renderer-B3un4Pdi.mjs} +3 -3
  74. package/dist/{renderer-DOZPZTxe.mjs.map → renderer-B3un4Pdi.mjs.map} +1 -1
  75. package/dist/{renderer-Dp5ChuOs.mjs → renderer-B6bK9rXm.mjs} +2 -2
  76. package/dist/{renderer-Dp5ChuOs.mjs.map → renderer-B6bK9rXm.mjs.map} +1 -1
  77. package/dist/renderer-B7J13reL.mjs +5 -0
  78. package/dist/{renderer-Nnu32rqg.mjs → renderer-BEhZiOT4.mjs} +2 -2
  79. package/dist/{renderer-Nnu32rqg.mjs.map → renderer-BEhZiOT4.mjs.map} +1 -1
  80. package/dist/{renderer-C7m7Yxgc.mjs → renderer-BEuXJY-C.mjs} +3 -3
  81. package/dist/{renderer-C7m7Yxgc.mjs.map → renderer-BEuXJY-C.mjs.map} +1 -1
  82. package/dist/{renderer-D-fzEZfX.mjs → renderer-BGchUBW_.mjs} +2 -2
  83. package/dist/{renderer-D-fzEZfX.mjs.map → renderer-BGchUBW_.mjs.map} +1 -1
  84. package/dist/{renderer--Q0pM9Vh.mjs → renderer-BIKkxw_Z.mjs} +3 -3
  85. package/dist/{renderer--Q0pM9Vh.mjs.map → renderer-BIKkxw_Z.mjs.map} +1 -1
  86. package/dist/{renderer-Dz6P-rPI.mjs → renderer-BM19iK8v.mjs} +2 -2
  87. package/dist/{renderer-Dz6P-rPI.mjs.map → renderer-BM19iK8v.mjs.map} +1 -1
  88. package/dist/{renderer-CE4535aW.mjs → renderer-BOlHW3Mi.mjs} +2 -2
  89. package/dist/{renderer-CE4535aW.mjs.map → renderer-BOlHW3Mi.mjs.map} +1 -1
  90. package/dist/renderer-BPGIKGgl.mjs +5 -0
  91. package/dist/{renderer-C9dqx3U7.mjs → renderer-BTwuM9u-.mjs} +3 -3
  92. package/dist/{renderer-C9dqx3U7.mjs.map → renderer-BTwuM9u-.mjs.map} +1 -1
  93. package/dist/{renderer-BqUAyzCZ.mjs → renderer-BZMh2io2.mjs} +2 -2
  94. package/dist/{renderer-BqUAyzCZ.mjs.map → renderer-BZMh2io2.mjs.map} +1 -1
  95. package/dist/{renderer-BZgJj8Cl.mjs → renderer-BZX932Lj.mjs} +2 -2
  96. package/dist/{renderer-BZgJj8Cl.mjs.map → renderer-BZX932Lj.mjs.map} +1 -1
  97. package/dist/{renderer-BgjPbgbn.mjs → renderer-BhcTYhaP.mjs} +3 -3
  98. package/dist/{renderer-BgjPbgbn.mjs.map → renderer-BhcTYhaP.mjs.map} +1 -1
  99. package/dist/{renderer-CyUiXLRa.mjs → renderer-BmyFfvVA.mjs} +3 -3
  100. package/dist/{renderer-CyUiXLRa.mjs.map → renderer-BmyFfvVA.mjs.map} +1 -1
  101. package/dist/{renderer-opVuiAQR.mjs → renderer-BrEeUw7T.mjs} +2 -2
  102. package/dist/{renderer-opVuiAQR.mjs.map → renderer-BrEeUw7T.mjs.map} +1 -1
  103. package/dist/{renderer-CMnlgAGs.mjs → renderer-BsrKj6Td.mjs} +2 -2
  104. package/dist/{renderer-CMnlgAGs.mjs.map → renderer-BsrKj6Td.mjs.map} +1 -1
  105. package/dist/renderer-Bv-Artj1.mjs +5 -0
  106. package/dist/{renderer-BO_wuUKA.mjs → renderer-BvBqTAtk.mjs} +3 -3
  107. package/dist/{renderer-BO_wuUKA.mjs.map → renderer-BvBqTAtk.mjs.map} +1 -1
  108. package/dist/renderer-BvLjbhcL.mjs +5 -0
  109. package/dist/{renderer-D8gN7aqk.mjs → renderer-Bw-_GZVw.mjs} +3 -3
  110. package/dist/{renderer-D8gN7aqk.mjs.map → renderer-Bw-_GZVw.mjs.map} +1 -1
  111. package/dist/{renderer-LXhEPCmy.mjs → renderer-Bw0O--gW.mjs} +3 -3
  112. package/dist/{renderer-LXhEPCmy.mjs.map → renderer-Bw0O--gW.mjs.map} +1 -1
  113. package/dist/renderer-By6awWaf.mjs +5 -0
  114. package/dist/renderer-C0rvsz7m.mjs +5 -0
  115. package/dist/{renderer-SJyp9-62.mjs → renderer-C4hd6Cqi.mjs} +2 -2
  116. package/dist/{renderer-SJyp9-62.mjs.map → renderer-C4hd6Cqi.mjs.map} +1 -1
  117. package/dist/{renderer-CnL8Cmmr.mjs → renderer-C64_B8It.mjs} +2 -2
  118. package/dist/{renderer-FPiLBwj5.mjs → renderer-C98XwEIr.mjs} +2 -2
  119. package/dist/{renderer-FPiLBwj5.mjs.map → renderer-C98XwEIr.mjs.map} +1 -1
  120. package/dist/{renderer-CL-vyXgX.mjs → renderer-CC22Djgi.mjs} +3 -3
  121. package/dist/{renderer-CL-vyXgX.mjs.map → renderer-CC22Djgi.mjs.map} +1 -1
  122. package/dist/renderer-CDgud_HB.mjs +5 -0
  123. package/dist/renderer-CDiRF3bG.mjs +6 -0
  124. package/dist/{renderer-CwlY8Tb-.mjs → renderer-CHCRcCKw.mjs} +2 -2
  125. package/dist/{renderer-CwlY8Tb-.mjs.map → renderer-CHCRcCKw.mjs.map} +1 -1
  126. package/dist/renderer-CIIEQd4B.mjs +5 -0
  127. package/dist/renderer-CJblwOA9.mjs +5 -0
  128. package/dist/renderer-CNMOXtXE.mjs +5 -0
  129. package/dist/{renderer-S9tVGneU.mjs → renderer-CO4NGvAh.mjs} +69 -69
  130. package/dist/{renderer-S9tVGneU.mjs.map → renderer-CO4NGvAh.mjs.map} +1 -1
  131. package/dist/{renderer-CxSFvKd1.mjs → renderer-CO9vE3sd.mjs} +2 -2
  132. package/dist/{renderer-CxSFvKd1.mjs.map → renderer-CO9vE3sd.mjs.map} +1 -1
  133. package/dist/renderer-COeSeNGg.mjs +5 -0
  134. package/dist/{renderer-NBMmvqWl.mjs → renderer-CQ4h8n7p.mjs} +3 -3
  135. package/dist/{renderer-NBMmvqWl.mjs.map → renderer-CQ4h8n7p.mjs.map} +1 -1
  136. package/dist/{renderer-BsMZ5Iaq.mjs → renderer-CRhEGqW4.mjs} +3 -3
  137. package/dist/{renderer-BsMZ5Iaq.mjs.map → renderer-CRhEGqW4.mjs.map} +1 -1
  138. package/dist/{renderer-RzkU_O1i.mjs → renderer-CSu_vYPn.mjs} +3 -3
  139. package/dist/{renderer-RzkU_O1i.mjs.map → renderer-CSu_vYPn.mjs.map} +1 -1
  140. package/dist/{renderer-BCTUqJG7.mjs → renderer-CU6WT5jW.mjs} +3 -3
  141. package/dist/{renderer-BCTUqJG7.mjs.map → renderer-CU6WT5jW.mjs.map} +1 -1
  142. package/dist/renderer-CUfElmtZ.mjs +5 -0
  143. package/dist/{renderer-Cp_HOmp7.mjs → renderer-CXrnzihz.mjs} +3 -3
  144. package/dist/{renderer-Cp_HOmp7.mjs.map → renderer-CXrnzihz.mjs.map} +1 -1
  145. package/dist/renderer-CYh2lFoJ.mjs +5 -0
  146. package/dist/renderer-CYtVZYMH.mjs +5 -0
  147. package/dist/{renderer-C-GTxnfv.mjs → renderer-CdXBRdFf.mjs} +2 -2
  148. package/dist/{renderer-C-GTxnfv.mjs.map → renderer-CdXBRdFf.mjs.map} +1 -1
  149. package/dist/{renderer-puQhVfDS.mjs → renderer-Cfx_FCSf.mjs} +3 -3
  150. package/dist/{renderer-puQhVfDS.mjs.map → renderer-Cfx_FCSf.mjs.map} +1 -1
  151. package/dist/renderer-CjxZlkjb.mjs +5 -0
  152. package/dist/{renderer-DGb_wgTW.mjs → renderer-CkTehyRX.mjs} +3 -3
  153. package/dist/{renderer-DGb_wgTW.mjs.map → renderer-CkTehyRX.mjs.map} +1 -1
  154. package/dist/{renderer-CgK7Q1G8.mjs → renderer-CldjJmRR.mjs} +2 -2
  155. package/dist/{renderer-BlZgyBSo.mjs → renderer-CoC64eam.mjs} +3 -3
  156. package/dist/{renderer-BlZgyBSo.mjs.map → renderer-CoC64eam.mjs.map} +1 -1
  157. package/dist/renderer-Cpd6TvTC.mjs +5 -0
  158. package/dist/{renderer-BPOh9x5X.mjs → renderer-Cv9CKKWG.mjs} +2 -2
  159. package/dist/{renderer-BPOh9x5X.mjs.map → renderer-Cv9CKKWG.mjs.map} +1 -1
  160. package/dist/{renderer-Cu3iKMSJ.mjs → renderer-D-mX1EVA.mjs} +3 -3
  161. package/dist/{renderer-Cu3iKMSJ.mjs.map → renderer-D-mX1EVA.mjs.map} +1 -1
  162. package/dist/{renderer-BMpmmYOq.mjs → renderer-D0h1hTOo.mjs} +2 -2
  163. package/dist/{renderer-BMpmmYOq.mjs.map → renderer-D0h1hTOo.mjs.map} +1 -1
  164. package/dist/{renderer-DpZballM.mjs → renderer-D0xM67cK.mjs} +2 -2
  165. package/dist/{renderer-DpZballM.mjs.map → renderer-D0xM67cK.mjs.map} +1 -1
  166. package/dist/renderer-D3ziOPhX.mjs +5 -0
  167. package/dist/{renderer-549d94qG.mjs → renderer-DCrKEVjb.mjs} +3 -3
  168. package/dist/{renderer-549d94qG.mjs.map → renderer-DCrKEVjb.mjs.map} +1 -1
  169. package/dist/renderer-DL-phtL5.mjs +5 -0
  170. package/dist/{renderer-CQFMyC_c.mjs → renderer-DNynPM6X.mjs} +2 -2
  171. package/dist/{renderer-CQFMyC_c.mjs.map → renderer-DNynPM6X.mjs.map} +1 -1
  172. package/dist/renderer-DSnmYnHg.mjs +5 -0
  173. package/dist/renderer-DUGfsT-E.mjs +5 -0
  174. package/dist/renderer-DW5af9x1.mjs +5 -0
  175. package/dist/{renderer-B-LUGB9h.mjs → renderer-DWYmJSrl.mjs} +2 -2
  176. package/dist/{renderer-B-LUGB9h.mjs.map → renderer-DWYmJSrl.mjs.map} +1 -1
  177. package/dist/renderer-DYMrol1t.mjs +5 -0
  178. package/dist/{renderer-CciiDHuU.mjs → renderer-DYeNNc_G.mjs} +3 -3
  179. package/dist/{renderer-CciiDHuU.mjs.map → renderer-DYeNNc_G.mjs.map} +1 -1
  180. package/dist/{renderer-CYwVNbUh.mjs → renderer-DYlx7VHo.mjs} +2 -2
  181. package/dist/{renderer-CYwVNbUh.mjs.map → renderer-DYlx7VHo.mjs.map} +1 -1
  182. package/dist/{renderer-CZ5mwBW1.mjs → renderer-D_m6Qbsi.mjs} +2 -2
  183. package/dist/{renderer-CZ5mwBW1.mjs.map → renderer-D_m6Qbsi.mjs.map} +1 -1
  184. package/dist/renderer-DekeUHaz.mjs +5 -0
  185. package/dist/{renderer-BKi6jDi_.mjs → renderer-DhGZ41hQ.mjs} +3 -3
  186. package/dist/{renderer-BKi6jDi_.mjs.map → renderer-DhGZ41hQ.mjs.map} +1 -1
  187. package/dist/{renderer-KgsVk9c6.mjs → renderer-DiZkZ0Pr.mjs} +3 -3
  188. package/dist/{renderer-KgsVk9c6.mjs.map → renderer-DiZkZ0Pr.mjs.map} +1 -1
  189. package/dist/{renderer-BtgqTg2K.mjs → renderer-Dm57W73p.mjs} +2 -2
  190. package/dist/renderer-Dt5uyJdZ.mjs +5 -0
  191. package/dist/{renderer-g9SstkTz.mjs → renderer-DtFZbE1j.mjs} +2 -2
  192. package/dist/{renderer-C1ctHdXl.mjs → renderer-DvHi_wXE.mjs} +3 -3
  193. package/dist/{renderer-C1ctHdXl.mjs.map → renderer-DvHi_wXE.mjs.map} +1 -1
  194. package/dist/{renderer-vll8LX0I.mjs → renderer-Dv_iRIyx.mjs} +17 -17
  195. package/dist/renderer-Dv_iRIyx.mjs.map +1 -0
  196. package/dist/renderer-DwLQAnaK.mjs +5 -0
  197. package/dist/{renderer-DXFJv_e6.mjs → renderer-DzON3wDZ.mjs} +3 -3
  198. package/dist/{renderer-DXFJv_e6.mjs.map → renderer-DzON3wDZ.mjs.map} +1 -1
  199. package/dist/{renderer-RAq3LnNy.mjs → renderer-GIlQ9lZq.mjs} +2 -2
  200. package/dist/{renderer-RAq3LnNy.mjs.map → renderer-GIlQ9lZq.mjs.map} +1 -1
  201. package/dist/{renderer-DwGlDNOV.mjs → renderer-HKv5cBdp.mjs} +2 -2
  202. package/dist/{renderer-DwGlDNOV.mjs.map → renderer-HKv5cBdp.mjs.map} +1 -1
  203. package/dist/renderer-IXQP2CWM.mjs +5 -0
  204. package/dist/renderer-K-Pkw63O.mjs +5 -0
  205. package/dist/renderer-MPw2KH9P.mjs +5 -0
  206. package/dist/{renderer-BUj7jE6t.mjs → renderer-QbSrnPZU.mjs} +3 -3
  207. package/dist/{renderer-BUj7jE6t.mjs.map → renderer-QbSrnPZU.mjs.map} +1 -1
  208. package/dist/renderer-RPu8RMav.mjs +5 -0
  209. package/dist/{renderer-dRXP2dJU.mjs → renderer-TfeohPxt.mjs} +3 -3
  210. package/dist/{renderer-dRXP2dJU.mjs.map → renderer-TfeohPxt.mjs.map} +1 -1
  211. package/dist/{renderer-CuPAQjDK.mjs → renderer-Y1kjtOto.mjs} +3 -3
  212. package/dist/{renderer-CuPAQjDK.mjs.map → renderer-Y1kjtOto.mjs.map} +1 -1
  213. package/dist/{renderer-BIieU9pY.mjs → renderer-YONlI6W-.mjs} +3 -3
  214. package/dist/{renderer-BIieU9pY.mjs.map → renderer-YONlI6W-.mjs.map} +1 -1
  215. package/dist/{renderer-45ifiDkn.mjs → renderer-_J9JcCMR.mjs} +3 -3
  216. package/dist/{renderer-45ifiDkn.mjs.map → renderer-_J9JcCMR.mjs.map} +1 -1
  217. package/dist/renderer-dCqxd5N2.mjs +5 -0
  218. package/dist/{renderer-aRk849b3.d.mts → renderer-fG8Jy8Rx.d.mts} +2 -2
  219. package/dist/{renderer-aRk849b3.d.mts.map → renderer-fG8Jy8Rx.d.mts.map} +1 -1
  220. package/dist/renderer-lhjmE-Fp.mjs +5 -0
  221. package/dist/{renderer-_54hiCq0.mjs → renderer-mDBoz0zT.mjs} +3 -3
  222. package/dist/{renderer-_54hiCq0.mjs.map → renderer-mDBoz0zT.mjs.map} +1 -1
  223. package/dist/{renderer-BHPgkoEL.mjs → renderer-pn52dzZz.mjs} +2 -2
  224. package/dist/{renderer-BHPgkoEL.mjs.map → renderer-pn52dzZz.mjs.map} +1 -1
  225. package/dist/renderer-u9cmBuvM.mjs +5 -0
  226. package/dist/{renderer-BPiWsrC2.mjs → renderer-uER8kn7f.mjs} +2 -2
  227. package/dist/{renderer-BPiWsrC2.mjs.map → renderer-uER8kn7f.mjs.map} +1 -1
  228. package/dist/{renderer-B5b-ehRb.mjs → renderer-uzU6dsdR.mjs} +2 -2
  229. package/dist/{renderer-B5b-ehRb.mjs.map → renderer-uzU6dsdR.mjs.map} +1 -1
  230. package/dist/renderer-vH12jcpz.mjs +5 -0
  231. package/dist/{renderer-DxB_OfLs.mjs → renderer-yNWYqvvq.mjs} +2 -2
  232. package/dist/{renderer-DxB_OfLs.mjs.map → renderer-yNWYqvvq.mjs.map} +1 -1
  233. package/dist/{renderer-dGEMVaZ3.mjs → renderer-zLi2qFGT.mjs} +2 -2
  234. package/dist/{renderer-dGEMVaZ3.mjs.map → renderer-zLi2qFGT.mjs.map} +1 -1
  235. package/dist/{renderers-CP8CFWDs-BRQyvcut.mjs → renderers-CP8CFWDs-BufiCyn7.mjs} +2 -2
  236. package/dist/{renderers-CP8CFWDs-BRQyvcut.mjs.map → renderers-CP8CFWDs-BufiCyn7.mjs.map} +1 -1
  237. package/dist/signals/index.d.mts +4 -4
  238. package/dist/signals/index.mjs +4 -4
  239. package/dist/{src-BzFGotRc.mjs → src-DrP7fGJX.mjs} +37 -12
  240. package/dist/{src-BzFGotRc.mjs.map → src-DrP7fGJX.mjs.map} +1 -1
  241. package/package.json +60 -60
  242. package/dist/dist-CUNvNDS3.mjs.map +0 -1
  243. package/dist/dist-D3BeAZ7X.mjs.map +0 -1
  244. package/dist/index-X2u96TEo.d.mts.map +0 -1
  245. package/dist/preview-engine/chunk-7M5LE6EM.mjs +0 -483
  246. package/dist/preview-engine/chunk-FRJPXWAG.mjs +0 -1
  247. package/dist/preview-engine/renderers-TTXTV4PC.mjs +0 -228
  248. package/dist/program-Bn6ko_I4.mjs.map +0 -1
  249. package/dist/renderer-1aSF5BmY.mjs +0 -5
  250. package/dist/renderer-B2e4Gr9u.mjs +0 -5
  251. package/dist/renderer-B6fz4j50.mjs +0 -5
  252. package/dist/renderer-BEftIYw-.mjs +0 -5
  253. package/dist/renderer-BHTnO-7e.mjs +0 -5
  254. package/dist/renderer-BMlnQqTO.mjs +0 -5
  255. package/dist/renderer-BOzcFezY.mjs +0 -5
  256. package/dist/renderer-BVbjJIKJ.mjs +0 -5
  257. package/dist/renderer-BXsHKf4k.mjs +0 -5
  258. package/dist/renderer-Bks49NVl.mjs +0 -5
  259. package/dist/renderer-C-t7qFKr.mjs +0 -5
  260. package/dist/renderer-C24n-6CX.mjs +0 -6
  261. package/dist/renderer-CCReX-7M.mjs +0 -5
  262. package/dist/renderer-CIxFQrAm.mjs +0 -5
  263. package/dist/renderer-CLHBMIqJ.mjs +0 -5
  264. package/dist/renderer-CMJKi-Ye.mjs +0 -5
  265. package/dist/renderer-C_H3mHZa.mjs +0 -5
  266. package/dist/renderer-CfkTdR5B.mjs +0 -5
  267. package/dist/renderer-CnhkXJ0R.mjs +0 -5
  268. package/dist/renderer-CqpyVsq_.mjs +0 -5
  269. package/dist/renderer-CtWgIpTE.mjs +0 -5
  270. package/dist/renderer-CyuKr5ca.mjs +0 -5
  271. package/dist/renderer-D9ON_1Hf.mjs +0 -5
  272. package/dist/renderer-DAnTgh4o.mjs +0 -5
  273. package/dist/renderer-DWgpivA3.mjs +0 -5
  274. package/dist/renderer-Dh_qNNwR.mjs +0 -5
  275. package/dist/renderer-DkCpXPMP.mjs +0 -5
  276. package/dist/renderer-Dre-6cDR.mjs +0 -5
  277. package/dist/renderer-Ds5z4_HX.mjs +0 -5
  278. package/dist/renderer-HGSCOMyP.mjs +0 -5
  279. package/dist/renderer-KMY8W-cJ.mjs +0 -5
  280. package/dist/renderer-R21YvXz3.mjs +0 -5
  281. package/dist/renderer-RtzCz37W.mjs +0 -5
  282. package/dist/renderer-iMrqAjix.mjs +0 -5
  283. package/dist/renderer-sMed1u1O.mjs +0 -5
  284. package/dist/renderer-tsAuo46l.mjs +0 -5
  285. package/dist/renderer-vll8LX0I.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
- import{p as aa,s as Co,t as sa,x as aA}from"./chunk-7M5LE6EM.mjs";import{c as Zi}from"./chunk-CJ4CSVU3.mjs";import{a as Ki,c as zi,i as Yi,j as Wi}from"./chunk-HOV6DDBZ.mjs";import{h as qi,l as Xi}from"./chunk-RECQ74RP.mjs";import{e as ra}from"./chunk-GXFYRMJZ.mjs";import{h as Ji}from"./chunk-ULOFDFHJ.mjs";import{A as ia,j as fr,w as na,x as oa,y as We,z as Aa}from"./chunk-64L4GUOF.mjs";import{r as Re,s as ta,t as Pt}from"./chunk-QEWDIPJ7.mjs";import{a as qr}from"./chunk-354GX6IB.mjs";import{c as $i,e as ea}from"./chunk-5RRKGN2U.mjs";import{o as $e}from"./chunk-BDZ3TSOT.mjs";import{b as qn,d as iA,e as Vi,f as me,g as $}from"./chunk-Y4NIR77Z.mjs";var ma=qn(($u,ha)=>{$();var wo=()=>new Proxy(function(){},{get:(e,t)=>t==="__esModule"?!0:t===Symbol.toPrimitive?()=>"":wo(),apply:()=>wo(),construct:()=>wo()});ha.exports=wo()});var wa=qn((pA,So)=>{$();var L=L||{};L.scope={};L.ASSUME_ES2020=!1;L.ASSUME_ES6=L.ASSUME_ES2020;L.ASSUME_ES5=L.ASSUME_ES6;L.ASSUME_NO_NATIVE_MAP=!1;L.ASSUME_NO_NATIVE_SET=!1;L.ISOLATE_POLYFILLS=!1;L.FORCE_POLYFILL_PROMISE=!1;L.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION=!1;L.INSTRUMENT_ASYNC_CONTEXT=!0;L.objectCreate=L.ASSUME_ES5||typeof Object.create=="function"?Object.create:function(e){var t=function(){};return t.prototype=e,new t};L.defineProperty=L.ASSUME_ES5||typeof Object.defineProperties=="function"?Object.defineProperty:function(e,t,r){return e==Array.prototype||e==Object.prototype||(e[t]=r.value),e};L.getGlobal=function(e){e=[typeof globalThis=="object"&&globalThis,e,typeof window=="object"&&window,typeof self=="object"&&self,typeof globalThis=="object"&&globalThis];for(var t=0;t<e.length;++t){var r=e[t];if(r&&r.Math==Math)return r}throw Error("Cannot find global object")};L.global=L.ASSUME_ES2020?globalThis:L.getGlobal(pA);L.IS_SYMBOL_NATIVE=typeof Symbol=="function"&&typeof Symbol("x")=="symbol";L.TRUST_ES6_POLYFILLS=!L.ISOLATE_POLYFILLS||L.IS_SYMBOL_NATIVE;L.polyfills={};L.propertyToPolyfillSymbol={};L.POLYFILL_PREFIX="$jscp$";L.TYPED_ARRAY_CLASSES=(function(){var e="Int8 Uint8 Uint8Clamped Int16 Uint16 Int32 Uint32 Float32 Float64".split(" ");return L.global.BigInt64Array&&(e.push("BigInt64"),e.push("BigUint64")),e})();L.polyfillTypedArrayMethod=function(e,t,r,n){if(t)for(var o=0;o<L.TYPED_ARRAY_CLASSES.length;o++){var A=L.TYPED_ARRAY_CLASSES[o]+"Array.prototype."+e;L.ISOLATE_POLYFILLS?L.polyfillIsolated(A,t,r,n):L.polyfillUnisolated(A,t,r,n)}};L.polyfill=function(e,t,r,n){t&&(L.ISOLATE_POLYFILLS?L.polyfillIsolated(e,t,r,n):L.polyfillUnisolated(e,t,r,n))};L.polyfillUnisolated=function(e,t,r,n){for(r=L.global,e=e.split("."),n=0;n<e.length-1;n++){var o=e[n];if(!(o in r))return;r=r[o]}e=e[e.length-1],n=r[e],t=t(n),t!=n&&t!=null&&L.defineProperty(r,e,{configurable:!0,writable:!0,value:t})};L.polyfillIsolated=function(e,t,r,n){var o=e.split(".");e=o.length===1,n=o[0],n=!e&&n in L.polyfills?L.polyfills:L.global;for(var A=0;A<o.length-1;A++){var i=o[A];if(!(i in n))return;n=n[i]}o=o[o.length-1],r=L.IS_SYMBOL_NATIVE&&r==="es6"?n[o]:null,t=t(r),t!=null&&(e?L.defineProperty(L.polyfills,o,{configurable:!0,writable:!0,value:t}):t!==r&&(L.propertyToPolyfillSymbol[o]===void 0&&(r=Math.random()*1e9>>>0,L.propertyToPolyfillSymbol[o]=L.IS_SYMBOL_NATIVE?L.global.Symbol(o):L.POLYFILL_PREFIX+r+"$"+o),L.defineProperty(n,L.propertyToPolyfillSymbol[o],{configurable:!0,writable:!0,value:t})))};L.getConstructImplementation=function(){function e(){function r(){}return new r,Reflect.construct(r,[],function(){}),new r instanceof r}if(L.TRUST_ES6_POLYFILLS&&typeof Reflect<"u"&&Reflect.construct){if(e())return Reflect.construct;var t=Reflect.construct;return function(r,n,o){return r=t(r,n),o&&Reflect.setPrototypeOf(r,o.prototype),r}}return function(r,n,o){return o===void 0&&(o=r),o=L.objectCreate(o.prototype||Object.prototype),Function.prototype.apply.call(r,o,n)||o}};L.construct={valueOf:L.getConstructImplementation}.valueOf();L.underscoreProtoCanBeSet=function(){var e={a:!0},t={};try{return t.__proto__=e,t.a}catch{}return!1};L.setPrototypeOf=L.ASSUME_ES6||L.TRUST_ES6_POLYFILLS&&typeof Object.setPrototypeOf=="function"?Object.setPrototypeOf:L.underscoreProtoCanBeSet()?function(e,t){if(e.__proto__=t,e.__proto__!==t)throw new TypeError(e+" is not extensible");return e}:null;L.inherits=function(e,t){if(e.prototype=L.objectCreate(t.prototype),e.prototype.constructor=e,L.ASSUME_ES6||L.setPrototypeOf){var r=L.setPrototypeOf;r(e,t)}else for(r in t)if(r!="prototype")if(Object.defineProperties){var n=Object.getOwnPropertyDescriptor(t,r);n&&Object.defineProperty(e,r,n)}else e[r]=t[r];e.superClass_=t.prototype};L.arrayIteratorImpl=function(e){var t=0;return function(){return t<e.length?{done:!1,value:e[t++]}:{done:!0}}};L.arrayIterator=function(e){return{next:L.arrayIteratorImpl(e)}};L.makeIterator=function(e){var t=typeof Symbol<"u"&&Symbol.iterator&&e[Symbol.iterator];if(t)return t.call(e);if(typeof e.length=="number")return L.arrayIterator(e);throw Error(String(e)+" is not an iterable or ArrayLike")};L.arrayFromIterator=function(e){for(var t,r=[];!(t=e.next()).done;)r.push(t.value);return r};L.arrayFromIterable=function(e){return e instanceof Array?e:L.arrayFromIterator(L.makeIterator(e))};L.createTemplateTagFirstArg=function(e){return L.createTemplateTagFirstArgWithRaw(e,e)};L.createTemplateTagFirstArgWithRaw=function(e,t){return e.raw=t,Object.freeze&&(Object.freeze(e),Object.freeze(t)),e};L.generator={};L.generator.ensureIteratorResultIsObject_=function(e){if(!(e instanceof Object))throw new TypeError("Iterator result "+e+" is not an object")};L.generator.Context=function(){this.isRunning_=!1,this.yieldAllIterator_=null,this.yieldResult=void 0,this.nextAddress=1,this.finallyAddress_=this.catchAddress_=0,this.finallyContexts_=this.abruptCompletion_=null};L.generator.Context.prototype.start_=function(){if(this.isRunning_)throw new TypeError("Generator is already running");this.isRunning_=!0};L.generator.Context.prototype.stop_=function(){this.isRunning_=!1};L.generator.Context.prototype.jumpToErrorHandler_=function(){this.nextAddress=this.catchAddress_||this.finallyAddress_};L.generator.Context.prototype.next_=function(e){this.yieldResult=e};L.generator.Context.prototype.throw_=function(e){this.abruptCompletion_={exception:e,isException:!0},this.jumpToErrorHandler_()};L.generator.Context.prototype.getNextAddressJsc=function(){return this.nextAddress};L.generator.Context.prototype.getNextAddressJsc=function(){return this.nextAddress};L.generator.Context.prototype.getYieldResultJsc=function(){return this.yieldResult};L.generator.Context.prototype.getYieldResultJsc=function(){return this.yieldResult};L.generator.Context.prototype.return=function(e){this.abruptCompletion_={return:e},this.nextAddress=this.finallyAddress_};L.generator.Context.prototype.return=L.generator.Context.prototype.return;L.generator.Context.prototype.jumpThroughFinallyBlocks=function(e){this.abruptCompletion_={jumpTo:e},this.nextAddress=this.finallyAddress_};L.generator.Context.prototype.jumpThroughFinallyBlocks=L.generator.Context.prototype.jumpThroughFinallyBlocks;L.generator.Context.prototype.yield=function(e,t){return this.nextAddress=t,{value:e}};L.generator.Context.prototype.yield=L.generator.Context.prototype.yield;L.generator.Context.prototype.yieldAll=function(e,t){e=L.makeIterator(e);var r=e.next();if(L.generator.ensureIteratorResultIsObject_(r),r.done)this.yieldResult=r.value,this.nextAddress=t;else return this.yieldAllIterator_=e,this.yield(r.value,t)};L.generator.Context.prototype.yieldAll=L.generator.Context.prototype.yieldAll;L.generator.Context.prototype.jumpTo=function(e){this.nextAddress=e};L.generator.Context.prototype.jumpTo=L.generator.Context.prototype.jumpTo;L.generator.Context.prototype.jumpToEnd=function(){this.nextAddress=0};L.generator.Context.prototype.jumpToEnd=L.generator.Context.prototype.jumpToEnd;L.generator.Context.prototype.setCatchFinallyBlocks=function(e,t){this.catchAddress_=e,t!=null&&(this.finallyAddress_=t)};L.generator.Context.prototype.setCatchFinallyBlocks=L.generator.Context.prototype.setCatchFinallyBlocks;L.generator.Context.prototype.setFinallyBlock=function(e){this.catchAddress_=0,this.finallyAddress_=e||0};L.generator.Context.prototype.setFinallyBlock=L.generator.Context.prototype.setFinallyBlock;L.generator.Context.prototype.leaveTryBlock=function(e,t){this.nextAddress=e,this.catchAddress_=t||0};L.generator.Context.prototype.leaveTryBlock=L.generator.Context.prototype.leaveTryBlock;L.generator.Context.prototype.enterCatchBlock=function(e){return this.catchAddress_=e||0,e=this.abruptCompletion_.exception,this.abruptCompletion_=null,e};L.generator.Context.prototype.enterCatchBlock=L.generator.Context.prototype.enterCatchBlock;L.generator.Context.prototype.enterFinallyBlock=function(e,t,r){r?this.finallyContexts_[r]=this.abruptCompletion_:this.finallyContexts_=[this.abruptCompletion_],this.catchAddress_=e||0,this.finallyAddress_=t||0};L.generator.Context.prototype.enterFinallyBlock=L.generator.Context.prototype.enterFinallyBlock;L.generator.Context.prototype.leaveFinallyBlock=function(e,t){if(t=this.finallyContexts_.splice(t||0)[0],t=this.abruptCompletion_=this.abruptCompletion_||t){if(t.isException)return this.jumpToErrorHandler_();t.jumpTo!=null&&this.finallyAddress_<t.jumpTo?(this.nextAddress=t.jumpTo,this.abruptCompletion_=null):this.nextAddress=this.finallyAddress_}else this.nextAddress=e};L.generator.Context.prototype.leaveFinallyBlock=L.generator.Context.prototype.leaveFinallyBlock;L.generator.Context.prototype.forIn=function(e){return new L.generator.Context.PropertyIterator(e)};L.generator.Context.prototype.forIn=L.generator.Context.prototype.forIn;L.generator.Context.PropertyIterator=function(e){this.object_=e,this.properties_=[];for(var t in e)this.properties_.push(t);this.properties_.reverse()};L.generator.Context.PropertyIterator.prototype.getNext=function(){for(;this.properties_.length>0;){var e=this.properties_.pop();if(e in this.object_)return e}return null};L.generator.Context.PropertyIterator.prototype.getNext=L.generator.Context.PropertyIterator.prototype.getNext;L.generator.Engine_=function(e){this.context_=new L.generator.Context,this.program_=e};L.generator.Engine_.prototype.next_=function(e){return this.context_.start_(),this.context_.yieldAllIterator_?this.yieldAllStep_(this.context_.yieldAllIterator_.next,e,this.context_.next_):(this.context_.next_(e),this.nextStep_())};L.generator.Engine_.prototype.return_=function(e){this.context_.start_();var t=this.context_.yieldAllIterator_;return t?this.yieldAllStep_("return"in t?t.return:function(r){return{value:r,done:!0}},e,this.context_.return):(this.context_.return(e),this.nextStep_())};L.generator.Engine_.prototype.throw_=function(e){return this.context_.start_(),this.context_.yieldAllIterator_?this.yieldAllStep_(this.context_.yieldAllIterator_.throw,e,this.context_.next_):(this.context_.throw_(e),this.nextStep_())};L.generator.Engine_.prototype.yieldAllStep_=function(e,t,r){try{var n=e.call(this.context_.yieldAllIterator_,t);if(L.generator.ensureIteratorResultIsObject_(n),!n.done)return this.context_.stop_(),n;var o=n.value}catch(A){return this.context_.yieldAllIterator_=null,this.context_.throw_(A),this.nextStep_()}return this.context_.yieldAllIterator_=null,r.call(this.context_,o),this.nextStep_()};L.generator.Engine_.prototype.nextStep_=function(){for(;this.context_.nextAddress;)try{var e=this.program_(this.context_);if(e)return this.context_.stop_(),{value:e.value,done:!1}}catch(t){this.context_.yieldResult=void 0,this.context_.throw_(t)}if(this.context_.stop_(),this.context_.abruptCompletion_){if(e=this.context_.abruptCompletion_,this.context_.abruptCompletion_=null,e.isException)throw e.exception;return{value:e.return,done:!0}}return{value:void 0,done:!0}};L.generator.Generator_=function(e){this.next=function(t){return e.next_(t)},this.throw=function(t){return e.throw_(t)},this.return=function(t){return e.return_(t)},this[Symbol.iterator]=function(){return this}};L.generator.createGenerator=function(e,t){return t=new L.generator.Generator_(new L.generator.Engine_(t)),L.setPrototypeOf&&e.prototype&&L.setPrototypeOf(t,e.prototype),t};L.asyncExecutePromiseGenerator=function(e){function t(n){return e.next(n)}function r(n){return e.throw(n)}return new Promise(function(n,o){function A(i){i.done?n(i.value):Promise.resolve(i.value).then(t,r).then(A,o)}A(e.next())})};L.asyncExecutePromiseGeneratorFunction=function(e){return L.asyncExecutePromiseGenerator(e())};L.asyncExecutePromiseGeneratorProgram=function(e){return L.asyncExecutePromiseGenerator(new L.generator.Generator_(new L.generator.Engine_(e)))};L.polyfill("globalThis",function(e){return e||L.global},"es_2020","es3");L.polyfill("Reflect",function(e){return e||{}},"es6","es3");L.polyfill("Reflect.construct",function(e){return L.construct},"es6","es3");L.polyfill("Reflect.setPrototypeOf",function(e){if(e)return e;if(L.setPrototypeOf){var t=L.setPrototypeOf;return function(r,n){try{return t(r,n),!0}catch{return!1}}}return null},"es6","es5");L.initSymbol=function(){};L.polyfill("Symbol",function(e){if(e)return e;var t=function(A,i){this.$jscomp$symbol$id_=A,L.defineProperty(this,"description",{configurable:!0,writable:!0,value:i})};t.prototype.toString=function(){return this.$jscomp$symbol$id_};var r="jscomp_symbol_"+(Math.random()*1e9>>>0)+"_",n=0,o=function(A){if(this instanceof o)throw new TypeError("Symbol is not a constructor");return new t(r+(A||"")+"_"+n++,A)};return o},"es6","es3");L.polyfill("Symbol.iterator",function(e){return e||(e=Symbol("Symbol.iterator"),L.defineProperty(Array.prototype,e,{configurable:!0,writable:!0,value:function(){return L.iteratorPrototype(L.arrayIteratorImpl(this))}}),e)},"es6","es3");L.iteratorPrototype=function(e){return e={next:e},e[Symbol.iterator]=function(){return this},e};L.polyfill("Promise",function(e){function t(){this.batch_=null}function r(i){return i instanceof o?i:new o(function(a,s){a(i)})}if(e&&(!(L.FORCE_POLYFILL_PROMISE||L.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION&&typeof L.global.PromiseRejectionEvent>"u")||!L.global.Promise||L.global.Promise.toString().indexOf("[native code]")===-1))return e;t.prototype.asyncExecute=function(i){if(this.batch_==null){this.batch_=[];var a=this;this.asyncExecuteFunction(function(){a.executeBatch_()})}this.batch_.push(i)};var n=L.global.setTimeout;t.prototype.asyncExecuteFunction=function(i){n(i,0)},t.prototype.executeBatch_=function(){for(;this.batch_&&this.batch_.length;){var i=this.batch_;this.batch_=[];for(var a=0;a<i.length;++a){var s=i[a];i[a]=null;try{s()}catch(c){this.asyncThrow_(c)}}}this.batch_=null},t.prototype.asyncThrow_=function(i){this.asyncExecuteFunction(function(){throw i})};var o=function(i){this.state_=0,this.result_=void 0,this.onSettledCallbacks_=[],this.isRejectionHandled_=!1;var a=this.createResolveAndReject_();try{i(a.resolve,a.reject)}catch(s){a.reject(s)}};o.prototype.createResolveAndReject_=function(){function i(c){return function(l){s||(s=!0,c.call(a,l))}}var a=this,s=!1;return{resolve:i(this.resolveTo_),reject:i(this.reject_)}},o.prototype.resolveTo_=function(i){if(i===this)this.reject_(new TypeError("A Promise cannot resolve to itself"));else if(i instanceof o)this.settleSameAsPromise_(i);else{e:switch(typeof i){case"object":var a=i!=null;break e;case"function":a=!0;break e;default:a=!1}a?this.resolveToNonPromiseObj_(i):this.fulfill_(i)}},o.prototype.resolveToNonPromiseObj_=function(i){var a=void 0;try{a=i.then}catch(s){this.reject_(s);return}typeof a=="function"?this.settleSameAsThenable_(a,i):this.fulfill_(i)},o.prototype.reject_=function(i){this.settle_(2,i)},o.prototype.fulfill_=function(i){this.settle_(1,i)},o.prototype.settle_=function(i,a){if(this.state_!=0)throw Error("Cannot settle("+i+", "+a+"): Promise already settled in state"+this.state_);this.state_=i,this.result_=a,this.state_===2&&this.scheduleUnhandledRejectionCheck_(),this.executeOnSettledCallbacks_()},o.prototype.scheduleUnhandledRejectionCheck_=function(){var i=this;n(function(){if(i.notifyUnhandledRejection_()){var a=L.global.console;typeof a<"u"&&a.error(i.result_)}},1)},o.prototype.notifyUnhandledRejection_=function(){if(this.isRejectionHandled_)return!1;var i=L.global.CustomEvent,a=L.global.Event,s=L.global.dispatchEvent;return typeof s>"u"?!0:(typeof i=="function"?i=new i("unhandledrejection",{cancelable:!0}):typeof a=="function"?i=new a("unhandledrejection",{cancelable:!0}):(i=L.global.document.createEvent("CustomEvent"),i.initCustomEvent("unhandledrejection",!1,!0,i)),i.promise=this,i.reason=this.result_,s(i))},o.prototype.executeOnSettledCallbacks_=function(){if(this.onSettledCallbacks_!=null){for(var i=0;i<this.onSettledCallbacks_.length;++i)A.asyncExecute(this.onSettledCallbacks_[i]);this.onSettledCallbacks_=null}};var A=new t;return o.prototype.settleSameAsPromise_=function(i){var a=this.createResolveAndReject_();i.callWhenSettled_(a.resolve,a.reject)},o.prototype.settleSameAsThenable_=function(i,a){var s=this.createResolveAndReject_();try{i.call(a,s.resolve,s.reject)}catch(c){s.reject(c)}},o.prototype.then=function(i,a){function s(g,p){return typeof g=="function"?function(f){try{c(g(f))}catch(d){l(d)}}:p}var c,l,u=new o(function(g,p){c=g,l=p});return this.callWhenSettled_(s(i,c),s(a,l)),u},o.prototype.catch=function(i){return this.then(void 0,i)},o.prototype.callWhenSettled_=function(i,a){function s(){switch(c.state_){case 1:i(c.result_);break;case 2:a(c.result_);break;default:throw Error("Unexpected state: "+c.state_)}}var c=this;this.onSettledCallbacks_==null?A.asyncExecute(s):this.onSettledCallbacks_.push(s),this.isRejectionHandled_=!0},o.resolve=r,o.reject=function(i){return new o(function(a,s){s(i)})},o.race=function(i){return new o(function(a,s){for(var c=L.makeIterator(i),l=c.next();!l.done;l=c.next())r(l.value).callWhenSettled_(a,s)})},o.all=function(i){var a=L.makeIterator(i),s=a.next();return s.done?r([]):new o(function(c,l){function u(f){return function(d){g[f]=d,p--,p==0&&c(g)}}var g=[],p=0;do g.push(void 0),p++,r(s.value).callWhenSettled_(u(g.length-1),l),s=a.next();while(!s.done)})},o},"es6","es3");L.checkStringArgs=function(e,t,r){if(e==null)throw new TypeError("The 'this' value for String.prototype."+r+" must not be null or undefined");if(t instanceof RegExp)throw new TypeError("First argument to String.prototype."+r+" must not be a regular expression");return e+""};L.polyfill("String.prototype.startsWith",function(e){return e||function(t,r){var n=L.checkStringArgs(this,t,"startsWith");t+="";var o=n.length,A=t.length;r=Math.max(0,Math.min(r|0,n.length));for(var i=0;i<A&&r<o;)if(n[r++]!=t[i++])return!1;return i>=A}},"es6","es3");L.polyfill("String.prototype.codePointAt",function(e){return e||function(t){var r=L.checkStringArgs(this,null,"codePointAt"),n=r.length;if(t=Number(t)||0,t>=0&&t<n){t|=0;var o=r.charCodeAt(t);return o<55296||o>56319||t+1===n?o:(t=r.charCodeAt(t+1),t<56320||t>57343?o:(o-55296)*1024+t+9216)}}},"es6","es3");var gA=(function(){var e,t,r=(e=globalThis.document)==null||(t=e.currentScript)==null?void 0:t.src;return function(n){function o(ee){ee&&typeof ee=="object"&&(ee=ee.ptr),this.ptr=Dn(ee),j(o)[this.ptr]=this}function A(){this.ptr=mn(),j(A)[this.ptr]=this}function i(){this.ptr=Fe(),j(i)[this.ptr]=this}function a(){this.ptr=C(),j(a)[this.ptr]=this}function s(){this.ptr=Lr(),j(s)[this.ptr]=this}function c(){this.ptr=Nr(),j(c)[this.ptr]=this}function l(){this.ptr=kr(),j(l)[this.ptr]=this}function u(){this.ptr=Gr(),j(u)[this.ptr]=this}function g(){this.ptr=Mr(),j(g)[this.ptr]=this}function p(){this.ptr=ir(),j(p)[this.ptr]=this}function f(){this.ptr=ct(),j(f)[this.ptr]=this}function d(){throw"cannot construct a VoidPtr, no constructor in IDL"}function h(ee){if(typeof ee=="object"){for(var E=De.alloc(ee,Ar),D=E/4,P=0;P<ee.length;P++)Ar[D+P]=ee[P];return E}return ee}function I(ee){if(typeof ee=="object"){for(var E=De.alloc(ee,Nt),D=E/4,P=0;P<ee.length;P++)Nt[D+P]=ee[P];return E}return ee}function b(ee){if(typeof ee=="object"){for(var E=De.alloc(ee,or),D=E/2,P=0;P<ee.length;P++)or[D+P]=ee[P];return E}return ee}function Q(ee){if(typeof ee=="object"){for(var E=De.alloc(ee,Je),D=0;D<ee.length;D++)Je[E+D]=ee[D];return E}return ee}function m(ee){if(typeof ee=="string"){ee=ht(ee);for(var E=De.alloc(ee,Je),D=0;D<ee.length;D++)Je[E+D]=ee[D];return E}return ee}function w(ee){return ee.__class__}function v(ee){return ee.ptr}function S(ee,E){return ee.ptr===E.ptr}function N(ee){if(!ee.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";ee.__destroy__(),delete j(ee.__class__)[ee.ptr]}function _(ee,E){return G(ee.ptr,E)}function G(ee,E){var D=j(E),P=D[ee];return P||(P=Object.create((E||R).prototype),P.ptr=ee,D[ee]=P)}function j(ee){return(ee||R).__cache__}function R(){}function K(){var ee,E,D;return(0,L.asyncExecutePromiseGeneratorProgram)(function(P){if(P.getNextAddressJsc()==1)return oe(),ee=F.setStatus,ee?(ee("Running..."),P.yield(new Promise(function(Y){return setTimeout(Y,1)}),3)):P.jumpTo(2);if(P.getNextAddressJsc()!=2&&setTimeout(ee,1,""),Ue)return P.return();je=!0,nt(_t),Hr.e(),(D=(E=F).onRuntimeInitialized)==null||D.call(E),re(),P.jumpToEnd()})}function z(){function ee(U){return U=Hr=U.exports,F._webidl_free=U.f,F._free=U.g,F._webidl_malloc=U.h,F._malloc=U.i,wr=F._emscripten_bind_VoidPtr___destroy___0=U.j,ct=F._emscripten_bind_GeometryAttribute_GeometryAttribute_0=U.k,Wt=F._emscripten_bind_GeometryAttribute___destroy___0=U.l,ir=F._emscripten_bind_PointAttribute_PointAttribute_0=U.m,it=F._emscripten_bind_PointAttribute_size_0=U.n,wt=F._emscripten_bind_PointAttribute_attribute_type_0=U.o,Tt=F._emscripten_bind_PointAttribute_data_type_0=U.p,qt=F._emscripten_bind_PointAttribute_num_components_0=U.q,Xt=F._emscripten_bind_PointAttribute_normalized_0=U.r,Zt=F._emscripten_bind_PointAttribute_byte_stride_0=U.s,$t=F._emscripten_bind_PointAttribute_byte_offset_0=U.t,vr=F._emscripten_bind_PointAttribute_unique_id_0=U.u,Dr=F._emscripten_bind_PointAttribute___destroy___0=U.v,Mr=F._emscripten_bind_PointCloud_PointCloud_0=U.w,_r=F._emscripten_bind_PointCloud_num_attributes_0=U.x,Sr=F._emscripten_bind_PointCloud_num_points_0=U.y,Pr=F._emscripten_bind_PointCloud___destroy___0=U.z,Gr=F._emscripten_bind_Mesh_Mesh_0=U.A,Rr=F._emscripten_bind_Mesh_num_faces_0=U.B,Fr=F._emscripten_bind_Mesh_num_attributes_0=U.C,ar=F._emscripten_bind_Mesh_num_points_0=U.D,Lt=F._emscripten_bind_Mesh_set_num_points_1=U.E,Ur=F._emscripten_bind_Mesh___destroy___0=U.F,kr=F._emscripten_bind_Metadata_Metadata_0=U.G,sr=F._emscripten_bind_Metadata___destroy___0=U.H,Nr=F._emscripten_bind_DracoInt8Array_DracoInt8Array_0=U.I,cr=F._emscripten_bind_DracoInt8Array_GetValue_1=U.J,Ot=F._emscripten_bind_DracoInt8Array_size_0=U.K,Tr=F._emscripten_bind_DracoInt8Array___destroy___0=U.L,Lr=F._emscripten_bind_MetadataBuilder_MetadataBuilder_0=U.M,lr=F._emscripten_bind_MetadataBuilder_AddStringEntry_3=U.N,er=F._emscripten_bind_MetadataBuilder_AddIntEntry_3=U.O,lt=F._emscripten_bind_MetadataBuilder_AddIntEntryArray_4=U.P,Ht=F._emscripten_bind_MetadataBuilder_AddDoubleEntry_3=U.Q,ur=F._emscripten_bind_MetadataBuilder___destroy___0=U.R,C=F._emscripten_bind_PointCloudBuilder_PointCloudBuilder_0=U.S,x=F._emscripten_bind_PointCloudBuilder_AddFloatAttribute_5=U.T,k=F._emscripten_bind_PointCloudBuilder_AddInt8Attribute_5=U.U,V=F._emscripten_bind_PointCloudBuilder_AddUInt8Attribute_5=U.V,q=F._emscripten_bind_PointCloudBuilder_AddInt16Attribute_5=U.W,te=F._emscripten_bind_PointCloudBuilder_AddUInt16Attribute_5=U.X,ae=F._emscripten_bind_PointCloudBuilder_AddInt32Attribute_5=U.Y,se=F._emscripten_bind_PointCloudBuilder_AddUInt32Attribute_5=U.Z,pe=F._emscripten_bind_PointCloudBuilder_AddMetadata_2=U._,ue=F._emscripten_bind_PointCloudBuilder_SetMetadataForAttribute_3=U.$,de=F._emscripten_bind_PointCloudBuilder_SetNormalizedFlagForAttribute_3=U.aa,ve=F._emscripten_bind_PointCloudBuilder___destroy___0=U.ba,Fe=F._emscripten_bind_MeshBuilder_MeshBuilder_0=U.ca,Ke=F._emscripten_bind_MeshBuilder_AddFacesToMesh_3=U.da,Ne=F._emscripten_bind_MeshBuilder_AddFloatAttributeToMesh_5=U.ea,rt=F._emscripten_bind_MeshBuilder_AddInt32AttributeToMesh_5=U.fa,at=F._emscripten_bind_MeshBuilder_AddMetadataToMesh_2=U.ga,St=F._emscripten_bind_MeshBuilder_AddFloatAttribute_5=U.ha,ut=F._emscripten_bind_MeshBuilder_AddInt8Attribute_5=U.ia,gr=F._emscripten_bind_MeshBuilder_AddUInt8Attribute_5=U.ja,pr=F._emscripten_bind_MeshBuilder_AddInt16Attribute_5=U.ka,ln=F._emscripten_bind_MeshBuilder_AddUInt16Attribute_5=U.la,un=F._emscripten_bind_MeshBuilder_AddInt32Attribute_5=U.ma,gn=F._emscripten_bind_MeshBuilder_AddUInt32Attribute_5=U.na,pn=F._emscripten_bind_MeshBuilder_AddMetadata_2=U.oa,fn=F._emscripten_bind_MeshBuilder_SetMetadataForAttribute_3=U.pa,dn=F._emscripten_bind_MeshBuilder_SetNormalizedFlagForAttribute_3=U.qa,hn=F._emscripten_bind_MeshBuilder___destroy___0=U.ra,mn=F._emscripten_bind_Encoder_Encoder_0=U.sa,In=F._emscripten_bind_Encoder_SetEncodingMethod_1=U.ta,Bn=F._emscripten_bind_Encoder_SetAttributeQuantization_2=U.ua,bn=F._emscripten_bind_Encoder_SetAttributeExplicitQuantization_5=U.va,En=F._emscripten_bind_Encoder_SetSpeedOptions_2=U.wa,yn=F._emscripten_bind_Encoder_SetTrackEncodedProperties_1=U.xa,Cn=F._emscripten_bind_Encoder_EncodeMeshToDracoBuffer_2=U.ya,Qn=F._emscripten_bind_Encoder_EncodePointCloudToDracoBuffer_3=U.za,xn=F._emscripten_bind_Encoder_GetNumberOfEncodedPoints_0=U.Aa,wn=F._emscripten_bind_Encoder_GetNumberOfEncodedFaces_0=U.Ba,vn=F._emscripten_bind_Encoder___destroy___0=U.Ca,Dn=F._emscripten_bind_ExpertEncoder_ExpertEncoder_1=U.Da,Mn=F._emscripten_bind_ExpertEncoder_SetEncodingMethod_1=U.Ea,_n=F._emscripten_bind_ExpertEncoder_SetAttributeQuantization_2=U.Fa,Sn=F._emscripten_bind_ExpertEncoder_SetAttributeExplicitQuantization_5=U.Ga,Pn=F._emscripten_bind_ExpertEncoder_SetSpeedOptions_2=U.Ha,Gn=F._emscripten_bind_ExpertEncoder_SetTrackEncodedProperties_1=U.Ia,Rn=F._emscripten_bind_ExpertEncoder_EncodeToDracoBuffer_2=U.Ja,Fn=F._emscripten_bind_ExpertEncoder_GetNumberOfEncodedPoints_0=U.Ka,Un=F._emscripten_bind_ExpertEncoder_GetNumberOfEncodedFaces_0=U.La,kn=F._emscripten_bind_ExpertEncoder___destroy___0=U.Ma,Nn=F._emscripten_enum_draco_GeometryAttribute_Type_INVALID=U.Na,Tn=F._emscripten_enum_draco_GeometryAttribute_Type_POSITION=U.Oa,Ln=F._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=U.Pa,On=F._emscripten_enum_draco_GeometryAttribute_Type_COLOR=U.Qa,Hn=F._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=U.Ra,jn=F._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=U.Sa,Vn=F._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=U.Ta,Jn=F._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=U.Ua,Kn=F._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=U.Va,zn=F._emscripten_enum_draco_MeshEncoderMethod_MESH_SEQUENTIAL_ENCODING=U.Wa,Yn=F._emscripten_enum_draco_MeshEncoderMethod_MESH_EDGEBREAKER_ENCODING=U.Xa,Or=U.d,ne(),Hr}var E,D,P,Y;return(0,L.asyncExecutePromiseGeneratorProgram)(function(U){return U.getNextAddressJsc()==1?(E={a:Wn},(D=F.instantiateWasm)?U.return(new Promise(function(Ce){D(E,function(ot){return Ce(ee(ot))})})):(Le!=null||(Le=ie("draco_encoder.wasm")),U.yield(J(Ge,Le,E),2))):(P=U.getYieldResultJsc(),Y=ee(P.instance),U.return(Y))})}function J(ee,E,D){var P,Y,U;return(0,L.asyncExecutePromiseGeneratorProgram)(function(Ce){switch(Ce.getNextAddressJsc()){case 1:if(ee||Me(E)||ye){Ce.jumpTo(2);break}return Ce.setCatchFinallyBlocks(3),P=fetch(E,{credentials:"same-origin"}),Ce.yield(WebAssembly.instantiateStreaming(P,D),5);case 5:return Y=Ce.getYieldResultJsc(),Ce.return(Y);case 3:U=Ce.enterCatchBlock(),_e("wasm streaming compile failed: "+U),_e("falling back to ArrayBuffer instantiation");case 2:return Ce.return(W(E,D))}})}function W(ee,E){var D,P,Y;return(0,L.asyncExecutePromiseGeneratorProgram)(function(U){switch(U.getNextAddressJsc()){case 1:return U.setCatchFinallyBlocks(2),U.yield(X(ee),4);case 4:return D=U.getYieldResultJsc(),U.yield(WebAssembly.instantiate(D,E),5);case 5:return P=U.getYieldResultJsc(),U.return(P);case 2:Y=U.enterCatchBlock(),_e("failed to asynchronously prepare wasm: "+Y),Ae(Y),U.jumpToEnd()}})}function X(ee){var E;return(0,L.asyncExecutePromiseGeneratorProgram)(function(D){switch(D.getNextAddressJsc()){case 1:if(Ge){D.jumpTo(2);break}return D.setCatchFinallyBlocks(3),D.yield(ge(ee),5);case 5:return E=D.getYieldResultJsc(),D.return(new Uint8Array(E));case 3:D.enterCatchBlock();case 2:var P=D.return;if(ee==Le&&Ge)var Y=new Uint8Array(Ge);else if(be)Y=be(ee);else throw"both async and sync fetching of the wasm failed";return P.call(D,Y)}})}function Ae(ee){var E,D;throw(D=(E=F).onAbort)==null||D.call(E,ee),ee="Aborted("+ee+")",_e(ee),Ue=!0,new WebAssembly.RuntimeError(ee+". Build with -sASSERTIONS for more info.")}function re(){var ee=F.postRun;ee&&(typeof ee=="function"&&(ee=[ee]),qe.push.apply(qe,(0,L.arrayFromIterable)(ee))),nt(qe)}function oe(){var ee=F.preRun;ee&&(typeof ee=="function"&&(ee=[ee]),yt.push.apply(yt,(0,L.arrayFromIterable)(ee))),nt(yt)}function ne(){var ee,E;!((ee=Je)==null||(E=ee.buffer)==null)&&E.resizable||(ee=Or.buffer,F.HEAP8=Je=new Int8Array(ee),F.HEAP16=or=new Int16Array(ee),F.HEAPU8=dt=new Uint8Array(ee),F.HEAPU16=new Uint16Array(ee),F.HEAP32=Nt=new Int32Array(ee),F.HEAPU32=ze=new Uint32Array(ee),F.HEAPF32=Ar=new Float32Array(ee),F.HEAPF64=new Float64Array(ee))}function ie(ee){return F.locateFile?F.locateFile(ee,le):le+ee}function he(ee){return typeof ee!="string"?!1:(ee=ee.split("."),ee.length<2||ee.length>3?!1:ee[0]==1&&ee[1]>=0&&ee[1]<=5?!0:!(ee[0]!=0||ee[1]>10))}n=n===void 0?{}:n;var F,Be,Se,Pe,Ie,y,ye,Qe,xe,le,ge,be,we,_e,Ge,Ue,Me,He,Te,je,Le,Je,nt,qe,yt,ze,Ve,Ct,pt,Qt,ft,Xe,It,Ut,dt,Yt,st,kt,ht,_t,xr,or,Nt,Ar,xt,wr,ct,Wt,ir,it,wt,Tt,qt,Xt,Zt,$t,vr,Dr,Mr,_r,Sr,Pr,Gr,Rr,Fr,ar,Lt,Ur,kr,sr,Nr,cr,Ot,Tr,Lr,lr,er,lt,Ht,ur,C,x,k,V,q,te,ae,se,pe,ue,de,ve,Fe,Ke,Ne,rt,at,St,ut,gr,pr,ln,un,gn,pn,fn,dn,hn,mn,In,Bn,bn,En,yn,Cn,Qn,xn,wn,vn,Dn,Mn,_n,Sn,Pn,Gn,Rn,Fn,Un,kn,Nn,Tn,Ln,On,Hn,jn,Vn,Jn,Kn,zn,Yn,Or,Wn,Hr,De;return(0,L.asyncExecutePromiseGeneratorProgram)(function(ee){if(ee.getNextAddressJsc()==1){if(F=n,Be=!!globalThis.window,Se=!!globalThis.WorkerGlobalScope,ye=((Pe=globalThis.process)==null||(Ie=Pe.versions)==null?void 0:Ie.node)&&((y=globalThis.process)==null?void 0:y.type)!="renderer",xe=Qe=!1,F.onRuntimeInitialized=function(){Qe=!0,xe&&typeof F.onModuleLoaded=="function"&&F.onModuleLoaded(F)},F.onModuleParsed=function(){xe=!0,Qe&&typeof F.onModuleLoaded=="function"&&F.onModuleLoaded(F)},F.isVersionSupported=he,typeof __filename<"u"?r=__filename:Se&&(r=self.location.href),le="",ye)we=(Pt(),Vi(ta)),le=__dirname+"/",be=function(E){return E=Me(E)?new URL(E):E,we.readFileSync(E)},ge=function(E,D){D=D===void 0?!0:D;var P;return(0,L.asyncExecutePromiseGeneratorProgram)(function(Y){return E=Me(E)?new URL(E):E,P=we.readFileSync(E,D?void 0:"utf8"),Y.return(P)})},me.argv.length>1&&me.argv[1].replace(/\\/g,"/"),me.argv.slice(2);else if(Be||Se){try{le=new URL(".",r).href}catch{}Se&&(be=function(E){var D=new XMLHttpRequest;return D.open("GET",E,!1),D.responseType="arraybuffer",D.send(null),new Uint8Array(D.response)}),ge=function(E){var D;return(0,L.asyncExecutePromiseGeneratorProgram)(function(P){if(P.getNextAddressJsc()==1)return Me(E)?P.return(new Promise(function(Y,U){var Ce=new XMLHttpRequest;Ce.open("GET",E,!0),Ce.responseType="arraybuffer",Ce.onload=function(){Ce.status==200||Ce.status==0&&Ce.response?Y(Ce.response):U(Ce.status)},Ce.onerror=U,Ce.send(null)})):P.yield(fetch(E,{credentials:"same-origin"}),2);if(D=P.getYieldResultJsc(),D.ok)return P.return(D.arrayBuffer());throw Error(D.status+" : "+D.url)})}}if(console.log.bind(console),_e=console.error.bind(console),Ue=!1,Me=function(E){return E.startsWith("file://")},He=function(){},Te=function(){return He.apply(this,arguments)||this},L.inherits(Te,He),je=!1,nt=function(E){for(;E.length>0;)E.shift()(F)},qe=[],yt=[],Ve=function(E){this.excPtr=E,this.ptr=E-24},Ve.prototype.set_type=function(E){ze[this.ptr+4>>2]=E},Ve.prototype.get_type=function(){return ze[this.ptr+4>>2]},Ve.prototype.set_destructor=function(E){ze[this.ptr+8>>2]=E},Ve.prototype.get_destructor=function(){return ze[this.ptr+8>>2]},Ve.prototype.set_caught=function(E){Je[this.ptr+12]=E?1:0},Ve.prototype.get_caught=function(){return Je[this.ptr+12]!=0},Ve.prototype.set_rethrown=function(E){Je[this.ptr+13]=E?1:0},Ve.prototype.get_rethrown=function(){return Je[this.ptr+13]!=0},Ve.prototype.init=function(E,D){this.set_adjusted_ptr(0),this.set_type(E),this.set_destructor(D)},Ve.prototype.set_adjusted_ptr=function(E){ze[this.ptr+16>>2]=E},Ve.prototype.get_adjusted_ptr=function(){return ze[this.ptr+16>>2]},Ct=0,pt=function(E){Ae()},Qt=function(E,D,P){new Ve(E).init(D,P),Ct++,pt(E)},ft=function(){return Ae("")},Xe=function(){return 2147483648},It=function(E,D){return Math.ceil(E/D)*D},Ut=function(E){var D=Or.buffer.byteLength;try{return Or.grow((E-D+65535)/65536|0),ne(),1}catch{}},Yt=function(E){var D=dt.length;E>>>=0;var P=Xe();if(E>P)return!1;for(var Y=1;Y<=4;Y*=2){var U=D*(1+.2/Y);if(U=Math.min(U,E+100663296),U=Math.min(P,It(Math.max(E,U),65536)),Ut(U))return!0}return!1},st=function(E){for(var D=0,P=0;P<E.length;++P){var Y=E.charCodeAt(P);Y<=127?D++:Y<=2047?D+=2:Y>=55296&&Y<=57343?(D+=4,++P):D+=3}return D},kt=function(E,D,P,Y){if(!(Y>0))return 0;var U=P;Y=P+Y-1;for(var Ce=0;Ce<E.length;++Ce){var ot=E.codePointAt(Ce);if(ot<=127){if(P>=Y)break;D[P++]=ot}else if(ot<=2047){if(P+1>=Y)break;D[P++]=192|ot>>6,D[P++]=128|ot&63}else if(ot<=65535){if(P+2>=Y)break;D[P++]=224|ot>>12,D[P++]=128|ot>>6&63,D[P++]=128|ot&63}else{if(P+3>=Y)break;D[P++]=240|ot>>18,D[P++]=128|ot>>12&63,D[P++]=128|ot>>6&63,D[P++]=128|ot&63,Ce++}}return D[P]=0,P-U},ht=function(E,D,P){return P=P>0?P:st(E)+1,P=Array(P),E=kt(E,P,0,P.length),D&&(P.length=E),P},globalThis.TextDecoder&&new TextDecoder,_t=[],xr=function(E){return _t.push(E)},F.printErr&&(_e=F.printErr),F.wasmBinary&&(Ge=F.wasmBinary),xt=F.preInit)for(typeof xt=="function"&&(F.preInit=xt=[xt]);xt.length>0;)xt.shift()();return Wn={a:Qt,c:ft,b:Yt},ee.yield(z(),2)}return ee.getNextAddressJsc()!=3?(Hr=ee.getYieldResultJsc(),ee.yield(K(),3)):(R.prototype=Object.create(R.prototype),R.prototype.constructor=R,R.prototype.__class__=R,R.__cache__={},F.WrapperObject=R,F.getCache=j,F.wrapPointer=G,F.castObject=_,F.NULL=G(0),F.destroy=N,F.compare=S,F.getPointer=v,F.getClass=w,De={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(De.needed){for(var E=0;E<De.temps.length;E++)F._webidl_free(De.temps[E]);De.temps.length=0,F._webidl_free(De.buffer),De.buffer=0,De.size+=De.needed,De.needed=0}De.buffer||(De.size+=128,De.buffer=F._webidl_malloc(De.size),De.buffer||Ae(void 0)),De.pos=0},alloc:function(E,D){return De.buffer||Ae(void 0),E=E.length*D.BYTES_PER_ELEMENT,E=It(E,8),De.pos+E>=De.size?(E>0||Ae(void 0),De.needed+=E,D=F._webidl_malloc(E),De.temps.push(D)):(D=De.buffer+De.pos,De.pos+=E),D}},d.prototype=Object.create(R.prototype),d.prototype.constructor=d,d.prototype.__class__=d,d.__cache__={},F.VoidPtr=d,d.prototype.__destroy__=d.prototype.__destroy__=function(){wr(this.ptr)},f.prototype=Object.create(R.prototype),f.prototype.constructor=f,f.prototype.__class__=f,f.__cache__={},F.GeometryAttribute=f,f.prototype.__destroy__=f.prototype.__destroy__=function(){Wt(this.ptr)},p.prototype=Object.create(R.prototype),p.prototype.constructor=p,p.prototype.__class__=p,p.__cache__={},F.PointAttribute=p,p.prototype.size=p.prototype.size=function(){return it(this.ptr)},p.prototype.attribute_type=p.prototype.attribute_type=function(){return wt(this.ptr)},p.prototype.data_type=p.prototype.data_type=function(){return Tt(this.ptr)},p.prototype.num_components=p.prototype.num_components=function(){return qt(this.ptr)},p.prototype.normalized=p.prototype.normalized=function(){return!!Xt(this.ptr)},p.prototype.byte_stride=p.prototype.byte_stride=function(){return Zt(this.ptr)},p.prototype.byte_offset=p.prototype.byte_offset=function(){return $t(this.ptr)},p.prototype.unique_id=p.prototype.unique_id=function(){return vr(this.ptr)},p.prototype.__destroy__=p.prototype.__destroy__=function(){Dr(this.ptr)},g.prototype=Object.create(R.prototype),g.prototype.constructor=g,g.prototype.__class__=g,g.__cache__={},F.PointCloud=g,g.prototype.num_attributes=g.prototype.num_attributes=function(){return _r(this.ptr)},g.prototype.num_points=g.prototype.num_points=function(){return Sr(this.ptr)},g.prototype.__destroy__=g.prototype.__destroy__=function(){Pr(this.ptr)},u.prototype=Object.create(R.prototype),u.prototype.constructor=u,u.prototype.__class__=u,u.__cache__={},F.Mesh=u,u.prototype.num_faces=u.prototype.num_faces=function(){return Rr(this.ptr)},u.prototype.num_attributes=u.prototype.num_attributes=function(){return Fr(this.ptr)},u.prototype.num_points=u.prototype.num_points=function(){return ar(this.ptr)},u.prototype.set_num_points=u.prototype.set_num_points=function(E){var D=this.ptr;E&&typeof E=="object"&&(E=E.ptr),Lt(D,E)},u.prototype.__destroy__=u.prototype.__destroy__=function(){Ur(this.ptr)},l.prototype=Object.create(R.prototype),l.prototype.constructor=l,l.prototype.__class__=l,l.__cache__={},F.Metadata=l,l.prototype.__destroy__=l.prototype.__destroy__=function(){sr(this.ptr)},c.prototype=Object.create(R.prototype),c.prototype.constructor=c,c.prototype.__class__=c,c.__cache__={},F.DracoInt8Array=c,c.prototype.GetValue=c.prototype.GetValue=function(E){var D=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),cr(D,E)},c.prototype.size=c.prototype.size=function(){return Ot(this.ptr)},c.prototype.__destroy__=c.prototype.__destroy__=function(){Tr(this.ptr)},s.prototype=Object.create(R.prototype),s.prototype.constructor=s,s.prototype.__class__=s,s.__cache__={},F.MetadataBuilder=s,s.prototype.AddStringEntry=s.prototype.AddStringEntry=function(E,D,P){var Y=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D=D&&typeof D=="object"?D.ptr:m(D),P=P&&typeof P=="object"?P.ptr:m(P),!!lr(Y,E,D,P)},s.prototype.AddIntEntry=s.prototype.AddIntEntry=function(E,D,P){var Y=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D=D&&typeof D=="object"?D.ptr:m(D),P&&typeof P=="object"&&(P=P.ptr),!!er(Y,E,D,P)},s.prototype.AddIntEntryArray=s.prototype.AddIntEntryArray=function(E,D,P,Y){var U=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D=D&&typeof D=="object"?D.ptr:m(D),typeof P=="object"&&(P=I(P)),Y&&typeof Y=="object"&&(Y=Y.ptr),!!lt(U,E,D,P,Y)},s.prototype.AddDoubleEntry=s.prototype.AddDoubleEntry=function(E,D,P){var Y=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D=D&&typeof D=="object"?D.ptr:m(D),P&&typeof P=="object"&&(P=P.ptr),!!Ht(Y,E,D,P)},s.prototype.__destroy__=s.prototype.__destroy__=function(){ur(this.ptr)},a.prototype=Object.create(R.prototype),a.prototype.constructor=a,a.prototype.__class__=a,a.__cache__={},F.PointCloudBuilder=a,a.prototype.AddFloatAttribute=a.prototype.AddFloatAttribute=function(E,D,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=h(U)),x(Ce,E,D,P,Y,U)},a.prototype.AddInt8Attribute=a.prototype.AddInt8Attribute=function(E,D,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=Q(U)),k(Ce,E,D,P,Y,U)},a.prototype.AddUInt8Attribute=a.prototype.AddUInt8Attribute=function(E,D,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=Q(U)),V(Ce,E,D,P,Y,U)},a.prototype.AddInt16Attribute=a.prototype.AddInt16Attribute=function(E,D,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=b(U)),q(Ce,E,D,P,Y,U)},a.prototype.AddUInt16Attribute=a.prototype.AddUInt16Attribute=function(E,D,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=b(U)),te(Ce,E,D,P,Y,U)},a.prototype.AddInt32Attribute=a.prototype.AddInt32Attribute=function(E,D,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=I(U)),ae(Ce,E,D,P,Y,U)},a.prototype.AddUInt32Attribute=a.prototype.AddUInt32Attribute=function(E,D,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=I(U)),se(Ce,E,D,P,Y,U)},a.prototype.AddMetadata=a.prototype.AddMetadata=function(E,D){var P=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),!!pe(P,E,D)},a.prototype.SetMetadataForAttribute=a.prototype.SetMetadataForAttribute=function(E,D,P){var Y=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),!!ue(Y,E,D,P)},a.prototype.SetNormalizedFlagForAttribute=a.prototype.SetNormalizedFlagForAttribute=function(E,D,P){var Y=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),!!de(Y,E,D,P)},a.prototype.__destroy__=a.prototype.__destroy__=function(){ve(this.ptr)},i.prototype=Object.create(R.prototype),i.prototype.constructor=i,i.prototype.__class__=i,i.__cache__={},F.MeshBuilder=i,i.prototype.AddFacesToMesh=i.prototype.AddFacesToMesh=function(E,D,P){var Y=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),typeof P=="object"&&(P=I(P)),!!Ke(Y,E,D,P)},i.prototype.AddFloatAttributeToMesh=i.prototype.AddFloatAttributeToMesh=function(E,D,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=h(U)),Ne(Ce,E,D,P,Y,U)},i.prototype.AddInt32AttributeToMesh=i.prototype.AddInt32AttributeToMesh=function(E,D,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=I(U)),rt(Ce,E,D,P,Y,U)},i.prototype.AddMetadataToMesh=i.prototype.AddMetadataToMesh=function(E,D){var P=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),!!at(P,E,D)},i.prototype.AddFloatAttribute=i.prototype.AddFloatAttribute=function(E,D,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=h(U)),St(Ce,E,D,P,Y,U)},i.prototype.AddInt8Attribute=i.prototype.AddInt8Attribute=function(E,D,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=Q(U)),ut(Ce,E,D,P,Y,U)},i.prototype.AddUInt8Attribute=i.prototype.AddUInt8Attribute=function(E,D,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=Q(U)),gr(Ce,E,D,P,Y,U)},i.prototype.AddInt16Attribute=i.prototype.AddInt16Attribute=function(E,D,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=b(U)),pr(Ce,E,D,P,Y,U)},i.prototype.AddUInt16Attribute=i.prototype.AddUInt16Attribute=function(E,D,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=b(U)),ln(Ce,E,D,P,Y,U)},i.prototype.AddInt32Attribute=i.prototype.AddInt32Attribute=function(E,D,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=I(U)),un(Ce,E,D,P,Y,U)},i.prototype.AddUInt32Attribute=i.prototype.AddUInt32Attribute=function(E,D,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=I(U)),gn(Ce,E,D,P,Y,U)},i.prototype.AddMetadata=i.prototype.AddMetadata=function(E,D){var P=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),!!pn(P,E,D)},i.prototype.SetMetadataForAttribute=i.prototype.SetMetadataForAttribute=function(E,D,P){var Y=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),!!fn(Y,E,D,P)},i.prototype.SetNormalizedFlagForAttribute=i.prototype.SetNormalizedFlagForAttribute=function(E,D,P){var Y=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),!!dn(Y,E,D,P)},i.prototype.__destroy__=i.prototype.__destroy__=function(){hn(this.ptr)},A.prototype=Object.create(R.prototype),A.prototype.constructor=A,A.prototype.__class__=A,A.__cache__={},F.Encoder=A,A.prototype.SetEncodingMethod=A.prototype.SetEncodingMethod=function(E){var D=this.ptr;E&&typeof E=="object"&&(E=E.ptr),In(D,E)},A.prototype.SetAttributeQuantization=A.prototype.SetAttributeQuantization=function(E,D){var P=this.ptr;E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),Bn(P,E,D)},A.prototype.SetAttributeExplicitQuantization=A.prototype.SetAttributeExplicitQuantization=function(E,D,P,Y,U){var Ce=this.ptr;De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),typeof Y=="object"&&(Y=h(Y)),U&&typeof U=="object"&&(U=U.ptr),bn(Ce,E,D,P,Y,U)},A.prototype.SetSpeedOptions=A.prototype.SetSpeedOptions=function(E,D){var P=this.ptr;E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),En(P,E,D)},A.prototype.SetTrackEncodedProperties=A.prototype.SetTrackEncodedProperties=function(E){var D=this.ptr;E&&typeof E=="object"&&(E=E.ptr),yn(D,E)},A.prototype.EncodeMeshToDracoBuffer=A.prototype.EncodeMeshToDracoBuffer=function(E,D){var P=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),Cn(P,E,D)},A.prototype.EncodePointCloudToDracoBuffer=A.prototype.EncodePointCloudToDracoBuffer=function(E,D,P){var Y=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),Qn(Y,E,D,P)},A.prototype.GetNumberOfEncodedPoints=A.prototype.GetNumberOfEncodedPoints=function(){return xn(this.ptr)},A.prototype.GetNumberOfEncodedFaces=A.prototype.GetNumberOfEncodedFaces=function(){return wn(this.ptr)},A.prototype.__destroy__=A.prototype.__destroy__=function(){vn(this.ptr)},o.prototype=Object.create(R.prototype),o.prototype.constructor=o,o.prototype.__class__=o,o.__cache__={},F.ExpertEncoder=o,o.prototype.SetEncodingMethod=o.prototype.SetEncodingMethod=function(E){var D=this.ptr;E&&typeof E=="object"&&(E=E.ptr),Mn(D,E)},o.prototype.SetAttributeQuantization=o.prototype.SetAttributeQuantization=function(E,D){var P=this.ptr;E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),_n(P,E,D)},o.prototype.SetAttributeExplicitQuantization=o.prototype.SetAttributeExplicitQuantization=function(E,D,P,Y,U){var Ce=this.ptr;De.prepare(),E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),P&&typeof P=="object"&&(P=P.ptr),typeof Y=="object"&&(Y=h(Y)),U&&typeof U=="object"&&(U=U.ptr),Sn(Ce,E,D,P,Y,U)},o.prototype.SetSpeedOptions=o.prototype.SetSpeedOptions=function(E,D){var P=this.ptr;E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),Pn(P,E,D)},o.prototype.SetTrackEncodedProperties=o.prototype.SetTrackEncodedProperties=function(E){var D=this.ptr;E&&typeof E=="object"&&(E=E.ptr),Gn(D,E)},o.prototype.EncodeToDracoBuffer=o.prototype.EncodeToDracoBuffer=function(E,D){var P=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),D&&typeof D=="object"&&(D=D.ptr),Rn(P,E,D)},o.prototype.GetNumberOfEncodedPoints=o.prototype.GetNumberOfEncodedPoints=function(){return Fn(this.ptr)},o.prototype.GetNumberOfEncodedFaces=o.prototype.GetNumberOfEncodedFaces=function(){return Un(this.ptr)},o.prototype.__destroy__=o.prototype.__destroy__=function(){kn(this.ptr)},(function(){function E(){F.INVALID=Nn(),F.POSITION=Tn(),F.NORMAL=Ln(),F.COLOR=On(),F.TEX_COORD=Hn(),F.GENERIC=jn(),F.INVALID_GEOMETRY_TYPE=Vn(),F.POINT_CLOUD=Jn(),F.TRIANGULAR_MESH=Kn(),F.MESH_SEQUENTIAL_ENCODING=zn(),F.MESH_EDGEBREAKER_ENCODING=Yn()}je?E():xr(E)})(),typeof F.onModuleParsed=="function"&&F.onModuleParsed(),ee.return(F))})}})();typeof pA=="object"&&typeof So=="object"?(So.exports=gA,So.exports.default=gA):typeof define=="function"&&define.amd&&define([],function(){return gA})});var va=qn((dA,Po)=>{$();var O=O||{};O.scope={};O.ASSUME_ES2020=!1;O.ASSUME_ES6=O.ASSUME_ES2020;O.ASSUME_ES5=O.ASSUME_ES6;O.ASSUME_NO_NATIVE_MAP=!1;O.ASSUME_NO_NATIVE_SET=!1;O.ISOLATE_POLYFILLS=!1;O.FORCE_POLYFILL_PROMISE=!1;O.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION=!1;O.INSTRUMENT_ASYNC_CONTEXT=!0;O.objectCreate=O.ASSUME_ES5||typeof Object.create=="function"?Object.create:function(e){var t=function(){};return t.prototype=e,new t};O.defineProperty=O.ASSUME_ES5||typeof Object.defineProperties=="function"?Object.defineProperty:function(e,t,r){return e==Array.prototype||e==Object.prototype||(e[t]=r.value),e};O.getGlobal=function(e){e=[typeof globalThis=="object"&&globalThis,e,typeof window=="object"&&window,typeof self=="object"&&self,typeof globalThis=="object"&&globalThis];for(var t=0;t<e.length;++t){var r=e[t];if(r&&r.Math==Math)return r}throw Error("Cannot find global object")};O.global=O.ASSUME_ES2020?globalThis:O.getGlobal(dA);O.IS_SYMBOL_NATIVE=typeof Symbol=="function"&&typeof Symbol("x")=="symbol";O.TRUST_ES6_POLYFILLS=!O.ISOLATE_POLYFILLS||O.IS_SYMBOL_NATIVE;O.polyfills={};O.propertyToPolyfillSymbol={};O.POLYFILL_PREFIX="$jscp$";O.TYPED_ARRAY_CLASSES=(function(){var e="Int8 Uint8 Uint8Clamped Int16 Uint16 Int32 Uint32 Float32 Float64".split(" ");return O.global.BigInt64Array&&(e.push("BigInt64"),e.push("BigUint64")),e})();O.polyfillTypedArrayMethod=function(e,t,r,n){if(t)for(var o=0;o<O.TYPED_ARRAY_CLASSES.length;o++){var A=O.TYPED_ARRAY_CLASSES[o]+"Array.prototype."+e;O.ISOLATE_POLYFILLS?O.polyfillIsolated(A,t,r,n):O.polyfillUnisolated(A,t,r,n)}};O.polyfill=function(e,t,r,n){t&&(O.ISOLATE_POLYFILLS?O.polyfillIsolated(e,t,r,n):O.polyfillUnisolated(e,t,r,n))};O.polyfillUnisolated=function(e,t,r,n){for(r=O.global,e=e.split("."),n=0;n<e.length-1;n++){var o=e[n];if(!(o in r))return;r=r[o]}e=e[e.length-1],n=r[e],t=t(n),t!=n&&t!=null&&O.defineProperty(r,e,{configurable:!0,writable:!0,value:t})};O.polyfillIsolated=function(e,t,r,n){var o=e.split(".");e=o.length===1,n=o[0],n=!e&&n in O.polyfills?O.polyfills:O.global;for(var A=0;A<o.length-1;A++){var i=o[A];if(!(i in n))return;n=n[i]}o=o[o.length-1],r=O.IS_SYMBOL_NATIVE&&r==="es6"?n[o]:null,t=t(r),t!=null&&(e?O.defineProperty(O.polyfills,o,{configurable:!0,writable:!0,value:t}):t!==r&&(O.propertyToPolyfillSymbol[o]===void 0&&(r=Math.random()*1e9>>>0,O.propertyToPolyfillSymbol[o]=O.IS_SYMBOL_NATIVE?O.global.Symbol(o):O.POLYFILL_PREFIX+r+"$"+o),O.defineProperty(n,O.propertyToPolyfillSymbol[o],{configurable:!0,writable:!0,value:t})))};O.getConstructImplementation=function(){function e(){function r(){}return new r,Reflect.construct(r,[],function(){}),new r instanceof r}if(O.TRUST_ES6_POLYFILLS&&typeof Reflect<"u"&&Reflect.construct){if(e())return Reflect.construct;var t=Reflect.construct;return function(r,n,o){return r=t(r,n),o&&Reflect.setPrototypeOf(r,o.prototype),r}}return function(r,n,o){return o===void 0&&(o=r),o=O.objectCreate(o.prototype||Object.prototype),Function.prototype.apply.call(r,o,n)||o}};O.construct={valueOf:O.getConstructImplementation}.valueOf();O.underscoreProtoCanBeSet=function(){var e={a:!0},t={};try{return t.__proto__=e,t.a}catch{}return!1};O.setPrototypeOf=O.ASSUME_ES6||O.TRUST_ES6_POLYFILLS&&typeof Object.setPrototypeOf=="function"?Object.setPrototypeOf:O.underscoreProtoCanBeSet()?function(e,t){if(e.__proto__=t,e.__proto__!==t)throw new TypeError(e+" is not extensible");return e}:null;O.inherits=function(e,t){if(e.prototype=O.objectCreate(t.prototype),e.prototype.constructor=e,O.ASSUME_ES6||O.setPrototypeOf){var r=O.setPrototypeOf;r(e,t)}else for(r in t)if(r!="prototype")if(Object.defineProperties){var n=Object.getOwnPropertyDescriptor(t,r);n&&Object.defineProperty(e,r,n)}else e[r]=t[r];e.superClass_=t.prototype};O.arrayIteratorImpl=function(e){var t=0;return function(){return t<e.length?{done:!1,value:e[t++]}:{done:!0}}};O.arrayIterator=function(e){return{next:O.arrayIteratorImpl(e)}};O.makeIterator=function(e){var t=typeof Symbol<"u"&&Symbol.iterator&&e[Symbol.iterator];if(t)return t.call(e);if(typeof e.length=="number")return O.arrayIterator(e);throw Error(String(e)+" is not an iterable or ArrayLike")};O.arrayFromIterator=function(e){for(var t,r=[];!(t=e.next()).done;)r.push(t.value);return r};O.arrayFromIterable=function(e){return e instanceof Array?e:O.arrayFromIterator(O.makeIterator(e))};O.createTemplateTagFirstArg=function(e){return O.createTemplateTagFirstArgWithRaw(e,e)};O.createTemplateTagFirstArgWithRaw=function(e,t){return e.raw=t,Object.freeze&&(Object.freeze(e),Object.freeze(t)),e};O.generator={};O.generator.ensureIteratorResultIsObject_=function(e){if(!(e instanceof Object))throw new TypeError("Iterator result "+e+" is not an object")};O.generator.Context=function(){this.isRunning_=!1,this.yieldAllIterator_=null,this.yieldResult=void 0,this.nextAddress=1,this.finallyAddress_=this.catchAddress_=0,this.finallyContexts_=this.abruptCompletion_=null};O.generator.Context.prototype.start_=function(){if(this.isRunning_)throw new TypeError("Generator is already running");this.isRunning_=!0};O.generator.Context.prototype.stop_=function(){this.isRunning_=!1};O.generator.Context.prototype.jumpToErrorHandler_=function(){this.nextAddress=this.catchAddress_||this.finallyAddress_};O.generator.Context.prototype.next_=function(e){this.yieldResult=e};O.generator.Context.prototype.throw_=function(e){this.abruptCompletion_={exception:e,isException:!0},this.jumpToErrorHandler_()};O.generator.Context.prototype.getNextAddressJsc=function(){return this.nextAddress};O.generator.Context.prototype.getNextAddressJsc=function(){return this.nextAddress};O.generator.Context.prototype.getYieldResultJsc=function(){return this.yieldResult};O.generator.Context.prototype.getYieldResultJsc=function(){return this.yieldResult};O.generator.Context.prototype.return=function(e){this.abruptCompletion_={return:e},this.nextAddress=this.finallyAddress_};O.generator.Context.prototype.return=O.generator.Context.prototype.return;O.generator.Context.prototype.jumpThroughFinallyBlocks=function(e){this.abruptCompletion_={jumpTo:e},this.nextAddress=this.finallyAddress_};O.generator.Context.prototype.jumpThroughFinallyBlocks=O.generator.Context.prototype.jumpThroughFinallyBlocks;O.generator.Context.prototype.yield=function(e,t){return this.nextAddress=t,{value:e}};O.generator.Context.prototype.yield=O.generator.Context.prototype.yield;O.generator.Context.prototype.yieldAll=function(e,t){e=O.makeIterator(e);var r=e.next();if(O.generator.ensureIteratorResultIsObject_(r),r.done)this.yieldResult=r.value,this.nextAddress=t;else return this.yieldAllIterator_=e,this.yield(r.value,t)};O.generator.Context.prototype.yieldAll=O.generator.Context.prototype.yieldAll;O.generator.Context.prototype.jumpTo=function(e){this.nextAddress=e};O.generator.Context.prototype.jumpTo=O.generator.Context.prototype.jumpTo;O.generator.Context.prototype.jumpToEnd=function(){this.nextAddress=0};O.generator.Context.prototype.jumpToEnd=O.generator.Context.prototype.jumpToEnd;O.generator.Context.prototype.setCatchFinallyBlocks=function(e,t){this.catchAddress_=e,t!=null&&(this.finallyAddress_=t)};O.generator.Context.prototype.setCatchFinallyBlocks=O.generator.Context.prototype.setCatchFinallyBlocks;O.generator.Context.prototype.setFinallyBlock=function(e){this.catchAddress_=0,this.finallyAddress_=e||0};O.generator.Context.prototype.setFinallyBlock=O.generator.Context.prototype.setFinallyBlock;O.generator.Context.prototype.leaveTryBlock=function(e,t){this.nextAddress=e,this.catchAddress_=t||0};O.generator.Context.prototype.leaveTryBlock=O.generator.Context.prototype.leaveTryBlock;O.generator.Context.prototype.enterCatchBlock=function(e){return this.catchAddress_=e||0,e=this.abruptCompletion_.exception,this.abruptCompletion_=null,e};O.generator.Context.prototype.enterCatchBlock=O.generator.Context.prototype.enterCatchBlock;O.generator.Context.prototype.enterFinallyBlock=function(e,t,r){r?this.finallyContexts_[r]=this.abruptCompletion_:this.finallyContexts_=[this.abruptCompletion_],this.catchAddress_=e||0,this.finallyAddress_=t||0};O.generator.Context.prototype.enterFinallyBlock=O.generator.Context.prototype.enterFinallyBlock;O.generator.Context.prototype.leaveFinallyBlock=function(e,t){if(t=this.finallyContexts_.splice(t||0)[0],t=this.abruptCompletion_=this.abruptCompletion_||t){if(t.isException)return this.jumpToErrorHandler_();t.jumpTo!=null&&this.finallyAddress_<t.jumpTo?(this.nextAddress=t.jumpTo,this.abruptCompletion_=null):this.nextAddress=this.finallyAddress_}else this.nextAddress=e};O.generator.Context.prototype.leaveFinallyBlock=O.generator.Context.prototype.leaveFinallyBlock;O.generator.Context.prototype.forIn=function(e){return new O.generator.Context.PropertyIterator(e)};O.generator.Context.prototype.forIn=O.generator.Context.prototype.forIn;O.generator.Context.PropertyIterator=function(e){this.object_=e,this.properties_=[];for(var t in e)this.properties_.push(t);this.properties_.reverse()};O.generator.Context.PropertyIterator.prototype.getNext=function(){for(;this.properties_.length>0;){var e=this.properties_.pop();if(e in this.object_)return e}return null};O.generator.Context.PropertyIterator.prototype.getNext=O.generator.Context.PropertyIterator.prototype.getNext;O.generator.Engine_=function(e){this.context_=new O.generator.Context,this.program_=e};O.generator.Engine_.prototype.next_=function(e){return this.context_.start_(),this.context_.yieldAllIterator_?this.yieldAllStep_(this.context_.yieldAllIterator_.next,e,this.context_.next_):(this.context_.next_(e),this.nextStep_())};O.generator.Engine_.prototype.return_=function(e){this.context_.start_();var t=this.context_.yieldAllIterator_;return t?this.yieldAllStep_("return"in t?t.return:function(r){return{value:r,done:!0}},e,this.context_.return):(this.context_.return(e),this.nextStep_())};O.generator.Engine_.prototype.throw_=function(e){return this.context_.start_(),this.context_.yieldAllIterator_?this.yieldAllStep_(this.context_.yieldAllIterator_.throw,e,this.context_.next_):(this.context_.throw_(e),this.nextStep_())};O.generator.Engine_.prototype.yieldAllStep_=function(e,t,r){try{var n=e.call(this.context_.yieldAllIterator_,t);if(O.generator.ensureIteratorResultIsObject_(n),!n.done)return this.context_.stop_(),n;var o=n.value}catch(A){return this.context_.yieldAllIterator_=null,this.context_.throw_(A),this.nextStep_()}return this.context_.yieldAllIterator_=null,r.call(this.context_,o),this.nextStep_()};O.generator.Engine_.prototype.nextStep_=function(){for(;this.context_.nextAddress;)try{var e=this.program_(this.context_);if(e)return this.context_.stop_(),{value:e.value,done:!1}}catch(t){this.context_.yieldResult=void 0,this.context_.throw_(t)}if(this.context_.stop_(),this.context_.abruptCompletion_){if(e=this.context_.abruptCompletion_,this.context_.abruptCompletion_=null,e.isException)throw e.exception;return{value:e.return,done:!0}}return{value:void 0,done:!0}};O.generator.Generator_=function(e){this.next=function(t){return e.next_(t)},this.throw=function(t){return e.throw_(t)},this.return=function(t){return e.return_(t)},this[Symbol.iterator]=function(){return this}};O.generator.createGenerator=function(e,t){return t=new O.generator.Generator_(new O.generator.Engine_(t)),O.setPrototypeOf&&e.prototype&&O.setPrototypeOf(t,e.prototype),t};O.asyncExecutePromiseGenerator=function(e){function t(n){return e.next(n)}function r(n){return e.throw(n)}return new Promise(function(n,o){function A(i){i.done?n(i.value):Promise.resolve(i.value).then(t,r).then(A,o)}A(e.next())})};O.asyncExecutePromiseGeneratorFunction=function(e){return O.asyncExecutePromiseGenerator(e())};O.asyncExecutePromiseGeneratorProgram=function(e){return O.asyncExecutePromiseGenerator(new O.generator.Generator_(new O.generator.Engine_(e)))};O.polyfill("globalThis",function(e){return e||O.global},"es_2020","es3");O.polyfill("Reflect",function(e){return e||{}},"es6","es3");O.polyfill("Reflect.construct",function(e){return O.construct},"es6","es3");O.polyfill("Reflect.setPrototypeOf",function(e){if(e)return e;if(O.setPrototypeOf){var t=O.setPrototypeOf;return function(r,n){try{return t(r,n),!0}catch{return!1}}}return null},"es6","es5");O.initSymbol=function(){};O.polyfill("Symbol",function(e){if(e)return e;var t=function(A,i){this.$jscomp$symbol$id_=A,O.defineProperty(this,"description",{configurable:!0,writable:!0,value:i})};t.prototype.toString=function(){return this.$jscomp$symbol$id_};var r="jscomp_symbol_"+(Math.random()*1e9>>>0)+"_",n=0,o=function(A){if(this instanceof o)throw new TypeError("Symbol is not a constructor");return new t(r+(A||"")+"_"+n++,A)};return o},"es6","es3");O.polyfill("Symbol.iterator",function(e){return e||(e=Symbol("Symbol.iterator"),O.defineProperty(Array.prototype,e,{configurable:!0,writable:!0,value:function(){return O.iteratorPrototype(O.arrayIteratorImpl(this))}}),e)},"es6","es3");O.iteratorPrototype=function(e){return e={next:e},e[Symbol.iterator]=function(){return this},e};O.polyfill("Promise",function(e){function t(){this.batch_=null}function r(i){return i instanceof o?i:new o(function(a,s){a(i)})}if(e&&(!(O.FORCE_POLYFILL_PROMISE||O.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION&&typeof O.global.PromiseRejectionEvent>"u")||!O.global.Promise||O.global.Promise.toString().indexOf("[native code]")===-1))return e;t.prototype.asyncExecute=function(i){if(this.batch_==null){this.batch_=[];var a=this;this.asyncExecuteFunction(function(){a.executeBatch_()})}this.batch_.push(i)};var n=O.global.setTimeout;t.prototype.asyncExecuteFunction=function(i){n(i,0)},t.prototype.executeBatch_=function(){for(;this.batch_&&this.batch_.length;){var i=this.batch_;this.batch_=[];for(var a=0;a<i.length;++a){var s=i[a];i[a]=null;try{s()}catch(c){this.asyncThrow_(c)}}}this.batch_=null},t.prototype.asyncThrow_=function(i){this.asyncExecuteFunction(function(){throw i})};var o=function(i){this.state_=0,this.result_=void 0,this.onSettledCallbacks_=[],this.isRejectionHandled_=!1;var a=this.createResolveAndReject_();try{i(a.resolve,a.reject)}catch(s){a.reject(s)}};o.prototype.createResolveAndReject_=function(){function i(c){return function(l){s||(s=!0,c.call(a,l))}}var a=this,s=!1;return{resolve:i(this.resolveTo_),reject:i(this.reject_)}},o.prototype.resolveTo_=function(i){if(i===this)this.reject_(new TypeError("A Promise cannot resolve to itself"));else if(i instanceof o)this.settleSameAsPromise_(i);else{e:switch(typeof i){case"object":var a=i!=null;break e;case"function":a=!0;break e;default:a=!1}a?this.resolveToNonPromiseObj_(i):this.fulfill_(i)}},o.prototype.resolveToNonPromiseObj_=function(i){var a=void 0;try{a=i.then}catch(s){this.reject_(s);return}typeof a=="function"?this.settleSameAsThenable_(a,i):this.fulfill_(i)},o.prototype.reject_=function(i){this.settle_(2,i)},o.prototype.fulfill_=function(i){this.settle_(1,i)},o.prototype.settle_=function(i,a){if(this.state_!=0)throw Error("Cannot settle("+i+", "+a+"): Promise already settled in state"+this.state_);this.state_=i,this.result_=a,this.state_===2&&this.scheduleUnhandledRejectionCheck_(),this.executeOnSettledCallbacks_()},o.prototype.scheduleUnhandledRejectionCheck_=function(){var i=this;n(function(){if(i.notifyUnhandledRejection_()){var a=O.global.console;typeof a<"u"&&a.error(i.result_)}},1)},o.prototype.notifyUnhandledRejection_=function(){if(this.isRejectionHandled_)return!1;var i=O.global.CustomEvent,a=O.global.Event,s=O.global.dispatchEvent;return typeof s>"u"?!0:(typeof i=="function"?i=new i("unhandledrejection",{cancelable:!0}):typeof a=="function"?i=new a("unhandledrejection",{cancelable:!0}):(i=O.global.document.createEvent("CustomEvent"),i.initCustomEvent("unhandledrejection",!1,!0,i)),i.promise=this,i.reason=this.result_,s(i))},o.prototype.executeOnSettledCallbacks_=function(){if(this.onSettledCallbacks_!=null){for(var i=0;i<this.onSettledCallbacks_.length;++i)A.asyncExecute(this.onSettledCallbacks_[i]);this.onSettledCallbacks_=null}};var A=new t;return o.prototype.settleSameAsPromise_=function(i){var a=this.createResolveAndReject_();i.callWhenSettled_(a.resolve,a.reject)},o.prototype.settleSameAsThenable_=function(i,a){var s=this.createResolveAndReject_();try{i.call(a,s.resolve,s.reject)}catch(c){s.reject(c)}},o.prototype.then=function(i,a){function s(g,p){return typeof g=="function"?function(f){try{c(g(f))}catch(d){l(d)}}:p}var c,l,u=new o(function(g,p){c=g,l=p});return this.callWhenSettled_(s(i,c),s(a,l)),u},o.prototype.catch=function(i){return this.then(void 0,i)},o.prototype.callWhenSettled_=function(i,a){function s(){switch(c.state_){case 1:i(c.result_);break;case 2:a(c.result_);break;default:throw Error("Unexpected state: "+c.state_)}}var c=this;this.onSettledCallbacks_==null?A.asyncExecute(s):this.onSettledCallbacks_.push(s),this.isRejectionHandled_=!0},o.resolve=r,o.reject=function(i){return new o(function(a,s){s(i)})},o.race=function(i){return new o(function(a,s){for(var c=O.makeIterator(i),l=c.next();!l.done;l=c.next())r(l.value).callWhenSettled_(a,s)})},o.all=function(i){var a=O.makeIterator(i),s=a.next();return s.done?r([]):new o(function(c,l){function u(f){return function(d){g[f]=d,p--,p==0&&c(g)}}var g=[],p=0;do g.push(void 0),p++,r(s.value).callWhenSettled_(u(g.length-1),l),s=a.next();while(!s.done)})},o},"es6","es3");O.checkStringArgs=function(e,t,r){if(e==null)throw new TypeError("The 'this' value for String.prototype."+r+" must not be null or undefined");if(t instanceof RegExp)throw new TypeError("First argument to String.prototype."+r+" must not be a regular expression");return e+""};O.polyfill("String.prototype.startsWith",function(e){return e||function(t,r){var n=O.checkStringArgs(this,t,"startsWith");t+="";var o=n.length,A=t.length;r=Math.max(0,Math.min(r|0,n.length));for(var i=0;i<A&&r<o;)if(n[r++]!=t[i++])return!1;return i>=A}},"es6","es3");O.polyfill("String.prototype.codePointAt",function(e){return e||function(t){var r=O.checkStringArgs(this,null,"codePointAt"),n=r.length;if(t=Number(t)||0,t>=0&&t<n){t|=0;var o=r.charCodeAt(t);return o<55296||o>56319||t+1===n?o:(t=r.charCodeAt(t+1),t<56320||t>57343?o:(o-55296)*1024+t+9216)}}},"es6","es3");var fA=(function(){var e,t,r=(e=globalThis.document)==null||(t=e.currentScript)==null?void 0:t.src;return function(n){function o(){this.ptr=Hn(),W(o)[this.ptr]=this}function A(){this.ptr=Gn(),W(A)[this.ptr]=this}function i(){this.ptr=Mn(),W(i)[this.ptr]=this}function a(){this.ptr=xn(),W(a)[this.ptr]=this}function s(){this.ptr=En(),W(s)[this.ptr]=this}function c(){this.ptr=mn(),W(c)[this.ptr]=this}function l(){this.ptr=pn(),W(l)[this.ptr]=this}function u(){this.ptr=pr(),W(u)[this.ptr]=this}function g(){this.ptr=at(),W(g)[this.ptr]=this}function p(){throw"cannot construct a Status, no constructor in IDL"}function f(){this.ptr=de(),W(f)[this.ptr]=this}function d(){this.ptr=te(),W(d)[this.ptr]=this}function h(){this.ptr=x(),W(h)[this.ptr]=this}function I(){this.ptr=lt(),W(I)[this.ptr]=this}function b(){this.ptr=cr(),W(b)[this.ptr]=this}function Q(){this.ptr=Sr(),W(Q)[this.ptr]=this}function m(){this.ptr=Mr(),W(m)[this.ptr]=this}function w(){this.ptr=$t(),W(w)[this.ptr]=this}function v(){this.ptr=qt(),W(v)[this.ptr]=this}function S(){throw"cannot construct a VoidPtr, no constructor in IDL"}function N(ce){if(typeof ce=="object"){for(var B=ke.alloc(ce,Ve),M=0;M<ce.length;M++)Ve[B+M]=ce[M];return B}return ce}function _(ce){if(typeof ce=="string"){ce=Ar(ce);for(var B=ke.alloc(ce,Ve),M=0;M<ce.length;M++)Ve[B+M]=ce[M];return B}return ce}function G(ce){return ce.__class__}function j(ce){return ce.ptr}function R(ce,B){return ce.ptr===B.ptr}function K(ce){if(!ce.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";ce.__destroy__(),delete W(ce.__class__)[ce.ptr]}function z(ce,B){return J(ce.ptr,B)}function J(ce,B){var M=W(B),T=M[ce];return T||(T=Object.create((B||X).prototype),T.ptr=ce,M[ce]=T)}function W(ce){return(ce||X).__cache__}function X(){}function Ae(){var ce,B,M;return(0,O.asyncExecutePromiseGeneratorProgram)(function(T){if(T.getNextAddressJsc()==1)return Be(),ce=y.setStatus,ce?(ce("Running..."),T.yield(new Promise(function(fe){return setTimeout(fe,1)}),3)):T.jumpTo(2);if(T.getNextAddressJsc()!=2&&setTimeout(ce,1,""),Le)return T.return();yt=!0,Ct(ir),yo.e(),(M=(B=y).onRuntimeInitialized)==null||M.call(B),F(),T.jumpToEnd()})}function re(){function ce(H){return H=yo=H.exports,y._webidl_free=H.f,y._free=H.g,y._webidl_malloc=H.h,y._malloc=H.i,Tt=y._emscripten_bind_VoidPtr___destroy___0=H.j,qt=y._emscripten_bind_DecoderBuffer_DecoderBuffer_0=H.k,Xt=y._emscripten_bind_DecoderBuffer_Init_2=H.l,Zt=y._emscripten_bind_DecoderBuffer___destroy___0=H.m,$t=y._emscripten_bind_AttributeTransformData_AttributeTransformData_0=H.n,vr=y._emscripten_bind_AttributeTransformData_transform_type_0=H.o,Dr=y._emscripten_bind_AttributeTransformData___destroy___0=H.p,Mr=y._emscripten_bind_GeometryAttribute_GeometryAttribute_0=H.q,_r=y._emscripten_bind_GeometryAttribute___destroy___0=H.r,Sr=y._emscripten_bind_PointAttribute_PointAttribute_0=H.s,Pr=y._emscripten_bind_PointAttribute_size_0=H.t,Gr=y._emscripten_bind_PointAttribute_GetAttributeTransformData_0=H.u,Rr=y._emscripten_bind_PointAttribute_attribute_type_0=H.v,Fr=y._emscripten_bind_PointAttribute_data_type_0=H.w,ar=y._emscripten_bind_PointAttribute_num_components_0=H.x,Lt=y._emscripten_bind_PointAttribute_normalized_0=H.y,Ur=y._emscripten_bind_PointAttribute_byte_stride_0=H.z,kr=y._emscripten_bind_PointAttribute_byte_offset_0=H.A,sr=y._emscripten_bind_PointAttribute_unique_id_0=H.B,Nr=y._emscripten_bind_PointAttribute___destroy___0=H.C,cr=y._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=H.D,Ot=y._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=H.E,Tr=y._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=H.F,Lr=y._emscripten_bind_AttributeQuantizationTransform_min_value_1=H.G,lr=y._emscripten_bind_AttributeQuantizationTransform_range_0=H.H,er=y._emscripten_bind_AttributeQuantizationTransform___destroy___0=H.I,lt=y._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=H.J,Ht=y._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=H.K,ur=y._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=H.L,C=y._emscripten_bind_AttributeOctahedronTransform___destroy___0=H.M,x=y._emscripten_bind_PointCloud_PointCloud_0=H.N,k=y._emscripten_bind_PointCloud_num_attributes_0=H.O,V=y._emscripten_bind_PointCloud_num_points_0=H.P,q=y._emscripten_bind_PointCloud___destroy___0=H.Q,te=y._emscripten_bind_Mesh_Mesh_0=H.R,ae=y._emscripten_bind_Mesh_num_faces_0=H.S,se=y._emscripten_bind_Mesh_num_attributes_0=H.T,pe=y._emscripten_bind_Mesh_num_points_0=H.U,ue=y._emscripten_bind_Mesh___destroy___0=H.V,de=y._emscripten_bind_Metadata_Metadata_0=H.W,ve=y._emscripten_bind_Metadata___destroy___0=H.X,Fe=y._emscripten_bind_Status_code_0=H.Y,Ke=y._emscripten_bind_Status_ok_0=H.Z,Ne=y._emscripten_bind_Status_error_msg_0=H._,rt=y._emscripten_bind_Status___destroy___0=H.$,at=y._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=H.aa,St=y._emscripten_bind_DracoFloat32Array_GetValue_1=H.ba,ut=y._emscripten_bind_DracoFloat32Array_size_0=H.ca,gr=y._emscripten_bind_DracoFloat32Array___destroy___0=H.da,pr=y._emscripten_bind_DracoInt8Array_DracoInt8Array_0=H.ea,ln=y._emscripten_bind_DracoInt8Array_GetValue_1=H.fa,un=y._emscripten_bind_DracoInt8Array_size_0=H.ga,gn=y._emscripten_bind_DracoInt8Array___destroy___0=H.ha,pn=y._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=H.ia,fn=y._emscripten_bind_DracoUInt8Array_GetValue_1=H.ja,dn=y._emscripten_bind_DracoUInt8Array_size_0=H.ka,hn=y._emscripten_bind_DracoUInt8Array___destroy___0=H.la,mn=y._emscripten_bind_DracoInt16Array_DracoInt16Array_0=H.ma,In=y._emscripten_bind_DracoInt16Array_GetValue_1=H.na,Bn=y._emscripten_bind_DracoInt16Array_size_0=H.oa,bn=y._emscripten_bind_DracoInt16Array___destroy___0=H.pa,En=y._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0=H.qa,yn=y._emscripten_bind_DracoUInt16Array_GetValue_1=H.ra,Cn=y._emscripten_bind_DracoUInt16Array_size_0=H.sa,Qn=y._emscripten_bind_DracoUInt16Array___destroy___0=H.ta,xn=y._emscripten_bind_DracoInt32Array_DracoInt32Array_0=H.ua,wn=y._emscripten_bind_DracoInt32Array_GetValue_1=H.va,vn=y._emscripten_bind_DracoInt32Array_size_0=H.wa,Dn=y._emscripten_bind_DracoInt32Array___destroy___0=H.xa,Mn=y._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0=H.ya,_n=y._emscripten_bind_DracoUInt32Array_GetValue_1=H.za,Sn=y._emscripten_bind_DracoUInt32Array_size_0=H.Aa,Pn=y._emscripten_bind_DracoUInt32Array___destroy___0=H.Ba,Gn=y._emscripten_bind_MetadataQuerier_MetadataQuerier_0=H.Ca,Rn=y._emscripten_bind_MetadataQuerier_HasEntry_2=H.Da,Fn=y._emscripten_bind_MetadataQuerier_GetIntEntry_2=H.Ea,Un=y._emscripten_bind_MetadataQuerier_GetIntEntryArray_3=H.Fa,kn=y._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=H.Ga,Nn=y._emscripten_bind_MetadataQuerier_GetStringEntry_2=H.Ha,Tn=y._emscripten_bind_MetadataQuerier_NumEntries_1=H.Ia,Ln=y._emscripten_bind_MetadataQuerier_GetEntryName_2=H.Ja,On=y._emscripten_bind_MetadataQuerier___destroy___0=H.Ka,Hn=y._emscripten_bind_Decoder_Decoder_0=H.La,jn=y._emscripten_bind_Decoder_DecodeArrayToPointCloud_3=H.Ma,Vn=y._emscripten_bind_Decoder_DecodeArrayToMesh_3=H.Na,Jn=y._emscripten_bind_Decoder_GetAttributeId_2=H.Oa,Kn=y._emscripten_bind_Decoder_GetAttributeIdByName_2=H.Pa,zn=y._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=H.Qa,Yn=y._emscripten_bind_Decoder_GetAttribute_2=H.Ra,Or=y._emscripten_bind_Decoder_GetAttributeByUniqueId_2=H.Sa,Wn=y._emscripten_bind_Decoder_GetMetadata_1=H.Ta,Hr=y._emscripten_bind_Decoder_GetAttributeMetadata_2=H.Ua,De=y._emscripten_bind_Decoder_GetFaceFromMesh_3=H.Va,ee=y._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=H.Wa,E=y._emscripten_bind_Decoder_GetTrianglesUInt16Array_3=H.Xa,D=y._emscripten_bind_Decoder_GetTrianglesUInt32Array_3=H.Ya,P=y._emscripten_bind_Decoder_GetAttributeFloat_3=H.Za,Y=y._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=H._a,U=y._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3=H.$a,Ce=y._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=H.ab,ot=y._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=H.bb,ti=y._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3=H.cb,ri=y._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3=H.db,ni=y._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=H.eb,oi=y._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3=H.fb,Ai=y._emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5=H.gb,ii=y._emscripten_bind_Decoder_SkipAttributeTransform_1=H.hb,ai=y._emscripten_bind_Decoder_GetEncodedGeometryType_Deprecated_1=H.ib,si=y._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=H.jb,ci=y._emscripten_bind_Decoder_DecodeBufferToMesh_2=H.kb,li=y._emscripten_bind_Decoder___destroy___0=H.lb,ui=y._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM=H.mb,gi=y._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=H.nb,pi=y._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=H.ob,fi=y._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=H.pb,di=y._emscripten_enum_draco_GeometryAttribute_Type_INVALID=H.qb,hi=y._emscripten_enum_draco_GeometryAttribute_Type_POSITION=H.rb,mi=y._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=H.sb,Ii=y._emscripten_enum_draco_GeometryAttribute_Type_COLOR=H.tb,Bi=y._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=H.ub,bi=y._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=H.vb,Ei=y._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=H.wb,yi=y._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=H.xb,Ci=y._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=H.yb,Qi=y._emscripten_enum_draco_DataType_DT_INVALID=H.zb,xi=y._emscripten_enum_draco_DataType_DT_INT8=H.Ab,wi=y._emscripten_enum_draco_DataType_DT_UINT8=H.Bb,vi=y._emscripten_enum_draco_DataType_DT_INT16=H.Cb,Di=y._emscripten_enum_draco_DataType_DT_UINT16=H.Db,Mi=y._emscripten_enum_draco_DataType_DT_INT32=H.Eb,_i=y._emscripten_enum_draco_DataType_DT_UINT32=H.Fb,Si=y._emscripten_enum_draco_DataType_DT_INT64=H.Gb,Pi=y._emscripten_enum_draco_DataType_DT_UINT64=H.Hb,Gi=y._emscripten_enum_draco_DataType_DT_FLOAT32=H.Ib,Ri=y._emscripten_enum_draco_DataType_DT_FLOAT64=H.Jb,Fi=y._emscripten_enum_draco_DataType_DT_BOOL=H.Kb,Ui=y._emscripten_enum_draco_DataType_DT_TYPES_COUNT=H.Lb,ki=y._emscripten_enum_draco_StatusCode_OK=H.Mb,Ni=y._emscripten_enum_draco_StatusCode_DRACO_ERROR=H.Nb,Ti=y._emscripten_enum_draco_StatusCode_IO_ERROR=H.Ob,Li=y._emscripten_enum_draco_StatusCode_INVALID_PARAMETER=H.Pb,Oi=y._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=H.Qb,Hi=y._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=H.Rb,Eo=H.d,Se(),yo}var B,M,T,fe;return(0,O.asyncExecutePromiseGeneratorProgram)(function(H){return H.getNextAddressJsc()==1?(B={a:ji},(M=y.instantiateWasm)?H.return(new Promise(function(Oe){M(B,function(At){return Oe(ce(At))})})):(ze!=null||(ze=Pe("draco_decoder_gltf.wasm")),H.yield(oe(je,ze,B),2))):(T=H.getYieldResultJsc(),fe=ce(T.instance),H.return(fe))})}function oe(ce,B,M){var T,fe,H;return(0,O.asyncExecutePromiseGeneratorProgram)(function(Oe){switch(Oe.getNextAddressJsc()){case 1:if(ce||Je(B)||be){Oe.jumpTo(2);break}return Oe.setCatchFinallyBlocks(3),T=fetch(B,{credentials:"same-origin"}),Oe.yield(WebAssembly.instantiateStreaming(T,M),5);case 5:return fe=Oe.getYieldResultJsc(),Oe.return(fe);case 3:H=Oe.enterCatchBlock(),Te("wasm streaming compile failed: "+H),Te("falling back to ArrayBuffer instantiation");case 2:return Oe.return(ne(B,M))}})}function ne(ce,B){var M,T,fe;return(0,O.asyncExecutePromiseGeneratorProgram)(function(H){switch(H.getNextAddressJsc()){case 1:return H.setCatchFinallyBlocks(2),H.yield(ie(ce),4);case 4:return M=H.getYieldResultJsc(),H.yield(WebAssembly.instantiate(M,B),5);case 5:return T=H.getYieldResultJsc(),H.return(T);case 2:fe=H.enterCatchBlock(),Te("failed to asynchronously prepare wasm: "+fe),he(fe),H.jumpToEnd()}})}function ie(ce){var B;return(0,O.asyncExecutePromiseGeneratorProgram)(function(M){switch(M.getNextAddressJsc()){case 1:if(je){M.jumpTo(2);break}return M.setCatchFinallyBlocks(3),M.yield(Ue(ce),5);case 5:return B=M.getYieldResultJsc(),M.return(new Uint8Array(B));case 3:M.enterCatchBlock();case 2:var T=M.return;if(ce==ze&&je)var fe=new Uint8Array(je);else if(Me)fe=Me(ce);else throw"both async and sync fetching of the wasm failed";return T.call(M,fe)}})}function he(ce){var B,M;throw(M=(B=y).onAbort)==null||M.call(B,ce),ce="Aborted("+ce+")",Te(ce),Le=!0,new WebAssembly.RuntimeError(ce+". Build with -sASSERTIONS for more info.")}function F(){var ce=y.postRun;ce&&(typeof ce=="function"&&(ce=[ce]),pt.push.apply(pt,(0,O.arrayFromIterable)(ce))),Ct(pt)}function Be(){var ce=y.preRun;ce&&(typeof ce=="function"&&(ce=[ce]),Qt.push.apply(Qt,(0,O.arrayFromIterable)(ce))),Ct(Qt)}function Se(){var ce,B;!((ce=Ve)==null||(B=ce.buffer)==null)&&B.resizable||(ce=Eo.buffer,y.HEAP8=Ve=new Int8Array(ce),y.HEAP16=new Int16Array(ce),y.HEAPU8=_t=new Uint8Array(ce),y.HEAPU16=new Uint16Array(ce),y.HEAP32=new Int32Array(ce),y.HEAPU32=ft=new Uint32Array(ce),y.HEAPF32=new Float32Array(ce),y.HEAPF64=new Float64Array(ce))}function Pe(ce){return y.locateFile?y.locateFile(ce,Ge):Ge+ce}function Ie(ce){return typeof ce!="string"?!1:(ce=ce.split("."),ce.length<2||ce.length>3?!1:ce[0]==1&&ce[1]>=0&&ce[1]<=5?!0:!(ce[0]!=0||ce[1]>10))}n=n===void 0?{}:n;var y,ye,Qe,xe,le,ge,be,we,_e,Ge,Ue,Me,He,Te,je,Le,Je,nt,qe,yt,ze,Ve,Ct,pt,Qt,ft,Xe,It,Ut,dt,Yt,st,kt,ht,_t,xr,or,Nt,Ar,xt,wr,ct,Wt,ir,it,wt,Tt,qt,Xt,Zt,$t,vr,Dr,Mr,_r,Sr,Pr,Gr,Rr,Fr,ar,Lt,Ur,kr,sr,Nr,cr,Ot,Tr,Lr,lr,er,lt,Ht,ur,C,x,k,V,q,te,ae,se,pe,ue,de,ve,Fe,Ke,Ne,rt,at,St,ut,gr,pr,ln,un,gn,pn,fn,dn,hn,mn,In,Bn,bn,En,yn,Cn,Qn,xn,wn,vn,Dn,Mn,_n,Sn,Pn,Gn,Rn,Fn,Un,kn,Nn,Tn,Ln,On,Hn,jn,Vn,Jn,Kn,zn,Yn,Or,Wn,Hr,De,ee,E,D,P,Y,U,Ce,ot,ti,ri,ni,oi,Ai,ii,ai,si,ci,li,ui,gi,pi,fi,di,hi,mi,Ii,Bi,bi,Ei,yi,Ci,Qi,xi,wi,vi,Di,Mi,_i,Si,Pi,Gi,Ri,Fi,Ui,ki,Ni,Ti,Li,Oi,Hi,Eo,ji,yo,ke;return(0,O.asyncExecutePromiseGeneratorProgram)(function(ce){if(ce.getNextAddressJsc()==1){if(y=n,ye=!!globalThis.window,Qe=!!globalThis.WorkerGlobalScope,be=((xe=globalThis.process)==null||(le=xe.versions)==null?void 0:le.node)&&((ge=globalThis.process)==null?void 0:ge.type)!="renderer",_e=we=!1,y.onRuntimeInitialized=function(){we=!0,_e&&typeof y.onModuleLoaded=="function"&&y.onModuleLoaded(y)},y.onModuleParsed=function(){_e=!0,we&&typeof y.onModuleLoaded=="function"&&y.onModuleLoaded(y)},y.isVersionSupported=Ie,typeof __filename<"u"?r=__filename:Qe&&(r=self.location.href),Ge="",be)He=(Pt(),Vi(ta)),Ge=__dirname+"/",Me=function(B){return B=Je(B)?new URL(B):B,He.readFileSync(B)},Ue=function(B,M){M=M===void 0?!0:M;var T;return(0,O.asyncExecutePromiseGeneratorProgram)(function(fe){return B=Je(B)?new URL(B):B,T=He.readFileSync(B,M?void 0:"utf8"),fe.return(T)})},me.argv.length>1&&me.argv[1].replace(/\\/g,"/"),me.argv.slice(2);else if(ye||Qe){try{Ge=new URL(".",r).href}catch{}Qe&&(Me=function(B){var M=new XMLHttpRequest;return M.open("GET",B,!1),M.responseType="arraybuffer",M.send(null),new Uint8Array(M.response)}),Ue=function(B){var M;return(0,O.asyncExecutePromiseGeneratorProgram)(function(T){if(T.getNextAddressJsc()==1)return Je(B)?T.return(new Promise(function(fe,H){var Oe=new XMLHttpRequest;Oe.open("GET",B,!0),Oe.responseType="arraybuffer",Oe.onload=function(){Oe.status==200||Oe.status==0&&Oe.response?fe(Oe.response):H(Oe.status)},Oe.onerror=H,Oe.send(null)})):T.yield(fetch(B,{credentials:"same-origin"}),2);if(M=T.getYieldResultJsc(),M.ok)return T.return(M.arrayBuffer());throw Error(M.status+" : "+M.url)})}}if(console.log.bind(console),Te=console.error.bind(console),Le=!1,Je=function(B){return B.startsWith("file://")},nt=function(){},qe=function(){return nt.apply(this,arguments)||this},O.inherits(qe,nt),yt=!1,Ct=function(B){for(;B.length>0;)B.shift()(y)},pt=[],Qt=[],Xe=function(B){this.excPtr=B,this.ptr=B-24},Xe.prototype.set_type=function(B){ft[this.ptr+4>>2]=B},Xe.prototype.get_type=function(){return ft[this.ptr+4>>2]},Xe.prototype.set_destructor=function(B){ft[this.ptr+8>>2]=B},Xe.prototype.get_destructor=function(){return ft[this.ptr+8>>2]},Xe.prototype.set_caught=function(B){Ve[this.ptr+12]=B?1:0},Xe.prototype.get_caught=function(){return Ve[this.ptr+12]!=0},Xe.prototype.set_rethrown=function(B){Ve[this.ptr+13]=B?1:0},Xe.prototype.get_rethrown=function(){return Ve[this.ptr+13]!=0},Xe.prototype.init=function(B,M){this.set_adjusted_ptr(0),this.set_type(B),this.set_destructor(M)},Xe.prototype.set_adjusted_ptr=function(B){ft[this.ptr+16>>2]=B},Xe.prototype.get_adjusted_ptr=function(){return ft[this.ptr+16>>2]},It=0,Ut=function(B){he()},dt=function(B,M,T){new Xe(B).init(M,T),It++,Ut(B)},Yt=function(){return he("")},st=function(){return 2147483648},kt=function(B,M){return Math.ceil(B/M)*M},ht=function(B){var M=Eo.buffer.byteLength;try{return Eo.grow((B-M+65535)/65536|0),Se(),1}catch{}},xr=function(B){var M=_t.length;B>>>=0;var T=st();if(B>T)return!1;for(var fe=1;fe<=4;fe*=2){var H=M*(1+.2/fe);if(H=Math.min(H,B+100663296),H=Math.min(T,kt(Math.max(B,H),65536)),ht(H))return!0}return!1},or=function(B){for(var M=0,T=0;T<B.length;++T){var fe=B.charCodeAt(T);fe<=127?M++:fe<=2047?M+=2:fe>=55296&&fe<=57343?(M+=4,++T):M+=3}return M},Nt=function(B,M,T,fe){if(!(fe>0))return 0;var H=T;fe=T+fe-1;for(var Oe=0;Oe<B.length;++Oe){var At=B.codePointAt(Oe);if(At<=127){if(T>=fe)break;M[T++]=At}else if(At<=2047){if(T+1>=fe)break;M[T++]=192|At>>6,M[T++]=128|At&63}else if(At<=65535){if(T+2>=fe)break;M[T++]=224|At>>12,M[T++]=128|At>>6&63,M[T++]=128|At&63}else{if(T+3>=fe)break;M[T++]=240|At>>18,M[T++]=128|At>>12&63,M[T++]=128|At>>6&63,M[T++]=128|At&63,Oe++}}return M[T]=0,T-H},Ar=function(B,M,T){return T=T>0?T:or(B)+1,T=Array(T),B=Nt(B,T,0,T.length),M&&(T.length=B),T},xt=globalThis.TextDecoder&&new TextDecoder,wr=function(B,M,T,fe){if(T=M+T,fe)return T;for(;B[M]&&!(M>=T);)++M;return M},ct=function(B,M,T,fe){if(M=M===void 0?0:M,T=wr(B,M,T,fe),T-M>16&&B.buffer&&xt)return xt.decode(B.subarray(M,T));for(fe="";M<T;){var H=B[M++];if(H&128){var Oe=B[M++]&63;if((H&224)==192)fe+=String.fromCharCode((H&31)<<6|Oe);else{var At=B[M++]&63;H=(H&240)==224?(H&15)<<12|Oe<<6|At:(H&7)<<18|Oe<<12|At<<6|B[M++]&63,H<65536?fe+=String.fromCharCode(H):(H-=65536,fe+=String.fromCharCode(55296|H>>10,56320|H&1023))}}else fe+=String.fromCharCode(H)}return fe},Wt=function(B,M,T){return B?ct(_t,B,M,T):""},ir=[],it=function(B){return ir.push(B)},y.printErr&&(Te=y.printErr),y.wasmBinary&&(je=y.wasmBinary),wt=y.preInit)for(typeof wt=="function"&&(y.preInit=wt=[wt]);wt.length>0;)wt.shift()();return ji={a:dt,c:Yt,b:xr},ce.yield(re(),2)}return ce.getNextAddressJsc()!=3?(yo=ce.getYieldResultJsc(),ce.yield(Ae(),3)):(X.prototype=Object.create(X.prototype),X.prototype.constructor=X,X.prototype.__class__=X,X.__cache__={},y.WrapperObject=X,y.getCache=W,y.wrapPointer=J,y.castObject=z,y.NULL=J(0),y.destroy=K,y.compare=R,y.getPointer=j,y.getClass=G,ke={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(ke.needed){for(var B=0;B<ke.temps.length;B++)y._webidl_free(ke.temps[B]);ke.temps.length=0,y._webidl_free(ke.buffer),ke.buffer=0,ke.size+=ke.needed,ke.needed=0}ke.buffer||(ke.size+=128,ke.buffer=y._webidl_malloc(ke.size),ke.buffer||he(void 0)),ke.pos=0},alloc:function(B,M){return ke.buffer||he(void 0),B=B.length*M.BYTES_PER_ELEMENT,B=kt(B,8),ke.pos+B>=ke.size?(B>0||he(void 0),ke.needed+=B,M=y._webidl_malloc(B),ke.temps.push(M)):(M=ke.buffer+ke.pos,ke.pos+=B),M}},S.prototype=Object.create(X.prototype),S.prototype.constructor=S,S.prototype.__class__=S,S.__cache__={},y.VoidPtr=S,S.prototype.__destroy__=S.prototype.__destroy__=function(){Tt(this.ptr)},v.prototype=Object.create(X.prototype),v.prototype.constructor=v,v.prototype.__class__=v,v.__cache__={},y.DecoderBuffer=v,v.prototype.Init=v.prototype.Init=function(B,M){var T=this.ptr;ke.prepare(),typeof B=="object"&&(B=N(B)),M&&typeof M=="object"&&(M=M.ptr),Xt(T,B,M)},v.prototype.__destroy__=v.prototype.__destroy__=function(){Zt(this.ptr)},w.prototype=Object.create(X.prototype),w.prototype.constructor=w,w.prototype.__class__=w,w.__cache__={},y.AttributeTransformData=w,w.prototype.transform_type=w.prototype.transform_type=function(){return vr(this.ptr)},w.prototype.__destroy__=w.prototype.__destroy__=function(){Dr(this.ptr)},m.prototype=Object.create(X.prototype),m.prototype.constructor=m,m.prototype.__class__=m,m.__cache__={},y.GeometryAttribute=m,m.prototype.__destroy__=m.prototype.__destroy__=function(){_r(this.ptr)},Q.prototype=Object.create(X.prototype),Q.prototype.constructor=Q,Q.prototype.__class__=Q,Q.__cache__={},y.PointAttribute=Q,Q.prototype.size=Q.prototype.size=function(){return Pr(this.ptr)},Q.prototype.GetAttributeTransformData=Q.prototype.GetAttributeTransformData=function(){return J(Gr(this.ptr),w)},Q.prototype.attribute_type=Q.prototype.attribute_type=function(){return Rr(this.ptr)},Q.prototype.data_type=Q.prototype.data_type=function(){return Fr(this.ptr)},Q.prototype.num_components=Q.prototype.num_components=function(){return ar(this.ptr)},Q.prototype.normalized=Q.prototype.normalized=function(){return!!Lt(this.ptr)},Q.prototype.byte_stride=Q.prototype.byte_stride=function(){return Ur(this.ptr)},Q.prototype.byte_offset=Q.prototype.byte_offset=function(){return kr(this.ptr)},Q.prototype.unique_id=Q.prototype.unique_id=function(){return sr(this.ptr)},Q.prototype.__destroy__=Q.prototype.__destroy__=function(){Nr(this.ptr)},b.prototype=Object.create(X.prototype),b.prototype.constructor=b,b.prototype.__class__=b,b.__cache__={},y.AttributeQuantizationTransform=b,b.prototype.InitFromAttribute=b.prototype.InitFromAttribute=function(B){var M=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),!!Ot(M,B)},b.prototype.quantization_bits=b.prototype.quantization_bits=function(){return Tr(this.ptr)},b.prototype.min_value=b.prototype.min_value=function(B){var M=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),Lr(M,B)},b.prototype.range=b.prototype.range=function(){return lr(this.ptr)},b.prototype.__destroy__=b.prototype.__destroy__=function(){er(this.ptr)},I.prototype=Object.create(X.prototype),I.prototype.constructor=I,I.prototype.__class__=I,I.__cache__={},y.AttributeOctahedronTransform=I,I.prototype.InitFromAttribute=I.prototype.InitFromAttribute=function(B){var M=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),!!Ht(M,B)},I.prototype.quantization_bits=I.prototype.quantization_bits=function(){return ur(this.ptr)},I.prototype.__destroy__=I.prototype.__destroy__=function(){C(this.ptr)},h.prototype=Object.create(X.prototype),h.prototype.constructor=h,h.prototype.__class__=h,h.__cache__={},y.PointCloud=h,h.prototype.num_attributes=h.prototype.num_attributes=function(){return k(this.ptr)},h.prototype.num_points=h.prototype.num_points=function(){return V(this.ptr)},h.prototype.__destroy__=h.prototype.__destroy__=function(){q(this.ptr)},d.prototype=Object.create(X.prototype),d.prototype.constructor=d,d.prototype.__class__=d,d.__cache__={},y.Mesh=d,d.prototype.num_faces=d.prototype.num_faces=function(){return ae(this.ptr)},d.prototype.num_attributes=d.prototype.num_attributes=function(){return se(this.ptr)},d.prototype.num_points=d.prototype.num_points=function(){return pe(this.ptr)},d.prototype.__destroy__=d.prototype.__destroy__=function(){ue(this.ptr)},f.prototype=Object.create(X.prototype),f.prototype.constructor=f,f.prototype.__class__=f,f.__cache__={},y.Metadata=f,f.prototype.__destroy__=f.prototype.__destroy__=function(){ve(this.ptr)},p.prototype=Object.create(X.prototype),p.prototype.constructor=p,p.prototype.__class__=p,p.__cache__={},y.Status=p,p.prototype.code=p.prototype.code=function(){return Fe(this.ptr)},p.prototype.ok=p.prototype.ok=function(){return!!Ke(this.ptr)},p.prototype.error_msg=p.prototype.error_msg=function(){return Wt(Ne(this.ptr))},p.prototype.__destroy__=p.prototype.__destroy__=function(){rt(this.ptr)},g.prototype=Object.create(X.prototype),g.prototype.constructor=g,g.prototype.__class__=g,g.__cache__={},y.DracoFloat32Array=g,g.prototype.GetValue=g.prototype.GetValue=function(B){var M=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),St(M,B)},g.prototype.size=g.prototype.size=function(){return ut(this.ptr)},g.prototype.__destroy__=g.prototype.__destroy__=function(){gr(this.ptr)},u.prototype=Object.create(X.prototype),u.prototype.constructor=u,u.prototype.__class__=u,u.__cache__={},y.DracoInt8Array=u,u.prototype.GetValue=u.prototype.GetValue=function(B){var M=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),ln(M,B)},u.prototype.size=u.prototype.size=function(){return un(this.ptr)},u.prototype.__destroy__=u.prototype.__destroy__=function(){gn(this.ptr)},l.prototype=Object.create(X.prototype),l.prototype.constructor=l,l.prototype.__class__=l,l.__cache__={},y.DracoUInt8Array=l,l.prototype.GetValue=l.prototype.GetValue=function(B){var M=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),fn(M,B)},l.prototype.size=l.prototype.size=function(){return dn(this.ptr)},l.prototype.__destroy__=l.prototype.__destroy__=function(){hn(this.ptr)},c.prototype=Object.create(X.prototype),c.prototype.constructor=c,c.prototype.__class__=c,c.__cache__={},y.DracoInt16Array=c,c.prototype.GetValue=c.prototype.GetValue=function(B){var M=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),In(M,B)},c.prototype.size=c.prototype.size=function(){return Bn(this.ptr)},c.prototype.__destroy__=c.prototype.__destroy__=function(){bn(this.ptr)},s.prototype=Object.create(X.prototype),s.prototype.constructor=s,s.prototype.__class__=s,s.__cache__={},y.DracoUInt16Array=s,s.prototype.GetValue=s.prototype.GetValue=function(B){var M=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),yn(M,B)},s.prototype.size=s.prototype.size=function(){return Cn(this.ptr)},s.prototype.__destroy__=s.prototype.__destroy__=function(){Qn(this.ptr)},a.prototype=Object.create(X.prototype),a.prototype.constructor=a,a.prototype.__class__=a,a.__cache__={},y.DracoInt32Array=a,a.prototype.GetValue=a.prototype.GetValue=function(B){var M=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),wn(M,B)},a.prototype.size=a.prototype.size=function(){return vn(this.ptr)},a.prototype.__destroy__=a.prototype.__destroy__=function(){Dn(this.ptr)},i.prototype=Object.create(X.prototype),i.prototype.constructor=i,i.prototype.__class__=i,i.__cache__={},y.DracoUInt32Array=i,i.prototype.GetValue=i.prototype.GetValue=function(B){var M=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_n(M,B)},i.prototype.size=i.prototype.size=function(){return Sn(this.ptr)},i.prototype.__destroy__=i.prototype.__destroy__=function(){Pn(this.ptr)},A.prototype=Object.create(X.prototype),A.prototype.constructor=A,A.prototype.__class__=A,A.__cache__={},y.MetadataQuerier=A,A.prototype.HasEntry=A.prototype.HasEntry=function(B,M){var T=this.ptr;return ke.prepare(),B&&typeof B=="object"&&(B=B.ptr),M=M&&typeof M=="object"?M.ptr:_(M),!!Rn(T,B,M)},A.prototype.GetIntEntry=A.prototype.GetIntEntry=function(B,M){var T=this.ptr;return ke.prepare(),B&&typeof B=="object"&&(B=B.ptr),M=M&&typeof M=="object"?M.ptr:_(M),Fn(T,B,M)},A.prototype.GetIntEntryArray=A.prototype.GetIntEntryArray=function(B,M,T){var fe=this.ptr;ke.prepare(),B&&typeof B=="object"&&(B=B.ptr),M=M&&typeof M=="object"?M.ptr:_(M),T&&typeof T=="object"&&(T=T.ptr),Un(fe,B,M,T)},A.prototype.GetDoubleEntry=A.prototype.GetDoubleEntry=function(B,M){var T=this.ptr;return ke.prepare(),B&&typeof B=="object"&&(B=B.ptr),M=M&&typeof M=="object"?M.ptr:_(M),kn(T,B,M)},A.prototype.GetStringEntry=A.prototype.GetStringEntry=function(B,M){var T=this.ptr;return ke.prepare(),B&&typeof B=="object"&&(B=B.ptr),M=M&&typeof M=="object"?M.ptr:_(M),Wt(Nn(T,B,M))},A.prototype.NumEntries=A.prototype.NumEntries=function(B){var M=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),Tn(M,B)},A.prototype.GetEntryName=A.prototype.GetEntryName=function(B,M){var T=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),M&&typeof M=="object"&&(M=M.ptr),Wt(Ln(T,B,M))},A.prototype.__destroy__=A.prototype.__destroy__=function(){On(this.ptr)},o.prototype=Object.create(X.prototype),o.prototype.constructor=o,o.prototype.__class__=o,o.__cache__={},y.Decoder=o,o.prototype.DecodeArrayToPointCloud=o.prototype.DecodeArrayToPointCloud=function(B,M,T){var fe=this.ptr;return ke.prepare(),typeof B=="object"&&(B=N(B)),M&&typeof M=="object"&&(M=M.ptr),T&&typeof T=="object"&&(T=T.ptr),J(jn(fe,B,M,T),p)},o.prototype.DecodeArrayToMesh=o.prototype.DecodeArrayToMesh=function(B,M,T){var fe=this.ptr;return ke.prepare(),typeof B=="object"&&(B=N(B)),M&&typeof M=="object"&&(M=M.ptr),T&&typeof T=="object"&&(T=T.ptr),J(Vn(fe,B,M,T),p)},o.prototype.GetAttributeId=o.prototype.GetAttributeId=function(B,M){var T=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),M&&typeof M=="object"&&(M=M.ptr),Jn(T,B,M)},o.prototype.GetAttributeIdByName=o.prototype.GetAttributeIdByName=function(B,M){var T=this.ptr;return ke.prepare(),B&&typeof B=="object"&&(B=B.ptr),M=M&&typeof M=="object"?M.ptr:_(M),Kn(T,B,M)},o.prototype.GetAttributeIdByMetadataEntry=o.prototype.GetAttributeIdByMetadataEntry=function(B,M,T){var fe=this.ptr;return ke.prepare(),B&&typeof B=="object"&&(B=B.ptr),M=M&&typeof M=="object"?M.ptr:_(M),T=T&&typeof T=="object"?T.ptr:_(T),zn(fe,B,M,T)},o.prototype.GetAttribute=o.prototype.GetAttribute=function(B,M){var T=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),M&&typeof M=="object"&&(M=M.ptr),J(Yn(T,B,M),Q)},o.prototype.GetAttributeByUniqueId=o.prototype.GetAttributeByUniqueId=function(B,M){var T=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),M&&typeof M=="object"&&(M=M.ptr),J(Or(T,B,M),Q)},o.prototype.GetMetadata=o.prototype.GetMetadata=function(B){var M=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),J(Wn(M,B),f)},o.prototype.GetAttributeMetadata=o.prototype.GetAttributeMetadata=function(B,M){var T=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),M&&typeof M=="object"&&(M=M.ptr),J(Hr(T,B,M),f)},o.prototype.GetFaceFromMesh=o.prototype.GetFaceFromMesh=function(B,M,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),M&&typeof M=="object"&&(M=M.ptr),T&&typeof T=="object"&&(T=T.ptr),!!De(fe,B,M,T)},o.prototype.GetTriangleStripsFromMesh=o.prototype.GetTriangleStripsFromMesh=function(B,M){var T=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),M&&typeof M=="object"&&(M=M.ptr),ee(T,B,M)},o.prototype.GetTrianglesUInt16Array=o.prototype.GetTrianglesUInt16Array=function(B,M,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),M&&typeof M=="object"&&(M=M.ptr),T&&typeof T=="object"&&(T=T.ptr),!!E(fe,B,M,T)},o.prototype.GetTrianglesUInt32Array=o.prototype.GetTrianglesUInt32Array=function(B,M,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),M&&typeof M=="object"&&(M=M.ptr),T&&typeof T=="object"&&(T=T.ptr),!!D(fe,B,M,T)},o.prototype.GetAttributeFloat=o.prototype.GetAttributeFloat=function(B,M,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),M&&typeof M=="object"&&(M=M.ptr),T&&typeof T=="object"&&(T=T.ptr),!!P(fe,B,M,T)},o.prototype.GetAttributeFloatForAllPoints=o.prototype.GetAttributeFloatForAllPoints=function(B,M,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),M&&typeof M=="object"&&(M=M.ptr),T&&typeof T=="object"&&(T=T.ptr),!!Y(fe,B,M,T)},o.prototype.GetAttributeIntForAllPoints=o.prototype.GetAttributeIntForAllPoints=function(B,M,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),M&&typeof M=="object"&&(M=M.ptr),T&&typeof T=="object"&&(T=T.ptr),!!U(fe,B,M,T)},o.prototype.GetAttributeInt8ForAllPoints=o.prototype.GetAttributeInt8ForAllPoints=function(B,M,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),M&&typeof M=="object"&&(M=M.ptr),T&&typeof T=="object"&&(T=T.ptr),!!Ce(fe,B,M,T)},o.prototype.GetAttributeUInt8ForAllPoints=o.prototype.GetAttributeUInt8ForAllPoints=function(B,M,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),M&&typeof M=="object"&&(M=M.ptr),T&&typeof T=="object"&&(T=T.ptr),!!ot(fe,B,M,T)},o.prototype.GetAttributeInt16ForAllPoints=o.prototype.GetAttributeInt16ForAllPoints=function(B,M,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),M&&typeof M=="object"&&(M=M.ptr),T&&typeof T=="object"&&(T=T.ptr),!!ti(fe,B,M,T)},o.prototype.GetAttributeUInt16ForAllPoints=o.prototype.GetAttributeUInt16ForAllPoints=function(B,M,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),M&&typeof M=="object"&&(M=M.ptr),T&&typeof T=="object"&&(T=T.ptr),!!ri(fe,B,M,T)},o.prototype.GetAttributeInt32ForAllPoints=o.prototype.GetAttributeInt32ForAllPoints=function(B,M,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),M&&typeof M=="object"&&(M=M.ptr),T&&typeof T=="object"&&(T=T.ptr),!!ni(fe,B,M,T)},o.prototype.GetAttributeUInt32ForAllPoints=o.prototype.GetAttributeUInt32ForAllPoints=function(B,M,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),M&&typeof M=="object"&&(M=M.ptr),T&&typeof T=="object"&&(T=T.ptr),!!oi(fe,B,M,T)},o.prototype.GetAttributeDataArrayForAllPoints=o.prototype.GetAttributeDataArrayForAllPoints=function(B,M,T,fe,H){var Oe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),M&&typeof M=="object"&&(M=M.ptr),T&&typeof T=="object"&&(T=T.ptr),fe&&typeof fe=="object"&&(fe=fe.ptr),H&&typeof H=="object"&&(H=H.ptr),!!Ai(Oe,B,M,T,fe,H)},o.prototype.SkipAttributeTransform=o.prototype.SkipAttributeTransform=function(B){var M=this.ptr;B&&typeof B=="object"&&(B=B.ptr),ii(M,B)},o.prototype.GetEncodedGeometryType_Deprecated=o.prototype.GetEncodedGeometryType_Deprecated=function(B){var M=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),ai(M,B)},o.prototype.DecodeBufferToPointCloud=o.prototype.DecodeBufferToPointCloud=function(B,M){var T=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),M&&typeof M=="object"&&(M=M.ptr),J(si(T,B,M),p)},o.prototype.DecodeBufferToMesh=o.prototype.DecodeBufferToMesh=function(B,M){var T=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),M&&typeof M=="object"&&(M=M.ptr),J(ci(T,B,M),p)},o.prototype.__destroy__=o.prototype.__destroy__=function(){li(this.ptr)},(function(){function B(){y.ATTRIBUTE_INVALID_TRANSFORM=ui(),y.ATTRIBUTE_NO_TRANSFORM=gi(),y.ATTRIBUTE_QUANTIZATION_TRANSFORM=pi(),y.ATTRIBUTE_OCTAHEDRON_TRANSFORM=fi(),y.INVALID=di(),y.POSITION=hi(),y.NORMAL=mi(),y.COLOR=Ii(),y.TEX_COORD=Bi(),y.GENERIC=bi(),y.INVALID_GEOMETRY_TYPE=Ei(),y.POINT_CLOUD=yi(),y.TRIANGULAR_MESH=Ci(),y.DT_INVALID=Qi(),y.DT_INT8=xi(),y.DT_UINT8=wi(),y.DT_INT16=vi(),y.DT_UINT16=Di(),y.DT_INT32=Mi(),y.DT_UINT32=_i(),y.DT_INT64=Si(),y.DT_UINT64=Pi(),y.DT_FLOAT32=Gi(),y.DT_FLOAT64=Ri(),y.DT_BOOL=Fi(),y.DT_TYPES_COUNT=Ui(),y.OK=ki(),y.DRACO_ERROR=Ni(),y.IO_ERROR=Ti(),y.INVALID_PARAMETER=Li(),y.UNSUPPORTED_VERSION=Oi(),y.UNKNOWN_VERSION=Hi()}yt?B():it(B)})(),y.Decoder.prototype.GetEncodedGeometryType=function(B){if(B.__class__&&B.__class__===y.DecoderBuffer)return y.Decoder.prototype.GetEncodedGeometryType_Deprecated(B);if(B.byteLength<8)return y.INVALID_GEOMETRY_TYPE;switch(B[7]){case 0:return y.POINT_CLOUD;case 1:return y.TRIANGULAR_MESH;default:return y.INVALID_GEOMETRY_TYPE}},typeof y.onModuleParsed=="function"&&y.onModuleParsed(),ce.return(y))})}})();typeof dA=="object"&&typeof Po=="object"?(Po.exports=fA,Po.exports.default=fA):typeof define=="function"&&define.amd&&define([],function(){return fA})});var Ma=qn((Fg,Da)=>{$();var sc=wa(),cc=va();Da.exports={createEncoderModule:sc,createDecoderModule:cc}});var us=qn((od,ls)=>{$();var Zo=()=>new Proxy(function(){},{get:(e,t)=>t==="__esModule"?!0:t===Symbol.toPrimitive?()=>"":Zo(),apply:()=>Zo(),construct:()=>Zo()});ls.exports=Zo()});$();var la=new Float32Array(2048);for(let e=0;e<2048;e++)la[e]=.5*(1-Math.cos(2*Math.PI*e/2047));var ua=new Uint16Array(2048);for(let e=0;e<2048;e++){let t=0,r=e;for(let n=0;n<11;n++)t=t<<1|r&1,r>>=1;ua[e]=t}var ga=new Float32Array(2048/2),pa=new Float32Array(2048/2);for(let e=0;e<2048/2;e++){let t=-2*Math.PI*e/2048;ga[e]=Math.cos(t),pa[e]=Math.sin(t)}function zs(e,t){for(let r=0;r<2048;r++){let n=ua[r]??0;if(n>r){let o=e[r]??0;e[r]=e[n]??0,e[n]=o;let A=t[r]??0;t[r]=t[n]??0,t[n]=A}}for(let r=2;r<=2048;r<<=1){let n=r>>1,o=2048/r;for(let A=0;A<2048;A+=r)for(let i=0;i<n;i++){let a=i*o,s=ga[a]??1,c=pa[a]??0,l=e[A+i]??0,u=t[A+i]??0,g=e[A+i+n]??0,p=t[A+i+n]??0,f=g*s-p*c,d=g*c+p*s;e[A+i]=l+f,t[A+i]=u+d,e[A+i+n]=l-f,t[A+i+n]=u-d}}}var Qo=class e{tempReal=new Float32Array(2048);tempImag=new Float32Array(2048);previousBins=new Float32Array(1024);extractAtTime(t,r,n){let o=t.length,A=o>0?t[0]?.length??0:0,a=Math.round(n*r)-1024;for(let w=0;w<2048;w++){let v=a+w,S=0;v>=0&&v<A&&(o===1?S=t[0]?.[v]??0:o>=2&&(S=((t[0]?.[v]??0)+(t[1]?.[v]??0))*.5)),this.tempReal[w]=S*(la[w]??1),this.tempImag[w]=0}zs(this.tempReal,this.tempImag);let s=new Float32Array(1024),c=2/2048;for(let w=0;w<1024;w++){let v=this.tempReal[w]??0,S=this.tempImag[w]??0;s[w]=Math.sqrt(v*v+S*S)*c*2}let l=r/2048,u=Math.max(1,Math.round(20/l)),g=Math.max(u+1,Math.round(150/l)),p=0;for(let w=u;w<=g&&w<1024;w++)p+=(s[w]??0)*(s[w]??0);let f=Math.min(1,Math.sqrt(p/(g-u+1))*4),d=0;for(let w=0;w<1024;w++){let v=(s[w]??0)-(this.previousBins[w]??0);v>0&&(d+=v),this.previousBins[w]=s[w]??0}let h=Math.min(1,d*.15),I=Math.round(300/l),b=Math.min(1023,Math.round(3400/l)),Q=0;for(let w=I;w<=b;w++)Q+=(s[w]??0)*(s[w]??0);let m=Math.min(1,Math.sqrt(Q/(b-I+1))*3.5);return{fftBins:s,bassEnergy:f,drumTransient:h,vocalEnergy:m,timeMs:n*1e3}}static packBufferData(t){let r=new Float32Array(1028);return r.set(t.fftBins,0),r[1024]=t.bassEnergy,r[1025]=t.drumTransient,r[1026]=t.vocalEnergy,r[1027]=t.timeMs,r}static createGpuBuffer(t,r){let n=r?e.packBufferData(r):new Float32Array(1028),o=t.createBuffer({label:"AudioLatentBuffer",size:4112,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});return new Float32Array(o.getMappedRange()).set(n),o.unmap(),o}static updateGpuBuffer(t,r,n){let o=e.packBufferData(n);t.queue.writeBuffer(r,0,o)}},ca=class{constructor(t,r,n,o){this.channels=t;this.sampleRate=r;this.fps=n;this.totalFrames=o;let A=new Qo,i=r||48e3,a=n||30,s=t[0]?.length??0,c=Math.max(10,Math.ceil(s/i*a)+10),l=typeof o=="number"&&Number.isFinite(o)&&o>0?Math.round(o):c;this.frames=new Array(l);for(let u=0;u<l;u++){let g=u/a;this.frames[u]=A.extractAtTime(t,i,g)}}channels;sampleRate;fps;totalFrames;frames=[];gpuBuffers=new WeakMap;getFrameData(t){let r=Math.max(0,Math.min(this.totalFrames-1,Math.round(t)));return this.frames[r]??{fftBins:new Float32Array(1024),bassEnergy:0,drumTransient:0,vocalEnergy:0,timeMs:r/this.fps*1e3}}getGpuBuffer(t,r){let n=this.gpuBuffers.get(t);n||(n=new Map,this.gpuBuffers.set(t,n));let o=Math.max(0,Math.min(this.totalFrames-1,Math.round(r))),A=n.get(o);if(!A){let i=this.getFrameData(o);A=Qo.createGpuBuffer(t,i),n.set(o,A)}return A}};$();var Z={create(e=0,t=0,r=0){return[e,t,r]},copy(e){return[e[0],e[1],e[2]]},set(e,t,r,n){return e[0]=t,e[1]=r,e[2]=n,e},add(e,t){return[e[0]+t[0],e[1]+t[1],e[2]+t[2]]},subtract(e,t){return[e[0]-t[0],e[1]-t[1],e[2]-t[2]]},multiplyScalar(e,t){return[e[0]*t,e[1]*t,e[2]*t]},dot(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]},cross(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]},lengthSq(e){return e[0]*e[0]+e[1]*e[1]+e[2]*e[2]},length(e){return Math.hypot(e[0],e[1],e[2])},distance(e,t){return Math.hypot(e[0]-t[0],e[1]-t[1],e[2]-t[2])},normalize(e){let t=Math.hypot(e[0],e[1],e[2]);if(t===0)return[0,0,0];let r=1/t;return[e[0]*r,e[1]*r,e[2]*r]},lerp(e,t,r){return[e[0]+(t[0]-e[0])*r,e[1]+(t[1]-e[1])*r,e[2]+(t[2]-e[2])*r]},equals(e,t,r=1e-6){return Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r}};$();var Ee={identity(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},copy(e){return[...e]},multiply(e,t){let r=new Array(16);for(let n=0;n<4;n++)for(let o=0;o<4;o++)r[o*4+n]=e[0+n]*t[o*4+0]+e[4+n]*t[o*4+1]+e[8+n]*t[o*4+2]+e[12+n]*t[o*4+3];return r},translate(e,t,r=0){return[1,0,0,0,0,1,0,0,0,0,1,0,e,t,r,1]},scale(e,t,r=1){return[e,0,0,0,0,t,0,0,0,0,r,0,0,0,0,1]},rotateX(e){let t=Math.cos(e),r=Math.sin(e);return[1,0,0,0,0,t,r,0,0,-r,t,0,0,0,0,1]},rotateY(e){let t=Math.cos(e),r=Math.sin(e);return[t,0,-r,0,0,1,0,0,r,0,t,0,0,0,0,1]},rotateZ(e){let t=Math.cos(e),r=Math.sin(e);return[t,r,0,0,-r,t,0,0,0,0,1,0,0,0,0,1]},rotateAxis(e,t){let r=Z.normalize(e),n=r[0],o=r[1],A=r[2],i=Math.cos(t),a=Math.sin(t),s=1-i;return[s*n*n+i,s*n*o+a*A,s*n*A-a*o,0,s*n*o-a*A,s*o*o+i,s*o*A+a*n,0,s*n*A+a*o,s*o*A-a*n,s*A*A+i,0,0,0,0,1]},lookAt(e,t,r=[0,-1,0]){let n=Z.subtract(t,e);Z.lengthSq(n)===0?n=[0,0,1]:n=Z.normalize(n);let o=Z.cross(n,r);Z.lengthSq(o)===0?o=[1,0,0]:o=Z.normalize(o);let A=Z.cross(o,n);return[o[0],A[0],n[0],0,o[1],A[1],n[1],0,o[2],A[2],n[2],0,-Z.dot(o,e),-Z.dot(A,e),-Z.dot(n,e),1]},perspective(e,t,r,n){let o=1/Math.tan(e/2),A=1/(n-r);return[o/t,0,0,0,0,o,0,0,0,0,n*A,1,0,0,-r*n*A,0]},orthographic(e,t,r,n,o,A){let i=1/(t-e),a=1/(n-r),s=1/(A-o);return[2*i,0,0,0,0,2*a,0,0,0,0,s,0,-(t+e)*i,-(n+r)*a,-o*s,1]},invert(e){let t=new Array(16);t[0]=e[5]*e[10]*e[15]-e[5]*e[11]*e[14]-e[9]*e[6]*e[15]+e[9]*e[7]*e[14]+e[13]*e[6]*e[11]-e[13]*e[7]*e[10],t[4]=-e[4]*e[10]*e[15]+e[4]*e[11]*e[14]+e[8]*e[6]*e[15]-e[8]*e[7]*e[14]-e[12]*e[6]*e[11]+e[12]*e[7]*e[10],t[8]=e[4]*e[9]*e[15]-e[4]*e[11]*e[13]-e[8]*e[5]*e[15]+e[8]*e[7]*e[13]+e[12]*e[5]*e[11]-e[12]*e[7]*e[9],t[12]=-e[4]*e[9]*e[14]+e[4]*e[10]*e[13]+e[8]*e[5]*e[14]-e[8]*e[6]*e[13]-e[12]*e[5]*e[10]+e[12]*e[6]*e[9],t[1]=-e[1]*e[10]*e[15]+e[1]*e[11]*e[14]+e[9]*e[2]*e[15]-e[9]*e[3]*e[14]-e[13]*e[2]*e[11]+e[13]*e[3]*e[10],t[5]=e[0]*e[10]*e[15]-e[0]*e[11]*e[14]-e[8]*e[2]*e[15]+e[8]*e[3]*e[14]+e[12]*e[2]*e[11]-e[12]*e[3]*e[10],t[9]=-e[0]*e[9]*e[15]+e[0]*e[11]*e[13]+e[8]*e[1]*e[15]-e[8]*e[3]*e[13]-e[12]*e[1]*e[11]+e[12]*e[3]*e[9],t[13]=e[0]*e[9]*e[14]-e[0]*e[10]*e[13]-e[8]*e[1]*e[14]+e[8]*e[2]*e[13]+e[12]*e[1]*e[10]-e[12]*e[2]*e[9],t[2]=e[1]*e[6]*e[15]-e[1]*e[7]*e[14]-e[5]*e[2]*e[15]+e[5]*e[3]*e[14]+e[13]*e[2]*e[7]-e[13]*e[3]*e[6],t[6]=-e[0]*e[6]*e[15]+e[0]*e[7]*e[14]+e[4]*e[2]*e[15]-e[4]*e[3]*e[14]-e[12]*e[2]*e[7]+e[12]*e[3]*e[6],t[10]=e[0]*e[5]*e[15]-e[0]*e[7]*e[13]-e[4]*e[1]*e[15]+e[4]*e[3]*e[13]+e[12]*e[1]*e[7]-e[12]*e[3]*e[5],t[14]=-e[0]*e[5]*e[14]+e[0]*e[6]*e[13]+e[4]*e[1]*e[14]-e[4]*e[2]*e[13]-e[12]*e[1]*e[6]+e[12]*e[2]*e[5],t[3]=-e[1]*e[6]*e[11]+e[1]*e[7]*e[10]+e[5]*e[2]*e[11]-e[5]*e[3]*e[10]-e[9]*e[2]*e[7]+e[9]*e[3]*e[6],t[7]=e[0]*e[6]*e[11]-e[0]*e[7]*e[10]-e[4]*e[2]*e[11]+e[4]*e[3]*e[10]+e[8]*e[2]*e[7]-e[8]*e[3]*e[6],t[11]=-e[0]*e[5]*e[11]+e[0]*e[7]*e[9]+e[4]*e[1]*e[11]-e[4]*e[3]*e[9]-e[8]*e[1]*e[7]+e[8]*e[3]*e[5],t[15]=e[0]*e[5]*e[10]-e[0]*e[6]*e[9]-e[4]*e[1]*e[10]+e[4]*e[2]*e[9]+e[8]*e[1]*e[6]-e[8]*e[2]*e[5];let r=e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12];if(Math.abs(r)<1e-12)return null;r=1/r;for(let n=0;n<16;n++)t[n]*=r;return t},transpose(e){return[e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]]},projectPoint(e,t){let r=t[0],n=t[1],o=t[2],A=e[0]*r+e[4]*n+e[8]*o+e[12],i=e[1]*r+e[5]*n+e[9]*o+e[13],a=e[2]*r+e[6]*n+e[10]*o+e[14],s=e[3]*r+e[7]*n+e[11]*o+e[15],c=Math.abs(s)>1e-6?1/s:1;return[A*c,i*c,a*c]},projectRectangle(e,t,r){return[Ee.projectPoint(e,[0,0,0]),Ee.projectPoint(e,[t,0,0]),Ee.projectPoint(e,[t,r,0]),Ee.projectPoint(e,[0,r,0])]},toFloat32Array(e){return new Float32Array(e)}};$();function Xn(e,t,r=3){let n=0,o=1,A=1,i=0;for(let a=0;a<r;a++){let s=Math.sin(e*o*2*Math.PI+t+a*1.7),c=Math.cos(e*o*1.414*Math.PI+t*2.1+a*.9);n+=(s*.6+c*.4)*A,i+=A,o*=2,A*=.5}return i>0?n/i:0}var Xr={createDefaultCamera(e,t,r=50){let n=r*Math.PI/180,o=t/2/Math.tan(n/2);return{eye:[e/2,t/2,-o],target:[e/2,t/2,0],up:[0,-1,0],fov:r,aspect:Math.max(1e-4,e/t),near:1,far:5e4,zoom:1,focusDistance:o,fStop:2.8,maxBlurRadius:32}},computeViewMatrix(e){return Ee.lookAt(e.eye,e.target,e.up)},computeProjectionMatrix(e){let t=e.fov*Math.PI/180,r=Ee.perspective(t,e.aspect,e.near,e.far);return e.zoom!==1&&e.zoom>0&&(r[0]*=e.zoom,r[5]*=e.zoom),r},computeViewProjectionMatrix(e){let t=Xr.computeViewMatrix(e),r=Xr.computeProjectionMatrix(e);return Ee.multiply(r,t)},dolly(e,t,r){let n=Z.normalize(Z.subtract(t,e)),o=Z.multiplyScalar(n,r);return{eye:Z.add(e,o),target:t}},truckPedestal(e,t,r,n,o){let A=Z.normalize(Z.subtract(t,e)),i=Z.normalize(Z.cross(A,r)),a=Z.cross(i,A),s=Z.multiplyScalar(i,n),c=Z.multiplyScalar(a,o),l=Z.add(s,c);return{eye:Z.add(e,l),target:Z.add(t,l)}},orbit(e,t,r,n){let o=r*Math.PI/180,A=n*Math.PI/180,i=Math.cos(A),a=Math.sin(A),s=Math.cos(o),c=Math.sin(o),l=e[0]+t*i*c,u=e[1]-t*a,g=e[2]-t*i*s;return[l,u,g]},applyOrientation(e,t,r,n){if(t===0&&r===0&&n===0)return e;let o=Z.normalize(Z.subtract(e.target,e.eye)),A=Z.normalize(Z.cross(o,e.up)),i=Z.cross(A,o),a=Z.distance(e.eye,e.target),s=o,c=i;if(r!==0){let g=r*Math.PI/180,p=Math.cos(g),f=Math.sin(g);s=Z.normalize(Z.subtract(Z.multiplyScalar(s,p),Z.multiplyScalar(A,f)))}let l=Z.normalize(Z.cross(s,c));if(t!==0){let g=t*Math.PI/180,p=Math.cos(g),f=Math.sin(g);s=Z.normalize(Z.add(Z.multiplyScalar(s,p),Z.multiplyScalar(c,f))),c=Z.normalize(Z.cross(l,s))}if(n!==0){let g=n*Math.PI/180,p=Math.cos(g),f=Math.sin(g);c=Z.normalize(Z.add(Z.multiplyScalar(c,p),Z.multiplyScalar(l,f)))}let u=Z.add(e.eye,Z.multiplyScalar(s,a));return{...e,target:u,up:c}},applyCameraShake(e,t,r){let{translationAmplitude:n,rotationAmplitude:o,frequency:A=2.5,octaves:i=3,seed:a=42}=r;if(n<=0&&o<=0)return e;let s=t*A,c=Xn(s,a,i)*n,l=Xn(s,a+101.5,i)*n,u=Xn(s,a+203.7,i)*(n*.5),g=Xn(s,a+307.1,i)*o,p=Xn(s,a+409.3,i)*o,f=Z.normalize(Z.subtract(e.target,e.eye)),d=Z.normalize(Z.cross(f,e.up)),h=Z.cross(d,f),I=Z.add(Z.multiplyScalar(d,c),Z.add(Z.multiplyScalar(h,l),Z.multiplyScalar(f,u))),b=Z.add(e.eye,I),Q=Z.add(e.target,Z.add(Z.multiplyScalar(d,p*10),Z.multiplyScalar(h,g*10)));return{...e,eye:b,target:Q}},computeCircleOfConfusion(e,t,r,n,o=32){if(t<=0||n<=0||e<=0)return 0;let A=Math.abs(e-t),i=r/n,a=A/e*i*.5;return Math.min(o,Math.max(0,a))},computeCameraFrustumPlanes(e){let t=r=>{let n=Math.hypot(r[0],r[1],r[2]);return n===0?r:[r[0]/n,r[1]/n,r[2]/n,r[3]/n]};return{left:t([e[3]+e[0],e[7]+e[4],e[11]+e[8],e[15]+e[12]]),right:t([e[3]-e[0],e[7]-e[4],e[11]-e[8],e[15]-e[12]]),bottom:t([e[3]+e[1],e[7]+e[5],e[11]+e[9],e[15]+e[13]]),top:t([e[3]-e[1],e[7]-e[5],e[11]-e[9],e[15]-e[13]]),near:t([e[2],e[6],e[10],e[14]]),far:t([e[3]-e[2],e[7]-e[6],e[11]-e[10],e[15]-e[14]])}},isBoxInFrustum(e,t,r){let n=[r.left,r.right,r.bottom,r.top,r.near,r.far];for(let o of n){let A=o[0]>0?t[0]:e[0],i=o[1]>0?t[1]:e[1],a=o[2]>0?t[2]:e[2];if(o[0]*A+o[1]*i+o[2]*a+o[3]<0)return!1}return!0}};$();var Ys={studio:{top:"#9da3ad",horizon:"#5d626b",bottom:"#202226",softboxes:3.5},soft:{top:"#f1efea",horizon:"#cfcac1",bottom:"#77726a",softboxes:1.2},sunset:{top:"#4d63a3",horizon:"#ff9a5c",bottom:"#3b2a28",softboxes:1},night:{top:"#121a3a",horizon:"#1f2950",bottom:"#05060b",softboxes:.5},neutral:{top:"#9a9a9a",horizon:"#808080",bottom:"#5c5c5c",softboxes:0}},Ws={none:0,aces:1,agx:2,neutral:3};function jr(e){let t=$i(e)??[0,0,0,1],r=n=>n<=.04045?n/12.92:((n+.055)/1.055)**2.4;return[r(t[0]),r(t[1]),r(t[2])]}function fa(e){let t=Ys[e.preset??"studio"],r=e.intensity??1,n=o=>[o[0]*r,o[1]*r,o[2]*r];return{top:n(jr(e.top??t.top)),horizon:n(jr(e.horizon??t.horizon)),bottom:n(jr(e.bottom??t.bottom)),softboxes:(e.softboxes??t.softboxes)*r,rotationRad:(e.rotation??0)*Math.PI/180,exposureMultiplier:2**(e.exposure??0),toneMapping:Ws[e.toneMapping??"neutral"],fog:e.fog?{color:jr(e.fog.color),start:e.fog.start,end:e.fog.end,opacity:Math.max(0,Math.min(1,e.fog.opacity??1))}:void 0,floor:e.floor?{y:e.floor.y,color:jr(e.floor.color??"#08070a"),reflectivity:Math.max(0,Math.min(1,e.floor.reflectivity??.35)),roughness:Math.max(0,Math.min(1,e.floor.roughness??.35)),fadeDistance:Math.max(0,e.floor.fadeDistance??900),opacity:Math.max(0,Math.min(1,e.floor.opacity??1))}:void 0}}$();var da=8,cA=768;function sA(e){if(!e)return[1,1,1];if(Array.isArray(e)){let o=e[0]??1,A=e[1]??1,i=e[2]??1;return[o>1?o/255:o,A>1?A/255:A,i>1?i/255:i]}if(typeof e=="object"&&e!==null){let o=e.r??1,A=e.g??1,i=e.b??1;return[o>1?o/255:o,A>1?A/255:A,i>1?i/255:i]}if(typeof e!="string")return[1,1,1];let t=e.trim().toLowerCase();if(t.startsWith("#")){let o=t.slice(1);if(o.length===3){let A=Number.parseInt(o[0]+o[0],16)/255,i=Number.parseInt(o[1]+o[1],16)/255,a=Number.parseInt(o[2]+o[2],16)/255;return[A,i,a]}if(o.length>=6){let A=Number.parseInt(o.slice(0,2),16)/255,i=Number.parseInt(o.slice(2,4),16)/255,a=Number.parseInt(o.slice(4,6),16)/255;return[A,i,a]}}let r=t.match(/rgba?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/);if(r){let o=Number.parseFloat(r[1])/255,A=Number.parseFloat(r[2])/255,i=Number.parseFloat(r[3])/255;return[Math.max(0,Math.min(1,o)),Math.max(0,Math.min(1,A)),Math.max(0,Math.min(1,i))]}let n=t.match(/hsla?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)%?\s*,\s*([\d.]+)%?/);if(n){let o=Number.parseFloat(n[1])/360,A=Number.parseFloat(n[2])/100,i=Number.parseFloat(n[3])/100;return qs(o,A,i)}return[1,1,1]}function qs(e,t,r){if(t===0)return[r,r,r];let n=(i,a,s)=>{let c=s;return c<0&&(c+=1),c>1&&(c-=1),c<1/6?i+(a-i)*6*c:c<1/2?a:c<2/3?i+(a-i)*(2/3-c)*6:i},o=r<.5?r*(1+t):r+t-r*t,A=2*r-o;return[n(A,o,e+1/3),n(A,o,e),n(A,o,e-1/3)]}var vt={computeNormalMatrix(e){let t=Ee.invert(e);return t?[t[0],t[4],t[8],0,t[1],t[5],t[9],0,t[2],t[6],t[10],0,0,0,0,1]:Ee.identity()},processLight(e){let t=sA(e.color),r=e.intensity??1,n=e.position?e.position[0]:e.x??0,o=e.position?e.position[1]:e.y??0,A=e.position?e.position[2]:e.z??0,i=e.lightType??e.type??"directional",a=1;i==="ambient"?a=0:i==="directional"?a=1:i==="point"?a=2:i==="spot"&&(a=3);let s=[0,0,-1];if(e.direction)s=Z.normalize(e.direction);else if(e.target||e.targetX!==void 0||e.targetY!==void 0||e.targetZ!==void 0){let I=e.target?e.target[0]:e.targetX??n,b=e.target?e.target[1]:e.targetY??o,Q=e.target?e.target[2]:e.targetZ??A,m=[I,b,Q],w=Z.subtract(m,[n,o,A]);Z.length(w)>1e-4&&(s=Z.normalize(w))}let c=Math.max(1,e.radius??1e3),l=e.decay??2,u=Math.max(.1,Math.min(180,e.angle??45)),g=Math.max(0,Math.min(1,e.penumbra??.2)),p=u*Math.PI/180,f=p*(1-g),d=Math.cos(p),h=Math.cos(f);return{posType:[n,o,A,a],dirRadius:[s[0],s[1],s[2],c],colorIntensity:[t[0],t[1],t[2],r],spotParams:[d,h,l,0]}},packLightsUniforms(e,t,r,n=!1){let o=new Float32Array(cA/4);if(vt.packPhysicalBlock(o,e??[],t,r,n),(!e||e.length===0)&&!t)return o[4]=0,o[5]=0,o;let A=0,i=0,a=0,s=[];for(let l of e)if((l.lightType??l.type)==="ambient"){let g=sA(l.color),p=l.intensity??1;A+=g[0]*p,i+=g[1]*p,a+=g[2]*p}else s.push(vt.processLight(l));o[0]=A,o[1]=i,o[2]=a,o[3]=1,o[4]=s.length,o[5]=1;let c=8;for(let l=0;l<da;l++){if(l<s.length){let u=s[l];o[c+0]=u.posType[0],o[c+1]=u.posType[1],o[c+2]=u.posType[2],o[c+3]=u.posType[3],o[c+4]=u.dirRadius[0],o[c+5]=u.dirRadius[1],o[c+6]=u.dirRadius[2],o[c+7]=u.dirRadius[3],o[c+8]=u.colorIntensity[0],o[c+9]=u.colorIntensity[1],o[c+10]=u.colorIntensity[2],o[c+11]=u.colorIntensity[3],o[c+12]=u.spotParams[0],o[c+13]=u.spotParams[1],o[c+14]=u.spotParams[2],o[c+15]=u.spotParams[3]}else for(let u=0;u<16;u++)o[c+u]=0;c+=16}return o},packDirectLights(e,t=[]){let r=e.filter(A=>(A.lightType??A.type)!=="ambient"),n=new Float32Array(Math.max(1,r.length)*40),o=new Map(t.map((A,i)=>[A.lightIndex,i]));for(let[A,i]of r.entries()){let a=vt.processLight(i),s=A*40;n.set(a.posType,s),n.set(a.dirRadius,s+4),n.set(a.colorIntensity,s+8),n.set(a.spotParams,s+12);let c=o.get(A),l=c===void 0?void 0:t[c];if(l&&c!==void 0){for(let u=0;u<16;u++)n[s+16+u]=l.matrix[u]??0;n.set([l.softness,l.mapSize,c,1],s+32),n.set([l.bias,l.normalOffset,l.darkness,0],s+36)}}return n},shadowCasterIndex(e){let t=0;for(let r of e){let n=r.lightType??r.type;if(n!=="ambient"){if(r.castShadow&&(n==="directional"||n==="spot"))return t;t++}}return-1},packPhysicalBlock(e,t,r,n,o=!1){let A=8+da*16,i=0,a=0,s=0;for(let c of t){if((c.lightType??c.type)!=="ambient")continue;let[l,u,g]=sA(c.color),p=c.intensity??1,f=d=>d<=.04045?d/12.92:((d+.055)/1.055)**2.4;i+=f(l)*p,a+=f(u)*p,s+=f(g)*p}if(e[A+0]=i,e[A+1]=a,e[A+2]=s,e[A+3]=1,r){let c=fa(r);e[6]=1,e[7]=c.toneMapping,e[A+3]=c.exposureMultiplier,e.set([...c.top,c.rotationRad],A+4),e.set([...c.horizon,c.softboxes],A+8),e.set([...c.bottom,1],A+12),c.fog&&(e.set([...c.fog.color,1],A+16),e.set([c.fog.start,c.fog.end,c.fog.opacity,0],A+20))}if(n&&n.lightIndex>=0){e.set([1,n.lightIndex,n.softness,n.mapSize],A+24),e.set([n.bias,n.normalOffset,n.darkness,0],A+28);for(let c=0;c<16;c++)e[A+32+c]=n.matrix[c]??0}r?.floor?(e[A+48]=r.floor.y,e[A+49]=r.floor.fadeDistance??900,e[A+50]=o?1:0,e[A+51]=0):(e[A+48]=0,e[A+49]=0,e[A+50]=0,e[A+51]=0)}};$();var dr=class e{samples=[];frames=[];totalLength=0;constructor(t){if(t.length<2)throw new Error("Path3D requires at least 2 coordinate samples");this.samples=t,this.totalLength=t[t.length-1].distance,this.computeRotationMinimizingFrames()}computeRotationMinimizingFrames(){let t=this.samples.length;this.frames=new Array(t);let r=this.samples[0].tangent,n=[0,-1,0];Math.abs(Z.dot(r,n))>.95&&(n=[0,0,1]);let o=Z.normalize(Z.subtract(n,Z.multiplyScalar(r,Z.dot(n,r))));Z.lengthSq(o)<1e-4&&(o=[1,0,0]);let A=Z.normalize(Z.cross(r,o));this.frames[0]={normal:o,binormal:A,rotation:this.eulerFromFrame(r,o,A)};for(let i=0;i<t-1;i++){let a=this.samples[i].position,s=this.samples[i+1].position,c=this.samples[i].tangent,l=this.samples[i+1].tangent,u=this.frames[i].normal,g=Z.subtract(s,a),p=Z.dot(g,g),f;if(p>1e-8){let h=Z.subtract(c,Z.multiplyScalar(g,2*Z.dot(g,c)/p)),I=Z.subtract(u,Z.multiplyScalar(g,2*Z.dot(g,u)/p)),b=Z.subtract(l,h),Q=Z.dot(b,b);Q>1e-8?f=Z.subtract(I,Z.multiplyScalar(b,2*Z.dot(b,I)/Q)):f=I}else f=u;f=Z.normalize(Z.subtract(f,Z.multiplyScalar(l,Z.dot(l,f))));let d=Z.normalize(Z.cross(l,f));this.frames[i+1]={normal:f,binormal:d,rotation:this.eulerFromFrame(l,f,d)}}}eulerFromFrame(t,r,n){let o=Math.asin(Math.max(-1,Math.min(1,-t[1])))*(180/Math.PI),A=Math.atan2(t[0],t[2])*(180/Math.PI),i=Math.atan2(r[0],r[1])*(180/Math.PI);return[o,A,i]}getSamples(){return this.samples}getPoints(t=64){let r=Math.max(2,Math.round(t)),n=[];for(let o=0;o<r;o++)n.push(this.getPointAt(o/(r-1)).position);return n}getPointAt(t){let n=Math.max(0,Math.min(1,t))*this.totalLength;return this.getPointAtDistance(n)}getPointAtDistance(t){let r=Math.max(0,Math.min(this.totalLength,t)),n=this.samples.length,o=0,A=n-1;for(;o<A;){let Q=o+A>>1;this.samples[Q].distance<r?o=Q+1:A=Q}let i=Math.max(1,o),a=i-1,s=this.samples[a],c=this.samples[i],l=c.distance-s.distance,u=l>1e-6?(r-s.distance)/l:0,g=Z.lerp(s.position,c.position,u),p=Z.normalize(Z.lerp(s.tangent,c.tangent,u)),f=this.frames[a],d=this.frames[i],h=Z.normalize(Z.lerp(f.normal,d.normal,u)),I=Z.normalize(Z.cross(p,h)),b=[f.rotation[0]+(d.rotation[0]-f.rotation[0])*u,f.rotation[1]+(d.rotation[1]-f.rotation[1])*u,f.rotation[2]+(d.rotation[2]-f.rotation[2])*u];return{position:g,tangent:p,normal:h,binormal:I,distance:r,t:this.totalLength>0?r/this.totalLength:0,rotation:b}}static catmullRom(t,r={}){if(t.length<2)throw new Error("Catmull-Rom spline requires at least 2 waypoints");let n=!!r.closed,o=r.samplesPerSegment??40,A=[];if(n)A.push(t[t.length-1]),A.push(...t),A.push(t[0]),A.push(t[1]);else{let s=t[0],c=t[1],l=t[t.length-1],u=t[t.length-2];A.push(Z.subtract(s,Z.subtract(c,s))),A.push(...t),A.push(Z.add(l,Z.subtract(l,u)))}let i=n?t.length:t.length-1,a=[];for(let s=0;s<i;s++){let c=A[s],l=A[s+1],u=A[s+2],g=A[s+3],p=s===i-1?o:o-1;for(let f=0;f<=p;f++){let d=f/o,h=d*d,I=h*d,b=-.5*I+h-.5*d,Q=1.5*I-2.5*h+1,m=-1.5*I+2*h+.5*d,w=.5*I-.5*h,v=[b*c[0]+Q*l[0]+m*u[0]+w*g[0],b*c[1]+Q*l[1]+m*u[1]+w*g[1],b*c[2]+Q*l[2]+m*u[2]+w*g[2]],S=-1.5*h+2*d-.5,N=4.5*h-5*d,_=-4.5*h+4*d+.5,G=1.5*h-1*d,j=[S*c[0]+N*l[0]+_*u[0]+G*g[0],S*c[1]+N*l[1]+_*u[1]+G*g[1],S*c[2]+N*l[2]+_*u[2]+G*g[2]],R=Z.normalize(j);a.push({position:v,tangent:R})}}return e.fromRawSamples(a)}static fromRawSamples(t){let r=0,n=t.map((o,A)=>(A>0&&(r+=Z.distance(o.position,t[A-1].position)),{position:o.position,tangent:o.tangent,distance:r}));if(n.length===0)throw new TypeError("Path3D needs samples");return new e(n)}static bezier(t,r=50){if(t.length===0)throw new Error("Bezier path requires at least 1 segment");let n=[];for(let o=0;o<t.length;o++){let A=t[o],i=o===t.length-1?r:r-1;for(let a=0;a<=i;a++){let s=a/r,c=1-s,l=c*c,u=l*c,g=s*s,p=g*s,f=[u*A.p0[0]+3*l*s*A.p1[0]+3*c*g*A.p2[0]+p*A.p3[0],u*A.p0[1]+3*l*s*A.p1[1]+3*c*g*A.p2[1]+p*A.p3[1],u*A.p0[2]+3*l*s*A.p1[2]+3*c*g*A.p2[2]+p*A.p3[2]],d=[3*l*(A.p1[0]-A.p0[0])+6*c*s*(A.p2[0]-A.p1[0])+3*g*(A.p3[0]-A.p2[0]),3*l*(A.p1[1]-A.p0[1])+6*c*s*(A.p2[1]-A.p1[1])+3*g*(A.p3[1]-A.p2[1]),3*l*(A.p1[2]-A.p0[2])+6*c*s*(A.p2[2]-A.p1[2])+3*g*(A.p3[2]-A.p2[2])],h=Z.normalize(d);n.push({position:f,tangent:h})}}return e.fromRawSamples(n)}static helix(t){let{center:r,radius:n,pitch:o,turns:A,axis:i="z",samplesPerTurn:a=60}=t,s=Math.max(10,Math.round(A*a)),c=[];for(let l=0;l<=s;l++){let u=l/s,g=u*A*Math.PI*2,p=(u-.5)*o*A,f=Math.cos(g),d=Math.sin(g),h,I;i==="z"?(h=[r[0]+n*f,r[1]+n*d,r[2]+p],I=[-n*d,n*f,o*A/(A*Math.PI*2)]):i==="y"?(h=[r[0]+n*f,r[1]+p,r[2]+n*d],I=[-n*d,o*A/(A*Math.PI*2),n*f]):(h=[r[0]+p,r[1]+n*f,r[2]+n*d],I=[o*A/(A*Math.PI*2),-n*d,n*f]),c.push({position:h,tangent:Z.normalize(I)})}return e.fromRawSamples(c)}static circle(t){let{center:r,radius:n,startAngleDeg:o=0,endAngleDeg:A=360,samples:i=128}=t,a=o*Math.PI/180,s=A*Math.PI/180,c=[];for(let l=0;l<=i;l++){let u=a+(s-a)*(l/i),g=Math.cos(u),p=Math.sin(u),f=[r[0]+n*g,r[1],r[2]+n*p],d=[-n*p,0,n*g];c.push({position:f,tangent:Z.normalize(d)})}return e.fromRawSamples(c)}};$();Pt();$();Pt();var lA={".ktx2":"image/ktx2",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif",".tif":"image/tiff",".tiff":"image/tiff",".avif":"image/avif"};function Zn(e){return lA[$e.extname(e).toLowerCase()]??"image/png"}function xo(e){let t=$e.extname(e.replace(/\\/g,"/")).toLowerCase();return!t||t in lA}function $n(e,t){if(!e||typeof Re>"u"||!Re.existsSync||!xo(e))return;let r=e.trim().replace(/^file:\/\//,"");try{r=decodeURIComponent(r)}catch{}let n=r.replace(/\\/g,"/"),o=n.split("/").pop()??n,A=[];if($e.isAbsolute(n)&&A.push(n),t){A.push($e.resolve(t,n)),A.push($e.join(t,o)),A.push($e.join(t,"textures",o));try{for(let i of Re.readdirSync(t))i.toLowerCase().endsWith(".fbm")&&A.push($e.join(t,i,o))}catch{}}for(let i of A)try{if(Re.existsSync(i)&&Re.statSync(i).isFile())return{bytes:new Uint8Array(Re.readFileSync(i)),mime:Zn(i)}}catch{}}function Zr(e,t,r){let n=xo(r)?"was not found":`is in an unsupported format (use ${Object.keys(lA).join(", ")})`;console.warn(`[${e}] Texture "${r}" for material "${t}" ${n}; the material renders without it.`)}var eo=class e{static parse(t,r,n){let o=typeof r=="object"&&r!==null?r:n??{},A=typeof r=="string"?r:o.mtlText,i=[],a=[],s=[],c=[],l={materialName:"default",faces:[]};c.push(l);let u={};A&&Object.assign(u,e.loadTextures(e.parseMtl(A),o.basePath));let g=t.split(/\r?\n/);for(let y=0;y<g.length;y++){let ye=g[y]?.trim();if(!ye||ye.startsWith("#"))continue;let Qe=ye.split(/\s+/),xe=Qe[0]?.toLowerCase();if(xe==="mtllib"){let le=Qe.slice(1).join(" ").trim();if(o.basePath&&typeof Re<"u"&&Re.existsSync)try{let ge=$e.resolve(o.basePath,le);if(Re.existsSync(ge)){let be=Re.readFileSync(ge,"utf-8");Object.assign(u,e.loadTextures(e.parseMtl(be),$e.dirname(ge)))}}catch{}}else if(xe==="v"){let le=Number.parseFloat(Qe[1]??"0"),ge=Number.parseFloat(Qe[2]??"0"),be=Number.parseFloat(Qe[3]??"0");i.push([le,ge,be])}else if(xe==="vn"){let le=Number.parseFloat(Qe[1]??"0"),ge=Number.parseFloat(Qe[2]??"0"),be=Number.parseFloat(Qe[3]??"0");a.push([le,ge,be])}else if(xe==="vt"){let le=Number.parseFloat(Qe[1]??"0"),ge=Qe[2]!==void 0?Number.parseFloat(Qe[2]):0;s.push([le,ge])}else if(xe==="usemtl"){let le=Qe[1]??"default";l.faces.length>0?(l={materialName:le,faces:[]},c.push(l)):l.materialName=le}else if(xe==="f"){let le=[];for(let ge=1;ge<Qe.length;ge++){let be=Qe[ge];if(!be)continue;let we=be.split("/"),_e=Number.parseInt(we[0]??"0",10),Ge=we[1]&&we[1].length>0?Number.parseInt(we[1],10):0,Ue=we[2]&&we[2].length>0?Number.parseInt(we[2],10):0;_e<0&&(_e=i.length+_e+1),Ge<0&&(Ge=s.length+Ge+1),Ue<0&&(Ue=a.length+Ue+1),le.push({v:_e-1,vt:Ge-1,vn:Ue-1})}if(le.length>=3)for(let ge=1;ge<le.length-1;ge++){let be=le[0],we=le[ge],_e=le[ge+1];be&&we&&_e&&l.faces.push([be,we,_e])}}}let p=1/0,f=1/0,d=1/0,h=-1/0,I=-1/0,b=-1/0;for(let y of i){let[ye,Qe,xe]=y;ye===void 0||Qe===void 0||xe===void 0||(ye<p&&(p=ye),Qe<f&&(f=Qe),xe<d&&(d=xe),ye>h&&(h=ye),Qe>I&&(I=Qe),xe>b&&(b=xe))}Number.isFinite(p)||(p=-1,f=-1,d=-1,h=1,I=1,b=1);let Q=(p+h)*.5,m=(f+I)*.5,w=(d+b)*.5,v=Math.max(1e-4,h-p),S=Math.max(1e-4,I-f),N=Math.max(1e-4,b-d),_=Math.max(v,S,N),G=1;o.normalizeSize&&o.normalizeSize>0&&(G=o.normalizeSize/_),typeof o.scale=="number"&&(G*=o.scale);let j=o.center??!1,R=j?Q:0,K=j?m:0,z=j?w:0,J=[];for(let y=0;y<c.length;y++){let ye=c[y];if(!ye||ye.faces.length===0)continue;let Qe=new Map,xe=[],le=[],ge=[],be=[],we=!1;for(let Ue of ye.faces)for(let Me of Ue){let He=`${Me.v}_${Me.vt}_${Me.vn}`,Te=Qe.get(He);if(Te===void 0){Te=xe.length/3,Qe.set(He,Te);let je=i[Me.v]??[0,0,0],Le=((je[0]??0)-R)*G,Je=((je[1]??0)-K)*G,nt=((je[2]??0)-z)*G;if(xe.push(Le,Je,nt),Me.vt>=0&&s[Me.vt]){let qe=s[Me.vt];ge.push(qe[0]??0,1-(qe[1]??0))}else ge.push(0,0);if(Me.vn>=0&&a[Me.vn]){we=!0;let qe=a[Me.vn];le.push(qe[0]??0,qe[1]??0,qe[2]??0)}else le.push(0,0,0)}be.push(Te)}if(!we||o.smoothNormals){let Ue=new Float32Array(xe.length);for(let Me=0;Me<be.length;Me+=3){let He=be[Me],Te=be[Me+1],je=be[Me+2],Le=[xe[He*3],xe[He*3+1],xe[He*3+2]],Je=[xe[Te*3],xe[Te*3+1],xe[Te*3+2]],nt=[xe[je*3],xe[je*3+1],xe[je*3+2]],qe=Z.subtract(Je,Le),yt=Z.subtract(nt,Le),ze=Z.cross(qe,yt);Ue[He*3]+=ze[0],Ue[He*3+1]+=ze[1],Ue[He*3+2]+=ze[2],Ue[Te*3]+=ze[0],Ue[Te*3+1]+=ze[1],Ue[Te*3+2]+=ze[2],Ue[je*3]+=ze[0],Ue[je*3+1]+=ze[1],Ue[je*3+2]+=ze[2]}for(let Me=0;Me<xe.length/3;Me++){let He=Ue[Me*3],Te=Ue[Me*3+1],je=Ue[Me*3+2],Le=Math.hypot(He,Te,je)||1;le[Me*3]=He/Le,le[Me*3+1]=Te/Le,le[Me*3+2]=je/Le}}let Ge=xe.length/3>65535?new Uint32Array(be):new Uint16Array(be);J.push({id:`mesh_${y}`,name:ye.materialName,positions:new Float32Array(xe),normals:new Float32Array(le),uvs:new Float32Array(ge),indices:Ge,materialName:ye.materialName})}let W=(p-R)*G,X=(f-K)*G,Ae=(d-z)*G,re=(h-R)*G,oe=(I-K)*G,ne=(b-z)*G,ie=re-W,he=oe-X,F=ne-Ae,Be=(W+re)*.5,Se=(X+oe)*.5,Pe=(Ae+ne)*.5,Ie=Math.hypot(ie,he,F)*.5;return{meshes:J,materials:u,animations:[],bounds:{min:[W,X,Ae],max:[re,oe,ne],center:[Be,Se,Pe],size:[ie,he,F],boundingSphereRadius:Ie}}}static parseMtl(t){let r={},n=null,o=t.split(/\r?\n/);for(let A of o){let i=A.trim();if(!i||i.startsWith("#"))continue;let a=i.split(/\s+/),s=a[0]?.toLowerCase();if(s==="newmtl"){let c=a[1]??"default";n={name:c,diffuseColor:[1,1,1,1],specularColor:[1,1,1],ambientColor:[.2,.2,.2],shininess:32,opacity:1},r[c]=n}else if(n)if(s==="kd"){let c=Number.parseFloat(a[1]??"1"),l=Number.parseFloat(a[2]??"1"),u=Number.parseFloat(a[3]??"1");n.diffuseColor=[c,l,u,n.diffuseColor?.[3]??1]}else if(s==="ks"){let c=Number.parseFloat(a[1]??"1"),l=Number.parseFloat(a[2]??"1"),u=Number.parseFloat(a[3]??"1");n.specularColor=[c,l,u],n.specularIntensity=(c+l+u)/3}else if(s==="ka"){let c=Number.parseFloat(a[1]??"0.2"),l=Number.parseFloat(a[2]??"0.2"),u=Number.parseFloat(a[3]??"0.2");n.ambientColor=[c,l,u]}else if(s==="ns")n.shininess=Number.parseFloat(a[1]??"32");else if(s==="d"||s==="tr"){let c=Number.parseFloat(a[1]??"1");n.opacity=s==="d"?c:1-c,n.diffuseColor&&(n.diffuseColor[3]=n.opacity)}else if(s==="map_kd"){n.diffuseTexture=e.mapFileName(a);let c=a.findIndex(l=>l.toLowerCase()==="-clamp");n.textureWrap=c>0&&a[c+1]?.toLowerCase()==="on"?"clamp":"repeat"}else(s==="norm"||s==="map_kn")&&(n.normalTexture=e.mapFileName(a))}return r}static MAP_OPTION_ARGS={"-blendu":1,"-blendv":1,"-cc":1,"-clamp":1,"-texres":1,"-bm":1,"-boost":1,"-imfchan":1,"-type":1,"-mm":2};static mapFileName(t){let r=1;for(;r<t.length&&t[r]?.startsWith("-");){let n=t[r].toLowerCase();if(r++,n==="-o"||n==="-s"||n==="-t")for(let o=0;o<3&&r<t.length&&!Number.isNaN(Number(t[r]));o++)r++;else r+=e.MAP_OPTION_ARGS[n]??0}return t.slice(r).join(" ")}static loadTextures(t,r){if(!r)return t;for(let n of Object.values(t)){if(n.diffuseTexture&&!n.diffuseTextureBuffer){let o=$n(n.diffuseTexture,r);o?(n.diffuseTextureBuffer=o.bytes,n.diffuseTextureMime=o.mime):Zr("ObjLoader",n.name,n.diffuseTexture)}if(n.normalTexture&&!n.normalTextureBuffer){let o=$n(n.normalTexture,r);o?n.normalTextureBuffer=o.bytes:Zr("ObjLoader",n.name,n.normalTexture)}}return t}};function Wu(e,t,r={}){return eo.parse(e,t,r)}function qu(e){return eo.parseMtl(e)}function to(e,t,r={}){let n;if(typeof e!="string")n=new TextDecoder().decode(e);else{let o=e.trim();if(!(o.startsWith("v ")||o.startsWith("#")||o.includes(`
2
- v `)||o.includes("\rv "))&&typeof Re<"u"&&Re.existsSync)try{let i=e.startsWith("file://")?e.slice(7):e;try{i=decodeURIComponent(i)}catch{}Re.existsSync(i)?(n=Re.readFileSync(i,"utf-8"),r={basePath:r.basePath??$e.dirname(i),...r}):n=e}catch{n=e}else n=e}return eo.parse(n,t,r)}$();Pt();var Ca=iA(ma(),1);$();function hr(e,t,r){let n=o=>[e[o*3],e[o*3+1],e[o*3+2]];for(let o=0;o<t.length;o+=3){let A=t[o],i=t[o+1],a=t[o+2],s=n(A),c=Z.cross(Z.subtract(n(i),s),Z.subtract(n(a),s));for(let l of[A,i,a])r[l*3]+=c[0],r[l*3+1]+=c[1],r[l*3+2]+=c[2]}for(let o=0;o<r.length;o+=3){let A=r[o],i=r[o+1],a=r[o+2],s=Math.hypot(A,i,a)||1;r[o]=A/s,r[o+1]=i/s,r[o+2]=a/s}}function jt(...e){let t=1/0,r=1/0,n=1/0,o=-1/0,A=-1/0,i=-1/0;for(let a of e)for(let s=0;s<a.length;s+=3){let c=a[s],l=a[s+1],u=a[s+2];c<t&&(t=c),c>o&&(o=c),l<r&&(r=l),l>A&&(A=l),u<n&&(n=u),u>i&&(i=u)}return Number.isFinite(t)||(t=r=n=0,o=A=i=0),{min:[t,r,n],max:[o,A,i],center:[(t+o)*.5,(r+A)*.5,(n+i)*.5],size:[o-t,A-r,i-n]}}function Dt(e,t){let r=Math.max(...e.size,1e-4),n=1;t.normalizeSize&&t.normalizeSize>0&&(n=t.normalizeSize/r);let o=[n,n,n];return typeof t.scale=="number"?(o[0]*=t.scale,o[1]*=t.scale,o[2]*=t.scale):Array.isArray(t.scale)&&(o[0]*=t.scale[0],o[1]*=t.scale[1],o[2]*=t.scale[2]),{offset:t.center?e.center:[0,0,0],scale:o}}function Vt(e,{offset:t,scale:r}){let n=new Float32Array(e.length);for(let o=0;o<e.length;o+=3)n[o]=(e[o]-t[0])*r[0],n[o+1]=(e[o+1]-t[1])*r[1],n[o+2]=(e[o+2]-t[2])*r[2];return n}function Jt(e,t){return t>65535?new Uint32Array(e):new Uint16Array(e)}function Kt(e,{offset:t,scale:r}){let n=[(e.min[0]-t[0])*r[0],(e.min[1]-t[1])*r[1],(e.min[2]-t[2])*r[2]],o=[(e.max[0]-t[0])*r[0],(e.max[1]-t[1])*r[1],(e.max[2]-t[2])*r[2]];return{min:n,max:o,center:[(n[0]+o[0])*.5,(n[1]+o[1])*.5,(n[2]+o[2])*.5],size:[o[0]-n[0],o[1]-n[1],o[2]-n[2]],boundingSphereRadius:Math.hypot(o[0]-n[0],o[1]-n[1],o[2]-n[2])*.5}}$();function Xs(e,t,r){let[n,o,A,i]=t,a=n*n,s=o*o,c=A*A,l=n*o,u=n*A,g=o*A,p=i*n,f=i*o,d=i*A;return[(1-2*(s+c))*r[0],2*(l+d)*r[0],2*(u-f)*r[0],0,2*(l-d)*r[1],(1-2*(a+c))*r[1],2*(g+p)*r[1],0,2*(u+f)*r[2],2*(g-p)*r[2],(1-2*(a+s))*r[2],0,e[0],e[1],e[2],1]}function Ia(e){let t=Math.hypot(e[0],e[1],e[2],e[3])||1;return[e[0]/t,e[1]/t,e[2]/t,e[3]/t]}function Zs(e,t,r){let n=e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3],o=n<0?-1:1;if(n*=o,n>.9995)return Ia([e[0]+(o*t[0]-e[0])*r,e[1]+(o*t[1]-e[1])*r,e[2]+(o*t[2]-e[2])*r,e[3]+(o*t[3]-e[3])*r]);let A=Math.acos(n),i=Math.sin(A),a=Math.sin((1-r)*A)/i,s=o*Math.sin(r*A)/i;return[e[0]*a+t[0]*s,e[1]*a+t[1]*s,e[2]*a+t[2]*s,e[3]*a+t[3]*s]}function $s(e,t){let r=0,n=e.length-1;for(;r<n;){let o=r+n+1>>1;(e[o]??0)<=t?r=o:n=o-1}return r}function Vr(e,t,r,n,o=1){let A=n?(t*3+o)*r:t*r;return Array.from(e.subarray(A,A+r))}function vo(e,t,r,n,o=!1){let{times:A}=e,i=e.interpolation==="cubic",a=A.length-1;if(n<=(A[0]??0))return Vr(t,0,r,i);if(n>=(A[a]??0))return Vr(t,a,r,i);let s=$s(A,n);if(e.interpolation==="step")return Vr(t,s,r,i);let c=A[s]??0,l=(A[s+1]??c)-c,u=l>0?(n-c)/l:0,g=Vr(t,s,r,i),p=Vr(t,s+1,r,i);if(i){let f=Vr(t,s,r,!0,2),d=Vr(t,s+1,r,!0,0),h=u*u,I=h*u,b=g.map((Q,m)=>(2*I-3*h+1)*Q+(I-2*h+u)*l*(f[m]??0)+(-2*I+3*h)*(p[m]??0)+(I-h)*l*(d[m]??0));return o?Ia(b):b}return o?Zs(g,p,u):g.map((f,d)=>f+((p[d]??f)-f)*u)}function Ag(e,t,r){let n=e.morphTargets?.length??0;if(!n)return[];let o=t?.tracks.find(A=>A.node===e.node&&A.weights&&A.times.length>0);return o?.weights?vo(o,o.weights,n,r):e.morphWeights??Array(n).fill(0)}function ec(e,t,r){let n=e.map(a=>[...a.translation]),o=e.map(a=>[...a.rotation]),A=e.map(a=>[...a.scale]),i=new Map(e.map((a,s)=>[a.name,s]));for(let a of t?.tracks??[]){let s=a.node??i.get(a.nodeName);s===void 0||!a.times.length||(a.translations&&(n[s]=vo(a,a.translations,3,r)),a.rotations&&(o[s]=vo(a,a.rotations,4,r,!0)),a.scales&&(A[s]=vo(a,a.scales,3,r)))}return e.map((a,s)=>a.matrix??Xs(n[s],o[s],A[s]))}function Do(e,t,r){let n=e.nodes??[],o=ec(n,t,r),A=new Array(n.length),i=a=>{let s=A[a];if(s)return s;let c=n[a].parent,l=c<0?o[a]:Ee.multiply(i(c),o[a]);return A[a]=l,l};return n.map((a,s)=>i(s))}function ig(e,t,r){let n=e.skins?.[t];if(!n)throw new Error(`model has no skin ${t}`);let o=new Float32Array(Math.max(1,n.joints.length)*16);for(let A=0;A<Math.max(1,n.joints.length);A++){let i=n.joints[A];if(i===void 0){o.set(Ee.identity(),A*16);continue}let a=Array.from(n.inverseBindMatrices.subarray(A*16,A*16+16));o.set(Ee.multiply(r[i],a),A*16)}return o}var Jr=class e{static FBX_KTIME=46186158e3;static parse(t,r={}){let n=typeof t=="string"?e.parseAscii(t):e.isBinary(t)?e.parseBinary(t):e.parseAscii(new TextDecoder().decode(t));return e.buildModelFromTree(n,r)}static isBinary(t){let r=t instanceof Uint8Array?t:new Uint8Array(t);if(r.length<27)return!1;let n="Kaydara FBX Binary \0\0";for(let o=0;o<n.length;o++)if(r[o]!==n.charCodeAt(o))return!1;return!0}static parseBinary(t){let r=t instanceof Uint8Array?t:new Uint8Array(t),n=new DataView(r.buffer,r.byteOffset,r.byteLength),A=n.getUint32(23,!0)>=7500,i=27,a={name:"Root",props:[],children:[]},s=()=>{if(i>=r.byteLength)return null;let c,l,u;if(A){if(i+25>r.byteLength)return null;c=Number(n.getBigUint64(i,!0)),l=Number(n.getBigUint64(i+8,!0)),u=n.getUint8(i+24),i+=25}else{if(i+13>r.byteLength)return null;c=n.getUint32(i,!0),l=n.getUint32(i+4,!0),u=n.getUint8(i+12),i+=13}if(c===0)return null;let g=new TextDecoder().decode(r.subarray(i,i+u));i+=u;let p=[];for(let d=0;d<l;d++){let h=String.fromCharCode(r[i]);switch(i+=1,h){case"Y":{p.push(n.getInt16(i,!0)),i+=2;break}case"C":case"B":{p.push(n.getUint8(i)!==0),i+=1;break}case"I":{p.push(n.getInt32(i,!0)),i+=4;break}case"F":{p.push(n.getFloat32(i,!0)),i+=4;break}case"D":{p.push(n.getFloat64(i,!0)),i+=8;break}case"L":{p.push(Number(n.getBigInt64(i,!0))),i+=8;break}case"S":{let I=n.getUint32(i,!0);i+=4;let b=new TextDecoder().decode(r.subarray(i,i+I));p.push(b),i+=I;break}case"R":{let I=n.getUint32(i,!0);i+=4;let b=r.subarray(i,i+I);p.push(b),i+=I;break}case"f":case"d":case"i":case"l":case"b":case"c":{let I=n.getUint32(i,!0),b=n.getUint32(i+4,!0),Q=n.getUint32(i+8,!0);i+=12;let m;if(b===1){let v=r.subarray(i,i+Q);m=(0,Ca.inflateSync)(v),i+=Q}else{let S=I*(h==="d"||h==="l"?8:h==="f"||h==="i"?4:1);m=r.subarray(i,i+S),i+=S}let w=new DataView(m.buffer,m.byteOffset,m.byteLength);if(h==="f"){let v=new Float32Array(I);for(let S=0;S<I;S++)v[S]=w.getFloat32(S*4,!0);p.push(v)}else if(h==="d"){let v=new Float64Array(I);for(let S=0;S<I;S++)v[S]=w.getFloat64(S*8,!0);p.push(v)}else if(h==="i"){let v=new Int32Array(I);for(let S=0;S<I;S++)v[S]=w.getInt32(S*4,!0);p.push(v)}else if(h==="l"){let v=new Float64Array(I);for(let S=0;S<I;S++)v[S]=Number(w.getBigInt64(S*8,!0));p.push(v)}else if(h==="b"){let v=new Uint8Array(I);for(let S=0;S<I;S++)v[S]=w.getUint8(S);p.push(v)}else p.push(m);break}default:break}}let f=[];for(;i<c;){let d=s();if(d)f.push(d);else break}return i=c,{name:g,props:p,children:f}};for(;i<r.byteLength-(A?25:13);){let c=s();if(c)a.children.push(c);else break}return a}static parseAscii(t){let r={name:"Root",props:[],children:[]},n=[r],o=t.split(/\r?\n/);for(let A=0;A<o.length;A++){let i=o[A]?.trim();if(!i||i.startsWith(";"))continue;if(i==="}"){n.length>1&&n.pop();continue}let a=i.indexOf(":");if(a===-1)continue;let s=i.substring(0,a).trim(),c=i.substring(a+1).trim(),l=c.endsWith("{"),u=l?c.slice(0,-1).trim():c,g=[];if(u){let d=u.split(",").map(h=>h.trim());for(let h of d)h.startsWith('"')&&h.endsWith('"')?g.push(h.slice(1,-1)):Number.isNaN(Number(h))?g.push(h):g.push(Number(h))}let p={name:s,props:g,children:[]},f=n[n.length-1];f&&f.children.push(p),l&&n.push(p)}return r}static textureSlot(t){let r=t.toLowerCase();if(r==="diffusecolor"||r==="diffuse"||r.endsWith("|basecolor")||r.endsWith("|base_color")||r==="basecolor")return"diffuse";if(r==="normalmap"||r.endsWith("|normalcamera")||r.endsWith("|bump_map"))return"normal"}static attachTextures(t,r,n,o,A){let i=(a,s)=>{let c=a?.children.find(l=>l.name===s)?.props[0];return typeof c=="string"&&c?c:void 0};for(let a of o){if(a.parentId!==r||!a.propName)continue;let s=e.textureSlot(a.propName),c=n.get(a.childId);if(!s||c?.node.name!=="Texture"||(s==="diffuse"?t.diffuseTextureBuffer:t.normalTextureBuffer))continue;let l=o.filter(f=>f.parentId===a.childId&&!f.propName).map(f=>n.get(f.childId)?.node).find(f=>f?.name==="Video"),u=i(c.node,"RelativeFilename")??i(c.node,"FileName")??i(l,"RelativeFilename")??i(l,"Filename");if(u&&!xo(u)){Zr("FbxLoader",t.name,u);continue}let g,p=l?.children.find(f=>f.name==="Content")?.props[0];if(p instanceof Uint8Array&&p.length>0?g=p:u&&(g=$n(u,A)?.bytes),!g){u&&Zr("FbxLoader",t.name,u);continue}s==="diffuse"?(t.diffuseTextureBuffer=g,t.diffuseTextureMime=Zn(u??""),u&&(t.diffuseTexture=u),t.textureWrap="repeat"):(t.normalTextureBuffer=g,u&&(t.normalTexture=u))}}static buildModelFromTree(t,r={}){let n=t.children.find(_=>_.name==="Objects"),o=t.children.find(_=>_.name==="Connections"),A=new Map;if(n)for(let _ of n.children){let G=_.props[0]??0,R=String(_.props[1]??"").split("::"),K=R.length>1?R[1]:R[0],z=String(_.props[2]??_.name);A.set(G,{id:G,name:K,type:z,node:_})}let i=[];if(o){for(let _ of o.children)if(_.name==="C"||_.name==="Connect"){let G=String(_.props[0]),j=_.props[1]??0,R=_.props[2]??0,K=G==="OP"?String(_.props[3]):void 0;i.push({childId:j,parentId:R,propName:K})}}let a=_=>{for(let G of i){let j=G.parentId===_?A.get(G.childId):void 0;if(j?.node.name==="Material"&&!G.propName)return j.name}for(let G of i)if(!(G.childId!==_||G.propName))for(let j of i){if(j.parentId!==G.parentId||j.propName)continue;let R=A.get(j.childId);if(R?.node.name==="Material")return R.name}},s=[],c={};function l(_){if(!_)return[];if(_.props[0]instanceof Float32Array||_.props[0]instanceof Float64Array||_.props[0]instanceof Int32Array||Array.isArray(_.props[0]))return _.props[0];let G=_.children.find(j=>j.name==="a");return G&&G.props.length>0?G.props:Array.isArray(_.props)&&_.props.length>0&&typeof _.props[0]=="number"?_.props:[]}let u=[...A.values()].filter(_=>_.node.name==="Model").map(_=>_.id),g=new Map(u.map((_,G)=>[_,G])),p=u.map(_=>{let G=A.get(_),j=i.find(R=>R.childId===_&&!R.propName&&g.has(R.parentId));return{name:G.name,parent:j?g.get(j.parentId):-1,translation:ro(G.node,"Lcl Translation",0),rotation:ba(G.node,Mo(ro(G.node,"Lcl Rotation",0),Qa(G.node))),scale:ro(G.node,"Lcl Scaling",1)}}),f=_=>i.find(G=>G.childId===_&&!G.propName&&g.has(G.parentId))?.parentId,d=[];for(let[_,G]of A)if(G.node.name==="Geometry"&&(G.type==="Mesh"||G.node.props[2]==="Mesh"||G.type==="")){let j=G.node,R=j.children.find(le=>le.name==="Vertices"),K=j.children.find(le=>le.name==="PolygonVertexIndex");if(!R||!K)continue;let z=l(R),J=l(K),W=(le,ge,be,we)=>{let _e=j.children.find(Ge=>Ge.name===le);if(_e)return tc(_e,l(_e.children.find(Ge=>Ge.name===ge)),l(_e.children.find(Ge=>Ge.name===be)),we)},X=W("LayerElementNormal","Normals","NormalsIndex",3),Ae=W("LayerElementUV","UV","UVIndex",2),re=[],oe=[],ne=0;for(let le=0;le<J.length;le++){let ge=J[le];if(oe.push({cp:ge<0?-(ge+1):ge,pv:le}),!(ge>=0)){for(let be=1;be<oe.length-1;be++)for(let we of[oe[0],oe[be],oe[be+1]])re.push({...we,poly:ne});oe=[],ne++}}let ie=re.length,he=new Float32Array(ie*3),F=new Float32Array(ie*3),Be=new Float32Array(ie*2),Se=new Array(ie);re.forEach(({cp:le,pv:ge,poly:be},we)=>{he[we*3]=z[le*3]??0,he[we*3+1]=z[le*3+1]??0,he[we*3+2]=z[le*3+2]??0;let _e=X?.(le,ge,be);F.set(_e??[0,0,1],we*3);let Ge=Ae?.(le,ge,be);Be[we*2]=Ge?.[0]??0,Be[we*2+1]=1-(Ge?.[1]??0),Se[we]=we}),(!X||r.smoothNormals)&&(F.fill(0),hr(he,Se,F));let Pe=i.find(le=>le.parentId===_&&A.get(le.childId)?.node.name==="Deformer"&&A.get(le.childId)?.node.props[2]==="Skin"),Ie,y,ye;if(Pe){let le=[],ge=[],be=new Map;for(let we of i){let _e=A.get(we.childId);if(we.parentId!==Pe.childId||_e?.node.name!=="Deformer"||_e.node.props[2]!=="Cluster")continue;let Ge=i.find(Le=>Le.parentId===_e.id&&g.has(Le.childId))?.childId;if(Ge===void 0)continue;let Ue=le.length;le.push(g.get(Ge));let Me=Ea(_e.node,"Transform"),He=Ea(_e.node,"TransformLink");ge.push(...Ee.multiply(Ee.invert(He)??Ee.identity(),Me));let Te=l(_e.node.children.find(Le=>Le.name==="Indexes")),je=l(_e.node.children.find(Le=>Le.name==="Weights"));for(let Le=0;Le<Te.length;Le++){let Je=Number(je[Le]??0);if(!(Je>0))continue;let nt=Number(Te[Le]),qe=be.get(nt)??[];qe.push([Ue,Je]),be.set(nt,qe)}}le.length>0&&(ye=d.length,d.push({joints:le,inverseBindMatrices:new Float32Array(ge)}),Ie=new Float32Array(ie*4),y=new Float32Array(ie*4),re.forEach(({cp:we},_e)=>{let Ge=(be.get(we)??[]).sort((Me,He)=>He[1]-Me[1]).slice(0,4),Ue=Ge.reduce((Me,[,He])=>Me+He,0);Ge.forEach(([Me,He],Te)=>{Ie[_e*4+Te]=Me,y[_e*4+Te]=Ue>0?He/Ue:0})}))}let Qe=f(_),xe=ie>65535;s.push({id:`fbx_mesh_${_}`,name:G.name,positions:he,normals:F,uvs:Be,indices:xe?new Uint32Array(Se):new Uint16Array(Se),jointIndices:Ie,jointWeights:y,materialName:a(_)??G.name,node:Qe!==void 0?g.get(Qe):void 0,skin:ye})}for(let[,_]of A)if(_.node.name==="Material"){let j=_.node.children.find(W=>W.name==="Properties70"),R=[1,1,1,1],K=32,z=1;if(j){for(let W of j.children)if(W.name==="P"){let X=String(W.props[0]);if(X==="DiffuseColor"||X==="Color"){let Ae=Number(W.props[4]??1),re=Number(W.props[5]??1),oe=Number(W.props[6]??1);R=[Ae,re,oe,1]}else X==="Shininess"||X==="ShininessExponent"?K=Number(W.props[4]??32):X==="Opacity"&&(z=Number(W.props[4]??1),R[3]=z)}}let J={name:_.name,diffuseColor:R,shininess:K,opacity:z};e.attachTextures(J,_.id,A,i,r.basePath),c[_.name]=J}let h=[];for(let[_,G]of A)if(G.node.name==="AnimationStack"){let j=G.name||"Take 001",R=[],K=i.find(J=>J.parentId===_&&A.get(J.childId)?.node.name==="AnimationLayer");if(K){let J=i.filter(X=>X.parentId===K.childId&&A.get(X.childId)?.node.name==="AnimationCurveNode"),W=new Map;for(let X of J){let Ae=A.get(X.childId);if(!Ae)continue;let re=i.find(Be=>Be.childId===Ae.id&&A.get(Be.parentId)?.node.name==="Model"),oe=re?A.get(re.parentId):void 0,ne=ya(re?.propName)??ya(Ae.name);if(!ne)continue;let ie=`${oe?.id??Ae.id}|${ne}`,he=W.get(ie);if(!he){let Be=oe?.node;he={nodeName:oe?.name??Ae.name,modelId:oe?.id,model:Be,kind:ne,defaults:nc(Be,Ae.node,ne),channels:[void 0,void 0,void 0]},W.set(ie,he)}i.filter(Be=>Be.parentId===Ae.id&&A.get(Be.childId)?.node.name==="AnimationCurve").forEach((Be,Se)=>{let Pe=rc(Be.propName)??Se;if(Pe>2)return;let Ie=A.get(Be.childId)?.node,y=l(Ie?.children.find(xe=>xe.name==="KeyTime")),ye=l(Ie?.children.find(xe=>xe.name==="KeyValueFloat")),Qe=Math.min(y.length,ye.length);Qe!==0&&(he.channels[Pe]={times:Array.from(y.slice(0,Qe),xe=>Number(xe)),values:Array.from(ye.slice(0,Qe),xe=>Number(xe))})})}for(let X of W.values()){let Ae=ic(X);if(Ae){if(X.modelId!==void 0&&(Ae.node=g.get(X.modelId)),Ae.rotations&&X.model)for(let re=0;re<Ae.rotations.length;re+=4){let oe=Array.from(Ae.rotations.subarray(re,re+4));Ae.rotations.set(ba(X.model,oe),re)}R.push(Ae)}}}let z=1;for(let J of R)if(J.times.length>0){let W=J.times[J.times.length-1]??0;W>z&&(z=W)}h.push({name:j,duration:z,fps:30,tracks:R})}let I={meshes:s,materials:c,animations:h,nodes:p,skins:d,bounds:{min:[0,0,0],max:[0,0,0],center:[0,0,0],size:[0,0,0],boundingSphereRadius:0}},b=Do(I,void 0,0),Q=[1/0,1/0,1/0],m=[-1/0,-1/0,-1/0];for(let _ of s){let G=_.node!==void 0?b[_.node]:void 0;for(let j=0;j<_.positions.length;j+=3){let R=[_.positions[j],_.positions[j+1],_.positions[j+2]],K=G?Ee.projectPoint(G,R):R;for(let z=0;z<3;z++)K[z]<Q[z]&&(Q[z]=K[z]),K[z]>m[z]&&(m[z]=K[z])}}Number.isFinite(Q[0])||(Q.fill(-1),m.fill(1));let{offset:w,scale:v}=Dt({min:Q,max:m,center:[(Q[0]+m[0])*.5,(Q[1]+m[1])*.5,(Q[2]+m[2])*.5],size:[m[0]-Q[0],m[1]-Q[1],m[2]-Q[2]]},r);I.rootTransform=Ee.multiply(Ee.scale(v[0],v[1],v[2]),Ee.translate(-w[0],-w[1],-w[2]));let S=[0,1,2].map(_=>(Q[_]-w[_])*v[_]),N=[0,1,2].map(_=>(m[_]-w[_])*v[_]);return I.bounds={min:S,max:N,center:[(S[0]+N[0])*.5,(S[1]+N[1])*.5,(S[2]+N[2])*.5],size:[N[0]-S[0],N[1]-S[1],N[2]-S[2]],boundingSphereRadius:Math.hypot(N[0]-S[0],N[1]-S[1],N[2]-S[2])*.5},I}};function ro(e,t,r){let n=$r(e,t);return[0,1,2].map(o=>{let A=n?.[o];return A!==void 0&&Number.isFinite(A)?A:r})}function Ba(e,t){return[e[3]*t[0]+e[0]*t[3]+e[1]*t[2]-e[2]*t[1],e[3]*t[1]-e[0]*t[2]+e[1]*t[3]+e[2]*t[0],e[3]*t[2]+e[0]*t[1]-e[1]*t[0]+e[2]*t[3],e[3]*t[3]-e[0]*t[0]-e[1]*t[1]-e[2]*t[2]]}function ba(e,t){let r=$r(e,"PreRotation"),n=$r(e,"PostRotation"),o=t;if(r&&(o=Ba(Mo(ro(e,"PreRotation",0)),o)),n){let A=Mo(ro(e,"PostRotation",0));o=Ba(o,[-A[0],-A[1],-A[2],A[3]])}return o}function Ea(e,t){let r=e.children.find(A=>A.name===t),n=r?.children.find(A=>A.name==="a")?.props??r?.props,o=n?.[0]instanceof Float64Array||n?.[0]instanceof Float32Array?Array.from(n[0]):(n??[]).map(Number);return o.length===16?o:Ee.identity()}function tc(e,t,r,n){if(t.length===0)return;let o=a=>String(e.children.find(s=>s.name===a)?.props[0]??""),A=o("MappingInformationType"),i=/^Index/.test(o("ReferenceInformationType"))&&r.length>0;return(a,s,c)=>{let l=A==="ByPolygonVertex"?s:A==="ByPolygon"?c:A==="AllSame"?0:a;return i&&(l=Number(r[l]??l)),Array.from({length:n},(u,g)=>Number(t[l*n+g]??0))}}function ya(e){switch(e){case"Lcl Translation":case"T":return"T";case"Lcl Rotation":case"R":return"R";case"Lcl Scaling":case"S":return"S";default:return}}function rc(e){switch(e){case"d|X":return 0;case"d|Y":return 1;case"d|Z":return 2;default:return}}function $r(e,t){let n=e?.children.find(o=>o.name==="Properties70")?.children.find(o=>o.name==="P"&&o.props[0]===t);if(n)return n.props.slice(4).map(o=>Number(o))}function nc(e,t,r){let n=r==="S"?1:0,o=$r(e,r==="T"?"Lcl Translation":r==="R"?"Lcl Rotation":"Lcl Scaling"),A=[n,n,n];for(let i=0;i<3;i++){let a=o?.[i],s=$r(t,`d|${"XYZ"[i]}`)?.[0],c=a??s;c!==void 0&&Number.isFinite(c)&&(A[i]=c)}return A}var oc=["XYZ","XZY","YZX","YXZ","ZXY","ZYX"];function Qa(e){let t=$r(e,"RotationOrder")?.[0]??0;return oc[t]??"XYZ"}function Mo(e,t="XYZ"){let r=[0,0,0,1];for(let n of t){let o="XYZ".indexOf(n),A=(e[o]??0)*Math.PI/360,i=Math.sin(A),a=[0,0,0,Math.cos(A)];a[o]=i,r=[a[3]*r[0]+a[0]*r[3]+a[1]*r[2]-a[2]*r[1],a[3]*r[1]-a[0]*r[2]+a[1]*r[3]+a[2]*r[0],a[3]*r[2]+a[0]*r[1]-a[1]*r[0]+a[2]*r[3],a[3]*r[3]-a[0]*r[0]-a[1]*r[1]-a[2]*r[2]]}return r}function Ac(e,t){let{times:r,values:n}=e,o=r.length-1;if(t<=r[0])return n[0];if(t>=r[o])return n[o];let A=0;for(;A<o-1&&r[A+1]<=t;)A++;let i=r[A],a=r[A+1],s=a>i?(t-i)/(a-i):0;return n[A]+(n[A+1]-n[A])*s}function ic(e){let t=new Set;for(let s of e.channels)for(let c of s?.times??[])t.add(c);if(t.size===0)return;let r=[...t].sort((s,c)=>s-c),n=new Float32Array(r.length),o=e.kind==="R",A=new Float32Array(r.length*(o?4:3)),i=o?Qa(e.model):"XYZ",a;return r.forEach((s,c)=>{n[c]=s/Jr.FBX_KTIME;let l=[0,1,2].map(g=>{let p=e.channels[g];return p?Ac(p,s):e.defaults[g]});if(!o){A.set(l,c*3);return}let u=Mo(l,i);if(a&&a[0]*u[0]+a[1]*u[1]+a[2]*u[2]+a[3]*u[3]<0)for(let g=0;g<4;g++)u[g]=-u[g];a=u,A.set(u,c*4)}),{nodeName:e.nodeName,times:n,translations:e.kind==="T"?A:void 0,rotations:o?A:void 0,scales:e.kind==="S"?A:void 0}}function dg(e,t={}){return Jr.parse(e,t)}function no(e,t={}){let r=e;if(typeof e=="string"){let n=e.trim();if(!(n.includes("FBXHeaderExtension")||n.includes("Kaydara FBX"))&&typeof Re<"u"&&Re.existsSync)try{let A=e.startsWith("file://")?e.slice(7):e;try{A=decodeURIComponent(A)}catch{}if(Re.existsSync(A)){let i=Re.readFileSync(A);r=new Uint8Array(i.buffer,i.byteOffset,i.byteLength),t={basePath:$e.dirname(A),...t}}}catch{}}return Jr.parse(r,t)}$();$();var xa=`
1
+ import{p as co,q as Ni,u as lo,v as Ti,z as Jo}from"./chunk-52X7SURQ.mjs";import{c as _i}from"./chunk-CJ4CSVU3.mjs";import{a as Ci,c as Qi,i as xi,j as wi}from"./chunk-HOV6DDBZ.mjs";import{h as vi,l as Di}from"./chunk-RECQ74RP.mjs";import{e as Gi}from"./chunk-GXFYRMJZ.mjs";import{h as yi}from"./chunk-ULOFDFHJ.mjs";import{A as ki,j as ur,w as Ri,x as Fi,y as We,z as Ui}from"./chunk-64L4GUOF.mjs";import{r as Re,s as Pi,t as _t}from"./chunk-QEWDIPJ7.mjs";import{a as Jr}from"./chunk-354GX6IB.mjs";import{c as Mi,e as Si}from"./chunk-5RRKGN2U.mjs";import{o as Ze}from"./chunk-BDZ3TSOT.mjs";import{b as Vn,d as Vo,e as Ei,f as me,g as $}from"./chunk-Y4NIR77Z.mjs";var Yi=Vn((ou,zi)=>{$();var po=()=>new Proxy(function(){},{get:(e,t)=>t==="__esModule"?!0:t===Symbol.toPrimitive?()=>"":po(),apply:()=>po(),construct:()=>po()});zi.exports=po()});var na=Vn((Xo,Bo)=>{$();var L=L||{};L.scope={};L.ASSUME_ES2020=!1;L.ASSUME_ES6=L.ASSUME_ES2020;L.ASSUME_ES5=L.ASSUME_ES6;L.ASSUME_NO_NATIVE_MAP=!1;L.ASSUME_NO_NATIVE_SET=!1;L.ISOLATE_POLYFILLS=!1;L.FORCE_POLYFILL_PROMISE=!1;L.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION=!1;L.INSTRUMENT_ASYNC_CONTEXT=!0;L.objectCreate=L.ASSUME_ES5||typeof Object.create=="function"?Object.create:function(e){var t=function(){};return t.prototype=e,new t};L.defineProperty=L.ASSUME_ES5||typeof Object.defineProperties=="function"?Object.defineProperty:function(e,t,r){return e==Array.prototype||e==Object.prototype||(e[t]=r.value),e};L.getGlobal=function(e){e=[typeof globalThis=="object"&&globalThis,e,typeof window=="object"&&window,typeof self=="object"&&self,typeof globalThis=="object"&&globalThis];for(var t=0;t<e.length;++t){var r=e[t];if(r&&r.Math==Math)return r}throw Error("Cannot find global object")};L.global=L.ASSUME_ES2020?globalThis:L.getGlobal(Xo);L.IS_SYMBOL_NATIVE=typeof Symbol=="function"&&typeof Symbol("x")=="symbol";L.TRUST_ES6_POLYFILLS=!L.ISOLATE_POLYFILLS||L.IS_SYMBOL_NATIVE;L.polyfills={};L.propertyToPolyfillSymbol={};L.POLYFILL_PREFIX="$jscp$";L.TYPED_ARRAY_CLASSES=(function(){var e="Int8 Uint8 Uint8Clamped Int16 Uint16 Int32 Uint32 Float32 Float64".split(" ");return L.global.BigInt64Array&&(e.push("BigInt64"),e.push("BigUint64")),e})();L.polyfillTypedArrayMethod=function(e,t,r,n){if(t)for(var o=0;o<L.TYPED_ARRAY_CLASSES.length;o++){var A=L.TYPED_ARRAY_CLASSES[o]+"Array.prototype."+e;L.ISOLATE_POLYFILLS?L.polyfillIsolated(A,t,r,n):L.polyfillUnisolated(A,t,r,n)}};L.polyfill=function(e,t,r,n){t&&(L.ISOLATE_POLYFILLS?L.polyfillIsolated(e,t,r,n):L.polyfillUnisolated(e,t,r,n))};L.polyfillUnisolated=function(e,t,r,n){for(r=L.global,e=e.split("."),n=0;n<e.length-1;n++){var o=e[n];if(!(o in r))return;r=r[o]}e=e[e.length-1],n=r[e],t=t(n),t!=n&&t!=null&&L.defineProperty(r,e,{configurable:!0,writable:!0,value:t})};L.polyfillIsolated=function(e,t,r,n){var o=e.split(".");e=o.length===1,n=o[0],n=!e&&n in L.polyfills?L.polyfills:L.global;for(var A=0;A<o.length-1;A++){var i=o[A];if(!(i in n))return;n=n[i]}o=o[o.length-1],r=L.IS_SYMBOL_NATIVE&&r==="es6"?n[o]:null,t=t(r),t!=null&&(e?L.defineProperty(L.polyfills,o,{configurable:!0,writable:!0,value:t}):t!==r&&(L.propertyToPolyfillSymbol[o]===void 0&&(r=Math.random()*1e9>>>0,L.propertyToPolyfillSymbol[o]=L.IS_SYMBOL_NATIVE?L.global.Symbol(o):L.POLYFILL_PREFIX+r+"$"+o),L.defineProperty(n,L.propertyToPolyfillSymbol[o],{configurable:!0,writable:!0,value:t})))};L.getConstructImplementation=function(){function e(){function r(){}return new r,Reflect.construct(r,[],function(){}),new r instanceof r}if(L.TRUST_ES6_POLYFILLS&&typeof Reflect<"u"&&Reflect.construct){if(e())return Reflect.construct;var t=Reflect.construct;return function(r,n,o){return r=t(r,n),o&&Reflect.setPrototypeOf(r,o.prototype),r}}return function(r,n,o){return o===void 0&&(o=r),o=L.objectCreate(o.prototype||Object.prototype),Function.prototype.apply.call(r,o,n)||o}};L.construct={valueOf:L.getConstructImplementation}.valueOf();L.underscoreProtoCanBeSet=function(){var e={a:!0},t={};try{return t.__proto__=e,t.a}catch{}return!1};L.setPrototypeOf=L.ASSUME_ES6||L.TRUST_ES6_POLYFILLS&&typeof Object.setPrototypeOf=="function"?Object.setPrototypeOf:L.underscoreProtoCanBeSet()?function(e,t){if(e.__proto__=t,e.__proto__!==t)throw new TypeError(e+" is not extensible");return e}:null;L.inherits=function(e,t){if(e.prototype=L.objectCreate(t.prototype),e.prototype.constructor=e,L.ASSUME_ES6||L.setPrototypeOf){var r=L.setPrototypeOf;r(e,t)}else for(r in t)if(r!="prototype")if(Object.defineProperties){var n=Object.getOwnPropertyDescriptor(t,r);n&&Object.defineProperty(e,r,n)}else e[r]=t[r];e.superClass_=t.prototype};L.arrayIteratorImpl=function(e){var t=0;return function(){return t<e.length?{done:!1,value:e[t++]}:{done:!0}}};L.arrayIterator=function(e){return{next:L.arrayIteratorImpl(e)}};L.makeIterator=function(e){var t=typeof Symbol<"u"&&Symbol.iterator&&e[Symbol.iterator];if(t)return t.call(e);if(typeof e.length=="number")return L.arrayIterator(e);throw Error(String(e)+" is not an iterable or ArrayLike")};L.arrayFromIterator=function(e){for(var t,r=[];!(t=e.next()).done;)r.push(t.value);return r};L.arrayFromIterable=function(e){return e instanceof Array?e:L.arrayFromIterator(L.makeIterator(e))};L.createTemplateTagFirstArg=function(e){return L.createTemplateTagFirstArgWithRaw(e,e)};L.createTemplateTagFirstArgWithRaw=function(e,t){return e.raw=t,Object.freeze&&(Object.freeze(e),Object.freeze(t)),e};L.generator={};L.generator.ensureIteratorResultIsObject_=function(e){if(!(e instanceof Object))throw new TypeError("Iterator result "+e+" is not an object")};L.generator.Context=function(){this.isRunning_=!1,this.yieldAllIterator_=null,this.yieldResult=void 0,this.nextAddress=1,this.finallyAddress_=this.catchAddress_=0,this.finallyContexts_=this.abruptCompletion_=null};L.generator.Context.prototype.start_=function(){if(this.isRunning_)throw new TypeError("Generator is already running");this.isRunning_=!0};L.generator.Context.prototype.stop_=function(){this.isRunning_=!1};L.generator.Context.prototype.jumpToErrorHandler_=function(){this.nextAddress=this.catchAddress_||this.finallyAddress_};L.generator.Context.prototype.next_=function(e){this.yieldResult=e};L.generator.Context.prototype.throw_=function(e){this.abruptCompletion_={exception:e,isException:!0},this.jumpToErrorHandler_()};L.generator.Context.prototype.getNextAddressJsc=function(){return this.nextAddress};L.generator.Context.prototype.getNextAddressJsc=function(){return this.nextAddress};L.generator.Context.prototype.getYieldResultJsc=function(){return this.yieldResult};L.generator.Context.prototype.getYieldResultJsc=function(){return this.yieldResult};L.generator.Context.prototype.return=function(e){this.abruptCompletion_={return:e},this.nextAddress=this.finallyAddress_};L.generator.Context.prototype.return=L.generator.Context.prototype.return;L.generator.Context.prototype.jumpThroughFinallyBlocks=function(e){this.abruptCompletion_={jumpTo:e},this.nextAddress=this.finallyAddress_};L.generator.Context.prototype.jumpThroughFinallyBlocks=L.generator.Context.prototype.jumpThroughFinallyBlocks;L.generator.Context.prototype.yield=function(e,t){return this.nextAddress=t,{value:e}};L.generator.Context.prototype.yield=L.generator.Context.prototype.yield;L.generator.Context.prototype.yieldAll=function(e,t){e=L.makeIterator(e);var r=e.next();if(L.generator.ensureIteratorResultIsObject_(r),r.done)this.yieldResult=r.value,this.nextAddress=t;else return this.yieldAllIterator_=e,this.yield(r.value,t)};L.generator.Context.prototype.yieldAll=L.generator.Context.prototype.yieldAll;L.generator.Context.prototype.jumpTo=function(e){this.nextAddress=e};L.generator.Context.prototype.jumpTo=L.generator.Context.prototype.jumpTo;L.generator.Context.prototype.jumpToEnd=function(){this.nextAddress=0};L.generator.Context.prototype.jumpToEnd=L.generator.Context.prototype.jumpToEnd;L.generator.Context.prototype.setCatchFinallyBlocks=function(e,t){this.catchAddress_=e,t!=null&&(this.finallyAddress_=t)};L.generator.Context.prototype.setCatchFinallyBlocks=L.generator.Context.prototype.setCatchFinallyBlocks;L.generator.Context.prototype.setFinallyBlock=function(e){this.catchAddress_=0,this.finallyAddress_=e||0};L.generator.Context.prototype.setFinallyBlock=L.generator.Context.prototype.setFinallyBlock;L.generator.Context.prototype.leaveTryBlock=function(e,t){this.nextAddress=e,this.catchAddress_=t||0};L.generator.Context.prototype.leaveTryBlock=L.generator.Context.prototype.leaveTryBlock;L.generator.Context.prototype.enterCatchBlock=function(e){return this.catchAddress_=e||0,e=this.abruptCompletion_.exception,this.abruptCompletion_=null,e};L.generator.Context.prototype.enterCatchBlock=L.generator.Context.prototype.enterCatchBlock;L.generator.Context.prototype.enterFinallyBlock=function(e,t,r){r?this.finallyContexts_[r]=this.abruptCompletion_:this.finallyContexts_=[this.abruptCompletion_],this.catchAddress_=e||0,this.finallyAddress_=t||0};L.generator.Context.prototype.enterFinallyBlock=L.generator.Context.prototype.enterFinallyBlock;L.generator.Context.prototype.leaveFinallyBlock=function(e,t){if(t=this.finallyContexts_.splice(t||0)[0],t=this.abruptCompletion_=this.abruptCompletion_||t){if(t.isException)return this.jumpToErrorHandler_();t.jumpTo!=null&&this.finallyAddress_<t.jumpTo?(this.nextAddress=t.jumpTo,this.abruptCompletion_=null):this.nextAddress=this.finallyAddress_}else this.nextAddress=e};L.generator.Context.prototype.leaveFinallyBlock=L.generator.Context.prototype.leaveFinallyBlock;L.generator.Context.prototype.forIn=function(e){return new L.generator.Context.PropertyIterator(e)};L.generator.Context.prototype.forIn=L.generator.Context.prototype.forIn;L.generator.Context.PropertyIterator=function(e){this.object_=e,this.properties_=[];for(var t in e)this.properties_.push(t);this.properties_.reverse()};L.generator.Context.PropertyIterator.prototype.getNext=function(){for(;this.properties_.length>0;){var e=this.properties_.pop();if(e in this.object_)return e}return null};L.generator.Context.PropertyIterator.prototype.getNext=L.generator.Context.PropertyIterator.prototype.getNext;L.generator.Engine_=function(e){this.context_=new L.generator.Context,this.program_=e};L.generator.Engine_.prototype.next_=function(e){return this.context_.start_(),this.context_.yieldAllIterator_?this.yieldAllStep_(this.context_.yieldAllIterator_.next,e,this.context_.next_):(this.context_.next_(e),this.nextStep_())};L.generator.Engine_.prototype.return_=function(e){this.context_.start_();var t=this.context_.yieldAllIterator_;return t?this.yieldAllStep_("return"in t?t.return:function(r){return{value:r,done:!0}},e,this.context_.return):(this.context_.return(e),this.nextStep_())};L.generator.Engine_.prototype.throw_=function(e){return this.context_.start_(),this.context_.yieldAllIterator_?this.yieldAllStep_(this.context_.yieldAllIterator_.throw,e,this.context_.next_):(this.context_.throw_(e),this.nextStep_())};L.generator.Engine_.prototype.yieldAllStep_=function(e,t,r){try{var n=e.call(this.context_.yieldAllIterator_,t);if(L.generator.ensureIteratorResultIsObject_(n),!n.done)return this.context_.stop_(),n;var o=n.value}catch(A){return this.context_.yieldAllIterator_=null,this.context_.throw_(A),this.nextStep_()}return this.context_.yieldAllIterator_=null,r.call(this.context_,o),this.nextStep_()};L.generator.Engine_.prototype.nextStep_=function(){for(;this.context_.nextAddress;)try{var e=this.program_(this.context_);if(e)return this.context_.stop_(),{value:e.value,done:!1}}catch(t){this.context_.yieldResult=void 0,this.context_.throw_(t)}if(this.context_.stop_(),this.context_.abruptCompletion_){if(e=this.context_.abruptCompletion_,this.context_.abruptCompletion_=null,e.isException)throw e.exception;return{value:e.return,done:!0}}return{value:void 0,done:!0}};L.generator.Generator_=function(e){this.next=function(t){return e.next_(t)},this.throw=function(t){return e.throw_(t)},this.return=function(t){return e.return_(t)},this[Symbol.iterator]=function(){return this}};L.generator.createGenerator=function(e,t){return t=new L.generator.Generator_(new L.generator.Engine_(t)),L.setPrototypeOf&&e.prototype&&L.setPrototypeOf(t,e.prototype),t};L.asyncExecutePromiseGenerator=function(e){function t(n){return e.next(n)}function r(n){return e.throw(n)}return new Promise(function(n,o){function A(i){i.done?n(i.value):Promise.resolve(i.value).then(t,r).then(A,o)}A(e.next())})};L.asyncExecutePromiseGeneratorFunction=function(e){return L.asyncExecutePromiseGenerator(e())};L.asyncExecutePromiseGeneratorProgram=function(e){return L.asyncExecutePromiseGenerator(new L.generator.Generator_(new L.generator.Engine_(e)))};L.polyfill("globalThis",function(e){return e||L.global},"es_2020","es3");L.polyfill("Reflect",function(e){return e||{}},"es6","es3");L.polyfill("Reflect.construct",function(e){return L.construct},"es6","es3");L.polyfill("Reflect.setPrototypeOf",function(e){if(e)return e;if(L.setPrototypeOf){var t=L.setPrototypeOf;return function(r,n){try{return t(r,n),!0}catch{return!1}}}return null},"es6","es5");L.initSymbol=function(){};L.polyfill("Symbol",function(e){if(e)return e;var t=function(A,i){this.$jscomp$symbol$id_=A,L.defineProperty(this,"description",{configurable:!0,writable:!0,value:i})};t.prototype.toString=function(){return this.$jscomp$symbol$id_};var r="jscomp_symbol_"+(Math.random()*1e9>>>0)+"_",n=0,o=function(A){if(this instanceof o)throw new TypeError("Symbol is not a constructor");return new t(r+(A||"")+"_"+n++,A)};return o},"es6","es3");L.polyfill("Symbol.iterator",function(e){return e||(e=Symbol("Symbol.iterator"),L.defineProperty(Array.prototype,e,{configurable:!0,writable:!0,value:function(){return L.iteratorPrototype(L.arrayIteratorImpl(this))}}),e)},"es6","es3");L.iteratorPrototype=function(e){return e={next:e},e[Symbol.iterator]=function(){return this},e};L.polyfill("Promise",function(e){function t(){this.batch_=null}function r(i){return i instanceof o?i:new o(function(a,s){a(i)})}if(e&&(!(L.FORCE_POLYFILL_PROMISE||L.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION&&typeof L.global.PromiseRejectionEvent>"u")||!L.global.Promise||L.global.Promise.toString().indexOf("[native code]")===-1))return e;t.prototype.asyncExecute=function(i){if(this.batch_==null){this.batch_=[];var a=this;this.asyncExecuteFunction(function(){a.executeBatch_()})}this.batch_.push(i)};var n=L.global.setTimeout;t.prototype.asyncExecuteFunction=function(i){n(i,0)},t.prototype.executeBatch_=function(){for(;this.batch_&&this.batch_.length;){var i=this.batch_;this.batch_=[];for(var a=0;a<i.length;++a){var s=i[a];i[a]=null;try{s()}catch(c){this.asyncThrow_(c)}}}this.batch_=null},t.prototype.asyncThrow_=function(i){this.asyncExecuteFunction(function(){throw i})};var o=function(i){this.state_=0,this.result_=void 0,this.onSettledCallbacks_=[],this.isRejectionHandled_=!1;var a=this.createResolveAndReject_();try{i(a.resolve,a.reject)}catch(s){a.reject(s)}};o.prototype.createResolveAndReject_=function(){function i(c){return function(l){s||(s=!0,c.call(a,l))}}var a=this,s=!1;return{resolve:i(this.resolveTo_),reject:i(this.reject_)}},o.prototype.resolveTo_=function(i){if(i===this)this.reject_(new TypeError("A Promise cannot resolve to itself"));else if(i instanceof o)this.settleSameAsPromise_(i);else{e:switch(typeof i){case"object":var a=i!=null;break e;case"function":a=!0;break e;default:a=!1}a?this.resolveToNonPromiseObj_(i):this.fulfill_(i)}},o.prototype.resolveToNonPromiseObj_=function(i){var a=void 0;try{a=i.then}catch(s){this.reject_(s);return}typeof a=="function"?this.settleSameAsThenable_(a,i):this.fulfill_(i)},o.prototype.reject_=function(i){this.settle_(2,i)},o.prototype.fulfill_=function(i){this.settle_(1,i)},o.prototype.settle_=function(i,a){if(this.state_!=0)throw Error("Cannot settle("+i+", "+a+"): Promise already settled in state"+this.state_);this.state_=i,this.result_=a,this.state_===2&&this.scheduleUnhandledRejectionCheck_(),this.executeOnSettledCallbacks_()},o.prototype.scheduleUnhandledRejectionCheck_=function(){var i=this;n(function(){if(i.notifyUnhandledRejection_()){var a=L.global.console;typeof a<"u"&&a.error(i.result_)}},1)},o.prototype.notifyUnhandledRejection_=function(){if(this.isRejectionHandled_)return!1;var i=L.global.CustomEvent,a=L.global.Event,s=L.global.dispatchEvent;return typeof s>"u"?!0:(typeof i=="function"?i=new i("unhandledrejection",{cancelable:!0}):typeof a=="function"?i=new a("unhandledrejection",{cancelable:!0}):(i=L.global.document.createEvent("CustomEvent"),i.initCustomEvent("unhandledrejection",!1,!0,i)),i.promise=this,i.reason=this.result_,s(i))},o.prototype.executeOnSettledCallbacks_=function(){if(this.onSettledCallbacks_!=null){for(var i=0;i<this.onSettledCallbacks_.length;++i)A.asyncExecute(this.onSettledCallbacks_[i]);this.onSettledCallbacks_=null}};var A=new t;return o.prototype.settleSameAsPromise_=function(i){var a=this.createResolveAndReject_();i.callWhenSettled_(a.resolve,a.reject)},o.prototype.settleSameAsThenable_=function(i,a){var s=this.createResolveAndReject_();try{i.call(a,s.resolve,s.reject)}catch(c){s.reject(c)}},o.prototype.then=function(i,a){function s(g,p){return typeof g=="function"?function(f){try{c(g(f))}catch(d){l(d)}}:p}var c,l,u=new o(function(g,p){c=g,l=p});return this.callWhenSettled_(s(i,c),s(a,l)),u},o.prototype.catch=function(i){return this.then(void 0,i)},o.prototype.callWhenSettled_=function(i,a){function s(){switch(c.state_){case 1:i(c.result_);break;case 2:a(c.result_);break;default:throw Error("Unexpected state: "+c.state_)}}var c=this;this.onSettledCallbacks_==null?A.asyncExecute(s):this.onSettledCallbacks_.push(s),this.isRejectionHandled_=!0},o.resolve=r,o.reject=function(i){return new o(function(a,s){s(i)})},o.race=function(i){return new o(function(a,s){for(var c=L.makeIterator(i),l=c.next();!l.done;l=c.next())r(l.value).callWhenSettled_(a,s)})},o.all=function(i){var a=L.makeIterator(i),s=a.next();return s.done?r([]):new o(function(c,l){function u(f){return function(d){g[f]=d,p--,p==0&&c(g)}}var g=[],p=0;do g.push(void 0),p++,r(s.value).callWhenSettled_(u(g.length-1),l),s=a.next();while(!s.done)})},o},"es6","es3");L.checkStringArgs=function(e,t,r){if(e==null)throw new TypeError("The 'this' value for String.prototype."+r+" must not be null or undefined");if(t instanceof RegExp)throw new TypeError("First argument to String.prototype."+r+" must not be a regular expression");return e+""};L.polyfill("String.prototype.startsWith",function(e){return e||function(t,r){var n=L.checkStringArgs(this,t,"startsWith");t+="";var o=n.length,A=t.length;r=Math.max(0,Math.min(r|0,n.length));for(var i=0;i<A&&r<o;)if(n[r++]!=t[i++])return!1;return i>=A}},"es6","es3");L.polyfill("String.prototype.codePointAt",function(e){return e||function(t){var r=L.checkStringArgs(this,null,"codePointAt"),n=r.length;if(t=Number(t)||0,t>=0&&t<n){t|=0;var o=r.charCodeAt(t);return o<55296||o>56319||t+1===n?o:(t=r.charCodeAt(t+1),t<56320||t>57343?o:(o-55296)*1024+t+9216)}}},"es6","es3");var qo=(function(){var e,t,r=(e=globalThis.document)==null||(t=e.currentScript)==null?void 0:t.src;return function(n){function o(ee){ee&&typeof ee=="object"&&(ee=ee.ptr),this.ptr=yn(ee),j(o)[this.ptr]=this}function A(){this.ptr=un(),j(A)[this.ptr]=this}function i(){this.ptr=Fe(),j(i)[this.ptr]=this}function a(){this.ptr=C(),j(a)[this.ptr]=this}function s(){this.ptr=kr(),j(s)[this.ptr]=this}function c(){this.ptr=Fr(),j(c)[this.ptr]=this}function l(){this.ptr=Rr(),j(l)[this.ptr]=this}function u(){this.ptr=Mr(),j(u)[this.ptr]=this}function g(){this.ptr=wr(),j(g)[this.ptr]=this}function p(){this.ptr=nr(),j(p)[this.ptr]=this}function f(){this.ptr=at(),j(f)[this.ptr]=this}function d(){throw"cannot construct a VoidPtr, no constructor in IDL"}function h(ee){if(typeof ee=="object"){for(var E=De.alloc(ee,rr),v=E/4,P=0;P<ee.length;P++)rr[v+P]=ee[P];return E}return ee}function I(ee){if(typeof ee=="object"){for(var E=De.alloc(ee,Ft),v=E/4,P=0;P<ee.length;P++)Ft[v+P]=ee[P];return E}return ee}function b(ee){if(typeof ee=="object"){for(var E=De.alloc(ee,tr),v=E/2,P=0;P<ee.length;P++)tr[v+P]=ee[P];return E}return ee}function D(ee){if(typeof ee=="object"){for(var E=De.alloc(ee,Je),v=0;v<ee.length;v++)Je[E+v]=ee[v];return E}return ee}function m(ee){if(typeof ee=="string"){ee=ft(ee);for(var E=De.alloc(ee,Je),v=0;v<ee.length;v++)Je[E+v]=ee[v];return E}return ee}function x(ee){return ee.__class__}function w(ee){return ee.ptr}function S(ee,E){return ee.ptr===E.ptr}function N(ee){if(!ee.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";ee.__destroy__(),delete j(ee.__class__)[ee.ptr]}function M(ee,E){return G(ee.ptr,E)}function G(ee,E){var v=j(E),P=v[ee];return P||(P=Object.create((E||R).prototype),P.ptr=ee,v[ee]=P)}function j(ee){return(ee||R).__cache__}function R(){}function K(){var ee,E,v;return(0,L.asyncExecutePromiseGeneratorProgram)(function(P){if(P.getNextAddressJsc()==1)return oe(),ee=F.setStatus,ee?(ee("Running..."),P.yield(new Promise(function(Y){return setTimeout(Y,1)}),3)):P.jumpTo(2);if(P.getNextAddressJsc()!=2&&setTimeout(ee,1,""),Ue)return P.return();je=!0,tt(vt),Tr.e(),(v=(E=F).onRuntimeInitialized)==null||v.call(E),re(),P.jumpToEnd()})}function z(){function ee(U){return U=Tr=U.exports,F._webidl_free=U.f,F._free=U.g,F._webidl_malloc=U.h,F._malloc=U.i,Cr=F._emscripten_bind_VoidPtr___destroy___0=U.j,at=F._emscripten_bind_GeometryAttribute_GeometryAttribute_0=U.k,Kt=F._emscripten_bind_GeometryAttribute___destroy___0=U.l,nr=F._emscripten_bind_PointAttribute_PointAttribute_0=U.m,ot=F._emscripten_bind_PointAttribute_size_0=U.n,Ct=F._emscripten_bind_PointAttribute_attribute_type_0=U.o,Ut=F._emscripten_bind_PointAttribute_data_type_0=U.p,zt=F._emscripten_bind_PointAttribute_num_components_0=U.q,Yt=F._emscripten_bind_PointAttribute_normalized_0=U.r,Wt=F._emscripten_bind_PointAttribute_byte_stride_0=U.s,qt=F._emscripten_bind_PointAttribute_byte_offset_0=U.t,Qr=F._emscripten_bind_PointAttribute_unique_id_0=U.u,xr=F._emscripten_bind_PointAttribute___destroy___0=U.v,wr=F._emscripten_bind_PointCloud_PointCloud_0=U.w,vr=F._emscripten_bind_PointCloud_num_attributes_0=U.x,Dr=F._emscripten_bind_PointCloud_num_points_0=U.y,_r=F._emscripten_bind_PointCloud___destroy___0=U.z,Mr=F._emscripten_bind_Mesh_Mesh_0=U.A,Sr=F._emscripten_bind_Mesh_num_faces_0=U.B,Pr=F._emscripten_bind_Mesh_num_attributes_0=U.C,or=F._emscripten_bind_Mesh_num_points_0=U.D,kt=F._emscripten_bind_Mesh_set_num_points_1=U.E,Gr=F._emscripten_bind_Mesh___destroy___0=U.F,Rr=F._emscripten_bind_Metadata_Metadata_0=U.G,Ar=F._emscripten_bind_Metadata___destroy___0=U.H,Fr=F._emscripten_bind_DracoInt8Array_DracoInt8Array_0=U.I,ir=F._emscripten_bind_DracoInt8Array_GetValue_1=U.J,Nt=F._emscripten_bind_DracoInt8Array_size_0=U.K,Ur=F._emscripten_bind_DracoInt8Array___destroy___0=U.L,kr=F._emscripten_bind_MetadataBuilder_MetadataBuilder_0=U.M,ar=F._emscripten_bind_MetadataBuilder_AddStringEntry_3=U.N,Xt=F._emscripten_bind_MetadataBuilder_AddIntEntry_3=U.O,st=F._emscripten_bind_MetadataBuilder_AddIntEntryArray_4=U.P,Tt=F._emscripten_bind_MetadataBuilder_AddDoubleEntry_3=U.Q,sr=F._emscripten_bind_MetadataBuilder___destroy___0=U.R,C=F._emscripten_bind_PointCloudBuilder_PointCloudBuilder_0=U.S,Q=F._emscripten_bind_PointCloudBuilder_AddFloatAttribute_5=U.T,k=F._emscripten_bind_PointCloudBuilder_AddInt8Attribute_5=U.U,V=F._emscripten_bind_PointCloudBuilder_AddUInt8Attribute_5=U.V,q=F._emscripten_bind_PointCloudBuilder_AddInt16Attribute_5=U.W,te=F._emscripten_bind_PointCloudBuilder_AddUInt16Attribute_5=U.X,ae=F._emscripten_bind_PointCloudBuilder_AddInt32Attribute_5=U.Y,se=F._emscripten_bind_PointCloudBuilder_AddUInt32Attribute_5=U.Z,pe=F._emscripten_bind_PointCloudBuilder_AddMetadata_2=U._,ue=F._emscripten_bind_PointCloudBuilder_SetMetadataForAttribute_3=U.$,de=F._emscripten_bind_PointCloudBuilder_SetNormalizedFlagForAttribute_3=U.aa,ve=F._emscripten_bind_PointCloudBuilder___destroy___0=U.ba,Fe=F._emscripten_bind_MeshBuilder_MeshBuilder_0=U.ca,Ke=F._emscripten_bind_MeshBuilder_AddFacesToMesh_3=U.da,Ne=F._emscripten_bind_MeshBuilder_AddFloatAttributeToMesh_5=U.ea,et=F._emscripten_bind_MeshBuilder_AddInt32AttributeToMesh_5=U.fa,At=F._emscripten_bind_MeshBuilder_AddMetadataToMesh_2=U.ga,Dt=F._emscripten_bind_MeshBuilder_AddFloatAttribute_5=U.ha,ct=F._emscripten_bind_MeshBuilder_AddInt8Attribute_5=U.ia,cr=F._emscripten_bind_MeshBuilder_AddUInt8Attribute_5=U.ja,lr=F._emscripten_bind_MeshBuilder_AddInt16Attribute_5=U.ka,nn=F._emscripten_bind_MeshBuilder_AddUInt16Attribute_5=U.la,on=F._emscripten_bind_MeshBuilder_AddInt32Attribute_5=U.ma,An=F._emscripten_bind_MeshBuilder_AddUInt32Attribute_5=U.na,an=F._emscripten_bind_MeshBuilder_AddMetadata_2=U.oa,sn=F._emscripten_bind_MeshBuilder_SetMetadataForAttribute_3=U.pa,cn=F._emscripten_bind_MeshBuilder_SetNormalizedFlagForAttribute_3=U.qa,ln=F._emscripten_bind_MeshBuilder___destroy___0=U.ra,un=F._emscripten_bind_Encoder_Encoder_0=U.sa,gn=F._emscripten_bind_Encoder_SetEncodingMethod_1=U.ta,pn=F._emscripten_bind_Encoder_SetAttributeQuantization_2=U.ua,fn=F._emscripten_bind_Encoder_SetAttributeExplicitQuantization_5=U.va,dn=F._emscripten_bind_Encoder_SetSpeedOptions_2=U.wa,hn=F._emscripten_bind_Encoder_SetTrackEncodedProperties_1=U.xa,mn=F._emscripten_bind_Encoder_EncodeMeshToDracoBuffer_2=U.ya,In=F._emscripten_bind_Encoder_EncodePointCloudToDracoBuffer_3=U.za,Bn=F._emscripten_bind_Encoder_GetNumberOfEncodedPoints_0=U.Aa,bn=F._emscripten_bind_Encoder_GetNumberOfEncodedFaces_0=U.Ba,En=F._emscripten_bind_Encoder___destroy___0=U.Ca,yn=F._emscripten_bind_ExpertEncoder_ExpertEncoder_1=U.Da,Cn=F._emscripten_bind_ExpertEncoder_SetEncodingMethod_1=U.Ea,Qn=F._emscripten_bind_ExpertEncoder_SetAttributeQuantization_2=U.Fa,xn=F._emscripten_bind_ExpertEncoder_SetAttributeExplicitQuantization_5=U.Ga,wn=F._emscripten_bind_ExpertEncoder_SetSpeedOptions_2=U.Ha,vn=F._emscripten_bind_ExpertEncoder_SetTrackEncodedProperties_1=U.Ia,Dn=F._emscripten_bind_ExpertEncoder_EncodeToDracoBuffer_2=U.Ja,_n=F._emscripten_bind_ExpertEncoder_GetNumberOfEncodedPoints_0=U.Ka,Mn=F._emscripten_bind_ExpertEncoder_GetNumberOfEncodedFaces_0=U.La,Sn=F._emscripten_bind_ExpertEncoder___destroy___0=U.Ma,Pn=F._emscripten_enum_draco_GeometryAttribute_Type_INVALID=U.Na,Gn=F._emscripten_enum_draco_GeometryAttribute_Type_POSITION=U.Oa,Rn=F._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=U.Pa,Fn=F._emscripten_enum_draco_GeometryAttribute_Type_COLOR=U.Qa,Un=F._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=U.Ra,kn=F._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=U.Sa,Nn=F._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=U.Ta,Tn=F._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=U.Ua,Ln=F._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=U.Va,On=F._emscripten_enum_draco_MeshEncoderMethod_MESH_SEQUENTIAL_ENCODING=U.Wa,Hn=F._emscripten_enum_draco_MeshEncoderMethod_MESH_EDGEBREAKER_ENCODING=U.Xa,Nr=U.d,ne(),Tr}var E,v,P,Y;return(0,L.asyncExecutePromiseGeneratorProgram)(function(U){return U.getNextAddressJsc()==1?(E={a:jn},(v=F.instantiateWasm)?U.return(new Promise(function(Ce){v(E,function(rt){return Ce(ee(rt))})})):(Le!=null||(Le=ie("draco_encoder.wasm")),U.yield(J(Ge,Le,E),2))):(P=U.getYieldResultJsc(),Y=ee(P.instance),U.return(Y))})}function J(ee,E,v){var P,Y,U;return(0,L.asyncExecutePromiseGeneratorProgram)(function(Ce){switch(Ce.getNextAddressJsc()){case 1:if(ee||_e(E)||ye){Ce.jumpTo(2);break}return Ce.setCatchFinallyBlocks(3),P=fetch(E,{credentials:"same-origin"}),Ce.yield(WebAssembly.instantiateStreaming(P,v),5);case 5:return Y=Ce.getYieldResultJsc(),Ce.return(Y);case 3:U=Ce.enterCatchBlock(),Me("wasm streaming compile failed: "+U),Me("falling back to ArrayBuffer instantiation");case 2:return Ce.return(W(E,v))}})}function W(ee,E){var v,P,Y;return(0,L.asyncExecutePromiseGeneratorProgram)(function(U){switch(U.getNextAddressJsc()){case 1:return U.setCatchFinallyBlocks(2),U.yield(X(ee),4);case 4:return v=U.getYieldResultJsc(),U.yield(WebAssembly.instantiate(v,E),5);case 5:return P=U.getYieldResultJsc(),U.return(P);case 2:Y=U.enterCatchBlock(),Me("failed to asynchronously prepare wasm: "+Y),Ae(Y),U.jumpToEnd()}})}function X(ee){var E;return(0,L.asyncExecutePromiseGeneratorProgram)(function(v){switch(v.getNextAddressJsc()){case 1:if(Ge){v.jumpTo(2);break}return v.setCatchFinallyBlocks(3),v.yield(ge(ee),5);case 5:return E=v.getYieldResultJsc(),v.return(new Uint8Array(E));case 3:v.enterCatchBlock();case 2:var P=v.return;if(ee==Le&&Ge)var Y=new Uint8Array(Ge);else if(be)Y=be(ee);else throw"both async and sync fetching of the wasm failed";return P.call(v,Y)}})}function Ae(ee){var E,v;throw(v=(E=F).onAbort)==null||v.call(E,ee),ee="Aborted("+ee+")",Me(ee),Ue=!0,new WebAssembly.RuntimeError(ee+". Build with -sASSERTIONS for more info.")}function re(){var ee=F.postRun;ee&&(typeof ee=="function"&&(ee=[ee]),qe.push.apply(qe,(0,L.arrayFromIterable)(ee))),tt(qe)}function oe(){var ee=F.preRun;ee&&(typeof ee=="function"&&(ee=[ee]),Bt.push.apply(Bt,(0,L.arrayFromIterable)(ee))),tt(Bt)}function ne(){var ee,E;!((ee=Je)==null||(E=ee.buffer)==null)&&E.resizable||(ee=Nr.buffer,F.HEAP8=Je=new Int8Array(ee),F.HEAP16=tr=new Int16Array(ee),F.HEAPU8=pt=new Uint8Array(ee),F.HEAPU16=new Uint16Array(ee),F.HEAP32=Ft=new Int32Array(ee),F.HEAPU32=ze=new Uint32Array(ee),F.HEAPF32=rr=new Float32Array(ee),F.HEAPF64=new Float64Array(ee))}function ie(ee){return F.locateFile?F.locateFile(ee,le):le+ee}function he(ee){return typeof ee!="string"?!1:(ee=ee.split("."),ee.length<2||ee.length>3?!1:ee[0]==1&&ee[1]>=0&&ee[1]<=5?!0:!(ee[0]!=0||ee[1]>10))}n=n===void 0?{}:n;var F,Be,Se,Pe,Ie,y,ye,Qe,xe,le,ge,be,we,Me,Ge,Ue,_e,He,Te,je,Le,Je,tt,qe,Bt,ze,Ve,bt,ut,Et,gt,Xe,ht,Gt,pt,Jt,it,Rt,ft,vt,yr,tr,Ft,rr,yt,Cr,at,Kt,nr,ot,Ct,Ut,zt,Yt,Wt,qt,Qr,xr,wr,vr,Dr,_r,Mr,Sr,Pr,or,kt,Gr,Rr,Ar,Fr,ir,Nt,Ur,kr,ar,Xt,st,Tt,sr,C,Q,k,V,q,te,ae,se,pe,ue,de,ve,Fe,Ke,Ne,et,At,Dt,ct,cr,lr,nn,on,An,an,sn,cn,ln,un,gn,pn,fn,dn,hn,mn,In,Bn,bn,En,yn,Cn,Qn,xn,wn,vn,Dn,_n,Mn,Sn,Pn,Gn,Rn,Fn,Un,kn,Nn,Tn,Ln,On,Hn,Nr,jn,Tr,De;return(0,L.asyncExecutePromiseGeneratorProgram)(function(ee){if(ee.getNextAddressJsc()==1){if(F=n,Be=!!globalThis.window,Se=!!globalThis.WorkerGlobalScope,ye=((Pe=globalThis.process)==null||(Ie=Pe.versions)==null?void 0:Ie.node)&&((y=globalThis.process)==null?void 0:y.type)!="renderer",xe=Qe=!1,F.onRuntimeInitialized=function(){Qe=!0,xe&&typeof F.onModuleLoaded=="function"&&F.onModuleLoaded(F)},F.onModuleParsed=function(){xe=!0,Qe&&typeof F.onModuleLoaded=="function"&&F.onModuleLoaded(F)},F.isVersionSupported=he,typeof __filename<"u"?r=__filename:Se&&(r=self.location.href),le="",ye)we=(_t(),Ei(Pi)),le=__dirname+"/",be=function(E){return E=_e(E)?new URL(E):E,we.readFileSync(E)},ge=function(E,v){v=v===void 0?!0:v;var P;return(0,L.asyncExecutePromiseGeneratorProgram)(function(Y){return E=_e(E)?new URL(E):E,P=we.readFileSync(E,v?void 0:"utf8"),Y.return(P)})},me.argv.length>1&&me.argv[1].replace(/\\/g,"/"),me.argv.slice(2);else if(Be||Se){try{le=new URL(".",r).href}catch{}Se&&(be=function(E){var v=new XMLHttpRequest;return v.open("GET",E,!1),v.responseType="arraybuffer",v.send(null),new Uint8Array(v.response)}),ge=function(E){var v;return(0,L.asyncExecutePromiseGeneratorProgram)(function(P){if(P.getNextAddressJsc()==1)return _e(E)?P.return(new Promise(function(Y,U){var Ce=new XMLHttpRequest;Ce.open("GET",E,!0),Ce.responseType="arraybuffer",Ce.onload=function(){Ce.status==200||Ce.status==0&&Ce.response?Y(Ce.response):U(Ce.status)},Ce.onerror=U,Ce.send(null)})):P.yield(fetch(E,{credentials:"same-origin"}),2);if(v=P.getYieldResultJsc(),v.ok)return P.return(v.arrayBuffer());throw Error(v.status+" : "+v.url)})}}if(console.log.bind(console),Me=console.error.bind(console),Ue=!1,_e=function(E){return E.startsWith("file://")},He=function(){},Te=function(){return He.apply(this,arguments)||this},L.inherits(Te,He),je=!1,tt=function(E){for(;E.length>0;)E.shift()(F)},qe=[],Bt=[],Ve=function(E){this.excPtr=E,this.ptr=E-24},Ve.prototype.set_type=function(E){ze[this.ptr+4>>2]=E},Ve.prototype.get_type=function(){return ze[this.ptr+4>>2]},Ve.prototype.set_destructor=function(E){ze[this.ptr+8>>2]=E},Ve.prototype.get_destructor=function(){return ze[this.ptr+8>>2]},Ve.prototype.set_caught=function(E){Je[this.ptr+12]=E?1:0},Ve.prototype.get_caught=function(){return Je[this.ptr+12]!=0},Ve.prototype.set_rethrown=function(E){Je[this.ptr+13]=E?1:0},Ve.prototype.get_rethrown=function(){return Je[this.ptr+13]!=0},Ve.prototype.init=function(E,v){this.set_adjusted_ptr(0),this.set_type(E),this.set_destructor(v)},Ve.prototype.set_adjusted_ptr=function(E){ze[this.ptr+16>>2]=E},Ve.prototype.get_adjusted_ptr=function(){return ze[this.ptr+16>>2]},bt=0,ut=function(E){Ae()},Et=function(E,v,P){new Ve(E).init(v,P),bt++,ut(E)},gt=function(){return Ae("")},Xe=function(){return 2147483648},ht=function(E,v){return Math.ceil(E/v)*v},Gt=function(E){var v=Nr.buffer.byteLength;try{return Nr.grow((E-v+65535)/65536|0),ne(),1}catch{}},Jt=function(E){var v=pt.length;E>>>=0;var P=Xe();if(E>P)return!1;for(var Y=1;Y<=4;Y*=2){var U=v*(1+.2/Y);if(U=Math.min(U,E+100663296),U=Math.min(P,ht(Math.max(E,U),65536)),Gt(U))return!0}return!1},it=function(E){for(var v=0,P=0;P<E.length;++P){var Y=E.charCodeAt(P);Y<=127?v++:Y<=2047?v+=2:Y>=55296&&Y<=57343?(v+=4,++P):v+=3}return v},Rt=function(E,v,P,Y){if(!(Y>0))return 0;var U=P;Y=P+Y-1;for(var Ce=0;Ce<E.length;++Ce){var rt=E.codePointAt(Ce);if(rt<=127){if(P>=Y)break;v[P++]=rt}else if(rt<=2047){if(P+1>=Y)break;v[P++]=192|rt>>6,v[P++]=128|rt&63}else if(rt<=65535){if(P+2>=Y)break;v[P++]=224|rt>>12,v[P++]=128|rt>>6&63,v[P++]=128|rt&63}else{if(P+3>=Y)break;v[P++]=240|rt>>18,v[P++]=128|rt>>12&63,v[P++]=128|rt>>6&63,v[P++]=128|rt&63,Ce++}}return v[P]=0,P-U},ft=function(E,v,P){return P=P>0?P:it(E)+1,P=Array(P),E=Rt(E,P,0,P.length),v&&(P.length=E),P},globalThis.TextDecoder&&new TextDecoder,vt=[],yr=function(E){return vt.push(E)},F.printErr&&(Me=F.printErr),F.wasmBinary&&(Ge=F.wasmBinary),yt=F.preInit)for(typeof yt=="function"&&(F.preInit=yt=[yt]);yt.length>0;)yt.shift()();return jn={a:Et,c:gt,b:Jt},ee.yield(z(),2)}return ee.getNextAddressJsc()!=3?(Tr=ee.getYieldResultJsc(),ee.yield(K(),3)):(R.prototype=Object.create(R.prototype),R.prototype.constructor=R,R.prototype.__class__=R,R.__cache__={},F.WrapperObject=R,F.getCache=j,F.wrapPointer=G,F.castObject=M,F.NULL=G(0),F.destroy=N,F.compare=S,F.getPointer=w,F.getClass=x,De={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(De.needed){for(var E=0;E<De.temps.length;E++)F._webidl_free(De.temps[E]);De.temps.length=0,F._webidl_free(De.buffer),De.buffer=0,De.size+=De.needed,De.needed=0}De.buffer||(De.size+=128,De.buffer=F._webidl_malloc(De.size),De.buffer||Ae(void 0)),De.pos=0},alloc:function(E,v){return De.buffer||Ae(void 0),E=E.length*v.BYTES_PER_ELEMENT,E=ht(E,8),De.pos+E>=De.size?(E>0||Ae(void 0),De.needed+=E,v=F._webidl_malloc(E),De.temps.push(v)):(v=De.buffer+De.pos,De.pos+=E),v}},d.prototype=Object.create(R.prototype),d.prototype.constructor=d,d.prototype.__class__=d,d.__cache__={},F.VoidPtr=d,d.prototype.__destroy__=d.prototype.__destroy__=function(){Cr(this.ptr)},f.prototype=Object.create(R.prototype),f.prototype.constructor=f,f.prototype.__class__=f,f.__cache__={},F.GeometryAttribute=f,f.prototype.__destroy__=f.prototype.__destroy__=function(){Kt(this.ptr)},p.prototype=Object.create(R.prototype),p.prototype.constructor=p,p.prototype.__class__=p,p.__cache__={},F.PointAttribute=p,p.prototype.size=p.prototype.size=function(){return ot(this.ptr)},p.prototype.attribute_type=p.prototype.attribute_type=function(){return Ct(this.ptr)},p.prototype.data_type=p.prototype.data_type=function(){return Ut(this.ptr)},p.prototype.num_components=p.prototype.num_components=function(){return zt(this.ptr)},p.prototype.normalized=p.prototype.normalized=function(){return!!Yt(this.ptr)},p.prototype.byte_stride=p.prototype.byte_stride=function(){return Wt(this.ptr)},p.prototype.byte_offset=p.prototype.byte_offset=function(){return qt(this.ptr)},p.prototype.unique_id=p.prototype.unique_id=function(){return Qr(this.ptr)},p.prototype.__destroy__=p.prototype.__destroy__=function(){xr(this.ptr)},g.prototype=Object.create(R.prototype),g.prototype.constructor=g,g.prototype.__class__=g,g.__cache__={},F.PointCloud=g,g.prototype.num_attributes=g.prototype.num_attributes=function(){return vr(this.ptr)},g.prototype.num_points=g.prototype.num_points=function(){return Dr(this.ptr)},g.prototype.__destroy__=g.prototype.__destroy__=function(){_r(this.ptr)},u.prototype=Object.create(R.prototype),u.prototype.constructor=u,u.prototype.__class__=u,u.__cache__={},F.Mesh=u,u.prototype.num_faces=u.prototype.num_faces=function(){return Sr(this.ptr)},u.prototype.num_attributes=u.prototype.num_attributes=function(){return Pr(this.ptr)},u.prototype.num_points=u.prototype.num_points=function(){return or(this.ptr)},u.prototype.set_num_points=u.prototype.set_num_points=function(E){var v=this.ptr;E&&typeof E=="object"&&(E=E.ptr),kt(v,E)},u.prototype.__destroy__=u.prototype.__destroy__=function(){Gr(this.ptr)},l.prototype=Object.create(R.prototype),l.prototype.constructor=l,l.prototype.__class__=l,l.__cache__={},F.Metadata=l,l.prototype.__destroy__=l.prototype.__destroy__=function(){Ar(this.ptr)},c.prototype=Object.create(R.prototype),c.prototype.constructor=c,c.prototype.__class__=c,c.__cache__={},F.DracoInt8Array=c,c.prototype.GetValue=c.prototype.GetValue=function(E){var v=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),ir(v,E)},c.prototype.size=c.prototype.size=function(){return Nt(this.ptr)},c.prototype.__destroy__=c.prototype.__destroy__=function(){Ur(this.ptr)},s.prototype=Object.create(R.prototype),s.prototype.constructor=s,s.prototype.__class__=s,s.__cache__={},F.MetadataBuilder=s,s.prototype.AddStringEntry=s.prototype.AddStringEntry=function(E,v,P){var Y=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v=v&&typeof v=="object"?v.ptr:m(v),P=P&&typeof P=="object"?P.ptr:m(P),!!ar(Y,E,v,P)},s.prototype.AddIntEntry=s.prototype.AddIntEntry=function(E,v,P){var Y=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v=v&&typeof v=="object"?v.ptr:m(v),P&&typeof P=="object"&&(P=P.ptr),!!Xt(Y,E,v,P)},s.prototype.AddIntEntryArray=s.prototype.AddIntEntryArray=function(E,v,P,Y){var U=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v=v&&typeof v=="object"?v.ptr:m(v),typeof P=="object"&&(P=I(P)),Y&&typeof Y=="object"&&(Y=Y.ptr),!!st(U,E,v,P,Y)},s.prototype.AddDoubleEntry=s.prototype.AddDoubleEntry=function(E,v,P){var Y=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v=v&&typeof v=="object"?v.ptr:m(v),P&&typeof P=="object"&&(P=P.ptr),!!Tt(Y,E,v,P)},s.prototype.__destroy__=s.prototype.__destroy__=function(){sr(this.ptr)},a.prototype=Object.create(R.prototype),a.prototype.constructor=a,a.prototype.__class__=a,a.__cache__={},F.PointCloudBuilder=a,a.prototype.AddFloatAttribute=a.prototype.AddFloatAttribute=function(E,v,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=h(U)),Q(Ce,E,v,P,Y,U)},a.prototype.AddInt8Attribute=a.prototype.AddInt8Attribute=function(E,v,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=D(U)),k(Ce,E,v,P,Y,U)},a.prototype.AddUInt8Attribute=a.prototype.AddUInt8Attribute=function(E,v,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=D(U)),V(Ce,E,v,P,Y,U)},a.prototype.AddInt16Attribute=a.prototype.AddInt16Attribute=function(E,v,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=b(U)),q(Ce,E,v,P,Y,U)},a.prototype.AddUInt16Attribute=a.prototype.AddUInt16Attribute=function(E,v,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=b(U)),te(Ce,E,v,P,Y,U)},a.prototype.AddInt32Attribute=a.prototype.AddInt32Attribute=function(E,v,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=I(U)),ae(Ce,E,v,P,Y,U)},a.prototype.AddUInt32Attribute=a.prototype.AddUInt32Attribute=function(E,v,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=I(U)),se(Ce,E,v,P,Y,U)},a.prototype.AddMetadata=a.prototype.AddMetadata=function(E,v){var P=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),!!pe(P,E,v)},a.prototype.SetMetadataForAttribute=a.prototype.SetMetadataForAttribute=function(E,v,P){var Y=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),!!ue(Y,E,v,P)},a.prototype.SetNormalizedFlagForAttribute=a.prototype.SetNormalizedFlagForAttribute=function(E,v,P){var Y=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),!!de(Y,E,v,P)},a.prototype.__destroy__=a.prototype.__destroy__=function(){ve(this.ptr)},i.prototype=Object.create(R.prototype),i.prototype.constructor=i,i.prototype.__class__=i,i.__cache__={},F.MeshBuilder=i,i.prototype.AddFacesToMesh=i.prototype.AddFacesToMesh=function(E,v,P){var Y=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),typeof P=="object"&&(P=I(P)),!!Ke(Y,E,v,P)},i.prototype.AddFloatAttributeToMesh=i.prototype.AddFloatAttributeToMesh=function(E,v,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=h(U)),Ne(Ce,E,v,P,Y,U)},i.prototype.AddInt32AttributeToMesh=i.prototype.AddInt32AttributeToMesh=function(E,v,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=I(U)),et(Ce,E,v,P,Y,U)},i.prototype.AddMetadataToMesh=i.prototype.AddMetadataToMesh=function(E,v){var P=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),!!At(P,E,v)},i.prototype.AddFloatAttribute=i.prototype.AddFloatAttribute=function(E,v,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=h(U)),Dt(Ce,E,v,P,Y,U)},i.prototype.AddInt8Attribute=i.prototype.AddInt8Attribute=function(E,v,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=D(U)),ct(Ce,E,v,P,Y,U)},i.prototype.AddUInt8Attribute=i.prototype.AddUInt8Attribute=function(E,v,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=D(U)),cr(Ce,E,v,P,Y,U)},i.prototype.AddInt16Attribute=i.prototype.AddInt16Attribute=function(E,v,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=b(U)),lr(Ce,E,v,P,Y,U)},i.prototype.AddUInt16Attribute=i.prototype.AddUInt16Attribute=function(E,v,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=b(U)),nn(Ce,E,v,P,Y,U)},i.prototype.AddInt32Attribute=i.prototype.AddInt32Attribute=function(E,v,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=I(U)),on(Ce,E,v,P,Y,U)},i.prototype.AddUInt32Attribute=i.prototype.AddUInt32Attribute=function(E,v,P,Y,U){var Ce=this.ptr;return De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),Y&&typeof Y=="object"&&(Y=Y.ptr),typeof U=="object"&&(U=I(U)),An(Ce,E,v,P,Y,U)},i.prototype.AddMetadata=i.prototype.AddMetadata=function(E,v){var P=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),!!an(P,E,v)},i.prototype.SetMetadataForAttribute=i.prototype.SetMetadataForAttribute=function(E,v,P){var Y=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),!!sn(Y,E,v,P)},i.prototype.SetNormalizedFlagForAttribute=i.prototype.SetNormalizedFlagForAttribute=function(E,v,P){var Y=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),!!cn(Y,E,v,P)},i.prototype.__destroy__=i.prototype.__destroy__=function(){ln(this.ptr)},A.prototype=Object.create(R.prototype),A.prototype.constructor=A,A.prototype.__class__=A,A.__cache__={},F.Encoder=A,A.prototype.SetEncodingMethod=A.prototype.SetEncodingMethod=function(E){var v=this.ptr;E&&typeof E=="object"&&(E=E.ptr),gn(v,E)},A.prototype.SetAttributeQuantization=A.prototype.SetAttributeQuantization=function(E,v){var P=this.ptr;E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),pn(P,E,v)},A.prototype.SetAttributeExplicitQuantization=A.prototype.SetAttributeExplicitQuantization=function(E,v,P,Y,U){var Ce=this.ptr;De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),typeof Y=="object"&&(Y=h(Y)),U&&typeof U=="object"&&(U=U.ptr),fn(Ce,E,v,P,Y,U)},A.prototype.SetSpeedOptions=A.prototype.SetSpeedOptions=function(E,v){var P=this.ptr;E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),dn(P,E,v)},A.prototype.SetTrackEncodedProperties=A.prototype.SetTrackEncodedProperties=function(E){var v=this.ptr;E&&typeof E=="object"&&(E=E.ptr),hn(v,E)},A.prototype.EncodeMeshToDracoBuffer=A.prototype.EncodeMeshToDracoBuffer=function(E,v){var P=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),mn(P,E,v)},A.prototype.EncodePointCloudToDracoBuffer=A.prototype.EncodePointCloudToDracoBuffer=function(E,v,P){var Y=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),In(Y,E,v,P)},A.prototype.GetNumberOfEncodedPoints=A.prototype.GetNumberOfEncodedPoints=function(){return Bn(this.ptr)},A.prototype.GetNumberOfEncodedFaces=A.prototype.GetNumberOfEncodedFaces=function(){return bn(this.ptr)},A.prototype.__destroy__=A.prototype.__destroy__=function(){En(this.ptr)},o.prototype=Object.create(R.prototype),o.prototype.constructor=o,o.prototype.__class__=o,o.__cache__={},F.ExpertEncoder=o,o.prototype.SetEncodingMethod=o.prototype.SetEncodingMethod=function(E){var v=this.ptr;E&&typeof E=="object"&&(E=E.ptr),Cn(v,E)},o.prototype.SetAttributeQuantization=o.prototype.SetAttributeQuantization=function(E,v){var P=this.ptr;E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),Qn(P,E,v)},o.prototype.SetAttributeExplicitQuantization=o.prototype.SetAttributeExplicitQuantization=function(E,v,P,Y,U){var Ce=this.ptr;De.prepare(),E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),P&&typeof P=="object"&&(P=P.ptr),typeof Y=="object"&&(Y=h(Y)),U&&typeof U=="object"&&(U=U.ptr),xn(Ce,E,v,P,Y,U)},o.prototype.SetSpeedOptions=o.prototype.SetSpeedOptions=function(E,v){var P=this.ptr;E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),wn(P,E,v)},o.prototype.SetTrackEncodedProperties=o.prototype.SetTrackEncodedProperties=function(E){var v=this.ptr;E&&typeof E=="object"&&(E=E.ptr),vn(v,E)},o.prototype.EncodeToDracoBuffer=o.prototype.EncodeToDracoBuffer=function(E,v){var P=this.ptr;return E&&typeof E=="object"&&(E=E.ptr),v&&typeof v=="object"&&(v=v.ptr),Dn(P,E,v)},o.prototype.GetNumberOfEncodedPoints=o.prototype.GetNumberOfEncodedPoints=function(){return _n(this.ptr)},o.prototype.GetNumberOfEncodedFaces=o.prototype.GetNumberOfEncodedFaces=function(){return Mn(this.ptr)},o.prototype.__destroy__=o.prototype.__destroy__=function(){Sn(this.ptr)},(function(){function E(){F.INVALID=Pn(),F.POSITION=Gn(),F.NORMAL=Rn(),F.COLOR=Fn(),F.TEX_COORD=Un(),F.GENERIC=kn(),F.INVALID_GEOMETRY_TYPE=Nn(),F.POINT_CLOUD=Tn(),F.TRIANGULAR_MESH=Ln(),F.MESH_SEQUENTIAL_ENCODING=On(),F.MESH_EDGEBREAKER_ENCODING=Hn()}je?E():yr(E)})(),typeof F.onModuleParsed=="function"&&F.onModuleParsed(),ee.return(F))})}})();typeof Xo=="object"&&typeof Bo=="object"?(Bo.exports=qo,Bo.exports.default=qo):typeof define=="function"&&define.amd&&define([],function(){return qo})});var oa=Vn(($o,bo)=>{$();var O=O||{};O.scope={};O.ASSUME_ES2020=!1;O.ASSUME_ES6=O.ASSUME_ES2020;O.ASSUME_ES5=O.ASSUME_ES6;O.ASSUME_NO_NATIVE_MAP=!1;O.ASSUME_NO_NATIVE_SET=!1;O.ISOLATE_POLYFILLS=!1;O.FORCE_POLYFILL_PROMISE=!1;O.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION=!1;O.INSTRUMENT_ASYNC_CONTEXT=!0;O.objectCreate=O.ASSUME_ES5||typeof Object.create=="function"?Object.create:function(e){var t=function(){};return t.prototype=e,new t};O.defineProperty=O.ASSUME_ES5||typeof Object.defineProperties=="function"?Object.defineProperty:function(e,t,r){return e==Array.prototype||e==Object.prototype||(e[t]=r.value),e};O.getGlobal=function(e){e=[typeof globalThis=="object"&&globalThis,e,typeof window=="object"&&window,typeof self=="object"&&self,typeof globalThis=="object"&&globalThis];for(var t=0;t<e.length;++t){var r=e[t];if(r&&r.Math==Math)return r}throw Error("Cannot find global object")};O.global=O.ASSUME_ES2020?globalThis:O.getGlobal($o);O.IS_SYMBOL_NATIVE=typeof Symbol=="function"&&typeof Symbol("x")=="symbol";O.TRUST_ES6_POLYFILLS=!O.ISOLATE_POLYFILLS||O.IS_SYMBOL_NATIVE;O.polyfills={};O.propertyToPolyfillSymbol={};O.POLYFILL_PREFIX="$jscp$";O.TYPED_ARRAY_CLASSES=(function(){var e="Int8 Uint8 Uint8Clamped Int16 Uint16 Int32 Uint32 Float32 Float64".split(" ");return O.global.BigInt64Array&&(e.push("BigInt64"),e.push("BigUint64")),e})();O.polyfillTypedArrayMethod=function(e,t,r,n){if(t)for(var o=0;o<O.TYPED_ARRAY_CLASSES.length;o++){var A=O.TYPED_ARRAY_CLASSES[o]+"Array.prototype."+e;O.ISOLATE_POLYFILLS?O.polyfillIsolated(A,t,r,n):O.polyfillUnisolated(A,t,r,n)}};O.polyfill=function(e,t,r,n){t&&(O.ISOLATE_POLYFILLS?O.polyfillIsolated(e,t,r,n):O.polyfillUnisolated(e,t,r,n))};O.polyfillUnisolated=function(e,t,r,n){for(r=O.global,e=e.split("."),n=0;n<e.length-1;n++){var o=e[n];if(!(o in r))return;r=r[o]}e=e[e.length-1],n=r[e],t=t(n),t!=n&&t!=null&&O.defineProperty(r,e,{configurable:!0,writable:!0,value:t})};O.polyfillIsolated=function(e,t,r,n){var o=e.split(".");e=o.length===1,n=o[0],n=!e&&n in O.polyfills?O.polyfills:O.global;for(var A=0;A<o.length-1;A++){var i=o[A];if(!(i in n))return;n=n[i]}o=o[o.length-1],r=O.IS_SYMBOL_NATIVE&&r==="es6"?n[o]:null,t=t(r),t!=null&&(e?O.defineProperty(O.polyfills,o,{configurable:!0,writable:!0,value:t}):t!==r&&(O.propertyToPolyfillSymbol[o]===void 0&&(r=Math.random()*1e9>>>0,O.propertyToPolyfillSymbol[o]=O.IS_SYMBOL_NATIVE?O.global.Symbol(o):O.POLYFILL_PREFIX+r+"$"+o),O.defineProperty(n,O.propertyToPolyfillSymbol[o],{configurable:!0,writable:!0,value:t})))};O.getConstructImplementation=function(){function e(){function r(){}return new r,Reflect.construct(r,[],function(){}),new r instanceof r}if(O.TRUST_ES6_POLYFILLS&&typeof Reflect<"u"&&Reflect.construct){if(e())return Reflect.construct;var t=Reflect.construct;return function(r,n,o){return r=t(r,n),o&&Reflect.setPrototypeOf(r,o.prototype),r}}return function(r,n,o){return o===void 0&&(o=r),o=O.objectCreate(o.prototype||Object.prototype),Function.prototype.apply.call(r,o,n)||o}};O.construct={valueOf:O.getConstructImplementation}.valueOf();O.underscoreProtoCanBeSet=function(){var e={a:!0},t={};try{return t.__proto__=e,t.a}catch{}return!1};O.setPrototypeOf=O.ASSUME_ES6||O.TRUST_ES6_POLYFILLS&&typeof Object.setPrototypeOf=="function"?Object.setPrototypeOf:O.underscoreProtoCanBeSet()?function(e,t){if(e.__proto__=t,e.__proto__!==t)throw new TypeError(e+" is not extensible");return e}:null;O.inherits=function(e,t){if(e.prototype=O.objectCreate(t.prototype),e.prototype.constructor=e,O.ASSUME_ES6||O.setPrototypeOf){var r=O.setPrototypeOf;r(e,t)}else for(r in t)if(r!="prototype")if(Object.defineProperties){var n=Object.getOwnPropertyDescriptor(t,r);n&&Object.defineProperty(e,r,n)}else e[r]=t[r];e.superClass_=t.prototype};O.arrayIteratorImpl=function(e){var t=0;return function(){return t<e.length?{done:!1,value:e[t++]}:{done:!0}}};O.arrayIterator=function(e){return{next:O.arrayIteratorImpl(e)}};O.makeIterator=function(e){var t=typeof Symbol<"u"&&Symbol.iterator&&e[Symbol.iterator];if(t)return t.call(e);if(typeof e.length=="number")return O.arrayIterator(e);throw Error(String(e)+" is not an iterable or ArrayLike")};O.arrayFromIterator=function(e){for(var t,r=[];!(t=e.next()).done;)r.push(t.value);return r};O.arrayFromIterable=function(e){return e instanceof Array?e:O.arrayFromIterator(O.makeIterator(e))};O.createTemplateTagFirstArg=function(e){return O.createTemplateTagFirstArgWithRaw(e,e)};O.createTemplateTagFirstArgWithRaw=function(e,t){return e.raw=t,Object.freeze&&(Object.freeze(e),Object.freeze(t)),e};O.generator={};O.generator.ensureIteratorResultIsObject_=function(e){if(!(e instanceof Object))throw new TypeError("Iterator result "+e+" is not an object")};O.generator.Context=function(){this.isRunning_=!1,this.yieldAllIterator_=null,this.yieldResult=void 0,this.nextAddress=1,this.finallyAddress_=this.catchAddress_=0,this.finallyContexts_=this.abruptCompletion_=null};O.generator.Context.prototype.start_=function(){if(this.isRunning_)throw new TypeError("Generator is already running");this.isRunning_=!0};O.generator.Context.prototype.stop_=function(){this.isRunning_=!1};O.generator.Context.prototype.jumpToErrorHandler_=function(){this.nextAddress=this.catchAddress_||this.finallyAddress_};O.generator.Context.prototype.next_=function(e){this.yieldResult=e};O.generator.Context.prototype.throw_=function(e){this.abruptCompletion_={exception:e,isException:!0},this.jumpToErrorHandler_()};O.generator.Context.prototype.getNextAddressJsc=function(){return this.nextAddress};O.generator.Context.prototype.getNextAddressJsc=function(){return this.nextAddress};O.generator.Context.prototype.getYieldResultJsc=function(){return this.yieldResult};O.generator.Context.prototype.getYieldResultJsc=function(){return this.yieldResult};O.generator.Context.prototype.return=function(e){this.abruptCompletion_={return:e},this.nextAddress=this.finallyAddress_};O.generator.Context.prototype.return=O.generator.Context.prototype.return;O.generator.Context.prototype.jumpThroughFinallyBlocks=function(e){this.abruptCompletion_={jumpTo:e},this.nextAddress=this.finallyAddress_};O.generator.Context.prototype.jumpThroughFinallyBlocks=O.generator.Context.prototype.jumpThroughFinallyBlocks;O.generator.Context.prototype.yield=function(e,t){return this.nextAddress=t,{value:e}};O.generator.Context.prototype.yield=O.generator.Context.prototype.yield;O.generator.Context.prototype.yieldAll=function(e,t){e=O.makeIterator(e);var r=e.next();if(O.generator.ensureIteratorResultIsObject_(r),r.done)this.yieldResult=r.value,this.nextAddress=t;else return this.yieldAllIterator_=e,this.yield(r.value,t)};O.generator.Context.prototype.yieldAll=O.generator.Context.prototype.yieldAll;O.generator.Context.prototype.jumpTo=function(e){this.nextAddress=e};O.generator.Context.prototype.jumpTo=O.generator.Context.prototype.jumpTo;O.generator.Context.prototype.jumpToEnd=function(){this.nextAddress=0};O.generator.Context.prototype.jumpToEnd=O.generator.Context.prototype.jumpToEnd;O.generator.Context.prototype.setCatchFinallyBlocks=function(e,t){this.catchAddress_=e,t!=null&&(this.finallyAddress_=t)};O.generator.Context.prototype.setCatchFinallyBlocks=O.generator.Context.prototype.setCatchFinallyBlocks;O.generator.Context.prototype.setFinallyBlock=function(e){this.catchAddress_=0,this.finallyAddress_=e||0};O.generator.Context.prototype.setFinallyBlock=O.generator.Context.prototype.setFinallyBlock;O.generator.Context.prototype.leaveTryBlock=function(e,t){this.nextAddress=e,this.catchAddress_=t||0};O.generator.Context.prototype.leaveTryBlock=O.generator.Context.prototype.leaveTryBlock;O.generator.Context.prototype.enterCatchBlock=function(e){return this.catchAddress_=e||0,e=this.abruptCompletion_.exception,this.abruptCompletion_=null,e};O.generator.Context.prototype.enterCatchBlock=O.generator.Context.prototype.enterCatchBlock;O.generator.Context.prototype.enterFinallyBlock=function(e,t,r){r?this.finallyContexts_[r]=this.abruptCompletion_:this.finallyContexts_=[this.abruptCompletion_],this.catchAddress_=e||0,this.finallyAddress_=t||0};O.generator.Context.prototype.enterFinallyBlock=O.generator.Context.prototype.enterFinallyBlock;O.generator.Context.prototype.leaveFinallyBlock=function(e,t){if(t=this.finallyContexts_.splice(t||0)[0],t=this.abruptCompletion_=this.abruptCompletion_||t){if(t.isException)return this.jumpToErrorHandler_();t.jumpTo!=null&&this.finallyAddress_<t.jumpTo?(this.nextAddress=t.jumpTo,this.abruptCompletion_=null):this.nextAddress=this.finallyAddress_}else this.nextAddress=e};O.generator.Context.prototype.leaveFinallyBlock=O.generator.Context.prototype.leaveFinallyBlock;O.generator.Context.prototype.forIn=function(e){return new O.generator.Context.PropertyIterator(e)};O.generator.Context.prototype.forIn=O.generator.Context.prototype.forIn;O.generator.Context.PropertyIterator=function(e){this.object_=e,this.properties_=[];for(var t in e)this.properties_.push(t);this.properties_.reverse()};O.generator.Context.PropertyIterator.prototype.getNext=function(){for(;this.properties_.length>0;){var e=this.properties_.pop();if(e in this.object_)return e}return null};O.generator.Context.PropertyIterator.prototype.getNext=O.generator.Context.PropertyIterator.prototype.getNext;O.generator.Engine_=function(e){this.context_=new O.generator.Context,this.program_=e};O.generator.Engine_.prototype.next_=function(e){return this.context_.start_(),this.context_.yieldAllIterator_?this.yieldAllStep_(this.context_.yieldAllIterator_.next,e,this.context_.next_):(this.context_.next_(e),this.nextStep_())};O.generator.Engine_.prototype.return_=function(e){this.context_.start_();var t=this.context_.yieldAllIterator_;return t?this.yieldAllStep_("return"in t?t.return:function(r){return{value:r,done:!0}},e,this.context_.return):(this.context_.return(e),this.nextStep_())};O.generator.Engine_.prototype.throw_=function(e){return this.context_.start_(),this.context_.yieldAllIterator_?this.yieldAllStep_(this.context_.yieldAllIterator_.throw,e,this.context_.next_):(this.context_.throw_(e),this.nextStep_())};O.generator.Engine_.prototype.yieldAllStep_=function(e,t,r){try{var n=e.call(this.context_.yieldAllIterator_,t);if(O.generator.ensureIteratorResultIsObject_(n),!n.done)return this.context_.stop_(),n;var o=n.value}catch(A){return this.context_.yieldAllIterator_=null,this.context_.throw_(A),this.nextStep_()}return this.context_.yieldAllIterator_=null,r.call(this.context_,o),this.nextStep_()};O.generator.Engine_.prototype.nextStep_=function(){for(;this.context_.nextAddress;)try{var e=this.program_(this.context_);if(e)return this.context_.stop_(),{value:e.value,done:!1}}catch(t){this.context_.yieldResult=void 0,this.context_.throw_(t)}if(this.context_.stop_(),this.context_.abruptCompletion_){if(e=this.context_.abruptCompletion_,this.context_.abruptCompletion_=null,e.isException)throw e.exception;return{value:e.return,done:!0}}return{value:void 0,done:!0}};O.generator.Generator_=function(e){this.next=function(t){return e.next_(t)},this.throw=function(t){return e.throw_(t)},this.return=function(t){return e.return_(t)},this[Symbol.iterator]=function(){return this}};O.generator.createGenerator=function(e,t){return t=new O.generator.Generator_(new O.generator.Engine_(t)),O.setPrototypeOf&&e.prototype&&O.setPrototypeOf(t,e.prototype),t};O.asyncExecutePromiseGenerator=function(e){function t(n){return e.next(n)}function r(n){return e.throw(n)}return new Promise(function(n,o){function A(i){i.done?n(i.value):Promise.resolve(i.value).then(t,r).then(A,o)}A(e.next())})};O.asyncExecutePromiseGeneratorFunction=function(e){return O.asyncExecutePromiseGenerator(e())};O.asyncExecutePromiseGeneratorProgram=function(e){return O.asyncExecutePromiseGenerator(new O.generator.Generator_(new O.generator.Engine_(e)))};O.polyfill("globalThis",function(e){return e||O.global},"es_2020","es3");O.polyfill("Reflect",function(e){return e||{}},"es6","es3");O.polyfill("Reflect.construct",function(e){return O.construct},"es6","es3");O.polyfill("Reflect.setPrototypeOf",function(e){if(e)return e;if(O.setPrototypeOf){var t=O.setPrototypeOf;return function(r,n){try{return t(r,n),!0}catch{return!1}}}return null},"es6","es5");O.initSymbol=function(){};O.polyfill("Symbol",function(e){if(e)return e;var t=function(A,i){this.$jscomp$symbol$id_=A,O.defineProperty(this,"description",{configurable:!0,writable:!0,value:i})};t.prototype.toString=function(){return this.$jscomp$symbol$id_};var r="jscomp_symbol_"+(Math.random()*1e9>>>0)+"_",n=0,o=function(A){if(this instanceof o)throw new TypeError("Symbol is not a constructor");return new t(r+(A||"")+"_"+n++,A)};return o},"es6","es3");O.polyfill("Symbol.iterator",function(e){return e||(e=Symbol("Symbol.iterator"),O.defineProperty(Array.prototype,e,{configurable:!0,writable:!0,value:function(){return O.iteratorPrototype(O.arrayIteratorImpl(this))}}),e)},"es6","es3");O.iteratorPrototype=function(e){return e={next:e},e[Symbol.iterator]=function(){return this},e};O.polyfill("Promise",function(e){function t(){this.batch_=null}function r(i){return i instanceof o?i:new o(function(a,s){a(i)})}if(e&&(!(O.FORCE_POLYFILL_PROMISE||O.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION&&typeof O.global.PromiseRejectionEvent>"u")||!O.global.Promise||O.global.Promise.toString().indexOf("[native code]")===-1))return e;t.prototype.asyncExecute=function(i){if(this.batch_==null){this.batch_=[];var a=this;this.asyncExecuteFunction(function(){a.executeBatch_()})}this.batch_.push(i)};var n=O.global.setTimeout;t.prototype.asyncExecuteFunction=function(i){n(i,0)},t.prototype.executeBatch_=function(){for(;this.batch_&&this.batch_.length;){var i=this.batch_;this.batch_=[];for(var a=0;a<i.length;++a){var s=i[a];i[a]=null;try{s()}catch(c){this.asyncThrow_(c)}}}this.batch_=null},t.prototype.asyncThrow_=function(i){this.asyncExecuteFunction(function(){throw i})};var o=function(i){this.state_=0,this.result_=void 0,this.onSettledCallbacks_=[],this.isRejectionHandled_=!1;var a=this.createResolveAndReject_();try{i(a.resolve,a.reject)}catch(s){a.reject(s)}};o.prototype.createResolveAndReject_=function(){function i(c){return function(l){s||(s=!0,c.call(a,l))}}var a=this,s=!1;return{resolve:i(this.resolveTo_),reject:i(this.reject_)}},o.prototype.resolveTo_=function(i){if(i===this)this.reject_(new TypeError("A Promise cannot resolve to itself"));else if(i instanceof o)this.settleSameAsPromise_(i);else{e:switch(typeof i){case"object":var a=i!=null;break e;case"function":a=!0;break e;default:a=!1}a?this.resolveToNonPromiseObj_(i):this.fulfill_(i)}},o.prototype.resolveToNonPromiseObj_=function(i){var a=void 0;try{a=i.then}catch(s){this.reject_(s);return}typeof a=="function"?this.settleSameAsThenable_(a,i):this.fulfill_(i)},o.prototype.reject_=function(i){this.settle_(2,i)},o.prototype.fulfill_=function(i){this.settle_(1,i)},o.prototype.settle_=function(i,a){if(this.state_!=0)throw Error("Cannot settle("+i+", "+a+"): Promise already settled in state"+this.state_);this.state_=i,this.result_=a,this.state_===2&&this.scheduleUnhandledRejectionCheck_(),this.executeOnSettledCallbacks_()},o.prototype.scheduleUnhandledRejectionCheck_=function(){var i=this;n(function(){if(i.notifyUnhandledRejection_()){var a=O.global.console;typeof a<"u"&&a.error(i.result_)}},1)},o.prototype.notifyUnhandledRejection_=function(){if(this.isRejectionHandled_)return!1;var i=O.global.CustomEvent,a=O.global.Event,s=O.global.dispatchEvent;return typeof s>"u"?!0:(typeof i=="function"?i=new i("unhandledrejection",{cancelable:!0}):typeof a=="function"?i=new a("unhandledrejection",{cancelable:!0}):(i=O.global.document.createEvent("CustomEvent"),i.initCustomEvent("unhandledrejection",!1,!0,i)),i.promise=this,i.reason=this.result_,s(i))},o.prototype.executeOnSettledCallbacks_=function(){if(this.onSettledCallbacks_!=null){for(var i=0;i<this.onSettledCallbacks_.length;++i)A.asyncExecute(this.onSettledCallbacks_[i]);this.onSettledCallbacks_=null}};var A=new t;return o.prototype.settleSameAsPromise_=function(i){var a=this.createResolveAndReject_();i.callWhenSettled_(a.resolve,a.reject)},o.prototype.settleSameAsThenable_=function(i,a){var s=this.createResolveAndReject_();try{i.call(a,s.resolve,s.reject)}catch(c){s.reject(c)}},o.prototype.then=function(i,a){function s(g,p){return typeof g=="function"?function(f){try{c(g(f))}catch(d){l(d)}}:p}var c,l,u=new o(function(g,p){c=g,l=p});return this.callWhenSettled_(s(i,c),s(a,l)),u},o.prototype.catch=function(i){return this.then(void 0,i)},o.prototype.callWhenSettled_=function(i,a){function s(){switch(c.state_){case 1:i(c.result_);break;case 2:a(c.result_);break;default:throw Error("Unexpected state: "+c.state_)}}var c=this;this.onSettledCallbacks_==null?A.asyncExecute(s):this.onSettledCallbacks_.push(s),this.isRejectionHandled_=!0},o.resolve=r,o.reject=function(i){return new o(function(a,s){s(i)})},o.race=function(i){return new o(function(a,s){for(var c=O.makeIterator(i),l=c.next();!l.done;l=c.next())r(l.value).callWhenSettled_(a,s)})},o.all=function(i){var a=O.makeIterator(i),s=a.next();return s.done?r([]):new o(function(c,l){function u(f){return function(d){g[f]=d,p--,p==0&&c(g)}}var g=[],p=0;do g.push(void 0),p++,r(s.value).callWhenSettled_(u(g.length-1),l),s=a.next();while(!s.done)})},o},"es6","es3");O.checkStringArgs=function(e,t,r){if(e==null)throw new TypeError("The 'this' value for String.prototype."+r+" must not be null or undefined");if(t instanceof RegExp)throw new TypeError("First argument to String.prototype."+r+" must not be a regular expression");return e+""};O.polyfill("String.prototype.startsWith",function(e){return e||function(t,r){var n=O.checkStringArgs(this,t,"startsWith");t+="";var o=n.length,A=t.length;r=Math.max(0,Math.min(r|0,n.length));for(var i=0;i<A&&r<o;)if(n[r++]!=t[i++])return!1;return i>=A}},"es6","es3");O.polyfill("String.prototype.codePointAt",function(e){return e||function(t){var r=O.checkStringArgs(this,null,"codePointAt"),n=r.length;if(t=Number(t)||0,t>=0&&t<n){t|=0;var o=r.charCodeAt(t);return o<55296||o>56319||t+1===n?o:(t=r.charCodeAt(t+1),t<56320||t>57343?o:(o-55296)*1024+t+9216)}}},"es6","es3");var Zo=(function(){var e,t,r=(e=globalThis.document)==null||(t=e.currentScript)==null?void 0:t.src;return function(n){function o(){this.ptr=Un(),W(o)[this.ptr]=this}function A(){this.ptr=vn(),W(A)[this.ptr]=this}function i(){this.ptr=Cn(),W(i)[this.ptr]=this}function a(){this.ptr=Bn(),W(a)[this.ptr]=this}function s(){this.ptr=dn(),W(s)[this.ptr]=this}function c(){this.ptr=un(),W(c)[this.ptr]=this}function l(){this.ptr=an(),W(l)[this.ptr]=this}function u(){this.ptr=lr(),W(u)[this.ptr]=this}function g(){this.ptr=At(),W(g)[this.ptr]=this}function p(){throw"cannot construct a Status, no constructor in IDL"}function f(){this.ptr=de(),W(f)[this.ptr]=this}function d(){this.ptr=te(),W(d)[this.ptr]=this}function h(){this.ptr=Q(),W(h)[this.ptr]=this}function I(){this.ptr=st(),W(I)[this.ptr]=this}function b(){this.ptr=ir(),W(b)[this.ptr]=this}function D(){this.ptr=Dr(),W(D)[this.ptr]=this}function m(){this.ptr=wr(),W(m)[this.ptr]=this}function x(){this.ptr=qt(),W(x)[this.ptr]=this}function w(){this.ptr=zt(),W(w)[this.ptr]=this}function S(){throw"cannot construct a VoidPtr, no constructor in IDL"}function N(ce){if(typeof ce=="object"){for(var B=ke.alloc(ce,Ve),_=0;_<ce.length;_++)Ve[B+_]=ce[_];return B}return ce}function M(ce){if(typeof ce=="string"){ce=rr(ce);for(var B=ke.alloc(ce,Ve),_=0;_<ce.length;_++)Ve[B+_]=ce[_];return B}return ce}function G(ce){return ce.__class__}function j(ce){return ce.ptr}function R(ce,B){return ce.ptr===B.ptr}function K(ce){if(!ce.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";ce.__destroy__(),delete W(ce.__class__)[ce.ptr]}function z(ce,B){return J(ce.ptr,B)}function J(ce,B){var _=W(B),T=_[ce];return T||(T=Object.create((B||X).prototype),T.ptr=ce,_[ce]=T)}function W(ce){return(ce||X).__cache__}function X(){}function Ae(){var ce,B,_;return(0,O.asyncExecutePromiseGeneratorProgram)(function(T){if(T.getNextAddressJsc()==1)return Be(),ce=y.setStatus,ce?(ce("Running..."),T.yield(new Promise(function(fe){return setTimeout(fe,1)}),3)):T.jumpTo(2);if(T.getNextAddressJsc()!=2&&setTimeout(ce,1,""),Le)return T.return();Bt=!0,bt(nr),so.e(),(_=(B=y).onRuntimeInitialized)==null||_.call(B),F(),T.jumpToEnd()})}function re(){function ce(H){return H=so=H.exports,y._webidl_free=H.f,y._free=H.g,y._webidl_malloc=H.h,y._malloc=H.i,Ut=y._emscripten_bind_VoidPtr___destroy___0=H.j,zt=y._emscripten_bind_DecoderBuffer_DecoderBuffer_0=H.k,Yt=y._emscripten_bind_DecoderBuffer_Init_2=H.l,Wt=y._emscripten_bind_DecoderBuffer___destroy___0=H.m,qt=y._emscripten_bind_AttributeTransformData_AttributeTransformData_0=H.n,Qr=y._emscripten_bind_AttributeTransformData_transform_type_0=H.o,xr=y._emscripten_bind_AttributeTransformData___destroy___0=H.p,wr=y._emscripten_bind_GeometryAttribute_GeometryAttribute_0=H.q,vr=y._emscripten_bind_GeometryAttribute___destroy___0=H.r,Dr=y._emscripten_bind_PointAttribute_PointAttribute_0=H.s,_r=y._emscripten_bind_PointAttribute_size_0=H.t,Mr=y._emscripten_bind_PointAttribute_GetAttributeTransformData_0=H.u,Sr=y._emscripten_bind_PointAttribute_attribute_type_0=H.v,Pr=y._emscripten_bind_PointAttribute_data_type_0=H.w,or=y._emscripten_bind_PointAttribute_num_components_0=H.x,kt=y._emscripten_bind_PointAttribute_normalized_0=H.y,Gr=y._emscripten_bind_PointAttribute_byte_stride_0=H.z,Rr=y._emscripten_bind_PointAttribute_byte_offset_0=H.A,Ar=y._emscripten_bind_PointAttribute_unique_id_0=H.B,Fr=y._emscripten_bind_PointAttribute___destroy___0=H.C,ir=y._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=H.D,Nt=y._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=H.E,Ur=y._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=H.F,kr=y._emscripten_bind_AttributeQuantizationTransform_min_value_1=H.G,ar=y._emscripten_bind_AttributeQuantizationTransform_range_0=H.H,Xt=y._emscripten_bind_AttributeQuantizationTransform___destroy___0=H.I,st=y._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=H.J,Tt=y._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=H.K,sr=y._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=H.L,C=y._emscripten_bind_AttributeOctahedronTransform___destroy___0=H.M,Q=y._emscripten_bind_PointCloud_PointCloud_0=H.N,k=y._emscripten_bind_PointCloud_num_attributes_0=H.O,V=y._emscripten_bind_PointCloud_num_points_0=H.P,q=y._emscripten_bind_PointCloud___destroy___0=H.Q,te=y._emscripten_bind_Mesh_Mesh_0=H.R,ae=y._emscripten_bind_Mesh_num_faces_0=H.S,se=y._emscripten_bind_Mesh_num_attributes_0=H.T,pe=y._emscripten_bind_Mesh_num_points_0=H.U,ue=y._emscripten_bind_Mesh___destroy___0=H.V,de=y._emscripten_bind_Metadata_Metadata_0=H.W,ve=y._emscripten_bind_Metadata___destroy___0=H.X,Fe=y._emscripten_bind_Status_code_0=H.Y,Ke=y._emscripten_bind_Status_ok_0=H.Z,Ne=y._emscripten_bind_Status_error_msg_0=H._,et=y._emscripten_bind_Status___destroy___0=H.$,At=y._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=H.aa,Dt=y._emscripten_bind_DracoFloat32Array_GetValue_1=H.ba,ct=y._emscripten_bind_DracoFloat32Array_size_0=H.ca,cr=y._emscripten_bind_DracoFloat32Array___destroy___0=H.da,lr=y._emscripten_bind_DracoInt8Array_DracoInt8Array_0=H.ea,nn=y._emscripten_bind_DracoInt8Array_GetValue_1=H.fa,on=y._emscripten_bind_DracoInt8Array_size_0=H.ga,An=y._emscripten_bind_DracoInt8Array___destroy___0=H.ha,an=y._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=H.ia,sn=y._emscripten_bind_DracoUInt8Array_GetValue_1=H.ja,cn=y._emscripten_bind_DracoUInt8Array_size_0=H.ka,ln=y._emscripten_bind_DracoUInt8Array___destroy___0=H.la,un=y._emscripten_bind_DracoInt16Array_DracoInt16Array_0=H.ma,gn=y._emscripten_bind_DracoInt16Array_GetValue_1=H.na,pn=y._emscripten_bind_DracoInt16Array_size_0=H.oa,fn=y._emscripten_bind_DracoInt16Array___destroy___0=H.pa,dn=y._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0=H.qa,hn=y._emscripten_bind_DracoUInt16Array_GetValue_1=H.ra,mn=y._emscripten_bind_DracoUInt16Array_size_0=H.sa,In=y._emscripten_bind_DracoUInt16Array___destroy___0=H.ta,Bn=y._emscripten_bind_DracoInt32Array_DracoInt32Array_0=H.ua,bn=y._emscripten_bind_DracoInt32Array_GetValue_1=H.va,En=y._emscripten_bind_DracoInt32Array_size_0=H.wa,yn=y._emscripten_bind_DracoInt32Array___destroy___0=H.xa,Cn=y._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0=H.ya,Qn=y._emscripten_bind_DracoUInt32Array_GetValue_1=H.za,xn=y._emscripten_bind_DracoUInt32Array_size_0=H.Aa,wn=y._emscripten_bind_DracoUInt32Array___destroy___0=H.Ba,vn=y._emscripten_bind_MetadataQuerier_MetadataQuerier_0=H.Ca,Dn=y._emscripten_bind_MetadataQuerier_HasEntry_2=H.Da,_n=y._emscripten_bind_MetadataQuerier_GetIntEntry_2=H.Ea,Mn=y._emscripten_bind_MetadataQuerier_GetIntEntryArray_3=H.Fa,Sn=y._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=H.Ga,Pn=y._emscripten_bind_MetadataQuerier_GetStringEntry_2=H.Ha,Gn=y._emscripten_bind_MetadataQuerier_NumEntries_1=H.Ia,Rn=y._emscripten_bind_MetadataQuerier_GetEntryName_2=H.Ja,Fn=y._emscripten_bind_MetadataQuerier___destroy___0=H.Ka,Un=y._emscripten_bind_Decoder_Decoder_0=H.La,kn=y._emscripten_bind_Decoder_DecodeArrayToPointCloud_3=H.Ma,Nn=y._emscripten_bind_Decoder_DecodeArrayToMesh_3=H.Na,Tn=y._emscripten_bind_Decoder_GetAttributeId_2=H.Oa,Ln=y._emscripten_bind_Decoder_GetAttributeIdByName_2=H.Pa,On=y._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=H.Qa,Hn=y._emscripten_bind_Decoder_GetAttribute_2=H.Ra,Nr=y._emscripten_bind_Decoder_GetAttributeByUniqueId_2=H.Sa,jn=y._emscripten_bind_Decoder_GetMetadata_1=H.Ta,Tr=y._emscripten_bind_Decoder_GetAttributeMetadata_2=H.Ua,De=y._emscripten_bind_Decoder_GetFaceFromMesh_3=H.Va,ee=y._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=H.Wa,E=y._emscripten_bind_Decoder_GetTrianglesUInt16Array_3=H.Xa,v=y._emscripten_bind_Decoder_GetTrianglesUInt32Array_3=H.Ya,P=y._emscripten_bind_Decoder_GetAttributeFloat_3=H.Za,Y=y._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=H._a,U=y._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3=H.$a,Ce=y._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=H.ab,rt=y._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=H.bb,PA=y._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3=H.cb,GA=y._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3=H.db,RA=y._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=H.eb,FA=y._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3=H.fb,UA=y._emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5=H.gb,kA=y._emscripten_bind_Decoder_SkipAttributeTransform_1=H.hb,NA=y._emscripten_bind_Decoder_GetEncodedGeometryType_Deprecated_1=H.ib,TA=y._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=H.jb,LA=y._emscripten_bind_Decoder_DecodeBufferToMesh_2=H.kb,OA=y._emscripten_bind_Decoder___destroy___0=H.lb,HA=y._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM=H.mb,jA=y._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=H.nb,VA=y._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=H.ob,JA=y._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=H.pb,KA=y._emscripten_enum_draco_GeometryAttribute_Type_INVALID=H.qb,zA=y._emscripten_enum_draco_GeometryAttribute_Type_POSITION=H.rb,YA=y._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=H.sb,WA=y._emscripten_enum_draco_GeometryAttribute_Type_COLOR=H.tb,qA=y._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=H.ub,XA=y._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=H.vb,ZA=y._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=H.wb,$A=y._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=H.xb,ei=y._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=H.yb,ti=y._emscripten_enum_draco_DataType_DT_INVALID=H.zb,ri=y._emscripten_enum_draco_DataType_DT_INT8=H.Ab,ni=y._emscripten_enum_draco_DataType_DT_UINT8=H.Bb,oi=y._emscripten_enum_draco_DataType_DT_INT16=H.Cb,Ai=y._emscripten_enum_draco_DataType_DT_UINT16=H.Db,ii=y._emscripten_enum_draco_DataType_DT_INT32=H.Eb,ai=y._emscripten_enum_draco_DataType_DT_UINT32=H.Fb,si=y._emscripten_enum_draco_DataType_DT_INT64=H.Gb,ci=y._emscripten_enum_draco_DataType_DT_UINT64=H.Hb,li=y._emscripten_enum_draco_DataType_DT_FLOAT32=H.Ib,ui=y._emscripten_enum_draco_DataType_DT_FLOAT64=H.Jb,gi=y._emscripten_enum_draco_DataType_DT_BOOL=H.Kb,pi=y._emscripten_enum_draco_DataType_DT_TYPES_COUNT=H.Lb,fi=y._emscripten_enum_draco_StatusCode_OK=H.Mb,di=y._emscripten_enum_draco_StatusCode_DRACO_ERROR=H.Nb,hi=y._emscripten_enum_draco_StatusCode_IO_ERROR=H.Ob,mi=y._emscripten_enum_draco_StatusCode_INVALID_PARAMETER=H.Pb,Ii=y._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=H.Qb,Bi=y._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=H.Rb,ao=H.d,Se(),so}var B,_,T,fe;return(0,O.asyncExecutePromiseGeneratorProgram)(function(H){return H.getNextAddressJsc()==1?(B={a:bi},(_=y.instantiateWasm)?H.return(new Promise(function(Oe){_(B,function(nt){return Oe(ce(nt))})})):(ze!=null||(ze=Pe("draco_decoder_gltf.wasm")),H.yield(oe(je,ze,B),2))):(T=H.getYieldResultJsc(),fe=ce(T.instance),H.return(fe))})}function oe(ce,B,_){var T,fe,H;return(0,O.asyncExecutePromiseGeneratorProgram)(function(Oe){switch(Oe.getNextAddressJsc()){case 1:if(ce||Je(B)||be){Oe.jumpTo(2);break}return Oe.setCatchFinallyBlocks(3),T=fetch(B,{credentials:"same-origin"}),Oe.yield(WebAssembly.instantiateStreaming(T,_),5);case 5:return fe=Oe.getYieldResultJsc(),Oe.return(fe);case 3:H=Oe.enterCatchBlock(),Te("wasm streaming compile failed: "+H),Te("falling back to ArrayBuffer instantiation");case 2:return Oe.return(ne(B,_))}})}function ne(ce,B){var _,T,fe;return(0,O.asyncExecutePromiseGeneratorProgram)(function(H){switch(H.getNextAddressJsc()){case 1:return H.setCatchFinallyBlocks(2),H.yield(ie(ce),4);case 4:return _=H.getYieldResultJsc(),H.yield(WebAssembly.instantiate(_,B),5);case 5:return T=H.getYieldResultJsc(),H.return(T);case 2:fe=H.enterCatchBlock(),Te("failed to asynchronously prepare wasm: "+fe),he(fe),H.jumpToEnd()}})}function ie(ce){var B;return(0,O.asyncExecutePromiseGeneratorProgram)(function(_){switch(_.getNextAddressJsc()){case 1:if(je){_.jumpTo(2);break}return _.setCatchFinallyBlocks(3),_.yield(Ue(ce),5);case 5:return B=_.getYieldResultJsc(),_.return(new Uint8Array(B));case 3:_.enterCatchBlock();case 2:var T=_.return;if(ce==ze&&je)var fe=new Uint8Array(je);else if(_e)fe=_e(ce);else throw"both async and sync fetching of the wasm failed";return T.call(_,fe)}})}function he(ce){var B,_;throw(_=(B=y).onAbort)==null||_.call(B,ce),ce="Aborted("+ce+")",Te(ce),Le=!0,new WebAssembly.RuntimeError(ce+". Build with -sASSERTIONS for more info.")}function F(){var ce=y.postRun;ce&&(typeof ce=="function"&&(ce=[ce]),ut.push.apply(ut,(0,O.arrayFromIterable)(ce))),bt(ut)}function Be(){var ce=y.preRun;ce&&(typeof ce=="function"&&(ce=[ce]),Et.push.apply(Et,(0,O.arrayFromIterable)(ce))),bt(Et)}function Se(){var ce,B;!((ce=Ve)==null||(B=ce.buffer)==null)&&B.resizable||(ce=ao.buffer,y.HEAP8=Ve=new Int8Array(ce),y.HEAP16=new Int16Array(ce),y.HEAPU8=vt=new Uint8Array(ce),y.HEAPU16=new Uint16Array(ce),y.HEAP32=new Int32Array(ce),y.HEAPU32=gt=new Uint32Array(ce),y.HEAPF32=new Float32Array(ce),y.HEAPF64=new Float64Array(ce))}function Pe(ce){return y.locateFile?y.locateFile(ce,Ge):Ge+ce}function Ie(ce){return typeof ce!="string"?!1:(ce=ce.split("."),ce.length<2||ce.length>3?!1:ce[0]==1&&ce[1]>=0&&ce[1]<=5?!0:!(ce[0]!=0||ce[1]>10))}n=n===void 0?{}:n;var y,ye,Qe,xe,le,ge,be,we,Me,Ge,Ue,_e,He,Te,je,Le,Je,tt,qe,Bt,ze,Ve,bt,ut,Et,gt,Xe,ht,Gt,pt,Jt,it,Rt,ft,vt,yr,tr,Ft,rr,yt,Cr,at,Kt,nr,ot,Ct,Ut,zt,Yt,Wt,qt,Qr,xr,wr,vr,Dr,_r,Mr,Sr,Pr,or,kt,Gr,Rr,Ar,Fr,ir,Nt,Ur,kr,ar,Xt,st,Tt,sr,C,Q,k,V,q,te,ae,se,pe,ue,de,ve,Fe,Ke,Ne,et,At,Dt,ct,cr,lr,nn,on,An,an,sn,cn,ln,un,gn,pn,fn,dn,hn,mn,In,Bn,bn,En,yn,Cn,Qn,xn,wn,vn,Dn,_n,Mn,Sn,Pn,Gn,Rn,Fn,Un,kn,Nn,Tn,Ln,On,Hn,Nr,jn,Tr,De,ee,E,v,P,Y,U,Ce,rt,PA,GA,RA,FA,UA,kA,NA,TA,LA,OA,HA,jA,VA,JA,KA,zA,YA,WA,qA,XA,ZA,$A,ei,ti,ri,ni,oi,Ai,ii,ai,si,ci,li,ui,gi,pi,fi,di,hi,mi,Ii,Bi,ao,bi,so,ke;return(0,O.asyncExecutePromiseGeneratorProgram)(function(ce){if(ce.getNextAddressJsc()==1){if(y=n,ye=!!globalThis.window,Qe=!!globalThis.WorkerGlobalScope,be=((xe=globalThis.process)==null||(le=xe.versions)==null?void 0:le.node)&&((ge=globalThis.process)==null?void 0:ge.type)!="renderer",Me=we=!1,y.onRuntimeInitialized=function(){we=!0,Me&&typeof y.onModuleLoaded=="function"&&y.onModuleLoaded(y)},y.onModuleParsed=function(){Me=!0,we&&typeof y.onModuleLoaded=="function"&&y.onModuleLoaded(y)},y.isVersionSupported=Ie,typeof __filename<"u"?r=__filename:Qe&&(r=self.location.href),Ge="",be)He=(_t(),Ei(Pi)),Ge=__dirname+"/",_e=function(B){return B=Je(B)?new URL(B):B,He.readFileSync(B)},Ue=function(B,_){_=_===void 0?!0:_;var T;return(0,O.asyncExecutePromiseGeneratorProgram)(function(fe){return B=Je(B)?new URL(B):B,T=He.readFileSync(B,_?void 0:"utf8"),fe.return(T)})},me.argv.length>1&&me.argv[1].replace(/\\/g,"/"),me.argv.slice(2);else if(ye||Qe){try{Ge=new URL(".",r).href}catch{}Qe&&(_e=function(B){var _=new XMLHttpRequest;return _.open("GET",B,!1),_.responseType="arraybuffer",_.send(null),new Uint8Array(_.response)}),Ue=function(B){var _;return(0,O.asyncExecutePromiseGeneratorProgram)(function(T){if(T.getNextAddressJsc()==1)return Je(B)?T.return(new Promise(function(fe,H){var Oe=new XMLHttpRequest;Oe.open("GET",B,!0),Oe.responseType="arraybuffer",Oe.onload=function(){Oe.status==200||Oe.status==0&&Oe.response?fe(Oe.response):H(Oe.status)},Oe.onerror=H,Oe.send(null)})):T.yield(fetch(B,{credentials:"same-origin"}),2);if(_=T.getYieldResultJsc(),_.ok)return T.return(_.arrayBuffer());throw Error(_.status+" : "+_.url)})}}if(console.log.bind(console),Te=console.error.bind(console),Le=!1,Je=function(B){return B.startsWith("file://")},tt=function(){},qe=function(){return tt.apply(this,arguments)||this},O.inherits(qe,tt),Bt=!1,bt=function(B){for(;B.length>0;)B.shift()(y)},ut=[],Et=[],Xe=function(B){this.excPtr=B,this.ptr=B-24},Xe.prototype.set_type=function(B){gt[this.ptr+4>>2]=B},Xe.prototype.get_type=function(){return gt[this.ptr+4>>2]},Xe.prototype.set_destructor=function(B){gt[this.ptr+8>>2]=B},Xe.prototype.get_destructor=function(){return gt[this.ptr+8>>2]},Xe.prototype.set_caught=function(B){Ve[this.ptr+12]=B?1:0},Xe.prototype.get_caught=function(){return Ve[this.ptr+12]!=0},Xe.prototype.set_rethrown=function(B){Ve[this.ptr+13]=B?1:0},Xe.prototype.get_rethrown=function(){return Ve[this.ptr+13]!=0},Xe.prototype.init=function(B,_){this.set_adjusted_ptr(0),this.set_type(B),this.set_destructor(_)},Xe.prototype.set_adjusted_ptr=function(B){gt[this.ptr+16>>2]=B},Xe.prototype.get_adjusted_ptr=function(){return gt[this.ptr+16>>2]},ht=0,Gt=function(B){he()},pt=function(B,_,T){new Xe(B).init(_,T),ht++,Gt(B)},Jt=function(){return he("")},it=function(){return 2147483648},Rt=function(B,_){return Math.ceil(B/_)*_},ft=function(B){var _=ao.buffer.byteLength;try{return ao.grow((B-_+65535)/65536|0),Se(),1}catch{}},yr=function(B){var _=vt.length;B>>>=0;var T=it();if(B>T)return!1;for(var fe=1;fe<=4;fe*=2){var H=_*(1+.2/fe);if(H=Math.min(H,B+100663296),H=Math.min(T,Rt(Math.max(B,H),65536)),ft(H))return!0}return!1},tr=function(B){for(var _=0,T=0;T<B.length;++T){var fe=B.charCodeAt(T);fe<=127?_++:fe<=2047?_+=2:fe>=55296&&fe<=57343?(_+=4,++T):_+=3}return _},Ft=function(B,_,T,fe){if(!(fe>0))return 0;var H=T;fe=T+fe-1;for(var Oe=0;Oe<B.length;++Oe){var nt=B.codePointAt(Oe);if(nt<=127){if(T>=fe)break;_[T++]=nt}else if(nt<=2047){if(T+1>=fe)break;_[T++]=192|nt>>6,_[T++]=128|nt&63}else if(nt<=65535){if(T+2>=fe)break;_[T++]=224|nt>>12,_[T++]=128|nt>>6&63,_[T++]=128|nt&63}else{if(T+3>=fe)break;_[T++]=240|nt>>18,_[T++]=128|nt>>12&63,_[T++]=128|nt>>6&63,_[T++]=128|nt&63,Oe++}}return _[T]=0,T-H},rr=function(B,_,T){return T=T>0?T:tr(B)+1,T=Array(T),B=Ft(B,T,0,T.length),_&&(T.length=B),T},yt=globalThis.TextDecoder&&new TextDecoder,Cr=function(B,_,T,fe){if(T=_+T,fe)return T;for(;B[_]&&!(_>=T);)++_;return _},at=function(B,_,T,fe){if(_=_===void 0?0:_,T=Cr(B,_,T,fe),T-_>16&&B.buffer&&yt)return yt.decode(B.subarray(_,T));for(fe="";_<T;){var H=B[_++];if(H&128){var Oe=B[_++]&63;if((H&224)==192)fe+=String.fromCharCode((H&31)<<6|Oe);else{var nt=B[_++]&63;H=(H&240)==224?(H&15)<<12|Oe<<6|nt:(H&7)<<18|Oe<<12|nt<<6|B[_++]&63,H<65536?fe+=String.fromCharCode(H):(H-=65536,fe+=String.fromCharCode(55296|H>>10,56320|H&1023))}}else fe+=String.fromCharCode(H)}return fe},Kt=function(B,_,T){return B?at(vt,B,_,T):""},nr=[],ot=function(B){return nr.push(B)},y.printErr&&(Te=y.printErr),y.wasmBinary&&(je=y.wasmBinary),Ct=y.preInit)for(typeof Ct=="function"&&(y.preInit=Ct=[Ct]);Ct.length>0;)Ct.shift()();return bi={a:pt,c:Jt,b:yr},ce.yield(re(),2)}return ce.getNextAddressJsc()!=3?(so=ce.getYieldResultJsc(),ce.yield(Ae(),3)):(X.prototype=Object.create(X.prototype),X.prototype.constructor=X,X.prototype.__class__=X,X.__cache__={},y.WrapperObject=X,y.getCache=W,y.wrapPointer=J,y.castObject=z,y.NULL=J(0),y.destroy=K,y.compare=R,y.getPointer=j,y.getClass=G,ke={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(ke.needed){for(var B=0;B<ke.temps.length;B++)y._webidl_free(ke.temps[B]);ke.temps.length=0,y._webidl_free(ke.buffer),ke.buffer=0,ke.size+=ke.needed,ke.needed=0}ke.buffer||(ke.size+=128,ke.buffer=y._webidl_malloc(ke.size),ke.buffer||he(void 0)),ke.pos=0},alloc:function(B,_){return ke.buffer||he(void 0),B=B.length*_.BYTES_PER_ELEMENT,B=Rt(B,8),ke.pos+B>=ke.size?(B>0||he(void 0),ke.needed+=B,_=y._webidl_malloc(B),ke.temps.push(_)):(_=ke.buffer+ke.pos,ke.pos+=B),_}},S.prototype=Object.create(X.prototype),S.prototype.constructor=S,S.prototype.__class__=S,S.__cache__={},y.VoidPtr=S,S.prototype.__destroy__=S.prototype.__destroy__=function(){Ut(this.ptr)},w.prototype=Object.create(X.prototype),w.prototype.constructor=w,w.prototype.__class__=w,w.__cache__={},y.DecoderBuffer=w,w.prototype.Init=w.prototype.Init=function(B,_){var T=this.ptr;ke.prepare(),typeof B=="object"&&(B=N(B)),_&&typeof _=="object"&&(_=_.ptr),Yt(T,B,_)},w.prototype.__destroy__=w.prototype.__destroy__=function(){Wt(this.ptr)},x.prototype=Object.create(X.prototype),x.prototype.constructor=x,x.prototype.__class__=x,x.__cache__={},y.AttributeTransformData=x,x.prototype.transform_type=x.prototype.transform_type=function(){return Qr(this.ptr)},x.prototype.__destroy__=x.prototype.__destroy__=function(){xr(this.ptr)},m.prototype=Object.create(X.prototype),m.prototype.constructor=m,m.prototype.__class__=m,m.__cache__={},y.GeometryAttribute=m,m.prototype.__destroy__=m.prototype.__destroy__=function(){vr(this.ptr)},D.prototype=Object.create(X.prototype),D.prototype.constructor=D,D.prototype.__class__=D,D.__cache__={},y.PointAttribute=D,D.prototype.size=D.prototype.size=function(){return _r(this.ptr)},D.prototype.GetAttributeTransformData=D.prototype.GetAttributeTransformData=function(){return J(Mr(this.ptr),x)},D.prototype.attribute_type=D.prototype.attribute_type=function(){return Sr(this.ptr)},D.prototype.data_type=D.prototype.data_type=function(){return Pr(this.ptr)},D.prototype.num_components=D.prototype.num_components=function(){return or(this.ptr)},D.prototype.normalized=D.prototype.normalized=function(){return!!kt(this.ptr)},D.prototype.byte_stride=D.prototype.byte_stride=function(){return Gr(this.ptr)},D.prototype.byte_offset=D.prototype.byte_offset=function(){return Rr(this.ptr)},D.prototype.unique_id=D.prototype.unique_id=function(){return Ar(this.ptr)},D.prototype.__destroy__=D.prototype.__destroy__=function(){Fr(this.ptr)},b.prototype=Object.create(X.prototype),b.prototype.constructor=b,b.prototype.__class__=b,b.__cache__={},y.AttributeQuantizationTransform=b,b.prototype.InitFromAttribute=b.prototype.InitFromAttribute=function(B){var _=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),!!Nt(_,B)},b.prototype.quantization_bits=b.prototype.quantization_bits=function(){return Ur(this.ptr)},b.prototype.min_value=b.prototype.min_value=function(B){var _=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),kr(_,B)},b.prototype.range=b.prototype.range=function(){return ar(this.ptr)},b.prototype.__destroy__=b.prototype.__destroy__=function(){Xt(this.ptr)},I.prototype=Object.create(X.prototype),I.prototype.constructor=I,I.prototype.__class__=I,I.__cache__={},y.AttributeOctahedronTransform=I,I.prototype.InitFromAttribute=I.prototype.InitFromAttribute=function(B){var _=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),!!Tt(_,B)},I.prototype.quantization_bits=I.prototype.quantization_bits=function(){return sr(this.ptr)},I.prototype.__destroy__=I.prototype.__destroy__=function(){C(this.ptr)},h.prototype=Object.create(X.prototype),h.prototype.constructor=h,h.prototype.__class__=h,h.__cache__={},y.PointCloud=h,h.prototype.num_attributes=h.prototype.num_attributes=function(){return k(this.ptr)},h.prototype.num_points=h.prototype.num_points=function(){return V(this.ptr)},h.prototype.__destroy__=h.prototype.__destroy__=function(){q(this.ptr)},d.prototype=Object.create(X.prototype),d.prototype.constructor=d,d.prototype.__class__=d,d.__cache__={},y.Mesh=d,d.prototype.num_faces=d.prototype.num_faces=function(){return ae(this.ptr)},d.prototype.num_attributes=d.prototype.num_attributes=function(){return se(this.ptr)},d.prototype.num_points=d.prototype.num_points=function(){return pe(this.ptr)},d.prototype.__destroy__=d.prototype.__destroy__=function(){ue(this.ptr)},f.prototype=Object.create(X.prototype),f.prototype.constructor=f,f.prototype.__class__=f,f.__cache__={},y.Metadata=f,f.prototype.__destroy__=f.prototype.__destroy__=function(){ve(this.ptr)},p.prototype=Object.create(X.prototype),p.prototype.constructor=p,p.prototype.__class__=p,p.__cache__={},y.Status=p,p.prototype.code=p.prototype.code=function(){return Fe(this.ptr)},p.prototype.ok=p.prototype.ok=function(){return!!Ke(this.ptr)},p.prototype.error_msg=p.prototype.error_msg=function(){return Kt(Ne(this.ptr))},p.prototype.__destroy__=p.prototype.__destroy__=function(){et(this.ptr)},g.prototype=Object.create(X.prototype),g.prototype.constructor=g,g.prototype.__class__=g,g.__cache__={},y.DracoFloat32Array=g,g.prototype.GetValue=g.prototype.GetValue=function(B){var _=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),Dt(_,B)},g.prototype.size=g.prototype.size=function(){return ct(this.ptr)},g.prototype.__destroy__=g.prototype.__destroy__=function(){cr(this.ptr)},u.prototype=Object.create(X.prototype),u.prototype.constructor=u,u.prototype.__class__=u,u.__cache__={},y.DracoInt8Array=u,u.prototype.GetValue=u.prototype.GetValue=function(B){var _=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),nn(_,B)},u.prototype.size=u.prototype.size=function(){return on(this.ptr)},u.prototype.__destroy__=u.prototype.__destroy__=function(){An(this.ptr)},l.prototype=Object.create(X.prototype),l.prototype.constructor=l,l.prototype.__class__=l,l.__cache__={},y.DracoUInt8Array=l,l.prototype.GetValue=l.prototype.GetValue=function(B){var _=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),sn(_,B)},l.prototype.size=l.prototype.size=function(){return cn(this.ptr)},l.prototype.__destroy__=l.prototype.__destroy__=function(){ln(this.ptr)},c.prototype=Object.create(X.prototype),c.prototype.constructor=c,c.prototype.__class__=c,c.__cache__={},y.DracoInt16Array=c,c.prototype.GetValue=c.prototype.GetValue=function(B){var _=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),gn(_,B)},c.prototype.size=c.prototype.size=function(){return pn(this.ptr)},c.prototype.__destroy__=c.prototype.__destroy__=function(){fn(this.ptr)},s.prototype=Object.create(X.prototype),s.prototype.constructor=s,s.prototype.__class__=s,s.__cache__={},y.DracoUInt16Array=s,s.prototype.GetValue=s.prototype.GetValue=function(B){var _=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),hn(_,B)},s.prototype.size=s.prototype.size=function(){return mn(this.ptr)},s.prototype.__destroy__=s.prototype.__destroy__=function(){In(this.ptr)},a.prototype=Object.create(X.prototype),a.prototype.constructor=a,a.prototype.__class__=a,a.__cache__={},y.DracoInt32Array=a,a.prototype.GetValue=a.prototype.GetValue=function(B){var _=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),bn(_,B)},a.prototype.size=a.prototype.size=function(){return En(this.ptr)},a.prototype.__destroy__=a.prototype.__destroy__=function(){yn(this.ptr)},i.prototype=Object.create(X.prototype),i.prototype.constructor=i,i.prototype.__class__=i,i.__cache__={},y.DracoUInt32Array=i,i.prototype.GetValue=i.prototype.GetValue=function(B){var _=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),Qn(_,B)},i.prototype.size=i.prototype.size=function(){return xn(this.ptr)},i.prototype.__destroy__=i.prototype.__destroy__=function(){wn(this.ptr)},A.prototype=Object.create(X.prototype),A.prototype.constructor=A,A.prototype.__class__=A,A.__cache__={},y.MetadataQuerier=A,A.prototype.HasEntry=A.prototype.HasEntry=function(B,_){var T=this.ptr;return ke.prepare(),B&&typeof B=="object"&&(B=B.ptr),_=_&&typeof _=="object"?_.ptr:M(_),!!Dn(T,B,_)},A.prototype.GetIntEntry=A.prototype.GetIntEntry=function(B,_){var T=this.ptr;return ke.prepare(),B&&typeof B=="object"&&(B=B.ptr),_=_&&typeof _=="object"?_.ptr:M(_),_n(T,B,_)},A.prototype.GetIntEntryArray=A.prototype.GetIntEntryArray=function(B,_,T){var fe=this.ptr;ke.prepare(),B&&typeof B=="object"&&(B=B.ptr),_=_&&typeof _=="object"?_.ptr:M(_),T&&typeof T=="object"&&(T=T.ptr),Mn(fe,B,_,T)},A.prototype.GetDoubleEntry=A.prototype.GetDoubleEntry=function(B,_){var T=this.ptr;return ke.prepare(),B&&typeof B=="object"&&(B=B.ptr),_=_&&typeof _=="object"?_.ptr:M(_),Sn(T,B,_)},A.prototype.GetStringEntry=A.prototype.GetStringEntry=function(B,_){var T=this.ptr;return ke.prepare(),B&&typeof B=="object"&&(B=B.ptr),_=_&&typeof _=="object"?_.ptr:M(_),Kt(Pn(T,B,_))},A.prototype.NumEntries=A.prototype.NumEntries=function(B){var _=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),Gn(_,B)},A.prototype.GetEntryName=A.prototype.GetEntryName=function(B,_){var T=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_&&typeof _=="object"&&(_=_.ptr),Kt(Rn(T,B,_))},A.prototype.__destroy__=A.prototype.__destroy__=function(){Fn(this.ptr)},o.prototype=Object.create(X.prototype),o.prototype.constructor=o,o.prototype.__class__=o,o.__cache__={},y.Decoder=o,o.prototype.DecodeArrayToPointCloud=o.prototype.DecodeArrayToPointCloud=function(B,_,T){var fe=this.ptr;return ke.prepare(),typeof B=="object"&&(B=N(B)),_&&typeof _=="object"&&(_=_.ptr),T&&typeof T=="object"&&(T=T.ptr),J(kn(fe,B,_,T),p)},o.prototype.DecodeArrayToMesh=o.prototype.DecodeArrayToMesh=function(B,_,T){var fe=this.ptr;return ke.prepare(),typeof B=="object"&&(B=N(B)),_&&typeof _=="object"&&(_=_.ptr),T&&typeof T=="object"&&(T=T.ptr),J(Nn(fe,B,_,T),p)},o.prototype.GetAttributeId=o.prototype.GetAttributeId=function(B,_){var T=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_&&typeof _=="object"&&(_=_.ptr),Tn(T,B,_)},o.prototype.GetAttributeIdByName=o.prototype.GetAttributeIdByName=function(B,_){var T=this.ptr;return ke.prepare(),B&&typeof B=="object"&&(B=B.ptr),_=_&&typeof _=="object"?_.ptr:M(_),Ln(T,B,_)},o.prototype.GetAttributeIdByMetadataEntry=o.prototype.GetAttributeIdByMetadataEntry=function(B,_,T){var fe=this.ptr;return ke.prepare(),B&&typeof B=="object"&&(B=B.ptr),_=_&&typeof _=="object"?_.ptr:M(_),T=T&&typeof T=="object"?T.ptr:M(T),On(fe,B,_,T)},o.prototype.GetAttribute=o.prototype.GetAttribute=function(B,_){var T=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_&&typeof _=="object"&&(_=_.ptr),J(Hn(T,B,_),D)},o.prototype.GetAttributeByUniqueId=o.prototype.GetAttributeByUniqueId=function(B,_){var T=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_&&typeof _=="object"&&(_=_.ptr),J(Nr(T,B,_),D)},o.prototype.GetMetadata=o.prototype.GetMetadata=function(B){var _=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),J(jn(_,B),f)},o.prototype.GetAttributeMetadata=o.prototype.GetAttributeMetadata=function(B,_){var T=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_&&typeof _=="object"&&(_=_.ptr),J(Tr(T,B,_),f)},o.prototype.GetFaceFromMesh=o.prototype.GetFaceFromMesh=function(B,_,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_&&typeof _=="object"&&(_=_.ptr),T&&typeof T=="object"&&(T=T.ptr),!!De(fe,B,_,T)},o.prototype.GetTriangleStripsFromMesh=o.prototype.GetTriangleStripsFromMesh=function(B,_){var T=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_&&typeof _=="object"&&(_=_.ptr),ee(T,B,_)},o.prototype.GetTrianglesUInt16Array=o.prototype.GetTrianglesUInt16Array=function(B,_,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_&&typeof _=="object"&&(_=_.ptr),T&&typeof T=="object"&&(T=T.ptr),!!E(fe,B,_,T)},o.prototype.GetTrianglesUInt32Array=o.prototype.GetTrianglesUInt32Array=function(B,_,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_&&typeof _=="object"&&(_=_.ptr),T&&typeof T=="object"&&(T=T.ptr),!!v(fe,B,_,T)},o.prototype.GetAttributeFloat=o.prototype.GetAttributeFloat=function(B,_,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_&&typeof _=="object"&&(_=_.ptr),T&&typeof T=="object"&&(T=T.ptr),!!P(fe,B,_,T)},o.prototype.GetAttributeFloatForAllPoints=o.prototype.GetAttributeFloatForAllPoints=function(B,_,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_&&typeof _=="object"&&(_=_.ptr),T&&typeof T=="object"&&(T=T.ptr),!!Y(fe,B,_,T)},o.prototype.GetAttributeIntForAllPoints=o.prototype.GetAttributeIntForAllPoints=function(B,_,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_&&typeof _=="object"&&(_=_.ptr),T&&typeof T=="object"&&(T=T.ptr),!!U(fe,B,_,T)},o.prototype.GetAttributeInt8ForAllPoints=o.prototype.GetAttributeInt8ForAllPoints=function(B,_,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_&&typeof _=="object"&&(_=_.ptr),T&&typeof T=="object"&&(T=T.ptr),!!Ce(fe,B,_,T)},o.prototype.GetAttributeUInt8ForAllPoints=o.prototype.GetAttributeUInt8ForAllPoints=function(B,_,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_&&typeof _=="object"&&(_=_.ptr),T&&typeof T=="object"&&(T=T.ptr),!!rt(fe,B,_,T)},o.prototype.GetAttributeInt16ForAllPoints=o.prototype.GetAttributeInt16ForAllPoints=function(B,_,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_&&typeof _=="object"&&(_=_.ptr),T&&typeof T=="object"&&(T=T.ptr),!!PA(fe,B,_,T)},o.prototype.GetAttributeUInt16ForAllPoints=o.prototype.GetAttributeUInt16ForAllPoints=function(B,_,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_&&typeof _=="object"&&(_=_.ptr),T&&typeof T=="object"&&(T=T.ptr),!!GA(fe,B,_,T)},o.prototype.GetAttributeInt32ForAllPoints=o.prototype.GetAttributeInt32ForAllPoints=function(B,_,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_&&typeof _=="object"&&(_=_.ptr),T&&typeof T=="object"&&(T=T.ptr),!!RA(fe,B,_,T)},o.prototype.GetAttributeUInt32ForAllPoints=o.prototype.GetAttributeUInt32ForAllPoints=function(B,_,T){var fe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_&&typeof _=="object"&&(_=_.ptr),T&&typeof T=="object"&&(T=T.ptr),!!FA(fe,B,_,T)},o.prototype.GetAttributeDataArrayForAllPoints=o.prototype.GetAttributeDataArrayForAllPoints=function(B,_,T,fe,H){var Oe=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_&&typeof _=="object"&&(_=_.ptr),T&&typeof T=="object"&&(T=T.ptr),fe&&typeof fe=="object"&&(fe=fe.ptr),H&&typeof H=="object"&&(H=H.ptr),!!UA(Oe,B,_,T,fe,H)},o.prototype.SkipAttributeTransform=o.prototype.SkipAttributeTransform=function(B){var _=this.ptr;B&&typeof B=="object"&&(B=B.ptr),kA(_,B)},o.prototype.GetEncodedGeometryType_Deprecated=o.prototype.GetEncodedGeometryType_Deprecated=function(B){var _=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),NA(_,B)},o.prototype.DecodeBufferToPointCloud=o.prototype.DecodeBufferToPointCloud=function(B,_){var T=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_&&typeof _=="object"&&(_=_.ptr),J(TA(T,B,_),p)},o.prototype.DecodeBufferToMesh=o.prototype.DecodeBufferToMesh=function(B,_){var T=this.ptr;return B&&typeof B=="object"&&(B=B.ptr),_&&typeof _=="object"&&(_=_.ptr),J(LA(T,B,_),p)},o.prototype.__destroy__=o.prototype.__destroy__=function(){OA(this.ptr)},(function(){function B(){y.ATTRIBUTE_INVALID_TRANSFORM=HA(),y.ATTRIBUTE_NO_TRANSFORM=jA(),y.ATTRIBUTE_QUANTIZATION_TRANSFORM=VA(),y.ATTRIBUTE_OCTAHEDRON_TRANSFORM=JA(),y.INVALID=KA(),y.POSITION=zA(),y.NORMAL=YA(),y.COLOR=WA(),y.TEX_COORD=qA(),y.GENERIC=XA(),y.INVALID_GEOMETRY_TYPE=ZA(),y.POINT_CLOUD=$A(),y.TRIANGULAR_MESH=ei(),y.DT_INVALID=ti(),y.DT_INT8=ri(),y.DT_UINT8=ni(),y.DT_INT16=oi(),y.DT_UINT16=Ai(),y.DT_INT32=ii(),y.DT_UINT32=ai(),y.DT_INT64=si(),y.DT_UINT64=ci(),y.DT_FLOAT32=li(),y.DT_FLOAT64=ui(),y.DT_BOOL=gi(),y.DT_TYPES_COUNT=pi(),y.OK=fi(),y.DRACO_ERROR=di(),y.IO_ERROR=hi(),y.INVALID_PARAMETER=mi(),y.UNSUPPORTED_VERSION=Ii(),y.UNKNOWN_VERSION=Bi()}Bt?B():ot(B)})(),y.Decoder.prototype.GetEncodedGeometryType=function(B){if(B.__class__&&B.__class__===y.DecoderBuffer)return y.Decoder.prototype.GetEncodedGeometryType_Deprecated(B);if(B.byteLength<8)return y.INVALID_GEOMETRY_TYPE;switch(B[7]){case 0:return y.POINT_CLOUD;case 1:return y.TRIANGULAR_MESH;default:return y.INVALID_GEOMETRY_TYPE}},typeof y.onModuleParsed=="function"&&y.onModuleParsed(),ce.return(y))})}})();typeof $o=="object"&&typeof bo=="object"?(bo.exports=Zo,bo.exports.default=Zo):typeof define=="function"&&define.amd&&define([],function(){return Zo})});var ia=Vn((Lu,Aa)=>{$();var Ss=na(),Ps=oa();Aa.exports={createEncoderModule:Ss,createDecoderModule:Ps}});var Ra=Vn((af,Ga)=>{$();var Uo=()=>new Proxy(function(){},{get:(e,t)=>t==="__esModule"?!0:t===Symbol.toPrimitive?()=>"":Uo(),apply:()=>Uo(),construct:()=>Uo()});Ga.exports=Uo()});$();var Oi=new Float32Array(2048);for(let e=0;e<2048;e++)Oi[e]=.5*(1-Math.cos(2*Math.PI*e/2047));var Hi=new Uint16Array(2048);for(let e=0;e<2048;e++){let t=0,r=e;for(let n=0;n<11;n++)t=t<<1|r&1,r>>=1;Hi[e]=t}var ji=new Float32Array(2048/2),Vi=new Float32Array(2048/2);for(let e=0;e<2048/2;e++){let t=-2*Math.PI*e/2048;ji[e]=Math.cos(t),Vi[e]=Math.sin(t)}function hs(e,t){for(let r=0;r<2048;r++){let n=Hi[r]??0;if(n>r){let o=e[r]??0;e[r]=e[n]??0,e[n]=o;let A=t[r]??0;t[r]=t[n]??0,t[n]=A}}for(let r=2;r<=2048;r<<=1){let n=r>>1,o=2048/r;for(let A=0;A<2048;A+=r)for(let i=0;i<n;i++){let a=i*o,s=ji[a]??1,c=Vi[a]??0,l=e[A+i]??0,u=t[A+i]??0,g=e[A+i+n]??0,p=t[A+i+n]??0,f=g*s-p*c,d=g*c+p*s;e[A+i]=l+f,t[A+i]=u+d,e[A+i+n]=l-f,t[A+i+n]=u-d}}}var uo=class e{tempReal=new Float32Array(2048);tempImag=new Float32Array(2048);previousBins=new Float32Array(1024);extractAtTime(t,r,n){let o=t.length,A=o>0?t[0]?.length??0:0,a=Math.round(n*r)-1024;for(let x=0;x<2048;x++){let w=a+x,S=0;w>=0&&w<A&&(o===1?S=t[0]?.[w]??0:o>=2&&(S=((t[0]?.[w]??0)+(t[1]?.[w]??0))*.5)),this.tempReal[x]=S*(Oi[x]??1),this.tempImag[x]=0}hs(this.tempReal,this.tempImag);let s=new Float32Array(1024),c=2/2048;for(let x=0;x<1024;x++){let w=this.tempReal[x]??0,S=this.tempImag[x]??0;s[x]=Math.sqrt(w*w+S*S)*c*2}let l=r/2048,u=Math.max(1,Math.round(20/l)),g=Math.max(u+1,Math.round(150/l)),p=0;for(let x=u;x<=g&&x<1024;x++)p+=(s[x]??0)*(s[x]??0);let f=Math.min(1,Math.sqrt(p/(g-u+1))*4),d=0;for(let x=0;x<1024;x++){let w=(s[x]??0)-(this.previousBins[x]??0);w>0&&(d+=w),this.previousBins[x]=s[x]??0}let h=Math.min(1,d*.15),I=Math.round(300/l),b=Math.min(1023,Math.round(3400/l)),D=0;for(let x=I;x<=b;x++)D+=(s[x]??0)*(s[x]??0);let m=Math.min(1,Math.sqrt(D/(b-I+1))*3.5);return{fftBins:s,bassEnergy:f,drumTransient:h,vocalEnergy:m,timeMs:n*1e3}}static packBufferData(t){let r=new Float32Array(1028);return r.set(t.fftBins,0),r[1024]=t.bassEnergy,r[1025]=t.drumTransient,r[1026]=t.vocalEnergy,r[1027]=t.timeMs,r}static createGpuBuffer(t,r){let n=r?e.packBufferData(r):new Float32Array(1028),o=t.createBuffer({label:"AudioLatentBuffer",size:4112,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});return new Float32Array(o.getMappedRange()).set(n),o.unmap(),o}static updateGpuBuffer(t,r,n){let o=e.packBufferData(n);t.queue.writeBuffer(r,0,o)}},Li=class{constructor(t,r,n,o){this.channels=t;this.sampleRate=r;this.fps=n;this.totalFrames=o;let A=new uo,i=r||48e3,a=n||30,s=t[0]?.length??0,c=Math.max(10,Math.ceil(s/i*a)+10),l=typeof o=="number"&&Number.isFinite(o)&&o>0?Math.round(o):c;this.frames=new Array(l);for(let u=0;u<l;u++){let g=u/a;this.frames[u]=A.extractAtTime(t,i,g)}}channels;sampleRate;fps;totalFrames;frames=[];gpuBuffers=new WeakMap;getFrameData(t){let r=Math.max(0,Math.min(this.totalFrames-1,Math.round(t)));return this.frames[r]??{fftBins:new Float32Array(1024),bassEnergy:0,drumTransient:0,vocalEnergy:0,timeMs:r/this.fps*1e3}}getGpuBuffer(t,r){let n=this.gpuBuffers.get(t);n||(n=new Map,this.gpuBuffers.set(t,n));let o=Math.max(0,Math.min(this.totalFrames-1,Math.round(r))),A=n.get(o);if(!A){let i=this.getFrameData(o);A=uo.createGpuBuffer(t,i),n.set(o,A)}return A}};$();var Z={create(e=0,t=0,r=0){return[e,t,r]},copy(e){return[e[0],e[1],e[2]]},set(e,t,r,n){return e[0]=t,e[1]=r,e[2]=n,e},add(e,t){return[e[0]+t[0],e[1]+t[1],e[2]+t[2]]},subtract(e,t){return[e[0]-t[0],e[1]-t[1],e[2]-t[2]]},multiplyScalar(e,t){return[e[0]*t,e[1]*t,e[2]*t]},dot(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]},cross(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]},lengthSq(e){return e[0]*e[0]+e[1]*e[1]+e[2]*e[2]},length(e){return Math.hypot(e[0],e[1],e[2])},distance(e,t){return Math.hypot(e[0]-t[0],e[1]-t[1],e[2]-t[2])},normalize(e){let t=Math.hypot(e[0],e[1],e[2]);if(t===0)return[0,0,0];let r=1/t;return[e[0]*r,e[1]*r,e[2]*r]},lerp(e,t,r){return[e[0]+(t[0]-e[0])*r,e[1]+(t[1]-e[1])*r,e[2]+(t[2]-e[2])*r]},equals(e,t,r=1e-6){return Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r}};$();var Ee={identity(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},copy(e){return[...e]},multiply(e,t){let r=new Array(16);for(let n=0;n<4;n++)for(let o=0;o<4;o++)r[o*4+n]=e[0+n]*t[o*4+0]+e[4+n]*t[o*4+1]+e[8+n]*t[o*4+2]+e[12+n]*t[o*4+3];return r},translate(e,t,r=0){return[1,0,0,0,0,1,0,0,0,0,1,0,e,t,r,1]},scale(e,t,r=1){return[e,0,0,0,0,t,0,0,0,0,r,0,0,0,0,1]},rotateX(e){let t=Math.cos(e),r=Math.sin(e);return[1,0,0,0,0,t,r,0,0,-r,t,0,0,0,0,1]},rotateY(e){let t=Math.cos(e),r=Math.sin(e);return[t,0,-r,0,0,1,0,0,r,0,t,0,0,0,0,1]},rotateZ(e){let t=Math.cos(e),r=Math.sin(e);return[t,r,0,0,-r,t,0,0,0,0,1,0,0,0,0,1]},rotateAxis(e,t){let r=Z.normalize(e),n=r[0],o=r[1],A=r[2],i=Math.cos(t),a=Math.sin(t),s=1-i;return[s*n*n+i,s*n*o+a*A,s*n*A-a*o,0,s*n*o-a*A,s*o*o+i,s*o*A+a*n,0,s*n*A+a*o,s*o*A-a*n,s*A*A+i,0,0,0,0,1]},lookAt(e,t,r=[0,-1,0]){let n=Z.subtract(t,e);Z.lengthSq(n)===0?n=[0,0,1]:n=Z.normalize(n);let o=Z.cross(n,r);Z.lengthSq(o)===0?o=[1,0,0]:o=Z.normalize(o);let A=Z.cross(o,n);return[o[0],A[0],n[0],0,o[1],A[1],n[1],0,o[2],A[2],n[2],0,-Z.dot(o,e),-Z.dot(A,e),-Z.dot(n,e),1]},perspective(e,t,r,n){let o=1/Math.tan(e/2),A=1/(n-r);return[o/t,0,0,0,0,o,0,0,0,0,n*A,1,0,0,-r*n*A,0]},orthographic(e,t,r,n,o,A){let i=1/(t-e),a=1/(n-r),s=1/(A-o);return[2*i,0,0,0,0,2*a,0,0,0,0,s,0,-(t+e)*i,-(n+r)*a,-o*s,1]},invert(e){let t=new Array(16);t[0]=e[5]*e[10]*e[15]-e[5]*e[11]*e[14]-e[9]*e[6]*e[15]+e[9]*e[7]*e[14]+e[13]*e[6]*e[11]-e[13]*e[7]*e[10],t[4]=-e[4]*e[10]*e[15]+e[4]*e[11]*e[14]+e[8]*e[6]*e[15]-e[8]*e[7]*e[14]-e[12]*e[6]*e[11]+e[12]*e[7]*e[10],t[8]=e[4]*e[9]*e[15]-e[4]*e[11]*e[13]-e[8]*e[5]*e[15]+e[8]*e[7]*e[13]+e[12]*e[5]*e[11]-e[12]*e[7]*e[9],t[12]=-e[4]*e[9]*e[14]+e[4]*e[10]*e[13]+e[8]*e[5]*e[14]-e[8]*e[6]*e[13]-e[12]*e[5]*e[10]+e[12]*e[6]*e[9],t[1]=-e[1]*e[10]*e[15]+e[1]*e[11]*e[14]+e[9]*e[2]*e[15]-e[9]*e[3]*e[14]-e[13]*e[2]*e[11]+e[13]*e[3]*e[10],t[5]=e[0]*e[10]*e[15]-e[0]*e[11]*e[14]-e[8]*e[2]*e[15]+e[8]*e[3]*e[14]+e[12]*e[2]*e[11]-e[12]*e[3]*e[10],t[9]=-e[0]*e[9]*e[15]+e[0]*e[11]*e[13]+e[8]*e[1]*e[15]-e[8]*e[3]*e[13]-e[12]*e[1]*e[11]+e[12]*e[3]*e[9],t[13]=e[0]*e[9]*e[14]-e[0]*e[10]*e[13]-e[8]*e[1]*e[14]+e[8]*e[2]*e[13]+e[12]*e[1]*e[10]-e[12]*e[2]*e[9],t[2]=e[1]*e[6]*e[15]-e[1]*e[7]*e[14]-e[5]*e[2]*e[15]+e[5]*e[3]*e[14]+e[13]*e[2]*e[7]-e[13]*e[3]*e[6],t[6]=-e[0]*e[6]*e[15]+e[0]*e[7]*e[14]+e[4]*e[2]*e[15]-e[4]*e[3]*e[14]-e[12]*e[2]*e[7]+e[12]*e[3]*e[6],t[10]=e[0]*e[5]*e[15]-e[0]*e[7]*e[13]-e[4]*e[1]*e[15]+e[4]*e[3]*e[13]+e[12]*e[1]*e[7]-e[12]*e[3]*e[5],t[14]=-e[0]*e[5]*e[14]+e[0]*e[6]*e[13]+e[4]*e[1]*e[14]-e[4]*e[2]*e[13]-e[12]*e[1]*e[6]+e[12]*e[2]*e[5],t[3]=-e[1]*e[6]*e[11]+e[1]*e[7]*e[10]+e[5]*e[2]*e[11]-e[5]*e[3]*e[10]-e[9]*e[2]*e[7]+e[9]*e[3]*e[6],t[7]=e[0]*e[6]*e[11]-e[0]*e[7]*e[10]-e[4]*e[2]*e[11]+e[4]*e[3]*e[10]+e[8]*e[2]*e[7]-e[8]*e[3]*e[6],t[11]=-e[0]*e[5]*e[11]+e[0]*e[7]*e[9]+e[4]*e[1]*e[11]-e[4]*e[3]*e[9]-e[8]*e[1]*e[7]+e[8]*e[3]*e[5],t[15]=e[0]*e[5]*e[10]-e[0]*e[6]*e[9]-e[4]*e[1]*e[10]+e[4]*e[2]*e[9]+e[8]*e[1]*e[6]-e[8]*e[2]*e[5];let r=e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12];if(Math.abs(r)<1e-12)return null;r=1/r;for(let n=0;n<16;n++)t[n]*=r;return t},transpose(e){return[e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]]},projectPoint(e,t){let r=t[0],n=t[1],o=t[2],A=e[0]*r+e[4]*n+e[8]*o+e[12],i=e[1]*r+e[5]*n+e[9]*o+e[13],a=e[2]*r+e[6]*n+e[10]*o+e[14],s=e[3]*r+e[7]*n+e[11]*o+e[15],c=Math.abs(s)>1e-6?1/s:1;return[A*c,i*c,a*c]},projectRectangle(e,t,r){return[Ee.projectPoint(e,[0,0,0]),Ee.projectPoint(e,[t,0,0]),Ee.projectPoint(e,[t,r,0]),Ee.projectPoint(e,[0,r,0])]},toFloat32Array(e){return new Float32Array(e)}};$();function Jn(e,t,r=3){let n=0,o=1,A=1,i=0;for(let a=0;a<r;a++){let s=Math.sin(e*o*2*Math.PI+t+a*1.7),c=Math.cos(e*o*1.414*Math.PI+t*2.1+a*.9);n+=(s*.6+c*.4)*A,i+=A,o*=2,A*=.5}return i>0?n/i:0}var Kr={createDefaultCamera(e,t,r=50){let n=r*Math.PI/180,o=t/2/Math.tan(n/2);return{eye:[e/2,t/2,-o],target:[e/2,t/2,0],up:[0,-1,0],fov:r,aspect:Math.max(1e-4,e/t),near:1,far:5e4,zoom:1,focusDistance:o,fStop:2.8,maxBlurRadius:32}},computeViewMatrix(e){return Ee.lookAt(e.eye,e.target,e.up)},computeProjectionMatrix(e){let t=e.fov*Math.PI/180,r=Ee.perspective(t,e.aspect,e.near,e.far);return e.zoom!==1&&e.zoom>0&&(r[0]*=e.zoom,r[5]*=e.zoom),r},computeViewProjectionMatrix(e){let t=Kr.computeViewMatrix(e),r=Kr.computeProjectionMatrix(e);return Ee.multiply(r,t)},dolly(e,t,r){let n=Z.normalize(Z.subtract(t,e)),o=Z.multiplyScalar(n,r);return{eye:Z.add(e,o),target:t}},truckPedestal(e,t,r,n,o){let A=Z.normalize(Z.subtract(t,e)),i=Z.normalize(Z.cross(A,r)),a=Z.cross(i,A),s=Z.multiplyScalar(i,n),c=Z.multiplyScalar(a,o),l=Z.add(s,c);return{eye:Z.add(e,l),target:Z.add(t,l)}},orbit(e,t,r,n){let o=r*Math.PI/180,A=n*Math.PI/180,i=Math.cos(A),a=Math.sin(A),s=Math.cos(o),c=Math.sin(o),l=e[0]+t*i*c,u=e[1]-t*a,g=e[2]-t*i*s;return[l,u,g]},applyOrientation(e,t,r,n){if(t===0&&r===0&&n===0)return e;let o=Z.normalize(Z.subtract(e.target,e.eye)),A=Z.normalize(Z.cross(o,e.up)),i=Z.cross(A,o),a=Z.distance(e.eye,e.target),s=o,c=i;if(r!==0){let g=r*Math.PI/180,p=Math.cos(g),f=Math.sin(g);s=Z.normalize(Z.subtract(Z.multiplyScalar(s,p),Z.multiplyScalar(A,f)))}let l=Z.normalize(Z.cross(s,c));if(t!==0){let g=t*Math.PI/180,p=Math.cos(g),f=Math.sin(g);s=Z.normalize(Z.add(Z.multiplyScalar(s,p),Z.multiplyScalar(c,f))),c=Z.normalize(Z.cross(l,s))}if(n!==0){let g=n*Math.PI/180,p=Math.cos(g),f=Math.sin(g);c=Z.normalize(Z.add(Z.multiplyScalar(c,p),Z.multiplyScalar(l,f)))}let u=Z.add(e.eye,Z.multiplyScalar(s,a));return{...e,target:u,up:c}},applyCameraShake(e,t,r){let{translationAmplitude:n,rotationAmplitude:o,frequency:A=2.5,octaves:i=3,seed:a=42}=r;if(n<=0&&o<=0)return e;let s=t*A,c=Jn(s,a,i)*n,l=Jn(s,a+101.5,i)*n,u=Jn(s,a+203.7,i)*(n*.5),g=Jn(s,a+307.1,i)*o,p=Jn(s,a+409.3,i)*o,f=Z.normalize(Z.subtract(e.target,e.eye)),d=Z.normalize(Z.cross(f,e.up)),h=Z.cross(d,f),I=Z.add(Z.multiplyScalar(d,c),Z.add(Z.multiplyScalar(h,l),Z.multiplyScalar(f,u))),b=Z.add(e.eye,I),D=Z.add(e.target,Z.add(Z.multiplyScalar(d,p*10),Z.multiplyScalar(h,g*10)));return{...e,eye:b,target:D}},computeCircleOfConfusion(e,t,r,n,o=32){if(t<=0||n<=0||e<=0)return 0;let A=Math.abs(e-t),i=r/n,a=A/e*i*.5;return Math.min(o,Math.max(0,a))},computeCameraFrustumPlanes(e){let t=r=>{let n=Math.hypot(r[0],r[1],r[2]);return n===0?r:[r[0]/n,r[1]/n,r[2]/n,r[3]/n]};return{left:t([e[3]+e[0],e[7]+e[4],e[11]+e[8],e[15]+e[12]]),right:t([e[3]-e[0],e[7]-e[4],e[11]-e[8],e[15]-e[12]]),bottom:t([e[3]+e[1],e[7]+e[5],e[11]+e[9],e[15]+e[13]]),top:t([e[3]-e[1],e[7]-e[5],e[11]-e[9],e[15]-e[13]]),near:t([e[2],e[6],e[10],e[14]]),far:t([e[3]-e[2],e[7]-e[6],e[11]-e[10],e[15]-e[14]])}},isBoxInFrustum(e,t,r){let n=[r.left,r.right,r.bottom,r.top,r.near,r.far];for(let o of n){let A=o[0]>0?t[0]:e[0],i=o[1]>0?t[1]:e[1],a=o[2]>0?t[2]:e[2];if(o[0]*A+o[1]*i+o[2]*a+o[3]<0)return!1}return!0}};$();var ms={studio:{top:"#9da3ad",horizon:"#5d626b",bottom:"#202226",softboxes:3.5},soft:{top:"#f1efea",horizon:"#cfcac1",bottom:"#77726a",softboxes:1.2},sunset:{top:"#4d63a3",horizon:"#ff9a5c",bottom:"#3b2a28",softboxes:1},night:{top:"#121a3a",horizon:"#1f2950",bottom:"#05060b",softboxes:.5},neutral:{top:"#9a9a9a",horizon:"#808080",bottom:"#5c5c5c",softboxes:0}},Is={none:0,aces:1,agx:2,neutral:3};function Lr(e){let t=Mi(e)??[0,0,0,1],r=n=>n<=.04045?n/12.92:((n+.055)/1.055)**2.4;return[r(t[0]),r(t[1]),r(t[2])]}function Ji(e){let t=ms[e.preset??"studio"],r=e.intensity??1,n=o=>[o[0]*r,o[1]*r,o[2]*r];return{top:n(Lr(e.top??t.top)),horizon:n(Lr(e.horizon??t.horizon)),bottom:n(Lr(e.bottom??t.bottom)),softboxes:(e.softboxes??t.softboxes)*r,rotationRad:(e.rotation??0)*Math.PI/180,exposureMultiplier:2**(e.exposure??0),toneMapping:Is[e.toneMapping??"neutral"],fog:e.fog?{color:Lr(e.fog.color),start:e.fog.start,end:e.fog.end,opacity:Math.max(0,Math.min(1,e.fog.opacity??1))}:void 0,floor:e.floor?{y:e.floor.y,color:Lr(e.floor.color??"#08070a"),reflectivity:Math.max(0,Math.min(1,e.floor.reflectivity??.35)),roughness:Math.max(0,Math.min(1,e.floor.roughness??.35)),fadeDistance:Math.max(0,e.floor.fadeDistance??900),opacity:Math.max(0,Math.min(1,e.floor.opacity??1))}:void 0}}$();var Ki=8,zo=768;function Ko(e){if(!e)return[1,1,1];if(Array.isArray(e)){let o=e[0]??1,A=e[1]??1,i=e[2]??1;return[o>1?o/255:o,A>1?A/255:A,i>1?i/255:i]}if(typeof e=="object"&&e!==null){let o=e.r??1,A=e.g??1,i=e.b??1;return[o>1?o/255:o,A>1?A/255:A,i>1?i/255:i]}if(typeof e!="string")return[1,1,1];let t=e.trim().toLowerCase();if(t.startsWith("#")){let o=t.slice(1);if(o.length===3){let A=Number.parseInt(o[0]+o[0],16)/255,i=Number.parseInt(o[1]+o[1],16)/255,a=Number.parseInt(o[2]+o[2],16)/255;return[A,i,a]}if(o.length>=6){let A=Number.parseInt(o.slice(0,2),16)/255,i=Number.parseInt(o.slice(2,4),16)/255,a=Number.parseInt(o.slice(4,6),16)/255;return[A,i,a]}}let r=t.match(/rgba?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/);if(r){let o=Number.parseFloat(r[1])/255,A=Number.parseFloat(r[2])/255,i=Number.parseFloat(r[3])/255;return[Math.max(0,Math.min(1,o)),Math.max(0,Math.min(1,A)),Math.max(0,Math.min(1,i))]}let n=t.match(/hsla?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)%?\s*,\s*([\d.]+)%?/);if(n){let o=Number.parseFloat(n[1])/360,A=Number.parseFloat(n[2])/100,i=Number.parseFloat(n[3])/100;return Bs(o,A,i)}return[1,1,1]}function Bs(e,t,r){if(t===0)return[r,r,r];let n=(i,a,s)=>{let c=s;return c<0&&(c+=1),c>1&&(c-=1),c<1/6?i+(a-i)*6*c:c<1/2?a:c<2/3?i+(a-i)*(2/3-c)*6:i},o=r<.5?r*(1+t):r+t-r*t,A=2*r-o;return[n(A,o,e+1/3),n(A,o,e),n(A,o,e-1/3)]}var Qt={computeNormalMatrix(e){let t=Ee.invert(e);return t?[t[0],t[4],t[8],0,t[1],t[5],t[9],0,t[2],t[6],t[10],0,0,0,0,1]:Ee.identity()},processLight(e){let t=Ko(e.color),r=e.intensity??1,n=e.position?e.position[0]:e.x??0,o=e.position?e.position[1]:e.y??0,A=e.position?e.position[2]:e.z??0,i=e.lightType??e.type??"directional",a=1;i==="ambient"?a=0:i==="directional"?a=1:i==="point"?a=2:i==="spot"&&(a=3);let s=[0,0,-1];if(e.direction)s=Z.normalize(e.direction);else if(e.target||e.targetX!==void 0||e.targetY!==void 0||e.targetZ!==void 0){let I=e.target?e.target[0]:e.targetX??n,b=e.target?e.target[1]:e.targetY??o,D=e.target?e.target[2]:e.targetZ??A,m=[I,b,D],x=Z.subtract(m,[n,o,A]);Z.length(x)>1e-4&&(s=Z.normalize(x))}let c=Math.max(1,e.radius??1e3),l=e.decay??2,u=Math.max(.1,Math.min(180,e.angle??45)),g=Math.max(0,Math.min(1,e.penumbra??.2)),p=u*Math.PI/180,f=p*(1-g),d=Math.cos(p),h=Math.cos(f);return{posType:[n,o,A,a],dirRadius:[s[0],s[1],s[2],c],colorIntensity:[t[0],t[1],t[2],r],spotParams:[d,h,l,0]}},packLightsUniforms(e,t,r,n=!1){let o=new Float32Array(zo/4);if(Qt.packPhysicalBlock(o,e??[],t,r,n),(!e||e.length===0)&&!t)return o[4]=0,o[5]=0,o;let A=0,i=0,a=0,s=[];for(let l of e)if((l.lightType??l.type)==="ambient"){let g=Ko(l.color),p=l.intensity??1;A+=g[0]*p,i+=g[1]*p,a+=g[2]*p}else s.push(Qt.processLight(l));o[0]=A,o[1]=i,o[2]=a,o[3]=1,o[4]=s.length,o[5]=1;let c=8;for(let l=0;l<Ki;l++){if(l<s.length){let u=s[l];o[c+0]=u.posType[0],o[c+1]=u.posType[1],o[c+2]=u.posType[2],o[c+3]=u.posType[3],o[c+4]=u.dirRadius[0],o[c+5]=u.dirRadius[1],o[c+6]=u.dirRadius[2],o[c+7]=u.dirRadius[3],o[c+8]=u.colorIntensity[0],o[c+9]=u.colorIntensity[1],o[c+10]=u.colorIntensity[2],o[c+11]=u.colorIntensity[3],o[c+12]=u.spotParams[0],o[c+13]=u.spotParams[1],o[c+14]=u.spotParams[2],o[c+15]=u.spotParams[3]}else for(let u=0;u<16;u++)o[c+u]=0;c+=16}return o},packDirectLights(e,t=[]){let r=e.filter(A=>(A.lightType??A.type)!=="ambient"),n=new Float32Array(Math.max(1,r.length)*40),o=new Map(t.map((A,i)=>[A.lightIndex,i]));for(let[A,i]of r.entries()){let a=Qt.processLight(i),s=A*40;n.set(a.posType,s),n.set(a.dirRadius,s+4),n.set(a.colorIntensity,s+8),n.set(a.spotParams,s+12);let c=o.get(A),l=c===void 0?void 0:t[c];if(l&&c!==void 0){for(let u=0;u<16;u++)n[s+16+u]=l.matrix[u]??0;n.set([l.softness,l.mapSize,c,1],s+32),n.set([l.bias,l.normalOffset,l.darkness,0],s+36)}}return n},shadowCasterIndex(e){let t=0;for(let r of e){let n=r.lightType??r.type;if(n!=="ambient"){if(r.castShadow&&(n==="directional"||n==="spot"))return t;t++}}return-1},packPhysicalBlock(e,t,r,n,o=!1){let A=8+Ki*16,i=0,a=0,s=0;for(let c of t){if((c.lightType??c.type)!=="ambient")continue;let[l,u,g]=Ko(c.color),p=c.intensity??1,f=d=>d<=.04045?d/12.92:((d+.055)/1.055)**2.4;i+=f(l)*p,a+=f(u)*p,s+=f(g)*p}if(e[A+0]=i,e[A+1]=a,e[A+2]=s,e[A+3]=1,r){let c=Ji(r);e[6]=1,e[7]=c.toneMapping,e[A+3]=c.exposureMultiplier,e.set([...c.top,c.rotationRad],A+4),e.set([...c.horizon,c.softboxes],A+8),e.set([...c.bottom,1],A+12),c.fog&&(e.set([...c.fog.color,1],A+16),e.set([c.fog.start,c.fog.end,c.fog.opacity,0],A+20))}if(n&&n.lightIndex>=0){e.set([1,n.lightIndex,n.softness,n.mapSize],A+24),e.set([n.bias,n.normalOffset,n.darkness,0],A+28);for(let c=0;c<16;c++)e[A+32+c]=n.matrix[c]??0}r?.floor?(e[A+48]=r.floor.y,e[A+49]=r.floor.fadeDistance??900,e[A+50]=o?1:0,e[A+51]=0):(e[A+48]=0,e[A+49]=0,e[A+50]=0,e[A+51]=0)}};$();var gr=class e{samples=[];frames=[];totalLength=0;constructor(t){if(t.length<2)throw new Error("Path3D requires at least 2 coordinate samples");this.samples=t,this.totalLength=t[t.length-1].distance,this.computeRotationMinimizingFrames()}computeRotationMinimizingFrames(){let t=this.samples.length;this.frames=new Array(t);let r=this.samples[0].tangent,n=[0,-1,0];Math.abs(Z.dot(r,n))>.95&&(n=[0,0,1]);let o=Z.normalize(Z.subtract(n,Z.multiplyScalar(r,Z.dot(n,r))));Z.lengthSq(o)<1e-4&&(o=[1,0,0]);let A=Z.normalize(Z.cross(r,o));this.frames[0]={normal:o,binormal:A,rotation:this.eulerFromFrame(r,o,A)};for(let i=0;i<t-1;i++){let a=this.samples[i].position,s=this.samples[i+1].position,c=this.samples[i].tangent,l=this.samples[i+1].tangent,u=this.frames[i].normal,g=Z.subtract(s,a),p=Z.dot(g,g),f;if(p>1e-8){let h=Z.subtract(c,Z.multiplyScalar(g,2*Z.dot(g,c)/p)),I=Z.subtract(u,Z.multiplyScalar(g,2*Z.dot(g,u)/p)),b=Z.subtract(l,h),D=Z.dot(b,b);D>1e-8?f=Z.subtract(I,Z.multiplyScalar(b,2*Z.dot(b,I)/D)):f=I}else f=u;f=Z.normalize(Z.subtract(f,Z.multiplyScalar(l,Z.dot(l,f))));let d=Z.normalize(Z.cross(l,f));this.frames[i+1]={normal:f,binormal:d,rotation:this.eulerFromFrame(l,f,d)}}}eulerFromFrame(t,r,n){let o=Math.asin(Math.max(-1,Math.min(1,-t[1])))*(180/Math.PI),A=Math.atan2(t[0],t[2])*(180/Math.PI),i=Math.atan2(r[0],r[1])*(180/Math.PI);return[o,A,i]}getSamples(){return this.samples}getPoints(t=64){let r=Math.max(2,Math.round(t)),n=[];for(let o=0;o<r;o++)n.push(this.getPointAt(o/(r-1)).position);return n}getPointAt(t){let n=Math.max(0,Math.min(1,t))*this.totalLength;return this.getPointAtDistance(n)}getPointAtDistance(t){let r=Math.max(0,Math.min(this.totalLength,t)),n=this.samples.length,o=0,A=n-1;for(;o<A;){let D=o+A>>1;this.samples[D].distance<r?o=D+1:A=D}let i=Math.max(1,o),a=i-1,s=this.samples[a],c=this.samples[i],l=c.distance-s.distance,u=l>1e-6?(r-s.distance)/l:0,g=Z.lerp(s.position,c.position,u),p=Z.normalize(Z.lerp(s.tangent,c.tangent,u)),f=this.frames[a],d=this.frames[i],h=Z.normalize(Z.lerp(f.normal,d.normal,u)),I=Z.normalize(Z.cross(p,h)),b=[f.rotation[0]+(d.rotation[0]-f.rotation[0])*u,f.rotation[1]+(d.rotation[1]-f.rotation[1])*u,f.rotation[2]+(d.rotation[2]-f.rotation[2])*u];return{position:g,tangent:p,normal:h,binormal:I,distance:r,t:this.totalLength>0?r/this.totalLength:0,rotation:b}}static catmullRom(t,r={}){if(t.length<2)throw new Error("Catmull-Rom spline requires at least 2 waypoints");let n=!!r.closed,o=r.samplesPerSegment??40,A=[];if(n)A.push(t[t.length-1]),A.push(...t),A.push(t[0]),A.push(t[1]);else{let s=t[0],c=t[1],l=t[t.length-1],u=t[t.length-2];A.push(Z.subtract(s,Z.subtract(c,s))),A.push(...t),A.push(Z.add(l,Z.subtract(l,u)))}let i=n?t.length:t.length-1,a=[];for(let s=0;s<i;s++){let c=A[s],l=A[s+1],u=A[s+2],g=A[s+3],p=s===i-1?o:o-1;for(let f=0;f<=p;f++){let d=f/o,h=d*d,I=h*d,b=-.5*I+h-.5*d,D=1.5*I-2.5*h+1,m=-1.5*I+2*h+.5*d,x=.5*I-.5*h,w=[b*c[0]+D*l[0]+m*u[0]+x*g[0],b*c[1]+D*l[1]+m*u[1]+x*g[1],b*c[2]+D*l[2]+m*u[2]+x*g[2]],S=-1.5*h+2*d-.5,N=4.5*h-5*d,M=-4.5*h+4*d+.5,G=1.5*h-1*d,j=[S*c[0]+N*l[0]+M*u[0]+G*g[0],S*c[1]+N*l[1]+M*u[1]+G*g[1],S*c[2]+N*l[2]+M*u[2]+G*g[2]],R=Z.normalize(j);a.push({position:w,tangent:R})}}return e.fromRawSamples(a)}static fromRawSamples(t){let r=0,n=t.map((o,A)=>(A>0&&(r+=Z.distance(o.position,t[A-1].position)),{position:o.position,tangent:o.tangent,distance:r}));if(n.length===0)throw new TypeError("Path3D needs samples");return new e(n)}static bezier(t,r=50){if(t.length===0)throw new Error("Bezier path requires at least 1 segment");let n=[];for(let o=0;o<t.length;o++){let A=t[o],i=o===t.length-1?r:r-1;for(let a=0;a<=i;a++){let s=a/r,c=1-s,l=c*c,u=l*c,g=s*s,p=g*s,f=[u*A.p0[0]+3*l*s*A.p1[0]+3*c*g*A.p2[0]+p*A.p3[0],u*A.p0[1]+3*l*s*A.p1[1]+3*c*g*A.p2[1]+p*A.p3[1],u*A.p0[2]+3*l*s*A.p1[2]+3*c*g*A.p2[2]+p*A.p3[2]],d=[3*l*(A.p1[0]-A.p0[0])+6*c*s*(A.p2[0]-A.p1[0])+3*g*(A.p3[0]-A.p2[0]),3*l*(A.p1[1]-A.p0[1])+6*c*s*(A.p2[1]-A.p1[1])+3*g*(A.p3[1]-A.p2[1]),3*l*(A.p1[2]-A.p0[2])+6*c*s*(A.p2[2]-A.p1[2])+3*g*(A.p3[2]-A.p2[2])],h=Z.normalize(d);n.push({position:f,tangent:h})}}return e.fromRawSamples(n)}static helix(t){let{center:r,radius:n,pitch:o,turns:A,axis:i="z",samplesPerTurn:a=60}=t,s=Math.max(10,Math.round(A*a)),c=[];for(let l=0;l<=s;l++){let u=l/s,g=u*A*Math.PI*2,p=(u-.5)*o*A,f=Math.cos(g),d=Math.sin(g),h,I;i==="z"?(h=[r[0]+n*f,r[1]+n*d,r[2]+p],I=[-n*d,n*f,o*A/(A*Math.PI*2)]):i==="y"?(h=[r[0]+n*f,r[1]+p,r[2]+n*d],I=[-n*d,o*A/(A*Math.PI*2),n*f]):(h=[r[0]+p,r[1]+n*f,r[2]+n*d],I=[o*A/(A*Math.PI*2),-n*d,n*f]),c.push({position:h,tangent:Z.normalize(I)})}return e.fromRawSamples(c)}static circle(t){let{center:r,radius:n,startAngleDeg:o=0,endAngleDeg:A=360,samples:i=128}=t,a=o*Math.PI/180,s=A*Math.PI/180,c=[];for(let l=0;l<=i;l++){let u=a+(s-a)*(l/i),g=Math.cos(u),p=Math.sin(u),f=[r[0]+n*g,r[1],r[2]+n*p],d=[-n*p,0,n*g];c.push({position:f,tangent:Z.normalize(d)})}return e.fromRawSamples(c)}};$();_t();$();_t();var Yo={".ktx2":"image/ktx2",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif",".tif":"image/tiff",".tiff":"image/tiff",".avif":"image/avif"};function Kn(e){return Yo[Ze.extname(e).toLowerCase()]??"image/png"}function go(e){let t=Ze.extname(e.replace(/\\/g,"/")).toLowerCase();return!t||t in Yo}function zn(e,t){if(!e||typeof Re>"u"||!Re.existsSync||!go(e))return;let r=e.trim().replace(/^file:\/\//,"");try{r=decodeURIComponent(r)}catch{}let n=r.replace(/\\/g,"/"),o=n.split("/").pop()??n,A=[];if(Ze.isAbsolute(n)&&A.push(n),t){A.push(Ze.resolve(t,n)),A.push(Ze.join(t,o)),A.push(Ze.join(t,"textures",o));try{for(let i of Re.readdirSync(t))i.toLowerCase().endsWith(".fbm")&&A.push(Ze.join(t,i,o))}catch{}}for(let i of A)try{if(Re.existsSync(i)&&Re.statSync(i).isFile())return{bytes:new Uint8Array(Re.readFileSync(i)),mime:Kn(i)}}catch{}}function zr(e,t,r){let n=go(r)?"was not found":`is in an unsupported format (use ${Object.keys(Yo).join(", ")})`;console.warn(`[${e}] Texture "${r}" for material "${t}" ${n}; the material renders without it.`)}var Yn=class e{static parse(t,r,n){let o=typeof r=="object"&&r!==null?r:n??{},A=typeof r=="string"?r:o.mtlText,i=[],a=[],s=[],c=[],l={materialName:"default",faces:[]};c.push(l);let u={};A&&Object.assign(u,e.loadTextures(e.parseMtl(A),o.basePath));let g=t.split(/\r?\n/);for(let y=0;y<g.length;y++){let ye=g[y]?.trim();if(!ye||ye.startsWith("#"))continue;let Qe=ye.split(/\s+/),xe=Qe[0]?.toLowerCase();if(xe==="mtllib"){let le=Qe.slice(1).join(" ").trim();if(o.basePath&&typeof Re<"u"&&Re.existsSync)try{let ge=Ze.resolve(o.basePath,le);if(Re.existsSync(ge)){let be=Re.readFileSync(ge,"utf-8");Object.assign(u,e.loadTextures(e.parseMtl(be),Ze.dirname(ge)))}}catch{}}else if(xe==="v"){let le=Number.parseFloat(Qe[1]??"0"),ge=Number.parseFloat(Qe[2]??"0"),be=Number.parseFloat(Qe[3]??"0");i.push([le,ge,be])}else if(xe==="vn"){let le=Number.parseFloat(Qe[1]??"0"),ge=Number.parseFloat(Qe[2]??"0"),be=Number.parseFloat(Qe[3]??"0");a.push([le,ge,be])}else if(xe==="vt"){let le=Number.parseFloat(Qe[1]??"0"),ge=Qe[2]!==void 0?Number.parseFloat(Qe[2]):0;s.push([le,ge])}else if(xe==="usemtl"){let le=Qe[1]??"default";l.faces.length>0?(l={materialName:le,faces:[]},c.push(l)):l.materialName=le}else if(xe==="f"){let le=[];for(let ge=1;ge<Qe.length;ge++){let be=Qe[ge];if(!be)continue;let we=be.split("/"),Me=Number.parseInt(we[0]??"0",10),Ge=we[1]&&we[1].length>0?Number.parseInt(we[1],10):0,Ue=we[2]&&we[2].length>0?Number.parseInt(we[2],10):0;Me<0&&(Me=i.length+Me+1),Ge<0&&(Ge=s.length+Ge+1),Ue<0&&(Ue=a.length+Ue+1),le.push({v:Me-1,vt:Ge-1,vn:Ue-1})}if(le.length>=3)for(let ge=1;ge<le.length-1;ge++){let be=le[0],we=le[ge],Me=le[ge+1];be&&we&&Me&&l.faces.push([be,we,Me])}}}let p=1/0,f=1/0,d=1/0,h=-1/0,I=-1/0,b=-1/0;for(let y of i){let[ye,Qe,xe]=y;ye===void 0||Qe===void 0||xe===void 0||(ye<p&&(p=ye),Qe<f&&(f=Qe),xe<d&&(d=xe),ye>h&&(h=ye),Qe>I&&(I=Qe),xe>b&&(b=xe))}Number.isFinite(p)||(p=-1,f=-1,d=-1,h=1,I=1,b=1);let D=(p+h)*.5,m=(f+I)*.5,x=(d+b)*.5,w=Math.max(1e-4,h-p),S=Math.max(1e-4,I-f),N=Math.max(1e-4,b-d),M=Math.max(w,S,N),G=1;o.normalizeSize&&o.normalizeSize>0&&(G=o.normalizeSize/M),typeof o.scale=="number"&&(G*=o.scale);let j=o.center??!1,R=j?D:0,K=j?m:0,z=j?x:0,J=[];for(let y=0;y<c.length;y++){let ye=c[y];if(!ye||ye.faces.length===0)continue;let Qe=new Map,xe=[],le=[],ge=[],be=[],we=!1;for(let Ue of ye.faces)for(let _e of Ue){let He=`${_e.v}_${_e.vt}_${_e.vn}`,Te=Qe.get(He);if(Te===void 0){Te=xe.length/3,Qe.set(He,Te);let je=i[_e.v]??[0,0,0],Le=((je[0]??0)-R)*G,Je=((je[1]??0)-K)*G,tt=((je[2]??0)-z)*G;if(xe.push(Le,Je,tt),_e.vt>=0&&s[_e.vt]){let qe=s[_e.vt];ge.push(qe[0]??0,1-(qe[1]??0))}else ge.push(0,0);if(_e.vn>=0&&a[_e.vn]){we=!0;let qe=a[_e.vn];le.push(qe[0]??0,qe[1]??0,qe[2]??0)}else le.push(0,0,0)}be.push(Te)}if(!we||o.smoothNormals){let Ue=new Float32Array(xe.length);for(let _e=0;_e<be.length;_e+=3){let He=be[_e],Te=be[_e+1],je=be[_e+2],Le=[xe[He*3],xe[He*3+1],xe[He*3+2]],Je=[xe[Te*3],xe[Te*3+1],xe[Te*3+2]],tt=[xe[je*3],xe[je*3+1],xe[je*3+2]],qe=Z.subtract(Je,Le),Bt=Z.subtract(tt,Le),ze=Z.cross(qe,Bt);Ue[He*3]+=ze[0],Ue[He*3+1]+=ze[1],Ue[He*3+2]+=ze[2],Ue[Te*3]+=ze[0],Ue[Te*3+1]+=ze[1],Ue[Te*3+2]+=ze[2],Ue[je*3]+=ze[0],Ue[je*3+1]+=ze[1],Ue[je*3+2]+=ze[2]}for(let _e=0;_e<xe.length/3;_e++){let He=Ue[_e*3],Te=Ue[_e*3+1],je=Ue[_e*3+2],Le=Math.hypot(He,Te,je)||1;le[_e*3]=He/Le,le[_e*3+1]=Te/Le,le[_e*3+2]=je/Le}}let Ge=xe.length/3>65535?new Uint32Array(be):new Uint16Array(be);J.push({id:`mesh_${y}`,name:ye.materialName,positions:new Float32Array(xe),normals:new Float32Array(le),uvs:new Float32Array(ge),indices:Ge,materialName:ye.materialName})}let W=(p-R)*G,X=(f-K)*G,Ae=(d-z)*G,re=(h-R)*G,oe=(I-K)*G,ne=(b-z)*G,ie=re-W,he=oe-X,F=ne-Ae,Be=(W+re)*.5,Se=(X+oe)*.5,Pe=(Ae+ne)*.5,Ie=Math.hypot(ie,he,F)*.5;return{meshes:J,materials:u,animations:[],bounds:{min:[W,X,Ae],max:[re,oe,ne],center:[Be,Se,Pe],size:[ie,he,F],boundingSphereRadius:Ie}}}static parseMtl(t){let r={},n=null,o=t.split(/\r?\n/);for(let A of o){let i=A.trim();if(!i||i.startsWith("#"))continue;let a=i.split(/\s+/),s=a[0]?.toLowerCase();if(s==="newmtl"){let c=a[1]??"default";n={name:c,diffuseColor:[1,1,1,1],specularColor:[1,1,1],ambientColor:[.2,.2,.2],shininess:32,opacity:1},r[c]=n}else if(n)if(s==="kd"){let c=Number.parseFloat(a[1]??"1"),l=Number.parseFloat(a[2]??"1"),u=Number.parseFloat(a[3]??"1");n.diffuseColor=[c,l,u,n.diffuseColor?.[3]??1]}else if(s==="ks"){let c=Number.parseFloat(a[1]??"1"),l=Number.parseFloat(a[2]??"1"),u=Number.parseFloat(a[3]??"1");n.specularColor=[c,l,u],n.specularIntensity=(c+l+u)/3}else if(s==="ka"){let c=Number.parseFloat(a[1]??"0.2"),l=Number.parseFloat(a[2]??"0.2"),u=Number.parseFloat(a[3]??"0.2");n.ambientColor=[c,l,u]}else if(s==="ns")n.shininess=Number.parseFloat(a[1]??"32");else if(s==="d"||s==="tr"){let c=Number.parseFloat(a[1]??"1");n.opacity=s==="d"?c:1-c,n.diffuseColor&&(n.diffuseColor[3]=n.opacity)}else if(s==="map_kd"){n.diffuseTexture=e.mapFileName(a);let c=a.findIndex(l=>l.toLowerCase()==="-clamp");n.textureWrap=c>0&&a[c+1]?.toLowerCase()==="on"?"clamp":"repeat"}else(s==="norm"||s==="map_kn")&&(n.normalTexture=e.mapFileName(a))}return r}static MAP_OPTION_ARGS={"-blendu":1,"-blendv":1,"-cc":1,"-clamp":1,"-texres":1,"-bm":1,"-boost":1,"-imfchan":1,"-type":1,"-mm":2};static mapFileName(t){let r=1;for(;r<t.length&&t[r]?.startsWith("-");){let n=t[r].toLowerCase();if(r++,n==="-o"||n==="-s"||n==="-t")for(let o=0;o<3&&r<t.length&&!Number.isNaN(Number(t[r]));o++)r++;else r+=e.MAP_OPTION_ARGS[n]??0}return t.slice(r).join(" ")}static loadTextures(t,r){if(!r)return t;for(let n of Object.values(t)){if(n.diffuseTexture&&!n.diffuseTextureBuffer){let o=zn(n.diffuseTexture,r);o?(n.diffuseTextureBuffer=o.bytes,n.diffuseTextureMime=o.mime):zr("ObjLoader",n.name,n.diffuseTexture)}if(n.normalTexture&&!n.normalTextureBuffer){let o=zn(n.normalTexture,r);o?n.normalTextureBuffer=o.bytes:zr("ObjLoader",n.name,n.normalTexture)}}return t}};function eu(e,t,r={}){return Yn.parse(e,t,r)}function tu(e){return Yn.parseMtl(e)}function Wn(e,t,r={}){let n;if(typeof e!="string")n=new TextDecoder().decode(e);else{let o=e.trim();if(!(o.startsWith("v ")||o.startsWith("#")||o.includes(`
2
+ v `)||o.includes("\rv "))&&typeof Re<"u"&&Re.existsSync)try{let i=e.startsWith("file://")?e.slice(7):e;try{i=decodeURIComponent(i)}catch{}Re.existsSync(i)?(n=Re.readFileSync(i,"utf-8"),r={basePath:r.basePath??Ze.dirname(i),...r}):n=e}catch{n=e}else n=e}return Yn.parse(n,t,r)}$();_t();var ea=Vo(Yi(),1);$();function pr(e,t,r){let n=o=>[e[o*3],e[o*3+1],e[o*3+2]];for(let o=0;o<t.length;o+=3){let A=t[o],i=t[o+1],a=t[o+2],s=n(A),c=Z.cross(Z.subtract(n(i),s),Z.subtract(n(a),s));for(let l of[A,i,a])r[l*3]+=c[0],r[l*3+1]+=c[1],r[l*3+2]+=c[2]}for(let o=0;o<r.length;o+=3){let A=r[o],i=r[o+1],a=r[o+2],s=Math.hypot(A,i,a)||1;r[o]=A/s,r[o+1]=i/s,r[o+2]=a/s}}function Lt(...e){let t=1/0,r=1/0,n=1/0,o=-1/0,A=-1/0,i=-1/0;for(let a of e)for(let s=0;s<a.length;s+=3){let c=a[s],l=a[s+1],u=a[s+2];c<t&&(t=c),c>o&&(o=c),l<r&&(r=l),l>A&&(A=l),u<n&&(n=u),u>i&&(i=u)}return Number.isFinite(t)||(t=r=n=0,o=A=i=0),{min:[t,r,n],max:[o,A,i],center:[(t+o)*.5,(r+A)*.5,(n+i)*.5],size:[o-t,A-r,i-n]}}function xt(e,t){let r=Math.max(...e.size,1e-4),n=1;t.normalizeSize&&t.normalizeSize>0&&(n=t.normalizeSize/r);let o=[n,n,n];return typeof t.scale=="number"?(o[0]*=t.scale,o[1]*=t.scale,o[2]*=t.scale):Array.isArray(t.scale)&&(o[0]*=t.scale[0],o[1]*=t.scale[1],o[2]*=t.scale[2]),{offset:t.center?e.center:[0,0,0],scale:o}}function Ot(e,{offset:t,scale:r}){let n=new Float32Array(e.length);for(let o=0;o<e.length;o+=3)n[o]=(e[o]-t[0])*r[0],n[o+1]=(e[o+1]-t[1])*r[1],n[o+2]=(e[o+2]-t[2])*r[2];return n}function Ht(e,t){return t>65535?new Uint32Array(e):new Uint16Array(e)}function jt(e,{offset:t,scale:r}){let n=[(e.min[0]-t[0])*r[0],(e.min[1]-t[1])*r[1],(e.min[2]-t[2])*r[2]],o=[(e.max[0]-t[0])*r[0],(e.max[1]-t[1])*r[1],(e.max[2]-t[2])*r[2]];return{min:n,max:o,center:[(n[0]+o[0])*.5,(n[1]+o[1])*.5,(n[2]+o[2])*.5],size:[o[0]-n[0],o[1]-n[1],o[2]-n[2]],boundingSphereRadius:Math.hypot(o[0]-n[0],o[1]-n[1],o[2]-n[2])*.5}}$();function bs(e,t,r){let[n,o,A,i]=t,a=n*n,s=o*o,c=A*A,l=n*o,u=n*A,g=o*A,p=i*n,f=i*o,d=i*A;return[(1-2*(s+c))*r[0],2*(l+d)*r[0],2*(u-f)*r[0],0,2*(l-d)*r[1],(1-2*(a+c))*r[1],2*(g+p)*r[1],0,2*(u+f)*r[2],2*(g-p)*r[2],(1-2*(a+s))*r[2],0,e[0],e[1],e[2],1]}function Wi(e){let t=Math.hypot(e[0],e[1],e[2],e[3])||1;return[e[0]/t,e[1]/t,e[2]/t,e[3]/t]}function Es(e,t,r){let n=e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3],o=n<0?-1:1;if(n*=o,n>.9995)return Wi([e[0]+(o*t[0]-e[0])*r,e[1]+(o*t[1]-e[1])*r,e[2]+(o*t[2]-e[2])*r,e[3]+(o*t[3]-e[3])*r]);let A=Math.acos(n),i=Math.sin(A),a=Math.sin((1-r)*A)/i,s=o*Math.sin(r*A)/i;return[e[0]*a+t[0]*s,e[1]*a+t[1]*s,e[2]*a+t[2]*s,e[3]*a+t[3]*s]}function ys(e,t){let r=0,n=e.length-1;for(;r<n;){let o=r+n+1>>1;(e[o]??0)<=t?r=o:n=o-1}return r}function Or(e,t,r,n,o=1){let A=n?(t*3+o)*r:t*r;return Array.from(e.subarray(A,A+r))}function fo(e,t,r,n,o=!1){let{times:A}=e,i=e.interpolation==="cubic",a=A.length-1;if(n<=(A[0]??0))return Or(t,0,r,i);if(n>=(A[a]??0))return Or(t,a,r,i);let s=ys(A,n);if(e.interpolation==="step")return Or(t,s,r,i);let c=A[s]??0,l=(A[s+1]??c)-c,u=l>0?(n-c)/l:0,g=Or(t,s,r,i),p=Or(t,s+1,r,i);if(i){let f=Or(t,s,r,!0,2),d=Or(t,s+1,r,!0,0),h=u*u,I=h*u,b=g.map((D,m)=>(2*I-3*h+1)*D+(I-2*h+u)*l*(f[m]??0)+(-2*I+3*h)*(p[m]??0)+(I-h)*l*(d[m]??0));return o?Wi(b):b}return o?Es(g,p,u):g.map((f,d)=>f+((p[d]??f)-f)*u)}function lu(e,t,r){let n=e.morphTargets?.length??0;if(!n)return[];let o=t?.tracks.find(A=>A.node===e.node&&A.weights&&A.times.length>0);return o?.weights?fo(o,o.weights,n,r):e.morphWeights??Array(n).fill(0)}function Cs(e,t,r){let n=e.map(a=>[...a.translation]),o=e.map(a=>[...a.rotation]),A=e.map(a=>[...a.scale]),i=new Map(e.map((a,s)=>[a.name,s]));for(let a of t?.tracks??[]){let s=a.node??i.get(a.nodeName);s===void 0||!a.times.length||(a.translations&&(n[s]=fo(a,a.translations,3,r)),a.rotations&&(o[s]=fo(a,a.rotations,4,r,!0)),a.scales&&(A[s]=fo(a,a.scales,3,r)))}return e.map((a,s)=>a.matrix??bs(n[s],o[s],A[s]))}function ho(e,t,r){let n=e.nodes??[],o=Cs(n,t,r),A=new Array(n.length),i=a=>{let s=A[a];if(s)return s;let c=n[a].parent,l=c<0?o[a]:Ee.multiply(i(c),o[a]);return A[a]=l,l};return n.map((a,s)=>i(s))}function uu(e,t,r){let n=e.skins?.[t];if(!n)throw new Error(`model has no skin ${t}`);let o=new Float32Array(Math.max(1,n.joints.length)*16);for(let A=0;A<Math.max(1,n.joints.length);A++){let i=n.joints[A];if(i===void 0){o.set(Ee.identity(),A*16);continue}let a=Array.from(n.inverseBindMatrices.subarray(A*16,A*16+16));o.set(Ee.multiply(r[i],a),A*16)}return o}var Hr=class e{static FBX_KTIME=46186158e3;static parse(t,r={}){let n=typeof t=="string"?e.parseAscii(t):e.isBinary(t)?e.parseBinary(t):e.parseAscii(new TextDecoder().decode(t));return e.buildModelFromTree(n,r)}static isBinary(t){let r=t instanceof Uint8Array?t:new Uint8Array(t);if(r.length<27)return!1;let n="Kaydara FBX Binary \0\0";for(let o=0;o<n.length;o++)if(r[o]!==n.charCodeAt(o))return!1;return!0}static parseBinary(t){let r=t instanceof Uint8Array?t:new Uint8Array(t),n=new DataView(r.buffer,r.byteOffset,r.byteLength),A=n.getUint32(23,!0)>=7500,i=27,a={name:"Root",props:[],children:[]},s=()=>{if(i>=r.byteLength)return null;let c,l,u;if(A){if(i+25>r.byteLength)return null;c=Number(n.getBigUint64(i,!0)),l=Number(n.getBigUint64(i+8,!0)),u=n.getUint8(i+24),i+=25}else{if(i+13>r.byteLength)return null;c=n.getUint32(i,!0),l=n.getUint32(i+4,!0),u=n.getUint8(i+12),i+=13}if(c===0)return null;let g=new TextDecoder().decode(r.subarray(i,i+u));i+=u;let p=[];for(let d=0;d<l;d++){let h=String.fromCharCode(r[i]);switch(i+=1,h){case"Y":{p.push(n.getInt16(i,!0)),i+=2;break}case"C":case"B":{p.push(n.getUint8(i)!==0),i+=1;break}case"I":{p.push(n.getInt32(i,!0)),i+=4;break}case"F":{p.push(n.getFloat32(i,!0)),i+=4;break}case"D":{p.push(n.getFloat64(i,!0)),i+=8;break}case"L":{p.push(Number(n.getBigInt64(i,!0))),i+=8;break}case"S":{let I=n.getUint32(i,!0);i+=4;let b=new TextDecoder().decode(r.subarray(i,i+I));p.push(b),i+=I;break}case"R":{let I=n.getUint32(i,!0);i+=4;let b=r.subarray(i,i+I);p.push(b),i+=I;break}case"f":case"d":case"i":case"l":case"b":case"c":{let I=n.getUint32(i,!0),b=n.getUint32(i+4,!0),D=n.getUint32(i+8,!0);i+=12;let m;if(b===1){let w=r.subarray(i,i+D);m=(0,ea.inflateSync)(w),i+=D}else{let S=I*(h==="d"||h==="l"?8:h==="f"||h==="i"?4:1);m=r.subarray(i,i+S),i+=S}let x=new DataView(m.buffer,m.byteOffset,m.byteLength);if(h==="f"){let w=new Float32Array(I);for(let S=0;S<I;S++)w[S]=x.getFloat32(S*4,!0);p.push(w)}else if(h==="d"){let w=new Float64Array(I);for(let S=0;S<I;S++)w[S]=x.getFloat64(S*8,!0);p.push(w)}else if(h==="i"){let w=new Int32Array(I);for(let S=0;S<I;S++)w[S]=x.getInt32(S*4,!0);p.push(w)}else if(h==="l"){let w=new Float64Array(I);for(let S=0;S<I;S++)w[S]=Number(x.getBigInt64(S*8,!0));p.push(w)}else if(h==="b"){let w=new Uint8Array(I);for(let S=0;S<I;S++)w[S]=x.getUint8(S);p.push(w)}else p.push(m);break}default:break}}let f=[];for(;i<c;){let d=s();if(d)f.push(d);else break}return i=c,{name:g,props:p,children:f}};for(;i<r.byteLength-(A?25:13);){let c=s();if(c)a.children.push(c);else break}return a}static parseAscii(t){let r={name:"Root",props:[],children:[]},n=[r],o=t.split(/\r?\n/);for(let A=0;A<o.length;A++){let i=o[A]?.trim();if(!i||i.startsWith(";"))continue;if(i==="}"){n.length>1&&n.pop();continue}let a=i.indexOf(":");if(a===-1)continue;let s=i.substring(0,a).trim(),c=i.substring(a+1).trim(),l=c.endsWith("{"),u=l?c.slice(0,-1).trim():c,g=[];if(u){let d=u.split(",").map(h=>h.trim());for(let h of d)h.startsWith('"')&&h.endsWith('"')?g.push(h.slice(1,-1)):Number.isNaN(Number(h))?g.push(h):g.push(Number(h))}let p={name:s,props:g,children:[]},f=n[n.length-1];f&&f.children.push(p),l&&n.push(p)}return r}static textureSlot(t){let r=t.toLowerCase();if(r==="diffusecolor"||r==="diffuse"||r.endsWith("|basecolor")||r.endsWith("|base_color")||r==="basecolor")return"diffuse";if(r==="normalmap"||r.endsWith("|normalcamera")||r.endsWith("|bump_map"))return"normal"}static attachTextures(t,r,n,o,A){let i=(a,s)=>{let c=a?.children.find(l=>l.name===s)?.props[0];return typeof c=="string"&&c?c:void 0};for(let a of o){if(a.parentId!==r||!a.propName)continue;let s=e.textureSlot(a.propName),c=n.get(a.childId);if(!s||c?.node.name!=="Texture"||(s==="diffuse"?t.diffuseTextureBuffer:t.normalTextureBuffer))continue;let l=o.filter(f=>f.parentId===a.childId&&!f.propName).map(f=>n.get(f.childId)?.node).find(f=>f?.name==="Video"),u=i(c.node,"RelativeFilename")??i(c.node,"FileName")??i(l,"RelativeFilename")??i(l,"Filename");if(u&&!go(u)){zr("FbxLoader",t.name,u);continue}let g,p=l?.children.find(f=>f.name==="Content")?.props[0];if(p instanceof Uint8Array&&p.length>0?g=p:u&&(g=zn(u,A)?.bytes),!g){u&&zr("FbxLoader",t.name,u);continue}s==="diffuse"?(t.diffuseTextureBuffer=g,t.diffuseTextureMime=Kn(u??""),u&&(t.diffuseTexture=u),t.textureWrap="repeat"):(t.normalTextureBuffer=g,u&&(t.normalTexture=u))}}static buildModelFromTree(t,r={}){let n=t.children.find(M=>M.name==="Objects"),o=t.children.find(M=>M.name==="Connections"),A=new Map;if(n)for(let M of n.children){let G=M.props[0]??0,R=String(M.props[1]??"").split("::"),K=R.length>1?R[1]:R[0],z=String(M.props[2]??M.name);A.set(G,{id:G,name:K,type:z,node:M})}let i=[];if(o){for(let M of o.children)if(M.name==="C"||M.name==="Connect"){let G=String(M.props[0]),j=M.props[1]??0,R=M.props[2]??0,K=G==="OP"?String(M.props[3]):void 0;i.push({childId:j,parentId:R,propName:K})}}let a=M=>{for(let G of i){let j=G.parentId===M?A.get(G.childId):void 0;if(j?.node.name==="Material"&&!G.propName)return j.name}for(let G of i)if(!(G.childId!==M||G.propName))for(let j of i){if(j.parentId!==G.parentId||j.propName)continue;let R=A.get(j.childId);if(R?.node.name==="Material")return R.name}},s=[],c={};function l(M){if(!M)return[];if(M.props[0]instanceof Float32Array||M.props[0]instanceof Float64Array||M.props[0]instanceof Int32Array||Array.isArray(M.props[0]))return M.props[0];let G=M.children.find(j=>j.name==="a");return G&&G.props.length>0?G.props:Array.isArray(M.props)&&M.props.length>0&&typeof M.props[0]=="number"?M.props:[]}let u=[...A.values()].filter(M=>M.node.name==="Model").map(M=>M.id),g=new Map(u.map((M,G)=>[M,G])),p=u.map(M=>{let G=A.get(M),j=i.find(R=>R.childId===M&&!R.propName&&g.has(R.parentId));return{name:G.name,parent:j?g.get(j.parentId):-1,translation:qn(G.node,"Lcl Translation",0),rotation:Xi(G.node,mo(qn(G.node,"Lcl Rotation",0),ta(G.node))),scale:qn(G.node,"Lcl Scaling",1)}}),f=M=>i.find(G=>G.childId===M&&!G.propName&&g.has(G.parentId))?.parentId,d=[];for(let[M,G]of A)if(G.node.name==="Geometry"&&(G.type==="Mesh"||G.node.props[2]==="Mesh"||G.type==="")){let j=G.node,R=j.children.find(le=>le.name==="Vertices"),K=j.children.find(le=>le.name==="PolygonVertexIndex");if(!R||!K)continue;let z=l(R),J=l(K),W=(le,ge,be,we)=>{let Me=j.children.find(Ge=>Ge.name===le);if(Me)return Qs(Me,l(Me.children.find(Ge=>Ge.name===ge)),l(Me.children.find(Ge=>Ge.name===be)),we)},X=W("LayerElementNormal","Normals","NormalsIndex",3),Ae=W("LayerElementUV","UV","UVIndex",2),re=[],oe=[],ne=0;for(let le=0;le<J.length;le++){let ge=J[le];if(oe.push({cp:ge<0?-(ge+1):ge,pv:le}),!(ge>=0)){for(let be=1;be<oe.length-1;be++)for(let we of[oe[0],oe[be],oe[be+1]])re.push({...we,poly:ne});oe=[],ne++}}let ie=re.length,he=new Float32Array(ie*3),F=new Float32Array(ie*3),Be=new Float32Array(ie*2),Se=new Array(ie);re.forEach(({cp:le,pv:ge,poly:be},we)=>{he[we*3]=z[le*3]??0,he[we*3+1]=z[le*3+1]??0,he[we*3+2]=z[le*3+2]??0;let Me=X?.(le,ge,be);F.set(Me??[0,0,1],we*3);let Ge=Ae?.(le,ge,be);Be[we*2]=Ge?.[0]??0,Be[we*2+1]=1-(Ge?.[1]??0),Se[we]=we}),(!X||r.smoothNormals)&&(F.fill(0),pr(he,Se,F));let Pe=i.find(le=>le.parentId===M&&A.get(le.childId)?.node.name==="Deformer"&&A.get(le.childId)?.node.props[2]==="Skin"),Ie,y,ye;if(Pe){let le=[],ge=[],be=new Map;for(let we of i){let Me=A.get(we.childId);if(we.parentId!==Pe.childId||Me?.node.name!=="Deformer"||Me.node.props[2]!=="Cluster")continue;let Ge=i.find(Le=>Le.parentId===Me.id&&g.has(Le.childId))?.childId;if(Ge===void 0)continue;let Ue=le.length;le.push(g.get(Ge));let _e=Zi(Me.node,"Transform"),He=Zi(Me.node,"TransformLink");ge.push(...Ee.multiply(Ee.invert(He)??Ee.identity(),_e));let Te=l(Me.node.children.find(Le=>Le.name==="Indexes")),je=l(Me.node.children.find(Le=>Le.name==="Weights"));for(let Le=0;Le<Te.length;Le++){let Je=Number(je[Le]??0);if(!(Je>0))continue;let tt=Number(Te[Le]),qe=be.get(tt)??[];qe.push([Ue,Je]),be.set(tt,qe)}}le.length>0&&(ye=d.length,d.push({joints:le,inverseBindMatrices:new Float32Array(ge)}),Ie=new Float32Array(ie*4),y=new Float32Array(ie*4),re.forEach(({cp:we},Me)=>{let Ge=(be.get(we)??[]).sort((_e,He)=>He[1]-_e[1]).slice(0,4),Ue=Ge.reduce((_e,[,He])=>_e+He,0);Ge.forEach(([_e,He],Te)=>{Ie[Me*4+Te]=_e,y[Me*4+Te]=Ue>0?He/Ue:0})}))}let Qe=f(M),xe=ie>65535;s.push({id:`fbx_mesh_${M}`,name:G.name,positions:he,normals:F,uvs:Be,indices:xe?new Uint32Array(Se):new Uint16Array(Se),jointIndices:Ie,jointWeights:y,materialName:a(M)??G.name,node:Qe!==void 0?g.get(Qe):void 0,skin:ye})}for(let[,M]of A)if(M.node.name==="Material"){let j=M.node.children.find(W=>W.name==="Properties70"),R=[1,1,1,1],K=32,z=1;if(j){for(let W of j.children)if(W.name==="P"){let X=String(W.props[0]);if(X==="DiffuseColor"||X==="Color"){let Ae=Number(W.props[4]??1),re=Number(W.props[5]??1),oe=Number(W.props[6]??1);R=[Ae,re,oe,1]}else X==="Shininess"||X==="ShininessExponent"?K=Number(W.props[4]??32):X==="Opacity"&&(z=Number(W.props[4]??1),R[3]=z)}}let J={name:M.name,diffuseColor:R,shininess:K,opacity:z};e.attachTextures(J,M.id,A,i,r.basePath),c[M.name]=J}let h=[];for(let[M,G]of A)if(G.node.name==="AnimationStack"){let j=G.name||"Take 001",R=[],K=i.find(J=>J.parentId===M&&A.get(J.childId)?.node.name==="AnimationLayer");if(K){let J=i.filter(X=>X.parentId===K.childId&&A.get(X.childId)?.node.name==="AnimationCurveNode"),W=new Map;for(let X of J){let Ae=A.get(X.childId);if(!Ae)continue;let re=i.find(Be=>Be.childId===Ae.id&&A.get(Be.parentId)?.node.name==="Model"),oe=re?A.get(re.parentId):void 0,ne=$i(re?.propName)??$i(Ae.name);if(!ne)continue;let ie=`${oe?.id??Ae.id}|${ne}`,he=W.get(ie);if(!he){let Be=oe?.node;he={nodeName:oe?.name??Ae.name,modelId:oe?.id,model:Be,kind:ne,defaults:ws(Be,Ae.node,ne),channels:[void 0,void 0,void 0]},W.set(ie,he)}i.filter(Be=>Be.parentId===Ae.id&&A.get(Be.childId)?.node.name==="AnimationCurve").forEach((Be,Se)=>{let Pe=xs(Be.propName)??Se;if(Pe>2)return;let Ie=A.get(Be.childId)?.node,y=l(Ie?.children.find(xe=>xe.name==="KeyTime")),ye=l(Ie?.children.find(xe=>xe.name==="KeyValueFloat")),Qe=Math.min(y.length,ye.length);Qe!==0&&(he.channels[Pe]={times:Array.from(y.slice(0,Qe),xe=>Number(xe)),values:Array.from(ye.slice(0,Qe),xe=>Number(xe))})})}for(let X of W.values()){let Ae=_s(X);if(Ae){if(X.modelId!==void 0&&(Ae.node=g.get(X.modelId)),Ae.rotations&&X.model)for(let re=0;re<Ae.rotations.length;re+=4){let oe=Array.from(Ae.rotations.subarray(re,re+4));Ae.rotations.set(Xi(X.model,oe),re)}R.push(Ae)}}}let z=1;for(let J of R)if(J.times.length>0){let W=J.times[J.times.length-1]??0;W>z&&(z=W)}h.push({name:j,duration:z,fps:30,tracks:R})}let I={meshes:s,materials:c,animations:h,nodes:p,skins:d,bounds:{min:[0,0,0],max:[0,0,0],center:[0,0,0],size:[0,0,0],boundingSphereRadius:0}},b=ho(I,void 0,0),D=[1/0,1/0,1/0],m=[-1/0,-1/0,-1/0];for(let M of s){let G=M.node!==void 0?b[M.node]:void 0;for(let j=0;j<M.positions.length;j+=3){let R=[M.positions[j],M.positions[j+1],M.positions[j+2]],K=G?Ee.projectPoint(G,R):R;for(let z=0;z<3;z++)K[z]<D[z]&&(D[z]=K[z]),K[z]>m[z]&&(m[z]=K[z])}}Number.isFinite(D[0])||(D.fill(-1),m.fill(1));let{offset:x,scale:w}=xt({min:D,max:m,center:[(D[0]+m[0])*.5,(D[1]+m[1])*.5,(D[2]+m[2])*.5],size:[m[0]-D[0],m[1]-D[1],m[2]-D[2]]},r);I.rootTransform=Ee.multiply(Ee.scale(w[0],w[1],w[2]),Ee.translate(-x[0],-x[1],-x[2]));let S=[0,1,2].map(M=>(D[M]-x[M])*w[M]),N=[0,1,2].map(M=>(m[M]-x[M])*w[M]);return I.bounds={min:S,max:N,center:[(S[0]+N[0])*.5,(S[1]+N[1])*.5,(S[2]+N[2])*.5],size:[N[0]-S[0],N[1]-S[1],N[2]-S[2]],boundingSphereRadius:Math.hypot(N[0]-S[0],N[1]-S[1],N[2]-S[2])*.5},I}};function qn(e,t,r){let n=Yr(e,t);return[0,1,2].map(o=>{let A=n?.[o];return A!==void 0&&Number.isFinite(A)?A:r})}function qi(e,t){return[e[3]*t[0]+e[0]*t[3]+e[1]*t[2]-e[2]*t[1],e[3]*t[1]-e[0]*t[2]+e[1]*t[3]+e[2]*t[0],e[3]*t[2]+e[0]*t[1]-e[1]*t[0]+e[2]*t[3],e[3]*t[3]-e[0]*t[0]-e[1]*t[1]-e[2]*t[2]]}function Xi(e,t){let r=Yr(e,"PreRotation"),n=Yr(e,"PostRotation"),o=t;if(r&&(o=qi(mo(qn(e,"PreRotation",0)),o)),n){let A=mo(qn(e,"PostRotation",0));o=qi(o,[-A[0],-A[1],-A[2],A[3]])}return o}function Zi(e,t){let r=e.children.find(A=>A.name===t),n=r?.children.find(A=>A.name==="a")?.props??r?.props,o=n?.[0]instanceof Float64Array||n?.[0]instanceof Float32Array?Array.from(n[0]):(n??[]).map(Number);return o.length===16?o:Ee.identity()}function Qs(e,t,r,n){if(t.length===0)return;let o=a=>String(e.children.find(s=>s.name===a)?.props[0]??""),A=o("MappingInformationType"),i=/^Index/.test(o("ReferenceInformationType"))&&r.length>0;return(a,s,c)=>{let l=A==="ByPolygonVertex"?s:A==="ByPolygon"?c:A==="AllSame"?0:a;return i&&(l=Number(r[l]??l)),Array.from({length:n},(u,g)=>Number(t[l*n+g]??0))}}function $i(e){switch(e){case"Lcl Translation":case"T":return"T";case"Lcl Rotation":case"R":return"R";case"Lcl Scaling":case"S":return"S";default:return}}function xs(e){switch(e){case"d|X":return 0;case"d|Y":return 1;case"d|Z":return 2;default:return}}function Yr(e,t){let n=e?.children.find(o=>o.name==="Properties70")?.children.find(o=>o.name==="P"&&o.props[0]===t);if(n)return n.props.slice(4).map(o=>Number(o))}function ws(e,t,r){let n=r==="S"?1:0,o=Yr(e,r==="T"?"Lcl Translation":r==="R"?"Lcl Rotation":"Lcl Scaling"),A=[n,n,n];for(let i=0;i<3;i++){let a=o?.[i],s=Yr(t,`d|${"XYZ"[i]}`)?.[0],c=a??s;c!==void 0&&Number.isFinite(c)&&(A[i]=c)}return A}var vs=["XYZ","XZY","YZX","YXZ","ZXY","ZYX"];function ta(e){let t=Yr(e,"RotationOrder")?.[0]??0;return vs[t]??"XYZ"}function mo(e,t="XYZ"){let r=[0,0,0,1];for(let n of t){let o="XYZ".indexOf(n),A=(e[o]??0)*Math.PI/360,i=Math.sin(A),a=[0,0,0,Math.cos(A)];a[o]=i,r=[a[3]*r[0]+a[0]*r[3]+a[1]*r[2]-a[2]*r[1],a[3]*r[1]-a[0]*r[2]+a[1]*r[3]+a[2]*r[0],a[3]*r[2]+a[0]*r[1]-a[1]*r[0]+a[2]*r[3],a[3]*r[3]-a[0]*r[0]-a[1]*r[1]-a[2]*r[2]]}return r}function Ds(e,t){let{times:r,values:n}=e,o=r.length-1;if(t<=r[0])return n[0];if(t>=r[o])return n[o];let A=0;for(;A<o-1&&r[A+1]<=t;)A++;let i=r[A],a=r[A+1],s=a>i?(t-i)/(a-i):0;return n[A]+(n[A+1]-n[A])*s}function _s(e){let t=new Set;for(let s of e.channels)for(let c of s?.times??[])t.add(c);if(t.size===0)return;let r=[...t].sort((s,c)=>s-c),n=new Float32Array(r.length),o=e.kind==="R",A=new Float32Array(r.length*(o?4:3)),i=o?ta(e.model):"XYZ",a;return r.forEach((s,c)=>{n[c]=s/Hr.FBX_KTIME;let l=[0,1,2].map(g=>{let p=e.channels[g];return p?Ds(p,s):e.defaults[g]});if(!o){A.set(l,c*3);return}let u=mo(l,i);if(a&&a[0]*u[0]+a[1]*u[1]+a[2]*u[2]+a[3]*u[3]<0)for(let g=0;g<4;g++)u[g]=-u[g];a=u,A.set(u,c*4)}),{nodeName:e.nodeName,times:n,translations:e.kind==="T"?A:void 0,rotations:o?A:void 0,scales:e.kind==="S"?A:void 0}}function bu(e,t={}){return Hr.parse(e,t)}function Xn(e,t={}){let r=e;if(typeof e=="string"){let n=e.trim();if(!(n.includes("FBXHeaderExtension")||n.includes("Kaydara FBX"))&&typeof Re<"u"&&Re.existsSync)try{let A=e.startsWith("file://")?e.slice(7):e;try{A=decodeURIComponent(A)}catch{}if(Re.existsSync(A)){let i=Re.readFileSync(A);r=new Uint8Array(i.buffer,i.byteOffset,i.byteLength),t={basePath:Ze.dirname(A),...t}}}catch{}}return Hr.parse(r,t)}$();$();var ra=`
3
3
  struct AudioLatentBuffer {
4
4
  fftBins : array<f32, 1024>,
5
5
  bassEnergy : f32,
@@ -138,9 +138,9 @@ fn cs_displace(@builtin(global_invocation_id) gid : vec3<u32>) {
138
138
 
139
139
  dstVertices[idx] = outV;
140
140
  }
141
- `;var ac={normal_extrusion:0,radial_pulse:1,harmonic_wave:2,twist:3,ripple:4},_o=class{device;pipeline;bindGroupLayout;uniformPool;deformedBuffers=new WeakMap;uniformData=new ArrayBuffer(32);uniformUint32=new Uint32Array(this.uniformData);uniformFloat32=new Float32Array(this.uniformData);constructor(t){this.device=t,this.uniformPool=new We(32,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.bindGroupLayout=t.createBindGroupLayout({label:"AudioMeshDeformBindGroupLayout",entries:[{binding:0,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:1,visibility:GPUShaderStage.COMPUTE,buffer:{type:"uniform"}},{binding:2,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:3,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}}]});let r=t.createShaderModule({label:"audioMeshDisplace.wgsl",code:xa}),n=t.createPipelineLayout({label:"AudioMeshDeformPipelineLayout",bindGroupLayouts:[this.bindGroupLayout]});this.pipeline=t.createComputePipeline({label:"AudioMeshDeformComputePipeline",layout:n,compute:{module:r,entryPoint:"cs_displace"}})}getOrCreateDeformedBuffer(t,r){let n=this.deformedBuffers.get(t);return(!n||n.size<r)&&(n?.destroy(),n=this.device.createBuffer({label:"DeformedMeshVertexBuffer",size:Math.max(64,Math.ceil(r/4)*4),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC}),this.deformedBuffers.set(t,n)),n}execute(t,r,n){let{config:o,audioLatentBuffer:A,vertexCount:i,timeMs:a=0,sampleRate:s=48e3}=n,c=i*64,l=this.getOrCreateDeformedBuffer(r,c),u=ac[o.mode]??0,g=s/2048,p=o.frequencyRange?o.frequencyRange[0]:20,f=o.frequencyRange?o.frequencyRange[1]:120,d=Math.max(0,Math.min(1023,Math.round(p/g))),h=Math.max(d,Math.min(1023,Math.round(f/g))),I=typeof o.amplitudeMultiplier=="number"?o.amplitudeMultiplier:typeof o.amplitudeMultiplier?.value=="number"?o.amplitudeMultiplier.value:1,b=o.damping??0;this.uniformUint32[0]=u,this.uniformUint32[1]=d,this.uniformUint32[2]=h,this.uniformUint32[3]=i,this.uniformFloat32[4]=I,this.uniformFloat32[5]=b,this.uniformFloat32[6]=a,this.uniformFloat32[7]=0;let Q=this.uniformPool.getBuffer(this.device,new Uint8Array(this.uniformData)),m=this.device.createBindGroup({layout:this.bindGroupLayout,entries:[{binding:0,resource:{buffer:A}},{binding:1,resource:{buffer:Q}},{binding:2,resource:{buffer:r}},{binding:3,resource:{buffer:l}}]}),w=t.beginComputePass({label:"AudioMeshDeformComputePass"});w.setPipeline(this.pipeline),w.setBindGroup(0,m);let v=Math.ceil(i/256);return w.dispatchWorkgroups(v),w.end(),l}resetPools(){this.uniformPool.reset()}destroy(){this.uniformPool.destroy()}};$();$();Pt();var oo=class e{static isBinary(t){let r=t instanceof Uint8Array?t:new Uint8Array(t);if(r.length<84)return!1;let o=new DataView(r.buffer,r.byteOffset,r.byteLength).getUint32(80,!0),A=84+o*50;if(r.length===A)return!0;let i=Math.min(r.length,512);for(let s=0;s<i;s++){let c=r[s];if(c>127||c<32&&c!==9&&c!==10&&c!==13)return!0}let a=new TextDecoder("utf-8").decode(r.subarray(0,80)).trim();return a.startsWith("solid")&&!a.includes(`
142
- `)?r.length>=84+o*50:!a.startsWith("solid")}static parse(t,r={}){if(typeof t=="string")return e.parseAscii(t,r);let n=t instanceof Uint8Array?t:new Uint8Array(t);if(e.isBinary(n))return e.parseBinary(n,r);let o=new TextDecoder("utf-8").decode(n);return e.parseAscii(o,r)}static parseBinary(t,r={}){let n=new DataView(t.buffer,t.byteOffset,t.byteLength),o=n.getUint32(80,!0),A=[],i=[],a=[],s=84;for(let c=0;c<o&&!(s+50>t.byteLength);c++){let l=n.getFloat32(s,!0),u=n.getFloat32(s+4,!0),g=n.getFloat32(s+8,!0);s+=12;let p=n.getFloat32(s,!0),f=n.getFloat32(s+4,!0),d=n.getFloat32(s+8,!0);s+=12;let h=n.getFloat32(s,!0),I=n.getFloat32(s+4,!0),b=n.getFloat32(s+8,!0);s+=12;let Q=n.getFloat32(s,!0),m=n.getFloat32(s+4,!0),w=n.getFloat32(s+8,!0);s+=12,s+=2;let v=l,S=u,N=g;if(v===0&&S===0&&N===0){let G=Z.subtract([h,I,b],[p,f,d]),j=Z.subtract([Q,m,w],[p,f,d]),R=Z.normalize(Z.cross(G,j));v=R[0],S=R[1],N=R[2]}let _=A.length/3;A.push(p,f,d,h,I,b,Q,m,w),i.push(v,S,N,v,S,N,v,S,N),a.push(_,_+1,_+2)}return e.finalizeModel(A,i,a,r)}static parseAscii(t,r={}){let n=[],o=[],A=[],i=t.split(/\r?\n/),a=[0,0,1],s=[];for(let c of i){let l=c.trim();if(l){if(l.startsWith("facet normal")){let u=l.split(/\s+/),g=Number.parseFloat(u[2]??"0")||0,p=Number.parseFloat(u[3]??"0")||0,f=Number.parseFloat(u[4]??"0")||0;a=[g,p,f],s=[]}else if(l.startsWith("vertex")){let u=l.split(/\s+/),g=Number.parseFloat(u[1]??"0")||0,p=Number.parseFloat(u[2]??"0")||0,f=Number.parseFloat(u[3]??"0")||0;s.push([g,p,f])}else if(l.startsWith("endfacet")){if(s.length>=3){let u=s[0],g=s[1],p=s[2],f=a;if(f[0]===0&&f[1]===0&&f[2]===0){let d=Z.subtract(g,u),h=Z.subtract(p,u);f=Z.normalize(Z.cross(d,h))}for(let d=1;d<s.length-1;d++){let h=s[d],I=s[d+1],b=n.length/3;n.push(u[0],u[1],u[2],h[0],h[1],h[2],I[0],I[1],I[2]),o.push(f[0],f[1],f[2],f[0],f[1],f[2],f[0],f[1],f[2]),A.push(b,b+1,b+2)}}s=[]}}}return e.finalizeModel(n,o,A,r)}static finalizeModel(t,r,n,o={}){let A=jt(t),i=Dt(A,o),a=Vt(t,i),[s,c]=A.min,[l,u]=A.size,g=new Float32Array(t.length/3*2);for(let h=0;h<t.length;h+=3){let I=h/3*2;g[I]=l>0?(t[h]-s)/l:0,g[I+1]=u>0?(t[h+1]-c)/u:0}let p=Jt(n,a.length/3),f={name:"stl_default",diffuseColor:[.8,.8,.85,1],shininess:32,specularIntensity:.5,...o.defaultMaterial};return{name:"STL_Model",meshes:[{id:"stl_mesh_0",name:"stl_geometry",positions:a,normals:new Float32Array(r),uvs:g,indices:p,materialName:"stl_default"}],materials:{stl_default:f},animations:[],bounds:Kt(A,i)}}static load(t,r={}){if(typeof t!="string")return e.parse(t,r);if(t.startsWith("/")||t.startsWith("./")||t.startsWith("../")||t.startsWith("file://")){let n=t.startsWith("file://")?t.replace("file://",""):t,o=Re.readFileSync(n);return e.parse(o,r)}return e.parse(t,r)}};function Ao(e,t={}){return oo.load(e,t)}$();Pt();var uA=class e{static parse(t,r={}){let n=typeof t=="string"?new TextEncoder().encode(t):t instanceof Uint8Array?t:new Uint8Array(t),o=e.extractHeader(n),A=e.parseHeader(o.text);if(A.format==="ascii"){let a=new TextDecoder("utf-8").decode(n.subarray(o.endOffset));return e.parseAsciiBody(A,a,r)}let i=A.format==="binary_little_endian";return e.parseBinaryBody(A,n.subarray(o.endOffset),i,r)}static extractHeader(t){let r=Math.min(t.length,1e4),n=t.subarray(0,r),o=new TextDecoder("utf-8").decode(n),A=o.indexOf("end_header");if(A===-1)throw new Error("Invalid PLY file: 'end_header' marker not found");let i=o.indexOf(`
143
- `,A);return i===-1?i=A+10:i+=1,{text:o.substring(0,i),endOffset:i}}static parseHeader(t){let r=t.split(/\r?\n/),n="ascii",o="1.0",A=[],i=null;for(let a of r){let s=a.trim();if(!s||s.startsWith("comment"))continue;let c=s.split(/\s+/),l=c[0]?.toLowerCase();if(l!=="ply"){if(l==="format"){let u=c[1]?.toLowerCase();u==="binary_little_endian"?n="binary_little_endian":u==="binary_big_endian"?n="binary_big_endian":n="ascii",o=c[2]??"1.0"}else if(l==="element"){let u=c[1]??"",g=Number.parseInt(c[2]??"0",10);i={name:u,count:g,properties:[]},A.push(i)}else if(l==="property"&&i)c[1]?.toLowerCase()==="list"?i.properties.push({name:c[4]??"",type:"list",isList:!0,countType:c[2]??"uchar",itemType:c[3]??"int"}):i.properties.push({name:c[2]??"",type:c[1]?.toLowerCase()??"float"});else if(l==="end_header")break}}return{format:n,version:o,elements:A}}static parseAsciiBody(t,r,n){let o=t.elements.find(J=>J.name==="vertex"),A=t.elements.find(J=>J.name==="face"),i=o?.count??0,a=A?.count??0,s=[],c=[],l=[],u=[],g=[],p=o?.properties??[],f=p.findIndex(J=>J.name==="x"),d=p.findIndex(J=>J.name==="y"),h=p.findIndex(J=>J.name==="z"),I=p.findIndex(J=>J.name==="nx"),b=p.findIndex(J=>J.name==="ny"),Q=p.findIndex(J=>J.name==="nz"),m=p.findIndex(J=>J.name==="u"||J.name==="s"||J.name==="texture_u"),w=p.findIndex(J=>J.name==="v"||J.name==="t"||J.name==="texture_v"),v=p.findIndex(J=>J.name==="red"||J.name==="r"),S=p.findIndex(J=>J.name==="green"||J.name==="g"),N=p.findIndex(J=>J.name==="blue"||J.name==="b"),_=p.findIndex(J=>J.name==="alpha"||J.name==="a"),G=I!==-1&&b!==-1&&Q!==-1,j=v!==-1&&S!==-1&&N!==-1,R=m!==-1&&w!==-1,K=r.trim().split(/\r?\n/),z=0;for(let J=0;J<i&&!(z>=K.length);J++){let W=K[z++]?.trim();if(!W)continue;let X=W.split(/\s+/),Ae=Number.parseFloat(X[f]??"0")||0,re=Number.parseFloat(X[d]??"0")||0,oe=Number.parseFloat(X[h]??"0")||0;if(s.push(Ae,re,oe),G){let ne=Number.parseFloat(X[I]??"0")||0,ie=Number.parseFloat(X[b]??"0")||0,he=Number.parseFloat(X[Q]??"0")||0;c.push(ne,ie,he)}else c.push(0,0,0);if(R){let ne=Number.parseFloat(X[m]??"0")||0,ie=Number.parseFloat(X[w]??"0")||0;l.push(ne,1-ie)}else l.push(0,0);if(j){let ne=(Number.parseFloat(X[v]??"255")||0)/255,ie=(Number.parseFloat(X[S]??"255")||0)/255,he=(Number.parseFloat(X[N]??"255")||0)/255,F=_!==-1?(Number.parseFloat(X[_]??"255")||0)/255:1;u.push(ne,ie,he,F)}}for(let J=0;J<a&&!(z>=K.length);J++){let W=K[z++]?.trim();if(!W)continue;let X=W.split(/\s+/),Ae=Number.parseInt(X[0]??"0",10);if(Ae>=3){let re=Number.parseInt(X[1]??"0",10);for(let oe=1;oe<Ae-1;oe++){let ne=Number.parseInt(X[oe+1]??"0",10),ie=Number.parseInt(X[oe+2]??"0",10);g.push(re,ne,ie)}}}return e.finalizeModel(s,c,l,j?u:void 0,g,G,n)}static parseBinaryBody(t,r,n,o){let A=new DataView(r.buffer,r.byteOffset,r.byteLength),i=0,a=t.elements.find(v=>v.name==="vertex"),s=t.elements.find(v=>v.name==="face"),c=a?.count??0,l=s?.count??0,u=[],g=[],p=[],f=[],d=[],h=a?.properties??[],I=h.some(v=>v.name==="nx"),b=h.some(v=>v.name==="red"||v.name==="r"),Q=v=>{let S=0;switch(v.toLowerCase()){case"char":case"int8":S=A.getInt8(i),i+=1;break;case"uchar":case"uint8":S=A.getUint8(i),i+=1;break;case"short":case"int16":S=A.getInt16(i,n),i+=2;break;case"ushort":case"uint16":S=A.getUint16(i,n),i+=2;break;case"int":case"int32":S=A.getInt32(i,n),i+=4;break;case"uint":case"uint32":S=A.getUint32(i,n),i+=4;break;case"float":case"float32":S=A.getFloat32(i,n),i+=4;break;case"double":case"float64":S=A.getFloat64(i,n),i+=8;break;default:S=A.getFloat32(i,n),i+=4;break}return S};for(let v=0;v<c;v++){let S=0,N=0,_=0,G=0,j=0,R=0,K=0,z=0,J=1,W=1,X=1,Ae=1;for(let re of h){let oe=Q(re.type),ne=re.name.toLowerCase();ne==="x"?S=oe:ne==="y"?N=oe:ne==="z"?_=oe:ne==="nx"?G=oe:ne==="ny"?j=oe:ne==="nz"?R=oe:ne==="u"||ne==="s"?K=oe:ne==="v"||ne==="t"?z=oe:ne==="red"||ne==="r"?J=re.type.includes("int")?oe/255:oe:ne==="green"||ne==="g"?W=re.type.includes("int")?oe/255:oe:ne==="blue"||ne==="b"?X=re.type.includes("int")?oe/255:oe:(ne==="alpha"||ne==="a")&&(Ae=re.type.includes("int")?oe/255:oe)}u.push(S,N,_),g.push(G,j,R),p.push(K,1-z),b&&f.push(J,W,X,Ae)}let w=(s?.properties??[]).find(v=>v.isList);for(let v=0;v<l&&!(i>=r.byteLength);v++)if(w){let S=Q(w.countType??"uchar"),N=[];for(let _=0;_<S;_++)N.push(Q(w.itemType??"int"));if(N.length>=3){let _=N[0];for(let G=1;G<N.length-1;G++)d.push(_,N[G],N[G+1])}}return e.finalizeModel(u,g,p,b?f:void 0,d,I,o)}static finalizeModel(t,r,n,o,A,i,a){(!i||a.smoothNormals)&&hr(t,A,r);let s=jt(t),c=Dt(s,a),l=Vt(t,c),u=Jt(A,l.length/3),g={name:"ply_default",diffuseColor:o?[1,1,1,1]:[.8,.8,.85,1],shininess:32,specularIntensity:.5,...a.defaultMaterial};return{name:"PLY_Model",meshes:[{id:"ply_mesh_0",name:"ply_geometry",positions:l,normals:new Float32Array(r),uvs:new Float32Array(n),colors:o?new Float32Array(o):void 0,indices:u,materialName:"ply_default"}],materials:{ply_default:g},animations:[],bounds:Kt(s,c)}}static load(t,r={}){if(typeof t!="string")return e.parse(t,r);if(t.startsWith("/")||t.startsWith("./")||t.startsWith("../")||t.startsWith("file://")){let n=t.startsWith("file://")?t.replace("file://",""):t,o=Re.readFileSync(n);return e.parse(o,r)}return e.parse(t,r)}};function io(e,t={}){return uA.load(e,t)}$();Pt();var Ga=iA(Ma(),1);$();var hA=(function(){var e="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuixkbeeeddddillviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WboY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbrl79IV9Rbwq;X8:kdbk:kYi5ud9:du8Jjjjjbcjq9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz:jjjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCaAcethXaxaDfhiaOaeaoaeao6E9RhQalcl4cifcd4hLazcjdfaAfhKcbhYabaOad2fg8AhEaHh3incbh5dnawTmbaxaYcd4fRbbh5kcbh8Eazcjdfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcjdfa8EaA2fa8FaAz:jjjjb8Aa8FaAfhixdkazcjdfa8EaA2fcbaAz:kjjjb8Aa8FhixekaPa8F9RaL6mva8FaLfhidnaCTmbaPai9RcK6mbaocdtc:q:G:cjbfcj:G:cjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bwar9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfcbaicdfa8J9c8N1:NfghRbbag9cjjjjjw:dg8J9qE86bbarcVfcbaha8J9c8M1:NfghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fcbaha8J9c8N1:NfgiRbbag9cjjjjjw:dg8J9qE86bbarc96fcbaia8J9c8M1:NfgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbw83bwarai8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasaYcd4fRbbgociGPlbedrbkaATmdazaYfh8Fazcjdfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeazaYfhaazcjdfhhcbhoceh8EaKh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaQaocefgofmbka8FaXfh8FcdhoaacdfhaahaXfhha8EceGhlcbh8EalmbxdkkaATmbaocl4h8EazaYfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaKhainazcjdfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E94aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3aYclfgYad6mbkaza8AaAcufad2fadz:jjjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcjqf8Kjjjjbaok:bsesu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecjez:kjjjb8Aav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhDaicefgiarfhqdndnaeci9pmbaqhexekcmcsawceSEhkcbhxcbhmaqhecbhlcbhoindndnaiRbbgrc;Ve0mbavc;abfaoarcu7gPcl4fcsGcitfgwydlhsawydbhzdndnarcsGgwak9pmbavalaPfcsGcdtfydbaxawEhraxawTgHfhxxekdnaeaD9nmbc9:hoxokdndnawcsSmbcehHamawcetfcWfhrxekaecefhrae8SbbgwcFeGhPdndnawcu9mmbarhexekaecvfheaPcFbGhPcrhwdninar8SbbgHcFbGawtaPVhPaHcu9kmearcefhrawcrfgwc8J9hmbxdkkarcefhekcehHaPce4cbaPceG9R7amfhrkarhmkavc;abfaocitfgwarBdbawasBdlavalcdtfarBdbavc;abfaocefcsGcitfgwazBdbawarBdlaocdfhoaHalfhldnadcd9hmbabar87elabas87edabaz87ebabcofhbxdkabarBdwabasBdlabazBdbabcxfhbxekdnarcpe0mbavalaDarcsGfRbbgwcl4gP9RcsGcdtfydbaxcefgsaPEhravalaw9RcsGcdtfydbasaPTgzfgsawcsGgPEhwaPThPdndnadcd9hmbabaw87elabar87edabax87ebcohHxekabawBdwabarBdlabaxBdbcxhHkavalcdtfaxBdbavc;abfaocitfgOarBdbaOaxBdlavalcefglcsGcdtfarBdbavc;abfaocefcsGcitfgOawBdbaOarBdlavalazfglcsGcdtfawBdbavc;abfaocdfcsGcitfgraxBdbarawBdlaocifhoabaHfhbalaPfhlasaPfhxxekdnaeaD9nmbc9:hoxlkaxcbaeRbbgwEgHarc;:eSgrfhsawcsGhOdndnawcl4gAmbascefhzxekashzavalaA9RcsGcdtfydbhskdndnaOmbazcefhxxekazhxavalaw9RcsGcdtfydbhzkdndnarTmbaecefhrxekaecdfhrae8SbegPcFeGhwdnaPcu9kmbaecofhHawcFbGhwcrhedninar8SbbgPcFbGaetawVhwaPcu9kmearcefhraecrfgec8J9hmbkaHhrxekarcefhrkawce4cbawceG9R7amfgmhHkdndnaAcsSmbarhwxekarcefhwar8SbbgecFeGhPdnaecu9kmbarcvfhsaPcFbGhPcrhedninaw8SbbgrcFbGaetaPVhParcu9kmeawcefhwaecrfgec8J9hmbkashwxekawcefhwkaPce4cbaPceG9R7amfgmhskdndnaOcsSmbawhexekawcefheaw8SbbgrcFeGhPdnarcu9kmbawcvfhzaPcFbGhPcrhrdninae8SbbgwcFbGartaPVhPawcu9kmeaecefhearcrfgrc8J9hmbkazhexekaecefhekaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabaz87elabas87edabaH87ebcohrxekabazBdwabasBdlabaHBdbcxhrkavc;abfaocitfgwasBdbawaHBdlavalcdtfaHBdbavc;abfaocefcsGcitfgwazBdbawasBdlavalcefglcsGcdtfasBdbavc;abfaocdfcsGcitfgwaHBdbawazBdlavalaATaAcsSVfglcsGcdtfazBdbalaOTaOcsSVfhlaocifhoabarfhbkaocsGhoalcsGhlaicefgiaq6mbkkcbc99aeaDSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk:4ioiue99dud99dud99dnaeTmbcbhiabhlindndnal8Uebgv:YgoJ:ji:1Salcof8UebgrciVgw:Y:vgDNJbbbZJbbb:;avcu9kEMgq:lJbbb9p9DTmbaq:Ohkxekcjjjj94hkkalclf8Uebhvalcdf8UebhxalarcefciGcetfak87ebdndnax:YgqaDNJbbbZJbbb:;axcu9kEMgm:lJbbb9p9DTmbam:Ohxxekcjjjj94hxkabaiarciGgkfcd7cetfax87ebdndnav:YgmaDNJbbbZJbbb:;avcu9kEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkalarcufciGcetfav87ebdndnawaw2:ZgPaPMaoaoN:taqaqN:tamamN:tgoJbbbbaoJbbbb9GE:raDNJbbbZMgD:lJbbb9p9DTmbaD:Ohrxekcjjjj94hrkalakcetfar87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk:Tvirud99eudndnadcl9hmbaeTmeindndnabRbbgiabcefgl8Sbbgvabcdfgo8Sbbgrf9R:YJbbuJabcifgwRbbgdce4adVgDcd4aDVgDcl4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax86bbdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao86bbdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai86bbdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad86bbabclfhbaecufgembxdkkaeTmbindndnab8Vebgiabcdfgl8Uebgvabclfgo8Uebgrf9R:YJbFu9habcofgw8Vebgdce4adVgDcd4aDVgDcl4aDVgDcw4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax87ebdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao87ebdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai87ebdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad87ebabcwfhbaecufgembkkk9teiucbcbyd:K:G:cjbgeabcifc98GfgbBd:K:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk83dbcj:Gdk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:K:Gdkl8W:qbb",t="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuixkbbebeeddddilve9Weeeviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WbwY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbDl79IV9Rbqq:I9Dklbzik94evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaeai86b:q:W:cjbaecitab8Piw83i:q:G:cjbaecefgecjd9hmbkk:SBlEud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaialfgxar9RhodnadTgmmbavaoad;8qbbkaicefhPcj;abad9Uc;WFbGcjdadca0EhsdndndnadTmbaoadfhzcbhHinaeaH9nmdaxaP9RaD6miabaHad2fgOavcjdfasaeaH9RaHasfae6EgAaAcsfgoc9WGgCSEhXaPaDfhQaocl4cifcd4hLavcj;cbfaCcetfhKavcj;cbfaCci2fhYavcj;cbfaCfh8AcbhEaoc;ab6h3incbh5dnawTmbaPaEcd4fRbbh5kcbh8Eavcj;cbfh8Findndndndna5a8Ecet4ciGgoc9:fPdebdkaxaQ9RaC6mwdnaCTmbavcj;cbfa8EaC2faQaC;8qbbkaQaAfhQxdkaCTmeavcj;cbfa8EaC2fcbaC;8kbxekaxaQ9RaL6moaoclVcbawEhraQaLfhocbhidna3mbaxao9Rc;Gb6mbcbhlina8FalfhidndndndndndnaQalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLgacdp:meaapmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9oghpxiiiiiiiiiiiiiiiip8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaoclffa8JRb:q:W:cjbfhoxikaiaopbbwaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLpxssssssssssssssssp9oghpxssssssssssssssssp8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaocwffa8JRb:q:W:cjbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbggcitpbi:q:G:cjbagRb:q:W:cjbggpsaoRbeg8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbagaocdffa8JRb:q:W:cjbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLgacdp:meaapmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9oghpxiiiiiiiiiiiiiiiip8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaoclffa8JRb:q:W:cjbfhoxikaiczfaopbbwaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLpxssssssssssssssssp9oghpxssssssssssssssssp8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaocwffa8JRb:q:W:cjbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbggcitpbi:q:G:cjbagRb:q:W:cjbggpsaoRbeg8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbagaocdffa8JRb:q:W:cjbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLgacdp:meaapmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9oghpxiiiiiiiiiiiiiiiip8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaoclffa8JRb:q:W:cjbfhoxikaicafaopbbwaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLpxssssssssssssssssp9oghpxssssssssssssssssp8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaocwffa8JRb:q:W:cjbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbggcitpbi:q:G:cjbagRb:q:W:cjbggpsaoRbeg8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbagaocdffa8JRb:q:W:cjbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLgacdp:meaapmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9oghpxiiiiiiiiiiiiiiiip8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsaap5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbaiaoclffaqRb:q:W:cjbfhoxikaic8Wfaopbbwaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLpxssssssssssssssssp9oghpxssssssssssssssssp8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsaap5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbaiaocwffaqRb:q:W:cjbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitpbi:q:G:cjbaiRb:q:W:cjbgipsaoRbegqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqRb:q:W:cjbfhokalc;abfhialcjefaC0meaihlaxao9Rc;Fb0mbkkdnaiaC9pmbaici4hlinaxao9RcK6mwa8FaifhqdndndndndndnaQaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLgacdp:meaapmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9oghpxiiiiiiiiiiiiiiiip8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spkbbagaoclffa8JRb:q:W:cjbfhoxikaqaopbbwaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLpxssssssssssssssssp9oghpxssssssssssssssssp8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spkbbagaocwffa8JRb:q:W:cjbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbggcitpbi:q:G:cjbagRb:q:W:cjbggpsaoRbeg8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpkbbagaocdffa8JRb:q:W:cjbfhokalcdfhlaiczfgiaC6mbkkaohQaoTmoka8FaCfh8Fa8Ecefg8Ecl9hmbkdndndndnawTmbazaEcd4fRbbglciGPlbedwbkaCTmdaXaEfhlavaEfpbdbh8Kcbhoinalavcj;cbfaofpblbg8La8Aaofpblbg8MpmbzeHdOiAlCvXoQrLg8NaKaofpblbgyaYaofpblbg8PpmbzeHdOiAlCvXoQrLgIpmbezHdiOAlvCXorQLgacep9Taapxeeeeeeeeeeeeeeeeghp9op9Hp9rgaa8Kp9Ug8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp9Ug8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp9Ug8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp9Ug8Kp9Abbbaladfgla8Ka8NaIpmwDKYqk8AExm35Ps8E8Fgacep9Taaahp9op9Hp9rgap9Ug8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp9Ug8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp9Ug8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp9Ug8Kp9Abbbaladfgla8Ka8La8MpmwKDYq8AkEx3m5P8Es8Fg8Laya8PpmwKDYq8AkEx3m5P8Es8Fg8MpmbezHdiOAlvCXorQLgacep9Taaahp9op9Hp9rgap9Ug8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp9Ug8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp9Ug8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp9Ug8Kp9Abbbaladfgla8Ka8La8MpmwDKYqk8AExm35Ps8E8Fgacep9Taaahp9op9Hp9rgap9Ughp9Abbbaladfglahaaaapmlvorlvorlvorlvorp9Ughp9AbbbaladfglahaaaapmwDqkwDqkwDqkwDqkp9Ughp9AbbbaladfglahaaaapmxmPsxmPsxmPsxmPsp9Ug8Kp9AbbbaladfhlaoczfgoaC6mbxikkaCTmeaXaEfhlavaEfpbdbh8Kcbhoinalavcj;cbfaofpblbg8La8Aaofpblbg8MpmbzeHdOiAlCvXoQrLg8NaKaofpblbgyaYaofpblbg8PpmbzeHdOiAlCvXoQrLgIpmbezHdiOAlvCXorQLgacep:neaapxebebebebebebebebghp9op:bep9rgaa8Kp:oeg8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp:oeg8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp:oeg8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp:oeg8Kp9Abbbaladfgla8Ka8NaIpmwDKYqk8AExm35Ps8E8Fgacep:neaaahp9op:bep9rgap:oeg8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp:oeg8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp:oeg8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp:oeg8Kp9Abbbaladfgla8Ka8La8MpmwKDYq8AkEx3m5P8Es8Fg8Laya8PpmwKDYq8AkEx3m5P8Es8Fg8MpmbezHdiOAlvCXorQLgacep:neaaahp9op:bep9rgap:oeg8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp:oeg8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp:oeg8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp:oeg8Kp9Abbbaladfgla8Ka8La8MpmwDKYqk8AExm35Ps8E8Fgacep:neaaahp9op:bep9rgap:oeghp9Abbbaladfglahaaaapmlvorlvorlvorlvorp:oeghp9AbbbaladfglahaaaapmwDqkwDqkwDqkwDqkp:oeghp9AbbbaladfglahaaaapmxmPsxmPsxmPsxmPsp:oeg8Kp9AbbbaladfhlaoczfgoaC6mbxdkkaCTmbaXaEfhrcbhocbalcl4gl9Rc8FGhiavaEfpbdbhhinaravcj;cbfaofpblbg8Ka8Aaofpblbg8LpmbzeHdOiAlCvXoQrLg8MaKaofpblbg8NaYaofpblbgypmbzeHdOiAlCvXoQrLg8PpmbezHdiOAlvCXorQLgaaip:Reaaalp:Tep9qgaahp9rghp9Abbbaradfgrahaaaapmlvorlvorlvorlvorp9rghp9AbbbaradfgrahaaaapmwDqkwDqkwDqkwDqkp9rghp9AbbbaradfgrahaaaapmxmPsxmPsxmPsxmPsp9rghp9Abbbaradfgraha8Ma8PpmwDKYqk8AExm35Ps8E8Fgaaip:Reaaalp:Tep9qgap9rghp9Abbbaradfgrahaaaapmlvorlvorlvorlvorp9rghp9AbbbaradfgrahaaaapmwDqkwDqkwDqkwDqkp9rghp9AbbbaradfgrahaaaapmxmPsxmPsxmPsxmPsp9rghp9Abbbaradfgraha8Ka8LpmwKDYq8AkEx3m5P8Es8Fg8Ka8NaypmwKDYq8AkEx3m5P8Es8Fg8LpmbezHdiOAlvCXorQLgaaip:Reaaalp:Tep9qgap9rghp9Abbbaradfgrahaaaapmlvorlvorlvorlvorp9rghp9AbbbaradfgrahaaaapmwDqkwDqkwDqkwDqkp9rghp9AbbbaradfgrahaaaapmxmPsxmPsxmPsxmPsp9rghp9Abbbaradfgraha8Ka8LpmwDKYqk8AExm35Ps8E8Fgaaip:Reaaalp:Tep9qgap9rghp9Abbbaradfgrahaaaapmlvorlvorlvorlvorp9rghp9AbbbaradfgrahaaaapmwDqkwDqkwDqkwDqkp9rghp9AbbbaradfgrahaaaapmxmPsxmPsxmPsxmPsp9rghp9AbbbaradfhraoczfgoaC6mbkkaEclfgEad6mbkdnaXavcjdf9hmbaAad2goTmbaOavcjdfao;8qbbkdnammbavaXaAcufad2fad;8qbbkaAaHfhHc9:hoaQhPaQmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdasaeao9Raoasfae6Eaofgoae6mbkaial9RhPkcbc99axaP9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbkpPesu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecje;8kbav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhDaicefgiarfhqdndnaeci9pmbaqhexekcmcsawceSEhkcbhxcbhmaqhecbhlcbhoindndnaiRbbgrc;Ve0mbavc;abfaoarcu7gPcl4fcsGcitfgwydlhsawydbhzdndnarcsGgwak9pmbavalaPfcsGcdtfydbaxawEhraxawTgHfhxxekdnaeaD9nmbc9:hoxokdndnawcsSmbcehHamawcetfcWfhrxekaecefhrae8SbbgwcFeGhPdndnawcu9mmbarhexekaecvfheaPcFbGhPcrhwdninar8SbbgHcFbGawtaPVhPaHcu9kmearcefhrawcrfgwc8J9hmbxdkkarcefhekcehHaPce4cbaPceG9R7amfhrkarhmkavc;abfaocitfgwarBdbawasBdlavalcdtfarBdbavc;abfaocefcsGcitfgwazBdbawarBdlaocdfhoaHalfhldnadcd9hmbabar87elabas87edabaz87ebabcofhbxdkabarBdwabasBdlabazBdbabcxfhbxekdnarcpe0mbavalaDarcsGfRbbgwcl4gP9RcsGcdtfydbaxcefgsaPEhravalaw9RcsGcdtfydbasaPTgzfgsawcsGgPEhwaPThPdndnadcd9hmbabaw87elabar87edabax87ebcohHxekabawBdwabarBdlabaxBdbcxhHkavalcdtfaxBdbavc;abfaocitfgOarBdbaOaxBdlavalcefglcsGcdtfarBdbavc;abfaocefcsGcitfgOawBdbaOarBdlavalazfglcsGcdtfawBdbavc;abfaocdfcsGcitfgraxBdbarawBdlaocifhoabaHfhbalaPfhlasaPfhxxekdnaeaD9nmbc9:hoxlkaxcbaeRbbgwEgHarc;:eSgrfhsawcsGhOdndnawcl4gAmbascefhzxekashzavalaA9RcsGcdtfydbhskdndnaOmbazcefhxxekazhxavalaw9RcsGcdtfydbhzkdndnarTmbaecefhrxekaecdfhrae8SbegPcFeGhwdnaPcu9kmbaecofhHawcFbGhwcrhedninar8SbbgPcFbGaetawVhwaPcu9kmearcefhraecrfgec8J9hmbkaHhrxekarcefhrkawce4cbawceG9R7amfgmhHkdndnaAcsSmbarhwxekarcefhwar8SbbgecFeGhPdnaecu9kmbarcvfhsaPcFbGhPcrhedninaw8SbbgrcFbGaetaPVhParcu9kmeawcefhwaecrfgec8J9hmbkashwxekawcefhwkaPce4cbaPceG9R7amfgmhskdndnaOcsSmbawhexekawcefheaw8SbbgrcFeGhPdnarcu9kmbawcvfhzaPcFbGhPcrhrdninae8SbbgwcFbGartaPVhPawcu9kmeaecefhearcrfgrc8J9hmbkazhexekaecefhekaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabaz87elabas87edabaH87ebcohrxekabazBdwabasBdlabaHBdbcxhrkavc;abfaocitfgwasBdbawaHBdlavalcdtfaHBdbavc;abfaocefcsGcitfgwazBdbawasBdlavalcefglcsGcdtfasBdbavc;abfaocdfcsGcitfgwaHBdbawazBdlavalaATaAcsSVfglcsGcdtfazBdbalaOTaOcsSVfhlaocifhoabarfhbkaocsGhoalcsGhlaicefgiaq6mbkkcbc99aeaDSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk;Toio97eue97aec98Ghedndnadcl9hmbaeTmecbhdinababpbbbgicKp:RecKp:Sep;6eglaicwp:RecKp:Sep;6ealp;Geaiczp:RecKp:Sep;6egvp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgwp9op9rp;Keglpxbb;:9cbb;:9cbb;:9cbb;:9calalp;Meaoaop;Meavaravawp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFbbbFbbbFbbbFbbbp9oaipxbbbFbbbFbbbFbbbFp9op9qalavp;Mearp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaoavp;Mearp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgDaDpbbbgipxbbbbbbFFbbbbbbFFgwp9oabpbbbgoaipmbediwDqkzHOAKY8AEgvczp:Reczp:Sep;6eglaoaipmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eavczp:Sep;6egvp;Gealp;Gep;Kep;Legipxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgqp9op9rp;Keglpxb;:FSb;:FSb;:FSb;:FSalalp;Meaiaip;Meavaravaqp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbp9oaiavp;Mearp;Keczp:Rep9qgialavp;Mearp;KepxFFbbFFbbFFbbFFbbp9oglpmwDKYqk8AExm35Ps8E8Fp9qpkbbabaoawp9oaialpmbezHdiOAlvCXorQLp9qpkbbabcafhbadclfgdae6mbkkk;2ileue97euo97dnaec98GgiTmbcbheinabcKfpx:ji:1S:ji:1S:ji:1S:ji:1SabpbbbglabczfgvpbbbgopmlvorxmPsCXQL358E8Fgrczp:Segwpxibbbibbbibbbibbbp9qp;6egDp;NegqaDaDp;MegDaDp;KealaopmbediwDqkzHOAKY8AEgDczp:Reczp:Sep;6eglalp;MeaDczp:Sep;6egoaop;Mearczp:Reczp:Sep;6egrarp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jep;Mepxbbn0bbn0bbn0bbn0gDp;KepxFFbbFFbbFFbbFFbbgkp9oaqaop;MeaDp;Keczp:Rep9qgoaqalp;MeaDp;Keakp9oaqarp;MeaDp;Keczp:Rep9qgDpmwDKYqk8AExm35Ps8E8Fglp5eawclp:RegqpEi:T:j83ibavalp5baqpEd:T:j83ibabcwfaoaDpmbezHdiOAlvCXorQLgDp5eaqpEe:T:j83ibabaDp5baqpEb:T:j83ibabcafhbaeclfgeai6mbkkkuee97dnadcd4ae2c98GgeTmbcbhdinababpbbbgicwp:Recwp:Sep;6eaicep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbabczfhbadclfgdae6mbkkk:Sodw97euaec98Ghedndnadcl9hmbaeTmecbhdinabpxbbuJbbuJbbuJbbuJabpbbbgicKp:TeglaicYp:Tep9qgvcdp:Teavp9qgvclp:Teavp9qgop;6ep;Negvaicwp:RecKp:SegraipxFbbbFbbbFbbbFbbbgwp9ogDp:Uep;6ep;Mepxbbn0bbn0bbn0bbn0gqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9oavaDarp:Xeaiczp:RecKp:Segip:Uep;6ep;Meaqp;Keawp9op9qavaDaraip:Uep:Xep;6ep;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qavaoalcep:Rep9oalpxebbbebbbebbbebbbp9op9qp;6ep;Meaqp;KecKp:Rep9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgkpxbFu9hbFu9hbFu9hbFu9habpbbbglakpbbbgrpmlvorxmPsCXQL358E8Fgvczp:TegqavcHp:Tep9qgicdp:Teaip9qgiclp:Teaip9qgicwp:Teaip9qgop;6ep;NegialarpmbediwDqkzHOAKY8AEgDpxFFbbFFbbFFbbFFbbglp9ograDczp:Segwp:Ueavczp:Reczp:SegDp:Xep;6ep;Mepxbbn0bbn0bbn0bbn0gvp;Kealp9oaiarawaDp:Uep:Xep;6ep;Meavp;Keczp:Rep9qgwaiaoaqcep:Rep9oaqpxebbbebbbebbbebbbp9op9qp;6ep;Meavp;Keczp:ReaiaDarp:Uep;6ep;Meavp;Kealp9op9qgipmwDKYqk8AExm35Ps8E8FpkbbabawaipmbezHdiOAlvCXorQLpkbbabcafhbadclfgdae6mbkkk9teiucbcbydj:G:cjbgeabcifc98GfgbBdj:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkxebcj:Gdklz:zbb",r=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),n=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var o=WebAssembly.validate(r)?a(t):a(e),A,i=WebAssembly.instantiate(o,{}).then(function(I){A=I.instance,A.exports.__wasm_call_ctors()});function a(I){for(var b=new Uint8Array(I.length),Q=0;Q<I.length;++Q){var m=I.charCodeAt(Q);b[Q]=m>96?m-97:m>64?m-39:m+4}for(var w=0,Q=0;Q<I.length;++Q)b[w++]=b[Q]<60?n[b[Q]]:(b[Q]-60)*64+b[++Q];return b.buffer.slice(0,w)}function s(I,b,Q,m,w,v,S){var N=I.exports.sbrk,_=m+3&-4,G=N(_*w),j=N(v.length),R=new Uint8Array(I.exports.memory.buffer);R.set(v,j);var K=b(G,m,w,j,v.length);if(K==0&&S&&S(G,_,w),Q.set(R.subarray(G,G+m*w)),N(G-N(0)),K!=0)throw new Error("Malformed buffer data: "+K)}var c={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp",COLOR:"meshopt_decodeFilterColor"},l={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},u=[],g=0;function p(I){var b={object:new Worker(I),pending:0,requests:{}};return b.object.onmessage=function(Q){var m=Q.data;b.pending-=m.count,b.requests[m.id][m.action](m.value),delete b.requests[m.id]},b}function f(I){for(var b="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(o)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+h.name+";"+s.toString()+h.toString(),Q=new Blob([b],{type:"text/javascript"}),m=URL.createObjectURL(Q),w=u.length;w<I;++w)u[w]=p(m);for(var w=I;w<u.length;++w)u[w].object.postMessage({});u.length=I,URL.revokeObjectURL(m)}function d(I,b,Q,m,w){for(var v=u[0],S=1;S<u.length;++S)u[S].pending<v.pending&&(v=u[S]);return new Promise(function(N,_){var G=new Uint8Array(Q),j=++g;v.pending+=I,v.requests[j]={resolve:N,reject:_},v.object.postMessage({id:j,count:I,size:b,source:G,mode:m,filter:w},[G.buffer])})}function h(I){var b=I.data;self.ready.then(function(Q){if(!b.id)return self.close();try{var m=new Uint8Array(b.count*b.size);s(Q,Q.exports[b.mode],m,b.count,b.size,b.source,Q.exports[b.filter]),self.postMessage({id:b.id,count:b.count,action:"resolve",value:m},[m.buffer])}catch(w){self.postMessage({id:b.id,count:b.count,action:"reject",value:w})}})}return{ready:i,supported:!0,useWorkers:function(I){f(I)},decodeVertexBuffer:function(I,b,Q,m,w){s(A,A.exports.meshopt_decodeVertexBuffer,I,b,Q,m,A.exports[c[w]])},decodeIndexBuffer:function(I,b,Q,m){s(A,A.exports.meshopt_decodeIndexBuffer,I,b,Q,m)},decodeIndexSequence:function(I,b,Q,m){s(A,A.exports.meshopt_decodeIndexSequence,I,b,Q,m)},decodeGltfBuffer:function(I,b,Q,m,w,v){s(A,A.exports[l[w]],I,b,Q,m,A.exports[c[v]])},decodeGltfBufferAsync:function(I,b,Q,m,w){return u.length>0?d(I,b,Q,l[m],c[w]):i.then(function(){var v=new Uint8Array(I*b);return s(A,A.exports[l[m]],v,I,b,Q,A.exports[c[w]]),v})}}})();var mA={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},_a={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};function Sa(e,t=!1){switch(e){case 5120:return t?(r,n)=>Math.max(r.getInt8(n)/127,-1):(r,n)=>r.getInt8(n);case 5121:return t?(r,n)=>r.getUint8(n)/255:(r,n)=>r.getUint8(n);case 5122:return t?(r,n)=>Math.max(r.getInt16(n,!0)/32767,-1):(r,n)=>r.getInt16(n,!0);case 5123:return t?(r,n)=>r.getUint16(n,!0)/65535:(r,n)=>r.getUint16(n,!0);case 5125:return(r,n)=>r.getUint32(n,!0);default:return(r,n)=>r.getFloat32(n,!0)}}var lc=new Set(["KHR_materials_unlit","KHR_materials_emissive_strength","KHR_texture_transform","KHR_texture_basisu","EXT_texture_webp"]);function uc(e,t){if(t===0)return{indices:e,topology:"point-list"};if(t===1){if(e.length%2!==0)throw new Error("glTF LINES index count must be even");return{indices:e,topology:"line-list"}}if(t===4)return{indices:e,topology:"triangle-list"};if(![2,3,5,6].includes(t))throw new Error(`Invalid glTF primitive mode ${t}`);let r=[];if(t===2||t===3){for(let n=1;n<e.length;n++)r.push(e[n-1],e[n]);t===2&&e.length>1&&r.push(e[e.length-1],e[0])}else for(let n=2;n<e.length;n++)t===6?r.push(e[0],e[n-1],e[n]):n%2===0?r.push(e[n-2],e[n-1],e[n]):r.push(e[n-1],e[n-2],e[n]);return{indices:e instanceof Uint32Array?Uint32Array.from(r):Uint16Array.from(r),topology:t<=3?"line-list":"triangle-list"}}var Pa=1179937895,gc=1313821514,pc=5130562,mr=class e{static isGlb(t){let r=t instanceof Uint8Array?t:new Uint8Array(t);return r.length<12?!1:new DataView(r.buffer,r.byteOffset,r.byteLength).getUint32(0,!0)===Pa}static parse(t,r={},n){let{doc:o,binaryBuffers:A}=e.readDocument(t,n);e.checkExtensions(o);for(let i of o.meshes??[])for(let a of i.primitives){let s=a.extensions?.KHR_draco_mesh_compression;if(s){if(a.indices!==void 0){let c=o.accessors?.[a.indices];if(!c||c.bufferView===void 0&&!c.sparse)throw new Error("Draco indices without an uncompressed fallback require GltfLoader.parseAsync")}for(let c of Object.keys(s.attributes)){let l=a.attributes[c],u=l===void 0?void 0:o.accessors?.[l];if(!u||u.bufferView===void 0&&!u.sparse)throw new Error("Draco geometry without an uncompressed fallback requires GltfLoader.parseAsync")}}}return e.buildModel(o,A,r,n)}static async parseAsync(t,r={},n){let{doc:o,binaryBuffers:A}=e.readDocument(t,n);return e.checkExtensions(o,new Set(["EXT_meshopt_compression","KHR_meshopt_compression","KHR_draco_mesh_compression"])),await e.decodeMeshopt(o,A),await e.decodeDraco(o,A),e.buildModel(o,A,r,n)}static checkExtensions(t,r=new Set){for(let n of t.extensionsRequired??[])if(!lc.has(n)&&!r.has(n))throw new Error(`glTF file requires ${n}, which framefields cannot decode or render`)}static async decodeMeshopt(t,r){let n=(t.bufferViews??[]).filter(o=>o.extensions?.EXT_meshopt_compression||o.extensions?.KHR_meshopt_compression);if(n.length){await hA.ready;for(let o of n){if(o.extensions?.EXT_meshopt_compression&&o.extensions?.KHR_meshopt_compression)throw new Error("A buffer view cannot use both EXT and KHR meshopt compression");let A=o.extensions?.KHR_meshopt_compression??o.extensions?.EXT_meshopt_compression;if(!A)continue;let i=r[A.buffer];if(!i)throw new Error(`meshopt buffer ${A.buffer} not loaded`);let a=A.byteOffset??0;if(a<0||A.byteLength<0||a+A.byteLength>i.byteLength)throw new Error("Invalid meshopt compressed buffer range");let s=A.count*A.byteStride;if(!Number.isSafeInteger(A.count)||A.count<0||!Number.isSafeInteger(A.byteStride)||A.byteStride<1||!Number.isSafeInteger(s)||s!==o.byteLength)throw new Error("Invalid meshopt decoded buffer length");if(!["ATTRIBUTES","TRIANGLES","INDICES"].includes(A.mode)||!["NONE","OCTAHEDRAL","QUATERNION","EXPONENTIAL","COLOR"].includes(A.filter??"NONE"))throw new Error("Invalid meshopt compression mode or filter");let c=new Uint8Array(s);hA.decodeGltfBuffer(c,A.count,A.byteStride,i.subarray(a,a+A.byteLength),A.mode,A.filter??"NONE"),o.buffer=r.length,o.byteOffset=0,r.push(c)}}}static async decodeDraco(t,r){let n=(t.meshes??[]).flatMap(i=>i.primitives).filter(i=>i.extensions?.KHR_draco_mesh_compression);if(!n.length)return;let o=await Ga.default.createDecoderModule({}),A=new o.Decoder;try{for(let i of n){let a=i.extensions?.KHR_draco_mesh_compression;if(!a)continue;let s=t.bufferViews?.[a.bufferView];if(!s)throw new Error(`Draco bufferView ${a.bufferView} not found`);let c=r[s.buffer];if(!c)throw new Error(`Draco buffer ${s.buffer} not loaded`);let l=s.byteOffset??0;if(l<0||l+s.byteLength>c.byteLength)throw new Error("Invalid Draco buffer range");let u=c.subarray(l,l+s.byteLength),g=new o.DecoderBuffer,p=new o.Mesh;try{if(g.Init(new Int8Array(u.buffer,u.byteOffset,u.byteLength),u.byteLength),A.GetEncodedGeometryType(g)!==o.TRIANGULAR_MESH)throw new Error("Draco primitive is not a triangular mesh");let f=A.DecodeBufferToMesh(g,p),d=f.ok(),h=d?"":f.error_msg();if(o.destroy(f),!d)throw new Error(`Draco decode failed: ${h}`);let I={};for(let[m,w]of Object.entries(a.attributes)){let v=i.attributes[m],S=v===void 0?void 0:t.accessors?.[v];if(v===void 0||!S)throw new Error(`Draco ${m} accessor not found`);let N=A.GetAttributeByUniqueId(p,w);if(!N)throw new Error(`Draco ${m} attribute ${w} not found`);let _=new o.DracoFloat32Array;try{if(!A.GetAttributeFloatForAllPoints(p,N,_))throw new Error(`Failed to decode Draco ${m}`);let G=p.num_points()*(mA[S.type]??1);if(S.count!==p.num_points()||_.size()!==G)throw new Error(`Invalid Draco ${m} attribute size`);let j=new Float32Array(G);for(let R=0;R<G;R++){let K=_.GetValue(R);S.normalized&&(S.componentType===5120?K=Math.max(K/127,-1):S.componentType===5121?K/=255:S.componentType===5122?K=Math.max(K/32767,-1):S.componentType===5123&&(K/=65535)),j[R]=K}I[v]=j}finally{o.destroy(_)}}let b=p.num_points()>65535?new Uint32Array(p.num_faces()*3):new Uint16Array(p.num_faces()*3),Q=new o.DracoInt32Array;try{for(let m=0;m<p.num_faces();m++){if(!A.GetFaceFromMesh(p,m,Q))throw new Error(`Failed to decode Draco face ${m}`);for(let w=0;w<3;w++)b[m*3+w]=Q.GetValue(w)}}finally{o.destroy(Q)}i.decodedDraco={attributes:I,indices:b}}finally{o.destroy(p),o.destroy(g)}}}finally{o.destroy(A)}}static readDocument(t,r){let n,o=[];if(typeof t=="string")try{n=JSON.parse(t)}catch(A){throw new Error(`Failed to parse glTF JSON: ${String(A)}`)}else{let A=t instanceof Uint8Array?t:new Uint8Array(t);if(e.isGlb(A)){let i=e.unpackGlb(A);n=i.doc,i.binBuffer&&o.push(i.binBuffer)}else{let i=new TextDecoder("utf-8").decode(A);n=JSON.parse(i)}}if(n.buffers)for(let A=0;A<n.buffers.length;A++){if(A===0&&o.length>0)continue;let i=n.buffers[A];if(i.uri){if(i.uri.startsWith("data:")){let a=i.uri.indexOf("base64,");if(a!==-1){let s=i.uri.substring(a+7),c=Buffer.from(s,"base64");o[A]=new Uint8Array(c.buffer,c.byteOffset,c.byteLength)}}else if(r){let a=$e.isAbsolute(i.uri)?i.uri:$e.join(r,i.uri);if(Re.existsSync(a)){let s=Re.readFileSync(a);o[A]=new Uint8Array(s.buffer,s.byteOffset,s.byteLength)}}}}return{doc:n,binaryBuffers:o}}static unpackGlb(t){let r=new DataView(t.buffer,t.byteOffset,t.byteLength),n=r.getUint32(0,!0),o=r.getUint32(8,!0);if(n!==Pa)throw new Error("Invalid GLB header: magic mismatch");let A=12,i=null,a;for(;A<o&&A<t.byteLength;){let s=r.getUint32(A,!0),c=r.getUint32(A+4,!0);A+=8;let l=t.subarray(A,A+s);if(A+=s,c===gc){let u=new TextDecoder("utf-8").decode(l);i=JSON.parse(u)}else c===pc&&(a=l)}if(!i)throw new Error("Invalid GLB: JSON chunk not found");return{doc:i,binBuffer:a}}static readFloats(t,r,n){let o=t.accessors?.[n];if(!o)throw new Error(`Accessor ${n} not found`);let A=mA[o.type]??1,i=new Float32Array(o.count*A),a=_a[o.componentType]??4,s=Sa(o.componentType,o.normalized);if(o.bufferView!==void 0){let c=t.bufferViews?.[o.bufferView];if(!c)throw new Error(`BufferView ${o.bufferView} not found`);let l=r[c.buffer];if(!l)throw new Error(`Binary buffer ${c.buffer} not loaded`);let u=c.byteStride??a*A,g=new DataView(l.buffer,l.byteOffset,l.byteLength),p=(c.byteOffset??0)+(o.byteOffset??0);for(let f=0;f<o.count;f++)for(let d=0;d<A;d++)i[f*A+d]=s(g,p+f*u+d*a)}if(o.sparse){let c=o.sparse,l=t.bufferViews?.[c.indices.bufferView],u=t.bufferViews?.[c.values.bufferView];if(!l||!u)throw new Error(`Sparse accessor ${n} references a missing buffer view`);let g=r[l.buffer],p=r[u.buffer];if(!g||!p)throw new Error(`Sparse accessor ${n} references a missing buffer`);let f=Sa(c.indices.componentType),d=_a[c.indices.componentType],h=new DataView(g.buffer,g.byteOffset,g.byteLength),I=new DataView(p.buffer,p.byteOffset,p.byteLength),b=(l.byteOffset??0)+(c.indices.byteOffset??0),Q=(u.byteOffset??0)+(c.values.byteOffset??0);for(let m=0;m<c.count;m++){let w=f(h,b+m*d);if(w>=o.count)throw new Error(`Sparse accessor ${n} index ${w} is out of range`);for(let v=0;v<A;v++)i[w*A+v]=s(I,Q+(m*A+v)*a)}}return{data:i,itemSize:A,count:o.count}}static readIndices(t,r,n){let{data:o}=e.readFloats(t,r,n);return o.reduce((i,a)=>a>i?a:i,0)>65535?Uint32Array.from(o):Uint16Array.from(o)}static imageBytes(t,r,n,o){let A=t.images?.[n];if(!A)return;if(A.bufferView!==void 0){let a=t.bufferViews?.[A.bufferView],s=a?r[a.buffer]:void 0;if(!a||!s)return;let c=a.byteOffset??0;return{bytes:s.subarray(c,c+a.byteLength),mime:A.mimeType??"image/png"}}if(!A.uri)return;if(A.uri.startsWith("data:")){let a=A.uri.indexOf(","),s=A.uri.slice(5,A.uri.indexOf(";"));return{bytes:new Uint8Array(Buffer.from(A.uri.slice(a+1),"base64")),mime:s}}if(!o)return;let i=$e.isAbsolute(A.uri)?A.uri:$e.join(o,decodeURIComponent(A.uri));if(!Re.existsSync(i)){e.warn(`Image "${A.uri}" was not found next to the model; textures using it are skipped.`);return}return{bytes:new Uint8Array(Re.readFileSync(i)),mime:A.mimeType??Zn(i)}}static warn(t){console.warn(`[GltfLoader] ${t}`)}static texCoordOf(t){return t.extensions?.KHR_texture_transform?.texCoord??t.texCoord??0}static textureImage(t,r,n,o,A){let i=t.textures?.[n];if(!i)return;let a=i.extensions?.KHR_texture_basisu?.source??i.extensions?.EXT_texture_webp?.source??i.source;if(a===void 0)return;let s=e.imageBytes(t,r,a,o);if(!s)return;if(!dc.has(s.mime)){e.warn(`${A} is ${s.mime}, which framefields cannot decode; it is skipped (use PNG, JPEG or WebP).`);return}let c=i.sampler!==void 0?t.samplers?.[i.sampler]:void 0;return{...s,sampler:c}}static buildMaterial(t,r,n,o,A){let i=n.pbrMetallicRoughness,a=i?.baseColorFactor??[1,1,1,1],s={name:o,diffuseColor:a,roughness:i?.roughnessFactor??.5,metallic:i?.metallicFactor??0,shininess:32*(1-(i?.roughnessFactor??.5)),twoSided:n.doubleSided??!0,alphaMode:n.alphaMode==="MASK"?"mask":n.alphaMode==="BLEND"?"blend":"opaque",alphaCutoff:n.alphaMode==="MASK"?n.alphaCutoff??.5:0},c=n.emissiveFactor;c&&(c[0]>0||c[1]>0||c[2]>0)&&(s.emissive=[c[0],c[1],c[2]],s.emissiveStrength=n.extensions?.KHR_materials_emissive_strength?.emissiveStrength??1);let l=n.extensions?.VRMC_materials_mtoon;l?(s.shading="toon",s.shadeColor=l.shadeColorFactor??[1,1,1]):n.extensions?.KHR_materials_unlit&&(s.shading="unlit");let u=(b,Q)=>{if(b)return e.textureImage(t,r,b.index,A,`The ${Q} map of material "${o}"`)},g=u(i?.baseColorTexture,"base color");if(g){s.diffuseTextureBuffer=g.bytes,s.diffuseTextureMime=g.mime;let b=g.sampler?.wrapS;s.textureWrap=b===33071?"clamp":b===33648?"mirror":"repeat",g.sampler?.magFilter===9728&&(s.textureFilter="nearest")}let p=(b,Q)=>u(b,Q)?.bytes,f=p(n.normalTexture,"normal");f&&(s.normalTextureBuffer=f,s.normalScale=n.normalTexture?.scale??1);let d=p(i?.metallicRoughnessTexture,"metallic-roughness");d&&(s.metallicRoughnessTextureBuffer=d,s.roughness=i?.roughnessFactor??1,s.metallic=i?.metallicFactor??1);let h=p(n.occlusionTexture,"occlusion");h&&(s.occlusionTextureBuffer=h,s.occlusionStrength=n.occlusionTexture?.strength??1);let I=s.emissive&&p(n.emissiveTexture,"emissive");return I&&(s.emissiveTextureBuffer=I),s}static buildNodes(t){let r=(t.nodes??[]).map((n,o)=>({name:n.name??`node_${o}`,parent:-1,translation:n.translation??[0,0,0],rotation:n.rotation??[0,0,0,1],scale:n.scale??[1,1,1],matrix:n.matrix?n.matrix:void 0}));return(t.nodes??[]).forEach((n,o)=>{for(let A of n.children??[]){let i=r[A];i&&(i.parent=o)}}),r}static buildAnimations(t,r,n){return(t.animations??[]).map((o,A)=>{let i=[],a=0;for(let s of o.channels){let c=o.samplers[s.sampler],l=s.target.node;if(!c||l===void 0)continue;let u=e.readFloats(t,r,c.input).data,g=e.readFloats(t,r,c.output).data;a=Math.max(a,u[u.length-1]??0);let p={nodeName:n[l]?.name??`node_${l}`,node:l,times:u,interpolation:c.interpolation==="STEP"?"step":c.interpolation==="CUBICSPLINE"?"cubic":"linear"};s.target.path==="translation"?p.translations=g:s.target.path==="rotation"?p.rotations=g:s.target.path==="scale"?p.scales=g:p.weights=g,i.push(p)}return{name:o.name??`Animation_${A}`,duration:a>0?a:1,fps:30,tracks:i}})}static buildModel(t,r,n,o){let A=(t.materials??[]).map((R,K,z)=>{let J=R.name??`material_${K}`;return z.findIndex((W,X)=>(W.name??`material_${X}`)===J)===K?J:`${J}#${K}`}),i={};(t.materials??[]).forEach((R,K)=>{let z=A[K];i[z]=e.buildMaterial(t,r,R,z,o)});let a=e.buildNodes(t),s=(t.skins??[]).map(R=>({joints:R.joints,inverseBindMatrices:R.inverseBindMatrices!==void 0?e.readFloats(t,r,R.inverseBindMatrices).data:Float32Array.from(R.joints.flatMap(()=>Ee.identity()))})),c=e.buildAnimations(t,r,a),l=(t.nodes??[]).flatMap((R,K)=>R.mesh!==void 0?[{mesh:R.mesh,node:K,skin:R.skin}]:[]),u=l.length>0?l:(t.meshes??[]).map((R,K)=>({mesh:K})),g={name:"glTF_Model",meshes:[],materials:i,nodes:a,skins:s,animations:c,bounds:{min:[0,0,0],max:[0,0,0],center:[0,0,0],size:[0,0,0],boundingSphereRadius:0}},p=Do(g,void 0,0),f=1/0,d=1/0,h=1/0,I=-1/0,b=-1/0,Q=-1/0,m=(R,K,z)=>{R<f&&(f=R),R>I&&(I=R),K<d&&(d=K),K>b&&(b=K),z<h&&(h=z),z>Q&&(Q=z)};for(let R of u){let K=t.meshes?.[R.mesh];K&&K.primitives.forEach((z,J)=>{if(z.attributes.POSITION===void 0)throw new Error(`glTF mesh ${R.mesh} primitive ${J} has no POSITION attribute`);let W=le=>{if(le===void 0)return;let ge=z.decodedDraco?.attributes[le];if(!ge)return e.readFloats(t,r,le);let be=t.accessors?.[le];if(!be)throw new Error(`Accessor ${le} not found`);return{data:ge,itemSize:mA[be.type]??1,count:be.count}},X=W(z.attributes.POSITION),Ae=X.count,re=z.material===void 0?void 0:t.materials?.[z.material],oe=z.attributes,ne=le=>{if(!le)return;let ge=e.texCoordOf(le),be=oe[`TEXCOORD_${ge}`];if(be===void 0)throw new Error(`glTF mesh ${R.mesh} primitive ${J} lacks TEXCOORD_${ge} required by a texture`);let we=W(be);if(!we)throw new Error(`glTF mesh ${R.mesh} has missing texture coordinates`);if(we.itemSize!==2||we.count!==Ae)throw new Error(`Invalid TEXCOORD_${ge} on glTF mesh ${R.mesh} primitive ${J}`);let _e=le.extensions?.KHR_texture_transform;return _e&&hc(we.data,_e),we.data},ie=ne(re?.pbrMetallicRoughness?.baseColorTexture)??W(z.attributes.TEXCOORD_0)?.data??new Float32Array(Ae*2),he={normal:ne(re?.normalTexture),metallicRoughness:ne(re?.pbrMetallicRoughness?.metallicRoughnessTexture),occlusion:ne(re?.occlusionTexture),emissive:ne(re?.emissiveTexture)},F=W(z.attributes.COLOR_0),Be;if(F){Be=new Float32Array(Ae*4).fill(1);for(let le=0;le<Ae;le++)for(let ge=0;ge<F.itemSize;ge++){let be=F.data[le*F.itemSize+ge]??1;Be[le*4+ge]=ge<3?fc(be):be}}let Se;if(z.decodedDraco)Se=z.decodedDraco.indices;else if(z.indices!==void 0)Se=e.readIndices(t,r,z.indices);else{Se=Ae>65535?new Uint32Array(Ae):new Uint16Array(Ae);for(let le=0;le<Ae;le++)Se[le]=le}let Pe=uc(Se,z.mode??4);Se=Pe.indices;let Ie=R.skin!==void 0&&z.attributes.JOINTS_0!==void 0,y=!Ie&&R.node!==void 0?p[R.node]:void 0;for(let le=0;le<Ae;le++){let ge=X.data[le*3],be=X.data[le*3+1],we=X.data[le*3+2];if(y){let _e=Ee.projectPoint(y,[ge,be,we]);m(_e[0],_e[1],_e[2])}else m(ge,be,we)}let ye=z.targets?.map(le=>{let ge=W(le.POSITION),be=W(le.NORMAL);if(ge&&(ge.count!==Ae||ge.itemSize!==3)||be&&(be.count!==Ae||be.itemSize!==3))throw new Error(`Invalid morph target on glTF mesh ${R.mesh} primitive ${J}`);return{positions:ge?.data,normals:be?.data}}),Qe=(R.node===void 0?void 0:t.nodes?.[R.node]?.weights)??K.weights,xe=ye?.map((le,ge)=>Qe?.[ge]??0);g.meshes.push({id:`gltf_mesh_${R.mesh}_${J}${R.node!==void 0?`_n${R.node}`:""}`,name:K.name??`Mesh_${R.mesh}`,positions:X.data,normals:W(z.attributes.NORMAL)?.data??new Float32Array(Ae*3),uvs:ie,mapUvs:he,morphTargets:ye,morphWeights:xe,colors:Be,jointIndices:Ie?W(z.attributes.JOINTS_0)?.data:void 0,jointWeights:Ie?W(z.attributes.WEIGHTS_0)?.data:void 0,indices:Se,topology:Pe.topology,materialName:z.material!==void 0?A[z.material]:void 0,node:R.node,skin:Ie?R.skin:void 0})})}Number.isFinite(f)||(f=d=h=0,I=b=Q=0);let w=Math.max(I-f,b-d,Q-h,1e-4),v=n.normalizeSize&&n.normalizeSize>0?n.normalizeSize/w:1,S=typeof n.scale=="number"?[n.scale,n.scale,n.scale]:n.scale??[1,1,1],N=[v*S[0],v*S[1],v*S[2]],_=n.center?[(f+I)*.5,(d+b)*.5,(h+Q)*.5]:[0,0,0];g.rootTransform=Ee.multiply(Ee.scale(N[0],N[1],N[2]),Ee.translate(-_[0],-_[1],-_[2]));let G=[(f-_[0])*N[0],(d-_[1])*N[1],(h-_[2])*N[2]],j=[(I-_[0])*N[0],(b-_[1])*N[1],(Q-_[2])*N[2]];return g.bounds={min:G,max:j,center:[(G[0]+j[0])*.5,(G[1]+j[1])*.5,(G[2]+j[2])*.5],size:[j[0]-G[0],j[1]-G[1],j[2]-G[2]],boundingSphereRadius:Math.hypot(j[0]-G[0],j[1]-G[1],j[2]-G[2])*.5},g}static async loadAsync(t,r={}){if(typeof t!="string")return e.parseAsync(t,r);let n=t.startsWith("file://")?t.replace("file://",""):t;return!t.trimStart().startsWith("{")&&Re.existsSync(n)?e.parseAsync(Re.readFileSync(n),r,$e.dirname(n)):e.parseAsync(t,r)}static load(t,r={}){if(typeof t!="string")return e.parse(t,r);let n=t.startsWith("file://")?t.replace("file://",""):t;if(t.startsWith("/")||t.startsWith("./")||t.startsWith("../")||t.startsWith("file://")||!t.trimStart().startsWith("{")&&Re.existsSync(n)){let o=Re.readFileSync(n),A=$e.dirname(n);return e.parse(o,r,A)}return e.parse(t,r)}};function Go(e,t={}){return mr.load(e,t)}async function IA(e,t={}){return mr.loadAsync(e,t)}function Ra(e,t={}){return mr.load(e,t)}function fc(e){let t=Math.min(Math.max(e,0),1);return t<=.0031308?t*12.92:1.055*t**(1/2.4)-.055}var dc=new Set(["image/png","image/jpeg","image/webp","image/gif","image/tiff","image/avif","image/ktx2"]);function hc(e,{offset:t=[0,0],rotation:r=0,scale:n=[1,1]}){let o=Math.cos(r),A=Math.sin(r);for(let i=0;i<e.length;i+=2){let a=e[i]*n[0],s=e[i+1]*n[1];e[i]=o*a-A*s+t[0],e[i+1]=A*a+o*s+t[1]}}$();Pt();var mc=[[0,0,0,0],...Array.from({length:255},(e,t)=>{let r=(t+1)/256;return[r,r,r,1]})],ao=class e{static isVox(t){let r=t instanceof Uint8Array?t:new Uint8Array(t);return r.length<8?!1:new TextDecoder("ascii").decode(r.subarray(0,4))==="VOX "}static parse(t,r={}){let n=t instanceof Uint8Array?t:new Uint8Array(t),o=new DataView(n.buffer,n.byteOffset,n.byteLength);if(new TextDecoder("ascii").decode(n.subarray(0,4))!=="VOX ")throw new Error("Invalid VOX file: magic mismatch");let i=8,a=16,s=16,c=16,l=[],u=[...mc];for(;i+12<=n.byteLength;){let g=new TextDecoder("ascii").decode(n.subarray(i,i+4)),p=o.getUint32(i+4,!0);i+=12;let f=i;if(g==="SIZE")a=o.getUint32(f,!0),s=o.getUint32(f+4,!0),c=o.getUint32(f+8,!0);else if(g==="XYZI"){let d=o.getUint32(f,!0),h=f+4;for(let I=0;I<d&&!(h+4>n.byteLength);I++){let b=o.getUint8(h),Q=o.getUint8(h+1),m=o.getUint8(h+2),w=o.getUint8(h+3);h+=4,l.push({x:b,y:Q,z:m,colorIndex:w})}}else if(g==="RGBA")for(let d=0;d<256;d++){let h=f+d*4;if(h+4>n.byteLength)break;let I=o.getUint8(h)/255,b=o.getUint8(h+1)/255,Q=o.getUint8(h+2)/255,m=o.getUint8(h+3)/255,w=d===255?0:d+1;u[w]=[I,b,Q,m]}i+=p}return e.buildModel(l,u,a,s,c,r)}static buildModel(t,r,n,o,A,i){let a=new Set;t.forEach(m=>a.add(`${m.x},${m.y},${m.z}`));let s=[],c=[],l=[],u=[],g=[],p=(m,w,v,S,N,_)=>{let G=s.length/3;s.push(...m,...w,...v,...S),c.push(...N,...N,...N,...N),l.push(..._,..._,..._,..._),u.push(0,0,1,0,1,1,0,1),g.push(G,G+1,G+2,G,G+2,G+3)};for(let m of t){let{x:w,y:v,z:S,colorIndex:N}=m,_=r[N]??[.8,.8,.8,1],G=w,j=-S,R=v;a.has(`${w+1},${v},${S}`)||p([G+1,j,R],[G+1,j-1,R],[G+1,j-1,R+1],[G+1,j,R+1],[1,0,0],_),a.has(`${w-1},${v},${S}`)||p([G,j,R+1],[G,j-1,R+1],[G,j-1,R],[G,j,R],[-1,0,0],_),a.has(`${w},${v},${S+1}`)||p([G,j-1,R],[G+1,j-1,R],[G+1,j-1,R+1],[G,j-1,R+1],[0,-1,0],_),a.has(`${w},${v},${S-1}`)||p([G,j,R+1],[G+1,j,R+1],[G+1,j,R],[G,j,R],[0,1,0],_),a.has(`${w},${v+1},${S}`)||p([G+1,j,R+1],[G+1,j-1,R+1],[G,j-1,R+1],[G,j,R+1],[0,0,1],_),a.has(`${w},${v-1},${S}`)||p([G,j,R],[G,j-1,R],[G+1,j-1,R],[G+1,j,R],[0,0,-1],_)}let f=jt(s),d=Dt(f,i),h=Vt(s,d),I=Jt(g,h.length/3),b={name:"vox_default",diffuseColor:[1,1,1,1],shininess:32,specularIntensity:.4,...i.defaultMaterial};return{name:"VOX_Model",meshes:[{id:"vox_mesh_0",name:"vox_geometry",positions:h,normals:new Float32Array(c),uvs:new Float32Array(u),colors:new Float32Array(l),indices:I,materialName:"vox_default"}],materials:{vox_default:b},animations:[],bounds:Kt(f,d)}}static load(t,r={}){if(typeof t!="string")return e.parse(t,r);if(t.startsWith("/")||t.startsWith("./")||t.startsWith("../")||t.startsWith("file://")){let n=t.startsWith("file://")?t.replace("file://",""):t,o=Re.readFileSync(n);return e.parse(o,r)}throw new Error("VOX files must be binary buffers or local file paths")}};function Ro(e,t={}){return ao.load(e,t)}$();Pt();var BA=19789,Ic=15677,Bc=16384,bc=16640,Ec=16656,yc=16672,Cc=16704,Qc=45055,xc=40960,wc=40992,vc=16,Dc=17,so=class e{static is3DS(t){let r=t instanceof Uint8Array?t:new Uint8Array(t);return r.length<6?!1:new DataView(r.buffer,r.byteOffset,r.byteLength).getUint16(0,!0)===BA}static parse(t,r={}){let n=t instanceof Uint8Array?t:new Uint8Array(t),o=new DataView(n.buffer,n.byteOffset,n.byteLength);if(o.getUint16(0,!0)!==BA)throw new Error("Invalid 3DS file: 0x4D4D magic mismatch");let i=[],a={};return e.readChunk(o,0,n.byteLength,i,a),e.buildModel(i,a,r)}static readChunk(t,r,n,o,A,i="Object"){let a=r;for(;a+6<=n&&a+6<=t.byteLength;){let s=t.getUint16(a,!0),c=t.getUint32(a+2,!0);if(c<6)break;let l=a+c,u=a+6,g=Math.min(l,n,t.byteLength);switch(s){case BA:case Ic:e.readChunk(t,u,g,o,A,i);break;case Bc:{let p=u;for(;p<g&&t.getUint8(p)!==0;)p++;let f=new Uint8Array(t.buffer,t.byteOffset+u,p-u),d=new TextDecoder("ascii").decode(f)||"Object";e.readChunk(t,p+1,g,o,A,d);break}case bc:{let p={name:i,positions:[],indices:[],uvs:[]};e.readTriMesh(t,u,g,p,A),p.positions.length>0&&p.indices.length>0&&o.push(p);break}case Qc:e.readMaterial(t,u,g,A);break;default:break}a=l}}static readTriMesh(t,r,n,o,A){let i=r;for(;i+6<=n;){let a=t.getUint16(i,!0),s=t.getUint32(i+2,!0);if(s<6)break;let c=i+s,l=i+6;if(a===Ec){let u=t.getUint16(l,!0),g=l+2;for(let p=0;p<u&&!(g+12>n);p++){let f=t.getFloat32(g,!0),d=t.getFloat32(g+4,!0),h=t.getFloat32(g+8,!0);o.positions.push(f,d,h),g+=12}}else if(a===yc){let u=t.getUint16(l,!0),g=l+2;for(let p=0;p<u&&!(g+8>n);p++){let f=t.getUint16(g,!0),d=t.getUint16(g+2,!0),h=t.getUint16(g+4,!0);o.indices.push(f,d,h),g+=8}}else if(a===Cc){let u=t.getUint16(l,!0),g=l+2;for(let p=0;p<u&&!(g+8>n);p++){let f=t.getFloat32(g,!0),d=t.getFloat32(g+4,!0);o.uvs.push(f,1-d),g+=8}}i=c}}static readMaterial(t,r,n,o){let A=r,i="Material",a=[.8,.8,.8,1];for(;A+6<=n;){let s=t.getUint16(A,!0),c=t.getUint32(A+2,!0);if(c<6)break;let l=A+c,u=A+6;if(s===xc){let g=u;for(;g<l&&t.getUint8(g)!==0;)g++;let p=new Uint8Array(t.buffer,t.byteOffset+u,g-u);i=new TextDecoder("ascii").decode(p)||i}else if(s===wc&&u+6<=l){let g=t.getUint16(u,!0);if(g===vc&&u+18<=l){let p=t.getFloat32(u+6,!0),f=t.getFloat32(u+10,!0),d=t.getFloat32(u+14,!0);a=[p,f,d,1]}else if(g===Dc&&u+9<=l){let p=t.getUint8(u+6)/255,f=t.getUint8(u+7)/255,d=t.getUint8(u+8)/255;a=[p,f,d,1]}}A=l}o[i]={name:i,diffuseColor:a,shininess:32,specularIntensity:.5}}static buildModel(t,r,n){let o=jt(...t.map(a=>a.positions)),A=Dt(o,n);return{name:"3DS_Model",meshes:t.map((a,s)=>{let c=Vt(a.positions,A),l=new Float32Array(a.positions.length);hr(c,a.indices,l);let u=a.uvs.length===a.positions.length/3*2?new Float32Array(a.uvs):new Float32Array(a.positions.length/3*2),g=Jt(a.indices,c.length/3);return{id:`3ds_mesh_${s}`,name:a.name,positions:c,normals:l,uvs:u,indices:g,materialName:a.materialName}}),materials:r,animations:[],bounds:Kt(o,A)}}static load(t,r={}){if(typeof t!="string")return e.parse(t,r);if(t.startsWith("/")||t.startsWith("./")||t.startsWith("../")||t.startsWith("file://")){let n=t.startsWith("file://")?t.replace("file://",""):t,o=Re.readFileSync(n);return e.parse(o,r)}throw new Error("3DS files must be binary buffers or local file paths")}};function Fo(e,t={}){return so.load(e,t)}$();Pt();var bA=class e{static parse(t,r={}){let o=(typeof t=="string"?t:new TextDecoder("utf-8").decode(t instanceof Uint8Array?t:new Uint8Array(t))).split(/\r?\n/),A=0;for(;A<o.length&&(!o[A].trim()||o[A].trim().startsWith("#"));)A++;if(A>=o.length)throw new Error("Empty OFF file");let i=o[A++].trim(),a=!1,s=!1;if(i.startsWith("NOFF")||i.startsWith("STOFF"))a=!0;else if(i.startsWith("COFF"))s=!0;else if(!i.startsWith("OFF"))throw new Error("Invalid OFF header: missing 'OFF'");i=i.replace(/^(?:ST|CO|NO|C|N)?OFF\s*/i,"").trim();let c=0,l=0;if(i.length>0){let N=i.split(/\s+/);c=Number.parseInt(N[0]??"0",10),l=Number.parseInt(N[1]??"0",10)}else for(;A<o.length;){let N=o[A++].trim();if(!N||N.startsWith("#"))continue;let _=N.split(/\s+/);c=Number.parseInt(_[0]??"0",10),l=Number.parseInt(_[1]??"0",10);break}let u=[],g=[],p=[],f=[],d=[],h=0;for(;A<o.length&&h<c;){let N=o[A++].trim();if(!N||N.startsWith("#"))continue;let _=N.split(/\s+/),G=Number.parseFloat(_[0]??"0")||0,j=Number.parseFloat(_[1]??"0")||0,R=Number.parseFloat(_[2]??"0")||0;u.push(G,j,R);let K=3;if(a){let z=Number.parseFloat(_[K]??"0")||0,J=Number.parseFloat(_[K+1]??"0")||0,W=Number.parseFloat(_[K+2]??"0")||0;g.push(z,J,W),K+=3}else g.push(0,0,0);if(s&&_.length>K){let z=(Number.parseFloat(_[K]??"255")||0)/(Number.parseFloat(_[K]??"255")>1?255:1),J=(Number.parseFloat(_[K+1]??"255")||0)/(Number.parseFloat(_[K+1]??"255")>1?255:1),W=(Number.parseFloat(_[K+2]??"255")||0)/(Number.parseFloat(_[K+2]??"255")>1?255:1),X=_.length>K+3&&Number.parseFloat(_[K+3]??"1")||1;p.push(z,J,W,X)}f.push(0,0),h++}let I=0;for(;A<o.length&&I<l;){let N=o[A++].trim();if(!N||N.startsWith("#"))continue;let _=N.split(/\s+/),G=Number.parseInt(_[0]??"0",10);if(G>=3){let j=Number.parseInt(_[1]??"0",10);for(let R=1;R<G-1;R++){let K=Number.parseInt(_[R+1]??"0",10),z=Number.parseInt(_[R+2]??"0",10);d.push(j,K,z)}}I++}(!a||r.smoothNormals)&&hr(u,d,g);let b=jt(u),Q=Dt(b,r),m=Vt(u,Q),w=Jt(d,m.length/3),v={name:"off_default",diffuseColor:s?[1,1,1,1]:[.8,.8,.85,1],shininess:32,specularIntensity:.5,...r.defaultMaterial};return{name:"OFF_Model",meshes:[{id:"off_mesh_0",name:"off_geometry",positions:m,normals:new Float32Array(g),uvs:new Float32Array(f),colors:s?new Float32Array(p):void 0,indices:w,materialName:"off_default"}],materials:{off_default:v},animations:[],bounds:Kt(b,Q)}}static load(t,r={}){if(typeof t!="string")return e.parse(t,r);if(t.startsWith("/")||t.startsWith("./")||t.startsWith("../")||t.startsWith("file://")){let n=t.startsWith("file://")?t.replace("file://",""):t,o=Re.readFileSync(n,"utf-8");return e.parse(o,r)}return e.parse(t,r)}};function Uo(e,t={}){return bA.load(e,t)}$();var Fa=`
141
+ `;var Ms={normal_extrusion:0,radial_pulse:1,harmonic_wave:2,twist:3,ripple:4},Io=class{device;pipeline;bindGroupLayout;uniformPool;deformedBuffers=new WeakMap;uniformData=new ArrayBuffer(32);uniformUint32=new Uint32Array(this.uniformData);uniformFloat32=new Float32Array(this.uniformData);constructor(t){this.device=t,this.uniformPool=new We(32,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.bindGroupLayout=t.createBindGroupLayout({label:"AudioMeshDeformBindGroupLayout",entries:[{binding:0,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:1,visibility:GPUShaderStage.COMPUTE,buffer:{type:"uniform"}},{binding:2,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:3,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}}]});let r=t.createShaderModule({label:"audioMeshDisplace.wgsl",code:ra}),n=t.createPipelineLayout({label:"AudioMeshDeformPipelineLayout",bindGroupLayouts:[this.bindGroupLayout]});this.pipeline=t.createComputePipeline({label:"AudioMeshDeformComputePipeline",layout:n,compute:{module:r,entryPoint:"cs_displace"}})}getOrCreateDeformedBuffer(t,r){let n=this.deformedBuffers.get(t);return(!n||n.size<r)&&(n?.destroy(),n=this.device.createBuffer({label:"DeformedMeshVertexBuffer",size:Math.max(64,Math.ceil(r/4)*4),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC}),this.deformedBuffers.set(t,n)),n}execute(t,r,n){let{config:o,audioLatentBuffer:A,vertexCount:i,timeMs:a=0,sampleRate:s=48e3}=n,c=i*64,l=this.getOrCreateDeformedBuffer(r,c),u=Ms[o.mode]??0,g=s/2048,p=o.frequencyRange?o.frequencyRange[0]:20,f=o.frequencyRange?o.frequencyRange[1]:120,d=Math.max(0,Math.min(1023,Math.round(p/g))),h=Math.max(d,Math.min(1023,Math.round(f/g))),I=typeof o.amplitudeMultiplier=="number"?o.amplitudeMultiplier:typeof o.amplitudeMultiplier?.value=="number"?o.amplitudeMultiplier.value:1,b=o.damping??0;this.uniformUint32[0]=u,this.uniformUint32[1]=d,this.uniformUint32[2]=h,this.uniformUint32[3]=i,this.uniformFloat32[4]=I,this.uniformFloat32[5]=b,this.uniformFloat32[6]=a,this.uniformFloat32[7]=0;let D=this.uniformPool.getBuffer(this.device,new Uint8Array(this.uniformData)),m=this.device.createBindGroup({layout:this.bindGroupLayout,entries:[{binding:0,resource:{buffer:A}},{binding:1,resource:{buffer:D}},{binding:2,resource:{buffer:r}},{binding:3,resource:{buffer:l}}]}),x=t.beginComputePass({label:"AudioMeshDeformComputePass"});x.setPipeline(this.pipeline),x.setBindGroup(0,m);let w=Math.ceil(i/256);return x.dispatchWorkgroups(w),x.end(),l}resetPools(){this.uniformPool.reset()}destroy(){this.uniformPool.destroy()}};$();$();_t();var Zn=class e{static isBinary(t){let r=t instanceof Uint8Array?t:new Uint8Array(t);if(r.length<84)return!1;let o=new DataView(r.buffer,r.byteOffset,r.byteLength).getUint32(80,!0),A=84+o*50;if(r.length===A)return!0;let i=Math.min(r.length,512);for(let s=0;s<i;s++){let c=r[s];if(c>127||c<32&&c!==9&&c!==10&&c!==13)return!0}let a=new TextDecoder("utf-8").decode(r.subarray(0,80)).trim();return a.startsWith("solid")&&!a.includes(`
142
+ `)?r.length>=84+o*50:!a.startsWith("solid")}static parse(t,r={}){if(typeof t=="string")return e.parseAscii(t,r);let n=t instanceof Uint8Array?t:new Uint8Array(t);if(e.isBinary(n))return e.parseBinary(n,r);let o=new TextDecoder("utf-8").decode(n);return e.parseAscii(o,r)}static parseBinary(t,r={}){let n=new DataView(t.buffer,t.byteOffset,t.byteLength),o=n.getUint32(80,!0),A=[],i=[],a=[],s=84;for(let c=0;c<o&&!(s+50>t.byteLength);c++){let l=n.getFloat32(s,!0),u=n.getFloat32(s+4,!0),g=n.getFloat32(s+8,!0);s+=12;let p=n.getFloat32(s,!0),f=n.getFloat32(s+4,!0),d=n.getFloat32(s+8,!0);s+=12;let h=n.getFloat32(s,!0),I=n.getFloat32(s+4,!0),b=n.getFloat32(s+8,!0);s+=12;let D=n.getFloat32(s,!0),m=n.getFloat32(s+4,!0),x=n.getFloat32(s+8,!0);s+=12,s+=2;let w=l,S=u,N=g;if(w===0&&S===0&&N===0){let G=Z.subtract([h,I,b],[p,f,d]),j=Z.subtract([D,m,x],[p,f,d]),R=Z.normalize(Z.cross(G,j));w=R[0],S=R[1],N=R[2]}let M=A.length/3;A.push(p,f,d,h,I,b,D,m,x),i.push(w,S,N,w,S,N,w,S,N),a.push(M,M+1,M+2)}return e.finalizeModel(A,i,a,r)}static parseAscii(t,r={}){let n=[],o=[],A=[],i=t.split(/\r?\n/),a=[0,0,1],s=[];for(let c of i){let l=c.trim();if(l){if(l.startsWith("facet normal")){let u=l.split(/\s+/),g=Number.parseFloat(u[2]??"0")||0,p=Number.parseFloat(u[3]??"0")||0,f=Number.parseFloat(u[4]??"0")||0;a=[g,p,f],s=[]}else if(l.startsWith("vertex")){let u=l.split(/\s+/),g=Number.parseFloat(u[1]??"0")||0,p=Number.parseFloat(u[2]??"0")||0,f=Number.parseFloat(u[3]??"0")||0;s.push([g,p,f])}else if(l.startsWith("endfacet")){if(s.length>=3){let u=s[0],g=s[1],p=s[2],f=a;if(f[0]===0&&f[1]===0&&f[2]===0){let d=Z.subtract(g,u),h=Z.subtract(p,u);f=Z.normalize(Z.cross(d,h))}for(let d=1;d<s.length-1;d++){let h=s[d],I=s[d+1],b=n.length/3;n.push(u[0],u[1],u[2],h[0],h[1],h[2],I[0],I[1],I[2]),o.push(f[0],f[1],f[2],f[0],f[1],f[2],f[0],f[1],f[2]),A.push(b,b+1,b+2)}}s=[]}}}return e.finalizeModel(n,o,A,r)}static finalizeModel(t,r,n,o={}){let A=Lt(t),i=xt(A,o),a=Ot(t,i),[s,c]=A.min,[l,u]=A.size,g=new Float32Array(t.length/3*2);for(let h=0;h<t.length;h+=3){let I=h/3*2;g[I]=l>0?(t[h]-s)/l:0,g[I+1]=u>0?(t[h+1]-c)/u:0}let p=Ht(n,a.length/3),f={name:"stl_default",diffuseColor:[.8,.8,.85,1],shininess:32,specularIntensity:.5,...o.defaultMaterial};return{name:"STL_Model",meshes:[{id:"stl_mesh_0",name:"stl_geometry",positions:a,normals:new Float32Array(r),uvs:g,indices:p,materialName:"stl_default"}],materials:{stl_default:f},animations:[],bounds:jt(A,i)}}static load(t,r={}){if(typeof t!="string")return e.parse(t,r);if(t.startsWith("/")||t.startsWith("./")||t.startsWith("../")||t.startsWith("file://")){let n=t.startsWith("file://")?t.replace("file://",""):t,o=Re.readFileSync(n);return e.parse(o,r)}return e.parse(t,r)}};function $n(e,t={}){return Zn.load(e,t)}$();_t();var Wo=class e{static parse(t,r={}){let n=typeof t=="string"?new TextEncoder().encode(t):t instanceof Uint8Array?t:new Uint8Array(t),o=e.extractHeader(n),A=e.parseHeader(o.text);if(A.format==="ascii"){let a=new TextDecoder("utf-8").decode(n.subarray(o.endOffset));return e.parseAsciiBody(A,a,r)}let i=A.format==="binary_little_endian";return e.parseBinaryBody(A,n.subarray(o.endOffset),i,r)}static extractHeader(t){let r=Math.min(t.length,1e4),n=t.subarray(0,r),o=new TextDecoder("utf-8").decode(n),A=o.indexOf("end_header");if(A===-1)throw new Error("Invalid PLY file: 'end_header' marker not found");let i=o.indexOf(`
143
+ `,A);return i===-1?i=A+10:i+=1,{text:o.substring(0,i),endOffset:i}}static parseHeader(t){let r=t.split(/\r?\n/),n="ascii",o="1.0",A=[],i=null;for(let a of r){let s=a.trim();if(!s||s.startsWith("comment"))continue;let c=s.split(/\s+/),l=c[0]?.toLowerCase();if(l!=="ply"){if(l==="format"){let u=c[1]?.toLowerCase();u==="binary_little_endian"?n="binary_little_endian":u==="binary_big_endian"?n="binary_big_endian":n="ascii",o=c[2]??"1.0"}else if(l==="element"){let u=c[1]??"",g=Number.parseInt(c[2]??"0",10);i={name:u,count:g,properties:[]},A.push(i)}else if(l==="property"&&i)c[1]?.toLowerCase()==="list"?i.properties.push({name:c[4]??"",type:"list",isList:!0,countType:c[2]??"uchar",itemType:c[3]??"int"}):i.properties.push({name:c[2]??"",type:c[1]?.toLowerCase()??"float"});else if(l==="end_header")break}}return{format:n,version:o,elements:A}}static parseAsciiBody(t,r,n){let o=t.elements.find(J=>J.name==="vertex"),A=t.elements.find(J=>J.name==="face"),i=o?.count??0,a=A?.count??0,s=[],c=[],l=[],u=[],g=[],p=o?.properties??[],f=p.findIndex(J=>J.name==="x"),d=p.findIndex(J=>J.name==="y"),h=p.findIndex(J=>J.name==="z"),I=p.findIndex(J=>J.name==="nx"),b=p.findIndex(J=>J.name==="ny"),D=p.findIndex(J=>J.name==="nz"),m=p.findIndex(J=>J.name==="u"||J.name==="s"||J.name==="texture_u"),x=p.findIndex(J=>J.name==="v"||J.name==="t"||J.name==="texture_v"),w=p.findIndex(J=>J.name==="red"||J.name==="r"),S=p.findIndex(J=>J.name==="green"||J.name==="g"),N=p.findIndex(J=>J.name==="blue"||J.name==="b"),M=p.findIndex(J=>J.name==="alpha"||J.name==="a"),G=I!==-1&&b!==-1&&D!==-1,j=w!==-1&&S!==-1&&N!==-1,R=m!==-1&&x!==-1,K=r.trim().split(/\r?\n/),z=0;for(let J=0;J<i&&!(z>=K.length);J++){let W=K[z++]?.trim();if(!W)continue;let X=W.split(/\s+/),Ae=Number.parseFloat(X[f]??"0")||0,re=Number.parseFloat(X[d]??"0")||0,oe=Number.parseFloat(X[h]??"0")||0;if(s.push(Ae,re,oe),G){let ne=Number.parseFloat(X[I]??"0")||0,ie=Number.parseFloat(X[b]??"0")||0,he=Number.parseFloat(X[D]??"0")||0;c.push(ne,ie,he)}else c.push(0,0,0);if(R){let ne=Number.parseFloat(X[m]??"0")||0,ie=Number.parseFloat(X[x]??"0")||0;l.push(ne,1-ie)}else l.push(0,0);if(j){let ne=(Number.parseFloat(X[w]??"255")||0)/255,ie=(Number.parseFloat(X[S]??"255")||0)/255,he=(Number.parseFloat(X[N]??"255")||0)/255,F=M!==-1?(Number.parseFloat(X[M]??"255")||0)/255:1;u.push(ne,ie,he,F)}}for(let J=0;J<a&&!(z>=K.length);J++){let W=K[z++]?.trim();if(!W)continue;let X=W.split(/\s+/),Ae=Number.parseInt(X[0]??"0",10);if(Ae>=3){let re=Number.parseInt(X[1]??"0",10);for(let oe=1;oe<Ae-1;oe++){let ne=Number.parseInt(X[oe+1]??"0",10),ie=Number.parseInt(X[oe+2]??"0",10);g.push(re,ne,ie)}}}return e.finalizeModel(s,c,l,j?u:void 0,g,G,n)}static parseBinaryBody(t,r,n,o){let A=new DataView(r.buffer,r.byteOffset,r.byteLength),i=0,a=t.elements.find(w=>w.name==="vertex"),s=t.elements.find(w=>w.name==="face"),c=a?.count??0,l=s?.count??0,u=[],g=[],p=[],f=[],d=[],h=a?.properties??[],I=h.some(w=>w.name==="nx"),b=h.some(w=>w.name==="red"||w.name==="r"),D=w=>{let S=0;switch(w.toLowerCase()){case"char":case"int8":S=A.getInt8(i),i+=1;break;case"uchar":case"uint8":S=A.getUint8(i),i+=1;break;case"short":case"int16":S=A.getInt16(i,n),i+=2;break;case"ushort":case"uint16":S=A.getUint16(i,n),i+=2;break;case"int":case"int32":S=A.getInt32(i,n),i+=4;break;case"uint":case"uint32":S=A.getUint32(i,n),i+=4;break;case"float":case"float32":S=A.getFloat32(i,n),i+=4;break;case"double":case"float64":S=A.getFloat64(i,n),i+=8;break;default:S=A.getFloat32(i,n),i+=4;break}return S};for(let w=0;w<c;w++){let S=0,N=0,M=0,G=0,j=0,R=0,K=0,z=0,J=1,W=1,X=1,Ae=1;for(let re of h){let oe=D(re.type),ne=re.name.toLowerCase();ne==="x"?S=oe:ne==="y"?N=oe:ne==="z"?M=oe:ne==="nx"?G=oe:ne==="ny"?j=oe:ne==="nz"?R=oe:ne==="u"||ne==="s"?K=oe:ne==="v"||ne==="t"?z=oe:ne==="red"||ne==="r"?J=re.type.includes("int")?oe/255:oe:ne==="green"||ne==="g"?W=re.type.includes("int")?oe/255:oe:ne==="blue"||ne==="b"?X=re.type.includes("int")?oe/255:oe:(ne==="alpha"||ne==="a")&&(Ae=re.type.includes("int")?oe/255:oe)}u.push(S,N,M),g.push(G,j,R),p.push(K,1-z),b&&f.push(J,W,X,Ae)}let x=(s?.properties??[]).find(w=>w.isList);for(let w=0;w<l&&!(i>=r.byteLength);w++)if(x){let S=D(x.countType??"uchar"),N=[];for(let M=0;M<S;M++)N.push(D(x.itemType??"int"));if(N.length>=3){let M=N[0];for(let G=1;G<N.length-1;G++)d.push(M,N[G],N[G+1])}}return e.finalizeModel(u,g,p,b?f:void 0,d,I,o)}static finalizeModel(t,r,n,o,A,i,a){(!i||a.smoothNormals)&&pr(t,A,r);let s=Lt(t),c=xt(s,a),l=Ot(t,c),u=Ht(A,l.length/3),g={name:"ply_default",diffuseColor:o?[1,1,1,1]:[.8,.8,.85,1],shininess:32,specularIntensity:.5,...a.defaultMaterial};return{name:"PLY_Model",meshes:[{id:"ply_mesh_0",name:"ply_geometry",positions:l,normals:new Float32Array(r),uvs:new Float32Array(n),colors:o?new Float32Array(o):void 0,indices:u,materialName:"ply_default"}],materials:{ply_default:g},animations:[],bounds:jt(s,c)}}static load(t,r={}){if(typeof t!="string")return e.parse(t,r);if(t.startsWith("/")||t.startsWith("./")||t.startsWith("../")||t.startsWith("file://")){let n=t.startsWith("file://")?t.replace("file://",""):t,o=Re.readFileSync(n);return e.parse(o,r)}return e.parse(t,r)}};function eo(e,t={}){return Wo.load(e,t)}$();_t();var la=Vo(ia(),1);$();var eA=(function(){var e="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuixkbeeeddddillviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WboY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbrl79IV9Rbwq;X8:kdbk:kYi5ud9:du8Jjjjjbcjq9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz:jjjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCaAcethXaxaDfhiaOaeaoaeao6E9RhQalcl4cifcd4hLazcjdfaAfhKcbhYabaOad2fg8AhEaHh3incbh5dnawTmbaxaYcd4fRbbh5kcbh8Eazcjdfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcjdfa8EaA2fa8FaAz:jjjjb8Aa8FaAfhixdkazcjdfa8EaA2fcbaAz:kjjjb8Aa8FhixekaPa8F9RaL6mva8FaLfhidnaCTmbaPai9RcK6mbaocdtc:q:G:cjbfcj:G:cjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bwar9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfcbaicdfa8J9c8N1:NfghRbbag9cjjjjjw:dg8J9qE86bbarcVfcbaha8J9c8M1:NfghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fcbaha8J9c8N1:NfgiRbbag9cjjjjjw:dg8J9qE86bbarc96fcbaia8J9c8M1:NfgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbw83bwarai8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasaYcd4fRbbgociGPlbedrbkaATmdazaYfh8Fazcjdfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeazaYfhaazcjdfhhcbhoceh8EaKh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaQaocefgofmbka8FaXfh8FcdhoaacdfhaahaXfhha8EceGhlcbh8EalmbxdkkaATmbaocl4h8EazaYfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaKhainazcjdfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E94aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3aYclfgYad6mbkaza8AaAcufad2fadz:jjjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcjqf8Kjjjjbaok:bsesu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecjez:kjjjb8Aav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhDaicefgiarfhqdndnaeci9pmbaqhexekcmcsawceSEhkcbhxcbhmaqhecbhlcbhoindndnaiRbbgrc;Ve0mbavc;abfaoarcu7gPcl4fcsGcitfgwydlhsawydbhzdndnarcsGgwak9pmbavalaPfcsGcdtfydbaxawEhraxawTgHfhxxekdnaeaD9nmbc9:hoxokdndnawcsSmbcehHamawcetfcWfhrxekaecefhrae8SbbgwcFeGhPdndnawcu9mmbarhexekaecvfheaPcFbGhPcrhwdninar8SbbgHcFbGawtaPVhPaHcu9kmearcefhrawcrfgwc8J9hmbxdkkarcefhekcehHaPce4cbaPceG9R7amfhrkarhmkavc;abfaocitfgwarBdbawasBdlavalcdtfarBdbavc;abfaocefcsGcitfgwazBdbawarBdlaocdfhoaHalfhldnadcd9hmbabar87elabas87edabaz87ebabcofhbxdkabarBdwabasBdlabazBdbabcxfhbxekdnarcpe0mbavalaDarcsGfRbbgwcl4gP9RcsGcdtfydbaxcefgsaPEhravalaw9RcsGcdtfydbasaPTgzfgsawcsGgPEhwaPThPdndnadcd9hmbabaw87elabar87edabax87ebcohHxekabawBdwabarBdlabaxBdbcxhHkavalcdtfaxBdbavc;abfaocitfgOarBdbaOaxBdlavalcefglcsGcdtfarBdbavc;abfaocefcsGcitfgOawBdbaOarBdlavalazfglcsGcdtfawBdbavc;abfaocdfcsGcitfgraxBdbarawBdlaocifhoabaHfhbalaPfhlasaPfhxxekdnaeaD9nmbc9:hoxlkaxcbaeRbbgwEgHarc;:eSgrfhsawcsGhOdndnawcl4gAmbascefhzxekashzavalaA9RcsGcdtfydbhskdndnaOmbazcefhxxekazhxavalaw9RcsGcdtfydbhzkdndnarTmbaecefhrxekaecdfhrae8SbegPcFeGhwdnaPcu9kmbaecofhHawcFbGhwcrhedninar8SbbgPcFbGaetawVhwaPcu9kmearcefhraecrfgec8J9hmbkaHhrxekarcefhrkawce4cbawceG9R7amfgmhHkdndnaAcsSmbarhwxekarcefhwar8SbbgecFeGhPdnaecu9kmbarcvfhsaPcFbGhPcrhedninaw8SbbgrcFbGaetaPVhParcu9kmeawcefhwaecrfgec8J9hmbkashwxekawcefhwkaPce4cbaPceG9R7amfgmhskdndnaOcsSmbawhexekawcefheaw8SbbgrcFeGhPdnarcu9kmbawcvfhzaPcFbGhPcrhrdninae8SbbgwcFbGartaPVhPawcu9kmeaecefhearcrfgrc8J9hmbkazhexekaecefhekaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabaz87elabas87edabaH87ebcohrxekabazBdwabasBdlabaHBdbcxhrkavc;abfaocitfgwasBdbawaHBdlavalcdtfaHBdbavc;abfaocefcsGcitfgwazBdbawasBdlavalcefglcsGcdtfasBdbavc;abfaocdfcsGcitfgwaHBdbawazBdlavalaATaAcsSVfglcsGcdtfazBdbalaOTaOcsSVfhlaocifhoabarfhbkaocsGhoalcsGhlaicefgiaq6mbkkcbc99aeaDSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk:4ioiue99dud99dud99dnaeTmbcbhiabhlindndnal8Uebgv:YgoJ:ji:1Salcof8UebgrciVgw:Y:vgDNJbbbZJbbb:;avcu9kEMgq:lJbbb9p9DTmbaq:Ohkxekcjjjj94hkkalclf8Uebhvalcdf8UebhxalarcefciGcetfak87ebdndnax:YgqaDNJbbbZJbbb:;axcu9kEMgm:lJbbb9p9DTmbam:Ohxxekcjjjj94hxkabaiarciGgkfcd7cetfax87ebdndnav:YgmaDNJbbbZJbbb:;avcu9kEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkalarcufciGcetfav87ebdndnawaw2:ZgPaPMaoaoN:taqaqN:tamamN:tgoJbbbbaoJbbbb9GE:raDNJbbbZMgD:lJbbb9p9DTmbaD:Ohrxekcjjjj94hrkalakcetfar87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk:Tvirud99eudndnadcl9hmbaeTmeindndnabRbbgiabcefgl8Sbbgvabcdfgo8Sbbgrf9R:YJbbuJabcifgwRbbgdce4adVgDcd4aDVgDcl4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax86bbdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao86bbdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai86bbdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad86bbabclfhbaecufgembxdkkaeTmbindndnab8Vebgiabcdfgl8Uebgvabclfgo8Uebgrf9R:YJbFu9habcofgw8Vebgdce4adVgDcd4aDVgDcl4aDVgDcw4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax87ebdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao87ebdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai87ebdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad87ebabcwfhbaecufgembkkk9teiucbcbyd:K:G:cjbgeabcifc98GfgbBd:K:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk83dbcj:Gdk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:K:Gdkl8W:qbb",t="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuixkbbebeeddddilve9Weeeviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WbwY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbDl79IV9Rbqq:I9Dklbzik94evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaeai86b:q:W:cjbaecitab8Piw83i:q:G:cjbaecefgecjd9hmbkk:SBlEud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaialfgxar9RhodnadTgmmbavaoad;8qbbkaicefhPcj;abad9Uc;WFbGcjdadca0EhsdndndnadTmbaoadfhzcbhHinaeaH9nmdaxaP9RaD6miabaHad2fgOavcjdfasaeaH9RaHasfae6EgAaAcsfgoc9WGgCSEhXaPaDfhQaocl4cifcd4hLavcj;cbfaCcetfhKavcj;cbfaCci2fhYavcj;cbfaCfh8AcbhEaoc;ab6h3incbh5dnawTmbaPaEcd4fRbbh5kcbh8Eavcj;cbfh8Findndndndna5a8Ecet4ciGgoc9:fPdebdkaxaQ9RaC6mwdnaCTmbavcj;cbfa8EaC2faQaC;8qbbkaQaAfhQxdkaCTmeavcj;cbfa8EaC2fcbaC;8kbxekaxaQ9RaL6moaoclVcbawEhraQaLfhocbhidna3mbaxao9Rc;Gb6mbcbhlina8FalfhidndndndndndnaQalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLgacdp:meaapmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9oghpxiiiiiiiiiiiiiiiip8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaoclffa8JRb:q:W:cjbfhoxikaiaopbbwaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLpxssssssssssssssssp9oghpxssssssssssssssssp8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaocwffa8JRb:q:W:cjbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbggcitpbi:q:G:cjbagRb:q:W:cjbggpsaoRbeg8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbagaocdffa8JRb:q:W:cjbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLgacdp:meaapmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9oghpxiiiiiiiiiiiiiiiip8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaoclffa8JRb:q:W:cjbfhoxikaiczfaopbbwaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLpxssssssssssssssssp9oghpxssssssssssssssssp8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaocwffa8JRb:q:W:cjbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbggcitpbi:q:G:cjbagRb:q:W:cjbggpsaoRbeg8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbagaocdffa8JRb:q:W:cjbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLgacdp:meaapmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9oghpxiiiiiiiiiiiiiiiip8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaoclffa8JRb:q:W:cjbfhoxikaicafaopbbwaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLpxssssssssssssssssp9oghpxssssssssssssssssp8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaocwffa8JRb:q:W:cjbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbggcitpbi:q:G:cjbagRb:q:W:cjbggpsaoRbeg8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbagaocdffa8JRb:q:W:cjbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLgacdp:meaapmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9oghpxiiiiiiiiiiiiiiiip8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsaap5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbaiaoclffaqRb:q:W:cjbfhoxikaic8Wfaopbbwaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLpxssssssssssssssssp9oghpxssssssssssssssssp8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsaap5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbaiaocwffaqRb:q:W:cjbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitpbi:q:G:cjbaiRb:q:W:cjbgipsaoRbegqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqRb:q:W:cjbfhokalc;abfhialcjefaC0meaihlaxao9Rc;Fb0mbkkdnaiaC9pmbaici4hlinaxao9RcK6mwa8FaifhqdndndndndndnaQaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLgacdp:meaapmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9oghpxiiiiiiiiiiiiiiiip8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spkbbagaoclffa8JRb:q:W:cjbfhoxikaqaopbbwaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLpxssssssssssssssssp9oghpxssssssssssssssssp8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spkbbagaocwffa8JRb:q:W:cjbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbggcitpbi:q:G:cjbagRb:q:W:cjbggpsaoRbeg8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpkbbagaocdffa8JRb:q:W:cjbfhokalcdfhlaiczfgiaC6mbkkaohQaoTmoka8FaCfh8Fa8Ecefg8Ecl9hmbkdndndndnawTmbazaEcd4fRbbglciGPlbedwbkaCTmdaXaEfhlavaEfpbdbh8Kcbhoinalavcj;cbfaofpblbg8La8Aaofpblbg8MpmbzeHdOiAlCvXoQrLg8NaKaofpblbgyaYaofpblbg8PpmbzeHdOiAlCvXoQrLgIpmbezHdiOAlvCXorQLgacep9Taapxeeeeeeeeeeeeeeeeghp9op9Hp9rgaa8Kp9Ug8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp9Ug8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp9Ug8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp9Ug8Kp9Abbbaladfgla8Ka8NaIpmwDKYqk8AExm35Ps8E8Fgacep9Taaahp9op9Hp9rgap9Ug8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp9Ug8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp9Ug8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp9Ug8Kp9Abbbaladfgla8Ka8La8MpmwKDYq8AkEx3m5P8Es8Fg8Laya8PpmwKDYq8AkEx3m5P8Es8Fg8MpmbezHdiOAlvCXorQLgacep9Taaahp9op9Hp9rgap9Ug8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp9Ug8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp9Ug8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp9Ug8Kp9Abbbaladfgla8Ka8La8MpmwDKYqk8AExm35Ps8E8Fgacep9Taaahp9op9Hp9rgap9Ughp9Abbbaladfglahaaaapmlvorlvorlvorlvorp9Ughp9AbbbaladfglahaaaapmwDqkwDqkwDqkwDqkp9Ughp9AbbbaladfglahaaaapmxmPsxmPsxmPsxmPsp9Ug8Kp9AbbbaladfhlaoczfgoaC6mbxikkaCTmeaXaEfhlavaEfpbdbh8Kcbhoinalavcj;cbfaofpblbg8La8Aaofpblbg8MpmbzeHdOiAlCvXoQrLg8NaKaofpblbgyaYaofpblbg8PpmbzeHdOiAlCvXoQrLgIpmbezHdiOAlvCXorQLgacep:neaapxebebebebebebebebghp9op:bep9rgaa8Kp:oeg8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp:oeg8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp:oeg8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp:oeg8Kp9Abbbaladfgla8Ka8NaIpmwDKYqk8AExm35Ps8E8Fgacep:neaaahp9op:bep9rgap:oeg8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp:oeg8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp:oeg8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp:oeg8Kp9Abbbaladfgla8Ka8La8MpmwKDYq8AkEx3m5P8Es8Fg8Laya8PpmwKDYq8AkEx3m5P8Es8Fg8MpmbezHdiOAlvCXorQLgacep:neaaahp9op:bep9rgap:oeg8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp:oeg8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp:oeg8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp:oeg8Kp9Abbbaladfgla8Ka8La8MpmwDKYqk8AExm35Ps8E8Fgacep:neaaahp9op:bep9rgap:oeghp9Abbbaladfglahaaaapmlvorlvorlvorlvorp:oeghp9AbbbaladfglahaaaapmwDqkwDqkwDqkwDqkp:oeghp9AbbbaladfglahaaaapmxmPsxmPsxmPsxmPsp:oeg8Kp9AbbbaladfhlaoczfgoaC6mbxdkkaCTmbaXaEfhrcbhocbalcl4gl9Rc8FGhiavaEfpbdbhhinaravcj;cbfaofpblbg8Ka8Aaofpblbg8LpmbzeHdOiAlCvXoQrLg8MaKaofpblbg8NaYaofpblbgypmbzeHdOiAlCvXoQrLg8PpmbezHdiOAlvCXorQLgaaip:Reaaalp:Tep9qgaahp9rghp9Abbbaradfgrahaaaapmlvorlvorlvorlvorp9rghp9AbbbaradfgrahaaaapmwDqkwDqkwDqkwDqkp9rghp9AbbbaradfgrahaaaapmxmPsxmPsxmPsxmPsp9rghp9Abbbaradfgraha8Ma8PpmwDKYqk8AExm35Ps8E8Fgaaip:Reaaalp:Tep9qgap9rghp9Abbbaradfgrahaaaapmlvorlvorlvorlvorp9rghp9AbbbaradfgrahaaaapmwDqkwDqkwDqkwDqkp9rghp9AbbbaradfgrahaaaapmxmPsxmPsxmPsxmPsp9rghp9Abbbaradfgraha8Ka8LpmwKDYq8AkEx3m5P8Es8Fg8Ka8NaypmwKDYq8AkEx3m5P8Es8Fg8LpmbezHdiOAlvCXorQLgaaip:Reaaalp:Tep9qgap9rghp9Abbbaradfgrahaaaapmlvorlvorlvorlvorp9rghp9AbbbaradfgrahaaaapmwDqkwDqkwDqkwDqkp9rghp9AbbbaradfgrahaaaapmxmPsxmPsxmPsxmPsp9rghp9Abbbaradfgraha8Ka8LpmwDKYqk8AExm35Ps8E8Fgaaip:Reaaalp:Tep9qgap9rghp9Abbbaradfgrahaaaapmlvorlvorlvorlvorp9rghp9AbbbaradfgrahaaaapmwDqkwDqkwDqkwDqkp9rghp9AbbbaradfgrahaaaapmxmPsxmPsxmPsxmPsp9rghp9AbbbaradfhraoczfgoaC6mbkkaEclfgEad6mbkdnaXavcjdf9hmbaAad2goTmbaOavcjdfao;8qbbkdnammbavaXaAcufad2fad;8qbbkaAaHfhHc9:hoaQhPaQmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdasaeao9Raoasfae6Eaofgoae6mbkaial9RhPkcbc99axaP9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbkpPesu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecje;8kbav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhDaicefgiarfhqdndnaeci9pmbaqhexekcmcsawceSEhkcbhxcbhmaqhecbhlcbhoindndnaiRbbgrc;Ve0mbavc;abfaoarcu7gPcl4fcsGcitfgwydlhsawydbhzdndnarcsGgwak9pmbavalaPfcsGcdtfydbaxawEhraxawTgHfhxxekdnaeaD9nmbc9:hoxokdndnawcsSmbcehHamawcetfcWfhrxekaecefhrae8SbbgwcFeGhPdndnawcu9mmbarhexekaecvfheaPcFbGhPcrhwdninar8SbbgHcFbGawtaPVhPaHcu9kmearcefhrawcrfgwc8J9hmbxdkkarcefhekcehHaPce4cbaPceG9R7amfhrkarhmkavc;abfaocitfgwarBdbawasBdlavalcdtfarBdbavc;abfaocefcsGcitfgwazBdbawarBdlaocdfhoaHalfhldnadcd9hmbabar87elabas87edabaz87ebabcofhbxdkabarBdwabasBdlabazBdbabcxfhbxekdnarcpe0mbavalaDarcsGfRbbgwcl4gP9RcsGcdtfydbaxcefgsaPEhravalaw9RcsGcdtfydbasaPTgzfgsawcsGgPEhwaPThPdndnadcd9hmbabaw87elabar87edabax87ebcohHxekabawBdwabarBdlabaxBdbcxhHkavalcdtfaxBdbavc;abfaocitfgOarBdbaOaxBdlavalcefglcsGcdtfarBdbavc;abfaocefcsGcitfgOawBdbaOarBdlavalazfglcsGcdtfawBdbavc;abfaocdfcsGcitfgraxBdbarawBdlaocifhoabaHfhbalaPfhlasaPfhxxekdnaeaD9nmbc9:hoxlkaxcbaeRbbgwEgHarc;:eSgrfhsawcsGhOdndnawcl4gAmbascefhzxekashzavalaA9RcsGcdtfydbhskdndnaOmbazcefhxxekazhxavalaw9RcsGcdtfydbhzkdndnarTmbaecefhrxekaecdfhrae8SbegPcFeGhwdnaPcu9kmbaecofhHawcFbGhwcrhedninar8SbbgPcFbGaetawVhwaPcu9kmearcefhraecrfgec8J9hmbkaHhrxekarcefhrkawce4cbawceG9R7amfgmhHkdndnaAcsSmbarhwxekarcefhwar8SbbgecFeGhPdnaecu9kmbarcvfhsaPcFbGhPcrhedninaw8SbbgrcFbGaetaPVhParcu9kmeawcefhwaecrfgec8J9hmbkashwxekawcefhwkaPce4cbaPceG9R7amfgmhskdndnaOcsSmbawhexekawcefheaw8SbbgrcFeGhPdnarcu9kmbawcvfhzaPcFbGhPcrhrdninae8SbbgwcFbGartaPVhPawcu9kmeaecefhearcrfgrc8J9hmbkazhexekaecefhekaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabaz87elabas87edabaH87ebcohrxekabazBdwabasBdlabaHBdbcxhrkavc;abfaocitfgwasBdbawaHBdlavalcdtfaHBdbavc;abfaocefcsGcitfgwazBdbawasBdlavalcefglcsGcdtfasBdbavc;abfaocdfcsGcitfgwaHBdbawazBdlavalaATaAcsSVfglcsGcdtfazBdbalaOTaOcsSVfhlaocifhoabarfhbkaocsGhoalcsGhlaicefgiaq6mbkkcbc99aeaDSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk;Toio97eue97aec98Ghedndnadcl9hmbaeTmecbhdinababpbbbgicKp:RecKp:Sep;6eglaicwp:RecKp:Sep;6ealp;Geaiczp:RecKp:Sep;6egvp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgwp9op9rp;Keglpxbb;:9cbb;:9cbb;:9cbb;:9calalp;Meaoaop;Meavaravawp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFbbbFbbbFbbbFbbbp9oaipxbbbFbbbFbbbFbbbFp9op9qalavp;Mearp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaoavp;Mearp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgDaDpbbbgipxbbbbbbFFbbbbbbFFgwp9oabpbbbgoaipmbediwDqkzHOAKY8AEgvczp:Reczp:Sep;6eglaoaipmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eavczp:Sep;6egvp;Gealp;Gep;Kep;Legipxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgqp9op9rp;Keglpxb;:FSb;:FSb;:FSb;:FSalalp;Meaiaip;Meavaravaqp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbp9oaiavp;Mearp;Keczp:Rep9qgialavp;Mearp;KepxFFbbFFbbFFbbFFbbp9oglpmwDKYqk8AExm35Ps8E8Fp9qpkbbabaoawp9oaialpmbezHdiOAlvCXorQLp9qpkbbabcafhbadclfgdae6mbkkk;2ileue97euo97dnaec98GgiTmbcbheinabcKfpx:ji:1S:ji:1S:ji:1S:ji:1SabpbbbglabczfgvpbbbgopmlvorxmPsCXQL358E8Fgrczp:Segwpxibbbibbbibbbibbbp9qp;6egDp;NegqaDaDp;MegDaDp;KealaopmbediwDqkzHOAKY8AEgDczp:Reczp:Sep;6eglalp;MeaDczp:Sep;6egoaop;Mearczp:Reczp:Sep;6egrarp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jep;Mepxbbn0bbn0bbn0bbn0gDp;KepxFFbbFFbbFFbbFFbbgkp9oaqaop;MeaDp;Keczp:Rep9qgoaqalp;MeaDp;Keakp9oaqarp;MeaDp;Keczp:Rep9qgDpmwDKYqk8AExm35Ps8E8Fglp5eawclp:RegqpEi:T:j83ibavalp5baqpEd:T:j83ibabcwfaoaDpmbezHdiOAlvCXorQLgDp5eaqpEe:T:j83ibabaDp5baqpEb:T:j83ibabcafhbaeclfgeai6mbkkkuee97dnadcd4ae2c98GgeTmbcbhdinababpbbbgicwp:Recwp:Sep;6eaicep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbabczfhbadclfgdae6mbkkk:Sodw97euaec98Ghedndnadcl9hmbaeTmecbhdinabpxbbuJbbuJbbuJbbuJabpbbbgicKp:TeglaicYp:Tep9qgvcdp:Teavp9qgvclp:Teavp9qgop;6ep;Negvaicwp:RecKp:SegraipxFbbbFbbbFbbbFbbbgwp9ogDp:Uep;6ep;Mepxbbn0bbn0bbn0bbn0gqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9oavaDarp:Xeaiczp:RecKp:Segip:Uep;6ep;Meaqp;Keawp9op9qavaDaraip:Uep:Xep;6ep;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qavaoalcep:Rep9oalpxebbbebbbebbbebbbp9op9qp;6ep;Meaqp;KecKp:Rep9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgkpxbFu9hbFu9hbFu9hbFu9habpbbbglakpbbbgrpmlvorxmPsCXQL358E8Fgvczp:TegqavcHp:Tep9qgicdp:Teaip9qgiclp:Teaip9qgicwp:Teaip9qgop;6ep;NegialarpmbediwDqkzHOAKY8AEgDpxFFbbFFbbFFbbFFbbglp9ograDczp:Segwp:Ueavczp:Reczp:SegDp:Xep;6ep;Mepxbbn0bbn0bbn0bbn0gvp;Kealp9oaiarawaDp:Uep:Xep;6ep;Meavp;Keczp:Rep9qgwaiaoaqcep:Rep9oaqpxebbbebbbebbbebbbp9op9qp;6ep;Meavp;Keczp:ReaiaDarp:Uep;6ep;Meavp;Kealp9op9qgipmwDKYqk8AExm35Ps8E8FpkbbabawaipmbezHdiOAlvCXorQLpkbbabcafhbadclfgdae6mbkkk9teiucbcbydj:G:cjbgeabcifc98GfgbBdj:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkxebcj:Gdklz:zbb",r=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),n=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var o=WebAssembly.validate(r)?a(t):a(e),A,i=WebAssembly.instantiate(o,{}).then(function(I){A=I.instance,A.exports.__wasm_call_ctors()});function a(I){for(var b=new Uint8Array(I.length),D=0;D<I.length;++D){var m=I.charCodeAt(D);b[D]=m>96?m-97:m>64?m-39:m+4}for(var x=0,D=0;D<I.length;++D)b[x++]=b[D]<60?n[b[D]]:(b[D]-60)*64+b[++D];return b.buffer.slice(0,x)}function s(I,b,D,m,x,w,S){var N=I.exports.sbrk,M=m+3&-4,G=N(M*x),j=N(w.length),R=new Uint8Array(I.exports.memory.buffer);R.set(w,j);var K=b(G,m,x,j,w.length);if(K==0&&S&&S(G,M,x),D.set(R.subarray(G,G+m*x)),N(G-N(0)),K!=0)throw new Error("Malformed buffer data: "+K)}var c={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp",COLOR:"meshopt_decodeFilterColor"},l={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},u=[],g=0;function p(I){var b={object:new Worker(I),pending:0,requests:{}};return b.object.onmessage=function(D){var m=D.data;b.pending-=m.count,b.requests[m.id][m.action](m.value),delete b.requests[m.id]},b}function f(I){for(var b="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(o)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+h.name+";"+s.toString()+h.toString(),D=new Blob([b],{type:"text/javascript"}),m=URL.createObjectURL(D),x=u.length;x<I;++x)u[x]=p(m);for(var x=I;x<u.length;++x)u[x].object.postMessage({});u.length=I,URL.revokeObjectURL(m)}function d(I,b,D,m,x){for(var w=u[0],S=1;S<u.length;++S)u[S].pending<w.pending&&(w=u[S]);return new Promise(function(N,M){var G=new Uint8Array(D),j=++g;w.pending+=I,w.requests[j]={resolve:N,reject:M},w.object.postMessage({id:j,count:I,size:b,source:G,mode:m,filter:x},[G.buffer])})}function h(I){var b=I.data;self.ready.then(function(D){if(!b.id)return self.close();try{var m=new Uint8Array(b.count*b.size);s(D,D.exports[b.mode],m,b.count,b.size,b.source,D.exports[b.filter]),self.postMessage({id:b.id,count:b.count,action:"resolve",value:m},[m.buffer])}catch(x){self.postMessage({id:b.id,count:b.count,action:"reject",value:x})}})}return{ready:i,supported:!0,useWorkers:function(I){f(I)},decodeVertexBuffer:function(I,b,D,m,x){s(A,A.exports.meshopt_decodeVertexBuffer,I,b,D,m,A.exports[c[x]])},decodeIndexBuffer:function(I,b,D,m){s(A,A.exports.meshopt_decodeIndexBuffer,I,b,D,m)},decodeIndexSequence:function(I,b,D,m){s(A,A.exports.meshopt_decodeIndexSequence,I,b,D,m)},decodeGltfBuffer:function(I,b,D,m,x,w){s(A,A.exports[l[x]],I,b,D,m,A.exports[c[w]])},decodeGltfBufferAsync:function(I,b,D,m,x){return u.length>0?d(I,b,D,l[m],c[x]):i.then(function(){var w=new Uint8Array(I*b);return s(A,A.exports[l[m]],w,I,b,D,A.exports[c[x]]),w})}}})();var tA={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},aa={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};function sa(e,t=!1){switch(e){case 5120:return t?(r,n)=>Math.max(r.getInt8(n)/127,-1):(r,n)=>r.getInt8(n);case 5121:return t?(r,n)=>r.getUint8(n)/255:(r,n)=>r.getUint8(n);case 5122:return t?(r,n)=>Math.max(r.getInt16(n,!0)/32767,-1):(r,n)=>r.getInt16(n,!0);case 5123:return t?(r,n)=>r.getUint16(n,!0)/65535:(r,n)=>r.getUint16(n,!0);case 5125:return(r,n)=>r.getUint32(n,!0);default:return(r,n)=>r.getFloat32(n,!0)}}var Gs=new Set(["KHR_materials_unlit","KHR_materials_emissive_strength","KHR_texture_transform","KHR_texture_basisu","EXT_texture_webp"]);function Rs(e,t){if(t===0)return{indices:e,topology:"point-list"};if(t===1){if(e.length%2!==0)throw new Error("glTF LINES index count must be even");return{indices:e,topology:"line-list"}}if(t===4)return{indices:e,topology:"triangle-list"};if(![2,3,5,6].includes(t))throw new Error(`Invalid glTF primitive mode ${t}`);let r=[];if(t===2||t===3){for(let n=1;n<e.length;n++)r.push(e[n-1],e[n]);t===2&&e.length>1&&r.push(e[e.length-1],e[0])}else for(let n=2;n<e.length;n++)t===6?r.push(e[0],e[n-1],e[n]):n%2===0?r.push(e[n-2],e[n-1],e[n]):r.push(e[n-1],e[n-2],e[n]);return{indices:e instanceof Uint32Array?Uint32Array.from(r):Uint16Array.from(r),topology:t<=3?"line-list":"triangle-list"}}var ca=1179937895,Fs=1313821514,Us=5130562,fr=class e{static isGlb(t){let r=t instanceof Uint8Array?t:new Uint8Array(t);return r.length<12?!1:new DataView(r.buffer,r.byteOffset,r.byteLength).getUint32(0,!0)===ca}static parse(t,r={},n){let{doc:o,binaryBuffers:A}=e.readDocument(t,n);e.checkExtensions(o);for(let i of o.meshes??[])for(let a of i.primitives){let s=a.extensions?.KHR_draco_mesh_compression;if(s){if(a.indices!==void 0){let c=o.accessors?.[a.indices];if(!c||c.bufferView===void 0&&!c.sparse)throw new Error("Draco indices without an uncompressed fallback require GltfLoader.parseAsync")}for(let c of Object.keys(s.attributes)){let l=a.attributes[c],u=l===void 0?void 0:o.accessors?.[l];if(!u||u.bufferView===void 0&&!u.sparse)throw new Error("Draco geometry without an uncompressed fallback requires GltfLoader.parseAsync")}}}return e.buildModel(o,A,r,n)}static async parseAsync(t,r={},n){let{doc:o,binaryBuffers:A}=e.readDocument(t,n);return e.checkExtensions(o,new Set(["EXT_meshopt_compression","KHR_meshopt_compression","KHR_draco_mesh_compression"])),await e.decodeMeshopt(o,A),await e.decodeDraco(o,A),e.buildModel(o,A,r,n)}static checkExtensions(t,r=new Set){for(let n of t.extensionsRequired??[])if(!Gs.has(n)&&!r.has(n))throw new Error(`glTF file requires ${n}, which framefields cannot decode or render`)}static async decodeMeshopt(t,r){let n=(t.bufferViews??[]).filter(o=>o.extensions?.EXT_meshopt_compression||o.extensions?.KHR_meshopt_compression);if(n.length){await eA.ready;for(let o of n){if(o.extensions?.EXT_meshopt_compression&&o.extensions?.KHR_meshopt_compression)throw new Error("A buffer view cannot use both EXT and KHR meshopt compression");let A=o.extensions?.KHR_meshopt_compression??o.extensions?.EXT_meshopt_compression;if(!A)continue;let i=r[A.buffer];if(!i)throw new Error(`meshopt buffer ${A.buffer} not loaded`);let a=A.byteOffset??0;if(a<0||A.byteLength<0||a+A.byteLength>i.byteLength)throw new Error("Invalid meshopt compressed buffer range");let s=A.count*A.byteStride;if(!Number.isSafeInteger(A.count)||A.count<0||!Number.isSafeInteger(A.byteStride)||A.byteStride<1||!Number.isSafeInteger(s)||s!==o.byteLength)throw new Error("Invalid meshopt decoded buffer length");if(!["ATTRIBUTES","TRIANGLES","INDICES"].includes(A.mode)||!["NONE","OCTAHEDRAL","QUATERNION","EXPONENTIAL","COLOR"].includes(A.filter??"NONE"))throw new Error("Invalid meshopt compression mode or filter");let c=new Uint8Array(s);eA.decodeGltfBuffer(c,A.count,A.byteStride,i.subarray(a,a+A.byteLength),A.mode,A.filter??"NONE"),o.buffer=r.length,o.byteOffset=0,r.push(c)}}}static async decodeDraco(t,r){let n=(t.meshes??[]).flatMap(i=>i.primitives).filter(i=>i.extensions?.KHR_draco_mesh_compression);if(!n.length)return;let o=await la.default.createDecoderModule({}),A=new o.Decoder;try{for(let i of n){let a=i.extensions?.KHR_draco_mesh_compression;if(!a)continue;let s=t.bufferViews?.[a.bufferView];if(!s)throw new Error(`Draco bufferView ${a.bufferView} not found`);let c=r[s.buffer];if(!c)throw new Error(`Draco buffer ${s.buffer} not loaded`);let l=s.byteOffset??0;if(l<0||l+s.byteLength>c.byteLength)throw new Error("Invalid Draco buffer range");let u=c.subarray(l,l+s.byteLength),g=new o.DecoderBuffer,p=new o.Mesh;try{if(g.Init(new Int8Array(u.buffer,u.byteOffset,u.byteLength),u.byteLength),A.GetEncodedGeometryType(g)!==o.TRIANGULAR_MESH)throw new Error("Draco primitive is not a triangular mesh");let f=A.DecodeBufferToMesh(g,p),d=f.ok(),h=d?"":f.error_msg();if(o.destroy(f),!d)throw new Error(`Draco decode failed: ${h}`);let I={};for(let[m,x]of Object.entries(a.attributes)){let w=i.attributes[m],S=w===void 0?void 0:t.accessors?.[w];if(w===void 0||!S)throw new Error(`Draco ${m} accessor not found`);let N=A.GetAttributeByUniqueId(p,x);if(!N)throw new Error(`Draco ${m} attribute ${x} not found`);let M=new o.DracoFloat32Array;try{if(!A.GetAttributeFloatForAllPoints(p,N,M))throw new Error(`Failed to decode Draco ${m}`);let G=p.num_points()*(tA[S.type]??1);if(S.count!==p.num_points()||M.size()!==G)throw new Error(`Invalid Draco ${m} attribute size`);let j=new Float32Array(G);for(let R=0;R<G;R++){let K=M.GetValue(R);S.normalized&&(S.componentType===5120?K=Math.max(K/127,-1):S.componentType===5121?K/=255:S.componentType===5122?K=Math.max(K/32767,-1):S.componentType===5123&&(K/=65535)),j[R]=K}I[w]=j}finally{o.destroy(M)}}let b=p.num_points()>65535?new Uint32Array(p.num_faces()*3):new Uint16Array(p.num_faces()*3),D=new o.DracoInt32Array;try{for(let m=0;m<p.num_faces();m++){if(!A.GetFaceFromMesh(p,m,D))throw new Error(`Failed to decode Draco face ${m}`);for(let x=0;x<3;x++)b[m*3+x]=D.GetValue(x)}}finally{o.destroy(D)}i.decodedDraco={attributes:I,indices:b}}finally{o.destroy(p),o.destroy(g)}}}finally{o.destroy(A)}}static readDocument(t,r){let n,o=[];if(typeof t=="string")try{n=JSON.parse(t)}catch(A){throw new Error(`Failed to parse glTF JSON: ${String(A)}`)}else{let A=t instanceof Uint8Array?t:new Uint8Array(t);if(e.isGlb(A)){let i=e.unpackGlb(A);n=i.doc,i.binBuffer&&o.push(i.binBuffer)}else{let i=new TextDecoder("utf-8").decode(A);n=JSON.parse(i)}}if(n.buffers)for(let A=0;A<n.buffers.length;A++){if(A===0&&o.length>0)continue;let i=n.buffers[A];if(i.uri){if(i.uri.startsWith("data:")){let a=i.uri.indexOf("base64,");if(a!==-1){let s=i.uri.substring(a+7),c=Buffer.from(s,"base64");o[A]=new Uint8Array(c.buffer,c.byteOffset,c.byteLength)}}else if(r){let a=Ze.isAbsolute(i.uri)?i.uri:Ze.join(r,i.uri);if(Re.existsSync(a)){let s=Re.readFileSync(a);o[A]=new Uint8Array(s.buffer,s.byteOffset,s.byteLength)}}}}return{doc:n,binaryBuffers:o}}static unpackGlb(t){let r=new DataView(t.buffer,t.byteOffset,t.byteLength),n=r.getUint32(0,!0),o=r.getUint32(8,!0);if(n!==ca)throw new Error("Invalid GLB header: magic mismatch");let A=12,i=null,a;for(;A<o&&A<t.byteLength;){let s=r.getUint32(A,!0),c=r.getUint32(A+4,!0);A+=8;let l=t.subarray(A,A+s);if(A+=s,c===Fs){let u=new TextDecoder("utf-8").decode(l);i=JSON.parse(u)}else c===Us&&(a=l)}if(!i)throw new Error("Invalid GLB: JSON chunk not found");return{doc:i,binBuffer:a}}static readFloats(t,r,n){let o=t.accessors?.[n];if(!o)throw new Error(`Accessor ${n} not found`);let A=tA[o.type]??1,i=new Float32Array(o.count*A),a=aa[o.componentType]??4,s=sa(o.componentType,o.normalized);if(o.bufferView!==void 0){let c=t.bufferViews?.[o.bufferView];if(!c)throw new Error(`BufferView ${o.bufferView} not found`);let l=r[c.buffer];if(!l)throw new Error(`Binary buffer ${c.buffer} not loaded`);let u=c.byteStride??a*A,g=new DataView(l.buffer,l.byteOffset,l.byteLength),p=(c.byteOffset??0)+(o.byteOffset??0);for(let f=0;f<o.count;f++)for(let d=0;d<A;d++)i[f*A+d]=s(g,p+f*u+d*a)}if(o.sparse){let c=o.sparse,l=t.bufferViews?.[c.indices.bufferView],u=t.bufferViews?.[c.values.bufferView];if(!l||!u)throw new Error(`Sparse accessor ${n} references a missing buffer view`);let g=r[l.buffer],p=r[u.buffer];if(!g||!p)throw new Error(`Sparse accessor ${n} references a missing buffer`);let f=sa(c.indices.componentType),d=aa[c.indices.componentType],h=new DataView(g.buffer,g.byteOffset,g.byteLength),I=new DataView(p.buffer,p.byteOffset,p.byteLength),b=(l.byteOffset??0)+(c.indices.byteOffset??0),D=(u.byteOffset??0)+(c.values.byteOffset??0);for(let m=0;m<c.count;m++){let x=f(h,b+m*d);if(x>=o.count)throw new Error(`Sparse accessor ${n} index ${x} is out of range`);for(let w=0;w<A;w++)i[x*A+w]=s(I,D+(m*A+w)*a)}}return{data:i,itemSize:A,count:o.count}}static readIndices(t,r,n){let{data:o}=e.readFloats(t,r,n);return o.reduce((i,a)=>a>i?a:i,0)>65535?Uint32Array.from(o):Uint16Array.from(o)}static imageBytes(t,r,n,o){let A=t.images?.[n];if(!A)return;if(A.bufferView!==void 0){let a=t.bufferViews?.[A.bufferView],s=a?r[a.buffer]:void 0;if(!a||!s)return;let c=a.byteOffset??0;return{bytes:s.subarray(c,c+a.byteLength),mime:A.mimeType??"image/png"}}if(!A.uri)return;if(A.uri.startsWith("data:")){let a=A.uri.indexOf(","),s=A.uri.slice(5,A.uri.indexOf(";"));return{bytes:new Uint8Array(Buffer.from(A.uri.slice(a+1),"base64")),mime:s}}if(!o)return;let i=Ze.isAbsolute(A.uri)?A.uri:Ze.join(o,decodeURIComponent(A.uri));if(!Re.existsSync(i)){e.warn(`Image "${A.uri}" was not found next to the model; textures using it are skipped.`);return}return{bytes:new Uint8Array(Re.readFileSync(i)),mime:A.mimeType??Kn(i)}}static warn(t){console.warn(`[GltfLoader] ${t}`)}static texCoordOf(t){return t.extensions?.KHR_texture_transform?.texCoord??t.texCoord??0}static textureImage(t,r,n,o,A){let i=t.textures?.[n];if(!i)return;let a=i.extensions?.KHR_texture_basisu?.source??i.extensions?.EXT_texture_webp?.source??i.source;if(a===void 0)return;let s=e.imageBytes(t,r,a,o);if(!s)return;if(!Ns.has(s.mime)){e.warn(`${A} is ${s.mime}, which framefields cannot decode; it is skipped (use PNG, JPEG or WebP).`);return}let c=i.sampler!==void 0?t.samplers?.[i.sampler]:void 0;return{...s,sampler:c}}static buildMaterial(t,r,n,o,A){let i=n.pbrMetallicRoughness,a=i?.baseColorFactor??[1,1,1,1],s={name:o,diffuseColor:a,roughness:i?.roughnessFactor??.5,metallic:i?.metallicFactor??0,shininess:32*(1-(i?.roughnessFactor??.5)),twoSided:n.doubleSided??!0,alphaMode:n.alphaMode==="MASK"?"mask":n.alphaMode==="BLEND"?"blend":"opaque",alphaCutoff:n.alphaMode==="MASK"?n.alphaCutoff??.5:0},c=n.emissiveFactor;c&&(c[0]>0||c[1]>0||c[2]>0)&&(s.emissive=[c[0],c[1],c[2]],s.emissiveStrength=n.extensions?.KHR_materials_emissive_strength?.emissiveStrength??1);let l=n.extensions?.VRMC_materials_mtoon;l?(s.shading="toon",s.shadeColor=l.shadeColorFactor??[1,1,1]):n.extensions?.KHR_materials_unlit&&(s.shading="unlit");let u=(b,D)=>{if(b)return e.textureImage(t,r,b.index,A,`The ${D} map of material "${o}"`)},g=u(i?.baseColorTexture,"base color");if(g){s.diffuseTextureBuffer=g.bytes,s.diffuseTextureMime=g.mime;let b=g.sampler?.wrapS;s.textureWrap=b===33071?"clamp":b===33648?"mirror":"repeat",g.sampler?.magFilter===9728&&(s.textureFilter="nearest")}let p=(b,D)=>u(b,D)?.bytes,f=p(n.normalTexture,"normal");f&&(s.normalTextureBuffer=f,s.normalScale=n.normalTexture?.scale??1);let d=p(i?.metallicRoughnessTexture,"metallic-roughness");d&&(s.metallicRoughnessTextureBuffer=d,s.roughness=i?.roughnessFactor??1,s.metallic=i?.metallicFactor??1);let h=p(n.occlusionTexture,"occlusion");h&&(s.occlusionTextureBuffer=h,s.occlusionStrength=n.occlusionTexture?.strength??1);let I=s.emissive&&p(n.emissiveTexture,"emissive");return I&&(s.emissiveTextureBuffer=I),s}static buildNodes(t){let r=(t.nodes??[]).map((n,o)=>({name:n.name??`node_${o}`,parent:-1,translation:n.translation??[0,0,0],rotation:n.rotation??[0,0,0,1],scale:n.scale??[1,1,1],matrix:n.matrix?n.matrix:void 0}));return(t.nodes??[]).forEach((n,o)=>{for(let A of n.children??[]){let i=r[A];i&&(i.parent=o)}}),r}static buildAnimations(t,r,n){return(t.animations??[]).map((o,A)=>{let i=[],a=0;for(let s of o.channels){let c=o.samplers[s.sampler],l=s.target.node;if(!c||l===void 0)continue;let u=e.readFloats(t,r,c.input).data,g=e.readFloats(t,r,c.output).data;a=Math.max(a,u[u.length-1]??0);let p={nodeName:n[l]?.name??`node_${l}`,node:l,times:u,interpolation:c.interpolation==="STEP"?"step":c.interpolation==="CUBICSPLINE"?"cubic":"linear"};s.target.path==="translation"?p.translations=g:s.target.path==="rotation"?p.rotations=g:s.target.path==="scale"?p.scales=g:p.weights=g,i.push(p)}return{name:o.name??`Animation_${A}`,duration:a>0?a:1,fps:30,tracks:i}})}static buildModel(t,r,n,o){let A=(t.materials??[]).map((R,K,z)=>{let J=R.name??`material_${K}`;return z.findIndex((W,X)=>(W.name??`material_${X}`)===J)===K?J:`${J}#${K}`}),i={};(t.materials??[]).forEach((R,K)=>{let z=A[K];i[z]=e.buildMaterial(t,r,R,z,o)});let a=e.buildNodes(t),s=(t.skins??[]).map(R=>({joints:R.joints,inverseBindMatrices:R.inverseBindMatrices!==void 0?e.readFloats(t,r,R.inverseBindMatrices).data:Float32Array.from(R.joints.flatMap(()=>Ee.identity()))})),c=e.buildAnimations(t,r,a),l=(t.nodes??[]).flatMap((R,K)=>R.mesh!==void 0?[{mesh:R.mesh,node:K,skin:R.skin}]:[]),u=l.length>0?l:(t.meshes??[]).map((R,K)=>({mesh:K})),g={name:"glTF_Model",meshes:[],materials:i,nodes:a,skins:s,animations:c,bounds:{min:[0,0,0],max:[0,0,0],center:[0,0,0],size:[0,0,0],boundingSphereRadius:0}},p=ho(g,void 0,0),f=1/0,d=1/0,h=1/0,I=-1/0,b=-1/0,D=-1/0,m=(R,K,z)=>{R<f&&(f=R),R>I&&(I=R),K<d&&(d=K),K>b&&(b=K),z<h&&(h=z),z>D&&(D=z)};for(let R of u){let K=t.meshes?.[R.mesh];K&&K.primitives.forEach((z,J)=>{if(z.attributes.POSITION===void 0)throw new Error(`glTF mesh ${R.mesh} primitive ${J} has no POSITION attribute`);let W=le=>{if(le===void 0)return;let ge=z.decodedDraco?.attributes[le];if(!ge)return e.readFloats(t,r,le);let be=t.accessors?.[le];if(!be)throw new Error(`Accessor ${le} not found`);return{data:ge,itemSize:tA[be.type]??1,count:be.count}},X=W(z.attributes.POSITION),Ae=X.count,re=z.material===void 0?void 0:t.materials?.[z.material],oe=z.attributes,ne=le=>{if(!le)return;let ge=e.texCoordOf(le),be=oe[`TEXCOORD_${ge}`];if(be===void 0)throw new Error(`glTF mesh ${R.mesh} primitive ${J} lacks TEXCOORD_${ge} required by a texture`);let we=W(be);if(!we)throw new Error(`glTF mesh ${R.mesh} has missing texture coordinates`);if(we.itemSize!==2||we.count!==Ae)throw new Error(`Invalid TEXCOORD_${ge} on glTF mesh ${R.mesh} primitive ${J}`);let Me=le.extensions?.KHR_texture_transform;return Me&&Ts(we.data,Me),we.data},ie=ne(re?.pbrMetallicRoughness?.baseColorTexture)??W(z.attributes.TEXCOORD_0)?.data??new Float32Array(Ae*2),he={normal:ne(re?.normalTexture),metallicRoughness:ne(re?.pbrMetallicRoughness?.metallicRoughnessTexture),occlusion:ne(re?.occlusionTexture),emissive:ne(re?.emissiveTexture)},F=W(z.attributes.COLOR_0),Be;if(F){Be=new Float32Array(Ae*4).fill(1);for(let le=0;le<Ae;le++)for(let ge=0;ge<F.itemSize;ge++){let be=F.data[le*F.itemSize+ge]??1;Be[le*4+ge]=ge<3?ks(be):be}}let Se;if(z.decodedDraco)Se=z.decodedDraco.indices;else if(z.indices!==void 0)Se=e.readIndices(t,r,z.indices);else{Se=Ae>65535?new Uint32Array(Ae):new Uint16Array(Ae);for(let le=0;le<Ae;le++)Se[le]=le}let Pe=Rs(Se,z.mode??4);Se=Pe.indices;let Ie=R.skin!==void 0&&z.attributes.JOINTS_0!==void 0,y=!Ie&&R.node!==void 0?p[R.node]:void 0;for(let le=0;le<Ae;le++){let ge=X.data[le*3],be=X.data[le*3+1],we=X.data[le*3+2];if(y){let Me=Ee.projectPoint(y,[ge,be,we]);m(Me[0],Me[1],Me[2])}else m(ge,be,we)}let ye=z.targets?.map(le=>{let ge=W(le.POSITION),be=W(le.NORMAL);if(ge&&(ge.count!==Ae||ge.itemSize!==3)||be&&(be.count!==Ae||be.itemSize!==3))throw new Error(`Invalid morph target on glTF mesh ${R.mesh} primitive ${J}`);return{positions:ge?.data,normals:be?.data}}),Qe=(R.node===void 0?void 0:t.nodes?.[R.node]?.weights)??K.weights,xe=ye?.map((le,ge)=>Qe?.[ge]??0);g.meshes.push({id:`gltf_mesh_${R.mesh}_${J}${R.node!==void 0?`_n${R.node}`:""}`,name:K.name??`Mesh_${R.mesh}`,positions:X.data,normals:W(z.attributes.NORMAL)?.data??new Float32Array(Ae*3),uvs:ie,mapUvs:he,morphTargets:ye,morphWeights:xe,colors:Be,jointIndices:Ie?W(z.attributes.JOINTS_0)?.data:void 0,jointWeights:Ie?W(z.attributes.WEIGHTS_0)?.data:void 0,indices:Se,topology:Pe.topology,materialName:z.material!==void 0?A[z.material]:void 0,node:R.node,skin:Ie?R.skin:void 0})})}Number.isFinite(f)||(f=d=h=0,I=b=D=0);let x=Math.max(I-f,b-d,D-h,1e-4),w=n.normalizeSize&&n.normalizeSize>0?n.normalizeSize/x:1,S=typeof n.scale=="number"?[n.scale,n.scale,n.scale]:n.scale??[1,1,1],N=[w*S[0],w*S[1],w*S[2]],M=n.center?[(f+I)*.5,(d+b)*.5,(h+D)*.5]:[0,0,0];g.rootTransform=Ee.multiply(Ee.scale(N[0],N[1],N[2]),Ee.translate(-M[0],-M[1],-M[2]));let G=[(f-M[0])*N[0],(d-M[1])*N[1],(h-M[2])*N[2]],j=[(I-M[0])*N[0],(b-M[1])*N[1],(D-M[2])*N[2]];return g.bounds={min:G,max:j,center:[(G[0]+j[0])*.5,(G[1]+j[1])*.5,(G[2]+j[2])*.5],size:[j[0]-G[0],j[1]-G[1],j[2]-G[2]],boundingSphereRadius:Math.hypot(j[0]-G[0],j[1]-G[1],j[2]-G[2])*.5},g}static async loadAsync(t,r={}){if(typeof t!="string")return e.parseAsync(t,r);let n=t.startsWith("file://")?t.replace("file://",""):t;return!t.trimStart().startsWith("{")&&Re.existsSync(n)?e.parseAsync(Re.readFileSync(n),r,Ze.dirname(n)):e.parseAsync(t,r)}static load(t,r={}){if(typeof t!="string")return e.parse(t,r);let n=t.startsWith("file://")?t.replace("file://",""):t;if(t.startsWith("/")||t.startsWith("./")||t.startsWith("../")||t.startsWith("file://")||!t.trimStart().startsWith("{")&&Re.existsSync(n)){let o=Re.readFileSync(n),A=Ze.dirname(n);return e.parse(o,r,A)}return e.parse(t,r)}};function Eo(e,t={}){return fr.load(e,t)}async function rA(e,t={}){return fr.loadAsync(e,t)}function ua(e,t={}){return fr.load(e,t)}function ks(e){let t=Math.min(Math.max(e,0),1);return t<=.0031308?t*12.92:1.055*t**(1/2.4)-.055}var Ns=new Set(["image/png","image/jpeg","image/webp","image/gif","image/tiff","image/avif","image/ktx2"]);function Ts(e,{offset:t=[0,0],rotation:r=0,scale:n=[1,1]}){let o=Math.cos(r),A=Math.sin(r);for(let i=0;i<e.length;i+=2){let a=e[i]*n[0],s=e[i+1]*n[1];e[i]=o*a-A*s+t[0],e[i+1]=A*a+o*s+t[1]}}$();_t();var Ls=[[0,0,0,0],...Array.from({length:255},(e,t)=>{let r=(t+1)/256;return[r,r,r,1]})],to=class e{static isVox(t){let r=t instanceof Uint8Array?t:new Uint8Array(t);return r.length<8?!1:new TextDecoder("ascii").decode(r.subarray(0,4))==="VOX "}static parse(t,r={}){let n=t instanceof Uint8Array?t:new Uint8Array(t),o=new DataView(n.buffer,n.byteOffset,n.byteLength);if(new TextDecoder("ascii").decode(n.subarray(0,4))!=="VOX ")throw new Error("Invalid VOX file: magic mismatch");let i=8,a=16,s=16,c=16,l=[],u=[...Ls];for(;i+12<=n.byteLength;){let g=new TextDecoder("ascii").decode(n.subarray(i,i+4)),p=o.getUint32(i+4,!0);i+=12;let f=i;if(g==="SIZE")a=o.getUint32(f,!0),s=o.getUint32(f+4,!0),c=o.getUint32(f+8,!0);else if(g==="XYZI"){let d=o.getUint32(f,!0),h=f+4;for(let I=0;I<d&&!(h+4>n.byteLength);I++){let b=o.getUint8(h),D=o.getUint8(h+1),m=o.getUint8(h+2),x=o.getUint8(h+3);h+=4,l.push({x:b,y:D,z:m,colorIndex:x})}}else if(g==="RGBA")for(let d=0;d<256;d++){let h=f+d*4;if(h+4>n.byteLength)break;let I=o.getUint8(h)/255,b=o.getUint8(h+1)/255,D=o.getUint8(h+2)/255,m=o.getUint8(h+3)/255,x=d===255?0:d+1;u[x]=[I,b,D,m]}i+=p}return e.buildModel(l,u,a,s,c,r)}static buildModel(t,r,n,o,A,i){let a=new Set;t.forEach(m=>a.add(`${m.x},${m.y},${m.z}`));let s=[],c=[],l=[],u=[],g=[],p=(m,x,w,S,N,M)=>{let G=s.length/3;s.push(...m,...x,...w,...S),c.push(...N,...N,...N,...N),l.push(...M,...M,...M,...M),u.push(0,0,1,0,1,1,0,1),g.push(G,G+1,G+2,G,G+2,G+3)};for(let m of t){let{x,y:w,z:S,colorIndex:N}=m,M=r[N]??[.8,.8,.8,1],G=x,j=-S,R=w;a.has(`${x+1},${w},${S}`)||p([G+1,j,R],[G+1,j-1,R],[G+1,j-1,R+1],[G+1,j,R+1],[1,0,0],M),a.has(`${x-1},${w},${S}`)||p([G,j,R+1],[G,j-1,R+1],[G,j-1,R],[G,j,R],[-1,0,0],M),a.has(`${x},${w},${S+1}`)||p([G,j-1,R],[G+1,j-1,R],[G+1,j-1,R+1],[G,j-1,R+1],[0,-1,0],M),a.has(`${x},${w},${S-1}`)||p([G,j,R+1],[G+1,j,R+1],[G+1,j,R],[G,j,R],[0,1,0],M),a.has(`${x},${w+1},${S}`)||p([G+1,j,R+1],[G+1,j-1,R+1],[G,j-1,R+1],[G,j,R+1],[0,0,1],M),a.has(`${x},${w-1},${S}`)||p([G,j,R],[G,j-1,R],[G+1,j-1,R],[G+1,j,R],[0,0,-1],M)}let f=Lt(s),d=xt(f,i),h=Ot(s,d),I=Ht(g,h.length/3),b={name:"vox_default",diffuseColor:[1,1,1,1],shininess:32,specularIntensity:.4,...i.defaultMaterial};return{name:"VOX_Model",meshes:[{id:"vox_mesh_0",name:"vox_geometry",positions:h,normals:new Float32Array(c),uvs:new Float32Array(u),colors:new Float32Array(l),indices:I,materialName:"vox_default"}],materials:{vox_default:b},animations:[],bounds:jt(f,d)}}static load(t,r={}){if(typeof t!="string")return e.parse(t,r);if(t.startsWith("/")||t.startsWith("./")||t.startsWith("../")||t.startsWith("file://")){let n=t.startsWith("file://")?t.replace("file://",""):t,o=Re.readFileSync(n);return e.parse(o,r)}throw new Error("VOX files must be binary buffers or local file paths")}};function yo(e,t={}){return to.load(e,t)}$();_t();var nA=19789,Os=15677,Hs=16384,js=16640,Vs=16656,Js=16672,Ks=16704,zs=45055,Ys=40960,Ws=40992,qs=16,Xs=17,ro=class e{static is3DS(t){let r=t instanceof Uint8Array?t:new Uint8Array(t);return r.length<6?!1:new DataView(r.buffer,r.byteOffset,r.byteLength).getUint16(0,!0)===nA}static parse(t,r={}){let n=t instanceof Uint8Array?t:new Uint8Array(t),o=new DataView(n.buffer,n.byteOffset,n.byteLength);if(o.getUint16(0,!0)!==nA)throw new Error("Invalid 3DS file: 0x4D4D magic mismatch");let i=[],a={};return e.readChunk(o,0,n.byteLength,i,a),e.buildModel(i,a,r)}static readChunk(t,r,n,o,A,i="Object"){let a=r;for(;a+6<=n&&a+6<=t.byteLength;){let s=t.getUint16(a,!0),c=t.getUint32(a+2,!0);if(c<6)break;let l=a+c,u=a+6,g=Math.min(l,n,t.byteLength);switch(s){case nA:case Os:e.readChunk(t,u,g,o,A,i);break;case Hs:{let p=u;for(;p<g&&t.getUint8(p)!==0;)p++;let f=new Uint8Array(t.buffer,t.byteOffset+u,p-u),d=new TextDecoder("ascii").decode(f)||"Object";e.readChunk(t,p+1,g,o,A,d);break}case js:{let p={name:i,positions:[],indices:[],uvs:[]};e.readTriMesh(t,u,g,p,A),p.positions.length>0&&p.indices.length>0&&o.push(p);break}case zs:e.readMaterial(t,u,g,A);break;default:break}a=l}}static readTriMesh(t,r,n,o,A){let i=r;for(;i+6<=n;){let a=t.getUint16(i,!0),s=t.getUint32(i+2,!0);if(s<6)break;let c=i+s,l=i+6;if(a===Vs){let u=t.getUint16(l,!0),g=l+2;for(let p=0;p<u&&!(g+12>n);p++){let f=t.getFloat32(g,!0),d=t.getFloat32(g+4,!0),h=t.getFloat32(g+8,!0);o.positions.push(f,d,h),g+=12}}else if(a===Js){let u=t.getUint16(l,!0),g=l+2;for(let p=0;p<u&&!(g+8>n);p++){let f=t.getUint16(g,!0),d=t.getUint16(g+2,!0),h=t.getUint16(g+4,!0);o.indices.push(f,d,h),g+=8}}else if(a===Ks){let u=t.getUint16(l,!0),g=l+2;for(let p=0;p<u&&!(g+8>n);p++){let f=t.getFloat32(g,!0),d=t.getFloat32(g+4,!0);o.uvs.push(f,1-d),g+=8}}i=c}}static readMaterial(t,r,n,o){let A=r,i="Material",a=[.8,.8,.8,1];for(;A+6<=n;){let s=t.getUint16(A,!0),c=t.getUint32(A+2,!0);if(c<6)break;let l=A+c,u=A+6;if(s===Ys){let g=u;for(;g<l&&t.getUint8(g)!==0;)g++;let p=new Uint8Array(t.buffer,t.byteOffset+u,g-u);i=new TextDecoder("ascii").decode(p)||i}else if(s===Ws&&u+6<=l){let g=t.getUint16(u,!0);if(g===qs&&u+18<=l){let p=t.getFloat32(u+6,!0),f=t.getFloat32(u+10,!0),d=t.getFloat32(u+14,!0);a=[p,f,d,1]}else if(g===Xs&&u+9<=l){let p=t.getUint8(u+6)/255,f=t.getUint8(u+7)/255,d=t.getUint8(u+8)/255;a=[p,f,d,1]}}A=l}o[i]={name:i,diffuseColor:a,shininess:32,specularIntensity:.5}}static buildModel(t,r,n){let o=Lt(...t.map(a=>a.positions)),A=xt(o,n);return{name:"3DS_Model",meshes:t.map((a,s)=>{let c=Ot(a.positions,A),l=new Float32Array(a.positions.length);pr(c,a.indices,l);let u=a.uvs.length===a.positions.length/3*2?new Float32Array(a.uvs):new Float32Array(a.positions.length/3*2),g=Ht(a.indices,c.length/3);return{id:`3ds_mesh_${s}`,name:a.name,positions:c,normals:l,uvs:u,indices:g,materialName:a.materialName}}),materials:r,animations:[],bounds:jt(o,A)}}static load(t,r={}){if(typeof t!="string")return e.parse(t,r);if(t.startsWith("/")||t.startsWith("./")||t.startsWith("../")||t.startsWith("file://")){let n=t.startsWith("file://")?t.replace("file://",""):t,o=Re.readFileSync(n);return e.parse(o,r)}throw new Error("3DS files must be binary buffers or local file paths")}};function Co(e,t={}){return ro.load(e,t)}$();_t();var oA=class e{static parse(t,r={}){let o=(typeof t=="string"?t:new TextDecoder("utf-8").decode(t instanceof Uint8Array?t:new Uint8Array(t))).split(/\r?\n/),A=0;for(;A<o.length&&(!o[A].trim()||o[A].trim().startsWith("#"));)A++;if(A>=o.length)throw new Error("Empty OFF file");let i=o[A++].trim(),a=!1,s=!1;if(i.startsWith("NOFF")||i.startsWith("STOFF"))a=!0;else if(i.startsWith("COFF"))s=!0;else if(!i.startsWith("OFF"))throw new Error("Invalid OFF header: missing 'OFF'");i=i.replace(/^(?:ST|CO|NO|C|N)?OFF\s*/i,"").trim();let c=0,l=0;if(i.length>0){let N=i.split(/\s+/);c=Number.parseInt(N[0]??"0",10),l=Number.parseInt(N[1]??"0",10)}else for(;A<o.length;){let N=o[A++].trim();if(!N||N.startsWith("#"))continue;let M=N.split(/\s+/);c=Number.parseInt(M[0]??"0",10),l=Number.parseInt(M[1]??"0",10);break}let u=[],g=[],p=[],f=[],d=[],h=0;for(;A<o.length&&h<c;){let N=o[A++].trim();if(!N||N.startsWith("#"))continue;let M=N.split(/\s+/),G=Number.parseFloat(M[0]??"0")||0,j=Number.parseFloat(M[1]??"0")||0,R=Number.parseFloat(M[2]??"0")||0;u.push(G,j,R);let K=3;if(a){let z=Number.parseFloat(M[K]??"0")||0,J=Number.parseFloat(M[K+1]??"0")||0,W=Number.parseFloat(M[K+2]??"0")||0;g.push(z,J,W),K+=3}else g.push(0,0,0);if(s&&M.length>K){let z=(Number.parseFloat(M[K]??"255")||0)/(Number.parseFloat(M[K]??"255")>1?255:1),J=(Number.parseFloat(M[K+1]??"255")||0)/(Number.parseFloat(M[K+1]??"255")>1?255:1),W=(Number.parseFloat(M[K+2]??"255")||0)/(Number.parseFloat(M[K+2]??"255")>1?255:1),X=M.length>K+3&&Number.parseFloat(M[K+3]??"1")||1;p.push(z,J,W,X)}f.push(0,0),h++}let I=0;for(;A<o.length&&I<l;){let N=o[A++].trim();if(!N||N.startsWith("#"))continue;let M=N.split(/\s+/),G=Number.parseInt(M[0]??"0",10);if(G>=3){let j=Number.parseInt(M[1]??"0",10);for(let R=1;R<G-1;R++){let K=Number.parseInt(M[R+1]??"0",10),z=Number.parseInt(M[R+2]??"0",10);d.push(j,K,z)}}I++}(!a||r.smoothNormals)&&pr(u,d,g);let b=Lt(u),D=xt(b,r),m=Ot(u,D),x=Ht(d,m.length/3),w={name:"off_default",diffuseColor:s?[1,1,1,1]:[.8,.8,.85,1],shininess:32,specularIntensity:.5,...r.defaultMaterial};return{name:"OFF_Model",meshes:[{id:"off_mesh_0",name:"off_geometry",positions:m,normals:new Float32Array(g),uvs:new Float32Array(f),colors:s?new Float32Array(p):void 0,indices:x,materialName:"off_default"}],materials:{off_default:w},animations:[],bounds:jt(b,D)}}static load(t,r={}){if(typeof t!="string")return e.parse(t,r);if(t.startsWith("/")||t.startsWith("./")||t.startsWith("../")||t.startsWith("file://")){let n=t.startsWith("file://")?t.replace("file://",""):t,o=Re.readFileSync(n,"utf-8");return e.parse(o,r)}return e.parse(t,r)}};function Qo(e,t={}){return oA.load(e,t)}$();var ga=`
144
144
  struct CameraUniforms {
145
145
  viewMatrix : mat4x4<f32>,
146
146
  projMatrix : mat4x4<f32>,
@@ -231,7 +231,7 @@ fn fs_dof(in: VSOut) -> @location(0) vec4<f32> {
231
231
 
232
232
  return accumColor / totalWeight;
233
233
  }
234
- `;$();var Mc=`
234
+ `;$();var Zs=`
235
235
  struct BloomUniforms {
236
236
  texel : vec2<f32>, // 1 / source size
237
237
  threshold : f32,
@@ -348,7 +348,7 @@ fn fs_composite(in : VsOut) -> @location(0) vec4<f32> {
348
348
  }
349
349
  return vec4<f32>(linearToSrgb(sum / a) * a, a);
350
350
  }
351
- `,EA="rgba16float",ko=class{device;layout;prefilterPipe;downPipe;upPipe;compositePipes=new Map;module;pipelineLayout;sampler;mips=[];mipKey="";placeholder;uniformPool=new We(48,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);constructor(t){this.device=t,this.module=t.createShaderModule({label:"bloom.wgsl",code:Mc}),this.layout=t.createBindGroupLayout({label:"BloomLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]}),this.pipelineLayout=t.createPipelineLayout({bindGroupLayouts:[this.layout]});let r=(n,o)=>t.createRenderPipeline({label:`Bloom:${n}`,layout:this.pipelineLayout,vertex:{module:this.module,entryPoint:"vs"},fragment:{module:this.module,entryPoint:n,targets:[{format:EA,...o&&{blend:{color:{srcFactor:"one",dstFactor:"one",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one",operation:"add"}}}}]},primitive:{topology:"triangle-list"}});this.prefilterPipe=r("fs_prefilter",!1),this.downPipe=r("fs_down",!1),this.upPipe=r("fs_up",!0),this.sampler=t.createSampler({label:"BloomSampler",magFilter:"linear",minFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}),this.placeholder=t.createTexture({size:{width:1,height:1},format:EA,usage:GPUTextureUsage.TEXTURE_BINDING})}compositePipe(t){let r=this.compositePipes.get(t);return r||(r=this.device.createRenderPipeline({label:"Bloom:composite",layout:this.pipelineLayout,vertex:{module:this.module,entryPoint:"vs"},fragment:{module:this.module,entryPoint:"fs_composite",targets:[{format:t}]},primitive:{topology:"triangle-list"}}),this.compositePipes.set(t,r)),r}ensureMips(t,r,n){let o=`${t}x${r}x${n}`;if(o===this.mipKey)return;for(let a of this.mips)a.destroy();this.mips=[];let A=t,i=r;for(let a=0;a<n&&(A=Math.max(1,Math.floor(A/2)),i=Math.max(1,Math.floor(i/2)),this.mips.push(this.device.createTexture({label:`BloomMip${a}`,size:{width:A,height:i},format:EA,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),!(A===1&&i===1));a++);this.mipKey=o}uniforms(t,r,n){let o=new Float32Array([t,r,n.threshold,n.knee,n.intensity,n.mode,0,0,n.tint[0],n.tint[1],n.tint[2],1]);return this.uniformPool.getBuffer(this.device,o)}pass(t,r,n,o,A,i,a){let s=this.device.createBindGroup({layout:this.layout,entries:[{binding:0,resource:{buffer:i}},{binding:1,resource:this.sampler},{binding:2,resource:o.createView()},{binding:3,resource:A.createView()}]}),c=t.beginRenderPass({colorAttachments:[{view:n,loadOp:a,storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});c.setPipeline(r),c.setBindGroup(0,s),c.draw(3),c.end()}apply(t,r,n,o={},A){let i=!A,a=f=>f<=.04045?f/12.92:((f+.055)/1.055)**2.4,s=o.threshold??(i?.85:2.5),c={intensity:o.intensity??.2,threshold:i?a(s):s,knee:o.knee??.4,tint:o.tint??[1,1,1],mode:i?1:0},l=Math.max(1,Math.min(8,Math.round(o.radius??6)));this.ensureMips(r.width,r.height,l);let u=this.mips,g=(f,d)=>this.uniforms(1/f,1/d,c),p=A??r;this.pass(t,this.prefilterPipe,u[0].createView(),p,this.placeholder,g(p.width,p.height),"clear");for(let f=1;f<u.length;f++){let d=u[f-1];this.pass(t,this.downPipe,u[f].createView(),d,this.placeholder,g(d.width,d.height),"clear")}for(let f=u.length-1;f>0;f--){let d=u[f];this.pass(t,this.upPipe,u[f-1].createView(),d,this.placeholder,g(d.width,d.height),"load")}this.pass(t,this.compositePipe(n.format),n.createView(),u[0],r,g(u[0].width,u[0].height),"clear")}resetPools(){this.uniformPool.reset()}destroy(){for(let t of this.mips)t.destroy();this.placeholder.destroy(),this.uniformPool.destroy()}};$();$();var Ir=`
351
+ `,AA="rgba16float",xo=class{device;layout;prefilterPipe;downPipe;upPipe;compositePipes=new Map;module;pipelineLayout;sampler;mips=[];mipKey="";placeholder;uniformPool=new We(48,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);constructor(t){this.device=t,this.module=t.createShaderModule({label:"bloom.wgsl",code:Zs}),this.layout=t.createBindGroupLayout({label:"BloomLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]}),this.pipelineLayout=t.createPipelineLayout({bindGroupLayouts:[this.layout]});let r=(n,o)=>t.createRenderPipeline({label:`Bloom:${n}`,layout:this.pipelineLayout,vertex:{module:this.module,entryPoint:"vs"},fragment:{module:this.module,entryPoint:n,targets:[{format:AA,...o&&{blend:{color:{srcFactor:"one",dstFactor:"one",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one",operation:"add"}}}}]},primitive:{topology:"triangle-list"}});this.prefilterPipe=r("fs_prefilter",!1),this.downPipe=r("fs_down",!1),this.upPipe=r("fs_up",!0),this.sampler=t.createSampler({label:"BloomSampler",magFilter:"linear",minFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}),this.placeholder=t.createTexture({size:{width:1,height:1},format:AA,usage:GPUTextureUsage.TEXTURE_BINDING})}compositePipe(t){let r=this.compositePipes.get(t);return r||(r=this.device.createRenderPipeline({label:"Bloom:composite",layout:this.pipelineLayout,vertex:{module:this.module,entryPoint:"vs"},fragment:{module:this.module,entryPoint:"fs_composite",targets:[{format:t}]},primitive:{topology:"triangle-list"}}),this.compositePipes.set(t,r)),r}ensureMips(t,r,n){let o=`${t}x${r}x${n}`;if(o===this.mipKey)return;for(let a of this.mips)a.destroy();this.mips=[];let A=t,i=r;for(let a=0;a<n&&(A=Math.max(1,Math.floor(A/2)),i=Math.max(1,Math.floor(i/2)),this.mips.push(this.device.createTexture({label:`BloomMip${a}`,size:{width:A,height:i},format:AA,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),!(A===1&&i===1));a++);this.mipKey=o}uniforms(t,r,n){let o=new Float32Array([t,r,n.threshold,n.knee,n.intensity,n.mode,0,0,n.tint[0],n.tint[1],n.tint[2],1]);return this.uniformPool.getBuffer(this.device,o)}pass(t,r,n,o,A,i,a){let s=this.device.createBindGroup({layout:this.layout,entries:[{binding:0,resource:{buffer:i}},{binding:1,resource:this.sampler},{binding:2,resource:o.createView()},{binding:3,resource:A.createView()}]}),c=t.beginRenderPass({colorAttachments:[{view:n,loadOp:a,storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});c.setPipeline(r),c.setBindGroup(0,s),c.draw(3),c.end()}apply(t,r,n,o={},A){let i=!A,a=f=>f<=.04045?f/12.92:((f+.055)/1.055)**2.4,s=o.threshold??(i?.85:2.5),c={intensity:o.intensity??.2,threshold:i?a(s):s,knee:o.knee??.4,tint:o.tint??[1,1,1],mode:i?1:0},l=Math.max(1,Math.min(8,Math.round(o.radius??6)));this.ensureMips(r.width,r.height,l);let u=this.mips,g=(f,d)=>this.uniforms(1/f,1/d,c),p=A??r;this.pass(t,this.prefilterPipe,u[0].createView(),p,this.placeholder,g(p.width,p.height),"clear");for(let f=1;f<u.length;f++){let d=u[f-1];this.pass(t,this.downPipe,u[f].createView(),d,this.placeholder,g(d.width,d.height),"clear")}for(let f=u.length-1;f>0;f--){let d=u[f];this.pass(t,this.upPipe,u[f-1].createView(),d,this.placeholder,g(d.width,d.height),"load")}this.pass(t,this.compositePipe(n.format),n.createView(),u[0],r,g(u[0].width,u[0].height),"clear")}resetPools(){this.uniformPool.reset()}destroy(){for(let t of this.mips)t.destroy();this.placeholder.destroy(),this.uniformPool.destroy()}};$();$();var dr=`
352
352
  struct CameraUniforms {
353
353
  viewMatrix : mat4x4<f32>,
354
354
  projMatrix : mat4x4<f32>,
@@ -776,12 +776,12 @@ fn shadeSurfaceFull(worldPos: vec3<f32>, worldNormal: vec3<f32>, baseColor: vec3
776
776
  fn shadeSurface(worldPos: vec3<f32>, worldNormal: vec3<f32>, baseColor: vec3<f32>, material: vec4<f32>, pbr: vec4<f32>, emissive: vec4<f32>) -> vec3<f32> {
777
777
  return shadeSurfaceFull(worldPos, worldNormal, baseColor, material, pbr, emissive).display;
778
778
  }
779
- `,Br=`
779
+ `,hr=`
780
780
  @group(3) @binding(0) var<uniform> lights : LightsUniforms;
781
781
  @group(3) @binding(1) var shadowMap : texture_depth_2d_array;
782
782
  @group(3) @binding(2) var shadowSampler : sampler_comparison;
783
783
  @group(3) @binding(3) var<storage, read> directLights : array<DirectLight>;
784
- `;$();var Ua="rgba16float",_c="rgba16float";function Bt(e,t){let r=n=>e.createRenderPipeline({label:`${t.label}${n?"Mrt":"Single"}`,layout:t.layout,vertex:t.vertex,fragment:{module:t.module,entryPoint:n?"fs_mrt":"fs_single",targets:[{format:t.format,blend:Co},...n?[{format:Ua}]:[]]},depthStencil:t.depthStencil,primitive:t.primitive,multisample:t.multisample});return{single:r(!1),mrt:r(!0)}}var gt=class{constructor(t,r){this.device=t;this.base=r}device;base;cache=new Map;get(t){let r=this.cache.get(t);if(!r){let n=this.base;r=this.device.createRenderPipeline({label:`${n.label}${t?"MrtBloom":"Bloom"}`,layout:n.layout,vertex:n.vertex,fragment:{module:n.module,entryPoint:t?"fs_mrt_bloom":"fs_single_bloom",targets:[{format:n.format,blend:Co},...t?[{format:Ua}]:[],{format:_c,blend:Co}]},depthStencil:n.depthStencil,primitive:n.primitive,multisample:n.multisample}),this.cache.set(t,r)}return r}};function No(e,t,r,n){let o=r??t,A=n??[1,1,1,1];for(let i=0;i<16;i++)e[i]=t[i]??0,e[16+i]=o[i]??0;e[32]=A[0],e[33]=A[1],e[34]=A[2],e[35]=A[3]}var Sc=`
784
+ `;$();var pa="rgba16float",$s="rgba16float";function mt(e,t){let r=n=>e.createRenderPipeline({label:`${t.label}${n?"Mrt":"Single"}`,layout:t.layout,vertex:t.vertex,fragment:{module:t.module,entryPoint:n?"fs_mrt":"fs_single",targets:[{format:t.format,blend:lo},...n?[{format:pa}]:[]]},depthStencil:t.depthStencil,primitive:t.primitive,multisample:t.multisample});return{single:r(!1),mrt:r(!0)}}var lt=class{constructor(t,r){this.device=t;this.base=r}device;base;cache=new Map;get(t){let r=this.cache.get(t);if(!r){let n=this.base;r=this.device.createRenderPipeline({label:`${n.label}${t?"MrtBloom":"Bloom"}`,layout:n.layout,vertex:n.vertex,fragment:{module:n.module,entryPoint:t?"fs_mrt_bloom":"fs_single_bloom",targets:[{format:n.format,blend:lo},...t?[{format:pa}]:[],{format:$s,blend:lo}]},depthStencil:n.depthStencil,primitive:n.primitive,multisample:n.multisample}),this.cache.set(t,r)}return r}};function wo(e,t,r,n){let o=r??t,A=n??[1,1,1,1];for(let i=0;i<16;i++)e[i]=t[i]??0,e[16+i]=o[i]??0;e[32]=A[0],e[33]=A[1],e[34]=A[2],e[35]=A[3]}var ec=`
785
785
  struct BlurUniforms {
786
786
  texelStep : vec2<f32>,
787
787
  radius : f32,
@@ -825,8 +825,8 @@ fn fs(in : VsOut) -> @location(0) vec4<f32> {
825
825
  }
826
826
  return col / max(totalW, 0.0001);
827
827
  }
828
- `,Pc=`
829
- ${Ir}
828
+ `,tc=`
829
+ ${dr}
830
830
 
831
831
  struct FloorUniforms {
832
832
  params0 : vec4<f32>, // x = floorY, y = reflectivity, z = roughness, w = fadeDistance
@@ -838,7 +838,7 @@ struct FloorUniforms {
838
838
  @group(1) @binding(0) var<uniform> floorU : FloorUniforms;
839
839
  @group(2) @binding(0) var reflectionTexture : texture_2d<f32>;
840
840
  @group(2) @binding(1) var reflectionSampler : sampler;
841
- ${Br}
841
+ ${hr}
842
842
 
843
843
  struct VsOut {
844
844
  @builtin(position) pos : vec4<f32>,
@@ -1006,7 +1006,7 @@ fn fs_mrt_bloom(in: VsOut) -> FsOutputMrtBloom {
1006
1006
  out.depth = s.depth;
1007
1007
  return out;
1008
1008
  }
1009
- `,To=class{constructor(t,r,n,o,A,i="depth24plus"){this.device=t;let a=t.createShaderModule({label:"FloorBlurShader",code:Sc});this.blurBindGroupLayout=t.createBindGroupLayout({label:"FloorBlurBindGroupLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]}),this.blurPipeline=t.createRenderPipeline({label:"FloorBlurPipeline",layout:t.createPipelineLayout({bindGroupLayouts:[this.blurBindGroupLayout]}),vertex:{module:a,entryPoint:"vs"},fragment:{module:a,entryPoint:"fs",targets:[{format:r}]},primitive:{topology:"triangle-list"}}),this.blurSampler=t.createSampler({label:"FloorBlurSampler",magFilter:"linear",minFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}),this.blurPool=new We(16,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.floorLayout=t.createBindGroupLayout({label:"FloorUniformLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.reflectionLayout=t.createBindGroupLayout({label:"FloorReflectionLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),this.floorSampler=t.createSampler({label:"FloorReflectionSampler",magFilter:"linear",minFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}),this.floorPool=new We(64,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);let s=t.createShaderModule({label:"FloorPlaneShader",code:Pc}),l={label:"FloorPlanePipeline",layout:t.createPipelineLayout({label:"FloorPlanePipelineLayout",bindGroupLayouts:[o,this.floorLayout,this.reflectionLayout,A]}),vertex:{module:s,entryPoint:"vs_floor"},module:s,format:r,depthStencil:{format:i,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"},multisample:{count:n}},{single:u,mrt:g}=Bt(t,l);this.pipelineSingle=u,this.pipelineMrt=g,this.bloomVariants=new gt(t,l)}device;blurPipeline;blurBindGroupLayout;blurSampler;blurPool;floorLayout;reflectionLayout;floorSampler;floorPool;pipelineSingle;pipelineMrt;bloomVariants;applyBlur(t,r,n,o,A,i,a){let s=a*24,c=a*130;{let l=new Float32Array([1/A,0,s,0]),u=this.blurPool.getBuffer(this.device,l),g=this.device.createBindGroup({layout:this.blurBindGroupLayout,entries:[{binding:0,resource:{buffer:u}},{binding:1,resource:this.blurSampler},{binding:2,resource:r.createView()}]}),p=t.beginRenderPass({colorAttachments:[{view:n.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});p.setPipeline(this.blurPipeline),p.setBindGroup(0,g),p.draw(3),p.end()}{let l=new Float32Array([0,1/i,c,0]),u=this.blurPool.getBuffer(this.device,l),g=this.device.createBindGroup({layout:this.blurBindGroupLayout,entries:[{binding:0,resource:{buffer:u}},{binding:1,resource:this.blurSampler},{binding:2,resource:n.createView()}]}),p=t.beginRenderPass({colorAttachments:[{view:o.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});p.setPipeline(this.blurPipeline),p.setBindGroup(0,g),p.draw(3),p.end()}}draw(t,r,n,o,A,i=!1,a=!1){let s=jr(A.color??"#08070a"),c=new Float32Array([A.y,A.reflectivity??.35,A.roughness??.35,A.fadeDistance??900,A.opacity??1,0,0,0,s[0],s[1],s[2],1,0,0,0,0]),l=this.floorPool.getBuffer(this.device,c),u=this.device.createBindGroup({layout:this.floorLayout,entries:[{binding:0,resource:{buffer:l}}]}),g=this.device.createBindGroup({layout:this.reflectionLayout,entries:[{binding:0,resource:o.createView()},{binding:1,resource:this.floorSampler}]});t.setPipeline(a?this.bloomVariants.get(i):i?this.pipelineMrt:this.pipelineSingle),t.setBindGroup(0,r),t.setBindGroup(1,u),t.setBindGroup(2,g),t.setBindGroup(3,n),t.draw(3)}destroy(){this.blurPool.destroy(),this.floorPool.destroy()}};$();$();function Gt(e,t){return{ok:!1,error:{code:e,expected:"valid compressed data or supported compression scheme",hint:{"decompression-failed":"Check catalog row compression field and asset binary consistency; re-run asset import.","codec-init-failed":"Uncompressed assets are still loadable. Verify the codec module is installed correctly.","ktx2-parse-failed":"Check that the KTX2 file is valid and not truncated. Re-import the texture asset.","ktx2-unsupported-scheme":"This supercompression scheme requires a future codec upgrade. Check the codec README Loop 2 extension points.","transcode-failed":"Basis transcode failed for this source/target format pair. Verify the KTX2 payload is a valid Basis (ETC1S / UASTC) texture and re-import the asset.","ktx2-encode-failed":"Basis encode failed for this compression mode. Verify the source image dimensions / pixel format match the mode (LDR rgba8 vs HDR rgba16float) and retry the asset import."}[e],detail:t}}}var ka=new URL("../pkg/basis_transcoder.mjs",import.meta.url),Na=new URL("../pkg/basis_transcoder.wasm",import.meta.url);function Rt(e,t){let r=globalThis.__forgeaxAssetLoadTrace;if(r!==void 0)try{r({phase:`codec.${e}`,at:Date.now(),...t===void 0?{}:{detail:t}})}catch{}}var Gc=async()=>{Rt("basis.glue.import.start",{url:ka.href});let e=(await import(ka.href)).default;Rt("basis.glue.import.complete"),Rt("basis.wasm.factory.start",{url:Na.href});let t=await e({locateFile:()=>Na.href});return Rt("basis.wasm.factory.complete"),Rt("basis.initialize.start"),t.initializeBasis(),Rt("basis.initialize.complete"),t},Rc=Gc,co=null;function Fc(){return co!==null||(Rt("basis.init.start"),co=Rc().catch(e=>{throw co=null,new Error("codec-init-failed",{cause:e})})),co}function Uc(e,t){let r=e.transcoder_texture_format;switch(t){case"bc7-rgba-unorm":case"bc7-rgba-unorm-srgb":return r.cTFBC7_RGBA.value;case"bc5-rg-unorm":return r.cTFBC5_RG.value;case"bc4-r-unorm":return r.cTFBC4_R.value;case"bc6h-rgb-ufloat":return r.cTFBC6H.value;case"etc2-rgba8unorm":case"etc2-rgba8unorm-srgb":return r.cTFETC2_RGBA.value;case"astc-4x4-unorm":case"astc-4x4-unorm-srgb":return r.cTFASTC_4x4_RGBA.value;case"rgba16float":return r.cTFRGBA_HALF.value;case"rgba8unorm":case"rgba8unorm-srgb":case"rg8unorm":case"r8unorm":return r.cTFRGBA32.value;default:return null}}async function Ta(e,t){Rt("ktx2.transcode.start",{targetFormat:t});let r;try{r=await Fc()}catch{return Gt("codec-init-failed",{stage:"dynamic-import-basis-transcoder"})}let n=Uc(r,t);if(n===null)return Gt("transcode-failed",{sourceFormat:`dfd-model-${e.dfd?.colorModel??"unknown"}`,targetFormat:t});let o=new r.KTX2File(e.rawBytes);try{if(Rt("ktx2.file.start"),!o.isValid())return Gt("transcode-failed",{sourceFormat:"invalid-ktx2-file",targetFormat:t});if(o.startTranscoding()===0)return Gt("transcode-failed",{sourceFormat:"start-transcoding-failed",targetFormat:t});let A=o.getLevels();Rt("ktx2.file.ready",{levels:A});let i=[];for(let a=0;a<A;a++){let s=o.getImageLevelInfo(a,0,0),c=o.getImageTranscodedSizeInBytes(a,0,0,n),l=new Uint8Array(c);if(o.transcodeImage(l,a,0,0,n,0,-1,-1)===0)return Gt("transcode-failed",{sourceFormat:`dfd-model-${e.dfd?.colorModel??"unknown"}-level-${a}`,targetFormat:t});Rt("ktx2.mip.complete",{level:a}),i.push({level:a,width:s.origWidth,height:s.origHeight,data:l})}return{ok:!0,value:{format:t,width:o.getWidth(),height:o.getHeight(),mips:i}}}finally{o.close()}}var Lo=new Uint8Array([171,75,84,88,32,50,48,187,13,10,26,10]);var kc=new TextDecoder;function Ye(e,t){return new DataView(e.buffer,e.byteOffset+t,4).getUint32(0,!0)}function lo(e,t){return Number(new DataView(e.buffer,e.byteOffset+t,8).getBigUint64(0,!0))}function br(e,t,r,n){if(t+r>e.length)throw new Error(`KTX2 parse ${n}: OOB (offset=${t}, length=${r}, fileSize=${e.length})`)}function Nc(e,t,r){br(e,t,4,"DFD-totalSize");let n=Ye(e,t);br(e,t,n,"DFD-block");let o=t+4,A=Ye(e,o),i=A&131071,a=A>>>17&32767,s=Ye(e,o+4),c=s&65535,l=s>>>16&65535,u=Ye(e,o+8),g=u&255,p=u>>>8&255,f=u>>>16&255,d=u>>>24&255,h=Ye(e,o+12),I=h&255,b=h>>>8&255,Q=h>>>16&255,m=h>>>24&255,w=Ye(e,o+16),v=Ye(e,o+20),S=[w&255,w>>>8&255,w>>>16&255,w>>>24&255,v&255,v>>>8&255,v>>>16&255,v>>>24&255],N=o+24,_=(l-24)/16,G=[];for(let j=0;j<_;j++){let R=N+j*16,K=Ye(e,R),z=Ye(e,R+4),J=Ye(e,R+8),W=Ye(e,R+12);G.push({qualifiers:K&15,channelType:K>>>4&255,bitLength:(K>>>12&4095)+1,bitOffset:K>>>24&255,samplePosition:[z&255,z>>>8&255,z>>>16&255,z>>>24&255],sampleLower:J,sampleUpper:W})}return{totalSize:n,vendorId:i,descriptorType:a,versionNumber:c,descriptorBlockSize:l,colorModel:g,colorPrimaries:p,transferFunction:f,flags:d,texelBlockDimension:[I,b,Q,m],bytesPlane:S,samples:G}}function Tc(e,t,r){if(r===0)return[];let n=[],o=t,A=t+r;for(;o<A;){br(e,o,4,"KV-keyAndValueByteLength");let i=Ye(e,o);o+=4,br(e,o,i,"KV-payload");let a=e.slice(o,o+i),s=a.indexOf(0);s===-1&&(s=a.length);let c=kc.decode(a.slice(0,s)),l=a.slice(s+1);n.push({key:c,value:l}),o+=i;let u=o&3;u!==0&&(o+=4-u)}return n}async function La(e){try{if(e.length<12)return Gt("ktx2-parse-failed",{reason:"truncated-identifier: file shorter than 12-byte KTX2 magic"});for(let l=0;l<12;l++){let u=Lo[l];if(u===void 0||e[l]!==u)return Gt("ktx2-parse-failed",{reason:"invalid-identifier: not a KTX2 2.0 file"})}if(e.length<80)return Gt("ktx2-parse-failed",{reason:"truncated-header: file too short for KTX2 header + index (min 80 bytes)"});let t={vkFormat:Ye(e,12),typeSize:Ye(e,16),pixelWidth:Ye(e,20),pixelHeight:Ye(e,24),pixelDepth:Ye(e,28),layerCount:Ye(e,32),faceCount:Ye(e,36),levelCount:Ye(e,40),supercompressionScheme:Ye(e,44)},r={dfdByteOffset:Ye(e,48),dfdByteLength:Ye(e,52),kvdByteOffset:Ye(e,56),kvdByteLength:Ye(e,60),sgdByteOffset:lo(e,64),sgdByteLength:lo(e,72)},n=t.supercompressionScheme;if(n!==0&&n!==1&&n!==2)return Gt("ktx2-unsupported-scheme",{scheme:n});let o=Math.max(1,t.levelCount),A=80;br(e,A,o*24,"level-index");let i=[];for(let l=0;l<o;l++){let u=A+l*24,g=lo(e,u),p=lo(e,u+8),f=lo(e,u+16);if(g+p>e.length)return Gt("ktx2-parse-failed",{reason:`level-index-OOB: level ${l} byteOffset=${g} byteLength=${p} exceeds file size=${e.length}`});i.push({byteOffset:g,byteLength:p,uncompressedByteLength:f})}let a=null;r.dfdByteLength>0&&(br(e,r.dfdByteOffset,r.dfdByteLength,"DFD"),a=Nc(e,r.dfdByteOffset,r.dfdByteLength));let s=[];r.kvdByteLength>0&&(br(e,r.kvdByteOffset,r.kvdByteLength,"KVD"),s=Tc(e,r.kvdByteOffset,r.kvdByteLength));let c=null;return r.sgdByteLength>0&&(br(e,r.sgdByteOffset,r.sgdByteLength,"SGD"),c=e.slice(r.sgdByteOffset,r.sgdByteOffset+r.sgdByteLength)),{ok:!0,value:{header:t,index:r,levelIndex:i,dfd:a,kvEntries:s,sgd:c,rawBytes:e}}}catch(t){let r=t instanceof Error?t.message:String(t);return Gt("ktx2-parse-failed",{reason:`internal: ${r}`})}}function Oa(e){return e.length>=Lo.length&&Lo.every((t,r)=>e[r]===t)}async function Ha(e){let t=await La(e);if(!t.ok)throw new Error(`KTX2 parse failed: ${t.error.code}`);let{pixelDepth:r,layerCount:n,faceCount:o}=t.value.header;if(r>1||n>1||o!==1)throw new Error("Only 2D KTX2 textures are supported");let A=await Ta(t.value,"rgba8unorm");if(!A.ok)throw new Error(`KTX2 transcode failed: ${A.error.code}`);let{width:i,height:a,mips:s}=A.value;if(!s.length||s.some((c,l)=>c.level!==l||c.width!==Math.max(1,i>>l)||c.height!==Math.max(1,a>>l)||c.data.length!==c.width*c.height*4))throw new Error("KTX2 transcoder returned an invalid mip chain");return{width:i,height:a,levels:s.map(c=>c.data)}}$();$();$();function en(e,t){return`
1009
+ `,vo=class{constructor(t,r,n,o,A,i="depth24plus"){this.device=t;let a=t.createShaderModule({label:"FloorBlurShader",code:ec});this.blurBindGroupLayout=t.createBindGroupLayout({label:"FloorBlurBindGroupLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]}),this.blurPipeline=t.createRenderPipeline({label:"FloorBlurPipeline",layout:t.createPipelineLayout({bindGroupLayouts:[this.blurBindGroupLayout]}),vertex:{module:a,entryPoint:"vs"},fragment:{module:a,entryPoint:"fs",targets:[{format:r}]},primitive:{topology:"triangle-list"}}),this.blurSampler=t.createSampler({label:"FloorBlurSampler",magFilter:"linear",minFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}),this.blurPool=new We(16,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.floorLayout=t.createBindGroupLayout({label:"FloorUniformLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.reflectionLayout=t.createBindGroupLayout({label:"FloorReflectionLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),this.floorSampler=t.createSampler({label:"FloorReflectionSampler",magFilter:"linear",minFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}),this.floorPool=new We(64,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);let s=t.createShaderModule({label:"FloorPlaneShader",code:tc}),l={label:"FloorPlanePipeline",layout:t.createPipelineLayout({label:"FloorPlanePipelineLayout",bindGroupLayouts:[o,this.floorLayout,this.reflectionLayout,A]}),vertex:{module:s,entryPoint:"vs_floor"},module:s,format:r,depthStencil:{format:i,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"},multisample:{count:n}},{single:u,mrt:g}=mt(t,l);this.pipelineSingle=u,this.pipelineMrt=g,this.bloomVariants=new lt(t,l)}device;blurPipeline;blurBindGroupLayout;blurSampler;blurPool;floorLayout;reflectionLayout;floorSampler;floorPool;pipelineSingle;pipelineMrt;bloomVariants;applyBlur(t,r,n,o,A,i,a){let s=a*24,c=a*130;{let l=new Float32Array([1/A,0,s,0]),u=this.blurPool.getBuffer(this.device,l),g=this.device.createBindGroup({layout:this.blurBindGroupLayout,entries:[{binding:0,resource:{buffer:u}},{binding:1,resource:this.blurSampler},{binding:2,resource:r.createView()}]}),p=t.beginRenderPass({colorAttachments:[{view:n.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});p.setPipeline(this.blurPipeline),p.setBindGroup(0,g),p.draw(3),p.end()}{let l=new Float32Array([0,1/i,c,0]),u=this.blurPool.getBuffer(this.device,l),g=this.device.createBindGroup({layout:this.blurBindGroupLayout,entries:[{binding:0,resource:{buffer:u}},{binding:1,resource:this.blurSampler},{binding:2,resource:n.createView()}]}),p=t.beginRenderPass({colorAttachments:[{view:o.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});p.setPipeline(this.blurPipeline),p.setBindGroup(0,g),p.draw(3),p.end()}}draw(t,r,n,o,A,i=!1,a=!1){let s=Lr(A.color??"#08070a"),c=new Float32Array([A.y,A.reflectivity??.35,A.roughness??.35,A.fadeDistance??900,A.opacity??1,0,0,0,s[0],s[1],s[2],1,0,0,0,0]),l=this.floorPool.getBuffer(this.device,c),u=this.device.createBindGroup({layout:this.floorLayout,entries:[{binding:0,resource:{buffer:l}}]}),g=this.device.createBindGroup({layout:this.reflectionLayout,entries:[{binding:0,resource:o.createView()},{binding:1,resource:this.floorSampler}]});t.setPipeline(a?this.bloomVariants.get(i):i?this.pipelineMrt:this.pipelineSingle),t.setBindGroup(0,r),t.setBindGroup(1,u),t.setBindGroup(2,g),t.setBindGroup(3,n),t.draw(3)}destroy(){this.blurPool.destroy(),this.floorPool.destroy()}};$();$();function Mt(e,t){return{ok:!1,error:{code:e,expected:"valid compressed data or supported compression scheme",hint:{"decompression-failed":"Check catalog row compression field and asset binary consistency; re-run asset import.","codec-init-failed":"Uncompressed assets are still loadable. Verify the codec module is installed correctly.","ktx2-parse-failed":"Check that the KTX2 file is valid and not truncated. Re-import the texture asset.","ktx2-unsupported-scheme":"This supercompression scheme requires a future codec upgrade. Check the codec README Loop 2 extension points.","transcode-failed":"Basis transcode failed for this source/target format pair. Verify the KTX2 payload is a valid Basis (ETC1S / UASTC) texture and re-import the asset.","ktx2-encode-failed":"Basis encode failed for this compression mode. Verify the source image dimensions / pixel format match the mode (LDR rgba8 vs HDR rgba16float) and retry the asset import."}[e],detail:t}}}var fa=new URL("../pkg/basis_transcoder.mjs",import.meta.url),da=new URL("../pkg/basis_transcoder.wasm",import.meta.url);function St(e,t){let r=globalThis.__forgeaxAssetLoadTrace;if(r!==void 0)try{r({phase:`codec.${e}`,at:Date.now(),...t===void 0?{}:{detail:t}})}catch{}}var rc=async()=>{St("basis.glue.import.start",{url:fa.href});let e=(await import(fa.href)).default;St("basis.glue.import.complete"),St("basis.wasm.factory.start",{url:da.href});let t=await e({locateFile:()=>da.href});return St("basis.wasm.factory.complete"),St("basis.initialize.start"),t.initializeBasis(),St("basis.initialize.complete"),t},nc=rc,no=null;function oc(){return no!==null||(St("basis.init.start"),no=nc().catch(e=>{throw no=null,new Error("codec-init-failed",{cause:e})})),no}function Ac(e,t){let r=e.transcoder_texture_format;switch(t){case"bc7-rgba-unorm":case"bc7-rgba-unorm-srgb":return r.cTFBC7_RGBA.value;case"bc5-rg-unorm":return r.cTFBC5_RG.value;case"bc4-r-unorm":return r.cTFBC4_R.value;case"bc6h-rgb-ufloat":return r.cTFBC6H.value;case"etc2-rgba8unorm":case"etc2-rgba8unorm-srgb":return r.cTFETC2_RGBA.value;case"astc-4x4-unorm":case"astc-4x4-unorm-srgb":return r.cTFASTC_4x4_RGBA.value;case"rgba16float":return r.cTFRGBA_HALF.value;case"rgba8unorm":case"rgba8unorm-srgb":case"rg8unorm":case"r8unorm":return r.cTFRGBA32.value;default:return null}}async function ha(e,t){St("ktx2.transcode.start",{targetFormat:t});let r;try{r=await oc()}catch{return Mt("codec-init-failed",{stage:"dynamic-import-basis-transcoder"})}let n=Ac(r,t);if(n===null)return Mt("transcode-failed",{sourceFormat:`dfd-model-${e.dfd?.colorModel??"unknown"}`,targetFormat:t});let o=new r.KTX2File(e.rawBytes);try{if(St("ktx2.file.start"),!o.isValid())return Mt("transcode-failed",{sourceFormat:"invalid-ktx2-file",targetFormat:t});if(o.startTranscoding()===0)return Mt("transcode-failed",{sourceFormat:"start-transcoding-failed",targetFormat:t});let A=o.getLevels();St("ktx2.file.ready",{levels:A});let i=[];for(let a=0;a<A;a++){let s=o.getImageLevelInfo(a,0,0),c=o.getImageTranscodedSizeInBytes(a,0,0,n),l=new Uint8Array(c);if(o.transcodeImage(l,a,0,0,n,0,-1,-1)===0)return Mt("transcode-failed",{sourceFormat:`dfd-model-${e.dfd?.colorModel??"unknown"}-level-${a}`,targetFormat:t});St("ktx2.mip.complete",{level:a}),i.push({level:a,width:s.origWidth,height:s.origHeight,data:l})}return{ok:!0,value:{format:t,width:o.getWidth(),height:o.getHeight(),mips:i}}}finally{o.close()}}var Do=new Uint8Array([171,75,84,88,32,50,48,187,13,10,26,10]);var ic=new TextDecoder;function Ye(e,t){return new DataView(e.buffer,e.byteOffset+t,4).getUint32(0,!0)}function oo(e,t){return Number(new DataView(e.buffer,e.byteOffset+t,8).getBigUint64(0,!0))}function mr(e,t,r,n){if(t+r>e.length)throw new Error(`KTX2 parse ${n}: OOB (offset=${t}, length=${r}, fileSize=${e.length})`)}function ac(e,t,r){mr(e,t,4,"DFD-totalSize");let n=Ye(e,t);mr(e,t,n,"DFD-block");let o=t+4,A=Ye(e,o),i=A&131071,a=A>>>17&32767,s=Ye(e,o+4),c=s&65535,l=s>>>16&65535,u=Ye(e,o+8),g=u&255,p=u>>>8&255,f=u>>>16&255,d=u>>>24&255,h=Ye(e,o+12),I=h&255,b=h>>>8&255,D=h>>>16&255,m=h>>>24&255,x=Ye(e,o+16),w=Ye(e,o+20),S=[x&255,x>>>8&255,x>>>16&255,x>>>24&255,w&255,w>>>8&255,w>>>16&255,w>>>24&255],N=o+24,M=(l-24)/16,G=[];for(let j=0;j<M;j++){let R=N+j*16,K=Ye(e,R),z=Ye(e,R+4),J=Ye(e,R+8),W=Ye(e,R+12);G.push({qualifiers:K&15,channelType:K>>>4&255,bitLength:(K>>>12&4095)+1,bitOffset:K>>>24&255,samplePosition:[z&255,z>>>8&255,z>>>16&255,z>>>24&255],sampleLower:J,sampleUpper:W})}return{totalSize:n,vendorId:i,descriptorType:a,versionNumber:c,descriptorBlockSize:l,colorModel:g,colorPrimaries:p,transferFunction:f,flags:d,texelBlockDimension:[I,b,D,m],bytesPlane:S,samples:G}}function sc(e,t,r){if(r===0)return[];let n=[],o=t,A=t+r;for(;o<A;){mr(e,o,4,"KV-keyAndValueByteLength");let i=Ye(e,o);o+=4,mr(e,o,i,"KV-payload");let a=e.slice(o,o+i),s=a.indexOf(0);s===-1&&(s=a.length);let c=ic.decode(a.slice(0,s)),l=a.slice(s+1);n.push({key:c,value:l}),o+=i;let u=o&3;u!==0&&(o+=4-u)}return n}async function ma(e){try{if(e.length<12)return Mt("ktx2-parse-failed",{reason:"truncated-identifier: file shorter than 12-byte KTX2 magic"});for(let l=0;l<12;l++){let u=Do[l];if(u===void 0||e[l]!==u)return Mt("ktx2-parse-failed",{reason:"invalid-identifier: not a KTX2 2.0 file"})}if(e.length<80)return Mt("ktx2-parse-failed",{reason:"truncated-header: file too short for KTX2 header + index (min 80 bytes)"});let t={vkFormat:Ye(e,12),typeSize:Ye(e,16),pixelWidth:Ye(e,20),pixelHeight:Ye(e,24),pixelDepth:Ye(e,28),layerCount:Ye(e,32),faceCount:Ye(e,36),levelCount:Ye(e,40),supercompressionScheme:Ye(e,44)},r={dfdByteOffset:Ye(e,48),dfdByteLength:Ye(e,52),kvdByteOffset:Ye(e,56),kvdByteLength:Ye(e,60),sgdByteOffset:oo(e,64),sgdByteLength:oo(e,72)},n=t.supercompressionScheme;if(n!==0&&n!==1&&n!==2)return Mt("ktx2-unsupported-scheme",{scheme:n});let o=Math.max(1,t.levelCount),A=80;mr(e,A,o*24,"level-index");let i=[];for(let l=0;l<o;l++){let u=A+l*24,g=oo(e,u),p=oo(e,u+8),f=oo(e,u+16);if(g+p>e.length)return Mt("ktx2-parse-failed",{reason:`level-index-OOB: level ${l} byteOffset=${g} byteLength=${p} exceeds file size=${e.length}`});i.push({byteOffset:g,byteLength:p,uncompressedByteLength:f})}let a=null;r.dfdByteLength>0&&(mr(e,r.dfdByteOffset,r.dfdByteLength,"DFD"),a=ac(e,r.dfdByteOffset,r.dfdByteLength));let s=[];r.kvdByteLength>0&&(mr(e,r.kvdByteOffset,r.kvdByteLength,"KVD"),s=sc(e,r.kvdByteOffset,r.kvdByteLength));let c=null;return r.sgdByteLength>0&&(mr(e,r.sgdByteOffset,r.sgdByteLength,"SGD"),c=e.slice(r.sgdByteOffset,r.sgdByteOffset+r.sgdByteLength)),{ok:!0,value:{header:t,index:r,levelIndex:i,dfd:a,kvEntries:s,sgd:c,rawBytes:e}}}catch(t){let r=t instanceof Error?t.message:String(t);return Mt("ktx2-parse-failed",{reason:`internal: ${r}`})}}function Ia(e){return e.length>=Do.length&&Do.every((t,r)=>e[r]===t)}async function Ba(e){let t=await ma(e);if(!t.ok)throw new Error(`KTX2 parse failed: ${t.error.code}`);let{pixelDepth:r,layerCount:n,faceCount:o}=t.value.header;if(r>1||n>1||o!==1)throw new Error("Only 2D KTX2 textures are supported");let A=await ha(t.value,"rgba8unorm");if(!A.ok)throw new Error(`KTX2 transcode failed: ${A.error.code}`);let{width:i,height:a,mips:s}=A.value;if(!s.length||s.some((c,l)=>c.level!==l||c.width!==Math.max(1,i>>l)||c.height!==Math.max(1,a>>l)||c.data.length!==c.width*c.height*4))throw new Error("KTX2 transcoder returned an invalid mip chain");return{width:i,height:a,levels:s.map(c=>c.data)}}$();$();$();function Wr(e,t){return`
1010
1010
  @group(${e}) @binding(${t}) var matteTex : texture_2d<f32>;
1011
1011
 
1012
1012
  fn matteCoverage(fragPos : vec2<f32>) -> f32 {
@@ -1014,8 +1014,8 @@ fn matteCoverage(fragPos : vec2<f32>) -> f32 {
1014
1014
  let p = floor(fragPos * dims / max(cam.screenParams.xy, vec2<f32>(1.0)));
1015
1015
  return textureLoad(matteTex, vec2<i32>(clamp(p, vec2<f32>(0.0), dims - 1.0)), 0).a;
1016
1016
  }
1017
- `}var ja=`
1018
- ${Ir}
1017
+ `}var ba=`
1018
+ ${dr}
1019
1019
 
1020
1020
  struct ModelUniforms {
1021
1021
  modelMatrix : mat4x4<f32>,
@@ -1043,7 +1043,7 @@ struct InstanceData {
1043
1043
  @group(0) @binding(0) var<uniform> cam : CameraUniforms;
1044
1044
  @group(1) @binding(0) var<uniform> model : ModelUniforms;
1045
1045
  @group(1) @binding(1) var<storage, read> skinning : SkinningUniforms;
1046
- ${en(1,2)}@group(1) @binding(3) var backdropTex : texture_2d<f32>;
1046
+ ${Wr(1,2)}@group(1) @binding(3) var backdropTex : texture_2d<f32>;
1047
1047
  @group(1) @binding(4) var<storage, read> instances : array<InstanceData>;
1048
1048
  @group(2) @binding(0) var texSampler : sampler;
1049
1049
  @group(2) @binding(1) var mainTex : texture_2d<f32>;
@@ -1051,7 +1051,7 @@ ${en(1,2)}@group(1) @binding(3) var backdropTex : texture_2d<f32>;
1051
1051
  @group(2) @binding(3) var metalRoughTex : texture_2d<f32>;
1052
1052
  @group(2) @binding(4) var occlusionTex : texture_2d<f32>;
1053
1053
  @group(2) @binding(5) var emissiveTex : texture_2d<f32>;
1054
- ${Br}
1054
+ ${hr}
1055
1055
 
1056
1056
  struct VertexInput {
1057
1057
  @location(0) position : vec3<f32>,
@@ -1407,8 +1407,8 @@ fn fs_mrt_bloom(in: VertexOutput, @builtin(front_facing) isFront: bool) -> MrtBl
1407
1407
  out.hdr = f.hdr;
1408
1408
  return out;
1409
1409
  }
1410
- `;$();function Kr(e){return{binding:e,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}}var Va=new WeakMap;function Er(e){let t=Va.get(e);if(!t){let r=e.createTexture({label:"Matte3DFullCoverage",size:[1,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});e.queue.writeTexture({texture:r},new Uint8Array([255,255,255,255]),{bytesPerRow:4},[1,1]),t=r.createView(),Va.set(e,t)}return t}$();$();var Ja=`
1411
- ${Ir}
1410
+ `;$();function jr(e){return{binding:e,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}}var Ea=new WeakMap;function Ir(e){let t=Ea.get(e);if(!t){let r=e.createTexture({label:"Matte3DFullCoverage",size:[1,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});e.queue.writeTexture({texture:r},new Uint8Array([255,255,255,255]),{bytesPerRow:4},[1,1]),t=r.createView(),Ea.set(e,t)}return t}$();$();var ya=`
1411
+ ${dr}
1412
1412
  // Grid cells either side a relief's normals span.
1413
1413
  const RELIEF_NORMAL_CELLS : f32 = 4.0;
1414
1414
 
@@ -1429,10 +1429,10 @@ struct ModelUniforms {
1429
1429
 
1430
1430
  @group(0) @binding(0) var<uniform> cam : CameraUniforms;
1431
1431
  @group(1) @binding(0) var<uniform> model : ModelUniforms;
1432
- ${en(1,1)}@group(1) @binding(2) var reliefTex : texture_2d<f32>;
1432
+ ${Wr(1,1)}@group(1) @binding(2) var reliefTex : texture_2d<f32>;
1433
1433
  @group(2) @binding(0) var texSampler : sampler;
1434
1434
  @group(2) @binding(1) var mainTex : texture_2d<f32>;
1435
- ${Br}
1435
+ ${hr}
1436
1436
 
1437
1437
  struct VertexInput {
1438
1438
  @location(0) position : vec3<f32>,
@@ -1680,7 +1680,7 @@ fn fs_shadow(in: VertexOutput) {
1680
1680
  discard;
1681
1681
  }
1682
1682
  }
1683
- `;$();var Oo="depth32float",tn={format:Oo,depthWriteEnabled:!0,depthCompare:"less-equal",depthBias:2,depthBiasSlopeScale:2.5,depthBiasClamp:.01};$();var tr=8;function rn(e,t,r){t[r]=e.roughness??-1,t[r+1]=e.metallic??0,t[r+2]=0,t[r+3]=0;let n=e.emissive;if(n==null){t.fill(0,r+4,r+8);return}let o;if(Array.isArray(n))o=[n[0],n[1],n[2]];else{let A=qr(n);o=[A.r*A.a,A.g*A.a,A.b*A.a]}t[r+4]=o[0],t[r+5]=o[1],t[r+6]=o[2],t[r+7]=e.emissiveIntensity??1}function yA(e,t="Lights3DLayout"){return e.createBindGroupLayout({label:t,entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth",viewDimension:"2d-array"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"comparison"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"read-only-storage"}}]})}var yr=512,Ka=52+tr+12;function CA(e){let t=e.roughness!==void 0?Math.max(1,(1-e.roughness)*128):e.shininess??32,r=e.metallic!==void 0?e.metallic:e.specularIntensity??.5,n=e.ambientIntensity??1,o=e.material==="unlit"?0:1;return[t,r,n,o]}var Ho=class{device;pipelineSingle;pipelineMrt;bloomVariants;pipelineShadow;cameraLayout;modelLayout;textureLayout;lightsLayout;modelPool;vertexBuffer;indexBuffer;reliefGrid;modelData=new Float32Array(Ka);constructor(t,r,n="depth24plus",o=1){this.device=t,this.modelPool=new We(Ka*4,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);let A=t.createShaderModule({label:"quad3d.wgsl",code:Ja});this.cameraLayout=t.createBindGroupLayout({label:"Quad3DCameraLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.modelLayout=t.createBindGroupLayout({label:"Quad3DModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},Kr(1),{binding:2,visibility:GPUShaderStage.VERTEX,texture:{sampleType:"float"}}]}),this.textureLayout=t.createBindGroupLayout({label:"Quad3DTextureLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]}),this.lightsLayout=yA(t,"Quad3DLightsLayout");let i=t.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout,this.textureLayout,this.lightsLayout]}),a={module:A,entryPoint:"vs_main",buffers:[{arrayStride:32,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x2"},{shaderLocation:2,offset:20,format:"float32x3"}]}]},s={label:"Quad3DPipeline",layout:i,vertex:a,module:A,format:r,depthStencil:{format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"},multisample:{count:o}},{single:c,mrt:l}=Bt(t,s);this.pipelineSingle=c,this.pipelineMrt=l,this.bloomVariants=new gt(t,s),this.pipelineShadow=t.createRenderPipeline({label:"Quad3DPipelineShadow",layout:t.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout,this.textureLayout]}),vertex:a,fragment:{module:A,entryPoint:"fs_shadow",targets:[]},depthStencil:tn,primitive:{topology:"triangle-list",cullMode:"none"}});let u=new Float32Array([-.5,-.5,0,0,0,0,0,-1,.5,-.5,0,1,0,0,0,-1,.5,.5,0,1,1,0,0,-1,-.5,.5,0,0,1,0,0,-1]),g=new Uint16Array([0,1,2,0,2,3]);this.vertexBuffer=t.createBuffer({size:u.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Float32Array(this.vertexBuffer.getMappedRange()).set(u),this.vertexBuffer.unmap(),this.indexBuffer=t.createBuffer({size:g.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Uint16Array(this.indexBuffer.getMappedRange()).set(g),this.indexBuffer.unmap()}resetPools(){this.modelPool.reset()}packModel(t){No(this.modelData,t.modelMatrix,t.normalMatrix,t.colorTint);let r=t.borderColor??[0,0,0,0];this.modelData[36]=r[0],this.modelData[37]=r[1],this.modelData[38]=r[2],this.modelData[39]=r[3],this.modelData[40]=t.opacity??1,this.modelData[41]=t.borderRadius??0,this.modelData[42]=t.twoSided?1:0,this.modelData[43]=t.borderWidth??0,this.modelData[44]=t.width??0,this.modelData[45]=t.height??0,this.modelData[46]=t.textureExtent?.[0]??0,this.modelData[47]=t.textureExtent?.[1]??0,this.modelData.set(CA(t),48),rn(t,this.modelData,52);let n=t.relief,o=52+tr;this.modelData.set(n?[n.amount,1,0,yr]:[0,0,0,0],o),this.modelData.set(n?.uvRect??[0,0,1,1],o+4),this.modelData.set([...n?.eye??[0,0,0],0],o+8);let A=this.modelPool.getBuffer(this.device,this.modelData);return this.device.createBindGroup({layout:this.modelLayout,entries:[{binding:0,resource:{buffer:A}},{binding:1,resource:t.matte?.createView()??Er(this.device)},{binding:2,resource:t.relief?.texture.createView()??Er(this.device)}]})}drawGeometry(t,r){if(!r.relief){t.setVertexBuffer(0,this.vertexBuffer),t.setIndexBuffer(this.indexBuffer,"uint16"),t.drawIndexed(6);return}this.reliefGrid??=this.createReliefGrid(),t.setVertexBuffer(0,this.reliefGrid.vertices),t.setIndexBuffer(this.reliefGrid.indices,"uint32"),t.drawIndexed(this.reliefGrid.count)}createReliefGrid(){let t=yr+1,r=new Float32Array(t*t*8);for(let i=0;i<t;i++)for(let a=0;a<t;a++){let s=a/yr,c=i/yr;r.set([s-.5,c-.5,0,s,c,0,0,-1],(i*t+a)*8)}let n=new Uint32Array(yr*yr*6),o=0;for(let i=0;i<yr;i++)for(let a=0;a<yr;a++){let s=i*t+a;n.set([s,s+1,s+t+1,s,s+t+1,s+t],o),o+=6}let A=(i,a)=>{let s=this.device.createBuffer({size:i.byteLength,usage:a|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});return new i.constructor(s.getMappedRange()).set(i),s.unmap(),s};return{vertices:A(r,GPUBufferUsage.VERTEX),indices:A(n,GPUBufferUsage.INDEX),count:n.length}}textureBindGroup(t,r){return this.device.createBindGroup({layout:this.textureLayout,entries:[{binding:0,resource:r},{binding:1,resource:t.createView()}]})}draw(t,r,n,o,A,i,a=!1,s=!1){let c=this.packModel(i),l=this.textureBindGroup(o,A);t.setPipeline(s?this.bloomVariants.get(a):a?this.pipelineMrt:this.pipelineSingle),t.setBindGroup(0,r),t.setBindGroup(1,c),t.setBindGroup(2,l),t.setBindGroup(3,n),this.drawGeometry(t,i)}drawShadow(t,r,n,o,A){t.setPipeline(this.pipelineShadow),t.setBindGroup(0,r),t.setBindGroup(1,this.packModel(A)),t.setBindGroup(2,this.textureBindGroup(n,o)),this.drawGeometry(t,A)}destroy(){this.modelPool.destroy(),this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.reliefGrid?.vertices.destroy(),this.reliefGrid?.indices.destroy()}};var jo=class{device;pipelineSingle;pipelineMrt;bloomVariants;wireSingle;wireMrt;wireBloom;wireShadow;pointPipelines;transparentPointPipelines;pointShadow;transparentPipelines;transparentWirePipelines;pipelineShadow;cameraLayout;modelLayout;textureLayout;lightsLayout;modelPool;skinningPool;defaultWhiteTexture;flatNormalTexture;defaultSkinningBuffer;defaultInstanceBuffer;whiteColorBuffer=null;whiteColorCapacity=0;retiredColorBuffers=[];modelData=new Float32Array(52+tr);constructor(t,r,n="depth24plus",o,A,i=1){this.device=t,this.modelPool=new We((52+tr)*4,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.skinningPool=new We(64,GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST);let a=t.createShaderModule({label:"mesh3d.wgsl",code:ja});this.cameraLayout=o??t.createBindGroupLayout({label:"Mesh3DCameraLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.modelLayout=t.createBindGroupLayout({label:"Mesh3DModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage"}},Kr(2),Kr(3),{binding:4,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage"}}]}),this.textureLayout=t.createBindGroupLayout({label:"Mesh3DTextureLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},...[1,2,3,4,5].map(w=>({binding:w,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}))]}),this.lightsLayout=A??yA(t,"Mesh3DLightsLayout");let s=t.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout,this.textureLayout,this.lightsLayout]}),c={module:a,entryPoint:"vs_main",buffers:[{arrayStride:64,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x2"},{shaderLocation:2,offset:20,format:"float32x3"},{shaderLocation:3,offset:32,format:"float32x4"},{shaderLocation:4,offset:48,format:"float32x4"}]},{arrayStride:16,attributes:[{shaderLocation:5,offset:0,format:"float32x4"}]},{arrayStride:32,attributes:[{shaderLocation:6,offset:0,format:"float32x2"},{shaderLocation:7,offset:8,format:"float32x2"},{shaderLocation:8,offset:16,format:"float32x2"},{shaderLocation:9,offset:24,format:"float32x2"}]}]},l={label:"Mesh3DPipeline",layout:s,vertex:c,module:a,format:r,depthStencil:{format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"},multisample:{count:i}},{single:u,mrt:g}=Bt(t,l);this.pipelineSingle=u,this.pipelineMrt=g,this.bloomVariants=new gt(t,l);let p={...l,label:"Mesh3DWireframe",primitive:{topology:"line-list"}},f=Bt(t,p);this.wireSingle=f.single,this.wireMrt=f.mrt,this.wireBloom=new gt(t,p);let d={...l,label:"Mesh3DTransparent",depthStencil:{...l.depthStencil,depthWriteEnabled:!1}},h={...d,label:"Mesh3DTransparentWireframe",primitive:p.primitive};this.transparentPipelines={...Bt(t,d),bloom:new gt(t,d)},this.transparentWirePipelines={...Bt(t,h),bloom:new gt(t,h)};let I={...l,label:"Mesh3DPoints",primitive:{topology:"point-list"}},b={...I,label:"Mesh3DTransparentPoints",depthStencil:{...l.depthStencil,depthWriteEnabled:!1}};this.pointPipelines={...Bt(t,I),bloom:new gt(t,I)},this.transparentPointPipelines={...Bt(t,b),bloom:new gt(t,b)},this.pointShadow=t.createRenderPipeline({label:"Mesh3DPointShadow",layout:t.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout]}),vertex:c,depthStencil:{format:tn.format,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"point-list"}}),this.wireShadow=t.createRenderPipeline({label:"Mesh3DWireframeShadow",layout:t.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout]}),vertex:c,depthStencil:{format:tn.format,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"line-list"}}),this.pipelineShadow=t.createRenderPipeline({label:"Mesh3DPipelineShadow",layout:t.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout]}),vertex:c,depthStencil:tn,primitive:{topology:"triangle-list",cullMode:"none"}}),this.defaultWhiteTexture=t.createTexture({label:"Mesh3DDefaultWhiteTexture",size:{width:1,height:1},format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),t.queue.writeTexture({texture:this.defaultWhiteTexture},new Uint8Array([255,255,255,255]),{bytesPerRow:4,rowsPerImage:1},{width:1,height:1}),this.flatNormalTexture=t.createTexture({label:"Mesh3DFlatNormalTexture",size:{width:1,height:1},format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),t.queue.writeTexture({texture:this.flatNormalTexture},new Uint8Array([128,128,255,255]),{bytesPerRow:4,rowsPerImage:1},{width:1,height:1});let Q=new Float32Array(16);Q[0]=Q[5]=Q[10]=Q[15]=1,this.defaultSkinningBuffer=t.createBuffer({size:64,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Float32Array(this.defaultSkinningBuffer.getMappedRange()).set(Q),this.defaultSkinningBuffer.unmap(),this.defaultInstanceBuffer=t.createBuffer({label:"Mesh3DDefaultInstanceBuffer",size:64,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});let m=new Float32Array(this.defaultInstanceBuffer.getMappedRange());m[0]=0,m[1]=0,m[2]=0,m[3]=1,m[4]=0,m[5]=0,m[6]=0,m[7]=1,m[8]=1,m[9]=1,m[10]=1,m[11]=1,m[12]=0,m[13]=0,m[14]=0,m[15]=0,this.defaultInstanceBuffer.unmap()}resetPools(){this.modelPool.reset(),this.skinningPool.reset()}packModel(t){No(this.modelData,t.modelMatrix,t.normalMatrix,t.colorTint),this.modelData[36]=t.opacity??1,this.modelData[37]=t.twoSided?1:0,this.modelData[38]=t.isSkinned?1:0,this.modelData[39]=(t.isInstanced||t.instanceBuffer?1:0)+(t.hasMapUvs?2:0)+(t.matrixInstances?4:0);let r=t.roughness!==void 0?Math.max(1,(1-t.roughness)*128):t.shininess??32,n=t.metallic!==void 0?t.metallic:t.specularIntensity??.5,o=t.ambientIntensity??1,A=t.material==="unlit"?0:t.material==="toon"?2:1;this.modelData[40]=r,this.modelData[41]=n,this.modelData[42]=o,this.modelData[43]=A;let i=t.shadeColor??[1,1,1];this.modelData[44]=i[0],this.modelData[45]=i[1],this.modelData[46]=i[2],this.modelData[47]=t.alphaCutoff??0,rn(t,this.modelData,48);let a=t.maps;this.modelData[56]=a?.normal?a.normalScale??1:0,this.modelData[57]=a?.occlusion?a.occlusionStrength??1:0,this.modelData[58]=a?.metallicRoughness?1:0,this.modelData[59]=a?.emissive?1:0;let s=t.glass;s&&(this.modelData[44]=s.dispersion,this.modelData[45]=s.thickness,this.modelData[46]=s.frost,this.modelData[50]=1,this.modelData[51]=s.ior);let c=this.modelPool.getBuffer(this.device,this.modelData);if(t.skinningMatrices&&t.skinningMatrices.byteLength>this.device.limits.maxStorageBufferBindingSize)throw new Error(`Skinning data requires ${t.skinningMatrices.byteLength} bytes, exceeding the device storage binding limit of ${this.device.limits.maxStorageBufferBindingSize} bytes`);let l=t.isSkinned&&t.skinningMatrices?this.skinningPool.getBuffer(this.device,t.skinningMatrices):this.defaultSkinningBuffer;return this.device.createBindGroup({layout:this.modelLayout,entries:[{binding:0,resource:{buffer:c}},{binding:1,resource:{buffer:l}},{binding:2,resource:t.matte?.createView()??Er(this.device)},{binding:3,resource:t.glass&&t.backdrop?.createView()||Er(this.device)},{binding:4,resource:{buffer:t.instanceBuffer??this.defaultInstanceBuffer}}]})}draw(t,r,n,o,A,i,a,s=!1,c=!1,l=1,u=0){let g=this.packModel({...a,hasMapUvs:!!o.mapUvBuffer}),p=this.defaultWhiteTexture,f=a.maps,d=this.device.createBindGroup({layout:this.textureLayout,entries:[{binding:0,resource:i},{binding:1,resource:(A??p).createView()},{binding:2,resource:(f?.normal??this.flatNormalTexture).createView()},{binding:3,resource:(f?.metallicRoughness??p).createView()},{binding:4,resource:(f?.occlusion??p).createView()},{binding:5,resource:(f?.emissive??p).createView()}]}),h=a.wireframe===!0&&(!o.topology||o.topology==="triangle-list");if(h&&!o.wireIndexBuffer)throw new Error("Wireframe requires mesh buffers with edge indices");let I=h||o.topology==="line-list",b=o.topology==="point-list"?a.transparent?this.transparentPointPipelines:this.pointPipelines:a.transparent?I?this.transparentWirePipelines:this.transparentPipelines:I?{single:this.wireSingle,mrt:this.wireMrt,bloom:this.wireBloom}:{single:this.pipelineSingle,mrt:this.pipelineMrt,bloom:this.bloomVariants};t.setPipeline(c?b.bloom.get(s):s?b.mrt:b.single),t.setBindGroup(0,r),t.setBindGroup(1,g),t.setBindGroup(2,d),t.setBindGroup(3,n),t.setVertexBuffer(0,o.vertexBuffer),t.setVertexBuffer(1,this.colorsFor(o)),t.setVertexBuffer(2,o.mapUvBuffer??o.vertexBuffer),t.setIndexBuffer(h?o.wireIndexBuffer:o.indexBuffer,o.indexFormat),l>1||a.isInstanced?t.drawIndexed(h?o.wireIndexCount:o.indexCount,l,0,0,u):t.drawIndexed(h?o.wireIndexCount:o.indexCount)}drawShadow(t,r,n,o,A=1,i=0){let a=o.wireframe===!0&&(!n.topology||n.topology==="triangle-list");if(a&&!n.wireIndexBuffer)throw new Error("Wireframe requires mesh buffers with edge indices");t.setPipeline(n.topology==="point-list"?this.pointShadow:a||n.topology==="line-list"?this.wireShadow:this.pipelineShadow),t.setBindGroup(0,r),t.setBindGroup(1,this.packModel(o)),t.setVertexBuffer(0,n.vertexBuffer),t.setVertexBuffer(1,this.colorsFor(n)),t.setVertexBuffer(2,n.mapUvBuffer??n.vertexBuffer),t.setIndexBuffer(a?n.wireIndexBuffer:n.indexBuffer,n.indexFormat),A>1||o.isInstanced?t.drawIndexed(a?n.wireIndexCount:n.indexCount,A,0,0,i):t.drawIndexed(a?n.wireIndexCount:n.indexCount)}colorsFor(t){if(t.colorBuffer)return t.colorBuffer;let r=Math.max(1,Math.ceil(t.vertexBuffer.size/64));if(!this.whiteColorBuffer||this.whiteColorCapacity<r){this.whiteColorBuffer&&this.retiredColorBuffers.push(this.whiteColorBuffer);let n=2**Math.ceil(Math.log2(r));this.whiteColorBuffer=this.device.createBuffer({label:"Mesh3DWhiteVertexColors",size:n*16,usage:GPUBufferUsage.VERTEX,mappedAtCreation:!0}),new Float32Array(this.whiteColorBuffer.getMappedRange()).fill(1),this.whiteColorBuffer.unmap(),this.whiteColorCapacity=n}return this.whiteColorBuffer}destroy(){this.whiteColorBuffer?.destroy();for(let t of this.retiredColorBuffers)t.destroy();this.modelPool.destroy(),this.skinningPool.destroy(),this.defaultWhiteTexture.destroy(),this.flatNormalTexture.destroy(),this.defaultSkinningBuffer.destroy(),this.defaultInstanceBuffer.destroy()}};$();var Lc=`
1683
+ `;$();var _o="depth32float",qr={format:_o,depthWriteEnabled:!0,depthCompare:"less-equal",depthBias:2,depthBiasSlopeScale:2.5,depthBiasClamp:.01};$();var Zt=8;function Xr(e,t,r){t[r]=e.roughness??-1,t[r+1]=e.metallic??0,t[r+2]=0,t[r+3]=0;let n=e.emissive;if(n==null){t.fill(0,r+4,r+8);return}let o;if(Array.isArray(n))o=[n[0],n[1],n[2]];else{let A=Jr(n);o=[A.r*A.a,A.g*A.a,A.b*A.a]}t[r+4]=o[0],t[r+5]=o[1],t[r+6]=o[2],t[r+7]=e.emissiveIntensity??1}function iA(e,t="Lights3DLayout"){return e.createBindGroupLayout({label:t,entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth",viewDimension:"2d-array"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"comparison"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"read-only-storage"}}]})}var Br=512,Ca=52+Zt+12;function aA(e){let t=e.roughness!==void 0?Math.max(1,(1-e.roughness)*128):e.shininess??32,r=e.metallic!==void 0?e.metallic:e.specularIntensity??.5,n=e.ambientIntensity??1,o=e.material==="unlit"?0:1;return[t,r,n,o]}var Mo=class{device;pipelineSingle;pipelineMrt;bloomVariants;pipelineShadow;cameraLayout;modelLayout;textureLayout;lightsLayout;modelPool;vertexBuffer;indexBuffer;reliefGrid;modelData=new Float32Array(Ca);constructor(t,r,n="depth24plus",o=1){this.device=t,this.modelPool=new We(Ca*4,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);let A=t.createShaderModule({label:"quad3d.wgsl",code:ya});this.cameraLayout=t.createBindGroupLayout({label:"Quad3DCameraLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.modelLayout=t.createBindGroupLayout({label:"Quad3DModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},jr(1),{binding:2,visibility:GPUShaderStage.VERTEX,texture:{sampleType:"float"}}]}),this.textureLayout=t.createBindGroupLayout({label:"Quad3DTextureLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]}),this.lightsLayout=iA(t,"Quad3DLightsLayout");let i=t.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout,this.textureLayout,this.lightsLayout]}),a={module:A,entryPoint:"vs_main",buffers:[{arrayStride:32,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x2"},{shaderLocation:2,offset:20,format:"float32x3"}]}]},s={label:"Quad3DPipeline",layout:i,vertex:a,module:A,format:r,depthStencil:{format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"},multisample:{count:o}},{single:c,mrt:l}=mt(t,s);this.pipelineSingle=c,this.pipelineMrt=l,this.bloomVariants=new lt(t,s),this.pipelineShadow=t.createRenderPipeline({label:"Quad3DPipelineShadow",layout:t.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout,this.textureLayout]}),vertex:a,fragment:{module:A,entryPoint:"fs_shadow",targets:[]},depthStencil:qr,primitive:{topology:"triangle-list",cullMode:"none"}});let u=new Float32Array([-.5,-.5,0,0,0,0,0,-1,.5,-.5,0,1,0,0,0,-1,.5,.5,0,1,1,0,0,-1,-.5,.5,0,0,1,0,0,-1]),g=new Uint16Array([0,1,2,0,2,3]);this.vertexBuffer=t.createBuffer({size:u.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Float32Array(this.vertexBuffer.getMappedRange()).set(u),this.vertexBuffer.unmap(),this.indexBuffer=t.createBuffer({size:g.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Uint16Array(this.indexBuffer.getMappedRange()).set(g),this.indexBuffer.unmap()}resetPools(){this.modelPool.reset()}packModel(t){wo(this.modelData,t.modelMatrix,t.normalMatrix,t.colorTint);let r=t.borderColor??[0,0,0,0];this.modelData[36]=r[0],this.modelData[37]=r[1],this.modelData[38]=r[2],this.modelData[39]=r[3],this.modelData[40]=t.opacity??1,this.modelData[41]=t.borderRadius??0,this.modelData[42]=t.twoSided?1:0,this.modelData[43]=t.borderWidth??0,this.modelData[44]=t.width??0,this.modelData[45]=t.height??0,this.modelData[46]=t.textureExtent?.[0]??0,this.modelData[47]=t.textureExtent?.[1]??0,this.modelData.set(aA(t),48),Xr(t,this.modelData,52);let n=t.relief,o=52+Zt;this.modelData.set(n?[n.amount,1,0,Br]:[0,0,0,0],o),this.modelData.set(n?.uvRect??[0,0,1,1],o+4),this.modelData.set([...n?.eye??[0,0,0],0],o+8);let A=this.modelPool.getBuffer(this.device,this.modelData);return this.device.createBindGroup({layout:this.modelLayout,entries:[{binding:0,resource:{buffer:A}},{binding:1,resource:t.matte?.createView()??Ir(this.device)},{binding:2,resource:t.relief?.texture.createView()??Ir(this.device)}]})}drawGeometry(t,r){if(!r.relief){t.setVertexBuffer(0,this.vertexBuffer),t.setIndexBuffer(this.indexBuffer,"uint16"),t.drawIndexed(6);return}this.reliefGrid??=this.createReliefGrid(),t.setVertexBuffer(0,this.reliefGrid.vertices),t.setIndexBuffer(this.reliefGrid.indices,"uint32"),t.drawIndexed(this.reliefGrid.count)}createReliefGrid(){let t=Br+1,r=new Float32Array(t*t*8);for(let i=0;i<t;i++)for(let a=0;a<t;a++){let s=a/Br,c=i/Br;r.set([s-.5,c-.5,0,s,c,0,0,-1],(i*t+a)*8)}let n=new Uint32Array(Br*Br*6),o=0;for(let i=0;i<Br;i++)for(let a=0;a<Br;a++){let s=i*t+a;n.set([s,s+1,s+t+1,s,s+t+1,s+t],o),o+=6}let A=(i,a)=>{let s=this.device.createBuffer({size:i.byteLength,usage:a|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});return new i.constructor(s.getMappedRange()).set(i),s.unmap(),s};return{vertices:A(r,GPUBufferUsage.VERTEX),indices:A(n,GPUBufferUsage.INDEX),count:n.length}}textureBindGroup(t,r){return this.device.createBindGroup({layout:this.textureLayout,entries:[{binding:0,resource:r},{binding:1,resource:t.createView()}]})}draw(t,r,n,o,A,i,a=!1,s=!1){let c=this.packModel(i),l=this.textureBindGroup(o,A);t.setPipeline(s?this.bloomVariants.get(a):a?this.pipelineMrt:this.pipelineSingle),t.setBindGroup(0,r),t.setBindGroup(1,c),t.setBindGroup(2,l),t.setBindGroup(3,n),this.drawGeometry(t,i)}drawShadow(t,r,n,o,A){t.setPipeline(this.pipelineShadow),t.setBindGroup(0,r),t.setBindGroup(1,this.packModel(A)),t.setBindGroup(2,this.textureBindGroup(n,o)),this.drawGeometry(t,A)}destroy(){this.modelPool.destroy(),this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.reliefGrid?.vertices.destroy(),this.reliefGrid?.indices.destroy()}};var So=class{device;pipelineSingle;pipelineMrt;bloomVariants;wireSingle;wireMrt;wireBloom;wireShadow;pointPipelines;transparentPointPipelines;pointShadow;transparentPipelines;transparentWirePipelines;pipelineShadow;cameraLayout;modelLayout;textureLayout;lightsLayout;modelPool;skinningPool;defaultWhiteTexture;flatNormalTexture;defaultSkinningBuffer;defaultInstanceBuffer;whiteColorBuffer=null;whiteColorCapacity=0;retiredColorBuffers=[];modelData=new Float32Array(52+Zt);constructor(t,r,n="depth24plus",o,A,i=1){this.device=t,this.modelPool=new We((52+Zt)*4,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.skinningPool=new We(64,GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST);let a=t.createShaderModule({label:"mesh3d.wgsl",code:ba});this.cameraLayout=o??t.createBindGroupLayout({label:"Mesh3DCameraLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.modelLayout=t.createBindGroupLayout({label:"Mesh3DModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage"}},jr(2),jr(3),{binding:4,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage"}}]}),this.textureLayout=t.createBindGroupLayout({label:"Mesh3DTextureLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},...[1,2,3,4,5].map(x=>({binding:x,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}))]}),this.lightsLayout=A??iA(t,"Mesh3DLightsLayout");let s=t.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout,this.textureLayout,this.lightsLayout]}),c={module:a,entryPoint:"vs_main",buffers:[{arrayStride:64,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x2"},{shaderLocation:2,offset:20,format:"float32x3"},{shaderLocation:3,offset:32,format:"float32x4"},{shaderLocation:4,offset:48,format:"float32x4"}]},{arrayStride:16,attributes:[{shaderLocation:5,offset:0,format:"float32x4"}]},{arrayStride:32,attributes:[{shaderLocation:6,offset:0,format:"float32x2"},{shaderLocation:7,offset:8,format:"float32x2"},{shaderLocation:8,offset:16,format:"float32x2"},{shaderLocation:9,offset:24,format:"float32x2"}]}]},l={label:"Mesh3DPipeline",layout:s,vertex:c,module:a,format:r,depthStencil:{format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"},multisample:{count:i}},{single:u,mrt:g}=mt(t,l);this.pipelineSingle=u,this.pipelineMrt=g,this.bloomVariants=new lt(t,l);let p={...l,label:"Mesh3DWireframe",primitive:{topology:"line-list"}},f=mt(t,p);this.wireSingle=f.single,this.wireMrt=f.mrt,this.wireBloom=new lt(t,p);let d={...l,label:"Mesh3DTransparent",depthStencil:{...l.depthStencil,depthWriteEnabled:!1}},h={...d,label:"Mesh3DTransparentWireframe",primitive:p.primitive};this.transparentPipelines={...mt(t,d),bloom:new lt(t,d)},this.transparentWirePipelines={...mt(t,h),bloom:new lt(t,h)};let I={...l,label:"Mesh3DPoints",primitive:{topology:"point-list"}},b={...I,label:"Mesh3DTransparentPoints",depthStencil:{...l.depthStencil,depthWriteEnabled:!1}};this.pointPipelines={...mt(t,I),bloom:new lt(t,I)},this.transparentPointPipelines={...mt(t,b),bloom:new lt(t,b)},this.pointShadow=t.createRenderPipeline({label:"Mesh3DPointShadow",layout:t.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout]}),vertex:c,depthStencil:{format:qr.format,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"point-list"}}),this.wireShadow=t.createRenderPipeline({label:"Mesh3DWireframeShadow",layout:t.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout]}),vertex:c,depthStencil:{format:qr.format,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"line-list"}}),this.pipelineShadow=t.createRenderPipeline({label:"Mesh3DPipelineShadow",layout:t.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout]}),vertex:c,depthStencil:qr,primitive:{topology:"triangle-list",cullMode:"none"}}),this.defaultWhiteTexture=t.createTexture({label:"Mesh3DDefaultWhiteTexture",size:{width:1,height:1},format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),t.queue.writeTexture({texture:this.defaultWhiteTexture},new Uint8Array([255,255,255,255]),{bytesPerRow:4,rowsPerImage:1},{width:1,height:1}),this.flatNormalTexture=t.createTexture({label:"Mesh3DFlatNormalTexture",size:{width:1,height:1},format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),t.queue.writeTexture({texture:this.flatNormalTexture},new Uint8Array([128,128,255,255]),{bytesPerRow:4,rowsPerImage:1},{width:1,height:1});let D=new Float32Array(16);D[0]=D[5]=D[10]=D[15]=1,this.defaultSkinningBuffer=t.createBuffer({size:64,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Float32Array(this.defaultSkinningBuffer.getMappedRange()).set(D),this.defaultSkinningBuffer.unmap(),this.defaultInstanceBuffer=t.createBuffer({label:"Mesh3DDefaultInstanceBuffer",size:64,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});let m=new Float32Array(this.defaultInstanceBuffer.getMappedRange());m[0]=0,m[1]=0,m[2]=0,m[3]=1,m[4]=0,m[5]=0,m[6]=0,m[7]=1,m[8]=1,m[9]=1,m[10]=1,m[11]=1,m[12]=0,m[13]=0,m[14]=0,m[15]=0,this.defaultInstanceBuffer.unmap()}resetPools(){this.modelPool.reset(),this.skinningPool.reset()}packModel(t){wo(this.modelData,t.modelMatrix,t.normalMatrix,t.colorTint),this.modelData[36]=t.opacity??1,this.modelData[37]=t.twoSided?1:0,this.modelData[38]=t.isSkinned?1:0,this.modelData[39]=(t.isInstanced||t.instanceBuffer?1:0)+(t.hasMapUvs?2:0)+(t.matrixInstances?4:0);let r=t.roughness!==void 0?Math.max(1,(1-t.roughness)*128):t.shininess??32,n=t.metallic!==void 0?t.metallic:t.specularIntensity??.5,o=t.ambientIntensity??1,A=t.material==="unlit"?0:t.material==="toon"?2:1;this.modelData[40]=r,this.modelData[41]=n,this.modelData[42]=o,this.modelData[43]=A;let i=t.shadeColor??[1,1,1];this.modelData[44]=i[0],this.modelData[45]=i[1],this.modelData[46]=i[2],this.modelData[47]=t.alphaCutoff??0,Xr(t,this.modelData,48);let a=t.maps;this.modelData[56]=a?.normal?a.normalScale??1:0,this.modelData[57]=a?.occlusion?a.occlusionStrength??1:0,this.modelData[58]=a?.metallicRoughness?1:0,this.modelData[59]=a?.emissive?1:0;let s=t.glass;s&&(this.modelData[44]=s.dispersion,this.modelData[45]=s.thickness,this.modelData[46]=s.frost,this.modelData[50]=1,this.modelData[51]=s.ior);let c=this.modelPool.getBuffer(this.device,this.modelData);if(t.skinningMatrices&&t.skinningMatrices.byteLength>this.device.limits.maxStorageBufferBindingSize)throw new Error(`Skinning data requires ${t.skinningMatrices.byteLength} bytes, exceeding the device storage binding limit of ${this.device.limits.maxStorageBufferBindingSize} bytes`);let l=t.isSkinned&&t.skinningMatrices?this.skinningPool.getBuffer(this.device,t.skinningMatrices):this.defaultSkinningBuffer;return this.device.createBindGroup({layout:this.modelLayout,entries:[{binding:0,resource:{buffer:c}},{binding:1,resource:{buffer:l}},{binding:2,resource:t.matte?.createView()??Ir(this.device)},{binding:3,resource:t.glass&&t.backdrop?.createView()||Ir(this.device)},{binding:4,resource:{buffer:t.instanceBuffer??this.defaultInstanceBuffer}}]})}draw(t,r,n,o,A,i,a,s=!1,c=!1,l=1,u=0){let g=this.packModel({...a,hasMapUvs:!!o.mapUvBuffer}),p=this.defaultWhiteTexture,f=a.maps,d=this.device.createBindGroup({layout:this.textureLayout,entries:[{binding:0,resource:i},{binding:1,resource:(A??p).createView()},{binding:2,resource:(f?.normal??this.flatNormalTexture).createView()},{binding:3,resource:(f?.metallicRoughness??p).createView()},{binding:4,resource:(f?.occlusion??p).createView()},{binding:5,resource:(f?.emissive??p).createView()}]}),h=a.wireframe===!0&&(!o.topology||o.topology==="triangle-list");if(h&&!o.wireIndexBuffer)throw new Error("Wireframe requires mesh buffers with edge indices");let I=h||o.topology==="line-list",b=o.topology==="point-list"?a.transparent?this.transparentPointPipelines:this.pointPipelines:a.transparent?I?this.transparentWirePipelines:this.transparentPipelines:I?{single:this.wireSingle,mrt:this.wireMrt,bloom:this.wireBloom}:{single:this.pipelineSingle,mrt:this.pipelineMrt,bloom:this.bloomVariants};t.setPipeline(c?b.bloom.get(s):s?b.mrt:b.single),t.setBindGroup(0,r),t.setBindGroup(1,g),t.setBindGroup(2,d),t.setBindGroup(3,n),t.setVertexBuffer(0,o.vertexBuffer),t.setVertexBuffer(1,this.colorsFor(o)),t.setVertexBuffer(2,o.mapUvBuffer??o.vertexBuffer),t.setIndexBuffer(h?o.wireIndexBuffer:o.indexBuffer,o.indexFormat),l>1||a.isInstanced?t.drawIndexed(h?o.wireIndexCount:o.indexCount,l,0,0,u):t.drawIndexed(h?o.wireIndexCount:o.indexCount)}drawShadow(t,r,n,o,A=1,i=0){let a=o.wireframe===!0&&(!n.topology||n.topology==="triangle-list");if(a&&!n.wireIndexBuffer)throw new Error("Wireframe requires mesh buffers with edge indices");t.setPipeline(n.topology==="point-list"?this.pointShadow:a||n.topology==="line-list"?this.wireShadow:this.pipelineShadow),t.setBindGroup(0,r),t.setBindGroup(1,this.packModel(o)),t.setVertexBuffer(0,n.vertexBuffer),t.setVertexBuffer(1,this.colorsFor(n)),t.setVertexBuffer(2,n.mapUvBuffer??n.vertexBuffer),t.setIndexBuffer(a?n.wireIndexBuffer:n.indexBuffer,n.indexFormat),A>1||o.isInstanced?t.drawIndexed(a?n.wireIndexCount:n.indexCount,A,0,0,i):t.drawIndexed(a?n.wireIndexCount:n.indexCount)}colorsFor(t){if(t.colorBuffer)return t.colorBuffer;let r=Math.max(1,Math.ceil(t.vertexBuffer.size/64));if(!this.whiteColorBuffer||this.whiteColorCapacity<r){this.whiteColorBuffer&&this.retiredColorBuffers.push(this.whiteColorBuffer);let n=2**Math.ceil(Math.log2(r));this.whiteColorBuffer=this.device.createBuffer({label:"Mesh3DWhiteVertexColors",size:n*16,usage:GPUBufferUsage.VERTEX,mappedAtCreation:!0}),new Float32Array(this.whiteColorBuffer.getMappedRange()).fill(1),this.whiteColorBuffer.unmap(),this.whiteColorCapacity=n}return this.whiteColorBuffer}destroy(){this.whiteColorBuffer?.destroy();for(let t of this.retiredColorBuffers)t.destroy();this.modelPool.destroy(),this.skinningPool.destroy(),this.defaultWhiteTexture.destroy(),this.flatNormalTexture.destroy(),this.defaultSkinningBuffer.destroy(),this.defaultInstanceBuffer.destroy()}};$();var cc=`
1684
1684
  struct Counts { vertices: u32, targets: u32, pad0: u32, pad1: u32 };
1685
1685
  @group(0) @binding(0) var<storage, read> source: array<f32>;
1686
1686
  @group(0) @binding(1) var<storage, read> deltas: array<f32>;
@@ -1703,8 +1703,8 @@ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
1703
1703
  }
1704
1704
  dest[v] = position.x; dest[v + 1u] = position.y; dest[v + 2u] = position.z;
1705
1705
  dest[v + 5u] = normal.x; dest[v + 6u] = normal.y; dest[v + 7u] = normal.z;
1706
- }`,Vo=class{constructor(t){this.device=t;this.layout=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:1,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:2,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:3,visibility:GPUShaderStage.COMPUTE,buffer:{type:"uniform"}},{binding:4,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}}]}),this.pipeline=t.createComputePipeline({label:"MeshMorphPipeline",layout:t.createPipelineLayout({bindGroupLayouts:[this.layout]}),compute:{module:t.createShaderModule({code:Lc}),entryPoint:"main"}})}device;pipeline;layout;weights=new We(16,GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST);counts=new We(16,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);targets=new WeakMap;outputs=[];outputIndex=0;targetBuffer(t){let r=this.targets.get(t);if(r)return r;let n=t.morphTargets??[],o=t.positions.length/3,A=new Float32Array(o*n.length*6);for(let a=0;a<n.length;a++){let s=n[a];for(let c=0;c<o;c++)for(let l=0;l<3;l++)A[(a*o+c)*6+l]=s.positions?.[c*3+l]??0,A[(a*o+c)*6+3+l]=s.normals?.[c*3+l]??0}let i=this.device.createBuffer({label:"MeshMorphTargets",size:Math.max(4,A.byteLength),usage:GPUBufferUsage.STORAGE,mappedAtCreation:!0});return new Float32Array(i.getMappedRange()).set(A),i.unmap(),this.targets.set(t,i),i}execute(t,r,n,o){let A=r.positions.length/3,i=r.morphTargets?.length??0,a=Math.max(64,A*64),s=this.outputs[this.outputIndex];if(!s||s.size<a){if(s){let g=s;this.device.queue.onSubmittedWorkDone().then(()=>g.destroy())}s=this.device.createBuffer({label:"MeshMorphOutput",size:a,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.VERTEX}),this.outputs[this.outputIndex]=s}this.outputIndex++;let c=new Float32Array(Math.max(4,i));for(let g=0;g<i;g++)c[g]=o[g]??0;let l=this.device.createBindGroup({layout:this.layout,entries:[{binding:0,resource:{buffer:n}},{binding:1,resource:{buffer:this.targetBuffer(r)}},{binding:2,resource:{buffer:this.weights.getBuffer(this.device,c)}},{binding:3,resource:{buffer:this.counts.getBuffer(this.device,new Uint32Array([A,i,0,0]))}},{binding:4,resource:{buffer:s}}]}),u=t.beginComputePass({label:"MeshMorphPass"});return u.setPipeline(this.pipeline),u.setBindGroup(0,l),u.dispatchWorkgroups(Math.ceil(A/128)),u.end(),s}resetPools(){this.outputIndex=0,this.weights.reset(),this.counts.reset()}destroy(){this.weights.destroy(),this.counts.destroy();for(let t of this.outputs)t.destroy()}};$();function QA(e){let{min:t,max:r}=e;return[[t[0],t[1],t[2]],[r[0],t[1],t[2]],[t[0],r[1],t[2]],[r[0],r[1],t[2]],[t[0],t[1],r[2]],[r[0],t[1],r[2]],[t[0],r[1],r[2]],[r[0],r[1],r[2]]]}function xA(e,t){let r=[1/0,1/0,1/0],n=[-1/0,-1/0,-1/0];for(let[o,A,i]of QA(e)){let a=[t[0]*o+t[4]*A+t[8]*i+t[12],t[1]*o+t[5]*A+t[9]*i+t[13],t[2]*o+t[6]*A+t[10]*i+t[14]];for(let s=0;s<3;s++)a[s]<r[s]&&(r[s]=a[s]),a[s]>n[s]&&(n[s]=a[s])}return{min:r,max:n}}function Jo(e,t){return[e[0]*t[0]+e[4]*t[1]+e[8]*t[2]+e[12],e[1]*t[0]+e[5]*t[1]+e[9]*t[2]+e[13],e[2]*t[0]+e[6]*t[1]+e[10]*t[2]+e[14]]}function za(e){return Math.abs(e[1])>.98?[0,0,1]:[0,-1,0]}function Ya(e,t,r,n){if(t.length===0)return null;let o=Z.normalize(e.direction),A=t.flatMap(QA),i=[...A,...r.flatMap(QA)];if(e.type==="directional"){let f=[0,0,0];for(let R of A)f[0]+=R[0]/A.length,f[1]+=R[1]/A.length,f[2]+=R[2]/A.length;let d=Z.subtract(f,Z.multiplyScalar(o,1)),h=Ee.lookAt(d,f,za(o)),I=1/0,b=-1/0,Q=1/0,m=-1/0;for(let R of A){let K=Jo(h,R);I=Math.min(I,K[0]),b=Math.max(b,K[0]),Q=Math.min(Q,K[1]),m=Math.max(m,K[1])}let w=1/0,v=-1/0;for(let R of i){let K=Jo(h,R)[2];w=Math.min(w,K),v=Math.max(v,K)}let S=Math.max(b-I,m-Q)*.5*1.08+4,N=(I+b)/2,_=(Q+m)/2,G=Math.max(10,(v-w)*.02),j=Ee.orthographic(N-S,N+S,_-S,_+S,w-G,v+G);return{viewProj:Ee.multiply(j,h),texelWorldSize:2*S/n}}let a=e.position,s=Ee.lookAt(a,Z.add(a,o),za(o)),c=1/0,l=0,u=0;for(let f of i){let d=Jo(s,f)[2];d>0&&(c=Math.min(c,d),l=Math.max(l,d))}for(let f of A)u=Math.max(u,Jo(s,f)[2]);if(!Number.isFinite(c)||l<=0)return null;c=Math.max(1,c*.9),l=l*1.05+1;let g=Math.min(170,2*(e.angle??45)+4)*Math.PI/180,p=Ee.perspective(g,1,c,l);return{viewProj:Ee.multiply(p,s),texelWorldSize:2*Math.tan(g/2)*Math.max(u,c)/n}}$();$();var Wa=`
1707
- ${Ir}
1706
+ }`,Po=class{constructor(t){this.device=t;this.layout=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:1,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:2,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:3,visibility:GPUShaderStage.COMPUTE,buffer:{type:"uniform"}},{binding:4,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}}]}),this.pipeline=t.createComputePipeline({label:"MeshMorphPipeline",layout:t.createPipelineLayout({bindGroupLayouts:[this.layout]}),compute:{module:t.createShaderModule({code:cc}),entryPoint:"main"}})}device;pipeline;layout;weights=new We(16,GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST);counts=new We(16,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);targets=new WeakMap;outputs=[];outputIndex=0;targetBuffer(t){let r=this.targets.get(t);if(r)return r;let n=t.morphTargets??[],o=t.positions.length/3,A=new Float32Array(o*n.length*6);for(let a=0;a<n.length;a++){let s=n[a];for(let c=0;c<o;c++)for(let l=0;l<3;l++)A[(a*o+c)*6+l]=s.positions?.[c*3+l]??0,A[(a*o+c)*6+3+l]=s.normals?.[c*3+l]??0}let i=this.device.createBuffer({label:"MeshMorphTargets",size:Math.max(4,A.byteLength),usage:GPUBufferUsage.STORAGE,mappedAtCreation:!0});return new Float32Array(i.getMappedRange()).set(A),i.unmap(),this.targets.set(t,i),i}execute(t,r,n,o){let A=r.positions.length/3,i=r.morphTargets?.length??0,a=Math.max(64,A*64),s=this.outputs[this.outputIndex];if(!s||s.size<a){if(s){let g=s;this.device.queue.onSubmittedWorkDone().then(()=>g.destroy())}s=this.device.createBuffer({label:"MeshMorphOutput",size:a,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.VERTEX}),this.outputs[this.outputIndex]=s}this.outputIndex++;let c=new Float32Array(Math.max(4,i));for(let g=0;g<i;g++)c[g]=o[g]??0;let l=this.device.createBindGroup({layout:this.layout,entries:[{binding:0,resource:{buffer:n}},{binding:1,resource:{buffer:this.targetBuffer(r)}},{binding:2,resource:{buffer:this.weights.getBuffer(this.device,c)}},{binding:3,resource:{buffer:this.counts.getBuffer(this.device,new Uint32Array([A,i,0,0]))}},{binding:4,resource:{buffer:s}}]}),u=t.beginComputePass({label:"MeshMorphPass"});return u.setPipeline(this.pipeline),u.setBindGroup(0,l),u.dispatchWorkgroups(Math.ceil(A/128)),u.end(),s}resetPools(){this.outputIndex=0,this.weights.reset(),this.counts.reset()}destroy(){this.weights.destroy(),this.counts.destroy();for(let t of this.outputs)t.destroy()}};$();function sA(e){let{min:t,max:r}=e;return[[t[0],t[1],t[2]],[r[0],t[1],t[2]],[t[0],r[1],t[2]],[r[0],r[1],t[2]],[t[0],t[1],r[2]],[r[0],t[1],r[2]],[t[0],r[1],r[2]],[r[0],r[1],r[2]]]}function cA(e,t){let r=[1/0,1/0,1/0],n=[-1/0,-1/0,-1/0];for(let[o,A,i]of sA(e)){let a=[t[0]*o+t[4]*A+t[8]*i+t[12],t[1]*o+t[5]*A+t[9]*i+t[13],t[2]*o+t[6]*A+t[10]*i+t[14]];for(let s=0;s<3;s++)a[s]<r[s]&&(r[s]=a[s]),a[s]>n[s]&&(n[s]=a[s])}return{min:r,max:n}}function Go(e,t){return[e[0]*t[0]+e[4]*t[1]+e[8]*t[2]+e[12],e[1]*t[0]+e[5]*t[1]+e[9]*t[2]+e[13],e[2]*t[0]+e[6]*t[1]+e[10]*t[2]+e[14]]}function Qa(e){return Math.abs(e[1])>.98?[0,0,1]:[0,-1,0]}function xa(e,t,r,n){if(t.length===0)return null;let o=Z.normalize(e.direction),A=t.flatMap(sA),i=[...A,...r.flatMap(sA)];if(e.type==="directional"){let f=[0,0,0];for(let R of A)f[0]+=R[0]/A.length,f[1]+=R[1]/A.length,f[2]+=R[2]/A.length;let d=Z.subtract(f,Z.multiplyScalar(o,1)),h=Ee.lookAt(d,f,Qa(o)),I=1/0,b=-1/0,D=1/0,m=-1/0;for(let R of A){let K=Go(h,R);I=Math.min(I,K[0]),b=Math.max(b,K[0]),D=Math.min(D,K[1]),m=Math.max(m,K[1])}let x=1/0,w=-1/0;for(let R of i){let K=Go(h,R)[2];x=Math.min(x,K),w=Math.max(w,K)}let S=Math.max(b-I,m-D)*.5*1.08+4,N=(I+b)/2,M=(D+m)/2,G=Math.max(10,(w-x)*.02),j=Ee.orthographic(N-S,N+S,M-S,M+S,x-G,w+G);return{viewProj:Ee.multiply(j,h),texelWorldSize:2*S/n}}let a=e.position,s=Ee.lookAt(a,Z.add(a,o),Qa(o)),c=1/0,l=0,u=0;for(let f of i){let d=Go(s,f)[2];d>0&&(c=Math.min(c,d),l=Math.max(l,d))}for(let f of A)u=Math.max(u,Go(s,f)[2]);if(!Number.isFinite(c)||l<=0)return null;c=Math.max(1,c*.9),l=l*1.05+1;let g=Math.min(170,2*(e.angle??45)+4)*Math.PI/180,p=Ee.perspective(g,1,c,l);return{viewProj:Ee.multiply(p,s),texelWorldSize:2*Math.tan(g/2)*Math.max(u,c)/n}}$();$();var wa=`
1707
+ ${dr}
1708
1708
 
1709
1709
  struct TextModelUniforms {
1710
1710
  modelMatrix : mat4x4<f32>, // paragraph px -> world
@@ -1717,11 +1717,11 @@ struct TextModelUniforms {
1717
1717
 
1718
1718
  @group(0) @binding(0) var<uniform> cam : CameraUniforms;
1719
1719
  @group(1) @binding(0) var<uniform> model : TextModelUniforms;
1720
- ${en(1,1)}@group(2) @binding(0) var curvesTex : texture_2d<f32>;
1720
+ ${Wr(1,1)}@group(2) @binding(0) var curvesTex : texture_2d<f32>;
1721
1721
  @group(2) @binding(1) var bandsTex : texture_2d<u32>;
1722
- ${Br}
1722
+ ${hr}
1723
1723
 
1724
- ${ia}
1724
+ ${ki}
1725
1725
 
1726
1726
  struct VSOut {
1727
1727
  @builtin(position) pos : vec4<f32>,
@@ -1906,7 +1906,7 @@ struct MrtBloomOutput {
1906
1906
  out.hdr = f.hdr;
1907
1907
  return out;
1908
1908
  }
1909
- `;var qa=24,Ko=class{device;pipelineSingle;pipelineMrt;bloomVariants;modelLayout;fontLayout;modelPool;instancePool;fontBindGroups=new WeakMap;modelData=new Float32Array(40+tr);constructor(t,r,n,o,A,i=1){this.device=t,this.modelPool=new We((40+tr)*4,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.instancePool=new We(65536,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let a=t.createShaderModule({label:"slug3d.wgsl",code:Wa});this.modelLayout=t.createBindGroupLayout({label:"Slug3DModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},Kr(1)]}),this.fontLayout=t.createBindGroupLayout({label:"Slug3DFontLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"unfilterable-float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"uint"}}]});let s=t.createPipelineLayout({bindGroupLayouts:[o,this.modelLayout,this.fontLayout,A]}),c={module:a,entryPoint:"vs",buffers:[{arrayStride:qa*4,stepMode:"instance",attributes:[{shaderLocation:0,offset:0,format:"float32x4"},{shaderLocation:1,offset:16,format:"float32x4"},{shaderLocation:2,offset:32,format:"float32x4"},{shaderLocation:3,offset:48,format:"float32x4"},{shaderLocation:4,offset:64,format:"float32x4"},{shaderLocation:5,offset:80,format:"float32x4"}]}]},p={label:"Slug3DPipeline",layout:s,vertex:c,module:a,format:r,depthStencil:{format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"},multisample:{count:i}},{single:f,mrt:d}=Bt(t,p);this.pipelineSingle=f,this.pipelineMrt=d,this.bloomVariants=new gt(t,p)}resetPools(){this.modelPool.reset(),this.instancePool.reset()}draw(t,r,n,o,A,i,a,s=!1,c=!1){if(i===0||!o.curvesTex||!o.bandsTex)return;this.modelData.set(a.modelMatrix,0),this.modelData.set(a.normalMatrix,16),this.modelData[32]=a.opacity,this.modelData[33]=a.slant,this.modelData[34]=a.twoSided?1:0,this.modelData[35]=a.depthPull,this.modelData.set(CA(a),36),rn(a,this.modelData,40);let l=this.modelPool.getBuffer(this.device,this.modelData),u=this.device.createBindGroup({layout:this.modelLayout,entries:[{binding:0,resource:{buffer:l}},{binding:1,resource:a.matte?.createView()??Er(this.device)}]}),g=this.instancePool.getBuffer(this.device,A.subarray(0,i*qa));t.setPipeline(c?this.bloomVariants.get(s):s?this.pipelineMrt:this.pipelineSingle),t.setBindGroup(0,r),t.setBindGroup(1,u),t.setBindGroup(2,this.fontBindGroup(o.curvesTex,o.bandsTex)),t.setBindGroup(3,n),t.setVertexBuffer(0,g),t.draw(6,i)}fontBindGroup(t,r){let n=this.fontBindGroups.get(t);return n||(n=this.device.createBindGroup({layout:this.fontLayout,entries:[{binding:0,resource:t.createView()},{binding:1,resource:r.createView()}]}),this.fontBindGroups.set(t,n)),n}destroy(){this.modelPool.destroy(),this.instancePool.destroy()}};$();var Oc=`
1909
+ `;var va=24,Ro=class{device;pipelineSingle;pipelineMrt;bloomVariants;modelLayout;fontLayout;modelPool;instancePool;fontBindGroups=new WeakMap;modelData=new Float32Array(40+Zt);constructor(t,r,n,o,A,i=1){this.device=t,this.modelPool=new We((40+Zt)*4,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.instancePool=new We(65536,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let a=t.createShaderModule({label:"slug3d.wgsl",code:wa});this.modelLayout=t.createBindGroupLayout({label:"Slug3DModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},jr(1)]}),this.fontLayout=t.createBindGroupLayout({label:"Slug3DFontLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"unfilterable-float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"uint"}}]});let s=t.createPipelineLayout({bindGroupLayouts:[o,this.modelLayout,this.fontLayout,A]}),c={module:a,entryPoint:"vs",buffers:[{arrayStride:va*4,stepMode:"instance",attributes:[{shaderLocation:0,offset:0,format:"float32x4"},{shaderLocation:1,offset:16,format:"float32x4"},{shaderLocation:2,offset:32,format:"float32x4"},{shaderLocation:3,offset:48,format:"float32x4"},{shaderLocation:4,offset:64,format:"float32x4"},{shaderLocation:5,offset:80,format:"float32x4"}]}]},p={label:"Slug3DPipeline",layout:s,vertex:c,module:a,format:r,depthStencil:{format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"},multisample:{count:i}},{single:f,mrt:d}=mt(t,p);this.pipelineSingle=f,this.pipelineMrt=d,this.bloomVariants=new lt(t,p)}resetPools(){this.modelPool.reset(),this.instancePool.reset()}draw(t,r,n,o,A,i,a,s=!1,c=!1){if(i===0||!o.curvesTex||!o.bandsTex)return;this.modelData.set(a.modelMatrix,0),this.modelData.set(a.normalMatrix,16),this.modelData[32]=a.opacity,this.modelData[33]=a.slant,this.modelData[34]=a.twoSided?1:0,this.modelData[35]=a.depthPull,this.modelData.set(aA(a),36),Xr(a,this.modelData,40);let l=this.modelPool.getBuffer(this.device,this.modelData),u=this.device.createBindGroup({layout:this.modelLayout,entries:[{binding:0,resource:{buffer:l}},{binding:1,resource:a.matte?.createView()??Ir(this.device)}]}),g=this.instancePool.getBuffer(this.device,A.subarray(0,i*va));t.setPipeline(c?this.bloomVariants.get(s):s?this.pipelineMrt:this.pipelineSingle),t.setBindGroup(0,r),t.setBindGroup(1,u),t.setBindGroup(2,this.fontBindGroup(o.curvesTex,o.bandsTex)),t.setBindGroup(3,n),t.setVertexBuffer(0,g),t.draw(6,i)}fontBindGroup(t,r){let n=this.fontBindGroups.get(t);return n||(n=this.device.createBindGroup({layout:this.fontLayout,entries:[{binding:0,resource:t.createView()},{binding:1,resource:r.createView()}]}),this.fontBindGroups.set(t,n)),n}destroy(){this.modelPool.destroy(),this.instancePool.destroy()}};$();var lc=`
1910
1910
  struct SwarmParticle3D {
1911
1911
  pos : vec3<f32>, // world-space position (px, y down)
1912
1912
  age : f32, // seconds alive
@@ -2457,6 +2457,6 @@ fn packInstances(@builtin(global_invocation_id) id : vec3<u32>) {
2457
2457
 
2458
2458
  instances[outIdx] = out;
2459
2459
  }
2460
- `,zo=class{device;simPipeline;packPipeline;bindGroupLayout;constructor(t){this.device=t;let r=t.createShaderModule({label:"swarm3d.wgsl",code:Oc});this.bindGroupLayout=t.createBindGroupLayout({label:"Swarm3DBindGroupLayout",entries:[{binding:0,visibility:GPUShaderStage.COMPUTE,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}},{binding:2,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}}]});let n=t.createPipelineLayout({bindGroupLayouts:[this.bindGroupLayout]});this.simPipeline=t.createComputePipeline({label:"Swarm3DSimPipeline",layout:n,compute:{module:r,entryPoint:"stepSimulation"}}),this.packPipeline=t.createComputePipeline({label:"Swarm3DPackPipeline",layout:n,compute:{module:r,entryPoint:"packInstances"}})}createState(t){let r=Math.max(1,t.variants),n=Math.ceil(t.max/r),o=t.sparks?.max??0,A=t.max+o,i=n*r+o,a=A*80,s=i*64;return{device:this.device,particles:this.device.createBuffer({label:"Swarm3DParticles",size:a,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST}),instances:this.device.createBuffer({label:"Swarm3DInstances",size:s,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST}),ubo:this.device.createBuffer({label:"Swarm3DUbo",size:512,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),frame:-999999,emitted:0,carry:0,sparkEmitted:0,sparkCarry:0,sliceCount:n,totalParticleSlots:A,totalInstanceSlots:i,snapshots:new Map}}packParams(t,r,n,o){n.fill(0);let A=(d,h,I,b,Q)=>n.set([h,I,b,Q],d*4),i=t.sparks?.max??0;A(0,o.dt,o.time,o.emitStart,o.emitCount),A(1,t.max,t.seed,o.frameDt,i),A(2,r.gravity[0],r.gravity[1],r.gravity[2],o.sparkEmitStart),A(3,r.drag,r.noise.strength,r.noise.scale,r.noise.speed);let a=t.emitter.shape==="box"?1:t.emitter.shape==="sphere"?2:t.emitter.shape==="shell"?3:t.emitter.shape==="ring"?4:t.emitter.shape==="disc"?5:0,s=r.emitterPos?r.emitterPos[0]:t.emitter.x,c=r.emitterPos?r.emitterPos[1]:t.emitter.y,l=r.emitterPos?r.emitterPos[2]:t.emitter.z;A(4,a,s,c,l),A(5,t.emitter.width,t.emitter.height,t.emitter.depth,t.emitter.radius),A(6,t.direction[0],t.direction[1],t.direction[2],t.spread),A(7,t.speed[0],t.speed[1],t.lifetime[0],t.lifetime[1]);let u=r.attractors.slice(0,5);A(8,t.angularSpeed[0],t.angularSpeed[1],t.variants,u.length);let g=[0,0,0,0,0];for(let d=0;d<u.length;d++){let h=u[d];h&&(A(9+d,h.x,h.y,h.z,h.radius??0),g[d]=h.strength)}A(17,g[0],g[1],g[2],g[3]),r.vortex?(A(14,r.vortex.x,r.vortex.y,r.vortex.z,r.vortex.swirl),A(15,r.vortex.axis[0],r.vortex.axis[1],r.vortex.axis[2],r.vortex.pull),A(16,r.vortex.axial,r.vortex.radius,o.sparkEmitCount,t.sizeJitter)):A(16,0,0,o.sparkEmitCount,t.sizeJitter),r.floor?A(18,r.floor.y,r.floor.bounce,r.floor.friction,1):A(18,0,0,0,0),A(19,t.size[0],t.size[1],t.fade[0],t.fade[1]);let p=t.heat.source==="friction"?1:t.heat.source==="speed"?2:0;A(20,t.meshRadius??20,o.sliceCount,p,t.heat.maxSpeed);let f=t.colors.slice(0,3);A(21,f.length,t.heat.curve,t.heat.intensity,g[4]);for(let d=0;d<f.length;d++){let h=f[d];h&&A(22+d,h[0],h[1],h[2],h[3])}A(25,r.floor?.heatGain??1,t.angularDrag,r.floor?.heatDecay??.45,0),A(26,t.heat.colors[0][0],t.heat.colors[0][1],t.heat.colors[0][2],1),A(27,t.heat.colors[1][0],t.heat.colors[1][1],t.heat.colors[1][2],1),A(28,t.heat.colors[2][0],t.heat.colors[2][1],t.heat.colors[2][2],1),t.sparks&&(A(29,t.sparks.threshold,t.sparks.size[0],t.sparks.size[1],t.sparks.speed[0]),A(30,t.sparks.lifetime[0],t.sparks.lifetime[1],t.sparks.intensity,t.sparks.speed[1]),A(31,t.sparks.color[0],t.sparks.color[1],t.sparks.color[2],1))}advance(t,r,n,o,A){let{device:i}=t,a=Math.max(0,Math.round((r.prewarm??0)*o));if(n<t.frame||t.frame<-a-1){let b=-999999;for(let m of t.snapshots.keys())m<=n&&m>b&&(b=m);let Q=i.createCommandEncoder({label:"swarm3d_restore"});if(b>=0){let m=t.snapshots.get(b);m&&(Q.copyBufferToBuffer(m.buffer,0,t.particles,0,t.totalParticleSlots*80),t.emitted=m.emitted,t.carry=m.carry,t.sparkEmitted=m.sparkEmitted,t.sparkCarry=m.sparkCarry,t.frame=b)}else Q.clearBuffer(t.particles),Q.clearBuffer(t.instances),t.emitted=0,t.carry=0,t.sparkEmitted=0,t.sparkCarry=0,t.frame=-1-a;i.queue.submit([Q.finish()])}let s=new Float32Array(128),c=Math.max(1,Math.round(r.substeps)),l=1/o,u=l/c,g=i.createBindGroup({layout:this.bindGroupLayout,entries:[{binding:0,resource:{buffer:t.ubo}},{binding:1,resource:{buffer:t.particles}},{binding:2,resource:{buffer:t.instances}}]}),p=Math.ceil(t.totalParticleSlots/64),f=r.sparks?.max??0,d=r.sparks?.rate??0;for(let b=t.frame+1;b<=n;b++){let Q=A(Math.max(0,b)),m=Q.rate*l+t.carry,w=Math.floor(m);t.carry=m-w;let v=Math.floor(w/c),S=w%c,N=f>0?d*l+t.sparkCarry:0,_=Math.floor(N);t.sparkCarry=N-_;let G=Math.floor(_/c),j=_%c;for(let R=0;R<c;R++){let K=v+(S>0?1:0);S>0&&S--;let z=t.emitted%r.max;t.emitted+=K;let J=G+(j>0?1:0);j>0&&j--;let W=f>0?t.sparkEmitted%f:0;t.sparkEmitted+=J,this.packParams(r,Q,s,{dt:u,time:b*l+R*u,emitStart:z,emitCount:K,sparkEmitStart:W,sparkEmitCount:J,frameDt:l,sliceCount:t.sliceCount}),i.queue.writeBuffer(t.ubo,0,s);let X=i.createCommandEncoder({label:`swarm3d_step_${b}_${R}`}),Ae=X.beginComputePass();Ae.setPipeline(this.simPipeline),Ae.setBindGroup(0,g),Ae.dispatchWorkgroups(p),Ae.end(),i.queue.submit([X.finish()])}if(t.frame=b,b>=0&&b%24===0&&t.snapshots.size<64){let R=t.snapshots.get(b);R||(R={buffer:i.createBuffer({label:`swarm3d_snap_${b}`,size:t.totalParticleSlots*80,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),emitted:t.emitted,carry:t.carry,sparkEmitted:t.sparkEmitted,sparkCarry:t.sparkCarry},t.snapshots.set(b,R));let K=i.createCommandEncoder({label:`swarm3d_snap_save_${b}`});K.copyBufferToBuffer(t.particles,0,R.buffer,0,t.totalParticleSlots*80),i.queue.submit([K.finish()])}}let h=i.createCommandEncoder({label:"swarm3d_pack_instances"}),I=h.beginComputePass();I.setPipeline(this.packPipeline),I.setBindGroup(0,g),I.dispatchWorkgroups(p),I.end(),i.queue.submit([h.finish()])}destroyState(t){t.particles.destroy(),t.instances.destroy(),t.ubo.destroy();for(let r of t.snapshots.values())r.buffer.destroy();t.snapshots.clear()}};var Hc={repeat:"repeat",clamp:"clamp-to-edge",mirror:"mirror-repeat"},jc=5e-4,Xa=class{device;format;quad3dPipeline;slug3dPipeline;mesh3dPipeline;audioMeshDeformPipeline;morphPipeline;swarm3dPipeline;floorReflectionPipeline;dofPipeline;dofBindGroupLayout;cameraPool;lightsPool;directLightsPool;instancePool;cameraUniformBindGroupCache=new Aa;samplerCache=new sa;depthTexture=null;linearDepthTexture=null;reflectionColorTexture=null;reflectionMsaaColorTexture=null;reflectionDepthTexture=null;reflectionTempTexture=null;reflectionBlurredTexture=null;msaaColorTexture=null;msaaLinearDepthTexture=null;msaaHdrTexture=null;hdrTexture=null;passWritesHdr=!1;cameraUniformData=new Float32Array(80);meshBuffersCache=new WeakMap;materialTextures=new WeakMap;materialMapCache=new WeakMap;modelCache=new Map;lastCameraPose=null;shadowTexture=null;shadowTextures=new Map;placeholderShadowTexture=null;shadowSampler=null;meshBounds=new WeakMap;bloomPipeline=null;lastCameraBuffer=null;sampleCount;constructor(t,r,n=4){this.device=t,this.format=r,this.sampleCount=n,this.quad3dPipeline=new Ho(t,r,"depth24plus",n),this.slug3dPipeline=new Ko(t,r,"depth24plus",this.quad3dPipeline.cameraLayout,this.quad3dPipeline.lightsLayout,n),this.mesh3dPipeline=new jo(t,r,"depth24plus",this.quad3dPipeline.cameraLayout,this.quad3dPipeline.lightsLayout,n),this.audioMeshDeformPipeline=new _o(t),this.morphPipeline=new Vo(t),this.swarm3dPipeline=new zo(t),this.floorReflectionPipeline=new To(t,r,n,this.quad3dPipeline.cameraLayout,this.quad3dPipeline.lightsLayout,"depth24plus"),this.cameraPool=new We(320,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.lightsPool=new We(cA,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.directLightsPool=new We(64,GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST),this.instancePool=new We(65536,GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST);let o=t.createShaderModule({label:"dof-bokeh.wgsl",code:Fa});this.dofBindGroupLayout=t.createBindGroupLayout({label:"DoFBindGroupLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]}),this.dofPipeline=t.createRenderPipeline({label:"DoFBokehPipeline",layout:t.createPipelineLayout({bindGroupLayouts:[this.dofBindGroupLayout]}),vertex:{module:o,entryPoint:"vs_fullscreen"},fragment:{module:o,entryPoint:"fs_dof",targets:[{format:r}]},primitive:{topology:"triangle-list"}})}resetPools(){this.bloomPipeline?.resetPools(),this.cameraPool.reset(),this.lastCameraPose=null,this.lastCameraBuffer=null,this.lightsPool.reset(),this.directLightsPool.reset(),this.instancePool.reset(),this.quad3dPipeline.resetPools(),this.slug3dPipeline.resetPools(),this.mesh3dPipeline.resetPools(),this.audioMeshDeformPipeline.resetPools(),this.morphPipeline.resetPools()}getOrCreateDepthTexture(t,r){return(!this.depthTexture||this.depthTexture.width!==t||this.depthTexture.height!==r)&&(this.depthTexture?.destroy(),this.depthTexture=this.device.createTexture({label:"Renderer3DDepthTexture",size:{width:t,height:r},format:"depth24plus",sampleCount:this.sampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT})),this.depthTexture}getOrCreateMsaaTexture(t,r,n,o,A){return t&&t.width===o&&t.height===A?t:(t?.destroy(),this.device.createTexture({label:r,size:{width:o,height:A},format:n,sampleCount:this.sampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}))}hdrSource(){return this.hdrTexture}getOrCreateHdrTexture(t,r){return(!this.hdrTexture||this.hdrTexture.width!==t||this.hdrTexture.height!==r)&&(this.hdrTexture?.destroy(),this.hdrTexture=this.device.createTexture({label:"Renderer3DHdrRadiance",size:{width:t,height:r},format:"rgba16float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),this.hdrTexture}getOrCreateLinearDepthTexture(t,r){return(!this.linearDepthTexture||this.linearDepthTexture.width!==t||this.linearDepthTexture.height!==r)&&(this.linearDepthTexture?.destroy(),this.linearDepthTexture=this.device.createTexture({label:"Renderer3DLinearDepthTexture",size:{width:t,height:r},format:"rgba16float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),this.linearDepthTexture}getOrCreateReflectionTexture(t,r){return(!this.reflectionColorTexture||this.reflectionColorTexture.width!==t||this.reflectionColorTexture.height!==r)&&(this.reflectionColorTexture?.destroy(),this.reflectionColorTexture=this.device.createTexture({label:"Renderer3DReflectionColor",size:{width:t,height:r},format:this.format,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),this.reflectionColorTexture}getOrCreateReflectionMsaaTexture(t,r){return(!this.reflectionMsaaColorTexture||this.reflectionMsaaColorTexture.width!==t||this.reflectionMsaaColorTexture.height!==r)&&(this.reflectionMsaaColorTexture?.destroy(),this.reflectionMsaaColorTexture=this.device.createTexture({label:"Renderer3DReflectionMsaaColor",size:{width:t,height:r},format:this.format,sampleCount:this.sampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT})),this.reflectionMsaaColorTexture}getOrCreateReflectionDepthTexture(t,r){return(!this.reflectionDepthTexture||this.reflectionDepthTexture.width!==t||this.reflectionDepthTexture.height!==r)&&(this.reflectionDepthTexture?.destroy(),this.reflectionDepthTexture=this.device.createTexture({label:"Renderer3DReflectionDepth",size:{width:t,height:r},format:"depth24plus",sampleCount:this.sampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT})),this.reflectionDepthTexture}getOrCreateReflectionTempTexture(t,r){return(!this.reflectionTempTexture||this.reflectionTempTexture.width!==t||this.reflectionTempTexture.height!==r)&&(this.reflectionTempTexture?.destroy(),this.reflectionTempTexture=this.device.createTexture({label:"Renderer3DReflectionTemp",size:{width:t,height:r},format:this.format,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),this.reflectionTempTexture}getOrCreateReflectionBlurredTexture(t,r){return(!this.reflectionBlurredTexture||this.reflectionBlurredTexture.width!==t||this.reflectionBlurredTexture.height!==r)&&(this.reflectionBlurredTexture?.destroy(),this.reflectionBlurredTexture=this.device.createTexture({label:"Renderer3DReflectionBlurred",size:{width:t,height:r},format:this.format,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),this.reflectionBlurredTexture}packCameraUniforms(t,r,n,o=0){if(this.lastCameraPose&&this.lastCameraBuffer&&this.lastCameraPose.eye[0]===t.eye[0]&&this.lastCameraPose.eye[1]===t.eye[1]&&this.lastCameraPose.eye[2]===t.eye[2]&&this.lastCameraPose.target[0]===t.target[0]&&this.lastCameraPose.target[1]===t.target[1]&&this.lastCameraPose.target[2]===t.target[2]&&this.lastCameraPose.up[0]===t.up[0]&&this.lastCameraPose.up[1]===t.up[1]&&this.lastCameraPose.up[2]===t.up[2]&&this.lastCameraPose.fov===t.fov&&this.lastCameraPose.near===t.near&&this.lastCameraPose.far===t.far)return this.lastCameraBuffer;let A=Xr.computeViewMatrix(t),i=Xr.computeProjectionMatrix(t),a=Xr.computeViewProjectionMatrix(t),s=Ee.invert(a)??Ee.identity();this.cameraUniformData.set(A,0),this.cameraUniformData.set(i,16),this.cameraUniformData.set(a,32),this.cameraUniformData.set(s,48),this.cameraUniformData[64]=t.eye[0],this.cameraUniformData[65]=t.eye[1],this.cameraUniformData[66]=t.eye[2],this.cameraUniformData[67]=t.near;let c=Z.normalize(Z.subtract(t.target,t.eye));this.cameraUniformData[68]=c[0],this.cameraUniformData[69]=c[1],this.cameraUniformData[70]=c[2],this.cameraUniformData[71]=t.far,this.cameraUniformData[72]=t.focusDistance??1e3,this.cameraUniformData[73]=t.fStop??2.8,this.cameraUniformData[74]=t.maxBlurRadius??32,this.cameraUniformData[75]=t.focusDistance!==void 0?1:0,this.cameraUniformData[76]=r,this.cameraUniformData[77]=n,this.cameraUniformData[78]=o,this.cameraUniformData[79]=0;let l=this.cameraPool.getBuffer(this.device,this.cameraUniformData);return this.lastCameraPose=t,this.lastCameraBuffer=l,l}createCameraBindGroup(t){return this.cameraUniformBindGroupCache.getBindGroup(this.device,this.quad3dPipeline.cameraLayout,t)}getOrCreateLightsBuffer(t,r){let n=vt.packLightsUniforms(t??[],r?.environment,Array.isArray(r?.shadow)?r.shadow[0]:r?.shadow);return this.lightsPool.getBuffer(this.device,n)}createLightsBindGroup(t,r,n,o){let A=vt.packDirectLights(n,o);if(A.byteLength>this.device.limits.maxStorageBufferBindingSize)throw new Error(`Direct lights require ${A.byteLength} bytes, exceeding the device storage binding limit of ${this.device.limits.maxStorageBufferBindingSize} bytes`);let i=this.directLightsPool.getBuffer(this.device,A);this.shadowSampler??=this.device.createSampler({label:"ShadowComparisonSampler",compare:"less-equal",magFilter:"linear",minFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}),this.placeholderShadowTexture??=this.device.createTexture({label:"ShadowMapPlaceholder",size:{width:1,height:1},format:Oo,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.RENDER_ATTACHMENT});let a=r&&this.shadowTexture?this.shadowTexture:this.placeholderShadowTexture;return this.device.createBindGroup({label:"Lights3DBindGroup",layout:this.quad3dPipeline.lightsLayout,entries:[{binding:0,resource:{buffer:t}},{binding:1,resource:a.createView({dimension:"2d-array"})},{binding:2,resource:this.shadowSampler},{binding:3,resource:{buffer:i}}]})}meshAabb(t){let r=this.meshBounds.get(t);if(!r){let n=[1/0,1/0,1/0],o=[-1/0,-1/0,-1/0],A=t.positions;for(let i=0;i+2<A.length;i+=3)for(let a=0;a<3;a++){let s=A[i+a];s<n[a]&&(n[a]=s),s>o[a]&&(o[a]=s)}r=Number.isFinite(n[0])?{min:n,max:o}:{min:[0,0,0],max:[0,0,0]},this.meshBounds.set(t,r)}return r}worldBounds(t){return t.kind==="mesh"?t.opts.bounds?t.opts.bounds:xA(this.meshAabb(t.mesh),this.meshModelMatrix(t.opts)):xA({min:[-.5,-.5,0],max:[.5,.5,0]},this.quadModelMatrix(t.opts))}renderShadowMap(t,r,n,o,A,i={}){let a=r.lightType??r.type;if(a!=="directional"&&a!=="spot")return null;let s=vt.processLight(r),c=[s.posType[0],s.posType[1],s.posType[2]],l=[s.dirRadius[0],s.dirRadius[1],s.dirRadius[2]],u=i.mapSize??2048,g=i.layer??0,p=i.layerCount??1;if(p>this.device.limits.maxTextureArrayLayers)throw new Error(`Shadow maps require ${p} texture layers, exceeding the device limit of ${this.device.limits.maxTextureArrayLayers}`);let f=o.map(v=>this.worldBounds(v)),d=Ya({type:a,position:c,direction:l,angle:r.angle},f,A,u);if(!d)return null;let h=`${u}:${p}`,I=this.shadowTextures.get(h);I||(I=this.device.createTexture({label:"ShadowMap",size:{width:u,height:u,depthOrArrayLayers:p},format:Oo,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),this.shadowTextures.set(h,I)),this.shadowTexture=I;let b=new Float32Array(80);b.set(d.viewProj,32),b.set(d.viewProj,0),b[5]=1,b.set(d.viewProj,16),b[64]=c[0],b[65]=c[1],b[66]=c[2],b[68]=l[0],b[69]=l[1],b[70]=l[2],b[76]=u,b[77]=u;let Q=this.createCameraBindGroup(this.cameraPool.getBuffer(this.device,b)),m=t.beginRenderPass({label:"ShadowMapPass",colorAttachments:[],depthStencilAttachment:{view:this.shadowTexture.createView({dimension:"2d",baseArrayLayer:g,arrayLayerCount:1}),depthClearValue:1,depthLoadOp:"clear",depthStoreOp:"store"}}),w=this.samplerCache.getSampler(this.device);for(let v of o)if(v.kind==="mesh"){let S=this.meshModelMatrix(v.opts);this.mesh3dPipeline.drawShadow(m,Q,v.buffers??this.getOrCreateMeshBuffers(v.mesh,v.opts.wireframe),{modelMatrix:S,normalMatrix:v.opts.normalMatrix??vt.computeNormalMatrix(S),wireframe:v.opts.wireframe,isSkinned:v.opts.isSkinned,skinningMatrices:v.opts.skinningMatrices,isInstanced:!!(v.opts.instanceBuffer||v.opts.instanceCount&&v.opts.instanceCount>1),instanceBuffer:v.opts.instanceBuffer},v.opts.instanceCount??1,v.opts.firstInstance??0)}else{let S=this.quadModelMatrix(v.opts);this.quad3dPipeline.drawShadow(m,Q,v.texture,w,{modelMatrix:S,normalMatrix:S,width:v.opts.width,height:v.opts.height,textureExtent:v.opts.textureExtent,opacity:v.opts.opacity,colorTint:v.opts.colorTint,relief:v.opts.relief})}return m.end(),{matrix:d.viewProj,lightIndex:n,mapSize:u,softness:i.softness??r.shadowSoftness??2.5,bias:a==="directional"?6e-4:8e-5,normalOffset:d.texelWorldSize*1.5,darkness:i.darkness??r.shadowDarkness??1}}beginPass(t,r,n,o,A,i="clear",a={r:0,g:0,b:0,a:0},s,c,l,u=!1){let g=this.getOrCreateDepthTexture(n,o),p=this.packCameraUniforms(A,n,o),f=this.createCameraBindGroup(p),d=this.getOrCreateLightsBuffer(c,l),h=this.createLightsBindGroup(d,!!l?.shadow,c??[],l?.shadow?Array.isArray(l.shadow)?l.shadow:[l.shadow]:[]),I=this.sampleCount>1;if(I&&i==="load")throw new Error("Renderer3D.beginPass: loadOp 'load' needs a Renderer3D built with sampleCount 1");let b=(w,v,S,N)=>v?{view:v.createView(),resolveTarget:w,loadOp:"clear",storeOp:"discard",clearValue:S}:{view:w,loadOp:N,storeOp:"store",clearValue:S};I&&(this.msaaColorTexture=this.getOrCreateMsaaTexture(this.msaaColorTexture,"Renderer3DMsaaColor",this.format,n,o));let Q=[b(r,I?this.msaaColorTexture:null,a,i)];return s&&(I&&(this.msaaLinearDepthTexture=this.getOrCreateMsaaTexture(this.msaaLinearDepthTexture,"Renderer3DMsaaLinearDepth","rgba16float",n,o)),Q.push(b(s,I?this.msaaLinearDepthTexture:null,{r:A.far,g:0,b:0,a:1},"clear"))),this.passWritesHdr=u,u&&(this.hdrTexture=this.getOrCreateHdrTexture(n,o),I&&(this.msaaHdrTexture=this.getOrCreateMsaaTexture(this.msaaHdrTexture,"Renderer3DMsaaHdr","rgba16float",n,o)),Q.push(b(this.hdrTexture.createView(),I?this.msaaHdrTexture:null,{r:0,g:0,b:0,a:0},"clear"))),{pass:t.beginRenderPass({colorAttachments:Q,depthStencilAttachment:{view:g.createView(),depthClearValue:1,depthLoadOp:"clear",depthStoreOp:I?"discard":"store"}}),cameraBindGroup:f,cameraBuffer:p,lightsBindGroup:h}}beginReflectionPass(t,r,n,o,A,i){this.passWritesHdr=!1;let a=Math.max(1,Math.floor(r/2)),s=Math.max(1,Math.floor(n/2)),c=this.getOrCreateReflectionTexture(a,s),l=this.getOrCreateReflectionDepthTexture(a,s),u=this.packCameraUniforms(o,a,s),g=this.createCameraBindGroup(u),p=vt.packLightsUniforms(A??[],i?.environment,Array.isArray(i?.shadow)?i.shadow[0]:i?.shadow,!0),f=this.lightsPool.getBuffer(this.device,p),d=this.createLightsBindGroup(f,!!i?.shadow,A??[],i?.shadow?Array.isArray(i.shadow)?i.shadow:[i.shadow]:[]),h=this.sampleCount>1,I=h?this.getOrCreateReflectionMsaaTexture(a,s):null,b=[I?{view:I.createView(),resolveTarget:c.createView(),loadOp:"clear",storeOp:"discard",clearValue:{r:0,g:0,b:0,a:0}}:{view:c.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}];return{pass:t.beginRenderPass({colorAttachments:b,depthStencilAttachment:{view:l.createView(),depthClearValue:1,depthLoadOp:"clear",depthStoreOp:h?"discard":"store"}}),cameraBindGroup:g,lightsBindGroup:d,reflectionTexture:c}}blurReflection(t,r,n){if(n<=.001)return r;let o=r.width,A=r.height,i=this.getOrCreateReflectionTempTexture(o,A),a=this.getOrCreateReflectionBlurredTexture(o,A);return this.floorReflectionPipeline.applyBlur(t,r,i,a,o,A,n),a}drawFloor(t,r,n,o,A,i=!1,a=!1){this.floorReflectionPipeline.draw(t,r,n,o,A,i,a)}quadModelMatrix(t){if(t.modelMatrix)return t.modelMatrix;let{position:r,width:n,height:o,rotation:A=[0,0,0],scale:i=[1,1,1],anchor:a=[.5,.5]}=t,s=Ee.identity();s=Ee.multiply(s,Ee.translate(r[0],r[1],r[2]));let c=A[0]*Math.PI/180,l=A[1]*Math.PI/180,u=A[2]*Math.PI/180;u!==0&&(s=Ee.multiply(s,Ee.rotateZ(u))),l!==0&&(s=Ee.multiply(s,Ee.rotateY(l))),c!==0&&(s=Ee.multiply(s,Ee.rotateX(c)));let g=n*i[0],p=o*i[1],f=i[2];s=Ee.multiply(s,Ee.scale(g,p,f));let d=.5-a[0],h=.5-a[1];return(d!==0||h!==0)&&(s=Ee.multiply(s,Ee.translate(d,h,0))),s}drawSlugText(t,r,n,o,A,i=0,a=!1){let{width:s,height:c}=A;if(!(s>0&&c>0))return;let l=this.quadModelMatrix(A),u=A.normalMatrix??vt.computeNormalMatrix(l),g=Ee.multiply(l,Ee.multiply(Ee.translate(-.5,-.5,0),Ee.scale(1/s,1/c,1)));for(let p=0;p<o.length;p++){let f=o[p],[d,h,I,b,Q,m]=f.transform,w=[d,h,0,0,I,b,0,0,0,0,1,0,Q,m,0,1];this.slug3dPipeline.draw(t,r,n,f.font,f.instances,f.instanceCount,{modelMatrix:Ee.multiply(g,w),normalMatrix:u,opacity:f.opacity*(A.opacity??1),slant:f.slant,twoSided:A.twoSided??!0,depthPull:jc*(i+p+1),material:A.material,shininess:A.shininess??32,roughness:A.roughness,specularIntensity:A.specularIntensity??.5,ambientIntensity:A.ambientIntensity??1,metallic:A.metallic,emissive:A.emissive,emissiveIntensity:A.emissiveIntensity,matte:A.matte},a,this.passWritesHdr)}}drawTextureQuad(t,r,n,o,A,i=!1){let{width:a,height:s,opacity:c=1,colorTint:l=[1,1,1,1],borderColor:u,borderWidth:g=0,borderRadius:p=0,twoSided:f=!0,material:d="lit",shininess:h=32,roughness:I,specularIntensity:b=.5,ambientIntensity:Q=1,metallic:m}=A,w=this.quadModelMatrix(A),v=A.normalMatrix??vt.computeNormalMatrix(w),S=this.samplerCache.getSampler(this.device),N;if(u)if(Array.isArray(u))N=u;else{let _=qr(u);N=[_.r,_.g,_.b,_.a]}this.quad3dPipeline.draw(t,r,n,o,S,{modelMatrix:w,normalMatrix:v,colorTint:l,borderColor:N,borderWidth:g,opacity:c,borderRadius:p,twoSided:f,width:a,height:s,textureExtent:A.textureExtent,material:d,shininess:h,roughness:I,specularIntensity:b,ambientIntensity:Q,metallic:m,emissive:A.emissive,emissiveIntensity:A.emissiveIntensity,matte:A.matte,relief:A.relief},i,this.passWritesHdr)}meshModelMatrix(t){if(t.modelMatrix)return t.modelMatrix;let{position:r=[0,0,0],rotation:n=[0,0,0],scale:o=[1,1,1]}=t,A=Ee.translate(r[0],r[1],r[2]),i=n[0]*Math.PI/180,a=n[1]*Math.PI/180,s=n[2]*Math.PI/180;return s!==0&&(A=Ee.multiply(A,Ee.rotateZ(s))),a!==0&&(A=Ee.multiply(A,Ee.rotateY(a))),i!==0&&(A=Ee.multiply(A,Ee.rotateX(i))),Ee.multiply(A,Ee.scale(o[0],o[1],o[2]))}getOrCreateMeshBuffers(t,r=!1){let n=this.meshBuffersCache.get(t);if(n)return r&&(!t.topology||t.topology==="triangle-list")&&this.ensureWireIndices(t,n),n;let o=t.positions.length/3,A=new Float32Array(o*16);for(let p=0;p<o;p++){let f=p*16;A[f]=t.positions[p*3]??0,A[f+1]=t.positions[p*3+1]??0,A[f+2]=t.positions[p*3+2]??0,A[f+3]=t.uvs[p*2]??0,A[f+4]=t.uvs[p*2+1]??0,A[f+5]=t.normals[p*3]??0,A[f+6]=t.normals[p*3+1]??0,A[f+7]=t.normals[p*3+2]??1,t.jointIndices?(A[f+8]=t.jointIndices[p*4]??0,A[f+9]=t.jointIndices[p*4+1]??0,A[f+10]=t.jointIndices[p*4+2]??0,A[f+11]=t.jointIndices[p*4+3]??0):(A[f+8]=0,A[f+9]=0,A[f+10]=0,A[f+11]=0),t.jointWeights?(A[f+12]=t.jointWeights[p*4]??0,A[f+13]=t.jointWeights[p*4+1]??0,A[f+14]=t.jointWeights[p*4+2]??0,A[f+15]=t.jointWeights[p*4+3]??0):(A[f+12]=0,A[f+13]=0,A[f+14]=0,A[f+15]=0)}let i=Math.ceil(A.byteLength/4)*4,a=this.device.createBuffer({size:Math.max(4,i),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC,mappedAtCreation:!0});new Float32Array(a.getMappedRange()).set(A),a.unmap();let s=t.indices instanceof Uint32Array,c=Math.ceil(t.indices.byteLength/4)*4,l=this.device.createBuffer({size:Math.max(4,c),usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});s?new Uint32Array(l.getMappedRange()).set(t.indices):new Uint16Array(l.getMappedRange()).set(t.indices),l.unmap();let u;t.colors&&t.colors.length>=o*4&&(u=this.device.createBuffer({label:"Mesh3DVertexColors",size:Math.max(16,o*16),usage:GPUBufferUsage.VERTEX,mappedAtCreation:!0}),new Float32Array(u.getMappedRange()).set(t.colors.subarray(0,o*4)),u.unmap());let g;if(t.mapUvs&&Object.values(t.mapUvs).some(Boolean)){let p=new Float32Array(o*8),f=[t.mapUvs.normal,t.mapUvs.metallicRoughness,t.mapUvs.occlusion,t.mapUvs.emissive];for(let d=0;d<o;d++)for(let h=0;h<f.length;h++){let I=f[h]??t.uvs;p[d*8+h*2]=I[d*2]??0,p[d*8+h*2+1]=I[d*2+1]??0}g=this.device.createBuffer({label:"Mesh3DMapUvs",size:Math.max(32,p.byteLength),usage:GPUBufferUsage.VERTEX,mappedAtCreation:!0}),new Float32Array(g.getMappedRange()).set(p),g.unmap()}return n={vertexBuffer:a,indexBuffer:l,indexCount:t.indices.length,indexFormat:s?"uint32":"uint16",topology:t.topology,colorBuffer:u,mapUvBuffer:g},this.meshBuffersCache.set(t,n),r&&(!t.topology||t.topology==="triangle-list")&&this.ensureWireIndices(t,n),n}ensureWireIndices(t,r){if(r.wireIndexBuffer)return;let n=new Set,o=[];for(let a=0;a+2<t.indices.length;a+=3){let s=[t.indices[a],t.indices[a+1],t.indices[a+2]];for(let c=0;c<3;c++){let l=s[c],u=s[(c+1)%3];if(l===u)continue;let g=l<u?`${l},${u}`:`${u},${l}`;n.has(g)||(n.add(g),o.push(l,u))}}let A=r.indexFormat==="uint32"?new Uint32Array(o):new Uint16Array(o),i=this.device.createBuffer({label:"Mesh3DWireIndices",size:Math.max(4,Math.ceil(A.byteLength/4)*4),usage:GPUBufferUsage.INDEX,mappedAtCreation:!0});A instanceof Uint32Array?new Uint32Array(i.getMappedRange()).set(A):new Uint16Array(i.getMappedRange()).set(A),i.unmap(),r.wireIndexBuffer=i,r.wireIndexCount=A.length}morphMesh(t,r,n,o=!1){let A=this.getOrCreateMeshBuffers(r,o);return!r.morphTargets?.length||!n.some(i=>i!==0)?A:{...A,vertexBuffer:this.morphPipeline.execute(t,r,A.vertexBuffer,n)}}deformMesh(t,r,n,o=!1,A){let i=A??this.getOrCreateMeshBuffers(r,o),a=r.positions.length/3;return{vertexBuffer:this.audioMeshDeformPipeline.execute(t,i.vertexBuffer,{config:n.config,audioLatentBuffer:n.latentBuffer,vertexCount:a,timeMs:n.timeMs,sampleRate:n.sampleRate}),indexBuffer:i.indexBuffer,indexCount:i.indexCount,indexFormat:i.indexFormat,topology:i.topology,colorBuffer:i.colorBuffer,mapUvBuffer:i.mapUvBuffer,wireIndexBuffer:i.wireIndexBuffer,wireIndexCount:i.wireIndexCount}}drawMesh3D(t,r,n,o,A,i={},a=!1){let s="vertexBuffer"in o?o:this.getOrCreateMeshBuffers(o,i.wireframe),{opacity:c=1,colorTint:l=[1,1,1,1],twoSided:u=!0,wireframe:g=!1,isSkinned:p=!1,skinningMatrices:f,material:d="lit",shadeColor:h,alphaCutoff:I,textureWrap:b="clamp",textureFilter:Q="linear",shininess:m=32,roughness:w,specularIntensity:v=.5,ambientIntensity:S=1,metallic:N}=i,_=this.meshModelMatrix(i),G=i.normalMatrix??vt.computeNormalMatrix(_),j=Hc[b],R=this.samplerCache.getSampler(this.device,{addressModeU:j,addressModeV:j,magFilter:Q,...Q==="nearest"&&{maxAnisotropy:1}}),K=d==="glass"||d==="acrylic"||d==="frosted",z=K?{ior:i.ior??(d==="acrylic"?1.49:1.5),dispersion:i.dispersion??(d==="glass"?.04:.015),thickness:i.thickness??80,frost:d==="frosted"?w??.5:0}:void 0;this.mesh3dPipeline.draw(t,r,n,s,A,R,{glass:z,backdrop:i.backdrop,modelMatrix:_,normalMatrix:G,colorTint:l,opacity:c,twoSided:u,wireframe:g,transparent:i.transparent??(c<1||l[3]<1),isSkinned:p,skinningMatrices:f,material:d==="unlit"||d==="toon"?d:"lit",shadeColor:h,alphaCutoff:I,shininess:m,roughness:K?Math.min(w??.05,.3):w,specularIntensity:v,ambientIntensity:S,metallic:N,emissive:i.emissive,emissiveIntensity:i.emissiveIntensity,matte:i.matte,maps:i.maps,isInstanced:!!(i.instanceBuffer||i.instanceCount&&i.instanceCount>1),instanceBuffer:i.instanceBuffer,matrixInstances:i.matrixInstances},a,this.passWritesHdr,i.instanceCount??1,i.firstInstance??0)}loadModel(t,r="auto",n={}){if(typeof t!="string")return Za(t,r,n);let o=`${r}|${JSON.stringify(n)}|${t}`,A=this.modelCache.get(o);return A||(A=Za(t,r,n),this.modelCache.set(o,A)),A}async loadModelAsync(t,r="auto",n={}){if(!(r==="gltf"||r==="glb"||r==="auto"&&(typeof t=="string"?/\.(gltf|glb)$/i.test(t)||t.trimStart().startsWith("{"):mr.isGlb(t))))return this.loadModel(t,r,n);if(typeof t!="string")return IA(t,n);let A=`${r}|${JSON.stringify(n)}|${t}`,i=this.modelCache.get(A);if(i)return i;let a=await IA(t,n);return this.modelCache.set(A,a),a}materialTexture(t){let r=this.materialTextures.get(t);return r||(r=this.uploadMaterialTexture(t),this.materialTextures.set(t,r)),r}materialMaps(t){let r=this.materialMapCache.get(t);return r||(r=(async()=>{let n=t.name,[o,A,i,a]=await Promise.all([this.uploadImage(t.normalTextureBuffer,`${n}:normal`),this.uploadImage(t.metallicRoughnessTextureBuffer,`${n}:metallicRoughness`),this.uploadImage(t.occlusionTextureBuffer,`${n}:occlusion`),this.uploadImage(t.emissiveTextureBuffer,`${n}:emissive`)]);return{...o&&{normal:o,normalScale:t.normalScale??1},...A&&{metallicRoughness:A},...i&&{occlusion:i,occlusionStrength:t.occlusionStrength??1},...a&&{emissive:a}}})(),this.materialMapCache.set(t,r)),r}uploadMaterialTexture(t){return this.uploadImage(t.diffuseTextureBuffer,`Material:${t.name}`)}async uploadImage(t,r){if(!t)return;let n=t instanceof Uint8Array?t:new Uint8Array(t);if(Oa(n)){let l=await Ha(n),u=this.device.createTexture({label:r,size:{width:l.width,height:l.height},mipLevelCount:l.levels.length,format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});for(let[g,p]of l.levels.entries()){let f=Math.max(1,l.width>>g),d=Math.max(1,l.height>>g);this.device.queue.writeTexture({texture:u,mipLevel:g},p,{bytesPerRow:f*4,rowsPerImage:d},{width:f,height:d})}return u}let o=(await import("./sharp-O7VCPA7A.mjs")).default,A=Buffer.from(t instanceof Uint8Array?t:new Uint8Array(t)),i,a;try{({width:i,height:a}=await o(A).metadata())}catch(l){console.warn(`[Renderer3D] Could not decode texture "${r}"; drawing without it:`,l instanceof Error?l.message:l);return}if(!i||!a)return;let s=Math.floor(Math.log2(Math.max(i,a)))+1,c=this.device.createTexture({label:r,size:{width:i,height:a},mipLevelCount:s,format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});for(let l=0;l<s;l++){let u=Math.max(1,i>>l),g=Math.max(1,a>>l),p=await o(A).ensureAlpha().resize(u,g,{fit:"fill"}).raw().toBuffer();this.device.queue.writeTexture({texture:c,mipLevel:l},p,{bytesPerRow:u*4,rowsPerImage:g},{width:u,height:g})}return c}applyBloom(t,r,n,o={},A){this.bloomPipeline??=new ko(this.device),this.bloomPipeline.apply(t,r,n,o,A??void 0)}applyDepthOfField(t,r,n,o,A){let i=this.samplerCache.getSampler(this.device),a=this.device.createBindGroup({layout:this.dofBindGroupLayout,entries:[{binding:0,resource:{buffer:A}},{binding:1,resource:i},{binding:2,resource:r.createView()},{binding:3,resource:n.createView()}]}),s=t.beginRenderPass({colorAttachments:[{view:o,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});s.setPipeline(this.dofPipeline),s.setBindGroup(0,a),s.draw(3),s.end()}uploadInstanceData(t){return this.instancePool.getBuffer(this.device,t)}drawMesh3DInstanced(t,r,n,o,A,i,a=void 0,s={},c=!1){this.drawMesh3D(t,r,n,o,a,{...s,instanceBuffer:A,instanceCount:i},c)}destroy(){this.bloomPipeline?.destroy(),this.depthTexture?.destroy();for(let t of this.shadowTextures.values())t.destroy();this.shadowTextures.clear(),this.placeholderShadowTexture?.destroy(),this.linearDepthTexture?.destroy(),this.msaaColorTexture?.destroy(),this.msaaLinearDepthTexture?.destroy(),this.msaaHdrTexture?.destroy(),this.hdrTexture?.destroy(),this.quad3dPipeline.destroy(),this.slug3dPipeline.destroy(),this.mesh3dPipeline.destroy(),this.morphPipeline.destroy(),this.floorReflectionPipeline.destroy(),this.reflectionColorTexture?.destroy(),this.reflectionMsaaColorTexture?.destroy(),this.reflectionDepthTexture?.destroy(),this.reflectionTempTexture?.destroy(),this.reflectionBlurredTexture?.destroy(),this.cameraPool.destroy(),this.lightsPool.destroy(),this.directLightsPool.destroy(),this.instancePool.destroy(),this.cameraUniformBindGroupCache.destroy()}};function Za(e,t="auto",r={}){if(t==="gltf"||t==="glb")return Go(e,r);if(t==="stl")return Ao(e,r);if(t==="ply")return io(e,r);if(t==="vox")return Ro(e,r);if(t==="3ds")return Fo(e,r);if(t==="off")return Uo(e,r);if(t==="fbx")return no(e,r);if(t==="obj")return to(e,void 0,r);let n=typeof e!="string",o=typeof e=="string"?e.trim():"",A=o.toLowerCase();if(A.endsWith(".glb")||A.endsWith(".gltf"))return Go(e,r);if(A.endsWith(".stl"))return Ao(e,r);if(A.endsWith(".ply"))return io(e,r);if(A.endsWith(".vox"))return Ro(e,r);if(A.endsWith(".3ds"))return Fo(e,r);if(A.endsWith(".off"))return Uo(e,r);if(A.endsWith(".fbx"))return no(e,r);if(A.endsWith(".obj"))return to(e,void 0,r);if(n){let i=e instanceof Uint8Array?e:new Uint8Array(e);return mr.isGlb(i)?Ra(i,r):Jr.isBinary(i)?no(i,r):ao.isVox(i)?Ro(i,r):so.is3DS(i)?Fo(i,r):i.length>=3&&i[0]===112&&i[1]===108&&i[2]===121?io(i,r):oo.isBinary(i)?Ao(i,r):to(i,void 0,r)}return o.startsWith("{")&&(o.includes('"asset"')||o.includes('"meshes"'))?Go(o,r):o.startsWith("ply")||o.startsWith("PLY")?io(o,r):o.startsWith("OFF")||o.startsWith("NOFF")||o.startsWith("COFF")?Uo(o,r):o.includes("FBXHeaderExtension")||o.includes("Kaydara FBX")?no(o,r):o.startsWith("solid")&&o.includes("facet")?Ao(o,r):to(e,void 0,r)}$();var{cbrt:wA,sqrt:vA,PI:nn}=Math,Vc=(e,t,r,n,o)=>{let A=t+r*e,i=A**2+n;if(i>0){let l=vA(i);return wA(A+l)+wA(A-l)-o}let a=wA(vA(A*A-i)),s=A?Math.atan(vA(-i)/A):-nn/2,c;return r<0?c=(A>0?2*nn:nn)-s:o<0?c=(A>0?2*nn:-3*nn)+s:c=(A>0?0:nn)+s,2*a*Math.cos(c/3)-o},Jc=(e,t,r,n)=>((t*e+3*r)*e+n)*e,DA=e=>e;function $a(e,t,r,n){if(!(0<=e&&e<=1&&0<=r&&r<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===t&&r===n)return DA;let o=6*(3*e-3*r+1),A=6*(r-2*e),i=3*e,a=o*o,s=A*A,c=A/o,l=3*A*i/a-s*A/(a*o),u=2*i/o-s/a,g=u*u*u,p=3/o,f=3*t-3*n+1,d=n-2*t,h=3*t,I=o?Vc:DA;return function(Q){return Q===0||Q===1?Q:Jc(I(Q,l,p,g,c),f,d,h)}}var Wf={linear:DA,ease:$a(.25,.1,.25,1),quad:e=>e*e,cubic:e=>e*e*e,poly:e=>t=>t**e,sin:e=>1-Math.cos(e*Math.PI/2),circle:e=>1-Math.sqrt(1-e*e),exp:e=>2**(10*(e-1)),elastic:(e=1)=>{let t=e*Math.PI;return r=>1-Math.cos(r*Math.PI/2)**3*Math.cos(r*t)},back:(e=1.70158)=>t=>t*t*((e+1)*t-e),bounce:e=>{if(e<1/2.75)return 7.5625*e*e;if(e<2/2.75){let r=e-.5454545454545454;return 7.5625*r*r+.75}if(e<2.5/2.75){let r=e-.8181818181818182;return 7.5625*r*r+.9375}let t=e-2.625/2.75;return 7.5625*t*t+.984375},bezier:$a,in:e=>e,out:e=>t=>1-e(1-t),inOut:e=>t=>t<.5?e(t*2)/2:1-e((1-t)*2)/2};function es(e,t,r,n){let o=n?.extrapolateLeft??"extend",A=n?.extrapolateRight??"extend";if(t.length!==r.length)throw new Error("inputRange and outputRange must have the same length");if(t.length<2)throw new Error("inputRange must have at least 2 elements");let i=t[0],a=t[t.length-1];if(e<i){if(o==="clamp")return r[0];if(o==="identity")return e}if(e>a){if(A==="clamp")return r[r.length-1];if(A==="identity")return e}let s=1;for(;s<t.length-1&&!(e<t[s]);s++);let c=t[s-1],l=t[s],u=r[s-1],g=r[s];if(c===l)return u;let p=(e-c)/(l-c);return n?.easing&&(p=n.easing(p)),u+p*(g-u)}$();var Kc={damping:10,mass:1,stiffness:100,overshootClamping:!1},MA={};function zc({animation:e,now:t,config:r}){let{toValue:n,lastTimestamp:o,current:A,velocity:i}=e,a=Math.min(t-o,64);if(r.damping<=0)throw new Error("Spring damping must be greater than 0, otherwise the spring() animation will never end, causing an infinite loop.");if(r.stiffness<=0)throw new Error("Spring stiffness must be greater than 0.");if(r.mass<=0)throw new Error("Spring mass must be greater than 0.");let s=r.damping,c=r.mass,l=r.stiffness,u=[n,o,A,i,s,c,l,t].join("-");if(MA[u])return MA[u];let g=-i,p=n-A,f=s/(2*Math.sqrt(l*c)),d=Math.sqrt(l/c),h=d*Math.sqrt(1-f**2),I=a/1e3,b=Math.sin(h*I),Q=Math.cos(h*I),m=Math.exp(-f*d*I),w=m*(b*((g+f*d*p)/h)+p*Q),v=n-w,S=f*d*w-m*(Q*(g+f*d*p)-h*p*b),N=Math.exp(-d*I),_=n-N*(p+(g+d*p)*I),G=N*(g*(I*d-1)+I*p*d*d),j={toValue:n,prevPosition:A,lastTimestamp:t,current:f<1?v:_,velocity:f<1?S:G};return MA[u]=j,j}var _A={};function ts({frame:e,fps:t,config:r={}}){let A=[e,t,r.damping,r.mass,r.overshootClamping,r.stiffness].join("-");if(_A[A])return _A[A];let i={lastTimestamp:0,current:0,toValue:1,velocity:0,prevPosition:0},a=Math.max(0,e),s=a%1;for(let c=0;c<=Math.floor(a);c++){c===Math.floor(a)&&(c+=s);let l=c/t*1e3;i=zc({animation:i,now:l,config:{...Kc,...r}})}return _A[A]=i,i}var SA=new Map;function Yc({fps:e,config:t={},threshold:r=.005}){if(typeof r!="number")throw new TypeError(`threshold must be a number, got ${r}`);if(r===0)return 1/0;if(r===1)return 0;if(Number.isNaN(r))throw new TypeError("Threshold is NaN");if(!Number.isFinite(r))throw new TypeError("Threshold is not finite");if(r<0)throw new TypeError("Threshold is below 0");let n=[e,t.damping,t.mass,t.overshootClamping,t.stiffness,r].join("-");if(SA.has(n))return SA.get(n);let o=0,A=0,i=()=>ts({fps:e,frame:o,config:t}),a=i(),s=()=>Math.abs(a.current-a.toValue),c=s();for(;c>=r;)o++,a=i(),c=s();A=o;for(let l=0;l<20;l++)o++,a=i(),c=s(),c>=r&&(l=0,A=o+1);return SA.set(n,A),A}function $f({frame:e,fps:t,config:r={},from:n=0,to:o=1,durationInFrames:A,durationRestThreshold:i,delay:a=0,reverse:s=!1}){let c=s||typeof A<"u",l=c?Yc({fps:t,config:r,threshold:i}):void 0,u=c?{get:()=>l}:{get:()=>{throw new Error("did not calculate natural duration")}},p=(s?(A??u.get())-e:e)+(s?a:-a),f=A===void 0?p:p/(A/u.get());if(A&&p>A)return o;let d=ts({fps:t,frame:f,config:r}),h=r.overshootClamping?o>=n?Math.min(d.current,o):Math.max(d.current,o):d.current;return n===0&&o===1?h:es(h,[0,1],[n,o])}$();$();$();var po=new Set,PA=!1;function Io(e,t,r=2){let n=t&&t.length,o=n?t[0]*r:e.length;po.size&&po.clear();let A=As(e,0,o,r,!0),i=[];if(!A||A.next===A.prev)return i;let a=0,s=0,c=0;if(n&&(A=$c(e,t,A,r)),e.length>80*r){a=e[0],s=e[1];let l=a,u=s;for(let g=r;g<o;g+=r){let p=e[g],f=e[g+1];p<a&&(a=p),f<s&&(s=f),p>l&&(l=p),f>u&&(u=f)}c=Math.max(l-a,u-s),c=c!==0?32767/c:0}return GA(A,i,a,s,c),i}function As(e,t,r,n,o){let A=null;if(o===gl(e,t,r,n)>0)for(let i=t;i<r;i+=n)A=os(i/n|0,e[i],e[i+1],A);else for(let i=r-n;i>=t;i-=n)A=os(i/n|0,e[i],e[i+1],A);return A&&fo(A,A.next)&&(mo(A),A=A.next),A}function Yr(e,t=e){let r=t===e,n=e,o;do o=!1,n!==n.next&&(po.size===0||!po.has(n))&&(fo(n,n.next)||et(n.prev,n,n.next)===0)?((r||n===t)&&(t=n.prev),PA=!0,mo(n),n=n.prev,o=!0):(r||n!==t)&&(n=n.next,o=!r);while(o||n!==t);return t}function GA(e,t,r,n,o){o&&il(e,r,n,o);let A=e,i=!1;for(;e.prev!==e.next;){let a=e.prev,s=e.next;if(et(a,e,s)<0&&(o?qc(e,r,n,o):Wc(e))){t.push(a.i,e.i,s.i),mo(e),e=s,A=s;continue}if(e=s,e===A){if(PA=!1,e=Yr(e),PA){A=e;continue}if(!i){e=Xc(e,t),A=e,i=!0;continue}Zc(e,t,r,n,o);break}}}function Wc(e){let t=e.prev,r=e,n=e.next,o=t.x,A=r.x,i=n.x,a=t.y,s=r.y,c=n.y,l=Math.min(o,A,i),u=Math.min(a,s,c),g=Math.max(o,A,i),p=Math.max(a,s,c),f=n.next;for(;f!==t;){if(f.x>=l&&f.x<=g&&f.y>=u&&f.y<=p&&!(o===f.x&&a===f.y)&&Xo(o,a,A,s,i,c,f.x,f.y)&&et(f.prev,f,f.next)>=0)return!1;f=f.next}return!0}function qc(e,t,r,n){let o=e.prev,A=e,i=e.next,a=o.x,s=A.x,c=i.x,l=o.y,u=A.y,g=i.y,p=Math.min(a,s,c),f=Math.min(l,u,g),d=Math.max(a,s,c),h=Math.max(l,u,g),I=kA(p,f,t,r,n),b=kA(d,h,t,r,n),Q=e.prevZ;for(;Q&&Q.z>=I;){if(Q.x>=p&&Q.x<=d&&Q.y>=f&&Q.y<=h&&Q!==i&&!(a===Q.x&&l===Q.y)&&Xo(a,l,s,u,c,g,Q.x,Q.y)&&et(Q.prev,Q,Q.next)>=0)return!1;Q=Q.prevZ}let m=e.nextZ;for(;m&&m.z<=b;){if(m.x>=p&&m.x<=d&&m.y>=f&&m.y<=h&&m!==i&&!(a===m.x&&l===m.y)&&Xo(a,l,s,u,c,g,m.x,m.y)&&et(m.prev,m,m.next)>=0)return!1;m=m.nextZ}return!0}function Xc(e,t){let r=e,n=!1;do{let o=r.prev,A=r.next.next;ss(o,r,r.next,A,!1)&&ho(o,A)&&ho(A,o)&&(t.push(o.i,r.i,A.i),mo(r),mo(r.next),r=e=A,n=!0),r=r.next}while(r!==e);return n?Yr(r):r}function Zc(e,t,r,n,o){let A=e;do{let i=A.next.next;for(;i!==A.prev;){if(A.i!==i.i&&cl(A,i)){let a=cs(A,i);A=Yr(A,A.next),a=Yr(a,a.next),GA(A,t,r,n,o),GA(a,t,r,n,o);return}i=i.next}A=A.next}while(A!==e)}var RA=!1;function $c(e,t,r,n){let o=[];for(let A=0,i=t.length;A<i;A++){let a=t[A]*n,s=A<i-1?t[A+1]*n:e.length,c=As(e,a,s,n,!1);c===c.next&&po.add(c),o.push(sl(c))}o.sort(el),rl(e.length/n,t.length),as(r,r),RA=!0;for(let A=0;A<o.length;A++)r=tl(o[A],r);return RA=!1,Yr(r)}function el(e,t){return e.x-t.x||e.y-t.y||(e.next.y-e.y)/(e.next.x-e.x)-(t.next.y-t.y)/(t.next.x-t.x)}function tl(e,t){let r=ol(e,t);if(!r)return t;let n=cs(r,e),o=n.next;return as(r,o.next),Yr(n,n.next),Yr(r,r.next)}var is=16,Ze=new Float64Array(0),qo=0,FA=[],UA=[];function rl(e,t){let r=Math.ceil((e+2*t)/is)+t+2;Ze.length<r*4&&(Ze=new Float64Array(r*4)),qo=0}function as(e,t){let r=e;do{let n=qo++;FA[n]=r;let o=r.x,A=r.y,i=r.x,a=r.y,s=0;do{let l=r.next;r.z=n,l.x<o&&(o=l.x),l.x>i&&(i=l.x),l.y<A&&(A=l.y),l.y>a&&(a=l.y),r=l}while(++s<is&&r!==t);UA[n]=r;let c=n*4;Ze[c]=o,Ze[c+1]=A,Ze[c+2]=i,Ze[c+3]=a}while(r!==t)}function nl(e,t){let r=e.z*4;t.x<Ze[r]&&(Ze[r]=t.x),t.y<Ze[r+1]&&(Ze[r+1]=t.y),t.x>Ze[r+2]&&(Ze[r+2]=t.x),t.y>Ze[r+3]&&(Ze[r+3]=t.y)}function rs(e){let t=UA[e];for(;t.prev.next!==t;)t=t.next;return UA[e]=t,t}function ns(e){let t=FA[e];for(;t.prev.next!==t;)t=t.next;return FA[e]=t,t}function ol(e,t){let r=t,n=e.x,o=e.y,A=-1/0,i;if(fo(e,r))return r;for(let g=0,p=0;g<qo;g++,p+=4){if(o<Ze[p+1]||o>Ze[p+3]||Ze[p]>n||Ze[p+2]<=A)continue;let f=rs(g);r=ns(g);do{if(r.prev.next===r){if(fo(e,r.next))return r.next;if(o<=r.y&&o>=r.next.y&&r.next.y!==r.y){let d=r.x+(o-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(d<=n&&d>A&&(A=d,i=r.x<r.next.x?r:r.next,d===n))return i}}r=r.next}while(r!==f)}if(!i)return null;let a=i.x,s=i.y,c=Math.min(o,s),l=Math.max(o,s),u=1/0;for(let g=0,p=0;g<qo;g++,p+=4){if(Ze[p+2]<a||Ze[p]>n||Ze[p+3]<c||Ze[p+1]>l)continue;let f=rs(g);r=ns(g);do{if(r.prev.next===r&&n>=r.x&&r.x>=a&&n!==r.x&&Xo(o<s?n:A,o,a,s,o<s?A:n,o,r.x,r.y)){let d=Math.abs(o-r.y)/(n-r.x);(ho(r,e)||r.y===o&&r.next.y===o&&r.next.x>n)&&(d<u||d===u&&(r.x>i.x||r.x===i.x&&Al(i,r)))&&(i=r,u=d)}r=r.next}while(r!==f)}return i}function Al(e,t){return et(e.prev,e,t.prev)<0&&et(t.next,e,e.next)<0}var bt=[],on=[],zr=new Uint32Array(0),uo=new Uint32Array(0),go=new Uint32Array(256);function il(e,t,r,n){let o=e,A=0;do o.z=kA(o.x,o.y,t,r,n),bt[A++]=o,o=o.next;while(o!==e);al(A);let i=null;for(let a=0;a<A;a++){let s=bt[a];s.prevZ=i,i&&(i.nextZ=s),i=s}i.nextZ=null,bt.fill(null,0,A),on.fill(null,0,A)}function al(e){if(e<=32){for(let t=1;t<e;t++){let r=bt[t],n=r.z,o=t-1;for(;o>=0&&bt[o].z>n;)bt[o+1]=bt[o],o--;bt[o+1]=r}return}zr.length<e&&(zr=new Uint32Array(e),uo=new Uint32Array(e),on=new Array(e));for(let t=0;t<e;t++)zr[t]=bt[t].z;Yo(e,bt,zr,on,uo,0),Yo(e,on,uo,bt,zr,8),Yo(e,bt,zr,on,uo,16),Yo(e,on,uo,bt,zr,24)}function Yo(e,t,r,n,o,A){go.fill(0);for(let a=0;a<e;a++)go[r[a]>>>A&255]++;let i=0;for(let a=0;a<256;a++){let s=go[a];go[a]=i,i+=s}for(let a=0;a<e;a++){let s=r[a],c=go[s>>>A&255]++;n[c]=t[a],o[c]=s}}function kA(e,t,r,n,o){return e=(e-r)*o|0,t=(t-n)*o|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function sl(e){let t=e,r=e;do(t.x<r.x||t.x===r.x&&t.y<r.y)&&(r=t),t=t.next;while(t!==e);return r}function Xo(e,t,r,n,o,A,i,a){return(o-i)*(t-a)>=(e-i)*(A-a)&&(e-i)*(n-a)>=(r-i)*(t-a)&&(r-i)*(A-a)>=(o-i)*(n-a)}function cl(e,t){let r=fo(e,t)&&et(e.prev,e,e.next)>0&&et(t.prev,t,t.next)>0;return e.next.i!==t.i&&(r||ho(e,t)&&ho(t,e)&&(et(e.prev,e,t.prev)!==0||et(e,t.prev,t)!==0))&&!ll(e,t)&&(r||ul(e,t))}function et(e,t,r){return(t.y-e.y)*(r.x-t.x)-(t.x-e.x)*(r.y-t.y)}function fo(e,t){return e.x===t.x&&e.y===t.y}function ss(e,t,r,n,o=!0){let A=et(e,t,r),i=et(e,t,n),a=et(r,n,e),s=et(r,n,t);return(A>0&&i<0||A<0&&i>0)&&(a>0&&s<0||a<0&&s>0)?!0:o?!!(A===0&&Wo(e,r,t)||i===0&&Wo(e,n,t)||a===0&&Wo(r,e,n)||s===0&&Wo(r,t,n)):!1}function Wo(e,t,r){return t.x<=Math.max(e.x,r.x)&&t.x>=Math.min(e.x,r.x)&&t.y<=Math.max(e.y,r.y)&&t.y>=Math.min(e.y,r.y)}function ll(e,t){let r=Math.min(e.x,t.x),n=Math.max(e.x,t.x),o=Math.min(e.y,t.y),A=Math.max(e.y,t.y),i=e;do{let a=i.next;if(i.x>n&&a.x>n||i.x<r&&a.x<r||i.y>A&&a.y>A||i.y<o&&a.y<o){i=a;continue}if(i.i!==e.i&&a.i!==e.i&&i.i!==t.i&&a.i!==t.i&&ss(i,a,e,t))return!0;i=a}while(i!==e);return!1}function ho(e,t){return et(e.prev,e,e.next)<0?et(e,t,e.next)>=0&&et(e,e.prev,t)>=0:et(e,t,e.prev)<0||et(e,e.next,t)<0}function ul(e,t){let r=e,n=!1,o=(e.x+t.x)/2,A=(e.y+t.y)/2;do{let i=r.next;r.y>A!=i.y>A&&o<(i.x-r.x)*(A-r.y)/(i.y-r.y)+r.x&&(n=!n),r=i}while(r!==e);return n}function cs(e,t){let r=NA(e.i,e.x,e.y),n=NA(t.i,t.x,t.y),o=e.next,A=t.prev;return e.next=t,t.prev=e,r.next=o,o.prev=r,n.next=r,r.prev=n,A.next=n,n.prev=A,n}function os(e,t,r,n){let o=NA(e,t,r);return n?(o.next=n.next,o.prev=n,n.next.prev=o,n.next=o):(o.prev=o,o.next=o),o}function mo(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ),RA&&nl(e.prev,e.next)}function NA(e,t,r){return{i:e,x:t,y:r,prev:null,next:null,z:0,prevZ:null,nextZ:null}}function gl(e,t,r,n){let o=0;for(let A=t,i=r-n;A<r;A+=n)o+=(e[i]-e[A])*(e[A+1]+e[i+1]),i=A;return o}$();var fs=iA(us(),1);function Cr(e){let t=qr(e);return t.a>0||e.trim().toLowerCase()==="transparent"?[t.r,t.g,t.b,t.a]:[1,1,1,1]}function zt(e){let t=0,r=e.length;for(let n=0;n<r;n++){let o=(n+1)%r;t+=e[n].x*e[o].y-e[o].x*e[n].y}return t/2}function $o(e,t){let r=!1,n=t.length;for(let o=0,A=n-1;o<n;A=o++){let i=t[o].x,a=t[o].y,s=t[A].x,c=t[A].y;a>e.y!=c>e.y&&e.x<(s-i)*(e.y-a)/(c-a)+i&&(r=!r)}return r}var pl=.1,fl=64;function ds(e,t){if(t.segments!==void 0)return t.segments;let r=Math.ceil(Math.sqrt(e/(8*t.tolerance)));return Math.min(fl,Math.max(1,r))}function dl(e,t,r,n,o){let A=ds(2*Math.hypot(e.x-2*t.x+r.x,e.y-2*t.y+r.y),n);for(let i=1;i<=A;i++){let a=i/A,s=1-a;o.push({x:s*s*e.x+2*s*a*t.x+a*a*r.x,y:s*s*e.y+2*s*a*t.y+a*a*r.y})}}function hl(e,t,r,n,o,A){let i=ds(6*Math.max(Math.hypot(e.x-2*t.x+r.x,e.y-2*t.y+r.y),Math.hypot(t.x-2*r.x+n.x,t.y-2*r.y+n.y)),o);for(let a=1;a<=i;a++){let s=a/i,c=1-s;A.push({x:c*c*c*e.x+3*c*c*s*t.x+3*c*s*s*r.x+s*s*s*n.x,y:c*c*c*e.y+3*c*c*s*t.y+3*c*s*s*r.y+s*s*s*n.y})}}function ml(e){try{let t=new fs.Path2D(e).simplify().edges;return Array.isArray(t)?t:null}catch{return null}}function Il(e,t,r,n,o){let A=e.path?.toSVG();if(!A)return{contours:[],simplified:!0};let i=ml(A),a=i!==null;i??=(e.path?.commands??[]).map(g=>[g.command,...g.args]);let s=[],c={x:0,y:0},l=[],u=()=>{if(l.length>=3){let g=l[0],p=l[l.length-1];Math.hypot(p.x-g.x,p.y-g.y)<1e-4&&l.pop(),l.length>=3&&s.push(l)}l=[]};for(let g of i){let p=g[0],f=g.slice(1);if(p==="moveTo")u(),c={x:(t+f[0])*n,y:-(r+f[1])*n},l=[c];else if(p==="lineTo")c={x:(t+f[0])*n,y:-(r+f[1])*n},l.push(c);else if(p==="quadraticCurveTo"){let d={x:(t+f[0])*n,y:-(r+f[1])*n},h={x:(t+f[2])*n,y:-(r+f[3])*n};dl(c,d,h,o,l),c=h}else if(p==="bezierCurveTo"){let d={x:(t+f[0])*n,y:-(r+f[1])*n},h={x:(t+f[2])*n,y:-(r+f[3])*n},I={x:(t+f[4])*n,y:-(r+f[5])*n};hl(c,d,h,I,o,l),c=I}else p==="closePath"&&u()}return u(),{contours:s,simplified:a}}var Bl=Math.cos(30*Math.PI/180);function LA({contours:e,simplified:t}){if(!t)return yl(e);let r=e.map(i=>({contour:i,area:Math.abs(zt(i))}));r.sort((i,a)=>a.area-i.area);let n=r.map(()=>[]);for(let i=0;i<r.length;i++){let a=r[i].contour,s=a[Math.floor(a.length/2)];for(let c=0;c<i;c++){if(r[c].area<=r[i].area)continue;let l=r[c].contour;($o(a[0],l)||$o(s,l))&&n[i].push(c)}}let o=[],A=new Map;for(let i=0;i<r.length;i++){let a=n[i];if(a.length%2===0){let s={outer:r[i].contour,holes:[]};o.push(s),A.set(i,s)}else A.get(a[a.length-1])?.holes.push(r[i].contour)}return o}function bl(e,t,r,n){let o=t.x-e.x,A=t.y-e.y,i=n.x-r.x,a=n.y-r.y,s=o*a-A*i;if(Math.abs(s)<1e-12)return null;let c=((r.x-e.x)*a-(r.y-e.y)*i)/s,l=((r.x-e.x)*A-(r.y-e.y)*o)/s,u=1e-9;return c<=u||c>=1-u||l<=u||l>=1-u?null:{x:e.x+o*c,y:e.y+A*c}}function TA(e,t=0){let r=e.length;if(r<3)return[];if(t>64)return[e];for(let n=0;n<r;n++){let o=e[n],A=e[(n+1)%r];for(let i=n+2;i<r;i++){if(n===0&&i===r-1)continue;let a=bl(o,A,e[i],e[(i+1)%r]);if(!a)continue;let s=[a,...e.slice(n+1,i+1)],c=[a,...e.slice(i+1),...e.slice(0,n+1)];return[...TA(s,t+1),...TA(c,t+1)]}}return Math.abs(zt(e))>1e-9?[e]:[]}function El(e,t){let r=0;for(let n of t)for(let o=0;o<n.length;o++){let A=n[o],i=n[(o+1)%n.length],a=(i.x-A.x)*(e.y-A.y)-(e.x-A.x)*(i.y-A.y);A.y<=e.y?i.y>e.y&&a>0&&r++:i.y<=e.y&&a<0&&r--}return r}function gs(e){let t=0,r=-1;for(let u=0;u<e.length;u++){let g=e[u],p=e[(u+1)%e.length],f=Math.hypot(p.x-g.x,p.y-g.y);f>r&&(r=f,t=u)}let n=e[t],o=e[(t+1)%e.length],A=(n.x+o.x)/2,i=(n.y+o.y)/2,a=Math.max(1e-4,Math.min(.01,r*.001)),s=-(o.y-n.y)/r*a,c=(o.x-n.x)/r*a,l={x:A+s,y:i+c};return $o(l,e)?l:{x:A-s,y:i-c}}function yl(e){let t=e.flatMap(o=>TA(o)),r=[],n=[];for(let o of t)El(gs(o),e)!==0?r.push({outer:o,holes:[]}):n.push(o);for(let o of n){let A=Math.abs(zt(o)),i=gs(o),a,s=Number.POSITIVE_INFINITY;for(let c of r){let l=Math.abs(zt(c.outer));l>A&&l<s&&$o(i,c.outer)&&(a=c,s=l)}a?.holes.push(o)}return r}var ps=new WeakMap;function Cl(e,t,r,n,o,A){let i=ps.get(e);i||(i=new Map,ps.set(e,i));let a=`${t.id}|${o}|${A.segments??""}|${A.tolerance}`,s=i.get(a);s||(s=LA(Il(t,0,0,o,A)),i.set(a,s));let c=r*o,l=-n*o,u=g=>g.map(p=>({x:p.x+c,y:p.y+l}));return s.map(g=>({outer:u(g.outer),holes:g.holes.map(u)}))}function cd(e){let t=e.font,r=e.fontSize??48,n=e.depth??20,o=n/2,A={segments:e.curveSegments!==void 0?Math.max(2,e.curveSegments):void 0,tolerance:Math.max(.001,e.curveTolerance??pl)},i=t.unitsPerEm||1e3,a=r/i,s=na(t,e.text.replace(/\n/g," "),{direction:e.direction,letterSpacing:e.letterSpacing?e.letterSpacing/a:0}),c=[];for(let oe of s.glyphs){let ne=t.getGlyph(oe.glyphId),ie=Cl(t,ne,oe.x,oe.y,a,A);for(let he of ie)c.push(he)}let l=Number.POSITIVE_INFINITY,u=Number.NEGATIVE_INFINITY,g=Number.POSITIVE_INFINITY,p=Number.NEGATIVE_INFINITY;for(let oe of c){for(let ne of oe.outer)ne.x<l&&(l=ne.x),ne.x>u&&(u=ne.x),ne.y<g&&(g=ne.y),ne.y>p&&(p=ne.y);for(let ne of oe.holes)for(let ie of ne)ie.x<l&&(l=ie.x),ie.x>u&&(u=ie.x),ie.y<g&&(g=ie.y),ie.y>p&&(p=ie.y)}Number.isFinite(l)||(l=0,u=0,g=0,p=0);let f=u-l,d=p-g,h=(s.baseLevel&1)===1,I=e.align==="start"?h?"right":"left":e.align==="end"?h?"left":"right":e.align,b=(l+u)/2;I==="left"&&(b=l),I==="right"&&(b=u);let Q=(g+p)/2;e.verticalAlign==="top"&&(Q=g),e.verticalAlign==="bottom"&&(Q=p);for(let oe of c){for(let ne of oe.outer)ne.x-=b,ne.y-=Q;for(let ne of oe.holes)for(let ie of ne)ie.x-=b,ie.y-=Q}l-=b,u-=b,g-=Q,p-=Q;let m=[],w=[],v=[],S=[],N=[],_=[],G=[],j=[],R=(oe,ne,ie)=>{let he=N.length/3;return N.push(oe.x,oe.y,o,oe.x,oe.y,-o),_.push(ne.x,ne.y,0,ne.x,ne.y,0),G.push(ie,0,ie,1),he},K=oe=>{let ne=oe.filter((y,ye)=>{let Qe=oe[(ye+1)%oe.length];return Math.hypot(Qe.x-y.x,Qe.y-y.y)>=1e-6}),ie=ne.length;if(ie<2)return;let he=[],F=ne.map((y,ye)=>{let Qe=ne[(ye+1)%ie],xe=Math.hypot(Qe.x-y.x,Qe.y-y.y);return he.push(xe),{x:(Qe.y-y.y)/xe,y:-(Qe.x-y.x)/xe}}),Be=he.reduce((y,ye)=>y+ye,0),Se=[],Pe=[],Ie=0;for(let y=0;y<ie;y++){let ye=F[(y-1+ie)%ie],Qe=F[y],xe=Ie/Be,le=ye.x+Qe.x,ge=ye.y+Qe.y,we=ye.x*Qe.x+ye.y*Qe.y>=Bl?{x:le/Math.hypot(le,ge),y:ge/Math.hypot(le,ge)}:null;we&&y>0?Se[y]=Pe[y]=R(ne[y],we,xe):(Pe[y]=R(ne[y],we??ye,y===0?1:xe),Se[y]=R(ne[y],we??Qe,xe)),Ie+=he[y]}for(let y=0;y<ie;y++){let ye=Se[y],Qe=Pe[(y+1)%ie];j.push(ye,Qe+1,Qe),j.push(ye,ye+1,Qe+1)}};for(let oe of c){let ne=oe.outer;zt(ne)<0&&ne.reverse();for(let Ie of oe.holes)zt(Ie)>0&&Ie.reverse();let ie=[],he=[];for(let Ie of ne)ie.push(Ie.x,Ie.y);for(let Ie of oe.holes){he.push(ie.length/2);for(let y of Ie)ie.push(y.x,y.y)}let F=Io(ie,he,2),Be=ie.length/2,Se=m.length/3;for(let Ie=0;Ie<Be;Ie++){let y=ie[Ie*2],ye=ie[Ie*2+1];m.push(y,ye,-o),w.push(0,0,-1),v.push((y-l)/(f||1),(ye-g)/(d||1))}for(let Ie=0;Ie<F.length;Ie+=3)S.push(Se+F[Ie],Se+F[Ie+2],Se+F[Ie+1]);let Pe=m.length/3;for(let Ie=0;Ie<Be;Ie++){let y=ie[Ie*2],ye=ie[Ie*2+1];m.push(y,ye,o),w.push(0,0,1),v.push((y-l)/(f||1),(ye-g)/(d||1))}for(let Ie=0;Ie<F.length;Ie+=3)S.push(Pe+F[Ie],Pe+F[Ie+1],Pe+F[Ie+2]);K(ne);for(let Ie of oe.holes)K(Ie)}let z=Cr(e.fill??"#ffffff"),J=Cr(e.bevelColor??e.fill??"#ffffff"),W={name:"front-material",diffuseColor:z,shading:e.material??"lit",shininess:e.shininess??32,roughness:e.roughness,metallic:e.metallic,twoSided:!0},X={name:"side-material",diffuseColor:J,shading:e.material??"lit",shininess:e.shininess??32,roughness:e.roughness,metallic:e.metallic,twoSided:!0},Ae=[];return S.length>0&&Ae.push({id:"text-front-mesh",name:"front",positions:new Float32Array(m),normals:new Float32Array(w),uvs:new Float32Array(v),indices:m.length/3>65535?new Uint32Array(S):new Uint16Array(S),materialName:"front-material"}),j.length>0&&Ae.push({id:"text-side-mesh",name:"side",positions:new Float32Array(N),normals:new Float32Array(_),uvs:new Float32Array(G),indices:N.length/3>65535?new Uint32Array(j):new Uint16Array(j),materialName:"side-material"}),{modelData:{name:`extruded-text-${e.text}`,meshes:Ae,materials:{"front-material":W,"side-material":X},animations:[],bounds:{min:[l,g,-o],max:[u,p,o],center:[(l+u)/2,(g+p)/2,0],size:[f,d,n],boundingSphereRadius:Math.hypot(f,d,n)/2}},bounds:{minX:l,maxX:u,minY:g,maxY:p,width:f,height:d,depth:n}}}var An=class{positions=[];normals=[];uvs=[];colors=[];indices=[];topology;vertex(t,r,n,o){return this.positions.push(t[0],t[1],t[2]),this.normals.push(r[0],r[1],r[2]),this.uvs.push(n[0],n[1]),o&&this.colors.push(o[0],o[1],o[2],o[3]),this.positions.length/3-1}grid(t,r,n,o=!1){for(let A=0;A<n;A++)for(let i=0;i<r;i++){let a=t+A*(r+1)+i,s=a+1,c=a+r+1,l=c+1;o?this.indices.push(a,s,c,s,l,c):this.indices.push(a,c,s,s,c,l)}}build(t){let r=this.positions.length/3,n={id:`${t}-mesh`,name:t,positions:new Float32Array(this.positions),normals:new Float32Array(this.normals),uvs:new Float32Array(this.uvs),indices:r>65535?new Uint32Array(this.indices):new Uint16Array(this.indices),materialName:`${t}-material`};return this.topology&&(n.topology=this.topology),this.colors.length===r*4&&this.colors.length>0&&(n.colors=new Float32Array(this.colors)),n}};function tt(e){let t=Math.hypot(e[0],e[1],e[2]);return t>1e-12?[e[0]/t,e[1]/t,e[2]/t]:[0,0,0]}function Et(e,t){return[e[0]-t[0],e[1]-t[1],e[2]-t[2]]}function Mt(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Qr(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function OA(e,t,r){if(t<=0)return[-e,e];let n=e-t,o=[];for(let A=0;A<=r;A++)o.push(-n-t*Math.cos(A/r*Math.PI/2));for(let A=n>1e-9?0:1;A<=r;A++)o.push(n+t*Math.sin(A/r*Math.PI/2));return o}function Ql(e,t){let r=e.width/2,n=e.height/2,o=e.depth/2,A=Math.max(0,Math.min(e.radius??0,r,n,o)),i=Math.max(1,Math.round(e.segments??4)),a=e.taper??1,s=r-A,c=n-A,l=o-A,u=OA(r,A,i),g=OA(n,A,i),p=OA(o,A,i),f=e.height>0?(1-a)/e.height:0,d=m=>a+f*(m+n),h=(m,w)=>{let v=[Math.max(-s,Math.min(s,m[0])),Math.max(-c,Math.min(c,m[1])),Math.max(-l,Math.min(l,m[2]))],S=A>0?tt([m[0]-v[0],m[1]-v[1],m[2]-v[2]]):w;S[0]===0&&S[1]===0&&S[2]===0&&(S=w);let N=[v[0]+S[0]*A,v[1]+S[1]*A,v[2]+S[2]*A];if(a===1)return{p:N,n:S};let _=d(N[1]);return{p:[N[0]*_,N[1],N[2]*_],n:tt([S[0]/_,S[1]-N[0]*f*S[0]/_-N[2]*f*S[2]/_,S[2]/_])}},I=[{axis:2,sign:-1,u:0,v:1},{axis:2,sign:1,u:0,v:1},{axis:0,sign:-1,u:2,v:1},{axis:0,sign:1,u:2,v:1},{axis:1,sign:-1,u:0,v:2},{axis:1,sign:1,u:0,v:2}],b=[r,n,o],Q=[u,g,p];for(let m of I){let w=Q[m.u],v=Q[m.v],S=[0,0,0];S[m.axis]=m.sign;let N=t.positions.length/3;for(let G=0;G<v.length;G++)for(let j=0;j<w.length;j++){let R=[0,0,0];R[m.axis]=m.sign*b[m.axis],R[m.u]=w[j],R[m.v]=v[G];let{p:K,n:z}=h(R,S);t.vertex(K,z,[(w[j]/b[m.u]+1)/2,(v[G]/b[m.v]+1)/2])}let _=(m.v+1)%3===m.u;t.grid(N,w.length-1,v.length-1,(_?1:-1)!==m.sign)}}function xl(e,t){let r=Math.max(3,Math.round(e.segments??32)),n=Math.max(2,Math.round(r/2));for(let o=0;o<=n;o++){let A=o/n*Math.PI;for(let i=0;i<=r;i++){let a=i/r*Math.PI*2,s=[Math.sin(A)*Math.cos(a),-Math.cos(A),Math.sin(A)*Math.sin(a)];t.vertex([s[0]*e.radius,s[1]*e.radius,s[2]*e.radius],s,[i/r,o/n])}}t.grid(0,r,n)}function wl(e,t){let r=Math.max(3,Math.round(e.segments??32)),n=Math.max(0,e.radiusTop??e.radius??50),o=Math.max(0,e.radiusBottom??e.radius??50),A=e.height/2;if(e.flatShaded)for(let i=0;i<r;i++){let a=i/r*Math.PI*2,s=(i+1)/r*Math.PI*2,c=Math.cos(a),l=Math.sin(a),u=Math.cos(s),g=Math.sin(s),p=[c*n,-A,l*n],f=[u*n,-A,g*n],d=[c*o,A,l*o],h=[u*o,A,g*o],I=Et(d,p),b=o>=n?Et(h,d):Et(f,p),Q=tt(Qr(I,b)),m=i/r,w=(i+1)/r;if(n<=1e-6){let v=t.vertex([0,-A,0],Q,[(m+w)/2,0]),S=t.vertex(d,Q,[m,1]),N=t.vertex(h,Q,[w,1]);t.indices.push(v,S,N)}else if(o<=1e-6){let v=t.vertex(p,Q,[m,0]),S=t.vertex(f,Q,[w,0]),N=t.vertex([0,A,0],Q,[(m+w)/2,1]);t.indices.push(v,N,S)}else{let v=t.vertex(p,Q,[m,0]);t.vertex(f,Q,[w,0]),t.vertex(d,Q,[m,1]),t.vertex(h,Q,[w,1]),t.indices.push(v,v+2,v+1,v+1,v+2,v+3)}}else{let i=e.height>0?(o-n)/e.height:0;for(let a=0;a<=1;a++){let s=a===0?n:o,c=a===0?-A:A;for(let l=0;l<=r;l++){let u=l/r*Math.PI*2,g=Math.cos(u),p=Math.sin(u);t.vertex([g*s,c,p*s],tt([g,-i,p]),[l/r,a])}}t.grid(0,r,1)}if(!e.openEnded)for(let[i,a,s]of[[-A,n,-1],[A,o,1]]){if(a<=1e-6)continue;let c=t.vertex([0,i,0],[0,s,0],[.5,.5]),l=t.positions.length/3;for(let u=0;u<=r;u++){let g=u/r*Math.PI*2,p=Math.cos(g),f=Math.sin(g);t.vertex([p*a,i,f*a],[0,s,0],[(p+1)/2,(f+1)/2])}for(let u=0;u<r;u++)s<0?t.indices.push(c,l+u,l+u+1):t.indices.push(c,l+u+1,l+u)}}function vl(e,t){let r=Math.max(.001,e.radius??60),n=Math.max(.001,e.tube??20),o=Math.max(3,Math.round(e.radialSegments??24)),A=Math.max(3,Math.round(e.tubularSegments??48)),a=(e.arc??360)*Math.PI/180,s=t.positions.length/3;for(let c=0;c<=o;c++){let l=c/o*Math.PI*2,u=Math.cos(l),g=Math.sin(l);for(let p=0;p<=A;p++){let f=p/A*a,d=Math.cos(f),h=Math.sin(f),I=(r+n*u)*d,b=(r+n*u)*h,Q=n*g,m=u*d,w=u*h,v=g;t.vertex([I,b,Q],tt([m,w,v]),[p/A,c/o])}}if(t.grid(s,A,o,!0),Math.abs(a)<Math.PI*2-1e-4)for(let[c,l]of[[0,-1],[a,1]]){let u=Math.cos(c),g=Math.sin(c),p=[-g*l,u*l,0],f=t.vertex([r*u,r*g,0],p,[.5,.5]),d=t.positions.length/3;for(let h=0;h<=o;h++){let I=h/o*Math.PI*2,b=Math.cos(I),Q=Math.sin(I);t.vertex([(r+n*b)*u,(r+n*b)*g,n*Q],p,[(b+1)/2,(Q+1)/2])}for(let h=0;h<o;h++)l<0?t.indices.push(f,d+h,d+h+1):t.indices.push(f,d+h+1,d+h)}}function Dl(e,t){let r=Math.max(.001,e.radius??30),n=Math.max(0,e.length??60),o=n/2,A=Math.max(2,Math.round(e.capSegments??12)),i=Math.max(3,Math.round(e.radialSegments??32)),a=[],s=Math.PI*r+n;for(let l=0;l<=A;l++){let u=l/A*Math.PI/2,g=Math.sin(u),p=Math.cos(u);a.push({y:-o-r*p,rRing:r*g,ny:-p,nr:g,v:u*r/(s||1)})}for(let l=0;l<=A;l++){if(l===0&&n<=1e-6)continue;let u=Math.PI/2+l/A*Math.PI/2,g=Math.sin(u),p=Math.cos(u);a.push({y:o-r*p,rRing:r*g,ny:-p,nr:g,v:(Math.PI/2*r+n+(u-Math.PI/2)*r)/(s||1)})}let c=t.positions.length/3;for(let l of a)for(let u=0;u<=i;u++){let g=u/i*Math.PI*2,p=Math.cos(g),f=Math.sin(g),d=tt([l.nr*p,l.ny,l.nr*f]);t.vertex([l.rRing*p,l.y,l.rRing*f],d,[u/i,l.v])}t.grid(c,i,a.length-1,!1)}function Ml(e,t){let r=Math.max(0,e.innerRadius??30),n=Math.max(r+.001,e.outerRadius??60),o=Math.max(0,e.depth??0)/2,A=Math.max(3,Math.round(e.thetaSegments??48)),i=Math.max(1,Math.round(e.phiSegments??1)),a=(e.thetaStart??0)*Math.PI/180,s=(e.thetaLength??360)*Math.PI/180;for(let[c,l,u]of[[-o,-1,!1],[o,1,!0]]){let g=t.positions.length/3;for(let p=0;p<=i;p++){let f=r+(n-r)*p/i;for(let d=0;d<=A;d++){let h=a+d/A*s,I=Math.cos(h),b=Math.sin(h),Q=f*I,m=f*b;t.vertex([Q,m,c],[0,0,l],[(Q/n+1)/2,(m/n+1)/2])}}t.grid(g,A,i,!u)}if(o>0){let c=t.positions.length/3;for(let[l,u]of[[-o,0],[o,1]])for(let g=0;g<=A;g++){let p=a+g/A*s,f=Math.cos(p),d=Math.sin(p);t.vertex([n*f,n*d,l],[f,d,0],[g/A,u])}if(t.grid(c,A,1,!0),r>1e-6){let l=t.positions.length/3;for(let[u,g]of[[-o,0],[o,1]])for(let p=0;p<=A;p++){let f=a+p/A*s,d=Math.cos(f),h=Math.sin(f);t.vertex([r*d,r*h,u],[-d,-h,0],[p/A,g])}t.grid(l,A,1,!1)}if(Math.abs(s)<Math.PI*2-1e-4)for(let[l,u]of[[a,-1],[a+s,1]]){let g=Math.cos(l),p=Math.sin(l),f=[-p*u,g*u,0],d=t.vertex([r*g,r*p,-o],f,[0,0]),h=t.vertex([n*g,n*p,-o],f,[1,0]),I=t.vertex([r*g,r*p,o],f,[0,1]),b=t.vertex([n*g,n*p,o],f,[1,1]);u>0?t.indices.push(d,I,h,h,I,b):t.indices.push(d,h,I,h,b,I)}}}function hs(e,t){let r=e.shape??"icosahedron",n=Math.max(.001,e.radius??50),o=Math.max(0,Math.min(5,Math.round(e.detail??(r==="icosphere"?2:0)))),A=e.flatShaded??r!=="icosphere",i=[],a=[];if(r==="tetrahedron")i=[[1,1,1],[-1,-1,1],[-1,1,-1],[1,-1,-1]],a=[[2,1,0],[0,3,2],[1,3,0],[2,3,1]];else if(r==="octahedron")i=[[1,0,0],[-1,0,0],[0,1,0],[0,-1,0],[0,0,1],[0,0,-1]],a=[[0,2,4],[0,4,3],[0,3,5],[0,5,2],[1,2,5],[1,5,3],[1,3,4],[1,4,2]];else if(r==="dodecahedron"){let u=(1+Math.sqrt(5))/2,g=1/u;i=[[-1,-1,-1],[-1,-1,1],[-1,1,-1],[-1,1,1],[1,-1,-1],[1,-1,1],[1,1,-1],[1,1,1],[0,-g,-u],[0,-g,u],[0,g,-u],[0,g,u],[-g,-u,0],[-g,u,0],[g,-u,0],[g,u,0],[-u,0,-g],[u,0,-g],[-u,0,g],[u,0,g]];let p=[[3,11,7,15,13],[7,19,17,6,15],[17,4,8,10,6],[8,0,16,2,10],[0,12,1,18,16],[6,10,2,13,15],[2,16,18,3,13],[18,1,9,11,3],[4,14,12,0,8],[11,9,5,19,7],[19,5,14,4,17],[1,12,14,5,9]];if(o===0&&A){let f=i.map(d=>tt(d));for(let d of p){let h=d.map(m=>f[m]),I=[h.reduce((m,w)=>m+w[0],0)/5,h.reduce((m,w)=>m+w[1],0)/5,h.reduce((m,w)=>m+w[2],0)/5],b=tt(Qr(Et(h[1],h[0]),Et(h[2],h[0])));Mt(b,I)<0&&(h.reverse(),b=[-b[0],-b[1],-b[2]]);let Q=t.positions.length/3;for(let m of h){let w=.5+Math.atan2(m[2],m[0])/(2*Math.PI),v=Math.acos(Math.max(-1,Math.min(1,-m[1])))/Math.PI;t.vertex([m[0]*n,m[1]*n,m[2]*n],b,[w,v])}for(let m=1;m<h.length-1;m++)t.indices.push(Q,Q+m,Q+m+1)}return}for(let f of p)a.push([f[0],f[1],f[2]],[f[0],f[2],f[3]],[f[0],f[3],f[4]])}else{let u=(1+Math.sqrt(5))/2;i=[[-1,u,0],[1,u,0],[-1,-u,0],[1,-u,0],[0,-1,u],[0,1,u],[0,-1,-u],[0,1,-u],[u,0,-1],[u,0,1],[-u,0,-1],[-u,0,1]],a=[[0,11,5],[0,5,1],[0,1,7],[0,7,10],[0,10,11],[1,5,9],[5,11,4],[11,10,2],[10,7,6],[7,1,8],[3,9,4],[3,4,2],[3,2,6],[3,6,8],[3,8,9],[4,9,5],[2,4,11],[6,2,10],[8,6,7],[9,8,1]]}let s=i.map(u=>tt(u)),c=a.map(u=>[u[0],u[1],u[2]]);for(let u=0;u<o;u++){let g=new Map,p=(d,h)=>{let I=d<h?`${d}_${h}`:`${h}_${d}`,b=g.get(I);if(b!==void 0)return b;let Q=s[d],m=s[h],w=s.length;return s.push(tt([Q[0]+m[0],Q[1]+m[1],Q[2]+m[2]])),g.set(I,w),w},f=[];for(let[d,h,I]of c){let b=p(d,h),Q=p(h,I),m=p(I,d);f.push([d,b,m],[h,Q,b],[I,m,Q],[b,Q,m])}c=f}let l=u=>[.5+Math.atan2(u[2],u[0])/(2*Math.PI),Math.acos(Math.max(-1,Math.min(1,-u[1])))/Math.PI];if(A)for(let[u,g,p]of c){let f=s[u],d=s[g],h=s[p],I=[(f[0]+d[0]+h[0])/3,(f[1]+d[1]+h[1])/3,(f[2]+d[2]+h[2])/3],b=tt(Qr(Et(d,f),Et(h,f)));if(Mt(b,I)<0){let m=d;d=h,h=m,b=[-b[0],-b[1],-b[2]]}let Q=t.positions.length/3;t.vertex([f[0]*n,f[1]*n,f[2]*n],b,l(f)),t.vertex([d[0]*n,d[1]*n,d[2]*n],b,l(d)),t.vertex([h[0]*n,h[1]*n,h[2]*n],b,l(h)),t.indices.push(Q,Q+1,Q+2)}else{let u=t.positions.length/3;for(let g of s)t.vertex([g[0]*n,g[1]*n,g[2]*n],g,l(g));for(let[g,p,f]of c){let d=s[g],h=s[p],I=s[f],b=[(d[0]+h[0]+I[0])/3,(d[1]+h[1]+I[1])/3,(d[2]+h[2]+I[2])/3],Q=Qr(Et(h,d),Et(I,d));Mt(Q,b)<0?t.indices.push(u+g,u+f,u+p):t.indices.push(u+g,u+p,u+f)}}}function ms(e,t){let r=[];if(!e||typeof e!="string")return r;let n=[],o=/([a-df-z])|([-+]?(?:\d*\.\d+|\d+)(?:[eE][-+]?\d+)?)/gi,A=o.exec(e);for(;A!==null;)A[1]?n.push(A[1]):A[2]&&n.push(Number.parseFloat(A[2])),A=o.exec(e);let i=0,a={x:0,y:0},s={x:0,y:0},c=null,l=null,u=[],g=()=>{if(u.length>=2){let I=u[0],b=u[u.length-1];Math.hypot(b.x-I.x,b.y-I.y)<1e-4&&u.pop(),u.length>=2&&r.push(u)}u=[]},p=I=>{if(t.segments!==void 0)return Math.max(1,t.segments);let b=Math.ceil(Math.sqrt(I/(8*Math.max(.001,t.tolerance))));return Math.min(64,Math.max(1,b))},f=(I,b,Q)=>{let m=p(2*Math.hypot(I.x-2*b.x+Q.x,I.y-2*b.y+Q.y));for(let w=1;w<=m;w++){let v=w/m,S=1-v;u.push({x:S*S*I.x+2*S*v*b.x+v*v*Q.x,y:S*S*I.y+2*S*v*b.y+v*v*Q.y})}},d=(I,b,Q,m)=>{let w=p(6*Math.max(Math.hypot(I.x-2*b.x+Q.x,I.y-2*b.y+Q.y),Math.hypot(b.x-2*Q.x+m.x,b.y-2*Q.y+m.y)));for(let v=1;v<=w;v++){let S=v/w,N=1-S;u.push({x:N*N*N*I.x+3*N*N*S*b.x+3*N*S*S*Q.x+S*S*S*m.x,y:N*N*N*I.y+3*N*N*S*b.y+3*N*S*S*Q.y+S*S*S*m.y})}},h=()=>i<n.length&&typeof n[i]=="number"?n[i++]:0;for(;i<n.length;){let I=n[i++];if(typeof I!="string")continue;let b=I===I.toLowerCase();switch(I.toUpperCase()){case"M":{g();let m=!0;for(;i<n.length&&typeof n[i]=="number";){let w=h(),v=h();b&&(w+=a.x,v+=a.y),a={x:w,y:v},m?(s=a,u=[a],m=!1):u.push(a)}c=null,l=null;break}case"L":{for(;i<n.length&&typeof n[i]=="number";){let m=h(),w=h();b&&(m+=a.x,w+=a.y),a={x:m,y:w},u.push(a)}c=null,l=null;break}case"H":{for(;i<n.length&&typeof n[i]=="number";){let m=h();b&&(m+=a.x),a={x:m,y:a.y},u.push(a)}c=null,l=null;break}case"V":{for(;i<n.length&&typeof n[i]=="number";){let m=h();b&&(m+=a.y),a={x:a.x,y:m},u.push(a)}c=null,l=null;break}case"C":{for(;i<n.length&&typeof n[i]=="number";){let m=h(),w=h(),v=h(),S=h(),N=h(),_=h();b&&(m+=a.x,w+=a.y,v+=a.x,S+=a.y,N+=a.x,_+=a.y);let G={x:m,y:w},j={x:v,y:S},R={x:N,y:_};d(a,G,j,R),a=R,c=j}l=null;break}case"S":{for(;i<n.length&&typeof n[i]=="number";){let m=h(),w=h(),v=h(),S=h();b&&(m+=a.x,w+=a.y,v+=a.x,S+=a.y);let N=c?{x:2*a.x-c.x,y:2*a.y-c.y}:a,_={x:m,y:w},G={x:v,y:S};d(a,N,_,G),a=G,c=_}l=null;break}case"Q":{for(;i<n.length&&typeof n[i]=="number";){let m=h(),w=h(),v=h(),S=h();b&&(m+=a.x,w+=a.y,v+=a.x,S+=a.y);let N={x:m,y:w},_={x:v,y:S};f(a,N,_),a=_,l=N}c=null;break}case"T":{for(;i<n.length&&typeof n[i]=="number";){let m=h(),w=h();b&&(m+=a.x,w+=a.y);let v=l?{x:2*a.x-l.x,y:2*a.y-l.y}:a,S={x:m,y:w};f(a,v,S),a=S,l=v}c=null;break}case"A":{for(;i<n.length&&typeof n[i]=="number";){let m=h(),w=h(),v=h(),S=h()!==0,N=h()!==0,_=h(),G=h();b&&(_+=a.x,G+=a.y);let j={x:_,y:G},R=aa(a,m,w,v,S,N,j);for(let K of R)u.push(K.p1);a=j}c=null,l=null;break}case"Z":{g(),a=s,c=null,l=null;break}}}return g(),r}function tA(e){return Array.isArray(e)?{x:e[0],y:e[1]}:{x:e.x,y:e.y}}function _l(e,t){let r=e.shape??e.d??e.contour,n=[];if(typeof r=="string")n=ms(r,t).filter(o=>o.length>=3);else if(Array.isArray(r)&&r.length>0){let o=r[0];if(Array.isArray(o)&&o.length>0&&(Array.isArray(o[0])||typeof o[0]=="object"&&o[0]!==null&&"x"in o[0]))n=r.map(i=>i.map(tA)).filter(i=>i.length>=3);else{let i=r.map(tA);i.length>=3&&(n=[i])}}if(Array.isArray(e.holes))for(let o of e.holes){let A=o.map(tA);A.length>=3&&n.push(A)}return n}var Is=Math.cos(30*Math.PI/180);function Sl(e){let r=Math.max(.001,e.depth??20)/2,n=Math.max(0,Math.min(r*.49,e.bevelThickness??0)),o=Math.max(0,e.bevelSize??n),A=n>0||o>0?Math.max(1,Math.round(e.bevelSegments??2)):0,i={segments:e.curveSegments,tolerance:Math.max(.001,e.curveTolerance??.25)},a=_l(e,i),s=LA({contours:a,simplified:!1}),c=Number.POSITIVE_INFINITY,l=Number.NEGATIVE_INFINITY,u=Number.POSITIVE_INFINITY,g=Number.NEGATIVE_INFINITY;for(let N of s){for(let _ of N.outer)_.x<c&&(c=_.x),_.x>l&&(l=_.x),_.y<u&&(u=_.y),_.y>g&&(g=_.y);for(let _ of N.holes)for(let G of _)G.x<c&&(c=G.x),G.x>l&&(l=G.x),G.y<u&&(u=G.y),G.y>g&&(g=G.y)}if(Number.isFinite(c)||(c=l=u=g=0),e.center??!0){let N=(c+l)/2,_=(u+g)/2;for(let G of s){for(let j of G.outer)j.x-=N,j.y-=_;for(let j of G.holes)for(let R of j)R.x-=N,R.y-=_}c-=N,l-=N,u-=_,g-=_}let p=l-c,f=g-u,d=new An,h=new An,I=e.bevelColor!==void 0&&e.bevelColor!==e.color,b=I?h:d,Q=N=>{let _=N.filter((z,J)=>{let W=N[(J+1)%N.length];return Math.hypot(W.x-z.x,W.y-z.y)>=1e-5}),G=_.length;if(G<3)return null;let j=[],R=_.map((z,J)=>{let W=_[(J+1)%G],X=Math.hypot(W.x-z.x,W.y-z.y);return j.push(X),{x:(W.y-z.y)/X,y:-(W.x-z.x)/X}}),K=_.map((z,J)=>{let W=R[(J-1+G)%G],X=R[J],Ae=W.x+X.x,re=W.y+X.y,oe=Math.hypot(Ae,re);if(oe<1e-6)return X;let ne=Ae/oe*X.x+re/oe*X.y,ie=Math.min(2,1/Math.max(.35,ne));return{x:Ae/oe*ie,y:re/oe*ie}});return{pts:_,edgeLengths:j,edgeNormals:R,miterNormals:K}},m=N=>{let _=Q(N);if(!_)return;let{pts:G,edgeLengths:j,edgeNormals:R,miterNormals:K}=_,z=G.length,J=j.reduce((ie,he)=>ie+he,0)||1,W=[];if(A<=0)W.push({z:-r,inset:0,nr:1,nz:0,v:0},{z:r,inset:0,nr:1,nz:0,v:1});else{let ie=A*2+1,he=0;for(let F=0;F<=A;F++){let Be=F/A*Math.PI/2;W.push({z:-r+n*(1-Math.cos(Be)),inset:-o*(1-Math.sin(Be)),nr:Math.sin(Be),nz:-Math.cos(Be),v:he++/ie})}for(let F=0;F<=A;F++){let Be=F/A*Math.PI/2;W.push({z:r-n*(1-Math.sin(Be)),inset:-o*(1-Math.cos(Be)),nr:Math.cos(Be),nz:Math.sin(Be),v:he++/ie})}}let X=W.length,Ae=(ie,he,F,Be)=>{let Se=b.positions.length/3;for(let Pe of W){let Ie=ie.x+he.x*Pe.inset,y=ie.y+he.y*Pe.inset,ye=tt([F.x*Pe.nr,F.y*Pe.nr,Pe.nz]);b.vertex([Ie,y,Pe.z],ye,[Be,Pe.v])}return Se},re=[],oe=[],ne=0;for(let ie=0;ie<z;ie++){let he=R[(ie-1+z)%z],F=R[ie],Be=K[ie],Se=ne/J,Pe=he.x+F.x,Ie=he.y+F.y,ye=he.x*F.x+he.y*F.y>=Is?{x:Pe/Math.hypot(Pe,Ie),y:Ie/Math.hypot(Pe,Ie)}:null;ye&&ie>0?re[ie]=oe[ie]=Ae(G[ie],Be,ye,Se):(oe[ie]=Ae(G[ie],Be,ye??he,ie===0?1:Se),re[ie]=Ae(G[ie],Be,ye??F,Se)),ne+=j[ie]}for(let ie=0;ie<z;ie++){let he=re[ie],F=oe[(ie+1)%z];for(let Be=0;Be<X-1;Be++){let Se=he+Be,Pe=he+Be+1,Ie=F+Be,y=F+Be+1;b.indices.push(Se,Ie,Pe,Ie,y,Pe)}}};for(let N of s){let _=N.outer;zt(_)<0&&_.reverse();for(let re of N.holes)zt(re)>0&&re.reverse();let G=Q(_);if(!G)continue;let j=N.holes.map(Q).filter(re=>re!==null),R=-o,K=[],z=[];for(let re=0;re<G.pts.length;re++){let oe=G.pts[re],ne=G.miterNormals[re];K.push(oe.x+ne.x*R,oe.y+ne.y*R)}for(let re of j){z.push(K.length/2);for(let oe=0;oe<re.pts.length;oe++){let ne=re.pts[oe],ie=re.miterNormals[oe];K.push(ne.x+ie.x*R,ne.y+ie.y*R)}}let J=Io(K,z,2),W=K.length/2,X=d.positions.length/3;for(let re=0;re<W;re++){let oe=K[re*2],ne=K[re*2+1];d.vertex([oe,ne,-r],[0,0,-1],[(oe-c)/(p||1),(ne-u)/(f||1)])}for(let re=0;re<J.length;re+=3)d.indices.push(X+J[re],X+J[re+2],X+J[re+1]);let Ae=d.positions.length/3;for(let re=0;re<W;re++){let oe=K[re*2],ne=K[re*2+1];d.vertex([oe,ne,r],[0,0,1],[(oe-c)/(p||1),(ne-u)/(f||1)])}for(let re=0;re<J.length;re+=3)d.indices.push(Ae+J[re],Ae+J[re+1],Ae+J[re+2]);m(_);for(let re of N.holes)m(re)}let w=[],v={},S=d.build("extrude-front");if(S.materialName="extrude-front-material",w.push(S),v["extrude-front-material"]={name:"extrude-front-material",diffuseColor:Cr(e.color??"#ffffff"),shading:e.material??"lit",shininess:e.shininess??32,roughness:e.roughness,metallic:e.metallic},I&&h.indices.length>0){let N=h.build("extrude-side");N.materialName="extrude-side-material",w.push(N),v["extrude-side-material"]={name:"extrude-side-material",diffuseColor:Cr(e.bevelColor??e.color??"#ffffff"),shading:e.material??"lit",shininess:e.shininess??32,roughness:e.roughness,metallic:e.metallic}}return Es("extrude",w,v)}function Pl(e,t){let r=typeof e.points=="string"?ms(e.points,{tolerance:.25})[0]??[]:e.points.map(tA);if(r.length<2)return;let n=r.map(f=>({x:Math.max(0,f.x),y:f.y})),o=n.length>=3&&Math.hypot(n[n.length-1].x-n[0].x,n[n.length-1].y-n[0].y)<1e-4;o?zt(n)<0&&n.reverse():n[0].y>n[n.length-1].y&&n.reverse();let A=Math.max(3,Math.round(e.segments??32)),i=(e.phiStart??0)*Math.PI/180,a=(e.phiLength??360)*Math.PI/180,s=n.length,c=[],l=[],u=0;for(let f=0;f<s-1;f++){let d=n[f],h=n[f+1],I=h.x-d.x,b=h.y-d.y,Q=Math.hypot(I,b);c.push(Q),u+=Q,l.push(Q>1e-8?{x:b/Q,y:-I/Q}:{x:1,y:0})}let g=[0],p=0;for(let f of c)p+=f,g.push(u>0?p/u:0);if(e.flatShaded)for(let f=0;f<s-1;f++){let d=n[f],h=n[f+1],I=l[f];for(let b=0;b<A;b++){let Q=i+b/A*a,m=i+(b+1)/A*a,w=(Q+m)/2,v=tt([I.x*Math.cos(w),I.y,I.x*Math.sin(w)]),S=Math.cos(Q),N=Math.sin(Q),_=Math.cos(m),G=Math.sin(m),j=t.positions.length/3;t.vertex([d.x*S,d.y,d.x*N],v,[b/A,g[f]]),t.vertex([d.x*_,d.y,d.x*G],v,[(b+1)/A,g[f]]),t.vertex([h.x*S,h.y,h.x*N],v,[b/A,g[f+1]]),t.vertex([h.x*_,h.y,h.x*G],v,[(b+1)/A,g[f+1]]),t.indices.push(j,j+2,j+1,j+1,j+2,j+3)}}else{let f=(h,I)=>{if(h.x*I.x+h.y*I.y<Is)return h;let b=h.x+I.x,Q=h.y+I.y,m=Math.hypot(b,Q);return m>1e-8?{x:b/m,y:Q/m}:h},d=(h,I,b)=>{for(let Q=0;Q<=A;Q++){let m=i+Q/A*a,w=Math.cos(m),v=Math.sin(m),S=h.x<=1e-5&&Math.abs(I.y)>1e-5?[0,I.y<0?-1:1,0]:tt([I.x*w,I.y,I.x*v]);t.vertex([h.x*w,h.y,h.x*v],S,[Q/A,b])}};for(let h=0;h<s-1;h++){let I=n[h],b=n[h+1],Q=l[h],m=h>0?l[h-1]:o?l[s-2]:Q,w=h+1<s-1?l[h+1]:o?l[0]:Q,v=f(Q,m),S=f(Q,w),N=t.positions.length/3;d(I,v,g[h]),d(b,S,g[h+1]),t.grid(N,A,1,!1)}}if((e.capped??e.closed)&&!o){let f=n[0],d=n[s-1];for(let[h,I]of[[f,-1],[d,1]]){if(h.x<=1e-5)continue;let b=t.vertex([0,h.y,0],[0,I,0],[.5,.5]),Q=t.positions.length/3;for(let m=0;m<=A;m++){let w=i+m/A*a,v=Math.cos(w),S=Math.sin(w);t.vertex([h.x*v,h.y,h.x*S],[0,I,0],[(v+1)/2,(S+1)/2])}for(let m=0;m<A;m++)I<0?t.indices.push(b,Q+m,Q+m+1):t.indices.push(b,Q+m+1,Q+m)}}}function Bs(e,t=!1){if(Array.isArray(e)){if(e.length<2)throw new Error("3D path requires at least 2 points");return dr.catmullRom(e,{closed:t})}return e.kind==="catmullRom"?dr.catmullRom(e.points,{tension:e.tension,closed:e.closed??t,samplesPerSegment:e.samplesPerSegment}):e.kind==="bezier"?dr.bezier(e.segments,e.samplesPerSegment):e.kind==="helix"?dr.helix({center:e.center??[0,0,0],radius:e.radius,pitch:e.pitch,turns:e.turns,axis:e.axis,samplesPerTurn:e.samplesPerTurn}):dr.circle({center:e.center??[0,0,0],radius:e.radius,startAngleDeg:e.startAngleDeg,endAngleDeg:e.endAngleDeg,samples:e.samples})}function Gl(e,t){let r=e.closed??(!Array.isArray(e.path)&&e.path.kind==="catmullRom"&&!!e.path.closed),n=Bs(e.path,r),o=Math.max(2,Math.round(e.tubularSegments??64)),A=Math.max(3,Math.round(e.radialSegments??16)),i=Math.max(.001,e.radius??12),a=e.radiusTaper?Math.max(0,e.radiusTaper[0]):i,s=e.radiusTaper?Math.max(0,e.radiusTaper[1]):i,c=Math.max(0,Math.min(i-.001,e.innerRadius??0)),l=e.capped??!0,u=[];for(let p=0;p<=o;p++)u.push(n.getPointAt(p/o));let g=t.positions.length/3;for(let p=0;p<=o;p++){let f=p/o,d=a+(s-a)*f,h=u[p],[I,b,Q]=h.position,[m,w,v]=h.normal,[S,N,_]=h.binormal;for(let G=0;G<=A;G++){let j=G/A,R=j*Math.PI*2,K=Math.cos(R),z=Math.sin(R),J=K*m+z*S,W=K*w+z*N,X=K*v+z*_;t.vertex([I+d*J,b+d*W,Q+d*X],tt([J,W,X]),[f,j])}}if(t.grid(g,A,o,!0),c>1e-6){let p=c/i,f=t.positions.length/3;for(let d=0;d<=o;d++){let h=d/o,I=(a+(s-a)*h)*p,b=u[d],[Q,m,w]=b.position,[v,S,N]=b.normal,[_,G,j]=b.binormal;for(let R=0;R<=A;R++){let K=R/A,z=K*Math.PI*2,J=Math.cos(z),W=Math.sin(z),X=J*v+W*_,Ae=J*S+W*G,re=J*N+W*j;t.vertex([Q+I*X,m+I*Ae,w+I*re],tt([-X,-Ae,-re]),[h,K])}}if(t.grid(f,A,o,!1),!r&&l)for(let[d,h]of[[0,-1],[o,1]]){let I=d/o,b=a+(s-a)*I,Q=b*p,m=u[d],[w,v,S]=m.position,[N,_,G]=m.normal,[j,R,K]=m.binormal,z=tt([m.tangent[0]*h,m.tangent[1]*h,m.tangent[2]*h]),J=t.positions.length/3;for(let W of[Q,b])for(let X=0;X<=A;X++){let Ae=X/A*Math.PI*2,re=Math.cos(Ae),oe=Math.sin(Ae),ne=re*N+oe*j,ie=re*_+oe*R,he=re*G+oe*K;t.vertex([w+W*ne,v+W*ie,S+W*he],z,[(re*(W/b)+1)/2,(oe*(W/b)+1)/2])}t.grid(J,A,1,h<0)}}else if(!r&&l)for(let[p,f]of[[0,-1],[o,1]]){let d=p/o,h=a+(s-a)*d;if(h<=1e-6)continue;let I=u[p],[b,Q,m]=I.position,[w,v,S]=I.normal,[N,_,G]=I.binormal,j=tt([I.tangent[0]*f,I.tangent[1]*f,I.tangent[2]*f]),R=t.vertex([b,Q,m],j,[.5,.5]),K=t.positions.length/3;for(let z=0;z<=A;z++){let J=z/A*Math.PI*2,W=Math.cos(J),X=Math.sin(J),Ae=W*w+X*N,re=W*v+X*_,oe=W*S+X*G;t.vertex([b+h*Ae,Q+h*re,m+h*oe],j,[(W+1)/2,(X+1)/2])}for(let z=0;z<A;z++)f>0?t.indices.push(R,K+z,K+z+1):t.indices.push(R,K+z+1,K+z)}}function bs(e){if(Array.isArray(e))return e;let t=Bs(e),r=96,n=[];for(let o=0;o<=r;o++)n.push(t.getPointAt(o/r).position);return n}function Rl(e,t){t.topology="line-list";let r=bs(e.points);if(r.length<2)return;let n=e.colors?.map(A=>Cr(A)),o=e.mode??"strip";if(e.dashSize&&e.dashSize>0&&o==="strip"){let A=e.dashSize,i=e.gapSize??A,a=A+i,s=e.closed?[...r,r[0]]:r,c=0;for(let l=0;l<s.length-1;l++){let u=s[l],g=s[l+1],p=Math.hypot(g[0]-u[0],g[1]-u[1],g[2]-u[2]);if(p<1e-6)continue;let f=[(g[0]-u[0])/p,(g[1]-u[1])/p,(g[2]-u[2])/p],d=n?.[l%n.length],h=0;for(;h<p;){let I=(c+h)%a;if(I<A){let b=Math.min(A-I,p-h),Q=[u[0]+f[0]*h,u[1]+f[1]*h,u[2]+f[2]*h],m=[u[0]+f[0]*(h+b),u[1]+f[1]*(h+b),u[2]+f[2]*(h+b)],w=t.vertex(Q,[0,-1,0],[0,0],d),v=t.vertex(m,[0,-1,0],[1,0],d);t.indices.push(w,v),h+=b}else h+=a-I}c+=p}return}for(let A=0;A<r.length;A++){let i=r.length>1?A/(r.length-1):0;t.vertex(r[A],[0,-1,0],[i,0],n?n[A%n.length]:void 0)}if(o==="segments")for(let A=0;A+1<r.length;A+=2)t.indices.push(A,A+1);else{for(let A=0;A<r.length-1;A++)t.indices.push(A,A+1);e.closed&&r.length>=3&&t.indices.push(r.length-1,0)}}function Fl(e,t){let r=bs(e.points);if(r.length===0)return;let n=e.colors?.map(A=>Cr(A)),o=e.pointSize??0;if(o>0){let A=new An;hs({type:"polyhedron",shape:"icosphere",radius:o,detail:1,flatShaded:!1},A);let i=A.positions.length/3;for(let a=0;a<r.length;a++){let[s,c,l]=r[a],u=n?n[a%n.length]:void 0,g=t.positions.length/3;for(let p=0;p<i;p++)t.vertex([s+A.positions[p*3],c+A.positions[p*3+1],l+A.positions[p*3+2]],[A.normals[p*3],A.normals[p*3+1],A.normals[p*3+2]],[A.uvs[p*2],A.uvs[p*2+1]],u);for(let p of A.indices)t.indices.push(g+p)}return}t.topology="point-list";for(let A=0;A<r.length;A++){let i=r.length>1?A/(r.length-1):0,a=t.vertex(r[A],[0,-1,0],[i,0],n?n[A%n.length]:void 0);t.indices.push(a)}}function Ul(e,t){let r=e.radius??50,n=(e.size?e.size[0]:r)||50,o=(e.size?e.size[1]:r)||50,A=(e.size?e.size[2]:r)||50,i=Math.max(n,o,A),a=Math.max(4,Math.min(64,Math.round(e.facets??14))),s=Math.round(e.seed??1)>>>0,c=Math.max(0,Math.min(.85,e.irregularity??.35)),l=BigInt(s)*6364136223846793005n+1442695040888963407n,u=()=>{l=l*6364136223846793005n+1442695040888963407n;let w=Number((l>>18n^l)>>27n)>>>0,v=Number(l>>59n)>>>0;return((w>>>v|w<<(32-v&31))>>>0)/4294967296},g=[[[-n,-o,-A],[n,-o,-A],[n,o,-A],[-n,o,-A]],[[n,-o,A],[-n,-o,A],[-n,o,A],[n,o,A]],[[-n,-o,A],[-n,-o,-A],[-n,o,-A],[-n,o,A]],[[n,-o,-A],[n,-o,A],[n,o,A],[n,o,-A]],[[-n,-o,A],[n,-o,A],[n,-o,-A],[-n,-o,-A]],[[-n,o,-A],[n,o,-A],[n,o,A],[-n,o,A]]],p=(1+Math.sqrt(5))/2;for(let w=0;w<a;w++){let v=2*Math.PI*w/p+(u()-.5)*.4,S=1-2*(w+.5)/a,N=Math.sqrt(Math.max(0,1-S*S)),_=[Math.cos(v)*N,Math.sin(v)*N,S];_[0]+=(u()-.5)*.2,_[1]+=(u()-.5)*.2,_[2]+=(u()-.5)*.2;let G=Math.hypot(_[0],_[1],_[2]);if(G<1e-6)continue;_=[_[0]/G,_[1]/G,_[2]/G];let R=Math.hypot(_[0]*n,_[1]*o,_[2]*A)*(1-c*(.2+.8*u())),K=[],z=[];for(let J of g){let W=[],X=J.length;for(let Ae=0;Ae<X;Ae++){let re=J[Ae],oe=J[(Ae+1)%X],ne=Mt(_,re)-R,ie=Mt(_,oe)-R;if(ne<=1e-5&&W.push(re),ne>1e-5&&ie<-1e-5||ne<-1e-5&&ie>1e-5){let he=ne/(ne-ie),F=[re[0]+(oe[0]-re[0])*he,re[1]+(oe[1]-re[1])*he,re[2]+(oe[2]-re[2])*he];W.push(F),z.push(F)}}W.length>=3&&K.push(W)}if(z.length>=3){let J=[];for(let W of z){let X=!1;for(let Ae of J)if(Math.hypot(W[0]-Ae[0],W[1]-Ae[1],W[2]-Ae[2])<.001){X=!0;break}X||J.push(W)}if(J.length>=3){let W=0,X=0,Ae=0;for(let he of J)W+=he[0],X+=he[1],Ae+=he[2];let re=[W/J.length,X/J.length,Ae/J.length],oe=Math.abs(_[1])<.9?[0,1,0]:[1,0,0],ne=tt(Qr(oe,_)),ie=Qr(_,ne);J.sort((he,F)=>{let Be=Math.atan2(Mt(Et(he,re),ie),Mt(Et(he,re),ne)),Se=Math.atan2(Mt(Et(F,re),ie),Mt(Et(F,re),ne));return Be-Se}),K.push(J)}}K.length>=4&&(g=K)}let f=Number.POSITIVE_INFINITY,d=Number.POSITIVE_INFINITY,h=Number.POSITIVE_INFINITY,I=Number.NEGATIVE_INFINITY,b=Number.NEGATIVE_INFINITY,Q=Number.NEGATIVE_INFINITY;for(let w of g)for(let v of w)v[0]<f&&(f=v[0]),v[0]>I&&(I=v[0]),v[1]<d&&(d=v[1]),v[1]>b&&(b=v[1]),v[2]<h&&(h=v[2]),v[2]>Q&&(Q=v[2]);let m=[(f+I)/2,(d+b)/2,(h+Q)/2];for(let w of g)for(let v=0;v<w.length;v++){let S=w[v];w[v]=[S[0]-m[0],S[1]-m[1],S[2]-m[2]]}for(let w of g){if(w.length<3)continue;let v=[0,0,0];for(let z=0;z<w.length;z++){let J=w[z],W=w[(z+1)%w.length];v[0]+=(J[1]-W[1])*(J[2]+W[2]),v[1]+=(J[2]-W[2])*(J[0]+W[0]),v[2]+=(J[0]-W[0])*(J[1]+W[1])}let S=Math.hypot(v[0],v[1],v[2]);if(S<1e-6)continue;v=[v[0]/S,v[1]/S,v[2]/S];let N=[w.reduce((z,J)=>z+J[0],0)/w.length,w.reduce((z,J)=>z+J[1],0)/w.length,w.reduce((z,J)=>z+J[2],0)/w.length];Mt(v,N)<0&&(w.reverse(),v=[-v[0],-v[1],-v[2]]);let _=Math.abs(v[1])<.9?[0,1,0]:[1,0,0],G=tt(Qr(_,v)),j=Qr(v,G),R=w.map(z=>[.5+Mt(z,G)/(2*i),.5+Mt(z,j)/(2*i)]),K=t.positions.length/3;for(let z=0;z<w.length;z++)t.vertex(w[z],v,R[z]);for(let z=1;z<w.length-1;z++)t.indices.push(K,K+z,K+z+1)}}function Es(e,t,r){let n=[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY],o=[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY];for(let i of t){let a=i.positions;for(let s=0;s<a.length;s+=3)for(let c=0;c<3;c++){let l=a[s+c];l<n[c]&&(n[c]=l),l>o[c]&&(o[c]=l)}}Number.isFinite(n[0])||(n[0]=n[1]=n[2]=0,o[0]=o[1]=o[2]=0);let A=[o[0]-n[0],o[1]-n[1],o[2]-n[2]];return{name:`primitive-${e}`,meshes:t,materials:r,animations:[],bounds:{min:n,max:o,center:[(n[0]+o[0])/2,(n[1]+o[1])/2,(n[2]+o[2])/2],size:A,boundingSphereRadius:Math.hypot(...A)/2}}}function kl(e){if(e.type==="extrude")return Sl(e);let t=new An;if(e.type==="roundedBox")Ql(e,t);else if(e.type==="sphere")xl(e,t);else if(e.type==="cylinder")wl(e,t);else if(e.type==="torus")vl(e,t);else if(e.type==="capsule")Dl(e,t);else if(e.type==="ring")Ml(e,t);else if(e.type==="polyhedron")hs(e,t);else if(e.type==="lathe")Pl(e,t);else if(e.type==="tube")Gl(e,t);else if(e.type==="line3d")Rl(e,t);else if(e.type==="points3d")Fl(e,t);else if(e.type==="shard")Ul(e,t);else throw new Error(`Unknown 3D primitive: ${e.type}`);let r=e.type,n=t.build(r),o=e.type==="line3d"||e.type==="points3d"&&(e.pointSize??0)<=0?"unlit":"lit",A={name:`${r}-material`,diffuseColor:Cr(e.color??"#ffffff"),shading:e.material??o,shininess:e.shininess??32,roughness:e.roughness,metallic:e.metallic};return Es(r,[n],{[A.name]:A})}var eA=new Map;function hd(e){let t=JSON.stringify(e),r=eA.get(t);return r||(r=kl(e),eA.size>512&&eA.clear(),eA.set(t,r)),r}var HA=new Map;function Nl(e,t){return JSON.stringify({text:e,...t})}function jA(e,t){let r=e?String(e):" ",n=Nl(r,t),o=HA.get(n);if(o)return o;let A=t.fontSize??48,i=t.fontFamily??"Inter";fr.isFailed(i)&&(i="Inter");let a=t.letterSpacing??0,s=t.lineHeight!==void 0&&t.lineHeight<10?t.lineHeight*A:t.lineHeight??A*1.2,c=fr.getFont(i,t.fontWeight,null,void 0,A),l=t.padding??0;if(!c){fr.isFailed(i)||fr.preloadSlugFont(null,i,aA(i)).catch(()=>{});let p=r.split(`
2461
- `),f=0,d=t.width!==void 0?Math.max(10,t.width-l*2):0;for(let b of p)if(d>0){let Q=b.length*A*.55+a*b.length,m=Math.max(1,Math.ceil(Q/d));f+=m}else f+=1;let h=Math.max(0,r.length-1),I={width:t.width!==void 0?t.width:Math.ceil(r.length*A*.6+a*h)+l*2,height:t.height!==void 0?t.height:Math.ceil(f*s)+l*2};return HA.set(n,I),I}let u=oa.measure(r,c,A,a,s,t.width!==void 0?Math.max(0,t.width-l*2):void 0,t.spans,t.direction),g={width:t.width!==void 0&&!t.keepNaturalWidth?t.width:Math.ceil(u.width)+l*2,height:t.height!==void 0?t.height:Math.ceil(u.height)+l*2};return HA.set(n,g),g}function Ed(e,t){let r=t.fontFamily??"Inter";return fr.isFailed(r)&&(r="Inter"),fr.isFailed(r)?Promise.resolve(jA(e,t)):fr.preloadSlugFont(null,r,aA(r)).then(()=>jA(e,t)).catch(()=>jA(e,t))}$();$();$();var Tl=(()=>{var e=import.meta.url;return(function(t){t=t||{};var r;r||(r=typeof t<"u"?t:{});var n,o;r.ready=new Promise(function(C,x){n=C,o=x});var A=Object.assign({},r),i="";typeof document<"u"&&document.currentScript&&(i=document.currentScript.src),e&&(i=e),i.indexOf("blob:")!==0?i=i.substr(0,i.replace(/[?#].*/,"").lastIndexOf("/")+1):i="";var a=r.print||console.log.bind(console),s=r.printErr||console.warn.bind(console);Object.assign(r,A),A=null;var c;r.wasmBinary&&(c=r.wasmBinary);var l=r.noExitRuntime||!0;typeof WebAssembly!="object"&&W("no native wasm support detected");var u,g=!1;function p(C,x,k){k=x+k;for(var V="";!(x>=k);){var q=C[x++];if(!q)break;if(q&128){var te=C[x++]&63;if((q&224)==192)V+=String.fromCharCode((q&31)<<6|te);else{var ae=C[x++]&63;q=(q&240)==224?(q&15)<<12|te<<6|ae:(q&7)<<18|te<<12|ae<<6|C[x++]&63,65536>q?V+=String.fromCharCode(q):(q-=65536,V+=String.fromCharCode(55296|q>>10,56320|q&1023))}}else V+=String.fromCharCode(q)}return V}var f,d,h,I,b,Q,m,w,v;function S(){var C=u.buffer;f=C,r.HEAP8=d=new Int8Array(C),r.HEAP16=I=new Int16Array(C),r.HEAP32=Q=new Int32Array(C),r.HEAPU8=h=new Uint8Array(C),r.HEAPU16=b=new Uint16Array(C),r.HEAPU32=m=new Uint32Array(C),r.HEAPF32=w=new Float32Array(C),r.HEAPF64=v=new Float64Array(C)}var N,_=[],G=[],j=[];function R(){var C=r.preRun.shift();_.unshift(C)}var K=0,z=null,J=null;function W(C){throw r.onAbort&&r.onAbort(C),C="Aborted("+C+")",s(C),g=!0,C=new WebAssembly.RuntimeError(C+". Build with -sASSERTIONS for more info."),o(C),C}function X(C){return C.startsWith("data:application/octet-stream;base64,")}var Ae;if(Ae="data:application/octet-stream;base64,AGFzbQEAAAABugM3YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWADf398AGAAAGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAV/f39/fwBgAn9/AX1gBX9/f319AX1gAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBn9/f319fQF9YAR/f31/AGADf399AX1gBn98f39/fwF/YAR/fHx/AGACf30AYAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38BfGAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gB39/f319f38AYAJ+fwF/YAN/fX0BfWABfAF8YAN/fHwAYAR/f319AGAHf39/fX19fQF9YA1/fX99f31/fX19fX1/AX9gC39/f39/f399fX19AX9gCH9/f39/f319AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfGAEf39/fABgA39/fQBgBn9/fX99fwF/ArUBHgFhAWEAHwFhAWIAAwFhAWMACQFhAWQAFgFhAWUAEQFhAWYAIAFhAWcAAAFhAWgAIQFhAWkAAwFhAWoAAAFhAWsAFwFhAWwACgFhAW0ABQFhAW4AAwFhAW8AAQFhAXAAFwFhAXEABgFhAXIAAAFhAXMAIgFhAXQACgFhAXUADQFhAXYAFgFhAXcAAgFhAXgAAwFhAXkAGAFhAXoAAgFhAUEAAQFhAUIAEQFhAUMAAQFhAUQAAAOiAqACAgMSBwcACRkDAAoRBgYKEwAPDxMBBiMTCgcHGgMUASQFJRQHAwMKCgMmAQYYDxobFAAKBw8KBwMDAgkCAAAFGwACBwIHBgIDAQMIDAABKAkHBQURACkZASoAAAIrLAIALQcHBy4HLwkFCgMCMA0xAgMJAgACAQYKAQIBBQEACQIFAQEABQAODQ0GFQIBHBUGAgkCEAAAAAUyDzMMBQYINAUCAwUODg41AgMCAgIDBgICNgIBDAwMAQsLCwsLCx0CAAIAAAABABABBQICAQMCEgMMCwEBAQEBAQsLAQICAwICAgICAgIDAgIICAEICAgEBAQEBAQEBAQABAQABAQEBAAE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GiABQQA2AvADIAFCADcC6AMgAigC7AMiAyACKALoAyIERwRAIAMgBGsiBEEASA0FIAEgBBAeIgM2AuwDIAEgAzYC6AMgASADIARqNgLwAyACKALoAyIEIAIoAuwDIghHBEADQCADIAQoAgA2AgAgA0EEaiEDIARBBGoiBCAIRw0ACwsgASADNgLsAwsgASACKQL0AzcC9AMgASACKAKEBDYChAQgASACKQL8AzcC/AMgAUEANgLkAwsgBSABNgIAIAEgADYC5AMLIAZBAWohBiAFQQRqIgUgB0cNAAsLDwsQAgALUAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUEwahBDDwsgACABIAFBMGogAxBEDwsgACABIAFBMGoQQg8LECQACyAAIAEgAUEwaiADEEULcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QdwlaigCACACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt5AgF/AX0jAEEQayIDJAAgA0EIaiAAIAFBAnRB7CVqKAIAIAIQU0MAAMB/IQQCQAJAAkAgAy0ADEEBaw4CAAECCyADKgIIIQQMAQsgAyoCCEMAAAAAlEMK1yM8lCEECyADQRBqJAAgBEMAAAAAl0MAAAAAIAQgBFsbC1QAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBwgBqEEMPCyAAIAEgAUHCAGogAxBEDwsgACABIAFBwgBqEEIPCxAkAAsgACABIAFBwgBqIAMQRQsvACAAIAJFQQF0IgIgASADEGAgACACIAEQS5IgACACIAEgAxB/IAAgAiABEFKSkgvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akH2AGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyADQRBqJAALzgECA38CfSMAQRBrIgMk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AWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwscACAAIAFBCCACpyACQiCIpyADpyADQiCIpxAVCwUAEFgACzkAIABFBEBBAA8LAn8gAUGAf3FBgL8DRiABQf8ATXJFBEBB/DtBGTYCAEF/DAELIAAgAToAAEEBCwvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAQALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQegAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQOQNAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAuQDIgANAAsLIANBEGokAAtdAQR/IAAoAgAhAgNAIAIsAAAiAxBXBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFIAQLIQEMAQsLIAELrhQCEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRQCQAJAAkACQANAIAEhDSAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCANIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAH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IQEgAEIANwIEIAAgATYCACABIAA2AgQgAkEQaiQAIAALGwEBfyAABEAgACgCACIBBEAgARAjCyAAECMLC0kBAn9BBBAeIQFBIBAeIgBBADYCHCAAQoCAgICAgIDAPzcCFCAAQgA3AgwgAEEAOgAIIABBAzYCBCAAQQA2AgAgASAANgIAIAELIAAgAkEFR0EAIAIbRQRAQbgwIAMgBBBJDwsgAyAEEHALIgEBfiABIAKtIAOtQiCGhCAEIAARFQAiBUIgiKckASAFpwuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACCwQAQgALBABBAAuKBQIGfgJ/IAEgASgCAEEHakF4cSIBQRBqNgIAIAAhCSABKQMAIQMgASkDCCEGIwBBIGsiCCQAAkAgBkL///////////8AgyIEQoCAgICAgMCAPH0gBEKAgICAgIDA/8MAfVQEQCAGQgSGIANCPIiEIQQgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhAgwCCyAEQoCAgICAgICAQH0hAiADQoCAgICAgICACFINASACIARCAYN8IQIMAQsgA1AgBEKAgICAgIDA//8AVCAEQoCAgICAgMD//wBRG0UEQCAGQgSGIANCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiAEQv///////7//wwBWDQBCACECIARCMIinIgBBkfcASQ0AIAMhAiAGQv///////z+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCACIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAF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ASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCAALCQAgASAAEQIACwUAQcM7Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAqCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRHgALBQBBvjsLIQAgACABKAIAIAEgASwAC0EASBtBuzsgAigCABAQNgIACyoBAX9BDBAeIgFBADoABCABIAAoAgA2AgggAEEANgIAIAFB2Cc2AgAgAQsFAEG7OwsFAEG4OwshACAAIAEoAgAgASABLAALQQBIG0GkOyACKAIAEBA2AgAL2AEBBH8jAEEgayIDJAAgASgCACIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIFEB4hBiADIAVBgICAgHhyNgIQIAMgBjYCCCADIAQ2AgwgBCAGaiEFDAELIAMgBDoAEyADQQhqIgYgBGohBSAERQ0BCyAGIAFBBGogBBArGgsgBUEAOgAAIAMgAjYCACADQRhqIANBCGogAyAAEQMAIAMoAhgQHSADKAIYIgAQBiADKAIAEAYgAywAE0EASARAIAMoAggQIwsgA0EgaiQAIAAPCxACAAsqAQF/QQwQHiIBQQA6AAQgASAAKAIANgIIIABBADYCACABQeAmNgIA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AkEIaiAIIAYQHyACIAcgAC8AABAfQQEhAyACKgIIIgogAioCACILXAR/IAogClsNAyALIAtcBSADC0UNAiACLQAMIAItAARHDQILIABBAmohAEEBIQMgBCEGQQEhBCAGRQ0ACyABLwB6IgBBB3FFBEAgBS0AekEHcUUNAgsgCCAAECAiCiAHIAUvAHoQICILWw0BIAogClsNACALIAtcDQELIAFBFGogBUEUakHoABArGiABQfwAaiAFQfwAahCgAQNAIAEtAAAiAEEEcQ0BIAEgAEEEcjoAACABKAIQIgAEQCABIAARAAALIAFBgICA/gc2ApwBIAEoAuQDIgENAAsLIAJBEGokAAvGAwEEfyMAQaAEayICJAAgACgCBCEBIABBADYCBCABBEAgASABKAIAKAIEEQAACyAAKAIIIQEgAEEANgIIIAEEQCABIAEoAgAoAgQRAAALAkAgACgCACIAKALoAyAAKALsA0YEQCAAKALkAw0BIAAgAkEYaiAAKAL0AxBcIgEpAgA3AgAgACABKAIQNgIQIAAgASkCCDcCCCAAQRRqIAFBFGpB6AAQKxogACABKQKMATcCjAEgACABKQKEATcChAEgACABKQJ8NwJ8IAEoApQBIQQgAUEANgKUASAAKAKUASEDIAAgBDYClAEgAwRAIAMQWwsgAEGYAWogAUGYAWpB0AIQKxogACgC6AMiAwRAIAAgAzYC7AMgAxAjCyAAIAEoAugDNgLoAyAAIAEoAuwDNgLsAyAAIAEoAvADNgLwAyABQQA2AvADIAFCADcC6AMgACABKQL8AzcC/AMgACABKQL0AzcC9AMgACABKAKEBDYChAQgASgClAEhACABQQA2ApQBIAAEQCAAEFsLIAJBoARqJAAPCyACQfAcNgIQIABBBUHYJSACQRBqECwQJAALIAJB5hE2AgAgAEEFQdglIAIQLBAkAAsLAEEMEB4gABCiAQsLAEEMEB5BABCiAQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhQLGQAgAUH/AXEEQBACAAsgACgCACgCEEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLJgAgASAAKAIAIgAoAhRHBEAgACABNgIUIAAgACgCDEEBajYCDAsLkgEBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGAEQCABIAAqAhhcBEAgACABOAIYIAAgACgCDEEBajYCDAsgAkEQaiQADwsgAkGIFDYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQbgwQdglIAIQSRoMAQsgAEEAQQVB2CUgAiAAKAIEEQ0AGgsgA0EQaiQAECQACz8AIAFB/wFxRQRAIAIgACgCACIAKAIQIgFBAXFHBEAgACABQX5xIAJyNgIQIAAgACgCDEEBajYCDAsPCxACAAsL4CYjAEGACAuBHk9ubHkgbGVhZiBub2RlcyB3aXRoIGN1c3RvbSBtZWFzdXJlIGZ1bmN0aW9ucyBzaG91bGQgbWFudWFsbHkgbWFyayB0aGVtc2VsdmVzIGFzIGRpcnR5AGlzRGlydHkAbWFya0RpcnR5AGRlc3Ryb3kAc2V0RGlzcGxheQBnZXREaXNwbGF5AHNldEZsZXgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABzZXRGbGV4R3JvdwBnZXRGbGV4R3JvdwBzZXRPdmVyZmxvdwBnZXRPdmVyZmxvdwBoYXNOZXdMYXlvdXQAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodFNpemluZ01vZGUgbXVzdCBiZSBTaXppbmdNb2RlOjpNYXhDb250ZW50AGF2YWlsYWJsZVdpZHRoIGlzIGluZGVmaW5pdGUgc28gd2lkdGhTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABzZXRBbGlnbkNvbnRlbnQAZ2V0QWxpZ25Db250ZW50AGdldFBhcmVudABpbXBsZW1lbnQAc2V0TWF4SGVpZ2h0UGVyY2VudABzZXRIZWlnaHRQZXJjZW50AHNldE1pbkhlaWdodFBlcmNlbnQAc2V0RmxleEJhc2lzUGVyY2VudABzZXRHYXBQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6UG9pbnQgfHwgaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHNldFBvaW50U2NhbGVGYWN0b3IATWVhc3VyZUNhbGxiYWNrV3JhcHBlcgBEaXJ0aWVkQ2FsbGJhY2tXcmFwcGVyAENhbm5vdCByZXNldCBhIG5vZGUgc3RpbGwgYXR0YWNoZWQgdG8gYSBvd25lcgBzZXRCb3JkZXIAZ2V0Qm9yZGVyAGdldENvbXB1dGVkQm9yZGVyAGdldE51bWJlcgBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6Ok51bWJlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRQb3NpdGlvbkF1dG8Ac2V0TWFyZ2luQXV0bwBzZXRXaWR0aEF1dG8AU2NhbGUgZmFjdG9yIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHplcm8Ac2V0QXNwZWN0UmF0aW8AZ2V0QXNwZWN0UmF0aW8Ac2V0UG9zaXRpb24AZ2V0UG9zaXRpb24Abm90aWZ5T25EZXN0cnVjdGlvbgBzZXRGbGV4RGlyZWN0aW9uAGdldEZsZXhEaXJlY3Rpb24Ac2V0RGlyZWN0aW9uAGdldERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG1hcmtMYXlvdXRTZWVuAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAHNldEFsd2F5c0Zvcm1zQ29udGFpbmluZ0Jsb2NrAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAZ2V0TGVuZ3RoAHdpZHRoAHNldE1heFdpZHRoAGdldE1heFdpZHRoAHNldFdpZHRoAGdldFdpZHRoAHNldE1pbldpZHRoAGdldE1pbldpZHRoAGdldENvbXB1dGVkV2lkdGgAcHVzaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1NtYWxsVmFsdWVCdWZmZXIuaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1N0eWxlVmFsdWVQb29sLmgAdW5zaWduZWQgbG9uZwBzZXRCb3hTaXppbmcAZ2V0Qm94U2l6aW5nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEATWVhc3VyZSBmdW5jdGlvbiByZXR1cm5lZCBhbiBpbnZhbGlkIGRpbWVuc2lvbiB0byBZb2dhOiBbd2lkdGg9JWYsIGhlaWdodD0lZl0ARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGRvdWJsZT4AQ2hpbGQgYWxyZWFkeSBoYXMgYSBvd25lciwgaXQgbXVzdCBiZSByZW1vdmVkIGZpcnN0LgBDYW5ub3Qgc2V0IG1lYXN1cmUgZnVuY3Rpb246IE5vZGVzIHdpdGggbWVhc3VyZSBmdW5jdGlvbnMgY2Fubm90IGhhdmUgY2hpbGRyZW4uAENhbm5vdCBhZGQgY2hpbGQ6IE5vZGVzIHdpdGggbWVhc3VyZSBmdW5jdGlvbnMgY2Fubm90IGhhdmUgY2hpbGRyZW4uAChudWxsKQBpbmRleCA8IDQwOTYgJiYgIlNtYWxsVmFsdWVCdWZmZXIgY2FuIG9ubHkgaG9sZCB1cCB0byA0MDk2IGNodW5rcyIAJXMKAAEAAAADAAAAAAAAAAIAAAADAAAAAQAAAAIAAAAAAAAAAQAAAAEAQYwmCwdpaQB2AHZpAEGgJgs3ox0AAKEdAADhHQAA2x0AAOEdAADbHQAAaWlpZmlmaQDUHQAApB0AAHZpaQClHQAA6B0AAGlpaQBB4CYLCcQAAADFAAAAxgBB9CYLDsQAAADHAAAAyAAAANQdAEGQJws+ox0AAOEdAADbHQAA4R0AANsdAADoHQAA4x0AAOgdAABpaWlpAAAAANQdAAC5HQAA1B0AALsdAAC8HQAA6B0AQdgnCwnJAAAAygAAAMsAQewnCxbJAAAAzAAAAMgAAAC/HQAA1B0AAL8dAEGQKAuiA9QdAAC/HQAA2x0AANUdAAB2aWlpaQAAANQdAAC/HQAA4R0AAHZpaWYAAAAA1B0AAL8dAADbHQAAdmlpaQAAAADUHQAAvx0AANUdAADVHQAAwB0AANsdAADbHQAAwB0AANUdAADAHQAAaQBkaWkAdmlpZAAAxB0AAMQdAAC/HQAA1B0AAMQdAADUHQAAxB0AAMMdAADUHQAAxB0AANsdAADUHQAAxB0AANsdAADiHQAAdmlpaWQAAADUHQAAxB0AAOIdAADbHQAAxR0AAMIdAADFHQAA2x0AAMIdAADFHQAA4h0AAMUdAADiHQAAxR0AANsdAABkaWlpAAAAAOEdAADEHQAA2x0AAGZpaWkAAAAA1B0AAMQdAADEHQAA3B0AANQdAADEHQAAxB0AANwdAADFHQAAxB0AAMQdAADEHQAAxB0AANwdAADUHQAAxB0AANUdAADVHQAAxB0AANQdAADEHQAAoR0AANQdAADEHQAAuR0AANUdAADFHQAAAAAAANQdAADEHQAA4h0AAOIdAADbHQAAdmlpZGRpAADBHQAAxR0AQcArC0EZAAoAGRkZAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABkAEQoZGRkDCgcAAQAJCxgAAAkGCwAACwAGGQAAABkZGQBBkSwLIQ4AAAAAAAAAABkACg0ZGRkADQAAAgAJDgAAAAkADgAADgBByywLAQwAQdcsCxUTAAAAABMAAAAACQwAAAAAAAwAAAwAQYUtCwEQAEGRLQsVDwAAAAQPAAAAAAkQAAAAAAAQAAAQAEG/LQsBEgBByy0LHhEAAAAAEQAAAAAJEgAAAAAAEgAAEgAAGgAAABoaGgBBgi4LDhoAAAAaGhoAAAAAAAAJAEGzLgsBFABBvy4LFRcAAAAAFwAAAAAJFAAAAAAAFAAAFABB7S4LARYAQfkuCycVAAAAABUAAAAACRYAAAAAABYAABYAADAxMjM0NTY3ODlBQkNERUYAQcQvCwHSAEHsLwsI//////////8AQbAwCwkQIgEAAAAAAAUAQcQwCwHNAEHcMAsKzgAAAM8AAAD8HQBB9DALAQIAQYQxCwj//////////wBByDELAQUAQdQxCwHQAEHsMQsOzgAAANEAAAAIHgAAAAQAQYQyCwEBAEGUMgsF/////woAQdgyCwHT",!X(Ae)){var re=Ae;Ae=r.locateFile?r.locateFile(re,i):i+re}function oe(){var C=Ae;try{if(C==Ae&&c)return new Uint8Array(c);if(X(C))try{var x=Tr(C.slice(37)),k=new Uint8Array(x.length);for(C=0;C<x.length;++C)k[C]=x.charCodeAt(C);var V=k}catch{throw Error("Converting base64 string to bytes failed.")}else V=void 0;var q=V;if(q)return q;throw"both async and sync fetching of the wasm failed"}catch(te){W(te)}}function ne(){return c||typeof fetch!="function"?Promise.resolve().then(function(){return oe()}):fetch(Ae,{credentials:"same-origin"}).then(function(C){if(!C.ok)throw"failed to load wasm binary file at '"+Ae+"'";return C.arrayBuffer()}).catch(function(){return oe()})}function ie(C){for(;0<C.length;)C.shift()(r)}function he(C){if(C===void 0)return"_unknown";C=C.replace(/[^a-zA-Z0-9_]/g,"$");var x=C.charCodeAt(0);return 48<=x&&57>=x?"_"+C:C}function F(C,x){return C=he(C),function(){return x.apply(this,arguments)}}var Be=[{},{value:void 0},{value:null},{value:!0},{value:!1}],Se=[];function Pe(C){var x=Error,k=F(C,function(V){this.name=C,this.message=V,V=Error(V).stack,V!==void 0&&(this.stack=this.toString()+`
2462
- `+V.replace(/^Error(:[^\n]*)?\n/,""))});return k.prototype=Object.create(x.prototype),k.prototype.constructor=k,k.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},k}var Ie=void 0;function y(C){throw new Ie(C)}var ye=C=>(C||y("Cannot use deleted val. handle = "+C),Be[C].value),Qe=C=>{switch(C){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var x=Se.length?Se.pop():Be.length;return Be[x]={ga:1,value:C},x}},xe=void 0,le=void 0;function ge(C){for(var x="";h[C];)x+=le[h[C++]];return x}var be=[];function we(){for(;be.length;){var C=be.pop();C.M.$=!1,C.delete()}}var _e=void 0,Ge={};function Ue(C,x){for(x===void 0&&y("ptr should not be undefined");C.R;)x=C.ba(x),C=C.R;return x}var Me={};function He(C){C=lr(C);var x=ge(C);return lt(C),x}function Te(C,x){var k=Me[C];return k===void 0&&y(x+" has unknown type "+He(C)),k}function je(){}var Le=!1;function Je(C){--C.count.value,C.count.value===0&&(C.T?C.U.W(C.T):C.P.N.W(C.O))}function nt(C,x,k){return x===k?C:k.R===void 0?null:(C=nt(C,x,k.R),C===null?null:k.na(C))}var qe={};function yt(C,x){return x=Ue(C,x),Ge[x]}var ze=void 0;function Ve(C){throw new ze(C)}function Ct(C,x){return x.P&&x.O||Ve("makeClassHandle requires ptr and ptrType"),!!x.U!=!!x.T&&Ve("Both smartPtrType and smartPtr must be specified"),x.count={value:1},pt(Object.create(C,{M:{value:x}}))}function pt(C){return typeof FinalizationRegistry>"u"?(pt=x=>x,C):(Le=new FinalizationRegistry(x=>{Je(x.M)}),pt=x=>{var k=x.M;return k.T&&Le.register(x,{M:k},x),x},je=x=>{Le.unregister(x)},pt(C))}var Qt={};function ft(C){for(;C.length;){var x=C.pop();C.pop()(x)}}function Xe(C){return this.fromWireType(Q[C>>2])}var It={},Ut={};function dt(C,x,k){function V(se){se=k(se),se.length!==C.length&&Ve("Mismatched type converter count");for(var pe=0;pe<C.length;++pe)st(C[pe],se[pe])}C.forEach(function(se){Ut[se]=x});var q=Array(x.length),te=[],ae=0;x.forEach((se,pe)=>{Me.hasOwnProperty(se)?q[pe]=Me[se]:(te.push(se),It.hasOwnProperty(se)||(It[se]=[]),It[se].push(()=>{q[pe]=Me[se],++ae,ae===te.length&&V(q)}))}),te.length===0&&V(q)}function Yt(C){switch(C){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+C)}}function st(C,x,k={}){if(!("argPackAdvance"in x))throw new TypeError("registerType registeredInstance requires argPackAdvance");var V=x.name;if(C||y('type "'+V+'" must have a positive integer typeid pointer'),Me.hasOwnProperty(C)){if(k.ua)return;y("Cannot register type '"+V+"' twice")}Me[C]=x,delete Ut[C],It.hasOwnProperty(C)&&(x=It[C],delete It[C],x.forEach(q=>q()))}function kt(C){y(C.M.P.N.name+" instance already deleted")}function ht(){}function _t(C,x,k){if(C[x].S===void 0){var V=C[x];C[x]=function(){return C[x].S.hasOwnProperty(arguments.length)||y("Function '"+k+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+C[x].S+")!"),C[x].S[arguments.length].apply(this,arguments)},C[x].S=[],C[x].S[V.Z]=V}}function xr(C,x){r.hasOwnProperty(C)?(y("Cannot register public name '"+C+"' twice"),_t(r,C,C),r.hasOwnProperty(void 0)&&y("Cannot register multiple overloads of a function with the same number of arguments (undefined)!"),r[C].S[void 0]=x):r[C]=x}function or(C,x,k,V,q,te,ae,se){this.name=C,this.constructor=x,this.X=k,this.W=V,this.R=q,this.pa=te,this.ba=ae,this.na=se,this.ja=[]}function Nt(C,x,k){for(;x!==k;)x.ba||y("Expected null or instance of "+k.name+", got an instance of "+x.name),C=x.ba(C),x=x.R;return C}function Ar(C,x){return x===null?(this.ea&&y("null is not a valid "+this.name),0):(x.M||y('Cannot pass "'+$t(x)+'" as a '+this.name),x.M.O||y("Cannot pass deleted object as a pointer of type "+this.name),Nt(x.M.O,x.M.P.N,this.N))}function xt(C,x){if(x===null){if(this.ea&&y("null is not a valid "+this.name),this.da){var k=this.fa();return C!==null&&C.push(this.W,k),k}return 0}if(x.M||y('Cannot pass "'+$t(x)+'" as a '+this.name),x.M.O||y("Cannot pass deleted object as a pointer of type "+this.name),!this.ca&&x.M.P.ca&&y("Cannot convert argument of type "+(x.M.U?x.M.U.name:x.M.P.name)+" to parameter type "+this.name),k=Nt(x.M.O,x.M.P.N,this.N),this.da)switch(x.M.T===void 0&&y("Passing raw pointer to smart pointer is illegal"),this.Ba){case 0:x.M.U===this?k=x.M.T:y("Cannot convert argument of type "+(x.M.U?x.M.U.name:x.M.P.name)+" to parameter type "+this.name);break;case 1:k=x.M.T;break;case 2:if(x.M.U===this)k=x.M.T;else{var V=x.clone();k=this.xa(k,Qe(function(){V.delete()})),C!==null&&C.push(this.W,k)}break;default:y("Unsupporting sharing policy")}return k}function wr(C,x){return x===null?(this.ea&&y("null is not a valid "+this.name),0):(x.M||y('Cannot pass "'+$t(x)+'" as a '+this.name),x.M.O||y("Cannot pass deleted object as a pointer of type "+this.name),x.M.P.ca&&y("Cannot convert argument of type "+x.M.P.name+" to parameter type "+this.name),Nt(x.M.O,x.M.P.N,this.N))}function ct(C,x,k,V){this.name=C,this.N=x,this.ea=k,this.ca=V,this.da=!1,this.W=this.xa=this.fa=this.ka=this.Ba=this.wa=void 0,x.R!==void 0?this.toWireType=xt:(this.toWireType=V?Ar:wr,this.V=null)}function Wt(C,x){r.hasOwnProperty(C)||Ve("Replacing nonexistant public symbol"),r[C]=x,r[C].Z=void 0}function ir(C,x){var k=[];return function(){if(k.length=0,Object.assign(k,arguments),C.includes("j")){var V=r["dynCall_"+C];V=k&&k.length?V.apply(null,[x].concat(k)):V.call(null,x)}else V=N.get(x).apply(null,k);return V}}function it(C,x){C=ge(C);var k=C.includes("j")?ir(C,x):N.get(x);return typeof k!="function"&&y("unknown function pointer with signature "+C+": "+x),k}var wt=void 0;function Tt(C,x){function k(te){q[te]||Me[te]||(Ut[te]?Ut[te].forEach(k):(V.push(te),q[te]=!0))}var V=[],q={};throw x.forEach(k),new wt(C+": "+V.map(He).join([", "]))}function qt(C,x,k,V,q){var te=x.length;2>te&&y("argTypes array size mismatch! Must at least get return value and 'this' types!");var ae=x[1]!==null&&k!==null,se=!1;for(k=1;k<x.length;++k)if(x[k]!==null&&x[k].V===void 0){se=!0;break}var pe=x[0].name!=="void",ue=te-2,de=Array(ue),ve=[],Fe=[];return function(){if(arguments.length!==ue&&y("function "+C+" called with "+arguments.length+" arguments, expected "+ue+" args!"),Fe.length=0,ve.length=ae?2:1,ve[0]=q,ae){var Ke=x[1].toWireType(Fe,this);ve[1]=Ke}for(var Ne=0;Ne<ue;++Ne)de[Ne]=x[Ne+2].toWireType(Fe,arguments[Ne]),ve.push(de[Ne]);if(Ne=V.apply(null,ve),se)ft(Fe);else for(var rt=ae?1:2;rt<x.length;rt++){var at=rt===1?Ke:de[rt-2];x[rt].V!==null&&x[rt].V(at)}return Ke=pe?x[0].fromWireType(Ne):void 0,Ke}}function Xt(C,x){for(var k=[],V=0;V<C;V++)k.push(m[x+4*V>>2]);return k}function Zt(C){4<C&&--Be[C].ga===0&&(Be[C]=void 0,Se.push(C))}function $t(C){if(C===null)return"null";var x=typeof C;return x==="object"||x==="array"||x==="function"?C.toString():""+C}function vr(C,x){switch(x){case 2:return function(k){return this.fromWireType(w[k>>2])};case 3:return function(k){return this.fromWireType(v[k>>3])};default:throw new TypeError("Unknown float type: "+C)}}function Dr(C,x,k){switch(x){case 0:return k?function(V){return d[V]}:function(V){return h[V]};case 1:return k?function(V){return I[V>>1]}:function(V){return b[V>>1]};case 2:return k?function(V){return Q[V>>2]}:function(V){return m[V>>2]};default:throw new TypeError("Unknown integer type: "+C)}}function Mr(C,x){for(var k="",V=0;!(V>=x/2);++V){var q=I[C+2*V>>1];if(q==0)break;k+=String.fromCharCode(q)}return k}function _r(C,x,k){if(k===void 0&&(k=2147483647),2>k)return 0;k-=2;var V=x;k=k<2*C.length?k/2:C.length;for(var q=0;q<k;++q)I[x>>1]=C.charCodeAt(q),x+=2;return I[x>>1]=0,x-V}function Sr(C){return 2*C.length}function Pr(C,x){for(var k=0,V="";!(k>=x/4);){var q=Q[C+4*k>>2];if(q==0)break;++k,65536<=q?(q-=65536,V+=String.fromCharCode(55296|q>>10,56320|q&1023)):V+=String.fromCharCode(q)}return V}function Gr(C,x,k){if(k===void 0&&(k=2147483647),4>k)return 0;var V=x;k=V+k-4;for(var q=0;q<C.length;++q){var te=C.charCodeAt(q);if(55296<=te&&57343>=te){var ae=C.charCodeAt(++q);te=65536+((te&1023)<<10)|ae&1023}if(Q[x>>2]=te,x+=4,x+4>k)break}return Q[x>>2]=0,x-V}function Rr(C){for(var x=0,k=0;k<C.length;++k){var V=C.charCodeAt(k);55296<=V&&57343>=V&&++k,x+=4}return x}var Fr={};function ar(C){var x=Fr[C];return x===void 0?ge(C):x}var Lt=[];function Ur(C){var x=Lt.length;return Lt.push(C),x}function kr(C,x){for(var k=Array(C),V=0;V<C;++V)k[V]=Te(m[x+4*V>>2],"parameter "+V);return k}var sr=[],Nr=[null,[],[]];Ie=r.BindingError=Pe("BindingError"),r.count_emval_handles=function(){for(var C=0,x=5;x<Be.length;++x)Be[x]!==void 0&&++C;return C},r.get_first_emval=function(){for(var C=5;C<Be.length;++C)if(Be[C]!==void 0)return Be[C];return null},xe=r.PureVirtualError=Pe("PureVirtualError");for(var cr=Array(256),Ot=0;256>Ot;++Ot)cr[Ot]=String.fromCharCode(Ot);le=cr,r.getInheritedInstanceCount=function(){return Object.keys(Ge).length},r.getLiveInheritedInstances=function(){var C=[],x;for(x in Ge)Ge.hasOwnProperty(x)&&C.push(Ge[x]);return C},r.flushPendingDeletes=we,r.setDelayFunction=function(C){_e=C,be.length&&_e&&_e(we)},ze=r.InternalError=Pe("InternalError"),ht.prototype.isAliasOf=function(C){if(!(this instanceof ht&&C instanceof ht))return!1;var x=this.M.P.N,k=this.M.O,V=C.M.P.N;for(C=C.M.O;x.R;)k=x.ba(k),x=x.R;for(;V.R;)C=V.ba(C),V=V.R;return x===V&&k===C},ht.prototype.clone=function(){if(this.M.O||kt(this),this.M.aa)return this.M.count.value+=1,this;var C=pt,x=Object,k=x.create,V=Object.getPrototypeOf(this),q=this.M;return C=C(k.call(x,V,{M:{value:{count:q.count,$:q.$,aa:q.aa,O:q.O,P:q.P,T:q.T,U:q.U}}})),C.M.count.value+=1,C.M.$=!1,C},ht.prototype.delete=function(){this.M.O||kt(this),this.M.$&&!this.M.aa&&y("Object already scheduled for deletion"),je(this),Je(this.M),this.M.aa||(this.M.T=void 0,this.M.O=void 0)},ht.prototype.isDeleted=function(){return!this.M.O},ht.prototype.deleteLater=function(){return this.M.O||kt(this),this.M.$&&!this.M.aa&&y("Object already scheduled for deletion"),be.push(this),be.length===1&&_e&&_e(we),this.M.$=!0,this},ct.prototype.qa=function(C){return this.ka&&(C=this.ka(C)),C},ct.prototype.ha=function(C){this.W&&this.W(C)},ct.prototype.argPackAdvance=8,ct.prototype.readValueFromPointer=Xe,ct.prototype.deleteObject=function(C){C!==null&&C.delete()},ct.prototype.fromWireType=function(C){function x(){return this.da?Ct(this.N.X,{P:this.wa,O:k,U:this,T:C}):Ct(this.N.X,{P:this,O:C})}var k=this.qa(C);if(!k)return this.ha(C),null;var V=yt(this.N,k);if(V!==void 0)return V.M.count.value===0?(V.M.O=k,V.M.T=C,V.clone()):(V=V.clone(),this.ha(C),V);if(V=this.N.pa(k),V=qe[V],!V)return x.call(this);V=this.ca?V.la:V.pointerType;var q=nt(k,this.N,V.N);return q===null?x.call(this):this.da?Ct(V.N.X,{P:V,O:q,U:this,T:C}):Ct(V.N.X,{P:V,O:q})},wt=r.UnboundTypeError=Pe("UnboundTypeError");var Tr=typeof atob=="function"?atob:function(C){var x="",k=0;C=C.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var V="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(C.charAt(k++)),q="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(C.charAt(k++)),te="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(C.charAt(k++)),ae="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(C.charAt(k++));V=V<<2|q>>4,q=(q&15)<<4|te>>2;var se=(te&3)<<6|ae;x+=String.fromCharCode(V),te!==64&&(x+=String.fromCharCode(q)),ae!==64&&(x+=String.fromCharCode(se))}while(k<C.length);return x},Lr={l:function(C,x,k,V){W("Assertion failed: "+(C?p(h,C):"")+", at: "+[x?x?p(h,x):"":"unknown filename",k,V?V?p(h,V):"":"unknown function"])},q:function(C,x,k){C=ge(C),x=Te(x,"wrapper"),k=ye(k);var V=[].slice,q=x.N,te=q.X,ae=q.R.X,se=q.R.constructor;C=F(C,function(){q.R.ja.forEach(function(ue){if(this[ue]===ae[ue])throw new xe("Pure virtual function "+ue+" must be implemented in JavaScript")}.bind(this)),Object.defineProperty(this,"__parent",{value:te}),this.__construct.apply(this,V.call(arguments))}),te.__construct=function(){this===te&&y("Pass correct 'this' to __construct");var ue=se.implement.apply(void 0,[this].concat(V.call(arguments)));je(ue);var de=ue.M;ue.notifyOnDestruction(),de.aa=!0,Object.defineProperties(this,{M:{value:de}}),pt(this),ue=de.O,ue=Ue(q,ue),Ge.hasOwnProperty(ue)?y("Tried to register registered instance: "+ue):Ge[ue]=this},te.__destruct=function(){this===te&&y("Pass correct 'this' to __destruct"),je(this);var ue=this.M.O;ue=Ue(q,ue),Ge.hasOwnProperty(ue)?delete Ge[ue]:y("Tried to unregister unregistered instance: "+ue)},C.prototype=Object.create(te);for(var pe in k)C.prototype[pe]=k[pe];return Qe(C)},j:function(C){var x=Qt[C];delete Qt[C];var k=x.fa,V=x.W,q=x.ia,te=q.map(ae=>ae.ta).concat(q.map(ae=>ae.za));dt([C],te,ae=>{var se={};return q.forEach((pe,ue)=>{var de=ae[ue],ve=pe.ra,Fe=pe.sa,Ke=ae[ue+q.length],Ne=pe.ya,rt=pe.Aa;se[pe.oa]={read:at=>de.fromWireType(ve(Fe,at)),write:(at,St)=>{var ut=[];Ne(rt,at,Ke.toWireType(ut,St)),ft(ut)}}}),[{name:x.name,fromWireType:function(pe){var ue={},de;for(de in se)ue[de]=se[de].read(pe);return V(pe),ue},toWireType:function(pe,ue){for(var de in se)if(!(de in ue))throw new TypeError('Missing field: "'+de+'"');var ve=k();for(de in se)se[de].write(ve,ue[de]);return pe!==null&&pe.push(V,ve),ve},argPackAdvance:8,readValueFromPointer:Xe,V}]})},v:function(){},B:function(C,x,k,V,q){var te=Yt(k);x=ge(x),st(C,{name:x,fromWireType:function(ae){return!!ae},toWireType:function(ae,se){return se?V:q},argPackAdvance:8,readValueFromPointer:function(ae){if(k===1)var se=d;else if(k===2)se=I;else if(k===4)se=Q;else throw new TypeError("Unknown boolean type size: "+x);return this.fromWireType(se[ae>>te])},V:null})},f:function(C,x,k,V,q,te,ae,se,pe,ue,de,ve,Fe){de=ge(de),te=it(q,te),se&&(se=it(ae,se)),ue&&(ue=it(pe,ue)),Fe=it(ve,Fe);var Ke=he(de);xr(Ke,function(){Tt("Cannot construct "+de+" due to unbound types",[V])}),dt([C,x,k],V?[V]:[],function(Ne){if(Ne=Ne[0],V)var rt=Ne.N,at=rt.X;else at=ht.prototype;Ne=F(Ke,function(){if(Object.getPrototypeOf(this)!==St)throw new Ie("Use 'new' to construct "+de);if(ut.Y===void 0)throw new Ie(de+" has no accessible constructor");var pr=ut.Y[arguments.length];if(pr===void 0)throw new Ie("Tried to invoke ctor of "+de+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(ut.Y).toString()+") parameters instead!");return pr.apply(this,arguments)});var St=Object.create(at,{constructor:{value:Ne}});Ne.prototype=St;var ut=new or(de,Ne,St,Fe,rt,te,se,ue);rt=new ct(de,ut,!0,!1),at=new ct(de+"*",ut,!1,!1);var gr=new ct(de+" const*",ut,!1,!0);return qe[C]={pointerType:at,la:gr},Wt(Ke,Ne),[rt,at,gr]})},d:function(C,x,k,V,q,te,ae){var se=Xt(k,V);x=ge(x),te=it(q,te),dt([],[C],function(pe){function ue(){Tt("Cannot call "+de+" due to unbound types",se)}pe=pe[0];var de=pe.name+"."+x;x.startsWith("@@")&&(x=Symbol[x.substring(2)]);var ve=pe.N.constructor;return ve[x]===void 0?(ue.Z=k-1,ve[x]=ue):(_t(ve,x,de),ve[x].S[k-1]=ue),dt([],se,function(Fe){return Fe=qt(de,[Fe[0],null].concat(Fe.slice(1)),null,te,ae),ve[x].S===void 0?(Fe.Z=k-1,ve[x]=Fe):ve[x].S[k-1]=Fe,[]}),[]})},p:function(C,x,k,V,q,te){0<x||W();var ae=Xt(x,k);q=it(V,q),dt([],[C],function(se){se=se[0];var pe="constructor "+se.name;if(se.N.Y===void 0&&(se.N.Y=[]),se.N.Y[x-1]!==void 0)throw new Ie("Cannot register multiple constructors with identical number of parameters ("+(x-1)+") for class '"+se.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return se.N.Y[x-1]=()=>{Tt("Cannot construct "+se.name+" due to unbound types",ae)},dt([],ae,function(ue){return ue.splice(1,0,null),se.N.Y[x-1]=qt(pe,ue,null,q,te),[]}),[]})},a:function(C,x,k,V,q,te,ae,se){var pe=Xt(k,V);x=ge(x),te=it(q,te),dt([],[C],function(ue){function de(){Tt("Cannot call "+ve+" due to unbound types",pe)}ue=ue[0];var ve=ue.name+"."+x;x.startsWith("@@")&&(x=Symbol[x.substring(2)]),se&&ue.N.ja.push(x);var Fe=ue.N.X,Ke=Fe[x];return Ke===void 0||Ke.S===void 0&&Ke.className!==ue.name&&Ke.Z===k-2?(de.Z=k-2,de.className=ue.name,Fe[x]=de):(_t(Fe,x,ve),Fe[x].S[k-2]=de),dt([],pe,function(Ne){return Ne=qt(ve,Ne,ue,te,ae),Fe[x].S===void 0?(Ne.Z=k-2,Fe[x]=Ne):Fe[x].S[k-2]=Ne,[]}),[]})},A:function(C,x){x=ge(x),st(C,{name:x,fromWireType:function(k){var V=ye(k);return Zt(k),V},toWireType:function(k,V){return Qe(V)},argPackAdvance:8,readValueFromPointer:Xe,V:null})},n:function(C,x,k){k=Yt(k),x=ge(x),st(C,{name:x,fromWireType:function(V){return V},toWireType:function(V,q){return q},argPackAdvance:8,readValueFromPointer:vr(x,k),V:null})},e:function(C,x,k,V,q){x=ge(x),q===-1&&(q=4294967295),q=Yt(k);var te=se=>se;if(V===0){var ae=32-8*k;te=se=>se<<ae>>>ae}k=x.includes("unsigned")?function(se,pe){return pe>>>0}:function(se,pe){return pe},st(C,{name:x,fromWireType:te,toWireType:k,argPackAdvance:8,readValueFromPointer:Dr(x,q,V!==0),V:null})},b:function(C,x,k){function V(te){te>>=2;var ae=m;return new q(f,ae[te+1],ae[te])}var q=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][x];k=ge(k),st(C,{name:k,fromWireType:V,argPackAdvance:8,readValueFromPointer:V},{ua:!0})},o:function(C,x){x=ge(x);var k=x==="std::string";st(C,{name:x,fromWireType:function(V){var q=m[V>>2],te=V+4;if(k)for(var ae=te,se=0;se<=q;++se){var pe=te+se;if(se==q||h[pe]==0){if(ae=ae?p(h,ae,pe-ae):"",ue===void 0)var ue=ae;else ue+="\0",ue+=ae;ae=pe+1}}else{for(ue=Array(q),se=0;se<q;++se)ue[se]=String.fromCharCode(h[te+se]);ue=ue.join("")}return lt(V),ue},toWireType:function(V,q){q instanceof ArrayBuffer&&(q=new Uint8Array(q));var te,ae=typeof q=="string";if(ae||q instanceof Uint8Array||q instanceof Uint8ClampedArray||q instanceof Int8Array||y("Cannot pass non-string to std::string"),k&&ae){var se=0;for(te=0;te<q.length;++te){var pe=q.charCodeAt(te);127>=pe?se++:2047>=pe?se+=2:55296<=pe&&57343>=pe?(se+=4,++te):se+=3}te=se}else te=q.length;if(se=er(4+te+1),pe=se+4,m[se>>2]=te,k&&ae){if(ae=pe,pe=te+1,te=h,0<pe){pe=ae+pe-1;for(var ue=0;ue<q.length;++ue){var de=q.charCodeAt(ue);if(55296<=de&&57343>=de){var ve=q.charCodeAt(++ue);de=65536+((de&1023)<<10)|ve&1023}if(127>=de){if(ae>=pe)break;te[ae++]=de}else{if(2047>=de){if(ae+1>=pe)break;te[ae++]=192|de>>6}else{if(65535>=de){if(ae+2>=pe)break;te[ae++]=224|de>>12}else{if(ae+3>=pe)break;te[ae++]=240|de>>18,te[ae++]=128|de>>12&63}te[ae++]=128|de>>6&63}te[ae++]=128|de&63}}te[ae]=0}}else if(ae)for(ae=0;ae<te;++ae)ue=q.charCodeAt(ae),255<ue&&(lt(pe),y("String has UTF-16 code units that do not fit in 8 bits")),h[pe+ae]=ue;else for(ae=0;ae<te;++ae)h[pe+ae]=q[ae];return V!==null&&V.push(lt,se),se},argPackAdvance:8,readValueFromPointer:Xe,V:function(V){lt(V)}})},i:function(C,x,k){if(k=ge(k),x===2)var V=Mr,q=_r,te=Sr,ae=()=>b,se=1;else x===4&&(V=Pr,q=Gr,te=Rr,ae=()=>m,se=2);st(C,{name:k,fromWireType:function(pe){for(var ue=m[pe>>2],de=ae(),ve,Fe=pe+4,Ke=0;Ke<=ue;++Ke){var Ne=pe+4+Ke*x;(Ke==ue||de[Ne>>se]==0)&&(Fe=V(Fe,Ne-Fe),ve===void 0?ve=Fe:(ve+="\0",ve+=Fe),Fe=Ne+x)}return lt(pe),ve},toWireType:function(pe,ue){typeof ue!="string"&&y("Cannot pass non-string to C++ string type "+k);var de=te(ue),ve=er(4+de+x);return m[ve>>2]=de>>se,q(ue,ve+4,de+x),pe!==null&&pe.push(lt,ve),ve},argPackAdvance:8,readValueFromPointer:Xe,V:function(pe){lt(pe)}})},k:function(C,x,k,V,q,te){Qt[C]={name:ge(x),fa:it(k,V),W:it(q,te),ia:[]}},h:function(C,x,k,V,q,te,ae,se,pe,ue){Qt[C].ia.push({oa:ge(x),ta:k,ra:it(V,q),sa:te,za:ae,ya:it(se,pe),Aa:ue})},C:function(C,x){x=ge(x),st(C,{va:!0,name:x,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},s:function(C,x,k,V,q){C=Lt[C],x=ye(x),k=ar(k);var te=[];return m[V>>2]=Qe(te),C(x,k,te,q)},t:function(C,x,k,V){C=Lt[C],x=ye(x),k=ar(k),C(x,k,null,V)},g:Zt,m:function(C,x){var k=kr(C,x),V=k[0];x=V.name+"_$"+k.slice(1).map(function(ae){return ae.name}).join("_")+"$";var q=sr[x];if(q!==void 0)return q;var te=Array(C-1);return q=Ur((ae,se,pe,ue)=>{for(var de=0,ve=0;ve<C-1;++ve)te[ve]=k[ve+1].readValueFromPointer(ue+de),de+=k[ve+1].argPackAdvance;for(ae=ae[se].apply(ae,te),ve=0;ve<C-1;++ve)k[ve+1].ma&&k[ve+1].ma(te[ve]);if(!V.va)return V.toWireType(pe,ae)}),sr[x]=q},D:function(C){4<C&&(Be[C].ga+=1)},r:function(C){var x=ye(C);ft(x),Zt(C)},c:function(){W("")},x:function(C,x,k){h.copyWithin(C,x,x+k)},w:function(C){var x=h.length;if(C>>>=0,2147483648<C)return!1;for(var k=1;4>=k;k*=2){var V=x*(1+.2/k);V=Math.min(V,C+100663296);var q=Math;V=Math.max(C,V),q=q.min.call(q,2147483648,V+(65536-V%65536)%65536);e:{try{u.grow(q-f.byteLength+65535>>>16),S();var te=1;break e}catch{}te=void 0}if(te)return!0}return!1},z:function(){return 52},u:function(){return 70},y:function(C,x,k,V){for(var q=0,te=0;te<k;te++){var ae=m[x>>2],se=m[x+4>>2];x+=8;for(var pe=0;pe<se;pe++){var ue=h[ae+pe],de=Nr[C];ue===0||ue===10?((C===1?a:s)(p(de,0)),de.length=0):de.push(ue)}q+=se}return m[V>>2]=q,0}};(function(){function C(q){r.asm=q.exports,u=r.asm.E,S(),N=r.asm.J,G.unshift(r.asm.F),K--,r.monitorRunDependencies&&r.monitorRunDependencies(K),K==0&&(z!==null&&(clearInterval(z),z=null),J&&(q=J,J=null,q()))}function x(q){C(q.instance)}function k(q){return ne().then(function(te){return WebAssembly.instantiate(te,V)}).then(function(te){return te}).then(q,function(te){s("failed to asynchronously prepare wasm: "+te),W(te)})}var V={a:Lr};if(K++,r.monitorRunDependencies&&r.monitorRunDependencies(K),r.instantiateWasm)try{return r.instantiateWasm(V,C)}catch(q){s("Module.instantiateWasm callback failed with error: "+q),o(q)}return(function(){return c||typeof WebAssembly.instantiateStreaming!="function"||X(Ae)||typeof fetch!="function"?k(x):fetch(Ae,{credentials:"same-origin"}).then(function(q){return WebAssembly.instantiateStreaming(q,V).then(x,function(te){return s("wasm streaming compile failed: "+te),s("falling back to ArrayBuffer instantiation"),k(x)})})})().catch(o),{}})(),r.___wasm_call_ctors=function(){return(r.___wasm_call_ctors=r.asm.F).apply(null,arguments)};var lr=r.___getTypeName=function(){return(lr=r.___getTypeName=r.asm.G).apply(null,arguments)};r.__embind_initialize_bindings=function(){return(r.__embind_initialize_bindings=r.asm.H).apply(null,arguments)};var er=r._malloc=function(){return(er=r._malloc=r.asm.I).apply(null,arguments)},lt=r._free=function(){return(lt=r._free=r.asm.K).apply(null,arguments)};r.dynCall_jiji=function(){return(r.dynCall_jiji=r.asm.L).apply(null,arguments)};var Ht;J=function C(){Ht||ur(),Ht||(J=C)};function ur(){function C(){if(!Ht&&(Ht=!0,r.calledRun=!0,!g)){if(ie(G),n(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;){var x=r.postRun.shift();j.unshift(x)}ie(j)}}if(!(0<K)){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)R();ie(_),0<K||(r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),C()},1)):C())}}if(r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);0<r.preInit.length;)r.preInit.pop()();return ur(),t.ready})})(),ys=Tl;$();$();var rr=(function(e){return e[e.Auto=0]="Auto",e[e.FlexStart=1]="FlexStart",e[e.Center=2]="Center",e[e.FlexEnd=3]="FlexEnd",e[e.Stretch=4]="Stretch",e[e.Baseline=5]="Baseline",e[e.SpaceBetween=6]="SpaceBetween",e[e.SpaceAround=7]="SpaceAround",e[e.SpaceEvenly=8]="SpaceEvenly",e})({}),Cs=(function(e){return e[e.BorderBox=0]="BorderBox",e[e.ContentBox=1]="ContentBox",e})({}),Qs=(function(e){return e[e.Width=0]="Width",e[e.Height=1]="Height",e})({}),Bo=(function(e){return e[e.Inherit=0]="Inherit",e[e.LTR=1]="LTR",e[e.RTL=2]="RTL",e})({}),VA=(function(e){return e[e.Flex=0]="Flex",e[e.None=1]="None",e[e.Contents=2]="Contents",e})({}),nr=(function(e){return e[e.Left=0]="Left",e[e.Top=1]="Top",e[e.Right=2]="Right",e[e.Bottom=3]="Bottom",e[e.Start=4]="Start",e[e.End=5]="End",e[e.Horizontal=6]="Horizontal",e[e.Vertical=7]="Vertical",e[e.All=8]="All",e})({}),an=(function(e){return e[e.None=0]="None",e[e.StretchFlexBasis=1]="StretchFlexBasis",e[e.AbsolutePositionWithoutInsetsExcludesPadding=2]="AbsolutePositionWithoutInsetsExcludesPadding",e[e.AbsolutePercentAgainstInnerSize=4]="AbsolutePercentAgainstInnerSize",e[e.All=2147483647]="All",e[e.Classic=2147483646]="Classic",e})({}),Ll=(function(e){return e[e.WebFlexBasis=0]="WebFlexBasis",e})({}),rA=(function(e){return e[e.Column=0]="Column",e[e.ColumnReverse=1]="ColumnReverse",e[e.Row=2]="Row",e[e.RowReverse=3]="RowReverse",e})({}),JA=(function(e){return e[e.Column=0]="Column",e[e.Row=1]="Row",e[e.All=2]="All",e})({}),sn=(function(e){return e[e.FlexStart=0]="FlexStart",e[e.Center=1]="Center",e[e.FlexEnd=2]="FlexEnd",e[e.SpaceBetween=3]="SpaceBetween",e[e.SpaceAround=4]="SpaceAround",e[e.SpaceEvenly=5]="SpaceEvenly",e})({}),cn=(function(e){return e[e.Error=0]="Error",e[e.Warn=1]="Warn",e[e.Info=2]="Info",e[e.Debug=3]="Debug",e[e.Verbose=4]="Verbose",e[e.Fatal=5]="Fatal",e})({}),KA=(function(e){return e[e.Undefined=0]="Undefined",e[e.Exactly=1]="Exactly",e[e.AtMost=2]="AtMost",e})({}),xs=(function(e){return e[e.Default=0]="Default",e[e.Text=1]="Text",e})({}),zA=(function(e){return e[e.Visible=0]="Visible",e[e.Hidden=1]="Hidden",e[e.Scroll=2]="Scroll",e})({}),YA=(function(e){return e[e.Static=0]="Static",e[e.Relative=1]="Relative",e[e.Absolute=2]="Absolute",e})({}),Ft=(function(e){return e[e.Undefined=0]="Undefined",e[e.Point=1]="Point",e[e.Percent=2]="Percent",e[e.Auto=3]="Auto",e})({}),WA=(function(e){return e[e.NoWrap=0]="NoWrap",e[e.Wrap=1]="Wrap",e[e.WrapReverse=2]="WrapReverse",e})({}),Ol={ALIGN_AUTO:rr.Auto,ALIGN_FLEX_START:rr.FlexStart,ALIGN_CENTER:rr.Center,ALIGN_FLEX_END:rr.FlexEnd,ALIGN_STRETCH:rr.Stretch,ALIGN_BASELINE:rr.Baseline,ALIGN_SPACE_BETWEEN:rr.SpaceBetween,ALIGN_SPACE_AROUND:rr.SpaceAround,ALIGN_SPACE_EVENLY:rr.SpaceEvenly,BOX_SIZING_BORDER_BOX:Cs.BorderBox,BOX_SIZING_CONTENT_BOX:Cs.ContentBox,DIMENSION_WIDTH:Qs.Width,DIMENSION_HEIGHT:Qs.Height,DIRECTION_INHERIT:Bo.Inherit,DIRECTION_LTR:Bo.LTR,DIRECTION_RTL:Bo.RTL,DISPLAY_FLEX:VA.Flex,DISPLAY_NONE:VA.None,DISPLAY_CONTENTS:VA.Contents,EDGE_LEFT:nr.Left,EDGE_TOP:nr.Top,EDGE_RIGHT:nr.Right,EDGE_BOTTOM:nr.Bottom,EDGE_START:nr.Start,EDGE_END:nr.End,EDGE_HORIZONTAL:nr.Horizontal,EDGE_VERTICAL:nr.Vertical,EDGE_ALL:nr.All,ERRATA_NONE:an.None,ERRATA_STRETCH_FLEX_BASIS:an.StretchFlexBasis,ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING:an.AbsolutePositionWithoutInsetsExcludesPadding,ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE:an.AbsolutePercentAgainstInnerSize,ERRATA_ALL:an.All,ERRATA_CLASSIC:an.Classic,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:Ll.WebFlexBasis,FLEX_DIRECTION_COLUMN:rA.Column,FLEX_DIRECTION_COLUMN_REVERSE:rA.ColumnReverse,FLEX_DIRECTION_ROW:rA.Row,FLEX_DIRECTION_ROW_REVERSE:rA.RowReverse,GUTTER_COLUMN:JA.Column,GUTTER_ROW:JA.Row,GUTTER_ALL:JA.All,JUSTIFY_FLEX_START:sn.FlexStart,JUSTIFY_CENTER:sn.Center,JUSTIFY_FLEX_END:sn.FlexEnd,JUSTIFY_SPACE_BETWEEN:sn.SpaceBetween,JUSTIFY_SPACE_AROUND:sn.SpaceAround,JUSTIFY_SPACE_EVENLY:sn.SpaceEvenly,LOG_LEVEL_ERROR:cn.Error,LOG_LEVEL_WARN:cn.Warn,LOG_LEVEL_INFO:cn.Info,LOG_LEVEL_DEBUG:cn.Debug,LOG_LEVEL_VERBOSE:cn.Verbose,LOG_LEVEL_FATAL:cn.Fatal,MEASURE_MODE_UNDEFINED:KA.Undefined,MEASURE_MODE_EXACTLY:KA.Exactly,MEASURE_MODE_AT_MOST:KA.AtMost,NODE_TYPE_DEFAULT:xs.Default,NODE_TYPE_TEXT:xs.Text,OVERFLOW_VISIBLE:zA.Visible,OVERFLOW_HIDDEN:zA.Hidden,OVERFLOW_SCROLL:zA.Scroll,POSITION_TYPE_STATIC:YA.Static,POSITION_TYPE_RELATIVE:YA.Relative,POSITION_TYPE_ABSOLUTE:YA.Absolute,UNIT_UNDEFINED:Ft.Undefined,UNIT_POINT:Ft.Point,UNIT_PERCENT:Ft.Percent,UNIT_AUTO:Ft.Auto,WRAP_NO_WRAP:WA.NoWrap,WRAP_WRAP:WA.Wrap,WRAP_WRAP_REVERSE:WA.WrapReverse},ws=Ol;function qA(e){function t(o,A,i){let a=o[A];o[A]=function(){for(var s=arguments.length,c=new Array(s),l=0;l<s;l++)c[l]=arguments[l];return i.call(this,a,...c)}}for(let o of["setPosition","setMargin","setFlexBasis","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setPadding","setGap"]){let A={[Ft.Point]:e.Node.prototype[o],[Ft.Percent]:e.Node.prototype[`${o}Percent`],[Ft.Auto]:e.Node.prototype[`${o}Auto`]};t(e.Node.prototype,o,function(i){for(var a=arguments.length,s=new Array(a>1?a-1:0),c=1;c<a;c++)s[c-1]=arguments[c];let l=s.pop(),u,g;if(l==="auto")u=Ft.Auto,g=void 0;else if(typeof l=="object")u=l.unit,g=l.valueOf();else if(u=typeof l=="string"&&l.endsWith("%")?Ft.Percent:Ft.Point,g=parseFloat(l),l!==void 0&&!Number.isNaN(l)&&Number.isNaN(g))throw new Error(`Invalid value ${l} for ${o}`);if(!A[u])throw new Error(`Failed to execute "${o}": Unsupported unit '${l}'`);return g!==void 0?A[u].call(this,...s,g):A[u].call(this,...s)})}function r(o){return e.MeasureCallback.implement({measure:function(){let{width:A,height:i}=o(...arguments);return{width:A??NaN,height:i??NaN}}})}t(e.Node.prototype,"setMeasureFunc",function(o,A){return A?o.call(this,r(A)):this.unsetMeasureFunc()});function n(o){return e.DirtiedCallback.implement({dirtied:o})}return t(e.Node.prototype,"setDirtiedFunc",function(o,A){o.call(this,n(A))}),t(e.Config.prototype,"free",function(){e.Config.destroy(this)}),t(e.Node,"create",(o,A)=>A?e.Node.createWithConfig(A):e.Node.createDefault()),t(e.Node.prototype,"free",function(){e.Node.destroy(this)}),t(e.Node.prototype,"freeRecursive",function(){for(let o=0,A=this.getChildCount();o<A;++o)this.getChild(0).freeRecursive();this.free()}),t(e.Node.prototype,"calculateLayout",function(o){let A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:Bo.LTR;return o.call(this,A,i,a)}),{Config:e.Config,Node:e.Node,...ws}}async function vs(){return qA(await ys())}var nA=null;async function Hl(){return nA||(nA=await vs(),nA)}function jl(e,t){switch(t){case"center":return e.JUSTIFY_CENTER;case"end":return e.JUSTIFY_FLEX_END;case"space-between":return e.JUSTIFY_SPACE_BETWEEN;case"space-around":return e.JUSTIFY_SPACE_AROUND;default:return e.JUSTIFY_FLEX_START}}function Vl(e,t){switch(t){case"center":return e.ALIGN_CENTER;case"end":return e.ALIGN_FLEX_END;case"stretch":return e.ALIGN_STRETCH;default:return e.ALIGN_FLEX_START}}function Jl(e,t){switch(t){case"start":return e.ALIGN_FLEX_START;case"center":return e.ALIGN_CENTER;case"end":return e.ALIGN_FLEX_END;case"stretch":return e.ALIGN_STRETCH;case"baseline":return e.ALIGN_BASELINE;default:return e.ALIGN_AUTO}}function Wr(e){if(e!=null){if(typeof e=="number"||typeof e=="string")return e;if(typeof e=="object"){if("unit"in e&&typeof e.unit=="number")return e;let t=Number(e);if(!Number.isNaN(t))return t}}}function Kl(e){switch(e.kind){case"flex":return e.dir??"row";case"block":return"column";case"box":return e.children&&e.children.length>0?"column":null;default:return null}}function zl(e){if(e.kind==="block")return"fill"}function Yl(e){let t=0;if(e.kind==="flex"||e.kind==="block"){let i=Wr(e.gap);t=typeof i=="number"?i:0}let r=0;if(e.kind==="flex"||e.kind==="block"||e.kind==="box"||e.kind==="text"){let i=Wr(e.padding);r=typeof i=="number"?i:0}let n="start";e.kind==="flex"&&(n=e.justify??"start");let o="start";(e.kind==="flex"||e.kind==="block")&&(o=e.align??"start");let A=!1;return e.kind==="flex"&&(A=typeof e.wrap=="boolean"?e.wrap:!1),{gap:t,padding:r,justify:n,align:o,wrap:A}}function bo(e){let t=e;return t.position==="absolute"||t.position===void 0&&(t.x!==void 0||t.y!==void 0)}function Wl(e){return"children"in e&&e.children?e.children.filter(t=>!bo(t)):[]}function ql(e){return"children"in e&&e.children?e.children.filter(t=>bo(t)):[]}function Ms(e,t,r,n,o){let A=t,i=e.Node.create(),a=Kl(A),s=a!==null,c=[];if(bo(A)){i.setPositionType(e.POSITION_TYPE_ABSOLUTE);let I=Wr(A.x),b=Wr(A.y);I!==void 0&&i.setPosition(e.EDGE_LEFT,I),b!==void 0&&i.setPosition(e.EDGE_TOP,b)}else i.setPositionType(e.POSITION_TYPE_RELATIVE);let u=Wr(A.grow);u!==void 0&&i.setFlexGrow(typeof u=="number"?u:parseFloat(u));let g=Wr(A.flexShrink);g!==void 0?i.setFlexShrink(typeof g=="number"?g:parseFloat(g)):i.setFlexShrink(o!==null?1:0),A.flexBasis!==void 0&&i.setFlexBasis(A.flexBasis),A.alignSelf!==void 0&&i.setAlignSelf(Jl(e,A.alignSelf));let p=A.width??zl(A),f=A.height,d=o==="row",h=o==="column";if(Ds(i,"width",p,r?.width,d),Ds(i,"height",f,r?.height,h),s){let I=Yl(A);i.setFlexDirection(a==="row"?e.FLEX_DIRECTION_ROW:e.FLEX_DIRECTION_COLUMN),i.setJustifyContent(jl(e,I.justify)),i.setAlignItems(Vl(e,I.align)),i.setFlexWrap(I.wrap?e.WRAP_WRAP:e.WRAP_NO_WRAP),I.padding>0&&i.setPadding(e.EDGE_ALL,I.padding),I.gap>0&&i.setGap(e.GUTTER_ALL,I.gap);let b=Wl(A),Q=ql(A),m=[...b,...Q];for(let w=0;w<m.length;w++){let v=Ms(e,m[w],void 0,n,bo(A)?null:a);i.insertChild(v.yogaNode,w),c.push(v)}}else if(A.kind==="text"||A.kind==="media"&&A.dataType==="Caption")i.setMeasureFunc((I,b,Q,m)=>{let w;(b===1||b===2)&&(w=I);let v=n?.(A,w)??{width:0,height:0},S=v.width,N=v.height;return b===1&&(S=I),m===1&&(N=Q),{width:S,height:N}});else{let I=n?.(A)??null;if(I){let b=A.aspectRatio!==void 0,Q=A.kind==="media"&&A.dataType==="Caption",m=I.height>0?I.width/I.height:1;A.kind==="media"&&!Q&&!b&&i.setAspectRatio(m);let w=p===void 0||p==="auto"||p==="fit",v=f===void 0||f==="auto"||f==="fit";if(w&&v){let S=A.aspectRatio??(A.kind==="media"?m:void 0)??1;i.setMeasureFunc((N,_,G,j)=>{let R=I.width,K=I.height;if(_===1&&j===1)R=N,K=G;else if(_===1)R=N,K=S>0?Math.round(N/S):I.height;else if(j===1)K=G,R=S>0?Math.round(G*S):I.width;else if(_===2&&j===2){let z=Math.min(1,N/I.width,G/I.height);R=Math.round(I.width*z),K=Math.round(I.height*z)}else _===2?I.width>N&&(R=N,K=S>0?Math.round(N/S):I.height):j===2&&I.height>G&&(K=G,R=S>0?Math.round(G*S):I.width);return{width:R,height:K}})}else if(w){let S=A.aspectRatio??(A.kind==="media"?m:void 0);(S===void 0||S<=0)&&i.setWidth(I.width)}else if(v){let S=A.aspectRatio??(A.kind==="media"?m:void 0);(S===void 0||S<=0)&&i.setHeight(I.height)}}}return{yogaNode:i,layoutNode:A,children:c}}function Ds(e,t,r,n,o){if(r===void 0||r==="auto"||r==="fit")return;let A=Wr(r);if(typeof A=="number"){t==="width"?e.setWidth(A):e.setHeight(A);return}if(A==="fill"){if(o){e.getFlexGrow()===0&&e.setFlexGrow(1),e.setFlexBasis(0);return}n!==void 0?t==="width"?e.setWidth(n):e.setHeight(n):t==="width"?e.setWidthPercent(100):e.setHeightPercent(100)}}function _s(e,t,r,n,o){let A=e.yogaNode.getComputedLayout(),i=t+A.left,a=r+A.top,s=A.width,c=A.height,l=e.layoutNode;bo(l)||(i+=Number(l.x??0),a+=Number(l.y??0)),n[e.layoutNode.id]={x:Math.round(i*1e3)/1e3,y:Math.round(a*1e3)/1e3,width:Math.round(s*1e3)/1e3,height:Math.round(c*1e3)/1e3},o[e.layoutNode.id]={width:Math.round(s*1e3)/1e3,height:Math.round(c*1e3)/1e3};for(let u of e.children)_s(u,i,a,n,o)}function Ss(e){for(let t of e.children)Ss(t);e.yogaNode.free()}function Xl(e,t){let{layout:r,viewport:n,measure:o}=t,A={},i={};for(let a of r){let s=e.Node.create();s.setWidth(n.width),s.setHeight(n.height),s.setFlexDirection(e.FLEX_DIRECTION_COLUMN);let c=Ms(e,a,{width:n.width,height:n.height},o,null);s.insertChild(c.yogaNode,0),s.calculateLayout(n.width,n.height);let l=c.yogaNode.getComputedLayout(),u=a.position==="absolute"||a.position===void 0&&(a.x!==void 0||a.y!==void 0),g=u?l.left:Number(a.x??0),p=u?l.top:Number(a.y??0);A[a.id]={x:Math.round(g*1e3)/1e3,y:Math.round(p*1e3)/1e3,width:Math.round(l.width*1e3)/1e3,height:Math.round(l.height*1e3)/1e3},i[a.id]={width:Math.round(l.width*1e3)/1e3,height:Math.round(l.height*1e3)/1e3};for(let f of c.children)_s(f,g,p,A,i);Ss(c),s.free()}return{rects:A,sizes:i}}async function Nd(e){let t=await Hl();return Xl(t,e)}$();$();var Zl=/-?(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?/gi,$l=/([MmLlHhVvCcSsQqTtAaZz])([^MmLlHhVvCcSsQqTtAaZz]*)/g;function Ps(e){let t=[],r=[],n=0,o=0,A=0,i=0,a=0,s=0,c="",l=u=>{r.length>1&&t.push({pts:r,closed:u}),r=[]};for(let u of e.matchAll($l)){let g=u[1],p=(u[2].match(Zl)??[]).map(Number),f=g===g.toLowerCase(),d=g.toUpperCase(),h=0,I=m=>{let w=p.slice(h,h+m);return h+=m,w},b=m=>h+m<=p.length;if(d==="Z"){n=A,o=i,l(!0),r=[[n,o]],c=d;continue}let Q=!0;for(;b(d==="H"||d==="V"?1:d==="A"?7:d==="C"?6:d==="S"||d==="Q"?4:2);){if(d==="M"){let[m,w]=I(2);n=f?n+m:m,o=f?o+w:w,Q?(l(!1),A=n,i=o,r=[[n,o]]):r.push([n,o])}else if(d==="L"||d==="T"){let[m,w]=I(2),v=f?n+m:m,S=f?o+w:w;if(d==="T"){let N=c==="Q"||c==="T"?2*n-a:n,_=c==="Q"||c==="T"?2*o-s:o;Gs(r,n,o,N,_,v,S),a=N,s=_}else r.push([v,S]);n=v,o=S}else if(d==="H"){let[m]=I(1);n=f?n+m:m,r.push([n,o])}else if(d==="V"){let[m]=I(1);o=f?o+m:m,r.push([n,o])}else if(d==="C"||d==="S"){let m,w;if(d==="C"){let[z,J]=I(2);m=f?n+z:z,w=f?o+J:J}else m=c==="C"||c==="S"?2*n-a:n,w=c==="C"||c==="S"?2*o-s:o;let[v,S,N,_]=I(4),G=f?n+v:v,j=f?o+S:S,R=f?n+N:N,K=f?o+_:_;for(let z=1;z<=16;z++){let J=z/16,W=1-J;r.push([W*W*W*n+3*W*W*J*m+3*W*J*J*G+J*J*J*R,W*W*W*o+3*W*W*J*w+3*W*J*J*j+J*J*J*K])}a=G,s=j,n=R,o=K}else if(d==="Q"){let[m,w,v,S]=I(4),N=f?n+m:m,_=f?o+w:w,G=f?n+v:v,j=f?o+S:S;Gs(r,n,o,N,_,G,j),a=N,s=_,n=G,o=j}else if(d==="A"){let[m,w,v,S,N,_,G]=I(7),j=f?n+_:_,R=f?o+G:G;eu(r,n,o,m,w,v,S!==0,N!==0,j,R),n=j,o=R}Q=!1,c=d,d==="M"&&(c="L")}c=d}return l(!1),t}function Gs(e,t,r,n,o,A,i){for(let a=1;a<=16;a++){let s=a/16,c=1-s;e.push([c*c*t+2*c*s*n+s*s*A,c*c*r+2*c*s*o+s*s*i])}}function eu(e,t,r,n,o,A,i,a,s,c){let l=Math.abs(n),u=Math.abs(o);if(l===0||u===0){e.push([s,c]);return}let g=A*Math.PI/180,p=Math.cos(g),f=Math.sin(g),d=(t-s)/2,h=(r-c)/2,I=p*d+f*h,b=-f*d+p*h,Q=I*I/(l*l)+b*b/(u*u);Q>1&&(l*=Math.sqrt(Q),u*=Math.sqrt(Q));let m=l*l*u*u-l*l*b*b-u*u*I*I,w=l*l*b*b+u*u*I*I,v=Math.sqrt(Math.max(0,m/w));i===a&&(v=-v);let S=v*l*b/u,N=-v*u*I/l,_=p*S-f*N+(t+s)/2,G=f*S+p*N+(r+c)/2,j=(J,W,X,Ae)=>Math.atan2(J*Ae-W*X,J*X+W*Ae),R=j(1,0,(I-S)/l,(b-N)/u),K=j((I-S)/l,(b-N)/u,(-I-S)/l,(-b-N)/u);!a&&K>0&&(K-=2*Math.PI),a&&K<0&&(K+=2*Math.PI);let z=Math.max(4,Math.ceil(Math.abs(K)/(Math.PI/2)*16));for(let J=1;J<=z;J++){let W=R+K*J/z,X=l*Math.cos(W),Ae=u*Math.sin(W);e.push([p*X-f*Ae+_,f*X+p*Ae+G])}}function Rs(e,t){let r=e.closed?[...e.pts,e.pts[0]]:e.pts,n=[0];for(let s=1;s<r.length;s++)n.push(n[s-1]+Math.hypot(r[s][0]-r[s-1][0],r[s][1]-r[s-1][1]));let o=n[n.length-1],A=[];if(o<=0){for(let s=0;s<t;s++)A.push([r[0][0],r[0][1]]);return A}let i=e.closed?t:t-1,a=0;for(let s=0;s<t;s++){let c=o*s/i;for(;a<n.length-2&&n[a+1]<c;)a++;let l=n[a+1]-n[a],u=l>0?(c-n[a])/l:0;A.push([r[a][0]+(r[a+1][0]-r[a][0])*u,r[a][1]+(r[a+1][1]-r[a][1])*u])}return A}function Fs(e){let t=0;for(let r=0;r<e.length;r++){let n=e[(r+1)%e.length];t+=e[r][0]*n[1]-n[0]*e[r][1]}return t/2}function Us(e){let t=0,r=0;for(let n of e)t+=n[0],r+=n[1];return[t/e.length,r/e.length]}function tu(e,t,r){if(!r){let s=Math.hypot(e[0][0]-t[0][0],e[0][1]-t[0][1]);return Math.hypot(e[0][0]-t[t.length-1][0],e[0][1]-t[t.length-1][1])<s?[...t].reverse():t}let n=Math.sign(Fs(e))!==Math.sign(Fs(t))?[...t].reverse():t,o=e.length,A=0,i=Number.POSITIVE_INFINITY,a=s=>{let c=0;for(let l=0;l<o;l+=2){let u=n[(l+s)%o];c+=(e[l][0]-u[0])**2+(e[l][1]-u[1])**2}return c};for(let s=0;s<o;s+=4){let c=a(s);c<i&&(i=c,A=s)}for(let s=A-3;s<=A+3;s++){let c=(s+o)%o,l=a(c);l<i&&(i=l,A=c)}return e.map((s,c)=>n[(c+A)%o])}var oA=new Map;function ru(e,t){let r=`${e}\0${t}`,n=oA.get(r);if(n)return n;let o=Ps(e),A=Ps(t),i=Math.max(o.length,A.length),a={a:[],b:[],closed:[]};for(let s=0;s<i;s++){let c=o[s],l=A[s],u=(c?.closed??!0)&&(l?.closed??!0),g=c?Rs(c,128):void 0,p=l?Rs(l,128):void 0;if(!g&&p){let f=Us(p);g=p.map(()=>[f[0],f[1]])}if(!p&&g){let f=Us(g);p=g.map(()=>[f[0],f[1]])}!g||!p||(a.a.push(g),a.b.push(tu(g,p,u)),a.closed.push(u))}return oA.size>256&&oA.clear(),oA.set(r,a),a}var ks=e=>(Math.round(e*100)/100).toString();function Ns(e,t,r){if(r<=0)return e;if(r===1)return t;let n=ru(e,t),o=[];for(let A=0;A<n.a.length;A++){let i=n.a[A],a=n.b[A],s="";for(let c=0;c<i.length;c++){let l=i[c][0]+(a[c][0]-i[c][0])*r,u=i[c][1]+(a[c][1]-i[c][1])*r;s+=`${c===0?"M":"L"}${ks(l)} ${ks(u)}`}o.push(n.closed[A]?`${s}Z`:s)}return o.join("")}function Ts(e,t){let r=Math.floor(e)^t*1013|0;return r=Math.imul(r^r>>>15,r|1),r^=r+Math.imul(r^r>>>7,r|61),((r^r>>>14)>>>0)/4294967295*2-1}function nu(e,t){let r=Math.floor(e),n=r+1,o=e-r,A=o*o*(3-2*o),i=Ts(r,t),a=Ts(n,t),s=i*o,c=a*(o-1);return(s*(1-A)+c*A)*2}function ou(e,t,r=0){let n=e.frequency??2,o=e.amplitude??50,A=Math.max(1,Math.min(4,e.octaves??1)),i=e.seed??1234,a=0,s=0,c=1,l=n;for(let g=0;g<A;g++){let p=nu(t*l,i+g*7919);a+=p*c,s+=c,c*=.5,l*=2}let u=s>0?a/s:0;return r+u*o}function Au(e,t,r,n){if(t<=0)return r;let o=Math.max(.001,e.mass??1),A=Math.max(.001,e.stiffness??180),i=Math.max(.001,e.damping??12),a=Math.sqrt(A/o),s=i/(2*Math.sqrt(A*o)),c=1;if(s<1){let l=a*Math.sqrt(1-s*s),u=-1,g=-s*a/l;c=1+Math.exp(-s*a*t)*(u*Math.cos(l*t)+g*Math.sin(l*t))}else if(Math.abs(s-1)<1e-4)c=1+Math.exp(-a*t)*(-1-a*t);else{let l=Math.sqrt(s*s-1),u=-a*(s-l),g=-a*(s+l),p=-1/(1-u/g),f=-1-p;c=1+p*Math.exp(u*t)+f*Math.exp(g*t)}return r+(n-r)*c}function mt(e,t,r){if(e==null)return 0;if(typeof e=="number")return e;if(typeof e=="function")return Number(e(t,r))||0;if(Array.isArray(e)||ArrayBuffer.isView(e)){let n=e;if(n.length===0)return 0;let o=Math.max(0,Math.min(n.length-1,Math.round(t)));return Number(n[o])||0}if(typeof e=="object"){let n=e;if(typeof n.get=="function")return Number(n.get({frame:t,fps:r,time:r>0?t/r:0}))||0;if(n.type==="Signal"&&n.data)return mt(n.data,t,r);let o=n.samples??(typeof n.channel=="string"&&n[n.channel]!==void 0?n[n.channel]:void 0);if(Array.isArray(o)||ArrayBuffer.isView(o)){let A=o;if(A.length===0)return 0;let i=Number(n.fps)||24,a=r>0?r:24,s=t/a,c=Math.max(0,Math.min(A.length-1,Math.round(s*i)));return Number(A[c])||0}if(n.type==="audio_extractor"||n.extractionMode!==void 0){let A=n.nodeId;if(A){let i=n.channel??"primary",a=ra.getChannelSamples(A,i);if(a&&a.length>0){let s=Number(n.fps)||24,c=r>0?r:24,l=t/c,u=Math.max(0,Math.min(a.length-1,Math.round(l*s)));return Number(a[u])||0}}return 0}if(n.type==="generator"){let A=typeof n.amplitude=="number"?n.amplitude:1,i=typeof n.frequency=="number"?n.frequency:1;if(n.syncToBpm&&typeof n.bpm=="number"&&n.bpm>0){let I=typeof n.bars=="number"&&n.bars>0?n.bars:1;i=n.bpm/60/I}let a=typeof n.phase=="number"?n.phase:0,s=typeof n.offset=="number"?n.offset:0,c=t/(r>0?r:24),l=n.baseType??"sine",u=!!n.fmEnabled,g=c;if(u){let I=Number(n.fmAmplitude)||1,b=Number(n.fmFrequency)||.5;g=c+Math.sin(c*b*Math.PI*2)*I}let p=0,f=(g*i+a/(Math.PI*2))%1,d=f<0?f+1:f,h=I=>(I%1+1)%1;switch(l){case"triangle":p=4*Math.abs(d-.5)-1;break;case"sawtooth":p=2*d-1;break;case"square":p=d<.5?1:-1;break;case"constant":p=1;break;case"noise_smooth":{let I=g*i+a,b=Math.floor(I),Q=I-b,m=Q*Q*(3-2*Q),w=h(Math.sin(b*12.9898)*43758.5453),v=h(Math.sin((b+1)*12.9898)*43758.5453);p=(w*(1-m)+v*m)*2-1;break}case"noise_white":p=h(Math.sin(g*12.9898+a)*43758.5453)*2-1;break;case"pulse":{let I=a===0?.5:Math.max(.01,Math.min(.99,a));p=h(g*i)<I?1:-1;break}case"bounce":p=Math.abs(Math.sin(g*i*Math.PI+a));break;case"staircase":p=Math.floor(d*8)/7*2-1;break;default:p=Math.sin(g*i*Math.PI*2+a);break}return p*A+s}if(n.type==="gate"){let A=n.sourceSignal??n.signal,i=typeof n.threshold=="number"?n.threshold:.5,a=n.mode??"gate",s=!!n.invert,c=typeof n.debounceMs=="number"?n.debounceMs:0,l=Math.max(1,Math.round(c/1e3*r)),u=Math.max(1,Number(n.holdFrames)||4),g=0;if(a==="gate")g=mt(A,t,r)>=i?1:0;else if(a==="trigger"){let p=-1/0,f=Math.max(0,t-300);for(let d=f;d<=t;d++){let h=mt(A,d,r),I=d>0?mt(A,d-1,r):0;h>=i&&I<i&&d-p>=l&&(p=d)}g=t>=p&&t<p+u?1:0}else if(a==="toggle"){let p=0,f=-1/0;for(let d=0;d<=t;d++){let h=mt(A,d,r),I=d>0?mt(A,d-1,r):0;h>=i&&I<i&&d-f>=l&&(p++,f=d)}g=p%2===1?1:0}return s?1-g:g}if(n.type==="signal_math"){let A=mt(n.signalA,t,r),a=n.signalB!==void 0?mt(n.signalB,t,r):Number(n.bValue)||0;switch(n.operation){case"add":return A+a;case"subtract":return A-a;case"multiply":return A*a;case"divide":return a!==0?A/a:0;case"min":return Math.min(A,a);case"max":return Math.max(A,a);case"clamp":{let s=Number(n.clampMin)||0,c=Number(n.clampMax)||1;return Math.max(s,Math.min(c,A))}case"abs":return Math.abs(A);case"negate":return-A;case"invert":return 1-A;case"power":return A**(Number(n.exponent)||2);case"modulo":return a!==0?A%a:0;case"remap":{let s=Number(n.inMin)||0,c=Number(n.inMax)||1,l=Number(n.outMin)||0,u=Number(n.outMax)||1,g=c-s,p=g!==0?(A-s)/g:0;return l+p*(u-l)}case"normalize":{let s=Number(n.aMin??n.inMin)||0,l=(Number(n.aMax??n.inMax)||1)-s;return l!==0?Math.max(0,Math.min(1,(A-s)/l)):0}case"smoothstep":{let s=Number(n.edge0)||0,l=(Number(n.edge1)||1)-s,u=l!==0?Math.max(0,Math.min(1,(A-s)/l)):0;return u*u*(3-2*u)}case"custom":return A;default:return A}}if(typeof n.value=="number")return n.value}return 0}function iu(e,t,r,n=.15,o=2){if(t<0||!e)return 0;let A=e,i=0,a=-1/0;for(let s=0;s<=t;s++){let c=mt(A,s,r),l=s>0?mt(A,s-1,r):0;c>=n&&l<n&&s-a>=o&&(i++,a=s)}return i}function au(e,t,r,n={}){let o=n[e.inputHandleId];if(o===void 0&&n){let g=Object.keys(n);if(g.length===1)o=n[g[0]];else if(g.length>1){let p=g.find(f=>f===e.inputHandleId);o=p?n[p]:n[g[0]]}}if(e.channel&&o&&typeof o=="object"){let g=o[e.channel];g!==void 0?o=g:typeof o.get!="function"&&(o={...o,channel:e.channel})}if(e.signalMode==="accumulate"){let g=e.threshold??e.accumulateThreshold??.15,p=e.debounceFrames??2,f=iu(o,t,r,g,p),d=e.multiplier??1,h=e.offset??0;return f*d+h}let A=e.multiplier??1,i=e.offset??0,a=Math.max(0,Math.round(e.smoothingWindowFrames??0));if(a<=1)return mt(o,t,r)*A+i;let s=0,c=0,l=Math.max(0,t-a+1);for(let g=l;g<=t;g++)s+=mt(o,g,r),c++;return(c>0?s/c:0)*A+i}function su(e,t,r){return e+(t-e)*r}function cu(e){let t=e.trim().replace("#","");if(t.length===3&&(t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]),t.length===6){let r=parseInt(t,16);return[r>>16&255,r>>8&255,r&255,1]}if(t.length===8){let r=parseInt(t,16);return[r>>24&255,r>>16&255,r>>8&255,(r&255)/255]}return[255,255,255,1]}function Ls(e,t,r){return ea(e,t,r)}function XA(e,t,r){let n=r;return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function lu(e,t){let[r,n,o,A]=cu(e),i=r/255,a=n/255,s=o/255,c=Math.max(i,a,s),l=Math.min(i,a,s),u=0,g=0,p=(c+l)/2;if(c!==l){let b=c-l;switch(g=p>.5?b/(2-c-l):b/(c+l),c){case i:u=(a-s)/b+(a<s?6:0);break;case a:u=(s-i)/b+2;break;case s:u=(i-a)/b+4;break}u/=6}u=(u+t%1+1)%1;let f=p,d=p,h=p;if(g!==0){let b=p<.5?p*(1+g):p+g-p*g,Q=2*p-b;f=XA(Q,b,u+1/3),d=XA(Q,b,u),h=XA(Q,b,u-1/3)}let I=b=>Math.round(Math.max(0,Math.min(255,b*255))).toString(16).padStart(2,"0");return A>=.999?`#${I(f)}${I(d)}${I(h)}`:`rgba(${Math.round(f*255)}, ${Math.round(d*255)}, ${Math.round(h*255)}, ${Math.round(A*100)/100})`}var uu=new Set(["fill","fillColor","strokeColor","textBackgroundColor","color"]);function gu(e,t,r,n){let o=e.repeat??0,A=n-r,i=e.durationFrames!==void 0&&e.durationFrames>0?e.durationFrames:A;if(o===0||i<=0){if(t>=n){let g=e.keyframes??[];return{completedValue:g[g.length-1].value}}return{frame:t}}let a=t-r,s=Math.floor(a/i);if(o>0&&s>=1+o){let g=!!e.yoyo&&o%2===1,p=e.keyframes??[];return{completedValue:g?p[0].value:p[p.length-1].value}}let c=a-s*i;return!!e.yoyo&&s%2===1?{frame:c>=A?r:n-c}:{frame:c>=A?n:r+c}}function ZA(e,t,r){let n=e.keyframes??[];if(n.length===0)return 0;if(n.length===1)return n[0].value;let o=n[0].frame;if(t<=o)return n[0].value;let A=n[n.length-1].frame,i=gu(e,t,o,A);if("completedValue"in i)return i.completedValue;let a=i.frame;for(let s=0;s<n.length-1;s++){let c=n[s],l=n[s+1];if(a>=c.frame&&a<=l.frame){let u=l.frame-c.frame,g=u>0?(a-c.frame)/u:0,p=r?r(l.ease??c.ease,u,g):g;if(typeof c.value=="boolean")return g>=1?l.value:c.value;if(typeof c.value=="string"&&typeof l.value=="string")return e.prop==="d"?Ns(c.value,l.value,p):Ls(c.value,l.value,p);let f=Number(c.value)||0,d=Number(l.value)||0;return su(f,d,p)}}return n[n.length-1].value}function pu(e,t,r=24,n={}){let o=n.startFrame??0,A=t-o,i=e.source??{type:"keyframe"},a=n.baseValues?.[e.prop];switch(i.type){case"keyframe":return ZA(e,A);case"wiggle":{let s=typeof a=="number"?a:0,c=e.keyframes&&e.keyframes.length>0?Number(ZA(e,A))||0:s,l=A/(r>0?r:24);return ou(i,l,c)}case"springOvershoot":{let s=0,c=1;e.keyframes&&e.keyframes.length>=2?(s=Number(e.keyframes[0].value)||0,c=Number(e.keyframes[1].value)||1):e.keyframes&&e.keyframes.length===1?(s=Number(a)||0,c=Number(e.keyframes[0].value)||0):typeof a=="number"&&(s=a,c=a);let l=A/(r>0?r:24);return Au(i,l,s,c)}case"signal":{let s=au(i,t,r,n.signals);if(uu.has(e.prop)){let c=i,l=c.colorA??"#ffffff",u=c.colorB??"#ffffff",g=c.colorMode??"interpolate";if(g==="threshold"){let f=c.colorThreshold??.5;return s>=f?u:l}if(g==="hueRotate")return lu(l,s);let p=Math.max(0,Math.min(1,s));return Ls(l,u,p)}return s}default:return ZA(e,A)}}function Kd(e,t,r=24,n={}){let o={};if(!e?.tracks)return o;for(let A of e.tracks)o[A.prop]=pu(A,t,r,n);return o}$();var Os=["x","y","width","height"];function Hs(e,t,r,n){let o=t.id??`${String(e.id)}__${r}`,A={position:"absolute",...t,id:o,...n};if(Os.every(a=>t[a]===void 0))for(let a of Os)typeof e[a]=="number"&&(A[a]=e[a]);let i=typeof e.startFrame=="number"?e.startFrame:0;return A.startFrame=i+(typeof t.startFrame=="number"?t.startFrame:0),t.durationFrames===void 0&&e.durationFrames!==void 0&&(A.durationFrames=e.durationFrames),Array.isArray(A.children)&&(A.children=AA(A.children)),A}function fu(e){let t=e.matte,r=e.relief,{matte:n,relief:o,...A}=e,i={...A};Array.isArray(i.children)&&(i.children=AA(i.children));let a=[i];if(t?.node){let s=Hs(e,t.node,"matte",{matteOf:String(e.id),matteMode:t.mode??"alpha"});i.matteId=s.id,a.push(s)}if(r?.node){let s=Hs(e,r.node,"relief",{reliefOf:String(e.id),is3D:!1,z:0});i.reliefId=s.id,i.reliefAmount=r.amount??0,a.push(s)}return a}function AA(e){return e.flatMap(t=>fu(t))}$();function $A(e,t,r,n="forward"){if(r<=0||t<=1)return 0;switch(n){case"reverse":return(t-1-e)*r;case"center-out":{let o=(t-1)/2,A=Math.abs(e-o);return Math.round(A*r)}case"forward":return e*r;default:return Zi(n)}}function Zd(e,t,r="forward",n=0){return!e||e.length===0?[]:t<=0&&n===0?[...e]:e.map((o,A)=>{let i=$A(A,e.length,t,r),a=o.startFrame??0;return{...o,startFrame:a+i+n}})}$();$();var Vs=Symbol.for("framefields.inlineSignal"),js=new WeakMap,du=0;function hu(e){let t=js.get(e);return t===void 0&&(t=`inline_signal_${du++}`,js.set(e,t)),t}function th(e){if(typeof e=="string")return{handleId:e};if(e===null||typeof e!="object"&&typeof e!="function")throw new TypeError(`LayerAnimation.signal: expected a signal object or a signal name, got ${String(e)}. Pass a signal (Signal.fromArray / Signal.builder / an audio channel \u2026) or register it with comp.addSignal(name, signal) and pass the name.`);let t=e;return typeof t.inputHandleId=="string"?{handleId:t.inputHandleId}:typeof t.gpuBinding?.nodeId=="string"?typeof t.get=="function"?{handleId:t.gpuBinding.nodeId,inline:e}:{handleId:t.gpuBinding.nodeId}:{handleId:hu(e),inline:e}}function rh(e,t){Object.defineProperty(e,Vs,{value:t,enumerable:!1,configurable:!0,writable:!0})}function mu(e){if(!(!e||typeof e!="object"))return e[Vs]}function ei(e,t={}){for(let r of e){if(!r||typeof r!="object")continue;let{animation:n,children:o}=r,A=n?.tracks;if(Array.isArray(A))for(let i of A){let a=i?.source,s=mu(a);s&&typeof a?.inputHandleId=="string"&&(t[a.inputHandleId]=s)}Array.isArray(o)&&ei(o,t)}return t}$();function Iu(e,t){let{fps:r,compositionDurationFrames:n}=t;if(!Number.isInteger(n)||n<=0)throw new Error("A signal timeRemap needs the composition duration (durationFrames or durationMs)");let o=typeof e.signal=="string"?t.signals?.[e.signal]:e.signal;if(o===void 0)throw new Error(`timeRemap signal '${String(e.signal)}' is not a composition signal`);return Ji(o)?A=>Number(o.get(zi(A,r,n))):A=>mt(o,A,r)}function Js(e,t,r){let n=Iu(e,r);return{kind:"sampled",history:Ki({mode:e.mode,fps:r.fps,startFrame:t.startFrame,durationFrames:t.durationFrames,sourceStartSec:e.sourceStartSec,sample:n})}}function Ks(e,t,r,n=0,o,A,i){if(e.kind==="media"&&e.timeRemap!==void 0){let m=Yi.safeParse(e.timeRemap);if(!m.success)throw new Error(`Invalid timeRemap on '${e.id}': ${m.error.message}`);let w=Wi(m.data,e.durationFrames??0);if(w)throw new Error(`Invalid timeRemap on '${e.id}': ${w}`);if(e.trimStartSec!==void 0||e.dataType!=="Video"&&e.dataType!=="Audio")throw new Error(`Invalid timeRemap on '${e.id}': use audio or video without trimStartSec`)}let a=[],s=e.kind==="media"?e.src??e.inputHandleId:"inputHandleId"in e?e.inputHandleId:void 0,c=m=>typeof m=="string"&&(m.startsWith("http://")||m.startsWith("https://")||m.startsWith("file://")||m.startsWith("/")||m.startsWith("./")||m.startsWith("blob:")||m.startsWith("data:")||/\.(png|jpe?g|webp|gif|svg|mp4|webm|mov|mkv|mp3|wav|ogg|m4a|srt|vtt|json|lottie)$/i.test(m)),l;if(e.kind==="media"){if(t&&e.inputHandleId&&(l=t(e.inputHandleId)),!l&&s&&(c(s)||e.src)&&(l=qi(s,e.dataType??"Video")),!l&&!t&&s&&(s.includes(".")||s.includes("/"))&&console.warn(`[Compositor] Media layer '${e.id??"?"}' source '${s}' could not be resolved.`),l&&e.crop){let m=e.crop,w=typeof m.toOperation=="function"?m.toOperation():m;l={metadata:{...l.metadata},operation:{op:"Crop",...w,dataType:l.operation.dataType},children:[l]}}if(l&&Array.isArray(e.effects)){let m=l;for(let w of e.effects){let v=w&&typeof w.toOperation=="function"?w.toOperation():w;m={metadata:{...m.metadata},operation:{op:String(v.op??"effect"),id:e.id?`${e.id}-${v.op??"effect"}`:void 0,effect:w,...v,dataType:m.operation.dataType},children:[m]}}l=m}if(l&&e.vision){let m=e.vision,w=typeof m.toOperation=="function"?m.toOperation():m;l={metadata:{...l.metadata},operation:{op:"Vision",id:e.id,effect:m,...w,dataType:l.operation.dataType},children:[l]}}}if(e.kind==="media")a=l?[l]:[];else if("children"in e&&e.children){let m=e.kind==="flex"&&typeof e.staggerFrames=="number"?e.staggerFrames:0,w=e.kind==="flex"&&typeof e.staggerDirection=="string"?e.staggerDirection:"forward",v=typeof e.startFrame=="number"&&Number.isFinite(e.startFrame)?Math.round(e.startFrame):0,S=typeof e.durationFrames=="number"&&Number.isFinite(e.durationFrames)?Math.round(e.durationFrames):A,N=e.children;a=N.map((_,G)=>{let j=$A(G,N.length,m,w),R=n+v+j;return Ks(_,t,r,R,o,_.durationFrames===void 0?S:void 0,i)})}let u="Image",g;if(l){u=l.operation?.dataType??"Image";let w=u==="Image"||u==="SVG"?void 0:Xi(l)?.durationMs;w!=null&&(g=Math.max(1,Math.round(w/1e3*r)))}let p=l?.operation?.dataType==="Caption",f=e.kind==="flex"||e.kind==="block"||e.kind==="box",d=(typeof e.startFrame=="number"&&Number.isFinite(e.startFrame)&&e.startFrame>=0?Math.round(e.startFrame):0)+n,h=typeof e.durationFrames=="number"&&Number.isFinite(e.durationFrames)&&e.durationFrames>0?Math.round(e.durationFrames):void 0,I=A??Math.round((o??1e4)/1e3*r);if(f&&a.length>0){if(h===void 0){let m=a.map(w=>(w.operation.startFrame??0)+(w.operation.durationFrames??I));h=Math.max(1,Math.max(...m)-d)}}else p&&g!==void 0&&g>0?h=g:h!==void 0?(u==="Video"||u==="Audio")&&!(e.kind==="media"&&e.timeRemap)&&g!==void 0&&g>0&&(h=Math.min(h,g)):h=g??A??Math.round((o??1e4)/1e3*r);let b=h/r*1e3;if(e.kind==="media"&&l){let m=l;for(;m;)(!m.metadata?.durationMs||m.metadata.durationMs<=0)&&(m.metadata||(m.metadata={}),m.metadata.durationMs=b),m.operation?.sourceMeta&&!m.operation.sourceMeta.durationMs&&(m.operation.sourceMeta.durationMs=b),m=m.children?.[0]}let Q=e.kind==="media"&&e.timeRemap?.kind==="signal"?e.timeRemap:void 0;if(Q&&!i)throw new Error(`Signal timeRemap on '${e.id}' has no resolver`);return{metadata:{durationMs:b},operation:{op:"CompositorLayer",...e,startFrame:d,durationFrames:h,dataType:u,...Q&&i&&{timeRemap:i(Q,{id:e.id,startFrame:d,durationFrames:h})}},children:a}}function fh(e,t){let{isVideoMode:r,fps:n,durationMs:o,resolveMedia:A,signals:i}=t,a={...ei(e.layout),...i??e.signals??{}},s=t.resolveMediaSignal??((g,p)=>Js(g,p,{fps:n,compositionDurationFrames:Math.round((o??0)/1e3*n),signals:a})),c={metadata:{width:e.width,height:e.height,fps:n,...o!==void 0&&{durationMs:o}},operation:{op:"Compositor",width:e.width,height:e.height,fps:n,mode:e.mode??"Video",backgroundColor:e.backgroundColor,...e.antialias3d!==void 0&&{antialias3d:e.antialias3d},volume:e.volume??1,dataType:r?"Video":"Image",layout:e.layout,signals:a,...e.onRequestFrame||t.onRequestFrame?{onRequestFrame:e.onRequestFrame??t.onRequestFrame}:{}},children:AA(e.layout).map(g=>Ks(g,A,n,0,o,void 0,s))},l=Array.isArray(t.effects)?t.effects:Array.isArray(e.effects)?e.effects:[];for(let g of l){let p=g&&typeof g.toOperation=="function"?g.toOperation():g;c={metadata:{...c.metadata},operation:{...p,dataType:c.operation.dataType},children:[c]}}let u=e.vision??t.vision;if(u){let g=typeof u.toOperation=="function"?u.toOperation():u;c={metadata:{...c.metadata},operation:{op:"Vision",...g,dataType:c.operation.dataType},children:[c]}}return c}function dh(e){let t=[],r=n=>{n?.operation?.op==="CompositorLayer"&&t.push(n);for(let o of n?.children??[])r(o)};for(let n of e)r(n);return t}export{Qo as a,ca as b,Z as c,Ee as d,Xr as e,Ys as f,jr as g,fa as h,da as i,cA as j,sA as k,vt as l,dr as m,Wu as n,qu as o,to as p,Ag as q,Do as r,ig as s,dg as t,no as u,_o as v,No as w,us as x,cd as y,hd as z,Xa as A,Za as B,$a as C,Wf as D,es as E,ts as F,Yc as G,$f as H,jA as I,Ed as J,Hl as K,Xl as L,Nd as M,th as N,rh as O,ZA as P,pu as Q,Kd as R,AA as S,Iu as T,Js as U,$A as V,Zd as W,fh as X,dh as Y};
2460
+ `,Fo=class{device;simPipeline;packPipeline;bindGroupLayout;constructor(t){this.device=t;let r=t.createShaderModule({label:"swarm3d.wgsl",code:lc});this.bindGroupLayout=t.createBindGroupLayout({label:"Swarm3DBindGroupLayout",entries:[{binding:0,visibility:GPUShaderStage.COMPUTE,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}},{binding:2,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}}]});let n=t.createPipelineLayout({bindGroupLayouts:[this.bindGroupLayout]});this.simPipeline=t.createComputePipeline({label:"Swarm3DSimPipeline",layout:n,compute:{module:r,entryPoint:"stepSimulation"}}),this.packPipeline=t.createComputePipeline({label:"Swarm3DPackPipeline",layout:n,compute:{module:r,entryPoint:"packInstances"}})}createState(t){let r=Math.max(1,t.variants),n=Math.ceil(t.max/r),o=t.sparks?.max??0,A=t.max+o,i=n*r+o,a=A*80,s=i*64;return{device:this.device,particles:this.device.createBuffer({label:"Swarm3DParticles",size:a,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST}),instances:this.device.createBuffer({label:"Swarm3DInstances",size:s,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST}),ubo:this.device.createBuffer({label:"Swarm3DUbo",size:512,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),frame:-999999,emitted:0,carry:0,sparkEmitted:0,sparkCarry:0,sliceCount:n,totalParticleSlots:A,totalInstanceSlots:i,snapshots:new Map}}packParams(t,r,n,o){n.fill(0);let A=(d,h,I,b,D)=>n.set([h,I,b,D],d*4),i=t.sparks?.max??0;A(0,o.dt,o.time,o.emitStart,o.emitCount),A(1,t.max,t.seed,o.frameDt,i),A(2,r.gravity[0],r.gravity[1],r.gravity[2],o.sparkEmitStart),A(3,r.drag,r.noise.strength,r.noise.scale,r.noise.speed);let a=t.emitter.shape==="box"?1:t.emitter.shape==="sphere"?2:t.emitter.shape==="shell"?3:t.emitter.shape==="ring"?4:t.emitter.shape==="disc"?5:0,s=r.emitterPos?r.emitterPos[0]:t.emitter.x,c=r.emitterPos?r.emitterPos[1]:t.emitter.y,l=r.emitterPos?r.emitterPos[2]:t.emitter.z;A(4,a,s,c,l),A(5,t.emitter.width,t.emitter.height,t.emitter.depth,t.emitter.radius),A(6,t.direction[0],t.direction[1],t.direction[2],t.spread),A(7,t.speed[0],t.speed[1],t.lifetime[0],t.lifetime[1]);let u=r.attractors.slice(0,5);A(8,t.angularSpeed[0],t.angularSpeed[1],t.variants,u.length);let g=[0,0,0,0,0];for(let d=0;d<u.length;d++){let h=u[d];h&&(A(9+d,h.x,h.y,h.z,h.radius??0),g[d]=h.strength)}A(17,g[0],g[1],g[2],g[3]),r.vortex?(A(14,r.vortex.x,r.vortex.y,r.vortex.z,r.vortex.swirl),A(15,r.vortex.axis[0],r.vortex.axis[1],r.vortex.axis[2],r.vortex.pull),A(16,r.vortex.axial,r.vortex.radius,o.sparkEmitCount,t.sizeJitter)):A(16,0,0,o.sparkEmitCount,t.sizeJitter),r.floor?A(18,r.floor.y,r.floor.bounce,r.floor.friction,1):A(18,0,0,0,0),A(19,t.size[0],t.size[1],t.fade[0],t.fade[1]);let p=t.heat.source==="friction"?1:t.heat.source==="speed"?2:0;A(20,t.meshRadius??20,o.sliceCount,p,t.heat.maxSpeed);let f=t.colors.slice(0,3);A(21,f.length,t.heat.curve,t.heat.intensity,g[4]);for(let d=0;d<f.length;d++){let h=f[d];h&&A(22+d,h[0],h[1],h[2],h[3])}A(25,r.floor?.heatGain??1,t.angularDrag,r.floor?.heatDecay??.45,0),A(26,t.heat.colors[0][0],t.heat.colors[0][1],t.heat.colors[0][2],1),A(27,t.heat.colors[1][0],t.heat.colors[1][1],t.heat.colors[1][2],1),A(28,t.heat.colors[2][0],t.heat.colors[2][1],t.heat.colors[2][2],1),t.sparks&&(A(29,t.sparks.threshold,t.sparks.size[0],t.sparks.size[1],t.sparks.speed[0]),A(30,t.sparks.lifetime[0],t.sparks.lifetime[1],t.sparks.intensity,t.sparks.speed[1]),A(31,t.sparks.color[0],t.sparks.color[1],t.sparks.color[2],1))}advance(t,r,n,o,A){let{device:i}=t,a=Math.max(0,Math.round((r.prewarm??0)*o));if(n<t.frame||t.frame<-a-1){let b=-999999;for(let m of t.snapshots.keys())m<=n&&m>b&&(b=m);let D=i.createCommandEncoder({label:"swarm3d_restore"});if(b>=0){let m=t.snapshots.get(b);m&&(D.copyBufferToBuffer(m.buffer,0,t.particles,0,t.totalParticleSlots*80),t.emitted=m.emitted,t.carry=m.carry,t.sparkEmitted=m.sparkEmitted,t.sparkCarry=m.sparkCarry,t.frame=b)}else D.clearBuffer(t.particles),D.clearBuffer(t.instances),t.emitted=0,t.carry=0,t.sparkEmitted=0,t.sparkCarry=0,t.frame=-1-a;i.queue.submit([D.finish()])}let s=new Float32Array(128),c=Math.max(1,Math.round(r.substeps)),l=1/o,u=l/c,g=i.createBindGroup({layout:this.bindGroupLayout,entries:[{binding:0,resource:{buffer:t.ubo}},{binding:1,resource:{buffer:t.particles}},{binding:2,resource:{buffer:t.instances}}]}),p=Math.ceil(t.totalParticleSlots/64),f=r.sparks?.max??0,d=r.sparks?.rate??0;for(let b=t.frame+1;b<=n;b++){let D=A(Math.max(0,b)),m=D.rate*l+t.carry,x=Math.floor(m);t.carry=m-x;let w=Math.floor(x/c),S=x%c,N=f>0?d*l+t.sparkCarry:0,M=Math.floor(N);t.sparkCarry=N-M;let G=Math.floor(M/c),j=M%c;for(let R=0;R<c;R++){let K=w+(S>0?1:0);S>0&&S--;let z=t.emitted%r.max;t.emitted+=K;let J=G+(j>0?1:0);j>0&&j--;let W=f>0?t.sparkEmitted%f:0;t.sparkEmitted+=J,this.packParams(r,D,s,{dt:u,time:b*l+R*u,emitStart:z,emitCount:K,sparkEmitStart:W,sparkEmitCount:J,frameDt:l,sliceCount:t.sliceCount}),i.queue.writeBuffer(t.ubo,0,s);let X=i.createCommandEncoder({label:`swarm3d_step_${b}_${R}`}),Ae=X.beginComputePass();Ae.setPipeline(this.simPipeline),Ae.setBindGroup(0,g),Ae.dispatchWorkgroups(p),Ae.end(),i.queue.submit([X.finish()])}if(t.frame=b,b>=0&&b%24===0&&t.snapshots.size<64){let R=t.snapshots.get(b);R||(R={buffer:i.createBuffer({label:`swarm3d_snap_${b}`,size:t.totalParticleSlots*80,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),emitted:t.emitted,carry:t.carry,sparkEmitted:t.sparkEmitted,sparkCarry:t.sparkCarry},t.snapshots.set(b,R));let K=i.createCommandEncoder({label:`swarm3d_snap_save_${b}`});K.copyBufferToBuffer(t.particles,0,R.buffer,0,t.totalParticleSlots*80),i.queue.submit([K.finish()])}}let h=i.createCommandEncoder({label:"swarm3d_pack_instances"}),I=h.beginComputePass();I.setPipeline(this.packPipeline),I.setBindGroup(0,g),I.dispatchWorkgroups(p),I.end(),i.queue.submit([h.finish()])}destroyState(t){t.particles.destroy(),t.instances.destroy(),t.ubo.destroy();for(let r of t.snapshots.values())r.buffer.destroy();t.snapshots.clear()}};var uc={repeat:"repeat",clamp:"clamp-to-edge",mirror:"mirror-repeat"},gc=5e-4,Da=class{device;format;quad3dPipeline;slug3dPipeline;mesh3dPipeline;audioMeshDeformPipeline;morphPipeline;swarm3dPipeline;floorReflectionPipeline;dofPipeline;dofBindGroupLayout;cameraPool;lightsPool;directLightsPool;instancePool;cameraUniformBindGroupCache=new Ui;samplerCache=new Ti;depthTexture=null;linearDepthTexture=null;reflectionColorTexture=null;reflectionMsaaColorTexture=null;reflectionDepthTexture=null;reflectionTempTexture=null;reflectionBlurredTexture=null;msaaColorTexture=null;msaaLinearDepthTexture=null;msaaHdrTexture=null;hdrTexture=null;passWritesHdr=!1;cameraUniformData=new Float32Array(80);meshBuffersCache=new WeakMap;materialTextures=new WeakMap;materialMapCache=new WeakMap;modelCache=new Map;lastCameraPose=null;shadowTexture=null;shadowTextures=new Map;placeholderShadowTexture=null;shadowSampler=null;meshBounds=new WeakMap;bloomPipeline=null;lastCameraBuffer=null;sampleCount;constructor(t,r,n=4){this.device=t,this.format=r,this.sampleCount=n,this.quad3dPipeline=new Mo(t,r,"depth24plus",n),this.slug3dPipeline=new Ro(t,r,"depth24plus",this.quad3dPipeline.cameraLayout,this.quad3dPipeline.lightsLayout,n),this.mesh3dPipeline=new So(t,r,"depth24plus",this.quad3dPipeline.cameraLayout,this.quad3dPipeline.lightsLayout,n),this.audioMeshDeformPipeline=new Io(t),this.morphPipeline=new Po(t),this.swarm3dPipeline=new Fo(t),this.floorReflectionPipeline=new vo(t,r,n,this.quad3dPipeline.cameraLayout,this.quad3dPipeline.lightsLayout,"depth24plus"),this.cameraPool=new We(320,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.lightsPool=new We(zo,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.directLightsPool=new We(64,GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST),this.instancePool=new We(65536,GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST);let o=t.createShaderModule({label:"dof-bokeh.wgsl",code:ga});this.dofBindGroupLayout=t.createBindGroupLayout({label:"DoFBindGroupLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]}),this.dofPipeline=t.createRenderPipeline({label:"DoFBokehPipeline",layout:t.createPipelineLayout({bindGroupLayouts:[this.dofBindGroupLayout]}),vertex:{module:o,entryPoint:"vs_fullscreen"},fragment:{module:o,entryPoint:"fs_dof",targets:[{format:r}]},primitive:{topology:"triangle-list"}})}resetPools(){this.bloomPipeline?.resetPools(),this.cameraPool.reset(),this.lastCameraPose=null,this.lastCameraBuffer=null,this.lightsPool.reset(),this.directLightsPool.reset(),this.instancePool.reset(),this.quad3dPipeline.resetPools(),this.slug3dPipeline.resetPools(),this.mesh3dPipeline.resetPools(),this.audioMeshDeformPipeline.resetPools(),this.morphPipeline.resetPools()}getOrCreateDepthTexture(t,r){return(!this.depthTexture||this.depthTexture.width!==t||this.depthTexture.height!==r)&&(this.depthTexture?.destroy(),this.depthTexture=this.device.createTexture({label:"Renderer3DDepthTexture",size:{width:t,height:r},format:"depth24plus",sampleCount:this.sampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT})),this.depthTexture}getOrCreateMsaaTexture(t,r,n,o,A){return t&&t.width===o&&t.height===A?t:(t?.destroy(),this.device.createTexture({label:r,size:{width:o,height:A},format:n,sampleCount:this.sampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}))}hdrSource(){return this.hdrTexture}getOrCreateHdrTexture(t,r){return(!this.hdrTexture||this.hdrTexture.width!==t||this.hdrTexture.height!==r)&&(this.hdrTexture?.destroy(),this.hdrTexture=this.device.createTexture({label:"Renderer3DHdrRadiance",size:{width:t,height:r},format:"rgba16float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),this.hdrTexture}getOrCreateLinearDepthTexture(t,r){return(!this.linearDepthTexture||this.linearDepthTexture.width!==t||this.linearDepthTexture.height!==r)&&(this.linearDepthTexture?.destroy(),this.linearDepthTexture=this.device.createTexture({label:"Renderer3DLinearDepthTexture",size:{width:t,height:r},format:"rgba16float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),this.linearDepthTexture}getOrCreateReflectionTexture(t,r){return(!this.reflectionColorTexture||this.reflectionColorTexture.width!==t||this.reflectionColorTexture.height!==r)&&(this.reflectionColorTexture?.destroy(),this.reflectionColorTexture=this.device.createTexture({label:"Renderer3DReflectionColor",size:{width:t,height:r},format:this.format,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),this.reflectionColorTexture}getOrCreateReflectionMsaaTexture(t,r){return(!this.reflectionMsaaColorTexture||this.reflectionMsaaColorTexture.width!==t||this.reflectionMsaaColorTexture.height!==r)&&(this.reflectionMsaaColorTexture?.destroy(),this.reflectionMsaaColorTexture=this.device.createTexture({label:"Renderer3DReflectionMsaaColor",size:{width:t,height:r},format:this.format,sampleCount:this.sampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT})),this.reflectionMsaaColorTexture}getOrCreateReflectionDepthTexture(t,r){return(!this.reflectionDepthTexture||this.reflectionDepthTexture.width!==t||this.reflectionDepthTexture.height!==r)&&(this.reflectionDepthTexture?.destroy(),this.reflectionDepthTexture=this.device.createTexture({label:"Renderer3DReflectionDepth",size:{width:t,height:r},format:"depth24plus",sampleCount:this.sampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT})),this.reflectionDepthTexture}getOrCreateReflectionTempTexture(t,r){return(!this.reflectionTempTexture||this.reflectionTempTexture.width!==t||this.reflectionTempTexture.height!==r)&&(this.reflectionTempTexture?.destroy(),this.reflectionTempTexture=this.device.createTexture({label:"Renderer3DReflectionTemp",size:{width:t,height:r},format:this.format,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),this.reflectionTempTexture}getOrCreateReflectionBlurredTexture(t,r){return(!this.reflectionBlurredTexture||this.reflectionBlurredTexture.width!==t||this.reflectionBlurredTexture.height!==r)&&(this.reflectionBlurredTexture?.destroy(),this.reflectionBlurredTexture=this.device.createTexture({label:"Renderer3DReflectionBlurred",size:{width:t,height:r},format:this.format,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),this.reflectionBlurredTexture}packCameraUniforms(t,r,n,o=0){if(this.lastCameraPose&&this.lastCameraBuffer&&this.lastCameraPose.eye[0]===t.eye[0]&&this.lastCameraPose.eye[1]===t.eye[1]&&this.lastCameraPose.eye[2]===t.eye[2]&&this.lastCameraPose.target[0]===t.target[0]&&this.lastCameraPose.target[1]===t.target[1]&&this.lastCameraPose.target[2]===t.target[2]&&this.lastCameraPose.up[0]===t.up[0]&&this.lastCameraPose.up[1]===t.up[1]&&this.lastCameraPose.up[2]===t.up[2]&&this.lastCameraPose.fov===t.fov&&this.lastCameraPose.near===t.near&&this.lastCameraPose.far===t.far)return this.lastCameraBuffer;let A=Kr.computeViewMatrix(t),i=Kr.computeProjectionMatrix(t),a=Kr.computeViewProjectionMatrix(t),s=Ee.invert(a)??Ee.identity();this.cameraUniformData.set(A,0),this.cameraUniformData.set(i,16),this.cameraUniformData.set(a,32),this.cameraUniformData.set(s,48),this.cameraUniformData[64]=t.eye[0],this.cameraUniformData[65]=t.eye[1],this.cameraUniformData[66]=t.eye[2],this.cameraUniformData[67]=t.near;let c=Z.normalize(Z.subtract(t.target,t.eye));this.cameraUniformData[68]=c[0],this.cameraUniformData[69]=c[1],this.cameraUniformData[70]=c[2],this.cameraUniformData[71]=t.far,this.cameraUniformData[72]=t.focusDistance??1e3,this.cameraUniformData[73]=t.fStop??2.8,this.cameraUniformData[74]=t.maxBlurRadius??32,this.cameraUniformData[75]=t.focusDistance!==void 0?1:0,this.cameraUniformData[76]=r,this.cameraUniformData[77]=n,this.cameraUniformData[78]=o,this.cameraUniformData[79]=0;let l=this.cameraPool.getBuffer(this.device,this.cameraUniformData);return this.lastCameraPose=t,this.lastCameraBuffer=l,l}createCameraBindGroup(t){return this.cameraUniformBindGroupCache.getBindGroup(this.device,this.quad3dPipeline.cameraLayout,t)}getOrCreateLightsBuffer(t,r){let n=Qt.packLightsUniforms(t??[],r?.environment,Array.isArray(r?.shadow)?r.shadow[0]:r?.shadow);return this.lightsPool.getBuffer(this.device,n)}createLightsBindGroup(t,r,n,o){let A=Qt.packDirectLights(n,o);if(A.byteLength>this.device.limits.maxStorageBufferBindingSize)throw new Error(`Direct lights require ${A.byteLength} bytes, exceeding the device storage binding limit of ${this.device.limits.maxStorageBufferBindingSize} bytes`);let i=this.directLightsPool.getBuffer(this.device,A);this.shadowSampler??=this.device.createSampler({label:"ShadowComparisonSampler",compare:"less-equal",magFilter:"linear",minFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}),this.placeholderShadowTexture??=this.device.createTexture({label:"ShadowMapPlaceholder",size:{width:1,height:1},format:_o,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.RENDER_ATTACHMENT});let a=r&&this.shadowTexture?this.shadowTexture:this.placeholderShadowTexture;return this.device.createBindGroup({label:"Lights3DBindGroup",layout:this.quad3dPipeline.lightsLayout,entries:[{binding:0,resource:{buffer:t}},{binding:1,resource:a.createView({dimension:"2d-array"})},{binding:2,resource:this.shadowSampler},{binding:3,resource:{buffer:i}}]})}meshAabb(t){let r=this.meshBounds.get(t);if(!r){let n=[1/0,1/0,1/0],o=[-1/0,-1/0,-1/0],A=t.positions;for(let i=0;i+2<A.length;i+=3)for(let a=0;a<3;a++){let s=A[i+a];s<n[a]&&(n[a]=s),s>o[a]&&(o[a]=s)}r=Number.isFinite(n[0])?{min:n,max:o}:{min:[0,0,0],max:[0,0,0]},this.meshBounds.set(t,r)}return r}worldBounds(t){return t.kind==="mesh"?t.opts.bounds?t.opts.bounds:cA(this.meshAabb(t.mesh),this.meshModelMatrix(t.opts)):cA({min:[-.5,-.5,0],max:[.5,.5,0]},this.quadModelMatrix(t.opts))}renderShadowMap(t,r,n,o,A,i={}){let a=r.lightType??r.type;if(a!=="directional"&&a!=="spot")return null;let s=Qt.processLight(r),c=[s.posType[0],s.posType[1],s.posType[2]],l=[s.dirRadius[0],s.dirRadius[1],s.dirRadius[2]],u=i.mapSize??2048,g=i.layer??0,p=i.layerCount??1;if(p>this.device.limits.maxTextureArrayLayers)throw new Error(`Shadow maps require ${p} texture layers, exceeding the device limit of ${this.device.limits.maxTextureArrayLayers}`);let f=o.map(w=>this.worldBounds(w)),d=xa({type:a,position:c,direction:l,angle:r.angle},f,A,u);if(!d)return null;let h=`${u}:${p}`,I=this.shadowTextures.get(h);I||(I=this.device.createTexture({label:"ShadowMap",size:{width:u,height:u,depthOrArrayLayers:p},format:_o,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),this.shadowTextures.set(h,I)),this.shadowTexture=I;let b=new Float32Array(80);b.set(d.viewProj,32),b.set(d.viewProj,0),b[5]=1,b.set(d.viewProj,16),b[64]=c[0],b[65]=c[1],b[66]=c[2],b[68]=l[0],b[69]=l[1],b[70]=l[2],b[76]=u,b[77]=u;let D=this.createCameraBindGroup(this.cameraPool.getBuffer(this.device,b)),m=t.beginRenderPass({label:"ShadowMapPass",colorAttachments:[],depthStencilAttachment:{view:this.shadowTexture.createView({dimension:"2d",baseArrayLayer:g,arrayLayerCount:1}),depthClearValue:1,depthLoadOp:"clear",depthStoreOp:"store"}}),x=this.samplerCache.getSampler(this.device);for(let w of o)if(w.kind==="mesh"){let S=this.meshModelMatrix(w.opts);this.mesh3dPipeline.drawShadow(m,D,w.buffers??this.getOrCreateMeshBuffers(w.mesh,w.opts.wireframe),{modelMatrix:S,normalMatrix:w.opts.normalMatrix??Qt.computeNormalMatrix(S),wireframe:w.opts.wireframe,isSkinned:w.opts.isSkinned,skinningMatrices:w.opts.skinningMatrices,isInstanced:!!(w.opts.instanceBuffer||w.opts.instanceCount&&w.opts.instanceCount>1),instanceBuffer:w.opts.instanceBuffer},w.opts.instanceCount??1,w.opts.firstInstance??0)}else{let S=this.quadModelMatrix(w.opts);this.quad3dPipeline.drawShadow(m,D,w.texture,x,{modelMatrix:S,normalMatrix:S,width:w.opts.width,height:w.opts.height,textureExtent:w.opts.textureExtent,opacity:w.opts.opacity,colorTint:w.opts.colorTint,relief:w.opts.relief})}return m.end(),{matrix:d.viewProj,lightIndex:n,mapSize:u,softness:i.softness??r.shadowSoftness??2.5,bias:a==="directional"?6e-4:8e-5,normalOffset:d.texelWorldSize*1.5,darkness:i.darkness??r.shadowDarkness??1}}beginPass(t,r,n,o,A,i="clear",a={r:0,g:0,b:0,a:0},s,c,l,u=!1){let g=this.getOrCreateDepthTexture(n,o),p=this.packCameraUniforms(A,n,o),f=this.createCameraBindGroup(p),d=this.getOrCreateLightsBuffer(c,l),h=this.createLightsBindGroup(d,!!l?.shadow,c??[],l?.shadow?Array.isArray(l.shadow)?l.shadow:[l.shadow]:[]),I=this.sampleCount>1;if(I&&i==="load")throw new Error("Renderer3D.beginPass: loadOp 'load' needs a Renderer3D built with sampleCount 1");let b=(x,w,S,N)=>w?{view:w.createView(),resolveTarget:x,loadOp:"clear",storeOp:"discard",clearValue:S}:{view:x,loadOp:N,storeOp:"store",clearValue:S};I&&(this.msaaColorTexture=this.getOrCreateMsaaTexture(this.msaaColorTexture,"Renderer3DMsaaColor",this.format,n,o));let D=[b(r,I?this.msaaColorTexture:null,a,i)];return s&&(I&&(this.msaaLinearDepthTexture=this.getOrCreateMsaaTexture(this.msaaLinearDepthTexture,"Renderer3DMsaaLinearDepth","rgba16float",n,o)),D.push(b(s,I?this.msaaLinearDepthTexture:null,{r:A.far,g:0,b:0,a:1},"clear"))),this.passWritesHdr=u,u&&(this.hdrTexture=this.getOrCreateHdrTexture(n,o),I&&(this.msaaHdrTexture=this.getOrCreateMsaaTexture(this.msaaHdrTexture,"Renderer3DMsaaHdr","rgba16float",n,o)),D.push(b(this.hdrTexture.createView(),I?this.msaaHdrTexture:null,{r:0,g:0,b:0,a:0},"clear"))),{pass:t.beginRenderPass({colorAttachments:D,depthStencilAttachment:{view:g.createView(),depthClearValue:1,depthLoadOp:"clear",depthStoreOp:I?"discard":"store"}}),cameraBindGroup:f,cameraBuffer:p,lightsBindGroup:h}}beginReflectionPass(t,r,n,o,A,i){this.passWritesHdr=!1;let a=Math.max(1,Math.floor(r/2)),s=Math.max(1,Math.floor(n/2)),c=this.getOrCreateReflectionTexture(a,s),l=this.getOrCreateReflectionDepthTexture(a,s),u=this.packCameraUniforms(o,a,s),g=this.createCameraBindGroup(u),p=Qt.packLightsUniforms(A??[],i?.environment,Array.isArray(i?.shadow)?i.shadow[0]:i?.shadow,!0),f=this.lightsPool.getBuffer(this.device,p),d=this.createLightsBindGroup(f,!!i?.shadow,A??[],i?.shadow?Array.isArray(i.shadow)?i.shadow:[i.shadow]:[]),h=this.sampleCount>1,I=h?this.getOrCreateReflectionMsaaTexture(a,s):null,b=[I?{view:I.createView(),resolveTarget:c.createView(),loadOp:"clear",storeOp:"discard",clearValue:{r:0,g:0,b:0,a:0}}:{view:c.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}];return{pass:t.beginRenderPass({colorAttachments:b,depthStencilAttachment:{view:l.createView(),depthClearValue:1,depthLoadOp:"clear",depthStoreOp:h?"discard":"store"}}),cameraBindGroup:g,lightsBindGroup:d,reflectionTexture:c}}blurReflection(t,r,n){if(n<=.001)return r;let o=r.width,A=r.height,i=this.getOrCreateReflectionTempTexture(o,A),a=this.getOrCreateReflectionBlurredTexture(o,A);return this.floorReflectionPipeline.applyBlur(t,r,i,a,o,A,n),a}drawFloor(t,r,n,o,A,i=!1,a=!1){this.floorReflectionPipeline.draw(t,r,n,o,A,i,a)}quadModelMatrix(t){if(t.modelMatrix)return t.modelMatrix;let{position:r,width:n,height:o,rotation:A=[0,0,0],scale:i=[1,1,1],anchor:a=[.5,.5]}=t,s=Ee.identity();s=Ee.multiply(s,Ee.translate(r[0],r[1],r[2]));let c=A[0]*Math.PI/180,l=A[1]*Math.PI/180,u=A[2]*Math.PI/180;u!==0&&(s=Ee.multiply(s,Ee.rotateZ(u))),l!==0&&(s=Ee.multiply(s,Ee.rotateY(l))),c!==0&&(s=Ee.multiply(s,Ee.rotateX(c)));let g=n*i[0],p=o*i[1],f=i[2];s=Ee.multiply(s,Ee.scale(g,p,f));let d=.5-a[0],h=.5-a[1];return(d!==0||h!==0)&&(s=Ee.multiply(s,Ee.translate(d,h,0))),s}drawSlugText(t,r,n,o,A,i=0,a=!1){let{width:s,height:c}=A;if(!(s>0&&c>0))return;let l=this.quadModelMatrix(A),u=A.normalMatrix??Qt.computeNormalMatrix(l),g=Ee.multiply(l,Ee.multiply(Ee.translate(-.5,-.5,0),Ee.scale(1/s,1/c,1)));for(let p=0;p<o.length;p++){let f=o[p],[d,h,I,b,D,m]=f.transform,x=[d,h,0,0,I,b,0,0,0,0,1,0,D,m,0,1];this.slug3dPipeline.draw(t,r,n,f.font,f.instances,f.instanceCount,{modelMatrix:Ee.multiply(g,x),normalMatrix:u,opacity:f.opacity*(A.opacity??1),slant:f.slant,twoSided:A.twoSided??!0,depthPull:gc*(i+p+1),material:A.material,shininess:A.shininess??32,roughness:A.roughness,specularIntensity:A.specularIntensity??.5,ambientIntensity:A.ambientIntensity??1,metallic:A.metallic,emissive:A.emissive,emissiveIntensity:A.emissiveIntensity,matte:A.matte},a,this.passWritesHdr)}}drawTextureQuad(t,r,n,o,A,i=!1){let{width:a,height:s,opacity:c=1,colorTint:l=[1,1,1,1],borderColor:u,borderWidth:g=0,borderRadius:p=0,twoSided:f=!0,material:d="lit",shininess:h=32,roughness:I,specularIntensity:b=.5,ambientIntensity:D=1,metallic:m}=A,x=this.quadModelMatrix(A),w=A.normalMatrix??Qt.computeNormalMatrix(x),S=this.samplerCache.getSampler(this.device),N;if(u)if(Array.isArray(u))N=u;else{let M=Jr(u);N=[M.r,M.g,M.b,M.a]}this.quad3dPipeline.draw(t,r,n,o,S,{modelMatrix:x,normalMatrix:w,colorTint:l,borderColor:N,borderWidth:g,opacity:c,borderRadius:p,twoSided:f,width:a,height:s,textureExtent:A.textureExtent,material:d,shininess:h,roughness:I,specularIntensity:b,ambientIntensity:D,metallic:m,emissive:A.emissive,emissiveIntensity:A.emissiveIntensity,matte:A.matte,relief:A.relief},i,this.passWritesHdr)}meshModelMatrix(t){if(t.modelMatrix)return t.modelMatrix;let{position:r=[0,0,0],rotation:n=[0,0,0],scale:o=[1,1,1]}=t,A=Ee.translate(r[0],r[1],r[2]),i=n[0]*Math.PI/180,a=n[1]*Math.PI/180,s=n[2]*Math.PI/180;return s!==0&&(A=Ee.multiply(A,Ee.rotateZ(s))),a!==0&&(A=Ee.multiply(A,Ee.rotateY(a))),i!==0&&(A=Ee.multiply(A,Ee.rotateX(i))),Ee.multiply(A,Ee.scale(o[0],o[1],o[2]))}getOrCreateMeshBuffers(t,r=!1){let n=this.meshBuffersCache.get(t);if(n)return r&&(!t.topology||t.topology==="triangle-list")&&this.ensureWireIndices(t,n),n;let o=t.positions.length/3,A=new Float32Array(o*16);for(let p=0;p<o;p++){let f=p*16;A[f]=t.positions[p*3]??0,A[f+1]=t.positions[p*3+1]??0,A[f+2]=t.positions[p*3+2]??0,A[f+3]=t.uvs[p*2]??0,A[f+4]=t.uvs[p*2+1]??0,A[f+5]=t.normals[p*3]??0,A[f+6]=t.normals[p*3+1]??0,A[f+7]=t.normals[p*3+2]??1,t.jointIndices?(A[f+8]=t.jointIndices[p*4]??0,A[f+9]=t.jointIndices[p*4+1]??0,A[f+10]=t.jointIndices[p*4+2]??0,A[f+11]=t.jointIndices[p*4+3]??0):(A[f+8]=0,A[f+9]=0,A[f+10]=0,A[f+11]=0),t.jointWeights?(A[f+12]=t.jointWeights[p*4]??0,A[f+13]=t.jointWeights[p*4+1]??0,A[f+14]=t.jointWeights[p*4+2]??0,A[f+15]=t.jointWeights[p*4+3]??0):(A[f+12]=0,A[f+13]=0,A[f+14]=0,A[f+15]=0)}let i=Math.ceil(A.byteLength/4)*4,a=this.device.createBuffer({size:Math.max(4,i),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC,mappedAtCreation:!0});new Float32Array(a.getMappedRange()).set(A),a.unmap();let s=t.indices instanceof Uint32Array,c=Math.ceil(t.indices.byteLength/4)*4,l=this.device.createBuffer({size:Math.max(4,c),usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});s?new Uint32Array(l.getMappedRange()).set(t.indices):new Uint16Array(l.getMappedRange()).set(t.indices),l.unmap();let u;t.colors&&t.colors.length>=o*4&&(u=this.device.createBuffer({label:"Mesh3DVertexColors",size:Math.max(16,o*16),usage:GPUBufferUsage.VERTEX,mappedAtCreation:!0}),new Float32Array(u.getMappedRange()).set(t.colors.subarray(0,o*4)),u.unmap());let g;if(t.mapUvs&&Object.values(t.mapUvs).some(Boolean)){let p=new Float32Array(o*8),f=[t.mapUvs.normal,t.mapUvs.metallicRoughness,t.mapUvs.occlusion,t.mapUvs.emissive];for(let d=0;d<o;d++)for(let h=0;h<f.length;h++){let I=f[h]??t.uvs;p[d*8+h*2]=I[d*2]??0,p[d*8+h*2+1]=I[d*2+1]??0}g=this.device.createBuffer({label:"Mesh3DMapUvs",size:Math.max(32,p.byteLength),usage:GPUBufferUsage.VERTEX,mappedAtCreation:!0}),new Float32Array(g.getMappedRange()).set(p),g.unmap()}return n={vertexBuffer:a,indexBuffer:l,indexCount:t.indices.length,indexFormat:s?"uint32":"uint16",topology:t.topology,colorBuffer:u,mapUvBuffer:g},this.meshBuffersCache.set(t,n),r&&(!t.topology||t.topology==="triangle-list")&&this.ensureWireIndices(t,n),n}ensureWireIndices(t,r){if(r.wireIndexBuffer)return;let n=new Set,o=[];for(let a=0;a+2<t.indices.length;a+=3){let s=[t.indices[a],t.indices[a+1],t.indices[a+2]];for(let c=0;c<3;c++){let l=s[c],u=s[(c+1)%3];if(l===u)continue;let g=l<u?`${l},${u}`:`${u},${l}`;n.has(g)||(n.add(g),o.push(l,u))}}let A=r.indexFormat==="uint32"?new Uint32Array(o):new Uint16Array(o),i=this.device.createBuffer({label:"Mesh3DWireIndices",size:Math.max(4,Math.ceil(A.byteLength/4)*4),usage:GPUBufferUsage.INDEX,mappedAtCreation:!0});A instanceof Uint32Array?new Uint32Array(i.getMappedRange()).set(A):new Uint16Array(i.getMappedRange()).set(A),i.unmap(),r.wireIndexBuffer=i,r.wireIndexCount=A.length}morphMesh(t,r,n,o=!1){let A=this.getOrCreateMeshBuffers(r,o);return!r.morphTargets?.length||!n.some(i=>i!==0)?A:{...A,vertexBuffer:this.morphPipeline.execute(t,r,A.vertexBuffer,n)}}deformMesh(t,r,n,o=!1,A){let i=A??this.getOrCreateMeshBuffers(r,o),a=r.positions.length/3;return{vertexBuffer:this.audioMeshDeformPipeline.execute(t,i.vertexBuffer,{config:n.config,audioLatentBuffer:n.latentBuffer,vertexCount:a,timeMs:n.timeMs,sampleRate:n.sampleRate}),indexBuffer:i.indexBuffer,indexCount:i.indexCount,indexFormat:i.indexFormat,topology:i.topology,colorBuffer:i.colorBuffer,mapUvBuffer:i.mapUvBuffer,wireIndexBuffer:i.wireIndexBuffer,wireIndexCount:i.wireIndexCount}}drawMesh3D(t,r,n,o,A,i={},a=!1){let s="vertexBuffer"in o?o:this.getOrCreateMeshBuffers(o,i.wireframe),{opacity:c=1,colorTint:l=[1,1,1,1],twoSided:u=!0,wireframe:g=!1,isSkinned:p=!1,skinningMatrices:f,material:d="lit",shadeColor:h,alphaCutoff:I,textureWrap:b="clamp",textureFilter:D="linear",shininess:m=32,roughness:x,specularIntensity:w=.5,ambientIntensity:S=1,metallic:N}=i,M=this.meshModelMatrix(i),G=i.normalMatrix??Qt.computeNormalMatrix(M),j=uc[b],R=this.samplerCache.getSampler(this.device,{addressModeU:j,addressModeV:j,magFilter:D,...D==="nearest"&&{maxAnisotropy:1}}),K=d==="glass"||d==="acrylic"||d==="frosted",z=K?{ior:i.ior??(d==="acrylic"?1.49:1.5),dispersion:i.dispersion??(d==="glass"?.04:.015),thickness:i.thickness??80,frost:d==="frosted"?x??.5:0}:void 0;this.mesh3dPipeline.draw(t,r,n,s,A,R,{glass:z,backdrop:i.backdrop,modelMatrix:M,normalMatrix:G,colorTint:l,opacity:c,twoSided:u,wireframe:g,transparent:i.transparent??(c<1||l[3]<1),isSkinned:p,skinningMatrices:f,material:d==="unlit"||d==="toon"?d:"lit",shadeColor:h,alphaCutoff:I,shininess:m,roughness:K?Math.min(x??.05,.3):x,specularIntensity:w,ambientIntensity:S,metallic:N,emissive:i.emissive,emissiveIntensity:i.emissiveIntensity,matte:i.matte,maps:i.maps,isInstanced:!!(i.instanceBuffer||i.instanceCount&&i.instanceCount>1),instanceBuffer:i.instanceBuffer,matrixInstances:i.matrixInstances},a,this.passWritesHdr,i.instanceCount??1,i.firstInstance??0)}loadModel(t,r="auto",n={}){if(typeof t!="string")return _a(t,r,n);let o=`${r}|${JSON.stringify(n)}|${t}`,A=this.modelCache.get(o);return A||(A=_a(t,r,n),this.modelCache.set(o,A)),A}async loadModelAsync(t,r="auto",n={}){if(!(r==="gltf"||r==="glb"||r==="auto"&&(typeof t=="string"?/\.(gltf|glb)$/i.test(t)||t.trimStart().startsWith("{"):fr.isGlb(t))))return this.loadModel(t,r,n);if(typeof t!="string")return rA(t,n);let A=`${r}|${JSON.stringify(n)}|${t}`,i=this.modelCache.get(A);if(i)return i;let a=await rA(t,n);return this.modelCache.set(A,a),a}materialTexture(t){let r=this.materialTextures.get(t);return r||(r=this.uploadMaterialTexture(t),this.materialTextures.set(t,r)),r}materialMaps(t){let r=this.materialMapCache.get(t);return r||(r=(async()=>{let n=t.name,[o,A,i,a]=await Promise.all([this.uploadImage(t.normalTextureBuffer,`${n}:normal`),this.uploadImage(t.metallicRoughnessTextureBuffer,`${n}:metallicRoughness`),this.uploadImage(t.occlusionTextureBuffer,`${n}:occlusion`),this.uploadImage(t.emissiveTextureBuffer,`${n}:emissive`)]);return{...o&&{normal:o,normalScale:t.normalScale??1},...A&&{metallicRoughness:A},...i&&{occlusion:i,occlusionStrength:t.occlusionStrength??1},...a&&{emissive:a}}})(),this.materialMapCache.set(t,r)),r}uploadMaterialTexture(t){return this.uploadImage(t.diffuseTextureBuffer,`Material:${t.name}`)}async uploadImage(t,r){if(!t)return;let n=t instanceof Uint8Array?t:new Uint8Array(t);if(Ia(n)){let l=await Ba(n),u=this.device.createTexture({label:r,size:{width:l.width,height:l.height},mipLevelCount:l.levels.length,format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});for(let[g,p]of l.levels.entries()){let f=Math.max(1,l.width>>g),d=Math.max(1,l.height>>g);this.device.queue.writeTexture({texture:u,mipLevel:g},p,{bytesPerRow:f*4,rowsPerImage:d},{width:f,height:d})}return u}let o=(await import("./sharp-O7VCPA7A.mjs")).default,A=Buffer.from(t instanceof Uint8Array?t:new Uint8Array(t)),i,a;try{({width:i,height:a}=await o(A).metadata())}catch(l){console.warn(`[Renderer3D] Could not decode texture "${r}"; drawing without it:`,l instanceof Error?l.message:l);return}if(!i||!a)return;let s=Math.floor(Math.log2(Math.max(i,a)))+1,c=this.device.createTexture({label:r,size:{width:i,height:a},mipLevelCount:s,format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});for(let l=0;l<s;l++){let u=Math.max(1,i>>l),g=Math.max(1,a>>l),p=await o(A).ensureAlpha().resize(u,g,{fit:"fill"}).raw().toBuffer();this.device.queue.writeTexture({texture:c,mipLevel:l},p,{bytesPerRow:u*4,rowsPerImage:g},{width:u,height:g})}return c}applyBloom(t,r,n,o={},A){this.bloomPipeline??=new xo(this.device),this.bloomPipeline.apply(t,r,n,o,A??void 0)}applyDepthOfField(t,r,n,o,A){let i=this.samplerCache.getSampler(this.device),a=this.device.createBindGroup({layout:this.dofBindGroupLayout,entries:[{binding:0,resource:{buffer:A}},{binding:1,resource:i},{binding:2,resource:r.createView()},{binding:3,resource:n.createView()}]}),s=t.beginRenderPass({colorAttachments:[{view:o,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});s.setPipeline(this.dofPipeline),s.setBindGroup(0,a),s.draw(3),s.end()}uploadInstanceData(t){return this.instancePool.getBuffer(this.device,t)}drawMesh3DInstanced(t,r,n,o,A,i,a=void 0,s={},c=!1){this.drawMesh3D(t,r,n,o,a,{...s,instanceBuffer:A,instanceCount:i},c)}destroy(){this.bloomPipeline?.destroy(),this.depthTexture?.destroy();for(let t of this.shadowTextures.values())t.destroy();this.shadowTextures.clear(),this.placeholderShadowTexture?.destroy(),this.linearDepthTexture?.destroy(),this.msaaColorTexture?.destroy(),this.msaaLinearDepthTexture?.destroy(),this.msaaHdrTexture?.destroy(),this.hdrTexture?.destroy(),this.quad3dPipeline.destroy(),this.slug3dPipeline.destroy(),this.mesh3dPipeline.destroy(),this.morphPipeline.destroy(),this.floorReflectionPipeline.destroy(),this.reflectionColorTexture?.destroy(),this.reflectionMsaaColorTexture?.destroy(),this.reflectionDepthTexture?.destroy(),this.reflectionTempTexture?.destroy(),this.reflectionBlurredTexture?.destroy(),this.cameraPool.destroy(),this.lightsPool.destroy(),this.directLightsPool.destroy(),this.instancePool.destroy(),this.cameraUniformBindGroupCache.destroy()}};function _a(e,t="auto",r={}){if(t==="gltf"||t==="glb")return Eo(e,r);if(t==="stl")return $n(e,r);if(t==="ply")return eo(e,r);if(t==="vox")return yo(e,r);if(t==="3ds")return Co(e,r);if(t==="off")return Qo(e,r);if(t==="fbx")return Xn(e,r);if(t==="obj")return Wn(e,void 0,r);let n=typeof e!="string",o=typeof e=="string"?e.trim():"",A=o.toLowerCase();if(A.endsWith(".glb")||A.endsWith(".gltf"))return Eo(e,r);if(A.endsWith(".stl"))return $n(e,r);if(A.endsWith(".ply"))return eo(e,r);if(A.endsWith(".vox"))return yo(e,r);if(A.endsWith(".3ds"))return Co(e,r);if(A.endsWith(".off"))return Qo(e,r);if(A.endsWith(".fbx"))return Xn(e,r);if(A.endsWith(".obj"))return Wn(e,void 0,r);if(n){let i=e instanceof Uint8Array?e:new Uint8Array(e);return fr.isGlb(i)?ua(i,r):Hr.isBinary(i)?Xn(i,r):to.isVox(i)?yo(i,r):ro.is3DS(i)?Co(i,r):i.length>=3&&i[0]===112&&i[1]===108&&i[2]===121?eo(i,r):Zn.isBinary(i)?$n(i,r):Wn(i,void 0,r)}return o.startsWith("{")&&(o.includes('"asset"')||o.includes('"meshes"'))?Eo(o,r):o.startsWith("ply")||o.startsWith("PLY")?eo(o,r):o.startsWith("OFF")||o.startsWith("NOFF")||o.startsWith("COFF")?Qo(o,r):o.includes("FBXHeaderExtension")||o.includes("Kaydara FBX")?Xn(o,r):o.startsWith("solid")&&o.includes("facet")?$n(o,r):Wn(e,void 0,r)}$();var{cbrt:lA,sqrt:uA,PI:Zr}=Math,pc=(e,t,r,n,o)=>{let A=t+r*e,i=A**2+n;if(i>0){let l=uA(i);return lA(A+l)+lA(A-l)-o}let a=lA(uA(A*A-i)),s=A?Math.atan(uA(-i)/A):-Zr/2,c;return r<0?c=(A>0?2*Zr:Zr)-s:o<0?c=(A>0?2*Zr:-3*Zr)+s:c=(A>0?0:Zr)+s,2*a*Math.cos(c/3)-o},fc=(e,t,r,n)=>((t*e+3*r)*e+n)*e,gA=e=>e;function Ma(e,t,r,n){if(!(0<=e&&e<=1&&0<=r&&r<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===t&&r===n)return gA;let o=6*(3*e-3*r+1),A=6*(r-2*e),i=3*e,a=o*o,s=A*A,c=A/o,l=3*A*i/a-s*A/(a*o),u=2*i/o-s/a,g=u*u*u,p=3/o,f=3*t-3*n+1,d=n-2*t,h=3*t,I=o?pc:gA;return function(D){return D===0||D===1?D:fc(I(D,l,p,g,c),f,d,h)}}var $p={linear:gA,ease:Ma(.25,.1,.25,1),quad:e=>e*e,cubic:e=>e*e*e,poly:e=>t=>t**e,sin:e=>1-Math.cos(e*Math.PI/2),circle:e=>1-Math.sqrt(1-e*e),exp:e=>2**(10*(e-1)),elastic:(e=1)=>{let t=e*Math.PI;return r=>1-Math.cos(r*Math.PI/2)**3*Math.cos(r*t)},back:(e=1.70158)=>t=>t*t*((e+1)*t-e),bounce:e=>{if(e<1/2.75)return 7.5625*e*e;if(e<2/2.75){let r=e-.5454545454545454;return 7.5625*r*r+.75}if(e<2.5/2.75){let r=e-.8181818181818182;return 7.5625*r*r+.9375}let t=e-2.625/2.75;return 7.5625*t*t+.984375},bezier:Ma,in:e=>e,out:e=>t=>1-e(1-t),inOut:e=>t=>t<.5?e(t*2)/2:1-e((1-t)*2)/2};function Sa(e,t,r,n){let o=n?.extrapolateLeft??"extend",A=n?.extrapolateRight??"extend";if(t.length!==r.length)throw new Error("inputRange and outputRange must have the same length");if(t.length<2)throw new Error("inputRange must have at least 2 elements");let i=t[0],a=t[t.length-1];if(e<i){if(o==="clamp")return r[0];if(o==="identity")return e}if(e>a){if(A==="clamp")return r[r.length-1];if(A==="identity")return e}let s=1;for(;s<t.length-1&&!(e<t[s]);s++);let c=t[s-1],l=t[s],u=r[s-1],g=r[s];if(c===l)return u;let p=(e-c)/(l-c);return n?.easing&&(p=n.easing(p)),u+p*(g-u)}$();var dc={damping:10,mass:1,stiffness:100,overshootClamping:!1},pA={};function hc({animation:e,now:t,config:r}){let{toValue:n,lastTimestamp:o,current:A,velocity:i}=e,a=Math.min(t-o,64);if(r.damping<=0)throw new Error("Spring damping must be greater than 0, otherwise the spring() animation will never end, causing an infinite loop.");if(r.stiffness<=0)throw new Error("Spring stiffness must be greater than 0.");if(r.mass<=0)throw new Error("Spring mass must be greater than 0.");let s=r.damping,c=r.mass,l=r.stiffness,u=[n,o,A,i,s,c,l,t].join("-");if(pA[u])return pA[u];let g=-i,p=n-A,f=s/(2*Math.sqrt(l*c)),d=Math.sqrt(l/c),h=d*Math.sqrt(1-f**2),I=a/1e3,b=Math.sin(h*I),D=Math.cos(h*I),m=Math.exp(-f*d*I),x=m*(b*((g+f*d*p)/h)+p*D),w=n-x,S=f*d*x-m*(D*(g+f*d*p)-h*p*b),N=Math.exp(-d*I),M=n-N*(p+(g+d*p)*I),G=N*(g*(I*d-1)+I*p*d*d),j={toValue:n,prevPosition:A,lastTimestamp:t,current:f<1?w:M,velocity:f<1?S:G};return pA[u]=j,j}var fA={};function Pa({frame:e,fps:t,config:r={}}){let A=[e,t,r.damping,r.mass,r.overshootClamping,r.stiffness].join("-");if(fA[A])return fA[A];let i={lastTimestamp:0,current:0,toValue:1,velocity:0,prevPosition:0},a=Math.max(0,e),s=a%1;for(let c=0;c<=Math.floor(a);c++){c===Math.floor(a)&&(c+=s);let l=c/t*1e3;i=hc({animation:i,now:l,config:{...dc,...r}})}return fA[A]=i,i}var dA=new Map;function mc({fps:e,config:t={},threshold:r=.005}){if(typeof r!="number")throw new TypeError(`threshold must be a number, got ${r}`);if(r===0)return 1/0;if(r===1)return 0;if(Number.isNaN(r))throw new TypeError("Threshold is NaN");if(!Number.isFinite(r))throw new TypeError("Threshold is not finite");if(r<0)throw new TypeError("Threshold is below 0");let n=[e,t.damping,t.mass,t.overshootClamping,t.stiffness,r].join("-");if(dA.has(n))return dA.get(n);let o=0,A=0,i=()=>Pa({fps:e,frame:o,config:t}),a=i(),s=()=>Math.abs(a.current-a.toValue),c=s();for(;c>=r;)o++,a=i(),c=s();A=o;for(let l=0;l<20;l++)o++,a=i(),c=s(),c>=r&&(l=0,A=o+1);return dA.set(n,A),A}function nf({frame:e,fps:t,config:r={},from:n=0,to:o=1,durationInFrames:A,durationRestThreshold:i,delay:a=0,reverse:s=!1}){let c=s||typeof A<"u",l=c?mc({fps:t,config:r,threshold:i}):void 0,u=c?{get:()=>l}:{get:()=>{throw new Error("did not calculate natural duration")}},p=(s?(A??u.get())-e:e)+(s?a:-a),f=A===void 0?p:p/(A/u.get());if(A&&p>A)return o;let d=Pa({fps:t,frame:f,config:r}),h=r.overshootClamping?o>=n?Math.min(d.current,o):Math.max(d.current,o):d.current;return n===0&&o===1?h:Sa(h,[0,1],[n,o])}$();$();$();var ka=Vo(Ra(),1);function br(e){let t=Jr(e);return t.a>0||e.trim().toLowerCase()==="transparent"?[t.r,t.g,t.b,t.a]:[1,1,1,1]}function Vt(e){let t=0,r=e.length;for(let n=0;n<r;n++){let o=(n+1)%r;t+=e[n].x*e[o].y-e[o].x*e[n].y}return t/2}function ko(e,t){let r=!1,n=t.length;for(let o=0,A=n-1;o<n;A=o++){let i=t[o].x,a=t[o].y,s=t[A].x,c=t[A].y;a>e.y!=c>e.y&&e.x<(s-i)*(e.y-a)/(c-a)+i&&(r=!r)}return r}var Ic=.1,Bc=64;function Na(e,t){if(t.segments!==void 0)return t.segments;let r=Math.ceil(Math.sqrt(e/(8*t.tolerance)));return Math.min(Bc,Math.max(1,r))}function bc(e,t,r,n,o){let A=Na(2*Math.hypot(e.x-2*t.x+r.x,e.y-2*t.y+r.y),n);for(let i=1;i<=A;i++){let a=i/A,s=1-a;o.push({x:s*s*e.x+2*s*a*t.x+a*a*r.x,y:s*s*e.y+2*s*a*t.y+a*a*r.y})}}function Ec(e,t,r,n,o,A){let i=Na(6*Math.max(Math.hypot(e.x-2*t.x+r.x,e.y-2*t.y+r.y),Math.hypot(t.x-2*r.x+n.x,t.y-2*r.y+n.y)),o);for(let a=1;a<=i;a++){let s=a/i,c=1-s;A.push({x:c*c*c*e.x+3*c*c*s*t.x+3*c*s*s*r.x+s*s*s*n.x,y:c*c*c*e.y+3*c*c*s*t.y+3*c*s*s*r.y+s*s*s*n.y})}}function yc(e){try{let t=new ka.Path2D(e).simplify().edges;return Array.isArray(t)?t:null}catch{return null}}function Cc(e,t,r,n,o){let A=e.path?.toSVG();if(!A)return{contours:[],simplified:!0};let i=yc(A),a=i!==null;i??=(e.path?.commands??[]).map(g=>[g.command,...g.args]);let s=[],c={x:0,y:0},l=[],u=()=>{if(l.length>=3){let g=l[0],p=l[l.length-1];Math.hypot(p.x-g.x,p.y-g.y)<1e-4&&l.pop(),l.length>=3&&s.push(l)}l=[]};for(let g of i){let p=g[0],f=g.slice(1);if(p==="moveTo")u(),c={x:(t+f[0])*n,y:-(r+f[1])*n},l=[c];else if(p==="lineTo")c={x:(t+f[0])*n,y:-(r+f[1])*n},l.push(c);else if(p==="quadraticCurveTo"){let d={x:(t+f[0])*n,y:-(r+f[1])*n},h={x:(t+f[2])*n,y:-(r+f[3])*n};bc(c,d,h,o,l),c=h}else if(p==="bezierCurveTo"){let d={x:(t+f[0])*n,y:-(r+f[1])*n},h={x:(t+f[2])*n,y:-(r+f[3])*n},I={x:(t+f[4])*n,y:-(r+f[5])*n};Ec(c,d,h,I,o,l),c=I}else p==="closePath"&&u()}return u(),{contours:s,simplified:a}}var Qc=Math.cos(30*Math.PI/180);function mA({contours:e,simplified:t}){if(!t)return vc(e);let r=e.map(i=>({contour:i,area:Math.abs(Vt(i))}));r.sort((i,a)=>a.area-i.area);let n=r.map(()=>[]);for(let i=0;i<r.length;i++){let a=r[i].contour,s=a[Math.floor(a.length/2)];for(let c=0;c<i;c++){if(r[c].area<=r[i].area)continue;let l=r[c].contour;(ko(a[0],l)||ko(s,l))&&n[i].push(c)}}let o=[],A=new Map;for(let i=0;i<r.length;i++){let a=n[i];if(a.length%2===0){let s={outer:r[i].contour,holes:[]};o.push(s),A.set(i,s)}else A.get(a[a.length-1])?.holes.push(r[i].contour)}return o}function xc(e,t,r,n){let o=t.x-e.x,A=t.y-e.y,i=n.x-r.x,a=n.y-r.y,s=o*a-A*i;if(Math.abs(s)<1e-12)return null;let c=((r.x-e.x)*a-(r.y-e.y)*i)/s,l=((r.x-e.x)*A-(r.y-e.y)*o)/s,u=1e-9;return c<=u||c>=1-u||l<=u||l>=1-u?null:{x:e.x+o*c,y:e.y+A*c}}function hA(e,t=0){let r=e.length;if(r<3)return[];if(t>64)return[e];for(let n=0;n<r;n++){let o=e[n],A=e[(n+1)%r];for(let i=n+2;i<r;i++){if(n===0&&i===r-1)continue;let a=xc(o,A,e[i],e[(i+1)%r]);if(!a)continue;let s=[a,...e.slice(n+1,i+1)],c=[a,...e.slice(i+1),...e.slice(0,n+1)];return[...hA(s,t+1),...hA(c,t+1)]}}return Math.abs(Vt(e))>1e-9?[e]:[]}function wc(e,t){let r=0;for(let n of t)for(let o=0;o<n.length;o++){let A=n[o],i=n[(o+1)%n.length],a=(i.x-A.x)*(e.y-A.y)-(e.x-A.x)*(i.y-A.y);A.y<=e.y?i.y>e.y&&a>0&&r++:i.y<=e.y&&a<0&&r--}return r}function Fa(e){let t=0,r=-1;for(let u=0;u<e.length;u++){let g=e[u],p=e[(u+1)%e.length],f=Math.hypot(p.x-g.x,p.y-g.y);f>r&&(r=f,t=u)}let n=e[t],o=e[(t+1)%e.length],A=(n.x+o.x)/2,i=(n.y+o.y)/2,a=Math.max(1e-4,Math.min(.01,r*.001)),s=-(o.y-n.y)/r*a,c=(o.x-n.x)/r*a,l={x:A+s,y:i+c};return ko(l,e)?l:{x:A-s,y:i-c}}function vc(e){let t=e.flatMap(o=>hA(o)),r=[],n=[];for(let o of t)wc(Fa(o),e)!==0?r.push({outer:o,holes:[]}):n.push(o);for(let o of n){let A=Math.abs(Vt(o)),i=Fa(o),a,s=Number.POSITIVE_INFINITY;for(let c of r){let l=Math.abs(Vt(c.outer));l>A&&l<s&&ko(i,c.outer)&&(a=c,s=l)}a?.holes.push(o)}return r}var Ua=new WeakMap;function Dc(e,t,r,n,o,A){let i=Ua.get(e);i||(i=new Map,Ua.set(e,i));let a=`${t.id}|${o}|${A.segments??""}|${A.tolerance}`,s=i.get(a);s||(s=mA(Cc(t,0,0,o,A)),i.set(a,s));let c=r*o,l=-n*o,u=g=>g.map(p=>({x:p.x+c,y:p.y+l}));return s.map(g=>({outer:u(g.outer),holes:g.holes.map(u)}))}function gf(e){let t=e.font,r=e.fontSize??48,n=e.depth??20,o=n/2,A={segments:e.curveSegments!==void 0?Math.max(2,e.curveSegments):void 0,tolerance:Math.max(.001,e.curveTolerance??Ic)},i=t.unitsPerEm||1e3,a=r/i,s=Ri(t,e.text.replace(/\n/g," "),{direction:e.direction,letterSpacing:e.letterSpacing?e.letterSpacing/a:0}),c=[];for(let oe of s.glyphs){let ne=t.getGlyph(oe.glyphId),ie=Dc(t,ne,oe.x,oe.y,a,A);for(let he of ie)c.push(he)}let l=Number.POSITIVE_INFINITY,u=Number.NEGATIVE_INFINITY,g=Number.POSITIVE_INFINITY,p=Number.NEGATIVE_INFINITY;for(let oe of c){for(let ne of oe.outer)ne.x<l&&(l=ne.x),ne.x>u&&(u=ne.x),ne.y<g&&(g=ne.y),ne.y>p&&(p=ne.y);for(let ne of oe.holes)for(let ie of ne)ie.x<l&&(l=ie.x),ie.x>u&&(u=ie.x),ie.y<g&&(g=ie.y),ie.y>p&&(p=ie.y)}Number.isFinite(l)||(l=0,u=0,g=0,p=0);let f=u-l,d=p-g,h=(s.baseLevel&1)===1,I=e.align==="start"?h?"right":"left":e.align==="end"?h?"left":"right":e.align,b=(l+u)/2;I==="left"&&(b=l),I==="right"&&(b=u);let D=(g+p)/2;e.verticalAlign==="top"&&(D=g),e.verticalAlign==="bottom"&&(D=p);for(let oe of c){for(let ne of oe.outer)ne.x-=b,ne.y-=D;for(let ne of oe.holes)for(let ie of ne)ie.x-=b,ie.y-=D}l-=b,u-=b,g-=D,p-=D;let m=[],x=[],w=[],S=[],N=[],M=[],G=[],j=[],R=(oe,ne,ie)=>{let he=N.length/3;return N.push(oe.x,oe.y,o,oe.x,oe.y,-o),M.push(ne.x,ne.y,0,ne.x,ne.y,0),G.push(ie,0,ie,1),he},K=oe=>{let ne=oe.filter((y,ye)=>{let Qe=oe[(ye+1)%oe.length];return Math.hypot(Qe.x-y.x,Qe.y-y.y)>=1e-6}),ie=ne.length;if(ie<2)return;let he=[],F=ne.map((y,ye)=>{let Qe=ne[(ye+1)%ie],xe=Math.hypot(Qe.x-y.x,Qe.y-y.y);return he.push(xe),{x:(Qe.y-y.y)/xe,y:-(Qe.x-y.x)/xe}}),Be=he.reduce((y,ye)=>y+ye,0),Se=[],Pe=[],Ie=0;for(let y=0;y<ie;y++){let ye=F[(y-1+ie)%ie],Qe=F[y],xe=Ie/Be,le=ye.x+Qe.x,ge=ye.y+Qe.y,we=ye.x*Qe.x+ye.y*Qe.y>=Qc?{x:le/Math.hypot(le,ge),y:ge/Math.hypot(le,ge)}:null;we&&y>0?Se[y]=Pe[y]=R(ne[y],we,xe):(Pe[y]=R(ne[y],we??ye,y===0?1:xe),Se[y]=R(ne[y],we??Qe,xe)),Ie+=he[y]}for(let y=0;y<ie;y++){let ye=Se[y],Qe=Pe[(y+1)%ie];j.push(ye,Qe+1,Qe),j.push(ye,ye+1,Qe+1)}};for(let oe of c){let ne=oe.outer;Vt(ne)<0&&ne.reverse();for(let Ie of oe.holes)Vt(Ie)>0&&Ie.reverse();let ie=[],he=[];for(let Ie of ne)ie.push(Ie.x,Ie.y);for(let Ie of oe.holes){he.push(ie.length/2);for(let y of Ie)ie.push(y.x,y.y)}let F=co(ie,he,2),Be=ie.length/2,Se=m.length/3;for(let Ie=0;Ie<Be;Ie++){let y=ie[Ie*2],ye=ie[Ie*2+1];m.push(y,ye,-o),x.push(0,0,-1),w.push((y-l)/(f||1),(ye-g)/(d||1))}for(let Ie=0;Ie<F.length;Ie+=3)S.push(Se+F[Ie],Se+F[Ie+2],Se+F[Ie+1]);let Pe=m.length/3;for(let Ie=0;Ie<Be;Ie++){let y=ie[Ie*2],ye=ie[Ie*2+1];m.push(y,ye,o),x.push(0,0,1),w.push((y-l)/(f||1),(ye-g)/(d||1))}for(let Ie=0;Ie<F.length;Ie+=3)S.push(Pe+F[Ie],Pe+F[Ie+1],Pe+F[Ie+2]);K(ne);for(let Ie of oe.holes)K(Ie)}let z=br(e.fill??"#ffffff"),J=br(e.bevelColor??e.fill??"#ffffff"),W={name:"front-material",diffuseColor:z,shading:e.material??"lit",shininess:e.shininess??32,roughness:e.roughness,metallic:e.metallic,twoSided:!0},X={name:"side-material",diffuseColor:J,shading:e.material??"lit",shininess:e.shininess??32,roughness:e.roughness,metallic:e.metallic,twoSided:!0},Ae=[];return S.length>0&&Ae.push({id:"text-front-mesh",name:"front",positions:new Float32Array(m),normals:new Float32Array(x),uvs:new Float32Array(w),indices:m.length/3>65535?new Uint32Array(S):new Uint16Array(S),materialName:"front-material"}),j.length>0&&Ae.push({id:"text-side-mesh",name:"side",positions:new Float32Array(N),normals:new Float32Array(M),uvs:new Float32Array(G),indices:N.length/3>65535?new Uint32Array(j):new Uint16Array(j),materialName:"side-material"}),{modelData:{name:`extruded-text-${e.text}`,meshes:Ae,materials:{"front-material":W,"side-material":X},animations:[],bounds:{min:[l,g,-o],max:[u,p,o],center:[(l+u)/2,(g+p)/2,0],size:[f,d,n],boundingSphereRadius:Math.hypot(f,d,n)/2}},bounds:{minX:l,maxX:u,minY:g,maxY:p,width:f,height:d,depth:n}}}var $r=class{positions=[];normals=[];uvs=[];colors=[];indices=[];topology;vertex(t,r,n,o){return this.positions.push(t[0],t[1],t[2]),this.normals.push(r[0],r[1],r[2]),this.uvs.push(n[0],n[1]),o&&this.colors.push(o[0],o[1],o[2],o[3]),this.positions.length/3-1}grid(t,r,n,o=!1){for(let A=0;A<n;A++)for(let i=0;i<r;i++){let a=t+A*(r+1)+i,s=a+1,c=a+r+1,l=c+1;o?this.indices.push(a,s,c,s,l,c):this.indices.push(a,c,s,s,c,l)}}build(t){let r=this.positions.length/3,n={id:`${t}-mesh`,name:t,positions:new Float32Array(this.positions),normals:new Float32Array(this.normals),uvs:new Float32Array(this.uvs),indices:r>65535?new Uint32Array(this.indices):new Uint16Array(this.indices),materialName:`${t}-material`};return this.topology&&(n.topology=this.topology),this.colors.length===r*4&&this.colors.length>0&&(n.colors=new Float32Array(this.colors)),n}};function $e(e){let t=Math.hypot(e[0],e[1],e[2]);return t>1e-12?[e[0]/t,e[1]/t,e[2]/t]:[0,0,0]}function It(e,t){return[e[0]-t[0],e[1]-t[1],e[2]-t[2]]}function wt(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Er(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function IA(e,t,r){if(t<=0)return[-e,e];let n=e-t,o=[];for(let A=0;A<=r;A++)o.push(-n-t*Math.cos(A/r*Math.PI/2));for(let A=n>1e-9?0:1;A<=r;A++)o.push(n+t*Math.sin(A/r*Math.PI/2));return o}function _c(e,t){let r=e.width/2,n=e.height/2,o=e.depth/2,A=Math.max(0,Math.min(e.radius??0,r,n,o)),i=Math.max(1,Math.round(e.segments??4)),a=e.taper??1,s=r-A,c=n-A,l=o-A,u=IA(r,A,i),g=IA(n,A,i),p=IA(o,A,i),f=e.height>0?(1-a)/e.height:0,d=m=>a+f*(m+n),h=(m,x)=>{let w=[Math.max(-s,Math.min(s,m[0])),Math.max(-c,Math.min(c,m[1])),Math.max(-l,Math.min(l,m[2]))],S=A>0?$e([m[0]-w[0],m[1]-w[1],m[2]-w[2]]):x;S[0]===0&&S[1]===0&&S[2]===0&&(S=x);let N=[w[0]+S[0]*A,w[1]+S[1]*A,w[2]+S[2]*A];if(a===1)return{p:N,n:S};let M=d(N[1]);return{p:[N[0]*M,N[1],N[2]*M],n:$e([S[0]/M,S[1]-N[0]*f*S[0]/M-N[2]*f*S[2]/M,S[2]/M])}},I=[{axis:2,sign:-1,u:0,v:1},{axis:2,sign:1,u:0,v:1},{axis:0,sign:-1,u:2,v:1},{axis:0,sign:1,u:2,v:1},{axis:1,sign:-1,u:0,v:2},{axis:1,sign:1,u:0,v:2}],b=[r,n,o],D=[u,g,p];for(let m of I){let x=D[m.u],w=D[m.v],S=[0,0,0];S[m.axis]=m.sign;let N=t.positions.length/3;for(let G=0;G<w.length;G++)for(let j=0;j<x.length;j++){let R=[0,0,0];R[m.axis]=m.sign*b[m.axis],R[m.u]=x[j],R[m.v]=w[G];let{p:K,n:z}=h(R,S);t.vertex(K,z,[(x[j]/b[m.u]+1)/2,(w[G]/b[m.v]+1)/2])}let M=(m.v+1)%3===m.u;t.grid(N,x.length-1,w.length-1,(M?1:-1)!==m.sign)}}function Mc(e,t){let r=Math.max(3,Math.round(e.segments??32)),n=Math.max(2,Math.round(r/2));for(let o=0;o<=n;o++){let A=o/n*Math.PI;for(let i=0;i<=r;i++){let a=i/r*Math.PI*2,s=[Math.sin(A)*Math.cos(a),-Math.cos(A),Math.sin(A)*Math.sin(a)];t.vertex([s[0]*e.radius,s[1]*e.radius,s[2]*e.radius],s,[i/r,o/n])}}t.grid(0,r,n)}function Sc(e,t){let r=Math.max(3,Math.round(e.segments??32)),n=Math.max(0,e.radiusTop??e.radius??50),o=Math.max(0,e.radiusBottom??e.radius??50),A=e.height/2;if(e.flatShaded)for(let i=0;i<r;i++){let a=i/r*Math.PI*2,s=(i+1)/r*Math.PI*2,c=Math.cos(a),l=Math.sin(a),u=Math.cos(s),g=Math.sin(s),p=[c*n,-A,l*n],f=[u*n,-A,g*n],d=[c*o,A,l*o],h=[u*o,A,g*o],I=It(d,p),b=o>=n?It(h,d):It(f,p),D=$e(Er(I,b)),m=i/r,x=(i+1)/r;if(n<=1e-6){let w=t.vertex([0,-A,0],D,[(m+x)/2,0]),S=t.vertex(d,D,[m,1]),N=t.vertex(h,D,[x,1]);t.indices.push(w,S,N)}else if(o<=1e-6){let w=t.vertex(p,D,[m,0]),S=t.vertex(f,D,[x,0]),N=t.vertex([0,A,0],D,[(m+x)/2,1]);t.indices.push(w,N,S)}else{let w=t.vertex(p,D,[m,0]);t.vertex(f,D,[x,0]),t.vertex(d,D,[m,1]),t.vertex(h,D,[x,1]),t.indices.push(w,w+2,w+1,w+1,w+2,w+3)}}else{let i=e.height>0?(o-n)/e.height:0;for(let a=0;a<=1;a++){let s=a===0?n:o,c=a===0?-A:A;for(let l=0;l<=r;l++){let u=l/r*Math.PI*2,g=Math.cos(u),p=Math.sin(u);t.vertex([g*s,c,p*s],$e([g,-i,p]),[l/r,a])}}t.grid(0,r,1)}if(!e.openEnded)for(let[i,a,s]of[[-A,n,-1],[A,o,1]]){if(a<=1e-6)continue;let c=t.vertex([0,i,0],[0,s,0],[.5,.5]),l=t.positions.length/3;for(let u=0;u<=r;u++){let g=u/r*Math.PI*2,p=Math.cos(g),f=Math.sin(g);t.vertex([p*a,i,f*a],[0,s,0],[(p+1)/2,(f+1)/2])}for(let u=0;u<r;u++)s<0?t.indices.push(c,l+u,l+u+1):t.indices.push(c,l+u+1,l+u)}}function Pc(e,t){let r=Math.max(.001,e.radius??60),n=Math.max(.001,e.tube??20),o=Math.max(3,Math.round(e.radialSegments??24)),A=Math.max(3,Math.round(e.tubularSegments??48)),a=(e.arc??360)*Math.PI/180,s=t.positions.length/3;for(let c=0;c<=o;c++){let l=c/o*Math.PI*2,u=Math.cos(l),g=Math.sin(l);for(let p=0;p<=A;p++){let f=p/A*a,d=Math.cos(f),h=Math.sin(f),I=(r+n*u)*d,b=(r+n*u)*h,D=n*g,m=u*d,x=u*h,w=g;t.vertex([I,b,D],$e([m,x,w]),[p/A,c/o])}}if(t.grid(s,A,o,!0),Math.abs(a)<Math.PI*2-1e-4)for(let[c,l]of[[0,-1],[a,1]]){let u=Math.cos(c),g=Math.sin(c),p=[-g*l,u*l,0],f=t.vertex([r*u,r*g,0],p,[.5,.5]),d=t.positions.length/3;for(let h=0;h<=o;h++){let I=h/o*Math.PI*2,b=Math.cos(I),D=Math.sin(I);t.vertex([(r+n*b)*u,(r+n*b)*g,n*D],p,[(b+1)/2,(D+1)/2])}for(let h=0;h<o;h++)l<0?t.indices.push(f,d+h,d+h+1):t.indices.push(f,d+h+1,d+h)}}function Gc(e,t){let r=Math.max(.001,e.radius??30),n=Math.max(0,e.length??60),o=n/2,A=Math.max(2,Math.round(e.capSegments??12)),i=Math.max(3,Math.round(e.radialSegments??32)),a=[],s=Math.PI*r+n;for(let l=0;l<=A;l++){let u=l/A*Math.PI/2,g=Math.sin(u),p=Math.cos(u);a.push({y:-o-r*p,rRing:r*g,ny:-p,nr:g,v:u*r/(s||1)})}for(let l=0;l<=A;l++){if(l===0&&n<=1e-6)continue;let u=Math.PI/2+l/A*Math.PI/2,g=Math.sin(u),p=Math.cos(u);a.push({y:o-r*p,rRing:r*g,ny:-p,nr:g,v:(Math.PI/2*r+n+(u-Math.PI/2)*r)/(s||1)})}let c=t.positions.length/3;for(let l of a)for(let u=0;u<=i;u++){let g=u/i*Math.PI*2,p=Math.cos(g),f=Math.sin(g),d=$e([l.nr*p,l.ny,l.nr*f]);t.vertex([l.rRing*p,l.y,l.rRing*f],d,[u/i,l.v])}t.grid(c,i,a.length-1,!1)}function Rc(e,t){let r=Math.max(0,e.innerRadius??30),n=Math.max(r+.001,e.outerRadius??60),o=Math.max(0,e.depth??0)/2,A=Math.max(3,Math.round(e.thetaSegments??48)),i=Math.max(1,Math.round(e.phiSegments??1)),a=(e.thetaStart??0)*Math.PI/180,s=(e.thetaLength??360)*Math.PI/180;for(let[c,l,u]of[[-o,-1,!1],[o,1,!0]]){let g=t.positions.length/3;for(let p=0;p<=i;p++){let f=r+(n-r)*p/i;for(let d=0;d<=A;d++){let h=a+d/A*s,I=Math.cos(h),b=Math.sin(h),D=f*I,m=f*b;t.vertex([D,m,c],[0,0,l],[(D/n+1)/2,(m/n+1)/2])}}t.grid(g,A,i,!u)}if(o>0){let c=t.positions.length/3;for(let[l,u]of[[-o,0],[o,1]])for(let g=0;g<=A;g++){let p=a+g/A*s,f=Math.cos(p),d=Math.sin(p);t.vertex([n*f,n*d,l],[f,d,0],[g/A,u])}if(t.grid(c,A,1,!0),r>1e-6){let l=t.positions.length/3;for(let[u,g]of[[-o,0],[o,1]])for(let p=0;p<=A;p++){let f=a+p/A*s,d=Math.cos(f),h=Math.sin(f);t.vertex([r*d,r*h,u],[-d,-h,0],[p/A,g])}t.grid(l,A,1,!1)}if(Math.abs(s)<Math.PI*2-1e-4)for(let[l,u]of[[a,-1],[a+s,1]]){let g=Math.cos(l),p=Math.sin(l),f=[-p*u,g*u,0],d=t.vertex([r*g,r*p,-o],f,[0,0]),h=t.vertex([n*g,n*p,-o],f,[1,0]),I=t.vertex([r*g,r*p,o],f,[0,1]),b=t.vertex([n*g,n*p,o],f,[1,1]);u>0?t.indices.push(d,I,h,h,I,b):t.indices.push(d,h,I,h,b,I)}}}function Ta(e,t){let r=e.shape??"icosahedron",n=Math.max(.001,e.radius??50),o=Math.max(0,Math.min(5,Math.round(e.detail??(r==="icosphere"?2:0)))),A=e.flatShaded??r!=="icosphere",i=[],a=[];if(r==="tetrahedron")i=[[1,1,1],[-1,-1,1],[-1,1,-1],[1,-1,-1]],a=[[2,1,0],[0,3,2],[1,3,0],[2,3,1]];else if(r==="octahedron")i=[[1,0,0],[-1,0,0],[0,1,0],[0,-1,0],[0,0,1],[0,0,-1]],a=[[0,2,4],[0,4,3],[0,3,5],[0,5,2],[1,2,5],[1,5,3],[1,3,4],[1,4,2]];else if(r==="dodecahedron"){let u=(1+Math.sqrt(5))/2,g=1/u;i=[[-1,-1,-1],[-1,-1,1],[-1,1,-1],[-1,1,1],[1,-1,-1],[1,-1,1],[1,1,-1],[1,1,1],[0,-g,-u],[0,-g,u],[0,g,-u],[0,g,u],[-g,-u,0],[-g,u,0],[g,-u,0],[g,u,0],[-u,0,-g],[u,0,-g],[-u,0,g],[u,0,g]];let p=[[3,11,7,15,13],[7,19,17,6,15],[17,4,8,10,6],[8,0,16,2,10],[0,12,1,18,16],[6,10,2,13,15],[2,16,18,3,13],[18,1,9,11,3],[4,14,12,0,8],[11,9,5,19,7],[19,5,14,4,17],[1,12,14,5,9]];if(o===0&&A){let f=i.map(d=>$e(d));for(let d of p){let h=d.map(m=>f[m]),I=[h.reduce((m,x)=>m+x[0],0)/5,h.reduce((m,x)=>m+x[1],0)/5,h.reduce((m,x)=>m+x[2],0)/5],b=$e(Er(It(h[1],h[0]),It(h[2],h[0])));wt(b,I)<0&&(h.reverse(),b=[-b[0],-b[1],-b[2]]);let D=t.positions.length/3;for(let m of h){let x=.5+Math.atan2(m[2],m[0])/(2*Math.PI),w=Math.acos(Math.max(-1,Math.min(1,-m[1])))/Math.PI;t.vertex([m[0]*n,m[1]*n,m[2]*n],b,[x,w])}for(let m=1;m<h.length-1;m++)t.indices.push(D,D+m,D+m+1)}return}for(let f of p)a.push([f[0],f[1],f[2]],[f[0],f[2],f[3]],[f[0],f[3],f[4]])}else{let u=(1+Math.sqrt(5))/2;i=[[-1,u,0],[1,u,0],[-1,-u,0],[1,-u,0],[0,-1,u],[0,1,u],[0,-1,-u],[0,1,-u],[u,0,-1],[u,0,1],[-u,0,-1],[-u,0,1]],a=[[0,11,5],[0,5,1],[0,1,7],[0,7,10],[0,10,11],[1,5,9],[5,11,4],[11,10,2],[10,7,6],[7,1,8],[3,9,4],[3,4,2],[3,2,6],[3,6,8],[3,8,9],[4,9,5],[2,4,11],[6,2,10],[8,6,7],[9,8,1]]}let s=i.map(u=>$e(u)),c=a.map(u=>[u[0],u[1],u[2]]);for(let u=0;u<o;u++){let g=new Map,p=(d,h)=>{let I=d<h?`${d}_${h}`:`${h}_${d}`,b=g.get(I);if(b!==void 0)return b;let D=s[d],m=s[h],x=s.length;return s.push($e([D[0]+m[0],D[1]+m[1],D[2]+m[2]])),g.set(I,x),x},f=[];for(let[d,h,I]of c){let b=p(d,h),D=p(h,I),m=p(I,d);f.push([d,b,m],[h,D,b],[I,m,D],[b,D,m])}c=f}let l=u=>[.5+Math.atan2(u[2],u[0])/(2*Math.PI),Math.acos(Math.max(-1,Math.min(1,-u[1])))/Math.PI];if(A)for(let[u,g,p]of c){let f=s[u],d=s[g],h=s[p],I=[(f[0]+d[0]+h[0])/3,(f[1]+d[1]+h[1])/3,(f[2]+d[2]+h[2])/3],b=$e(Er(It(d,f),It(h,f)));if(wt(b,I)<0){let m=d;d=h,h=m,b=[-b[0],-b[1],-b[2]]}let D=t.positions.length/3;t.vertex([f[0]*n,f[1]*n,f[2]*n],b,l(f)),t.vertex([d[0]*n,d[1]*n,d[2]*n],b,l(d)),t.vertex([h[0]*n,h[1]*n,h[2]*n],b,l(h)),t.indices.push(D,D+1,D+2)}else{let u=t.positions.length/3;for(let g of s)t.vertex([g[0]*n,g[1]*n,g[2]*n],g,l(g));for(let[g,p,f]of c){let d=s[g],h=s[p],I=s[f],b=[(d[0]+h[0]+I[0])/3,(d[1]+h[1]+I[1])/3,(d[2]+h[2]+I[2])/3],D=Er(It(h,d),It(I,d));wt(D,b)<0?t.indices.push(u+g,u+f,u+p):t.indices.push(u+g,u+p,u+f)}}}function La(e,t){let r=[];if(!e||typeof e!="string")return r;let n=[],o=/([a-df-z])|([-+]?(?:\d*\.\d+|\d+)(?:[eE][-+]?\d+)?)/gi,A=o.exec(e);for(;A!==null;)A[1]?n.push(A[1]):A[2]&&n.push(Number.parseFloat(A[2])),A=o.exec(e);let i=0,a={x:0,y:0},s={x:0,y:0},c=null,l=null,u=[],g=()=>{if(u.length>=2){let I=u[0],b=u[u.length-1];Math.hypot(b.x-I.x,b.y-I.y)<1e-4&&u.pop(),u.length>=2&&r.push(u)}u=[]},p=I=>{if(t.segments!==void 0)return Math.max(1,t.segments);let b=Math.ceil(Math.sqrt(I/(8*Math.max(.001,t.tolerance))));return Math.min(64,Math.max(1,b))},f=(I,b,D)=>{let m=p(2*Math.hypot(I.x-2*b.x+D.x,I.y-2*b.y+D.y));for(let x=1;x<=m;x++){let w=x/m,S=1-w;u.push({x:S*S*I.x+2*S*w*b.x+w*w*D.x,y:S*S*I.y+2*S*w*b.y+w*w*D.y})}},d=(I,b,D,m)=>{let x=p(6*Math.max(Math.hypot(I.x-2*b.x+D.x,I.y-2*b.y+D.y),Math.hypot(b.x-2*D.x+m.x,b.y-2*D.y+m.y)));for(let w=1;w<=x;w++){let S=w/x,N=1-S;u.push({x:N*N*N*I.x+3*N*N*S*b.x+3*N*S*S*D.x+S*S*S*m.x,y:N*N*N*I.y+3*N*N*S*b.y+3*N*S*S*D.y+S*S*S*m.y})}},h=()=>i<n.length&&typeof n[i]=="number"?n[i++]:0;for(;i<n.length;){let I=n[i++];if(typeof I!="string")continue;let b=I===I.toLowerCase();switch(I.toUpperCase()){case"M":{g();let m=!0;for(;i<n.length&&typeof n[i]=="number";){let x=h(),w=h();b&&(x+=a.x,w+=a.y),a={x,y:w},m?(s=a,u=[a],m=!1):u.push(a)}c=null,l=null;break}case"L":{for(;i<n.length&&typeof n[i]=="number";){let m=h(),x=h();b&&(m+=a.x,x+=a.y),a={x:m,y:x},u.push(a)}c=null,l=null;break}case"H":{for(;i<n.length&&typeof n[i]=="number";){let m=h();b&&(m+=a.x),a={x:m,y:a.y},u.push(a)}c=null,l=null;break}case"V":{for(;i<n.length&&typeof n[i]=="number";){let m=h();b&&(m+=a.y),a={x:a.x,y:m},u.push(a)}c=null,l=null;break}case"C":{for(;i<n.length&&typeof n[i]=="number";){let m=h(),x=h(),w=h(),S=h(),N=h(),M=h();b&&(m+=a.x,x+=a.y,w+=a.x,S+=a.y,N+=a.x,M+=a.y);let G={x:m,y:x},j={x:w,y:S},R={x:N,y:M};d(a,G,j,R),a=R,c=j}l=null;break}case"S":{for(;i<n.length&&typeof n[i]=="number";){let m=h(),x=h(),w=h(),S=h();b&&(m+=a.x,x+=a.y,w+=a.x,S+=a.y);let N=c?{x:2*a.x-c.x,y:2*a.y-c.y}:a,M={x:m,y:x},G={x:w,y:S};d(a,N,M,G),a=G,c=M}l=null;break}case"Q":{for(;i<n.length&&typeof n[i]=="number";){let m=h(),x=h(),w=h(),S=h();b&&(m+=a.x,x+=a.y,w+=a.x,S+=a.y);let N={x:m,y:x},M={x:w,y:S};f(a,N,M),a=M,l=N}c=null;break}case"T":{for(;i<n.length&&typeof n[i]=="number";){let m=h(),x=h();b&&(m+=a.x,x+=a.y);let w=l?{x:2*a.x-l.x,y:2*a.y-l.y}:a,S={x:m,y:x};f(a,w,S),a=S,l=w}c=null;break}case"A":{for(;i<n.length&&typeof n[i]=="number";){let m=h(),x=h(),w=h(),S=h()!==0,N=h()!==0,M=h(),G=h();b&&(M+=a.x,G+=a.y);let j={x:M,y:G},R=Ni(a,m,x,w,S,N,j);for(let K of R)u.push(K.p1);a=j}c=null,l=null;break}case"Z":{g(),a=s,c=null,l=null;break}}}return g(),r}function To(e){return Array.isArray(e)?{x:e[0],y:e[1]}:{x:e.x,y:e.y}}function Fc(e,t){let r=e.shape??e.d??e.contour,n=[];if(typeof r=="string")n=La(r,t).filter(o=>o.length>=3);else if(Array.isArray(r)&&r.length>0){let o=r[0];if(Array.isArray(o)&&o.length>0&&(Array.isArray(o[0])||typeof o[0]=="object"&&o[0]!==null&&"x"in o[0]))n=r.map(i=>i.map(To)).filter(i=>i.length>=3);else{let i=r.map(To);i.length>=3&&(n=[i])}}if(Array.isArray(e.holes))for(let o of e.holes){let A=o.map(To);A.length>=3&&n.push(A)}return n}var Oa=Math.cos(30*Math.PI/180);function Uc(e){let r=Math.max(.001,e.depth??20)/2,n=Math.max(0,Math.min(r*.49,e.bevelThickness??0)),o=Math.max(0,e.bevelSize??n),A=n>0||o>0?Math.max(1,Math.round(e.bevelSegments??2)):0,i={segments:e.curveSegments,tolerance:Math.max(.001,e.curveTolerance??.25)},a=Fc(e,i),s=mA({contours:a,simplified:!1}),c=Number.POSITIVE_INFINITY,l=Number.NEGATIVE_INFINITY,u=Number.POSITIVE_INFINITY,g=Number.NEGATIVE_INFINITY;for(let N of s){for(let M of N.outer)M.x<c&&(c=M.x),M.x>l&&(l=M.x),M.y<u&&(u=M.y),M.y>g&&(g=M.y);for(let M of N.holes)for(let G of M)G.x<c&&(c=G.x),G.x>l&&(l=G.x),G.y<u&&(u=G.y),G.y>g&&(g=G.y)}if(Number.isFinite(c)||(c=l=u=g=0),e.center??!0){let N=(c+l)/2,M=(u+g)/2;for(let G of s){for(let j of G.outer)j.x-=N,j.y-=M;for(let j of G.holes)for(let R of j)R.x-=N,R.y-=M}c-=N,l-=N,u-=M,g-=M}let p=l-c,f=g-u,d=new $r,h=new $r,I=e.bevelColor!==void 0&&e.bevelColor!==e.color,b=I?h:d,D=N=>{let M=N.filter((z,J)=>{let W=N[(J+1)%N.length];return Math.hypot(W.x-z.x,W.y-z.y)>=1e-5}),G=M.length;if(G<3)return null;let j=[],R=M.map((z,J)=>{let W=M[(J+1)%G],X=Math.hypot(W.x-z.x,W.y-z.y);return j.push(X),{x:(W.y-z.y)/X,y:-(W.x-z.x)/X}}),K=M.map((z,J)=>{let W=R[(J-1+G)%G],X=R[J],Ae=W.x+X.x,re=W.y+X.y,oe=Math.hypot(Ae,re);if(oe<1e-6)return X;let ne=Ae/oe*X.x+re/oe*X.y,ie=Math.min(2,1/Math.max(.35,ne));return{x:Ae/oe*ie,y:re/oe*ie}});return{pts:M,edgeLengths:j,edgeNormals:R,miterNormals:K}},m=N=>{let M=D(N);if(!M)return;let{pts:G,edgeLengths:j,edgeNormals:R,miterNormals:K}=M,z=G.length,J=j.reduce((ie,he)=>ie+he,0)||1,W=[];if(A<=0)W.push({z:-r,inset:0,nr:1,nz:0,v:0},{z:r,inset:0,nr:1,nz:0,v:1});else{let ie=A*2+1,he=0;for(let F=0;F<=A;F++){let Be=F/A*Math.PI/2;W.push({z:-r+n*(1-Math.cos(Be)),inset:-o*(1-Math.sin(Be)),nr:Math.sin(Be),nz:-Math.cos(Be),v:he++/ie})}for(let F=0;F<=A;F++){let Be=F/A*Math.PI/2;W.push({z:r-n*(1-Math.sin(Be)),inset:-o*(1-Math.cos(Be)),nr:Math.cos(Be),nz:Math.sin(Be),v:he++/ie})}}let X=W.length,Ae=(ie,he,F,Be)=>{let Se=b.positions.length/3;for(let Pe of W){let Ie=ie.x+he.x*Pe.inset,y=ie.y+he.y*Pe.inset,ye=$e([F.x*Pe.nr,F.y*Pe.nr,Pe.nz]);b.vertex([Ie,y,Pe.z],ye,[Be,Pe.v])}return Se},re=[],oe=[],ne=0;for(let ie=0;ie<z;ie++){let he=R[(ie-1+z)%z],F=R[ie],Be=K[ie],Se=ne/J,Pe=he.x+F.x,Ie=he.y+F.y,ye=he.x*F.x+he.y*F.y>=Oa?{x:Pe/Math.hypot(Pe,Ie),y:Ie/Math.hypot(Pe,Ie)}:null;ye&&ie>0?re[ie]=oe[ie]=Ae(G[ie],Be,ye,Se):(oe[ie]=Ae(G[ie],Be,ye??he,ie===0?1:Se),re[ie]=Ae(G[ie],Be,ye??F,Se)),ne+=j[ie]}for(let ie=0;ie<z;ie++){let he=re[ie],F=oe[(ie+1)%z];for(let Be=0;Be<X-1;Be++){let Se=he+Be,Pe=he+Be+1,Ie=F+Be,y=F+Be+1;b.indices.push(Se,Ie,Pe,Ie,y,Pe)}}};for(let N of s){let M=N.outer;Vt(M)<0&&M.reverse();for(let re of N.holes)Vt(re)>0&&re.reverse();let G=D(M);if(!G)continue;let j=N.holes.map(D).filter(re=>re!==null),R=-o,K=[],z=[];for(let re=0;re<G.pts.length;re++){let oe=G.pts[re],ne=G.miterNormals[re];K.push(oe.x+ne.x*R,oe.y+ne.y*R)}for(let re of j){z.push(K.length/2);for(let oe=0;oe<re.pts.length;oe++){let ne=re.pts[oe],ie=re.miterNormals[oe];K.push(ne.x+ie.x*R,ne.y+ie.y*R)}}let J=co(K,z,2),W=K.length/2,X=d.positions.length/3;for(let re=0;re<W;re++){let oe=K[re*2],ne=K[re*2+1];d.vertex([oe,ne,-r],[0,0,-1],[(oe-c)/(p||1),(ne-u)/(f||1)])}for(let re=0;re<J.length;re+=3)d.indices.push(X+J[re],X+J[re+2],X+J[re+1]);let Ae=d.positions.length/3;for(let re=0;re<W;re++){let oe=K[re*2],ne=K[re*2+1];d.vertex([oe,ne,r],[0,0,1],[(oe-c)/(p||1),(ne-u)/(f||1)])}for(let re=0;re<J.length;re+=3)d.indices.push(Ae+J[re],Ae+J[re+1],Ae+J[re+2]);m(M);for(let re of N.holes)m(re)}let x=[],w={},S=d.build("extrude-front");if(S.materialName="extrude-front-material",x.push(S),w["extrude-front-material"]={name:"extrude-front-material",diffuseColor:br(e.color??"#ffffff"),shading:e.material??"lit",shininess:e.shininess??32,roughness:e.roughness,metallic:e.metallic},I&&h.indices.length>0){let N=h.build("extrude-side");N.materialName="extrude-side-material",x.push(N),w["extrude-side-material"]={name:"extrude-side-material",diffuseColor:br(e.bevelColor??e.color??"#ffffff"),shading:e.material??"lit",shininess:e.shininess??32,roughness:e.roughness,metallic:e.metallic}}return Va("extrude",x,w)}function kc(e,t){let r=typeof e.points=="string"?La(e.points,{tolerance:.25})[0]??[]:e.points.map(To);if(r.length<2)return;let n=r.map(f=>({x:Math.max(0,f.x),y:f.y})),o=n.length>=3&&Math.hypot(n[n.length-1].x-n[0].x,n[n.length-1].y-n[0].y)<1e-4;o?Vt(n)<0&&n.reverse():n[0].y>n[n.length-1].y&&n.reverse();let A=Math.max(3,Math.round(e.segments??32)),i=(e.phiStart??0)*Math.PI/180,a=(e.phiLength??360)*Math.PI/180,s=n.length,c=[],l=[],u=0;for(let f=0;f<s-1;f++){let d=n[f],h=n[f+1],I=h.x-d.x,b=h.y-d.y,D=Math.hypot(I,b);c.push(D),u+=D,l.push(D>1e-8?{x:b/D,y:-I/D}:{x:1,y:0})}let g=[0],p=0;for(let f of c)p+=f,g.push(u>0?p/u:0);if(e.flatShaded)for(let f=0;f<s-1;f++){let d=n[f],h=n[f+1],I=l[f];for(let b=0;b<A;b++){let D=i+b/A*a,m=i+(b+1)/A*a,x=(D+m)/2,w=$e([I.x*Math.cos(x),I.y,I.x*Math.sin(x)]),S=Math.cos(D),N=Math.sin(D),M=Math.cos(m),G=Math.sin(m),j=t.positions.length/3;t.vertex([d.x*S,d.y,d.x*N],w,[b/A,g[f]]),t.vertex([d.x*M,d.y,d.x*G],w,[(b+1)/A,g[f]]),t.vertex([h.x*S,h.y,h.x*N],w,[b/A,g[f+1]]),t.vertex([h.x*M,h.y,h.x*G],w,[(b+1)/A,g[f+1]]),t.indices.push(j,j+2,j+1,j+1,j+2,j+3)}}else{let f=(h,I)=>{if(h.x*I.x+h.y*I.y<Oa)return h;let b=h.x+I.x,D=h.y+I.y,m=Math.hypot(b,D);return m>1e-8?{x:b/m,y:D/m}:h},d=(h,I,b)=>{for(let D=0;D<=A;D++){let m=i+D/A*a,x=Math.cos(m),w=Math.sin(m),S=h.x<=1e-5&&Math.abs(I.y)>1e-5?[0,I.y<0?-1:1,0]:$e([I.x*x,I.y,I.x*w]);t.vertex([h.x*x,h.y,h.x*w],S,[D/A,b])}};for(let h=0;h<s-1;h++){let I=n[h],b=n[h+1],D=l[h],m=h>0?l[h-1]:o?l[s-2]:D,x=h+1<s-1?l[h+1]:o?l[0]:D,w=f(D,m),S=f(D,x),N=t.positions.length/3;d(I,w,g[h]),d(b,S,g[h+1]),t.grid(N,A,1,!1)}}if((e.capped??e.closed)&&!o){let f=n[0],d=n[s-1];for(let[h,I]of[[f,-1],[d,1]]){if(h.x<=1e-5)continue;let b=t.vertex([0,h.y,0],[0,I,0],[.5,.5]),D=t.positions.length/3;for(let m=0;m<=A;m++){let x=i+m/A*a,w=Math.cos(x),S=Math.sin(x);t.vertex([h.x*w,h.y,h.x*S],[0,I,0],[(w+1)/2,(S+1)/2])}for(let m=0;m<A;m++)I<0?t.indices.push(b,D+m,D+m+1):t.indices.push(b,D+m+1,D+m)}}}function Ha(e,t=!1){if(Array.isArray(e)){if(e.length<2)throw new Error("3D path requires at least 2 points");return gr.catmullRom(e,{closed:t})}return e.kind==="catmullRom"?gr.catmullRom(e.points,{tension:e.tension,closed:e.closed??t,samplesPerSegment:e.samplesPerSegment}):e.kind==="bezier"?gr.bezier(e.segments,e.samplesPerSegment):e.kind==="helix"?gr.helix({center:e.center??[0,0,0],radius:e.radius,pitch:e.pitch,turns:e.turns,axis:e.axis,samplesPerTurn:e.samplesPerTurn}):gr.circle({center:e.center??[0,0,0],radius:e.radius,startAngleDeg:e.startAngleDeg,endAngleDeg:e.endAngleDeg,samples:e.samples})}function Nc(e,t){let r=e.closed??(!Array.isArray(e.path)&&e.path.kind==="catmullRom"&&!!e.path.closed),n=Ha(e.path,r),o=Math.max(2,Math.round(e.tubularSegments??64)),A=Math.max(3,Math.round(e.radialSegments??16)),i=Math.max(.001,e.radius??12),a=e.radiusTaper?Math.max(0,e.radiusTaper[0]):i,s=e.radiusTaper?Math.max(0,e.radiusTaper[1]):i,c=Math.max(0,Math.min(i-.001,e.innerRadius??0)),l=e.capped??!0,u=[];for(let p=0;p<=o;p++)u.push(n.getPointAt(p/o));let g=t.positions.length/3;for(let p=0;p<=o;p++){let f=p/o,d=a+(s-a)*f,h=u[p],[I,b,D]=h.position,[m,x,w]=h.normal,[S,N,M]=h.binormal;for(let G=0;G<=A;G++){let j=G/A,R=j*Math.PI*2,K=Math.cos(R),z=Math.sin(R),J=K*m+z*S,W=K*x+z*N,X=K*w+z*M;t.vertex([I+d*J,b+d*W,D+d*X],$e([J,W,X]),[f,j])}}if(t.grid(g,A,o,!0),c>1e-6){let p=c/i,f=t.positions.length/3;for(let d=0;d<=o;d++){let h=d/o,I=(a+(s-a)*h)*p,b=u[d],[D,m,x]=b.position,[w,S,N]=b.normal,[M,G,j]=b.binormal;for(let R=0;R<=A;R++){let K=R/A,z=K*Math.PI*2,J=Math.cos(z),W=Math.sin(z),X=J*w+W*M,Ae=J*S+W*G,re=J*N+W*j;t.vertex([D+I*X,m+I*Ae,x+I*re],$e([-X,-Ae,-re]),[h,K])}}if(t.grid(f,A,o,!1),!r&&l)for(let[d,h]of[[0,-1],[o,1]]){let I=d/o,b=a+(s-a)*I,D=b*p,m=u[d],[x,w,S]=m.position,[N,M,G]=m.normal,[j,R,K]=m.binormal,z=$e([m.tangent[0]*h,m.tangent[1]*h,m.tangent[2]*h]),J=t.positions.length/3;for(let W of[D,b])for(let X=0;X<=A;X++){let Ae=X/A*Math.PI*2,re=Math.cos(Ae),oe=Math.sin(Ae),ne=re*N+oe*j,ie=re*M+oe*R,he=re*G+oe*K;t.vertex([x+W*ne,w+W*ie,S+W*he],z,[(re*(W/b)+1)/2,(oe*(W/b)+1)/2])}t.grid(J,A,1,h<0)}}else if(!r&&l)for(let[p,f]of[[0,-1],[o,1]]){let d=p/o,h=a+(s-a)*d;if(h<=1e-6)continue;let I=u[p],[b,D,m]=I.position,[x,w,S]=I.normal,[N,M,G]=I.binormal,j=$e([I.tangent[0]*f,I.tangent[1]*f,I.tangent[2]*f]),R=t.vertex([b,D,m],j,[.5,.5]),K=t.positions.length/3;for(let z=0;z<=A;z++){let J=z/A*Math.PI*2,W=Math.cos(J),X=Math.sin(J),Ae=W*x+X*N,re=W*w+X*M,oe=W*S+X*G;t.vertex([b+h*Ae,D+h*re,m+h*oe],j,[(W+1)/2,(X+1)/2])}for(let z=0;z<A;z++)f>0?t.indices.push(R,K+z,K+z+1):t.indices.push(R,K+z+1,K+z)}}function ja(e){if(Array.isArray(e))return e;let t=Ha(e),r=96,n=[];for(let o=0;o<=r;o++)n.push(t.getPointAt(o/r).position);return n}function Tc(e,t){t.topology="line-list";let r=ja(e.points);if(r.length<2)return;let n=e.colors?.map(A=>br(A)),o=e.mode??"strip";if(e.dashSize&&e.dashSize>0&&o==="strip"){let A=e.dashSize,i=e.gapSize??A,a=A+i,s=e.closed?[...r,r[0]]:r,c=0;for(let l=0;l<s.length-1;l++){let u=s[l],g=s[l+1],p=Math.hypot(g[0]-u[0],g[1]-u[1],g[2]-u[2]);if(p<1e-6)continue;let f=[(g[0]-u[0])/p,(g[1]-u[1])/p,(g[2]-u[2])/p],d=n?.[l%n.length],h=0;for(;h<p;){let I=(c+h)%a;if(I<A){let b=Math.min(A-I,p-h),D=[u[0]+f[0]*h,u[1]+f[1]*h,u[2]+f[2]*h],m=[u[0]+f[0]*(h+b),u[1]+f[1]*(h+b),u[2]+f[2]*(h+b)],x=t.vertex(D,[0,-1,0],[0,0],d),w=t.vertex(m,[0,-1,0],[1,0],d);t.indices.push(x,w),h+=b}else h+=a-I}c+=p}return}for(let A=0;A<r.length;A++){let i=r.length>1?A/(r.length-1):0;t.vertex(r[A],[0,-1,0],[i,0],n?n[A%n.length]:void 0)}if(o==="segments")for(let A=0;A+1<r.length;A+=2)t.indices.push(A,A+1);else{for(let A=0;A<r.length-1;A++)t.indices.push(A,A+1);e.closed&&r.length>=3&&t.indices.push(r.length-1,0)}}function Lc(e,t){let r=ja(e.points);if(r.length===0)return;let n=e.colors?.map(A=>br(A)),o=e.pointSize??0;if(o>0){let A=new $r;Ta({type:"polyhedron",shape:"icosphere",radius:o,detail:1,flatShaded:!1},A);let i=A.positions.length/3;for(let a=0;a<r.length;a++){let[s,c,l]=r[a],u=n?n[a%n.length]:void 0,g=t.positions.length/3;for(let p=0;p<i;p++)t.vertex([s+A.positions[p*3],c+A.positions[p*3+1],l+A.positions[p*3+2]],[A.normals[p*3],A.normals[p*3+1],A.normals[p*3+2]],[A.uvs[p*2],A.uvs[p*2+1]],u);for(let p of A.indices)t.indices.push(g+p)}return}t.topology="point-list";for(let A=0;A<r.length;A++){let i=r.length>1?A/(r.length-1):0,a=t.vertex(r[A],[0,-1,0],[i,0],n?n[A%n.length]:void 0);t.indices.push(a)}}function Oc(e,t){let r=e.radius??50,n=(e.size?e.size[0]:r)||50,o=(e.size?e.size[1]:r)||50,A=(e.size?e.size[2]:r)||50,i=Math.max(n,o,A),a=Math.max(4,Math.min(64,Math.round(e.facets??14))),s=Math.round(e.seed??1)>>>0,c=Math.max(0,Math.min(.85,e.irregularity??.35)),l=BigInt(s)*6364136223846793005n+1442695040888963407n,u=()=>{l=l*6364136223846793005n+1442695040888963407n;let x=Number((l>>18n^l)>>27n)>>>0,w=Number(l>>59n)>>>0;return((x>>>w|x<<(32-w&31))>>>0)/4294967296},g=[[[-n,-o,-A],[n,-o,-A],[n,o,-A],[-n,o,-A]],[[n,-o,A],[-n,-o,A],[-n,o,A],[n,o,A]],[[-n,-o,A],[-n,-o,-A],[-n,o,-A],[-n,o,A]],[[n,-o,-A],[n,-o,A],[n,o,A],[n,o,-A]],[[-n,-o,A],[n,-o,A],[n,-o,-A],[-n,-o,-A]],[[-n,o,-A],[n,o,-A],[n,o,A],[-n,o,A]]],p=(1+Math.sqrt(5))/2;for(let x=0;x<a;x++){let w=2*Math.PI*x/p+(u()-.5)*.4,S=1-2*(x+.5)/a,N=Math.sqrt(Math.max(0,1-S*S)),M=[Math.cos(w)*N,Math.sin(w)*N,S];M[0]+=(u()-.5)*.2,M[1]+=(u()-.5)*.2,M[2]+=(u()-.5)*.2;let G=Math.hypot(M[0],M[1],M[2]);if(G<1e-6)continue;M=[M[0]/G,M[1]/G,M[2]/G];let R=Math.hypot(M[0]*n,M[1]*o,M[2]*A)*(1-c*(.2+.8*u())),K=[],z=[];for(let J of g){let W=[],X=J.length;for(let Ae=0;Ae<X;Ae++){let re=J[Ae],oe=J[(Ae+1)%X],ne=wt(M,re)-R,ie=wt(M,oe)-R;if(ne<=1e-5&&W.push(re),ne>1e-5&&ie<-1e-5||ne<-1e-5&&ie>1e-5){let he=ne/(ne-ie),F=[re[0]+(oe[0]-re[0])*he,re[1]+(oe[1]-re[1])*he,re[2]+(oe[2]-re[2])*he];W.push(F),z.push(F)}}W.length>=3&&K.push(W)}if(z.length>=3){let J=[];for(let W of z){let X=!1;for(let Ae of J)if(Math.hypot(W[0]-Ae[0],W[1]-Ae[1],W[2]-Ae[2])<.001){X=!0;break}X||J.push(W)}if(J.length>=3){let W=0,X=0,Ae=0;for(let he of J)W+=he[0],X+=he[1],Ae+=he[2];let re=[W/J.length,X/J.length,Ae/J.length],oe=Math.abs(M[1])<.9?[0,1,0]:[1,0,0],ne=$e(Er(oe,M)),ie=Er(M,ne);J.sort((he,F)=>{let Be=Math.atan2(wt(It(he,re),ie),wt(It(he,re),ne)),Se=Math.atan2(wt(It(F,re),ie),wt(It(F,re),ne));return Be-Se}),K.push(J)}}K.length>=4&&(g=K)}let f=Number.POSITIVE_INFINITY,d=Number.POSITIVE_INFINITY,h=Number.POSITIVE_INFINITY,I=Number.NEGATIVE_INFINITY,b=Number.NEGATIVE_INFINITY,D=Number.NEGATIVE_INFINITY;for(let x of g)for(let w of x)w[0]<f&&(f=w[0]),w[0]>I&&(I=w[0]),w[1]<d&&(d=w[1]),w[1]>b&&(b=w[1]),w[2]<h&&(h=w[2]),w[2]>D&&(D=w[2]);let m=[(f+I)/2,(d+b)/2,(h+D)/2];for(let x of g)for(let w=0;w<x.length;w++){let S=x[w];x[w]=[S[0]-m[0],S[1]-m[1],S[2]-m[2]]}for(let x of g){if(x.length<3)continue;let w=[0,0,0];for(let z=0;z<x.length;z++){let J=x[z],W=x[(z+1)%x.length];w[0]+=(J[1]-W[1])*(J[2]+W[2]),w[1]+=(J[2]-W[2])*(J[0]+W[0]),w[2]+=(J[0]-W[0])*(J[1]+W[1])}let S=Math.hypot(w[0],w[1],w[2]);if(S<1e-6)continue;w=[w[0]/S,w[1]/S,w[2]/S];let N=[x.reduce((z,J)=>z+J[0],0)/x.length,x.reduce((z,J)=>z+J[1],0)/x.length,x.reduce((z,J)=>z+J[2],0)/x.length];wt(w,N)<0&&(x.reverse(),w=[-w[0],-w[1],-w[2]]);let M=Math.abs(w[1])<.9?[0,1,0]:[1,0,0],G=$e(Er(M,w)),j=Er(w,G),R=x.map(z=>[.5+wt(z,G)/(2*i),.5+wt(z,j)/(2*i)]),K=t.positions.length/3;for(let z=0;z<x.length;z++)t.vertex(x[z],w,R[z]);for(let z=1;z<x.length-1;z++)t.indices.push(K,K+z,K+z+1)}}function Va(e,t,r){let n=[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY],o=[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY];for(let i of t){let a=i.positions;for(let s=0;s<a.length;s+=3)for(let c=0;c<3;c++){let l=a[s+c];l<n[c]&&(n[c]=l),l>o[c]&&(o[c]=l)}}Number.isFinite(n[0])||(n[0]=n[1]=n[2]=0,o[0]=o[1]=o[2]=0);let A=[o[0]-n[0],o[1]-n[1],o[2]-n[2]];return{name:`primitive-${e}`,meshes:t,materials:r,animations:[],bounds:{min:n,max:o,center:[(n[0]+o[0])/2,(n[1]+o[1])/2,(n[2]+o[2])/2],size:A,boundingSphereRadius:Math.hypot(...A)/2}}}function Hc(e){if(e.type==="extrude")return Uc(e);let t=new $r;if(e.type==="roundedBox")_c(e,t);else if(e.type==="sphere")Mc(e,t);else if(e.type==="cylinder")Sc(e,t);else if(e.type==="torus")Pc(e,t);else if(e.type==="capsule")Gc(e,t);else if(e.type==="ring")Rc(e,t);else if(e.type==="polyhedron")Ta(e,t);else if(e.type==="lathe")kc(e,t);else if(e.type==="tube")Nc(e,t);else if(e.type==="line3d")Tc(e,t);else if(e.type==="points3d")Lc(e,t);else if(e.type==="shard")Oc(e,t);else throw new Error(`Unknown 3D primitive: ${e.type}`);let r=e.type,n=t.build(r),o=e.type==="line3d"||e.type==="points3d"&&(e.pointSize??0)<=0?"unlit":"lit",A={name:`${r}-material`,diffuseColor:br(e.color??"#ffffff"),shading:e.material??o,shininess:e.shininess??32,roughness:e.roughness,metallic:e.metallic};return Va(r,[n],{[A.name]:A})}var No=new Map;function Bf(e){let t=JSON.stringify(e),r=No.get(t);return r||(r=Hc(e),No.size>512&&No.clear(),No.set(t,r)),r}var BA=new Map;function jc(e,t){return JSON.stringify({text:e,...t})}function bA(e,t){let r=e?String(e):" ",n=jc(r,t),o=BA.get(n);if(o)return o;let A=t.fontSize??48,i=t.fontFamily??"Inter";ur.isFailed(i)&&(i="Inter");let a=t.letterSpacing??0,s=t.lineHeight!==void 0&&t.lineHeight<10?t.lineHeight*A:t.lineHeight??A*1.2,c=ur.getFont(i,t.fontWeight,null,void 0,A),l=t.padding??0;if(!c){ur.isFailed(i)||ur.preloadSlugFont(null,i,Jo(i)).catch(()=>{});let p=r.split(`
2461
+ `),f=0,d=t.width!==void 0?Math.max(10,t.width-l*2):0;for(let b of p)if(d>0){let D=b.length*A*.55+a*b.length,m=Math.max(1,Math.ceil(D/d));f+=m}else f+=1;let h=Math.max(0,r.length-1),I={width:t.width!==void 0?t.width:Math.ceil(r.length*A*.6+a*h)+l*2,height:t.height!==void 0?t.height:Math.ceil(f*s)+l*2};return BA.set(n,I),I}let u=Fi.measure(r,c,A,a,s,t.width!==void 0?Math.max(0,t.width-l*2):void 0,t.spans,t.direction),g={width:t.width!==void 0&&!t.keepNaturalWidth?t.width:Math.ceil(u.width)+l*2,height:t.height!==void 0?t.height:Math.ceil(u.height)+l*2};return BA.set(n,g),g}function Qf(e,t){let r=t.fontFamily??"Inter";return ur.isFailed(r)&&(r="Inter"),ur.isFailed(r)?Promise.resolve(bA(e,t)):ur.preloadSlugFont(null,r,Jo(r)).then(()=>bA(e,t)).catch(()=>bA(e,t))}$();$();$();var Vc=(()=>{var e=import.meta.url;return(function(t){t=t||{};var r;r||(r=typeof t<"u"?t:{});var n,o;r.ready=new Promise(function(C,Q){n=C,o=Q});var A=Object.assign({},r),i="";typeof document<"u"&&document.currentScript&&(i=document.currentScript.src),e&&(i=e),i.indexOf("blob:")!==0?i=i.substr(0,i.replace(/[?#].*/,"").lastIndexOf("/")+1):i="";var a=r.print||console.log.bind(console),s=r.printErr||console.warn.bind(console);Object.assign(r,A),A=null;var c;r.wasmBinary&&(c=r.wasmBinary);var l=r.noExitRuntime||!0;typeof WebAssembly!="object"&&W("no native wasm support detected");var u,g=!1;function p(C,Q,k){k=Q+k;for(var V="";!(Q>=k);){var q=C[Q++];if(!q)break;if(q&128){var te=C[Q++]&63;if((q&224)==192)V+=String.fromCharCode((q&31)<<6|te);else{var ae=C[Q++]&63;q=(q&240)==224?(q&15)<<12|te<<6|ae:(q&7)<<18|te<<12|ae<<6|C[Q++]&63,65536>q?V+=String.fromCharCode(q):(q-=65536,V+=String.fromCharCode(55296|q>>10,56320|q&1023))}}else V+=String.fromCharCode(q)}return V}var f,d,h,I,b,D,m,x,w;function S(){var C=u.buffer;f=C,r.HEAP8=d=new Int8Array(C),r.HEAP16=I=new Int16Array(C),r.HEAP32=D=new Int32Array(C),r.HEAPU8=h=new Uint8Array(C),r.HEAPU16=b=new Uint16Array(C),r.HEAPU32=m=new Uint32Array(C),r.HEAPF32=x=new Float32Array(C),r.HEAPF64=w=new Float64Array(C)}var N,M=[],G=[],j=[];function R(){var C=r.preRun.shift();M.unshift(C)}var K=0,z=null,J=null;function W(C){throw r.onAbort&&r.onAbort(C),C="Aborted("+C+")",s(C),g=!0,C=new WebAssembly.RuntimeError(C+". Build with -sASSERTIONS for more info."),o(C),C}function X(C){return C.startsWith("data:application/octet-stream;base64,")}var Ae;if(Ae="data:application/octet-stream;base64,AGFzbQEAAAABugM3YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWADf398AGAAAGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAV/f39/fwBgAn9/AX1gBX9/f319AX1gAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBn9/f319fQF9YAR/f31/AGADf399AX1gBn98f39/fwF/YAR/fHx/AGACf30AYAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38BfGAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gB39/f319f38AYAJ+fwF/YAN/fX0BfWABfAF8YAN/fHwAYAR/f319AGAHf39/fX19fQF9YA1/fX99f31/fX19fX1/AX9gC39/f39/f399fX19AX9gCH9/f39/f319AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfGAEf39/fABgA39/fQBgBn9/fX99fwF/ArUBHgFhAWEAHwFhAWIAAwFhAWMACQFhAWQAFgFhAWUAEQFhAWYAIAFhAWcAAAFhAWgAIQFhAWkAAwFhAWoAAAFhAWsAFwFhAWwACgFhAW0ABQFhAW4AAwFhAW8AAQFhAXAAFwFhAXEABgFhAXIAAAFhAXMAIgFhAXQACgFhAXUADQFhAXYAFgFhAXcAAgFhAXgAAwFhAXkAGAFhAXoAAgFhAUEAAQFhAUIAEQFhAUMAAQFhAUQAAAOiAqACAgMSBwcACRkDAAoRBgYKEwAPDxMBBiMTCgcHGgMUASQFJRQHAwMKCgMmAQYYDxobFAAKBw8KBwMDAgkCAAAFGwACBwIHBgIDAQMIDAABKAkHBQURACkZASoAAAIrLAIALQcHBy4HLwkFCgMCMA0xAgMJAgACAQYKAQIBBQEACQIFAQEABQAODQ0GFQIBHBUGAgkCEAAAAAUyDzMMBQYINAUCAwUODg41AgMCAgIDBgICNgIBDAwMAQsLCwsLCx0CAAIAAAABABABBQICAQMCEgMMCwEBAQEBAQsLAQICAwICAgICAgIDAgIICAEICAgEBAQEBAQEBAQABAQABAQEBAAE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GiABQQA2AvADIAFCADcC6AMgAigC7AMiAyACKALoAyIERwRAIAMgBGsiBEEASA0FIAEgBBAeIgM2AuwDIAEgAzYC6AMgASADIARqNgLwAyACKALoAyIEIAIoAuwDIghHBEADQCADIAQoAgA2AgAgA0EEaiEDIARBBGoiBCAIRw0ACwsgASADNgLsAwsgASACKQL0AzcC9AMgASACKAKEBDYChAQgASACKQL8AzcC/AMgAUEANgLkAwsgBSABNgIAIAEgADYC5AMLIAZBAWohBiAFQQRqIgUgB0cNAAsLDwsQAgALUAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUEwahBDDwsgACABIAFBMGogAxBEDwsgACABIAFBMGoQQg8LECQACyAAIAEgAUEwaiADEEULcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QdwlaigCACACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt5AgF/AX0jAEEQayIDJAAgA0EIaiAAIAFBAnRB7CVqKAIAIAIQU0MAAMB/IQQCQAJAAkAgAy0ADEEBaw4CAAECCyADKgIIIQQMAQsgAyoCCEMAAAAAlEMK1yM8lCEECyADQRBqJAAgBEMAAAAAl0MAAAAAIAQgBFsbC1QAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBwgBqEEMPCyAAIAEgAUHCAGogAxBEDwsgACABIAFBwgBqEEIPCxAkAAsgACABIAFBwgBqIAMQRQsvACAAIAJFQQF0IgIgASADEGAgACACIAEQS5IgACACIAEgAxB/IAAgAiABEFKSkgvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akH2AGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyADQRBqJAALzgECA38CfSMAQRBrIgMk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AWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwscACAAIAFBCCACpyACQiCIpyADpyADQiCIpxAVCwUAEFgACzkAIABFBEBBAA8LAn8gAUGAf3FBgL8DRiABQf8ATXJFBEBB/DtBGTYCAEF/DAELIAAgAToAAEEBCwvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAQALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQegAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQOQNAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAuQDIgANAAsLIANBEGokAAtdAQR/IAAoAgAhAgNAIAIsAAAiAxBXBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFIAQLIQEMAQsLIAELrhQCEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRQCQAJAAkACQANAIAEhDSAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCANIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAH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IQEgAEIANwIEIAAgATYCACABIAA2AgQgAkEQaiQAIAALGwEBfyAABEAgACgCACIBBEAgARAjCyAAECMLC0kBAn9BBBAeIQFBIBAeIgBBADYCHCAAQoCAgICAgIDAPzcCFCAAQgA3AgwgAEEAOgAIIABBAzYCBCAAQQA2AgAgASAANgIAIAELIAAgAkEFR0EAIAIbRQRAQbgwIAMgBBBJDwsgAyAEEHALIgEBfiABIAKtIAOtQiCGhCAEIAARFQAiBUIgiKckASAFpwuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACCwQAQgALBABBAAuKBQIGfgJ/IAEgASgCAEEHakF4cSIBQRBqNgIAIAAhCSABKQMAIQMgASkDCCEGIwBBIGsiCCQAAkAgBkL///////////8AgyIEQoCAgICAgMCAPH0gBEKAgICAgIDA/8MAfVQEQCAGQgSGIANCPIiEIQQgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhAgwCCyAEQoCAgICAgICAQH0hAiADQoCAgICAgICACFINASACIARCAYN8IQIMAQsgA1AgBEKAgICAgIDA//8AVCAEQoCAgICAgMD//wBRG0UEQCAGQgSGIANCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiAEQv///////7//wwBWDQBCACECIARCMIinIgBBkfcASQ0AIAMhAiAGQv///////z+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCACIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAF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ASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCAALCQAgASAAEQIACwUAQcM7Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAqCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRHgALBQBBvjsLIQAgACABKAIAIAEgASwAC0EASBtBuzsgAigCABAQNgIACyoBAX9BDBAeIgFBADoABCABIAAoAgA2AgggAEEANgIAIAFB2Cc2AgAgAQsFAEG7OwsFAEG4OwshACAAIAEoAgAgASABLAALQQBIG0GkOyACKAIAEBA2AgAL2AEBBH8jAEEgayIDJAAgASgCACIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIFEB4hBiADIAVBgICAgHhyNgIQIAMgBjYCCCADIAQ2AgwgBCAGaiEFDAELIAMgBDoAEyADQQhqIgYgBGohBSAERQ0BCyAGIAFBBGogBBArGgsgBUEAOgAAIAMgAjYCACADQRhqIANBCGogAyAAEQMAIAMoAhgQHSADKAIYIgAQBiADKAIAEAYgAywAE0EASARAIAMoAggQIwsgA0EgaiQAIAAPCxACAAsqAQF/QQwQHiIBQQA6AAQgASAAKAIANgIIIABBADYCACABQeAmNgIA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AkEIaiAIIAYQHyACIAcgAC8AABAfQQEhAyACKgIIIgogAioCACILXAR/IAogClsNAyALIAtcBSADC0UNAiACLQAMIAItAARHDQILIABBAmohAEEBIQMgBCEGQQEhBCAGRQ0ACyABLwB6IgBBB3FFBEAgBS0AekEHcUUNAgsgCCAAECAiCiAHIAUvAHoQICILWw0BIAogClsNACALIAtcDQELIAFBFGogBUEUakHoABArGiABQfwAaiAFQfwAahCgAQNAIAEtAAAiAEEEcQ0BIAEgAEEEcjoAACABKAIQIgAEQCABIAARAAALIAFBgICA/gc2ApwBIAEoAuQDIgENAAsLIAJBEGokAAvGAwEEfyMAQaAEayICJAAgACgCBCEBIABBADYCBCABBEAgASABKAIAKAIEEQAACyAAKAIIIQEgAEEANgIIIAEEQCABIAEoAgAoAgQRAAALAkAgACgCACIAKALoAyAAKALsA0YEQCAAKALkAw0BIAAgAkEYaiAAKAL0AxBcIgEpAgA3AgAgACABKAIQNgIQIAAgASkCCDcCCCAAQRRqIAFBFGpB6AAQKxogACABKQKMATcCjAEgACABKQKEATcChAEgACABKQJ8NwJ8IAEoApQBIQQgAUEANgKUASAAKAKUASEDIAAgBDYClAEgAwRAIAMQWwsgAEGYAWogAUGYAWpB0AIQKxogACgC6AMiAwRAIAAgAzYC7AMgAxAjCyAAIAEoAugDNgLoAyAAIAEoAuwDNgLsAyAAIAEoAvADNgLwAyABQQA2AvADIAFCADcC6AMgACABKQL8AzcC/AMgACABKQL0AzcC9AMgACABKAKEBDYChAQgASgClAEhACABQQA2ApQBIAAEQCAAEFsLIAJBoARqJAAPCyACQfAcNgIQIABBBUHYJSACQRBqECwQJAALIAJB5hE2AgAgAEEFQdglIAIQLBAkAAsLAEEMEB4gABCiAQsLAEEMEB5BABCiAQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhQLGQAgAUH/AXEEQBACAAsgACgCACgCEEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLJgAgASAAKAIAIgAoAhRHBEAgACABNgIUIAAgACgCDEEBajYCDAsLkgEBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGAEQCABIAAqAhhcBEAgACABOAIYIAAgACgCDEEBajYCDAsgAkEQaiQADwsgAkGIFDYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQbgwQdglIAIQSRoMAQsgAEEAQQVB2CUgAiAAKAIEEQ0AGgsgA0EQaiQAECQACz8AIAFB/wFxRQRAIAIgACgCACIAKAIQIgFBAXFHBEAgACABQX5xIAJyNgIQIAAgACgCDEEBajYCDAsPCxACAAsL4CYjAEGACAuBHk9ubHkgbGVhZiBub2RlcyB3aXRoIGN1c3RvbSBtZWFzdXJlIGZ1bmN0aW9ucyBzaG91bGQgbWFudWFsbHkgbWFyayB0aGVtc2VsdmVzIGFzIGRpcnR5AGlzRGlydHkAbWFya0RpcnR5AGRlc3Ryb3kAc2V0RGlzcGxheQBnZXREaXNwbGF5AHNldEZsZXgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABzZXRGbGV4R3JvdwBnZXRGbGV4R3JvdwBzZXRPdmVyZmxvdwBnZXRPdmVyZmxvdwBoYXNOZXdMYXlvdXQAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodFNpemluZ01vZGUgbXVzdCBiZSBTaXppbmdNb2RlOjpNYXhDb250ZW50AGF2YWlsYWJsZVdpZHRoIGlzIGluZGVmaW5pdGUgc28gd2lkdGhTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABzZXRBbGlnbkNvbnRlbnQAZ2V0QWxpZ25Db250ZW50AGdldFBhcmVudABpbXBsZW1lbnQAc2V0TWF4SGVpZ2h0UGVyY2VudABzZXRIZWlnaHRQZXJjZW50AHNldE1pbkhlaWdodFBlcmNlbnQAc2V0RmxleEJhc2lzUGVyY2VudABzZXRHYXBQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6UG9pbnQgfHwgaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHNldFBvaW50U2NhbGVGYWN0b3IATWVhc3VyZUNhbGxiYWNrV3JhcHBlcgBEaXJ0aWVkQ2FsbGJhY2tXcmFwcGVyAENhbm5vdCByZXNldCBhIG5vZGUgc3RpbGwgYXR0YWNoZWQgdG8gYSBvd25lcgBzZXRCb3JkZXIAZ2V0Qm9yZGVyAGdldENvbXB1dGVkQm9yZGVyAGdldE51bWJlcgBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6Ok51bWJlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRQb3NpdGlvbkF1dG8Ac2V0TWFyZ2luQXV0bwBzZXRXaWR0aEF1dG8AU2NhbGUgZmFjdG9yIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHplcm8Ac2V0QXNwZWN0UmF0aW8AZ2V0QXNwZWN0UmF0aW8Ac2V0UG9zaXRpb24AZ2V0UG9zaXRpb24Abm90aWZ5T25EZXN0cnVjdGlvbgBzZXRGbGV4RGlyZWN0aW9uAGdldEZsZXhEaXJlY3Rpb24Ac2V0RGlyZWN0aW9uAGdldERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG1hcmtMYXlvdXRTZWVuAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAHNldEFsd2F5c0Zvcm1zQ29udGFpbmluZ0Jsb2NrAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAZ2V0TGVuZ3RoAHdpZHRoAHNldE1heFdpZHRoAGdldE1heFdpZHRoAHNldFdpZHRoAGdldFdpZHRoAHNldE1pbldpZHRoAGdldE1pbldpZHRoAGdldENvbXB1dGVkV2lkdGgAcHVzaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1NtYWxsVmFsdWVCdWZmZXIuaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1N0eWxlVmFsdWVQb29sLmgAdW5zaWduZWQgbG9uZwBzZXRCb3hTaXppbmcAZ2V0Qm94U2l6aW5nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEATWVhc3VyZSBmdW5jdGlvbiByZXR1cm5lZCBhbiBpbnZhbGlkIGRpbWVuc2lvbiB0byBZb2dhOiBbd2lkdGg9JWYsIGhlaWdodD0lZl0ARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVk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",!X(Ae)){var re=Ae;Ae=r.locateFile?r.locateFile(re,i):i+re}function oe(){var C=Ae;try{if(C==Ae&&c)return new Uint8Array(c);if(X(C))try{var Q=Ur(C.slice(37)),k=new Uint8Array(Q.length);for(C=0;C<Q.length;++C)k[C]=Q.charCodeAt(C);var V=k}catch{throw Error("Converting base64 string to bytes failed.")}else V=void 0;var q=V;if(q)return q;throw"both async and sync fetching of the wasm failed"}catch(te){W(te)}}function ne(){return c||typeof fetch!="function"?Promise.resolve().then(function(){return oe()}):fetch(Ae,{credentials:"same-origin"}).then(function(C){if(!C.ok)throw"failed to load wasm binary file at '"+Ae+"'";return C.arrayBuffer()}).catch(function(){return oe()})}function ie(C){for(;0<C.length;)C.shift()(r)}function he(C){if(C===void 0)return"_unknown";C=C.replace(/[^a-zA-Z0-9_]/g,"$");var Q=C.charCodeAt(0);return 48<=Q&&57>=Q?"_"+C:C}function F(C,Q){return C=he(C),function(){return Q.apply(this,arguments)}}var Be=[{},{value:void 0},{value:null},{value:!0},{value:!1}],Se=[];function Pe(C){var Q=Error,k=F(C,function(V){this.name=C,this.message=V,V=Error(V).stack,V!==void 0&&(this.stack=this.toString()+`
2462
+ `+V.replace(/^Error(:[^\n]*)?\n/,""))});return k.prototype=Object.create(Q.prototype),k.prototype.constructor=k,k.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},k}var Ie=void 0;function y(C){throw new Ie(C)}var ye=C=>(C||y("Cannot use deleted val. handle = "+C),Be[C].value),Qe=C=>{switch(C){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var Q=Se.length?Se.pop():Be.length;return Be[Q]={ga:1,value:C},Q}},xe=void 0,le=void 0;function ge(C){for(var Q="";h[C];)Q+=le[h[C++]];return Q}var be=[];function we(){for(;be.length;){var C=be.pop();C.M.$=!1,C.delete()}}var Me=void 0,Ge={};function Ue(C,Q){for(Q===void 0&&y("ptr should not be undefined");C.R;)Q=C.ba(Q),C=C.R;return Q}var _e={};function He(C){C=ar(C);var Q=ge(C);return st(C),Q}function Te(C,Q){var k=_e[C];return k===void 0&&y(Q+" has unknown type "+He(C)),k}function je(){}var Le=!1;function Je(C){--C.count.value,C.count.value===0&&(C.T?C.U.W(C.T):C.P.N.W(C.O))}function tt(C,Q,k){return Q===k?C:k.R===void 0?null:(C=tt(C,Q,k.R),C===null?null:k.na(C))}var qe={};function Bt(C,Q){return Q=Ue(C,Q),Ge[Q]}var ze=void 0;function Ve(C){throw new ze(C)}function bt(C,Q){return Q.P&&Q.O||Ve("makeClassHandle requires ptr and ptrType"),!!Q.U!=!!Q.T&&Ve("Both smartPtrType and smartPtr must be specified"),Q.count={value:1},ut(Object.create(C,{M:{value:Q}}))}function ut(C){return typeof FinalizationRegistry>"u"?(ut=Q=>Q,C):(Le=new FinalizationRegistry(Q=>{Je(Q.M)}),ut=Q=>{var k=Q.M;return k.T&&Le.register(Q,{M:k},Q),Q},je=Q=>{Le.unregister(Q)},ut(C))}var Et={};function gt(C){for(;C.length;){var Q=C.pop();C.pop()(Q)}}function Xe(C){return this.fromWireType(D[C>>2])}var ht={},Gt={};function pt(C,Q,k){function V(se){se=k(se),se.length!==C.length&&Ve("Mismatched type converter count");for(var pe=0;pe<C.length;++pe)it(C[pe],se[pe])}C.forEach(function(se){Gt[se]=Q});var q=Array(Q.length),te=[],ae=0;Q.forEach((se,pe)=>{_e.hasOwnProperty(se)?q[pe]=_e[se]:(te.push(se),ht.hasOwnProperty(se)||(ht[se]=[]),ht[se].push(()=>{q[pe]=_e[se],++ae,ae===te.length&&V(q)}))}),te.length===0&&V(q)}function Jt(C){switch(C){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+C)}}function it(C,Q,k={}){if(!("argPackAdvance"in Q))throw new TypeError("registerType registeredInstance requires argPackAdvance");var V=Q.name;if(C||y('type "'+V+'" must have a positive integer typeid pointer'),_e.hasOwnProperty(C)){if(k.ua)return;y("Cannot register type '"+V+"' twice")}_e[C]=Q,delete Gt[C],ht.hasOwnProperty(C)&&(Q=ht[C],delete ht[C],Q.forEach(q=>q()))}function Rt(C){y(C.M.P.N.name+" instance already deleted")}function ft(){}function vt(C,Q,k){if(C[Q].S===void 0){var V=C[Q];C[Q]=function(){return C[Q].S.hasOwnProperty(arguments.length)||y("Function '"+k+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+C[Q].S+")!"),C[Q].S[arguments.length].apply(this,arguments)},C[Q].S=[],C[Q].S[V.Z]=V}}function yr(C,Q){r.hasOwnProperty(C)?(y("Cannot register public name '"+C+"' twice"),vt(r,C,C),r.hasOwnProperty(void 0)&&y("Cannot register multiple overloads of a function with the same number of arguments (undefined)!"),r[C].S[void 0]=Q):r[C]=Q}function tr(C,Q,k,V,q,te,ae,se){this.name=C,this.constructor=Q,this.X=k,this.W=V,this.R=q,this.pa=te,this.ba=ae,this.na=se,this.ja=[]}function Ft(C,Q,k){for(;Q!==k;)Q.ba||y("Expected null or instance of "+k.name+", got an instance of "+Q.name),C=Q.ba(C),Q=Q.R;return C}function rr(C,Q){return Q===null?(this.ea&&y("null is not a valid "+this.name),0):(Q.M||y('Cannot pass "'+qt(Q)+'" as a '+this.name),Q.M.O||y("Cannot pass deleted object as a pointer of type "+this.name),Ft(Q.M.O,Q.M.P.N,this.N))}function yt(C,Q){if(Q===null){if(this.ea&&y("null is not a valid "+this.name),this.da){var k=this.fa();return C!==null&&C.push(this.W,k),k}return 0}if(Q.M||y('Cannot pass "'+qt(Q)+'" as a '+this.name),Q.M.O||y("Cannot pass deleted object as a pointer of type "+this.name),!this.ca&&Q.M.P.ca&&y("Cannot convert argument of type "+(Q.M.U?Q.M.U.name:Q.M.P.name)+" to parameter type "+this.name),k=Ft(Q.M.O,Q.M.P.N,this.N),this.da)switch(Q.M.T===void 0&&y("Passing raw pointer to smart pointer is illegal"),this.Ba){case 0:Q.M.U===this?k=Q.M.T:y("Cannot convert argument of type "+(Q.M.U?Q.M.U.name:Q.M.P.name)+" to parameter type "+this.name);break;case 1:k=Q.M.T;break;case 2:if(Q.M.U===this)k=Q.M.T;else{var V=Q.clone();k=this.xa(k,Qe(function(){V.delete()})),C!==null&&C.push(this.W,k)}break;default:y("Unsupporting sharing policy")}return k}function Cr(C,Q){return Q===null?(this.ea&&y("null is not a valid "+this.name),0):(Q.M||y('Cannot pass "'+qt(Q)+'" as a '+this.name),Q.M.O||y("Cannot pass deleted object as a pointer of type "+this.name),Q.M.P.ca&&y("Cannot convert argument of type "+Q.M.P.name+" to parameter type "+this.name),Ft(Q.M.O,Q.M.P.N,this.N))}function at(C,Q,k,V){this.name=C,this.N=Q,this.ea=k,this.ca=V,this.da=!1,this.W=this.xa=this.fa=this.ka=this.Ba=this.wa=void 0,Q.R!==void 0?this.toWireType=yt:(this.toWireType=V?rr:Cr,this.V=null)}function Kt(C,Q){r.hasOwnProperty(C)||Ve("Replacing nonexistant public symbol"),r[C]=Q,r[C].Z=void 0}function nr(C,Q){var k=[];return function(){if(k.length=0,Object.assign(k,arguments),C.includes("j")){var V=r["dynCall_"+C];V=k&&k.length?V.apply(null,[Q].concat(k)):V.call(null,Q)}else V=N.get(Q).apply(null,k);return V}}function ot(C,Q){C=ge(C);var k=C.includes("j")?nr(C,Q):N.get(Q);return typeof k!="function"&&y("unknown function pointer with signature "+C+": "+Q),k}var Ct=void 0;function Ut(C,Q){function k(te){q[te]||_e[te]||(Gt[te]?Gt[te].forEach(k):(V.push(te),q[te]=!0))}var V=[],q={};throw Q.forEach(k),new Ct(C+": "+V.map(He).join([", "]))}function zt(C,Q,k,V,q){var te=Q.length;2>te&&y("argTypes array size mismatch! Must at least get return value and 'this' types!");var ae=Q[1]!==null&&k!==null,se=!1;for(k=1;k<Q.length;++k)if(Q[k]!==null&&Q[k].V===void 0){se=!0;break}var pe=Q[0].name!=="void",ue=te-2,de=Array(ue),ve=[],Fe=[];return function(){if(arguments.length!==ue&&y("function "+C+" called with "+arguments.length+" arguments, expected "+ue+" args!"),Fe.length=0,ve.length=ae?2:1,ve[0]=q,ae){var Ke=Q[1].toWireType(Fe,this);ve[1]=Ke}for(var Ne=0;Ne<ue;++Ne)de[Ne]=Q[Ne+2].toWireType(Fe,arguments[Ne]),ve.push(de[Ne]);if(Ne=V.apply(null,ve),se)gt(Fe);else for(var et=ae?1:2;et<Q.length;et++){var At=et===1?Ke:de[et-2];Q[et].V!==null&&Q[et].V(At)}return Ke=pe?Q[0].fromWireType(Ne):void 0,Ke}}function Yt(C,Q){for(var k=[],V=0;V<C;V++)k.push(m[Q+4*V>>2]);return k}function Wt(C){4<C&&--Be[C].ga===0&&(Be[C]=void 0,Se.push(C))}function qt(C){if(C===null)return"null";var Q=typeof C;return Q==="object"||Q==="array"||Q==="function"?C.toString():""+C}function Qr(C,Q){switch(Q){case 2:return function(k){return this.fromWireType(x[k>>2])};case 3:return function(k){return this.fromWireType(w[k>>3])};default:throw new TypeError("Unknown float type: "+C)}}function xr(C,Q,k){switch(Q){case 0:return k?function(V){return d[V]}:function(V){return h[V]};case 1:return k?function(V){return I[V>>1]}:function(V){return b[V>>1]};case 2:return k?function(V){return D[V>>2]}:function(V){return m[V>>2]};default:throw new TypeError("Unknown integer type: "+C)}}function wr(C,Q){for(var k="",V=0;!(V>=Q/2);++V){var q=I[C+2*V>>1];if(q==0)break;k+=String.fromCharCode(q)}return k}function vr(C,Q,k){if(k===void 0&&(k=2147483647),2>k)return 0;k-=2;var V=Q;k=k<2*C.length?k/2:C.length;for(var q=0;q<k;++q)I[Q>>1]=C.charCodeAt(q),Q+=2;return I[Q>>1]=0,Q-V}function Dr(C){return 2*C.length}function _r(C,Q){for(var k=0,V="";!(k>=Q/4);){var q=D[C+4*k>>2];if(q==0)break;++k,65536<=q?(q-=65536,V+=String.fromCharCode(55296|q>>10,56320|q&1023)):V+=String.fromCharCode(q)}return V}function Mr(C,Q,k){if(k===void 0&&(k=2147483647),4>k)return 0;var V=Q;k=V+k-4;for(var q=0;q<C.length;++q){var te=C.charCodeAt(q);if(55296<=te&&57343>=te){var ae=C.charCodeAt(++q);te=65536+((te&1023)<<10)|ae&1023}if(D[Q>>2]=te,Q+=4,Q+4>k)break}return D[Q>>2]=0,Q-V}function Sr(C){for(var Q=0,k=0;k<C.length;++k){var V=C.charCodeAt(k);55296<=V&&57343>=V&&++k,Q+=4}return Q}var Pr={};function or(C){var Q=Pr[C];return Q===void 0?ge(C):Q}var kt=[];function Gr(C){var Q=kt.length;return kt.push(C),Q}function Rr(C,Q){for(var k=Array(C),V=0;V<C;++V)k[V]=Te(m[Q+4*V>>2],"parameter "+V);return k}var Ar=[],Fr=[null,[],[]];Ie=r.BindingError=Pe("BindingError"),r.count_emval_handles=function(){for(var C=0,Q=5;Q<Be.length;++Q)Be[Q]!==void 0&&++C;return C},r.get_first_emval=function(){for(var C=5;C<Be.length;++C)if(Be[C]!==void 0)return Be[C];return null},xe=r.PureVirtualError=Pe("PureVirtualError");for(var ir=Array(256),Nt=0;256>Nt;++Nt)ir[Nt]=String.fromCharCode(Nt);le=ir,r.getInheritedInstanceCount=function(){return Object.keys(Ge).length},r.getLiveInheritedInstances=function(){var C=[],Q;for(Q in Ge)Ge.hasOwnProperty(Q)&&C.push(Ge[Q]);return C},r.flushPendingDeletes=we,r.setDelayFunction=function(C){Me=C,be.length&&Me&&Me(we)},ze=r.InternalError=Pe("InternalError"),ft.prototype.isAliasOf=function(C){if(!(this instanceof ft&&C instanceof ft))return!1;var Q=this.M.P.N,k=this.M.O,V=C.M.P.N;for(C=C.M.O;Q.R;)k=Q.ba(k),Q=Q.R;for(;V.R;)C=V.ba(C),V=V.R;return Q===V&&k===C},ft.prototype.clone=function(){if(this.M.O||Rt(this),this.M.aa)return this.M.count.value+=1,this;var C=ut,Q=Object,k=Q.create,V=Object.getPrototypeOf(this),q=this.M;return C=C(k.call(Q,V,{M:{value:{count:q.count,$:q.$,aa:q.aa,O:q.O,P:q.P,T:q.T,U:q.U}}})),C.M.count.value+=1,C.M.$=!1,C},ft.prototype.delete=function(){this.M.O||Rt(this),this.M.$&&!this.M.aa&&y("Object already scheduled for deletion"),je(this),Je(this.M),this.M.aa||(this.M.T=void 0,this.M.O=void 0)},ft.prototype.isDeleted=function(){return!this.M.O},ft.prototype.deleteLater=function(){return this.M.O||Rt(this),this.M.$&&!this.M.aa&&y("Object already scheduled for deletion"),be.push(this),be.length===1&&Me&&Me(we),this.M.$=!0,this},at.prototype.qa=function(C){return this.ka&&(C=this.ka(C)),C},at.prototype.ha=function(C){this.W&&this.W(C)},at.prototype.argPackAdvance=8,at.prototype.readValueFromPointer=Xe,at.prototype.deleteObject=function(C){C!==null&&C.delete()},at.prototype.fromWireType=function(C){function Q(){return this.da?bt(this.N.X,{P:this.wa,O:k,U:this,T:C}):bt(this.N.X,{P:this,O:C})}var k=this.qa(C);if(!k)return this.ha(C),null;var V=Bt(this.N,k);if(V!==void 0)return V.M.count.value===0?(V.M.O=k,V.M.T=C,V.clone()):(V=V.clone(),this.ha(C),V);if(V=this.N.pa(k),V=qe[V],!V)return Q.call(this);V=this.ca?V.la:V.pointerType;var q=tt(k,this.N,V.N);return q===null?Q.call(this):this.da?bt(V.N.X,{P:V,O:q,U:this,T:C}):bt(V.N.X,{P:V,O:q})},Ct=r.UnboundTypeError=Pe("UnboundTypeError");var Ur=typeof atob=="function"?atob:function(C){var Q="",k=0;C=C.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var V="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(C.charAt(k++)),q="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(C.charAt(k++)),te="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(C.charAt(k++)),ae="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(C.charAt(k++));V=V<<2|q>>4,q=(q&15)<<4|te>>2;var se=(te&3)<<6|ae;Q+=String.fromCharCode(V),te!==64&&(Q+=String.fromCharCode(q)),ae!==64&&(Q+=String.fromCharCode(se))}while(k<C.length);return Q},kr={l:function(C,Q,k,V){W("Assertion failed: "+(C?p(h,C):"")+", at: "+[Q?Q?p(h,Q):"":"unknown filename",k,V?V?p(h,V):"":"unknown function"])},q:function(C,Q,k){C=ge(C),Q=Te(Q,"wrapper"),k=ye(k);var V=[].slice,q=Q.N,te=q.X,ae=q.R.X,se=q.R.constructor;C=F(C,function(){q.R.ja.forEach(function(ue){if(this[ue]===ae[ue])throw new xe("Pure virtual function "+ue+" must be implemented in JavaScript")}.bind(this)),Object.defineProperty(this,"__parent",{value:te}),this.__construct.apply(this,V.call(arguments))}),te.__construct=function(){this===te&&y("Pass correct 'this' to __construct");var ue=se.implement.apply(void 0,[this].concat(V.call(arguments)));je(ue);var de=ue.M;ue.notifyOnDestruction(),de.aa=!0,Object.defineProperties(this,{M:{value:de}}),ut(this),ue=de.O,ue=Ue(q,ue),Ge.hasOwnProperty(ue)?y("Tried to register registered instance: "+ue):Ge[ue]=this},te.__destruct=function(){this===te&&y("Pass correct 'this' to __destruct"),je(this);var ue=this.M.O;ue=Ue(q,ue),Ge.hasOwnProperty(ue)?delete Ge[ue]:y("Tried to unregister unregistered instance: "+ue)},C.prototype=Object.create(te);for(var pe in k)C.prototype[pe]=k[pe];return Qe(C)},j:function(C){var Q=Et[C];delete Et[C];var k=Q.fa,V=Q.W,q=Q.ia,te=q.map(ae=>ae.ta).concat(q.map(ae=>ae.za));pt([C],te,ae=>{var se={};return q.forEach((pe,ue)=>{var de=ae[ue],ve=pe.ra,Fe=pe.sa,Ke=ae[ue+q.length],Ne=pe.ya,et=pe.Aa;se[pe.oa]={read:At=>de.fromWireType(ve(Fe,At)),write:(At,Dt)=>{var ct=[];Ne(et,At,Ke.toWireType(ct,Dt)),gt(ct)}}}),[{name:Q.name,fromWireType:function(pe){var ue={},de;for(de in se)ue[de]=se[de].read(pe);return V(pe),ue},toWireType:function(pe,ue){for(var de in se)if(!(de in ue))throw new TypeError('Missing field: "'+de+'"');var ve=k();for(de in se)se[de].write(ve,ue[de]);return pe!==null&&pe.push(V,ve),ve},argPackAdvance:8,readValueFromPointer:Xe,V}]})},v:function(){},B:function(C,Q,k,V,q){var te=Jt(k);Q=ge(Q),it(C,{name:Q,fromWireType:function(ae){return!!ae},toWireType:function(ae,se){return se?V:q},argPackAdvance:8,readValueFromPointer:function(ae){if(k===1)var se=d;else if(k===2)se=I;else if(k===4)se=D;else throw new TypeError("Unknown boolean type size: "+Q);return this.fromWireType(se[ae>>te])},V:null})},f:function(C,Q,k,V,q,te,ae,se,pe,ue,de,ve,Fe){de=ge(de),te=ot(q,te),se&&(se=ot(ae,se)),ue&&(ue=ot(pe,ue)),Fe=ot(ve,Fe);var Ke=he(de);yr(Ke,function(){Ut("Cannot construct "+de+" due to unbound types",[V])}),pt([C,Q,k],V?[V]:[],function(Ne){if(Ne=Ne[0],V)var et=Ne.N,At=et.X;else At=ft.prototype;Ne=F(Ke,function(){if(Object.getPrototypeOf(this)!==Dt)throw new Ie("Use 'new' to construct "+de);if(ct.Y===void 0)throw new Ie(de+" has no accessible constructor");var lr=ct.Y[arguments.length];if(lr===void 0)throw new Ie("Tried to invoke ctor of "+de+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(ct.Y).toString()+") parameters instead!");return lr.apply(this,arguments)});var Dt=Object.create(At,{constructor:{value:Ne}});Ne.prototype=Dt;var ct=new tr(de,Ne,Dt,Fe,et,te,se,ue);et=new at(de,ct,!0,!1),At=new at(de+"*",ct,!1,!1);var cr=new at(de+" const*",ct,!1,!0);return qe[C]={pointerType:At,la:cr},Kt(Ke,Ne),[et,At,cr]})},d:function(C,Q,k,V,q,te,ae){var se=Yt(k,V);Q=ge(Q),te=ot(q,te),pt([],[C],function(pe){function ue(){Ut("Cannot call "+de+" due to unbound types",se)}pe=pe[0];var de=pe.name+"."+Q;Q.startsWith("@@")&&(Q=Symbol[Q.substring(2)]);var ve=pe.N.constructor;return ve[Q]===void 0?(ue.Z=k-1,ve[Q]=ue):(vt(ve,Q,de),ve[Q].S[k-1]=ue),pt([],se,function(Fe){return Fe=zt(de,[Fe[0],null].concat(Fe.slice(1)),null,te,ae),ve[Q].S===void 0?(Fe.Z=k-1,ve[Q]=Fe):ve[Q].S[k-1]=Fe,[]}),[]})},p:function(C,Q,k,V,q,te){0<Q||W();var ae=Yt(Q,k);q=ot(V,q),pt([],[C],function(se){se=se[0];var pe="constructor "+se.name;if(se.N.Y===void 0&&(se.N.Y=[]),se.N.Y[Q-1]!==void 0)throw new Ie("Cannot register multiple constructors with identical number of parameters ("+(Q-1)+") for class '"+se.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return se.N.Y[Q-1]=()=>{Ut("Cannot construct "+se.name+" due to unbound types",ae)},pt([],ae,function(ue){return ue.splice(1,0,null),se.N.Y[Q-1]=zt(pe,ue,null,q,te),[]}),[]})},a:function(C,Q,k,V,q,te,ae,se){var pe=Yt(k,V);Q=ge(Q),te=ot(q,te),pt([],[C],function(ue){function de(){Ut("Cannot call "+ve+" due to unbound types",pe)}ue=ue[0];var ve=ue.name+"."+Q;Q.startsWith("@@")&&(Q=Symbol[Q.substring(2)]),se&&ue.N.ja.push(Q);var Fe=ue.N.X,Ke=Fe[Q];return Ke===void 0||Ke.S===void 0&&Ke.className!==ue.name&&Ke.Z===k-2?(de.Z=k-2,de.className=ue.name,Fe[Q]=de):(vt(Fe,Q,ve),Fe[Q].S[k-2]=de),pt([],pe,function(Ne){return Ne=zt(ve,Ne,ue,te,ae),Fe[Q].S===void 0?(Ne.Z=k-2,Fe[Q]=Ne):Fe[Q].S[k-2]=Ne,[]}),[]})},A:function(C,Q){Q=ge(Q),it(C,{name:Q,fromWireType:function(k){var V=ye(k);return Wt(k),V},toWireType:function(k,V){return Qe(V)},argPackAdvance:8,readValueFromPointer:Xe,V:null})},n:function(C,Q,k){k=Jt(k),Q=ge(Q),it(C,{name:Q,fromWireType:function(V){return V},toWireType:function(V,q){return q},argPackAdvance:8,readValueFromPointer:Qr(Q,k),V:null})},e:function(C,Q,k,V,q){Q=ge(Q),q===-1&&(q=4294967295),q=Jt(k);var te=se=>se;if(V===0){var ae=32-8*k;te=se=>se<<ae>>>ae}k=Q.includes("unsigned")?function(se,pe){return pe>>>0}:function(se,pe){return pe},it(C,{name:Q,fromWireType:te,toWireType:k,argPackAdvance:8,readValueFromPointer:xr(Q,q,V!==0),V:null})},b:function(C,Q,k){function V(te){te>>=2;var ae=m;return new q(f,ae[te+1],ae[te])}var q=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][Q];k=ge(k),it(C,{name:k,fromWireType:V,argPackAdvance:8,readValueFromPointer:V},{ua:!0})},o:function(C,Q){Q=ge(Q);var k=Q==="std::string";it(C,{name:Q,fromWireType:function(V){var q=m[V>>2],te=V+4;if(k)for(var ae=te,se=0;se<=q;++se){var pe=te+se;if(se==q||h[pe]==0){if(ae=ae?p(h,ae,pe-ae):"",ue===void 0)var ue=ae;else ue+="\0",ue+=ae;ae=pe+1}}else{for(ue=Array(q),se=0;se<q;++se)ue[se]=String.fromCharCode(h[te+se]);ue=ue.join("")}return st(V),ue},toWireType:function(V,q){q instanceof ArrayBuffer&&(q=new Uint8Array(q));var te,ae=typeof q=="string";if(ae||q instanceof Uint8Array||q instanceof Uint8ClampedArray||q instanceof Int8Array||y("Cannot pass non-string to std::string"),k&&ae){var se=0;for(te=0;te<q.length;++te){var pe=q.charCodeAt(te);127>=pe?se++:2047>=pe?se+=2:55296<=pe&&57343>=pe?(se+=4,++te):se+=3}te=se}else te=q.length;if(se=Xt(4+te+1),pe=se+4,m[se>>2]=te,k&&ae){if(ae=pe,pe=te+1,te=h,0<pe){pe=ae+pe-1;for(var ue=0;ue<q.length;++ue){var de=q.charCodeAt(ue);if(55296<=de&&57343>=de){var ve=q.charCodeAt(++ue);de=65536+((de&1023)<<10)|ve&1023}if(127>=de){if(ae>=pe)break;te[ae++]=de}else{if(2047>=de){if(ae+1>=pe)break;te[ae++]=192|de>>6}else{if(65535>=de){if(ae+2>=pe)break;te[ae++]=224|de>>12}else{if(ae+3>=pe)break;te[ae++]=240|de>>18,te[ae++]=128|de>>12&63}te[ae++]=128|de>>6&63}te[ae++]=128|de&63}}te[ae]=0}}else if(ae)for(ae=0;ae<te;++ae)ue=q.charCodeAt(ae),255<ue&&(st(pe),y("String has UTF-16 code units that do not fit in 8 bits")),h[pe+ae]=ue;else for(ae=0;ae<te;++ae)h[pe+ae]=q[ae];return V!==null&&V.push(st,se),se},argPackAdvance:8,readValueFromPointer:Xe,V:function(V){st(V)}})},i:function(C,Q,k){if(k=ge(k),Q===2)var V=wr,q=vr,te=Dr,ae=()=>b,se=1;else Q===4&&(V=_r,q=Mr,te=Sr,ae=()=>m,se=2);it(C,{name:k,fromWireType:function(pe){for(var ue=m[pe>>2],de=ae(),ve,Fe=pe+4,Ke=0;Ke<=ue;++Ke){var Ne=pe+4+Ke*Q;(Ke==ue||de[Ne>>se]==0)&&(Fe=V(Fe,Ne-Fe),ve===void 0?ve=Fe:(ve+="\0",ve+=Fe),Fe=Ne+Q)}return st(pe),ve},toWireType:function(pe,ue){typeof ue!="string"&&y("Cannot pass non-string to C++ string type "+k);var de=te(ue),ve=Xt(4+de+Q);return m[ve>>2]=de>>se,q(ue,ve+4,de+Q),pe!==null&&pe.push(st,ve),ve},argPackAdvance:8,readValueFromPointer:Xe,V:function(pe){st(pe)}})},k:function(C,Q,k,V,q,te){Et[C]={name:ge(Q),fa:ot(k,V),W:ot(q,te),ia:[]}},h:function(C,Q,k,V,q,te,ae,se,pe,ue){Et[C].ia.push({oa:ge(Q),ta:k,ra:ot(V,q),sa:te,za:ae,ya:ot(se,pe),Aa:ue})},C:function(C,Q){Q=ge(Q),it(C,{va:!0,name:Q,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},s:function(C,Q,k,V,q){C=kt[C],Q=ye(Q),k=or(k);var te=[];return m[V>>2]=Qe(te),C(Q,k,te,q)},t:function(C,Q,k,V){C=kt[C],Q=ye(Q),k=or(k),C(Q,k,null,V)},g:Wt,m:function(C,Q){var k=Rr(C,Q),V=k[0];Q=V.name+"_$"+k.slice(1).map(function(ae){return ae.name}).join("_")+"$";var q=Ar[Q];if(q!==void 0)return q;var te=Array(C-1);return q=Gr((ae,se,pe,ue)=>{for(var de=0,ve=0;ve<C-1;++ve)te[ve]=k[ve+1].readValueFromPointer(ue+de),de+=k[ve+1].argPackAdvance;for(ae=ae[se].apply(ae,te),ve=0;ve<C-1;++ve)k[ve+1].ma&&k[ve+1].ma(te[ve]);if(!V.va)return V.toWireType(pe,ae)}),Ar[Q]=q},D:function(C){4<C&&(Be[C].ga+=1)},r:function(C){var Q=ye(C);gt(Q),Wt(C)},c:function(){W("")},x:function(C,Q,k){h.copyWithin(C,Q,Q+k)},w:function(C){var Q=h.length;if(C>>>=0,2147483648<C)return!1;for(var k=1;4>=k;k*=2){var V=Q*(1+.2/k);V=Math.min(V,C+100663296);var q=Math;V=Math.max(C,V),q=q.min.call(q,2147483648,V+(65536-V%65536)%65536);e:{try{u.grow(q-f.byteLength+65535>>>16),S();var te=1;break e}catch{}te=void 0}if(te)return!0}return!1},z:function(){return 52},u:function(){return 70},y:function(C,Q,k,V){for(var q=0,te=0;te<k;te++){var ae=m[Q>>2],se=m[Q+4>>2];Q+=8;for(var pe=0;pe<se;pe++){var ue=h[ae+pe],de=Fr[C];ue===0||ue===10?((C===1?a:s)(p(de,0)),de.length=0):de.push(ue)}q+=se}return m[V>>2]=q,0}};(function(){function C(q){r.asm=q.exports,u=r.asm.E,S(),N=r.asm.J,G.unshift(r.asm.F),K--,r.monitorRunDependencies&&r.monitorRunDependencies(K),K==0&&(z!==null&&(clearInterval(z),z=null),J&&(q=J,J=null,q()))}function Q(q){C(q.instance)}function k(q){return ne().then(function(te){return WebAssembly.instantiate(te,V)}).then(function(te){return te}).then(q,function(te){s("failed to asynchronously prepare wasm: "+te),W(te)})}var V={a:kr};if(K++,r.monitorRunDependencies&&r.monitorRunDependencies(K),r.instantiateWasm)try{return r.instantiateWasm(V,C)}catch(q){s("Module.instantiateWasm callback failed with error: "+q),o(q)}return(function(){return c||typeof WebAssembly.instantiateStreaming!="function"||X(Ae)||typeof fetch!="function"?k(Q):fetch(Ae,{credentials:"same-origin"}).then(function(q){return WebAssembly.instantiateStreaming(q,V).then(Q,function(te){return s("wasm streaming compile failed: "+te),s("falling back to ArrayBuffer instantiation"),k(Q)})})})().catch(o),{}})(),r.___wasm_call_ctors=function(){return(r.___wasm_call_ctors=r.asm.F).apply(null,arguments)};var ar=r.___getTypeName=function(){return(ar=r.___getTypeName=r.asm.G).apply(null,arguments)};r.__embind_initialize_bindings=function(){return(r.__embind_initialize_bindings=r.asm.H).apply(null,arguments)};var Xt=r._malloc=function(){return(Xt=r._malloc=r.asm.I).apply(null,arguments)},st=r._free=function(){return(st=r._free=r.asm.K).apply(null,arguments)};r.dynCall_jiji=function(){return(r.dynCall_jiji=r.asm.L).apply(null,arguments)};var Tt;J=function C(){Tt||sr(),Tt||(J=C)};function sr(){function C(){if(!Tt&&(Tt=!0,r.calledRun=!0,!g)){if(ie(G),n(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;){var Q=r.postRun.shift();j.unshift(Q)}ie(j)}}if(!(0<K)){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)R();ie(M),0<K||(r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),C()},1)):C())}}if(r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);0<r.preInit.length;)r.preInit.pop()();return sr(),t.ready})})(),Ja=Vc;$();$();var $t=(function(e){return e[e.Auto=0]="Auto",e[e.FlexStart=1]="FlexStart",e[e.Center=2]="Center",e[e.FlexEnd=3]="FlexEnd",e[e.Stretch=4]="Stretch",e[e.Baseline=5]="Baseline",e[e.SpaceBetween=6]="SpaceBetween",e[e.SpaceAround=7]="SpaceAround",e[e.SpaceEvenly=8]="SpaceEvenly",e})({}),Ka=(function(e){return e[e.BorderBox=0]="BorderBox",e[e.ContentBox=1]="ContentBox",e})({}),za=(function(e){return e[e.Width=0]="Width",e[e.Height=1]="Height",e})({}),Ao=(function(e){return e[e.Inherit=0]="Inherit",e[e.LTR=1]="LTR",e[e.RTL=2]="RTL",e})({}),EA=(function(e){return e[e.Flex=0]="Flex",e[e.None=1]="None",e[e.Contents=2]="Contents",e})({}),er=(function(e){return e[e.Left=0]="Left",e[e.Top=1]="Top",e[e.Right=2]="Right",e[e.Bottom=3]="Bottom",e[e.Start=4]="Start",e[e.End=5]="End",e[e.Horizontal=6]="Horizontal",e[e.Vertical=7]="Vertical",e[e.All=8]="All",e})({}),en=(function(e){return e[e.None=0]="None",e[e.StretchFlexBasis=1]="StretchFlexBasis",e[e.AbsolutePositionWithoutInsetsExcludesPadding=2]="AbsolutePositionWithoutInsetsExcludesPadding",e[e.AbsolutePercentAgainstInnerSize=4]="AbsolutePercentAgainstInnerSize",e[e.All=2147483647]="All",e[e.Classic=2147483646]="Classic",e})({}),Jc=(function(e){return e[e.WebFlexBasis=0]="WebFlexBasis",e})({}),Lo=(function(e){return e[e.Column=0]="Column",e[e.ColumnReverse=1]="ColumnReverse",e[e.Row=2]="Row",e[e.RowReverse=3]="RowReverse",e})({}),yA=(function(e){return e[e.Column=0]="Column",e[e.Row=1]="Row",e[e.All=2]="All",e})({}),tn=(function(e){return e[e.FlexStart=0]="FlexStart",e[e.Center=1]="Center",e[e.FlexEnd=2]="FlexEnd",e[e.SpaceBetween=3]="SpaceBetween",e[e.SpaceAround=4]="SpaceAround",e[e.SpaceEvenly=5]="SpaceEvenly",e})({}),rn=(function(e){return e[e.Error=0]="Error",e[e.Warn=1]="Warn",e[e.Info=2]="Info",e[e.Debug=3]="Debug",e[e.Verbose=4]="Verbose",e[e.Fatal=5]="Fatal",e})({}),CA=(function(e){return e[e.Undefined=0]="Undefined",e[e.Exactly=1]="Exactly",e[e.AtMost=2]="AtMost",e})({}),Ya=(function(e){return e[e.Default=0]="Default",e[e.Text=1]="Text",e})({}),QA=(function(e){return e[e.Visible=0]="Visible",e[e.Hidden=1]="Hidden",e[e.Scroll=2]="Scroll",e})({}),xA=(function(e){return e[e.Static=0]="Static",e[e.Relative=1]="Relative",e[e.Absolute=2]="Absolute",e})({}),Pt=(function(e){return e[e.Undefined=0]="Undefined",e[e.Point=1]="Point",e[e.Percent=2]="Percent",e[e.Auto=3]="Auto",e})({}),wA=(function(e){return e[e.NoWrap=0]="NoWrap",e[e.Wrap=1]="Wrap",e[e.WrapReverse=2]="WrapReverse",e})({}),Kc={ALIGN_AUTO:$t.Auto,ALIGN_FLEX_START:$t.FlexStart,ALIGN_CENTER:$t.Center,ALIGN_FLEX_END:$t.FlexEnd,ALIGN_STRETCH:$t.Stretch,ALIGN_BASELINE:$t.Baseline,ALIGN_SPACE_BETWEEN:$t.SpaceBetween,ALIGN_SPACE_AROUND:$t.SpaceAround,ALIGN_SPACE_EVENLY:$t.SpaceEvenly,BOX_SIZING_BORDER_BOX:Ka.BorderBox,BOX_SIZING_CONTENT_BOX:Ka.ContentBox,DIMENSION_WIDTH:za.Width,DIMENSION_HEIGHT:za.Height,DIRECTION_INHERIT:Ao.Inherit,DIRECTION_LTR:Ao.LTR,DIRECTION_RTL:Ao.RTL,DISPLAY_FLEX:EA.Flex,DISPLAY_NONE:EA.None,DISPLAY_CONTENTS:EA.Contents,EDGE_LEFT:er.Left,EDGE_TOP:er.Top,EDGE_RIGHT:er.Right,EDGE_BOTTOM:er.Bottom,EDGE_START:er.Start,EDGE_END:er.End,EDGE_HORIZONTAL:er.Horizontal,EDGE_VERTICAL:er.Vertical,EDGE_ALL:er.All,ERRATA_NONE:en.None,ERRATA_STRETCH_FLEX_BASIS:en.StretchFlexBasis,ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING:en.AbsolutePositionWithoutInsetsExcludesPadding,ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE:en.AbsolutePercentAgainstInnerSize,ERRATA_ALL:en.All,ERRATA_CLASSIC:en.Classic,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:Jc.WebFlexBasis,FLEX_DIRECTION_COLUMN:Lo.Column,FLEX_DIRECTION_COLUMN_REVERSE:Lo.ColumnReverse,FLEX_DIRECTION_ROW:Lo.Row,FLEX_DIRECTION_ROW_REVERSE:Lo.RowReverse,GUTTER_COLUMN:yA.Column,GUTTER_ROW:yA.Row,GUTTER_ALL:yA.All,JUSTIFY_FLEX_START:tn.FlexStart,JUSTIFY_CENTER:tn.Center,JUSTIFY_FLEX_END:tn.FlexEnd,JUSTIFY_SPACE_BETWEEN:tn.SpaceBetween,JUSTIFY_SPACE_AROUND:tn.SpaceAround,JUSTIFY_SPACE_EVENLY:tn.SpaceEvenly,LOG_LEVEL_ERROR:rn.Error,LOG_LEVEL_WARN:rn.Warn,LOG_LEVEL_INFO:rn.Info,LOG_LEVEL_DEBUG:rn.Debug,LOG_LEVEL_VERBOSE:rn.Verbose,LOG_LEVEL_FATAL:rn.Fatal,MEASURE_MODE_UNDEFINED:CA.Undefined,MEASURE_MODE_EXACTLY:CA.Exactly,MEASURE_MODE_AT_MOST:CA.AtMost,NODE_TYPE_DEFAULT:Ya.Default,NODE_TYPE_TEXT:Ya.Text,OVERFLOW_VISIBLE:QA.Visible,OVERFLOW_HIDDEN:QA.Hidden,OVERFLOW_SCROLL:QA.Scroll,POSITION_TYPE_STATIC:xA.Static,POSITION_TYPE_RELATIVE:xA.Relative,POSITION_TYPE_ABSOLUTE:xA.Absolute,UNIT_UNDEFINED:Pt.Undefined,UNIT_POINT:Pt.Point,UNIT_PERCENT:Pt.Percent,UNIT_AUTO:Pt.Auto,WRAP_NO_WRAP:wA.NoWrap,WRAP_WRAP:wA.Wrap,WRAP_WRAP_REVERSE:wA.WrapReverse},Wa=Kc;function vA(e){function t(o,A,i){let a=o[A];o[A]=function(){for(var s=arguments.length,c=new Array(s),l=0;l<s;l++)c[l]=arguments[l];return i.call(this,a,...c)}}for(let o of["setPosition","setMargin","setFlexBasis","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setPadding","setGap"]){let A={[Pt.Point]:e.Node.prototype[o],[Pt.Percent]:e.Node.prototype[`${o}Percent`],[Pt.Auto]:e.Node.prototype[`${o}Auto`]};t(e.Node.prototype,o,function(i){for(var a=arguments.length,s=new Array(a>1?a-1:0),c=1;c<a;c++)s[c-1]=arguments[c];let l=s.pop(),u,g;if(l==="auto")u=Pt.Auto,g=void 0;else if(typeof l=="object")u=l.unit,g=l.valueOf();else if(u=typeof l=="string"&&l.endsWith("%")?Pt.Percent:Pt.Point,g=parseFloat(l),l!==void 0&&!Number.isNaN(l)&&Number.isNaN(g))throw new Error(`Invalid value ${l} for ${o}`);if(!A[u])throw new Error(`Failed to execute "${o}": Unsupported unit '${l}'`);return g!==void 0?A[u].call(this,...s,g):A[u].call(this,...s)})}function r(o){return e.MeasureCallback.implement({measure:function(){let{width:A,height:i}=o(...arguments);return{width:A??NaN,height:i??NaN}}})}t(e.Node.prototype,"setMeasureFunc",function(o,A){return A?o.call(this,r(A)):this.unsetMeasureFunc()});function n(o){return e.DirtiedCallback.implement({dirtied:o})}return t(e.Node.prototype,"setDirtiedFunc",function(o,A){o.call(this,n(A))}),t(e.Config.prototype,"free",function(){e.Config.destroy(this)}),t(e.Node,"create",(o,A)=>A?e.Node.createWithConfig(A):e.Node.createDefault()),t(e.Node.prototype,"free",function(){e.Node.destroy(this)}),t(e.Node.prototype,"freeRecursive",function(){for(let o=0,A=this.getChildCount();o<A;++o)this.getChild(0).freeRecursive();this.free()}),t(e.Node.prototype,"calculateLayout",function(o){let A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:Ao.LTR;return o.call(this,A,i,a)}),{Config:e.Config,Node:e.Node,...Wa}}async function qa(){return vA(await Ja())}var Oo=null;async function zc(){return Oo||(Oo=await qa(),Oo)}function Yc(e,t){switch(t){case"center":return e.JUSTIFY_CENTER;case"end":return e.JUSTIFY_FLEX_END;case"space-between":return e.JUSTIFY_SPACE_BETWEEN;case"space-around":return e.JUSTIFY_SPACE_AROUND;default:return e.JUSTIFY_FLEX_START}}function Wc(e,t){switch(t){case"center":return e.ALIGN_CENTER;case"end":return e.ALIGN_FLEX_END;case"stretch":return e.ALIGN_STRETCH;default:return e.ALIGN_FLEX_START}}function qc(e,t){switch(t){case"start":return e.ALIGN_FLEX_START;case"center":return e.ALIGN_CENTER;case"end":return e.ALIGN_FLEX_END;case"stretch":return e.ALIGN_STRETCH;case"baseline":return e.ALIGN_BASELINE;default:return e.ALIGN_AUTO}}function Vr(e){if(e!=null){if(typeof e=="number"||typeof e=="string")return e;if(typeof e=="object"){if("unit"in e&&typeof e.unit=="number")return e;let t=Number(e);if(!Number.isNaN(t))return t}}}function Xc(e){switch(e.kind){case"flex":return e.dir??"row";case"block":return"column";case"box":return e.children&&e.children.length>0?"column":null;default:return null}}function Zc(e){if(e.kind==="block")return"fill"}function $c(e){let t=0;if(e.kind==="flex"||e.kind==="block"){let i=Vr(e.gap);t=typeof i=="number"?i:0}let r=0;if(e.kind==="flex"||e.kind==="block"||e.kind==="box"||e.kind==="text"){let i=Vr(e.padding);r=typeof i=="number"?i:0}let n="start";e.kind==="flex"&&(n=e.justify??"start");let o="start";(e.kind==="flex"||e.kind==="block")&&(o=e.align??"start");let A=!1;return e.kind==="flex"&&(A=typeof e.wrap=="boolean"?e.wrap:!1),{gap:t,padding:r,justify:n,align:o,wrap:A}}function io(e){let t=e;return t.position==="absolute"||t.position===void 0&&(t.x!==void 0||t.y!==void 0)}function el(e){return"children"in e&&e.children?e.children.filter(t=>!io(t)):[]}function tl(e){return"children"in e&&e.children?e.children.filter(t=>io(t)):[]}function Za(e,t,r,n,o){let A=t,i=e.Node.create(),a=Xc(A),s=a!==null,c=[];if(io(A)){i.setPositionType(e.POSITION_TYPE_ABSOLUTE);let I=Vr(A.x),b=Vr(A.y);I!==void 0&&i.setPosition(e.EDGE_LEFT,I),b!==void 0&&i.setPosition(e.EDGE_TOP,b)}else i.setPositionType(e.POSITION_TYPE_RELATIVE);let u=Vr(A.grow);u!==void 0&&i.setFlexGrow(typeof u=="number"?u:parseFloat(u));let g=Vr(A.flexShrink);g!==void 0?i.setFlexShrink(typeof g=="number"?g:parseFloat(g)):i.setFlexShrink(o!==null?1:0),A.flexBasis!==void 0&&i.setFlexBasis(A.flexBasis),A.alignSelf!==void 0&&i.setAlignSelf(qc(e,A.alignSelf));let p=A.width??Zc(A),f=A.height,d=o==="row",h=o==="column";if(Xa(i,"width",p,r?.width,d),Xa(i,"height",f,r?.height,h),s){let I=$c(A);i.setFlexDirection(a==="row"?e.FLEX_DIRECTION_ROW:e.FLEX_DIRECTION_COLUMN),i.setJustifyContent(Yc(e,I.justify)),i.setAlignItems(Wc(e,I.align)),i.setFlexWrap(I.wrap?e.WRAP_WRAP:e.WRAP_NO_WRAP),I.padding>0&&i.setPadding(e.EDGE_ALL,I.padding),I.gap>0&&i.setGap(e.GUTTER_ALL,I.gap);let b=el(A),D=tl(A),m=[...b,...D];for(let x=0;x<m.length;x++){let w=Za(e,m[x],void 0,n,io(A)?null:a);i.insertChild(w.yogaNode,x),c.push(w)}}else if(A.kind==="text"||A.kind==="media"&&A.dataType==="Caption")i.setMeasureFunc((I,b,D,m)=>{let x;(b===1||b===2)&&(x=I);let w=n?.(A,x)??{width:0,height:0},S=w.width,N=w.height;return b===1&&(S=I),m===1&&(N=D),{width:S,height:N}});else{let I=n?.(A)??null;if(I){let b=A.aspectRatio!==void 0,D=A.kind==="media"&&A.dataType==="Caption",m=I.height>0?I.width/I.height:1;A.kind==="media"&&!D&&!b&&i.setAspectRatio(m);let x=p===void 0||p==="auto"||p==="fit",w=f===void 0||f==="auto"||f==="fit";if(x&&w){let S=A.aspectRatio??(A.kind==="media"?m:void 0)??1;i.setMeasureFunc((N,M,G,j)=>{let R=I.width,K=I.height;if(M===1&&j===1)R=N,K=G;else if(M===1)R=N,K=S>0?Math.round(N/S):I.height;else if(j===1)K=G,R=S>0?Math.round(G*S):I.width;else if(M===2&&j===2){let z=Math.min(1,N/I.width,G/I.height);R=Math.round(I.width*z),K=Math.round(I.height*z)}else M===2?I.width>N&&(R=N,K=S>0?Math.round(N/S):I.height):j===2&&I.height>G&&(K=G,R=S>0?Math.round(G*S):I.width);return{width:R,height:K}})}else if(x){let S=A.aspectRatio??(A.kind==="media"?m:void 0);(S===void 0||S<=0)&&i.setWidth(I.width)}else if(w){let S=A.aspectRatio??(A.kind==="media"?m:void 0);(S===void 0||S<=0)&&i.setHeight(I.height)}}}return{yogaNode:i,layoutNode:A,children:c}}function Xa(e,t,r,n,o){if(r===void 0||r==="auto"||r==="fit")return;let A=Vr(r);if(typeof A=="number"){t==="width"?e.setWidth(A):e.setHeight(A);return}if(A==="fill"){if(o){e.getFlexGrow()===0&&e.setFlexGrow(1),e.setFlexBasis(0);return}n!==void 0?t==="width"?e.setWidth(n):e.setHeight(n):t==="width"?e.setWidthPercent(100):e.setHeightPercent(100)}}function $a(e,t,r,n,o){let A=e.yogaNode.getComputedLayout(),i=t+A.left,a=r+A.top,s=A.width,c=A.height,l=e.layoutNode;io(l)||(i+=Number(l.x??0),a+=Number(l.y??0)),n[e.layoutNode.id]={x:Math.round(i*1e3)/1e3,y:Math.round(a*1e3)/1e3,width:Math.round(s*1e3)/1e3,height:Math.round(c*1e3)/1e3},o[e.layoutNode.id]={width:Math.round(s*1e3)/1e3,height:Math.round(c*1e3)/1e3};for(let u of e.children)$a(u,i,a,n,o)}function es(e){for(let t of e.children)es(t);e.yogaNode.free()}function rl(e,t){let{layout:r,viewport:n,measure:o}=t,A={},i={};for(let a of r){let s=e.Node.create();s.setWidth(n.width),s.setHeight(n.height),s.setFlexDirection(e.FLEX_DIRECTION_COLUMN);let c=Za(e,a,{width:n.width,height:n.height},o,null);s.insertChild(c.yogaNode,0),s.calculateLayout(n.width,n.height);let l=c.yogaNode.getComputedLayout(),u=a.position==="absolute"||a.position===void 0&&(a.x!==void 0||a.y!==void 0),g=u?l.left:Number(a.x??0),p=u?l.top:Number(a.y??0);A[a.id]={x:Math.round(g*1e3)/1e3,y:Math.round(p*1e3)/1e3,width:Math.round(l.width*1e3)/1e3,height:Math.round(l.height*1e3)/1e3},i[a.id]={width:Math.round(l.width*1e3)/1e3,height:Math.round(l.height*1e3)/1e3};for(let f of c.children)$a(f,g,p,A,i);es(c),s.free()}return{rects:A,sizes:i}}async function Of(e){let t=await zc();return rl(t,e)}$();$();var nl=/-?(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?/gi,ol=/([MmLlHhVvCcSsQqTtAaZz])([^MmLlHhVvCcSsQqTtAaZz]*)/g;function ts(e){let t=[],r=[],n=0,o=0,A=0,i=0,a=0,s=0,c="",l=u=>{r.length>1&&t.push({pts:r,closed:u}),r=[]};for(let u of e.matchAll(ol)){let g=u[1],p=(u[2].match(nl)??[]).map(Number),f=g===g.toLowerCase(),d=g.toUpperCase(),h=0,I=m=>{let x=p.slice(h,h+m);return h+=m,x},b=m=>h+m<=p.length;if(d==="Z"){n=A,o=i,l(!0),r=[[n,o]],c=d;continue}let D=!0;for(;b(d==="H"||d==="V"?1:d==="A"?7:d==="C"?6:d==="S"||d==="Q"?4:2);){if(d==="M"){let[m,x]=I(2);n=f?n+m:m,o=f?o+x:x,D?(l(!1),A=n,i=o,r=[[n,o]]):r.push([n,o])}else if(d==="L"||d==="T"){let[m,x]=I(2),w=f?n+m:m,S=f?o+x:x;if(d==="T"){let N=c==="Q"||c==="T"?2*n-a:n,M=c==="Q"||c==="T"?2*o-s:o;rs(r,n,o,N,M,w,S),a=N,s=M}else r.push([w,S]);n=w,o=S}else if(d==="H"){let[m]=I(1);n=f?n+m:m,r.push([n,o])}else if(d==="V"){let[m]=I(1);o=f?o+m:m,r.push([n,o])}else if(d==="C"||d==="S"){let m,x;if(d==="C"){let[z,J]=I(2);m=f?n+z:z,x=f?o+J:J}else m=c==="C"||c==="S"?2*n-a:n,x=c==="C"||c==="S"?2*o-s:o;let[w,S,N,M]=I(4),G=f?n+w:w,j=f?o+S:S,R=f?n+N:N,K=f?o+M:M;for(let z=1;z<=16;z++){let J=z/16,W=1-J;r.push([W*W*W*n+3*W*W*J*m+3*W*J*J*G+J*J*J*R,W*W*W*o+3*W*W*J*x+3*W*J*J*j+J*J*J*K])}a=G,s=j,n=R,o=K}else if(d==="Q"){let[m,x,w,S]=I(4),N=f?n+m:m,M=f?o+x:x,G=f?n+w:w,j=f?o+S:S;rs(r,n,o,N,M,G,j),a=N,s=M,n=G,o=j}else if(d==="A"){let[m,x,w,S,N,M,G]=I(7),j=f?n+M:M,R=f?o+G:G;Al(r,n,o,m,x,w,S!==0,N!==0,j,R),n=j,o=R}D=!1,c=d,d==="M"&&(c="L")}c=d}return l(!1),t}function rs(e,t,r,n,o,A,i){for(let a=1;a<=16;a++){let s=a/16,c=1-s;e.push([c*c*t+2*c*s*n+s*s*A,c*c*r+2*c*s*o+s*s*i])}}function Al(e,t,r,n,o,A,i,a,s,c){let l=Math.abs(n),u=Math.abs(o);if(l===0||u===0){e.push([s,c]);return}let g=A*Math.PI/180,p=Math.cos(g),f=Math.sin(g),d=(t-s)/2,h=(r-c)/2,I=p*d+f*h,b=-f*d+p*h,D=I*I/(l*l)+b*b/(u*u);D>1&&(l*=Math.sqrt(D),u*=Math.sqrt(D));let m=l*l*u*u-l*l*b*b-u*u*I*I,x=l*l*b*b+u*u*I*I,w=Math.sqrt(Math.max(0,m/x));i===a&&(w=-w);let S=w*l*b/u,N=-w*u*I/l,M=p*S-f*N+(t+s)/2,G=f*S+p*N+(r+c)/2,j=(J,W,X,Ae)=>Math.atan2(J*Ae-W*X,J*X+W*Ae),R=j(1,0,(I-S)/l,(b-N)/u),K=j((I-S)/l,(b-N)/u,(-I-S)/l,(-b-N)/u);!a&&K>0&&(K-=2*Math.PI),a&&K<0&&(K+=2*Math.PI);let z=Math.max(4,Math.ceil(Math.abs(K)/(Math.PI/2)*16));for(let J=1;J<=z;J++){let W=R+K*J/z,X=l*Math.cos(W),Ae=u*Math.sin(W);e.push([p*X-f*Ae+M,f*X+p*Ae+G])}}function ns(e,t){let r=e.closed?[...e.pts,e.pts[0]]:e.pts,n=[0];for(let s=1;s<r.length;s++)n.push(n[s-1]+Math.hypot(r[s][0]-r[s-1][0],r[s][1]-r[s-1][1]));let o=n[n.length-1],A=[];if(o<=0){for(let s=0;s<t;s++)A.push([r[0][0],r[0][1]]);return A}let i=e.closed?t:t-1,a=0;for(let s=0;s<t;s++){let c=o*s/i;for(;a<n.length-2&&n[a+1]<c;)a++;let l=n[a+1]-n[a],u=l>0?(c-n[a])/l:0;A.push([r[a][0]+(r[a+1][0]-r[a][0])*u,r[a][1]+(r[a+1][1]-r[a][1])*u])}return A}function os(e){let t=0;for(let r=0;r<e.length;r++){let n=e[(r+1)%e.length];t+=e[r][0]*n[1]-n[0]*e[r][1]}return t/2}function As(e){let t=0,r=0;for(let n of e)t+=n[0],r+=n[1];return[t/e.length,r/e.length]}function il(e,t,r){if(!r){let s=Math.hypot(e[0][0]-t[0][0],e[0][1]-t[0][1]);return Math.hypot(e[0][0]-t[t.length-1][0],e[0][1]-t[t.length-1][1])<s?[...t].reverse():t}let n=Math.sign(os(e))!==Math.sign(os(t))?[...t].reverse():t,o=e.length,A=0,i=Number.POSITIVE_INFINITY,a=s=>{let c=0;for(let l=0;l<o;l+=2){let u=n[(l+s)%o];c+=(e[l][0]-u[0])**2+(e[l][1]-u[1])**2}return c};for(let s=0;s<o;s+=4){let c=a(s);c<i&&(i=c,A=s)}for(let s=A-3;s<=A+3;s++){let c=(s+o)%o,l=a(c);l<i&&(i=l,A=c)}return e.map((s,c)=>n[(c+A)%o])}var Ho=new Map;function al(e,t){let r=`${e}\0${t}`,n=Ho.get(r);if(n)return n;let o=ts(e),A=ts(t),i=Math.max(o.length,A.length),a={a:[],b:[],closed:[]};for(let s=0;s<i;s++){let c=o[s],l=A[s],u=(c?.closed??!0)&&(l?.closed??!0),g=c?ns(c,128):void 0,p=l?ns(l,128):void 0;if(!g&&p){let f=As(p);g=p.map(()=>[f[0],f[1]])}if(!p&&g){let f=As(g);p=g.map(()=>[f[0],f[1]])}!g||!p||(a.a.push(g),a.b.push(il(g,p,u)),a.closed.push(u))}return Ho.size>256&&Ho.clear(),Ho.set(r,a),a}var is=e=>(Math.round(e*100)/100).toString();function as(e,t,r){if(r<=0)return e;if(r===1)return t;let n=al(e,t),o=[];for(let A=0;A<n.a.length;A++){let i=n.a[A],a=n.b[A],s="";for(let c=0;c<i.length;c++){let l=i[c][0]+(a[c][0]-i[c][0])*r,u=i[c][1]+(a[c][1]-i[c][1])*r;s+=`${c===0?"M":"L"}${is(l)} ${is(u)}`}o.push(n.closed[A]?`${s}Z`:s)}return o.join("")}function ss(e,t){let r=Math.floor(e)^t*1013|0;return r=Math.imul(r^r>>>15,r|1),r^=r+Math.imul(r^r>>>7,r|61),((r^r>>>14)>>>0)/4294967295*2-1}function sl(e,t){let r=Math.floor(e),n=r+1,o=e-r,A=o*o*(3-2*o),i=ss(r,t),a=ss(n,t),s=i*o,c=a*(o-1);return(s*(1-A)+c*A)*2}function cl(e,t,r=0){let n=e.frequency??2,o=e.amplitude??50,A=Math.max(1,Math.min(4,e.octaves??1)),i=e.seed??1234,a=0,s=0,c=1,l=n;for(let g=0;g<A;g++){let p=sl(t*l,i+g*7919);a+=p*c,s+=c,c*=.5,l*=2}let u=s>0?a/s:0;return r+u*o}function ll(e,t,r,n){if(t<=0)return r;let o=Math.max(.001,e.mass??1),A=Math.max(.001,e.stiffness??180),i=Math.max(.001,e.damping??12),a=Math.sqrt(A/o),s=i/(2*Math.sqrt(A*o)),c=1;if(s<1){let l=a*Math.sqrt(1-s*s),u=-1,g=-s*a/l;c=1+Math.exp(-s*a*t)*(u*Math.cos(l*t)+g*Math.sin(l*t))}else if(Math.abs(s-1)<1e-4)c=1+Math.exp(-a*t)*(-1-a*t);else{let l=Math.sqrt(s*s-1),u=-a*(s-l),g=-a*(s+l),p=-1/(1-u/g),f=-1-p;c=1+p*Math.exp(u*t)+f*Math.exp(g*t)}return r+(n-r)*c}function dt(e,t,r){if(e==null)return 0;if(typeof e=="number")return e;if(typeof e=="function")return Number(e(t,r))||0;if(Array.isArray(e)||ArrayBuffer.isView(e)){let n=e;if(n.length===0)return 0;let o=Math.max(0,Math.min(n.length-1,Math.round(t)));return Number(n[o])||0}if(typeof e=="object"){let n=e;if(typeof n.get=="function")return Number(n.get({frame:t,fps:r,time:r>0?t/r:0}))||0;if(n.type==="Signal"&&n.data)return dt(n.data,t,r);let o=n.samples??(typeof n.channel=="string"&&n[n.channel]!==void 0?n[n.channel]:void 0);if(Array.isArray(o)||ArrayBuffer.isView(o)){let A=o;if(A.length===0)return 0;let i=Number(n.fps)||24,a=r>0?r:24,s=t/a,c=Math.max(0,Math.min(A.length-1,Math.round(s*i)));return Number(A[c])||0}if(n.type==="audio_extractor"||n.extractionMode!==void 0){let A=n.nodeId;if(A){let i=n.channel??"primary",a=Gi.getChannelSamples(A,i);if(a&&a.length>0){let s=Number(n.fps)||24,c=r>0?r:24,l=t/c,u=Math.max(0,Math.min(a.length-1,Math.round(l*s)));return Number(a[u])||0}}return 0}if(n.type==="generator"){let A=typeof n.amplitude=="number"?n.amplitude:1,i=typeof n.frequency=="number"?n.frequency:1;if(n.syncToBpm&&typeof n.bpm=="number"&&n.bpm>0){let I=typeof n.bars=="number"&&n.bars>0?n.bars:1;i=n.bpm/60/I}let a=typeof n.phase=="number"?n.phase:0,s=typeof n.offset=="number"?n.offset:0,c=t/(r>0?r:24),l=n.baseType??"sine",u=!!n.fmEnabled,g=c;if(u){let I=Number(n.fmAmplitude)||1,b=Number(n.fmFrequency)||.5;g=c+Math.sin(c*b*Math.PI*2)*I}let p=0,f=(g*i+a/(Math.PI*2))%1,d=f<0?f+1:f,h=I=>(I%1+1)%1;switch(l){case"triangle":p=4*Math.abs(d-.5)-1;break;case"sawtooth":p=2*d-1;break;case"square":p=d<.5?1:-1;break;case"constant":p=1;break;case"noise_smooth":{let I=g*i+a,b=Math.floor(I),D=I-b,m=D*D*(3-2*D),x=h(Math.sin(b*12.9898)*43758.5453),w=h(Math.sin((b+1)*12.9898)*43758.5453);p=(x*(1-m)+w*m)*2-1;break}case"noise_white":p=h(Math.sin(g*12.9898+a)*43758.5453)*2-1;break;case"pulse":{let I=a===0?.5:Math.max(.01,Math.min(.99,a));p=h(g*i)<I?1:-1;break}case"bounce":p=Math.abs(Math.sin(g*i*Math.PI+a));break;case"staircase":p=Math.floor(d*8)/7*2-1;break;default:p=Math.sin(g*i*Math.PI*2+a);break}return p*A+s}if(n.type==="gate"){let A=n.sourceSignal??n.signal,i=typeof n.threshold=="number"?n.threshold:.5,a=n.mode??"gate",s=!!n.invert,c=typeof n.debounceMs=="number"?n.debounceMs:0,l=Math.max(1,Math.round(c/1e3*r)),u=Math.max(1,Number(n.holdFrames)||4),g=0;if(a==="gate")g=dt(A,t,r)>=i?1:0;else if(a==="trigger"){let p=-1/0,f=Math.max(0,t-300);for(let d=f;d<=t;d++){let h=dt(A,d,r),I=d>0?dt(A,d-1,r):0;h>=i&&I<i&&d-p>=l&&(p=d)}g=t>=p&&t<p+u?1:0}else if(a==="toggle"){let p=0,f=-1/0;for(let d=0;d<=t;d++){let h=dt(A,d,r),I=d>0?dt(A,d-1,r):0;h>=i&&I<i&&d-f>=l&&(p++,f=d)}g=p%2===1?1:0}return s?1-g:g}if(n.type==="signal_math"){let A=dt(n.signalA,t,r),a=n.signalB!==void 0?dt(n.signalB,t,r):Number(n.bValue)||0;switch(n.operation){case"add":return A+a;case"subtract":return A-a;case"multiply":return A*a;case"divide":return a!==0?A/a:0;case"min":return Math.min(A,a);case"max":return Math.max(A,a);case"clamp":{let s=Number(n.clampMin)||0,c=Number(n.clampMax)||1;return Math.max(s,Math.min(c,A))}case"abs":return Math.abs(A);case"negate":return-A;case"invert":return 1-A;case"power":return A**(Number(n.exponent)||2);case"modulo":return a!==0?A%a:0;case"remap":{let s=Number(n.inMin)||0,c=Number(n.inMax)||1,l=Number(n.outMin)||0,u=Number(n.outMax)||1,g=c-s,p=g!==0?(A-s)/g:0;return l+p*(u-l)}case"normalize":{let s=Number(n.aMin??n.inMin)||0,l=(Number(n.aMax??n.inMax)||1)-s;return l!==0?Math.max(0,Math.min(1,(A-s)/l)):0}case"smoothstep":{let s=Number(n.edge0)||0,l=(Number(n.edge1)||1)-s,u=l!==0?Math.max(0,Math.min(1,(A-s)/l)):0;return u*u*(3-2*u)}case"custom":return A;default:return A}}if(typeof n.value=="number")return n.value}return 0}function ul(e,t,r,n=.15,o=2){if(t<0||!e)return 0;let A=e,i=0,a=-1/0;for(let s=0;s<=t;s++){let c=dt(A,s,r),l=s>0?dt(A,s-1,r):0;c>=n&&l<n&&s-a>=o&&(i++,a=s)}return i}function gl(e,t,r,n={}){let o=n[e.inputHandleId];if(o===void 0&&n){let g=Object.keys(n);if(g.length===1)o=n[g[0]];else if(g.length>1){let p=g.find(f=>f===e.inputHandleId);o=p?n[p]:n[g[0]]}}if(e.channel&&o&&typeof o=="object"){let g=o[e.channel];g!==void 0?o=g:typeof o.get!="function"&&(o={...o,channel:e.channel})}if(e.signalMode==="accumulate"){let g=e.threshold??e.accumulateThreshold??.15,p=e.debounceFrames??2,f=ul(o,t,r,g,p),d=e.multiplier??1,h=e.offset??0;return f*d+h}let A=e.multiplier??1,i=e.offset??0,a=Math.max(0,Math.round(e.smoothingWindowFrames??0));if(a<=1)return dt(o,t,r)*A+i;let s=0,c=0,l=Math.max(0,t-a+1);for(let g=l;g<=t;g++)s+=dt(o,g,r),c++;return(c>0?s/c:0)*A+i}function pl(e,t,r){return e+(t-e)*r}function fl(e){let t=e.trim().replace("#","");if(t.length===3&&(t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]),t.length===6){let r=parseInt(t,16);return[r>>16&255,r>>8&255,r&255,1]}if(t.length===8){let r=parseInt(t,16);return[r>>24&255,r>>16&255,r>>8&255,(r&255)/255]}return[255,255,255,1]}function cs(e,t,r){return Si(e,t,r)}function DA(e,t,r){let n=r;return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function dl(e,t){let[r,n,o,A]=fl(e),i=r/255,a=n/255,s=o/255,c=Math.max(i,a,s),l=Math.min(i,a,s),u=0,g=0,p=(c+l)/2;if(c!==l){let b=c-l;switch(g=p>.5?b/(2-c-l):b/(c+l),c){case i:u=(a-s)/b+(a<s?6:0);break;case a:u=(s-i)/b+2;break;case s:u=(i-a)/b+4;break}u/=6}u=(u+t%1+1)%1;let f=p,d=p,h=p;if(g!==0){let b=p<.5?p*(1+g):p+g-p*g,D=2*p-b;f=DA(D,b,u+1/3),d=DA(D,b,u),h=DA(D,b,u-1/3)}let I=b=>Math.round(Math.max(0,Math.min(255,b*255))).toString(16).padStart(2,"0");return A>=.999?`#${I(f)}${I(d)}${I(h)}`:`rgba(${Math.round(f*255)}, ${Math.round(d*255)}, ${Math.round(h*255)}, ${Math.round(A*100)/100})`}var hl=new Set(["fill","fillColor","strokeColor","textBackgroundColor","color"]);function ml(e,t,r,n){let o=e.repeat??0,A=n-r,i=e.durationFrames!==void 0&&e.durationFrames>0?e.durationFrames:A;if(o===0||i<=0){if(t>=n){let g=e.keyframes??[];return{completedValue:g[g.length-1].value}}return{frame:t}}let a=t-r,s=Math.floor(a/i);if(o>0&&s>=1+o){let g=!!e.yoyo&&o%2===1,p=e.keyframes??[];return{completedValue:g?p[0].value:p[p.length-1].value}}let c=a-s*i;return!!e.yoyo&&s%2===1?{frame:c>=A?r:n-c}:{frame:c>=A?n:r+c}}function _A(e,t,r){let n=e.keyframes??[];if(n.length===0)return 0;if(n.length===1)return n[0].value;let o=n[0].frame;if(t<=o)return n[0].value;let A=n[n.length-1].frame,i=ml(e,t,o,A);if("completedValue"in i)return i.completedValue;let a=i.frame;for(let s=0;s<n.length-1;s++){let c=n[s],l=n[s+1];if(a>=c.frame&&a<=l.frame){let u=l.frame-c.frame,g=u>0?(a-c.frame)/u:0,p=r?r(l.ease??c.ease,u,g):g;if(typeof c.value=="boolean")return g>=1?l.value:c.value;if(typeof c.value=="string"&&typeof l.value=="string")return e.prop==="d"?as(c.value,l.value,p):cs(c.value,l.value,p);let f=Number(c.value)||0,d=Number(l.value)||0;return pl(f,d,p)}}return n[n.length-1].value}function Il(e,t,r=24,n={}){let o=n.startFrame??0,A=t-o,i=e.source??{type:"keyframe"},a=n.baseValues?.[e.prop];switch(i.type){case"keyframe":return _A(e,A);case"wiggle":{let s=typeof a=="number"?a:0,c=e.keyframes&&e.keyframes.length>0?Number(_A(e,A))||0:s,l=A/(r>0?r:24);return cl(i,l,c)}case"springOvershoot":{let s=0,c=1;e.keyframes&&e.keyframes.length>=2?(s=Number(e.keyframes[0].value)||0,c=Number(e.keyframes[1].value)||1):e.keyframes&&e.keyframes.length===1?(s=Number(a)||0,c=Number(e.keyframes[0].value)||0):typeof a=="number"&&(s=a,c=a);let l=A/(r>0?r:24);return ll(i,l,s,c)}case"signal":{let s=gl(i,t,r,n.signals);if(hl.has(e.prop)){let c=i,l=c.colorA??"#ffffff",u=c.colorB??"#ffffff",g=c.colorMode??"interpolate";if(g==="threshold"){let f=c.colorThreshold??.5;return s>=f?u:l}if(g==="hueRotate")return dl(l,s);let p=Math.max(0,Math.min(1,s));return cs(l,u,p)}return s}default:return _A(e,A)}}function Wf(e,t,r=24,n={}){let o={};if(!e?.tracks)return o;for(let A of e.tracks)o[A.prop]=Il(A,t,r,n);return o}$();var ls=["x","y","width","height"];function us(e,t,r,n){let o=t.id??`${String(e.id)}__${r}`,A={position:"absolute",...t,id:o,...n};if(ls.every(a=>t[a]===void 0))for(let a of ls)typeof e[a]=="number"&&(A[a]=e[a]);let i=typeof e.startFrame=="number"?e.startFrame:0;return A.startFrame=i+(typeof t.startFrame=="number"?t.startFrame:0),t.durationFrames===void 0&&e.durationFrames!==void 0&&(A.durationFrames=e.durationFrames),Array.isArray(A.children)&&(A.children=jo(A.children)),A}function Bl(e){let t=e.matte,r=e.relief,{matte:n,relief:o,...A}=e,i={...A};Array.isArray(i.children)&&(i.children=jo(i.children));let a=[i];if(t?.node){let s=us(e,t.node,"matte",{matteOf:String(e.id),matteMode:t.mode??"alpha"});i.matteId=s.id,a.push(s)}if(r?.node){let s=us(e,r.node,"relief",{reliefOf:String(e.id),is3D:!1,z:0});i.reliefId=s.id,i.reliefAmount=r.amount??0,a.push(s)}return a}function jo(e){return e.flatMap(t=>Bl(t))}$();function MA(e,t,r,n="forward"){if(r<=0||t<=1)return 0;switch(n){case"reverse":return(t-1-e)*r;case"center-out":{let o=(t-1)/2,A=Math.abs(e-o);return Math.round(A*r)}case"forward":return e*r;default:return _i(n)}}function td(e,t,r="forward",n=0){return!e||e.length===0?[]:t<=0&&n===0?[...e]:e.map((o,A)=>{let i=MA(A,e.length,t,r),a=o.startFrame??0;return{...o,startFrame:a+i+n}})}$();$();var ps=Symbol.for("framefields.inlineSignal"),gs=new WeakMap,bl=0;function El(e){let t=gs.get(e);return t===void 0&&(t=`inline_signal_${bl++}`,gs.set(e,t)),t}function od(e){if(typeof e=="string")return{handleId:e};if(e===null||typeof e!="object"&&typeof e!="function")throw new TypeError(`LayerAnimation.signal: expected a signal object or a signal name, got ${String(e)}. Pass a signal (Signal.fromArray / Signal.builder / an audio channel \u2026) or register it with comp.addSignal(name, signal) and pass the name.`);let t=e;return typeof t.inputHandleId=="string"?{handleId:t.inputHandleId}:typeof t.gpuBinding?.nodeId=="string"?typeof t.get=="function"?{handleId:t.gpuBinding.nodeId,inline:e}:{handleId:t.gpuBinding.nodeId}:{handleId:El(e),inline:e}}function Ad(e,t){Object.defineProperty(e,ps,{value:t,enumerable:!1,configurable:!0,writable:!0})}function yl(e){if(!(!e||typeof e!="object"))return e[ps]}function SA(e,t={}){for(let r of e){if(!r||typeof r!="object")continue;let{animation:n,children:o}=r,A=n?.tracks;if(Array.isArray(A))for(let i of A){let a=i?.source,s=yl(a);s&&typeof a?.inputHandleId=="string"&&(t[a.inputHandleId]=s)}Array.isArray(o)&&SA(o,t)}return t}$();function Cl(e,t){let{fps:r,compositionDurationFrames:n}=t;if(!Number.isInteger(n)||n<=0)throw new Error("A signal timeRemap needs the composition duration (durationFrames or durationMs)");let o=typeof e.signal=="string"?t.signals?.[e.signal]:e.signal;if(o===void 0)throw new Error(`timeRemap signal '${String(e.signal)}' is not a composition signal`);return yi(o)?A=>Number(o.get(Qi(A,r,n))):A=>dt(o,A,r)}function fs(e,t,r){let n=Cl(e,r);return{kind:"sampled",history:Ci({mode:e.mode,fps:r.fps,startFrame:t.startFrame,durationFrames:t.durationFrames,sourceStartSec:e.sourceStartSec,sample:n})}}function ds(e,t,r,n=0,o,A,i){if(e.kind==="media"&&e.timeRemap!==void 0){let m=xi.safeParse(e.timeRemap);if(!m.success)throw new Error(`Invalid timeRemap on '${e.id}': ${m.error.message}`);let x=wi(m.data,e.durationFrames??0);if(x)throw new Error(`Invalid timeRemap on '${e.id}': ${x}`);if(e.trimStartSec!==void 0||e.dataType!=="Video"&&e.dataType!=="Audio")throw new Error(`Invalid timeRemap on '${e.id}': use audio or video without trimStartSec`)}let a=[],s=e.kind==="media"?e.src??e.inputHandleId:"inputHandleId"in e?e.inputHandleId:void 0,c=m=>typeof m=="string"&&(m.startsWith("http://")||m.startsWith("https://")||m.startsWith("file://")||m.startsWith("/")||m.startsWith("./")||m.startsWith("blob:")||m.startsWith("data:")||/\.(png|jpe?g|webp|gif|svg|mp4|webm|mov|mkv|mp3|wav|ogg|m4a|srt|vtt|json|lottie)$/i.test(m)),l;if(e.kind==="media"){if(t&&e.inputHandleId&&(l=t(e.inputHandleId)),!l&&s&&(c(s)||e.src)&&(l=vi(s,e.dataType??"Video")),!l&&!t&&s&&(s.includes(".")||s.includes("/"))&&console.warn(`[Compositor] Media layer '${e.id??"?"}' source '${s}' could not be resolved.`),l&&e.crop){let m=e.crop,x=typeof m.toOperation=="function"?m.toOperation():m;l={metadata:{...l.metadata},operation:{op:"Crop",...x,dataType:l.operation.dataType},children:[l]}}if(l&&Array.isArray(e.effects)){let m=l;for(let x of e.effects){let w=x&&typeof x.toOperation=="function"?x.toOperation():x;m={metadata:{...m.metadata},operation:{op:String(w.op??"effect"),id:e.id?`${e.id}-${w.op??"effect"}`:void 0,effect:x,...w,dataType:m.operation.dataType},children:[m]}}l=m}if(l&&e.vision){let m=e.vision,x=typeof m.toOperation=="function"?m.toOperation():m;l={metadata:{...l.metadata},operation:{op:"Vision",id:e.id,effect:m,...x,dataType:l.operation.dataType},children:[l]}}}if(e.kind==="media")a=l?[l]:[];else if("children"in e&&e.children){let m=e.kind==="flex"&&typeof e.staggerFrames=="number"?e.staggerFrames:0,x=e.kind==="flex"&&typeof e.staggerDirection=="string"?e.staggerDirection:"forward",w=typeof e.startFrame=="number"&&Number.isFinite(e.startFrame)?Math.round(e.startFrame):0,S=typeof e.durationFrames=="number"&&Number.isFinite(e.durationFrames)?Math.round(e.durationFrames):A,N=e.children;a=N.map((M,G)=>{let j=MA(G,N.length,m,x),R=n+w+j;return ds(M,t,r,R,o,M.durationFrames===void 0?S:void 0,i)})}let u="Image",g;if(l){u=l.operation?.dataType??"Image";let x=u==="Image"||u==="SVG"?void 0:Di(l)?.durationMs;x!=null&&(g=Math.max(1,Math.round(x/1e3*r)))}let p=l?.operation?.dataType==="Caption",f=e.kind==="flex"||e.kind==="block"||e.kind==="box",d=(typeof e.startFrame=="number"&&Number.isFinite(e.startFrame)&&e.startFrame>=0?Math.round(e.startFrame):0)+n,h=typeof e.durationFrames=="number"&&Number.isFinite(e.durationFrames)&&e.durationFrames>0?Math.round(e.durationFrames):void 0,I=A??Math.round((o??1e4)/1e3*r);if(f&&a.length>0){if(h===void 0){let m=a.map(x=>(x.operation.startFrame??0)+(x.operation.durationFrames??I));h=Math.max(1,Math.max(...m)-d)}}else p&&g!==void 0&&g>0?h=g:h!==void 0?(u==="Video"||u==="Audio")&&!(e.kind==="media"&&e.timeRemap)&&g!==void 0&&g>0&&(h=Math.min(h,g)):h=g??A??Math.round((o??1e4)/1e3*r);let b=h/r*1e3;if(e.kind==="media"&&l){let m=l;for(;m;)(!m.metadata?.durationMs||m.metadata.durationMs<=0)&&(m.metadata||(m.metadata={}),m.metadata.durationMs=b),m.operation?.sourceMeta&&!m.operation.sourceMeta.durationMs&&(m.operation.sourceMeta.durationMs=b),m=m.children?.[0]}let D=e.kind==="media"&&e.timeRemap?.kind==="signal"?e.timeRemap:void 0;if(D&&!i)throw new Error(`Signal timeRemap on '${e.id}' has no resolver`);return{metadata:{durationMs:b},operation:{op:"CompositorLayer",...e,startFrame:d,durationFrames:h,dataType:u,...D&&i&&{timeRemap:i(D,{id:e.id,startFrame:d,durationFrames:h})}},children:a}}function md(e,t){let{isVideoMode:r,fps:n,durationMs:o,resolveMedia:A,signals:i}=t,a={...SA(e.layout),...i??e.signals??{}},s=t.resolveMediaSignal??((g,p)=>fs(g,p,{fps:n,compositionDurationFrames:Math.round((o??0)/1e3*n),signals:a})),c={metadata:{width:e.width,height:e.height,fps:n,...o!==void 0&&{durationMs:o}},operation:{op:"Compositor",width:e.width,height:e.height,fps:n,mode:e.mode??"Video",backgroundColor:e.backgroundColor,...e.antialias3d!==void 0&&{antialias3d:e.antialias3d},volume:e.volume??1,dataType:r?"Video":"Image",layout:e.layout,signals:a,...e.onRequestFrame||t.onRequestFrame?{onRequestFrame:e.onRequestFrame??t.onRequestFrame}:{}},children:jo(e.layout).map(g=>ds(g,A,n,0,o,void 0,s))},l=Array.isArray(t.effects)?t.effects:Array.isArray(e.effects)?e.effects:[];for(let g of l){let p=g&&typeof g.toOperation=="function"?g.toOperation():g;c={metadata:{...c.metadata},operation:{...p,dataType:c.operation.dataType},children:[c]}}let u=e.vision??t.vision;if(u){let g=typeof u.toOperation=="function"?u.toOperation():u;c={metadata:{...c.metadata},operation:{op:"Vision",...g,dataType:c.operation.dataType},children:[c]}}return c}function Id(e){let t=[],r=n=>{n?.operation?.op==="CompositorLayer"&&t.push(n);for(let o of n?.children??[])r(o)};for(let n of e)r(n);return t}export{uo as a,Li as b,Z as c,Ee as d,Kr as e,ms as f,Lr as g,Ji as h,Ki as i,zo as j,Ko as k,Qt as l,gr as m,eu as n,tu as o,Wn as p,lu as q,ho as r,uu as s,bu as t,Xn as u,Io as v,wo as w,Ra as x,gf as y,Bf as z,Da as A,_a as B,Ma as C,$p as D,Sa as E,Pa as F,mc as G,nf as H,bA as I,Qf as J,zc as K,rl as L,Of as M,od as N,Ad as O,_A as P,Il as Q,Wf as R,jo as S,Cl as T,fs as U,MA as V,td as W,md as X,Id as Y};