framefields 2.2.0 → 2.3.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.
- package/README.md +11 -2
- package/dist/audio/index.d.mts +4 -4
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio-BvYmTu5T.d.mts → audio-BNnEclHU.d.mts} +3 -3
- package/dist/{audio-BvYmTu5T.d.mts.map → audio-BNnEclHU.d.mts.map} +1 -1
- package/dist/{audio-DMUr01vS.mjs → audio-CS104aUj.mjs} +3 -3
- package/dist/{audio-DMUr01vS.mjs.map → audio-CS104aUj.mjs.map} +1 -1
- package/dist/{dist-CT___nEU.mjs → dist-BOdxAhOT.mjs} +7 -5
- package/dist/dist-BOdxAhOT.mjs.map +1 -0
- package/dist/{dist-cjxDXQdx.mjs → dist-jU289ehm.mjs} +209 -31
- package/dist/{dist-cjxDXQdx.mjs.map → dist-jU289ehm.mjs.map} +1 -1
- package/dist/effects/index.d.mts +5 -5
- package/dist/effects/index.mjs +36 -36
- package/dist/{effects-C06-AOge.mjs → effects-BzOlVD-w.mjs} +532 -4
- package/dist/effects-BzOlVD-w.mjs.map +1 -0
- package/dist/fonts/index.d.mts +1 -1
- package/dist/fonts/index.mjs +2 -2
- package/dist/{fonts-C0UuLQvr.mjs → fonts-BhlV_3Qt.mjs} +2 -2
- package/dist/{fonts-C0UuLQvr.mjs.map → fonts-BhlV_3Qt.mjs.map} +1 -1
- package/dist/{gpu-Du7GpVFW.mjs → gpu-BA1Wz_mS.mjs} +2 -2
- package/dist/{gpu-Du7GpVFW.mjs.map → gpu-BA1Wz_mS.mjs.map} +1 -1
- package/dist/{index-B-oUlLoO.d.mts → index-AdrZIWT0.d.mts} +27 -2
- package/dist/index-AdrZIWT0.d.mts.map +1 -0
- package/dist/{index-BcA8rep0.d.mts → index-B-55dXDu.d.mts} +1 -1
- package/dist/{index-BcA8rep0.d.mts.map → index-B-55dXDu.d.mts.map} +1 -1
- package/dist/{index-D-Iek5sq.d.mts → index-B3BwLHa6.d.mts} +3 -3
- package/dist/{index-D-Iek5sq.d.mts.map → index-B3BwLHa6.d.mts.map} +1 -1
- package/dist/{index-CwbszPDG.d.mts → index-BU51pxZO.d.mts} +956 -9
- package/dist/index-BU51pxZO.d.mts.map +1 -0
- package/dist/{index-XdQPNJnq.d.mts → index-CeRv1KC0.d.mts} +3 -3
- package/dist/{index-XdQPNJnq.d.mts.map → index-CeRv1KC0.d.mts.map} +1 -1
- package/dist/{index-DXfp_T-3.d.mts → index-Cg2ptXcs.d.mts} +2 -2
- package/dist/{index-DXfp_T-3.d.mts.map → index-Cg2ptXcs.d.mts.map} +1 -1
- package/dist/{index-CdyE1tst.d.mts → index-QmkcUL3W.d.mts} +2 -2
- package/dist/{index-CdyE1tst.d.mts.map → index-QmkcUL3W.d.mts.map} +1 -1
- package/dist/index.d.mts +1383 -11
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +3122 -83
- package/dist/index.mjs.map +1 -1
- package/dist/preview/index.d.mts +2 -2
- package/dist/preview/index.mjs +10 -10
- package/dist/{preview-M0TsUzC6.mjs → preview-BVyG76gO.mjs} +2 -2
- package/dist/{preview-M0TsUzC6.mjs.map → preview-BVyG76gO.mjs.map} +1 -1
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/chunk-2JKXYG6J.mjs +127 -0
- package/dist/preview-engine/chunk-7I7PKKDL.mjs +214 -0
- package/dist/preview-engine/chunk-BQY4BUMN.mjs +1 -0
- package/dist/preview-engine/{chunk-RSMO7NPN.mjs → chunk-BSOJR4JU.mjs} +1 -1
- package/dist/preview-engine/chunk-BVA5NGSH.mjs +1 -0
- package/dist/preview-engine/{chunk-ZTHWCQ2A.mjs → chunk-FNE22WGA.mjs} +1 -1
- package/dist/preview-engine/chunk-GCTVRM7J.mjs +1522 -0
- package/dist/preview-engine/chunk-KERW7QJ4.mjs +174 -0
- package/dist/preview-engine/{chunk-7B5S5D4N.mjs → chunk-TPAEN6VV.mjs} +1 -1
- package/dist/preview-engine/chunk-YQRKT47I.mjs +1 -0
- package/dist/preview-engine/crypto-W5UAWSNT.mjs +1 -0
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +26 -26
- package/dist/preview-engine/player.mjs +5 -5
- package/dist/preview-engine/rapier-AHBIGHEL.mjs +1 -0
- package/dist/preview-engine/rapier-JD7KNQRV.mjs +1 -0
- package/dist/preview-engine/renderers-3F5AIDEL.mjs +228 -0
- package/dist/preview-engine/renderers-6ODPWZ2R.mjs +96 -0
- package/dist/preview-engine/renderers-7NCG6BYS.mjs +94 -0
- package/dist/preview-engine/renderers-BGGRPAVV.mjs +363 -0
- package/dist/preview-engine/renderers-DN2GF3I7.mjs +82 -0
- package/dist/preview-engine/renderers-FGHOLJJK.mjs +44 -0
- package/dist/preview-engine/renderers-FK72LKQC.mjs +275 -0
- package/dist/preview-engine/renderers-FQWWAETX.mjs +203 -0
- package/dist/preview-engine/renderers-HMR2NAD7.mjs +81 -0
- package/dist/preview-engine/renderers-HUW2ZMS3.mjs +1 -0
- package/dist/preview-engine/renderers-JLFGBYN4.mjs +78 -0
- package/dist/preview-engine/renderers-LLUEOW5T.mjs +77 -0
- package/dist/preview-engine/renderers-NC64EQDE.mjs +1 -0
- package/dist/preview-engine/renderers-PVYP2ONH.mjs +76 -0
- package/dist/preview-engine/renderers-TPBPNXWH.mjs +26 -0
- package/dist/preview-engine/renderers-UJ4YVJZT.mjs +80 -0
- package/dist/preview-engine/renderers-WHBDHTRI.mjs +78 -0
- package/dist/preview-engine/renderers-WP67KK5K.mjs +89 -0
- package/dist/preview-engine/renderers-YNFKFM7D.mjs +67 -0
- package/dist/preview-engine/renderers-ZSENYGIY.mjs +84 -0
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/{program-DzknMiY0.mjs → program-CCSfHMfh.mjs} +346 -13
- package/dist/program-CCSfHMfh.mjs.map +1 -0
- package/dist/renderer/index.d.mts +2 -2
- package/dist/renderer/index.mjs +2 -2
- package/dist/renderer-1Kv7oA86.mjs +5 -0
- package/dist/{renderer-1vhaKMeg.mjs → renderer-1uLtqb74.mjs} +141 -56
- package/dist/renderer-1uLtqb74.mjs.map +1 -0
- package/dist/{renderer-BerD3T-X.mjs → renderer-4VpA7LfU.mjs} +2 -2
- package/dist/{renderer-BerD3T-X.mjs.map → renderer-4VpA7LfU.mjs.map} +1 -1
- package/dist/{renderer-BNqwn0gZ.mjs → renderer-8BM6sJUR.mjs} +2 -2
- package/dist/{renderer-BNqwn0gZ.mjs.map → renderer-8BM6sJUR.mjs.map} +1 -1
- package/dist/renderer-AVHJ33nv.mjs +5 -0
- package/dist/{renderer-0gY4IQhM.mjs → renderer-AtLlZMQ9.mjs} +2 -2
- package/dist/{renderer-0gY4IQhM.mjs.map → renderer-AtLlZMQ9.mjs.map} +1 -1
- package/dist/renderer-B8dJGf8R.mjs +6 -0
- package/dist/{renderer-57ATc_mQ.mjs → renderer-B93zd3sx.mjs} +2 -2
- package/dist/{renderer-57ATc_mQ.mjs.map → renderer-B93zd3sx.mjs.map} +1 -1
- package/dist/renderer-BARst3ZD.mjs +3 -0
- package/dist/{renderer-CJB9nU1x.mjs → renderer-BD7Lmb8h.mjs} +3 -3
- package/dist/{renderer-CJB9nU1x.mjs.map → renderer-BD7Lmb8h.mjs.map} +1 -1
- package/dist/renderer-BEA6nknY.mjs +5 -0
- package/dist/renderer-BFRI5alp.mjs +222 -0
- package/dist/renderer-BFRI5alp.mjs.map +1 -0
- package/dist/{renderer-BiwIh_w4.mjs → renderer-BG5sbTXt.mjs} +3 -3
- package/dist/{renderer-BiwIh_w4.mjs.map → renderer-BG5sbTXt.mjs.map} +1 -1
- package/dist/{renderer-DtgMsjyL.mjs → renderer-BI4OMlEx.mjs} +2 -2
- package/dist/{renderer-DtgMsjyL.mjs.map → renderer-BI4OMlEx.mjs.map} +1 -1
- package/dist/renderer-BOfi06L2.mjs +5 -0
- package/dist/renderer-BOhvtAGL.mjs +5 -0
- package/dist/renderer-BQT3GI9g.mjs +5 -0
- package/dist/{renderer-DJfFc-XW.mjs → renderer-BRwp1kV-.mjs} +3 -3
- package/dist/{renderer-DJfFc-XW.mjs.map → renderer-BRwp1kV-.mjs.map} +1 -1
- package/dist/{renderer-u8ynJtAC.mjs → renderer-BVUTOGHs.mjs} +2 -2
- package/dist/{renderer-u8ynJtAC.mjs.map → renderer-BVUTOGHs.mjs.map} +1 -1
- package/dist/renderer-BXmStgeT.mjs +5 -0
- package/dist/renderer-Bajxo7Nt.mjs +5 -0
- package/dist/{renderer-BHskWZNG.mjs → renderer-Bel1UHA5.mjs} +2 -2
- package/dist/{renderer-AF884a7T.mjs → renderer-BetA_iVd.mjs} +3 -3
- package/dist/{renderer-AF884a7T.mjs.map → renderer-BetA_iVd.mjs.map} +1 -1
- package/dist/{renderer-DpW_LxLO.mjs → renderer-BmDpyiII.mjs} +3 -3
- package/dist/{renderer-DpW_LxLO.mjs.map → renderer-BmDpyiII.mjs.map} +1 -1
- package/dist/{renderer-BteUC_7n.mjs → renderer-BonWt8jF.mjs} +3 -3
- package/dist/{renderer-BteUC_7n.mjs.map → renderer-BonWt8jF.mjs.map} +1 -1
- package/dist/{renderer-BC8XOVl5.mjs → renderer-BpEsZG3t.mjs} +3 -3
- package/dist/{renderer-BC8XOVl5.mjs.map → renderer-BpEsZG3t.mjs.map} +1 -1
- package/dist/{renderer-aArb4RwJ.mjs → renderer-BvBIHi6N.mjs} +2 -2
- package/dist/{renderer-aArb4RwJ.mjs.map → renderer-BvBIHi6N.mjs.map} +1 -1
- package/dist/{renderer-Db3JIF1K.mjs → renderer-BvvuGfZk.mjs} +3 -3
- package/dist/{renderer-Db3JIF1K.mjs.map → renderer-BvvuGfZk.mjs.map} +1 -1
- package/dist/renderer-BzRR0KMm.mjs +5 -0
- package/dist/{renderer-DEuIwr-t.mjs → renderer-Bzl0s07U.mjs} +2 -2
- package/dist/{renderer-DEuIwr-t.mjs.map → renderer-Bzl0s07U.mjs.map} +1 -1
- package/dist/renderer-C39GD6jP.mjs +331 -0
- package/dist/renderer-C39GD6jP.mjs.map +1 -0
- package/dist/renderer-C3Gjy2iE.mjs +5 -0
- package/dist/{renderer-Br6KyRO_.mjs → renderer-C3lPwajT.mjs} +3 -3
- package/dist/{renderer-Br6KyRO_.mjs.map → renderer-C3lPwajT.mjs.map} +1 -1
- package/dist/renderer-C5hQgkz-.mjs +5 -0
- package/dist/{renderer-CebB0v1y.mjs → renderer-C6cF5seJ.mjs} +2 -2
- package/dist/{renderer-CebB0v1y.mjs.map → renderer-C6cF5seJ.mjs.map} +1 -1
- package/dist/renderer-C8GZ0pCV.mjs +191 -0
- package/dist/renderer-C8GZ0pCV.mjs.map +1 -0
- package/dist/{renderer-CuVPo-wP.mjs → renderer-CFe9pZFN.mjs} +2 -2
- package/dist/{renderer-CuVPo-wP.mjs.map → renderer-CFe9pZFN.mjs.map} +1 -1
- package/dist/renderer-CLF-MiOA.mjs +5 -0
- package/dist/renderer-CLa43fCd.mjs +5 -0
- package/dist/{renderer-Bvx56GR6.mjs → renderer-CLdwOhST.mjs} +2 -2
- package/dist/{renderer-Bvx56GR6.mjs.map → renderer-CLdwOhST.mjs.map} +1 -1
- package/dist/renderer-CMK1d6w_.mjs +5 -0
- package/dist/{renderer-CursFKUf.mjs → renderer-CMdtUn5o.mjs} +2 -2
- package/dist/{renderer-CursFKUf.mjs.map → renderer-CMdtUn5o.mjs.map} +1 -1
- package/dist/{renderer-DXqIslFk.mjs → renderer-CNYfB5cC.mjs} +2 -2
- package/dist/{renderer-DXqIslFk.mjs.map → renderer-CNYfB5cC.mjs.map} +1 -1
- package/dist/renderer-CPEQOe3u.mjs +5 -0
- package/dist/{renderer-BbdZ0YHR.mjs → renderer-CWx3Kg79.mjs} +3 -3
- package/dist/{renderer-BbdZ0YHR.mjs.map → renderer-CWx3Kg79.mjs.map} +1 -1
- package/dist/{renderer-CWBHVCvA.mjs → renderer-CdOy3EBJ.mjs} +2 -2
- package/dist/{renderer-CWBHVCvA.mjs.map → renderer-CdOy3EBJ.mjs.map} +1 -1
- package/dist/{renderer-DupsdRIw.mjs → renderer-Celrh689.mjs} +3 -3
- package/dist/{renderer-DupsdRIw.mjs.map → renderer-Celrh689.mjs.map} +1 -1
- package/dist/renderer-CemfjOM9.mjs +5 -0
- package/dist/{renderer-jYxN4mHn.mjs → renderer-ChloaI6P.mjs} +3 -3
- package/dist/{renderer-jYxN4mHn.mjs.map → renderer-ChloaI6P.mjs.map} +1 -1
- package/dist/{renderer-DqdhsSwS.mjs → renderer-CiMpdh0s.mjs} +2 -2
- package/dist/{renderer-DqdhsSwS.mjs.map → renderer-CiMpdh0s.mjs.map} +1 -1
- package/dist/renderer-CkcrScs9.mjs +5 -0
- package/dist/{renderer-CMT4QcpV.mjs → renderer-Cn6VlWHZ.mjs} +3 -3
- package/dist/{renderer-CMT4QcpV.mjs.map → renderer-Cn6VlWHZ.mjs.map} +1 -1
- package/dist/renderer-CqewgazK.mjs +224 -0
- package/dist/renderer-CqewgazK.mjs.map +1 -0
- package/dist/{renderer-C6md3msE.mjs → renderer-Cu5k5D9N.mjs} +2 -2
- package/dist/{renderer-C6md3msE.mjs.map → renderer-Cu5k5D9N.mjs.map} +1 -1
- package/dist/{renderer-id8TbKBY.mjs → renderer-CuphUktB.mjs} +2 -2
- package/dist/{renderer-id8TbKBY.mjs.map → renderer-CuphUktB.mjs.map} +1 -1
- package/dist/renderer-CwrLihY6.mjs +5 -0
- package/dist/{renderer-BzDjy1_x.mjs → renderer-D1Jt-c3F.mjs} +2 -2
- package/dist/{renderer-BzDjy1_x.mjs.map → renderer-D1Jt-c3F.mjs.map} +1 -1
- package/dist/{renderer-Beg7FLt2.mjs → renderer-D1wd0FhZ.mjs} +75 -27
- package/dist/renderer-D1wd0FhZ.mjs.map +1 -0
- package/dist/{renderer-jqByPgkD.mjs → renderer-D26S5hUh.mjs} +2 -2
- package/dist/{renderer-jqByPgkD.mjs.map → renderer-D26S5hUh.mjs.map} +1 -1
- package/dist/renderer-D4S6i2MC.mjs +5 -0
- package/dist/{renderer-BmGPTWwV.mjs → renderer-D7ss6fLB.mjs} +3 -3
- package/dist/{renderer-BmGPTWwV.mjs.map → renderer-D7ss6fLB.mjs.map} +1 -1
- package/dist/renderer-DB8F0XoP.mjs +5 -0
- package/dist/{renderer-PKQNH21k.mjs → renderer-DCGLXnYW.mjs} +2 -2
- package/dist/{renderer-CrABA3lB.mjs → renderer-DCYabwlC.mjs} +2 -2
- package/dist/{renderer-CrABA3lB.mjs.map → renderer-DCYabwlC.mjs.map} +1 -1
- package/dist/renderer-DGpVLJOn.mjs +5 -0
- package/dist/renderer-DGxibeSa.mjs +5 -0
- package/dist/renderer-DJQm3bAW.mjs +5 -0
- package/dist/{renderer-DD8napek.mjs → renderer-DMZ5aLU1.mjs} +2 -2
- package/dist/{renderer-DD8napek.mjs.map → renderer-DMZ5aLU1.mjs.map} +1 -1
- package/dist/renderer-DMftVSfX.mjs +5 -0
- package/dist/renderer-DNpovOd8.mjs +5 -0
- package/dist/renderer-DO5r7ZV-.mjs +658 -0
- package/dist/renderer-DO5r7ZV-.mjs.map +1 -0
- package/dist/{renderer-DZXbgVMK.mjs → renderer-DOWekunR.mjs} +3 -3
- package/dist/{renderer-DZXbgVMK.mjs.map → renderer-DOWekunR.mjs.map} +1 -1
- package/dist/{renderer-Cce2fgpX.mjs → renderer-DPWeKe_x.mjs} +3 -3
- package/dist/{renderer-Cce2fgpX.mjs.map → renderer-DPWeKe_x.mjs.map} +1 -1
- package/dist/{renderer-CE7fwGgw.mjs → renderer-DQtk282o.mjs} +29 -8
- package/dist/renderer-DQtk282o.mjs.map +1 -0
- package/dist/renderer-DSHlvKQk.mjs +5 -0
- package/dist/renderer-DUBb7D17.mjs +219 -0
- package/dist/renderer-DUBb7D17.mjs.map +1 -0
- package/dist/renderer-DYtrdR2p.mjs +5 -0
- package/dist/{renderer-Bn2eQE-t.mjs → renderer-DaCsT-XU.mjs} +3 -3
- package/dist/{renderer-Bn2eQE-t.mjs.map → renderer-DaCsT-XU.mjs.map} +1 -1
- package/dist/{renderer-D1Cm21eq.mjs → renderer-DcAfp1Er.mjs} +2 -2
- package/dist/{renderer-D1Cm21eq.mjs.map → renderer-DcAfp1Er.mjs.map} +1 -1
- package/dist/{renderer-C8uKdelk.mjs → renderer-DdlaBsk_.mjs} +2 -2
- package/dist/{renderer-C8uKdelk.mjs.map → renderer-DdlaBsk_.mjs.map} +1 -1
- package/dist/renderer-DerDxKK3.mjs +220 -0
- package/dist/renderer-DerDxKK3.mjs.map +1 -0
- package/dist/{renderer-CeyAgJnw.mjs → renderer-DfkWYUTX.mjs} +2 -2
- package/dist/{renderer-DHGTzype.mjs → renderer-Dh-OF6aH.mjs} +2 -2
- package/dist/{renderer-DHGTzype.mjs.map → renderer-Dh-OF6aH.mjs.map} +1 -1
- package/dist/renderer-Dk-THZHp.mjs +222 -0
- package/dist/renderer-Dk-THZHp.mjs.map +1 -0
- package/dist/{renderer-BT-_EoXw.d.mts → renderer-DlESyfg7.d.mts} +2 -2
- package/dist/{renderer-BT-_EoXw.d.mts.map → renderer-DlESyfg7.d.mts.map} +1 -1
- package/dist/renderer-DpWRj6zF.mjs +203 -0
- package/dist/renderer-DpWRj6zF.mjs.map +1 -0
- package/dist/renderer-DpwlN4LH.mjs +233 -0
- package/dist/renderer-DpwlN4LH.mjs.map +1 -0
- package/dist/{renderer-DvFaC_-7.mjs → renderer-Dq4aO7az.mjs} +2 -2
- package/dist/{renderer-DvFaC_-7.mjs.map → renderer-Dq4aO7az.mjs.map} +1 -1
- package/dist/renderer-DuSImLUz.mjs +5 -0
- package/dist/{renderer-BeIUgp1r.mjs → renderer-DukD7S3w.mjs} +2 -2
- package/dist/{renderer-BeIUgp1r.mjs.map → renderer-DukD7S3w.mjs.map} +1 -1
- package/dist/{renderer-EemDpvv3.mjs → renderer-FXUCKps6.mjs} +3 -3
- package/dist/{renderer-EemDpvv3.mjs.map → renderer-FXUCKps6.mjs.map} +1 -1
- package/dist/renderer-FbyMYKXe.mjs +5 -0
- package/dist/renderer-HMl2V4iM.mjs +541 -0
- package/dist/renderer-HMl2V4iM.mjs.map +1 -0
- package/dist/renderer-LM_XIKl1.mjs +203 -0
- package/dist/renderer-LM_XIKl1.mjs.map +1 -0
- package/dist/renderer-NMFv7Auz.mjs +5 -0
- package/dist/{renderer-YbaCzPcG.mjs → renderer-O1b-oYJE.mjs} +2 -2
- package/dist/renderer-P3vpdUnb.mjs +5 -0
- package/dist/renderer-PknbdJyL.mjs +208 -0
- package/dist/renderer-PknbdJyL.mjs.map +1 -0
- package/dist/renderer-QTOm26Lg.mjs +5 -0
- package/dist/renderer-YJ3Yukou.mjs +215 -0
- package/dist/renderer-YJ3Yukou.mjs.map +1 -0
- package/dist/{renderer-p_C_T9Kn.mjs → renderer-YdLL2o6d.mjs} +2 -2
- package/dist/{renderer-p_C_T9Kn.mjs.map → renderer-YdLL2o6d.mjs.map} +1 -1
- package/dist/renderer-ahzhMa5q.mjs +5 -0
- package/dist/{renderer-D-vRKssW.mjs → renderer-c-bwxMde.mjs} +2 -2
- package/dist/{renderer-D-vRKssW.mjs.map → renderer-c-bwxMde.mjs.map} +1 -1
- package/dist/renderer-dThfTNge.mjs +5 -0
- package/dist/renderer-dUkOBfGB.mjs +308 -0
- package/dist/renderer-dUkOBfGB.mjs.map +1 -0
- package/dist/renderer-dgAS_k7B.mjs +5 -0
- package/dist/renderer-g-ui08Lh.mjs +204 -0
- package/dist/renderer-g-ui08Lh.mjs.map +1 -0
- package/dist/renderer-kSs8VtY7.mjs +223 -0
- package/dist/renderer-kSs8VtY7.mjs.map +1 -0
- package/dist/{renderer-KnCcN_Nz.mjs → renderer-pPiQwFYh.mjs} +2 -2
- package/dist/{renderer-KnCcN_Nz.mjs.map → renderer-pPiQwFYh.mjs.map} +1 -1
- package/dist/{renderer-D8thCpS7.mjs → renderer-wL-ly4fT.mjs} +3 -3
- package/dist/{renderer-D8thCpS7.mjs.map → renderer-wL-ly4fT.mjs.map} +1 -1
- package/dist/{renderers-CP8CFWDs-BA-4l6By.mjs → renderers-CP8CFWDs-CVHwMTiz.mjs} +2 -2
- package/dist/{renderers-CP8CFWDs-BA-4l6By.mjs.map → renderers-CP8CFWDs-CVHwMTiz.mjs.map} +1 -1
- package/dist/signals/index.d.mts +5 -5
- package/dist/signals/index.mjs +4 -4
- package/package.json +58 -55
- package/dist/dist-CT___nEU.mjs.map +0 -1
- package/dist/effects-C06-AOge.mjs.map +0 -1
- package/dist/index-B-oUlLoO.d.mts.map +0 -1
- package/dist/index-CwbszPDG.d.mts.map +0 -1
- package/dist/preview-engine/chunk-G4K6TLNA.mjs +0 -1
- package/dist/preview-engine/chunk-HVCAOHNI.mjs +0 -1
- package/dist/preview-engine/chunk-KBO6EX3M.mjs +0 -1448
- package/dist/preview-engine/chunk-N4LHIPHZ.mjs +0 -340
- package/dist/preview-engine/chunk-NECOKNHA.mjs +0 -174
- package/dist/preview-engine/renderers-T4JMJXWL.mjs +0 -1
- package/dist/preview-engine/renderers-VFV5QWO3.mjs +0 -1
- package/dist/preview-engine/renderers-VUL4HBX3.mjs +0 -228
- package/dist/program-DzknMiY0.mjs.map +0 -1
- package/dist/renderer--IDyGdqT.mjs +0 -5
- package/dist/renderer-17K4tjid.mjs +0 -5
- package/dist/renderer-1vhaKMeg.mjs.map +0 -1
- package/dist/renderer-Ab9Ttn_m.mjs +0 -5
- package/dist/renderer-B-roDBBo.mjs +0 -5
- package/dist/renderer-B03uwoUX.mjs +0 -5
- package/dist/renderer-B3BI_7YJ.mjs +0 -5
- package/dist/renderer-BGD4lQ74.mjs +0 -5
- package/dist/renderer-BHXhYfeC.mjs +0 -5
- package/dist/renderer-BRsTIMFa.mjs +0 -5
- package/dist/renderer-Beg7FLt2.mjs.map +0 -1
- package/dist/renderer-BjMTtYZw.mjs +0 -5
- package/dist/renderer-BoCh3Yts.mjs +0 -5
- package/dist/renderer-BqPbR8c4.mjs +0 -5
- package/dist/renderer-Bxa4SDm9.mjs +0 -3
- package/dist/renderer-C4Da2I1-.mjs +0 -5
- package/dist/renderer-C93X6dgl.mjs +0 -5
- package/dist/renderer-CE7fwGgw.mjs.map +0 -1
- package/dist/renderer-CMAwFfGx.mjs +0 -6
- package/dist/renderer-CRXeSuX2.mjs +0 -5
- package/dist/renderer-CSp6WYBN.mjs +0 -5
- package/dist/renderer-CUXX7HTL.mjs +0 -5
- package/dist/renderer-CUgThpka.mjs +0 -5
- package/dist/renderer-CeVtufiT.mjs +0 -5
- package/dist/renderer-CespkZUk.mjs +0 -5
- package/dist/renderer-D1l47xhL.mjs +0 -5
- package/dist/renderer-DDuG18J8.mjs +0 -5
- package/dist/renderer-DFhrFSMn.mjs +0 -5
- package/dist/renderer-DO48vQ7Y.mjs +0 -5
- package/dist/renderer-DTC39B_n.mjs +0 -5
- package/dist/renderer-DbyU3hNF.mjs +0 -5
- package/dist/renderer-DftVpmfu.mjs +0 -5
- package/dist/renderer-Dj5jm63K.mjs +0 -5
- package/dist/renderer-Dju57ZaF.mjs +0 -5
- package/dist/renderer-Dn8TQCw7.mjs +0 -5
- package/dist/renderer-ETF46K0D.mjs +0 -5
- package/dist/renderer-azYzWGC3.mjs +0 -5
- package/dist/renderer-dxNoRW59.mjs +0 -5
- package/dist/renderer-fdfelx_I.mjs +0 -5
- package/dist/renderer-snwEKwMw.mjs +0 -5
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{A as nb,B as ob,C as sb,D as ub,E as lb,F as cb,H as Sc,I as kc,J as _n,K as In,L as Tc,M as Pc,N as Mc,O as Cc,P as Nc,Q as Gr,R as Ac,a as Nl,b as Al,c as Y,d as Qe,e as Fl,f as Zg,g as Kg,h as Jg,i as Qg,j as eb,k as Rl,l as Bl,m as El,n as Ul,o as _l,p as Il,s as bc,t as to,u as ro,v as no,w as yc,x as xc,y as tb,z as rb}from"./chunk-KBO6EX3M.mjs";import{a as vc}from"./chunk-PIAJWALT.mjs";import{a as En,b as Ja}from"./chunk-PJ3DVG45.mjs";import{a as pc}from"./chunk-OCX5AD23.mjs";import{a as Qa,b as fc,d as gc,e as ib,f as ab}from"./chunk-ZTHWCQ2A.mjs";import{a as mc}from"./chunk-LKYN3BM2.mjs";import{a as Jl,b as Ql,c as ec,d as tc,e as rc,f as nc,g as ic,h as ac,i as oc,j as sc,k as uc,l as lc,m as cc,n as dc,o as eo}from"./chunk-RQLMW6MA.mjs";import{$ as hi,A as pd,B as fd,C as hd,D as gd,E as Zn,F as ct,G as Kn,H as Jn,I as Qn,J as ei,K as bd,L as ti,M as ri,N as ni,O as ii,P as ai,Q as oi,R as si,S as ui,T as li,U as ci,V as di,W as mi,X as pi,Y as ar,Z as dt,_ as fi,a as jc,aa as gi,b as Vc,c as Wc,d as Hc,e as Yc,f as Xc,g as qc,h as Zc,i as Kc,j as Jc,k as Xn,l as qn,m as Qc,n as ed,o as td,p as rd,q as nd,r as id,s as ad,t as od,u as sd,v as ud,w as ld,x as cd,y as dd,z as md}from"./chunk-HVCAOHNI.mjs";import"./chunk-GSFN4WCH.mjs";import"./chunk-5W4AFQP7.mjs";import"./chunk-OKH2VU2U.mjs";import{A as Xg,B as qg,C as io,D as Oc,E as Dc,F as $n,G as Lc,H as Fc,I as Rc,J as Bc,K as Ec,L as Uc,M as jn,N as _c,O as Vn,P as Wn,Q as Hn,R as ir,a as Ya,b as hh,c as gh,d as bh,e as yh,f as xh,g as Ah,h as Oh,i as Dh,j as Lh,k as Fh,l as Rh,m as Bh,n as Qh,o as eg,p as tg,q as rg,r as ng,s as ig,t as ag,u as og,v as sg,w as ug,x as yg,y as zg,z as Yg}from"./chunk-NECOKNHA.mjs";import"./chunk-L3CHEZMZ.mjs";import"./chunk-E3HC4GRQ.mjs";import"./chunk-QXCY2ATH.mjs";import"./chunk-7EPIRODI.mjs";import"./chunk-VXS5SIEC.mjs";import"./chunk-PAQNDZQB.mjs";import"./chunk-SZW5J72T.mjs";import"./chunk-PL4IH5V4.mjs";import"./chunk-WUKH7BD7.mjs";import"./chunk-YQZOGEPZ.mjs";import"./chunk-J2R5R7YY.mjs";import"./chunk-WSIURGP2.mjs";import"./chunk-WFGJXCZT.mjs";import"./chunk-RW2F3XLQ.mjs";import"./chunk-PXT52LEH.mjs";import"./chunk-FU7AIAMM.mjs";import"./chunk-OJ2PKBXE.mjs";import"./chunk-5AUB4Y3L.mjs";import"./chunk-SGPRLTNF.mjs";import{a as vh,b as wh}from"./chunk-YKMBRUAE.mjs";import"./chunk-WH5Q2NFN.mjs";import"./chunk-PEWYB6WP.mjs";import"./chunk-AXHB4J37.mjs";import"./chunk-RSMO7NPN.mjs";import{a as Gn,b as zn}from"./chunk-N4LHIPHZ.mjs";import"./chunk-LBRVQ4GE.mjs";import{a as $g,b as jg,c as Vg,d as Wg,e as Hg}from"./chunk-VXUJWPIK.mjs";import"./chunk-AXQZX3TC.mjs";import"./chunk-XOEEGC4Z.mjs";import"./chunk-IUPDOATX.mjs";import"./chunk-2MZXSWVT.mjs";import"./chunk-3UPI4EPV.mjs";import{i as Rn}from"./chunk-XKO4RYKN.mjs";import{a as Eg,b as Ug,c as Za,d as _g,e as Ig,f as Gg}from"./chunk-X6HUH6K4.mjs";import{a as Gl}from"./chunk-JAJOZG5P.mjs";import{a as Gc,b as zc,c as $c,d as Yn}from"./chunk-CURR5X7D.mjs";import"./chunk-O2RNIQXT.mjs";import"./chunk-FPRXK2WD.mjs";import"./chunk-VO2R3DWV.mjs";import"./chunk-Q2DPNVIA.mjs";import"./chunk-ZNL4W4DK.mjs";import"./chunk-NEE3KQTX.mjs";import"./chunk-K773AOF3.mjs";import"./chunk-ZH5MZQTZ.mjs";import"./chunk-GMGGDADT.mjs";import"./chunk-7J2FWGVD.mjs";import{a as Ic}from"./chunk-7B5S5D4N.mjs";import"./chunk-PFA427ZC.mjs";import{a as se}from"./chunk-FLPSWDX4.mjs";import{A as lg,B as cg,C as dg,D as mg,E as pg,F as fg,G as hg,H as gg,I as bg,a as o,c as Sh,d as kh,e as Th,f as Ph,g as Mh,h as Ch,i as Nh,j as Eh,k as Uh,l as _h,m as Ih,n as Gh,o as zh,p as $h,q as jh,r as Vh,s as Wh,t as Hh,u as Yh,v as Xh,w as qh,x as Zh,y as Kh,z as Jh}from"./chunk-NQZKBFC6.mjs";import"./chunk-ENKKLU7B.mjs";import{a as Ka,c as Ll}from"./chunk-VUFDQJ2B.mjs";import"./chunk-PR2BUYCL.mjs";import{b as wc}from"./chunk-G4K6TLNA.mjs";import{a as Ol}from"./chunk-37EFVZWT.mjs";import"./chunk-2SJ4BBMT.mjs";import{a as xg,b as vg,c as wg,d as Sg,e as kg,f as Tg,g as Pg,h as Xa,i as Mg,j as qa,k as Cg,l as Ng,m as Ag}from"./chunk-24P6DAB3.mjs";import{e as Bn}from"./chunk-NIRW77QA.mjs";import"./chunk-Q4Z54DQ7.mjs";import{d as Dl}from"./chunk-6YJP57MZ.mjs";import{a as Dt,b as nh,c as ih,d as ah,e as oh,f as sh,g as uh,h as lh,i as Sl,j as kl,k as ch,l as dh,m as mh,n as ph,o as fh,p as Tl,q as Pl,r as Ml,s as Cl}from"./chunk-63SFBHEH.mjs";import{a as lt}from"./chunk-3T4LB4ZH.mjs";import"./chunk-XN56POGE.mjs";import{e as Lt,f as zl,g as $l,h as jl,i as Vl,j as Wl,k as Hl,l as Yl,m as Xl,n as ql,o as Zl,p as Kl,s as Un,v as hc}from"./chunk-LQENNFBA.mjs";import{m as nr}from"./chunk-4GEWSUX5.mjs";import{r as he}from"./chunk-MTJHQATU.mjs";import"./chunk-IQC2I5A5.mjs";import{a as Og,b as Dg,c as Ln,d as Lg,e as Fg,f as Rg,g as Bg,h as Fn}from"./chunk-IQKIHFNZ.mjs";import{o as z}from"./chunk-YAQFFQPG.mjs";import{a as _r,b as Ir}from"./chunk-ZEYUXJIV.mjs";import{a as Ha,c as rr,d as x,e as h}from"./chunk-BVF64D6H.mjs";var Yu=Ha((ck,Hu)=>{h();var Sn=()=>new Proxy(function(){},{get:(e,t)=>t==="__esModule"?!0:t===Symbol.toPrimitive?()=>"":Sn(),apply:()=>Sn(),construct:()=>Sn()});Hu.exports=Sn()});var Ju=Ha((Bk,Ku)=>{h();var Cn=()=>new Proxy(function(){},{get:(e,t)=>t==="__esModule"?!0:t===Symbol.toPrimitive?()=>"":Cn(),apply:()=>Cn(),construct:()=>Cn()});Ku.exports=Cn()});h();h();var bi=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(Y.dot(r,n))>.95&&(n=[0,0,1]);let i=Y.normalize(Y.subtract(n,Y.multiplyScalar(r,Y.dot(n,r))));Y.lengthSq(i)<1e-4&&(i=[1,0,0]);let a=Y.normalize(Y.cross(r,i));this.frames[0]={normal:i,binormal:a,rotation:this.eulerFromFrame(r,i,a)};for(let s=0;s<t-1;s++){let u=this.samples[s].position,c=this.samples[s+1].position,l=this.samples[s].tangent,m=this.samples[s+1].tangent,d=this.frames[s].normal,p=Y.subtract(c,u),f=Y.dot(p,p),y;if(f>1e-8){let b=Y.subtract(l,Y.multiplyScalar(p,2*Y.dot(p,l)/f)),P=Y.subtract(d,Y.multiplyScalar(p,2*Y.dot(p,d)/f)),N=Y.subtract(m,b),M=Y.dot(N,N);M>1e-8?y=Y.subtract(P,Y.multiplyScalar(N,2*Y.dot(N,P)/M)):y=P}else y=d;y=Y.normalize(Y.subtract(y,Y.multiplyScalar(m,Y.dot(m,y))));let g=Y.normalize(Y.cross(m,y));this.frames[s+1]={normal:y,binormal:g,rotation:this.eulerFromFrame(m,y,g)}}}eulerFromFrame(t,r,n){let i=Math.asin(Math.max(-1,Math.min(1,-t[1])))*(180/Math.PI),a=Math.atan2(t[0],t[2])*(180/Math.PI),s=Math.atan2(r[0],r[1])*(180/Math.PI);return[i,a,s]}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,i=0,a=n-1;for(;i<a;){let M=i+a>>1;this.samples[M].distance<r?i=M+1:a=M}let s=Math.max(1,i),u=s-1,c=this.samples[u],l=this.samples[s],m=l.distance-c.distance,d=m>1e-6?(r-c.distance)/m:0,p=Y.lerp(c.position,l.position,d),f=Y.normalize(Y.lerp(c.tangent,l.tangent,d)),y=this.frames[u],g=this.frames[s],b=Y.normalize(Y.lerp(y.normal,g.normal,d)),P=Y.normalize(Y.cross(f,b)),N=[y.rotation[0]+(g.rotation[0]-y.rotation[0])*d,y.rotation[1]+(g.rotation[1]-y.rotation[1])*d,y.rotation[2]+(g.rotation[2]-y.rotation[2])*d];return{position:p,tangent:f,normal:b,binormal:P,distance:r,t:this.totalLength>0?r/this.totalLength:0,rotation:N}}static catmullRom(t,r={}){if(t.length<2)throw new Error("Catmull-Rom spline requires at least 2 waypoints");let n=!!r.closed,i=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 c=t[0],l=t[1],m=t[t.length-1],d=t[t.length-2];a.push(Y.subtract(c,Y.subtract(l,c))),a.push(...t),a.push(Y.add(m,Y.subtract(m,d)))}let s=n?t.length:t.length-1,u=[];for(let c=0;c<s;c++){let l=a[c],m=a[c+1],d=a[c+2],p=a[c+3],f=c===s-1?i:i-1;for(let y=0;y<=f;y++){let g=y/i,b=g*g,P=b*g,N=-.5*P+b-.5*g,M=1.5*P-2.5*b+1,k=-1.5*P+2*b+.5*g,A=.5*P-.5*b,v=[N*l[0]+M*m[0]+k*d[0]+A*p[0],N*l[1]+M*m[1]+k*d[1]+A*p[1],N*l[2]+M*m[2]+k*d[2]+A*p[2]],R=-1.5*b+2*g-.5,G=4.5*b-5*g,Z=-4.5*b+4*g+.5,te=1.5*b-1*g,ae=[R*l[0]+G*m[0]+Z*d[0]+te*p[0],R*l[1]+G*m[1]+Z*d[1]+te*p[1],R*l[2]+G*m[2]+Z*d[2]+te*p[2]],E=Y.normalize(ae);u.push({position:v,tangent:E})}}return e.fromRawSamples(u)}static fromRawSamples(t){let r=0,n=t.map((i,a)=>(a>0&&(r+=Y.distance(i.position,t[a-1].position)),{position:i.position,tangent:i.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 i=0;i<t.length;i++){let a=t[i],s=i===t.length-1?r:r-1;for(let u=0;u<=s;u++){let c=u/r,l=1-c,m=l*l,d=m*l,p=c*c,f=p*c,y=[d*a.p0[0]+3*m*c*a.p1[0]+3*l*p*a.p2[0]+f*a.p3[0],d*a.p0[1]+3*m*c*a.p1[1]+3*l*p*a.p2[1]+f*a.p3[1],d*a.p0[2]+3*m*c*a.p1[2]+3*l*p*a.p2[2]+f*a.p3[2]],g=[3*m*(a.p1[0]-a.p0[0])+6*l*c*(a.p2[0]-a.p1[0])+3*p*(a.p3[0]-a.p2[0]),3*m*(a.p1[1]-a.p0[1])+6*l*c*(a.p2[1]-a.p1[1])+3*p*(a.p3[1]-a.p2[1]),3*m*(a.p1[2]-a.p0[2])+6*l*c*(a.p2[2]-a.p1[2])+3*p*(a.p3[2]-a.p2[2])],b=Y.normalize(g);n.push({position:y,tangent:b})}}return e.fromRawSamples(n)}static helix(t){let{center:r,radius:n,pitch:i,turns:a,axis:s="z",samplesPerTurn:u=60}=t,c=Math.max(10,Math.round(a*u)),l=[];for(let m=0;m<=c;m++){let d=m/c,p=d*a*Math.PI*2,f=(d-.5)*i*a,y=Math.cos(p),g=Math.sin(p),b,P;s==="z"?(b=[r[0]+n*y,r[1]+n*g,r[2]+f],P=[-n*g,n*y,i*a/(a*Math.PI*2)]):s==="y"?(b=[r[0]+n*y,r[1]+f,r[2]+n*g],P=[-n*g,i*a/(a*Math.PI*2),n*y]):(b=[r[0]+f,r[1]+n*y,r[2]+n*g],P=[i*a/(a*Math.PI*2),-n*g,n*y]),l.push({position:b,tangent:Y.normalize(P)})}return e.fromRawSamples(l)}static circle(t){let{center:r,radius:n,startAngleDeg:i=0,endAngleDeg:a=360,samples:s=128}=t,u=i*Math.PI/180,c=a*Math.PI/180,l=[];for(let m=0;m<=s;m++){let d=u+(c-u)*(m/s),p=Math.cos(d),f=Math.sin(d),y=[r[0]+n*p,r[1],r[2]+n*f],g=[-n*f,0,n*p];l.push({position:y,tangent:Y.normalize(g)})}return e.fromRawSamples(l)}};h();var yi=class e{name;props={};selectors=[];constructor(t){this.name=t}static create(t){return new e(t)}skew(t,r=0){return this.props.skew=t,this.props.skewAxis=r,this}anchor(t,r="character",n=0,i=0){return this.props.anchor={grouping:r,preset:t,anchorX:.5,anchorY:.5,offsetX:n,offsetY:i},this}anchorNormalized(t,r,n="character"){return this.props.anchor={grouping:n,preset:"custom",anchorX:t,anchorY:r,offsetX:0,offsetY:0},this}translateZ(t){return this.props.translateZ=t,this}tilt3D(t=0,r=0,n=0){return this.props.rotationX=t,this.props.rotationY=r,this.props.rotationZ=n,this}rotationX(t){return this.props.rotationX=t,this}rotationY(t){return this.props.rotationY=t,this}rotationZ(t){return this.props.rotationZ=t,this}volumetricFormation(t="cylinder",r=300,n=120,i=360,a=1200,s="y"){return this.props.formation={mode:t,radius:r,pitch:n,totalAngle:i,perspective:a,axis:s},this}lineSpacing(t,r=0){return this.props.lineSpacing=t,this.props.lineAnchor=r,this}lineAnchor(t){return this.props.lineAnchor=t,this}spring(t=180,r=12,n=1,i=0){return this.props.spring={stiffness:t,damping:r,mass:n,initialVelocity:i,overshootMultiplier:1},this}stroke(t,r="#ffffff",n=1){return this.props.stroke={strokeWidth:t,strokeColor:r,strokeAlign:"center",fillOpacity:n,dashOffset:0},this}variableFont(t){return this.props.variableAxes=t,this}chromaticGlitch(t,r=0,n=-t,i=0){return this.props.chromaticGlitch={redShiftX:t,redShiftY:r,blueShiftX:n,blueShiftY:i,sliceProbability:0,sliceAmplitude:0},this}audioSpectrum(t,r=60,n=16e3,i=2.5){return this.props.audioSpectrum={signalChannel:t,minFreqHz:r,maxFreqHz:n,scaleAxis:"scaleY",minScale:.2,maxScale:i,peakDecay:.8},this}longShadow(t=45,r=40,n="#000000",i=.8,a=0,s=16){return this.props.longShadow={angle:t,length:r,color:n,startOpacity:i,endOpacity:a,steps:s},this}particleDissolve(t=0,r=90,n=120){return this.props.particleDissolve={progress:t,dispersalAngle:r,maxDisplacement:n,turbulence:.5,particleSize:2},this}addExpressionSelector(t,r="add"){return this.selectors.push({type:"expression",expression:t,mode:r,amount:1}),this}expressionSelector(t,r="add"){return this.addExpressionSelector(t,r)}x(t){return this.props.x=t,this}y(t){return this.props.y=t,this}scale(t){return this.props.scale=t,this}scaleX(t){return this.props.scaleX=t,this}scaleY(t){return this.props.scaleY=t,this}rotation(t){return this.props.rotation=t,this}opacity(t){return this.props.opacity=t,this}blur(t){return this.props.blur=t,this}fillColor(t){return this.props.fillColor=t,this}build(){return{name:this.name,selectors:this.selectors,props:this.props}}};h();var ao=o.enum(["character","word","line","all"]),oo=o.enum(["center","baseline","bottom_left","bottom_center","bottom_right","top_left","top_center","top_right","custom"]),so=o.object({grouping:ao.default("character"),preset:oo.default("center"),anchorX:o.number().default(.5),anchorY:o.number().default(.5),offsetX:o.number().default(0),offsetY:o.number().default(0)}),yd=o.object({skew:o.number().min(-90).max(90),skewAxis:o.number().default(0)}),xd=o.object({lineSpacing:o.number(),lineAnchor:o.number().min(0).max(1).default(0)}),uo=o.enum(["planar","vortex","cylinder","helix"]),xi=o.object({mode:uo.default("planar"),radius:o.number().default(300),pitch:o.number().default(120),totalAngle:o.number().default(360),axis:o.enum(["x","y","z"]).default("y"),perspective:o.number().positive().default(1200)}),vd=o.object({translateZ:o.number().optional(),rotationX:o.number().optional(),rotationY:o.number().optional(),rotationZ:o.number().optional(),formation:xi.optional()}),lo=o.object({stiffness:o.number().positive().default(180),damping:o.number().positive().default(12),mass:o.number().positive().default(1),initialVelocity:o.number().default(0),overshootMultiplier:o.number().min(.5).max(3).default(1)}),wd=o.object({type:o.literal("expression"),name:o.string().optional(),expression:o.string(),mode:o.enum(["add","subtract","intersect","min","max","difference"]).default("add"),amount:o.number().default(1)}),co=o.object({strokeWidth:o.number().min(0).default(0),strokeColor:o.string().default("#ffffff"),strokeAlign:o.enum(["center","inside","outside"]).default("center"),fillOpacity:o.number().min(0).max(1).default(1),dashArray:o.tuple([o.number(),o.number()]).optional(),dashOffset:o.number().default(0)}),vi=o.object({direction:o.enum(["left","right","up","down"]).default("left"),velocity:o.number().default(120),loop:o.boolean().default(!0),repeatGap:o.number().default(80),snap:o.object({enabled:o.boolean().default(!1),granularity:o.enum(["character","word","line"]).default("word"),stopIndex:o.number().default(0),decelEase:o.string().default("cubic.out")}).optional()}),mo=o.object({weight:o.number().min(100).max(1e3).optional(),width:o.number().min(50).max(200).optional(),slant:o.number().min(-25).max(25).optional(),italic:o.number().min(0).max(1).optional(),opticalSize:o.number().min(6).max(144).optional()}),po=o.object({redShiftX:o.number().default(0),redShiftY:o.number().default(0),blueShiftX:o.number().default(0),blueShiftY:o.number().default(0),sliceProbability:o.number().min(0).max(1).default(0),sliceAmplitude:o.number().default(0)}),fo=o.object({signalChannel:o.string(),minFreqHz:o.number().default(60),maxFreqHz:o.number().default(16e3),scaleAxis:o.enum(["scaleY","scaleX","scale","y"]).default("scaleY"),minScale:o.number().default(.2),maxScale:o.number().default(2.5),peakDecay:o.number().min(0).max(.99).default(.8)}),ho=o.object({angle:o.number().default(45),length:o.number().min(0).default(0),color:o.string().default("#000000"),startOpacity:o.number().min(0).max(1).default(.8),endOpacity:o.number().min(0).max(1).default(0),steps:o.number().int().min(4).max(64).default(16)}),go=o.object({progress:o.number().min(0).max(1).default(0),dispersalAngle:o.number().default(90),maxDisplacement:o.number().default(120),turbulence:o.number().default(.5),particleSize:o.number().default(2)}),bo=o.object({x:o.number().optional(),y:o.number().optional(),translateZ:o.number().optional(),scale:o.number().optional(),scaleX:o.number().optional(),scaleY:o.number().optional(),rotation:o.number().optional(),rotationX:o.number().optional(),rotationY:o.number().optional(),rotationZ:o.number().optional(),formation:xi.optional(),skew:o.number().optional(),skewAxis:o.number().optional(),tracking:o.number().optional(),lineSpacing:o.number().optional(),lineAnchor:o.number().optional(),anchor:so.optional(),opacity:o.number().optional(),blur:o.number().optional(),fillColor:o.string().optional(),stroke:co.optional(),variableAxes:mo.optional(),chromaticGlitch:po.optional(),longShadow:ho.optional(),particleDissolve:go.optional(),audioSpectrum:fo.optional(),spring:lo.optional()}),wi=o.object({name:o.string().default("AdvancedAnimator"),selectors:o.array(o.record(o.string(),o.unknown())).default([]),props:bo});h();h();var or=o.object({x:o.number(),y:o.number()}),yo=o.object({p0:or,p1:or,p2:or,p3:or}),xo=o.discriminatedUnion("type",[o.object({type:o.literal("svg"),d:o.string().min(1,"SVG path string cannot be empty")}),o.object({type:o.literal("bezier"),segments:o.array(yo).min(1)}),o.object({type:o.literal("ellipse"),cx:o.number(),cy:o.number(),rx:o.number().positive(),ry:o.number().positive(),startAngleDeg:o.number().default(0),endAngleDeg:o.number().default(360)}),o.object({type:o.literal("wave"),startX:o.number(),startY:o.number(),length:o.number().positive(),amplitude:o.number(),frequency:o.number().positive(),phaseDeg:o.number().default(0)})]),Ft=o.object({path:xo,firstMargin:o.number().default(0),lastMargin:o.number().default(0),reversePath:o.boolean().default(!1),perpendicularToPath:o.boolean().default(!0),forceAlignment:o.boolean().default(!1),loop:o.boolean().default(!1),baselineOffset:o.enum(["baseline","center","ascender","descender"]).default("baseline"),baselineShift:o.number().default(0)}),vo=o.enum(["bar","underscore","block","custom"]),wo=o.object({enabled:o.boolean().default(!0),style:vo.default("bar"),customChar:o.string().default("|"),color:o.string().optional(),blinkFrequency:o.number().min(0).default(2),hideOnComplete:o.boolean().default(!1),width:o.number().positive().default(2.5),spacing:o.number().default(3)}),So=o.discriminatedUnion("mode",[o.object({mode:o.literal("constant")}),o.object({mode:o.literal("human"),jitter:o.number().min(0).max(1).default(.35),commaPauseMultiplier:o.number().min(1).default(3),sentencePauseMultiplier:o.number().min(1).default(5.5),paragraphPauseMultiplier:o.number().min(1).default(7)})]),ko=o.object({enabled:o.boolean().default(!1),charset:o.enum(["ascii","alphanumeric","matrix","binary","hex","custom"]).default("alphanumeric"),customCharset:o.string().optional(),scrambleFramesPerChar:o.number().int().min(1).default(8),highlightProbability:o.number().min(0).max(1).default(.25),scrambleColor:o.string().optional()}),zr=o.object({granularity:o.enum(["character","word","line"]).default("character"),cursor:wo.default({enabled:!0,style:"bar",customChar:"|",blinkFrequency:2,hideOnComplete:!1,width:2.5,spacing:3}),cadence:So.default({mode:"human",jitter:.35,commaPauseMultiplier:3,sentencePauseMultiplier:5.5,paragraphPauseMultiplier:7}),scramble:ko.default({enabled:!1,charset:"alphanumeric",scrambleFramesPerChar:8,highlightProbability:.25}),soundSync:o.boolean().default(!1)}),$r=o.enum(["characters","characters_excluding_spaces","words","lines"]),To=o.enum(["percentage","index"]),Po=o.enum(["square","ramp_up","ramp_down","triangle","round","smooth"]),jr=o.enum(["add","subtract","intersect","min","max","difference"]),Mo=o.object({type:o.literal("range"),start:o.number().default(0),end:o.number().default(1),offset:o.number().default(0),units:To.default("percentage"),basedOn:$r.default("characters"),shape:Po.default("square"),mode:jr.default("add"),amount:o.number().min(-1).max(1).default(1),easeHigh:o.number().min(-1).max(1).default(0),easeLow:o.number().min(-1).max(1).default(0),randomizeOrder:o.boolean().default(!1),randomSeed:o.number().int().default(12345)}),Co=o.object({type:o.literal("wiggly"),wigglesPerSecond:o.number().positive().default(2),correlation:o.number().min(0).max(1).default(.5),temporalPhaseDeg:o.number().default(0),spatialPhaseDeg:o.number().default(0),minAmount:o.number().min(-1).max(1).default(-1),maxAmount:o.number().min(-1).max(1).default(1),randomSeed:o.number().int().default(42),basedOn:$r.default("characters"),mode:jr.default("intersect")}),No=o.object({type:o.literal("signal"),signalId:o.string(),multiplier:o.number().default(1),offset:o.number().default(0),phaseSpread:o.number().default(0),basedOn:$r.default("characters"),mode:jr.default("add")}),Ao=o.discriminatedUnion("type",[Mo,Co,No]),Oo=o.object({x:o.number().optional(),y:o.number().optional(),z:o.number().optional(),scale:o.number().optional(),scaleX:o.number().optional(),scaleY:o.number().optional(),rotation:o.number().optional(),rotationX:o.number().optional(),rotationY:o.number().optional(),skew:o.number().optional(),skewAxis:o.number().optional(),tracking:o.number().optional(),lineSpacing:o.number().optional(),opacity:o.number().min(0).max(1).optional(),fillColor:o.string().optional(),strokeColor:o.string().optional(),strokeWidth:o.number().min(0).optional(),blur:o.number().min(0).optional(),characterOffset:o.number().int().optional()}),Do=o.enum(["character","word","line","all"]),Lo=o.object({grouping:Do.default("character"),anchorX:o.number().default(.5),anchorY:o.number().default(.8)}),Rt=o.object({name:o.string().default("Animator"),selectors:o.array(Ao).min(1),props:Oo,anchor:Lo.default({grouping:"character",anchorX:.5,anchorY:.8})}),Sd=o.object({text:o.string(),fontFamily:o.string().default("Inter"),fontSize:o.number().positive().default(24),fontWeight:o.union([o.number(),o.string()]).default(400),fill:o.string().default("#ffffff"),letterSpacing:o.number().default(0),lineHeight:o.number().positive().default(1.2),textAlign:o.enum(["left","center","right"]).default("left"),pathOptions:Ft.optional(),typewriter:zr.optional(),animators:o.array(Rt).default([])});var Si=class e{options={firstMargin:0,lastMargin:0,reversePath:!1,perpendicularToPath:!0,forceAlignment:!1,loop:!1,baselineOffset:"baseline",baselineShift:0};static fromSvg(t){let r=new e;return r.options.path={type:"svg",d:t},r}static fromBezier(t){let r=new e;return r.options.path={type:"bezier",segments:t},r}static fromCurve(t){return e.fromBezier([t])}static circularBadge(t,r,n){let i=new e;return i.options.path={type:"ellipse",cx:t,cy:r,rx:n,ry:n,startAngleDeg:0,endAngleDeg:360},i.options.loop=!0,i}static ellipse(t,r,n,i,a=0,s=360){let u=new e;return u.options.path={type:"ellipse",cx:t,cy:r,rx:n,ry:i,startAngleDeg:a,endAngleDeg:s},u.options.loop=Math.abs(s-a)>=360,u}static wave(t,r,n,i,a,s=0){let u=new e;return u.options.path={type:"wave",startX:t,startY:r,length:n,amplitude:i,frequency:a,phaseDeg:s},u}firstMargin(t){return this.options.firstMargin=t,this}lastMargin(t){return this.options.lastMargin=t,this}reversePath(t){return this.options.reversePath=t,this}perpendicularToPath(t){return this.options.perpendicularToPath=t,this}forceAlignment(t){return this.options.forceAlignment=t,this}loop(t){return this.options.loop=t,this}baselineOffset(t){return this.options.baselineOffset=t,this}baselineShift(t){return this.options.baselineShift=t,this}build(){return Ft.parse(this.options)}},ki=class e{name="Animator";selectors=[];props={};anchor={grouping:"character",anchorX:.5,anchorY:.8};static create(t){let r=new e;return r.name=t,r}addRangeSelector(t){let r=t.easeHigh??0,n=Math.abs(r)>1?r/100:r,i=t.easeLow??0,a=Math.abs(i)>1?i/100:i;return this.selectors.push({type:"range",start:t.start??0,end:t.end??1,offset:t.offset??0,units:"percentage",basedOn:t.basedOn??"characters",shape:t.shape??"smooth",mode:t.mode??"add",amount:1,easeHigh:Math.max(-1,Math.min(1,n)),easeLow:Math.max(-1,Math.min(1,a)),randomizeOrder:t.randomizeOrder??!1,randomSeed:t.randomSeed??12345}),this}addWigglySelector(t){return this.selectors.push({type:"wiggly",wigglesPerSecond:t.wigglesPerSecond??2,correlation:t.correlation??.5,temporalPhaseDeg:0,spatialPhaseDeg:0,minAmount:t.minAmount??-1,maxAmount:t.maxAmount??1,randomSeed:t.randomSeed??42,basedOn:"characters",mode:t.mode??"intersect"}),this}addSignalSelector(t,r=1,n=0,i=0,a="add"){return this.selectors.push({type:"signal",signalId:t,multiplier:r,offset:i,phaseSpread:n,basedOn:"characters",mode:a}),this}x(t){return this.props.x=t,this}y(t){return this.props.y=t,this}z(t){return this.props.z=t,this}scale(t){return this.props.scale=t,this}scaleX(t){return this.props.scaleX=t,this}scaleY(t){return this.props.scaleY=t,this}rotation(t){return this.props.rotation=t,this}rotationX(t){return this.props.rotationX=t,this}rotationY(t){return this.props.rotationY=t,this}skew(t){return this.props.skew=t,this}skewAxis(t){return this.props.skewAxis=t,this}opacity(t){return this.props.opacity=t,this}blur(t){return this.props.blur=t,this}fill(t){return this.fillColor(t)}fillColor(t){return this.props.fillColor=t,this}strokeColor(t){return this.props.strokeColor=t,this}strokeWidth(t){return this.props.strokeWidth=t,this}tracking(t){return this.props.tracking=t,this}lineSpacing(t){return this.props.lineSpacing=t,this}characterOffset(t){return this.props.characterOffset=t,this}anchorGrouping(t,r=.5,n=.8){return this.anchor={grouping:t,anchorX:r,anchorY:n},this}build(){return Rt.parse({name:this.name,selectors:this.selectors,props:this.props,anchor:this.anchor})}};h();h();var Fo=`
|
|
1
|
+
import{a as yd}from"./chunk-PIAJWALT.mjs";import{A as Ny,B as Fy,C as By,D as Ly,E as Ey,F as Vy,H as vd,I as wd,J as hi,K as gi,M as Sd,N as kd,O as Pd,P as Md,Q as Td,R as dn,S as Cd,a as Tc,b as Cc,c as q,d as it,e as Oc,f as ky,g as Py,h as My,i as Ty,j as Cy,k as Rc,l as Fc,m as Bc,n as Lc,o as Ec,p as Vc,s as hd,t as $a,u as Wa,v as Ha,w as gd,x as bd,y as Dy,z as Ay}from"./chunk-GCTVRM7J.mjs";import{a as pi,b as Ua}from"./chunk-PJ3DVG45.mjs";import{a as dd}from"./chunk-OCX5AD23.mjs";import{a as cn,b as md,c as _a,d as Ga,f as fd,g as Oy,h as Ry}from"./chunk-FNE22WGA.mjs";import{a as cd}from"./chunk-LKYN3BM2.mjs";import{a as Zc,b as Kc,c as Jc,d as Qc,e as ed,f as td,g as rd,h as nd,i as id,j as od,k as ad,l as sd,m as ud,n as ld,o as ja}from"./chunk-RQLMW6MA.mjs";import{$ as zi,A as im,B as om,C as am,D as sm,E as Ri,F as um,G as pn,H as lm,I as Fi,J as _t,K as Bi,L as cm,M as dm,N as mm,O as fn,P as pm,Q as fm,R as hn,S as hm,T as Gt,U as gt,V as Li,W as Ei,X as bt,Y as Vi,Z as gm,_ as Ii,a as Ud,aa as yt,b as Mi,ba as Ui,c as _d,ca as _i,d as Gd,da as Gi,e as jd,ea as ji,f as $d,fa as Sr,g as Wd,ga as $i,h as Hd,ha as Wi,i as Yd,ia as Hi,j as Xd,ja as Yi,k as qd,ka as Xi,l as Ti,la as kr,m as Ci,ma as ot,n as Di,na as qi,o as Zd,oa as Zi,p as wr,pa as Ki,q as Kd,r as Jd,s as Ai,t as Qd,u as em,v as tm,w as Ni,x as Oi,y as rm,z as nm}from"./chunk-BQY4BUMN.mjs";import"./chunk-GSFN4WCH.mjs";import"./chunk-5W4AFQP7.mjs";import"./chunk-OKH2VU2U.mjs";import{A as wy,B as Sy,C as Ya,D as Dd,E as Ad,F as xi,G as Nd,H as mn,I as Od,J as Rd,K as Fd,L as xr,M as vi,N as Xa,O as Ld,P as wi,Q as Si,R as ki,S as vr,a as sn,b as Gg,c as jg,d as $g,e as Wg,f as Hg,g as rb,h as nb,i as ib,j as ob,k as ab,l as sb,m as ub,n as Tb,o as Cb,p as Db,q as Ab,r as Nb,s as Ob,t as Rb,u as Fb,v as Bb,w as Lb,x as Wb,y as fy,z as vy}from"./chunk-KERW7QJ4.mjs";import{a as Bd}from"./chunk-YQRKT47I.mjs";import"./chunk-QXCY2ATH.mjs";import"./chunk-7EPIRODI.mjs";import"./chunk-VXS5SIEC.mjs";import"./chunk-YQZOGEPZ.mjs";import"./chunk-J2R5R7YY.mjs";import"./chunk-L3CHEZMZ.mjs";import"./chunk-E3HC4GRQ.mjs";import"./chunk-PAQNDZQB.mjs";import"./chunk-SZW5J72T.mjs";import"./chunk-PL4IH5V4.mjs";import"./chunk-WUKH7BD7.mjs";import"./chunk-RW2F3XLQ.mjs";import"./chunk-PXT52LEH.mjs";import"./chunk-FU7AIAMM.mjs";import"./chunk-OJ2PKBXE.mjs";import"./chunk-5AUB4Y3L.mjs";import"./chunk-SGPRLTNF.mjs";import"./chunk-BSOJR4JU.mjs";import"./chunk-LBRVQ4GE.mjs";import{a as hy,b as gy,c as by,d as yy,e as xy}from"./chunk-VXUJWPIK.mjs";import"./chunk-WSIURGP2.mjs";import"./chunk-WFGJXCZT.mjs";import{a as Yg,b as Xg}from"./chunk-YKMBRUAE.mjs";import{a as yi}from"./chunk-2JKXYG6J.mjs";import"./chunk-WH5Q2NFN.mjs";import"./chunk-PEWYB6WP.mjs";import"./chunk-AXHB4J37.mjs";import{a as bi}from"./chunk-7I7PKKDL.mjs";import"./chunk-AXQZX3TC.mjs";import"./chunk-XOEEGC4Z.mjs";import"./chunk-IUPDOATX.mjs";import"./chunk-2MZXSWVT.mjs";import"./chunk-3UPI4EPV.mjs";import{i as di}from"./chunk-XKO4RYKN.mjs";import{a as ly,b as cy,c as Va,d as dy,e as my,f as py}from"./chunk-X6HUH6K4.mjs";import{a as Ic}from"./chunk-JAJOZG5P.mjs";import{a as Vd,b as Id,c as zd,d as Pi}from"./chunk-CURR5X7D.mjs";import"./chunk-O2RNIQXT.mjs";import"./chunk-FPRXK2WD.mjs";import"./chunk-VO2R3DWV.mjs";import"./chunk-Q2DPNVIA.mjs";import"./chunk-ZNL4W4DK.mjs";import"./chunk-NEE3KQTX.mjs";import"./chunk-K773AOF3.mjs";import"./chunk-ZH5MZQTZ.mjs";import"./chunk-GMGGDADT.mjs";import"./chunk-7J2FWGVD.mjs";import{a as Ed}from"./chunk-TPAEN6VV.mjs";import"./chunk-PFA427ZC.mjs";import{a as le}from"./chunk-FLPSWDX4.mjs";import{A as Eb,B as Vb,C as Ib,D as zb,E as Ub,F as _b,G as Gb,H as jb,I as $b,a as u,c as qg,d as Zg,e as Kg,f as Jg,g as Qg,h as eb,i as tb,j as lb,k as cb,l as db,m as mb,n as pb,o as fb,p as hb,q as gb,r as bb,s as yb,t as xb,u as vb,v as wb,w as Sb,x as kb,y as Pb,z as Mb}from"./chunk-NQZKBFC6.mjs";import"./chunk-ENKKLU7B.mjs";import{a as za,c as Nc}from"./chunk-VUFDQJ2B.mjs";import"./chunk-PR2BUYCL.mjs";import{b as xd}from"./chunk-BVA5NGSH.mjs";import{a as Dc}from"./chunk-37EFVZWT.mjs";import"./chunk-2SJ4BBMT.mjs";import{a as Hb,b as Yb,c as Xb,d as qb,e as Zb,f as Kb,g as Jb,h as La,i as Qb,j as Ea,k as ey,l as ty,m as ry}from"./chunk-24P6DAB3.mjs";import{e as mi}from"./chunk-NIRW77QA.mjs";import"./chunk-Q4Z54DQ7.mjs";import{d as Ac}from"./chunk-6YJP57MZ.mjs";import{a as zt,b as Ng,c as Og,d as Rg,e as Fg,f as Bg,g as Lg,h as Eg,i as wc,j as Sc,k as Vg,l as Ig,m as zg,n as Ug,o as _g,p as kc,q as Pc,r as Mc,s as br}from"./chunk-63SFBHEH.mjs";import{a as Ze}from"./chunk-3T4LB4ZH.mjs";import"./chunk-XN56POGE.mjs";import{e as Ut,f as zc,g as Uc,h as _c,i as Gc,j as jc,k as $c,l as Wc,m as Hc,n as Yc,o as Xc,p as qc,s as fi,v as pd}from"./chunk-LQENNFBA.mjs";import{m as yr}from"./chunk-4GEWSUX5.mjs";import{r as ge}from"./chunk-MTJHQATU.mjs";import{a as Ia}from"./chunk-IQC2I5A5.mjs";import{a as ny,b as iy,c as li,d as oy,e as ay,f as sy,g as uy,h as ci}from"./chunk-IQKIHFNZ.mjs";import{o as G}from"./chunk-YAQFFQPG.mjs";import{a as un,b as ln}from"./chunk-ZEYUXJIV.mjs";import{a as Ba,c as gr,d as v,e as h}from"./chunk-BVF64D6H.mjs";var Vl=Ba((K2,El)=>{h();var Kn=()=>new Proxy(function(){},{get:(t,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":Kn(),apply:()=>Kn(),construct:()=>Kn()});El.exports=Kn()});var Kl=Ba((GP,Zl)=>{h();var ii=()=>new Proxy(function(){},{get:(t,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":ii(),apply:()=>ii(),construct:()=>ii()});Zl.exports=ii()});h();h();var Ji=class t{samples=[];frames=[];totalLength=0;constructor(e){if(e.length<2)throw new Error("Path3D requires at least 2 coordinate samples");this.samples=e,this.totalLength=e[e.length-1].distance,this.computeRotationMinimizingFrames()}computeRotationMinimizingFrames(){let e=this.samples.length;this.frames=new Array(e);let r=this.samples[0].tangent,n=[0,-1,0];Math.abs(q.dot(r,n))>.95&&(n=[0,0,1]);let i=q.normalize(q.subtract(n,q.multiplyScalar(r,q.dot(n,r))));q.lengthSq(i)<1e-4&&(i=[1,0,0]);let o=q.normalize(q.cross(r,i));this.frames[0]={normal:i,binormal:o,rotation:this.eulerFromFrame(r,i,o)};for(let a=0;a<e-1;a++){let s=this.samples[a].position,l=this.samples[a+1].position,c=this.samples[a].tangent,m=this.samples[a+1].tangent,d=this.frames[a].normal,p=q.subtract(l,s),f=q.dot(p,p),b;if(f>1e-8){let y=q.subtract(c,q.multiplyScalar(p,2*q.dot(p,c)/f)),k=q.subtract(d,q.multiplyScalar(p,2*q.dot(p,d)/f)),D=q.subtract(m,y),T=q.dot(D,D);T>1e-8?b=q.subtract(k,q.multiplyScalar(D,2*q.dot(D,k)/T)):b=k}else b=d;b=q.normalize(q.subtract(b,q.multiplyScalar(m,q.dot(m,b))));let g=q.normalize(q.cross(m,b));this.frames[a+1]={normal:b,binormal:g,rotation:this.eulerFromFrame(m,b,g)}}}eulerFromFrame(e,r,n){let i=Math.asin(Math.max(-1,Math.min(1,-e[1])))*(180/Math.PI),o=Math.atan2(e[0],e[2])*(180/Math.PI),a=Math.atan2(r[0],r[1])*(180/Math.PI);return[i,o,a]}getPointAt(e){let n=Math.max(0,Math.min(1,e))*this.totalLength;return this.getPointAtDistance(n)}getPointAtDistance(e){let r=Math.max(0,Math.min(this.totalLength,e)),n=this.samples.length,i=0,o=n-1;for(;i<o;){let T=i+o>>1;this.samples[T].distance<r?i=T+1:o=T}let a=Math.max(1,i),s=a-1,l=this.samples[s],c=this.samples[a],m=c.distance-l.distance,d=m>1e-6?(r-l.distance)/m:0,p=q.lerp(l.position,c.position,d),f=q.normalize(q.lerp(l.tangent,c.tangent,d)),b=this.frames[s],g=this.frames[a],y=q.normalize(q.lerp(b.normal,g.normal,d)),k=q.normalize(q.cross(f,y)),D=[b.rotation[0]+(g.rotation[0]-b.rotation[0])*d,b.rotation[1]+(g.rotation[1]-b.rotation[1])*d,b.rotation[2]+(g.rotation[2]-b.rotation[2])*d];return{position:p,tangent:f,normal:y,binormal:k,distance:r,t:this.totalLength>0?r/this.totalLength:0,rotation:D}}static catmullRom(e,r={}){if(e.length<2)throw new Error("Catmull-Rom spline requires at least 2 waypoints");let n=!!r.closed,i=r.samplesPerSegment??40,o=[];if(n)o.push(e[e.length-1]),o.push(...e),o.push(e[0]),o.push(e[1]);else{let l=e[0],c=e[1],m=e[e.length-1],d=e[e.length-2];o.push(q.subtract(l,q.subtract(c,l))),o.push(...e),o.push(q.add(m,q.subtract(m,d)))}let a=n?e.length:e.length-1,s=[];for(let l=0;l<a;l++){let c=o[l],m=o[l+1],d=o[l+2],p=o[l+3],f=l===a-1?i:i-1;for(let b=0;b<=f;b++){let g=b/i,y=g*g,k=y*g,D=-.5*k+y-.5*g,T=1.5*k-2.5*y+1,w=-1.5*k+2*y+.5*g,S=.5*k-.5*y,x=[D*c[0]+T*m[0]+w*d[0]+S*p[0],D*c[1]+T*m[1]+w*d[1]+S*p[1],D*c[2]+T*m[2]+w*d[2]+S*p[2]],N=-1.5*y+2*g-.5,R=4.5*y-5*g,_=-4.5*y+4*g+.5,H=1.5*y-1*g,ee=[N*c[0]+R*m[0]+_*d[0]+H*p[0],N*c[1]+R*m[1]+_*d[1]+H*p[1],N*c[2]+R*m[2]+_*d[2]+H*p[2]],E=q.normalize(ee);s.push({position:x,tangent:E})}}return t.fromRawSamples(s)}static fromRawSamples(e){let r=0,n=e.map((i,o)=>(o>0&&(r+=q.distance(i.position,e[o-1].position)),{position:i.position,tangent:i.tangent,distance:r}));if(n.length===0)throw new TypeError("Path3D needs samples");return new t(n)}static bezier(e,r=50){if(e.length===0)throw new Error("Bezier path requires at least 1 segment");let n=[];for(let i=0;i<e.length;i++){let o=e[i],a=i===e.length-1?r:r-1;for(let s=0;s<=a;s++){let l=s/r,c=1-l,m=c*c,d=m*c,p=l*l,f=p*l,b=[d*o.p0[0]+3*m*l*o.p1[0]+3*c*p*o.p2[0]+f*o.p3[0],d*o.p0[1]+3*m*l*o.p1[1]+3*c*p*o.p2[1]+f*o.p3[1],d*o.p0[2]+3*m*l*o.p1[2]+3*c*p*o.p2[2]+f*o.p3[2]],g=[3*m*(o.p1[0]-o.p0[0])+6*c*l*(o.p2[0]-o.p1[0])+3*p*(o.p3[0]-o.p2[0]),3*m*(o.p1[1]-o.p0[1])+6*c*l*(o.p2[1]-o.p1[1])+3*p*(o.p3[1]-o.p2[1]),3*m*(o.p1[2]-o.p0[2])+6*c*l*(o.p2[2]-o.p1[2])+3*p*(o.p3[2]-o.p2[2])],y=q.normalize(g);n.push({position:b,tangent:y})}}return t.fromRawSamples(n)}static helix(e){let{center:r,radius:n,pitch:i,turns:o,axis:a="z",samplesPerTurn:s=60}=e,l=Math.max(10,Math.round(o*s)),c=[];for(let m=0;m<=l;m++){let d=m/l,p=d*o*Math.PI*2,f=(d-.5)*i*o,b=Math.cos(p),g=Math.sin(p),y,k;a==="z"?(y=[r[0]+n*b,r[1]+n*g,r[2]+f],k=[-n*g,n*b,i*o/(o*Math.PI*2)]):a==="y"?(y=[r[0]+n*b,r[1]+f,r[2]+n*g],k=[-n*g,i*o/(o*Math.PI*2),n*b]):(y=[r[0]+f,r[1]+n*b,r[2]+n*g],k=[i*o/(o*Math.PI*2),-n*g,n*b]),c.push({position:y,tangent:q.normalize(k)})}return t.fromRawSamples(c)}static circle(e){let{center:r,radius:n,startAngleDeg:i=0,endAngleDeg:o=360,samples:a=128}=e,s=i*Math.PI/180,l=o*Math.PI/180,c=[];for(let m=0;m<=a;m++){let d=s+(l-s)*(m/a),p=Math.cos(d),f=Math.sin(d),b=[r[0]+n*p,r[1],r[2]+n*f],g=[-n*f,0,n*p];c.push({position:b,tangent:q.normalize(g)})}return t.fromRawSamples(c)}};h();var Qi=class t{name;props={};selectors=[];constructor(e){this.name=e}static create(e){return new t(e)}skew(e,r=0){return this.props.skew=e,this.props.skewAxis=r,this}anchor(e,r="character",n=0,i=0){return this.props.anchor={grouping:r,preset:e,anchorX:.5,anchorY:.5,offsetX:n,offsetY:i},this}anchorNormalized(e,r,n="character"){return this.props.anchor={grouping:n,preset:"custom",anchorX:e,anchorY:r,offsetX:0,offsetY:0},this}translateZ(e){return this.props.translateZ=e,this}tilt3D(e=0,r=0,n=0){return this.props.rotationX=e,this.props.rotationY=r,this.props.rotationZ=n,this}rotationX(e){return this.props.rotationX=e,this}rotationY(e){return this.props.rotationY=e,this}rotationZ(e){return this.props.rotationZ=e,this}volumetricFormation(e="cylinder",r=300,n=120,i=360,o=1200,a="y"){return this.props.formation={mode:e,radius:r,pitch:n,totalAngle:i,perspective:o,axis:a},this}lineSpacing(e,r=0){return this.props.lineSpacing=e,this.props.lineAnchor=r,this}lineAnchor(e){return this.props.lineAnchor=e,this}spring(e=180,r=12,n=1,i=0){return this.props.spring={stiffness:e,damping:r,mass:n,initialVelocity:i,overshootMultiplier:1},this}stroke(e,r="#ffffff",n=1){return this.props.stroke={strokeWidth:e,strokeColor:r,strokeAlign:"center",fillOpacity:n,dashOffset:0},this}variableFont(e){return this.props.variableAxes=e,this}chromaticGlitch(e,r=0,n=-e,i=0){return this.props.chromaticGlitch={redShiftX:e,redShiftY:r,blueShiftX:n,blueShiftY:i,sliceProbability:0,sliceAmplitude:0},this}audioSpectrum(e,r=60,n=16e3,i=2.5){return this.props.audioSpectrum={signalChannel:e,minFreqHz:r,maxFreqHz:n,scaleAxis:"scaleY",minScale:.2,maxScale:i,peakDecay:.8},this}longShadow(e=45,r=40,n="#000000",i=.8,o=0,a=16){return this.props.longShadow={angle:e,length:r,color:n,startOpacity:i,endOpacity:o,steps:a},this}particleDissolve(e=0,r=90,n=120){return this.props.particleDissolve={progress:e,dispersalAngle:r,maxDisplacement:n,turbulence:.5,particleSize:2},this}addExpressionSelector(e,r="add"){return this.selectors.push({type:"expression",expression:e,mode:r,amount:1}),this}expressionSelector(e,r="add"){return this.addExpressionSelector(e,r)}x(e){return this.props.x=e,this}y(e){return this.props.y=e,this}scale(e){return this.props.scale=e,this}scaleX(e){return this.props.scaleX=e,this}scaleY(e){return this.props.scaleY=e,this}rotation(e){return this.props.rotation=e,this}opacity(e){return this.props.opacity=e,this}blur(e){return this.props.blur=e,this}fillColor(e){return this.props.fillColor=e,this}build(){return{name:this.name,selectors:this.selectors,props:this.props}}};h();var qa=u.enum(["character","word","line","all"]),Za=u.enum(["center","baseline","bottom_left","bottom_center","bottom_right","top_left","top_center","top_right","custom"]),Ka=u.object({grouping:qa.default("character"),preset:Za.default("center"),anchorX:u.number().default(.5),anchorY:u.number().default(.5),offsetX:u.number().default(0),offsetY:u.number().default(0)}),bm=u.object({skew:u.number().min(-90).max(90),skewAxis:u.number().default(0)}),ym=u.object({lineSpacing:u.number(),lineAnchor:u.number().min(0).max(1).default(0)}),Ja=u.enum(["planar","vortex","cylinder","helix"]),eo=u.object({mode:Ja.default("planar"),radius:u.number().default(300),pitch:u.number().default(120),totalAngle:u.number().default(360),axis:u.enum(["x","y","z"]).default("y"),perspective:u.number().positive().default(1200)}),xm=u.object({translateZ:u.number().optional(),rotationX:u.number().optional(),rotationY:u.number().optional(),rotationZ:u.number().optional(),formation:eo.optional()}),Qa=u.object({stiffness:u.number().positive().default(180),damping:u.number().positive().default(12),mass:u.number().positive().default(1),initialVelocity:u.number().default(0),overshootMultiplier:u.number().min(.5).max(3).default(1)}),vm=u.object({type:u.literal("expression"),name:u.string().optional(),expression:u.string(),mode:u.enum(["add","subtract","intersect","min","max","difference"]).default("add"),amount:u.number().default(1)}),es=u.object({strokeWidth:u.number().min(0).default(0),strokeColor:u.string().default("#ffffff"),strokeAlign:u.enum(["center","inside","outside"]).default("center"),fillOpacity:u.number().min(0).max(1).default(1),dashArray:u.tuple([u.number(),u.number()]).optional(),dashOffset:u.number().default(0)}),to=u.object({direction:u.enum(["left","right","up","down"]).default("left"),velocity:u.number().default(120),loop:u.boolean().default(!0),repeatGap:u.number().default(80),snap:u.object({enabled:u.boolean().default(!1),granularity:u.enum(["character","word","line"]).default("word"),stopIndex:u.number().default(0),decelEase:u.string().default("cubic.out")}).optional()}),ts=u.object({weight:u.number().min(100).max(1e3).optional(),width:u.number().min(50).max(200).optional(),slant:u.number().min(-25).max(25).optional(),italic:u.number().min(0).max(1).optional(),opticalSize:u.number().min(6).max(144).optional()}),rs=u.object({redShiftX:u.number().default(0),redShiftY:u.number().default(0),blueShiftX:u.number().default(0),blueShiftY:u.number().default(0),sliceProbability:u.number().min(0).max(1).default(0),sliceAmplitude:u.number().default(0)}),ns=u.object({signalChannel:u.string(),minFreqHz:u.number().default(60),maxFreqHz:u.number().default(16e3),scaleAxis:u.enum(["scaleY","scaleX","scale","y"]).default("scaleY"),minScale:u.number().default(.2),maxScale:u.number().default(2.5),peakDecay:u.number().min(0).max(.99).default(.8)}),is=u.object({angle:u.number().default(45),length:u.number().min(0).default(0),color:u.string().default("#000000"),startOpacity:u.number().min(0).max(1).default(.8),endOpacity:u.number().min(0).max(1).default(0),steps:u.number().int().min(4).max(64).default(16)}),os=u.object({progress:u.number().min(0).max(1).default(0),dispersalAngle:u.number().default(90),maxDisplacement:u.number().default(120),turbulence:u.number().default(.5),particleSize:u.number().default(2)}),as=u.object({x:u.number().optional(),y:u.number().optional(),translateZ:u.number().optional(),scale:u.number().optional(),scaleX:u.number().optional(),scaleY:u.number().optional(),rotation:u.number().optional(),rotationX:u.number().optional(),rotationY:u.number().optional(),rotationZ:u.number().optional(),formation:eo.optional(),skew:u.number().optional(),skewAxis:u.number().optional(),tracking:u.number().optional(),lineSpacing:u.number().optional(),lineAnchor:u.number().optional(),anchor:Ka.optional(),opacity:u.number().optional(),blur:u.number().optional(),fillColor:u.string().optional(),stroke:es.optional(),variableAxes:ts.optional(),chromaticGlitch:rs.optional(),longShadow:is.optional(),particleDissolve:os.optional(),audioSpectrum:ns.optional(),spring:Qa.optional()}),ro=u.object({name:u.string().default("AdvancedAnimator"),selectors:u.array(u.record(u.string(),u.unknown())).default([]),props:as});h();h();var Pr=u.object({x:u.number(),y:u.number()}),ss=u.object({p0:Pr,p1:Pr,p2:Pr,p3:Pr}),us=u.discriminatedUnion("type",[u.object({type:u.literal("svg"),d:u.string().min(1,"SVG path string cannot be empty")}),u.object({type:u.literal("bezier"),segments:u.array(ss).min(1)}),u.object({type:u.literal("ellipse"),cx:u.number(),cy:u.number(),rx:u.number().positive(),ry:u.number().positive(),startAngleDeg:u.number().default(0),endAngleDeg:u.number().default(360)}),u.object({type:u.literal("wave"),startX:u.number(),startY:u.number(),length:u.number().positive(),amplitude:u.number(),frequency:u.number().positive(),phaseDeg:u.number().default(0)})]),jt=u.object({path:us,firstMargin:u.number().default(0),lastMargin:u.number().default(0),reversePath:u.boolean().default(!1),perpendicularToPath:u.boolean().default(!0),forceAlignment:u.boolean().default(!1),loop:u.boolean().default(!1),baselineOffset:u.enum(["baseline","center","ascender","descender"]).default("baseline"),baselineShift:u.number().default(0)}),ls=u.enum(["bar","underscore","block","custom"]),cs=u.object({enabled:u.boolean().default(!0),style:ls.default("bar"),customChar:u.string().default("|"),color:u.string().optional(),blinkFrequency:u.number().min(0).default(2),hideOnComplete:u.boolean().default(!1),width:u.number().positive().default(2.5),spacing:u.number().default(3)}),ds=u.discriminatedUnion("mode",[u.object({mode:u.literal("constant")}),u.object({mode:u.literal("human"),jitter:u.number().min(0).max(1).default(.35),commaPauseMultiplier:u.number().min(1).default(3),sentencePauseMultiplier:u.number().min(1).default(5.5),paragraphPauseMultiplier:u.number().min(1).default(7)})]),ms=u.object({enabled:u.boolean().default(!1),charset:u.enum(["ascii","alphanumeric","matrix","binary","hex","custom"]).default("alphanumeric"),customCharset:u.string().optional(),scrambleFramesPerChar:u.number().int().min(1).default(8),highlightProbability:u.number().min(0).max(1).default(.25),scrambleColor:u.string().optional()}),gn=u.object({granularity:u.enum(["character","word","line"]).default("character"),cursor:cs.default({enabled:!0,style:"bar",customChar:"|",blinkFrequency:2,hideOnComplete:!1,width:2.5,spacing:3}),cadence:ds.default({mode:"human",jitter:.35,commaPauseMultiplier:3,sentencePauseMultiplier:5.5,paragraphPauseMultiplier:7}),scramble:ms.default({enabled:!1,charset:"alphanumeric",scrambleFramesPerChar:8,highlightProbability:.25}),soundSync:u.boolean().default(!1)}),bn=u.enum(["characters","characters_excluding_spaces","words","lines"]),ps=u.enum(["percentage","index"]),fs=u.enum(["square","ramp_up","ramp_down","triangle","round","smooth"]),yn=u.enum(["add","subtract","intersect","min","max","difference"]),hs=u.object({type:u.literal("range"),start:u.number().default(0),end:u.number().default(1),offset:u.number().default(0),units:ps.default("percentage"),basedOn:bn.default("characters"),shape:fs.default("square"),mode:yn.default("add"),amount:u.number().min(-1).max(1).default(1),easeHigh:u.number().min(-1).max(1).default(0),easeLow:u.number().min(-1).max(1).default(0),randomizeOrder:u.boolean().default(!1),randomSeed:u.number().int().default(12345)}),gs=u.object({type:u.literal("wiggly"),wigglesPerSecond:u.number().positive().default(2),correlation:u.number().min(0).max(1).default(.5),temporalPhaseDeg:u.number().default(0),spatialPhaseDeg:u.number().default(0),minAmount:u.number().min(-1).max(1).default(-1),maxAmount:u.number().min(-1).max(1).default(1),randomSeed:u.number().int().default(42),basedOn:bn.default("characters"),mode:yn.default("intersect")}),bs=u.object({type:u.literal("signal"),signalId:u.string(),multiplier:u.number().default(1),offset:u.number().default(0),phaseSpread:u.number().default(0),basedOn:bn.default("characters"),mode:yn.default("add")}),ys=u.discriminatedUnion("type",[hs,gs,bs]),xs=u.object({x:u.number().optional(),y:u.number().optional(),z:u.number().optional(),scale:u.number().optional(),scaleX:u.number().optional(),scaleY:u.number().optional(),rotation:u.number().optional(),rotationX:u.number().optional(),rotationY:u.number().optional(),skew:u.number().optional(),skewAxis:u.number().optional(),tracking:u.number().optional(),lineSpacing:u.number().optional(),opacity:u.number().min(0).max(1).optional(),fillColor:u.string().optional(),strokeColor:u.string().optional(),strokeWidth:u.number().min(0).optional(),blur:u.number().min(0).optional(),characterOffset:u.number().int().optional()}),vs=u.enum(["character","word","line","all"]),ws=u.object({grouping:vs.default("character"),anchorX:u.number().default(.5),anchorY:u.number().default(.8)}),$t=u.object({name:u.string().default("Animator"),selectors:u.array(ys).min(1),props:xs,anchor:ws.default({grouping:"character",anchorX:.5,anchorY:.8})}),wm=u.object({text:u.string(),fontFamily:u.string().default("Inter"),fontSize:u.number().positive().default(24),fontWeight:u.union([u.number(),u.string()]).default(400),fill:u.string().default("#ffffff"),letterSpacing:u.number().default(0),lineHeight:u.number().positive().default(1.2),textAlign:u.enum(["left","center","right"]).default("left"),pathOptions:jt.optional(),typewriter:gn.optional(),animators:u.array($t).default([])});var no=class t{options={firstMargin:0,lastMargin:0,reversePath:!1,perpendicularToPath:!0,forceAlignment:!1,loop:!1,baselineOffset:"baseline",baselineShift:0};static fromSvg(e){let r=new t;return r.options.path={type:"svg",d:e},r}static fromBezier(e){let r=new t;return r.options.path={type:"bezier",segments:e},r}static fromCurve(e){return t.fromBezier([e])}static circularBadge(e,r,n){let i=new t;return i.options.path={type:"ellipse",cx:e,cy:r,rx:n,ry:n,startAngleDeg:0,endAngleDeg:360},i.options.loop=!0,i}static ellipse(e,r,n,i,o=0,a=360){let s=new t;return s.options.path={type:"ellipse",cx:e,cy:r,rx:n,ry:i,startAngleDeg:o,endAngleDeg:a},s.options.loop=Math.abs(a-o)>=360,s}static wave(e,r,n,i,o,a=0){let s=new t;return s.options.path={type:"wave",startX:e,startY:r,length:n,amplitude:i,frequency:o,phaseDeg:a},s}firstMargin(e){return this.options.firstMargin=e,this}lastMargin(e){return this.options.lastMargin=e,this}reversePath(e){return this.options.reversePath=e,this}perpendicularToPath(e){return this.options.perpendicularToPath=e,this}forceAlignment(e){return this.options.forceAlignment=e,this}loop(e){return this.options.loop=e,this}baselineOffset(e){return this.options.baselineOffset=e,this}baselineShift(e){return this.options.baselineShift=e,this}build(){return jt.parse(this.options)}},io=class t{name="Animator";selectors=[];props={};anchor={grouping:"character",anchorX:.5,anchorY:.8};static create(e){let r=new t;return r.name=e,r}addRangeSelector(e){let r=e.easeHigh??0,n=Math.abs(r)>1?r/100:r,i=e.easeLow??0,o=Math.abs(i)>1?i/100:i;return this.selectors.push({type:"range",start:e.start??0,end:e.end??1,offset:e.offset??0,units:"percentage",basedOn:e.basedOn??"characters",shape:e.shape??"smooth",mode:e.mode??"add",amount:1,easeHigh:Math.max(-1,Math.min(1,n)),easeLow:Math.max(-1,Math.min(1,o)),randomizeOrder:e.randomizeOrder??!1,randomSeed:e.randomSeed??12345}),this}addWigglySelector(e){return this.selectors.push({type:"wiggly",wigglesPerSecond:e.wigglesPerSecond??2,correlation:e.correlation??.5,temporalPhaseDeg:0,spatialPhaseDeg:0,minAmount:e.minAmount??-1,maxAmount:e.maxAmount??1,randomSeed:e.randomSeed??42,basedOn:"characters",mode:e.mode??"intersect"}),this}addSignalSelector(e,r=1,n=0,i=0,o="add"){return this.selectors.push({type:"signal",signalId:e,multiplier:r,offset:i,phaseSpread:n,basedOn:"characters",mode:o}),this}x(e){return this.props.x=e,this}y(e){return this.props.y=e,this}z(e){return this.props.z=e,this}scale(e){return this.props.scale=e,this}scaleX(e){return this.props.scaleX=e,this}scaleY(e){return this.props.scaleY=e,this}rotation(e){return this.props.rotation=e,this}rotationX(e){return this.props.rotationX=e,this}rotationY(e){return this.props.rotationY=e,this}skew(e){return this.props.skew=e,this}skewAxis(e){return this.props.skewAxis=e,this}opacity(e){return this.props.opacity=e,this}blur(e){return this.props.blur=e,this}fill(e){return this.fillColor(e)}fillColor(e){return this.props.fillColor=e,this}strokeColor(e){return this.props.strokeColor=e,this}strokeWidth(e){return this.props.strokeWidth=e,this}tracking(e){return this.props.tracking=e,this}lineSpacing(e){return this.props.lineSpacing=e,this}characterOffset(e){return this.props.characterOffset=e,this}anchorGrouping(e,r=.5,n=.8){return this.anchor={grouping:e,anchorX:r,anchorY:n},this}build(){return $t.parse({name:this.name,selectors:this.selectors,props:this.props,anchor:this.anchor})}};h();h();var Ss=`
|
|
2
2
|
struct CameraUniforms {
|
|
3
3
|
viewMatrix: mat4x4<f32>,
|
|
4
4
|
projMatrix: mat4x4<f32>,
|
|
@@ -127,7 +127,7 @@ fn fs_main(in: VertexOutput) -> @location(0) vec4<f32> {
|
|
|
127
127
|
|
|
128
128
|
return vec4<f32>(blendedRGB * alpha, alpha);
|
|
129
129
|
}
|
|
130
|
-
`;var
|
|
130
|
+
`;var oo=class{device;pipeline;cameraLayout;modelLayout;glassLayout;backdropLayout;modelPool;glassPool;vertexBuffer;indexBuffer;modelData=new Float32Array(40);glassData=new Float32Array(16);constructor(e,r,n="depth24plus",i){this.device=e,this.modelPool=new fi(160,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.glassPool=new fi(64,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);let o=e.createShaderModule({label:"pbr-glass.wgsl",code:Ss});this.cameraLayout=i??e.createBindGroupLayout({label:"GlassCameraLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.modelLayout=e.createBindGroupLayout({label:"GlassModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.glassLayout=e.createBindGroupLayout({label:"GlassUniformLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.backdropLayout=e.createBindGroupLayout({label:"GlassBackdropLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]});let a=e.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout,this.glassLayout,this.backdropLayout]});this.pipeline=e.createRenderPipeline({label:"PBRGlassPipeline",layout:a,vertex:{module:o,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"}]}]},fragment:{module:o,entryPoint:"fs_main",targets:[{format:r,blend:ja}]},depthStencil:{format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"}});let s=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]),l=new Uint16Array([0,1,2,0,2,3]);this.vertexBuffer=e.createBuffer({size:s.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Float32Array(this.vertexBuffer.getMappedRange()).set(s),this.vertexBuffer.unmap(),this.indexBuffer=e.createBuffer({size:l.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Uint16Array(this.indexBuffer.getMappedRange()).set(l),this.indexBuffer.unmap()}resetPools(){this.modelPool.reset(),this.glassPool.reset()}draw(e,r,n,i,o){$a(this.modelData,o.modelMatrix,o.normalMatrix,o.colorTint),this.modelData[36]=o.opacity??1,this.modelData[37]=0,this.modelData[38]=1,this.modelData[39]=0;let a=this.modelPool.getBuffer(this.device,this.modelData);this.glassData[0]=o.ior??1.49,this.glassData[1]=o.roughness??.15,this.glassData[2]=o.f0??.04,this.glassData[3]=o.transmission??.92,this.glassData[4]=o.dispersion??.015,this.glassData[5]=o.envIntensity??.65,this.glassData[6]=o.fresnelPower??5,this.glassData[7]=0,this.glassData[8]=o.viewportWidth,this.glassData[9]=o.viewportHeight,this.glassData[10]=0,this.glassData[11]=0;let s=o.tintColor??[1,1,1,1];this.glassData[12]=s[0],this.glassData[13]=s[1],this.glassData[14]=s[2],this.glassData[15]=s[3];let l=this.glassPool.getBuffer(this.device,this.glassData),c=this.device.createBindGroup({layout:this.modelLayout,entries:[{binding:0,resource:{buffer:a}}]}),m=this.device.createBindGroup({layout:this.glassLayout,entries:[{binding:0,resource:{buffer:l}}]}),d=this.device.createBindGroup({layout:this.backdropLayout,entries:[{binding:0,resource:i},{binding:1,resource:n.createView()}]});e.setPipeline(this.pipeline),e.setBindGroup(0,r),e.setBindGroup(1,c),e.setBindGroup(2,m),e.setBindGroup(3,d),e.setVertexBuffer(0,this.vertexBuffer),e.setIndexBuffer(this.indexBuffer,"uint16"),e.drawIndexed(6)}destroy(){this.modelPool.destroy(),this.glassPool.destroy(),this.vertexBuffer.destroy(),this.indexBuffer.destroy()}};h();h();var ks=`
|
|
131
131
|
struct MotionBlurUniforms {
|
|
132
132
|
shutterFraction: f32, // shutterAngle / 360.0
|
|
133
133
|
sampleCount: u32, // e.g. 16
|
|
@@ -231,7 +231,7 @@ fn fs(@builtin(position) pos: vec4<f32>) -> @location(0) vec4<f32> {
|
|
|
231
231
|
fn fs_motion_blur(@builtin(position) pos: vec4<f32>) -> @location(0) vec4<f32> {
|
|
232
232
|
return executeMotionBlur(pos);
|
|
233
233
|
}
|
|
234
|
-
`;var
|
|
234
|
+
`;var ao=class{device;pipeline;bindGroupLayout;uniformBuffer;sampler;constructor(e){this.device=e;let r=e.createShaderModule({label:"motion-blur-shader",code:ks});this.bindGroupLayout=e.createBindGroupLayout({label:"motion-blur-bgl",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:4,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]});let n=e.createPipelineLayout({label:"motion-blur-layout",bindGroupLayouts:[this.bindGroupLayout]});this.pipeline=e.createRenderPipeline({label:"motion-blur-pipeline",layout:n,vertex:{module:r,entryPoint:"vs_main"},fragment:{module:r,entryPoint:"fs_motion_blur",targets:[{format:"rgba8unorm",blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}}]},primitive:{topology:"triangle-strip"}}),this.uniformBuffer=e.createBuffer({label:"motion-blur-uniforms",size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.sampler=e.createSampler({label:"motion-blur-sampler",magFilter:"linear",minFilter:"linear"})}render(e,r,n,i,o,a){let s=(a.shutterAngle??180)/360,l=a.sampleCount??16,c=a.maxVelocity??64,m=a.depthThreshold??.05,d=a.curveType==="box"?0:a.curveType==="triangle"?2:1,p=new ArrayBuffer(32),f=new Float32Array(p),b=new Uint32Array(p);f[0]=s,b[1]=l,f[2]=c,b[3]=16,f[4]=a.width,f[5]=a.height,f[6]=m,b[7]=d,this.device.queue.writeBuffer(this.uniformBuffer,0,p);let g=this.device.createBindGroup({label:"motion-blur-bg",layout:this.bindGroupLayout,entries:[{binding:0,resource:r},{binding:1,resource:n},{binding:2,resource:i},{binding:3,resource:this.sampler},{binding:4,resource:{buffer:this.uniformBuffer}}]}),y=e.beginRenderPass({label:"motion-blur-pass",colorAttachments:[{view:o,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});y.setPipeline(this.pipeline),y.setBindGroup(0,g),y.draw(4),y.end()}destroy(){this.uniformBuffer.destroy()}};h();var so=class{shadowDepthTexture;shadowDepthView;shadowComparisonSampler;lightViewProjMatrix;constructor(e,r=2048){this.lightViewProjMatrix=it.identity(),this.shadowDepthTexture=e.createTexture({label:"shadow-depth-map",size:[r,r,1],format:"depth32float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),this.shadowDepthView=this.shadowDepthTexture.createView({label:"shadow-depth-view"}),this.shadowComparisonSampler=e.createSampler({label:"shadow-pcf-sampler",compare:"less-equal",magFilter:"linear",minFilter:"linear"})}computeDirectionalLightMatrix(e,r,n=2e3,i=10,o=4e3){let a=it.lookAt(e,r,[0,1,0]),s=n*.5,l=it.orthographic(-s,s,-s,s,i,o);return this.lightViewProjMatrix=it.multiply(l,a),this.lightViewProjMatrix}destroy(){this.shadowDepthTexture.destroy()}};h();h();var Ps=`
|
|
235
235
|
struct SSAOUniforms {
|
|
236
236
|
projMatrix: mat4x4<f32>,
|
|
237
237
|
invProjMatrix: mat4x4<f32>,
|
|
@@ -317,7 +317,7 @@ fn fs_ssao(@builtin(position) pos: vec4<f32>) -> @location(0) f32 {
|
|
|
317
317
|
let ao = 1.0 - (occlusion / f32(max(count, 1u))) * u.intensity;
|
|
318
318
|
return clamp(ao, 0.0, 1.0);
|
|
319
319
|
}
|
|
320
|
-
`,
|
|
320
|
+
`,Ms=`
|
|
321
321
|
struct BlurUniforms {
|
|
322
322
|
viewportWidth: f32,
|
|
323
323
|
viewportHeight: f32,
|
|
@@ -377,7 +377,7 @@ fn fs_blur(@builtin(position) pos: vec4<f32>) -> @location(0) f32 {
|
|
|
377
377
|
}
|
|
378
378
|
return result / totalWeight;
|
|
379
379
|
}
|
|
380
|
-
`;var Ci=class{device;ssaoPipeline;blurPipeline;ssaoBindGroupLayout;blurBindGroupLayout;ssaoUniformBuffer;blurUniformBuffer;kernelBuffer;noiseTexture;sampler;constructor(t){this.device=t,this.noiseTexture=t.createTexture({label:"ssao-noise-tex",size:[4,4,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});let r=new Uint8Array(64);for(let s=0;s<16;s++)r[s*4+0]=Math.floor(Math.random()*255),r[s*4+1]=Math.floor(Math.random()*255),r[s*4+2]=128,r[s*4+3]=255;t.queue.writeTexture({texture:this.noiseTexture},r,{bytesPerRow:16},[4,4,1]);let n=new Float32Array(128);for(let s=0;s<32;s++){let u=Math.random(),c=Math.random(),l=Math.acos(Math.sqrt(1-u)),m=2*Math.PI*c,d=(s+1)/32;d=.1+.9*(d*d),n[s*4+0]=Math.sin(l)*Math.cos(m)*d,n[s*4+1]=Math.sin(l)*Math.sin(m)*d,n[s*4+2]=Math.cos(l)*d,n[s*4+3]=0}this.kernelBuffer=t.createBuffer({label:"ssao-kernel-buffer",size:n.byteLength,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),t.queue.writeBuffer(this.kernelBuffer,0,n);let i=t.createShaderModule({label:"ssao-shader",code:Bo});this.ssaoBindGroupLayout=t.createBindGroupLayout({label:"ssao-bgl",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:4,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"read-only-storage"}},{binding:5,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.ssaoPipeline=t.createRenderPipeline({label:"ssao-eval-pipeline",layout:t.createPipelineLayout({bindGroupLayouts:[this.ssaoBindGroupLayout]}),vertex:{module:i,entryPoint:"vs_main"},fragment:{module:i,entryPoint:"fs_ssao",targets:[{format:"r8unorm"}]},primitive:{topology:"triangle-strip"}}),this.ssaoUniformBuffer=t.createBuffer({label:"ssao-uniforms",size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});let a=t.createShaderModule({label:"ssao-blur-shader",code:Eo});this.blurBindGroupLayout=t.createBindGroupLayout({label:"ssao-blur-bgl",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.blurPipeline=t.createRenderPipeline({label:"ssao-blur-pipeline",layout:t.createPipelineLayout({bindGroupLayouts:[this.blurBindGroupLayout]}),vertex:{module:a,entryPoint:"vs_main"},fragment:{module:a,entryPoint:"fs_blur",targets:[{format:"r8unorm"}]},primitive:{topology:"triangle-strip"}}),this.blurUniformBuffer=t.createBuffer({label:"ssao-blur-uniforms",size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.sampler=t.createSampler({label:"ssao-sampler",magFilter:"linear",minFilter:"linear",addressModeU:"repeat",addressModeV:"repeat"})}render(t,r,n,i,a,s){let u=s.invProjMatrix??Qe.invert(s.projMatrix)??Qe.identity(),c=new Float32Array(64);c.set(s.projMatrix,0),c.set(u,16),c.set(s.viewMatrix,32),c[48]=s.radius??45,c[49]=s.bias??.025,c[50]=s.intensity??1.5,new Uint32Array(c.buffer)[51]=s.kernelSamples??16,c[52]=s.width,c[53]=s.height,this.device.queue.writeBuffer(this.ssaoUniformBuffer,0,c);let l=this.device.createBindGroup({label:"ssao-eval-bg",layout:this.ssaoBindGroupLayout,entries:[{binding:0,resource:r},{binding:1,resource:n},{binding:2,resource:this.noiseTexture.createView()},{binding:3,resource:this.sampler},{binding:4,resource:{buffer:this.kernelBuffer}},{binding:5,resource:{buffer:this.ssaoUniformBuffer}}]}),m=t.beginRenderPass({label:"ssao-eval-pass",colorAttachments:[{view:i,loadOp:"clear",storeOp:"store",clearValue:{r:1,g:1,b:1,a:1}}]});m.setPipeline(this.ssaoPipeline),m.setBindGroup(0,l),m.draw(4),m.end();let d=new ArrayBuffer(32),p=new Float32Array(d),f=new Int32Array(d);p[0]=s.width,p[1]=s.height,f[2]=s.blurRadius??4,p[3]=s.depthThreshold??.05,this.device.queue.writeBuffer(this.blurUniformBuffer,0,d);let y=this.device.createBindGroup({label:"ssao-blur-bg",layout:this.blurBindGroupLayout,entries:[{binding:0,resource:i},{binding:1,resource:r},{binding:2,resource:this.sampler},{binding:3,resource:{buffer:this.blurUniformBuffer}}]}),g=t.beginRenderPass({label:"ssao-blur-pass",colorAttachments:[{view:a,loadOp:"clear",storeOp:"store",clearValue:{r:1,g:1,b:1,a:1}}]});g.setPipeline(this.blurPipeline),g.setBindGroup(0,y),g.draw(4),g.end()}destroy(){this.ssaoUniformBuffer.destroy(),this.blurUniformBuffer.destroy(),this.noiseTexture.destroy()}};h();var Hb=e=>{if(!e)return"srcOver";switch(e){case"source-over":return"srcOver";case"source-in":return"srcIn";case"source-out":return"srcOut";case"source-atop":return"srcATop";case"destination-over":return"dstOver";case"destination-in":return"dstIn";case"destination-out":return"dstOut";case"destination-atop":return"dstATop";case"copy":return"src";case"xor":return"xor";case"multiply":return"multiply";case"screen":return"screen";case"overlay":return"overlay";case"darken":return"darken";case"lighten":case"lighter":return"lighten";case"color-dodge":return"colorDodge";case"color-burn":return"colorBurn";case"hard-light":return"hardLight";case"soft-light":return"softLight";case"difference":return"difference";case"exclusion":return"exclusion";case"hue":return"hue";case"saturation":return"saturation";case"color":return"color";case"luminosity":return"luminosity";default:return"srcOver"}},Yb=e=>e==="destination-in"||e==="source-in";h();function Zb(e,t,r,n,i="outside"){if(i==="inside"){let a=n/2;return{x:a,y:a,width:Math.max(0,e-n),height:Math.max(0,t-n),radius:r===0?0:Math.max(0,r-a)}}if(i==="outside"){let a=n/2;return{x:-a,y:-a,width:e+n,height:t+n,radius:r===0?0:r+a}}return{x:0,y:0,width:e,height:t,radius:r}}h();var Uo=new Map;function J(e){let t=(Uo.get(e)??0)+1;return Uo.set(e,t),`${e}-auto-${t}`}h();function kd(e,...t){let r=[];for(let n=0;n<e.length;n++){let i=e[n];if(i&&r.push({text:i}),n<t.length){let a=t[n];if(a==null)continue;if(Array.isArray(a))for(let s of a)typeof s=="string"?s&&r.push({text:s}):s&&typeof s=="object"&&"text"in s&&r.push(s);else typeof a=="object"&&"text"in a?r.push(a):typeof a=="object"&&"get"in a&&typeof a.get=="function"?r.push({text:a}):r.push({text:String(a)})}}return r}function Td(e,t={}){return{text:e,...t}}function Pd(e,t={}){return{text:e,fontWeight:t.fontWeight??700,...t}}function Md(e,t={}){return{text:e,fontStyle:"italic",...t}}function Cd(e,t={}){return{text:e,fill:t.fill??"#6366f1",...t}}function Nd(e,t,r={}){return{text:e,fill:t,...r}}function Ad(e,t,r={}){return{text:e,fontSize:t,...r}}function Od(e,t={}){let{bg:r,fill:n,radius:i,paddingX:a,paddingY:s,...u}=t;return{text:e,fill:n,mark:{background:r??"#6366f133",borderRadius:i??4,paddingX:a??6,paddingY:s??2},...u}}function Dd(e,t={}){return{text:e,baselineShift:t.baselineShift??-8,...t}}function Ld(e,t={}){return{text:e,baselineShift:t.baselineShift??6,...t}}function Fd(e,t={}){return{text:e,fontFamily:t.fontFamily??"JetBrains Mono",mark:t.mark??{background:"#ffffff18",borderRadius:4,paddingX:6,paddingY:2},...t}}function Vr(e){if(typeof e=="string")return{text:e};if(!Array.isArray(e))return{text:String(e)};let t=[],r="";for(let n of e)if(typeof n=="string")n&&(t.push({text:n}),r+=n);else if(n&&typeof n=="object"&&"text"in n){let i=n;t.push(i);let a=typeof i.text=="string"?i.text:i.text&&typeof i.text=="object"&&"get"in i.text&&typeof i.text.get=="function"?String(i.text.get()):String(i.text??"");r+=a}return{text:r,spans:t.length>0?t:void 0}}function Rd(e){if(!e||!e.includes("<"))return[{text:e}];let t=[],r=/<(\/?[a-zA-Z0-9_-]+)([^>]*)>/g,n=0,i=[],a=()=>{let u={};for(let c of i)Object.assign(u,c.style);return u};for(;;){let u=r.exec(e);if(!u)break;let c=e.slice(n,u.index);c&&t.push({text:c,...a()}),n=u.index+u[0].length;let l=u[1].toLowerCase(),m=u[2];if(l.startsWith("/")){let d=l.slice(1);for(let p=i.length-1;p>=0;p--)if(i[p].tag===d){i.splice(p,1);break}}else{let d={},p=/([a-zA-Z0-9_-]+)=["']([^"']*)["']/g;for(;;){let y=p.exec(m);if(!y)break;d[y[1].toLowerCase()]=y[2]}let f={};if(l==="b"||l==="strong")f.fontWeight=700,(d.color||d.fill)&&(f.fill=d.color??d.fill);else if(l==="i"||l==="em")f.fontStyle="italic",(d.color||d.fill)&&(f.fill=d.color??d.fill);else if(l==="accent")f.fill="#6366f1";else if(l==="color")f.fill=d.value??d.hex??d.fill;else if(l==="size"){let y=parseFloat(d.value??d.px??d.pt??"0");y>0&&(f.fontSize=y)}else if(l==="mark")f.mark={background:d.bg??d.background??"#6366f133",borderRadius:d.radius?parseFloat(d.radius):4,paddingX:d.paddingx?parseFloat(d.paddingx):6,paddingY:d.paddingy?parseFloat(d.paddingy):2},(d.color||d.fill)&&(f.fill=d.color??d.fill);else if(l==="sup")f.baselineShift=-8;else if(l==="sub")f.baselineShift=6;else if(l==="code")f.fontFamily="JetBrains Mono",f.mark={background:d.bg??"#ffffff18",borderRadius:4,paddingX:6,paddingY:2};else if(l==="span"){if((d.color||d.fill)&&(f.fill=d.color??d.fill),d.fontfamily&&(f.fontFamily=d.fontfamily),d.fontsize&&(f.fontSize=parseFloat(d.fontsize)),d.fontweight){let y=parseInt(d.fontweight,10);f.fontWeight=Number.isNaN(y)?d.fontweight:y}(d.fontstyle==="italic"||d.fontstyle==="normal")&&(f.fontStyle=d.fontstyle),d.letterspacing&&(f.letterSpacing=parseFloat(d.letterspacing)),d.baselineshift&&(f.baselineShift=parseFloat(d.baselineshift)),d.opacity&&(f.opacity=parseFloat(d.opacity))}i.push({tag:l,style:f})}}let s=e.slice(n);return s&&t.push({text:s,...a()}),t}h();var sr=class{textures=new Map;set(t,r){this.textures.set(t,r)}get(t){return this.textures.get(t)}has(t){return this.textures.has(t)}getOutputs(){return{canny:this.textures.get("canny"),depth:this.textures.get("depth"),normals:this.textures.get("normals"),poseSkeleton:this.textures.get("poseSkeleton"),segmentationMask:this.textures.get("segmentationMask"),faceLandmarks:this.textures.get("faceLandmarks"),motionVectors:this.textures.get("motionVectors"),deflickered:this.textures.get("deflickered")}}createBindGroupEntry(t,r){let n=this.textures.get(t);if(!n)throw new Error(`[ControlNetMultiplexer] Cannot create bind group entry: conditioning texture "${t}" is not registered in VRAM.`);return{binding:r,resource:n.createView({label:`controlnet_${t}_view`})}}exportTensorView(t){let r=this.textures.get(t);if(!r)throw new Error(`[ControlNetMultiplexer] Conditioning tensor "${t}" not found in multiplexer.`);return{texture:r,width:r.width,height:r.height,format:r.format}}async readPixelsAsync(t,r){let n=this.textures.get(r);if(!n)throw new Error(`[ControlNetMultiplexer] Cannot read pixels: conditioning texture "${r}" is missing.`);let i=n.width,a=n.height,s=n.format,u=4;s==="rgba16float"||s==="rg32float"?u=8:s==="r32float"?u=4:s==="rgba32float"&&(u=16);let c=i*u,l=Math.ceil(c/256)*256,m=l*a,d=t.createBuffer({size:m,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ,label:`controlnet_readback_staging_${r}`}),p=t.createCommandEncoder({label:`readback_encoder_${r}`});p.copyTextureToBuffer({texture:n},{buffer:d,bytesPerRow:l,rowsPerImage:a},[i,a,1]),t.queue.submit([p.finish()]),await d.mapAsync(GPUMapMode.READ);let f=d.getMappedRange(),y=new Uint8Array(i*a*u),g=new Uint8Array(f);if(l===c)y.set(g.subarray(0,i*a*u));else for(let b=0;b<a;b++){let P=b*l,N=b*c;y.set(g.subarray(P,P+c),N)}return d.unmap(),d.destroy(),{width:i,height:a,format:s,data:y}}destroy(){for(let t of this.textures.values())try{t.destroy()}catch{}this.textures.clear()}};h();h();h();var _o=`
|
|
380
|
+
`;var uo=class{device;ssaoPipeline;blurPipeline;ssaoBindGroupLayout;blurBindGroupLayout;ssaoUniformBuffer;blurUniformBuffer;kernelBuffer;noiseTexture;sampler;constructor(e){this.device=e,this.noiseTexture=e.createTexture({label:"ssao-noise-tex",size:[4,4,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});let r=new Uint8Array(64);for(let a=0;a<16;a++)r[a*4+0]=Math.floor(Math.random()*255),r[a*4+1]=Math.floor(Math.random()*255),r[a*4+2]=128,r[a*4+3]=255;e.queue.writeTexture({texture:this.noiseTexture},r,{bytesPerRow:16},[4,4,1]);let n=new Float32Array(128);for(let a=0;a<32;a++){let s=Math.random(),l=Math.random(),c=Math.acos(Math.sqrt(1-s)),m=2*Math.PI*l,d=(a+1)/32;d=.1+.9*(d*d),n[a*4+0]=Math.sin(c)*Math.cos(m)*d,n[a*4+1]=Math.sin(c)*Math.sin(m)*d,n[a*4+2]=Math.cos(c)*d,n[a*4+3]=0}this.kernelBuffer=e.createBuffer({label:"ssao-kernel-buffer",size:n.byteLength,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),e.queue.writeBuffer(this.kernelBuffer,0,n);let i=e.createShaderModule({label:"ssao-shader",code:Ps});this.ssaoBindGroupLayout=e.createBindGroupLayout({label:"ssao-bgl",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:4,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"read-only-storage"}},{binding:5,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.ssaoPipeline=e.createRenderPipeline({label:"ssao-eval-pipeline",layout:e.createPipelineLayout({bindGroupLayouts:[this.ssaoBindGroupLayout]}),vertex:{module:i,entryPoint:"vs_main"},fragment:{module:i,entryPoint:"fs_ssao",targets:[{format:"r8unorm"}]},primitive:{topology:"triangle-strip"}}),this.ssaoUniformBuffer=e.createBuffer({label:"ssao-uniforms",size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});let o=e.createShaderModule({label:"ssao-blur-shader",code:Ms});this.blurBindGroupLayout=e.createBindGroupLayout({label:"ssao-blur-bgl",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.blurPipeline=e.createRenderPipeline({label:"ssao-blur-pipeline",layout:e.createPipelineLayout({bindGroupLayouts:[this.blurBindGroupLayout]}),vertex:{module:o,entryPoint:"vs_main"},fragment:{module:o,entryPoint:"fs_blur",targets:[{format:"r8unorm"}]},primitive:{topology:"triangle-strip"}}),this.blurUniformBuffer=e.createBuffer({label:"ssao-blur-uniforms",size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.sampler=e.createSampler({label:"ssao-sampler",magFilter:"linear",minFilter:"linear",addressModeU:"repeat",addressModeV:"repeat"})}render(e,r,n,i,o,a){let s=a.invProjMatrix??it.invert(a.projMatrix)??it.identity(),l=new Float32Array(64);l.set(a.projMatrix,0),l.set(s,16),l.set(a.viewMatrix,32),l[48]=a.radius??45,l[49]=a.bias??.025,l[50]=a.intensity??1.5,new Uint32Array(l.buffer)[51]=a.kernelSamples??16,l[52]=a.width,l[53]=a.height,this.device.queue.writeBuffer(this.ssaoUniformBuffer,0,l);let c=this.device.createBindGroup({label:"ssao-eval-bg",layout:this.ssaoBindGroupLayout,entries:[{binding:0,resource:r},{binding:1,resource:n},{binding:2,resource:this.noiseTexture.createView()},{binding:3,resource:this.sampler},{binding:4,resource:{buffer:this.kernelBuffer}},{binding:5,resource:{buffer:this.ssaoUniformBuffer}}]}),m=e.beginRenderPass({label:"ssao-eval-pass",colorAttachments:[{view:i,loadOp:"clear",storeOp:"store",clearValue:{r:1,g:1,b:1,a:1}}]});m.setPipeline(this.ssaoPipeline),m.setBindGroup(0,c),m.draw(4),m.end();let d=new ArrayBuffer(32),p=new Float32Array(d),f=new Int32Array(d);p[0]=a.width,p[1]=a.height,f[2]=a.blurRadius??4,p[3]=a.depthThreshold??.05,this.device.queue.writeBuffer(this.blurUniformBuffer,0,d);let b=this.device.createBindGroup({label:"ssao-blur-bg",layout:this.blurBindGroupLayout,entries:[{binding:0,resource:i},{binding:1,resource:r},{binding:2,resource:this.sampler},{binding:3,resource:{buffer:this.blurUniformBuffer}}]}),g=e.beginRenderPass({label:"ssao-blur-pass",colorAttachments:[{view:o,loadOp:"clear",storeOp:"store",clearValue:{r:1,g:1,b:1,a:1}}]});g.setPipeline(this.blurPipeline),g.setBindGroup(0,b),g.draw(4),g.end()}destroy(){this.ssaoUniformBuffer.destroy(),this.blurUniformBuffer.destroy(),this.noiseTexture.destroy()}};h();var x0=t=>{if(!t)return"srcOver";switch(t){case"source-over":return"srcOver";case"source-in":return"srcIn";case"source-out":return"srcOut";case"source-atop":return"srcATop";case"destination-over":return"dstOver";case"destination-in":return"dstIn";case"destination-out":return"dstOut";case"destination-atop":return"dstATop";case"copy":return"src";case"xor":return"xor";case"multiply":return"multiply";case"screen":return"screen";case"overlay":return"overlay";case"darken":return"darken";case"lighten":case"lighter":return"lighten";case"color-dodge":return"colorDodge";case"color-burn":return"colorBurn";case"hard-light":return"hardLight";case"soft-light":return"softLight";case"difference":return"difference";case"exclusion":return"exclusion";case"hue":return"hue";case"saturation":return"saturation";case"color":return"color";case"luminosity":return"luminosity";default:return"srcOver"}},v0=t=>t==="destination-in"||t==="source-in";h();function k0(t,e,r,n,i="outside"){if(i==="inside"){let o=n/2;return{x:o,y:o,width:Math.max(0,t-n),height:Math.max(0,e-n),radius:r===0?0:Math.max(0,r-o)}}if(i==="outside"){let o=n/2;return{x:-o,y:-o,width:t+n,height:e+n,radius:r===0?0:r+o}}return{x:0,y:0,width:t,height:e,radius:r}}h();var Ts=new Map;function J(t){let e=(Ts.get(t)??0)+1;return Ts.set(t,e),`${t}-auto-${e}`}h();function Sm(t,...e){let r=[];for(let n=0;n<t.length;n++){let i=t[n];if(i&&r.push({text:i}),n<e.length){let o=e[n];if(o==null)continue;if(Array.isArray(o))for(let a of o)typeof a=="string"?a&&r.push({text:a}):a&&typeof a=="object"&&"text"in a&&r.push(a);else typeof o=="object"&&"text"in o?r.push(o):typeof o=="object"&&"get"in o&&typeof o.get=="function"?r.push({text:o}):r.push({text:String(o)})}}return r}function km(t,e={}){return{text:t,...e}}function Pm(t,e={}){return{text:t,fontWeight:e.fontWeight??700,...e}}function Mm(t,e={}){return{text:t,fontStyle:"italic",...e}}function Tm(t,e={}){return{text:t,fill:e.fill??"#6366f1",...e}}function Cm(t,e,r={}){return{text:t,fill:e,...r}}function Dm(t,e,r={}){return{text:t,fontSize:e,...r}}function Am(t,e={}){let{bg:r,fill:n,radius:i,paddingX:o,paddingY:a,...s}=e;return{text:t,fill:n,mark:{background:r??"#6366f133",borderRadius:i??4,paddingX:o??6,paddingY:a??2},...s}}function Nm(t,e={}){return{text:t,baselineShift:e.baselineShift??-8,...e}}function Om(t,e={}){return{text:t,baselineShift:e.baselineShift??6,...e}}function Rm(t,e={}){return{text:t,fontFamily:e.fontFamily??"JetBrains Mono",mark:e.mark??{background:"#ffffff18",borderRadius:4,paddingX:6,paddingY:2},...e}}function xn(t){if(typeof t=="string")return{text:t};if(!Array.isArray(t))return{text:String(t)};let e=[],r="";for(let n of t)if(typeof n=="string")n&&(e.push({text:n}),r+=n);else if(n&&typeof n=="object"&&"text"in n){let i=n;e.push(i);let o=typeof i.text=="string"?i.text:i.text&&typeof i.text=="object"&&"get"in i.text&&typeof i.text.get=="function"?String(i.text.get()):String(i.text??"");r+=o}return{text:r,spans:e.length>0?e:void 0}}function Fm(t){if(!t||!t.includes("<"))return[{text:t}];let e=[],r=/<(\/?[a-zA-Z0-9_-]+)([^>]*)>/g,n=0,i=[],o=()=>{let s={};for(let l of i)Object.assign(s,l.style);return s};for(;;){let s=r.exec(t);if(!s)break;let l=t.slice(n,s.index);l&&e.push({text:l,...o()}),n=s.index+s[0].length;let c=s[1].toLowerCase(),m=s[2];if(c.startsWith("/")){let d=c.slice(1);for(let p=i.length-1;p>=0;p--)if(i[p].tag===d){i.splice(p,1);break}}else{let d={},p=/([a-zA-Z0-9_-]+)=["']([^"']*)["']/g;for(;;){let b=p.exec(m);if(!b)break;d[b[1].toLowerCase()]=b[2]}let f={};if(c==="b"||c==="strong")f.fontWeight=700,(d.color||d.fill)&&(f.fill=d.color??d.fill);else if(c==="i"||c==="em")f.fontStyle="italic",(d.color||d.fill)&&(f.fill=d.color??d.fill);else if(c==="accent")f.fill="#6366f1";else if(c==="color")f.fill=d.value??d.hex??d.fill;else if(c==="size"){let b=parseFloat(d.value??d.px??d.pt??"0");b>0&&(f.fontSize=b)}else if(c==="mark")f.mark={background:d.bg??d.background??"#6366f133",borderRadius:d.radius?parseFloat(d.radius):4,paddingX:d.paddingx?parseFloat(d.paddingx):6,paddingY:d.paddingy?parseFloat(d.paddingy):2},(d.color||d.fill)&&(f.fill=d.color??d.fill);else if(c==="sup")f.baselineShift=-8;else if(c==="sub")f.baselineShift=6;else if(c==="code")f.fontFamily="JetBrains Mono",f.mark={background:d.bg??"#ffffff18",borderRadius:4,paddingX:6,paddingY:2};else if(c==="span"){if((d.color||d.fill)&&(f.fill=d.color??d.fill),d.fontfamily&&(f.fontFamily=d.fontfamily),d.fontsize&&(f.fontSize=parseFloat(d.fontsize)),d.fontweight){let b=parseInt(d.fontweight,10);f.fontWeight=Number.isNaN(b)?d.fontweight:b}(d.fontstyle==="italic"||d.fontstyle==="normal")&&(f.fontStyle=d.fontstyle),d.letterspacing&&(f.letterSpacing=parseFloat(d.letterspacing)),d.baselineshift&&(f.baselineShift=parseFloat(d.baselineshift)),d.opacity&&(f.opacity=parseFloat(d.opacity))}i.push({tag:c,style:f})}}let a=t.slice(n);return a&&e.push({text:a,...o()}),e}h();var Mr=class{textures=new Map;set(e,r){this.textures.set(e,r)}get(e){return this.textures.get(e)}has(e){return this.textures.has(e)}getOutputs(){return{canny:this.textures.get("canny"),depth:this.textures.get("depth"),normals:this.textures.get("normals"),poseSkeleton:this.textures.get("poseSkeleton"),segmentationMask:this.textures.get("segmentationMask"),faceLandmarks:this.textures.get("faceLandmarks"),motionVectors:this.textures.get("motionVectors"),deflickered:this.textures.get("deflickered")}}createBindGroupEntry(e,r){let n=this.textures.get(e);if(!n)throw new Error(`[ControlNetMultiplexer] Cannot create bind group entry: conditioning texture "${e}" is not registered in VRAM.`);return{binding:r,resource:n.createView({label:`controlnet_${e}_view`})}}exportTensorView(e){let r=this.textures.get(e);if(!r)throw new Error(`[ControlNetMultiplexer] Conditioning tensor "${e}" not found in multiplexer.`);return{texture:r,width:r.width,height:r.height,format:r.format}}async readPixelsAsync(e,r){let n=this.textures.get(r);if(!n)throw new Error(`[ControlNetMultiplexer] Cannot read pixels: conditioning texture "${r}" is missing.`);let i=n.width,o=n.height,a=n.format,s=4;a==="rgba16float"||a==="rg32float"?s=8:a==="r32float"?s=4:a==="rgba32float"&&(s=16);let l=i*s,c=Math.ceil(l/256)*256,m=c*o,d=e.createBuffer({size:m,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ,label:`controlnet_readback_staging_${r}`}),p=e.createCommandEncoder({label:`readback_encoder_${r}`});p.copyTextureToBuffer({texture:n},{buffer:d,bytesPerRow:c,rowsPerImage:o},[i,o,1]),e.queue.submit([p.finish()]),await d.mapAsync(GPUMapMode.READ);let f=d.getMappedRange(),b=new Uint8Array(i*o*s),g=new Uint8Array(f);if(c===l)b.set(g.subarray(0,i*o*s));else for(let y=0;y<o;y++){let k=y*c,D=y*l;b.set(g.subarray(k,k+l),D)}return d.unmap(),d.destroy(),{width:i,height:o,format:a,data:b}}destroy(){for(let e of this.textures.values())try{e.destroy()}catch{}this.textures.clear()}};h();h();h();var Cs=`
|
|
381
381
|
struct CannyParams {
|
|
382
382
|
lowThreshold: f32,
|
|
383
383
|
highThreshold: f32,
|
|
@@ -433,7 +433,7 @@ fn computeSobel(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
|
433
433
|
|
|
434
434
|
textureStore(magnitudeTex, id.xy, vec4<f32>(mag, sector, 0.0, 1.0));
|
|
435
435
|
}
|
|
436
|
-
`,
|
|
436
|
+
`,Ds=`
|
|
437
437
|
struct CannyParams {
|
|
438
438
|
lowThreshold: f32,
|
|
439
439
|
highThreshold: f32,
|
|
@@ -491,7 +491,7 @@ fn computeNonMaxSuppression(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
|
491
491
|
|
|
492
492
|
textureStore(edgeTex, id.xy, vec4<f32>(edge, edge, edge, 1.0));
|
|
493
493
|
}
|
|
494
|
-
`,
|
|
494
|
+
`,As=`
|
|
495
495
|
struct CannyParams {
|
|
496
496
|
lowThreshold: f32,
|
|
497
497
|
highThreshold: f32,
|
|
@@ -549,7 +549,7 @@ fn computeNonMaxSuppression(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
|
549
549
|
|
|
550
550
|
textureStore(edgeTex, id.xy, vec4<f32>(edge, 0.0, 0.0, 1.0));
|
|
551
551
|
}
|
|
552
|
-
`;var
|
|
552
|
+
`;var Tr=class{constructor(e){this.device=e;let r=e.createShaderModule({label:"canny_sobel.wgsl",code:Cs});this.sobelPipeline=e.createComputePipeline({label:"CannySobelPipeline",layout:"auto",compute:{module:r,entryPoint:"computeSobel"}});let n=e.createShaderModule({label:"canny_nms_rgba8.wgsl",code:Ds});this.nmsRgba8Pipeline=e.createComputePipeline({label:"CannyNmsRgba8Pipeline",layout:"auto",compute:{module:n,entryPoint:"computeNonMaxSuppression"}});let i=e.createShaderModule({label:"canny_nms_r32f.wgsl",code:As});this.nmsR32fPipeline=e.createComputePipeline({label:"CannyNmsR32fPipeline",layout:"auto",compute:{module:i,entryPoint:"computeNonMaxSuppression"}}),this.uniformBuffer=e.createBuffer({size:16,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"canny_uniform_buffer"})}device;sobelPipeline;nmsRgba8Pipeline;nmsR32fPipeline;uniformBuffer;cachedIntermediateTexture;cachedOutputTexture;execute(e,r={}){let n=e.width,i=e.height,o=r.low??.1,a=r.high??.3,s=r.outputFormat??"rgba8unorm",l=new ArrayBuffer(16),c=new Float32Array(l),m=new Uint32Array(l);c[0]=o,c[1]=a,m[2]=n,m[3]=i,this.device.queue.writeBuffer(this.uniformBuffer,0,l),(!this.cachedIntermediateTexture||this.cachedIntermediateTexture.width!==n||this.cachedIntermediateTexture.height!==i)&&(this.cachedIntermediateTexture?.destroy(),this.cachedIntermediateTexture=this.device.createTexture({label:"canny_magnitude_intermediate",size:[n,i],format:"rgba16float",usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING})),(!this.cachedOutputTexture||this.cachedOutputTexture.width!==n||this.cachedOutputTexture.height!==i||this.cachedOutputTexture.format!==s)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({label:`canny_edge_output_${s}`,size:[n,i],format:s,usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}));let d=this.device.createCommandEncoder({label:"canny_command_encoder"}),p=this.device.createBindGroup({layout:this.sobelPipeline.getBindGroupLayout(0),entries:[{binding:0,resource:e.createView()},{binding:1,resource:this.cachedIntermediateTexture.createView()},{binding:2,resource:{buffer:this.uniformBuffer}}]}),f=d.beginComputePass({label:"canny_sobel_pass"});f.setPipeline(this.sobelPipeline),f.setBindGroup(0,p),f.dispatchWorkgroups(Math.ceil(n/16),Math.ceil(i/16)),f.end();let b=s==="r32float"?this.nmsR32fPipeline:this.nmsRgba8Pipeline,g=this.device.createBindGroup({layout:b.getBindGroupLayout(0),entries:[{binding:0,resource:this.cachedIntermediateTexture.createView()},{binding:1,resource:this.cachedOutputTexture.createView()},{binding:2,resource:{buffer:this.uniformBuffer}}]}),y=d.beginComputePass({label:"canny_nms_pass"});return y.setPipeline(b),y.setBindGroup(0,g),y.dispatchWorkgroups(Math.ceil(n/16),Math.ceil(i/16)),y.end(),this.device.queue.submit([d.finish()]),this.cachedOutputTexture}destroy(){this.cachedIntermediateTexture?.destroy(),this.cachedOutputTexture?.destroy(),this.uniformBuffer.destroy()}};h();h();var Ns=`
|
|
553
553
|
struct DepthNormalParams {
|
|
554
554
|
width: u32,
|
|
555
555
|
height: u32,
|
|
@@ -582,7 +582,7 @@ fn computeNormals(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
|
582
582
|
let packedColor = vec4<f32>(normal * 0.5 + 0.5, 1.0);
|
|
583
583
|
textureStore(normalTex, id.xy, packedColor);
|
|
584
584
|
}
|
|
585
|
-
|
|
585
|
+
`,Os=`
|
|
586
586
|
struct DepthNormalParams {
|
|
587
587
|
width: u32,
|
|
588
588
|
height: u32,
|
|
@@ -615,7 +615,7 @@ fn computeNormals(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
|
615
615
|
let packedColor = vec4<f32>(normal * 0.5 + 0.5, 1.0);
|
|
616
616
|
textureStore(normalTex, id.xy, packedColor);
|
|
617
617
|
}
|
|
618
|
-
`;var
|
|
618
|
+
`;var Cr=class{constructor(e){this.device=e;let r=e.createShaderModule({label:"depth_normals_rgba16f.wgsl",code:Ns});this.normalRgba16fPipeline=e.createComputePipeline({label:"DepthNormalsRgba16fPipeline",layout:"auto",compute:{module:r,entryPoint:"computeNormals"}});let n=e.createShaderModule({label:"depth_normals_rgba8.wgsl",code:Os});this.normalRgba8Pipeline=e.createComputePipeline({label:"DepthNormalsRgba8Pipeline",layout:"auto",compute:{module:n,entryPoint:"computeNormals"}}),this.uniformBuffer=e.createBuffer({size:16,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"depth_normals_uniform_buffer"})}device;normalRgba16fPipeline;normalRgba8Pipeline;uniformBuffer;cachedOutputTexture;execute(e,r={}){let n=e.width,i=e.height,o=r.depthScale??1,a=r.outputFormat??"rgba16float",s=new ArrayBuffer(16),l=new Uint32Array(s),c=new Float32Array(s);l[0]=n,l[1]=i,c[2]=o,c[3]=0,this.device.queue.writeBuffer(this.uniformBuffer,0,s),(!this.cachedOutputTexture||this.cachedOutputTexture.width!==n||this.cachedOutputTexture.height!==i||this.cachedOutputTexture.format!==a)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({label:`normal_output_${a}`,size:[n,i],format:a,usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}));let m=a==="rgba8unorm"?this.normalRgba8Pipeline:this.normalRgba16fPipeline,d=this.device.createCommandEncoder({label:"depth_normals_command_encoder"}),p=this.device.createBindGroup({layout:m.getBindGroupLayout(0),entries:[{binding:0,resource:e.createView()},{binding:1,resource:this.cachedOutputTexture.createView()},{binding:2,resource:{buffer:this.uniformBuffer}}]}),f=d.beginComputePass({label:"depth_normals_compute_pass"});return f.setPipeline(m),f.setBindGroup(0,p),f.dispatchWorkgroups(Math.ceil(n/16),Math.ceil(i/16)),f.end(),this.device.queue.submit([d.finish()]),this.cachedOutputTexture}destroy(){this.cachedOutputTexture?.destroy(),this.uniformBuffer.destroy()}};h();h();var Rs=`
|
|
619
619
|
struct FaceSegment {
|
|
620
620
|
start: vec2<f32>,
|
|
621
621
|
end: vec2<f32>,
|
|
@@ -672,7 +672,7 @@ fn computeFaceLandmarks(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
|
672
672
|
|
|
673
673
|
textureStore(outputTex, id.xy, outColor);
|
|
674
674
|
}
|
|
675
|
-
`;function
|
|
675
|
+
`;function Ke(t,e){let r=[];for(let n=0;n<t.length-1;n++)r.push({from:t[n],to:t[n+1],color:e});return r}var Dr=[...Ke([70,63,105,66,107],[0,1,1,1]),...Ke([300,293,334,296,336],[0,1,1,1]),...Ke([33,160,158,133,153,144,33],[0,1,0,1]),...Ke([263,387,385,362,380,373,263],[0,1,0,1]),...Ke([168,6,197,195,4],[1,1,0,1]),...Ke([98,97,2,326,327],[1,1,0,1]),...Ke([61,185,40,39,37,0,267,269,270,409,291,375,321,405,314,17,84,181,91,146,61],[1,.2,.2,1]),...Ke([78,95,88,178,87,14,317,402,318,324,308,415,310,311,312,13,82,81,80,191,78],[1,0,.8,1]),...Ke([10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109,10],[.9,.9,.9,1])],vn=class{constructor(e){this.device=e;let r=e.createShaderModule({label:"face_landmarks.wgsl",code:Rs});this.computePipeline=e.createComputePipeline({label:"FaceLandmarksComputePipeline",layout:"auto",compute:{module:r,entryPoint:"computeFaceLandmarks"}}),this.uniformBuffer=e.createBuffer({size:64,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"face_landmarks_uniform_buffer"});let n=Math.max(256,Dr.length*48);this.storageBuffer=e.createBuffer({size:n,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,label:"face_landmarks_storage_buffer"})}device;computePipeline;uniformBuffer;storageBuffer;cachedOutputTexture;execute(e,r={}){let n=r.width??1024,i=r.height??1024,o=r.lineWidth??4,a=Math.max(1,o/2),s=new Uint32Array(4);s[0]=n,s[1]=i,s[2]=Dr.length,s[3]=0,this.device.queue.writeBuffer(this.uniformBuffer,0,s);let l=new Float32Array(Dr.length*12);for(let p=0;p<Dr.length;p++){let f=Dr[p],b=e[f.from],g=e[f.to],y=p*12;if(!b||!g||(b.visibility??1)<.2||(g.visibility??1)<.2){l[y+9]=0;continue}l[y+0]=b.x*n,l[y+1]=b.y*i,l[y+2]=g.x*n,l[y+3]=g.y*i,l[y+4]=f.color[0],l[y+5]=f.color[1],l[y+6]=f.color[2],l[y+7]=f.color[3],l[y+8]=a,l[y+9]=1,l[y+10]=0,l[y+11]=0}this.device.queue.writeBuffer(this.storageBuffer,0,l),(!this.cachedOutputTexture||this.cachedOutputTexture.width!==n||this.cachedOutputTexture.height!==i)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({size:{width:n,height:i},format:"rgba8unorm",usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.COPY_DST,label:"face_landmarks_output_texture"}));let c=this.device.createBindGroup({label:"FaceLandmarksBindGroup",layout:this.computePipeline.getBindGroupLayout(0),entries:[{binding:0,resource:this.cachedOutputTexture.createView()},{binding:1,resource:{buffer:this.uniformBuffer}},{binding:2,resource:{buffer:this.storageBuffer}}]}),m=this.device.createCommandEncoder({label:"FaceLandmarksCommandEncoder"}),d=m.beginComputePass({label:"FaceLandmarksComputePass"});return d.setPipeline(this.computePipeline),d.setBindGroup(0,c),d.dispatchWorkgroups(Math.ceil(n/16),Math.ceil(i/16)),d.end(),this.device.queue.submit([m.finish()]),this.cachedOutputTexture}destroy(){this.uniformBuffer.destroy(),this.storageBuffer.destroy(),this.cachedOutputTexture?.destroy()}};h();h();var Fs=`
|
|
676
676
|
struct SegParams {
|
|
677
677
|
threshold: f32,
|
|
678
678
|
feather: f32,
|
|
@@ -702,18 +702,18 @@ fn computeSegmentation(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
|
702
702
|
|
|
703
703
|
textureStore(outputTex, id.xy, vec4<f32>(alpha, alpha, alpha, 1.0));
|
|
704
704
|
}
|
|
705
|
-
`;var Hr=class{constructor(t){this.device=t;let r=t.createShaderModule({label:"segmentation.wgsl",code:Vo});this.computePipeline=t.createComputePipeline({label:"SegmentationComputePipeline",layout:"auto",compute:{module:r,entryPoint:"computeSegmentation"}}),this.uniformBuffer=t.createBuffer({size:16,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"segmentation_uniform_buffer"})}device;computePipeline;uniformBuffer;cachedOutputTexture;execute(t,r={}){let n=t.width,i=t.height,a=r.threshold??.5,s=r.feather??.05,u=new ArrayBuffer(16),c=new Float32Array(u),l=new Uint32Array(u);c[0]=a,c[1]=s,l[2]=n,l[3]=i,this.device.queue.writeBuffer(this.uniformBuffer,0,u),(!this.cachedOutputTexture||this.cachedOutputTexture.width!==n||this.cachedOutputTexture.height!==i)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({label:"segmentation_output_texture",size:[n,i],format:"rgba8unorm",usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}));let m=this.device.createCommandEncoder({label:"segmentation_command_encoder"}),d=this.device.createBindGroup({label:"segmentation_bind_group",layout:this.computePipeline.getBindGroupLayout(0),entries:[{binding:0,resource:t.createView({label:"segmentation_input_view"})},{binding:1,resource:this.cachedOutputTexture.createView({label:"segmentation_output_view"})},{binding:2,resource:{buffer:this.uniformBuffer}}]}),p=m.beginComputePass({label:"segmentation_compute_pass"});return p.setPipeline(this.computePipeline),p.setBindGroup(0,d),p.dispatchWorkgroups(Math.ceil(n/16),Math.ceil(i/16),1),p.end(),this.device.queue.submit([m.finish()]),this.cachedOutputTexture}destroy(){this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=void 0,this.uniformBuffer.destroy()}};var Bt=class e{constructor(t){this.source=t;this.id=`tensor-${Math.random().toString(36).slice(2,9)}`}source;id;cannyOptions;depthNormalsOptions;poseSkeletonOptions;faceLandmarksOptions;segmentationOptions;opticalFlowOptions;deflickerOptions;multiplexer=new sr;cannyPipeline;depthNormalsPipeline;posePipeline;facePipeline;segmentationPipeline;opticalFlowPipeline;deflickerPipeline;prevInputTexture;static from(t){return new e(t)}canny(t={}){return this.cannyOptions=t,this}depthNormals(t={}){return this.depthNormalsOptions=t,this}poseSkeleton(t={}){return this.poseSkeletonOptions=t,this}pose(t,r={}){return this.poseSkeletonOptions={...r,landmarks:t},this}faceLandmarks(t={}){return this.faceLandmarksOptions=t,this}face(t,r={}){return this.faceLandmarksOptions={...r,landmarks:t},this}segmentation(t={}){return this.segmentationOptions=t,this}opticalFlow(t={}){return this.opticalFlowOptions=t,this}deflicker(t={}){return this.deflickerOptions=t,this}getMultiplexer(){return this.multiplexer}async execute(t,r){let n=r;if(!n&&typeof this.source?.createView=="function"&&(n=this.source),!n)throw new Error("[TensorPipeline.execute] No GPUTexture available for tensor compute execution. Pass a valid GPUTexture to execute() or initialize with a GPUTexture source.");if(this.cannyOptions){this.cannyPipeline||(this.cannyPipeline=new ur(t));let i=this.cannyPipeline.execute(n,this.cannyOptions);this.multiplexer.set("canny",i)}if(this.depthNormalsOptions){this.depthNormalsPipeline||(this.depthNormalsPipeline=new lr(t));let i=this.depthNormalsPipeline.execute(n,this.depthNormalsOptions);this.multiplexer.set("normals",i)}if(this.poseSkeletonOptions?.landmarks){this.posePipeline||(this.posePipeline=new io(t));let i=this.posePipeline.execute(this.poseSkeletonOptions.landmarks,{width:this.poseSkeletonOptions.width??n.width,height:this.poseSkeletonOptions.height??n.height,lineWidth:this.poseSkeletonOptions.lineWidth});this.multiplexer.set("poseSkeleton",i)}if(this.faceLandmarksOptions?.landmarks){this.facePipeline||(this.facePipeline=new Wr(t));let i=this.facePipeline.execute(this.faceLandmarksOptions.landmarks,{width:this.faceLandmarksOptions.width??n.width,height:this.faceLandmarksOptions.height??n.height,lineWidth:this.faceLandmarksOptions.lineWidth});this.multiplexer.set("faceLandmarks",i)}if(this.segmentationOptions){this.segmentationPipeline||(this.segmentationPipeline=new Hr(t));let i=this.segmentationPipeline.execute(n,this.segmentationOptions);this.multiplexer.set("segmentationMask",i)}if(this.opticalFlowOptions){this.opticalFlowPipeline||(this.opticalFlowPipeline=new Gn(t));let i=this.prevInputTexture??n,a=this.opticalFlowPipeline.execute(i,n,this.opticalFlowOptions);this.multiplexer.set("motionVectors",a)}if(this.deflickerOptions){this.deflickerPipeline||(this.deflickerPipeline=new zn(t));let i=this.deflickerPipeline.execute(n,this.deflickerOptions);this.multiplexer.set("deflickered",i)}return this.prevInputTexture=n,this.multiplexer.getOutputs()}toConfig(){return{canny:this.cannyOptions,depthNormals:this.depthNormalsOptions,poseSkeleton:this.poseSkeletonOptions,faceLandmarks:this.faceLandmarksOptions,segmentation:this.segmentationOptions,opticalFlow:this.opticalFlowOptions,deflicker:this.deflickerOptions}}toNode(){return{id:this.id,kind:"tensor",source:this.source,config:this.toConfig()}}destroy(){this.cannyPipeline?.destroy(),this.depthNormalsPipeline?.destroy(),this.posePipeline?.destroy(),this.facePipeline?.destroy(),this.segmentationPipeline?.destroy(),this.opticalFlowPipeline?.destroy(),this.deflickerPipeline?.destroy(),this.multiplexer.destroy()}};h();var Bd=e=>!e.source||e.source.type==="keyframe";function Yr(e){let t=[],r=new Map;for(let n of e){if(!Bd(n)){t.push(n);continue}let i=r.get(n.prop);if(!i){let s={...n,keyframes:[...n.keyframes??[]]};r.set(n.prop,s),t.push(s);continue}let a=new Map(i.keyframes.map(s=>[s.frame,s]));for(let s of n.keyframes??[])a.set(s.frame,s);i.keyframes=[...a.values()].sort((s,u)=>s.frame-u.frame)}return t}function Wo(e,t){if(!e)return t;let r=Ni(e);if(!r||r.name==="none")return t;let{name:n,dir:i,params:a}=r,s=Math.max(0,Math.min(1,t)),u=c=>i==="in"?c(s):i==="out"?1-c(1-s):s<.5?c(s*2)/2:1-c((1-s)*2)/2;switch(n){case"power1":return u(c=>c*c);case"power2":return u(c=>c*c*c);case"power3":return u(c=>c*c*c*c);case"sine":return u(c=>1-Math.cos(c*Math.PI/2));case"circ":return u(c=>1-Math.sqrt(Math.max(0,1-c*c)));case"expo":return u(c=>c===0?0:2**(10*(c-1)));case"back":{let c=a?.[0]??1.70158,l=c+1;return u(m=>l*m*m*m-c*m*m)}case"bounce":{let c=l=>{if(l<.36363636363636365)return 7.5625*l*l;if(l<.7272727272727273){let f=l-.5454545454545454;return 7.5625*f*f+.75}if(l<.9090909090909091){let f=l-.8181818181818182;return 7.5625*f*f+.9375}let p=l-2.625/2.75;return 7.5625*p*p+.984375};return i==="out"?c(s):i==="in"?1-c(1-s):s<.5?(1-c(1-2*s))/2:(1+c(2*s-1))/2}default:return s}}function Ni(e){if(e){if(typeof e=="object"&&"name"in e&&"dir"in e)return e;if(typeof e=="string"){let t=e.trim(),r=t.match(/^([a-zA-Z0-9]+)(?:\.([a-zA-Z]+))?(?:\(([^)]+)\))?$/);if(r){let c=r[1].toLowerCase(),l=c==="linear"?"none":c,m=(r[2]||"out").toLowerCase(),d="out";m==="in"?d="in":m==="out"?d="out":m==="inout"&&(d="inOut");let p;return r[3]&&(p=r[3].split(",").map(f=>Number.parseFloat(f.trim())).filter(f=>!Number.isNaN(f))),{name:l,dir:d,...p&&p.length>0?{params:p}:{}}}let n=t.indexOf(".");if(n===-1){let c=t.toLowerCase();return{name:c==="linear"?"none":c,dir:"out"}}let i=t.slice(0,n).toLowerCase(),a=i==="linear"?"none":i,s=t.slice(n+1).toLowerCase(),u="out";return s==="in"?u="in":s==="out"?u="out":s==="inout"&&(u="inOut"),{name:a,dir:u}}}}var ue=class e{tracks=[];constructor(t=[]){this.tracks=[...t]}static create(){return new e}static fromTo(t,r,n,i={}){return new e().fromTo(t,r,n,i)}static keys(t,r){return new e().keys(t,r)}static signal(t,r,n={}){return new e().signal(t,r,n)}static colorSignal(t,r,n){return new e().colorSignal(t,r,n)}static kineticSweep(t=-1,r=1,n=0,i=24,a="power2.out"){return new e().kineticSweep(t,r,n,i,a)}static typewriter(t=0,r=30,n="linear"){return new e().typewriter(t,r,n)}static letterSpacing(t,r,n=0,i=24,a="power2.out"){return new e().letterSpacing(t,r,n,i,a)}static wiggle(t,r={}){return new e().wiggle(t,r)}static spring(t,r={}){return new e().spring(t,r)}static firstMargin(t,r,n={}){return new e().firstMargin(t,r,n)}static strokeWidth(t,r,n={}){return new e().fromTo("strokeWidth",t,r,n)}static rotateX(t,r,n={}){return new e().fromTo("rotateX",t,r,n)}static rotateY(t,r,n={}){return new e().fromTo("rotateY",t,r,n)}static rotateZ(t,r,n={}){return new e().fromTo("rotateZ",t,r,n)}static rotation(t,r,n={}){return new e().fromTo("rotation",t,r,n)}addTrack(t){return this.tracks.push(t),this}fromTo(t,r,n,i={}){let a=i.from??i.start??i.fromFrame??0,s=i.to??i.end??i.toFrame??(i.durationFrames!==void 0?a+i.durationFrames:a+24),u=Ni(i.ease),c=this.tracks.find(m=>m.prop===t&&(!m.source||m.source.type==="keyframe"));c||(c={id:`${t}_fromTo_${this.tracks.length}`,prop:t,keyframes:[]},this.tracks.push(c));let l=c.id;return c.keyframes.length===0&&a>0&&c.keyframes.push({id:`${l}_k0`,frame:0,value:r}),(c.keyframes.length===0||c.keyframes[c.keyframes.length-1].frame<a)&&c.keyframes.push({id:`${l}_k_${a}`,frame:a,value:r}),c.keyframes.push({id:`${l}_k_${s}`,frame:s,value:n,...u&&{ease:u}}),c.keyframes.sort((m,d)=>m.frame-d.frame),this}keyframe(t,r,n,i){let a=this.tracks.find(l=>l.prop===t&&(!l.source||l.source.type==="keyframe"));a||(a={id:`${t}_track_${this.tracks.length}`,prop:t,keyframes:[]},this.tracks.push(a));let s=Ni(i),u={id:`k_${a.keyframes.length}_f${r}`,frame:r,value:n,...s&&{ease:s}},c=a.keyframes.findIndex(l=>l.frame===r);return c>=0?a.keyframes[c]=u:a.keyframes.push(u),a.keyframes.sort((l,m)=>l.frame-m.frame),this}keys(t,r){for(let[n,i,a]of r)this.keyframe(t,Math.round(n),i,a);return this}fadeIn(t=0,r=20,n="power2.out"){return this.fromTo("opacity",0,1,{from:t,to:r,ease:n})}fadeOut(t,r,n="power2.in"){return this.fromTo("opacity",1,0,{from:t,to:r,ease:n})}slideInY(t,r,n=0,i=24,a="power2.out"){return this.fromTo("y",t,r,{from:n,to:i,ease:a})}slideInX(t,r,n=0,i=24,a="power2.out"){return this.fromTo("x",t,r,{from:n,to:i,ease:a})}kineticSweep(t=-1,r=1,n=0,i=24,a="power2.out"){return this.fromTo("offset",t,r,{from:n,to:i,ease:a})}typewriter(t=0,r=30,n="linear"){return this.fromTo("text",0,1,{from:t,to:r,ease:n})}letterSpacing(t,r,n=0,i=24,a="power2.out"){return this.fromTo("letterSpacing",t,r,{from:n,to:i,ease:a})}firstMargin(t,r,n={}){return this.fromTo("firstMargin",t,r,n)}lastMargin(t,r,n={}){return this.fromTo("lastMargin",t,r,n)}baselineShift(t,r,n={}){return this.fromTo("baselineShift",t,r,n)}rotateX(t,r,n={}){return this.fromTo("rotateX",t,r,n)}rotateY(t,r,n={}){return this.fromTo("rotateY",t,r,n)}rotateZ(t,r,n={}){return this.fromTo("rotateZ",t,r,n)}perspective(t,r,n={}){return this.fromTo("perspective",t,r,n)}translateZ(t,r,n={}){return this.fromTo("translateZ",t,r,n)}tilt3D(t){let r=t.start??t.fromFrame,n=t.end??t.toFrame,i=t.ease,a=t.from??{},s=t.to,u=["rotateX","rotateY","rotateZ","translateZ","perspective"];for(let c of u){let l=s[c];if(l!==void 0){let m=a[c]??0;this.fromTo(c,m,l,{from:r,to:n,fromFrame:r,toFrame:n,ease:i})}}return this}signal(t,r,n={}){let{handleId:i,inline:a}=_n(r),s=`${t}_sig_${i}_${this.tracks.length}`,u={type:"signal",inputHandleId:i,multiplier:n.multiplier??1,offset:n.offset??0,smoothingWindowFrames:n.smoothing??0,signalMode:n.mode??"continuous",threshold:n.threshold??.15,accumulateThreshold:n.threshold??.15,debounceFrames:n.debounceFrames??2,channel:n.channel??"primary"};return a&&In(u,a),this.tracks.push({id:s,prop:t,source:u,keyframes:[]}),this}colorSignal(t,r,n){let{handleId:i,inline:a}=_n(r),s=`${t}_colorSig_${i}_${this.tracks.length}`,u={type:"signal",inputHandleId:i,multiplier:1,offset:0,smoothingWindowFrames:n.smoothing??0,colorMode:n.colorMode??"interpolate",colorA:n.colorA,colorB:n.colorB,colorThreshold:n.threshold,channel:"primary"};return a&&In(u,a),this.tracks.push({id:s,prop:t,source:u,keyframes:[]}),this}wiggle(t,r={}){let n=`${t}_wiggle_${this.tracks.length}`,i={type:"wiggle",frequency:r.frequency??2,amplitude:r.amplitude??20,octaves:r.octaves??1,seed:r.seed??1234};return this.tracks.push({id:n,prop:t,source:i,keyframes:[]}),this}spring(t,r={}){let n=`${t}_spring_${this.tracks.length}`,i={type:"springOvershoot",damping:r.damping??12,stiffness:r.stiffness??180,mass:r.mass??1};return this.tracks.push({id:n,prop:t,source:i,keyframes:[]}),this}followPath(t,r={}){let n=r.start??r.fromFrame??0,i=r.end??r.toFrame??60,a=Math.max(1,i-n),s=r.samples??Math.max(8,Math.min(60,Math.round(a/2))),u=t.totalLength??1,c=r.fromProgress??0,l=r.toProgress??1;r.fromDistance!==void 0&&u>0&&(c=r.fromDistance/u),r.toDistance!==void 0&&u>0&&(l=r.toDistance/u);let m=r.autoOrient??!0,d=r.banking??0,p=r.pitchOffset??0,f=r.yawOffset??0,y=r.rollOffset??0,g=!1,b=!1,P=!1,N=[];for(let M=0;M<=s;M++){let k=M/s,A=Wo(r.ease,k),v=c+A*(l-c),R=Math.round(n+k*a),G=[0,0,0],Z=[1,0,0],te=[0,0,0];if(typeof t.getFrameAt=="function"){let S=t.getFrameAt(v);G=S.position,Z=S.tangent,te=S.rotation??[0,0,0]}else{let S=t.getPointAt(v);G=S.position,S.tangent&&(Z=S.tangent);let W=Math.asin(Math.max(-1,Math.min(1,-Z[1])))*(180/Math.PI),H=Math.atan2(Z[0],Z[2])*(180/Math.PI),_=Math.atan2(Z[1],Z[0])*(180/Math.PI);te=[W,H,_]}let ae=te[0]+p,E=te[1]+f,w=(Math.abs(Z[2])<1e-4?Math.atan2(Z[1],Z[0])*(180/Math.PI):te[2])+y;if(d!==0){let S=Math.min(1,v+.02),W=Math.max(0,v-.02),H=t.getPointAt(S),_=t.getPointAt(W),I=H.tangent??[1,0,0],re=_.tangent??[1,0,0],le=Math.atan2(I[0],I[2]),ye=Math.atan2(re[0],re[2]),de=le-ye;w-=de*d*57.2958}Math.abs(G[2])>1e-4&&(g=!0),Math.abs(ae)>1e-4&&(b=!0),Math.abs(E)>1e-4&&(P=!0),N.push({f:R,x:G[0],y:G[1],z:G[2],rx:ae,ry:E,rz:w})}for(let M of N)this.keyframe("x",M.f,M.x),this.keyframe("y",M.f,M.y),g&&this.keyframe("z",M.f,M.z),m&&(this.keyframe("rotateZ",M.f,M.rz),b&&this.keyframe("rotateX",M.f,M.rx),P&&this.keyframe("rotateY",M.f,M.ry));return this}applyTo(t){return t.animation=this.toSpec(),t}merge(...t){return this.tracks=Yr([...this.tracks,...t.flatMap(r=>r.tracks)]),this}static merge(...t){return new e().merge(...t)}toSpec(){return{tracks:this.tracks}}toJSON(){return this.toSpec()}},Ai=class e extends ue{static camera(){return new e}dolly(t,r,n={}){if(typeof t=="object"){let i=t,a=i.start??i.fromFrame??0,s=i.end??i.toFrame??0;return this.fromTo("cameraZ",i.fromDistance,i.toDistance,{from:a,to:s,ease:i.ease})}return this.fromTo("cameraZ",t,r??t,n)}orbit(t){let r=t.start??t.fromFrame??0,n=t.end??t.toFrame??0;return t.azimuth&&this.fromTo("orbitAzimuth",t.azimuth.from??0,t.azimuth.to,{from:r,to:n,ease:t.ease}),t.elevation&&this.fromTo("orbitElevation",t.elevation.from??0,t.elevation.to,{from:r,to:n,ease:t.ease}),t.radius&&this.fromTo("orbitRadius",t.radius.from??1500,t.radius.to,{from:r,to:n,ease:t.ease}),this}truck(t,r,n={}){return this.fromTo("cameraX",t,r,n)}pedestal(t,r,n={}){return this.fromTo("cameraY",t,r,n)}pan(t,r,n={}){return this.fromTo("cameraYaw",t,r,n)}tilt(t,r,n={}){return this.fromTo("cameraPitch",t,r,n)}roll(t,r,n={}){return this.fromTo("cameraRoll",t,r,n)}rackFocus(t){let r=t.start??t.fromFrame??0,n=t.end??t.toFrame??0;return this.fromTo("focusDistance",t.fromDistance,t.toDistance,{from:r,to:n,ease:t.ease??"power2.inOut"}),t.toFStop!==void 0&&this.fromTo("fStop",t.fromFStop??2.8,t.toFStop,{from:r,to:n,ease:t.ease??"power2.inOut"}),this}handheld(t){let r=t.start??t.fromFrame??0,n=t.end??t.toFrame??0;return this.fromTo("shakeTranslation",0,t.translationAmplitude,{from:r,to:n}),this.fromTo("shakeRotation",0,t.rotationAmplitude,{from:r,to:n}),this}followPath3D(t,r={}){let n=r.start??r.fromFrame??0,i=r.end??r.toFrame??60,a=Math.max(1,i-n),s=r.samples??Math.max(8,Math.min(60,Math.round(a/2))),u=r.mode??(r.target?"lookAtTarget":"leadTarget"),c=r.fromProgress??0,l=r.toProgress??1,m=r.lookAhead??.05;for(let d=0;d<=s;d++){let p=d/s,f=Wo(r.ease,p),y=c+f*(l-c),g=Math.round(n+p*a),b=[0,0,0],P=[0,0,0];if(typeof t.getFrameAt=="function"){let N=t.getFrameAt(y);b=N.position,P=N.rotation??[0,0,0]}else b=t.getPointAt(y).position;if(this.keyframe("cameraX",g,b[0]),this.keyframe("cameraY",g,b[1]),this.keyframe("cameraZ",g,b[2]),u==="lookAtTarget"){let N=r.target??[b[0],b[1],0];this.keyframe("targetX",g,N[0]),this.keyframe("targetY",g,N[1]),this.keyframe("targetZ",g,N[2])}else if(u==="leadTarget"){let N=Math.min(1,y+m),M=t.getPointAt(N);this.keyframe("targetX",g,M.position[0]),this.keyframe("targetY",g,M.position[1]),this.keyframe("targetZ",g,M.position[2])}else u==="orientAlongPath"&&(this.keyframe("cameraPitch",g,P[0]),this.keyframe("cameraYaw",g,P[1]),this.keyframe("cameraRoll",g,P[2]))}return this}};h();var Ed=["background","fill","fillColor","strokeColor","borderColor","gradientEndColor","emissive","color"],Ho=3;function Xo(e){return e.animation?.tracks??[]}var Yo=(e,t)=>Xo(e).some(r=>t.includes(r.prop)),Ud=new Set(["box","flex","block","group"]);function qo(e){if(e.kind==="text"||e.kind==="light"||e.kind==="camera")return!1;if(!Ud.has(String(e.kind)))return!0;let t=e.background;return typeof t=="string"&&t!==""&&t!=="transparent"?!0:(e.children??[]).some(qo)}var _d=e=>[...e].sort((t,r)=>(Number(t.zIndex)||0)-(Number(r.zIndex)||0));function Xr(e){if(typeof e!="string"||e.includes("gradient("))return null;let t=Ln(e);return t&&t[3]>.99?e:null}function Oi(e){let t=[],r=(f,y,g,b)=>t.push({severity:f,code:y,message:g,...b&&{layerId:b}}),n=e.width,i=e.height,a=!1,s=[],u=!1,c=[],l=[],m=(f,y,g)=>{let b=String(f.id??"?");for(let A of Ed){let v=f[A];typeof v!="string"||v===""||v==="transparent"||(v.includes("gradient(")?Za(v)||r("error","invalid_gradient",`\`${A}\` on '${b}' is not a gradient this renderer reads: ${v}. It draws nothing.`,b):Ln(v)||r("warning","unknown_color",`\`${A}: "${v}"\` on '${b}' is not a color (hex, rgb(), hsl(), oklch() or a CSS name). It draws transparent.`,b))}if(f.kind==="light"){let A=f.lightType??"directional";A==="environment"&&(a=!0),A==="ambient"&&s.push(b),f.castShadow&&(A==="directional"||A==="spot"?l.push(b):r("warning","shadow_unsupported_light",`'${b}' is a ${String(A)} light: only directional and spot lights cast shadows.`,b));return}if(f.kind==="camera")return;if(f.kind==="media"){let A=f.inputHandleId;typeof A=="string"&&(f.dataType??"Video")==="Image"&&(/\.(json|lottie)(\?.*)?$/i.test(A)?r("error","unsupported_image_format",`'${b}' is an image layer with source '${A}', which is a Lottie vector animation. Use Layer.lottie() instead.`,b):/\.(mp4|mov|webm|mkv)(\?.*)?$/i.test(A)?r("error","unsupported_image_format",`'${b}' is an image layer with video source '${A}'. Use Layer.video() instead.`,b):/\.(mp3|wav|ogg|m4a|aac)(\?.*)?$/i.test(A)&&r("error","unsupported_image_format",`'${b}' is an image layer with audio source '${A}'. Use Layer.audio() instead.`,b))}let P=!!f.is3D||typeof f.z=="number"&&f.z!==0;if((P||f.kind==="model3d")&&(u=!0),(f.roughness!==void 0||f.metallic!==void 0)&&c.push(b),f.kind==="text"&&y&&!Yo(f,["fill","color"])){let A=Xr(f.fill??f.color),v=Xr(f.background)??y;if(A){let R=Fn.contrast(A,v);R<Ho&&r("warning","low_contrast_text",`Text '${b}' (${A}) on ${v} has contrast ${R.toFixed(2)}:1 (aim for \u2265 ${Ho}; ${Fn.readableOn(v)} reads well).`,b)}}if(g&&!P&&f.position==="absolute"&&typeof f.x=="number"&&typeof f.y=="number"&&typeof f.width=="number"&&typeof f.height=="number"&&!Yo(f,["x","y","translateX","translateY","scale","rotation"])){let{x:A,y:v,width:R,height:G}=f;(A+R<=0||v+G<=0||A>=n||v>=i)&&r("warning","offscreen_layer",`'${b}' sits entirely outside the ${n}\xD7${i} canvas (x ${A}, y ${v}) and never moves in.`,b)}for(let A of Xo(f)){let v=A.keyframes??[];(!A.source||A.source.type==="keyframe")&&v.length>=2&&v.every(R=>JSON.stringify(R.value)===JSON.stringify(v[0].value))&&r("info","static_track",`'${b}' animates \`${A.prop}\` but every keyframe holds ${JSON.stringify(v[0].value)}.`,b)}let N=Xr(f.background)??y,M=f.children,k=f.x===0&&f.y===0&&f.width===n&&f.height===i;d(M??[],N,g&&k)},d=(f,y,g)=>{let b=y;for(let P of _d(f))m(P,b,g),qo(P)&&(b=null)},p=Xr(e.backgroundColor)??null;return d(e.layout,p,!0),a&&s.length>0&&r("info","ambient_with_environment",`The environment already fills shadows with light; ambient light ${s.join(", ")} adds flat light on top (remove it, or lower it, if the scene looks washed out).`),l.length>1&&r("info","multiple_shadow_lights",`${l.length} lights cast shadows (${l.join(", ")}); only the first one does.`),u&&c.length>0&&!a&&r("info","pbr_without_environment",`roughness / metallic are set (${c.slice(0,3).join(", ")}${c.length>3?", \u2026":""}) but the scene has no Layer.environment(): add one for physically based shading, reflections and tone mapping.`),t}h();var Zo=o.union([o.number().min(0),o.enum(["auto","fit","fill"]),o.custom()]),Id=o.enum(["rect","circle","ellipse","polygon","star","arrow","path"]),Gd=o.enum(["x","y","scale","rotation","opacity","width","height","volume","hidden","muted","gap","padding","borderRadius","fontSize","text","fill","color","letterSpacing","trimStart","trimEnd","trimOffset","strokeWidth","strokeDashOffset","cornerRadius","starInnerRadiusRatio","fillColor","strokeColor","borderColor","borderWidth","motionBlurShutter","rangeStart","rangeEnd","offset","animatorRangeStart","animatorRangeEnd","animatorOffset","firstMargin","lastMargin","baselineShift","rotateX","rotateY","rotateZ","perspective","translateZ","perspectiveOriginX","perspectiveOriginY","cameraX","cameraY","cameraZ","targetX","targetY","targetZ","cameraPitch","cameraYaw","cameraRoll","cameraFov","cameraZoom","focalLength","focusDistance","fStop","maxBlurRadius","shakeTranslation","shakeRotation","orbitRadius","orbitAzimuth","orbitElevation","z","scaleZ","intensity","angle","radius","penumbra","decay","shininess","roughness","specularIntensity","ambientIntensity","metallic","ior","dispersion","transmission","fresnelPower","envIntensity","animationProgress","animationTime","animationSpeed","wireframe","scaleX","scaleY","emissive","emissiveIntensity","exposure"]),Di=o.enum(["alpha","alpha-inverted","luma","luma-inverted"]),Ko=o.enum(["lit","unlit","toon","glass","acrylic","frosted","metallic"]);var zd=o.enum(["interpolate","hueRotate","threshold"]),$d=o.object({name:o.enum(["none","power1","power2","power3","sine","circ","expo","back","elastic","bounce","spring","cubic","hold"]),dir:o.enum(["in","out","inOut"]),params:o.array(o.number()).optional()}).strict().superRefine((e,t)=>{if(e.name==="spring"&&e.params){let[r,n,i]=e.params;r!==void 0&&r<=0&&t.addIssue({code:o.ZodIssueCode.custom,message:"Spring damping must be greater than 0.",path:["params",0]}),n!==void 0&&n<=0&&t.addIssue({code:o.ZodIssueCode.custom,message:"Spring stiffness must be greater than 0.",path:["params",1]}),i!==void 0&&i<=0&&t.addIssue({code:o.ZodIssueCode.custom,message:"Spring mass must be greater than 0.",path:["params",2]})}}),jd=o.object({id:o.string().min(1),frame:o.number().int().min(0),value:o.union([o.number(),o.boolean(),o.string()]),ease:$d.optional(),presetGroupId:o.string().optional(),presetType:o.string().optional(),spatialTangentIn:o.object({x:o.number(),y:o.number()}).optional(),spatialTangentOut:o.object({x:o.number(),y:o.number()}).optional()}).strict(),Vd=o.enum(["continuous","accumulate"]),Wd=o.discriminatedUnion("type",[o.object({type:o.literal("keyframe")}),o.object({type:o.literal("signal"),inputHandleId:o.string(),multiplier:o.number().default(1),offset:o.number().default(0),smoothingWindowFrames:o.number().min(0).default(0),colorMode:zd.optional(),colorA:o.string().optional(),colorB:o.string().optional(),colorThreshold:o.number().optional(),signalMode:Vd.optional(),threshold:o.number().optional(),accumulateThreshold:o.number().optional(),debounceFrames:o.number().int().min(0).optional(),channel:o.string().optional()}),o.object({type:o.literal("wiggle"),frequency:o.number().default(2),amplitude:o.number().default(50),octaves:o.number().int().min(1).max(4).default(1),seed:o.number().default(1234)}),o.object({type:o.literal("springOvershoot"),damping:o.number().default(12),stiffness:o.number().default(180),mass:o.number().default(1)})]),Hd=o.preprocess(e=>{if(!e||typeof e!="object")return e;let t=e;if(t.type==="signal"){let r=typeof t.threshold=="number"?t.threshold:typeof t.accumulateThreshold=="number"?t.accumulateThreshold:.15;return{type:"signal",inputHandleId:t.inputHandleId??t.handleId,multiplier:t.multiplier??t.amplitude??1,offset:t.offset??0,smoothingWindowFrames:t.smoothingWindowFrames??t.smoothing??0,colorMode:t.colorMode,colorA:t.colorA,colorB:t.colorB,colorThreshold:t.colorThreshold,signalMode:t.signalMode??"continuous",threshold:r,accumulateThreshold:r,debounceFrames:t.debounceFrames??2,channel:typeof t.channel=="string"?t.channel:"primary"}}return e},Wd),Yd=(e,t)=>{if(!e?.tracks)return;let r=0;for(let n=0;n<e.tracks.length;n++){let i=e.tracks[n],a=i.keyframes??[];r+=a.length,(!i.source||i.source.type==="keyframe")&&a.length<1&&t.addIssue({code:o.ZodIssueCode.custom,message:`Track for property '${i.prop}' must have at least 1 keyframe.`,path:["tracks",n,"keyframes"]});let u=i.prop==="hidden"||i.prop==="muted",c=i.prop==="fillColor"||i.prop==="strokeColor"||i.prop==="fill"||i.prop==="color";for(let l=0;l<a.length;l++){let m=a[l];if(l>0){let p=a[l-1];m.frame<p.frame?t.addIssue({code:o.ZodIssueCode.custom,message:"Keyframes must be sorted in ascending order of frame.",path:["tracks",n,"keyframes",l]}):m.frame===p.frame&&t.addIssue({code:o.ZodIssueCode.custom,message:"Duplicate keyframes at the same frame are not allowed.",path:["tracks",n,"keyframes",l]})}let d=typeof m.value;u?d!=="boolean"&&t.addIssue({code:o.ZodIssueCode.custom,message:`Keyframe value for discrete property '${i.prop}' must be a boolean.`,path:["tracks",n,"keyframes",l,"value"]}):c?d!=="string"&&t.addIssue({code:o.ZodIssueCode.custom,message:`Keyframe value for color property '${i.prop}' must be a string.`,path:["tracks",n,"keyframes",l,"value"]}):d!=="number"||Number.isNaN(m.value)||!Number.isFinite(m.value)?t.addIssue({code:o.ZodIssueCode.custom,message:`Keyframe value for numeric property '${i.prop}' must be a finite number.`,path:["tracks",n,"keyframes",l,"value"]}):(i.prop==="volume"||i.prop==="trimStart"||i.prop==="trimEnd")&&(m.value<0||m.value>1)&&t.addIssue({code:o.ZodIssueCode.custom,message:`Keyframe value for property '${i.prop}' must be between 0 and 1.`,path:["tracks",n,"keyframes",l,"value"]})}}r>128&&t.addIssue({code:o.ZodIssueCode.custom,message:`Total keyframes across all tracks (${r}) exceeds the limit of 128.`,path:["tracks"]})},Xd=o.object({id:o.string().min(1),prop:Gd,source:Hd.optional(),keyframes:o.array(jd).default([]),repeat:o.number().int().optional(),yoyo:o.boolean().optional(),durationFrames:o.number().int().min(1).optional()}).strict(),Li=o.object({tracks:o.array(Xd).max(24)}).strict().superRefine(Yd),mt={id:o.string().min(1),inputHandleId:o.string().optional(),position:o.enum(["relative","absolute"]).default("relative"),x:o.union([o.number(),o.custom()]).default(0),y:o.union([o.number(),o.custom()]).default(0),width:Zo.optional(),height:Zo.optional(),grow:o.number().min(0).optional(),flexShrink:o.number().min(0).optional(),flexBasis:o.number().min(0).optional(),alignSelf:o.enum(["auto","start","center","end","stretch","baseline"]).optional(),aspectRatio:o.number().positive().optional(),zIndex:o.number().int().default(0),hidden:o.boolean().default(!1),opacity:o.number().min(0).max(1).default(1),blendMode:o.string().optional(),effects:o.array(o.unknown()).optional(),rotation:o.number().default(0),scale:o.number().min(0).default(1),anchorX:o.number().min(0).max(1).default(.5),anchorY:o.number().min(0).max(1).default(.5),startFrame:o.number().int().min(0).default(0),durationFrames:o.number().int().min(1).optional(),motionBlurShutter:o.number().min(0).max(360).optional(),rotateX:o.number().default(0),rotateY:o.number().default(0),rotateZ:o.number().default(0),perspective:o.number().min(0).default(0),perspectiveOriginX:o.number().default(.5),perspectiveOriginY:o.number().default(.5),translateZ:o.number().default(0),backfaceVisibility:o.enum(["visible","hidden"]).default("visible"),transformStyle:o.enum(["flat","preserve-3d"]).default("flat"),is3D:o.boolean().default(!1),z:o.union([o.number(),o.custom()]).default(0),scaleZ:o.number().default(1),twoSided:o.boolean().default(!0),material:Ko.default("lit"),ior:o.number().min(1).max(3).optional(),roughness:o.number().min(0).max(1).optional(),shininess:o.number().min(1).max(512).default(32),specularIntensity:o.number().min(0).default(.5),metallic:o.number().min(0).max(1).optional(),ambientIntensity:o.number().min(0).default(1),transmission:o.number().min(0).max(1).optional(),dispersion:o.number().min(0).max(1).optional(),fresnelPower:o.number().min(1).max(10).optional(),envIntensity:o.number().min(0).max(10).optional(),emissive:se.optional(),emissiveIntensity:o.number().min(0).optional(),castShadow:o.boolean().optional(),matte:o.object({node:o.custom(e=>typeof e=="object"&&e!==null),mode:Di.optional()}).optional(),matteId:o.string().optional(),matteOf:o.string().optional(),matteMode:Di.optional(),animation:Li.default({tracks:[]}),vision:o.unknown().optional(),relighting:o.unknown().optional()},Jo=o.object({color:se,offset:o.object({x:o.number(),y:o.number()}).optional(),blurRadius:o.number().min(0).optional()}).strict(),qd=o.object({x:o.number().optional(),y:o.number().optional(),scale:o.number().optional(),scaleX:o.number().optional(),scaleY:o.number().optional(),rotation:o.number().optional(),rotationX:o.number().optional(),rotationY:o.number().optional(),opacity:o.number().optional(),blur:o.number().optional(),color:o.string().optional()}).strict(),Qo=o.object({id:o.string(),unit:o.enum(["character","word","line"]).default("character"),rangeStart:o.number().min(0).max(1).default(0),rangeEnd:o.number().min(0).max(1).default(1),offset:o.number().min(-1).max(1).default(0),easing:o.string().default("power2.out"),transform:qd.optional()}),Zd={waveRise(e={}){return{id:e.id??"wave-rise",unit:e.unit??"character",rangeStart:e.rangeStart??0,rangeEnd:e.rangeEnd??1,offset:e.offset??-1,easing:e.easing??"power2.out",transform:{y:e.y??40,rotationX:e.rotationX??45,opacity:e.opacity??0,blur:e.blur??0}}},wordPop(e={}){return{id:e.id??"word-pop",unit:"word",rangeStart:0,rangeEnd:1,offset:-1,easing:e.easing??"back.out(1.6)",transform:{scale:e.scale??0,y:e.y??20,opacity:0}}},blurIn(e={}){return{id:e.id??"blur-in",unit:e.unit??"character",rangeStart:0,rangeEnd:1,offset:-1,easing:e.easing??"power3.out",transform:{blur:e.blur??16,y:e.y??20,opacity:e.opacity??0}}},flip3D(e={}){return{id:e.id??"flip-3d",unit:e.unit??"character",rangeStart:0,rangeEnd:1,offset:-1,easing:e.easing??"back.out(1.4)",transform:{rotationX:e.rotationX??90,opacity:0}}},colorSweep(e){return{id:e.id??"color-sweep",unit:e.unit??"character",rangeStart:0,rangeEnd:.5,offset:-.5,easing:e.easing??"power2.inOut",transform:{color:e.color}}}},Kd=o.object({focalLength:o.number().min(5).max(500).default(50),fov:o.number().min(5).max(160).optional(),sensorWidth:o.number().default(36),near:o.number().min(.1).default(1),far:o.number().min(10).default(5e4),zoom:o.number().min(.01).default(1)}).strict(),Jd=o.object({enabled:o.boolean().default(!1),focusDistance:o.number().min(1).default(1e3),fStop:o.number().min(.5).max(64).default(2.8),maxBlurRadius:o.number().min(0).max(128).default(32),apertureBlades:o.number().int().min(0).max(12).default(0),anamorphicRatio:o.number().min(.5).max(3).default(1)}).strict(),Qd=o.object({translationAmplitude:o.number().min(0).default(0),rotationAmplitude:o.number().min(0).default(0),frequency:o.number().min(.1).max(60).default(2.5),octaves:o.number().int().min(1).max(6).default(3),seed:o.number().default(42)}).strict(),es=o.object({id:o.string().min(1),kind:o.literal("camera"),mode:o.enum(["lookAt","free","orbit"]).default("lookAt"),x:o.number().optional(),y:o.number().optional(),z:o.number().optional(),targetX:o.number().optional(),targetY:o.number().optional(),targetZ:o.number().optional(),pitch:o.number().default(0),yaw:o.number().default(0),roll:o.number().default(0),lens:Kd.optional(),dof:Jd.optional(),shake:Qd.optional(),startFrame:o.number().int().min(0).default(0),durationFrames:o.number().int().min(1).optional(),animation:Li.default({tracks:[]})}).strict(),ts=o.enum(["ambient","directional","point","spot","environment"]),rs=o.enum(["studio","soft","sunset","night","neutral"]),ns=o.enum(["neutral","agx","aces","none"]),is=o.object({color:se,start:o.number().min(0),end:o.number().min(0),opacity:o.number().min(0).max(1).optional()}).strict(),as=o.object({intensity:o.number().min(0).max(10).optional(),threshold:o.number().min(0).max(16).optional(),knee:o.number().min(0).max(1).optional(),radius:o.number().min(1).max(8).optional()}).strict(),os=o.object({id:o.string().min(1),kind:o.literal("light"),lightType:ts.default("directional"),color:se.default("#ffffff"),intensity:o.number().default(1),x:o.number().optional(),y:o.number().optional(),z:o.number().optional(),targetX:o.number().optional(),targetY:o.number().optional(),targetZ:o.number().optional(),direction:o.tuple([o.number(),o.number(),o.number()]).optional(),radius:o.number().min(0).default(1e3),decay:o.number().min(0).default(2),angle:o.number().min(0).max(180).default(45),penumbra:o.number().min(0).max(1).default(.2),castShadow:o.boolean().optional(),shadowSoftness:o.number().min(0).max(64).optional(),shadowDarkness:o.number().min(0).max(1).optional(),shadowMapSize:o.number().int().min(256).max(8192).optional(),preset:rs.optional(),top:se.optional(),horizon:se.optional(),bottom:se.optional(),softboxes:o.number().min(0).optional(),rotation:o.number().optional(),exposure:o.number().min(-16).max(16).optional(),toneMapping:ns.optional(),fog:is.optional(),bloom:o.union([o.boolean(),as]).optional(),startFrame:o.number().int().min(0).default(0),durationFrames:o.number().int().min(1).optional(),animation:Li.default({tracks:[]})}).strict(),Fi=()=>o.array(o.lazy(()=>Ri)),ss=o.object({...mt,kind:o.literal("flex"),dir:o.enum(["row","column"]).default("row"),gap:o.number().min(0).default(0),padding:o.number().min(0).default(0),justify:o.enum(["start","center","end","space-between","space-around"]).default("start"),align:o.enum(["start","center","end","stretch"]).default("start"),wrap:o.boolean().default(!1),staggerFrames:o.number().min(0).default(0),staggerDirection:o.enum(["forward","reverse","center-out"]).default("forward"),overflow:o.enum(["visible","hidden"]).default("hidden"),background:se.optional(),borderRadius:o.number().min(0).optional(),borderColor:se.optional(),borderWidth:o.number().min(0).optional(),strokeAlign:o.enum(["inside","center","outside"]).optional(),strokeRadius:o.number().min(0).optional(),children:Fi().optional()}).strict(),em=o.object({...mt,kind:o.literal("block"),gap:o.number().min(0).default(0),padding:o.number().min(0).default(0),align:o.enum(["start","center","end","stretch"]).default("start"),staggerFrames:o.number().min(0).default(0),staggerDirection:o.enum(["forward","reverse","center-out"]).default("forward"),overflow:o.enum(["visible","hidden"]).default("hidden"),background:se.optional(),borderRadius:o.number().min(0).optional(),borderColor:se.optional(),borderWidth:o.number().min(0).optional(),strokeAlign:o.enum(["inside","center","outside"]).optional(),strokeRadius:o.number().min(0).optional(),children:Fi().optional()}).strict(),us=o.object({...mt,kind:o.literal("box"),background:se,borderRadius:o.number().min(0).optional(),padding:o.number().min(0).default(0),staggerFrames:o.number().min(0).default(0),staggerDirection:o.enum(["forward","reverse","center-out"]).default("forward"),overflow:o.enum(["visible","hidden"]).default("hidden"),borderColor:se.optional(),borderWidth:o.number().min(0).optional(),strokeAlign:o.enum(["inside","center","outside"]).optional(),strokeRadius:o.number().min(0).optional(),children:Fi().optional()}).strict(),ls=o.object({background:se,borderRadius:o.number().min(0).optional(),paddingX:o.number().min(0).optional(),paddingY:o.number().min(0).optional()}).strict(),cs=o.object({text:o.union([o.string(),o.custom(e=>!!(e&&typeof e=="object"&&"get"in e))]),fontFamily:o.string().optional(),fontSize:o.union([o.number().positive(),o.custom(e=>!!(e&&typeof e=="object"&&"get"in e))]).optional(),fontWeight:o.union([o.number().int(),o.string()]).optional(),fontStyle:o.enum(["normal","italic"]).optional(),fill:o.union([se,o.custom(e=>!!(e&&typeof e=="object"&&"get"in e))]).optional(),letterSpacing:o.number().optional(),baselineShift:o.number().optional(),opacity:o.union([o.number().min(0).max(1),o.custom(e=>!!(e&&typeof e=="object"&&"get"in e))]).optional(),mark:ls.optional()}).strict(),tm={text:o.string().default(""),spans:o.array(cs).optional(),fontFamily:o.string().optional(),fontSize:o.number().positive().optional(),fontWeight:o.union([o.number().int(),o.string()]).optional(),fontStyle:o.string().optional(),fill:se,align:o.enum(["start","center","end"]).optional(),direction:o.enum(["ltr","rtl","auto"]).optional(),verticalAlign:o.enum(["top","middle","bottom"]).optional(),lineHeight:o.number().positive().optional(),letterSpacing:o.number().optional(),background:se,borderRadius:o.number().min(0).optional(),padding:o.number().min(0).optional(),stroke:se,strokeWidth:o.number().min(0).optional(),strokeAlign:o.enum(["inside","center","outside"]).optional(),textShadow:o.string().optional(),shadows:o.array(Jo).optional(),pathOptions:Ft.optional(),typewriter:zr.optional(),marquee:vi.optional(),animators:o.array(o.union([Qo,Rt,wi])).optional()},ds=o.object({...mt,...tm,kind:o.literal("text")}).strict(),ms=o.object({...mt,kind:o.literal("media"),inputHandleId:o.string().min(1),dataType:o.string().optional(),fit:o.enum(["cover","contain","fill","none"]).default("contain"),dpr:o.number().min(1).max(4).optional(),borderRadius:o.number().min(0).optional(),borderColor:se.optional(),borderWidth:o.number().min(0).optional(),strokeAlign:o.enum(["inside","center","outside"]).optional(),strokeRadius:o.number().min(0).optional(),volume:o.number().min(0).max(1).default(1),muted:o.boolean().default(!1),trimStartSec:o.number().min(0).optional(),fontFamily:o.string().optional(),fontSize:o.number().positive().optional(),fontWeight:o.union([o.number().int(),o.string()]).optional(),fontStyle:o.string().optional(),fill:se,align:o.enum(["start","center","end"]).optional(),direction:o.enum(["ltr","rtl","auto"]).optional(),verticalAlign:o.enum(["top","middle","bottom"]).optional(),lineHeight:o.number().positive().optional(),letterSpacing:o.number().optional(),background:se,padding:o.number().min(0).optional(),stroke:se,strokeWidth:o.number().min(0).optional(),textShadow:o.string().optional(),shadows:o.array(Jo).optional(),maxWidth:o.number().optional()}).strict(),rm={shapeType:Id.default("rect"),borderRadius:o.number().min(0).optional(),radiusTL:o.number().min(0).optional(),radiusTR:o.number().min(0).optional(),radiusBR:o.number().min(0).optional(),radiusBL:o.number().min(0).optional(),polygonSides:o.number().int().min(3).max(64).optional(),starPoints:o.number().int().min(3).max(64).optional(),starInnerRadiusRatio:o.number().min(.01).max(.99).optional(),arrowHeadWidth:o.number().min(0).optional(),arrowHeadLength:o.number().min(0).optional(),arrowShaftWidth:o.number().min(1).optional(),d:o.string().optional(),fillType:o.enum(["solid","linear","radial","none"]).default("solid"),fillColor:se.default("#3b82f6"),gradientEndColor:se.optional(),gradientAngle:o.number().default(0),strokeColor:se.default("#ffffff"),strokeWidth:o.number().min(0).default(0),strokeDashArray:o.string().optional(),strokeDashOffset:o.number().default(0),strokeLineCap:o.enum(["butt","round","square"]).default("round"),strokeLineJoin:o.enum(["miter","round","bevel"]).default("round"),strokeAlign:o.enum(["inside","center","outside"]).optional(),trimStart:o.number().min(0).max(1).default(0),trimEnd:o.number().min(0).max(1).default(1),trimOffset:o.number().default(0)},ps=o.object({...mt,...rm,kind:o.literal("shape")}).strict(),nm=o.object({offset:o.number().min(0).max(1),color:o.string()}),fs=o.object({...mt,kind:o.literal("model3d"),src:o.string().default(""),modelFormat:o.enum(["obj","fbx","gltf","glb","stl","ply","vox","3ds","off","auto"]).default("auto"),modelData:o.unknown().optional(),animationName:o.string().optional(),animationProgress:o.number().min(0).max(1).default(0),animationTime:o.number().min(0).default(0),animationSpeed:o.number().default(1),loop:o.boolean().default(!0),wireframe:o.boolean().default(!1),texture:o.string().optional(),center:o.boolean().optional(),normalizeSize:o.number().optional(),scaleX:o.number().default(1),scaleY:o.number().default(1),audioDeform:o.record(o.string(),o.unknown()).optional(),color:se.optional(),colorTint:se.optional(),text3dOptions:o.unknown().optional(),primitive3d:o.unknown().optional()}).strict(),Ri=o.lazy(()=>o.union([ss,em,us,ds,ms,ps,es,os,fs])),im=o.object({width:o.number().int().min(1).max(4096),height:o.number().int().min(1).max(4096),backgroundColor:se,volume:o.number().min(0).max(1).default(1),fps:o.number().int().min(1).max(120).default(24),mode:o.enum(["Video","Image"]).default("Video"),antialias3d:o.boolean().optional(),layout:o.array(Ri).default([]),fonts:o.array(o.string()).optional(),signals:o.record(o.string(),o.unknown()).optional(),effects:o.array(o.unknown()).optional(),vision:o.unknown().optional(),onRequestFrame:o.custom().optional()}).strict();h();var hs=o.enum(["cut","carrierMatchCut","cameraWhip","focusPullDissolve","irisAperture","pushDirectional"]),gs=o.object({sourceLayerId:o.string(),targetLayerId:o.string(),mode:o.enum(["exact","preserveVelocity","morph"]).default("preserveVelocity"),blendFrames:o.number().int().min(0).max(30).default(0)}).strict(),am=o.object({id:o.string(),chapter:o.enum(["hook","tension","solution","feature_spotlight","outro","custom"]).default("custom"),durationMs:o.number().positive().optional(),durationFrames:o.number().int().positive().optional(),transitionOut:o.object({type:hs.default("cut"),durationFrames:o.number().int().min(0).default(0),carrier:gs.optional(),whipDirection:o.enum(["left","right","up","down"]).default("left")}).default({type:"cut",durationFrames:0,whipDirection:"left"})}).passthrough();function om(e,t){return{x:e.x,y:e.y,scale:e.scale,vx:e.vx,vy:e.vy,...t}}function bs(e,t=60){let r=0,n=[];for(let s of e){let u=r,c=s.durationFrames??(s.durationMs?Math.round(s.durationMs/1e3*t):60);n.push({sceneId:s.id,startFrame:u,durationFrames:c});let l=s.transitionOverlap??s.transitionOut?.durationFrames??0;r+=Math.max(1,c-l)}let i=r,a=Math.round(i/t*1e3);return{totalFrames:i,totalDurationMs:a,sceneOffsets:n}}var dr=class e{id;chapter;durationMs;durationFrames;transitionOut;layout;constructor(t){this.id=t.id,this.chapter=t.chapter??"custom",this.durationMs=t.durationMs,this.durationFrames=t.durationFrames,this.transitionOut={type:t.transitionOut?.type??"cut",durationFrames:t.transitionOut?.durationFrames??0,carrier:t.transitionOut?.carrier,whipDirection:t.transitionOut?.whipDirection??"left"},this.layout=t.layout??[]}static create(t){return new e(t)}},Bi=class e{fps;width;height;backgroundColor;fonts;signals;scenes=[];constructor(t={}){if(this.fps=t.fps??60,this.width=t.width??1920,this.height=t.height??1080,this.backgroundColor=t.backgroundColor??"#ffffff",this.fonts=t.fonts,this.signals=t.signals,t.scenes)for(let r of t.scenes)this.addScene(r)}static create(t={}){return new e(t)}addScene(t){let r=t instanceof dr?t:new dr(t);return this.scenes.push(r),this}getScenes(){return this.scenes}calculateTimeline(){return bs(this.scenes,this.fps)}toProgram(){let t=this.calculateTimeline(),r=[];for(let n=0;n<this.scenes.length;n++){let i=this.scenes[n],a=t.sceneOffsets[n];if(a)for(let s of i.layout){let u={...s};u.startFrame=(u.startFrame??0)+a.startFrame,u.durationFrames===void 0&&(u.durationFrames=a.durationFrames),r.push(u)}}return{width:this.width,height:this.height,backgroundColor:this.backgroundColor,fps:this.fps,volume:1,mode:"Video",layout:r,fonts:this.fonts,signals:this.signals}}};h();h();h();h();h();h();function ys(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function pt(e,t){if(!isFinite(e)||e===0)return null;var r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"),n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}function Ge(e){return e=pt(Math.abs(e)),e?e[1]:NaN}h();function xs(e,t){return function(r,n){for(var i=r.length,a=[],s=0,u=e[0],c=0;i>0&&u>0&&(c+u+1>n&&(u=Math.max(1,n-c)),a.push(r.substring(i-=u,i+u)),!((c+=u+1)>n));)u=e[s=(s+1)%e.length];return a.reverse().join(t)}}h();function vs(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}h();var sm=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function et(e){if(!(t=sm.exec(e)))throw new Error("invalid format: "+e);var t;return new qr({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}et.prototype=qr.prototype;function qr(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}qr.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};h();function ws(e){e:for(var t=e.length,r=1,n=-1,i;r<t;++r)switch(e[r]){case".":n=i=r;break;case"0":n===0&&(n=r),i=r;break;default:if(!+e[r])break e;n>0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(i+1):e}h();h();var mr;function Ss(e,t){var r=pt(e,t);if(!r)return mr=void 0,e.toPrecision(t);var n=r[0],i=r[1],a=i-(mr=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=n.length;return a===s?n:a>s?n+new Array(a-s+1).join("0"):a>0?n.slice(0,a)+"."+n.slice(a):"0."+new Array(1-a).join("0")+pt(e,Math.max(0,t+a-1))[0]}h();function Ei(e,t){var r=pt(e,t);if(!r)return e+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}var Ui={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:ys,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>Ei(e*100,t),r:Ei,s:Ss,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};h();function _i(e){return e}var ks=Array.prototype.map,Ts=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Ps(e){var t=e.grouping===void 0||e.thousands===void 0?_i:xs(ks.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",i=e.decimal===void 0?".":e.decimal+"",a=e.numerals===void 0?_i:vs(ks.call(e.numerals,String)),s=e.percent===void 0?"%":e.percent+"",u=e.minus===void 0?"\u2212":e.minus+"",c=e.nan===void 0?"NaN":e.nan+"";function l(d,p){d=et(d);var f=d.fill,y=d.align,g=d.sign,b=d.symbol,P=d.zero,N=d.width,M=d.comma,k=d.precision,A=d.trim,v=d.type;v==="n"?(M=!0,v="g"):Ui[v]||(k===void 0&&(k=12),A=!0,v="g"),(P||f==="0"&&y==="=")&&(P=!0,f="0",y="=");var R=(p&&p.prefix!==void 0?p.prefix:"")+(b==="$"?r:b==="#"&&/[boxX]/.test(v)?"0"+v.toLowerCase():""),G=(b==="$"?n:/[%p]/.test(v)?s:"")+(p&&p.suffix!==void 0?p.suffix:""),Z=Ui[v],te=/[defgprs%]/.test(v);k=k===void 0?6:/[gprs]/.test(v)?Math.max(1,Math.min(21,k)):Math.max(0,Math.min(20,k));function ae(E){var w=R,S=G,W,H,_;if(v==="c")S=Z(E)+S,E="";else{E=+E;var I=E<0||1/E<0;if(E=isNaN(E)?c:Z(Math.abs(E),k),A&&(E=ws(E)),I&&+E==0&&g!=="+"&&(I=!1),w=(I?g==="("?g:u:g==="-"||g==="("?"":g)+w,S=(v==="s"&&!isNaN(E)&&mr!==void 0?Ts[8+mr/3]:"")+S+(I&&g==="("?")":""),te){for(W=-1,H=E.length;++W<H;)if(_=E.charCodeAt(W),48>_||_>57){S=(_===46?i+E.slice(W+1):E.slice(W))+S,E=E.slice(0,W);break}}}M&&!P&&(E=t(E,1/0));var re=w.length+E.length+S.length,le=re<N?new Array(N-re+1).join(f):"";switch(M&&P&&(E=t(le+E,le.length?N-S.length:1/0),le=""),y){case"<":E=w+E+S+le;break;case"=":E=w+le+E+S;break;case"^":E=le.slice(0,re=le.length>>1)+w+E+S+le.slice(re);break;default:E=le+w+E+S;break}return a(E)}return ae.toString=function(){return d+""},ae}function m(d,p){var f=Math.max(-8,Math.min(8,Math.floor(Ge(p)/3)))*3,y=Math.pow(10,-f),g=l((d=et(d),d.type="f",d),{suffix:Ts[8+f/3]});return function(b){return g(y*b)}}return{format:l,formatPrefix:m}}var Zr,Et,Kr;Ii({thousands:",",grouping:[3],currency:["$",""]});function Ii(e){return Zr=Ps(e),Et=Zr.format,Kr=Zr.formatPrefix,Zr}h();function Gi(e){return Math.max(0,-Ge(Math.abs(e)))}h();function zi(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Ge(t)/3)))*3-Ge(Math.abs(e)))}h();function $i(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Ge(t)-Ge(e))+1}h();h();h();h();h();function ft(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}h();h();function ji(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function ht(e){let t,r,n;e.length!==2?(t=ft,r=(u,c)=>ft(e(u),c),n=(u,c)=>e(u)-c):(t=e===ft||e===ji?e:um,r=e,n=e);function i(u,c,l=0,m=u.length){if(l<m){if(t(c,c)!==0)return m;do{let d=l+m>>>1;r(u[d],c)<0?l=d+1:m=d}while(l<m)}return l}function a(u,c,l=0,m=u.length){if(l<m){if(t(c,c)!==0)return m;do{let d=l+m>>>1;r(u[d],c)<=0?l=d+1:m=d}while(l<m)}return l}function s(u,c,l=0,m=u.length){let d=i(u,c,l,m-1);return d>l&&n(u[d-1],c)>-n(u[d],c)?d-1:d}return{left:i,center:s,right:a}}function um(){return 0}h();function Vi(e){return e===null?NaN:+e}var Ms=ht(ft),Cs=Ms.right,lm=Ms.left,cm=ht(Vi).center,Wi=Cs;h();var Ut=class extends Map{constructor(t,r=pm){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(let[n,i]of t)this.set(n,i)}get(t){return super.get(Ns(this,t))}has(t){return super.has(Ns(this,t))}set(t,r){return super.set(dm(this,t),r)}delete(t){return super.delete(mm(this,t))}};function Ns({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function dm({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function mm({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function pm(e){return e!==null&&typeof e=="object"?e.valueOf():e}h();var fm=Math.sqrt(50),hm=Math.sqrt(10),gm=Math.sqrt(2);function Jr(e,t,r){let n=(t-e)/Math.max(0,r),i=Math.floor(Math.log10(n)),a=n/Math.pow(10,i),s=a>=fm?10:a>=hm?5:a>=gm?2:1,u,c,l;return i<0?(l=Math.pow(10,-i)/s,u=Math.round(e*l),c=Math.round(t*l),u/l<e&&++u,c/l>t&&--c,l=-l):(l=Math.pow(10,i)*s,u=Math.round(e/l),c=Math.round(t/l),u*l<e&&++u,c*l>t&&--c),c<u&&.5<=r&&r<2?Jr(e,t,r*2):[u,c,l]}function Qr(e,t,r){if(t=+t,e=+e,r=+r,!(r>0))return[];if(e===t)return[e];let n=t<e,[i,a,s]=n?Jr(t,e,r):Jr(e,t,r);if(!(a>=i))return[];let u=a-i+1,c=new Array(u);if(n)if(s<0)for(let l=0;l<u;++l)c[l]=(a-l)/-s;else for(let l=0;l<u;++l)c[l]=(a-l)*s;else if(s<0)for(let l=0;l<u;++l)c[l]=(i+l)/-s;else for(let l=0;l<u;++l)c[l]=(i+l)*s;return c}function pr(e,t,r){return t=+t,e=+e,r=+r,Jr(e,t,r)[2]}function _t(e,t,r){t=+t,e=+e,r=+r;let n=t<e,i=n?pr(t,e,r):pr(e,t,r);return(n?-1:1)*(i<0?1/-i:i)}h();function en(e,t,r){e=+e,t=+t,r=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+r;for(var n=-1,i=Math.max(0,Math.ceil((t-e)/r))|0,a=new Array(i);++n<i;)a[n]=e+n*r;return a}h();function tt(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}h();var As=Symbol("implicit");function tn(){var e=new Ut,t=[],r=[],n=As;function i(a){let s=e.get(a);if(s===void 0){if(n!==As)return n;e.set(a,s=t.push(a)-1)}return r[s%r.length]}return i.domain=function(a){if(!arguments.length)return t.slice();t=[],e=new Ut;for(let s of a)e.has(s)||e.set(s,t.push(s)-1);return i},i.range=function(a){return arguments.length?(r=Array.from(a),i):r.slice()},i.unknown=function(a){return arguments.length?(n=a,i):n},i.copy=function(){return tn(t,r).unknown(n)},tt.apply(i,arguments),i}function fr(){var e=tn().unknown(void 0),t=e.domain,r=e.range,n=0,i=1,a,s,u=!1,c=0,l=0,m=.5;delete e.unknown;function d(){var p=t().length,f=i<n,y=f?i:n,g=f?n:i;a=(g-y)/Math.max(1,p-c+l*2),u&&(a=Math.floor(a)),y+=(g-y-a*(p-c))*m,s=a*(1-c),u&&(y=Math.round(y),s=Math.round(s));var b=en(p).map(function(P){return y+a*P});return r(f?b.reverse():b)}return e.domain=function(p){return arguments.length?(t(p),d()):t()},e.range=function(p){return arguments.length?([n,i]=p,n=+n,i=+i,d()):[n,i]},e.rangeRound=function(p){return[n,i]=p,n=+n,i=+i,u=!0,d()},e.bandwidth=function(){return s},e.step=function(){return a},e.round=function(p){return arguments.length?(u=!!p,d()):u},e.padding=function(p){return arguments.length?(c=Math.min(1,l=+p),d()):c},e.paddingInner=function(p){return arguments.length?(c=Math.min(1,p),d()):c},e.paddingOuter=function(p){return arguments.length?(l=+p,d()):l},e.align=function(p){return arguments.length?(m=Math.max(0,Math.min(1,p)),d()):m},e.copy=function(){return fr(t(),[n,i]).round(u).paddingInner(c).paddingOuter(l).align(m)},tt.apply(d(),arguments)}h();h();h();h();h();h();h();function rn(e,t,r){e.prototype=t.prototype=r,r.constructor=e}function Hi(e,t){var r=Object.create(e.prototype);for(var n in t)r[n]=t[n];return r}function br(){}var hr=.7,on=1/hr,It="\\s*([+-]?\\d+)\\s*",gr="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",ze="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",bm=/^#([0-9a-f]{3,8})$/,ym=new RegExp(`^rgb\\(${It},${It},${It}\\)$`),xm=new RegExp(`^rgb\\(${ze},${ze},${ze}\\)$`),vm=new RegExp(`^rgba\\(${It},${It},${It},${gr}\\)$`),wm=new RegExp(`^rgba\\(${ze},${ze},${ze},${gr}\\)$`),Sm=new RegExp(`^hsl\\(${gr},${ze},${ze}\\)$`),km=new RegExp(`^hsla\\(${gr},${ze},${ze},${gr}\\)$`),Os={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};rn(br,rt,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Ds,formatHex:Ds,formatHex8:Tm,formatHsl:Pm,formatRgb:Ls,toString:Ls});function Ds(){return this.rgb().formatHex()}function Tm(){return this.rgb().formatHex8()}function Pm(){return _s(this).formatHsl()}function Ls(){return this.rgb().formatRgb()}function rt(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=bm.exec(e))?(r=t[1].length,t=parseInt(t[1],16),r===6?Fs(t):r===3?new Re(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?nn(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?nn(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=ym.exec(e))?new Re(t[1],t[2],t[3],1):(t=xm.exec(e))?new Re(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=vm.exec(e))?nn(t[1],t[2],t[3],t[4]):(t=wm.exec(e))?nn(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Sm.exec(e))?Es(t[1],t[2]/100,t[3]/100,1):(t=km.exec(e))?Es(t[1],t[2]/100,t[3]/100,t[4]):Os.hasOwnProperty(e)?Fs(Os[e]):e==="transparent"?new Re(NaN,NaN,NaN,0):null}function Fs(e){return new Re(e>>16&255,e>>8&255,e&255,1)}function nn(e,t,r,n){return n<=0&&(e=t=r=NaN),new Re(e,t,r,n)}function Mm(e){return e instanceof br||(e=rt(e)),e?(e=e.rgb(),new Re(e.r,e.g,e.b,e.opacity)):new Re}function Gt(e,t,r,n){return arguments.length===1?Mm(e):new Re(e,t,r,n??1)}function Re(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}rn(Re,Gt,Hi(br,{brighter(e){return e=e==null?on:Math.pow(on,e),new Re(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?hr:Math.pow(hr,e),new Re(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Re(bt(this.r),bt(this.g),bt(this.b),sn(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Rs,formatHex:Rs,formatHex8:Cm,formatRgb:Bs,toString:Bs}));function Rs(){return`#${gt(this.r)}${gt(this.g)}${gt(this.b)}`}function Cm(){return`#${gt(this.r)}${gt(this.g)}${gt(this.b)}${gt((isNaN(this.opacity)?1:this.opacity)*255)}`}function Bs(){let e=sn(this.opacity);return`${e===1?"rgb(":"rgba("}${bt(this.r)}, ${bt(this.g)}, ${bt(this.b)}${e===1?")":`, ${e})`}`}function sn(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function bt(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function gt(e){return e=bt(e),(e<16?"0":"")+e.toString(16)}function Es(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Ee(e,t,r,n)}function _s(e){if(e instanceof Ee)return new Ee(e.h,e.s,e.l,e.opacity);if(e instanceof br||(e=rt(e)),!e)return new Ee;if(e instanceof Ee)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,i=Math.min(t,r,n),a=Math.max(t,r,n),s=NaN,u=a-i,c=(a+i)/2;return u?(t===a?s=(r-n)/u+(r<n)*6:r===a?s=(n-t)/u+2:s=(t-r)/u+4,u/=c<.5?a+i:2-a-i,s*=60):u=c>0&&c<1?0:s,new Ee(s,u,c,e.opacity)}function Is(e,t,r,n){return arguments.length===1?_s(e):new Ee(e,t,r,n??1)}function Ee(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}rn(Ee,Is,Hi(br,{brighter(e){return e=e==null?on:Math.pow(on,e),new Ee(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?hr:Math.pow(hr,e),new Ee(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,i=2*r-n;return new Re(Yi(e>=240?e-240:e+120,i,n),Yi(e,i,n),Yi(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new Ee(Us(this.h),an(this.s),an(this.l),sn(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=sn(this.opacity);return`${e===1?"hsl(":"hsla("}${Us(this.h)}, ${an(this.s)*100}%, ${an(this.l)*100}%${e===1?")":`, ${e})`}`}}));function Us(e){return e=(e||0)%360,e<0?e+360:e}function an(e){return Math.max(0,Math.min(1,e||0))}function Yi(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}h();h();function Xi(e,t,r,n,i){var a=e*e,s=a*e;return((1-3*e+3*a-s)*t+(4-6*a+3*s)*r+(1+3*e+3*a-3*s)*n+s*i)/6}function Gs(e){var t=e.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,t-1):Math.floor(r*t),i=e[n],a=e[n+1],s=n>0?e[n-1]:2*i-a,u=n<t-1?e[n+2]:2*a-i;return Xi((r-n/t)*t,s,i,a,u)}}h();function zs(e){var t=e.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*t),i=e[(n+t-1)%t],a=e[n%t],s=e[(n+1)%t],u=e[(n+2)%t];return Xi((r-n/t)*t,i,a,s,u)}}h();h();var yr=e=>()=>e;function Nm(e,t){return function(r){return e+r*t}}function Am(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function $s(e){return(e=+e)==1?un:function(t,r){return r-t?Am(t,r,e):yr(isNaN(t)?r:t)}}function un(e,t){var r=t-e;return r?Nm(e,r):yr(isNaN(e)?t:e)}var qi=(function e(t){var r=$s(t);function n(i,a){var s=r((i=Gt(i)).r,(a=Gt(a)).r),u=r(i.g,a.g),c=r(i.b,a.b),l=un(i.opacity,a.opacity);return function(m){return i.r=s(m),i.g=u(m),i.b=c(m),i.opacity=l(m),i+""}}return n.gamma=e,n})(1);function js(e){return function(t){var r=t.length,n=new Array(r),i=new Array(r),a=new Array(r),s,u;for(s=0;s<r;++s)u=Gt(t[s]),n[s]=u.r||0,i[s]=u.g||0,a[s]=u.b||0;return n=e(n),i=e(i),a=e(a),u.opacity=1,function(c){return u.r=n(c),u.g=i(c),u.b=a(c),u+""}}}var av=js(Gs),ov=js(zs);h();h();function Vs(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,n=t.slice(),i;return function(a){for(i=0;i<r;++i)n[i]=e[i]*(1-a)+t[i]*a;return n}}function Ws(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Hs(e,t){var r=t?t.length:0,n=e?Math.min(r,e.length):0,i=new Array(n),a=new Array(r),s;for(s=0;s<n;++s)i[s]=yt(e[s],t[s]);for(;s<r;++s)a[s]=t[s];return function(u){for(s=0;s<n;++s)a[s]=i[s](u);return a}}h();function Ys(e,t){var r=new Date;return e=+e,t=+t,function(n){return r.setTime(e*(1-n)+t*n),r}}h();function nt(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}h();function Xs(e,t){var r={},n={},i;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(i in t)i in e?r[i]=yt(e[i],t[i]):n[i]=t[i];return function(a){for(i in r)n[i]=r[i](a);return n}}h();var Ki=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Zi=new RegExp(Ki.source,"g");function Om(e){return function(){return e}}function Dm(e){return function(t){return e(t)+""}}function qs(e,t){var r=Ki.lastIndex=Zi.lastIndex=0,n,i,a,s=-1,u=[],c=[];for(e=e+"",t=t+"";(n=Ki.exec(e))&&(i=Zi.exec(t));)(a=i.index)>r&&(a=t.slice(r,a),u[s]?u[s]+=a:u[++s]=a),(n=n[0])===(i=i[0])?u[s]?u[s]+=i:u[++s]=i:(u[++s]=null,c.push({i:s,x:nt(n,i)})),r=Zi.lastIndex;return r<t.length&&(a=t.slice(r),u[s]?u[s]+=a:u[++s]=a),u.length<2?c[0]?Dm(c[0].x):Om(t):(t=c.length,function(l){for(var m=0,d;m<t;++m)u[(d=c[m]).i]=d.x(l);return u.join("")})}function yt(e,t){var r=typeof t,n;return t==null||r==="boolean"?yr(t):(r==="number"?nt:r==="string"?(n=rt(t))?(t=n,qi):qs:t instanceof rt?qi:t instanceof Date?Ys:Ws(t)?Vs:Array.isArray(t)?Hs:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?Xs:nt)(e,t)}h();function Ji(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}h();function Qi(e){return function(){return e}}h();function ea(e){return+e}var Zs=[0,1];function zt(e){return e}function ta(e,t){return(t-=e=+e)?function(r){return(r-e)/t}:Qi(isNaN(t)?NaN:.5)}function Lm(e,t){var r;return e>t&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function Fm(e,t,r){var n=e[0],i=e[1],a=t[0],s=t[1];return i<n?(n=ta(i,n),a=r(s,a)):(n=ta(n,i),a=r(a,s)),function(u){return a(n(u))}}function Rm(e,t,r){var n=Math.min(e.length,t.length)-1,i=new Array(n),a=new Array(n),s=-1;for(e[n]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++s<n;)i[s]=ta(e[s],e[s+1]),a[s]=r(t[s],t[s+1]);return function(u){var c=Wi(e,u,1,n)-1;return a[c](i[c](u))}}function ln(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function Bm(){var e=Zs,t=Zs,r=yt,n,i,a,s=zt,u,c,l;function m(){var p=Math.min(e.length,t.length);return s!==zt&&(s=Lm(e[0],e[p-1])),u=p>2?Rm:Fm,c=l=null,d}function d(p){return p==null||isNaN(p=+p)?a:(c||(c=u(e.map(n),t,r)))(n(s(p)))}return d.invert=function(p){return s(i((l||(l=u(t,e.map(n),nt)))(p)))},d.domain=function(p){return arguments.length?(e=Array.from(p,ea),m()):e.slice()},d.range=function(p){return arguments.length?(t=Array.from(p),m()):t.slice()},d.rangeRound=function(p){return t=Array.from(p),r=Ji,m()},d.clamp=function(p){return arguments.length?(s=p?!0:zt,m()):s!==zt},d.interpolate=function(p){return arguments.length?(r=p,m()):r},d.unknown=function(p){return arguments.length?(a=p,d):a},function(p,f){return n=p,i=f,m()}}function xr(){return Bm()(zt,zt)}h();function ra(e,t,r,n){var i=_t(e,t,r),a;switch(n=et(n??",f"),n.type){case"s":{var s=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(a=zi(i,s))&&(n.precision=a),Kr(n,s)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=$i(i,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=Gi(i))&&(n.precision=a-(n.type==="%")*2);break}}return Et(n)}function Em(e){var t=e.domain;return e.ticks=function(r){var n=t();return Qr(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var i=t();return ra(i[0],i[i.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),i=0,a=n.length-1,s=n[i],u=n[a],c,l,m=10;for(u<s&&(l=s,s=u,u=l,l=i,i=a,a=l);m-- >0;){if(l=pr(s,u,r),l===c)return n[i]=s,n[a]=u,t(n);if(l>0)s=Math.floor(s/l)*l,u=Math.ceil(u/l)*l;else if(l<0)s=Math.ceil(s*l)/l,u=Math.floor(u*l)/l;else break;c=l}return e},e}function $t(){var e=xr();return e.copy=function(){return ln(e,$t())},tt.apply(e,arguments),Em(e)}h();function na(e,t){e=e.slice();var r=0,n=e.length-1,i=e[r],a=e[n],s;return a<i&&(s=r,r=n,n=s,s=i,i=a,a=s),e[r]=t.floor(i),e[n]=t.ceil(a),e}h();h();h();var ia=new Date,aa=new Date;function ce(e,t,r,n){function i(a){return e(a=arguments.length===0?new Date:new Date(+a)),a}return i.floor=a=>(e(a=new Date(+a)),a),i.ceil=a=>(e(a=new Date(a-1)),t(a,1),e(a),a),i.round=a=>{let s=i(a),u=i.ceil(a);return a-s<u-a?s:u},i.offset=(a,s)=>(t(a=new Date(+a),s==null?1:Math.floor(s)),a),i.range=(a,s,u)=>{let c=[];if(a=i.ceil(a),u=u==null?1:Math.floor(u),!(a<s)||!(u>0))return c;let l;do c.push(l=new Date(+a)),t(a,u),e(a);while(l<a&&a<s);return c},i.filter=a=>ce(s=>{if(s>=s)for(;e(s),!a(s);)s.setTime(s-1)},(s,u)=>{if(s>=s)if(u<0)for(;++u<=0;)for(;t(s,-1),!a(s););else for(;--u>=0;)for(;t(s,1),!a(s););}),r&&(i.count=(a,s)=>(ia.setTime(+a),aa.setTime(+s),e(ia),e(aa),Math.floor(r(ia,aa))),i.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?i.filter(n?s=>n(s)%a===0:s=>i.count(0,s)%a===0):i)),i}h();var vr=ce(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);vr.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?ce(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):vr);var pw=vr.range;h();var $e=ce(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),Ks=$e.range;h();var cn=ce(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),Um=cn.range,jt=ce(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),_m=jt.range;h();var dn=ce(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3-e.getMinutes()*6e4)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getHours()),Im=dn.range,Vt=ce(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),Gm=Vt.range;h();var wt=ce(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/864e5,e=>e.getDate()-1),zm=wt.range,St=ce(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),$m=St.range,mn=ce(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),jm=mn.range;h();function kt(e){return ce(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/6048e5)}var Tt=kt(0),Wt=kt(1),Qs=kt(2),eu=kt(3),it=kt(4),tu=kt(5),ru=kt(6),nu=Tt.range,Vm=Wt.range,Wm=Qs.range,Hm=eu.range,Ym=it.range,Xm=tu.range,qm=ru.range;function Pt(e){return ce(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/6048e5)}var Ye=Pt(0),Ht=Pt(1),iu=Pt(2),au=Pt(3),at=Pt(4),ou=Pt(5),su=Pt(6),uu=Ye.range,Zm=Ht.range,Km=iu.range,Jm=au.range,Qm=at.range,ep=ou.range,tp=su.range;h();var pn=ce(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth()),rp=pn.range,Yt=ce(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth()),np=Yt.range;h();var Ue=ce(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());Ue.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:ce(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});var ip=Ue.range,Be=ce(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Be.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:ce(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});var ap=Be.range;h();function cu(e,t,r,n,i,a){let s=[[$e,1,1e3],[$e,5,5*1e3],[$e,15,15*1e3],[$e,30,30*1e3],[a,1,6e4],[a,5,5*6e4],[a,15,15*6e4],[a,30,30*6e4],[i,1,36e5],[i,3,3*36e5],[i,6,6*36e5],[i,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[t,1,2592e6],[t,3,3*2592e6],[e,1,31536e6]];function u(l,m,d){let p=m<l;p&&([l,m]=[m,l]);let f=d&&typeof d.range=="function"?d:c(l,m,d),y=f?f.range(l,+m+1):[];return p?y.reverse():y}function c(l,m,d){let p=Math.abs(m-l)/d,f=ht(([,,b])=>b).right(s,p);if(f===s.length)return e.every(_t(l/31536e6,m/31536e6,d));if(f===0)return vr.every(Math.max(_t(l,m,d),1));let[y,g]=s[p/s[f-1][2]<s[f][2]/p?f-1:f];return y.every(g)}return[u,c]}var[oa,sa]=cu(Be,Yt,Ye,mn,Vt,jt),[sp,up]=cu(Ue,pn,Tt,wt,dn,cn);h();h();h();function ua(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function la(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function Sr(e,t,r){return{y:e,m:t,d:r,H:0,M:0,S:0,L:0}}function ca(e){var t=e.dateTime,r=e.date,n=e.time,i=e.periods,a=e.days,s=e.shortDays,u=e.months,c=e.shortMonths,l=kr(i),m=Tr(i),d=kr(a),p=Tr(a),f=kr(s),y=Tr(s),g=kr(u),b=Tr(u),P=kr(c),N=Tr(c),M={a:_,A:I,b:re,B:le,c:null,d:gu,e:gu,f:Dp,g:zp,G:jp,H:Np,I:Ap,j:Op,L:wu,m:Lp,M:Fp,p:ye,q:de,Q:xu,s:vu,S:Rp,u:Bp,U:Ep,V:Up,w:_p,W:Ip,x:null,X:null,y:Gp,Y:$p,Z:Vp,"%":yu},k={a:L,A:B,b:$,B:X,c:null,d:bu,e:bu,f:Xp,g:af,G:sf,H:Wp,I:Hp,j:Yp,L:ku,m:qp,M:Zp,p:j,q:K,Q:xu,s:vu,S:Kp,u:Jp,U:Qp,V:ef,w:tf,W:rf,x:null,X:null,y:nf,Y:of,Z:uf,"%":yu},A={a:te,A:ae,b:E,B:w,c:S,d:fu,e:fu,f:Tp,g:pu,G:mu,H:hu,I:hu,j:vp,L:kp,m:xp,M:wp,p:Z,q:yp,Q:Mp,s:Cp,S:Sp,u:pp,U:fp,V:hp,w:mp,W:gp,x:W,X:H,y:pu,Y:mu,Z:bp,"%":Pp};M.x=v(r,M),M.X=v(n,M),M.c=v(t,M),k.x=v(r,k),k.X=v(n,k),k.c=v(t,k);function v(O,D){return function(V){var C=[],xe=-1,oe=0,Me=O.length,Ce,Ve,Lr;for(V instanceof Date||(V=new Date(+V));++xe<Me;)O.charCodeAt(xe)===37&&(C.push(O.slice(oe,xe)),(Ve=du[Ce=O.charAt(++xe)])!=null?Ce=O.charAt(++xe):Ve=Ce==="e"?" ":"0",(Lr=D[Ce])&&(Ce=Lr(V,Ve)),C.push(Ce),oe=xe+1);return C.push(O.slice(oe,xe)),C.join("")}}function R(O,D){return function(V){var C=Sr(1900,void 0,1),xe=G(C,O,V+="",0),oe,Me;if(xe!=V.length)return null;if("Q"in C)return new Date(C.Q);if("s"in C)return new Date(C.s*1e3+("L"in C?C.L:0));if(D&&!("Z"in C)&&(C.Z=0),"p"in C&&(C.H=C.H%12+C.p*12),C.m===void 0&&(C.m="q"in C?C.q:0),"V"in C){if(C.V<1||C.V>53)return null;"w"in C||(C.w=1),"Z"in C?(oe=la(Sr(C.y,0,1)),Me=oe.getUTCDay(),oe=Me>4||Me===0?Ht.ceil(oe):Ht(oe),oe=St.offset(oe,(C.V-1)*7),C.y=oe.getUTCFullYear(),C.m=oe.getUTCMonth(),C.d=oe.getUTCDate()+(C.w+6)%7):(oe=ua(Sr(C.y,0,1)),Me=oe.getDay(),oe=Me>4||Me===0?Wt.ceil(oe):Wt(oe),oe=wt.offset(oe,(C.V-1)*7),C.y=oe.getFullYear(),C.m=oe.getMonth(),C.d=oe.getDate()+(C.w+6)%7)}else("W"in C||"U"in C)&&("w"in C||(C.w="u"in C?C.u%7:"W"in C?1:0),Me="Z"in C?la(Sr(C.y,0,1)).getUTCDay():ua(Sr(C.y,0,1)).getDay(),C.m=0,C.d="W"in C?(C.w+6)%7+C.W*7-(Me+5)%7:C.w+C.U*7-(Me+6)%7);return"Z"in C?(C.H+=C.Z/100|0,C.M+=C.Z%100,la(C)):ua(C)}}function G(O,D,V,C){for(var xe=0,oe=D.length,Me=V.length,Ce,Ve;xe<oe;){if(C>=Me)return-1;if(Ce=D.charCodeAt(xe++),Ce===37){if(Ce=D.charAt(xe++),Ve=A[Ce in du?D.charAt(xe++):Ce],!Ve||(C=Ve(O,V,C))<0)return-1}else if(Ce!=V.charCodeAt(C++))return-1}return C}function Z(O,D,V){var C=l.exec(D.slice(V));return C?(O.p=m.get(C[0].toLowerCase()),V+C[0].length):-1}function te(O,D,V){var C=f.exec(D.slice(V));return C?(O.w=y.get(C[0].toLowerCase()),V+C[0].length):-1}function ae(O,D,V){var C=d.exec(D.slice(V));return C?(O.w=p.get(C[0].toLowerCase()),V+C[0].length):-1}function E(O,D,V){var C=P.exec(D.slice(V));return C?(O.m=N.get(C[0].toLowerCase()),V+C[0].length):-1}function w(O,D,V){var C=g.exec(D.slice(V));return C?(O.m=b.get(C[0].toLowerCase()),V+C[0].length):-1}function S(O,D,V){return G(O,t,D,V)}function W(O,D,V){return G(O,r,D,V)}function H(O,D,V){return G(O,n,D,V)}function _(O){return s[O.getDay()]}function I(O){return a[O.getDay()]}function re(O){return c[O.getMonth()]}function le(O){return u[O.getMonth()]}function ye(O){return i[+(O.getHours()>=12)]}function de(O){return 1+~~(O.getMonth()/3)}function L(O){return s[O.getUTCDay()]}function B(O){return a[O.getUTCDay()]}function $(O){return c[O.getUTCMonth()]}function X(O){return u[O.getUTCMonth()]}function j(O){return i[+(O.getUTCHours()>=12)]}function K(O){return 1+~~(O.getUTCMonth()/3)}return{format:function(O){var D=v(O+="",M);return D.toString=function(){return O},D},parse:function(O){var D=R(O+="",!1);return D.toString=function(){return O},D},utcFormat:function(O){var D=v(O+="",k);return D.toString=function(){return O},D},utcParse:function(O){var D=R(O+="",!0);return D.toString=function(){return O},D}}}var du={"-":"",_:" ",0:"0"},we=/^\s*\d+/,lp=/^%/,cp=/[\\^$*+?|[\]().{}]/g;function ie(e,t,r){var n=e<0?"-":"",i=(n?-e:e)+"",a=i.length;return n+(a<r?new Array(r-a+1).join(t)+i:i)}function dp(e){return e.replace(cp,"\\$&")}function kr(e){return new RegExp("^(?:"+e.map(dp).join("|")+")","i")}function Tr(e){return new Map(e.map((t,r)=>[t.toLowerCase(),r]))}function mp(e,t,r){var n=we.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function pp(e,t,r){var n=we.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function fp(e,t,r){var n=we.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function hp(e,t,r){var n=we.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function gp(e,t,r){var n=we.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function mu(e,t,r){var n=we.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function pu(e,t,r){var n=we.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function bp(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function yp(e,t,r){var n=we.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function xp(e,t,r){var n=we.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function fu(e,t,r){var n=we.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function vp(e,t,r){var n=we.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function hu(e,t,r){var n=we.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function wp(e,t,r){var n=we.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function Sp(e,t,r){var n=we.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function kp(e,t,r){var n=we.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function Tp(e,t,r){var n=we.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function Pp(e,t,r){var n=lp.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function Mp(e,t,r){var n=we.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function Cp(e,t,r){var n=we.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function gu(e,t){return ie(e.getDate(),t,2)}function Np(e,t){return ie(e.getHours(),t,2)}function Ap(e,t){return ie(e.getHours()%12||12,t,2)}function Op(e,t){return ie(1+wt.count(Ue(e),e),t,3)}function wu(e,t){return ie(e.getMilliseconds(),t,3)}function Dp(e,t){return wu(e,t)+"000"}function Lp(e,t){return ie(e.getMonth()+1,t,2)}function Fp(e,t){return ie(e.getMinutes(),t,2)}function Rp(e,t){return ie(e.getSeconds(),t,2)}function Bp(e){var t=e.getDay();return t===0?7:t}function Ep(e,t){return ie(Tt.count(Ue(e)-1,e),t,2)}function Su(e){var t=e.getDay();return t>=4||t===0?it(e):it.ceil(e)}function Up(e,t){return e=Su(e),ie(it.count(Ue(e),e)+(Ue(e).getDay()===4),t,2)}function _p(e){return e.getDay()}function Ip(e,t){return ie(Wt.count(Ue(e)-1,e),t,2)}function Gp(e,t){return ie(e.getFullYear()%100,t,2)}function zp(e,t){return e=Su(e),ie(e.getFullYear()%100,t,2)}function $p(e,t){return ie(e.getFullYear()%1e4,t,4)}function jp(e,t){var r=e.getDay();return e=r>=4||r===0?it(e):it.ceil(e),ie(e.getFullYear()%1e4,t,4)}function Vp(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+ie(t/60|0,"0",2)+ie(t%60,"0",2)}function bu(e,t){return ie(e.getUTCDate(),t,2)}function Wp(e,t){return ie(e.getUTCHours(),t,2)}function Hp(e,t){return ie(e.getUTCHours()%12||12,t,2)}function Yp(e,t){return ie(1+St.count(Be(e),e),t,3)}function ku(e,t){return ie(e.getUTCMilliseconds(),t,3)}function Xp(e,t){return ku(e,t)+"000"}function qp(e,t){return ie(e.getUTCMonth()+1,t,2)}function Zp(e,t){return ie(e.getUTCMinutes(),t,2)}function Kp(e,t){return ie(e.getUTCSeconds(),t,2)}function Jp(e){var t=e.getUTCDay();return t===0?7:t}function Qp(e,t){return ie(Ye.count(Be(e)-1,e),t,2)}function Tu(e){var t=e.getUTCDay();return t>=4||t===0?at(e):at.ceil(e)}function ef(e,t){return e=Tu(e),ie(at.count(Be(e),e)+(Be(e).getUTCDay()===4),t,2)}function tf(e){return e.getUTCDay()}function rf(e,t){return ie(Ht.count(Be(e)-1,e),t,2)}function nf(e,t){return ie(e.getUTCFullYear()%100,t,2)}function af(e,t){return e=Tu(e),ie(e.getUTCFullYear()%100,t,2)}function of(e,t){return ie(e.getUTCFullYear()%1e4,t,4)}function sf(e,t){var r=e.getUTCDay();return e=r>=4||r===0?at(e):at.ceil(e),ie(e.getUTCFullYear()%1e4,t,4)}function uf(){return"+0000"}function yu(){return"%"}function xu(e){return+e}function vu(e){return Math.floor(+e/1e3)}var Xt,Pu,Mu,fn,Cu;da({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function da(e){return Xt=ca(e),Pu=Xt.format,Mu=Xt.parse,fn=Xt.utcFormat,Cu=Xt.utcParse,Xt}function lf(e){return new Date(e)}function cf(e){return e instanceof Date?+e:+new Date(+e)}function ma(e,t,r,n,i,a,s,u,c,l){var m=xr(),d=m.invert,p=m.domain,f=l(".%L"),y=l(":%S"),g=l("%I:%M"),b=l("%I %p"),P=l("%a %d"),N=l("%b %d"),M=l("%B"),k=l("%Y");function A(v){return(c(v)<v?f:u(v)<v?y:s(v)<v?g:a(v)<v?b:n(v)<v?i(v)<v?P:N:r(v)<v?M:k)(v)}return m.invert=function(v){return new Date(d(v))},m.domain=function(v){return arguments.length?p(Array.from(v,cf)):p().map(lf)},m.ticks=function(v){var R=p();return e(R[0],R[R.length-1],v??10)},m.tickFormat=function(v,R){return R==null?A:l(R)},m.nice=function(v){var R=p();return(!v||typeof v.range!="function")&&(v=t(R[0],R[R.length-1],v??10)),v?p(na(R,v)):m},m.copy=function(){return ln(m,ma(e,t,r,n,i,a,s,u,c,l))},m}h();function hn(){return tt.apply(ma(oa,sa,Be,Yt,Ye,St,Vt,jt,$e,fn).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}h();h();h();function q(e){return function(){return e}}h();var pa=Math.abs,Pe=Math.atan2,ot=Math.cos,Nu=Math.max,gn=Math.min,_e=Math.sin,Mt=Math.sqrt,Fe=1e-12,qt=Math.PI,Pr=qt/2,Zt=2*qt;function Au(e){return e>1?0:e<-1?qt:Math.acos(e)}function fa(e){return e>=1?Pr:e<=-1?-Pr:Math.asin(e)}h();h();h();var ha=Math.PI,ga=2*ha,Ct=1e-6,df=ga-Ct;function Ou(e){this._+=e[0];for(let t=1,r=e.length;t<r;++t)this._+=arguments[t]+e[t]}function mf(e){let t=Math.floor(e);if(!(t>=0))throw new Error(`invalid digits: ${e}`);if(t>15)return Ou;let r=10**t;return function(n){this._+=n[0];for(let i=1,a=n.length;i<a;++i)this._+=Math.round(arguments[i]*r)/r+n[i]}}var Nt=class{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=t==null?Ou:mf(t)}moveTo(t,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,r){this._append`L${this._x1=+t},${this._y1=+r}`}quadraticCurveTo(t,r,n,i){this._append`Q${+t},${+r},${this._x1=+n},${this._y1=+i}`}bezierCurveTo(t,r,n,i,a,s){this._append`C${+t},${+r},${+n},${+i},${this._x1=+a},${this._y1=+s}`}arcTo(t,r,n,i,a){if(t=+t,r=+r,n=+n,i=+i,a=+a,a<0)throw new Error(`negative radius: ${a}`);let s=this._x1,u=this._y1,c=n-t,l=i-r,m=s-t,d=u-r,p=m*m+d*d;if(this._x1===null)this._append`M${this._x1=t},${this._y1=r}`;else if(p>Ct)if(!(Math.abs(d*c-l*m)>Ct)||!a)this._append`L${this._x1=t},${this._y1=r}`;else{let f=n-s,y=i-u,g=c*c+l*l,b=f*f+y*y,P=Math.sqrt(g),N=Math.sqrt(p),M=a*Math.tan((ha-Math.acos((g+p-b)/(2*P*N)))/2),k=M/N,A=M/P;Math.abs(k-1)>Ct&&this._append`L${t+k*m},${r+k*d}`,this._append`A${a},${a},0,0,${+(d*f>m*y)},${this._x1=t+A*c},${this._y1=r+A*l}`}}arc(t,r,n,i,a,s){if(t=+t,r=+r,n=+n,s=!!s,n<0)throw new Error(`negative radius: ${n}`);let u=n*Math.cos(i),c=n*Math.sin(i),l=t+u,m=r+c,d=1^s,p=s?i-a:a-i;this._x1===null?this._append`M${l},${m}`:(Math.abs(this._x1-l)>Ct||Math.abs(this._y1-m)>Ct)&&this._append`L${l},${m}`,n&&(p<0&&(p=p%ga+ga),p>df?this._append`A${n},${n},0,1,${d},${t-u},${r-c}A${n},${n},0,1,${d},${this._x1=l},${this._y1=m}`:p>Ct&&this._append`A${n},${n},0,${+(p>=ha)},${d},${this._x1=t+n*Math.cos(a)},${this._y1=r+n*Math.sin(a)}`)}rect(t,r,n,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}};function Du(){return new Nt}Du.prototype=Nt.prototype;function Kt(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new Nt(t)}function pf(e){return e.innerRadius}function ff(e){return e.outerRadius}function hf(e){return e.startAngle}function gf(e){return e.endAngle}function bf(e){return e&&e.padAngle}function yf(e,t,r,n,i,a,s,u){var c=r-e,l=n-t,m=s-i,d=u-a,p=d*c-m*l;if(!(p*p<Fe))return p=(m*(t-a)-d*(e-i))/p,[e+p*c,t+p*l]}function bn(e,t,r,n,i,a,s){var u=e-r,c=t-n,l=(s?a:-a)/Mt(u*u+c*c),m=l*c,d=-l*u,p=e+m,f=t+d,y=r+m,g=n+d,b=(p+y)/2,P=(f+g)/2,N=y-p,M=g-f,k=N*N+M*M,A=i-a,v=p*g-y*f,R=(M<0?-1:1)*Mt(Nu(0,A*A*k-v*v)),G=(v*M-N*R)/k,Z=(-v*N-M*R)/k,te=(v*M+N*R)/k,ae=(-v*N+M*R)/k,E=G-b,w=Z-P,S=te-b,W=ae-P;return E*E+w*w>S*S+W*W&&(G=te,Z=ae),{cx:G,cy:Z,x01:-m,y01:-d,x11:G*(i/A-1),y11:Z*(i/A-1)}}function yn(){var e=pf,t=ff,r=q(0),n=null,i=hf,a=gf,s=bf,u=null,c=Kt(l);function l(){var m,d,p=+e.apply(this,arguments),f=+t.apply(this,arguments),y=i.apply(this,arguments)-Pr,g=a.apply(this,arguments)-Pr,b=pa(g-y),P=g>y;if(u||(u=m=c()),f<p&&(d=f,f=p,p=d),!(f>Fe))u.moveTo(0,0);else if(b>Zt-Fe)u.moveTo(f*ot(y),f*_e(y)),u.arc(0,0,f,y,g,!P),p>Fe&&(u.moveTo(p*ot(g),p*_e(g)),u.arc(0,0,p,g,y,P));else{var N=y,M=g,k=y,A=g,v=b,R=b,G=s.apply(this,arguments)/2,Z=G>Fe&&(n?+n.apply(this,arguments):Mt(p*p+f*f)),te=gn(pa(f-p)/2,+r.apply(this,arguments)),ae=te,E=te,w,S;if(Z>Fe){var W=fa(Z/p*_e(G)),H=fa(Z/f*_e(G));(v-=W*2)>Fe?(W*=P?1:-1,k+=W,A-=W):(v=0,k=A=(y+g)/2),(R-=H*2)>Fe?(H*=P?1:-1,N+=H,M-=H):(R=0,N=M=(y+g)/2)}var _=f*ot(N),I=f*_e(N),re=p*ot(A),le=p*_e(A);if(te>Fe){var ye=f*ot(M),de=f*_e(M),L=p*ot(k),B=p*_e(k),$;if(b<qt)if($=yf(_,I,L,B,ye,de,re,le)){var X=_-$[0],j=I-$[1],K=ye-$[0],O=de-$[1],D=1/_e(Au((X*K+j*O)/(Mt(X*X+j*j)*Mt(K*K+O*O)))/2),V=Mt($[0]*$[0]+$[1]*$[1]);ae=gn(te,(p-V)/(D-1)),E=gn(te,(f-V)/(D+1))}else ae=E=0}R>Fe?E>Fe?(w=bn(L,B,_,I,f,E,P),S=bn(ye,de,re,le,f,E,P),u.moveTo(w.cx+w.x01,w.cy+w.y01),E<te?u.arc(w.cx,w.cy,E,Pe(w.y01,w.x01),Pe(S.y01,S.x01),!P):(u.arc(w.cx,w.cy,E,Pe(w.y01,w.x01),Pe(w.y11,w.x11),!P),u.arc(0,0,f,Pe(w.cy+w.y11,w.cx+w.x11),Pe(S.cy+S.y11,S.cx+S.x11),!P),u.arc(S.cx,S.cy,E,Pe(S.y11,S.x11),Pe(S.y01,S.x01),!P))):(u.moveTo(_,I),u.arc(0,0,f,N,M,!P)):u.moveTo(_,I),!(p>Fe)||!(v>Fe)?u.lineTo(re,le):ae>Fe?(w=bn(re,le,ye,de,p,-ae,P),S=bn(_,I,L,B,p,-ae,P),u.lineTo(w.cx+w.x01,w.cy+w.y01),ae<te?u.arc(w.cx,w.cy,ae,Pe(w.y01,w.x01),Pe(S.y01,S.x01),!P):(u.arc(w.cx,w.cy,ae,Pe(w.y01,w.x01),Pe(w.y11,w.x11),!P),u.arc(0,0,p,Pe(w.cy+w.y11,w.cx+w.x11),Pe(S.cy+S.y11,S.cx+S.x11),P),u.arc(S.cx,S.cy,ae,Pe(S.y11,S.x11),Pe(S.y01,S.x01),!P))):u.arc(0,0,p,A,k,P)}if(u.closePath(),m)return u=null,m+""||null}return l.centroid=function(){var m=(+e.apply(this,arguments)+ +t.apply(this,arguments))/2,d=(+i.apply(this,arguments)+ +a.apply(this,arguments))/2-qt/2;return[ot(d)*m,_e(d)*m]},l.innerRadius=function(m){return arguments.length?(e=typeof m=="function"?m:q(+m),l):e},l.outerRadius=function(m){return arguments.length?(t=typeof m=="function"?m:q(+m),l):t},l.cornerRadius=function(m){return arguments.length?(r=typeof m=="function"?m:q(+m),l):r},l.padRadius=function(m){return arguments.length?(n=m==null?null:typeof m=="function"?m:q(+m),l):n},l.startAngle=function(m){return arguments.length?(i=typeof m=="function"?m:q(+m),l):i},l.endAngle=function(m){return arguments.length?(a=typeof m=="function"?m:q(+m),l):a},l.padAngle=function(m){return arguments.length?(s=typeof m=="function"?m:q(+m),l):s},l.context=function(m){return arguments.length?(u=m??null,l):u},l}h();h();var Y1=Array.prototype.slice;function st(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}h();function Lu(e){this._context=e}Lu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function At(e){return new Lu(e)}h();h();function xn(e){return e[0]}function vn(e){return e[1]}function Mr(e,t){var r=q(!0),n=null,i=At,a=null,s=Kt(u);e=typeof e=="function"?e:e===void 0?xn:q(e),t=typeof t=="function"?t:t===void 0?vn:q(t);function u(c){var l,m=(c=st(c)).length,d,p=!1,f;for(n==null&&(a=i(f=s())),l=0;l<=m;++l)!(l<m&&r(d=c[l],l,c))===p&&((p=!p)?a.lineStart():a.lineEnd()),p&&a.point(+e(d,l,c),+t(d,l,c));if(f)return a=null,f+""||null}return u.x=function(c){return arguments.length?(e=typeof c=="function"?c:q(+c),u):e},u.y=function(c){return arguments.length?(t=typeof c=="function"?c:q(+c),u):t},u.defined=function(c){return arguments.length?(r=typeof c=="function"?c:q(!!c),u):r},u.curve=function(c){return arguments.length?(i=c,n!=null&&(a=i(n)),u):i},u.context=function(c){return arguments.length?(c==null?n=a=null:a=i(n=c),u):n},u}function ba(e,t,r){var n=null,i=q(!0),a=null,s=At,u=null,c=Kt(l);e=typeof e=="function"?e:e===void 0?xn:q(+e),t=typeof t=="function"?t:t===void 0?q(0):q(+t),r=typeof r=="function"?r:r===void 0?vn:q(+r);function l(d){var p,f,y,g=(d=st(d)).length,b,P=!1,N,M=new Array(g),k=new Array(g);for(a==null&&(u=s(N=c())),p=0;p<=g;++p){if(!(p<g&&i(b=d[p],p,d))===P)if(P=!P)f=p,u.areaStart(),u.lineStart();else{for(u.lineEnd(),u.lineStart(),y=p-1;y>=f;--y)u.point(M[y],k[y]);u.lineEnd(),u.areaEnd()}P&&(M[p]=+e(b,p,d),k[p]=+t(b,p,d),u.point(n?+n(b,p,d):M[p],r?+r(b,p,d):k[p]))}if(N)return u=null,N+""||null}function m(){return Mr().defined(i).curve(s).context(a)}return l.x=function(d){return arguments.length?(e=typeof d=="function"?d:q(+d),n=null,l):e},l.x0=function(d){return arguments.length?(e=typeof d=="function"?d:q(+d),l):e},l.x1=function(d){return arguments.length?(n=d==null?null:typeof d=="function"?d:q(+d),l):n},l.y=function(d){return arguments.length?(t=typeof d=="function"?d:q(+d),r=null,l):t},l.y0=function(d){return arguments.length?(t=typeof d=="function"?d:q(+d),l):t},l.y1=function(d){return arguments.length?(r=d==null?null:typeof d=="function"?d:q(+d),l):r},l.lineX0=l.lineY0=function(){return m().x(e).y(t)},l.lineY1=function(){return m().x(e).y(r)},l.lineX1=function(){return m().x(n).y(t)},l.defined=function(d){return arguments.length?(i=typeof d=="function"?d:q(!!d),l):i},l.curve=function(d){return arguments.length?(s=d,a!=null&&(u=s(a)),l):s},l.context=function(d){return arguments.length?(d==null?a=u=null:u=s(a=d),l):a},l}h();h();function Fu(e,t){return t<e?-1:t>e?1:t>=e?0:NaN}h();function Ru(e){return e}function ya(){var e=Ru,t=Fu,r=null,n=q(0),i=q(Zt),a=q(0);function s(u){var c,l=(u=st(u)).length,m,d,p=0,f=new Array(l),y=new Array(l),g=+n.apply(this,arguments),b=Math.min(Zt,Math.max(-Zt,i.apply(this,arguments)-g)),P,N=Math.min(Math.abs(b)/l,a.apply(this,arguments)),M=N*(b<0?-1:1),k;for(c=0;c<l;++c)(k=y[f[c]=c]=+e(u[c],c,u))>0&&(p+=k);for(t!=null?f.sort(function(A,v){return t(y[A],y[v])}):r!=null&&f.sort(function(A,v){return r(u[A],u[v])}),c=0,d=p?(b-l*M)/p:0;c<l;++c,g=P)m=f[c],k=y[m],P=g+(k>0?k*d:0)+M,y[m]={data:u[m],index:c,value:k,startAngle:g,endAngle:P,padAngle:N};return y}return s.value=function(u){return arguments.length?(e=typeof u=="function"?u:q(+u),s):e},s.sortValues=function(u){return arguments.length?(t=u,r=null,s):t},s.sort=function(u){return arguments.length?(r=u,t=null,s):r},s.startAngle=function(u){return arguments.length?(n=typeof u=="function"?u:q(+u),s):n},s.endAngle=function(u){return arguments.length?(i=typeof u=="function"?u:q(+u),s):i},s.padAngle=function(u){return arguments.length?(a=typeof u=="function"?u:q(+u),s):a},s}h();function Bu(e){return e<0?-1:1}function Eu(e,t,r){var n=e._x1-e._x0,i=t-e._x1,a=(e._y1-e._y0)/(n||i<0&&-0),s=(r-e._y1)/(i||n<0&&-0),u=(a*i+s*n)/(n+i);return(Bu(a)+Bu(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(u))||0}function Uu(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function xa(e,t,r){var n=e._x0,i=e._y0,a=e._x1,s=e._y1,u=(a-n)/3;e._context.bezierCurveTo(n+u,i+u*t,a-u,s-u*r,a,s)}function wn(e){this._context=e}wn.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:xa(this,this._t0,Uu(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,xa(this,Uu(this,r=Eu(this,e,t)),r);break;default:xa(this,this._t0,r=Eu(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function xf(e){this._context=new _u(e)}(xf.prototype=Object.create(wn.prototype)).point=function(e,t){wn.prototype.point.call(this,t,e)};function _u(e){this._context=e}_u.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,n,i,a){this._context.bezierCurveTo(t,e,n,r,a,i)}};function va(e){return new wn(e)}h();function Iu(e,t){this._context=e,this._t=t}Iu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&this._point===2&&this._context.lineTo(this._x,this._y),(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t}};function wa(e){return new Iu(e,1)}h();h();function Sa(e,t){if((s=e.length)>1)for(var r=1,n,i,a=e[t[0]],s,u=a.length;r<s;++r)for(i=a,a=e[t[r]],n=0;n<u;++n)a[n][1]+=a[n][0]=isNaN(i[n][1])?i[n][0]:i[n][1]}h();function ka(e){for(var t=e.length,r=new Array(t);--t>=0;)r[t]=t;return r}function vf(e,t){return e[t]}function wf(e){let t=[];return t.key=e,t}function Ta(){var e=q([]),t=ka,r=Sa,n=vf;function i(a){var s=Array.from(e.apply(this,arguments),wf),u,c=s.length,l=-1,m;for(let d of a)for(u=0,++l;u<c;++u)(s[u][l]=[0,+n(d,s[u].key,l,a)]).data=d;for(u=0,m=st(t(s));u<c;++u)s[m[u]].index=u;return r(s,m),s}return i.keys=function(a){return arguments.length?(e=typeof a=="function"?a:q(Array.from(a)),i):e},i.value=function(a){return arguments.length?(n=typeof a=="function"?a:q(+a),i):n},i.order=function(a){return arguments.length?(t=a==null?ka:typeof a=="function"?a:q(Array.from(a)),i):t},i.offset=function(a){return arguments.length?(r=a??Sa,i):r},i}h();function Pa(e,t){if((c=e.length)>0)for(var r,n=0,i,a,s,u,c,l=e[t[0]].length;n<l;++n)for(s=u=0,r=0;r<c;++r)(a=(i=e[t[r]][n])[1]-i[0])>0?(i[0]=s,i[1]=s+=a):a<0?(i[1]=u,i[0]=u+=a):(i[0]=0,i[1]=a)}var ju=["#6366f1","#22d3ee","#f59e0b","#ec4899","#10b981","#8b5cf6","#f97316","#3b82f6"],Sf=e=>typeof e=="object"&&e!==null&&"open"in e&&"close"in e,kf=e=>typeof e=="object"&&e!==null&&"label"in e&&"value"in e;function Tf(e){return e==="linear"?At:e==="step"?wa:va}function Ma(e,t){let r=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(e.trim());if(!r)return e;let n=r[1];n.length===3&&(n=[...n].map(a=>a+a).join(""));let i=parseInt(n,16);return`rgba(${i>>16&255}, ${i>>8&255}, ${i&255}, ${t})`}function Gu(e){if(!e?.format)return null;if(typeof e.format=="function")return e.format;let t=Et(e.format);return r=>typeof r=="number"?t(r):String(r)}function Q(e){return Math.round(e*100)/100}function Jt(e,t=0,r=e.duration){return ue.create().fromTo("opacity",0,1,{start:e.start+t,end:e.start+t+Math.max(1,r),ease:"power2.out"})}function Vu(e,t,r){let n=t.id??J("chart"),i=e.width??(typeof t.width=="number"?t.width:960),a=e.height??(typeof t.height=="number"?t.height:540),s=e.type??"line",u=e.fontSize??18,c=e.fontFamily??r,l=e.textColor??"#94a3b8",m=e.textColor??"#e2e8f0",d=e.gridColor??"rgba(148, 163, 184, 0.18)",p=e.colors?.length?e.colors:ju,f=e.cornerRadius??4,y=e.animate===!1?void 0:e.animate??{},g={enabled:y!==void 0,start:y?.start??0,duration:y?.duration??30,stagger:y?.stagger??-1,ease:y?.ease??"power3.out"},b=[],P=(w,S,W,H={},_="")=>{let I=F.text(w,{id:`${n}-label-${_||b.length}`,position:"absolute",x:Q(S.x),y:Q(S.y),width:Q(S.width),height:Q(S.height),fontFamily:c,fontSize:u,fontWeight:H.weight??500,fill:H.color??l,align:W,verticalAlign:"middle"});g.enabled&&I.animate(Jt(g,H.delay??0)),b.push(I)},N=Math.ceil(u*1.4);s==="pie"||s==="donut"?M():A();for(let w of b)Wu(w);return F.box({background:e.background??"transparent",...t,id:n,width:i,height:a,children:b});function M(){let w=k(),S=w.reduce((X,j)=>X+Math.max(0,j.value),0),W=e.legend??!0,H=R({top:16,right:W?Z(w.map(X=>X.label)):16,bottom:16,left:16}),_=G(H),I=Math.max(1,Math.min(_.width,_.height)/2),re=I*(e.innerRadius??(s==="donut"?.6:0)),le=_.x+_.width/2,ye=_.y+_.height/2,de=4,L=ya().sort(null).value(X=>Math.max(0,X.value)).padAngle(w.length>1?.012:0)(w),B=yn().innerRadius(re).outerRadius(I).cornerRadius(Math.min(f,(I-re)/2)),$=v(L.length);L.forEach((X,j)=>{let K=B(X);if(!K)return;let O=w[j].color??p[j%p.length],D=F.shape("path",{id:`${n}-slice-${j}`,position:"absolute",x:Q(le-I-de),y:Q(ye-I-de),width:Q(2*(I+de)),height:Q(2*(I+de)),d:Pf(K,I+de,I+de),fillColor:O,anchorX:.5,anchorY:.5});if(g.enabled){let V=g.start+j*$;D.animate(ue.create().fromTo("opacity",0,1,{start:V,end:V+g.duration*.5}).fromTo("scale",.85,1,{start:V,end:V+g.duration,ease:g.ease}))}if(b.push(D),e.valueLabels&&S>0&&X.value>0){let[V,C]=yn().innerRadius(re||I*.55).outerRadius(I).centroid(X),xe=`${Math.round(X.value/S*100)}%`;P(xe,{x:le+V-60,y:ye+C-N/2,width:120,height:N},"center",{delay:j*$+g.duration*.5,color:"#ffffff",weight:700},`value-${j}`)}}),W&&te(w.map((X,j)=>({name:X.label,color:X.color??p[j%p.length]})),{x:_.x+_.width+24,y:_.y,height:_.height})}function k(){return(e.data??e.series?.[0]?.data??[]).map((S,W)=>{if(kf(S))return S;let H=typeof S=="number"?S:Array.isArray(S)?Number(S[1]):Number(S.y);return{label:e.categories?.[W]??(Array.isArray(S)?String(S[0]):typeof S=="object"&&S?String(S.x):`${W+1}`),value:H}})}function A(){let w=e.series?.length?[...e.series]:e.data?[{data:e.data}]:[];if(w.length===0)return;let S=T=>T.type??s??"line",W=(T,U)=>T.color??p[U%p.length],H=w.map(T=>T.data.map((U,ee)=>Sf(U)?{x:U.x,y:U.close}:typeof U=="number"?{x:e.categories?.[ee]??ee,y:U}:Array.isArray(U)?{x:U[0],y:Number(U[1])}:{x:U.x,y:Number(U.y)})),_=w.some(T=>S(T)==="bar"||S(T)==="candlestick"),I=H.flat().map(T=>T.x),re=_||I.some(T=>typeof T=="string")?"band":I.some(T=>T instanceof Date)?"time":"linear",le=T=>S(T)==="bar"||S(T)==="area",ye=!!e.stacked,de=re==="band"?[...new Set(I.map(String))]:[],L=new Map;if(ye){let T=w.map((pe,ke)=>ke).filter(pe=>le(w[pe])),U=de.length?de:[...new Set(I.map(pe=>+pe))].sort((pe,ke)=>pe-ke).map(String),ee=U.map(pe=>{let ke={};for(let Ne of T){let Ae=H[Ne].find(ve=>String(re==="band"?ve.x:+ve.x)===pe);ke[Ne]=Ae?.y??0}return ke});Ta().keys(T.map(String)).offset(Pa)(ee).forEach(pe=>{let ke=Number(pe.key);L.set(ke,H[ke].map(Ne=>{let Ae=U.indexOf(String(re==="band"?Ne.x:+Ne.x));return[pe[Ae][0],pe[Ae][1]]}))})}let B=[0];w.forEach((T,U)=>{let ee=L.get(U);if(S(T)==="candlestick")for(let me of T.data)B.push(me.high,me.low);else if(ee)for(let[me,pe]of ee)B.push(me,pe);else for(let me of H[U])B.push(me.y)}),w.every(T=>S(T)==="candlestick"||S(T)==="scatter"||S(T)==="line")&&B.shift();let $=e.yAxis??{},X=e.xAxis??{},j=$.ticks??5,K=$.min??Math.min(...B),O=$.max??Math.max(...B);(!Number.isFinite(K)||!Number.isFinite(O))&&([K,O]=[0,1]),K===O&&([K,O]=[K-1,O+1]);let D=$t().domain([K,O]);($.min===void 0||$.max===void 0)&&D.nice(j);let V=Gu($)??(T=>D.tickFormat(j)(T)),C=D.ticks(j),xe=w.map((T,U)=>({name:T.name??`Series ${U+1}`,color:W(T,U)})),oe=e.legend??w.length>1,Me=$.show!==!1,Ce=X.show!==!1,Ve=Me?Math.max(...C.map(T=>V(T).length))*u*.7+20:0,Lr=R({top:(oe?N+20:0)+Math.ceil(N/2),right:20,bottom:Ce?N+14:12,left:Math.max(16,Math.ceil(Ve))}),ne=G(Lr),Ua=N+6,_a=e.valueLabels?w.flatMap((T,U)=>S(T)==="bar"?H[U].map(ee=>ee.y):[]):[],bl=_a.some(T=>T>0)?Ua:0,yl=_a.some(T=>T<0)?Ua:0;D.range([ne.height-yl,bl]);let We;if(re==="band")We=fr().domain(de).range([0,ne.width]).paddingInner(_?.28:0).paddingOuter(_?.14:.5);else if(re==="time"){let T=I.map(U=>+new Date(U));We=hn().domain([Math.min(...T),Math.max(...T)]).range([0,ne.width])}else{let T=I.map(Number);We=$t().domain([X.min??Math.min(...T),X.max??Math.max(...T)]).range([0,ne.width])}let Ia=T=>{if(re==="band"){let U=We;return(U(String(T))??0)+U.bandwidth()/2}return We(re==="time"?new Date(T):Number(T))},Ga=0;$.grid!==!1&&C.forEach((T,U)=>{let ee=F.box({id:`${n}-ygrid-${U}`,position:"absolute",x:ne.x,y:Q(ne.y+D(T)-.5),width:ne.width,height:1,background:d});g.enabled&&ee.animate(Jt(g,Ga,g.duration/2)),b.push(ee)}),Me&&C.forEach((T,U)=>{P(V(T),{x:0,y:ne.y+D(T)-N/2,width:ne.x-12,height:N},"end",{},`y-${U}`)});let Qt=[],Fr=Gu(X);if(re==="band"){let T=We,U=Math.max(1,Math.ceil(de.length/Math.max(1,Math.floor(ne.width/(u*4)))));de.forEach((ee,me)=>{me%U===0&&Qt.push({pos:(T(ee)??0)+T.bandwidth()/2,text:Fr?Fr(ee):ee})})}else{let T=We,U=X.ticks??Math.max(2,Math.floor(ne.width/(u*6))),ee=T.tickFormat(U);for(let me of T.ticks(U))Qt.push({pos:T(me),text:Fr?Fr(re==="time"?new Date(me):me):ee(me)})}if(X.grid&&Qt.forEach((T,U)=>{let ee=F.box({id:`${n}-xgrid-${U}`,position:"absolute",x:Q(ne.x+T.pos-.5),y:ne.y,width:1,height:ne.height,background:d});g.enabled&&ee.animate(Jt(g,Ga,g.duration/2)),b.push(ee)}),Ce){let T=Math.max(u*3,ne.width/Math.max(1,Qt.length));Qt.forEach((U,ee)=>{P(U.text,{x:ne.x+U.pos-T/2,y:ne.y+ne.height+10,width:T,height:N},"center",{},`x-${ee}`)})}let[xl,vl]=D.domain();if(xl<=0&&vl>=0&&_){let T=F.box({id:`${n}-zero`,position:"absolute",x:ne.x,y:Q(ne.y+D(0)-1),width:ne.width,height:2,background:Ma("#94a3b8",.45)});g.enabled&&T.animate(Jt(g,0,g.duration/2)),b.push(T)}let Rr=w.map((T,U)=>U).filter(T=>S(w[T])==="bar"),wl=[...Rr,...w.map((T,U)=>U).filter(T=>S(w[T])==="candlestick"),...w.map((T,U)=>U).filter(T=>S(w[T])==="area"),...w.map((T,U)=>U).filter(T=>S(w[T])==="line"),...w.map((T,U)=>U).filter(T=>S(w[T])==="scatter")],Ke=re==="band"?We:null,za=Ke?v(de.length):0,$a=T=>Ke?de.indexOf(String(T)):0;wl.forEach((T,U)=>{let ee=w[T],me=W(ee,T),pe=S(ee),ke=H[T],Ne=L.get(T);if(pe==="bar"&&Ke){let Ae=ye?1:Rr.length,ve=ye?0:Rr.indexOf(T),Oe=Ke.bandwidth()/Ae,fe=Ae>1?Math.min(4,Oe*.12):0;ke.forEach((De,Ie)=>{let[Je,Te]=Ne?Ne[Ie]:[0,De.y],ge=ne.y+D(Math.max(Je,Te)),Br=ne.y+D(Math.min(Je,Te)),Le=Math.max(0,Br-ge),er=ne.x+(Ke(String(De.x))??0)+ve*Oe+fe/2,ut=De.y>=0?"up":"down",Er=F.box({id:`${n}-bar-${T}-${Ie}`,position:"absolute",x:Q(er),y:Q(ge),width:Q(Math.max(1,Oe-fe)),height:Q(Le),background:me,borderRadius:Math.min(f,(Oe-fe)/2,Le/2)}),Va=$a(De.x)*za+(ye?Rr.indexOf(T)*g.duration*.6:0);if(g.enabled){let tr=g.start+Va,Ur=tr+g.duration,Wa=ue.create().fromTo("height",0,Q(Le),{start:tr,end:Ur,ease:g.ease});ut==="up"&&Wa.fromTo("y",Q(ge+Le),Q(ge),{start:tr,end:Ur,ease:g.ease}),Er.animate(Wa)}if(b.push(Er),e.valueLabels){let tr=V(De.y),Ur=ut==="up"?ge-N-4:ge+Le+4;P(tr,{x:er-30,y:Ur,width:Oe-fe+60,height:N},"center",{delay:Va+g.duration*.6,color:m,weight:600},`value-${T}-${Ie}`)}});return}if(pe==="candlestick"&&Ke){let Ae=e.upColor??"#22c55e",ve=e.downColor??"#ef4444",Oe=Ke.bandwidth();ee.data.forEach((fe,De)=>{let Ie=fe.close>=fe.open?Ae:ve,Je=ne.x+(Ke(String(fe.x))??0)+Oe/2,Te=$a(fe.x)*za,ge=[["wick",{x:Je-Math.max(1,Oe*.06),y:ne.y+D(fe.high),width:Math.max(2,Oe*.12),height:Math.max(1,D(fe.low)-D(fe.high))}],["body",{x:Je-Oe/2,y:ne.y+D(Math.max(fe.open,fe.close)),width:Oe,height:Math.max(2,Math.abs(D(fe.open)-D(fe.close)))}]];for(let[Br,Le]of ge){let er=F.box({id:`${n}-candle-${T}-${De}-${Br}`,position:"absolute",x:Q(Le.x),y:Q(Le.y),width:Q(Le.width),height:Q(Le.height),background:Ie,borderRadius:Br==="body"?Math.min(f/2,Le.width/2):0});if(g.enabled){let ut=g.start+Te,Er=Le.y+Le.height/2;er.animate(ue.create().fromTo("height",0,Q(Le.height),{start:ut,end:ut+g.duration,ease:g.ease}).fromTo("y",Q(Er),Q(Le.y),{start:ut,end:ut+g.duration,ease:g.ease}))}b.push(er)}});return}if(pe==="line"||pe==="area"){let Ae=ee.strokeWidth??3,ve=Math.ceil(Ae*2+(ee.pointRadius??0)+2),Oe=ke.map((Te,ge)=>({x:Ia(Te.x)+ve,top:D(Ne?Ne[ge][1]:Te.y)+ve,base:D(Ne?Ne[ge][0]:Math.max(D.domain()[0],Math.min(0,D.domain()[1])))+ve})),fe=Tf(ee.curve),De={x:ne.x-ve,y:ne.y-ve,width:ne.width+2*ve,height:ne.height+2*ve},Ie=U*(g.duration/3);if(pe==="area"){let Te=ba().x(ge=>ge.x).y0(ge=>ge.base).y1(ge=>ge.top).curve(fe)(Oe);if(Te){let ge=F.shape("path",{id:`${n}-area-${T}`,position:"absolute",...zu(De),d:$u(Te),fillType:"linear",fillColor:Ma(me,.45),gradientEndColor:Ma(me,.02),gradientAngle:90});g.enabled&&ge.animate(Jt(g,Ie+g.duration*.4,g.duration)),b.push(ge)}}let Je=Mr().x(Te=>Te.x).y(Te=>Te.top).curve(fe)(Oe);if(Je&&Ae>0){let Te=F.shape("path",{id:`${n}-line-${T}`,position:"absolute",...zu(De),d:$u(Je),fillType:"none",strokeColor:me,strokeWidth:Ae,strokeLineCap:"round",strokeLineJoin:"round"});g.enabled&&Te.animate(ue.create().fromTo("trimEnd",0,1,{start:g.start+Ie,end:g.start+Ie+g.duration*1.5,ease:"power2.inOut"})),b.push(Te)}(ee.pointRadius??0)>0&&ja(T,ke,me,ee.pointRadius??0,Ie+g.duration*.5,Ne);return}pe==="scatter"&&ja(T,ke,me,ee.pointRadius??6,U*(g.duration/3),Ne)}),oe&&ae(xe);function ja(T,U,ee,me,pe,ke){let Ne=v(U.length);U.forEach((Ae,ve)=>{let Oe=D(ke?ke[ve][1]:Ae.y),fe=F.shape("circle",{id:`${n}-point-${T}-${ve}`,position:"absolute",x:Q(ne.x+Ia(Ae.x)-me),y:Q(ne.y+Oe-me),width:Q(me*2),height:Q(me*2),fillColor:ee,anchorX:.5,anchorY:.5});if(g.enabled){let De=g.start+pe+ve*Ne;fe.animate(ue.create().fromTo("scale",0,1,{start:De,end:De+g.duration*.6,ease:"back.out(2)"}).fromTo("opacity",0,1,{start:De,end:De+6}))}b.push(fe)})}}function v(w){return!g.enabled||w<=1?0:g.stagger>=0?g.stagger:Math.min(4,g.duration/w)}function R(w){let S=e.padding;return typeof S=="number"?{top:S,right:S,bottom:S,left:S}:{top:S?.top??w.top,right:S?.right??w.right,bottom:S?.bottom??w.bottom,left:S?.left??w.left}}function G(w){return{x:w.left,y:w.top,width:Math.max(1,i-w.left-w.right),height:Math.max(1,a-w.top-w.bottom)}}function Z(w){let S=Math.max(0,...w.map(W=>W.length));return Math.min(i*.4,S*u*.6+u+48)}function te(w,S){let W=N+8,H=S.y+Math.max(0,(S.height-w.length*W)/2);w.forEach((_,I)=>{E(_,S.x,H+I*W,I)})}function ae(w){let S=w.map(_=>_.name.length*u*.6+u+28),W=S.reduce((_,I)=>_+I,0),H=Math.max(0,i-W-20);w.forEach((_,I)=>{E(_,H,4,I),H+=S[I]})}function E(w,S,W,H){let _=Math.round(u*.7),I=F.box({id:`${n}-legend-swatch-${H}`,position:"absolute",x:Q(S),y:Q(W+(N-_)/2),width:_,height:_,borderRadius:Math.round(_/4),background:w.color});g.enabled&&I.animate(Jt(g,0,g.duration/2)),b.push(I),P(w.name,{x:S+_+8,y:W,width:w.name.length*u*.6+12,height:N},"start",{color:e.textColor??"#cbd5e1"},`legend-${H}`)}}function Wu(e){for(let t of e.animation?.tracks??[])for(let r of t.keyframes??[])r.frame=Math.round(r.frame);for(let t of e.children??[])Wu(t)}function zu(e){return{x:Q(e.x),y:Q(e.y),width:Q(e.width),height:Q(e.height)}}function $u(e){return e.replace(/-?\d*\.\d{3,}(?:e-?\d+)?/gi,t=>String(Q(Number(t))))}function Pf(e,t,r){let n=[],i=/([MLAZ])([^MLAZ]*)/gi;for(let[,a,s]of e.matchAll(i)){let u=(s.match(/-?\d*\.?\d+(?:e-?\d+)?/gi)??[]).map(Number);if(a.toUpperCase()==="A")for(let c=0;c+6<u.length;c+=7)u[c+5]+=t,u[c+6]+=r;else if(a.toUpperCase()!=="Z")for(let c=0;c+1<u.length;c+=2)u[c]+=t,u[c+1]+=r;n.push(a+u.map(Q).join(","))}return n.join("")}h();var be=rr(Yu(),1);h();var kn=rr(pc(),1);function Ca(e,t=24,r){let n=e.fps??t;if(n<=0)throw new Error(`[FrameGrid] Invalid fps: ${n}. Must be > 0.`);let i=[];if(Array.isArray(e.frames)&&e.frames.length>0)for(let s of e.frames){if(typeof s!="number"||s<0||!Number.isFinite(s))throw new Error(`[FrameGrid] Invalid frame index in frames list: ${s}`);i.push({frame:Math.round(s),timeMs:Math.round(s/n*1e3)})}else if(Array.isArray(e.timesMs)&&e.timesMs.length>0)for(let s of e.timesMs){if(typeof s!="number"||s<0||!Number.isFinite(s))throw new Error(`[FrameGrid] Invalid timestamp in timesMs list: ${s}`);i.push({frame:Math.round(s/1e3*n),timeMs:Math.round(s)})}else if(e.startMs!==void 0||e.endMs!==void 0||e.stepMs!==void 0){let s=e.startMs??0,u=e.endMs??r??s+1e3,c=e.stepMs??Math.round(5/n*1e3);if(s<0||u<s)throw new Error(`[FrameGrid] Invalid millisecond range: startMs=${s}, endMs=${u}. startMs must be <= endMs.`);if(c<=0)throw new Error(`[FrameGrid] Invalid stepMs: ${c}. Must be > 0.`);for(let l=s;l<=u;l+=c)i.push({frame:Math.round(l/1e3*n),timeMs:Math.round(l)})}else{let s=e.startFrame??0,u=e.endFrame??(r?Math.min(s+30,Math.floor(r/1e3*n)):s+30),c=e.stepFrames??5;if(s<0||u<s)throw new Error(`[FrameGrid] Invalid frame range: startFrame=${s}, endFrame=${u}. startFrame must be <= endFrame.`);if(c<=0)throw new Error(`[FrameGrid] Invalid stepFrames: ${c}. Must be > 0.`);for(let l=s;l<=u;l+=c)i.push({frame:Math.round(l),timeMs:Math.round(l/n*1e3)})}let a=Math.min(e.maxFrames??64,120);if(i.length>a)throw new Error(`[FrameGrid] Requested ${i.length} frames exceeds the safety threshold of ${a}. Increase stepFrames/stepMs or narrow the start/end range to prevent oversized images.`);if(i.length===0)throw new Error("[FrameGrid] Zero frames were resolved for sampling.");return{samples:i,fps:n}}function Na(e,t,r){let n=r.gap??12,i=r.padding??16,s=r.showHeader??!0?54:0,u=r.maxGridWidth??4096,c=r.maxGridHeight??4096,l=r.columns;(!l||l<=0)&&(e<=4?l=e:e<=9?l=3:e<=16?l=4:e<=25?l=5:l=6),l=Math.min(l,e);let m=Math.ceil(e/l),d=Math.max(120,Math.min(r.cellWidth??320,960)),p=r.cellHeight??Math.round(d/(t>0?t:16/9)),f=l*d+(l-1)*n+i*2,y=m*p+(m-1)*n+i*2+s;if(f>u||y>c){let g=Math.min((u-(l-1)*n-i*2)/(l*d),(c-(m-1)*n-i*2-s)/(m*p));if(g<.25)throw new Error(`[FrameGrid] Cannot fit ${e} cells (${l}x${m}) into max dimensions [${u}x${c}]. Reduce cell count or decrease cellWidth.`);d=Math.max(100,Math.floor(d*g)),p=Math.round(d/(t>0?t:16/9)),f=l*d+(l-1)*n+i*2,y=m*p+(m-1)*n+i*2+s}return{columns:l,rows:m,cellWidth:d,cellHeight:p,totalWidth:f,totalHeight:y,headerHeight:s,gap:n,padding:i}}async function Cr(e,t={}){let r=e.fps??24,n=e.durationMs,{samples:i,fps:a}=Ca(t,r,n),s=e.width??1920,u=e.height??1080,c=s>0&&u>0?s/u:16/9,l=Na(i.length,c,t),m=t.renderer??new be.HeadlessMediaRenderer,d=[];for(let b of i){let P=await e.renderFrame({frame:b.frame,atMs:b.timeMs,fps:a,renderer:m});d.push(P)}let p=new kn.Canvas(l.totalWidth,l.totalHeight),f=p.getContext("2d");if(f.fillStyle=t.backgroundColor??"#090a0f",f.fillRect(0,0,l.totalWidth,l.totalHeight),t.showHeader!==!1&&l.headerHeight>0){let b=t.headerText??`FrameGrid Conformance Review | Frames ${i[0].frame}\u2013${i[i.length-1].frame} (Count: ${i.length})`,P=`${s}\xD7${u} @ ${a} FPS | Cell: ${l.cellWidth}\xD7${l.cellHeight}px | Step: ${t.stepFrames?`${t.stepFrames}f`:t.stepMs?`${t.stepMs}ms`:"Custom"}`;f.fillStyle="#f8fafc",f.font="bold 15px sans-serif",f.fillText(b,l.padding,l.padding+18),f.fillStyle="#94a3b8",f.font="12px sans-serif",f.fillText(P,l.padding,l.padding+36),f.strokeStyle="#1e2433",f.lineWidth=1,f.beginPath(),f.moveTo(l.padding,l.padding+46),f.lineTo(l.totalWidth-l.padding,l.padding+46),f.stroke()}let y=t.showLabels??!0;for(let b=0;b<i.length;b++){let P=i[b],N=b%l.columns,M=Math.floor(b/l.columns),k=l.padding+N*(l.cellWidth+l.gap),A=l.padding+l.headerHeight+M*(l.cellHeight+l.gap),v=await(0,kn.loadImage)(d[b]);if(f.drawImage(v,k,A,l.cellWidth,l.cellHeight),f.strokeStyle="#262b3d",f.lineWidth=1,f.strokeRect(k,A,l.cellWidth,l.cellHeight),y){let R=`F:${P.frame} \u2022 ${P.timeMs}ms`;f.font="bold 11px sans-serif";let Z=f.measureText(R).width+14,te=20,ae=k+6,E=A+6;f.fillStyle="#090a0fee",f.beginPath(),f.roundRect(ae,E,Z,te,4),f.fill(),f.strokeStyle="#6366f155",f.lineWidth=1,f.stroke(),f.fillStyle="#e2e8f0",f.fillText(R,ae+7,E+14)}}let g=await p.toBuffer("png");return t.outputPath&&await nr.writeFile(t.outputPath,g),g}h();var Mf=["material","shininess","roughness","specularIntensity","metallic","ambientIntensity","ior","transmission","dispersion","fresnelPower","envIntensity","emissive","emissiveIntensity","castShadow"];function Nr(e){let t=e,r={};for(let n of Mf)t[n]!==void 0&&(r[n]=t[n]);return r}function Cf(e){return e==="lit"||e==="unlit"||e==="toon"?e:void 0}function Aa(e,t,r){let n=Object.fromEntries(Object.entries({...t,color:r.color,material:Cf(r.material),shininess:r.shininess,roughness:r.roughness,metallic:r.metallic}).filter(([,i])=>i!==void 0));return F.model({id:r.id??J(e),modelData:no(n),primitive3d:n,is3D:!0,x:r.x??0,y:r.y??0,z:r.z??0,rotateX:r.rotateX??0,rotateY:r.rotateY??0,rotateZ:r.rotateZ??0,scale:r.scale??1,scaleX:r.scaleX??1,scaleY:r.scaleY??1,scaleZ:r.scaleZ??1,opacity:r.opacity??1,color:r.tint,material:r.material,shininess:r.shininess??32,roughness:r.roughness,specularIntensity:r.specularIntensity??.5,ambientIntensity:r.ambientIntensity??1,metallic:r.metallic,...Nr({emissive:r.emissive,emissiveIntensity:r.emissiveIntensity,castShadow:r.castShadow}),twoSided:!1,startFrame:r.startFrame,durationFrames:r.durationFrames})}function Tn(e,t){let r=t.faces??t.items??[];for(let[n,i]of Object.entries(t))Object.defineProperty(e,n,{value:i,enumerable:!1,configurable:!0});return Object.defineProperty(e,Symbol.iterator,{value:function*(){yield*r},enumerable:!1,configurable:!0}),e}function Nf(e){let t=e.scale??1,r=Math.max(Math.abs(t*(e.scaleX??1)),Math.abs(t*(e.scaleY??1)));return r>0?r:1}var Ot={cube(e){let t=e.size,[r,n,i]=typeof t=="number"?[t,t,t]:t,a=e.twoSided??!0,s={front:"#3b82f6",back:"#1d4ed8",left:"#2563eb",right:"#1e40af",top:"#60a5fa",bottom:"#172554"},u=(f,y,g,b,P,N)=>{if(y&&typeof y=="object"&&"kind"in y){let k=y;return k.position="absolute",k.is3D=!0,k.twoSided=a,k.material=k.material??e.material??"lit",k.shininess=k.shininess??e.shininess??32,k.specularIntensity=k.specularIntensity??e.specularIntensity??.5,e.roughness!==void 0&&k.roughness===void 0&&(k.roughness=e.roughness),e.metallic!==void 0&&k.metallic===void 0&&(k.metallic=e.metallic),e.ambientIntensity!==void 0&&k.ambientIntensity===void 0&&(k.ambientIntensity=e.ambientIntensity),Object.assign(k,N),k}let M=typeof y=="string"?{background:y}:y??{background:g};return F.box({id:`${e.id??"cube"}-${f}`,position:"absolute",width:b,height:P,is3D:!0,twoSided:a,material:M.material??e.material??"lit",shininess:M.shininess??e.shininess??32,specularIntensity:M.specularIntensity??e.specularIntensity??.5,roughness:M.roughness??e.roughness,metallic:M.metallic??e.metallic,ambientIntensity:M.ambientIntensity??e.ambientIntensity??1,...Nr({emissive:M.emissive??e.emissive,emissiveIntensity:M.emissiveIntensity??e.emissiveIntensity,castShadow:M.castShadow??e.castShadow}),background:M.background??g,borderRadius:M.borderRadius??0,borderWidth:M.borderWidth,borderColor:M.borderColor,opacity:M.opacity??1,children:M.children??[],...N})},c=r/2,l=n/2,m=i/2,d=[u("front",e.faces?.front,s.front,r,n,{x:0,y:0,z:-m,rotateX:0,rotateY:0,rotateZ:0}),u("back",e.faces?.back,s.back,r,n,{x:0,y:0,z:m,rotateX:0,rotateY:180,rotateZ:0}),u("left",e.faces?.left,s.left,i,n,{x:-c,y:0,z:0,rotateX:0,rotateY:90,rotateZ:0}),u("right",e.faces?.right,s.right,i,n,{x:c,y:0,z:0,rotateX:0,rotateY:-90,rotateZ:0}),u("top",e.faces?.top,s.top,r,i,{x:0,y:-l,z:0,rotateX:-90,rotateY:0,rotateZ:0}),u("bottom",e.faces?.bottom,s.bottom,r,i,{x:0,y:l,z:0,rotateX:90,rotateY:0,rotateZ:0})],p=F.box({id:e.id??J("cube"),position:"absolute",x:e.x??0,y:e.y??0,z:e.z??0,width:r,height:n,is3D:!0,transformStyle:"preserve-3d",rotateX:e.rotateX??0,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,opacity:e.opacity??1,background:"transparent",children:d});return Tn(p,{faces:d})},carousel(e){let{items:t,radius:r,faceInward:n=!1,twoSided:i=!0}=e,a=t.length,s=a>0?360/a:0,u=t.map((l,m)=>{let d=m*s,p=d*Math.PI/180,f=r*Math.sin(p),y=-r*Math.cos(p),g=n?180-d:-d,b=l;return b.position="absolute",b.is3D=!0,b.twoSided=i,b.x=f,b.y=0,b.z=y,b.rotateY=g,b}),c=F.box({id:e.id??J("carousel"),position:"absolute",x:e.x??0,y:e.y??0,z:e.z??0,width:e.itemWidth??200,height:e.itemHeight??200,is3D:!0,transformStyle:"preserve-3d",rotateX:e.rotateX??0,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,opacity:e.opacity??1,background:"transparent",children:u});return Tn(c,{items:u})},prism(e){let{sides:t,radius:r,height:n,twoSided:i=!0}=e,a=Math.max(3,t),s=2*r*Math.tan(Math.PI/a),u=360/a,c=[];for(let m=0;m<a;m++){let d=m*u,p=d*Math.PI/180,f=r*Math.sin(p),y=r*Math.cos(p),g=e.sideConfigs?.[m],b=typeof g=="string"?g:g?.background??`hsl(${m*360/a}, 70%, 50%)`;c.push(F.box({id:`${e.id??"prism"}-panel-${m}`,position:"absolute",width:s,height:n,is3D:!0,twoSided:i,x:f,y:0,z:y,rotateY:d,background:b}))}let l=F.box({id:e.id??J("prism"),position:"absolute",x:e.x??0,y:e.y??0,z:e.z??0,width:s,height:n,is3D:!0,transformStyle:"preserve-3d",rotateX:e.rotateX??0,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,opacity:e.opacity??1,background:"transparent",children:c});return Tn(l,{faces:c})},plane(e){return F.box({id:e.id??J("plane"),position:"absolute",width:e.width,height:e.height,x:e.x??0,y:e.y??0,z:e.z??0,is3D:!0,twoSided:e.twoSided??!0,rotateX:e.rotateX??0,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,background:e.background??"#3b82f6",borderRadius:e.borderRadius??0,opacity:e.opacity??1,...Nr(e),children:e.children??[]})},grid(e){let{width:t,height:r}=e,n=e.id??J("grid"),i=Math.max(1,Math.round(e.divisions??10)),a=e.lineWidth??2,s=e.color??"rgba(59, 130, 246, 0.5)",u=(p,f,y,g,b)=>F.box({id:`${n}-${p}`,position:"absolute",x:f,y,z:0,width:g,height:b,is3D:!0,twoSided:!0,material:"unlit",background:s}),c=4096,l=[],m=Math.ceil(r/c),d=Math.ceil(t/c);for(let p=0;p<=i;p++){let f=p/i-.5;for(let y=0;y<m;y++){let g=r/m,b=-r/2+g*(y+.5);l.push(u(`v${p}-${y}`,f*t,b,a,g))}for(let y=0;y<d;y++){let g=t/d,b=-t/2+g*(y+.5);l.push(u(`h${p}-${y}`,b,f*r,g,a))}}return F.box({id:n,position:"absolute",width:t,height:r,x:e.x??0,y:e.y??0,z:e.z??0,is3D:!0,transformStyle:"preserve-3d",rotateX:e.rotateX??90,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,background:"transparent",opacity:e.opacity??1,children:l})},text(e){return e.extrusionDepth&&e.extrusionDepth>0?Ot.extrudedText({...e,depth:e.extrusionDepth}):F.text(e.text,{id:e.id??J("text3d"),position:"absolute",x:e.x??0,y:e.y??0,z:e.z??0,is3D:!0,twoSided:e.twoSided??!0,rotateX:e.rotateX??0,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,fontSize:e.fontSize??48,fontFamily:e.fontFamily,fontWeight:e.fontWeight??"bold",fontStyle:e.fontStyle,fill:e.fill??"#ffffff",align:e.align??"center",direction:e.direction,verticalAlign:e.verticalAlign??"middle",letterSpacing:e.letterSpacing,lineHeight:e.lineHeight,material:e.material??"lit",shininess:e.shininess??64,roughness:e.roughness,specularIntensity:e.specularIntensity??.8,ambientIntensity:e.ambientIntensity??1,metallic:e.metallic,...Nr(e),opacity:e.opacity??1,background:e.background,borderRadius:e.borderRadius,padding:e.padding,stroke:e.stroke,strokeWidth:e.strokeWidth})},extrudedText(e){let{depth:t,text:r,fill:n="#ffffff",bevelColor:i}=e,a,s=(e.curveTolerance??.1)/Nf(e),u=(e.fontFamily?Lt.getParsed(e.fontFamily):null)??Lt.getParsed("Inter")??Lt.getParsed("Unbounded")??Lt.getFirstParsed();u&&(a=ro({text:r,font:u,fontSize:e.fontSize??48,depth:t,fill:n,bevelColor:i,curveSegments:e.curveSegments,curveTolerance:s,align:e.align,direction:e.direction,verticalAlign:e.verticalAlign,letterSpacing:e.letterSpacing,material:e.material==="lit"||e.material==="unlit"||e.material==="toon"?e.material:void 0,shininess:e.shininess,roughness:e.roughness,metallic:e.metallic}).modelData);let c=F.model({id:e.id??J("extruded-text"),modelData:a,is3D:!0,x:e.x??0,y:e.y??0,z:e.z??0,rotateX:e.rotateX??0,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,scale:e.scale??1,scaleX:e.scaleX??1,scaleY:e.scaleY??1,scaleZ:e.scaleZ??1,opacity:e.opacity??1,material:e.material,shininess:e.shininess??32,roughness:e.roughness,specularIntensity:e.specularIntensity??.8,ambientIntensity:e.ambientIntensity??1,metallic:e.metallic,...Nr(e),twoSided:e.twoSided??!0,text3dOptions:{...e,curveTolerance:s}});return Tn(c,{faces:[c],items:[c]})},roundedBox(e){return Aa("rounded-box",{type:"roundedBox",width:e.width,height:e.height,depth:e.depth,radius:e.radius,segments:e.segments,taper:e.taper},e)},sphere(e){return Aa("sphere",{type:"sphere",radius:e.radius,segments:e.segments},e)},cylinder(e){return Aa("cylinder",{type:"cylinder",radius:e.radius,radiusTop:e.radiusTop,radiusBottom:e.radiusBottom,height:e.height,segments:e.segments,openEnded:e.openEnded},e)},model(e={}){return F.model(e)},obj(e,t={}){return F.obj(e,t)},fbx(e,t={}){return F.fbx(e,t)},gltf(e,t={}){return F.gltf(e,t)},glb(e,t={}){return F.glb(e,t)},stl(e,t={}){return F.stl(e,t)},ply(e,t={}){return F.ply(e,t)},vox(e,t={}){return F.vox(e,t)},threeDS(e,t={}){return F.threeDS(e,t)},off(e,t={}){return F.off(e,t)}};h();var Oa=(e,t,r)=>{switch(e){case"left":return{dx:-t,dy:0};case"right":return{dx:t,dy:0};case"up":return{dx:0,dy:-r};default:return{dx:0,dy:r}}};function Xe(e,t,r){return{kind:e,frames:Math.max(0,Math.round(t)),build:r}}var Xu={cut:()=>Xe("cut",0,()=>({})),crossfade:(e=15,t="sine.inOut")=>Xe("crossfade",e,r=>({incoming:ue.keys("opacity",[[0,0],[r.frames,1,t]])})),fadeThrough:(e=20,t="sine.inOut")=>Xe("fadeThrough",e,r=>{let n=Math.max(1,Math.floor(r.frames/2));return{outgoing:ue.keys("opacity",[[r.outStart,1],[r.outStart+n,0,t]]),incoming:ue.keys("opacity",[[0,0],[n,0],[r.frames,1,t]])}}),push:(e="left",t=18,r="power3.inOut")=>Xe("push",t,n=>{let{dx:i,dy:a}=Oa(e,n.width,n.height),s=ue.create(),u=ue.create();return i!==0?(s.keys("x",[[n.outStart,n.outRest.x],[n.outStart+n.frames,n.outRest.x+i,r]]),u.keys("x",[[0,n.inRest.x-i],[n.frames,n.inRest.x,r]])):(s.keys("y",[[n.outStart,n.outRest.y],[n.outStart+n.frames,n.outRest.y+a,r]]),u.keys("y",[[0,n.inRest.y-a],[n.frames,n.inRest.y,r]])),{outgoing:s,incoming:u}}),slide:(e="left",t=18,r="power3.out")=>Xe("slide",t,n=>{let{dx:i,dy:a}=Oa(e,n.width,n.height),s=i!==0?"x":"y",u=i!==0?n.inRest.x:n.inRest.y;return{outgoing:ue.keys("opacity",[[n.outStart,1],[n.outStart+n.frames,.6,r]]),incoming:ue.keys(s,[[0,u-(i||a)],[n.frames,u,r]])}}),zoom:(e=18,t="power2.inOut")=>Xe("zoom",e,r=>({outgoing:ue.create().keys("scale",[[r.outStart,1],[r.outStart+r.frames,1.25,t]]).keys("opacity",[[r.outStart,1],[r.outStart+r.frames,0,t]]),incoming:ue.create().keys("scale",[[0,.85],[r.frames,1,t]]).keys("opacity",[[0,0],[r.frames,1,t]])})),whip:(e="left",t=10)=>{let r=Xu.push(e,t,"expo.inOut");return Xe("whip",t,n=>({...r.build(n),sceneProps:{motionBlurShutter:360}}))},wipe:(e="left",t=18,r="power2.inOut")=>Xe("wipe",t,n=>{let{dx:i,dy:a}=Oa(e,n.width,n.height),s=i!==0?"x":"y",u=i!==0?n.inRest.x:n.inRest.y;return{incomingMatte:F.box({id:J("wipe-matte"),position:"absolute",x:n.inRest.x,y:n.inRest.y,width:n.width,height:n.height,background:"#ffffff"}).animate(ue.keys(s,[[0,u-(i||a)],[n.frames,u,r]]))}}),iris:(e=20,t={})=>Xe("iris",e,r=>{let[n,i]=t.at??[.5,.5],a=r.inRest.x+n*r.width,s=r.inRest.y+i*r.height,u=Math.hypot(Math.max(n,1-n)*r.width,Math.max(i,1-i)*r.height);return{incomingMatte:F.shape("circle",{id:J("iris-matte"),position:"absolute",x:a-u,y:s-u,width:u*2,height:u*2,fillColor:"#ffffff"}).animate(ue.keys("scale",[[0,0],[r.frames,1,t.ease??"power2.inOut"]]))}})};function Pn(e,t,r){let n=e[t];return typeof n=="number"?n:r}function qu(e,t={}){let r=[],n=[],i=0;e.forEach((s,u)=>{let c=u===0?void 0:s.transition,l=Math.min(c?.frames??0,e[u-1]?.duration??0),m=Math.max(0,i-l),d=Math.max(1,Math.round(s.duration));n.push(m);let p=s.scene;(p.position===void 0||p.position==="relative")&&(p.position="absolute",p.x??=0,p.y??=0),p.startFrame=m,p.durationFrames=d,r.push(p),i=m+d}),e.forEach((s,u)=>{if(u===0||!s.transition||s.transition.frames===0)return;let c=r[u-1],l=r[u],m=Math.min(s.transition.frames,e[u-1].duration),d=t.width??Pn(l,"width",1920),p=t.height??Pn(l,"height",1080),f=s.transition.build({width:d,height:p,frames:m,outStart:e[u-1].duration-m,outRest:{x:typeof c.x=="number"?c.x:0,y:typeof c.y=="number"?c.y:0},inRest:{x:typeof l.x=="number"?l.x:0,y:typeof l.y=="number"?l.y:0}}),y=(g,b)=>{if(!b)return;let P=g.animation?.tracks??[];g.animation=ue.merge({tracks:P},b).toSpec()};y(c,f.outgoing),y(l,f.incoming),f.sceneProps&&(Object.assign(c,f.sceneProps),Object.assign(l,f.sceneProps)),f.incomingMatte&&(l.matte={node:f.incomingMatte,mode:"alpha"})});let a=F.box({id:t.id??J("sequence"),position:"absolute",x:0,y:0,width:t.width??Pn(r[0]??{},"width",1920),height:t.height??Pn(r[0]??{},"height",1080),startFrame:t.startFrame??0,durationFrames:Math.max(1,i),children:r});return Object.defineProperty(a,"totalFrames",{value:i,enumerable:!1}),Object.defineProperty(a,"sceneStarts",{value:n,enumerable:!1}),a}h();var Af={studio:{environment:"studio",envIntensity:1,key:{dir:[-.55,-1,-.7],color:"#fff6ec",intensity:1.1},rim:{dir:[.9,-.5,.9],color:"#dbe8ff",intensity:.9}},soft:{environment:"soft",envIntensity:1,key:{dir:[-.4,-1,-.8],color:"#ffffff",intensity:1}},sunset:{environment:"sunset",envIntensity:.9,key:{dir:[-1,-.35,-.3],color:"#ffb27a",intensity:2.2},fill:{dir:[.8,-.6,-.4],color:"#7f9cff",intensity:.35}},dramatic:{environment:"night",envIntensity:.8,key:{dir:[-.8,-1,-.35],color:"#ffffff",intensity:2.4},rim:{dir:[.7,-.4,1],color:"#8fb4ff",intensity:1.8}}};function Of([e,t,r],n){let i=n*Math.PI/180,a=Math.cos(i),s=Math.sin(i);return[a*e+s*r,t,-s*e+a*r]}function Zu(e,t,r,n){let[i,a,s]=Of(e,n),u=Math.hypot(i,a,s)||1;return{x:t[0]+i/u*r,y:t[1]+a/u*r,z:t[2]+s/u*r,targetX:t[0],targetY:t[1],targetZ:t[2]}}function Mn(e,t){let r=Af[e],n=t.target??[960,540,0],i=t.distance??1600,a=t.rotation??0,s=t.intensity??1,u=t.id??J(`lighting-${e}`),c=[qe.environment(r.environment,{id:`${u}-environment`,intensity:r.envIntensity*s,rotation:a,exposure:t.exposure,toneMapping:t.toneMapping,fog:t.fog,bloom:t.bloom}),qe.directional({id:`${u}-key`,color:r.key.color,intensity:r.key.intensity*s,...Zu(r.key.dir,n,i,a),castShadow:t.shadows??!0,shadowSoftness:t.shadowSoftness??3})];for(let[l,m]of[["rim",r.rim],["fill",r.fill]])m&&c.push(qe.directional({id:`${u}-${l}`,color:m.color,intensity:m.intensity*s,...Zu(m.dir,n,i,a)}));return c}var Df={studio:(e={})=>Mn("studio",e),soft:(e={})=>Mn("soft",e),sunset:(e={})=>Mn("sunset",e),dramatic:(e={})=>Mn("dramatic",e)};h();var ml=rr(vc(),1),Dn=rr(Uc(),1);var Ba=rr(Ju(),1);h();var Ar=z.dirname(_r(import.meta.url)),Qu=["import","meta","url"].join("."),Lf=En(import.meta.url),Or="/@framefields/engine",tl={framefields:"index.ts","framefields/effects":"effects/index.ts","framefields/audio":"audio/index.ts","framefields/signals":"signals/index.ts","framefields/fonts":"fonts/index.ts"},Da={path:"path","path/posix":"path",url:"url",os:"os",fs:"fs","fs/promises":"fs-promises",module:"module"},el=new Set(["sharp","skia-canvas","node-av","onnxruntime-node","@resvg/resvg-js","@napi-rs/webcodecs","@mediabunny/server","@mediabunny/mp3-encoder","webgpu","pino","pino-pretty","dotenv","esbuild","@framefields/renderer","framefields/renderer","framefields/preview"]),Ff=`
|
|
705
|
+
`;var wn=class{constructor(e){this.device=e;let r=e.createShaderModule({label:"segmentation.wgsl",code:Fs});this.computePipeline=e.createComputePipeline({label:"SegmentationComputePipeline",layout:"auto",compute:{module:r,entryPoint:"computeSegmentation"}}),this.uniformBuffer=e.createBuffer({size:16,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"segmentation_uniform_buffer"})}device;computePipeline;uniformBuffer;cachedOutputTexture;execute(e,r={}){let n=e.width,i=e.height,o=r.threshold??.5,a=r.feather??.05,s=new ArrayBuffer(16),l=new Float32Array(s),c=new Uint32Array(s);l[0]=o,l[1]=a,c[2]=n,c[3]=i,this.device.queue.writeBuffer(this.uniformBuffer,0,s),(!this.cachedOutputTexture||this.cachedOutputTexture.width!==n||this.cachedOutputTexture.height!==i)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({label:"segmentation_output_texture",size:[n,i],format:"rgba8unorm",usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}));let m=this.device.createCommandEncoder({label:"segmentation_command_encoder"}),d=this.device.createBindGroup({label:"segmentation_bind_group",layout:this.computePipeline.getBindGroupLayout(0),entries:[{binding:0,resource:e.createView({label:"segmentation_input_view"})},{binding:1,resource:this.cachedOutputTexture.createView({label:"segmentation_output_view"})},{binding:2,resource:{buffer:this.uniformBuffer}}]}),p=m.beginComputePass({label:"segmentation_compute_pass"});return p.setPipeline(this.computePipeline),p.setBindGroup(0,d),p.dispatchWorkgroups(Math.ceil(n/16),Math.ceil(i/16),1),p.end(),this.device.queue.submit([m.finish()]),this.cachedOutputTexture}destroy(){this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=void 0,this.uniformBuffer.destroy()}};var Wt=class t{constructor(e){this.source=e;this.id=`tensor-${Math.random().toString(36).slice(2,9)}`}source;id;cannyOptions;depthNormalsOptions;poseSkeletonOptions;faceLandmarksOptions;segmentationOptions;opticalFlowOptions;deflickerOptions;multiplexer=new Mr;cannyPipeline;depthNormalsPipeline;posePipeline;facePipeline;segmentationPipeline;opticalFlowPipeline;deflickerPipeline;prevInputTexture;static from(e){return new t(e)}canny(e={}){return this.cannyOptions=e,this}depthNormals(e={}){return this.depthNormalsOptions=e,this}poseSkeleton(e={}){return this.poseSkeletonOptions=e,this}pose(e,r={}){return this.poseSkeletonOptions={...r,landmarks:e},this}faceLandmarks(e={}){return this.faceLandmarksOptions=e,this}face(e,r={}){return this.faceLandmarksOptions={...r,landmarks:e},this}segmentation(e={}){return this.segmentationOptions=e,this}opticalFlow(e={}){return this.opticalFlowOptions=e,this}deflicker(e={}){return this.deflickerOptions=e,this}getMultiplexer(){return this.multiplexer}async execute(e,r){let n=r;if(!n&&typeof this.source?.createView=="function"&&(n=this.source),!n)throw new Error("[TensorPipeline.execute] No GPUTexture available for tensor compute execution. Pass a valid GPUTexture to execute() or initialize with a GPUTexture source.");if(this.cannyOptions){this.cannyPipeline||(this.cannyPipeline=new Tr(e));let i=this.cannyPipeline.execute(n,this.cannyOptions);this.multiplexer.set("canny",i)}if(this.depthNormalsOptions){this.depthNormalsPipeline||(this.depthNormalsPipeline=new Cr(e));let i=this.depthNormalsPipeline.execute(n,this.depthNormalsOptions);this.multiplexer.set("normals",i)}if(this.poseSkeletonOptions?.landmarks){this.posePipeline||(this.posePipeline=new Ya(e));let i=this.posePipeline.execute(this.poseSkeletonOptions.landmarks,{width:this.poseSkeletonOptions.width??n.width,height:this.poseSkeletonOptions.height??n.height,lineWidth:this.poseSkeletonOptions.lineWidth});this.multiplexer.set("poseSkeleton",i)}if(this.faceLandmarksOptions?.landmarks){this.facePipeline||(this.facePipeline=new vn(e));let i=this.facePipeline.execute(this.faceLandmarksOptions.landmarks,{width:this.faceLandmarksOptions.width??n.width,height:this.faceLandmarksOptions.height??n.height,lineWidth:this.faceLandmarksOptions.lineWidth});this.multiplexer.set("faceLandmarks",i)}if(this.segmentationOptions){this.segmentationPipeline||(this.segmentationPipeline=new wn(e));let i=this.segmentationPipeline.execute(n,this.segmentationOptions);this.multiplexer.set("segmentationMask",i)}if(this.opticalFlowOptions){this.opticalFlowPipeline||(this.opticalFlowPipeline=new bi(e));let i=this.prevInputTexture??n,o=this.opticalFlowPipeline.execute(i,n,this.opticalFlowOptions);this.multiplexer.set("motionVectors",o)}if(this.deflickerOptions){this.deflickerPipeline||(this.deflickerPipeline=new yi(e));let i=this.deflickerPipeline.execute(n,this.deflickerOptions);this.multiplexer.set("deflickered",i)}return this.prevInputTexture=n,this.multiplexer.getOutputs()}toConfig(){return{canny:this.cannyOptions,depthNormals:this.depthNormalsOptions,poseSkeleton:this.poseSkeletonOptions,faceLandmarks:this.faceLandmarksOptions,segmentation:this.segmentationOptions,opticalFlow:this.opticalFlowOptions,deflicker:this.deflickerOptions}}toNode(){return{id:this.id,kind:"tensor",source:this.source,config:this.toConfig()}}destroy(){this.cannyPipeline?.destroy(),this.depthNormalsPipeline?.destroy(),this.posePipeline?.destroy(),this.facePipeline?.destroy(),this.segmentationPipeline?.destroy(),this.opticalFlowPipeline?.destroy(),this.deflickerPipeline?.destroy(),this.multiplexer.destroy()}};h();var Bm=t=>!t.source||t.source.type==="keyframe";function Sn(t){let e=[],r=new Map;for(let n of t){if(!Bm(n)){e.push(n);continue}let i=r.get(n.prop);if(!i){let a={...n,keyframes:[...n.keyframes??[]]};r.set(n.prop,a),e.push(a);continue}let o=new Map(i.keyframes.map(a=>[a.frame,a]));for(let a of n.keyframes??[])o.set(a.frame,a);i.keyframes=[...o.values()].sort((a,s)=>a.frame-s.frame)}return e}function Bs(t,e){if(!t)return e;let r=lo(t);if(!r||r.name==="none")return e;let{name:n,dir:i,params:o}=r,a=Math.max(0,Math.min(1,e)),s=l=>i==="in"?l(a):i==="out"?1-l(1-a):a<.5?l(a*2)/2:1-l((1-a)*2)/2;switch(n){case"power1":return s(l=>l*l);case"power2":return s(l=>l*l*l);case"power3":return s(l=>l*l*l*l);case"sine":return s(l=>1-Math.cos(l*Math.PI/2));case"circ":return s(l=>1-Math.sqrt(Math.max(0,1-l*l)));case"expo":return s(l=>l===0?0:2**(10*(l-1)));case"back":{let l=o?.[0]??1.70158,c=l+1;return s(m=>c*m*m*m-l*m*m)}case"bounce":{let l=c=>{if(c<.36363636363636365)return 7.5625*c*c;if(c<.7272727272727273){let f=c-.5454545454545454;return 7.5625*f*f+.75}if(c<.9090909090909091){let f=c-.8181818181818182;return 7.5625*f*f+.9375}let p=c-2.625/2.75;return 7.5625*p*p+.984375};return i==="out"?l(a):i==="in"?1-l(1-a):a<.5?(1-l(1-2*a))/2:(1+l(2*a-1))/2}default:return a}}function lo(t){if(t){if(typeof t=="object"&&"name"in t&&"dir"in t)return t;if(typeof t=="string"){let e=t.trim(),r=e.match(/^([a-zA-Z0-9]+)(?:\.([a-zA-Z]+))?(?:\(([^)]+)\))?$/);if(r){let l=r[1].toLowerCase(),c=l==="linear"?"none":l,m=(r[2]||"out").toLowerCase(),d="out";m==="in"?d="in":m==="out"?d="out":m==="inout"&&(d="inOut");let p;return r[3]&&(p=r[3].split(",").map(f=>Number.parseFloat(f.trim())).filter(f=>!Number.isNaN(f))),{name:c,dir:d,...p&&p.length>0?{params:p}:{}}}let n=e.indexOf(".");if(n===-1){let l=e.toLowerCase();return{name:l==="linear"?"none":l,dir:"out"}}let i=e.slice(0,n).toLowerCase(),o=i==="linear"?"none":i,a=e.slice(n+1).toLowerCase(),s="out";return a==="in"?s="in":a==="out"?s="out":a==="inout"&&(s="inOut"),{name:o,dir:s}}}}var oe=class t{tracks=[];frameStep;constructor(e=[]){this.tracks=[...e]}static create(){return new t}static stepped(e=2){return new t().stepped(e)}stepped(e=2){return this.frameStep=Math.max(1,Math.min(24,Math.round(e))),this}static fromTo(e,r,n,i={}){return new t().fromTo(e,r,n,i)}static keys(e,r){return new t().keys(e,r)}static signal(e,r,n={}){return new t().signal(e,r,n)}static colorSignal(e,r,n){return new t().colorSignal(e,r,n)}static kineticSweep(e=-1,r=1,n=0,i=24,o="power2.out"){return new t().kineticSweep(e,r,n,i,o)}static typewriter(e=0,r=30,n="linear"){return new t().typewriter(e,r,n)}static letterSpacing(e,r,n=0,i=24,o="power2.out"){return new t().letterSpacing(e,r,n,i,o)}static wiggle(e,r={}){return new t().wiggle(e,r)}static spring(e,r={}){return new t().spring(e,r)}static firstMargin(e,r,n={}){return new t().firstMargin(e,r,n)}static strokeWidth(e,r,n={}){return new t().fromTo("strokeWidth",e,r,n)}static rotateX(e,r,n={}){return new t().fromTo("rotateX",e,r,n)}static rotateY(e,r,n={}){return new t().fromTo("rotateY",e,r,n)}static rotateZ(e,r,n={}){return new t().fromTo("rotateZ",e,r,n)}static rotation(e,r,n={}){return new t().fromTo("rotation",e,r,n)}addTrack(e){return this.tracks.push(e),this}fromTo(e,r,n,i={}){let o=i.from??i.start??i.fromFrame??0,a=i.to??i.end??i.toFrame??(i.durationFrames!==void 0?o+i.durationFrames:o+24),s=lo(i.ease),l=this.tracks.find(m=>m.prop===e&&(!m.source||m.source.type==="keyframe"));l||(l={id:`${e}_fromTo_${this.tracks.length}`,prop:e,keyframes:[]},this.tracks.push(l));let c=l.id;return l.keyframes.length===0&&o>0&&l.keyframes.push({id:`${c}_k0`,frame:0,value:r}),(l.keyframes.length===0||l.keyframes[l.keyframes.length-1].frame<o)&&l.keyframes.push({id:`${c}_k_${o}`,frame:o,value:r}),l.keyframes.push({id:`${c}_k_${a}`,frame:a,value:n,...s&&{ease:s}}),l.keyframes.sort((m,d)=>m.frame-d.frame),this}keyframe(e,r,n,i){let o=this.tracks.find(c=>c.prop===e&&(!c.source||c.source.type==="keyframe"));o||(o={id:`${e}_track_${this.tracks.length}`,prop:e,keyframes:[]},this.tracks.push(o));let a=lo(i),s={id:`k_${o.keyframes.length}_f${r}`,frame:r,value:n,...a&&{ease:a}},l=o.keyframes.findIndex(c=>c.frame===r);return l>=0?o.keyframes[l]=s:o.keyframes.push(s),o.keyframes.sort((c,m)=>c.frame-m.frame),this}keys(e,r){for(let[n,i,o]of r)this.keyframe(e,Math.round(n),i,o);return this}fadeIn(e=0,r=20,n="power2.out"){return this.fromTo("opacity",0,1,{from:e,to:r,ease:n})}fadeOut(e,r,n="power2.in"){return this.fromTo("opacity",1,0,{from:e,to:r,ease:n})}slideInY(e,r,n=0,i=24,o="power2.out"){return this.fromTo("y",e,r,{from:n,to:i,ease:o})}slideInX(e,r,n=0,i=24,o="power2.out"){return this.fromTo("x",e,r,{from:n,to:i,ease:o})}kineticSweep(e=-1,r=1,n=0,i=24,o="power2.out"){return this.fromTo("offset",e,r,{from:n,to:i,ease:o})}typewriter(e=0,r=30,n="linear"){return this.fromTo("text",0,1,{from:e,to:r,ease:n})}letterSpacing(e,r,n=0,i=24,o="power2.out"){return this.fromTo("letterSpacing",e,r,{from:n,to:i,ease:o})}firstMargin(e,r,n={}){return this.fromTo("firstMargin",e,r,n)}lastMargin(e,r,n={}){return this.fromTo("lastMargin",e,r,n)}baselineShift(e,r,n={}){return this.fromTo("baselineShift",e,r,n)}rotateX(e,r,n={}){return this.fromTo("rotateX",e,r,n)}rotateY(e,r,n={}){return this.fromTo("rotateY",e,r,n)}rotateZ(e,r,n={}){return this.fromTo("rotateZ",e,r,n)}perspective(e,r,n={}){return this.fromTo("perspective",e,r,n)}translateZ(e,r,n={}){return this.fromTo("translateZ",e,r,n)}tilt3D(e){let r=e.start??e.fromFrame,n=e.end??e.toFrame,i=e.ease,o=e.from??{},a=e.to,s=["rotateX","rotateY","rotateZ","translateZ","perspective"];for(let l of s){let c=a[l];if(c!==void 0){let m=o[l]??0;this.fromTo(l,m,c,{from:r,to:n,fromFrame:r,toFrame:n,ease:i})}}return this}signal(e,r,n={}){let{handleId:i,inline:o}=hi(r),a=`${e}_sig_${i}_${this.tracks.length}`,s={type:"signal",inputHandleId:i,multiplier:n.multiplier??1,offset:n.offset??0,smoothingWindowFrames:n.smoothing??0,signalMode:n.mode??"continuous",threshold:n.threshold??.15,accumulateThreshold:n.threshold??.15,debounceFrames:n.debounceFrames??2,channel:n.channel??"primary"};return o&&gi(s,o),this.tracks.push({id:a,prop:e,source:s,keyframes:[]}),this}colorSignal(e,r,n){let{handleId:i,inline:o}=hi(r),a=`${e}_colorSig_${i}_${this.tracks.length}`,s={type:"signal",inputHandleId:i,multiplier:n.multiplier??1,offset:n.offset??0,smoothingWindowFrames:n.smoothing??0,colorMode:n.colorMode??"interpolate",colorA:n.colorA,colorB:n.colorB,colorThreshold:n.threshold,channel:"primary"};return o&&gi(s,o),this.tracks.push({id:a,prop:e,source:s,keyframes:[]}),this}wiggle(e,r={}){let n=`${e}_wiggle_${this.tracks.length}`,i={type:"wiggle",frequency:r.frequency??2,amplitude:r.amplitude??20,octaves:r.octaves??1,seed:r.seed??1234};return this.tracks.push({id:n,prop:e,source:i,keyframes:[]}),this}spring(e,r={}){let n=`${e}_spring_${this.tracks.length}`,i={type:"springOvershoot",damping:r.damping??12,stiffness:r.stiffness??180,mass:r.mass??1};return this.tracks.push({id:n,prop:e,source:i,keyframes:[]}),this}followPath(e,r={}){let n=r.start??r.fromFrame??0,i=r.end??r.toFrame??60,o=Math.max(1,i-n),a=r.samples??Math.max(8,Math.min(60,Math.round(o/2))),s=e.totalLength??1,l=r.fromProgress??0,c=r.toProgress??1;r.fromDistance!==void 0&&s>0&&(l=r.fromDistance/s),r.toDistance!==void 0&&s>0&&(c=r.toDistance/s);let m=r.autoOrient??!0,d=r.banking??0,p=r.pitchOffset??0,f=r.yawOffset??0,b=r.rollOffset??0,g=!1,y=!1,k=!1,D=[];for(let T=0;T<=a;T++){let w=T/a,S=Bs(r.ease,w),x=l+S*(c-l),N=Math.round(n+w*o),R=[0,0,0],_=[1,0,0],H=[0,0,0];if(typeof e.getFrameAt=="function"){let M=e.getFrameAt(x);R=M.position,_=M.tangent,H=M.rotation??[0,0,0]}else{let M=e.getPointAt(x);R=M.position,M.tangent&&(_=M.tangent);let Y=Math.asin(Math.max(-1,Math.min(1,-_[1])))*(180/Math.PI),X=Math.atan2(_[0],_[2])*(180/Math.PI),z=Math.atan2(_[1],_[0])*(180/Math.PI);H=[Y,X,z]}let ee=H[0]+p,E=H[1]+f,P=(Math.abs(_[2])<1e-4?Math.atan2(_[1],_[0])*(180/Math.PI):H[2])+b;if(d!==0){let M=Math.min(1,x+.02),Y=Math.max(0,x-.02),X=e.getPointAt(M),z=e.getPointAt(Y),U=X.tangent??[1,0,0],ne=z.tangent??[1,0,0],ce=Math.atan2(U[0],U[2]),we=Math.atan2(ne[0],ne[2]),me=ce-we;P-=me*d*57.2958}Math.abs(R[2])>1e-4&&(g=!0),Math.abs(ee)>1e-4&&(y=!0),Math.abs(E)>1e-4&&(k=!0),D.push({f:N,x:R[0],y:R[1],z:R[2],rx:ee,ry:E,rz:P})}for(let T of D)this.keyframe("x",T.f,T.x),this.keyframe("y",T.f,T.y),g&&this.keyframe("z",T.f,T.z),m&&(this.keyframe("rotateZ",T.f,T.rz),y&&this.keyframe("rotateX",T.f,T.rx),k&&this.keyframe("rotateY",T.f,T.ry));return this}applyTo(e){return e.animation=this.toSpec(),e}merge(...e){return this.tracks=Sn([...this.tracks,...e.flatMap(r=>r.tracks)]),this}static merge(...e){return new t().merge(...e)}toSpec(){return{tracks:this.tracks}}toJSON(){return this.toSpec()}},co=class t extends oe{static camera(){return new t}dolly(e,r,n={}){if(typeof e=="object"){let i=e,o=i.start??i.fromFrame??0,a=i.end??i.toFrame??0;return this.fromTo("cameraZ",i.fromDistance,i.toDistance,{from:o,to:a,ease:i.ease})}return this.fromTo("cameraZ",e,r??e,n)}orbit(e){let r=e.start??e.fromFrame??0,n=e.end??e.toFrame??0;return e.azimuth&&this.fromTo("orbitAzimuth",e.azimuth.from??0,e.azimuth.to,{from:r,to:n,ease:e.ease}),e.elevation&&this.fromTo("orbitElevation",e.elevation.from??0,e.elevation.to,{from:r,to:n,ease:e.ease}),e.radius&&this.fromTo("orbitRadius",e.radius.from??1500,e.radius.to,{from:r,to:n,ease:e.ease}),this}truck(e,r,n={}){return this.fromTo("cameraX",e,r,n)}pedestal(e,r,n={}){return this.fromTo("cameraY",e,r,n)}pan(e,r,n={}){return this.fromTo("cameraYaw",e,r,n)}tilt(e,r,n={}){return this.fromTo("cameraPitch",e,r,n)}roll(e,r,n={}){return this.fromTo("cameraRoll",e,r,n)}rackFocus(e){let r=e.start??e.fromFrame??0,n=e.end??e.toFrame??0;return this.fromTo("focusDistance",e.fromDistance,e.toDistance,{from:r,to:n,ease:e.ease??"power2.inOut"}),e.toFStop!==void 0&&this.fromTo("fStop",e.fromFStop??2.8,e.toFStop,{from:r,to:n,ease:e.ease??"power2.inOut"}),this}handheld(e){let r=e.start??e.fromFrame??0,n=e.end??e.toFrame??0;return this.fromTo("shakeTranslation",0,e.translationAmplitude,{from:r,to:n}),this.fromTo("shakeRotation",0,e.rotationAmplitude,{from:r,to:n}),this}followPath3D(e,r={}){let n=r.start??r.fromFrame??0,i=r.end??r.toFrame??60,o=Math.max(1,i-n),a=r.samples??Math.max(8,Math.min(60,Math.round(o/2))),s=r.mode??(r.target?"lookAtTarget":"leadTarget"),l=r.fromProgress??0,c=r.toProgress??1,m=r.lookAhead??.05;for(let d=0;d<=a;d++){let p=d/a,f=Bs(r.ease,p),b=l+f*(c-l),g=Math.round(n+p*o),y=[0,0,0],k=[0,0,0];if(typeof e.getFrameAt=="function"){let D=e.getFrameAt(b);y=D.position,k=D.rotation??[0,0,0]}else y=e.getPointAt(b).position;if(this.keyframe("cameraX",g,y[0]),this.keyframe("cameraY",g,y[1]),this.keyframe("cameraZ",g,y[2]),s==="lookAtTarget"){let D=r.target??[y[0],y[1],0];this.keyframe("targetX",g,D[0]),this.keyframe("targetY",g,D[1]),this.keyframe("targetZ",g,D[2])}else if(s==="leadTarget"){let D=Math.min(1,b+m),T=e.getPointAt(D);this.keyframe("targetX",g,T.position[0]),this.keyframe("targetY",g,T.position[1]),this.keyframe("targetZ",g,T.position[2])}else s==="orientAlongPath"&&(this.keyframe("cameraPitch",g,k[0]),this.keyframe("cameraYaw",g,k[1]),this.keyframe("cameraRoll",g,k[2]))}return this}};h();var Lm=["background","fill","fillColor","strokeColor","borderColor","gradientEndColor","emissive","color"],Ls=3;function Vs(t){return t.animation?.tracks??[]}var Es=(t,e)=>Vs(t).some(r=>e.includes(r.prop)),Em=new Set(["box","flex","block","group"]);function Is(t){if(t.kind==="text"||t.kind==="light"||t.kind==="camera")return!1;if(!Em.has(String(t.kind)))return!0;let e=t.background;return typeof e=="string"&&e!==""&&e!=="transparent"?!0:(t.children??[]).some(Is)}var Vm=t=>[...t].sort((e,r)=>(Number(e.zIndex)||0)-(Number(r.zIndex)||0));function kn(t){if(typeof t!="string"||t.includes("gradient("))return null;let e=li(t);return e&&e[3]>.99?t:null}function mo(t){let e=[],r=(f,b,g,y)=>e.push({severity:f,code:b,message:g,...y&&{layerId:y}}),n=t.width,i=t.height,o=!1,a=[],s=!1,l=[],c=[],m=(f,b,g)=>{let y=String(f.id??"?");for(let S of Lm){let x=f[S];typeof x!="string"||x===""||x==="transparent"||(x.includes("gradient(")?Va(x)||r("error","invalid_gradient",`\`${S}\` on '${y}' is not a gradient this renderer reads: ${x}. It draws nothing.`,y):li(x)||r("warning","unknown_color",`\`${S}: "${x}"\` on '${y}' is not a color (hex, rgb(), hsl(), oklch() or a CSS name). It draws transparent.`,y))}if(f.kind==="light"){let S=f.lightType??"directional";S==="environment"&&(o=!0),S==="ambient"&&a.push(y),f.castShadow&&(S==="directional"||S==="spot"?c.push(y):r("warning","shadow_unsupported_light",`'${y}' is a ${String(S)} light: only directional and spot lights cast shadows.`,y));return}if(f.kind==="camera")return;if(f.kind==="media"){let S=f.inputHandleId;typeof S=="string"&&(f.dataType??"Video")==="Image"&&(/\.(json|lottie)(\?.*)?$/i.test(S)?r("error","unsupported_image_format",`'${y}' is an image layer with source '${S}', which is a Lottie vector animation. Use Layer.lottie() instead.`,y):/\.(mp4|mov|webm|mkv)(\?.*)?$/i.test(S)?r("error","unsupported_image_format",`'${y}' is an image layer with video source '${S}'. Use Layer.video() instead.`,y):/\.(mp3|wav|ogg|m4a|aac)(\?.*)?$/i.test(S)&&r("error","unsupported_image_format",`'${y}' is an image layer with audio source '${S}'. Use Layer.audio() instead.`,y))}let k=!!f.is3D||typeof f.z=="number"&&f.z!==0;if((k||f.kind==="model3d")&&(s=!0),(f.roughness!==void 0||f.metallic!==void 0)&&l.push(y),f.kind==="text"&&b&&!Es(f,["fill","color"])){let S=kn(f.fill??f.color),x=kn(f.background)??b;if(S){let N=ci.contrast(S,x);N<Ls&&r("warning","low_contrast_text",`Text '${y}' (${S}) on ${x} has contrast ${N.toFixed(2)}:1 (aim for \u2265 ${Ls}; ${ci.readableOn(x)} reads well).`,y)}}if(g&&!k&&f.position==="absolute"&&typeof f.x=="number"&&typeof f.y=="number"&&typeof f.width=="number"&&typeof f.height=="number"&&!Es(f,["x","y","translateX","translateY","scale","rotation"])){let{x:S,y:x,width:N,height:R}=f;(S+N<=0||x+R<=0||S>=n||x>=i)&&r("warning","offscreen_layer",`'${y}' sits entirely outside the ${n}\xD7${i} canvas (x ${S}, y ${x}) and never moves in.`,y)}for(let S of Vs(f)){let x=S.keyframes??[];(!S.source||S.source.type==="keyframe")&&x.length>=2&&x.every(N=>JSON.stringify(N.value)===JSON.stringify(x[0].value))&&r("info","static_track",`'${y}' animates \`${S.prop}\` but every keyframe holds ${JSON.stringify(x[0].value)}.`,y)}let D=kn(f.background)??b,T=f.children,w=f.x===0&&f.y===0&&f.width===n&&f.height===i;d(T??[],D,g&&w)},d=(f,b,g)=>{let y=b;for(let k of Vm(f))m(k,y,g),Is(k)&&(y=null)},p=kn(t.backgroundColor)??null;return d(t.layout,p,!0),o&&a.length>0&&r("info","ambient_with_environment",`The environment already fills shadows with light; ambient light ${a.join(", ")} adds flat light on top (remove it, or lower it, if the scene looks washed out).`),c.length>1&&r("info","multiple_shadow_lights",`${c.length} lights cast shadows (${c.join(", ")}); only the first one does.`),s&&l.length>0&&!o&&r("info","pbr_without_environment",`roughness / metallic are set (${l.slice(0,3).join(", ")}${l.length>3?", \u2026":""}) but the scene has no Layer.environment(): add one for physically based shading, reflections and tone mapping.`),e}h();var zs=u.union([u.number().min(0),u.enum(["auto","fit","fill"]),u.custom()]),Im=u.enum(["rect","circle","ellipse","polygon","star","arrow","path"]),zm=u.enum(["x","y","scale","rotation","opacity","width","height","volume","hidden","muted","gap","padding","borderRadius","fontSize","text","fill","color","letterSpacing","d","trimStart","trimEnd","trimOffset","strokeWidth","strokeDashOffset","cornerRadius","starInnerRadiusRatio","fillColor","strokeColor","borderColor","borderWidth","motionBlurShutter","rangeStart","rangeEnd","offset","animatorRangeStart","animatorRangeEnd","animatorOffset","firstMargin","lastMargin","baselineShift","rotateX","rotateY","rotateZ","perspective","translateZ","perspectiveOriginX","perspectiveOriginY","cameraX","cameraY","cameraZ","targetX","targetY","targetZ","cameraPitch","cameraYaw","cameraRoll","cameraFov","cameraZoom","focalLength","focusDistance","fStop","maxBlurRadius","shakeTranslation","shakeRotation","orbitRadius","orbitAzimuth","orbitElevation","z","scaleZ","intensity","angle","radius","penumbra","decay","shininess","roughness","specularIntensity","ambientIntensity","metallic","ior","dispersion","transmission","fresnelPower","envIntensity","animationProgress","animationTime","animationSpeed","wireframe","scaleX","scaleY","emissive","emissiveIntensity","exposure"]),po=u.enum(["alpha","alpha-inverted","luma","luma-inverted"]),Us=u.enum(["lit","unlit","toon","glass","acrylic","frosted","metallic"]);var Um=u.enum(["interpolate","hueRotate","threshold"]),_m=u.object({name:u.enum(["none","power1","power2","power3","sine","circ","expo","back","elastic","bounce","spring","cubic","hold"]),dir:u.enum(["in","out","inOut"]),params:u.array(u.number()).optional()}).strict().superRefine((t,e)=>{if(t.name==="spring"&&t.params){let[r,n,i]=t.params;r!==void 0&&r<=0&&e.addIssue({code:u.ZodIssueCode.custom,message:"Spring damping must be greater than 0.",path:["params",0]}),n!==void 0&&n<=0&&e.addIssue({code:u.ZodIssueCode.custom,message:"Spring stiffness must be greater than 0.",path:["params",1]}),i!==void 0&&i<=0&&e.addIssue({code:u.ZodIssueCode.custom,message:"Spring mass must be greater than 0.",path:["params",2]})}}),Gm=u.object({id:u.string().min(1),frame:u.number().int().min(0),value:u.union([u.number(),u.boolean(),u.string()]),ease:_m.optional(),presetGroupId:u.string().optional(),presetType:u.string().optional(),spatialTangentIn:u.object({x:u.number(),y:u.number()}).optional(),spatialTangentOut:u.object({x:u.number(),y:u.number()}).optional()}).strict(),jm=u.enum(["continuous","accumulate"]),$m=u.discriminatedUnion("type",[u.object({type:u.literal("keyframe")}),u.object({type:u.literal("signal"),inputHandleId:u.string(),multiplier:u.number().default(1),offset:u.number().default(0),smoothingWindowFrames:u.number().min(0).default(0),colorMode:Um.optional(),colorA:u.string().optional(),colorB:u.string().optional(),colorThreshold:u.number().optional(),signalMode:jm.optional(),threshold:u.number().optional(),accumulateThreshold:u.number().optional(),debounceFrames:u.number().int().min(0).optional(),channel:u.string().optional()}),u.object({type:u.literal("wiggle"),frequency:u.number().default(2),amplitude:u.number().default(50),octaves:u.number().int().min(1).max(4).default(1),seed:u.number().default(1234)}),u.object({type:u.literal("springOvershoot"),damping:u.number().default(12),stiffness:u.number().default(180),mass:u.number().default(1)})]),Wm=u.preprocess(t=>{if(!t||typeof t!="object")return t;let e=t;if(e.type==="signal"){let r=typeof e.threshold=="number"?e.threshold:typeof e.accumulateThreshold=="number"?e.accumulateThreshold:.15;return{type:"signal",inputHandleId:e.inputHandleId??e.handleId,multiplier:e.multiplier??e.amplitude??1,offset:e.offset??0,smoothingWindowFrames:e.smoothingWindowFrames??e.smoothing??0,colorMode:e.colorMode,colorA:e.colorA,colorB:e.colorB,colorThreshold:e.colorThreshold,signalMode:e.signalMode??"continuous",threshold:r,accumulateThreshold:r,debounceFrames:e.debounceFrames??2,channel:typeof e.channel=="string"?e.channel:"primary"}}return t},$m),Hm=(t,e)=>{if(!t?.tracks)return;let r=0;for(let n=0;n<t.tracks.length;n++){let i=t.tracks[n],o=i.keyframes??[];r+=o.length,(!i.source||i.source.type==="keyframe")&&o.length<1&&e.addIssue({code:u.ZodIssueCode.custom,message:`Track for property '${i.prop}' must have at least 1 keyframe.`,path:["tracks",n,"keyframes"]});let s=i.prop==="hidden"||i.prop==="muted",l=i.prop==="fillColor"||i.prop==="strokeColor"||i.prop==="fill"||i.prop==="color";for(let c=0;c<o.length;c++){let m=o[c];if(c>0){let p=o[c-1];m.frame<p.frame?e.addIssue({code:u.ZodIssueCode.custom,message:"Keyframes must be sorted in ascending order of frame.",path:["tracks",n,"keyframes",c]}):m.frame===p.frame&&e.addIssue({code:u.ZodIssueCode.custom,message:"Duplicate keyframes at the same frame are not allowed.",path:["tracks",n,"keyframes",c]})}let d=typeof m.value;s?d!=="boolean"&&e.addIssue({code:u.ZodIssueCode.custom,message:`Keyframe value for discrete property '${i.prop}' must be a boolean.`,path:["tracks",n,"keyframes",c,"value"]}):l?d!=="string"&&e.addIssue({code:u.ZodIssueCode.custom,message:`Keyframe value for color property '${i.prop}' must be a string.`,path:["tracks",n,"keyframes",c,"value"]}):d!=="number"||Number.isNaN(m.value)||!Number.isFinite(m.value)?e.addIssue({code:u.ZodIssueCode.custom,message:`Keyframe value for numeric property '${i.prop}' must be a finite number.`,path:["tracks",n,"keyframes",c,"value"]}):(i.prop==="volume"||i.prop==="trimStart"||i.prop==="trimEnd")&&(m.value<0||m.value>1)&&e.addIssue({code:u.ZodIssueCode.custom,message:`Keyframe value for property '${i.prop}' must be between 0 and 1.`,path:["tracks",n,"keyframes",c,"value"]})}}r>128&&e.addIssue({code:u.ZodIssueCode.custom,message:`Total keyframes across all tracks (${r}) exceeds the limit of 128.`,path:["tracks"]})},Ym=u.object({id:u.string().min(1),prop:zm,source:Wm.optional(),keyframes:u.array(Gm).default([]),repeat:u.number().int().optional(),yoyo:u.boolean().optional(),durationFrames:u.number().int().min(1).optional()}).strict(),fo=u.object({tracks:u.array(Ym).max(24),frameStep:u.number().int().min(1).max(24).optional()}).strict().superRefine(Hm),xt={id:u.string().min(1),inputHandleId:u.string().optional(),position:u.enum(["relative","absolute"]).default("relative"),x:u.union([u.number(),u.custom()]).default(0),y:u.union([u.number(),u.custom()]).default(0),width:zs.optional(),height:zs.optional(),grow:u.number().min(0).optional(),flexShrink:u.number().min(0).optional(),flexBasis:u.number().min(0).optional(),alignSelf:u.enum(["auto","start","center","end","stretch","baseline"]).optional(),aspectRatio:u.number().positive().optional(),zIndex:u.number().int().default(0),hidden:u.boolean().default(!1),opacity:u.number().min(0).max(1).default(1),blendMode:u.string().optional(),effects:u.array(u.unknown()).optional(),rotation:u.number().default(0),scale:u.number().min(0).default(1),anchorX:u.number().min(0).max(1).default(.5),anchorY:u.number().min(0).max(1).default(.5),startFrame:u.number().int().min(0).default(0),durationFrames:u.number().int().min(1).optional(),motionBlurShutter:u.number().min(0).max(360).optional(),rotateX:u.number().default(0),rotateY:u.number().default(0),rotateZ:u.number().default(0),perspective:u.number().min(0).default(0),perspectiveOriginX:u.number().default(.5),perspectiveOriginY:u.number().default(.5),translateZ:u.number().default(0),backfaceVisibility:u.enum(["visible","hidden"]).default("visible"),transformStyle:u.enum(["flat","preserve-3d"]).default("flat"),is3D:u.boolean().default(!1),z:u.union([u.number(),u.custom()]).default(0),scaleZ:u.number().default(1),twoSided:u.boolean().default(!0),material:Us.default("lit"),ior:u.number().min(1).max(3).optional(),roughness:u.number().min(0).max(1).optional(),shininess:u.number().min(1).max(512).default(32),specularIntensity:u.number().min(0).default(.5),metallic:u.number().min(0).max(1).optional(),ambientIntensity:u.number().min(0).default(1),transmission:u.number().min(0).max(1).optional(),dispersion:u.number().min(0).max(1).optional(),fresnelPower:u.number().min(1).max(10).optional(),envIntensity:u.number().min(0).max(10).optional(),emissive:le.optional(),emissiveIntensity:u.number().min(0).optional(),castShadow:u.boolean().optional(),matte:u.object({node:u.custom(t=>typeof t=="object"&&t!==null),mode:po.optional()}).optional(),matteId:u.string().optional(),matteOf:u.string().optional(),matteMode:po.optional(),animation:fo.default({tracks:[]}),vision:u.unknown().optional(),relighting:u.unknown().optional()},_s=u.object({color:le,offset:u.object({x:u.number(),y:u.number()}).optional(),blurRadius:u.number().min(0).optional()}).strict(),Xm=u.object({x:u.number().optional(),y:u.number().optional(),scale:u.number().optional(),scaleX:u.number().optional(),scaleY:u.number().optional(),rotation:u.number().optional(),rotationX:u.number().optional(),rotationY:u.number().optional(),opacity:u.number().optional(),blur:u.number().optional(),color:u.string().optional()}).strict(),Gs=u.object({id:u.string(),unit:u.enum(["character","word","line"]).default("character"),rangeStart:u.number().min(0).max(1).default(0),rangeEnd:u.number().min(0).max(1).default(1),offset:u.number().min(-1).max(1).default(0),easing:u.string().default("power2.out"),transform:Xm.optional()}),qm={waveRise(t={}){return{id:t.id??"wave-rise",unit:t.unit??"character",rangeStart:t.rangeStart??0,rangeEnd:t.rangeEnd??1,offset:t.offset??-1,easing:t.easing??"power2.out",transform:{y:t.y??40,rotationX:t.rotationX??45,opacity:t.opacity??0,blur:t.blur??0}}},wordPop(t={}){return{id:t.id??"word-pop",unit:"word",rangeStart:0,rangeEnd:1,offset:-1,easing:t.easing??"back.out(1.6)",transform:{scale:t.scale??0,y:t.y??20,opacity:0}}},blurIn(t={}){return{id:t.id??"blur-in",unit:t.unit??"character",rangeStart:0,rangeEnd:1,offset:-1,easing:t.easing??"power3.out",transform:{blur:t.blur??16,y:t.y??20,opacity:t.opacity??0}}},flip3D(t={}){return{id:t.id??"flip-3d",unit:t.unit??"character",rangeStart:0,rangeEnd:1,offset:-1,easing:t.easing??"back.out(1.4)",transform:{rotationX:t.rotationX??90,opacity:0}}},colorSweep(t){return{id:t.id??"color-sweep",unit:t.unit??"character",rangeStart:0,rangeEnd:.5,offset:-.5,easing:t.easing??"power2.inOut",transform:{color:t.color}}}},Zm=u.object({focalLength:u.number().min(5).max(500).default(50),fov:u.number().min(5).max(160).optional(),sensorWidth:u.number().default(36),near:u.number().min(.1).default(1),far:u.number().min(10).default(5e4),zoom:u.number().min(.01).default(1)}).strict(),Km=u.object({enabled:u.boolean().default(!1),focusDistance:u.number().min(1).default(1e3),fStop:u.number().min(.5).max(64).default(2.8),maxBlurRadius:u.number().min(0).max(128).default(32),apertureBlades:u.number().int().min(0).max(12).default(0),anamorphicRatio:u.number().min(.5).max(3).default(1)}).strict(),Jm=u.object({translationAmplitude:u.number().min(0).default(0),rotationAmplitude:u.number().min(0).default(0),frequency:u.number().min(.1).max(60).default(2.5),octaves:u.number().int().min(1).max(6).default(3),seed:u.number().default(42)}).strict(),js=u.object({id:u.string().min(1),kind:u.literal("camera"),mode:u.enum(["lookAt","free","orbit"]).default("lookAt"),x:u.number().optional(),y:u.number().optional(),z:u.number().optional(),targetX:u.number().optional(),targetY:u.number().optional(),targetZ:u.number().optional(),pitch:u.number().default(0),yaw:u.number().default(0),roll:u.number().default(0),lens:Zm.optional(),dof:Km.optional(),shake:Jm.optional(),startFrame:u.number().int().min(0).default(0),durationFrames:u.number().int().min(1).optional(),animation:fo.default({tracks:[]})}).strict(),$s=u.enum(["ambient","directional","point","spot","environment"]),Ws=u.enum(["studio","soft","sunset","night","neutral"]),Hs=u.enum(["neutral","agx","aces","none"]),Ys=u.object({color:le,start:u.number().min(0),end:u.number().min(0),opacity:u.number().min(0).max(1).optional()}).strict(),Xs=u.object({intensity:u.number().min(0).max(10).optional(),threshold:u.number().min(0).max(16).optional(),knee:u.number().min(0).max(1).optional(),radius:u.number().min(1).max(8).optional()}).strict(),qs=u.object({id:u.string().min(1),kind:u.literal("light"),lightType:$s.default("directional"),color:le.default("#ffffff"),intensity:u.number().default(1),x:u.number().optional(),y:u.number().optional(),z:u.number().optional(),targetX:u.number().optional(),targetY:u.number().optional(),targetZ:u.number().optional(),direction:u.tuple([u.number(),u.number(),u.number()]).optional(),radius:u.number().min(0).default(1e3),decay:u.number().min(0).default(2),angle:u.number().min(0).max(180).default(45),penumbra:u.number().min(0).max(1).default(.2),castShadow:u.boolean().optional(),shadowSoftness:u.number().min(0).max(64).optional(),shadowDarkness:u.number().min(0).max(1).optional(),shadowMapSize:u.number().int().min(256).max(8192).optional(),preset:Ws.optional(),top:le.optional(),horizon:le.optional(),bottom:le.optional(),softboxes:u.number().min(0).optional(),rotation:u.number().optional(),exposure:u.number().min(-16).max(16).optional(),toneMapping:Hs.optional(),fog:Ys.optional(),bloom:u.union([u.boolean(),Xs]).optional(),startFrame:u.number().int().min(0).default(0),durationFrames:u.number().int().min(1).optional(),animation:fo.default({tracks:[]})}).strict(),ho=()=>u.array(u.lazy(()=>go)),Zs=u.object({...xt,kind:u.literal("flex"),dir:u.enum(["row","column"]).default("row"),gap:u.number().min(0).default(0),padding:u.number().min(0).default(0),justify:u.enum(["start","center","end","space-between","space-around"]).default("start"),align:u.enum(["start","center","end","stretch"]).default("start"),wrap:u.boolean().default(!1),staggerFrames:u.number().min(0).default(0),staggerDirection:u.enum(["forward","reverse","center-out"]).default("forward"),overflow:u.enum(["visible","hidden"]).default("hidden"),background:le.optional(),borderRadius:u.number().min(0).optional(),borderColor:le.optional(),borderWidth:u.number().min(0).optional(),strokeAlign:u.enum(["inside","center","outside"]).optional(),strokeRadius:u.number().min(0).optional(),children:ho().optional()}).strict(),Qm=u.object({...xt,kind:u.literal("block"),gap:u.number().min(0).default(0),padding:u.number().min(0).default(0),align:u.enum(["start","center","end","stretch"]).default("start"),staggerFrames:u.number().min(0).default(0),staggerDirection:u.enum(["forward","reverse","center-out"]).default("forward"),overflow:u.enum(["visible","hidden"]).default("hidden"),background:le.optional(),borderRadius:u.number().min(0).optional(),borderColor:le.optional(),borderWidth:u.number().min(0).optional(),strokeAlign:u.enum(["inside","center","outside"]).optional(),strokeRadius:u.number().min(0).optional(),children:ho().optional()}).strict(),Ks=u.object({...xt,kind:u.literal("box"),background:le,borderRadius:u.number().min(0).optional(),padding:u.number().min(0).default(0),staggerFrames:u.number().min(0).default(0),staggerDirection:u.enum(["forward","reverse","center-out"]).default("forward"),overflow:u.enum(["visible","hidden"]).default("hidden"),borderColor:le.optional(),borderWidth:u.number().min(0).optional(),strokeAlign:u.enum(["inside","center","outside"]).optional(),strokeRadius:u.number().min(0).optional(),children:ho().optional()}).strict(),Js=u.object({background:le,borderRadius:u.number().min(0).optional(),paddingX:u.number().min(0).optional(),paddingY:u.number().min(0).optional()}).strict(),Qs=u.object({text:u.union([u.string(),u.custom(t=>!!(t&&typeof t=="object"&&"get"in t))]),fontFamily:u.string().optional(),fontSize:u.union([u.number().positive(),u.custom(t=>!!(t&&typeof t=="object"&&"get"in t))]).optional(),fontWeight:u.union([u.number().int(),u.string()]).optional(),fontStyle:u.enum(["normal","italic"]).optional(),fill:u.union([le,u.custom(t=>!!(t&&typeof t=="object"&&"get"in t))]).optional(),letterSpacing:u.number().optional(),baselineShift:u.number().optional(),opacity:u.union([u.number().min(0).max(1),u.custom(t=>!!(t&&typeof t=="object"&&"get"in t))]).optional(),mark:Js.optional()}).strict(),ep={text:u.string().default(""),spans:u.array(Qs).optional(),fontFamily:u.string().optional(),fontSize:u.number().positive().optional(),fontWeight:u.union([u.number().int(),u.string()]).optional(),fontStyle:u.string().optional(),fill:le,align:u.enum(["start","center","end"]).optional(),direction:u.enum(["ltr","rtl","auto"]).optional(),verticalAlign:u.enum(["top","middle","bottom"]).optional(),lineHeight:u.number().positive().optional(),letterSpacing:u.number().optional(),background:le,borderRadius:u.number().min(0).optional(),padding:u.number().min(0).optional(),stroke:le,strokeWidth:u.number().min(0).optional(),strokeAlign:u.enum(["inside","center","outside"]).optional(),textShadow:u.string().optional(),shadows:u.array(_s).optional(),pathOptions:jt.optional(),typewriter:gn.optional(),marquee:to.optional(),animators:u.array(u.union([Gs,$t,ro])).optional()},eu=u.object({...xt,...ep,kind:u.literal("text")}).strict(),tu=u.object({...xt,kind:u.literal("media"),inputHandleId:u.string().min(1),dataType:u.string().optional(),fit:u.enum(["cover","contain","fill","none"]).default("contain"),dpr:u.number().min(1).max(4).optional(),borderRadius:u.number().min(0).optional(),borderColor:le.optional(),borderWidth:u.number().min(0).optional(),strokeAlign:u.enum(["inside","center","outside"]).optional(),strokeRadius:u.number().min(0).optional(),volume:u.number().min(0).max(1).default(1),muted:u.boolean().default(!1),trimStartSec:u.number().min(0).optional(),fontFamily:u.string().optional(),fontSize:u.number().positive().optional(),fontWeight:u.union([u.number().int(),u.string()]).optional(),fontStyle:u.string().optional(),fill:le,align:u.enum(["start","center","end"]).optional(),direction:u.enum(["ltr","rtl","auto"]).optional(),verticalAlign:u.enum(["top","middle","bottom"]).optional(),lineHeight:u.number().positive().optional(),letterSpacing:u.number().optional(),background:le,padding:u.number().min(0).optional(),stroke:le,strokeWidth:u.number().min(0).optional(),textShadow:u.string().optional(),shadows:u.array(_s).optional(),maxWidth:u.number().optional()}).strict(),tp={shapeType:Im.default("rect"),borderRadius:u.number().min(0).optional(),radiusTL:u.number().min(0).optional(),radiusTR:u.number().min(0).optional(),radiusBR:u.number().min(0).optional(),radiusBL:u.number().min(0).optional(),polygonSides:u.number().int().min(3).max(64).optional(),starPoints:u.number().int().min(3).max(64).optional(),starInnerRadiusRatio:u.number().min(.01).max(.99).optional(),arrowHeadWidth:u.number().min(0).optional(),arrowHeadLength:u.number().min(0).optional(),arrowShaftWidth:u.number().min(1).optional(),d:u.string().optional(),fillType:u.enum(["solid","linear","radial","none"]).default("solid"),fillColor:le.default("#3b82f6"),gradientEndColor:le.optional(),gradientAngle:u.number().default(0),strokeColor:le.default("#ffffff"),strokeWidth:u.number().min(0).default(0),strokeDashArray:u.string().optional(),strokeDashOffset:u.number().default(0),strokeLineCap:u.enum(["butt","round","square"]).default("round"),strokeLineJoin:u.enum(["miter","round","bevel"]).default("round"),strokeAlign:u.enum(["inside","center","outside"]).optional(),trimStart:u.number().min(0).max(1).default(0),trimEnd:u.number().min(0).max(1).default(1),trimOffset:u.number().default(0)},ru=u.object({...xt,...tp,kind:u.literal("shape")}).strict(),rp=u.object({offset:u.number().min(0).max(1),color:u.string()}),nu=u.object({...xt,kind:u.literal("model3d"),src:u.string().default(""),modelFormat:u.enum(["obj","fbx","gltf","glb","stl","ply","vox","3ds","off","auto"]).default("auto"),modelData:u.unknown().optional(),animationName:u.string().optional(),animationProgress:u.number().min(0).max(1).default(0),animationTime:u.number().min(0).default(0),animationSpeed:u.number().default(1),loop:u.boolean().default(!0),wireframe:u.boolean().default(!1),texture:u.string().optional(),center:u.boolean().optional(),normalizeSize:u.number().optional(),scaleX:u.number().default(1),scaleY:u.number().default(1),audioDeform:u.record(u.string(),u.unknown()).optional(),color:le.optional(),colorTint:le.optional(),text3dOptions:u.unknown().optional(),primitive3d:u.unknown().optional()}).strict(),go=u.lazy(()=>u.union([Zs,Qm,Ks,eu,tu,ru,js,qs,nu])),np=u.object({width:u.number().int().min(1).max(4096),height:u.number().int().min(1).max(4096),backgroundColor:le,volume:u.number().min(0).max(1).default(1),fps:u.number().int().min(1).max(120).default(24),mode:u.enum(["Video","Image"]).default("Video"),antialias3d:u.boolean().optional(),layout:u.array(go).default([]),fonts:u.array(u.string()).optional(),signals:u.record(u.string(),u.unknown()).optional(),effects:u.array(u.unknown()).optional(),vision:u.unknown().optional(),onRequestFrame:u.custom().optional()}).strict();h();var iu=u.enum(["cut","carrierMatchCut","cameraWhip","focusPullDissolve","irisAperture","pushDirectional"]),ou=u.object({sourceLayerId:u.string(),targetLayerId:u.string(),mode:u.enum(["exact","preserveVelocity","morph"]).default("preserveVelocity"),blendFrames:u.number().int().min(0).max(30).default(0)}).strict(),ip=u.object({id:u.string(),chapter:u.enum(["hook","tension","solution","feature_spotlight","outro","custom"]).default("custom"),durationMs:u.number().positive().optional(),durationFrames:u.number().int().positive().optional(),transitionOut:u.object({type:iu.default("cut"),durationFrames:u.number().int().min(0).default(0),carrier:ou.optional(),whipDirection:u.enum(["left","right","up","down"]).default("left")}).default({type:"cut",durationFrames:0,whipDirection:"left"})}).passthrough();function op(t,e){return{x:t.x,y:t.y,scale:t.scale,vx:t.vx,vy:t.vy,...e}}function au(t,e=60){let r=0,n=[];for(let a of t){let s=r,l=a.durationFrames??(a.durationMs?Math.round(a.durationMs/1e3*e):60);n.push({sceneId:a.id,startFrame:s,durationFrames:l});let c=a.transitionOverlap??a.transitionOut?.durationFrames??0;r+=Math.max(1,l-c)}let i=r,o=Math.round(i/e*1e3);return{totalFrames:i,totalDurationMs:o,sceneOffsets:n}}var Ar=class t{id;chapter;durationMs;durationFrames;transitionOut;layout;constructor(e){this.id=e.id,this.chapter=e.chapter??"custom",this.durationMs=e.durationMs,this.durationFrames=e.durationFrames,this.transitionOut={type:e.transitionOut?.type??"cut",durationFrames:e.transitionOut?.durationFrames??0,carrier:e.transitionOut?.carrier,whipDirection:e.transitionOut?.whipDirection??"left"},this.layout=e.layout??[]}static create(e){return new t(e)}},bo=class t{fps;width;height;backgroundColor;fonts;signals;scenes=[];constructor(e={}){if(this.fps=e.fps??60,this.width=e.width??1920,this.height=e.height??1080,this.backgroundColor=e.backgroundColor??"#ffffff",this.fonts=e.fonts,this.signals=e.signals,e.scenes)for(let r of e.scenes)this.addScene(r)}static create(e={}){return new t(e)}addScene(e){let r=e instanceof Ar?e:new Ar(e);return this.scenes.push(r),this}getScenes(){return this.scenes}calculateTimeline(){return au(this.scenes,this.fps)}toProgram(){let e=this.calculateTimeline(),r=[];for(let n=0;n<this.scenes.length;n++){let i=this.scenes[n],o=e.sceneOffsets[n];if(o)for(let a of i.layout){let s={...a};s.startFrame=(s.startFrame??0)+o.startFrame,s.durationFrames===void 0&&(s.durationFrames=o.durationFrames),r.push(s)}}return{width:this.width,height:this.height,backgroundColor:this.backgroundColor,fps:this.fps,volume:1,mode:"Video",layout:r,fonts:this.fonts,signals:this.signals}}};h();h();h();h();h();h();function su(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function vt(t,e){if(!isFinite(t)||t===0)return null;var r=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"),n=t.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+t.slice(r+1)]}function je(t){return t=vt(Math.abs(t)),t?t[1]:NaN}h();function uu(t,e){return function(r,n){for(var i=r.length,o=[],a=0,s=t[0],l=0;i>0&&s>0&&(l+s+1>n&&(s=Math.max(1,n-l)),o.push(r.substring(i-=s,i+s)),!((l+=s+1)>n));)s=t[a=(a+1)%t.length];return o.reverse().join(e)}}h();function lu(t){return function(e){return e.replace(/[0-9]/g,function(r){return t[+r]})}}h();var ap=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function at(t){if(!(e=ap.exec(t)))throw new Error("invalid format: "+t);var e;return new Pn({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}at.prototype=Pn.prototype;function Pn(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}Pn.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};h();function cu(t){e:for(var e=t.length,r=1,n=-1,i;r<e;++r)switch(t[r]){case".":n=i=r;break;case"0":n===0&&(n=r),i=r;break;default:if(!+t[r])break e;n>0&&(n=0);break}return n>0?t.slice(0,n)+t.slice(i+1):t}h();h();var Nr;function du(t,e){var r=vt(t,e);if(!r)return Nr=void 0,t.toPrecision(e);var n=r[0],i=r[1],o=i-(Nr=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=n.length;return o===a?n:o>a?n+new Array(o-a+1).join("0"):o>0?n.slice(0,o)+"."+n.slice(o):"0."+new Array(1-o).join("0")+vt(t,Math.max(0,e+o-1))[0]}h();function yo(t,e){var r=vt(t,e);if(!r)return t+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}var xo={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:su,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>yo(t*100,e),r:yo,s:du,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};h();function vo(t){return t}var mu=Array.prototype.map,pu=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function fu(t){var e=t.grouping===void 0||t.thousands===void 0?vo:uu(mu.call(t.grouping,Number),t.thousands+""),r=t.currency===void 0?"":t.currency[0]+"",n=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",o=t.numerals===void 0?vo:lu(mu.call(t.numerals,String)),a=t.percent===void 0?"%":t.percent+"",s=t.minus===void 0?"\u2212":t.minus+"",l=t.nan===void 0?"NaN":t.nan+"";function c(d,p){d=at(d);var f=d.fill,b=d.align,g=d.sign,y=d.symbol,k=d.zero,D=d.width,T=d.comma,w=d.precision,S=d.trim,x=d.type;x==="n"?(T=!0,x="g"):xo[x]||(w===void 0&&(w=12),S=!0,x="g"),(k||f==="0"&&b==="=")&&(k=!0,f="0",b="=");var N=(p&&p.prefix!==void 0?p.prefix:"")+(y==="$"?r:y==="#"&&/[boxX]/.test(x)?"0"+x.toLowerCase():""),R=(y==="$"?n:/[%p]/.test(x)?a:"")+(p&&p.suffix!==void 0?p.suffix:""),_=xo[x],H=/[defgprs%]/.test(x);w=w===void 0?6:/[gprs]/.test(x)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function ee(E){var P=N,M=R,Y,X,z;if(x==="c")M=_(E)+M,E="";else{E=+E;var U=E<0||1/E<0;if(E=isNaN(E)?l:_(Math.abs(E),w),S&&(E=cu(E)),U&&+E==0&&g!=="+"&&(U=!1),P=(U?g==="("?g:s:g==="-"||g==="("?"":g)+P,M=(x==="s"&&!isNaN(E)&&Nr!==void 0?pu[8+Nr/3]:"")+M+(U&&g==="("?")":""),H){for(Y=-1,X=E.length;++Y<X;)if(z=E.charCodeAt(Y),48>z||z>57){M=(z===46?i+E.slice(Y+1):E.slice(Y))+M,E=E.slice(0,Y);break}}}T&&!k&&(E=e(E,1/0));var ne=P.length+E.length+M.length,ce=ne<D?new Array(D-ne+1).join(f):"";switch(T&&k&&(E=e(ce+E,ce.length?D-M.length:1/0),ce=""),b){case"<":E=P+E+M+ce;break;case"=":E=P+ce+E+M;break;case"^":E=ce.slice(0,ne=ce.length>>1)+P+E+M+ce.slice(ne);break;default:E=ce+P+E+M;break}return o(E)}return ee.toString=function(){return d+""},ee}function m(d,p){var f=Math.max(-8,Math.min(8,Math.floor(je(p)/3)))*3,b=Math.pow(10,-f),g=c((d=at(d),d.type="f",d),{suffix:pu[8+f/3]});return function(y){return g(b*y)}}return{format:c,formatPrefix:m}}var Mn,Ht,Tn;wo({thousands:",",grouping:[3],currency:["$",""]});function wo(t){return Mn=fu(t),Ht=Mn.format,Tn=Mn.formatPrefix,Mn}h();function So(t){return Math.max(0,-je(Math.abs(t)))}h();function ko(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(je(e)/3)))*3-je(Math.abs(t)))}h();function Po(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,je(e)-je(t))+1}h();h();h();h();h();function wt(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}h();h();function Mo(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function St(t){let e,r,n;t.length!==2?(e=wt,r=(s,l)=>wt(t(s),l),n=(s,l)=>t(s)-l):(e=t===wt||t===Mo?t:sp,r=t,n=t);function i(s,l,c=0,m=s.length){if(c<m){if(e(l,l)!==0)return m;do{let d=c+m>>>1;r(s[d],l)<0?c=d+1:m=d}while(c<m)}return c}function o(s,l,c=0,m=s.length){if(c<m){if(e(l,l)!==0)return m;do{let d=c+m>>>1;r(s[d],l)<=0?c=d+1:m=d}while(c<m)}return c}function a(s,l,c=0,m=s.length){let d=i(s,l,c,m-1);return d>c&&n(s[d-1],l)>-n(s[d],l)?d-1:d}return{left:i,center:a,right:o}}function sp(){return 0}h();function To(t){return t===null?NaN:+t}var hu=St(wt),gu=hu.right,up=hu.left,lp=St(To).center,Co=gu;h();var Yt=class extends Map{constructor(e,r=mp){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),e!=null)for(let[n,i]of e)this.set(n,i)}get(e){return super.get(bu(this,e))}has(e){return super.has(bu(this,e))}set(e,r){return super.set(cp(this,e),r)}delete(e){return super.delete(dp(this,e))}};function bu({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):r}function cp({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):(t.set(n,r),r)}function dp({_intern:t,_key:e},r){let n=e(r);return t.has(n)&&(r=t.get(n),t.delete(n)),r}function mp(t){return t!==null&&typeof t=="object"?t.valueOf():t}h();var pp=Math.sqrt(50),fp=Math.sqrt(10),hp=Math.sqrt(2);function Cn(t,e,r){let n=(e-t)/Math.max(0,r),i=Math.floor(Math.log10(n)),o=n/Math.pow(10,i),a=o>=pp?10:o>=fp?5:o>=hp?2:1,s,l,c;return i<0?(c=Math.pow(10,-i)/a,s=Math.round(t*c),l=Math.round(e*c),s/c<t&&++s,l/c>e&&--l,c=-c):(c=Math.pow(10,i)*a,s=Math.round(t/c),l=Math.round(e/c),s*c<t&&++s,l*c>e&&--l),l<s&&.5<=r&&r<2?Cn(t,e,r*2):[s,l,c]}function Dn(t,e,r){if(e=+e,t=+t,r=+r,!(r>0))return[];if(t===e)return[t];let n=e<t,[i,o,a]=n?Cn(e,t,r):Cn(t,e,r);if(!(o>=i))return[];let s=o-i+1,l=new Array(s);if(n)if(a<0)for(let c=0;c<s;++c)l[c]=(o-c)/-a;else for(let c=0;c<s;++c)l[c]=(o-c)*a;else if(a<0)for(let c=0;c<s;++c)l[c]=(i+c)/-a;else for(let c=0;c<s;++c)l[c]=(i+c)*a;return l}function Or(t,e,r){return e=+e,t=+t,r=+r,Cn(t,e,r)[2]}function Xt(t,e,r){e=+e,t=+t,r=+r;let n=e<t,i=n?Or(e,t,r):Or(t,e,r);return(n?-1:1)*(i<0?1/-i:i)}h();function An(t,e,r){t=+t,e=+e,r=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+r;for(var n=-1,i=Math.max(0,Math.ceil((e-t)/r))|0,o=new Array(i);++n<i;)o[n]=t+n*r;return o}h();function st(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}h();var yu=Symbol("implicit");function Nn(){var t=new Yt,e=[],r=[],n=yu;function i(o){let a=t.get(o);if(a===void 0){if(n!==yu)return n;t.set(o,a=e.push(o)-1)}return r[a%r.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new Yt;for(let a of o)t.has(a)||t.set(a,e.push(a)-1);return i},i.range=function(o){return arguments.length?(r=Array.from(o),i):r.slice()},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return Nn(e,r).unknown(n)},st.apply(i,arguments),i}function Rr(){var t=Nn().unknown(void 0),e=t.domain,r=t.range,n=0,i=1,o,a,s=!1,l=0,c=0,m=.5;delete t.unknown;function d(){var p=e().length,f=i<n,b=f?i:n,g=f?n:i;o=(g-b)/Math.max(1,p-l+c*2),s&&(o=Math.floor(o)),b+=(g-b-o*(p-l))*m,a=o*(1-l),s&&(b=Math.round(b),a=Math.round(a));var y=An(p).map(function(k){return b+o*k});return r(f?y.reverse():y)}return t.domain=function(p){return arguments.length?(e(p),d()):e()},t.range=function(p){return arguments.length?([n,i]=p,n=+n,i=+i,d()):[n,i]},t.rangeRound=function(p){return[n,i]=p,n=+n,i=+i,s=!0,d()},t.bandwidth=function(){return a},t.step=function(){return o},t.round=function(p){return arguments.length?(s=!!p,d()):s},t.padding=function(p){return arguments.length?(l=Math.min(1,c=+p),d()):l},t.paddingInner=function(p){return arguments.length?(l=Math.min(1,p),d()):l},t.paddingOuter=function(p){return arguments.length?(c=+p,d()):c},t.align=function(p){return arguments.length?(m=Math.max(0,Math.min(1,p)),d()):m},t.copy=function(){return Rr(e(),[n,i]).round(s).paddingInner(l).paddingOuter(c).align(m)},st.apply(d(),arguments)}h();h();h();h();h();h();h();function On(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function Do(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}function Lr(){}var Fr=.7,Bn=1/Fr,qt="\\s*([+-]?\\d+)\\s*",Br="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",$e="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",gp=/^#([0-9a-f]{3,8})$/,bp=new RegExp(`^rgb\\(${qt},${qt},${qt}\\)$`),yp=new RegExp(`^rgb\\(${$e},${$e},${$e}\\)$`),xp=new RegExp(`^rgba\\(${qt},${qt},${qt},${Br}\\)$`),vp=new RegExp(`^rgba\\(${$e},${$e},${$e},${Br}\\)$`),wp=new RegExp(`^hsl\\(${Br},${$e},${$e}\\)$`),Sp=new RegExp(`^hsla\\(${Br},${$e},${$e},${Br}\\)$`),xu={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};On(Lr,ut,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:vu,formatHex:vu,formatHex8:kp,formatHsl:Pp,formatRgb:wu,toString:wu});function vu(){return this.rgb().formatHex()}function kp(){return this.rgb().formatHex8()}function Pp(){return Cu(this).formatHsl()}function wu(){return this.rgb().formatRgb()}function ut(t){var e,r;return t=(t+"").trim().toLowerCase(),(e=gp.exec(t))?(r=e[1].length,e=parseInt(e[1],16),r===6?Su(e):r===3?new Ee(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):r===8?Rn(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):r===4?Rn(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=bp.exec(t))?new Ee(e[1],e[2],e[3],1):(e=yp.exec(t))?new Ee(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=xp.exec(t))?Rn(e[1],e[2],e[3],e[4]):(e=vp.exec(t))?Rn(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=wp.exec(t))?Mu(e[1],e[2]/100,e[3]/100,1):(e=Sp.exec(t))?Mu(e[1],e[2]/100,e[3]/100,e[4]):xu.hasOwnProperty(t)?Su(xu[t]):t==="transparent"?new Ee(NaN,NaN,NaN,0):null}function Su(t){return new Ee(t>>16&255,t>>8&255,t&255,1)}function Rn(t,e,r,n){return n<=0&&(t=e=r=NaN),new Ee(t,e,r,n)}function Mp(t){return t instanceof Lr||(t=ut(t)),t?(t=t.rgb(),new Ee(t.r,t.g,t.b,t.opacity)):new Ee}function Zt(t,e,r,n){return arguments.length===1?Mp(t):new Ee(t,e,r,n??1)}function Ee(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}On(Ee,Zt,Do(Lr,{brighter(t){return t=t==null?Bn:Math.pow(Bn,t),new Ee(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Fr:Math.pow(Fr,t),new Ee(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Ee(Pt(this.r),Pt(this.g),Pt(this.b),Ln(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:ku,formatHex:ku,formatHex8:Tp,formatRgb:Pu,toString:Pu}));function ku(){return`#${kt(this.r)}${kt(this.g)}${kt(this.b)}`}function Tp(){return`#${kt(this.r)}${kt(this.g)}${kt(this.b)}${kt((isNaN(this.opacity)?1:this.opacity)*255)}`}function Pu(){let t=Ln(this.opacity);return`${t===1?"rgb(":"rgba("}${Pt(this.r)}, ${Pt(this.g)}, ${Pt(this.b)}${t===1?")":`, ${t})`}`}function Ln(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Pt(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function kt(t){return t=Pt(t),(t<16?"0":"")+t.toString(16)}function Mu(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new ze(t,e,r,n)}function Cu(t){if(t instanceof ze)return new ze(t.h,t.s,t.l,t.opacity);if(t instanceof Lr||(t=ut(t)),!t)return new ze;if(t instanceof ze)return t;t=t.rgb();var e=t.r/255,r=t.g/255,n=t.b/255,i=Math.min(e,r,n),o=Math.max(e,r,n),a=NaN,s=o-i,l=(o+i)/2;return s?(e===o?a=(r-n)/s+(r<n)*6:r===o?a=(n-e)/s+2:a=(e-r)/s+4,s/=l<.5?o+i:2-o-i,a*=60):s=l>0&&l<1?0:a,new ze(a,s,l,t.opacity)}function Du(t,e,r,n){return arguments.length===1?Cu(t):new ze(t,e,r,n??1)}function ze(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}On(ze,Du,Do(Lr,{brighter(t){return t=t==null?Bn:Math.pow(Bn,t),new ze(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Fr:Math.pow(Fr,t),new ze(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,i=2*r-n;return new Ee(Ao(t>=240?t-240:t+120,i,n),Ao(t,i,n),Ao(t<120?t+240:t-120,i,n),this.opacity)},clamp(){return new ze(Tu(this.h),Fn(this.s),Fn(this.l),Ln(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let t=Ln(this.opacity);return`${t===1?"hsl(":"hsla("}${Tu(this.h)}, ${Fn(this.s)*100}%, ${Fn(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Tu(t){return t=(t||0)%360,t<0?t+360:t}function Fn(t){return Math.max(0,Math.min(1,t||0))}function Ao(t,e,r){return(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)*255}h();h();function No(t,e,r,n,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a)*r+(1+3*t+3*o-3*a)*n+a*i)/6}function Au(t){var e=t.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,e-1):Math.floor(r*e),i=t[n],o=t[n+1],a=n>0?t[n-1]:2*i-o,s=n<e-1?t[n+2]:2*o-i;return No((r-n/e)*e,a,i,o,s)}}h();function Nu(t){var e=t.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*e),i=t[(n+e-1)%e],o=t[n%e],a=t[(n+1)%e],s=t[(n+2)%e];return No((r-n/e)*e,i,o,a,s)}}h();h();var Er=t=>()=>t;function Cp(t,e){return function(r){return t+r*e}}function Dp(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}function Ou(t){return(t=+t)==1?En:function(e,r){return r-e?Dp(e,r,t):Er(isNaN(e)?r:e)}}function En(t,e){var r=e-t;return r?Cp(t,r):Er(isNaN(t)?e:t)}var Oo=(function t(e){var r=Ou(e);function n(i,o){var a=r((i=Zt(i)).r,(o=Zt(o)).r),s=r(i.g,o.g),l=r(i.b,o.b),c=En(i.opacity,o.opacity);return function(m){return i.r=a(m),i.g=s(m),i.b=l(m),i.opacity=c(m),i+""}}return n.gamma=t,n})(1);function Ru(t){return function(e){var r=e.length,n=new Array(r),i=new Array(r),o=new Array(r),a,s;for(a=0;a<r;++a)s=Zt(e[a]),n[a]=s.r||0,i[a]=s.g||0,o[a]=s.b||0;return n=t(n),i=t(i),o=t(o),s.opacity=1,function(l){return s.r=n(l),s.g=i(l),s.b=o(l),s+""}}}var Rw=Ru(Au),Fw=Ru(Nu);h();h();function Fu(t,e){e||(e=[]);var r=t?Math.min(e.length,t.length):0,n=e.slice(),i;return function(o){for(i=0;i<r;++i)n[i]=t[i]*(1-o)+e[i]*o;return n}}function Bu(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Lu(t,e){var r=e?e.length:0,n=t?Math.min(r,t.length):0,i=new Array(n),o=new Array(r),a;for(a=0;a<n;++a)i[a]=Mt(t[a],e[a]);for(;a<r;++a)o[a]=e[a];return function(s){for(a=0;a<n;++a)o[a]=i[a](s);return o}}h();function Eu(t,e){var r=new Date;return t=+t,e=+e,function(n){return r.setTime(t*(1-n)+e*n),r}}h();function lt(t,e){return t=+t,e=+e,function(r){return t*(1-r)+e*r}}h();function Vu(t,e){var r={},n={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?r[i]=Mt(t[i],e[i]):n[i]=e[i];return function(o){for(i in r)n[i]=r[i](o);return n}}h();var Fo=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Ro=new RegExp(Fo.source,"g");function Ap(t){return function(){return t}}function Np(t){return function(e){return t(e)+""}}function Iu(t,e){var r=Fo.lastIndex=Ro.lastIndex=0,n,i,o,a=-1,s=[],l=[];for(t=t+"",e=e+"";(n=Fo.exec(t))&&(i=Ro.exec(e));)(o=i.index)>r&&(o=e.slice(r,o),s[a]?s[a]+=o:s[++a]=o),(n=n[0])===(i=i[0])?s[a]?s[a]+=i:s[++a]=i:(s[++a]=null,l.push({i:a,x:lt(n,i)})),r=Ro.lastIndex;return r<e.length&&(o=e.slice(r),s[a]?s[a]+=o:s[++a]=o),s.length<2?l[0]?Np(l[0].x):Ap(e):(e=l.length,function(c){for(var m=0,d;m<e;++m)s[(d=l[m]).i]=d.x(c);return s.join("")})}function Mt(t,e){var r=typeof e,n;return e==null||r==="boolean"?Er(e):(r==="number"?lt:r==="string"?(n=ut(e))?(e=n,Oo):Iu:e instanceof ut?Oo:e instanceof Date?Eu:Bu(e)?Fu:Array.isArray(e)?Lu:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?Vu:lt)(t,e)}h();function Bo(t,e){return t=+t,e=+e,function(r){return Math.round(t*(1-r)+e*r)}}h();function Lo(t){return function(){return t}}h();function Eo(t){return+t}var zu=[0,1];function Kt(t){return t}function Vo(t,e){return(e-=t=+t)?function(r){return(r-t)/e}:Lo(isNaN(e)?NaN:.5)}function Op(t,e){var r;return t>e&&(r=t,t=e,e=r),function(n){return Math.max(t,Math.min(e,n))}}function Rp(t,e,r){var n=t[0],i=t[1],o=e[0],a=e[1];return i<n?(n=Vo(i,n),o=r(a,o)):(n=Vo(n,i),o=r(o,a)),function(s){return o(n(s))}}function Fp(t,e,r){var n=Math.min(t.length,e.length)-1,i=new Array(n),o=new Array(n),a=-1;for(t[n]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++a<n;)i[a]=Vo(t[a],t[a+1]),o[a]=r(e[a],e[a+1]);return function(s){var l=Co(t,s,1,n)-1;return o[l](i[l](s))}}function Vn(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Bp(){var t=zu,e=zu,r=Mt,n,i,o,a=Kt,s,l,c;function m(){var p=Math.min(t.length,e.length);return a!==Kt&&(a=Op(t[0],t[p-1])),s=p>2?Fp:Rp,l=c=null,d}function d(p){return p==null||isNaN(p=+p)?o:(l||(l=s(t.map(n),e,r)))(n(a(p)))}return d.invert=function(p){return a(i((c||(c=s(e,t.map(n),lt)))(p)))},d.domain=function(p){return arguments.length?(t=Array.from(p,Eo),m()):t.slice()},d.range=function(p){return arguments.length?(e=Array.from(p),m()):e.slice()},d.rangeRound=function(p){return e=Array.from(p),r=Bo,m()},d.clamp=function(p){return arguments.length?(a=p?!0:Kt,m()):a!==Kt},d.interpolate=function(p){return arguments.length?(r=p,m()):r},d.unknown=function(p){return arguments.length?(o=p,d):o},function(p,f){return n=p,i=f,m()}}function Vr(){return Bp()(Kt,Kt)}h();function Io(t,e,r,n){var i=Xt(t,e,r),o;switch(n=at(n??",f"),n.type){case"s":{var a=Math.max(Math.abs(t),Math.abs(e));return n.precision==null&&!isNaN(o=ko(i,a))&&(n.precision=o),Tn(n,a)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(o=Po(i,Math.max(Math.abs(t),Math.abs(e))))&&(n.precision=o-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(o=So(i))&&(n.precision=o-(n.type==="%")*2);break}}return Ht(n)}function Lp(t){var e=t.domain;return t.ticks=function(r){var n=e();return Dn(n[0],n[n.length-1],r??10)},t.tickFormat=function(r,n){var i=e();return Io(i[0],i[i.length-1],r??10,n)},t.nice=function(r){r==null&&(r=10);var n=e(),i=0,o=n.length-1,a=n[i],s=n[o],l,c,m=10;for(s<a&&(c=a,a=s,s=c,c=i,i=o,o=c);m-- >0;){if(c=Or(a,s,r),c===l)return n[i]=a,n[o]=s,e(n);if(c>0)a=Math.floor(a/c)*c,s=Math.ceil(s/c)*c;else if(c<0)a=Math.ceil(a*c)/c,s=Math.floor(s*c)/c;else break;l=c}return t},t}function Jt(){var t=Vr();return t.copy=function(){return Vn(t,Jt())},st.apply(t,arguments),Lp(t)}h();function zo(t,e){t=t.slice();var r=0,n=t.length-1,i=t[r],o=t[n],a;return o<i&&(a=r,r=n,n=a,a=i,i=o,o=a),t[r]=e.floor(i),t[n]=e.ceil(o),t}h();h();h();var Uo=new Date,_o=new Date;function de(t,e,r,n){function i(o){return t(o=arguments.length===0?new Date:new Date(+o)),o}return i.floor=o=>(t(o=new Date(+o)),o),i.ceil=o=>(t(o=new Date(o-1)),e(o,1),t(o),o),i.round=o=>{let a=i(o),s=i.ceil(o);return o-a<s-o?a:s},i.offset=(o,a)=>(e(o=new Date(+o),a==null?1:Math.floor(a)),o),i.range=(o,a,s)=>{let l=[];if(o=i.ceil(o),s=s==null?1:Math.floor(s),!(o<a)||!(s>0))return l;let c;do l.push(c=new Date(+o)),e(o,s),t(o);while(c<o&&o<a);return l},i.filter=o=>de(a=>{if(a>=a)for(;t(a),!o(a);)a.setTime(a-1)},(a,s)=>{if(a>=a)if(s<0)for(;++s<=0;)for(;e(a,-1),!o(a););else for(;--s>=0;)for(;e(a,1),!o(a););}),r&&(i.count=(o,a)=>(Uo.setTime(+o),_o.setTime(+a),t(Uo),t(_o),Math.floor(r(Uo,_o))),i.every=o=>(o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(n?a=>n(a)%o===0:a=>i.count(0,a)%o===0):i)),i}h();var Ir=de(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);Ir.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?de(e=>{e.setTime(Math.floor(e/t)*t)},(e,r)=>{e.setTime(+e+r*t)},(e,r)=>(r-e)/t):Ir);var U1=Ir.range;h();var We=de(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*1e3)},(t,e)=>(e-t)/1e3,t=>t.getUTCSeconds()),Uu=We.range;h();var In=de(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getMinutes()),Ep=In.range,Qt=de(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getUTCMinutes()),Vp=Qt.range;h();var zn=de(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3-t.getMinutes()*6e4)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getHours()),Ip=zn.range,er=de(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getUTCHours()),zp=er.range;h();var Dt=de(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5,t=>t.getDate()-1),Up=Dt.range,At=de(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>t.getUTCDate()-1),_p=At.range,Un=de(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>Math.floor(t/864e5)),Gp=Un.range;h();function Nt(t){return de(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,r)=>{e.setDate(e.getDate()+r*7)},(e,r)=>(r-e-(r.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/6048e5)}var Ot=Nt(0),tr=Nt(1),Gu=Nt(2),ju=Nt(3),ct=Nt(4),$u=Nt(5),Wu=Nt(6),Hu=Ot.range,jp=tr.range,$p=Gu.range,Wp=ju.range,Hp=ct.range,Yp=$u.range,Xp=Wu.range;function Rt(t){return de(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCDate(e.getUTCDate()+r*7)},(e,r)=>(r-e)/6048e5)}var Je=Rt(0),rr=Rt(1),Yu=Rt(2),Xu=Rt(3),dt=Rt(4),qu=Rt(5),Zu=Rt(6),Ku=Je.range,qp=rr.range,Zp=Yu.range,Kp=Xu.range,Jp=dt.range,Qp=qu.range,ef=Zu.range;h();var _n=de(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth()),tf=_n.range,nr=de(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth()),rf=nr.range;h();var Ue=de(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());Ue.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:de(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,r)=>{e.setFullYear(e.getFullYear()+r*t)});var nf=Ue.range,Ve=de(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());Ve.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:de(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCFullYear(e.getUTCFullYear()+r*t)});var of=Ve.range;h();function Qu(t,e,r,n,i,o){let a=[[We,1,1e3],[We,5,5*1e3],[We,15,15*1e3],[We,30,30*1e3],[o,1,6e4],[o,5,5*6e4],[o,15,15*6e4],[o,30,30*6e4],[i,1,36e5],[i,3,3*36e5],[i,6,6*36e5],[i,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[e,1,2592e6],[e,3,3*2592e6],[t,1,31536e6]];function s(c,m,d){let p=m<c;p&&([c,m]=[m,c]);let f=d&&typeof d.range=="function"?d:l(c,m,d),b=f?f.range(c,+m+1):[];return p?b.reverse():b}function l(c,m,d){let p=Math.abs(m-c)/d,f=St(([,,y])=>y).right(a,p);if(f===a.length)return t.every(Xt(c/31536e6,m/31536e6,d));if(f===0)return Ir.every(Math.max(Xt(c,m,d),1));let[b,g]=a[p/a[f-1][2]<a[f][2]/p?f-1:f];return b.every(g)}return[s,l]}var[Go,jo]=Qu(Ve,nr,Je,Un,er,Qt),[sf,uf]=Qu(Ue,_n,Ot,Dt,zn,In);h();h();h();function $o(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Wo(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Ur(t,e,r){return{y:t,m:e,d:r,H:0,M:0,S:0,L:0}}function Ho(t){var e=t.dateTime,r=t.date,n=t.time,i=t.periods,o=t.days,a=t.shortDays,s=t.months,l=t.shortMonths,c=_r(i),m=Gr(i),d=_r(o),p=Gr(o),f=_r(a),b=Gr(a),g=_r(s),y=Gr(s),k=_r(l),D=Gr(l),T={a:z,A:U,b:ne,B:ce,c:null,d:ol,e:ol,f:Of,g:_f,G:jf,H:Df,I:Af,j:Nf,L:cl,m:Rf,M:Ff,p:we,q:me,Q:ul,s:ll,S:Bf,u:Lf,U:Ef,V:Vf,w:If,W:zf,x:null,X:null,y:Uf,Y:Gf,Z:$f,"%":sl},w={a:B,A:V,b:j,B:Z,c:null,d:al,e:al,f:Xf,g:ih,G:ah,H:Wf,I:Hf,j:Yf,L:ml,m:qf,M:Zf,p:$,q:Q,Q:ul,s:ll,S:Kf,u:Jf,U:Qf,V:eh,w:th,W:rh,x:null,X:null,y:nh,Y:oh,Z:sh,"%":sl},S={a:H,A:ee,b:E,B:P,c:M,d:nl,e:nl,f:Pf,g:rl,G:tl,H:il,I:il,j:vf,L:kf,m:xf,M:wf,p:_,q:yf,Q:Tf,s:Cf,S:Sf,u:pf,U:ff,V:hf,w:mf,W:gf,x:Y,X,y:rl,Y:tl,Z:bf,"%":Mf};T.x=x(r,T),T.X=x(n,T),T.c=x(e,T),w.x=x(r,w),w.X=x(n,w),w.c=x(e,w);function x(O,F){return function(W){var A=[],Se=-1,ue=0,De=O.length,Ae,Xe,en;for(W instanceof Date||(W=new Date(+W));++Se<De;)O.charCodeAt(Se)===37&&(A.push(O.slice(ue,Se)),(Xe=el[Ae=O.charAt(++Se)])!=null?Ae=O.charAt(++Se):Xe=Ae==="e"?" ":"0",(en=F[Ae])&&(Ae=en(W,Xe)),A.push(Ae),ue=Se+1);return A.push(O.slice(ue,Se)),A.join("")}}function N(O,F){return function(W){var A=Ur(1900,void 0,1),Se=R(A,O,W+="",0),ue,De;if(Se!=W.length)return null;if("Q"in A)return new Date(A.Q);if("s"in A)return new Date(A.s*1e3+("L"in A?A.L:0));if(F&&!("Z"in A)&&(A.Z=0),"p"in A&&(A.H=A.H%12+A.p*12),A.m===void 0&&(A.m="q"in A?A.q:0),"V"in A){if(A.V<1||A.V>53)return null;"w"in A||(A.w=1),"Z"in A?(ue=Wo(Ur(A.y,0,1)),De=ue.getUTCDay(),ue=De>4||De===0?rr.ceil(ue):rr(ue),ue=At.offset(ue,(A.V-1)*7),A.y=ue.getUTCFullYear(),A.m=ue.getUTCMonth(),A.d=ue.getUTCDate()+(A.w+6)%7):(ue=$o(Ur(A.y,0,1)),De=ue.getDay(),ue=De>4||De===0?tr.ceil(ue):tr(ue),ue=Dt.offset(ue,(A.V-1)*7),A.y=ue.getFullYear(),A.m=ue.getMonth(),A.d=ue.getDate()+(A.w+6)%7)}else("W"in A||"U"in A)&&("w"in A||(A.w="u"in A?A.u%7:"W"in A?1:0),De="Z"in A?Wo(Ur(A.y,0,1)).getUTCDay():$o(Ur(A.y,0,1)).getDay(),A.m=0,A.d="W"in A?(A.w+6)%7+A.W*7-(De+5)%7:A.w+A.U*7-(De+6)%7);return"Z"in A?(A.H+=A.Z/100|0,A.M+=A.Z%100,Wo(A)):$o(A)}}function R(O,F,W,A){for(var Se=0,ue=F.length,De=W.length,Ae,Xe;Se<ue;){if(A>=De)return-1;if(Ae=F.charCodeAt(Se++),Ae===37){if(Ae=F.charAt(Se++),Xe=S[Ae in el?F.charAt(Se++):Ae],!Xe||(A=Xe(O,W,A))<0)return-1}else if(Ae!=W.charCodeAt(A++))return-1}return A}function _(O,F,W){var A=c.exec(F.slice(W));return A?(O.p=m.get(A[0].toLowerCase()),W+A[0].length):-1}function H(O,F,W){var A=f.exec(F.slice(W));return A?(O.w=b.get(A[0].toLowerCase()),W+A[0].length):-1}function ee(O,F,W){var A=d.exec(F.slice(W));return A?(O.w=p.get(A[0].toLowerCase()),W+A[0].length):-1}function E(O,F,W){var A=k.exec(F.slice(W));return A?(O.m=D.get(A[0].toLowerCase()),W+A[0].length):-1}function P(O,F,W){var A=g.exec(F.slice(W));return A?(O.m=y.get(A[0].toLowerCase()),W+A[0].length):-1}function M(O,F,W){return R(O,e,F,W)}function Y(O,F,W){return R(O,r,F,W)}function X(O,F,W){return R(O,n,F,W)}function z(O){return a[O.getDay()]}function U(O){return o[O.getDay()]}function ne(O){return l[O.getMonth()]}function ce(O){return s[O.getMonth()]}function we(O){return i[+(O.getHours()>=12)]}function me(O){return 1+~~(O.getMonth()/3)}function B(O){return a[O.getUTCDay()]}function V(O){return o[O.getUTCDay()]}function j(O){return l[O.getUTCMonth()]}function Z(O){return s[O.getUTCMonth()]}function $(O){return i[+(O.getUTCHours()>=12)]}function Q(O){return 1+~~(O.getUTCMonth()/3)}return{format:function(O){var F=x(O+="",T);return F.toString=function(){return O},F},parse:function(O){var F=N(O+="",!1);return F.toString=function(){return O},F},utcFormat:function(O){var F=x(O+="",w);return F.toString=function(){return O},F},utcParse:function(O){var F=N(O+="",!0);return F.toString=function(){return O},F}}}var el={"-":"",_:" ",0:"0"},Pe=/^\s*\d+/,lf=/^%/,cf=/[\\^$*+?|[\]().{}]/g;function ae(t,e,r){var n=t<0?"-":"",i=(n?-t:t)+"",o=i.length;return n+(o<r?new Array(r-o+1).join(e)+i:i)}function df(t){return t.replace(cf,"\\$&")}function _r(t){return new RegExp("^(?:"+t.map(df).join("|")+")","i")}function Gr(t){return new Map(t.map((e,r)=>[e.toLowerCase(),r]))}function mf(t,e,r){var n=Pe.exec(e.slice(r,r+1));return n?(t.w=+n[0],r+n[0].length):-1}function pf(t,e,r){var n=Pe.exec(e.slice(r,r+1));return n?(t.u=+n[0],r+n[0].length):-1}function ff(t,e,r){var n=Pe.exec(e.slice(r,r+2));return n?(t.U=+n[0],r+n[0].length):-1}function hf(t,e,r){var n=Pe.exec(e.slice(r,r+2));return n?(t.V=+n[0],r+n[0].length):-1}function gf(t,e,r){var n=Pe.exec(e.slice(r,r+2));return n?(t.W=+n[0],r+n[0].length):-1}function tl(t,e,r){var n=Pe.exec(e.slice(r,r+4));return n?(t.y=+n[0],r+n[0].length):-1}function rl(t,e,r){var n=Pe.exec(e.slice(r,r+2));return n?(t.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function bf(t,e,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function yf(t,e,r){var n=Pe.exec(e.slice(r,r+1));return n?(t.q=n[0]*3-3,r+n[0].length):-1}function xf(t,e,r){var n=Pe.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function nl(t,e,r){var n=Pe.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function vf(t,e,r){var n=Pe.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function il(t,e,r){var n=Pe.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function wf(t,e,r){var n=Pe.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function Sf(t,e,r){var n=Pe.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function kf(t,e,r){var n=Pe.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function Pf(t,e,r){var n=Pe.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function Mf(t,e,r){var n=lf.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function Tf(t,e,r){var n=Pe.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function Cf(t,e,r){var n=Pe.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function ol(t,e){return ae(t.getDate(),e,2)}function Df(t,e){return ae(t.getHours(),e,2)}function Af(t,e){return ae(t.getHours()%12||12,e,2)}function Nf(t,e){return ae(1+Dt.count(Ue(t),t),e,3)}function cl(t,e){return ae(t.getMilliseconds(),e,3)}function Of(t,e){return cl(t,e)+"000"}function Rf(t,e){return ae(t.getMonth()+1,e,2)}function Ff(t,e){return ae(t.getMinutes(),e,2)}function Bf(t,e){return ae(t.getSeconds(),e,2)}function Lf(t){var e=t.getDay();return e===0?7:e}function Ef(t,e){return ae(Ot.count(Ue(t)-1,t),e,2)}function dl(t){var e=t.getDay();return e>=4||e===0?ct(t):ct.ceil(t)}function Vf(t,e){return t=dl(t),ae(ct.count(Ue(t),t)+(Ue(t).getDay()===4),e,2)}function If(t){return t.getDay()}function zf(t,e){return ae(tr.count(Ue(t)-1,t),e,2)}function Uf(t,e){return ae(t.getFullYear()%100,e,2)}function _f(t,e){return t=dl(t),ae(t.getFullYear()%100,e,2)}function Gf(t,e){return ae(t.getFullYear()%1e4,e,4)}function jf(t,e){var r=t.getDay();return t=r>=4||r===0?ct(t):ct.ceil(t),ae(t.getFullYear()%1e4,e,4)}function $f(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+ae(e/60|0,"0",2)+ae(e%60,"0",2)}function al(t,e){return ae(t.getUTCDate(),e,2)}function Wf(t,e){return ae(t.getUTCHours(),e,2)}function Hf(t,e){return ae(t.getUTCHours()%12||12,e,2)}function Yf(t,e){return ae(1+At.count(Ve(t),t),e,3)}function ml(t,e){return ae(t.getUTCMilliseconds(),e,3)}function Xf(t,e){return ml(t,e)+"000"}function qf(t,e){return ae(t.getUTCMonth()+1,e,2)}function Zf(t,e){return ae(t.getUTCMinutes(),e,2)}function Kf(t,e){return ae(t.getUTCSeconds(),e,2)}function Jf(t){var e=t.getUTCDay();return e===0?7:e}function Qf(t,e){return ae(Je.count(Ve(t)-1,t),e,2)}function pl(t){var e=t.getUTCDay();return e>=4||e===0?dt(t):dt.ceil(t)}function eh(t,e){return t=pl(t),ae(dt.count(Ve(t),t)+(Ve(t).getUTCDay()===4),e,2)}function th(t){return t.getUTCDay()}function rh(t,e){return ae(rr.count(Ve(t)-1,t),e,2)}function nh(t,e){return ae(t.getUTCFullYear()%100,e,2)}function ih(t,e){return t=pl(t),ae(t.getUTCFullYear()%100,e,2)}function oh(t,e){return ae(t.getUTCFullYear()%1e4,e,4)}function ah(t,e){var r=t.getUTCDay();return t=r>=4||r===0?dt(t):dt.ceil(t),ae(t.getUTCFullYear()%1e4,e,4)}function sh(){return"+0000"}function sl(){return"%"}function ul(t){return+t}function ll(t){return Math.floor(+t/1e3)}var ir,fl,hl,Gn,gl;Yo({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function Yo(t){return ir=Ho(t),fl=ir.format,hl=ir.parse,Gn=ir.utcFormat,gl=ir.utcParse,ir}function uh(t){return new Date(t)}function lh(t){return t instanceof Date?+t:+new Date(+t)}function Xo(t,e,r,n,i,o,a,s,l,c){var m=Vr(),d=m.invert,p=m.domain,f=c(".%L"),b=c(":%S"),g=c("%I:%M"),y=c("%I %p"),k=c("%a %d"),D=c("%b %d"),T=c("%B"),w=c("%Y");function S(x){return(l(x)<x?f:s(x)<x?b:a(x)<x?g:o(x)<x?y:n(x)<x?i(x)<x?k:D:r(x)<x?T:w)(x)}return m.invert=function(x){return new Date(d(x))},m.domain=function(x){return arguments.length?p(Array.from(x,lh)):p().map(uh)},m.ticks=function(x){var N=p();return t(N[0],N[N.length-1],x??10)},m.tickFormat=function(x,N){return N==null?S:c(N)},m.nice=function(x){var N=p();return(!x||typeof x.range!="function")&&(x=e(N[0],N[N.length-1],x??10)),x?p(zo(N,x)):m},m.copy=function(){return Vn(m,Xo(t,e,r,n,i,o,a,s,l,c))},m}h();function jn(){return st.apply(Xo(Go,jo,Ve,nr,Je,At,er,Qt,We,Gn).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}h();h();h();function K(t){return function(){return t}}h();var qo=Math.abs,Ce=Math.atan2,mt=Math.cos,bl=Math.max,$n=Math.min,_e=Math.sin,Ft=Math.sqrt,Le=1e-12,or=Math.PI,jr=or/2,ar=2*or;function yl(t){return t>1?0:t<-1?or:Math.acos(t)}function Zo(t){return t>=1?jr:t<=-1?-jr:Math.asin(t)}h();h();h();var Ko=Math.PI,Jo=2*Ko,Bt=1e-6,ch=Jo-Bt;function xl(t){this._+=t[0];for(let e=1,r=t.length;e<r;++e)this._+=arguments[e]+t[e]}function dh(t){let e=Math.floor(t);if(!(e>=0))throw new Error(`invalid digits: ${t}`);if(e>15)return xl;let r=10**e;return function(n){this._+=n[0];for(let i=1,o=n.length;i<o;++i)this._+=Math.round(arguments[i]*r)/r+n[i]}}var Lt=class{constructor(e){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=e==null?xl:dh(e)}moveTo(e,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(e,r){this._append`L${this._x1=+e},${this._y1=+r}`}quadraticCurveTo(e,r,n,i){this._append`Q${+e},${+r},${this._x1=+n},${this._y1=+i}`}bezierCurveTo(e,r,n,i,o,a){this._append`C${+e},${+r},${+n},${+i},${this._x1=+o},${this._y1=+a}`}arcTo(e,r,n,i,o){if(e=+e,r=+r,n=+n,i=+i,o=+o,o<0)throw new Error(`negative radius: ${o}`);let a=this._x1,s=this._y1,l=n-e,c=i-r,m=a-e,d=s-r,p=m*m+d*d;if(this._x1===null)this._append`M${this._x1=e},${this._y1=r}`;else if(p>Bt)if(!(Math.abs(d*l-c*m)>Bt)||!o)this._append`L${this._x1=e},${this._y1=r}`;else{let f=n-a,b=i-s,g=l*l+c*c,y=f*f+b*b,k=Math.sqrt(g),D=Math.sqrt(p),T=o*Math.tan((Ko-Math.acos((g+p-y)/(2*k*D)))/2),w=T/D,S=T/k;Math.abs(w-1)>Bt&&this._append`L${e+w*m},${r+w*d}`,this._append`A${o},${o},0,0,${+(d*f>m*b)},${this._x1=e+S*l},${this._y1=r+S*c}`}}arc(e,r,n,i,o,a){if(e=+e,r=+r,n=+n,a=!!a,n<0)throw new Error(`negative radius: ${n}`);let s=n*Math.cos(i),l=n*Math.sin(i),c=e+s,m=r+l,d=1^a,p=a?i-o:o-i;this._x1===null?this._append`M${c},${m}`:(Math.abs(this._x1-c)>Bt||Math.abs(this._y1-m)>Bt)&&this._append`L${c},${m}`,n&&(p<0&&(p=p%Jo+Jo),p>ch?this._append`A${n},${n},0,1,${d},${e-s},${r-l}A${n},${n},0,1,${d},${this._x1=c},${this._y1=m}`:p>Bt&&this._append`A${n},${n},0,${+(p>=Ko)},${d},${this._x1=e+n*Math.cos(o)},${this._y1=r+n*Math.sin(o)}`)}rect(e,r,n,i){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}};function vl(){return new Lt}vl.prototype=Lt.prototype;function sr(t){let e=3;return t.digits=function(r){if(!arguments.length)return e;if(r==null)e=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);e=n}return t},()=>new Lt(e)}function mh(t){return t.innerRadius}function ph(t){return t.outerRadius}function fh(t){return t.startAngle}function hh(t){return t.endAngle}function gh(t){return t&&t.padAngle}function bh(t,e,r,n,i,o,a,s){var l=r-t,c=n-e,m=a-i,d=s-o,p=d*l-m*c;if(!(p*p<Le))return p=(m*(e-o)-d*(t-i))/p,[t+p*l,e+p*c]}function Wn(t,e,r,n,i,o,a){var s=t-r,l=e-n,c=(a?o:-o)/Ft(s*s+l*l),m=c*l,d=-c*s,p=t+m,f=e+d,b=r+m,g=n+d,y=(p+b)/2,k=(f+g)/2,D=b-p,T=g-f,w=D*D+T*T,S=i-o,x=p*g-b*f,N=(T<0?-1:1)*Ft(bl(0,S*S*w-x*x)),R=(x*T-D*N)/w,_=(-x*D-T*N)/w,H=(x*T+D*N)/w,ee=(-x*D+T*N)/w,E=R-y,P=_-k,M=H-y,Y=ee-k;return E*E+P*P>M*M+Y*Y&&(R=H,_=ee),{cx:R,cy:_,x01:-m,y01:-d,x11:R*(i/S-1),y11:_*(i/S-1)}}function Hn(){var t=mh,e=ph,r=K(0),n=null,i=fh,o=hh,a=gh,s=null,l=sr(c);function c(){var m,d,p=+t.apply(this,arguments),f=+e.apply(this,arguments),b=i.apply(this,arguments)-jr,g=o.apply(this,arguments)-jr,y=qo(g-b),k=g>b;if(s||(s=m=l()),f<p&&(d=f,f=p,p=d),!(f>Le))s.moveTo(0,0);else if(y>ar-Le)s.moveTo(f*mt(b),f*_e(b)),s.arc(0,0,f,b,g,!k),p>Le&&(s.moveTo(p*mt(g),p*_e(g)),s.arc(0,0,p,g,b,k));else{var D=b,T=g,w=b,S=g,x=y,N=y,R=a.apply(this,arguments)/2,_=R>Le&&(n?+n.apply(this,arguments):Ft(p*p+f*f)),H=$n(qo(f-p)/2,+r.apply(this,arguments)),ee=H,E=H,P,M;if(_>Le){var Y=Zo(_/p*_e(R)),X=Zo(_/f*_e(R));(x-=Y*2)>Le?(Y*=k?1:-1,w+=Y,S-=Y):(x=0,w=S=(b+g)/2),(N-=X*2)>Le?(X*=k?1:-1,D+=X,T-=X):(N=0,D=T=(b+g)/2)}var z=f*mt(D),U=f*_e(D),ne=p*mt(S),ce=p*_e(S);if(H>Le){var we=f*mt(T),me=f*_e(T),B=p*mt(w),V=p*_e(w),j;if(y<or)if(j=bh(z,U,B,V,we,me,ne,ce)){var Z=z-j[0],$=U-j[1],Q=we-j[0],O=me-j[1],F=1/_e(yl((Z*Q+$*O)/(Ft(Z*Z+$*$)*Ft(Q*Q+O*O)))/2),W=Ft(j[0]*j[0]+j[1]*j[1]);ee=$n(H,(p-W)/(F-1)),E=$n(H,(f-W)/(F+1))}else ee=E=0}N>Le?E>Le?(P=Wn(B,V,z,U,f,E,k),M=Wn(we,me,ne,ce,f,E,k),s.moveTo(P.cx+P.x01,P.cy+P.y01),E<H?s.arc(P.cx,P.cy,E,Ce(P.y01,P.x01),Ce(M.y01,M.x01),!k):(s.arc(P.cx,P.cy,E,Ce(P.y01,P.x01),Ce(P.y11,P.x11),!k),s.arc(0,0,f,Ce(P.cy+P.y11,P.cx+P.x11),Ce(M.cy+M.y11,M.cx+M.x11),!k),s.arc(M.cx,M.cy,E,Ce(M.y11,M.x11),Ce(M.y01,M.x01),!k))):(s.moveTo(z,U),s.arc(0,0,f,D,T,!k)):s.moveTo(z,U),!(p>Le)||!(x>Le)?s.lineTo(ne,ce):ee>Le?(P=Wn(ne,ce,we,me,p,-ee,k),M=Wn(z,U,B,V,p,-ee,k),s.lineTo(P.cx+P.x01,P.cy+P.y01),ee<H?s.arc(P.cx,P.cy,ee,Ce(P.y01,P.x01),Ce(M.y01,M.x01),!k):(s.arc(P.cx,P.cy,ee,Ce(P.y01,P.x01),Ce(P.y11,P.x11),!k),s.arc(0,0,p,Ce(P.cy+P.y11,P.cx+P.x11),Ce(M.cy+M.y11,M.cx+M.x11),k),s.arc(M.cx,M.cy,ee,Ce(M.y11,M.x11),Ce(M.y01,M.x01),!k))):s.arc(0,0,p,S,w,k)}if(s.closePath(),m)return s=null,m+""||null}return c.centroid=function(){var m=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,d=(+i.apply(this,arguments)+ +o.apply(this,arguments))/2-or/2;return[mt(d)*m,_e(d)*m]},c.innerRadius=function(m){return arguments.length?(t=typeof m=="function"?m:K(+m),c):t},c.outerRadius=function(m){return arguments.length?(e=typeof m=="function"?m:K(+m),c):e},c.cornerRadius=function(m){return arguments.length?(r=typeof m=="function"?m:K(+m),c):r},c.padRadius=function(m){return arguments.length?(n=m==null?null:typeof m=="function"?m:K(+m),c):n},c.startAngle=function(m){return arguments.length?(i=typeof m=="function"?m:K(+m),c):i},c.endAngle=function(m){return arguments.length?(o=typeof m=="function"?m:K(+m),c):o},c.padAngle=function(m){return arguments.length?(a=typeof m=="function"?m:K(+m),c):a},c.context=function(m){return arguments.length?(s=m??null,c):s},c}h();h();var vk=Array.prototype.slice;function pt(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}h();function wl(t){this._context=t}wl.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e);break}}};function Et(t){return new wl(t)}h();h();function Yn(t){return t[0]}function Xn(t){return t[1]}function $r(t,e){var r=K(!0),n=null,i=Et,o=null,a=sr(s);t=typeof t=="function"?t:t===void 0?Yn:K(t),e=typeof e=="function"?e:e===void 0?Xn:K(e);function s(l){var c,m=(l=pt(l)).length,d,p=!1,f;for(n==null&&(o=i(f=a())),c=0;c<=m;++c)!(c<m&&r(d=l[c],c,l))===p&&((p=!p)?o.lineStart():o.lineEnd()),p&&o.point(+t(d,c,l),+e(d,c,l));if(f)return o=null,f+""||null}return s.x=function(l){return arguments.length?(t=typeof l=="function"?l:K(+l),s):t},s.y=function(l){return arguments.length?(e=typeof l=="function"?l:K(+l),s):e},s.defined=function(l){return arguments.length?(r=typeof l=="function"?l:K(!!l),s):r},s.curve=function(l){return arguments.length?(i=l,n!=null&&(o=i(n)),s):i},s.context=function(l){return arguments.length?(l==null?n=o=null:o=i(n=l),s):n},s}function Qo(t,e,r){var n=null,i=K(!0),o=null,a=Et,s=null,l=sr(c);t=typeof t=="function"?t:t===void 0?Yn:K(+t),e=typeof e=="function"?e:e===void 0?K(0):K(+e),r=typeof r=="function"?r:r===void 0?Xn:K(+r);function c(d){var p,f,b,g=(d=pt(d)).length,y,k=!1,D,T=new Array(g),w=new Array(g);for(o==null&&(s=a(D=l())),p=0;p<=g;++p){if(!(p<g&&i(y=d[p],p,d))===k)if(k=!k)f=p,s.areaStart(),s.lineStart();else{for(s.lineEnd(),s.lineStart(),b=p-1;b>=f;--b)s.point(T[b],w[b]);s.lineEnd(),s.areaEnd()}k&&(T[p]=+t(y,p,d),w[p]=+e(y,p,d),s.point(n?+n(y,p,d):T[p],r?+r(y,p,d):w[p]))}if(D)return s=null,D+""||null}function m(){return $r().defined(i).curve(a).context(o)}return c.x=function(d){return arguments.length?(t=typeof d=="function"?d:K(+d),n=null,c):t},c.x0=function(d){return arguments.length?(t=typeof d=="function"?d:K(+d),c):t},c.x1=function(d){return arguments.length?(n=d==null?null:typeof d=="function"?d:K(+d),c):n},c.y=function(d){return arguments.length?(e=typeof d=="function"?d:K(+d),r=null,c):e},c.y0=function(d){return arguments.length?(e=typeof d=="function"?d:K(+d),c):e},c.y1=function(d){return arguments.length?(r=d==null?null:typeof d=="function"?d:K(+d),c):r},c.lineX0=c.lineY0=function(){return m().x(t).y(e)},c.lineY1=function(){return m().x(t).y(r)},c.lineX1=function(){return m().x(n).y(e)},c.defined=function(d){return arguments.length?(i=typeof d=="function"?d:K(!!d),c):i},c.curve=function(d){return arguments.length?(a=d,o!=null&&(s=a(o)),c):a},c.context=function(d){return arguments.length?(d==null?o=s=null:s=a(o=d),c):o},c}h();h();function Sl(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}h();function kl(t){return t}function ea(){var t=kl,e=Sl,r=null,n=K(0),i=K(ar),o=K(0);function a(s){var l,c=(s=pt(s)).length,m,d,p=0,f=new Array(c),b=new Array(c),g=+n.apply(this,arguments),y=Math.min(ar,Math.max(-ar,i.apply(this,arguments)-g)),k,D=Math.min(Math.abs(y)/c,o.apply(this,arguments)),T=D*(y<0?-1:1),w;for(l=0;l<c;++l)(w=b[f[l]=l]=+t(s[l],l,s))>0&&(p+=w);for(e!=null?f.sort(function(S,x){return e(b[S],b[x])}):r!=null&&f.sort(function(S,x){return r(s[S],s[x])}),l=0,d=p?(y-c*T)/p:0;l<c;++l,g=k)m=f[l],w=b[m],k=g+(w>0?w*d:0)+T,b[m]={data:s[m],index:l,value:w,startAngle:g,endAngle:k,padAngle:D};return b}return a.value=function(s){return arguments.length?(t=typeof s=="function"?s:K(+s),a):t},a.sortValues=function(s){return arguments.length?(e=s,r=null,a):e},a.sort=function(s){return arguments.length?(r=s,e=null,a):r},a.startAngle=function(s){return arguments.length?(n=typeof s=="function"?s:K(+s),a):n},a.endAngle=function(s){return arguments.length?(i=typeof s=="function"?s:K(+s),a):i},a.padAngle=function(s){return arguments.length?(o=typeof s=="function"?s:K(+s),a):o},a}h();function Pl(t){return t<0?-1:1}function Ml(t,e,r){var n=t._x1-t._x0,i=e-t._x1,o=(t._y1-t._y0)/(n||i<0&&-0),a=(r-t._y1)/(i||n<0&&-0),s=(o*i+a*n)/(n+i);return(Pl(o)+Pl(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(s))||0}function Tl(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function ta(t,e,r){var n=t._x0,i=t._y0,o=t._x1,a=t._y1,s=(o-n)/3;t._context.bezierCurveTo(n+s,i+s*e,o-s,a-s*r,o,a)}function qn(t){this._context=t}qn.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:ta(this,this._t0,Tl(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var r=NaN;if(t=+t,e=+e,!(t===this._x1&&e===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,ta(this,Tl(this,r=Ml(this,t,e)),r);break;default:ta(this,this._t0,r=Ml(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=r}}};function yh(t){this._context=new Cl(t)}(yh.prototype=Object.create(qn.prototype)).point=function(t,e){qn.prototype.point.call(this,e,t)};function Cl(t){this._context=t}Cl.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,r,n,i,o){this._context.bezierCurveTo(e,t,n,r,o,i)}};function ra(t){return new qn(t)}h();function Dl(t,e){this._context=t,this._t=e}Dl.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&this._point===2&&this._context.lineTo(this._x,this._y),(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}break}}this._x=t,this._y=e}};function na(t){return new Dl(t,1)}h();h();function ia(t,e){if((a=t.length)>1)for(var r=1,n,i,o=t[e[0]],a,s=o.length;r<a;++r)for(i=o,o=t[e[r]],n=0;n<s;++n)o[n][1]+=o[n][0]=isNaN(i[n][1])?i[n][0]:i[n][1]}h();function oa(t){for(var e=t.length,r=new Array(e);--e>=0;)r[e]=e;return r}function xh(t,e){return t[e]}function vh(t){let e=[];return e.key=t,e}function aa(){var t=K([]),e=oa,r=ia,n=xh;function i(o){var a=Array.from(t.apply(this,arguments),vh),s,l=a.length,c=-1,m;for(let d of o)for(s=0,++c;s<l;++s)(a[s][c]=[0,+n(d,a[s].key,c,o)]).data=d;for(s=0,m=pt(e(a));s<l;++s)a[m[s]].index=s;return r(a,m),a}return i.keys=function(o){return arguments.length?(t=typeof o=="function"?o:K(Array.from(o)),i):t},i.value=function(o){return arguments.length?(n=typeof o=="function"?o:K(+o),i):n},i.order=function(o){return arguments.length?(e=o==null?oa:typeof o=="function"?o:K(Array.from(o)),i):e},i.offset=function(o){return arguments.length?(r=o??ia,i):r},i}h();function sa(t,e){if((l=t.length)>0)for(var r,n=0,i,o,a,s,l,c=t[e[0]].length;n<c;++n)for(a=s=0,r=0;r<l;++r)(o=(i=t[e[r]][n])[1]-i[0])>0?(i[0]=a,i[1]=a+=o):o<0?(i[1]=s,i[0]=s+=o):(i[0]=0,i[1]=o)}var Rl=["#6366f1","#22d3ee","#f59e0b","#ec4899","#10b981","#8b5cf6","#f97316","#3b82f6"],wh=t=>typeof t=="object"&&t!==null&&"open"in t&&"close"in t,Sh=t=>typeof t=="object"&&t!==null&&"label"in t&&"value"in t;function kh(t){return t==="linear"?Et:t==="step"?na:ra}function ua(t,e){let r=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(t.trim());if(!r)return t;let n=r[1];n.length===3&&(n=[...n].map(o=>o+o).join(""));let i=parseInt(n,16);return`rgba(${i>>16&255}, ${i>>8&255}, ${i&255}, ${e})`}function Al(t){if(!t?.format)return null;if(typeof t.format=="function")return t.format;let e=Ht(t.format);return r=>typeof r=="number"?e(r):String(r)}function te(t){return Math.round(t*100)/100}function ur(t,e=0,r=t.duration){return oe.create().fromTo("opacity",0,1,{start:t.start+e,end:t.start+e+Math.max(1,r),ease:"power2.out"})}function Fl(t,e,r){let n=e.id??J("chart"),i=t.width??(typeof e.width=="number"?e.width:960),o=t.height??(typeof e.height=="number"?e.height:540),a=t.type??"line",s=t.fontSize??18,l=t.fontFamily??r,c=t.textColor??"#94a3b8",m=t.textColor??"#e2e8f0",d=t.gridColor??"rgba(148, 163, 184, 0.18)",p=t.colors?.length?t.colors:Rl,f=t.cornerRadius??4,b=t.animate===!1?void 0:t.animate??{},g={enabled:b!==void 0,start:b?.start??0,duration:b?.duration??30,stagger:b?.stagger??-1,ease:b?.ease??"power3.out"},y=[],k=(P,M,Y,X={},z="")=>{let U=L.text(P,{id:`${n}-label-${z||y.length}`,position:"absolute",x:te(M.x),y:te(M.y),width:te(M.width),height:te(M.height),fontFamily:l,fontSize:s,fontWeight:X.weight??500,fill:X.color??c,align:Y,verticalAlign:"middle"});g.enabled&&U.animate(ur(g,X.delay??0)),y.push(U)},D=Math.ceil(s*1.4);a==="pie"||a==="donut"?T():S();for(let P of y)Bl(P);return L.box({background:t.background??"transparent",...e,id:n,width:i,height:o,children:y});function T(){let P=w(),M=P.reduce((Z,$)=>Z+Math.max(0,$.value),0),Y=t.legend??!0,X=N({top:16,right:Y?_(P.map(Z=>Z.label)):16,bottom:16,left:16}),z=R(X),U=Math.max(1,Math.min(z.width,z.height)/2),ne=U*(t.innerRadius??(a==="donut"?.6:0)),ce=z.x+z.width/2,we=z.y+z.height/2,me=4,B=ea().sort(null).value(Z=>Math.max(0,Z.value)).padAngle(P.length>1?.012:0)(P),V=Hn().innerRadius(ne).outerRadius(U).cornerRadius(Math.min(f,(U-ne)/2)),j=x(B.length);B.forEach((Z,$)=>{let Q=V(Z);if(!Q)return;let O=P[$].color??p[$%p.length],F=L.shape("path",{id:`${n}-slice-${$}`,position:"absolute",x:te(ce-U-me),y:te(we-U-me),width:te(2*(U+me)),height:te(2*(U+me)),d:Ph(Q,U+me,U+me),fillColor:O,anchorX:.5,anchorY:.5});if(g.enabled){let W=g.start+$*j;F.animate(oe.create().fromTo("opacity",0,1,{start:W,end:W+g.duration*.5}).fromTo("scale",.85,1,{start:W,end:W+g.duration,ease:g.ease}))}if(y.push(F),t.valueLabels&&M>0&&Z.value>0){let[W,A]=Hn().innerRadius(ne||U*.55).outerRadius(U).centroid(Z),Se=`${Math.round(Z.value/M*100)}%`;k(Se,{x:ce+W-60,y:we+A-D/2,width:120,height:D},"center",{delay:$*j+g.duration*.5,color:"#ffffff",weight:700},`value-${$}`)}}),Y&&H(P.map((Z,$)=>({name:Z.label,color:Z.color??p[$%p.length]})),{x:z.x+z.width+24,y:z.y,height:z.height})}function w(){return(t.data??t.series?.[0]?.data??[]).map((M,Y)=>{if(Sh(M))return M;let X=typeof M=="number"?M:Array.isArray(M)?Number(M[1]):Number(M.y);return{label:t.categories?.[Y]??(Array.isArray(M)?String(M[0]):typeof M=="object"&&M?String(M.x):`${Y+1}`),value:X}})}function S(){let P=t.series?.length?[...t.series]:t.data?[{data:t.data}]:[];if(P.length===0)return;let M=C=>C.type??a??"line",Y=(C,I)=>C.color??p[I%p.length],X=P.map(C=>C.data.map((I,re)=>wh(I)?{x:I.x,y:I.close}:typeof I=="number"?{x:t.categories?.[re]??re,y:I}:Array.isArray(I)?{x:I[0],y:Number(I[1])}:{x:I.x,y:Number(I.y)})),z=P.some(C=>M(C)==="bar"||M(C)==="candlestick"),U=X.flat().map(C=>C.x),ne=z||U.some(C=>typeof C=="string")?"band":U.some(C=>C instanceof Date)?"time":"linear",ce=C=>M(C)==="bar"||M(C)==="area",we=!!t.stacked,me=ne==="band"?[...new Set(U.map(String))]:[],B=new Map;if(we){let C=P.map((fe,Me)=>Me).filter(fe=>ce(P[fe])),I=me.length?me:[...new Set(U.map(fe=>+fe))].sort((fe,Me)=>fe-Me).map(String),re=I.map(fe=>{let Me={};for(let Ne of C){let Oe=X[Ne].find(ke=>String(ne==="band"?ke.x:+ke.x)===fe);Me[Ne]=Oe?.y??0}return Me});aa().keys(C.map(String)).offset(sa)(re).forEach(fe=>{let Me=Number(fe.key);B.set(Me,X[Me].map(Ne=>{let Oe=I.indexOf(String(ne==="band"?Ne.x:+Ne.x));return[fe[Oe][0],fe[Oe][1]]}))})}let V=[0];P.forEach((C,I)=>{let re=B.get(I);if(M(C)==="candlestick")for(let pe of C.data)V.push(pe.high,pe.low);else if(re)for(let[pe,fe]of re)V.push(pe,fe);else for(let pe of X[I])V.push(pe.y)}),P.every(C=>M(C)==="candlestick"||M(C)==="scatter"||M(C)==="line")&&V.shift();let j=t.yAxis??{},Z=t.xAxis??{},$=j.ticks??5,Q=j.min??Math.min(...V),O=j.max??Math.max(...V);(!Number.isFinite(Q)||!Number.isFinite(O))&&([Q,O]=[0,1]),Q===O&&([Q,O]=[Q-1,O+1]);let F=Jt().domain([Q,O]);(j.min===void 0||j.max===void 0)&&F.nice($);let W=Al(j)??(C=>F.tickFormat($)(C)),A=F.ticks($),Se=P.map((C,I)=>({name:C.name??`Series ${I+1}`,color:Y(C,I)})),ue=t.legend??P.length>1,De=j.show!==!1,Ae=Z.show!==!1,Xe=De?Math.max(...A.map(C=>W(C).length))*s*.7+20:0,en=N({top:(ue?D+20:0)+Math.ceil(D/2),right:20,bottom:Ae?D+14:12,left:Math.max(16,Math.ceil(Xe))}),ie=R(en),Ma=D+6,Ta=t.valueLabels?P.flatMap((C,I)=>M(C)==="bar"?X[I].map(re=>re.y):[]):[],gc=Ta.some(C=>C>0)?Ma:0,bc=Ta.some(C=>C<0)?Ma:0;F.range([ie.height-bc,gc]);let qe;if(ne==="band")qe=Rr().domain(me).range([0,ie.width]).paddingInner(z?.28:0).paddingOuter(z?.14:.5);else if(ne==="time"){let C=U.map(I=>+new Date(I));qe=jn().domain([Math.min(...C),Math.max(...C)]).range([0,ie.width])}else{let C=U.map(Number);qe=Jt().domain([Z.min??Math.min(...C),Z.max??Math.max(...C)]).range([0,ie.width])}let Ca=C=>{if(ne==="band"){let I=qe;return(I(String(C))??0)+I.bandwidth()/2}return qe(ne==="time"?new Date(C):Number(C))},Da=0;j.grid!==!1&&A.forEach((C,I)=>{let re=L.box({id:`${n}-ygrid-${I}`,position:"absolute",x:ie.x,y:te(ie.y+F(C)-.5),width:ie.width,height:1,background:d});g.enabled&&re.animate(ur(g,Da,g.duration/2)),y.push(re)}),De&&A.forEach((C,I)=>{k(W(C),{x:0,y:ie.y+F(C)-D/2,width:ie.x-12,height:D},"end",{},`y-${I}`)});let pr=[],tn=Al(Z);if(ne==="band"){let C=qe,I=Math.max(1,Math.ceil(me.length/Math.max(1,Math.floor(ie.width/(s*4)))));me.forEach((re,pe)=>{pe%I===0&&pr.push({pos:(C(re)??0)+C.bandwidth()/2,text:tn?tn(re):re})})}else{let C=qe,I=Z.ticks??Math.max(2,Math.floor(ie.width/(s*6))),re=C.tickFormat(I);for(let pe of C.ticks(I))pr.push({pos:C(pe),text:tn?tn(ne==="time"?new Date(pe):pe):re(pe)})}if(Z.grid&&pr.forEach((C,I)=>{let re=L.box({id:`${n}-xgrid-${I}`,position:"absolute",x:te(ie.x+C.pos-.5),y:ie.y,width:1,height:ie.height,background:d});g.enabled&&re.animate(ur(g,Da,g.duration/2)),y.push(re)}),Ae){let C=Math.max(s*3,ie.width/Math.max(1,pr.length));pr.forEach((I,re)=>{k(I.text,{x:ie.x+I.pos-C/2,y:ie.y+ie.height+10,width:C,height:D},"center",{},`x-${re}`)})}let[yc,xc]=F.domain();if(yc<=0&&xc>=0&&z){let C=L.box({id:`${n}-zero`,position:"absolute",x:ie.x,y:te(ie.y+F(0)-1),width:ie.width,height:2,background:ua("#94a3b8",.45)});g.enabled&&C.animate(ur(g,0,g.duration/2)),y.push(C)}let rn=P.map((C,I)=>I).filter(C=>M(P[C])==="bar"),vc=[...rn,...P.map((C,I)=>I).filter(C=>M(P[C])==="candlestick"),...P.map((C,I)=>I).filter(C=>M(P[C])==="area"),...P.map((C,I)=>I).filter(C=>M(P[C])==="line"),...P.map((C,I)=>I).filter(C=>M(P[C])==="scatter")],rt=ne==="band"?qe:null,Aa=rt?x(me.length):0,Na=C=>rt?me.indexOf(String(C)):0;vc.forEach((C,I)=>{let re=P[C],pe=Y(re,C),fe=M(re),Me=X[C],Ne=B.get(C);if(fe==="bar"&&rt){let Oe=we?1:rn.length,ke=we?0:rn.indexOf(C),Re=rt.bandwidth()/Oe,he=Oe>1?Math.min(4,Re*.12):0;Me.forEach((Fe,Ge)=>{let[nt,Te]=Ne?Ne[Ge]:[0,Fe.y],ye=ie.y+F(Math.max(nt,Te)),nn=ie.y+F(Math.min(nt,Te)),Be=Math.max(0,nn-ye),fr=ie.x+(rt(String(Fe.x))??0)+ke*Re+he/2,ht=Fe.y>=0?"up":"down",on=L.box({id:`${n}-bar-${C}-${Ge}`,position:"absolute",x:te(fr),y:te(ye),width:te(Math.max(1,Re-he)),height:te(Be),background:pe,borderRadius:Math.min(f,(Re-he)/2,Be/2)}),Ra=Na(Fe.x)*Aa+(we?rn.indexOf(C)*g.duration*.6:0);if(g.enabled){let hr=g.start+Ra,an=hr+g.duration,Fa=oe.create().fromTo("height",0,te(Be),{start:hr,end:an,ease:g.ease});ht==="up"&&Fa.fromTo("y",te(ye+Be),te(ye),{start:hr,end:an,ease:g.ease}),on.animate(Fa)}if(y.push(on),t.valueLabels){let hr=W(Fe.y),an=ht==="up"?ye-D-4:ye+Be+4;k(hr,{x:fr-30,y:an,width:Re-he+60,height:D},"center",{delay:Ra+g.duration*.6,color:m,weight:600},`value-${C}-${Ge}`)}});return}if(fe==="candlestick"&&rt){let Oe=t.upColor??"#22c55e",ke=t.downColor??"#ef4444",Re=rt.bandwidth();re.data.forEach((he,Fe)=>{let Ge=he.close>=he.open?Oe:ke,nt=ie.x+(rt(String(he.x))??0)+Re/2,Te=Na(he.x)*Aa,ye=[["wick",{x:nt-Math.max(1,Re*.06),y:ie.y+F(he.high),width:Math.max(2,Re*.12),height:Math.max(1,F(he.low)-F(he.high))}],["body",{x:nt-Re/2,y:ie.y+F(Math.max(he.open,he.close)),width:Re,height:Math.max(2,Math.abs(F(he.open)-F(he.close)))}]];for(let[nn,Be]of ye){let fr=L.box({id:`${n}-candle-${C}-${Fe}-${nn}`,position:"absolute",x:te(Be.x),y:te(Be.y),width:te(Be.width),height:te(Be.height),background:Ge,borderRadius:nn==="body"?Math.min(f/2,Be.width/2):0});if(g.enabled){let ht=g.start+Te,on=Be.y+Be.height/2;fr.animate(oe.create().fromTo("height",0,te(Be.height),{start:ht,end:ht+g.duration,ease:g.ease}).fromTo("y",te(on),te(Be.y),{start:ht,end:ht+g.duration,ease:g.ease}))}y.push(fr)}});return}if(fe==="line"||fe==="area"){let Oe=re.strokeWidth??3,ke=Math.ceil(Oe*2+(re.pointRadius??0)+2),Re=Me.map((Te,ye)=>({x:Ca(Te.x)+ke,top:F(Ne?Ne[ye][1]:Te.y)+ke,base:F(Ne?Ne[ye][0]:Math.max(F.domain()[0],Math.min(0,F.domain()[1])))+ke})),he=kh(re.curve),Fe={x:ie.x-ke,y:ie.y-ke,width:ie.width+2*ke,height:ie.height+2*ke},Ge=I*(g.duration/3);if(fe==="area"){let Te=Qo().x(ye=>ye.x).y0(ye=>ye.base).y1(ye=>ye.top).curve(he)(Re);if(Te){let ye=L.shape("path",{id:`${n}-area-${C}`,position:"absolute",...Nl(Fe),d:Ol(Te),fillType:"linear",fillColor:ua(pe,.45),gradientEndColor:ua(pe,.02),gradientAngle:90});g.enabled&&ye.animate(ur(g,Ge+g.duration*.4,g.duration)),y.push(ye)}}let nt=$r().x(Te=>Te.x).y(Te=>Te.top).curve(he)(Re);if(nt&&Oe>0){let Te=L.shape("path",{id:`${n}-line-${C}`,position:"absolute",...Nl(Fe),d:Ol(nt),fillType:"none",strokeColor:pe,strokeWidth:Oe,strokeLineCap:"round",strokeLineJoin:"round"});g.enabled&&Te.animate(oe.create().fromTo("trimEnd",0,1,{start:g.start+Ge,end:g.start+Ge+g.duration*1.5,ease:"power2.inOut"})),y.push(Te)}(re.pointRadius??0)>0&&Oa(C,Me,pe,re.pointRadius??0,Ge+g.duration*.5,Ne);return}fe==="scatter"&&Oa(C,Me,pe,re.pointRadius??6,I*(g.duration/3),Ne)}),ue&&ee(Se);function Oa(C,I,re,pe,fe,Me){let Ne=x(I.length);I.forEach((Oe,ke)=>{let Re=F(Me?Me[ke][1]:Oe.y),he=L.shape("circle",{id:`${n}-point-${C}-${ke}`,position:"absolute",x:te(ie.x+Ca(Oe.x)-pe),y:te(ie.y+Re-pe),width:te(pe*2),height:te(pe*2),fillColor:re,anchorX:.5,anchorY:.5});if(g.enabled){let Fe=g.start+fe+ke*Ne;he.animate(oe.create().fromTo("scale",0,1,{start:Fe,end:Fe+g.duration*.6,ease:"back.out(2)"}).fromTo("opacity",0,1,{start:Fe,end:Fe+6}))}y.push(he)})}}function x(P){return!g.enabled||P<=1?0:g.stagger>=0?g.stagger:Math.min(4,g.duration/P)}function N(P){let M=t.padding;return typeof M=="number"?{top:M,right:M,bottom:M,left:M}:{top:M?.top??P.top,right:M?.right??P.right,bottom:M?.bottom??P.bottom,left:M?.left??P.left}}function R(P){return{x:P.left,y:P.top,width:Math.max(1,i-P.left-P.right),height:Math.max(1,o-P.top-P.bottom)}}function _(P){let M=Math.max(0,...P.map(Y=>Y.length));return Math.min(i*.4,M*s*.6+s+48)}function H(P,M){let Y=D+8,X=M.y+Math.max(0,(M.height-P.length*Y)/2);P.forEach((z,U)=>{E(z,M.x,X+U*Y,U)})}function ee(P){let M=P.map(z=>z.name.length*s*.6+s+28),Y=M.reduce((z,U)=>z+U,0),X=Math.max(0,i-Y-20);P.forEach((z,U)=>{E(z,X,4,U),X+=M[U]})}function E(P,M,Y,X){let z=Math.round(s*.7),U=L.box({id:`${n}-legend-swatch-${X}`,position:"absolute",x:te(M),y:te(Y+(D-z)/2),width:z,height:z,borderRadius:Math.round(z/4),background:P.color});g.enabled&&U.animate(ur(g,0,g.duration/2)),y.push(U),k(P.name,{x:M+z+8,y:Y,width:P.name.length*s*.6+12,height:D},"start",{color:t.textColor??"#cbd5e1"},`legend-${X}`)}}function Bl(t){for(let e of t.animation?.tracks??[])for(let r of e.keyframes??[])r.frame=Math.round(r.frame);for(let e of t.children??[])Bl(e)}function Nl(t){return{x:te(t.x),y:te(t.y),width:te(t.width),height:te(t.height)}}function Ol(t){return t.replace(/-?\d*\.\d{3,}(?:e-?\d+)?/gi,e=>String(te(Number(e))))}function Ph(t,e,r){let n=[],i=/([MLAZ])([^MLAZ]*)/gi;for(let[,o,a]of t.matchAll(i)){let s=(a.match(/-?\d*\.?\d+(?:e-?\d+)?/gi)??[]).map(Number);if(o.toUpperCase()==="A")for(let l=0;l+6<s.length;l+=7)s[l+5]+=e,s[l+6]+=r;else if(o.toUpperCase()!=="Z")for(let l=0;l+1<s.length;l+=2)s[l]+=e,s[l+1]+=r;n.push(o+s.map(te).join(","))}return n.join("")}h();var Ll=24,Mh=1,Wr=class{source;fps;startFrame;trimStartSec;smoothing;options;results=new Map;sourceWidth=0;sourceHeight=0;cellW=0;cellH=0;cell;queue=Promise.resolve();runner;cacheLoaded;unsaved=0;unsavedSubjects=0;blurred=new Map;smoothed=new Map;personView;subjects=new Map;wantSubjects=!1;subjectsLoaded;constructor(e,r,n={}){this.source=e,this.options=n,this.fps=n.fps??r,this.startFrame=Math.round(n.startFrame??0),this.trimStartSec=n.trimStartSec??0,this.smoothing=Math.max(0,Math.round(n.smoothing??2)),this.cell=Math.max(1,Math.round(n.maskCell??8))}get person(){return this.personView??=new Zn(this),this.personView}ready(e,r=e){let[n,i]=this.window(e,r);return this.queue=this.queue.then(()=>this.compute(n,i)),this.queue}isReady(e){let[r,n]=this.window(e,e);for(let i=r;i<=n;i++)if(!this.results.has(i))return!1;return!0}keepSubjects(){this.wantSubjects=!0}subject(e,r){let n=e*this.fps/r;if(Math.abs(n-Math.round(n))>1e-6)return;let i=this.subjects.get(Math.round(n));if(i===void 0)return i;if(i===null||!this.sourceWidth)return null;let o=this.sourceWidth,a=this.sourceHeight;return{category:i.category,mask:Oh(i,o*a),width:o,height:a,area:i.area,coverage:i.area/(o*a),detectionIndex:-1}}clipFrame(e){return e-this.startFrame+this.trimStartSec*this.fps}window(e,r){let n=Math.floor(this.clipFrame(Math.min(e,r))),i=Math.ceil(this.clipFrame(Math.max(e,r)));return[Math.max(0,n-Ll-this.smoothing),Math.max(0,i+this.smoothing)]}analysed(e){return this.results.has(e)&&(!this.wantSubjects||this.subjects.has(e))}async compute(e,r){this.cacheLoaded??=this.loadCache(),await this.cacheLoaded,this.wantSubjects&&(this.subjectsLoaded??=this.loadSubjects(),await this.subjectsLoaded);let n=!1;for(let s=e;s<=r;s++)this.analysed(s)||(n=!0);if(!n)return;let i=this.options.pose??!0,o=this.options.mask??!0;this.runner??=xr.create({modelsDir:this.options.modelsDir,baseUrl:this.options.baseUrl,...this.options.confidence!==void 0&&{confidence:this.options.confidence},...this.options.variant!==void 0&&{variant:this.options.variant}});let a=cn.getVideo(this.source,!0,"clip-vision");for(let s=e;s<=r;s++){if(this.analysed(s))continue;let l=await Ch(await a.getFrame(s/this.fps));if(!l){this.results.set(s,{kp:null,mask:null}),this.wantSubjects&&this.subjects.set(s,null);continue}this.sourceWidth||this.setSize(l.width,l.height);let c=this.results.get(s),m=c?.kp??null,d=c?.mask??null;if(i&&!c){let f=(await this.runner.pose(l)).people[0];if(f){m=new Float32Array(51);for(let[b,g]of f.keypoints.entries())m.set([g.x,g.y,g.visibility],b*3)}}let p=o&&!c||this.wantSubjects?await this.runner.segment(l):void 0;if(p&&this.wantSubjects){let f=Xa(p.masks);this.subjects.set(s,f?{category:f.category,area:f.area,...Nh(f.mask)}:null),this.unsavedSubjects++}if(p&&o&&!c){let f=Dh(p);f&&(d=new Uint8Array(this.cellW*this.cellH),Ah(f,l.width,l.height,this.cell,d,this.cellW,this.cellH))}this.results.set(s,{kp:m,mask:d}),c||this.unsaved++,this.unsaved>=24&&await this.saveCache(),this.unsavedSubjects>=24&&await this.saveSubjects()}this.unsaved>0&&await this.saveCache(),this.unsavedSubjects>0&&await this.saveSubjects()}setSize(e,r){this.sourceWidth=e,this.sourceHeight=r,this.cellW=Math.ceil(e/this.cell),this.cellH=Math.ceil(r/this.cell)}size(){return{width:this.sourceWidth,height:this.sourceHeight}}result(e){return this.results.get(Math.max(0,e))}keypoint(e,r){r=Math.max(0,r);let n=`${e}:${r}`,i=this.smoothed.get(n);if(i)return i;let o=s=>{let l=0,c=0,m=0,d=0;for(let p=s-this.smoothing;p<=s+this.smoothing;p++){let f=this.mustHave(p<0?0:p);if(!f.kp)continue;let b=f.kp[e*3+2],g=(this.smoothing+1-Math.abs(p-s))*b*b;l+=f.kp[e*3]*g,c+=f.kp[e*3+1]*g,m+=b*g,d+=g}return d>1e-6?[l/d,c/d,m/d]:null},a=null;for(let s=0;s<=Ll&&!a;s++)r-s>=0&&(a=o(r-s));return a??=[this.sourceWidth/2,this.sourceHeight/2,0],this.smoothed.set(n,a),a}blurredMask(e){if(e=Math.max(0,e),this.blurred.has(e))return this.blurred.get(e)??null;let r=this.mustHave(e),n=r.mask?Rh(r.mask,this.cellW,this.cellH,2):null;return this.blurred.set(e,n),n}grid(){return{cell:this.cell,width:this.cellW,height:this.cellH}}mustHave(e){let r=this.results.get(e);if(r)return r;throw new Error(`ClipVision "${this.source}": frame ${e} is not analysed yet. Read it while rendering (the composition prepares each frame), in a live physics world, or after \`await clip.ready(frame)\`.`)}cacheFile;async cachePath(){if(this.cacheFile!==void 0)return this.cacheFile;if(this.cacheFile=null,this.options.cacheDir===!1||typeof v>"u"||!v.versions?.node)return null;try{let[e,r,n,i]=await Promise.all([import("./shims/fs.mjs"),import("./shims/path.mjs"),import("./shims/os.mjs"),import("./crypto-W5UAWSNT.mjs")]),o=e.statSync(this.source),a=this.options.cacheDir??v.env.FRAMEFIELDS_VISION_CACHE_DIR??r.join(n.homedir(),".cache","framefields","vision"),s=this.options,l=JSON.stringify([Mh,r.resolve(this.source),o.size,o.mtimeMs,this.fps,s.pose??!0,s.mask??!0,this.cell,s.variant??"s",s.confidence??null]),c=i.createHash("sha256").update(l).digest("hex").slice(0,24);e.mkdirSync(a,{recursive:!0}),this.cacheFile=r.join(a,`${r.basename(this.source)}.${c}.json`)}catch{this.cacheFile=null}return this.cacheFile}async loadCache(){let e=await this.cachePath();if(e)try{let r=await import("./shims/fs.mjs");if(!r.existsSync(e))return;let n=JSON.parse(r.readFileSync(e,"utf8"));if(n.cell!==this.cell)return;this.setSize(n.width,n.height);for(let[i,o]of Object.entries(n.frames))this.results.set(Number(i),{kp:o.kp?Float32Array.from(o.kp):null,mask:o.mask?new Uint8Array(Buffer.from(o.mask,"base64")):null})}catch{}}async saveCache(){this.unsaved=0;let e=await this.cachePath();if(!e||!this.sourceWidth)return;let r={};for(let[o,a]of this.results)r[o]={kp:a.kp?Array.from(a.kp,s=>Math.round(s*100)/100):null,mask:a.mask?Buffer.from(a.mask).toString("base64"):null};let n=await import("./shims/fs.mjs"),i=`${e}.${v.pid}.tmp`;n.writeFileSync(i,JSON.stringify({width:this.sourceWidth,height:this.sourceHeight,cell:this.cell,frames:r})),n.renameSync(i,e)}async subjectsPath(){let e=await this.cachePath();return e?e.replace(/\.json$/,".subjects.json"):null}async loadSubjects(){let e=await this.subjectsPath();if(e)try{let r=await import("./shims/fs.mjs");if(!r.existsSync(e))return;let n=JSON.parse(r.readFileSync(e,"utf8"));if(this.sourceWidth&&n.width!==this.sourceWidth)return;this.sourceWidth||this.setSize(n.width,n.height);for(let[i,o]of Object.entries(n.frames)){let a=Buffer.from(o?.lengths??"","base64");this.subjects.set(Number(i),o&&{category:o.category,area:o.area,values:new Uint8Array(Buffer.from(o.values,"base64")),lengths:new Uint32Array(a.buffer.slice(a.byteOffset,a.byteOffset+a.byteLength))})}}catch{}}async saveSubjects(){this.unsavedSubjects=0;let e=await this.subjectsPath();if(!e||!this.sourceWidth)return;let r={};for(let[o,a]of this.subjects)r[o]=a&&{category:a.category,area:a.area,values:Buffer.from(a.values).toString("base64"),lengths:Buffer.from(a.lengths.buffer,a.lengths.byteOffset,a.lengths.byteLength).toString("base64")};let n=await import("./shims/fs.mjs"),i=`${e}.${v.pid}.tmp`;n.writeFileSync(i,JSON.stringify({width:this.sourceWidth,height:this.sourceHeight,frames:r})),n.renameSync(i,e)}},Zn=class t{constructor(e,r,n){this.clip=e;this.t=r;this.placement=n}clip;t;placement;place(e){return new t(this.clip,void 0,e)}transform(){if(this.t)return this.t;let e=this.placement,{width:r,height:n}=this.clip.size();if(!e||!r)return{sx:1,sy:1,ox:0,oy:0};let i=e.width/r,o=e.height/n;if(e.fit!=="fill"){let a=e.fit==="contain"?Math.min(i,o):Math.max(i,o);i=a,o=a}return{sx:i,sy:o,ox:(e.x??0)+(e.width-r*i)/2,oy:(e.y??0)+(e.height-n*o)/2}}point(e,r){let n=Th(e),i=this.clip.clipFrame(r),o=Math.floor(i),a=i-o,s=this.clip.keypoint(n,o),l=a>0?this.clip.keypoint(n,o+1):s,c=this.transform();return{x:(s[0]+(l[0]-s[0])*a)*c.sx+c.ox,y:(s[1]+(l[1]-s[1])*a)*c.sy+c.oy,visibility:s[2]+(l[2]-s[2])*a}}signals(e){let r=n=>br.builder({type:"custom",fn:i=>this.point(e,i.frame)[n]});return{x:r("x"),y:r("y"),visibility:r("visibility")}}silhouetteGrid(e){let r=this.clip.blurredMask(Math.round(this.clip.clipFrame(e)));if(!r)return null;let{cell:n,width:i,height:o}=this.clip.grid(),a=this.transform();return{data:r,width:i,height:o,originX:a.ox,originY:a.oy,scaleX:n*a.sx,scaleY:n*a.sy}}sample(e,r,n){let i=this.clip.blurredMask(Math.round(this.clip.clipFrame(e)));if(!i)return{alpha:0,gx:0,gy:0};let{cell:o,width:a,height:s}=this.clip.grid(),l=this.transform(),c=(r-l.ox)/l.sx/o-.5,m=(n-l.oy)/l.sy/o-.5,d=(f,b)=>f<0||b<0||f>=a||b>=s?0:i[b*a+f],p=(f,b)=>{let g=Math.floor(f),y=Math.floor(b),k=f-g,D=b-y,T=d(g,y)+(d(g+1,y)-d(g,y))*k,w=d(g,y+1)+(d(g+1,y+1)-d(g,y+1))*k;return T+(w-T)*D};return{alpha:p(c,m),gx:(p(c+1,m)-p(c-1,m))/(2*o*l.sx),gy:(p(c,m+1)-p(c,m-1))/(2*o*l.sy)}}};function Th(t){let e=mn.indexOf(t);if(e<0)throw new Error(`Unknown keypoint "${t}". Use one of ${mn.join(", ")}.`);return e}async function Ch(t){if(!t||t.width<=0)return null;if(t.buffer)return{data:t.buffer,width:t.width,height:t.height};let r=t.canvas?.getContext("2d");return r?{data:r.getImageData(0,0,t.width,t.height).data,width:t.width,height:t.height}:null}function Dh(t){let e=t.masks.filter(o=>o.category==="person");if(e.length===0)return;let r=e.reduce((o,a)=>a.area>o.area?a:o),n=t.detections[r.detectionIndex]?.boundingBox,i=new Uint8Array(r.mask);if(!n)return i;for(let o of t.masks){if(o===r||o.area>r.area*2)continue;let a=t.detections[o.detectionIndex]?.boundingBox;if(!a)continue;let s=Math.max(0,Math.min(n.originX+n.width,a.originX+a.width)-Math.max(n.originX,a.originX)),l=Math.max(0,Math.min(n.originY+n.height,a.originY+a.height)-Math.max(n.originY,a.originY));if(!(s*l<.3*a.width*a.height))for(let c=0;c<i.length;c++)o.mask[c]>i[c]&&(i[c]=o.mask[c])}return i}function Ah(t,e,r,n,i,o,a){for(let s=0;s<a;s++)for(let l=0;l<o;l++){let c=0,m=0;for(let d=s*n;d<Math.min(r,(s+1)*n);d++)for(let p=l*n;p<Math.min(e,(l+1)*n);p++)c+=t[d*e+p],m++;i[s*o+l]=m?Math.round(c/m):0}}function Nh(t){let e=0;for(let a=1;a<=t.length;a++)(a===t.length||t[a]!==t[a-1])&&e++;let r=new Uint8Array(e),n=new Uint32Array(e),i=0,o=0;for(let a=1;a<=t.length;a++)(a===t.length||t[a]!==t[o])&&(r[i]=t[o],n[i++]=a-o,o=a);return{values:r,lengths:n}}function Oh(t,e){let r=new Uint8Array(e),n=0;for(let i=0;i<t.values.length;i++){let o=Math.min(e,n+t.lengths[i]);t.values[i]!==0&&r.fill(t.values[i],n,o),n=o}return r}function Rh(t,e,r,n){let i=new Float32Array(e*r),o=new Float32Array(e*r);for(let a=0;a<r;a++)for(let s=0;s<e;s++){let l=0,c=0;for(let m=-n;m<=n;m++){let d=s+m;d>=0&&d<e&&(l+=t[a*e+d],c++)}i[a*e+s]=l/c/255}for(let a=0;a<r;a++)for(let s=0;s<e;s++){let l=0,c=0;for(let m=-n;m<=n;m++){let d=a+m;d>=0&&d<r&&(l+=i[d*e+s],c++)}o[a*e+s]=l/c}return o}h();h();var Fh={rotation:.2,rotateX:.2,rotateY:.2,rotateZ:.2};function Ie(t,e,r){if(typeof t=="number")return t;if(typeof t=="function")return t(e);let n=e/r;return t.get({frame:e,fps:r,time:n,duration:0,durationMs:0,progress:0,deltaTime:1/r})}function Vt(t,e){let r=e-t;return r-=Math.round(r/360)*360,t+r}function Bh(t,e){let r=t.length;if(r===0)return[];let n=new Uint8Array(r);n[0]=1,n[r-1]=1;let i=[[0,r-1]];for(;i.length>0;){let[a,s]=i.pop(),l=-1,c=e;for(let m=a+1;m<s;m++){let d=(m-a)/(s-a),p=t[a]+(t[s]-t[a])*d,f=Math.abs(t[m]-p);f>c&&(c=f,l=m)}l>=0&&(n[l]=1,i.push([a,l],[l,s]))}let o=[];for(let a=0;a<r;a++)n[a]&&o.push([a,Lh(t[a]),"none"]);return o.length===2&&o[0][1]===o[1][1]&&o.pop(),o}function Lh(t){return Math.round(t*1e4)/1e4}var la=class{constructor(e,r,n){this.length=e;this.fps=r;this.ensure=n}length;fps;ensure;channels=new Map;signals=new Map;channel(e){let r=this.channels.get(e);return r||(r=new Float32Array(this.length),this.channels.set(e,r)),r}signal(e){let r=this.signals.get(e);if(!r){let n=this.channel(e),i=this.fps;r=br.builder({type:"custom",fn:o=>{this.ensure();let a=o.fps&&o.fps!==i?o.frame/o.fps*i:o.frame,s=Math.max(0,Math.min(n.length-1,Math.round(a)));return n[s]}}),this.signals.set(e,r)}return r}},lr=class{constructor(e,r,n){this.sim=e;this.gravity=r;if(!(n.fps>0))throw new Error("Physics: `fps` must be > 0.");if(!(n.frames>=1)||!Number.isInteger(n.frames))throw new Error("Physics: `frames` must be a positive integer.");this.fps=n.fps,this.frames=n.frames,this.startFrame=Math.max(0,Math.round(n.startFrame??0)),this.pixelsPerMeter=n.pixelsPerMeter??100,this.substeps=Math.max(1,Math.round(n.substeps??4)),this.impactDecay=Math.max(.5,n.impactDecay??8),this.impactReference=n.impactReference??1500,this.worldRecording=this.newRecording()}sim;gravity;fps;frames;startFrame;pixelsPerMeter;substeps;impactDecay;impactReference;bodies=[];forces=[];impulses=[];fields=[];worldRecording;allCollisions=[];locked=!1;liveMode=!1;stepper;chain=Promise.resolve();get collisions(){return this.ensureSimulated(),this.allCollisions}get impact(){return this.worldRecording.signal("impact")}simulate(){if(this.liveMode)throw new Error("Physics: this world is live; it steps as frames render.");return this.ensureSimulated(),this}bakeKeyframes(e={}){if(this.locked)throw new Error("Physics: bakeKeyframes() must come before simulate(), live() or reading any body signal.");return this.bakeDefault=e,this.ensureSimulated(),this}live(e,r={}){if(this.locked)throw new Error("Physics: live() must come before simulate() or reading any body signal.");this.locked=!0,this.liveMode=!0;let n=async i=>{await e.prepareVision?.(i);for(let o of r.inputs??[])await o.ready(i)};this.prepareInputs=n;for(let i of this.bodies)this.bind(i);return e.onPrepareFrame(i=>this.advanceTo(i.frame)),this}advanceTo(e){return this.chain=this.chain.then(async()=>{let r=Math.min(this.frames-1,Math.round(e)-this.startFrame);this.stepper||(await this.prepareInputs?.(this.startFrame),this.stepper=this.begin());let n=this.stepper;for(;n.current<r;){let i=n.current+1;await this.prepareInputs?.(this.startFrame+i),this.stepFrame(n,i)}n.current===this.frames-1&&!n.freed&&(n.freed=!0,this.sim.free())}),this.chain}prepareInputs;bakeDefault;newRecording(){return new la(this.startFrame+this.frames,this.fps,()=>this.ensureSimulated())}assertOpen(){if(this.locked)throw new Error("Physics: the world has already started; add every body, joint and force before simulate(), live() or reading signals.")}addBody(e){return this.assertOpen(),this.bodies.push(e),e}addForce(e,r){this.assertOpen(),this.forces.push({body:e,accel:r})}addField(e,r){this.assertOpen(),this.fields.push({accel:e,...r&&{targets:new Set(r)}})}addImpulse(e,r,n){this.assertOpen(),this.impulses.push({body:e,frame:Math.round(r),dv:n})}ensureSimulated(){if(this.locked)return;this.locked=!0;let e=this.begin();for(let r=1;r<this.frames;r++)this.stepFrame(e,r);e.freed=!0,this.sim.free();for(let r of this.bodies)this.bind(r)}begin(){let{startFrame:e}=this,r=this.bodies,n=new Map;for(let o of r)n.set(o.sim,o);for(let o of r)o.startFrame>0&&o.sim.setEnabled(!1);let i=new Map;for(let o of r){o.record(e,-1),o.recording.channel("impact");let a=o.kinematicTarget?.(e);a&&i.set(o,a)}this.worldRecording.channel("impact");for(let o of[...r.map(a=>a.recording),this.worldRecording])for(let a of o.channels.values())a.fill(a[e]);return{current:0,freed:!1,bySim:n,kinematicFrom:i,level:new Map(r.map(o=>[o,0]))}}stepFrame(e,r){let{fps:n,startFrame:i,substeps:o}=this,a=1/(n*o),s=this.bodies,l=i+r,c=this.gravity.length,m=new Map;for(let w of s)w.startFrame>0&&r===w.startFrame+1&&w.sim.setEnabled(!0),m.set(w,w.sim.velocity());let d=w=>w.type==="dynamic"&&r>w.startFrame,p=new Map;for(let w of s)p.set(w,this.gravity.map(S=>d(w)?S*w.gravityScale/n:0));for(let w of this.impulses){if(w.frame!==r)continue;let S=w.body;if(!d(S))continue;let x=S.sim.mass();S.sim.applyImpulse(w.dv.map(R=>R*x));let N=p.get(S);for(let R=0;R<c;R++)N[R]+=w.dv[R]}let f=this.forces.filter(w=>d(w.body)).map(w=>{let S=w.body,x=w.accel(l),N=p.get(S);for(let R=0;R<c;R++)N[R]+=x[R]/n;return{body:S,a:x}}),b=new Map;for(let w of s){let S=w.kinematicTarget?.(l);S&&b.set(w,S)}let g=new Set,y=[];for(let w=1;w<=o;w++){for(let{body:S,a:x}of f){let N=S.sim.mass();S.sim.applyImpulse(x.map(R=>R*N*a))}for(let S of this.fields)for(let x of s){if(!d(x)||S.targets&&!S.targets.has(x))continue;let N=S.accel(x,l);if(!N)continue;let R=x.sim.mass();x.sim.applyImpulse(N.map(H=>H*R*a));let _=p.get(x);for(let H=0;H<c;H++)_[H]+=N[H]*a}for(let[S,x]of b){let N=e.kinematicFrom.get(S)??x,R=w/o;S.sim.setKinematicTarget(Eh(N.position,x.position,R),this.lerpRotation(N.rotation,x.rotation,R))}this.sim.step(a);for(let[S,x]of this.sim.drainCollisionStarts()){let N=e.bySim.get(S),R=e.bySim.get(x);if(!N||!R)continue;let _=`${s.indexOf(N)}:${s.indexOf(R)}`;g.has(_)||(g.add(_),y.push([N,R]))}}e.kinematicFrom=b;for(let w of s)w.record(l,l-1);let k=new Map;if(y.length>0){let w=this.pixelsPerMeter,S=x=>{if(x.type!=="dynamic")return 0;let N=x.sim.velocity(),R=m.get(x),_=p.get(x),H=0;for(let ee=0;ee<c;ee++){let E=N[ee]-(R[ee]+_[ee]);H+=E*E}return Math.sqrt(H)*w};for(let[x,N]of y){let R=Math.max(S(x),S(N));for(let[_,H]of[[x,N],[N,x]]){k.set(_,Math.max(k.get(_)??0,R));let ee={frame:l,with:H,speed:R};_.collisions.push(ee),_===x&&this.allCollisions.push({...ee,body:x})}}}let D=Math.exp(-1/this.impactDecay),T=0;for(let w of s){let S=Math.max((k.get(w)??0)/this.impactReference,(e.level.get(w)??0)*D);e.level.set(w,S),w.recording.channel("impact")[l]=S,S>T&&(T=S)}this.worldRecording.channel("impact")[l]=T,e.current=r}bind(e){let r=e.layer,n=e.output??(this.bakeDefault?"keyframes":"signals");if(typeof r?.animate!="function"||n==="none"||e.type==="fixed")return;let i=e.boundChannels();if(n==="keyframes"&&this.liveMode)throw new Error('Physics: live worlds bind signals; drop `output: "keyframes"` or use simulate().');if(n==="signals"){let s=oe.create();for(let[l,c]of i)s.signal(l,e.recording.signal(c));r.animate(s);return}let o=this.bakeDefault?.tolerance??.25,a=oe.create();for(let[s,l]of i){let m=e.recording.channel(l).subarray(this.startFrame),d=Fh[s]??1;a.keys(s,Bh(m,o*d))}r.animate(a)}};function Eh(t,e,r){return t.map((n,i)=>n+(e[i]-n)*r)}var ca=(t,e)=>t===void 0?e:typeof t=="number"?[t,t]:t,Hr=class extends sn{op="Particles";particleStatic;particleState;options;constructor(e){super({}),this.options=e;let r=e.emitter??{},n=s=>typeof s=="number"?s:void 0,i=e.width,o=e.height,a=(Array.isArray(e.color)?e.color:[e.color??"#ffffff"]).map(s=>{let l=Ia(s);return[l.r,l.g,l.b,l.a]});this.particleStatic={max:Math.max(1,Math.round(e.max??2e4)),seed:Math.round(e.seed??1)>>>0,layer:{x:e.x??0,y:e.y??0,width:i,height:o},emitter:{shape:r.shape??"rect",x:n(r.x)??(r.shape==="circle"||r.shape==="ring"||r.shape==="point"?i/2:0),y:n(r.y)??(r.shape==="circle"||r.shape==="ring"||r.shape==="point"?o/2:0),width:r.width??i,height:r.height??(r.shape==="line"?0:o),radius:r.radius??Math.min(i,o)/4,radial:r.radial??!1},lifetime:ca(e.lifetime,[2,4]),speed:ca(e.speed,[40,160]),direction:e.direction??-90,spread:e.spread??360,bounds:e.bounds??"none",floor:e.floor??null,bounce:e.bounce??.3,size:ca(e.size,[6,0]),sizeJitter:e.sizeJitter??.5,fade:e.fade??[.1,.3],shape:e.shape??"circle",stretch:e.stretch??.04,blend:e.blend??"normal",colors:a.slice(0,8),colorBySpeed:e.colorBySpeed??null,opacity:e.opacity??1,substeps:e.substeps??2,prewarm:e.prewarm??0}}particleFrame(e,r){let n=this.options,i=(g,y)=>g===void 0?y:Ie(g,e,r),o=e-(n.startFrame??0),a=(n.emitter?.bursts??[]).filter(g=>Math.round(g.frame)===o).reduce((g,y)=>g+y.count,0),s=n.gravity,l=Array.isArray(s)?[i(s[0],0),i(s[1],0)]:[0,i(s,0)],c=null;n.push&&(c={strength:i(n.push.strength,6e3),sweep:i(n.push.sweep,6e4),mask:n.push.person.silhouetteGrid(e),previous:n.push.person.silhouetteGrid(Math.max(0,e-1))});let m=n.emitter?.x,d=n.emitter?.y,p=m!==void 0&&typeof m!="number"||d!==void 0&&typeof d!="number",f=g=>({x:m===void 0?this.particleStatic.emitter.x:Ie(m,g,r),y:d===void 0?this.particleStatic.emitter.y:Ie(d,g,r)}),b;if(p){let g=f(e),y=f(Math.max(0,e-1));b={x:g.x,y:g.y,previousX:y.x,previousY:y.y}}return{...b&&{emitter:b},rate:i(n.emitter?.rate,1e3),burst:a,gravity:l,drag:i(n.drag,.4),noise:{strength:i(n.noise?.strength,0),scale:n.noise?.scale??300,speed:n.noise?.speed??.3},attractors:(n.attractors??[]).map(g=>({x:i(g.x,0),y:i(g.y,0),strength:i(g.strength,0),radius:g.radius??200})),push:c}}};h();var ve=gr(Vl(),1);h();var Jn=gr(dd(),1);function da(t,e=24,r){let n=t.fps??e;if(n<=0)throw new Error(`[FrameGrid] Invalid fps: ${n}. Must be > 0.`);let i=[];if(Array.isArray(t.frames)&&t.frames.length>0)for(let a of t.frames){if(typeof a!="number"||a<0||!Number.isFinite(a))throw new Error(`[FrameGrid] Invalid frame index in frames list: ${a}`);i.push({frame:Math.round(a),timeMs:Math.round(a/n*1e3)})}else if(Array.isArray(t.timesMs)&&t.timesMs.length>0)for(let a of t.timesMs){if(typeof a!="number"||a<0||!Number.isFinite(a))throw new Error(`[FrameGrid] Invalid timestamp in timesMs list: ${a}`);i.push({frame:Math.round(a/1e3*n),timeMs:Math.round(a)})}else if(t.startMs!==void 0||t.endMs!==void 0||t.stepMs!==void 0){let a=t.startMs??0,s=t.endMs??r??a+1e3,l=t.stepMs??Math.round(5/n*1e3);if(a<0||s<a)throw new Error(`[FrameGrid] Invalid millisecond range: startMs=${a}, endMs=${s}. startMs must be <= endMs.`);if(l<=0)throw new Error(`[FrameGrid] Invalid stepMs: ${l}. Must be > 0.`);for(let c=a;c<=s;c+=l)i.push({frame:Math.round(c/1e3*n),timeMs:Math.round(c)})}else{let a=t.startFrame??0,s=t.endFrame??(r?Math.min(a+30,Math.floor(r/1e3*n)):a+30),l=t.stepFrames??5;if(a<0||s<a)throw new Error(`[FrameGrid] Invalid frame range: startFrame=${a}, endFrame=${s}. startFrame must be <= endFrame.`);if(l<=0)throw new Error(`[FrameGrid] Invalid stepFrames: ${l}. Must be > 0.`);for(let c=a;c<=s;c+=l)i.push({frame:Math.round(c),timeMs:Math.round(c/n*1e3)})}let o=Math.min(t.maxFrames??64,120);if(i.length>o)throw new Error(`[FrameGrid] Requested ${i.length} frames exceeds the safety threshold of ${o}. Increase stepFrames/stepMs or narrow the start/end range to prevent oversized images.`);if(i.length===0)throw new Error("[FrameGrid] Zero frames were resolved for sampling.");return{samples:i,fps:n}}function ma(t,e,r){let n=r.gap??12,i=r.padding??16,a=r.showHeader??!0?54:0,s=r.maxGridWidth??4096,l=r.maxGridHeight??4096,c=r.columns;(!c||c<=0)&&(t<=4?c=t:t<=9?c=3:t<=16?c=4:t<=25?c=5:c=6),c=Math.min(c,t);let m=Math.ceil(t/c),d=Math.max(120,Math.min(r.cellWidth??320,960)),p=r.cellHeight??Math.round(d/(e>0?e:16/9)),f=c*d+(c-1)*n+i*2,b=m*p+(m-1)*n+i*2+a;if(f>s||b>l){let g=Math.min((s-(c-1)*n-i*2)/(c*d),(l-(m-1)*n-i*2-a)/(m*p));if(g<.25)throw new Error(`[FrameGrid] Cannot fit ${t} cells (${c}x${m}) into max dimensions [${s}x${l}]. Reduce cell count or decrease cellWidth.`);d=Math.max(100,Math.floor(d*g)),p=Math.round(d/(e>0?e:16/9)),f=c*d+(c-1)*n+i*2,b=m*p+(m-1)*n+i*2+a}return{columns:c,rows:m,cellWidth:d,cellHeight:p,totalWidth:f,totalHeight:b,headerHeight:a,gap:n,padding:i}}async function Yr(t,e={}){let r=t.fps??24,n=t.durationMs,{samples:i,fps:o}=da(e,r,n),a=t.width??1920,s=t.height??1080,l=a>0&&s>0?a/s:16/9,c=ma(i.length,l,e),m=e.renderer??new ve.HeadlessMediaRenderer,d=[];for(let y of i){let k=await t.renderFrame({frame:y.frame,atMs:y.timeMs,fps:o,renderer:m});d.push(k)}let p=new Jn.Canvas(c.totalWidth,c.totalHeight),f=p.getContext("2d");if(f.fillStyle=e.backgroundColor??"#090a0f",f.fillRect(0,0,c.totalWidth,c.totalHeight),e.showHeader!==!1&&c.headerHeight>0){let y=e.headerText??`FrameGrid Conformance Review | Frames ${i[0].frame}\u2013${i[i.length-1].frame} (Count: ${i.length})`,k=`${a}\xD7${s} @ ${o} FPS | Cell: ${c.cellWidth}\xD7${c.cellHeight}px | Step: ${e.stepFrames?`${e.stepFrames}f`:e.stepMs?`${e.stepMs}ms`:"Custom"}`;f.fillStyle="#f8fafc",f.font="bold 15px sans-serif",f.fillText(y,c.padding,c.padding+18),f.fillStyle="#94a3b8",f.font="12px sans-serif",f.fillText(k,c.padding,c.padding+36),f.strokeStyle="#1e2433",f.lineWidth=1,f.beginPath(),f.moveTo(c.padding,c.padding+46),f.lineTo(c.totalWidth-c.padding,c.padding+46),f.stroke()}let b=e.showLabels??!0;for(let y=0;y<i.length;y++){let k=i[y],D=y%c.columns,T=Math.floor(y/c.columns),w=c.padding+D*(c.cellWidth+c.gap),S=c.padding+c.headerHeight+T*(c.cellHeight+c.gap),x=await(0,Jn.loadImage)(d[y]);if(f.drawImage(x,w,S,c.cellWidth,c.cellHeight),f.strokeStyle="#262b3d",f.lineWidth=1,f.strokeRect(w,S,c.cellWidth,c.cellHeight),b){let N=`F:${k.frame} \u2022 ${k.timeMs}ms`;f.font="bold 11px sans-serif";let _=f.measureText(N).width+14,H=20,ee=w+6,E=S+6;f.fillStyle="#090a0fee",f.beginPath(),f.roundRect(ee,E,_,H,4),f.fill(),f.strokeStyle="#6366f155",f.lineWidth=1,f.stroke(),f.fillStyle="#e2e8f0",f.fillText(N,ee+7,E+14)}}let g=await p.toBuffer("png");return e.outputPath&&await yr.writeFile(e.outputPath,g),g}h();var Vh=["material","shininess","roughness","specularIntensity","metallic","ambientIntensity","ior","transmission","dispersion","fresnelPower","envIntensity","emissive","emissiveIntensity","castShadow"];function Xr(t){let e=t,r={};for(let n of Vh)e[n]!==void 0&&(r[n]=e[n]);return r}function Ih(t){return t==="lit"||t==="unlit"||t==="toon"?t:void 0}function pa(t,e,r){let n=Object.fromEntries(Object.entries({...e,color:r.color,material:Ih(r.material),shininess:r.shininess,roughness:r.roughness,metallic:r.metallic}).filter(([,i])=>i!==void 0));return L.model({id:r.id??J(t),modelData:Ha(n),primitive3d:n,is3D:!0,x:r.x??0,y:r.y??0,z:r.z??0,rotateX:r.rotateX??0,rotateY:r.rotateY??0,rotateZ:r.rotateZ??0,scale:r.scale??1,scaleX:r.scaleX??1,scaleY:r.scaleY??1,scaleZ:r.scaleZ??1,opacity:r.opacity??1,color:r.tint,material:r.material,shininess:r.shininess??32,roughness:r.roughness,specularIntensity:r.specularIntensity??.5,ambientIntensity:r.ambientIntensity??1,metallic:r.metallic,...Xr({emissive:r.emissive,emissiveIntensity:r.emissiveIntensity,castShadow:r.castShadow}),twoSided:!1,startFrame:r.startFrame,durationFrames:r.durationFrames})}function Qn(t,e){let r=e.faces??e.items??[];for(let[n,i]of Object.entries(e))Object.defineProperty(t,n,{value:i,enumerable:!1,configurable:!0});return Object.defineProperty(t,Symbol.iterator,{value:function*(){yield*r},enumerable:!1,configurable:!0}),t}function zh(t){let e=t.scale??1,r=Math.max(Math.abs(e*(t.scaleX??1)),Math.abs(e*(t.scaleY??1)));return r>0?r:1}var It={cube(t){let e=t.size,[r,n,i]=typeof e=="number"?[e,e,e]:e,o=t.twoSided??!0,a={front:"#3b82f6",back:"#1d4ed8",left:"#2563eb",right:"#1e40af",top:"#60a5fa",bottom:"#172554"},s=(f,b,g,y,k,D)=>{if(b&&typeof b=="object"&&"kind"in b){let w=b;return w.position="absolute",w.is3D=!0,w.twoSided=o,w.material=w.material??t.material??"lit",w.shininess=w.shininess??t.shininess??32,w.specularIntensity=w.specularIntensity??t.specularIntensity??.5,t.roughness!==void 0&&w.roughness===void 0&&(w.roughness=t.roughness),t.metallic!==void 0&&w.metallic===void 0&&(w.metallic=t.metallic),t.ambientIntensity!==void 0&&w.ambientIntensity===void 0&&(w.ambientIntensity=t.ambientIntensity),Object.assign(w,D),w}let T=typeof b=="string"?{background:b}:b??{background:g};return L.box({id:`${t.id??"cube"}-${f}`,position:"absolute",width:y,height:k,is3D:!0,twoSided:o,material:T.material??t.material??"lit",shininess:T.shininess??t.shininess??32,specularIntensity:T.specularIntensity??t.specularIntensity??.5,roughness:T.roughness??t.roughness,metallic:T.metallic??t.metallic,ambientIntensity:T.ambientIntensity??t.ambientIntensity??1,...Xr({emissive:T.emissive??t.emissive,emissiveIntensity:T.emissiveIntensity??t.emissiveIntensity,castShadow:T.castShadow??t.castShadow}),background:T.background??g,borderRadius:T.borderRadius??0,borderWidth:T.borderWidth,borderColor:T.borderColor,opacity:T.opacity??1,children:T.children??[],...D})},l=r/2,c=n/2,m=i/2,d=[s("front",t.faces?.front,a.front,r,n,{x:0,y:0,z:-m,rotateX:0,rotateY:0,rotateZ:0}),s("back",t.faces?.back,a.back,r,n,{x:0,y:0,z:m,rotateX:0,rotateY:180,rotateZ:0}),s("left",t.faces?.left,a.left,i,n,{x:-l,y:0,z:0,rotateX:0,rotateY:90,rotateZ:0}),s("right",t.faces?.right,a.right,i,n,{x:l,y:0,z:0,rotateX:0,rotateY:-90,rotateZ:0}),s("top",t.faces?.top,a.top,r,i,{x:0,y:-c,z:0,rotateX:-90,rotateY:0,rotateZ:0}),s("bottom",t.faces?.bottom,a.bottom,r,i,{x:0,y:c,z:0,rotateX:90,rotateY:0,rotateZ:0})],p=L.box({id:t.id??J("cube"),position:"absolute",x:t.x??0,y:t.y??0,z:t.z??0,width:r,height:n,is3D:!0,transformStyle:"preserve-3d",rotateX:t.rotateX??0,rotateY:t.rotateY??0,rotateZ:t.rotateZ??0,opacity:t.opacity??1,background:"transparent",children:d});return Qn(p,{faces:d})},carousel(t){let{items:e,radius:r,faceInward:n=!1,twoSided:i=!0}=t,o=e.length,a=o>0?360/o:0,s=e.map((c,m)=>{let d=m*a,p=d*Math.PI/180,f=r*Math.sin(p),b=-r*Math.cos(p),g=n?180-d:-d,y=c;return y.position="absolute",y.is3D=!0,y.twoSided=i,y.x=f,y.y=0,y.z=b,y.rotateY=g,y}),l=L.box({id:t.id??J("carousel"),position:"absolute",x:t.x??0,y:t.y??0,z:t.z??0,width:t.itemWidth??200,height:t.itemHeight??200,is3D:!0,transformStyle:"preserve-3d",rotateX:t.rotateX??0,rotateY:t.rotateY??0,rotateZ:t.rotateZ??0,opacity:t.opacity??1,background:"transparent",children:s});return Qn(l,{items:s})},prism(t){let{sides:e,radius:r,height:n,twoSided:i=!0}=t,o=Math.max(3,e),a=2*r*Math.tan(Math.PI/o),s=360/o,l=[];for(let m=0;m<o;m++){let d=m*s,p=d*Math.PI/180,f=r*Math.sin(p),b=r*Math.cos(p),g=t.sideConfigs?.[m],y=typeof g=="string"?g:g?.background??`hsl(${m*360/o}, 70%, 50%)`;l.push(L.box({id:`${t.id??"prism"}-panel-${m}`,position:"absolute",width:a,height:n,is3D:!0,twoSided:i,x:f,y:0,z:b,rotateY:d,background:y}))}let c=L.box({id:t.id??J("prism"),position:"absolute",x:t.x??0,y:t.y??0,z:t.z??0,width:a,height:n,is3D:!0,transformStyle:"preserve-3d",rotateX:t.rotateX??0,rotateY:t.rotateY??0,rotateZ:t.rotateZ??0,opacity:t.opacity??1,background:"transparent",children:l});return Qn(c,{faces:l})},plane(t){return L.box({id:t.id??J("plane"),position:"absolute",width:t.width,height:t.height,x:t.x??0,y:t.y??0,z:t.z??0,is3D:!0,twoSided:t.twoSided??!0,rotateX:t.rotateX??0,rotateY:t.rotateY??0,rotateZ:t.rotateZ??0,background:t.background??"#3b82f6",borderRadius:t.borderRadius??0,opacity:t.opacity??1,...Xr(t),children:t.children??[]})},grid(t){let{width:e,height:r}=t,n=t.id??J("grid"),i=Math.max(1,Math.round(t.divisions??10)),o=t.lineWidth??2,a=t.color??"rgba(59, 130, 246, 0.5)",s=(p,f,b,g,y)=>L.box({id:`${n}-${p}`,position:"absolute",x:f,y:b,z:0,width:g,height:y,is3D:!0,twoSided:!0,material:"unlit",background:a}),l=4096,c=[],m=Math.ceil(r/l),d=Math.ceil(e/l);for(let p=0;p<=i;p++){let f=p/i-.5;for(let b=0;b<m;b++){let g=r/m,y=-r/2+g*(b+.5);c.push(s(`v${p}-${b}`,f*e,y,o,g))}for(let b=0;b<d;b++){let g=e/d,y=-e/2+g*(b+.5);c.push(s(`h${p}-${b}`,y,f*r,g,o))}}return L.box({id:n,position:"absolute",width:e,height:r,x:t.x??0,y:t.y??0,z:t.z??0,is3D:!0,transformStyle:"preserve-3d",rotateX:t.rotateX??90,rotateY:t.rotateY??0,rotateZ:t.rotateZ??0,background:"transparent",opacity:t.opacity??1,children:c})},text(t){return t.extrusionDepth&&t.extrusionDepth>0?It.extrudedText({...t,depth:t.extrusionDepth}):L.text(t.text,{id:t.id??J("text3d"),position:"absolute",x:t.x??0,y:t.y??0,z:t.z??0,is3D:!0,twoSided:t.twoSided??!0,rotateX:t.rotateX??0,rotateY:t.rotateY??0,rotateZ:t.rotateZ??0,fontSize:t.fontSize??48,fontFamily:t.fontFamily,fontWeight:t.fontWeight??"bold",fontStyle:t.fontStyle,fill:t.fill??"#ffffff",align:t.align??"center",direction:t.direction,verticalAlign:t.verticalAlign??"middle",letterSpacing:t.letterSpacing,lineHeight:t.lineHeight,material:t.material??"lit",shininess:t.shininess??64,roughness:t.roughness,specularIntensity:t.specularIntensity??.8,ambientIntensity:t.ambientIntensity??1,metallic:t.metallic,...Xr(t),opacity:t.opacity??1,background:t.background,borderRadius:t.borderRadius,padding:t.padding,stroke:t.stroke,strokeWidth:t.strokeWidth})},extrudedText(t){let{depth:e,text:r,fill:n="#ffffff",bevelColor:i}=t,o,a=(t.curveTolerance??.1)/zh(t),s=(t.fontFamily?Ut.getParsed(t.fontFamily):null)??Ut.getParsed("Inter")??Ut.getParsed("Unbounded")??Ut.getFirstParsed();s&&(o=Wa({text:r,font:s,fontSize:t.fontSize??48,depth:e,fill:n,bevelColor:i,curveSegments:t.curveSegments,curveTolerance:a,align:t.align,direction:t.direction,verticalAlign:t.verticalAlign,letterSpacing:t.letterSpacing,material:t.material==="lit"||t.material==="unlit"||t.material==="toon"?t.material:void 0,shininess:t.shininess,roughness:t.roughness,metallic:t.metallic}).modelData);let l=L.model({id:t.id??J("extruded-text"),modelData:o,is3D:!0,x:t.x??0,y:t.y??0,z:t.z??0,rotateX:t.rotateX??0,rotateY:t.rotateY??0,rotateZ:t.rotateZ??0,scale:t.scale??1,scaleX:t.scaleX??1,scaleY:t.scaleY??1,scaleZ:t.scaleZ??1,opacity:t.opacity??1,material:t.material,shininess:t.shininess??32,roughness:t.roughness,specularIntensity:t.specularIntensity??.8,ambientIntensity:t.ambientIntensity??1,metallic:t.metallic,...Xr(t),twoSided:t.twoSided??!0,text3dOptions:{...t,curveTolerance:a}});return Qn(l,{faces:[l],items:[l]})},roundedBox(t){return pa("rounded-box",{type:"roundedBox",width:t.width,height:t.height,depth:t.depth,radius:t.radius,segments:t.segments,taper:t.taper},t)},sphere(t){return pa("sphere",{type:"sphere",radius:t.radius,segments:t.segments},t)},cylinder(t){return pa("cylinder",{type:"cylinder",radius:t.radius,radiusTop:t.radiusTop,radiusBottom:t.radiusBottom,height:t.height,segments:t.segments,openEnded:t.openEnded},t)},model(t={}){return L.model(t)},obj(t,e={}){return L.obj(t,e)},fbx(t,e={}){return L.fbx(t,e)},gltf(t,e={}){return L.gltf(t,e)},glb(t,e={}){return L.glb(t,e)},stl(t,e={}){return L.stl(t,e)},ply(t,e={}){return L.ply(t,e)},vox(t,e={}){return L.vox(t,e)},threeDS(t,e={}){return L.threeDS(t,e)},off(t,e={}){return L.off(t,e)}};h();var fa=(t,e,r)=>{switch(t){case"left":return{dx:-e,dy:0};case"right":return{dx:e,dy:0};case"up":return{dx:0,dy:-r};default:return{dx:0,dy:r}}};function Qe(t,e,r){return{kind:t,frames:Math.max(0,Math.round(e)),build:r}}var Il={cut:()=>Qe("cut",0,()=>({})),crossfade:(t=15,e="sine.inOut")=>Qe("crossfade",t,r=>({incoming:oe.keys("opacity",[[0,0],[r.frames,1,e]])})),fadeThrough:(t=20,e="sine.inOut")=>Qe("fadeThrough",t,r=>{let n=Math.max(1,Math.floor(r.frames/2));return{outgoing:oe.keys("opacity",[[r.outStart,1],[r.outStart+n,0,e]]),incoming:oe.keys("opacity",[[0,0],[n,0],[r.frames,1,e]])}}),push:(t="left",e=18,r="power3.inOut")=>Qe("push",e,n=>{let{dx:i,dy:o}=fa(t,n.width,n.height),a=oe.create(),s=oe.create();return i!==0?(a.keys("x",[[n.outStart,n.outRest.x],[n.outStart+n.frames,n.outRest.x+i,r]]),s.keys("x",[[0,n.inRest.x-i],[n.frames,n.inRest.x,r]])):(a.keys("y",[[n.outStart,n.outRest.y],[n.outStart+n.frames,n.outRest.y+o,r]]),s.keys("y",[[0,n.inRest.y-o],[n.frames,n.inRest.y,r]])),{outgoing:a,incoming:s}}),slide:(t="left",e=18,r="power3.out")=>Qe("slide",e,n=>{let{dx:i,dy:o}=fa(t,n.width,n.height),a=i!==0?"x":"y",s=i!==0?n.inRest.x:n.inRest.y;return{outgoing:oe.keys("opacity",[[n.outStart,1],[n.outStart+n.frames,.6,r]]),incoming:oe.keys(a,[[0,s-(i||o)],[n.frames,s,r]])}}),zoom:(t=18,e="power2.inOut")=>Qe("zoom",t,r=>({outgoing:oe.create().keys("scale",[[r.outStart,1],[r.outStart+r.frames,1.25,e]]).keys("opacity",[[r.outStart,1],[r.outStart+r.frames,0,e]]),incoming:oe.create().keys("scale",[[0,.85],[r.frames,1,e]]).keys("opacity",[[0,0],[r.frames,1,e]])})),whip:(t="left",e=10)=>{let r=Il.push(t,e,"expo.inOut");return Qe("whip",e,n=>({...r.build(n),sceneProps:{motionBlurShutter:360}}))},wipe:(t="left",e=18,r="power2.inOut")=>Qe("wipe",e,n=>{let{dx:i,dy:o}=fa(t,n.width,n.height),a=i!==0?"x":"y",s=i!==0?n.inRest.x:n.inRest.y;return{incomingMatte:L.box({id:J("wipe-matte"),position:"absolute",x:n.inRest.x,y:n.inRest.y,width:n.width,height:n.height,background:"#ffffff"}).animate(oe.keys(a,[[0,s-(i||o)],[n.frames,s,r]]))}}),iris:(t=20,e={})=>Qe("iris",t,r=>{let[n,i]=e.at??[.5,.5],o=r.inRest.x+n*r.width,a=r.inRest.y+i*r.height,s=Math.hypot(Math.max(n,1-n)*r.width,Math.max(i,1-i)*r.height);return{incomingMatte:L.shape("circle",{id:J("iris-matte"),position:"absolute",x:o-s,y:a-s,width:s*2,height:s*2,fillColor:"#ffffff"}).animate(oe.keys("scale",[[0,0],[r.frames,1,e.ease??"power2.inOut"]]))}})};function ei(t,e,r){let n=t[e];return typeof n=="number"?n:r}function zl(t,e={}){let r=[],n=[],i=0;t.forEach((a,s)=>{let l=s===0?void 0:a.transition,c=Math.min(l?.frames??0,t[s-1]?.duration??0),m=Math.max(0,i-c),d=Math.max(1,Math.round(a.duration));n.push(m);let p=a.scene;(p.position===void 0||p.position==="relative")&&(p.position="absolute",p.x??=0,p.y??=0),p.startFrame=m,p.durationFrames=d,r.push(p),i=m+d}),t.forEach((a,s)=>{if(s===0||!a.transition||a.transition.frames===0)return;let l=r[s-1],c=r[s],m=Math.min(a.transition.frames,t[s-1].duration),d=e.width??ei(c,"width",1920),p=e.height??ei(c,"height",1080),f=a.transition.build({width:d,height:p,frames:m,outStart:t[s-1].duration-m,outRest:{x:typeof l.x=="number"?l.x:0,y:typeof l.y=="number"?l.y:0},inRest:{x:typeof c.x=="number"?c.x:0,y:typeof c.y=="number"?c.y:0}}),b=(g,y)=>{if(!y)return;let k=g.animation?.tracks??[];g.animation=oe.merge({tracks:k},y).toSpec()};b(l,f.outgoing),b(c,f.incoming),f.sceneProps&&(Object.assign(l,f.sceneProps),Object.assign(c,f.sceneProps)),f.incomingMatte&&(c.matte={node:f.incomingMatte,mode:"alpha"})});let o=L.box({id:e.id??J("sequence"),position:"absolute",x:0,y:0,width:e.width??ei(r[0]??{},"width",1920),height:e.height??ei(r[0]??{},"height",1080),startFrame:e.startFrame??0,durationFrames:Math.max(1,i),children:r});return Object.defineProperty(o,"totalFrames",{value:i,enumerable:!1}),Object.defineProperty(o,"sceneStarts",{value:n,enumerable:!1}),o}h();var Uh={studio:{environment:"studio",envIntensity:1,key:{dir:[-.55,-1,-.7],color:"#fff6ec",intensity:1.1},rim:{dir:[.9,-.5,.9],color:"#dbe8ff",intensity:.9}},soft:{environment:"soft",envIntensity:1,key:{dir:[-.4,-1,-.8],color:"#ffffff",intensity:1}},sunset:{environment:"sunset",envIntensity:.9,key:{dir:[-1,-.35,-.3],color:"#ffb27a",intensity:2.2},fill:{dir:[.8,-.6,-.4],color:"#7f9cff",intensity:.35}},dramatic:{environment:"night",envIntensity:.8,key:{dir:[-.8,-1,-.35],color:"#ffffff",intensity:2.4},rim:{dir:[.7,-.4,1],color:"#8fb4ff",intensity:1.8}}};function _h([t,e,r],n){let i=n*Math.PI/180,o=Math.cos(i),a=Math.sin(i);return[o*t+a*r,e,-a*t+o*r]}function Ul(t,e,r,n){let[i,o,a]=_h(t,n),s=Math.hypot(i,o,a)||1;return{x:e[0]+i/s*r,y:e[1]+o/s*r,z:e[2]+a/s*r,targetX:e[0],targetY:e[1],targetZ:e[2]}}function ti(t,e){let r=Uh[t],n=e.target??[960,540,0],i=e.distance??1600,o=e.rotation??0,a=e.intensity??1,s=e.id??J(`lighting-${t}`),l=[et.environment(r.environment,{id:`${s}-environment`,intensity:r.envIntensity*a,rotation:o,exposure:e.exposure,toneMapping:e.toneMapping,fog:e.fog,bloom:e.bloom}),et.directional({id:`${s}-key`,color:r.key.color,intensity:r.key.intensity*a,...Ul(r.key.dir,n,i,o),castShadow:e.shadows??!0,shadowSoftness:e.shadowSoftness??3})];for(let[c,m]of[["rim",r.rim],["fill",r.fill]])m&&l.push(et.directional({id:`${s}-${c}`,color:m.color,intensity:m.intensity*a,...Ul(m.dir,n,i,o)}));return l}var Gh={studio:(t={})=>ti("studio",t),soft:(t={})=>ti("soft",t),sunset:(t={})=>ti("sunset",t),dramatic:(t={})=>ti("dramatic",t)};h();h();var jh="@dimforge/rapier2d-deterministic-compat",$h="@dimforge/rapier3d-deterministic-compat";async function _l(t,e){let r;try{r=await e()}catch(i){throw new Error(`Physics needs the optional dependency "${t}". Install it with \`npm i ${t}\`.`,{cause:i})}let n=r.default??r;return await n.init(),n}var Gl,jl;async function ba(t){if(t===2){Gl??=_l(jh,()=>import("./rapier-JD7KNQRV.mjs"));let r=await Gl;return{createWorld2D:n=>new ha(r,n),createWorld3D:()=>{throw new Error("This backend was loaded for 2D.")}}}jl??=_l($h,()=>import("./rapier-AHBIGHEL.mjs"));let e=await jl;return{createWorld2D:()=>{throw new Error("This backend was loaded for 3D.")},createWorld3D:r=>new ga(e,r)}}var ha=class{constructor(e,r){this.R=e;this.world=new e.World({x:r[0],y:r[1]}),this.events=new e.EventQueue(!0)}R;world;events;byCollider=new Map;started=[];addBody(e){let r=this.R,n=$l(r,e.type).setTranslation(e.position[0],e.position[1]).setRotation(e.angle).setLinvel(e.velocity[0],e.velocity[1]).setAngvel(e.angularVelocity).setLinearDamping(e.linearDamping).setAngularDamping(e.angularDamping).setGravityScale(e.gravityScale).setCcdEnabled(e.ccd).setEnabled(e.enabled);e.lockRotation&&n.lockRotations();let i=this.world.createRigidBody(n),o=this.world.createCollider(Wh(r,e.shape).setDensity(e.density).setFriction(e.friction).setRestitution(e.restitution).setActiveEvents(r.ActiveEvents.COLLISION_EVENTS).setSensor(e.sensor??!1),i),a={raw:i,position:()=>{let s=i.translation();return[s.x,s.y]},rotation:()=>i.rotation(),velocity:()=>{let s=i.linvel();return[s.x,s.y]},angularVelocity:()=>i.angvel(),sleeping:()=>i.isSleeping(),mass:()=>i.mass(),setEnabled:s=>i.setEnabled(s),applyImpulse:([s,l])=>i.applyImpulse({x:s,y:l},!0),setKinematicTarget:([s,l],c)=>{i.setNextKinematicTranslation({x:s,y:l}),i.setNextKinematicRotation(c)}};return this.byCollider.set(o.handle,a),a}addJoint(e,r,n){let i=this.R,o={x:n.anchorA[0],y:n.anchorA[1]},a={x:n.anchorB[0],y:n.anchorB[1]},s;switch(n.type){case"revolute":case"spherical":s=i.JointData.revolute(o,a);break;case"fixed":s=i.JointData.fixed(o,0,a,0);break;case"rope":s=i.JointData.rope(n.length,o,a);break;case"spring":s=i.JointData.spring(n.restLength,n.stiffness,n.damping,o,a);break}this.world.createImpulseJoint(s,ri(e),ri(r),!0).setContactsEnabled(!1)}step(e){this.world.timestep=e,this.world.step(this.events),this.events.drainCollisionEvents((r,n,i)=>{if(!i)return;let o=this.byCollider.get(r),a=this.byCollider.get(n);o&&a&&this.started.push([o,a])})}drainCollisionStarts(){return this.started.splice(0)}free(){this.events.free(),this.world.free()}},ga=class{constructor(e,r){this.R=e;this.world=new e.World({x:r[0],y:r[1],z:r[2]}),this.events=new e.EventQueue(!0)}R;world;events;byCollider=new Map;started=[];addBody(e){let r=this.R,[n,i,o,a]=e.rotation,s=$l(r,e.type).setTranslation(e.position[0],e.position[1],e.position[2]).setRotation({x:n,y:i,z:o,w:a}).setLinvel(e.velocity[0],e.velocity[1],e.velocity[2]).setAngvel(cr(e.lockRotation?[0,0,0]:e.angularVelocity.map((p,f)=>e.enabledRotations&&!e.enabledRotations[f]?0:p))).setLinearDamping(e.linearDamping).setAngularDamping(e.angularDamping).setGravityScale(e.gravityScale).setCcdEnabled(e.ccd).setEnabled(e.enabled);e.lockRotation?s.lockRotations():e.enabledRotations&&s.enabledRotations(...e.enabledRotations);let l=this.world.createRigidBody(s),c=Hh(r,e.shape),m=this.world.createCollider(c.setDensity(e.density).setFriction(e.friction).setRestitution(e.restitution).setActiveEvents(r.ActiveEvents.COLLISION_EVENTS).setSensor(e.sensor??!1),l),d={raw:l,position:()=>{let p=l.translation();return[p.x,p.y,p.z]},rotation:()=>{let p=l.rotation();return[p.x,p.y,p.z,p.w]},velocity:()=>{let p=l.linvel();return[p.x,p.y,p.z]},angularVelocity:()=>{let p=l.angvel();return[p.x,p.y,p.z]},sleeping:()=>l.isSleeping(),mass:()=>l.mass(),setEnabled:p=>l.setEnabled(p),applyImpulse:p=>l.applyImpulse(cr(p),!0),setKinematicTarget:(p,[f,b,g,y])=>{l.setNextKinematicTranslation(cr(p)),l.setNextKinematicRotation({x:f,y:b,z:g,w:y})}};return this.byCollider.set(m.handle,d),d}addJoint(e,r,n){let i=this.R,o=cr(n.anchorA),a=cr(n.anchorB),s;switch(n.type){case"revolute":s=i.JointData.revolute(o,a,cr(n.axis??[0,0,1]));break;case"spherical":s=i.JointData.spherical(o,a);break;case"fixed":{let l={x:0,y:0,z:0,w:1};s=i.JointData.fixed(o,l,a,l);break}case"rope":s=i.JointData.rope(n.length,o,a);break;case"spring":s=i.JointData.spring(n.restLength,n.stiffness,n.damping,o,a);break}this.world.createImpulseJoint(s,ri(e),ri(r),!0).setContactsEnabled(!1)}step(e){this.world.timestep=e,this.world.step(this.events),this.events.drainCollisionEvents((r,n,i)=>{if(!i)return;let o=this.byCollider.get(r),a=this.byCollider.get(n);o&&a&&this.started.push([o,a])})}drainCollisionStarts(){return this.started.splice(0)}free(){this.events.free(),this.world.free()}};function cr([t,e,r]){return{x:t,y:e,z:r}}function ri(t){return t.raw}function $l(t,e){let r=t.RigidBodyDesc;return e==="fixed"?r.fixed():e==="kinematic"?r.kinematicPositionBased():r.dynamic()}function Wh(t,e){switch(e.kind){case"ball":return t.ColliderDesc.ball(e.radius);case"box":{let r=Math.min(e.radius??0,e.hx/2,e.hy/2);return r>0?t.ColliderDesc.roundCuboid(e.hx-r,e.hy-r,r):t.ColliderDesc.cuboid(e.hx,e.hy)}case"hull":{let r=t.ColliderDesc.convexHull(new Float32Array(e.points));if(!r)throw new Error("Physics: could not build a convex hull for this shape.");return r}}}function Hh(t,e){switch(e.kind){case"ball":return t.ColliderDesc.ball(e.radius);case"box":{let r=Math.min(e.radius??0,e.hx/2,e.hy/2,e.hz/2);return r>0?t.ColliderDesc.roundCuboid(e.hx-r,e.hy-r,e.hz-r,r):t.ColliderDesc.cuboid(e.hx,e.hy,e.hz)}case"cylinder":return t.ColliderDesc.cylinder(e.halfHeight,e.radius);case"hull":{let r=t.ColliderDesc.convexHull(new Float32Array(e.points));if(!r)throw new Error("Physics: could not build a convex hull for this shape.");return r}}}h();var qr=class{constructor(e,r,n,i,o,a,s){this.world=e;this.type=n;this.layer=i;this.frame=o;this.options=a;this.sim=r,this.recording=s}world;type;layer;frame;options;collisions=[];recording;sim;get startFrame(){return Math.max(0,Math.round(this.options.startFrame??0))}get gravityScale(){return this.options.gravityScale??1}get output(){return this.options.output}get x(){return this.recording.signal("x")}get y(){return this.recording.signal("y")}get rotation(){return this.recording.signal("rotation")}get centerX(){return this.recording.signal("centerX")}get centerY(){return this.recording.signal("centerY")}get vx(){return this.recording.signal("vx")}get vy(){return this.recording.signal("vy")}get speed(){return this.recording.signal("speed")}get angularVelocity(){return this.recording.signal("angularVelocity")}get impact(){return this.recording.signal("impact")}get sleeping(){return this.recording.signal("sleeping")}kinematicTarget(e){let r=this.options.follow;if(this.type!=="kinematic"||!r)return;let n=this.frame,i=this.world.fps,o=r.x===void 0?void 0:Ie(r.x,e,i),a=r.y===void 0?void 0:Ie(r.y,e,i),s=r.rotation===void 0?n.rotation:Ie(r.rotation,e,i),l=this.initialLayerXY(),c=Yl(o??l[0],a??l[1],s,n),m=this.world.pixelsPerMeter;return{position:[c[0]/m,c[1]/m],rotation:s*Math.PI/180}}initialLayerXY(){let e=this.layer;return[Number(e?.x??0),Number(e?.y??0)]}record(e,r){let n=this.world.pixelsPerMeter,[i,o]=this.sim.position(),a=i*n,s=o*n,l=this.recording,c=l.channel("rotation"),m=this.sim.rotation()*180/Math.PI;c[e]=r<0?Vt(this.frame.rotation,m):Vt(c[r],m);let[d,p]=Kh(a,s,c[e],this.frame);l.channel("x")[e]=d,l.channel("y")[e]=p,l.channel("centerX")[e]=a,l.channel("centerY")[e]=s;let[f,b]=this.sim.velocity();l.channel("vx")[e]=f*n,l.channel("vy")[e]=b*n,l.channel("speed")[e]=Math.hypot(f,b)*n,l.channel("angularVelocity")[e]=this.sim.angularVelocity()*180/Math.PI,l.channel("sleeping")[e]=this.sim.sleeping()?1:0}boundChannels(){let e=[["x","x"],["y","y"]];return this.options.lockRotation||e.push(["rotation","rotation"]),e}localAnchor(e){if(!e)return[0,0];let r=this.world.pixelsPerMeter,[n,i]=this.sim.position(),o=-this.sim.rotation(),a=e[0]/r-n,s=e[1]/r-i;return[a*Math.cos(o)-s*Math.sin(o),a*Math.sin(o)+s*Math.cos(o)]}center(){let e=this.world.pixelsPerMeter,[r,n]=this.sim.position();return[r*e,n*e]}},dr=class extends lr{constructor(e,r){let n=r.pixelsPerMeter??100,i=r.gravity??2400,o=typeof i=="number"?[0,i/n]:[i[0]/n,i[1]/n],a=e.createWorld2D(o);super(a,o,r)}body(e,r={}){this.assertOpen();let i=typeof e.kind=="string"?e:void 0,o=Xh(e,r),a=this.pixelsPerMeter,s=r.type??"dynamic",[l,c]=Yl(o.x,o.y,o.rotation,o),m=r.velocity??[0,0],d={type:s,position:[l/a,c/a],angle:o.rotation*Math.PI/180,velocity:[m[0]/a,m[1]/a],angularVelocity:(r.angularVelocity??0)*Math.PI/180,linearDamping:r.linearDamping??0,angularDamping:r.angularDamping??0,gravityScale:r.gravityScale??1,lockRotation:r.lockRotation??!1,ccd:r.ccd??!1,enabled:!0,sensor:r.sensor??!1,density:r.density??1,friction:r.friction??.6,restitution:r.restitution??.3,shape:Wl(o.shape,1/a)},p=this.sim.addBody(d),f=new qr(this,p,s,i,o,r,this.newRecording());return this.addBody(f)}ground(e){return this.body({x:-1e6/2,y:e.y,width:1e6,height:2e3},{type:"fixed",friction:e.friction,restitution:e.restitution??.2})}walls(e){let{width:r,height:n}=e,i=e.x??0,o=e.y??0,a=e.thickness??400,s={type:"fixed",friction:e.friction,restitution:e.restitution??.2},l=n*4+a,c={floor:this.body({x:i-a,y:o+n,width:r+2*a,height:a},s),left:this.body({x:i-a,y:o+n-l,width:a,height:l},s),right:this.body({x:i+r,y:o+n-l,width:a,height:l},s),ceiling:void 0};return e.ceiling&&(c.ceiling=this.body({x:i-a,y:o-a,width:r+2*a,height:a},s)),c}pin(e,r){let n=r??e.center(),i=this.anchorBody(n);return this.joint(e,i,{type:"revolute",anchorA:e.localAnchor(n),anchorB:[0,0]}),this}hinge(e,r,n){return this.joint(e,r,{type:"revolute",anchorA:e.localAnchor(n),anchorB:r.localAnchor(n)}),this}weld(e,r){let n=e.center();return this.joint(e,r,{type:"fixed",anchorA:[0,0],anchorB:r.localAnchor(n)}),this}spring(e,r,n={}){let{other:i,pa:o,pb:a}=this.endpoints(e,r,n.anchorA,n.anchorB),s=this.pixelsPerMeter,l=(n.length??Math.hypot(a[0]-o[0],a[1]-o[1]))/s,c=Yh(e,i),m=2*Math.PI*(n.frequency??2);return this.joint(e,i,{type:"spring",anchorA:e.localAnchor(o),anchorB:i.localAnchor(a),restLength:l,stiffness:c*m*m,damping:2*(n.dampingRatio??.2)*c*m}),this}rope(e,r,n={}){let{other:i,pa:o,pb:a}=this.endpoints(e,r,n.anchorA,n.anchorB),s=n.length??Math.hypot(a[0]-o[0],a[1]-o[1]);return this.joint(e,i,{type:"rope",anchorA:e.localAnchor(o),anchorB:i.localAnchor(a),length:s/this.pixelsPerMeter}),this}force(e,r){let n=this.pixelsPerMeter;return this.addForce(e,i=>[r.x===void 0?0:Ie(r.x,i,this.fps)/n,r.y===void 0?0:Ie(r.y,i,this.fps)/n]),this}field(e,r={}){let n=this.pixelsPerMeter;return this.addField((i,o)=>{let[a,s]=i.sim.position(),[l,c]=i.sim.velocity(),m=e({x:a*n,y:s*n,vx:l*n,vy:c*n,frame:o,body:i});return m?[m[0]/n,m[1]/n]:null},r.bodies),this}impulse(e,r,n){let i=this.pixelsPerMeter;return this.addImpulse(e,r,[n[0]/i,n[1]/i]),this}lerpRotation(e,r,n){return e+(r-e)*n}joint(e,r,n){this.assertOpen(),this.sim.addJoint(e.sim,r.sim,n)}anchorBody(e){return this.body({x:e[0]-.5,y:e[1]-.5,width:1,height:1},{type:"fixed",output:"none",sensor:!0})}endpoints(e,r,n,i){let o=n??e.center();if(Array.isArray(r)){let a=i??r;return{other:this.anchorBody(a),pa:o,pb:a}}return{other:r,pa:o,pb:i??r.center()}}};function Yh(t,e){let r=t.type==="dynamic"?t.sim.mass():0,n=e.type==="dynamic"?e.sim.mass():0;return r>0&&n>0?r*n/(r+n):Math.max(r,n,.001)}function Ye(t,e){return typeof t=="number"&&Number.isFinite(t)?t:e}function Xh(t,e){let r=typeof t.id=="string"?` "${t.id}"`:"";if(typeof t.x!="number"||typeof t.y!="number")throw new Error(`Physics: layer${r} needs numeric \`x\` and \`y\` (absolute position) to become a body.`);let n=e.size?.[0]??(typeof t.width=="number"?t.width:void 0),i=e.size?.[1]??(typeof t.height=="number"?t.height:void 0);if((n===void 0||i===void 0)&&t.kind==="text"){let s=Ze.measure(String(t.text??""),{fontFamily:String(t.fontFamily??"Inter"),fontSize:Ye(t.fontSize,48),fontWeight:t.fontWeight,letterSpacing:Ye(t.letterSpacing,0),lineHeight:typeof t.lineHeight=="number"?t.lineHeight:void 0});n??=s.width,i??=s.height}if(n===void 0||i===void 0||n<=0||i<=0)throw new Error(`Physics: layer${r} needs a numeric \`width\` and \`height\` (or the \`size\` option) to become a body.`);let o=Ye(t.scale,1);return{...{x:t.x,y:t.y,width:n,height:i,scale:o,anchorX:Ye(t.anchorX,.5),anchorY:Ye(t.anchorY,.5),rotation:Ye(t.rotation,0)},shape:Wl(qh(t,n,i,e.shape??"auto"),o)}}function qh(t,e,r,n){let o=t.kind==="shape"?String(t.shapeType??"rect"):"rect",a=Ye(t.borderRadius,Ye(t.cornerRadius,0)),s={kind:"box",hx:e/2,hy:r/2,radius:a};if(n==="box")return s;if(n==="circle"||n==="auto"&&o==="circle")return{kind:"ball",radius:Math.min(e,r)/2};if(n==="auto"&&o==="rect")return s;if(n==="hull"||n==="auto"){let l=Zh(t,o,e,r);return l.length>=6?{kind:"hull",points:l}:s}return s}function Zh(t,e,r,n){let i=e==="path"?String(t.d??""):Ga({shapeType:e,width:r,height:n,cornerRadius:Ye(t.cornerRadius,Ye(t.borderRadius,0)),polygonSides:t.polygonSides,starPoints:t.starPoints,starInnerRadiusRatio:t.starInnerRadiusRatio,arrowHeadWidth:t.arrowHeadWidth,arrowHeadLength:t.arrowHeadLength,arrowShaftWidth:t.arrowShaftWidth}),o=[];for(let a of _a(i))o.push(a.p0.x-r/2,a.p0.y-n/2,a.p1.x-r/2,a.p1.y-n/2);return o}function Wl(t,e){switch(t.kind){case"ball":return{kind:"ball",radius:t.radius*e};case"box":return{kind:"box",hx:t.hx*e,hy:t.hy*e,radius:(t.radius??0)*e};case"hull":return{kind:"hull",points:t.points.map(r=>r*e)}}}function Hl(t,e){let r=t*Math.PI/180,n=(.5-e.anchorX)*e.width*e.scale,i=(.5-e.anchorY)*e.height*e.scale;return[n*Math.cos(r)-i*Math.sin(r),n*Math.sin(r)+i*Math.cos(r)]}function Yl(t,e,r,n){let[i,o]=Hl(r,n);return[t+n.anchorX*n.width+i,e+n.anchorY*n.height+o]}function Kh(t,e,r,n){let[i,o]=Hl(r,n);return[t-i-n.anchorX*n.width,e-o-n.anchorY*n.height]}h();var ft=Math.PI/180;function ql(t,e,r){let n=s=>s*ft/2,i=[Math.sin(n(t)),0,0,Math.cos(n(t))],o=[0,Math.sin(n(e)),0,Math.cos(n(e))],a=[0,0,Math.sin(n(r)),Math.cos(n(r))];return ni(ni(a,o),i)}function ni(t,e){let[r,n,i,o]=t,[a,s,l,c]=e;return[o*a+r*c+n*l-i*s,o*s-r*l+n*c+i*a,o*l+r*s-n*a+i*c,o*c-r*a-n*s-i*l]}function Jh(t,e){let[r,n,i,o]=t,a=1-2*(n*n+i*i),s=2*(r*n+o*i),l=2*(r*i-o*n),c=2*(n*i+o*r),m=1-2*(r*r+n*n),d=2*(r*n-o*i),p=1-2*(r*r+i*i),f=Math.max(-1,Math.min(1,-l)),b;if(Math.abs(f)>.999999){let S=Math.asin(f),x=e?e[0]*ft:0,N=Math.atan2(-d,p)+(f>0?x:-x);b=[x,S,N]}else b=[Math.atan2(c,m),Math.asin(f),Math.atan2(s,a)];let g=[b[0]/ft,b[1]/ft,b[2]/ft];if(!e)return g;let y=[g[0]+180,180-g[1],g[2]+180],k=S=>[Vt(e[0],S[0]),Vt(e[1],S[1]),Vt(e[2],S[2])],D=k(g),T=k(y),w=S=>Math.abs(S[0]-e[0])+Math.abs(S[1]-e[1])+Math.abs(S[2]-e[2]);return w(D)<=w(T)?D:T}var Zr=class{constructor(e,r,n,i,o,a,s){this.world=e;this.type=n;this.layer=i;this.start=o;this.options=a;this.sim=r,this.recording=s}world;type;layer;start;options;collisions=[];recording;sim;get startFrame(){return Math.max(0,Math.round(this.options.startFrame??0))}get gravityScale(){return this.options.gravityScale??1}get output(){return this.options.output}get x(){return this.recording.signal("x")}get y(){return this.recording.signal("y")}get z(){return this.recording.signal("z")}get rotateX(){return this.recording.signal("rotateX")}get rotateY(){return this.recording.signal("rotateY")}get rotateZ(){return this.recording.signal("rotateZ")}get vx(){return this.recording.signal("vx")}get vy(){return this.recording.signal("vy")}get vz(){return this.recording.signal("vz")}get speed(){return this.recording.signal("speed")}get impact(){return this.recording.signal("impact")}get sleeping(){return this.recording.signal("sleeping")}kinematicTarget(e){let r=this.options.follow;if(this.type!=="kinematic"||!r)return;let n=this.world.fps,i=(l,c)=>l===void 0?c:Ie(l,e,n),o=this.start.position,a=this.start.rotation,s=this.world.pixelsPerMeter;return{position:[i(r.x,o[0])/s,i(r.y,o[1])/s,i(r.z,o[2])/s],rotation:ql(i(r.rotateX,a[0]),i(r.rotateY,a[1]),i(r.rotateZ,a[2]))}}record(e,r){let n=this.world.pixelsPerMeter,i=this.recording,[o,a,s]=this.sim.position();i.channel("x")[e]=o*n,i.channel("y")[e]=a*n,i.channel("z")[e]=s*n;let l=i.channel("rotateX"),c=i.channel("rotateY"),m=i.channel("rotateZ"),d=r<0?this.start.rotation:[l[r],c[r],m[r]],p=Jh(this.sim.rotation(),d);l[e]=p[0],c[e]=p[1],m[e]=p[2];let[f,b,g]=this.sim.velocity();i.channel("vx")[e]=f*n,i.channel("vy")[e]=b*n,i.channel("vz")[e]=g*n,i.channel("speed")[e]=Math.hypot(f,b,g)*n,i.channel("sleeping")[e]=this.sim.sleeping()?1:0}boundChannels(){let e=[["x","x"],["y","y"],["z","z"]];return this.options.lockRotation!==!0&&e.push(["rotateX","rotateX"],["rotateY","rotateY"],["rotateZ","rotateZ"]),e}localAnchor(e){if(!e)return[0,0,0];let r=this.world.pixelsPerMeter,n=this.sim.position(),[i,o,a,s]=this.sim.rotation(),l=[e[0]/r-n[0],e[1]/r-n[1],e[2]/r-n[2]];return Qh(l,[-i,-o,-a,s])}center(){let e=this.world.pixelsPerMeter,[r,n,i]=this.sim.position();return[r*e,n*e,i*e]}};function Qh(t,e){let r=ni(ni(e,[t[0],t[1],t[2],0]),[-e[0],-e[1],-e[2],e[3]]);return[r[0],r[1],r[2]]}var mr=class extends lr{constructor(e,r){let n=r.pixelsPerMeter??100,i=r.gravity??2400,o=typeof i=="number"?[0,i/n,0]:[i[0]/n,i[1]/n,i[2]/n];super(e.createWorld3D(o),o,r)}body(e,r={}){this.assertOpen();let i=typeof e.kind=="string"?e:void 0,o=e,a=[se(o.x,0),se(o.y,0),se(o.z,0)],s=[se(o.rotateX,0),se(o.rotateY,0),se(o.rotateZ,0)],l=this.pixelsPerMeter,c=r.type??"dynamic",m=r.velocity??[0,0,0],d=r.angularVelocity??[0,0,0],p={type:c,position:[a[0]/l,a[1]/l,a[2]/l],rotation:ql(s[0],s[1],s[2]),velocity:[m[0]/l,m[1]/l,m[2]/l],angularVelocity:[d[0]*ft,d[1]*ft,d[2]*ft],linearDamping:r.linearDamping??0,angularDamping:r.angularDamping??0,gravityScale:r.gravityScale??1,lockRotation:r.lockRotation===!0,...typeof r.lockRotation=="object"&&{enabledRotations:[!r.lockRotation.x,!r.lockRotation.y,!r.lockRotation.z]},ccd:r.ccd??!1,enabled:!0,sensor:r.sensor??!1,density:r.density??1,friction:r.friction??.6,restitution:r.restitution??.3,shape:rg(eg(o,r),1/l)},f=this.sim.addBody(p),b=new Zr(this,f,c,i,{position:a,rotation:s},r,this.newRecording());return this.addBody(b)}ground(e){return this.body({x:0,y:e.y+2e3/2,z:0,width:1e6,height:2e3,depth:1e6},{type:"fixed",friction:e.friction,restitution:e.restitution??.2})}walls(e){let{width:r,height:n,depth:i}=e,[o,a,s]=[e.x??0,e.y??0,e.z??0],l=e.thickness??400,c={type:"fixed",friction:e.friction,restitution:e.restitution??.2},m=n*4,d=a+n/2-m/2;return[this.body({x:o,y:a+n/2+l/2,z:s,width:r+2*l,height:l,depth:i+2*l},c),this.body({x:o-r/2-l/2,y:d,z:s,width:l,height:m,depth:i+2*l},c),this.body({x:o+r/2+l/2,y:d,z:s,width:l,height:m,depth:i+2*l},c),this.body({x:o,y:d,z:s-i/2-l/2,width:r,height:m,depth:l},c),this.body({x:o,y:d,z:s+i/2+l/2,width:r,height:m,depth:l},c)]}pin(e,r){let n=r??e.center(),i=this.anchorBody(n);return this.joint(e,i,{type:"spherical",anchorA:e.localAnchor(n),anchorB:[0,0,0]}),this}hinge(e,r,n,i=[0,0,1]){return this.joint(e,r,{type:"revolute",anchorA:e.localAnchor(n),anchorB:r.localAnchor(n),axis:i}),this}weld(e,r){return this.joint(e,r,{type:"fixed",anchorA:[0,0,0],anchorB:r.localAnchor(e.center())}),this}spring(e,r,n={}){let{other:i,pa:o,pb:a}=this.endpoints(e,r,n.anchorA,n.anchorB),s=this.pixelsPerMeter,l=(n.length??Xl(o,a))/s,c=e.type==="dynamic"?e.sim.mass():0,m=i.type==="dynamic"?i.sim.mass():0,d=c>0&&m>0?c*m/(c+m):Math.max(c,m,.001),p=2*Math.PI*(n.frequency??2);return this.joint(e,i,{type:"spring",anchorA:e.localAnchor(o),anchorB:i.localAnchor(a),restLength:l,stiffness:d*p*p,damping:2*(n.dampingRatio??.2)*d*p}),this}rope(e,r,n={}){let{other:i,pa:o,pb:a}=this.endpoints(e,r,n.anchorA,n.anchorB);return this.joint(e,i,{type:"rope",anchorA:e.localAnchor(o),anchorB:i.localAnchor(a),length:(n.length??Xl(o,a))/this.pixelsPerMeter}),this}force(e,r){let n=this.pixelsPerMeter,i=(o,a)=>o===void 0?0:Ie(o,a,this.fps)/n;return this.addForce(e,o=>[i(r.x,o),i(r.y,o),i(r.z,o)]),this}field(e,r={}){let n=this.pixelsPerMeter;return this.addField((i,o)=>{let[a,s,l]=i.sim.position(),[c,m,d]=i.sim.velocity(),p=e({x:a*n,y:s*n,z:l*n,vx:c*n,vy:m*n,vz:d*n,frame:o,body:i});return p?[p[0]/n,p[1]/n,p[2]/n]:null},r.bodies),this}impulse(e,r,n){let i=this.pixelsPerMeter;return this.addImpulse(e,r,[n[0]/i,n[1]/i,n[2]/i]),this}lerpRotation(e,r,n){let i=e[0]*r[0]+e[1]*r[1]+e[2]*r[2]+e[3]*r[3]<0?-1:1,o=e.map((s,l)=>s+(r[l]*i-s)*n),a=Math.hypot(...o)||1;return o.map(s=>s/a)}joint(e,r,n){this.assertOpen(),this.sim.addJoint(e.sim,r.sim,n)}anchorBody(e){return this.body({x:e[0],y:e[1],z:e[2],width:1,height:1,depth:1},{type:"fixed",output:"none",sensor:!0})}endpoints(e,r,n,i){let o=n??e.center();if(Array.isArray(r)){let a=i??r;return{other:this.anchorBody(a),pa:o,pb:a}}return{other:r,pa:o,pb:i??r.center()}}};function Xl(t,e){return Math.hypot(e[0]-t[0],e[1]-t[1],e[2]-t[2])}function se(t,e){return typeof t=="number"&&Number.isFinite(t)?t:e}function eg(t,e){let r=typeof t.id=="string"?` "${t.id}"`:"",n=se(t.scale,1),i=[n*se(t.scaleX,1),n*se(t.scaleY,1),n*se(t.scaleZ,1)],o=i[0]===i[1]&&i[1]===i[2],a=t.primitive3d??{},s=e.shape??"auto",l=()=>{let g=tg(t.modelData);if(g)return{kind:"hull",points:g.map((y,k)=>y*i[k%3])}};if(e.size||s==="box"){let[g,y,k]=e.size??ya(t,a)??[0,0,0];if(g>0&&y>0&&k>0)return{kind:"box",hx:g*i[0]/2,hy:y*i[1]/2,hz:k*i[2]/2,radius:a.type==="roundedBox"?se(a.radius,0)*Math.min(...i):0}}if(s==="hull"){let g=l();if(g)return g}if((s==="sphere"||s==="auto"&&a.type==="sphere")&&(o||s==="sphere")){let g=se(a.radius,0)||Math.max(...ya(t,a)??[0])/2;if(g>0)return{kind:"ball",radius:g*Math.max(...i)}}let m=se(a.radiusTop,se(a.radius,0)),d=se(a.radiusBottom,se(a.radius,0));if((s==="cylinder"||s==="auto"&&a.type==="cylinder")&&m===d&&m>0&&i[0]===i[2])return{kind:"cylinder",halfHeight:se(a.height,0)*i[1]/2,radius:m*i[0]};if(s==="auto"&&a.type==="roundedBox"&&(a.taper??1)===1){let[g,y,k]=[se(a.width,0),se(a.height,0),se(a.depth,0)];return{kind:"box",hx:g*i[0]/2,hy:y*i[1]/2,hz:k*i[2]/2,radius:se(a.radius,0)*Math.min(...i)}}let f=l();if(f)return f;let b=ya(t,a);if(b)return{kind:"box",hx:b[0]*i[0]/2,hy:b[1]*i[1]/2,hz:b[2]*i[2]/2};throw new Error(`Physics: layer${r} has no mesh or size to build a 3D collider from; pass \`size: [w, h, d]\`.`)}function ya(t,e){if(e.type==="roundedBox")return[se(e.width,0),se(e.height,0),se(e.depth,0)];if(e.type==="sphere"){let r=se(e.radius,0)*2;return[r,r,r]}if(e.type==="cylinder"){let r=Math.max(se(e.radiusTop,se(e.radius,0)),se(e.radiusBottom,se(e.radius,0)))*2;return[r,se(e.height,0),r]}if(typeof t.width=="number"&&typeof t.height=="number"&&typeof t.depth=="number")return[t.width,t.height,t.depth]}function tg(t){let e=t?.meshes;if(!e?.length)return;let r=0;for(let a of e)r+=(a.positions?.length??0)/3;if(r<4)return;let n=Math.max(1,Math.floor(r/4096)),i=[],o=0;for(let a of e){let s=a.positions;if(s)for(let l=0;l<s.length;l+=3,o++)o%n===0&&i.push(s[l],s[l+1],s[l+2])}return i}function rg(t,e){switch(t.kind){case"ball":return{kind:"ball",radius:t.radius*e};case"box":return{kind:"box",hx:t.hx*e,hy:t.hy*e,hz:t.hz*e,radius:(t.radius??0)*e};case"cylinder":return{kind:"cylinder",halfHeight:t.halfHeight*e,radius:t.radius*e};case"hull":return{kind:"hull",points:t.points.map(r=>r*e)}}}var ng={async world2d(t){return new dr(await ba(2),t)},async world3d(t){return new mr(await ba(3),t)}};h();var be=(...t)=>t,ig={pixelArt:(t={})=>be(new _t({palette:t.palette??"pico8",pixelSize:t.pixelSize??6,dither:.4})),gameBoy:(t={})=>be(new _t({palette:"gameboy",pixelSize:t.pixelSize??4,dither:.6})),teletext:(t={})=>be(new _t({palette:"teletext",pixelSize:t.pixelSize??10})),ledWall:(t={})=>be(new Fi({size:t.size??14,shape:"circle",gap:.18})),ascii:(t={})=>be(new Mi({cellSize:t.cellSize??10,colorMode:t.matrix?"green":"source",bg:t.matrix?"#020a04":"#0b0b0b"})),oneBit:(t={})=>be(new Ai({mode:"bayer",scale:t.scale??2,dark:t.dark??"#111111",light:t.light??"#f2efe6"})),risograph:(t={})=>{let e=t.inkA??"#1d3fbb",r=t.inkB??"#ff5fa2",n=t.paper??"#f4efe4";return be(new yt({stops:[{position:0,color:e},{position:.55,color:r},{position:1,color:n}]}),new _t({palette:"custom",colors:[e,r,n],dither:.8,pixelSize:2}),new bt({strength:.2}))},cartoon:(t={})=>be(new hn({levels:t.levels??4,edgeColor:t.ink??"#111111",saturation:1.3})),comic:(t={})=>be(new hn({levels:4,edgeWidth:1.5,saturation:1.4}),new Sr({frequency:t.dotFrequency??70,opacity:.35})),thermal:()=>be(new yt({stops:[{position:0,color:"#000010"},{position:.25,color:"#3b0a7a"},{position:.5,color:"#c4205f"},{position:.75,color:"#ff9a1f"},{position:1,color:"#fffbe0"}]})),vhs:(t={})=>be(new wr({tracking:t.tracking??.5,chroma:4,curvature:.04,scanlines:.25,mask:.05,noise:.15}),new fn({amount:3})),crt:(t={})=>be(new wr({curvature:t.curvature??.15,scanlines:.5,mask:.35})),glitch:(t={})=>be(new fn({amount:t.amount??18}),new wr({tracking:1,chroma:6,curvature:0,scanlines:.1,mask:0,vignette:0})),oilPainting:(t={})=>be(new pn({style:"oil",radius:t.brush??5})),watercolor:(t={})=>be(new pn({style:"watercolor",radius:t.brush??6,paper:.5})),topographic:(t={})=>be(new Di({levels:t.levels??16,fill:"flat",lineColor:t.ink??"#5a3a1a",fillColor:t.paper??"#f3ead8"})),kaleidoscope:(t={})=>be(new Oi({segments:t.segments??8,rotation:t.rotation??0})),opArt:(t={})=>be(new Ri({pattern:t.pattern??"stripes",frequency:t.frequency??60})),holographic:(t={})=>be(new Ni({strength:t.strength??.7,shift:t.shift??0})),noir:()=>be(new yt({stops:[{position:0,color:"#000000"},{position:.55,color:"#8a8a8a"},{position:1,color:"#ffffff"}]}),new bt({strength:.35}),new Gt({strength:.6})),film:()=>be(new bt({strength:.25}),new Gt({strength:.35}))};h();var dc=gr(yd(),1),ui=gr(Bd(),1);var ka=gr(Kl(),1);h();var Kr=G.dirname(un(import.meta.url)),Jl=["import","meta","url"].join("."),og=pi(import.meta.url),Jr="/@framefields/engine",ec={framefields:"index.ts","framefields/effects":"effects/index.ts","framefields/audio":"audio/index.ts","framefields/signals":"signals/index.ts","framefields/fonts":"fonts/index.ts"},xa={path:"path","path/posix":"path",url:"url",os:"os",fs:"fs","fs/promises":"fs-promises",module:"module"},Ql=new Set(["sharp","skia-canvas","node-av","onnxruntime-node","@resvg/resvg-js","@napi-rs/webcodecs","@mediabunny/server","@mediabunny/mp3-encoder","webgpu","pino","pino-pretty","dotenv","esbuild","@framefields/renderer","framefields/renderer","framefields/preview"]),ag=`
|
|
706
706
|
const stub = () => new Proxy(function () {}, {
|
|
707
707
|
get: (_t, k) => (k === "__esModule" ? true : k === Symbol.toPrimitive ? () => "" : stub()),
|
|
708
708
|
apply: () => stub(),
|
|
709
709
|
construct: () => stub(),
|
|
710
710
|
});
|
|
711
711
|
module.exports = stub();
|
|
712
|
-
`;async function
|
|
713
|
-
`),resolveDir:
|
|
714
|
-
${r.replaceAll(
|
|
715
|
-
`),await
|
|
716
|
-
`)}};function
|
|
712
|
+
`;async function sg(t){let{build:e}=await import("./esbuild-GWV7CM7D.mjs"),r=G.resolve(Kr,".."),n=G.join(Kr,"shims"),i={player:G.join(Kr,"player.ts")};for(let[o,a]of Object.entries(ec))i[ac(o)]=G.join(r,a);for(let o of new Set(Object.values(xa)))i[`shims/${o}`]=G.join(n,`${o}.ts`);await ge.promises.rm(t,{recursive:!0,force:!0}),await e({...oc,entryPoints:i,outdir:t,outExtension:{".js":".mjs"},splitting:!0,minify:!0,conditions:["development","browser","import"],define:{"process.env.NODE_ENV":'"production"',global:"globalThis"},inject:[G.join(n,"process.ts")],plugins:[{name:"framefields-engine",setup(o){o.onResolve({filter:/^framefields-preview:renderers$/},()=>({path:dg()})),sc(o,a=>({path:G.join(n,`${a}.ts`)}))}}]})}async function tc(t){let{build:e}=await import("./esbuild-GWV7CM7D.mjs"),r=G.resolve(t.entry),n=s=>({path:`${Jr}/${s}.mjs`,external:!0}),i={modelsDir:t.modelsDir,ortBase:t.ortBase},o=await e({...oc,entryPoints:["framefields-preview:entry"],write:!1,metafile:!0,sourcemap:"inline",plugins:[{name:"framefields-project",setup(s){s.onResolve({filter:/^framefields-preview:entry$/},()=>({path:"entry",namespace:"framefields-preview"})),s.onLoad({filter:/.*/,namespace:"framefields-preview"},()=>({contents:[`import { startPlayer } from ${JSON.stringify(`${Jr}/player.mjs`)};`,`import * as mod from ${JSON.stringify(r)};`,`startPlayer(mod, ${JSON.stringify(t.exportName)}, ${JSON.stringify(i)});`].join(`
|
|
713
|
+
`),resolveDir:G.dirname(r),loader:"js"})),s.onResolve({filter:/^\/@framefields\/engine\//},l=>({path:l.path,external:!0})),s.onResolve({filter:/^framefields(\/|$)/},l=>ec[l.path]?n(ac(l.path)):void 0),sc(s,l=>n(`shims/${l}`)),cg(s)}}]}),a=Object.keys(o.metafile?.inputs??{}).filter(s=>!s.includes(":")&&!s.includes("node_modules")).map(s=>G.resolve(s));return{code:o.outputFiles[0].text,inputs:a}}var oi;function ug(t){return[t,G.join(t,"..")].map(e=>G.join(e,"preview-engine")).find(e=>ge.existsSync(G.join(e,"player.mjs")))}function rc(){let t=ug(Kr);return t?Promise.resolve(t):(oi??=(async()=>{let e=G.join(di.tmpdir(),`framefields-preview-engine-${v.pid}`);return await sg(e),e})(),oi.catch(()=>{oi=void 0}),oi)}function nc(){return v.env.FRAMEFIELDS_MODELS_DIR?G.resolve(v.env.FRAMEFIELDS_MODELS_DIR):G.join(di.homedir(),".cache","framefields","models")}var lg="1.30.0";function ic(t){for(let e of[t,Kr])try{let r=pi(G.join(e,"noop.js")).resolve("onnxruntime-web"),n=G.dirname(r);return{base:`/@fs${n}/`,dir:n}}catch{}return{base:`https://cdn.jsdelivr.net/npm/onnxruntime-web@${lg}/dist/`}}var oc={bundle:!0,format:"esm",platform:"browser",target:"es2022",mainFields:["browser","module","main"],logLevel:"silent"};function ac(t){return t==="framefields"?"framefields":t.slice(12)}function sc(t,e){t.onResolve({filter:/^(node:)?[a-z_/]+$/},r=>{let n=r.path.replace(/^node:/,"");if(xa[n])return e(xa[n]);if(r.path.startsWith("node:")||Ua(n))return{path:n,namespace:"framefields-stub"}}),t.onResolve({filter:/.*/},r=>{let n=mg(r.path);if(n&&(Ql.has(n)||Ql.has(r.path)))return{path:r.path,namespace:"framefields-stub"}}),t.onLoad({filter:/.*/,namespace:"framefields-stub"},()=>({contents:ag,loader:"js"}))}function cg(t){t.onLoad({filter:/\.[cm]?[jt]sx?$/},async e=>{if(e.path.includes(`${G.sep}node_modules${G.sep}`))return;let r=await ge.promises.readFile(e.path,"utf8");if(r.includes(Jl))return{contents:`const __framefieldsFileUrl = ${JSON.stringify(ln(e.path).href)};
|
|
714
|
+
${r.replaceAll(Jl,"__framefieldsFileUrl")}`,loader:pg(e.path)}})}function dg(){let t=og.resolve("@framefields/renderer"),e=G.join(G.dirname(t),"..","src","generated","node-renderers.ts");if(!ge.existsSync(e))throw new Error(`[framefields] node renderer list not found at ${e}`);return e}function mg(t){if(t.startsWith(".")||t.startsWith("/"))return;let e=t.split("/");return t.startsWith("@")?e.slice(0,2).join("/"):e[0]}function pg(t){return t.endsWith(".tsx")?"tsx":t.endsWith(".jsx")?"jsx":/\.[cm]?ts$/.test(t)?"ts":"js"}h();var si=class{constructor(e){this.dir=e;this.file=G.join(e,"notes.json")}dir;file;async list(){try{let e=JSON.parse(await ge.promises.readFile(this.file,"utf8"));return Array.isArray(e)?e:[]}catch{return[]}}async add(e){let r=await this.list(),n=r.reduce((a,s)=>Math.max(a,s.id),0)+1,i={id:n,frame:Math.max(0,Math.round(Number(e.frame)||0)),time:Qr(Number(e.time)||0,3),x:Qr(ai(e.x),4),y:Qr(ai(e.y),4),...e.w!==void 0&&e.h!==void 0&&{w:Qr(ai(e.w),4),h:Qr(ai(e.h),4)},text:String(e.text??"").trim(),done:!1,created:new Date().toISOString()};await this.ensureDir();let o=/^data:image\/jpeg;base64,(.+)$/.exec(e.image??"");return o&&(i.image=G.join(this.dir,`note-${n}.jpg`),await ge.promises.writeFile(i.image,Buffer.from(o[1],"base64"))),await this.save([...r,i]),i}async update(e,r){let n=await this.list(),i=n.find(o=>o.id===e);if(i)return typeof r.done=="boolean"&&(i.done=r.done),typeof r.text=="string"&&r.text.trim()&&(i.text=r.text.trim()),await this.save(n),i}async remove(e){let r=await this.list(),n=r.find(i=>i.id===e);if(n)return n.image&&await ge.promises.rm(n.image,{force:!0}),await this.save(r.filter(i=>i!==n)),n}async save(e){await this.ensureDir();let r=`${this.file}.${v.pid}.tmp`;await ge.promises.writeFile(r,`${JSON.stringify(e,null," ")}
|
|
715
|
+
`),await ge.promises.rename(r,this.file)}async ensureDir(){await ge.promises.mkdir(this.dir,{recursive:!0});let e=G.join(G.dirname(this.dir),".gitignore");ge.existsSync(e)||await ge.promises.writeFile(e,`*
|
|
716
|
+
`)}};function uc(t,e){let r=i=>`${Math.round(i*100)}%`,n=t.w!==void 0&&t.h!==void 0?`area ${r(t.x)},${r(t.y)} to ${r(t.x+t.w)},${r(t.y+t.h)}`:`spot ${r(t.x)},${r(t.y)}`;return`note ${t.id} at ${fg(t.frame,e)} (frame ${t.frame}), ${n}: ${t.text}`}function fg(t,e){let r=t/e,n=Math.floor(r/60);return`${n}:${(r-n*60).toFixed(2).padStart(5,"0")}`}function ai(t){let e=Number(t);return Number.isFinite(e)?Math.min(1,Math.max(0,e)):0}function Qr(t,e){return Number(t.toFixed(e))}h();var lc=`<!doctype html>
|
|
717
717
|
<html lang="en">
|
|
718
718
|
<head>
|
|
719
719
|
<meta charset="utf-8">
|
|
@@ -1951,14 +1951,14 @@ ${r.replaceAll(Qu,"__framefieldsFileUrl")}`,loader:Gf(t.path)}})}function _f(){l
|
|
|
1951
1951
|
<script type="module" src="/@framefields/player.js"><\/script>
|
|
1952
1952
|
</body>
|
|
1953
1953
|
</html>
|
|
1954
|
-
`;var
|
|
1955
|
-
${
|
|
1956
|
-
data: ${JSON.stringify(
|
|
1954
|
+
`;var hg=1200,mc="x-framefields-preview",gg="/@framefields/player.js";async function bg(t,e={}){let r=t.entry instanceof URL||String(t.entry).startsWith("file:")?un(t.entry):G.resolve(String(t.entry)),n=t.export??"default",i=nc(),o=ic(G.dirname(r)),a=[...e.root===void 0?[xg(G.dirname(r))]:Array.isArray(e.root)?e.root:[e.root],i,o.dir].filter(B=>!!B).map(B=>G.resolve(B)),s=new Set,l=e.idleCloseMs??5e3,c,m=e.title??"framefields preview",d=(0,ui.randomUUID)(),p=e.log===!1?()=>{}:e.log??(B=>console.error(B)),f=B=>p(`[framefields preview] ${B}`),b=new Set,g=!1,y=e.notesDir===!1?void 0:new si(G.resolve(e.notesDir??G.join(v.cwd(),".framefields","preview-notes"))),k=Promise.resolve(),D=await yg(r,n),T=await kg(D,m,d,y?.dir??null),w,S=()=>{if(!w){let B=tc({entry:r,exportName:n,modelsDir:i,ortBase:o.base}).then(V=>V.code);w=B,B.catch(V=>{f(`could not build ${G.relative(v.cwd(),r)}:
|
|
1955
|
+
${wg(V)}`),w===B&&(w=void 0)})}return w},x=rc();x.catch(()=>{});let N={state:e.audio===!1?"none":"mixing"},R;function _(B,V){for(let j of s)j.write(`event: ${B}
|
|
1956
|
+
data: ${JSON.stringify(V)}
|
|
1957
1957
|
|
|
1958
|
-
`)}function
|
|
1959
|
-
${O}`)});`}
|
|
1960
|
-
`),
|
|
1961
|
-
data: ${JSON.stringify({session:
|
|
1958
|
+
`)}function H(B){N=B,_("audio",N)}function ee(){if(N.state!=="mixing")return;if(!D.toVirtualMediaAsync&&!D.toVirtualMedia){H({state:"none"});return}let B=e.renderer??new ve.HeadlessMediaRenderer;(async()=>{let V=D.toVirtualMediaAsync?await D.toVirtualMediaAsync():D.toVirtualMedia();return B.renderAudio(V,{fps:T.fps})})().then(({channels:V,sampleRate:j})=>{let Z=V[0]??new Float32Array(0),$=V[1]??Z,Q=Tg(Z,$,hg);if(Z.length===0||Math.max(...Q)<.001){H({state:"none"});return}R=Pi([Z,$],{sampleRate:j}),H({state:"ready",durationSec:Z.length/j,peaks:Q.map(O=>Math.round(O*1e3)/1e3)})},V=>{H({state:"error",error:V instanceof Error?V.message:String(V)})})}let E,P=new Promise(B=>{E=B}),M;function Y(B="closed"){return M??=new Promise(V=>{clearTimeout(c),B==="idle"&&f("stopped: its tab was closed"),B==="replaced"&&f("stopped: a newer preview took over");for(let j of s)j.end();s.clear(),X.close(()=>{V(),E(B)}),X.closeAllConnections()}),M}let X=ka.default.createServer(async(B,V)=>{let j=new URL(B.url??"/","http://localhost");V.setHeader("cross-origin-opener-policy","same-origin"),V.setHeader("cross-origin-embedder-policy","credentialless");try{if(B.method==="GET"&&j.pathname==="/"){V.writeHead(200,{"content-type":"text/html; charset=utf-8","cache-control":"no-store"}),V.end(lc);return}if(B.method==="GET"&&j.pathname==="/meta"){tt(V,200,{...T,audio:N});return}if(B.method==="GET"&&j.pathname.startsWith(`${Jr}/`)){let $=await x,Q=G.resolve($,`.${j.pathname.slice(Jr.length)}`);if(va($,Q)&&await wa(Q)){await Sa(B,V,Q);return}tt(V,404,{error:"not found"});return}if(B.method==="GET"&&j.pathname===gg){let $;try{await x,$=await S()}catch(Q){let O=Q instanceof Error?Q.message:String(Q);$=`throw new Error(${JSON.stringify(`Could not build the preview:
|
|
1959
|
+
${O}`)});`}V.writeHead(200,{"content-type":"text/javascript; charset=utf-8","cache-control":"no-store"}),V.end($);return}if(B.method==="GET"&&j.pathname==="/@framefields/stat"){let $=G.resolve(j.searchParams.get("path")??""),Q=-1;a.some(O=>va(O,$))&&(Q=await ge.promises.stat($).then(O=>O.isFile()?O.size:-1,()=>-1)),tt(V,200,{exists:Q>=0,size:Math.max(0,Q)});return}if(B.method==="GET"&&j.pathname==="/events"){V.writeHead(200,{"content-type":"text/event-stream","cache-control":"no-store",connection:"keep-alive"}),V.write(`retry: 1000
|
|
1960
|
+
`),V.write(`event: hello
|
|
1961
|
+
data: ${JSON.stringify({session:T.session})}
|
|
1962
1962
|
|
|
1963
|
-
`),
|
|
1964
|
-
${s.filter(Boolean).join(" \xB7 ")}`),a}let i=Number(t.id);if(t.op==="update"){let a=await e.update(i,t);return a&&typeof t.done=="boolean"&&n(`note ${i} marked ${a.done?"done":"open"}`),a}if(t.op==="remove"){let a=await e.remove(i);return a&&n(`note ${i} deleted`),a}}function Xf(e){return e instanceof Error?e.message:String(e)}function dl(e,t){return new Promise((r,n)=>{let i="";e.setEncoding("utf8"),e.on("data",a=>{i+=a,i.length>t&&(n(new Error("request body too large")),e.destroy())}),e.on("end",()=>r(i)),e.on("error",n)})}function La(e,t){let r=z.relative(e,t);return!!r&&!r.startsWith("..")&&!z.isAbsolute(r)}async function Fa(e){try{return(await he.promises.stat(e)).isFile()}catch{return!1}}var qf={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif",".svg":"image/svg+xml",".mp4":"video/mp4",".mov":"video/quicktime",".webm":"video/webm",".mp3":"audio/mpeg",".wav":"audio/wav",".m4a":"audio/mp4",".ogg":"audio/ogg",".ttf":"font/ttf",".otf":"font/otf",".woff":"font/woff",".woff2":"font/woff2",".json":"application/json",".js":"text/javascript; charset=utf-8",".mjs":"text/javascript; charset=utf-8",".wasm":"application/wasm",".onnx":"application/octet-stream",".srt":"text/plain; charset=utf-8",".txt":"text/plain; charset=utf-8"};async function Ra(e,t,r){let{size:n}=await he.promises.stat(r),i=qf[z.extname(r).toLowerCase()]??"application/octet-stream",a=/^bytes=(\d*)-(\d*)$/.exec(e.headers.range??""),s=0,u=n-1;if(a&&(a[1]||a[2])&&(a[1]?(s=Number(a[1]),a[2]&&(u=Math.min(u,Number(a[2])))):s=Math.max(0,n-Number(a[2])),s>u||s>=n)){t.writeHead(416,{"content-range":`bytes */${n}`}),t.end();return}if(t.writeHead(a?206:200,{"content-type":i,"content-length":u-s+1,"accept-ranges":"bytes","cache-control":"no-cache",...a&&{"content-range":`bytes ${s}-${u}/${n}`}}),e.method==="HEAD"){t.end();return}he.createReadStream(r,{start:s,end:u}).pipe(t)}async function Zf(e,t,r,n){let i=e.fps??24,a=e.durationMs??await e.computeDuration?.()??5e3;return{session:r,notesDir:n,title:t,fps:i,frameCount:Math.max(1,Math.round(a/1e3*i)),width:e.width??1920,height:e.height??1080}}function Kf(){return 41e3+(0,Dn.createHash)("sha1").update(x.cwd()).digest().readUInt16BE(0)%900}async function Jf(e,t){let r=await new Promise(n=>{let i=Ba.default.request({host:e,port:t,method:"POST",path:"/takeover",agent:!1,headers:{[pl]:"1"},timeout:1500},a=>{a.resume(),n(a.statusCode===200)});i.on("timeout",()=>i.destroy()),i.on("error",()=>n(!1)),i.end()});return r&&await new Promise(n=>setTimeout(n,150)),r}function Qf(e,t,r){let n=new Array(r).fill(0);if(e.length===0)return n;let i=e.length/r;for(let a=0;a<r;a++){let s=Math.floor(a*i),u=Math.min(e.length,Math.floor((a+1)*i)),c=0;for(let l=s;l<u;l++){let m=Math.max(Math.abs(e[l]??0),Math.abs(t[l]??0));m>c&&(c=m)}n[a]=Math.min(1,c)}return n}function Ze(e,t,r){e.writeHead(t,{"content-type":"application/json","cache-control":"no-store"}),e.end(JSON.stringify(r))}function eh(e){let[t,r]=x.platform==="darwin"?["open",[e]]:x.platform==="win32"?["cmd",["/c","start","",e]]:["xdg-open",[e]];try{(0,ml.spawn)(t,r,{stdio:"ignore",detached:!0}).on("error",()=>{}).unref()}catch{}}function Ea(e,t){return e&&(t&&!e.source&&Object.defineProperty(e,"source",{value:t,enumerable:!0,writable:!0,configurable:!0}),typeof e.section!="function"&&Object.defineProperty(e,"section",{value:(r,n)=>{if(typeof r=="object"&&r!==null&&!("kind"in r)&&!("inputHandleId"in r)&&!("src"in r)){let a=r.source??e.source??t;return F.section(a,e,r)}let i=r??e.source??t;return F.section(i,e,n)},enumerable:!1,writable:!0,configurable:!0}),typeof e.blurEffect!="function"&&Object.defineProperty(e,"blurEffect",{value:r=>new ct({track:e,...r}),enumerable:!1,writable:!0,configurable:!0}),typeof e.isolate!="function"&&Object.defineProperty(e,"isolate",{value:(r,n)=>F.section(r,e,n),enumerable:!1,writable:!0,configurable:!0}),e)}var th=ir.attach;ir.attach=function(e,t,r){let n=th.call(this,e,t,r);if(n?.objects){let i=e,a=n.objects.get.bind(n.objects);n.objects.get=u=>Ea(a(u),i);let s=n.objects.byCategory.bind(n.objects);n.objects.byCategory=(u,c)=>Ea(s(u,c),i),n.objects.primary&&Ea(n.objects.primary,i)}return n};var fl=class e{virtualMedia;constructor(t,r="Video"){this.virtualMedia=Xa(t,r)}static video(t,r){let n=new e(t,"Video");return r&&Object.assign(n.virtualMedia.metadata,r),n}static image(t,r){let n=new e(t,"Image");return r&&Object.assign(n.virtualMedia.metadata,r),n}static lottie(t,r){let n=new e(t,"Lottie");return r&&Object.assign(n.virtualMedia.metadata,r),n}static audio(t,r){let n=new e(t,"Audio");return r&&Object.assign(n.virtualMedia.metadata,r),n}apply(t,r={}){let n;t instanceof rh||typeof t=="object"&&t!==null&&"op"in t?n=t.toOperation():n={op:t,...r};let i=qa(this.virtualMedia,{...n,dataType:this.virtualMedia.operation.dataType});return new e(i)}toVirtualMedia(){return this.virtualMedia}async renderFrame(t={}){return(t.renderer??new be.HeadlessMediaRenderer).renderFrame(this.virtualMedia,t)}get fps(){return this.virtualMedia.metadata?.fps??void 0}get durationMs(){return this.virtualMedia.metadata?.durationMs??void 0}get width(){return this.virtualMedia.metadata?.width??void 0}get height(){return this.virtualMedia.metadata?.height??void 0}async renderFrameGrid(t={}){return Cr(this,t)}async renderVideo(t={},r={}){let n=typeof t=="string"?{...r,outputPath:t}:t,a=await(n.renderer??new be.HeadlessMediaRenderer).renderVideo(this.virtualMedia,n);return gl(a,n.outputPath)}};async function gl(e,t){if(!t)return e;let r=z.resolve(t);return await nr.mkdir(z.dirname(r),{recursive:!0}),await nr.copyFile(e.filePath,r),await e.cleanup(),{...e,filePath:r,cleanup:async()=>{}}}var hl=class e{width;height;fps;durationMs;backgroundColor;antialias3d;fonts;children=[];audioTracks=[];signals={};_frameHooks=[];_visionConfig;_visionBundle;_effects=[];apply(t){return t instanceof dt?(this.withVision(t),this):(this._effects.push(t),this)}withVision(t={}){this._visionBundle??=new Vn({width:this.width,height:this.height,fps:this.fps});let r=t instanceof dt?t.config:t;return this._visionConfig={...r,visionBundle:this._visionBundle},this._visionBundle}async analyzeVisionSequence(t,r={}){let n=r.fps??this.fps,i=this.durationMs??await this.computeDuration(),a=r.totalFrames??Math.max(1,Math.round(i/1e3*n)),s=jn.create({modelsDir:r.modelsDir,baseUrl:r.baseUrl,...r.confidence!==void 0?{confidence:r.confidence}:{},...r.variant!==void 0?{variant:r.variant}:{}}),u=Qa.getVideo(t,!0);async function*c(){for(let l=0;l<a;l++){let m=await u.getFrame(l/n);m?.buffer&&m.width>0&&m.height>0&&(yield{data:m.buffer,width:m.width,height:m.height})}}try{return await $n(c(),{runner:s,source:t,fps:n,...r.tasks!==void 0?{tasks:r.tasks}:{},...r.categories!==void 0?{categories:r.categories}:{},...r.pathStride!==void 0?{pathStride:r.pathStride}:{},...r.includeMasks!==void 0?{includeMasks:r.includeMasks}:{},...r.iouThreshold!==void 0?{iouThreshold:r.iouThreshold}:{}})}finally{s.close(),u.destroy()}}onRequestFrame(t){return this._frameHooks.push(t),this}notifyFrame(t){for(let r of this._frameHooks)r(t)}constructor(t){this.width=t.width,this.height=t.height,this.fps=t.fps??60,this.durationMs=t.durationMs??(t.durationFrames!==void 0?t.durationFrames/this.fps*1e3:void 0),this.backgroundColor=t.backgroundColor??"#000000",this.antialias3d=t.antialias3d,this.fonts=t.fonts??[],this.signals=t.signals??{}}static create(t){return new e(t)}addSignal(t,r){return this.signals[t]=r,this}add(t,...r){if(t instanceof Bt)this.children.push(t.toNode());else if(t instanceof ir)this.children.push(t.toNode());else{if(t&&typeof t=="object"&&"node"in t)return this.add(t.node,...r),this;if(Array.isArray(t))for(let n of t)this.add(n);else{let n=t,i=r[0];if(i&&!(i instanceof Bt)&&!Array.isArray(i)&&(i instanceof ue||"tracks"in i))return n.animation=i instanceof ue?i.toSpec():i,this.children.push(n),this;this.children.push(n)}}for(let n of r)n&&!(n instanceof ue)&&!("tracks"in n)&&this.add(n);return this}addAudio(t){return this.audioTracks.push(t),this}addSubjectSandwich(t){let r=typeof t.source=="string"?t.source:t.source.inputHandleId??"",n=t.fit??"cover",i=t.feather??4,a=i>1?i/100:i,s=t.variant??"s",u=F.video(r,{width:this.width,height:this.height,position:"absolute",x:0,y:0,fit:n,muted:t.muted??!1,volume:t.muted?0:t.volume??1});this.add(u);for(let l of t.behind)this.add(l);let c=F.video(r,{width:this.width,height:this.height,position:"absolute",x:0,y:0,fit:n,muted:!0,volume:0}).withVision({mode:"matte",enableSegmentation:!0,variant:s,confidence:t.confidence??.25,featherRadius:a,keyBackground:t.keyBackground??!0,backgroundKeyThreshold:t.backgroundKeyThreshold});return this.add(c),this}addSmartFraming(t){let r=typeof t.source=="string"?t.source:t.source.inputHandleId??"",n=Math.max(0,Math.min(.99,t.damping??.8)),i=t.leadHeadroom??.18,a=this.width,s=this.height,u=t.sourceAspect??16/9,c=a/s,l=c<u?Math.round(s*u):a,m=c<u?s:Math.round(a/u),d=a-l,p=s-m,f=t.target,y=new Dt(k=>{if(d>=0)return 0;let A=f.center?.x?f.center.x.get(k):f.bounds?.centerX?f.bounds.centerX.get(k)/a:f.center?.screenX?f.center.screenX.get(k)/a:.5,R=Math.max(0,Math.min(1,A))*l,G=a/2-R;return Math.max(d,Math.min(0,G))},{fps:this.fps,label:"smart_framing_pan_x"}),g=new Dt(k=>{if(p>=0)return 0;let A=f.center?.y?f.center.y.get(k):f.bounds?.centerY?f.bounds.centerY.get(k)/s:f.center?.screenY?f.center.screenY.get(k)/s:.5,R=Math.max(0,Math.min(1,A))*m,G=s*i-R;return Math.max(p,Math.min(0,G))},{fps:this.fps,label:"smart_framing_pan_y"}),b=new Dt(k=>{let A=k.frame;if(A<=0)return y.get(k);let v=y.get({...k,frame:0,time:0}),R=1-n;for(let G=1;G<=A;G++){let Z=y.get({...k,frame:G,time:G/k.fps});v=v+R*(Z-v)}return v},{fps:this.fps,label:"smart_framing_smooth_x"}),P=new Dt(k=>{let A=k.frame;if(A<=0)return g.get(k);let v=g.get({...k,frame:0,time:0}),R=1-n;for(let G=1;G<=A;G++){let Z=g.get({...k,frame:G,time:G/k.fps});v=v+R*(Z-v)}return v},{fps:this.fps,label:"smart_framing_smooth_y"}),N=F.box({width:a,height:s,overflow:"hidden",position:"relative"}),M=F.video(r,{width:l,height:m,position:"absolute",x:b,y:P,fit:t.fit??"cover",muted:t.muted??!1,volume:t.muted?0:t.volume??1});return N.children||(N.children=[]),N.children.push(M),this.add(N),this}addSubjectOutline(t,r={}){let n=r.blur??12,i=this.width,a=this.height,s=r.pulseSignal,u=s?new Dt(m=>Math.max(0,Math.min(1,Number(s.get(m))||0)),{fps:this.fps,label:"outline_pulse"}):1,c=typeof r.source=="string"?r.source:r.source?.inputHandleId??"",l=F.box({width:i,height:a,position:"absolute",x:0,y:0,opacity:u});if(c){let m=F.video(c,{width:i,height:a,position:"absolute",x:0,y:0,fit:"cover",muted:!0,volume:0}).withVision({mode:"mask",enableSegmentation:!0});l.children||(l.children=[]),l.children.push(m)}return l.apply(new ct({strength:n,blurType:"Gaussian"})),this.add(l),this}section(t,r,n){let i,a,s={},u=t!==null&&typeof t=="object"&&"bounds"in t,c=typeof t=="string"||t!==null&&typeof t=="object"&&("kind"in t||"src"in t||"inputHandleId"in t);if(c&&r&&typeof r=="object"&&"bounds"in r?(i=t,a=r,s=n??{}):c&&r?(i=t,s=r):u?(a=t,s=r??{},i=s.source??a.source):t&&typeof t=="object"&&(s=t,i=s.source),!i){let l=this.children.find(m=>m.kind==="media"&&(m.dataType==="Video"||m.dataType==="Image"));l&&(i=l)}return F.section(i??"",a??s,{compositionWidth:this.width,compositionHeight:this.height,...s})}addSection(t,r,n){let i=this.section(t,r,n);return this.add(i),i}async computeDuration(){if(this.durationMs!==void 0)return this.durationMs;let t=0,r=[];for(let n of[...this.children,...this.audioTracks]){if(n.kind==="media"){let i=n.inputHandleId;typeof i=="string"&&(n.dataType==="Video"||n.dataType==="Audio")&&r.push(i)}if(typeof n.durationFrames=="number"){let a=((typeof n.startFrame=="number"?n.startFrame:0)+n.durationFrames)/this.fps*1e3;a>t&&(t=a)}}for(let n of r)try{let a=await(await Bn.acquire(n)).computeDuration();if(Number.isFinite(a)&&a>0){let s=Math.round(a*1e3);s>t&&(t=s)}}catch{}return t>0?t:5e3}async registerFont(t,r){let n=await lt.register(t,r);return n.filePath&&!this.fonts.includes(n.filePath)&&this.fonts.push(n.filePath),this}async registerEmojiFont(t){return await lt.registerEmojiFont(t),this}toSpec(){let t=[...this.children,...this.audioTracks],r=lt.getRegisteredFontPaths(),n=Array.from(new Set([...this.fonts,...r]));return{width:this.width,height:this.height,fps:this.fps,mode:"Video",backgroundColor:this.backgroundColor,...this.antialias3d!==void 0&&{antialias3d:this.antialias3d},layout:t,fonts:n,signals:this.signals,...this._effects.length>0&&{effects:this._effects},...this._visionConfig&&{vision:this._visionConfig},...this._frameHooks.length>0&&{onRequestFrame:i=>this.notifyFrame(i)}}}toVirtualMedia(t={}){return Gr(this.toSpec(),{isVideoMode:!0,fps:this.fps,durationMs:t.durationMs??this.durationMs,signals:t.signals??this.signals,...this._effects.length>0&&{effects:this._effects},...this._visionConfig&&{vision:this._visionConfig},...t})}async toVirtualMediaAsync(t={}){let r=t.durationMs??this.durationMs??await this.computeDuration();return this.durationMs=r,Gr(this.toSpec(),{isVideoMode:!0,fps:this.fps,durationMs:r,signals:t.signals??this.signals,...this._effects.length>0&&{effects:this._effects},...this._visionConfig&&{vision:this._visionConfig},...t})}async renderFrame(t={}){if(this._frameHooks.length>0){let n=t.frame??(t.atMs!==void 0?Math.round(t.atMs/1e3*this.fps):0);this.notifyFrame({frame:n,fps:this.fps,time:this.fps>0?n/this.fps:0,duration:(this.durationMs??0)/1e3,durationMs:this.durationMs??0,progress:this.durationMs&&this.durationMs>0?Math.max(0,Math.min(1,n/this.fps*1e3/this.durationMs)):0,deltaTime:this.fps>0?1/this.fps:0})}return(t.renderer??new be.HeadlessMediaRenderer).renderFrame(this.toVirtualMedia(),{fps:this.fps,...t})}async renderFrameGrid(t={}){return Cr(this,t)}async renderVideo(t={},r={}){let n=typeof t=="string"?{...r,outputPath:t}:t,a=await(n.renderer??new be.HeadlessMediaRenderer).renderVideo(this.toVirtualMedia(),n);if(a.qa){let s=this.lint(),u=[...a.qa.issues,...s.map(c=>({severity:c.severity,code:c.code,message:c.message,...c.layerId!==void 0&&{layerId:c.layerId}}))];a.qa={...a.qa,issues:u,passed:a.qa.passed&&!s.some(c=>c.severity==="error")}}return gl(a,n.outputPath)}lint(){return Oi(this.toSpec())}};function Se(e){let t=e;Object.defineProperty(t,"animate",{value:(...n)=>{let i=n.flat().flatMap(s=>s instanceof ue?s.tracks:s.tracks??[]),a=t.animation?.tracks??[];return t.animation={tracks:Yr([...a,...i])},t},enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"pinToLandmark",{value:(n,i)=>(Wn(t,n,i),t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"pinToObject",{value:(n,i)=>(Hn(t,n,i),t),enumerable:!1,writable:!0,configurable:!0});let r=(n,i)=>(t.matte={node:n,...i&&{mode:i}},t);for(let n of["withMatte","withMask"])Object.defineProperty(t,n,{value:r,enumerable:!1,writable:!0,configurable:!0});return Object.defineProperty(t,"withPbrGlass",{value:n=>(t.glass=n??{},t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"deformWithAudio",{value:n=>(t.audioDeform=n??{},t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withCrop",{value:n=>(t.crop=n instanceof ar?n:new ar(n),t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withVision",{value:n=>(t.vision=n instanceof dt?n:new dt(n),t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withRelighting",{value:n=>(t.relighting=n??{},t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"relight",{value:n=>(t.relighting=n??{},t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withDeflicker",{value:n=>(t.deflicker=n??{},t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"apply",{value:n=>(t.effects||(t.effects=[]),t.effects.push(n),t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withEffect",{value:n=>(t.effects||(t.effects=[]),t.effects.push(n),t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withEffects",{value:n=>(t.effects||(t.effects=[]),t.effects.push(...n),t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"section",{value:(n={},i)=>n!==null&&typeof n=="object"&&"bounds"in n?F.section(t,n,i):F.section(t,n),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"blurRegion",{value:(n,i)=>{let a=new ct({track:n,strength:i?.strength??25,shape:i?.shape??"ellipse",...i});return t.effects||(t.effects=[]),t.effects.push(a),t},enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withBlurRegion",{value:(n,i)=>t.blurRegion(n,i),enumerable:!1,writable:!0,configurable:!0}),t}var F={video:(e,t={})=>Se({id:t.id??J("video"),kind:"media",inputHandleId:e,dataType:"Video",fit:t.fit??"cover",...t}),image:(e,t={})=>(typeof e=="string"&&(/\.(json|lottie)(\?.*)?$/i.test(e)||e.startsWith("data:application/json")?console.warn(`[Layer.image] '${e}' is a Lottie vector animation, not a static image. Use Layer.lottie('${e}', options) instead.`):/\.(mp4|mov|webm|mkv)(\?.*)?$/i.test(e)?console.warn(`[Layer.image] '${e}' is a video file, not a static image. Use Layer.video('${e}', options) instead.`):/\.(mp3|wav|ogg|m4a|aac)(\?.*)?$/i.test(e)&&console.warn(`[Layer.image] '${e}' is an audio file, not a static image. Use Layer.audio('${e}', options) instead.`)),Se({id:t.id??J("img"),kind:"media",inputHandleId:e,dataType:"Image",fit:t.fit??"cover",...t})),svg:(e,t={})=>Se({id:t.id??J("svg"),kind:"media",inputHandleId:e,dataType:"SVG",fit:t.fit??"contain",...t}),lottie:(e,t={})=>Se({id:t.id??J("lottie"),kind:"media",inputHandleId:e,dataType:"Lottie",fit:t.fit??"contain",...t}),audio:(e,t={})=>Se({id:t.id??J("audio"),kind:"media",inputHandleId:e,dataType:"Audio",volume:t.volume??1,...t}),text:(e,t={})=>{let r=Array.isArray(e),n=!r&&typeof e=="object"&&e!==null,i=n?e:t,a="",s=i.spans;if(r){let u=Vr(e);a=u.text,s=u.spans}else n?i.spans&&!i.text?a=Vr(i.spans).text:a=i.text??"":a=typeof e=="string"?e:String(e??"");return Se({id:i.id??J("text"),kind:"text",fontFamily:i.fontFamily??lt.getAll()[0]?.family??"Inter",fontSize:i.fontSize??48,fill:i.fill??"#ffffff",...i,text:i.text??a,spans:i.spans??s})},caption:(e,t={})=>Se({id:t.id??J("caption"),kind:"media",inputHandleId:e,dataType:t.dataType??"Caption",fontFamily:t.fontFamily??lt.getAll()[0]?.family??"Inter",fontSize:t.fontSize??48,fill:t.fill??"#ffffff",...t}),shape:(e="rect",t={})=>Se({id:t.id??J("shape"),kind:"shape",shapeType:t.shapeType??e,...t,fillColor:t.fillColor??t.fill??"#3b82f6"}),flex:(e={})=>Se({id:e.id??J("flex"),kind:"flex",dir:e.dir??"column",children:e.children??[],...e}),box:(e={})=>Se({id:e.id??J("box"),kind:"box",background:e.background??"transparent",children:e.children??[],...e}),section:(e,t={},r={})=>{let n=e;if(e&&typeof e=="object"&&"toSpec"in e&&"children"in e){let v=(e.children||[]).find(R=>R.kind==="media"&&(R.dataType==="Video"||R.dataType==="Image"));v&&(n=v)}let i=t!==null&&typeof t=="object"&&"bounds"in t,a=i?r:t,s=i?t:void 0,u=a.padding??0,c=typeof n=="string"?n:n?.inputHandleId??n?.src??"",l=typeof n=="object"&&n?.dataType?n.dataType:"Video",m=a.compositionWidth??a.compWidth??(i?a.width:void 0)??1920,d=a.compositionHeight??a.compHeight??(i?a.height:void 0)??1080,p=Array.isArray(a.effects)?[...a.effects]:a.effects?[a.effects]:[],f=s?s.bounds.screenX.multiply(-1).add(u):typeof a.x=="number"?-a.x:a.x&&typeof a.x.multiply=="function"?a.x.multiply(-1):0,y=s?s.bounds.screenY.multiply(-1).add(u):typeof a.y=="number"?-a.y:a.y&&typeof a.y.multiply=="function"?a.y.multiply(-1):0,g=(l==="Image"?F.image(c,{position:"absolute",width:m,height:d,fit:a.fit??"cover",x:f,y}):F.video(c,{position:"absolute",width:m,height:d,fit:a.fit??"cover",x:f,y})).withEffects(p),b=s?s.bounds.screenWidth.add(u*2):a.width!==void 0?a.width:m,P=s?s.bounds.screenHeight.add(u*2):a.height!==void 0?a.height:d,N=[g,...a.children??[]],M=a.id??(s?J(`section-track-${s.trackId}`):J("section")),k=F.box({id:M,position:a.position??"absolute",width:b,height:P,x:s?void 0:a.x,y:s?void 0:a.y,borderRadius:a.borderRadius??0,borderColor:a.borderColor,borderWidth:a.borderWidth,opacity:a.opacity??1,overflow:"hidden",children:N});s&&(k=k.pinToObject(s,{anchor:"topLeft",offsetX:-u,offsetY:-u,hideWhenLost:a.hideWhenLost??!0,smoothFrames:a.smoothFrames}));let A=k;return Object.defineProperty(A,"innerMedia",{value:g,enumerable:!0,writable:!1}),Object.defineProperty(A,"effects",{get:()=>p,enumerable:!0}),Object.defineProperty(A,"addEffect",{value:v=>(p.push(v),g.effects=p,A),enumerable:!0,writable:!1}),Object.defineProperty(A,"withEffect",{value:v=>A.addEffect(v),enumerable:!0,writable:!1}),Object.defineProperty(A,"withEffects",{value:v=>{for(let R of v)A.addEffect(R);return A},enumerable:!0,writable:!1}),A},trackedRegion:(e,t,r={})=>F.section(e,t,r),blurTrackedRegion:(e,t,r={})=>{let{padding:n,borderRadius:i,borderColor:a,borderWidth:s,...u}=r;return F.section(e,t,{padding:n??8,borderRadius:i??12,borderColor:a,borderWidth:s,effects:[new ct({strength:u.strength??25,blurType:u.blurType??"Gaussian",...u})]})},chart:(e,t={})=>Vu(e,t,lt.getAll()[0]?.family??"Inter"),camera:(e={})=>Se({id:e.id??J("camera"),kind:"camera",mode:e.mode??"lookAt",pitch:e.pitch??0,yaw:e.yaw??0,roll:e.roll??0,...e}),light:(e={})=>Se({id:e.id??J("light"),kind:"light",lightType:e.lightType??"point",color:e.color??"#ffffff",intensity:e.intensity??1,...e}),ambientLight:(e="#ffffff",t=.5,r={})=>qe.ambient(e,t,r),sequence:(e,t)=>qu(e,t),environment:(e="studio",t={})=>qe.environment(e,t),directionalLight:(e={})=>qe.directional(e),pointLight:(e={})=>qe.point(e),spotLight:(e={})=>qe.spot(e),cube:e=>Ot.cube(e),carousel3d:e=>Ot.carousel(e),plane3d:e=>Ot.plane(e),prism3d:e=>Ot.prism(e),model:(e={})=>Se({id:e.id??J("model3d"),kind:"model3d",is3D:e.is3D??!0,modelFormat:e.modelFormat??"auto",loop:e.loop??!0,scale:e.scale??1,scaleX:e.scaleX??1,scaleY:e.scaleY??1,scaleZ:e.scaleZ??1,opacity:e.opacity??1,...e}),obj:(e,t={})=>F.model({src:e,modelFormat:"obj",...t}),fbx:(e,t={})=>F.model({src:e,modelFormat:"fbx",...t}),gltf:(e,t={})=>F.model({src:e,modelFormat:"gltf",...t}),glb:(e,t={})=>F.model({src:e,modelFormat:"glb",...t}),stl:(e,t={})=>F.model({src:e,modelFormat:"stl",...t}),ply:(e,t={})=>F.model({src:e,modelFormat:"ply",...t}),vox:(e,t={})=>F.model({src:e,modelFormat:"vox",...t}),threeDS:(e,t={})=>F.model({src:e,modelFormat:"3ds",...t}),off:(e,t={})=>F.model({src:e,modelFormat:"off",...t})},qe={environment:(e="studio",t={})=>{let r=typeof e=="string"?{preset:e,...t}:{...e,...t};return Se({kind:"light",lightType:"environment",preset:"studio",intensity:1,...r,id:r.id??J("environment")})},ambient:(e="#ffffff",t=.5,r={})=>Se({id:r.id??J("light-ambient"),kind:"light",lightType:"ambient",color:e,intensity:t,...r}),directional:(e={})=>Se({id:e.id??J("light-directional"),kind:"light",lightType:"directional",color:e.color??"#ffffff",intensity:e.intensity??1,x:e.x??0,y:e.y??-1e3,z:e.z??-1e3,targetX:e.targetX??0,targetY:e.targetY??0,targetZ:e.targetZ??0,...e}),point:(e={})=>Se({id:e.id??J("light-point"),kind:"light",lightType:"point",color:e.color??"#ffffff",intensity:e.intensity??1,x:e.x??0,y:e.y??0,z:e.z??-500,radius:e.radius??1e3,decay:e.decay??1,...e}),spot:(e={})=>Se({id:e.id??J("light-spot"),kind:"light",lightType:"spot",color:e.color??"#ffffff",intensity:e.intensity??1,x:e.x??0,y:e.y??-500,z:e.z??-1e3,targetX:e.targetX??0,targetY:e.targetY??0,targetZ:e.targetZ??0,angle:e.angle??45,penumbra:e.penumbra??.2,radius:e.radius??2e3,decay:e.decay??1,...e})};function w2(e,t={},r={}){return F.section(e,t,r)}function S2(e,t,r={}){return typeof e=="object"&&"blurRegion"in e?e.blurRegion(t,r):F.blurTrackedRegion(e,t,r)}function k2(e,t,r={}){return F.section(e,t,r)}var rh=Object.assign(Ya,Kn,{blur:e=>new ct(e),vignette:e=>new Zn(e),colorBalance:e=>new Xn(e),colorKey:e=>new qn(e),levels:e=>new Jn(e),filmGrain:e=>new Qn(e),curves:e=>new ti(e),selectiveColor:e=>new ri(e),gradientMap:e=>new ni(e),shadowsHighlights:e=>new ii(e),applyLut:e=>new ai(e),unsharpMask:e=>new oi(e),highPass:e=>new si(e),halftoneScreen:e=>new ui(e),tileOffset:e=>new li(e),motionBlur:e=>new ci(e),ssao:e=>new di(e),pbrGlass:e=>new mi(e),depthOfField:e=>new pi(e),crop:e=>new ar(e),vision:e=>new dt(e),relight3d:e=>new fi(e),modulate:e=>new gi(e),deflicker:e=>new hi(e),custom:(e,t={})=>new ei(e,t)});var export_HeadlessMediaRenderer=be.HeadlessMediaRenderer;var export_HeadlessWebGPURenderer=be.HeadlessWebGPURenderer;var export_formatQaReport=be.formatQaReport;var export_renderSemaphore=be.renderSemaphore;var export_resetRenderCaches=be.resetRenderCaches;export{Rt as AETextAnimatorSchema,yi as AdvancedTextAnimatorBuilder,wi as AdvancedTextAnimatorSchema,ao as AnchorGroupingSchema,oo as AnchorPresetSchema,Oo as AnimatableGlyphPropsSchema,Qh as AnimationTypeSchema,Zh as AnyOutputUnionSchema,ai as ApplyLUT,Vc as AudioCompressor,Wc as AudioDelay,Gh as AudioExtractorSignalDataSchema,Hc as AudioFade,Nl as AudioLatentEngine,Al as AudioLatentTrackCache,bc as AudioMeshDeformPipeline,Yc as AudioNoiseGate,Xc as AudioParametricEq,qc as AudioReverb,Ic as AudioSignal,bd as AudioSignalExtractor,fo as AudioSpectrumTypographySchema,pg as BaseMediaOperationPropsSchema,og as BaseVideoLayerPropsSchema,as as BloomConfigSchema,ct as Blur,us as BoxNodeSchema,kg as CAPTION_LAYER_DEFAULTS,Rc as COCO17_BONES,Lc as COCO17_KEYPOINTS,Fc as COCO17_KEYPOINT_NAMES,Oc as COCO_CLASSES,Lh as COMPOSITE_OPERATIONS,Bh as COMPOSITOR_DEFAULTS,Fl as Camera3D,Ai as CameraAnimation,es as CameraNodeSchema,Zc as CameraParallax3D,ur as CannyComputePipeline,gs as CarrierHandoffConfigSchema,Kc as ChannelMerger,Jc as ChannelSplitter,po as ChromaticGlitchConfigSchema,Fn as Color,Xn as ColorBalance,qn as ColorKey,nm as ColorStopSchema,hl as Composition,im as CompositorProgramSchema,yh as ConfigHandleSchema,Rh as ConfigSchemaRegistry,sr as ControlNetMultiplexer,Qc as CornerPin,ar as Crop,yo as CubicBezierSegmentSchema,ti as Curves,ei as CustomEffect,Oh as DATA_TYPE_EXTENSIONS,ju as DEFAULT_CHART_COLORS,vg as DEFAULT_DURATION_MS,xg as DEFAULT_FPS,wg as DEFAULT_MEDIA_DIMENSION,kh as DataType,Sh as DataTypeVal,Th as DataTypes,lr as DepthNormalsComputePipeline,pi as DepthOfField,ed as DisplacementMap,co as DynamicStrokePropertiesSchema,Zg as ENVIRONMENT_PRESETS,rb as Easing,rh as Effect,fc as EffectPipeline,Sd as EnhancedTextNodeSchema,is as EnvironmentFogSchema,rs as EnvironmentPresetSchema,Jh as ExportResultSchema,wd as ExpressionSelectorSchema,bo as ExtendedGlyphPropertiesSchema,yg as ExtendedLayerSchema,td as ExtractLUT,Ch as FileAssetSchema,Eh as FileDataSchema,Qn as FilmGrain,ss as FlexNodeSchema,rd as Flip,lt as FontManager,Ih as GeneratorSignalDataSchema,Ti as GlassPipeline,Fh as GlobalCompositeOperation,Do as GlyphAnchorGroupingSchema,Lo as GlyphAnchorPointSchema,Gg as Gradient,ni as GradientMap,ui as HalftoneScreen,Ph as HandleTypeVal,export_HeadlessMediaRenderer as HeadlessMediaRenderer,export_HeadlessWebGPURenderer as HeadlessWebGPURenderer,si as HighPass,Mh as JsonValueSchema,nd as KenBurns,vi as KineticMarqueeConfigSchema,Qg as LIGHT_UNIFORM_SIZE_BYTES,F as Layer,Ot as Layer3D,ue as LayerAnimation,id as LayerStyle,Ri as LayoutNodeSchema,Jn as Levels,qe as Light,Rl as Light3D,os as LightNodeSchema,ts as LightTypeSchema,Df as Lighting,xd as LineSpacingDynamicsSchema,ad as Liquify,ho as LongShadowConfigSchema,Eg as MAX_GRADIENT_STOPS,Jg as MAX_LIGHTS,Dh as MIME_TYPES,od as MaskMath,Ko as MaterialTypeSchema,Qe as Matrix4Math,Di as MatteModeSchema,fl as Media,cg as MediaMetadataSchema,ms as MediaNodeSchema,gg as MediaOperationSchema,lg as MediaSourceSchema,sd as MeshWarp,fs as Model3DNodeSchema,hh as ModerationError,gh as ModerationUnrefundableError,gi as Modulate,ci as MotionBlur,Pi as MotionBlurPipeline,qh as MultiOutputGenericSchema,xh as NodeMetadataSchema,Kh as NodeResultSchema,Nh as NodeVisualConfigSchema,ud as NoiseGenerator,Gn as OpticalFlowComputePipeline,Hh as OutputItemSchema,mi as PBRGlass,ld as Paint,go as ParticleDissolveConfigSchema,cd as PatchHeal,bi as Path3D,Bc as PoseSkeletonRenderer,dd as ProceduralVFX,Dt as ProgrammaticSignal,md as RefineEdge,pd as RefractionCaustics3D,fi as Relight3D,gc as Renderer2D,yc as Renderer3D,fd as ResizerScaler,hd as Rotate,di as SSAO,Ci as SSAOPipeline,dr as Scene,am as SceneDefinitionSchema,hs as SceneTransitionTypeSchema,Ec as SegmentationTexturePool,ri as SelectiveColor,$r as SelectorBasedOnSchema,jr as SelectorModeSchema,Po as SelectorShapeSchema,To as SelectorUnitsSchema,Bi as Sequence,Mi as ShadowPipeline,ii as ShadowsHighlights,ps as ShapeNodeSchema,Cl as Signal,_h as SignalChannelMetaSchema,jh as SignalDataSchema,$h as SignalGateDataSchema,zh as SignalMathDataSchema,Uh as SignalStatsSchema,Xh as SingleOutputGenericSchema,yd as SkewPropertiesSchema,Lt as SlugFontCache,hc as SlugPipeline,fg as SourceOperationSchema,vd as Spatial3DPropertiesSchema,_c as SpatialLandmarkTransformer,lo as SpringPhysicsSchema,gd as StereoPanning,Sg as TEXT_LAYER_DEFAULTS,hi as TemporalDeflicker,zn as TemporalDeflickerPipeline,Dc as TemporalObjectTracker,Bt as TensorPipeline,so as TextAnchorConfigSchema,Zd as TextAnimator,ki as TextAnimatorBuilder,Qo as TextAnimatorSchema,wo as TextCursorConfigSchema,vo as TextCursorStyleSchema,ds as TextNodeSchema,hg as TextOperationSchema,Si as TextPathBuilder,Ft as TextPathOptionsSchema,xo as TextPathSourceSchema,Mo as TextRangeSelectorSchema,ko as TextScrambleConfigSchema,Ao as TextSelectorSchema,No as TextSignalSelectorSchema,ls as TextSpanMarkSchema,cs as TextSpanSchema,Co as TextWigglySelectorSchema,li as TileOffset,dg as TimelineSegmentSchema,mg as TimelineTransformSchema,ns as ToneMappingSchema,Xu as Transition,ug as TransitionSchema,sg as TransitionTypeSchema,zr as TypewriterAnimatorSchema,So as TypingCadenceSchema,oi as UnsharpMask,mo as VariableFontAxesSchema,or as Vec2Schema,Y as Vector3Math,eg as VideoAnimationSchema,ag as VideoLayerTypeSchema,tg as VideoSpatialPropsSchema,ig as VideoStylePropsSchema,ng as VideoTextPropsSchema,rg as VideoTimingPropsSchema,Zn as Vignette,bg as VirtualMediaDataSchema,dt as Vision,Vn as VisionBundle,ir as VisionNode,jn as VisionRunner,xi as VolumetricFormationConfigSchema,uo as VolumetricFormationModeSchema,Cd as accent,$n as analyzeSequence,qa as appendOperation,Nc as applyStaggerToChildren,tb as bezier,S2 as blurRegion,Pd as bold,Hl as buildPathLUT,bs as calculateSequenceTimeline,Yg as checkNodeResultCache,Fd as code,Ac as collectNodeOps,Nd as color,Gr as compositorToProgram,ec as computeAnchorPivotOffset,om as computeCarrierContinuity,Na as computeGridLayout,kc as computeLayout,Sc as computeLayoutSync,tc as computeLineLeadingDisplacement,oc as computeRangeSelectorWeight,Cc as computeStaggerDelay,Zb as computeStrokeRect,Ag as computeVideoCropRenderProps,kl as computed,Ml as cosineSignal,Yh as createOutputItemSchema,Xa as createVirtualMedia,Ah as dataTypeColors,Ka as describeGpu,Wh as deserializeSignalData,sc as deterministicWigglyNoise,Vl as distanceToCurveParameter,k2 as editTrackedRegion,Kn as effectFactories,jc as effectMeta,Xl as ellipseToCubicBeziers,Yn as encodeStereoWav,Ll as ensureDevice,Pc as evaluateAnimationAtFrame,zl as evaluateCubicBezier,$l as evaluateCubicBezierDerivative,rc as evaluateExpressionSelector,ic as evaluateMarqueeOffset,lc as evaluateSelectorCombination,Ql as evaluateSkewMatrix,Jl as evaluateSpringProgress,Tc as evaluateTrackAtFrame,dc as evaluateTypewriterState,nc as evaluateVolumetricFormation,qg as extractSvgDimensions,Hg as findSourceAsset,Lg as formatHex,export_formatQaReport as formatQaReport,ch as frameArraySignal,dh as frameSignal,jl as generateArcLengthLUT,bh as generateId,Kl as generatePathSegments,Ng as getActiveMediaMetadata,Cg as getFileDataMetadata,$g as getFingerprint,Tg as getLeafMediaType,Mg as getMediaType,jg as getRenderFingerprint,cc as getScramblePool,uc as getShuffledOrder,Ig as gradientStopsToOklab,Wg as hasOnlySingleSource,Mc as hoistMattes,Bn as inputStore,nb as interpolate,Ug as isCssGradient,zg as isEqual,lh as isSignal,Vg as isVirtualMediaData,Md as italic,_g as limitGradientStops,Oi as lintComposition,Il as loadFBX,xc as loadModel3D,Ul as loadOBJ,Gl as lutStore,Hb as mapBlendModeToSkia,Od as mark,sb as measureSpring,lb as measureText,cb as measureTextAsync,Yr as mergeAnimationTracks,wc as mixAudioTracks,Fg as mixColors,zc as mixSfxInto,Bg as normalizeColorStops,Vr as normalizeTextSpans,Dg as oklabToRgb,eb as parseColorToRgb,Ln as parseCssColor,Za as parseCssGradient,_l as parseFBX,El as parseMTL,Rd as parseMarkup,Bl as parseOBJ,Zl as parseSvgPathToCubicBeziers,Wn as pinNodeToLandmark,Hn as pinNodeToObject,ab as preloadCompositionFonts,ib as preloadFont,nh as programmaticSignal,ph as progressSignal,uh as registerSignalDependency,Cr as renderFrameGrid,export_renderSemaphore as renderSemaphore,Gc as renderSfx,vh as reportRenderDiagnostic,Yb as requiresIsolation,export_resetRenderCaches as resetRenderCaches,oh as resolveBoolean,Kg as resolveEnvironment,Pg as resolveMediaMimeType,ih as resolveNumber,sh as resolveParam,Ca as resolveSamplePoints,ah as resolveString,Og as rgbToOklab,kd as rich,ac as sampleAudioSpectrumScale,Rg as sampleColorStops,Wl as sampleCurveGeometry,Yl as samplePathChainGeometry,w2 as section,Vh as serializeSignalData,Ol as shaderStore,Sl as signal,Tl as signalBuilder,Dl as signalRegistry,Pl as sineSignal,Ad as size,$c as softLimit,Td as span,ub as spring,ob as springCalculation,Xg as stampResult,Vf as startPreview,Ld as sub,Dd as sup,wh as takeRenderDiagnostics,mc as textureCache,mh as timeSignal,fh as updateClockSignals,ql as waveToCubicBeziers};
|
|
1963
|
+
`),s.add(V),clearTimeout(c),g||(g=!0,f(l===!1?"page opened":`page opened; the server stops ${Number((l/1e3).toFixed(1))} s after its last tab closes`)),z?.(),B.on("close",()=>{s.delete(V),s.size===0&&l!==!1&&!M&&(c=setTimeout(()=>{s.size===0&&Y("idle")},l))});return}if(B.method==="POST"&&j.pathname==="/takeover"&&B.headers[mc]==="1"){tt(V,200,{ok:!0}),setImmediate(()=>{Y("replaced")});return}if(B.method==="POST"&&j.pathname==="/@framefields/log"&&B.headers["content-type"]==="application/json"){let $=await cc(B,16384),{message:Q,level:O}=JSON.parse($),F=String(Q??"").trim();F&&!b.has(F)&&b.size<200&&(b.add(F),f(`${O==="warning"?"warning":"error"} in the page: ${F}`)),V.writeHead(204).end();return}if(y&&j.pathname==="/@framefields/notes"){if(B.method==="GET"){tt(V,200,await y.list());return}if(B.method==="POST"&&B.headers["content-type"]==="application/json"){let $=JSON.parse(await cc(B,16777216)),Q=k.then(()=>vg(y,$,T.fps,f));k=Q.catch(()=>{});let O=await Q;_("notes",await y.list()),tt(V,O?200:404,O??{error:"no such note"});return}}if(B.method==="GET"&&j.pathname==="/audio"){if(N.state!=="ready"||!R){tt(V,404,{error:`audio is ${N.state}`});return}V.writeHead(200,{"content-type":"audio/wav","content-length":R.length,"cache-control":"no-store"}),V.end(R);return}let Z=/^\/assets\/fonts\/([^/]+)$/.exec(j.pathname);if(Z&&(B.method==="GET"||B.method==="HEAD")){let $=G.join(v.cwd(),"assets","fonts",decodeURIComponent(Z[1]));if(await wa($)){await Sa(B,V,$);return}}if(B.method==="GET"||B.method==="HEAD"){let $=G.resolve(decodeURIComponent(j.pathname.replace(/^\/@fs(?=\/)/,"")));if(a.some(Q=>va(Q,$))&&await wa($)){await Sa(B,V,$);return}}tt(V,404,{error:"not found"})}catch(Z){V.headersSent?V.end():tt(V,500,{error:Z instanceof Error?Z.message:String(Z)})}}),z,U=e.host??"127.0.0.1",ne=e.port??Pg(),ce=B=>new Promise((V,j)=>{let Z=Q=>{X.off("listening",$),j(Q)},$=()=>{X.off("error",Z),V()};X.once("error",Z),X.once("listening",$),X.listen(B,U)});try{await ce(ne)}catch(B){if(B.code!=="EADDRINUSE")throw B;if(await Mg(U,ne))await ce(ne).catch(()=>ce(0));else if(e.port===void 0)await ce(0);else throw B}let{port:we}=X.address(),me=`http://${U.includes(":")?`[${U}]`:U}:${we}/`;if(S().catch(()=>{}),ee(),e.open===!0){let B=await new Promise(V=>{let j=setTimeout(()=>V(!1),2e3);z=()=>{clearTimeout(j),V(!0)},s.size>0&&z()});z=void 0,B||Cg(me)}return{url:me,closed:P,close:()=>Y()}}async function yg(t,e){let n=(await import(ln(t).href))[e];if(n===void 0)throw new Error(`[framefields] ${t} has no export named "${e}" to preview.`);return typeof n=="function"?await n():n}function xg(t){let e;for(let r=t;;r=G.dirname(r)){if(ge.existsSync(G.join(r,".git")))return r;if(!e&&ge.existsSync(G.join(r,"package.json"))&&(e=r),G.dirname(r)===r)return e??t}}async function vg(t,e,r,n){if(e.op==="add"&&e.note&&String(e.note.text).trim()){let o=await t.add(e.note),a=[o.image&&`frame with the spot marked: ${o.image}`,`all notes: ${t.file}`];return n(`${uc(o,r)}
|
|
1964
|
+
${a.filter(Boolean).join(" \xB7 ")}`),o}let i=Number(e.id);if(e.op==="update"){let o=await t.update(i,e);return o&&typeof e.done=="boolean"&&n(`note ${i} marked ${o.done?"done":"open"}`),o}if(e.op==="remove"){let o=await t.remove(i);return o&&n(`note ${i} deleted`),o}}function wg(t){return t instanceof Error?t.message:String(t)}function cc(t,e){return new Promise((r,n)=>{let i="";t.setEncoding("utf8"),t.on("data",o=>{i+=o,i.length>e&&(n(new Error("request body too large")),t.destroy())}),t.on("end",()=>r(i)),t.on("error",n)})}function va(t,e){let r=G.relative(t,e);return!!r&&!r.startsWith("..")&&!G.isAbsolute(r)}async function wa(t){try{return(await ge.promises.stat(t)).isFile()}catch{return!1}}var Sg={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif",".svg":"image/svg+xml",".mp4":"video/mp4",".mov":"video/quicktime",".webm":"video/webm",".mp3":"audio/mpeg",".wav":"audio/wav",".m4a":"audio/mp4",".ogg":"audio/ogg",".ttf":"font/ttf",".otf":"font/otf",".woff":"font/woff",".woff2":"font/woff2",".json":"application/json",".js":"text/javascript; charset=utf-8",".mjs":"text/javascript; charset=utf-8",".wasm":"application/wasm",".onnx":"application/octet-stream",".srt":"text/plain; charset=utf-8",".txt":"text/plain; charset=utf-8"};async function Sa(t,e,r){let{size:n}=await ge.promises.stat(r),i=Sg[G.extname(r).toLowerCase()]??"application/octet-stream",o=/^bytes=(\d*)-(\d*)$/.exec(t.headers.range??""),a=0,s=n-1;if(o&&(o[1]||o[2])&&(o[1]?(a=Number(o[1]),o[2]&&(s=Math.min(s,Number(o[2])))):a=Math.max(0,n-Number(o[2])),a>s||a>=n)){e.writeHead(416,{"content-range":`bytes */${n}`}),e.end();return}if(e.writeHead(o?206:200,{"content-type":i,"content-length":s-a+1,"accept-ranges":"bytes","cache-control":"no-cache",...o&&{"content-range":`bytes ${a}-${s}/${n}`}}),t.method==="HEAD"){e.end();return}ge.createReadStream(r,{start:a,end:s}).pipe(e)}async function kg(t,e,r,n){let i=t.fps??24,o=t.durationMs??await t.computeDuration?.()??5e3;return{session:r,notesDir:n,title:e,fps:i,frameCount:Math.max(1,Math.round(o/1e3*i)),width:t.width??1920,height:t.height??1080}}function Pg(){return 41e3+(0,ui.createHash)("sha1").update(v.cwd()).digest().readUInt16BE(0)%900}async function Mg(t,e){let r=await new Promise(n=>{let i=ka.default.request({host:t,port:e,method:"POST",path:"/takeover",agent:!1,headers:{[mc]:"1"},timeout:1500},o=>{o.resume(),n(o.statusCode===200)});i.on("timeout",()=>i.destroy()),i.on("error",()=>n(!1)),i.end()});return r&&await new Promise(n=>setTimeout(n,150)),r}function Tg(t,e,r){let n=new Array(r).fill(0);if(t.length===0)return n;let i=t.length/r;for(let o=0;o<r;o++){let a=Math.floor(o*i),s=Math.min(t.length,Math.floor((o+1)*i)),l=0;for(let c=a;c<s;c++){let m=Math.max(Math.abs(t[c]??0),Math.abs(e[c]??0));m>l&&(l=m)}n[o]=Math.min(1,l)}return n}function tt(t,e,r){t.writeHead(e,{"content-type":"application/json","cache-control":"no-store"}),t.end(JSON.stringify(r))}function Cg(t){let[e,r]=v.platform==="darwin"?["open",[t]]:v.platform==="win32"?["cmd",["/c","start","",t]]:["xdg-open",[t]];try{(0,dc.spawn)(e,r,{stdio:"ignore",detached:!0}).on("error",()=>{}).unref()}catch{}}function Pa(t,e){return t&&(e&&!t.source&&Object.defineProperty(t,"source",{value:e,enumerable:!0,writable:!0,configurable:!0}),typeof t.section!="function"&&Object.defineProperty(t,"section",{value:(r,n)=>{if(typeof r=="object"&&r!==null&&!("kind"in r)&&!("inputHandleId"in r)&&!("src"in r)){let o=r.source??t.source??e;return L.section(o,t,r)}let i=r??t.source??e;return L.section(i,t,n)},enumerable:!1,writable:!0,configurable:!0}),typeof t.blurEffect!="function"&&Object.defineProperty(t,"blurEffect",{value:r=>new gt({track:t,...r}),enumerable:!1,writable:!0,configurable:!0}),typeof t.isolate!="function"&&Object.defineProperty(t,"isolate",{value:(r,n)=>L.section(r,t,n),enumerable:!1,writable:!0,configurable:!0}),t)}var Dg=vr.attach;vr.attach=function(t,e,r){let n=Dg.call(this,t,e,r);if(n?.objects){let i=t,o=n.objects.get.bind(n.objects);n.objects.get=s=>Pa(o(s),i);let a=n.objects.byCategory.bind(n.objects);n.objects.byCategory=(s,l)=>Pa(a(s,l),i),n.objects.primary&&Pa(n.objects.primary,i)}return n};var pc=class t{virtualMedia;constructor(e,r="Video"){this.virtualMedia=La(e,r)}static video(e,r){let n=new t(e,"Video");return r&&Object.assign(n.virtualMedia.metadata,r),n}static image(e,r){let n=new t(e,"Image");return r&&Object.assign(n.virtualMedia.metadata,r),n}static lottie(e,r){let n=new t(e,"Lottie");return r&&Object.assign(n.virtualMedia.metadata,r),n}static audio(e,r){let n=new t(e,"Audio");return r&&Object.assign(n.virtualMedia.metadata,r),n}apply(e,r={}){let n;e instanceof Ag||typeof e=="object"&&e!==null&&"op"in e?n=e.toOperation():n={op:e,...r};let i=Ea(this.virtualMedia,{...n,dataType:this.virtualMedia.operation.dataType});return new t(i)}toVirtualMedia(){return this.virtualMedia}async renderFrame(e={}){return(e.renderer??new ve.HeadlessMediaRenderer).renderFrame(this.virtualMedia,e)}get fps(){return this.virtualMedia.metadata?.fps??void 0}get durationMs(){return this.virtualMedia.metadata?.durationMs??void 0}get width(){return this.virtualMedia.metadata?.width??void 0}get height(){return this.virtualMedia.metadata?.height??void 0}async renderFrameGrid(e={}){return Yr(this,e)}async renderVideo(e={},r={}){let n=typeof e=="string"?{...r,outputPath:e}:e,o=await(n.renderer??new ve.HeadlessMediaRenderer).renderVideo(this.virtualMedia,n);return hc(o,n.outputPath)}};async function hc(t,e){if(!e)return t;let r=G.resolve(e);return await yr.mkdir(G.dirname(r),{recursive:!0}),await yr.copyFile(t.filePath,r),await t.cleanup(),{...t,filePath:r,cleanup:async()=>{}}}var fc=class t{width;height;fps;durationMs;backgroundColor;antialias3d;fonts;children=[];audioTracks=[];signals={};_frameHooks=[];_prepareHooks=[];_clipVision=new Map;_visionConfig;_visionBundle;_effects=[];apply(e){return e instanceof ot?(this.withVision(e),this):(this._effects.push(e),this)}withVision(e={}){this._visionBundle??=new wi({width:this.width,height:this.height,fps:this.fps});let r=e instanceof ot?e.config:e;return this._visionConfig={...r,visionBundle:this._visionBundle},this._visionBundle}vision(e,r={}){let n=`${e}\0${JSON.stringify(r)}`,i=this._clipVision.get(n);return i||(i=new Wr(e,this.fps,r),this._clipVision.set(n,i)),i}async prepareVision(e){this.linkClipMattes(),await Promise.all([...this._clipVision.values()].map(r=>r.ready(0,e)))}linkClipMattes(){if(this._clipVision.size===0)return;let e=r=>{if(!r||typeof r!="object")return;let n=r;if(n.kind==="media"&&n.dataType==="Video"&&typeof n.inputHandleId=="string"&&n.vision instanceof ot&&!(vi in n.vision)){let i=this.clipForMatte(n.inputHandleId,n.vision);i&&(i.keepSubjects(),Object.defineProperty(n.vision,vi,{value:i,enumerable:!1,configurable:!0}))}if(Array.isArray(n.children))for(let i of n.children)e(i)};for(let r of this.children)e(r)}clipForMatte(e,r){let n=r.mode??"passthrough";if(!(n!=="matte"&&n!=="mask"&&n!=="crop")&&!(r.matteSource==="selfie"||r.keyBackground===!0||r.classes!==void 0||r.enablePose===!0||r.enableMatte===!0||r.visionBundle!==void 0||(r.maskThreshold??.5)!==.5||r.featherRadius!==void 0))for(let i of this._clipVision.values()){let o=i.options;if(i.source===e&&(o.variant??"s")===(r.variant??"s")&&(o.confidence??.3)===(r.confidence??.3))return i}}async analyzeVisionSequence(e,r={}){let n=r.fps??this.fps,i=this.durationMs??await this.computeDuration(),o=r.totalFrames??Math.max(1,Math.round(i/1e3*n)),a=xr.create({modelsDir:r.modelsDir,baseUrl:r.baseUrl,...r.confidence!==void 0?{confidence:r.confidence}:{},...r.variant!==void 0?{variant:r.variant}:{}}),s=cn.getVideo(e,!0);async function*l(){for(let c=0;c<o;c++){let m=await s.getFrame(c/n);m?.buffer&&m.width>0&&m.height>0&&(yield{data:m.buffer,width:m.width,height:m.height})}}try{return await xi(l(),{runner:a,source:e,fps:n,...r.tasks!==void 0?{tasks:r.tasks}:{},...r.categories!==void 0?{categories:r.categories}:{},...r.pathStride!==void 0?{pathStride:r.pathStride}:{},...r.includeMasks!==void 0?{includeMasks:r.includeMasks}:{},...r.iouThreshold!==void 0?{iouThreshold:r.iouThreshold}:{}})}finally{a.close(),s.destroy()}}onRequestFrame(e){return this._frameHooks.push(e),this}onPrepareFrame(e){return this._prepareHooks.push(e),this}notifyFrame(e){for(let r of this._frameHooks)r(e);if(!(this._clipVision.size===0&&this._prepareHooks.length===0))return(async()=>{await this.prepareVision(e.frame);for(let r of this._prepareHooks)await r(e)})()}hasFrameHooks(){return this._frameHooks.length>0||this._prepareHooks.length>0||this._clipVision.size>0}constructor(e){this.width=e.width,this.height=e.height,this.fps=e.fps??60,this.durationMs=e.durationMs??(e.durationFrames!==void 0?e.durationFrames/this.fps*1e3:void 0),this.backgroundColor=e.backgroundColor??"#000000",this.antialias3d=e.antialias3d,this.fonts=e.fonts??[],this.signals=e.signals??{}}static create(e){return new t(e)}addSignal(e,r){return this.signals[e]=r,this}add(e,...r){if(e instanceof Wt)this.children.push(e.toNode());else if(e instanceof vr)this.children.push(e.toNode());else{if(e&&typeof e=="object"&&"node"in e)return this.add(e.node,...r),this;if(Array.isArray(e))for(let n of e)this.add(n);else{let n=e,i=r[0];if(i&&!(i instanceof Wt)&&!Array.isArray(i)&&(i instanceof oe||"tracks"in i))return n.animation=i instanceof oe?i.toSpec():i,this.children.push(n),this;this.children.push(n)}}for(let n of r)n&&!(n instanceof oe)&&!("tracks"in n)&&this.add(n);return this}addAudio(e){return this.audioTracks.push(e),this}addSubjectSandwich(e){let r=typeof e.source=="string"?e.source:e.source.inputHandleId??"",n=e.fit??"cover",i=e.feather??4,o=i>1?i/100:i,a=e.variant??"s",s=L.video(r,{width:this.width,height:this.height,position:"absolute",x:0,y:0,fit:n,muted:e.muted??!1,volume:e.muted?0:e.volume??1});this.add(s);for(let c of e.behind)this.add(c);let l=L.video(r,{width:this.width,height:this.height,position:"absolute",x:0,y:0,fit:n,muted:!0,volume:0}).withVision({mode:"matte",enableSegmentation:!0,variant:a,confidence:e.confidence??.25,featherRadius:o,keyBackground:e.keyBackground??!0,backgroundKeyThreshold:e.backgroundKeyThreshold});return this.add(l),this}addSmartFraming(e){let r=typeof e.source=="string"?e.source:e.source.inputHandleId??"",n=Math.max(0,Math.min(.99,e.damping??.8)),i=e.leadHeadroom??.18,o=this.width,a=this.height,s=e.sourceAspect??16/9,l=o/a,c=l<s?Math.round(a*s):o,m=l<s?a:Math.round(o/s),d=o-c,p=a-m,f=e.target,b=new zt(w=>{if(d>=0)return 0;let S=f.center?.x?f.center.x.get(w):f.bounds?.centerX?f.bounds.centerX.get(w)/o:f.center?.screenX?f.center.screenX.get(w)/o:.5,N=Math.max(0,Math.min(1,S))*c,R=o/2-N;return Math.max(d,Math.min(0,R))},{fps:this.fps,label:"smart_framing_pan_x"}),g=new zt(w=>{if(p>=0)return 0;let S=f.center?.y?f.center.y.get(w):f.bounds?.centerY?f.bounds.centerY.get(w)/a:f.center?.screenY?f.center.screenY.get(w)/a:.5,N=Math.max(0,Math.min(1,S))*m,R=a*i-N;return Math.max(p,Math.min(0,R))},{fps:this.fps,label:"smart_framing_pan_y"}),y=new zt(w=>{let S=w.frame;if(S<=0)return b.get(w);let x=b.get({...w,frame:0,time:0}),N=1-n;for(let R=1;R<=S;R++){let _=b.get({...w,frame:R,time:R/w.fps});x=x+N*(_-x)}return x},{fps:this.fps,label:"smart_framing_smooth_x"}),k=new zt(w=>{let S=w.frame;if(S<=0)return g.get(w);let x=g.get({...w,frame:0,time:0}),N=1-n;for(let R=1;R<=S;R++){let _=g.get({...w,frame:R,time:R/w.fps});x=x+N*(_-x)}return x},{fps:this.fps,label:"smart_framing_smooth_y"}),D=L.box({width:o,height:a,overflow:"hidden",position:"relative"}),T=L.video(r,{width:c,height:m,position:"absolute",x:y,y:k,fit:e.fit??"cover",muted:e.muted??!1,volume:e.muted?0:e.volume??1});return D.children||(D.children=[]),D.children.push(T),this.add(D),this}addSubjectOutline(e,r={}){let n=r.blur??12,i=this.width,o=this.height,a=r.pulseSignal,s=a?new zt(m=>Math.max(0,Math.min(1,Number(a.get(m))||0)),{fps:this.fps,label:"outline_pulse"}):1,l=typeof r.source=="string"?r.source:r.source?.inputHandleId??"",c=L.box({width:i,height:o,position:"absolute",x:0,y:0,opacity:s});if(l){let m=L.video(l,{width:i,height:o,position:"absolute",x:0,y:0,fit:"cover",muted:!0,volume:0}).withVision({mode:"mask",enableSegmentation:!0});c.children||(c.children=[]),c.children.push(m)}return c.apply(new gt({strength:n,blurType:"Gaussian"})),this.add(c),this}section(e,r,n){let i,o,a={},s=e!==null&&typeof e=="object"&&"bounds"in e,l=typeof e=="string"||e!==null&&typeof e=="object"&&("kind"in e||"src"in e||"inputHandleId"in e);if(l&&r&&typeof r=="object"&&"bounds"in r?(i=e,o=r,a=n??{}):l&&r?(i=e,a=r):s?(o=e,a=r??{},i=a.source??o.source):e&&typeof e=="object"&&(a=e,i=a.source),!i){let c=this.children.find(m=>m.kind==="media"&&(m.dataType==="Video"||m.dataType==="Image"));c&&(i=c)}return L.section(i??"",o??a,{compositionWidth:this.width,compositionHeight:this.height,...a})}addSection(e,r,n){let i=this.section(e,r,n);return this.add(i),i}async computeDuration(){if(this.durationMs!==void 0)return this.durationMs;let e=0,r=[];for(let n of[...this.children,...this.audioTracks]){if(n.kind==="media"){let i=n.inputHandleId;typeof i=="string"&&(n.dataType==="Video"||n.dataType==="Audio")&&r.push(i)}if(typeof n.durationFrames=="number"){let o=((typeof n.startFrame=="number"?n.startFrame:0)+n.durationFrames)/this.fps*1e3;o>e&&(e=o)}}for(let n of r)try{let o=await(await mi.acquire(n)).computeDuration();if(Number.isFinite(o)&&o>0){let a=Math.round(o*1e3);a>e&&(e=a)}}catch{}return e>0?e:5e3}async registerFont(e,r){let n=await Ze.register(e,r);return n.filePath&&!this.fonts.includes(n.filePath)&&this.fonts.push(n.filePath),this}async registerEmojiFont(e){return await Ze.registerEmojiFont(e),this}toSpec(){let e=[...this.children,...this.audioTracks],r=Ze.getRegisteredFontPaths(),n=Array.from(new Set([...this.fonts,...r]));return{width:this.width,height:this.height,fps:this.fps,mode:"Video",backgroundColor:this.backgroundColor,...this.antialias3d!==void 0&&{antialias3d:this.antialias3d},layout:e,fonts:n,signals:this.signals,...this._effects.length>0&&{effects:this._effects},...this._visionConfig&&{vision:this._visionConfig},...this.hasFrameHooks()&&{onRequestFrame:i=>this.notifyFrame(i)}}}toVirtualMedia(e={}){return dn(this.toSpec(),{isVideoMode:!0,fps:this.fps,durationMs:e.durationMs??this.durationMs,signals:e.signals??this.signals,...this._effects.length>0&&{effects:this._effects},...this._visionConfig&&{vision:this._visionConfig},...e})}async toVirtualMediaAsync(e={}){let r=e.durationMs??this.durationMs??await this.computeDuration();return this.durationMs=r,dn(this.toSpec(),{isVideoMode:!0,fps:this.fps,durationMs:r,signals:e.signals??this.signals,...this._effects.length>0&&{effects:this._effects},...this._visionConfig&&{vision:this._visionConfig},...e})}async renderFrame(e={}){if(this.hasFrameHooks()){let n=e.frame??(e.atMs!==void 0?Math.round(e.atMs/1e3*this.fps):0);await this.notifyFrame({frame:n,fps:this.fps,time:this.fps>0?n/this.fps:0,duration:(this.durationMs??0)/1e3,durationMs:this.durationMs??0,progress:this.durationMs&&this.durationMs>0?Math.max(0,Math.min(1,n/this.fps*1e3/this.durationMs)):0,deltaTime:this.fps>0?1/this.fps:0})}return(e.renderer??new ve.HeadlessMediaRenderer).renderFrame(this.toVirtualMedia(),{fps:this.fps,...e})}async renderFrameGrid(e={}){return Yr(this,e)}async renderVideo(e={},r={}){let n=typeof e=="string"?{...r,outputPath:e}:e,o=await(n.renderer??new ve.HeadlessMediaRenderer).renderVideo(this.toVirtualMedia(),n);if(o.qa){let a=this.lint(),s=[...o.qa.issues,...a.map(l=>({severity:l.severity,code:l.code,message:l.message,...l.layerId!==void 0&&{layerId:l.layerId}}))];o.qa={...o.qa,issues:s,passed:o.qa.passed&&!a.some(l=>l.severity==="error")}}return hc(o,n.outputPath)}lint(){return mo(this.toSpec())}};function xe(t){let e=t;Object.defineProperty(e,"animate",{value:(...n)=>{let i=n.flat().flatMap(l=>l instanceof oe?l.tracks:l.tracks??[]),o=e.animation,a=o?.tracks??[],s=n.flat().map(l=>l.frameStep).filter(l=>l!==void 0).at(-1)??o?.frameStep;return e.animation={tracks:Sn([...a,...i]),...s!==void 0&&s>1&&{frameStep:s}},e},enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"pinToLandmark",{value:(n,i)=>(Si(e,n,i),e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"pinToObject",{value:(n,i)=>(ki(e,n,i),e),enumerable:!1,writable:!0,configurable:!0});let r=(n,i)=>(e.matte={node:n,...i&&{mode:i}},e);for(let n of["withMatte","withMask"])Object.defineProperty(e,n,{value:r,enumerable:!1,writable:!0,configurable:!0});return Object.defineProperty(e,"withPbrGlass",{value:n=>(e.glass=n??{},e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"deformWithAudio",{value:n=>(e.audioDeform=n??{},e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"withCrop",{value:n=>(e.crop=n instanceof kr?n:new kr(n),e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"withVision",{value:n=>(e.vision=n instanceof ot?n:new ot(n),e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"withRelighting",{value:n=>(e.relighting=n??{},e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"relight",{value:n=>(e.relighting=n??{},e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"withDeflicker",{value:n=>(e.deflicker=n??{},e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"apply",{value:n=>(e.effects||(e.effects=[]),e.effects.push(n),e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"withEffect",{value:n=>(e.effects||(e.effects=[]),e.effects.push(n),e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"withEffects",{value:n=>(e.effects||(e.effects=[]),e.effects.push(...n),e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"section",{value:(n={},i)=>n!==null&&typeof n=="object"&&"bounds"in n?L.section(e,n,i):L.section(e,n),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"blurRegion",{value:(n,i)=>{let o=new gt({track:n,strength:i?.strength??25,shape:i?.shape??"ellipse",...i});return e.effects||(e.effects=[]),e.effects.push(o),e},enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"withBlurRegion",{value:(n,i)=>e.blurRegion(n,i),enumerable:!1,writable:!0,configurable:!0}),e}var L={video:(t,e={})=>xe({id:e.id??J("video"),kind:"media",inputHandleId:t,dataType:"Video",fit:e.fit??"cover",...e}),image:(t,e={})=>(typeof t=="string"&&(/\.(json|lottie)(\?.*)?$/i.test(t)||t.startsWith("data:application/json")?console.warn(`[Layer.image] '${t}' is a Lottie vector animation, not a static image. Use Layer.lottie('${t}', options) instead.`):/\.(mp4|mov|webm|mkv)(\?.*)?$/i.test(t)?console.warn(`[Layer.image] '${t}' is a video file, not a static image. Use Layer.video('${t}', options) instead.`):/\.(mp3|wav|ogg|m4a|aac)(\?.*)?$/i.test(t)&&console.warn(`[Layer.image] '${t}' is an audio file, not a static image. Use Layer.audio('${t}', options) instead.`)),xe({id:e.id??J("img"),kind:"media",inputHandleId:t,dataType:"Image",fit:e.fit??"cover",...e})),svg:(t,e={})=>xe({id:e.id??J("svg"),kind:"media",inputHandleId:t,dataType:"SVG",fit:e.fit??"contain",...e}),lottie:(t,e={})=>xe({id:e.id??J("lottie"),kind:"media",inputHandleId:t,dataType:"Lottie",fit:e.fit??"contain",...e}),audio:(t,e={})=>xe({id:e.id??J("audio"),kind:"media",inputHandleId:t,dataType:"Audio",volume:e.volume??1,...e}),text:(t,e={})=>{let r=Array.isArray(t),n=!r&&typeof t=="object"&&t!==null,i=n?t:e,o="",a=i.spans;if(r){let s=xn(t);o=s.text,a=s.spans}else n?i.spans&&!i.text?o=xn(i.spans).text:o=i.text??"":o=typeof t=="string"?t:String(t??"");return xe({id:i.id??J("text"),kind:"text",fontFamily:i.fontFamily??Ze.getAll()[0]?.family??"Inter",fontSize:i.fontSize??48,fill:i.fill??"#ffffff",...i,text:i.text??o,spans:i.spans??a})},caption:(t,e={})=>xe({id:e.id??J("caption"),kind:"media",inputHandleId:t,dataType:e.dataType??"Caption",fontFamily:e.fontFamily??Ze.getAll()[0]?.family??"Inter",fontSize:e.fontSize??48,fill:e.fill??"#ffffff",...e}),shape:(t="rect",e={})=>xe({id:e.id??J("shape"),kind:"shape",shapeType:e.shapeType??t,...e,fillColor:e.fillColor??e.fill??"#3b82f6"}),flex:(t={})=>xe({id:t.id??J("flex"),kind:"flex",dir:t.dir??"column",children:t.children??[],...t}),box:(t={})=>xe({id:t.id??J("box"),kind:"box",background:t.background??"transparent",children:t.children??[],...t}),particles:t=>{let e=new Hr(t),r={metadata:{width:t.width,height:t.height},operation:{...e.toOperation(),effect:e,dataType:"Video"},children:[]};return xe({id:t.id??J("particles"),kind:"media",dataType:"Video",src:r,position:"absolute",x:t.x??0,y:t.y??0,width:t.width,height:t.height,...t.startFrame!==void 0&&{startFrame:t.startFrame},...t.durationFrames!==void 0&&{durationFrames:t.durationFrames},...t.zIndex!==void 0&&{zIndex:t.zIndex}})},vfx:t=>{let{x:e,y:r,id:n,startFrame:i,durationFrames:o,zIndex:a,...s}=t,l=new Bi({outputType:"Video",...s}),c={metadata:{width:t.width,height:t.height},operation:{...l.toOperation(),effect:l,dataType:"Video"},children:[]};return xe({id:n??J("vfx"),kind:"media",dataType:"Video",src:c,position:"absolute",x:e??0,y:r??0,width:t.width,height:t.height,...i!==void 0&&{startFrame:i},...o!==void 0&&{durationFrames:o},...a!==void 0&&{zIndex:a}})},section:(t,e={},r={})=>{let n=t;if(t&&typeof t=="object"&&"toSpec"in t&&"children"in t){let x=(t.children||[]).find(N=>N.kind==="media"&&(N.dataType==="Video"||N.dataType==="Image"));x&&(n=x)}let i=e!==null&&typeof e=="object"&&"bounds"in e,o=i?r:e,a=i?e:void 0,s=o.padding??0,l=typeof n=="string"?n:n?.inputHandleId??n?.src??"",c=typeof n=="object"&&n?.dataType?n.dataType:"Video",m=o.compositionWidth??o.compWidth??(i?o.width:void 0)??1920,d=o.compositionHeight??o.compHeight??(i?o.height:void 0)??1080,p=Array.isArray(o.effects)?[...o.effects]:o.effects?[o.effects]:[],f=a?a.bounds.screenX.multiply(-1).add(s):typeof o.x=="number"?-o.x:o.x&&typeof o.x.multiply=="function"?o.x.multiply(-1):0,b=a?a.bounds.screenY.multiply(-1).add(s):typeof o.y=="number"?-o.y:o.y&&typeof o.y.multiply=="function"?o.y.multiply(-1):0,g=(c==="Image"?L.image(l,{position:"absolute",width:m,height:d,fit:o.fit??"cover",x:f,y:b}):L.video(l,{position:"absolute",width:m,height:d,fit:o.fit??"cover",x:f,y:b})).withEffects(p),y=a?a.bounds.screenWidth.add(s*2):o.width!==void 0?o.width:m,k=a?a.bounds.screenHeight.add(s*2):o.height!==void 0?o.height:d,D=[g,...o.children??[]],T=o.id??(a?J(`section-track-${a.trackId}`):J("section")),w=L.box({id:T,position:o.position??"absolute",width:y,height:k,x:a?void 0:o.x,y:a?void 0:o.y,borderRadius:o.borderRadius??0,borderColor:o.borderColor,borderWidth:o.borderWidth,opacity:o.opacity??1,overflow:"hidden",children:D});a&&(w=w.pinToObject(a,{anchor:"topLeft",offsetX:-s,offsetY:-s,hideWhenLost:o.hideWhenLost??!0,smoothFrames:o.smoothFrames}));let S=w;return Object.defineProperty(S,"innerMedia",{value:g,enumerable:!0,writable:!1}),Object.defineProperty(S,"effects",{get:()=>p,enumerable:!0}),Object.defineProperty(S,"addEffect",{value:x=>(p.push(x),g.effects=p,S),enumerable:!0,writable:!1}),Object.defineProperty(S,"withEffect",{value:x=>S.addEffect(x),enumerable:!0,writable:!1}),Object.defineProperty(S,"withEffects",{value:x=>{for(let N of x)S.addEffect(N);return S},enumerable:!0,writable:!1}),S},trackedRegion:(t,e,r={})=>L.section(t,e,r),blurTrackedRegion:(t,e,r={})=>{let{padding:n,borderRadius:i,borderColor:o,borderWidth:a,...s}=r;return L.section(t,e,{padding:n??8,borderRadius:i??12,borderColor:o,borderWidth:a,effects:[new gt({strength:s.strength??25,blurType:s.blurType??"Gaussian",...s})]})},chart:(t,e={})=>Fl(t,e,Ze.getAll()[0]?.family??"Inter"),camera:(t={})=>xe({id:t.id??J("camera"),kind:"camera",mode:t.mode??"lookAt",pitch:t.pitch??0,yaw:t.yaw??0,roll:t.roll??0,...t}),light:(t={})=>xe({id:t.id??J("light"),kind:"light",lightType:t.lightType??"point",color:t.color??"#ffffff",intensity:t.intensity??1,...t}),ambientLight:(t="#ffffff",e=.5,r={})=>et.ambient(t,e,r),sequence:(t,e)=>zl(t,e),environment:(t="studio",e={})=>et.environment(t,e),directionalLight:(t={})=>et.directional(t),pointLight:(t={})=>et.point(t),spotLight:(t={})=>et.spot(t),cube:t=>It.cube(t),carousel3d:t=>It.carousel(t),plane3d:t=>It.plane(t),prism3d:t=>It.prism(t),model:(t={})=>xe({id:t.id??J("model3d"),kind:"model3d",is3D:t.is3D??!0,modelFormat:t.modelFormat??"auto",loop:t.loop??!0,scale:t.scale??1,scaleX:t.scaleX??1,scaleY:t.scaleY??1,scaleZ:t.scaleZ??1,opacity:t.opacity??1,...t}),obj:(t,e={})=>L.model({src:t,modelFormat:"obj",...e}),fbx:(t,e={})=>L.model({src:t,modelFormat:"fbx",...e}),gltf:(t,e={})=>L.model({src:t,modelFormat:"gltf",...e}),glb:(t,e={})=>L.model({src:t,modelFormat:"glb",...e}),stl:(t,e={})=>L.model({src:t,modelFormat:"stl",...e}),ply:(t,e={})=>L.model({src:t,modelFormat:"ply",...e}),vox:(t,e={})=>L.model({src:t,modelFormat:"vox",...e}),threeDS:(t,e={})=>L.model({src:t,modelFormat:"3ds",...e}),off:(t,e={})=>L.model({src:t,modelFormat:"off",...e})},et={environment:(t="studio",e={})=>{let r=typeof t=="string"?{preset:t,...e}:{...t,...e};return xe({kind:"light",lightType:"environment",preset:"studio",intensity:1,...r,id:r.id??J("environment")})},ambient:(t="#ffffff",e=.5,r={})=>xe({id:r.id??J("light-ambient"),kind:"light",lightType:"ambient",color:t,intensity:e,...r}),directional:(t={})=>xe({id:t.id??J("light-directional"),kind:"light",lightType:"directional",color:t.color??"#ffffff",intensity:t.intensity??1,x:t.x??0,y:t.y??-1e3,z:t.z??-1e3,targetX:t.targetX??0,targetY:t.targetY??0,targetZ:t.targetZ??0,...t}),point:(t={})=>xe({id:t.id??J("light-point"),kind:"light",lightType:"point",color:t.color??"#ffffff",intensity:t.intensity??1,x:t.x??0,y:t.y??0,z:t.z??-500,radius:t.radius??1e3,decay:t.decay??1,...t}),spot:(t={})=>xe({id:t.id??J("light-spot"),kind:"light",lightType:"spot",color:t.color??"#ffffff",intensity:t.intensity??1,x:t.x??0,y:t.y??-500,z:t.z??-1e3,targetX:t.targetX??0,targetY:t.targetY??0,targetZ:t.targetZ??0,angle:t.angle??45,penumbra:t.penumbra??.2,radius:t.radius??2e3,decay:t.decay??1,...t})};function NM(t,e={},r={}){return L.section(t,e,r)}function OM(t,e,r={}){return typeof t=="object"&&"blurRegion"in t?t.blurRegion(e,r):L.blurTrackedRegion(t,e,r)}function RM(t,e,r={}){return L.section(t,e,r)}var Ag=Object.assign(sn,Li,{blur:t=>new gt(t),vignette:t=>new Gt(t),colorBalance:t=>new Ti(t),colorKey:t=>new Ci(t),levels:t=>new Ei(t),filmGrain:t=>new bt(t),curves:t=>new Ii(t),selectiveColor:t=>new zi(t),gradientMap:t=>new yt(t),shadowsHighlights:t=>new Ui(t),applyLut:t=>new _i(t),unsharpMask:t=>new Gi(t),highPass:t=>new ji(t),halftoneScreen:t=>new Sr(t),tileOffset:t=>new $i(t),motionBlur:t=>new Wi(t),ssao:t=>new Hi(t),pbrGlass:t=>new Yi(t),depthOfField:t=>new Xi(t),crop:t=>new kr(t),vision:t=>new ot(t),relight3d:t=>new qi(t),modulate:t=>new Ki(t),deflicker:t=>new Zi(t),custom:(t,e={})=>new Vi(t,e)});var export_HeadlessMediaRenderer=ve.HeadlessMediaRenderer;var export_HeadlessWebGPURenderer=ve.HeadlessWebGPURenderer;var export_formatQaReport=ve.formatQaReport;var export_renderSemaphore=ve.renderSemaphore;var export_resetRenderCaches=ve.resetRenderCaches;export{$t as AETextAnimatorSchema,Qi as AdvancedTextAnimatorBuilder,ro as AdvancedTextAnimatorSchema,qa as AnchorGroupingSchema,Za as AnchorPresetSchema,xs as AnimatableGlyphPropsSchema,Tb as AnimationTypeSchema,kb as AnyOutputUnionSchema,_i as ApplyLUT,Mi as Ascii,_d as AudioCompressor,Gd as AudioDelay,pb as AudioExtractorSignalDataSchema,jd as AudioFade,Tc as AudioLatentEngine,Cc as AudioLatentTrackCache,hd as AudioMeshDeformPipeline,$d as AudioNoiseGate,Wd as AudioParametricEq,Hd as AudioReverb,Ed as AudioSignal,gm as AudioSignalExtractor,ns as AudioSpectrumTypographySchema,Ub as BaseMediaOperationPropsSchema,Fb as BaseVideoLayerPropsSchema,Xs as BloomConfigSchema,gt as Blur,Ks as BoxNodeSchema,Zb as CAPTION_LAYER_DEFAULTS,Od as COCO17_BONES,Nd as COCO17_KEYPOINTS,mn as COCO17_KEYPOINT_NAMES,Dd as COCO_CLASSES,ob as COMPOSITE_OPERATIONS,ub as COMPOSITOR_DEFAULTS,wr as CRT,Oc as Camera3D,co as CameraAnimation,js as CameraNodeSchema,Yd as CameraParallax3D,Tr as CannyComputePipeline,ou as CarrierHandoffConfigSchema,Xd as ChannelMerger,qd as ChannelSplitter,rs as ChromaticGlitchConfigSchema,Wr as ClipVision,ci as Color,Ti as ColorBalance,Ci as ColorKey,rp as ColorStopSchema,fc as Composition,np as CompositorProgramSchema,Wg as ConfigHandleSchema,sb as ConfigSchemaRegistry,Di as Contour,Mr as ControlNetMultiplexer,Zd as CornerPin,kr as Crop,ss as CubicBezierSegmentSchema,Ii as Curves,Vi as CustomEffect,nb as DATA_TYPE_EXTENSIONS,Rl as DEFAULT_CHART_COLORS,Yb as DEFAULT_DURATION_MS,Hb as DEFAULT_FPS,Xb as DEFAULT_MEDIA_DIMENSION,Zg as DataType,qg as DataTypeVal,Kg as DataTypes,Kd as Datamosh,Cr as DepthNormalsComputePipeline,Xi as DepthOfField,Jd as DisplacementMap,Ai as Dither,es as DynamicStrokePropertiesSchema,ky as ENVIRONMENT_PRESETS,Ay as Easing,Ag as Effect,md as EffectPipeline,wm as EnhancedTextNodeSchema,Ys as EnvironmentFogSchema,Ws as EnvironmentPresetSchema,Mb as ExportResultSchema,vm as ExpressionSelectorSchema,as as ExtendedGlyphPropertiesSchema,Wb as ExtendedLayerSchema,Qd as ExtractLUT,eb as FileAssetSchema,lb as FileDataSchema,bt as FilmGrain,Zs as FlexNodeSchema,em as Flip,Ze as FontManager,mb as GeneratorSignalDataSchema,oo as GlassPipeline,ab as GlobalCompositeOperation,vs as GlyphAnchorGroupingSchema,ws as GlyphAnchorPointSchema,tm as Gooey,py as Gradient,yt as GradientMap,Sr as HalftoneScreen,Jg as HandleTypeVal,export_HeadlessMediaRenderer as HeadlessMediaRenderer,export_HeadlessWebGPURenderer as HeadlessWebGPURenderer,ji as HighPass,Ni as Iridescence,Qg as JsonValueSchema,Oi as Kaleidoscope,rm as KenBurns,to as KineticMarqueeConfigSchema,Ty as LIGHT_UNIFORM_SIZE_BYTES,L as Layer,It as Layer3D,oe as LayerAnimation,nm as LayerStyle,go as LayoutNodeSchema,Ei as Levels,et as Light,Rc as Light3D,qs as LightNodeSchema,$s as LightTypeSchema,Gh as Lighting,ym as LineSpacingDynamicsSchema,im as Liquify,is as LongShadowConfigSchema,ly as MAX_GRADIENT_STOPS,My as MAX_LIGHTS,ib as MIME_TYPES,om as MaskMath,Us as MaterialTypeSchema,it as Matrix4Math,po as MatteModeSchema,pc as Media,Vb as MediaMetadataSchema,tu as MediaNodeSchema,jb as MediaOperationSchema,Eb as MediaSourceSchema,am as MeshWarp,nu as Model3DNodeSchema,Gg as ModerationError,jg as ModerationUnrefundableError,Ki as Modulate,Wi as MotionBlur,ao as MotionBlurPipeline,Sb as MultiOutputGenericSchema,Hg as NodeMetadataSchema,Pb as NodeResultSchema,tb as NodeVisualConfigSchema,sm as NoiseGenerator,Ri as OpArt,bi as OpticalFlowComputePipeline,xb as OutputItemSchema,Yi as PBRGlass,um as Paint,pn as Painterly,os as ParticleDissolveConfigSchema,Hr as Particles,lm as PatchHeal,Ji as Path3D,Zn as PersonTrack,ng as Physics,qr as PhysicsBody2D,Zr as PhysicsBody3D,dr as PhysicsWorld2D,mr as PhysicsWorld3D,Fi as Pixelate,Rd as PoseSkeletonRenderer,_t as Posterize,Bi as ProceduralVFX,zt as ProgrammaticSignal,fn as RGBSplit,cm as RefineEdge,dm as RefractionCaustics3D,qi as Relight3D,fd as Renderer2D,gd as Renderer3D,mm as ResizerScaler,pm as Rotate,Hi as SSAO,uo as SSAOPipeline,Ar as Scene,ip as SceneDefinitionSchema,iu as SceneTransitionTypeSchema,Fd as SegmentationTexturePool,zi as SelectiveColor,bn as SelectorBasedOnSchema,yn as SelectorModeSchema,fs as SelectorShapeSchema,ps as SelectorUnitsSchema,bo as Sequence,so as ShadowPipeline,Ui as ShadowsHighlights,ru as ShapeNodeSchema,br as Signal,db as SignalChannelMetaSchema,gb as SignalDataSchema,hb as SignalGateDataSchema,fb as SignalMathDataSchema,cb as SignalStatsSchema,wb as SingleOutputGenericSchema,bm as SkewPropertiesSchema,Ut as SlugFontCache,pd as SlugPipeline,_b as SourceOperationSchema,xm as Spatial3DPropertiesSchema,Ld as SpatialLandmarkTransformer,Qa as SpringPhysicsSchema,fm as StereoPanning,ig as Styles,qb as TEXT_LAYER_DEFAULTS,Zi as TemporalDeflicker,yi as TemporalDeflickerPipeline,Ad as TemporalObjectTracker,Wt as TensorPipeline,Ka as TextAnchorConfigSchema,qm as TextAnimator,io as TextAnimatorBuilder,Gs as TextAnimatorSchema,cs as TextCursorConfigSchema,ls as TextCursorStyleSchema,eu as TextNodeSchema,Gb as TextOperationSchema,no as TextPathBuilder,jt as TextPathOptionsSchema,us as TextPathSourceSchema,hs as TextRangeSelectorSchema,ms as TextScrambleConfigSchema,ys as TextSelectorSchema,bs as TextSignalSelectorSchema,Js as TextSpanMarkSchema,Qs as TextSpanSchema,gs as TextWigglySelectorSchema,$i as TileOffset,Ib as TimelineSegmentSchema,zb as TimelineTransformSchema,Hs as ToneMappingSchema,hn as Toon,hm as Trails,Il as Transition,Lb as TransitionSchema,Bb as TransitionTypeSchema,gn as TypewriterAnimatorSchema,ds as TypingCadenceSchema,Gi as UnsharpMask,ts as VariableFontAxesSchema,Pr as Vec2Schema,q as Vector3Math,Cb as VideoAnimationSchema,Rb as VideoLayerTypeSchema,Db as VideoSpatialPropsSchema,Ob as VideoStylePropsSchema,Nb as VideoTextPropsSchema,Ab as VideoTimingPropsSchema,Gt as Vignette,$b as VirtualMediaDataSchema,ot as Vision,wi as VisionBundle,vr as VisionNode,xr as VisionRunner,eo as VolumetricFormationConfigSchema,Ja as VolumetricFormationModeSchema,Tm as accent,xi as analyzeSequence,Ea as appendOperation,Td as applyStaggerToChildren,Dy as bezier,OM as blurRegion,Pm as bold,$c as buildPathLUT,au as calculateSequenceTimeline,vy as checkNodeResultCache,Rm as code,Cd as collectNodeOps,Cm as color,dn as compositorToProgram,Jc as computeAnchorPivotOffset,op as computeCarrierContinuity,ma as computeGridLayout,wd as computeLayout,vd as computeLayoutSync,Qc as computeLineLeadingDisplacement,id as computeRangeSelectorWeight,Md as computeStaggerDelay,k0 as computeStrokeRect,ry as computeVideoCropRenderProps,Sc as computed,Mc as cosineSignal,vb as createOutputItemSchema,La as createVirtualMedia,rb as dataTypeColors,za as describeGpu,yb as deserializeSignalData,od as deterministicWigglyNoise,Gc as distanceToCurveParameter,RM as editTrackedRegion,Li as effectFactories,Ud as effectMeta,Hc as ellipseToCubicBeziers,Pi as encodeStereoWav,Nc as ensureDevice,kd as evaluateAnimationAtFrame,zc as evaluateCubicBezier,Uc as evaluateCubicBezierDerivative,ed as evaluateExpressionSelector,rd as evaluateMarqueeOffset,sd as evaluateSelectorCombination,Kc as evaluateSkewMatrix,Zc as evaluateSpringProgress,Sd as evaluateTrackAtFrame,ld as evaluateTypewriterState,td as evaluateVolumetricFormation,Sy as extractSvgDimensions,xy as findSourceAsset,oy as formatHex,export_formatQaReport as formatQaReport,Vg as frameArraySignal,Ig as frameSignal,_c as generateArcLengthLUT,$g as generateId,qc as generatePathSegments,ty as getActiveMediaMetadata,ey as getFileDataMetadata,hy as getFingerprint,Kb as getLeafMediaType,Qb as getMediaType,gy as getRenderFingerprint,ud as getScramblePool,ad as getShuffledOrder,my as gradientStopsToOklab,yy as hasOnlySingleSource,Pd as hoistMattes,mi as inputStore,Ny as interpolate,cy as isCssGradient,fy as isEqual,Eg as isSignal,by as isVirtualMediaData,Mm as italic,dy as limitGradientStops,mo as lintComposition,Vc as loadFBX,bd as loadModel3D,Lc as loadOBJ,Ic as lutStore,x0 as mapBlendModeToSkia,Am as mark,By as measureSpring,Ey as measureText,Vy as measureTextAsync,Sn as mergeAnimationTracks,xd as mixAudioTracks,ay as mixColors,Id as mixSfxInto,uy as normalizeColorStops,xn as normalizeTextSpans,iy as oklabToRgb,Cy as parseColorToRgb,li as parseCssColor,Va as parseCssGradient,Ec as parseFBX,Bc as parseMTL,Fm as parseMarkup,Fc as parseOBJ,Xc as parseSvgPathToCubicBeziers,Si as pinNodeToLandmark,ki as pinNodeToObject,Ry as preloadCompositionFonts,Oy as preloadFont,Ng as programmaticSignal,Ug as progressSignal,Lg as registerSignalDependency,Yr as renderFrameGrid,export_renderSemaphore as renderSemaphore,Vd as renderSfx,Yg as reportRenderDiagnostic,v0 as requiresIsolation,export_resetRenderCaches as resetRenderCaches,Fg as resolveBoolean,Py as resolveEnvironment,Jb as resolveMediaMimeType,Og as resolveNumber,Bg as resolveParam,da as resolveSamplePoints,Rg as resolveString,ny as rgbToOklab,Sm as rich,nd as sampleAudioSpectrumScale,sy as sampleColorStops,jc as sampleCurveGeometry,Wc as samplePathChainGeometry,NM as section,bb as serializeSignalData,Dc as shaderStore,wc as signal,kc as signalBuilder,Ac as signalRegistry,Pc as sineSignal,Dm as size,zd as softLimit,km as span,Ly as spring,Fy as springCalculation,wy as stampResult,bg as startPreview,Om as sub,Nm as sup,Xg as takeRenderDiagnostics,cd as textureCache,zg as timeSignal,_g as updateClockSignals,Yc as waveToCubicBeziers};
|