@devmotion/cli 0.6.3 → 0.8.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/README.md +13 -0
- package/dist/index.js +135 -349
- package/mcp/mcp-stdio.mjs +377 -156
- package/package.json +1 -1
- package/studio/client/_app/immutable/assets/0.Lv_sH-a4.css +1 -0
- package/studio/client/_app/immutable/assets/0.Lv_sH-a4.css.br +0 -0
- package/studio/client/_app/immutable/assets/0.Lv_sH-a4.css.gz +0 -0
- package/studio/client/_app/immutable/assets/editor.BN5lBQZg.css +1 -0
- package/studio/client/_app/immutable/assets/editor.BN5lBQZg.css.br +0 -0
- package/studio/client/_app/immutable/assets/editor.BN5lBQZg.css.gz +0 -0
- package/studio/client/_app/immutable/chunks/4QfhfUmj.js +1 -0
- package/studio/client/_app/immutable/chunks/4QfhfUmj.js.br +0 -0
- package/studio/client/_app/immutable/chunks/4QfhfUmj.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/B4vsfLqj.js +1 -0
- package/studio/client/_app/immutable/chunks/B4vsfLqj.js.br +0 -0
- package/studio/client/_app/immutable/chunks/B4vsfLqj.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/B7SJbUFX.js +1 -0
- package/studio/client/_app/immutable/chunks/B7SJbUFX.js.br +0 -0
- package/studio/client/_app/immutable/chunks/B7SJbUFX.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/B9f32Zzc.js +1 -0
- package/studio/client/_app/immutable/chunks/B9f32Zzc.js.br +1 -0
- package/studio/client/_app/immutable/chunks/B9f32Zzc.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BHu0iPy_.js +1 -0
- package/studio/client/_app/immutable/chunks/BHu0iPy_.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BHu0iPy_.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BVqaYHsk.js +1 -0
- package/studio/client/_app/immutable/chunks/BVqaYHsk.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BVqaYHsk.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BcZVIP5f.js +1 -0
- package/studio/client/_app/immutable/chunks/BcZVIP5f.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BcZVIP5f.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BcqGu5mG.js +1 -0
- package/studio/client/_app/immutable/chunks/BcqGu5mG.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BcqGu5mG.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BfikHP7B.js +512 -0
- package/studio/client/_app/immutable/chunks/BfikHP7B.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BfikHP7B.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BpSxDpO2.js +1 -0
- package/studio/client/_app/immutable/chunks/BpSxDpO2.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BpSxDpO2.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BpuHE4_g.js +1 -0
- package/studio/client/_app/immutable/chunks/BpuHE4_g.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BpuHE4_g.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Bs1PixFT.js +1 -0
- package/studio/client/_app/immutable/chunks/Bs1PixFT.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Bs1PixFT.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Bu_5E1Sl.js +1 -0
- package/studio/client/_app/immutable/chunks/Bu_5E1Sl.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Bu_5E1Sl.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/C2XXotQj.js +1 -0
- package/studio/client/_app/immutable/chunks/C2XXotQj.js.br +0 -0
- package/studio/client/_app/immutable/chunks/C2XXotQj.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CAACQLfs.js +1 -0
- package/studio/client/_app/immutable/chunks/CAACQLfs.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CAACQLfs.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CClcTVCL.js +1 -0
- package/studio/client/_app/immutable/chunks/CClcTVCL.js.br +2 -0
- package/studio/client/_app/immutable/chunks/CClcTVCL.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CDjRusee.js +1 -0
- package/studio/client/_app/immutable/chunks/CDjRusee.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CDjRusee.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CU5enDwt.js +1 -0
- package/studio/client/_app/immutable/chunks/CU5enDwt.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CU5enDwt.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CaaG7K_x.js +1 -0
- package/studio/client/_app/immutable/chunks/CaaG7K_x.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CaaG7K_x.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Cd2UbfQ6.js +2 -0
- package/studio/client/_app/immutable/chunks/Cd2UbfQ6.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Cd2UbfQ6.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Cf4-5HnP.js +1 -0
- package/studio/client/_app/immutable/chunks/Cf4-5HnP.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Cf4-5HnP.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CqE47GI1.js +1 -0
- package/studio/client/_app/immutable/chunks/CqE47GI1.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CqE47GI1.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CqaLkm1l.js +4 -0
- package/studio/client/_app/immutable/chunks/CqaLkm1l.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CqaLkm1l.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CrnqEuwa.js +1 -0
- package/studio/client/_app/immutable/chunks/CrnqEuwa.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CrnqEuwa.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Cv2_oVuk.js +1 -0
- package/studio/client/_app/immutable/chunks/Cv2_oVuk.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Cv2_oVuk.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/D0nqj3Uj.js +1 -0
- package/studio/client/_app/immutable/chunks/D0nqj3Uj.js.br +0 -0
- package/studio/client/_app/immutable/chunks/D0nqj3Uj.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/D260PcBB.js +1 -0
- package/studio/client/_app/immutable/chunks/D260PcBB.js.br +0 -0
- package/studio/client/_app/immutable/chunks/D260PcBB.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DB8_8dee.js +2 -0
- package/studio/client/_app/immutable/chunks/DB8_8dee.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DB8_8dee.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DBZQgiHq.js +4 -0
- package/studio/client/_app/immutable/chunks/DBZQgiHq.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DBZQgiHq.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DMxd0pKL.js +96 -0
- package/studio/client/_app/immutable/chunks/DMxd0pKL.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DMxd0pKL.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DXX6oqEY.js +1 -0
- package/studio/client/_app/immutable/chunks/DXX6oqEY.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DXX6oqEY.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DYsdFO9i.js +1 -0
- package/studio/client/_app/immutable/chunks/DYsdFO9i.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DYsdFO9i.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DgTYfJMu.js +5 -0
- package/studio/client/_app/immutable/chunks/DgTYfJMu.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DgTYfJMu.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DjvvdYFY.js +1 -0
- package/studio/client/_app/immutable/chunks/DjvvdYFY.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DjvvdYFY.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Dn_cJtKS.js +1 -0
- package/studio/client/_app/immutable/chunks/Dn_cJtKS.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Dn_cJtKS.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Dx_nuQP5.js +1 -0
- package/studio/client/_app/immutable/chunks/Dx_nuQP5.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Dx_nuQP5.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/G4iiuHEo.js +1 -0
- package/studio/client/_app/immutable/chunks/G4iiuHEo.js.br +0 -0
- package/studio/client/_app/immutable/chunks/G4iiuHEo.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/GODyLR7Y.js +1 -0
- package/studio/client/_app/immutable/chunks/GODyLR7Y.js.br +0 -0
- package/studio/client/_app/immutable/chunks/GODyLR7Y.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/H5GgA2Hg.js +1 -0
- package/studio/client/_app/immutable/chunks/H5GgA2Hg.js.br +3 -0
- package/studio/client/_app/immutable/chunks/H5GgA2Hg.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/KindPqpA.js +1 -0
- package/studio/client/_app/immutable/chunks/KindPqpA.js.br +0 -0
- package/studio/client/_app/immutable/chunks/KindPqpA.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/MR-UHLyi.js +99 -0
- package/studio/client/_app/immutable/chunks/MR-UHLyi.js.br +0 -0
- package/studio/client/_app/immutable/chunks/MR-UHLyi.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/PZ9NXo-7.js +1 -0
- package/studio/client/_app/immutable/chunks/PZ9NXo-7.js.br +0 -0
- package/studio/client/_app/immutable/chunks/PZ9NXo-7.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/YwFQw-CS.js +730 -0
- package/studio/client/_app/immutable/chunks/YwFQw-CS.js.br +0 -0
- package/studio/client/_app/immutable/chunks/YwFQw-CS.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/iTzoDmCj.js +1 -0
- package/studio/client/_app/immutable/chunks/iTzoDmCj.js.br +0 -0
- package/studio/client/_app/immutable/chunks/iTzoDmCj.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/pT1u3Hqy.js +1 -0
- package/studio/client/_app/immutable/chunks/pT1u3Hqy.js.br +0 -0
- package/studio/client/_app/immutable/chunks/pT1u3Hqy.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/wHWYACQ6.js +16 -0
- package/studio/client/_app/immutable/chunks/wHWYACQ6.js.br +0 -0
- package/studio/client/_app/immutable/chunks/wHWYACQ6.js.gz +0 -0
- package/studio/client/_app/immutable/entry/app.D0e6CgLl.js +2 -0
- package/studio/client/_app/immutable/entry/app.D0e6CgLl.js.br +0 -0
- package/studio/client/_app/immutable/entry/app.D0e6CgLl.js.gz +0 -0
- package/studio/client/_app/immutable/entry/start.CXzKoAgP.js +1 -0
- package/studio/client/_app/immutable/entry/start.CXzKoAgP.js.br +0 -0
- package/studio/client/_app/immutable/entry/start.CXzKoAgP.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/0.BfZbVR14.js +2 -0
- package/studio/client/_app/immutable/nodes/0.BfZbVR14.js.br +0 -0
- package/studio/client/_app/immutable/nodes/0.BfZbVR14.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/1.BGxVZc_Z.js +1 -0
- package/studio/client/_app/immutable/nodes/1.BGxVZc_Z.js.br +0 -0
- package/studio/client/_app/immutable/nodes/1.BGxVZc_Z.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/10.BmsU7Niv.js +1 -0
- package/studio/client/_app/immutable/nodes/10.BmsU7Niv.js.br +0 -0
- package/studio/client/_app/immutable/nodes/10.BmsU7Niv.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/11.Bl10BIeh.js +1 -0
- package/studio/client/_app/immutable/nodes/11.Bl10BIeh.js.br +0 -0
- package/studio/client/_app/immutable/nodes/11.Bl10BIeh.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/12.Di52Em2U.js +2 -0
- package/studio/client/_app/immutable/nodes/12.Di52Em2U.js.br +0 -0
- package/studio/client/_app/immutable/nodes/12.Di52Em2U.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/13.D1KxkAvV.js +1 -0
- package/studio/client/_app/immutable/nodes/13.D1KxkAvV.js.br +0 -0
- package/studio/client/_app/immutable/nodes/13.D1KxkAvV.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/14.Ba-ayQpO.js +1 -0
- package/studio/client/_app/immutable/nodes/14.Ba-ayQpO.js.br +0 -0
- package/studio/client/_app/immutable/nodes/14.Ba-ayQpO.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/15.Bjs1ENL4.js +1 -0
- package/studio/client/_app/immutable/nodes/15.Bjs1ENL4.js.br +0 -0
- package/studio/client/_app/immutable/nodes/15.Bjs1ENL4.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/16.Ca8aIyjV.js +8 -0
- package/studio/client/_app/immutable/nodes/16.Ca8aIyjV.js.br +0 -0
- package/studio/client/_app/immutable/nodes/16.Ca8aIyjV.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/17.DR-c7BuD.js +1 -0
- package/studio/client/_app/immutable/nodes/17.DR-c7BuD.js.br +0 -0
- package/studio/client/_app/immutable/nodes/17.DR-c7BuD.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/18.D3yl0Qok.js +1 -0
- package/studio/client/_app/immutable/nodes/18.D3yl0Qok.js.br +0 -0
- package/studio/client/_app/immutable/nodes/18.D3yl0Qok.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/19.r0zsNF0J.js +1 -0
- package/studio/client/_app/immutable/nodes/19.r0zsNF0J.js.br +0 -0
- package/studio/client/_app/immutable/nodes/19.r0zsNF0J.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/20.wKchvAGW.js +45 -0
- package/studio/client/_app/immutable/nodes/20.wKchvAGW.js.br +0 -0
- package/studio/client/_app/immutable/nodes/20.wKchvAGW.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/21.CX28-f1P.js +16 -0
- package/studio/client/_app/immutable/nodes/21.CX28-f1P.js.br +0 -0
- package/studio/client/_app/immutable/nodes/21.CX28-f1P.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/28.BwKSpFi_.js +8 -0
- package/studio/client/_app/immutable/nodes/28.BwKSpFi_.js.br +0 -0
- package/studio/client/_app/immutable/nodes/28.BwKSpFi_.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/3.D1ljfi_V.js +1 -0
- package/studio/client/_app/immutable/nodes/3.D1ljfi_V.js.br +0 -0
- package/studio/client/_app/immutable/nodes/3.D1ljfi_V.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/30.DA7Me2YV.js +26 -0
- package/studio/client/_app/immutable/nodes/30.DA7Me2YV.js.br +0 -0
- package/studio/client/_app/immutable/nodes/30.DA7Me2YV.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/38.its7uZHe.js +1 -0
- package/studio/client/_app/immutable/nodes/38.its7uZHe.js.br +0 -0
- package/studio/client/_app/immutable/nodes/38.its7uZHe.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/39.DrGfz0RO.js +88 -0
- package/studio/client/_app/immutable/nodes/39.DrGfz0RO.js.br +0 -0
- package/studio/client/_app/immutable/nodes/39.DrGfz0RO.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/4.C-XTv_8D.js +1 -0
- package/studio/client/_app/immutable/nodes/4.C-XTv_8D.js.br +0 -0
- package/studio/client/_app/immutable/nodes/4.C-XTv_8D.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/40.B0WM2OHu.js +17 -0
- package/studio/client/_app/immutable/nodes/40.B0WM2OHu.js.br +0 -0
- package/studio/client/_app/immutable/nodes/40.B0WM2OHu.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/41.BZzYfCVE.js +1 -0
- package/studio/client/_app/immutable/nodes/41.BZzYfCVE.js.br +0 -0
- package/studio/client/_app/immutable/nodes/41.BZzYfCVE.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/42.BP7aBc8V.js +1 -0
- package/studio/client/_app/immutable/nodes/42.BP7aBc8V.js.br +0 -0
- package/studio/client/_app/immutable/nodes/42.BP7aBc8V.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/43.DYWNhvqm.js +1 -0
- package/studio/client/_app/immutable/nodes/43.DYWNhvqm.js.br +0 -0
- package/studio/client/_app/immutable/nodes/43.DYWNhvqm.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/44.CsVF9aXe.js +1 -0
- package/studio/client/_app/immutable/nodes/44.CsVF9aXe.js.br +0 -0
- package/studio/client/_app/immutable/nodes/44.CsVF9aXe.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/45.CeMReWED.js +2 -0
- package/studio/client/_app/immutable/nodes/45.CeMReWED.js.br +0 -0
- package/studio/client/_app/immutable/nodes/45.CeMReWED.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/46.tPqAAZZF.js +1 -0
- package/studio/client/_app/immutable/nodes/46.tPqAAZZF.js.br +0 -0
- package/studio/client/_app/immutable/nodes/46.tPqAAZZF.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/47.1pFnCvbM.js +1 -0
- package/studio/client/_app/immutable/nodes/47.1pFnCvbM.js.br +0 -0
- package/studio/client/_app/immutable/nodes/47.1pFnCvbM.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/48.Cy1KgYAH.js +1 -0
- package/studio/client/_app/immutable/nodes/48.Cy1KgYAH.js.br +0 -0
- package/studio/client/_app/immutable/nodes/48.Cy1KgYAH.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/49.Bh6bDdsT.js +7 -0
- package/studio/client/_app/immutable/nodes/49.Bh6bDdsT.js.br +0 -0
- package/studio/client/_app/immutable/nodes/49.Bh6bDdsT.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/5.C-XTv_8D.js +1 -0
- package/studio/client/_app/immutable/nodes/5.C-XTv_8D.js.br +0 -0
- package/studio/client/_app/immutable/nodes/5.C-XTv_8D.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/7.CS9X1kOu.js +1 -0
- package/studio/client/_app/immutable/nodes/7.CS9X1kOu.js.br +0 -0
- package/studio/client/_app/immutable/nodes/7.CS9X1kOu.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/8.Cux2oyT5.js +1 -0
- package/studio/client/_app/immutable/nodes/8.Cux2oyT5.js.br +0 -0
- package/studio/client/_app/immutable/nodes/8.Cux2oyT5.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/9.Dl65IEFD.js +1 -0
- package/studio/client/_app/immutable/nodes/9.Dl65IEFD.js.br +0 -0
- package/studio/client/_app/immutable/nodes/9.Dl65IEFD.js.gz +0 -0
- package/studio/client/_app/version.json +1 -1
- package/studio/client/_app/version.json.br +0 -0
- package/studio/client/_app/version.json.gz +0 -0
- package/studio/prerendered/docs/api/errors.html +38 -38
- package/studio/prerendered/docs/api/errors.html.br +0 -0
- package/studio/prerendered/docs/api/errors.html.gz +0 -0
- package/studio/prerendered/docs/api/projects.html +38 -38
- package/studio/prerendered/docs/api/projects.html.br +0 -0
- package/studio/prerendered/docs/api/projects.html.gz +0 -0
- package/studio/prerendered/docs/api/renders.html +38 -38
- package/studio/prerendered/docs/api/renders.html.br +0 -0
- package/studio/prerendered/docs/api/renders.html.gz +0 -0
- package/studio/prerendered/docs/api/templates.html +38 -38
- package/studio/prerendered/docs/api/templates.html.br +0 -0
- package/studio/prerendered/docs/api/templates.html.gz +0 -0
- package/studio/prerendered/docs/api/webhooks.html +38 -38
- package/studio/prerendered/docs/api/webhooks.html.br +0 -0
- package/studio/prerendered/docs/api/webhooks.html.gz +0 -0
- package/studio/prerendered/docs/api.html +38 -38
- package/studio/prerendered/docs/api.html.br +0 -0
- package/studio/prerendered/docs/api.html.gz +0 -0
- package/studio/prerendered/docs/mcp/integrations/autogen.html +40 -40
- package/studio/prerendered/docs/mcp/integrations/autogen.html.br +0 -0
- package/studio/prerendered/docs/mcp/integrations/autogen.html.gz +0 -0
- package/studio/prerendered/docs/mcp/integrations/crewai.html +38 -38
- package/studio/prerendered/docs/mcp/integrations/crewai.html.br +0 -0
- package/studio/prerendered/docs/mcp/integrations/crewai.html.gz +0 -0
- package/studio/prerendered/docs/mcp/integrations/dify.html +38 -38
- package/studio/prerendered/docs/mcp/integrations/dify.html.br +0 -0
- package/studio/prerendered/docs/mcp/integrations/dify.html.gz +0 -0
- package/studio/prerendered/docs/mcp/integrations/flowise.html +38 -38
- package/studio/prerendered/docs/mcp/integrations/flowise.html.br +0 -0
- package/studio/prerendered/docs/mcp/integrations/flowise.html.gz +0 -0
- package/studio/prerendered/docs/mcp/integrations/langchain.html +38 -38
- package/studio/prerendered/docs/mcp/integrations/langchain.html.br +0 -0
- package/studio/prerendered/docs/mcp/integrations/langchain.html.gz +0 -0
- package/studio/prerendered/docs/mcp/integrations/llamaindex.html +38 -38
- package/studio/prerendered/docs/mcp/integrations/llamaindex.html.br +0 -0
- package/studio/prerendered/docs/mcp/integrations/llamaindex.html.gz +0 -0
- package/studio/prerendered/docs/mcp/integrations/make.html +38 -38
- package/studio/prerendered/docs/mcp/integrations/make.html.br +0 -0
- package/studio/prerendered/docs/mcp/integrations/make.html.gz +0 -0
- package/studio/prerendered/docs/mcp/integrations/n8n.html +38 -38
- package/studio/prerendered/docs/mcp/integrations/n8n.html.br +0 -0
- package/studio/prerendered/docs/mcp/integrations/n8n.html.gz +0 -0
- package/studio/prerendered/docs/mcp/integrations.html +38 -38
- package/studio/prerendered/docs/mcp/integrations.html.br +0 -0
- package/studio/prerendered/docs/mcp/integrations.html.gz +0 -0
- package/studio/prerendered/docs/mcp/plans.html +40 -40
- package/studio/prerendered/docs/mcp/plans.html.br +0 -0
- package/studio/prerendered/docs/mcp/plans.html.gz +0 -0
- package/studio/prerendered/docs/mcp/reference.html +48 -47
- package/studio/prerendered/docs/mcp/reference.html.br +0 -0
- package/studio/prerendered/docs/mcp/reference.html.gz +0 -0
- package/studio/prerendered/docs/mcp/setup.html +44 -42
- package/studio/prerendered/docs/mcp/setup.html.br +0 -0
- package/studio/prerendered/docs/mcp/setup.html.gz +0 -0
- package/studio/prerendered/docs/mcp.html +40 -40
- package/studio/prerendered/docs/mcp.html.br +0 -0
- package/studio/prerendered/docs/mcp.html.gz +0 -0
- package/studio/prerendered/docs.html +37 -37
- package/studio/prerendered/docs.html.br +0 -0
- package/studio/prerendered/docs.html.gz +0 -0
- package/studio/prerendered/dub/arabic.html +36 -36
- package/studio/prerendered/dub/arabic.html.br +0 -0
- package/studio/prerendered/dub/arabic.html.gz +0 -0
- package/studio/prerendered/dub/chinese-simplified.html +36 -36
- package/studio/prerendered/dub/chinese-simplified.html.br +0 -0
- package/studio/prerendered/dub/chinese-simplified.html.gz +0 -0
- package/studio/prerendered/dub/dutch.html +36 -36
- package/studio/prerendered/dub/dutch.html.br +0 -0
- package/studio/prerendered/dub/dutch.html.gz +0 -0
- package/studio/prerendered/dub/french.html +36 -36
- package/studio/prerendered/dub/french.html.br +0 -0
- package/studio/prerendered/dub/french.html.gz +0 -0
- package/studio/prerendered/dub/german.html +36 -36
- package/studio/prerendered/dub/german.html.br +0 -0
- package/studio/prerendered/dub/german.html.gz +0 -0
- package/studio/prerendered/dub/hindi.html +36 -36
- package/studio/prerendered/dub/hindi.html.br +0 -0
- package/studio/prerendered/dub/hindi.html.gz +0 -0
- package/studio/prerendered/dub/italian.html +36 -36
- package/studio/prerendered/dub/italian.html.br +0 -0
- package/studio/prerendered/dub/italian.html.gz +0 -0
- package/studio/prerendered/dub/japanese.html +36 -36
- package/studio/prerendered/dub/japanese.html.br +0 -0
- package/studio/prerendered/dub/japanese.html.gz +0 -0
- package/studio/prerendered/dub/korean.html +36 -36
- package/studio/prerendered/dub/korean.html.br +0 -0
- package/studio/prerendered/dub/korean.html.gz +0 -0
- package/studio/prerendered/dub/polish.html +36 -36
- package/studio/prerendered/dub/polish.html.br +0 -0
- package/studio/prerendered/dub/polish.html.gz +0 -0
- package/studio/prerendered/dub/portuguese.html +36 -36
- package/studio/prerendered/dub/portuguese.html.br +0 -0
- package/studio/prerendered/dub/portuguese.html.gz +0 -0
- package/studio/prerendered/dub/spanish.html +36 -36
- package/studio/prerendered/dub/spanish.html.br +0 -0
- package/studio/prerendered/dub/spanish.html.gz +0 -0
- package/studio/prerendered/sitemap.xml +90 -90
- package/studio/prerendered/sitemap.xml.br +0 -0
- package/studio/prerendered/sitemap.xml.gz +0 -0
- package/studio/prerendered/tools/add-captions/instagram.html +36 -36
- package/studio/prerendered/tools/add-captions/instagram.html.br +0 -0
- package/studio/prerendered/tools/add-captions/instagram.html.gz +0 -0
- package/studio/prerendered/tools/add-captions/linkedin.html +36 -36
- package/studio/prerendered/tools/add-captions/linkedin.html.br +0 -0
- package/studio/prerendered/tools/add-captions/linkedin.html.gz +0 -0
- package/studio/prerendered/tools/add-captions/tiktok.html +36 -36
- package/studio/prerendered/tools/add-captions/tiktok.html.br +0 -0
- package/studio/prerendered/tools/add-captions/tiktok.html.gz +0 -0
- package/studio/prerendered/tools/add-captions/twitter-x.html +36 -36
- package/studio/prerendered/tools/add-captions/twitter-x.html.br +0 -0
- package/studio/prerendered/tools/add-captions/twitter-x.html.gz +0 -0
- package/studio/prerendered/tools/add-captions/youtube.html +36 -36
- package/studio/prerendered/tools/add-captions/youtube.html.br +0 -0
- package/studio/prerendered/tools/add-captions/youtube.html.gz +0 -0
- package/studio/prerendered/tools/add-captions.html +40 -40
- package/studio/prerendered/tools/add-captions.html.br +0 -0
- package/studio/prerendered/tools/add-captions.html.gz +0 -0
- package/studio/prerendered/tools/auto-cut/linkedin.html +36 -36
- package/studio/prerendered/tools/auto-cut/linkedin.html.br +0 -0
- package/studio/prerendered/tools/auto-cut/linkedin.html.gz +0 -0
- package/studio/prerendered/tools/auto-cut/podcast.html +36 -36
- package/studio/prerendered/tools/auto-cut/podcast.html.br +0 -0
- package/studio/prerendered/tools/auto-cut/podcast.html.gz +0 -0
- package/studio/prerendered/tools/auto-cut/tiktok.html +36 -36
- package/studio/prerendered/tools/auto-cut/tiktok.html.br +0 -0
- package/studio/prerendered/tools/auto-cut/tiktok.html.gz +0 -0
- package/studio/prerendered/tools/auto-cut/youtube.html +36 -36
- package/studio/prerendered/tools/auto-cut/youtube.html.br +0 -0
- package/studio/prerendered/tools/auto-cut/youtube.html.gz +0 -0
- package/studio/prerendered/tools/auto-cut.html +40 -40
- package/studio/prerendered/tools/auto-cut.html.br +0 -0
- package/studio/prerendered/tools/auto-cut.html.gz +0 -0
- package/studio/prerendered/tools/generate-video/instagram.html +36 -36
- package/studio/prerendered/tools/generate-video/instagram.html.br +0 -0
- package/studio/prerendered/tools/generate-video/instagram.html.gz +0 -0
- package/studio/prerendered/tools/generate-video/tiktok.html +36 -36
- package/studio/prerendered/tools/generate-video/tiktok.html.br +0 -0
- package/studio/prerendered/tools/generate-video/tiktok.html.gz +0 -0
- package/studio/prerendered/tools/generate-video/twitter-x.html +36 -36
- package/studio/prerendered/tools/generate-video/twitter-x.html.br +0 -0
- package/studio/prerendered/tools/generate-video/twitter-x.html.gz +0 -0
- package/studio/prerendered/tools/generate-video/youtube.html +36 -36
- package/studio/prerendered/tools/generate-video/youtube.html.br +0 -0
- package/studio/prerendered/tools/generate-video/youtube.html.gz +0 -0
- package/studio/prerendered/tools/generate-video.html +40 -40
- package/studio/prerendered/tools/generate-video.html.br +0 -0
- package/studio/prerendered/tools/generate-video.html.gz +0 -0
- package/studio/prerendered/tools/laptop-3d-intro/linkedin.html +36 -36
- package/studio/prerendered/tools/laptop-3d-intro/linkedin.html.br +0 -0
- package/studio/prerendered/tools/laptop-3d-intro/linkedin.html.gz +0 -0
- package/studio/prerendered/tools/laptop-3d-intro/saas.html +36 -36
- package/studio/prerendered/tools/laptop-3d-intro/saas.html.br +0 -0
- package/studio/prerendered/tools/laptop-3d-intro/saas.html.gz +0 -0
- package/studio/prerendered/tools/laptop-3d-intro/twitter-x.html +36 -36
- package/studio/prerendered/tools/laptop-3d-intro/twitter-x.html.br +0 -0
- package/studio/prerendered/tools/laptop-3d-intro/twitter-x.html.gz +0 -0
- package/studio/prerendered/tools/laptop-3d-intro/youtube.html +36 -36
- package/studio/prerendered/tools/laptop-3d-intro/youtube.html.br +0 -0
- package/studio/prerendered/tools/laptop-3d-intro/youtube.html.gz +0 -0
- package/studio/prerendered/tools/laptop-3d-intro.html +40 -40
- package/studio/prerendered/tools/laptop-3d-intro.html.br +0 -0
- package/studio/prerendered/tools/laptop-3d-intro.html.gz +0 -0
- package/studio/prerendered/tools/screen-webcam-demo/linkedin.html +36 -36
- package/studio/prerendered/tools/screen-webcam-demo/linkedin.html.br +0 -0
- package/studio/prerendered/tools/screen-webcam-demo/linkedin.html.gz +0 -0
- package/studio/prerendered/tools/screen-webcam-demo/saas.html +36 -36
- package/studio/prerendered/tools/screen-webcam-demo/saas.html.br +0 -0
- package/studio/prerendered/tools/screen-webcam-demo/saas.html.gz +0 -0
- package/studio/prerendered/tools/screen-webcam-demo/twitter-x.html +36 -36
- package/studio/prerendered/tools/screen-webcam-demo/twitter-x.html.br +0 -0
- package/studio/prerendered/tools/screen-webcam-demo/twitter-x.html.gz +0 -0
- package/studio/prerendered/tools/screen-webcam-demo/youtube.html +36 -36
- package/studio/prerendered/tools/screen-webcam-demo/youtube.html.br +0 -0
- package/studio/prerendered/tools/screen-webcam-demo/youtube.html.gz +0 -0
- package/studio/prerendered/tools/screen-webcam-demo.html +40 -40
- package/studio/prerendered/tools/screen-webcam-demo.html.br +0 -0
- package/studio/prerendered/tools/screen-webcam-demo.html.gz +0 -0
- package/studio/prerendered/tools/screenshot-to-social/facebook.html +36 -36
- package/studio/prerendered/tools/screenshot-to-social/facebook.html.br +0 -0
- package/studio/prerendered/tools/screenshot-to-social/facebook.html.gz +0 -0
- package/studio/prerendered/tools/screenshot-to-social/instagram.html +36 -36
- package/studio/prerendered/tools/screenshot-to-social/instagram.html.br +0 -0
- package/studio/prerendered/tools/screenshot-to-social/instagram.html.gz +0 -0
- package/studio/prerendered/tools/screenshot-to-social/linkedin.html +36 -36
- package/studio/prerendered/tools/screenshot-to-social/linkedin.html.br +0 -0
- package/studio/prerendered/tools/screenshot-to-social/linkedin.html.gz +0 -0
- package/studio/prerendered/tools/screenshot-to-social/twitter-x.html +36 -36
- package/studio/prerendered/tools/screenshot-to-social/twitter-x.html.br +0 -0
- package/studio/prerendered/tools/screenshot-to-social/twitter-x.html.gz +0 -0
- package/studio/prerendered/tools/screenshot-to-social.html +40 -40
- package/studio/prerendered/tools/screenshot-to-social.html.br +0 -0
- package/studio/prerendered/tools/screenshot-to-social.html.gz +0 -0
- package/studio/prerendered/tools/translate-video/instagram.html +36 -36
- package/studio/prerendered/tools/translate-video/instagram.html.br +0 -0
- package/studio/prerendered/tools/translate-video/instagram.html.gz +0 -0
- package/studio/prerendered/tools/translate-video/linkedin.html +36 -36
- package/studio/prerendered/tools/translate-video/linkedin.html.br +0 -0
- package/studio/prerendered/tools/translate-video/linkedin.html.gz +0 -0
- package/studio/prerendered/tools/translate-video/tiktok.html +36 -36
- package/studio/prerendered/tools/translate-video/tiktok.html.br +0 -0
- package/studio/prerendered/tools/translate-video/tiktok.html.gz +0 -0
- package/studio/prerendered/tools/translate-video/youtube.html +36 -36
- package/studio/prerendered/tools/translate-video/youtube.html.br +0 -0
- package/studio/prerendered/tools/translate-video/youtube.html.gz +0 -0
- package/studio/prerendered/tools/translate-video.html +40 -40
- package/studio/prerendered/tools/translate-video.html.br +0 -0
- package/studio/prerendered/tools/translate-video.html.gz +0 -0
- package/studio/prerendered/tools/video-beautifier.html +40 -40
- package/studio/prerendered/tools/video-beautifier.html.br +0 -0
- package/studio/prerendered/tools/video-beautifier.html.gz +0 -0
- package/studio/prerendered/tools/video-to-browser/linkedin.html +36 -36
- package/studio/prerendered/tools/video-to-browser/linkedin.html.br +0 -0
- package/studio/prerendered/tools/video-to-browser/linkedin.html.gz +0 -0
- package/studio/prerendered/tools/video-to-browser/saas.html +36 -36
- package/studio/prerendered/tools/video-to-browser/saas.html.br +0 -0
- package/studio/prerendered/tools/video-to-browser/saas.html.gz +0 -0
- package/studio/prerendered/tools/video-to-browser/twitter-x.html +36 -36
- package/studio/prerendered/tools/video-to-browser/twitter-x.html.br +0 -0
- package/studio/prerendered/tools/video-to-browser/twitter-x.html.gz +0 -0
- package/studio/prerendered/tools/video-to-browser/youtube.html +36 -36
- package/studio/prerendered/tools/video-to-browser/youtube.html.br +0 -0
- package/studio/prerendered/tools/video-to-browser/youtube.html.gz +0 -0
- package/studio/prerendered/tools/video-to-browser.html +40 -40
- package/studio/prerendered/tools/video-to-browser.html.br +0 -0
- package/studio/prerendered/tools/video-to-browser.html.gz +0 -0
- package/studio/prerendered/tools/video-to-phone.html +40 -40
- package/studio/prerendered/tools/video-to-phone.html.br +0 -0
- package/studio/prerendered/tools/video-to-phone.html.gz +0 -0
- package/studio/prerendered/vs/canva.html +36 -36
- package/studio/prerendered/vs/canva.html.br +0 -0
- package/studio/prerendered/vs/canva.html.gz +0 -0
- package/studio/prerendered/vs/captions-ai.html +36 -36
- package/studio/prerendered/vs/captions-ai.html.br +0 -0
- package/studio/prerendered/vs/captions-ai.html.gz +0 -0
- package/studio/prerendered/vs/clipchamp.html +36 -36
- package/studio/prerendered/vs/clipchamp.html.br +0 -0
- package/studio/prerendered/vs/clipchamp.html.gz +0 -0
- package/studio/prerendered/vs/descript.html +36 -36
- package/studio/prerendered/vs/descript.html.br +0 -0
- package/studio/prerendered/vs/descript.html.gz +0 -0
- package/studio/prerendered/vs/kapwing.html +36 -36
- package/studio/prerendered/vs/kapwing.html.br +0 -0
- package/studio/prerendered/vs/kapwing.html.gz +0 -0
- package/studio/prerendered/vs/runway.html +36 -36
- package/studio/prerendered/vs/runway.html.br +0 -0
- package/studio/prerendered/vs/runway.html.gz +0 -0
- package/studio/prerendered/vs/submagic.html +36 -36
- package/studio/prerendered/vs/submagic.html.br +0 -0
- package/studio/prerendered/vs/submagic.html.gz +0 -0
- package/studio/prerendered/vs/veed.html +36 -36
- package/studio/prerendered/vs/veed.html.br +0 -0
- package/studio/prerendered/vs/veed.html.gz +0 -0
- package/studio/server/chunks/0-CwPSUJ3w.js +32 -0
- package/studio/server/chunks/0-CwPSUJ3w.js.map +1 -0
- package/studio/server/chunks/1-CbeNzLl-.js +9 -0
- package/studio/server/chunks/1-CbeNzLl-.js.map +1 -0
- package/studio/server/chunks/11-C0QAn-bF.js +9 -0
- package/studio/server/chunks/11-C0QAn-bF.js.map +1 -0
- package/studio/server/chunks/12-DCnPHABd.js +9 -0
- package/studio/server/chunks/12-DCnPHABd.js.map +1 -0
- package/studio/server/chunks/13-Cyy-P3vn.js +59 -0
- package/studio/server/chunks/13-Cyy-P3vn.js.map +1 -0
- package/studio/server/chunks/14-Dbdob-lm.js +60 -0
- package/studio/server/chunks/14-Dbdob-lm.js.map +1 -0
- package/studio/server/chunks/15-DyZbzGI-.js +9 -0
- package/studio/server/chunks/15-DyZbzGI-.js.map +1 -0
- package/studio/server/chunks/16-Qb7izz2W.js +72 -0
- package/studio/server/chunks/16-Qb7izz2W.js.map +1 -0
- package/studio/server/chunks/17-B5pMxn3Z.js +9 -0
- package/studio/server/chunks/17-B5pMxn3Z.js.map +1 -0
- package/studio/server/chunks/18-Dui1aDnz.js +9 -0
- package/studio/server/chunks/18-Dui1aDnz.js.map +1 -0
- package/studio/server/chunks/19-DgrfAbAy.js +9 -0
- package/studio/server/chunks/19-DgrfAbAy.js.map +1 -0
- package/studio/server/chunks/20-pRv7XuMf.js +139 -0
- package/studio/server/chunks/20-pRv7XuMf.js.map +1 -0
- package/studio/server/chunks/3-9IZCenAI.js +9 -0
- package/studio/server/chunks/3-9IZCenAI.js.map +1 -0
- package/studio/server/chunks/4-CsffFQv4.js +9 -0
- package/studio/server/chunks/4-CsffFQv4.js.map +1 -0
- package/studio/server/chunks/42-NP9_BFi5.js +56 -0
- package/studio/server/chunks/42-NP9_BFi5.js.map +1 -0
- package/studio/server/chunks/43-B0_JG7rx.js +9 -0
- package/studio/server/chunks/43-B0_JG7rx.js.map +1 -0
- package/studio/server/chunks/44-DRZom9oK.js +9 -0
- package/studio/server/chunks/44-DRZom9oK.js.map +1 -0
- package/studio/server/chunks/45-llvANtsn.js +115 -0
- package/studio/server/chunks/45-llvANtsn.js.map +1 -0
- package/studio/server/chunks/49-Bm394lLC.js +14 -0
- package/studio/server/chunks/49-Bm394lLC.js.map +1 -0
- package/studio/server/chunks/5-oazbOi9H.js +9 -0
- package/studio/server/chunks/5-oazbOi9H.js.map +1 -0
- package/studio/server/chunks/7-DHJzqCHK.js +215 -0
- package/studio/server/chunks/7-DHJzqCHK.js.map +1 -0
- package/studio/server/chunks/_error.svelte-BkTnhnxP.js +98 -0
- package/studio/server/chunks/_error.svelte-BkTnhnxP.js.map +1 -0
- package/studio/server/chunks/_error.svelte-CQzFToj8.js +98 -0
- package/studio/server/chunks/_error.svelte-CQzFToj8.js.map +1 -0
- package/studio/server/chunks/_layout.svelte-BY0hGh-H.js +64 -0
- package/studio/server/chunks/_layout.svelte-BY0hGh-H.js.map +1 -0
- package/studio/server/chunks/_layout.svelte-CMzss-C2.js +400 -0
- package/studio/server/chunks/_layout.svelte-CMzss-C2.js.map +1 -0
- package/studio/server/chunks/_layout.svelte-Cn4p7o4q.js +64 -0
- package/studio/server/chunks/_layout.svelte-Cn4p7o4q.js.map +1 -0
- package/studio/server/chunks/_layout.svelte-DL1DYuzO.js +1054 -0
- package/studio/server/chunks/_layout.svelte-DL1DYuzO.js.map +1 -0
- package/studio/server/chunks/_page.svelte-B8XqicVW.js +79 -0
- package/studio/server/chunks/_page.svelte-B8XqicVW.js.map +1 -0
- package/studio/server/chunks/_page.svelte-BF0kq_DA.js +418 -0
- package/studio/server/chunks/_page.svelte-BF0kq_DA.js.map +1 -0
- package/studio/server/chunks/_page.svelte-BFwMGeqy.js +111 -0
- package/studio/server/chunks/_page.svelte-BFwMGeqy.js.map +1 -0
- package/studio/server/chunks/_page.svelte-BGPhyNuC.js +192 -0
- package/studio/server/chunks/_page.svelte-BGPhyNuC.js.map +1 -0
- package/studio/server/chunks/_page.svelte-BdmhHvtc.js +113 -0
- package/studio/server/chunks/_page.svelte-BdmhHvtc.js.map +1 -0
- package/studio/server/chunks/_page.svelte-CU4XjUEe.js +11350 -0
- package/studio/server/chunks/_page.svelte-CU4XjUEe.js.map +1 -0
- package/studio/server/chunks/_page.svelte-D74PqaNq.js +256 -0
- package/studio/server/chunks/_page.svelte-D74PqaNq.js.map +1 -0
- package/studio/server/chunks/_page.svelte-DC9-8nEf.js +1021 -0
- package/studio/server/chunks/_page.svelte-DC9-8nEf.js.map +1 -0
- package/studio/server/chunks/_page.svelte-DgqoNyxe.js +1732 -0
- package/studio/server/chunks/_page.svelte-DgqoNyxe.js.map +1 -0
- package/studio/server/chunks/_page.svelte-DhLeBJD_.js +319 -0
- package/studio/server/chunks/_page.svelte-DhLeBJD_.js.map +1 -0
- package/studio/server/chunks/_page.svelte-czU-SjNZ.js +160 -0
- package/studio/server/chunks/_page.svelte-czU-SjNZ.js.map +1 -0
- package/studio/server/chunks/_page.svelte-uvKsK6Vw.js +506 -0
- package/studio/server/chunks/_page.svelte-uvKsK6Vw.js.map +1 -0
- package/studio/server/chunks/_server.ts-BHRR6T63.js +48 -0
- package/studio/server/chunks/_server.ts-BHRR6T63.js.map +1 -0
- package/studio/server/chunks/_server.ts-BHnpcEVo.js +52 -0
- package/studio/server/chunks/_server.ts-BHnpcEVo.js.map +1 -0
- package/studio/server/chunks/_server.ts-BMJ-08P_.js +34 -0
- package/studio/server/chunks/_server.ts-BMJ-08P_.js.map +1 -0
- package/studio/server/chunks/_server.ts-Bj0V1FXs.js +722 -0
- package/studio/server/chunks/_server.ts-Bj0V1FXs.js.map +1 -0
- package/studio/server/chunks/_server.ts-ByVY8xND.js +41 -0
- package/studio/server/chunks/_server.ts-ByVY8xND.js.map +1 -0
- package/studio/server/chunks/_server.ts-CA1HxfdZ.js +58 -0
- package/studio/server/chunks/_server.ts-CA1HxfdZ.js.map +1 -0
- package/studio/server/chunks/_server.ts-CGi39j79.js +232 -0
- package/studio/server/chunks/_server.ts-CGi39j79.js.map +1 -0
- package/studio/server/chunks/_server.ts-CGs8hOo6.js +760 -0
- package/studio/server/chunks/_server.ts-CGs8hOo6.js.map +1 -0
- package/studio/server/chunks/_server.ts-CNJZSPm5.js +60 -0
- package/studio/server/chunks/_server.ts-CNJZSPm5.js.map +1 -0
- package/studio/server/chunks/_server.ts-CXuYytLK.js +118 -0
- package/studio/server/chunks/_server.ts-CXuYytLK.js.map +1 -0
- package/studio/server/chunks/_server.ts-C_njIfbT.js +122 -0
- package/studio/server/chunks/_server.ts-C_njIfbT.js.map +1 -0
- package/studio/server/chunks/_server.ts-Ckj93zLL.js +49 -0
- package/studio/server/chunks/_server.ts-Ckj93zLL.js.map +1 -0
- package/studio/server/chunks/_server.ts-CriU7HwI.js +22 -0
- package/studio/server/chunks/_server.ts-CriU7HwI.js.map +1 -0
- package/studio/server/chunks/_server.ts-D1inEYb_.js +87 -0
- package/studio/server/chunks/_server.ts-D1inEYb_.js.map +1 -0
- package/studio/server/chunks/_server.ts-D_YUIRqi.js +87 -0
- package/studio/server/chunks/_server.ts-D_YUIRqi.js.map +1 -0
- package/studio/server/chunks/_server.ts-D_fEYx6c.js +158 -0
- package/studio/server/chunks/_server.ts-D_fEYx6c.js.map +1 -0
- package/studio/server/chunks/_server.ts-Dg9C9Iih.js +70 -0
- package/studio/server/chunks/_server.ts-Dg9C9Iih.js.map +1 -0
- package/studio/server/chunks/_server.ts-Dji1nGrU.js +91 -0
- package/studio/server/chunks/_server.ts-Dji1nGrU.js.map +1 -0
- package/studio/server/chunks/_server.ts-DnGq-qro.js +68 -0
- package/studio/server/chunks/_server.ts-DnGq-qro.js.map +1 -0
- package/studio/server/chunks/_server.ts-Do6qk473.js +56 -0
- package/studio/server/chunks/_server.ts-Do6qk473.js.map +1 -0
- package/studio/server/chunks/_server.ts-DsTz4hAe.js +96 -0
- package/studio/server/chunks/_server.ts-DsTz4hAe.js.map +1 -0
- package/studio/server/chunks/_server.ts-f6EVRY82.js +79 -0
- package/studio/server/chunks/_server.ts-f6EVRY82.js.map +1 -0
- package/studio/server/chunks/_server.ts-p_1efpqn.js +109 -0
- package/studio/server/chunks/_server.ts-p_1efpqn.js.map +1 -0
- package/studio/server/chunks/_server.ts-xAAnOaCl.js +303 -0
- package/studio/server/chunks/_server.ts-xAAnOaCl.js.map +1 -0
- package/studio/server/chunks/adapter-XtQVoo_l.js +91 -0
- package/studio/server/chunks/adapter-XtQVoo_l.js.map +1 -0
- package/studio/server/chunks/admin.remote-Dc0snX5Q.js +105 -0
- package/studio/server/chunks/admin.remote-Dc0snX5Q.js.map +1 -0
- package/studio/server/chunks/ai-access-bDlOKhrS.js +299 -0
- package/studio/server/chunks/ai-access-bDlOKhrS.js.map +1 -0
- package/studio/server/chunks/ai.remote-6DyE05J7.js +37 -0
- package/studio/server/chunks/ai.remote-6DyE05J7.js.map +1 -0
- package/studio/server/chunks/alert-dialog-description-BhZkDj31.js +578 -0
- package/studio/server/chunks/alert-dialog-description-BhZkDj31.js.map +1 -0
- package/studio/server/chunks/animation-sOd5R1cE.js +2912 -0
- package/studio/server/chunks/animation-sOd5R1cE.js.map +1 -0
- package/studio/server/chunks/api-Do--xZ9M.js +434 -0
- package/studio/server/chunks/api-Do--xZ9M.js.map +1 -0
- package/studio/server/chunks/api-keys-CcmgUWTH.js +117 -0
- package/studio/server/chunks/api-keys-CcmgUWTH.js.map +1 -0
- package/studio/server/chunks/api-keys.remote-JFKHDaD1.js +88 -0
- package/studio/server/chunks/api-keys.remote-JFKHDaD1.js.map +1 -0
- package/studio/server/chunks/app-header-BZw6FnXs.js +96 -0
- package/studio/server/chunks/app-header-BZw6FnXs.js.map +1 -0
- package/studio/server/chunks/assets.remote-CX2FvnlZ.js +113 -0
- package/studio/server/chunks/assets.remote-CX2FvnlZ.js.map +1 -0
- package/studio/server/chunks/attribute-protocol-DQ-1julf.js +151 -0
- package/studio/server/chunks/attribute-protocol-DQ-1julf.js.map +1 -0
- package/studio/server/chunks/auth-CdmLkVO-.js +22472 -0
- package/studio/server/chunks/auth-CdmLkVO-.js.map +1 -0
- package/studio/server/chunks/auth.remote-DgcD7hjY.js +351 -0
- package/studio/server/chunks/auth.remote-DgcD7hjY.js.map +1 -0
- package/studio/server/chunks/base-qepI6vHK.js +210 -0
- package/studio/server/chunks/base-qepI6vHK.js.map +1 -0
- package/studio/server/chunks/bun-sqlite-dialect-C8OaCWSL-CfYOKJsa.js +197 -0
- package/studio/server/chunks/bun-sqlite-dialect-C8OaCWSL-CfYOKJsa.js.map +1 -0
- package/studio/server/chunks/captions.remote-B5ErNQXV.js +184 -0
- package/studio/server/chunks/captions.remote-B5ErNQXV.js.map +1 -0
- package/studio/server/chunks/client2-vVBd4CsE.js +66 -0
- package/studio/server/chunks/client2-vVBd4CsE.js.map +1 -0
- package/studio/server/chunks/d1-sqlite-dialect-sYHNqBte-D3F4ZSZP.js +160 -0
- package/studio/server/chunks/d1-sqlite-dialect-sYHNqBte-D3F4ZSZP.js.map +1 -0
- package/studio/server/chunks/design-knowledge-D2NUeAAo.js +334 -0
- package/studio/server/chunks/design-knowledge-D2NUeAAo.js.map +1 -0
- package/studio/server/chunks/desktop-bootstrap-Z0_g_8r3.js +67 -0
- package/studio/server/chunks/desktop-bootstrap-Z0_g_8r3.js.map +1 -0
- package/studio/server/chunks/dubbing.remote-tYalz3IA.js +153 -0
- package/studio/server/chunks/dubbing.remote-tYalz3IA.js.map +1 -0
- package/studio/server/chunks/editor.svelte-Bdv5LaOt.js +21026 -0
- package/studio/server/chunks/editor.svelte-Bdv5LaOt.js.map +1 -0
- package/studio/server/chunks/env-AoZ3P0fg.js +92 -0
- package/studio/server/chunks/env-AoZ3P0fg.js.map +1 -0
- package/studio/server/chunks/extract-audio.remote-BKBT80-g.js +95 -0
- package/studio/server/chunks/extract-audio.remote-BKBT80-g.js.map +1 -0
- package/studio/server/chunks/feedback.remote-DveIB_5_.js +49 -0
- package/studio/server/chunks/feedback.remote-DveIB_5_.js.map +1 -0
- package/studio/server/chunks/find-stock-image-Cwkwf5gV.js +709 -0
- package/studio/server/chunks/find-stock-image-Cwkwf5gV.js.map +1 -0
- package/studio/server/chunks/fs-project-BxA38YDy.js +134 -0
- package/studio/server/chunks/fs-project-BxA38YDy.js.map +1 -0
- package/studio/server/chunks/hooks.server-DNzGN0kv.js +309 -0
- package/studio/server/chunks/hooks.server-DNzGN0kv.js.map +1 -0
- package/studio/server/chunks/html-parser-t3Ydy25K.js +8516 -0
- package/studio/server/chunks/html-parser-t3Ydy25K.js.map +1 -0
- package/studio/server/chunks/html-writer-D8dOWi0D.js +242 -0
- package/studio/server/chunks/html-writer-D8dOWi0D.js.map +1 -0
- package/studio/server/chunks/image-generation.remote-omBcspXi.js +140 -0
- package/studio/server/chunks/image-generation.remote-omBcspXi.js.map +1 -0
- package/studio/server/chunks/index-D-agccNM.js +4578 -0
- package/studio/server/chunks/index-D-agccNM.js.map +1 -0
- package/studio/server/chunks/index12-B6IiEYAz.js +265 -0
- package/studio/server/chunks/index12-B6IiEYAz.js.map +1 -0
- package/studio/server/chunks/index2-By5vPQD_.js +23 -0
- package/studio/server/chunks/index2-By5vPQD_.js.map +1 -0
- package/studio/server/chunks/index3-DS_3EH31.js +8 -0
- package/studio/server/chunks/index3-DS_3EH31.js.map +1 -0
- package/studio/server/chunks/index4-CgVJCMu8.js +48 -0
- package/studio/server/chunks/index4-CgVJCMu8.js.map +1 -0
- package/studio/server/chunks/index6-BwFC1GDh.js +239 -0
- package/studio/server/chunks/index6-BwFC1GDh.js.map +1 -0
- package/studio/server/chunks/index8-Dt6GB1aJ.js +44 -0
- package/studio/server/chunks/index8-Dt6GB1aJ.js.map +1 -0
- package/studio/server/chunks/layout-template-BhL4-5tM.js +1371 -0
- package/studio/server/chunks/layout-template-BhL4-5tM.js.map +1 -0
- package/studio/server/chunks/lummi-Cu3Js7rz.js +189 -0
- package/studio/server/chunks/lummi-Cu3Js7rz.js.map +1 -0
- package/studio/server/chunks/lummi.remote-BMN4XopC.js +44 -0
- package/studio/server/chunks/lummi.remote-BMN4XopC.js.map +1 -0
- package/studio/server/chunks/media-analysis-DXUN3NUM.js +229 -0
- package/studio/server/chunks/media-analysis-DXUN3NUM.js.map +1 -0
- package/studio/server/chunks/media-analysis.remote-BVdRHeP8.js +63 -0
- package/studio/server/chunks/media-analysis.remote-BVdRHeP8.js.map +1 -0
- package/studio/server/chunks/media-v9Bq2kuR.js +157 -0
- package/studio/server/chunks/media-v9Bq2kuR.js.map +1 -0
- package/studio/server/chunks/middleware-D0o6fOUG.js +72 -0
- package/studio/server/chunks/middleware-D0o6fOUG.js.map +1 -0
- package/studio/server/chunks/mutations-BlgZViQj.js +551 -0
- package/studio/server/chunks/mutations-BlgZViQj.js.map +1 -0
- package/studio/server/chunks/node-sqlite-dialect-BYaBkSm1.js +197 -0
- package/studio/server/chunks/node-sqlite-dialect-BYaBkSm1.js.map +1 -0
- package/studio/server/chunks/onboarding-email-CCv_cZ-_.js +311 -0
- package/studio/server/chunks/onboarding-email-CCv_cZ-_.js.map +1 -0
- package/studio/server/chunks/optional-services-BGRY7tmz.js +45 -0
- package/studio/server/chunks/optional-services-BGRY7tmz.js.map +1 -0
- package/studio/server/chunks/pagination-Q7FOr3rO.js +159 -0
- package/studio/server/chunks/pagination-Q7FOr3rO.js.map +1 -0
- package/studio/server/chunks/posthog-kZp2zKvY.js +11 -0
- package/studio/server/chunks/posthog-kZp2zKvY.js.map +1 -0
- package/studio/server/chunks/presets-CU-ej2J9.js +369 -0
- package/studio/server/chunks/presets-CU-ej2J9.js.map +1 -0
- package/studio/server/chunks/project-layer-yZ50OnjM.js +28 -0
- package/studio/server/chunks/project-layer-yZ50OnjM.js.map +1 -0
- package/studio/server/chunks/projects.remote-BevbcBv4.js +297 -0
- package/studio/server/chunks/projects.remote-BevbcBv4.js.map +1 -0
- package/studio/server/chunks/queue-init-CcgYZbeV.js +38 -0
- package/studio/server/chunks/queue-init-CcgYZbeV.js.map +1 -0
- package/studio/server/chunks/registry-DcyeMfNZ.js +18 -0
- package/studio/server/chunks/registry-DcyeMfNZ.js.map +1 -0
- package/studio/server/chunks/registry2-DJC1cBxe.js +4851 -0
- package/studio/server/chunks/registry2-DJC1cBxe.js.map +1 -0
- package/studio/server/chunks/remote-148gj0t-CLfgEUwr.js +15 -0
- package/studio/server/chunks/remote-148gj0t-CLfgEUwr.js.map +1 -0
- package/studio/server/chunks/remote-1afl6ud-BYqN02Le.js +18 -0
- package/studio/server/chunks/remote-1afl6ud-BYqN02Le.js.map +1 -0
- package/studio/server/chunks/remote-1cihryv-BxHbFmSt.js +34 -0
- package/studio/server/chunks/remote-1cihryv-BxHbFmSt.js.map +1 -0
- package/studio/server/chunks/remote-1ez0sx-BWvDnL9q.js +34 -0
- package/studio/server/chunks/remote-1ez0sx-BWvDnL9q.js.map +1 -0
- package/studio/server/chunks/remote-1mi3j6d-Cg0pK35v.js +21 -0
- package/studio/server/chunks/remote-1mi3j6d-Cg0pK35v.js.map +1 -0
- package/studio/server/chunks/remote-1rjk8jv-CF94t93Y.js +22 -0
- package/studio/server/chunks/remote-1rjk8jv-CF94t93Y.js.map +1 -0
- package/studio/server/chunks/remote-1web5fy-BcJGUGtw.js +35 -0
- package/studio/server/chunks/remote-1web5fy-BcJGUGtw.js.map +1 -0
- package/studio/server/chunks/remote-5mu9ty-CGtbs6nv.js +31 -0
- package/studio/server/chunks/remote-5mu9ty-CGtbs6nv.js.map +1 -0
- package/studio/server/chunks/remote-aelvq6-C3B2AyF6.js +26 -0
- package/studio/server/chunks/remote-aelvq6-C3B2AyF6.js.map +1 -0
- package/studio/server/chunks/remote-em2k3w-Z00J8-Q9.js +25 -0
- package/studio/server/chunks/remote-em2k3w-Z00J8-Q9.js.map +1 -0
- package/studio/server/chunks/remote-gezfls-DWj4X0qA.js +21 -0
- package/studio/server/chunks/remote-gezfls-DWj4X0qA.js.map +1 -0
- package/studio/server/chunks/remote-lv3p1w-BcKTNydX.js +15 -0
- package/studio/server/chunks/remote-lv3p1w-BcKTNydX.js.map +1 -0
- package/studio/server/chunks/remote-ssr7vi-rhkV3R21.js +33 -0
- package/studio/server/chunks/remote-ssr7vi-rhkV3R21.js.map +1 -0
- package/studio/server/chunks/remote-sy19x7-SCvG1tDD.js +29 -0
- package/studio/server/chunks/remote-sy19x7-SCvG1tDD.js.map +1 -0
- package/studio/server/chunks/remote-tisyb0-Ct_sfSGt.js +31 -0
- package/studio/server/chunks/remote-tisyb0-Ct_sfSGt.js.map +1 -0
- package/studio/server/chunks/remote-xj8myv-tYWgOBub.js +31 -0
- package/studio/server/chunks/remote-xj8myv-tYWgOBub.js.map +1 -0
- package/studio/server/chunks/remote-z7lvth-BxO_zBV5.js +23 -0
- package/studio/server/chunks/remote-z7lvth-BxO_zBV5.js.map +1 -0
- package/studio/server/chunks/remote-zjib3m-Dcyw4Y6L.js +24 -0
- package/studio/server/chunks/remote-zjib3m-Dcyw4Y6L.js.map +1 -0
- package/studio/server/chunks/render-api-DtG3ftN1.js +240 -0
- package/studio/server/chunks/render-api-DtG3ftN1.js.map +1 -0
- package/studio/server/chunks/scrub-xyz.svelte_svelte_type_style_lang-BuQqzLLy.js +4752 -0
- package/studio/server/chunks/scrub-xyz.svelte_svelte_type_style_lang-BuQqzLLy.js.map +1 -0
- package/studio/server/chunks/stock-image.remote-Cn_Dh7Ok.js +87 -0
- package/studio/server/chunks/stock-image.remote-Cn_Dh7Ok.js.map +1 -0
- package/studio/server/chunks/subscription-BC4gCTG6.js +138 -0
- package/studio/server/chunks/subscription-BC4gCTG6.js.map +1 -0
- package/studio/server/chunks/subscription-limits-kr9leRdz.js +114 -0
- package/studio/server/chunks/subscription-limits-kr9leRdz.js.map +1 -0
- package/studio/server/chunks/template-usage.remote-DL-DKmuu.js +53 -0
- package/studio/server/chunks/template-usage.remote-DL-DKmuu.js.map +1 -0
- package/studio/server/chunks/thumbnail-queue-D4GYcvrD.js +148 -0
- package/studio/server/chunks/thumbnail-queue-D4GYcvrD.js.map +1 -0
- package/studio/server/chunks/tooltip-provider-D6ZF3H34.js +30 -0
- package/studio/server/chunks/tooltip-provider-D6ZF3H34.js.map +1 -0
- package/studio/server/chunks/tooltip.svelte-DRe72lD-.js +658 -0
- package/studio/server/chunks/tooltip.svelte-DRe72lD-.js.map +1 -0
- package/studio/server/chunks/tts-voices-B9J2ZzGy.js +32 -0
- package/studio/server/chunks/tts-voices-B9J2ZzGy.js.map +1 -0
- package/studio/server/chunks/tts.remote-Btrg7DBL.js +194 -0
- package/studio/server/chunks/tts.remote-Btrg7DBL.js.map +1 -0
- package/studio/server/chunks/ui.svelte-FJio-gZM.js +88 -0
- package/studio/server/chunks/ui.svelte-FJio-gZM.js.map +1 -0
- package/studio/server/chunks/upload-service-Boi3a_IC.js +220 -0
- package/studio/server/chunks/upload-service-Boi3a_IC.js.map +1 -0
- package/studio/server/chunks/upload.remote-Bhhj6ZvH.js +131 -0
- package/studio/server/chunks/upload.remote-Bhhj6ZvH.js.map +1 -0
- package/studio/server/chunks/video-generation.remote-CBblzjAk.js +197 -0
- package/studio/server/chunks/video-generation.remote-CBblzjAk.js.map +1 -0
- package/studio/server/chunks/video-renderer-DJUVOoRL.js +412 -0
- package/studio/server/chunks/video-renderer-DJUVOoRL.js.map +1 -0
- package/studio/server/chunks/watermark-DJiyRHwX.js +164 -0
- package/studio/server/chunks/watermark-DJiyRHwX.js.map +1 -0
- package/studio/server/index.js +1 -1
- package/studio/server/manifest.js +64 -62
- package/studio/server/manifest.js.map +1 -1
- package/studio/client/_app/immutable/assets/0.BKuIH3jk.css +0 -1
- package/studio/client/_app/immutable/assets/0.BKuIH3jk.css.br +0 -0
- package/studio/client/_app/immutable/assets/0.BKuIH3jk.css.gz +0 -0
- package/studio/client/_app/immutable/assets/editor._QrWwLKb.css +0 -1
- package/studio/client/_app/immutable/assets/editor._QrWwLKb.css.br +0 -2
- package/studio/client/_app/immutable/assets/editor._QrWwLKb.css.gz +0 -0
- package/studio/client/_app/immutable/chunks/-w8AgfGk.js +0 -1
- package/studio/client/_app/immutable/chunks/-w8AgfGk.js.br +0 -0
- package/studio/client/_app/immutable/chunks/-w8AgfGk.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/0LXoSuAq.js +0 -1
- package/studio/client/_app/immutable/chunks/0LXoSuAq.js.br +0 -0
- package/studio/client/_app/immutable/chunks/0LXoSuAq.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/0hf0C23S.js +0 -1
- package/studio/client/_app/immutable/chunks/0hf0C23S.js.br +0 -0
- package/studio/client/_app/immutable/chunks/0hf0C23S.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/52GXB-Lx.js +0 -1
- package/studio/client/_app/immutable/chunks/52GXB-Lx.js.br +0 -0
- package/studio/client/_app/immutable/chunks/52GXB-Lx.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/B6hmyilk.js +0 -1
- package/studio/client/_app/immutable/chunks/B6hmyilk.js.br +0 -0
- package/studio/client/_app/immutable/chunks/B6hmyilk.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BAhypDJI.js +0 -1
- package/studio/client/_app/immutable/chunks/BAhypDJI.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BAhypDJI.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BSBe_oem.js +0 -16
- package/studio/client/_app/immutable/chunks/BSBe_oem.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BSBe_oem.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BSPxtRj6.js +0 -1
- package/studio/client/_app/immutable/chunks/BSPxtRj6.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BSPxtRj6.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BTkRM4Uk.js +0 -1
- package/studio/client/_app/immutable/chunks/BTkRM4Uk.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BTkRM4Uk.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BY7NfAld.js +0 -4
- package/studio/client/_app/immutable/chunks/BY7NfAld.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BY7NfAld.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BcFepoRa.js +0 -730
- package/studio/client/_app/immutable/chunks/BcFepoRa.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BcFepoRa.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BvzaEl32.js +0 -1
- package/studio/client/_app/immutable/chunks/BvzaEl32.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BvzaEl32.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Bxcr6TQy.js +0 -99
- package/studio/client/_app/immutable/chunks/Bxcr6TQy.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Bxcr6TQy.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/C0K_KauH.js +0 -1
- package/studio/client/_app/immutable/chunks/C0K_KauH.js.br +0 -0
- package/studio/client/_app/immutable/chunks/C0K_KauH.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/C3zSaQMD.js +0 -1
- package/studio/client/_app/immutable/chunks/C3zSaQMD.js.br +0 -2
- package/studio/client/_app/immutable/chunks/C3zSaQMD.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/C6BSxyDb.js +0 -1
- package/studio/client/_app/immutable/chunks/C6BSxyDb.js.br +0 -0
- package/studio/client/_app/immutable/chunks/C6BSxyDb.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/C8FzHBqQ.js +0 -1
- package/studio/client/_app/immutable/chunks/C8FzHBqQ.js.br +0 -0
- package/studio/client/_app/immutable/chunks/C8FzHBqQ.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CC8c0epL.js +0 -4
- package/studio/client/_app/immutable/chunks/CC8c0epL.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CC8c0epL.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CQdOmqus.js +0 -1
- package/studio/client/_app/immutable/chunks/CQdOmqus.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CQdOmqus.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/C_JEyoc9.js +0 -1
- package/studio/client/_app/immutable/chunks/C_JEyoc9.js.br +0 -0
- package/studio/client/_app/immutable/chunks/C_JEyoc9.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/C_glBBzR.js +0 -2
- package/studio/client/_app/immutable/chunks/C_glBBzR.js.br +0 -0
- package/studio/client/_app/immutable/chunks/C_glBBzR.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CazEfIaP.js +0 -1
- package/studio/client/_app/immutable/chunks/CazEfIaP.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CazEfIaP.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CiDOuEjR.js +0 -1
- package/studio/client/_app/immutable/chunks/CiDOuEjR.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CiDOuEjR.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Cnoy1Nsk.js +0 -1
- package/studio/client/_app/immutable/chunks/Cnoy1Nsk.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Cnoy1Nsk.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CrHjC-CS.js +0 -1
- package/studio/client/_app/immutable/chunks/CrHjC-CS.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CrHjC-CS.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/D-G_aVDe.js +0 -1
- package/studio/client/_app/immutable/chunks/D-G_aVDe.js.br +0 -0
- package/studio/client/_app/immutable/chunks/D-G_aVDe.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DK-xvsKr.js +0 -1
- package/studio/client/_app/immutable/chunks/DK-xvsKr.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DK-xvsKr.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DKwvwQkU.js +0 -1
- package/studio/client/_app/immutable/chunks/DKwvwQkU.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DKwvwQkU.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DRDQO7lT.js +0 -1
- package/studio/client/_app/immutable/chunks/DRDQO7lT.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DRDQO7lT.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DTcslyJn.js +0 -1
- package/studio/client/_app/immutable/chunks/DTcslyJn.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DTcslyJn.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DbaIpQMW.js +0 -512
- package/studio/client/_app/immutable/chunks/DbaIpQMW.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DbaIpQMW.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Dhskw98X.js +0 -1
- package/studio/client/_app/immutable/chunks/Dhskw98X.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Dhskw98X.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Dl3gtmRH.js +0 -1
- package/studio/client/_app/immutable/chunks/Dl3gtmRH.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Dl3gtmRH.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Du09UsT_.js +0 -1
- package/studio/client/_app/immutable/chunks/Du09UsT_.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Du09UsT_.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Duawn2EX.js +0 -1
- package/studio/client/_app/immutable/chunks/Duawn2EX.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Duawn2EX.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DxbwWMuJ.js +0 -1
- package/studio/client/_app/immutable/chunks/DxbwWMuJ.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DxbwWMuJ.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DzMyNXK1.js +0 -5
- package/studio/client/_app/immutable/chunks/DzMyNXK1.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DzMyNXK1.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/K82XSOze.js +0 -1
- package/studio/client/_app/immutable/chunks/K82XSOze.js.br +0 -0
- package/studio/client/_app/immutable/chunks/K82XSOze.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/LegOngm6.js +0 -92
- package/studio/client/_app/immutable/chunks/LegOngm6.js.br +0 -0
- package/studio/client/_app/immutable/chunks/LegOngm6.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/QUVFwVNg.js +0 -1
- package/studio/client/_app/immutable/chunks/QUVFwVNg.js.br +0 -0
- package/studio/client/_app/immutable/chunks/QUVFwVNg.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/UzmbP4fJ.js +0 -1
- package/studio/client/_app/immutable/chunks/UzmbP4fJ.js.br +0 -0
- package/studio/client/_app/immutable/chunks/UzmbP4fJ.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/WVZkyfqK.js +0 -1
- package/studio/client/_app/immutable/chunks/WVZkyfqK.js.br +0 -0
- package/studio/client/_app/immutable/chunks/WVZkyfqK.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/lmiZGmp5.js +0 -1
- package/studio/client/_app/immutable/chunks/lmiZGmp5.js.br +0 -0
- package/studio/client/_app/immutable/chunks/lmiZGmp5.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/t2OI8QCJ.js +0 -2
- package/studio/client/_app/immutable/chunks/t2OI8QCJ.js.br +0 -0
- package/studio/client/_app/immutable/chunks/t2OI8QCJ.js.gz +0 -0
- package/studio/client/_app/immutable/entry/app.ZJxo7olm.js +0 -2
- package/studio/client/_app/immutable/entry/app.ZJxo7olm.js.br +0 -0
- package/studio/client/_app/immutable/entry/app.ZJxo7olm.js.gz +0 -0
- package/studio/client/_app/immutable/entry/start.8QDn_ECL.js +0 -1
- package/studio/client/_app/immutable/entry/start.8QDn_ECL.js.br +0 -0
- package/studio/client/_app/immutable/entry/start.8QDn_ECL.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/0.adNFkwFE.js +0 -2
- package/studio/client/_app/immutable/nodes/0.adNFkwFE.js.br +0 -0
- package/studio/client/_app/immutable/nodes/0.adNFkwFE.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/1.BWNv6Cb_.js +0 -1
- package/studio/client/_app/immutable/nodes/1.BWNv6Cb_.js.br +0 -0
- package/studio/client/_app/immutable/nodes/1.BWNv6Cb_.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/10.CczwW3Jo.js +0 -1
- package/studio/client/_app/immutable/nodes/10.CczwW3Jo.js.br +0 -0
- package/studio/client/_app/immutable/nodes/10.CczwW3Jo.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/11.DLp4Fbp3.js +0 -1
- package/studio/client/_app/immutable/nodes/11.DLp4Fbp3.js.br +0 -0
- package/studio/client/_app/immutable/nodes/11.DLp4Fbp3.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/12.4rh6TzEf.js +0 -2
- package/studio/client/_app/immutable/nodes/12.4rh6TzEf.js.br +0 -0
- package/studio/client/_app/immutable/nodes/12.4rh6TzEf.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/13.Dz4al1DL.js +0 -1
- package/studio/client/_app/immutable/nodes/13.Dz4al1DL.js.br +0 -0
- package/studio/client/_app/immutable/nodes/13.Dz4al1DL.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/14.Bl81Dygj.js +0 -1
- package/studio/client/_app/immutable/nodes/14.Bl81Dygj.js.br +0 -0
- package/studio/client/_app/immutable/nodes/14.Bl81Dygj.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/15.gG909oU9.js +0 -1
- package/studio/client/_app/immutable/nodes/15.gG909oU9.js.br +0 -0
- package/studio/client/_app/immutable/nodes/15.gG909oU9.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/16.7V_UKKuG.js +0 -8
- package/studio/client/_app/immutable/nodes/16.7V_UKKuG.js.br +0 -0
- package/studio/client/_app/immutable/nodes/16.7V_UKKuG.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/17.Cz647w46.js +0 -1
- package/studio/client/_app/immutable/nodes/17.Cz647w46.js.br +0 -0
- package/studio/client/_app/immutable/nodes/17.Cz647w46.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/18.BCZi6A5-.js +0 -1
- package/studio/client/_app/immutable/nodes/18.BCZi6A5-.js.br +0 -0
- package/studio/client/_app/immutable/nodes/18.BCZi6A5-.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/19.DoglPV3k.js +0 -1
- package/studio/client/_app/immutable/nodes/19.DoglPV3k.js.br +0 -0
- package/studio/client/_app/immutable/nodes/19.DoglPV3k.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/20.DGbcSpHq.js +0 -45
- package/studio/client/_app/immutable/nodes/20.DGbcSpHq.js.br +0 -0
- package/studio/client/_app/immutable/nodes/20.DGbcSpHq.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/21.CdVcKzDq.js +0 -16
- package/studio/client/_app/immutable/nodes/21.CdVcKzDq.js.br +0 -0
- package/studio/client/_app/immutable/nodes/21.CdVcKzDq.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/28.lF0IrCqU.js +0 -8
- package/studio/client/_app/immutable/nodes/28.lF0IrCqU.js.br +0 -0
- package/studio/client/_app/immutable/nodes/28.lF0IrCqU.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/3.C1mJzj4n.js +0 -1
- package/studio/client/_app/immutable/nodes/3.C1mJzj4n.js.br +0 -0
- package/studio/client/_app/immutable/nodes/3.C1mJzj4n.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/30.BvTn5fYt.js +0 -26
- package/studio/client/_app/immutable/nodes/30.BvTn5fYt.js.br +0 -0
- package/studio/client/_app/immutable/nodes/30.BvTn5fYt.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/38.CX0Z5dJm.js +0 -1
- package/studio/client/_app/immutable/nodes/38.CX0Z5dJm.js.br +0 -0
- package/studio/client/_app/immutable/nodes/38.CX0Z5dJm.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/39.CRxr2YQ6.js +0 -87
- package/studio/client/_app/immutable/nodes/39.CRxr2YQ6.js.br +0 -0
- package/studio/client/_app/immutable/nodes/39.CRxr2YQ6.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/4.YfreNTfv.js +0 -1
- package/studio/client/_app/immutable/nodes/4.YfreNTfv.js.br +0 -1
- package/studio/client/_app/immutable/nodes/4.YfreNTfv.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/40.BVTwXIYj.js +0 -15
- package/studio/client/_app/immutable/nodes/40.BVTwXIYj.js.br +0 -0
- package/studio/client/_app/immutable/nodes/40.BVTwXIYj.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/41.JtyATqrM.js +0 -1
- package/studio/client/_app/immutable/nodes/41.JtyATqrM.js.br +0 -0
- package/studio/client/_app/immutable/nodes/41.JtyATqrM.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/42.XO5VZAmI.js +0 -1
- package/studio/client/_app/immutable/nodes/42.XO5VZAmI.js.br +0 -0
- package/studio/client/_app/immutable/nodes/42.XO5VZAmI.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/43.CWpVKGhz.js +0 -1
- package/studio/client/_app/immutable/nodes/43.CWpVKGhz.js.br +0 -0
- package/studio/client/_app/immutable/nodes/43.CWpVKGhz.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/44.DX64rKI7.js +0 -1
- package/studio/client/_app/immutable/nodes/44.DX64rKI7.js.br +0 -0
- package/studio/client/_app/immutable/nodes/44.DX64rKI7.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/45.mLQWUOa5.js +0 -2
- package/studio/client/_app/immutable/nodes/45.mLQWUOa5.js.br +0 -0
- package/studio/client/_app/immutable/nodes/45.mLQWUOa5.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/46.KA353oiQ.js +0 -1
- package/studio/client/_app/immutable/nodes/46.KA353oiQ.js.br +0 -0
- package/studio/client/_app/immutable/nodes/46.KA353oiQ.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/47.D3mABDjY.js +0 -1
- package/studio/client/_app/immutable/nodes/47.D3mABDjY.js.br +0 -0
- package/studio/client/_app/immutable/nodes/47.D3mABDjY.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/48.BwjQpQnt.js +0 -1
- package/studio/client/_app/immutable/nodes/48.BwjQpQnt.js.br +0 -0
- package/studio/client/_app/immutable/nodes/48.BwjQpQnt.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/49.EaoBcCzE.js +0 -7
- package/studio/client/_app/immutable/nodes/49.EaoBcCzE.js.br +0 -0
- package/studio/client/_app/immutable/nodes/49.EaoBcCzE.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/5.YfreNTfv.js +0 -1
- package/studio/client/_app/immutable/nodes/5.YfreNTfv.js.br +0 -1
- package/studio/client/_app/immutable/nodes/5.YfreNTfv.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/7.pzlwJNWY.js +0 -1
- package/studio/client/_app/immutable/nodes/7.pzlwJNWY.js.br +0 -0
- package/studio/client/_app/immutable/nodes/7.pzlwJNWY.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/8.COxVG2uL.js +0 -1
- package/studio/client/_app/immutable/nodes/8.COxVG2uL.js.br +0 -0
- package/studio/client/_app/immutable/nodes/8.COxVG2uL.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/9.DEUtbL1G.js +0 -1
- package/studio/client/_app/immutable/nodes/9.DEUtbL1G.js.br +0 -0
- package/studio/client/_app/immutable/nodes/9.DEUtbL1G.js.gz +0 -0
- package/studio/server/chunks/0-oFoj6xob.js +0 -32
- package/studio/server/chunks/0-oFoj6xob.js.map +0 -1
- package/studio/server/chunks/1-BZOYuQnd.js +0 -9
- package/studio/server/chunks/1-BZOYuQnd.js.map +0 -1
- package/studio/server/chunks/11-BDyz7OWy.js +0 -9
- package/studio/server/chunks/11-BDyz7OWy.js.map +0 -1
- package/studio/server/chunks/12-DCVWOw1E.js +0 -9
- package/studio/server/chunks/12-DCVWOw1E.js.map +0 -1
- package/studio/server/chunks/13-D5eVPcWI.js +0 -59
- package/studio/server/chunks/13-D5eVPcWI.js.map +0 -1
- package/studio/server/chunks/14-DLN4rZiK.js +0 -60
- package/studio/server/chunks/14-DLN4rZiK.js.map +0 -1
- package/studio/server/chunks/15-D3vqObtU.js +0 -9
- package/studio/server/chunks/15-D3vqObtU.js.map +0 -1
- package/studio/server/chunks/16-B80xfxth.js +0 -72
- package/studio/server/chunks/16-B80xfxth.js.map +0 -1
- package/studio/server/chunks/17-BHuReO4a.js +0 -9
- package/studio/server/chunks/17-BHuReO4a.js.map +0 -1
- package/studio/server/chunks/18-wt-l6gKd.js +0 -9
- package/studio/server/chunks/18-wt-l6gKd.js.map +0 -1
- package/studio/server/chunks/19-CM1TK59H.js +0 -9
- package/studio/server/chunks/19-CM1TK59H.js.map +0 -1
- package/studio/server/chunks/20-l1HA1gZm.js +0 -138
- package/studio/server/chunks/20-l1HA1gZm.js.map +0 -1
- package/studio/server/chunks/3-CzCasqaG.js +0 -9
- package/studio/server/chunks/3-CzCasqaG.js.map +0 -1
- package/studio/server/chunks/4-CI_t25RD.js +0 -9
- package/studio/server/chunks/4-CI_t25RD.js.map +0 -1
- package/studio/server/chunks/42-P_ROr-Kz.js +0 -56
- package/studio/server/chunks/42-P_ROr-Kz.js.map +0 -1
- package/studio/server/chunks/43-DjsPMRbC.js +0 -9
- package/studio/server/chunks/43-DjsPMRbC.js.map +0 -1
- package/studio/server/chunks/44-Bja0V2qT.js +0 -9
- package/studio/server/chunks/44-Bja0V2qT.js.map +0 -1
- package/studio/server/chunks/45-ClLo6O3h.js +0 -114
- package/studio/server/chunks/45-ClLo6O3h.js.map +0 -1
- package/studio/server/chunks/49-1-oQCIAS.js +0 -14
- package/studio/server/chunks/49-1-oQCIAS.js.map +0 -1
- package/studio/server/chunks/5-rt2C_t_3.js +0 -9
- package/studio/server/chunks/5-rt2C_t_3.js.map +0 -1
- package/studio/server/chunks/7-bEHSOvc4.js +0 -215
- package/studio/server/chunks/7-bEHSOvc4.js.map +0 -1
- package/studio/server/chunks/_error.svelte-DVRBaDbx.js +0 -98
- package/studio/server/chunks/_error.svelte-DVRBaDbx.js.map +0 -1
- package/studio/server/chunks/_error.svelte-Dt8wv2eu.js +0 -98
- package/studio/server/chunks/_error.svelte-Dt8wv2eu.js.map +0 -1
- package/studio/server/chunks/_layout.svelte-55nnwb0N.js +0 -400
- package/studio/server/chunks/_layout.svelte-55nnwb0N.js.map +0 -1
- package/studio/server/chunks/_layout.svelte-BL7PMde9.js +0 -64
- package/studio/server/chunks/_layout.svelte-BL7PMde9.js.map +0 -1
- package/studio/server/chunks/_layout.svelte-BtEadWQB.js +0 -64
- package/studio/server/chunks/_layout.svelte-BtEadWQB.js.map +0 -1
- package/studio/server/chunks/_layout.svelte-CfDTUogU.js +0 -1054
- package/studio/server/chunks/_layout.svelte-CfDTUogU.js.map +0 -1
- package/studio/server/chunks/_page.svelte-B-1o9Tva.js +0 -506
- package/studio/server/chunks/_page.svelte-B-1o9Tva.js.map +0 -1
- package/studio/server/chunks/_page.svelte-B93-TmZo.js +0 -160
- package/studio/server/chunks/_page.svelte-B93-TmZo.js.map +0 -1
- package/studio/server/chunks/_page.svelte-BqwbRDzJ.js +0 -1731
- package/studio/server/chunks/_page.svelte-BqwbRDzJ.js.map +0 -1
- package/studio/server/chunks/_page.svelte-CWrqBxDM.js +0 -1021
- package/studio/server/chunks/_page.svelte-CWrqBxDM.js.map +0 -1
- package/studio/server/chunks/_page.svelte-Cg5sXfnK.js +0 -111
- package/studio/server/chunks/_page.svelte-Cg5sXfnK.js.map +0 -1
- package/studio/server/chunks/_page.svelte-CvEkB4SR.js +0 -319
- package/studio/server/chunks/_page.svelte-CvEkB4SR.js.map +0 -1
- package/studio/server/chunks/_page.svelte-D5uSaQ_6.js +0 -256
- package/studio/server/chunks/_page.svelte-D5uSaQ_6.js.map +0 -1
- package/studio/server/chunks/_page.svelte-D6XGPiAL.js +0 -79
- package/studio/server/chunks/_page.svelte-D6XGPiAL.js.map +0 -1
- package/studio/server/chunks/_page.svelte-DAyju3rn.js +0 -113
- package/studio/server/chunks/_page.svelte-DAyju3rn.js.map +0 -1
- package/studio/server/chunks/_page.svelte-Dxd9_9zA.js +0 -418
- package/studio/server/chunks/_page.svelte-Dxd9_9zA.js.map +0 -1
- package/studio/server/chunks/_page.svelte-GHdQM1UB.js +0 -191
- package/studio/server/chunks/_page.svelte-GHdQM1UB.js.map +0 -1
- package/studio/server/chunks/_page.svelte-axu5NW2S.js +0 -11053
- package/studio/server/chunks/_page.svelte-axu5NW2S.js.map +0 -1
- package/studio/server/chunks/_server.ts-5MqnJlEk.js +0 -87
- package/studio/server/chunks/_server.ts-5MqnJlEk.js.map +0 -1
- package/studio/server/chunks/_server.ts-6KoXdftM.js +0 -70
- package/studio/server/chunks/_server.ts-6KoXdftM.js.map +0 -1
- package/studio/server/chunks/_server.ts-BPbGZeLb.js +0 -718
- package/studio/server/chunks/_server.ts-BPbGZeLb.js.map +0 -1
- package/studio/server/chunks/_server.ts-BQiH-pDg.js +0 -79
- package/studio/server/chunks/_server.ts-BQiH-pDg.js.map +0 -1
- package/studio/server/chunks/_server.ts-BYd-I1tc.js +0 -41
- package/studio/server/chunks/_server.ts-BYd-I1tc.js.map +0 -1
- package/studio/server/chunks/_server.ts-BryF-BNZ.js +0 -96
- package/studio/server/chunks/_server.ts-BryF-BNZ.js.map +0 -1
- package/studio/server/chunks/_server.ts-C5J0RS2-.js +0 -117
- package/studio/server/chunks/_server.ts-C5J0RS2-.js.map +0 -1
- package/studio/server/chunks/_server.ts-CTCmDBMr.js +0 -49
- package/studio/server/chunks/_server.ts-CTCmDBMr.js.map +0 -1
- package/studio/server/chunks/_server.ts-CXM9soU9.js +0 -34
- package/studio/server/chunks/_server.ts-CXM9soU9.js.map +0 -1
- package/studio/server/chunks/_server.ts-CbZYXLYW.js +0 -56
- package/studio/server/chunks/_server.ts-CbZYXLYW.js.map +0 -1
- package/studio/server/chunks/_server.ts-CtiogpOk.js +0 -302
- package/studio/server/chunks/_server.ts-CtiogpOk.js.map +0 -1
- package/studio/server/chunks/_server.ts-D75v2LAN.js +0 -52
- package/studio/server/chunks/_server.ts-D75v2LAN.js.map +0 -1
- package/studio/server/chunks/_server.ts-DANOf9Kg.js +0 -158
- package/studio/server/chunks/_server.ts-DANOf9Kg.js.map +0 -1
- package/studio/server/chunks/_server.ts-DF0SCYmL.js +0 -48
- package/studio/server/chunks/_server.ts-DF0SCYmL.js.map +0 -1
- package/studio/server/chunks/_server.ts-DrkT4gOl.js +0 -121
- package/studio/server/chunks/_server.ts-DrkT4gOl.js.map +0 -1
- package/studio/server/chunks/_server.ts-DscCNgaG.js +0 -87
- package/studio/server/chunks/_server.ts-DscCNgaG.js.map +0 -1
- package/studio/server/chunks/_server.ts-Duz2jodQ.js +0 -22
- package/studio/server/chunks/_server.ts-Duz2jodQ.js.map +0 -1
- package/studio/server/chunks/_server.ts-K-RN8Vah.js +0 -684
- package/studio/server/chunks/_server.ts-K-RN8Vah.js.map +0 -1
- package/studio/server/chunks/_server.ts-OkHzpWAg.js +0 -68
- package/studio/server/chunks/_server.ts-OkHzpWAg.js.map +0 -1
- package/studio/server/chunks/_server.ts-T7wyJ0On.js +0 -58
- package/studio/server/chunks/_server.ts-T7wyJ0On.js.map +0 -1
- package/studio/server/chunks/_server.ts-XWBoVSBG.js +0 -232
- package/studio/server/chunks/_server.ts-XWBoVSBG.js.map +0 -1
- package/studio/server/chunks/_server.ts-liWNn8pd.js +0 -91
- package/studio/server/chunks/_server.ts-liWNn8pd.js.map +0 -1
- package/studio/server/chunks/_server.ts-wjU8lnxc.js +0 -108
- package/studio/server/chunks/_server.ts-wjU8lnxc.js.map +0 -1
- package/studio/server/chunks/_server.ts-xBWWvyW7.js +0 -60
- package/studio/server/chunks/_server.ts-xBWWvyW7.js.map +0 -1
- package/studio/server/chunks/adapter-B-i_4tnk.js +0 -91
- package/studio/server/chunks/adapter-B-i_4tnk.js.map +0 -1
- package/studio/server/chunks/admin.remote-5orFS4k1.js +0 -105
- package/studio/server/chunks/admin.remote-5orFS4k1.js.map +0 -1
- package/studio/server/chunks/ai-access-C-qFWKe-.js +0 -282
- package/studio/server/chunks/ai-access-C-qFWKe-.js.map +0 -1
- package/studio/server/chunks/ai.remote-Da4JRO59.js +0 -37
- package/studio/server/chunks/ai.remote-Da4JRO59.js.map +0 -1
- package/studio/server/chunks/alert-dialog-description-DOMGfPke.js +0 -578
- package/studio/server/chunks/alert-dialog-description-DOMGfPke.js.map +0 -1
- package/studio/server/chunks/animation-DPwINa4I.js +0 -2892
- package/studio/server/chunks/animation-DPwINa4I.js.map +0 -1
- package/studio/server/chunks/api-DkajkFtS.js +0 -434
- package/studio/server/chunks/api-DkajkFtS.js.map +0 -1
- package/studio/server/chunks/api-keys-D9bbxRhK.js +0 -117
- package/studio/server/chunks/api-keys-D9bbxRhK.js.map +0 -1
- package/studio/server/chunks/api-keys.remote-CN4CRiIA.js +0 -88
- package/studio/server/chunks/api-keys.remote-CN4CRiIA.js.map +0 -1
- package/studio/server/chunks/app-header-BfPEtjyC.js +0 -96
- package/studio/server/chunks/app-header-BfPEtjyC.js.map +0 -1
- package/studio/server/chunks/assets.remote-B8_mtYX6.js +0 -113
- package/studio/server/chunks/assets.remote-B8_mtYX6.js.map +0 -1
- package/studio/server/chunks/attribute-protocol-C_pjkekX.js +0 -151
- package/studio/server/chunks/attribute-protocol-C_pjkekX.js.map +0 -1
- package/studio/server/chunks/auth-CiWMo-Qu.js +0 -22472
- package/studio/server/chunks/auth-CiWMo-Qu.js.map +0 -1
- package/studio/server/chunks/auth.remote-C6edHyaa.js +0 -351
- package/studio/server/chunks/auth.remote-C6edHyaa.js.map +0 -1
- package/studio/server/chunks/base-Bq5n_4Fz.js +0 -210
- package/studio/server/chunks/base-Bq5n_4Fz.js.map +0 -1
- package/studio/server/chunks/bun-sqlite-dialect-C8OaCWSL-CsGahR4n.js +0 -197
- package/studio/server/chunks/bun-sqlite-dialect-C8OaCWSL-CsGahR4n.js.map +0 -1
- package/studio/server/chunks/captions.remote-BtVr9SZd.js +0 -184
- package/studio/server/chunks/captions.remote-BtVr9SZd.js.map +0 -1
- package/studio/server/chunks/client2-D2vZ7-eF.js +0 -66
- package/studio/server/chunks/client2-D2vZ7-eF.js.map +0 -1
- package/studio/server/chunks/d1-sqlite-dialect-sYHNqBte-ClSngqDL.js +0 -160
- package/studio/server/chunks/d1-sqlite-dialect-sYHNqBte-ClSngqDL.js.map +0 -1
- package/studio/server/chunks/desktop-bootstrap-C46aoZ6Z.js +0 -67
- package/studio/server/chunks/desktop-bootstrap-C46aoZ6Z.js.map +0 -1
- package/studio/server/chunks/dubbing.remote-DHGIYU_A.js +0 -153
- package/studio/server/chunks/dubbing.remote-DHGIYU_A.js.map +0 -1
- package/studio/server/chunks/editor.svelte-CiJvwHAm.js +0 -21024
- package/studio/server/chunks/editor.svelte-CiJvwHAm.js.map +0 -1
- package/studio/server/chunks/env-CsH9rG40.js +0 -91
- package/studio/server/chunks/env-CsH9rG40.js.map +0 -1
- package/studio/server/chunks/extract-audio.remote-D4Autpid.js +0 -95
- package/studio/server/chunks/extract-audio.remote-D4Autpid.js.map +0 -1
- package/studio/server/chunks/feedback.remote-CfdjHpdW.js +0 -49
- package/studio/server/chunks/feedback.remote-CfdjHpdW.js.map +0 -1
- package/studio/server/chunks/fs-project-BLLGFRv1.js +0 -134
- package/studio/server/chunks/fs-project-BLLGFRv1.js.map +0 -1
- package/studio/server/chunks/generate-speech-BERLu-Vk.js +0 -536
- package/studio/server/chunks/generate-speech-BERLu-Vk.js.map +0 -1
- package/studio/server/chunks/hooks.server-MEVEsSA9.js +0 -309
- package/studio/server/chunks/hooks.server-MEVEsSA9.js.map +0 -1
- package/studio/server/chunks/html-parser-LopZIqoS.js +0 -8516
- package/studio/server/chunks/html-parser-LopZIqoS.js.map +0 -1
- package/studio/server/chunks/html-writer-Ea_4f8hT.js +0 -242
- package/studio/server/chunks/html-writer-Ea_4f8hT.js.map +0 -1
- package/studio/server/chunks/index-CBGGzszt.js +0 -4578
- package/studio/server/chunks/index-CBGGzszt.js.map +0 -1
- package/studio/server/chunks/index12-C5zKPozR.js +0 -265
- package/studio/server/chunks/index12-C5zKPozR.js.map +0 -1
- package/studio/server/chunks/index2-e2qJOUJ5.js +0 -23
- package/studio/server/chunks/index2-e2qJOUJ5.js.map +0 -1
- package/studio/server/chunks/index3-akRvPp-y.js +0 -8
- package/studio/server/chunks/index3-akRvPp-y.js.map +0 -1
- package/studio/server/chunks/index4-CowumPcw.js +0 -48
- package/studio/server/chunks/index4-CowumPcw.js.map +0 -1
- package/studio/server/chunks/index6-92MPHdlt.js +0 -239
- package/studio/server/chunks/index6-92MPHdlt.js.map +0 -1
- package/studio/server/chunks/index8-zuJK-jFa.js +0 -44
- package/studio/server/chunks/index8-zuJK-jFa.js.map +0 -1
- package/studio/server/chunks/layout-template-BoNv9dF2.js +0 -1371
- package/studio/server/chunks/layout-template-BoNv9dF2.js.map +0 -1
- package/studio/server/chunks/lummi.remote-Bx8Vg0et.js +0 -215
- package/studio/server/chunks/lummi.remote-Bx8Vg0et.js.map +0 -1
- package/studio/server/chunks/media-ARIn6Aw1.js +0 -157
- package/studio/server/chunks/media-ARIn6Aw1.js.map +0 -1
- package/studio/server/chunks/media-analysis-GisyEkHY.js +0 -171
- package/studio/server/chunks/media-analysis-GisyEkHY.js.map +0 -1
- package/studio/server/chunks/media-analysis.remote-BzGY_HjI.js +0 -63
- package/studio/server/chunks/media-analysis.remote-BzGY_HjI.js.map +0 -1
- package/studio/server/chunks/middleware-CazuI_Wf.js +0 -72
- package/studio/server/chunks/middleware-CazuI_Wf.js.map +0 -1
- package/studio/server/chunks/mutation-schemas-DOtU1skD.js +0 -137
- package/studio/server/chunks/mutation-schemas-DOtU1skD.js.map +0 -1
- package/studio/server/chunks/mutations-6JWuU3s9.js +0 -503
- package/studio/server/chunks/mutations-6JWuU3s9.js.map +0 -1
- package/studio/server/chunks/node-sqlite-dialect-Q2OvDp9q.js +0 -197
- package/studio/server/chunks/node-sqlite-dialect-Q2OvDp9q.js.map +0 -1
- package/studio/server/chunks/onboarding-email-CHXOtnYq.js +0 -311
- package/studio/server/chunks/onboarding-email-CHXOtnYq.js.map +0 -1
- package/studio/server/chunks/optional-services-rI0rdA4P.js +0 -45
- package/studio/server/chunks/optional-services-rI0rdA4P.js.map +0 -1
- package/studio/server/chunks/pagination-JOJpLeOm.js +0 -159
- package/studio/server/chunks/pagination-JOJpLeOm.js.map +0 -1
- package/studio/server/chunks/posthog-DXw1m97H.js +0 -11
- package/studio/server/chunks/posthog-DXw1m97H.js.map +0 -1
- package/studio/server/chunks/presets-BKeKVq-L.js +0 -369
- package/studio/server/chunks/presets-BKeKVq-L.js.map +0 -1
- package/studio/server/chunks/project-layer-Bbz6zgRN.js +0 -28
- package/studio/server/chunks/project-layer-Bbz6zgRN.js.map +0 -1
- package/studio/server/chunks/projects.remote-Bzca0wLB.js +0 -297
- package/studio/server/chunks/projects.remote-Bzca0wLB.js.map +0 -1
- package/studio/server/chunks/queue-init-DUao6hhx.js +0 -38
- package/studio/server/chunks/queue-init-DUao6hhx.js.map +0 -1
- package/studio/server/chunks/registry-Cq-PY3D3.js +0 -16
- package/studio/server/chunks/registry-Cq-PY3D3.js.map +0 -1
- package/studio/server/chunks/registry2-BSIleFMP.js +0 -4851
- package/studio/server/chunks/registry2-BSIleFMP.js.map +0 -1
- package/studio/server/chunks/remote-148gj0t-CBE9iOwY.js +0 -14
- package/studio/server/chunks/remote-148gj0t-CBE9iOwY.js.map +0 -1
- package/studio/server/chunks/remote-1afl6ud-yFS1W6RH.js +0 -18
- package/studio/server/chunks/remote-1afl6ud-yFS1W6RH.js.map +0 -1
- package/studio/server/chunks/remote-1mi3j6d-COSwmla7.js +0 -21
- package/studio/server/chunks/remote-1mi3j6d-COSwmla7.js.map +0 -1
- package/studio/server/chunks/remote-1rjk8jv-C-ZOeAZr.js +0 -22
- package/studio/server/chunks/remote-1rjk8jv-C-ZOeAZr.js.map +0 -1
- package/studio/server/chunks/remote-1web5fy-Crw8BQuf.js +0 -30
- package/studio/server/chunks/remote-1web5fy-Crw8BQuf.js.map +0 -1
- package/studio/server/chunks/remote-5mu9ty-CiUcViXD.js +0 -31
- package/studio/server/chunks/remote-5mu9ty-CiUcViXD.js.map +0 -1
- package/studio/server/chunks/remote-aelvq6-BHLpqBRM.js +0 -26
- package/studio/server/chunks/remote-aelvq6-BHLpqBRM.js.map +0 -1
- package/studio/server/chunks/remote-em2k3w-BXLmObYN.js +0 -25
- package/studio/server/chunks/remote-em2k3w-BXLmObYN.js.map +0 -1
- package/studio/server/chunks/remote-gezfls-Cmzz6fWa.js +0 -21
- package/studio/server/chunks/remote-gezfls-Cmzz6fWa.js.map +0 -1
- package/studio/server/chunks/remote-lv3p1w-fkE1PB7N.js +0 -15
- package/studio/server/chunks/remote-lv3p1w-fkE1PB7N.js.map +0 -1
- package/studio/server/chunks/remote-ssr7vi-Cbv95MBE.js +0 -33
- package/studio/server/chunks/remote-ssr7vi-Cbv95MBE.js.map +0 -1
- package/studio/server/chunks/remote-sy19x7-BA_A5ekM.js +0 -29
- package/studio/server/chunks/remote-sy19x7-BA_A5ekM.js.map +0 -1
- package/studio/server/chunks/remote-tisyb0-CCv0922s.js +0 -31
- package/studio/server/chunks/remote-tisyb0-CCv0922s.js.map +0 -1
- package/studio/server/chunks/remote-xj8myv-CNAPSYMd.js +0 -31
- package/studio/server/chunks/remote-xj8myv-CNAPSYMd.js.map +0 -1
- package/studio/server/chunks/remote-z7lvth-Dddp33_7.js +0 -23
- package/studio/server/chunks/remote-z7lvth-Dddp33_7.js.map +0 -1
- package/studio/server/chunks/remote-zjib3m-CgmI2LZY.js +0 -24
- package/studio/server/chunks/remote-zjib3m-CgmI2LZY.js.map +0 -1
- package/studio/server/chunks/render-api-su0kZhxA.js +0 -240
- package/studio/server/chunks/render-api-su0kZhxA.js.map +0 -1
- package/studio/server/chunks/scrub-xyz.svelte_svelte_type_style_lang-DU6E-ve4.js +0 -4752
- package/studio/server/chunks/scrub-xyz.svelte_svelte_type_style_lang-DU6E-ve4.js.map +0 -1
- package/studio/server/chunks/subscription-CjEjoIFS.js +0 -138
- package/studio/server/chunks/subscription-CjEjoIFS.js.map +0 -1
- package/studio/server/chunks/subscription-limits-B7Q2pts9.js +0 -114
- package/studio/server/chunks/subscription-limits-B7Q2pts9.js.map +0 -1
- package/studio/server/chunks/template-usage.remote-DOFxtTHM.js +0 -53
- package/studio/server/chunks/template-usage.remote-DOFxtTHM.js.map +0 -1
- package/studio/server/chunks/thumbnail-queue-BrPRb6F7.js +0 -148
- package/studio/server/chunks/thumbnail-queue-BrPRb6F7.js.map +0 -1
- package/studio/server/chunks/tooltip-provider-BFZoIP02.js +0 -30
- package/studio/server/chunks/tooltip-provider-BFZoIP02.js.map +0 -1
- package/studio/server/chunks/tooltip.svelte-Bjv4TH3V.js +0 -658
- package/studio/server/chunks/tooltip.svelte-Bjv4TH3V.js.map +0 -1
- package/studio/server/chunks/tts.remote-yMAINgCv.js +0 -187
- package/studio/server/chunks/tts.remote-yMAINgCv.js.map +0 -1
- package/studio/server/chunks/ui.svelte-CpA5kqfc.js +0 -88
- package/studio/server/chunks/ui.svelte-CpA5kqfc.js.map +0 -1
- package/studio/server/chunks/upload-service-CC8E9Slo.js +0 -212
- package/studio/server/chunks/upload-service-CC8E9Slo.js.map +0 -1
- package/studio/server/chunks/upload.remote-RYslr_Ul.js +0 -131
- package/studio/server/chunks/upload.remote-RYslr_Ul.js.map +0 -1
- package/studio/server/chunks/video-generation.remote-CrPX-27G.js +0 -197
- package/studio/server/chunks/video-generation.remote-CrPX-27G.js.map +0 -1
- package/studio/server/chunks/video-renderer-CSVxoynk.js +0 -412
- package/studio/server/chunks/video-renderer-CSVxoynk.js.map +0 -1
- package/studio/server/chunks/watermark-R6qX4KkH.js +0 -164
- package/studio/server/chunks/watermark-R6qX4KkH.js.map +0 -1
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import"./CM9l4cpH.js";import{p as pe,j as ne,k as Q,o as ot,b as _,e as ge,i as f,h as v,a4 as K,q as L,x as Qe,u as ki,aT as Ri,v as Zr,f as N,r as M,g as W,ax as Dc,c as fe,s as q,n as we,t as st,aI as Or}from"./Da3fz6L-.js";import{o as sr,s as ye,d as Jr,a as _t,j as tr,r as Mc}from"./CHlhpGna.js";import{i as te}from"./Cflu-v0E.js";import{c as ve,b as Gr}from"./DRyTCxrl.js";import{b as Ee,r as Oe,p as he}from"./BZ3Ts6hC.js";import{_ as Nc,$ as Qi,a0 as Gi,a1 as Oc,a2 as Xi,g as ei,a3 as ms,a4 as Uc,N as Zi,a5 as an,Q as Cn,a6 as nn,a7 as vi,r as uo,v as ps,a8 as Vc,D as Lc,a9 as Wc,aa as Hc,ab as jc,ac as qc,ad as gs,ae as bs,af as ys,ag as ws,ah as ks,ai as Ze,aj as Ji,ak as ma,al as ti,am as pa,u as ho,an as Kc,ao as Qc,ap as Gc,X as Xc,aq as wr,ar as fo,Y as Yc,as as vs,at as $c,au as Ts,O as Zc,av as Jc,aw as el}from"./wHWYACQ6.js";import{B as Ve,L as cr}from"./COdfvEKk.js";import{t as Rt,c as Ra}from"./4QfhfUmj.js";import{a as tl}from"./Cd2UbfQ6.js";import{D as rl}from"./BjYVAir1.js";import{s as Xe}from"./D4RaOAJg.js";import{I as Ir}from"./D7RpYYFk.js";import{v as il,f as mo,C as al,w as Ss,x as nl,y as sl,z as xs,A as Je,F as ga,o as Er,G as zi,H as dt,s as Ti,I as ol,n as cl,_ as _n,c as ll,i as dl,J as ul}from"./YwFQw-CS.js";import{M as ea,S as hl}from"./BpuHE4_g.js";import{M as fl}from"./nhcd0S0n.js";import{X as po,G as ml}from"./BcZVIP5f.js";import{c as Di}from"./BcqGu5mG.js";import"./BHu0iPy_.js";import{q as go}from"./CrnqEuwa.js";import{a as xr,c as bo,b as Si,s as gt}from"./Ce3llaYD.js";import{c as xi}from"./C3hARZS5.js";import{a as sn,n as yo,b as je,c as lr,e as wo,g as ri,m as wt}from"./DgTYfJMu.js";import{o as pl}from"./B-oba5Tq.js";import{e as Pi}from"./BLc2TzNH.js";import{I as In}from"./CaaG7K_x.js";import{u as zt}from"./DB8_8dee.js";import{C as on}from"./Ba8ftpiH.js";import{w as ba,C as Mi,D as gl,a as bl}from"./Bu_5E1Sl.js";import{y as yl,u as wl}from"./G4iiuHEo.js";import{T as kl,a as vl,b as Tl}from"./Cv2_oVuk.js";import{w as Sl}from"./DbwaqibP.js";import{C as xl}from"./30CqVqvD.js";import{f as Pl}from"./DXX6oqEY.js";import{R as Cl}from"./ynbSuJqB.js";import{A as _l}from"./DzR-Wnbm.js";function Il(r,e){pe(e,!0);let t=Oe(e,["$$slots","$$events","$$legacy"]);const i=[["circle",{cx:"12",cy:"12",r:"10"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16"}]];Ir(r,Ee({name:"circle-alert"},()=>t,{get iconNode(){return i},children:(a,n)=>{var s=ne(),o=Q(s);Xe(o,()=>e.children??ot),_(a,s)},$$slots:{default:!0}})),ge()}function El(r,e){pe(e,!0);let t=Oe(e,["$$slots","$$events","$$legacy"]);const i=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5"}]];Ir(r,Ee({name:"file"},()=>t,{get iconNode(){return i},children:(a,n)=>{var s=ne(),o=Q(s);Xe(o,()=>e.children??ot),_(a,s)},$$slots:{default:!0}})),ge()}function Al(r,e){pe(e,!0);let t=Oe(e,["$$slots","$$events","$$legacy"]);const i=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"}]];Ir(r,Ee({name:"folder-open"},()=>t,{get iconNode(){return i},children:(a,n)=>{var s=ne(),o=Q(s);Xe(o,()=>e.children??ot),_(a,s)},$$slots:{default:!0}})),ge()}function Fl(r,e){pe(e,!0);let t=Oe(e,["$$slots","$$events","$$legacy"]);const i=[["path",{d:"M15 15.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997a1 1 0 0 1-1.517-.86z"}],["path",{d:"M21 12.17V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h6"}],["path",{d:"m6 21 5-5"}],["circle",{cx:"9",cy:"9",r:"2"}]];Ir(r,Ee({name:"image-play"},()=>t,{get iconNode(){return i},children:(a,n)=>{var s=ne(),o=Q(s);Xe(o,()=>e.children??ot),_(a,s)},$$slots:{default:!0}})),ge()}function Bl(r,e){pe(e,!0);let t=Oe(e,["$$slots","$$events","$$legacy"]);const i=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M12 16v-4"}],["path",{d:"M12 8h.01"}]];Ir(r,Ee({name:"info"},()=>t,{get iconNode(){return i},children:(a,n)=>{var s=ne(),o=Q(s);Xe(o,()=>e.children??ot),_(a,s)},$$slots:{default:!0}})),ge()}function cn(r,e){pe(e,!0);let t=Oe(e,["$$slots","$$events","$$legacy"]);const i=[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"}],["path",{d:"M21 3v5h-5"}]];Ir(r,Ee({name:"rotate-cw"},()=>t,{get iconNode(){return i},children:(a,n)=>{var s=ne(),o=Q(s);Xe(o,()=>e.children??ot),_(a,s)},$$slots:{default:!0}})),ge()}function Rl(r,e){pe(e,!0);let t=Oe(e,["$$slots","$$events","$$legacy"]);const i=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"}],["path",{d:"M12 9v4"}],["path",{d:"M12 17h.01"}]];Ir(r,Ee({name:"triangle-alert"},()=>t,{get iconNode(){return i},children:(a,n)=>{var s=ne(),o=Q(s);Xe(o,()=>e.children??ot),_(a,s)},$$slots:{default:!0}})),ge()}function zl(r,e){if(yl(r)){const i=r();return i===void 0?e:i}return r===void 0?e:r}function ya(r,e){let t=K(null);const i=L(()=>zl(e,250));function a(...n){if(f(t))f(t).timeout&&clearTimeout(f(t).timeout);else{let s,o;const c=new Promise((l,d)=>{s=l,o=d});v(t,{timeout:null,runner:null,promise:c,resolve:s,reject:o},!0)}return f(t).runner=async()=>{if(!f(t))return;const s=f(t);v(t,null);try{s.resolve(await r.apply(this,n))}catch(o){s.reject(o)}},f(t).timeout=setTimeout(f(t).runner,f(i)),f(t).promise}return a.cancel=async()=>{(!f(t)||f(t).timeout===null)&&(await new Promise(n=>setTimeout(n,0)),!f(t)||f(t).timeout===null)||(clearTimeout(f(t).timeout),f(t).reject("Cancelled"),v(t,null))},a.runScheduledNow=async()=>{(!f(t)||!f(t).timeout)&&(await new Promise(n=>setTimeout(n,0)),!f(t)||!f(t).timeout)||(clearTimeout(f(t).timeout),f(t).timeout=null,await f(t).runner?.())},Object.defineProperty(a,"pending",{enumerable:!0,get(){return!!f(t)?.timeout}}),a}class En{#e=K(!1);constructor(){Qe(()=>(ki(()=>v(this.#e,!0)),()=>{v(this.#e,!1)}))}get current(){return f(this.#e)}}class Xr{#e;#t;constructor(e,t){this.#e=e,this.#t=t,this.handler=this.handler.bind(this),Qe(this.handler)}handler(){let e=0;const t=this.#e();if(!t)return;const i=new ResizeObserver(()=>{cancelAnimationFrame(e),e=window.requestAnimationFrame(this.#t)});return i.observe(t),()=>{window.cancelAnimationFrame(e),i.unobserve(t)}}}class ko{state;#e;constructor(e,t){this.state=sn(e),this.#e=t,this.dispatch=this.dispatch.bind(this)}#t(e){return this.#e[this.state.current][e]??this.state.current}dispatch(e){this.state.current=this.#t(e)}}const Ps=new WeakMap,Dl=16,Ml={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}};class Nl{opts;#e=K("none");get prevAnimationNameState(){return f(this.#e)}set prevAnimationNameState(e){v(this.#e,e,!0)}#t=K(Ri({display:"",animationName:"none"}));get styles(){return f(this.#t)}set styles(e){v(this.#t,e,!0)}initialStatus;previousPresent;machine;present;constructor(e){this.opts=e,this.present=this.opts.open,this.initialStatus=e.open.current?"mounted":"unmounted",this.previousPresent=new Nc(()=>this.present.current),this.machine=new ko(this.initialStatus,Ml),this.handleAnimationEnd=this.handleAnimationEnd.bind(this),this.handleAnimationStart=this.handleAnimationStart.bind(this),Ol(this),Ul(this),Vl(this)}handleAnimationEnd(e){if(!this.opts.ref.current)return;const t=this.styles.animationName||ta(this.opts.ref.current),i=t.includes(e.animationName)||t==="none";e.target===this.opts.ref.current&&i&&this.machine.dispatch("ANIMATION_END")}handleAnimationStart(e){if(this.opts.ref.current&&e.target===this.opts.ref.current){const t=ta(this.opts.ref.current,!0);this.prevAnimationNameState=t,this.styles.animationName=t}}#r=L(()=>["mounted","unmountSuspended"].includes(this.machine.state.current));get isPresent(){return f(this.#r)}set isPresent(e){v(this.#r,e)}}function Ol(r){ba(()=>r.present.current,()=>{if(!r.opts.ref.current||!(r.present.current!==r.previousPresent.current))return;const t=r.prevAnimationNameState,i=ta(r.opts.ref.current,!0);if(r.styles.animationName=i,r.present.current)r.machine.dispatch("MOUNT");else if(i==="none"||r.styles.display==="none")r.machine.dispatch("UNMOUNT");else{const a=t!==i;r.previousPresent.current&&a?r.machine.dispatch("ANIMATION_OUT"):r.machine.dispatch("UNMOUNT")}})}function Ul(r){ba(()=>r.machine.state.current,()=>{if(!r.opts.ref.current)return;const e=r.machine.state.current==="mounted"?ta(r.opts.ref.current,!0):"none";r.prevAnimationNameState=e,r.styles.animationName=e})}function Vl(r){ba(()=>r.opts.ref.current,()=>{if(!r.opts.ref.current)return;const e=getComputedStyle(r.opts.ref.current);return r.styles={display:e.display,animationName:e.animationName||"none"},yo(sr(r.opts.ref.current,"animationstart",r.handleAnimationStart),sr(r.opts.ref.current,"animationcancel",r.handleAnimationEnd),sr(r.opts.ref.current,"animationend",r.handleAnimationEnd))})}function ta(r,e=!1){if(!r)return"none";const t=performance.now(),i=Ps.get(r);if(!e&&i&&t-i.timestamp<Dl)return i.value;const a=getComputedStyle(r).animationName||"none";return Ps.set(r,{value:a,timestamp:t}),a}function wa(r,e){pe(e,!0);const t=new Nl({open:je(()=>e.open),ref:e.ref});var i=ne(),a=Q(i);{var n=s=>{var o=ne(),c=Q(o);Xe(c,()=>e.presence??ot,()=>({present:t.isPresent})),_(s,o)};te(a,s=>{(e.forceMount||e.open||t.isPresent)&&s(n)})}_(r,i),ge()}const Ll=wo({component:"progress",parts:["root"]});class An{static create(e){return new An(e)}opts;attachment;constructor(e){this.opts=e,this.attachment=lr(this.opts.ref)}#e=L(()=>({role:"progressbar",value:this.opts.value.current,"aria-valuemin":this.opts.min.current,"aria-valuemax":this.opts.max.current,"aria-valuenow":this.opts.value.current===null?void 0:this.opts.value.current,"data-value":this.opts.value.current===null?void 0:this.opts.value.current,"data-state":Wl(this.opts.value.current,this.opts.max.current),"data-max":this.opts.max.current,"data-min":this.opts.min.current,"data-indeterminate":this.opts.value.current===null?"":void 0,[Ll.root]:"",...this.attachment}));get props(){return f(this.#e)}set props(e){v(this.#e,e)}}function Wl(r,e){return r===null?"indeterminate":r===e?"loaded":"loading"}var Hl=W("<div><!></div>");function jl(r,e){const t=Zr();pe(e,!0);let i=he(e,"value",3,0),a=he(e,"max",3,100),n=he(e,"min",3,0),s=he(e,"id",19,()=>ri(t)),o=he(e,"ref",15,null),c=Oe(e,["$$slots","$$events","$$legacy","child","children","value","max","min","id","ref"]);const l=An.create({value:je(()=>i()),max:je(()=>a()),min:je(()=>n()),id:je(()=>s()),ref:je(()=>o(),g=>o(g))}),d=L(()=>wt(c,l.props));var u=ne(),h=Q(u);{var p=g=>{var b=ne(),k=Q(b);Xe(k,()=>e.child,()=>({props:f(d)})),_(g,b)},m=g=>{var b=Hl();xr(b,()=>({...f(d)}));var k=N(b);Xe(k,()=>e.children??ot),M(b),_(g,b)};te(h,g=>{e.child?g(p):g(m,-1)})}_(r,u),ge()}function ql(r,e,t){return Math.min(t,Math.max(e,r))}const Ni=wo({component:"scroll-area",parts:["root","viewport","corner","thumb","scrollbar"]}),Oi=new Mi("ScrollArea.Root"),Ui=new Mi("ScrollArea.Scrollbar"),ka=new Mi("ScrollArea.ScrollbarVisible"),Fn=new Mi("ScrollArea.ScrollbarAxis"),vo=new Mi("ScrollArea.ScrollbarShared");class Bn{static create(e){return Oi.set(new Bn(e))}opts;attachment;#e=K(null);get scrollAreaNode(){return f(this.#e)}set scrollAreaNode(e){v(this.#e,e,!0)}#t=K(null);get viewportNode(){return f(this.#t)}set viewportNode(e){v(this.#t,e,!0)}#r=K(null);get contentNode(){return f(this.#r)}set contentNode(e){v(this.#r,e,!0)}#i=K(null);get scrollbarXNode(){return f(this.#i)}set scrollbarXNode(e){v(this.#i,e,!0)}#a=K(null);get scrollbarYNode(){return f(this.#a)}set scrollbarYNode(e){v(this.#a,e,!0)}#n=K(0);get cornerWidth(){return f(this.#n)}set cornerWidth(e){v(this.#n,e,!0)}#s=K(0);get cornerHeight(){return f(this.#s)}set cornerHeight(e){v(this.#s,e,!0)}#o=K(!1);get scrollbarXEnabled(){return f(this.#o)}set scrollbarXEnabled(e){v(this.#o,e,!0)}#c=K(!1);get scrollbarYEnabled(){return f(this.#c)}set scrollbarYEnabled(e){v(this.#c,e,!0)}domContext;constructor(e){this.opts=e,this.attachment=lr(e.ref,t=>this.scrollAreaNode=t),this.domContext=new gl(e.ref)}#l=L(()=>({id:this.opts.id.current,dir:this.opts.dir.current,style:{position:"relative","--bits-scroll-area-corner-height":`${this.cornerHeight}px`,"--bits-scroll-area-corner-width":`${this.cornerWidth}px`},[Ni.root]:"",...this.attachment}));get props(){return f(this.#l)}set props(e){v(this.#l,e)}}class Rn{static create(e){return new Rn(e,Oi.get())}opts;root;attachment;#e=sn(wl());#t=sn(null);contentAttachment=lr(this.#t,e=>this.root.contentNode=e);constructor(e,t){this.opts=e,this.root=t,this.attachment=lr(e.ref,i=>this.root.viewportNode=i)}#r=L(()=>({id:this.opts.id.current,style:{overflowX:this.root.scrollbarXEnabled?"scroll":"hidden",overflowY:this.root.scrollbarYEnabled?"scroll":"hidden"},[Ni.viewport]:"",...this.attachment}));get props(){return f(this.#r)}set props(e){v(this.#r,e)}#i=L(()=>({id:this.#e.current,"data-scroll-area-content":"",style:{minWidth:this.root.scrollbarXEnabled?"fit-content":void 0},...this.contentAttachment}));get contentProps(){return f(this.#i)}set contentProps(e){v(this.#i,e)}}class zn{static create(e){return Ui.set(new zn(e,Oi.get()))}opts;root;#e=L(()=>this.opts.orientation.current==="horizontal");get isHorizontal(){return f(this.#e)}set isHorizontal(e){v(this.#e,e)}#t=K(!1);get hasThumb(){return f(this.#t)}set hasThumb(e){v(this.#t,e,!0)}constructor(e,t){this.opts=e,this.root=t,ba(()=>this.isHorizontal,i=>i?(this.root.scrollbarXEnabled=!0,()=>{this.root.scrollbarXEnabled=!1}):(this.root.scrollbarYEnabled=!0,()=>{this.root.scrollbarYEnabled=!1}))}}class Dn{static create(){return new Dn(Ui.get())}scrollbar;root;#e=K(!1);get isVisible(){return f(this.#e)}set isVisible(e){v(this.#e,e,!0)}constructor(e){this.scrollbar=e,this.root=e.root,Qe(()=>{const t=this.root.scrollAreaNode,i=this.root.opts.scrollHideDelay.current;let a=0;if(!t)return;const n=()=>{this.root.domContext.clearTimeout(a),ki(()=>this.isVisible=!0)},s=()=>{a&&this.root.domContext.clearTimeout(a),a=this.root.domContext.setTimeout(()=>{ki(()=>{this.scrollbar.hasThumb=!1,this.isVisible=!1})},i)},o=yo(sr(t,"pointerenter",n),sr(t,"pointerleave",s));return()=>{this.root.domContext.getWindow().clearTimeout(a),o()}})}#t=L(()=>({"data-state":this.isVisible?"visible":"hidden"}));get props(){return f(this.#t)}set props(e){v(this.#t,e)}}class Mn{static create(){return new Mn(Ui.get())}scrollbar;root;machine=new ko("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});#e=L(()=>this.machine.state.current==="hidden");get isHidden(){return f(this.#e)}set isHidden(e){v(this.#e,e)}constructor(e){this.scrollbar=e,this.root=e.root;const t=ya(()=>this.machine.dispatch("SCROLL_END"),100);Qe(()=>{const i=this.machine.state.current,a=this.root.opts.scrollHideDelay.current;if(i==="idle"){const n=this.root.domContext.setTimeout(()=>this.machine.dispatch("HIDE"),a);return()=>this.root.domContext.clearTimeout(n)}}),Qe(()=>{const i=this.root.viewportNode;if(!i)return;const a=this.scrollbar.isHorizontal?"scrollLeft":"scrollTop";let n=i[a];return sr(i,"scroll",()=>{const c=i[a];n!==c&&(this.machine.dispatch("SCROLL"),t()),n=c})}),this.onpointerenter=this.onpointerenter.bind(this),this.onpointerleave=this.onpointerleave.bind(this)}onpointerenter(e){this.machine.dispatch("POINTER_ENTER")}onpointerleave(e){this.machine.dispatch("POINTER_LEAVE")}#t=L(()=>({"data-state":this.machine.state.current==="hidden"?"hidden":"visible",onpointerenter:this.onpointerenter,onpointerleave:this.onpointerleave}));get props(){return f(this.#t)}set props(e){v(this.#t,e)}}class va{static create(){return new va(Ui.get())}scrollbar;root;#e=K(!1);get isVisible(){return f(this.#e)}set isVisible(e){v(this.#e,e,!0)}constructor(e){this.scrollbar=e,this.root=e.root;const t=ya(()=>{const i=this.root.viewportNode;if(!i)return;const a=i.offsetWidth<i.scrollWidth,n=i.offsetHeight<i.scrollHeight;this.isVisible=this.scrollbar.isHorizontal?a:n},10);new Xr(()=>this.root.viewportNode,t),new Xr(()=>this.root.contentNode,t)}#t=L(()=>({"data-state":this.isVisible?"visible":"hidden"}));get props(){return f(this.#t)}set props(e){v(this.#t,e)}}class Nn{static create(){return ka.set(new Nn(Ui.get()))}scrollbar;root;#e=K(null);get thumbNode(){return f(this.#e)}set thumbNode(e){v(this.#e,e,!0)}#t=K(0);get pointerOffset(){return f(this.#t)}set pointerOffset(e){v(this.#t,e,!0)}#r=K({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}});get sizes(){return f(this.#r)}set sizes(e){v(this.#r,e)}#i=L(()=>To(this.sizes.viewport,this.sizes.content));get thumbRatio(){return f(this.#i)}set thumbRatio(e){v(this.#i,e)}#a=L(()=>this.thumbRatio>0&&this.thumbRatio<1);get hasThumb(){return f(this.#a)}set hasThumb(e){v(this.#a,e)}#n=K("");get prevTransformStyle(){return f(this.#n)}set prevTransformStyle(e){v(this.#n,e,!0)}constructor(e){this.scrollbar=e,this.root=e.root,Qe(()=>{this.scrollbar.hasThumb=this.hasThumb}),Qe(()=>{!this.scrollbar.hasThumb&&this.thumbNode&&(this.prevTransformStyle=this.thumbNode.style.transform)})}setSizes(e){this.sizes=e}getScrollPosition(e,t){return Kl({pointerPos:e,pointerOffset:this.pointerOffset,sizes:this.sizes,dir:t})}onThumbPointerUp(){this.pointerOffset=0}onThumbPointerDown(e){this.pointerOffset=e}xOnThumbPositionChange(){if(!(this.root.viewportNode&&this.thumbNode))return;const e=this.root.viewportNode.scrollLeft,i=`translate3d(${Cs({scrollPos:e,sizes:this.sizes,dir:this.root.opts.dir.current})}px, 0, 0)`;this.thumbNode.style.transform=i,this.prevTransformStyle=i}xOnWheelScroll(e){this.root.viewportNode&&(this.root.viewportNode.scrollLeft=e)}xOnDragScroll(e){this.root.viewportNode&&(this.root.viewportNode.scrollLeft=this.getScrollPosition(e,this.root.opts.dir.current))}yOnThumbPositionChange(){if(!(this.root.viewportNode&&this.thumbNode))return;const e=this.root.viewportNode.scrollTop,i=`translate3d(0, ${Cs({scrollPos:e,sizes:this.sizes})}px, 0)`;this.thumbNode.style.transform=i,this.prevTransformStyle=i}yOnWheelScroll(e){this.root.viewportNode&&(this.root.viewportNode.scrollTop=e)}yOnDragScroll(e){this.root.viewportNode&&(this.root.viewportNode.scrollTop=this.getScrollPosition(e,this.root.opts.dir.current))}}class On{static create(e){return Fn.set(new On(e,ka.get()))}opts;scrollbarVis;root;scrollbar;attachment;#e=K();get computedStyle(){return f(this.#e)}set computedStyle(e){v(this.#e,e,!0)}constructor(e,t){this.opts=e,this.scrollbarVis=t,this.root=t.root,this.scrollbar=t.scrollbar,this.attachment=lr(this.scrollbar.opts.ref,i=>this.root.scrollbarXNode=i),Qe(()=>{this.scrollbar.opts.ref.current&&this.opts.mounted.current&&(this.computedStyle=getComputedStyle(this.scrollbar.opts.ref.current))}),Qe(()=>{this.onResize()})}onThumbPointerDown=e=>{this.scrollbarVis.onThumbPointerDown(e.x)};onDragScroll=e=>{this.scrollbarVis.xOnDragScroll(e.x)};onThumbPointerUp=()=>{this.scrollbarVis.onThumbPointerUp()};onThumbPositionChange=()=>{this.scrollbarVis.xOnThumbPositionChange()};onWheelScroll=(e,t)=>{if(!this.root.viewportNode)return;const i=this.root.viewportNode.scrollLeft+e.deltaX;this.scrollbarVis.xOnWheelScroll(i),xo(i,t)&&e.preventDefault()};onResize=()=>{this.scrollbar.opts.ref.current&&this.root.viewportNode&&this.computedStyle&&this.scrollbarVis.setSizes({content:this.root.viewportNode.scrollWidth,viewport:this.root.viewportNode.offsetWidth,scrollbar:{size:this.scrollbar.opts.ref.current.clientWidth,paddingStart:ra(this.computedStyle.paddingLeft),paddingEnd:ra(this.computedStyle.paddingRight)}})};#t=L(()=>Ta(this.scrollbarVis.sizes));get thumbSize(){return f(this.#t)}set thumbSize(e){v(this.#t,e)}#r=L(()=>({id:this.scrollbar.opts.id.current,"data-orientation":"horizontal",style:{bottom:0,left:this.root.opts.dir.current==="rtl"?"var(--bits-scroll-area-corner-width)":0,right:this.root.opts.dir.current==="ltr"?"var(--bits-scroll-area-corner-width)":0,"--bits-scroll-area-thumb-width":`${this.thumbSize}px`},...this.attachment}));get props(){return f(this.#r)}set props(e){v(this.#r,e)}}class Un{static create(e){return Fn.set(new Un(e,ka.get()))}opts;scrollbarVis;root;scrollbar;attachment;#e=K();get computedStyle(){return f(this.#e)}set computedStyle(e){v(this.#e,e,!0)}constructor(e,t){this.opts=e,this.scrollbarVis=t,this.root=t.root,this.scrollbar=t.scrollbar,this.attachment=lr(this.scrollbar.opts.ref,i=>this.root.scrollbarYNode=i),Qe(()=>{this.scrollbar.opts.ref.current&&this.opts.mounted.current&&(this.computedStyle=getComputedStyle(this.scrollbar.opts.ref.current))}),Qe(()=>{this.onResize()}),this.onThumbPointerDown=this.onThumbPointerDown.bind(this),this.onDragScroll=this.onDragScroll.bind(this),this.onThumbPointerUp=this.onThumbPointerUp.bind(this),this.onThumbPositionChange=this.onThumbPositionChange.bind(this),this.onWheelScroll=this.onWheelScroll.bind(this),this.onResize=this.onResize.bind(this)}onThumbPointerDown(e){this.scrollbarVis.onThumbPointerDown(e.y)}onDragScroll(e){this.scrollbarVis.yOnDragScroll(e.y)}onThumbPointerUp(){this.scrollbarVis.onThumbPointerUp()}onThumbPositionChange(){this.scrollbarVis.yOnThumbPositionChange()}onWheelScroll(e,t){if(!this.root.viewportNode)return;const i=this.root.viewportNode.scrollTop+e.deltaY;this.scrollbarVis.yOnWheelScroll(i),xo(i,t)&&e.preventDefault()}onResize(){this.scrollbar.opts.ref.current&&this.root.viewportNode&&this.computedStyle&&this.scrollbarVis.setSizes({content:this.root.viewportNode.scrollHeight,viewport:this.root.viewportNode.offsetHeight,scrollbar:{size:this.scrollbar.opts.ref.current.clientHeight,paddingStart:ra(this.computedStyle.paddingTop),paddingEnd:ra(this.computedStyle.paddingBottom)}})}#t=L(()=>Ta(this.scrollbarVis.sizes));get thumbSize(){return f(this.#t)}set thumbSize(e){v(this.#t,e)}#r=L(()=>({id:this.scrollbar.opts.id.current,"data-orientation":"vertical",style:{top:0,right:this.root.opts.dir.current==="ltr"?0:void 0,left:this.root.opts.dir.current==="rtl"?0:void 0,bottom:"var(--bits-scroll-area-corner-height)","--bits-scroll-area-thumb-height":`${this.thumbSize}px`},...this.attachment}));get props(){return f(this.#r)}set props(e){v(this.#r,e)}}class Vn{static create(){return vo.set(new Vn(Fn.get()))}scrollbarState;root;scrollbarVis;scrollbar;#e=K(null);get rect(){return f(this.#e)}set rect(e){v(this.#e,e)}#t=K("");get prevWebkitUserSelect(){return f(this.#t)}set prevWebkitUserSelect(e){v(this.#t,e,!0)}handleResize;handleThumbPositionChange;handleWheelScroll;handleThumbPointerDown;handleThumbPointerUp;#r=L(()=>this.scrollbarVis.sizes.content-this.scrollbarVis.sizes.viewport);get maxScrollPos(){return f(this.#r)}set maxScrollPos(e){v(this.#r,e)}constructor(e){this.scrollbarState=e,this.root=e.root,this.scrollbarVis=e.scrollbarVis,this.scrollbar=e.scrollbarVis.scrollbar,this.handleResize=ya(()=>this.scrollbarState.onResize(),10),this.handleThumbPositionChange=this.scrollbarState.onThumbPositionChange,this.handleWheelScroll=this.scrollbarState.onWheelScroll,this.handleThumbPointerDown=this.scrollbarState.onThumbPointerDown,this.handleThumbPointerUp=this.scrollbarState.onThumbPointerUp,Qe(()=>{const t=this.maxScrollPos,i=this.scrollbar.opts.ref.current;this.root.viewportNode;const a=s=>{const o=s.target;i?.contains(o)&&this.handleWheelScroll(s,t)};return sr(this.root.domContext.getDocument(),"wheel",a,{passive:!1})}),Dc(()=>{this.scrollbarVis.sizes,ki(()=>this.handleThumbPositionChange())}),new Xr(()=>this.scrollbar.opts.ref.current,this.handleResize),new Xr(()=>this.root.contentNode,this.handleResize),this.onpointerdown=this.onpointerdown.bind(this),this.onpointermove=this.onpointermove.bind(this),this.onpointerup=this.onpointerup.bind(this),this.onlostpointercapture=this.onlostpointercapture.bind(this)}handleDragScroll(e){if(!this.rect)return;const t=e.clientX-this.rect.left,i=e.clientY-this.rect.top;this.scrollbarState.onDragScroll({x:t,y:i})}#i(){this.rect!==null&&(this.root.domContext.getDocument().body.style.webkitUserSelect=this.prevWebkitUserSelect,this.root.viewportNode&&(this.root.viewportNode.style.scrollBehavior=""),this.rect=null)}onpointerdown(e){if(e.button!==0)return;e.target.setPointerCapture(e.pointerId),this.rect=this.scrollbar.opts.ref.current?.getBoundingClientRect()??null,this.prevWebkitUserSelect=this.root.domContext.getDocument().body.style.webkitUserSelect,this.root.domContext.getDocument().body.style.webkitUserSelect="none",this.root.viewportNode&&(this.root.viewportNode.style.scrollBehavior="auto"),this.handleDragScroll(e)}onpointermove(e){this.handleDragScroll(e)}onpointerup(e){const t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),this.#i()}onlostpointercapture(e){this.#i()}#a=L(()=>wt({...this.scrollbarState.props,style:{position:"absolute",...this.scrollbarState.props.style},[Ni.scrollbar]:"",onpointerdown:this.onpointerdown,onpointermove:this.onpointermove,onpointerup:this.onpointerup,onlostpointercapture:this.onlostpointercapture}));get props(){return f(this.#a)}set props(e){v(this.#a,e)}}class Ln{static create(e){return new Ln(e,vo.get())}opts;scrollbarState;attachment;#e;#t=K();#r=ya(()=>{f(this.#t)&&(f(this.#t)(),v(this.#t,void 0))},100);constructor(e,t){this.opts=e,this.scrollbarState=t,this.#e=t.root,this.attachment=lr(this.opts.ref,i=>this.scrollbarState.scrollbarVis.thumbNode=i),Qe(()=>{const i=this.#e.viewportNode;if(!i)return;const a=()=>{if(this.#r(),!f(this.#t)){const s=Ql(i,this.scrollbarState.handleThumbPositionChange);v(this.#t,s,!0),this.scrollbarState.handleThumbPositionChange()}};return ki(()=>this.scrollbarState.handleThumbPositionChange()),sr(i,"scroll",a)}),this.onpointerdowncapture=this.onpointerdowncapture.bind(this),this.onpointerup=this.onpointerup.bind(this)}onpointerdowncapture(e){const t=e.target;if(!t)return;const i=t.getBoundingClientRect(),a=e.clientX-i.left,n=e.clientY-i.top;this.scrollbarState.handleThumbPointerDown({x:a,y:n})}onpointerup(e){this.scrollbarState.handleThumbPointerUp()}#i=L(()=>({id:this.opts.id.current,"data-state":this.scrollbarState.scrollbarVis.hasThumb?"visible":"hidden",style:{width:"var(--bits-scroll-area-thumb-width)",height:"var(--bits-scroll-area-thumb-height)",transform:this.scrollbarState.scrollbarVis.prevTransformStyle},onpointerdowncapture:this.onpointerdowncapture,onpointerup:this.onpointerup,[Ni.thumb]:"",...this.attachment}));get props(){return f(this.#i)}set props(e){v(this.#i,e)}}class Wn{static create(e){return new Wn(e,Oi.get())}opts;root;attachment;#e=K(0);#t=K(0);#r=L(()=>!!(f(this.#e)&&f(this.#t)));get hasSize(){return f(this.#r)}set hasSize(e){v(this.#r,e)}constructor(e,t){this.opts=e,this.root=t,this.attachment=lr(this.opts.ref),new Xr(()=>this.root.scrollbarXNode,()=>{const i=this.root.scrollbarXNode?.offsetHeight||0;this.root.cornerHeight=i,v(this.#t,i,!0)}),new Xr(()=>this.root.scrollbarYNode,()=>{const i=this.root.scrollbarYNode?.offsetWidth||0;this.root.cornerWidth=i,v(this.#e,i,!0)})}#i=L(()=>({id:this.opts.id.current,style:{width:f(this.#e),height:f(this.#t),position:"absolute",right:this.root.opts.dir.current==="ltr"?0:void 0,left:this.root.opts.dir.current==="rtl"?0:void 0,bottom:0},[Ni.corner]:"",...this.attachment}));get props(){return f(this.#i)}set props(e){v(this.#i,e)}}function ra(r){return r?Number.parseInt(r,10):0}function To(r,e){const t=r/e;return Number.isNaN(t)?0:t}function Ta(r){const e=To(r.viewport,r.content),t=r.scrollbar.paddingStart+r.scrollbar.paddingEnd,i=(r.scrollbar.size-t)*e;return Math.max(i,18)}function Kl({pointerPos:r,pointerOffset:e,sizes:t,dir:i="ltr"}){const a=Ta(t),n=a/2,s=e||n,o=a-s,c=t.scrollbar.paddingStart+s,l=t.scrollbar.size-t.scrollbar.paddingEnd-o,d=t.content-t.viewport,u=i==="ltr"?[0,d]:[d*-1,0];return So([c,l],u)(r)}function Cs({scrollPos:r,sizes:e,dir:t="ltr"}){const i=Ta(e),a=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,n=e.scrollbar.size-a,s=e.content-e.viewport,o=n-i,c=t==="ltr"?[0,s]:[s*-1,0],l=ql(r,c[0],c[1]);return So([0,s],[0,o])(l)}function So(r,e){return t=>{if(r[0]===r[1]||e[0]===e[1])return e[0];const i=(e[1]-e[0])/(r[1]-r[0]);return e[0]+i*(t-r[0])}}function xo(r,e){return r>0&&r<e}function Ql(r,e){let t={left:r.scrollLeft,top:r.scrollTop},i=0;const a=bl(r);return(function n(){const s={left:r.scrollLeft,top:r.scrollTop},o=t.left!==s.left,c=t.top!==s.top;(o||c)&&e(),t=s,i=a.requestAnimationFrame(n)})(),()=>a.cancelAnimationFrame(i)}var Gl=W("<div><!></div>");function Xl(r,e){const t=Zr();pe(e,!0);let i=he(e,"ref",15,null),a=he(e,"id",19,()=>ri(t)),n=he(e,"type",3,"hover"),s=he(e,"dir",3,"ltr"),o=he(e,"scrollHideDelay",3,600),c=Oe(e,["$$slots","$$events","$$legacy","ref","id","type","dir","scrollHideDelay","children","child"]);const l=Bn.create({type:je(()=>n()),dir:je(()=>s()),scrollHideDelay:je(()=>o()),id:je(()=>a()),ref:je(()=>i(),g=>i(g))}),d=L(()=>wt(c,l.props));var u=ne(),h=Q(u);{var p=g=>{var b=ne(),k=Q(b);Xe(k,()=>e.child,()=>({props:f(d)})),_(g,b)},m=g=>{var b=Gl();xr(b,()=>({...f(d)}));var k=N(b);Xe(k,()=>e.children??ot),M(b),_(g,b)};te(h,g=>{e.child?g(p):g(m,-1)})}_(r,u),ge()}var Yl=W("<div><div><!></div></div>");function $l(r,e){const t=Zr();pe(e,!0);let i=he(e,"ref",15,null),a=he(e,"id",19,()=>ri(t)),n=Oe(e,["$$slots","$$events","$$legacy","ref","id","children"]);const s=Rn.create({id:je(()=>a()),ref:je(()=>i(),h=>i(h))}),o=L(()=>wt(n,s.props)),c=L(()=>wt({},s.contentProps));var l=Yl();xr(l,()=>({...f(o)}));var d=N(l);xr(d,()=>({...f(c)}));var u=N(d);Xe(u,()=>e.children??ot),M(d),M(l),_(r,l),ge()}var Zl=W("<div><!></div>");function Po(r,e){pe(e,!0);let t=Oe(e,["$$slots","$$events","$$legacy","child","children"]);const i=Vn.create(),a=L(()=>wt(t,i.props));var n=ne(),s=Q(n);{var o=l=>{var d=ne(),u=Q(d);Xe(u,()=>e.child,()=>({props:f(a)})),_(l,d)},c=l=>{var d=Zl();xr(d,()=>({...f(a)}));var u=N(d);Xe(u,()=>e.children??ot),M(d),_(l,d)};te(s,l=>{e.child?l(o):l(c,-1)})}_(r,n),ge()}function Jl(r,e){pe(e,!0);let t=Oe(e,["$$slots","$$events","$$legacy"]);const i=new En,a=On.create({mounted:je(()=>i.current)}),n=L(()=>wt(t,a.props));Po(r,Ee(()=>f(n))),ge()}function ed(r,e){pe(e,!0);let t=Oe(e,["$$slots","$$events","$$legacy"]);const i=new En,a=Un.create({mounted:je(()=>i.current)}),n=L(()=>wt(t,a.props));Po(r,Ee(()=>f(n))),ge()}function Sa(r,e){pe(e,!0);let t=Oe(e,["$$slots","$$events","$$legacy"]);const i=Nn.create();var a=ne(),n=Q(a);{var s=c=>{Jl(c,Ee(()=>t))},o=c=>{ed(c,Ee(()=>t))};te(n,c=>{i.scrollbar.opts.orientation.current==="horizontal"?c(s):c(o,-1)})}_(r,a),ge()}function td(r,e){pe(e,!0);let t=he(e,"forceMount",3,!1),i=Oe(e,["$$slots","$$events","$$legacy","forceMount"]);const a=va.create(),n=L(()=>wt(i,a.props));{const s=c=>{Sa(c,Ee(()=>f(n)))};let o=L(()=>t()||a.isVisible);wa(r,{get open(){return f(o)},get ref(){return a.scrollbar.opts.ref},presence:s,$$slots:{presence:!0}})}ge()}function rd(r,e){pe(e,!0);let t=he(e,"forceMount",3,!1),i=Oe(e,["$$slots","$$events","$$legacy","forceMount"]);const a=Mn.create(),n=L(()=>wt(i,a.props));{const s=c=>{Sa(c,Ee(()=>f(n)))};let o=L(()=>t()||!a.isHidden);wa(r,Ee(()=>f(n),{get open(){return f(o)},get ref(){return a.scrollbar.opts.ref},presence:s,$$slots:{presence:!0}}))}ge()}function id(r,e){pe(e,!0);let t=he(e,"forceMount",3,!1),i=Oe(e,["$$slots","$$events","$$legacy","forceMount"]);const a=Dn.create(),n=va.create(),s=L(()=>wt(i,a.props,n.props,{"data-state":a.isVisible?"visible":"hidden"})),o=L(()=>t()||a.isVisible&&n.isVisible);wa(r,{get open(){return f(o)},get ref(){return n.scrollbar.opts.ref},presence:l=>{Sa(l,Ee(()=>f(s)))},$$slots:{presence:!0}}),ge()}function ad(r,e){const t=Zr();pe(e,!0);let i=he(e,"ref",15,null),a=he(e,"id",19,()=>ri(t)),n=Oe(e,["$$slots","$$events","$$legacy","ref","id","orientation"]);const s=zn.create({orientation:je(()=>e.orientation),id:je(()=>a()),ref:je(()=>i(),m=>i(m))}),o=L(()=>s.root.opts.type.current);var c=ne(),l=Q(c);{var d=m=>{id(m,Ee(()=>n,{get id(){return a()}}))},u=m=>{rd(m,Ee(()=>n,{get id(){return a()}}))},h=m=>{td(m,Ee(()=>n,{get id(){return a()}}))},p=m=>{Sa(m,Ee(()=>n,{get id(){return a()}}))};te(l,m=>{f(o)==="hover"?m(d):f(o)==="scroll"?m(u,1):f(o)==="auto"?m(h,2):f(o)==="always"&&m(p,3)})}_(r,c),ge()}var nd=W("<div><!></div>");function sd(r,e){pe(e,!0);let t=he(e,"ref",15,null),i=Oe(e,["$$slots","$$events","$$legacy","ref","id","child","children","present"]);const a=new En,n=Ln.create({id:je(()=>e.id),ref:je(()=>t(),u=>t(u)),mounted:je(()=>a.current)}),s=L(()=>wt(i,n.props,{style:{hidden:!e.present}}));var o=ne(),c=Q(o);{var l=u=>{var h=ne(),p=Q(h);Xe(p,()=>e.child,()=>({props:f(s)})),_(u,h)},d=u=>{var h=nd();xr(h,()=>({...f(s)}));var p=N(h);Xe(p,()=>e.children??ot),M(h),_(u,h)};te(c,u=>{e.child?u(l):u(d,-1)})}_(r,o),ge()}function od(r,e){const t=Zr();pe(e,!0);let i=he(e,"id",19,()=>ri(t)),a=he(e,"ref",15,null),n=he(e,"forceMount",3,!1),s=Oe(e,["$$slots","$$events","$$legacy","id","ref","forceMount"]);const o=ka.get();{const c=(d,u)=>{let h=()=>u?.().present;sd(d,Ee(()=>s,{get id(){return i()},get present(){return h()},get ref(){return a()},set ref(p){a(p)}}))};let l=L(()=>n()||o.hasThumb);wa(r,{get open(){return f(l)},get ref(){return o.scrollbar.opts.ref},presence:c,$$slots:{presence:!0}})}ge()}var cd=W("<div><!></div>");function ld(r,e){pe(e,!0);let t=he(e,"ref",15,null),i=Oe(e,["$$slots","$$events","$$legacy","ref","id","children","child"]);const a=Wn.create({id:je(()=>e.id),ref:je(()=>t(),d=>t(d))}),n=L(()=>wt(i,a.props));var s=ne(),o=Q(s);{var c=d=>{var u=ne(),h=Q(u);Xe(h,()=>e.child,()=>({props:f(n)})),_(d,u)},l=d=>{var u=cd();xr(u,()=>({...f(n)}));var h=N(u);Xe(h,()=>e.children??ot),M(u),_(d,u)};te(o,d=>{e.child?d(c):d(l,-1)})}_(r,s),ge()}function dd(r,e){const t=Zr();pe(e,!0);let i=he(e,"ref",15,null),a=he(e,"id",19,()=>ri(t)),n=Oe(e,["$$slots","$$events","$$legacy","ref","id"]);const s=Oi.get(),o=L(()=>!!(s.scrollbarXNode&&s.scrollbarYNode)),c=L(()=>s.opts.type.current!=="scroll"&&f(o));var l=ne(),d=Q(l);{var u=h=>{ld(h,Ee(()=>n,{get id(){return a()},get ref(){return i()},set ref(p){i(p)}}))};te(d,h=>{f(c)&&h(u)})}_(r,l),ge()}function ud(r,e){pe(e,!0);let t=he(e,"open",15,!1),i=Oe(e,["$$slots","$$events","$$legacy","open"]);var a=ne(),n=Q(a);ve(n,()=>kl,(s,o)=>{o(s,Ee(()=>i,{get open(){return t()},set open(c){t(c)}}))}),_(r,a),ge()}function hd(r,e){pe(e,!0);let t=he(e,"ref",15,null),i=Oe(e,["$$slots","$$events","$$legacy","ref"]);var a=ne(),n=Q(a);ve(n,()=>vl,(s,o)=>{o(s,Ee({"data-slot":"tooltip-trigger"},()=>i,{get ref(){return t()},set ref(c){t(c)}}))}),_(r,a),ge()}var fd=W('<div data-slot="progress-indicator" class="h-full w-full flex-1 bg-primary transition-all"></div>');function Co(r,e){pe(e,!0);let t=he(e,"ref",15,null),i=he(e,"max",3,100),a=Oe(e,["$$slots","$$events","$$legacy","ref","class","max","value"]);var n=ne(),s=Q(n);{let o=L(()=>xi("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",e.class));ve(s,()=>jl,(c,l)=>{l(c,Ee({"data-slot":"progress",get class(){return f(o)},get value(){return e.value},get max(){return i()}},()=>a,{get ref(){return t()},set ref(d){t(d)},children:(d,u)=>{var h=fd();fe(()=>bo(h,`transform: translateX(-${100-100*(e.value??0)/(i()??1)}%)`)),_(d,h)},$$slots:{default:!0}}))})}_(r,n),ge()}function y(r){if(!r)throw new Error("Assertion failed.")}const Hn=r=>{const e=(r%360+360)%360;if(e===0||e===90||e===180||e===270)return e;throw new Error(`Invalid rotation ${r}.`)},qe=r=>r&&r[r.length-1],Yr=r=>r>=0&&r<2**32;class We{constructor(e){this.bytes=e,this.pos=0}seekToByte(e){this.pos=8*e}readBit(){const e=Math.floor(this.pos/8),t=this.bytes[e]??0,i=7-(this.pos&7),a=(t&1<<i)>>i;return this.pos++,a}readBits(e){if(e===1)return this.readBit();let t=0;for(let i=0;i<e;i++)t<<=1,t|=this.readBit();return t}writeBits(e,t){const i=this.pos+e;for(let a=this.pos;a<i;a++){const n=Math.floor(a/8);let s=this.bytes[n];const o=7-(a&7);s&=~(1<<o),s|=(t&1<<i-a-1)>>i-a-1<<o,this.bytes[n]=s}this.pos=i}readAlignedByte(){if(this.pos%8!==0)throw new Error("Bitstream is not byte-aligned.");const e=this.pos/8,t=this.bytes[e]??0;return this.pos+=8,t}skipBits(e){this.pos+=e}getBitsLeft(){return this.bytes.length*8-this.pos}clone(){const e=new We(this.bytes);return e.pos=this.pos,e}}const X=r=>{let e=0;for(;r.readBits(1)===0&&e<32;)e++;if(e>=32)throw new Error("Invalid exponential-Golomb code.");return(1<<e)-1+r.readBits(e)},Qt=r=>{const e=X(r);return(e&1)===0?-(e>>1):e+1>>1},yt=r=>r.constructor===Uint8Array?r:ArrayBuffer.isView(r)?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):new Uint8Array(r),Ke=r=>r.constructor===DataView?r:ArrayBuffer.isView(r)?new DataView(r.buffer,r.byteOffset,r.byteLength):new DataView(r),St=new TextDecoder,Dt=new TextEncoder,jn=r=>Object.fromEntries(Object.entries(r).map(([e,t])=>[t,e])),Vi={bt709:1,bt470bg:5,smpte170m:6,bt2020:9,smpte432:12},ia=jn(Vi),Li={bt709:1,smpte170m:6,linear:8,"iec61966-2-1":13,pq:16,hlg:18},aa=jn(Li),Wi={rgb:0,bt709:1,bt470bg:5,smpte170m:6,"bt2020-ncl":9},na=jn(Wi),md=r=>!!r&&!!r.primaries&&!!r.transfer&&!!r.matrix&&r.fullRange!==void 0,xa=r=>r instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&r instanceof SharedArrayBuffer||ArrayBuffer.isView(r);class ii{constructor(){this.currentPromise=Promise.resolve(),this.pending=0}async acquire(){let e;const t=new Promise(a=>{let n=!1;e=()=>{n||(a(),this.pending--,n=!0)}}),i=this.currentPromise;return this.currentPromise=t,this.pending++,await i,e}}const _s=r=>[...r].map(e=>e.toString(16).padStart(2,"0")).join(""),Is=r=>(r=r>>1&1431655765|(r&1431655765)<<1,r=r>>2&858993459|(r&858993459)<<2,r=r>>4&252645135|(r&252645135)<<4,r=r>>8&16711935|(r&16711935)<<8,r=r>>16&65535|(r&65535)<<16,r>>>0),Hi=(r,e,t)=>{let i=0,a=r.length-1,n=-1;for(;i<=a;){const s=i+a>>1,o=t(r[s]);o===e?(n=s,a=s-1):o<e?i=s+1:a=s-1}return n},Fe=(r,e,t)=>{let i=0,a=r.length-1,n=-1;for(;i<=a;){const s=i+(a-i+1)/2|0;t(r[s])<=e?(n=s,i=s+1):a=s-1}return n},Es=(r,e,t)=>{const i=Fe(r,t(e),t);r.splice(i+1,0,e)},at=()=>{let r,e;return{promise:new Promise((i,a)=>{r=i,e=a}),resolve:r,reject:e}},_o=(r,e)=>{for(let t=r.length-1;t>=0;t--)if(e(r[t]))return r[t]},qn=(r,e)=>{for(let t=r.length-1;t>=0;t--)if(e(r[t]))return t;return-1},pd=async function*(r){Symbol.iterator in r?yield*r[Symbol.iterator]():yield*r[Symbol.asyncIterator]()},gd=r=>{if(!(Symbol.iterator in r)&&!(Symbol.asyncIterator in r))throw new TypeError("Argument must be an iterable or async iterable.")},dr=r=>{throw new Error(`Unexpected value: ${r}`)},Pa=(r,e,t)=>{const i=r.getUint8(e),a=r.getUint8(e+1),n=r.getUint8(e+2);return t?i|a<<8|n<<16:i<<16|a<<8|n},bd=(r,e,t)=>Pa(r,e,t)<<8>>8,Kn=(r,e,t,i)=>{t=t>>>0,t=t&16777215,i?(r.setUint8(e,t&255),r.setUint8(e+1,t>>>8&255),r.setUint8(e+2,t>>>16&255)):(r.setUint8(e,t>>>16&255),r.setUint8(e+1,t>>>8&255),r.setUint8(e+2,t&255))},yd=(r,e,t,i)=>{t=tt(t,-8388608,8388607),t<0&&(t=t+16777216&16777215),Kn(r,e,t,i)},As=(r,e)=>({async next(){const t=await r.next();return t.done?{value:void 0,done:!0}:{value:e(t.value),done:!1}},return(){return r.return()},throw(t){return r.throw(t)},[Symbol.asyncIterator](){return this}}),tt=(r,e,t)=>Math.max(e,Math.min(t,r)),bt="und",Ci=r=>{const e=Math.round(r);return Math.abs(r/e-1)<10*Number.EPSILON?e:r},wd=(r,e)=>Math.round(r/e)*e,za=(r,e)=>Math.floor(r/e)*e,kd=r=>{let e=0;for(;r;)e++,r>>=1;return e},vd=/^[a-z]{3}$/,_i=r=>vd.test(r),ir=1e6*(1+Number.EPSILON),Td=(r,e)=>{const t=r<0?-1:1;r=Math.abs(r);let i=0,a=1,n=1,s=0,o=r;for(;;){const c=Math.floor(o),l=c*n+i,d=c*s+a;if(d>e)return{numerator:t*n,denominator:s};if(i=n,a=s,n=l,s=d,o=1/(o-c),!isFinite(o))break}return{numerator:t*n,denominator:s}};class Ca{constructor(){this.currentPromise=Promise.resolve()}call(e){return this.currentPromise=this.currentPromise.then(e)}}let Da=null;const hi=()=>Da!==null?Da:Da=!!(typeof navigator<"u"&&(navigator.vendor?.match(/apple/i)||/AppleWebKit/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)||/\b(iPad|iPhone|iPod)\b/.test(navigator.userAgent)));let Ma=null;const $r=()=>Ma!==null?Ma:Ma=typeof navigator<"u"&&navigator.userAgent?.includes("Firefox");let Na=null;const ln=()=>Na!==null?Na:Na=!!(typeof navigator<"u"&&(navigator.vendor?.includes("Google Inc")||/Chrome/.test(navigator.userAgent)));let Oa=null;const Sd=()=>{if(Oa!==null)return Oa;if(typeof navigator>"u")return null;const r=/\bChrome\/(\d+)/.exec(navigator.userAgent);return r?Oa=Number(r[1]):null},Dr=(r,e)=>r!==-1?r:e,Fs=(r,e,t,i)=>r<=i&&t<=e,Io=function*(r){for(const e in r){const t=r[e];t!==void 0&&(yield{key:e,value:t})}},xd=r=>{const e=atob(r),t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t},Eo=()=>{Symbol.dispose??=Symbol("Symbol.dispose")},Ao=r=>typeof r=="number"&&!Number.isNaN(r);class jr{constructor(e,t){if(this.data=e,this.mimeType=t,!(e instanceof Uint8Array))throw new TypeError("data must be a Uint8Array.");if(typeof t!="string")throw new TypeError("mimeType must be a string.")}}class Fo{constructor(e,t,i,a){if(this.data=e,this.mimeType=t,this.name=i,this.description=a,!(e instanceof Uint8Array))throw new TypeError("data must be a Uint8Array.");if(t!==void 0&&typeof t!="string")throw new TypeError("mimeType, when provided, must be a string.");if(i!==void 0&&typeof i!="string")throw new TypeError("name, when provided, must be a string.");if(a!==void 0&&typeof a!="string")throw new TypeError("description, when provided, must be a string.")}}const dn=r=>{if(!r||typeof r!="object")throw new TypeError("tags must be an object.");if(r.title!==void 0&&typeof r.title!="string")throw new TypeError("tags.title, when provided, must be a string.");if(r.description!==void 0&&typeof r.description!="string")throw new TypeError("tags.description, when provided, must be a string.");if(r.artist!==void 0&&typeof r.artist!="string")throw new TypeError("tags.artist, when provided, must be a string.");if(r.album!==void 0&&typeof r.album!="string")throw new TypeError("tags.album, when provided, must be a string.");if(r.albumArtist!==void 0&&typeof r.albumArtist!="string")throw new TypeError("tags.albumArtist, when provided, must be a string.");if(r.trackNumber!==void 0&&(!Number.isInteger(r.trackNumber)||r.trackNumber<=0))throw new TypeError("tags.trackNumber, when provided, must be a positive integer.");if(r.tracksTotal!==void 0&&(!Number.isInteger(r.tracksTotal)||r.tracksTotal<=0))throw new TypeError("tags.tracksTotal, when provided, must be a positive integer.");if(r.discNumber!==void 0&&(!Number.isInteger(r.discNumber)||r.discNumber<=0))throw new TypeError("tags.discNumber, when provided, must be a positive integer.");if(r.discsTotal!==void 0&&(!Number.isInteger(r.discsTotal)||r.discsTotal<=0))throw new TypeError("tags.discsTotal, when provided, must be a positive integer.");if(r.genre!==void 0&&typeof r.genre!="string")throw new TypeError("tags.genre, when provided, must be a string.");if(r.date!==void 0&&(!(r.date instanceof Date)||Number.isNaN(r.date.getTime())))throw new TypeError("tags.date, when provided, must be a valid Date.");if(r.lyrics!==void 0&&typeof r.lyrics!="string")throw new TypeError("tags.lyrics, when provided, must be a string.");if(r.images!==void 0){if(!Array.isArray(r.images))throw new TypeError("tags.images, when provided, must be an array.");for(const e of r.images){if(!e||typeof e!="object")throw new TypeError("Each image in tags.images must be an object.");if(!(e.data instanceof Uint8Array))throw new TypeError("Each image.data must be a Uint8Array.");if(typeof e.mimeType!="string")throw new TypeError("Each image.mimeType must be a string.");if(!["coverFront","coverBack","unknown"].includes(e.kind))throw new TypeError("Each image.kind must be 'coverFront', 'coverBack', or 'unknown'.")}}if(r.comment!==void 0&&typeof r.comment!="string")throw new TypeError("tags.comment, when provided, must be a string.");if(r.raw!==void 0){if(!r.raw||typeof r.raw!="object")throw new TypeError("tags.raw, when provided, must be an object.");for(const e of Object.values(r.raw))if(e!==null&&typeof e!="string"&&!(e instanceof Uint8Array)&&!(e instanceof jr)&&!(e instanceof Fo))throw new TypeError("Each value in tags.raw must be a string, Uint8Array, RichImageData, AttachedFile, or null.")}},ur={default:!0,forced:!1,original:!1,commentary:!1,hearingImpaired:!1,visuallyImpaired:!1},Pd=r=>{if(!r||typeof r!="object")throw new TypeError("disposition must be an object.");if(r.default!==void 0&&typeof r.default!="boolean")throw new TypeError("disposition.default must be a boolean.");if(r.forced!==void 0&&typeof r.forced!="boolean")throw new TypeError("disposition.forced must be a boolean.");if(r.original!==void 0&&typeof r.original!="boolean")throw new TypeError("disposition.original must be a boolean.");if(r.commentary!==void 0&&typeof r.commentary!="boolean")throw new TypeError("disposition.commentary must be a boolean.");if(r.hearingImpaired!==void 0&&typeof r.hearingImpaired!="boolean")throw new TypeError("disposition.hearingImpaired must be a boolean.");if(r.visuallyImpaired!==void 0&&typeof r.visuallyImpaired!="boolean")throw new TypeError("disposition.visuallyImpaired must be a boolean.")};const Nt=["avc","hevc","vp9","av1","vp8"],ht=["pcm-s16","pcm-s16be","pcm-s24","pcm-s24be","pcm-s32","pcm-s32be","pcm-f32","pcm-f32be","pcm-f64","pcm-f64be","pcm-u8","pcm-s8","ulaw","alaw"],fi=["aac","opus","mp3","vorbis","flac"],Ot=[...fi,...ht],sa=["webvtt"],oa=[{maxMacroblocks:99,maxBitrate:64e3,maxDpbMbs:396,level:10},{maxMacroblocks:396,maxBitrate:192e3,maxDpbMbs:900,level:11},{maxMacroblocks:396,maxBitrate:384e3,maxDpbMbs:2376,level:12},{maxMacroblocks:396,maxBitrate:768e3,maxDpbMbs:2376,level:13},{maxMacroblocks:396,maxBitrate:2e6,maxDpbMbs:2376,level:20},{maxMacroblocks:792,maxBitrate:4e6,maxDpbMbs:4752,level:21},{maxMacroblocks:1620,maxBitrate:4e6,maxDpbMbs:8100,level:22},{maxMacroblocks:1620,maxBitrate:1e7,maxDpbMbs:8100,level:30},{maxMacroblocks:3600,maxBitrate:14e6,maxDpbMbs:18e3,level:31},{maxMacroblocks:5120,maxBitrate:2e7,maxDpbMbs:20480,level:32},{maxMacroblocks:8192,maxBitrate:2e7,maxDpbMbs:32768,level:40},{maxMacroblocks:8192,maxBitrate:5e7,maxDpbMbs:32768,level:41},{maxMacroblocks:8704,maxBitrate:5e7,maxDpbMbs:34816,level:42},{maxMacroblocks:22080,maxBitrate:135e6,maxDpbMbs:110400,level:50},{maxMacroblocks:36864,maxBitrate:24e7,maxDpbMbs:184320,level:51},{maxMacroblocks:36864,maxBitrate:24e7,maxDpbMbs:184320,level:52},{maxMacroblocks:139264,maxBitrate:24e7,maxDpbMbs:696320,level:60},{maxMacroblocks:139264,maxBitrate:48e7,maxDpbMbs:696320,level:61},{maxMacroblocks:139264,maxBitrate:8e8,maxDpbMbs:696320,level:62}],Bs=[{maxPictureSize:36864,maxBitrate:128e3,tier:"L",level:30},{maxPictureSize:122880,maxBitrate:15e5,tier:"L",level:60},{maxPictureSize:245760,maxBitrate:3e6,tier:"L",level:63},{maxPictureSize:552960,maxBitrate:6e6,tier:"L",level:90},{maxPictureSize:983040,maxBitrate:1e7,tier:"L",level:93},{maxPictureSize:2228224,maxBitrate:12e6,tier:"L",level:120},{maxPictureSize:2228224,maxBitrate:3e7,tier:"H",level:120},{maxPictureSize:2228224,maxBitrate:2e7,tier:"L",level:123},{maxPictureSize:2228224,maxBitrate:5e7,tier:"H",level:123},{maxPictureSize:8912896,maxBitrate:25e6,tier:"L",level:150},{maxPictureSize:8912896,maxBitrate:1e8,tier:"H",level:150},{maxPictureSize:8912896,maxBitrate:4e7,tier:"L",level:153},{maxPictureSize:8912896,maxBitrate:16e7,tier:"H",level:153},{maxPictureSize:8912896,maxBitrate:6e7,tier:"L",level:156},{maxPictureSize:8912896,maxBitrate:24e7,tier:"H",level:156},{maxPictureSize:35651584,maxBitrate:6e7,tier:"L",level:180},{maxPictureSize:35651584,maxBitrate:24e7,tier:"H",level:180},{maxPictureSize:35651584,maxBitrate:12e7,tier:"L",level:183},{maxPictureSize:35651584,maxBitrate:48e7,tier:"H",level:183},{maxPictureSize:35651584,maxBitrate:24e7,tier:"L",level:186},{maxPictureSize:35651584,maxBitrate:8e8,tier:"H",level:186}],ar=[{maxPictureSize:36864,maxBitrate:2e5,level:10},{maxPictureSize:73728,maxBitrate:8e5,level:11},{maxPictureSize:122880,maxBitrate:18e5,level:20},{maxPictureSize:245760,maxBitrate:36e5,level:21},{maxPictureSize:552960,maxBitrate:72e5,level:30},{maxPictureSize:983040,maxBitrate:12e6,level:31},{maxPictureSize:2228224,maxBitrate:18e6,level:40},{maxPictureSize:2228224,maxBitrate:3e7,level:41},{maxPictureSize:8912896,maxBitrate:6e7,level:50},{maxPictureSize:8912896,maxBitrate:12e7,level:51},{maxPictureSize:8912896,maxBitrate:18e7,level:52},{maxPictureSize:35651584,maxBitrate:18e7,level:60},{maxPictureSize:35651584,maxBitrate:24e7,level:61},{maxPictureSize:35651584,maxBitrate:48e7,level:62}],Rs=[{maxPictureSize:147456,maxBitrate:15e5,tier:"M",level:0},{maxPictureSize:278784,maxBitrate:3e6,tier:"M",level:1},{maxPictureSize:665856,maxBitrate:6e6,tier:"M",level:4},{maxPictureSize:1065024,maxBitrate:1e7,tier:"M",level:5},{maxPictureSize:2359296,maxBitrate:12e6,tier:"M",level:8},{maxPictureSize:2359296,maxBitrate:3e7,tier:"H",level:8},{maxPictureSize:2359296,maxBitrate:2e7,tier:"M",level:9},{maxPictureSize:2359296,maxBitrate:5e7,tier:"H",level:9},{maxPictureSize:8912896,maxBitrate:3e7,tier:"M",level:12},{maxPictureSize:8912896,maxBitrate:1e8,tier:"H",level:12},{maxPictureSize:8912896,maxBitrate:4e7,tier:"M",level:13},{maxPictureSize:8912896,maxBitrate:16e7,tier:"H",level:13},{maxPictureSize:8912896,maxBitrate:6e7,tier:"M",level:14},{maxPictureSize:8912896,maxBitrate:24e7,tier:"H",level:14},{maxPictureSize:35651584,maxBitrate:6e7,tier:"M",level:15},{maxPictureSize:35651584,maxBitrate:24e7,tier:"H",level:15},{maxPictureSize:35651584,maxBitrate:6e7,tier:"M",level:16},{maxPictureSize:35651584,maxBitrate:24e7,tier:"H",level:16},{maxPictureSize:35651584,maxBitrate:1e8,tier:"M",level:17},{maxPictureSize:35651584,maxBitrate:48e7,tier:"H",level:17},{maxPictureSize:35651584,maxBitrate:16e7,tier:"M",level:18},{maxPictureSize:35651584,maxBitrate:8e8,tier:"H",level:18},{maxPictureSize:35651584,maxBitrate:16e7,tier:"M",level:19},{maxPictureSize:35651584,maxBitrate:8e8,tier:"H",level:19}],zs=".01.01.01.01.00",Ds=".0.110.01.01.01.0",Cd=(r,e,t,i)=>{if(r==="avc"){const n=Math.ceil(e/16)*Math.ceil(t/16),s=oa.find(u=>n<=u.maxMacroblocks&&i<=u.maxBitrate)??qe(oa),o=s?s.level:0,c="64".padStart(2,"0"),l="00",d=o.toString(16).padStart(2,"0");return`avc1.${c}${l}${d}`}else if(r==="hevc"){const o=e*t,c=Bs.find(d=>o<=d.maxPictureSize&&i<=d.maxBitrate)??qe(Bs);return`hev1.1.6.${c.tier}${c.level}.B0`}else{if(r==="vp8")return"vp8";if(r==="vp9"){const n=e*t;return`vp09.00.${(ar.find(c=>n<=c.maxPictureSize&&i<=c.maxBitrate)??qe(ar)).level.toString().padStart(2,"0")}.08`}else if(r==="av1"){const n=e*t,s=Rs.find(l=>n<=l.maxPictureSize&&i<=l.maxBitrate)??qe(Rs);return`av01.0.${s.level.toString().padStart(2,"0")}${s.tier}.08`}}throw new TypeError(`Unhandled codec '${r}'.`)},_d=r=>{const e=r.split("."),a=(1<<7)+1,n=Number(e[1]),s=e[2],o=Number(s.slice(0,-1)),c=(n<<5)+o,l=s.slice(-1)==="H"?1:0,u=Number(e[3])===8?0:1,h=0,p=e[4]?Number(e[4]):0,m=e[5]?Number(e[5][0]):1,g=e[5]?Number(e[5][1]):1,b=e[5]?Number(e[5][2]):0,k=(l<<7)+(u<<6)+(h<<5)+(p<<4)+(m<<3)+(g<<2)+b;return[a,c,k,0]},Qn=r=>{const{codec:e,codecDescription:t,colorSpace:i,avcCodecInfo:a,hevcCodecInfo:n,vp9CodecInfo:s,av1CodecInfo:o}=r;if(e==="avc"){if(y(r.avcType!==null),a){const c=new Uint8Array([a.avcProfileIndication,a.profileCompatibility,a.avcLevelIndication]);return`avc${r.avcType}.${_s(c)}`}if(!t||t.byteLength<4)throw new TypeError("AVC decoder description is not provided or is not at least 4 bytes long.");return`avc${r.avcType}.${_s(t.subarray(1,4))}`}else if(e==="hevc"){let c,l,d,u,h,p;if(n)c=n.generalProfileSpace,l=n.generalProfileIdc,d=Is(n.generalProfileCompatibilityFlags),u=n.generalTierFlag,h=n.generalLevelIdc,p=[...n.generalConstraintIndicatorFlags];else{if(!t||t.byteLength<23)throw new TypeError("HEVC decoder description is not provided or is not at least 23 bytes long.");const g=Ke(t),b=g.getUint8(1);c=b>>6&3,l=b&31,d=Is(g.getUint32(2)),u=b>>5&1,h=g.getUint8(12),p=[];for(let k=0;k<6;k++)p.push(g.getUint8(6+k))}let m="hev1.";for(m+=["","A","B","C"][c]+l,m+=".",m+=d.toString(16).toUpperCase(),m+=".",m+=u===0?"L":"H",m+=h;p.length>0&&p[p.length-1]===0;)p.pop();return p.length>0&&(m+=".",m+=p.map(g=>g.toString(16).toUpperCase()).join(".")),m}else{if(e==="vp8")return"vp8";if(e==="vp9"){if(!s){const k=r.width*r.height;let w=qe(ar).level;for(const T of ar)if(k<=T.maxPictureSize){w=T.level;break}return`vp09.00.${w.toString().padStart(2,"0")}.08`}const c=s.profile.toString().padStart(2,"0"),l=s.level.toString().padStart(2,"0"),d=s.bitDepth.toString().padStart(2,"0"),u=s.chromaSubsampling.toString().padStart(2,"0"),h=s.colourPrimaries.toString().padStart(2,"0"),p=s.transferCharacteristics.toString().padStart(2,"0"),m=s.matrixCoefficients.toString().padStart(2,"0"),g=s.videoFullRangeFlag.toString().padStart(2,"0");let b=`vp09.${c}.${l}.${d}.${u}`;return b+=`.${h}.${p}.${m}.${g}`,b.endsWith(zs)&&(b=b.slice(0,-zs.length)),b}else if(e==="av1"){if(!o){const T=r.width*r.height;let S=qe(ar).level;for(const C of ar)if(T<=C.maxPictureSize){S=C.level;break}return`av01.0.${S.toString().padStart(2,"0")}M.08`}const c=o.profile,l=o.level.toString().padStart(2,"0"),d=o.tier?"H":"M",u=o.bitDepth.toString().padStart(2,"0"),h=o.monochrome?"1":"0",p=100*o.chromaSubsamplingX+10*o.chromaSubsamplingY+1*(o.chromaSubsamplingX&&o.chromaSubsamplingY?o.chromaSamplePosition:0),m=i?.primaries?Vi[i.primaries]:1,g=i?.transfer?Li[i.transfer]:1,b=i?.matrix?Wi[i.matrix]:1,k=i?.fullRange?1:0;let w=`av01.${c}.${l}${d}.${u}`;return w+=`.${h}.${p.toString().padStart(3,"0")}`,w+=`.${m.toString().padStart(2,"0")}`,w+=`.${g.toString().padStart(2,"0")}`,w+=`.${b.toString().padStart(2,"0")}`,w+=`.${k}`,w.endsWith(Ds)&&(w=w.slice(0,-Ds.length)),w}}throw new TypeError(`Unhandled codec '${e}'.`)},Id=(r,e,t)=>{if(r==="aac")return e>=2&&t<=24e3?"mp4a.40.29":t<=24e3?"mp4a.40.5":"mp4a.40.2";if(r==="mp3")return"mp3";if(r==="opus")return"opus";if(r==="vorbis")return"vorbis";if(r==="flac")return"flac";if(ht.includes(r))return r;throw new TypeError(`Unhandled codec '${r}'.`)},Gn=r=>{const{codec:e,codecDescription:t,aacCodecInfo:i}=r;if(e==="aac"){if(!i)throw new TypeError("AAC codec info must be provided.");if(i.isMpeg2)return"mp4a.67";{let a;return i.objectType!==null?a=i.objectType:a=Xn(t).objectType,`mp4a.40.${a}`}}else{if(e==="mp3")return"mp3";if(e==="opus")return"opus";if(e==="vorbis")return"vorbis";if(e==="flac")return"flac";if(e&&ht.includes(e))return e}throw new TypeError(`Unhandled codec '${e}'.`)},Pr=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],ji=[-1,1,2,3,4,5,6,8],Xn=r=>{if(!r||r.byteLength<2)throw new TypeError("AAC description must be at least 2 bytes long.");const e=new We(r);let t=e.readBits(5);t===31&&(t=32+e.readBits(6));const i=e.readBits(4);let a=null;i===15?a=e.readBits(24):i<Pr.length&&(a=Pr[i]);const n=e.readBits(4);let s=null;return n>=1&&n<=7&&(s=ji[n]),{objectType:t,frequencyIndex:i,sampleRate:a,channelConfiguration:n,numberOfChannels:s}},Bo=r=>{let e=Pr.indexOf(r.sampleRate),t=null;e===-1&&(e=15,t=r.sampleRate);const i=ji.indexOf(r.numberOfChannels);if(i===-1)throw new TypeError(`Unsupported number of channels: ${r.numberOfChannels}`);let a=13;r.objectType>=32&&(a+=6),e===15&&(a+=24);const n=Math.ceil(a/8),s=new Uint8Array(n),o=new We(s);return r.objectType<32?o.writeBits(5,r.objectType):(o.writeBits(5,31),o.writeBits(6,r.objectType-32)),o.writeBits(4,e),e===15&&o.writeBits(24,t),o.writeBits(4,i),s},_a=48e3,Ro=/^pcm-([usf])(\d+)+(be)?$/,hr=r=>{if(y(ht.includes(r)),r==="ulaw")return{dataType:"ulaw",sampleSize:1,littleEndian:!0,silentValue:255};if(r==="alaw")return{dataType:"alaw",sampleSize:1,littleEndian:!0,silentValue:213};const e=Ro.exec(r);y(e);let t;e[1]==="u"?t="unsigned":e[1]==="s"?t="signed":t="float";const i=Number(e[2])/8,a=e[3]!=="be",n=r==="pcm-u8"?2**7:0;return{dataType:t,sampleSize:i,littleEndian:a,silentValue:n}},zo=r=>r.startsWith("avc1")||r.startsWith("avc3")?"avc":r.startsWith("hev1")||r.startsWith("hvc1")?"hevc":r==="vp8"?"vp8":r.startsWith("vp09")?"vp9":r.startsWith("av01")?"av1":r.startsWith("mp4a.40")||r==="mp4a.67"?"aac":r==="mp3"||r==="mp4a.69"||r==="mp4a.6B"||r==="mp4a.6b"?"mp3":r==="opus"?"opus":r==="vorbis"?"vorbis":r==="flac"?"flac":r==="ulaw"?"ulaw":r==="alaw"?"alaw":Ro.test(r)?r:r==="webvtt"?"webvtt":null,Ed=r=>r==="avc"?{avc:{format:"avc"}}:r==="hevc"?{hevc:{format:"hevc"}}:{},Ad=r=>r==="aac"?{aac:{format:"aac"}}:r==="opus"?{opus:{format:"opus"}}:{},Fd=["avc1","avc3","hev1","hvc1","vp8","vp09","av01"],Bd=/^(avc1|avc3)\.[0-9a-fA-F]{6}$/,Rd=/^(hev1|hvc1)\.(?:[ABC]?\d+)\.[0-9a-fA-F]{1,8}\.[LH]\d+(?:\.[0-9a-fA-F]{1,2}){0,6}$/,zd=/^vp09(?:\.\d{2}){3}(?:(?:\.\d{2}){5})?$/,Dd=/^av01\.\d\.\d{2}[MH]\.\d{2}(?:\.\d\.\d{3}\.\d{2}\.\d{2}\.\d{2}\.\d)?$/,Md=r=>{if(!r)throw new TypeError("Video chunk metadata must be provided.");if(typeof r!="object")throw new TypeError("Video chunk metadata must be an object.");if(!r.decoderConfig)throw new TypeError("Video chunk metadata must include a decoder configuration.");if(typeof r.decoderConfig!="object")throw new TypeError("Video chunk metadata decoder configuration must be an object.");if(typeof r.decoderConfig.codec!="string")throw new TypeError("Video chunk metadata decoder configuration must specify a codec string.");if(!Fd.some(e=>r.decoderConfig.codec.startsWith(e)))throw new TypeError("Video chunk metadata decoder configuration codec string must be a valid video codec string as specified in the WebCodecs Codec Registry.");if(!Number.isInteger(r.decoderConfig.codedWidth)||r.decoderConfig.codedWidth<=0)throw new TypeError("Video chunk metadata decoder configuration must specify a valid codedWidth (positive integer).");if(!Number.isInteger(r.decoderConfig.codedHeight)||r.decoderConfig.codedHeight<=0)throw new TypeError("Video chunk metadata decoder configuration must specify a valid codedHeight (positive integer).");if(r.decoderConfig.description!==void 0&&!xa(r.decoderConfig.description))throw new TypeError("Video chunk metadata decoder configuration description, when defined, must be an ArrayBuffer or an ArrayBuffer view.");if(r.decoderConfig.colorSpace!==void 0){const{colorSpace:e}=r.decoderConfig;if(typeof e!="object")throw new TypeError("Video chunk metadata decoder configuration colorSpace, when provided, must be an object.");const t=Object.keys(Vi);if(e.primaries!=null&&!t.includes(e.primaries))throw new TypeError(`Video chunk metadata decoder configuration colorSpace primaries, when defined, must be one of ${t.join(", ")}.`);const i=Object.keys(Li);if(e.transfer!=null&&!i.includes(e.transfer))throw new TypeError(`Video chunk metadata decoder configuration colorSpace transfer, when defined, must be one of ${i.join(", ")}.`);const a=Object.keys(Wi);if(e.matrix!=null&&!a.includes(e.matrix))throw new TypeError(`Video chunk metadata decoder configuration colorSpace matrix, when defined, must be one of ${a.join(", ")}.`);if(e.fullRange!=null&&typeof e.fullRange!="boolean")throw new TypeError("Video chunk metadata decoder configuration colorSpace fullRange, when defined, must be a boolean.")}if(r.decoderConfig.codec.startsWith("avc1")||r.decoderConfig.codec.startsWith("avc3")){if(!Bd.test(r.decoderConfig.codec))throw new TypeError("Video chunk metadata decoder configuration codec string for AVC must be a valid AVC codec string as specified in Section 3.4 of RFC 6381.")}else if(r.decoderConfig.codec.startsWith("hev1")||r.decoderConfig.codec.startsWith("hvc1")){if(!Rd.test(r.decoderConfig.codec))throw new TypeError("Video chunk metadata decoder configuration codec string for HEVC must be a valid HEVC codec string as specified in Section E.3 of ISO 14496-15.")}else if(r.decoderConfig.codec.startsWith("vp8")){if(r.decoderConfig.codec!=="vp8")throw new TypeError('Video chunk metadata decoder configuration codec string for VP8 must be "vp8".')}else if(r.decoderConfig.codec.startsWith("vp09")){if(!zd.test(r.decoderConfig.codec))throw new TypeError('Video chunk metadata decoder configuration codec string for VP9 must be a valid VP9 codec string as specified in Section "Codecs Parameter String" of https://www.webmproject.org/vp9/mp4/.')}else if(r.decoderConfig.codec.startsWith("av01")&&!Dd.test(r.decoderConfig.codec))throw new TypeError('Video chunk metadata decoder configuration codec string for AV1 must be a valid AV1 codec string as specified in Section "Codecs Parameter String" of https://aomediacodec.github.io/av1-isobmff/.')},Nd=["mp4a","mp3","opus","vorbis","flac","ulaw","alaw","pcm"],Od=r=>{if(!r)throw new TypeError("Audio chunk metadata must be provided.");if(typeof r!="object")throw new TypeError("Audio chunk metadata must be an object.");if(!r.decoderConfig)throw new TypeError("Audio chunk metadata must include a decoder configuration.");if(typeof r.decoderConfig!="object")throw new TypeError("Audio chunk metadata decoder configuration must be an object.");if(typeof r.decoderConfig.codec!="string")throw new TypeError("Audio chunk metadata decoder configuration must specify a codec string.");if(!Nd.some(e=>r.decoderConfig.codec.startsWith(e)))throw new TypeError("Audio chunk metadata decoder configuration codec string must be a valid audio codec string as specified in the WebCodecs Codec Registry.");if(!Number.isInteger(r.decoderConfig.sampleRate)||r.decoderConfig.sampleRate<=0)throw new TypeError("Audio chunk metadata decoder configuration must specify a valid sampleRate (positive integer).");if(!Number.isInteger(r.decoderConfig.numberOfChannels)||r.decoderConfig.numberOfChannels<=0)throw new TypeError("Audio chunk metadata decoder configuration must specify a valid numberOfChannels (positive integer).");if(r.decoderConfig.description!==void 0&&!xa(r.decoderConfig.description))throw new TypeError("Audio chunk metadata decoder configuration description, when defined, must be an ArrayBuffer or an ArrayBuffer view.");if(r.decoderConfig.codec.startsWith("mp4a")&&r.decoderConfig.codec!=="mp4a.69"&&r.decoderConfig.codec!=="mp4a.6B"&&r.decoderConfig.codec!=="mp4a.6b"){if(!["mp4a.40.2","mp4a.40.02","mp4a.40.5","mp4a.40.05","mp4a.40.29","mp4a.67"].includes(r.decoderConfig.codec))throw new TypeError("Audio chunk metadata decoder configuration codec string for AAC must be a valid AAC codec string as specified in https://www.w3.org/TR/webcodecs-aac-codec-registration/.")}else if(r.decoderConfig.codec.startsWith("mp3")||r.decoderConfig.codec.startsWith("mp4a")){if(r.decoderConfig.codec!=="mp3"&&r.decoderConfig.codec!=="mp4a.69"&&r.decoderConfig.codec!=="mp4a.6B"&&r.decoderConfig.codec!=="mp4a.6b")throw new TypeError('Audio chunk metadata decoder configuration codec string for MP3 must be "mp3", "mp4a.69" or "mp4a.6B".')}else if(r.decoderConfig.codec.startsWith("opus")){if(r.decoderConfig.codec!=="opus")throw new TypeError('Audio chunk metadata decoder configuration codec string for Opus must be "opus".');if(r.decoderConfig.description&&r.decoderConfig.description.byteLength<18)throw new TypeError("Audio chunk metadata decoder configuration description, when specified, is expected to be an Identification Header as specified in Section 5.1 of RFC 7845.")}else if(r.decoderConfig.codec.startsWith("vorbis")){if(r.decoderConfig.codec!=="vorbis")throw new TypeError('Audio chunk metadata decoder configuration codec string for Vorbis must be "vorbis".');if(!r.decoderConfig.description)throw new TypeError("Audio chunk metadata decoder configuration for Vorbis must include a description, which is expected to adhere to the format described in https://www.w3.org/TR/webcodecs-vorbis-codec-registration/.")}else if(r.decoderConfig.codec.startsWith("flac")){if(r.decoderConfig.codec!=="flac")throw new TypeError('Audio chunk metadata decoder configuration codec string for FLAC must be "flac".');if(!r.decoderConfig.description||r.decoderConfig.description.byteLength<42)throw new TypeError("Audio chunk metadata decoder configuration for FLAC must include a description, which is expected to adhere to the format described in https://www.w3.org/TR/webcodecs-flac-codec-registration/.")}else if((r.decoderConfig.codec.startsWith("pcm")||r.decoderConfig.codec.startsWith("ulaw")||r.decoderConfig.codec.startsWith("alaw"))&&!ht.includes(r.decoderConfig.codec))throw new TypeError(`Audio chunk metadata decoder configuration codec string for PCM must be one of the supported PCM codecs (${ht.join(", ")}).`)},Ud=r=>{if(!r)throw new TypeError("Subtitle metadata must be provided.");if(typeof r!="object")throw new TypeError("Subtitle metadata must be an object.");if(!r.config)throw new TypeError("Subtitle metadata must include a config object.");if(typeof r.config!="object")throw new TypeError("Subtitle metadata config must be an object.");if(typeof r.config.description!="string")throw new TypeError("Subtitle metadata config description must be a string.")};class Vd{constructor(e){this.mutex=new ii,this.firstMediaStreamTimestamp=null,this.trackTimestampInfo=new WeakMap,this.output=e}onTrackClose(e){}validateAndNormalizeTimestamp(e,t,i){t+=e.source._timestampOffset;let a=this.trackTimestampInfo.get(e);if(!a){if(!i)throw new Error("First packet must be a key packet.");a={maxTimestamp:t,maxTimestampBeforeLastKeyPacket:t},this.trackTimestampInfo.set(e,a)}if(t<0)throw new Error(`Timestamps must be non-negative (got ${t}s).`);if(i&&(a.maxTimestampBeforeLastKeyPacket=a.maxTimestamp),t<a.maxTimestampBeforeLastKeyPacket)throw new Error(`Timestamps cannot be smaller than the largest timestamp of the previous GOP (a GOP begins with a key packet and ends right before the next key packet). Got ${t}s, but largest timestamp is ${a.maxTimestampBeforeLastKeyPacket}s.`);return a.maxTimestamp=Math.max(a.maxTimestamp,t),t}}var Mt;(function(r){r[r.NON_IDR_SLICE=1]="NON_IDR_SLICE",r[r.SLICE_DPA=2]="SLICE_DPA",r[r.SLICE_DPB=3]="SLICE_DPB",r[r.SLICE_DPC=4]="SLICE_DPC",r[r.IDR=5]="IDR",r[r.SEI=6]="SEI",r[r.SPS=7]="SPS",r[r.PPS=8]="PPS",r[r.AUD=9]="AUD",r[r.SPS_EXT=13]="SPS_EXT"})(Mt||(Mt={}));var nt;(function(r){r[r.RASL_N=8]="RASL_N",r[r.RASL_R=9]="RASL_R",r[r.BLA_W_LP=16]="BLA_W_LP",r[r.RSV_IRAP_VCL23=23]="RSV_IRAP_VCL23",r[r.VPS_NUT=32]="VPS_NUT",r[r.SPS_NUT=33]="SPS_NUT",r[r.PPS_NUT=34]="PPS_NUT",r[r.AUD_NUT=35]="AUD_NUT",r[r.PREFIX_SEI_NUT=39]="PREFIX_SEI_NUT",r[r.SUFFIX_SEI_NUT=40]="SUFFIX_SEI_NUT"})(nt||(nt={}));const qi=function*(r){let e=0,t=-1;for(;e<r.length-2;){const i=r.indexOf(0,e);if(i===-1||i>=r.length-2)break;e=i;let a=0;if(e+3<r.length&&r[e+1]===0&&r[e+2]===0&&r[e+3]===1?a=4:r[e+1]===0&&r[e+2]===1&&(a=3),a===0){e++;continue}t!==-1&&e>t&&(yield{offset:t,length:e-t}),t=e+a,e=t}t!==-1&&t<r.length&&(yield{offset:t,length:r.length-t})},Do=function*(r,e){let t=0;const i=new DataView(r.buffer,r.byteOffset,r.byteLength);for(;t+e<=r.length;){let a;e===1?a=i.getUint8(t):e===2?a=i.getUint16(t,!1):e===3?a=Pa(i,t,!1):(y(e===4),a=i.getUint32(t,!1)),t+=e,yield{offset:t,length:a},t+=a}},Mo=(r,e)=>{if(e.description){const a=(yt(e.description)[4]&3)+1;return Do(r,a)}else return qi(r)},Ia=r=>r&31,Ea=r=>{const e=[],t=r.length;for(let i=0;i<t;i++)i+2<t&&r[i]===0&&r[i+1]===0&&r[i+2]===3?(e.push(0,0),i+=2):e.push(r[i]);return new Uint8Array(e)},Ua=new Uint8Array([0,0,0,1]),Ld=r=>{const e=r.reduce((a,n)=>a+Ua.byteLength+n.byteLength,0),t=new Uint8Array(e);let i=0;for(const a of r)t.set(Ua,i),i+=Ua.byteLength,t.set(a,i),i+=a.byteLength;return t},No=(r,e)=>{const t=r.reduce((n,s)=>n+e+s.byteLength,0),i=new Uint8Array(t);let a=0;for(const n of r){const s=new DataView(i.buffer,i.byteOffset,i.byteLength);switch(e){case 1:s.setUint8(a,n.byteLength);break;case 2:s.setUint16(a,n.byteLength,!1);break;case 3:Kn(s,a,n.byteLength,!1);break;case 4:s.setUint32(a,n.byteLength,!1);break}a+=e,i.set(n,a),a+=n.byteLength}return i},Wd=(r,e)=>{if(e.description){const a=(yt(e.description)[4]&3)+1;return No(r,a)}else return Ld(r)},Yn=r=>{try{const e=[],t=[],i=[];for(const o of qi(r)){const c=r.subarray(o.offset,o.offset+o.length),l=Ia(c[0]);l===Mt.SPS?e.push(c):l===Mt.PPS?t.push(c):l===Mt.SPS_EXT&&i.push(c)}if(e.length===0||t.length===0)return null;const a=e[0],n=$n(a);y(n!==null);const s=n.profileIdc===100||n.profileIdc===110||n.profileIdc===122||n.profileIdc===144;return{configurationVersion:1,avcProfileIndication:n.profileIdc,profileCompatibility:n.constraintFlags,avcLevelIndication:n.levelIdc,lengthSizeMinusOne:3,sequenceParameterSets:e,pictureParameterSets:t,chromaFormat:s?n.chromaFormatIdc:null,bitDepthLumaMinus8:s?n.bitDepthLumaMinus8:null,bitDepthChromaMinus8:s?n.bitDepthChromaMinus8:null,sequenceParameterSetExt:s?i:null}}catch(e){return console.error("Error building AVC Decoder Configuration Record:",e),null}},Hd=r=>{const e=[];e.push(r.configurationVersion),e.push(r.avcProfileIndication),e.push(r.profileCompatibility),e.push(r.avcLevelIndication),e.push(252|r.lengthSizeMinusOne&3),e.push(224|r.sequenceParameterSets.length&31);for(const t of r.sequenceParameterSets){const i=t.byteLength;e.push(i>>8),e.push(i&255);for(let a=0;a<i;a++)e.push(t[a])}e.push(r.pictureParameterSets.length);for(const t of r.pictureParameterSets){const i=t.byteLength;e.push(i>>8),e.push(i&255);for(let a=0;a<i;a++)e.push(t[a])}if(r.avcProfileIndication===100||r.avcProfileIndication===110||r.avcProfileIndication===122||r.avcProfileIndication===144){y(r.chromaFormat!==null),y(r.bitDepthLumaMinus8!==null),y(r.bitDepthChromaMinus8!==null),y(r.sequenceParameterSetExt!==null),e.push(252|r.chromaFormat&3),e.push(248|r.bitDepthLumaMinus8&7),e.push(248|r.bitDepthChromaMinus8&7),e.push(r.sequenceParameterSetExt.length);for(const t of r.sequenceParameterSetExt){const i=t.byteLength;e.push(i>>8),e.push(i&255);for(let a=0;a<i;a++)e.push(t[a])}}return new Uint8Array(e)},jd=r=>{try{const e=Ke(r);let t=0;const i=e.getUint8(t++),a=e.getUint8(t++),n=e.getUint8(t++),s=e.getUint8(t++),o=e.getUint8(t++)&3,c=e.getUint8(t++)&31,l=[];for(let p=0;p<c;p++){const m=e.getUint16(t,!1);t+=2,l.push(r.subarray(t,t+m)),t+=m}const d=e.getUint8(t++),u=[];for(let p=0;p<d;p++){const m=e.getUint16(t,!1);t+=2,u.push(r.subarray(t,t+m)),t+=m}const h={configurationVersion:i,avcProfileIndication:a,profileCompatibility:n,avcLevelIndication:s,lengthSizeMinusOne:o,sequenceParameterSets:l,pictureParameterSets:u,chromaFormat:null,bitDepthLumaMinus8:null,bitDepthChromaMinus8:null,sequenceParameterSetExt:null};if((a===100||a===110||a===122||a===144)&&t+4<=r.length){const p=e.getUint8(t++)&3,m=e.getUint8(t++)&7,g=e.getUint8(t++)&7,b=e.getUint8(t++);h.chromaFormat=p,h.bitDepthLumaMinus8=m,h.bitDepthChromaMinus8=g;const k=[];for(let w=0;w<b;w++){const T=e.getUint16(t,!1);t+=2,k.push(r.subarray(t,t+T)),t+=T}h.sequenceParameterSetExt=k}return h}catch(e){return console.error("Error deserializing AVC Decoder Configuration Record:",e),null}},$n=r=>{try{const e=new We(Ea(r));if(e.skipBits(1),e.skipBits(2),e.readBits(5)!==7)return null;const i=e.readAlignedByte(),a=e.readAlignedByte(),n=e.readAlignedByte();X(e);let s=1,o=0,c=0,l=0;if((i===100||i===110||i===122||i===244||i===44||i===83||i===86||i===118||i===128)&&(s=X(e),s===3&&(l=e.readBits(1)),o=X(e),c=X(e),e.skipBits(1),e.readBits(1))){for(let x=0;x<(s!==3?8:12);x++)if(e.readBits(1)){const U=x<6?16:64;let V=8,H=8;for(let D=0;D<U;D++){if(H!==0){const E=Qt(e);H=(V+E+256)%256}V=H===0?V:H}}}X(e);const d=X(e);if(d===0)X(e);else if(d===1){e.skipBits(1),Qt(e),Qt(e);const A=X(e);for(let x=0;x<A;x++)Qt(e)}X(e),e.skipBits(1);const u=X(e),h=X(e),p=16*(u+1),m=16*(h+1);let g=p,b=m;const k=e.readBits(1);if(k||e.skipBits(1),e.skipBits(1),e.readBits(1)){const A=X(e),x=X(e),F=X(e),U=X(e);let V,H;if((l===0?s:0)===0)V=1,H=2-k;else{const E=s===3?1:2,j=s===1?2:1;V=E,H=j*(2-k)}g-=V*(A+x),b-=H*(F+U)}let T=2,S=2,C=2,P=0,B=null,I=null;if(e.readBits(1)){e.readBits(1)&&e.readBits(8)===255&&(e.skipBits(16),e.skipBits(16)),e.readBits(1)&&e.skipBits(1),e.readBits(1)&&(e.skipBits(3),P=e.readBits(1),e.readBits(1)&&(T=e.readBits(8),S=e.readBits(8),C=e.readBits(8))),e.readBits(1)&&(X(e),X(e)),e.readBits(1)&&(e.skipBits(32),e.skipBits(32),e.skipBits(1));const H=e.readBits(1);H&&Ms(e);const D=e.readBits(1);D&&Ms(e),(H||D)&&e.skipBits(1),e.skipBits(1),e.readBits(1)&&(e.skipBits(1),X(e),X(e),X(e),X(e),B=X(e),I=X(e))}if(B===null){y(I===null);const A=a&16;if((i===44||i===86||i===100||i===110||i===122||i===244)&&A)B=0,I=0;else{const x=u+1,F=h+1,U=(2-k)*F,V=oa.find(D=>D.level>=n)??qe(oa),H=Math.min(Math.floor(V.maxDpbMbs/(x*U)),16);B=H,I=H}}return y(I!==null),{profileIdc:i,constraintFlags:a,levelIdc:n,frameMbsOnlyFlag:k,chromaFormatIdc:s,bitDepthLumaMinus8:o,bitDepthChromaMinus8:c,codedWidth:p,codedHeight:m,displayWidth:g,displayHeight:b,colourPrimaries:T,matrixCoefficients:C,transferCharacteristics:S,fullRangeFlag:P,numReorderFrames:B,maxDecFrameBuffering:I}}catch(e){return console.error("Error parsing AVC SPS:",e),null}},Ms=r=>{const e=X(r);r.skipBits(4),r.skipBits(4);for(let t=0;t<=e;t++)X(r),X(r),r.skipBits(1);r.skipBits(5),r.skipBits(5),r.skipBits(5),r.skipBits(5)},Oo=(r,e)=>{if(e.description){const a=(yt(e.description)[21]&3)+1;return Do(r,a)}else return qi(r)},Ii=r=>r>>1&63,Uo=r=>{try{const e=new We(Ea(r));e.skipBits(16),e.readBits(4);const t=e.readBits(3),i=e.readBits(1),{general_profile_space:a,general_tier_flag:n,general_profile_idc:s,general_profile_compatibility_flags:o,general_constraint_indicator_flags:c,general_level_idc:l}=qd(e,t);X(e);const d=X(e);let u=0;d===3&&(u=e.readBits(1));const h=X(e),p=X(e);let m=h,g=p;if(e.readBits(1)){const x=X(e),F=X(e),U=X(e),V=X(e);let H=1,D=1;const E=u===0?d:0;E===1?(H=2,D=2):E===2&&(H=2,D=1),m-=(x+F)*H,g-=(U+V)*D}const b=X(e),k=X(e);X(e);const T=e.readBits(1)?0:t;let S=0;for(let x=T;x<=t;x++)X(e),S=X(e),X(e);X(e),X(e),X(e),X(e),X(e),X(e),e.readBits(1)&&e.readBits(1)&&Kd(e),e.skipBits(1),e.skipBits(1),e.readBits(1)&&(e.skipBits(4),e.skipBits(4),X(e),X(e),e.skipBits(1));const C=X(e);if(Qd(e,C),e.readBits(1)){const x=X(e);for(let F=0;F<x;F++)X(e),e.skipBits(1)}e.skipBits(1),e.skipBits(1);let P=2,B=2,I=2,R=0,A=0;if(e.readBits(1)){const x=Xd(e,t);P=x.colourPrimaries,B=x.transferCharacteristics,I=x.matrixCoefficients,R=x.fullRangeFlag,A=x.minSpatialSegmentationIdc}return{displayWidth:m,displayHeight:g,colourPrimaries:P,transferCharacteristics:B,matrixCoefficients:I,fullRangeFlag:R,maxDecFrameBuffering:S+1,spsMaxSubLayersMinus1:t,spsTemporalIdNestingFlag:i,generalProfileSpace:a,generalTierFlag:n,generalProfileIdc:s,generalProfileCompatibilityFlags:o,generalConstraintIndicatorFlags:c,generalLevelIdc:l,chromaFormatIdc:d,bitDepthLumaMinus8:b,bitDepthChromaMinus8:k,minSpatialSegmentationIdc:A}}catch(e){return console.error("Error parsing HEVC SPS:",e),null}},Zn=r=>{try{const e=[],t=[],i=[],a=[];for(const l of qi(r)){const d=r.subarray(l.offset,l.offset+l.length),u=Ii(d[0]);u===nt.VPS_NUT?e.push(d):u===nt.SPS_NUT?t.push(d):u===nt.PPS_NUT?i.push(d):(u===nt.PREFIX_SEI_NUT||u===nt.SUFFIX_SEI_NUT)&&a.push(d)}if(t.length===0||i.length===0)return null;const n=Uo(t[0]);if(!n)return null;let s=0;if(i.length>0){const l=i[0],d=new We(Ea(l));d.skipBits(16),X(d),X(d),d.skipBits(1),d.skipBits(1),d.skipBits(3),d.skipBits(1),d.skipBits(1),X(d),X(d),Qt(d),d.skipBits(1),d.skipBits(1),d.readBits(1)&&X(d),Qt(d),Qt(d),d.skipBits(1),d.skipBits(1),d.skipBits(1),d.skipBits(1);const u=d.readBits(1),h=d.readBits(1);!u&&!h?s=0:u&&!h?s=2:!u&&h?s=3:s=0}const o=[...e.length?[{arrayCompleteness:1,nalUnitType:nt.VPS_NUT,nalUnits:e}]:[],...t.length?[{arrayCompleteness:1,nalUnitType:nt.SPS_NUT,nalUnits:t}]:[],...i.length?[{arrayCompleteness:1,nalUnitType:nt.PPS_NUT,nalUnits:i}]:[],...a.length?[{arrayCompleteness:1,nalUnitType:Ii(a[0][0]),nalUnits:a}]:[]];return{configurationVersion:1,generalProfileSpace:n.generalProfileSpace,generalTierFlag:n.generalTierFlag,generalProfileIdc:n.generalProfileIdc,generalProfileCompatibilityFlags:n.generalProfileCompatibilityFlags,generalConstraintIndicatorFlags:n.generalConstraintIndicatorFlags,generalLevelIdc:n.generalLevelIdc,minSpatialSegmentationIdc:n.minSpatialSegmentationIdc,parallelismType:s,chromaFormatIdc:n.chromaFormatIdc,bitDepthLumaMinus8:n.bitDepthLumaMinus8,bitDepthChromaMinus8:n.bitDepthChromaMinus8,avgFrameRate:0,constantFrameRate:0,numTemporalLayers:n.spsMaxSubLayersMinus1+1,temporalIdNested:n.spsTemporalIdNestingFlag,lengthSizeMinusOne:3,arrays:o}}catch(e){return console.error("Error building HEVC Decoder Configuration Record:",e),null}},qd=(r,e)=>{const t=r.readBits(2),i=r.readBits(1),a=r.readBits(5);let n=0;for(let d=0;d<32;d++)n=n<<1|r.readBits(1);const s=new Uint8Array(6);for(let d=0;d<6;d++)s[d]=r.readBits(8);const o=r.readBits(8),c=[],l=[];for(let d=0;d<e;d++)c.push(r.readBits(1)),l.push(r.readBits(1));if(e>0)for(let d=e;d<8;d++)r.skipBits(2);for(let d=0;d<e;d++)c[d]&&r.skipBits(88),l[d]&&r.skipBits(8);return{general_profile_space:t,general_tier_flag:i,general_profile_idc:a,general_profile_compatibility_flags:n,general_constraint_indicator_flags:s,general_level_idc:o}},Kd=r=>{for(let e=0;e<4;e++)for(let t=0;t<(e===3?2:6);t++)if(!r.readBits(1))X(r);else{const a=Math.min(64,1<<4+(e<<1));e>1&&Qt(r);for(let n=0;n<a;n++)Qt(r)}},Qd=(r,e)=>{const t=[];for(let i=0;i<e;i++)t[i]=Gd(r,i,e,t)},Gd=(r,e,t,i)=>{let a=0,n=0,s=0;if(e!==0&&(n=r.readBits(1)),n){if(e===t){const c=X(r);s=e-(c+1)}else s=e-1;r.readBits(1),X(r);const o=i[s]??0;for(let c=0;c<=o;c++)r.readBits(1)||r.readBits(1);a=i[s]}else{const o=X(r),c=X(r);for(let l=0;l<o;l++)X(r),r.readBits(1);for(let l=0;l<c;l++)X(r),r.readBits(1);a=o+c}return a},Xd=(r,e)=>{let t=2,i=2,a=2,n=0,s=0;return r.readBits(1)&&r.readBits(8)===255&&(r.readBits(16),r.readBits(16)),r.readBits(1)&&r.readBits(1),r.readBits(1)&&(r.readBits(3),n=r.readBits(1),r.readBits(1)&&(t=r.readBits(8),i=r.readBits(8),a=r.readBits(8))),r.readBits(1)&&(X(r),X(r)),r.readBits(1),r.readBits(1),r.readBits(1),r.readBits(1)&&(X(r),X(r),X(r),X(r)),r.readBits(1)&&(r.readBits(32),r.readBits(32),r.readBits(1)&&X(r),r.readBits(1)&&Yd(r,!0,e)),r.readBits(1)&&(r.readBits(1),r.readBits(1),r.readBits(1),s=X(r),X(r),X(r),X(r),X(r)),{colourPrimaries:t,transferCharacteristics:i,matrixCoefficients:a,fullRangeFlag:n,minSpatialSegmentationIdc:s}},Yd=(r,e,t)=>{let i=!1,a=!1,n=!1;i=r.readBits(1)===1,a=r.readBits(1)===1,(i||a)&&(n=r.readBits(1)===1,n&&(r.readBits(8),r.readBits(5),r.readBits(1),r.readBits(5)),r.readBits(4),r.readBits(4),n&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let s=0;s<=t;s++){const o=r.readBits(1)===1;let c=!0;o||(c=r.readBits(1)===1);let l=!1;c?X(r):l=r.readBits(1)===1;let d=1;l||(d=X(r)+1),i&&Ns(r,d,n),a&&Ns(r,d,n)}},Ns=(r,e,t)=>{for(let i=0;i<e;i++)X(r),X(r),t&&(X(r),X(r)),r.readBits(1)},$d=r=>{const e=[];e.push(r.configurationVersion),e.push((r.generalProfileSpace&3)<<6|(r.generalTierFlag&1)<<5|r.generalProfileIdc&31),e.push(r.generalProfileCompatibilityFlags>>>24&255),e.push(r.generalProfileCompatibilityFlags>>>16&255),e.push(r.generalProfileCompatibilityFlags>>>8&255),e.push(r.generalProfileCompatibilityFlags&255),e.push(...r.generalConstraintIndicatorFlags),e.push(r.generalLevelIdc&255),e.push(240|r.minSpatialSegmentationIdc>>8&15),e.push(r.minSpatialSegmentationIdc&255),e.push(252|r.parallelismType&3),e.push(252|r.chromaFormatIdc&3),e.push(248|r.bitDepthLumaMinus8&7),e.push(248|r.bitDepthChromaMinus8&7),e.push(r.avgFrameRate>>8&255),e.push(r.avgFrameRate&255),e.push((r.constantFrameRate&3)<<6|(r.numTemporalLayers&7)<<3|(r.temporalIdNested&1)<<2|r.lengthSizeMinusOne&3),e.push(r.arrays.length&255);for(const t of r.arrays){e.push((t.arrayCompleteness&1)<<7|0|t.nalUnitType&63),e.push(t.nalUnits.length>>8&255),e.push(t.nalUnits.length&255);for(const i of t.nalUnits){e.push(i.length>>8&255),e.push(i.length&255);for(let a=0;a<i.length;a++)e.push(i[a])}}return new Uint8Array(e)},Vo=r=>{const e=new We(r);if(e.readBits(2)!==2)return null;const i=e.readBits(1),n=(e.readBits(1)<<1)+i;if(n===3&&e.skipBits(1),e.readBits(1)===1||e.readBits(1)!==0||(e.skipBits(2),e.readBits(24)!==4817730))return null;let l=8;n>=2&&(l=e.readBits(1)?12:10);const d=e.readBits(3);let u=0,h=0;if(d!==7)if(h=e.readBits(1),n===1||n===3){const B=e.readBits(1),I=e.readBits(1);u=!B&&!I?3:B&&!I?2:1,e.skipBits(1)}else u=1;else u=3,h=1;const p=e.readBits(16),m=e.readBits(16),g=p+1,b=m+1,k=g*b;let w=qe(ar).level;for(const P of ar)if(k<=P.maxPictureSize){w=P.level;break}return{profile:n,level:w,bitDepth:l,chromaSubsampling:u,videoFullRangeFlag:h,colourPrimaries:d===2?1:d===1?6:2,transferCharacteristics:d===2?1:d===1?6:2,matrixCoefficients:d===7?0:d===2?1:d===1?6:2}},Lo=function*(r){const e=new We(r),t=()=>{let i=0;for(let a=0;a<8;a++){const n=e.readAlignedByte();if(i|=(n&127)<<a*7,!(n&128))break;if(a===7&&n&128)return null}return i>=2**32-1?null:i};for(;e.getBitsLeft()>=8;){e.skipBits(1);const i=e.readBits(4),a=e.readBits(1),n=e.readBits(1);e.skipBits(1),a&&e.skipBits(8);let s;if(n){const o=t();if(o===null)return;s=o}else s=Math.floor(e.getBitsLeft()/8);y(e.pos%8===0),yield{type:i,data:r.subarray(e.pos/8,e.pos/8+s)},e.skipBits(s*8)}},Wo=r=>{for(const{type:e,data:t}of Lo(r)){if(e!==1)continue;const i=new We(t),a=i.readBits(3);i.readBits(1);const n=i.readBits(1);let s=0,o=0,c=0;if(n)s=i.readBits(5);else{if(i.readBits(1)&&(i.skipBits(32),i.skipBits(32),i.readBits(1)))return null;const C=i.readBits(1);C&&(c=i.readBits(5),i.skipBits(32),i.skipBits(5),i.skipBits(5));const P=i.readBits(5);for(let B=0;B<=P;B++){i.skipBits(12);const I=i.readBits(5);if(B===0&&(s=I),I>7){const A=i.readBits(1);B===0&&(o=A)}if(C&&i.readBits(1)){const x=c+1;i.skipBits(x),i.skipBits(x),i.skipBits(1)}i.readBits(1)&&i.skipBits(4)}}const l=i.readBits(4),d=i.readBits(4),u=l+1;i.skipBits(u);const h=d+1;i.skipBits(h);let p=0;if(n?p=0:p=i.readBits(1),p&&(i.skipBits(4),i.skipBits(3)),i.skipBits(1),i.skipBits(1),i.skipBits(1),!n){i.skipBits(1),i.skipBits(1),i.skipBits(1),i.skipBits(1);const S=i.readBits(1);S&&(i.skipBits(1),i.skipBits(1));const C=i.readBits(1);let P=0;C?P=2:P=i.readBits(1),P>0&&(i.readBits(1)||i.skipBits(1)),S&&i.skipBits(3)}i.skipBits(1),i.skipBits(1),i.skipBits(1);const m=i.readBits(1);let g=8;a===2&&m?g=i.readBits(1)?12:10:a<=2&&(g=m?10:8);let b=0;a!==1&&(b=i.readBits(1));let k=1,w=1,T=0;return b||(a===0?(k=1,w=1):a===1?(k=0,w=0):g===12&&(k=i.readBits(1),k&&(w=i.readBits(1))),k&&w&&(T=i.readBits(2))),{profile:a,level:s,tier:o,bitDepth:g,monochrome:b,chromaSubsamplingX:k,chromaSubsamplingY:w,chromaSamplePosition:T}}return null},Ho=r=>{const e=Ke(r),t=e.getUint8(9),i=e.getUint16(10,!0),a=e.getUint32(12,!0),n=e.getInt16(16,!0),s=e.getUint8(18);let o=null;return s&&(o=r.subarray(19,21+t)),{outputChannelCount:t,preSkip:i,inputSampleRate:a,outputGain:n,channelMappingFamily:s,channelMappingTable:o}},Zd=[480,960,1920,2880,480,960,1920,2880,480,960,1920,2880,480,960,480,960,120,240,480,960,120,240,480,960,120,240,480,960,120,240,480,960],Jd=r=>{const e=r[0]>>3;return{durationInSamples:Zd[e]}},eu=r=>{if(r.length<7)throw new Error("Setup header is too short.");if(r[0]!==5)throw new Error("Wrong packet type in Setup header.");if(String.fromCharCode(...r.slice(1,7))!=="vorbis")throw new Error("Invalid packet signature in Setup header.");const t=r.length,i=new Uint8Array(t);for(let u=0;u<t;u++)i[u]=r[t-1-u];const a=new We(i);let n=0;for(;a.getBitsLeft()>97;)if(a.readBits(1)===1){n=a.pos;break}if(n===0)throw new Error("Invalid Setup header: framing bit not found.");let s=0,o=!1,c=0;for(;a.getBitsLeft()>=97;){const u=a.pos,h=a.readBits(8),p=a.readBits(16),m=a.readBits(16);if(h>63||p!==0||m!==0){a.pos=u;break}if(a.skipBits(1),s++,s>64)break;a.clone().readBits(6)+1===s&&(o=!0,c=s)}if(!o)throw new Error("Invalid Setup header: mode header not found.");if(c>63)throw new Error(`Unsupported mode count: ${c}.`);const l=c;a.pos=0,a.skipBits(n);const d=Array(l).fill(0);for(let u=l-1;u>=0;u--)a.skipBits(40),d[u]=a.readBits(1);return{modeBlockflags:d}},jo=(r,e,t)=>{switch(r){case"avc":{for(const i of Mo(t,e)){const a=t[i.offset],n=Ia(a);if(n>=Mt.NON_IDR_SLICE&&n<=Mt.SLICE_DPC)return"delta";if(n===Mt.IDR)return"key";if(n===Mt.SEI&&(!ln()||Sd()>=144)){const s=t.subarray(i.offset,i.offset+i.length),o=Ea(s);let c=1;do{let l=0;for(;;){const h=o[c++];if(h===void 0||(l+=h,h<255))break}let d=0;for(;;){const h=o[c++];if(h===void 0||(d+=h,h<255))break}if(l===6){const h=new We(o);h.pos=8*c;const p=X(h),m=h.readBits(1);if(p===0&&m===1)return"key"}c+=d}while(c<o.length-1)}}return"delta"}case"hevc":{for(const i of Oo(t,e)){const a=Ii(t[i.offset]);if(a<nt.BLA_W_LP)return"delta";if(a<=nt.RSV_IRAP_VCL23)return"key"}return"delta"}case"vp8":return(t[0]&1)===0?"key":"delta";case"vp9":{const i=new We(t);if(i.readBits(2)!==2)return null;const a=i.readBits(1);return(i.readBits(1)<<1)+a===3&&i.skipBits(1),i.readBits(1)?null:i.readBits(1)===0?"key":"delta"}case"av1":{let i=!1;for(const{type:a,data:n}of Lo(t))if(a===1){const s=new We(n);s.skipBits(4),i=!!s.readBits(1)}else if(a===3||a===6||a===7){if(i)return"key";const s=new We(n);return s.readBits(1)?null:s.readBits(2)===0?"key":"delta"}return null}default:dr(r),y(!1)}};var qr;(function(r){r[r.STREAMINFO=0]="STREAMINFO",r[r.VORBIS_COMMENT=4]="VORBIS_COMMENT",r[r.PICTURE=6]="PICTURE"})(qr||(qr={}));const un=(r,e)=>{const t=Ke(r);let i=0;const a=t.getUint32(i,!0);i+=4;const n=St.decode(r.subarray(i,i+a));i+=a,a>0&&(e.raw??={},e.raw.vendor??=n);const s=t.getUint32(i,!0);i+=4;for(let o=0;o<s;o++){const c=t.getUint32(i,!0);i+=4;const l=St.decode(r.subarray(i,i+c));i+=c;const d=l.indexOf("=");if(d===-1)continue;const u=l.slice(0,d).toUpperCase(),h=l.slice(d+1);switch(e.raw??={},e.raw[u]??=h,u){case"TITLE":e.title??=h;break;case"DESCRIPTION":e.description??=h;break;case"ARTIST":e.artist??=h;break;case"ALBUM":e.album??=h;break;case"ALBUMARTIST":e.albumArtist??=h;break;case"COMMENT":e.comment??=h;break;case"LYRICS":e.lyrics??=h;break;case"TRACKNUMBER":{const p=h.split("/"),m=Number.parseInt(p[0],10),g=p[1]&&Number.parseInt(p[1],10);Number.isInteger(m)&&m>0&&(e.trackNumber??=m),g&&Number.isInteger(g)&&g>0&&(e.tracksTotal??=g)}break;case"TRACKTOTAL":{const p=Number.parseInt(h,10);Number.isInteger(p)&&p>0&&(e.tracksTotal??=p)}break;case"DISCNUMBER":{const p=h.split("/"),m=Number.parseInt(p[0],10),g=p[1]&&Number.parseInt(p[1],10);Number.isInteger(m)&&m>0&&(e.discNumber??=m),g&&Number.isInteger(g)&&g>0&&(e.discsTotal??=g)}break;case"DISCTOTAL":{const p=Number.parseInt(h,10);Number.isInteger(p)&&p>0&&(e.discsTotal??=p)}break;case"DATE":{const p=new Date(h);Number.isNaN(p.getTime())||(e.date??=p)}break;case"GENRE":e.genre??=h;break;case"METADATA_BLOCK_PICTURE":{const p=xd(h),m=Ke(p),g=m.getUint32(0,!1),b=m.getUint32(4,!1),k=String.fromCharCode(...p.subarray(8,8+b)),w=m.getUint32(8+b,!1),T=St.decode(p.subarray(12+b,12+b+w)),S=m.getUint32(b+w+28),C=p.subarray(b+w+32,b+w+32+S);e.images??=[],e.images.push({data:C,mimeType:k,kind:g===3?"coverFront":g===4?"coverBack":"unknown",name:void 0,description:T||void 0})}break}}};class fr{constructor(e){this.input=e}}const qo=[],Ko=[],hn=[],fn=[];const kt=new Uint8Array(0);class Le{constructor(e,t,i,a,n=-1,s,o){if(this.data=e,this.type=t,this.timestamp=i,this.duration=a,this.sequenceNumber=n,e===kt&&s===void 0)throw new Error("Internal error: byteLength must be explicitly provided when constructing metadata-only packets.");if(s===void 0&&(s=e.byteLength),!(e instanceof Uint8Array))throw new TypeError("data must be a Uint8Array.");if(t!=="key"&&t!=="delta")throw new TypeError('type must be either "key" or "delta".');if(!Number.isFinite(i))throw new TypeError("timestamp must be a number.");if(!Number.isFinite(a)||a<0)throw new TypeError("duration must be a non-negative number.");if(!Number.isFinite(n))throw new TypeError("sequenceNumber must be a number.");if(!Number.isInteger(s)||s<0)throw new TypeError("byteLength must be a non-negative integer.");if(o!==void 0&&(typeof o!="object"||!o))throw new TypeError("sideData, when provided, must be an object.");if(o?.alpha!==void 0&&!(o.alpha instanceof Uint8Array))throw new TypeError("sideData.alpha, when provided, must be a Uint8Array.");if(o?.alphaByteLength!==void 0&&(!Number.isInteger(o.alphaByteLength)||o.alphaByteLength<0))throw new TypeError("sideData.alphaByteLength, when provided, must be a non-negative integer.");this.byteLength=s,this.sideData=o??{},this.sideData.alpha&&this.sideData.alphaByteLength===void 0&&(this.sideData.alphaByteLength=this.sideData.alpha.byteLength)}get isMetadataOnly(){return this.data===kt}get microsecondTimestamp(){return Math.trunc(ir*this.timestamp)}get microsecondDuration(){return Math.trunc(ir*this.duration)}toEncodedVideoChunk(){if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to a video chunk.");if(typeof EncodedVideoChunk>"u")throw new Error("Your browser does not support EncodedVideoChunk.");return new EncodedVideoChunk({data:this.data,type:this.type,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}alphaToEncodedVideoChunk(e=this.type){if(!this.sideData.alpha)throw new TypeError("This packet does not contain alpha side data.");if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to a video chunk.");if(typeof EncodedVideoChunk>"u")throw new Error("Your browser does not support EncodedVideoChunk.");return new EncodedVideoChunk({data:this.sideData.alpha,type:e,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}toEncodedAudioChunk(){if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to an audio chunk.");if(typeof EncodedAudioChunk>"u")throw new Error("Your browser does not support EncodedAudioChunk.");return new EncodedAudioChunk({data:this.data,type:this.type,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}static fromEncodedChunk(e,t){if(!(e instanceof EncodedVideoChunk||e instanceof EncodedAudioChunk))throw new TypeError("chunk must be an EncodedVideoChunk or EncodedAudioChunk.");const i=new Uint8Array(e.byteLength);return e.copyTo(i),new Le(i,e.type,e.timestamp/1e6,(e.duration??0)/1e6,void 0,void 0,t)}clone(e){if(e!==void 0&&(typeof e!="object"||e===null))throw new TypeError("options, when provided, must be an object.");if(e?.data!==void 0&&!(e.data instanceof Uint8Array))throw new TypeError("options.data, when provided, must be a Uint8Array.");if(e?.type!==void 0&&e.type!=="key"&&e.type!=="delta")throw new TypeError('options.type, when provided, must be either "key" or "delta".');if(e?.timestamp!==void 0&&!Number.isFinite(e.timestamp))throw new TypeError("options.timestamp, when provided, must be a number.");if(e?.duration!==void 0&&!Number.isFinite(e.duration))throw new TypeError("options.duration, when provided, must be a number.");if(e?.sequenceNumber!==void 0&&!Number.isFinite(e.sequenceNumber))throw new TypeError("options.sequenceNumber, when provided, must be a number.");if(e?.sideData!==void 0&&(typeof e.sideData!="object"||e.sideData===null))throw new TypeError("options.sideData, when provided, must be an object.");return new Le(e?.data??this.data,e?.type??this.type,e?.timestamp??this.timestamp,e?.duration??this.duration,e?.sequenceNumber??this.sequenceNumber,this.byteLength,e?.sideData??this.sideData)}}const tu=r=>{let i=r,a=4096,n=0,s=12,o=0;for(i<0&&(i=-i,n=128),i+=33,i>8191&&(i=8191);(i&a)!==a&&s>=5;)a>>=1,s--;return o=i>>s-4&15,~(n|s-5<<4|o)&255},ru=r=>{let t=0,i=0,a=~r;a&128&&(a&=-129,t=-1),i=((a&240)>>4)+5;const n=(1<<i|(a&15)<<i-4|1<<i-5)-33;return t===0?n:-n},iu=r=>{let t=2048,i=0,a=11,n=0,s=r;for(s<0&&(s=-s,i=128),s>4095&&(s=4095);(s&t)!==t&&a>=5;)t>>=1,a--;return n=s>>(a===4?1:a-4)&15,(i|a-4<<4|n)^85},au=r=>{let e=0,t=0,i=r^85;i&128&&(i&=-129,e=-1),t=((i&240)>>4)+4;let a=0;return t!==4?a=1<<t|(i&15)<<t-4|1<<t-5:a=i<<1|1,e===0?a:-a};Eo();let Os=-1/0,Us=-1/0,Ei=null;typeof FinalizationRegistry<"u"&&(Ei=new FinalizationRegistry(r=>{const e=Date.now();r.type==="video"?(e-Os>=1e3&&(console.error("A VideoSample was garbage collected without first being closed. For proper resource management, make sure to call close() on all your VideoSamples as soon as you're done using them."),Os=e),typeof VideoFrame<"u"&&r.data instanceof VideoFrame&&r.data.close()):(e-Us>=1e3&&(console.error("An AudioSample was garbage collected without first being closed. For proper resource management, make sure to call close() on all your AudioSamples as soon as you're done using them."),Us=e),typeof AudioData<"u"&&r.data instanceof AudioData&&r.data.close())}));const Qo=["I420","I420P10","I420P12","I420A","I420AP10","I420AP12","I422","I422P10","I422P12","I422A","I422AP10","I422AP12","I444","I444P10","I444P12","I444A","I444AP10","I444AP12","NV12","RGBA","RGBX","BGRA","BGRX"],nu=new Set(Qo);class lt{get displayWidth(){return this.rotation%180===0?this.codedWidth:this.codedHeight}get displayHeight(){return this.rotation%180===0?this.codedHeight:this.codedWidth}get microsecondTimestamp(){return Math.trunc(ir*this.timestamp)}get microsecondDuration(){return Math.trunc(ir*this.duration)}get hasAlpha(){return this.format&&this.format.includes("A")}constructor(e,t){if(this._closed=!1,e instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer||ArrayBuffer.isView(e)){if(!t||typeof t!="object")throw new TypeError("init must be an object.");if(t.format===void 0||!nu.has(t.format))throw new TypeError("init.format must be one of: "+Qo.join(", "));if(!Number.isInteger(t.codedWidth)||t.codedWidth<=0)throw new TypeError("init.codedWidth must be a positive integer.");if(!Number.isInteger(t.codedHeight)||t.codedHeight<=0)throw new TypeError("init.codedHeight must be a positive integer.");if(t.rotation!==void 0&&![0,90,180,270].includes(t.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(!Number.isFinite(t.timestamp))throw new TypeError("init.timestamp must be a number.");if(t.duration!==void 0&&(!Number.isFinite(t.duration)||t.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");this._data=yt(e).slice(),this._layout=t.layout??su(t.format,t.codedWidth,t.codedHeight),this.format=t.format,this.codedWidth=t.codedWidth,this.codedHeight=t.codedHeight,this.rotation=t.rotation??0,this.timestamp=t.timestamp,this.duration=t.duration??0,this.colorSpace=new Va(t.colorSpace)}else if(typeof VideoFrame<"u"&&e instanceof VideoFrame){if(t?.rotation!==void 0&&![0,90,180,270].includes(t.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(t?.timestamp!==void 0&&!Number.isFinite(t?.timestamp))throw new TypeError("init.timestamp, when provided, must be a number.");if(t?.duration!==void 0&&(!Number.isFinite(t.duration)||t.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");this._data=e,this._layout=null,this.format=e.format,this.codedWidth=e.displayWidth,this.codedHeight=e.displayHeight,this.rotation=t?.rotation??0,this.timestamp=t?.timestamp??e.timestamp/1e6,this.duration=t?.duration??(e.duration??0)/1e6,this.colorSpace=new Va(e.colorSpace)}else if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof SVGImageElement<"u"&&e instanceof SVGImageElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap||typeof HTMLVideoElement<"u"&&e instanceof HTMLVideoElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas){if(!t||typeof t!="object")throw new TypeError("init must be an object.");if(t.rotation!==void 0&&![0,90,180,270].includes(t.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(!Number.isFinite(t.timestamp))throw new TypeError("init.timestamp must be a number.");if(t.duration!==void 0&&(!Number.isFinite(t.duration)||t.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");if(typeof VideoFrame<"u")return new lt(new VideoFrame(e,{timestamp:Math.trunc(t.timestamp*ir),duration:Math.trunc((t.duration??0)*ir)||void 0}),t);let i=0,a=0;if("naturalWidth"in e?(i=e.naturalWidth,a=e.naturalHeight):"videoWidth"in e?(i=e.videoWidth,a=e.videoHeight):"width"in e&&(i=Number(e.width),a=Number(e.height)),!i||!a)throw new TypeError("Could not determine dimensions.");const n=new OffscreenCanvas(i,a),s=n.getContext("2d",{alpha:$r(),willReadFrequently:!0});y(s),s.drawImage(e,0,0),this._data=n,this._layout=null,this.format="RGBX",this.codedWidth=i,this.codedHeight=a,this.rotation=t.rotation??0,this.timestamp=t.timestamp,this.duration=t.duration??0,this.colorSpace=new Va({matrix:"rgb",primaries:"bt709",transfer:"iec61966-2-1",fullRange:!0})}else throw new TypeError("Invalid data type: Must be a BufferSource or CanvasImageSource.");Ei?.register(this,{type:"video",data:this._data},this)}clone(){if(this._closed)throw new Error("VideoSample is closed.");return y(this._data!==null),mr(this._data)?new lt(this._data.clone(),{timestamp:this.timestamp,duration:this.duration,rotation:this.rotation}):this._data instanceof Uint8Array?(y(this._layout),new lt(this._data,{format:this.format,layout:this._layout,codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.timestamp,duration:this.duration,colorSpace:this.colorSpace,rotation:this.rotation})):new lt(this._data,{format:this.format,codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.timestamp,duration:this.duration,colorSpace:this.colorSpace,rotation:this.rotation})}close(){this._closed||(Ei?.unregister(this),mr(this._data)?this._data.close():this._data=null,this._closed=!0)}allocationSize(e={}){if(Vs(e),this._closed)throw new Error("VideoSample is closed.");if(this.format===null)throw new Error("Cannot get allocation size when format is null. Sorry!");if(y(this._data!==null),!mr(this._data)&&(e.colorSpace||e.format&&e.format!==this.format||e.layout||e.rect)){const t=this.toVideoFrame(),i=t.allocationSize(e);return t.close(),i}return mr(this._data)?this._data.allocationSize(e):this._data instanceof Uint8Array?this._data.byteLength:this.codedWidth*this.codedHeight*4}async copyTo(e,t={}){if(!xa(e))throw new TypeError("destination must be an ArrayBuffer or an ArrayBuffer view.");if(Vs(t),this._closed)throw new Error("VideoSample is closed.");if(this.format===null)throw new Error("Cannot copy video sample data when format is null. Sorry!");if(y(this._data!==null),!mr(this._data)&&(t.colorSpace||t.format&&t.format!==this.format||t.layout||t.rect)){const i=this.toVideoFrame(),a=await i.copyTo(e,t);return i.close(),a}if(mr(this._data))return this._data.copyTo(e,t);if(this._data instanceof Uint8Array)return y(this._layout),yt(e).set(this._data),this._layout;{const a=this._data.getContext("2d");y(a);const n=a.getImageData(0,0,this.codedWidth,this.codedHeight);return yt(e).set(n.data),[{offset:0,stride:4*this.codedWidth}]}}toVideoFrame(){if(this._closed)throw new Error("VideoSample is closed.");return y(this._data!==null),mr(this._data)?new VideoFrame(this._data,{timestamp:this.microsecondTimestamp,duration:this.microsecondDuration||void 0}):this._data instanceof Uint8Array?new VideoFrame(this._data,{format:this.format,codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration||void 0,colorSpace:this.colorSpace}):new VideoFrame(this._data,{timestamp:this.microsecondTimestamp,duration:this.microsecondDuration||void 0})}draw(e,t,i,a,n,s,o,c,l){let d=0,u=0,h=this.displayWidth,p=this.displayHeight,m=0,g=0,b=this.displayWidth,k=this.displayHeight;if(s!==void 0?(d=t,u=i,h=a,p=n,m=s,g=o,c!==void 0?(b=c,k=l):(b=h,k=p)):(m=t,g=i,a!==void 0&&(b=a,k=n)),!(typeof CanvasRenderingContext2D<"u"&&e instanceof CanvasRenderingContext2D||typeof OffscreenCanvasRenderingContext2D<"u"&&e instanceof OffscreenCanvasRenderingContext2D))throw new TypeError("context must be a CanvasRenderingContext2D or OffscreenCanvasRenderingContext2D.");if(!Number.isFinite(d))throw new TypeError("sx must be a number.");if(!Number.isFinite(u))throw new TypeError("sy must be a number.");if(!Number.isFinite(h)||h<0)throw new TypeError("sWidth must be a non-negative number.");if(!Number.isFinite(p)||p<0)throw new TypeError("sHeight must be a non-negative number.");if(!Number.isFinite(m))throw new TypeError("dx must be a number.");if(!Number.isFinite(g))throw new TypeError("dy must be a number.");if(!Number.isFinite(b)||b<0)throw new TypeError("dWidth must be a non-negative number.");if(!Number.isFinite(k)||k<0)throw new TypeError("dHeight must be a non-negative number.");if(this._closed)throw new Error("VideoSample is closed.");({sx:d,sy:u,sWidth:h,sHeight:p}=this._rotateSourceRegion(d,u,h,p,this.rotation));const w=this.toCanvasImageSource();e.save();const T=m+b/2,S=g+k/2;e.translate(T,S),e.rotate(this.rotation*Math.PI/180);const C=this.rotation%180===0?1:b/k;e.scale(1/C,C),e.drawImage(w,d,u,h,p,-b/2,-k/2,b,k),e.restore()}drawWithFit(e,t){if(!(typeof CanvasRenderingContext2D<"u"&&e instanceof CanvasRenderingContext2D||typeof OffscreenCanvasRenderingContext2D<"u"&&e instanceof OffscreenCanvasRenderingContext2D))throw new TypeError("context must be a CanvasRenderingContext2D or OffscreenCanvasRenderingContext2D.");if(!t||typeof t!="object")throw new TypeError("options must be an object.");if(!["fill","contain","cover"].includes(t.fit))throw new TypeError("options.fit must be 'fill', 'contain', or 'cover'.");if(t.rotation!==void 0&&![0,90,180,270].includes(t.rotation))throw new TypeError("options.rotation, when provided, must be 0, 90, 180, or 270.");t.crop!==void 0&&es(t.crop,"options.");const i=e.canvas.width,a=e.canvas.height,n=t.rotation??this.rotation,[s,o]=n%180===0?[this.codedWidth,this.codedHeight]:[this.codedHeight,this.codedWidth];t.crop&&Jn(t.crop,s,o);let c,l,d,u;const{sx:h,sy:p,sWidth:m,sHeight:g}=this._rotateSourceRegion(t.crop?.left??0,t.crop?.top??0,t.crop?.width??s,t.crop?.height??o,n);if(t.fit==="fill")c=0,l=0,d=i,u=a;else{const[k,w]=t.crop?[t.crop.width,t.crop.height]:[s,o],T=t.fit==="contain"?Math.min(i/k,a/w):Math.max(i/k,a/w);d=k*T,u=w*T,c=(i-d)/2,l=(a-u)/2}e.save();const b=n%180===0?1:d/u;e.translate(i/2,a/2),e.rotate(n*Math.PI/180),e.scale(1/b,b),e.translate(-i/2,-a/2),e.drawImage(this.toCanvasImageSource(),h,p,m,g,c,l,d,u),e.restore()}_rotateSourceRegion(e,t,i,a,n){return n===90?[e,t,i,a]=[t,this.codedHeight-e-i,a,i]:n===180?[e,t]=[this.codedWidth-e-i,this.codedHeight-t-a]:n===270&&([e,t,i,a]=[this.codedWidth-t-a,e,a,i]),{sx:e,sy:t,sWidth:i,sHeight:a}}toCanvasImageSource(){if(this._closed)throw new Error("VideoSample is closed.");if(y(this._data!==null),this._data instanceof Uint8Array){const e=this.toVideoFrame();return queueMicrotask(()=>e.close()),e}else return this._data}setRotation(e){if(![0,90,180,270].includes(e))throw new TypeError("newRotation must be 0, 90, 180, or 270.");this.rotation=e}setTimestamp(e){if(!Number.isFinite(e))throw new TypeError("newTimestamp must be a number.");this.timestamp=e}setDuration(e){if(!Number.isFinite(e)||e<0)throw new TypeError("newDuration must be a non-negative number.");this.duration=e}[Symbol.dispose](){this.close()}}class Va{constructor(e){this.primaries=e?.primaries??null,this.transfer=e?.transfer??null,this.matrix=e?.matrix??null,this.fullRange=e?.fullRange??null}toJSON(){return{primaries:this.primaries,transfer:this.transfer,matrix:this.matrix,fullRange:this.fullRange}}}const mr=r=>typeof VideoFrame<"u"&&r instanceof VideoFrame,Jn=(r,e,t)=>{r.left=Math.min(r.left,e),r.top=Math.min(r.top,t),r.width=Math.min(r.width,e-r.left),r.height=Math.min(r.height,t-r.top),y(r.width>=0),y(r.height>=0)},es=(r,e)=>{if(!r||typeof r!="object")throw new TypeError(e+"crop, when provided, must be an object.");if(!Number.isInteger(r.left)||r.left<0)throw new TypeError(e+"crop.left must be a non-negative integer.");if(!Number.isInteger(r.top)||r.top<0)throw new TypeError(e+"crop.top must be a non-negative integer.");if(!Number.isInteger(r.width)||r.width<0)throw new TypeError(e+"crop.width must be a non-negative integer.");if(!Number.isInteger(r.height)||r.height<0)throw new TypeError(e+"crop.height must be a non-negative integer.")},Vs=r=>{if(!r||typeof r!="object")throw new TypeError("options must be an object.");if(r.colorSpace!==void 0&&!["display-p3","srgb"].includes(r.colorSpace))throw new TypeError("options.colorSpace, when provided, must be 'display-p3' or 'srgb'.");if(r.format!==void 0&&typeof r.format!="string")throw new TypeError("options.format, when provided, must be a string.");if(r.layout!==void 0){if(!Array.isArray(r.layout))throw new TypeError("options.layout, when provided, must be an array.");for(const e of r.layout){if(!e||typeof e!="object")throw new TypeError("Each entry in options.layout must be an object.");if(!Number.isInteger(e.offset)||e.offset<0)throw new TypeError("plane.offset must be a non-negative integer.");if(!Number.isInteger(e.stride)||e.stride<0)throw new TypeError("plane.stride must be a non-negative integer.")}}if(r.rect!==void 0){if(!r.rect||typeof r.rect!="object")throw new TypeError("options.rect, when provided, must be an object.");if(r.rect.x!==void 0&&(!Number.isInteger(r.rect.x)||r.rect.x<0))throw new TypeError("options.rect.x, when provided, must be a non-negative integer.");if(r.rect.y!==void 0&&(!Number.isInteger(r.rect.y)||r.rect.y<0))throw new TypeError("options.rect.y, when provided, must be a non-negative integer.");if(r.rect.width!==void 0&&(!Number.isInteger(r.rect.width)||r.rect.width<0))throw new TypeError("options.rect.width, when provided, must be a non-negative integer.");if(r.rect.height!==void 0&&(!Number.isInteger(r.rect.height)||r.rect.height<0))throw new TypeError("options.rect.height, when provided, must be a non-negative integer.")}},su=(r,e,t)=>{const i=ou(r),a=[];let n=0;for(const s of i){const o=Math.ceil(e/s.widthDivisor),c=Math.ceil(t/s.heightDivisor),l=o*s.sampleBytes,d=l*c;a.push({offset:n,stride:l}),n+=d}return a},ou=r=>{const e=(t,i,a,n,s)=>{const o=[{sampleBytes:t,widthDivisor:1,heightDivisor:1},{sampleBytes:i,widthDivisor:a,heightDivisor:n},{sampleBytes:i,widthDivisor:a,heightDivisor:n}];return s&&o.push({sampleBytes:t,widthDivisor:1,heightDivisor:1}),o};switch(r){case"I420":return e(1,1,2,2,!1);case"I420P10":case"I420P12":return e(2,2,2,2,!1);case"I420A":return e(1,1,2,2,!0);case"I420AP10":case"I420AP12":return e(2,2,2,2,!0);case"I422":return e(1,1,2,1,!1);case"I422P10":case"I422P12":return e(2,2,2,1,!1);case"I422A":return e(1,1,2,1,!0);case"I422AP10":case"I422AP12":return e(2,2,2,1,!0);case"I444":return e(1,1,1,1,!1);case"I444P10":case"I444P12":return e(2,2,1,1,!1);case"I444A":return e(1,1,1,1,!0);case"I444AP10":case"I444AP12":return e(2,2,1,1,!0);case"NV12":return[{sampleBytes:1,widthDivisor:1,heightDivisor:1},{sampleBytes:2,widthDivisor:2,heightDivisor:2}];case"RGBA":case"RGBX":case"BGRA":case"BGRX":return[{sampleBytes:4,widthDivisor:1,heightDivisor:1}];default:dr(r),y(!1)}},La=new Set(["f32","f32-planar","s16","s16-planar","s32","s32-planar","u8","u8-planar"]);class Tt{get microsecondTimestamp(){return Math.trunc(ir*this.timestamp)}get microsecondDuration(){return Math.trunc(ir*this.duration)}constructor(e){if(this._closed=!1,ni(e)){if(e.format===null)throw new TypeError("AudioData with null format is not supported.");this._data=e,this.format=e.format,this.sampleRate=e.sampleRate,this.numberOfFrames=e.numberOfFrames,this.numberOfChannels=e.numberOfChannels,this.timestamp=e.timestamp/1e6,this.duration=e.numberOfFrames/e.sampleRate}else{if(!e||typeof e!="object")throw new TypeError("Invalid AudioDataInit: must be an object.");if(!La.has(e.format))throw new TypeError("Invalid AudioDataInit: invalid format.");if(!Number.isFinite(e.sampleRate)||e.sampleRate<=0)throw new TypeError("Invalid AudioDataInit: sampleRate must be > 0.");if(!Number.isInteger(e.numberOfChannels)||e.numberOfChannels===0)throw new TypeError("Invalid AudioDataInit: numberOfChannels must be an integer > 0.");if(!Number.isFinite(e?.timestamp))throw new TypeError("init.timestamp must be a number.");const t=e.data.byteLength/(br(e.format)*e.numberOfChannels);if(!Number.isInteger(t))throw new TypeError("Invalid AudioDataInit: data size is not a multiple of frame size.");this.format=e.format,this.sampleRate=e.sampleRate,this.numberOfFrames=t,this.numberOfChannels=e.numberOfChannels,this.timestamp=e.timestamp,this.duration=t/e.sampleRate;let i;if(e.data instanceof ArrayBuffer)i=new Uint8Array(e.data);else if(ArrayBuffer.isView(e.data))i=new Uint8Array(e.data.buffer,e.data.byteOffset,e.data.byteLength);else throw new TypeError("Invalid AudioDataInit: data is not a BufferSource.");const a=this.numberOfFrames*this.numberOfChannels*br(this.format);if(i.byteLength<a)throw new TypeError("Invalid AudioDataInit: insufficient data size.");this._data=i}Ei?.register(this,{type:"audio",data:this._data},this)}allocationSize(e){if(!e||typeof e!="object")throw new TypeError("options must be an object.");if(!Number.isInteger(e.planeIndex)||e.planeIndex<0)throw new TypeError("planeIndex must be a non-negative integer.");if(e.format!==void 0&&!La.has(e.format))throw new TypeError("Invalid format.");if(e.frameOffset!==void 0&&(!Number.isInteger(e.frameOffset)||e.frameOffset<0))throw new TypeError("frameOffset must be a non-negative integer.");if(e.frameCount!==void 0&&(!Number.isInteger(e.frameCount)||e.frameCount<0))throw new TypeError("frameCount must be a non-negative integer.");if(this._closed)throw new Error("AudioSample is closed.");const t=e.format??this.format,i=e.frameOffset??0;if(i>=this.numberOfFrames)throw new RangeError("frameOffset out of range");const a=e.frameCount!==void 0?e.frameCount:this.numberOfFrames-i;if(a>this.numberOfFrames-i)throw new RangeError("frameCount out of range");const n=br(t),s=Ur(t);if(s&&e.planeIndex>=this.numberOfChannels)throw new RangeError("planeIndex out of range");if(!s&&e.planeIndex!==0)throw new RangeError("planeIndex out of range");return(s?a:a*this.numberOfChannels)*n}copyTo(e,t){if(!xa(e))throw new TypeError("destination must be an ArrayBuffer or an ArrayBuffer view.");if(!t||typeof t!="object")throw new TypeError("options must be an object.");if(!Number.isInteger(t.planeIndex)||t.planeIndex<0)throw new TypeError("planeIndex must be a non-negative integer.");if(t.format!==void 0&&!La.has(t.format))throw new TypeError("Invalid format.");if(t.frameOffset!==void 0&&(!Number.isInteger(t.frameOffset)||t.frameOffset<0))throw new TypeError("frameOffset must be a non-negative integer.");if(t.frameCount!==void 0&&(!Number.isInteger(t.frameCount)||t.frameCount<0))throw new TypeError("frameCount must be a non-negative integer.");if(this._closed)throw new Error("AudioSample is closed.");const{planeIndex:i,format:a,frameCount:n,frameOffset:s}=t,o=this.format,c=a??this.format;if(!c)throw new Error("Destination format not determined");const l=this.numberOfFrames,d=this.numberOfChannels,u=s??0;if(u>=l)throw new RangeError("frameOffset out of range");const h=n!==void 0?n:l-u;if(h>l-u)throw new RangeError("frameCount out of range");const p=br(c),m=Ur(c);if(m&&i>=d)throw new RangeError("planeIndex out of range");if(!m&&i!==0)throw new RangeError("planeIndex out of range");const b=(m?h:h*d)*p;if(e.byteLength<b)throw new RangeError("Destination buffer is too small");const k=Ke(e),w=Xo(c);if(ni(this._data))hi()&&d>2&&c!==o?cu(this._data,k,o,c,d,i,u,h):this._data.copyTo(e,{planeIndex:i,frameOffset:u,frameCount:h,format:c});else{const T=this._data,S=Ke(T),C=Go(o),P=br(o),B=Ur(o);for(let I=0;I<h;I++)if(m){const R=I*p;let A;B?A=(i*l+(I+u))*P:A=((I+u)*d+i)*P;const x=C(S,A);w(k,R,x)}else for(let R=0;R<d;R++){const x=(I*d+R)*p;let F;B?F=(R*l+(I+u))*P:F=((I+u)*d+R)*P;const U=C(S,F);w(k,x,U)}}}clone(){if(this._closed)throw new Error("AudioSample is closed.");if(ni(this._data)){const e=new Tt(this._data.clone());return e.setTimestamp(this.timestamp),e}else return new Tt({format:this.format,sampleRate:this.sampleRate,numberOfFrames:this.numberOfFrames,numberOfChannels:this.numberOfChannels,timestamp:this.timestamp,data:this._data})}close(){this._closed||(Ei?.unregister(this),ni(this._data)?this._data.close():this._data=new Uint8Array(0),this._closed=!0)}toAudioData(){if(this._closed)throw new Error("AudioSample is closed.");if(ni(this._data)){if(this._data.timestamp===this.microsecondTimestamp)return this._data.clone();if(Ur(this.format)){const e=this.allocationSize({planeIndex:0,format:this.format}),t=new ArrayBuffer(e*this.numberOfChannels);for(let i=0;i<this.numberOfChannels;i++)this.copyTo(new Uint8Array(t,i*e,e),{planeIndex:i,format:this.format});return new AudioData({format:this.format,sampleRate:this.sampleRate,numberOfFrames:this.numberOfFrames,numberOfChannels:this.numberOfChannels,timestamp:this.microsecondTimestamp,data:t})}else{const e=new ArrayBuffer(this.allocationSize({planeIndex:0,format:this.format}));return this.copyTo(e,{planeIndex:0,format:this.format}),new AudioData({format:this.format,sampleRate:this.sampleRate,numberOfFrames:this.numberOfFrames,numberOfChannels:this.numberOfChannels,timestamp:this.microsecondTimestamp,data:e})}}else return new AudioData({format:this.format,sampleRate:this.sampleRate,numberOfFrames:this.numberOfFrames,numberOfChannels:this.numberOfChannels,timestamp:this.microsecondTimestamp,data:this._data.buffer instanceof ArrayBuffer?this._data.buffer:this._data.slice()})}toAudioBuffer(){if(this._closed)throw new Error("AudioSample is closed.");const e=new AudioBuffer({numberOfChannels:this.numberOfChannels,length:this.numberOfFrames,sampleRate:this.sampleRate}),t=new Float32Array(this.allocationSize({planeIndex:0,format:"f32-planar"})/4);for(let i=0;i<this.numberOfChannels;i++)this.copyTo(t,{planeIndex:i,format:"f32-planar"}),e.copyToChannel(t,i);return e}setTimestamp(e){if(!Number.isFinite(e))throw new TypeError("newTimestamp must be a number.");this.timestamp=e}[Symbol.dispose](){this.close()}static*_fromAudioBuffer(e,t){if(!(e instanceof AudioBuffer))throw new TypeError("audioBuffer must be an AudioBuffer.");const i=48e3*5,a=e.numberOfChannels,n=e.sampleRate,s=e.length,o=Math.floor(i/a);let c=0,l=s;for(;l>0;){const d=Math.min(o,l),u=new Float32Array(a*d);for(let h=0;h<a;h++)e.copyFromChannel(u.subarray(h*d,(h+1)*d),h,c);yield new Tt({format:"f32-planar",sampleRate:n,numberOfFrames:d,numberOfChannels:a,timestamp:t+c/n,data:u}),c+=d,l-=d}}static fromAudioBuffer(e,t){if(!(e instanceof AudioBuffer))throw new TypeError("audioBuffer must be an AudioBuffer.");const i=48e3*5,a=e.numberOfChannels,n=e.sampleRate,s=e.length,o=Math.floor(i/a);let c=0,l=s;const d=[];for(;l>0;){const u=Math.min(o,l),h=new Float32Array(a*u);for(let m=0;m<a;m++)e.copyFromChannel(h.subarray(m*u,(m+1)*u),m,c);const p=new Tt({format:"f32-planar",sampleRate:n,numberOfFrames:u,numberOfChannels:a,timestamp:t+c/n,data:h});d.push(p),c+=u,l-=u}return d}}const br=r=>{switch(r){case"u8":case"u8-planar":return 1;case"s16":case"s16-planar":return 2;case"s32":case"s32-planar":return 4;case"f32":case"f32-planar":return 4;default:throw new Error("Unknown AudioSampleFormat")}},Ur=r=>{switch(r){case"u8-planar":case"s16-planar":case"s32-planar":case"f32-planar":return!0;default:return!1}},Go=r=>{switch(r){case"u8":case"u8-planar":return(e,t)=>(e.getUint8(t)-128)/128;case"s16":case"s16-planar":return(e,t)=>e.getInt16(t,!0)/32768;case"s32":case"s32-planar":return(e,t)=>e.getInt32(t,!0)/2147483648;case"f32":case"f32-planar":return(e,t)=>e.getFloat32(t,!0)}},Xo=r=>{switch(r){case"u8":case"u8-planar":return(e,t,i)=>e.setUint8(t,tt((i+1)*127.5,0,255));case"s16":case"s16-planar":return(e,t,i)=>e.setInt16(t,tt(Math.round(i*32767),-32768,32767),!0);case"s32":case"s32-planar":return(e,t,i)=>e.setInt32(t,tt(Math.round(i*2147483647),-2147483648,2147483647),!0);case"f32":case"f32-planar":return(e,t,i)=>e.setFloat32(t,i,!0)}},ni=r=>typeof AudioData<"u"&&r instanceof AudioData,cu=(r,e,t,i,a,n,s,o)=>{const c=Go(t),l=Xo(i),d=br(t),u=br(i),h=Ur(t);if(Ur(i))if(h){const m=new ArrayBuffer(o*d),g=Ke(m);r.copyTo(m,{planeIndex:n,frameOffset:s,frameCount:o,format:t});for(let b=0;b<o;b++){const k=b*d,w=b*u,T=c(g,k);l(e,w,T)}}else{const m=new ArrayBuffer(o*a*d),g=Ke(m);r.copyTo(m,{planeIndex:0,frameOffset:s,frameCount:o,format:t});for(let b=0;b<o;b++){const k=(b*a+n)*d,w=b*u,T=c(g,k);l(e,w,T)}}else if(h){const m=o*d,g=new ArrayBuffer(m),b=Ke(g);for(let k=0;k<a;k++){r.copyTo(g,{planeIndex:k,frameOffset:s,frameCount:o,format:t});for(let w=0;w<o;w++){const T=w*d,S=(w*a+k)*u,C=c(b,T);l(e,S,C)}}}else{const m=new ArrayBuffer(o*a*d),g=Ke(m);r.copyTo(m,{planeIndex:0,frameOffset:s,frameCount:o,format:t});for(let b=0;b<o;b++)for(let k=0;k<a;k++){const w=b*a+k,T=w*d,S=w*u,C=c(g,T);l(e,S,C)}}};const Br=r=>{if(!r||typeof r!="object")throw new TypeError("options must be an object.");if(r.metadataOnly!==void 0&&typeof r.metadataOnly!="boolean")throw new TypeError("options.metadataOnly, when defined, must be a boolean.");if(r.verifyKeyPackets!==void 0&&typeof r.verifyKeyPackets!="boolean")throw new TypeError("options.verifyKeyPackets, when defined, must be a boolean.");if(r.verifyKeyPackets&&r.metadataOnly)throw new TypeError("options.verifyKeyPackets and options.metadataOnly cannot be enabled together.")},or=r=>{if(!Ao(r))throw new TypeError("timestamp must be a number.")},Wa=(r,e,t)=>t.verifyKeyPackets?e.then(async i=>{if(!i||i.type==="delta")return i;const a=await r.determinePacketType(i);return a&&(i.type=a),i}):e;class Ai{constructor(e){if(!(e instanceof rs))throw new TypeError("track must be an InputTrack.");this._track=e}getFirstPacket(e={}){if(Br(e),this._track.input._disposed)throw new pt;return Wa(this._track,this._track._backing.getFirstPacket(e),e)}getPacket(e,t={}){if(or(e),Br(t),this._track.input._disposed)throw new pt;return Wa(this._track,this._track._backing.getPacket(e,t),t)}getNextPacket(e,t={}){if(!(e instanceof Le))throw new TypeError("packet must be an EncodedPacket.");if(Br(t),this._track.input._disposed)throw new pt;return Wa(this._track,this._track._backing.getNextPacket(e,t),t)}async getKeyPacket(e,t={}){if(or(e),Br(t),this._track.input._disposed)throw new pt;if(!t.verifyKeyPackets)return this._track._backing.getKeyPacket(e,t);const i=await this._track._backing.getKeyPacket(e,t);return i&&(y(i.type==="key"),await this._track.determinePacketType(i)==="delta"?this.getKeyPacket(i.timestamp-1/this._track.timeResolution,t):i)}async getNextKeyPacket(e,t={}){if(!(e instanceof Le))throw new TypeError("packet must be an EncodedPacket.");if(Br(t),this._track.input._disposed)throw new pt;if(!t.verifyKeyPackets)return this._track._backing.getNextKeyPacket(e,t);const i=await this._track._backing.getNextKeyPacket(e,t);return i&&(y(i.type==="key"),await this._track.determinePacketType(i)==="delta"?this.getNextKeyPacket(i,t):i)}packets(e,t,i={}){if(e!==void 0&&!(e instanceof Le))throw new TypeError("startPacket must be an EncodedPacket.");if(e!==void 0&&e.isMetadataOnly&&!i?.metadataOnly)throw new TypeError("startPacket can only be metadata-only if options.metadataOnly is enabled.");if(t!==void 0&&!(t instanceof Le))throw new TypeError("endPacket must be an EncodedPacket.");if(Br(i),this._track.input._disposed)throw new pt;const a=[];let{promise:n,resolve:s}=at(),{promise:o,resolve:c}=at(),l=!1,d=!1,u=null;const h=[],p=()=>Math.max(2,h.length);(async()=>{let g=e??await this.getFirstPacket(i);for(;g&&!d&&!this._track.input._disposed&&!(t&&g.sequenceNumber>=t?.sequenceNumber);){if(a.length>p()){({promise:o,resolve:c}=at()),await o;continue}a.push(g),s(),{promise:n,resolve:s}=at(),g=await this.getNextPacket(g,i)}l=!0,s()})().catch(g=>{u||(u=g,s())});const m=this._track;return{async next(){for(;;){if(m.input._disposed)throw new pt;if(d)return{value:void 0,done:!0};if(u)throw u;if(a.length>0){const g=a.shift(),b=performance.now();for(h.push(b);h.length>0&&b-h[0]>=1e3;)h.shift();return c(),{value:g,done:!1}}else{if(l)return{value:void 0,done:!0};await n}}},async return(){return d=!0,c(),s(),{value:void 0,done:!0}},async throw(g){throw g},[Symbol.asyncIterator](){return this}}}}class ts{constructor(e,t){this.onSample=e,this.onError=t}}class Yo{mediaSamplesInRange(e=0,t=1/0){or(e),or(t);const i=[];let a=!1,n=null,{promise:s,resolve:o}=at(),{promise:c,resolve:l}=at(),d=!1,u=!1,h=!1,p=null;(async()=>{const b=await this._createDecoder(P=>{if(l(),P.timestamp>=t&&(u=!0),u){P.close();return}n&&(P.timestamp>e?(i.push(n),a=!0):n.close()),P.timestamp>=e&&(i.push(P),a=!0),n=a?null:P,i.length>0&&(o(),{promise:s,resolve:o}=at())},P=>{p||(p=P,o())}),k=this._createPacketSink(),w=await k.getKeyPacket(e,{verifyKeyPackets:!0})??await k.getFirstPacket();let T=w;const C=k.packets(w??void 0,void 0);for(await C.next();T&&!u&&!this._track.input._disposed;){const P=Ls(i.length);if(i.length+b.getDecodeQueueSize()>P){({promise:c,resolve:l}=at()),await c;continue}b.decode(T);const B=await C.next();if(B.done)break;T=B.value}await C.return(),!h&&!this._track.input._disposed&&await b.flush(),b.close(),!a&&n&&i.push(n),d=!0,o()})().catch(b=>{p||(p=b,o())});const m=this._track,g=()=>{n?.close();for(const b of i)b.close()};return{async next(){for(;;){if(m.input._disposed)throw g(),new pt;if(h)return{value:void 0,done:!0};if(p)throw g(),p;if(i.length>0){const b=i.shift();return l(),{value:b,done:!1}}else if(!d)await s;else return{value:void 0,done:!0}}},async return(){return h=!0,u=!0,l(),o(),g(),{value:void 0,done:!0}},async throw(b){throw b},[Symbol.asyncIterator](){return this}}}mediaSamplesAtTimestamps(e){gd(e);const t=pd(e),i=[],a=[];let{promise:n,resolve:s}=at(),{promise:o,resolve:c}=at(),l=!1,d=!1,u=null;const h=g=>{a.push(g),s(),{promise:n,resolve:s}=at()};(async()=>{const g=await this._createDecoder(P=>{if(c(),d){P.close();return}let B=0;for(;i.length>0&&P.timestamp-i[0]>-1e-10;)B++,i.shift();if(B>0)for(let I=0;I<B;I++)h(I<B-1?P.clone():P);else P.close()},P=>{u||(u=P,s())}),b=this._createPacketSink();let k=null,w=null,T=-1;const S=async()=>{y(w);let P=w;for(g.decode(P);P.sequenceNumber<T;){const B=Ls(a.length);for(;a.length+g.getDecodeQueueSize()>B&&!d;)({promise:o,resolve:c}=at()),await o;if(d)break;const I=await b.getNextPacket(P);y(I),g.decode(I),P=I}T=-1},C=async()=>{await g.flush();for(let P=0;P<i.length;P++)h(null);i.length=0};for await(const P of t){if(or(P),d||this._track.input._disposed)break;const B=await b.getPacket(P),I=B&&await b.getKeyPacket(P,{verifyKeyPackets:!0});if(!I){T!==-1&&(await S(),await C()),h(null),k=null;continue}k&&(I.sequenceNumber!==w.sequenceNumber||B.timestamp<k.timestamp)&&(await S(),await C()),i.push(B.timestamp),T=Math.max(B.sequenceNumber,T),k=B,w=I}!d&&!this._track.input._disposed&&(T!==-1&&await S(),await C()),g.close(),l=!0,s()})().catch(g=>{u||(u=g,s())});const p=this._track,m=()=>{for(const g of a)g?.close()};return{async next(){for(;;){if(p.input._disposed)throw m(),new pt;if(d)return{value:void 0,done:!0};if(u)throw m(),u;if(a.length>0){const g=a.shift();return y(g!==void 0),c(),{value:g,done:!1}}else if(!l)await n;else return{value:void 0,done:!0}}},async return(){return d=!0,c(),s(),m(),{value:void 0,done:!0}},async throw(g){throw g},[Symbol.asyncIterator](){return this}}}}const Ls=r=>r===0?40:8;class lu extends ts{constructor(e,t,i,a,n,s){super(e,t),this.codec=i,this.decoderConfig=a,this.rotation=n,this.timeResolution=s,this.decoder=null,this.customDecoder=null,this.customDecoderCallSerializer=new Ca,this.customDecoderQueueSize=0,this.inputTimestamps=[],this.sampleQueue=[],this.currentPacketIndex=0,this.raslSkipped=!1,this.alphaDecoder=null,this.alphaHadKeyframe=!1,this.colorQueue=[],this.alphaQueue=[],this.merger=null,this.mergerCreationFailed=!1,this.decodedAlphaChunkCount=0,this.alphaDecoderQueueSize=0,this.nullAlphaFrameQueue=[],this.currentAlphaPacketIndex=0,this.alphaRaslSkipped=!1;const o=qo.find(c=>c.supports(i,a));if(o)this.customDecoder=new o,this.customDecoder.codec=i,this.customDecoder.config=a,this.customDecoder.onSample=c=>{if(!(c instanceof lt))throw new TypeError("The argument passed to onSample must be a VideoSample.");this.finalizeAndEmitSample(c)},this.customDecoderCallSerializer.call(()=>this.customDecoder.init());else{const c=d=>{if(this.alphaQueue.length>0){const u=this.alphaQueue.shift();y(u!==void 0),this.mergeAlpha(d,u)}else this.colorQueue.push(d)};if(i==="avc"&&this.decoderConfig.description&&ln()){const d=jd(yt(this.decoderConfig.description));if(d&&d.sequenceParameterSets.length>0){const u=$n(d.sequenceParameterSets[0]);u&&u.frameMbsOnlyFlag===0&&(this.decoderConfig={...this.decoderConfig,hardwareAcceleration:"prefer-software"})}}const l=new Error("Decoding error").stack;this.decoder=new VideoDecoder({output:d=>{try{c(d)}catch(u){this.onError(u)}},error:d=>{d.stack=l,this.onError(d)}}),this.decoder.configure(this.decoderConfig)}}getDecodeQueueSize(){return this.customDecoder?this.customDecoderQueueSize:(y(this.decoder),Math.max(this.decoder.decodeQueueSize,this.alphaDecoder?.decodeQueueSize??0))}decode(e){if(this.codec==="hevc"&&this.currentPacketIndex>0&&!this.raslSkipped){if(this.hasHevcRaslPicture(e.data))return;this.raslSkipped=!0}if(this.customDecoder)this.customDecoderQueueSize++,this.customDecoderCallSerializer.call(()=>this.customDecoder.decode(e)).then(()=>this.customDecoderQueueSize--);else{if(y(this.decoder),hi()||Es(this.inputTimestamps,e.timestamp,t=>t),ln()&&this.currentPacketIndex===0&&this.codec==="avc"){const t=[];for(const a of Mo(e.data,this.decoderConfig)){const n=Ia(e.data[a.offset]);n>=20&&n<=31||t.push(e.data.subarray(a.offset,a.offset+a.length))}const i=Wd(t,this.decoderConfig);e=new Le(i,e.type,e.timestamp,e.duration)}this.decoder.decode(e.toEncodedVideoChunk()),this.decodeAlphaData(e)}this.currentPacketIndex++}decodeAlphaData(e){if(!e.sideData.alpha||this.mergerCreationFailed){this.pushNullAlphaFrame();return}if(!this.merger)try{this.merger=new du}catch(i){console.error("Due to an error, only color data will be decoded.",i),this.mergerCreationFailed=!0,this.decodeAlphaData(e);return}if(!this.alphaDecoder){const i=n=>{if(this.alphaDecoderQueueSize--,this.colorQueue.length>0){const s=this.colorQueue.shift();y(s!==void 0),this.mergeAlpha(s,n)}else this.alphaQueue.push(n);for(this.decodedAlphaChunkCount++;this.nullAlphaFrameQueue.length>0&&this.nullAlphaFrameQueue[0]===this.decodedAlphaChunkCount;)if(this.nullAlphaFrameQueue.shift(),this.colorQueue.length>0){const s=this.colorQueue.shift();y(s!==void 0),this.mergeAlpha(s,null)}else this.alphaQueue.push(null)},a=new Error("Decoding error").stack;this.alphaDecoder=new VideoDecoder({output:n=>{try{i(n)}catch(s){this.onError(s)}},error:n=>{n.stack=a,this.onError(n)}}),this.alphaDecoder.configure(this.decoderConfig)}const t=jo(this.codec,this.decoderConfig,e.sideData.alpha);if(this.alphaHadKeyframe||(this.alphaHadKeyframe=t==="key"),this.alphaHadKeyframe){if(this.codec==="hevc"&&this.currentAlphaPacketIndex>0&&!this.alphaRaslSkipped){if(this.hasHevcRaslPicture(e.sideData.alpha)){this.pushNullAlphaFrame();return}this.alphaRaslSkipped=!0}this.currentAlphaPacketIndex++,this.alphaDecoder.decode(e.alphaToEncodedVideoChunk(t??e.type)),this.alphaDecoderQueueSize++}else this.pushNullAlphaFrame()}pushNullAlphaFrame(){this.alphaDecoderQueueSize===0?this.alphaQueue.push(null):this.nullAlphaFrameQueue.push(this.decodedAlphaChunkCount+this.alphaDecoderQueueSize)}hasHevcRaslPicture(e){for(const t of Oo(e,this.decoderConfig)){const i=Ii(e[t.offset]);if(i===nt.RASL_N||i===nt.RASL_R)return!0}return!1}sampleHandler(e){if(hi()){if(this.sampleQueue.length>0&&e.timestamp>=qe(this.sampleQueue).timestamp){for(const t of this.sampleQueue)this.finalizeAndEmitSample(t);this.sampleQueue.length=0}Es(this.sampleQueue,e,t=>t.timestamp)}else{const t=this.inputTimestamps.shift();y(t!==void 0),e.setTimestamp(t),this.finalizeAndEmitSample(e)}}finalizeAndEmitSample(e){e.setTimestamp(Math.round(e.timestamp*this.timeResolution)/this.timeResolution),e.setDuration(Math.round(e.duration*this.timeResolution)/this.timeResolution),e.setRotation(this.rotation),this.onSample(e)}mergeAlpha(e,t){if(!t){const n=new lt(e);this.sampleHandler(n);return}y(this.merger),this.merger.update(e,t),e.close(),t.close();const i=new VideoFrame(this.merger.canvas,{timestamp:e.timestamp,duration:e.duration??void 0}),a=new lt(i);this.sampleHandler(a)}async flush(){if(this.customDecoder?await this.customDecoderCallSerializer.call(()=>this.customDecoder.flush()):(y(this.decoder),await Promise.all([this.decoder.flush(),this.alphaDecoder?.flush()]),this.colorQueue.forEach(e=>e.close()),this.colorQueue.length=0,this.alphaQueue.forEach(e=>e?.close()),this.alphaQueue.length=0,this.alphaHadKeyframe=!1,this.decodedAlphaChunkCount=0,this.alphaDecoderQueueSize=0,this.nullAlphaFrameQueue.length=0,this.currentAlphaPacketIndex=0,this.alphaRaslSkipped=!1),hi()){for(const e of this.sampleQueue)this.finalizeAndEmitSample(e);this.sampleQueue.length=0}this.currentPacketIndex=0,this.raslSkipped=!1}close(){this.customDecoder?this.customDecoderCallSerializer.call(()=>this.customDecoder.close()):(y(this.decoder),this.decoder.close(),this.alphaDecoder?.close(),this.colorQueue.forEach(e=>e.close()),this.colorQueue.length=0,this.alphaQueue.forEach(e=>e?.close()),this.alphaQueue.length=0,this.merger?.close());for(const e of this.sampleQueue)e.close();this.sampleQueue.length=0}}class du{constructor(){typeof OffscreenCanvas<"u"?this.canvas=new OffscreenCanvas(300,150):this.canvas=document.createElement("canvas");const e=this.canvas.getContext("webgl2",{premultipliedAlpha:!1});if(!e)throw new Error("Couldn't acquire WebGL 2 context.");this.gl=e,this.program=this.createProgram(),this.vao=this.createVAO(),this.colorTexture=this.createTexture(),this.alphaTexture=this.createTexture(),this.gl.useProgram(this.program),this.gl.uniform1i(this.gl.getUniformLocation(this.program,"u_colorTexture"),0),this.gl.uniform1i(this.gl.getUniformLocation(this.program,"u_alphaTexture"),1)}createProgram(){const e=this.createShader(this.gl.VERTEX_SHADER,`#version 300 es
|
|
2
|
+
in vec2 a_position;
|
|
3
|
+
in vec2 a_texCoord;
|
|
4
|
+
out vec2 v_texCoord;
|
|
5
|
+
|
|
6
|
+
void main() {
|
|
7
|
+
gl_Position = vec4(a_position, 0.0, 1.0);
|
|
8
|
+
v_texCoord = a_texCoord;
|
|
9
|
+
}
|
|
10
|
+
`),t=this.createShader(this.gl.FRAGMENT_SHADER,`#version 300 es
|
|
11
|
+
precision highp float;
|
|
12
|
+
|
|
13
|
+
uniform sampler2D u_colorTexture;
|
|
14
|
+
uniform sampler2D u_alphaTexture;
|
|
15
|
+
in vec2 v_texCoord;
|
|
16
|
+
out vec4 fragColor;
|
|
17
|
+
|
|
18
|
+
void main() {
|
|
19
|
+
vec3 color = texture(u_colorTexture, v_texCoord).rgb;
|
|
20
|
+
float alpha = texture(u_alphaTexture, v_texCoord).r;
|
|
21
|
+
fragColor = vec4(color, alpha);
|
|
22
|
+
}
|
|
23
|
+
`),i=this.gl.createProgram();return this.gl.attachShader(i,e),this.gl.attachShader(i,t),this.gl.linkProgram(i),i}createShader(e,t){const i=this.gl.createShader(e);return this.gl.shaderSource(i,t),this.gl.compileShader(i),i}createVAO(){const e=this.gl.createVertexArray();this.gl.bindVertexArray(e);const t=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,1,1,1,0]),i=this.gl.createBuffer();this.gl.bindBuffer(this.gl.ARRAY_BUFFER,i),this.gl.bufferData(this.gl.ARRAY_BUFFER,t,this.gl.STATIC_DRAW);const a=this.gl.getAttribLocation(this.program,"a_position"),n=this.gl.getAttribLocation(this.program,"a_texCoord");return this.gl.enableVertexAttribArray(a),this.gl.vertexAttribPointer(a,2,this.gl.FLOAT,!1,16,0),this.gl.enableVertexAttribArray(n),this.gl.vertexAttribPointer(n,2,this.gl.FLOAT,!1,16,8),e}createTexture(){const e=this.gl.createTexture();return this.gl.bindTexture(this.gl.TEXTURE_2D,e),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),e}update(e,t){(e.displayWidth!==this.canvas.width||e.displayHeight!==this.canvas.height)&&(this.canvas.width=e.displayWidth,this.canvas.height=e.displayHeight),this.gl.activeTexture(this.gl.TEXTURE0),this.gl.bindTexture(this.gl.TEXTURE_2D,this.colorTexture),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,e),this.gl.activeTexture(this.gl.TEXTURE1),this.gl.bindTexture(this.gl.TEXTURE_2D,this.alphaTexture),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,t),this.gl.viewport(0,0,this.canvas.width,this.canvas.height),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.bindVertexArray(this.vao),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4)}close(){this.gl.getExtension("WEBGL_lose_context")?.loseContext(),this.gl=null}}class mn extends Yo{constructor(e){if(!(e instanceof ai))throw new TypeError("videoTrack must be an InputVideoTrack.");super(),this._track=e}async _createDecoder(e,t){if(!await this._track.canDecode())throw new Error("This video track cannot be decoded by this browser. Make sure to check decodability before using a track.");const i=this._track.codec,a=this._track.rotation,n=await this._track.getDecoderConfig(),s=this._track.timeResolution;return y(i&&n),new lu(e,t,i,n,a,s)}_createPacketSink(){return new Ai(this._track)}async getSample(e){or(e);for await(const t of this.mediaSamplesAtTimestamps([e]))return t;throw new Error("Internal error: Iterator returned nothing.")}samples(e=0,t=1/0){return this.mediaSamplesInRange(e,t)}samplesAtTimestamps(e){return this.mediaSamplesAtTimestamps(e)}}class uu{constructor(e,t={}){if(this._nextCanvasIndex=0,!(e instanceof ai))throw new TypeError("videoTrack must be an InputVideoTrack.");if(t&&typeof t!="object")throw new TypeError("options must be an object.");if(t.alpha!==void 0&&typeof t.alpha!="boolean")throw new TypeError("options.alpha, when provided, must be a boolean.");if(t.width!==void 0&&(!Number.isInteger(t.width)||t.width<=0))throw new TypeError("options.width, when defined, must be a positive integer.");if(t.height!==void 0&&(!Number.isInteger(t.height)||t.height<=0))throw new TypeError("options.height, when defined, must be a positive integer.");if(t.fit!==void 0&&!["fill","contain","cover"].includes(t.fit))throw new TypeError('options.fit, when provided, must be one of "fill", "contain", or "cover".');if(t.width!==void 0&&t.height!==void 0&&t.fit===void 0)throw new TypeError("When both options.width and options.height are provided, options.fit must also be provided.");if(t.rotation!==void 0&&![0,90,180,270].includes(t.rotation))throw new TypeError("options.rotation, when provided, must be 0, 90, 180 or 270.");if(t.crop!==void 0&&es(t.crop,"options."),t.poolSize!==void 0&&(typeof t.poolSize!="number"||!Number.isInteger(t.poolSize)||t.poolSize<0))throw new TypeError("poolSize must be a non-negative integer.");const i=t.rotation??e.rotation,[a,n]=i%180===0?[e.codedWidth,e.codedHeight]:[e.codedHeight,e.codedWidth],s=t.crop;s&&Jn(s,a,n);let[o,c]=s?[s.width,s.height]:[a,n];const l=o/c;t.width!==void 0&&t.height===void 0?(o=t.width,c=Math.round(o/l)):t.width===void 0&&t.height!==void 0?(c=t.height,o=Math.round(c*l)):t.width!==void 0&&t.height!==void 0&&(o=t.width,c=t.height),this._videoTrack=e,this._alpha=t.alpha??!1,this._width=o,this._height=c,this._rotation=i,this._crop=s,this._fit=t.fit??"fill",this._videoSampleSink=new mn(e),this._canvasPool=Array.from({length:t.poolSize??0},()=>null)}_videoSampleToWrappedCanvas(e){let t=this._canvasPool[this._nextCanvasIndex],i=!1;t||(typeof document<"u"?(t=document.createElement("canvas"),t.width=this._width,t.height=this._height):t=new OffscreenCanvas(this._width,this._height),this._canvasPool.length>0&&(this._canvasPool[this._nextCanvasIndex]=t),i=!0),this._canvasPool.length>0&&(this._nextCanvasIndex=(this._nextCanvasIndex+1)%this._canvasPool.length);const a=t.getContext("2d",{alpha:this._alpha||$r()});y(a),a.resetTransform(),i||(!this._alpha&&$r()?(a.fillStyle="black",a.fillRect(0,0,this._width,this._height)):a.clearRect(0,0,this._width,this._height)),e.drawWithFit(a,{fit:this._fit,rotation:this._rotation,crop:this._crop});const n={canvas:t,timestamp:e.timestamp,duration:e.duration};return e.close(),n}async getCanvas(e){or(e);const t=await this._videoSampleSink.getSample(e);return t&&this._videoSampleToWrappedCanvas(t)}canvases(e=0,t=1/0){return As(this._videoSampleSink.samples(e,t),i=>this._videoSampleToWrappedCanvas(i))}canvasesAtTimestamps(e){return As(this._videoSampleSink.samplesAtTimestamps(e),t=>t&&this._videoSampleToWrappedCanvas(t))}}class hu extends ts{constructor(e,t,i,a){super(e,t),this.decoder=null,this.customDecoder=null,this.customDecoderCallSerializer=new Ca,this.customDecoderQueueSize=0,this.currentTimestamp=null;const n=o=>{(this.currentTimestamp===null||Math.abs(o.timestamp-this.currentTimestamp)>=o.duration)&&(this.currentTimestamp=o.timestamp);const c=this.currentTimestamp;if(this.currentTimestamp+=o.duration,o.numberOfFrames===0){o.close();return}const l=a.sampleRate;o.setTimestamp(Math.round(c*l)/l),e(o)},s=Ko.find(o=>o.supports(i,a));if(s)this.customDecoder=new s,this.customDecoder.codec=i,this.customDecoder.config=a,this.customDecoder.onSample=o=>{if(!(o instanceof Tt))throw new TypeError("The argument passed to onSample must be an AudioSample.");n(o)},this.customDecoderCallSerializer.call(()=>this.customDecoder.init());else{const o=new Error("Decoding error").stack;this.decoder=new AudioDecoder({output:c=>{try{n(new Tt(c))}catch(l){this.onError(l)}},error:c=>{c.stack=o,this.onError(c)}}),this.decoder.configure(a)}}getDecodeQueueSize(){return this.customDecoder?this.customDecoderQueueSize:(y(this.decoder),this.decoder.decodeQueueSize)}decode(e){this.customDecoder?(this.customDecoderQueueSize++,this.customDecoderCallSerializer.call(()=>this.customDecoder.decode(e)).then(()=>this.customDecoderQueueSize--)):(y(this.decoder),this.decoder.decode(e.toEncodedAudioChunk()))}flush(){return this.customDecoder?this.customDecoderCallSerializer.call(()=>this.customDecoder.flush()):(y(this.decoder),this.decoder.flush())}close(){this.customDecoder?this.customDecoderCallSerializer.call(()=>this.customDecoder.close()):(y(this.decoder),this.decoder.close())}}class fu extends ts{constructor(e,t,i){super(e,t),this.decoderConfig=i,this.currentTimestamp=null,y(ht.includes(i.codec)),this.codec=i.codec;const{dataType:a,sampleSize:n,littleEndian:s}=hr(this.codec);switch(this.inputSampleSize=n,n){case 1:a==="unsigned"?this.readInputValue=(o,c)=>o.getUint8(c)-2**7:a==="signed"?this.readInputValue=(o,c)=>o.getInt8(c):a==="ulaw"?this.readInputValue=(o,c)=>ru(o.getUint8(c)):a==="alaw"?this.readInputValue=(o,c)=>au(o.getUint8(c)):y(!1);break;case 2:a==="unsigned"?this.readInputValue=(o,c)=>o.getUint16(c,s)-2**15:a==="signed"?this.readInputValue=(o,c)=>o.getInt16(c,s):y(!1);break;case 3:a==="unsigned"?this.readInputValue=(o,c)=>Pa(o,c,s)-2**23:a==="signed"?this.readInputValue=(o,c)=>bd(o,c,s):y(!1);break;case 4:a==="unsigned"?this.readInputValue=(o,c)=>o.getUint32(c,s)-2**31:a==="signed"?this.readInputValue=(o,c)=>o.getInt32(c,s):a==="float"?this.readInputValue=(o,c)=>o.getFloat32(c,s):y(!1);break;case 8:a==="float"?this.readInputValue=(o,c)=>o.getFloat64(c,s):y(!1);break;default:dr(n),y(!1)}switch(n){case 1:a==="ulaw"||a==="alaw"?(this.outputSampleSize=2,this.outputFormat="s16",this.writeOutputValue=(o,c,l)=>o.setInt16(c,l,!0)):(this.outputSampleSize=1,this.outputFormat="u8",this.writeOutputValue=(o,c,l)=>o.setUint8(c,l+2**7));break;case 2:this.outputSampleSize=2,this.outputFormat="s16",this.writeOutputValue=(o,c,l)=>o.setInt16(c,l,!0);break;case 3:this.outputSampleSize=4,this.outputFormat="s32",this.writeOutputValue=(o,c,l)=>o.setInt32(c,l<<8,!0);break;case 4:this.outputSampleSize=4,a==="float"?(this.outputFormat="f32",this.writeOutputValue=(o,c,l)=>o.setFloat32(c,l,!0)):(this.outputFormat="s32",this.writeOutputValue=(o,c,l)=>o.setInt32(c,l,!0));break;case 8:this.outputSampleSize=4,this.outputFormat="f32",this.writeOutputValue=(o,c,l)=>o.setFloat32(c,l,!0);break;default:dr(n),y(!1)}}getDecodeQueueSize(){return 0}decode(e){const t=Ke(e.data),i=e.byteLength/this.decoderConfig.numberOfChannels/this.inputSampleSize,a=i*this.decoderConfig.numberOfChannels*this.outputSampleSize,n=new ArrayBuffer(a),s=new DataView(n);for(let d=0;d<i*this.decoderConfig.numberOfChannels;d++){const u=d*this.inputSampleSize,h=d*this.outputSampleSize,p=this.readInputValue(t,u);this.writeOutputValue(s,h,p)}const o=i/this.decoderConfig.sampleRate;(this.currentTimestamp===null||Math.abs(e.timestamp-this.currentTimestamp)>=o)&&(this.currentTimestamp=e.timestamp);const c=this.currentTimestamp;this.currentTimestamp+=o;const l=new Tt({format:this.outputFormat,data:n,numberOfChannels:this.decoderConfig.numberOfChannels,sampleRate:this.decoderConfig.sampleRate,numberOfFrames:i,timestamp:c});this.onSample(l)}async flush(){}close(){}}class Ws extends Yo{constructor(e){if(!(e instanceof Vt))throw new TypeError("audioTrack must be an InputAudioTrack.");super(),this._track=e}async _createDecoder(e,t){if(!await this._track.canDecode())throw new Error("This audio track cannot be decoded by this browser. Make sure to check decodability before using a track.");const i=this._track.codec,a=await this._track.getDecoderConfig();return y(i&&a),ht.includes(a.codec)?new fu(e,t,a):new hu(e,t,i,a)}_createPacketSink(){return new Ai(this._track)}async getSample(e){or(e);for await(const t of this.mediaSamplesAtTimestamps([e]))return t;throw new Error("Internal error: Iterator returned nothing.")}samples(e=0,t=1/0){return this.mediaSamplesInRange(e,t)}samplesAtTimestamps(e){return this.mediaSamplesAtTimestamps(e)}}class rs{constructor(e,t){this.input=e,this._backing=t}isVideoTrack(){return this instanceof ai}isAudioTrack(){return this instanceof Vt}get id(){return this._backing.getId()}get number(){return this._backing.getNumber()}get internalCodecId(){return this._backing.getInternalCodecId()}get languageCode(){return this._backing.getLanguageCode()}get name(){return this._backing.getName()}get timeResolution(){return this._backing.getTimeResolution()}get disposition(){return this._backing.getDisposition()}getFirstTimestamp(){return this._backing.getFirstTimestamp()}computeDuration(){return this._backing.computeDuration()}async computePacketStats(e=1/0){const t=new Ai(this);let i=1/0,a=-1/0,n=0,s=0;for await(const o of t.packets(void 0,void 0,{metadataOnly:!0})){if(n>=e&&o.timestamp>=a)break;i=Math.min(i,o.timestamp),a=Math.max(a,o.timestamp+o.duration),n++,s+=o.byteLength}return{packetCount:n,averagePacketRate:n?Number((n/(a-i)).toPrecision(16)):0,averageBitrate:n?Number((8*s/(a-i)).toPrecision(16)):0}}}class ai extends rs{constructor(e,t){super(e,t),this._backing=t}get type(){return"video"}get codec(){return this._backing.getCodec()}get codedWidth(){return this._backing.getCodedWidth()}get codedHeight(){return this._backing.getCodedHeight()}get rotation(){return this._backing.getRotation()}get displayWidth(){return this._backing.getRotation()%180===0?this._backing.getCodedWidth():this._backing.getCodedHeight()}get displayHeight(){return this._backing.getRotation()%180===0?this._backing.getCodedHeight():this._backing.getCodedWidth()}getColorSpace(){return this._backing.getColorSpace()}async hasHighDynamicRange(){const e=await this._backing.getColorSpace();return e.primaries==="bt2020"||e.primaries==="smpte432"||e.transfer==="pg"||e.transfer==="hlg"||e.matrix==="bt2020-ncl"}canBeTransparent(){return this._backing.canBeTransparent()}getDecoderConfig(){return this._backing.getDecoderConfig()}async getCodecParameterString(){return(await this._backing.getDecoderConfig())?.codec??null}async canDecode(){try{const e=await this._backing.getDecoderConfig();if(!e)return!1;const t=this._backing.getCodec();return y(t!==null),qo.some(a=>a.supports(t,e))?!0:typeof VideoDecoder>"u"?!1:(await VideoDecoder.isConfigSupported(e)).supported===!0}catch(e){return console.error("Error during decodability check:",e),!1}}async determinePacketType(e){if(!(e instanceof Le))throw new TypeError("packet must be an EncodedPacket.");if(e.isMetadataOnly)throw new TypeError("packet must not be metadata-only to determine its type.");if(this.codec===null)return null;const t=await this.getDecoderConfig();return y(t),jo(this.codec,t,e.data)}}class Vt extends rs{constructor(e,t){super(e,t),this._backing=t}get type(){return"audio"}get codec(){return this._backing.getCodec()}get numberOfChannels(){return this._backing.getNumberOfChannels()}get sampleRate(){return this._backing.getSampleRate()}getDecoderConfig(){return this._backing.getDecoderConfig()}async getCodecParameterString(){return(await this._backing.getDecoderConfig())?.codec??null}async canDecode(){try{const e=await this._backing.getDecoderConfig();if(!e)return!1;const t=this._backing.getCodec();return y(t!==null),Ko.some(i=>i.supports(t,e))||e.codec.startsWith("pcm-")?!0:typeof AudioDecoder>"u"?!1:(await AudioDecoder.isConfigSupported(e)).supported===!0}catch(e){return console.error("Error during decodability check:",e),!1}}async determinePacketType(e){if(!(e instanceof Le))throw new TypeError("packet must be an EncodedPacket.");return this.codec===null?null:"key"}}const $o=r=>{let t=(r.hasVideo?"video/":r.hasAudio?"audio/":"application/")+(r.isQuickTime?"quicktime":"mp4");if(r.codecStrings.length>0){const i=[...new Set(r.codecStrings)];t+=`; codecs="${i.join(", ")}"`}return t};const qt=8,kr=16,er=r=>{let e=Y(r);const t=rt(r,4);let i=8;e===1&&(e=Ct(r),i=16);const n=e-i;return n<0?null:{name:t,totalSize:e,headerSize:i,contentSize:n}},pr=r=>Tr(r)/65536,Ha=r=>Tr(r)/1073741824,ja=r=>{let e=0;for(let t=0;t<4;t++){e<<=7;const i=re(r);if(e|=i&127,(i&128)===0)break}return e},Et=r=>{let e=et(r);return r.skip(2),e=Math.min(e,r.remainingLength),St.decode(le(r,e))},mu=r=>{const e=er(r);if(!e||e.name!=="data"||r.remainingLength<8)return null;const t=Y(r);r.skip(4);const i=le(r,e.contentSize-8);switch(t){case 1:return St.decode(i);case 2:return new TextDecoder("utf-16be").decode(i);case 13:return new jr(i,"image/jpeg");case 14:return new jr(i,"image/png");case 27:return new jr(i,"image/bmp");default:return i}};class pu extends fr{constructor(e){super(e),this.moovSlice=null,this.currentTrack=null,this.tracks=[],this.metadataPromise=null,this.movieTimescale=-1,this.movieDurationInTimescale=-1,this.isQuickTime=!1,this.metadataTags={},this.currentMetadataKeys=null,this.isFragmented=!1,this.fragmentTrackDefaults=[],this.currentFragment=null,this.lastReadFragment=null,this.reader=e._reader}async computeDuration(){const e=await this.getTracks(),t=await Promise.all(e.map(i=>i.computeDuration()));return Math.max(0,...t)}async getTracks(){return await this.readMetadata(),this.tracks.map(e=>e.inputTrack)}async getMimeType(){await this.readMetadata();const e=await Promise.all(this.tracks.map(t=>t.inputTrack.getCodecParameterString()));return $o({isQuickTime:this.isQuickTime,hasVideo:this.tracks.some(t=>t.info?.type==="video"),hasAudio:this.tracks.some(t=>t.info?.type==="audio"),codecStrings:e.filter(Boolean)})}async getMetadataTags(){return await this.readMetadata(),this.metadataTags}readMetadata(){return this.metadataPromise??=(async()=>{let e=0;for(;;){let t=this.reader.requestSliceRange(e,qt,kr);if(t instanceof Promise&&(t=await t),!t)break;const i=e,a=er(t);if(!a)break;if(a.name==="ftyp"){const n=rt(t,4);this.isQuickTime=n==="qt "}else if(a.name==="moov"){let n=this.reader.requestSlice(t.filePos,a.contentSize);if(n instanceof Promise&&(n=await n),!n)break;this.moovSlice=n,this.readContiguousBoxes(this.moovSlice),this.tracks.sort((s,o)=>Number(o.disposition.default)-Number(s.disposition.default));for(const s of this.tracks){const o=s.editListPreviousSegmentDurations/this.movieTimescale;s.editListOffset-=Math.round(o*s.timescale)}break}e=i+a.totalSize}if(this.isFragmented&&this.reader.fileSize!==null){let t=this.reader.requestSlice(this.reader.fileSize-4,4);t instanceof Promise&&(t=await t),y(t);const i=Y(t),a=this.reader.fileSize-i;if(a>=0&&a<=this.reader.fileSize-kr){let n=this.reader.requestSliceRange(a,qt,kr);if(n instanceof Promise&&(n=await n),n){const s=er(n);if(s&&s.name==="mfra"){let o=this.reader.requestSlice(n.filePos,s.contentSize);o instanceof Promise&&(o=await o),o&&this.readContiguousBoxes(o)}}}}})()}getSampleTableForTrack(e){if(e.sampleTable)return e.sampleTable;const t={sampleTimingEntries:[],sampleCompositionTimeOffsets:[],sampleSizes:[],keySampleIndices:null,chunkOffsets:[],sampleToChunk:[],presentationTimestamps:null,presentationTimestampIndexMap:null};e.sampleTable=t,y(this.moovSlice);const i=this.moovSlice.slice(e.sampleTableByteOffset);if(this.currentTrack=e,this.traverseBox(i),this.currentTrack=null,e.info?.type==="audio"&&e.info.codec&&ht.includes(e.info.codec)&&t.sampleCompositionTimeOffsets.length===0){y(e.info?.type==="audio");const n=hr(e.info.codec),s=[],o=[];for(let c=0;c<t.sampleToChunk.length;c++){const l=t.sampleToChunk[c],d=t.sampleToChunk[c+1],u=(d?d.startChunkIndex:t.chunkOffsets.length)-l.startChunkIndex;for(let h=0;h<u;h++){const p=l.startSampleIndex+h*l.samplesPerChunk,m=p+l.samplesPerChunk,g=Fe(t.sampleTimingEntries,p,I=>I.startIndex),b=t.sampleTimingEntries[g],k=Fe(t.sampleTimingEntries,m,I=>I.startIndex),w=t.sampleTimingEntries[k],T=b.startDecodeTimestamp+(p-b.startIndex)*b.delta,C=w.startDecodeTimestamp+(m-w.startIndex)*w.delta-T,P=qe(s);P&&P.delta===C?P.count++:s.push({startIndex:l.startChunkIndex+h,startDecodeTimestamp:T,count:1,delta:C});const B=l.samplesPerChunk*n.sampleSize*e.info.numberOfChannels;o.push(B)}l.startSampleIndex=l.startChunkIndex,l.samplesPerChunk=1}t.sampleTimingEntries=s,t.sampleSizes=o}if(t.sampleCompositionTimeOffsets.length>0){t.presentationTimestamps=[];for(const n of t.sampleTimingEntries)for(let s=0;s<n.count;s++)t.presentationTimestamps.push({presentationTimestamp:n.startDecodeTimestamp+s*n.delta,sampleIndex:n.startIndex+s});for(const n of t.sampleCompositionTimeOffsets)for(let s=0;s<n.count;s++){const o=n.startIndex+s,c=t.presentationTimestamps[o];c&&(c.presentationTimestamp+=n.offset)}t.presentationTimestamps.sort((n,s)=>n.presentationTimestamp-s.presentationTimestamp),t.presentationTimestampIndexMap=Array(t.presentationTimestamps.length).fill(-1);for(let n=0;n<t.presentationTimestamps.length;n++)t.presentationTimestampIndexMap[t.presentationTimestamps[n].sampleIndex]=n}return t}async readFragment(e){if(this.lastReadFragment?.moofOffset===e)return this.lastReadFragment;let t=this.reader.requestSliceRange(e,qt,kr);t instanceof Promise&&(t=await t),y(t);const i=er(t);y(i?.name==="moof");let a=this.reader.requestSlice(e,i.totalSize);a instanceof Promise&&(a=await a),y(a),this.traverseBox(a);const n=this.lastReadFragment;y(n&&n.moofOffset===e);for(const[,s]of n.trackData){const o=s.track,{fragmentPositionCache:c}=o;if(!s.startTimestampIsFinal){const d=o.fragmentLookupTable.find(u=>u.moofOffset===n.moofOffset);if(d)qa(s,d.timestamp);else{const u=Fe(c,n.moofOffset-1,h=>h.moofOffset);if(u!==-1){const h=c[u];qa(s,h.endTimestamp)}}s.startTimestampIsFinal=!0}const l=Fe(c,s.startTimestamp,d=>d.startTimestamp);(l===-1||c[l].moofOffset!==n.moofOffset)&&c.splice(l+1,0,{moofOffset:n.moofOffset,startTimestamp:s.startTimestamp,endTimestamp:s.endTimestamp})}return n}readContiguousBoxes(e){const t=e.filePos;for(;e.filePos-t<=e.length-qt&&this.traverseBox(e););}*iterateContiguousBoxes(e){const t=e.filePos;for(;e.filePos-t<=e.length-qt;){const i=e.filePos,a=er(e);if(!a)break;yield{boxInfo:a,slice:e},e.filePos=i+a.totalSize}}traverseBox(e){const t=e.filePos,i=er(e);if(!i)return!1;const a=e.filePos,n=t+i.totalSize;switch(i.name){case"mdia":case"minf":case"dinf":case"mfra":case"edts":this.readContiguousBoxes(e.slice(a,i.contentSize));break;case"mvhd":{const s=re(e);e.skip(3),s===1?(e.skip(16),this.movieTimescale=Y(e),this.movieDurationInTimescale=Ct(e)):(e.skip(8),this.movieTimescale=Y(e),this.movieDurationInTimescale=Y(e))}break;case"trak":{const s={id:-1,demuxer:this,inputTrack:null,disposition:{...ur},info:null,timescale:-1,durationInMovieTimescale:-1,durationInMediaTimescale:-1,rotation:0,internalCodecId:null,name:null,languageCode:bt,sampleTableByteOffset:-1,sampleTable:null,fragmentLookupTable:[],currentFragmentState:null,fragmentPositionCache:[],editListPreviousSegmentDurations:0,editListOffset:0};if(this.currentTrack=s,this.readContiguousBoxes(e.slice(a,i.contentSize)),s.id!==-1&&s.timescale!==-1&&s.info!==null){if(s.info.type==="video"&&s.info.width!==-1){const o=s;s.inputTrack=new ai(this.input,new gu(o)),this.tracks.push(s)}else if(s.info.type==="audio"&&s.info.numberOfChannels!==-1){const o=s;s.inputTrack=new Vt(this.input,new bu(o)),this.tracks.push(s)}}this.currentTrack=null}break;case"tkhd":{const s=this.currentTrack;if(!s)break;const o=re(e),l=!!(Nr(e)&1);if(s.disposition.default=l,o===0)e.skip(8),s.id=Y(e),e.skip(4),s.durationInMovieTimescale=Y(e);else if(o===1)e.skip(16),s.id=Y(e),e.skip(4),s.durationInMovieTimescale=Ct(e);else throw new Error(`Incorrect track header version ${o}.`);e.skip(16);const d=[pr(e),pr(e),Ha(e),pr(e),pr(e),Ha(e),pr(e),pr(e),Ha(e)],u=Hn(wd(vu(d),90));y(u===0||u===90||u===180||u===270),s.rotation=u}break;case"elst":{const s=this.currentTrack;if(!s)break;const o=re(e);e.skip(3);let c=!1,l=0;const d=Y(e);for(let u=0;u<d;u++){const h=o===1?Ct(e):Y(e),p=o===1?zh(e):Tr(e),m=pr(e);if(h!==0){if(c){console.warn("Unsupported edit list: multiple edits are not currently supported. Only using first edit.");break}if(p===-1){l+=h;continue}if(m!==1){console.warn("Unsupported edit list entry: media rate must be 1.");break}s.editListPreviousSegmentDurations=l,s.editListOffset=p,c=!0}}}break;case"mdhd":{const s=this.currentTrack;if(!s)break;const o=re(e);e.skip(3),o===0?(e.skip(8),s.timescale=Y(e),s.durationInMediaTimescale=Y(e)):o===1&&(e.skip(16),s.timescale=Y(e),s.durationInMediaTimescale=Ct(e));let c=et(e);if(c>0){s.languageCode="";for(let l=0;l<3;l++)s.languageCode=String.fromCharCode(96+(c&31))+s.languageCode,c>>=5;_i(s.languageCode)||(s.languageCode=bt)}}break;case"hdlr":{const s=this.currentTrack;if(!s)break;e.skip(8);const o=rt(e,4);o==="vide"?s.info={type:"video",width:-1,height:-1,codec:null,codecDescription:null,colorSpace:null,avcType:null,avcCodecInfo:null,hevcCodecInfo:null,vp9CodecInfo:null,av1CodecInfo:null}:o==="soun"&&(s.info={type:"audio",numberOfChannels:-1,sampleRate:-1,codec:null,codecDescription:null,aacCodecInfo:null})}break;case"stbl":{const s=this.currentTrack;if(!s)break;s.sampleTableByteOffset=t,this.readContiguousBoxes(e.slice(a,i.contentSize))}break;case"stsd":{const s=this.currentTrack;if(!s||s.info===null||s.sampleTable)break;const o=re(e);e.skip(3);const c=Y(e);for(let l=0;l<c;l++){const d=e.filePos,u=er(e);if(!u)break;s.internalCodecId=u.name;const h=u.name.toLowerCase();if(s.info.type==="video")h==="avc1"||h==="avc3"?(s.info.codec="avc",s.info.avcType=h==="avc1"?1:3):h==="hvc1"||h==="hev1"?s.info.codec="hevc":h==="vp08"?s.info.codec="vp8":h==="vp09"?s.info.codec="vp9":h==="av01"?s.info.codec="av1":console.warn(`Unsupported video codec (sample entry type '${u.name}').`),e.skip(24),s.info.width=et(e),s.info.height=et(e),e.skip(50),this.readContiguousBoxes(e.slice(e.filePos,d+u.totalSize-e.filePos));else{h==="mp4a"||(h==="opus"?s.info.codec="opus":h==="flac"?s.info.codec="flac":h==="twos"||h==="sowt"||h==="raw "||h==="in24"||h==="in32"||h==="fl32"||h==="fl64"||h==="lpcm"||h==="ipcm"||h==="fpcm"||(h==="ulaw"?s.info.codec="ulaw":h==="alaw"?s.info.codec="alaw":console.warn(`Unsupported audio codec (sample entry type '${u.name}').`))),e.skip(8);const p=et(e);e.skip(6);let m=et(e),g=et(e);e.skip(4);let b=Y(e)/65536;if(o===0&&p>0){if(p===1)e.skip(4),g=8*Y(e),e.skip(8);else if(p===2){e.skip(4),b=uc(e),m=Y(e),e.skip(4),g=Y(e);const k=Y(e);if(e.skip(8),h==="lpcm"){const w=g+7>>3,T=!!(k&1),S=!!(k&2),C=k&4?-1:0;g>0&&g<=64&&(T?g===32&&(s.info.codec=S?"pcm-f32be":"pcm-f32"):C&1<<w-1?w===1?s.info.codec="pcm-s8":w===2?s.info.codec=S?"pcm-s16be":"pcm-s16":w===3?s.info.codec=S?"pcm-s24be":"pcm-s24":w===4&&(s.info.codec=S?"pcm-s32be":"pcm-s32"):w===1&&(s.info.codec="pcm-u8")),s.info.codec===null&&console.warn("Unsupported PCM format.")}}}s.info.codec==="opus"&&(b=_a),s.info.numberOfChannels=m,s.info.sampleRate=b,h==="twos"?g===8?s.info.codec="pcm-s8":g===16?s.info.codec="pcm-s16be":(console.warn(`Unsupported sample size ${g} for codec 'twos'.`),s.info.codec=null):h==="sowt"?g===8?s.info.codec="pcm-s8":g===16?s.info.codec="pcm-s16":(console.warn(`Unsupported sample size ${g} for codec 'sowt'.`),s.info.codec=null):h==="raw "?s.info.codec="pcm-u8":h==="in24"?s.info.codec="pcm-s24be":h==="in32"?s.info.codec="pcm-s32be":h==="fl32"?s.info.codec="pcm-f32be":h==="fl64"?s.info.codec="pcm-f64be":h==="ipcm"?s.info.codec="pcm-s16be":h==="fpcm"&&(s.info.codec="pcm-f32be"),this.readContiguousBoxes(e.slice(e.filePos,d+u.totalSize-e.filePos))}}}break;case"avcC":{const s=this.currentTrack;if(!s)break;y(s.info),s.info.codecDescription=le(e,i.contentSize)}break;case"hvcC":{const s=this.currentTrack;if(!s)break;y(s.info),s.info.codecDescription=le(e,i.contentSize)}break;case"vpcC":{const s=this.currentTrack;if(!s)break;y(s.info?.type==="video"),e.skip(4);const o=re(e),c=re(e),l=re(e),d=l>>4,u=l>>1&7,h=l&1,p=re(e),m=re(e),g=re(e);s.info.vp9CodecInfo={profile:o,level:c,bitDepth:d,chromaSubsampling:u,videoFullRangeFlag:h,colourPrimaries:p,transferCharacteristics:m,matrixCoefficients:g}}break;case"av1C":{const s=this.currentTrack;if(!s)break;y(s.info?.type==="video"),e.skip(1);const o=re(e),c=o>>5,l=o&31,d=re(e),u=d>>7,h=d>>6&1,p=d>>5&1,m=d>>4&1,g=d>>3&1,b=d>>2&1,k=d&3,w=c===2&&h?p?12:10:h?10:8;s.info.av1CodecInfo={profile:c,level:l,tier:u,bitDepth:w,monochrome:m,chromaSubsamplingX:g,chromaSubsamplingY:b,chromaSamplePosition:k}}break;case"colr":{const s=this.currentTrack;if(!s||(y(s.info?.type==="video"),rt(e,4)!=="nclx"))break;const c=et(e),l=et(e),d=et(e),u=!!(re(e)&128);s.info.colorSpace={primaries:ia[c],transfer:aa[l],matrix:na[d],fullRange:u}}break;case"wave":this.readContiguousBoxes(e.slice(a,i.contentSize));break;case"esds":{const s=this.currentTrack;if(!s)break;y(s.info?.type==="audio"),e.skip(4);const o=re(e);y(o===3),ja(e),e.skip(2);const c=re(e),l=(c&128)!==0,d=(c&64)!==0,u=(c&32)!==0;if(l&&e.skip(2),d){const b=re(e);e.skip(b)}u&&e.skip(2);const h=re(e);y(h===4);const p=ja(e),m=e.filePos,g=re(e);if(g===64||g===103?(s.info.codec="aac",s.info.aacCodecInfo={isMpeg2:g===103,objectType:null}):g===105||g===107?s.info.codec="mp3":g===221?s.info.codec="vorbis":console.warn(`Unsupported audio codec (objectTypeIndication ${g}) - discarding track.`),e.skip(12),p>e.filePos-m){const b=re(e);y(b===5);const k=ja(e);if(s.info.codecDescription=le(e,k),s.info.codec==="aac"){const w=Xn(s.info.codecDescription);w.numberOfChannels!==null&&(s.info.numberOfChannels=w.numberOfChannels),w.sampleRate!==null&&(s.info.sampleRate=w.sampleRate)}}}break;case"enda":{const s=this.currentTrack;if(!s)break;y(s.info?.type==="audio"),et(e)&255&&(s.info.codec==="pcm-s16be"?s.info.codec="pcm-s16":s.info.codec==="pcm-s24be"?s.info.codec="pcm-s24":s.info.codec==="pcm-s32be"?s.info.codec="pcm-s32":s.info.codec==="pcm-f32be"?s.info.codec="pcm-f32":s.info.codec==="pcm-f64be"&&(s.info.codec="pcm-f64"))}break;case"pcmC":{const s=this.currentTrack;if(!s)break;y(s.info?.type==="audio"),e.skip(4);const c=!!(re(e)&1),l=re(e);s.info.codec==="pcm-s16be"?c?l===16?s.info.codec="pcm-s16":l===24?s.info.codec="pcm-s24":l===32?s.info.codec="pcm-s32":(console.warn(`Invalid ipcm sample size ${l}.`),s.info.codec=null):l===16?s.info.codec="pcm-s16be":l===24?s.info.codec="pcm-s24be":l===32?s.info.codec="pcm-s32be":(console.warn(`Invalid ipcm sample size ${l}.`),s.info.codec=null):s.info.codec==="pcm-f32be"&&(c?l===32?s.info.codec="pcm-f32":l===64?s.info.codec="pcm-f64":(console.warn(`Invalid fpcm sample size ${l}.`),s.info.codec=null):l===32?s.info.codec="pcm-f32be":l===64?s.info.codec="pcm-f64be":(console.warn(`Invalid fpcm sample size ${l}.`),s.info.codec=null));break}case"dOps":{const s=this.currentTrack;if(!s)break;y(s.info?.type==="audio"),e.skip(1);const o=re(e),c=et(e),l=Y(e),d=vn(e),u=re(e);let h;u!==0?h=le(e,2+o):h=new Uint8Array(0);const p=new Uint8Array(19+h.byteLength),m=new DataView(p.buffer);m.setUint32(0,1332770163,!1),m.setUint32(4,1214603620,!1),m.setUint8(8,1),m.setUint8(9,o),m.setUint16(10,c,!0),m.setUint32(12,l,!0),m.setInt16(16,d,!0),m.setUint8(18,u),p.set(h,19),s.info.codecDescription=p,s.info.numberOfChannels=o}break;case"dfLa":{const s=this.currentTrack;if(!s)break;y(s.info?.type==="audio"),e.skip(4);const o=127,c=128,l=e.filePos;for(;e.filePos<n;){const m=re(e),g=Nr(e);if((m&o)===qr.STREAMINFO){e.skip(10);const k=Y(e),w=k>>>12,T=(k>>9&7)+1;s.info.sampleRate=w,s.info.numberOfChannels=T,e.skip(20)}else e.skip(g);if(m&c)break}const d=e.filePos;e.filePos=l;const u=le(e,d-l),h=new Uint8Array(4+u.byteLength);new DataView(h.buffer).setUint32(0,1716281667,!1),h.set(u,4),s.info.codecDescription=h}break;case"stts":{const s=this.currentTrack;if(!s||!s.sampleTable)break;e.skip(4);const o=Y(e);let c=0,l=0;for(let d=0;d<o;d++){const u=Y(e),h=Y(e);s.sampleTable.sampleTimingEntries.push({startIndex:c,startDecodeTimestamp:l,count:u,delta:h}),c+=u,l+=u*h}}break;case"ctts":{const s=this.currentTrack;if(!s||!s.sampleTable)break;e.skip(4);const o=Y(e);let c=0;for(let l=0;l<o;l++){const d=Y(e),u=Tr(e);s.sampleTable.sampleCompositionTimeOffsets.push({startIndex:c,count:d,offset:u}),c+=d}}break;case"stsz":{const s=this.currentTrack;if(!s||!s.sampleTable)break;e.skip(4);const o=Y(e),c=Y(e);if(o===0)for(let l=0;l<c;l++){const d=Y(e);s.sampleTable.sampleSizes.push(d)}else s.sampleTable.sampleSizes.push(o)}break;case"stz2":{const s=this.currentTrack;if(!s||!s.sampleTable)break;e.skip(4),e.skip(3);const o=re(e),c=Y(e),l=le(e,Math.ceil(c*o/8)),d=new We(l);for(let u=0;u<c;u++){const h=d.readBits(o);s.sampleTable.sampleSizes.push(h)}}break;case"stss":{const s=this.currentTrack;if(!s||!s.sampleTable)break;e.skip(4),s.sampleTable.keySampleIndices=[];const o=Y(e);for(let c=0;c<o;c++){const l=Y(e)-1;s.sampleTable.keySampleIndices.push(l)}s.sampleTable.keySampleIndices[0]!==0&&s.sampleTable.keySampleIndices.unshift(0)}break;case"stsc":{const s=this.currentTrack;if(!s||!s.sampleTable)break;e.skip(4);const o=Y(e);for(let l=0;l<o;l++){const d=Y(e)-1,u=Y(e),h=Y(e);s.sampleTable.sampleToChunk.push({startSampleIndex:-1,startChunkIndex:d,samplesPerChunk:u,sampleDescriptionIndex:h})}let c=0;for(let l=0;l<s.sampleTable.sampleToChunk.length;l++)if(s.sampleTable.sampleToChunk[l].startSampleIndex=c,l<s.sampleTable.sampleToChunk.length-1){const u=s.sampleTable.sampleToChunk[l+1].startChunkIndex-s.sampleTable.sampleToChunk[l].startChunkIndex;c+=u*s.sampleTable.sampleToChunk[l].samplesPerChunk}}break;case"stco":{const s=this.currentTrack;if(!s||!s.sampleTable)break;e.skip(4);const o=Y(e);for(let c=0;c<o;c++){const l=Y(e);s.sampleTable.chunkOffsets.push(l)}}break;case"co64":{const s=this.currentTrack;if(!s||!s.sampleTable)break;e.skip(4);const o=Y(e);for(let c=0;c<o;c++){const l=Ct(e);s.sampleTable.chunkOffsets.push(l)}}break;case"mvex":this.isFragmented=!0,this.readContiguousBoxes(e.slice(a,i.contentSize));break;case"mehd":{const s=re(e);e.skip(3);const o=s===1?Ct(e):Y(e);this.movieDurationInTimescale=o}break;case"trex":{e.skip(4);const s=Y(e),o=Y(e),c=Y(e),l=Y(e),d=Y(e);this.fragmentTrackDefaults.push({trackId:s,defaultSampleDescriptionIndex:o,defaultSampleDuration:c,defaultSampleSize:l,defaultSampleFlags:d})}break;case"tfra":{const s=re(e);e.skip(3);const o=Y(e),c=this.tracks.find(w=>w.id===o);if(!c)break;const l=Y(e),d=(l&48)>>4,u=(l&12)>>2,h=l&3,p=[re,et,Nr,Y],m=p[d],g=p[u],b=p[h],k=Y(e);for(let w=0;w<k;w++){const T=s===1?Ct(e):Y(e),S=s===1?Ct(e):Y(e);m(e),g(e),b(e),c.fragmentLookupTable.push({timestamp:T,moofOffset:S})}c.fragmentLookupTable.sort((w,T)=>w.timestamp-T.timestamp);for(let w=0;w<c.fragmentLookupTable.length-1;w++){const T=c.fragmentLookupTable[w],S=c.fragmentLookupTable[w+1];T.timestamp===S.timestamp&&(c.fragmentLookupTable.splice(w+1,1),w--)}}break;case"moof":this.currentFragment={moofOffset:t,moofSize:i.totalSize,implicitBaseDataOffset:t,trackData:new Map},this.readContiguousBoxes(e.slice(a,i.contentSize)),this.lastReadFragment=this.currentFragment,this.currentFragment=null;break;case"traf":if(y(this.currentFragment),this.readContiguousBoxes(e.slice(a,i.contentSize)),this.currentTrack){const s=this.currentFragment.trackData.get(this.currentTrack.id);if(s){const{currentFragmentState:o}=this.currentTrack;y(o),o.startTimestamp!==null&&(qa(s,o.startTimestamp),s.startTimestampIsFinal=!0)}this.currentTrack.currentFragmentState=null,this.currentTrack=null}break;case"tfhd":{y(this.currentFragment),e.skip(1);const s=Nr(e),o=!!(s&1),c=!!(s&2),l=!!(s&8),d=!!(s&16),u=!!(s&32),h=!!(s&65536),p=!!(s&131072),m=Y(e),g=this.tracks.find(k=>k.id===m);if(!g)break;const b=this.fragmentTrackDefaults.find(k=>k.trackId===m);this.currentTrack=g,g.currentFragmentState={baseDataOffset:this.currentFragment.implicitBaseDataOffset,sampleDescriptionIndex:b?.defaultSampleDescriptionIndex??null,defaultSampleDuration:b?.defaultSampleDuration??null,defaultSampleSize:b?.defaultSampleSize??null,defaultSampleFlags:b?.defaultSampleFlags??null,startTimestamp:null},o?g.currentFragmentState.baseDataOffset=Ct(e):p&&(g.currentFragmentState.baseDataOffset=this.currentFragment.moofOffset),c&&(g.currentFragmentState.sampleDescriptionIndex=Y(e)),l&&(g.currentFragmentState.defaultSampleDuration=Y(e)),d&&(g.currentFragmentState.defaultSampleSize=Y(e)),u&&(g.currentFragmentState.defaultSampleFlags=Y(e)),h&&(g.currentFragmentState.defaultSampleDuration=0)}break;case"tfdt":{const s=this.currentTrack;if(!s)break;y(s.currentFragmentState);const o=re(e);e.skip(3);const c=o===0?Y(e):Ct(e);s.currentFragmentState.startTimestamp=c}break;case"trun":{const s=this.currentTrack;if(!s)break;if(y(this.currentFragment),y(s.currentFragmentState),this.currentFragment.trackData.has(s.id)){console.warn("Can't have two trun boxes for the same track in one fragment. Ignoring...");break}const o=re(e),c=Nr(e),l=!!(c&1),d=!!(c&4),u=!!(c&256),h=!!(c&512),p=!!(c&1024),m=!!(c&2048),g=Y(e);let b=s.currentFragmentState.baseDataOffset;l&&(b+=Tr(e));let k=null;d&&(k=Y(e));let w=b;if(g===0){this.currentFragment.implicitBaseDataOffset=w;break}let T=0;const S={track:s,startTimestamp:0,endTimestamp:0,firstKeyFrameTimestamp:null,samples:[],presentationTimestamps:[],startTimestampIsFinal:!1};this.currentFragment.trackData.set(s.id,S);for(let B=0;B<g;B++){let I;u?I=Y(e):(y(s.currentFragmentState.defaultSampleDuration!==null),I=s.currentFragmentState.defaultSampleDuration);let R;h?R=Y(e):(y(s.currentFragmentState.defaultSampleSize!==null),R=s.currentFragmentState.defaultSampleSize);let A;p?A=Y(e):(y(s.currentFragmentState.defaultSampleFlags!==null),A=s.currentFragmentState.defaultSampleFlags),B===0&&k!==null&&(A=k);let x=0;m&&(o===0?x=Y(e):x=Tr(e));const F=!(A&65536);S.samples.push({presentationTimestamp:T+x,duration:I,byteOffset:w,byteSize:R,isKeyFrame:F}),w+=R,T+=I}S.presentationTimestamps=S.samples.map((B,I)=>({presentationTimestamp:B.presentationTimestamp,sampleIndex:I})).sort((B,I)=>B.presentationTimestamp-I.presentationTimestamp);for(let B=0;B<S.presentationTimestamps.length;B++){const I=S.presentationTimestamps[B],R=S.samples[I.sampleIndex];if(S.firstKeyFrameTimestamp===null&&R.isKeyFrame&&(S.firstKeyFrameTimestamp=R.presentationTimestamp),B<S.presentationTimestamps.length-1){const A=S.presentationTimestamps[B+1];R.duration=A.presentationTimestamp-I.presentationTimestamp}}const C=S.samples[S.presentationTimestamps[0].sampleIndex],P=S.samples[qe(S.presentationTimestamps).sampleIndex];S.startTimestamp=C.presentationTimestamp,S.endTimestamp=P.presentationTimestamp+P.duration,this.currentFragment.implicitBaseDataOffset=w}break;case"udta":{const s=this.iterateContiguousBoxes(e.slice(a,i.contentSize));for(const{boxInfo:o,slice:c}of s){if(o.name!=="meta"&&!this.currentTrack){const l=c.filePos;this.metadataTags.raw??={},o.name[0]==="©"?this.metadataTags.raw[o.name]??=Et(c):this.metadataTags.raw[o.name]??=le(c,o.contentSize),c.filePos=l}switch(o.name){case"meta":c.skip(-o.headerSize),this.traverseBox(c);break;case"©nam":case"name":this.currentTrack?this.currentTrack.name=St.decode(le(c,o.contentSize)):this.metadataTags.title??=Et(c);break;case"©des":this.currentTrack||(this.metadataTags.description??=Et(c));break;case"©ART":this.currentTrack||(this.metadataTags.artist??=Et(c));break;case"©alb":this.currentTrack||(this.metadataTags.album??=Et(c));break;case"albr":this.currentTrack||(this.metadataTags.albumArtist??=Et(c));break;case"©gen":this.currentTrack||(this.metadataTags.genre??=Et(c));break;case"©day":if(!this.currentTrack){const l=new Date(Et(c));Number.isNaN(l.getTime())||(this.metadataTags.date??=l)}break;case"©cmt":this.currentTrack||(this.metadataTags.comment??=Et(c));break;case"©lyr":this.currentTrack||(this.metadataTags.lyrics??=Et(c));break}}}break;case"meta":{if(this.currentTrack)break;const o=Y(e)!==0;this.currentMetadataKeys=new Map,o?this.readContiguousBoxes(e.slice(a,i.contentSize)):this.readContiguousBoxes(e.slice(a+4,i.contentSize-4)),this.currentMetadataKeys=null}break;case"keys":{if(!this.currentMetadataKeys)break;e.skip(4);const s=Y(e);for(let o=0;o<s;o++){const c=Y(e);e.skip(4);const l=St.decode(le(e,c-8));this.currentMetadataKeys.set(o+1,l)}}break;case"ilst":{if(!this.currentMetadataKeys)break;const s=this.iterateContiguousBoxes(e.slice(a,i.contentSize));for(const{boxInfo:o,slice:c}of s){let l=o.name;const d=(l.charCodeAt(0)<<24)+(l.charCodeAt(1)<<16)+(l.charCodeAt(2)<<8)+l.charCodeAt(3);this.currentMetadataKeys.has(d)&&(l=this.currentMetadataKeys.get(d));const u=mu(c);switch(this.metadataTags.raw??={},this.metadataTags.raw[l]??=u,l){case"©nam":case"titl":case"com.apple.quicktime.title":case"title":typeof u=="string"&&(this.metadataTags.title??=u);break;case"©des":case"desc":case"dscp":case"com.apple.quicktime.description":case"description":typeof u=="string"&&(this.metadataTags.description??=u);break;case"©ART":case"com.apple.quicktime.artist":case"artist":typeof u=="string"&&(this.metadataTags.artist??=u);break;case"©alb":case"albm":case"com.apple.quicktime.album":case"album":typeof u=="string"&&(this.metadataTags.album??=u);break;case"aART":case"album_artist":typeof u=="string"&&(this.metadataTags.albumArtist??=u);break;case"©cmt":case"com.apple.quicktime.comment":case"comment":typeof u=="string"&&(this.metadataTags.comment??=u);break;case"©gen":case"gnre":case"com.apple.quicktime.genre":case"genre":typeof u=="string"&&(this.metadataTags.genre??=u);break;case"©lyr":case"lyrics":typeof u=="string"&&(this.metadataTags.lyrics??=u);break;case"©day":case"rldt":case"com.apple.quicktime.creationdate":case"date":if(typeof u=="string"){const h=new Date(u);Number.isNaN(h.getTime())||(this.metadataTags.date??=h)}break;case"covr":case"com.apple.quicktime.artwork":u instanceof jr?(this.metadataTags.images??=[],this.metadataTags.images.push({data:u.data,kind:"coverFront",mimeType:u.mimeType})):u instanceof Uint8Array&&(this.metadataTags.images??=[],this.metadataTags.images.push({data:u,kind:"coverFront",mimeType:"image/*"}));break;case"track":if(typeof u=="string"){const h=u.split("/"),p=Number.parseInt(h[0],10),m=h[1]&&Number.parseInt(h[1],10);Number.isInteger(p)&&p>0&&(this.metadataTags.trackNumber??=p),m&&Number.isInteger(m)&&m>0&&(this.metadataTags.tracksTotal??=m)}break;case"trkn":if(u instanceof Uint8Array&&u.length>=6){const h=Ke(u),p=h.getUint16(2,!1),m=h.getUint16(4,!1);p>0&&(this.metadataTags.trackNumber??=p),m>0&&(this.metadataTags.tracksTotal??=m)}break;case"disc":case"disk":if(u instanceof Uint8Array&&u.length>=6){const h=Ke(u),p=h.getUint16(2,!1),m=h.getUint16(4,!1);p>0&&(this.metadataTags.discNumber??=p),m>0&&(this.metadataTags.discsTotal??=m)}break}}}break}return e.filePos=n,!0}}class Zo{constructor(e){this.internalTrack=e,this.packetToSampleIndex=new WeakMap,this.packetToFragmentLocation=new WeakMap}getId(){return this.internalTrack.id}getNumber(){const e=this.internalTrack.demuxer,i=this.internalTrack.inputTrack.type;let a=0;for(const n of e.tracks)if(n.inputTrack.type===i&&a++,n===this.internalTrack)break;return a}getCodec(){throw new Error("Not implemented on base class.")}getInternalCodecId(){return this.internalTrack.internalCodecId}getName(){return this.internalTrack.name}getLanguageCode(){return this.internalTrack.languageCode}getTimeResolution(){return this.internalTrack.timescale}getDisposition(){return this.internalTrack.disposition}async computeDuration(){const e=await this.getPacket(1/0,{metadataOnly:!0});return(e?.timestamp??0)+(e?.duration??0)}async getFirstTimestamp(){return(await this.getFirstPacket({metadataOnly:!0}))?.timestamp??0}async getFirstPacket(e){const t=await this.fetchPacketForSampleIndex(0,e);return t||!this.internalTrack.demuxer.isFragmented?t:this.performFragmentedLookup(null,i=>i.trackData.get(this.internalTrack.id)?{sampleIndex:0,correctSampleFound:!0}:{sampleIndex:-1,correctSampleFound:!1},-1/0,1/0,e)}mapTimestampIntoTimescale(e){return Ci(e*this.internalTrack.timescale)+this.internalTrack.editListOffset}async getPacket(e,t){const i=this.mapTimestampIntoTimescale(e),a=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),n=pn(a,i),s=await this.fetchPacketForSampleIndex(n,t);return!Hs(a)||!this.internalTrack.demuxer.isFragmented?s:this.performFragmentedLookup(null,o=>{const c=o.trackData.get(this.internalTrack.id);if(!c)return{sampleIndex:-1,correctSampleFound:!1};const l=Fe(c.presentationTimestamps,i,h=>h.presentationTimestamp),d=l!==-1?c.presentationTimestamps[l].sampleIndex:-1,u=l!==-1&&i<c.endTimestamp;return{sampleIndex:d,correctSampleFound:u}},i,i,t)}async getNextPacket(e,t){const i=this.packetToSampleIndex.get(e);if(i!==void 0)return this.fetchPacketForSampleIndex(i+1,t);const a=this.packetToFragmentLocation.get(e);if(a===void 0)throw new Error("Packet was not created from this track.");return this.performFragmentedLookup(a.fragment,n=>{if(n===a.fragment){const s=n.trackData.get(this.internalTrack.id);if(a.sampleIndex+1<s.samples.length)return{sampleIndex:a.sampleIndex+1,correctSampleFound:!0}}else if(n.trackData.get(this.internalTrack.id))return{sampleIndex:0,correctSampleFound:!0};return{sampleIndex:-1,correctSampleFound:!1}},-1/0,1/0,t)}async getKeyPacket(e,t){const i=this.mapTimestampIntoTimescale(e),a=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),n=yu(a,i),s=await this.fetchPacketForSampleIndex(n,t);return!Hs(a)||!this.internalTrack.demuxer.isFragmented?s:this.performFragmentedLookup(null,o=>{const c=o.trackData.get(this.internalTrack.id);if(!c)return{sampleIndex:-1,correctSampleFound:!1};const l=qn(c.presentationTimestamps,h=>c.samples[h.sampleIndex].isKeyFrame&&h.presentationTimestamp<=i),d=l!==-1?c.presentationTimestamps[l].sampleIndex:-1,u=l!==-1&&i<c.endTimestamp;return{sampleIndex:d,correctSampleFound:u}},i,i,t)}async getNextKeyPacket(e,t){const i=this.packetToSampleIndex.get(e);if(i!==void 0){const n=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),s=ku(n,i);return this.fetchPacketForSampleIndex(s,t)}const a=this.packetToFragmentLocation.get(e);if(a===void 0)throw new Error("Packet was not created from this track.");return this.performFragmentedLookup(a.fragment,n=>{if(n===a.fragment){const o=n.trackData.get(this.internalTrack.id).samples.findIndex((c,l)=>c.isKeyFrame&&l>a.sampleIndex);if(o!==-1)return{sampleIndex:o,correctSampleFound:!0}}else{const s=n.trackData.get(this.internalTrack.id);if(s&&s.firstKeyFrameTimestamp!==null){const o=s.samples.findIndex(c=>c.isKeyFrame);return y(o!==-1),{sampleIndex:o,correctSampleFound:!0}}}return{sampleIndex:-1,correctSampleFound:!1}},-1/0,1/0,t)}async fetchPacketForSampleIndex(e,t){if(e===-1)return null;const i=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),a=wu(i,e);if(!a)return null;let n;if(t.metadataOnly)n=kt;else{let l=this.internalTrack.demuxer.reader.requestSlice(a.sampleOffset,a.sampleSize);l instanceof Promise&&(l=await l),y(l),n=le(l,a.sampleSize)}const s=(a.presentationTimestamp-this.internalTrack.editListOffset)/this.internalTrack.timescale,o=a.duration/this.internalTrack.timescale,c=new Le(n,a.isKeyFrame?"key":"delta",s,o,e,a.sampleSize);return this.packetToSampleIndex.set(c,e),c}async fetchPacketInFragment(e,t,i){if(t===-1)return null;const n=e.trackData.get(this.internalTrack.id).samples[t];y(n);let s;if(i.metadataOnly)s=kt;else{let d=this.internalTrack.demuxer.reader.requestSlice(n.byteOffset,n.byteSize);d instanceof Promise&&(d=await d),y(d),s=le(d,n.byteSize)}const o=(n.presentationTimestamp-this.internalTrack.editListOffset)/this.internalTrack.timescale,c=n.duration/this.internalTrack.timescale,l=new Le(s,n.isKeyFrame?"key":"delta",o,c,e.moofOffset+t,n.byteSize);return this.packetToFragmentLocation.set(l,{fragment:e,sampleIndex:t}),l}async performFragmentedLookup(e,t,i,a,n){const s=this.internalTrack.demuxer;let o=null,c=null,l=-1;if(e){const{sampleIndex:b,correctSampleFound:k}=t(e);if(k)return this.fetchPacketInFragment(e,b,n);b!==-1&&(c=e,l=b)}const d=Fe(this.internalTrack.fragmentLookupTable,i,b=>b.timestamp),u=d!==-1?this.internalTrack.fragmentLookupTable[d]:null,h=Fe(this.internalTrack.fragmentPositionCache,i,b=>b.startTimestamp),p=h!==-1?this.internalTrack.fragmentPositionCache[h]:null,m=Math.max(u?.moofOffset??0,p?.moofOffset??0)||null;let g;for(e?m===null||e.moofOffset>=m?(g=e.moofOffset+e.moofSize,o=e):g=m:g=m??0;;){if(o){const T=o.trackData.get(this.internalTrack.id);if(T&&T.startTimestamp>a)break}let b=s.reader.requestSliceRange(g,qt,kr);if(b instanceof Promise&&(b=await b),!b)break;const k=g,w=er(b);if(!w)break;if(w.name==="moof"){o=await s.readFragment(k);const{sampleIndex:T,correctSampleFound:S}=t(o);if(S)return this.fetchPacketInFragment(o,T,n);T!==-1&&(c=o,l=T)}g=k+w.totalSize}if(u&&(!c||c.moofOffset<u.moofOffset)){const b=this.internalTrack.fragmentLookupTable[d-1];y(!b||b.timestamp<u.timestamp);const k=b?.timestamp??-1/0;return this.performFragmentedLookup(null,t,k,a,n)}return c?this.fetchPacketInFragment(c,l,n):null}}class gu extends Zo{constructor(e){super(e),this.decoderConfigPromise=null,this.internalTrack=e}getCodec(){return this.internalTrack.info.codec}getCodedWidth(){return this.internalTrack.info.width}getCodedHeight(){return this.internalTrack.info.height}getRotation(){return this.internalTrack.rotation}async getColorSpace(){return{primaries:this.internalTrack.info.colorSpace?.primaries,transfer:this.internalTrack.info.colorSpace?.transfer,matrix:this.internalTrack.info.colorSpace?.matrix,fullRange:this.internalTrack.info.colorSpace?.fullRange}}async canBeTransparent(){return!1}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{if(this.internalTrack.info.codec==="vp9"&&!this.internalTrack.info.vp9CodecInfo){const e=await this.getFirstPacket({});this.internalTrack.info.vp9CodecInfo=e&&Vo(e.data)}else if(this.internalTrack.info.codec==="av1"&&!this.internalTrack.info.av1CodecInfo){const e=await this.getFirstPacket({});this.internalTrack.info.av1CodecInfo=e&&Wo(e.data)}return{codec:Qn(this.internalTrack.info),codedWidth:this.internalTrack.info.width,codedHeight:this.internalTrack.info.height,description:this.internalTrack.info.codecDescription??void 0,colorSpace:this.internalTrack.info.colorSpace??void 0}})():null}}class bu extends Zo{constructor(e){super(e),this.decoderConfig=null,this.internalTrack=e}getCodec(){return this.internalTrack.info.codec}getNumberOfChannels(){return this.internalTrack.info.numberOfChannels}getSampleRate(){return this.internalTrack.info.sampleRate}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfig??={codec:Gn(this.internalTrack.info),numberOfChannels:this.internalTrack.info.numberOfChannels,sampleRate:this.internalTrack.info.sampleRate,description:this.internalTrack.info.codecDescription??void 0}:null}}const pn=(r,e)=>{if(r.presentationTimestamps){const t=Fe(r.presentationTimestamps,e,i=>i.presentationTimestamp);return t===-1?-1:r.presentationTimestamps[t].sampleIndex}else{const t=Fe(r.sampleTimingEntries,e,a=>a.startDecodeTimestamp);if(t===-1)return-1;const i=r.sampleTimingEntries[t];return i.startIndex+Math.min(Math.floor((e-i.startDecodeTimestamp)/i.delta),i.count-1)}},yu=(r,e)=>{if(!r.keySampleIndices)return pn(r,e);if(r.presentationTimestamps){const t=Fe(r.presentationTimestamps,e,i=>i.presentationTimestamp);if(t===-1)return-1;for(let i=t;i>=0;i--){const a=r.presentationTimestamps[i].sampleIndex;if(Hi(r.keySampleIndices,a,s=>s)!==-1)return a}return-1}else{const t=pn(r,e),i=Fe(r.keySampleIndices,t,a=>a);return r.keySampleIndices[i]??-1}},wu=(r,e)=>{const t=Fe(r.sampleTimingEntries,e,k=>k.startIndex),i=r.sampleTimingEntries[t];if(!i||i.startIndex+i.count<=e)return null;let n=i.startDecodeTimestamp+(e-i.startIndex)*i.delta;const s=Fe(r.sampleCompositionTimeOffsets,e,k=>k.startIndex),o=r.sampleCompositionTimeOffsets[s];o&&e-o.startIndex<o.count&&(n+=o.offset);const c=r.sampleSizes[Math.min(e,r.sampleSizes.length-1)],l=Fe(r.sampleToChunk,e,k=>k.startSampleIndex),d=r.sampleToChunk[l];y(d);const u=d.startChunkIndex+Math.floor((e-d.startSampleIndex)/d.samplesPerChunk),h=r.chunkOffsets[u],p=d.startSampleIndex+(u-d.startChunkIndex)*d.samplesPerChunk;let m=0,g=h;if(r.sampleSizes.length===1)g+=c*(e-p),m+=c*d.samplesPerChunk;else for(let k=p;k<p+d.samplesPerChunk;k++){const w=r.sampleSizes[k];k<e&&(g+=w),m+=w}let b=i.delta;if(r.presentationTimestamps){const k=r.presentationTimestampIndexMap[e];y(k!==void 0),k<r.presentationTimestamps.length-1&&(b=r.presentationTimestamps[k+1].presentationTimestamp-n)}return{presentationTimestamp:n,duration:b,sampleOffset:g,sampleSize:c,chunkOffset:h,chunkSize:m,isKeyFrame:r.keySampleIndices?Hi(r.keySampleIndices,e,k=>k)!==-1:!0}},ku=(r,e)=>{if(!r.keySampleIndices)return e+1;const t=Fe(r.keySampleIndices,e,i=>i);return r.keySampleIndices[t+1]??-1},qa=(r,e)=>{r.startTimestamp+=e,r.endTimestamp+=e;for(const t of r.samples)t.presentationTimestamp+=e;for(const t of r.presentationTimestamps)t.presentationTimestamp+=e},vu=r=>{const[e,,,t]=r,i=Math.hypot(e,t),a=e/i,n=t/i,s=-Math.atan2(n,a)*(180/Math.PI);return Number.isFinite(s)?s:0},Hs=r=>r.sampleSizes.length===0;var O;(function(r){r[r.EBML=440786851]="EBML",r[r.EBMLVersion=17030]="EBMLVersion",r[r.EBMLReadVersion=17143]="EBMLReadVersion",r[r.EBMLMaxIDLength=17138]="EBMLMaxIDLength",r[r.EBMLMaxSizeLength=17139]="EBMLMaxSizeLength",r[r.DocType=17026]="DocType",r[r.DocTypeVersion=17031]="DocTypeVersion",r[r.DocTypeReadVersion=17029]="DocTypeReadVersion",r[r.Void=236]="Void",r[r.Segment=408125543]="Segment",r[r.SeekHead=290298740]="SeekHead",r[r.Seek=19899]="Seek",r[r.SeekID=21419]="SeekID",r[r.SeekPosition=21420]="SeekPosition",r[r.Duration=17545]="Duration",r[r.Info=357149030]="Info",r[r.TimestampScale=2807729]="TimestampScale",r[r.MuxingApp=19840]="MuxingApp",r[r.WritingApp=22337]="WritingApp",r[r.Tracks=374648427]="Tracks",r[r.TrackEntry=174]="TrackEntry",r[r.TrackNumber=215]="TrackNumber",r[r.TrackUID=29637]="TrackUID",r[r.TrackType=131]="TrackType",r[r.FlagEnabled=185]="FlagEnabled",r[r.FlagDefault=136]="FlagDefault",r[r.FlagForced=21930]="FlagForced",r[r.FlagOriginal=21934]="FlagOriginal",r[r.FlagHearingImpaired=21931]="FlagHearingImpaired",r[r.FlagVisualImpaired=21932]="FlagVisualImpaired",r[r.FlagCommentary=21935]="FlagCommentary",r[r.FlagLacing=156]="FlagLacing",r[r.Name=21358]="Name",r[r.Language=2274716]="Language",r[r.LanguageBCP47=2274717]="LanguageBCP47",r[r.CodecID=134]="CodecID",r[r.CodecPrivate=25506]="CodecPrivate",r[r.CodecDelay=22186]="CodecDelay",r[r.SeekPreRoll=22203]="SeekPreRoll",r[r.DefaultDuration=2352003]="DefaultDuration",r[r.Video=224]="Video",r[r.PixelWidth=176]="PixelWidth",r[r.PixelHeight=186]="PixelHeight",r[r.AlphaMode=21440]="AlphaMode",r[r.Audio=225]="Audio",r[r.SamplingFrequency=181]="SamplingFrequency",r[r.Channels=159]="Channels",r[r.BitDepth=25188]="BitDepth",r[r.SimpleBlock=163]="SimpleBlock",r[r.BlockGroup=160]="BlockGroup",r[r.Block=161]="Block",r[r.BlockAdditions=30113]="BlockAdditions",r[r.BlockMore=166]="BlockMore",r[r.BlockAdditional=165]="BlockAdditional",r[r.BlockAddID=238]="BlockAddID",r[r.BlockDuration=155]="BlockDuration",r[r.ReferenceBlock=251]="ReferenceBlock",r[r.Cluster=524531317]="Cluster",r[r.Timestamp=231]="Timestamp",r[r.Cues=475249515]="Cues",r[r.CuePoint=187]="CuePoint",r[r.CueTime=179]="CueTime",r[r.CueTrackPositions=183]="CueTrackPositions",r[r.CueTrack=247]="CueTrack",r[r.CueClusterPosition=241]="CueClusterPosition",r[r.Colour=21936]="Colour",r[r.MatrixCoefficients=21937]="MatrixCoefficients",r[r.TransferCharacteristics=21946]="TransferCharacteristics",r[r.Primaries=21947]="Primaries",r[r.Range=21945]="Range",r[r.Projection=30320]="Projection",r[r.ProjectionType=30321]="ProjectionType",r[r.ProjectionPoseRoll=30325]="ProjectionPoseRoll",r[r.Attachments=423732329]="Attachments",r[r.AttachedFile=24999]="AttachedFile",r[r.FileDescription=18046]="FileDescription",r[r.FileName=18030]="FileName",r[r.FileMediaType=18016]="FileMediaType",r[r.FileData=18012]="FileData",r[r.FileUID=18094]="FileUID",r[r.Chapters=272869232]="Chapters",r[r.Tags=307544935]="Tags",r[r.Tag=29555]="Tag",r[r.Targets=25536]="Targets",r[r.TargetTypeValue=26826]="TargetTypeValue",r[r.TargetType=25546]="TargetType",r[r.TagTrackUID=25541]="TagTrackUID",r[r.TagEditionUID=25545]="TagEditionUID",r[r.TagChapterUID=25540]="TagChapterUID",r[r.TagAttachmentUID=25542]="TagAttachmentUID",r[r.SimpleTag=26568]="SimpleTag",r[r.TagName=17827]="TagName",r[r.TagLanguage=17530]="TagLanguage",r[r.TagString=17543]="TagString",r[r.TagBinary=17541]="TagBinary",r[r.ContentEncodings=28032]="ContentEncodings",r[r.ContentEncoding=25152]="ContentEncoding",r[r.ContentEncodingOrder=20529]="ContentEncodingOrder",r[r.ContentEncodingScope=20530]="ContentEncodingScope",r[r.ContentCompression=20532]="ContentCompression",r[r.ContentCompAlgo=16980]="ContentCompAlgo",r[r.ContentCompSettings=16981]="ContentCompSettings",r[r.ContentEncryption=20533]="ContentEncryption"})(O||(O={}));const Tu=[O.EBML,O.Segment],Fi=[O.SeekHead,O.Info,O.Cluster,O.Tracks,O.Cues,O.Attachments,O.Chapters,O.Tags],Yi=[...Tu,...Fi],gn=8,vt=2,Kt=2*gn,Jo=r=>{if(r.remainingLength<1)return null;const e=re(r);if(r.skip(-1),e===0)return null;let t=1,i=128;for(;(e&i)===0;)t++,i>>=1;return r.remainingLength<t?null:t},di=r=>{if(r.remainingLength<1)return null;const e=re(r);if(e===0)return null;let t=1,i=128;for(;(e&i)===0;)t++,i>>=1;if(r.remainingLength<t-1)return null;let a=e&i-1;for(let n=1;n<t;n++)a*=256,a+=re(r);return a},ke=(r,e)=>{if(e<1||e>8)throw new Error("Bad unsigned int size "+e);let t=0;for(let i=0;i<e;i++)t*=256,t+=re(r);return t},Su=(r,e)=>{if(e<1)throw new Error("Bad unsigned int size "+e);let t=0n;for(let i=0;i<e;i++)t<<=8n,t+=BigInt(re(r));return t},is=r=>{const e=Jo(r);return e===null||r.remainingLength<e?null:ke(r,e)},ec=r=>{if(r.remainingLength<1)return null;if(re(r)===255)return;r.skip(-1);const t=di(r);if(t===null)return null;if(t!==72057594037927940)return t},Ht=r=>{y(r.remainingLength>=vt);const e=is(r);if(e===null)return null;const t=ec(r);return t===null?null:{id:e,size:t}},Mr=(r,e)=>{const t=le(r,e);let i=0;for(;i<e&&t[i]!==0;)i+=1;return String.fromCharCode(...t.subarray(0,i))},si=(r,e)=>{const t=le(r,e);let i=0;for(;i<e&&t[i]!==0;)i+=1;return St.decode(t.subarray(0,i))},Ka=(r,e)=>{if(e===0)return 0;if(e!==4&&e!==8)throw new Error("Bad float size "+e);return e===4?Mh(r):uc(r)},bn=async(r,e,t,i)=>{const a=new Set(t);let n=e;for(;i===null||n<i;){let s=r.requestSliceRange(n,vt,Kt);if(s instanceof Promise&&(s=await s),!s)break;const o=Ht(s);if(!o)break;if(a.has(o.id))return{pos:n,found:!0};Jt(o.size),n=s.filePos+o.size}return{pos:i!==null&&i>n?i:n,found:!1}},tc=async(r,e,t,i)=>{const n=new Set(t);let s=e;for(;s<i;){let o=r.requestSliceRange(s,0,Math.min(65536,i-s));if(o instanceof Promise&&(o=await o),!o||o.length<gn)break;for(let c=0;c<o.length-gn;c++){o.filePos=s;const l=is(o);if(l!==null&&n.has(l))return s;s++}}return null},At={avc:"V_MPEG4/ISO/AVC",hevc:"V_MPEGH/ISO/HEVC",vp8:"V_VP8",vp9:"V_VP9",av1:"V_AV1",aac:"A_AAC",mp3:"A_MPEG/L3",opus:"A_OPUS",vorbis:"A_VORBIS",flac:"A_FLAC"};function Jt(r){if(r===void 0)throw new Error("Undefined element size is used in a place where it is not supported.")}const xu=r=>{let t=(r.hasVideo?"video/":r.hasAudio?"audio/":"application/")+(r.isWebM?"webm":"x-matroska");if(r.codecStrings.length>0){const i=[...new Set(r.codecStrings.filter(Boolean))];t+=`; codecs="${i.join(", ")}"`}return t};var Lt;(function(r){r[r.None=0]="None",r[r.Xiph=1]="Xiph",r[r.FixedSize=2]="FixedSize",r[r.Ebml=3]="Ebml"})(Lt||(Lt={}));var ca;(function(r){r[r.Block=1]="Block",r[r.Private=2]="Private",r[r.Next=4]="Next"})(ca||(ca={}));var mi;(function(r){r[r.Zlib=0]="Zlib",r[r.Bzlib=1]="Bzlib",r[r.lzo1x=2]="lzo1x",r[r.HeaderStripping=3]="HeaderStripping"})(mi||(mi={}));const Qa=[{id:O.SeekHead,flag:"seekHeadSeen"},{id:O.Info,flag:"infoSeen"},{id:O.Tracks,flag:"tracksSeen"},{id:O.Cues,flag:"cuesSeen"}],rc=10*2**20;class Pu extends fr{constructor(e){super(e),this.readMetadataPromise=null,this.segments=[],this.currentSegment=null,this.currentTrack=null,this.currentCluster=null,this.currentBlock=null,this.currentBlockAdditional=null,this.currentCueTime=null,this.currentDecodingInstruction=null,this.currentTagTargetIsMovie=!0,this.currentSimpleTagName=null,this.currentAttachedFile=null,this.isWebM=!1,this.reader=e._reader}async computeDuration(){const e=await this.getTracks(),t=await Promise.all(e.map(i=>i.computeDuration()));return Math.max(0,...t)}async getTracks(){return await this.readMetadata(),this.segments.flatMap(e=>e.tracks.map(t=>t.inputTrack))}async getMimeType(){await this.readMetadata();const e=await this.getTracks(),t=await Promise.all(e.map(i=>i.getCodecParameterString()));return xu({isWebM:this.isWebM,hasVideo:this.segments.some(i=>i.tracks.some(a=>a.info?.type==="video")),hasAudio:this.segments.some(i=>i.tracks.some(a=>a.info?.type==="audio")),codecStrings:t.filter(Boolean)})}async getMetadataTags(){await this.readMetadata();for(const t of this.segments)t.metadataTagsCollected||(this.reader.fileSize!==null&&await this.loadSegmentMetadata(t),t.metadataTagsCollected=!0);let e={};for(const t of this.segments)e={...e,...t.metadataTags};return e}readMetadata(){return this.readMetadataPromise??=(async()=>{let e=0;for(;;){let t=this.reader.requestSliceRange(e,vt,Kt);if(t instanceof Promise&&(t=await t),!t)break;const i=Ht(t);if(!i)break;const a=i.id;let n=i.size;const s=t.filePos;if(a===O.EBML){Jt(n);let o=this.reader.requestSlice(s,n);if(o instanceof Promise&&(o=await o),!o)break;this.readContiguousElements(o)}else if(a===O.Segment){if(await this.readSegment(s,n),n===void 0||this.reader.fileSize===null)break}else if(a===O.Cluster){if(this.reader.fileSize===null)break;n===void 0&&(n=(await bn(this.reader,s,Yi,this.reader.fileSize)).pos-s);const o=qe(this.segments);o&&(o.elementEndPos=s+n)}Jt(n),e=s+n}})()}async readSegment(e,t){this.currentSegment={seekHeadSeen:!1,infoSeen:!1,tracksSeen:!1,cuesSeen:!1,tagsSeen:!1,attachmentsSeen:!1,timestampScale:-1,timestampFactor:-1,duration:-1,seekEntries:[],tracks:[],cuePoints:[],dataStartPos:e,elementEndPos:t===void 0?null:e+t,clusterSeekStartPos:e,lastReadCluster:null,metadataTags:{},metadataTagsCollected:!1},this.segments.push(this.currentSegment);let i=e;for(;this.currentSegment.elementEndPos===null||i<this.currentSegment.elementEndPos;){let o=this.reader.requestSliceRange(i,vt,Kt);if(o instanceof Promise&&(o=await o),!o)break;const c=i,l=Ht(o);if(!l||!Fi.includes(l.id)&&l.id!==O.Void){const m=await tc(this.reader,c,Fi,Math.min(this.currentSegment.elementEndPos??1/0,c+rc));if(m){i=m;continue}else break}const{id:d,size:u}=l,h=o.filePos,p=Qa.findIndex(m=>m.id===d);if(p!==-1){const m=Qa[p].flag;this.currentSegment[m]=!0,Jt(u);let g=this.reader.requestSlice(h,u);g instanceof Promise&&(g=await g),g&&this.readContiguousElements(g)}else if(d===O.Tags||d===O.Attachments){d===O.Tags?this.currentSegment.tagsSeen=!0:this.currentSegment.attachmentsSeen=!0,Jt(u);let m=this.reader.requestSlice(h,u);m instanceof Promise&&(m=await m),m&&this.readContiguousElements(m)}else if(d===O.Cluster){this.currentSegment.clusterSeekStartPos=c;break}if(u===void 0)break;i=h+u}if(this.currentSegment.seekEntries.sort((o,c)=>o.segmentPosition-c.segmentPosition),this.reader.fileSize!==null)for(const o of this.currentSegment.seekEntries){const c=Qa.find(m=>m.id===o.id);if(!c||this.currentSegment[c.flag])continue;let l=this.reader.requestSliceRange(e+o.segmentPosition,vt,Kt);if(l instanceof Promise&&(l=await l),!l)continue;const d=Ht(l);if(!d)continue;const{id:u,size:h}=d;if(u!==c.id)continue;Jt(h),this.currentSegment[c.flag]=!0;let p=this.reader.requestSlice(l.filePos,h);p instanceof Promise&&(p=await p),p&&this.readContiguousElements(p)}this.currentSegment.timestampScale===-1&&(this.currentSegment.timestampScale=1e6,this.currentSegment.timestampFactor=1e9/1e6);for(const o of this.currentSegment.tracks)o.defaultDurationNs!==null&&(o.defaultDuration=this.currentSegment.timestampFactor*o.defaultDurationNs/1e9);this.currentSegment.tracks.sort((o,c)=>Number(c.disposition.default)-Number(o.disposition.default));const a=new Map(this.currentSegment.tracks.map(o=>[o.id,o]));for(const o of this.currentSegment.cuePoints){const c=a.get(o.trackId);c&&c.cuePoints.push(o)}for(const o of this.currentSegment.tracks){o.cuePoints.sort((c,l)=>c.time-l.time);for(let c=0;c<o.cuePoints.length-1;c++){const l=o.cuePoints[c],d=o.cuePoints[c+1];l.time===d.time&&(o.cuePoints.splice(c+1,1),c--)}}let n=null,s=-1/0;for(const o of this.currentSegment.tracks)o.cuePoints.length>s&&(s=o.cuePoints.length,n=o);for(const o of this.currentSegment.tracks)o.cuePoints.length===0&&(o.cuePoints=n.cuePoints);this.currentSegment=null}async readCluster(e,t){if(t.lastReadCluster?.elementStartPos===e)return t.lastReadCluster;let i=this.reader.requestSliceRange(e,vt,Kt);i instanceof Promise&&(i=await i),y(i);const a=e,n=Ht(i);y(n);const s=n.id;y(s===O.Cluster);let o=n.size;const c=i.filePos;o===void 0&&(o=(await bn(this.reader,c,Yi,t.elementEndPos)).pos-c);let l=this.reader.requestSlice(c,o);l instanceof Promise&&(l=await l);const d={segment:t,elementStartPos:a,elementEndPos:c+o,dataStartPos:c,timestamp:-1,trackData:new Map};if(this.currentCluster=d,l){const u=this.readContiguousElements(l,Yi);d.elementEndPos=u}for(const[,u]of d.trackData){const h=u.track;y(u.blocks.length>0);let p=!1;for(let k=0;k<u.blocks.length;k++){const w=u.blocks[k];w.timestamp+=d.timestamp,p||=w.lacing!==Lt.None}u.presentationTimestamps=u.blocks.map((k,w)=>({timestamp:k.timestamp,blockIndex:w})).sort((k,w)=>k.timestamp-w.timestamp);for(let k=0;k<u.presentationTimestamps.length;k++){const w=u.presentationTimestamps[k],T=u.blocks[w.blockIndex];if(u.firstKeyFrameTimestamp===null&&T.isKeyFrame&&(u.firstKeyFrameTimestamp=T.timestamp),k<u.presentationTimestamps.length-1){const S=u.presentationTimestamps[k+1];T.duration=S.timestamp-T.timestamp}else T.duration===0&&h.defaultDuration!=null&&T.lacing===Lt.None&&(T.duration=h.defaultDuration)}p&&(this.expandLacedBlocks(u.blocks,h),u.presentationTimestamps=u.blocks.map((k,w)=>({timestamp:k.timestamp,blockIndex:w})).sort((k,w)=>k.timestamp-w.timestamp));const m=u.blocks[u.presentationTimestamps[0].blockIndex],g=u.blocks[qe(u.presentationTimestamps).blockIndex];u.startTimestamp=m.timestamp,u.endTimestamp=g.timestamp+g.duration;const b=Fe(h.clusterPositionCache,u.startTimestamp,k=>k.startTimestamp);(b===-1||h.clusterPositionCache[b].elementStartPos!==a)&&h.clusterPositionCache.splice(b+1,0,{elementStartPos:d.elementStartPos,startTimestamp:u.startTimestamp})}return t.lastReadCluster=d,d}getTrackDataInCluster(e,t){let i=e.trackData.get(t);if(!i){const a=e.segment.tracks.find(n=>n.id===t);if(!a)return null;i={track:a,startTimestamp:0,endTimestamp:0,firstKeyFrameTimestamp:null,blocks:[],presentationTimestamps:[]},e.trackData.set(t,i)}return i}expandLacedBlocks(e,t){for(let i=0;i<e.length;i++){const a=e[i];if(a.lacing===Lt.None)continue;a.decoded||(a.data=this.decodeBlockData(t,a.data),a.decoded=!0);const n=It.tempFromBytes(a.data),s=[],o=re(n)+1;switch(a.lacing){case Lt.Xiph:{let l=0;for(let d=0;d<o-1;d++){let u=0;for(;n.bufferPos<n.length;){const h=re(n);if(u+=h,h<255){s.push(u),l+=u;break}}}s.push(n.length-(n.bufferPos+l))}break;case Lt.FixedSize:{const l=n.length-1,d=Math.floor(l/o);for(let u=0;u<o;u++)s.push(d)}break;case Lt.Ebml:{const l=di(n);y(l!==null);let d=l;s.push(d);let u=d;for(let h=1;h<o-1;h++){const p=n.bufferPos,m=di(n);y(m!==null);const g=m,k=(1<<(n.bufferPos-p)*7-1)-1,w=g-k;d+=w,s.push(d),u+=d}s.push(n.length-(n.bufferPos+u))}break;default:y(!1)}y(s.length===o),e.splice(i,1);const c=a.duration||o*(t.defaultDuration??0);for(let l=0;l<o;l++){const d=s[l],u=le(n,d),h=a.timestamp+c*l/o,p=c/o;e.splice(i+l,0,{timestamp:h,duration:p,isKeyFrame:a.isKeyFrame,data:u,lacing:Lt.None,decoded:!0,mainAdditional:a.mainAdditional})}i+=o,i--}}async loadSegmentMetadata(e){for(const t of e.seekEntries){if(!(t.id===O.Tags&&!e.tagsSeen)){if(!(t.id===O.Attachments&&!e.attachmentsSeen))continue}let i=this.reader.requestSliceRange(e.dataStartPos+t.segmentPosition,vt,Kt);if(i instanceof Promise&&(i=await i),!i)continue;const a=Ht(i);if(!a||a.id!==t.id)continue;const{size:n}=a;Jt(n),y(!this.currentSegment),this.currentSegment=e;let s=this.reader.requestSlice(i.filePos,n);s instanceof Promise&&(s=await s),s&&this.readContiguousElements(s),this.currentSegment=null,t.id===O.Tags?e.tagsSeen=!0:t.id===O.Attachments&&(e.attachmentsSeen=!0)}}readContiguousElements(e,t){for(;e.remainingLength>=vt;){const i=e.filePos;if(!this.traverseElement(e,t))return i}return e.filePos}traverseElement(e,t){const i=Ht(e);if(!i||t&&t.includes(i.id))return!1;const{id:a,size:n}=i,s=e.filePos;switch(Jt(n),a){case O.DocType:this.isWebM=Mr(e,n)==="webm";break;case O.Seek:{if(!this.currentSegment)break;const o={id:-1,segmentPosition:-1};this.currentSegment.seekEntries.push(o),this.readContiguousElements(e.slice(s,n)),(o.id===-1||o.segmentPosition===-1)&&this.currentSegment.seekEntries.pop()}break;case O.SeekID:{const o=this.currentSegment?.seekEntries[this.currentSegment.seekEntries.length-1];if(!o)break;o.id=ke(e,n)}break;case O.SeekPosition:{const o=this.currentSegment?.seekEntries[this.currentSegment.seekEntries.length-1];if(!o)break;o.segmentPosition=ke(e,n)}break;case O.TimestampScale:{if(!this.currentSegment)break;this.currentSegment.timestampScale=ke(e,n),this.currentSegment.timestampFactor=1e9/this.currentSegment.timestampScale}break;case O.Duration:{if(!this.currentSegment)break;this.currentSegment.duration=Ka(e,n)}break;case O.TrackEntry:{if(!this.currentSegment||(this.currentTrack={id:-1,segment:this.currentSegment,demuxer:this,clusterPositionCache:[],cuePoints:[],disposition:{...ur},inputTrack:null,codecId:null,codecPrivate:null,defaultDuration:null,defaultDurationNs:null,name:null,languageCode:bt,decodingInstructions:[],info:null},this.readContiguousElements(e.slice(s,n)),!this.currentTrack))break;if(this.currentTrack.decodingInstructions.some(o=>o.data?.type!=="decompress"||o.scope!==ca.Block||o.data.algorithm!==mi.HeaderStripping)&&(console.warn(`Track #${this.currentTrack.id} has an unsupported content encoding; dropping.`),this.currentTrack=null),this.currentTrack&&this.currentTrack.id!==-1&&this.currentTrack.codecId&&this.currentTrack.info){const o=this.currentTrack.codecId.indexOf("/"),c=o===-1?this.currentTrack.codecId:this.currentTrack.codecId.slice(0,o);if(this.currentTrack.info.type==="video"&&this.currentTrack.info.width!==-1&&this.currentTrack.info.height!==-1){this.currentTrack.codecId===At.avc?(this.currentTrack.info.codec="avc",this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):this.currentTrack.codecId===At.hevc?(this.currentTrack.info.codec="hevc",this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):c===At.vp8?this.currentTrack.info.codec="vp8":c===At.vp9?this.currentTrack.info.codec="vp9":c===At.av1&&(this.currentTrack.info.codec="av1");const l=this.currentTrack,d=new ai(this.input,new Cu(l));this.currentTrack.inputTrack=d,this.currentSegment.tracks.push(this.currentTrack)}else if(this.currentTrack.info.type==="audio"&&this.currentTrack.info.numberOfChannels!==-1&&this.currentTrack.info.sampleRate!==-1){c===At.aac?(this.currentTrack.info.codec="aac",this.currentTrack.info.aacCodecInfo={isMpeg2:this.currentTrack.codecId.includes("MPEG2"),objectType:null},this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):this.currentTrack.codecId===At.mp3?this.currentTrack.info.codec="mp3":c===At.opus?(this.currentTrack.info.codec="opus",this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate,this.currentTrack.info.sampleRate=_a):c===At.vorbis?(this.currentTrack.info.codec="vorbis",this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):c===At.flac?(this.currentTrack.info.codec="flac",this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):this.currentTrack.codecId==="A_PCM/INT/LIT"?this.currentTrack.info.bitDepth===8?this.currentTrack.info.codec="pcm-u8":this.currentTrack.info.bitDepth===16?this.currentTrack.info.codec="pcm-s16":this.currentTrack.info.bitDepth===24?this.currentTrack.info.codec="pcm-s24":this.currentTrack.info.bitDepth===32&&(this.currentTrack.info.codec="pcm-s32"):this.currentTrack.codecId==="A_PCM/INT/BIG"?this.currentTrack.info.bitDepth===8?this.currentTrack.info.codec="pcm-u8":this.currentTrack.info.bitDepth===16?this.currentTrack.info.codec="pcm-s16be":this.currentTrack.info.bitDepth===24?this.currentTrack.info.codec="pcm-s24be":this.currentTrack.info.bitDepth===32&&(this.currentTrack.info.codec="pcm-s32be"):this.currentTrack.codecId==="A_PCM/FLOAT/IEEE"&&(this.currentTrack.info.bitDepth===32?this.currentTrack.info.codec="pcm-f32":this.currentTrack.info.bitDepth===64&&(this.currentTrack.info.codec="pcm-f64"));const l=this.currentTrack,d=new Vt(this.input,new _u(l));this.currentTrack.inputTrack=d,this.currentSegment.tracks.push(this.currentTrack)}}this.currentTrack=null}break;case O.TrackNumber:{if(!this.currentTrack)break;this.currentTrack.id=ke(e,n)}break;case O.TrackType:{if(!this.currentTrack)break;const o=ke(e,n);o===1?this.currentTrack.info={type:"video",width:-1,height:-1,rotation:0,codec:null,codecDescription:null,colorSpace:null,alphaMode:!1}:o===2&&(this.currentTrack.info={type:"audio",numberOfChannels:-1,sampleRate:-1,bitDepth:-1,codec:null,codecDescription:null,aacCodecInfo:null})}break;case O.FlagEnabled:{if(!this.currentTrack)break;ke(e,n)||(this.currentTrack=null)}break;case O.FlagDefault:{if(!this.currentTrack)break;this.currentTrack.disposition.default=!!ke(e,n)}break;case O.FlagForced:{if(!this.currentTrack)break;this.currentTrack.disposition.forced=!!ke(e,n)}break;case O.FlagOriginal:{if(!this.currentTrack)break;this.currentTrack.disposition.original=!!ke(e,n)}break;case O.FlagHearingImpaired:{if(!this.currentTrack)break;this.currentTrack.disposition.hearingImpaired=!!ke(e,n)}break;case O.FlagVisualImpaired:{if(!this.currentTrack)break;this.currentTrack.disposition.visuallyImpaired=!!ke(e,n)}break;case O.FlagCommentary:{if(!this.currentTrack)break;this.currentTrack.disposition.commentary=!!ke(e,n)}break;case O.CodecID:{if(!this.currentTrack)break;this.currentTrack.codecId=Mr(e,n)}break;case O.CodecPrivate:{if(!this.currentTrack)break;this.currentTrack.codecPrivate=le(e,n)}break;case O.DefaultDuration:{if(!this.currentTrack)break;this.currentTrack.defaultDurationNs=ke(e,n)}break;case O.Name:{if(!this.currentTrack)break;this.currentTrack.name=si(e,n)}break;case O.Language:{if(!this.currentTrack||this.currentTrack.languageCode!==bt)break;this.currentTrack.languageCode=Mr(e,n),_i(this.currentTrack.languageCode)||(this.currentTrack.languageCode=bt)}break;case O.LanguageBCP47:{if(!this.currentTrack)break;const c=Mr(e,n).split("-")[0];c?this.currentTrack.languageCode=c:this.currentTrack.languageCode=bt}break;case O.Video:{if(this.currentTrack?.info?.type!=="video")break;this.readContiguousElements(e.slice(s,n))}break;case O.PixelWidth:{if(this.currentTrack?.info?.type!=="video")break;this.currentTrack.info.width=ke(e,n)}break;case O.PixelHeight:{if(this.currentTrack?.info?.type!=="video")break;this.currentTrack.info.height=ke(e,n)}break;case O.AlphaMode:{if(this.currentTrack?.info?.type!=="video")break;this.currentTrack.info.alphaMode=ke(e,n)===1}break;case O.Colour:{if(this.currentTrack?.info?.type!=="video")break;this.currentTrack.info.colorSpace={},this.readContiguousElements(e.slice(s,n))}break;case O.MatrixCoefficients:{if(this.currentTrack?.info?.type!=="video"||!this.currentTrack.info.colorSpace)break;const o=ke(e,n),c=na[o]??null;this.currentTrack.info.colorSpace.matrix=c}break;case O.Range:{if(this.currentTrack?.info?.type!=="video"||!this.currentTrack.info.colorSpace)break;this.currentTrack.info.colorSpace.fullRange=ke(e,n)===2}break;case O.TransferCharacteristics:{if(this.currentTrack?.info?.type!=="video"||!this.currentTrack.info.colorSpace)break;const o=ke(e,n),c=aa[o]??null;this.currentTrack.info.colorSpace.transfer=c}break;case O.Primaries:{if(this.currentTrack?.info?.type!=="video"||!this.currentTrack.info.colorSpace)break;const o=ke(e,n),c=ia[o]??null;this.currentTrack.info.colorSpace.primaries=c}break;case O.Projection:{if(this.currentTrack?.info?.type!=="video")break;this.readContiguousElements(e.slice(s,n))}break;case O.ProjectionPoseRoll:{if(this.currentTrack?.info?.type!=="video")break;const c=-Ka(e,n);try{this.currentTrack.info.rotation=Hn(c)}catch{}}break;case O.Audio:{if(this.currentTrack?.info?.type!=="audio")break;this.readContiguousElements(e.slice(s,n))}break;case O.SamplingFrequency:{if(this.currentTrack?.info?.type!=="audio")break;this.currentTrack.info.sampleRate=Ka(e,n)}break;case O.Channels:{if(this.currentTrack?.info?.type!=="audio")break;this.currentTrack.info.numberOfChannels=ke(e,n)}break;case O.BitDepth:{if(this.currentTrack?.info?.type!=="audio")break;this.currentTrack.info.bitDepth=ke(e,n)}break;case O.CuePoint:{if(!this.currentSegment)break;this.readContiguousElements(e.slice(s,n)),this.currentCueTime=null}break;case O.CueTime:this.currentCueTime=ke(e,n);break;case O.CueTrackPositions:{if(this.currentCueTime===null)break;y(this.currentSegment);const o={time:this.currentCueTime,trackId:-1,clusterPosition:-1};this.currentSegment.cuePoints.push(o),this.readContiguousElements(e.slice(s,n)),(o.trackId===-1||o.clusterPosition===-1)&&this.currentSegment.cuePoints.pop()}break;case O.CueTrack:{const o=this.currentSegment?.cuePoints[this.currentSegment.cuePoints.length-1];if(!o)break;o.trackId=ke(e,n)}break;case O.CueClusterPosition:{const o=this.currentSegment?.cuePoints[this.currentSegment.cuePoints.length-1];if(!o)break;y(this.currentSegment),o.clusterPosition=this.currentSegment.dataStartPos+ke(e,n)}break;case O.Timestamp:{if(!this.currentCluster)break;this.currentCluster.timestamp=ke(e,n)}break;case O.SimpleBlock:{if(!this.currentCluster)break;const o=di(e);if(o===null)break;const c=this.getTrackDataInCluster(this.currentCluster,o);if(!c)break;const l=vn(e),d=re(e),u=d>>1&3;let h=!!(d&128);c.track.info?.type==="audio"&&c.track.info.codec&&(h=!0);const p=le(e,n-(e.filePos-s)),m=c.track.decodingInstructions.length>0;c.blocks.push({timestamp:l,duration:0,isKeyFrame:h,data:p,lacing:u,decoded:!m,mainAdditional:null})}break;case O.BlockGroup:{if(!this.currentCluster)break;this.readContiguousElements(e.slice(s,n)),this.currentBlock=null}break;case O.Block:{if(!this.currentCluster)break;const o=di(e);if(o===null)break;const c=this.getTrackDataInCluster(this.currentCluster,o);if(!c)break;const l=vn(e),u=re(e)>>1&3,h=le(e,n-(e.filePos-s)),p=c.track.decodingInstructions.length>0;this.currentBlock={timestamp:l,duration:0,isKeyFrame:!0,data:h,lacing:u,decoded:!p,mainAdditional:null},c.blocks.push(this.currentBlock)}break;case O.BlockAdditions:this.readContiguousElements(e.slice(s,n));break;case O.BlockMore:{if(!this.currentBlock)break;this.currentBlockAdditional={addId:1,data:null},this.readContiguousElements(e.slice(s,n)),this.currentBlockAdditional.data&&this.currentBlockAdditional.addId===1&&(this.currentBlock.mainAdditional=this.currentBlockAdditional.data),this.currentBlockAdditional=null}break;case O.BlockAdditional:{if(!this.currentBlockAdditional)break;this.currentBlockAdditional.data=le(e,n)}break;case O.BlockAddID:{if(!this.currentBlockAdditional)break;this.currentBlockAdditional.addId=ke(e,n)}break;case O.BlockDuration:{if(!this.currentBlock)break;this.currentBlock.duration=ke(e,n)}break;case O.ReferenceBlock:{if(!this.currentBlock)break;this.currentBlock.isKeyFrame=!1}break;case O.Tag:this.currentTagTargetIsMovie=!0,this.readContiguousElements(e.slice(s,n));break;case O.Targets:this.readContiguousElements(e.slice(s,n));break;case O.TargetTypeValue:ke(e,n)!==50&&(this.currentTagTargetIsMovie=!1);break;case O.TagTrackUID:case O.TagEditionUID:case O.TagChapterUID:case O.TagAttachmentUID:this.currentTagTargetIsMovie=!1;break;case O.SimpleTag:{if(!this.currentTagTargetIsMovie)break;this.currentSimpleTagName=null,this.readContiguousElements(e.slice(s,n))}break;case O.TagName:this.currentSimpleTagName=si(e,n);break;case O.TagString:{if(!this.currentSimpleTagName)break;const o=si(e,n);this.processTagValue(this.currentSimpleTagName,o)}break;case O.TagBinary:{if(!this.currentSimpleTagName)break;const o=le(e,n);this.processTagValue(this.currentSimpleTagName,o)}break;case O.AttachedFile:{if(!this.currentSegment)break;this.currentAttachedFile={fileUid:null,fileName:null,fileMediaType:null,fileData:null,fileDescription:null},this.readContiguousElements(e.slice(s,n));const o=this.currentSegment.metadataTags;if(this.currentAttachedFile.fileUid&&this.currentAttachedFile.fileData&&(o.raw??={},o.raw[this.currentAttachedFile.fileUid.toString()]=new Fo(this.currentAttachedFile.fileData,this.currentAttachedFile.fileMediaType??void 0,this.currentAttachedFile.fileName??void 0,this.currentAttachedFile.fileDescription??void 0)),this.currentAttachedFile.fileMediaType?.startsWith("image/")&&this.currentAttachedFile.fileData){const c=this.currentAttachedFile.fileName;let l="unknown";if(c){const d=c.toLowerCase();d.startsWith("cover.")?l="coverFront":d.startsWith("back.")&&(l="coverBack")}o.images??=[],o.images.push({data:this.currentAttachedFile.fileData,mimeType:this.currentAttachedFile.fileMediaType,kind:l,name:this.currentAttachedFile.fileName??void 0,description:this.currentAttachedFile.fileDescription??void 0})}this.currentAttachedFile=null}break;case O.FileUID:{if(!this.currentAttachedFile)break;this.currentAttachedFile.fileUid=Su(e,n)}break;case O.FileName:{if(!this.currentAttachedFile)break;this.currentAttachedFile.fileName=si(e,n)}break;case O.FileMediaType:{if(!this.currentAttachedFile)break;this.currentAttachedFile.fileMediaType=Mr(e,n)}break;case O.FileData:{if(!this.currentAttachedFile)break;this.currentAttachedFile.fileData=le(e,n)}break;case O.FileDescription:{if(!this.currentAttachedFile)break;this.currentAttachedFile.fileDescription=si(e,n)}break;case O.ContentEncodings:{if(!this.currentTrack)break;this.readContiguousElements(e.slice(s,n)),this.currentTrack.decodingInstructions.sort((o,c)=>c.order-o.order)}break;case O.ContentEncoding:this.currentDecodingInstruction={order:0,scope:ca.Block,data:null},this.readContiguousElements(e.slice(s,n)),this.currentDecodingInstruction.data&&this.currentTrack.decodingInstructions.push(this.currentDecodingInstruction),this.currentDecodingInstruction=null;break;case O.ContentEncodingOrder:{if(!this.currentDecodingInstruction)break;this.currentDecodingInstruction.order=ke(e,n)}break;case O.ContentEncodingScope:{if(!this.currentDecodingInstruction)break;this.currentDecodingInstruction.scope=ke(e,n)}break;case O.ContentCompression:{if(!this.currentDecodingInstruction)break;this.currentDecodingInstruction.data={type:"decompress",algorithm:mi.Zlib,settings:null},this.readContiguousElements(e.slice(s,n))}break;case O.ContentCompAlgo:{if(this.currentDecodingInstruction?.data?.type!=="decompress")break;this.currentDecodingInstruction.data.algorithm=ke(e,n)}break;case O.ContentCompSettings:{if(this.currentDecodingInstruction?.data?.type!=="decompress")break;this.currentDecodingInstruction.data.settings=le(e,n)}break;case O.ContentEncryption:{if(!this.currentDecodingInstruction)break;this.currentDecodingInstruction.data={type:"decrypt"}}break}return e.filePos=s+n,!0}decodeBlockData(e,t){y(e.decodingInstructions.length>0);let i=t;for(const a of e.decodingInstructions)switch(y(a.data),a.data.type){case"decompress":switch(a.data.algorithm){case mi.HeaderStripping:if(a.data.settings&&a.data.settings.length>0){const n=a.data.settings,s=new Uint8Array(n.length+i.length);s.set(n,0),s.set(i,n.length),i=s}break}break}return i}processTagValue(e,t){if(!this.currentSegment?.metadataTags)return;const i=this.currentSegment.metadataTags;if(i.raw??={},i.raw[e]??=t,typeof t=="string")switch(e.toLowerCase()){case"title":i.title??=t;break;case"description":i.description??=t;break;case"artist":i.artist??=t;break;case"album":i.album??=t;break;case"album_artist":i.albumArtist??=t;break;case"genre":i.genre??=t;break;case"comment":i.comment??=t;break;case"lyrics":i.lyrics??=t;break;case"date":{const a=new Date(t);Number.isNaN(a.getTime())||(i.date??=a)}break;case"track_number":case"part_number":{const a=t.split("/"),n=Number.parseInt(a[0],10),s=a[1]&&Number.parseInt(a[1],10);Number.isInteger(n)&&n>0&&(i.trackNumber??=n),s&&Number.isInteger(s)&&s>0&&(i.tracksTotal??=s)}break;case"disc_number":case"disc":{const a=t.split("/"),n=Number.parseInt(a[0],10),s=a[1]&&Number.parseInt(a[1],10);Number.isInteger(n)&&n>0&&(i.discNumber??=n),s&&Number.isInteger(s)&&s>0&&(i.discsTotal??=s)}break}}}class ic{constructor(e){this.internalTrack=e,this.packetToClusterLocation=new WeakMap}getId(){return this.internalTrack.id}getNumber(){const e=this.internalTrack.demuxer,i=this.internalTrack.inputTrack.type;let a=0;for(const n of e.segments)for(const s of n.tracks)if(s.inputTrack.type===i&&a++,s===this.internalTrack)break;return a}getCodec(){throw new Error("Not implemented on base class.")}getInternalCodecId(){return this.internalTrack.codecId}async computeDuration(){const e=await this.getPacket(1/0,{metadataOnly:!0});return(e?.timestamp??0)+(e?.duration??0)}getName(){return this.internalTrack.name}getLanguageCode(){return this.internalTrack.languageCode}async getFirstTimestamp(){return(await this.getFirstPacket({metadataOnly:!0}))?.timestamp??0}getTimeResolution(){return this.internalTrack.segment.timestampFactor}getDisposition(){return this.internalTrack.disposition}async getFirstPacket(e){return this.performClusterLookup(null,t=>t.trackData.get(this.internalTrack.id)?{blockIndex:0,correctBlockFound:!0}:{blockIndex:-1,correctBlockFound:!1},-1/0,1/0,e)}intoTimescale(e){return Ci(e*this.internalTrack.segment.timestampFactor)}async getPacket(e,t){const i=this.intoTimescale(e);return this.performClusterLookup(null,a=>{const n=a.trackData.get(this.internalTrack.id);if(!n)return{blockIndex:-1,correctBlockFound:!1};const s=Fe(n.presentationTimestamps,i,l=>l.timestamp),o=s!==-1?n.presentationTimestamps[s].blockIndex:-1,c=s!==-1&&i<n.endTimestamp;return{blockIndex:o,correctBlockFound:c}},i,i,t)}async getNextPacket(e,t){const i=this.packetToClusterLocation.get(e);if(i===void 0)throw new Error("Packet was not created from this track.");return this.performClusterLookup(i.cluster,a=>{if(a===i.cluster){const n=a.trackData.get(this.internalTrack.id);if(i.blockIndex+1<n.blocks.length)return{blockIndex:i.blockIndex+1,correctBlockFound:!0}}else if(a.trackData.get(this.internalTrack.id))return{blockIndex:0,correctBlockFound:!0};return{blockIndex:-1,correctBlockFound:!1}},-1/0,1/0,t)}async getKeyPacket(e,t){const i=this.intoTimescale(e);return this.performClusterLookup(null,a=>{const n=a.trackData.get(this.internalTrack.id);if(!n)return{blockIndex:-1,correctBlockFound:!1};const s=qn(n.presentationTimestamps,l=>n.blocks[l.blockIndex].isKeyFrame&&l.timestamp<=i),o=s!==-1?n.presentationTimestamps[s].blockIndex:-1,c=s!==-1&&i<n.endTimestamp;return{blockIndex:o,correctBlockFound:c}},i,i,t)}async getNextKeyPacket(e,t){const i=this.packetToClusterLocation.get(e);if(i===void 0)throw new Error("Packet was not created from this track.");return this.performClusterLookup(i.cluster,a=>{if(a===i.cluster){const s=a.trackData.get(this.internalTrack.id).blocks.findIndex((o,c)=>o.isKeyFrame&&c>i.blockIndex);if(s!==-1)return{blockIndex:s,correctBlockFound:!0}}else{const n=a.trackData.get(this.internalTrack.id);if(n&&n.firstKeyFrameTimestamp!==null){const s=n.blocks.findIndex(o=>o.isKeyFrame);return y(s!==-1),{blockIndex:s,correctBlockFound:!0}}}return{blockIndex:-1,correctBlockFound:!1}},-1/0,1/0,t)}async fetchPacketInCluster(e,t,i){if(t===-1)return null;const n=e.trackData.get(this.internalTrack.id).blocks[t];y(n),n.decoded||(n.data=this.internalTrack.demuxer.decodeBlockData(this.internalTrack,n.data),n.decoded=!0);const s=i.metadataOnly?kt:n.data,o=n.timestamp/this.internalTrack.segment.timestampFactor,c=n.duration/this.internalTrack.segment.timestampFactor,l={};n.mainAdditional&&this.internalTrack.info?.type==="video"&&this.internalTrack.info.alphaMode&&(l.alpha=i.metadataOnly?kt:n.mainAdditional,l.alphaByteLength=n.mainAdditional.byteLength);const d=new Le(s,n.isKeyFrame?"key":"delta",o,c,e.dataStartPos+t,n.data.byteLength,l);return this.packetToClusterLocation.set(d,{cluster:e,blockIndex:t}),d}async performClusterLookup(e,t,i,a,n){const{demuxer:s,segment:o}=this.internalTrack;let c=null,l=null,d=-1;if(e){const{blockIndex:k,correctBlockFound:w}=t(e);if(w)return this.fetchPacketInCluster(e,k,n);k!==-1&&(l=e,d=k)}const u=Fe(this.internalTrack.cuePoints,i,k=>k.time),h=u!==-1?this.internalTrack.cuePoints[u]:null,p=Fe(this.internalTrack.clusterPositionCache,i,k=>k.startTimestamp),m=p!==-1?this.internalTrack.clusterPositionCache[p]:null,g=Math.max(h?.clusterPosition??0,m?.elementStartPos??0)||null;let b;for(e?g===null||e.elementStartPos>=g?(b=e.elementEndPos,c=e):b=g:b=g??o.clusterSeekStartPos;o.elementEndPos===null||b<=o.elementEndPos-vt;){if(c){const I=c.trackData.get(this.internalTrack.id);if(I&&I.startTimestamp>a)break}let k=s.reader.requestSliceRange(b,vt,Kt);if(k instanceof Promise&&(k=await k),!k)break;const w=b,T=Ht(k);if(!T||!Fi.includes(T.id)&&T.id!==O.Void){const I=await tc(s.reader,w,Fi,Math.min(o.elementEndPos??1/0,w+rc));if(I){b=I;continue}else break}const S=T.id;let C=T.size;const P=k.filePos;if(S===O.Cluster){c=await s.readCluster(w,o),C=c.elementEndPos-P;const{blockIndex:I,correctBlockFound:R}=t(c);if(R)return this.fetchPacketInCluster(c,I,n);I!==-1&&(l=c,d=I)}C===void 0&&(y(S!==O.Cluster),C=(await bn(s.reader,P,Yi,o.elementEndPos)).pos-P);const B=P+C;if(o.elementEndPos===null){let I=s.reader.requestSliceRange(B,vt,Kt);if(I instanceof Promise&&(I=await I),!I)break;if(is(I)===O.Segment){o.elementEndPos=B;break}}b=B}if(h&&(!l||l.elementStartPos<h.clusterPosition)){const k=this.internalTrack.cuePoints[u-1];y(!k||k.time<h.time);const w=k?.time??-1/0;return this.performClusterLookup(null,t,w,a,n)}return l?this.fetchPacketInCluster(l,d,n):null}}class Cu extends ic{constructor(e){super(e),this.decoderConfigPromise=null,this.internalTrack=e}getCodec(){return this.internalTrack.info.codec}getCodedWidth(){return this.internalTrack.info.width}getCodedHeight(){return this.internalTrack.info.height}getRotation(){return this.internalTrack.info.rotation}async getColorSpace(){return{primaries:this.internalTrack.info.colorSpace?.primaries,transfer:this.internalTrack.info.colorSpace?.transfer,matrix:this.internalTrack.info.colorSpace?.matrix,fullRange:this.internalTrack.info.colorSpace?.fullRange}}async canBeTransparent(){return this.internalTrack.info.alphaMode}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{let e=null;return(this.internalTrack.info.codec==="vp9"||this.internalTrack.info.codec==="av1"||this.internalTrack.info.codec==="avc"&&!this.internalTrack.info.codecDescription||this.internalTrack.info.codec==="hevc"&&!this.internalTrack.info.codecDescription)&&(e=await this.getFirstPacket({})),{codec:Qn({width:this.internalTrack.info.width,height:this.internalTrack.info.height,codec:this.internalTrack.info.codec,codecDescription:this.internalTrack.info.codecDescription,colorSpace:this.internalTrack.info.colorSpace,avcType:1,avcCodecInfo:this.internalTrack.info.codec==="avc"&&e?Yn(e.data):null,hevcCodecInfo:this.internalTrack.info.codec==="hevc"&&e?Zn(e.data):null,vp9CodecInfo:this.internalTrack.info.codec==="vp9"&&e?Vo(e.data):null,av1CodecInfo:this.internalTrack.info.codec==="av1"&&e?Wo(e.data):null}),codedWidth:this.internalTrack.info.width,codedHeight:this.internalTrack.info.height,description:this.internalTrack.info.codecDescription??void 0,colorSpace:this.internalTrack.info.colorSpace??void 0}})():null}}class _u extends ic{constructor(e){super(e),this.decoderConfig=null,this.internalTrack=e}getCodec(){return this.internalTrack.info.codec}getNumberOfChannels(){return this.internalTrack.info.numberOfChannels}getSampleRate(){return this.internalTrack.info.sampleRate}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfig??={codec:Gn({codec:this.internalTrack.info.codec,codecDescription:this.internalTrack.info.codecDescription,aacCodecInfo:this.internalTrack.info.aacCodecInfo}),numberOfChannels:this.internalTrack.info.numberOfChannels,sampleRate:this.internalTrack.info.sampleRate,description:this.internalTrack.info.codecDescription??void 0}:null}}const pi=4,Iu=[44100,48e3,32e3],Eu=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1,-1,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1,-1,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,16,24,32,40,48,56,64,80,96,112,128,144,160,-1,-1,8,16,24,32,40,48,56,64,80,96,112,128,144,160,-1,-1,32,48,56,64,80,96,112,128,144,160,176,192,224,256,-1],Au=1483304551,Fu=1231971951,Bu=(r,e,t,i,a)=>e===0?0:e===1?Math.floor(144*t/(i<<r))+a:e===2?Math.floor(144*t/i)+a:(Math.floor(12*t/i)+a)*4,Ru=(r,e)=>r===3?e===3?21:36:e===3?13:21,as=(r,e)=>{const t=r>>>24,i=r>>>16&255,a=r>>>8&255,n=r&255;if(t!==255&&i!==255&&a!==255&&n!==255)return{header:null,bytesAdvanced:4};if(t!==255)return{header:null,bytesAdvanced:1};if((i&224)!==224)return{header:null,bytesAdvanced:1};let s=0,o=0;i&16?s=i&8?0:1:(s=1,o=1);const c=i>>3&3,l=i>>1&3,d=a>>4&15,u=(a>>2&3)%3,h=a>>1&1,p=n>>6&3,m=n>>4&3,g=n>>3&1,b=n>>2&1,k=n&3,w=Eu[s*16*4+l*16+d];if(w===-1)return{header:null,bytesAdvanced:1};const T=w*1e3,S=Iu[u]>>s+o,C=Bu(s,l,T,S,h);if(e!==null&&e<C)return{header:null,bytesAdvanced:1};let P;return c===3?P=l===3?384:1152:l===3?P=384:l===2?P=1152:P=576,{header:{totalSize:C,mpegVersionId:c,layer:l,bitrate:T,frequencyIndex:u,sampleRate:S,channel:p,modeExtension:m,copyright:g,original:b,emphasis:k,audioSamplesInFrame:P},bytesAdvanced:1}},yn=r=>{let e=2130706432,t=0;for(;e!==0;)t>>=1,t|=r&e,e>>=8;return t};var Vr;(function(r){r[r.Unsynchronisation=128]="Unsynchronisation",r[r.ExtendedHeader=64]="ExtendedHeader",r[r.ExperimentalIndicator=32]="ExperimentalIndicator",r[r.Footer=16]="Footer"})(Vr||(Vr={}));var Lr;(function(r){r[r.ISO_8859_1=0]="ISO_8859_1",r[r.UTF_16_WITH_BOM=1]="UTF_16_WITH_BOM",r[r.UTF_16_BE_NO_BOM=2]="UTF_16_BE_NO_BOM",r[r.UTF_8=3]="UTF_8"})(Lr||(Lr={}));const $i=128,la=10,Wr=["Blues","Classic rock","Country","Dance","Disco","Funk","Grunge","Hip-hop","Jazz","Metal","New age","Oldies","Other","Pop","Rhythm and blues","Rap","Reggae","Rock","Techno","Industrial","Alternative","Ska","Death metal","Pranks","Soundtrack","Euro-techno","Ambient","Trip-hop","Vocal","Jazz & funk","Fusion","Trance","Classical","Instrumental","Acid","House","Game","Sound clip","Gospel","Noise","Alternative rock","Bass","Soul","Punk","Space","Meditative","Instrumental pop","Instrumental rock","Ethnic","Gothic","Darkwave","Techno-industrial","Electronic","Pop-folk","Eurodance","Dream","Southern rock","Comedy","Cult","Gangsta","Top 40","Christian rap","Pop/funk","Jungle music","Native US","Cabaret","New wave","Psychedelic","Rave","Showtunes","Trailer","Lo-fi","Tribal","Acid punk","Acid jazz","Polka","Retro","Musical","Rock 'n' roll","Hard rock","Folk","Folk rock","National folk","Swing","Fast fusion","Bebop","Latin","Revival","Celtic","Bluegrass","Avantgarde","Gothic rock","Progressive rock","Psychedelic rock","Symphonic rock","Slow rock","Big band","Chorus","Easy listening","Acoustic","Humour","Speech","Chanson","Opera","Chamber music","Sonata","Symphony","Booty bass","Primus","Porn groove","Satire","Slow jam","Club","Tango","Samba","Folklore","Ballad","Power ballad","Rhythmic Soul","Freestyle","Duet","Punk rock","Drum solo","A cappella","Euro-house","Dance hall","Goa music","Drum & bass","Club-house","Hardcore techno","Terror","Indie","Britpop","Negerpunk","Polsk punk","Beat","Christian gangsta rap","Heavy metal","Black metal","Crossover","Contemporary Christian","Christian rock","Merengue","Salsa","Thrash metal","Anime","Jpop","Synthpop","Christmas","Art rock","Baroque","Bhangra","Big beat","Breakbeat","Chillout","Downtempo","Dub","EBM","Eclectic","Electro","Electroclash","Emo","Experimental","Garage","Global","IDM","Illbient","Industro-Goth","Jam Band","Krautrock","Leftfield","Lounge","Math rock","New romantic","Nu-breakz","Post-punk","Post-rock","Psytrance","Shoegaze","Space rock","Trop rock","World music","Neoclassical","Audiobook","Audio theatre","Neue Deutsche Welle","Podcast","Indie rock","G-Funk","Dubstep","Garage rock","Psybient"],zu=(r,e)=>{const t=r.filePos;e.raw??={},e.raw.TAG??=le(r,$i-3),r.filePos=t;const i=Rr(r,30);i&&(e.title??=i);const a=Rr(r,30);a&&(e.artist??=a);const n=Rr(r,30);n&&(e.album??=n);const s=Rr(r,4),o=Number.parseInt(s,10);Number.isInteger(o)&&o>0&&(e.date??=new Date(o,0,1));const c=le(r,30);let l;if(c[28]===0&&c[29]!==0){const u=c[29];u>0&&(e.trackNumber??=u),r.skip(-30),l=Rr(r,28),r.skip(2)}else r.skip(-30),l=Rr(r,30);l&&(e.comment??=l);const d=re(r);d<Wr.length&&(e.genre??=Wr[d])},Rr=(r,e)=>{const t=le(r,e),i=Dr(t.indexOf(0),t.length),a=t.subarray(0,i);let n="";for(let s=0;s<a.length;s++)n+=String.fromCharCode(a[s]);return n.trimEnd()},da=r=>{const e=r.filePos,t=rt(r,3),i=re(r),a=re(r),n=re(r),s=Y(r);if(t!=="ID3"||i===255||a===255||(s&2155905152)!==0)return r.filePos=e,null;const o=yn(s);return{majorVersion:i,revision:a,flags:n,size:o}},ac=(r,e,t)=>{if(![2,3,4].includes(e.majorVersion)){console.warn(`Unsupported ID3v2 major version: ${e.majorVersion}`);return}const i=le(r,e.size),a=new Du(e,i);if(e.flags&Vr.Footer&&a.removeFooter(),e.flags&Vr.Unsynchronisation&&e.majorVersion===3&&a.ununsynchronizeAll(),e.flags&Vr.ExtendedHeader){const n=a.readU32();e.majorVersion===3?a.pos+=n:a.pos+=n-4}for(;a.pos<=a.bytes.length-a.frameHeaderSize();){const n=a.readId3V2Frame();if(!n)break;const s=a.pos,o=a.pos+n.size;let c=!1,l=!1,d=!1;if(e.majorVersion===3?(c=!!(n.flags&64),l=!!(n.flags&128)):e.majorVersion===4&&(c=!!(n.flags&4),l=!!(n.flags&8),d=!!(n.flags&2)||!!(e.flags&Vr.Unsynchronisation)),c){console.warn(`Skipping encrypted ID3v2 frame ${n.id}`),a.pos=o;continue}if(l){console.warn(`Skipping compressed ID3v2 frame ${n.id}`),a.pos=o;continue}switch(d&&a.ununsynchronizeRegion(a.pos,o),t.raw??={},n.id[0]==="T"?t.raw[n.id]??=a.readId3V2EncodingAndText(o):t.raw[n.id]??=a.readBytes(n.size),a.pos=s,n.id){case"TIT2":case"TT2":t.title??=a.readId3V2EncodingAndText(o);break;case"TIT3":case"TT3":t.description??=a.readId3V2EncodingAndText(o);break;case"TPE1":case"TP1":t.artist??=a.readId3V2EncodingAndText(o);break;case"TALB":case"TAL":t.album??=a.readId3V2EncodingAndText(o);break;case"TPE2":case"TP2":t.albumArtist??=a.readId3V2EncodingAndText(o);break;case"TRCK":case"TRK":{const h=a.readId3V2EncodingAndText(o).split("/"),p=Number.parseInt(h[0],10),m=h[1]&&Number.parseInt(h[1],10);Number.isInteger(p)&&p>0&&(t.trackNumber??=p),m&&Number.isInteger(m)&&m>0&&(t.tracksTotal??=m)}break;case"TPOS":case"TPA":{const h=a.readId3V2EncodingAndText(o).split("/"),p=Number.parseInt(h[0],10),m=h[1]&&Number.parseInt(h[1],10);Number.isInteger(p)&&p>0&&(t.discNumber??=p),m&&Number.isInteger(m)&&m>0&&(t.discsTotal??=m)}break;case"TCON":case"TCO":{const u=a.readId3V2EncodingAndText(o);let h=/^\((\d+)\)/.exec(u);if(h){const p=Number.parseInt(h[1]);if(Wr[p]!==void 0){t.genre??=Wr[p];break}}if(h=/^\d+$/.exec(u),h){const p=Number.parseInt(h[0]);if(Wr[p]!==void 0){t.genre??=Wr[p];break}}t.genre??=u}break;case"TDRC":case"TDAT":{const u=a.readId3V2EncodingAndText(o),h=new Date(u);Number.isNaN(h.getTime())||(t.date??=h)}break;case"TYER":case"TYE":{const u=a.readId3V2EncodingAndText(o),h=Number.parseInt(u,10);Number.isInteger(h)&&(t.date??=new Date(h,0,1))}break;case"USLT":case"ULT":{const u=a.readU8();a.pos+=3,a.readId3V2Text(u,o),t.lyrics??=a.readId3V2Text(u,o)}break;case"COMM":case"COM":{const u=a.readU8();a.pos+=3,a.readId3V2Text(u,o),t.comment??=a.readId3V2Text(u,o)}break;case"APIC":case"PIC":{const u=a.readId3V2TextEncoding();let h;if(e.majorVersion===2){const b=a.readAscii(3);h=b==="PNG"?"image/png":b==="JPG"?"image/jpeg":"image/*"}else h=a.readId3V2Text(u,o);const p=a.readU8(),m=a.readId3V2Text(u,o).trimEnd(),g=o-a.pos;if(g>=0){const b=a.readBytes(g);t.images||(t.images=[]),t.images.push({data:b,mimeType:h,kind:p===3?"coverFront":p===4?"coverBack":"unknown",description:m})}}break;default:a.pos+=n.size;break}a.pos=o}};class Du{constructor(e,t){this.header=e,this.bytes=t,this.pos=0,this.view=new DataView(t.buffer,t.byteOffset,t.byteLength)}frameHeaderSize(){return this.header.majorVersion===2?6:10}ununsynchronizeAll(){const e=[];for(let t=0;t<this.bytes.length;t++){const i=this.bytes[t];e.push(i),i===255&&t!==this.bytes.length-1&&this.bytes[t]===0&&t++}this.bytes=new Uint8Array(e),this.view=new DataView(this.bytes.buffer)}ununsynchronizeRegion(e,t){const i=[];for(let s=e;s<t;s++){const o=this.bytes[s];i.push(o),o===255&&s!==t-1&&this.bytes[s+1]===0&&s++}const a=this.bytes.subarray(0,e),n=this.bytes.subarray(t);this.bytes=new Uint8Array(a.length+i.length+n.length),this.bytes.set(a,0),this.bytes.set(i,a.length),this.bytes.set(n,a.length+i.length),this.view=new DataView(this.bytes.buffer)}removeFooter(){this.bytes=this.bytes.subarray(0,this.bytes.length-la),this.view=new DataView(this.bytes.buffer)}readBytes(e){const t=this.bytes.subarray(this.pos,this.pos+e);return this.pos+=e,t}readU8(){const e=this.view.getUint8(this.pos);return this.pos+=1,e}readU16(){const e=this.view.getUint16(this.pos,!1);return this.pos+=2,e}readU24(){const e=this.view.getUint16(this.pos,!1),t=this.view.getUint8(this.pos+1);return this.pos+=3,e*256+t}readU32(){const e=this.view.getUint32(this.pos,!1);return this.pos+=4,e}readAscii(e){let t="";for(let i=0;i<e;i++)t+=String.fromCharCode(this.view.getUint8(this.pos+i));return this.pos+=e,t}readId3V2Frame(){if(this.header.majorVersion===2){const e=this.readAscii(3);if(e==="\0\0\0")return null;const t=this.readU24();return{id:e,size:t,flags:0}}else{const e=this.readAscii(4);if(e==="\0\0\0\0")return null;const t=this.readU32();let i=this.header.majorVersion===4?yn(t):t;const a=this.readU16(),n=this.pos,s=o=>{const c=this.pos+o;if(c>this.bytes.length)return!1;if(c<=this.bytes.length-this.frameHeaderSize()){this.pos+=o;const l=this.readAscii(4);if(l!=="\0\0\0\0"&&!/[0-9A-Z]{4}/.test(l))return!1}return!0};if(!s(i)){const o=this.header.majorVersion===4?t:yn(t);s(o)&&(i=o)}return this.pos=n,{id:e,size:i,flags:a}}}readId3V2TextEncoding(){const e=this.readU8();if(e>3)throw new Error(`Unsupported text encoding: ${e}`);return e}readId3V2Text(e,t){const i=this.pos,a=this.readBytes(t-this.pos);switch(e){case Lr.ISO_8859_1:{let n="";for(let s=0;s<a.length;s++){const o=a[s];if(o===0){this.pos=i+s+1;break}n+=String.fromCharCode(o)}return n}case Lr.UTF_16_WITH_BOM:if(a[0]===255&&a[1]===254){const n=new TextDecoder("utf-16le"),s=Dr(a.findIndex((o,c)=>o===0&&a[c+1]===0&&c%2===0),a.length);return this.pos=i+Math.min(s+2,a.length),n.decode(a.subarray(2,s))}else if(a[0]===254&&a[1]===255){const n=new TextDecoder("utf-16be"),s=Dr(a.findIndex((o,c)=>o===0&&a[c+1]===0&&c%2===0),a.length);return this.pos=i+Math.min(s+2,a.length),n.decode(a.subarray(2,s))}else{const n=Dr(a.findIndex(s=>s===0),a.length);return this.pos=i+Math.min(n+1,a.length),St.decode(a.subarray(0,n))}case Lr.UTF_16_BE_NO_BOM:{const n=new TextDecoder("utf-16be"),s=Dr(a.findIndex((o,c)=>o===0&&a[c+1]===0&&c%2===0),a.length);return this.pos=i+Math.min(s+2,a.length),n.decode(a.subarray(0,s))}case Lr.UTF_8:{const n=Dr(a.findIndex(s=>s===0),a.length);return this.pos=i+Math.min(n+1,a.length),St.decode(a.subarray(0,n))}}}readId3V2EncodingAndText(e){if(this.pos>=e)return"";const t=this.readId3V2TextEncoding();return this.readId3V2Text(t,e)}}const wn=async(r,e,t)=>{let i=e;for(;t===null||i<t;){let a=r.requestSlice(i,pi);if(a instanceof Promise&&(a=await a),!a)break;const n=Y(a),s=as(n,r.fileSize!==null?r.fileSize-i:null);if(s.header)return{header:s.header,startPos:i};i+=s.bytesAdvanced}return null};class Mu extends fr{constructor(e){super(e),this.metadataPromise=null,this.firstFrameHeader=null,this.loadedSamples=[],this.metadataTags=null,this.tracks=[],this.readingMutex=new ii,this.lastSampleLoaded=!1,this.lastLoadedPos=0,this.nextTimestampInSamples=0,this.reader=e._reader}async readMetadata(){return this.metadataPromise??=(async()=>{for(;!this.firstFrameHeader&&!this.lastSampleLoaded;)await this.advanceReader();if(!this.firstFrameHeader)throw new Error("No valid MP3 frame found.");this.tracks=[new Vt(this.input,new Nu(this))]})()}async advanceReader(){if(this.lastLoadedPos===0)for(;;){let o=this.reader.requestSlice(this.lastLoadedPos,la);if(o instanceof Promise&&(o=await o),!o){this.lastSampleLoaded=!0;return}const c=da(o);if(!c)break;this.lastLoadedPos=o.filePos+c.size}const e=await wn(this.reader,this.lastLoadedPos,this.reader.fileSize);if(!e){this.lastSampleLoaded=!0;return}const t=e.header;this.lastLoadedPos=e.startPos+t.totalSize-1;const i=Ru(t.mpegVersionId,t.channel);let a=this.reader.requestSlice(e.startPos+i,4);if(a instanceof Promise&&(a=await a),a){const o=Y(a);if(o===Au||o===Fu)return}this.firstFrameHeader||(this.firstFrameHeader=t),t.sampleRate!==this.firstFrameHeader.sampleRate&&console.warn(`MP3 changed sample rate mid-file: ${this.firstFrameHeader.sampleRate} Hz to ${t.sampleRate} Hz. Might be a bug, so please report this file.`);const n=t.audioSamplesInFrame/this.firstFrameHeader.sampleRate,s={timestamp:this.nextTimestampInSamples/this.firstFrameHeader.sampleRate,duration:n,dataStart:e.startPos,dataSize:t.totalSize};this.loadedSamples.push(s),this.nextTimestampInSamples+=t.audioSamplesInFrame}async getMimeType(){return"audio/mpeg"}async getTracks(){return await this.readMetadata(),this.tracks}async computeDuration(){await this.readMetadata();const e=this.tracks[0];return y(e),e.computeDuration()}async getMetadataTags(){const e=await this.readingMutex.acquire();try{if(await this.readMetadata(),this.metadataTags)return this.metadataTags;this.metadataTags={};let t=0,i=!1;for(;;){let a=this.reader.requestSlice(t,la);if(a instanceof Promise&&(a=await a),!a)break;const n=da(a);if(!n)break;i=!0;let s=this.reader.requestSlice(a.filePos,n.size);if(s instanceof Promise&&(s=await s),!s)break;ac(s,n,this.metadataTags),t=a.filePos+n.size}if(!i&&this.reader.fileSize!==null&&this.reader.fileSize>=$i){let a=this.reader.requestSlice(this.reader.fileSize-$i,$i);a instanceof Promise&&(a=await a),y(a),rt(a,3)==="TAG"&&zu(a,this.metadataTags)}return this.metadataTags}finally{e()}}}class Nu{constructor(e){this.demuxer=e}getId(){return 1}getNumber(){return 1}async getFirstTimestamp(){return 0}getTimeResolution(){return y(this.demuxer.firstFrameHeader),this.demuxer.firstFrameHeader.sampleRate/this.demuxer.firstFrameHeader.audioSamplesInFrame}async computeDuration(){const e=await this.getPacket(1/0,{metadataOnly:!0});return(e?.timestamp??0)+(e?.duration??0)}getName(){return null}getLanguageCode(){return bt}getCodec(){return"mp3"}getInternalCodecId(){return null}getNumberOfChannels(){return y(this.demuxer.firstFrameHeader),this.demuxer.firstFrameHeader.channel===3?1:2}getSampleRate(){return y(this.demuxer.firstFrameHeader),this.demuxer.firstFrameHeader.sampleRate}getDisposition(){return{...ur}}async getDecoderConfig(){return y(this.demuxer.firstFrameHeader),{codec:"mp3",numberOfChannels:this.demuxer.firstFrameHeader.channel===3?1:2,sampleRate:this.demuxer.firstFrameHeader.sampleRate}}async getPacketAtIndex(e,t){if(e===-1)return null;const i=this.demuxer.loadedSamples[e];if(!i)return null;let a;if(t.metadataOnly)a=kt;else{let n=this.demuxer.reader.requestSlice(i.dataStart,i.dataSize);if(n instanceof Promise&&(n=await n),!n)return null;a=le(n,i.dataSize)}return new Le(a,"key",i.timestamp,i.duration,e,i.dataSize)}getFirstPacket(e){return this.getPacketAtIndex(0,e)}async getNextPacket(e,t){const i=await this.demuxer.readingMutex.acquire();try{const a=Hi(this.demuxer.loadedSamples,e.timestamp,s=>s.timestamp);if(a===-1)throw new Error("Packet was not created from this track.");const n=a+1;for(;n>=this.demuxer.loadedSamples.length&&!this.demuxer.lastSampleLoaded;)await this.demuxer.advanceReader();return this.getPacketAtIndex(n,t)}finally{i()}}async getPacket(e,t){const i=await this.demuxer.readingMutex.acquire();try{for(;;){const a=Fe(this.demuxer.loadedSamples,e,n=>n.timestamp);if(a===-1&&this.demuxer.loadedSamples.length>0)return null;if(this.demuxer.lastSampleLoaded)return this.getPacketAtIndex(a,t);if(a>=0&&a+1<this.demuxer.loadedSamples.length)return this.getPacketAtIndex(a,t);await this.demuxer.advanceReader()}}finally{i()}}getKeyPacket(e,t){return this.getPacket(e,t)}getNextKeyPacket(e,t){return this.getNextPacket(e,t)}}const nc=1399285583,Ou=79764919,sc=new Uint32Array(256);for(let r=0;r<256;r++){let e=r<<24;for(let t=0;t<8;t++)e=e&2147483648?e<<1^Ou:e<<1;sc[r]=e>>>0&4294967295}const Uu=r=>{const e=Ke(r),t=e.getUint32(22,!0);e.setUint32(22,0,!0);let i=0;for(let a=0;a<r.length;a++){const n=r[a];i=(i<<8^sc[i>>>24^n])>>>0}return e.setUint32(22,t,!0),i},Vu=(r,e,t)=>{let i=0,a=null;if(r.length>0)if(e.codec==="vorbis"){y(e.vorbisInfo);const n=e.vorbisInfo.modeBlockflags.length,o=(1<<kd(n-1))-1<<1,c=(r[0]&o)>>1;if(c>=e.vorbisInfo.modeBlockflags.length)throw new Error("Invalid mode number.");let l=t;const d=e.vorbisInfo.modeBlockflags[c];if(a=e.vorbisInfo.blocksizes[d],d===1){const u=(o|1)+1,h=r[0]&u?1:0;l=e.vorbisInfo.blocksizes[h]}i=l!==null?l+a>>2:0}else e.codec==="opus"&&(i=Jd(r).durationInSamples);return{durationInSamples:i,vorbisBlockSize:a}},Lu=r=>{let e="audio/ogg";if(r.codecStrings){const t=[...new Set(r.codecStrings)];e+=`; codecs="${t.join(", ")}"`}return e};const vr=27,Kr=282,Wu=Kr+65025,gi=r=>{const e=r.filePos;if(Hr(r)!==nc)return null;r.skip(1);const i=re(r),a=Dh(r),n=Hr(r),s=Hr(r),o=Hr(r),c=re(r),l=new Uint8Array(c);for(let p=0;p<c;p++)l[p]=re(r);const d=27+c,u=l.reduce((p,m)=>p+m,0),h=d+u;return{headerStartPos:e,totalSize:h,dataStartPos:e+d,dataSize:u,headerType:i,granulePosition:a,serialNumber:n,sequenceNumber:s,checksum:o,lacingValues:l}},Hu=(r,e)=>{for(;r.filePos<e-3;){const t=Hr(r),i=t&255,a=t>>>8&255,n=t>>>16&255,s=t>>>24&255,o=79;if(!(i!==o&&a!==o&&n!==o&&s!==o)){if(r.skip(-4),t===nc)return!0;r.skip(1)}}return!1};class ju extends fr{constructor(e){super(e),this.metadataPromise=null,this.bitstreams=[],this.tracks=[],this.metadataTags={},this.reader=e._reader}async readMetadata(){return this.metadataPromise??=(async()=>{let e=0;for(;;){let t=this.reader.requestSliceRange(e,vr,Kr);if(t instanceof Promise&&(t=await t),!t)break;const i=gi(t);if(!i||!!!(i.headerType&2))break;this.bitstreams.push({serialNumber:i.serialNumber,bosPage:i,description:null,numberOfChannels:-1,sampleRate:-1,codecInfo:{codec:null,vorbisInfo:null,opusInfo:null},lastMetadataPacket:null}),e=i.headerStartPos+i.totalSize}for(const t of this.bitstreams){const i=await this.readPacket(t.bosPage,0);i&&(i.data.byteLength>=7&&i.data[0]===1&&i.data[1]===118&&i.data[2]===111&&i.data[3]===114&&i.data[4]===98&&i.data[5]===105&&i.data[6]===115?await this.readVorbisMetadata(i,t):i.data.byteLength>=8&&i.data[0]===79&&i.data[1]===112&&i.data[2]===117&&i.data[3]===115&&i.data[4]===72&&i.data[5]===101&&i.data[6]===97&&i.data[7]===100&&await this.readOpusMetadata(i,t),t.codecInfo.codec!==null&&this.tracks.push(new Vt(this.input,new qu(t,this))))}})()}async readVorbisMetadata(e,t){let i=await this.findNextPacketStart(e);if(!i)return;const a=await this.readPacket(i.startPage,i.startSegmentIndex);if(!a||(i=await this.findNextPacketStart(a),!i))return;const n=await this.readPacket(i.startPage,i.startSegmentIndex);if(!n||a.data[0]!==3||n.data[0]!==5)return;const s=[],o=u=>{for(;s.push(Math.min(255,u)),!(u<255);)u-=255};o(e.data.length),o(a.data.length);const c=new Uint8Array(1+s.length+e.data.length+a.data.length+n.data.length);c[0]=2,c.set(s,1),c.set(e.data,1+s.length),c.set(a.data,1+s.length+e.data.length),c.set(n.data,1+s.length+e.data.length+a.data.length),t.codecInfo.codec="vorbis",t.description=c,t.lastMetadataPacket=n;const l=Ke(e.data);t.numberOfChannels=l.getUint8(11),t.sampleRate=l.getUint32(12,!0);const d=l.getUint8(28);t.codecInfo.vorbisInfo={blocksizes:[1<<(d&15),1<<(d>>4)],modeBlockflags:eu(n.data).modeBlockflags},un(a.data.subarray(7),this.metadataTags)}async readOpusMetadata(e,t){const i=await this.findNextPacketStart(e);if(!i)return;const a=await this.readPacket(i.startPage,i.startSegmentIndex);if(!a)return;t.codecInfo.codec="opus",t.description=e.data,t.lastMetadataPacket=a;const n=Ho(e.data);t.numberOfChannels=n.outputChannelCount,t.sampleRate=_a,t.codecInfo.opusInfo={preSkip:n.preSkip},un(a.data.subarray(8),this.metadataTags)}async readPacket(e,t){y(t<e.lacingValues.length);let i=0;for(let u=0;u<t;u++)i+=e.lacingValues[u];let a=e,n=i,s=t;const o=[];e:for(;;){let u=this.reader.requestSlice(a.dataStartPos,a.dataSize);u instanceof Promise&&(u=await u),y(u);const h=le(u,a.dataSize);for(;;){if(s===a.lacingValues.length){o.push(h.subarray(i,n));break}const m=a.lacingValues[s];if(n+=m,m<255){o.push(h.subarray(i,n));break e}s++}let p=a.headerStartPos+a.totalSize;for(;;){let m=this.reader.requestSliceRange(p,vr,Kr);if(m instanceof Promise&&(m=await m),!m)return null;const g=gi(m);if(!g)return null;if(a=g,a.serialNumber===e.serialNumber)break;p=a.headerStartPos+a.totalSize}i=0,n=0,s=0}const c=o.reduce((u,h)=>u+h.length,0);if(c===0)return null;const l=new Uint8Array(c);let d=0;for(let u=0;u<o.length;u++){const h=o[u];l.set(h,d),d+=h.length}return{data:l,endPage:a,endSegmentIndex:s}}async findNextPacketStart(e){if(e.endSegmentIndex<e.endPage.lacingValues.length-1)return{startPage:e.endPage,startSegmentIndex:e.endSegmentIndex+1};if(!!(e.endPage.headerType&4))return null;let i=e.endPage.headerStartPos+e.endPage.totalSize;for(;;){let a=this.reader.requestSliceRange(i,vr,Kr);if(a instanceof Promise&&(a=await a),!a)return null;const n=gi(a);if(!n)return null;if(n.serialNumber===e.endPage.serialNumber)return{startPage:n,startSegmentIndex:0};i=n.headerStartPos+n.totalSize}}async getMimeType(){await this.readMetadata();const e=await Promise.all(this.tracks.map(t=>t.getCodecParameterString()));return Lu({codecStrings:e.filter(Boolean)})}async getTracks(){return await this.readMetadata(),this.tracks}async computeDuration(){const e=await this.getTracks(),t=await Promise.all(e.map(i=>i.computeDuration()));return Math.max(0,...t)}async getMetadataTags(){return await this.readMetadata(),this.metadataTags}}class qu{constructor(e,t){this.bitstream=e,this.demuxer=t,this.encodedPacketToMetadata=new WeakMap,this.sequentialScanCache=[],this.sequentialScanMutex=new ii,this.internalSampleRate=e.codecInfo.codec==="opus"?_a:e.sampleRate}getId(){return this.bitstream.serialNumber}getNumber(){const e=this.demuxer.tracks.findIndex(t=>t._backing.bitstream===this.bitstream);return y(e!==-1),e+1}getNumberOfChannels(){return this.bitstream.numberOfChannels}getSampleRate(){return this.bitstream.sampleRate}getTimeResolution(){return this.bitstream.sampleRate}getCodec(){return this.bitstream.codecInfo.codec}getInternalCodecId(){return null}async getDecoderConfig(){return y(this.bitstream.codecInfo.codec),{codec:this.bitstream.codecInfo.codec,numberOfChannels:this.bitstream.numberOfChannels,sampleRate:this.bitstream.sampleRate,description:this.bitstream.description??void 0}}getName(){return null}getLanguageCode(){return bt}getDisposition(){return{...ur}}async getFirstTimestamp(){return 0}async computeDuration(){const e=await this.getPacket(1/0,{metadataOnly:!0});return(e?.timestamp??0)+(e?.duration??0)}granulePositionToTimestampInSamples(e){return this.bitstream.codecInfo.codec==="opus"?(y(this.bitstream.codecInfo.opusInfo),e-this.bitstream.codecInfo.opusInfo.preSkip):e}createEncodedPacketFromOggPacket(e,t,i){if(!e)return null;const{durationInSamples:a,vorbisBlockSize:n}=Vu(e.data,this.bitstream.codecInfo,t.vorbisLastBlocksize),s=new Le(i.metadataOnly?kt:e.data,"key",Math.max(0,t.timestampInSamples)/this.internalSampleRate,a/this.internalSampleRate,e.endPage.headerStartPos+e.endSegmentIndex,e.data.byteLength);return this.encodedPacketToMetadata.set(s,{packet:e,timestampInSamples:t.timestampInSamples,durationInSamples:a,vorbisLastBlockSize:t.vorbisLastBlocksize,vorbisBlockSize:n}),s}async getFirstPacket(e){y(this.bitstream.lastMetadataPacket);const t=await this.demuxer.findNextPacketStart(this.bitstream.lastMetadataPacket);if(!t)return null;let i=0;this.bitstream.codecInfo.codec==="opus"&&(y(this.bitstream.codecInfo.opusInfo),i-=this.bitstream.codecInfo.opusInfo.preSkip);const a=await this.demuxer.readPacket(t.startPage,t.startSegmentIndex);return this.createEncodedPacketFromOggPacket(a,{timestampInSamples:i,vorbisLastBlocksize:null},e)}async getNextPacket(e,t){const i=this.encodedPacketToMetadata.get(e);if(!i)throw new Error("Packet was not created from this track.");const a=await this.demuxer.findNextPacketStart(i.packet);if(!a)return null;const n=i.timestampInSamples+i.durationInSamples,s=await this.demuxer.readPacket(a.startPage,a.startSegmentIndex);return this.createEncodedPacketFromOggPacket(s,{timestampInSamples:n,vorbisLastBlocksize:i.vorbisBlockSize},t)}async getPacket(e,t){if(this.demuxer.reader.fileSize===null)return this.getPacketSequential(e,t);const i=Ci(e*this.internalSampleRate);if(i===0)return this.getFirstPacket(t);if(i<0)return null;y(this.bitstream.lastMetadataPacket);const a=await this.demuxer.findNextPacketStart(this.bitstream.lastMetadataPacket);if(!a)return null;let n=a.startPage,s=this.demuxer.reader.fileSize;const o=[n];e:for(;n.headerStartPos+n.totalSize<s;){const w=n.headerStartPos,T=Math.floor((w+s)/2);let S=T;for(;;){const C=Math.min(S+Wu,s-vr);let P=this.demuxer.reader.requestSlice(S,C-S);if(P instanceof Promise&&(P=await P),y(P),!Hu(P,C)){s=T+vr;continue e}let I=this.demuxer.reader.requestSliceRange(P.filePos,vr,Kr);I instanceof Promise&&(I=await I),y(I);const R=gi(I);y(R);let A=!1;if(R.serialNumber===this.bitstream.serialNumber)A=!0;else{let F=this.demuxer.reader.requestSlice(R.headerStartPos,R.totalSize);F instanceof Promise&&(F=await F),y(F);const U=le(F,R.totalSize);A=Uu(U)===R.checksum}if(!A){S=R.headerStartPos+4;continue}if(A&&R.serialNumber!==this.bitstream.serialNumber){S=R.headerStartPos+R.totalSize;continue}if(R.granulePosition===-1){S=R.headerStartPos+R.totalSize;continue}this.granulePositionToTimestampInSamples(R.granulePosition)>i?s=R.headerStartPos:(n=R,o.push(R));continue e}}let c=a.startPage;for(const w of o){if(w.granulePosition===n.granulePosition)break;(!c||w.headerStartPos>c.headerStartPos)&&(c=w)}let l=c;const d=[l];for(;!(l.serialNumber===this.bitstream.serialNumber&&l.granulePosition===n.granulePosition);){const w=l.headerStartPos+l.totalSize;let T=this.demuxer.reader.requestSliceRange(w,vr,Kr);T instanceof Promise&&(T=await T),y(T);const S=gi(T);y(S),l=S,l.serialNumber===this.bitstream.serialNumber&&d.push(l)}y(l.granulePosition!==-1);let u=null,h,p,m=l,g=0;if(l.headerStartPos===a.startPage.headerStartPos)h=this.granulePositionToTimestampInSamples(0),p=!0,u=0;else{h=0,p=!1;for(let S=l.lacingValues.length-1;S>=0;S--)if(l.lacingValues[S]<255){u=S+1;break}if(u===null)throw new Error("Invalid page with granule position: no packets end on this page.");g=u-1;const w={data:kt,endPage:m,endSegmentIndex:g};if(await this.demuxer.findNextPacketStart(w)){const S=qs(d,l,u);y(S);const C=js(d,S.page,S.segmentIndex);C&&(l=C.page,u=C.segmentIndex)}else for(;;){const S=qs(d,l,u);if(!S)break;const C=js(d,S.page,S.segmentIndex);if(!C)break;if(l=C.page,u=C.segmentIndex,S.page.headerStartPos!==m.headerStartPos){m=S.page,g=S.segmentIndex;break}}}let b=null,k=null;for(;l!==null;){y(u!==null);const w=await this.demuxer.readPacket(l,u);if(!w)break;if(!(l.headerStartPos===a.startPage.headerStartPos&&u<a.startSegmentIndex)){let C=this.createEncodedPacketFromOggPacket(w,{timestampInSamples:h,vorbisLastBlocksize:k?.vorbisBlockSize??null},t);y(C);let P=this.encodedPacketToMetadata.get(C);if(y(P),!p&&w.endPage.headerStartPos===m.headerStartPos&&w.endSegmentIndex===g?(h=this.granulePositionToTimestampInSamples(l.granulePosition),p=!0,C=this.createEncodedPacketFromOggPacket(w,{timestampInSamples:h-P.durationInSamples,vorbisLastBlocksize:k?.vorbisBlockSize??null},t),y(C),P=this.encodedPacketToMetadata.get(C),y(P)):h+=P.durationInSamples,b=C,k=P,p&&(Math.max(h,0)>i||Math.max(P.timestampInSamples,0)===i))break}const S=await this.demuxer.findNextPacketStart(w);if(!S)break;l=S.startPage,u=S.startSegmentIndex}return b}async getPacketSequential(e,t){const i=await this.sequentialScanMutex.acquire();try{const a=Ci(e*this.internalSampleRate);e=a/this.internalSampleRate;const n=Fe(this.sequentialScanCache,a,c=>c.timestampInSamples);let s;if(n!==-1){const c=this.sequentialScanCache[n];s=this.createEncodedPacketFromOggPacket(c.packet,{timestampInSamples:c.timestampInSamples,vorbisLastBlocksize:c.vorbisLastBlockSize},t)}else s=await this.getFirstPacket(t);let o=0;for(;s&&s.timestamp<e;){const c=await this.getNextPacket(s,t);if(!c||c.timestamp>e)break;if(s=c,o++,o===100){o=0;const l=this.encodedPacketToMetadata.get(s);y(l),this.sequentialScanCache.length>0&&y(qe(this.sequentialScanCache).timestampInSamples<=l.timestampInSamples),this.sequentialScanCache.push(l)}}return s}finally{i()}}getKeyPacket(e,t){return this.getPacket(e,t)}getNextKeyPacket(e,t){return this.getNextPacket(e,t)}}const js=(r,e,t)=>{let i=e,a=t;e:for(;;){for(a--,a;a>=0;a--)if(i.lacingValues[a]<255){a++;break e}if(y(a===-1),!(i.headerType&1)){a=0;break}const s=_o(r,o=>o.headerStartPos<i.headerStartPos);if(!s)return null;i=s,a=i.lacingValues.length}if(y(a!==-1),a===i.lacingValues.length){const n=r[r.indexOf(i)+1];y(n),i=n,a=0}return{page:i,segmentIndex:a}},qs=(r,e,t)=>{if(t>0)return{page:e,segmentIndex:t-1};const i=_o(r,a=>a.headerStartPos<e.headerStartPos);return i?{page:i,segmentIndex:i.lacingValues.length-1}:null};var Wt;(function(r){r[r.PCM=1]="PCM",r[r.IEEE_FLOAT=3]="IEEE_FLOAT",r[r.ALAW=6]="ALAW",r[r.MULAW=7]="MULAW",r[r.EXTENSIBLE=65534]="EXTENSIBLE"})(Wt||(Wt={}));class Ku extends fr{constructor(e){super(e),this.metadataPromise=null,this.dataStart=-1,this.dataSize=-1,this.audioInfo=null,this.tracks=[],this.lastKnownPacketIndex=0,this.metadataTags={},this.reader=e._reader}async readMetadata(){return this.metadataPromise??=(async()=>{let e=this.reader.requestSlice(0,12);e instanceof Promise&&(e=await e),y(e);const t=rt(e,4),i=t!=="RIFX",a=t==="RF64",n=nr(e,i);let s=a?this.reader.fileSize:Math.min(n+8,this.reader.fileSize??1/0);if(rt(e,4)!=="WAVE")throw new Error("Invalid WAVE file - wrong format");let c=0,l=null,d=e.filePos;for(;s===null||d<s;){let h=this.reader.requestSlice(d,8);if(h instanceof Promise&&(h=await h),!h)break;const p=rt(h,4),m=nr(h,i),g=h.filePos;if(a&&c===0&&p!=="ds64")throw new Error('Invalid RF64 file: First chunk must be "ds64".');if(p==="fmt ")await this.parseFmtChunk(g,m,i);else if(p==="data"){if(l??=m,this.dataStart=h.filePos,this.dataSize=Math.min(l,(s??1/0)-this.dataStart),this.reader.fileSize===null)break}else if(p==="ds64"){let b=this.reader.requestSlice(g,m);if(b instanceof Promise&&(b=await b),!b)break;const k=Ks(b,i);l=Ks(b,i),s=Math.min(k+8,this.reader.fileSize??1/0)}else p==="LIST"?await this.parseListChunk(g,m,i):(p==="ID3 "||p==="id3 ")&&await this.parseId3Chunk(g,m);d=g+m+(m&1),c++}if(!this.audioInfo)throw new Error('Invalid WAVE file - missing "fmt " chunk');if(this.dataStart===-1)throw new Error('Invalid WAVE file - missing "data" chunk');const u=this.audioInfo.blockSizeInBytes;this.dataSize=Math.floor(this.dataSize/u)*u,this.tracks.push(new Vt(this.input,new Qu(this)))})()}async parseFmtChunk(e,t,i){let a=this.reader.requestSlice(e,t);if(a instanceof Promise&&(a=await a),!a)return;let n=oi(a,i);const s=oi(a,i),o=nr(a,i);a.skip(4);const c=oi(a,i);let l;if(t===14?l=8:l=oi(a,i),t>=18&&n!==357){const d=oi(a,i),u=t-18;if(Math.min(u,d)>=22&&n===Wt.EXTENSIBLE){a.skip(6);const p=le(a,16);n=p[0]|p[1]<<8}}(n===Wt.MULAW||n===Wt.ALAW)&&(l=8),this.audioInfo={format:n,numberOfChannels:s,sampleRate:o,sampleSizeInBytes:Math.ceil(l/8),blockSizeInBytes:c}}async parseListChunk(e,t,i){let a=this.reader.requestSlice(e,t);if(a instanceof Promise&&(a=await a),!a)return;const n=rt(a,4);if(n!=="INFO"&&n!=="INF0")return;let s=a.filePos;for(;s<=e+t-8;){a.filePos=s;const o=rt(a,4),c=nr(a,i),l=le(a,c);let d=0;for(let h=0;h<l.length&&l[h]!==0;h++)d++;const u=String.fromCharCode(...l.subarray(0,d));switch(this.metadataTags.raw??={},this.metadataTags.raw[o]=u,o){case"INAM":case"TITL":this.metadataTags.title??=u;break;case"TIT3":this.metadataTags.description??=u;break;case"IART":this.metadataTags.artist??=u;break;case"IPRD":this.metadataTags.album??=u;break;case"IPRT":case"ITRK":case"TRCK":{const h=u.split("/"),p=Number.parseInt(h[0],10),m=h[1]&&Number.parseInt(h[1],10);Number.isInteger(p)&&p>0&&(this.metadataTags.trackNumber??=p),m&&Number.isInteger(m)&&m>0&&(this.metadataTags.tracksTotal??=m)}break;case"ICRD":case"IDIT":{const h=new Date(u);Number.isNaN(h.getTime())||(this.metadataTags.date??=h)}break;case"YEAR":{const h=Number.parseInt(u,10);Number.isInteger(h)&&h>0&&(this.metadataTags.date??=new Date(h,0,1))}break;case"IGNR":case"GENR":this.metadataTags.genre??=u;break;case"ICMT":case"CMNT":case"COMM":this.metadataTags.comment??=u;break}s+=8+c+(c&1)}}async parseId3Chunk(e,t){let i=this.reader.requestSlice(e,t);if(i instanceof Promise&&(i=await i),!i)return;const a=da(i);if(a){const n=i.slice(e+10,a.size);ac(n,a,this.metadataTags)}}getCodec(){if(y(this.audioInfo),this.audioInfo.format===Wt.MULAW)return"ulaw";if(this.audioInfo.format===Wt.ALAW)return"alaw";if(this.audioInfo.format===Wt.PCM){if(this.audioInfo.sampleSizeInBytes===1)return"pcm-u8";if(this.audioInfo.sampleSizeInBytes===2)return"pcm-s16";if(this.audioInfo.sampleSizeInBytes===3)return"pcm-s24";if(this.audioInfo.sampleSizeInBytes===4)return"pcm-s32"}return this.audioInfo.format===Wt.IEEE_FLOAT&&this.audioInfo.sampleSizeInBytes===4?"pcm-f32":null}async getMimeType(){return"audio/wav"}async computeDuration(){await this.readMetadata();const e=this.tracks[0];return y(e),e.computeDuration()}async getTracks(){return await this.readMetadata(),this.tracks}async getMetadataTags(){return await this.readMetadata(),this.metadataTags}}const zr=2048;class Qu{constructor(e){this.demuxer=e}getId(){return 1}getNumber(){return 1}getCodec(){return this.demuxer.getCodec()}getInternalCodecId(){return y(this.demuxer.audioInfo),this.demuxer.audioInfo.format}async getDecoderConfig(){const e=this.demuxer.getCodec();return e?(y(this.demuxer.audioInfo),{codec:e,numberOfChannels:this.demuxer.audioInfo.numberOfChannels,sampleRate:this.demuxer.audioInfo.sampleRate}):null}async computeDuration(){const e=await this.getPacket(1/0,{metadataOnly:!0});return(e?.timestamp??0)+(e?.duration??0)}getNumberOfChannels(){return y(this.demuxer.audioInfo),this.demuxer.audioInfo.numberOfChannels}getSampleRate(){return y(this.demuxer.audioInfo),this.demuxer.audioInfo.sampleRate}getTimeResolution(){return y(this.demuxer.audioInfo),this.demuxer.audioInfo.sampleRate}getName(){return null}getLanguageCode(){return bt}getDisposition(){return{...ur}}async getFirstTimestamp(){return 0}async getPacketAtIndex(e,t){y(this.demuxer.audioInfo);const i=e*zr*this.demuxer.audioInfo.blockSizeInBytes;if(i>=this.demuxer.dataSize)return null;const a=Math.min(zr*this.demuxer.audioInfo.blockSizeInBytes,this.demuxer.dataSize-i);if(this.demuxer.reader.fileSize===null){let c=this.demuxer.reader.requestSlice(this.demuxer.dataStart+i,a);if(c instanceof Promise&&(c=await c),!c)return null}let n;if(t.metadataOnly)n=kt;else{let c=this.demuxer.reader.requestSlice(this.demuxer.dataStart+i,a);c instanceof Promise&&(c=await c),y(c),n=le(c,a)}const s=e*zr/this.demuxer.audioInfo.sampleRate,o=a/this.demuxer.audioInfo.blockSizeInBytes/this.demuxer.audioInfo.sampleRate;return this.demuxer.lastKnownPacketIndex=Math.max(e,s),new Le(n,"key",s,o,e,a)}getFirstPacket(e){return this.getPacketAtIndex(0,e)}async getPacket(e,t){y(this.demuxer.audioInfo);const i=Math.floor(Math.min(e*this.demuxer.audioInfo.sampleRate/zr,(this.demuxer.dataSize-1)/(zr*this.demuxer.audioInfo.blockSizeInBytes))),a=await this.getPacketAtIndex(i,t);if(a)return a;if(i===0)return null;y(this.demuxer.reader.fileSize===null);let n=await this.getPacketAtIndex(this.demuxer.lastKnownPacketIndex,t);for(;n;){const s=await this.getNextPacket(n,t);if(!s)break;n=s}return n}getNextPacket(e,t){y(this.demuxer.audioInfo);const i=Math.round(e.timestamp*this.demuxer.audioInfo.sampleRate/zr);return this.getPacketAtIndex(i+1,t)}getKeyPacket(e,t){return this.getPacket(e,t)}getNextKeyPacket(e,t){return this.getNextPacket(e,t)}}const ua=7,Sr=9,Cr=r=>{const e=r.filePos,t=le(r,9),i=new We(t);if(i.readBits(12)!==4095||(i.skipBits(1),i.readBits(2)!==0))return null;const s=i.readBits(1),o=i.readBits(2)+1,c=i.readBits(4);if(c===15)return null;i.skipBits(1);const l=i.readBits(3);if(l===0)throw new Error("ADTS frames with channel configuration 0 are not supported.");i.skipBits(1),i.skipBits(1),i.skipBits(1),i.skipBits(1);const d=i.readBits(13);i.skipBits(11);const u=i.readBits(2)+1;if(u!==1)throw new Error("ADTS frames with more than one AAC frame are not supported.");let h=null;return s===1?r.filePos-=2:h=i.readBits(16),{objectType:o,samplingFrequencyIndex:c,channelConfiguration:l,frameLength:d,numberOfAacFrames:u,crcCheck:h,startPos:e}};const ha=1024;class Gu extends fr{constructor(e){super(e),this.metadataPromise=null,this.firstFrameHeader=null,this.loadedSamples=[],this.tracks=[],this.readingMutex=new ii,this.lastSampleLoaded=!1,this.lastLoadedPos=0,this.nextTimestampInSamples=0,this.reader=e._reader}async readMetadata(){return this.metadataPromise??=(async()=>{for(;!this.firstFrameHeader&&!this.lastSampleLoaded;)await this.advanceReader();y(this.firstFrameHeader),this.tracks=[new Vt(this.input,new Xu(this))]})()}async advanceReader(){let e=this.reader.requestSliceRange(this.lastLoadedPos,ua,Sr);if(e instanceof Promise&&(e=await e),!e){this.lastSampleLoaded=!0;return}const t=Cr(e);if(!t){this.lastSampleLoaded=!0;return}if(this.reader.fileSize!==null&&t.startPos+t.frameLength>this.reader.fileSize){this.lastSampleLoaded=!0;return}this.firstFrameHeader||(this.firstFrameHeader=t);const i=Pr[t.samplingFrequencyIndex];y(i!==void 0);const a=ha/i,n={timestamp:this.nextTimestampInSamples/i,duration:a,dataStart:t.startPos,dataSize:t.frameLength};this.loadedSamples.push(n),this.nextTimestampInSamples+=ha,this.lastLoadedPos=t.startPos+t.frameLength}async getMimeType(){return"audio/aac"}async getTracks(){return await this.readMetadata(),this.tracks}async computeDuration(){await this.readMetadata();const e=this.tracks[0];return y(e),e.computeDuration()}async getMetadataTags(){return{}}}class Xu{constructor(e){this.demuxer=e}getId(){return 1}getNumber(){return 1}async getFirstTimestamp(){return 0}getTimeResolution(){return this.getSampleRate()/ha}async computeDuration(){const e=await this.getPacket(1/0,{metadataOnly:!0});return(e?.timestamp??0)+(e?.duration??0)}getName(){return null}getLanguageCode(){return bt}getCodec(){return"aac"}getInternalCodecId(){return y(this.demuxer.firstFrameHeader),this.demuxer.firstFrameHeader.objectType}getNumberOfChannels(){y(this.demuxer.firstFrameHeader);const e=ji[this.demuxer.firstFrameHeader.channelConfiguration];return y(e!==void 0),e}getSampleRate(){y(this.demuxer.firstFrameHeader);const e=Pr[this.demuxer.firstFrameHeader.samplingFrequencyIndex];return y(e!==void 0),e}getDisposition(){return{...ur}}async getDecoderConfig(){return y(this.demuxer.firstFrameHeader),{codec:`mp4a.40.${this.demuxer.firstFrameHeader.objectType}`,numberOfChannels:this.getNumberOfChannels(),sampleRate:this.getSampleRate()}}async getPacketAtIndex(e,t){if(e===-1)return null;const i=this.demuxer.loadedSamples[e];if(!i)return null;let a;if(t.metadataOnly)a=kt;else{let n=this.demuxer.reader.requestSlice(i.dataStart,i.dataSize);if(n instanceof Promise&&(n=await n),!n)return null;a=le(n,i.dataSize)}return new Le(a,"key",i.timestamp,i.duration,e,i.dataSize)}getFirstPacket(e){return this.getPacketAtIndex(0,e)}async getNextPacket(e,t){const i=await this.demuxer.readingMutex.acquire();try{const a=Hi(this.demuxer.loadedSamples,e.timestamp,s=>s.timestamp);if(a===-1)throw new Error("Packet was not created from this track.");const n=a+1;for(;n>=this.demuxer.loadedSamples.length&&!this.demuxer.lastSampleLoaded;)await this.demuxer.advanceReader();return this.getPacketAtIndex(n,t)}finally{i()}}async getPacket(e,t){const i=await this.demuxer.readingMutex.acquire();try{for(;;){const a=Fe(this.demuxer.loadedSamples,e,n=>n.timestamp);if(a===-1&&this.demuxer.loadedSamples.length>0)return null;if(this.demuxer.lastSampleLoaded)return this.getPacketAtIndex(a,t);if(a>=0&&a+1<this.demuxer.loadedSamples.length)return this.getPacketAtIndex(a,t);await this.demuxer.advanceReader()}}finally{i()}}getKeyPacket(e,t){return this.getPacket(e,t)}getNextKeyPacket(e,t){return this.getNextPacket(e,t)}}const Yu=r=>r===0?null:r===1?192:r>=2&&r<=5?144*2**r:r===6?"uncommon-u8":r===7?"uncommon-u16":r>=8&&r<=15?2**r:null,$u=(r,e)=>{switch(r){case 0:return e;case 1:return 88200;case 2:return 176400;case 3:return 192e3;case 4:return 8e3;case 5:return 16e3;case 6:return 22050;case 7:return 24e3;case 8:return 32e3;case 9:return 44100;case 10:return 48e3;case 11:return 96e3;case 12:return"uncommon-u8";case 13:return"uncommon-u16";case 14:return"uncommon-u16-10";default:return null}},Zu=r=>{let e=0;const t=new We(le(r,1));for(;t.readBits(1)===1;)e++;if(e===0)return t.readBits(7);const i=[],a=e-1,n=new We(le(r,a)),s=8-e-1;for(let c=0;c<s;c++)i.unshift(t.readBits(1));for(let c=0;c<a;c++)for(let l=0;l<8;l++){const d=n.readBits(1);l<2||i.unshift(d)}return i.reduce((c,l,d)=>c|l<<d,0)},Ju=(r,e)=>{if(e==="uncommon-u16")return et(r)+1;if(e==="uncommon-u8")return re(r)+1;if(typeof e=="number")return e;dr(e),y(!1)},eh=(r,e)=>e==="uncommon-u16"?et(r):e==="uncommon-u16-10"?et(r)*10:e==="uncommon-u8"?re(r):typeof e=="number"?e:null,th=r=>{let t=0;for(const i of r){t^=i;for(let a=0;a<8;a++)(t&128)!==0?t=t<<1^7:t<<=1,t&=255}return t};class rh extends fr{constructor(e){super(e),this.loadedSamples=[],this.metadataPromise=null,this.track=null,this.metadataTags={},this.audioInfo=null,this.lastLoadedPos=null,this.blockingBit=null,this.readingMutex=new ii,this.lastSampleLoaded=!1,this.reader=e._reader}async computeDuration(){return await this.readMetadata(),y(this.track),this.track.computeDuration()}async getMetadataTags(){return await this.readMetadata(),this.metadataTags}async getTracks(){return await this.readMetadata(),y(this.track),[this.track]}async getMimeType(){return"audio/flac"}async readMetadata(){let e=4;return this.metadataPromise??=(async()=>{for(;this.reader.fileSize===null||e<this.reader.fileSize;){let t=this.reader.requestSlice(e,4);if(t instanceof Promise&&(t=await t),e+=4,t===null)throw new Error(`Metadata block at position ${e} is too small! Corrupted file.`);y(t);const i=re(t),a=Nr(t),n=(i&128)!==0;switch(i&127){case qr.STREAMINFO:{let o=this.reader.requestSlice(e,a);if(o instanceof Promise&&(o=await o),y(o),o===null)throw new Error(`StreamInfo block at position ${e} is too small! Corrupted file.`);const c=le(o,34),l=new We(c),d=l.readBits(16),u=l.readBits(16),h=l.readBits(24),p=l.readBits(24),m=l.readBits(20),g=l.readBits(3)+1;l.readBits(5);const b=l.readBits(36);l.skipBits(128);const k=new Uint8Array(42);k.set(new Uint8Array([102,76,97,67]),0),k.set(new Uint8Array([128,0,0,34]),4),k.set(c,8),this.audioInfo={numberOfChannels:g,sampleRate:m,totalSamples:b,minimumBlockSize:d,maximumBlockSize:u,minimumFrameSize:h,maximumFrameSize:p,description:k},this.track=new Vt(this.input,new ih(this));break}case qr.VORBIS_COMMENT:{let o=this.reader.requestSlice(e,a);o instanceof Promise&&(o=await o),y(o),un(le(o,a),this.metadataTags);break}case qr.PICTURE:{let o=this.reader.requestSlice(e,a);o instanceof Promise&&(o=await o),y(o);const c=Y(o),l=Y(o),d=St.decode(le(o,l)),u=Y(o),h=St.decode(le(o,u));o.skip(16);const p=Y(o),m=le(o,p);this.metadataTags.images??=[],this.metadataTags.images.push({data:m,mimeType:d,kind:c===3?"coverFront":c===4?"coverBack":"unknown",description:h});break}}if(e+=a,n){this.lastLoadedPos=e;break}}})()}async readNextFlacFrame({startPos:e,isFirstPacket:t}){y(this.audioInfo);const i=6,n=this.audioInfo.maximumFrameSize+16,s=await this.reader.requestSliceRange(e,this.audioInfo.minimumFrameSize,n);if(!s)return null;const o=this.readFlacFrameHeader({slice:s,isFirstPacket:t});if(!o)return null;for(s.filePos=e+this.audioInfo.minimumFrameSize;;){if(s.filePos>s.end-i)return{num:o.num,blockSize:o.blockSize,sampleRate:o.sampleRate,size:s.end-e,isLastFrame:!0};if(re(s)===255){const l=s.filePos,d=re(s),u=this.blockingBit===1?249:248;if(d!==u){s.filePos=l;continue}s.skip(-2);const h=s.filePos-e,p=this.readFlacFrameHeader({slice:s,isFirstPacket:!1});if(!p){s.filePos=l;continue}if(this.blockingBit===0){if(p.num-o.num!==1){s.filePos=l;continue}}else if(p.num-o.num!==o.blockSize){s.filePos=l;continue}return{num:o.num,blockSize:o.blockSize,sampleRate:o.sampleRate,size:h,isLastFrame:!1}}}}readFlacFrameHeader({slice:e,isFirstPacket:t}){const i=e.filePos,a=le(e,4),n=new We(a);if(n.readBits(15)!==32764)return null;if(this.blockingBit===null){y(t);const b=n.readBits(1);this.blockingBit=b}else if(this.blockingBit===1){if(y(!t),n.readBits(1)!==1)return null}else if(this.blockingBit===0){if(y(!t),n.readBits(1)!==0)return null}else throw new Error("Invalid blocking bit");const o=Yu(n.readBits(4));if(!o)return null;y(this.audioInfo);const c=$u(n.readBits(4),this.audioInfo.sampleRate);if(!c||(n.readBits(4),n.readBits(3),n.readBits(1)!==0))return null;const d=Zu(e),u=Ju(e,o),h=eh(e,c);if(h===null||h!==this.audioInfo.sampleRate)return null;const p=e.filePos-i,m=re(e);e.skip(-p),e.skip(-1);const g=th(le(e,p));return m!==g?null:{num:d,blockSize:u,sampleRate:h}}async advanceReader(){await this.readMetadata(),y(this.lastLoadedPos!==null),y(this.audioInfo);const e=this.lastLoadedPos,t=await this.readNextFlacFrame({startPos:e,isFirstPacket:this.loadedSamples.length===0});if(!t){this.lastSampleLoaded=!0;return}const i=this.loadedSamples[this.loadedSamples.length-1],n={blockOffset:i?i.blockOffset+i.blockSize:0,blockSize:t.blockSize,byteOffset:e,byteSize:t.size};if(this.lastLoadedPos=this.lastLoadedPos+t.size,this.loadedSamples.push(n),t.isLastFrame){this.lastSampleLoaded=!0;return}}}class ih{constructor(e){this.demuxer=e}getId(){return 1}getNumber(){return 1}getCodec(){return"flac"}getInternalCodecId(){return null}getNumberOfChannels(){return y(this.demuxer.audioInfo),this.demuxer.audioInfo.numberOfChannels}async computeDuration(){const e=await this.getPacket(1/0,{metadataOnly:!0});return(e?.timestamp??0)+(e?.duration??0)}getSampleRate(){return y(this.demuxer.audioInfo),this.demuxer.audioInfo.sampleRate}getName(){return null}getLanguageCode(){return bt}getTimeResolution(){return y(this.demuxer.audioInfo),this.demuxer.audioInfo.sampleRate}getDisposition(){return{...ur}}async getFirstTimestamp(){return 0}async getDecoderConfig(){return y(this.demuxer.audioInfo),{codec:"flac",numberOfChannels:this.demuxer.audioInfo.numberOfChannels,sampleRate:this.demuxer.audioInfo.sampleRate,description:this.demuxer.audioInfo.description}}async getPacket(e,t){if(y(this.demuxer.audioInfo),e<0)throw new Error("Timestamp cannot be negative");const i=await this.demuxer.readingMutex.acquire();try{for(;;){const a=Fe(this.demuxer.loadedSamples,e,c=>c.blockOffset/this.demuxer.audioInfo.sampleRate);if(a===-1){await this.demuxer.advanceReader();continue}const n=this.demuxer.loadedSamples[a],s=n.blockOffset/this.demuxer.audioInfo.sampleRate,o=n.blockSize/this.demuxer.audioInfo.sampleRate;if(s+o<=e){if(this.demuxer.lastSampleLoaded)return this.getPacketAtIndex(this.demuxer.loadedSamples.length-1,t);await this.demuxer.advanceReader();continue}return this.getPacketAtIndex(a,t)}}finally{i()}}async getNextPacket(e,t){const i=await this.demuxer.readingMutex.acquire();try{const a=e.sequenceNumber+1;if(this.demuxer.lastSampleLoaded&&a>=this.demuxer.loadedSamples.length)return null;for(;a>=this.demuxer.loadedSamples.length&&!this.demuxer.lastSampleLoaded;)await this.demuxer.advanceReader();return this.getPacketAtIndex(a,t)}finally{i()}}getKeyPacket(e,t){return this.getPacket(e,t)}getNextKeyPacket(e,t){return this.getNextPacket(e,t)}async getPacketAtIndex(e,t){const i=this.demuxer.loadedSamples[e];if(!i)return null;let a;if(t.metadataOnly)a=kt;else{let o=this.demuxer.reader.requestSlice(i.byteOffset,i.byteSize);if(o instanceof Promise&&(o=await o),!o)return null;a=le(o,i.byteSize)}y(this.demuxer.audioInfo);const n=i.blockOffset/this.demuxer.audioInfo.sampleRate,s=i.blockSize/this.demuxer.audioInfo.sampleRate;return new Le(a,"key",n,s,e,i.byteSize)}async getFirstPacket(e){for(;this.demuxer.loadedSamples.length===0&&!this.demuxer.lastSampleLoaded;)await this.demuxer.advanceReader();return this.getPacketAtIndex(0,e)}}const yr=9e4,mt=188,ah=r=>{let e="video/MP2T";const t=[...new Set(r.filter(Boolean))];return t.length>0&&(e+=`; codecs="${t.join(", ")}"`),e};const ui="No PES packet found where one was expected.";class nh extends fr{constructor(e){super(e),this.metadataPromise=null,this.elementaryStreams=[],this.tracks=[],this.packetOffset=0,this.packetStride=-1,this.sectionEndPositions=[],this.seekChunkSize=5*1024*1024,this.minReferencePointByteDistance=-1,this.reader=e._reader}async readMetadata(){return this.metadataPromise??=(async()=>{const e=mt+16+1;let t=this.reader.requestSlice(0,e);t instanceof Promise&&(t=await t),y(t);const i=le(t,e);if(i[0]===71&&i[mt]===71)this.packetOffset=0,this.packetStride=mt;else if(i[0]===71&&i[mt+16]===71)this.packetOffset=0,this.packetStride=mt+16;else if(i[4]===71&&i[4+mt]===71)this.packetOffset=4,this.packetStride=mt;else throw new Error("Unreachable.");const a=256;this.minReferencePointByteDistance=a*this.packetStride;let n=this.packetOffset,s=null,o=!1,c=!1;for(;;){const l=await this.readPacketHeader(n);if(!l)break;if(l.payloadUnitStartIndicator===0){n+=this.packetStride;continue}const d=await this.readSection(n,!0,!c);if(!d)break;const u=3,h=32;if(d.pid===0&&!o){const m=new We(d.payload),g=m.readAlignedByte();m.skipBits(8*g),m.skipBits(14);const b=m.readBits(10);for(m.skipBits(40);8*(b+u)-m.pos>h;){const k=m.readBits(16);if(m.skipBits(3),k!==0){if(s!==null)throw new Error("Only files with a single program are supported.");s=m.readBits(13)}}if(s===null)throw new Error("Program Association Table must link to a Program Map Table.");o=!0}else if(d.pid===s&&!c){const m=new We(d.payload),g=m.readAlignedByte();m.skipBits(8*g),m.skipBits(12);const b=m.readBits(12);m.skipBits(43),m.readBits(13),m.skipBits(6);const k=m.readBits(10);for(m.skipBits(8*k);8*(b+u)-m.pos>h;){const w=m.readBits(8);m.skipBits(3);const T=m.readBits(13);m.skipBits(6);const S=m.readBits(10);m.skipBits(8*S);let C=null;switch(w){case 3:case 4:case 15:C={type:"audio",codec:w===15?"aac":"mp3",aacCodecInfo:null,numberOfChannels:-1,sampleRate:-1};break;case 27:case 36:C={type:"video",codec:w===27?"avc":"hevc",avcCodecInfo:null,hevcCodecInfo:null,colorSpace:{primaries:null,transfer:null,matrix:null,fullRange:null},width:-1,height:-1,reorderSize:-1};break}C&&this.elementaryStreams.push({demuxer:this,pid:T,streamType:w,initialized:!1,firstSection:null,info:C,referencePesPackets:[]})}c=!0}else{const m=this.elementaryStreams.find(g=>g.pid===d.pid);if(m&&!m.initialized){const g=bi(d);if(!g)throw new Error(`Couldn't read first PES packet for Elementary Stream with PID ${m.pid}`);if(m.firstSection=d,m.info.type==="video")if(m.info.codec==="avc"){if(m.info.avcCodecInfo=Yn(g.data),!m.info.avcCodecInfo)throw new Error("Invalid AVC video stream; could not extract AVCDecoderConfigurationRecord from first packet.");const b=m.info.avcCodecInfo.sequenceParameterSets[0];y(b);const k=$n(b);m.info.width=k.displayWidth,m.info.height=k.displayHeight,m.info.colorSpace={primaries:ia[k.colourPrimaries],transfer:aa[k.transferCharacteristics],matrix:na[k.matrixCoefficients],fullRange:!!k.fullRangeFlag},m.info.reorderSize=k.maxDecFrameBuffering,m.initialized=!0}else if(m.info.codec==="hevc"){if(m.info.hevcCodecInfo=Zn(g.data),!m.info.hevcCodecInfo)throw new Error("Invalid HEVC video stream; could not extract HVCDecoderConfigurationRecord from first packet.");const k=m.info.hevcCodecInfo.arrays.find(T=>T.nalUnitType===nt.SPS_NUT).nalUnits[0];y(k);const w=Uo(k);m.info.width=w.displayWidth,m.info.height=w.displayHeight,m.info.colorSpace={primaries:ia[w.colourPrimaries],transfer:aa[w.transferCharacteristics],matrix:na[w.matrixCoefficients],fullRange:!!w.fullRangeFlag},m.info.reorderSize=w.maxDecFrameBuffering,m.initialized=!0}else throw new Error("Unhandled.");else if(m.info.codec==="aac"){const b=It.tempFromBytes(g.data),k=Cr(b);if(!k)throw new Error("Invalid AAC audio stream; could not read ADTS frame header from first packet.");m.info.aacCodecInfo={isMpeg2:!1,objectType:k.objectType},m.info.numberOfChannels=ji[k.channelConfiguration],m.info.sampleRate=Pr[k.samplingFrequencyIndex],m.initialized=!0}else if(m.info.codec==="mp3"){const b=Y(It.tempFromBytes(g.data)),k=as(b,g.data.byteLength);if(!k.header)throw new Error("Invalid MP3 audio stream; could not read frame header from first packet.");m.info.numberOfChannels=k.header.channel===3?1:2,m.info.sampleRate=k.header.sampleRate,m.initialized=!0}else throw new Error("Unhandled.")}}if(c&&this.elementaryStreams.every(m=>m.initialized))break;n+=this.packetStride}if(!o)throw new Error("No Program Association Table found in the file.");if(!c)throw new Error("No Program Map Table found in the file.");for(const l of this.elementaryStreams)l.info.type==="video"?this.tracks.push(new ai(this.input,new sh(l))):this.tracks.push(new Vt(this.input,new oh(l)))})()}async getTracks(){return await this.readMetadata(),this.tracks}async getMetadataTags(){return{}}async computeDuration(){const e=await this.getTracks(),t=await Promise.all(e.map(i=>i.computeDuration()));return Math.max(0,...t)}async getMimeType(){await this.readMetadata();const e=await this.getTracks(),t=await Promise.all(e.map(i=>i.getCodecParameterString()));return ah(t)}async readSection(e,t,i=!1){let a=e,n=e;const s=[];let o=0,c=null,l=!0,d=0;for(;;){const h=await this.readPacket(n);if(n+=this.packetStride,!h)break;if(c){if(h.pid!==c.pid){if(i)break;continue}if(h.payloadUnitStartIndicator===1)break}else{if(h.payloadUnitStartIndicator===0)break;c=h}const p=!!(h.adaptationFieldControl&2),m=!!(h.adaptationFieldControl&1);let g=0;if(p&&(g=1+h.body[0],h===c&&g>1&&(d=h.body[1]>>6&1)),m&&(g===0?(s.push(h.body),o+=h.body.byteLength):(s.push(h.body.subarray(g)),o+=h.body.byteLength-g)),a=n,!t&&o>=64){l=!1;break}if(Hi(this.sectionEndPositions,a,k=>k)!==-1){l=!1;break}}if(l){const h=Fe(this.sectionEndPositions,a,p=>p);this.sectionEndPositions.splice(h+1,0,a)}if(!c)return null;let u;if(s.length===1)u=s[0];else{const h=s.reduce((m,g)=>m+g.length,0);u=new Uint8Array(h);let p=0;for(const m of s)u.set(m,p),p+=m.length}return{startPos:e,endPos:t?a:null,pid:c.pid,payload:u,randomAccessIndicator:d}}async readPacketHeader(e){let t=this.reader.requestSlice(e,4);if(t instanceof Promise&&(t=await t),!t)return null;if(re(t)!==71)throw new Error("Invalid TS packet sync byte. Likely an internal bug, please report this file.");const a=et(t),n=a>>14&1,s=a&8191,c=re(t)>>4&3;return{payloadUnitStartIndicator:n,pid:s,adaptationFieldControl:c}}async readPacket(e){let t=this.reader.requestSlice(e,mt);if(t instanceof Promise&&(t=await t),!t)return null;const i=le(t,mt);if(i[0]!==71)throw new Error("Invalid TS packet sync byte. Likely an internal bug, please report this file.");const n=(i[1]<<8)+i[2],s=n>>14&1,o=n&8191,l=i[3]>>4&3;return{payloadUnitStartIndicator:s,pid:o,adaptationFieldControl:l,body:i.subarray(4)}}}const gr=r=>{const e=new We(r.payload);if(e.readBits(24)!==1)return null;const i=e.readBits(8);if(e.skipBits(16),i===188||i===190||i===191||i===240||i===241||i===255||i===242||i===248)return null;e.skipBits(8);const a=e.readBits(2);e.skipBits(14);let n=0;if(a===2||a===3)e.skipBits(4),n+=e.readBits(3)*(1<<30),e.skipBits(1),n+=e.readBits(15)*32768,e.skipBits(1),n+=e.readBits(15);else throw new Error("PES packets without PTS are not currently supported. If you think this file should be supported, please report it.");return{sectionStartPos:r.startPos,sectionEndPos:r.endPos,pts:n,randomAccessIndicator:r.randomAccessIndicator}},bi=r=>{y(r.endPos!==null);const e=gr(r);if(!e)return null;const t=new We(r.payload);t.skipBits(32);const i=t.readBits(16),a=6;t.skipBits(16);const n=t.readBits(8),s=t.pos+8*n;t.pos=s;const o=s/8;y(Number.isInteger(o));const c=r.payload.subarray(o,i>0?a+i:r.payload.byteLength);return{...e,data:c}};class Aa{constructor(e){this.elementaryStream=e,this.packetBuffers=new WeakMap,this.packetSectionStarts=new WeakMap}getId(){return this.elementaryStream.pid}getNumber(){const e=this.elementaryStream.demuxer,t=this.elementaryStream.info.type;let i=0;for(const a of e.tracks)if(a.type===t&&i++,y(a._backing instanceof Aa),a._backing.elementaryStream===this.elementaryStream)break;return i}getCodec(){throw new Error("Not implemented on base class.")}getInternalCodecId(){return this.elementaryStream.streamType}getName(){return null}getLanguageCode(){return bt}getDisposition(){return ur}getTimeResolution(){return yr}async computeDuration(){const e=await this.getPacket(1/0,{metadataOnly:!0});return(e?.timestamp??0)+(e?.duration??0)}async getFirstTimestamp(){return(await this.getFirstPacket({metadataOnly:!0}))?.timestamp??0}createEncodedPacket(e,t,i){let a;return this.allPacketsAreKeyPackets()?a="key":a=e.randomAccessIndicator===1?"key":"delta",new Le(i.metadataOnly?kt:e.data,a,e.pts/yr,Math.max(t/yr,0),e.sequenceNumber,e.data.byteLength)}async getFirstPacket(e){const t=this.elementaryStream.firstSection;y(t);const i=bi(t);y(i);const a=new yi(this.elementaryStream,i),n=new Ga(this,a),s=await n.readNext();if(!s)return null;const o=this.createEncodedPacket(s.packet,s.duration,e);return this.packetBuffers.set(o,n),this.packetSectionStarts.set(o,s.packet.sectionStartPos),o}async getNextPacket(e,t){let i=this.packetBuffers.get(e);if(i){const d=await i.readNext();if(!d)return null;this.packetBuffers.delete(e);const u=this.createEncodedPacket(d.packet,d.duration,t);return this.packetBuffers.set(u,i),this.packetSectionStarts.set(u,d.packet.sectionStartPos),u}const a=this.packetSectionStarts.get(e);if(a===void 0)throw new Error("Packet was not created from this track.");const s=await this.elementaryStream.demuxer.readSection(a,!0);y(s);const o=bi(s);y(o);const c=new yi(this.elementaryStream,o);i=new Ga(this,c);const l=e.sequenceNumber;for(;;){const d=await i.readNext();if(!d)return null;if(d.packet.sequenceNumber>l){const u=this.createEncodedPacket(d.packet,d.duration,t);return this.packetBuffers.set(u,i),this.packetSectionStarts.set(u,d.packet.sectionStartPos),u}}}async getNextKeyPacket(e,t){let i=e;for(;;){if(i=await this.getNextPacket(i,t),!i)return null;if(i.type==="key")return i}}getPacket(e,t){return this.doPacketLookup(e,!1,t)}getKeyPacket(e,t){return this.doPacketLookup(e,!0,t)}async doPacketLookup(e,t,i){const a=Ci(e*yr),n=this.elementaryStream.demuxer,{reader:s,seekChunkSize:o}=n,c=this.elementaryStream.pid,l=async(T,S)=>{let C=T;for(;C<S;){const P=await n.readPacketHeader(C);if(!P)return null;if(P.pid===c&&P.payloadUnitStartIndicator===1){const B=await n.readSection(C,!1);return B?gr(B):null}C+=n.packetStride}return null},d=this.elementaryStream.firstSection;y(d);const u=gr(d);if(y(u),a<u.pts)return null;let h;const p=this.elementaryStream.referencePesPackets,m=Fe(p,a,T=>T.pts),g=m!==-1?p[m]:null;if(g&&a-g.pts<yr/2)h=g.sectionStartPos;else{let T=0;if(s.fileSize!==null){const S=Math.ceil(s.fileSize/o);if(S>1){let C=0,P=S-1;for(T=C;C<=P;){const B=Math.floor((C+P)/2),I=za(B*o,n.packetStride)+u.sectionStartPos,R=I+o,A=await l(I,R);if(!A){P=B-1;continue}A.pts<=a?(T=B,C=B+1):P=B-1}}}h=za(T*o,n.packetStride)+u.sectionStartPos}let b=await l(h,s.fileSize??1/0);b||(b=u);const k=this.getReorderSize(),w=async(T,S)=>{const C=await n.readSection(T,!0);y(C);const P=bi(C);y(P);const B=new yi(this.elementaryStream,P),I=new Ga(this,B);for(;!((qe(I.presentationOrderPackets)?.pts??-1/0)>=a||!await I.readNextPacket()););const R=qn(I.presentationOrderPackets,S);if(R===-1)return null;const A=I.presentationOrderPackets[R],x=R===0?0:A.pts-I.presentationOrderPackets[R-1].pts;for(;I.decodeOrderPackets[0]!==A;)I.decodeOrderPackets.shift();I.lastDuration=x;const F=await I.readNext();y(F);const U=this.createEncodedPacket(F.packet,F.duration,i);return this.packetBuffers.set(U,I),this.packetSectionStarts.set(U,F.packet.sectionStartPos),U};if(!t||this.allPacketsAreKeyPackets()){e:for(;;){let T=b.sectionStartPos+n.packetStride;for(;;){const S=await n.readPacketHeader(T);if(!S)break e;if(S.pid===c&&S.payloadUnitStartIndicator===1){const C=await n.readSection(T,!1);if(C){const P=gr(C);if(!P)throw new Error(ui);if(P.pts>a)break e;b=P,kn(this.elementaryStream,P);break}}T+=n.packetStride}}e:for(let T=0;T<k;T++){let S=b.sectionStartPos-n.packetStride;for(;S>=n.packetOffset;){const C=await n.readPacketHeader(S);if(!C)break e;if(C.pid===c&&C.payloadUnitStartIndicator===1){const P=await n.readSection(S,!1);if(P){const B=gr(P);if(!B)throw new Error(ui);b=B;break}}S-=n.packetStride}}return w(b.sectionStartPos,T=>T.pts<=a)}else{let T=h,S=null;for(;;){let C=null;const P=T<=u.sectionStartPos;let B;P?(B=u,C=u):B=await l(T,s.fileSize??1/0);let I=!1,R=0;e:for(;B&&!(S!==null&&B.sectionStartPos>=S||(B.randomAccessIndicator===1&&B.pts<=a&&(C=B),B.pts>a&&(I=!0),I&&(R++,R>=k)));){let x=B.sectionStartPos+n.packetStride;for(;;){const F=await n.readPacketHeader(x);if(!F)break e;if(F.pid===c&&F.payloadUnitStartIndicator===1){const U=await n.readSection(x,!1);if(U){if(B=gr(U),!B)throw new Error(ui);kn(this.elementaryStream,B);break}}x+=n.packetStride}}if(C){let A=C;if(R===0)e:for(let F=0;F<k-1;F++){let U=A.sectionStartPos-n.packetStride;for(;U>=n.packetOffset;){const V=await n.readPacketHeader(U);if(!V)break e;if(V.pid===c&&V.payloadUnitStartIndicator===1){const H=await n.readSection(U,!1);if(H){const D=gr(H);if(!D)throw new Error(ui);A=D;break}}U-=n.packetStride}}const x=await w(A.sectionStartPos,F=>F.pts<=a&&F.randomAccessIndicator===1);return y(x),x}y(!P),S=T,T=Math.max(za(T-u.sectionStartPos-o,n.packetStride)+u.sectionStartPos,u.sectionStartPos)}}}}class sh extends Aa{constructor(e){super(e),this.elementaryStream=e,this.decoderConfig={codec:Qn({width:this.elementaryStream.info.width,height:this.elementaryStream.info.height,codec:this.elementaryStream.info.codec,codecDescription:null,colorSpace:this.elementaryStream.info.colorSpace,avcType:1,avcCodecInfo:this.elementaryStream.info.avcCodecInfo,hevcCodecInfo:this.elementaryStream.info.hevcCodecInfo,vp9CodecInfo:null,av1CodecInfo:null}),codedWidth:this.elementaryStream.info.width,codedHeight:this.elementaryStream.info.height,colorSpace:this.elementaryStream.info.colorSpace}}getCodec(){return this.elementaryStream.info.codec}getCodedWidth(){return this.elementaryStream.info.width}getCodedHeight(){return this.elementaryStream.info.height}getRotation(){return 0}async getColorSpace(){return this.elementaryStream.info.colorSpace}async canBeTransparent(){return!1}async getDecoderConfig(){return this.decoderConfig}allPacketsAreKeyPackets(){return!1}getReorderSize(){return this.elementaryStream.info.reorderSize}}class oh extends Aa{constructor(e){super(e),this.elementaryStream=e}getCodec(){return this.elementaryStream.info.codec}getNumberOfChannels(){return this.elementaryStream.info.numberOfChannels}getSampleRate(){return this.elementaryStream.info.sampleRate}async getDecoderConfig(){return{codec:Gn({codec:this.elementaryStream.info.codec,codecDescription:null,aacCodecInfo:this.elementaryStream.info.aacCodecInfo}),numberOfChannels:this.elementaryStream.info.numberOfChannels,sampleRate:this.elementaryStream.info.sampleRate}}allPacketsAreKeyPackets(){return!0}getReorderSize(){return 1}}const kn=(r,e)=>{const t=r.referencePesPackets,i=Fe(t,e.sectionStartPos,a=>a.sectionStartPos);if(i>=0){const a=t[i];if(e.pts<=a.pts)return!1;const n=r.demuxer.minReferencePointByteDistance;if(e.sectionStartPos-a.sectionStartPos<n)return!1;if(i<t.length-1){const s=t[i+1];if(s.pts<e.pts||s.sectionStartPos-e.sectionStartPos<n)return!1}}return t.splice(i+1,0,e),!0},ch=async r=>{y(!r.suppliedPacket);const e=r.elementaryStream;if(e.info.type==="video"){const t=e.info.codec,i=1024;if(t!=="avc"&&t!=="hevc")throw new Error("Unhandled.");let a=null;for(;;){let n=r.ensureBuffered(i);if(n instanceof Promise&&(n=await n),n===0)break;const s=r.currentPos,o=r.readBytes(n),c=o.byteLength;let l=0;for(;l<c;){const d=o.indexOf(0,l);if(d===-1||d>=c)break;l=d;const u=s+l;if(l+4>=c){r.seekTo(u);break}const h=o[l+1],p=o[l+2],m=o[l+3];let g=0,b=null;if(h===0&&p===0&&m===1?(g=4,b=o[l+4]):h===0&&p===1&&(g=3,b=m),g===0){l++;continue}const k=u;if(a===null){a=k,l+=g;continue}if(b!==null){const w=t==="avc"?Ia(b):Ii(b);if(t==="avc"?w===Mt.AUD:w===nt.AUD_NUT){const S=k-a;return r.seekTo(a),r.supplyPacket(S,0)}}l+=g}if(n<i)break}if(a!==null){const n=r.endPos-a;return r.seekTo(a),r.supplyPacket(n,0)}}else{const t=e.info.codec,i=128;for(;;){let a=r.ensureBuffered(i);a instanceof Promise&&(a=await a);const n=r.currentPos;for(;r.currentPos-n<a;){const s=r.readU8();if(t==="aac"){if(s!==255)continue;r.skip(-1);const o=r.currentPos;let c=r.ensureBuffered(Sr);if(c instanceof Promise&&(c=await c),c<Sr)return;const l=r.readBytes(Sr),d=Cr(It.tempFromBytes(l));if(d){r.seekTo(o);let u=r.ensureBuffered(d.frameLength);return u instanceof Promise&&(u=await u),r.supplyPacket(u,Math.round(ha*yr/e.info.sampleRate))}else r.seekTo(o+1)}else if(t==="mp3"){if(s!==255)continue;r.skip(-1);const o=r.currentPos;let c=r.ensureBuffered(pi);if(c instanceof Promise&&(c=await c),c<pi)return;const l=r.readBytes(pi),d=Ke(l).getUint32(0),u=as(d,null);if(u.header){r.seekTo(o);let h=r.ensureBuffered(u.header.totalSize);h instanceof Promise&&(h=await h);const p=u.header.audioSamplesInFrame*yr/e.info.sampleRate;return r.supplyPacket(h,Math.round(p))}else r.seekTo(o+1)}else throw new Error("Unhandled.")}if(a<i)break}}};class yi{constructor(e,t){this.currentPos=0,this.pesPackets=[],this.currentPesPacketIndex=0,this.currentPesPacketPos=0,this.endPos=0,this.nextPts=0,this.suppliedPacket=null,this.elementaryStream=e,this.pid=e.pid,this.demuxer=e.demuxer,this.startingPesPacket=t}clone(){const e=new yi(this.elementaryStream,this.startingPesPacket);return e.currentPos=this.currentPos,e.pesPackets=[...this.pesPackets],e.currentPesPacketIndex=this.currentPesPacketIndex,e.currentPesPacketPos=this.currentPesPacketPos,e.endPos=this.endPos,e.nextPts=this.nextPts,e}ensureBuffered(e){const t=this.endPos-this.currentPos;return t>=e?e:this.bufferData(e-t).then(()=>Math.min(this.endPos-this.currentPos,e))}getCurrentPesPacket(){const e=this.pesPackets[this.currentPesPacketIndex];return y(e),e}async bufferData(e){const t=this.endPos+e;for(;this.endPos<t;){let i;if(this.pesPackets.length===0)i=this.startingPesPacket;else{let a=qe(this.pesPackets).sectionEndPos;for(y(a!==null);;){const o=await this.demuxer.readPacketHeader(a);if(!o)return;if(o.pid===this.pid)break;a+=this.demuxer.packetStride}const n=await this.demuxer.readSection(a,!0);if(!n)return;const s=bi(n);if(!s)throw new Error(ui);i=s}this.pesPackets.push(i),this.endPos+=i.data.byteLength,this.pesPackets.length===1&&(this.nextPts=i.pts)}}readBytes(e){const t=this.getCurrentPesPacket(),i=this.currentPos-this.currentPesPacketPos,a=i+e;if(this.currentPos+=e,a<=t.data.byteLength)return t.data.subarray(i,a);const n=new Uint8Array(e);n.set(t.data.subarray(i));let s=t.data.byteLength-i;for(;;){this.advanceCurrentPacket();const o=this.getCurrentPesPacket(),c=e-s;if(c<=o.data.byteLength){n.set(o.data.subarray(0,c),s);break}n.set(o.data,s),s+=o.data.byteLength}return n}readU8(){let e=this.getCurrentPesPacket();const t=this.currentPos-this.currentPesPacketPos;return this.currentPos++,t<e.data.byteLength?e.data[t]:(this.advanceCurrentPacket(),e=this.getCurrentPesPacket(),e.data[0])}seekTo(e){if(e!==this.currentPos){if(e<this.currentPos)for(;e<this.currentPesPacketPos;){this.currentPesPacketIndex--;const t=this.getCurrentPesPacket();this.currentPesPacketPos-=t.data.byteLength,this.nextPts=t.pts}else for(;;){const t=this.getCurrentPesPacket(),i=this.currentPesPacketPos+t.data.byteLength;if(e<i)break;this.currentPesPacketPos+=t.data.byteLength,this.currentPesPacketIndex++,this.nextPts=this.getCurrentPesPacket().pts}this.currentPos=e}}skip(e){this.seekTo(this.currentPos+e)}advanceCurrentPacket(){this.currentPesPacketPos+=this.getCurrentPesPacket().data.byteLength,this.currentPesPacketIndex++,this.nextPts=this.getCurrentPesPacket().pts}supplyPacket(e,t){const i=this.getCurrentPesPacket();kn(this.elementaryStream,i);const a=this.nextPts;this.nextPts+=t;const n=i.sectionStartPos,s=n+(this.currentPos-this.currentPesPacketPos),o=this.readBytes(e);let c=i.randomAccessIndicator;y(this.elementaryStream.firstSection),i.sectionStartPos===this.elementaryStream.firstSection.startPos&&(c=1),this.suppliedPacket={pts:a,data:o,sequenceNumber:s,sectionStartPos:n,randomAccessIndicator:c},this.pesPackets.splice(0,this.currentPesPacketIndex),this.currentPesPacketIndex=0}}class Ga{constructor(e,t){this.decodeOrderPackets=[],this.reorderBuffer=[],this.presentationOrderPackets=[],this.reachedEnd=!1,this.lastDuration=0,this.backing=e,this.context=t,this.reorderSize=e.getReorderSize(),y(this.reorderSize>=0)}async readNext(){if(this.decodeOrderPackets.length===0&&!await this.readNextPacket())return null;await this.ensureCurrentPacketHasNext();const e=this.decodeOrderPackets[0],t=this.presentationOrderPackets.indexOf(e);y(t!==-1);let i;for(t===this.presentationOrderPackets.length-1?i=this.lastDuration:(i=this.presentationOrderPackets[t+1].pts-e.pts,this.lastDuration=i),this.decodeOrderPackets.shift();this.presentationOrderPackets.length>0;){const a=this.presentationOrderPackets[0];if(this.decodeOrderPackets.includes(a))break;this.presentationOrderPackets.shift()}return{packet:e,duration:i}}async readNextPacket(){if(this.reachedEnd)return!1;let e;return this.context.suppliedPacket?e=this.context.suppliedPacket:(await ch(this.context),e=this.context.suppliedPacket),this.context.suppliedPacket=null,e?(this.decodeOrderPackets.push(e),this.processPacketThroughReorderBuffer(e),!0):(this.reachedEnd=!0,this.flushReorderBuffer(),!1)}async ensureCurrentPacketHasNext(){const e=this.decodeOrderPackets[0];for(y(e);;){const t=this.presentationOrderPackets.indexOf(e);if(t!==-1&&t<=this.presentationOrderPackets.length-2||!await this.readNextPacket())break}}processPacketThroughReorderBuffer(e){if(this.reorderBuffer.push(e),this.reorderBuffer.length>=this.reorderSize){let t=0;for(let a=1;a<this.reorderBuffer.length;a++)this.reorderBuffer[a].pts<this.reorderBuffer[t].pts&&(t=a);const i=this.reorderBuffer.splice(t,1)[0];this.presentationOrderPackets.push(i)}}flushReorderBuffer(){this.reorderBuffer.sort((e,t)=>e.pts-t.pts),this.presentationOrderPackets.push(...this.reorderBuffer),this.reorderBuffer.length=0}}class Gt{}class oc extends Gt{async _getMajorBrand(e){let t=e._reader.requestSlice(0,12);return t instanceof Promise&&(t=await t),!t||(t.skip(4),rt(t,4)!=="ftyp")?null:rt(t,4)}_createDemuxer(e){return new pu(e)}}class lh extends oc{async _canReadInput(e){const t=await this._getMajorBrand(e);return!!t&&t!=="qt "}get name(){return"MP4"}get mimeType(){return"video/mp4"}}class dh extends oc{async _canReadInput(e){return await this._getMajorBrand(e)==="qt "}get name(){return"QuickTime File Format"}get mimeType(){return"video/quicktime"}}class cc extends Gt{async isSupportedEBMLOfDocType(e,t){let i=e._reader.requestSlice(0,Kt);if(i instanceof Promise&&(i=await i),!i)return!1;const a=Jo(i);if(a===null||a<1||a>8||ke(i,a)!==O.EBML)return!1;const s=ec(i);if(typeof s!="number")return!1;let o=e._reader.requestSlice(i.filePos,s);if(o instanceof Promise&&(o=await o),!o)return!1;const c=i.filePos;for(;o.filePos<=c+s-vt;){const l=Ht(o);if(!l)break;const{id:d,size:u}=l,h=o.filePos;if(u===void 0)return!1;switch(d){case O.EBMLVersion:if(ke(o,u)!==1)return!1;break;case O.EBMLReadVersion:if(ke(o,u)!==1)return!1;break;case O.DocType:if(Mr(o,u)!==t)return!1;break;case O.DocTypeVersion:if(ke(o,u)>4)return!1;break}o.filePos=h+u}return!0}_canReadInput(e){return this.isSupportedEBMLOfDocType(e,"matroska")}_createDemuxer(e){return new Pu(e)}get name(){return"Matroska"}get mimeType(){return"video/x-matroska"}}class uh extends cc{_canReadInput(e){return this.isSupportedEBMLOfDocType(e,"webm")}get name(){return"WebM"}get mimeType(){return"video/webm"}}class hh extends Gt{async _canReadInput(e){let t=e._reader.requestSlice(0,10);if(t instanceof Promise&&(t=await t),!t)return!1;let i=0,a=!1;for(;;){let l=e._reader.requestSlice(i,la);if(l instanceof Promise&&(l=await l),!l)break;const d=da(l);if(!d)break;a=!0,i=l.filePos+d.size}const n=await wn(e._reader,i,i+4096);if(!n)return!1;if(a)return!0;i=n.startPos+n.header.totalSize;const s=await wn(e._reader,i,i+pi);if(!s)return!1;const o=n.header,c=s.header;return!(o.channel!==c.channel||o.sampleRate!==c.sampleRate)}_createDemuxer(e){return new Mu(e)}get name(){return"MP3"}get mimeType(){return"audio/mpeg"}}class fh extends Gt{async _canReadInput(e){let t=e._reader.requestSlice(0,12);if(t instanceof Promise&&(t=await t),!t)return!1;const i=rt(t,4);return i!=="RIFF"&&i!=="RIFX"&&i!=="RF64"?!1:(t.skip(4),rt(t,4)==="WAVE")}_createDemuxer(e){return new Ku(e)}get name(){return"WAVE"}get mimeType(){return"audio/wav"}}class mh extends Gt{async _canReadInput(e){let t=e._reader.requestSlice(0,4);return t instanceof Promise&&(t=await t),t?rt(t,4)==="OggS":!1}_createDemuxer(e){return new ju(e)}get name(){return"Ogg"}get mimeType(){return"application/ogg"}}class ph extends Gt{async _canReadInput(e){let t=e._reader.requestSlice(0,4);return t instanceof Promise&&(t=await t),t?rt(t,4)==="fLaC":!1}get name(){return"FLAC"}get mimeType(){return"audio/flac"}_createDemuxer(e){return new rh(e)}}class gh extends Gt{async _canReadInput(e){let t=e._reader.requestSliceRange(0,ua,Sr);if(t instanceof Promise&&(t=await t),!t)return!1;const i=Cr(t);if(!i||(t=e._reader.requestSliceRange(i.frameLength,ua,Sr),t instanceof Promise&&(t=await t),!t))return!1;const a=Cr(t);return a?i.objectType===a.objectType&&i.samplingFrequencyIndex===a.samplingFrequencyIndex&&i.channelConfiguration===a.channelConfiguration:!1}_createDemuxer(e){return new Gu(e)}get name(){return"ADTS"}get mimeType(){return"audio/aac"}}class bh extends Gt{async _canReadInput(e){const t=mt+16+1;let i=e._reader.requestSlice(0,t);if(i instanceof Promise&&(i=await i),!i)return!1;const a=le(i,t);return a[0]===71&&a[mt]===71||a[0]===71&&a[mt+16]===71?!0:a[4]===71&&a[4+mt]===71}_createDemuxer(e){return new nh(e)}get name(){return"MPEG Transport Stream"}get mimeType(){return"video/MP2T"}}const yh=new lh,wh=new dh,kh=new cc,vh=new uh,Th=new hh,Sh=new fh,xh=new mh,Ph=new gh,Ch=new ph,_h=new bh,Ih=[yh,wh,kh,vh,Sh,xh,Ch,Th,Ph,_h];class lc{constructor(){this._disposed=!1,this._sizePromise=null,this.onread=null}async getSizeOrNull(){if(this._disposed)throw new pt;return this._sizePromise??=Promise.resolve(this._retrieveSize())}async getSize(){if(this._disposed)throw new pt;const e=await this.getSizeOrNull();if(e===null)throw new Error("Cannot determine the size of an unsized source.");return e}}class Eh extends lc{constructor(e,t={}){if(!(e instanceof Blob))throw new TypeError("blob must be a Blob.");if(!t||typeof t!="object")throw new TypeError("options must be an object.");if(t.maxCacheSize!==void 0&&(!Ao(t.maxCacheSize)||t.maxCacheSize<0))throw new TypeError("options.maxCacheSize, when provided, must be a non-negative number.");super(),this._readers=new WeakMap,this._blob=e,this._orchestrator=new Fh({maxCacheSize:t.maxCacheSize??8*2**20,maxWorkerCount:4,runWorker:this._runWorker.bind(this),prefetchProfile:Ah.fileSystem})}_retrieveSize(){const e=this._blob.size;return this._orchestrator.fileSize=e,e}_read(e,t){return this._orchestrator.read(e,t)}async _runWorker(e){let t=this._readers.get(e);for(t===void 0&&("stream"in this._blob&&!hi()?t=this._blob.slice(e.currentPos).stream().getReader():t=null,this._readers.set(e,t));e.currentPos<e.targetPos&&!e.aborted;)if(t){const{done:i,value:a}=await t.read();if(i)throw this._orchestrator.forgetWorker(e),new Error("Blob reader stopped unexpectedly before all requested data was read.");if(e.aborted)break;this.onread?.(e.currentPos,e.currentPos+a.length),this._orchestrator.supplyWorkerData(e,a)}else{const i=await this._blob.slice(e.currentPos,e.targetPos).arrayBuffer();if(e.aborted)break;this.onread?.(e.currentPos,e.currentPos+i.byteLength),this._orchestrator.supplyWorkerData(e,new Uint8Array(i))}e.running=!1,e.aborted&&await t?.cancel()}_dispose(){this._orchestrator.dispose()}}const Ah={fileSystem:(r,e)=>(r=Math.floor((r-65536)/65536)*65536,e=Math.ceil((e+65536)/65536)*65536,{start:r,end:e})};class Fh{constructor(e){this.options=e,this.fileSize=null,this.nextAge=0,this.workers=[],this.cache=[],this.currentCacheSize=0,this.disposed=!1}read(e,t){y(this.fileSize!==null);const i=this.options.prefetchProfile(e,t,this.workers),a=Math.max(i.start,0),n=Math.min(i.end,this.fileSize);y(a<=e&&t<=n);let s=null;const o=Fe(this.cache,e,w=>w.start),c=o!==-1?this.cache[o]:null;c&&c.start<=e&&t<=c.end&&(c.age=this.nextAge++,s={bytes:c.bytes,view:c.view,offset:c.start});const l=Fe(this.cache,a,w=>w.start),d=s?null:new Uint8Array(t-e);let u=0,h=a;const p=[];if(l!==-1){for(let w=l;w<this.cache.length;w++){const T=this.cache[w];if(T.start>=n)break;if(T.end<=a)continue;const S=Math.max(a,T.start),C=Math.min(n,T.end);if(y(S<=C),h<S&&p.push({start:h,end:S}),h=C,d){const P=Math.max(e,T.start),B=Math.min(t,T.end);if(P<B){const I=P-e;d.set(T.bytes.subarray(P-T.start,B-T.start),I),I===u&&(u=B-e)}}T.age=this.nextAge++}h<n&&p.push({start:h,end:n})}else p.push({start:a,end:n});if(d&&u>=d.length&&(s={bytes:d,view:Ke(d),offset:e}),p.length===0)return y(s),s;const{promise:m,resolve:g,reject:b}=at(),k=[];for(const w of p){const T=Math.max(e,w.start),S=Math.min(t,w.end);T===w.start&&S===w.end?k.push(w):T<S&&k.push({start:T,end:S})}for(const w of p){const T=d&&{start:e,bytes:d,holes:k,resolve:g,reject:b};let S=!1;for(const C of this.workers)if(Fs(w.start-131072,w.start,C.currentPos,C.targetPos)){C.targetPos=Math.max(C.targetPos,w.end),S=!0,T&&!C.pendingSlices.includes(T)&&C.pendingSlices.push(T),C.running||this.runWorker(C);break}if(!S){const C=this.createWorker(w.start,w.end);T&&(C.pendingSlices=[T]),this.runWorker(C)}}return s||(y(d),s=m.then(w=>({bytes:w,view:Ke(w),offset:e}))),s}createWorker(e,t){const i={startPos:e,currentPos:e,targetPos:t,running:!1,aborted:this.disposed,pendingSlices:[],age:this.nextAge++};for(this.workers.push(i);this.workers.length>this.options.maxWorkerCount;){let a=0,n=this.workers[0];for(let s=1;s<this.workers.length;s++){const o=this.workers[s];o.age<n.age&&(a=s,n=o)}if(n.running&&n.pendingSlices.length>0)break;n.aborted=!0,this.workers.splice(a,1)}return i}runWorker(e){y(!e.running),y(e.currentPos<e.targetPos),e.running=!0,e.age=this.nextAge++,this.options.runWorker(e).catch(t=>{if(e.running=!1,e.pendingSlices.length>0)e.pendingSlices.forEach(i=>i.reject(t)),e.pendingSlices.length=0;else throw t})}supplyWorkerData(e,t){y(!e.aborted);const i=e.currentPos,a=i+t.length;this.insertIntoCache({start:i,end:a,bytes:t,view:Ke(t),age:this.nextAge++}),e.currentPos+=t.length,e.targetPos=Math.max(e.targetPos,e.currentPos);for(let n=0;n<e.pendingSlices.length;n++){const s=e.pendingSlices[n],o=Math.max(i,s.start),c=Math.min(a,s.start+s.bytes.length);o<c&&s.bytes.set(t.subarray(o-i,c-i),o-s.start);for(let l=0;l<s.holes.length;l++){const d=s.holes[l];i<=d.start&&a>d.start&&(d.start=a),d.end<=d.start&&(s.holes.splice(l,1),l--)}s.holes.length===0&&(s.resolve(s.bytes),e.pendingSlices.splice(n,1),n--)}for(let n=0;n<this.workers.length;n++){const s=this.workers[n];e===s||s.running||Fs(i,a,s.currentPos,s.targetPos)&&(this.workers.splice(n,1),n--)}}forgetWorker(e){const t=this.workers.indexOf(e);y(t!==-1),this.workers.splice(t,1)}insertIntoCache(e){if(this.options.maxCacheSize===0)return;let t=Fe(this.cache,e.start,i=>i.start)+1;if(t>0){const i=this.cache[t-1];if(i.end>=e.end)return;if(i.end>e.start){const a=new Uint8Array(e.end-i.start);a.set(i.bytes,0),a.set(e.bytes,e.start-i.start),this.currentCacheSize+=e.end-i.end,i.bytes=a,i.view=Ke(a),i.end=e.end,t--,e=i}else this.cache.splice(t,0,e),this.currentCacheSize+=e.bytes.length}else this.cache.splice(t,0,e),this.currentCacheSize+=e.bytes.length;for(let i=t+1;i<this.cache.length;i++){const a=this.cache[i];if(e.end<=a.start)break;if(e.end>=a.end){this.cache.splice(i,1),this.currentCacheSize-=a.bytes.length,i--;continue}const n=new Uint8Array(a.end-e.start);n.set(e.bytes,0),n.set(a.bytes,a.start-e.start),this.currentCacheSize-=e.end-a.start,e.bytes=n,e.view=Ke(n),e.end=a.end,this.cache.splice(i,1);break}for(;this.currentCacheSize>this.options.maxCacheSize;){let i=0,a=this.cache[0];for(let n=1;n<this.cache.length;n++){const s=this.cache[n];s.age<a.age&&(i=n,a=s)}if(this.currentCacheSize-a.bytes.length<=this.options.maxCacheSize)break;this.cache.splice(i,1),this.currentCacheSize-=a.bytes.length}}dispose(){for(const e of this.workers)e.aborted=!0;this.workers.length=0,this.cache.length=0,this.disposed=!0}}Eo();class dc{get disposed(){return this._disposed}constructor(e){if(this._demuxerPromise=null,this._format=null,this._disposed=!1,!e||typeof e!="object")throw new TypeError("options must be an object.");if(!Array.isArray(e.formats)||e.formats.some(t=>!(t instanceof Gt)))throw new TypeError("options.formats must be an array of InputFormat.");if(!(e.source instanceof lc))throw new TypeError("options.source must be a Source.");if(e.source._disposed)throw new Error("options.source must not be disposed.");this._formats=e.formats,this._source=e.source,this._reader=new Bh(e.source)}_getDemuxer(){return this._demuxerPromise??=(async()=>{this._reader.fileSize=await this._source.getSizeOrNull();for(const e of this._formats)if(await e._canReadInput(this))return this._format=e,e._createDemuxer(this);throw new Error("Input has an unsupported or unrecognizable format.")})()}get source(){return this._source}async getFormat(){return await this._getDemuxer(),y(this._format),this._format}async computeDuration(){return(await this._getDemuxer()).computeDuration()}async getFirstTimestamp(){const e=await this.getTracks();if(e.length===0)return 0;const t=await Promise.all(e.map(i=>i.getFirstTimestamp()));return Math.min(...t)}async getTracks(){return(await this._getDemuxer()).getTracks()}async getVideoTracks(){return(await this.getTracks()).filter(t=>t.isVideoTrack())}async getAudioTracks(){return(await this.getTracks()).filter(t=>t.isAudioTrack())}async getPrimaryVideoTrack(){return(await this.getTracks()).find(t=>t.isVideoTrack())??null}async getPrimaryAudioTrack(){return(await this.getTracks()).find(t=>t.isAudioTrack())??null}async getMimeType(){return(await this._getDemuxer()).getMimeType()}async getMetadataTags(){return(await this._getDemuxer()).getMetadataTags()}dispose(){this._disposed||(this._disposed=!0,this._source._disposed=!0,this._source._dispose())}[Symbol.dispose](){this.dispose()}}class pt extends Error{constructor(e="Input has been disposed."){super(e),this.name="InputDisposedError"}}class Bh{constructor(e){this.source=e}requestSlice(e,t){if(this.source._disposed)throw new pt;if(e<0||this.fileSize!==null&&e+t>this.fileSize)return null;const i=e+t,a=this.source._read(e,i);return a instanceof Promise?a.then(n=>n?new It(n.bytes,n.view,n.offset,e,i):null):a?new It(a.bytes,a.view,a.offset,e,i):null}requestSliceRange(e,t,i){if(this.source._disposed)throw new pt;if(e<0)return null;if(this.fileSize!==null)return this.requestSlice(e,tt(this.fileSize-e,t,i));{const a=this.requestSlice(e,i),n=s=>{if(s)return s;const o=l=>(y(l!==null),this.requestSlice(e,tt(l-e,t,i))),c=this.source._retrieveSize();return c instanceof Promise?c.then(o):o(c)};return a instanceof Promise?a.then(n):n(a)}}}class It{constructor(e,t,i,a,n){this.bytes=e,this.view=t,this.offset=i,this.start=a,this.end=n,this.bufferPos=a-i}static tempFromBytes(e){return new It(e,Ke(e),0,0,e.length)}get length(){return this.end-this.start}get filePos(){return this.offset+this.bufferPos}set filePos(e){this.bufferPos=e-this.offset}get remainingLength(){return Math.max(this.end-this.filePos,0)}skip(e){this.bufferPos+=e}slice(e,t=this.end-e){if(e<this.start||e+t>this.end)throw new RangeError("Slicing outside of original slice.");return new It(this.bytes,this.view,this.offset,e,e+t)}}const ft=(r,e)=>{if(r.filePos<r.start||r.filePos+e>r.end)throw new RangeError(`Tried reading [${r.filePos}, ${r.filePos+e}), but slice is [${r.start}, ${r.end}). This is likely an internal error, please report it alongside the file that caused it.`)},le=(r,e)=>{ft(r,e);const t=r.bytes.subarray(r.bufferPos,r.bufferPos+e);return r.bufferPos+=e,t},re=r=>(ft(r,1),r.view.getUint8(r.bufferPos++)),oi=(r,e)=>{ft(r,2);const t=r.view.getUint16(r.bufferPos,e);return r.bufferPos+=2,t},et=r=>{ft(r,2);const e=r.view.getUint16(r.bufferPos,!1);return r.bufferPos+=2,e},Nr=r=>{ft(r,3);const e=Pa(r.view,r.bufferPos,!1);return r.bufferPos+=3,e},vn=r=>{ft(r,2);const e=r.view.getInt16(r.bufferPos,!1);return r.bufferPos+=2,e},nr=(r,e)=>{ft(r,4);const t=r.view.getUint32(r.bufferPos,e);return r.bufferPos+=4,t},Y=r=>{ft(r,4);const e=r.view.getUint32(r.bufferPos,!1);return r.bufferPos+=4,e},Hr=r=>{ft(r,4);const e=r.view.getUint32(r.bufferPos,!0);return r.bufferPos+=4,e},Tr=r=>{ft(r,4);const e=r.view.getInt32(r.bufferPos,!1);return r.bufferPos+=4,e},Rh=r=>{ft(r,4);const e=r.view.getInt32(r.bufferPos,!0);return r.bufferPos+=4,e},Ks=(r,e)=>{let t,i;return e?(t=nr(r,!0),i=nr(r,!0)):(i=nr(r,!1),t=nr(r,!1)),i*4294967296+t},Ct=r=>{const e=Y(r),t=Y(r);return e*4294967296+t},zh=r=>{const e=Tr(r),t=Y(r);return e*4294967296+t},Dh=r=>{const e=Hr(r);return Rh(r)*4294967296+e},Mh=r=>{ft(r,4);const e=r.view.getFloat32(r.bufferPos,!1);return r.bufferPos+=4,e},uc=r=>{ft(r,8);const e=r.view.getFloat64(r.bufferPos,!1);return r.bufferPos+=8,e},rt=(r,e)=>{ft(r,e);let t="";for(let i=0;i<e;i++)t+=String.fromCharCode(r.bytes[r.bufferPos++]);return t};const Qs=/<(?:(\d{2}):)?(\d{2}):(\d{2}).(\d{3})>/g,Nh=r=>{const e=Math.floor(r/36e5),t=Math.floor(r%(3600*1e3)/(60*1e3)),i=Math.floor(r%(60*1e3)/1e3),a=r%1e3;return e.toString().padStart(2,"0")+":"+t.toString().padStart(2,"0")+":"+i.toString().padStart(2,"0")+"."+a.toString().padStart(3,"0")};class Gs{constructor(e){this.writer=e,this.helper=new Uint8Array(8),this.helperView=new DataView(this.helper.buffer),this.offsets=new WeakMap}writeU32(e){this.helperView.setUint32(0,e,!1),this.writer.write(this.helper.subarray(0,4))}writeU64(e){this.helperView.setUint32(0,Math.floor(e/2**32),!1),this.helperView.setUint32(4,e,!1),this.writer.write(this.helper.subarray(0,8))}writeAscii(e){for(let t=0;t<e.length;t++)this.helperView.setUint8(t%8,e.charCodeAt(t)),t%8===7&&this.writer.write(this.helper);e.length%8!==0&&this.writer.write(this.helper.subarray(0,e.length%8))}writeBox(e){if(this.offsets.set(e,this.writer.getPos()),e.contents&&!e.children)this.writeBoxHeader(e,e.size??e.contents.byteLength+8),this.writer.write(e.contents);else{const t=this.writer.getPos();if(this.writeBoxHeader(e,0),e.contents&&this.writer.write(e.contents),e.children)for(const n of e.children)n&&this.writeBox(n);const i=this.writer.getPos(),a=e.size??i-t;this.writer.seek(t),this.writeBoxHeader(e,a),this.writer.seek(i)}}writeBoxHeader(e,t){this.writeU32(e.largeSize?1:t),this.writeAscii(e.type),e.largeSize&&this.writeU64(t)}measureBoxHeader(e){return 8+(e.largeSize?8:0)}patchBox(e){const t=this.offsets.get(e);y(t!==void 0);const i=this.writer.getPos();this.writer.seek(t),this.writeBox(e),this.writer.seek(i)}measureBox(e){if(e.contents&&!e.children)return this.measureBoxHeader(e)+e.contents.byteLength;{let t=this.measureBoxHeader(e);if(e.contents&&(t+=e.contents.byteLength),e.children)for(const i of e.children)i&&(t+=this.measureBox(i));return t}}}const Pe=new Uint8Array(8),Ut=new DataView(Pe.buffer),Ge=r=>[(r%256+256)%256],ie=r=>(Ut.setUint16(0,r,!1),[Pe[0],Pe[1]]),hc=r=>(Ut.setInt16(0,r,!1),[Pe[0],Pe[1]]),fc=r=>(Ut.setUint32(0,r,!1),[Pe[1],Pe[2],Pe[3]]),G=r=>(Ut.setUint32(0,r,!1),[Pe[0],Pe[1],Pe[2],Pe[3]]),rr=r=>(Ut.setInt32(0,r,!1),[Pe[0],Pe[1],Pe[2],Pe[3]]),_r=r=>(Ut.setUint32(0,Math.floor(r/2**32),!1),Ut.setUint32(4,r,!1),[Pe[0],Pe[1],Pe[2],Pe[3],Pe[4],Pe[5],Pe[6],Pe[7]]),mc=r=>(Ut.setInt16(0,2**8*r,!1),[Pe[0],Pe[1]]),jt=r=>(Ut.setInt32(0,2**16*r,!1),[Pe[0],Pe[1],Pe[2],Pe[3]]),Xa=r=>(Ut.setInt32(0,2**30*r,!1),[Pe[0],Pe[1],Pe[2],Pe[3]]),Ya=(r,e)=>{const t=[];let i=r;do{let a=i&127;i>>=7,t.length>0&&(a|=128),t.push(a)}while(i>0||e);return t.reverse()},it=(r,e=!1)=>{const t=Array(r.length).fill(null).map((i,a)=>r.charCodeAt(a));return e&&t.push(0),t},ns=r=>{let e=null;for(const t of r)(!e||t.timestamp>e.timestamp)&&(e=t);return e},pc=r=>{const e=r*(Math.PI/180),t=Math.round(Math.cos(e)),i=Math.round(Math.sin(e));return[t,i,0,-i,t,0,0,0,1]},gc=pc(0),bc=r=>[jt(r[0]),jt(r[1]),Xa(r[2]),jt(r[3]),jt(r[4]),Xa(r[5]),jt(r[6]),jt(r[7]),Xa(r[8])],se=(r,e,t)=>({type:r,contents:e&&new Uint8Array(e.flat(10)),children:t}),Ie=(r,e,t,i,a)=>se(r,[Ge(e),fc(t),i??[]],a),Oh=r=>r.isQuickTime?se("ftyp",[it("qt "),G(512),it("qt ")]):r.fragmented?se("ftyp",[it("iso5"),G(512),it("iso5"),it("iso6"),it("mp41")]):se("ftyp",[it("isom"),G(512),it("isom"),r.holdsAvc?it("avc1"):[],it("mp41")]),Ki=r=>({type:"mdat",largeSize:r}),Uh=r=>({type:"free",size:r}),ci=r=>se("moov",void 0,[Vh(r.creationTime,r.trackDatas),...r.trackDatas.map(e=>Lh(e,r.creationTime)),r.isFragmented?Sf(r.trackDatas):null,Mf(r)]),Vh=(r,e)=>{const t=$e(Math.max(0,...e.filter(s=>s.samples.length>0).map(s=>{const o=ns(s.samples);return o.timestamp+o.duration})),Tn),i=Math.max(0,...e.map(s=>s.track.id))+1,a=!Yr(r)||!Yr(t),n=a?_r:G;return Ie("mvhd",+a,0,[n(r),n(r),G(Tn),n(t),jt(1),mc(1),Array(10).fill(0),bc(gc),Array(24).fill(0),G(i)])},Lh=(r,e)=>{const t=Gf(r);return se("trak",void 0,[Wh(r,e),Hh(r,e),t.name!==void 0?se("udta",void 0,[se("name",[...Dt.encode(t.name)])]):null])},Wh=(r,e)=>{const t=ns(r.samples),i=$e(t?t.timestamp+t.duration:0,Tn),a=!Yr(e)||!Yr(i),n=a?_r:G;let s;if(r.type==="video"){const c=r.track.metadata.rotation;s=pc(c??0)}else s=gc;let o=2;return r.track.metadata.disposition?.default!==!1&&(o|=1),Ie("tkhd",+a,o,[n(e),n(e),G(r.track.id),G(0),n(i),Array(8).fill(0),ie(0),ie(r.track.id),mc(r.type==="audio"?1:0),ie(0),bc(s),jt(r.type==="video"?r.info.width:0),jt(r.type==="video"?r.info.height:0)])},Hh=(r,e)=>se("mdia",void 0,[jh(r,e),ss(!0,qh[r.type],Kh[r.type]),Qh(r)]),jh=(r,e)=>{const t=ns(r.samples),i=$e(t?t.timestamp+t.duration:0,r.timescale),a=!Yr(e)||!Yr(i),n=a?_r:G;return Ie("mdhd",+a,0,[n(e),n(e),G(r.timescale),n(i),ie(vc(r.track.metadata.languageCode??bt)),ie(0)])},qh={video:"vide",audio:"soun",subtitle:"text"},Kh={video:"MediabunnyVideoHandler",audio:"MediabunnySoundHandler",subtitle:"MediabunnyTextHandler"},ss=(r,e,t,i="\0\0\0\0")=>Ie("hdlr",0,0,[r?it("mhlr"):G(0),it(e),it(i),G(0),G(0),it(t,!0)]),Qh=r=>se("minf",void 0,[$h[r.type](),Zh(),tf(r)]),Gh=()=>Ie("vmhd",0,1,[ie(0),ie(0),ie(0),ie(0)]),Xh=()=>Ie("smhd",0,0,[ie(0),ie(0)]),Yh=()=>Ie("nmhd",0,0),$h={video:Gh,audio:Xh,subtitle:Yh},Zh=()=>se("dinf",void 0,[Jh()]),Jh=()=>Ie("dref",0,0,[G(1)],[ef()]),ef=()=>Ie("url ",0,1),tf=r=>{const e=r.compositionTimeOffsetTable.length>1||r.compositionTimeOffsetTable.some(t=>t.sampleCompositionTimeOffset!==0);return se("stbl",void 0,[rf(r),gf(r),e?vf(r):null,e?Tf(r):null,yf(r),wf(r),kf(r),bf(r)])},rf=r=>{let e;if(r.type==="video")e=af(Vf(r.track.source._codec,r.info.decoderConfig.codec),r);else if(r.type==="audio"){const t=kc(r.track.source._codec,r.muxer.isQuickTime);y(t),e=lf(t,r)}else r.type==="subtitle"&&(e=mf(Hf[r.track.source._codec],r));return y(e),Ie("stsd",0,0,[G(1)],[e])},af=(r,e)=>se(r,[Array(6).fill(0),ie(1),ie(0),ie(0),Array(12).fill(0),ie(e.info.width),ie(e.info.height),G(4718592),G(4718592),G(0),ie(1),Array(32).fill(0),ie(24),hc(65535)],[Lf[e.track.source._codec](e),md(e.info.decoderConfig.colorSpace)?nf(e):null]),nf=r=>se("colr",[it("nclx"),ie(Vi[r.info.decoderConfig.colorSpace.primaries]),ie(Li[r.info.decoderConfig.colorSpace.transfer]),ie(Wi[r.info.decoderConfig.colorSpace.matrix]),Ge((r.info.decoderConfig.colorSpace.fullRange?1:0)<<7)]),sf=r=>r.info.decoderConfig&&se("avcC",[...yt(r.info.decoderConfig.description)]),of=r=>r.info.decoderConfig&&se("hvcC",[...yt(r.info.decoderConfig.description)]),Xs=r=>{if(!r.info.decoderConfig)return null;const e=r.info.decoderConfig,t=e.codec.split("."),i=Number(t[1]),a=Number(t[2]),n=Number(t[3]),s=t[4]?Number(t[4]):1,o=t[8]?Number(t[8]):Number(e.colorSpace?.fullRange??0),c=(n<<4)+(s<<1)+o,l=t[5]?Number(t[5]):e.colorSpace?.primaries?Vi[e.colorSpace.primaries]:2,d=t[6]?Number(t[6]):e.colorSpace?.transfer?Li[e.colorSpace.transfer]:2,u=t[7]?Number(t[7]):e.colorSpace?.matrix?Wi[e.colorSpace.matrix]:2;return Ie("vpcC",1,0,[Ge(i),Ge(a),Ge(c),Ge(l),Ge(d),Ge(u),ie(0)])},cf=r=>se("av1C",_d(r.info.decoderConfig.codec)),lf=(r,e)=>{let t=0,i,a=16;if(ht.includes(e.track.source._codec)){const n=e.track.source._codec,{sampleSize:s}=hr(n);a=8*s,a>16&&(t=1)}return t===0?i=[Array(6).fill(0),ie(1),ie(t),ie(0),G(0),ie(e.info.numberOfChannels),ie(a),ie(0),ie(0),ie(e.info.sampleRate<2**16?e.info.sampleRate:0),ie(0)]:i=[Array(6).fill(0),ie(1),ie(t),ie(0),G(0),ie(e.info.numberOfChannels),ie(Math.min(a,16)),ie(0),ie(0),ie(e.info.sampleRate<2**16?e.info.sampleRate:0),ie(0),G(1),G(a/8),G(e.info.numberOfChannels*a/8),G(2)],se(r,i,[Wf(e.track.source._codec,e.muxer.isQuickTime)?.(e)??null])},$a=r=>{let e;switch(r.track.source._codec){case"aac":e=64;break;case"mp3":e=107;break;case"vorbis":e=221;break;default:throw new Error(`Unhandled audio codec: ${r.track.source._codec}`)}let t=[...Ge(e),...Ge(21),...fc(0),...G(0),...G(0)];if(r.info.decoderConfig.description){const i=yt(r.info.decoderConfig.description);t=[...t,...Ge(5),...Ya(i.byteLength),...i]}return t=[...ie(1),...Ge(0),...Ge(4),...Ya(t.length),...t,...Ge(6),...Ge(1),...Ge(2)],t=[...Ge(3),...Ya(t.length),...t],Ie("esds",0,0,t)},Zt=r=>se("wave",void 0,[df(r),uf(r),se("\0\0\0\0")]),df=r=>se("frma",[it(kc(r.track.source._codec,r.muxer.isQuickTime))]),uf=r=>{const{littleEndian:e}=hr(r.track.source._codec);return se("enda",[ie(+e)])},hf=r=>{let e=r.info.numberOfChannels,t=3840,i=r.info.sampleRate,a=0,n=0,s=new Uint8Array(0);const o=r.info.decoderConfig?.description;if(o){y(o.byteLength>=18);const c=yt(o),l=Ho(c);e=l.outputChannelCount,t=l.preSkip,i=l.inputSampleRate,a=l.outputGain,n=l.channelMappingFamily,l.channelMappingTable&&(s=l.channelMappingTable)}return se("dOps",[Ge(0),Ge(e),ie(t),G(i),hc(a),Ge(n),...s])},ff=r=>{const e=r.info.decoderConfig?.description;y(e);const t=yt(e);return Ie("dfLa",0,0,[...t.subarray(4)])},Ft=r=>{const{littleEndian:e,sampleSize:t}=hr(r.track.source._codec),i=+e;return Ie("pcmC",0,0,[Ge(i),Ge(8*t)])},mf=(r,e)=>se(r,[Array(6).fill(0),ie(1)],[jf[e.track.source._codec](e)]),pf=r=>se("vttC",[...Dt.encode(r.info.config.description)]),gf=r=>Ie("stts",0,0,[G(r.timeToSampleTable.length),r.timeToSampleTable.map(e=>[G(e.sampleCount),G(e.sampleDelta)])]),bf=r=>{if(r.samples.every(t=>t.type==="key"))return null;const e=[...r.samples.entries()].filter(([,t])=>t.type==="key");return Ie("stss",0,0,[G(e.length),e.map(([t])=>G(t+1))])},yf=r=>Ie("stsc",0,0,[G(r.compactlyCodedChunkTable.length),r.compactlyCodedChunkTable.map(e=>[G(e.firstChunk),G(e.samplesPerChunk),G(1)])]),wf=r=>{if(r.type==="audio"&&r.info.requiresPcmTransformation){const{sampleSize:e}=hr(r.track.source._codec);return Ie("stsz",0,0,[G(e*r.info.numberOfChannels),G(r.samples.reduce((t,i)=>t+$e(i.duration,r.timescale),0))])}return Ie("stsz",0,0,[G(0),G(r.samples.length),r.samples.map(e=>G(e.size))])},kf=r=>r.finalizedChunks.length>0&&qe(r.finalizedChunks).offset>=2**32?Ie("co64",0,0,[G(r.finalizedChunks.length),r.finalizedChunks.map(e=>_r(e.offset))]):Ie("stco",0,0,[G(r.finalizedChunks.length),r.finalizedChunks.map(e=>G(e.offset))]),vf=r=>Ie("ctts",1,0,[G(r.compositionTimeOffsetTable.length),r.compositionTimeOffsetTable.map(e=>[G(e.sampleCount),rr(e.sampleCompositionTimeOffset)])]),Tf=r=>{let e=1/0,t=-1/0,i=1/0,a=-1/0;y(r.compositionTimeOffsetTable.length>0),y(r.samples.length>0);for(let s=0;s<r.compositionTimeOffsetTable.length;s++){const o=r.compositionTimeOffsetTable[s];e=Math.min(e,o.sampleCompositionTimeOffset),t=Math.max(t,o.sampleCompositionTimeOffset)}for(let s=0;s<r.samples.length;s++){const o=r.samples[s];i=Math.min(i,$e(o.timestamp,r.timescale)),a=Math.max(a,$e(o.timestamp+o.duration,r.timescale))}const n=Math.max(-e,0);return a>=2**31?null:Ie("cslg",0,0,[rr(n),rr(e),rr(t),rr(i),rr(a)])},Sf=r=>se("mvex",void 0,r.map(xf)),xf=r=>Ie("trex",0,0,[G(r.track.id),G(1),G(0),G(0),G(0)]),Ys=(r,e)=>se("moof",void 0,[Pf(r),...e.map(Cf)]),Pf=r=>Ie("mfhd",0,0,[G(r)]),yc=r=>{let e=0,t=0;const i=0,a=0,n=r.type==="delta";return t|=+n,n?e|=1:e|=2,e<<24|t<<16|i<<8|a},Cf=r=>se("traf",void 0,[_f(r),If(r),Ef(r)]),_f=r=>{y(r.currentChunk);let e=0;e|=8,e|=16,e|=32,e|=131072;const t=r.currentChunk.samples[1]??r.currentChunk.samples[0],i={duration:t.timescaleUnitsToNextSample,size:t.size,flags:yc(t)};return Ie("tfhd",0,e,[G(r.track.id),G(i.duration),G(i.size),G(i.flags)])},If=r=>(y(r.currentChunk),Ie("tfdt",1,0,[_r($e(r.currentChunk.startTimestamp,r.timescale))])),Ef=r=>{y(r.currentChunk);const e=r.currentChunk.samples.map(g=>g.timescaleUnitsToNextSample),t=r.currentChunk.samples.map(g=>g.size),i=r.currentChunk.samples.map(yc),a=r.currentChunk.samples.map(g=>$e(g.timestamp-g.decodeTimestamp,r.timescale)),n=new Set(e),s=new Set(t),o=new Set(i),c=new Set(a),l=o.size===2&&i[0]!==i[1],d=n.size>1,u=s.size>1,h=!l&&o.size>1,p=c.size>1||[...c].some(g=>g!==0);let m=0;return m|=1,m|=4*+l,m|=256*+d,m|=512*+u,m|=1024*+h,m|=2048*+p,Ie("trun",1,m,[G(r.currentChunk.samples.length),G(r.currentChunk.offset-r.currentChunk.moofOffset||0),l?G(i[0]):[],r.currentChunk.samples.map((g,b)=>[d?G(e[b]):[],u?G(t[b]):[],h?G(i[b]):[],p?rr(a[b]):[]])])},Af=r=>se("mfra",void 0,[...r.map(Ff),Bf()]),Ff=(r,e)=>Ie("tfra",1,0,[G(r.track.id),G(63),G(r.finalizedChunks.length),r.finalizedChunks.map(i=>[_r($e(i.samples[0].timestamp,r.timescale)),_r(i.moofOffset),G(e+1),G(1),G(1)])]),Bf=()=>Ie("mfro",0,0,[G(0)]),Rf=()=>se("vtte"),zf=(r,e,t,i,a)=>se("vttc",void 0,[a!==null?se("vsid",[rr(a)]):null,t!==null?se("iden",[...Dt.encode(t)]):null,e!==null?se("ctim",[...Dt.encode(Nh(e))]):null,i!==null?se("sttg",[...Dt.encode(i)]):null,se("payl",[...Dt.encode(r)])]),Df=r=>se("vtta",[...Dt.encode(r)]),Mf=r=>{const e=[],t=r.format._options.metadataFormat??"auto",i=r.output._metadataTags;if(t==="mdir"||t==="auto"&&!r.isQuickTime){const a=Of(i);a&&e.push(a)}else if(t==="mdta"){const a=Uf(i);a&&e.push(a)}else(t==="udta"||t==="auto"&&r.isQuickTime)&&Nf(e,r.output._metadataTags);return e.length===0?null:se("udta",void 0,e)},Nf=(r,e)=>{for(const{key:t,value:i}of Io(e))switch(t){case"title":r.push(Bt("©nam",i));break;case"description":r.push(Bt("©des",i));break;case"artist":r.push(Bt("©ART",i));break;case"album":r.push(Bt("©alb",i));break;case"albumArtist":r.push(Bt("albr",i));break;case"genre":r.push(Bt("©gen",i));break;case"date":r.push(Bt("©day",i.toISOString().slice(0,10)));break;case"comment":r.push(Bt("©cmt",i));break;case"lyrics":r.push(Bt("©lyr",i));break;case"raw":break;case"discNumber":case"discsTotal":case"trackNumber":case"tracksTotal":case"images":break;default:dr(t)}if(e.raw)for(const t in e.raw){const i=e.raw[t];i==null||t.length!==4||r.some(a=>a.type===t)||(typeof i=="string"?r.push(Bt(t,i)):i instanceof Uint8Array&&r.push(se(t,Array.from(i))))}},Bt=(r,e)=>{const t=Dt.encode(e);return se(r,[ie(t.length),ie(vc("und")),Array.from(t)])},$s={"image/jpeg":13,"image/png":14,"image/bmp":27},wc=(r,e)=>{const t=[];for(const{key:i,value:a}of Io(r))switch(i){case"title":t.push({key:e?"title":"©nam",value:Pt(a)});break;case"description":t.push({key:e?"description":"©des",value:Pt(a)});break;case"artist":t.push({key:e?"artist":"©ART",value:Pt(a)});break;case"album":t.push({key:e?"album":"©alb",value:Pt(a)});break;case"albumArtist":t.push({key:e?"album_artist":"aART",value:Pt(a)});break;case"comment":t.push({key:e?"comment":"©cmt",value:Pt(a)});break;case"genre":t.push({key:e?"genre":"©gen",value:Pt(a)});break;case"lyrics":t.push({key:e?"lyrics":"©lyr",value:Pt(a)});break;case"date":t.push({key:e?"date":"©day",value:Pt(a.toISOString().slice(0,10))});break;case"images":for(const n of a)n.kind==="coverFront"&&t.push({key:"covr",value:se("data",[G($s[n.mimeType]??0),G(0),Array.from(n.data)])});break;case"trackNumber":if(e){const n=r.tracksTotal!==void 0?`${a}/${r.tracksTotal}`:a.toString();t.push({key:"track",value:Pt(n)})}else t.push({key:"trkn",value:se("data",[G(0),G(0),ie(0),ie(a),ie(r.tracksTotal??0),ie(0)])});break;case"discNumber":e||t.push({key:"disc",value:se("data",[G(0),G(0),ie(0),ie(a),ie(r.discsTotal??0),ie(0)])});break;case"tracksTotal":case"discsTotal":break;case"raw":break;default:dr(i)}if(r.raw)for(const i in r.raw){const a=r.raw[i];a==null||!e&&i.length!==4||t.some(n=>n.key===i)||(typeof a=="string"?t.push({key:i,value:Pt(a)}):a instanceof Uint8Array?t.push({key:i,value:se("data",[G(0),G(0),Array.from(a)])}):a instanceof jr&&t.push({key:i,value:se("data",[G($s[a.mimeType]??0),G(0),Array.from(a.data)])}))}return t},Of=r=>{const e=wc(r,!1);return e.length===0?null:Ie("meta",0,0,void 0,[ss(!1,"mdir","","appl"),se("ilst",void 0,e.map(t=>se(t.key,void 0,[t.value])))])},Uf=r=>{const e=wc(r,!0);return e.length===0?null:se("meta",void 0,[ss(!1,"mdta",""),Ie("keys",0,0,[G(e.length)],e.map(t=>se("mdta",[...Dt.encode(t.key)]))),se("ilst",void 0,e.map((t,i)=>{const a=String.fromCharCode(...G(i+1));return se(a,void 0,[t.value])}))])},Pt=r=>se("data",[G(1),G(0),...Dt.encode(r)]),Vf=(r,e)=>{switch(r){case"avc":return e.startsWith("avc3")?"avc3":"avc1";case"hevc":return"hvc1";case"vp8":return"vp08";case"vp9":return"vp09";case"av1":return"av01"}},Lf={avc:sf,hevc:of,vp8:Xs,vp9:Xs,av1:cf},kc=(r,e)=>{switch(r){case"aac":return"mp4a";case"mp3":return"mp4a";case"opus":return"Opus";case"vorbis":return"mp4a";case"flac":return"fLaC";case"ulaw":return"ulaw";case"alaw":return"alaw";case"pcm-u8":return"raw ";case"pcm-s8":return"sowt"}if(e)switch(r){case"pcm-s16":return"sowt";case"pcm-s16be":return"twos";case"pcm-s24":return"in24";case"pcm-s24be":return"in24";case"pcm-s32":return"in32";case"pcm-s32be":return"in32";case"pcm-f32":return"fl32";case"pcm-f32be":return"fl32";case"pcm-f64":return"fl64";case"pcm-f64be":return"fl64"}else switch(r){case"pcm-s16":return"ipcm";case"pcm-s16be":return"ipcm";case"pcm-s24":return"ipcm";case"pcm-s24be":return"ipcm";case"pcm-s32":return"ipcm";case"pcm-s32be":return"ipcm";case"pcm-f32":return"fpcm";case"pcm-f32be":return"fpcm";case"pcm-f64":return"fpcm";case"pcm-f64be":return"fpcm"}},Wf=(r,e)=>{switch(r){case"aac":return $a;case"mp3":return $a;case"opus":return hf;case"vorbis":return $a;case"flac":return ff}if(e)switch(r){case"pcm-s24":return Zt;case"pcm-s24be":return Zt;case"pcm-s32":return Zt;case"pcm-s32be":return Zt;case"pcm-f32":return Zt;case"pcm-f32be":return Zt;case"pcm-f64":return Zt;case"pcm-f64be":return Zt}else switch(r){case"pcm-s16":return Ft;case"pcm-s16be":return Ft;case"pcm-s24":return Ft;case"pcm-s24be":return Ft;case"pcm-s32":return Ft;case"pcm-s32be":return Ft;case"pcm-f32":return Ft;case"pcm-f32be":return Ft;case"pcm-f64":return Ft;case"pcm-f64be":return Ft}return null},Hf={webvtt:"wvtt"},jf={webvtt:pf},vc=r=>{y(r.length===3);let e=0;for(let t=0;t<3;t++)e<<=5,e+=r.charCodeAt(t)-96;return e};class Tc{constructor(){this.ensureMonotonicity=!1,this.trackedWrites=null,this.trackedStart=-1,this.trackedEnd=-1}start(){}maybeTrackWrites(e){if(!this.trackedWrites)return;let t=this.getPos();if(t<this.trackedStart){if(t+e.byteLength<=this.trackedStart)return;e=e.subarray(this.trackedStart-t),t=0}const i=t+e.byteLength-this.trackedStart;let a=this.trackedWrites.byteLength;for(;a<i;)a*=2;if(a!==this.trackedWrites.byteLength){const n=new Uint8Array(a);n.set(this.trackedWrites,0),this.trackedWrites=n}this.trackedWrites.set(e,t-this.trackedStart),this.trackedEnd=Math.max(this.trackedEnd,t+e.byteLength)}startTrackingWrites(){this.trackedWrites=new Uint8Array(2**10),this.trackedStart=this.getPos(),this.trackedEnd=this.trackedStart}stopTrackingWrites(){if(!this.trackedWrites)throw new Error("Internal error: Can't get tracked writes since nothing was tracked.");const t={data:this.trackedWrites.subarray(0,this.trackedEnd-this.trackedStart),start:this.trackedStart,end:this.trackedEnd};return this.trackedWrites=null,t}}const Za=2**16,Ja=2**32;class Sc extends Tc{constructor(e){if(super(),this.pos=0,this.maxPos=0,this.target=e,this.supportsResize="resize"in new ArrayBuffer(0),this.supportsResize)try{this.buffer=new ArrayBuffer(Za,{maxByteLength:Ja})}catch{this.buffer=new ArrayBuffer(Za),this.supportsResize=!1}else this.buffer=new ArrayBuffer(Za);this.bytes=new Uint8Array(this.buffer)}ensureSize(e){let t=this.buffer.byteLength;for(;t<e;)t*=2;if(t!==this.buffer.byteLength){if(t>Ja)throw new Error(`ArrayBuffer exceeded maximum size of ${Ja} bytes. Please consider using another target.`);if(this.supportsResize)this.buffer.resize(t);else{const i=new ArrayBuffer(t),a=new Uint8Array(i);a.set(this.bytes,0),this.buffer=i,this.bytes=a}}}write(e){this.maybeTrackWrites(e),this.ensureSize(this.pos+e.byteLength),this.bytes.set(e,this.pos),this.target.onwrite?.(this.pos,this.pos+e.byteLength),this.pos+=e.byteLength,this.maxPos=Math.max(this.maxPos,this.pos)}seek(e){this.pos=e}getPos(){return this.pos}async flush(){}async finalize(){this.ensureSize(this.pos),this.target.buffer=this.buffer.slice(0,Math.max(this.maxPos,this.pos))}async close(){}getSlice(e,t){return this.bytes.slice(e,t)}}class qf extends Tc{constructor(e){super(),this.target=e,this.pos=0}write(e){this.maybeTrackWrites(e),this.target.onwrite?.(this.pos,this.pos+e.byteLength),this.pos+=e.byteLength}getPos(){return this.pos}seek(e){this.pos=e}async flush(){}async finalize(){}async close(){}}class os{constructor(){this._output=null,this.onwrite=null}}class xc extends os{constructor(){super(...arguments),this.buffer=null}_createWriter(){return new Sc(this)}}class Kf extends os{_createWriter(){return new qf(this)}}const Tn=1e3,Qf=2082844800,Gf=r=>{const e={},t=r.track;return t.metadata.name!==void 0&&(e.name=t.metadata.name),e},$e=(r,e,t=!0)=>{const i=r*e;return t?Math.round(i):i};class Xf extends Vd{constructor(e,t){super(e),this.auxTarget=new xc,this.auxWriter=this.auxTarget._createWriter(),this.auxBoxWriter=new Gs(this.auxWriter),this.mdat=null,this.ftypSize=null,this.trackDatas=[],this.allTracksKnown=at(),this.creationTime=Math.floor(Date.now()/1e3)+Qf,this.finalizedChunks=[],this.nextFragmentNumber=1,this.maxWrittenTimestamp=-1/0,this.format=t,this.writer=e._writer,this.boxWriter=new Gs(this.writer),this.isQuickTime=t instanceof _c;const i=this.writer instanceof Sc?"in-memory":!1;this.fastStart=t._options.fastStart??i,this.isFragmented=this.fastStart==="fragmented",(this.fastStart==="in-memory"||this.isFragmented)&&(this.writer.ensureMonotonicity=!0),this.minimumFragmentDuration=t._options.minimumFragmentDuration??1}async start(){const e=await this.mutex.acquire(),t=this.output._tracks.some(i=>i.type==="video"&&i.source._codec==="avc");if(this.format._options.onFtyp&&this.writer.startTrackingWrites(),this.boxWriter.writeBox(Oh({isQuickTime:this.isQuickTime,holdsAvc:t,fragmented:this.isFragmented})),this.format._options.onFtyp){const{data:i,start:a}=this.writer.stopTrackingWrites();this.format._options.onFtyp(i,a)}if(this.ftypSize=this.writer.getPos(),this.fastStart!=="in-memory")if(this.fastStart==="reserve"){for(const i of this.output._tracks)if(i.metadata.maximumPacketCount===void 0)throw new Error("All tracks must specify maximumPacketCount in their metadata when using fastStart: 'reserve'.")}else this.isFragmented||(this.format._options.onMdat&&this.writer.startTrackingWrites(),this.mdat=Ki(!0),this.boxWriter.writeBox(this.mdat));await this.writer.flush(),e()}allTracksAreKnown(){for(const e of this.output._tracks)if(!e.source._closed&&!this.trackDatas.some(t=>t.track===e))return!1;return!0}async getMimeType(){await this.allTracksKnown.promise;const e=this.trackDatas.map(t=>t.type==="video"||t.type==="audio"?t.info.decoderConfig.codec:{webvtt:"wvtt"}[t.track.source._codec]);return $o({isQuickTime:this.isQuickTime,hasVideo:this.trackDatas.some(t=>t.type==="video"),hasAudio:this.trackDatas.some(t=>t.type==="audio"),codecStrings:e})}getVideoTrackData(e,t,i){const a=this.trackDatas.find(l=>l.track===e);if(a)return a;Md(i),y(i),y(i.decoderConfig);const n={...i.decoderConfig};y(n.codedWidth!==void 0),y(n.codedHeight!==void 0);let s=!1;if(e.source._codec==="avc"&&!n.description){const l=Yn(t.data);if(!l)throw new Error("Couldn't extract an AVCDecoderConfigurationRecord from the AVC packet. Make sure the packets are in Annex B format (as specified in ITU-T-REC-H.264) when not providing a description, or provide a description (must be an AVCDecoderConfigurationRecord as specified in ISO 14496-15) and ensure the packets are in AVCC format.");n.description=Hd(l),s=!0}else if(e.source._codec==="hevc"&&!n.description){const l=Zn(t.data);if(!l)throw new Error("Couldn't extract an HEVCDecoderConfigurationRecord from the HEVC packet. Make sure the packets are in Annex B format (as specified in ITU-T-REC-H.265) when not providing a description, or provide a description (must be an HEVCDecoderConfigurationRecord as specified in ISO 14496-15) and ensure the packets are in HEVC format.");n.description=$d(l),s=!0}const o=Td(1/(e.metadata.frameRate??57600),1e6).denominator,c={muxer:this,track:e,type:"video",info:{width:n.codedWidth,height:n.codedHeight,decoderConfig:n,requiresAnnexBTransformation:s},timescale:o,samples:[],sampleQueue:[],timestampProcessingQueue:[],timeToSampleTable:[],compositionTimeOffsetTable:[],lastTimescaleUnits:null,lastSample:null,finalizedChunks:[],currentChunk:null,compactlyCodedChunkTable:[]};return this.trackDatas.push(c),this.trackDatas.sort((l,d)=>l.track.id-d.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),c}getAudioTrackData(e,t,i){const a=this.trackDatas.find(c=>c.track===e);if(a)return a;Od(i),y(i),y(i.decoderConfig);const n={...i.decoderConfig};let s=!1;if(e.source._codec==="aac"&&!n.description){const c=Cr(It.tempFromBytes(t.data));if(!c)throw new Error("Couldn't parse ADTS header from the AAC packet. Make sure the packets are in ADTS format (as specified in ISO 13818-7) when not providing a description, or provide a description (must be an AudioSpecificConfig as specified in ISO 14496-3) and ensure the packets are raw AAC data.");const l=Pr[c.samplingFrequencyIndex],d=ji[c.channelConfiguration];if(l===void 0||d===void 0)throw new Error("Invalid ADTS frame header.");n.description=Bo({objectType:c.objectType,sampleRate:l,numberOfChannels:d}),s=!0}const o={muxer:this,track:e,type:"audio",info:{numberOfChannels:i.decoderConfig.numberOfChannels,sampleRate:i.decoderConfig.sampleRate,decoderConfig:n,requiresPcmTransformation:!this.isFragmented&&ht.includes(e.source._codec),requiresAdtsStripping:s},timescale:i.decoderConfig.sampleRate,samples:[],sampleQueue:[],timestampProcessingQueue:[],timeToSampleTable:[],compositionTimeOffsetTable:[],lastTimescaleUnits:null,lastSample:null,finalizedChunks:[],currentChunk:null,compactlyCodedChunkTable:[]};return this.trackDatas.push(o),this.trackDatas.sort((c,l)=>c.track.id-l.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),o}getSubtitleTrackData(e,t){const i=this.trackDatas.find(n=>n.track===e);if(i)return i;Ud(t),y(t),y(t.config);const a={muxer:this,track:e,type:"subtitle",info:{config:t.config},timescale:1e3,samples:[],sampleQueue:[],timestampProcessingQueue:[],timeToSampleTable:[],compositionTimeOffsetTable:[],lastTimescaleUnits:null,lastSample:null,finalizedChunks:[],currentChunk:null,compactlyCodedChunkTable:[],lastCueEndTimestamp:0,cueQueue:[],nextSourceId:0,cueToSourceId:new WeakMap};return this.trackDatas.push(a),this.trackDatas.sort((n,s)=>n.track.id-s.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),a}async addEncodedVideoPacket(e,t,i){const a=await this.mutex.acquire();try{const n=this.getVideoTrackData(e,t,i);let s=t.data;if(n.info.requiresAnnexBTransformation){const l=[...qi(s)].map(d=>s.subarray(d.offset,d.offset+d.length));if(l.length===0)throw new Error("Failed to transform packet data. Make sure all packets are provided in Annex B format, as specified in ITU-T-REC-H.264 and ITU-T-REC-H.265.");s=No(l,4)}const o=this.validateAndNormalizeTimestamp(n.track,t.timestamp,t.type==="key"),c=this.createSampleForTrack(n,s,o,t.duration,t.type);await this.registerSample(n,c)}finally{a()}}async addEncodedAudioPacket(e,t,i){const a=await this.mutex.acquire();try{const n=this.getAudioTrackData(e,t,i);let s=t.data;if(n.info.requiresAdtsStripping){const l=Cr(It.tempFromBytes(s));if(!l)throw new Error("Expected ADTS frame, didn't get one.");const d=l.crcCheck===null?ua:Sr;s=s.subarray(d)}const o=this.validateAndNormalizeTimestamp(n.track,t.timestamp,t.type==="key"),c=this.createSampleForTrack(n,s,o,t.duration,t.type);n.info.requiresPcmTransformation&&await this.maybePadWithSilence(n,o),await this.registerSample(n,c)}finally{a()}}async maybePadWithSilence(e,t){const i=qe(e.samples),a=i?i.timestamp+i.duration:0,n=t-a,s=$e(n,e.timescale);if(s>0){const{sampleSize:o,silentValue:c}=hr(e.info.decoderConfig.codec),l=s*e.info.numberOfChannels,d=new Uint8Array(o*l).fill(c),u=this.createSampleForTrack(e,new Uint8Array(d.buffer),a,n,"key");await this.registerSample(e,u)}}async addSubtitleCue(e,t,i){const a=await this.mutex.acquire();try{const n=this.getSubtitleTrackData(e,i);this.validateAndNormalizeTimestamp(n.track,t.timestamp,!0),e.source._codec==="webvtt"&&(n.cueQueue.push(t),await this.processWebVTTCues(n,t.timestamp))}finally{a()}}async processWebVTTCues(e,t){for(;e.cueQueue.length>0;){const i=new Set([]);for(const l of e.cueQueue)y(l.timestamp<=t),y(e.lastCueEndTimestamp<=l.timestamp+l.duration),i.add(Math.max(l.timestamp,e.lastCueEndTimestamp)),i.add(l.timestamp+l.duration);const a=[...i].sort((l,d)=>l-d),n=a[0],s=a[1]??n;if(t<s)break;if(e.lastCueEndTimestamp<n){this.auxWriter.seek(0);const l=Rf();this.auxBoxWriter.writeBox(l);const d=this.auxWriter.getSlice(0,this.auxWriter.getPos()),u=this.createSampleForTrack(e,d,e.lastCueEndTimestamp,n-e.lastCueEndTimestamp,"key");await this.registerSample(e,u),e.lastCueEndTimestamp=n}this.auxWriter.seek(0);for(let l=0;l<e.cueQueue.length;l++){const d=e.cueQueue[l];if(d.timestamp>=s)break;Qs.lastIndex=0;const u=Qs.test(d.text),h=d.timestamp+d.duration;let p=e.cueToSourceId.get(d);if(p===void 0&&s<h&&(p=e.nextSourceId++,e.cueToSourceId.set(d,p)),d.notes){const g=Df(d.notes);this.auxBoxWriter.writeBox(g)}const m=zf(d.text,u?n:null,d.identifier??null,d.settings??null,p??null);this.auxBoxWriter.writeBox(m),h===s&&e.cueQueue.splice(l--,1)}const o=this.auxWriter.getSlice(0,this.auxWriter.getPos()),c=this.createSampleForTrack(e,o,n,s-n,"key");await this.registerSample(e,c),e.lastCueEndTimestamp=s}}createSampleForTrack(e,t,i,a,n){return{timestamp:i,decodeTimestamp:i,duration:a,data:t,size:t.byteLength,type:n,timescaleUnitsToNextSample:$e(a,e.timescale)}}processTimestamps(e,t){if(e.timestampProcessingQueue.length===0)return;if(e.type==="audio"&&e.info.requiresPcmTransformation){let a=0;for(let n=0;n<e.timestampProcessingQueue.length;n++){const s=e.timestampProcessingQueue[n],o=$e(s.duration,e.timescale);a+=o}if(e.timeToSampleTable.length===0)e.timeToSampleTable.push({sampleCount:a,sampleDelta:1});else{const n=qe(e.timeToSampleTable);n.sampleCount+=a}e.timestampProcessingQueue.length=0;return}const i=e.timestampProcessingQueue.map(a=>a.timestamp).sort((a,n)=>a-n);for(let a=0;a<e.timestampProcessingQueue.length;a++){const n=e.timestampProcessingQueue[a];n.decodeTimestamp=i[a],!this.isFragmented&&e.lastTimescaleUnits===null&&(n.decodeTimestamp=0);const s=$e(n.timestamp-n.decodeTimestamp,e.timescale),o=$e(n.duration,e.timescale);if(e.lastTimescaleUnits!==null){y(e.lastSample);const c=$e(n.decodeTimestamp,e.timescale,!1),l=Math.round(c-e.lastTimescaleUnits);if(y(l>=0),e.lastTimescaleUnits+=l,e.lastSample.timescaleUnitsToNextSample=l,!this.isFragmented){let d=qe(e.timeToSampleTable);if(y(d),d.sampleCount===1){d.sampleDelta=l;const h=e.timeToSampleTable[e.timeToSampleTable.length-2];h&&h.sampleDelta===l&&(h.sampleCount++,e.timeToSampleTable.pop(),d=h)}else d.sampleDelta!==l&&(d.sampleCount--,e.timeToSampleTable.push(d={sampleCount:1,sampleDelta:l}));d.sampleDelta===o?d.sampleCount++:e.timeToSampleTable.push({sampleCount:1,sampleDelta:o});const u=qe(e.compositionTimeOffsetTable);y(u),u.sampleCompositionTimeOffset===s?u.sampleCount++:e.compositionTimeOffsetTable.push({sampleCount:1,sampleCompositionTimeOffset:s})}}else e.lastTimescaleUnits=$e(n.decodeTimestamp,e.timescale,!1),this.isFragmented||(e.timeToSampleTable.push({sampleCount:1,sampleDelta:o}),e.compositionTimeOffsetTable.push({sampleCount:1,sampleCompositionTimeOffset:s}));e.lastSample=n}if(e.timestampProcessingQueue.length=0,y(e.lastSample),y(e.lastTimescaleUnits!==null),t!==void 0&&e.lastSample.timescaleUnitsToNextSample===0){y(t.type==="key");const a=$e(t.timestamp,e.timescale,!1),n=Math.round(a-e.lastTimescaleUnits);e.lastSample.timescaleUnitsToNextSample=n}}async registerSample(e,t){t.type==="key"&&this.processTimestamps(e,t),e.timestampProcessingQueue.push(t),this.isFragmented?(e.sampleQueue.push(t),await this.interleaveSamples()):this.fastStart==="reserve"?await this.registerSampleFastStartReserve(e,t):await this.addSampleToTrack(e,t)}async addSampleToTrack(e,t){if(!this.isFragmented&&(e.samples.push(t),this.fastStart==="reserve")){const a=e.track.metadata.maximumPacketCount;if(y(a!==void 0),e.samples.length>a)throw new Error(`Track #${e.track.id} has already reached the maximum packet count (${a}). Either add less packets or increase the maximum packet count.`)}let i=!1;if(!e.currentChunk)i=!0;else{e.currentChunk.startTimestamp=Math.min(e.currentChunk.startTimestamp,t.timestamp);const a=t.timestamp-e.currentChunk.startTimestamp;if(this.isFragmented){const n=this.trackDatas.every(s=>{if(e===s)return t.type==="key";const o=s.sampleQueue[0];return o?o.type==="key":s.track.source._closed});a>=this.minimumFragmentDuration&&n&&t.timestamp>this.maxWrittenTimestamp&&(i=!0,await this.finalizeFragment())}else i=a>=.5}i&&(e.currentChunk&&await this.finalizeCurrentChunk(e),e.currentChunk={startTimestamp:t.timestamp,samples:[],offset:null,moofOffset:null}),y(e.currentChunk),e.currentChunk.samples.push(t),this.isFragmented&&(this.maxWrittenTimestamp=Math.max(this.maxWrittenTimestamp,t.timestamp))}async finalizeCurrentChunk(e){if(y(!this.isFragmented),!e.currentChunk)return;e.finalizedChunks.push(e.currentChunk),this.finalizedChunks.push(e.currentChunk);let t=e.currentChunk.samples.length;if(e.type==="audio"&&e.info.requiresPcmTransformation&&(t=e.currentChunk.samples.reduce((i,a)=>i+$e(a.duration,e.timescale),0)),(e.compactlyCodedChunkTable.length===0||qe(e.compactlyCodedChunkTable).samplesPerChunk!==t)&&e.compactlyCodedChunkTable.push({firstChunk:e.finalizedChunks.length,samplesPerChunk:t}),this.fastStart==="in-memory"){e.currentChunk.offset=0;return}e.currentChunk.offset=this.writer.getPos();for(const i of e.currentChunk.samples)y(i.data),this.writer.write(i.data),i.data=null;await this.writer.flush()}async interleaveSamples(e=!1){if(y(this.isFragmented),!(!e&&!this.allTracksAreKnown()))e:for(;;){let t=null,i=1/0;for(const n of this.trackDatas){if(!e&&n.sampleQueue.length===0&&!n.track.source._closed)break e;n.sampleQueue.length>0&&n.sampleQueue[0].timestamp<i&&(t=n,i=n.sampleQueue[0].timestamp)}if(!t)break;const a=t.sampleQueue.shift();await this.addSampleToTrack(t,a)}}async finalizeFragment(e=!0){y(this.isFragmented);const t=this.nextFragmentNumber++;if(t===1){this.format._options.onMoov&&this.writer.startTrackingWrites();const p=ci(this);if(this.boxWriter.writeBox(p),this.format._options.onMoov){const{data:m,start:g}=this.writer.stopTrackingWrites();this.format._options.onMoov(m,g)}}const i=this.trackDatas.filter(p=>p.currentChunk),a=Ys(t,i),n=this.writer.getPos(),s=n+this.boxWriter.measureBox(a);let o=s+qt,c=1/0;for(const p of i){p.currentChunk.offset=o,p.currentChunk.moofOffset=n;for(const m of p.currentChunk.samples)o+=m.size;c=Math.min(c,p.currentChunk.startTimestamp)}const l=o-s,d=l>=2**32;if(d)for(const p of i)p.currentChunk.offset+=kr-qt;this.format._options.onMoof&&this.writer.startTrackingWrites();const u=Ys(t,i);if(this.boxWriter.writeBox(u),this.format._options.onMoof){const{data:p,start:m}=this.writer.stopTrackingWrites();this.format._options.onMoof(p,m,c)}y(this.writer.getPos()===s),this.format._options.onMdat&&this.writer.startTrackingWrites();const h=Ki(d);h.size=l,this.boxWriter.writeBox(h),this.writer.seek(s+(d?kr:qt));for(const p of i)for(const m of p.currentChunk.samples)this.writer.write(m.data),m.data=null;if(this.format._options.onMdat){const{data:p,start:m}=this.writer.stopTrackingWrites();this.format._options.onMdat(p,m)}for(const p of i)p.finalizedChunks.push(p.currentChunk),this.finalizedChunks.push(p.currentChunk),p.currentChunk=null;e&&await this.writer.flush()}async registerSampleFastStartReserve(e,t){if(this.allTracksAreKnown()){if(!this.mdat){const i=ci(this),n=this.boxWriter.measureBox(i)+this.computeSampleTableSizeUpperBound()+4096;y(this.ftypSize!==null),this.writer.seek(this.ftypSize+n),this.format._options.onMdat&&this.writer.startTrackingWrites(),this.mdat=Ki(!0),this.boxWriter.writeBox(this.mdat);for(const s of this.trackDatas){for(const o of s.sampleQueue)await this.addSampleToTrack(s,o);s.sampleQueue.length=0}}await this.addSampleToTrack(e,t)}else e.sampleQueue.push(t)}computeSampleTableSizeUpperBound(){y(this.fastStart==="reserve");let e=0;for(const t of this.trackDatas){const i=t.track.metadata.maximumPacketCount;y(i!==void 0),e+=8*Math.ceil(2/3*i),e+=4*i,e+=8*Math.ceil(2/3*i),e+=12*Math.ceil(2/3*i),e+=4*i,e+=8*i}return e}async onTrackClose(e){const t=await this.mutex.acquire();if(e.type==="subtitle"&&e.source._codec==="webvtt"){const i=this.trackDatas.find(a=>a.track===e);i&&await this.processWebVTTCues(i,1/0)}this.allTracksAreKnown()&&this.allTracksKnown.resolve(),this.isFragmented&&await this.interleaveSamples(),t()}async finalize(){const e=await this.mutex.acquire();this.allTracksKnown.resolve();for(const t of this.trackDatas)t.type==="subtitle"&&t.track.source._codec==="webvtt"&&await this.processWebVTTCues(t,1/0);if(this.isFragmented){await this.interleaveSamples(!0);for(const t of this.trackDatas)this.processTimestamps(t);await this.finalizeFragment(!1)}else for(const t of this.trackDatas)this.processTimestamps(t),await this.finalizeCurrentChunk(t);if(this.fastStart==="in-memory"){this.mdat=Ki(!1);let t;for(let a=0;a<2;a++){const n=ci(this),s=this.boxWriter.measureBox(n);t=this.boxWriter.measureBox(this.mdat);let o=this.writer.getPos()+s+t;for(const c of this.finalizedChunks){c.offset=o;for(const{data:l}of c.samples)y(l),o+=l.byteLength,t+=l.byteLength}if(o<2**32)break;t>=2**32&&(this.mdat.largeSize=!0)}this.format._options.onMoov&&this.writer.startTrackingWrites();const i=ci(this);if(this.boxWriter.writeBox(i),this.format._options.onMoov){const{data:a,start:n}=this.writer.stopTrackingWrites();this.format._options.onMoov(a,n)}this.format._options.onMdat&&this.writer.startTrackingWrites(),this.mdat.size=t,this.boxWriter.writeBox(this.mdat);for(const a of this.finalizedChunks)for(const n of a.samples)y(n.data),this.writer.write(n.data),n.data=null;if(this.format._options.onMdat){const{data:a,start:n}=this.writer.stopTrackingWrites();this.format._options.onMdat(a,n)}}else if(this.isFragmented){const t=this.writer.getPos(),i=Af(this.trackDatas);this.boxWriter.writeBox(i);const a=this.writer.getPos()-t;this.writer.seek(this.writer.getPos()-4),this.boxWriter.writeU32(a)}else{y(this.mdat);const t=this.boxWriter.offsets.get(this.mdat);y(t!==void 0);const i=this.writer.getPos()-t;if(this.mdat.size=i,this.mdat.largeSize=i>=2**32,this.boxWriter.patchBox(this.mdat),this.format._options.onMdat){const{data:n,start:s}=this.writer.stopTrackingWrites();this.format._options.onMdat(n,s)}const a=ci(this);if(this.fastStart==="reserve"){y(this.ftypSize!==null),this.writer.seek(this.ftypSize),this.format._options.onMoov&&this.writer.startTrackingWrites(),this.boxWriter.writeBox(a);const n=this.boxWriter.offsets.get(this.mdat)-this.writer.getPos();this.boxWriter.writeBox(Uh(n))}else this.format._options.onMoov&&this.writer.startTrackingWrites(),this.boxWriter.writeBox(a);if(this.format._options.onMoov){const{data:n,start:s}=this.writer.stopTrackingWrites();this.format._options.onMoov(n,s)}}e()}}class Pc{getSupportedVideoCodecs(){return this.getSupportedCodecs().filter(e=>Nt.includes(e))}getSupportedAudioCodecs(){return this.getSupportedCodecs().filter(e=>Ot.includes(e))}getSupportedSubtitleCodecs(){return this.getSupportedCodecs().filter(e=>sa.includes(e))}_codecUnsupportedHint(e){return""}}class Cc extends Pc{constructor(e={}){if(!e||typeof e!="object")throw new TypeError("options must be an object.");if(e.fastStart!==void 0&&![!1,"in-memory","reserve","fragmented"].includes(e.fastStart))throw new TypeError("options.fastStart, when provided, must be false, 'in-memory', 'reserve', or 'fragmented'.");if(e.minimumFragmentDuration!==void 0&&(!Number.isFinite(e.minimumFragmentDuration)||e.minimumFragmentDuration<0))throw new TypeError("options.minimumFragmentDuration, when provided, must be a non-negative number.");if(e.onFtyp!==void 0&&typeof e.onFtyp!="function")throw new TypeError("options.onFtyp, when provided, must be a function.");if(e.onMoov!==void 0&&typeof e.onMoov!="function")throw new TypeError("options.onMoov, when provided, must be a function.");if(e.onMdat!==void 0&&typeof e.onMdat!="function")throw new TypeError("options.onMdat, when provided, must be a function.");if(e.onMoof!==void 0&&typeof e.onMoof!="function")throw new TypeError("options.onMoof, when provided, must be a function.");if(e.metadataFormat!==void 0&&!["mdir","mdta","udta","auto"].includes(e.metadataFormat))throw new TypeError("options.metadataFormat, when provided, must be either 'auto', 'mdir', 'mdta', or 'udta'.");super(),this._options=e}getSupportedTrackCounts(){return{video:{min:0,max:4294967295},audio:{min:0,max:4294967295},subtitle:{min:0,max:4294967295},total:{min:1,max:4294967295}}}get supportsVideoRotationMetadata(){return!0}_createMuxer(e){return new Xf(e,this)}}class cs extends Cc{constructor(e){super(e)}get _name(){return"MP4"}get fileExtension(){return".mp4"}get mimeType(){return"video/mp4"}getSupportedCodecs(){return[...Nt,...fi,"pcm-s16","pcm-s16be","pcm-s24","pcm-s24be","pcm-s32","pcm-s32be","pcm-f32","pcm-f32be","pcm-f64","pcm-f64be",...sa]}_codecUnsupportedHint(e){return new _c().getSupportedCodecs().includes(e)?" Switching to MOV will grant support for this codec.":""}}class _c extends Cc{constructor(e){super(e)}get _name(){return"MOV"}get fileExtension(){return".mov"}get mimeType(){return"video/quicktime"}getSupportedCodecs(){return[...Nt,...Ot]}_codecUnsupportedHint(e){return new cs().getSupportedCodecs().includes(e)?" Switching to MP4 will grant support for this codec.":""}}const Yf=r=>{if(!r||typeof r!="object")throw new TypeError("Encoding config must be an object.");if(!Nt.includes(r.codec))throw new TypeError(`Invalid video codec '${r.codec}'. Must be one of: ${Nt.join(", ")}.`);if(!(r.bitrate instanceof Xt)&&(!Number.isInteger(r.bitrate)||r.bitrate<=0))throw new TypeError("config.bitrate must be a positive integer or a quality.");if(r.keyFrameInterval!==void 0&&(!Number.isFinite(r.keyFrameInterval)||r.keyFrameInterval<0))throw new TypeError("config.keyFrameInterval, when provided, must be a non-negative number.");if(r.sizeChangeBehavior!==void 0&&!["deny","passThrough","fill","contain","cover"].includes(r.sizeChangeBehavior))throw new TypeError("config.sizeChangeBehavior, when provided, must be 'deny', 'passThrough', 'fill', 'contain' or 'cover'.");if(r.onEncodedPacket!==void 0&&typeof r.onEncodedPacket!="function")throw new TypeError("config.onEncodedChunk, when provided, must be a function.");if(r.onEncoderConfig!==void 0&&typeof r.onEncoderConfig!="function")throw new TypeError("config.onEncoderConfig, when provided, must be a function.");Ic(r.codec,r)},Ic=(r,e)=>{if(!e||typeof e!="object")throw new TypeError("Encoding options must be an object.");if(e.alpha!==void 0&&!["discard","keep"].includes(e.alpha))throw new TypeError("options.alpha, when provided, must be 'discard' or 'keep'.");if(e.bitrateMode!==void 0&&!["constant","variable"].includes(e.bitrateMode))throw new TypeError("bitrateMode, when provided, must be 'constant' or 'variable'.");if(e.latencyMode!==void 0&&!["quality","realtime"].includes(e.latencyMode))throw new TypeError("latencyMode, when provided, must be 'quality' or 'realtime'.");if(e.fullCodecString!==void 0&&typeof e.fullCodecString!="string")throw new TypeError("fullCodecString, when provided, must be a string.");if(e.fullCodecString!==void 0&&zo(e.fullCodecString)!==r)throw new TypeError(`fullCodecString, when provided, must be a string that matches the specified codec (${r}).`);if(e.hardwareAcceleration!==void 0&&!["no-preference","prefer-hardware","prefer-software"].includes(e.hardwareAcceleration))throw new TypeError("hardwareAcceleration, when provided, must be 'no-preference', 'prefer-hardware' or 'prefer-software'.");if(e.scalabilityMode!==void 0&&typeof e.scalabilityMode!="string")throw new TypeError("scalabilityMode, when provided, must be a string.");if(e.contentHint!==void 0&&typeof e.contentHint!="string")throw new TypeError("contentHint, when provided, must be a string.")},Sn=r=>{const e=r.bitrate instanceof Xt?r.bitrate._toVideoBitrate(r.codec,r.width,r.height):r.bitrate;return{codec:r.fullCodecString??Cd(r.codec,r.width,r.height,e),width:r.width,height:r.height,bitrate:e,bitrateMode:r.bitrateMode,alpha:r.alpha??"discard",framerate:r.framerate,latencyMode:r.latencyMode,hardwareAcceleration:r.hardwareAcceleration,scalabilityMode:r.scalabilityMode,contentHint:r.contentHint,...Ed(r.codec)}},$f=r=>{if(!r||typeof r!="object")throw new TypeError("Encoding config must be an object.");if(!Ot.includes(r.codec))throw new TypeError(`Invalid audio codec '${r.codec}'. Must be one of: ${Ot.join(", ")}.`);if(r.bitrate===void 0&&(!ht.includes(r.codec)||r.codec==="flac"))throw new TypeError("config.bitrate must be provided for compressed audio codecs.");if(r.bitrate!==void 0&&!(r.bitrate instanceof Xt)&&(!Number.isInteger(r.bitrate)||r.bitrate<=0))throw new TypeError("config.bitrate, when provided, must be a positive integer or a quality.");if(r.onEncodedPacket!==void 0&&typeof r.onEncodedPacket!="function")throw new TypeError("config.onEncodedChunk, when provided, must be a function.");if(r.onEncoderConfig!==void 0&&typeof r.onEncoderConfig!="function")throw new TypeError("config.onEncoderConfig, when provided, must be a function.");Ec(r.codec,r)},Ec=(r,e)=>{if(!e||typeof e!="object")throw new TypeError("Encoding options must be an object.");if(e.bitrateMode!==void 0&&!["constant","variable"].includes(e.bitrateMode))throw new TypeError("bitrateMode, when provided, must be 'constant' or 'variable'.");if(e.fullCodecString!==void 0&&typeof e.fullCodecString!="string")throw new TypeError("fullCodecString, when provided, must be a string.");if(e.fullCodecString!==void 0&&zo(e.fullCodecString)!==r)throw new TypeError(`fullCodecString, when provided, must be a string that matches the specified codec (${r}).`)},xn=r=>{const e=r.bitrate instanceof Xt?r.bitrate._toAudioBitrate(r.codec):r.bitrate;return{codec:r.fullCodecString??Id(r.codec,r.numberOfChannels,r.sampleRate),numberOfChannels:r.numberOfChannels,sampleRate:r.sampleRate,bitrate:e,bitrateMode:r.bitrateMode,...Ad(r.codec)}};class Xt{constructor(e){this._factor=e}_toVideoBitrate(e,t,i){const a=t*i,n={avc:1,hevc:.6,vp9:.6,av1:.4,vp8:1.2},s=1920*1080,o=3e6,c=Math.pow(a/s,.95),u=o*c*n[e]*this._factor;return Math.ceil(u/1e3)*1e3}_toAudioBitrate(e){if(ht.includes(e)||e==="flac")return;const i={aac:128e3,opus:64e3,mp3:16e4,vorbis:64e3}[e];if(!i)throw new Error(`Unhandled codec: ${e}`);let a=i*this._factor;return e==="aac"?a=[96e3,128e3,16e4,192e3].reduce((s,o)=>Math.abs(o-a)<Math.abs(s-a)?o:s):e==="opus"||e==="vorbis"?a=Math.max(6e3,a):e==="mp3"&&(a=[8e3,16e3,24e3,32e3,4e4,48e3,64e3,8e4,96e3,112e3,128e3,16e4,192e3,224e3,256e3,32e4].reduce((s,o)=>Math.abs(o-a)<Math.abs(s-a)?o:s)),Math.round(a/1e3)*1e3}}const Zs=new Xt(2),Zf=async(r,e={})=>{const{width:t=1280,height:i=720,bitrate:a=1e6,...n}=e;if(!Nt.includes(r))return!1;if(!Number.isInteger(t)||t<=0)throw new TypeError("width must be a positive integer.");if(!Number.isInteger(i)||i<=0)throw new TypeError("height must be a positive integer.");if(!(a instanceof Xt)&&(!Number.isInteger(a)||a<=0))throw new TypeError("bitrate must be a positive integer or a quality.");Ic(r,n);let s=null;return hn.length>0&&(s??=Sn({codec:r,width:t,height:i,bitrate:a,framerate:void 0,...n}),hn.some(l=>l.supports(r,s)))?!0:typeof VideoEncoder>"u"||(t%2===1||i%2===1)&&(r==="avc"||r==="hevc")||(s??=Sn({codec:r,width:t,height:i,bitrate:a,framerate:void 0,...n,alpha:"discard"}),!(await VideoEncoder.isConfigSupported(s)).supported)?!1:$r()?new Promise(async l=>{try{const d=new VideoEncoder({output:()=>{},error:()=>l(!1)});d.configure(s);const u=new Uint8Array(t*i*4),h=new VideoFrame(u,{format:"RGBA",codedWidth:t,codedHeight:i,timestamp:0});d.encode(h),h.close(),await d.flush(),l(!0)}catch{l(!1)}}):!0},Jf=async(r,e={})=>{const{numberOfChannels:t=2,sampleRate:i=48e3,bitrate:a=128e3,...n}=e;if(!Ot.includes(r))return!1;if(!Number.isInteger(t)||t<=0)throw new TypeError("numberOfChannels must be a positive integer.");if(!Number.isInteger(i)||i<=0)throw new TypeError("sampleRate must be a positive integer.");if(!(a instanceof Xt)&&(!Number.isInteger(a)||a<=0))throw new TypeError("bitrate must be a positive integer.");Ec(r,n);let s=null;return fn.length>0&&(s??=xn({codec:r,numberOfChannels:t,sampleRate:i,bitrate:a,...n}),fn.some(c=>c.supports(r,s)))||ht.includes(r)?!0:typeof AudioEncoder>"u"?!1:(s??=xn({codec:r,numberOfChannels:t,sampleRate:i,bitrate:a,...n}),(await AudioEncoder.isConfigSupported(s)).supported===!0)},Js=async(r=Ot,e)=>{const t=await Promise.all(r.map(i=>Jf(i,e)));return r.filter((i,a)=>t[a])},em=async(r,e)=>{for(const t of r)if(await Zf(t,e))return t;return null};class ls{constructor(){this._connectedTrack=null,this._closingPromise=null,this._closed=!1,this._timestampOffset=0}_ensureValidAdd(){if(!this._connectedTrack)throw new Error("Source is not connected to an output track.");if(this._connectedTrack.output.state==="canceled")throw new Error("Output has been canceled.");if(this._connectedTrack.output.state==="finalizing"||this._connectedTrack.output.state==="finalized")throw new Error("Output has been finalized.");if(this._connectedTrack.output.state==="pending")throw new Error("Output has not started.");if(this._closed)throw new Error("Source is closed.")}async _start(){}async _flushAndClose(e){}close(){if(this._closingPromise)return;const e=this._connectedTrack;if(!e)throw new Error("Cannot call close without connecting the source to an output track.");if(e.output.state==="pending")throw new Error("Cannot call close before output has been started.");this._closingPromise=(async()=>{await this._flushAndClose(!1),this._closed=!0,!(e.output.state==="finalizing"||e.output.state==="finalized")&&e.output._muxer.onTrackClose(e)})()}async _flushOrWaitForOngoingClose(e){return this._closingPromise??=(async()=>{await this._flushAndClose(e),this._closed=!0})()}}class ds extends ls{constructor(e){if(super(),this._connectedTrack=null,!Nt.includes(e))throw new TypeError(`Invalid video codec '${e}'. Must be one of: ${Nt.join(", ")}.`);this._codec=e}}class tm extends ds{constructor(e){super(e)}add(e,t){if(!(e instanceof Le))throw new TypeError("packet must be an EncodedPacket.");if(e.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be added.");if(t!==void 0&&(!t||typeof t!="object"))throw new TypeError("meta, when provided, must be an object.");return this._ensureValidAdd(),this._connectedTrack.output._muxer.addEncodedVideoPacket(this._connectedTrack,e,t)}}class rm{constructor(e,t){this.source=e,this.encodingConfig=t,this.ensureEncoderPromise=null,this.encoderInitialized=!1,this.encoder=null,this.muxer=null,this.lastMultipleOfKeyFrameInterval=-1,this.codedWidth=null,this.codedHeight=null,this.resizeCanvas=null,this.customEncoder=null,this.customEncoderCallSerializer=new Ca,this.customEncoderQueueSize=0,this.alphaEncoder=null,this.splitter=null,this.splitterCreationFailed=!1,this.alphaFrameQueue=[],this.error=null,this.errorNeedsNewStack=!0}async add(e,t,i){try{if(this.checkForEncoderError(),this.source._ensureValidAdd(),this.codedWidth!==null&&this.codedHeight!==null){if(e.codedWidth!==this.codedWidth||e.codedHeight!==this.codedHeight){const o=this.encodingConfig.sizeChangeBehavior??"deny";if(o!=="passThrough"){if(o==="deny")throw new Error(`Video sample size must remain constant. Expected ${this.codedWidth}x${this.codedHeight}, got ${e.codedWidth}x${e.codedHeight}. To allow the sample size to change over time, set \`sizeChangeBehavior\` to a value other than 'strict' in the encoding options.`);{let c=!1;this.resizeCanvas||(typeof document<"u"?(this.resizeCanvas=document.createElement("canvas"),this.resizeCanvas.width=this.codedWidth,this.resizeCanvas.height=this.codedHeight):this.resizeCanvas=new OffscreenCanvas(this.codedWidth,this.codedHeight),c=!0);const l=this.resizeCanvas.getContext("2d",{alpha:$r()});y(l),c||($r()?(l.fillStyle="black",l.fillRect(0,0,this.codedWidth,this.codedHeight)):l.clearRect(0,0,this.codedWidth,this.codedHeight)),e.drawWithFit(l,{fit:o}),t&&e.close(),e=new lt(this.resizeCanvas,{timestamp:e.timestamp,duration:e.duration,rotation:e.rotation}),t=!0}}}}else this.codedWidth=e.codedWidth,this.codedHeight=e.codedHeight;this.encoderInitialized||(this.ensureEncoderPromise||this.ensureEncoder(e),this.encoderInitialized||await this.ensureEncoderPromise),y(this.encoderInitialized);const a=this.encodingConfig.keyFrameInterval??5,n=Math.floor(e.timestamp/a),s={...i,keyFrame:i?.keyFrame||a===0||n!==this.lastMultipleOfKeyFrameInterval};if(this.lastMultipleOfKeyFrameInterval=n,this.customEncoder){this.customEncoderQueueSize++;const o=e.clone(),c=this.customEncoderCallSerializer.call(()=>this.customEncoder.encode(o,s)).then(()=>this.customEncoderQueueSize--).catch(l=>this.error??=l).finally(()=>{o.close()});this.customEncoderQueueSize>=4&&await c}else{y(this.encoder);const o=e.toVideoFrame();if(!this.alphaEncoder)this.encoder.encode(o,s),o.close();else if(!!o.format&&!o.format.includes("A")||this.splitterCreationFailed)this.alphaFrameQueue.push(null),this.encoder.encode(o,s),o.close();else{const l=o.displayWidth,d=o.displayHeight;if(!this.splitter)try{this.splitter=new im(l,d)}catch(u){console.error("Due to an error, only color data will be encoded.",u),this.splitterCreationFailed=!0,this.alphaFrameQueue.push(null),this.encoder.encode(o,s),o.close()}if(this.splitter){const u=this.splitter.extractColor(o),h=this.splitter.extractAlpha(o);this.alphaFrameQueue.push(h),this.encoder.encode(u,s),u.close(),o.close()}}t&&e.close(),this.encoder.encodeQueueSize>=4&&await new Promise(c=>this.encoder.addEventListener("dequeue",c,{once:!0}))}await this.muxer.mutex.currentPromise}finally{t&&e.close()}}ensureEncoder(e){const t=new Error;this.ensureEncoderPromise=(async()=>{const i=Sn({width:e.codedWidth,height:e.codedHeight,...this.encodingConfig,framerate:this.source._connectedTrack?.metadata.frameRate});this.encodingConfig.onEncoderConfig?.(i);const a=hn.find(n=>n.supports(this.encodingConfig.codec,i));if(a)this.customEncoder=new a,this.customEncoder.codec=this.encodingConfig.codec,this.customEncoder.config=i,this.customEncoder.onPacket=(n,s)=>{if(!(n instanceof Le))throw new TypeError("The first argument passed to onPacket must be an EncodedPacket.");if(s!==void 0&&(!s||typeof s!="object"))throw new TypeError("The second argument passed to onPacket must be an object or undefined.");this.encodingConfig.onEncodedPacket?.(n,s),this.muxer.addEncodedVideoPacket(this.source._connectedTrack,n,s).catch(o=>{this.error??=o,this.errorNeedsNewStack=!1})},await this.customEncoder.init();else{if(typeof VideoEncoder>"u")throw new Error("VideoEncoder is not supported by this browser.");if(i.alpha="discard",this.encodingConfig.alpha==="keep"&&(i.latencyMode="quality"),(i.width%2===1||i.height%2===1)&&(this.encodingConfig.codec==="avc"||this.encodingConfig.codec==="hevc"))throw new Error(`The dimensions ${i.width}x${i.height} are not supported for codec '${this.encodingConfig.codec}'; both width and height must be even numbers. Make sure to round your dimensions to the nearest even number.`);if(!(await VideoEncoder.isConfigSupported(i)).supported)throw new Error(`This specific encoder configuration (${i.codec}, ${i.bitrate} bps, ${i.width}x${i.height}, hardware acceleration: ${i.hardwareAcceleration??"no-preference"}) is not supported by this browser. Consider using another codec or changing your video parameters.`);const o=[],c=[];let l=0,d=0;const u=(h,p,m)=>{const g={};if(p){const k=new Uint8Array(p.byteLength);p.copyTo(k),g.alpha=k}const b=Le.fromEncodedChunk(h,g);this.encodingConfig.onEncodedPacket?.(b,m),this.muxer.addEncodedVideoPacket(this.source._connectedTrack,b,m).catch(k=>{this.error??=k,this.errorNeedsNewStack=!1})};this.encoder=new VideoEncoder({output:(h,p)=>{if(!this.alphaEncoder){u(h,null,p);return}const m=this.alphaFrameQueue.shift();y(m!==void 0),m?(this.alphaEncoder.encode(m,{keyFrame:h.type==="key"}),d++,m.close(),o.push({chunk:h,meta:p})):d===0?u(h,null,p):(c.push(l+d),o.push({chunk:h,meta:p}))},error:h=>{h.stack=t.stack,this.error??=h}}),this.encoder.configure(i),this.encodingConfig.alpha==="keep"&&(this.alphaEncoder=new VideoEncoder({output:(h,p)=>{d--;const m=o.shift();for(y(m!==void 0),u(m.chunk,h,m.meta),l++;c.length>0&&c[0]===l;){c.shift();const g=o.shift();y(g!==void 0),u(g.chunk,null,g.meta)}},error:h=>{h.stack=t.stack,this.error??=h}}),this.alphaEncoder.configure(i))}y(this.source._connectedTrack),this.muxer=this.source._connectedTrack.output._muxer,this.encoderInitialized=!0})()}async flushAndClose(e){e||this.checkForEncoderError(),this.customEncoder?(e||this.customEncoderCallSerializer.call(()=>this.customEncoder.flush()),await this.customEncoderCallSerializer.call(()=>this.customEncoder.close())):this.encoder&&(e||(await this.encoder.flush(),await this.alphaEncoder?.flush()),this.encoder.state!=="closed"&&this.encoder.close(),this.alphaEncoder&&this.alphaEncoder.state!=="closed"&&this.alphaEncoder.close(),this.alphaFrameQueue.forEach(t=>t?.close()),this.splitter?.close()),e||this.checkForEncoderError()}getQueueSize(){return this.customEncoder?this.customEncoderQueueSize:this.encoder?.encodeQueueSize??0}checkForEncoderError(){if(this.error)throw this.errorNeedsNewStack&&(this.error.stack=new Error().stack),this.error}}class im{constructor(e,t){this.lastFrame=null,typeof OffscreenCanvas<"u"?this.canvas=new OffscreenCanvas(e,t):(this.canvas=document.createElement("canvas"),this.canvas.width=e,this.canvas.height=t);const i=this.canvas.getContext("webgl2",{alpha:!0});if(!i)throw new Error("Couldn't acquire WebGL 2 context.");this.gl=i,this.colorProgram=this.createColorProgram(),this.alphaProgram=this.createAlphaProgram(),this.vao=this.createVAO(),this.sourceTexture=this.createTexture(),this.alphaResolutionLocation=this.gl.getUniformLocation(this.alphaProgram,"u_resolution"),this.gl.useProgram(this.colorProgram),this.gl.uniform1i(this.gl.getUniformLocation(this.colorProgram,"u_sourceTexture"),0),this.gl.useProgram(this.alphaProgram),this.gl.uniform1i(this.gl.getUniformLocation(this.alphaProgram,"u_sourceTexture"),0)}createVertexShader(){return this.createShader(this.gl.VERTEX_SHADER,`#version 300 es
|
|
24
|
+
in vec2 a_position;
|
|
25
|
+
in vec2 a_texCoord;
|
|
26
|
+
out vec2 v_texCoord;
|
|
27
|
+
|
|
28
|
+
void main() {
|
|
29
|
+
gl_Position = vec4(a_position, 0.0, 1.0);
|
|
30
|
+
v_texCoord = a_texCoord;
|
|
31
|
+
}
|
|
32
|
+
`)}createColorProgram(){const e=this.createVertexShader(),t=this.createShader(this.gl.FRAGMENT_SHADER,`#version 300 es
|
|
33
|
+
precision highp float;
|
|
34
|
+
|
|
35
|
+
uniform sampler2D u_sourceTexture;
|
|
36
|
+
in vec2 v_texCoord;
|
|
37
|
+
out vec4 fragColor;
|
|
38
|
+
|
|
39
|
+
void main() {
|
|
40
|
+
vec4 source = texture(u_sourceTexture, v_texCoord);
|
|
41
|
+
fragColor = vec4(source.rgb, 1.0);
|
|
42
|
+
}
|
|
43
|
+
`),i=this.gl.createProgram();return this.gl.attachShader(i,e),this.gl.attachShader(i,t),this.gl.linkProgram(i),i}createAlphaProgram(){const e=this.createVertexShader(),t=this.createShader(this.gl.FRAGMENT_SHADER,`#version 300 es
|
|
44
|
+
precision highp float;
|
|
45
|
+
|
|
46
|
+
uniform sampler2D u_sourceTexture;
|
|
47
|
+
uniform vec2 u_resolution; // The width and height of the canvas
|
|
48
|
+
in vec2 v_texCoord;
|
|
49
|
+
out vec4 fragColor;
|
|
50
|
+
|
|
51
|
+
// This function determines the value for a single byte in the YUV stream
|
|
52
|
+
float getByteValue(float byteOffset) {
|
|
53
|
+
float width = u_resolution.x;
|
|
54
|
+
float height = u_resolution.y;
|
|
55
|
+
|
|
56
|
+
float yPlaneSize = width * height;
|
|
57
|
+
|
|
58
|
+
if (byteOffset < yPlaneSize) {
|
|
59
|
+
// This byte is in the luma plane. Find the corresponding pixel coordinates to sample from
|
|
60
|
+
float y = floor(byteOffset / width);
|
|
61
|
+
float x = mod(byteOffset, width);
|
|
62
|
+
|
|
63
|
+
// Add 0.5 to sample the center of the texel
|
|
64
|
+
vec2 sampleCoord = (vec2(x, y) + 0.5) / u_resolution;
|
|
65
|
+
|
|
66
|
+
// The luma value is the alpha from the source texture
|
|
67
|
+
return texture(u_sourceTexture, sampleCoord).a;
|
|
68
|
+
} else {
|
|
69
|
+
// Write a fixed value for chroma and beyond
|
|
70
|
+
return 128.0 / 255.0;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
void main() {
|
|
75
|
+
// Each fragment writes 4 bytes (R, G, B, A)
|
|
76
|
+
float pixelIndex = floor(gl_FragCoord.y) * u_resolution.x + floor(gl_FragCoord.x);
|
|
77
|
+
float baseByteOffset = pixelIndex * 4.0;
|
|
78
|
+
|
|
79
|
+
vec4 result;
|
|
80
|
+
for (int i = 0; i < 4; i++) {
|
|
81
|
+
float currentByteOffset = baseByteOffset + float(i);
|
|
82
|
+
result[i] = getByteValue(currentByteOffset);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
fragColor = result;
|
|
86
|
+
}
|
|
87
|
+
`),i=this.gl.createProgram();return this.gl.attachShader(i,e),this.gl.attachShader(i,t),this.gl.linkProgram(i),i}createShader(e,t){const i=this.gl.createShader(e);return this.gl.shaderSource(i,t),this.gl.compileShader(i),this.gl.getShaderParameter(i,this.gl.COMPILE_STATUS)||console.error("Shader compile error:",this.gl.getShaderInfoLog(i)),i}createVAO(){const e=this.gl.createVertexArray();this.gl.bindVertexArray(e);const t=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,1,1,1,0]),i=this.gl.createBuffer();this.gl.bindBuffer(this.gl.ARRAY_BUFFER,i),this.gl.bufferData(this.gl.ARRAY_BUFFER,t,this.gl.STATIC_DRAW);const a=this.gl.getAttribLocation(this.colorProgram,"a_position"),n=this.gl.getAttribLocation(this.colorProgram,"a_texCoord");return this.gl.enableVertexAttribArray(a),this.gl.vertexAttribPointer(a,2,this.gl.FLOAT,!1,16,0),this.gl.enableVertexAttribArray(n),this.gl.vertexAttribPointer(n,2,this.gl.FLOAT,!1,16,8),e}createTexture(){const e=this.gl.createTexture();return this.gl.bindTexture(this.gl.TEXTURE_2D,e),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),e}updateTexture(e){this.lastFrame!==e&&((e.displayWidth!==this.canvas.width||e.displayHeight!==this.canvas.height)&&(this.canvas.width=e.displayWidth,this.canvas.height=e.displayHeight),this.gl.activeTexture(this.gl.TEXTURE0),this.gl.bindTexture(this.gl.TEXTURE_2D,this.sourceTexture),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,e),this.lastFrame=e)}extractColor(e){return this.updateTexture(e),this.gl.useProgram(this.colorProgram),this.gl.viewport(0,0,this.canvas.width,this.canvas.height),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.bindVertexArray(this.vao),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4),new VideoFrame(this.canvas,{timestamp:e.timestamp,duration:e.duration??void 0,alpha:"discard"})}extractAlpha(e){this.updateTexture(e),this.gl.useProgram(this.alphaProgram),this.gl.uniform2f(this.alphaResolutionLocation,this.canvas.width,this.canvas.height),this.gl.viewport(0,0,this.canvas.width,this.canvas.height),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.bindVertexArray(this.vao),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4);const{width:t,height:i}=this.canvas,a=Math.ceil(t/2)*Math.ceil(i/2),n=t*i+a*2,s=Math.ceil(n/(t*4));let o=new Uint8Array(4*t*s);this.gl.readPixels(0,0,t,s,this.gl.RGBA,this.gl.UNSIGNED_BYTE,o),o=o.subarray(0,n),y(o[t*i]===128),y(o[o.length-1]===128);const c={format:"I420",codedWidth:t,codedHeight:i,timestamp:e.timestamp,duration:e.duration??void 0,transfer:[o.buffer]};return new VideoFrame(o,c)}close(){this.gl.getExtension("WEBGL_lose_context")?.loseContext(),this.gl=null}}class eo extends ds{constructor(e){Yf(e),super(e.codec),this._encoder=new rm(this,e)}add(e,t){if(!(e instanceof lt))throw new TypeError("videoSample must be a VideoSample.");return this._encoder.add(e,!1,t)}_flushAndClose(e){return this._encoder.flushAndClose(e)}}class us extends ls{constructor(e){if(super(),this._connectedTrack=null,!Ot.includes(e))throw new TypeError(`Invalid audio codec '${e}'. Must be one of: ${Ot.join(", ")}.`);this._codec=e}}class am extends us{constructor(e){super(e)}add(e,t){if(!(e instanceof Le))throw new TypeError("packet must be an EncodedPacket.");if(e.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be added.");if(t!==void 0&&(!t||typeof t!="object"))throw new TypeError("meta, when provided, must be an object.");return this._ensureValidAdd(),this._connectedTrack.output._muxer.addEncodedAudioPacket(this._connectedTrack,e,t)}}class nm{constructor(e,t){this.source=e,this.encodingConfig=t,this.ensureEncoderPromise=null,this.encoderInitialized=!1,this.encoder=null,this.muxer=null,this.lastNumberOfChannels=null,this.lastSampleRate=null,this.isPcmEncoder=!1,this.outputSampleSize=null,this.writeOutputValue=null,this.customEncoder=null,this.customEncoderCallSerializer=new Ca,this.customEncoderQueueSize=0,this.lastEndSampleIndex=null,this.error=null,this.errorNeedsNewStack=!0}async add(e,t){try{if(this.checkForEncoderError(),this.source._ensureValidAdd(),this.lastNumberOfChannels!==null&&this.lastSampleRate!==null){if(e.numberOfChannels!==this.lastNumberOfChannels||e.sampleRate!==this.lastSampleRate)throw new Error(`Audio parameters must remain constant. Expected ${this.lastNumberOfChannels} channels at ${this.lastSampleRate} Hz, got ${e.numberOfChannels} channels at ${e.sampleRate} Hz.`)}else this.lastNumberOfChannels=e.numberOfChannels,this.lastSampleRate=e.sampleRate;this.encoderInitialized||(this.ensureEncoderPromise||this.ensureEncoder(e),this.encoderInitialized||await this.ensureEncoderPromise),y(this.encoderInitialized);{const i=Math.round(e.timestamp*e.sampleRate),a=Math.round((e.timestamp+e.duration)*e.sampleRate);if(this.lastEndSampleIndex===null)this.lastEndSampleIndex=a;else{const n=i-this.lastEndSampleIndex;if(n>=64){const s=new Tt({data:new Float32Array(n*e.numberOfChannels),format:"f32-planar",sampleRate:e.sampleRate,numberOfChannels:e.numberOfChannels,numberOfFrames:n,timestamp:this.lastEndSampleIndex/e.sampleRate});await this.add(s,!0)}this.lastEndSampleIndex+=e.numberOfFrames}}if(this.customEncoder){this.customEncoderQueueSize++;const i=e.clone(),a=this.customEncoderCallSerializer.call(()=>this.customEncoder.encode(i)).then(()=>this.customEncoderQueueSize--).catch(n=>this.error??=n).finally(()=>{i.close()});this.customEncoderQueueSize>=4&&await a,await this.muxer.mutex.currentPromise}else if(this.isPcmEncoder)await this.doPcmEncoding(e,t);else{y(this.encoder);const i=e.toAudioData();this.encoder.encode(i),i.close(),t&&e.close(),this.encoder.encodeQueueSize>=4&&await new Promise(a=>this.encoder.addEventListener("dequeue",a,{once:!0})),await this.muxer.mutex.currentPromise}}finally{t&&e.close()}}async doPcmEncoding(e,t){y(this.outputSampleSize),y(this.writeOutputValue);const{numberOfChannels:i,numberOfFrames:a,sampleRate:n,timestamp:s}=e,o=2048,c=[];for(let h=0;h<a;h+=o){const p=Math.min(o,e.numberOfFrames-h),m=p*i*this.outputSampleSize,g=new ArrayBuffer(m),b=new DataView(g);c.push({frameCount:p,view:b})}const l=e.allocationSize({planeIndex:0,format:"f32-planar"}),d=new Float32Array(l/Float32Array.BYTES_PER_ELEMENT);for(let h=0;h<i;h++){e.copyTo(d,{planeIndex:h,format:"f32-planar"});for(let p=0;p<c.length;p++){const{frameCount:m,view:g}=c[p];for(let b=0;b<m;b++)this.writeOutputValue(g,(b*i+h)*this.outputSampleSize,d[p*o+b])}}t&&e.close();const u={decoderConfig:{codec:this.encodingConfig.codec,numberOfChannels:i,sampleRate:n}};for(let h=0;h<c.length;h++){const{frameCount:p,view:m}=c[h],g=m.buffer,b=h*o,k=new Le(new Uint8Array(g),"key",s+b/n,p/n);this.encodingConfig.onEncodedPacket?.(k,u),await this.muxer.addEncodedAudioPacket(this.source._connectedTrack,k,u)}}ensureEncoder(e){const t=new Error;this.ensureEncoderPromise=(async()=>{const{numberOfChannels:i,sampleRate:a}=e,n=xn({numberOfChannels:i,sampleRate:a,...this.encodingConfig});this.encodingConfig.onEncoderConfig?.(n);const s=fn.find(o=>o.supports(this.encodingConfig.codec,n));if(s)this.customEncoder=new s,this.customEncoder.codec=this.encodingConfig.codec,this.customEncoder.config=n,this.customEncoder.onPacket=(o,c)=>{if(!(o instanceof Le))throw new TypeError("The first argument passed to onPacket must be an EncodedPacket.");if(c!==void 0&&(!c||typeof c!="object"))throw new TypeError("The second argument passed to onPacket must be an object or undefined.");this.encodingConfig.onEncodedPacket?.(o,c),this.muxer.addEncodedAudioPacket(this.source._connectedTrack,o,c).catch(l=>{this.error??=l,this.errorNeedsNewStack=!1})},await this.customEncoder.init();else if(ht.includes(this.encodingConfig.codec))this.initPcmEncoder();else{if(typeof AudioEncoder>"u")throw new Error("AudioEncoder is not supported by this browser.");if(!(await AudioEncoder.isConfigSupported(n)).supported)throw new Error(`This specific encoder configuration (${n.codec}, ${n.bitrate} bps, ${n.numberOfChannels} channels, ${n.sampleRate} Hz) is not supported by this browser. Consider using another codec or changing your audio parameters.`);this.encoder=new AudioEncoder({output:(c,l)=>{if(this.encodingConfig.codec==="aac"&&l?.decoderConfig){let u=!1;if(!l.decoderConfig.description||l.decoderConfig.description.byteLength<2?u=!0:u=Xn(yt(l.decoderConfig.description)).objectType===0,u){const h=Number(qe(n.codec.split(".")));l.decoderConfig.description=Bo({objectType:h,numberOfChannels:l.decoderConfig.numberOfChannels,sampleRate:l.decoderConfig.sampleRate})}}const d=Le.fromEncodedChunk(c);this.encodingConfig.onEncodedPacket?.(d,l),this.muxer.addEncodedAudioPacket(this.source._connectedTrack,d,l).catch(u=>{this.error??=u,this.errorNeedsNewStack=!1})},error:c=>{c.stack=t.stack,this.error??=c}}),this.encoder.configure(n)}y(this.source._connectedTrack),this.muxer=this.source._connectedTrack.output._muxer,this.encoderInitialized=!0})()}initPcmEncoder(){this.isPcmEncoder=!0;const e=this.encodingConfig.codec,{dataType:t,sampleSize:i,littleEndian:a}=hr(e);switch(this.outputSampleSize=i,i){case 1:t==="unsigned"?this.writeOutputValue=(n,s,o)=>n.setUint8(s,tt((o+1)*127.5,0,255)):t==="signed"?this.writeOutputValue=(n,s,o)=>{n.setInt8(s,tt(Math.round(o*128),-128,127))}:t==="ulaw"?this.writeOutputValue=(n,s,o)=>{const c=tt(Math.floor(o*32767),-32768,32767);n.setUint8(s,tu(c))}:t==="alaw"?this.writeOutputValue=(n,s,o)=>{const c=tt(Math.floor(o*32767),-32768,32767);n.setUint8(s,iu(c))}:y(!1);break;case 2:t==="unsigned"?this.writeOutputValue=(n,s,o)=>n.setUint16(s,tt((o+1)*32767.5,0,65535),a):t==="signed"?this.writeOutputValue=(n,s,o)=>n.setInt16(s,tt(Math.round(o*32767),-32768,32767),a):y(!1);break;case 3:t==="unsigned"?this.writeOutputValue=(n,s,o)=>Kn(n,s,tt((o+1)*83886075e-1,0,16777215),a):t==="signed"?this.writeOutputValue=(n,s,o)=>yd(n,s,tt(Math.round(o*8388607),-8388608,8388607),a):y(!1);break;case 4:t==="unsigned"?this.writeOutputValue=(n,s,o)=>n.setUint32(s,tt((o+1)*21474836475e-1,0,4294967295),a):t==="signed"?this.writeOutputValue=(n,s,o)=>n.setInt32(s,tt(Math.round(o*2147483647),-2147483648,2147483647),a):t==="float"?this.writeOutputValue=(n,s,o)=>n.setFloat32(s,o,a):y(!1);break;case 8:t==="float"?this.writeOutputValue=(n,s,o)=>n.setFloat64(s,o,a):y(!1);break;default:dr(i),y(!1)}}async flushAndClose(e){e||this.checkForEncoderError(),this.customEncoder?(e||this.customEncoderCallSerializer.call(()=>this.customEncoder.flush()),await this.customEncoderCallSerializer.call(()=>this.customEncoder.close())):this.encoder&&(e||await this.encoder.flush(),this.encoder.state!=="closed"&&this.encoder.close()),e||this.checkForEncoderError()}getQueueSize(){return this.customEncoder?this.customEncoderQueueSize:this.isPcmEncoder?0:this.encoder?.encodeQueueSize??0}checkForEncoderError(){if(this.error)throw this.errorNeedsNewStack&&(this.error.stack=new Error().stack),this.error}}class to extends us{constructor(e){$f(e),super(e.codec),this._encoder=new nm(this,e)}add(e){if(!(e instanceof Tt))throw new TypeError("audioSample must be an AudioSample.");return this._encoder.add(e,!1)}_flushAndClose(e){return this._encoder.flushAndClose(e)}}class sm extends ls{constructor(e){if(super(),this._connectedTrack=null,!sa.includes(e))throw new TypeError(`Invalid subtitle codec '${e}'. Must be one of: ${sa.join(", ")}.`);this._codec=e}}const om=["video","audio","subtitle"],en=r=>{if(!r||typeof r!="object")throw new TypeError("metadata must be an object.");if(r.languageCode!==void 0&&!_i(r.languageCode))throw new TypeError("metadata.languageCode, when provided, must be a three-letter, ISO 639-2/T language code.");if(r.name!==void 0&&typeof r.name!="string")throw new TypeError("metadata.name, when provided, must be a string.");if(r.disposition!==void 0&&Pd(r.disposition),r.maximumPacketCount!==void 0&&(!Number.isInteger(r.maximumPacketCount)||r.maximumPacketCount<0))throw new TypeError("metadata.maximumPacketCount, when provided, must be a non-negative integer.")};class Pn{constructor(e){if(this.state="pending",this._tracks=[],this._startPromise=null,this._cancelPromise=null,this._finalizePromise=null,this._mutex=new ii,this._metadataTags={},!e||typeof e!="object")throw new TypeError("options must be an object.");if(!(e.format instanceof Pc))throw new TypeError("options.format must be an OutputFormat.");if(!(e.target instanceof os))throw new TypeError("options.target must be a Target.");if(e.target._output)throw new Error("Target is already used for another output.");e.target._output=this,this.format=e.format,this.target=e.target,this._writer=e.target._createWriter(),this._muxer=e.format._createMuxer(this)}addVideoTrack(e,t={}){if(!(e instanceof ds))throw new TypeError("source must be a VideoSource.");if(en(t),t.rotation!==void 0&&![0,90,180,270].includes(t.rotation))throw new TypeError(`Invalid video rotation: ${t.rotation}. Has to be 0, 90, 180 or 270.`);if(!this.format.supportsVideoRotationMetadata&&t.rotation)throw new Error(`${this.format._name} does not support video rotation metadata.`);if(t.frameRate!==void 0&&(!Number.isFinite(t.frameRate)||t.frameRate<=0))throw new TypeError(`Invalid video frame rate: ${t.frameRate}. Must be a positive number.`);this._addTrack("video",e,t)}addAudioTrack(e,t={}){if(!(e instanceof us))throw new TypeError("source must be an AudioSource.");en(t),this._addTrack("audio",e,t)}addSubtitleTrack(e,t={}){if(!(e instanceof sm))throw new TypeError("source must be a SubtitleSource.");en(t),this._addTrack("subtitle",e,t)}setMetadataTags(e){if(dn(e),this.state!=="pending")throw new Error("Cannot set metadata tags after output has been started or canceled.");this._metadataTags=e}_addTrack(e,t,i){if(this.state!=="pending")throw new Error("Cannot add track after output has been started or canceled.");if(t._connectedTrack)throw new Error("Source is already used for a track.");const a=this.format.getSupportedTrackCounts(),n=this._tracks.reduce((l,d)=>l+(d.type===e?1:0),0),s=a[e].max;if(n===s)throw new Error(s===0?`${this.format._name} does not support ${e} tracks.`:`${this.format._name} does not support more than ${s} ${e} track${s===1?"":"s"}.`);const o=a.total.max;if(this._tracks.length===o)throw new Error(`${this.format._name} does not support more than ${o} tracks${o===1?"":"s"} in total.`);const c={id:this._tracks.length+1,output:this,type:e,source:t,metadata:i};if(c.type==="video"){const l=this.format.getSupportedVideoCodecs();if(l.length===0)throw new Error(`${this.format._name} does not support video tracks.`+this.format._codecUnsupportedHint(c.source._codec));if(!l.includes(c.source._codec))throw new Error(`Codec '${c.source._codec}' cannot be contained within ${this.format._name}. Supported video codecs are: ${l.map(d=>`'${d}'`).join(", ")}.`+this.format._codecUnsupportedHint(c.source._codec))}else if(c.type==="audio"){const l=this.format.getSupportedAudioCodecs();if(l.length===0)throw new Error(`${this.format._name} does not support audio tracks.`+this.format._codecUnsupportedHint(c.source._codec));if(!l.includes(c.source._codec))throw new Error(`Codec '${c.source._codec}' cannot be contained within ${this.format._name}. Supported audio codecs are: ${l.map(d=>`'${d}'`).join(", ")}.`+this.format._codecUnsupportedHint(c.source._codec))}else if(c.type==="subtitle"){const l=this.format.getSupportedSubtitleCodecs();if(l.length===0)throw new Error(`${this.format._name} does not support subtitle tracks.`+this.format._codecUnsupportedHint(c.source._codec));if(!l.includes(c.source._codec))throw new Error(`Codec '${c.source._codec}' cannot be contained within ${this.format._name}. Supported subtitle codecs are: ${l.map(d=>`'${d}'`).join(", ")}.`+this.format._codecUnsupportedHint(c.source._codec))}this._tracks.push(c),t._connectedTrack=c}async start(){const e=this.format.getSupportedTrackCounts();for(const i of om){const a=this._tracks.reduce((s,o)=>s+(o.type===i?1:0),0),n=e[i].min;if(a<n)throw new Error(n===e[i].max?`${this.format._name} requires exactly ${n} ${i} track${n===1?"":"s"}.`:`${this.format._name} requires at least ${n} ${i} track${n===1?"":"s"}.`)}const t=e.total.min;if(this._tracks.length<t)throw new Error(t===e.total.max?`${this.format._name} requires exactly ${t} track${t===1?"":"s"}.`:`${this.format._name} requires at least ${t} track${t===1?"":"s"}.`);if(this.state==="canceled")throw new Error("Output has been canceled.");return this._startPromise?(console.warn("Output has already been started."),this._startPromise):this._startPromise=(async()=>{this.state="started",this._writer.start();const i=await this._mutex.acquire();await this._muxer.start();const a=this._tracks.map(n=>n.source._start());await Promise.all(a),i()})()}getMimeType(){return this._muxer.getMimeType()}async cancel(){if(this._cancelPromise)return console.warn("Output has already been canceled."),this._cancelPromise;if(this.state==="finalizing"||this.state==="finalized"){console.warn("Output has already been finalized.");return}return this._cancelPromise=(async()=>{this.state="canceled";const e=await this._mutex.acquire(),t=this._tracks.map(i=>i.source._flushOrWaitForOngoingClose(!0));await Promise.all(t),await this._writer.close(),e()})()}async finalize(){if(this.state==="pending")throw new Error("Cannot finalize before starting.");if(this.state==="canceled")throw new Error("Cannot finalize after canceling.");return this._finalizePromise?(console.warn("Output has already been finalized."),this._finalizePromise):this._finalizePromise=(async()=>{this.state="finalizing";const e=await this._mutex.acquire(),t=this._tracks.map(i=>i.source._flushOrWaitForOngoingClose(!1));await Promise.all(t),await this._muxer.finalize(),await this._writer.flush(),await this._writer.finalize(),this.state="finalized",e()})()}}const ro=r=>{if(r!==void 0&&(!r||typeof r!="object"))throw new TypeError("options.video, when provided, must be an object.");if(r?.discard!==void 0&&typeof r.discard!="boolean")throw new TypeError("options.video.discard, when provided, must be a boolean.");if(r?.forceTranscode!==void 0&&typeof r.forceTranscode!="boolean")throw new TypeError("options.video.forceTranscode, when provided, must be a boolean.");if(r?.codec!==void 0&&!Nt.includes(r.codec))throw new TypeError(`options.video.codec, when provided, must be one of: ${Nt.join(", ")}.`);if(r?.bitrate!==void 0&&!(r.bitrate instanceof Xt)&&(!Number.isInteger(r.bitrate)||r.bitrate<=0))throw new TypeError("options.video.bitrate, when provided, must be a positive integer or a quality.");if(r?.width!==void 0&&(!Number.isInteger(r.width)||r.width<=0))throw new TypeError("options.video.width, when provided, must be a positive integer.");if(r?.height!==void 0&&(!Number.isInteger(r.height)||r.height<=0))throw new TypeError("options.video.height, when provided, must be a positive integer.");if(r?.fit!==void 0&&!["fill","contain","cover"].includes(r.fit))throw new TypeError("options.video.fit, when provided, must be one of 'fill', 'contain', or 'cover'.");if(r?.width!==void 0&&r.height!==void 0&&r.fit===void 0)throw new TypeError("When both options.video.width and options.video.height are provided, options.video.fit must also be provided.");if(r?.rotate!==void 0&&![0,90,180,270].includes(r.rotate))throw new TypeError("options.video.rotate, when provided, must be 0, 90, 180 or 270.");if(r?.allowRotationMetadata!==void 0&&typeof r.allowRotationMetadata!="boolean")throw new TypeError("options.video.allowRotationMetadata, when provided, must be a boolean.");if(r?.crop!==void 0&&es(r.crop,"options.video."),r?.frameRate!==void 0&&(!Number.isFinite(r.frameRate)||r.frameRate<=0))throw new TypeError("options.video.frameRate, when provided, must be a finite positive number.");if(r?.alpha!==void 0&&!["discard","keep"].includes(r.alpha))throw new TypeError("options.video.alpha, when provided, must be either 'discard' or 'keep'.");if(r?.keyFrameInterval!==void 0&&(!Number.isFinite(r.keyFrameInterval)||r.keyFrameInterval<0))throw new TypeError("options.video.keyFrameInterval, when provided, must be a non-negative number.");if(r?.process!==void 0&&typeof r.process!="function")throw new TypeError("options.video.process, when provided, must be a function.");if(r?.processedWidth!==void 0&&(!Number.isInteger(r.processedWidth)||r.processedWidth<=0))throw new TypeError("options.video.processedWidth, when provided, must be a positive integer.");if(r?.processedHeight!==void 0&&(!Number.isInteger(r.processedHeight)||r.processedHeight<=0))throw new TypeError("options.video.processedHeight, when provided, must be a positive integer.");if(r?.hardwareAcceleration!==void 0&&!["no-preference","prefer-hardware","prefer-software"].includes(r.hardwareAcceleration))throw new TypeError("options.video.hardwareAcceleration, when provided, must be 'no-preference', 'prefer-hardware' or 'prefer-software'.")},io=r=>{if(r!==void 0&&(!r||typeof r!="object"))throw new TypeError("options.audio, when provided, must be an object.");if(r?.discard!==void 0&&typeof r.discard!="boolean")throw new TypeError("options.audio.discard, when provided, must be a boolean.");if(r?.forceTranscode!==void 0&&typeof r.forceTranscode!="boolean")throw new TypeError("options.audio.forceTranscode, when provided, must be a boolean.");if(r?.codec!==void 0&&!Ot.includes(r.codec))throw new TypeError(`options.audio.codec, when provided, must be one of: ${Ot.join(", ")}.`);if(r?.bitrate!==void 0&&!(r.bitrate instanceof Xt)&&(!Number.isInteger(r.bitrate)||r.bitrate<=0))throw new TypeError("options.audio.bitrate, when provided, must be a positive integer or a quality.");if(r?.numberOfChannels!==void 0&&(!Number.isInteger(r.numberOfChannels)||r.numberOfChannels<=0))throw new TypeError("options.audio.numberOfChannels, when provided, must be a positive integer.");if(r?.sampleRate!==void 0&&(!Number.isInteger(r.sampleRate)||r.sampleRate<=0))throw new TypeError("options.audio.sampleRate, when provided, must be a positive integer.");if(r?.process!==void 0&&typeof r.process!="function")throw new TypeError("options.audio.process, when provided, must be a function.");if(r?.processedNumberOfChannels!==void 0&&(!Number.isInteger(r.processedNumberOfChannels)||r.processedNumberOfChannels<=0))throw new TypeError("options.audio.processedNumberOfChannels, when provided, must be a positive integer.");if(r?.processedSampleRate!==void 0&&(!Number.isInteger(r.processedSampleRate)||r.processedSampleRate<=0))throw new TypeError("options.audio.processedSampleRate, when provided, must be a positive integer.")},tn=2,rn=48e3;class hs{static async init(e){const t=new hs(e);return await t._init(),t}constructor(e){if(this._addedCounts={video:0,audio:0,subtitle:0},this._totalTrackCount=0,this._trackPromises=[],this._executed=!1,this._synchronizer=new lm,this._totalDuration=null,this._maxTimestamps=new Map,this._canceled=!1,this.onProgress=void 0,this._computeProgress=!1,this._lastProgress=0,this.isValid=!1,this.utilizedTracks=[],this.discardedTracks=[],!e||typeof e!="object")throw new TypeError("options must be an object.");if(!(e.input instanceof dc))throw new TypeError("options.input must be an Input.");if(!(e.output instanceof Pn))throw new TypeError("options.output must be an Output.");if(e.output._tracks.length>0||Object.keys(e.output._metadataTags).length>0||e.output.state!=="pending")throw new TypeError("options.output must be fresh: no tracks or metadata tags added and not started.");if(typeof e.video!="function"&&ro(e.video),typeof e.audio!="function"&&io(e.audio),e.trim!==void 0&&(!e.trim||typeof e.trim!="object"))throw new TypeError("options.trim, when provided, must be an object.");if(e.trim?.start!==void 0&&(!Number.isFinite(e.trim.start)||e.trim.start<0))throw new TypeError("options.trim.start, when provided, must be a non-negative number.");if(e.trim?.end!==void 0&&(!Number.isFinite(e.trim.end)||e.trim.end<0))throw new TypeError("options.trim.end, when provided, must be a non-negative number.");if(e.trim?.start!==void 0&&e.trim.end!==void 0&&e.trim.start>=e.trim.end)throw new TypeError("options.trim.start must be less than options.trim.end.");if(e.tags!==void 0&&(typeof e.tags!="object"||!e.tags)&&typeof e.tags!="function")throw new TypeError("options.tags, when provided, must be an object or a function.");if(typeof e.tags=="object"&&dn(e.tags),e.showWarnings!==void 0&&typeof e.showWarnings!="boolean")throw new TypeError("options.showWarnings, when provided, must be a boolean.");this._options=e,this.input=e.input,this.output=e.output;const{promise:t,resolve:i}=at();this._started=t,this._start=i}async _init(){this._startTimestamp=this._options.trim?.start??Math.max(await this.input.getFirstTimestamp(),0),this._endTimestamp=this._options.trim?.end??1/0;const e=await this.input.getTracks(),t=this.output.format.getSupportedTrackCounts();let i=1,a=1;for(const l of e){let d;if(l.isVideoTrack()?this._options.video&&(typeof this._options.video=="function"?(d=await this._options.video(l,i),ro(d),i++):d=this._options.video):l.isAudioTrack()?this._options.audio&&(typeof this._options.audio=="function"?(d=await this._options.audio(l,a),io(d),a++):d=this._options.audio):y(!1),d?.discard){this.discardedTracks.push({track:l,reason:"discarded_by_user"});continue}if(this._totalTrackCount===t.total.max){this.discardedTracks.push({track:l,reason:"max_track_count_reached"});continue}if(this._addedCounts[l.type]===t[l.type].max){this.discardedTracks.push({track:l,reason:"max_track_count_of_type_reached"});continue}l.isVideoTrack()?await this._processVideoTrack(l,d??{}):l.isAudioTrack()&&await this._processAudioTrack(l,d??{})}const n=await this.input.getMetadataTags();let s;if(this._options.tags){const l=typeof this._options.tags=="function"?await this._options.tags(n):this._options.tags;dn(l),s=l}else s=n;const o=(await this.input.getFormat()).mimeType===this.output.format.mimeType,c=n.raw===s.raw;if(n.raw&&c&&!o&&delete s.raw,this.output.setMetadataTags(s),this.isValid=this._totalTrackCount>=t.total.min&&this._addedCounts.video>=t.video.min&&this._addedCounts.audio>=t.audio.min&&this._addedCounts.subtitle>=t.subtitle.min,this._options.showWarnings??!0){const l=[],d=this.discardedTracks.filter(u=>u.reason!=="discarded_by_user");d.length>0&&l.push("Some tracks had to be discarded from the conversion:",d),this.isValid||l.push(`
|
|
88
|
+
|
|
89
|
+
`+this._getInvalidityExplanation().join("")),l.length>0&&console.warn(...l)}}_getInvalidityExplanation(){const e=[];if(this.discardedTracks.length===0)e.push("Due to missing tracks, this conversion cannot be executed.");else{const t=this.discardedTracks.every(i=>i.reason==="discarded_by_user"||i.reason==="no_encodable_target_codec");if(e.push("Due to discarded tracks, this conversion cannot be executed."),t){const i=this.discardedTracks.flatMap(a=>a.reason==="discarded_by_user"?[]:a.track.type==="video"?this.output.format.getSupportedVideoCodecs():a.track.type==="audio"?this.output.format.getSupportedAudioCodecs():this.output.format.getSupportedSubtitleCodecs());i.length===1?e.push(`
|
|
90
|
+
Tracks were discarded because your environment is not able to encode '${i[0]}'.`):e.push(`
|
|
91
|
+
Tracks were discarded because your environment is not able to encode any of the following codecs: ${i.map(a=>`'${a}'`).join(", ")}.`),i.includes("mp3")&&e.push(`
|
|
92
|
+
The @mediabunny/mp3-encoder extension package provides support for encoding MP3.`)}else e.push(`
|
|
93
|
+
Check the discardedTracks field for more info.`)}return e}async execute(){if(!this.isValid)throw new Error(`Cannot execute this conversion because its output configuration is invalid. Make sure to always check the isValid field before executing a conversion.
|
|
94
|
+
`+this._getInvalidityExplanation().join(""));if(this._executed)throw new Error("Conversion cannot be executed twice.");if(this._executed=!0,this.onProgress){this._computeProgress=!0,this._totalDuration=Math.min(await this.input.computeDuration()-this._startTimestamp,this._endTimestamp-this._startTimestamp);for(const e of this.utilizedTracks)this._maxTimestamps.set(e.id,0);this.onProgress?.(0)}await this.output.start(),this._start();try{await Promise.all(this._trackPromises)}catch(e){throw this._canceled||this.cancel(),e}if(this._canceled)throw new cm;await this.output.finalize(),this._computeProgress&&this.onProgress?.(1)}async cancel(){if(!(this.output.state==="finalizing"||this.output.state==="finalized")){if(this._canceled){console.warn("Conversion already canceled.");return}this._canceled=!0,await this.output.cancel()}}async _processVideoTrack(e,t){const i=e.codec;if(!i){this.discardedTracks.push({track:e,reason:"unknown_source_codec"});return}let a;const n=Hn(e.rotation+(t.rotate??0)),s=this.output.format.supportsVideoRotationMetadata&&(t.allowRotationMetadata??!0),[o,c]=n%180===0?[e.codedWidth,e.codedHeight]:[e.codedHeight,e.codedWidth],l=t.crop;l&&Jn(l,o,c);const[d,u]=l?[l.width,l.height]:[o,c];let h=d,p=u;const m=h/p,g=C=>Math.ceil(C/2)*2;t.width!==void 0&&t.height===void 0?(h=g(t.width),p=g(Math.round(h/m))):t.width===void 0&&t.height!==void 0?(p=g(t.height),h=g(Math.round(p*m))):t.width!==void 0&&t.height!==void 0&&(h=g(t.width),p=g(t.height));const b=await e.getFirstTimestamp(),k=!!t.forceTranscode||b<this._startTimestamp||!!t.frameRate||t.keyFrameInterval!==void 0||t.process!==void 0;let w=h!==d||p!==u||n!==0&&(!s||t.process!==void 0)||!!l;const T=t.alpha??"discard";let S=this.output.format.getSupportedVideoCodecs();if(!k&&!t.bitrate&&!w&&S.includes(i)&&(!t.codec||t.codec===i)){const C=new tm(i);a=C,this._trackPromises.push((async()=>{await this._started;const P=new Ai(e),I={decoderConfig:await e.getDecoderConfig()??void 0},R=Number.isFinite(this._endTimestamp)?await P.getPacket(this._endTimestamp,{metadataOnly:!0})??void 0:void 0;for await(const A of P.packets(void 0,R,{verifyKeyPackets:!0})){if(this._canceled)return;const x=A.clone({timestamp:A.timestamp-this._startTimestamp,sideData:T==="discard"?{}:A.sideData});y(x.timestamp>=0),this._reportProgress(e.id,x.timestamp),await C.add(x,I),this._synchronizer.shouldWait(e.id,x.timestamp)&&await this._synchronizer.wait(x.timestamp)}C.close(),this._synchronizer.closeTrack(e.id)})())}else{if(!await e.canDecode()){this.discardedTracks.push({track:e,reason:"undecodable_source_codec"});return}t.codec&&(S=S.filter(A=>A===t.codec));const P=t.bitrate??Zs,B=await em(S,{width:t.process&&t.processedWidth?t.processedWidth:h,height:t.process&&t.processedHeight?t.processedHeight:p,bitrate:P});if(!B){this.discardedTracks.push({track:e,reason:"no_encodable_target_codec"});return}const I={codec:B,bitrate:P,keyFrameInterval:t.keyFrameInterval,sizeChangeBehavior:t.fit??"passThrough",alpha:T,hardwareAcceleration:t.hardwareAcceleration},R=new eo(I);if(a=R,!w){const A=new Pn({format:new cs,target:new Kf}),x=new eo(I);A.addVideoTrack(x),await A.start();const U=await new mn(e).getSample(b);if(U)try{await x.add(U),U.close(),await A.finalize()}catch(V){console.info("Error when probing encoder support. Falling back to rerender path.",V),w=!0,A.cancel()}else await A.cancel()}w?this._trackPromises.push((async()=>{await this._started;const x=new uu(e,{width:h,height:p,fit:t.fit??"fill",rotation:n,crop:t.crop,poolSize:1,alpha:T==="keep"}).canvases(this._startTimestamp,this._endTimestamp),F=t.frameRate;let U=null,V=null,H=null;const D=async E=>{y(U),y(F!==void 0);const j=Math.round((E-V)*F);for(let J=1;J<j;J++){const ae=new lt(U,{timestamp:V+J/F,duration:1/F});await this._registerVideoSample(e,t,R,ae),ae.close()}};for await(const{canvas:E,timestamp:j,duration:J}of x){if(this._canceled)return;let ae=Math.max(j-this._startTimestamp,0);if(H=ae+J,F!==void 0){const be=Math.floor(ae*F)/F;if(U!==null)if(be<=V){U=E,V=be;continue}else await D(be);ae=be}const ce=new lt(E,{timestamp:ae,duration:F!==void 0?1/F:J});await this._registerVideoSample(e,t,R,ce),ce.close(),F!==void 0&&(U=E,V=ae)}U&&(y(H!==null),y(F!==void 0),await D(Math.floor(H*F)/F)),R.close(),this._synchronizer.closeTrack(e.id)})()):this._trackPromises.push((async()=>{await this._started;const A=new mn(e),x=t.frameRate;let F=null,U=null,V=null;const H=async D=>{y(F),y(x!==void 0);const E=Math.round((D-U)*x);for(let j=1;j<E;j++)F.setTimestamp(U+j/x),F.setDuration(1/x),await this._registerVideoSample(e,t,R,F);F.close()};for await(const D of A.samples(this._startTimestamp,this._endTimestamp)){if(this._canceled){D.close(),F?.close();return}let E=Math.max(D.timestamp-this._startTimestamp,0);if(V=E+D.duration,x!==void 0){const j=Math.floor(E*x)/x;if(F!==null)if(j<=U){F.close(),F=D,U=j;continue}else await H(j);E=j,D.setDuration(1/x)}D.setTimestamp(E),await this._registerVideoSample(e,t,R,D),x!==void 0?(F=D,U=E):D.close()}F&&(y(V!==null),y(x!==void 0),await H(Math.floor(V*x)/x)),R.close(),this._synchronizer.closeTrack(e.id)})())}this.output.addVideoTrack(a,{frameRate:t.frameRate,languageCode:_i(e.languageCode)?e.languageCode:void 0,name:e.name??void 0,disposition:e.disposition,rotation:w?0:n}),this._addedCounts.video++,this._totalTrackCount++,this.utilizedTracks.push(e)}async _registerVideoSample(e,t,i,a){if(this._canceled)return;this._reportProgress(e.id,a.timestamp);let n;if(!t.process)n=[a];else{let s=t.process(a);s instanceof Promise&&(s=await s),Array.isArray(s)||(s=s===null?[]:[s]),n=s.map(o=>o instanceof lt?o:typeof VideoFrame<"u"&&o instanceof VideoFrame?new lt(o):new lt(o,{timestamp:a.timestamp,duration:a.duration}))}for(const s of n){if(this._canceled)break;await i.add(s),this._synchronizer.shouldWait(e.id,s.timestamp)&&await this._synchronizer.wait(s.timestamp)}for(const s of n)s!==a&&s.close()}async _processAudioTrack(e,t){const i=e.codec;if(!i){this.discardedTracks.push({track:e,reason:"unknown_source_codec"});return}let a;const n=e.numberOfChannels,s=e.sampleRate,o=await e.getFirstTimestamp();let c=t.numberOfChannels??n,l=t.sampleRate??s,d=c!==n||l!==s||o<this._startTimestamp,u=this.output.format.getSupportedAudioCodecs();if(!t.forceTranscode&&!t.bitrate&&!d&&u.includes(i)&&(!t.codec||t.codec===i)&&!t.process){const h=new am(i);a=h,this._trackPromises.push((async()=>{await this._started;const p=new Ai(e),g={decoderConfig:await e.getDecoderConfig()??void 0},b=Number.isFinite(this._endTimestamp)?await p.getPacket(this._endTimestamp,{metadataOnly:!0})??void 0:void 0;for await(const k of p.packets(void 0,b)){if(this._canceled)return;const w=k.clone({timestamp:k.timestamp-this._startTimestamp});y(w.timestamp>=0),this._reportProgress(e.id,w.timestamp),await h.add(w,g),this._synchronizer.shouldWait(e.id,w.timestamp)&&await this._synchronizer.wait(w.timestamp)}h.close(),this._synchronizer.closeTrack(e.id)})())}else{if(!await e.canDecode()){this.discardedTracks.push({track:e,reason:"undecodable_source_codec"});return}let p=null;t.codec&&(u=u.filter(b=>b===t.codec));const m=t.bitrate??Zs,g=await Js(u,{numberOfChannels:t.process&&t.processedNumberOfChannels?t.processedNumberOfChannels:c,sampleRate:t.process&&t.processedSampleRate?t.processedSampleRate:l,bitrate:m});if(!g.some(b=>fi.includes(b))&&u.some(b=>fi.includes(b))&&(c!==tn||l!==rn)){const k=(await Js(u,{numberOfChannels:tn,sampleRate:rn,bitrate:m})).find(w=>fi.includes(w));k&&(d=!0,p=k,c=tn,l=rn)}else p=g[0]??null;if(p===null){this.discardedTracks.push({track:e,reason:"no_encodable_target_codec"});return}if(d)a=this._resampleAudio(e,t,p,c,l,m);else{const b=new to({codec:p,bitrate:m});a=b,this._trackPromises.push((async()=>{await this._started;const k=new Ws(e);for await(const w of k.samples(void 0,this._endTimestamp)){if(this._canceled){w.close();return}w.setTimestamp(w.timestamp-this._startTimestamp),await this._registerAudioSample(e,t,b,w),w.close()}b.close(),this._synchronizer.closeTrack(e.id)})())}}this.output.addAudioTrack(a,{languageCode:_i(e.languageCode)?e.languageCode:void 0,name:e.name??void 0,disposition:e.disposition}),this._addedCounts.audio++,this._totalTrackCount++,this.utilizedTracks.push(e)}async _registerAudioSample(e,t,i,a){if(this._canceled)return;this._reportProgress(e.id,a.timestamp);let n;if(!t.process)n=[a];else{let s=t.process(a);if(s instanceof Promise&&(s=await s),Array.isArray(s)||(s=s===null?[]:[s]),!s.every(o=>o instanceof Tt))throw new TypeError("The audio process function must return an AudioSample, null, or an array of AudioSamples.");n=s}for(const s of n){if(this._canceled)break;await i.add(s),this._synchronizer.shouldWait(e.id,s.timestamp)&&await this._synchronizer.wait(s.timestamp)}for(const s of n)s!==a&&s.close()}_resampleAudio(e,t,i,a,n,s){const o=new to({codec:i,bitrate:s});return this._trackPromises.push((async()=>{await this._started;const c=new dm({targetNumberOfChannels:a,targetSampleRate:n,startTime:this._startTimestamp,endTime:this._endTimestamp,onSample:async u=>{await this._registerAudioSample(e,t,o,u),u.close()}}),d=new Ws(e).samples(this._startTimestamp,this._endTimestamp);for await(const u of d){if(this._canceled){u.close();return}await c.add(u),u.close()}await c.finalize(),o.close(),this._synchronizer.closeTrack(e.id)})()),o}_reportProgress(e,t){if(!this._computeProgress)return;y(this._totalDuration!==null),this._maxTimestamps.set(e,Math.max(t,this._maxTimestamps.get(e)));const i=Math.min(...this._maxTimestamps.values()),a=tt(i/this._totalDuration,0,1);a!==this._lastProgress&&(this._lastProgress=a,this.onProgress?.(a))}}class cm extends Error{constructor(e="Conversion has been canceled."){super(e),this.name="ConversionCanceledError"}}const ao=5;class lm{constructor(){this.maxTimestamps=new Map,this.resolvers=[]}computeMinAndMaybeResolve(){let e=1/0;for(const[,t]of this.maxTimestamps)e=Math.min(e,t);for(let t=0;t<this.resolvers.length;t++){const i=this.resolvers[t];i.timestamp-e<ao&&(i.resolve(),this.resolvers.splice(t,1),t--)}return e}shouldWait(e,t){this.maxTimestamps.set(e,Math.max(t,this.maxTimestamps.get(e)??-1/0));const i=this.computeMinAndMaybeResolve();return t-i>=ao}wait(e){const{promise:t,resolve:i}=at();return this.resolvers.push({timestamp:e,resolve:i}),t}closeTrack(e){this.maxTimestamps.delete(e),this.computeMinAndMaybeResolve()}}class dm{constructor(e){this.sourceSampleRate=null,this.sourceNumberOfChannels=null,this.targetSampleRate=e.targetSampleRate,this.targetNumberOfChannels=e.targetNumberOfChannels,this.startTime=e.startTime,this.endTime=e.endTime,this.onSample=e.onSample,this.bufferSizeInFrames=Math.floor(this.targetSampleRate*5),this.bufferSizeInSamples=this.bufferSizeInFrames*this.targetNumberOfChannels,this.outputBuffer=new Float32Array(this.bufferSizeInSamples),this.bufferStartFrame=0,this.maxWrittenFrame=-1}doChannelMixerSetup(){y(this.sourceNumberOfChannels!==null);const e=this.sourceNumberOfChannels,t=this.targetNumberOfChannels;e===1&&t===2?this.channelMixer=(i,a)=>i[a*e]:e===1&&t===4?this.channelMixer=(i,a,n)=>i[a*e]*+(n<2):e===1&&t===6?this.channelMixer=(i,a,n)=>i[a*e]*+(n===2):e===2&&t===1?this.channelMixer=(i,a)=>{const n=a*e;return .5*(i[n]+i[n+1])}:e===2&&t===4?this.channelMixer=(i,a,n)=>i[a*e+n]*+(n<2):e===2&&t===6?this.channelMixer=(i,a,n)=>i[a*e+n]*+(n<2):e===4&&t===1?this.channelMixer=(i,a)=>{const n=a*e;return .25*(i[n]+i[n+1]+i[n+2]+i[n+3])}:e===4&&t===2?this.channelMixer=(i,a,n)=>{const s=a*e;return .5*(i[s+n]+i[s+n+2])}:e===4&&t===6?this.channelMixer=(i,a,n)=>{const s=a*e;return n<2?i[s+n]:n===2||n===3?0:i[s+n-2]}:e===6&&t===1?this.channelMixer=(i,a)=>{const n=a*e;return Math.SQRT1_2*(i[n]+i[n+1])+i[n+2]+.5*(i[n+4]+i[n+5])}:e===6&&t===2?this.channelMixer=(i,a,n)=>{const s=a*e;return i[s+n]+Math.SQRT1_2*(i[s+2]+i[s+n+4])}:e===6&&t===4?this.channelMixer=(i,a,n)=>{const s=a*e;return n<2?i[s+n]+Math.SQRT1_2*i[s+2]:i[s+n+2]}:this.channelMixer=(i,a,n)=>n<e?i[a*e+n]:0}ensureTempBufferSize(e){let t=this.tempSourceBuffer.length;for(;t<e;)t*=2;if(t!==this.tempSourceBuffer.length){const i=new Float32Array(t);i.set(this.tempSourceBuffer),this.tempSourceBuffer=i}}async add(e){this.sourceSampleRate===null&&(this.sourceSampleRate=e.sampleRate,this.sourceNumberOfChannels=e.numberOfChannels,this.tempSourceBuffer=new Float32Array(this.sourceSampleRate*this.sourceNumberOfChannels),this.doChannelMixerSetup());const t=e.numberOfFrames*e.numberOfChannels;this.ensureTempBufferSize(t);const i=e.allocationSize({planeIndex:0,format:"f32"}),a=new Float32Array(this.tempSourceBuffer.buffer,0,i/4);e.copyTo(a,{planeIndex:0,format:"f32"});const n=e.timestamp-this.startTime,s=e.numberOfFrames/this.sourceSampleRate,o=Math.min(n+s,this.endTime-this.startTime),c=Math.floor(n*this.targetSampleRate),l=Math.ceil(o*this.targetSampleRate);for(let d=c;d<l;d++){if(d<this.bufferStartFrame)continue;for(;d>=this.bufferStartFrame+this.bufferSizeInFrames;)await this.finalizeCurrentBuffer(),this.bufferStartFrame+=this.bufferSizeInFrames;const u=d-this.bufferStartFrame;y(u<this.bufferSizeInFrames);const m=(d/this.targetSampleRate-n)*this.sourceSampleRate,g=Math.floor(m),b=Math.ceil(m),k=m-g;for(let w=0;w<this.targetNumberOfChannels;w++){let T=0,S=0;g>=0&&g<e.numberOfFrames&&(T=this.channelMixer(a,g,w)),b>=0&&b<e.numberOfFrames&&(S=this.channelMixer(a,b,w));const C=T+k*(S-T),P=u*this.targetNumberOfChannels+w;this.outputBuffer[P]+=C}this.maxWrittenFrame=Math.max(this.maxWrittenFrame,u)}}async finalizeCurrentBuffer(){if(this.maxWrittenFrame<0)return;const e=(this.maxWrittenFrame+1)*this.targetNumberOfChannels,t=new Float32Array(e);t.set(this.outputBuffer.subarray(0,e));const i=this.bufferStartFrame/this.targetSampleRate,a=new Tt({format:"f32",sampleRate:this.targetSampleRate,numberOfChannels:this.targetNumberOfChannels,timestamp:i,data:t});await this.onSample(a),this.outputBuffer.fill(0),this.maxWrittenFrame=-1}finalize(){return this.finalizeCurrentBuffer()}}class wi{mediaStream=null;mediaRecorder=null;recordedChunks=[];startTime=0;static isSupported(){const e="RestrictionTarget"in self&&"fromElement"in RestrictionTarget,t="CropTarget"in self&&"fromElement"in CropTarget,i="mediaDevices"in navigator&&"getDisplayMedia"in navigator.mediaDevices;return(e||t)&&i}async startCapture(e,t){if(!wi.isSupported())throw new Error("Element Capture and Region Capture APIs are not supported in this browser. Please use Chrome 104+ on desktop.");try{this.mediaStream=await navigator.mediaDevices.getDisplayMedia({video:{width:{ideal:t.width},height:{ideal:t.height},frameRate:{ideal:t.fps}},audio:!1,preferCurrentTab:!0});const[i]=this.mediaStream.getVideoTracks();if(!i)throw new Error("No video track available");const n=i.getSettings().displaySurface;if(!n||n!=="browser")throw new Error(`Wrong tab selected! You selected "${n||"unknown"}" but capture requires "This tab" (browser). Please try again and select "This tab" from the browser dialog.`);let s=!1;if("RestrictionTarget"in self&&"fromElement"in RestrictionTarget)try{const l=await RestrictionTarget.fromElement(e);await i.restrictTo(l),await new Promise(d=>setTimeout(d,500)),s=await this.testVideoTrack(this.mediaStream)}catch{}if(!s&&"CropTarget"in self&&"fromElement"in CropTarget)try{const l=await CropTarget.fromElement(e);await i.cropTo(l),await new Promise(d=>setTimeout(d,500)),s=await this.testVideoTrack(this.mediaStream)}catch{}if(!s)throw new Error("Both Element Capture and Region Capture failed to produce valid frames. The element may have complex 3D transforms that prevent capture. Try simplifying the element structure or removing 3D transforms.");this.recordedChunks=[];const o=["video/mp4"];let c="";for(const l of o)if(MediaRecorder.isTypeSupported(l)){c=l;break}if(!c)throw new Error("No supported video codec found");this.mediaRecorder=new MediaRecorder(this.mediaStream,{mimeType:c,videoBitsPerSecond:this.getVideoBitrate(t.width,t.height)}),this.mediaRecorder.ondataavailable=l=>{l.data&&l.data.size>0&&this.recordedChunks.push(l.data)},this.mediaRecorder.onstop=()=>{const l=new Blob(this.recordedChunks,{type:c});t.onComplete?.(l),this.cleanup()},this.mediaRecorder.onerror=()=>{const l=new Error("MediaRecorder error");t.onError?.(l),this.cleanup()},this.startTime=Date.now(),this.mediaRecorder.start(100),await new Promise(l=>{this.mediaRecorder&&(this.mediaRecorder.onstart=()=>{l(void 0)})}),t.onReadyToRecord?.(),t.onProgress&&this.trackProgress(t.duration*1e3,t.onProgress)}catch(i){throw this.cleanup(),i}}async testVideoTrack(e){return new Promise(t=>{const i=document.createElement("video");i.srcObject=e,i.muted=!0,i.playsInline=!0;const a=setTimeout(()=>{i.remove(),t(!1)},3e3);i.onloadedmetadata=()=>{i.play().then(()=>{setTimeout(()=>{const n=document.createElement("canvas");n.width=i.videoWidth||100,n.height=i.videoHeight||100;const s=n.getContext("2d");let o=!1;if(s)try{s.drawImage(i,0,0);const c=s.getImageData(0,0,n.width,n.height);for(let l=0;l<c.data.length;l+=4){const d=c.data[l],u=c.data[l+1],h=c.data[l+2],p=c.data[l+3];if(d>0||u>0||h>0||p>0){o=!0;break}}}catch{}clearTimeout(a),i.remove(),n.remove(),t(o)},500)}).catch(()=>{clearTimeout(a),i.remove(),t(!1)})},i.onerror=()=>{clearTimeout(a),i.remove(),t(!1)}})}stopCapture(){this.mediaRecorder&&this.mediaRecorder.state!=="inactive"&&this.mediaRecorder.stop()}trackProgress(e,t){const i=setInterval(()=>{const a=Date.now()-this.startTime,n=Math.min(a/e*100,100);t(n),n>=100&&clearInterval(i)},100)}getVideoBitrate(e,t){const a=e*t*.1*30;return Math.max(25e5,Math.min(2e7,a))}cleanup(){this.mediaStream&&(this.mediaStream.getTracks().forEach(e=>e.stop()),this.mediaStream=null),this.mediaRecorder=null}static downloadBlob(e,t){const i=URL.createObjectURL(e),a=document.createElement("a");a.href=i,a.download=t,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(i)}static async convertToMp4(e,t){console.log("Starting WebM to MP4 conversion..."),console.log("Input file size:",e.size);const i=new dc({source:new Eh(e),formats:Ih}),a=new xc,n=new Pn({format:new cs,target:a}),s=await hs.init({input:i,output:n});if(s.onProgress=c=>{const l=Math.round(c*100);console.log(`Conversion progress: ${l}%`),t?.(l)},await s.execute(),console.log("Conversion complete"),!a.buffer)throw new Error("Conversion failed: no output buffer");const o=new Blob([a.buffer],{type:"video/mp4"});return console.log("Output file size:",o.size,"bytes"),console.log("Compression ratio:",((1-o.size/e.size)*100).toFixed(2)+"%"),o}}var um=W("<!> Export Video",1),hm=W('<div class="space-y-3"><p class="text-xs text-muted-foreground"> </p> <!> <div class="flex items-center justify-between"><span class="text-[10px] text-muted-foreground"> </span> <!></div></div>'),fm=W('<div class="flex items-start gap-1.5 text-xs text-destructive"><!> <span> </span></div>'),mm=W('<div class="space-y-3"><!> <div class="space-y-1.5"><p class="text-[10px] font-medium tracking-wider text-muted-foreground uppercase">Resolution</p> <!></div> <!></div>'),pm=W("<!> <!>",1);function E0(r,e){pe(e,!0);let t=he(e,"projectId",3,null),i=he(e,"disabled",3,!1);const a=L(ei),n=L(()=>f(a).project),s=L(()=>{const R=f(n).state.width,A=f(n).state.height;return`${R}x${A}`});function o(R){const[A,x]=R.split("x").map(Number);A&&x&&f(n).updateProject({width:A,height:x})}let c=K(!1),l=K(!1),d=K(!1),u=K(0),h=K(null),p=K("ready"),m=new wi,g=K(null);const b=L(()=>tl()?"local":t()?"server":"browser"),k=L(()=>{if(f(d))return"Preparing frames…";if(f(b)==="server"){if(f(p)==="initializing")return"Initializing render engine…";if(f(p)==="capturing")return"Capturing frames…";if(f(p)==="encoding")return"Encoding video…";if(f(p)==="done")return"Download starting…"}return"Recording video…"});async function w(){v(h,null),Rt("export_started",{mode:f(b),width:f(n).state.width,height:f(n).state.height,fps:f(n).state.fps}),f(b)==="local"?await T():f(b)==="server"?await S():await C()}async function T(){const R=crypto.randomUUID();v(l,!0),v(u,0),v(p,"initializing");let A;try{const x=await fetch(`/api/local/render?renderId=${R}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({width:f(n).state.width,height:f(n).state.height,fps:f(n).state.fps})});if(!x.ok)throw new Error(await x.text()||`Export failed (${x.status})`);await new Promise((U,V)=>{const H=new EventSource(`/api/local/render?renderId=${R}`);A=H,H.onmessage=D=>{try{const E=JSON.parse(D.data);v(u,E.percent,!0),v(p,E.phase,!0),E.phase==="done"?(H.close(),U()):E.phase==="error"&&(H.close(),V(new Error(E.error||"Render failed.")))}catch(E){console.error("Error parsing render event:",E)}},H.onerror=()=>{H.close(),V(new Error("Lost connection to render."))}});const F=document.createElement("a");F.href=`/api/local/render?renderId=${R}&download=1`,F.download="output.mp4",document.body.appendChild(F),F.click(),document.body.removeChild(F),v(c,!1)}catch(x){v(h,x instanceof Error?x.message:"Export failed. Is Playwright installed?",!0),v(p,"error")}finally{A?.close(),v(l,!1),v(u,0)}}async function S(){if(!t())return;const R=crypto.randomUUID();v(l,!0),v(u,0),v(p,"initializing");let A;try{v(g,new AbortController,!0);const x=await fetch(`/api/export/${t()}?renderId=${R}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({width:f(n).state.width,height:f(n).state.height,fps:f(n).state.fps}),signal:f(g).signal});if(!x.ok)throw new Error(await x.text()||`Export failed (${x.status})`);await new Promise((V,H)=>{const D=new EventSource(`/api/export/${t()}?renderId=${R}`);A=D,D.onmessage=E=>{try{const j=JSON.parse(E.data);v(u,j.percent,!0),v(p,j.phase,!0),j.phase==="done"?(D.close(),V()):j.phase==="error"&&(D.close(),H(new Error(j.error||"Server export failed.")))}catch(j){console.error("Error parsing server event:",j)}},D.onerror=()=>{D.close(),H(new Error("Lost connection to render progress."))}});const F=`/api/export/${t()}?renderId=${R}&download=1&projectId=${t()}`,U=document.createElement("a");U.href=F,document.body.appendChild(U),U.click(),document.body.removeChild(U),Rt("export_completed",{mode:"server"}),v(c,!1)}catch(x){if(x instanceof Error&&x.name==="AbortError")return;v(h,x instanceof Error?x.message:"Export failed. Please try again.",!0),Rt("export_failed",{mode:"server",error:f(h)}),v(p,"error")}finally{A?.close(),v(l,!1),v(u,0),v(g,null)}}async function C(){if(v(l,!0),v(u,0),!wi.isSupported()){v(h,"Video capture not supported. Use Chrome 104+ on desktop."),v(l,!1);return}const R=document.getElementById("project-viewport");if(!R){v(h,"Canvas element not found."),v(l,!1);return}const A=f(n).viewport.zoom,x={...f(n).viewport.pan};try{f(n).pause(),f(n).setCurrentTime(0),f(n).setZoom(1),f(n).setPan(0,0),v(d,!0),await Promise.all([new Promise(F=>setTimeout(F,300)),f(n).prepareRecording()]),v(d,!1),v(c,!1),f(n).isRecording=!0,await new Promise(F=>setTimeout(F,500)),await m.startCapture(R,{width:f(n).state.width,height:f(n).state.height,fps:f(n).state.fps,duration:f(n).state.duration,onReadyToRecord:()=>{f(n).play();const F=setInterval(()=>{!f(n).isPlaying&&f(l)&&(clearInterval(F),m.stopCapture())},100)},onProgress:F=>{v(u,F,!0)},onComplete:async F=>{try{wi.downloadBlob(F,`${f(n).state.name||"video"}.mp4`),Rt("export_completed",{mode:"browser"})}catch(U){v(h,U instanceof Error?U.message:"Failed to save video",!0),Rt("export_failed",{mode:"browser",error:f(h)})}f(n).setCurrentTime(0),f(n).setZoom(A),f(n).setPan(x.x,x.y),v(l,!1),v(d,!1),f(n).isRecording=!1,f(n).clearFrameCache(),v(u,0)},onError:F=>{v(h,F.message||"An error occurred during export",!0),Rt("export_failed",{mode:"browser",error:f(h)}),f(n).pause(),f(n).setCurrentTime(0),f(n).setZoom(A),f(n).setPan(x.x,x.y),v(l,!1),f(n).isRecording=!1,f(n).clearFrameCache(),v(u,0)}})}catch(F){v(h,F instanceof Error?F.message:"Export failed. Please try again.",!0),Rt("export_failed",{mode:"browser",error:f(h)}),f(n).pause(),f(n).setCurrentTime(0),f(n).setZoom(A),f(n).setPan(x.x,x.y),v(l,!1),v(d,!1),f(n).isRecording=!1,f(n).clearFrameCache(),v(u,0)}}function P(){f(b)==="server"?f(g)?.abort():m.stopCapture(),f(n).pause(),f(n).setCurrentTime(0),v(l,!1),v(d,!1),f(n).isRecording=!1,f(n).clearFrameCache(),v(u,0)}var B=ne(),I=Q(B);ve(I,()=>Xi,(R,A)=>{A(R,{get open(){return f(c)},set open(x){v(c,x,!0)},children:(x,F)=>{var U=pm(),V=Q(U);{const D=(E,j)=>{Ve(E,Ee({variant:"default",get disabled(){return i()}},()=>j?.().props,{children:(ae,ce)=>{var be=um(),Be=Q(be);{var Te=me=>{cr(me,{class:"mr-1.5 size-4 animate-spin"})},oe=me=>{rl(me,{class:"mr-1.5 size-4"})};te(Be,me=>{f(l)?me(Te):me(oe,-1)})}we(),_(ae,be)},$$slots:{default:!0}}))};ve(V,()=>Qi,(E,j)=>{j(E,{child:D,$$slots:{child:!0}})})}var H=q(V,2);ve(H,()=>Gi,(D,E)=>{E(D,{align:"end",class:"w-56 p-3",children:(j,J)=>{var ae=ne(),ce=Q(ae);{var be=Te=>{var oe=hm(),me=N(oe),Ae=N(me,!0);M(me);var xe=q(me,2);{let de=L(()=>f(d)?f(n).preparingProgress:f(u));Co(xe,{get value(){return f(de)},class:"h-1.5"})}var ee=q(xe,2),z=N(ee),$=N(z);M(z);var Z=q(z,2);Ve(Z,{variant:"ghost",size:"sm",class:"h-6 px-2 text-xs",onclick:P,children:(de,Se)=>{we();var ue=st("Cancel");_(de,ue)},$$slots:{default:!0}}),M(ee),M(oe),fe(de=>{ye(Ae,f(k)),ye($,`${de??""}%`)},[()=>Math.round(f(d)?f(n).preparingProgress:f(u))]),_(Te,oe)},Be=Te=>{var oe=mm(),me=N(oe);{var Ae=$=>{var Z=fm(),de=N(Z);Il(de,{class:"mt-0.5 size-3 shrink-0"});var Se=q(de,2),ue=N(Se,!0);M(Se),M(Z),fe(()=>ye(ue,f(h))),_($,Z)};te(me,$=>{f(h)&&$(Ae)})}var xe=q(me,2),ee=q(N(xe),2);Oc(ee,{get value(){return f(s)},onValueChange:o}),M(xe);var z=q(xe,2);Ve(z,{class:"w-full",onclick:w,children:($,Z)=>{we();var de=st("Export");_($,de)},$$slots:{default:!0}}),M(oe),_(Te,oe)};te(ce,Te=>{f(l)?Te(be):Te(Be,-1)})}_(j,ae)},$$slots:{default:!0}})}),_(x,U)},$$slots:{default:!0}})}),_(r,B),ge()}var gm=W('<div class="streaming-glow streaming-glow--inset pointer-events-none absolute z-4 svelte-31zg4z"></div>'),bm=W('<div class="streaming-glow pointer-events-none absolute z-4 svelte-31zg4z"></div>');function ym(r,e){let t=he(e,"inset",3,!1);var i=ne(),a=Q(i);{var n=s=>{var o=ne(),c=Q(o);{var l=u=>{var h=gm();_(u,h)},d=u=>{var h=bm();let p;fe(()=>p=bo(h,"",p,{width:`${e.width??""}px`,height:`${e.height??""}px`,left:e.left,top:e.top})),_(u,h)};te(c,u=>{t()?u(l):u(d,-1)})}_(s,o)};te(a,s=>{e.active&&s(n)})}_(r,i)}const A0=Di("aelvq6/deleteAsset"),wm=go("aelvq6/getUserAssets"),km=Di("ssr7vi/confirmUpload"),vm=Di("ssr7vi/requestUpload");async function Qr(r,e,t,i,a){const n=await vm({fileName:e,mimeType:r.type,size:r.size,mediaTypeHint:t,duration:a});if(!n.success)throw new Error(n.error);const{uploadUrl:s,key:o,fileUrl:c,assetId:l,originalName:d,mediaType:u}=n.data,h=await fetch(s,{method:"PUT",headers:{"Content-Type":r.type},body:r});if(!h.ok)throw new Error(`Upload failed (${h.status})`);const p=await km({assetId:l,key:o,fileUrl:c,originalName:d,mimeType:r.type,mediaType:u,duration:a&&isFinite(a)?Math.floor(a):null});if(!p.success)throw new Error(p.error);return{url:c,key:o,fileName:d,duration:a}}function Bi(r,e){const t=new Date().toISOString().replace(/[:.]/g,"-");return`${r}-${t}.${e}`}function Ac(r){const e=Math.floor(r/60),t=r%60;return`${e}:${t.toString().padStart(2,"0")}`}function Fa(r){if(r instanceof DOMException){if(r.name==="NotAllowedError"||r.name==="PermissionDeniedError")return{type:"permission",message:"Permission denied. Please allow camera/microphone access in your browser settings."};if(r.name==="NotFoundError")return{type:"unsupported",message:"No camera or microphone found on this device."};if(r.name==="NotSupportedError")return{type:"unsupported",message:"Your browser does not support this feature. Please use Chrome, Firefox, or Safari."}}return r instanceof Error?{type:"unknown",message:r.message}:{type:"unknown",message:"An unknown error occurred"}}function ut(r){r&&r.getTracks().forEach(e=>e.stop())}var Tm=W("<!> <!>",1);function no(r,e){pe(e,!0);let t=he(e,"ref",15,null),i=he(e,"orientation",3,"vertical"),a=Oe(e,["$$slots","$$events","$$legacy","ref","class","orientation","children"]);var n=ne(),s=Q(n);{let o=L(()=>xi("flex touch-none p-px transition-colors select-none",i()==="vertical"&&"h-full w-2.5 border-l border-l-transparent",i()==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent",e.class));ve(s,()=>ad,(c,l)=>{l(c,Ee({"data-slot":"scroll-area-scrollbar",get orientation(){return i()},get class(){return f(o)}},()=>a,{get ref(){return t()},set ref(d){t(d)},children:(d,u)=>{var h=Tm(),p=Q(h);Xe(p,()=>e.children??ot);var m=q(p,2);ve(m,()=>od,(g,b)=>{b(g,{"data-slot":"scroll-area-thumb",class:"relative flex-1 rounded-full bg-border"})}),_(d,h)},$$slots:{default:!0}}))})}_(r,n),ge()}var Sm=W("<!> <!> <!> <!>",1);function Fc(r,e){pe(e,!0);let t=he(e,"ref",15,null),i=he(e,"orientation",3,"vertical"),a=he(e,"scrollbarXClasses",3,""),n=he(e,"scrollbarYClasses",3,""),s=he(e,"viewportClass",3,""),o=Oe(e,["$$slots","$$events","$$legacy","ref","class","orientation","scrollbarXClasses","scrollbarYClasses","viewportClass","children"]);var c=ne(),l=Q(c);{let d=L(()=>xi("relative min-h-0",e.class));ve(l,()=>Xl,(u,h)=>{h(u,Ee({"data-slot":"scroll-area",get class(){return f(d)}},()=>o,{children:(p,m)=>{var g=Sm(),b=Q(g);{let P=L(()=>xi("size-full rounded-[inherit] ring-ring/10 outline-ring/50 transition-[color,box-shadow] focus-visible:ring-4 focus-visible:outline-1 dark:ring-ring/20 dark:outline-ring/40",s()));ve(b,()=>$l,(B,I)=>{I(B,{"data-slot":"scroll-area-viewport",get class(){return f(P)},get ref(){return t()},set ref(R){t(R)},children:(R,A)=>{var x=ne(),F=Q(x);Xe(F,()=>e.children??ot),_(R,x)},$$slots:{default:!0}})})}var k=q(b,2);{var w=P=>{no(P,{orientation:"vertical",get class(){return n()}})};te(k,P=>{(i()==="vertical"||i()==="both")&&P(w)})}var T=q(k,2);{var S=P=>{no(P,{orientation:"horizontal",get class(){return a()}})};te(T,P=>{(i()==="horizontal"||i()==="both")&&P(S)})}var C=q(T,2);ve(C,()=>dd,(P,B)=>{B(P,{})}),_(p,g)},$$slots:{default:!0}}))})}_(r,c),ge()}var xm=W('<img class="size-full object-cover" loading="lazy"/>'),Pm=W('<video class="size-full object-cover" loop="" preload="metadata"></video>',2),Cm=W('<audio preload="metadata" loop=""></audio> <!>',1),_m=W('<span class="absolute right-0 bottom-0 left-0 bg-black/60 px-0.5 py-px text-center text-[8px] leading-tight text-white"> </span>'),Im=W('<div class="shrink-0 opacity-0 transition-opacity group-hover:opacity-100"><!></div>'),Em=W('<button type="button"><div class="relative flex size-10 shrink-0 items-center justify-center overflow-hidden rounded bg-muted" role="img"><!> <!></div> <div class="min-w-0 flex-1"><p class="truncate text-xs font-medium"> </p> <div class="mt-0.5 flex flex-wrap items-center gap-x-1.5 gap-y-0 text-[10px] text-muted-foreground"><span> </span> <span class="text-muted-foreground/40">·</span> <span class="capitalize"> </span> <span class="text-muted-foreground/40">·</span> <span> </span></div></div> <!></button>');function Am(r,e){pe(e,!0);let t=he(e,"selected",3,!1);function i(D){const E=D.dataset.src;if(!E)return;const j=D.parentElement??D,J=new IntersectionObserver(([ae])=>{ae.isIntersecting&&(D.src=E,J.disconnect())},{rootMargin:"100px"});return J.observe(j),{destroy:()=>J.disconnect()}}function a(D){switch(D){case"image":return an;case"video":return Zi;case"audio":return Uc;default:return El}}function n(D){const E=D.currentTarget.querySelector("video, audio");E&&E.play().catch(()=>{})}function s(D){const E=D.currentTarget.querySelector("video, audio");E&&(E.pause(),E.currentTime=0)}const o=L(()=>a(e.asset.mediaType));let c=K(!1);const l=L(()=>new Date(e.asset.createdAt).toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"}));var d=Em(),u=N(d),h=N(u);{var p=D=>{Rl(D,{class:"size-4 text-destructive"})},m=D=>{var E=xm();fe(()=>{gt(E,"src",e.asset.url),gt(E,"alt",e.asset.originalName)}),tr("error",E,()=>v(c,!0)),Mc(E),_(D,E)},g=D=>{var E=Pm();ms(E,j=>i?.(j)),fe(()=>gt(E,"data-src",e.asset.url)),tr("error",E,()=>v(c,!0)),_(D,E)},b=D=>{var E=Cm(),j=Q(E);ms(j,ae=>i?.(ae));var J=q(j,2);ve(J,()=>f(o),(ae,ce)=>{ce(ae,{class:"size-4 text-muted-foreground"})}),fe(()=>gt(j,"data-src",e.asset.url)),tr("error",j,()=>v(c,!0)),_(D,E)},k=D=>{var E=ne(),j=Q(E);ve(j,()=>f(o),(J,ae)=>{ae(J,{class:"size-4 text-muted-foreground"})}),_(D,E)};te(h,D=>{f(c)?D(p):e.asset.mediaType==="image"?D(m,1):e.asset.mediaType==="video"?D(g,2):e.asset.mediaType==="audio"?D(b,3):D(k,-1)})}var w=q(h,2);{var T=D=>{var E=_m(),j=N(E,!0);M(E),fe(J=>ye(j,J),[()=>mo(e.asset.duration)]),_(D,E)};te(w,D=>{e.asset.duration&&D(T)})}M(u);var S=q(u,2),C=N(S),P=N(C,!0);M(C);var B=q(C,2),I=N(B),R=N(I,!0);M(I);var A=q(I,4),x=N(A,!0);M(A);var F=q(A,4),U=N(F,!0);M(F),M(B),M(S);var V=q(S,2);{var H=D=>{var E=Im(),j=N(E);Xe(j,()=>e.actions),M(E),_(D,E)};te(V,D=>{e.actions&&D(H)})}M(d),fe(D=>{Si(d,1,`group flex w-full items-center gap-3 px-3 py-2 text-left transition-colors hover:bg-muted/50 ${t()?"bg-primary/10 ring-1 ring-primary/30":""}`),gt(u,"aria-label",e.asset.originalName),ye(P,e.asset.originalName),ye(R,D),ye(x,e.asset.mediaType),ye(U,f(l))},[()=>il(e.asset.size)]),_t("click",d,()=>e.onclick?.(e.asset)),tr("mouseenter",u,n),tr("mouseleave",u,s),_(r,d),ge()}Jr(["click"]);const Fm=Di("5mu9ty/analyzeMediaAsset"),F0=go("5mu9ty/getMediaAnnotation"),Bm={image:10*1024*1024,video:100*1024*1024,audio:50*1024*1024},fa=.95;var Rm=W("<!> Stop Recording",1),zm=W('<p class="mt-1 text-center text-xs text-destructive">Approaching size limit — recording will stop automatically</p>'),Dm=W('<div class="rounded border-2 border-destructive bg-destructive/10 p-3 text-center"><div class="mb-2 flex items-center justify-center gap-2"><div class="h-2 w-2 animate-pulse rounded-full bg-destructive"></div> <span class="text-sm font-medium">Recording...</span></div> <div class="mb-2 font-mono text-2xl tabular-nums"> </div> <!> <!></div>'),Mm=W("<!> Record Audio",1),Nm=W('<p class="text-xs text-destructive"> </p>'),Om=W('<div class="space-y-2"><!> <!></div>');function Um(r,e){pe(e,!0);const t=L(ei);let i=K(!1),a=K(""),n=K(null),s=K(null),o=K(Ri([])),c=K(0),l=K(0),d=null,u=0,h=L(()=>!e.maxSizeBytes||f(l)===0?!1:f(l)>=e.maxSizeBytes*fa*.75);async function p(){try{v(a,""),v(s,await navigator.mediaDevices.getUserMedia({audio:!0}),!0);const I="audio/mp4";if(!MediaRecorder.isTypeSupported(I))throw new Error("Your browser does not support M4A recording. Please use Safari.");v(n,new MediaRecorder(f(s),{mimeType:I}),!0),v(o,[],!0),v(c,0),v(l,0),u=Date.now(),f(n).ondataavailable=R=>{R.data.size>0&&(f(o).push(R.data),v(l,f(l)+R.data.size),e.maxSizeBytes&&f(l)>=e.maxSizeBytes*fa&&m())},f(n).onstop=async()=>{ut(f(s)),v(s,null),g()},f(n).start(1e3),v(i,!0),d=setInterval(()=>{v(c,(Date.now()-u)/1e3)},100)}catch(I){v(a,Fa(I).message,!0),console.error("Recording error:",I),ut(f(s)),v(s,null)}}function m(){f(n)&&f(i)&&(f(n).stop(),v(i,!1),d&&(clearInterval(d),d=null))}async function g(){const I=new Blob(f(o),{type:"audio/mp4"}),R=Bi("recording","m4a");let A=f(c);try{A=await b(I)}catch{}e.onRecordingComplete({blob:I,fileName:R,duration:A,mediaType:"audio"})}function b(I){return new Promise(R=>{const A=URL.createObjectURL(I),x=document.createElement("audio");x.preload="metadata",x.onloadedmetadata=()=>{URL.revokeObjectURL(A),R(isFinite(x.duration)&&x.duration>0?x.duration:1)},x.onerror=()=>{URL.revokeObjectURL(A),R(1)},x.src=A})}async function k(){await zt.requireLogin("save your project",()=>{zt.requireCreateProject(f(t),p)})}Qe(()=>()=>{d&&clearInterval(d),ut(f(s))});var w=Om(),T=N(w);{var S=I=>{var R=Dm(),A=q(N(R),2),x=N(A,!0);M(A);var F=q(A,2);Ve(F,{variant:"destructive",size:"sm",onclick:m,children:(H,D)=>{var E=Rm(),j=Q(E);Cn(j,{class:"mr-1 size-3"}),we(),_(H,E)},$$slots:{default:!0}});var U=q(F,2);{var V=H=>{var D=zm();_(H,D)};te(U,H=>{f(h)&&H(V)})}M(R),fe(H=>ye(x,H),[()=>Ac(Math.floor(f(c)))]),_(I,R)},C=I=>{Ve(I,{variant:"default",size:"sm",class:"w-full text-xs",onclick:k,children:(R,A)=>{var x=Mm(),F=Q(x);nn(F,{class:"mr-1 size-3"}),we(),_(R,x)},$$slots:{default:!0}})};te(T,I=>{f(i)?I(S):I(C,-1)})}var P=q(T,2);{var B=I=>{var R=Nm(),A=N(R,!0);M(R),fe(()=>ye(A,f(a))),_(I,R)};te(P,I=>{f(a)&&I(B)})}M(w),_(r,w),ge()}var Vm=W('<button type="button" class="absolute right-2 bottom-2 rounded-full bg-black/50 p-2 text-white hover:bg-black/70" title="Switch camera"><!></button>'),Lm=W("<!> Stop Recording",1),Wm=W('<p class="mt-1 text-center text-xs text-destructive">Approaching size limit — recording will stop automatically</p>'),Hm=W('<p class="mt-1 text-center text-xs text-destructive"> </p>'),jm=W('<div class="rounded border-2 border-destructive bg-destructive/10 p-3"><div class="relative mb-2 overflow-hidden rounded bg-black"><video autoplay="" playsinline="" class="h-auto w-full" style="max-height: 180px; aspect-ratio: 16/9;"></video> <div class="absolute top-2 left-2 flex items-center gap-2 rounded bg-black/50 px-2 py-1"><div class="h-2 w-2 animate-pulse rounded-full bg-destructive"></div> <span class="text-xs font-medium text-white"> </span></div> <div class="absolute top-2 right-2 rounded bg-black/50 px-2 py-1"><span class="font-mono text-xs text-white tabular-nums"> </span></div> <!></div> <!> <!></div>',2),qm=W("<!> Record Screen",1),Km=W("<!> Record Camera",1),Qm=W('<div class="flex gap-1 rounded border bg-muted/30 p-1"><button type="button"><!> Camera</button> <button type="button"><!> Screen</button></div> <!>',1),Gm=W('<p class="text-xs text-destructive"> </p>'),Xm=W('<div class="space-y-2"><!> <!></div>');function so(r,e){pe(e,!0);let t=he(e,"audioEnabled",3,!0);const i=L(ei);let a=K(!1),n=K(""),s=K(null),o=K(null),c=K(Ri([])),l=K(void 0),d=K("user"),u=K("camera");const h=300;let p=K(0),m=K(0),g=null,b=0,k=L(()=>!e.maxSizeBytes||f(m)===0?!1:f(m)>=e.maxSizeBytes*fa*.9);async function w(){await zt.requireLogin("save your project",()=>{zt.requireCreateProject(f(i),T)})}async function T(){try{v(n,""),f(u)==="screen"?v(o,await navigator.mediaDevices.getDisplayMedia({video:{width:{ideal:1920},height:{ideal:1080}},audio:t()}),!0):v(o,await navigator.mediaDevices.getUserMedia({video:{width:{ideal:1280},height:{ideal:720},facingMode:f(d)},audio:t()}),!0);const V="video/mp4";if(!MediaRecorder.isTypeSupported(V))throw new Error("Your browser does not support MP4 recording. Please use Safari.");v(s,new MediaRecorder(f(o),{mimeType:V,videoBitsPerSecond:f(u)==="screen"?5e6:25e5}),!0),v(c,[],!0),v(p,0),v(m,0),b=Date.now(),f(s).ondataavailable=H=>{H.data.size>0&&(f(c).push(H.data),v(m,f(m)+H.data.size),e.maxSizeBytes&&f(m)>=e.maxSizeBytes*fa&&S())},f(s).onstop=async()=>{ut(f(o)),v(o,null),C()},f(s).start(1e3),v(a,!0),g=setInterval(()=>{v(p,(Date.now()-b)/1e3),f(p)>=h&&S()},100)}catch(V){v(n,Fa(V).message,!0),console.error("Recording error:",V),ut(f(o)),v(o,null)}}function S(){f(s)&&f(a)&&(f(s).stop(),v(a,!1),g&&(clearInterval(g),g=null))}async function C(){const V=new Blob(f(c),{type:"video/mp4"}),H=Bi("video","mp4");let D=f(p);try{D=await P(V)}catch{}e.onRecordingComplete({blob:V,fileName:H,duration:D,mediaType:"video"})}function P(V){return new Promise(H=>{const D=URL.createObjectURL(V),E=document.createElement("video");E.preload="metadata",E.onloadedmetadata=()=>{URL.revokeObjectURL(D),H(isFinite(E.duration)&&E.duration>0?E.duration:1)},E.onerror=()=>{URL.revokeObjectURL(D),H(1)},E.src=D})}async function B(){f(a)&&(v(d,f(d)==="user"?"environment":"user",!0),S(),ut(f(o)),v(o,null),await T())}Qe(()=>{f(l)&&f(o)&&f(a)&&(f(l).srcObject=f(o),f(l).play().catch(()=>{}))}),Qe(()=>()=>{g&&clearInterval(g),ut(f(o))});var I=Xm(),R=N(I);{var A=V=>{var H=jm(),D=N(H),E=N(D);E.muted=!0,Gr(E,z=>v(l,z),()=>f(l));var j=q(E,2),J=q(N(j),2),ae=N(J);M(J),M(j);var ce=q(j,2),be=N(ce),Be=N(be,!0);M(be),M(ce);var Te=q(ce,2);{var oe=z=>{var $=Vm(),Z=N($);cn(Z,{class:"size-4"}),M($),_t("click",$,B),_(z,$)};te(Te,z=>{f(u)==="camera"&&z(oe)})}M(D);var me=q(D,2);Ve(me,{variant:"destructive",size:"sm",class:"w-full",onclick:S,children:(z,$)=>{var Z=Lm(),de=Q(Z);Cn(de,{class:"mr-1 size-3"}),we(),_(z,Z)},$$slots:{default:!0}});var Ae=q(me,2);{var xe=z=>{var $=Wm();_(z,$)},ee=z=>{var $=Hm(),Z=N($);M($),fe(de=>ye(Z,`${de??""}s remaining`),[()=>Math.ceil(h-f(p))]),_(z,$)};te(Ae,z=>{f(k)?z(xe):f(p)>=h-10&&z(ee,1)})}M(H),fe(z=>{ye(ae,`Recording ${f(u)==="screen"?"Screen":"Camera"}`),ye(Be,z)},[()=>Ac(Math.floor(f(p)))]),_(V,H)},x=V=>{var H=Qm(),D=Q(H),E=N(D),j=N(E);vi(j,{class:"size-3"}),we(),M(E);var J=q(E,2),ae=N(J);ea(ae,{class:"size-3"}),we(),M(J),M(D);var ce=q(D,2);Ve(ce,{variant:"default",size:"sm",class:"w-full text-xs",onclick:w,children:(be,Be)=>{var Te=ne(),oe=Q(Te);{var me=xe=>{var ee=qm(),z=Q(ee);ea(z,{class:"mr-1 size-3"}),we(),_(xe,ee)},Ae=xe=>{var ee=Km(),z=Q(ee);Zi(z,{class:"mr-1 size-3"}),we(),_(xe,ee)};te(oe,xe=>{f(u)==="screen"?xe(me):xe(Ae,-1)})}_(be,Te)},$$slots:{default:!0}}),fe(()=>{Si(E,1,`flex flex-1 items-center justify-center gap-1 rounded px-2 py-1.5 text-xs transition-colors ${f(u)==="camera"?"bg-background shadow-sm":"hover:bg-background/50"}`),Si(J,1,`flex flex-1 items-center justify-center gap-1 rounded px-2 py-1.5 text-xs transition-colors ${f(u)==="screen"?"bg-background shadow-sm":"hover:bg-background/50"}`)}),_t("click",E,()=>v(u,"camera")),_t("click",J,()=>v(u,"screen")),_(V,H)};te(R,V=>{f(a)?V(A):V(x,-1)})}var F=q(R,2);{var U=V=>{var H=Gm(),D=N(H,!0);M(H),fe(()=>ye(D,f(n))),_(V,H)};te(F,V=>{f(n)&&V(U)})}M(I),_(r,I),ge()}Jr(["click"]);var Ym=W("<!> Take Photo",1),$m=W("<!> Cancel",1),Zm=W("<!> Capture",1),Jm=W('<div class="rounded border-2 border-primary bg-black p-2"><div class="relative mb-2 overflow-hidden rounded"><video autoplay="" playsinline="" class="h-auto w-full" style="max-height: 240px;"></video> <button type="button" class="absolute top-2 right-2 rounded-full bg-black/50 p-2 text-white hover:bg-black/70" title="Switch camera"><!></button></div> <div class="flex gap-2"><!> <!></div></div>',2),ep=W("<!> Retake",1),tp=W("<!> Use Photo",1),rp=W('<div class="rounded border-2 border-primary bg-black p-2"><div class="relative mb-2 overflow-hidden rounded"><img alt="Captured" class="h-auto w-full" style="max-height: 240px;"/></div> <div class="flex gap-2"><!> <!></div></div>'),ip=W('<div class="rounded border bg-muted/30 p-3 text-center"><!> <span class="text-sm">Uploading photo...</span></div>'),ap=W('<p class="text-xs text-destructive"> </p>'),np=W('<div class="space-y-2"><!> <canvas class="hidden"></canvas> <!></div>');function oo(r,e){pe(e,!0);const t=L(ei);let i=K("idle"),a=K(""),n=K(null),s=K("user"),o=K(void 0),c=K(void 0),l=K("");async function d(){try{v(a,""),v(n,await navigator.mediaDevices.getUserMedia({video:{width:{ideal:1920},height:{ideal:1080},facingMode:f(s)},audio:!1}),!0),v(i,"preview")}catch(A){const x=Fa(A);v(a,x.message,!0),console.error("Camera error:",A),v(i,"idle")}}Qe(()=>{f(o)&&f(n)&&f(i)==="preview"&&(f(o).srcObject=f(n),f(o).play().catch(A=>{console.warn("Preview autoplay failed:",A)}))});function u(){if(!(!f(o)||!f(c)))try{f(c).width=f(o).videoWidth||1920,f(c).height=f(o).videoHeight||1080;const A=f(c).getContext("2d");if(!A)throw new Error("Could not get canvas context");A.drawImage(f(o),0,0,f(c).width,f(c).height),v(l,f(c).toDataURL("image/jpeg",.92),!0),ut(f(n)),v(n,null),v(i,"review")}catch(A){v(a,A instanceof Error?A.message:"Failed to capture photo",!0),console.error("Capture error:",A)}}async function h(){await zt.requireLogin("save your project",()=>{zt.requireCreateProject(f(t),d)})}async function p(){if(f(c)){v(i,"uploading"),v(a,"");try{const A=await new Promise(U=>{f(c).toBlob(V=>U(V),"image/jpeg",.92)});if(!A)throw new Error("Failed to create image blob");const x=Bi("photo","jpg"),F=await Qr(A,x,"image",e.projectId);e.onCaptureComplete(F),v(i,"idle"),v(l,"")}catch(A){v(a,A instanceof Error?A.message:"Upload failed",!0),v(i,"review")}}}function m(){v(l,""),v(i,"idle"),d()}function g(){ut(f(n)),v(n,null),v(i,"idle")}async function b(){v(s,f(s)==="user"?"environment":"user",!0),ut(f(n)),v(n,null),await d()}Qe(()=>()=>{ut(f(n)),f(l)&&URL.revokeObjectURL(f(l))});var k=np(),w=N(k);{var T=A=>{Ve(A,{variant:"default",size:"sm",class:"w-full text-xs",onclick:h,children:(x,F)=>{var U=Ym(),V=Q(U);vi(V,{class:"mr-1 size-3"}),we(),_(x,U)},$$slots:{default:!0}})},S=A=>{var x=Jm(),F=N(x),U=N(F);U.muted=!0,Gr(U,J=>v(o,J),()=>f(o));var V=q(U,2),H=N(V);cn(H,{class:"size-4"}),M(V),M(F);var D=q(F,2),E=N(D);Ve(E,{variant:"outline",size:"sm",class:"flex-1 text-xs",onclick:g,children:(J,ae)=>{var ce=$m(),be=Q(ce);po(be,{class:"mr-1 size-3"}),we(),_(J,ce)},$$slots:{default:!0}});var j=q(E,2);Ve(j,{variant:"default",size:"sm",class:"flex-1 text-xs",onclick:u,children:(J,ae)=>{var ce=Zm(),be=Q(ce);vi(be,{class:"mr-1 size-3"}),we(),_(J,ce)},$$slots:{default:!0}}),M(D),M(x),_t("click",V,b),_(A,x)},C=A=>{var x=rp(),F=N(x),U=N(F);M(F);var V=q(F,2),H=N(V);Ve(H,{variant:"outline",size:"sm",class:"flex-1 text-xs",onclick:m,children:(E,j)=>{var J=ep(),ae=Q(J);cn(ae,{class:"mr-1 size-3"}),we(),_(E,J)},$$slots:{default:!0}});var D=q(H,2);Ve(D,{variant:"default",size:"sm",class:"flex-1 text-xs",onclick:p,children:(E,j)=>{var J=tp(),ae=Q(J);on(ae,{class:"mr-1 size-3"}),we(),_(E,J)},$$slots:{default:!0}}),M(V),M(x),fe(()=>gt(U,"src",f(l))),_(A,x)},P=A=>{var x=ip(),F=N(x);cr(F,{class:"mx-auto mb-2 size-6 animate-spin text-primary"}),we(2),M(x),_(A,x)};te(w,A=>{f(i)==="idle"?A(T):f(i)==="preview"?A(S,1):f(i)==="review"?A(C,2):f(i)==="uploading"&&A(P,3)})}var B=q(w,2);Gr(B,A=>v(c,A),()=>f(c));var I=q(B,2);{var R=A=>{var x=ap(),F=N(x,!0);M(x),fe(()=>ye(F,f(a))),_(A,x)};te(I,A=>{f(a)&&A(R)})}M(k),_(r,k),ge()}Jr(["click"]);const sp=Di("148gj0t/searchLummiImages");var op=W('<p class="text-xs text-destructive"> </p>'),cp=W('<span>•</span> <span class="text-yellow-400">PRO</span>',1),lp=W('<div class="rounded bg-black/60 p-1 opacity-0 transition-opacity group-hover:opacity-100"><!></div>'),dp=W('<p class="text-xs">Click to use this image</p>'),up=W("<!> <!>",1),hp=W('<button class="group relative overflow-hidden rounded border bg-black transition-all hover:border-primary hover:ring-1 hover:ring-primary"><img alt="" class="aspect-square w-full object-cover transition-transform group-hover:scale-105"/> <div class="absolute inset-0 flex flex-col justify-end bg-gradient-to-t from-black/80 to-transparent p-2 opacity-0 transition-opacity group-hover:opacity-100"><p class="truncate text-[10px] text-white"> </p> <div class="mt-1 flex items-center gap-1 text-[9px] text-gray-300"><span> </span> <span>•</span> <span class="capitalize"> </span> <!></div></div> <!></button>'),fp=W('<div class="mt-3 flex justify-center"><!></div>'),mp=W('<div class="grid grid-cols-2 gap-2 pr-2"></div> <!>',1),pp=W('<div class="py-8 text-center text-sm text-muted-foreground">No images found. Try a different search term.</div>'),gp=W('<div class="py-8 text-center text-sm text-muted-foreground">Search for free stock images from Lummi</div>'),bp=W('<div class="flex items-center justify-center py-8"><!></div>'),yp=W(`<div class="flex flex-col gap-3"><div class="flex gap-2"><div class="flex-1"><!></div> <!></div> <div class="flex gap-2"><!> <!></div> <div class="flex items-start gap-2 rounded border border-blue-500/20 bg-blue-500/10 px-3 py-2"><!> <p class="text-[10px] leading-tight text-blue-200">Images from Lummi require attribution. The author credit will be displayed automatically on
|
|
95
|
+
your layer.</p></div> <!> <!> <!></div>`);function wp(r,e){pe(e,!0);let t=K(""),i=K(!1),a=K(""),n=K(Ri([])),s=K(1),o=K(0),c=K(void 0),l=K(void 0);const d=L(()=>f(n).length<f(o));async function u(E=1){if(!f(t).trim()){v(a,"Please enter a search term");return}v(i,!0),v(a,"");try{const j={query:f(t),page:E,perPage:20};f(c)&&(j.imageType=f(c)),f(l)&&(j.orientation=f(l));const J=await sp(j);E===1?v(n,J.images,!0):v(n,[...f(n),...J.images],!0),v(o,J.totalCount,!0),v(s,E,!0)}catch(j){v(a,j instanceof Error?j.message:"Search failed",!0)}finally{v(i,!1)}}function h(){u(1)}function p(){!f(i)&&f(d)&&u(f(s)+1)}function m(E){const j=`${E.url}?w=1920&fm=webp`;e.onSelect({url:j,fileName:`lummi-${E.id}.webp`,attribution:{imageUrl:E.attributionUrl,authorUrl:E.author.attributionUrl,authorName:E.author.name??E.author.username}})}var g=yp(),b=N(g),k=N(b),w=N(k);In(w,{placeholder:"Search Lummi images...",onkeydown:E=>E.key==="Enter"&&h(),get value(){return f(t)},set value(E){v(t,E,!0)}}),M(k);var T=q(k,2);Ve(T,{variant:"default",size:"sm",onclick:h,get disabled(){return f(i)},get loading(){return f(i)},get icon(){return uo},children:(E,j)=>{we();var J=st("Search");_(E,J)},$$slots:{default:!0}}),M(b);var S=q(b,2),C=N(S);ps(C,{placeholder:"Type",options:[{value:"",label:"All types"},{value:"photo",label:"Photo"},{value:"illustration",label:"Illustration"},{value:"3d",label:"3D"}],trigger:{class:"w-[120px] text-xs"},get value(){return f(c)},set value(E){v(c,E,!0)}});var P=q(C,2);ps(P,{placeholder:"Orientation",options:[{value:"",label:"All"},{value:"horizontal",label:"Horizontal"},{value:"vertical",label:"Vertical"},{value:"square",label:"Square"}],trigger:{class:"w-[120px] text-xs"},get value(){return f(l)},set value(E){v(l,E,!0)}}),M(S);var B=q(S,2),I=N(B);Bl(I,{class:"mt-0.5 size-3 shrink-0 text-blue-400"}),we(2),M(B);var R=q(B,2);{var A=E=>{var j=op(),J=N(j,!0);M(j),fe(()=>ye(J,f(a))),_(E,j)};te(R,E=>{f(a)&&E(A)})}var x=q(R,2);{var F=E=>{Fc(E,{viewportClass:"max-h-[400px]",children:(j,J)=>{var ae=mp(),ce=Q(ae);Pi(ce,21,()=>f(n),Te=>Te.id,(Te,oe)=>{var me=hp(),Ae=N(me),xe=q(Ae,2),ee=N(xe),z=N(ee);M(ee);var $=q(ee,2),Z=N($),de=N(Z);M(Z);var Se=q(Z,4),ue=N(Se,!0);M(Se);var He=q(Se,2);{var De=Ce=>{var _e=cp();we(2),_(Ce,_e)};te(He,Ce=>{f(oe).pro&&Ce(De)})}M($),M(xe);var Re=q(xe,2);ve(Re,()=>ud,(Ce,_e)=>{_e(Ce,{children:(Ue,Me)=>{var xt=up(),ze=Q(xt);ve(ze,()=>hd,(ct,Yt)=>{Yt(ct,{class:"absolute top-1 right-1",children:($t,Ba)=>{var Ye=lp(),Fr=N(Ye);Vc(Fr,{class:"size-3 text-white"}),M(Ye),_($t,Ye)},$$slots:{default:!0}})});var Ne=q(ze,2);ve(Ne,()=>Tl,(ct,Yt)=>{Yt(ct,{children:($t,Ba)=>{var Ye=dp();_($t,Ye)},$$slots:{default:!0}})}),_(Ue,xt)},$$slots:{default:!0}})}),M(me),fe(()=>{gt(Ae,"src",f(oe).url),ye(z,`by ${f(oe).author.name??f(oe).author.username??""}`),ye(de,`${f(oe).width??""}×${f(oe).height??""}`),ye(ue,f(oe).imageType)}),_t("click",me,()=>m(f(oe))),_(Te,me)}),M(ce);var be=q(ce,2);{var Be=Te=>{var oe=fp(),me=N(oe);Ve(me,{variant:"outline",size:"sm",onclick:p,get disabled(){return f(i)},get loading(){return f(i)},children:(Ae,xe)=>{we();var ee=st("Load more");_(Ae,ee)},$$slots:{default:!0}}),M(oe),_(Te,oe)};te(be,Te=>{f(d)&&Te(Be)})}_(j,ae)},$$slots:{default:!0}})},U=E=>{var j=pp();_(E,j)},V=E=>{var j=gp();_(E,j)};te(x,E=>{f(n).length>0?E(F):!f(i)&&f(t)?E(U,1):f(t)||E(V,2)})}var H=q(x,2);{var D=E=>{var j=bp(),J=N(j);cr(J,{class:"size-6 animate-spin text-muted-foreground"}),M(j),_(E,j)};te(H,E=>{f(i)&&f(n).length===0&&E(D)})}M(g),_(r,g),ge()}Jr(["click"]);var kp=W('<div class="flex items-center justify-center py-6"><!></div>'),vp=W('<div class="px-3 py-6 text-center text-xs text-muted-foreground"><!></div>'),Tp=W('<div class="divide-y"></div>'),Sp=W('<div class="flex items-center justify-between border-t px-3 py-2 text-xs text-muted-foreground"><!> <span> </span> <!></div>'),xp=W('<div class="flex flex-col"><div class="border-b px-3 py-2"><div class="relative"><!> <!></div></div> <!> <!></div>');function Pp(r,e){pe(e,!0);const t=20;let i=K(""),a=new Lc(()=>f(i),300),n=K(1);Sl(()=>[a.current],()=>{v(n,1)});const s=L(()=>wm({mediaType:e.mediaType,search:a.current||void 0,page:f(n),pageSize:t})),o=L(()=>f(s).current?.assets??[]),c=L(()=>Math.ceil((f(s).current?.total??0)/t));var l=xp(),d=N(l),u=N(d),h=N(u);uo(h,{class:"absolute top-1/2 left-2 size-3 -translate-y-1/2 text-muted-foreground"});var p=q(h,2);In(p,{type:"text",placeholder:"Search assets...",class:"h-7 pl-6 text-xs",get value(){return f(i)},set value(k){v(i,k,!0)}}),M(u),M(d);var m=q(d,2);Fc(m,{viewportClass:"max-h-[calc(50vh)]",children:(k,w)=>{var T=ne(),S=Q(T);{var C=I=>{var R=kp(),A=N(R);cr(A,{class:"size-4 animate-spin text-muted-foreground"}),M(R),_(I,R)},P=I=>{var R=vp(),A=N(R);{var x=U=>{var V=st();fe(()=>ye(V,`No assets match "${a.current??""}".`)),_(U,V)},F=U=>{var V=st();fe(()=>ye(V,e.mediaType?`No ${e.mediaType} assets found`:"No assets found")),_(U,V)};te(A,U=>{a.current?U(x):U(F,-1)})}M(R),_(I,R)},B=I=>{var R=Tp();Pi(R,21,()=>f(o),A=>A.id,(A,x)=>{{let F=L(()=>f(x).url===e.selectedUrl);Am(A,{get asset(){return f(x)},get selected(){return f(F)},get onclick(){return e.onSelect}})}}),M(R),_(I,R)};te(S,I=>{f(s).loading&&!f(s).current?I(C):f(o).length===0?I(P,1):I(B,-1)})}_(k,T)},$$slots:{default:!0}});var g=q(m,2);{var b=k=>{var w=Sp(),T=N(w);{let B=L(()=>f(n)===1);Ve(T,{variant:"ghost",size:"icon-xs",get disabled(){return f(B)},onclick:()=>Or(n,-1),get icon(){return al}})}var S=q(T,2),C=N(S);M(S);var P=q(S,2);{let B=L(()=>f(n)>=f(c));Ve(P,{variant:"ghost",size:"icon-xs",get disabled(){return f(B)},onclick:()=>Or(n),get icon(){return xl}})}M(w),fe(()=>ye(C,`${f(n)??""} / ${f(c)??""}`)),_(k,w)};te(g,k=>{f(c)>1&&k(b)})}M(l),_(r,l),ge()}var Cp=W('<!> <p class="text-xs font-medium">Uploading...</p>',1),_p=W('<audio controls="" class="w-full" preload="metadata"></audio>'),Ip=W('<img class="h-auto w-full rounded" style="max-height: 140px; object-fit: contain;"/>'),Ep=W('<video class="h-auto w-full rounded" style="max-height: 140px; object-fit: contain;" controls="" preload="metadata"></video>',2),Ap=W("<div><!></div>"),Fp=W('<button type="button" class="mt-1 flex items-center gap-1 rounded border border-destructive/40 bg-destructive/10 px-2 py-1 text-[11px] text-destructive hover:bg-destructive/20"><!> Retry upload</button>'),Bp=W('<div class="relative w-full overflow-hidden rounded"><!> <!></div> <p class="text-[10px] text-muted-foreground"> </p> <!>',1),Rp=W('<div class="flex h-10 w-10 items-center justify-center rounded-full bg-muted transition-colors group-hover:bg-muted/80"><!></div> <div class="text-center"><p class="text-xs font-medium"> </p> <p class="mt-0.5 text-[10px] text-muted-foreground"> </p></div> <span class="rounded border border-border bg-background px-2.5 py-1 text-[11px] text-muted-foreground transition-colors group-hover:border-primary/40 group-hover:text-foreground">Browse file</span>',1),zp=W("<!> <!>",1),Dp=W("<!> <!>",1),Mp=W('<p class="text-xs font-medium text-muted-foreground">Record video</p> <!> <p class="text-xs font-medium text-muted-foreground">Capture photo</p> <!>',1),Np=W('<div class="flex flex-col gap-3"><!></div>'),Op=W("<!> <!>",1),Up=W('<p class="text-xs text-destructive"> </p>'),Vp=W('<div class="flex flex-col gap-2"><div role="button"><!></div> <div class="flex gap-1.5"><!> <!> <!></div> <input type="file" class="hidden"/> <!></div>');function Bc(r,e){pe(e,!0);let t=he(e,"value",7,""),i=he(e,"currentFileName",3,"");const a=L(ei);let n=K(""),s=K(void 0),o=K(""),c=L(()=>f(o)||i()||""),l=K(!1),d=K(!1),u=K(!1),h=K(!1),p=K(!1),m=K(null);async function g(z){const $=URL.createObjectURL(z.blob);t($),v(o,z.fileName,!0),v(p,!1),v(n,""),v(d,!0),v(m,z,!0);try{const Z=await Qr(z.blob,z.fileName,z.mediaType,e.projectId,z.duration);v(m,null),e.onUpload({url:Z.url,key:Z.key,fileName:Z.fileName,duration:z.duration,...z.mediaType==="video"&&e.mediaType==="media"?{detectedType:"video"}:{}}),URL.revokeObjectURL($),v(o,"")}catch(Z){v(n,Z instanceof Error?Z.message:"Upload failed",!0)}finally{v(d,!1)}}async function b(){const z=f(m);if(!z||!t())return;v(n,""),v(d,!0);const $=t();try{const Z=await Qr(z.blob,z.fileName,z.mediaType,e.projectId,z.duration);v(m,null),e.onUpload({url:Z.url,key:Z.key,fileName:Z.fileName,duration:z.duration,...z.mediaType==="video"&&e.mediaType==="media"?{detectedType:"video"}:{}}),URL.revokeObjectURL($),v(o,"")}catch(Z){v(n,Z instanceof Error?Z.message:"Upload failed",!0)}finally{v(d,!1)}}async function k(z){v(u,!1),e.onUpload({url:z.url,key:z.storageKey,fileName:z.originalName,duration:z.duration??await Ss(z.url,z.mediaType),...e.mediaType==="media"&&(z.mediaType==="image"||z.mediaType==="video")?{detectedType:z.mediaType}:{}})}function w(z){v(h,!1),e.onUpload({url:z.url,key:"",fileName:z.fileName,attribution:z.attribution})}const T={image:"image/jpeg,image/png,image/gif,image/webp,image/svg+xml",video:"video/mp4",audio:"audio/mp3",media:"image/jpeg,image/png,image/gif,image/webp,image/svg+xml,video/mp4"};function S(z){return z.type.startsWith("video/")?"video":"image"}let C=L(()=>Bm[e.mediaType==="media"?"video":e.mediaType]),P=L(()=>Pl(f(C)));const B={image:"image",video:"video",audio:"audio",media:"image or video"},I={image:"JPG, PNG, GIF, WEBP, SVG",video:"MP4",audio:"MP3",media:"JPG, PNG, MP4"};async function R(z){await zt.requireLogin("save your project",()=>{zt.requireCreateProject(f(a),()=>A(z))})}async function A(z){const $=z.target,Z=$.files?.[0];if(Z){v(n,""),v(d,!0);try{const de=e.mediaType==="media"?S(Z):void 0,Se=de??e.mediaType;let ue;(Se==="video"||Se==="audio")&&(ue=await Ss(Z,Se));const He=await Qr(Z,Z.name,Se,e.projectId,ue);e.onUpload({url:He.url,key:He.key,fileName:He.fileName,duration:ue,...de?{detectedType:de}:{}})}catch(de){v(n,de instanceof Error?de.message:"Upload failed",!0)}finally{v(d,!1),$&&($.value="")}}}async function x(z){z.preventDefault(),v(l,!1);const $=z.dataTransfer?.files?.[0];if(!$)return;const Z=new DataTransfer;Z.items.add($),f(s)&&(Object.defineProperty(f(s),"files",{value:Z.files,writable:!0}),await zt.requireLogin("save your project",()=>{zt.requireCreateProject(f(a),()=>{const de={target:{files:Z.files,value:""}};A(de)})}))}function F(z){z.preventDefault(),v(l,!0)}function U(z){z.currentTarget.contains(z.relatedTarget)||v(l,!1)}const V=L(()=>e.mediaType==="image"||e.mediaType==="video"||e.mediaType==="audio"||e.mediaType==="media");var H=Vp(),D=N(H),E=N(D);{var j=z=>{var $=Cp(),Z=Q($);cr(Z,{class:"h-8 w-8 animate-spin text-primary"}),we(2),_(z,$)},J=z=>{var $=Bp(),Z=Q($),de=N(Z);{var Se=ze=>{var Ne=_p();fe(()=>gt(Ne,"src",t())),_(ze,Ne)},ue=ze=>{var Ne=Ip();fe(()=>{gt(Ne,"src",t()),gt(Ne,"alt",f(c))}),_(ze,Ne)},He=L(()=>e.mediaType==="image"||e.mediaType==="media"&&!t().endsWith(".mp4")),De=ze=>{var Ne=Ep();fe(()=>gt(Ne,"src",t())),_t("click",Ne,ct=>ct.stopPropagation()),_(ze,Ne)};te(de,ze=>{e.mediaType==="audio"?ze(Se):f(He)?ze(ue,1):ze(De,-1)})}var Re=q(de,2);{var Ce=ze=>{var Ne=Ap(),ct=N(Ne);cr(ct,{class:"h-6 w-6 animate-spin text-primary"}),M(Ne),fe(()=>Si(Ne,1,`absolute inset-0 z-10 flex items-center justify-center rounded ${e.mediaType==="audio"?"bg-background/40":"bg-black/40"}`)),_(ze,Ne)};te(Re,ze=>{f(d)&&f(m)&&ze(Ce)})}M(Z);var _e=q(Z,2),Ue=N(_e);M(_e);var Me=q(_e,2);{var xt=ze=>{var Ne=Fp(),ct=N(Ne);Cl(ct,{class:"size-3"}),we(),M(Ne),_t("click",Ne,Yt=>{Yt.stopPropagation(),b()}),_(ze,Ne)};te(Me,ze=>{f(m)&&f(n)&&ze(xt)})}fe(()=>ye(Ue,`${f(d)&&f(m)?"Uploading... ":"Click or drop to replace "}
|
|
96
|
+
· ${f(c)??""}`)),_(z,$)},ae=z=>{var $=Rp(),Z=Q($),de=N(Z);{var Se=Me=>{an(Me,{class:"h-5 w-5 text-muted-foreground"})},ue=Me=>{nn(Me,{class:"h-5 w-5 text-muted-foreground"})},He=Me=>{Zi(Me,{class:"h-5 w-5 text-muted-foreground"})};te(de,Me=>{e.mediaType==="image"?Me(Se):e.mediaType==="audio"?Me(ue,1):Me(He,-1)})}M(Z);var De=q(Z,2),Re=N(De),Ce=N(Re,!0);M(Re);var _e=q(Re,2),Ue=N(_e);M(_e),M(De),we(2),fe(()=>{ye(Ce,f(l)?"Drop to upload":`Drop ${B[e.mediaType]} here`),ye(Ue,`${I[e.mediaType]??""} · up to ${f(P)??""}`)}),_(z,$)};te(E,z=>{f(d)&&!t()?z(j):t()&&(e.mediaType==="image"||e.mediaType==="video"||e.mediaType==="media"||e.mediaType==="audio")?z(J,1):z(ae,-1)})}M(D);var ce=q(D,2),be=N(ce);ve(be,()=>Xi,(z,$)=>{$(z,{get open(){return f(u)},set open(Z){v(u,Z,!0)},children:(Z,de)=>{var Se=zp(),ue=Q(Se);{const De=(Re,Ce)=>{Ve(Re,Ee(()=>Ce?.().props,{variant:"outline",size:"sm",get icon(){return Al},class:"flex-1 justify-start text-xs",title:"Pick from project assets",children:(Ue,Me)=>{we();var xt=st("Assets");_(Ue,xt)},$$slots:{default:!0}}))};ve(ue,()=>Qi,(Re,Ce)=>{Ce(Re,{child:De,$$slots:{child:!0}})})}var He=q(ue,2);ve(He,()=>Gi,(De,Re)=>{Re(De,{class:"w-72 p-0",align:"start",children:(Ce,_e)=>{{let Ue=L(()=>e.mediaType==="media"?void 0:e.mediaType);Pp(Ce,{get mediaType(){return f(Ue)},get selectedUrl(){return t()},onSelect:k})}},$$slots:{default:!0}})}),_(Z,Se)},$$slots:{default:!0}})});var Be=q(be,2);{var Te=z=>{var $=ne(),Z=Q($);ve(Z,()=>Xi,(de,Se)=>{Se(de,{get open(){return f(h)},set open(ue){v(h,ue,!0)},children:(ue,He)=>{var De=Dp(),Re=Q(De);{const _e=(Ue,Me)=>{Ve(Ue,Ee(()=>Me?.().props,{variant:"outline",size:"sm",get icon(){return an},class:"flex-1 justify-start text-xs",title:"Browse Lummi stock images",children:(ze,Ne)=>{we();var ct=st("Lummi");_(ze,ct)},$$slots:{default:!0}}))};ve(Re,()=>Qi,(Ue,Me)=>{Me(Ue,{child:_e,$$slots:{child:!0}})})}var Ce=q(Re,2);ve(Ce,()=>Gi,(_e,Ue)=>{Ue(_e,{class:"w-[400px] p-4",align:"start",children:(Me,xt)=>{wp(Me,{onSelect:w})},$$slots:{default:!0}})}),_(ue,De)},$$slots:{default:!0}})}),_(z,$)};te(Be,z=>{(e.mediaType==="image"||e.mediaType==="media")&&z(Te)})}var oe=q(Be,2);{var me=z=>{var $=ne(),Z=Q($);ve(Z,()=>Xi,(de,Se)=>{Se(de,{get open(){return f(p)},set open(ue){v(p,ue,!0)},children:(ue,He)=>{var De=Op(),Re=Q(De);{const _e=(Ue,Me)=>{let xt=()=>Me?.().props;{let ze=L(()=>e.mediaType==="audio"?nn:e.mediaType==="image"?vi:Zi),Ne=L(()=>e.mediaType==="audio"?"Record audio":e.mediaType==="image"?"Capture photo":"Record video");Ve(Ue,Ee(xt,{variant:"outline",size:"sm",get icon(){return f(ze)},class:"flex-1 justify-start text-xs",get title(){return f(Ne)},children:(ct,Yt)=>{we();var $t=st();fe(()=>ye($t,e.mediaType==="audio"?"Record":e.mediaType==="image"?"Capture":"Record")),_(ct,$t)},$$slots:{default:!0}}))}};ve(Re,()=>Qi,(Ue,Me)=>{Me(Ue,{child:_e,$$slots:{child:!0}})})}var Ce=q(Re,2);ve(Ce,()=>Gi,(_e,Ue)=>{Ue(_e,{class:"w-80 p-3",align:"end",children:(Me,xt)=>{var ze=Np(),Ne=N(ze);{var ct=Ye=>{Um(Ye,{get maxSizeBytes(){return f(C)},onRecordingComplete:g})},Yt=Ye=>{so(Ye,{get maxSizeBytes(){return f(C)},onRecordingComplete:g})},$t=Ye=>{oo(Ye,{get projectId(){return e.projectId},onCaptureComplete:Fr=>{e.onUpload(Fr),v(p,!1)}})},Ba=Ye=>{var Fr=Mp(),fs=q(Q(Fr),2);so(fs,{get maxSizeBytes(){return f(C)},onRecordingComplete:g});var Rc=q(fs,4);oo(Rc,{get projectId(){return e.projectId},onCaptureComplete:zc=>{e.onUpload({...zc,detectedType:"image"}),v(p,!1)}}),_(Ye,Fr)};te(Ne,Ye=>{e.mediaType==="audio"?Ye(ct):e.mediaType==="video"?Ye(Yt,1):e.mediaType==="image"?Ye($t,2):e.mediaType==="media"&&Ye(Ba,3)})}M(ze),_(Me,ze)},$$slots:{default:!0}})}),_(ue,De)},$$slots:{default:!0}})}),_(z,$)};te(oe,z=>{f(V)&&z(me)})}M(ce);var Ae=q(ce,2);Gr(Ae,z=>v(s,z),()=>f(s));var xe=q(Ae,2);{var ee=z=>{var $=Up(),Z=N($,!0);M($),fe(()=>ye(Z,f(n))),_(z,$)};te(xe,z=>{f(n)&&z(ee)})}M(H),fe(()=>{Si(D,1,`group relative flex flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed px-4 py-5 transition-colors
|
|
97
|
+
${f(d)&&f(m)?"cursor-default":"cursor-pointer"}
|
|
98
|
+
${f(l)?"border-primary bg-primary/5":"border-border hover:border-primary/50 hover:bg-muted/40"}`),gt(D,"tabindex",f(d)&&f(m)?-1:0),gt(Ae,"accept",T[e.mediaType])}),_t("click",D,()=>{f(d)&&f(m)||f(s)?.click()}),tr("drop",D,z=>{f(d)&&f(m)||x(z)}),tr("dragover",D,z=>{f(d)&&f(m)||F(z)}),tr("dragleave",D,z=>{f(d)&&f(m)||U(z)}),_t("change",Ae,R),_(r,H),ge()}Jr(["click","change"]);var Lp=W('<!> <span class="text-xs">On</span>',1),Wp=W('<!> <span class="text-xs">Off</span>',1),Hp=W('<span class="text-muted-foreground">Select effects...</span>'),jp=W("<span> </span>"),qp=W('<div class="flex items-center gap-2"><div class="w-4"><!></div> <span> </span></div>'),Kp=W("<!> <!>",1),Qp=W("<span> </span>"),Gp=W('<span class="text-muted-foreground">Select an option</span>'),Xp=W("<!> <!>",1);function Yp(r,e){pe(e,!0);const t=L(ei),i=L(()=>f(t).project),a=he(e,"targetPath",3,"props"),n=L(()=>`${a()}.${e.metadata.name}`);var s=ne(),o=Q(s);{var c=w=>{{let T=L(()=>typeof e.value=="string"?e.value:""),S=L(()=>typeof e.layer.props.fileName=="string"?e.layer.props.fileName:""),C=L(()=>f(t).dbProjectId??void 0);Bc(w,{get value(){return f(T)},get currentFileName(){return f(S)},get mediaType(){return e.metadata.meta.mediaType},get projectId(){return f(C)},onUpload:async P=>{if(e.metadata.meta?.widget!=="upload")return;const B=e.metadata.meta.mediaType;e.onUpdateProp(e.metadata.name,P.url),e.onUpdateProp("fileKey",P.key);const{propUpdates:I,mediaResult:R}=await nl({url:P.url,key:P.key,fileName:P.fileName,duration:P.duration,attribution:"attribution"in P?P.attribution:void 0,mediaType:B,projectWidth:f(i).state.width,projectHeight:f(i).state.height,projectDuration:f(i).state.duration,enterTime:e.layer.enterTime??0});for(const[A,x]of Object.entries(I))e.onUpdateProp(A,x);sl(f(i),e.layer.id,R)}})}},l=w=>{{let T=L(()=>typeof e.value=="string"?e.value:"");Wc(w,{get id(){return f(n)},get value(){return f(T)},oninput:S=>e.onUpdateProp(e.metadata.name,S.currentTarget.value),spellcheck:"false"})}},d=w=>{Hc(w,{get value(){return e.value},optional:!0,onchange:T=>e.onUpdateProp(e.metadata.name,T)})},u=w=>{{let T=L(()=>typeof e.value=="string"?e.value:"#000000");jc(w,{get value(){return f(T)},onchange:S=>e.onUpdateProp(e.metadata.name,S||"transparent"),get optional(){return e.metadata.optional}})}},h=w=>{const T=L(()=>e.metadata.meta.component);var S=ne(),C=Q(S);ve(C,()=>f(T),(P,B)=>{B(P,{get value(){return e.value},onChange:I=>e.onUpdateProp(e.metadata.name,I),get layer(){return e.layer},get metadata(){return e.metadata}})}),_(w,S)},p=w=>{{let T=L(()=>typeof e.value=="number"?e.value:0),S=L(()=>e.metadata.step||1);qc(w,{get id(){return f(n)},get value(){return f(T)},get min(){return e.metadata.min},get max(){return e.metadata.max},get step(){return f(S)},onchange:C=>e.onUpdateProp(e.metadata.name,C),get postFix(){return e.metadata.postFix}})}},m=w=>{const T=L(()=>typeof e.value=="boolean"?e.value:!1);{let S=L(()=>xi("w-full flex-1",{"border-green-500! bg-green-500/10! text-green-500! hover:bg-green-500/20! hover:text-green-500!":f(T),"border-red-500! bg-red-500/10! text-red-500! hover:bg-red-500/20! hover:text-red-500!":!f(T)}));Ve(w,{variant:"outline",get class(){return f(S)},onclick:()=>e.onUpdateProp(e.metadata.name,!f(T)),children:(C,P)=>{var B=ne(),I=Q(B);{var R=x=>{var F=Lp(),U=Q(F);on(U,{class:"h-4 w-4"}),we(2),_(x,F)},A=x=>{var F=Wp(),U=Q(F);po(U,{class:"h-4 w-4"}),we(2),_(x,F)};te(I,x=>{f(T)?x(R):x(A,-1)})}_(C,B)},$$slots:{default:!0}})}},g=w=>{const T=L(()=>Array.isArray(e.value)?e.value:[]);var S=ne(),C=Q(S);ve(C,()=>ks,(P,B)=>{B(P,{type:"multiple",get value(){return f(T)},onValueChange:I=>e.onUpdateProp(e.metadata.name,I),children:(I,R)=>{var A=Kp(),x=Q(A);ve(x,()=>gs,(U,V)=>{V(U,{class:"w-full flex-1",children:(H,D)=>{var E=ne(),j=Q(E);{var J=ce=>{var be=Hp();_(ce,be)},ae=ce=>{var be=jp(),Be=N(be);M(be),fe(()=>ye(Be,`${f(T).length??""} selected`)),_(ce,be)};te(j,ce=>{f(T).length===0?ce(J):ce(ae,-1)})}_(H,E)},$$slots:{default:!0}})});var F=q(x,2);ve(F,()=>bs,(U,V)=>{V(U,{get id(){return f(n)},children:(H,D)=>{var E=ne(),j=Q(E);ve(j,()=>ys,(J,ae)=>{ae(J,{children:(ce,be)=>{var Be=ne(),Te=Q(Be);Pi(Te,17,()=>e.metadata.meta.options,oe=>oe.value,(oe,me)=>{const Ae=L(()=>f(T).includes(f(me).value));var xe=ne(),ee=Q(xe);ve(ee,()=>ws,(z,$)=>{$(z,{get value(){return f(me).value},get label(){return f(me).label},children:(Z,de)=>{var Se=qp(),ue=N(Se),He=N(ue);{var De=_e=>{on(_e,{class:"h-4 w-4"})};te(He,_e=>{f(Ae)&&_e(De)})}M(ue);var Re=q(ue,2),Ce=N(Re,!0);M(Re),M(Se),fe(()=>ye(Ce,f(me).label)),_(Z,Se)},$$slots:{default:!0}})}),_(oe,xe)}),_(ce,Be)},$$slots:{default:!0}})}),_(H,E)},$$slots:{default:!0}})}),_(I,A)},$$slots:{default:!0}})}),_(w,S)},b=w=>{const T=L(()=>typeof e.value=="string"||typeof e.value=="number"?e.value:""),S=L(()=>e.metadata.options.find(B=>B.value===f(T))?.label??f(T));var C=ne(),P=Q(C);{let B=L(()=>f(T).toString());ve(P,()=>ks,(I,R)=>{R(I,{type:"single",get value(){return f(B)},onValueChange:A=>e.onUpdateProp(e.metadata.name,A),children:(A,x)=>{var F=Xp(),U=Q(F);ve(U,()=>gs,(H,D)=>{D(H,{class:"w-full flex-1",get id(){return f(n)},children:(E,j)=>{var J=ne(),ae=Q(J);{var ce=Be=>{var Te=Qp(),oe=N(Te,!0);M(Te),fe(()=>ye(oe,f(S))),_(Be,Te)},be=Be=>{var Te=Gp();_(Be,Te)};te(ae,Be=>{f(T)?Be(ce):Be(be,-1)})}_(E,J)},$$slots:{default:!0}})});var V=q(U,2);ve(V,()=>bs,(H,D)=>{D(H,{get id(){return f(n)},children:(E,j)=>{var J=ne(),ae=Q(J);ve(ae,()=>ys,(ce,be)=>{be(ce,{children:(Be,Te)=>{var oe=ne(),me=Q(oe);Pi(me,17,()=>e.metadata.options,Ae=>Ae.value,(Ae,xe)=>{var ee=ne(),z=Q(ee);ve(z,()=>ws,($,Z)=>{Z($,{get value(){return f(xe).value},children:(de,Se)=>{we();var ue=st();fe(()=>ye(ue,f(xe).label)),_(de,ue)},$$slots:{default:!0}})}),_(Ae,ee)}),_(Be,oe)},$$slots:{default:!0}})}),_(E,J)},$$slots:{default:!0}})}),_(A,F)},$$slots:{default:!0}})})}_(w,C)},k=w=>{{let T=L(()=>typeof e.value=="string"?e.value:""),S=L(()=>e.metadata.meta?.readOnly);In(w,{get id(){return f(n)},type:"text",get value(){return f(T)},oninput:C=>e.onUpdateProp(e.metadata.name,C.currentTarget.value),get disabled(){return f(S)}})}};te(o,w=>{e.metadata.meta?.widget==="upload"?w(c):e.metadata.meta?.widget==="textarea"?w(l,1):e.metadata.meta?.widget==="background"?w(d,2):e.metadata.meta?.widget==="color"?w(u,3):e.metadata.meta?.widget==="custom"?w(h,4):e.metadata.type==="number"?w(p,5):e.metadata.type==="boolean"?w(m,6):e.metadata.meta?.widget==="multi-select"&&e.metadata.meta.options?w(g,7):e.metadata.type==="select"&&e.metadata.options?w(b,8):w(k,-1)})}_(r,s),ge()}var $p=W("<!> Stop Recording",1),Zp=W('<p class="mt-1 text-center text-xs text-destructive"> </p>'),Jp=W('<div class="rounded border-2 border-destructive bg-destructive/10 p-3"><div class="relative mb-2 overflow-hidden rounded bg-black"><video autoplay="" playsinline="" class="h-auto w-full" style="max-height: 150px; aspect-ratio: 16/9;"></video> <div class="absolute top-2 left-2 flex items-center gap-2 rounded bg-black/50 px-2 py-1"><div class="h-2 w-2 animate-pulse rounded-full bg-destructive"></div> <!> <span class="text-[10px] text-white">Screen</span></div> <div class="absolute top-2 right-2 rounded bg-black/50 px-2 py-1"><span class="font-mono text-xs text-white tabular-nums"> </span></div> <div class="absolute right-2 bottom-2 h-16 w-16 overflow-hidden rounded-full border-2 border-white/50 shadow-lg"><video autoplay="" playsinline="" class="h-full w-full object-cover"></video></div></div> <!> <!></div>',2),eg=W('<div class="rounded border bg-muted/30 p-6 text-center"><!> <span class="text-sm">Uploading both recordings...</span></div>'),tg=W(`<div class="rounded border bg-muted/30 p-4 text-center"><div class="mx-auto mb-3 flex items-center justify-center gap-3"><div class="flex items-center gap-1.5 rounded bg-background px-3 py-2 shadow-sm"><!> <span class="text-xs">Screen</span></div> <span class="text-xs text-muted-foreground">+</span> <div class="flex items-center gap-1.5 rounded bg-background px-3 py-2 shadow-sm"><!> <span class="text-xs">Webcam</span></div></div> <p class="mb-3 text-[10px] text-muted-foreground">Records your screen and webcam simultaneously. The webcam will appear as a circular overlay
|
|
99
|
+
in the corner.</p> <!></div>`),rg=W('<p class="text-xs text-destructive"> </p>'),ig=W('<div class="space-y-3"><!> <!></div>');function ag(r,e){pe(e,!0);let t=K("idle"),i=K(""),a=K(0),n=K(null),s=K(null),o=null,c=null,l=[],d=[],u=K(void 0),h=K(void 0),p=null,m=0;const g=300;async function b(){try{v(i,""),v(n,await navigator.mediaDevices.getDisplayMedia({video:{width:{ideal:1920},height:{ideal:1080}},audio:!0}),!0),v(s,await navigator.mediaDevices.getUserMedia({video:{width:{ideal:640},height:{ideal:640},facingMode:"user"},audio:!0}),!0);const x="video/mp4";if(!MediaRecorder.isTypeSupported(x))throw new Error("Your browser does not support MP4 recording. Please use Safari.");l=[],d=[],o=new MediaRecorder(f(n),{mimeType:x,videoBitsPerSecond:5e6}),c=new MediaRecorder(f(s),{mimeType:x,videoBitsPerSecond:25e5}),o.ondataavailable=V=>{V.data.size>0&&l.push(V.data)},c.ondataavailable=V=>{V.data.size>0&&d.push(V.data)},f(n).getVideoTracks()[0].onended=()=>k();let F=0;const U=()=>{F++,F===2&&w()};o.onstop=U,c.onstop=U,o.start(1e3),c.start(1e3),v(t,"recording"),v(a,0),m=Date.now(),p=setInterval(()=>{v(a,(Date.now()-m)/1e3),f(a)>=g&&k()},100)}catch(x){v(i,Fa(x).message,!0),T()}}function k(){f(t)==="recording"&&(p&&(clearInterval(p),p=null),o?.stop(),c?.stop(),ut(f(n)),ut(f(s)),v(n,null),v(s,null),v(t,"uploading"))}async function w(){v(t,"uploading"),v(i,"");const x=e.ctx.project.id;try{const F=new Blob(l,{type:"video/mp4"}),U=new Blob(d,{type:"video/mp4"}),V=URL.createObjectURL(F),H=URL.createObjectURL(U),[D,E]=await Promise.all([xs(V,"video"),xs(H,"video")]);URL.revokeObjectURL(V),URL.revokeObjectURL(H);const j=D.duration&&D.duration>0?D.duration:1,J=E.duration&&E.duration>0?E.duration:1,[ae,ce]=await Promise.all([Qr(F,Bi("screen","mp4"),"video",x,j),Qr(U,Bi("webcam","mp4"),"video",x,J)]);e.onComplete({screenSrc:ae.url,screenKey:ae.key,screenDuration:j,webcamSrc:ce.url,webcamKey:ce.key,webcamDuration:J})}catch(F){v(i,F instanceof Error?F.message:"Upload failed",!0),v(t,"idle")}}function T(){p&&clearInterval(p),ut(f(n)),ut(f(s)),v(n,null),v(s,null),v(t,"idle")}Qe(()=>{f(u)&&f(n)&&(f(u).srcObject=f(n),f(u).play().catch(()=>{}))}),Qe(()=>{f(h)&&f(s)&&(f(h).srcObject=f(s),f(h).play().catch(()=>{}))}),Qe(()=>()=>T());var S=ig(),C=N(S);{var P=x=>{var F=Jp(),U=N(F),V=N(U);V.muted=!0,Gr(V,oe=>v(u,oe),()=>f(u));var H=q(V,2),D=q(N(H),2);ea(D,{class:"h-3 w-3 text-white"}),we(2),M(H);var E=q(H,2),j=N(E),J=N(j,!0);M(j),M(E);var ae=q(E,2),ce=N(ae);ce.muted=!0,Gr(ce,oe=>v(h,oe),()=>f(h)),M(ae),M(U);var be=q(U,2);Ve(be,{variant:"destructive",size:"sm",class:"w-full",onclick:k,children:(oe,me)=>{var Ae=$p(),xe=Q(Ae);Cn(xe,{class:"mr-1 size-3"}),we(),_(oe,Ae)},$$slots:{default:!0}});var Be=q(be,2);{var Te=oe=>{var me=Zp(),Ae=N(me);M(me),fe(xe=>ye(Ae,`${xe??""}s remaining`),[()=>Math.round(g-f(a))]),_(oe,me)};te(Be,oe=>{f(a)>=g-10&&oe(Te)})}M(F),fe(oe=>ye(J,oe),[()=>mo(Math.floor(f(a)))]),_(x,F)},B=x=>{var F=eg(),U=N(F);cr(U,{class:"mx-auto mb-2 size-6 animate-spin text-primary"}),we(2),M(F),_(x,F)},I=x=>{var F=tg(),U=N(F),V=N(U),H=N(V);ea(H,{class:"size-4 text-muted-foreground"}),we(2),M(V);var D=q(V,4),E=N(D);vi(E,{class:"size-4 text-muted-foreground"}),we(2),M(D),M(U);var j=q(U,4);Ve(j,{variant:"default",size:"sm",class:"w-full",onclick:b,children:(J,ae)=>{we();var ce=st("Start Recording");_(J,ce)},$$slots:{default:!0}}),M(F),_(x,F)};te(C,x=>{f(t)==="recording"?x(P):f(t)==="uploading"?x(B,1):x(I,-1)})}var R=q(C,2);{var A=x=>{var F=rg(),U=N(F,!0);M(F),fe(()=>ye(U,f(i))),_(x,F)};te(R,x=>{f(i)&&x(A)})}M(S),_(r,S),ge()}const ng={id:"screen-webcam-demo",name:"Screen + Webcam Recorder",description:"Record screen and webcam together for product demos, with auto-captions",thumbnail:"/templates/screen-webcam-demo.svg",icon:fl,category:"recording",seoTitle:"Free Screen and Webcam Recorder with Auto Captions",seoDescription:"Record your screen and webcam simultaneously, then get automatic captions generated in seconds. Free online tool — no install required.",keywords:["screen recorder","webcam recorder","screen and webcam","auto captions","product demo recorder","loom alternative"],steps:[{title:"Record Screen & Webcam",description:"Record your screen and webcam at the same time",component:ag}],async apply(r,e){const{screenSrc:t,screenKey:i,screenDuration:a,webcamSrc:n,webcamKey:s,webcamDuration:o}=r,{width:c,height:l}=e.project,d=l/c,u=Math.max(a,o),h=e.currentTime,p=h+a,m=h+o,g=4*Math.min(1,d),b=Je("video",{props:{src:t,fileKey:i,width:Ze(100-g*2),height:Ze(ti(d)-g*2),borderRadius:1.2,objectFit:"cover"},style:{opacity:1,blur:0,brightness:1,contrast:1,saturate:1,dropShadowX:0,dropShadowY:8,dropShadowBlur:32,dropShadowColor:"rgba(0,0,0,0.4)"},projectDimensions:{width:c,height:l},layer:{name:"Screen Recording",enterTime:h,exitTime:p,contentDuration:a}}),k=Math.min(1,d),w=Ze(k*22),T=Ze(k*5),S=Je("video",{props:{src:n,fileKey:s,width:w,height:w,borderRadius:w,objectFit:"cover",frame:"none"},transform:{position:{x:Ze(50-w/2-T),y:Ze(d*50-w/2-T),z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1},anchor:"center"},style:{opacity:1,blur:0,brightness:1,contrast:1,saturate:1,dropShadowX:0,dropShadowY:4,dropShadowBlur:16,dropShadowColor:"rgba(0,0,0,0.5)"},projectDimensions:{width:c,height:l},layer:{name:"Webcam",enterTime:h,exitTime:m,contentDuration:o}}),C=ga(Ji.inputSchema,{}),{layersToAdd:P,layersToUpdate:B,projectUpdates:I}=await ma({action:Ji,input:C,sourceLayer:S,project:e.project});return{layersToAdd:[{layer:b,presets:[{id:"fade-in",startTime:h,duration:.3}]},{layer:S,presets:[{id:"scale-in",startTime:h+.2,duration:.4}]},...P??[]],layersToUpdate:[...B??[]],projectUpdates:{...h+u>e.project.duration?{duration:h+u}:{},...I}}}},sg=Object.freeze(Object.defineProperty({__proto__:null,template:ng},Symbol.toStringTag,{value:"Module"}));function Ar(r,e){pe(e,!0);const t=he(e,"mediaType",3,"video");Bc(r,{get mediaType(){return t()},onUpload:i=>{const a={src:i.url,fileKey:i.key,fileName:i.fileName,duration:i.duration,detectedType:i.detectedType};e.onUpdate(a),e.onComplete(a)}}),ge()}const og=Er({background:zi.default(pa).register(dt,{label:"Background",widget:"background"})}),cg={id:"video-beautifier",name:"Video Beautifier",description:"Add a beautiful background and frame to any video in seconds",thumbnail:"/templates/video-beautifier.svg",icon:ho,category:"media",seoTitle:"Free Video Beautifier — Add Background & Frame to Videos",seoDescription:"Instantly add a polished background and rounded frame to your video. Perfect for sharing on social media, presentations, and portfolios. Free tool.",keywords:["video beautifier","video background","video frame","video mockup","video presenter","social media video"],steps:[{title:"Upload Your Video",description:"Select the video you want to beautify",component:Ar,componentProps:{mediaType:"video"}},{title:"Style It",description:"Choose a background and corner radius for the frame",schema:og}],apply(r,e){const{src:t,fileKey:i,duration:a,background:n}=r,{width:s,height:o}=e.project,c=o/s,l=e.currentTime,u=l+(a??5),h=Math.min(1,c)*7,p=Je("video",{props:{src:t,fileKey:i,width:Ze(100-h*2),height:Ze(ti(c)-h*2),objectFit:"cover",frame:"arc",frameWidth:8},projectDimensions:{width:s,height:o},layer:{name:"Video",enterTime:l,exitTime:u,contentDuration:a}});return{projectUpdates:{...e.inProject?{}:{background:n,duration:u},...u>e.project.duration?{duration:u}:{}},layersToAdd:[{layer:p,presets:[{id:"fade-in",startTime:l,duration:.4}]}]}}},lg=Object.freeze(Object.defineProperty({__proto__:null,template:cg},Symbol.toStringTag,{value:"Module"})),dg=Er({url:ol().default("/demo/skeleton.html").register(dt,{label:"Website URL"}),background:zi.default(pa).register(dt,{label:"Background",widget:"background"}),laptopColor:Ti().default("#2d2d2d").register(dt,{label:"Laptop color",widget:"color"})}),ug={id:"laptop-3d-intro",name:"Laptop 3D Intro",description:"Animate any website inside a 3D laptop with a cinematic opening effect",thumbnail:"/templates/laptop-3d-intro.svg",icon:Kc,category:"composite",seoTitle:"Free 3D Laptop Intro Maker — Animate Any Website",seoDescription:"Drop any URL into a cinematic 3D laptop animation. Perfect for product launches, app showcases, and SaaS demos. Free online tool.",keywords:["laptop mockup","3d laptop animation","website mockup video","product demo animation","saas intro video","app showcase"],steps:[{title:"Configure Laptop",description:"Enter the URL to display and customize the look",schema:dg}],apply(r,e){const{url:t,laptopColor:i}=r,{width:a,height:n}=e.project,s=r.background,o=e.currentTime,l=o+7,d=n/a,u=448,h=-2e3,p=-840,m=Ze(d*60),g=Ze(d*50),k=[{time:o,property:"position.y",value:m},{time:o,property:"position.z",value:u},{time:o,property:"props.openAngle",value:180},{time:o,property:"rotation.x",value:0},{time:o,property:"rotation.y",value:0},{time:o+2.5,property:"rotation.y",value:0},{time:o+2.5,property:"rotation.x",value:1.45},{time:o+2.5,property:"props.openAngle",value:106},{time:o+2.5,property:"position.z",value:h},{time:o+2.5,property:"position.y",value:g},{time:o+4.5,property:"props.openAngle",value:64},{time:o+4.5,property:"rotation.x",value:1.1},{time:o+5.5,property:"position.z",value:p},{time:o+5.5,property:"position.y",value:g},{time:o+5.5,property:"props.openAngle",value:73}].map(S=>({...S,id:cl(),interpolation:{family:"continuous",strategy:"ease-in-out"}})),w=Qc({width:a,height:n},"laptop"),T=Je("laptop",{props:{url:t,...w,baseColor:i,screenColor:i,openAngle:180,_aspectRatio:1,_aspectRatioLocked:!1},transform:{position:{x:0,y:m,z:u},rotation:{x:0,y:0,z:0},scale:{x:1,y:1},anchor:"center"},projectDimensions:{width:a,height:n},layer:{name:"Laptop",enterTime:o,exitTime:l},keyframes:k});return{projectUpdates:{...e.inProject?{}:{background:s},...l>e.project.duration?{duration:l}:{}},layersToAdd:[{layer:T}]}}},hg=Object.freeze(Object.defineProperty({__proto__:null,template:ug},Symbol.toStringTag,{value:"Module"})),fg=Gc.schema.pick({fontFamily:!0,fontWeight:!0,fontSize:!0,textColor:!0,bgColor:!0}).extend({position:_n(["bottom","top","middle"]).default("bottom").register(dt,{label:"Position"})}),mg={id:"add-captions",name:"Auto Captions Generator",description:"Upload a video and get accurate auto-generated captions in seconds",thumbnail:"/templates/add-captions.svg",icon:Xc,category:"media",seoTitle:"Free Auto Captions Generator — Add Subtitles to Any Video",seoDescription:"Upload your video and generate accurate subtitles automatically with AI. Free online tool — no registration required to try.",keywords:["auto captions","subtitle generator","add captions to video","video transcription","automatic subtitles","free caption maker"],steps:[{title:"Upload Your Video",description:"Select a video file to add captions to",component:Ar,componentProps:{mediaType:"video"}},{title:"Caption Style",description:"Customize how your captions look",schema:fg}],async apply(r,e){const{src:t,fileKey:i,duration:a,...n}=r,{width:s,height:o}=e.project,c=e.currentTime,l=c+a,d=Je("video",{props:{src:t,fileKey:i,width:100,height:ti(o/s),objectFit:"cover",borderRadius:0,frame:"none",frameWidth:0},projectDimensions:{width:s,height:o},layer:{name:"Video",enterTime:c,exitTime:l,contentDuration:a}}),u=ga(Ji.inputSchema,n),{layersToAdd:h,layersToUpdate:p}=await ma({action:Ji,input:u,project:e.project,sourceLayer:d});return{layersToAdd:[{layer:d},...h??[]],layersToUpdate:[...p??[]],projectUpdates:{...e.project.duration<l&&{duration:l}}}}},pg=Object.freeze(Object.defineProperty({__proto__:null,template:mg},Symbol.toStringTag,{value:"Module"})),gg=Er({browserUrl:Ti().default("https://yoursite.com").register(dt,{label:"URL shown in browser bar"}),background:zi.default(pa).register(dt,{label:"Background",widget:"background"})}),bg={id:"video-to-browser",name:"Browser Mockup Video",description:"Wrap a screen recording inside an animated browser window",thumbnail:"/templates/video-to-browser.svg",icon:ml,category:"composite",seoTitle:"Free Browser Mockup Video Maker — Wrap Screen Recordings",seoDescription:"Instantly wrap your screen recording in a realistic browser window mockup. Perfect for SaaS demos, tutorials, and product videos. Free tool.",keywords:["browser mockup","screen recording mockup","browser frame video","saas demo video","product walkthrough","website mockup video"],steps:[{title:"Upload Screen Recording",description:"Select a screen recording or screenshot to wrap in a browser",component:Ar,componentProps:{mediaType:"media"}},{title:"Browser Settings",description:"Customize the browser appearance and background",schema:gg}],apply(r,e){const{src:t,fileKey:i,detectedType:a,duration:n,browserUrl:s,background:o}=r,c=a==="video",{width:l,height:d}=e.project,u=d/l,h=e.currentTime,m=h+(c?n??5:5),g=88,b=Ze(u*82),k=Je("browser",{props:{url:s,width:g,height:b},projectDimensions:e.project,style:{opacity:1,blur:0,brightness:1,contrast:1,saturate:1,dropShadowX:0,dropShadowY:16,dropShadowBlur:48,dropShadowColor:"rgba(0,0,0,0.4)"},layer:{name:"Browser",enterTime:h,exitTime:m}}),w=Ze(b-wr({width:l},40)),T=c?Je("video",{props:{src:t,fileKey:i,width:g,height:w,objectFit:"cover",borderRadius:0,frame:"none",frameWidth:0},projectDimensions:{width:l,height:d},layer:{name:"Screen Recording",enterTime:h,exitTime:m,contentDuration:n}}):Je("image",{props:{src:t,fileKey:i,width:g,height:w,objectFit:"cover"},projectDimensions:{width:l,height:d},layer:{name:"Screenshot",enterTime:h,exitTime:m}});return T.parentId=k.id,{projectUpdates:{...e.inProject?{}:{background:o},...m>e.project.duration?{duration:m}:{}},layersToAdd:[{layer:k,presets:[{id:"zoom-in",startTime:h,duration:.5}]},{layer:T,presets:[{id:"fade-in",startTime:h+.2,duration:.35}]}]}}},yg=Object.freeze(Object.defineProperty({__proto__:null,template:bg},Symbol.toStringTag,{value:"Module"})),wg=fo.map(r=>({value:r.value,label:r.label})),kg=fo.map(r=>r.value),vg=Er({targetLang:_n(kg).default("en").register(dt,{label:"Target language",widget:"select",options:wg})}),Tg={id:"translate-video",name:"Video Translator",description:"Dub your video into another language using AI voice cloning",thumbnail:"/templates/translate-video.svg",icon:Yc,category:"media",isPro:!0,seoTitle:"Free AI Video Translator — Dub Video to Any Language",seoDescription:"Translate your video into 12+ languages with AI-powered voice dubbing. Keep original lip sync and tone. Free to try — no login required.",keywords:["video translator","ai dubbing","video dubbing","translate video","voice cloning","multilingual video","video localization"],steps:[{title:"Upload Your Video",description:"Upload the video you want to translate",component:Ar,componentProps:{mediaType:"video"}},{title:"Choose Target Language",description:"Select the language you want to dub your video into",schema:vg}],async apply(r,e){const{src:t,fileKey:i,duration:a}=r,{width:n,height:s}=e.project,o=e.currentTime,c=o+a,l=Je("video",{props:{src:t,fileKey:i,width:100,height:ti(s/n),objectFit:"cover",volume:0,borderRadius:0,frame:"none",frameWidth:0},projectDimensions:{width:n,height:s},layer:{name:"Original Video",enterTime:o,exitTime:c,contentDuration:a}}),{layersToAdd:d,layersToUpdate:u}=await ma({action:vs,input:ga(vs.inputSchema,{targetLang:r.targetLang}),sourceLayer:l,project:e.project});return{layersToAdd:[{layer:l},...d??[]],layersToUpdate:u,projectUpdates:{...c>e.project.duration?{duration:c}:{}}}}},Sg=Object.freeze(Object.defineProperty({__proto__:null,template:Tg},Symbol.toStringTag,{value:"Module"})),xg=Er({aggressiveness:_n(["light","balanced","aggressive"]).default("balanced").register(dt,{label:"Cut aggressiveness"})}),Pg={id:"auto-cut",name:"Silence Remover",description:"Automatically detect and remove silent/boring parts from your video",thumbnail:"/templates/auto-cut.svg",icon:hl,category:"media",isPro:!0,seoTitle:"Free Silence Remover — Auto-Cut Dead Air from Videos",seoDescription:"Upload your video and let AI automatically detect and remove silences, pauses, and boring sections. Free online silence remover.",keywords:["silence remover","auto cut video","remove silence from video","jump cut editor","video trimmer","podcast editor","youtube editor"],steps:[{title:"Upload Your Video",description:"Upload the video you want to trim",component:Ar,componentProps:{mediaType:"video"}},{title:"Cut Settings",description:"Choose how aggressively to remove silences",schema:xg},{title:"Analyzing Video",description:"AI is detecting silences and boring sections...",async execute(r,e,t){const i=r.fileKey,a=r.duration,n=r.aggressiveness??"balanced";t(.1);const s=await Fm({fileKey:i});t(.8);let o;const c=s.success?s.data:null,l=c?.success?c.annotation:null;if(l){const d=n==="light"?["dead-space"]:n==="balanced"?["dead-space","tangent"]:["dead-space","tangent","outro"];o=l.segments.filter(u=>!d.includes(u.type)).map(u=>({start:u.start,end:u.end}))}else{const d=n==="light"?30:n==="balanced"?20:10;o=[];for(let u=0;u<a;u+=d+1)o.push({start:u,end:Math.min(u+d,a)})}return o.length===0&&o.push({start:0,end:a}),t(1),{segments:o,fileKey:i,src:r.src}}}],apply(r,e){const{src:t,fileKey:i,duration:a,segments:n}=r,{width:s,height:o}=e.project,c=e.currentTime,l=n??[{start:0,end:a}],d=[];let u=c;for(const h of l){const p=h.end-h.start,m=Je("video",{props:{src:t,fileKey:i,width:100,height:ti(o/s),objectFit:"cover",borderRadius:0,frame:"none",frameWidth:0},projectDimensions:{width:s,height:o},layer:{name:`Clip ${Math.round(h.start)}s–${Math.round(h.end)}s`,enterTime:u,exitTime:u+p,contentDuration:a,contentOffset:h.start}});d.push({layer:m}),u+=p}return{layersToAdd:d,projectUpdates:{...u>e.project.duration?{duration:u}:{}}}}},Cg=Object.freeze(Object.defineProperty({__proto__:null,template:Pg},Symbol.toStringTag,{value:"Module"})),_g=Er({headline:Ti().default("").register(dt,{label:"Headline text"}),subtext:Ti().default("").register(dt,{label:"Subtext (optional)"}),background:zi.default({type:"linear",angle:135,stops:[{color:"#667eea",position:0},{color:"#764ba2",position:100}]}).register(dt,{label:"Background",widget:"background"}),animateIn:ll().default(!0).register(dt,{label:"Animate screenshot in"})}),Ig={id:"screenshot-to-social",name:"Screenshot to Social Card",description:"Turn any screenshot into an animated social media card with text and branding",thumbnail:"/templates/screenshot-to-social.svg",icon:Fl,category:"composite",seoTitle:"Free Screenshot to Social Card Maker — Animated Video",seoDescription:"Drop a screenshot and turn it into a polished animated social card with gradient background, headline, and smooth reveal animation. Free.",keywords:["screenshot to video","social media card maker","animated social post","product screenshot","marketing video maker","twitter card video"],steps:[{title:"Upload Media",description:"Upload a screenshot, image, or video to showcase",component:Ar,componentProps:{mediaType:"media"}},{title:"Card Content",description:"Add your headline, subtext, and choose a background color",schema:_g}],apply(r,e){const{src:t,fileKey:i,detectedType:a,duration:n,headline:s,subtext:o,background:c,animateIn:l}=r,d=a==="video",{width:u,height:h}=e.project,p=h/u,m=e.currentTime,b=m+(n??5),k=[],w=Je("shape",{props:{shapeType:"rectangle",background:c,width:100,height:ti(p),borderRadius:0},projectDimensions:{width:u,height:h},layer:{name:"Background",enterTime:m,exitTime:b}});k.push({layer:w});const T=75,S=Ze(T*.56),C=s||o,P={opacity:1,blur:0,brightness:1,contrast:1,saturate:1,dropShadowX:0,dropShadowY:12,dropShadowBlur:40,dropShadowColor:"rgba(0,0,0,0.35)"},B={position:{x:0,y:C?-Ze(p*8):0,z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1},anchor:"center"},I=d?Je("video",{props:{src:t,fileKey:i,width:T,height:S,borderRadius:12,objectFit:"cover"},transform:B,style:P,layer:{name:"Video",enterTime:m,exitTime:b,contentDuration:n}}):Je("image",{props:{src:t,fileKey:i,width:T,height:S,objectFit:"cover"},transform:B,style:P,layer:{name:"Screenshot",enterTime:m,exitTime:b}});if(k.push({layer:I,presets:l?[{id:"zoom-in",startTime:m,duration:.6}]:void 0}),s){const R=Je("text",{props:{content:s,fontSize:42,fontWeight:"700",color:"#ffffff",textAlign:"center",letterSpacing:-.5},transform:{position:{x:0,y:Ze(p*50-wr({width:u},72)),z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1},anchor:"center"},layer:{name:"Headline",enterTime:m,exitTime:b}});k.push({layer:R,presets:[{id:"slide-in-bottom",startTime:m+.25,duration:.5}]})}if(o){const R=Je("text",{props:{content:o,fontSize:22,fontWeight:"400",color:"rgba(255,255,255,0.7)",textAlign:"center",letterSpacing:.2},transform:{position:{x:0,y:Ze(p*50-wr({width:u},30)),z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1},anchor:"center"},layer:{name:"Subtext",enterTime:m,exitTime:b}});k.push({layer:R,presets:[{id:"slide-in-bottom",startTime:m+.4,duration:.5}]})}return{layersToAdd:k,projectUpdates:{...b>e.project.duration?{duration:Math.ceil(b)}:{}}}}},Eg=Object.freeze(Object.defineProperty({__proto__:null,template:Ig},Symbol.toStringTag,{value:"Module"})),Ag={id:"generate-video",name:"AI Video Generator",description:"Generate a video from a text prompt using Seedance 2.0 AI",thumbnail:"/templates/generate-video.svg",icon:ho,category:"media",isPro:!0,seoTitle:"Free AI Video Generator — Text to Video in Seconds",seoDescription:"Generate stunning AI videos from text prompts using state-of-the-art Seedance 2.0 model. Native audio, any aspect ratio. Free to try.",keywords:["ai video generator","text to video","ai video creation","seedance","video generation","generative ai video"],steps:[{title:"Describe Your Video",description:"Write a prompt and choose generation settings",schema:$c}],async apply(r,e){const{layersToAdd:t,layersToUpdate:i,projectUpdates:a}=await ma({action:Ts,input:ga(Ts.inputSchema,r),project:e.project});return{layersToAdd:t,layersToUpdate:i,projectUpdates:a}}},Fg=Object.freeze(Object.defineProperty({__proto__:null,template:Ag},Symbol.toStringTag,{value:"Module"})),Bg=Er({phoneColor:Ti().default("#1f2937").register(dt,{label:"Phone Frame Color",widget:"color"}),background:zi.default(pa).register(dt,{label:"Background",widget:"background"})}),Rg={id:"video-to-phone",name:"Phone Mockup Video",description:"Wrap your video or screenshot inside an animated phone frame",thumbnail:"/templates/video-to-phone.svg",icon:Zc,category:"composite",seoTitle:"Free Phone Mockup Video Maker — Wrap Videos in a Phone Frame",seoDescription:"Instantly wrap your video or screenshot in a realistic phone mockup. Perfect for app demos, social media content, and product showcases. Free tool.",keywords:["phone mockup","mobile mockup video","app demo video","smartphone frame","iphone mockup","social media mockup"],steps:[{title:"Upload Your Video",description:"Select a video or screenshot to display inside the phone",component:Ar,componentProps:{mediaType:"media"}},{title:"Phone Settings",description:"Customize the phone frame color and background",schema:Bg}],apply(r,e){const{src:t,fileKey:i,detectedType:a,duration:n,phoneColor:s,background:o}=r,c=a==="video",{width:l,height:d}=e.project,u=e.currentTime,p=u+(c?n??5:5),m=Ze(Math.min(45,wr({width:l},375))),g=Ze(m*(667/375)),b=wr({width:l},12),k=wr({width:l},28),w=Je("phone",{props:{width:m,height:g,phoneColor:s,borderRadius:wr({width:l},40),bezelWidth:b,notchHeight:k,showNotch:!0},projectDimensions:e.project,style:{opacity:1,blur:0,brightness:1,contrast:1,saturate:1,dropShadowX:0,dropShadowY:20,dropShadowBlur:60,dropShadowColor:"rgba(0,0,0,0.45)"},layer:{name:"Phone Frame",enterTime:u,exitTime:p}}),T=m-b*2,S=g-b*2-k,C=c?Je("video",{props:{src:t,fileKey:i,width:T,height:S,objectFit:"cover",borderRadius:0,frame:"none",frameWidth:0},projectDimensions:{width:l,height:d},layer:{name:"Video",enterTime:u,exitTime:p,contentDuration:n}}):Je("image",{props:{src:t,fileKey:i,width:T,height:S,objectFit:"cover"},projectDimensions:{width:l,height:d},layer:{name:"Screenshot",enterTime:u,exitTime:p}});return C.parentId=w.id,{projectUpdates:{...e.inProject?{}:{background:o,duration:p},...p>e.project.duration?{duration:p}:{}},layersToAdd:[{layer:w,presets:[{id:"zoom-in",startTime:u,duration:.5}]},{layer:C,presets:[{id:"fade-in",startTime:u+.2,duration:.35}]}]}}},zg=Object.freeze(Object.defineProperty({__proto__:null,template:Rg},Symbol.toStringTag,{value:"Module"})),Dg=Object.assign({"./templates/1-screen-webcam-demo.ts":sg,"./templates/10-video-beautifier.ts":lg,"./templates/2-laptop-3d-intro.ts":hg,"./templates/3-add-captions.ts":pg,"./templates/4-video-to-browser.ts":yg,"./templates/5-translate-video.ts":Sg,"./templates/6-auto-cut.ts":Cg,"./templates/7-screenshot-to-social.ts":Eg,"./templates/8-generate-video.ts":Fg,"./templates/9-video-to-phone.ts":zg}),Mg=Object.values(Dg).map(r=>r.template);function B0(r){return Mg.find(e=>e.id===r)}function li(r){return"execute"in r}function co(r){return"schema"in r}function lo(r){return"component"in r}var Ng=W('<div class="space-y-3"></div>');function Og(r,e){pe(e,!0);const t=he(e,"initialValues",19,()=>({})),i=L(()=>dl(e.step.schema)),a=L(()=>ul(e.step.schema));let n=L(()=>({...f(a),...t()}));const s={id:"__template__",name:"Template",type:"text",transform:{position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1},anchor:"center",positionOrigin:"center"},style:{opacity:1,blur:0,brightness:1,contrast:1,saturate:1,dropShadowX:0,dropShadowY:0,dropShadowBlur:0,dropShadowColor:"transparent"},visible:!0,locked:!1,keyframes:[],props:{}};function o(l,d){v(n,{...f(n),[l]:d}),e.onUpdate(f(n))}pl(()=>{e.onUpdate(f(n))});var c=Ng();Pi(c,21,()=>f(i),l=>l.name,(l,d)=>{var u=ne(),h=Q(u);{var p=m=>{{let g=L(()=>`template.${f(d).name}`),b=L(()=>f(d).meta?.label??f(d).description??f(d).name);Jc(m,{get for(){return f(g)},get label(){return f(b)},children:(k,w)=>{Yp(k,{get metadata(){return f(d)},get value(){return f(n)[f(d).name]},onUpdateProp:o,get layer(){return s},targetPath:"props"})},$$slots:{default:!0}})}};te(h,m=>{f(d).meta?.hidden||m(p)})}_(l,u)}),M(c),_(r,c),ge()}var Ug=W('<p class="text-[10px] text-muted-foreground"> </p>'),Vg=W('<p class="mb-4 text-xs text-muted-foreground"> </p>'),Lg=W('<!> <!> <p class="text-xs text-muted-foreground"> </p>',1),Wg=W('<p class="text-xs text-destructive"> </p> <!>',1),Hg=W('<div class="flex flex-col items-center gap-4 py-8"><!> <!></div>'),jg=W('<div class="flex gap-2 border-t p-3"><!> <!></div>'),qg=W('<div class="flex gap-2 border-t p-3"><!></div>'),Kg=W('<div class="relative flex flex-1 flex-col"><!> <div class="flex items-center gap-2 border-b p-3"><button class="rounded p-1 hover:bg-muted" aria-label="Back"><!></button> <div class="flex-1"><h3 class="text-sm font-medium"> </h3> <!></div></div> <div class="flex-1 overflow-auto p-4"><!> <!></div> <!></div>');function R0(r,e){pe(e,!0);let t=K(0),i=K(Ri({})),a=K(!1),n=K(0),s=K(null);const o=L(()=>e.template?.steps?.[f(t)]),c=L(()=>f(t)===(e.template?.steps?.length??1)-1),l=L(()=>e.template?.steps?.length??0);function d(){return{project:e.projectStore.state,currentTime:e.projectStore.currentTime,inProject:e.inProject}}function u(ee){v(i,{...f(i),...ee},!0)}async function h(ee){v(i,{...f(i),...ee},!0),f(c)?await w():(Or(t),await b())}async function p(){f(c)?await w():(Or(t),await b())}function m(){Ra("template_cancelled",{templateId:e.template.id,templateName:e.template.name,stepReached:f(t)}),Rt("template_cancelled",{templateId:e.template.id,templateName:e.template.name,stepReached:f(t)}),e.onCancel()}function g(){f(t)>0?Or(t,-1):m()}async function b(){const ee=e.template.steps[f(t)];li(ee)&&await k()}async function k(){const ee=e.template.steps[f(t)];if(li(ee)){v(a,!0),e.onSetAiStreaming?.(!0),v(n,0),v(s,null);try{const z=await ee.execute(f(i),d(),$=>{v(n,$,!0)});v(i,{...f(i),...z},!0),f(c)?await w():(Or(t),await b())}catch(z){v(s,z instanceof Error?z.message:"An error occurred",!0)}finally{v(a,!1),e.onSetAiStreaming?.(!1)}}}async function w(){const ee=d();v(a,!0),e.onSetAiStreaming?.(!0);try{const z=await e.template.apply(f(i),ee);el(e.projectStore,z)}catch(z){v(s,z instanceof Error?z.message:"An error occurred",!0)}finally{v(a,!1),e.onSetAiStreaming?.(!1)}Ra("template_completed",{templateId:e.template.id,templateName:e.template.name}),Rt("template_completed",{templateId:e.template.id,templateName:e.template.name}),e.onComplete()}Qe(()=>{li(e.template.steps[0])&&k()}),Qe(()=>{Ra("template_started",{templateId:e.template.id,templateName:e.template.name}),Rt("template_started",{templateId:e.template.id,templateName:e.template.name})});var T=Kg(),S=N(T);{var C=ee=>{ym(ee,{get active(){return f(a)},inset:!0})};te(S,ee=>{e.inProject||ee(C)})}var P=q(S,2),B=N(P),I=N(B);_l(I,{class:"h-4 w-4"}),M(B);var R=q(B,2),A=N(R),x=N(A,!0);M(A);var F=q(A,2);{var U=ee=>{var z=Ug(),$=N(z);M(z),fe(()=>ye($,`Step ${f(t)+1} of ${f(l)??""}: ${f(o).title??""}`)),_(ee,z)};te(F,ee=>{f(l)>1&&ee(U)})}M(R),M(P);var V=q(P,2),H=N(V);{var D=ee=>{var z=Vg(),$=N(z,!0);M(z),fe(()=>ye($,f(o).description)),_(ee,z)};te(H,ee=>{f(o).description&&ee(D)})}var E=q(H,2);{var j=ee=>{Og(ee,{get step(){return f(o)},get initialValues(){return f(i)},onUpdate:u})},J=L(()=>co(f(o))),ae=ee=>{const z=L(()=>f(o).component);var $=ne(),Z=Q($);{let de=L(d);ve(Z,()=>f(z),(Se,ue)=>{ue(Se,Ee({get values(){return f(i)},get ctx(){return f(de)},onUpdate:u,onComplete:h},()=>f(o).componentProps))})}_(ee,$)},ce=L(()=>lo(f(o))),be=ee=>{var z=Hg(),$=N(z);{var Z=ue=>{var He=Lg(),De=Q(He);cr(De,{class:"h-8 w-8 animate-spin text-muted-foreground"});var Re=q(De,2);{let Ue=L(()=>f(n)*100);Co(Re,{get value(){return f(Ue)},class:"w-full"})}var Ce=q(Re,2),_e=N(Ce);M(Ce),fe(Ue=>ye(_e,`${Ue??""}%`),[()=>Math.round(f(n)*100)]),_(ue,He)};te($,ue=>{f(a)&&ue(Z)})}var de=q($,2);{var Se=ue=>{var He=Wg(),De=Q(He),Re=N(De,!0);M(De);var Ce=q(De,2);Ve(Ce,{variant:"outline",size:"sm",onclick:k,children:(_e,Ue)=>{we();var Me=st("Retry");_(_e,Me)},$$slots:{default:!0}}),fe(()=>ye(Re,f(s))),_(ue,He)};te(de,ue=>{f(s)&&ue(Se)})}M(z),_(ee,z)},Be=L(()=>li(f(o)));te(E,ee=>{f(J)?ee(j):f(ce)?ee(ae,1):f(Be)&&ee(be,2)})}M(V);var Te=q(V,2);{var oe=ee=>{var z=jg(),$=N(z);Ve($,{variant:"outline",size:"sm",class:"flex-1",onclick:m,children:(de,Se)=>{we();var ue=st("Cancel");_(de,ue)},$$slots:{default:!0}});var Z=q($,2);Ve(Z,{size:"sm",class:"flex-1",onclick:p,children:(de,Se)=>{var ue=ne(),He=Q(ue);{var De=Ce=>{var _e=st("Apply");_(Ce,_e)},Re=Ce=>{var _e=st("Next");_(Ce,_e)};te(He,Ce=>{f(c)?Ce(De):Ce(Re,-1)})}_(de,ue)},$$slots:{default:!0}}),M(z),_(ee,z)},me=L(()=>co(f(o))),Ae=ee=>{var z=qg(),$=N(z);Ve($,{variant:"outline",size:"sm",class:"flex-1",onclick:m,children:(Z,de)=>{we();var Se=st("Cancel");_(Z,Se)},$$slots:{default:!0}}),M(z),_(ee,z)},xe=L(()=>lo(f(o))||li(f(o)));te(Te,ee=>{f(me)?ee(oe):f(xe)&&ee(Ae,1)})}M(T),fe(()=>ye(x,e.template.name)),_t("click",B,g),_(r,T),ge()}Jr(["click"]);export{Am as A,Il as C,E0 as E,Yp as I,cn as R,Fc as S,R0 as T,wm as a,ym as b,F0 as c,A0 as d,hd as e,ud as f,B0 as g,Mg as t,Qr as u};
|