framefields 2.9.2 → 2.10.0-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE.md +18 -0
- package/README.md +10 -7
- package/dist/audio/index.d.mts +5 -4
- package/dist/audio/index.mjs +13 -13
- package/dist/{audio-Ccpl9mjV.d.mts → audio-1X5qNNmk.d.mts} +4 -3
- package/dist/audio-1X5qNNmk.d.mts.map +1 -0
- package/dist/{audio-a0MFkK6J.mjs → audio-KHBadECb.mjs} +1 -1
- package/dist/{audio-a0MFkK6J.mjs.map → audio-KHBadECb.mjs.map} +1 -1
- package/dist/{audio-BfQg37MW.mjs → audio-YpBRdI7r.mjs} +4 -4
- package/dist/{audio-BfQg37MW.mjs.map → audio-YpBRdI7r.mjs.map} +1 -1
- package/dist/{check-result-C3jlgV2i.mjs → check-result-Culfu7Nx.mjs} +1 -1
- package/dist/{check-result-C3jlgV2i.mjs.map → check-result-Culfu7Nx.mjs.map} +1 -1
- package/dist/cli/check-worker.mjs +50 -50
- package/dist/cli.mjs +179 -3
- package/dist/cli.mjs.map +1 -1
- package/dist/cloud/index.d.mts +118 -0
- package/dist/cloud/index.d.mts.map +1 -0
- package/dist/cloud/index.mjs +3 -0
- package/dist/cloud-xcfV4J03.mjs +233 -0
- package/dist/cloud-xcfV4J03.mjs.map +1 -0
- package/dist/components/index.d.mts +14 -11
- package/dist/components/index.mjs +47 -47
- package/dist/dist-2_lT3Dwc.mjs +1434 -0
- package/dist/dist-2_lT3Dwc.mjs.map +1 -0
- package/dist/{dist-Buaaj-Ul.mjs → dist-BIE8fvlv.mjs} +1 -1
- package/dist/{dist-Buaaj-Ul.mjs.map → dist-BIE8fvlv.mjs.map} +1 -1
- package/dist/{dist-BlIrsfcn.mjs → dist-Bf2_efYP.mjs} +1 -1
- package/dist/{dist-BlIrsfcn.mjs.map → dist-Bf2_efYP.mjs.map} +1 -1
- package/dist/dist-BwtxciN4.mjs +3 -0
- package/dist/{dist-C1cCW7Bt.mjs → dist-C4Vxgm0Q.mjs} +275 -78
- package/dist/dist-C4Vxgm0Q.mjs.map +1 -0
- package/dist/{dist-C8Xq3zgx.mjs → dist-Cu1fZ9Uy.mjs} +4 -4
- package/dist/{dist-C8Xq3zgx.mjs.map → dist-Cu1fZ9Uy.mjs.map} +1 -1
- package/dist/{dist-DVMepKaO.mjs → dist-CySGkG54.mjs} +2 -2
- package/dist/dist-CySGkG54.mjs.map +1 -0
- package/dist/effects/index.d.mts +6 -4
- package/dist/effects/index.mjs +36 -36
- package/dist/{effects-CemgqEPv.mjs → effects-DiWYouOK.mjs} +3 -3
- package/dist/{effects-CemgqEPv.mjs.map → effects-DiWYouOK.mjs.map} +1 -1
- package/dist/fonts/index.d.mts +1 -1
- package/dist/fonts/index.mjs +3 -3
- package/dist/{fonts-BW0pPcvJ.mjs → fonts-BnV-GB1o.mjs} +2 -2
- package/dist/{fonts-BW0pPcvJ.mjs.map → fonts-BnV-GB1o.mjs.map} +1 -1
- package/dist/{gpu-CMaa63nz.mjs → gpu-Bw35AMwY.mjs} +11 -3
- package/dist/gpu-Bw35AMwY.mjs.map +1 -0
- package/dist/{index-D5UDyVMb.d.mts → index-B7WqFBZA.d.mts} +35 -2401
- package/dist/index-B7WqFBZA.d.mts.map +1 -0
- package/dist/{index-BfDFmIBE.d.mts → index-BW0Q1ygn.d.mts} +1 -1
- package/dist/{index-BfDFmIBE.d.mts.map → index-BW0Q1ygn.d.mts.map} +1 -1
- package/dist/{index-CQ-bbZk3.d.mts → index-Bbv0VtxJ.d.mts} +7 -1165
- package/dist/index-Bbv0VtxJ.d.mts.map +1 -0
- package/dist/{index-CFoAmh7q.d.mts → index-CDQrdZ0J.d.mts} +3 -3
- package/dist/{index-CFoAmh7q.d.mts.map → index-CDQrdZ0J.d.mts.map} +1 -1
- package/dist/index-COYNQ_mf.d.mts +2402 -0
- package/dist/index-COYNQ_mf.d.mts.map +1 -0
- package/dist/{index-BIjMAW1h.d.mts → index-CdCrae-I.d.mts} +2 -2
- package/dist/{index-BIjMAW1h.d.mts.map → index-CdCrae-I.d.mts.map} +1 -1
- package/dist/index-DQa7mhzq.d.mts +330 -0
- package/dist/index-DQa7mhzq.d.mts.map +1 -0
- package/dist/{index-Bnh42ouE.d.mts → index-Dyt4yS-x.d.mts} +376 -287
- package/dist/index-Dyt4yS-x.d.mts.map +1 -0
- package/dist/index-WwuuX8ZJ.d.mts +1165 -0
- package/dist/index-WwuuX8ZJ.d.mts.map +1 -0
- package/dist/{index-CJL0JAU8.d.mts → index-gOVtTm-P.d.mts} +125 -3
- package/dist/index-gOVtTm-P.d.mts.map +1 -0
- package/dist/{index-7Z9_a_iB.d.mts → index-h7m8QgcL.d.mts} +3 -3
- package/dist/{index-7Z9_a_iB.d.mts.map → index-h7m8QgcL.d.mts.map} +1 -1
- package/dist/index.d.mts +16 -13
- package/dist/index.mjs +59 -58
- package/dist/preview/index.d.mts +4 -3
- package/dist/preview/index.mjs +12 -12
- package/dist/{preview-DvP8AZuV.mjs → preview-BW7ilNWk.mjs} +3 -3
- package/dist/{preview-DvP8AZuV.mjs.map → preview-BW7ilNWk.mjs.map} +1 -1
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/chunk-44V4V5LD.mjs +1 -0
- package/dist/preview-engine/{chunk-5AWAOMBR.mjs → chunk-4BWBX2HM.mjs} +1 -1
- package/dist/preview-engine/{chunk-BEYA25UZ.mjs → chunk-4DSOZ5QG.mjs} +1 -1
- package/dist/preview-engine/{chunk-VVE2QHVG.mjs → chunk-4FACCLLE.mjs} +1 -1
- package/dist/preview-engine/{chunk-DMSZXG56.mjs → chunk-4N25ZU43.mjs} +1 -1
- package/dist/preview-engine/{chunk-FTCEG3SF.mjs → chunk-4RLKHFV6.mjs} +1 -1
- package/dist/preview-engine/chunk-4TPXZNVR.mjs +483 -0
- package/dist/preview-engine/chunk-4YT5YJIF.mjs +1 -0
- package/dist/preview-engine/{chunk-CC4NNNIY.mjs → chunk-57WXGYEV.mjs} +1 -1
- package/dist/preview-engine/{chunk-C4M3B2Q2.mjs → chunk-5SLBE2FX.mjs} +1 -1
- package/dist/preview-engine/{chunk-PM2W4VLT.mjs → chunk-5Y7SO37Q.mjs} +1 -1
- package/dist/preview-engine/{chunk-BJXNKMSY.mjs → chunk-64L4GUOF.mjs} +20 -6
- package/dist/preview-engine/{chunk-Y5K5LVOR.mjs → chunk-6BE3IL7L.mjs} +1 -1
- package/dist/preview-engine/{chunk-GA4HNR44.mjs → chunk-6LBFSGCI.mjs} +1 -1
- package/dist/preview-engine/{chunk-IB6GZJOL.mjs → chunk-6O55UROD.mjs} +1 -1
- package/dist/preview-engine/{chunk-SPJPM43P.mjs → chunk-6SLCECHG.mjs} +1 -1
- package/dist/preview-engine/chunk-77MT33VR.mjs +1 -0
- package/dist/preview-engine/{chunk-QCSVT73T.mjs → chunk-7A3BNAWY.mjs} +84 -25
- package/dist/preview-engine/{chunk-CN2VLYLB.mjs → chunk-7HW7GA76.mjs} +1 -1
- package/dist/preview-engine/chunk-A6OAPDIA.mjs +1 -0
- package/dist/preview-engine/chunk-ADLIF544.mjs +39 -0
- package/dist/preview-engine/{chunk-LVYVXVZO.mjs → chunk-C2GX5L5S.mjs} +1 -1
- package/dist/preview-engine/{chunk-4WYM72ZN.mjs → chunk-CHXR5XZK.mjs} +1 -1
- package/dist/preview-engine/chunk-CSLSWUUT.mjs +1 -0
- package/dist/preview-engine/{chunk-JSYG6OWZ.mjs → chunk-D7OMXGIZ.mjs} +1 -1
- package/dist/preview-engine/{chunk-RJIAES3X.mjs → chunk-EKEKYGXE.mjs} +1 -1
- package/dist/preview-engine/{chunk-TNJEZKXM.mjs → chunk-FH72KTSM.mjs} +1 -1
- package/dist/preview-engine/{chunk-P5FKRQFU.mjs → chunk-FW2UDDUT.mjs} +1 -1
- package/dist/preview-engine/{chunk-S2ABWY5G.mjs → chunk-GTMZOMAN.mjs} +1 -1
- package/dist/preview-engine/{chunk-6R3UJBL5.mjs → chunk-HGWT3RVQ.mjs} +10 -10
- package/dist/preview-engine/{chunk-34RJ7GAS.mjs → chunk-HKYENGC5.mjs} +1 -1
- package/dist/preview-engine/{chunk-7U34VKNO.mjs → chunk-HO7FXISJ.mjs} +1 -1
- package/dist/preview-engine/{chunk-73CNXGAK.mjs → chunk-HPQDCC4S.mjs} +1 -1
- package/dist/preview-engine/{chunk-ZY47XIRK.mjs → chunk-IVAA5X5H.mjs} +1 -1
- package/dist/preview-engine/chunk-JAAFSVAG.mjs +1 -0
- package/dist/preview-engine/{chunk-UXYM2G6J.mjs → chunk-JFBSNFN6.mjs} +1 -1
- package/dist/preview-engine/{chunk-GIICZZQI.mjs → chunk-JSKEVYKD.mjs} +1 -1
- package/dist/preview-engine/{chunk-EJJITH6U.mjs → chunk-K3TJJXVC.mjs} +1 -1
- package/dist/preview-engine/{chunk-GZWA5QJS.mjs → chunk-L2NTIWW5.mjs} +1 -1
- package/dist/preview-engine/{chunk-VN36PRVD.mjs → chunk-LBP7E7SJ.mjs} +1 -1
- package/dist/preview-engine/{chunk-34DL53D5.mjs → chunk-LTR5FXGU.mjs} +1 -1
- package/dist/preview-engine/{chunk-GRJJVSOV.mjs → chunk-ML7WO27M.mjs} +1 -1
- package/dist/preview-engine/{chunk-GN3NDRLI.mjs → chunk-NCQHOGZK.mjs} +1 -1
- package/dist/preview-engine/{chunk-OH5W5EL6.mjs → chunk-NTTEGJD6.mjs} +1 -1
- package/dist/preview-engine/{chunk-2B722GXM.mjs → chunk-OD4CSXZL.mjs} +15 -15
- package/dist/preview-engine/{chunk-AHQCDTD6.mjs → chunk-OOUDE4XL.mjs} +1 -1
- package/dist/preview-engine/chunk-PH3UUX6A.mjs +138 -0
- package/dist/preview-engine/chunk-PIHG6HJO.mjs +1 -0
- package/dist/preview-engine/{chunk-ZJ5SWTCW.mjs → chunk-RAW2I27S.mjs} +1 -1
- package/dist/preview-engine/{chunk-BJV2LBII.mjs → chunk-RMHL4XZ3.mjs} +1 -1
- package/dist/preview-engine/chunk-T6L3DO3H.mjs +1 -0
- package/dist/preview-engine/{chunk-2PYTDN2C.mjs → chunk-V5HU6NIW.mjs} +1 -1
- package/dist/preview-engine/{chunk-DVZITDQS.mjs → chunk-VRJBOFFY.mjs} +1 -1
- package/dist/preview-engine/{chunk-SF37HXAH.mjs → chunk-WVIDORLK.mjs} +1 -1
- package/dist/preview-engine/{chunk-35HMRW4I.mjs → chunk-XCQ7KN4S.mjs} +1 -1
- package/dist/preview-engine/{chunk-KHJZMTOS.mjs → chunk-Y2SWIWIU.mjs} +1 -1
- package/dist/preview-engine/{chunk-H7BSN7V7.mjs → chunk-YS3ROS25.mjs} +1 -1
- package/dist/preview-engine/{chunk-2DWY7UBV.mjs → chunk-YXCTOCQ2.mjs} +1 -1
- package/dist/preview-engine/{chunk-BVDWS3D2.mjs → chunk-ZA5LWHRM.mjs} +1 -1
- package/dist/preview-engine/chunk-ZGEKF34E.mjs +1974 -0
- package/dist/preview-engine/components.mjs +1 -1
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/fonts.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +1 -1
- package/dist/preview-engine/player.mjs +1 -1
- package/dist/preview-engine/renderers-33PIDDZC.mjs +1 -0
- package/dist/preview-engine/{renderers-ZACSHGNZ.mjs → renderers-36P2TKPC.mjs} +1 -1
- package/dist/preview-engine/{renderers-TSBV4KPE.mjs → renderers-37Y5LR2S.mjs} +1 -1
- package/dist/preview-engine/renderers-3AZ3HY53.mjs +1 -0
- package/dist/preview-engine/renderers-3FGKW52B.mjs +1 -0
- package/dist/preview-engine/renderers-4A2FBS3Y.mjs +1 -0
- package/dist/preview-engine/{renderers-5TO2SXFR.mjs → renderers-4MW4NW6O.mjs} +1 -1
- package/dist/preview-engine/{renderers-ENMY4DKF.mjs → renderers-4SNAK77B.mjs} +1 -1
- package/dist/preview-engine/{renderers-Y22VSOXF.mjs → renderers-4WFRXGMR.mjs} +1 -1
- package/dist/preview-engine/{renderers-5KANN7XF.mjs → renderers-5K3BSBI6.mjs} +1 -1
- package/dist/preview-engine/renderers-65DU2F5W.mjs +1 -0
- package/dist/preview-engine/renderers-6CTPYQR6.mjs +1 -0
- package/dist/preview-engine/{renderers-NUAI4TO5.mjs → renderers-6RRWA33X.mjs} +1 -1
- package/dist/preview-engine/{renderers-4F7WLQD5.mjs → renderers-6RYIPQ7W.mjs} +1 -1
- package/dist/preview-engine/{renderers-U4M7ZCV4.mjs → renderers-AUYCQNSS.mjs} +1 -1
- package/dist/preview-engine/renderers-AWODRI3B.mjs +1 -0
- package/dist/preview-engine/renderers-BO6HHGMZ.mjs +1 -0
- package/dist/preview-engine/renderers-BSXYDEV7.mjs +1 -0
- package/dist/preview-engine/{renderers-FSI5KNGZ.mjs → renderers-CMBI4JOC.mjs} +1 -1
- package/dist/preview-engine/{renderers-6Z7DWAPH.mjs → renderers-CQIPHCIW.mjs} +1 -1
- package/dist/preview-engine/renderers-DU7KPFVV.mjs +1 -0
- package/dist/preview-engine/renderers-ECW2CGNU.mjs +1 -0
- package/dist/preview-engine/renderers-EEX22FUO.mjs +1 -0
- package/dist/preview-engine/{renderers-MOEC2XZZ.mjs → renderers-EILFSWSJ.mjs} +1 -1
- package/dist/preview-engine/{renderers-NCGH2WWJ.mjs → renderers-G2FL3IFD.mjs} +1 -1
- package/dist/preview-engine/{renderers-5XRKZHVT.mjs → renderers-GCQKGJ7W.mjs} +1 -1
- package/dist/preview-engine/{renderers-77PDUMYI.mjs → renderers-HXNSDJBY.mjs} +1 -1
- package/dist/preview-engine/renderers-HZBXLDKG.mjs +1 -0
- package/dist/preview-engine/renderers-IOXNQPQK.mjs +1 -0
- package/dist/preview-engine/renderers-IR44E4ZZ.mjs +1 -0
- package/dist/preview-engine/{renderers-TGJSOKDY.mjs → renderers-JALV3B3A.mjs} +1 -1
- package/dist/preview-engine/{renderers-IHGAWLUF.mjs → renderers-JMSAW7VY.mjs} +1 -1
- package/dist/preview-engine/{renderers-CUMVIVHI.mjs → renderers-JZYHX4XI.mjs} +1 -1
- package/dist/preview-engine/renderers-JZZ3ODOZ.mjs +1 -0
- package/dist/preview-engine/renderers-K37YL3Z7.mjs +1 -0
- package/dist/preview-engine/{renderers-RN2MHIFK.mjs → renderers-KICDB5Y6.mjs} +1 -1
- package/dist/preview-engine/renderers-KUJQV3K6.mjs +1 -0
- package/dist/preview-engine/renderers-KXVKLSSX.mjs +1 -0
- package/dist/preview-engine/{renderers-WEYAHOBK.mjs → renderers-LF6U4MR5.mjs} +1 -1
- package/dist/preview-engine/renderers-N4RVFX3G.mjs +1 -0
- package/dist/preview-engine/{renderers-PPZK6VEW.mjs → renderers-NQC4DPX4.mjs} +1 -1
- package/dist/preview-engine/renderers-NZWWEAYA.mjs +1 -0
- package/dist/preview-engine/{renderers-5UZ3YFBD.mjs → renderers-OPRXVIGT.mjs} +1 -1
- package/dist/preview-engine/{renderers-7C5RA3R5.mjs → renderers-OZKPOUMW.mjs} +1 -1
- package/dist/preview-engine/renderers-P4JJEDZB.mjs +1 -0
- package/dist/preview-engine/{renderers-V3AQO7AR.mjs → renderers-PGZDFDSC.mjs} +1 -1
- package/dist/preview-engine/renderers-Q4572F5C.mjs +1 -0
- package/dist/preview-engine/{renderers-PIIEUKFE.mjs → renderers-Q5YCUPYE.mjs} +1 -1
- package/dist/preview-engine/renderers-QAX2QWWQ.mjs +1 -0
- package/dist/preview-engine/{renderers-SEIAUKJF.mjs → renderers-RQ3JZE3L.mjs} +1 -1
- package/dist/preview-engine/renderers-SRFIEVWL.mjs +1 -0
- package/dist/preview-engine/renderers-SYC6WFTM.mjs +1 -0
- package/dist/preview-engine/{renderers-QA2HKUJJ.mjs → renderers-TKHQRERE.mjs} +1 -1
- package/dist/preview-engine/{renderers-A24KZK2Q.mjs → renderers-U4S577ON.mjs} +1 -1
- package/dist/preview-engine/{renderers-KC6ZSKCW.mjs → renderers-UBIFSF37.mjs} +1 -1
- package/dist/preview-engine/renderers-UH4WN3QN.mjs +1 -0
- package/dist/preview-engine/renderers-V4FFCAS7.mjs +1 -0
- package/dist/preview-engine/renderers-VGDEOZUU.mjs +1 -0
- package/dist/preview-engine/renderers-VJJKBX5K.mjs +1 -0
- package/dist/preview-engine/renderers-VJOKVDYW.mjs +1 -0
- package/dist/preview-engine/renderers-VUUWZUOH.mjs +1 -0
- package/dist/preview-engine/renderers-WG756VF3.mjs +228 -0
- package/dist/preview-engine/renderers-WOP5GOZP.mjs +1 -0
- package/dist/preview-engine/{renderers-T74CQCEN.mjs → renderers-XZ3XDQIN.mjs} +1 -1
- package/dist/preview-engine/renderers-Y4MGN2FR.mjs +1 -0
- package/dist/preview-engine/renderers-YAMYH7IK.mjs +1 -0
- package/dist/preview-engine/{renderers-MD3PRFZL.mjs → renderers-YJ4PJEPG.mjs} +1 -1
- package/dist/preview-engine/renderers-ZNLSAWW3.mjs +1 -0
- package/dist/preview-engine/{renderers-L6YDX6GS.mjs → renderers-ZQVKE5AO.mjs} +1 -1
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/preview-engine/{src-4IUYUKIZ.mjs → src-GPF7RIBU.mjs} +1 -1
- package/dist/{program-CKpKkllV.mjs → program-BUjUTdxq.mjs} +44 -17
- package/dist/program-BUjUTdxq.mjs.map +1 -0
- package/dist/registry/focus-zoom.json +9 -2
- package/dist/renderer/index.d.mts +4 -3
- package/dist/renderer/index.mjs +4 -4
- package/dist/{renderer-BF0hx_iJ.mjs → renderer--f8JHHyT.mjs} +5 -5
- package/dist/{renderer-BF0hx_iJ.mjs.map → renderer--f8JHHyT.mjs.map} +1 -1
- package/dist/{renderer-CHr7MiYW.mjs → renderer-1KgHl_ls.mjs} +5 -5
- package/dist/{renderer-CHr7MiYW.mjs.map → renderer-1KgHl_ls.mjs.map} +1 -1
- package/dist/renderer-6sNr6ZRJ.mjs +6 -0
- package/dist/{renderer-BgO6BA_z.mjs → renderer-7c0ecb-L.mjs} +74 -21
- package/dist/renderer-7c0ecb-L.mjs.map +1 -0
- package/dist/{renderer-D61B9bXF.mjs → renderer-7w9PZmWJ.mjs} +4 -4
- package/dist/{renderer-D61B9bXF.mjs.map → renderer-7w9PZmWJ.mjs.map} +1 -1
- package/dist/{renderer-DVCJjVn7.mjs → renderer-B3WHDQeB.mjs} +5 -5
- package/dist/{renderer-DVCJjVn7.mjs.map → renderer-B3WHDQeB.mjs.map} +1 -1
- package/dist/{renderer-C7eFJf0_.mjs → renderer-B84T5I98.mjs} +5 -5
- package/dist/{renderer-C7eFJf0_.mjs.map → renderer-B84T5I98.mjs.map} +1 -1
- package/dist/{renderer-EaLUCobW.mjs → renderer-B8i4d1Rc.mjs} +4 -4
- package/dist/{renderer-EaLUCobW.mjs.map → renderer-B8i4d1Rc.mjs.map} +1 -1
- package/dist/renderer-BDHGxD6p.mjs +5 -0
- package/dist/{renderer-WCZu2Rf5.mjs → renderer-BFmVDdVs.mjs} +4 -4
- package/dist/{renderer-WCZu2Rf5.mjs.map → renderer-BFmVDdVs.mjs.map} +1 -1
- package/dist/{renderer-bAKUeHF3.mjs → renderer-BG_cnGbF.mjs} +5 -5
- package/dist/{renderer-bAKUeHF3.mjs.map → renderer-BG_cnGbF.mjs.map} +1 -1
- package/dist/{renderer-BPWDsufX.mjs → renderer-BIToh0CA.mjs} +3 -3
- package/dist/{renderer-BPWDsufX.mjs.map → renderer-BIToh0CA.mjs.map} +1 -1
- package/dist/{renderer-mNSyac1V.mjs → renderer-BOg8i8eF.mjs} +11 -2
- package/dist/{renderer-mNSyac1V.mjs.map → renderer-BOg8i8eF.mjs.map} +1 -1
- package/dist/{renderer-BlPqTEii.mjs → renderer-BSW4CGZF.mjs} +4 -4
- package/dist/{renderer-BlPqTEii.mjs.map → renderer-BSW4CGZF.mjs.map} +1 -1
- package/dist/{renderer-D7Al3_-5.mjs → renderer-BT4im6c0.mjs} +5 -5
- package/dist/{renderer-D7Al3_-5.mjs.map → renderer-BT4im6c0.mjs.map} +1 -1
- package/dist/renderer-BT9dvpk2.mjs +5 -0
- package/dist/{renderer-BpIF1QIE.mjs → renderer-BTLZBD63.mjs} +5 -5
- package/dist/{renderer-BpIF1QIE.mjs.map → renderer-BTLZBD63.mjs.map} +1 -1
- package/dist/{renderer-CcvvoKiZ.mjs → renderer-Bb_HHUQ0.mjs} +5 -5
- package/dist/{renderer-CcvvoKiZ.mjs.map → renderer-Bb_HHUQ0.mjs.map} +1 -1
- package/dist/renderer-Bd-NuU3M.mjs +3 -0
- package/dist/{renderer-sCovEubT.mjs → renderer-BdRwbLLV.mjs} +4 -4
- package/dist/{renderer-sCovEubT.mjs.map → renderer-BdRwbLLV.mjs.map} +1 -1
- package/dist/{renderer-DNQvOrkY.mjs → renderer-BeJoW-nG.mjs} +5 -5
- package/dist/{renderer-DNQvOrkY.mjs.map → renderer-BeJoW-nG.mjs.map} +1 -1
- package/dist/renderer-BfaRh0qy.mjs +5 -0
- package/dist/{renderer-B522Dkdk.mjs → renderer-BhNZn2DU.mjs} +4 -4
- package/dist/{renderer-B522Dkdk.mjs.map → renderer-BhNZn2DU.mjs.map} +1 -1
- package/dist/{renderer-D47AEJE_.mjs → renderer-Bif8bwCq.mjs} +3 -3
- package/dist/{renderer-D47AEJE_.mjs.map → renderer-Bif8bwCq.mjs.map} +1 -1
- package/dist/renderer-BlwXKV7Y.mjs +5 -0
- package/dist/{renderer-CwFqqpWY.mjs → renderer-Bm91Xv6l.mjs} +4 -4
- package/dist/{renderer-CwFqqpWY.mjs.map → renderer-Bm91Xv6l.mjs.map} +1 -1
- package/dist/{renderer-SSBL4M1o.mjs → renderer-BnN3JH9u.mjs} +20 -7
- package/dist/renderer-BnN3JH9u.mjs.map +1 -0
- package/dist/{renderer-8QIwXh7O.mjs → renderer-Bo5GwErU.mjs} +6 -6
- package/dist/{renderer-8QIwXh7O.mjs.map → renderer-Bo5GwErU.mjs.map} +1 -1
- package/dist/{renderer-DF-yvIrV.mjs → renderer-Br_aJ_b7.mjs} +4 -4
- package/dist/{renderer-DF-yvIrV.mjs.map → renderer-Br_aJ_b7.mjs.map} +1 -1
- package/dist/{renderer-DmkWrWAk.mjs → renderer-BvRaVByi.mjs} +3 -3
- package/dist/{renderer-DmkWrWAk.mjs.map → renderer-BvRaVByi.mjs.map} +1 -1
- package/dist/renderer-C40yZK3x.mjs +5 -0
- package/dist/renderer-C5MjQ7L8.mjs +5 -0
- package/dist/renderer-C8LjKYnS.mjs +5 -0
- package/dist/renderer-C9q9H_qa.mjs +5 -0
- package/dist/renderer-CC4fhNup.mjs +3 -0
- package/dist/{renderer-GBmWjBvy.mjs → renderer-CDfCaqV4.mjs} +3 -3
- package/dist/{renderer-GBmWjBvy.mjs.map → renderer-CDfCaqV4.mjs.map} +1 -1
- package/dist/renderer-CF9ta9Rm.mjs +5 -0
- package/dist/{renderer-DkRSZg5g.mjs → renderer-CKlNHDKI.mjs} +5 -5
- package/dist/{renderer-DkRSZg5g.mjs.map → renderer-CKlNHDKI.mjs.map} +1 -1
- package/dist/{renderer-CYC32bDW.mjs → renderer-CLRrcT_3.mjs} +5 -5
- package/dist/{renderer-CYC32bDW.mjs.map → renderer-CLRrcT_3.mjs.map} +1 -1
- package/dist/{renderer-DpruWmZU.mjs → renderer-CO1PwItH.mjs} +4 -4
- package/dist/{renderer-DpruWmZU.mjs.map → renderer-CO1PwItH.mjs.map} +1 -1
- package/dist/renderer-CO205Gr9.mjs +5 -0
- package/dist/renderer-CSm8UXLP.mjs +5 -0
- package/dist/renderer-CSy8HRtF.mjs +5 -0
- package/dist/{renderer-pHWEHDnM.mjs → renderer-CTSvHf6g.mjs} +5 -5
- package/dist/{renderer-pHWEHDnM.mjs.map → renderer-CTSvHf6g.mjs.map} +1 -1
- package/dist/{renderer-hSCfnvaK.mjs → renderer-CWmlfdLb.mjs} +5 -5
- package/dist/{renderer-hSCfnvaK.mjs.map → renderer-CWmlfdLb.mjs.map} +1 -1
- package/dist/{renderer--fkmiVjl.mjs → renderer-CanNjQuL.mjs} +4 -4
- package/dist/{renderer--fkmiVjl.mjs.map → renderer-CanNjQuL.mjs.map} +1 -1
- package/dist/renderer-CdNRWDsA.mjs +5 -0
- package/dist/{renderer-DFzI3yI_.mjs → renderer-CeNAgCE2.mjs} +3 -3
- package/dist/{renderer-DFzI3yI_.mjs.map → renderer-CeNAgCE2.mjs.map} +1 -1
- package/dist/{renderer-BdyopiLC.mjs → renderer-Ch1qZ2PT.mjs} +4 -4
- package/dist/{renderer-BdyopiLC.mjs.map → renderer-Ch1qZ2PT.mjs.map} +1 -1
- package/dist/{renderer-CQvmbRQ5.mjs → renderer-Chfo4G9t.mjs} +5 -5
- package/dist/{renderer-CQvmbRQ5.mjs.map → renderer-Chfo4G9t.mjs.map} +1 -1
- package/dist/{renderer-DEmYyaqj.mjs → renderer-Ck-NLzz0.mjs} +4 -4
- package/dist/{renderer-DEmYyaqj.mjs.map → renderer-Ck-NLzz0.mjs.map} +1 -1
- package/dist/renderer-CkAjiGRB.mjs +5 -0
- package/dist/renderer-CmryuPBm.mjs +5 -0
- package/dist/renderer-CnEwne4L.mjs +5 -0
- package/dist/{renderer-BlvGcyAN.mjs → renderer-CsRuEpR2.mjs} +3 -3
- package/dist/{renderer-BlvGcyAN.mjs.map → renderer-CsRuEpR2.mjs.map} +1 -1
- package/dist/{renderer-SWr3vbrV.mjs → renderer-CtulmkqT.mjs} +3 -3
- package/dist/{renderer-SWr3vbrV.mjs.map → renderer-CtulmkqT.mjs.map} +1 -1
- package/dist/{renderer-DTqDy2m9.mjs → renderer-CwAuWLWm.mjs} +3 -3
- package/dist/{renderer-DTqDy2m9.mjs.map → renderer-CwAuWLWm.mjs.map} +1 -1
- package/dist/{renderer-B2jjxsjO.mjs → renderer-CxabOSkk.mjs} +4 -4
- package/dist/{renderer-B2jjxsjO.mjs.map → renderer-CxabOSkk.mjs.map} +1 -1
- package/dist/{renderer-DPAD6fL1.mjs → renderer-CybBR8AL.mjs} +425 -115
- package/dist/renderer-CybBR8AL.mjs.map +1 -0
- package/dist/{renderer-DO-KbpYZ.mjs → renderer-D1tDMuD0.mjs} +5 -5
- package/dist/{renderer-DO-KbpYZ.mjs.map → renderer-D1tDMuD0.mjs.map} +1 -1
- package/dist/renderer-D4QDoqOG.mjs +5 -0
- package/dist/{renderer-Bfk6A7UO.mjs → renderer-D7DlNOVi.mjs} +5 -5
- package/dist/{renderer-Bfk6A7UO.mjs.map → renderer-D7DlNOVi.mjs.map} +1 -1
- package/dist/renderer-D7cS2a8z.mjs +5 -0
- package/dist/{renderer-g_vrrAQU.mjs → renderer-D7lApyWZ.mjs} +3 -3
- package/dist/{renderer-g_vrrAQU.mjs.map → renderer-D7lApyWZ.mjs.map} +1 -1
- package/dist/renderer-D85CNC-b.mjs +5 -0
- package/dist/{renderer-DqvoMLca.mjs → renderer-DAfCcnCz.mjs} +5 -5
- package/dist/{renderer-DqvoMLca.mjs.map → renderer-DAfCcnCz.mjs.map} +1 -1
- package/dist/{renderer-D7r6onRT.mjs → renderer-DAug14gu.mjs} +4 -4
- package/dist/{renderer-D7r6onRT.mjs.map → renderer-DAug14gu.mjs.map} +1 -1
- package/dist/{renderer-DMvmf3T2.mjs → renderer-DBfx6QX1.mjs} +3 -3
- package/dist/renderer-DC9IoJNz.mjs +5 -0
- package/dist/renderer-DCMoBppL.mjs +1062 -0
- package/dist/renderer-DCMoBppL.mjs.map +1 -0
- package/dist/renderer-DIDh0gFm.mjs +5 -0
- package/dist/{renderer-DKgPVOLL.d.mts → renderer-DJuVX3c5.d.mts} +2 -2
- package/dist/{renderer-DKgPVOLL.d.mts.map → renderer-DJuVX3c5.d.mts.map} +1 -1
- package/dist/{renderer-sYSkIUfo.mjs → renderer-DKptrHeL.mjs} +5 -5
- package/dist/{renderer-sYSkIUfo.mjs.map → renderer-DKptrHeL.mjs.map} +1 -1
- package/dist/renderer-DLmJ9GWE.mjs +5 -0
- package/dist/renderer-DM7PUWP9.mjs +5 -0
- package/dist/{renderer-C41U1tK6.mjs → renderer-DMtzPqYo.mjs} +211 -72
- package/dist/renderer-DMtzPqYo.mjs.map +1 -0
- package/dist/renderer-DPWFDxIO.mjs +5 -0
- package/dist/renderer-DUCByhAk.mjs +5 -0
- package/dist/renderer-DVOtnCKH.mjs +5 -0
- package/dist/renderer-DVrN2bW8.mjs +5 -0
- package/dist/{renderer-zXPVLRlD.mjs → renderer-D_rEtJAH.mjs} +5 -5
- package/dist/{renderer-zXPVLRlD.mjs.map → renderer-D_rEtJAH.mjs.map} +1 -1
- package/dist/{renderer-BIGFP1cF.mjs → renderer-Dak_wVh9.mjs} +2 -2
- package/dist/{renderer-BIGFP1cF.mjs.map → renderer-Dak_wVh9.mjs.map} +1 -1
- package/dist/{renderer-DX41niRU.mjs → renderer-Dd2XrdqA.mjs} +4 -4
- package/dist/{renderer-DX41niRU.mjs.map → renderer-Dd2XrdqA.mjs.map} +1 -1
- package/dist/renderer-DdOVwfG4.mjs +5 -0
- package/dist/{renderer-1r-Uq-Ae.mjs → renderer-Dih1rtT6.mjs} +3 -3
- package/dist/{renderer-1r-Uq-Ae.mjs.map → renderer-Dih1rtT6.mjs.map} +1 -1
- package/dist/{renderer-BXJXziIt.mjs → renderer-DjiebKHO.mjs} +3 -3
- package/dist/{renderer-BXJXziIt.mjs.map → renderer-DjiebKHO.mjs.map} +1 -1
- package/dist/{renderer-DIw3UtEU.mjs → renderer-DkAFIpzB.mjs} +5 -5
- package/dist/{renderer-DIw3UtEU.mjs.map → renderer-DkAFIpzB.mjs.map} +1 -1
- package/dist/{renderer-DDEkFbVI.mjs → renderer-DlbSqOJR.mjs} +5 -5
- package/dist/{renderer-DDEkFbVI.mjs.map → renderer-DlbSqOJR.mjs.map} +1 -1
- package/dist/{renderer-C7L8Ceqr.mjs → renderer-DrExCXnp.mjs} +4 -4
- package/dist/{renderer-C7L8Ceqr.mjs.map → renderer-DrExCXnp.mjs.map} +1 -1
- package/dist/{renderer-_iMAO698.mjs → renderer-DsPLMzy1.mjs} +2 -2
- package/dist/{renderer-_iMAO698.mjs.map → renderer-DsPLMzy1.mjs.map} +1 -1
- package/dist/{renderer-BAYTI6jj.mjs → renderer-Dswrn-yi.mjs} +4 -4
- package/dist/{renderer-BAYTI6jj.mjs.map → renderer-Dswrn-yi.mjs.map} +1 -1
- package/dist/renderer-DtCe9ouu.mjs +5 -0
- package/dist/{renderer-DXEWbnRF.mjs → renderer-DtCmG-tT.mjs} +4 -4
- package/dist/{renderer-DXEWbnRF.mjs.map → renderer-DtCmG-tT.mjs.map} +1 -1
- package/dist/{renderer-B39I6CQw.mjs → renderer-DxiF4O6X.mjs} +4 -4
- package/dist/{renderer-B39I6CQw.mjs.map → renderer-DxiF4O6X.mjs.map} +1 -1
- package/dist/{renderer-BAusZ6Vu.mjs → renderer-DxkvDAA6.mjs} +4 -4
- package/dist/{renderer-BAusZ6Vu.mjs.map → renderer-DxkvDAA6.mjs.map} +1 -1
- package/dist/{renderer-ktWXVYka.mjs → renderer-FFLnACY-.mjs} +6 -6
- package/dist/{renderer-ktWXVYka.mjs.map → renderer-FFLnACY-.mjs.map} +1 -1
- package/dist/{renderer-Lth37j17.mjs → renderer-H4CZt3Z5.mjs} +3 -3
- package/dist/{renderer-B-ur0Ej8.mjs → renderer-JASAZUyY.mjs} +4 -4
- package/dist/{renderer-B-ur0Ej8.mjs.map → renderer-JASAZUyY.mjs.map} +1 -1
- package/dist/renderer-Mg0kr9Fm.mjs +5 -0
- package/dist/{renderer-CCycwCEB.mjs → renderer-R2kLaNuR.mjs} +3 -3
- package/dist/{renderer-CCycwCEB.mjs.map → renderer-R2kLaNuR.mjs.map} +1 -1
- package/dist/renderer-T35PsSw5.mjs +5 -0
- package/dist/{renderer-cod5Ona9.mjs → renderer-fWW0bsVl.mjs} +3 -3
- package/dist/renderer-iSZ5NT-J.mjs +5 -0
- package/dist/{renderer-oKRF4A0M.mjs → renderer-jBKpX3Xg.mjs} +4 -4
- package/dist/{renderer-oKRF4A0M.mjs.map → renderer-jBKpX3Xg.mjs.map} +1 -1
- package/dist/{renderer-Xv6GfNUI.mjs → renderer-kFx1_MmK.mjs} +3 -3
- package/dist/{renderer-Xv6GfNUI.mjs.map → renderer-kFx1_MmK.mjs.map} +1 -1
- package/dist/{renderer-DbRZe0Re.mjs → renderer-muB4slsV.mjs} +5 -5
- package/dist/{renderer-DbRZe0Re.mjs.map → renderer-muB4slsV.mjs.map} +1 -1
- package/dist/renderer-nEmMjQ1a.mjs +5 -0
- package/dist/{renderer-CpUJBOfb.mjs → renderer-oiDoNzhv.mjs} +3 -3
- package/dist/renderer-pG1nyfjE.mjs +5 -0
- package/dist/{renderer-BX7jS14r.d.mts → renderer-tcypOFaB.d.mts} +23 -4
- package/dist/renderer-tcypOFaB.d.mts.map +1 -0
- package/dist/{renderer-CiQhD8Gg.mjs → renderer-vPxMXiv8.mjs} +5 -5
- package/dist/{renderer-CiQhD8Gg.mjs.map → renderer-vPxMXiv8.mjs.map} +1 -1
- package/dist/renderer-vbb9e3E3.mjs +5 -0
- package/dist/{renderer-D8bBHrWC.mjs → renderer-vpsU_4XW.mjs} +5 -5
- package/dist/{renderer-D8bBHrWC.mjs.map → renderer-vpsU_4XW.mjs.map} +1 -1
- package/dist/{renderer-DiY70S8S.mjs → renderer-w7mlMSC-.mjs} +4 -4
- package/dist/{renderer-DiY70S8S.mjs.map → renderer-w7mlMSC-.mjs.map} +1 -1
- package/dist/{renderers-CP8CFWDs-DH2oktaC.mjs → renderers-CP8CFWDs-OgyUiyrr.mjs} +4 -4
- package/dist/{renderers-CP8CFWDs-DH2oktaC.mjs.map → renderers-CP8CFWDs-OgyUiyrr.mjs.map} +1 -1
- package/dist/sam/index.d.mts +4 -0
- package/dist/sam/index.mjs +3 -0
- package/dist/signals/index.d.mts +7 -6
- package/dist/signals/index.mjs +8 -8
- package/dist/{signals-CXwgAUp-.mjs → signals-BfJ1aqpT.mjs} +4 -4
- package/dist/{signals-CXwgAUp-.mjs.map → signals-BfJ1aqpT.mjs.map} +1 -1
- package/dist/{renderer-B2P1vgb7.mjs → src-BU6vm9sP-DFJ3phW0.mjs} +81 -1016
- package/dist/src-BU6vm9sP-DFJ3phW0.mjs.map +1 -0
- package/dist/{src-DFEqficI.mjs → src-C3f3zXYg.mjs} +251 -37
- package/dist/src-C3f3zXYg.mjs.map +1 -0
- package/package.json +75 -69
- package/dist/audio-Ccpl9mjV.d.mts.map +0 -1
- package/dist/dist-C1cCW7Bt.mjs.map +0 -1
- package/dist/dist-DVMepKaO.mjs.map +0 -1
- package/dist/gpu-CMaa63nz.mjs.map +0 -1
- package/dist/index-Bnh42ouE.d.mts.map +0 -1
- package/dist/index-CJL0JAU8.d.mts.map +0 -1
- package/dist/index-CQ-bbZk3.d.mts.map +0 -1
- package/dist/index-D5UDyVMb.d.mts.map +0 -1
- package/dist/preview-engine/chunk-4FY4TNST.mjs +0 -1
- package/dist/preview-engine/chunk-7LDSMOO3.mjs +0 -1
- package/dist/preview-engine/chunk-AGAZJZWI.mjs +0 -1
- package/dist/preview-engine/chunk-BXPM5SJ3.mjs +0 -1
- package/dist/preview-engine/chunk-D73ZKPFN.mjs +0 -138
- package/dist/preview-engine/chunk-FKG27DVO.mjs +0 -4
- package/dist/preview-engine/chunk-KOVN277Z.mjs +0 -1
- package/dist/preview-engine/chunk-KXLXP66K.mjs +0 -1974
- package/dist/preview-engine/chunk-MIEH74UH.mjs +0 -480
- package/dist/preview-engine/chunk-XYGDTPO7.mjs +0 -39
- package/dist/preview-engine/chunk-YGKO4NIU.mjs +0 -1
- package/dist/preview-engine/renderers-3BOQOUEU.mjs +0 -1
- package/dist/preview-engine/renderers-3M2FESR2.mjs +0 -1
- package/dist/preview-engine/renderers-6LHIWKMZ.mjs +0 -1
- package/dist/preview-engine/renderers-7XHO6M3B.mjs +0 -228
- package/dist/preview-engine/renderers-A43VCJ7X.mjs +0 -1
- package/dist/preview-engine/renderers-AKY464RY.mjs +0 -1
- package/dist/preview-engine/renderers-C5UO6PL5.mjs +0 -1
- package/dist/preview-engine/renderers-C64QSZO4.mjs +0 -1
- package/dist/preview-engine/renderers-CIRCR6NG.mjs +0 -1
- package/dist/preview-engine/renderers-CIWOPETY.mjs +0 -1
- package/dist/preview-engine/renderers-CZEZCELP.mjs +0 -1
- package/dist/preview-engine/renderers-FSQMWHQM.mjs +0 -1
- package/dist/preview-engine/renderers-FZEW5C23.mjs +0 -1
- package/dist/preview-engine/renderers-HCET2IML.mjs +0 -1
- package/dist/preview-engine/renderers-IUOOC6K7.mjs +0 -1
- package/dist/preview-engine/renderers-KYYJLVIJ.mjs +0 -1
- package/dist/preview-engine/renderers-L4GE7WV3.mjs +0 -1
- package/dist/preview-engine/renderers-LRAFWKCO.mjs +0 -1
- package/dist/preview-engine/renderers-LU3XZWEB.mjs +0 -1
- package/dist/preview-engine/renderers-MDHPQY6D.mjs +0 -1
- package/dist/preview-engine/renderers-ND2WV4K3.mjs +0 -1
- package/dist/preview-engine/renderers-NJ5CWVVH.mjs +0 -1
- package/dist/preview-engine/renderers-NKXYPR3V.mjs +0 -1
- package/dist/preview-engine/renderers-NWR66CGK.mjs +0 -1
- package/dist/preview-engine/renderers-O22WTBRM.mjs +0 -1
- package/dist/preview-engine/renderers-PBBA7LQB.mjs +0 -1
- package/dist/preview-engine/renderers-Q6LJRZ7R.mjs +0 -1
- package/dist/preview-engine/renderers-RMEACSRL.mjs +0 -1
- package/dist/preview-engine/renderers-SP42LCSI.mjs +0 -1
- package/dist/preview-engine/renderers-T7SZA3BX.mjs +0 -1
- package/dist/preview-engine/renderers-VADTDAHD.mjs +0 -1
- package/dist/preview-engine/renderers-VNNWI5C3.mjs +0 -1
- package/dist/preview-engine/renderers-WZ75MLP3.mjs +0 -1
- package/dist/preview-engine/renderers-XB5R4UQA.mjs +0 -1
- package/dist/preview-engine/renderers-YBIUZDGQ.mjs +0 -1
- package/dist/preview-engine/renderers-YESJR4O7.mjs +0 -1
- package/dist/preview-engine/renderers-YKSRZRRT.mjs +0 -1
- package/dist/program-CKpKkllV.mjs.map +0 -1
- package/dist/renderer--Ac-dg4A.mjs +0 -5
- package/dist/renderer--N7TMqzU.mjs +0 -5
- package/dist/renderer-2ecmdOae.mjs +0 -5
- package/dist/renderer-B2P1vgb7.mjs.map +0 -1
- package/dist/renderer-B5RJp5g-.mjs +0 -5
- package/dist/renderer-B7xyT1Vb.mjs +0 -5
- package/dist/renderer-BBeArN_x.mjs +0 -5
- package/dist/renderer-BCAZDu-r.mjs +0 -5
- package/dist/renderer-BJnhik7Y.mjs +0 -5
- package/dist/renderer-BX7jS14r.d.mts.map +0 -1
- package/dist/renderer-BgO6BA_z.mjs.map +0 -1
- package/dist/renderer-BxRW8MZO.mjs +0 -5
- package/dist/renderer-C-lfsEAN.mjs +0 -5
- package/dist/renderer-C41U1tK6.mjs.map +0 -1
- package/dist/renderer-C6nOFN4-.mjs +0 -5
- package/dist/renderer-C84TSQmS.mjs +0 -5
- package/dist/renderer-C8_6YofT.mjs +0 -5
- package/dist/renderer-COb3tOPG.mjs +0 -5
- package/dist/renderer-CSCIzaLy.mjs +0 -5
- package/dist/renderer-CmI4c8MS.mjs +0 -5
- package/dist/renderer-CqVltdX9.mjs +0 -5
- package/dist/renderer-D-FpMzLY.mjs +0 -5
- package/dist/renderer-D-Oyn9mG.mjs +0 -5
- package/dist/renderer-D2QrkA8_.mjs +0 -5
- package/dist/renderer-D5bjOx83.mjs +0 -3
- package/dist/renderer-D64r4iN-.mjs +0 -5
- package/dist/renderer-DCq6YkgP.mjs +0 -5
- package/dist/renderer-DDHG3GdR.mjs +0 -5
- package/dist/renderer-DMdNfcud.mjs +0 -6
- package/dist/renderer-DPAD6fL1.mjs.map +0 -1
- package/dist/renderer-DZQXZ4lK.mjs +0 -5
- package/dist/renderer-DczJJLA1.mjs +0 -5
- package/dist/renderer-DfqJj9oe.mjs +0 -5
- package/dist/renderer-DgO9ihVJ.mjs +0 -5
- package/dist/renderer-DhgnQZYb.mjs +0 -5
- package/dist/renderer-DjxKjHMf.mjs +0 -5
- package/dist/renderer-DnRDW2Oz.mjs +0 -3
- package/dist/renderer-DqLA5cdR.mjs +0 -5
- package/dist/renderer-Dudp6ZlH.mjs +0 -5
- package/dist/renderer-SSBL4M1o.mjs.map +0 -1
- package/dist/renderer-_jC5KIT1.mjs +0 -5
- package/dist/renderer-cTgAuVmJ.mjs +0 -5
- package/dist/renderer-nVKDvDLO.mjs +0 -5
- package/dist/renderer-pZ6_pUo1.mjs +0 -5
- package/dist/src-DFEqficI.mjs.map +0 -1
- /package/dist/{chunk-BcJoO4Nm.mjs → chunk-W71TSjRM.mjs} +0 -0
- /package/dist/{renderer-COqFNSfV.mjs → renderer-B6rZUBwE.mjs} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-B2P1vgb7.mjs","names":["path","FrameTensorPipeline","os","path","VisionRunner","VisionNode","encoder"],"sources":["../../vision/dist/registry-RNCQoD9e.mjs","../../vision/dist/src-Bnr8DUC-.mjs","../../../nodes/node-vision/dist/renderers-Ao0SpHQm.mjs"],"sourcesContent":["//#region src/model/registry.ts\nconst VISION_TASKS = [\n\t\"detect\",\n\t\"segment\",\n\t\"pose\",\n\t\"matte\"\n];\nconst VISION_VARIANTS = [\n\t\"t\",\n\t\"s\",\n\t\"m\"\n];\nconst hf = (repo, revision, path) => `https://huggingface.co/${repo}/resolve/${revision}/${path}`;\nconst RTMDET_INS_REPO = \"tori29umai/rtmdet-ins-onnx-person-masks\";\nconst RTMDET_INS_REV = \"e5218e8d47d7c50077f27f9893a28e0ef2ad5656\";\nconst RTMDET_INS_SOURCE = \"RTMDet-Ins (OpenMMLab mmdetection, Apache-2.0), mmdeploy ONNX export\";\nconst RTMO_SOURCE = \"RTMO (OpenMMLab mmpose, Apache-2.0), ONNX export\";\nconst SELFIE_SOURCE = \"MediaPipe Selfie Segmenter (Google, Apache-2.0), ONNX export\";\nconst models = {\n\t\"rtmdet-ins-t\": {\n\t\tkey: \"rtmdet-ins-t\",\n\t\tfamily: \"rtmdet-ins\",\n\t\tfilename: \"rtmdet-ins-t.onnx\",\n\t\turl: hf(RTMDET_INS_REPO, RTMDET_INS_REV, \"models/tiny/rtmdet-ins_tiny_640x640.onnx\"),\n\t\tbytes: 24032356,\n\t\tsha256: \"99ee670820c4493aa13e20578b6a8e39781c319846dc41796a77765734beac5c\",\n\t\tinput: [640, 640],\n\t\tsource: RTMDET_INS_SOURCE\n\t},\n\t\"rtmdet-ins-s\": {\n\t\tkey: \"rtmdet-ins-s\",\n\t\tfamily: \"rtmdet-ins\",\n\t\tfilename: \"rtmdet-ins-s.onnx\",\n\t\turl: hf(RTMDET_INS_REPO, RTMDET_INS_REV, \"models/s/rtmdet-ins_s_640x640.onnx\"),\n\t\tbytes: 43236976,\n\t\tsha256: \"9cd1787fbf3eb2bd64cc2d8154f41c036f5484b85599e1cbe0227a2dc5a4a08b\",\n\t\tinput: [640, 640],\n\t\tsource: RTMDET_INS_SOURCE\n\t},\n\t\"rtmdet-ins-m\": {\n\t\tkey: \"rtmdet-ins-m\",\n\t\tfamily: \"rtmdet-ins\",\n\t\tfilename: \"rtmdet-ins-m.onnx\",\n\t\turl: hf(RTMDET_INS_REPO, RTMDET_INS_REV, \"models/m/rtmdet-ins_m_640x640.onnx\"),\n\t\tbytes: 115735979,\n\t\tsha256: \"a003bce80316e03467c2c2b483df2d5c0398220c2357a44f9bf985929f7eb052\",\n\t\tinput: [640, 640],\n\t\tsource: RTMDET_INS_SOURCE\n\t},\n\t\"rtmo-t\": {\n\t\tkey: \"rtmo-t\",\n\t\tfamily: \"rtmo\",\n\t\tfilename: \"rtmo-t.onnx\",\n\t\turl: hf(\"Xenova/RTMO-t\", \"f29d13ce5ee291fbe505e9d06a049992f05699dc\", \"onnx/model.onnx\"),\n\t\tbytes: 27360569,\n\t\tsha256: \"cb54dd042bf997df86d938721c94238940f2bff98ba8d2ccc834430de5c65c13\",\n\t\tinput: [416, 416],\n\t\tsource: RTMO_SOURCE\n\t},\n\t\"rtmo-s\": {\n\t\tkey: \"rtmo-s\",\n\t\tfamily: \"rtmo\",\n\t\tfilename: \"rtmo-s.onnx\",\n\t\turl: hf(\"Xenova/RTMO-s\", \"d8c526187f341d287753831c9c8b1ecc4855bba1\", \"onnx/model.onnx\"),\n\t\tbytes: 39636400,\n\t\tsha256: \"1cd6a3517658903233e9ccb78666554862f57f0944b6886e2048093594aef4e7\",\n\t\tinput: [640, 640],\n\t\tsource: RTMO_SOURCE\n\t},\n\t\"rtmo-m\": {\n\t\tkey: \"rtmo-m\",\n\t\tfamily: \"rtmo\",\n\t\tfilename: \"rtmo-m.onnx\",\n\t\turl: hf(\"Xenova/RTMO-m\", \"3aba1280472b98ee2bf663482e27e243038d23fe\", \"onnx/model.onnx\"),\n\t\tbytes: 89291929,\n\t\tsha256: \"76d82c45e5c4810baf587ecf2638d15cbf7ed196afb2055e977382532021b59e\",\n\t\tinput: [640, 640],\n\t\tsource: RTMO_SOURCE\n\t},\n\t\"selfie-square\": {\n\t\tkey: \"selfie-square\",\n\t\tfamily: \"selfie\",\n\t\tfilename: \"selfie-square.onnx\",\n\t\turl: hf(\"onnx-community/mediapipe_selfie_segmentation\", \"be49485c8e027524be38591817fc5cd31bd9d00e\", \"onnx/model.onnx\"),\n\t\tbytes: 462352,\n\t\tsha256: \"3241ac4ad8aa35bdaf33946776db29f7c283a413aa0b0dacb9483594b4531aad\",\n\t\tinput: [256, 256],\n\t\tsource: SELFIE_SOURCE\n\t},\n\t\"selfie-landscape\": {\n\t\tkey: \"selfie-landscape\",\n\t\tfamily: \"selfie\",\n\t\tfilename: \"selfie-landscape.onnx\",\n\t\turl: hf(\"onnx-community/mediapipe_selfie_segmentation_landscape\", \"2497d5bec26c626c7b3c4edc6e1fefc21b64f6c3\", \"onnx/model.onnx\"),\n\t\tbytes: 462338,\n\t\tsha256: \"7a0adcfdb1715d3b0ff0f61486d8a181c33f4a208343a5abfccbc6540e872d24\",\n\t\tinput: [256, 144],\n\t\tsource: SELFIE_SOURCE\n\t}\n};\nconst VISION_MODELS = models;\n/** Adds a pinned model from a separately licensed package to the registry. */\nfunction registerVisionModel(descriptor) {\n\tmodels[descriptor.key] = descriptor;\n}\n/**\n* Resolves the model for a task. `detect` and `segment` share RTMDet-Ins (one forward pass\n* yields both); `matte` picks the landscape Selfie Segmenter for wide frames.\n*/\nfunction modelKeyFor(task, variant = \"s\", aspect = 1) {\n\tif (task === \"pose\") return `rtmo-${variant}`;\n\tif (task === \"matte\") return aspect > 1.3 ? \"selfie-landscape\" : \"selfie-square\";\n\treturn `rtmdet-ins-${variant}`;\n}\n/** COCO 80 class names — index order matches the RTMDet-Ins `labels` output. */\nconst COCO_CLASSES = [\n\t\"person\",\n\t\"bicycle\",\n\t\"car\",\n\t\"motorcycle\",\n\t\"airplane\",\n\t\"bus\",\n\t\"train\",\n\t\"truck\",\n\t\"boat\",\n\t\"traffic light\",\n\t\"fire hydrant\",\n\t\"stop sign\",\n\t\"parking meter\",\n\t\"bench\",\n\t\"bird\",\n\t\"cat\",\n\t\"dog\",\n\t\"horse\",\n\t\"sheep\",\n\t\"cow\",\n\t\"elephant\",\n\t\"bear\",\n\t\"zebra\",\n\t\"giraffe\",\n\t\"backpack\",\n\t\"umbrella\",\n\t\"handbag\",\n\t\"tie\",\n\t\"suitcase\",\n\t\"frisbee\",\n\t\"skis\",\n\t\"snowboard\",\n\t\"sports ball\",\n\t\"kite\",\n\t\"baseball bat\",\n\t\"baseball glove\",\n\t\"skateboard\",\n\t\"surfboard\",\n\t\"tennis racket\",\n\t\"bottle\",\n\t\"wine glass\",\n\t\"cup\",\n\t\"fork\",\n\t\"knife\",\n\t\"spoon\",\n\t\"bowl\",\n\t\"banana\",\n\t\"apple\",\n\t\"sandwich\",\n\t\"orange\",\n\t\"broccoli\",\n\t\"carrot\",\n\t\"hot dog\",\n\t\"pizza\",\n\t\"donut\",\n\t\"cake\",\n\t\"chair\",\n\t\"couch\",\n\t\"potted plant\",\n\t\"bed\",\n\t\"dining table\",\n\t\"toilet\",\n\t\"tv\",\n\t\"laptop\",\n\t\"mouse\",\n\t\"remote\",\n\t\"keyboard\",\n\t\"cell phone\",\n\t\"microwave\",\n\t\"oven\",\n\t\"toaster\",\n\t\"sink\",\n\t\"refrigerator\",\n\t\"book\",\n\t\"clock\",\n\t\"vase\",\n\t\"scissors\",\n\t\"teddy bear\",\n\t\"hair drier\",\n\t\"toothbrush\"\n];\n\n//#endregion\nexport { modelKeyFor as a, VISION_VARIANTS as i, VISION_MODELS as n, registerVisionModel as o, VISION_TASKS as r, COCO_CLASSES as t };\n//# sourceMappingURL=registry-RNCQoD9e.mjs.map","import { n as __reExport, t as __exportAll } from \"./chunk-CFhWmker.mjs\";\nimport { a as modelKeyFor, i as VISION_VARIANTS, n as VISION_MODELS, o as registerVisionModel, r as VISION_TASKS, t as COCO_CLASSES } from \"./registry-RNCQoD9e.mjs\";\nimport { PoseSkeletonComputePipeline } from \"@framefields/tensor-webgpu\";\nimport { createHash } from \"node:crypto\";\nimport { existsSync, mkdirSync, statSync } from \"node:fs\";\nimport { readFile, rename, unlink, writeFile } from \"node:fs/promises\";\nimport { homedir } from \"node:os\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { frameSignal, programmaticSignal } from \"@framefields/core\";\n\n//#region src/tracking/temporal-object-tracker.ts\nfunction computeIoU(boxA, boxB) {\n\tconst xA = Math.max(boxA.originX, boxB.originX);\n\tconst yA = Math.max(boxA.originY, boxB.originY);\n\tconst xB = Math.min(boxA.originX + boxA.width, boxB.originX + boxB.width);\n\tconst yB = Math.min(boxA.originY + boxA.height, boxB.originY + boxB.height);\n\tconst interArea = Math.max(0, xB - xA) * Math.max(0, yB - yA);\n\tif (interArea <= 0) return 0;\n\tconst unionArea = boxA.width * boxA.height + boxB.width * boxB.height - interArea;\n\treturn unionArea > 0 ? interArea / unionArea : 0;\n}\nvar TemporalObjectTracker = class {\n\t_nextTrackId = 1;\n\t_tracks = [];\n\t_iouThreshold;\n\t_maxMissedFrames;\n\t_minHits;\n\t_positionSmoothing;\n\t_activeDuringCoast;\n\tconstructor(options = {}) {\n\t\tthis._iouThreshold = options.iouThreshold ?? .25;\n\t\tthis._maxMissedFrames = options.maxMissedFrames ?? 15;\n\t\tthis._minHits = options.minHits ?? 1;\n\t\tthis._positionSmoothing = Math.max(.1, Math.min(1, options.positionSmoothing ?? .75));\n\t\tthis._activeDuringCoast = options.activeDuringCoast !== false;\n\t}\n\t/**\n\t* Updates the multi-object tracker with new detections for the current frame.\n\t*\n\t* @param detections Raw detections found on the current frame\n\t* @param frame Current frame index\n\t* @param fps Video framerate (used for physical velocity estimation)\n\t* @returns Stable, temporal list of TrackedObjects\n\t*/\n\tupdate(detections, _frame, fps = 24) {\n\t\tconst dt = fps > 0 ? 1 / fps : .0416;\n\t\tfor (const track of this._tracks) {\n\t\t\ttrack.age++;\n\t\t\ttrack.timeSinceUpdate++;\n\t\t\tif (track.timeSinceUpdate > 0) {\n\t\t\t\tconst predCenterX = track.centerX + track.vx * dt;\n\t\t\t\tconst predCenterY = track.centerY + track.vy * dt;\n\t\t\t\ttrack.centerX = predCenterX;\n\t\t\t\ttrack.centerY = predCenterY;\n\t\t\t\tconst w = track.box.width;\n\t\t\t\tconst h = track.box.height;\n\t\t\t\tconst normW = track.box.normalizedWidth;\n\t\t\t\tconst normH = track.box.normalizedHeight;\n\t\t\t\tconst normCenterX = track.box.normalizedX + normW / 2 + track.vx * dt / Math.max(1, track.box.width / normW);\n\t\t\t\tconst normCenterY = track.box.normalizedY + normH / 2 + track.vy * dt / Math.max(1, track.box.height / normH);\n\t\t\t\ttrack.box = {\n\t\t\t\t\toriginX: predCenterX - w / 2,\n\t\t\t\t\toriginY: predCenterY - h / 2,\n\t\t\t\t\twidth: w,\n\t\t\t\t\theight: h,\n\t\t\t\t\tnormalizedX: normCenterX - normW / 2,\n\t\t\t\t\tnormalizedY: normCenterY - normH / 2,\n\t\t\t\t\tnormalizedWidth: normW,\n\t\t\t\t\tnormalizedHeight: normH\n\t\t\t\t};\n\t\t\t\ttrack.vx *= .92;\n\t\t\t\ttrack.vy *= .92;\n\t\t\t\ttrack.isCoasting = true;\n\t\t\t}\n\t\t}\n\t\tconst matchedDetections = /* @__PURE__ */ new Set();\n\t\tconst matchedTracks = /* @__PURE__ */ new Set();\n\t\tconst candidateMatches = [];\n\t\tfor (let t = 0; t < this._tracks.length; t++) {\n\t\t\tconst trk = this._tracks[t];\n\t\t\tfor (let d = 0; d < detections.length; d++) {\n\t\t\t\tconst det = detections[d];\n\t\t\t\tif (trk.category !== det.category) continue;\n\t\t\t\tconst iou$1 = computeIoU(trk.box, det.boundingBox);\n\t\t\t\tif (iou$1 >= this._iouThreshold) candidateMatches.push({\n\t\t\t\t\ttrackIdx: t,\n\t\t\t\t\tdetIdx: d,\n\t\t\t\t\tiou: iou$1\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tcandidateMatches.sort((a, b) => b.iou - a.iou);\n\t\tfor (const match of candidateMatches) {\n\t\t\tif (matchedTracks.has(match.trackIdx) || matchedDetections.has(match.detIdx)) continue;\n\t\t\tmatchedTracks.add(match.trackIdx);\n\t\t\tmatchedDetections.add(match.detIdx);\n\t\t\tconst trk = this._tracks[match.trackIdx];\n\t\t\tconst det = detections[match.detIdx];\n\t\t\tconst detBox = det.boundingBox;\n\t\t\tconst detCenterX = detBox.originX + detBox.width / 2;\n\t\t\tconst detCenterY = detBox.originY + detBox.height / 2;\n\t\t\tconst instVx = (detCenterX - trk.centerX) / dt;\n\t\t\tconst instVy = (detCenterY - trk.centerY) / dt;\n\t\t\ttrk.vx = trk.vx * .4 + instVx * .6;\n\t\t\ttrk.vy = trk.vy * .4 + instVy * .6;\n\t\t\tconst alpha = this._positionSmoothing;\n\t\t\tconst smoothW = trk.box.width * (1 - alpha) + detBox.width * alpha;\n\t\t\tconst smoothH = trk.box.height * (1 - alpha) + detBox.height * alpha;\n\t\t\tconst smoothCenterX = trk.centerX * (1 - alpha) + detCenterX * alpha;\n\t\t\tconst smoothCenterY = trk.centerY * (1 - alpha) + detCenterY * alpha;\n\t\t\ttrk.centerX = smoothCenterX;\n\t\t\ttrk.centerY = smoothCenterY;\n\t\t\ttrk.score = det.score;\n\t\t\ttrk.timeSinceUpdate = 0;\n\t\t\ttrk.hits++;\n\t\t\ttrk.isCoasting = false;\n\t\t\tif (trk.hits >= this._minHits) trk.active = true;\n\t\t\ttrk.box = {\n\t\t\t\toriginX: smoothCenterX - smoothW / 2,\n\t\t\t\toriginY: smoothCenterY - smoothH / 2,\n\t\t\t\twidth: smoothW,\n\t\t\t\theight: smoothH,\n\t\t\t\tnormalizedX: detBox.normalizedX,\n\t\t\t\tnormalizedY: detBox.normalizedY,\n\t\t\t\tnormalizedWidth: detBox.normalizedWidth,\n\t\t\t\tnormalizedHeight: detBox.normalizedHeight\n\t\t\t};\n\t\t}\n\t\tfor (let d = 0; d < detections.length; d++) {\n\t\t\tif (matchedDetections.has(d)) continue;\n\t\t\tconst det = detections[d];\n\t\t\tconst detBox = det.boundingBox;\n\t\t\tconst centerX = detBox.originX + detBox.width / 2;\n\t\t\tconst centerY = detBox.originY + detBox.height / 2;\n\t\t\tthis._tracks.push({\n\t\t\t\ttrackId: this._nextTrackId++,\n\t\t\t\tcategory: det.category,\n\t\t\t\tscore: det.score,\n\t\t\t\tbox: detBox,\n\t\t\t\tcenterX,\n\t\t\t\tcenterY,\n\t\t\t\tvx: 0,\n\t\t\t\tvy: 0,\n\t\t\t\tage: 1,\n\t\t\t\thits: 1,\n\t\t\t\ttimeSinceUpdate: 0,\n\t\t\t\tactive: this._minHits <= 1,\n\t\t\t\tisCoasting: false\n\t\t\t});\n\t\t}\n\t\tthis._tracks = this._tracks.filter((t) => t.timeSinceUpdate <= this._maxMissedFrames);\n\t\treturn this._tracks.filter((t) => t.active).map((t) => {\n\t\t\tconst normW = t.box.normalizedWidth;\n\t\t\tconst normH = t.box.normalizedHeight;\n\t\t\tconst normCenterX = t.box.normalizedX + normW / 2;\n\t\t\tconst normCenterY = t.box.normalizedY + normH / 2;\n\t\t\tconst speed = Math.sqrt(t.vx * t.vx + t.vy * t.vy);\n\t\t\treturn {\n\t\t\t\ttrackId: t.trackId,\n\t\t\t\tcategory: t.category,\n\t\t\t\tscore: t.score,\n\t\t\t\tboundingBox: t.box,\n\t\t\t\tcenterX: t.centerX,\n\t\t\t\tcenterY: t.centerY,\n\t\t\t\tnormalizedCenterX: normCenterX,\n\t\t\t\tnormalizedCenterY: normCenterY,\n\t\t\t\tvelocity: {\n\t\t\t\t\tvx: t.vx,\n\t\t\t\t\tvy: t.vy\n\t\t\t\t},\n\t\t\t\tspeed,\n\t\t\t\tage: t.age,\n\t\t\t\thits: t.hits,\n\t\t\t\tactive: this._activeDuringCoast ? true : t.timeSinceUpdate === 0,\n\t\t\t\tisCoasting: t.isCoasting\n\t\t\t};\n\t\t});\n\t}\n\t/**\n\t* Tracks objects across a full sequence of frames with gap interpolation,\n\t* boundary extrapolation (ensuring frame 0 through end are tracked),\n\t* and temporal Gaussian smoothing.\n\t*\n\t* Guarantees zero flicker, zero drift, and frame-accurate stability across the entire video.\n\t*/\n\ttrackSequence(perFrameDetections, totalFrames, fps = 24) {\n\t\tthis.reset();\n\t\tconst dt = fps > 0 ? 1 / fps : .0416;\n\t\tconst trackHistory = /* @__PURE__ */ new Map();\n\t\tfor (let f = 0; f < totalFrames; f++) {\n\t\t\tconst dets = perFrameDetections[f] ?? [];\n\t\t\tconst stepTracks = this.update(dets, f, fps);\n\t\t\tfor (const trk of stepTracks) {\n\t\t\t\tif (!trackHistory.has(trk.trackId)) trackHistory.set(trk.trackId, {\n\t\t\t\t\tcategory: trk.category,\n\t\t\t\t\tobservations: []\n\t\t\t\t});\n\t\t\t\tif (!trk.isCoasting) trackHistory.get(trk.trackId).observations.push({\n\t\t\t\t\tframe: f,\n\t\t\t\t\tbox: trk.boundingBox,\n\t\t\t\t\tscore: trk.score\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tconst fullTrajectories = /* @__PURE__ */ new Map();\n\t\tfor (const [trackId, info] of trackHistory.entries()) {\n\t\t\tconst obs = info.observations;\n\t\t\tif (obs.length === 0) continue;\n\t\t\tobs.sort((a, b) => a.frame - b.frame);\n\t\t\tconst frameData = new Array(totalFrames).fill(null);\n\t\t\tfor (const o of obs) frameData[o.frame] = {\n\t\t\t\tbox: o.box,\n\t\t\t\tscore: o.score\n\t\t\t};\n\t\t\tconst firstObs = obs[0];\n\t\t\tfor (let f = 0; f < firstObs.frame; f++) frameData[f] = {\n\t\t\t\tbox: { ...firstObs.box },\n\t\t\t\tscore: firstObs.score * .9\n\t\t\t};\n\t\t\tfor (let i = 0; i < obs.length - 1; i++) {\n\t\t\t\tconst startObs = obs[i];\n\t\t\t\tconst endObs = obs[i + 1];\n\t\t\t\tconst gap = endObs.frame - startObs.frame;\n\t\t\t\tif (gap <= 1) continue;\n\t\t\t\tfor (let f = startObs.frame + 1; f < endObs.frame; f++) {\n\t\t\t\t\tconst t = (f - startObs.frame) / gap;\n\t\t\t\t\tframeData[f] = {\n\t\t\t\t\t\tbox: {\n\t\t\t\t\t\t\toriginX: startObs.box.originX + (endObs.box.originX - startObs.box.originX) * t,\n\t\t\t\t\t\t\toriginY: startObs.box.originY + (endObs.box.originY - startObs.box.originY) * t,\n\t\t\t\t\t\t\twidth: startObs.box.width + (endObs.box.width - startObs.box.width) * t,\n\t\t\t\t\t\t\theight: startObs.box.height + (endObs.box.height - startObs.box.height) * t,\n\t\t\t\t\t\t\tnormalizedX: startObs.box.normalizedX + (endObs.box.normalizedX - startObs.box.normalizedX) * t,\n\t\t\t\t\t\t\tnormalizedY: startObs.box.normalizedY + (endObs.box.normalizedY - startObs.box.normalizedY) * t,\n\t\t\t\t\t\t\tnormalizedWidth: startObs.box.normalizedWidth + (endObs.box.normalizedWidth - startObs.box.normalizedWidth) * t,\n\t\t\t\t\t\t\tnormalizedHeight: startObs.box.normalizedHeight + (endObs.box.normalizedHeight - startObs.box.normalizedHeight) * t\n\t\t\t\t\t\t},\n\t\t\t\t\t\tscore: startObs.score * (1 - t) + endObs.score * t\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst lastObs = obs[obs.length - 1];\n\t\t\tfor (let f = lastObs.frame + 1; f < totalFrames; f++) frameData[f] = {\n\t\t\t\tbox: { ...lastObs.box },\n\t\t\t\tscore: lastObs.score * .9\n\t\t\t};\n\t\t\tconst smoothedFrames = [];\n\t\t\tconst radius = 2;\n\t\t\tconst weights = [\n\t\t\t\t.06136,\n\t\t\t\t.24477,\n\t\t\t\t.38774,\n\t\t\t\t.24477,\n\t\t\t\t.06136\n\t\t\t];\n\t\t\tfor (let f = 0; f < totalFrames; f++) {\n\t\t\t\tlet sumWeight = 0;\n\t\t\t\tlet sumX = 0;\n\t\t\t\tlet sumY = 0;\n\t\t\t\tlet sumW = 0;\n\t\t\t\tlet sumH = 0;\n\t\t\t\tlet sumNormX = 0;\n\t\t\t\tlet sumNormY = 0;\n\t\t\t\tlet sumNormW = 0;\n\t\t\t\tlet sumNormH = 0;\n\t\t\t\tlet sumScore = 0;\n\t\t\t\tfor (let r = -radius; r <= radius; r++) {\n\t\t\t\t\tconst pt = frameData[Math.max(0, Math.min(totalFrames - 1, f + r))];\n\t\t\t\t\tif (pt) {\n\t\t\t\t\t\tconst w = weights[r + radius];\n\t\t\t\t\t\tsumWeight += w;\n\t\t\t\t\t\tsumX += pt.box.originX * w;\n\t\t\t\t\t\tsumY += pt.box.originY * w;\n\t\t\t\t\t\tsumW += pt.box.width * w;\n\t\t\t\t\t\tsumH += pt.box.height * w;\n\t\t\t\t\t\tsumNormX += pt.box.normalizedX * w;\n\t\t\t\t\t\tsumNormY += pt.box.normalizedY * w;\n\t\t\t\t\t\tsumNormW += pt.box.normalizedWidth * w;\n\t\t\t\t\t\tsumNormH += pt.box.normalizedHeight * w;\n\t\t\t\t\t\tsumScore += pt.score * w;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst invW = sumWeight > 0 ? 1 / sumWeight : 1;\n\t\t\t\tsmoothedFrames.push({\n\t\t\t\t\tbox: {\n\t\t\t\t\t\toriginX: sumX * invW,\n\t\t\t\t\t\toriginY: sumY * invW,\n\t\t\t\t\t\twidth: sumW * invW,\n\t\t\t\t\t\theight: sumH * invW,\n\t\t\t\t\t\tnormalizedX: sumNormX * invW,\n\t\t\t\t\t\tnormalizedY: sumNormY * invW,\n\t\t\t\t\t\tnormalizedWidth: sumNormW * invW,\n\t\t\t\t\t\tnormalizedHeight: sumNormH * invW\n\t\t\t\t\t},\n\t\t\t\t\tscore: sumScore * invW\n\t\t\t\t});\n\t\t\t}\n\t\t\tfullTrajectories.set(trackId, {\n\t\t\t\tcategory: info.category,\n\t\t\t\tframes: smoothedFrames\n\t\t\t});\n\t\t}\n\t\tconst result = [];\n\t\tfor (let f = 0; f < totalFrames; f++) {\n\t\t\tconst frameObjects = [];\n\t\t\tfor (const [trackId, traj] of fullTrajectories.entries()) {\n\t\t\t\tconst current = traj.frames[f];\n\t\t\t\tif (!current) continue;\n\t\t\t\tconst prev = traj.frames[Math.max(0, f - 1)] ?? current;\n\t\t\t\tconst next = traj.frames[Math.min(totalFrames - 1, f + 1)] ?? current;\n\t\t\t\tconst curCenterX = current.box.originX + current.box.width / 2;\n\t\t\t\tconst curCenterY = current.box.originY + current.box.height / 2;\n\t\t\t\tconst prevCenterX = prev.box.originX + prev.box.width / 2;\n\t\t\t\tconst prevCenterY = prev.box.originY + prev.box.height / 2;\n\t\t\t\tconst nextCenterX = next.box.originX + next.box.width / 2;\n\t\t\t\tconst nextCenterY = next.box.originY + next.box.height / 2;\n\t\t\t\tconst timeDelta = f === 0 || f === totalFrames - 1 ? dt : 2 * dt;\n\t\t\t\tconst vx = (nextCenterX - prevCenterX) / timeDelta;\n\t\t\t\tconst vy = (nextCenterY - prevCenterY) / timeDelta;\n\t\t\t\tconst speed = Math.sqrt(vx * vx + vy * vy);\n\t\t\t\tconst normW = current.box.normalizedWidth;\n\t\t\t\tconst normH = current.box.normalizedHeight;\n\t\t\t\tframeObjects.push({\n\t\t\t\t\ttrackId,\n\t\t\t\t\tcategory: traj.category,\n\t\t\t\t\tscore: current.score,\n\t\t\t\t\tboundingBox: current.box,\n\t\t\t\t\tcenterX: curCenterX,\n\t\t\t\t\tcenterY: curCenterY,\n\t\t\t\t\tnormalizedCenterX: current.box.normalizedX + normW / 2,\n\t\t\t\t\tnormalizedCenterY: current.box.normalizedY + normH / 2,\n\t\t\t\t\tvelocity: {\n\t\t\t\t\t\tvx,\n\t\t\t\t\t\tvy\n\t\t\t\t\t},\n\t\t\t\t\tspeed,\n\t\t\t\t\tage: f + 1,\n\t\t\t\t\thits: 10,\n\t\t\t\t\tactive: true,\n\t\t\t\t\tisCoasting: false\n\t\t\t\t});\n\t\t\t}\n\t\t\tresult.push(frameObjects);\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t* Resets all internal track state.\n\t*/\n\treset() {\n\t\tthis._tracks = [];\n\t\tthis._nextTrackId = 1;\n\t}\n};\n\n//#endregion\n//#region src/analysis/analyze-sequence.ts\nconst now = () => typeof performance !== \"undefined\" && typeof performance.now === \"function\" ? performance.now() : Date.now();\nasync function analyzeSequence(frames, options) {\n\tconst { runner } = options;\n\tconst fps = options.fps ?? 24;\n\tconst tasks = options.tasks && options.tasks.length > 0 ? options.tasks : [\"detect\"];\n\tconst taskSet = new Set(tasks);\n\tconst categoryFilter = options.categories ? new Set(options.categories.map((c) => c.toLowerCase())) : null;\n\tconst includeMasks = options.includeMasks === true && taskSet.has(\"segment\");\n\tconst tracksObjects = taskSet.has(\"detect\") || taskSet.has(\"segment\");\n\tconst perFrameDetections = [];\n\tconst modelDownloads = {};\n\tconst maskCoverage = /* @__PURE__ */ new Map();\n\tlet inferenceMs = 0;\n\tlet frameIndex = 0;\n\tconst accepts = (category) => !categoryFilter || categoryFilter.has(category.toLowerCase());\n\tconst runTask = async (task, frame, fn) => {\n\t\tconst key = runner.modelKeyFor(task, frame.width / frame.height);\n\t\tconst wasReady = runner.downloadStatus.get(key) === \"ready\";\n\t\tconst start = now();\n\t\tconst result = await fn();\n\t\tconst elapsed = now() - start;\n\t\tinferenceMs += elapsed;\n\t\tif (!wasReady && !modelDownloads[key]) modelDownloads[key] = {\n\t\t\tbytes: VISION_MODELS[key].bytes,\n\t\t\tms: elapsed\n\t\t};\n\t\treturn result;\n\t};\n\tconst recordMasks = (masks$1) => {\n\t\tfor (const m of masks$1) {\n\t\t\tif (!accepts(m.category)) continue;\n\t\t\tconst entry = maskCoverage.get(m.category) ?? {\n\t\t\t\tsum: 0,\n\t\t\t\tcount: 0\n\t\t\t};\n\t\t\tentry.sum += m.coverage;\n\t\t\tentry.count++;\n\t\t\tmaskCoverage.set(m.category, entry);\n\t\t}\n\t};\n\tfor await (const frame of frames) {\n\t\tlet detections = [];\n\t\tif (includeMasks) {\n\t\t\tconst seg = await runTask(\"segment\", frame, () => runner.segment(frame));\n\t\t\trecordMasks(seg.masks);\n\t\t\tdetections = seg.detections;\n\t\t} else if (tracksObjects) detections = await runTask(\"detect\", frame, () => runner.detect(frame));\n\t\tif (taskSet.has(\"pose\")) await runTask(\"pose\", frame, () => runner.pose(frame));\n\t\tif (taskSet.has(\"matte\")) await runTask(\"matte\", frame, () => runner.matte(frame));\n\t\tperFrameDetections.push(categoryFilter ? detections.filter((d) => accepts(d.category)) : detections);\n\t\tframeIndex++;\n\t}\n\tconst totalFrames = frameIndex;\n\tconst trackedPerFrame = new TemporalObjectTracker({\n\t\tiouThreshold: options.iouThreshold ?? .25,\n\t\tmaxMissedFrames: options.maxMissedFrames ?? 15\n\t}).trackSequence(perFrameDetections, totalFrames, fps);\n\tconst pathStride = options.pathStride ?? Math.max(1, Math.ceil(totalFrames / 50));\n\tconst tracks = /* @__PURE__ */ new Map();\n\tconst classPresentFrames = /* @__PURE__ */ new Map();\n\tconst classMaxConfidence = /* @__PURE__ */ new Map();\n\tconst classTrackIds = /* @__PURE__ */ new Map();\n\tconst getOrCreate = (map, key, make) => {\n\t\tlet value = map.get(key);\n\t\tif (value === void 0) {\n\t\t\tvalue = make();\n\t\t\tmap.set(key, value);\n\t\t}\n\t\treturn value;\n\t};\n\tfor (let f = 0; f < totalFrames; f++) for (const obj of trackedPerFrame[f] ?? []) {\n\t\tif (!accepts(obj.category)) continue;\n\t\tlet acc = tracks.get(obj.trackId);\n\t\tif (!acc) {\n\t\t\tacc = {\n\t\t\t\tcategory: obj.category,\n\t\t\t\tfirstFrame: f,\n\t\t\t\tlastFrame: f,\n\t\t\t\tspeedSum: 0,\n\t\t\t\tspeedCount: 0,\n\t\t\t\tcenters: []\n\t\t\t};\n\t\t\ttracks.set(obj.trackId, acc);\n\t\t}\n\t\tacc.lastFrame = f;\n\t\tif (Number.isFinite(obj.speed)) {\n\t\t\tacc.speedSum += obj.speed;\n\t\t\tacc.speedCount++;\n\t\t}\n\t\tif ((f - acc.firstFrame) % pathStride === 0) acc.centers.push({\n\t\t\tframe: f,\n\t\t\tx: obj.centerX,\n\t\t\ty: obj.centerY\n\t\t});\n\t\tgetOrCreate(classPresentFrames, obj.category, () => /* @__PURE__ */ new Set()).add(f);\n\t\tclassMaxConfidence.set(obj.category, Math.max(classMaxConfidence.get(obj.category) ?? 0, obj.score));\n\t\tgetOrCreate(classTrackIds, obj.category, () => /* @__PURE__ */ new Set()).add(obj.trackId);\n\t}\n\tconst trackSummaries = Array.from(tracks.entries()).map(([trackId, acc]) => ({\n\t\ttrackId,\n\t\tcategory: acc.category,\n\t\tframes: [acc.firstFrame, acc.lastFrame],\n\t\tspeedMeanPxS: acc.speedCount > 0 ? acc.speedSum / acc.speedCount : 0,\n\t\tcenterPath: acc.centers.map((c) => [c.x, c.y])\n\t})).sort((a, b) => a.trackId - b.trackId);\n\tconst classes = {};\n\tfor (const [category, frameSet] of classPresentFrames) classes[category] = {\n\t\tframesPresent: frameSet.size,\n\t\ttotalFrames,\n\t\tmaxConfidence: classMaxConfidence.get(category) ?? 0,\n\t\ttracks: classTrackIds.get(category)?.size ?? 0\n\t};\n\tconst masks = {};\n\tfor (const [category, entry] of maskCoverage) masks[category] = { meanCoverage: entry.count > 0 ? entry.sum / entry.count : 0 };\n\treturn {\n\t\tsource: options.source ?? \"frames\",\n\t\ttotalFrames,\n\t\tfps,\n\t\tdurationSec: fps > 0 ? totalFrames / fps : 0,\n\t\ttasks: Array.from(taskSet),\n\t\tmodelDownloads,\n\t\tinferenceMs,\n\t\ttrackCount: trackSummaries.length,\n\t\tclasses,\n\t\ttracks: trackSummaries,\n\t\tmasks\n\t};\n}\n\n//#endregion\n//#region src/decode/preprocess.ts\nconst IMAGENET_BGR_MEAN = [\n\t103.53,\n\t116.28,\n\t123.675\n];\nconst IMAGENET_BGR_STD = [\n\t57.375,\n\t57.12,\n\t58.395\n];\n/** Per-family normalization; the input size always comes from the model's registry entry. */\nconst PREPROCESS_BY_FAMILY = {\n\t\"rtmdet-ins\": {\n\t\tfit: \"topLeft\",\n\t\tchannels: \"bgr\",\n\t\tmean: IMAGENET_BGR_MEAN,\n\t\tstd: IMAGENET_BGR_STD,\n\t\tpadValue: 114\n\t},\n\trtmo: {\n\t\tfit: \"center\",\n\t\tchannels: \"bgr\",\n\t\tmean: [\n\t\t\t0,\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\tstd: [\n\t\t\t1,\n\t\t\t1,\n\t\t\t1\n\t\t],\n\t\tpadValue: 114\n\t},\n\tselfie: {\n\t\tfit: \"stretch\",\n\t\tchannels: \"rgb\",\n\t\tmean: [\n\t\t\t0,\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\tstd: [\n\t\t\t255,\n\t\t\t255,\n\t\t\t255\n\t\t],\n\t\tpadValue: 0\n\t}\n};\n/** True for the families `VisionRunner` can preprocess and decode itself. */\nfunction isPreprocessFamily(family) {\n\treturn Object.hasOwn(PREPROCESS_BY_FAMILY, family);\n}\nfunction preprocessSpec(family, input) {\n\treturn {\n\t\t...PREPROCESS_BY_FAMILY[family],\n\t\twidth: input[0],\n\t\theight: input[1]\n\t};\n}\nfunction computeInputTransform(srcW, srcH, spec) {\n\tif (spec.fit === \"stretch\") return {\n\t\tscaleX: spec.width / srcW,\n\t\tscaleY: spec.height / srcH,\n\t\toffsetX: 0,\n\t\toffsetY: 0,\n\t\tinputWidth: spec.width,\n\t\tinputHeight: spec.height\n\t};\n\tconst scale = Math.min(spec.width / srcW, spec.height / srcH);\n\tconst contentW = Math.round(srcW * scale);\n\tconst contentH = Math.round(srcH * scale);\n\tconst center = spec.fit === \"center\";\n\treturn {\n\t\tscaleX: scale,\n\t\tscaleY: scale,\n\t\toffsetX: center ? (spec.width - contentW) / 2 : 0,\n\t\toffsetY: center ? (spec.height - contentH) / 2 : 0,\n\t\tinputWidth: spec.width,\n\t\tinputHeight: spec.height\n\t};\n}\n/** Model-input point → source pixel point. */\nfunction toSourcePoint(x, y, t) {\n\treturn {\n\t\tx: (x - t.offsetX) / t.scaleX,\n\t\ty: (y - t.offsetY) / t.scaleY\n\t};\n}\n/**\n* Resizes RGBA → NCHW float32 `[1, 3, height, width]` with bilinear sampling, padding,\n* channel reordering and normalization per `spec`. Reuses `out` when large enough\n* (hot-path frame loop).\n*/\nfunction imageToTensor(image, spec, out) {\n\tconst { width: srcW, height: srcH, data: src } = image;\n\tconst { width: W, height: H } = spec;\n\tconst transform = computeInputTransform(srcW, srcH, spec);\n\tconst { scaleX, scaleY, offsetX, offsetY } = transform;\n\tconst plane = W * H;\n\tif (!out || out.length < 3 * plane) out = new Float32Array(3 * plane);\n\tconst order = spec.channels === \"bgr\" ? [\n\t\t2,\n\t\t1,\n\t\t0\n\t] : [\n\t\t0,\n\t\t1,\n\t\t2\n\t];\n\tconst [m0, m1, m2] = spec.mean;\n\tconst inv0 = 1 / spec.std[0];\n\tconst inv1 = 1 / spec.std[1];\n\tconst inv2 = 1 / spec.std[2];\n\tconst pad0 = (spec.padValue - m0) * inv0;\n\tconst pad1 = (spec.padValue - m1) * inv1;\n\tconst pad2 = (spec.padValue - m2) * inv2;\n\tconst [c0, c1, c2] = order;\n\tconst x0 = Math.ceil(offsetX);\n\tconst y0 = Math.ceil(offsetY);\n\tconst x1 = Math.min(W, Math.floor(offsetX + srcW * scaleX)) - 1;\n\tconst y1 = Math.min(H, Math.floor(offsetY + srcH * scaleY)) - 1;\n\tfor (let y = 0; y < H; y++) {\n\t\tconst rowBase = y * W;\n\t\tconst paddedRow = y < y0 || y > y1;\n\t\tconst sy = Math.max(0, (y + .5 - offsetY) / scaleY - .5);\n\t\tconst iy0 = Math.min(srcH - 1, Math.floor(sy));\n\t\tconst iy1 = Math.min(srcH - 1, iy0 + 1);\n\t\tconst fy = sy - iy0;\n\t\tfor (let x = 0; x < W; x++) {\n\t\t\tconst o = rowBase + x;\n\t\t\tif (paddedRow || x < x0 || x > x1) {\n\t\t\t\tout[o] = pad0;\n\t\t\t\tout[plane + o] = pad1;\n\t\t\t\tout[2 * plane + o] = pad2;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst sx = Math.max(0, (x + .5 - offsetX) / scaleX - .5);\n\t\t\tconst ix0 = Math.min(srcW - 1, Math.floor(sx));\n\t\t\tconst ix1 = Math.min(srcW - 1, ix0 + 1);\n\t\t\tconst fx = sx - ix0;\n\t\t\tconst i00 = (iy0 * srcW + ix0) * 4;\n\t\t\tconst i10 = (iy0 * srcW + ix1) * 4;\n\t\t\tconst i01 = (iy1 * srcW + ix0) * 4;\n\t\t\tconst i11 = (iy1 * srcW + ix1) * 4;\n\t\t\tconst w00 = (1 - fx) * (1 - fy);\n\t\t\tconst w10 = fx * (1 - fy);\n\t\t\tconst w01 = (1 - fx) * fy;\n\t\t\tconst w11 = fx * fy;\n\t\t\tout[o] = (src[i00 + c0] * w00 + src[i10 + c0] * w10 + src[i01 + c0] * w01 + src[i11 + c0] * w11 - m0) * inv0;\n\t\t\tout[plane + o] = (src[i00 + c1] * w00 + src[i10 + c1] * w10 + src[i01 + c1] * w01 + src[i11 + c1] * w11 - m1) * inv1;\n\t\t\tout[2 * plane + o] = (src[i00 + c2] * w00 + src[i10 + c2] * w10 + src[i01 + c2] * w01 + src[i11 + c2] * w11 - m2) * inv2;\n\t\t}\n\t}\n\treturn {\n\t\ttensor: out,\n\t\ttransform\n\t};\n}\n\n//#endregion\n//#region src/decode/rtmdet-ins.ts\n/** Source pixels a mask may extend past its box (instance masks are not box-clipped). */\nconst MASK_BOX_PAD_PX = 8;\nfunction decodeRtmdetIns(out, opts) {\n\tconst { sourceWidth: sw, sourceHeight: sh, transform } = opts;\n\tconst classFilter = opts.classes ? new Set(opts.classes.map((c) => c.toLowerCase())) : null;\n\tconst kept = [];\n\tfor (let i = 0; i < out.count; i++) {\n\t\tconst score = out.dets[i * 5 + 4];\n\t\tif (!(score >= opts.confidence)) continue;\n\t\tconst classIndex = Number(out.labels[i]);\n\t\tconst category = opts.classNames[classIndex] ?? `class_${classIndex}`;\n\t\tif (classFilter && !classFilter.has(category.toLowerCase())) continue;\n\t\tconst p0 = toSourcePoint(out.dets[i * 5], out.dets[i * 5 + 1], transform);\n\t\tconst p1 = toSourcePoint(out.dets[i * 5 + 2], out.dets[i * 5 + 3], transform);\n\t\tconst x0 = clamp$1(p0.x, 0, sw);\n\t\tconst y0 = clamp$1(p0.y, 0, sh);\n\t\tconst width = clamp$1(p1.x, 0, sw) - x0;\n\t\tconst height = clamp$1(p1.y, 0, sh) - y0;\n\t\tif (width <= 0 || height <= 0) continue;\n\t\tkept.push({\n\t\t\tindex: i,\n\t\t\tdetection: {\n\t\t\t\tcategory,\n\t\t\t\tscore,\n\t\t\t\tboundingBox: {\n\t\t\t\t\toriginX: x0,\n\t\t\t\t\toriginY: y0,\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t\tnormalizedX: x0 / sw,\n\t\t\t\t\tnormalizedY: y0 / sh,\n\t\t\t\t\tnormalizedWidth: width / sw,\n\t\t\t\t\tnormalizedHeight: height / sh\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tkept.sort((a, b) => b.detection.score - a.detection.score);\n\tconst detections = kept.map((k) => k.detection);\n\tconst masks = [];\n\tif (!out.masks && !out.maskPlane) return {\n\t\tdetections,\n\t\tmasks\n\t};\n\tconst threshold = opts.maskThreshold ?? .5;\n\tconst feather = opts.featherRadius ?? .05;\n\tconst alphaOf = out.maskLogits ? logitToAlpha(threshold, feather) : probabilityToAlpha(threshold, feather);\n\tconst { maskWidth: mw, maskHeight: mh } = out;\n\tconst plane = mw * mh;\n\tconst gx = mw / transform.inputWidth;\n\tconst gy = mh / transform.inputHeight;\n\tfor (let d = 0; d < kept.length; d++) {\n\t\tconst { index, detection } = kept[d];\n\t\tconst box = detection.boundingBox;\n\t\tconst data = out.maskPlane ? out.maskPlane(index) : out.masks;\n\t\tconst base = out.maskPlane ? 0 : index * plane;\n\t\tconst bx0 = Math.max(0, Math.floor(box.originX) - MASK_BOX_PAD_PX);\n\t\tconst by0 = Math.max(0, Math.floor(box.originY) - MASK_BOX_PAD_PX);\n\t\tconst bx1 = Math.min(sw - 1, Math.ceil(box.originX + box.width) + MASK_BOX_PAD_PX);\n\t\tconst by1 = Math.min(sh - 1, Math.ceil(box.originY + box.height) + MASK_BOX_PAD_PX);\n\t\tconst mask = new Uint8Array(sw * sh);\n\t\tlet area = 0;\n\t\tfor (let sy = by0; sy <= by1; sy++) {\n\t\t\tconst my = ((sy + .5) * transform.scaleY + transform.offsetY) * gy - .5;\n\t\t\tconst my0 = clamp$1(Math.floor(my), 0, mh - 1);\n\t\t\tconst my1 = Math.min(mh - 1, my0 + 1);\n\t\t\tconst fy = clamp$1(my - my0, 0, 1);\n\t\t\tconst row = sy * sw;\n\t\t\tfor (let sx = bx0; sx <= bx1; sx++) {\n\t\t\t\tconst mx = ((sx + .5) * transform.scaleX + transform.offsetX) * gx - .5;\n\t\t\t\tconst mx0 = clamp$1(Math.floor(mx), 0, mw - 1);\n\t\t\t\tconst mx1 = Math.min(mw - 1, mx0 + 1);\n\t\t\t\tconst fx = clamp$1(mx - mx0, 0, 1);\n\t\t\t\tconst alpha = alphaOf(data[base + my0 * mw + mx0] * (1 - fx) * (1 - fy) + data[base + my0 * mw + mx1] * fx * (1 - fy) + data[base + my1 * mw + mx0] * (1 - fx) * fy + data[base + my1 * mw + mx1] * fx * fy);\n\t\t\t\tif (alpha > 0) {\n\t\t\t\t\tmask[row + sx] = alpha;\n\t\t\t\t\tarea += alpha / 255;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tarea = Math.round(area);\n\t\tif (area === 0) continue;\n\t\tmasks.push({\n\t\t\tcategory: detection.category,\n\t\t\tmask,\n\t\t\twidth: sw,\n\t\t\theight: sh,\n\t\t\tarea,\n\t\t\tcoverage: area / (sw * sh),\n\t\t\tdetectionIndex: d\n\t\t});\n\t}\n\treturn {\n\t\tdetections,\n\t\tmasks\n\t};\n}\n/**\n* Probability → 0..255 alpha. A hard threshold when `feather` is 0, otherwise a linear ramp\n* across `[threshold − feather, threshold + feather]` for anti-aliased edges.\n*/\nfunction probabilityToAlpha(threshold, feather) {\n\tif (feather <= 0) return (p) => p > threshold ? 255 : 0;\n\tconst lo = threshold - feather;\n\tconst inv = 255 / (2 * feather);\n\treturn (p) => p <= lo ? 0 : p >= threshold + feather ? 255 : (p - lo) * inv;\n}\n/**\n* Logit → 0..255 alpha: `probabilityToAlpha` after a sigmoid, which is only\n* evaluated inside the feather band.\n*/\nfunction logitToAlpha(threshold, feather) {\n\tconst toAlpha = probabilityToAlpha(threshold, feather);\n\tconst logit = (p) => p <= 0 ? -Infinity : p >= 1 ? Infinity : Math.log(p / (1 - p));\n\tif (feather <= 0) {\n\t\tconst edge = logit(threshold);\n\t\treturn (l) => l > edge ? 255 : 0;\n\t}\n\tconst lo = logit(threshold - feather);\n\tconst hi = logit(threshold + feather);\n\treturn (l) => l <= lo ? 0 : l >= hi ? 255 : toAlpha(1 / (1 + Math.exp(-l)));\n}\nfunction clamp$1(v, lo, hi) {\n\treturn v < lo ? lo : v > hi ? hi : v;\n}\n\n//#endregion\n//#region src/decode/rtmo.ts\nconst COCO17_KEYPOINT_COUNT = 17;\n/** Keypoint visibility at which a joint counts as seen. */\nconst VISIBLE = .3;\nfunction decodeRtmo(out, opts) {\n\tconst { sourceWidth: sw, sourceHeight: sh, transform } = opts;\n\tconst stride = out.keypointStride;\n\tconst people = [];\n\tfor (let i = 0; i < out.count; i++) {\n\t\tconst score = out.dets[i * 5 + 4];\n\t\tif (!(score >= opts.confidence)) continue;\n\t\tconst p0 = toSourcePoint(out.dets[i * 5], out.dets[i * 5 + 1], transform);\n\t\tconst p1 = toSourcePoint(out.dets[i * 5 + 2], out.dets[i * 5 + 3], transform);\n\t\tconst x0 = clamp(p0.x, 0, sw);\n\t\tconst y0 = clamp(p0.y, 0, sh);\n\t\tconst width = clamp(p1.x, 0, sw) - x0;\n\t\tconst height = clamp(p1.y, 0, sh) - y0;\n\t\tif (width <= 0 || height <= 0) continue;\n\t\tconst keypoints = [];\n\t\tconst base = i * COCO17_KEYPOINT_COUNT * stride;\n\t\tfor (let k = 0; k < COCO17_KEYPOINT_COUNT; k++) {\n\t\t\tconst o = base + k * stride;\n\t\t\tconst p = toSourcePoint(out.keypoints[o], out.keypoints[o + 1], transform);\n\t\t\tkeypoints.push({\n\t\t\t\tx: clamp(p.x, 0, sw),\n\t\t\t\ty: clamp(p.y, 0, sh),\n\t\t\t\tvisibility: clamp(out.keypoints[o + 2], 0, 1)\n\t\t\t});\n\t\t}\n\t\tlet visible = 0;\n\t\tfor (const k of keypoints) if (k.visibility >= VISIBLE) visible++;\n\t\tif (visible < (opts.minVisibleKeypoints ?? 3)) continue;\n\t\tpeople.push({\n\t\t\tscore,\n\t\t\tboundingBox: {\n\t\t\t\toriginX: x0,\n\t\t\t\toriginY: y0,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tnormalizedX: x0 / sw,\n\t\t\t\tnormalizedY: y0 / sh,\n\t\t\t\tnormalizedWidth: width / sw,\n\t\t\t\tnormalizedHeight: height / sh\n\t\t\t},\n\t\t\tkeypoints\n\t\t});\n\t}\n\tpeople.sort((a, b) => b.score - a.score);\n\tconst iou$1 = opts.iouThreshold ?? .6;\n\tconst kept = [];\n\tfor (const p of people) if (!kept.some((k) => isDuplicate(k, p, iou$1))) kept.push(p);\n\treturn { people: kept };\n}\nfunction clamp(v, lo, hi) {\n\treturn v < lo ? lo : v > hi ? hi : v;\n}\n/**\n* Same person twice: boxes overlap above `iou`, or the joints both detections can see sit\n* within 10% of the stronger detection's box size of each other (boxes may differ when one\n* of them also covers a flowing garment or a shadow).\n*/\nfunction isDuplicate(a, b, iou$1) {\n\tif (computeIoU(a.boundingBox, b.boundingBox) > iou$1) return true;\n\tconst scale = Math.sqrt(a.boundingBox.width * a.boundingBox.height);\n\tlet sum = 0;\n\tlet n = 0;\n\tfor (let k = 0; k < a.keypoints.length; k++) {\n\t\tconst ka = a.keypoints[k];\n\t\tconst kb = b.keypoints[k];\n\t\tif (ka.visibility < VISIBLE || kb.visibility < VISIBLE) continue;\n\t\tsum += Math.hypot(ka.x - kb.x, ka.y - kb.y);\n\t\tn++;\n\t}\n\treturn n >= 3 && sum / n < .1 * scale;\n}\n\n//#endregion\n//#region src/decode/selfie.ts\nfunction decodeSelfie(alphas, matteWidth, matteHeight, opts) {\n\tconst { sourceWidth: sw, sourceHeight: sh } = opts;\n\tconst alphaOf = probabilityToAlpha(opts.maskThreshold ?? .5, opts.featherRadius ?? .2);\n\tconst mask = new Uint8Array(sw * sh);\n\tconst kx = matteWidth / sw;\n\tconst ky = matteHeight / sh;\n\tlet sum = 0;\n\tfor (let y = 0; y < sh; y++) {\n\t\tconst my = Math.max(0, (y + .5) * ky - .5);\n\t\tconst my0 = Math.min(matteHeight - 1, Math.floor(my));\n\t\tconst my1 = Math.min(matteHeight - 1, my0 + 1);\n\t\tconst fy = my - my0;\n\t\tfor (let x = 0; x < sw; x++) {\n\t\t\tconst mx = Math.max(0, (x + .5) * kx - .5);\n\t\t\tconst mx0 = Math.min(matteWidth - 1, Math.floor(mx));\n\t\t\tconst mx1 = Math.min(matteWidth - 1, mx0 + 1);\n\t\t\tconst fx = mx - mx0;\n\t\t\tconst a = alphaOf(alphas[my0 * matteWidth + mx0] * (1 - fx) * (1 - fy) + alphas[my0 * matteWidth + mx1] * fx * (1 - fy) + alphas[my1 * matteWidth + mx0] * (1 - fx) * fy + alphas[my1 * matteWidth + mx1] * fx * fy);\n\t\t\tmask[y * sw + x] = a;\n\t\t\tsum += a;\n\t\t}\n\t}\n\treturn {\n\t\tmask,\n\t\twidth: sw,\n\t\theight: sh,\n\t\tcoverage: sw * sh > 0 ? sum / (255 * sw * sh) : 0\n\t};\n}\n\n//#endregion\n//#region src/gpu/frame-tensor.ts\n/**\n* Frame preprocessing on the GPU: a texture becomes a model's NCHW float input\n* in a storage buffer, so a frame drawn by the renderer reaches the model\n* without a round trip through the CPU. The math is `imageToTensor`'s\n* (pixel-centre bilinear sampling, letterbox padding, channel order,\n* normalisation); see decode/preprocess.ts for the per-model contracts.\n*\n* Also: a content hash of a texture (two order-independent 32-bit sums, read\n* back as 8 bytes), so layers showing the same pixels can share a pass, and a\n* plain RGBA readback for paths that need pixels on the CPU.\n*/\nconst TENSOR_WGSL = `\nstruct Params {\n\tsrc: vec2u,\n\tdst: vec2u,\n\tscale: vec2f,\n\toffset: vec2f,\n\tlo: vec2i,\n\thi: vec2i,\n\tmean: vec4f,\n\tinvStd: vec4f,\n\tpad: vec4f,\n\torder: vec4u,\n};\n\n@group(0) @binding(0) var<uniform> p: Params;\n@group(0) @binding(1) var src: texture_2d<f32>;\n@group(0) @binding(2) var<storage, read_write> dst: array<f32>;\n\n@compute @workgroup_size(16, 16)\nfn main(@builtin(global_invocation_id) id: vec3u) {\n\tif (id.x >= p.dst.x || id.y >= p.dst.y) { return; }\n\tlet x = i32(id.x);\n\tlet y = i32(id.y);\n\tlet plane = p.dst.x * p.dst.y;\n\tlet o = id.y * p.dst.x + id.x;\n\tvar v = p.pad.xyz;\n\tif (x >= p.lo.x && x <= p.hi.x && y >= p.lo.y && y <= p.hi.y) {\n\t\tlet maxX = i32(p.src.x) - 1;\n\t\tlet maxY = i32(p.src.y) - 1;\n\t\tlet sy = max(0.0, (f32(y) + 0.5 - p.offset.y) / p.scale.y - 0.5);\n\t\tlet iy0 = min(maxY, i32(floor(sy)));\n\t\tlet iy1 = min(maxY, iy0 + 1);\n\t\tlet fy = sy - f32(iy0);\n\t\tlet sx = max(0.0, (f32(x) + 0.5 - p.offset.x) / p.scale.x - 0.5);\n\t\tlet ix0 = min(maxX, i32(floor(sx)));\n\t\tlet ix1 = min(maxX, ix0 + 1);\n\t\tlet fx = sx - f32(ix0);\n\t\tvar rgba =\n\t\t\ttextureLoad(src, vec2i(ix0, iy0), 0) * ((1.0 - fx) * (1.0 - fy)) +\n\t\t\ttextureLoad(src, vec2i(ix1, iy0), 0) * (fx * (1.0 - fy)) +\n\t\t\ttextureLoad(src, vec2i(ix0, iy1), 0) * ((1.0 - fx) * fy) +\n\t\t\ttextureLoad(src, vec2i(ix1, iy1), 0) * (fx * fy);\n\t\trgba = rgba * 255.0;\n\t\tlet s = vec3f(rgba[p.order.x], rgba[p.order.y], rgba[p.order.z]);\n\t\tv = (s - p.mean.xyz) * p.invStd.xyz;\n\t}\n\tdst[o] = v.x;\n\tdst[plane + o] = v.y;\n\tdst[2u * plane + o] = v.z;\n}\n`;\nconst HASH_WGSL = `\n@group(0) @binding(0) var src: texture_2d<f32>;\n@group(0) @binding(1) var<storage, read_write> acc: array<atomic<u32>, 2>;\n\nvar<workgroup> local: array<atomic<u32>, 2>;\n\n@compute @workgroup_size(16, 16)\nfn main(\n\t@builtin(global_invocation_id) id: vec3u,\n\t@builtin(local_invocation_index) li: u32,\n) {\n\tlet dim = textureDimensions(src);\n\tif (id.x < dim.x && id.y < dim.y) {\n\t\tlet c = pack4x8unorm(textureLoad(src, vec2i(id.xy), 0));\n\t\tlet i = id.y * dim.x + id.x;\n\t\tlet a = (c ^ (i * 0x9e3779b9u)) * 0x85ebca6bu;\n\t\tlet b = (c + i * 0xc2b2ae35u) * 0x27d4eb2fu;\n\t\tatomicAdd(&local[0], a ^ (a >> 15u));\n\t\tatomicAdd(&local[1], b ^ (b >> 13u));\n\t}\n\tworkgroupBarrier();\n\tif (li == 0u) {\n\t\tatomicAdd(&acc[0], atomicLoad(&local[0]));\n\t\tatomicAdd(&acc[1], atomicLoad(&local[1]));\n\t}\n}\n`;\nconst PARAMS_BYTES = 112;\nconst pipelines = /* @__PURE__ */ new WeakMap();\nvar FrameTensorPipeline = class FrameTensorPipeline {\n\ttensorPipeline;\n\thashPipeline;\n\tparams;\n\t/** One per device. */\n\tstatic for(device) {\n\t\tlet pipeline = pipelines.get(device);\n\t\tif (!pipeline) {\n\t\t\tpipeline = new FrameTensorPipeline(device);\n\t\t\tpipelines.set(device, pipeline);\n\t\t}\n\t\treturn pipeline;\n\t}\n\tconstructor(device) {\n\t\tthis.device = device;\n\t\tthis.tensorPipeline = device.createComputePipeline({\n\t\t\tlabel: \"vision_frame_tensor\",\n\t\t\tlayout: \"auto\",\n\t\t\tcompute: {\n\t\t\t\tmodule: device.createShaderModule({ code: TENSOR_WGSL }),\n\t\t\t\tentryPoint: \"main\"\n\t\t\t}\n\t\t});\n\t\tthis.hashPipeline = device.createComputePipeline({\n\t\t\tlabel: \"vision_frame_hash\",\n\t\t\tlayout: \"auto\",\n\t\t\tcompute: {\n\t\t\t\tmodule: device.createShaderModule({ code: HASH_WGSL }),\n\t\t\t\tentryPoint: \"main\"\n\t\t\t}\n\t\t});\n\t\tthis.params = device.createBuffer({\n\t\t\tlabel: \"vision_frame_tensor_params\",\n\t\t\tsize: PARAMS_BYTES,\n\t\t\tusage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST\n\t\t});\n\t}\n\t/** Bytes of the NCHW float tensor for `spec`. */\n\tstatic tensorBytes(spec) {\n\t\treturn 3 * spec.width * spec.height * 4;\n\t}\n\t/**\n\t* Writes `image` as the model input described by `spec` into `out` (at least\n\t* `tensorBytes(spec)`, STORAGE usage). Submits its own command buffer, so it\n\t* runs before anything submitted later (e.g. the inference reading `out`).\n\t*/\n\ttoTensor(image, spec, out) {\n\t\tconst transform = computeInputTransform(image.width, image.height, spec);\n\t\tconst { scaleX, scaleY, offsetX, offsetY } = transform;\n\t\tconst params = new ArrayBuffer(PARAMS_BYTES);\n\t\tconst u32 = new Uint32Array(params);\n\t\tconst f32 = new Float32Array(params);\n\t\tconst i32 = new Int32Array(params);\n\t\tu32.set([\n\t\t\timage.width,\n\t\t\timage.height,\n\t\t\tspec.width,\n\t\t\tspec.height\n\t\t], 0);\n\t\tf32.set([\n\t\t\tscaleX,\n\t\t\tscaleY,\n\t\t\toffsetX,\n\t\t\toffsetY\n\t\t], 4);\n\t\ti32.set([\n\t\t\tMath.ceil(offsetX),\n\t\t\tMath.ceil(offsetY),\n\t\t\tMath.min(spec.width, Math.floor(offsetX + image.width * scaleX)) - 1,\n\t\t\tMath.min(spec.height, Math.floor(offsetY + image.height * scaleY)) - 1\n\t\t], 8);\n\t\tconst inv = spec.std.map((s) => 1 / s);\n\t\tf32.set([...spec.mean, 0], 12);\n\t\tf32.set([...inv, 0], 16);\n\t\tf32.set([\n\t\t\t0,\n\t\t\t1,\n\t\t\t2\n\t\t].map((c) => (spec.padValue - spec.mean[c]) * inv[c]), 20);\n\t\tu32.set(spec.channels === \"bgr\" ? [\n\t\t\t2,\n\t\t\t1,\n\t\t\t0,\n\t\t\t3\n\t\t] : [\n\t\t\t0,\n\t\t\t1,\n\t\t\t2,\n\t\t\t3\n\t\t], 24);\n\t\tthis.device.queue.writeBuffer(this.params, 0, params);\n\t\tconst encoder$1 = this.device.createCommandEncoder({ label: \"vision_frame_tensor\" });\n\t\tconst pass = encoder$1.beginComputePass();\n\t\tpass.setPipeline(this.tensorPipeline);\n\t\tpass.setBindGroup(0, this.device.createBindGroup({\n\t\t\tlayout: this.tensorPipeline.getBindGroupLayout(0),\n\t\t\tentries: [\n\t\t\t\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: { buffer: this.params }\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: image.texture.createView()\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: { buffer: out }\n\t\t\t\t}\n\t\t\t]\n\t\t}));\n\t\tpass.dispatchWorkgroups(Math.ceil(spec.width / 16), Math.ceil(spec.height / 16));\n\t\tpass.end();\n\t\tthis.device.queue.submit([encoder$1.finish()]);\n\t\treturn transform;\n\t}\n\t/** A key that is equal for textures with equal size and pixels. */\n\tasync contentKey(image) {\n\t\tconst acc = this.device.createBuffer({\n\t\t\tsize: 8,\n\t\t\tusage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC\n\t\t});\n\t\tconst staging = this.device.createBuffer({\n\t\t\tsize: 8,\n\t\t\tusage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST\n\t\t});\n\t\tconst encoder$1 = this.device.createCommandEncoder({ label: \"vision_frame_hash\" });\n\t\tconst pass = encoder$1.beginComputePass();\n\t\tpass.setPipeline(this.hashPipeline);\n\t\tpass.setBindGroup(0, this.device.createBindGroup({\n\t\t\tlayout: this.hashPipeline.getBindGroupLayout(0),\n\t\t\tentries: [{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: image.texture.createView()\n\t\t\t}, {\n\t\t\t\tbinding: 1,\n\t\t\t\tresource: { buffer: acc }\n\t\t\t}]\n\t\t}));\n\t\tpass.dispatchWorkgroups(Math.ceil(image.width / 16), Math.ceil(image.height / 16));\n\t\tpass.end();\n\t\tencoder$1.copyBufferToBuffer(acc, 0, staging, 0, 8);\n\t\tthis.device.queue.submit([encoder$1.finish()]);\n\t\tawait staging.mapAsync(GPUMapMode.READ);\n\t\tconst [a, b] = new Uint32Array(staging.getMappedRange().slice(0));\n\t\tstaging.unmap();\n\t\tstaging.destroy();\n\t\tacc.destroy();\n\t\treturn `${image.width}x${image.height}:gpu:${a.toString(36)}:${b.toString(36)}`;\n\t}\n};\n/** Reads an 8-bit RGBA/BGRA texture back as RGBA pixels. */\nasync function readTexturePixels(image) {\n\tconst { device, texture, width, height } = image;\n\tconst unaligned = width * 4;\n\tconst bytesPerRow = Math.ceil(unaligned / 256) * 256;\n\tconst staging = device.createBuffer({\n\t\tsize: bytesPerRow * height,\n\t\tusage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,\n\t\tlabel: \"vision_frame_readback\"\n\t});\n\tconst encoder$1 = device.createCommandEncoder({ label: \"vision_frame_readback\" });\n\tencoder$1.copyTextureToBuffer({ texture }, {\n\t\tbuffer: staging,\n\t\tbytesPerRow,\n\t\trowsPerImage: height\n\t}, [\n\t\twidth,\n\t\theight,\n\t\t1\n\t]);\n\tdevice.queue.submit([encoder$1.finish()]);\n\tawait staging.mapAsync(GPUMapMode.READ);\n\tconst mapped = new Uint8Array(staging.getMappedRange());\n\tconst data = new Uint8ClampedArray(width * height * 4);\n\tfor (let y = 0; y < height; y++) data.set(mapped.subarray(y * bytesPerRow, y * bytesPerRow + unaligned), y * unaligned);\n\tstaging.unmap();\n\tstaging.destroy();\n\tif (texture.format.startsWith(\"bgra\")) for (let i = 0; i < data.length; i += 4) {\n\t\tconst b = data[i];\n\t\tdata[i] = data[i + 2];\n\t\tdata[i + 2] = b;\n\t}\n\treturn {\n\t\tdata,\n\t\twidth,\n\t\theight\n\t};\n}\n\n//#endregion\n//#region src/pose/keypoints.ts\n/** COCO-17 keypoint indices (RTMO output order). */\nconst COCO17_KEYPOINTS = {\n\tNOSE: 0,\n\tLEFT_EYE: 1,\n\tRIGHT_EYE: 2,\n\tLEFT_EAR: 3,\n\tRIGHT_EAR: 4,\n\tLEFT_SHOULDER: 5,\n\tRIGHT_SHOULDER: 6,\n\tLEFT_ELBOW: 7,\n\tRIGHT_ELBOW: 8,\n\tLEFT_WRIST: 9,\n\tRIGHT_WRIST: 10,\n\tLEFT_HIP: 11,\n\tRIGHT_HIP: 12,\n\tLEFT_KNEE: 13,\n\tRIGHT_KNEE: 14,\n\tLEFT_ANKLE: 15,\n\tRIGHT_ANKLE: 16\n};\nconst COCO17_KEYPOINT_NAMES = [\n\t\"nose\",\n\t\"leftEye\",\n\t\"rightEye\",\n\t\"leftEar\",\n\t\"rightEar\",\n\t\"leftShoulder\",\n\t\"rightShoulder\",\n\t\"leftElbow\",\n\t\"rightElbow\",\n\t\"leftWrist\",\n\t\"rightWrist\",\n\t\"leftHip\",\n\t\"rightHip\",\n\t\"leftKnee\",\n\t\"rightKnee\",\n\t\"leftAnkle\",\n\t\"rightAnkle\"\n];\n/** COCO-17 skeleton bones for the WebGPU skeleton renderer (indices above). */\nconst COCO17_BONES = [\n\t{\n\t\tfrom: COCO17_KEYPOINTS.NOSE,\n\t\tto: COCO17_KEYPOINTS.LEFT_SHOULDER,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t1,\n\t\t\t1,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.NOSE,\n\t\tto: COCO17_KEYPOINTS.RIGHT_SHOULDER,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t1,\n\t\t\t1,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.LEFT_SHOULDER,\n\t\tto: COCO17_KEYPOINTS.RIGHT_SHOULDER,\n\t\tcolor: [\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.LEFT_SHOULDER,\n\t\tto: COCO17_KEYPOINTS.LEFT_ELBOW,\n\t\tcolor: [\n\t\t\t1,\n\t\t\t.333,\n\t\t\t0,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.LEFT_ELBOW,\n\t\tto: COCO17_KEYPOINTS.LEFT_WRIST,\n\t\tcolor: [\n\t\t\t1,\n\t\t\t.667,\n\t\t\t0,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.RIGHT_SHOULDER,\n\t\tto: COCO17_KEYPOINTS.RIGHT_ELBOW,\n\t\tcolor: [\n\t\t\t1,\n\t\t\t1,\n\t\t\t0,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.RIGHT_ELBOW,\n\t\tto: COCO17_KEYPOINTS.RIGHT_WRIST,\n\t\tcolor: [\n\t\t\t.667,\n\t\t\t1,\n\t\t\t0,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.LEFT_SHOULDER,\n\t\tto: COCO17_KEYPOINTS.LEFT_HIP,\n\t\tcolor: [\n\t\t\t.333,\n\t\t\t1,\n\t\t\t0,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.RIGHT_SHOULDER,\n\t\tto: COCO17_KEYPOINTS.RIGHT_HIP,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t1,\n\t\t\t0,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.LEFT_HIP,\n\t\tto: COCO17_KEYPOINTS.RIGHT_HIP,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t1,\n\t\t\t.333,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.LEFT_HIP,\n\t\tto: COCO17_KEYPOINTS.LEFT_KNEE,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t1,\n\t\t\t.667,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.LEFT_KNEE,\n\t\tto: COCO17_KEYPOINTS.LEFT_ANKLE,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t1,\n\t\t\t1,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.RIGHT_HIP,\n\t\tto: COCO17_KEYPOINTS.RIGHT_KNEE,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t.667,\n\t\t\t1,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.RIGHT_KNEE,\n\t\tto: COCO17_KEYPOINTS.RIGHT_ANKLE,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t.333,\n\t\t\t1,\n\t\t\t1\n\t\t]\n\t}\n];\n\n//#endregion\n//#region src/gpu/pose-skeleton-renderer.ts\n/**\n* WebGPU skeleton renderer for pose results.\n*\n* Rasterizes the primary person's COCO-17 keypoints into an OpenPose-style\n* conditioning texture natively in VRAM, using the COCO-17 bone set.\n*/\nvar PoseSkeletonRenderer = class {\n\tpipeline;\n\tconstructor(device) {\n\t\tthis.pipeline = new PoseSkeletonComputePipeline(device);\n\t}\n\trenderToTexture(keypoints, options, bones = COCO17_BONES) {\n\t\treturn this.pipeline.execute(keypoints, options, bones);\n\t}\n\tdestroy() {\n\t\tthis.pipeline.destroy();\n\t}\n};\n\n//#endregion\n//#region src/gpu/segmentation-texture-pool.ts\nvar SegmentationTexturePool = class {\n\tdevice;\n\tpool = /* @__PURE__ */ new Map();\n\tconstructor(device) {\n\t\tthis.device = device;\n\t}\n\tgetOrCreateTexture(key, options) {\n\t\tconst existing = this.pool.get(key);\n\t\tif (existing && existing.width === options.width && existing.height === options.height) return existing;\n\t\tif (existing) existing.destroy();\n\t\tconst format = options.format ?? \"rgba8unorm\";\n\t\tconst texture = this.device.createTexture({\n\t\t\tlabel: options.label ?? `vision_segmentation_${key}`,\n\t\t\tsize: [\n\t\t\t\toptions.width,\n\t\t\t\toptions.height,\n\t\t\t\t1\n\t\t\t],\n\t\t\tformat,\n\t\t\tusage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT\n\t\t});\n\t\tthis.pool.set(key, texture);\n\t\treturn texture;\n\t}\n\tuploadMask(key, maskData, width, height) {\n\t\tconst isRgba = maskData.length >= width * height * 4;\n\t\tconst format = isRgba ? \"rgba8unorm\" : \"r8unorm\";\n\t\tconst texture = this.getOrCreateTexture(key, {\n\t\t\twidth,\n\t\t\theight,\n\t\t\tformat\n\t\t});\n\t\tlet uploadBytes;\n\t\tif (maskData instanceof Float32Array) {\n\t\t\tuploadBytes = new Uint8Array(maskData.length);\n\t\t\tfor (let i = 0; i < maskData.length; i++) uploadBytes[i] = Math.round(Math.max(0, Math.min(1, maskData[i])) * 255);\n\t\t} else uploadBytes = maskData;\n\t\tconst bytesPerRow = width * (isRgba ? 4 : 1);\n\t\tconst alignedBytesPerRow = Math.ceil(bytesPerRow / 256) * 256;\n\t\tlet finalBuffer;\n\t\tif (alignedBytesPerRow === bytesPerRow) finalBuffer = uploadBytes;\n\t\telse {\n\t\t\tfinalBuffer = new Uint8Array(alignedBytesPerRow * height);\n\t\t\tfor (let y = 0; y < height; y++) finalBuffer.set(uploadBytes.subarray(y * bytesPerRow, (y + 1) * bytesPerRow), y * alignedBytesPerRow);\n\t\t}\n\t\tthis.device.queue.writeTexture({ texture }, finalBuffer.buffer, {\n\t\t\toffset: finalBuffer.byteOffset,\n\t\t\tbytesPerRow: alignedBytesPerRow,\n\t\t\trowsPerImage: height\n\t\t}, {\n\t\t\twidth,\n\t\t\theight\n\t\t});\n\t\treturn texture;\n\t}\n\tdestroy() {\n\t\tfor (const tex of this.pool.values()) tex.destroy();\n\t\tthis.pool.clear();\n\t}\n};\n\n//#endregion\n//#region src/model/model-store.ts\n/**\n* Resolves the default model cache directory:\n* 1. `FRAMEFIELDS_MODELS_DIR`\n* 2. `~/.cache/framefields/models`\n*/\nfunction getDefaultModelsDir() {\n\tif (process.env.FRAMEFIELDS_MODELS_DIR) return resolve(process.env.FRAMEFIELDS_MODELS_DIR);\n\treturn resolve(homedir(), \".cache/framefields/models\");\n}\n/**\n* Lazy model store. The constructor performs ZERO I/O; the only entry that can hit the\n* network is `ensure(key)`, called by an inference function the first time it runs.\n* Concurrent callers of the same key share a single in-flight download (promise dedupe),\n* downloads are written atomically (temp + rename), and verified files on disk are reused\n* across processes.\n*/\nvar VisionModelStore = class {\n\t_modelsDir;\n\t_baseUrl;\n\t_timeoutMs;\n\t_retries;\n\t_retryDelayMs;\n\t_verify;\n\t_fetch;\n\t_onProgress;\n\t_acceptLicense;\n\t_inflight = /* @__PURE__ */ new Map();\n\t_buffers = /* @__PURE__ */ new Map();\n\t_status = /* @__PURE__ */ new Map();\n\tconstructor(options = {}) {\n\t\tthis._modelsDir = options.modelsDir ? resolve(options.modelsDir) : getDefaultModelsDir();\n\t\tthis._baseUrl = options.baseUrl ?? process.env.FRAMEFIELDS_MODELS_BASE_URL ?? void 0;\n\t\tthis._timeoutMs = options.timeoutMs;\n\t\tthis._retries = Math.max(0, options.retries ?? 2);\n\t\tthis._retryDelayMs = options.retryDelayMs ?? 1e3;\n\t\tthis._verify = options.verify !== false;\n\t\tthis._fetch = options.fetchImpl ?? globalThis.fetch;\n\t\tthis._onProgress = options.onProgress;\n\t\tthis._acceptLicense = options.acceptLicense === true;\n\t}\n\tget modelsDir() {\n\t\treturn this._modelsDir;\n\t}\n\tpathFor(key) {\n\t\treturn join(this._modelsDir, this.descriptor(key).filename);\n\t}\n\tdescriptor(key) {\n\t\tconst desc = VISION_MODELS[key];\n\t\tif (!desc) throw new Error(`Vision model '${key}' is not registered in the model store.`);\n\t\treturn desc;\n\t}\n\t/** The URL `ensure(key)` downloads from (mirror when `baseUrl` is set). */\n\turlFor(key) {\n\t\tconst desc = this.descriptor(key);\n\t\tif (!this._baseUrl) return desc.url;\n\t\treturn `${this._baseUrl.replace(/\\/+$/, \"\")}/${desc.filename}`;\n\t}\n\t/** True when a complete cached file exists (exact registry size when verifying). */\n\thas(key) {\n\t\tconst desc = VISION_MODELS[key];\n\t\tif (!desc) return false;\n\t\tconst targetPath = join(this._modelsDir, desc.filename);\n\t\tif (!existsSync(targetPath)) return false;\n\t\ttry {\n\t\t\tconst size = statSync(targetPath).size;\n\t\t\treturn this._verify ? size === desc.bytes : size > 0;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\t/** Drops a cached model (file + memory) so the next `ensure` re-downloads it. */\n\tasync evict(key) {\n\t\tthis._buffers.delete(key);\n\t\tthis._status.set(key, \"pending\");\n\t\tawait unlink(this.pathFor(key)).catch(() => void 0);\n\t}\n\tstatus(key) {\n\t\treturn this._status.get(key) ?? \"pending\";\n\t}\n\t/** Snapshot of every tracked model's status (empty until anything is fetched). */\n\tstatuses() {\n\t\treturn new Map(this._status);\n\t}\n\t/** True when the model is resident in memory (loaded or downloaded this process). */\n\tisLoaded(key) {\n\t\treturn this._buffers.has(key);\n\t}\n\t/**\n\t* THE only download entry point. Returns the model bytes from memory (cached),\n\t* loading from disk or fetching from the registry URL as needed.\n\t*/\n\tasync ensure(key) {\n\t\tconst inMemory = this._buffers.get(key);\n\t\tif (inMemory) return inMemory;\n\t\tconst inflight = this._inflight.get(key);\n\t\tif (inflight) return inflight;\n\t\tconst promise = this.load(key).finally(() => this._inflight.delete(key));\n\t\tthis._inflight.set(key, promise);\n\t\treturn promise;\n\t}\n\t/** Explicit warm-up — fetch multiple models ahead of use (agents, renderers). */\n\tasync preload(keys) {\n\t\tawait Promise.all([...new Set(keys)].map((key) => this.ensure(key)));\n\t}\n\tasync load(key) {\n\t\tconst desc = this.descriptor(key);\n\t\tconst targetPath = this.pathFor(key);\n\t\tif (this.has(key)) {\n\t\t\tthis._status.set(key, \"ready\");\n\t\t\treturn this.readBuffer(key, targetPath);\n\t\t}\n\t\tif (desc.license && desc.license !== \"Apache-2.0\") {\n\t\t\tif (!this._acceptLicense && process.env.FRAMEFIELDS_ACCEPT_SAM_LICENSE !== \"1\") throw new Error(`License agreement required for model \"${key}\":\\nThis model is licensed under \"${desc.license}\".\\nTo download and use this model, you must accept its license terms by passing 'acceptLicense: true' or setting FRAMEFIELDS_ACCEPT_SAM_LICENSE=1.`);\n\t\t}\n\t\tconst downloadUrl = this.urlFor(key);\n\t\tthis._status.set(key, \"downloading\");\n\t\tif (!existsSync(dirname(targetPath))) mkdirSync(dirname(targetPath), { recursive: true });\n\t\tconst tempPath = `${targetPath}.tmp.${Date.now()}`;\n\t\ttry {\n\t\t\tconst { buffer, totalBytes } = await this.download(key, downloadUrl);\n\t\t\tif (buffer.byteLength === 0) throw new Error(`Downloaded vision model '${key}' is empty (0 bytes).`);\n\t\t\tif (this._verify) this.verifyBytes(key, buffer, downloadUrl);\n\t\t\tthis._onProgress?.(key, buffer.byteLength, totalBytes || buffer.byteLength);\n\t\t\tawait writeFile(tempPath, buffer);\n\t\t\tawait rename(tempPath, targetPath);\n\t\t\tthis._buffers.set(key, buffer);\n\t\t\tthis._status.set(key, \"ready\");\n\t\t\treturn buffer;\n\t\t} catch (error) {\n\t\t\tthis._status.set(key, \"error\");\n\t\t\tif (existsSync(tempPath)) await unlink(tempPath).catch(() => void 0);\n\t\t\tthrow error;\n\t\t}\n\t}\n\t/** Fetches with retries on transient failures (network errors, HTTP 429/5xx). */\n\tasync download(key, url) {\n\t\tfor (let attempt = 0;; attempt++) {\n\t\t\tlet transient;\n\t\t\ttry {\n\t\t\t\tconst response = await this._fetch(url, { signal: this._timeoutMs ? AbortSignal.timeout(this._timeoutMs) : void 0 });\n\t\t\t\tif (response.ok) {\n\t\t\t\t\tconst totalBytes = Number(response.headers.get(\"content-length\") ?? 0);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbuffer: new Uint8Array(await response.arrayBuffer()),\n\t\t\t\t\t\ttotalBytes\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst error = /* @__PURE__ */ new Error(`Failed to download vision model '${key}' from ${url}: HTTP ${response.status} ${response.statusText}`);\n\t\t\t\tif (response.status !== 429 && response.status < 500) throw error;\n\t\t\t\ttransient = error;\n\t\t\t} catch (error) {\n\t\t\t\tif (!(error instanceof TypeError)) throw error;\n\t\t\t\ttransient = error;\n\t\t\t}\n\t\t\tif (attempt >= this._retries) throw new Error(`Failed to download vision model '${key}' from ${url} after ${attempt + 1} attempts: ${String(transient)}`, { cause: transient });\n\t\t\tawait new Promise((r) => setTimeout(r, this._retryDelayMs * 2 ** attempt));\n\t\t}\n\t}\n\tverifyBytes(key, buffer, url) {\n\t\tconst desc = VISION_MODELS[key];\n\t\tif (buffer.byteLength !== desc.bytes) throw new Error(`Vision model '${key}' from ${url} is ${buffer.byteLength} bytes, expected ${desc.bytes}.`);\n\t\tconst digest = createHash(\"sha256\").update(buffer).digest(\"hex\");\n\t\tif (digest !== desc.sha256) throw new Error(`Vision model '${key}' from ${url} failed its SHA-256 check (got ${digest}, expected ${desc.sha256}).`);\n\t}\n\tasync readBuffer(key, targetPath) {\n\t\tconst fileBuffer = await readFile(targetPath);\n\t\tconst buffer = new Uint8Array(fileBuffer.buffer, fileBuffer.byteOffset, fileBuffer.byteLength);\n\t\tthis._buffers.set(key, buffer);\n\t\treturn buffer;\n\t}\n\t/** Drops in-memory buffers (model stays on disk for the next run). */\n\tclearMemoryCache() {\n\t\tthis._buffers.clear();\n\t}\n};\n\n//#endregion\n//#region src/model/onnx-proto.ts\n/**\n* Minimal ONNX protobuf wire-format helpers: split a message into fields,\n* read strings, write length-delimited fields. Only what the graph editors\n* (onnx-subgraph.ts, onnx-float16.ts) need; unknown fields are copied as raw\n* bytes, so nothing else in a model is touched.\n*/\nconst MODEL_GRAPH$1 = 7;\nconst GRAPH_NODE$1 = 1;\nconst GRAPH_INITIALIZER = 5;\nconst GRAPH_INPUT$1 = 11;\nconst GRAPH_OUTPUT$1 = 12;\nconst GRAPH_VALUE_INFO = 13;\nconst NODE_INPUT$1 = 1;\nconst NODE_OUTPUT$2 = 2;\nconst VALUE_INFO_NAME = 1;\nconst TENSOR_NAME = 8;\nconst WIRE_VARINT = 0;\nconst WIRE_I64 = 1;\nconst WIRE_LEN = 2;\nconst WIRE_I32 = 5;\nfunction readVarint(buf, pos) {\n\tlet value = 0;\n\tlet scale = 1;\n\tfor (;;) {\n\t\tif (pos >= buf.length) throw new Error(\"ONNX model: truncated varint\");\n\t\tconst byte = buf[pos++];\n\t\tvalue += (byte & 127) * scale;\n\t\tif (byte < 128) return [value, pos];\n\t\tscale *= 128;\n\t}\n}\nfunction fields(buf) {\n\tconst out = [];\n\tlet pos = 0;\n\twhile (pos < buf.length) {\n\t\tconst start = pos;\n\t\tconst [tag, afterTag] = readVarint(buf, pos);\n\t\tpos = afterTag;\n\t\tconst number$1 = Math.floor(tag / 8);\n\t\tconst wire = tag & 7;\n\t\tlet body = buf.subarray(pos, pos);\n\t\tif (wire === WIRE_VARINT) pos = readVarint(buf, pos)[1];\n\t\telse if (wire === WIRE_I64) pos += 8;\n\t\telse if (wire === WIRE_I32) pos += 4;\n\t\telse if (wire === WIRE_LEN) {\n\t\t\tconst [length, afterLength] = readVarint(buf, pos);\n\t\t\tbody = buf.subarray(afterLength, afterLength + length);\n\t\t\tpos = afterLength + length;\n\t\t} else throw new Error(`ONNX model: unsupported wire type ${wire}`);\n\t\tif (pos > buf.length) throw new Error(\"ONNX model: truncated field\");\n\t\tout.push({\n\t\t\tnumber: number$1,\n\t\t\twire,\n\t\t\traw: buf.subarray(start, pos),\n\t\t\tbody\n\t\t});\n\t}\n\treturn out;\n}\nconst decoder = new TextDecoder();\nconst encoder = new TextEncoder();\nfunction strings(buf, number$1) {\n\treturn fields(buf).filter((f) => f.number === number$1 && f.wire === WIRE_LEN).map((f) => decoder.decode(f.body));\n}\nfunction firstString(buf, number$1) {\n\treturn strings(buf, number$1)[0];\n}\nfunction varint(value) {\n\tconst bytes = [];\n\twhile (value >= 128) {\n\t\tbytes.push(value % 128 | 128);\n\t\tvalue = Math.floor(value / 128);\n\t}\n\tbytes.push(value);\n\treturn bytes;\n}\nfunction lengthDelimited(number$1, payload) {\n\tconst head = [...varint(number$1 * 8 + WIRE_LEN), ...varint(payload.length)];\n\tconst out = new Uint8Array(head.length + payload.length);\n\tout.set(head, 0);\n\tout.set(payload, head.length);\n\treturn out;\n}\nfunction concat(parts) {\n\tconst out = new Uint8Array(parts.reduce((n, p) => n + p.length, 0));\n\tlet offset = 0;\n\tfor (const part of parts) {\n\t\tout.set(part, offset);\n\t\toffset += part.length;\n\t}\n\treturn out;\n}\n\n//#endregion\n//#region src/runner/canonical-baselines.ts\n/** Neutral fallbacks so signal evaluators always have a well-formed frame to read. */\nfunction createNeutralObjectResult() {\n\treturn {\n\t\tobjects: [],\n\t\trawDetections: []\n\t};\n}\nfunction createNeutralPoseResult() {\n\treturn { people: [] };\n}\n/** 17 neutral COCO keypoints at frame center — used by pose signals when nobody is detected. */\nfunction createNeutralLandmarks() {\n\tconst landmarks = [];\n\tfor (let i = 0; i < 17; i++) landmarks.push({\n\t\tx: .5,\n\t\ty: .5,\n\t\tz: 0,\n\t\tvisibility: 0\n\t});\n\treturn landmarks;\n}\n\n//#endregion\n//#region src/decode/rtmdet-ins-head.ts\n/**\n* RTMDet-Ins post-processing, done here instead of inside the ONNX graph.\n*\n* The mmdeploy end2end export runs top-k, per-class NMS and mask assembly in\n* the graph and returns a full input-sized mask for each of up to 100\n* detections (40 on a typical frame: ~65 MB of floats). The runner instead\n* cuts the graph before its first data-dependent op (see `RTMDET_INS_HEAD`)\n* and reproduces the tail exactly:\n*\n* 1. top 5000 anchors by their best class score;\n* 2. ONNX NonMaxSuppression per class (IoU > 0.6 suppresses, scores > 0.05,\n* at most 200 per class);\n* 3. the 100 best (class, box) pairs;\n* 4. masks on demand: a 3-layer dynamic 1×1 conv over the 8 mask features\n* plus each pixel's offset from the anchor, at 1/8 of the input size.\n* The logits are upsampled (bilinear) and squashed by the decoder.\n*\n* Constants and layer layout match the export's graph; `models.e2e.test.ts`\n* checks the result against the end2end outputs.\n*/\n/** Head tensors of the mmdeploy RTMDet-Ins exports (all variants). */\nconst RTMDET_INS_HEAD = {\n\tscores: \"/Sigmoid_output_0\",\n\tboxes: \"/Concat_7_output_0\",\n\tkernels: \"/Concat_5_output_0\",\n\tmaskFeatures: \"/bbox_head/mask_head/projection/Conv_output_0\"\n};\nconst PRE_NMS = 5e3;\nconst IOU_THRESHOLD = Math.fround(.6);\nconst SCORE_FLOOR = Math.fround(.05);\nconst MAX_PER_CLASS = 200;\nconst MAX_DETECTIONS = 100;\nconst STRIDES = [\n\t8,\n\t16,\n\t32\n];\n/** Mask features are at stride 8; relative offsets are divided by stride × 8. */\nconst MASK_STRIDE = 8;\nconst MASK_CHANNELS = 8;\nconst KERNEL_SIZE = 169;\n/** Steps 1–3: the detections the end2end graph would return, best first. */\nfunction selectInstances(head) {\n\tconst { scores, boxes, anchors, classes } = head;\n\tconst best = new Float32Array(anchors);\n\tfor (let a = 0; a < anchors; a++) {\n\t\tlet max = 0;\n\t\tconst row = a * classes;\n\t\tfor (let c = 0; c < classes; c++) {\n\t\t\tconst s = scores[row + c];\n\t\t\tif (s > max) max = s;\n\t\t}\n\t\tbest[a] = max;\n\t}\n\tconst order = [];\n\tfor (let a = 0; a < anchors; a++) if (best[a] > SCORE_FLOOR) order.push(a);\n\torder.sort((x, y) => best[y] - best[x] || x - y);\n\tif (order.length > PRE_NMS) order.length = PRE_NMS;\n\tconst picked = [];\n\tconst candidates = [];\n\tconst kept = [];\n\tfor (let c = 0; c < classes; c++) {\n\t\tcandidates.length = 0;\n\t\tfor (const a of order) if (scores[a * classes + c] > SCORE_FLOOR) candidates.push(a);\n\t\tif (candidates.length === 0) continue;\n\t\tcandidates.sort((x, y) => scores[y * classes + c] - scores[x * classes + c] || x - y);\n\t\tkept.length = 0;\n\t\tfor (const a of candidates) {\n\t\t\tif (kept.length >= MAX_PER_CLASS) break;\n\t\t\tlet suppressed = false;\n\t\t\tfor (const k of kept) if (iou(boxes, a, k) > IOU_THRESHOLD) {\n\t\t\t\tsuppressed = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (!suppressed) {\n\t\t\t\tkept.push(a);\n\t\t\t\tpicked.push({\n\t\t\t\t\tanchor: a,\n\t\t\t\t\tclassIndex: c,\n\t\t\t\t\tscore: scores[a * classes + c]\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\tpicked.sort((x, y) => y.score - x.score);\n\tif (picked.length > MAX_DETECTIONS) picked.length = MAX_DETECTIONS;\n\treturn picked;\n}\nfunction iou(boxes, a, b) {\n\tconst a0 = boxes[a * 4];\n\tconst a1 = boxes[a * 4 + 1];\n\tconst a2 = boxes[a * 4 + 2];\n\tconst a3 = boxes[a * 4 + 3];\n\tconst b0 = boxes[b * 4];\n\tconst b1 = boxes[b * 4 + 1];\n\tconst b2 = boxes[b * 4 + 2];\n\tconst b3 = boxes[b * 4 + 3];\n\tconst w = Math.min(a2, b2) - Math.max(a0, b0);\n\tconst h = Math.min(a3, b3) - Math.max(a1, b1);\n\tif (w <= 0 || h <= 0) return 0;\n\tconst inter = w * h;\n\tconst union = (a2 - a0) * (a3 - a1) + (b2 - b0) * (b3 - b1) - inter;\n\treturn union > 0 ? inter / union : 0;\n}\n/** Anchor position and stride, in input pixels (mmdet point priors, offset 0). */\nfunction anchorPrior(anchor, inputWidth, inputHeight) {\n\tlet base = 0;\n\tfor (const stride of STRIDES) {\n\t\tconst cols = Math.ceil(inputWidth / stride);\n\t\tconst count = cols * Math.ceil(inputHeight / stride);\n\t\tif (anchor < base + count) {\n\t\t\tconst i = anchor - base;\n\t\t\treturn {\n\t\t\t\tx: i % cols * stride,\n\t\t\t\ty: Math.floor(i / cols) * stride,\n\t\t\t\tstride\n\t\t\t};\n\t\t}\n\t\tbase += count;\n\t}\n\tthrow new RangeError(`anchor ${anchor} is out of range`);\n}\n/**\n* Step 4: mask logits for one anchor, `maskHeight × maskWidth`, row-major.\n* Writes into `out` when it is large enough.\n*/\nfunction maskLogits(head, anchor, out) {\n\tconst { kernels, maskFeatures, maskWidth: mw, maskHeight: mh } = head;\n\tconst plane = mw * mh;\n\tconst logits = out && out.length >= plane ? out : new Float32Array(plane);\n\tconst prior = anchorPrior(anchor, head.inputWidth, head.inputHeight);\n\tconst k = kernels.subarray(anchor * KERNEL_SIZE, (anchor + 1) * KERNEL_SIZE);\n\tconst w1 = 0;\n\tconst w2 = 80;\n\tconst w3 = 144;\n\tconst b1 = 152;\n\tconst b2 = 160;\n\tconst b3 = 168;\n\tconst scale = 1 / (prior.stride * MASK_STRIDE);\n\tconst input = new Float32Array(2 + MASK_CHANNELS);\n\tconst hidden1 = new Float32Array(8);\n\tconst hidden2 = new Float32Array(8);\n\tfor (let y = 0; y < mh; y++) {\n\t\tconst relY = (prior.y - y * MASK_STRIDE) * scale;\n\t\tfor (let x = 0; x < mw; x++) {\n\t\t\tconst p = y * mw + x;\n\t\t\tinput[0] = (prior.x - x * MASK_STRIDE) * scale;\n\t\t\tinput[1] = relY;\n\t\t\tfor (let c = 0; c < MASK_CHANNELS; c++) input[2 + c] = maskFeatures[c * plane + p];\n\t\t\tfor (let o = 0; o < 8; o++) {\n\t\t\t\tlet sum$1 = k[b1 + o];\n\t\t\t\tconst row = w1 + o * 10;\n\t\t\t\tfor (let i = 0; i < 10; i++) sum$1 += k[row + i] * input[i];\n\t\t\t\thidden1[o] = sum$1 > 0 ? sum$1 : 0;\n\t\t\t}\n\t\t\tfor (let o = 0; o < 8; o++) {\n\t\t\t\tlet sum$1 = k[b2 + o];\n\t\t\t\tconst row = w2 + o * 8;\n\t\t\t\tfor (let i = 0; i < 8; i++) sum$1 += k[row + i] * hidden1[i];\n\t\t\t\thidden2[o] = sum$1 > 0 ? sum$1 : 0;\n\t\t\t}\n\t\t\tlet sum = k[b3];\n\t\t\tfor (let i = 0; i < 8; i++) sum += k[w3 + i] * hidden2[i];\n\t\t\tlogits[p] = sum;\n\t\t}\n\t}\n\treturn logits;\n}\n\n//#endregion\n//#region src/model/onnx-subgraph.ts\n/**\n* Cuts an ONNX model down to the nodes that compute a chosen set of tensors,\n* which become the graph's outputs. Works on the protobuf wire format directly\n* (only the fields it needs are decoded; everything else is copied byte for\n* byte), so it needs no protobuf library and keeps the weights untouched.\n*\n* Used to run a detector's fixed-shape body on the GPU and do its\n* data-dependent tail (top-k, NMS, mask assembly) ourselves.\n*/\n/** ValueInfoProto for a float tensor of unknown shape. */\nfunction floatOutput(name) {\n\tconst typeProto = lengthDelimited(1, new Uint8Array([8, 1]));\n\treturn concat([lengthDelimited(VALUE_INFO_NAME, encoder.encode(name)), lengthDelimited(2, typeProto)]);\n}\n/**\n* Returns a model whose outputs are `outputs` (tensors of the original graph),\n* keeping only the nodes, initializers and inputs needed to compute them.\n* Output types come from the graph's value_info when present; otherwise they\n* are declared as float tensors.\n*/\nfunction extractSubgraph(model, outputs) {\n\tconst modelFields = fields(model);\n\tconst graphField = modelFields.find((f) => f.number === MODEL_GRAPH$1 && f.wire === WIRE_LEN);\n\tif (!graphField) throw new Error(\"ONNX model has no graph\");\n\tconst graphFields = fields(graphField.body);\n\tconst nodes = graphFields.filter((f) => f.number === GRAPH_NODE$1).map((f) => ({\n\t\tfield: f,\n\t\tinputs: strings(f.body, NODE_INPUT$1),\n\t\toutputs: strings(f.body, NODE_OUTPUT$2)\n\t}));\n\tconst producer = /* @__PURE__ */ new Map();\n\tnodes.forEach((node, index) => {\n\t\tfor (const name of node.outputs) producer.set(name, index);\n\t});\n\tconst keepNode = /* @__PURE__ */ new Set();\n\tconst needed = /* @__PURE__ */ new Set();\n\tconst stack = [...outputs];\n\tfor (const name of outputs) if (!producer.has(name)) throw new Error(`ONNX model has no tensor '${name}'`);\n\twhile (stack.length > 0) {\n\t\tconst name = stack.pop();\n\t\tif (needed.has(name)) continue;\n\t\tneeded.add(name);\n\t\tconst index = producer.get(name);\n\t\tif (index === void 0 || keepNode.has(index)) continue;\n\t\tkeepNode.add(index);\n\t\tfor (const input of nodes[index].inputs) if (input) stack.push(input);\n\t}\n\tconst valueInfo = /* @__PURE__ */ new Map();\n\tfor (const f of graphFields) {\n\t\tif (f.number !== GRAPH_VALUE_INFO) continue;\n\t\tconst name = firstString(f.body, VALUE_INFO_NAME);\n\t\tif (name !== void 0) valueInfo.set(name, f.body);\n\t}\n\tconst parts = [];\n\tlet nodeIndex = 0;\n\tfor (const f of graphFields) switch (f.number) {\n\t\tcase GRAPH_NODE$1:\n\t\t\tif (keepNode.has(nodeIndex)) parts.push(f.raw);\n\t\t\tnodeIndex++;\n\t\t\tbreak;\n\t\tcase GRAPH_INITIALIZER: {\n\t\t\tconst name = firstString(f.body, TENSOR_NAME);\n\t\t\tif (name !== void 0 && needed.has(name)) parts.push(f.raw);\n\t\t\tbreak;\n\t\t}\n\t\tcase GRAPH_INPUT$1:\n\t\tcase GRAPH_VALUE_INFO: {\n\t\t\tconst name = firstString(f.body, VALUE_INFO_NAME);\n\t\t\tif (name !== void 0 && needed.has(name)) parts.push(f.raw);\n\t\t\tbreak;\n\t\t}\n\t\tcase GRAPH_OUTPUT$1: break;\n\t\tdefault: parts.push(f.raw);\n\t}\n\tfor (const name of outputs) parts.push(lengthDelimited(GRAPH_OUTPUT$1, valueInfo.get(name) ?? floatOutput(name)));\n\tconst graph = concat(parts);\n\treturn concat(modelFields.map((f) => f === graphField ? lengthDelimited(MODEL_GRAPH$1, graph) : f.raw));\n}\n\n//#endregion\n//#region src/model/probe-model.ts\nconst MODEL_IR_VERSION = 1;\nconst MODEL_OPSET_IMPORT = 8;\nconst MODEL_GRAPH = 7;\nconst OPSET_VERSION = 2;\nconst GRAPH_NODE = 1;\nconst GRAPH_NAME = 2;\nconst GRAPH_INPUT = 11;\nconst GRAPH_OUTPUT = 12;\nconst NODE_INPUT = 1;\nconst NODE_OUTPUT$1 = 2;\nconst NODE_OP_TYPE$1 = 4;\nconst VALUE_NAME = 1;\nconst VALUE_TYPE = 2;\nconst TYPE_TENSOR = 1;\nconst TENSOR_ELEM_TYPE = 1;\nconst TENSOR_SHAPE = 2;\nconst SHAPE_DIM = 1;\nconst DIM_VALUE = 1;\nconst FLOAT = 1;\nconst text = (field, value) => lengthDelimited(field, encoder.encode(value));\nconst number = (field, value) => new Uint8Array([...varint(field * 8), ...varint(value)]);\nfunction floatVector(name) {\n\tconst dim = lengthDelimited(SHAPE_DIM, number(DIM_VALUE, 1));\n\tconst tensor = concat([number(TENSOR_ELEM_TYPE, FLOAT), lengthDelimited(TENSOR_SHAPE, dim)]);\n\treturn concat([text(VALUE_NAME, name), lengthDelimited(VALUE_TYPE, lengthDelimited(TYPE_TENSOR, tensor))]);\n}\nlet probe;\n/**\n* A one-node ONNX model (`y = Identity(x)`, float[1]). Creating a session from it tells\n* whether an execution provider works here before any real model is downloaded.\n*/\nfunction probeModel() {\n\tprobe ??= concat([\n\t\tnumber(MODEL_IR_VERSION, 8),\n\t\tlengthDelimited(MODEL_OPSET_IMPORT, number(OPSET_VERSION, 13)),\n\t\tlengthDelimited(MODEL_GRAPH, concat([\n\t\t\tlengthDelimited(GRAPH_NODE, concat([\n\t\t\t\ttext(NODE_INPUT, \"x\"),\n\t\t\t\ttext(NODE_OUTPUT$1, \"y\"),\n\t\t\t\ttext(NODE_OP_TYPE$1, \"Identity\")\n\t\t\t])),\n\t\t\ttext(GRAPH_NAME, \"probe\"),\n\t\t\tlengthDelimited(GRAPH_INPUT, floatVector(\"x\")),\n\t\t\tlengthDelimited(GRAPH_OUTPUT, floatVector(\"y\"))\n\t\t]))\n\t]);\n\treturn probe;\n}\n\n//#endregion\n//#region src/model/conv-layout.ts\n/**\n* onnxruntime-web 1.30's WebGPU EP computes grouped convolutions wrong in its\n* default NHWC layout when a group has more than one channel and the count\n* isn't a multiple of 4 (RTMO's head: 18 per group → duplicate skeletons).\n* NCHW is correct but ~30% slower, so only models with such a convolution get\n* it. Depthwise convolutions (one channel per group: RTMDet-Ins, Selfie) are\n* fine in NHWC.\n*/\nconst NODE_OP_TYPE = 4;\nconst NODE_ATTRIBUTE = 5;\nconst NODE_OUTPUT = 2;\nconst ATTR_NAME = 1;\nconst ATTR_I = 3;\nconst ATTR_T = 5;\nconst TENSOR_DIMS = 1;\nfunction varintValues(field) {\n\tconst values = [];\n\tif (field.wire === WIRE_LEN) {\n\t\tlet pos = 0;\n\t\twhile (pos < field.body.length) {\n\t\t\tconst [value, next] = readVarint(field.body, pos);\n\t\t\tvalues.push(value);\n\t\t\tpos = next;\n\t\t}\n\t} else if (field.wire === WIRE_VARINT) {\n\t\tlet pos = 0;\n\t\tpos = readVarint(field.raw, pos)[1];\n\t\tvalues.push(readVarint(field.raw, pos)[0]);\n\t}\n\treturn values;\n}\nfunction tensorDims(tensor) {\n\treturn fields(tensor).filter((f) => f.number === TENSOR_DIMS).flatMap(varintValues);\n}\n/**\n* True when the model has a grouped convolution the NHWC kernels get wrong,\n* and when it can't be read (NCHW is always correct).\n*/\nfunction needsNchwLayout(model) {\n\tlet graph;\n\ttry {\n\t\tgraph = fields(model).find((f) => f.number === MODEL_GRAPH$1 && f.wire === WIRE_LEN);\n\t} catch {\n\t\treturn true;\n\t}\n\tif (!graph) return true;\n\tconst dims = /* @__PURE__ */ new Map();\n\tconst convs = [];\n\tfor (const f of fields(graph.body)) if (f.number === GRAPH_INITIALIZER) {\n\t\tconst name = firstString(f.body, TENSOR_NAME);\n\t\tif (name !== void 0) dims.set(name, tensorDims(f.body));\n\t} else if (f.number === GRAPH_NODE$1) {\n\t\tconst op = firstString(f.body, NODE_OP_TYPE);\n\t\tif (op !== \"Conv\" && op !== \"Constant\") continue;\n\t\tconst attributes = fields(f.body).filter((a) => a.number === NODE_ATTRIBUTE).map((a) => a.body);\n\t\tif (op === \"Constant\") {\n\t\t\tconst value = attributes.find((a) => firstString(a, ATTR_NAME) === \"value\");\n\t\t\tconst tensor = value && fields(value).find((a) => a.number === ATTR_T);\n\t\t\tconst output$1 = strings(f.body, NODE_OUTPUT)[0];\n\t\t\tif (tensor && output$1) dims.set(output$1, tensorDims(tensor.body));\n\t\t\tcontinue;\n\t\t}\n\t\tconst groupAttr = attributes.find((a) => firstString(a, ATTR_NAME) === \"group\");\n\t\tconst groupField = groupAttr && fields(groupAttr).find((a) => a.number === ATTR_I);\n\t\tconst group = groupField ? varintValues(groupField)[0] ?? 1 : 1;\n\t\tconst weight = strings(f.body, NODE_INPUT$1)[1];\n\t\tif (group > 1 && weight) convs.push({\n\t\t\tweight,\n\t\t\tgroup\n\t\t});\n\t}\n\treturn convs.some(({ weight }) => {\n\t\tconst perGroup = dims.get(weight)?.[1];\n\t\treturn perGroup !== void 0 && perGroup > 1 && perGroup % 4 !== 0;\n\t});\n}\n\n//#endregion\n//#region src/runtime/webgpu-provider.ts\n/**\n* Browser / WebGPU session provider .\n*\n* Mirrors `NodeSessionProvider` but uses `onnxruntime-web` with the WebGPU execution provider\n* and a WASM fallback. The ORT module is imported lazily behind an injectable loader, so:\n* - the Node core entry never pulls browser code, and\n* - unit tests can run fully offline with a fake module.\n*\n* `onnxruntime-web` is an OPTIONAL peer dependency — consumers of `@framefields/vision/web`\n* provide it; the main `@framefields/vision` entry never touches it.\n*/\nconst ORT_WEB_SPECIFIER = \"onnxruntime-web\";\nconst defaultLoader = () => import(\n\t/* @vite-ignore */\n\tORT_WEB_SPECIFIER\n);\nvar WebGPUProvider = class {\n\tkind = \"webgpu\";\n\t_loader;\n\t_providers;\n\t_wasmFallback;\n\t_ortPromise;\n\tdevice;\n\tconstructor(options = {}) {\n\t\tthis._loader = options.loader ?? defaultLoader;\n\t\tthis._providers = options.executionProviders ?? [\"webgpu\", \"wasm\"];\n\t\tthis._wasmFallback = options.wasmFallback !== false;\n\t\tthis.device = options.device;\n\t}\n\tort() {\n\t\tif (!this._ortPromise) this._ortPromise = this._loader().catch((err) => {\n\t\t\tthis._ortPromise = void 0;\n\t\t\tthrow new Error(`onnxruntime-web failed to load (${String(err)}). Install it in the browser bundle or pass a custom loader.`);\n\t\t});\n\t\treturn this._ortPromise;\n\t}\n\tasync createOrtSession(ort, modelBytes, options) {\n\t\ttry {\n\t\t\tconst device = this.device;\n\t\t\tconst layout = needsNchwLayout(modelBytes) ? \"NCHW\" : \"NHWC\";\n\t\t\treturn await ort.InferenceSession.create(modelBytes, {\n\t\t\t\texecutionProviders: this._providers.map((name) => withProviderOptions(name, device, layout)),\n\t\t\t\tgraphOptimizationLevel: \"all\",\n\t\t\t\texternalData: options?.externalData?.map(({ path, data }) => ({\n\t\t\t\t\tpath,\n\t\t\t\t\tdata\n\t\t\t\t})),\n\t\t\t\tlogSeverityLevel: 3\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tif (!this._wasmFallback || !this._providers.includes(\"webgpu\")) throw err;\n\t\t\treturn await ort.InferenceSession.create(modelBytes, {\n\t\t\t\texecutionProviders: [\"wasm\"],\n\t\t\t\tgraphOptimizationLevel: \"all\",\n\t\t\t\texternalData: options?.externalData?.map(({ path, data }) => ({\n\t\t\t\t\tpath,\n\t\t\t\t\tdata\n\t\t\t\t})),\n\t\t\t\tlogSeverityLevel: 3\n\t\t\t});\n\t\t}\n\t}\n\tasync createSession(modelBytes, options) {\n\t\tconst ort = await this.ort();\n\t\tconst session = await exclusive(ort, () => this.createOrtSession(ort, modelBytes, options));\n\t\tconst runMany = async (inputs) => {\n\t\t\tconst feeds = {};\n\t\t\tfor (const input of inputs) {\n\t\t\t\tconst name = inputs.length === 1 && !session.inputNames.includes(input.name) ? session.inputNames[0] ?? input.name : input.name;\n\t\t\t\tif (input.gpuBuffer && !(input.data instanceof Float32Array)) throw new Error(\"GPU-buffer vision inputs must be float32.\");\n\t\t\t\tfeeds[name] = input.gpuBuffer && ort.Tensor.fromGpuBuffer ? ort.Tensor.fromGpuBuffer(input.gpuBuffer, {\n\t\t\t\t\tdataType: \"float32\",\n\t\t\t\t\tdims: [...input.dims]\n\t\t\t\t}) : new ort.Tensor(input.data instanceof Uint8Array ? \"bool\" : input.data instanceof BigInt64Array ? \"int64\" : input.data instanceof Int32Array ? \"int32\" : \"float32\", input.data, [...input.dims]);\n\t\t\t}\n\t\t\tconst results = await exclusive(ort, () => session.run(feeds));\n\t\t\tconst outputs = {};\n\t\t\tfor (const [name, tensor] of Object.entries(results)) outputs[name] = {\n\t\t\t\tdata: tensor.data,\n\t\t\t\tdims: [...tensor.dims]\n\t\t\t};\n\t\t\treturn outputs;\n\t\t};\n\t\treturn {\n\t\t\trun: (input) => runMany([input]),\n\t\t\trunMany,\n\t\t\trelease: () => {\n\t\t\t\texclusive(ort, () => session.release());\n\t\t\t}\n\t\t};\n\t}\n};\n/**\n* Convenience factory: a `SessionProvider` type guard for the browser entry. Kept tiny so\n* `@framefields/vision/web` stays tree-shakeable.\n*/\nfunction createWebGPUProvider(options) {\n\treturn new WebGPUProvider(options);\n}\n/** True when the environment exposes a WebGPU device (synchronous capability probe). */\nfunction hasWebGPU() {\n\treturn typeof navigator !== \"undefined\" && \"gpu\" in navigator;\n}\n/**\n* The WebGPU EP runs in NCHW. Its default NHWC layout computes grouped convolutions wrong\n* when the channels per group aren't a multiple of 4 (onnxruntime-web 1.30) — RTMO's head\n* has group=8 convs over 104 channels (13 per group), which turned one dancer into several\n* skeletons. NCHW matches the CPU EP on every pinned model.\n*/\nfunction withProviderOptions(name, device, preferredLayout) {\n\tif (name !== \"webgpu\") return name;\n\treturn device ? {\n\t\tname,\n\t\tpreferredLayout,\n\t\tdevice\n\t} : {\n\t\tname,\n\t\tpreferredLayout\n\t};\n}\n/**\n* ORT Web's WebGPU build takes one call at a time per runtime: a concurrent session create\n* throws, and a run entered while another awaits the GPU corrupts its wasm heap. Every\n* create, run and release on one module therefore queues here.\n*/\nconst queues = /* @__PURE__ */ new WeakMap();\nfunction exclusive(ort, call) {\n\tconst result = (queues.get(ort) ?? Promise.resolve()).then(call, call);\n\tqueues.set(ort, result.catch(() => void 0));\n\treturn result;\n}\n\n//#endregion\n//#region src/runtime/node-webgpu-provider.ts\nconst ORT_WEBGPU_SPECIFIER = \"onnxruntime-web/webgpu\";\nconst WEBGPU_SPECIFIER = \"webgpu\";\nlet nodeWebGPUReady;\n/** CPU rasterizers (lavapipe, llvmpipe, SwiftShader): slower than the CPU EP. */\nconst SOFTWARE_ADAPTER = /llvmpipe|lavapipe|swiftshader|software/i;\n/**\n* Ensure `globalThis.navigator.gpu` exists and has a hardware adapter that\n* onnxruntime-web's WebGPU EP can use. In the renderer this is already the Dawn\n* device; otherwise imports the `webgpu` (Dawn) package and installs its\n* globals. Rejects when the only adapter is a software rasterizer.\n*/\nfunction ensureNodeWebGPU() {\n\tif (!nodeWebGPUReady) {\n\t\tnodeWebGPUReady = (async () => {\n\t\t\tconst g = globalThis;\n\t\t\tif (!g.navigator?.gpu) {\n\t\t\t\tconst { create, globals } = await import(\n\t\t\t\t\t/* @vite-ignore */\n\t\t\t\t\tWEBGPU_SPECIFIER\n);\n\t\t\t\tObject.assign(globalThis, globals);\n\t\t\t\tg.navigator ??= {};\n\t\t\t\tObject.defineProperty(g.navigator, \"gpu\", {\n\t\t\t\t\tvalue: create([]),\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst adapter = await (g.navigator?.gpu).requestAdapter({ powerPreference: \"high-performance\" });\n\t\t\tif (!adapter) throw new Error(\"No WebGPU adapter.\");\n\t\t\tconst info = adapter.info ?? {};\n\t\t\tconst name = [\n\t\t\t\tinfo.vendor,\n\t\t\t\tinfo.architecture,\n\t\t\t\tinfo.device,\n\t\t\t\tinfo.description\n\t\t\t].filter(Boolean).join(\" \");\n\t\t\tif (adapter.isFallbackAdapter === true || info.isFallbackAdapter === true || SOFTWARE_ADAPTER.test(name)) throw new Error(`WebGPU adapter is a software rasterizer (${name}).`);\n\t\t\tpatchSupportedFeatures(adapter.features);\n\t\t})();\n\t\tnodeWebGPUReady.catch(() => {\n\t\t\tnodeWebGPUReady = void 0;\n\t\t});\n\t}\n\treturn nodeWebGPUReady;\n}\n/**\n* Dawn's Node `GPUSupportedFeatures` has `has`/`keys`/`size` but no `forEach`,\n* which onnxruntime-web's WebGPU build calls on adapter and device features\n* (they share the class). Adds the missing set-like methods once.\n*/\nfunction patchSupportedFeatures(features) {\n\tconst proto = Object.getPrototypeOf(features);\n\tif (!proto || typeof proto.keys !== \"function\") return;\n\tif (typeof proto.forEach !== \"function\") Object.defineProperty(proto, \"forEach\", {\n\t\tvalue(callback, thisArg) {\n\t\t\tfor (const key of this.keys()) callback.call(thisArg, key, key, this);\n\t\t},\n\t\tconfigurable: true,\n\t\twritable: true\n\t});\n\tif (typeof proto.values !== \"function\") Object.defineProperty(proto, \"values\", {\n\t\tvalue() {\n\t\t\treturn this.keys();\n\t\t},\n\t\tconfigurable: true,\n\t\twritable: true\n\t});\n\tif (typeof proto.entries !== \"function\") Object.defineProperty(proto, \"entries\", {\n\t\t*value() {\n\t\t\tfor (const key of this.keys()) yield [key, key];\n\t\t},\n\t\tconfigurable: true,\n\t\twritable: true\n\t});\n}\nvar NodeWebGPUProvider = class {\n\tkind = \"webgpu\";\n\tdevice;\n\t_inner;\n\tconstructor(options = {}) {\n\t\tconst loader = options.loader ?? (async () => {\n\t\t\tawait ensureNodeWebGPU();\n\t\t\tconst mod = await import(\n\t\t\t\t/* @vite-ignore */\n\t\t\t\tORT_WEBGPU_SPECIFIER\n);\n\t\t\tif (mod.env?.wasm) mod.env.wasm.numThreads = 1;\n\t\t\tif (mod.env?.webgpu) mod.env.webgpu.powerPreference = \"high-performance\";\n\t\t\treturn mod;\n\t\t});\n\t\tthis.device = options.device;\n\t\tthis._inner = new WebGPUProvider({\n\t\t\twasmFallback: false,\n\t\t\t...options,\n\t\t\tloader\n\t\t});\n\t}\n\tcreateSession(modelBytes, options) {\n\t\treturn this._inner.createSession(modelBytes, options);\n\t}\n};\nfunction createNodeWebGPUProvider(options) {\n\treturn new NodeWebGPUProvider(options);\n}\n\n//#endregion\n//#region src/runtime/session-provider.ts\n/** Where a provider's sessions run: its own answer, else WebGPU for WebGPU providers, else CPU. */\nfunction sessionCompute(provider) {\n\tif (provider.backend) return provider.backend();\n\treturn Promise.resolve(provider.kind === \"webgpu\" ? \"webgpu\" : \"cpu\");\n}\nlet defaultProvider;\nlet visionDevice;\n/**\n* The GPU device the default provider runs WebGPU sessions on — the renderer's,\n* so frames can go from its textures into the models without a CPU round trip.\n* Applies to sessions created afterwards; without it, onnxruntime-web creates\n* its own device.\n*/\nfunction setVisionDevice(device) {\n\tvisionDevice = device;\n}\n/**\n* Sets the provider runners use when none is passed, for hosts that create\n* runners indirectly (e.g. a browser player rendering vision nodes). `undefined`\n* restores the default, onnxruntime-node.\n*/\nfunction setDefaultSessionProvider(factory) {\n\tdefaultProvider = factory;\n}\n/**\n* Hosts (the renderer) register a listener under this symbol to log the\n* backend; a global keeps it working however the packages are bundled.\n*/\nconst VISION_BACKEND_LISTENER = Symbol.for(\"framefields.vision.backend\");\nfunction reportBackend(info) {\n\tconst listener = globalThis[VISION_BACKEND_LISTENER];\n\tif (typeof listener === \"function\") try {\n\t\tlistener(info);\n\t} catch {}\n}\nfunction requestedVisionBackend() {\n\tconst value = typeof process !== \"undefined\" ? process.env.FRAMEFIELDS_VISION_PROVIDER?.trim().toLowerCase() : void 0;\n\treturn value === \"webgpu\" || value === \"cuda\" || value === \"cpu\" ? value : \"auto\";\n}\n/**\n* Prefers the GPU (onnxruntime-web's WebGPU EP on the process's WebGPU device —\n* the Dawn device the renderer already creates, or one this ensures) and falls\n* back to the CPU provider (onnxruntime-node) when a WebGPU session cannot be\n* created: no hardware adapter, no Dawn, or onnxruntime-web not installed. The\n* choice is made on the first session and kept.\n*\n* `FRAMEFIELDS_VISION_PROVIDER` forces one backend instead: `webgpu`, `cpu`, or\n* `cuda` (onnxruntime-node's CUDA EP on Linux x64; needs the CUDA 12 and cuDNN 9\n* libraries). A forced backend that fails throws instead of falling back.\n*/\nvar AutoSessionProvider = class {\n\t_resolved;\n\t_resolving;\n\tget kind() {\n\t\treturn this._resolved?.kind ?? \"webgpu\";\n\t}\n\tget device() {\n\t\treturn this._resolved?.device;\n\t}\n\tasync createSession(modelBytes, options) {\n\t\tif (this._resolved) return this._resolved.createSession(modelBytes, options);\n\t\tif (this._resolving) return (await this._resolving).provider.createSession(modelBytes, options);\n\t\tconst { provider, first } = await this.start(modelBytes, options);\n\t\treturn first ?? provider.createSession(modelBytes, options);\n\t}\n\t/** Where sessions run. Before the first session it decides with a one-node probe graph. */\n\tasync backend() {\n\t\tif (!this._resolved && !this._resolving) (await this.start(probeModel())).first?.release();\n\t\tconst provider = this._resolved ?? (await this._resolving)?.provider;\n\t\tif (!provider) throw new Error(\"No vision backend could be resolved.\");\n\t\treturn sessionCompute(provider);\n\t}\n\tstart(modelBytes, options) {\n\t\tconst resolving = this.resolve(modelBytes, options);\n\t\tthis._resolving = resolving;\n\t\tresolving.then(({ provider }) => {\n\t\t\tthis._resolved = provider;\n\t\t}, () => {\n\t\t\tthis._resolving = void 0;\n\t\t});\n\t\treturn resolving;\n\t}\n\tasync resolve(modelBytes, options) {\n\t\tconst backend = requestedVisionBackend();\n\t\tif (backend === \"cpu\") {\n\t\t\treportBackend({\n\t\t\t\tbackend: \"cpu\",\n\t\t\t\tsharedDevice: false,\n\t\t\t\treason: \"FRAMEFIELDS_VISION_PROVIDER=cpu\"\n\t\t\t});\n\t\t\treturn { provider: new NodeSessionProvider() };\n\t\t}\n\t\tif (backend === \"cuda\") {\n\t\t\treportBackend({\n\t\t\t\tbackend: \"cuda\",\n\t\t\t\tsharedDevice: false\n\t\t\t});\n\t\t\treturn { provider: cudaProvider() };\n\t\t}\n\t\tif (backend === \"auto\" && await hasNvidiaDriver()) try {\n\t\t\tconst first = await new NodeSessionProvider({ executionProviders: [\"cuda\"] }).createSession(modelBytes, options);\n\t\t\treportBackend({\n\t\t\t\tbackend: \"cuda\",\n\t\t\t\tsharedDevice: false\n\t\t\t});\n\t\t\tfirst.release();\n\t\t\treturn { provider: cudaProvider() };\n\t\t} catch {}\n\t\tconst webgpu = new NodeWebGPUProvider({\n\t\t\twasmFallback: false,\n\t\t\tdevice: visionDevice\n\t\t});\n\t\ttry {\n\t\t\tconst first = await webgpu.createSession(modelBytes, options);\n\t\t\treportBackend({\n\t\t\t\tbackend: \"webgpu\",\n\t\t\t\tsharedDevice: !!visionDevice\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tprovider: webgpu,\n\t\t\t\tfirst\n\t\t\t};\n\t\t} catch (err) {\n\t\t\tif (backend === \"webgpu\") throw err;\n\t\t\treportBackend({\n\t\t\t\tbackend: \"cpu\",\n\t\t\t\tsharedDevice: false,\n\t\t\t\treason: err instanceof Error ? err.message : String(err)\n\t\t\t});\n\t\t\treturn { provider: new NodeSessionProvider() };\n\t\t}\n\t}\n};\nfunction cudaProvider() {\n\treturn new NodeSessionProvider({ executionProviders: [\"cuda\", \"cpu\"] });\n}\n/** True on Linux with the NVIDIA kernel driver loaded (checked without touching CUDA). */\nasync function hasNvidiaDriver() {\n\tif (typeof process === \"undefined\" || process.platform !== \"linux\") return false;\n\ttry {\n\t\tconst { access } = await import(\"node:fs/promises\");\n\t\tawait access(\"/proc/driver/nvidia/version\");\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\nlet processProvider;\n/**\n* The provider for a runner created without one: GPU if possible, otherwise CPU.\n* One per process, so the GPU probe runs once however many runners there are.\n*/\nfunction createDefaultSessionProvider() {\n\tif (defaultProvider) return defaultProvider();\n\tprocessProvider ??= new AutoSessionProvider();\n\treturn processProvider;\n}\n/**\n* CPUs this process may use: the affinity mask, capped by a cgroup CPU quota\n* (containers). ONNX Runtime sizes its thread pool from the host's cores, which\n* oversubscribes a container limited to fewer CPUs than the host has.\n*/\nasync function availableCpus() {\n\tconst os = await import(\"node:os\");\n\tconst cpus = typeof os.availableParallelism === \"function\" ? os.availableParallelism() : os.cpus().length;\n\tconst quota = await cgroupCpuQuota();\n\treturn Math.max(1, quota !== void 0 ? Math.min(cpus, quota) : cpus);\n}\n/** cgroup v2 `cpu.max` or v1 `cpu.cfs_quota_us`, in CPUs (rounded up); undefined when unlimited. */\nasync function cgroupCpuQuota() {\n\tif (typeof process === \"undefined\" || process.platform !== \"linux\") return;\n\tconst { readFile: readFile$1 } = await import(\"node:fs/promises\");\n\tconst read = (path) => readFile$1(path, \"utf8\").then((text$1) => text$1.trim(), () => void 0);\n\tconst toCpus = (quota, period) => quota > 0 && period > 0 ? Math.ceil(quota / period) : void 0;\n\tconst v2 = await read(\"/sys/fs/cgroup/cpu.max\");\n\tif (v2 !== void 0) {\n\t\tconst [quota, period] = v2.split(/\\s+/);\n\t\treturn quota === \"max\" ? void 0 : toCpus(Number(quota), Number(period));\n\t}\n\tconst v1Quota = await read(\"/sys/fs/cgroup/cpu/cpu.cfs_quota_us\");\n\tconst v1Period = await read(\"/sys/fs/cgroup/cpu/cpu.cfs_period_us\");\n\tif (v1Quota === void 0 || v1Period === void 0) return void 0;\n\treturn toCpus(Number(v1Quota), Number(v1Period));\n}\n/**\n* Intra-op threads for CPU sessions: `FRAMEFIELDS_VISION_THREADS` when set,\n* else the available CPUs on Linux (where containers cap them), else ONNX\n* Runtime's own default (undefined).\n*/\nasync function cpuSessionThreads() {\n\tconst env = typeof process !== \"undefined\" ? Number.parseInt(process.env.FRAMEFIELDS_VISION_THREADS ?? \"\", 10) : NaN;\n\tif (Number.isFinite(env) && env > 0) return env;\n\tif (typeof process === \"undefined\" || process.platform !== \"linux\") return;\n\treturn availableCpus();\n}\n/** onnxruntime-node provider. The native module is imported lazily on first session. */\nvar NodeSessionProvider = class {\n\tkind = \"node\";\n\t_executionProviders;\n\tconstructor(options = {}) {\n\t\tthis._executionProviders = options.executionProviders ?? [\"cpu\"];\n\t}\n\tbackend() {\n\t\treturn Promise.resolve(this._executionProviders.includes(\"cuda\") ? \"cuda\" : \"cpu\");\n\t}\n\tortPromise;\n\tasync ort() {\n\t\tif (!this.ortPromise) this.ortPromise = import(\"onnxruntime-node\").catch((err) => {\n\t\t\tthis.ortPromise = void 0;\n\t\t\tthrow new Error(`onnxruntime-node failed to load (${String(err)}). Install it in the environment or provide a custom SessionProvider.`);\n\t\t});\n\t\treturn this.ortPromise;\n\t}\n\tasync createSession(modelBytes, options) {\n\t\tconst ort = await this.ort();\n\t\tconst threads = await cpuSessionThreads();\n\t\tconst session = await ort.InferenceSession.create(modelBytes, {\n\t\t\texecutionProviders: [...this._executionProviders],\n\t\t\texternalData: options?.externalData?.map(({ path, data }) => ({\n\t\t\t\tpath,\n\t\t\t\tdata\n\t\t\t})),\n\t\t\tgraphOptimizationLevel: \"all\",\n\t\t\t...threads !== void 0 ? {\n\t\t\t\tintraOpNumThreads: threads,\n\t\t\t\tinterOpNumThreads: 1\n\t\t\t} : {}\n\t\t});\n\t\tconst runMany = async (inputs) => {\n\t\t\tconst feeds = {};\n\t\t\tfor (const input of inputs) {\n\t\t\t\tconst name = inputs.length === 1 && !session.inputNames.includes(input.name) ? session.inputNames[0] ?? input.name : input.name;\n\t\t\t\tif (input.gpuBuffer) throw new Error(\"CPU vision sessions do not accept GPU buffers.\");\n\t\t\t\tfeeds[name] = input.data instanceof Uint8Array ? new ort.Tensor(\"bool\", input.data, [...input.dims]) : input.data instanceof BigInt64Array ? new ort.Tensor(\"int64\", input.data, [...input.dims]) : input.data instanceof Int32Array ? new ort.Tensor(\"int32\", input.data, [...input.dims]) : new ort.Tensor(\"float32\", input.data, [...input.dims]);\n\t\t\t}\n\t\t\tconst results = await session.run(feeds);\n\t\t\tconst outputs = {};\n\t\t\tfor (const [name, tensor] of Object.entries(results)) outputs[name] = {\n\t\t\t\tdata: tensor.data,\n\t\t\t\tdims: [...tensor.dims]\n\t\t\t};\n\t\t\treturn outputs;\n\t\t};\n\t\treturn {\n\t\t\trun: (input) => runMany([input]),\n\t\t\trunMany,\n\t\t\trelease: () => {\n\t\t\t\tsession.release();\n\t\t\t}\n\t\t};\n\t}\n};\n\n//#endregion\n//#region src/types.ts\nfunction isGpuImage(image) {\n\treturn image.texture !== void 0;\n}\n\n//#endregion\n//#region src/runner/vision-runner.ts\nconst MAX_INSTANCE_PASSES = 4;\n/**\n* Lazy vision runner.\n*\n* `create()` performs ZERO I/O: no downloads, no sessions. Each inference method downloads\n* its model and warms its session on FIRST USE ONLY, then reuses them for the process\n* lifetime. `detect()` and `segment()` share one RTMDet-Ins forward pass per frame.\n* Call `close()` to release sessions.\n*/\nvar VisionRunner = class VisionRunner {\n\tvariant;\n\tconfidence;\n\tclasses;\n\tmaskThreshold;\n\tfeatherRadius;\n\t_core;\n\t/** False for derived runners: their sessions belong to the runner they came from. */\n\t_ownsCore;\n\tconstructor(options, core) {\n\t\tthis.variant = options.variant ?? \"s\";\n\t\tthis.confidence = options.confidence ?? .3;\n\t\tthis.classes = options.classes;\n\t\tthis.maskThreshold = options.maskThreshold ?? .5;\n\t\tthis.featherRadius = options.featherRadius;\n\t\tthis._ownsCore = core === void 0;\n\t\tthis._core = core ?? {\n\t\t\tstore: options.store ?? new VisionModelStore({\n\t\t\t\tmodelsDir: options.modelsDir,\n\t\t\t\tbaseUrl: options.baseUrl,\n\t\t\t\ttimeoutMs: options.timeoutMs,\n\t\t\t\tonProgress: options.onProgress\n\t\t\t}),\n\t\t\tprovider: options.provider ?? createDefaultSessionProvider(),\n\t\t\tsessions: /* @__PURE__ */ new Map(),\n\t\t\ttensorScratch: /* @__PURE__ */ new Map(),\n\t\t\trunQueue: /* @__PURE__ */ new Map(),\n\t\t\tgpuInputs: /* @__PURE__ */ new Map(),\n\t\t\tinstancePasses: []\n\t\t};\n\t}\n\t/** Cheap: no downloads, no sessions, no side effects. */\n\tstatic create(options = {}) {\n\t\treturn new VisionRunner(options);\n\t}\n\t/**\n\t* A runner with other decode options (confidence, classes, mask threshold,\n\t* feather) that shares this runner's models, sessions and per-frame RTMDet-Ins\n\t* pass — e.g. one per layer, without loading a model twice. Its `close()` is a\n\t* no-op; closing this runner releases the shared sessions.\n\t*/\n\tderive(options) {\n\t\treturn new VisionRunner({\n\t\t\tvariant: this.variant,\n\t\t\tconfidence: options.confidence ?? this.confidence,\n\t\t\tclasses: \"classes\" in options ? options.classes : this.classes,\n\t\t\tmaskThreshold: options.maskThreshold ?? this.maskThreshold,\n\t\t\tfeatherRadius: \"featherRadius\" in options ? options.featherRadius : this.featherRadius\n\t\t}, this._core);\n\t}\n\tget modelsDir() {\n\t\treturn this._core.store.modelsDir;\n\t}\n\t/** Every registry model keyed to its current download state (downloaded → \"ready\"). */\n\tget downloadStatus() {\n\t\tconst statuses = /* @__PURE__ */ new Map();\n\t\tfor (const key of Object.keys(VISION_MODELS)) statuses.set(key, \"pending\");\n\t\tfor (const [key, status] of this._core.store.statuses()) statuses.set(key, status);\n\t\treturn statuses;\n\t}\n\t/** The model serving `task` (matte depends on frame aspect; defaults to square). */\n\tmodelKeyFor(task, aspect = 1) {\n\t\treturn modelKeyFor(task, this.variant, aspect);\n\t}\n\t/**\n\t* Explicit warm-up: downloads + sessions for the given tasks, ahead of first use.\n\t* `matte` warms both aspect variants (the frame aspect is unknown until inference).\n\t*/\n\tasync preload(tasks = [\"detect\"]) {\n\t\tconst keys = /* @__PURE__ */ new Set();\n\t\tfor (const task of tasks) if (task === \"matte\") {\n\t\t\tkeys.add(\"selfie-square\");\n\t\t\tkeys.add(\"selfie-landscape\");\n\t\t} else keys.add(this.modelKeyFor(task));\n\t\tawait this._core.store.preload([...keys]);\n\t\tawait Promise.all([...keys].map((key) => this.session(key)));\n\t}\n\t/** COCO-80 boxes (sorted by score, source pixels). Masks are not decoded. */\n\tasync detect(image) {\n\t\tconst pass = await this.instancePass(image);\n\t\treturn decodeRtmdetIns({\n\t\t\t...pass.outputs,\n\t\t\tmasks: void 0,\n\t\t\tmaskPlane: void 0\n\t\t}, this.instanceDecodeOptions(image, pass.transform)).detections;\n\t}\n\t/** COCO-80 boxes plus a frame-aligned soft mask per instance. */\n\tasync segment(image) {\n\t\tconst pass = await this.instancePass(image);\n\t\treturn decodeRtmdetIns(pass.outputs, this.instanceDecodeOptions(image, pass.transform));\n\t}\n\t/** COCO-17 keypoints per person (source pixels), highest score first. */\n\tasync pose(image) {\n\t\tconst key = this.modelKeyFor(\"pose\");\n\t\tconst { outputs, transform } = await this.infer(key, image);\n\t\tconst dets = output(outputs, \"dets\", key);\n\t\tconst keypoints = output(outputs, \"keypoints\", key);\n\t\treturn decodeRtmo({\n\t\t\tdets: dets.data,\n\t\t\tkeypoints: keypoints.data,\n\t\t\tcount: dets.dims[1] ?? 0,\n\t\t\tkeypointStride: keypoints.dims[3] ?? 3\n\t\t}, {\n\t\t\tconfidence: this.confidence,\n\t\t\ttransform,\n\t\t\tsourceWidth: image.width,\n\t\t\tsourceHeight: image.height\n\t\t});\n\t}\n\t/** Person-vs-background alpha for the whole frame (Selfie Segmenter). */\n\tasync matte(image) {\n\t\tconst key = this.modelKeyFor(\"matte\", image.width / image.height);\n\t\tconst [w, h] = VISION_MODELS[key].input;\n\t\tconst { outputs } = await this.infer(key, image);\n\t\treturn decodeSelfie(output(outputs, \"alphas\", key).data, w, h, {\n\t\t\tsourceWidth: image.width,\n\t\t\tsourceHeight: image.height,\n\t\t\tmaskThreshold: this.maskThreshold,\n\t\t\t...this.featherRadius !== void 0 ? { featherRadius: this.featherRadius } : {}\n\t\t});\n\t}\n\tclose() {\n\t\tif (!this._ownsCore) return;\n\t\tconst core = this._core;\n\t\tfor (const promise of core.sessions.values()) promise.then((session) => session.release()).catch(() => void 0);\n\t\tcore.sessions.clear();\n\t\tcore.runQueue.clear();\n\t\tfor (const { buffer } of core.gpuInputs.values()) buffer.destroy();\n\t\tcore.gpuInputs.clear();\n\t\tcore.instancePasses.length = 0;\n\t\tcore.store.clearMemoryCache();\n\t}\n\tasync instancePass(image) {\n\t\tconst passes = this._core.instancePasses;\n\t\tconst content = isGpuImage(image) ? await FrameTensorPipeline.for(image.device).contentKey(image) : contentKey(image);\n\t\tconst byContent = passes.find((pass$1) => pass$1.content === content);\n\t\tif (byContent) return byContent.result;\n\t\tconst key = this.modelKeyFor(\"segment\");\n\t\tconst result = this.infer(key, image).then(({ outputs, transform }) => ({\n\t\t\ttransform,\n\t\t\toutputs: RTMDET_INS_HEAD.scores in outputs ? headPassOutputs(outputs, key, transform) : end2endPassOutputs(outputs, key)\n\t\t}));\n\t\tconst pass = {\n\t\t\tcontent,\n\t\t\tresult\n\t\t};\n\t\tpasses.push(pass);\n\t\tif (passes.length > MAX_INSTANCE_PASSES) passes.shift();\n\t\tresult.catch(() => {\n\t\t\tconst index = passes.indexOf(pass);\n\t\t\tif (index >= 0) passes.splice(index, 1);\n\t\t});\n\t\treturn result;\n\t}\n\tinstanceDecodeOptions(image, transform) {\n\t\treturn {\n\t\t\tconfidence: this.confidence,\n\t\t\tclasses: this.classes,\n\t\t\tclassNames: COCO_CLASSES,\n\t\t\ttransform,\n\t\t\tsourceWidth: image.width,\n\t\t\tsourceHeight: image.height,\n\t\t\tmaskThreshold: this.maskThreshold,\n\t\t\t...this.featherRadius !== void 0 ? { featherRadius: this.featherRadius } : {}\n\t\t};\n\t}\n\t/**\n\t* Runs one model on one image. Runs of the same model are queued: they share\n\t* the input scratch buffer, and one run already uses the session's threads.\n\t*/\n\tinfer(key, image) {\n\t\tconst queue = this._core.runQueue;\n\t\tconst run = (queue.get(key) ?? Promise.resolve()).then(() => this.inferNow(key, image), () => this.inferNow(key, image));\n\t\tconst tail = run.catch(() => void 0);\n\t\tqueue.set(key, tail);\n\t\ttail.then(() => {\n\t\t\tif (queue.get(key) === tail) queue.delete(key);\n\t\t});\n\t\treturn run;\n\t}\n\tasync inferNow(key, frame) {\n\t\tconst session = await this.session(key);\n\t\tconst desc = VISION_MODELS[key];\n\t\tif (!isPreprocessFamily(desc.family)) throw new Error(`VisionRunner cannot run '${desc.family}' models; use the family's own tracker (e.g. Sam2Tracker or Sam3Tracker from @framefields/vision-sam).`);\n\t\tconst spec = preprocessSpec(desc.family, desc.input);\n\t\tconst dims = [\n\t\t\t1,\n\t\t\t3,\n\t\t\tspec.height,\n\t\t\tspec.width\n\t\t];\n\t\tlet image;\n\t\tif (isGpuImage(frame)) {\n\t\t\tif (this._core.provider.device === frame.device) {\n\t\t\t\tconst buffer = this.gpuInput(key, frame.device, spec);\n\t\t\t\tconst transform$1 = FrameTensorPipeline.for(frame.device).toTensor(frame, spec, buffer);\n\t\t\t\treturn {\n\t\t\t\t\toutputs: await session.run({\n\t\t\t\t\t\tname: \"input\",\n\t\t\t\t\t\tdata: EMPTY_TENSOR,\n\t\t\t\t\t\tgpuBuffer: buffer,\n\t\t\t\t\t\tdims\n\t\t\t\t\t}),\n\t\t\t\t\ttransform: transform$1\n\t\t\t\t};\n\t\t\t}\n\t\t\timage = await readTexturePixels(frame);\n\t\t} else image = frame;\n\t\tconst size = 3 * spec.width * spec.height;\n\t\tconst scratchByKey = this._core.tensorScratch;\n\t\tlet scratch = scratchByKey.get(key);\n\t\tif (!scratch || scratch.length < size) {\n\t\t\tscratch = new Float32Array(size);\n\t\t\tscratchByKey.set(key, scratch);\n\t\t}\n\t\tconst { tensor, transform } = imageToTensor(image, spec, scratch);\n\t\treturn {\n\t\t\toutputs: await session.run({\n\t\t\t\tname: \"input\",\n\t\t\t\tdata: tensor,\n\t\t\t\tdims\n\t\t\t}),\n\t\t\ttransform\n\t\t};\n\t}\n\tgpuInput(key, device, spec) {\n\t\tconst inputs = this._core.gpuInputs;\n\t\tconst size = FrameTensorPipeline.tensorBytes(spec);\n\t\tconst current = inputs.get(key);\n\t\tif (current?.device === device && current.buffer.size >= size) return current.buffer;\n\t\tcurrent?.buffer.destroy();\n\t\tconst buffer = device.createBuffer({\n\t\t\tlabel: `vision_input_${key}`,\n\t\t\tsize,\n\t\t\tusage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC\n\t\t});\n\t\tinputs.set(key, {\n\t\t\tdevice,\n\t\t\tbuffer\n\t\t});\n\t\treturn buffer;\n\t}\n\tsession(key) {\n\t\tconst { sessions, store, provider } = this._core;\n\t\tlet promise = sessions.get(key);\n\t\tif (!promise) {\n\t\t\tpromise = store.ensure(key).then((bytes) => provider.createSession(VISION_MODELS[key].family === \"rtmdet-ins\" ? rtmdetInsBody(bytes) : bytes)).catch((err) => {\n\t\t\t\tsessions.delete(key);\n\t\t\t\tstore.evict(key);\n\t\t\t\tthrow err;\n\t\t\t});\n\t\t\tsessions.set(key, promise);\n\t\t}\n\t\treturn promise;\n\t}\n};\nconst EMPTY_TENSOR = new Float32Array(0);\n/**\n* The RTMDet-Ins graph up to its head (see `RTMDET_INS_HEAD`): no NMS or\n* full-size masks in the graph, so the GPU part has fixed shapes and only\n* ~9 MB comes back. Models without those tensors run end to end.\n*/\nfunction rtmdetInsBody(bytes) {\n\ttry {\n\t\treturn extractSubgraph(bytes, Object.values(RTMDET_INS_HEAD));\n\t} catch {\n\t\treturn bytes;\n\t}\n}\n/** Outputs of the end2end graph: NMS done, one input-sized mask per detection. */\nfunction end2endPassOutputs(outputs, key) {\n\tconst dets = output(outputs, \"dets\", key);\n\tconst masks = output(outputs, \"masks\", key);\n\treturn {\n\t\tdets: dets.data,\n\t\tlabels: output(outputs, \"labels\", key).data,\n\t\tmasks: masks.data,\n\t\tcount: dets.dims[1] ?? 0,\n\t\tmaskHeight: masks.dims[masks.dims.length - 2] ?? 0,\n\t\tmaskWidth: masks.dims[masks.dims.length - 1] ?? 0\n\t};\n}\n/** Outputs of the head: selection here, mask logits only for detections asked for. */\nfunction headPassOutputs(outputs, key, transform) {\n\tconst scores = output(outputs, RTMDET_INS_HEAD.scores, key);\n\tconst features = output(outputs, RTMDET_INS_HEAD.maskFeatures, key);\n\tconst head = {\n\t\tscores: scores.data,\n\t\tboxes: output(outputs, RTMDET_INS_HEAD.boxes, key).data,\n\t\tkernels: output(outputs, RTMDET_INS_HEAD.kernels, key).data,\n\t\tmaskFeatures: features.data,\n\t\tanchors: scores.dims[1] ?? 0,\n\t\tclasses: scores.dims[2] ?? 0,\n\t\tmaskHeight: features.dims[2] ?? 0,\n\t\tmaskWidth: features.dims[3] ?? 0,\n\t\tinputWidth: transform.inputWidth,\n\t\tinputHeight: transform.inputHeight\n\t};\n\tconst picked = selectInstances(head);\n\tconst dets = new Float32Array(picked.length * 5);\n\tconst labels = new Int32Array(picked.length);\n\tpicked.forEach(({ anchor, classIndex, score }, i) => {\n\t\tdets.set(head.boxes.subarray(anchor * 4, anchor * 4 + 4), i * 5);\n\t\tdets[i * 5 + 4] = score;\n\t\tlabels[i] = classIndex;\n\t});\n\tconst planes = /* @__PURE__ */ new Map();\n\treturn {\n\t\tdets,\n\t\tlabels,\n\t\tcount: picked.length,\n\t\tmaskWidth: head.maskWidth,\n\t\tmaskHeight: head.maskHeight,\n\t\tmaskLogits: true,\n\t\tmaskPlane: (index) => {\n\t\t\tlet plane = planes.get(index);\n\t\t\tif (!plane) {\n\t\t\t\tplane = maskLogits(head, picked[index].anchor);\n\t\t\t\tplanes.set(index, plane);\n\t\t\t}\n\t\t\treturn plane;\n\t\t}\n\t};\n}\n/** Size plus a 64-bit hash of the pixels: equal keys mean the same picture. */\nfunction contentKey(image) {\n\tconst { data } = image;\n\tconst words = data.byteOffset % 4 === 0 ? data.byteLength >>> 2 : 0;\n\tconst view = new Uint32Array(data.buffer, data.byteOffset, words);\n\tlet h1 = 2166136261;\n\tlet h2 = 16777619 ^ data.byteLength;\n\tfor (let i = 0; i < words; i++) {\n\t\tconst v = view[i];\n\t\th1 = Math.imul(h1 ^ v, 2654435761);\n\t\th2 = Math.imul(h2 ^ v, 2246822519) ^ h1 >>> 15;\n\t}\n\tfor (let i = words * 4; i < data.length; i++) h1 = Math.imul(h1 ^ data[i], 2654435761);\n\treturn `${image.width}x${image.height}:${(h1 >>> 0).toString(36)}:${(h2 >>> 0).toString(36)}`;\n}\nfunction output(outputs, name, key) {\n\tconst tensor = outputs[name];\n\tif (!tensor) throw new Error(`Vision model '${key}' returned no '${name}' output (got: ${Object.keys(outputs).join(\", \") || \"none\"}). Expected the ${VISION_MODELS[key].source}.`);\n\treturn tensor;\n}\n\n//#endregion\n//#region src/segmentation/clip-subject.ts\n/**\n* Where a render-time Vision effect finds subject masks someone already\n* computed for its clip (`comp.vision(clip)` in framefields), so a matte layer\n* reuses them instead of segmenting the frame again, and a skeleton layer draws\n* the pose matched to that subject instead of the first person it detects. Set\n* on the Vision effect instance under this key; the renderer reads it from the effect.\n*/\nconst CLIP_SUBJECT = Symbol.for(\"framefields.vision.clipSubject\");\n\n//#endregion\n//#region src/segmentation/subject.ts\n/**\n* The frame's primary instance: the largest person when present, else the most confident\n* instance (lowest `detectionIndex` — detections are score-sorted). Size alone is a poor\n* signal without a person: the largest instance is usually a backdrop (\"dining table\").\n* `classes` (case-insensitive) limits which instances can be the subject.\n*/\nfunction selectSubjectMask(masks, classes) {\n\tconst allowed = classes && new Set(classes.map((c) => c.toLowerCase()));\n\tlet best;\n\tfor (const m of masks) {\n\t\tif (allowed && !allowed.has(m.category.toLowerCase())) continue;\n\t\tif (!best) {\n\t\t\tbest = m;\n\t\t\tcontinue;\n\t\t}\n\t\tconst mIsPerson = isPerson(m);\n\t\tif (mIsPerson !== isPerson(best)) {\n\t\t\tif (mIsPerson) best = m;\n\t\t} else if (mIsPerson ? m.area > best.area : m.detectionIndex < best.detectionIndex) best = m;\n\t}\n\treturn best;\n}\nfunction isPerson(mask) {\n\treturn mask.category.toLowerCase() === \"person\";\n}\n/** Tight pixel bounds of a mask's non-zero alpha, or null when empty. */\nfunction maskBounds(mask) {\n\tconst { mask: data, width, height } = mask;\n\tlet x0 = width;\n\tlet y0 = height;\n\tlet x1 = -1;\n\tlet y1 = -1;\n\tfor (let y = 0; y < height; y++) {\n\t\tconst row = y * width;\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\tif (data[row + x] === 0) continue;\n\t\t\tif (x < x0) x0 = x;\n\t\t\tif (x > x1) x1 = x;\n\t\t\tif (y < y0) y0 = y;\n\t\t\tif (y > y1) y1 = y;\n\t\t}\n\t}\n\treturn x1 < 0 ? null : {\n\t\tx0,\n\t\ty0,\n\t\tx1,\n\t\ty1\n\t};\n}\n/**\n* Builds the full subject silhouette: the primary instance plus every comparably sized\n* instance whose bounds sit mostly inside or across it.\n*\n* COCO has no \"clothing\" class, so a flowing dress, a held guitar or a ridden bike comes back\n* as its own instance (often mislabeled) — merging them keeps the whole figure in the cutout.\n* That is why `classes` only picks the subject: a dress detected as a \"kite\" still merges\n* into a \"person\" subject. The size cap keeps containers out: a small figure inside a tunnel\n* or window detected as a huge \"clock\" must not drag the whole frame into the subject.\n*/\nfunction mergeSubjectMask(masks, options = {}) {\n\tconst { classes, overlap = .5, maxGrowth = 2 } = options;\n\tconst subject = selectSubjectMask(masks, classes);\n\tif (!subject) return void 0;\n\tconst sb = maskBounds(subject);\n\tif (!sb) return subject;\n\tconst subjectArea = boundsArea(sb);\n\tconst parts = masks.filter((m) => {\n\t\tif (m === subject) return false;\n\t\tconst b = maskBounds(m);\n\t\treturn b !== null && boundsArea(b) <= subjectArea * maxGrowth && boundsOverlap(sb, b) >= overlap;\n\t});\n\tif (parts.length === 0) return subject;\n\tconst merged = subject.mask.slice();\n\tfor (const part of parts) {\n\t\tconst data = part.mask;\n\t\tfor (let i = 0; i < merged.length; i++) if (data[i] > merged[i]) merged[i] = data[i];\n\t}\n\tlet area = 0;\n\tfor (let i = 0; i < merged.length; i++) area += merged[i];\n\tarea = Math.round(area / 255);\n\treturn {\n\t\t...subject,\n\t\tmask: merged,\n\t\tarea,\n\t\tcoverage: area / (subject.width * subject.height)\n\t};\n}\nfunction boundsArea(b) {\n\treturn (b.x1 - b.x0 + 1) * (b.y1 - b.y0 + 1);\n}\nfunction boundsOverlap(a, b) {\n\tconst iw = Math.min(a.x1, b.x1) - Math.max(a.x0, b.x0) + 1;\n\tconst ih = Math.min(a.y1, b.y1) - Math.max(a.y0, b.y0) + 1;\n\tif (iw <= 0 || ih <= 0) return 0;\n\treturn iw * ih / Math.min(boundsArea(a), boundsArea(b));\n}\n\n//#endregion\n//#region src/signals/mask-object.ts\n/** Tracked-object geometry of one selected mask (bounds, center, velocity), with no detector involved; the track ID is the mask's (default 1). */\nfunction maskObject(mask, frame, fps, score, previous) {\n\tlet left = mask.width, top = mask.height, right = -1, bottom = -1;\n\tfor (let y$1 = 0; y$1 < mask.height; y$1++) for (let x$1 = 0; x$1 < mask.width; x$1++) {\n\t\tif ((mask.mask[y$1 * mask.width + x$1] ?? 0) < 128) continue;\n\t\tleft = Math.min(left, x$1);\n\t\ttop = Math.min(top, y$1);\n\t\tright = Math.max(right, x$1);\n\t\tbottom = Math.max(bottom, y$1);\n\t}\n\tconst active = right >= 0;\n\tconst x = active ? left : 0, y = active ? top : 0;\n\tconst width = active ? right - left + 1 : 0, height = active ? bottom - top + 1 : 0;\n\tconst centerX = x + width / 2, centerY = y + height / 2;\n\tconst vx = active && previous?.active ? (centerX - previous.centerX) * fps : 0;\n\tconst vy = active && previous?.active ? (centerY - previous.centerY) * fps : 0;\n\treturn {\n\t\ttrackId: mask.trackId ?? 1,\n\t\tcategory: mask.category,\n\t\tscore,\n\t\tboundingBox: {\n\t\t\toriginX: x,\n\t\t\toriginY: y,\n\t\t\twidth,\n\t\t\theight,\n\t\t\tnormalizedX: x / mask.width,\n\t\t\tnormalizedY: y / mask.height,\n\t\t\tnormalizedWidth: width / mask.width,\n\t\t\tnormalizedHeight: height / mask.height\n\t\t},\n\t\tcenterX,\n\t\tcenterY,\n\t\tnormalizedCenterX: centerX / mask.width,\n\t\tnormalizedCenterY: centerY / mask.height,\n\t\tvelocity: {\n\t\t\tvx,\n\t\t\tvy\n\t\t},\n\t\tspeed: Math.hypot(vx, vy),\n\t\tage: frame + 1,\n\t\thits: frame + 1,\n\t\tactive,\n\t\tisCoasting: false\n\t};\n}\n\n//#endregion\n//#region src/spatial/camera-space-transformer.ts\nvar SpatialLandmarkTransformer = class {\n\twidth;\n\theight;\n\tfovRad;\n\tfocalDistance;\n\tconstructor(camera) {\n\t\tthis.width = camera.width;\n\t\tthis.height = camera.height;\n\t\tthis.fovRad = (camera.fov ?? 60) * Math.PI / 180;\n\t\tthis.focalDistance = camera.cameraDistance ?? this.height / 2 / Math.tan(this.fovRad / 2);\n\t}\n\t/**\n\t* Projects a normalized landmark [0, 1] into 2D/3D canvas coordinates.\n\t*/\n\tprojectNormalizedLandmark(landmark, offsetZ = 0) {\n\t\tconst screenX = landmark.x * this.width;\n\t\tconst screenY = landmark.y * this.height;\n\t\tconst rawZ = landmark.z * this.width + offsetZ;\n\t\tconst effectiveZ = Math.min(rawZ, this.focalDistance - 10);\n\t\tconst scale = this.focalDistance / (this.focalDistance - effectiveZ);\n\t\treturn {\n\t\t\tx: screenX,\n\t\t\ty: screenY,\n\t\t\tz: rawZ,\n\t\t\tscale: Math.max(.1, scale)\n\t\t};\n\t}\n\t/**\n\t* Projects a metric world landmark [X_w, Y_w, Z_w] in meters into canvas space.\n\t*/\n\tprojectWorldLandmark(worldLandmark, subjectDistanceMeters = 2, scaleMetersToPixels = 800) {\n\t\tconst centerX = this.width / 2;\n\t\tconst centerY = this.height / 2;\n\t\tconst worldX = worldLandmark.x * scaleMetersToPixels;\n\t\tconst worldY = worldLandmark.y * scaleMetersToPixels;\n\t\tconst worldZ = (worldLandmark.z + subjectDistanceMeters) * scaleMetersToPixels;\n\t\tconst effectiveZ = Math.min(worldZ, this.focalDistance - 10);\n\t\tconst scale = this.focalDistance / (this.focalDistance - effectiveZ);\n\t\treturn {\n\t\t\tx: centerX + worldX * scale,\n\t\t\ty: centerY + worldY * scale,\n\t\t\tz: worldZ,\n\t\t\tscale: Math.max(.1, scale)\n\t\t};\n\t}\n};\n\n//#endregion\n//#region src/tracking/pose-track-matcher.ts\nfunction getPersonBoundingBox(person) {\n\tif (person.boundingBox && person.boundingBox.width > 0 && person.boundingBox.height > 0) return {\n\t\toriginX: person.boundingBox.originX,\n\t\toriginY: person.boundingBox.originY,\n\t\twidth: person.boundingBox.width,\n\t\theight: person.boundingBox.height\n\t};\n\tlet minX = Infinity;\n\tlet minY = Infinity;\n\tlet maxX = -Infinity;\n\tlet maxY = -Infinity;\n\tlet validCount = 0;\n\tfor (const kp of person.keypoints) if (kp.visibility > .1) {\n\t\tvalidCount++;\n\t\tif (kp.x < minX) minX = kp.x;\n\t\tif (kp.y < minY) minY = kp.y;\n\t\tif (kp.x > maxX) maxX = kp.x;\n\t\tif (kp.y > maxY) maxY = kp.y;\n\t}\n\tif (validCount === 0 || minX >= maxX || minY >= maxY) return {\n\t\toriginX: person.boundingBox?.originX ?? 0,\n\t\toriginY: person.boundingBox?.originY ?? 0,\n\t\twidth: person.boundingBox?.width ?? 0,\n\t\theight: person.boundingBox?.height ?? 0\n\t};\n\treturn {\n\t\toriginX: minX,\n\t\toriginY: minY,\n\t\twidth: maxX - minX,\n\t\theight: maxY - minY\n\t};\n}\n/**\n* Matches detected pose people with active person tracks using greedy bipartite IoU.\n*\n* Annotates each person with the matched trackId.\n*/\nfunction matchPoseToTracks(people, trackedObjects, minIoU = .15) {\n\tif (people.length === 0) return [];\n\tconst personTracks = trackedObjects.filter((o) => o.category.toLowerCase() === \"person\" && o.active);\n\tif (personTracks.length === 0) return [...people];\n\tconst candidateMatches = [];\n\tfor (let p = 0; p < people.length; p++) {\n\t\tconst person = people[p];\n\t\tif (person.trackId !== void 0) continue;\n\t\tconst pBox = getPersonBoundingBox(person);\n\t\tconst isNormalized = pBox.width <= 1.05 && pBox.height <= 1.05;\n\t\tfor (const trk of personTracks) {\n\t\t\tconst iou$1 = computeIoU(pBox, isNormalized && trk.boundingBox.normalizedWidth > 0 ? {\n\t\t\t\toriginX: trk.boundingBox.normalizedX,\n\t\t\t\toriginY: trk.boundingBox.normalizedY,\n\t\t\t\twidth: trk.boundingBox.normalizedWidth,\n\t\t\t\theight: trk.boundingBox.normalizedHeight\n\t\t\t} : trk.boundingBox);\n\t\t\tif (iou$1 >= minIoU) candidateMatches.push({\n\t\t\t\tpersonIdx: p,\n\t\t\t\ttrackId: trk.trackId,\n\t\t\t\tiou: iou$1\n\t\t\t});\n\t\t}\n\t}\n\tcandidateMatches.sort((a, b) => b.iou - a.iou);\n\tconst assignedPeople = /* @__PURE__ */ new Set();\n\tconst assignedTracks = /* @__PURE__ */ new Set();\n\tconst personTrackMap = /* @__PURE__ */ new Map();\n\tfor (const match of candidateMatches) {\n\t\tif (assignedPeople.has(match.personIdx) || assignedTracks.has(match.trackId)) continue;\n\t\tassignedPeople.add(match.personIdx);\n\t\tassignedTracks.add(match.trackId);\n\t\tpersonTrackMap.set(match.personIdx, match.trackId);\n\t}\n\tif (people.length === 1 && personTracks.length === 1 && !personTrackMap.has(0) && people[0].trackId === void 0) personTrackMap.set(0, personTracks[0].trackId);\n\treturn people.map((person, idx) => {\n\t\tif (person.trackId !== void 0) return person;\n\t\tconst trackId = personTrackMap.get(idx);\n\t\treturn trackId !== void 0 ? {\n\t\t\t...person,\n\t\t\ttrackId\n\t\t} : person;\n\t});\n}\n\n//#endregion\n//#region src/signals/vision-bundle.ts\nvar VisionBundle = class {\n\tobjects;\n\tposeLandmarks;\n\tmasks;\n\tsegmentation;\n\tclasses;\n\tposeLandmarksTensor;\n\tobjectsTensor;\n\tmasksTensor;\n\t/** Per-class detection histogram [nc] — top-level convenience mirror of `classes.histogram`. */\n\thistogramTensor;\n\t_totalFrames;\n\t_fps;\n\t_width;\n\t_height;\n\t_transformer;\n\t_stencilTexture;\n\t_maskSource;\n\t_matteSource;\n\t_cameraFov;\n\t_poseCache = /* @__PURE__ */ new Map();\n\t_objectCache = /* @__PURE__ */ new Map();\n\t_maskCache = /* @__PURE__ */ new Map();\n\t_matteCache = /* @__PURE__ */ new Map();\n\t_poseLmCache = /* @__PURE__ */ new Map();\n\t_trackCache = /* @__PURE__ */ new Map();\n\t_categoryCache = /* @__PURE__ */ new Map();\n\t_classCache = /* @__PURE__ */ new Map();\n\t_maskTrackCache = /* @__PURE__ */ new Map();\n\t_registeredSignals = /* @__PURE__ */ new Set();\n\tconstructor(options = {}) {\n\t\tthis._maskSource = options.maskSource;\n\t\tthis._matteSource = options.matteSource;\n\t\tthis._cameraFov = options.cameraFov ?? 60;\n\t\tthis._totalFrames = options.totalFrames ?? 120;\n\t\tthis._fps = options.fps ?? 24;\n\t\tthis._width = options.width ?? 1920;\n\t\tthis._height = options.height ?? 1080;\n\t\tthis._transformer = new SpatialLandmarkTransformer({\n\t\t\twidth: this._width,\n\t\t\theight: this._height,\n\t\t\tfov: options.cameraFov ?? 60\n\t\t});\n\t\tconst self = this;\n\t\tconst programmaticSignal$1 = (evaluator, sigOptions) => {\n\t\t\tconst sig = programmaticSignal(evaluator, sigOptions);\n\t\t\tthis._registeredSignals.add(sig);\n\t\t\treturn sig;\n\t\t};\n\t\tconst getPrimaryLandmarks = (frame) => {\n\t\t\treturn this.getPoseResult(frame).people[0]?.keypoints ?? createNeutralLandmarks();\n\t\t};\n\t\tconst createPoseCoord = (index, label) => {\n\t\t\tconst getLm = (frame) => getPrimaryLandmarks(frame)[index] ?? {\n\t\t\t\tx: .5,\n\t\t\t\ty: .5,\n\t\t\t\tz: 0\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tx: programmaticSignal$1((ctx) => getLm(ctx.frame).x, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_x`\n\t\t\t\t}),\n\t\t\t\ty: programmaticSignal$1((ctx) => getLm(ctx.frame).y, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_y`\n\t\t\t\t}),\n\t\t\t\tz: programmaticSignal$1((ctx) => getLm(ctx.frame).z ?? 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_z`\n\t\t\t\t}),\n\t\t\t\tscreenX: programmaticSignal$1((ctx) => this._transformer.projectNormalizedLandmark(getLm(ctx.frame)).x, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_screenX`\n\t\t\t\t}),\n\t\t\t\tscreenY: programmaticSignal$1((ctx) => this._transformer.projectNormalizedLandmark(getLm(ctx.frame)).y, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_screenY`\n\t\t\t\t})\n\t\t\t};\n\t\t};\n\t\tconst getOrCreatePoseLm = (index) => {\n\t\t\tlet sig = this._poseLmCache.get(index);\n\t\t\tif (!sig) {\n\t\t\t\tsig = createPoseCoord(index, COCO17_KEYPOINT_NAMES[index] ?? `kpt_${index}`);\n\t\t\t\tthis._poseLmCache.set(index, sig);\n\t\t\t}\n\t\t\treturn sig;\n\t\t};\n\t\tconst poseNamed = {\n\t\t\tnose: getOrCreatePoseLm(COCO17_KEYPOINTS.NOSE),\n\t\t\tleftEye: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_EYE),\n\t\t\trightEye: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_EYE),\n\t\t\tleftEar: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_EAR),\n\t\t\trightEar: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_EAR),\n\t\t\tshoulder: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_SHOULDER),\n\t\t\tleftShoulder: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_SHOULDER),\n\t\t\trightShoulder: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_SHOULDER),\n\t\t\tleftElbow: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_ELBOW),\n\t\t\trightElbow: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_ELBOW),\n\t\t\tleftWrist: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_WRIST),\n\t\t\trightWrist: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_WRIST),\n\t\t\tleftHip: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_HIP),\n\t\t\trightHip: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_HIP),\n\t\t\tleftKnee: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_KNEE),\n\t\t\trightKnee: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_KNEE),\n\t\t\tleftAnkle: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_ANKLE),\n\t\t\trightAnkle: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_ANKLE),\n\t\t\tget: getOrCreatePoseLm\n\t\t};\n\t\tthis.poseLandmarks = new Proxy(poseNamed, { get(target, prop, receiver) {\n\t\t\tif (typeof prop === \"string\" && /^\\d+$/.test(prop)) return target.get(Number(prop));\n\t\t\tif (typeof prop === \"number\") return target.get(prop);\n\t\t\treturn Reflect.get(target, prop, receiver);\n\t\t} });\n\t\tconst neutralTrack = (trackId, category = \"unknown\") => ({\n\t\t\ttrackId,\n\t\t\tcategory,\n\t\t\tscore: 0,\n\t\t\tboundingBox: {\n\t\t\t\toriginX: this._width / 2,\n\t\t\t\toriginY: this._height / 2,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0,\n\t\t\t\tnormalizedX: .5,\n\t\t\t\tnormalizedY: .5,\n\t\t\t\tnormalizedWidth: 0,\n\t\t\t\tnormalizedHeight: 0\n\t\t\t},\n\t\t\tcenterX: this._width / 2,\n\t\t\tcenterY: this._height / 2,\n\t\t\tnormalizedCenterX: .5,\n\t\t\tnormalizedCenterY: .5,\n\t\t\tvelocity: {\n\t\t\t\tvx: 0,\n\t\t\t\tvy: 0\n\t\t\t},\n\t\t\tspeed: 0,\n\t\t\tage: 0,\n\t\t\thits: 0,\n\t\t\tactive: false,\n\t\t\tisCoasting: false\n\t\t});\n\t\tconst createAnchor = (getPos, label) => {\n\t\t\tconst screenX = programmaticSignal$1((ctx) => getPos(ctx.frame).sx, {\n\t\t\t\tfps: this._fps,\n\t\t\t\tlabel: `${label}_screenX`\n\t\t\t});\n\t\t\tconst screenY = programmaticSignal$1((ctx) => getPos(ctx.frame).sy, {\n\t\t\t\tfps: this._fps,\n\t\t\t\tlabel: `${label}_screenY`\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tx: programmaticSignal$1((ctx) => this._width > 0 ? getPos(ctx.frame).sx / this._width : 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_x`\n\t\t\t\t}),\n\t\t\t\ty: programmaticSignal$1((ctx) => this._height > 0 ? getPos(ctx.frame).sy / this._height : 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_y`\n\t\t\t\t}),\n\t\t\t\tz: programmaticSignal$1(() => 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_z`\n\t\t\t\t}),\n\t\t\t\tscreenX,\n\t\t\t\tscreenY\n\t\t\t};\n\t\t};\n\t\tconst buildTrackPoseSignals = (resolveTrack, label, fixedId) => {\n\t\t\tconst resolvePerson = (frame) => {\n\t\t\t\tconst poseRes = self.getPoseResult(frame);\n\t\t\t\tif (poseRes.people.length === 0) return void 0;\n\t\t\t\tconst trk = resolveTrack(frame);\n\t\t\t\tconst targetId = fixedId ?? trk.trackId;\n\t\t\t\tconst byId = poseRes.people.find((p) => p.trackId === targetId);\n\t\t\t\tif (byId) return byId;\n\t\t\t\tif (!trk.active && poseRes.people.length > 1) return void 0;\n\t\t\t\tif (poseRes.people.length === 1) return poseRes.people[0];\n\t\t\t\tlet bestPerson;\n\t\t\t\tlet bestIoU = .1;\n\t\t\t\tfor (const p of poseRes.people) {\n\t\t\t\t\tconst pBox = getPersonBoundingBox(p);\n\t\t\t\t\tconst iou$1 = computeIoU(pBox, pBox.width <= 1.05 && pBox.height <= 1.05 && trk.boundingBox.normalizedWidth > 0 ? {\n\t\t\t\t\t\toriginX: trk.boundingBox.normalizedX,\n\t\t\t\t\t\toriginY: trk.boundingBox.normalizedY,\n\t\t\t\t\t\twidth: trk.boundingBox.normalizedWidth,\n\t\t\t\t\t\theight: trk.boundingBox.normalizedHeight\n\t\t\t\t\t} : trk.boundingBox);\n\t\t\t\t\tif (iou$1 > bestIoU) {\n\t\t\t\t\t\tbestIoU = iou$1;\n\t\t\t\t\t\tbestPerson = p;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn bestPerson;\n\t\t\t};\n\t\t\tconst hasPose = programmaticSignal$1((ctx) => resolvePerson(ctx.frame) ? 1 : 0, {\n\t\t\t\tfps: this._fps,\n\t\t\t\tlabel: `${label}_hasPose`\n\t\t\t});\n\t\t\tconst createCoord = (index, kptName) => {\n\t\t\t\tconst getLm = (frame) => {\n\t\t\t\t\tconst kp = resolvePerson(frame)?.keypoints[index];\n\t\t\t\t\tif (kp && kp.visibility > .05) return {\n\t\t\t\t\t\tx: kp.x,\n\t\t\t\t\t\ty: kp.y,\n\t\t\t\t\t\tz: 0\n\t\t\t\t\t};\n\t\t\t\t\tconst trk = resolveTrack(frame);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tx: trk.normalizedCenterX,\n\t\t\t\t\t\ty: trk.normalizedCenterY,\n\t\t\t\t\t\tz: 0\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\tx: programmaticSignal$1((ctx) => getLm(ctx.frame).x, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_${kptName}_x`\n\t\t\t\t\t}),\n\t\t\t\t\ty: programmaticSignal$1((ctx) => getLm(ctx.frame).y, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_${kptName}_y`\n\t\t\t\t\t}),\n\t\t\t\t\tz: programmaticSignal$1((ctx) => getLm(ctx.frame).z ?? 0, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_${kptName}_z`\n\t\t\t\t\t}),\n\t\t\t\t\tscreenX: programmaticSignal$1((ctx) => self._transformer.projectNormalizedLandmark(getLm(ctx.frame)).x, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_${kptName}_screenX`\n\t\t\t\t\t}),\n\t\t\t\t\tscreenY: programmaticSignal$1((ctx) => self._transformer.projectNormalizedLandmark(getLm(ctx.frame)).y, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_${kptName}_screenY`\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t};\n\t\t\tconst coordsCache = /* @__PURE__ */ new Map();\n\t\t\tconst getOrCreateCoord = (idx) => {\n\t\t\t\tlet c = coordsCache.get(idx);\n\t\t\t\tif (!c) {\n\t\t\t\t\tc = createCoord(idx, COCO17_KEYPOINT_NAMES[idx] ?? `kpt_${idx}`);\n\t\t\t\t\tcoordsCache.set(idx, c);\n\t\t\t\t}\n\t\t\t\treturn c;\n\t\t\t};\n\t\t\tconst namedPose = {\n\t\t\t\thasPose,\n\t\t\t\twristSpeed: programmaticSignal$1((ctx) => {\n\t\t\t\t\tconst f = ctx.frame;\n\t\t\t\t\tconst curr = resolvePerson(f);\n\t\t\t\t\tif (!curr) return 0;\n\t\t\t\t\tconst prev = resolvePerson(Math.max(0, f - 1));\n\t\t\t\t\tconst currKp = curr.keypoints;\n\t\t\t\t\tconst prevKp = prev?.keypoints;\n\t\t\t\t\tconst rwCurr = currKp[COCO17_KEYPOINTS.RIGHT_WRIST];\n\t\t\t\t\tconst rwPrev = prevKp?.[COCO17_KEYPOINTS.RIGHT_WRIST];\n\t\t\t\t\tlet rwSpeed = 0;\n\t\t\t\t\tif (rwCurr && rwPrev && rwCurr.visibility > .1 && rwPrev.visibility > .1) {\n\t\t\t\t\t\tconst dx = (rwCurr.x - rwPrev.x) * this._width;\n\t\t\t\t\t\tconst dy = (rwCurr.y - rwPrev.y) * this._height;\n\t\t\t\t\t\trwSpeed = Math.sqrt(dx * dx + dy * dy) * this._fps;\n\t\t\t\t\t}\n\t\t\t\t\tconst lwCurr = currKp[COCO17_KEYPOINTS.LEFT_WRIST];\n\t\t\t\t\tconst lwPrev = prevKp?.[COCO17_KEYPOINTS.LEFT_WRIST];\n\t\t\t\t\tlet lwSpeed = 0;\n\t\t\t\t\tif (lwCurr && lwPrev && lwCurr.visibility > .1 && lwPrev.visibility > .1) {\n\t\t\t\t\t\tconst dx = (lwCurr.x - lwPrev.x) * this._width;\n\t\t\t\t\t\tconst dy = (lwCurr.y - lwPrev.y) * this._height;\n\t\t\t\t\t\tlwSpeed = Math.sqrt(dx * dx + dy * dy) * this._fps;\n\t\t\t\t\t}\n\t\t\t\t\treturn Math.max(rwSpeed, lwSpeed);\n\t\t\t\t}, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_wristSpeed`\n\t\t\t\t}),\n\t\t\t\thandRaised: programmaticSignal$1((ctx) => {\n\t\t\t\t\tconst p = resolvePerson(ctx.frame);\n\t\t\t\t\tif (!p) return 0;\n\t\t\t\t\tconst k = p.keypoints;\n\t\t\t\t\tconst lw = k[COCO17_KEYPOINTS.LEFT_WRIST];\n\t\t\t\t\tconst ls = k[COCO17_KEYPOINTS.LEFT_SHOULDER];\n\t\t\t\t\tconst rw = k[COCO17_KEYPOINTS.RIGHT_WRIST];\n\t\t\t\t\tconst rs = k[COCO17_KEYPOINTS.RIGHT_SHOULDER];\n\t\t\t\t\tconst lRaised = lw && ls && lw.visibility > .1 && ls.visibility > .1 && lw.y < ls.y;\n\t\t\t\t\tconst rRaised = rw && rs && rw.visibility > .1 && rs.visibility > .1 && rw.y < rs.y;\n\t\t\t\t\treturn lRaised || rRaised ? 1 : 0;\n\t\t\t\t}, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_handRaised`\n\t\t\t\t}),\n\t\t\t\tbodyTiltAngle: programmaticSignal$1((ctx) => {\n\t\t\t\t\tconst p = resolvePerson(ctx.frame);\n\t\t\t\t\tif (!p) return 0;\n\t\t\t\t\tconst k = p.keypoints;\n\t\t\t\t\tconst ls = k[COCO17_KEYPOINTS.LEFT_SHOULDER];\n\t\t\t\t\tconst rs = k[COCO17_KEYPOINTS.RIGHT_SHOULDER];\n\t\t\t\t\tconst lh = k[COCO17_KEYPOINTS.LEFT_HIP];\n\t\t\t\t\tconst rh = k[COCO17_KEYPOINTS.RIGHT_HIP];\n\t\t\t\t\tif (!ls || !rs || !lh || !rh) return 0;\n\t\t\t\t\tconst sx = (ls.x + rs.x) / 2 * this._width;\n\t\t\t\t\tconst sy = (ls.y + rs.y) / 2 * this._height;\n\t\t\t\t\tconst hx = (lh.x + rh.x) / 2 * this._width;\n\t\t\t\t\tconst hy = (lh.y + rh.y) / 2 * this._height;\n\t\t\t\t\tconst dx = sx - hx;\n\t\t\t\t\tconst dy = sy - hy;\n\t\t\t\t\tif (dx === 0 && dy === 0) return 0;\n\t\t\t\t\treturn Math.atan2(dx, -dy);\n\t\t\t\t}, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_bodyTiltAngle`\n\t\t\t\t}),\n\t\t\t\tnose: getOrCreateCoord(COCO17_KEYPOINTS.NOSE),\n\t\t\t\tleftEye: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_EYE),\n\t\t\t\trightEye: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_EYE),\n\t\t\t\tleftEar: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_EAR),\n\t\t\t\trightEar: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_EAR),\n\t\t\t\tshoulder: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_SHOULDER),\n\t\t\t\tleftShoulder: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_SHOULDER),\n\t\t\t\trightShoulder: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_SHOULDER),\n\t\t\t\tleftElbow: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_ELBOW),\n\t\t\t\trightElbow: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_ELBOW),\n\t\t\t\tleftWrist: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_WRIST),\n\t\t\t\trightWrist: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_WRIST),\n\t\t\t\tleftHip: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_HIP),\n\t\t\t\trightHip: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_HIP),\n\t\t\t\tleftKnee: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_KNEE),\n\t\t\t\trightKnee: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_KNEE),\n\t\t\t\tleftAnkle: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_ANKLE),\n\t\t\t\trightAnkle: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_ANKLE),\n\t\t\t\tget: getOrCreateCoord\n\t\t\t};\n\t\t\treturn new Proxy(namedPose, { get(target, prop, receiver) {\n\t\t\t\tif (typeof prop === \"string\" && /^\\d+$/.test(prop)) return target.get(Number(prop));\n\t\t\t\tif (typeof prop === \"number\") return target.get(prop);\n\t\t\t\treturn Reflect.get(target, prop, receiver);\n\t\t\t} });\n\t\t};\n\t\tconst buildTrackSignals = (resolve$1, label, fixedCategory, fixedId) => {\n\t\t\tconst getBox = (f) => resolve$1(f).boundingBox;\n\t\t\tconst pose = buildTrackPoseSignals(resolve$1, `${label}_pose`, fixedId);\n\t\t\tconst anchor = (name, sx, sy) => createAnchor((f) => ({\n\t\t\t\tsx: sx(getBox(f)),\n\t\t\t\tsy: sy(getBox(f))\n\t\t\t}), `${label}_${name}`);\n\t\t\tconst center = anchor(\"center\", (b) => b.originX + b.width / 2, (b) => b.originY + b.height / 2);\n\t\t\tconst speed = programmaticSignal$1((ctx) => resolve$1(ctx.frame).speed, {\n\t\t\t\tfps: this._fps,\n\t\t\t\tlabel: `${label}_speed`\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tget trackId() {\n\t\t\t\t\treturn fixedId ?? resolve$1(0).trackId;\n\t\t\t\t},\n\t\t\t\tget category() {\n\t\t\t\t\treturn fixedCategory ?? resolve$1(0).category;\n\t\t\t\t},\n\t\t\t\tbounds: {\n\t\t\t\t\tx: programmaticSignal$1((ctx) => getBox(ctx.frame).normalizedX, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_normX`\n\t\t\t\t\t}),\n\t\t\t\t\ty: programmaticSignal$1((ctx) => getBox(ctx.frame).normalizedY, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_normY`\n\t\t\t\t\t}),\n\t\t\t\t\twidth: programmaticSignal$1((ctx) => getBox(ctx.frame).normalizedWidth, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_normWidth`\n\t\t\t\t\t}),\n\t\t\t\t\theight: programmaticSignal$1((ctx) => getBox(ctx.frame).normalizedHeight, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_normHeight`\n\t\t\t\t\t}),\n\t\t\t\t\tscreenX: programmaticSignal$1((ctx) => getBox(ctx.frame).originX, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_screenX`\n\t\t\t\t\t}),\n\t\t\t\t\tscreenY: programmaticSignal$1((ctx) => getBox(ctx.frame).originY, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_screenY`\n\t\t\t\t\t}),\n\t\t\t\t\tscreenWidth: programmaticSignal$1((ctx) => getBox(ctx.frame).width, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_screenWidth`\n\t\t\t\t\t}),\n\t\t\t\t\tscreenHeight: programmaticSignal$1((ctx) => getBox(ctx.frame).height, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_screenHeight`\n\t\t\t\t\t}),\n\t\t\t\t\taspectRatio: programmaticSignal$1((ctx) => {\n\t\t\t\t\t\tconst b = getBox(ctx.frame);\n\t\t\t\t\t\treturn b.height > 0 ? b.width / b.height : 1;\n\t\t\t\t\t}, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_aspectRatio`\n\t\t\t\t\t}),\n\t\t\t\t\tarea: programmaticSignal$1((ctx) => {\n\t\t\t\t\t\tconst b = getBox(ctx.frame);\n\t\t\t\t\t\treturn b.width * b.height;\n\t\t\t\t\t}, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_area`\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tanchors: {\n\t\t\t\t\ttopLeft: anchor(\"topLeft\", (b) => b.originX, (b) => b.originY),\n\t\t\t\t\ttopCenter: anchor(\"topCenter\", (b) => b.originX + b.width / 2, (b) => b.originY),\n\t\t\t\t\ttopRight: anchor(\"topRight\", (b) => b.originX + b.width, (b) => b.originY),\n\t\t\t\t\tcenterLeft: anchor(\"centerLeft\", (b) => b.originX, (b) => b.originY + b.height / 2),\n\t\t\t\t\tcenter,\n\t\t\t\t\tcenterRight: anchor(\"centerRight\", (b) => b.originX + b.width, (b) => b.originY + b.height / 2),\n\t\t\t\t\tbottomLeft: anchor(\"bottomLeft\", (b) => b.originX, (b) => b.originY + b.height),\n\t\t\t\t\tbottomCenter: anchor(\"bottomCenter\", (b) => b.originX + b.width / 2, (b) => b.originY + b.height),\n\t\t\t\t\tbottomRight: anchor(\"bottomRight\", (b) => b.originX + b.width, (b) => b.originY + b.height)\n\t\t\t\t},\n\t\t\t\tkinematics: {\n\t\t\t\t\tvx: programmaticSignal$1((ctx) => resolve$1(ctx.frame).velocity.vx, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_vx`\n\t\t\t\t\t}),\n\t\t\t\t\tvy: programmaticSignal$1((ctx) => resolve$1(ctx.frame).velocity.vy, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_vy`\n\t\t\t\t\t}),\n\t\t\t\t\tspeed,\n\t\t\t\t\tacceleration: speed.velocity(1),\n\t\t\t\t\theadingRad: programmaticSignal$1((ctx) => {\n\t\t\t\t\t\tconst v = resolve$1(ctx.frame).velocity;\n\t\t\t\t\t\treturn Math.atan2(v.vy, v.vx);\n\t\t\t\t\t}, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_headingRad`\n\t\t\t\t\t}),\n\t\t\t\t\theadingDeg: programmaticSignal$1((ctx) => {\n\t\t\t\t\t\tconst v = resolve$1(ctx.frame).velocity;\n\t\t\t\t\t\treturn Math.atan2(v.vy, v.vx) * 180 / Math.PI;\n\t\t\t\t\t}, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_headingDeg`\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tconfidence: programmaticSignal$1((ctx) => resolve$1(ctx.frame).score, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_score`\n\t\t\t\t}),\n\t\t\t\tactive: programmaticSignal$1((ctx) => resolve$1(ctx.frame).active ? 1 : 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_active`\n\t\t\t\t}),\n\t\t\t\tisCoasting: programmaticSignal$1((ctx) => resolve$1(ctx.frame).isCoasting ? 1 : 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_isCoasting`\n\t\t\t\t}),\n\t\t\t\tage: programmaticSignal$1((ctx) => resolve$1(ctx.frame).age, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_age`\n\t\t\t\t}),\n\t\t\t\tpose,\n\t\t\t\tcenter,\n\t\t\t\ttopCenter: this[`__pending`],\n\t\t\t\tbottomCenter: center,\n\t\t\t\ttopLeft: center,\n\t\t\t\tbottomLeft: center\n\t\t\t};\n\t\t};\n\t\tconst buildTrack = (resolve$1, label, fixedCategory, fixedId) => {\n\t\t\tconst sig = buildTrackSignals(resolve$1, label, fixedCategory, fixedId);\n\t\t\tconst anchors = sig.anchors;\n\t\t\tObject.assign(sig, {\n\t\t\t\ttopCenter: anchors.topCenter,\n\t\t\t\tbottomCenter: anchors.bottomCenter,\n\t\t\t\ttopLeft: anchors.topLeft,\n\t\t\t\tbottomLeft: anchors.bottomLeft\n\t\t\t});\n\t\t\treturn sig;\n\t\t};\n\t\tconst getTrackById = (trackId) => {\n\t\t\tlet sig = this._trackCache.get(trackId);\n\t\t\tif (!sig) {\n\t\t\t\tsig = buildTrack((frame) => this.getObjectResult(frame).objects.find((o) => o.trackId === trackId) ?? neutralTrack(trackId), `track_${trackId}`, void 0, trackId);\n\t\t\t\tthis._trackCache.set(trackId, sig);\n\t\t\t}\n\t\t\treturn sig;\n\t\t};\n\t\tconst getTrackByCategory = (category, rank = 0) => {\n\t\t\tconst cacheKey = `${category.toLowerCase()}_${rank}`;\n\t\t\tlet sig = this._categoryCache.get(cacheKey);\n\t\t\tif (!sig) {\n\t\t\t\tsig = buildTrack((frame) => {\n\t\t\t\t\treturn this.getObjectResult(frame).objects.filter((o) => o.category.toLowerCase() === category.toLowerCase() && o.active)[rank] ?? neutralTrack(0, category);\n\t\t\t\t}, `cat_${category}_${rank}`, category);\n\t\t\t\tthis._categoryCache.set(cacheKey, sig);\n\t\t\t}\n\t\t\treturn sig;\n\t\t};\n\t\tconst primaryTrack = buildTrack((frame) => {\n\t\t\tconst res = this.getObjectResult(frame);\n\t\t\tif (res.objects.length === 0) return neutralTrack(0);\n\t\t\tlet best = res.objects[0];\n\t\t\tfor (let i = 1; i < res.objects.length; i++) if (res.objects[i].score > best.score) best = res.objects[i];\n\t\t\treturn best;\n\t\t}, \"primary_object\");\n\t\tconst activeCategories = (frame) => {\n\t\t\tconst set = /* @__PURE__ */ new Set();\n\t\t\tfor (const o of this.getObjectResult(frame).objects) if (o.active) set.add(o.category);\n\t\t\treturn Array.from(set).sort();\n\t\t};\n\t\tconst buildClassSignals = (category) => {\n\t\t\tconst lower = category.toLowerCase();\n\t\t\tlet sig = this._classCache.get(lower);\n\t\t\tif (sig) return sig;\n\t\t\tsig = {\n\t\t\t\tcount: programmaticSignal$1((ctx) => this.getObjectResult(ctx.frame).objects.filter((o) => o.active && o.category.toLowerCase() === lower).length, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `class_${lower}_count`\n\t\t\t\t}),\n\t\t\t\tmaxConfidence: programmaticSignal$1((ctx) => {\n\t\t\t\t\tlet max = 0;\n\t\t\t\t\tfor (const o of this.getObjectResult(ctx.frame).objects) if (o.active && o.category.toLowerCase() === lower && o.score > max) max = o.score;\n\t\t\t\t\treturn max;\n\t\t\t\t}, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `class_${lower}_maxConf`\n\t\t\t\t}),\n\t\t\t\tpresent: programmaticSignal$1((ctx) => this.getObjectResult(ctx.frame).objects.some((o) => o.active && o.category.toLowerCase() === lower) ? 1 : 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `class_${lower}_present`\n\t\t\t\t}),\n\t\t\t\tprimary: getTrackByCategory(category)\n\t\t\t};\n\t\t\tthis._classCache.set(lower, sig);\n\t\t\treturn sig;\n\t\t};\n\t\tthis.classes = {\n\t\t\tget: buildClassSignals,\n\t\t\tget names() {\n\t\t\t\treturn activeCategories(frameSignal.value);\n\t\t\t},\n\t\t\thistogram: {\n\t\t\t\tget: (ctx) => self.getClassHistogramTensor(ctx?.frame ?? frameSignal.value),\n\t\t\t\tget value() {\n\t\t\t\t\treturn self.getClassHistogramTensor(frameSignal.value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tthis.objects = {\n\t\t\tget: getTrackById,\n\t\t\tbyCategory: getTrackByCategory,\n\t\t\tprimary: primaryTrack,\n\t\t\tcount: programmaticSignal$1((ctx) => this.getObjectResult(ctx.frame).objects.filter((o) => o.active).length, {\n\t\t\t\tfps: this._fps,\n\t\t\t\tlabel: \"tracked_objects_count\"\n\t\t\t}),\n\t\t\thasCategory: (category) => buildClassSignals(category).present,\n\t\t\tgetActiveTracks: (frame) => this.getObjectResult(frame).objects.filter((o) => o.active),\n\t\t\tget detectedCategories() {\n\t\t\t\treturn activeCategories(frameSignal.value);\n\t\t\t}\n\t\t};\n\t\tconst maskForTrack = (frame, trackId) => this.getMaskResult(frame).find((m) => m.trackId === trackId);\n\t\tconst subjectMask = (frame) => selectSubjectMask(this.getMaskResult(frame));\n\t\tconst buildMaskTrackSignals = (resolve$1, label) => {\n\t\t\tconst boxFor = (frame) => {\n\t\t\t\tconst mask = resolve$1(frame);\n\t\t\t\tif (!mask || mask.trackId === void 0) return void 0;\n\t\t\t\treturn this.getObjectResult(frame).objects.find((o) => o.trackId === mask.trackId);\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tget trackId() {\n\t\t\t\t\treturn resolve$1(frameSignal.value)?.trackId ?? 0;\n\t\t\t\t},\n\t\t\t\tget category() {\n\t\t\t\t\treturn resolve$1(frameSignal.value)?.category ?? \"unknown\";\n\t\t\t\t},\n\t\t\t\tarea: programmaticSignal$1((ctx) => resolve$1(ctx.frame)?.area ?? 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_area`\n\t\t\t\t}),\n\t\t\t\tcoverage: programmaticSignal$1((ctx) => resolve$1(ctx.frame)?.coverage ?? 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_coverage`\n\t\t\t\t}),\n\t\t\t\tsolidity: programmaticSignal$1((ctx) => {\n\t\t\t\t\tconst mask = resolve$1(ctx.frame);\n\t\t\t\t\tconst box = boxFor(ctx.frame);\n\t\t\t\t\tif (!mask || !box) return 0;\n\t\t\t\t\tconst bboxArea = box.boundingBox.width * box.boundingBox.height;\n\t\t\t\t\treturn bboxArea > 0 ? mask.area / bboxArea : 0;\n\t\t\t\t}, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_solidity`\n\t\t\t\t}),\n\t\t\t\tbboxFill: programmaticSignal$1((ctx) => {\n\t\t\t\t\tconst mask = resolve$1(ctx.frame);\n\t\t\t\t\tif (!mask || mask.width * mask.height === 0) return 0;\n\t\t\t\t\tconst box = boxFor(ctx.frame);\n\t\t\t\t\tif (!box) return 0;\n\t\t\t\t\treturn box.boundingBox.width * box.boundingBox.height / (mask.width * mask.height);\n\t\t\t\t}, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_bboxFill`\n\t\t\t\t})\n\t\t\t};\n\t\t};\n\t\tthis.masks = {\n\t\t\tget: (trackId) => {\n\t\t\t\tlet sig = this._maskTrackCache.get(trackId);\n\t\t\t\tif (!sig) {\n\t\t\t\t\tsig = buildMaskTrackSignals((frame) => maskForTrack(frame, trackId), `mask_${trackId}`);\n\t\t\t\t\tthis._maskTrackCache.set(trackId, sig);\n\t\t\t\t}\n\t\t\t\treturn sig;\n\t\t\t},\n\t\t\tsubject: buildMaskTrackSignals(subjectMask, \"subject\"),\n\t\t\tcount: programmaticSignal$1((ctx) => new Set(this.getMaskResult(ctx.frame).map((m) => m.trackId ?? -1)).size, {\n\t\t\t\tfps: this._fps,\n\t\t\t\tlabel: \"mask_count\"\n\t\t\t})\n\t\t};\n\t\tthis.segmentation = {\n\t\t\thumanSilhouette: this.masks.subject,\n\t\t\tsubject: this.masks.subject,\n\t\t\tinstanceMasks: this.masks,\n\t\t\tmatte: {\n\t\t\t\tcoverage: programmaticSignal$1((ctx) => self.getMatteResult(ctx.frame)?.coverage ?? 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: \"matte_coverage\"\n\t\t\t\t}),\n\t\t\t\tat: (frame) => self.getMatteResult(frame)\n\t\t\t},\n\t\t\tget stencilTexture() {\n\t\t\t\treturn self._stencilTexture;\n\t\t\t}\n\t\t};\n\t\tthis.poseLandmarksTensor = {\n\t\t\tget: (ctx) => self.getPoseLandmarksTensor(ctx?.frame ?? frameSignal.value),\n\t\t\tget value() {\n\t\t\t\treturn self.getPoseLandmarksTensor(frameSignal.value);\n\t\t\t}\n\t\t};\n\t\tthis.objectsTensor = {\n\t\t\tget: (ctx) => self.getObjectsTensor(ctx?.frame ?? frameSignal.value),\n\t\t\tget value() {\n\t\t\t\treturn self.getObjectsTensor(frameSignal.value);\n\t\t\t}\n\t\t};\n\t\tthis.masksTensor = {\n\t\t\tget: (ctx) => self.getMasksTensor(ctx?.frame ?? frameSignal.value),\n\t\t\tget value() {\n\t\t\t\treturn self.getMasksTensor(frameSignal.value);\n\t\t\t}\n\t\t};\n\t\tthis.histogramTensor = {\n\t\t\tget: (ctx) => self.getClassHistogramTensor(ctx?.frame ?? frameSignal.value),\n\t\t\tget value() {\n\t\t\t\treturn self.getClassHistogramTensor(frameSignal.value);\n\t\t\t}\n\t\t};\n\t}\n\t/** Update source geometry once a lazily decoded clip's size is known. */\n\tsetFrameSize(width, height) {\n\t\tif (this._width === width && this._height === height) return;\n\t\tthis._width = width;\n\t\tthis._height = height;\n\t\tthis._transformer = new SpatialLandmarkTransformer({\n\t\t\twidth,\n\t\t\theight,\n\t\t\tfov: this._cameraFov\n\t\t});\n\t\tthis.invalidateSignals();\n\t}\n\tsetStencilTexture(texture) {\n\t\tthis._stencilTexture = texture;\n\t}\n\tget stencilTexture() {\n\t\treturn this._stencilTexture;\n\t}\n\t/**\n\t* Reads the most recent result at or before `frame`. Vision results are written one\n\t* frame behind the plate (the node renderer reads back the previous frame to infer),\n\t* and pinned-signal layout runs before the current frame's inference, so a strict\n\t* per-frame lookup would always miss. Walking back a few frames keeps signals live at\n\t* a stable one-frame lag instead of snapping to neutral defaults.\n\t*/\n\tlatestAtOrBefore(cache, frame, maxBack = 8) {\n\t\tconst start = this.clamp(frame);\n\t\tconst floor = Math.max(0, start - maxBack);\n\t\tfor (let f = start; f >= floor; f--) {\n\t\t\tconst value = cache.get(f);\n\t\t\tif (value !== void 0) return value;\n\t\t}\n\t}\n\tinvalidateSignals() {\n\t\tfor (const sig of this._registeredSignals) sig.invalidate();\n\t}\n\tsetPoseResult(frame, result) {\n\t\tthis._poseCache.set(this.clamp(frame), result);\n\t\tthis.invalidateSignals();\n\t}\n\tgetPoseResult(frame) {\n\t\treturn this.latestAtOrBefore(this._poseCache, frame) ?? createNeutralPoseResult();\n\t}\n\tsetObjectResult(frame, result) {\n\t\tconst normalized = \"objects\" in result ? result : {\n\t\t\tobjects: result,\n\t\t\trawDetections: []\n\t\t};\n\t\tthis._objectCache.set(this.clamp(frame), {\n\t\t\tobjects: normalized.objects,\n\t\t\trawDetections: normalized.rawDetections ?? []\n\t\t});\n\t\tthis.invalidateSignals();\n\t}\n\tgetObjectResult(frame) {\n\t\treturn this.latestAtOrBefore(this._objectCache, frame) ?? createNeutralObjectResult();\n\t}\n\tsetMaskResult(frame, masks) {\n\t\tthis._maskCache.set(this.clamp(frame), masks);\n\t\tthis.invalidateSignals();\n\t}\n\tgetMaskResult(frame) {\n\t\treturn this._maskSource?.(frame) ?? this.latestAtOrBefore(this._maskCache, frame) ?? [];\n\t}\n\tsetMatteResult(frame, matte) {\n\t\tthis._matteCache.set(this.clamp(frame), matte);\n\t\tthis.invalidateSignals();\n\t}\n\tgetMatteResult(frame) {\n\t\treturn this._matteSource?.(frame) ?? this.latestAtOrBefore(this._matteCache, frame);\n\t}\n\t/**\n\t* Serializable snapshot of one frame's object / class / mask signals.\n\t* Synchronous — reads only the per-frame caches, never triggers inference.\n\t*/\n\tsummary(frame = frameSignal.value) {\n\t\tconst f = this.clamp(frame);\n\t\tconst res = this.getObjectResult(f);\n\t\tconst objects = res.objects.map((o) => ({\n\t\t\ttrackId: o.trackId,\n\t\t\tcategory: o.category,\n\t\t\tscore: o.score,\n\t\t\tcenter: [o.centerX, o.centerY],\n\t\t\tspeed: o.speed,\n\t\t\tactive: o.active\n\t\t}));\n\t\tconst classSet = /* @__PURE__ */ new Set();\n\t\tfor (const o of res.objects) if (o.active) classSet.add(o.category);\n\t\tconst masks = {};\n\t\tfor (const m of this.getMaskResult(f)) masks[m.category] = (masks[m.category] ?? 0) + 1;\n\t\treturn {\n\t\t\tframe: f,\n\t\t\tobjects,\n\t\t\tclasses: Array.from(classSet).sort(),\n\t\t\tmasks\n\t\t};\n\t}\n\t/** Primary person's 17 keypoints as a [17, 3] float32 tensor. */\n\tgetPoseLandmarksTensor(frame) {\n\t\tconst kpts = this.getPoseResult(frame).people[0]?.keypoints ?? [];\n\t\tconst data = new Float32Array(51);\n\t\tfor (let i = 0; i < 17; i++) {\n\t\t\tdata[i * 3] = kpts[i]?.x ?? .5;\n\t\t\tdata[i * 3 + 1] = kpts[i]?.y ?? .5;\n\t\t\tdata[i * 3 + 2] = kpts[i]?.visibility ?? 0;\n\t\t}\n\t\treturn {\n\t\t\tdata,\n\t\t\tshape: [17, 3],\n\t\t\tdtype: \"float32\"\n\t\t};\n\t}\n\t/** Up to 16 active tracks as [16, 8]: [active, categoryHash, x, y, w, h, vx, vy]. */\n\tgetObjectsTensor(frame, maxObjects = 16) {\n\t\tconst res = this.getObjectResult(frame);\n\t\tconst data = new Float32Array(maxObjects * 8);\n\t\tconst count = Math.min(maxObjects, res.objects.length);\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst obj = res.objects[i];\n\t\t\tconst off = i * 8;\n\t\t\tlet catHash = 0;\n\t\t\tfor (let c = 0; c < obj.category.length; c++) catHash = catHash * 31 + obj.category.charCodeAt(c) & 65535;\n\t\t\tdata[off] = obj.active ? 1 : 0;\n\t\t\tdata[off + 1] = catHash;\n\t\t\tdata[off + 2] = obj.centerX;\n\t\t\tdata[off + 3] = obj.centerY;\n\t\t\tdata[off + 4] = obj.boundingBox.width;\n\t\t\tdata[off + 5] = obj.boundingBox.height;\n\t\t\tdata[off + 6] = obj.velocity.vx;\n\t\t\tdata[off + 7] = obj.velocity.vy;\n\t\t}\n\t\treturn {\n\t\t\tdata,\n\t\t\tshape: [maxObjects, 8],\n\t\t\tdtype: \"float32\"\n\t\t};\n\t}\n\t/** Per-mask coverage + solidity as [16, 2]. */\n\tgetMasksTensor(frame, maxMasks = 16) {\n\t\tconst masks = this.getMaskResult(frame);\n\t\tconst data = new Float32Array(maxMasks * 2);\n\t\tconst count = Math.min(maxMasks, masks.length);\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst m = masks[i];\n\t\t\tdata[i * 2] = m.coverage;\n\t\t\tconst box = this.getObjectResult(frame).objects.find((o) => o.trackId === m.trackId);\n\t\t\tconst bboxArea = box ? box.boundingBox.width * box.boundingBox.height : 0;\n\t\t\tdata[i * 2 + 1] = bboxArea > 0 ? m.area / bboxArea : 0;\n\t\t}\n\t\treturn {\n\t\t\tdata,\n\t\t\tshape: [maxMasks, 2],\n\t\t\tdtype: \"float32\"\n\t\t};\n\t}\n\t/** Per-class detection histogram for the frame as [nc] float32 (COCO 80 by default). */\n\tgetClassHistogramTensor(frame, nc = 80) {\n\t\tconst data = new Float32Array(nc);\n\t\tfor (const o of this.getObjectResult(frame).objects) if (o.active) {\n\t\t\tconst idx = COCO_CLASS_INDEX_BY_NAME.get(o.category.toLowerCase());\n\t\t\tif (idx !== void 0) data[idx] += 1;\n\t\t}\n\t\treturn {\n\t\t\tdata,\n\t\t\tshape: [nc],\n\t\t\tdtype: \"float32\"\n\t\t};\n\t}\n\tclamp(frame) {\n\t\treturn Math.max(0, Math.min(this._totalFrames - 1, Math.round(frame)));\n\t}\n};\nfunction createVisionBundle(options) {\n\treturn new VisionBundle(options);\n}\nconst COCO_CLASS_INDEX_BY_NAME = new Map(COCO_CLASSES.map((name, index) => [name, index]));\n\n//#endregion\n//#region src/spatial/spatial-pin.ts\nfunction pinNodeToLandmark(node, target, options = {}) {\n\tconst offX = options.offsetX ?? 0;\n\tconst offY = options.offsetY ?? 0;\n\tconst offZ = options.offsetZ ?? 0;\n\tif (!target || typeof target !== \"object\") return node;\n\tif (\"screenX\" in target && target.screenX && typeof target.screenX === \"object\") {\n\t\tconst signals = target;\n\t\tnode.x = offX !== 0 ? signals.screenX.add(offX) : signals.screenX;\n\t\tnode.y = offY !== 0 ? signals.screenY.add(offY) : signals.screenY;\n\t\tnode.z = offZ !== 0 ? signals.z.add(offZ) : signals.z;\n\t} else if (\"x\" in target && typeof target.x === \"object\" && target.x !== null) {\n\t\tconst signals = target;\n\t\tnode.x = offX !== 0 ? signals.x.add(offX) : signals.x;\n\t\tnode.y = offY !== 0 ? signals.y.add(offY) : signals.y;\n\t\tnode.z = offZ !== 0 ? signals.z.add(offZ) : signals.z;\n\t} else {\n\t\tconst staticCoord = target;\n\t\tnode.x = (staticCoord.screenX ?? staticCoord.x) + offX;\n\t\tnode.y = (staticCoord.screenY ?? staticCoord.y) + offY;\n\t\tnode.z = (staticCoord.z ?? 0) + offZ;\n\t}\n\treturn node;\n}\nfunction pinNodeToObject(node, target, options = {}) {\n\tif (!target || typeof target !== \"object\") return node;\n\tif (\"anchors\" in target && target.anchors) {\n\t\tconst track = target;\n\t\tconst anchorName = options.anchor ?? (options.matchWidth || options.matchHeight ? \"topLeft\" : \"center\");\n\t\tconst rawAnchor = track.anchors[anchorName] ?? track.center;\n\t\tlet resolvedAnchor = rawAnchor;\n\t\tif (options.smoothFrames && options.smoothFrames > 1) resolvedAnchor = {\n\t\t\tx: rawAnchor.x.smooth(options.smoothFrames),\n\t\t\ty: rawAnchor.y.smooth(options.smoothFrames),\n\t\t\tz: rawAnchor.z,\n\t\t\tscreenX: rawAnchor.screenX.smooth(options.smoothFrames),\n\t\t\tscreenY: rawAnchor.screenY.smooth(options.smoothFrames)\n\t\t};\n\t\tif (options.matchWidth) node.width = options.smoothFrames && options.smoothFrames > 1 ? track.bounds.screenWidth.smooth(options.smoothFrames) : track.bounds.screenWidth;\n\t\tif (options.matchHeight) node.height = options.smoothFrames && options.smoothFrames > 1 ? track.bounds.screenHeight.smooth(options.smoothFrames) : track.bounds.screenHeight;\n\t\tif (options.hideWhenLost) node.opacity = track.active;\n\t\treturn pinNodeToLandmark(node, resolvedAnchor, options);\n\t}\n\treturn pinNodeToLandmark(node, target, options);\n}\n\n//#endregion\n//#region src/vision-node.ts\n/** Tasks a config turns on; detection is the default when nothing is enabled explicitly. */\nfunction enabledTasks(config) {\n\tconst tasks = [];\n\tif (config.enableDetection === true) tasks.push(\"detect\");\n\tif (config.enableSegmentation === true) tasks.push(\"segment\");\n\tif (config.enablePose === true) tasks.push(\"pose\");\n\tif (config.enableMatte === true) tasks.push(\"matte\");\n\treturn tasks.length > 0 ? tasks : [\"detect\"];\n}\n/**\n* Vision node.\n*\n* LAZY BY CONSTRUCTION: creating a VisionNode performs ZERO I/O — no model downloads, no\n* sessions, no file probes. The first inference call (or an explicit `await vision.ready()`)\n* downloads the required models.\n*/\nvar VisionNode = class VisionNode {\n\tid;\n\tkind = \"vision\";\n\tsource;\n\tconfig;\n\tvision;\n\t_runner;\n\t/** Runner construction options (modelsDir, provider, store, …) — injectable for tests/agents. */\n\t_runnerOptions;\n\tconstructor(source, config = {}, bundleOptions = {}, runnerOptions = {}) {\n\t\tthis.id = `vision-${Math.random().toString(36).slice(2, 9)}`;\n\t\tthis.source = source;\n\t\tthis.config = config;\n\t\tthis._runnerOptions = runnerOptions;\n\t\tthis.vision = new VisionBundle({\n\t\t\t...bundleOptions,\n\t\t\tconfig\n\t\t});\n\t}\n\t/** Lazily-created runner; downloads happen on its first inference. */\n\trunner() {\n\t\tif (!this._runner) {\n\t\t\tconst { variant, confidence, classes, modelsDir, baseUrl, maskThreshold, featherRadius } = this.config;\n\t\t\tthis._runner = VisionRunner.create({\n\t\t\t\t...this._runnerOptions,\n\t\t\t\t...variant !== void 0 ? { variant } : {},\n\t\t\t\t...confidence !== void 0 ? { confidence } : {},\n\t\t\t\t...classes !== void 0 ? { classes } : {},\n\t\t\t\t...modelsDir !== void 0 ? { modelsDir } : {},\n\t\t\t\t...baseUrl !== void 0 ? { baseUrl } : {},\n\t\t\t\t...maskThreshold !== void 0 ? { maskThreshold } : {},\n\t\t\t\t...featherRadius !== void 0 ? { featherRadius } : {}\n\t\t\t});\n\t\t}\n\t\treturn this._runner;\n\t}\n\t/** Explicit warm-up — downloads the models for the enabled tasks, ahead of first inference. */\n\tasync ready() {\n\t\tconst runner = this.runner();\n\t\tawait runner.preload(enabledTasks(this.config));\n\t\treturn runner;\n\t}\n\tclose() {\n\t\tthis._runner?.close();\n\t\tthis._runner = void 0;\n\t}\n\tstatic attach(source, config = {}, bundleOptions = {}) {\n\t\tconst node = new VisionNode(source, config, bundleOptions);\n\t\tconst vision = node.vision;\n\t\tObject.defineProperties(vision, {\n\t\t\tnode: {\n\t\t\t\tvalue: node.toNode(),\n\t\t\t\tenumerable: true\n\t\t\t},\n\t\t\tready: { value: () => node.ready() },\n\t\t\trunner: { value: () => node.runner() },\n\t\t\tclose: { value: () => node.close() }\n\t\t});\n\t\treturn vision;\n\t}\n\ttoNode() {\n\t\treturn {\n\t\t\tid: this.id,\n\t\t\tkind: \"vision\",\n\t\t\tsource: this.source,\n\t\t\tconfig: this.config\n\t\t};\n\t}\n};\n\n//#endregion\n//#region src/index.ts\nvar src_exports = /* @__PURE__ */ __exportAll({\n\tAutoSessionProvider: () => AutoSessionProvider,\n\tCLIP_SUBJECT: () => CLIP_SUBJECT,\n\tCOCO17_BONES: () => COCO17_BONES,\n\tCOCO17_KEYPOINTS: () => COCO17_KEYPOINTS,\n\tCOCO17_KEYPOINT_COUNT: () => COCO17_KEYPOINT_COUNT,\n\tCOCO17_KEYPOINT_NAMES: () => COCO17_KEYPOINT_NAMES,\n\tCOCO_CLASSES: () => COCO_CLASSES,\n\tFrameTensorPipeline: () => FrameTensorPipeline,\n\tGRAPH_INITIALIZER: () => GRAPH_INITIALIZER,\n\tGRAPH_INPUT: () => GRAPH_INPUT$1,\n\tGRAPH_NODE: () => GRAPH_NODE$1,\n\tGRAPH_OUTPUT: () => GRAPH_OUTPUT$1,\n\tGRAPH_VALUE_INFO: () => GRAPH_VALUE_INFO,\n\tMODEL_GRAPH: () => MODEL_GRAPH$1,\n\tNODE_INPUT: () => NODE_INPUT$1,\n\tNODE_OUTPUT: () => NODE_OUTPUT$2,\n\tNodeSessionProvider: () => NodeSessionProvider,\n\tNodeWebGPUProvider: () => NodeWebGPUProvider,\n\tPREPROCESS_BY_FAMILY: () => PREPROCESS_BY_FAMILY,\n\tPoseSkeletonRenderer: () => PoseSkeletonRenderer,\n\tSegmentationTexturePool: () => SegmentationTexturePool,\n\tSpatialLandmarkTransformer: () => SpatialLandmarkTransformer,\n\tTENSOR_NAME: () => TENSOR_NAME,\n\tTemporalObjectTracker: () => TemporalObjectTracker,\n\tVALUE_INFO_NAME: () => VALUE_INFO_NAME,\n\tVISION_BACKEND_LISTENER: () => VISION_BACKEND_LISTENER,\n\tVISION_MODELS: () => VISION_MODELS,\n\tVISION_TASKS: () => VISION_TASKS,\n\tVISION_VARIANTS: () => VISION_VARIANTS,\n\tVisionBundle: () => VisionBundle,\n\tVisionModelStore: () => VisionModelStore,\n\tVisionNode: () => VisionNode,\n\tVisionRunner: () => VisionRunner,\n\tWIRE_I32: () => WIRE_I32,\n\tWIRE_I64: () => WIRE_I64,\n\tWIRE_LEN: () => WIRE_LEN,\n\tWIRE_VARINT: () => WIRE_VARINT,\n\tanalyzeSequence: () => analyzeSequence,\n\tavailableCpus: () => availableCpus,\n\tcomputeInputTransform: () => computeInputTransform,\n\tcomputeIoU: () => computeIoU,\n\tconcat: () => concat,\n\tcpuSessionThreads: () => cpuSessionThreads,\n\tcreateDefaultSessionProvider: () => createDefaultSessionProvider,\n\tcreateNeutralLandmarks: () => createNeutralLandmarks,\n\tcreateNeutralObjectResult: () => createNeutralObjectResult,\n\tcreateNeutralPoseResult: () => createNeutralPoseResult,\n\tcreateNodeWebGPUProvider: () => createNodeWebGPUProvider,\n\tcreateVisionBundle: () => createVisionBundle,\n\tdecodeRtmdetIns: () => decodeRtmdetIns,\n\tdecodeRtmo: () => decodeRtmo,\n\tdecodeSelfie: () => decodeSelfie,\n\tdecoder: () => decoder,\n\tencoder: () => encoder,\n\tensureNodeWebGPU: () => ensureNodeWebGPU,\n\tfields: () => fields,\n\tfirstString: () => firstString,\n\tgetDefaultModelsDir: () => getDefaultModelsDir,\n\tgetPersonBoundingBox: () => getPersonBoundingBox,\n\timageToTensor: () => imageToTensor,\n\tisGpuImage: () => isGpuImage,\n\tisPreprocessFamily: () => isPreprocessFamily,\n\tlengthDelimited: () => lengthDelimited,\n\tlogitToAlpha: () => logitToAlpha,\n\tmaskBounds: () => maskBounds,\n\tmaskObject: () => maskObject,\n\tmatchPoseToTracks: () => matchPoseToTracks,\n\tmergeSubjectMask: () => mergeSubjectMask,\n\tmodelKeyFor: () => modelKeyFor,\n\tpinNodeToLandmark: () => pinNodeToLandmark,\n\tpinNodeToObject: () => pinNodeToObject,\n\tpreprocessSpec: () => preprocessSpec,\n\tprobabilityToAlpha: () => probabilityToAlpha,\n\treadTexturePixels: () => readTexturePixels,\n\treadVarint: () => readVarint,\n\tregisterVisionModel: () => registerVisionModel,\n\trequestedVisionBackend: () => requestedVisionBackend,\n\tselectSubjectMask: () => selectSubjectMask,\n\tsessionCompute: () => sessionCompute,\n\tsetDefaultSessionProvider: () => setDefaultSessionProvider,\n\tsetVisionDevice: () => setVisionDevice,\n\tstrings: () => strings,\n\ttoSourcePoint: () => toSourcePoint,\n\tvarint: () => varint\n});\n\n//#endregion\nexport { fields as $, WebGPUProvider as A, GRAPH_VALUE_INFO as B, requestedVisionBackend as C, isPreprocessFamily as Ct, NodeWebGPUProvider as D, TemporalObjectTracker as Dt, setVisionDevice as E, analyzeSequence as Et, createNeutralPoseResult as F, VALUE_INFO_NAME as G, NODE_INPUT$1 as H, GRAPH_INITIALIZER as I, WIRE_LEN as J, WIRE_I32 as K, GRAPH_INPUT$1 as L, hasWebGPU as M, createNeutralLandmarks as N, createNodeWebGPUProvider as O, computeIoU as Ot, createNeutralObjectResult as P, encoder as Q, GRAPH_NODE$1 as R, createDefaultSessionProvider as S, imageToTensor as St, setDefaultSessionProvider as T, toSourcePoint as Tt, NODE_OUTPUT$2 as U, MODEL_GRAPH$1 as V, TENSOR_NAME as W, concat as X, WIRE_VARINT as Y, decoder as Z, AutoSessionProvider as _, decodeRtmdetIns as _t, VisionBundle as a, VisionModelStore as at, availableCpus as b, PREPROCESS_BY_FAMILY as bt, matchPoseToTracks as c, PoseSkeletonRenderer as ct, maskBounds as d, COCO17_KEYPOINT_NAMES as dt, firstString as et, mergeSubjectMask as f, FrameTensorPipeline as ft, isGpuImage as g, decodeRtmo as gt, VisionRunner as h, COCO17_KEYPOINT_COUNT as ht, pinNodeToObject as i, varint as it, createWebGPUProvider as j, ensureNodeWebGPU as k, SpatialLandmarkTransformer as l, COCO17_BONES as lt, CLIP_SUBJECT as m, decodeSelfie as mt, VisionNode as n, readVarint as nt, createVisionBundle as o, getDefaultModelsDir as ot, selectSubjectMask as p, readTexturePixels as pt, WIRE_I64 as q, pinNodeToLandmark as r, strings as rt, getPersonBoundingBox as s, SegmentationTexturePool as st, src_exports as t, lengthDelimited as tt, maskObject as u, COCO17_KEYPOINTS as ut, NodeSessionProvider as v, logitToAlpha as vt, sessionCompute as w, preprocessSpec as wt, cpuSessionThreads as x, computeInputTransform as xt, VISION_BACKEND_LISTENER as y, probabilityToAlpha as yt, GRAPH_OUTPUT$1 as z };\n//# sourceMappingURL=src-Bnr8DUC-.mjs.map","import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { CLIP_SUBJECT, PoseSkeletonRenderer, TemporalObjectTracker, VisionRunner, maskBounds, matchPoseToTracks, mergeSubjectMask, readTexturePixels, setVisionDevice } from \"@framefields/vision\";\n\n//#region src/renderers/frame-cache.ts\nlet scratchValues = new Uint8Array(0);\nlet scratchLengths = new Uint32Array(0);\nfunction encodeMask(mask, width, height) {\n\tif (scratchValues.length < mask.length) {\n\t\tscratchValues = new Uint8Array(mask.length);\n\t\tscratchLengths = new Uint32Array(mask.length);\n\t}\n\tconst values = scratchValues;\n\tconst lengths = scratchLengths;\n\tlet runs = 0;\n\tlet start = 0;\n\tfor (let i = 1; i <= mask.length; i++) if (i === mask.length || mask[i] !== mask[start]) {\n\t\tvalues[runs] = mask[start];\n\t\tlengths[runs] = i - start;\n\t\truns++;\n\t\tstart = i;\n\t}\n\treturn {\n\t\twidth,\n\t\theight,\n\t\tvalues: values.slice(0, runs),\n\t\tlengths: lengths.slice(0, runs)\n\t};\n}\nfunction decodeMask(rle) {\n\tconst out = new Uint8Array(rle.width * rle.height);\n\tlet at = 0;\n\tfor (let r = 0; r < rle.values.length; r++) {\n\t\tconst end = at + rle.lengths[r];\n\t\tif (rle.values[r] !== 0) out.fill(rle.values[r], at, end);\n\t\tat = end;\n\t}\n\treturn out;\n}\nfunction rleBytes(rle) {\n\treturn rle.values.byteLength + rle.lengths.byteLength;\n}\nfunction toCachedMask(mask) {\n\tconst { mask: data, ...rest } = mask;\n\treturn {\n\t\t...rest,\n\t\trle: encodeMask(data, mask.width, mask.height)\n\t};\n}\nfunction fromCachedMask(mask) {\n\tconst { rle, ...rest } = mask;\n\treturn {\n\t\t...rest,\n\t\tmask: decodeMask(rle)\n\t};\n}\nfunction resultBytes(result) {\n\tlet bytes = 512 + result.detections.length * 128 + result.objects.length * 256;\n\tfor (const m of result.masks ?? []) bytes += rleBytes(m.rle);\n\tif (result.subject) bytes += rleBytes(result.subject.mask.rle);\n\treturn bytes;\n}\n/** Results by source (node + inference settings) and frame, least recently used out first. */\nvar VisionFrameCache = class {\n\tentries = /* @__PURE__ */ new Map();\n\tbytes = 0;\n\tconstructor(maxBytes = 256 * 1024 * 1024) {\n\t\tthis.maxBytes = maxBytes;\n\t}\n\tget(source, frame) {\n\t\tconst key = `${source}#${frame}`;\n\t\tconst hit = this.entries.get(key);\n\t\tif (hit) {\n\t\t\tthis.entries.delete(key);\n\t\t\tthis.entries.set(key, hit);\n\t\t}\n\t\treturn hit;\n\t}\n\tset(source, frame, result) {\n\t\tconst key = `${source}#${frame}`;\n\t\tconst old = this.entries.get(key);\n\t\tif (old) {\n\t\t\tthis.bytes -= resultBytes(old);\n\t\t\tthis.entries.delete(key);\n\t\t}\n\t\tthis.entries.set(key, result);\n\t\tthis.bytes += resultBytes(result);\n\t\tfor (const [k, v] of this.entries) {\n\t\t\tif (this.bytes <= this.maxBytes) break;\n\t\t\tthis.entries.delete(k);\n\t\t\tthis.bytes -= resultBytes(v);\n\t\t}\n\t}\n\tclear() {\n\t\tthis.entries.clear();\n\t\tthis.bytes = 0;\n\t}\n\tget size() {\n\t\treturn this.entries.size;\n\t}\n};\n\n//#endregion\n//#region src/renderers/matte-compositor.ts\n/**\n* GPU composite for the mask-family modes: the picture times the subject mask,\n* in one full-screen pass. Replaces building the RGBA result on the CPU and\n* uploading it; only the 8-bit mask goes to the GPU.\n*\n* - matte: picture × mask (premultiplied, so the background is transparent)\n* - mask: white silhouette (rgb = mask, a = 1)\n* - crop: matte, with the subject's bounding box stretched to the frame\n*/\nconst WGSL = `\nstruct Params {\n\tmode: u32, // 0 matte, 1 mask, 2 crop\n\t_pad: u32,\n\tcropMin: vec2<f32>, // uv of the subject bounds (crop)\n\tcropMax: vec2<f32>,\n\t_pad2: vec2<f32>,\n};\n\n@group(0) @binding(0) var<uniform> params: Params;\n@group(0) @binding(1) var picture: texture_2d<f32>;\n@group(0) @binding(2) var mask: texture_2d<f32>;\n@group(0) @binding(3) var samp: sampler;\n\nstruct VSOut {\n\t@builtin(position) pos: vec4<f32>,\n\t@location(0) uv: vec2<f32>,\n};\n\n@vertex fn vs(@builtin(vertex_index) i: u32) -> VSOut {\n\tvar p = array<vec2<f32>, 3>(vec2(-1.0, -1.0), vec2(3.0, -1.0), vec2(-1.0, 3.0));\n\tvar out: VSOut;\n\tout.pos = vec4(p[i], 0.0, 1.0);\n\tout.uv = vec2(p[i].x * 0.5 + 0.5, 0.5 - p[i].y * 0.5);\n\treturn out;\n}\n\n@fragment fn fs(in: VSOut) -> @location(0) vec4<f32> {\n\tvar uv = in.uv;\n\tif (params.mode == 2u) {\n\t\tuv = mix(params.cropMin, params.cropMax, uv);\n\t}\n\tlet m = textureSampleLevel(mask, samp, uv, 0.0).r;\n\tif (params.mode == 1u) {\n\t\treturn vec4(m, m, m, 1.0);\n\t}\n\treturn textureSampleLevel(picture, samp, uv, 0.0) * m;\n}\n`;\nvar MatteCompositor = class {\n\tpipeline;\n\tsampler;\n\tuniforms = [];\n\tuniformIndex = 0;\n\t/** One 8-bit mask texture per node, rewritten each frame. */\n\tmasks = /* @__PURE__ */ new Map();\n\tconstructor(device, format) {\n\t\tthis.device = device;\n\t\tconst module = device.createShaderModule({\n\t\t\tlabel: \"vision_matte_composite\",\n\t\t\tcode: WGSL\n\t\t});\n\t\tthis.pipeline = device.createRenderPipeline({\n\t\t\tlabel: \"vision_matte_composite\",\n\t\t\tlayout: \"auto\",\n\t\t\tvertex: {\n\t\t\t\tmodule,\n\t\t\t\tentryPoint: \"vs\"\n\t\t\t},\n\t\t\tfragment: {\n\t\t\t\tmodule,\n\t\t\t\tentryPoint: \"fs\",\n\t\t\t\ttargets: [{ format }]\n\t\t\t},\n\t\t\tprimitive: { topology: \"triangle-list\" }\n\t\t});\n\t\tthis.sampler = device.createSampler({\n\t\t\tmagFilter: \"linear\",\n\t\t\tminFilter: \"linear\"\n\t\t});\n\t}\n\t/** Uploads a frame-sized 0..255 mask for `key` and returns its texture. */\n\tuploadMask(key, mask, width, height) {\n\t\tlet tex = this.masks.get(key);\n\t\tif (!tex || tex.width !== width || tex.height !== height) {\n\t\t\ttex?.destroy();\n\t\t\ttex = this.device.createTexture({\n\t\t\t\tlabel: `vision_mask_${key}`,\n\t\t\t\tsize: [width, height],\n\t\t\t\tformat: \"r8unorm\",\n\t\t\t\tusage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST\n\t\t\t});\n\t\t\tthis.masks.set(key, tex);\n\t\t}\n\t\tconst aligned = Math.ceil(width / 256) * 256;\n\t\tlet bytes = mask;\n\t\tif (aligned !== width) {\n\t\t\tbytes = new Uint8Array(aligned * height);\n\t\t\tfor (let y = 0; y < height; y++) bytes.set(mask.subarray(y * width, (y + 1) * width), y * aligned);\n\t\t}\n\t\tthis.device.queue.writeTexture({ texture: tex }, bytes.buffer, {\n\t\t\toffset: bytes.byteOffset,\n\t\t\tbytesPerRow: aligned,\n\t\t\trowsPerImage: height\n\t\t}, {\n\t\t\twidth,\n\t\t\theight\n\t\t});\n\t\treturn tex;\n\t}\n\t/** Clears `target` and draws `picture` through `mask` into it. */\n\tdraw(encoder, target, picture, mask, mode, bounds) {\n\t\tconst w = mask.width;\n\t\tconst h = mask.height;\n\t\tconst data = new Float32Array(8);\n\t\tconst view = new Uint32Array(data.buffer);\n\t\tview[0] = mode === \"matte\" ? 0 : mode === \"mask\" ? 1 : 2;\n\t\tif (mode === \"crop\" && bounds) {\n\t\t\tdata[2] = bounds.x0 / w;\n\t\t\tdata[3] = bounds.y0 / h;\n\t\t\tdata[4] = (bounds.x1 + 1) / w;\n\t\t\tdata[5] = (bounds.y1 + 1) / h;\n\t\t} else {\n\t\t\tdata[2] = 0;\n\t\t\tdata[3] = 0;\n\t\t\tdata[4] = 1;\n\t\t\tdata[5] = 1;\n\t\t\tif (mode === \"crop\") view[0] = 0;\n\t\t}\n\t\tif (this.uniformIndex >= this.uniforms.length) this.uniforms.push(this.device.createBuffer({\n\t\t\tsize: data.byteLength,\n\t\t\tusage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST\n\t\t}));\n\t\tconst uniform = this.uniforms[this.uniformIndex];\n\t\tthis.uniformIndex = (this.uniformIndex + 1) % 16;\n\t\tthis.device.queue.writeBuffer(uniform, 0, data);\n\t\tconst bindGroup = this.device.createBindGroup({\n\t\t\tlayout: this.pipeline.getBindGroupLayout(0),\n\t\t\tentries: [\n\t\t\t\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: { buffer: uniform }\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: picture.createView()\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: mask.createView()\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 3,\n\t\t\t\t\tresource: this.sampler\n\t\t\t\t}\n\t\t\t]\n\t\t});\n\t\tconst pass = encoder.beginRenderPass({\n\t\t\tlabel: \"vision_matte_composite\",\n\t\t\tcolorAttachments: [{\n\t\t\t\tview: target,\n\t\t\t\tloadOp: \"clear\",\n\t\t\t\tstoreOp: \"store\",\n\t\t\t\tclearValue: {\n\t\t\t\t\tr: 0,\n\t\t\t\t\tg: 0,\n\t\t\t\t\tb: 0,\n\t\t\t\t\ta: 0\n\t\t\t\t}\n\t\t\t}]\n\t\t});\n\t\tpass.setPipeline(this.pipeline);\n\t\tpass.setBindGroup(0, bindGroup);\n\t\tpass.draw(3);\n\t\tpass.end();\n\t}\n};\n\n//#endregion\n//#region src/renderers/webgpu-renderer.ts\n/**\n* Runners by model options (variant, models dir, mirror), each with the runners\n* derived from it by decode options — layers that differ only in classes or\n* confidence share sessions instead of reloading the models.\n*/\nconst sharedRunners = /* @__PURE__ */ new Map();\nconst MAX_SHARED_RUNNERS = 4;\nlet sharedSkeletonRenderer = null;\nlet sharedCompositor = null;\nlet sharedCompositorFormat = null;\n/** Analysed frames, shared by every vision node in the process. */\nconst frameCache = new VisionFrameCache();\n/** The frame each node's child texture holds (drawn on its last call). */\nconst heldFrameByNode = /* @__PURE__ */ new Map();\n/** Per node: a copy of the held frame, the frame being analysed, and the composited matte. */\nconst heldTextures = /* @__PURE__ */ new Map();\nconst analysisTextures = /* @__PURE__ */ new Map();\nconst matteTextures = /* @__PURE__ */ new Map();\n/** One tracker per vision node — track ids must not mix across nodes/sources. */\nconst objectTrackers = /* @__PURE__ */ new Map();\n/**\n* Persistent per-node child textures. The shared frame encoder is submitted at\n* the END of the frame, so a node renderer cannot read back the child it just\n* drew. We keep the texture around and read back the PREVIOUS frame's pixels at\n* the start of the next call — a stable one-frame delay instead of the\n* unpredictable multi-frame lag you get from pooled textures.\n*\n* Keyed on the stable Vision `Effect` instance (render ids change every frame),\n* with a size-keyed fallback for raw operation nodes.\n*/\nconst childTexturesByEffect = /* @__PURE__ */ new WeakMap();\nconst childTexturesByKey = /* @__PURE__ */ new Map();\n/**\n* Last successful subject mask, reused for a few frames when the model misses —\n* a transient miss then holds the silhouette instead of flashing the raw plate.\n* Keyed per node/effect so multiple vision nodes do not collide.\n*/\nconst lastSubjectByNode = /* @__PURE__ */ new Map();\nconst SUBJECT_HOLD_FRAMES = 3;\n/** A per-node texture shaped like `like`, recreated when the size changes. */\nfunction nodeTexture(textures, device, key, like, usage, label) {\n\tlet tex = textures.get(key);\n\tif (!tex || tex.width !== like.width || tex.height !== like.height || tex.format !== like.format) {\n\t\ttex?.destroy();\n\t\ttex = device.createTexture({\n\t\t\tsize: [like.width, like.height],\n\t\t\tformat: like.format,\n\t\t\tusage,\n\t\t\tlabel\n\t\t});\n\t\ttextures.set(key, tex);\n\t}\n\treturn tex;\n}\nconst heldTexture = (device, key, like) => nodeTexture(heldTextures, device, key, like, GPUTextureUsage.COPY_DST | GPUTextureUsage.TEXTURE_BINDING, \"vision_held_frame\");\nconst analysisTexture = (device, key, like) => nodeTexture(analysisTextures, device, key, like, GPUTextureUsage.COPY_DST | GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC, \"vision_analysis_frame\");\nconst matteTexture = (device, key, like) => nodeTexture(matteTextures, device, key, like, GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC, \"vision_matte\");\n/** Everything that decides a frame's results besides the frame itself. */\nfunction cacheSource(nodeKey, child, op, width, height) {\n\tconst c = child;\n\treturn JSON.stringify([\n\t\tnodeKey,\n\t\tc?.operation?.id ?? c?.id ?? null,\n\t\twidth,\n\t\theight,\n\t\top.mode ?? \"passthrough\",\n\t\top.variant,\n\t\top.confidence,\n\t\top.classes,\n\t\top.maskThreshold,\n\t\top.featherRadius,\n\t\top.matteSource,\n\t\top.keyBackground === true,\n\t\top.maxMissedFrames\n\t]);\n}\n/** The background-key threshold at `frame` (it may be animated). */\nfunction backgroundKeyThreshold(op, frame, fps) {\n\tconst raw = op.backgroundKeyThreshold;\n\tif (typeof raw === \"number\") return raw;\n\tif (typeof raw?.get === \"function\") return Number(raw.get({\n\t\tframe,\n\t\tfps\n\t}));\n\tif (typeof raw?._value === \"number\") return Number(raw._value);\n\treturn 70;\n}\n/**\n* The model's subject, or the last one through brief misses: a transient miss\n* then holds the silhouette instead of flashing the raw plate.\n*/\nfunction selectSubject(selected, nodeKey, frame) {\n\tif (selected) {\n\t\tlastSubjectByNode.set(nodeKey, {\n\t\t\tmask: selected,\n\t\t\tframe\n\t\t});\n\t\treturn selected;\n\t}\n\tconst last = lastSubjectByNode.get(nodeKey);\n\tif (last && frame - last.frame <= SUBJECT_HOLD_FRAMES) return last.mask;\n}\n/**\n* Lazy shared runner — `create()` is a pure constructor (zero I/O); the first frame that\n* requests a task triggers that task's model download at inference time (never at init).\n* Nodes with the same model options share sessions; decode options (classes,\n* confidence, …) get a derived runner over the same sessions.\n*/\nfunction getSharedRunner(op) {\n\tconst modelOptions = {\n\t\tvariant: op.variant,\n\t\tmodelsDir: op.modelsDir,\n\t\tbaseUrl: op.baseUrl\n\t};\n\tconst modelKey = JSON.stringify(modelOptions);\n\tlet entry = sharedRunners.get(modelKey);\n\tif (!entry) {\n\t\tif (sharedRunners.size >= MAX_SHARED_RUNNERS) {\n\t\t\tconst [oldestKey, oldest] = sharedRunners.entries().next().value;\n\t\t\toldest.runner.close();\n\t\t\tsharedRunners.delete(oldestKey);\n\t\t}\n\t\tentry = {\n\t\t\trunner: VisionRunner.create(modelOptions),\n\t\t\tderived: /* @__PURE__ */ new Map()\n\t\t};\n\t\tsharedRunners.set(modelKey, entry);\n\t}\n\tconst decodeOptions = {\n\t\tconfidence: op.confidence,\n\t\tclasses: op.classes,\n\t\tmaskThreshold: op.maskThreshold,\n\t\tfeatherRadius: op.featherRadius\n\t};\n\tconst decodeKey = JSON.stringify(decodeOptions);\n\tlet runner = entry.derived.get(decodeKey);\n\tif (!runner) {\n\t\trunner = entry.runner.derive(decodeOptions);\n\t\tentry.derived.set(decodeKey, runner);\n\t}\n\treturn runner;\n}\nfunction getObjectTracker(nodeKey, op) {\n\tlet tracker = objectTrackers.get(nodeKey);\n\tif (!tracker) {\n\t\ttracker = new TemporalObjectTracker({ maxMissedFrames: op.maxMissedFrames ?? 15 });\n\t\tobjectTrackers.set(nodeKey, tracker);\n\t}\n\treturn tracker;\n}\n/**\n* Normalizes the runner's pose keypoints (plate pixel space) to [0, 1] landmarks, which is\n* the contract the signal bundle and the skeleton pipeline expect.\n*/\nfunction normalizePoseKeypoints(result, width, height) {\n\tif (width <= 0 || height <= 0) return result;\n\treturn { people: result.people.map((person) => ({\n\t\t...person,\n\t\tkeypoints: person.keypoints.map((k) => ({\n\t\t\tx: k.x / width,\n\t\t\ty: k.y / height,\n\t\t\tvisibility: k.visibility\n\t\t}))\n\t})) };\n}\n/** Case-insensitive class filter, as the runner's decode applies it. */\nfunction matchesClasses(category, classes) {\n\tif (!classes) return true;\n\tconst c = category.toLowerCase();\n\treturn classes.some((k) => k.toLowerCase() === c);\n}\n/** Assigns each decoded instance mask to the temporal track whose box center is nearest the mask's centroid. */\nfunction assignMasksToTracks(masks, tracked) {\n\treturn masks.map((mask) => {\n\t\tconst { cx, cy } = maskCentroid(mask);\n\t\tlet best = null;\n\t\tfor (const obj of tracked) {\n\t\t\tconst dx = obj.centerX - cx;\n\t\t\tconst dy = obj.centerY - cy;\n\t\t\tconst distance = dx * dx + dy * dy;\n\t\t\tif (!best || distance < best.distance) best = {\n\t\t\t\ttrackId: obj.trackId,\n\t\t\t\tdistance\n\t\t\t};\n\t\t}\n\t\treturn best ? {\n\t\t\t...mask,\n\t\t\ttrackId: best.trackId\n\t\t} : mask;\n\t});\n}\n/**\n* Grows a subject mask into connected foreground pixels — seeding a flood fill\n* from the subject through pixels that differ from the sampled backdrop recovers\n* thin or fast-moving edges (hair, fabric) without adding a near-uniform studio\n* wall or its soft grey shadow.\n*/\nfunction fillInternalHoles(mask, width, height) {\n\tconst n = width * height;\n\tconst exterior = new Uint8Array(n);\n\tconst queue = new Int32Array(n);\n\tlet tail = 0;\n\tconst seed = (i) => {\n\t\tif (exterior[i] || mask[i] > 0) return;\n\t\texterior[i] = 1;\n\t\tqueue[tail++] = i;\n\t};\n\tfor (let x = 0; x < width; x++) {\n\t\tseed(x);\n\t\tseed((height - 1) * width + x);\n\t}\n\tfor (let y = 0; y < height; y++) {\n\t\tseed(y * width);\n\t\tseed(y * width + width - 1);\n\t}\n\tlet head = 0;\n\twhile (head < tail) {\n\t\tconst i = queue[head++];\n\t\tconst x = i % width;\n\t\tlet j = i + 1;\n\t\tif (x + 1 < width && !exterior[j] && mask[j] === 0) {\n\t\t\texterior[j] = 1;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t\tj = i - 1;\n\t\tif (x > 0 && !exterior[j] && mask[j] === 0) {\n\t\t\texterior[j] = 1;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t\tj = i + width;\n\t\tif (j < n && !exterior[j] && mask[j] === 0) {\n\t\t\texterior[j] = 1;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t\tj = i - width;\n\t\tif (j >= 0 && !exterior[j] && mask[j] === 0) {\n\t\t\texterior[j] = 1;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t}\n\tfor (let i = 0; i < n; i++) if (mask[i] === 0 && exterior[i] === 0) mask[i] = 255;\n}\nfunction smoothMaskBoundary(mask, width, height, radius = 2) {\n\tif (radius <= 0) return mask;\n\tconst temp = new Uint8Array(width * height);\n\tconst out = new Uint8Array(width * height);\n\tconst div = 2 * radius + 1;\n\tfor (let y = 0; y < height; y++) {\n\t\tconst row = y * width;\n\t\tlet sum = 0;\n\t\tfor (let k = -radius; k <= radius; k++) {\n\t\t\tconst x = Math.max(0, Math.min(width - 1, k));\n\t\t\tsum += mask[row + x];\n\t\t}\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\ttemp[row + x] = Math.round(sum / div);\n\t\t\tconst xOut = Math.max(0, x - radius);\n\t\t\tconst xIn = Math.min(width - 1, x + radius + 1);\n\t\t\tsum += mask[row + xIn] - mask[row + xOut];\n\t\t}\n\t}\n\tconst sums = new Float64Array(width);\n\tfor (let k = -radius; k <= radius; k++) {\n\t\tconst row = Math.max(0, Math.min(height - 1, k)) * width;\n\t\tfor (let x = 0; x < width; x++) sums[x] += temp[row + x];\n\t}\n\tfor (let y = 0; y < height; y++) {\n\t\tconst row = y * width;\n\t\tconst rowOut = Math.max(0, y - radius) * width;\n\t\tconst rowIn = Math.min(height - 1, y + radius + 1) * width;\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\tout[row + x] = Math.round(sums[x] / div);\n\t\t\tsums[x] += temp[rowIn + x] - temp[rowOut + x];\n\t\t}\n\t}\n\treturn out;\n}\nfunction growMaskIntoForeground(mask, width, height, pixels, threshold, featherRadius) {\n\tlet br = 0;\n\tlet bg = 0;\n\tlet bb = 0;\n\tlet count = 0;\n\tconst sample = (x, y) => {\n\t\tconst i = y * width + x;\n\t\tif (mask[i]) return;\n\t\tconst p = i * 4;\n\t\tbr += pixels[p];\n\t\tbg += pixels[p + 1];\n\t\tbb += pixels[p + 2];\n\t\tcount++;\n\t};\n\tfor (let x = 0; x < width; x += 4) {\n\t\tsample(x, 0);\n\t\tsample(x, height - 1);\n\t}\n\tfor (let y = 0; y < height; y += 4) {\n\t\tsample(0, y);\n\t\tsample(width - 1, y);\n\t}\n\tif (count === 0) return mask;\n\tbr /= count;\n\tbg /= count;\n\tbb /= count;\n\tconst n = width * height;\n\tconst fg = new Uint8Array(n);\n\tfor (let i = 0, p = 0; i < n; i++, p += 4) fg[i] = Math.max(Math.abs(pixels[p] - br), Math.abs(pixels[p + 1] - bg), Math.abs(pixels[p + 2] - bb)) > threshold ? 1 : 0;\n\tconst queue = new Int32Array(n);\n\tlet tail = 0;\n\tfor (let i = 0; i < n; i++) if (mask[i] > 0) {\n\t\tif (fg[i]) mask[i] = 255;\n\t\tqueue[tail++] = i;\n\t}\n\tlet head = 0;\n\twhile (head < tail) {\n\t\tconst i = queue[head++];\n\t\tconst x = i % width;\n\t\tlet j = i + 1;\n\t\tif (x + 1 < width && mask[j] !== 255 && fg[j]) {\n\t\t\tmask[j] = 255;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t\tj = i - 1;\n\t\tif (x > 0 && mask[j] !== 255 && fg[j]) {\n\t\t\tmask[j] = 255;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t\tj = i + width;\n\t\tif (j < n && mask[j] !== 255 && fg[j]) {\n\t\t\tmask[j] = 255;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t\tj = i - width;\n\t\tif (j >= 0 && mask[j] !== 255 && fg[j]) {\n\t\t\tmask[j] = 255;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t}\n\tfillInternalHoles(mask, width, height);\n\treturn smoothMaskBoundary(mask, width, height, featherRadius !== void 0 && featherRadius > 0 ? Math.max(1, Math.min(8, Math.round(featherRadius * 50))) : 2);\n}\nfunction maskCentroid(mask) {\n\tconst { mask: data, width, height } = mask;\n\tlet sumX = 0;\n\tlet sumY = 0;\n\tlet count = 0;\n\tfor (let y = 0; y < height; y++) {\n\t\tconst row = y * width;\n\t\tfor (let x = 0; x < width; x++) if (data[row + x] > 0) {\n\t\t\tsumX += x;\n\t\t\tsumY += y;\n\t\t\tcount++;\n\t\t}\n\t}\n\tif (count === 0) return {\n\t\tcx: 0,\n\t\tcy: 0\n\t};\n\treturn {\n\t\tcx: sumX / count,\n\t\tcy: sumY / count\n\t};\n}\nconst VisionWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetView, targetWidth, targetHeight, props, drawChild } = args;\n\tconst { virtualMedia } = props;\n\tsetVisionDevice(ctx.device);\n\tconst rawOp = virtualMedia?.operation;\n\tif (rawOp?.op !== \"Vision\") return;\n\tconst op = rawOp;\n\tpass.end();\n\tconst childMedia = virtualMedia?.children?.[0];\n\tif (!childMedia) return;\n\tconst effectKey = op.effect;\n\tconst hasEffectKey = effectKey !== void 0 && effectKey !== null;\n\tconst nodeKeyStr = virtualMedia?.id ?? rawOp?.id ?? `${targetWidth}x${targetHeight}_${op.mode}_${op.variant}_${op.keyBackground}_${op.backgroundKeyThreshold}`;\n\tconst fallbackKey = `vision-${nodeKeyStr}`;\n\tlet childTex = hasEffectKey ? childTexturesByEffect.get(effectKey) : childTexturesByKey.get(fallbackKey);\n\tif (childTex && (childTex.width !== targetWidth || childTex.height !== targetHeight)) {\n\t\tchildTex.destroy();\n\t\tchildTex = void 0;\n\t\tif (hasEffectKey) childTexturesByEffect.delete(effectKey);\n\t\telse childTexturesByKey.delete(fallbackKey);\n\t}\n\tconst hasPreviousFrame = childTex !== void 0;\n\tif (!childTex) {\n\t\tchildTex = ctx.device.createTexture({\n\t\t\tsize: [targetWidth, targetHeight],\n\t\t\tformat: ctx.renderer.format,\n\t\t\tusage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC,\n\t\t\tlabel: \"vision_child_persistent\"\n\t\t});\n\t\tif (hasEffectKey) childTexturesByEffect.set(effectKey, childTex);\n\t\telse childTexturesByKey.set(fallbackKey, childTex);\n\t\tif (childTexturesByKey.size > 4) {\n\t\t\tconst oldest = childTexturesByKey.keys().next().value;\n\t\t\tif (oldest && oldest !== fallbackKey) {\n\t\t\t\tchildTexturesByKey.get(oldest)?.destroy();\n\t\t\t\tchildTexturesByKey.delete(oldest);\n\t\t\t}\n\t\t}\n\t}\n\tconst frameIdx = props.frame ?? 0;\n\tconst compositionFrame = props.compositionFrame ?? frameIdx;\n\tconst fps = props.fps ?? 24;\n\tconst mode = op.mode ?? \"passthrough\";\n\tconst isMatteMode = mode === \"mask\" || mode === \"matte\" || mode === \"crop\";\n\tconst visionBundle = op.visionBundle ?? virtualMedia.visionBundle;\n\tconst wantsDetection = op.enableDetection !== false || mode === \"boxes\" || mode === \"tracking\";\n\tconst wantsSegmentation = op.enableSegmentation === true || isMatteMode && op.matteSource !== \"selfie\";\n\tconst wantsSelfie = op.enableMatte === true || isMatteMode && op.matteSource === \"selfie\";\n\tconst wantsPose = op.enablePose === true || mode === \"skeleton\";\n\tconst clipSubject = isMatteMode && !visionBundle && !wantsPose && !wantsSelfie && op.keyBackground !== true ? clipSubjectFor(effectKey, props.sourceTimeSec === void 0 ? frameIdx : props.sourceTimeSec * fps, fps, targetWidth, targetHeight) : void 0;\n\tconst clipPose = mode === \"skeleton\" && !visionBundle ? clipPoseFor(effectKey, props.sourceTimeSec === void 0 ? frameIdx : props.sourceTimeSec * fps, fps, targetWidth, targetHeight) : void 0;\n\tconst fromClip = clipSubject !== void 0 || clipPose !== void 0;\n\tconst cacheable = !fromClip && !wantsSelfie && !wantsPose && (wantsDetection || wantsSegmentation);\n\tconst source = cacheable ? cacheSource(nodeKeyStr, childMedia, op, targetWidth, targetHeight) : \"\";\n\tconst keyThresholdAt = (frame$1) => op.keyBackground === true ? backgroundKeyThreshold(op, compositionFrame - (frameIdx - frame$1), fps) : void 0;\n\tconst lookup = (frame$1) => {\n\t\tif (!cacheable || frame$1 === void 0) return void 0;\n\t\tconst hit = frameCache.get(source, frame$1);\n\t\tif (!hit || hit.keyThreshold !== keyThresholdAt(frame$1)) return void 0;\n\t\tif (wantsSegmentation && visionBundle && !hit.masks) return void 0;\n\t\treturn hit;\n\t};\n\tconst heldFrame = hasPreviousFrame ? heldFrameByNode.get(nodeKeyStr) : void 0;\n\tlet cached = lookup(frameIdx);\n\tconst exact = fromClip || cached !== void 0;\n\tif (!cached) cached = lookup(heldFrame);\n\tlet heldTex;\n\tif (isMatteMode && hasPreviousFrame && !exact) {\n\t\theldTex = heldTexture(ctx.device, nodeKeyStr, childTex);\n\t\tencoder.copyTextureToTexture({ texture: childTex }, { texture: heldTex }, [\n\t\t\ttargetWidth,\n\t\t\ttargetHeight,\n\t\t\t1\n\t\t]);\n\t}\n\tlet frame;\n\tlet framePixels = null;\n\tif (hasPreviousFrame && !cached && !fromClip) {\n\t\tconst analysis = analysisTexture(ctx.device, nodeKeyStr, childTex);\n\t\tconst copy = ctx.device.createCommandEncoder({ label: \"vision_analysis_copy\" });\n\t\tcopy.copyTextureToTexture({ texture: childTex }, { texture: analysis }, [\n\t\t\ttargetWidth,\n\t\t\ttargetHeight,\n\t\t\t1\n\t\t]);\n\t\tctx.device.queue.submit([copy.finish()]);\n\t\tframe = {\n\t\t\ttexture: analysis,\n\t\t\tdevice: ctx.device,\n\t\t\twidth: targetWidth,\n\t\t\theight: targetHeight\n\t\t};\n\t\tif (isMatteMode && op.keyBackground === true) framePixels = (await readTexturePixels(frame)).data;\n\t}\n\tconst childView = childTex.createView();\n\tctx.renderer.beginFrame(encoder, childView, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, targetWidth, targetHeight, \"clear\").end();\n\tawait drawChild(childMedia, { ...props }, childView, childTex, targetWidth, targetHeight);\n\theldFrameByNode.set(nodeKeyStr, frameIdx);\n\tlet frameObjects = [];\n\tlet frameMasks = [];\n\tlet personMatte;\n\tlet currentPoseRes;\n\tlet subject;\n\tif (fromClip) {\n\t\tsubject = clipSubject ?? void 0;\n\t\tif (subject) lastSubjectByNode.set(nodeKeyStr, {\n\t\t\tmask: subject,\n\t\t\tframe: frameIdx\n\t\t});\n\t\telse lastSubjectByNode.delete(nodeKeyStr);\n\t} else if (cached) {\n\t\tframeObjects = cached.objects;\n\t\tif (wantsDetection) visionBundle?.setObjectResult(frameIdx, {\n\t\t\tobjects: cached.objects,\n\t\t\trawDetections: cached.detections\n\t\t});\n\t\tif (wantsSegmentation && visionBundle && cached.masks) {\n\t\t\tframeMasks = cached.masks.map(fromCachedMask);\n\t\t\tvisionBundle.setMaskResult(frameIdx, frameMasks);\n\t\t}\n\t\tif (cached.subject) {\n\t\t\tsubject = fromCachedMask(cached.subject.mask);\n\t\t\tlastSubjectByNode.set(nodeKeyStr, {\n\t\t\t\tmask: subject,\n\t\t\t\tframe: frameIdx\n\t\t\t});\n\t\t}\n\t} else if (frame) {\n\t\tconst runner = getSharedRunner(op);\n\t\tconst image = frame;\n\t\tlet detections = [];\n\t\tif (wantsDetection) {\n\t\t\tdetections = await runner.detect(image);\n\t\t\tconst tracker = getObjectTracker(nodeKeyStr, op);\n\t\t\tif (frameIdx === 0) tracker.reset();\n\t\t\tframeObjects = tracker.update(detections, frameIdx, fps);\n\t\t\tvisionBundle?.setObjectResult(frameIdx, {\n\t\t\t\tobjects: frameObjects,\n\t\t\t\trawDetections: detections\n\t\t\t});\n\t\t}\n\t\tlet subjectMasks = [];\n\t\tif (wantsSegmentation) {\n\t\t\tconst subjectFromAllClasses = isMatteMode && op.matteSource !== \"selfie\" && op.classes !== void 0;\n\t\t\tconst segRes = await (subjectFromAllClasses ? getSharedRunner({\n\t\t\t\t...op,\n\t\t\t\tclasses: void 0\n\t\t\t}) : runner).segment(image);\n\t\t\tframeMasks = assignMasksToTracks(subjectFromAllClasses ? segRes.masks.filter((m) => matchesClasses(m.category, op.classes)) : segRes.masks, frameObjects);\n\t\t\tsubjectMasks = subjectFromAllClasses ? segRes.masks : frameMasks;\n\t\t\tvisionBundle?.setMaskResult(frameIdx, frameMasks);\n\t\t}\n\t\tif (wantsSelfie) {\n\t\t\tpersonMatte = await runner.matte(image);\n\t\t\tvisionBundle?.setMatteResult(frameIdx, personMatte);\n\t\t}\n\t\tif (wantsPose) {\n\t\t\tcurrentPoseRes = { people: matchPoseToTracks(normalizePoseKeypoints(await runner.pose(image), image.width, image.height).people, frameObjects) };\n\t\t\tvisionBundle?.setPoseResult(frameIdx, currentPoseRes);\n\t\t}\n\t\tif (isMatteMode) {\n\t\t\tsubject = selectSubject(op.matteSource === \"selfie\" ? personMatteAsMask(personMatte) : mergeSubjectMask(subjectMasks.length > 0 ? subjectMasks : visionBundle?.getMaskResult(frameIdx) ?? [], { classes: op.classes }), nodeKeyStr, frameIdx);\n\t\t\tconst threshold = keyThresholdAt(heldFrame ?? frameIdx);\n\t\t\tif (subject && threshold !== void 0 && framePixels) subject = {\n\t\t\t\t...subject,\n\t\t\t\tmask: growMaskIntoForeground(subject.mask, subject.width, subject.height, framePixels, threshold, op.featherRadius)\n\t\t\t};\n\t\t}\n\t\tif (cacheable && heldFrame !== void 0) frameCache.set(source, heldFrame, {\n\t\t\tdetections,\n\t\t\tobjects: frameObjects,\n\t\t\tmasks: visionBundle ? frameMasks.map(toCachedMask) : null,\n\t\t\tsubject: subject ? { mask: toCachedMask(subject) } : null,\n\t\t\tkeyThreshold: keyThresholdAt(heldFrame)\n\t\t});\n\t}\n\tif (isMatteMode) {\n\t\tconst picture = exact ? childTex : heldTex;\n\t\tif (!subject || !picture) {\n\t\t\tctx.renderer.beginFrame(encoder, targetView, {\n\t\t\t\tr: 0,\n\t\t\t\tg: 0,\n\t\t\t\tb: 0,\n\t\t\t\ta: 0\n\t\t\t}, targetWidth, targetHeight, \"clear\").end();\n\t\t\treturn;\n\t\t}\n\t\tif (!sharedCompositor || sharedCompositorFormat !== ctx.renderer.format) {\n\t\t\tsharedCompositor = new MatteCompositor(ctx.device, ctx.renderer.format);\n\t\t\tsharedCompositorFormat = ctx.renderer.format;\n\t\t}\n\t\tconst maskTex = sharedCompositor.uploadMask(nodeKeyStr, subject.mask, subject.width, subject.height);\n\t\tconst matteTex = matteTexture(ctx.device, nodeKeyStr, childTex);\n\t\tsharedCompositor.draw(encoder, matteTex.createView(), picture, maskTex, mode, mode === \"crop\" ? maskBounds(subject) ?? void 0 : void 0);\n\t\tvisionBundle?.setStencilTexture(matteTex);\n\t\tconst outPass$1 = ctx.renderer.beginFrame(encoder, targetView, {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}, targetWidth, targetHeight, \"clear\");\n\t\tctx.renderer.drawTexture(outPass$1, matteTex, {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth: targetWidth,\n\t\t\theight: targetHeight\n\t\t});\n\t\toutPass$1.end();\n\t\treturn;\n\t}\n\tif (mode === \"skeleton\") {\n\t\tif (!sharedSkeletonRenderer) sharedSkeletonRenderer = new PoseSkeletonRenderer(ctx.device);\n\t\tconst keypoints = clipPose !== void 0 ? clipPose : (visionBundle?.getPoseResult(frameIdx) ?? currentPoseRes)?.people[0]?.keypoints;\n\t\tconst skelPass = ctx.renderer.beginFrame(encoder, targetView, {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}, targetWidth, targetHeight, \"clear\");\n\t\tif (keypoints && keypoints.length > 0) {\n\t\t\tconst skelTex = sharedSkeletonRenderer.renderToTexture(keypoints, {\n\t\t\t\twidth: targetWidth,\n\t\t\t\theight: targetHeight\n\t\t\t});\n\t\t\tctx.renderer.drawTexture(skelPass, skelTex, {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\twidth: targetWidth,\n\t\t\t\theight: targetHeight\n\t\t\t});\n\t\t}\n\t\tskelPass.end();\n\t\treturn;\n\t}\n\tif (mode === \"boxes\" || mode === \"tracking\") {\n\t\tconst outPass$1 = ctx.renderer.beginFrame(encoder, targetView, {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}, targetWidth, targetHeight, \"clear\");\n\t\tctx.renderer.drawTexture(outPass$1, childTex, {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth: targetWidth,\n\t\t\theight: targetHeight\n\t\t});\n\t\tconst objects = frameObjects.length > 0 ? frameObjects : visionBundle?.getObjectResult(frameIdx).objects ?? [];\n\t\tif (objects.length > 0) {\n\t\t\tconst boxColor = \"#38bdf8\";\n\t\t\tconst stroke = 2;\n\t\t\tfor (const obj of objects) {\n\t\t\t\tif (!obj.active) continue;\n\t\t\t\tconst b = obj.boundingBox;\n\t\t\t\tctx.renderer.drawRect(outPass$1, {\n\t\t\t\t\tx: b.originX,\n\t\t\t\t\ty: b.originY,\n\t\t\t\t\twidth: b.width,\n\t\t\t\t\theight: stroke\n\t\t\t\t}, boxColor);\n\t\t\t\tctx.renderer.drawRect(outPass$1, {\n\t\t\t\t\tx: b.originX,\n\t\t\t\t\ty: b.originY + b.height - stroke,\n\t\t\t\t\twidth: b.width,\n\t\t\t\t\theight: stroke\n\t\t\t\t}, boxColor);\n\t\t\t\tctx.renderer.drawRect(outPass$1, {\n\t\t\t\t\tx: b.originX,\n\t\t\t\t\ty: b.originY,\n\t\t\t\t\twidth: stroke,\n\t\t\t\t\theight: b.height\n\t\t\t\t}, boxColor);\n\t\t\t\tctx.renderer.drawRect(outPass$1, {\n\t\t\t\t\tx: b.originX + b.width - stroke,\n\t\t\t\t\ty: b.originY,\n\t\t\t\t\twidth: stroke,\n\t\t\t\t\theight: b.height\n\t\t\t\t}, boxColor);\n\t\t\t\tconst cornerLen = Math.min(16, b.width / 4, b.height / 4);\n\t\t\t\tctx.renderer.drawRect(outPass$1, {\n\t\t\t\t\tx: b.originX,\n\t\t\t\t\ty: b.originY,\n\t\t\t\t\twidth: cornerLen,\n\t\t\t\t\theight: stroke * 2\n\t\t\t\t}, \"#ffffff\");\n\t\t\t\tctx.renderer.drawRect(outPass$1, {\n\t\t\t\t\tx: b.originX,\n\t\t\t\t\ty: b.originY,\n\t\t\t\t\twidth: stroke * 2,\n\t\t\t\t\theight: cornerLen\n\t\t\t\t}, \"#ffffff\");\n\t\t\t\tif (mode === \"tracking\") ctx.renderer.drawRect(outPass$1, {\n\t\t\t\t\tx: obj.centerX - 3,\n\t\t\t\t\ty: obj.centerY - 3,\n\t\t\t\t\twidth: 6,\n\t\t\t\t\theight: 6\n\t\t\t\t}, \"#ef4444\", 3);\n\t\t\t}\n\t\t}\n\t\toutPass$1.end();\n\t\treturn;\n\t}\n\tconst outPass = ctx.renderer.beginFrame(encoder, targetView, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, targetWidth, targetHeight, \"clear\");\n\tctx.renderer.drawTexture(outPass, childTex, {\n\t\tx: 0,\n\t\ty: 0,\n\t\twidth: targetWidth,\n\t\theight: targetHeight\n\t});\n\toutPass.end();\n};\n/**\n* The subject a linked `comp.vision` clip holds for a source frame (see\n* CLIP_SUBJECT). Its mask is in source pixels; the composite samples it by\n* uv, so it fits any target of the same aspect. Other shapes fall back.\n*/\nfunction clipSubjectFor(effect, frame, fps, width, height) {\n\tconst source = linkedClip(effect);\n\tconst subject = source?.subject(frame, fps);\n\tif (!subject || !source) return subject;\n\treturn fitsTarget(source, subject.width / subject.height, width / height) ? subject : void 0;\n}\n/**\n* The pose a linked `comp.vision` clip matched to its subject for a source\n* frame, normalized to the source; it fits targets of the same aspect.\n*/\nfunction clipPoseFor(effect, frame, fps, width, height) {\n\tconst source = linkedClip(effect);\n\tconst pose = source?.pose?.(frame, fps);\n\tif (!pose || !source) return pose === null ? null : void 0;\n\treturn fitsTarget(source, pose.width / pose.height, width / height) ? pose.keypoints : void 0;\n}\nfunction linkedClip(effect) {\n\treturn effect?.[CLIP_SUBJECT];\n}\n/** Source results map onto a target of the same aspect; a prompted clip must not fall back. */\nfunction fitsTarget(source, sourceAspect, targetAspect) {\n\tif (Math.abs(sourceAspect / targetAspect - 1) < .01) return true;\n\tif (source.exact) throw new Error(\"A prompted clip matte requires the source aspect ratio. Apply layout cropping after the source matte.\");\n\treturn false;\n}\n/** Adapts a Selfie Segmenter matte to the instance-mask shape the composite path takes. */\nfunction personMatteAsMask(matte) {\n\tif (!matte || matte.coverage <= 0) return void 0;\n\tconst area = Math.round(matte.coverage * matte.width * matte.height);\n\treturn {\n\t\tcategory: \"person\",\n\t\tmask: matte.mask,\n\t\twidth: matte.width,\n\t\theight: matte.height,\n\t\tarea,\n\t\tcoverage: matte.coverage,\n\t\tdetectionIndex: -1\n\t};\n}\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: VisionWebGPURenderer });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-Ao0SpHQm.mjs.map"],"mappings":"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;AACD,MAAM,wBAAwB;CAC7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED,MAAM,eAAe;CACpB;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB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"}
|