sliccy 6.248.0 → 6.248.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/dist/ui/.vite/manifest.json +199 -199
  2. package/dist/ui/assets/{account-store-FDmqEyc_.js → account-store-D6Y7UkDR.js} +1 -1
  3. package/dist/ui/assets/{account-store-BkN60EtH.js → account-store-ns4WYcMU.js} +1 -1
  4. package/dist/ui/assets/{adobe-CI9nanFm.js → adobe-DUTM1MYN.js} +1 -1
  5. package/dist/ui/assets/{adobe-L_MHYu1T.js → adobe-X7Inkd3y.js} +1 -1
  6. package/dist/ui/assets/{agent-panels-BDnsWwN2.js → agent-panels-CKJsRdkX.js} +1 -1
  7. package/dist/ui/assets/{almost-bash-shell-headless-QSWifL7a.js → almost-bash-shell-headless-ClalXJjr.js} +15 -15
  8. package/dist/ui/assets/{apply-layout-BPgEnWZ3.js → apply-layout-CchSfN26.js} +1 -1
  9. package/dist/ui/assets/{azure-openai-C4WHDOWB.js → azure-openai-CKbMQD0r.js} +1 -1
  10. package/dist/ui/assets/{azure-openai-DabYCVA8.js → azure-openai-DyFYxvm3.js} +1 -1
  11. package/dist/ui/assets/{bunny-probe-Dv_4dvDI.js → bunny-probe-C4NWuNUc.js} +1 -1
  12. package/dist/ui/assets/{bunny-run-C3mkV7x4.js → bunny-run-i0aWgiSm.js} +1 -1
  13. package/dist/ui/assets/{cdp-5m8tjCWg.js → cdp-DQxci1TE.js} +1 -1
  14. package/dist/ui/assets/{cerebras-Bgdtj0Wh.js → cerebras-CxUX42e1.js} +1 -1
  15. package/dist/ui/assets/{cerebras-DfCmVCQO.js → cerebras-DIP7_DDR.js} +1 -1
  16. package/dist/ui/assets/{composer-speech-CezH2Yjn.js → composer-speech-BG6t0naa.js} +1 -1
  17. package/dist/ui/assets/{connect-surface-4mAa0jpU.js → connect-surface-D2XK41nE.js} +1 -1
  18. package/dist/ui/assets/{directed-approval-DkYT0fDn.js → directed-approval-B12urAW4.js} +1 -1
  19. package/dist/ui/assets/{emscripten-vfs-hook-D6krLTVP.js → emscripten-vfs-hook-CWvY9WeB.js} +1 -1
  20. package/dist/ui/assets/{fast-path-B1LDE8dF.js → fast-path-R8Tr2lTS.js} +1 -1
  21. package/dist/ui/assets/{frozen-archive-writer-MeOjwNWp.js → frozen-archive-writer-CbV_CMOh.js} +1 -1
  22. package/dist/ui/assets/{frozen-archive-writer-B84-12Q-.js → frozen-archive-writer-Ceh2la4q.js} +1 -1
  23. package/dist/ui/assets/{frozen-session-delete-Ft3YnzHq.js → frozen-session-delete-D5D_Ne2e.js} +1 -1
  24. package/dist/ui/assets/{frozen-session-identity-Co05uo8C.js → frozen-session-identity-BaOmOPkW.js} +1 -1
  25. package/dist/ui/assets/{frozen-session-identity-C3uccRvy.js → frozen-session-identity-gJ9_AdhB.js} +1 -1
  26. package/dist/ui/assets/{gelatiere-unit-B53jkBE6.js → gelatiere-unit-C7ZNZUSc.js} +1 -1
  27. package/dist/ui/assets/{github-CHdguYxL.js → github-1mLybvS_.js} +1 -1
  28. package/dist/ui/assets/{github-C_AGuBfS.js → github-6DwMsMnA.js} +1 -1
  29. package/dist/ui/assets/{github-copilot-DQK93vQ9.js → github-copilot-BfIxbhi4.js} +1 -1
  30. package/dist/ui/assets/{github-copilot-jurE-8Xq.js → github-copilot-N-tzbR5P.js} +1 -1
  31. package/dist/ui/assets/{hear-Bb5nLl8m.js → hear-Ct45sfIf.js} +1 -1
  32. package/dist/ui/assets/{js-realm-worker-BXTtb6iw.js → js-realm-worker-Cu7m3Um0.js} +2 -2
  33. package/dist/ui/assets/{jsh-executor-HYv0wIZ0.js → jsh-executor-Dl-C6Zsf.js} +2 -2
  34. package/dist/ui/assets/{kernel-worker-l6DSPN07.js → kernel-worker-C8b5lZTP.js} +8 -8
  35. package/dist/ui/assets/{lick-ws-bridge-Cup5qWao.js → lick-ws-bridge-D-E79_1_.js} +1 -1
  36. package/dist/ui/assets/{lick-ws-bridge-m7es0lmB.js → lick-ws-bridge-h5gzMRSW.js} +1 -1
  37. package/dist/ui/assets/{live-session-curation-B_jzobDd.js → live-session-curation-Cyo4-AT4.js} +1 -1
  38. package/dist/ui/assets/{live-session-curation-DAmfIssm.js → live-session-curation-SLge-cX1.js} +1 -1
  39. package/dist/ui/assets/{live-session-snapshot-DV6In8Sf.js → live-session-snapshot-pRBKYrJ8.js} +1 -1
  40. package/dist/ui/assets/{local-llm-BQPMfYF3.js → local-llm-BlHvV5yP.js} +1 -1
  41. package/dist/ui/assets/{local-llm-8nTkYqWN.js → local-llm-ENpj_eMH.js} +1 -1
  42. package/dist/ui/assets/{main-CLRSdtmZ.js → main-DfG-7olk.js} +3 -3
  43. package/dist/ui/assets/{main-cherry-DJ0R00FA.js → main-cherry-C7-exyW-.js} +1 -1
  44. package/dist/ui/assets/{mcp-command-CNxsh07S.js → mcp-command-17_LRqwb.js} +10 -10
  45. package/dist/ui/assets/{memory-curation-seam-BF1fM9p9.js → memory-curation-seam-CCSYlceq.js} +1 -1
  46. package/dist/ui/assets/{memory-health-C7hUDq-D.js → memory-health-BvHYn77g.js} +1 -1
  47. package/dist/ui/assets/{memory-write-execute-B8d44JHk.js → memory-write-execute-DgQbDA3A.js} +1 -1
  48. package/dist/ui/assets/{merge-folded-cost-into-frozen-Bk3ClpVU.js → merge-folded-cost-into-frozen-JhDEaEfs.js} +1 -1
  49. package/dist/ui/assets/{new-session-CXMafKe2.js → new-session-CnoNDTuz.js} +2 -2
  50. package/dist/ui/assets/{oauth-bootstrap-DuCCIFMa.js → oauth-bootstrap-ChsezcFC.js} +2 -2
  51. package/dist/ui/assets/{onboarding-orchestrator-Cqvbg5mV.js → onboarding-orchestrator-DVgfzjFI.js} +1 -1
  52. package/dist/ui/assets/{openai-codex-CyU1qDYB.js → openai-codex-C-kcHoOI.js} +1 -1
  53. package/dist/ui/assets/{openai-codex-ClfauVfu.js → openai-codex-Dv0f6Zky.js} +1 -1
  54. package/dist/ui/assets/{openrouter-BSEcWRIc.js → openrouter-43Pclqtc.js} +1 -1
  55. package/dist/ui/assets/{openrouter-Dga3GWST.js → openrouter-Cpv4zDcO.js} +1 -1
  56. package/dist/ui/assets/{openrouter-free-Dtr51tJ1.js → openrouter-free-ChP9MxdX.js} +1 -1
  57. package/dist/ui/assets/{openrouter-free-BHqdhvX8.js → openrouter-free-FKyXQM6S.js} +1 -1
  58. package/dist/ui/assets/{openrouter-oauth-Ch1MIr49.js → openrouter-oauth-BG3--aWC.js} +1 -1
  59. package/dist/ui/assets/{openrouter-oauth-DhBEW2GX.js → openrouter-oauth-CNF2eLlh.js} +1 -1
  60. package/dist/ui/assets/{panel-rpc-handlers-DlMn35mu.js → panel-rpc-handlers-bwwGloEJ.js} +2 -2
  61. package/dist/ui/assets/{panelize-shell-pJI2ds4h.js → panelize-shell-CHcICs0K.js} +1 -1
  62. package/dist/ui/assets/{pi-edit-execution-DjPDWHN6.js → pi-edit-execution-De18yFud.js} +1 -1
  63. package/dist/ui/assets/{provider-CTYGYQUH.js → provider-BXpJxeAj.js} +1 -1
  64. package/dist/ui/assets/{provider-0c8iwrWe.js → provider-CkRuiBXe.js} +1 -1
  65. package/dist/ui/assets/{provider-settings-C3hj2qLy.js → provider-settings-BiHtUcJy.js} +1 -1
  66. package/dist/ui/assets/provider-store-access-BGpLWm69.js +1 -0
  67. package/dist/ui/assets/provider-store-access-BWuEjd9t.js +1 -0
  68. package/dist/ui/assets/{providers-BCxZdggt.js → providers-4SFNzKj4.js} +2 -2
  69. package/dist/ui/assets/{providers-LdGzFZ4T.js → providers-CNMsS7p4.js} +1 -1
  70. package/dist/ui/assets/{quick-llm-Dvu7_VEC.js → quick-llm-D46cR1qL.js} +1 -1
  71. package/dist/ui/assets/{realm-inprocess-COVtouC-.js → realm-inprocess-BM3rzakW.js} +2 -2
  72. package/dist/ui/assets/{realm-unhandled-rejections-CyzLyQVE.js → realm-unhandled-rejections-CtQi1yQa.js} +1 -1
  73. package/dist/ui/assets/{realm-unhandled-rejections-miZXfpdf.js → realm-unhandled-rejections-OEjbIKa3.js} +1 -1
  74. package/dist/ui/assets/{recovery-screen-C3mGwJXM.js → recovery-screen-f0eMynNT.js} +1 -1
  75. package/dist/ui/assets/{remote-terminal-view-DA9qSreB.js → remote-terminal-view-BvBX-VtU.js} +2 -2
  76. package/dist/ui/assets/{restore-DweeEI5H.js → restore-DB68Gs49.js} +1 -1
  77. package/dist/ui/assets/{run-BlZXS5VD.js → run-Cb9nH_3a.js} +1 -1
  78. package/dist/ui/assets/{run-pxEajv3p.js → run-DbiSqYHp.js} +2 -2
  79. package/dist/ui/assets/{run-DjyzdK6H.js → run-Ddy8I2eX.js} +1 -1
  80. package/dist/ui/assets/{run-BqizcKZL.js → run-DwJ5gSg3.js} +1 -1
  81. package/dist/ui/assets/{run-DKI4Q0IT.js → run-DxAKJMli.js} +2 -2
  82. package/dist/ui/assets/{run-BJn_AkZa.js → run-QCY2mHg_.js} +2 -2
  83. package/dist/ui/assets/{run-5vBazlXX.js → run-lA9Glhv6.js} +2 -2
  84. package/dist/ui/assets/{serve-command-Dg5Olzd4.js → serve-command-CrjFrMtN.js} +2 -2
  85. package/dist/ui/assets/{serve-runtime-C6CXw1FT.js → serve-runtime-Df_C7Bwg.js} +1 -1
  86. package/dist/ui/assets/{session-command-memory-C3km1ebv.js → session-command-memory-CsOEa_ms.js} +2 -2
  87. package/dist/ui/assets/{session-jsonl-BFqRLC9t.js → session-jsonl-By2cMFbj.js} +1 -1
  88. package/dist/ui/assets/{session-jsonl-Cje6_qaO.js → session-jsonl-CMk3OfCb.js} +1 -1
  89. package/dist/ui/assets/{session-search-index-Dw7xman4.js → session-search-index-CQZ4zHoN.js} +1 -1
  90. package/dist/ui/assets/{setup-feature-flags-remote-qygPVxoO.js → setup-feature-flags-remote-B5Zj6DG2.js} +1 -1
  91. package/dist/ui/assets/{setup-model-catalog-WDO7DTOY.js → setup-model-catalog-DF_b-L0I.js} +1 -1
  92. package/dist/ui/assets/{silent-renew-backoff-D5eEd4h4.js → silent-renew-backoff-DdGLoVuv.js} +1 -1
  93. package/dist/ui/assets/slicc-version-BHbvdY0F.js +1 -0
  94. package/dist/ui/assets/{soundscape-D2yAEC30.js → soundscape-DEhbJ-ug.js} +1 -1
  95. package/dist/ui/assets/{speak-9_w2KmgY.js → speak-BoErE_TJ.js} +1 -1
  96. package/dist/ui/assets/{sprinkle-manager-DAVHkkbi.js → sprinkle-manager-Bl1h68AL.js} +1 -1
  97. package/dist/ui/assets/{sprinkle-renderer-DuMi8FZu.js → sprinkle-renderer-B9Kv4iHS.js} +1 -1
  98. package/dist/ui/assets/{src-ZJb5IA56.js → src-BQf5Kp1T.js} +4 -4
  99. package/dist/ui/assets/{ssh-DIsV8LDi.js → ssh-CMLjKc-C.js} +1 -1
  100. package/dist/ui/assets/{sudo-BbxT9dEZ.js → sudo-CXCObhqu.js} +1 -1
  101. package/dist/ui/assets/{supervisor-iX4QKDOR.js → supervisor-D09OiqeU.js} +1 -1
  102. package/dist/ui/assets/{sync-dialog-zI7QRePu.js → sync-dialog-D-i17d_q.js} +1 -1
  103. package/dist/ui/assets/{transformers-env-BTtpsj1k.js → transformers-env-C6K6s36u.js} +1 -1
  104. package/dist/ui/assets/{tray-leader-CPtZsYF_.js → tray-leader-0GIP6SM2.js} +1 -1
  105. package/dist/ui/assets/{tray-leave-runtime-9NFCh-OV.js → tray-leave-runtime-TPEwLpwn.js} +1 -1
  106. package/dist/ui/assets/{tray-sidecar-CxcBFmLR.js → tray-sidecar-Cjoy27SR.js} +1 -1
  107. package/dist/ui/assets/{upgrade-detection-KZg3nu88.js → upgrade-detection-Du2ZH4V4.js} +1 -1
  108. package/dist/ui/assets/{voice-reply-lXEY7fLr.js → voice-reply-Bcxvx3tf.js} +1 -1
  109. package/dist/ui/assets/{wc-attach-d7iFUZVb.js → wc-attach-x14l9M_B.js} +2 -2
  110. package/dist/ui/assets/{wc-browser-BWwEqBG6.js → wc-browser-C2zfIRBm.js} +1 -1
  111. package/dist/ui/assets/{wc-computers-BHwWpM5B.js → wc-computers-D3xFwdpr.js} +1 -1
  112. package/dist/ui/assets/{wc-detached-CMHQcwlP.js → wc-detached-CAFjtMoz.js} +1 -1
  113. package/dist/ui/assets/{wc-extension-DZnmbU6k.js → wc-extension-BR312mr2.js} +2 -2
  114. package/dist/ui/assets/{wc-follower-Deo6df6y.js → wc-follower-DE7WQb_h.js} +3 -3
  115. package/dist/ui/assets/{wc-follower-oauth-B1P6W8Yj.js → wc-follower-oauth-DFiPwVPW.js} +1 -1
  116. package/dist/ui/assets/{wc-gelatiere-CziYOq8J.js → wc-gelatiere-DjxUMudk.js} +1 -1
  117. package/dist/ui/assets/{wc-live-jg9LW9uz.js → wc-live-aEmb1wYY.js} +5 -5
  118. package/dist/ui/assets/{wc-nav-B6fLsyVF.js → wc-nav-DaPUjCh_.js} +2 -2
  119. package/dist/ui/assets/{wc-onboarding-cgTyO83Q.js → wc-onboarding-CuZD2L7O.js} +2 -2
  120. package/dist/ui/assets/{wc-permissions-BJxUPVTs.js → wc-permissions-dmftxiz6.js} +2 -2
  121. package/dist/ui/assets/{wc-placeholder-DgHj09af.js → wc-placeholder-Dsw3z2er.js} +3 -3
  122. package/dist/ui/assets/{wc-secret-request-CTiSZORv.js → wc-secret-request-B4EOYPwa.js} +1 -1
  123. package/dist/ui/assets/{wc-settings-XxWXuggO.js → wc-settings-BnIaH8l3.js} +3 -3
  124. package/dist/ui/assets/{wc-shell-wjSyYHqZ.js → wc-shell-fIEX0Fr7.js} +3 -3
  125. package/dist/ui/assets/{wc-shortcut-config-C3Uwn-1A.js → wc-shortcut-config-BDxnaOQ1.js} +1 -1
  126. package/dist/ui/assets/{wc-sprinkles-CificfZy.js → wc-sprinkles-DUpa4cWM.js} +2 -2
  127. package/dist/ui/assets/{wc-transcript-export-B2GWacEz.js → wc-transcript-export-r0Cw8Qpa.js} +2 -2
  128. package/dist/ui/assets/{wc-tray-Dirthj9a.js → wc-tray-BY31Fswm.js} +4 -4
  129. package/dist/ui/assets/welcome-detection-Cf37YU0q.js +1 -0
  130. package/dist/ui/assets/{whisper-session-CI2u0Ubk.js → whisper-session-DoB1nala.js} +2 -2
  131. package/dist/ui/assets/{xai-grok-kRToQedW.js → xai-grok-DUH1s394.js} +1 -1
  132. package/dist/ui/assets/{xai-grok-BD381UKi.js → xai-grok-GgyXbIKx.js} +1 -1
  133. package/dist/ui/index.html +3 -3
  134. package/dist/ui/packages/webapp/index.html +3 -3
  135. package/package.json +1 -1
  136. package/dist/ui/assets/provider-store-access-BEYORD5i.js +0 -1
  137. package/dist/ui/assets/provider-store-access-Dh8EgHTI.js +0 -1
  138. package/dist/ui/assets/slicc-version-DRWYpBwd.js +0 -1
  139. package/dist/ui/assets/welcome-detection-CHWDLLYC.js +0 -1
@@ -38,7 +38,7 @@ var j=class e{constructor(e){this.bytes=e,this.pos=0}seekToByte(e){this.pos=8*e}
38
38
  * License, v. 2.0. If a copy of the MPL was not distributed with this
39
39
  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
40
40
  */
41
- const Ut=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],Wt=[-1,1,2,3,4,5,6,8],Gt=e=>{if(!e||e.byteLength<2)throw TypeError(`AAC description must be at least 2 bytes long.`);let t=new j(e),n=Kt(t),{frequencyIndex:r,sampleRate:i}=qt(t),a=t.readBits(4),o=null;a>=1&&a<=7&&(o=Wt[a]);let s=n,c=!1,l=i;if(n===5||n===29)c=n===29,l=qt(t).sampleRate,s=Kt(t),s===22&&t.skipBits(4);else for(;t.getBitsLeft()>15;){let e=t.pos;if(t.readBits(11)!==695){t.pos=e+1;continue}Kt(t)===5&&t.readBits(1)&&(l=qt(t).sampleRate,t.getBitsLeft()>11&&t.readBits(11)===1352&&(c=!!t.readBits(1)));break}return o!==null&&o>1&&(c=!1),{objectType:n,coreObjectType:s,frequencyIndex:r,channelConfiguration:a,outputSampleRate:l,outputNumberOfChannels:c&&o===1?2:o}},Kt=e=>{let t=e.readBits(5);return t===31?32+e.readBits(6):t},qt=e=>{let t=e.readBits(4);return t===15?{frequencyIndex:t,sampleRate:e.readBits(24)}:{frequencyIndex:t,sampleRate:t<Ut.length?Ut[t]:null}},Jt=e=>{let t=e.objectType===5||e.objectType===29,n=e.objectType===29,r=t?e.outputSampleRate/2:e.outputSampleRate,i=n?1:e.outputNumberOfChannels,a=Wt.indexOf(i);if(a===-1)throw TypeError(`Unsupported number of channels: ${e.outputNumberOfChannels}`);let o=16;e.objectType>=32&&(o+=6),Zt(r)===15&&(o+=24),t&&(o+=9,Zt(e.outputSampleRate)===15&&(o+=24));let s=Math.ceil(o/8),c=new Uint8Array(s),l=new j(c);return Yt(l,e.objectType),Xt(l,r),l.writeBits(4,a),t&&(Xt(l,e.outputSampleRate),Yt(l,2)),l.writeBits(3,0),c},Yt=(e,t)=>{t<32?e.writeBits(5,t):(e.writeBits(5,31),e.writeBits(6,t-32))},Xt=(e,t)=>{let n=Zt(t);e.writeBits(4,n),n===15&&e.writeBits(24,t)},Zt=e=>{let t=Ut.indexOf(e);return t===-1?15:t},Qt=e=>{let t=new Uint8Array(7),n=new j(t),{coreObjectType:r,frequencyIndex:i,channelConfiguration:a}=e,o=r-1;return n.writeBits(12,4095),n.writeBits(1,0),n.writeBits(2,0),n.writeBits(1,1),n.writeBits(2,o),n.writeBits(4,i),n.writeBits(1,0),n.writeBits(3,a),n.writeBits(1,0),n.writeBits(1,0),n.writeBits(1,0),n.writeBits(1,0),n.skipBits(13),n.writeBits(11,2047),n.writeBits(2,0),{header:t,bitstream:n}},$t=(e,t)=>{e.pos=30,e.writeBits(13,t)},en=[48e3,44100,32e3],tn=[24e3,22050,16e3],nn=`Mediabunny v1.61.1`
41
+ const Ut=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],Wt=[-1,1,2,3,4,5,6,8],Gt=e=>{if(!e||e.byteLength<2)throw TypeError(`AAC description must be at least 2 bytes long.`);let t=new j(e),n=Kt(t),{frequencyIndex:r,sampleRate:i}=qt(t),a=t.readBits(4),o=null;a>=1&&a<=7&&(o=Wt[a]);let s=n,c=!1,l=i;if(n===5||n===29)c=n===29,l=qt(t).sampleRate,s=Kt(t),s===22&&t.skipBits(4);else for(;t.getBitsLeft()>15;){let e=t.pos;if(t.readBits(11)!==695){t.pos=e+1;continue}Kt(t)===5&&t.readBits(1)&&(l=qt(t).sampleRate,t.getBitsLeft()>11&&t.readBits(11)===1352&&(c=!!t.readBits(1)));break}return o!==null&&o>1&&(c=!1),{objectType:n,coreObjectType:s,frequencyIndex:r,channelConfiguration:a,outputSampleRate:l,outputNumberOfChannels:c&&o===1?2:o}},Kt=e=>{let t=e.readBits(5);return t===31?32+e.readBits(6):t},qt=e=>{let t=e.readBits(4);return t===15?{frequencyIndex:t,sampleRate:e.readBits(24)}:{frequencyIndex:t,sampleRate:t<Ut.length?Ut[t]:null}},Jt=e=>{let t=e.objectType===5||e.objectType===29,n=e.objectType===29,r=t?e.outputSampleRate/2:e.outputSampleRate,i=n?1:e.outputNumberOfChannels,a=Wt.indexOf(i);if(a===-1)throw TypeError(`Unsupported number of channels: ${e.outputNumberOfChannels}`);let o=16;e.objectType>=32&&(o+=6),Zt(r)===15&&(o+=24),t&&(o+=9,Zt(e.outputSampleRate)===15&&(o+=24));let s=Math.ceil(o/8),c=new Uint8Array(s),l=new j(c);return Yt(l,e.objectType),Xt(l,r),l.writeBits(4,a),t&&(Xt(l,e.outputSampleRate),Yt(l,2)),l.writeBits(3,0),c},Yt=(e,t)=>{t<32?e.writeBits(5,t):(e.writeBits(5,31),e.writeBits(6,t-32))},Xt=(e,t)=>{let n=Zt(t);e.writeBits(4,n),n===15&&e.writeBits(24,t)},Zt=e=>{let t=Ut.indexOf(e);return t===-1?15:t},Qt=e=>{let t=new Uint8Array(7),n=new j(t),{coreObjectType:r,frequencyIndex:i,channelConfiguration:a}=e,o=r-1;return n.writeBits(12,4095),n.writeBits(1,0),n.writeBits(2,0),n.writeBits(1,1),n.writeBits(2,o),n.writeBits(4,i),n.writeBits(1,0),n.writeBits(3,a),n.writeBits(1,0),n.writeBits(1,0),n.writeBits(1,0),n.writeBits(1,0),n.skipBits(13),n.writeBits(11,2047),n.writeBits(2,0),{header:t,bitstream:n}},$t=(e,t)=>{e.pos=30,e.writeBits(13,t)},en=[48e3,44100,32e3],tn=[24e3,22050,16e3],nn=`Mediabunny v1.61.2`
42
42
  /*!
43
43
  * Copyright (c) 2026-present, Vanilagy and contributors
44
44
  *
@@ -69,7 +69,7 @@ var rn;(function(e){e[e.NON_IDR_SLICE=1]=`NON_IDR_SLICE`,e[e.SLICE_DPA=2]=`SLICE
69
69
  * License, v. 2.0. If a copy of the MPL was not distributed with this
70
70
  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
71
71
  */
72
- if(e===`avc`){let e=Math.ceil(t/16)*Math.ceil(n/16),i=Er.find(t=>e<=t.maxMacroblocks&&r<=t.maxBitrate)??h(Er),a=i?i.level:0;return`avc1.${`64`.padStart(2,`0`)}00${a.toString(16).padStart(2,`0`)}`}if(e===`hevc`){let e=t*n,i=Dr.find(t=>e<=t.maxPictureSize&&r<=t.maxBitrate)??h(Dr);return`hev1.1.6.${i.tier}${i.level}.B0`}if(e===`vp8`)return`vp8`;if(e===`vp9`){let e=t*n;return`vp09.00.${(Or.find(t=>e<=t.maxPictureSize&&r<=t.maxBitrate)??h(Or)).level.toString().padStart(2,`0`)}.08`}if(e===`av1`){let e=t*n,i=kr.find(t=>e<=t.maxPictureSize&&r<=t.maxBitrate)??h(kr);return`av01.0.${i.level.toString().padStart(2,`0`)}${i.tier}.08`}if(e===`prores`){let e=(t*n/2073600)**.95,a=Mr.filter(e=>e.alpha===i),o=a[0].fourCc,s=1/0;for(let{fourCc:t,bitrate:n}of a){let i=Math.abs(n*e-r);i<s&&(s=i,o=t)}return o}throw Ee(e),TypeError(`Unhandled codec '${String(e)}'.`)},Pr=e=>{let t=e.split(`.`);return[1,1,Number(t[1]),2,1,Number(t[2]),3,1,Number(t[3]),4,1,t[4]?Number(t[4]):1]},Fr=e=>{let t=e.split(`.`),n=Number(t[1]),r=t[2],i=Number(r.slice(0,-1)),a=(n<<5)+i,o=+(r.slice(-1)===`H`),s=Number(t[3]),c=s===8?0:1,l=+(s===12),u=t[4]?Number(t[4]):0,d=t[5]?Number(t[5][0]):1,f=t[5]?Number(t[5][1]):1,p=t[5]?Number(t[5][2]):0;return[129,a,(o<<7)+(c<<6)+(l<<5)+(u<<4)+(d<<3)+(f<<2)+p,0]},Ir=e=>{let{codec:t,codecDescription:r,colorSpace:i,avcCodecInfo:a,hevcCodecInfo:o,vp9CodecInfo:s,av1CodecInfo:c,proresFormat:l}=e;if(t===`avc`){if(n(e.avcType!==null),a){let t=new Uint8Array([a.avcProfileIndication,a.profileCompatibility,a.avcLevelIndication]);return`avc${e.avcType}.${ge(t)}`}if(!r||r.byteLength<4)throw TypeError(`AVC decoder description is not provided or is not at least 4 bytes long.`);return`avc${e.avcType}.${ge(r.subarray(1,4))}`}if(t===`hevc`){let e,t,n,i,a,s;if(o)e=o.generalProfileSpace,t=o.generalProfileIdc,n=ve(o.generalProfileCompatibilityFlags),i=o.generalTierFlag,a=o.generalLevelIdc,s=[...o.generalConstraintIndicatorFlags];else{if(!r||r.byteLength<23)throw TypeError(`HEVC decoder description is not provided or is not at least 23 bytes long.`);let o=C(r),c=o.getUint8(1);e=c>>6&3,t=c&31,n=ve(o.getUint32(2)),i=c>>5&1,a=o.getUint8(12),s=[];for(let e=0;e<6;e++)s.push(o.getUint8(6+e))}let c=`hev1.`;for(c+=[``,`A`,`B`,`C`][e]+t,c+=`.`,c+=n.toString(16).toUpperCase(),c+=`.`,c+=i===0?`L`:`H`,c+=a;s.length>0&&s[s.length-1]===0;)s.pop();return s.length>0&&(c+=`.`,c+=s.map(e=>e.toString(16).toUpperCase()).join(`.`)),c}if(t===`vp8`)return`vp8`;if(t===`vp9`){if(!s){let t=e.width*e.height,n=h(Or).level;for(let e of Or)if(t<=e.maxPictureSize){n=e.level;break}return`vp09.00.${n.toString().padStart(2,`0`)}.08`}let t=s.profile.toString().padStart(2,`0`),n=s.level.toString().padStart(2,`0`),r=s.bitDepth.toString().padStart(2,`0`),i=s.chromaSubsampling.toString().padStart(2,`0`),a=s.colourPrimaries.toString().padStart(2,`0`),o=s.transferCharacteristics.toString().padStart(2,`0`),c=s.matrixCoefficients.toString().padStart(2,`0`),l=s.videoFullRangeFlag.toString().padStart(2,`0`),u=`vp09.${t}.${n}.${r}.${i}`;return u+=`.${a}.${o}.${c}.${l}`,u.endsWith(`.01.01.01.01.00`)&&(u=u.slice(0,-15)),u}if(t===`av1`){if(!c){let t=e.width*e.height,n=h(Or).level;for(let e of Or)if(t<=e.maxPictureSize){n=e.level;break}return`av01.0.${n.toString().padStart(2,`0`)}M.08`}let t=c.profile,n=c.level.toString().padStart(2,`0`),r=c.tier?`H`:`M`,a=c.bitDepth.toString().padStart(2,`0`),o=c.monochrome?`1`:`0`,s=100*c.chromaSubsamplingX+10*c.chromaSubsamplingY+1*(c.chromaSubsamplingX&&c.chromaSubsamplingY?c.chromaSamplePosition:0),l=i?.primaries?ie[i.primaries]:1,u=i?.transfer?oe[i.transfer]:1,d=i?.matrix?ce[i.matrix]:1,f=+!!i?.fullRange,p=`av01.${t}.${n}${r}.${a}`;return p+=`.${o}.${s.toString().padStart(3,`0`)}`,p+=`.${l.toString().padStart(2,`0`)}`,p+=`.${u.toString().padStart(2,`0`)}`,p+=`.${d.toString().padStart(2,`0`)}`,p+=`.${f}`,p.endsWith(`.0.110.01.01.01.0`)&&(p=p.slice(0,-17)),p}if(t===`prores`)return l??`apch`;throw t!==null&&Ee(t),TypeError(`Unhandled codec '${t}'.`)},Lr=e=>{switch(e.codec){case`avc`:{let t=e.avcCodecInfo?.sequenceParameterSets[0];if(!t&&e.codecDescription&&(t=_n(e.codecDescription)?.sequenceParameterSets[0]),t){let e=yn(t);if(e)return{primaries:ae[e.colourPrimaries],transfer:se[e.transferCharacteristics],matrix:le[e.matrixCoefficients],fullRange:!!e.fullRangeFlag}}}break;case`hevc`:{let t=e.hevcCodecInfo?.arrays.find(e=>e.nalUnitType===M.SPS_NUT)?.nalUnits[0];if(!t&&e.codecDescription&&(t=Fn(e.codecDescription)?.arrays.find(e=>e.nalUnitType===M.SPS_NUT)?.nalUnits[0]),t){let e=Tn(t);if(e)return{primaries:ae[e.colourPrimaries],transfer:se[e.transferCharacteristics],matrix:le[e.matrixCoefficients],fullRange:!!e.fullRangeFlag}}}break;case`vp8`:break;case`vp9`:if(e.vp9CodecInfo)return{primaries:ae[e.vp9CodecInfo.colourPrimaries],transfer:se[e.vp9CodecInfo.transferCharacteristics],matrix:le[e.vp9CodecInfo.matrixCoefficients],fullRange:!!e.vp9CodecInfo.videoFullRangeFlag};break;case`av1`:if(e.av1CodecInfo)return{primaries:ae[e.av1CodecInfo.colourPrimaries],transfer:se[e.av1CodecInfo.transferCharacteristics],matrix:le[e.av1CodecInfo.matrixCoefficients],fullRange:!!e.av1CodecInfo.videoFullRangeFlag};break;case`prores`:if(e.proresCodecInfo)return{primaries:ae[e.proresCodecInfo.colourPrimaries],transfer:se[e.proresCodecInfo.transferCharacteristics],matrix:le[e.proresCodecInfo.matrixCoefficients],fullRange:e.proresCodecInfo.fullRange}}return{primaries:void 0,transfer:void 0,matrix:void 0,fullRange:void 0}},Rr=(e,t,n)=>{if(e===`aac`)return t>=2&&n<=24e3?`mp4a.40.29`:n<=24e3?`mp4a.40.5`:`mp4a.40.2`;if(e===`mp3`)return`mp3`;if(e===`opus`)return`opus`;if(e===`vorbis`)return`vorbis`;if(e===`flac`)return`flac`;if(e===`ac3`)return`ac-3`;if(e===`eac3`)return`ec-3`;if(e===`dts`)return`dtsc`;if(P.includes(e))return e;throw TypeError(`Unhandled codec '${e}'.`)},zr=e=>{let{codec:t,codecDescription:n,aacCodecInfo:r,dtsFormat:i}=e;if(t===`aac`){if(!r)throw TypeError(`AAC codec info must be provided.`);if(r.isMpeg2)return`mp4a.67`;{let e;return e=r.objectType===null?Gt(n).objectType:r.objectType,`mp4a.40.${e}`}}if(t===`mp3`)return`mp3`;if(t===`opus`)return`opus`;if(t===`vorbis`)return`vorbis`;if(t===`flac`)return`flac`;if(t===`ac3`)return`ac-3`;if(t===`eac3`)return`ec-3`;if(t===`dts`)return i??`dtsc`;if(t&&P.includes(t))return t;throw TypeError(`Unhandled codec '${t}'.`)},Br=e=>{switch(e.codec){case`flac`:{let t=lt(`ZkxhQ4AAACIQABAAAAYtACWtCsRC8AANRBhVFucAcYu5ASE2m1Dxv8tw`);return e.sampleRate>=1<<20||e.numberOfChannels>8?!1:(t[18]=e.sampleRate>>>12,t[19]=e.sampleRate>>>4,t[20]=(e.sampleRate&15)<<4|e.numberOfChannels-1<<1,t)}case`vorbis`:{let t=lt(`Ah7/AgF2b3JiaXMAAAAAAoC7AAAAAAAAgLUBAAAAAAC4AQN2b3JiaXMNAAAATGF2ZjU4Ljc2LjEwMAgAAAAMAAAAbGFuZ3VhZ2U9dW5kGQAAAGhhbmRsZXJfbmFtZT1Tb3VuZEhhbmRsZXIWAAAAdmVuZG9yX2lkPVswXVswXVswXVswXSAAAABlbmNvZGVyPUxhdmM1OC4xMzQuMTAwIGxpYnZvcmJpcxAAAABtYWpvcl9icmFuZD1pc29tEQAAAG1pbm9yX3ZlcnNpb249NTEyIgAAAGNvbXBhdGlibGVfYnJhbmRzPWlzb21pc28yYXZjMW1wNDEmAAAAREVTQ1JJUFRJT049TWFkZSB3aXRoIFJlbW90aW9uIDQuMC4yNzgBBXZvcmJpcyVCQ1YBAEAAACRzGCpGpXMWhBAaQlAZ4xxCzmvsGUJMEYIcMkxbyyVzkCGkoEKIWyiB0JBVAABAAACHQXgUhIpBCCGEJT1YkoMnPQghhIg5eBSEaUEIIYQQQgghhBBCCCGERTlokoMnQQgdhOMwOAyD5Tj4HIRFOVgQgydB6CCED0K4moOsOQghhCQ1SFCDBjnoHITCLCiKgsQwuBaEBDUojILkMMjUgwtCiJqDSTX4GoRnQXgWhGlBCCGEJEFIkIMGQcgYhEZBWJKDBjm4FITLQagahCo5CB+EIDRkFQCQAACgoiiKoigKEBqyCgDIAAAQQFEUx3EcyZEcybEcCwgNWQUAAAEACAAAoEiKpEiO5EiSJFmSJVmSJVmS5omqLMuyLMuyLMsyEBqyCgBIAABQUQxFcRQHCA1ZBQBkAAAIoDiKpViKpWiK54iOCISGrAIAgAAABAAAEDRDUzxHlETPVFXXtm3btm3btm3btm3btm1blmUZCA1ZBQBAAAAQ0mlmqQaIMAMZBkJDVgEACAAAgBGKMMSA0JBVAABAAACAGEoOogmtOd+c46BZDppKsTkdnEi1eZKbirk555xzzsnmnDHOOeecopxZDJoJrTnnnMSgWQqaCa0555wnsXnQmiqtOeeccc7pYJwRxjnnnCateZCajbU555wFrWmOmkuxOeecSLl5UptLtTnnnHPOOeecc84555zqxekcnBPOOeecqL25lpvQxTnnnE/G6d6cEM4555xzzjnnnHPOOeecIDRkFQAABABAEIaNYdwpCNLnaCBGEWIaMulB9+gwCRqDnELq0ehopJQ6CCWVcVJKJwgNWQUAAAIAQAghhRRSSCGFFFJIIYUUYoghhhhyyimnoIJKKqmooowyyyyzzDLLLLPMOuyssw47DDHEEEMrrcRSU2011lhr7jnnmoO0VlprrbVSSimllFIKQkNWAQAgAAAEQgYZZJBRSCGFFGKIKaeccgoqqIDQkFUAACAAgAAAAABP8hzRER3RER3RER3RER3R8RzPESVREiVREi3TMjXTU0VVdWXXlnVZt31b2IVd933d933d+HVhWJZlWZZlWZZlWZZlWZZlWZYgNGQVAAACAAAghBBCSCGFFFJIKcYYc8w56CSUEAgNWQUAAAIACAAAAHAUR3EcyZEcSbIkS9IkzdIsT/M0TxM9URRF0zRV0RVdUTdtUTZl0zVdUzZdVVZtV5ZtW7Z125dl2/d93/d93/d93/d93/d9XQdCQ1YBABIAADqSIymSIimS4ziOJElAaMgqAEAGAEAAAIriKI7jOJIkSZIlaZJneZaomZrpmZ4qqkBoyCoAABAAQAAAAAAAAIqmeIqpeIqoeI7oiJJomZaoqZoryqbsuq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq4LhIasAgAkAAB0JEdyJEdSJEVSJEdygNCQVQCADACAAAAcwzEkRXIsy9I0T/M0TxM90RM901NFV3SB0JBVAAAgAIAAAAAAAAAMybAUy9EcTRIl1VItVVMt1VJF1VNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVN0zRNEwgNWQkAkAEAkBBTLS3GmgmLJGLSaqugYwxS7KWxSCpntbfKMYUYtV4ah5RREHupJGOKQcwtpNApJq3WVEKFFKSYYyoVUg5SIDRkhQAQmgHgcBxAsixAsiwAAAAAAAAAkDQN0DwPsDQPAAAAAAAAACRNAyxPAzTPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAA0DwP8DwR8EQRAAAAAAAAACzPAzTRAzxRBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAAsDwP8EQR0DwRAAAAAAAAACzPAzxRBDzRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEOAAABBgIRQasiIAiBMAcEgSJAmSBM0DSJYFTYOmwTQBkmVB06BpME0AAAAAAAAAAAAAJE2DpkHTIIoASdOgadA0iCIAAAAAAAAAAAAAkqZB06BpEEWApGnQNGgaRBEAAAAAAAAAAAAAzzQhihBFmCbAM02IIkQRpgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAGHAAAAgwoQwUGrIiAIgTAHA4imUBAIDjOJYFAACO41gWAABYliWKAABgWZooAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAYcAAACDChDBQashIAiAIAcCiKZQHHsSzgOJYFJMmyAJYF0DyApgFEEQAIAAAocAAACLBBU2JxgEJDVgIAUQAABsWxLE0TRZKkaZoniiRJ0zxPFGma53meacLzPM80IYqiaJoQRVE0TZimaaoqME1VFQAAUOAAABBgg6bE4gCFhqwEAEICAByKYlma5nmeJ4qmqZokSdM8TxRF0TRNU1VJkqZ5niiKommapqqyLE3zPFEURdNUVVWFpnmeKIqiaaqq6sLzPE8URdE0VdV14XmeJ4qiaJqq6roQRVE0TdNUTVV1XSCKpmmaqqqqrgtETxRNU1Vd13WB54miaaqqq7ouEE3TVFVVdV1ZBpimaaqq68oyQFVV1XVdV5YBqqqqruu6sgxQVdd1XVmWZQCu67qyLMsCAAAOHAAAAoygk4wqi7DRhAsPQKEhKwKAKAAAwBimFFPKMCYhpBAaxiSEFEImJaXSUqogpFJSKRWEVEoqJaOUUmopVRBSKamUCkIqJZVSAADYgQMA2IGFUGjISgAgDwCAMEYpxhhzTiKkFGPOOScRUoox55yTSjHmnHPOSSkZc8w556SUzjnnnHNSSuacc845KaVzzjnnnJRSSuecc05KKSWEzkEnpZTSOeecEwAAVOAAABBgo8jmBCNBhYasBABSAQAMjmNZmuZ5omialiRpmud5niiapiZJmuZ5nieKqsnzPE8URdE0VZXneZ4oiqJpqirXFUXTNE1VVV2yLIqmaZqq6rowTdNUVdd1XZimaaqq67oubFtVVdV1ZRm2raqq6rqyDFzXdWXZloEsu67s2rIAAPAEBwCgAhtWRzgpGgssNGQlAJABAEAYg5BCCCFlEEIKIYSUUggJAAAYcAAACDChDBQashIASAUAAIyx1lprrbXWQGettdZaa62AzFprrbXWWmuttdZaa6211lJrrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmstpZRSSimllFJKKaWUUkoppZRSSgUA+lU4APg/2LA6wknRWGChISsBgHAAAMAYpRhzDEIppVQIMeacdFRai7FCiDHnJKTUWmzFc85BKCGV1mIsnnMOQikpxVZjUSmEUlJKLbZYi0qho5JSSq3VWIwxqaTWWoutxmKMSSm01FqLMRYjbE2ptdhqq7EYY2sqLbQYY4zFCF9kbC2m2moNxggjWywt1VprMMYY3VuLpbaaizE++NpSLDHWXAAAd4MDAESCjTOsJJ0VjgYXGrISAAgJACAQUooxxhhzzjnnpFKMOeaccw5CCKFUijHGnHMOQgghlIwx5pxzEEIIIYRSSsaccxBCCCGEkFLqnHMQQgghhBBKKZ1zDkIIIYQQQimlgxBCCCGEEEoopaQUQgghhBBCCKmklEIIIYRSQighlZRSCCGEEEIpJaSUUgohhFJCCKGElFJKKYUQQgillJJSSimlEkoJJYQSUikppRRKCCGUUkpKKaVUSgmhhBJKKSWllFJKIYQQSikFAAAcOAAABBhBJxlVFmGjCRcegEJDVgIAZAAAkKKUUiktRYIipRikGEtGFXNQWoqocgxSzalSziDmJJaIMYSUk1Qy5hRCDELqHHVMKQYtlRhCxhik2HJLoXMOAAAAQQCAgJAAAAMEBTMAwOAA4XMQdAIERxsAgCBEZohEw0JweFAJEBFTAUBigkIuAFRYXKRdXECXAS7o4q4DIQQhCEEsDqCABByccMMTb3jCDU7QKSp1IAAAAAAADADwAACQXAAREdHMYWRobHB0eHyAhIiMkAgAAAAAABcAfAAAJCVAREQ0cxgZGhscHR4fICEiIyQBAIAAAgAAAAAggAAEBAQAAAAAAAIAAAAEBA==`),n=C(t);return n.setUint8(15,e.numberOfChannels),n.setUint32(16,e.sampleRate,!0),t}default:return}},Vr=48e3,Hr=/^pcm-([usf])(\d+)(be)?$/,Ur=e=>{if(n(P.includes(e)),e===`ulaw`)return{dataType:`ulaw`,sampleSize:1,littleEndian:!0,silentValue:255};if(e===`alaw`)return{dataType:`alaw`,sampleSize:1,littleEndian:!0,silentValue:213};let t=Hr.exec(e);n(t);let r;r=t[1]===`u`?`unsigned`:t[1]===`s`?`signed`:`float`;let i=Number(t[2])/8,a=t[3]!==`be`;return{dataType:r,sampleSize:i,littleEndian:a,silentValue:e===`pcm-u8`?128:0}},Wr=e=>e.startsWith(`avc1`)||e.startsWith(`avc3`)?`avc`:e.startsWith(`hev1`)||e.startsWith(`hvc1`)?`hevc`:e===`vp8`?`vp8`:e.startsWith(`vp09`)?`vp9`:e.startsWith(`av01`)?`av1`:Ar.includes(e)?`prores`:e===`mp3`||e===`mp4a.69`||e===`mp4a.6B`||e===`mp4a.6b`||e===`mp4a.40.34`?`mp3`:e.startsWith(`mp4a.40.`)||e===`mp4a.67`?`aac`:e===`opus`||e===`Opus`?`opus`:e===`vorbis`?`vorbis`:e===`flac`?`flac`:e===`ac-3`||e===`ac3`?`ac3`:e===`ec-3`||e===`eac3`?`eac3`:jr.includes(e)?`dts`:e===`ulaw`?`ulaw`:e===`alaw`?`alaw`:Hr.test(e)?e:e===`webvtt`?`webvtt`:null,Gr=e=>e===`avc`?{avc:{format:`avc`}}:e===`hevc`?{hevc:{format:`hevc`}}:{},Kr=e=>e===`aac`?{aac:{format:`aac`}}:e===`opus`?{opus:{format:`opus`}}:{},qr=[`avc1`,`avc3`,`hev1`,`hvc1`,`vp8`,`vp09`,`av01`,...Ar],Jr=/^(avc1|avc3)\.[0-9a-fA-F]{6}$/,Yr=/^(hev1|hvc1)\.(?:[ABC]?\d+)\.[0-9a-fA-F]{1,8}\.[LH]\d+(?:\.[0-9a-fA-F]{1,2}){0,6}$/,Xr=/^vp09(?:\.\d{2}){3}(?:(?:\.\d{2}){5})?$/,Zr=/^av01\.\d\.\d{2}[MH]\.\d{2}(?:\.\d\.\d{3}\.\d{2}\.\d{2}\.\d{2}\.\d)?$/,Qr=(e,t)=>{if(!e)throw TypeError(`Video chunk metadata must be provided.`);if(typeof e!=`object`)throw TypeError(`Video chunk metadata must be an object.`);if(!e.decoderConfig)throw TypeError(`Video chunk metadata must include a decoder configuration.`);if(typeof e.decoderConfig!=`object`)throw TypeError(`Video chunk metadata decoder configuration must be an object.`);if(typeof e.decoderConfig.codec!=`string`)throw TypeError(`Video chunk metadata decoder configuration must specify a codec string.`);if(!qr.some(t=>e.decoderConfig.codec.startsWith(t)))throw TypeError(`Video chunk metadata decoder configuration codec string must be a valid video codec string as specified in the Mediabunny Codec Registry.`);if(!Number.isInteger(e.decoderConfig.codedWidth)||e.decoderConfig.codedWidth<=0)throw TypeError(`Video chunk metadata decoder configuration must specify a valid codedWidth (positive integer).`);if(!Number.isInteger(e.decoderConfig.codedHeight)||e.decoderConfig.codedHeight<=0)throw TypeError(`Video chunk metadata decoder configuration must specify a valid codedHeight (positive integer).`);if(e.decoderConfig.displayAspectWidth!==void 0&&(!Number.isInteger(e.decoderConfig.displayAspectWidth)||e.decoderConfig.displayAspectWidth<=0))throw TypeError(`Video chunk metadata decoder configuration displayAspectWidth, when defined, must be a positive integer.`);if(e.decoderConfig.displayAspectHeight!==void 0&&(!Number.isInteger(e.decoderConfig.displayAspectHeight)||e.decoderConfig.displayAspectHeight<=0))throw TypeError(`Video chunk metadata decoder configuration displayAspectHeight, when defined, must be a positive integer.`);if(e.decoderConfig.displayAspectWidth!==void 0!=(e.decoderConfig.displayAspectHeight!==void 0))throw TypeError(`Video chunk metadata decoder configuration must specify both displayAspectWidth and displayAspectHeight, or neither.`);if(e.decoderConfig.description!==void 0&&!pe(e.decoderConfig.description))throw TypeError(`Video chunk metadata decoder configuration description, when defined, must be an ArrayBuffer or an ArrayBuffer view.`);if(e.decoderConfig.colorSpace!==void 0){let{colorSpace:t}=e.decoderConfig;if(typeof t!=`object`)throw TypeError(`Video chunk metadata decoder configuration colorSpace, when provided, must be an object.`);let n=Object.keys(ie);if(t.primaries!=null&&!n.includes(t.primaries))throw TypeError(`Video chunk metadata decoder configuration colorSpace primaries, when defined, must be one of ${n.join(`, `)}.`);let r=Object.keys(oe);if(t.transfer!=null&&!r.includes(t.transfer))throw TypeError(`Video chunk metadata decoder configuration colorSpace transfer, when defined, must be one of ${r.join(`, `)}.`);let i=Object.keys(ce);if(t.matrix!=null&&!i.includes(t.matrix))throw TypeError(`Video chunk metadata decoder configuration colorSpace matrix, when defined, must be one of ${i.join(`, `)}.`);if(t.fullRange!=null&&typeof t.fullRange!=`boolean`)throw TypeError(`Video chunk metadata decoder configuration colorSpace fullRange, when defined, must be a boolean.`)}if(e.decoderConfig.codec.startsWith(`avc1`)||e.decoderConfig.codec.startsWith(`avc3`)){if(!Jr.test(e.decoderConfig.codec))throw 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(e.decoderConfig.codec.startsWith(`hev1`)||e.decoderConfig.codec.startsWith(`hvc1`)){if(!Yr.test(e.decoderConfig.codec))throw 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(e.decoderConfig.codec.startsWith(`vp8`)){if(e.decoderConfig.codec!==`vp8`)throw TypeError(`Video chunk metadata decoder configuration codec string for VP8 must be "vp8".`)}else if(e.decoderConfig.codec.startsWith(`vp09`)){if(!Xr.test(e.decoderConfig.codec))throw 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(e.decoderConfig.codec.startsWith(`av01`)){if(!Zr.test(e.decoderConfig.codec))throw 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/.`)}else if(Ar.some(t=>e.decoderConfig.codec.startsWith(t))&&!Ar.some(t=>e.decoderConfig.codec===t))throw TypeError(`Video chunk metadata decoder configuration codec string for ProRes must be one of the valid ProRes four-character codes: ${Ar.join(`, `)}.`);if(t!==null&&Wr(e.decoderConfig.codec)!==t)throw TypeError(`Video chunk metadata decoder configuration codec string '${e.decoderConfig.codec}' does not fit to the track codec '${t}'.`)},$r=[`mp4a`,`mp3`,`opus`,`vorbis`,`flac`,`ulaw`,`alaw`,`pcm`,`ac-3`,`ec-3`,`dts`],ei=(e,t)=>{if(!e)throw TypeError(`Audio chunk metadata must be provided.`);if(typeof e!=`object`)throw TypeError(`Audio chunk metadata must be an object.`);if(!e.decoderConfig)throw TypeError(`Audio chunk metadata must include a decoder configuration.`);if(typeof e.decoderConfig!=`object`)throw TypeError(`Audio chunk metadata decoder configuration must be an object.`);if(typeof e.decoderConfig.codec!=`string`)throw TypeError(`Audio chunk metadata decoder configuration must specify a codec string.`);if(!$r.some(t=>e.decoderConfig.codec.startsWith(t)))throw TypeError(`Audio chunk metadata decoder configuration codec string must be a valid audio codec string as specified in the Mediabunny Codec Registry.`);if(!Number.isInteger(e.decoderConfig.sampleRate)||e.decoderConfig.sampleRate<=0)throw TypeError(`Audio chunk metadata decoder configuration must specify a valid sampleRate (positive integer).`);if(!Number.isInteger(e.decoderConfig.numberOfChannels)||e.decoderConfig.numberOfChannels<=0)throw TypeError(`Audio chunk metadata decoder configuration must specify a valid numberOfChannels (positive integer).`);if(e.decoderConfig.description!==void 0&&!pe(e.decoderConfig.description))throw TypeError(`Audio chunk metadata decoder configuration description, when defined, must be an ArrayBuffer or an ArrayBuffer view.`);if(e.decoderConfig.codec.startsWith(`mp4a`)&&e.decoderConfig.codec!==`mp4a.69`&&e.decoderConfig.codec!==`mp4a.6B`&&e.decoderConfig.codec!==`mp4a.6b`){if(![`mp4a.40.2`,`mp4a.40.02`,`mp4a.40.5`,`mp4a.40.05`,`mp4a.40.29`,`mp4a.67`].includes(e.decoderConfig.codec))throw 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(e.decoderConfig.codec.startsWith(`mp3`)||e.decoderConfig.codec.startsWith(`mp4a`)){if(e.decoderConfig.codec!==`mp3`&&e.decoderConfig.codec!==`mp4a.69`&&e.decoderConfig.codec!==`mp4a.6B`&&e.decoderConfig.codec!==`mp4a.6b`)throw TypeError(`Audio chunk metadata decoder configuration codec string for MP3 must be "mp3", "mp4a.69" or "mp4a.6B".`)}else if(e.decoderConfig.codec.startsWith(`opus`)){if(e.decoderConfig.codec!==`opus`)throw TypeError(`Audio chunk metadata decoder configuration codec string for Opus must be "opus".`);if(e.decoderConfig.description&&e.decoderConfig.description.byteLength<18)throw 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(e.decoderConfig.codec.startsWith(`vorbis`)){if(e.decoderConfig.codec!==`vorbis`)throw TypeError(`Audio chunk metadata decoder configuration codec string for Vorbis must be "vorbis".`);if(!e.decoderConfig.description)throw 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(e.decoderConfig.codec.startsWith(`flac`)){if(e.decoderConfig.codec!==`flac`)throw TypeError(`Audio chunk metadata decoder configuration codec string for FLAC must be "flac".`);if(!e.decoderConfig.description||e.decoderConfig.description.byteLength<42)throw 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(e.decoderConfig.codec.startsWith(`ac-3`)||e.decoderConfig.codec.startsWith(`ac3`)){if(e.decoderConfig.codec!==`ac-3`)throw TypeError(`Audio chunk metadata decoder configuration codec string for AC-3 must be "ac-3".`)}else if(e.decoderConfig.codec.startsWith(`ec-3`)||e.decoderConfig.codec.startsWith(`eac3`)){if(e.decoderConfig.codec!==`ec-3`)throw TypeError(`Audio chunk metadata decoder configuration codec string for EC-3 must be "ec-3".`)}else if(e.decoderConfig.codec.startsWith(`dts`)){if(!jr.includes(e.decoderConfig.codec))throw TypeError(`Audio chunk metadata decoder configuration codec string for DTS must be one of the following four-character codes: ${jr.join(`, `)}.`)}else if((e.decoderConfig.codec.startsWith(`pcm`)||e.decoderConfig.codec.startsWith(`ulaw`)||e.decoderConfig.codec.startsWith(`alaw`))&&!P.includes(e.decoderConfig.codec))throw TypeError(`Audio chunk metadata decoder configuration codec string for PCM must be one of the supported PCM codecs (${P.join(`, `)}).`);if(t!==null&&Wr(e.decoderConfig.codec)!==t)throw TypeError(`Audio chunk metadata decoder configuration codec string '${e.decoderConfig.codec}' does not fit to the track codec '${t}'.`)},ti=e=>{if(!e)throw TypeError(`Subtitle metadata must be provided.`);if(typeof e!=`object`)throw TypeError(`Subtitle metadata must be an object.`);if(!e.config)throw TypeError(`Subtitle metadata must include a config object.`);if(typeof e.config!=`object`)throw TypeError(`Subtitle metadata config must be an object.`);if(typeof e.config.description!=`string`)throw TypeError(`Subtitle metadata config description must be a string.`)},ni=[44100,48e3,32e3],ri=[-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],ii=(e,t,n,r,i)=>t===0?0:t===1?Math.floor(144*n/(r<<e))+i:t===2?Math.floor(144*n/r)+i:(Math.floor(12*n/r)+i)*4,ai=(e,t,n,r)=>t===0?0:t===1?144*n/(r<<e):t===2?144*n/r:12*n/r*4,oi=(e,t)=>e===3?t===3?21:36:t===3?13:21,si=(e,t)=>{
72
+ if(e===`avc`){let e=Math.ceil(t/16)*Math.ceil(n/16),i=Er.find(t=>e<=t.maxMacroblocks&&r<=t.maxBitrate)??h(Er),a=i?i.level:0;return`avc1.${`64`.padStart(2,`0`)}00${a.toString(16).padStart(2,`0`)}`}if(e===`hevc`){let e=t*n,i=Dr.find(t=>e<=t.maxPictureSize&&r<=t.maxBitrate)??h(Dr);return`hev1.1.6.${i.tier}${i.level}.B0`}if(e===`vp8`)return`vp8`;if(e===`vp9`){let e=t*n;return`vp09.00.${(Or.find(t=>e<=t.maxPictureSize&&r<=t.maxBitrate)??h(Or)).level.toString().padStart(2,`0`)}.08`}if(e===`av1`){let e=t*n,i=kr.find(t=>e<=t.maxPictureSize&&r<=t.maxBitrate)??h(kr);return`av01.0.${i.level.toString().padStart(2,`0`)}${i.tier}.08`}if(e===`prores`){let e=(t*n/2073600)**.95,a=Mr.filter(e=>e.alpha===i),o=a[0].fourCc,s=1/0;for(let{fourCc:t,bitrate:n}of a){let i=Math.abs(n*e-r);i<s&&(s=i,o=t)}return o}throw Ee(e),TypeError(`Unhandled codec '${String(e)}'.`)},Pr=e=>{let t=e.split(`.`);return[1,1,Number(t[1]),2,1,Number(t[2]),3,1,Number(t[3]),4,1,t[4]?Number(t[4]):1]},Fr=e=>{let t=e.split(`.`),n=Number(t[1]),r=t[2],i=Number(r.slice(0,-1)),a=(n<<5)+i,o=+(r.slice(-1)===`H`),s=Number(t[3]),c=s===8?0:1,l=+(s===12),u=t[4]?Number(t[4]):0,d=t[5]?Number(t[5][0]):1,f=t[5]?Number(t[5][1]):1,p=t[5]?Number(t[5][2]):0;return[129,a,(o<<7)+(c<<6)+(l<<5)+(u<<4)+(d<<3)+(f<<2)+p,0]},Ir=e=>{let{codec:t,codecDescription:r,colorSpace:i,avcCodecInfo:a,hevcCodecInfo:o,vp9CodecInfo:s,av1CodecInfo:c,proresFormat:l}=e;if(t===`avc`){if(n(e.avcType!==null),a){let t=new Uint8Array([a.avcProfileIndication,a.profileCompatibility,a.avcLevelIndication]);return`avc${e.avcType}.${ge(t)}`}if(!r||r.byteLength<4)throw TypeError(`AVC decoder description is not provided or is not at least 4 bytes long.`);return`avc${e.avcType}.${ge(r.subarray(1,4))}`}if(t===`hevc`){let e,t,n,i,a,s;if(o)e=o.generalProfileSpace,t=o.generalProfileIdc,n=ve(o.generalProfileCompatibilityFlags),i=o.generalTierFlag,a=o.generalLevelIdc,s=[...o.generalConstraintIndicatorFlags];else{if(!r||r.byteLength<23)throw TypeError(`HEVC decoder description is not provided or is not at least 23 bytes long.`);let o=C(r),c=o.getUint8(1);e=c>>6&3,t=c&31,n=ve(o.getUint32(2)),i=c>>5&1,a=o.getUint8(12),s=[];for(let e=0;e<6;e++)s.push(o.getUint8(6+e))}let c=`hev1.`;for(c+=[``,`A`,`B`,`C`][e]+t,c+=`.`,c+=n.toString(16).toUpperCase(),c+=`.`,c+=i===0?`L`:`H`,c+=a;s.length>0&&s[s.length-1]===0;)s.pop();return s.length>0&&(c+=`.`,c+=s.map(e=>e.toString(16).toUpperCase()).join(`.`)),c}if(t===`vp8`)return`vp8`;if(t===`vp9`){if(!s){let t=e.width*e.height,n=h(Or).level;for(let e of Or)if(t<=e.maxPictureSize){n=e.level;break}return`vp09.00.${n.toString().padStart(2,`0`)}.08`}let t=s.profile.toString().padStart(2,`0`),n=s.level.toString().padStart(2,`0`),r=s.bitDepth.toString().padStart(2,`0`),i=s.chromaSubsampling.toString().padStart(2,`0`),a=s.colourPrimaries.toString().padStart(2,`0`),o=s.transferCharacteristics.toString().padStart(2,`0`),c=s.matrixCoefficients.toString().padStart(2,`0`),l=s.videoFullRangeFlag.toString().padStart(2,`0`),u=`vp09.${t}.${n}.${r}.${i}`;return u+=`.${a}.${o}.${c}.${l}`,u.endsWith(`.01.01.01.01.00`)&&(u=u.slice(0,-15)),u}if(t===`av1`){if(!c){let t=e.width*e.height,n=h(Or).level;for(let e of Or)if(t<=e.maxPictureSize){n=e.level;break}return`av01.0.${n.toString().padStart(2,`0`)}M.08`}let t=c.profile,n=c.level.toString().padStart(2,`0`),r=c.tier?`H`:`M`,a=c.bitDepth.toString().padStart(2,`0`),o=c.monochrome?`1`:`0`,s=100*c.chromaSubsamplingX+10*c.chromaSubsamplingY+1*(c.chromaSubsamplingX&&c.chromaSubsamplingY?c.chromaSamplePosition:0),l,u,d,f;Un(c)?(l=c.colourPrimaries,u=c.transferCharacteristics,d=c.matrixCoefficients,f=c.videoFullRangeFlag):(l=i?.primaries?ie[i.primaries]:1,u=i?.transfer?oe[i.transfer]:1,d=i?.matrix?ce[i.matrix]:1,f=+!!i?.fullRange);let p=`av01.${t}.${n}${r}.${a}`;return p+=`.${o}.${s.toString().padStart(3,`0`)}`,p+=`.${l.toString().padStart(2,`0`)}`,p+=`.${u.toString().padStart(2,`0`)}`,p+=`.${d.toString().padStart(2,`0`)}`,p+=`.${f}`,p.endsWith(`.0.110.01.01.01.0`)&&(p=p.slice(0,-17)),p}if(t===`prores`)return l??`apch`;throw t!==null&&Ee(t),TypeError(`Unhandled codec '${t}'.`)},Lr=e=>{switch(e.codec){case`avc`:{let t=e.avcCodecInfo?.sequenceParameterSets[0];if(!t&&e.codecDescription&&(t=_n(e.codecDescription)?.sequenceParameterSets[0]),t){let e=yn(t);if(e)return{primaries:ae[e.colourPrimaries],transfer:se[e.transferCharacteristics],matrix:le[e.matrixCoefficients],fullRange:!!e.fullRangeFlag}}}break;case`hevc`:{let t=e.hevcCodecInfo?.arrays.find(e=>e.nalUnitType===M.SPS_NUT)?.nalUnits[0];if(!t&&e.codecDescription&&(t=Fn(e.codecDescription)?.arrays.find(e=>e.nalUnitType===M.SPS_NUT)?.nalUnits[0]),t){let e=Tn(t);if(e)return{primaries:ae[e.colourPrimaries],transfer:se[e.transferCharacteristics],matrix:le[e.matrixCoefficients],fullRange:!!e.fullRangeFlag}}}break;case`vp8`:break;case`vp9`:if(e.vp9CodecInfo)return{primaries:ae[e.vp9CodecInfo.colourPrimaries],transfer:se[e.vp9CodecInfo.transferCharacteristics],matrix:le[e.vp9CodecInfo.matrixCoefficients],fullRange:!!e.vp9CodecInfo.videoFullRangeFlag};break;case`av1`:if(e.av1CodecInfo)return{primaries:ae[e.av1CodecInfo.colourPrimaries],transfer:se[e.av1CodecInfo.transferCharacteristics],matrix:le[e.av1CodecInfo.matrixCoefficients],fullRange:!!e.av1CodecInfo.videoFullRangeFlag};break;case`prores`:if(e.proresCodecInfo)return{primaries:ae[e.proresCodecInfo.colourPrimaries],transfer:se[e.proresCodecInfo.transferCharacteristics],matrix:le[e.proresCodecInfo.matrixCoefficients],fullRange:e.proresCodecInfo.fullRange}}return{primaries:void 0,transfer:void 0,matrix:void 0,fullRange:void 0}},Rr=(e,t,n)=>{if(e===`aac`)return t>=2&&n<=24e3?`mp4a.40.29`:n<=24e3?`mp4a.40.5`:`mp4a.40.2`;if(e===`mp3`)return`mp3`;if(e===`opus`)return`opus`;if(e===`vorbis`)return`vorbis`;if(e===`flac`)return`flac`;if(e===`ac3`)return`ac-3`;if(e===`eac3`)return`ec-3`;if(e===`dts`)return`dtsc`;if(P.includes(e))return e;throw TypeError(`Unhandled codec '${e}'.`)},zr=e=>{let{codec:t,codecDescription:n,aacCodecInfo:r,dtsFormat:i}=e;if(t===`aac`){if(!r)throw TypeError(`AAC codec info must be provided.`);if(r.isMpeg2)return`mp4a.67`;{let e;return e=r.objectType===null?Gt(n).objectType:r.objectType,`mp4a.40.${e}`}}if(t===`mp3`)return`mp3`;if(t===`opus`)return`opus`;if(t===`vorbis`)return`vorbis`;if(t===`flac`)return`flac`;if(t===`ac3`)return`ac-3`;if(t===`eac3`)return`ec-3`;if(t===`dts`)return i??`dtsc`;if(t&&P.includes(t))return t;throw TypeError(`Unhandled codec '${t}'.`)},Br=e=>{switch(e.codec){case`flac`:{let t=lt(`ZkxhQ4AAACIQABAAAAYtACWtCsRC8AANRBhVFucAcYu5ASE2m1Dxv8tw`);return e.sampleRate>=1<<20||e.numberOfChannels>8?!1:(t[18]=e.sampleRate>>>12,t[19]=e.sampleRate>>>4,t[20]=(e.sampleRate&15)<<4|e.numberOfChannels-1<<1,t)}case`vorbis`:{let t=lt(`Ah7/AgF2b3JiaXMAAAAAAoC7AAAAAAAAgLUBAAAAAAC4AQN2b3JiaXMNAAAATGF2ZjU4Ljc2LjEwMAgAAAAMAAAAbGFuZ3VhZ2U9dW5kGQAAAGhhbmRsZXJfbmFtZT1Tb3VuZEhhbmRsZXIWAAAAdmVuZG9yX2lkPVswXVswXVswXVswXSAAAABlbmNvZGVyPUxhdmM1OC4xMzQuMTAwIGxpYnZvcmJpcxAAAABtYWpvcl9icmFuZD1pc29tEQAAAG1pbm9yX3ZlcnNpb249NTEyIgAAAGNvbXBhdGlibGVfYnJhbmRzPWlzb21pc28yYXZjMW1wNDEmAAAAREVTQ1JJUFRJT049TWFkZSB3aXRoIFJlbW90aW9uIDQuMC4yNzgBBXZvcmJpcyVCQ1YBAEAAACRzGCpGpXMWhBAaQlAZ4xxCzmvsGUJMEYIcMkxbyyVzkCGkoEKIWyiB0JBVAABAAACHQXgUhIpBCCGEJT1YkoMnPQghhIg5eBSEaUEIIYQQQgghhBBCCCGERTlokoMnQQgdhOMwOAyD5Tj4HIRFOVgQgydB6CCED0K4moOsOQghhCQ1SFCDBjnoHITCLCiKgsQwuBaEBDUojILkMMjUgwtCiJqDSTX4GoRnQXgWhGlBCCGEJEFIkIMGQcgYhEZBWJKDBjm4FITLQagahCo5CB+EIDRkFQCQAACgoiiKoigKEBqyCgDIAAAQQFEUx3EcyZEcybEcCwgNWQUAAAEACAAAoEiKpEiO5EiSJFmSJVmSJVmS5omqLMuyLMuyLMsyEBqyCgBIAABQUQxFcRQHCA1ZBQBkAAAIoDiKpViKpWiK54iOCISGrAIAgAAABAAAEDRDUzxHlETPVFXXtm3btm3btm3btm3btm1blmUZCA1ZBQBAAAAQ0mlmqQaIMAMZBkJDVgEACAAAgBGKMMSA0JBVAABAAACAGEoOogmtOd+c46BZDppKsTkdnEi1eZKbirk555xzzsnmnDHOOeecopxZDJoJrTnnnMSgWQqaCa0555wnsXnQmiqtOeeccc7pYJwRxjnnnCateZCajbU555wFrWmOmkuxOeecSLl5UptLtTnnnHPOOeecc84555zqxekcnBPOOeecqL25lpvQxTnnnE/G6d6cEM4555xzzjnnnHPOOeecIDRkFQAABABAEIaNYdwpCNLnaCBGEWIaMulB9+gwCRqDnELq0ehopJQ6CCWVcVJKJwgNWQUAAAIAQAghhRRSSCGFFFJIIYUUYoghhhhyyimnoIJKKqmooowyyyyzzDLLLLPMOuyssw47DDHEEEMrrcRSU2011lhr7jnnmoO0VlprrbVSSimllFIKQkNWAQAgAAAEQgYZZJBRSCGFFGKIKaeccgoqqIDQkFUAACAAgAAAAABP8hzRER3RER3RER3RER3R8RzPESVREiVREi3TMjXTU0VVdWXXlnVZt31b2IVd933d933d+HVhWJZlWZZlWZZlWZZlWZZlWZYgNGQVAAACAAAghBBCSCGFFFJIKcYYc8w56CSUEAgNWQUAAAIACAAAAHAUR3EcyZEcSbIkS9IkzdIsT/M0TxM9URRF0zRV0RVdUTdtUTZl0zVdUzZdVVZtV5ZtW7Z125dl2/d93/d93/d93/d93/d9XQdCQ1YBABIAADqSIymSIimS4ziOJElAaMgqAEAGAEAAAIriKI7jOJIkSZIlaZJneZaomZrpmZ4qqkBoyCoAABAAQAAAAAAAAIqmeIqpeIqoeI7oiJJomZaoqZoryqbsuq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq4LhIasAgAkAAB0JEdyJEdSJEVSJEdygNCQVQCADACAAAAcwzEkRXIsy9I0T/M0TxM90RM901NFV3SB0JBVAAAgAIAAAAAAAAAMybAUy9EcTRIl1VItVVMt1VJF1VNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVN0zRNEwgNWQkAkAEAkBBTLS3GmgmLJGLSaqugYwxS7KWxSCpntbfKMYUYtV4ah5RREHupJGOKQcwtpNApJq3WVEKFFKSYYyoVUg5SIDRkhQAQmgHgcBxAsixAsiwAAAAAAAAAkDQN0DwPsDQPAAAAAAAAACRNAyxPAzTPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAA0DwP8DwR8EQRAAAAAAAAACzPAzTRAzxRBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAAsDwP8EQR0DwRAAAAAAAAACzPAzxRBDzRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEOAAABBgIRQasiIAiBMAcEgSJAmSBM0DSJYFTYOmwTQBkmVB06BpME0AAAAAAAAAAAAAJE2DpkHTIIoASdOgadA0iCIAAAAAAAAAAAAAkqZB06BpEEWApGnQNGgaRBEAAAAAAAAAAAAAzzQhihBFmCbAM02IIkQRpgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAGHAAAAgwoQwUGrIiAIgTAHA4imUBAIDjOJYFAACO41gWAABYliWKAABgWZooAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAYcAAACDChDBQashIAiAIAcCiKZQHHsSzgOJYFJMmyAJYF0DyApgFEEQAIAAAocAAACLBBU2JxgEJDVgIAUQAABsWxLE0TRZKkaZoniiRJ0zxPFGma53meacLzPM80IYqiaJoQRVE0TZimaaoqME1VFQAAUOAAABBgg6bE4gCFhqwEAEICAByKYlma5nmeJ4qmqZokSdM8TxRF0TRNU1VJkqZ5niiKommapqqyLE3zPFEURdNUVVWFpnmeKIqiaaqq6sLzPE8URdE0VdV14XmeJ4qiaJqq6roQRVE0TdNUTVV1XSCKpmmaqqqqrgtETxRNU1Vd13WB54miaaqqq7ouEE3TVFVVdV1ZBpimaaqq68oyQFVV1XVdV5YBqqqqruu6sgxQVdd1XVmWZQCu67qyLMsCAAAOHAAAAoygk4wqi7DRhAsPQKEhKwKAKAAAwBimFFPKMCYhpBAaxiSEFEImJaXSUqogpFJSKRWEVEoqJaOUUmopVRBSKamUCkIqJZVSAADYgQMA2IGFUGjISgAgDwCAMEYpxhhzTiKkFGPOOScRUoox55yTSjHmnHPOSSkZc8w556SUzjnnnHNSSuacc845KaVzzjnnnJRSSuecc05KKSWEzkEnpZTSOeecEwAAVOAAABBgo8jmBCNBhYasBABSAQAMjmNZmuZ5omialiRpmud5niiapiZJmuZ5nieKqsnzPE8URdE0VZXneZ4oiqJpqirXFUXTNE1VVV2yLIqmaZqq6rowTdNUVdd1XZimaaqq67oubFtVVdV1ZRm2raqq6rqyDFzXdWXZloEsu67s2rIAAPAEBwCgAhtWRzgpGgssNGQlAJABAEAYg5BCCCFlEEIKIYSUUggJAAAYcAAACDChDBQashIASAUAAIyx1lprrbXWQGettdZaa62AzFprrbXWWmuttdZaa6211lJrrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmstpZRSSimllFJKKaWUUkoppZRSSgUA+lU4APg/2LA6wknRWGChISsBgHAAAMAYpRhzDEIppVQIMeacdFRai7FCiDHnJKTUWmzFc85BKCGV1mIsnnMOQikpxVZjUSmEUlJKLbZYi0qho5JSSq3VWIwxqaTWWoutxmKMSSm01FqLMRYjbE2ptdhqq7EYY2sqLbQYY4zFCF9kbC2m2moNxggjWywt1VprMMYY3VuLpbaaizE++NpSLDHWXAAAd4MDAESCjTOsJJ0VjgYXGrISAAgJACAQUooxxhhzzjnnpFKMOeaccw5CCKFUijHGnHMOQgghlIwx5pxzEEIIIYRSSsaccxBCCCGEkFLqnHMQQgghhBBKKZ1zDkIIIYQQQimlgxBCCCGEEEoopaQUQgghhBBCCKmklEIIIYRSQighlZRSCCGEEEIpJaSUUgohhFJCCKGElFJKKYUQQgillJJSSimlEkoJJYQSUikppRRKCCGUUkpKKaVUSgmhhBJKKSWllFJKIYQQSikFAAAcOAAABBhBJxlVFmGjCRcegEJDVgIAZAAAkKKUUiktRYIipRikGEtGFXNQWoqocgxSzalSziDmJJaIMYSUk1Qy5hRCDELqHHVMKQYtlRhCxhik2HJLoXMOAAAAQQCAgJAAAAMEBTMAwOAA4XMQdAIERxsAgCBEZohEw0JweFAJEBFTAUBigkIuAFRYXKRdXECXAS7o4q4DIQQhCEEsDqCABByccMMTb3jCDU7QKSp1IAAAAAAADADwAACQXAAREdHMYWRobHB0eHyAhIiMkAgAAAAAABcAfAAAJCVAREQ0cxgZGhscHR4fICEiIyQBAIAAAgAAAAAggAAEBAQAAAAAAAIAAAAEBA==`),n=C(t);return n.setUint8(15,e.numberOfChannels),n.setUint32(16,e.sampleRate,!0),t}default:return}},Vr=48e3,Hr=/^pcm-([usf])(\d+)(be)?$/,Ur=e=>{if(n(P.includes(e)),e===`ulaw`)return{dataType:`ulaw`,sampleSize:1,littleEndian:!0,silentValue:255};if(e===`alaw`)return{dataType:`alaw`,sampleSize:1,littleEndian:!0,silentValue:213};let t=Hr.exec(e);n(t);let r;r=t[1]===`u`?`unsigned`:t[1]===`s`?`signed`:`float`;let i=Number(t[2])/8,a=t[3]!==`be`;return{dataType:r,sampleSize:i,littleEndian:a,silentValue:e===`pcm-u8`?128:0}},Wr=e=>e.startsWith(`avc1`)||e.startsWith(`avc3`)?`avc`:e.startsWith(`hev1`)||e.startsWith(`hvc1`)?`hevc`:e===`vp8`?`vp8`:e.startsWith(`vp09`)?`vp9`:e.startsWith(`av01`)?`av1`:Ar.includes(e)?`prores`:e===`mp3`||e===`mp4a.69`||e===`mp4a.6B`||e===`mp4a.6b`||e===`mp4a.40.34`?`mp3`:e.startsWith(`mp4a.40.`)||e===`mp4a.67`?`aac`:e===`opus`||e===`Opus`?`opus`:e===`vorbis`?`vorbis`:e===`flac`?`flac`:e===`ac-3`||e===`ac3`?`ac3`:e===`ec-3`||e===`eac3`?`eac3`:jr.includes(e)?`dts`:e===`ulaw`?`ulaw`:e===`alaw`?`alaw`:Hr.test(e)?e:e===`webvtt`?`webvtt`:null,Gr=e=>e===`avc`?{avc:{format:`avc`}}:e===`hevc`?{hevc:{format:`hevc`}}:{},Kr=e=>e===`aac`?{aac:{format:`aac`}}:e===`opus`?{opus:{format:`opus`}}:{},qr=[`avc1`,`avc3`,`hev1`,`hvc1`,`vp8`,`vp09`,`av01`,...Ar],Jr=/^(avc1|avc3)\.[0-9a-fA-F]{6}$/,Yr=/^(hev1|hvc1)\.(?:[ABC]?\d+)\.[0-9a-fA-F]{1,8}\.[LH]\d+(?:\.[0-9a-fA-F]{1,2}){0,6}$/,Xr=/^vp09(?:\.\d{2}){3}(?:(?:\.\d{2}){5})?$/,Zr=/^av01\.\d\.\d{2}[MH]\.\d{2}(?:\.\d\.\d{3}\.\d{2}\.\d{2}\.\d{2}\.\d)?$/,Qr=(e,t)=>{if(!e)throw TypeError(`Video chunk metadata must be provided.`);if(typeof e!=`object`)throw TypeError(`Video chunk metadata must be an object.`);if(!e.decoderConfig)throw TypeError(`Video chunk metadata must include a decoder configuration.`);if(typeof e.decoderConfig!=`object`)throw TypeError(`Video chunk metadata decoder configuration must be an object.`);if(typeof e.decoderConfig.codec!=`string`)throw TypeError(`Video chunk metadata decoder configuration must specify a codec string.`);if(!qr.some(t=>e.decoderConfig.codec.startsWith(t)))throw TypeError(`Video chunk metadata decoder configuration codec string must be a valid video codec string as specified in the Mediabunny Codec Registry.`);if(!Number.isInteger(e.decoderConfig.codedWidth)||e.decoderConfig.codedWidth<=0)throw TypeError(`Video chunk metadata decoder configuration must specify a valid codedWidth (positive integer).`);if(!Number.isInteger(e.decoderConfig.codedHeight)||e.decoderConfig.codedHeight<=0)throw TypeError(`Video chunk metadata decoder configuration must specify a valid codedHeight (positive integer).`);if(e.decoderConfig.displayAspectWidth!==void 0&&(!Number.isInteger(e.decoderConfig.displayAspectWidth)||e.decoderConfig.displayAspectWidth<=0))throw TypeError(`Video chunk metadata decoder configuration displayAspectWidth, when defined, must be a positive integer.`);if(e.decoderConfig.displayAspectHeight!==void 0&&(!Number.isInteger(e.decoderConfig.displayAspectHeight)||e.decoderConfig.displayAspectHeight<=0))throw TypeError(`Video chunk metadata decoder configuration displayAspectHeight, when defined, must be a positive integer.`);if(e.decoderConfig.displayAspectWidth!==void 0!=(e.decoderConfig.displayAspectHeight!==void 0))throw TypeError(`Video chunk metadata decoder configuration must specify both displayAspectWidth and displayAspectHeight, or neither.`);if(e.decoderConfig.description!==void 0&&!pe(e.decoderConfig.description))throw TypeError(`Video chunk metadata decoder configuration description, when defined, must be an ArrayBuffer or an ArrayBuffer view.`);if(e.decoderConfig.colorSpace!==void 0){let{colorSpace:t}=e.decoderConfig;if(typeof t!=`object`)throw TypeError(`Video chunk metadata decoder configuration colorSpace, when provided, must be an object.`);let n=Object.keys(ie);if(t.primaries!=null&&!n.includes(t.primaries))throw TypeError(`Video chunk metadata decoder configuration colorSpace primaries, when defined, must be one of ${n.join(`, `)}.`);let r=Object.keys(oe);if(t.transfer!=null&&!r.includes(t.transfer))throw TypeError(`Video chunk metadata decoder configuration colorSpace transfer, when defined, must be one of ${r.join(`, `)}.`);let i=Object.keys(ce);if(t.matrix!=null&&!i.includes(t.matrix))throw TypeError(`Video chunk metadata decoder configuration colorSpace matrix, when defined, must be one of ${i.join(`, `)}.`);if(t.fullRange!=null&&typeof t.fullRange!=`boolean`)throw TypeError(`Video chunk metadata decoder configuration colorSpace fullRange, when defined, must be a boolean.`)}if(e.decoderConfig.codec.startsWith(`avc1`)||e.decoderConfig.codec.startsWith(`avc3`)){if(!Jr.test(e.decoderConfig.codec))throw 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(e.decoderConfig.codec.startsWith(`hev1`)||e.decoderConfig.codec.startsWith(`hvc1`)){if(!Yr.test(e.decoderConfig.codec))throw 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(e.decoderConfig.codec.startsWith(`vp8`)){if(e.decoderConfig.codec!==`vp8`)throw TypeError(`Video chunk metadata decoder configuration codec string for VP8 must be "vp8".`)}else if(e.decoderConfig.codec.startsWith(`vp09`)){if(!Xr.test(e.decoderConfig.codec))throw 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(e.decoderConfig.codec.startsWith(`av01`)){if(!Zr.test(e.decoderConfig.codec))throw 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/.`)}else if(Ar.some(t=>e.decoderConfig.codec.startsWith(t))&&!Ar.some(t=>e.decoderConfig.codec===t))throw TypeError(`Video chunk metadata decoder configuration codec string for ProRes must be one of the valid ProRes four-character codes: ${Ar.join(`, `)}.`);if(t!==null&&Wr(e.decoderConfig.codec)!==t)throw TypeError(`Video chunk metadata decoder configuration codec string '${e.decoderConfig.codec}' does not fit to the track codec '${t}'.`)},$r=[`mp4a`,`mp3`,`opus`,`vorbis`,`flac`,`ulaw`,`alaw`,`pcm`,`ac-3`,`ec-3`,`dts`],ei=(e,t)=>{if(!e)throw TypeError(`Audio chunk metadata must be provided.`);if(typeof e!=`object`)throw TypeError(`Audio chunk metadata must be an object.`);if(!e.decoderConfig)throw TypeError(`Audio chunk metadata must include a decoder configuration.`);if(typeof e.decoderConfig!=`object`)throw TypeError(`Audio chunk metadata decoder configuration must be an object.`);if(typeof e.decoderConfig.codec!=`string`)throw TypeError(`Audio chunk metadata decoder configuration must specify a codec string.`);if(!$r.some(t=>e.decoderConfig.codec.startsWith(t)))throw TypeError(`Audio chunk metadata decoder configuration codec string must be a valid audio codec string as specified in the Mediabunny Codec Registry.`);if(!Number.isInteger(e.decoderConfig.sampleRate)||e.decoderConfig.sampleRate<=0)throw TypeError(`Audio chunk metadata decoder configuration must specify a valid sampleRate (positive integer).`);if(!Number.isInteger(e.decoderConfig.numberOfChannels)||e.decoderConfig.numberOfChannels<=0)throw TypeError(`Audio chunk metadata decoder configuration must specify a valid numberOfChannels (positive integer).`);if(e.decoderConfig.description!==void 0&&!pe(e.decoderConfig.description))throw TypeError(`Audio chunk metadata decoder configuration description, when defined, must be an ArrayBuffer or an ArrayBuffer view.`);if(e.decoderConfig.codec.startsWith(`mp4a`)&&e.decoderConfig.codec!==`mp4a.69`&&e.decoderConfig.codec!==`mp4a.6B`&&e.decoderConfig.codec!==`mp4a.6b`){if(![`mp4a.40.2`,`mp4a.40.02`,`mp4a.40.5`,`mp4a.40.05`,`mp4a.40.29`,`mp4a.67`].includes(e.decoderConfig.codec))throw 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(e.decoderConfig.codec.startsWith(`mp3`)||e.decoderConfig.codec.startsWith(`mp4a`)){if(e.decoderConfig.codec!==`mp3`&&e.decoderConfig.codec!==`mp4a.69`&&e.decoderConfig.codec!==`mp4a.6B`&&e.decoderConfig.codec!==`mp4a.6b`)throw TypeError(`Audio chunk metadata decoder configuration codec string for MP3 must be "mp3", "mp4a.69" or "mp4a.6B".`)}else if(e.decoderConfig.codec.startsWith(`opus`)){if(e.decoderConfig.codec!==`opus`)throw TypeError(`Audio chunk metadata decoder configuration codec string for Opus must be "opus".`);if(e.decoderConfig.description&&e.decoderConfig.description.byteLength<18)throw 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(e.decoderConfig.codec.startsWith(`vorbis`)){if(e.decoderConfig.codec!==`vorbis`)throw TypeError(`Audio chunk metadata decoder configuration codec string for Vorbis must be "vorbis".`);if(!e.decoderConfig.description)throw 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(e.decoderConfig.codec.startsWith(`flac`)){if(e.decoderConfig.codec!==`flac`)throw TypeError(`Audio chunk metadata decoder configuration codec string for FLAC must be "flac".`);if(!e.decoderConfig.description||e.decoderConfig.description.byteLength<42)throw 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(e.decoderConfig.codec.startsWith(`ac-3`)||e.decoderConfig.codec.startsWith(`ac3`)){if(e.decoderConfig.codec!==`ac-3`)throw TypeError(`Audio chunk metadata decoder configuration codec string for AC-3 must be "ac-3".`)}else if(e.decoderConfig.codec.startsWith(`ec-3`)||e.decoderConfig.codec.startsWith(`eac3`)){if(e.decoderConfig.codec!==`ec-3`)throw TypeError(`Audio chunk metadata decoder configuration codec string for EC-3 must be "ec-3".`)}else if(e.decoderConfig.codec.startsWith(`dts`)){if(!jr.includes(e.decoderConfig.codec))throw TypeError(`Audio chunk metadata decoder configuration codec string for DTS must be one of the following four-character codes: ${jr.join(`, `)}.`)}else if((e.decoderConfig.codec.startsWith(`pcm`)||e.decoderConfig.codec.startsWith(`ulaw`)||e.decoderConfig.codec.startsWith(`alaw`))&&!P.includes(e.decoderConfig.codec))throw TypeError(`Audio chunk metadata decoder configuration codec string for PCM must be one of the supported PCM codecs (${P.join(`, `)}).`);if(t!==null&&Wr(e.decoderConfig.codec)!==t)throw TypeError(`Audio chunk metadata decoder configuration codec string '${e.decoderConfig.codec}' does not fit to the track codec '${t}'.`)},ti=e=>{if(!e)throw TypeError(`Subtitle metadata must be provided.`);if(typeof e!=`object`)throw TypeError(`Subtitle metadata must be an object.`);if(!e.config)throw TypeError(`Subtitle metadata must include a config object.`);if(typeof e.config!=`object`)throw TypeError(`Subtitle metadata config must be an object.`);if(typeof e.config.description!=`string`)throw TypeError(`Subtitle metadata config description must be a string.`)},ni=[44100,48e3,32e3],ri=[-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],ii=(e,t,n,r,i)=>t===0?0:t===1?Math.floor(144*n/(r<<e))+i:t===2?Math.floor(144*n/r)+i:(Math.floor(12*n/r)+i)*4,ai=(e,t,n,r)=>t===0?0:t===1?144*n/(r<<e):t===2?144*n/r:12*n/r*4,oi=(e,t)=>e===3?t===3?21:36:t===3?13:21,si=(e,t)=>{
73
73
  /*!
74
74
  * Copyright (c) 2026-present, Vanilagy and contributors
75
75
  *
@@ -436,7 +436,7 @@ var Af=class{constructor(e,t){if(this.finalized=!1,this.started=!1,this.pos=0,th
436
436
  * License, v. 2.0. If a copy of the MPL was not distributed with this
437
437
  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
438
438
  */
439
- const jf=Io===void 0?void 0:Io;var Mf=class extends Mt{constructor(){super(...arguments),this._writerAcquired=!1,this._monotonicity=null,this.onwrite=null}_setMonotonicity(e){this._monotonicity!==!1&&(this._monotonicity=e)}_dispatchWrite(e,t){this.onwrite?.(e,t),this._emit(`write`,{start:e,end:t})}slice(e){if(!Number.isInteger(e)||e<0)throw TypeError(`offset must be a non-negative integer.`);return new Vf(this,e)}};const Nf=2**16,Pf=2**32;var Ff=class extends Mf{constructor(e={}){if(super(),this.buffer=null,this._maxPos=0,!e||typeof e!=`object`)throw TypeError(`BufferTarget options, when provided, must be an object.`);if(e.onFinalize!==void 0&&typeof e.onFinalize!=`function`)throw TypeError(`options.onFinalize, when provided, must be a function.`);if(this._options=e,this._supportsResize=`resize`in new ArrayBuffer(0),this._supportsResize)try{this._buffer=new ArrayBuffer(Nf,{maxByteLength:Pf})}catch{this._buffer=new ArrayBuffer(Nf),this._supportsResize=!1}else this._buffer=new ArrayBuffer(Nf);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>Pf)throw Error(`ArrayBuffer exceeded maximum size of ${Pf} bytes. Please consider using another target.`);if(this._supportsResize)this._buffer.resize(t);else{let e=new ArrayBuffer(t),n=new Uint8Array(e);n.set(this._bytes,0),this._buffer=e,this._bytes=n}}}_start(){}_write(e,t){this._ensureSize(t+e.byteLength),this._bytes.set(e,t),this._maxPos=Math.max(this._maxPos,t+e.byteLength),this._dispatchWrite(t,t+e.byteLength)}async _flush(){}async _finalize(){this.buffer=this._buffer.slice(0,this._maxPos),this._options.onFinalize&&await this._options.onFinalize(this.buffer),this._emit(`finalized`)}async _close(){}_getSlice(e,t){return this._bytes.slice(e,t)}};const If=2**24;var Lf=class extends Mf{constructor(e,t={}){if(super(),this._sections=[],this._lastWriteEnd=0,this._lastFlushEnd=0,this._streamWriter=null,this._writeError=null,this._chunks=[],!(e instanceof WritableStream))throw TypeError(`StreamTarget requires a WritableStream instance.`);if(t!=null&&typeof t!=`object`)throw TypeError(`StreamTarget options, when provided, must be an object.`);if(t.chunked!==void 0&&typeof t.chunked!=`boolean`)throw TypeError(`options.chunked, when provided, must be a boolean.`);if(t.chunkSize!==void 0&&(!Number.isInteger(t.chunkSize)||t.chunkSize<1024))throw TypeError(`options.chunkSize, when provided, must be an integer and not smaller than 1024.`);this._writable=e,this._options=t,this._chunked=t.chunked??!1,this._chunkSize=t.chunkSize??If}_start(){this._streamWriter=this._writable.getWriter()}_write(e,t){if(t>this._lastWriteEnd){let e=t-this._lastWriteEnd;this._write(new Uint8Array(e),this._lastWriteEnd)}this._sections.push({data:e.slice(),start:t}),this._lastWriteEnd=Math.max(this._lastWriteEnd,t+e.byteLength),this._dispatchWrite(t,t+e.byteLength)}async _flush(){if(this._writeError!==null)throw this._writeError;if(n(this._streamWriter),this._sections.length===0)return;let e=[],t=[...this._sections].sort((e,t)=>e.start-t.start);e.push({start:t[0].start,size:t[0].data.byteLength});for(let n=1;n<t.length;n++){let r=e[e.length-1],i=t[n];i.start<=r.start+r.size?r.size=Math.max(r.size,i.start+i.data.byteLength-r.start):e.push({start:i.start,size:i.data.byteLength})}for(let t of e){t.data=new Uint8Array(t.size);for(let e of this._sections)t.start<=e.start&&e.start<t.start+t.size&&t.data.set(e.data,e.start-t.start);if(this._streamWriter.desiredSize!==null&&this._streamWriter.desiredSize<=0&&await this._streamWriter.ready,this._chunked)this._writeDataIntoChunks(t.data,t.start),this._tryToFlushChunks();else{if(this._monotonicity===!0&&t.start!==this._lastFlushEnd)throw Error(`Internal error: Monotonicity violation.`);this._streamWriter.write({type:`write`,data:t.data,position:t.start}).catch(e=>{this._writeError??=e}),this._lastFlushEnd=t.start+t.data.byteLength}}this._sections.length=0}_writeDataIntoChunks(e,t){let n=this._chunks.findIndex(e=>e.start<=t&&t<e.start+this._chunkSize);n===-1&&(n=this._createChunk(t));let r=this._chunks[n],i=t-r.start,a=e.subarray(0,Math.min(this._chunkSize-i,e.byteLength));r.data.set(a,i);let o={start:i,end:i+a.byteLength};if(this._insertSectionIntoChunk(r,o),r.written[0].start===0&&r.written[0].end===this._chunkSize&&(r.shouldFlush=!0),this._chunks.length>2){for(let e=0;e<this._chunks.length-1;e++)this._chunks[e].shouldFlush=!0;this._tryToFlushChunks()}a.byteLength<e.byteLength&&this._writeDataIntoChunks(e.subarray(a.byteLength),t+a.byteLength)}_insertSectionIntoChunk(e,t){let n=0,r=e.written.length-1,i=-1;for(;n<=r;){let a=Math.floor(n+(r-n+1)/2);e.written[a].start<=t.start?(n=a+1,i=a):r=a-1}for(e.written.splice(i+1,0,t),(i===-1||e.written[i].end<t.start)&&i++;i<e.written.length-1&&e.written[i].end>=e.written[i+1].start;)e.written[i].end=Math.max(e.written[i].end,e.written[i+1].end),e.written.splice(i+1,1)}_createChunk(e){let t={start:Math.floor(e/this._chunkSize)*this._chunkSize,data:new Uint8Array(this._chunkSize),written:[],shouldFlush:!1};return this._chunks.push(t),this._chunks.sort((e,t)=>e.start-t.start),this._chunks.indexOf(t)}_tryToFlushChunks(e=!1){n(this._streamWriter);for(let t=0;t<this._chunks.length;t++){let n=this._chunks[t];if(!(!n.shouldFlush&&!e)){for(let e of n.written){let t=n.start+e.start;if(this._monotonicity===!0&&t!==this._lastFlushEnd)throw Error(`Internal error: Monotonicity violation.`);let r=e.start!==0||e.end!==n.data.byteLength,i;i=r&&Ze()?n.data.slice(e.start,e.end):n.data.subarray(e.start,e.end),this._streamWriter.write({type:`write`,data:i,position:t}).catch(e=>{this._writeError??=e}),this._lastFlushEnd=n.start+e.end}this._chunks.splice(t--,1)}}}async _finalize(){if(this._chunked&&this._tryToFlushChunks(!0),this._writeError!==null)throw this._writeError;n(this._streamWriter),await this._streamWriter.ready,await this._streamWriter.close(),this._emit(`finalized`)}async _close(){return this._streamWriter?.close()}},Rf=class extends Mf{constructor(e){super(),this._writer=null,this._nextWritePos=0,this._writable=e,this._streamTarget=new Lf(new WritableStream({start:()=>{this._writer=this._writable.getWriter()},write:e=>{if(this._monotonicity!==!0)throw Error(`AppendOnlyStreamTarget requires that data be written monotonically (always appended to the end). You must use a format that guarantees this behavior.`);return n(e.position===this._nextWritePos),this._nextWritePos+=e.data.byteLength,n(this._writer),this._writer.write(e.data)},close:()=>this._writer?.close()}))}_start(){this._streamTarget._start()}_write(e,t){this._streamTarget._write(e,t)}_flush(){return this._streamTarget._flush()}_finalize(){return this._streamTarget._finalize()}_close(){return this._streamTarget._close()}_setMonotonicity(e){super._setMonotonicity(e),this._streamTarget._setMonotonicity(e)}},zf=class extends Mf{constructor(e,t={}){if(typeof e!=`string`)throw TypeError(`filePath must be a string.`);if(!t||typeof t!=`object`)throw TypeError(`options must be an object.`);if(!jf.fs)throw Error(`FilePathTarget is only available in server-side environments (Node.js, Bun, Deno).`);super(),this._fileHandle=null;let r=new WritableStream({start:async()=>{this._fileHandle=await jf.fs.open(e,`w`)},write:async e=>{n(this._fileHandle),await this._fileHandle.write(e.data,0,e.data.byteLength,e.position)},close:async()=>{this._fileHandle&&=(await this._fileHandle.close(),null)}});this._streamTarget=new Lf(r,{chunked:!0,...t})}_start(){this._streamTarget._start()}_write(e,t){this._streamTarget._write(e,t),this._dispatchWrite(t,t+e.byteLength)}async _flush(){return this._streamTarget._flush()}async _finalize(){await this._streamTarget._finalize(),this._emit(`finalized`)}async _close(){return this._streamTarget._close()}_setMonotonicity(e){super._setMonotonicity(e),this._streamTarget._setMonotonicity(e)}},Bf=class extends Mf{_start(){}_write(e,t){this._dispatchWrite(t,t+e.byteLength)}async _flush(){}async _finalize(){this._emit(`finalized`)}async _close(){}},Vf=class extends Mf{constructor(e,t){super(),this._baseTarget=e,this._offset=t}_start(){}_write(e,t){this._baseTarget._write(e,this._offset+t),this._dispatchWrite(t,t+e.byteLength)}_flush(){return this._baseTarget._flush()}async _finalize(){this._emit(`finalized`)}async _close(){}_setMonotonicity(e){super._setMonotonicity(e),this._baseTarget._setMonotonicity(e)}},Hf=class{constructor(e,t){if(this.rootPath=e,this.getTarget=t,typeof e!=`string`)throw TypeError(`rootPath must be a string.`);if(typeof t!=`function`)throw TypeError(`getTarget must be a function.`)}};
439
+ const jf=Io===void 0?void 0:Io;var Mf=class extends Mt{constructor(){super(...arguments),this._writerAcquired=!1,this._monotonicity=null,this.onwrite=null}_setMonotonicity(e){this._monotonicity!==!1&&(this._monotonicity=e)}_dispatchWrite(e,t){this.onwrite?.(e,t),this._emit(`write`,{start:e,end:t})}slice(e){if(!Number.isInteger(e)||e<0)throw TypeError(`offset must be a non-negative integer.`);return new Vf(this,e)}};const Nf=2**16,Pf=2**32;var Ff=class extends Mf{constructor(e={}){if(super(),this.buffer=null,this._maxPos=0,!e||typeof e!=`object`)throw TypeError(`BufferTarget options, when provided, must be an object.`);if(e.onFinalize!==void 0&&typeof e.onFinalize!=`function`)throw TypeError(`options.onFinalize, when provided, must be a function.`);if(this._options=e,this._supportsResize=`resize`in new ArrayBuffer(0),this._supportsResize)try{this._buffer=new ArrayBuffer(Nf,{maxByteLength:Pf})}catch{this._buffer=new ArrayBuffer(Nf),this._supportsResize=!1}else this._buffer=new ArrayBuffer(Nf);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>Pf)throw Error(`ArrayBuffer exceeded maximum size of ${Pf} bytes. Please consider using another target.`);if(this._supportsResize)this._buffer.resize(t);else{let e=new ArrayBuffer(t),n=new Uint8Array(e);n.set(this._bytes,0),this._buffer=e,this._bytes=n}}}_start(){}_write(e,t){this._ensureSize(t+e.byteLength),this._bytes.set(e,t),this._maxPos=Math.max(this._maxPos,t+e.byteLength),this._dispatchWrite(t,t+e.byteLength)}async _flush(){}async _finalize(){this.buffer=this._buffer.slice(0,this._maxPos),this._options.onFinalize&&await this._options.onFinalize(this.buffer),this._emit(`finalized`)}async _close(){}_getSlice(e,t){return this._bytes.slice(e,t)}};const If=2**24;var Lf=class extends Mf{constructor(e,t={}){if(super(),this._sections=[],this._lastWriteEnd=0,this._lastFlushEnd=0,this._streamWriter=null,this._writeError=null,this._chunks=[],!(e instanceof WritableStream))throw TypeError(`StreamTarget requires a WritableStream instance.`);if(t!=null&&typeof t!=`object`)throw TypeError(`StreamTarget options, when provided, must be an object.`);if(t.chunked!==void 0&&typeof t.chunked!=`boolean`)throw TypeError(`options.chunked, when provided, must be a boolean.`);if(t.chunkSize!==void 0&&(!Number.isInteger(t.chunkSize)||t.chunkSize<1024))throw TypeError(`options.chunkSize, when provided, must be an integer and not smaller than 1024.`);this._writable=e,this._options=t,this._chunked=t.chunked??!1,this._chunkSize=t.chunkSize??If}_start(){this._streamWriter=this._writable.getWriter()}_write(e,t){if(t>this._lastWriteEnd){let e=t-this._lastWriteEnd;this._write(new Uint8Array(e),this._lastWriteEnd)}this._sections.push({data:e.slice(),start:t}),this._lastWriteEnd=Math.max(this._lastWriteEnd,t+e.byteLength),this._dispatchWrite(t,t+e.byteLength)}async _flush(){if(this._writeError!==null)throw this._writeError;if(n(this._streamWriter),this._sections.length===0)return;let e=[],t=[...this._sections].sort((e,t)=>e.start-t.start);e.push({start:t[0].start,size:t[0].data.byteLength});for(let n=1;n<t.length;n++){let r=e[e.length-1],i=t[n];i.start<=r.start+r.size?r.size=Math.max(r.size,i.start+i.data.byteLength-r.start):e.push({start:i.start,size:i.data.byteLength})}for(let t of e){t.data=new Uint8Array(t.size);for(let e of this._sections)t.start<=e.start&&e.start<t.start+t.size&&t.data.set(e.data,e.start-t.start);if(this._streamWriter.desiredSize!==null&&this._streamWriter.desiredSize<=0&&await this._streamWriter.ready,this._chunked)this._writeDataIntoChunks(t.data,t.start),this._tryToFlushChunks();else{if(this._monotonicity===!0&&t.start!==this._lastFlushEnd)throw Error(`Internal error: Monotonicity violation.`);this._streamWriter.write({type:`write`,data:t.data,position:t.start}).catch(e=>{this._writeError??=e}),this._lastFlushEnd=t.start+t.data.byteLength}}this._sections.length=0}_writeDataIntoChunks(e,t){let n=this._chunks.findIndex(e=>e.start<=t&&t<e.start+this._chunkSize);n===-1&&(n=this._createChunk(t));let r=this._chunks[n],i=t-r.start,a=e.subarray(0,Math.min(this._chunkSize-i,e.byteLength));r.data.set(a,i);let o={start:i,end:i+a.byteLength};if(this._insertSectionIntoChunk(r,o),r.written[0].start===0&&r.written[0].end===this._chunkSize&&(r.shouldFlush=!0),this._chunks.length>2){for(let e=0;e<this._chunks.length-1;e++)this._chunks[e].shouldFlush=!0;this._tryToFlushChunks()}a.byteLength<e.byteLength&&this._writeDataIntoChunks(e.subarray(a.byteLength),t+a.byteLength)}_insertSectionIntoChunk(e,t){let n=0,r=e.written.length-1,i=-1;for(;n<=r;){let a=Math.floor(n+(r-n+1)/2);e.written[a].start<=t.start?(n=a+1,i=a):r=a-1}for(e.written.splice(i+1,0,t),(i===-1||e.written[i].end<t.start)&&i++;i<e.written.length-1&&e.written[i].end>=e.written[i+1].start;)e.written[i].end=Math.max(e.written[i].end,e.written[i+1].end),e.written.splice(i+1,1)}_createChunk(e){let t={start:Math.floor(e/this._chunkSize)*this._chunkSize,data:new Uint8Array(this._chunkSize),written:[],shouldFlush:!1};return this._chunks.push(t),this._chunks.sort((e,t)=>e.start-t.start),this._chunks.indexOf(t)}_tryToFlushChunks(e=!1){n(this._streamWriter);for(let t=0;t<this._chunks.length;t++){let n=this._chunks[t];if(!(!n.shouldFlush&&!e)){for(let e of n.written){let t=n.start+e.start;if(this._monotonicity===!0&&t!==this._lastFlushEnd)throw Error(`Internal error: Monotonicity violation.`);let r=e.start!==0||e.end!==n.data.byteLength,i;i=r&&Ze()?n.data.slice(e.start,e.end):n.data.subarray(e.start,e.end),this._streamWriter.write({type:`write`,data:i,position:t}).catch(e=>{this._writeError??=e}),this._lastFlushEnd=n.start+e.end}this._chunks.splice(t--,1)}}}async _finalize(){if(this._chunked&&this._tryToFlushChunks(!0),this._writeError!==null)throw this._writeError;n(this._streamWriter),await this._streamWriter.ready,await this._streamWriter.close(),this._emit(`finalized`)}async _close(){return this._streamWriter?.close()}},Rf=class extends Mf{constructor(e){super(),this._writer=null,this._nextWritePos=0,this._writable=e,this._streamTarget=new Lf(new WritableStream({start:()=>{this._writer=this._writable.getWriter()},write:e=>{if(this._monotonicity!==!0)throw Error(`AppendOnlyStreamTarget requires that data be written monotonically (always appended to the end). You must use a format that guarantees this behavior.`);return n(e.position===this._nextWritePos),this._nextWritePos+=e.data.byteLength,n(this._writer),this._writer.write(e.data)},close:()=>this._writer?.close()}))}_start(){this._streamTarget._start()}_write(e,t){this._streamTarget._write(e,t),this._dispatchWrite(t,t+e.byteLength)}_flush(){return this._streamTarget._flush()}_finalize(){return this._streamTarget._finalize()}_close(){return this._streamTarget._close()}_setMonotonicity(e){super._setMonotonicity(e),this._streamTarget._setMonotonicity(e)}},zf=class extends Mf{constructor(e,t={}){if(typeof e!=`string`)throw TypeError(`filePath must be a string.`);if(!t||typeof t!=`object`)throw TypeError(`options must be an object.`);if(!jf.fs)throw Error(`FilePathTarget is only available in server-side environments (Node.js, Bun, Deno).`);super(),this._fileHandle=null;let r=new WritableStream({start:async()=>{this._fileHandle=await jf.fs.open(e,`w`)},write:async e=>{n(this._fileHandle),await this._fileHandle.write(e.data,0,e.data.byteLength,e.position)},close:async()=>{this._fileHandle&&=(await this._fileHandle.close(),null)}});this._streamTarget=new Lf(r,{chunked:!0,...t})}_start(){this._streamTarget._start()}_write(e,t){this._streamTarget._write(e,t),this._dispatchWrite(t,t+e.byteLength)}async _flush(){return this._streamTarget._flush()}async _finalize(){await this._streamTarget._finalize(),this._emit(`finalized`)}async _close(){return this._streamTarget._close()}_setMonotonicity(e){super._setMonotonicity(e),this._streamTarget._setMonotonicity(e)}},Bf=class extends Mf{_start(){}_write(e,t){this._dispatchWrite(t,t+e.byteLength)}async _flush(){}async _finalize(){this._emit(`finalized`)}async _close(){}},Vf=class extends Mf{constructor(e,t){super(),this._baseTarget=e,this._offset=t}_start(){}_write(e,t){this._baseTarget._write(e,this._offset+t),this._dispatchWrite(t,t+e.byteLength)}_flush(){return this._baseTarget._flush()}async _finalize(){this._emit(`finalized`)}async _close(){}_setMonotonicity(e){super._setMonotonicity(e),this._baseTarget._setMonotonicity(e)}},Hf=class{constructor(e,t){if(this.rootPath=e,this.getTarget=t,typeof e!=`string`)throw TypeError(`rootPath must be a string.`);if(typeof t!=`function`)throw TypeError(`getTarget must be a function.`)}};
440
440
  /*!
441
441
  * Copyright (c) 2026-present, Vanilagy and contributors
442
442
  *
@@ -516,7 +516,7 @@ this.sourceSampleRate=null,this.sourceNumberOfChannels=null,this.startTime=null,
516
516
  * License, v. 2.0. If a copy of the MPL was not distributed with this
517
517
  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
518
518
  */
519
- if(t!=null){if(typeof t!=`object`&&typeof t!=`function`)throw TypeError(`Object expected.`);var r,i;if(n){if(!Symbol.asyncDispose)throw TypeError(`Symbol.asyncDispose is not defined.`);r=t[Symbol.asyncDispose]}if(r===void 0){if(!Symbol.dispose)throw TypeError(`Symbol.dispose is not defined.`);r=t[Symbol.dispose],n&&(i=r)}if(typeof r!=`function`)throw TypeError(`Object not disposable.`);i&&(r=function(){try{i.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:t,dispose:r,async:n})}else n&&e.stack.push({async:!0});return t},dp=(function(e){return function(t){function n(n){t.error=t.hasError?new e(n,t.error,`An error was suppressed during disposal.`):n,t.hasError=!0}var r,i=0;function a(){for(;r=t.stack.pop();)try{if(!r.async&&i===1)return i=0,t.stack.push(r),Promise.resolve().then(a);if(r.dispose){var e=r.dispose.call(r.value);if(r.async)return i|=2,Promise.resolve(e).then(a,function(e){return n(e),a()})}else i|=1}catch(e){n(e)}if(i===1)return t.hasError?Promise.reject(t.error):Promise.resolve();if(t.hasError)throw t.error}return a()}})(typeof SuppressedError==`function`?SuppressedError:function(e,t,n){var r=Error(n);return r.name=`SuppressedError`,r.error=e,r.suppressed=t,r}),fp=class{constructor(){this._connectedTrack=null,this._closingPromise=null,this._closed=!1,this._nominalBitrate=null}_ensureValidAdd(){if(!this._connectedTrack)throw Error(`Source is not connected to an output track.`);if(this._connectedTrack.output.state===`canceled`)throw Error(`Output has been canceled.`);if(this._connectedTrack.output.state===`finalizing`||this._connectedTrack.output.state===`finalized`)throw Error(`Output has been finalized.`);if(this._connectedTrack.output.state===`pending`)throw Error(`Output has not started.`);if(this._closed)throw Error(`Source is closed.`)}async _start(){}async _flushAndClose(e){}close(){if(this._closingPromise)return;let e=this._connectedTrack;if(!e)throw Error(`Cannot call close without connecting the source to an output track.`);if(e.output.state===`pending`)throw 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})()}},pp=class extends fp{constructor(e){if(super(),!N.includes(e))throw TypeError(`Invalid video codec '${e}'. Must be one of: ${N.join(`, `)}.`);this._codec=e}};const mp=(e,t)=>{if(e.metadata.hasOnlyKeyPackets&&t.type!==`key`)throw Error(`Cannot add non-key packets to a hasOnlyKeyPackets video track.`)};var hp=class extends pp{constructor(e){super(e)}add(e,t){if(!(e instanceof I))throw TypeError(`packet must be an EncodedPacket.`);if(e.isMetadataOnly)throw TypeError(`Metadata-only packets cannot be added.`);if(t!==void 0&&(!t||typeof t!=`object`))throw TypeError(`meta, when provided, must be an object.`);return this._ensureValidAdd(),mp(this._connectedTrack,e),this._connectedTrack.output._muxer.addEncodedVideoPacket(this._connectedTrack,e,t)}},gp=class{setError(e){this.errorSet||=(this.error=e,!0)}constructor(e,t){this.source=e,this.encodingConfig=t,this.ensureEncoderPromise=null,this.encoderInitialized=!1,this.encoder=null,this.encoderConfig=null,this.encodersReclaimed=!1,this.muxer=null,this.lastMultipleOfKeyFrameInterval=-1,this.emittedEncoderPackets=0,this.codedWidth=null,this.codedHeight=null,this.outputWidth=null,this.outputHeight=null,this.frameRateLastSample=null,this.frameRateLastTimestamp=null,this.frameRateLastEndTimestamp=null,this.preciseTimings=[],this.customEncoder=null,this.customEncoderCallSerializer=new Ye,this.customEncoderQueueSize=0,this.defaultEncodeOptions={},this.alphaEncoder=null,this.splitter=null,this.splitterCreationFailed=!1,this.alphaFrameQueue=[],this.error=null,this.errorSet=!1,this.lastMuxerPromise=Promise.resolve(),this.closed=!1}async add(e,t,r){let i=e;try{this.checkForEncoderError(),this.source._ensureValidAdd();let a=this.encodingConfig,o=a.sizeChangeBehavior??`deny`,s=!1;if(this.codedWidth!==null&&this.codedHeight!==null){if((e.codedWidth!==this.codedWidth||e.codedHeight!==this.codedHeight)&&(s=!0,o===`deny`))throw 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 'deny' in the encoding options.`)}else this.codedWidth=e.codedWidth,this.codedHeight=e.codedHeight;if(a.transform?.width!==void 0||a.transform?.height!==void 0||a.transform?.rotate!==void 0||a.transform?.flip!==void 0||a.transform?.crop!==void 0||a.transform?.force===!0||s&&o!==`passThrough`){let r=a.transform?.width,i=a.transform?.height,c=a.transform?.fit??`fill`;s&&o!==`passThrough`&&(n(this.outputWidth),n(this.outputHeight),n(o!==`deny`),r=this.outputWidth,i=this.outputHeight,c=o);let l=await e.transform({width:r,height:i,roundDimensionsTo:2,crop:a.transform?.crop,rotate:a.transform?.rotate,flip:a.transform?.flip,fit:c,alpha:a.alpha});(this.outputWidth===null||this.outputHeight===null)&&(this.outputWidth=l.displayWidth,this.outputHeight=l.displayHeight),t&&e.close(),e=l,t=!0}else(this.outputWidth===null||this.outputHeight===null)&&(this.outputWidth=e.codedWidth,this.outputHeight=e.codedHeight);let c=a.transform?.frameRate;if(c!==void 0){let n=e.timestamp+e.duration,a=ze(e.timestamp,c);if(this.frameRateLastSample!==null){if(a<=this.frameRateLastTimestamp){this.frameRateLastSample.close(),this.frameRateLastSample=e.clone(),this.frameRateLastEndTimestamp=n;return}await this.padFrameRate(a,r)}e===i&&(e=e.clone(),t=!0),e.setTimestamp(a),e.setDuration(1/c),this.frameRateLastSample?.close(),this.frameRateLastSample=e.clone(),this.frameRateLastTimestamp=a,this.frameRateLastEndTimestamp=n}await this.processAndEncode(e,r)}finally{t&&e.close()}}async processAndEncode(e,t){let r=this.encodingConfig,i;if(r.transform?.process){let t=r.transform.process(e);if(k(t)&&(t=await t),t===null)return;Array.isArray(t)||(t=[t]);let n=[];try{for(let r of t)r instanceof uc?n.push(r):typeof VideoFrame<`u`&&r instanceof VideoFrame?n.push(new uc(r)):n.push(new uc(r,{timestamp:e.timestamp,duration:e.duration}))}catch(r){for(let t of n)t!==e&&t.close();for(let n of t)(n instanceof uc&&n!==e||typeof VideoFrame<`u`&&n instanceof VideoFrame)&&n.close();throw r}i=n}else i=[e];try{for(let e of i){if(this.encoderInitialized||(this.ensureEncoderPromise||this.ensureEncoder(e),this.encoderInitialized||await this.ensureEncoderPromise),n(this.encoderInitialized),this.closed)break;this.encodersReclaimed&&this.recreateWebCodecsEncoders();let r=this.encodingConfig.keyFrameInterval??2,i=Math.floor(e.timestamp/r),a={...this.defaultEncodeOptions,...e.encodeOptions,...t},o={...a,keyFrame:a.keyFrame===void 0?r===0||i!==this.lastMultipleOfKeyFrameInterval:a.keyFrame};if(this.lastMultipleOfKeyFrameInterval=i,this.encodingConfig.onEncodedSample?.(e),this.customEncoder){this.customEncoderQueueSize++;let t=e.clone(),n=this.customEncoderCallSerializer.call(()=>this.customEncoder.encode(t,o)).catch(e=>this.setError(e)).finally(()=>{this.customEncoderQueueSize--,t.close()});this.customEncoderQueueSize>=4&&await n}else{n(this.encoder);let t=e.toVideoFrame(),r=E(this.preciseTimings,t.timestamp,e=>e.microsecondTimestamp),i=r===-1?null:this.preciseTimings[r];if(i&&i.microsecondTimestamp===t.timestamp?(i.timestamp!==e.timestamp&&(i.timestampIsValid=!1),i.duration!==e.duration&&(i.durationIsValid=!1)):(this.preciseTimings.splice(r+1,0,{microsecondTimestamp:t.timestamp,timestamp:e.timestamp,duration:e.duration,timestampIsValid:!0,durationIsValid:!0}),this.preciseTimings.length>128&&this.preciseTimings.shift()),!this.alphaEncoder)try{this.encoder.encode(t,o)}finally{t.close()}else if(t.format&&!t.format.includes(`A`)||this.splitterCreationFailed){this.alphaFrameQueue.push(null);try{this.encoder.encode(t,o)}finally{t.close()}}else{this.splitter||=new vp;let{colorFrame:e,alphaFrame:n}=await this.splitter.split(t);this.alphaFrameQueue.push(n);try{this.encoder.encode(e,o)}finally{e.close()}}this.encoder.encodeQueueSize>=4&&await new Promise(e=>this.encoder.addEventListener(`dequeue`,e,{once:!0}))}await this.lastMuxerPromise}}finally{for(let t of i)t!==e&&t.close()}}async padFrameRate(e,t){let r=this.encodingConfig.transform.frameRate;n(this.frameRateLastSample);let i=Math.round((e-this.frameRateLastTimestamp)*r);for(let e=1;e<i;e++){let n={stack:[],error:void 0,hasError:!1};try{let i=up(n,this.frameRateLastSample.clone(),!1);i.setTimestamp(this.frameRateLastTimestamp+e/r),i.setDuration(1/r),await this.processAndEncode(i,t)}catch(e){n.error=e,n.hasError=!0}finally{dp(n)}}}ensureEncoder(e){this.ensureEncoderPromise=(async()=>{let t=al(this.encodingConfig.quality,this.encodingConfig.bitrate);n(t!==void 0);let r=Hc({...this.encodingConfig,quality:t,width:e.codedWidth,height:e.codedHeight,squarePixelWidth:e.squarePixelWidth,squarePixelHeight:e.squarePixelHeight,framerate:this.source._connectedTrack?.metadata.frameRate}),i=null,a;for(let e of r){let t=e.config;if(this.encodingConfig.onEncoderConfig?.(t),a=bl.find(e=>e.supports(this.encodingConfig.codec,t)),a){i=e;break}if(!(typeof VideoEncoder>`u`)){if(t.alpha=`discard`,this.encodingConfig.alpha===`keep`&&(t.latencyMode=`quality`),(t.width%2==1||t.height%2==1)&&(this.encodingConfig.codec===`avc`||this.encodingConfig.codec===`hevc`))throw Error(`The dimensions ${t.width}x${t.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.`);try{if((await VideoEncoder.isConfigSupported(t)).supported){i=e;break}}catch{}}}if(!i){if(typeof VideoEncoder>`u`)throw Error(nt(`VideoEncoder`));let e=r[0].config,t=r.map(({config:e,quantizer:t})=>t===null?`${e.bitrate} bps`:`quantizer ${t}`);throw Error(`This specific encoder configuration (${e.codec}, ${t.join(` / `)}, ${e.width}x${e.height}, hardware acceleration: ${e.hardwareAcceleration??`no-preference`}) is not supported in this environment. Consider using another codec or changing your video parameters.`)}let o=i.config;i.quantizer===null?this.source._nominalBitrate=o.bitrate??null:this.defaultEncodeOptions=Xc(this.encodingConfig.codec,i.quantizer),a?(this.customEncoder=new a,this.customEncoder.codec=this.encodingConfig.codec,this.customEncoder.config=o,this.customEncoder.onPacket=(e,t)=>{if(!(e instanceof I))throw TypeError(`The first argument passed to onPacket must be an EncodedPacket.`);if(t!==void 0&&(!t||typeof t!=`object`))throw TypeError(`The second argument passed to onPacket must be an object or undefined.`);mp(this.source._connectedTrack,e),this.encodingConfig.onEncodedPacket?.(e,t),this.lastMuxerPromise=this.muxer.addEncodedVideoPacket(this.source._connectedTrack,e,t).catch(e=>{this.setError(e)})},this.customEncoder.onError=e=>{this.setError(e)},await this.customEncoder.init()):(this.encoderConfig=o,this.createWebCodecsEncoders()),n(this.source._connectedTrack),this.muxer=this.source._connectedTrack.output._muxer,this.encoderInitialized=!0})()}createWebCodecsEncoders(){let e=this.encoderConfig;n(e);let t=[],r=[],i=0,a=0,o=(e,t)=>{if(rt(e)){this.encodersReclaimed=!0;return}e.stack=t,this.setError(e)},s=Error(`Encoding error`).stack;if(this.encoder=new VideoEncoder({output:(e,o)=>{if(!this.alphaEncoder){this.addPacket(e,null,o);return}let s=this.alphaFrameQueue.shift();n(s!==void 0),s?(this.alphaEncoder.encode(s,{...this.defaultEncodeOptions,keyFrame:e.type===`key`}),a++,s.close(),t.push({chunk:e,meta:o})):a===0?this.addPacket(e,null,o):(r.push(i+a),t.push({chunk:e,meta:o}))},error:e=>o(e,s)}),this.encoder.configure(e),this.encodingConfig.alpha===`keep`){let s=Error(`Encoding error`).stack;this.alphaEncoder=new VideoEncoder({output:(e,o)=>{a--;let s=t.shift();for(n(s!==void 0),this.addPacket(s.chunk,e,s.meta),i++;r.length>0&&r[0]===i;){r.shift();let e=t.shift();n(e!==void 0),this.addPacket(e.chunk,null,e.meta)}},error:e=>o(e,s)}),this.alphaEncoder.configure(e)}}addPacket(e,t,n){let r={};if(t){let e=new Uint8Array(t.byteLength);t.copyTo(e),r.alpha=e}let i=I.fromEncodedChunk(e,r),a=E(this.preciseTimings,e.timestamp,e=>e.microsecondTimestamp),o=a===-1?null:this.preciseTimings[a],s=null;this.emittedEncoderPackets===0&&i.type===`delta`&&n?.decoderConfig&&(s=Yn(this.encodingConfig.codec,n.decoderConfig,i.data)),(o&&o.microsecondTimestamp===e.timestamp||s!==null)&&(i=i.clone({timestamp:o?.timestampIsValid?o.timestamp:void 0,duration:o?.durationIsValid?o.duration:void 0,type:s??void 0})),mp(this.source._connectedTrack,i),this.encodingConfig.onEncodedPacket?.(i,n),this.lastMuxerPromise=this.muxer.addEncodedVideoPacket(this.source._connectedTrack,i,n).catch(e=>{this.setError(e)}),this.emittedEncoderPackets++}recreateWebCodecsEncoders(){n(this.encoder),this.encoder.state!==`closed`&&this.encoder.close(),this.alphaEncoder&&this.alphaEncoder.state!==`closed`&&this.alphaEncoder.close(),this.alphaFrameQueue.forEach(e=>e?.close()),this.alphaFrameQueue.length=0,this.encodersReclaimed=!1,this.lastMultipleOfKeyFrameInterval=-1,this.createWebCodecsEncoders()}async flushAndClose(e){try{if(!e&&(this.checkForEncoderError(),this.frameRateLastSample)){let e=this.encodingConfig.transform.frameRate,t=ze(this.frameRateLastEndTimestamp,e);await this.padFrameRate(t)}this.closed=!0,e||(this.customEncoder?this.customEncoderCallSerializer.call(()=>this.customEncoder.flush()):this.encoder&&!this.encodersReclaimed&&(await this.encoder.flush(),await this.alphaEncoder?.flush(),await At(25)))}finally{this.closed=!0,this.frameRateLastSample?.close(),this.frameRateLastSample=null,this.customEncoder?await this.customEncoderCallSerializer.call(()=>this.customEncoder.close()).catch(e=>this.setError(e)):this.encoder&&(this.encoder.state!==`closed`&&this.encoder.close(),this.alphaEncoder&&this.alphaEncoder.state!==`closed`&&this.alphaEncoder.close(),this.alphaFrameQueue.forEach(e=>e?.close()),this.alphaFrameQueue.length=0,this.splitter?.close())}e||this.checkForEncoderError()}getQueueSize(){return this.customEncoder?this.customEncoderQueueSize:this.encoder?.encodeQueueSize??0}checkForEncoderError(){if(this.errorSet)throw this.error}};let _p=null;var vp=class{constructor(){this.worker=null,this.pendingRequests=new Map,this.nextRequestId=0}split(e){if(!this.worker){if(!_p){let e=new Blob([`(${yp.toString()})()`],{type:`application/javascript`});_p=URL.createObjectURL(e)}this.worker=new Worker(_p),this.worker.addEventListener(`message`,e=>{let t=e.data,n=this.pendingRequests.get(t.id);n&&(this.pendingRequests.delete(t.id),`error`in t?n.reject(Error(t.error)):n.resolve({colorFrame:t.colorFrame,alphaFrame:t.alphaFrame}))}),this.worker.addEventListener(`error`,e=>{let t=Error(e.message||`Color/alpha splitter worker error.`);for(let e of this.pendingRequests.values())e.reject(t);this.pendingRequests.clear()})}let t=this.nextRequestId++,n=D();return this.pendingRequests.set(t,n),this.worker.postMessage({id:t,sourceFrame:e},{transfer:[e]}),n.promise}close(){this.worker?.terminate(),this.worker=null;let e=Error(`Color/alpha splitter closed.`);for(let t of this.pendingRequests.values())t.reject(e);this.pendingRequests.clear()}};const yp=()=>{let e=null,t=Promise.resolve();self.addEventListener(`message`,e=>{let{id:r,sourceFrame:i}=e.data;t=t.then(async()=>{try{let{colorFrame:e,alphaFrame:t}=await n(i);self.postMessage({id:r,colorFrame:e,alphaFrame:t},{transfer:[e,t]})}catch(e){self.postMessage({id:r,error:e.message})}finally{i.close()}})});let n=async t=>{let n=t.format;if(!n)throw Error(`CPU color/alpha splitting requires a known VideoFrame format.`);let a=t.allocationSize();if((!e||e.byteLength!==a)&&(e=new Uint8Array(a)),await t.copyTo(e),n===`RGBA`||n===`BGRA`)return r(e,n,t);if(n===`I420A`||n===`I420AP10`||n===`I420AP12`||n===`I422A`||n===`I422AP10`||n===`I422AP12`||n===`I444A`||n===`I444AP10`||n===`I444AP12`)return i(e,n,t);throw Error(`CPU color/alpha splitting does not support format '${n}'.`)},r=(e,t,n)=>{let r=n.visibleRect?.width??n.codedWidth,i=n.visibleRect?.height??n.codedHeight,a=r*i,o=a+Math.ceil(r/2)*Math.ceil(i/2)*2,s=new Uint8Array(o);for(let t=0,n=3;t<a;t++,n+=4)s[t]=e[n];s.fill(128,a);let c=new VideoFrame(e,{format:t===`RGBA`?`RGBX`:`BGRX`,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0}),l={format:`I420`,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0,colorSpace:{fullRange:!0,matrix:`bt709`,primaries:`bt709`,transfer:`bt709`},transfer:[s.buffer]};return{colorFrame:c,alphaFrame:new VideoFrame(s,l)}},i=(e,t,n)=>{let r=n.visibleRect?.width??n.codedWidth,i=n.visibleRect?.height??n.codedHeight,a=t.includes(`P10`),o=t.includes(`P12`),s=a||o?2:1,c,l;t.startsWith(`I420`)?(c=Math.ceil(r/2),l=Math.ceil(i/2)):t.startsWith(`I422`)?(c=Math.ceil(r/2),l=i):(c=r,l=i);let u=r*i,d=c*l,f=u*s,p=d*s,m=u*s,h=f+p*2,g=t.replace(`A`,``),_=Math.ceil(r/2)*Math.ceil(i/2),v=m+_*s*2,y=new Uint8Array(v),b=h;y.set(e.subarray(b,b+m),0);let x=m,S=a?512:o?2048:128;s===1?y.fill(S,x):new Uint16Array(y.buffer,x,2*_).fill(S);let C=a?`I420P10`:o?`I420P12`:`I420`,ee=new VideoFrame(e.subarray(0,h),{format:g,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0}),te={format:C,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0,colorSpace:{fullRange:!0,matrix:`bt709`,primaries:`bt709`,transfer:`bt709`},transfer:[y.buffer]};return{colorFrame:ee,alphaFrame:new VideoFrame(y,te)}}};var bp=class extends pp{constructor(e){Bc(e),super(e.codec),this._encoder=new gp(this,e)}add(e,t){if(!(e instanceof uc))throw TypeError(`videoSample must be a VideoSample.`);return this._encoder.add(e,!1,t)}_flushAndClose(e){return this._encoder.flushAndClose(e)}},xp=class extends pp{constructor(e,t){if(!(typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement)&&!(typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas))throw TypeError(`canvas must be an HTMLCanvasElement or OffscreenCanvas.`);Bc(t),super(t.codec),this._encoder=new gp(this,t),this._canvas=e}add(e,t=0,n){if(!Number.isFinite(e))throw TypeError(`timestamp must be a finite number.`);if(!Number.isFinite(t)||t<0)throw TypeError(`duration must be a non-negative number.`);let r=new uc(this._canvas,{timestamp:e,duration:t});return this._encoder.add(r,!0,n)}_flushAndClose(e){return this._encoder.flushAndClose(e)}},Sp=class extends pp{get errorPromise(){return this._errorPromiseAccessed=!0,this._promiseWithResolvers.promise}get paused(){return this._paused}constructor(e,t,n={}){if(!(e instanceof MediaStreamTrack)||e.kind!==`video`)throw TypeError(`track must be a video MediaStreamTrack.`);if(Bc(t),typeof n!=`object`||!n)throw TypeError(`options must be an object.`);if(n.frameRate!=null&&(typeof n.frameRate!=`number`||n.frameRate<=0))throw TypeError(`options.frameRate, when provided, must be either a positive number or null.`);if(n.timestampBase!==void 0&&n.timestampBase!==`synced-zero`&&n.timestampBase!==`zero`&&n.timestampBase!==`unix`)throw TypeError(`options.timestampBase, when provided, must be one of 'synced-zero', 'zero', or 'unix'.`);t={...t,latencyMode:`realtime`},super(t.codec),this._abortController=null,this._workerTrackId=null,this._workerListener=null,this._promiseWithResolvers=D(),this._errorPromiseAccessed=!1,this._paused=!1,this._lastVideoFrame=null,this._timerHandle=null,this._videoElement=null,this._options=n,this._encoder=new gp(this,t),this._track=e}async _start(){this._errorPromiseAccessed||A._warn("Make sure not to ignore the `errorPromise` field on MediaStreamVideoTrackSource, so that any internal errors get bubbled up properly.");let e=this._options.frameRate===void 0?this._track.getSettings().frameRate??null:this._options.frameRate;this._abortController=new AbortController;let t=null,r=null,i=0,a=!1,o=null,s=0,c=()=>{if(n(e!==null),!this._lastVideoFrame)return;n(r!==null),n(t!==null);let a=performance.now();for(;a-r>1e3/e;){r+=1e3/e;let n=t+i/e,o=new VideoFrame(this._videoElement??this._lastVideoFrame,{timestamp:1e6*n,duration:1e6/e});u(o,a)}};e!==null&&(this._timerHandle=Ot(c,4));let l=t=>{if(e===null)u(t);else{let e=performance.now();this._lastVideoFrame?(c(),this._lastVideoFrame?.close(),this._lastVideoFrame=t):(u(t.clone(),e),r=e,this._lastVideoFrame=t)}},u=(e,n=performance.now())=>{if(a){e.close();return}i++;let r=e.timestamp/1e6;if(this._paused){if(t!==null){if(o!==null&&this._options.timestampBase!==`unix`){let e=r-o;s-=e}o=r}e.close();return}if(t===null){t=r;let e,i=this._options.timestampBase??`synced-zero`;if(i===`unix`)e=Date.now()/1e3;else if(i===`zero`)e=0;else{let t=this._connectedTrack.output;t._firstMediaStreamTimestamp===null?(t._firstMediaStreamTimestamp=n/1e3,e=0):e=n/1e3-t._firstMediaStreamTimestamp}s=e-t}if(o=r,this._encoder.getQueueSize()>=8){e.close();return}let c=new uc(e,{timestamp:r+s});this._encoder.add(c,!0).catch(e=>{a=!0,this._abortController?.abort(),this._promiseWithResolvers.reject(e),this._workerTrackId!==null&&Fp({type:`stopTrack`,trackId:this._workerTrackId})})};if(typeof MediaStreamTrackProcessor<`u`){let e=new MediaStreamTrackProcessor({track:this._track}),t=new WritableStream({write:l});e.readable.pipeTo(t,{signal:this._abortController.signal}).catch(e=>{e instanceof DOMException&&e.name===`AbortError`||this._promiseWithResolvers.reject(e)})}else if(await Pp())this._workerTrackId=Ap++,Fp({type:`videoTrack`,trackId:this._workerTrackId,track:this._track}),this._workerListener=e=>{let t=e.data;t.type===`videoFrame`&&t.trackId===this._workerTrackId?l(t.videoFrame):t.type===`error`&&t.trackId===this._workerTrackId&&this._promiseWithResolvers.reject(t.error)},jp.addEventListener(`message`,this._workerListener);else if(e!==null){let e=document.createElement(`video`);e.style.position=`fixed`,e.style.left=`-10000px`,e.style.top=`-10000px`,e.style.width=`1px`,e.style.height=`1px`,e.style.opacity=`0`,e.style.pointerEvents=`none`,e.muted=!0,e.srcObject=new MediaStream([this._track]),document.body.appendChild(e),this._videoElement=e,e.addEventListener(`loadeddata`,()=>{if(a||!this._videoElement)return;let t=new VideoFrame(e,{timestamp:1e3*performance.now()});l(t),t.close()},{once:!0}),e.play().catch(e=>{a=!0,this._promiseWithResolvers.reject(e)})}else throw Error(`When no explicit frame rate is set, MediaStreamTrackProcessor is required; but it's not available in this environment.`)}pause(){this._paused=!0}resume(){this._paused=!1}async _flushAndClose(e){try{this._abortController&&=(this._abortController.abort(),null),this._timerHandle&&kt(this._timerHandle),this._lastVideoFrame?.close(),this._videoElement&&=(this._videoElement.srcObject=null,this._videoElement.remove(),null),this._workerTrackId!==null&&(n(this._workerListener),Fp({type:`stopTrack`,trackId:this._workerTrackId}),await new Promise(e=>{let t=r=>{let i=r.data;i.type===`trackStopped`&&i.trackId===this._workerTrackId&&(n(this._workerListener),jp.removeEventListener(`message`,this._workerListener),jp.removeEventListener(`message`,t),e())};jp.addEventListener(`message`,t)}))}finally{await this._encoder.flushAndClose(e)}}},Cp=class extends fp{constructor(e){if(super(),!F.includes(e))throw TypeError(`Invalid audio codec '${e}'. Must be one of: ${F.join(`, `)}.`);this._codec=e}},wp=class extends Cp{constructor(e){super(e)}add(e,t){if(!(e instanceof I))throw TypeError(`packet must be an EncodedPacket.`);if(e.isMetadataOnly)throw TypeError(`Metadata-only packets cannot be added.`);if(t!==void 0&&(!t||typeof t!=`object`))throw TypeError(`meta, when provided, must be an object.`);return this._ensureValidAdd(),this._connectedTrack.output._muxer.addEncodedAudioPacket(this._connectedTrack,e,t)}},Tp=class{setError(e){this.errorSet||=(this.error=e,!0)}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 Ye,this.customEncoderQueueSize=0,this.lastEndSampleIndex=null,this.resampler=null,this.error=null,this.errorSet=!1,this.lastMuxerPromise=Promise.resolve(),this.closed=!1}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 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;let n=this.encodingConfig;n.transform?.numberOfChannels!==void 0||n.transform?.sampleRate!==void 0?(this.resampler||=new lp({targetNumberOfChannels:n.transform.numberOfChannels??e.numberOfChannels,targetSampleRate:n.transform.sampleRate??e.sampleRate,onSample:async e=>{await this.processAndEncode(e,!0)}}),await this.resampler.add(e)):await this.processAndEncode(e,t)}finally{t&&e.close()}}async processAndEncode(e,t){let n=this.encodingConfig;if(n.transform?.sampleFormat!==void 0&&Fc(e.format)!==n.transform.sampleFormat){let r=Lc(e,n.transform.sampleFormat);t&&e.close(),e=r,t=!0}if(n.transform?.process)try{let t=n.transform.process(e);if(k(t)&&(t=await t),t===null)return;Array.isArray(t)||(t=[t]);try{for(let e of t)if(!(e instanceof kc))throw TypeError(`The audio process function must return an AudioSample, null, or an array of AudioSamples.`);for(let e of t)await this.encodeSample(e,!0)}finally{for(let e of t)e instanceof kc&&e.close()}}finally{t&&e.close()}else await this.encodeSample(e,t)}async encodeSample(e,t){try{if(this.encoderInitialized||(this.ensureEncoderPromise||this.ensureEncoder(e),this.encoderInitialized||await this.ensureEncoderPromise),n(this.encoderInitialized),this.closed)return;{let t=Math.round(e.timestamp*e.sampleRate),n=Math.round((e.timestamp+e.duration)*e.sampleRate);if(this.lastEndSampleIndex===null)this.lastEndSampleIndex=n;else{let n=t-this.lastEndSampleIndex;if(n>=64){let t=new kc({data:new Float32Array(n*e.numberOfChannels),format:`f32-planar`,sampleRate:e.sampleRate,numberOfChannels:e.numberOfChannels,numberOfFrames:n,timestamp:this.lastEndSampleIndex/e.sampleRate});await this.encodeSample(t,!0)}this.lastEndSampleIndex+=e.numberOfFrames}}if(this.encodingConfig.onEncodedSample?.(e),this.customEncoder){this.customEncoderQueueSize++;let t=e.clone(),n=this.customEncoderCallSerializer.call(()=>this.customEncoder.encode(t)).catch(e=>this.setError(e)).finally(()=>{this.customEncoderQueueSize--,t.close()});this.customEncoderQueueSize>=4&&await n,await this.lastMuxerPromise}else if(this.isPcmEncoder)await this.doPcmEncoding(e,t);else{n(this.encoder);let r=e.toAudioData();this.encoder.encode(r),r.close(),t&&e.close(),this.encoder.encodeQueueSize>=4&&await new Promise(e=>this.encoder.addEventListener(`dequeue`,e,{once:!0})),await this.lastMuxerPromise}}finally{t&&e.close()}}async doPcmEncoding(e,t){n(this.outputSampleSize),n(this.writeOutputValue);let{numberOfChannels:r,numberOfFrames:i,sampleRate:a,timestamp:o}=e,s=2048,c=[];for(let t=0;t<i;t+=s){let n=Math.min(s,e.numberOfFrames-t),i=n*r*this.outputSampleSize,a=new ArrayBuffer(i),o=new DataView(a);c.push({frameCount:n,view:o})}let l=e.format===`s32`||e.format===`s32-planar`,u=l?`s32-planar`:`f32-planar`,d=l?1/2147483648:1,f=e.allocationSize({planeIndex:0,format:u}),p=l?new Int32Array(f/4):new Float32Array(f/4);for(let t=0;t<r;t++){e.copyTo(p,{planeIndex:t,format:u});for(let e=0;e<c.length;e++){let{frameCount:n,view:i}=c[e];for(let a=0;a<n;a++)this.writeOutputValue(i,(a*r+t)*this.outputSampleSize,p[e*s+a]*d)}}t&&e.close();let m={decoderConfig:{codec:this.encodingConfig.codec,numberOfChannels:r,sampleRate:a}};for(let e=0;e<c.length;e++){let{frameCount:t,view:n}=c[e],r=n.buffer,i=e*s,l=new I(new Uint8Array(r),`key`,o+i/a,t/a);this.encodingConfig.onEncodedPacket?.(l,m),await this.muxer.addEncodedAudioPacket(this.source._connectedTrack,l,m)}}ensureEncoder(e){this.ensureEncoderPromise=(async()=>{let{numberOfChannels:t,sampleRate:r}=e,i=al(this.encodingConfig.quality,this.encodingConfig.bitrate),a=Gc({numberOfChannels:t,sampleRate:r,...this.encodingConfig,quality:i});this.encodingConfig.onEncoderConfig?.(a),this.source._nominalBitrate=a.bitrate??null;let o=xl.find(e=>e.supports(this.encodingConfig.codec,a));if(o)this.customEncoder=new o,this.customEncoder.codec=this.encodingConfig.codec,this.customEncoder.config=a,this.customEncoder.onPacket=(e,t)=>{if(!(e instanceof I))throw TypeError(`The first argument passed to onPacket must be an EncodedPacket.`);if(t!==void 0&&(!t||typeof t!=`object`))throw TypeError(`The second argument passed to onPacket must be an object or undefined.`);this.encodingConfig.onEncodedPacket?.(e,t),this.lastMuxerPromise=this.muxer.addEncodedAudioPacket(this.source._connectedTrack,e,t).catch(e=>{this.setError(e)})},this.customEncoder.onError=e=>{this.setError(e)},await this.customEncoder.init();else if(P.includes(this.encodingConfig.codec))this.initPcmEncoder();else{if(typeof AudioEncoder>`u`)throw Error(nt(`AudioEncoder`));let e;try{e=(await AudioEncoder.isConfigSupported(a)).supported??!1}catch{e=!1}if(!e)throw Error(`This specific encoder configuration (${a.codec}, ${a.bitrate} bps, ${a.numberOfChannels} channels, ${a.sampleRate} Hz) is not supported in this environment. Consider using another codec or changing your audio parameters.`);let t=Error(`Encoding error`).stack;this.encoder=new AudioEncoder({output:(e,t)=>{if(this.encodingConfig.codec===`aac`&&t?.decoderConfig){let e=!1;if(e=!t.decoderConfig.description||t.decoderConfig.description.byteLength<2||Gt(S(t.decoderConfig.description)).objectType===0,e){let e=Number(h(a.codec.split(`.`)));t.decoderConfig.description=Jt({objectType:e,outputNumberOfChannels:t.decoderConfig.numberOfChannels,outputSampleRate:t.decoderConfig.sampleRate})}}let n=I.fromEncodedChunk(e);n=n.clone({timestamp:Le(n.timestamp,a.sampleRate),duration:e.duration==null?void 0:Le(n.duration,a.sampleRate)}),this.encodingConfig.onEncodedPacket?.(n,t),this.lastMuxerPromise=this.muxer.addEncodedAudioPacket(this.source._connectedTrack,n,t).catch(e=>{this.setError(e)})},error:e=>{e.stack=t,this.setError(e)}}),this.encoder.configure(a)}n(this.source._connectedTrack),this.muxer=this.source._connectedTrack.output._muxer,this.encoderInitialized=!0})()}initPcmEncoder(){this.isPcmEncoder=!0;let e=this.encodingConfig.codec,{dataType:t,sampleSize:r,littleEndian:i}=Ur(e);switch(this.outputSampleSize=r,r){case 1:t===`unsigned`?this.writeOutputValue=(e,t,n)=>e.setUint8(t,O(Math.round(n*128)+128,0,255)):t===`signed`?this.writeOutputValue=(e,t,n)=>{e.setInt8(t,O(Math.round(n*128),-128,127))}:t===`ulaw`?this.writeOutputValue=(e,t,n)=>{let r=O(Math.round(n*32768),-32768,32767);e.setUint8(t,wl(r))}:t===`alaw`?this.writeOutputValue=(e,t,n)=>{let r=O(Math.round(n*32768),-32768,32767);e.setUint8(t,El(r))}:n(!1);break;case 2:t===`unsigned`?this.writeOutputValue=(e,t,n)=>e.setUint16(t,O(Math.round(n*32768)+32768,0,65535),i):t===`signed`?this.writeOutputValue=(e,t,n)=>e.setInt16(t,O(Math.round(n*32768),-32768,32767),i):n(!1);break;case 3:t===`unsigned`?this.writeOutputValue=(e,t,n)=>ke(e,t,O(Math.round(n*8388608)+8388608,0,16777215),i):t===`signed`?this.writeOutputValue=(e,t,n)=>Ae(e,t,O(Math.round(n*8388608),-8388608,8388607),i):n(!1);break;case 4:t===`unsigned`?this.writeOutputValue=(e,t,n)=>e.setUint32(t,O(Math.round(n*2147483648)+2147483648,0,4294967295),i):t===`signed`?this.writeOutputValue=(e,t,n)=>e.setInt32(t,O(Math.round(n*2147483648),-2147483648,2147483647),i):t===`float`?this.writeOutputValue=(e,t,n)=>e.setFloat32(t,n,i):n(!1);break;case 8:t===`float`?this.writeOutputValue=(e,t,n)=>e.setFloat64(t,n,i):n(!1);break;default:Ee(r),n(!1)}}async flushAndClose(e){try{e||(this.checkForEncoderError(),this.resampler&&await this.resampler.finalize()),this.closed=!0,e||(this.customEncoder?this.customEncoderCallSerializer.call(()=>this.customEncoder.flush()):this.encoder&&await this.encoder.flush())}finally{this.closed=!0,this.resampler=null,this.customEncoder?await this.customEncoderCallSerializer.call(()=>this.customEncoder.close()).catch(e=>this.setError(e)):this.encoder&&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.errorSet)throw this.error}},Ep=class extends Cp{constructor(e){Uc(e),super(e.codec),this._encoder=new Tp(this,e)}add(e){if(!(e instanceof kc))throw TypeError(`audioSample must be an AudioSample.`);return this._encoder.add(e,!1)}_flushAndClose(e){return this._encoder.flushAndClose(e)}},Dp=class extends Cp{constructor(e,t={}){if(Uc(e),typeof t!=`object`||!t)throw TypeError(`options must be an object.`);if(t.startTimestamp!==void 0&&!Number.isFinite(t.startTimestamp))throw TypeError(`options.startTimestamp, when provided, must be a finite number.`);super(e.codec),this._encoder=new Tp(this,e),this._accumulatedTime=t.startTimestamp??0}async add(e){if(!(e instanceof AudioBuffer))throw TypeError(`audioBuffer must be an AudioBuffer.`);let t=kc._fromAudioBuffer(e,this._accumulatedTime);this._accumulatedTime+=e.duration;for(let e of t)await this._encoder.add(e,!0)}_flushAndClose(e){return this._encoder.flushAndClose(e)}},Op=class extends Cp{get errorPromise(){return this._errorPromiseAccessed=!0,this._promiseWithResolvers.promise}get paused(){return this._paused}constructor(e,t,n={}){if(!(e instanceof MediaStreamTrack)||e.kind!==`audio`)throw TypeError(`track must be an audio MediaStreamTrack.`);if(Uc(t),typeof n!=`object`||!n)throw TypeError(`options must be an object.`);if(n.timestampBase!==void 0&&n.timestampBase!==`synced-zero`&&n.timestampBase!==`zero`&&n.timestampBase!==`unix`)throw TypeError(`options.timestampBase, when provided, must be one of 'synced-zero', 'zero', or 'unix'.`);super(t.codec),this._abortController=null,this._audioContext=null,this._scriptProcessorNode=null,this._promiseWithResolvers=D(),this._errorPromiseAccessed=!1,this._paused=!1,this._options=n,this._encoder=new Tp(this,t),this._track=e}async _start(){this._errorPromiseAccessed||A._warn("Make sure not to ignore the `errorPromise` field on MediaStreamAudioTrackSource, so that any internal errors get bubbled up properly."),this._abortController=new AbortController;let e=null,t=!1,n=null,r=0,i=i=>{if(t){i.close();return}let a=i.timestamp;if(this._paused){if(e!==null){if(n!==null&&this._options.timestampBase!==`unix`){let e=a-n;r-=e}n=a}i.close();return}if(e===null){e=i.timestamp;let t,n=this._options.timestampBase??`synced-zero`;if(n===`unix`)t=Date.now()/1e3;else if(n===`zero`)t=0;else{let e=this._connectedTrack.output;e._firstMediaStreamTimestamp===null?(e._firstMediaStreamTimestamp=performance.now()/1e3,t=0):t=performance.now()/1e3-e._firstMediaStreamTimestamp}r=t-e}if(n=a,this._encoder.getQueueSize()>=8){i.close();return}i.setTimestamp(a+r),this._encoder.add(i,!0).catch(e=>{t=!0,this._abortController?.abort(),this._promiseWithResolvers.reject(e),this._audioContext?.suspend()})};if(typeof MediaStreamTrackProcessor<`u`){let e=new MediaStreamTrackProcessor({track:this._track}),t=new WritableStream({write:e=>i(new kc(e))});e.readable.pipeTo(t,{signal:this._abortController.signal}).catch(e=>{e instanceof DOMException&&e.name===`AbortError`||this._promiseWithResolvers.reject(e)})}else{let e=window.AudioContext||window.webkitAudioContext;this._audioContext=new e({sampleRate:this._track.getSettings().sampleRate});let t=this._audioContext.createMediaStreamSource(new MediaStream([this._track]));this._scriptProcessorNode=this._audioContext.createScriptProcessor(4096),this._audioContext.state===`suspended`&&await this._audioContext.resume(),t.connect(this._scriptProcessorNode),this._scriptProcessorNode.connect(this._audioContext.destination);let n=0;this._scriptProcessorNode.onaudioprocess=e=>{let t=kc._fromAudioBuffer(e.inputBuffer,n);n+=e.inputBuffer.duration;for(let e of t)i(e)}}}pause(){this._paused=!0}resume(){this._paused=!1}async _flushAndClose(e){try{this._abortController&&=(this._abortController.abort(),null),this._audioContext&&(n(this._scriptProcessorNode),this._scriptProcessorNode.disconnect(),await this._audioContext.suspend())}finally{await this._encoder.flushAndClose(e)}}};const kp=()=>{let e=(e,t)=>{t?self.postMessage(e,{transfer:t}):self.postMessage(e)};e({type:`support`,supported:typeof MediaStreamTrackProcessor<`u`});let t=new Map,n=new Map;self.addEventListener(`message`,r=>{let i=r.data;switch(i.type){case`videoTrack`:{n.set(i.trackId,i.track);let r=new MediaStreamTrackProcessor({track:i.track}),a=new WritableStream({write:t=>{if(!n.has(i.trackId)){t.close();return}e({type:`videoFrame`,trackId:i.trackId,videoFrame:t},[t])}}),o=new AbortController;t.set(i.trackId,o),r.readable.pipeTo(a,{signal:o.signal}).catch(t=>{t instanceof DOMException&&t.name===`AbortError`||e({type:`error`,trackId:i.trackId,error:t})})}break;case`stopTrack`:{let r=t.get(i.trackId);r&&(r.abort(),t.delete(i.trackId)),n.get(i.trackId)?.stop(),n.delete(i.trackId),e({type:`trackStopped`,trackId:i.trackId})}break;default:Ee(i)}})};let Ap=0,jp=null;const Mp=()=>{let e=new Blob([`(${kp.toString()})()`],{type:`application/javascript`}),t=URL.createObjectURL(e);jp=new Worker(t)};let Np=null;const Pp=async()=>Np===null?(jp||Mp(),new Promise(e=>{n(jp);let t=n=>{let r=n.data;r.type===`support`&&(Np=r.supported,jp.removeEventListener(`message`,t),e(r.supported))};jp.addEventListener(`message`,t)})):Np,Fp=(e,t)=>{n(jp),t?jp.postMessage(e,t):jp.postMessage(e)};var Ip=class extends fp{constructor(e){if(super(),!Tr.includes(e))throw TypeError(`Invalid subtitle codec '${e}'. Must be one of: ${Tr.join(`, `)}.`);this._codec=e}},Lp=class extends Ip{constructor(e){super(e),this._error=null,this._errorSet=!1,this._lastMuxerPromise=Promise.resolve(),this._parser=new Vu({codec:e,output:(e,t)=>{this._lastMuxerPromise=this._connectedTrack.output._muxer.addSubtitleCue(this._connectedTrack,e,t).catch(e=>{this._setError(e)})}})}add(e){if(typeof e!=`string`)throw TypeError(`text must be a string.`);return this._checkForError(),this._ensureValidAdd(),this._parser.parse(e),this._lastMuxerPromise}_setError(e){this._errorSet||=(this._error=e,!0)}_checkForError(){if(this._errorSet)throw this._error}async _flushAndClose(e){e||this._checkForError()}};
519
+ if(t!=null){if(typeof t!=`object`&&typeof t!=`function`)throw TypeError(`Object expected.`);var r,i;if(n){if(!Symbol.asyncDispose)throw TypeError(`Symbol.asyncDispose is not defined.`);r=t[Symbol.asyncDispose]}if(r===void 0){if(!Symbol.dispose)throw TypeError(`Symbol.dispose is not defined.`);r=t[Symbol.dispose],n&&(i=r)}if(typeof r!=`function`)throw TypeError(`Object not disposable.`);i&&(r=function(){try{i.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:t,dispose:r,async:n})}else n&&e.stack.push({async:!0});return t},dp=(function(e){return function(t){function n(n){t.error=t.hasError?new e(n,t.error,`An error was suppressed during disposal.`):n,t.hasError=!0}var r,i=0;function a(){for(;r=t.stack.pop();)try{if(!r.async&&i===1)return i=0,t.stack.push(r),Promise.resolve().then(a);if(r.dispose){var e=r.dispose.call(r.value);if(r.async)return i|=2,Promise.resolve(e).then(a,function(e){return n(e),a()})}else i|=1}catch(e){n(e)}if(i===1)return t.hasError?Promise.reject(t.error):Promise.resolve();if(t.hasError)throw t.error}return a()}})(typeof SuppressedError==`function`?SuppressedError:function(e,t,n){var r=Error(n);return r.name=`SuppressedError`,r.error=e,r.suppressed=t,r}),fp=class{constructor(){this._connectedTrack=null,this._closingPromise=null,this._closed=!1,this._nominalBitrate=null}_ensureValidAdd(){if(!this._connectedTrack)throw Error(`Source is not connected to an output track.`);if(this._connectedTrack.output.state===`canceled`)throw Error(`Output has been canceled.`);if(this._connectedTrack.output.state===`finalizing`||this._connectedTrack.output.state===`finalized`)throw Error(`Output has been finalized.`);if(this._connectedTrack.output.state===`pending`)throw Error(`Output has not started.`);if(this._closed)throw Error(`Source is closed.`)}async _start(){}async _flushAndClose(e){}close(){if(this._closingPromise)return;let e=this._connectedTrack;if(!e)throw Error(`Cannot call close without connecting the source to an output track.`);if(e.output.state===`pending`)throw 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})()}},pp=class extends fp{constructor(e){if(super(),!N.includes(e))throw TypeError(`Invalid video codec '${e}'. Must be one of: ${N.join(`, `)}.`);this._codec=e}};const mp=(e,t)=>{if(e.metadata.hasOnlyKeyPackets&&t.type!==`key`)throw Error(`Cannot add non-key packets to a hasOnlyKeyPackets video track.`)};var hp=class extends pp{constructor(e){super(e)}add(e,t){if(!(e instanceof I))throw TypeError(`packet must be an EncodedPacket.`);if(e.isMetadataOnly)throw TypeError(`Metadata-only packets cannot be added.`);if(t!==void 0&&(!t||typeof t!=`object`))throw TypeError(`meta, when provided, must be an object.`);return this._ensureValidAdd(),mp(this._connectedTrack,e),this._connectedTrack.output._muxer.addEncodedVideoPacket(this._connectedTrack,e,t)}},gp=class{setError(e){this.errorSet||=(this.error=e,!0)}constructor(e,t){this.source=e,this.encodingConfig=t,this.ensureEncoderPromise=null,this.encoderInitialized=!1,this.encoder=null,this.encoderConfig=null,this.encodersReclaimed=!1,this.muxer=null,this.lastMultipleOfKeyFrameInterval=-1,this.emittedEncoderPackets=0,this.codedWidth=null,this.codedHeight=null,this.outputWidth=null,this.outputHeight=null,this.frameRateLastSample=null,this.frameRateLastTimestamp=null,this.frameRateLastEndTimestamp=null,this.preciseTimings=[],this.customEncoder=null,this.customEncoderCallSerializer=new Ye,this.customEncoderQueueSize=0,this.defaultEncodeOptions={},this.alphaEncoder=null,this.splitter=null,this.splitterCreationFailed=!1,this.alphaFrameQueue=[],this.error=null,this.errorSet=!1,this.lastMuxerPromise=Promise.resolve(),this.closed=!1}async add(e,t,r){let i=e;try{this.checkForEncoderError(),this.source._ensureValidAdd();let a=this.encodingConfig,o=a.sizeChangeBehavior??`deny`,s=!1;if(this.codedWidth!==null&&this.codedHeight!==null){if((e.codedWidth!==this.codedWidth||e.codedHeight!==this.codedHeight)&&(s=!0,o===`deny`))throw 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 'deny' in the encoding options.`)}else this.codedWidth=e.codedWidth,this.codedHeight=e.codedHeight;if(a.transform?.width!==void 0||a.transform?.height!==void 0||a.transform?.rotate!==void 0||a.transform?.flip!==void 0||a.transform?.crop!==void 0||a.transform?.force===!0||s&&o!==`passThrough`){let r=a.transform?.width,i=a.transform?.height,c=a.transform?.fit??`fill`;s&&o!==`passThrough`&&(n(this.outputWidth),n(this.outputHeight),n(o!==`deny`),r=this.outputWidth,i=this.outputHeight,c=o);let l=await e.transform({width:r,height:i,roundDimensionsTo:2,crop:a.transform?.crop,rotate:a.transform?.rotate,flip:a.transform?.flip,fit:c,alpha:a.alpha});(this.outputWidth===null||this.outputHeight===null)&&(this.outputWidth=l.displayWidth,this.outputHeight=l.displayHeight),t&&e.close(),e=l,t=!0}else(this.outputWidth===null||this.outputHeight===null)&&(this.outputWidth=e.codedWidth,this.outputHeight=e.codedHeight);let c=a.transform?.frameRate;if(c!==void 0){let n=e.timestamp+e.duration,a=ze(e.timestamp,c);if(this.frameRateLastSample!==null){if(a<=this.frameRateLastTimestamp){this.frameRateLastSample.close(),this.frameRateLastSample=e.clone(),this.frameRateLastEndTimestamp=n;return}await this.padFrameRate(a,r)}e===i&&(e=e.clone(),t=!0),e.setTimestamp(a),e.setDuration(1/c),this.frameRateLastSample?.close(),this.frameRateLastSample=e.clone(),this.frameRateLastTimestamp=a,this.frameRateLastEndTimestamp=n}await this.processAndEncode(e,r)}finally{t&&e.close()}}async processAndEncode(e,t){let r=this.encodingConfig,i;if(r.transform?.process){let t=r.transform.process(e);if(k(t)&&(t=await t),t===null)return;Array.isArray(t)||(t=[t]);let n=[];try{for(let r of t)r instanceof uc?n.push(r):typeof VideoFrame<`u`&&r instanceof VideoFrame?n.push(new uc(r)):n.push(new uc(r,{timestamp:e.timestamp,duration:e.duration}))}catch(r){for(let t of n)t!==e&&t.close();for(let n of t)(n instanceof uc&&n!==e||typeof VideoFrame<`u`&&n instanceof VideoFrame)&&n.close();throw r}i=n}else i=[e];try{for(let e of i){if(this.encoderInitialized||(this.ensureEncoderPromise||this.ensureEncoder(e),this.encoderInitialized||await this.ensureEncoderPromise),n(this.encoderInitialized),this.closed)break;this.encodersReclaimed&&this.recreateWebCodecsEncoders();let r=this.encodingConfig.keyFrameInterval??2,i=Math.floor(e.timestamp/r),a={...this.defaultEncodeOptions,...e.encodeOptions,...t},o={...a,keyFrame:a.keyFrame===void 0?r===0||i!==this.lastMultipleOfKeyFrameInterval:a.keyFrame};if(this.lastMultipleOfKeyFrameInterval=i,this.encodingConfig.onEncodedSample?.(e),this.customEncoder){this.customEncoderQueueSize++;let t=e.clone(),n=this.customEncoderCallSerializer.call(()=>this.customEncoder.encode(t,o)).catch(e=>this.setError(e)).finally(()=>{this.customEncoderQueueSize--,t.close()});this.customEncoderQueueSize>=4&&await n}else{n(this.encoder);let t=e.toVideoFrame(),r=E(this.preciseTimings,t.timestamp,e=>e.microsecondTimestamp),i=r===-1?null:this.preciseTimings[r];if(i&&i.microsecondTimestamp===t.timestamp?(i.timestamp!==e.timestamp&&(i.timestampIsValid=!1),i.duration!==e.duration&&(i.durationIsValid=!1)):(this.preciseTimings.splice(r+1,0,{microsecondTimestamp:t.timestamp,timestamp:e.timestamp,duration:e.duration,timestampIsValid:!0,durationIsValid:!0}),this.preciseTimings.length>128&&this.preciseTimings.shift()),!this.alphaEncoder)try{this.encoder.encode(t,o)}finally{t.close()}else if(t.format&&!t.format.includes(`A`)||this.splitterCreationFailed){this.alphaFrameQueue.push(null);try{this.encoder.encode(t,o)}finally{t.close()}}else{this.splitter||=new vp;let{colorFrame:e,alphaFrame:n}=await this.splitter.split(t);this.alphaFrameQueue.push(n);try{this.encoder.encode(e,o)}finally{e.close()}}this.encoder.encodeQueueSize>=4&&await new Promise(e=>this.encoder.addEventListener(`dequeue`,e,{once:!0}))}await this.lastMuxerPromise}}finally{for(let t of i)t!==e&&t.close()}}async padFrameRate(e,t){let r=this.encodingConfig.transform.frameRate;n(this.frameRateLastSample);let i=Math.round((e-this.frameRateLastTimestamp)*r);for(let e=1;e<i;e++){let n={stack:[],error:void 0,hasError:!1};try{let i=up(n,this.frameRateLastSample.clone(),!1);i.setTimestamp(this.frameRateLastTimestamp+e/r),i.setDuration(1/r),await this.processAndEncode(i,t)}catch(e){n.error=e,n.hasError=!0}finally{dp(n)}}}ensureEncoder(e){this.ensureEncoderPromise=(async()=>{let t=al(this.encodingConfig.quality,this.encodingConfig.bitrate);n(t!==void 0);let r=Hc({...this.encodingConfig,quality:t,width:e.codedWidth,height:e.codedHeight,squarePixelWidth:e.squarePixelWidth,squarePixelHeight:e.squarePixelHeight,framerate:this.source._connectedTrack?.metadata.frameRate}),i=null,a;for(let e of r){let t=e.config;if(this.encodingConfig.onEncoderConfig?.(t),a=bl.find(e=>e.supports(this.encodingConfig.codec,t)),a){i=e;break}if(!(typeof VideoEncoder>`u`)){if(t.alpha=`discard`,this.encodingConfig.alpha===`keep`&&(t.latencyMode=`quality`),(t.width%2==1||t.height%2==1)&&(this.encodingConfig.codec===`avc`||this.encodingConfig.codec===`hevc`))throw Error(`The dimensions ${t.width}x${t.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.`);try{if((await VideoEncoder.isConfigSupported(t)).supported){i=e;break}}catch{}}}if(!i){if(typeof VideoEncoder>`u`)throw Error(nt(`VideoEncoder`));let e=r[0].config,t=r.map(({config:e,quantizer:t})=>t===null?`${e.bitrate} bps`:`quantizer ${t}`);throw Error(`This specific encoder configuration (${e.codec}, ${t.join(` / `)}, ${e.width}x${e.height}, hardware acceleration: ${e.hardwareAcceleration??`no-preference`}) is not supported in this environment. Consider using another codec or changing your video parameters.`)}let o=i.config;i.quantizer===null?this.source._nominalBitrate=o.bitrate??null:this.defaultEncodeOptions=Xc(this.encodingConfig.codec,i.quantizer),a?(this.customEncoder=new a,this.customEncoder.codec=this.encodingConfig.codec,this.customEncoder.config=o,this.customEncoder.onPacket=(e,t)=>{if(!(e instanceof I))throw TypeError(`The first argument passed to onPacket must be an EncodedPacket.`);if(t!==void 0&&(!t||typeof t!=`object`))throw TypeError(`The second argument passed to onPacket must be an object or undefined.`);mp(this.source._connectedTrack,e),this.encodingConfig.onEncodedPacket?.(e,t),this.lastMuxerPromise=this.muxer.addEncodedVideoPacket(this.source._connectedTrack,e,t).catch(e=>{this.setError(e)})},this.customEncoder.onError=e=>{this.setError(e)},await this.customEncoder.init()):(this.encoderConfig=o,this.createWebCodecsEncoders()),n(this.source._connectedTrack),this.muxer=this.source._connectedTrack.output._muxer,this.encoderInitialized=!0})()}createWebCodecsEncoders(){let e=this.encoderConfig;n(e);let t=[],r=[],i=0,a=0,o=(e,t)=>{if(rt(e)){this.encodersReclaimed=!0;return}e.stack=t,this.setError(e)},s=Error(`Encoding error`).stack;if(this.encoder=new VideoEncoder({output:(e,o)=>{if(!this.alphaEncoder){this.addPacket(e,null,o);return}let s=this.alphaFrameQueue.shift();n(s!==void 0),s?(this.alphaEncoder.encode(s,{...this.defaultEncodeOptions,keyFrame:e.type===`key`}),a++,s.close(),t.push({chunk:e,meta:o})):a===0?this.addPacket(e,null,o):(r.push(i+a),t.push({chunk:e,meta:o}))},error:e=>o(e,s)}),this.encoder.configure(e),this.encodingConfig.alpha===`keep`){let s=Error(`Encoding error`).stack;this.alphaEncoder=new VideoEncoder({output:(e,o)=>{a--;let s=t.shift();for(n(s!==void 0),this.addPacket(s.chunk,e,s.meta),i++;r.length>0&&r[0]===i;){r.shift();let e=t.shift();n(e!==void 0),this.addPacket(e.chunk,null,e.meta)}},error:e=>o(e,s)}),this.alphaEncoder.configure(e)}}addPacket(e,t,r){let i={};if(t){let e=new Uint8Array(t.byteLength);t.copyTo(e),i.alpha=e}let a=I.fromEncodedChunk(e,i),o=this.encoderConfig;n(o),r?.decoderConfig&&(r.decoderConfig.codec=Ir({width:o.width,height:o.height,codec:this.encodingConfig.codec,codecDescription:r.decoderConfig.description?S(r.decoderConfig.description):null,colorSpace:r.decoderConfig.colorSpace??null,avcType:o.codec.includes(`avc1.`)?1:o.codec.includes(`avc3.`)?3:null,avcCodecInfo:this.encodingConfig.codec===`avc`&&!r.decoderConfig.description?hn(a.data):null,hevcCodecInfo:this.encodingConfig.codec===`hevc`&&!r.decoderConfig.description?En(a.data):null,vp9CodecInfo:this.encodingConfig.codec===`vp9`?zn(a.data):null,av1CodecInfo:this.encodingConfig.codec===`av1`?Hn(a.data):null,proresFormat:null}));let s=E(this.preciseTimings,e.timestamp,e=>e.microsecondTimestamp),c=s===-1?null:this.preciseTimings[s],l=null;this.emittedEncoderPackets===0&&a.type===`delta`&&r?.decoderConfig&&(l=Yn(this.encodingConfig.codec,r.decoderConfig,a.data)),(c&&c.microsecondTimestamp===e.timestamp||l!==null)&&(a=a.clone({timestamp:c?.timestampIsValid?c.timestamp:void 0,duration:c?.durationIsValid?c.duration:void 0,type:l??void 0})),mp(this.source._connectedTrack,a),this.encodingConfig.onEncodedPacket?.(a,r),this.lastMuxerPromise=this.muxer.addEncodedVideoPacket(this.source._connectedTrack,a,r).catch(e=>{this.setError(e)}),this.emittedEncoderPackets++}recreateWebCodecsEncoders(){n(this.encoder),this.encoder.state!==`closed`&&this.encoder.close(),this.alphaEncoder&&this.alphaEncoder.state!==`closed`&&this.alphaEncoder.close(),this.alphaFrameQueue.forEach(e=>e?.close()),this.alphaFrameQueue.length=0,this.encodersReclaimed=!1,this.lastMultipleOfKeyFrameInterval=-1,this.createWebCodecsEncoders()}async flushAndClose(e){try{if(!e&&(this.checkForEncoderError(),this.frameRateLastSample)){let e=this.encodingConfig.transform.frameRate,t=ze(this.frameRateLastEndTimestamp,e);await this.padFrameRate(t)}this.closed=!0,e||(this.customEncoder?this.customEncoderCallSerializer.call(()=>this.customEncoder.flush()):this.encoder&&!this.encodersReclaimed&&(await this.encoder.flush(),await this.alphaEncoder?.flush(),await At(25)))}finally{this.closed=!0,this.frameRateLastSample?.close(),this.frameRateLastSample=null,this.customEncoder?await this.customEncoderCallSerializer.call(()=>this.customEncoder.close()).catch(e=>this.setError(e)):this.encoder&&(this.encoder.state!==`closed`&&this.encoder.close(),this.alphaEncoder&&this.alphaEncoder.state!==`closed`&&this.alphaEncoder.close(),this.alphaFrameQueue.forEach(e=>e?.close()),this.alphaFrameQueue.length=0,this.splitter?.close())}e||this.checkForEncoderError()}getQueueSize(){return this.customEncoder?this.customEncoderQueueSize:this.encoder?.encodeQueueSize??0}checkForEncoderError(){if(this.errorSet)throw this.error}};let _p=null;var vp=class{constructor(){this.worker=null,this.pendingRequests=new Map,this.nextRequestId=0}split(e){if(!this.worker){if(!_p){let e=new Blob([`(${yp.toString()})()`],{type:`application/javascript`});_p=URL.createObjectURL(e)}this.worker=new Worker(_p),this.worker.addEventListener(`message`,e=>{let t=e.data,n=this.pendingRequests.get(t.id);n&&(this.pendingRequests.delete(t.id),`error`in t?n.reject(Error(t.error)):n.resolve({colorFrame:t.colorFrame,alphaFrame:t.alphaFrame}))}),this.worker.addEventListener(`error`,e=>{let t=Error(e.message||`Color/alpha splitter worker error.`);for(let e of this.pendingRequests.values())e.reject(t);this.pendingRequests.clear()})}let t=this.nextRequestId++,n=D();return this.pendingRequests.set(t,n),this.worker.postMessage({id:t,sourceFrame:e},{transfer:[e]}),n.promise}close(){this.worker?.terminate(),this.worker=null;let e=Error(`Color/alpha splitter closed.`);for(let t of this.pendingRequests.values())t.reject(e);this.pendingRequests.clear()}};const yp=()=>{let e=null,t=Promise.resolve();self.addEventListener(`message`,e=>{let{id:r,sourceFrame:i}=e.data;t=t.then(async()=>{try{let{colorFrame:e,alphaFrame:t}=await n(i);self.postMessage({id:r,colorFrame:e,alphaFrame:t},{transfer:[e,t]})}catch(e){self.postMessage({id:r,error:e.message})}finally{i.close()}})});let n=async t=>{let n=t.format;if(!n)throw Error(`CPU color/alpha splitting requires a known VideoFrame format.`);let a=t.allocationSize();if((!e||e.byteLength!==a)&&(e=new Uint8Array(a)),await t.copyTo(e),n===`RGBA`||n===`BGRA`)return r(e,n,t);if(n===`I420A`||n===`I420AP10`||n===`I420AP12`||n===`I422A`||n===`I422AP10`||n===`I422AP12`||n===`I444A`||n===`I444AP10`||n===`I444AP12`)return i(e,n,t);throw Error(`CPU color/alpha splitting does not support format '${n}'.`)},r=(e,t,n)=>{let r=n.visibleRect?.width??n.codedWidth,i=n.visibleRect?.height??n.codedHeight,a=r*i,o=a+Math.ceil(r/2)*Math.ceil(i/2)*2,s=new Uint8Array(o);for(let t=0,n=3;t<a;t++,n+=4)s[t]=e[n];s.fill(128,a);let c=new VideoFrame(e,{format:t===`RGBA`?`RGBX`:`BGRX`,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0}),l={format:`I420`,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0,colorSpace:{fullRange:!0,matrix:`bt709`,primaries:`bt709`,transfer:`bt709`},transfer:[s.buffer]};return{colorFrame:c,alphaFrame:new VideoFrame(s,l)}},i=(e,t,n)=>{let r=n.visibleRect?.width??n.codedWidth,i=n.visibleRect?.height??n.codedHeight,a=t.includes(`P10`),o=t.includes(`P12`),s=a||o?2:1,c,l;t.startsWith(`I420`)?(c=Math.ceil(r/2),l=Math.ceil(i/2)):t.startsWith(`I422`)?(c=Math.ceil(r/2),l=i):(c=r,l=i);let u=r*i,d=c*l,f=u*s,p=d*s,m=u*s,h=f+p*2,g=t.replace(`A`,``),_=Math.ceil(r/2)*Math.ceil(i/2),v=m+_*s*2,y=new Uint8Array(v),b=h;y.set(e.subarray(b,b+m),0);let x=m,S=a?512:o?2048:128;s===1?y.fill(S,x):new Uint16Array(y.buffer,x,2*_).fill(S);let C=a?`I420P10`:o?`I420P12`:`I420`,ee=new VideoFrame(e.subarray(0,h),{format:g,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0}),te={format:C,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0,colorSpace:{fullRange:!0,matrix:`bt709`,primaries:`bt709`,transfer:`bt709`},transfer:[y.buffer]};return{colorFrame:ee,alphaFrame:new VideoFrame(y,te)}}};var bp=class extends pp{constructor(e){Bc(e),super(e.codec),this._encoder=new gp(this,e)}add(e,t){if(!(e instanceof uc))throw TypeError(`videoSample must be a VideoSample.`);return this._encoder.add(e,!1,t)}_flushAndClose(e){return this._encoder.flushAndClose(e)}},xp=class extends pp{constructor(e,t){if(!(typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement)&&!(typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas))throw TypeError(`canvas must be an HTMLCanvasElement or OffscreenCanvas.`);Bc(t),super(t.codec),this._encoder=new gp(this,t),this._canvas=e}add(e,t=0,n){if(!Number.isFinite(e))throw TypeError(`timestamp must be a finite number.`);if(!Number.isFinite(t)||t<0)throw TypeError(`duration must be a non-negative number.`);let r=new uc(this._canvas,{timestamp:e,duration:t});return this._encoder.add(r,!0,n)}_flushAndClose(e){return this._encoder.flushAndClose(e)}},Sp=class extends pp{get errorPromise(){return this._errorPromiseAccessed=!0,this._promiseWithResolvers.promise}get paused(){return this._paused}constructor(e,t,n={}){if(!(e instanceof MediaStreamTrack)||e.kind!==`video`)throw TypeError(`track must be a video MediaStreamTrack.`);if(Bc(t),typeof n!=`object`||!n)throw TypeError(`options must be an object.`);if(n.frameRate!=null&&(typeof n.frameRate!=`number`||n.frameRate<=0))throw TypeError(`options.frameRate, when provided, must be either a positive number or null.`);if(n.timestampBase!==void 0&&n.timestampBase!==`synced-zero`&&n.timestampBase!==`zero`&&n.timestampBase!==`unix`)throw TypeError(`options.timestampBase, when provided, must be one of 'synced-zero', 'zero', or 'unix'.`);t={...t,latencyMode:`realtime`},super(t.codec),this._abortController=null,this._workerTrackId=null,this._workerListener=null,this._promiseWithResolvers=D(),this._errorPromiseAccessed=!1,this._paused=!1,this._lastVideoFrame=null,this._timerHandle=null,this._videoElement=null,this._options=n,this._encoder=new gp(this,t),this._track=e}async _start(){this._errorPromiseAccessed||A._warn("Make sure not to ignore the `errorPromise` field on MediaStreamVideoTrackSource, so that any internal errors get bubbled up properly.");let e=this._options.frameRate===void 0?this._track.getSettings().frameRate??null:this._options.frameRate;this._abortController=new AbortController;let t=null,r=null,i=0,a=!1,o=null,s=0,c=()=>{if(n(e!==null),!this._lastVideoFrame)return;n(r!==null),n(t!==null);let a=performance.now();for(;a-r>1e3/e;){r+=1e3/e;let n=t+i/e,o=new VideoFrame(this._videoElement??this._lastVideoFrame,{timestamp:1e6*n,duration:1e6/e});u(o,a)}};e!==null&&(this._timerHandle=Ot(c,4));let l=t=>{if(e===null)u(t);else{let e=performance.now();this._lastVideoFrame?(c(),this._lastVideoFrame?.close(),this._lastVideoFrame=t):(u(t.clone(),e),r=e,this._lastVideoFrame=t)}},u=(e,n=performance.now())=>{if(a){e.close();return}i++;let r=e.timestamp/1e6;if(this._paused){if(t!==null){if(o!==null&&this._options.timestampBase!==`unix`){let e=r-o;s-=e}o=r}e.close();return}if(t===null){t=r;let e,i=this._options.timestampBase??`synced-zero`;if(i===`unix`)e=Date.now()/1e3;else if(i===`zero`)e=0;else{let t=this._connectedTrack.output;t._firstMediaStreamTimestamp===null?(t._firstMediaStreamTimestamp=n/1e3,e=0):e=n/1e3-t._firstMediaStreamTimestamp}s=e-t}if(o=r,this._encoder.getQueueSize()>=8){e.close();return}let c=new uc(e,{timestamp:r+s});this._encoder.add(c,!0).catch(e=>{a=!0,this._abortController?.abort(),this._promiseWithResolvers.reject(e),this._workerTrackId!==null&&Fp({type:`stopTrack`,trackId:this._workerTrackId})})};if(typeof MediaStreamTrackProcessor<`u`){let e=new MediaStreamTrackProcessor({track:this._track}),t=new WritableStream({write:l});e.readable.pipeTo(t,{signal:this._abortController.signal}).catch(e=>{e instanceof DOMException&&e.name===`AbortError`||this._promiseWithResolvers.reject(e)})}else if(await Pp())this._workerTrackId=Ap++,Fp({type:`videoTrack`,trackId:this._workerTrackId,track:this._track}),this._workerListener=e=>{let t=e.data;t.type===`videoFrame`&&t.trackId===this._workerTrackId?l(t.videoFrame):t.type===`error`&&t.trackId===this._workerTrackId&&this._promiseWithResolvers.reject(t.error)},jp.addEventListener(`message`,this._workerListener);else if(e!==null){let e=document.createElement(`video`);e.style.position=`fixed`,e.style.left=`-10000px`,e.style.top=`-10000px`,e.style.width=`1px`,e.style.height=`1px`,e.style.opacity=`0`,e.style.pointerEvents=`none`,e.muted=!0,e.srcObject=new MediaStream([this._track]),document.body.appendChild(e),this._videoElement=e,e.addEventListener(`loadeddata`,()=>{if(a||!this._videoElement)return;let t=new VideoFrame(e,{timestamp:1e3*performance.now()});l(t),t.close()},{once:!0}),e.play().catch(e=>{a=!0,this._promiseWithResolvers.reject(e)})}else throw Error(`When no explicit frame rate is set, MediaStreamTrackProcessor is required; but it's not available in this environment.`)}pause(){this._paused=!0}resume(){this._paused=!1}async _flushAndClose(e){try{this._abortController&&=(this._abortController.abort(),null),this._timerHandle&&kt(this._timerHandle),this._lastVideoFrame?.close(),this._videoElement&&=(this._videoElement.srcObject=null,this._videoElement.remove(),null),this._workerTrackId!==null&&(n(this._workerListener),Fp({type:`stopTrack`,trackId:this._workerTrackId}),await new Promise(e=>{let t=r=>{let i=r.data;i.type===`trackStopped`&&i.trackId===this._workerTrackId&&(n(this._workerListener),jp.removeEventListener(`message`,this._workerListener),jp.removeEventListener(`message`,t),e())};jp.addEventListener(`message`,t)}))}finally{await this._encoder.flushAndClose(e)}}},Cp=class extends fp{constructor(e){if(super(),!F.includes(e))throw TypeError(`Invalid audio codec '${e}'. Must be one of: ${F.join(`, `)}.`);this._codec=e}},wp=class extends Cp{constructor(e){super(e)}add(e,t){if(!(e instanceof I))throw TypeError(`packet must be an EncodedPacket.`);if(e.isMetadataOnly)throw TypeError(`Metadata-only packets cannot be added.`);if(t!==void 0&&(!t||typeof t!=`object`))throw TypeError(`meta, when provided, must be an object.`);return this._ensureValidAdd(),this._connectedTrack.output._muxer.addEncodedAudioPacket(this._connectedTrack,e,t)}},Tp=class{setError(e){this.errorSet||=(this.error=e,!0)}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 Ye,this.customEncoderQueueSize=0,this.lastEndSampleIndex=null,this.resampler=null,this.error=null,this.errorSet=!1,this.lastMuxerPromise=Promise.resolve(),this.closed=!1}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 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;let n=this.encodingConfig;n.transform?.numberOfChannels!==void 0||n.transform?.sampleRate!==void 0?(this.resampler||=new lp({targetNumberOfChannels:n.transform.numberOfChannels??e.numberOfChannels,targetSampleRate:n.transform.sampleRate??e.sampleRate,onSample:async e=>{await this.processAndEncode(e,!0)}}),await this.resampler.add(e)):await this.processAndEncode(e,t)}finally{t&&e.close()}}async processAndEncode(e,t){let n=this.encodingConfig;if(n.transform?.sampleFormat!==void 0&&Fc(e.format)!==n.transform.sampleFormat){let r=Lc(e,n.transform.sampleFormat);t&&e.close(),e=r,t=!0}if(n.transform?.process)try{let t=n.transform.process(e);if(k(t)&&(t=await t),t===null)return;Array.isArray(t)||(t=[t]);try{for(let e of t)if(!(e instanceof kc))throw TypeError(`The audio process function must return an AudioSample, null, or an array of AudioSamples.`);for(let e of t)await this.encodeSample(e,!0)}finally{for(let e of t)e instanceof kc&&e.close()}}finally{t&&e.close()}else await this.encodeSample(e,t)}async encodeSample(e,t){try{if(this.encoderInitialized||(this.ensureEncoderPromise||this.ensureEncoder(e),this.encoderInitialized||await this.ensureEncoderPromise),n(this.encoderInitialized),this.closed)return;{let t=Math.round(e.timestamp*e.sampleRate),n=Math.round((e.timestamp+e.duration)*e.sampleRate);if(this.lastEndSampleIndex===null)this.lastEndSampleIndex=n;else{let n=t-this.lastEndSampleIndex;if(n>=64){let t=new kc({data:new Float32Array(n*e.numberOfChannels),format:`f32-planar`,sampleRate:e.sampleRate,numberOfChannels:e.numberOfChannels,numberOfFrames:n,timestamp:this.lastEndSampleIndex/e.sampleRate});await this.encodeSample(t,!0)}this.lastEndSampleIndex+=e.numberOfFrames}}if(this.encodingConfig.onEncodedSample?.(e),this.customEncoder){this.customEncoderQueueSize++;let t=e.clone(),n=this.customEncoderCallSerializer.call(()=>this.customEncoder.encode(t)).catch(e=>this.setError(e)).finally(()=>{this.customEncoderQueueSize--,t.close()});this.customEncoderQueueSize>=4&&await n,await this.lastMuxerPromise}else if(this.isPcmEncoder)await this.doPcmEncoding(e,t);else{n(this.encoder);let r=e.toAudioData();this.encoder.encode(r),r.close(),t&&e.close(),this.encoder.encodeQueueSize>=4&&await new Promise(e=>this.encoder.addEventListener(`dequeue`,e,{once:!0})),await this.lastMuxerPromise}}finally{t&&e.close()}}async doPcmEncoding(e,t){n(this.outputSampleSize),n(this.writeOutputValue);let{numberOfChannels:r,numberOfFrames:i,sampleRate:a,timestamp:o}=e,s=2048,c=[];for(let t=0;t<i;t+=s){let n=Math.min(s,e.numberOfFrames-t),i=n*r*this.outputSampleSize,a=new ArrayBuffer(i),o=new DataView(a);c.push({frameCount:n,view:o})}let l=e.format===`s32`||e.format===`s32-planar`,u=l?`s32-planar`:`f32-planar`,d=l?1/2147483648:1,f=e.allocationSize({planeIndex:0,format:u}),p=l?new Int32Array(f/4):new Float32Array(f/4);for(let t=0;t<r;t++){e.copyTo(p,{planeIndex:t,format:u});for(let e=0;e<c.length;e++){let{frameCount:n,view:i}=c[e];for(let a=0;a<n;a++)this.writeOutputValue(i,(a*r+t)*this.outputSampleSize,p[e*s+a]*d)}}t&&e.close();let m={decoderConfig:{codec:this.encodingConfig.codec,numberOfChannels:r,sampleRate:a}};for(let e=0;e<c.length;e++){let{frameCount:t,view:n}=c[e],r=n.buffer,i=e*s,l=new I(new Uint8Array(r),`key`,o+i/a,t/a);this.encodingConfig.onEncodedPacket?.(l,m),await this.muxer.addEncodedAudioPacket(this.source._connectedTrack,l,m)}}ensureEncoder(e){this.ensureEncoderPromise=(async()=>{let{numberOfChannels:t,sampleRate:r}=e,i=al(this.encodingConfig.quality,this.encodingConfig.bitrate),a=Gc({numberOfChannels:t,sampleRate:r,...this.encodingConfig,quality:i});this.encodingConfig.onEncoderConfig?.(a),this.source._nominalBitrate=a.bitrate??null;let o=xl.find(e=>e.supports(this.encodingConfig.codec,a));if(o)this.customEncoder=new o,this.customEncoder.codec=this.encodingConfig.codec,this.customEncoder.config=a,this.customEncoder.onPacket=(e,t)=>{if(!(e instanceof I))throw TypeError(`The first argument passed to onPacket must be an EncodedPacket.`);if(t!==void 0&&(!t||typeof t!=`object`))throw TypeError(`The second argument passed to onPacket must be an object or undefined.`);this.encodingConfig.onEncodedPacket?.(e,t),this.lastMuxerPromise=this.muxer.addEncodedAudioPacket(this.source._connectedTrack,e,t).catch(e=>{this.setError(e)})},this.customEncoder.onError=e=>{this.setError(e)},await this.customEncoder.init();else if(P.includes(this.encodingConfig.codec))this.initPcmEncoder();else{if(typeof AudioEncoder>`u`)throw Error(nt(`AudioEncoder`));let e;try{e=(await AudioEncoder.isConfigSupported(a)).supported??!1}catch{e=!1}if(!e)throw Error(`This specific encoder configuration (${a.codec}, ${a.bitrate} bps, ${a.numberOfChannels} channels, ${a.sampleRate} Hz) is not supported in this environment. Consider using another codec or changing your audio parameters.`);let t=Error(`Encoding error`).stack;this.encoder=new AudioEncoder({output:(e,t)=>{if(this.encodingConfig.codec===`aac`&&t?.decoderConfig){let e=!1;if(e=!t.decoderConfig.description||t.decoderConfig.description.byteLength<2||Gt(S(t.decoderConfig.description)).objectType===0,e){let e=Number(h(a.codec.split(`.`)));t.decoderConfig.description=Jt({objectType:e,outputNumberOfChannels:t.decoderConfig.numberOfChannels,outputSampleRate:t.decoderConfig.sampleRate})}}let n=I.fromEncodedChunk(e);n=n.clone({timestamp:Le(n.timestamp,a.sampleRate),duration:e.duration==null?void 0:Le(n.duration,a.sampleRate)}),this.encodingConfig.onEncodedPacket?.(n,t),this.lastMuxerPromise=this.muxer.addEncodedAudioPacket(this.source._connectedTrack,n,t).catch(e=>{this.setError(e)})},error:e=>{e.stack=t,this.setError(e)}}),this.encoder.configure(a)}n(this.source._connectedTrack),this.muxer=this.source._connectedTrack.output._muxer,this.encoderInitialized=!0})()}initPcmEncoder(){this.isPcmEncoder=!0;let e=this.encodingConfig.codec,{dataType:t,sampleSize:r,littleEndian:i}=Ur(e);switch(this.outputSampleSize=r,r){case 1:t===`unsigned`?this.writeOutputValue=(e,t,n)=>e.setUint8(t,O(Math.round(n*128)+128,0,255)):t===`signed`?this.writeOutputValue=(e,t,n)=>{e.setInt8(t,O(Math.round(n*128),-128,127))}:t===`ulaw`?this.writeOutputValue=(e,t,n)=>{let r=O(Math.round(n*32768),-32768,32767);e.setUint8(t,wl(r))}:t===`alaw`?this.writeOutputValue=(e,t,n)=>{let r=O(Math.round(n*32768),-32768,32767);e.setUint8(t,El(r))}:n(!1);break;case 2:t===`unsigned`?this.writeOutputValue=(e,t,n)=>e.setUint16(t,O(Math.round(n*32768)+32768,0,65535),i):t===`signed`?this.writeOutputValue=(e,t,n)=>e.setInt16(t,O(Math.round(n*32768),-32768,32767),i):n(!1);break;case 3:t===`unsigned`?this.writeOutputValue=(e,t,n)=>ke(e,t,O(Math.round(n*8388608)+8388608,0,16777215),i):t===`signed`?this.writeOutputValue=(e,t,n)=>Ae(e,t,O(Math.round(n*8388608),-8388608,8388607),i):n(!1);break;case 4:t===`unsigned`?this.writeOutputValue=(e,t,n)=>e.setUint32(t,O(Math.round(n*2147483648)+2147483648,0,4294967295),i):t===`signed`?this.writeOutputValue=(e,t,n)=>e.setInt32(t,O(Math.round(n*2147483648),-2147483648,2147483647),i):t===`float`?this.writeOutputValue=(e,t,n)=>e.setFloat32(t,n,i):n(!1);break;case 8:t===`float`?this.writeOutputValue=(e,t,n)=>e.setFloat64(t,n,i):n(!1);break;default:Ee(r),n(!1)}}async flushAndClose(e){try{e||(this.checkForEncoderError(),this.resampler&&await this.resampler.finalize()),this.closed=!0,e||(this.customEncoder?this.customEncoderCallSerializer.call(()=>this.customEncoder.flush()):this.encoder&&await this.encoder.flush())}finally{this.closed=!0,this.resampler=null,this.customEncoder?await this.customEncoderCallSerializer.call(()=>this.customEncoder.close()).catch(e=>this.setError(e)):this.encoder&&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.errorSet)throw this.error}},Ep=class extends Cp{constructor(e){Uc(e),super(e.codec),this._encoder=new Tp(this,e)}add(e){if(!(e instanceof kc))throw TypeError(`audioSample must be an AudioSample.`);return this._encoder.add(e,!1)}_flushAndClose(e){return this._encoder.flushAndClose(e)}},Dp=class extends Cp{constructor(e,t={}){if(Uc(e),typeof t!=`object`||!t)throw TypeError(`options must be an object.`);if(t.startTimestamp!==void 0&&!Number.isFinite(t.startTimestamp))throw TypeError(`options.startTimestamp, when provided, must be a finite number.`);super(e.codec),this._encoder=new Tp(this,e),this._accumulatedTime=t.startTimestamp??0}async add(e){if(!(e instanceof AudioBuffer))throw TypeError(`audioBuffer must be an AudioBuffer.`);let t=kc._fromAudioBuffer(e,this._accumulatedTime);this._accumulatedTime+=e.duration;for(let e of t)await this._encoder.add(e,!0)}_flushAndClose(e){return this._encoder.flushAndClose(e)}},Op=class extends Cp{get errorPromise(){return this._errorPromiseAccessed=!0,this._promiseWithResolvers.promise}get paused(){return this._paused}constructor(e,t,n={}){if(!(e instanceof MediaStreamTrack)||e.kind!==`audio`)throw TypeError(`track must be an audio MediaStreamTrack.`);if(Uc(t),typeof n!=`object`||!n)throw TypeError(`options must be an object.`);if(n.timestampBase!==void 0&&n.timestampBase!==`synced-zero`&&n.timestampBase!==`zero`&&n.timestampBase!==`unix`)throw TypeError(`options.timestampBase, when provided, must be one of 'synced-zero', 'zero', or 'unix'.`);super(t.codec),this._abortController=null,this._audioContext=null,this._scriptProcessorNode=null,this._promiseWithResolvers=D(),this._errorPromiseAccessed=!1,this._paused=!1,this._options=n,this._encoder=new Tp(this,t),this._track=e}async _start(){this._errorPromiseAccessed||A._warn("Make sure not to ignore the `errorPromise` field on MediaStreamAudioTrackSource, so that any internal errors get bubbled up properly."),this._abortController=new AbortController;let e=null,t=!1,n=null,r=0,i=i=>{if(t){i.close();return}let a=i.timestamp;if(this._paused){if(e!==null){if(n!==null&&this._options.timestampBase!==`unix`){let e=a-n;r-=e}n=a}i.close();return}if(e===null){e=i.timestamp;let t,n=this._options.timestampBase??`synced-zero`;if(n===`unix`)t=Date.now()/1e3;else if(n===`zero`)t=0;else{let e=this._connectedTrack.output;e._firstMediaStreamTimestamp===null?(e._firstMediaStreamTimestamp=performance.now()/1e3,t=0):t=performance.now()/1e3-e._firstMediaStreamTimestamp}r=t-e}if(n=a,this._encoder.getQueueSize()>=8){i.close();return}i.setTimestamp(a+r),this._encoder.add(i,!0).catch(e=>{t=!0,this._abortController?.abort(),this._promiseWithResolvers.reject(e),this._audioContext?.suspend()})};if(typeof MediaStreamTrackProcessor<`u`){let e=new MediaStreamTrackProcessor({track:this._track}),t=new WritableStream({write:e=>i(new kc(e))});e.readable.pipeTo(t,{signal:this._abortController.signal}).catch(e=>{e instanceof DOMException&&e.name===`AbortError`||this._promiseWithResolvers.reject(e)})}else{let e=window.AudioContext||window.webkitAudioContext;this._audioContext=new e({sampleRate:this._track.getSettings().sampleRate});let t=this._audioContext.createMediaStreamSource(new MediaStream([this._track]));this._scriptProcessorNode=this._audioContext.createScriptProcessor(4096),this._audioContext.state===`suspended`&&await this._audioContext.resume(),t.connect(this._scriptProcessorNode),this._scriptProcessorNode.connect(this._audioContext.destination);let n=0;this._scriptProcessorNode.onaudioprocess=e=>{let t=kc._fromAudioBuffer(e.inputBuffer,n);n+=e.inputBuffer.duration;for(let e of t)i(e)}}}pause(){this._paused=!0}resume(){this._paused=!1}async _flushAndClose(e){try{this._abortController&&=(this._abortController.abort(),null),this._audioContext&&(n(this._scriptProcessorNode),this._scriptProcessorNode.disconnect(),await this._audioContext.suspend())}finally{await this._encoder.flushAndClose(e)}}};const kp=()=>{let e=(e,t)=>{t?self.postMessage(e,{transfer:t}):self.postMessage(e)};e({type:`support`,supported:typeof MediaStreamTrackProcessor<`u`});let t=new Map,n=new Map;self.addEventListener(`message`,r=>{let i=r.data;switch(i.type){case`videoTrack`:{n.set(i.trackId,i.track);let r=new MediaStreamTrackProcessor({track:i.track}),a=new WritableStream({write:t=>{if(!n.has(i.trackId)){t.close();return}e({type:`videoFrame`,trackId:i.trackId,videoFrame:t},[t])}}),o=new AbortController;t.set(i.trackId,o),r.readable.pipeTo(a,{signal:o.signal}).catch(t=>{t instanceof DOMException&&t.name===`AbortError`||e({type:`error`,trackId:i.trackId,error:t})})}break;case`stopTrack`:{let r=t.get(i.trackId);r&&(r.abort(),t.delete(i.trackId)),n.get(i.trackId)?.stop(),n.delete(i.trackId),e({type:`trackStopped`,trackId:i.trackId})}break;default:Ee(i)}})};let Ap=0,jp=null;const Mp=()=>{let e=new Blob([`(${kp.toString()})()`],{type:`application/javascript`}),t=URL.createObjectURL(e);jp=new Worker(t)};let Np=null;const Pp=async()=>Np===null?(jp||Mp(),new Promise(e=>{n(jp);let t=n=>{let r=n.data;r.type===`support`&&(Np=r.supported,jp.removeEventListener(`message`,t),e(r.supported))};jp.addEventListener(`message`,t)})):Np,Fp=(e,t)=>{n(jp),t?jp.postMessage(e,t):jp.postMessage(e)};var Ip=class extends fp{constructor(e){if(super(),!Tr.includes(e))throw TypeError(`Invalid subtitle codec '${e}'. Must be one of: ${Tr.join(`, `)}.`);this._codec=e}},Lp=class extends Ip{constructor(e){super(e),this._error=null,this._errorSet=!1,this._lastMuxerPromise=Promise.resolve(),this._parser=new Vu({codec:e,output:(e,t)=>{this._lastMuxerPromise=this._connectedTrack.output._muxer.addSubtitleCue(this._connectedTrack,e,t).catch(e=>{this._setError(e)})}})}add(e){if(typeof e!=`string`)throw TypeError(`text must be a string.`);return this._checkForError(),this._ensureValidAdd(),this._parser.parse(e),this._lastMuxerPromise}_setError(e){this._errorSet||=(this._error=e,!0)}_checkForError(){if(this._errorSet)throw this._error}async _flushAndClose(e){e||this._checkForError()}};
520
520
  /*!
521
521
  * Copyright (c) 2026-present, Vanilagy and contributors
522
522
  *
@@ -1,4 +1,4 @@
1
- import{c as e,l as t,o as n,r,u as i}from"./frame-bytes-B4FpkDwW.js";import{c as a,d as o,l as s,o as c,u as l}from"./frames-Dw-7-9i6.js";import{n as u,r as d}from"./run-BJn_AkZa.js";function f(e){return`'${e.replace(/'/g,`'\\''`)}'`}function p(e){return f(String(Math.round(e)))}function m(e,t,n){return`cliclick ${f(`${e}:${Math.round(t)},${Math.round(n)}`)}`}function h(e){return e===2?`mc`:e===3?`rc`:`c`}function g(e){return e===2?`md`:e===3?`rd`:`dd`}function _(e){return e===2?`mu`:e===3?`ru`:`du`}function v(e){return e}function y(e,t){let n=e===2?2:+(e===3);return t===`down`?`ydotool click ${f(b(64|n))}`:t===`up`?`ydotool click ${f(b(128|n))}`:`ydotool click ${f(b(192|n))}`}function b(e){return`0x${e.toString(16).toUpperCase()}`}function x(e,t){return Math.min(20,Math.max(1,Math.round(Math.max(Math.abs(e),Math.abs(t))/40)||1))}function S(e){return`sleep ${f((Math.max(0,e)/1e3).toFixed(3))}`}function C(e){switch(e.type){case`mousemove`:return[m(`m`,e.x,e.y)];case`click`:{let t=e.x??0,n=e.y??0;if(e.holdMs&&e.holdMs>0)return[m(g(e.button),t,n),S(e.holdMs),m(_(e.button),t,n)];let r=m(e.count>=2&&e.button===1?`dc`:h(e.button),t,n);return e.count>2?Array.from({length:e.count},()=>r):[r]}case`button`:return[m(e.down?g(e.button):_(e.button),e.x??0,e.y??0)];case`drag`:return[m(`dd`,e.x1,e.y1),m(`du`,e.x2,e.y2)];case`key`:{let t=c(e.keysym);if(!t)return[];let n=e.down===!0?`down`:e.down===!1?`up`:`press`;return[`cliclick ${f(a(t,n))}`]}case`text`:return[`cliclick ${f(`t:${e.text}`)}`];case`wait`:return[S(e.ms)];case`scroll`:return[];default:return[]}}function w(e,t){return`xdotool mousemove -- ${p(e)} ${p(t)}`}function T(e){switch(e.type){case`mousemove`:return e.relative?[`xdotool mousemove_relative -- ${p(e.x)} ${p(e.y)}`]:[w(e.x,e.y)];case`click`:{let t=Math.max(1,e.count),n=e.holdMs&&e.holdMs>0?` --delay ${p(e.holdMs)}`:``;return[w(e.x??0,e.y??0),`xdotool click --repeat ${p(t)}${n} ${p(v(e.button))}`]}case`button`:{let t=e.down?`mousedown`:`mouseup`;return[w(e.x??0,e.y??0),`xdotool ${t} ${p(v(e.button))}`]}case`drag`:return[w(e.x1,e.y1),`xdotool mousedown 1`,w(e.x2,e.y2),`xdotool mouseup 1`];case`scroll`:{let t=e.dy<0?4:e.dy>0?5:e.dx<0?6:7;return[w(e.x??0,e.y??0),`xdotool click --repeat ${p(x(e.dx,e.dy))} ${p(t)}`]}default:return null}}function E(e){let t=T(e);if(t)return t;if(e.type===`key`){let t=c(e.keysym);if(!t)return[];let n=l(t);return e.down===!0?[`xdotool keydown ${f(n)}`]:e.down===!1?[`xdotool keyup ${f(n)}`]:[`xdotool key ${f(n)}`]}return e.type===`text`?[`xdotool type -- ${f(e.text)}`]:e.type===`wait`?[S(e.ms)]:[]}function D(e){switch(e.type){case`mousemove`:return[`ydotool mousemove --absolute -- ${p(e.x)} ${p(e.y)}`];case`click`:{let t=Math.round(e.x??0),n=Math.round(e.y??0),r=Math.max(1,e.count),i=y(e.button,`click`);return[`ydotool mousemove --absolute -- ${p(t)} ${p(n)}`,...Array.from({length:r},()=>i)]}case`button`:{let t=Math.round(e.x??0),n=Math.round(e.y??0);return[`ydotool mousemove --absolute -- ${p(t)} ${p(n)}`,y(e.button,e.down?`down`:`up`)]}case`drag`:return[`ydotool mousemove --absolute -- ${p(e.x1)} ${p(e.y1)}`,y(1,`down`),`ydotool mousemove --absolute -- ${p(e.x2)} ${p(e.y2)}`,y(1,`up`)];case`scroll`:return[`ydotool mousemove --absolute -- ${p(e.x??0)} ${p(e.y??0)}`,`ydotool click --repeat ${p(x(e.dx,e.dy))} ${f(e.dy<0?b(195):b(196))}`];case`key`:{let t=c(e.keysym);if(!t)return[];let n=e.down===!0?`down`:e.down===!1?`up`:`press`,r=o(t,n);return r?[`ydotool key ${f(r)}`]:[]}case`text`:return[`ydotool type -- ${f(e.text)}`];case`wait`:return[S(e.ms)];default:return[]}}function O(e,t){let n=`--udid ${f(t)}`;if(e.type===`key`){let t=c(e.keysym);return t?.key===`Home`?[`idb ui button HOME ${n}`]:t&&t.key.length===1&&!t.modifiers.ctrl&&!t.modifiers.meta?[`idb ui text ${f(t.key)} ${n}`]:[]}if(e.type===`text`)return[`idb ui text ${f(e.text)} ${n}`];if(e.type===`wait`)return[S(e.ms)];let r=s(e);return r.kind===`noop`?[]:r.kind===`tap`?[`idb ui tap ${p(r.x)} ${p(r.y)} ${n}`]:r.kind===`long-press`?[`idb ui tap ${p(r.x)} ${p(r.y)} --duration ${p(r.holdMs)} ${n}`]:[`idb ui swipe ${p(r.x1)} ${p(r.y1)} ${p(r.x2)} ${p(r.y2)} ${n}`]}function k(e,t,n){return t===`none`?[]:t===`cliclick`?C(e):t===`xdotool`?E(e):t===`ydotool`?D(e):t===`idb`&&n?O(e,n):[]}function A(e,t,n){return t?`ssh:${e}:sim:${t}`:n?`ssh:${e}:display:${n}`:`ssh:${e}`}function j(e){return`/tmp/slicc-${e.replace(/[^A-Za-z0-9._-]+/gu,`_`)}`}function M(e){let t=e.toLowerCase();return t.startsWith(`darwin`)?`darwin`:t.startsWith(`linux`)?`linux`:`unknown`}const N=[`screencapture`,`grim`,`scrot`,`import`],P=[`cliclick`,`xdotool`,`ydotool`];function F(e,t){for(let n of t)if(e.includes(n))return n;return null}function I(e){let t=/SLICC_SSH_PROBE\s+(\S+)\s*(.*)/u.exec(e);if(!t)return{error:`probe: unexpected follower output`};let n=t[2].trim().split(/\s+/u).filter(Boolean);return{platform:M(t[1]),tools:n,capture:F(n,N),input:F(n,P)??`none`}}async function L(e,t){let n=await e(`u=$(uname -s 2>/dev/null || echo unknown)
1
+ import{c as e,l as t,o as n,r,u as i}from"./frame-bytes-B4FpkDwW.js";import{c as a,d as o,l as s,o as c,u as l}from"./frames-Dw-7-9i6.js";import{n as u,r as d}from"./run-QCY2mHg_.js";function f(e){return`'${e.replace(/'/g,`'\\''`)}'`}function p(e){return f(String(Math.round(e)))}function m(e,t,n){return`cliclick ${f(`${e}:${Math.round(t)},${Math.round(n)}`)}`}function h(e){return e===2?`mc`:e===3?`rc`:`c`}function g(e){return e===2?`md`:e===3?`rd`:`dd`}function _(e){return e===2?`mu`:e===3?`ru`:`du`}function v(e){return e}function y(e,t){let n=e===2?2:+(e===3);return t===`down`?`ydotool click ${f(b(64|n))}`:t===`up`?`ydotool click ${f(b(128|n))}`:`ydotool click ${f(b(192|n))}`}function b(e){return`0x${e.toString(16).toUpperCase()}`}function x(e,t){return Math.min(20,Math.max(1,Math.round(Math.max(Math.abs(e),Math.abs(t))/40)||1))}function S(e){return`sleep ${f((Math.max(0,e)/1e3).toFixed(3))}`}function C(e){switch(e.type){case`mousemove`:return[m(`m`,e.x,e.y)];case`click`:{let t=e.x??0,n=e.y??0;if(e.holdMs&&e.holdMs>0)return[m(g(e.button),t,n),S(e.holdMs),m(_(e.button),t,n)];let r=m(e.count>=2&&e.button===1?`dc`:h(e.button),t,n);return e.count>2?Array.from({length:e.count},()=>r):[r]}case`button`:return[m(e.down?g(e.button):_(e.button),e.x??0,e.y??0)];case`drag`:return[m(`dd`,e.x1,e.y1),m(`du`,e.x2,e.y2)];case`key`:{let t=c(e.keysym);if(!t)return[];let n=e.down===!0?`down`:e.down===!1?`up`:`press`;return[`cliclick ${f(a(t,n))}`]}case`text`:return[`cliclick ${f(`t:${e.text}`)}`];case`wait`:return[S(e.ms)];case`scroll`:return[];default:return[]}}function w(e,t){return`xdotool mousemove -- ${p(e)} ${p(t)}`}function T(e){switch(e.type){case`mousemove`:return e.relative?[`xdotool mousemove_relative -- ${p(e.x)} ${p(e.y)}`]:[w(e.x,e.y)];case`click`:{let t=Math.max(1,e.count),n=e.holdMs&&e.holdMs>0?` --delay ${p(e.holdMs)}`:``;return[w(e.x??0,e.y??0),`xdotool click --repeat ${p(t)}${n} ${p(v(e.button))}`]}case`button`:{let t=e.down?`mousedown`:`mouseup`;return[w(e.x??0,e.y??0),`xdotool ${t} ${p(v(e.button))}`]}case`drag`:return[w(e.x1,e.y1),`xdotool mousedown 1`,w(e.x2,e.y2),`xdotool mouseup 1`];case`scroll`:{let t=e.dy<0?4:e.dy>0?5:e.dx<0?6:7;return[w(e.x??0,e.y??0),`xdotool click --repeat ${p(x(e.dx,e.dy))} ${p(t)}`]}default:return null}}function E(e){let t=T(e);if(t)return t;if(e.type===`key`){let t=c(e.keysym);if(!t)return[];let n=l(t);return e.down===!0?[`xdotool keydown ${f(n)}`]:e.down===!1?[`xdotool keyup ${f(n)}`]:[`xdotool key ${f(n)}`]}return e.type===`text`?[`xdotool type -- ${f(e.text)}`]:e.type===`wait`?[S(e.ms)]:[]}function D(e){switch(e.type){case`mousemove`:return[`ydotool mousemove --absolute -- ${p(e.x)} ${p(e.y)}`];case`click`:{let t=Math.round(e.x??0),n=Math.round(e.y??0),r=Math.max(1,e.count),i=y(e.button,`click`);return[`ydotool mousemove --absolute -- ${p(t)} ${p(n)}`,...Array.from({length:r},()=>i)]}case`button`:{let t=Math.round(e.x??0),n=Math.round(e.y??0);return[`ydotool mousemove --absolute -- ${p(t)} ${p(n)}`,y(e.button,e.down?`down`:`up`)]}case`drag`:return[`ydotool mousemove --absolute -- ${p(e.x1)} ${p(e.y1)}`,y(1,`down`),`ydotool mousemove --absolute -- ${p(e.x2)} ${p(e.y2)}`,y(1,`up`)];case`scroll`:return[`ydotool mousemove --absolute -- ${p(e.x??0)} ${p(e.y??0)}`,`ydotool click --repeat ${p(x(e.dx,e.dy))} ${f(e.dy<0?b(195):b(196))}`];case`key`:{let t=c(e.keysym);if(!t)return[];let n=e.down===!0?`down`:e.down===!1?`up`:`press`,r=o(t,n);return r?[`ydotool key ${f(r)}`]:[]}case`text`:return[`ydotool type -- ${f(e.text)}`];case`wait`:return[S(e.ms)];default:return[]}}function O(e,t){let n=`--udid ${f(t)}`;if(e.type===`key`){let t=c(e.keysym);return t?.key===`Home`?[`idb ui button HOME ${n}`]:t&&t.key.length===1&&!t.modifiers.ctrl&&!t.modifiers.meta?[`idb ui text ${f(t.key)} ${n}`]:[]}if(e.type===`text`)return[`idb ui text ${f(e.text)} ${n}`];if(e.type===`wait`)return[S(e.ms)];let r=s(e);return r.kind===`noop`?[]:r.kind===`tap`?[`idb ui tap ${p(r.x)} ${p(r.y)} ${n}`]:r.kind===`long-press`?[`idb ui tap ${p(r.x)} ${p(r.y)} --duration ${p(r.holdMs)} ${n}`]:[`idb ui swipe ${p(r.x1)} ${p(r.y1)} ${p(r.x2)} ${p(r.y2)} ${n}`]}function k(e,t,n){return t===`none`?[]:t===`cliclick`?C(e):t===`xdotool`?E(e):t===`ydotool`?D(e):t===`idb`&&n?O(e,n):[]}function A(e,t,n){return t?`ssh:${e}:sim:${t}`:n?`ssh:${e}:display:${n}`:`ssh:${e}`}function j(e){return`/tmp/slicc-${e.replace(/[^A-Za-z0-9._-]+/gu,`_`)}`}function M(e){let t=e.toLowerCase();return t.startsWith(`darwin`)?`darwin`:t.startsWith(`linux`)?`linux`:`unknown`}const N=[`screencapture`,`grim`,`scrot`,`import`],P=[`cliclick`,`xdotool`,`ydotool`];function F(e,t){for(let n of t)if(e.includes(n))return n;return null}function I(e){let t=/SLICC_SSH_PROBE\s+(\S+)\s*(.*)/u.exec(e);if(!t)return{error:`probe: unexpected follower output`};let n=t[2].trim().split(/\s+/u).filter(Boolean);return{platform:M(t[1]),tools:n,capture:F(n,N),input:F(n,P)??`none`}}async function L(e,t){let n=await e(`u=$(uname -s 2>/dev/null || echo unknown)
2
2
  tools=""
3
3
  for t in screencapture cliclick grim scrot import xdotool ydotool idb xcrun; do
4
4
  command -v "$t" >/dev/null 2>&1 && tools="$tools$t "
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/panel-rpc-sLZo8PD-.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/panel-rpc-accessor-B4BfPLSo.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{t as n}from"./quick-llm-Dvu7_VEC.js";import{n as r}from"./types-DSxCdZw6.js";import{t as i}from"./approval-decision-BvumWm-U.js";import"./capability-6V-AYPSJ.js";import{t as a}from"./page-approval-service-ja6kjLj8.js";var o=t(`sudo:timeout`);function s(e=`user-timeout`){return{decision:`deny`,reason:e}}function c(e,t={}){let n=t.timeoutMs??3e5;if(!Number.isFinite(n)||n<=0)return e;let i=t.setTimer??((e,t)=>setTimeout(e,t)),a=t.clearTimer??(e=>clearTimeout(e));return{requestApproval(t,c){return new Promise(l=>{let u=new AbortController,d=()=>u.abort();c?.signal?.addEventListener(`abort`,d,{once:!0});let f=!1,p=e=>{f=!0,c?.signal?.removeEventListener(`abort`,d),l(e)},m=i(()=>{f||(o.warn(`sudo approval timed out — failing closed`,{kind:t.kind,detail:t.detail,timeoutMs:n}),u.abort(),p(s(`user-timeout`)))},n),h=e=>{if(f){o.warn(`sudo decision arrived after timeout — discarded`,{kind:t.kind,detail:t.detail,decision:e.decision});return}a(m),p(e)};e.requestApproval(t,{signal:u.signal}).then(h,e=>{o.warn(`sudo broker threw — denying`,{error:e instanceof Error?e.message:String(e)}),h(r())})})}}}var l=t(`sudo-suggest`),u=[`You generalize a single shell command into a minimal glob pattern for an`,`allow-list rule. Output ONLY the pattern on one line — no prose, no quotes,`,`no backticks. Keep the leading command/sub-command verbatim and replace only`,`the volatile tail (args, paths, refs) with a single trailing "*".`,`Examples:`,` git push origin main -> git push*`,` rm -rf build/cache -> rm -rf*`,` npm install left-pad -> npm install*`].join(`
2
+ import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{t as n}from"./quick-llm-D46cR1qL.js";import{n as r}from"./types-DSxCdZw6.js";import{t as i}from"./approval-decision-BvumWm-U.js";import"./capability-6V-AYPSJ.js";import{t as a}from"./page-approval-service-ja6kjLj8.js";var o=t(`sudo:timeout`);function s(e=`user-timeout`){return{decision:`deny`,reason:e}}function c(e,t={}){let n=t.timeoutMs??3e5;if(!Number.isFinite(n)||n<=0)return e;let i=t.setTimer??((e,t)=>setTimeout(e,t)),a=t.clearTimer??(e=>clearTimeout(e));return{requestApproval(t,c){return new Promise(l=>{let u=new AbortController,d=()=>u.abort();c?.signal?.addEventListener(`abort`,d,{once:!0});let f=!1,p=e=>{f=!0,c?.signal?.removeEventListener(`abort`,d),l(e)},m=i(()=>{f||(o.warn(`sudo approval timed out — failing closed`,{kind:t.kind,detail:t.detail,timeoutMs:n}),u.abort(),p(s(`user-timeout`)))},n),h=e=>{if(f){o.warn(`sudo decision arrived after timeout — discarded`,{kind:t.kind,detail:t.detail,decision:e.decision});return}a(m),p(e)};e.requestApproval(t,{signal:u.signal}).then(h,e=>{o.warn(`sudo broker threw — denying`,{error:e instanceof Error?e.message:String(e)}),h(r())})})}}}var l=t(`sudo-suggest`),u=[`You generalize a single shell command into a minimal glob pattern for an`,`allow-list rule. Output ONLY the pattern on one line — no prose, no quotes,`,`no backticks. Keep the leading command/sub-command verbatim and replace only`,`the volatile tail (args, paths, refs) with a single trailing "*".`,`Examples:`,` git push origin main -> git push*`,` rm -rf build/cache -> rm -rf*`,` npm install left-pad -> npm install*`].join(`
3
3
  `),d=[`You generalize a single filesystem path into a minimal glob pattern for an`,`allow-list rule. Output ONLY the pattern on one line — no prose, no quotes,`,`no backticks. Keep the meaningful directory prefix and replace the volatile`,`leaf (and below) with "**". Examples:`,` /workspace/.git/config -> /workspace/.git/**`,` /shared/secrets/openai.key -> /shared/secrets/**`,` /workspace/src/app/main.ts -> /workspace/src/**`].join(`
4
4
  `);async function f(e,t){if(e.suggestedPattern&&e.suggestedPattern.trim().length>0)return e.suggestedPattern.trim();let r=e.detail.trim();if(e.kind===`guest-message`||e.kind===`guest-tool`)return r;let i=e.kind===`command`?u:d,a=null;try{a=await n({prompt:r,system:i,maxTokens:40,temperature:0,signal:t})}catch(e){l.debug(`suggestPattern: quickLabel threw`,{error:e instanceof Error?e.message:String(e)}),a=null}return p(a)||r}function p(e){if(!e)return null;let t=(e.split(`
5
5
  `,1)[0]?.trim()??``).replace(/^`+/,``).replace(/`+$/,``).replace(/^["']/,``).replace(/["']$/,``).trim();return t.length===0?null:t}var m=t(`sudo:capability-gesture`);function h(e,t={}){let n=t.suggest??f;return{async requestApproval(t,a){let o=a?.signal,s;if(t.suggestedPattern)s=t.suggestedPattern;else try{s=await n(t,o)}catch{s=t.detail}if(o?.aborted)return m.warn(`sudo approval aborted before prompting — denying`,{detail:t.detail}),r();if(!e)return m.warn(`no CapabilityBroker injected for the sudo gesture hop — denying (composition bug, never a guessed transport)`,{detail:t.detail}),r();let c=await e.approvals.request({kind:t.kind,detail:t.detail,suggestedPattern:s,...t.requester?{requester:t.requester}:{},...t.reason?{reason:t.reason}:{},...t.approver?{approver:t.approver}:{},...o?{signal:o}:{}});return c.ok?i(c.value,s):(m.warn(`capability broker approvals.request failed — denying`,{message:c.message}),r())}}}var g=t(`sudo:tray-first`),_=6e5;function v(t,n={}){let i=n.suggest??f,a=n.timeoutMs??_,o=n.getClient??(async()=>{let{getPanelRpcClient:t}=await e(async()=>{let{getPanelRpcClient:e}=await import(`./panel-rpc-sLZo8PD-.js`).then(e=>e.n);return{getPanelRpcClient:e}},__vite__mapDeps([0,1,2]));return t()});return{async requestApproval(e,n){if(n?.signal?.aborted)return r();let s=e.suggestedPattern;if(!s)try{s=await i(e,n?.signal)}catch{s=e.detail}let c={...e,suggestedPattern:s},l=null;try{l=await o()}catch(e){g.debug?.(`panel-RPC client lookup threw — using native broker`,{error:e instanceof Error?e.message:String(e)})}if(l)try{let e=await l.call(`sudo-request`,{request:c,mode:`tray-first`},{timeoutMs:a});if(e?.handled!==!1)return b(e?.decision,s)}catch(e){g.warn(`tray-first sudo probe failed — using native broker`,{error:e instanceof Error?e.message:String(e)})}return t.requestApproval(c,n)}}}var y=[`user-timeout`,`cone-timeout`,`unavailable`];function b(e,t){if(!e||typeof e!=`object`)return r();let n=e,i=n.attestation===`biometric`||n.attestation===`passcode`||n.attestation===`none`?n.attestation:void 0;if(n.decision===`allow`)return{decision:`allow`,...i?{attestation:i}:{}};if(n.decision===`always`)return{decision:`always`,pattern:typeof n.pattern==`string`&&n.pattern.trim().length>0?n.pattern.trim():t,...i?{attestation:i}:{}};if(n.decision!==`deny`)return r();let a=y.find(e=>e===n.reason);return a?{decision:`deny`,reason:a}:{decision:`deny`}}var x=t(`sudo`),S=`__slicc_sudo`;function C(e){return c(w(e))}function w(e){let t=h(e);return e?.adapter===`extension-direct`||e?.adapter===`extension-delegate`?t:v(t)}function T(e){let t={requestApproval:t=>e.requestApproval(t)};return globalThis[S]=t,x.info(`sudo broker test hook published on globalThis.__slicc_sudo`),t}export{C as createSudoBroker,a as installPanelSudoResponder,T as installSudoTestHook};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{n}from"./jsh-executor-HYv0wIZ0.js";import{_ as r}from"./kernel-worker-l6DSPN07.js";const i=`/workspace/.jshd`,a=`/workspace/.jshd/log`,o=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function s(e){return o.test(e)&&e!==`log`}function c(e){if(!s(e))throw Error(`invalid unit name '${e}' (use letters, digits, '.', '_' or '-')`)}function l(e){return c(e),`${i}/${e}.json`}function u(e){return c(e),`${a}/${e}.log`}const d=6e4;var f=e({appendUnitLog:()=>b,deleteUnitRecord:()=>v,ensureJshdDirs:()=>h,listUnitRecords:()=>y,readUnitLog:()=>x,readUnitRecord:()=>_,writeUnitRecord:()=>g});const p=new Set([`always`,`on-failure`,`no`]);function m(e){return typeof e==`string`?e:new TextDecoder().decode(e)}async function h(e){await e.mkdir(i,{recursive:!0}),await e.mkdir(a,{recursive:!0})}async function g(e,t){if(!s(t.name))throw Error(`invalid unit name '${t.name}' (use letters, digits, '.', '_' or '-')`);await h(e),await e.writeFile(l(t.name),`${JSON.stringify(t,null,2)}\n`)}async function _(e,t){if(!s(t))return null;let n=l(t);if(!await e.exists(n))return null;try{let r=S(JSON.parse(m(await e.readFile(n))));return!r||r.name!==t?null:r}catch{return null}}async function v(e,t){if(!s(t))return;let n=l(t);await e.exists(n)&&await e.rm?.(n);let r=u(t);await e.exists(r)&&await e.rm?.(r)}async function y(e){if(!await e.exists(`/workspace/.jshd`))return[];let t=await w(e,i),n=[];for(let r of t){if(!r.endsWith(`.json`))continue;let t=r.slice(0,-5);if(!s(t))continue;let i=await _(e,t);i&&n.push(i)}return n.sort((e,t)=>e.name.localeCompare(t.name)),n}async function b(e,t,n){if(!n||!s(t))return;await h(e);let r=u(t);if(e.appendFile){await e.appendFile(r,n);return}let i=await e.exists(r)?m(await e.readFile(r)):``;await e.writeFile(r,i+n)}async function x(e,t){if(!s(t))return``;let n=u(t);return await e.exists(n)?m(await e.readFile(n)):``}function S(e){if(typeof e!=`object`||!e)return null;let t=e;if(typeof t.name!=`string`||!s(t.name)||!Array.isArray(t.argv)||typeof t.cwd!=`string`||typeof t.createdAt!=`string`||typeof t.enabled!=`boolean`||typeof t.restart!=`string`||!p.has(t.restart))return null;let n=t.argv.filter(e=>typeof e==`string`);return n.length===0?null:{name:t.name,argv:n,cwd:t.cwd,env:C(t.env),restart:t.restart,enabled:t.enabled,createdAt:t.createdAt}}function C(e){let t={};if(typeof e!=`object`||!e||Array.isArray(e))return t;for(let[n,r]of Object.entries(e))typeof r==`string`&&(t[n]=r);return t}async function w(e,t){try{if(e.readdir)return await e.readdir(t);if(e.readDir)return(await e.readDir(t)).map(e=>typeof e==`string`?e:e.name)}catch{return[]}return[]}const T=new class{jobs=new Map;upsert(e){this.jobs.set(e.id,{...e,argv:[...e.argv]})}get(e){let t=this.jobs.get(e);return t?{...t,argv:[...t.argv]}:void 0}remove(e){this.jobs.delete(e)}list(){return[...this.jobs.values()].map(e=>({...e,argv:[...e.argv]}))}clear(){this.jobs.clear()}},E=t(`jshd`);var D=class{units=new Map;logQueues=new Map;deps;constructor(e){this.deps=e}isDurable(){return this.deps.isDurable?.()??typeof Worker<`u`}list(){return[...this.units.values()].map(e=>this.toStatus(e)).sort((e,t)=>e.name.localeCompare(t.name))}status(e){let t=this.units.get(e);return t?this.toStatus(t):null}async start(e){let t=this.units.get(e.name);if(t&&(t.state===`running`||t.state===`starting`))throw Error(`unit '${e.name}' is already ${t.state}`);let n=this.makeLive(e);this.units.set(e.name,n);try{await g(this.deps.fs,e)}catch(t){throw this.units.delete(e.name),t}let r=new Promise((e,t)=>{n.spawnResolve=e,n.spawnReject=t});return n.loop=this.runLoop(n),{pid:await r,durable:this.isDurable()}}async stop(e){let t=this.units.get(e);return t?(t.stopRequested=!0,t.backoffAbort?.abort(),t.pid!==null&&this.deps.processManager.signal(t.pid,`SIGTERM`),t.loop!=null&&await t.loop.catch(()=>void 0),t.state=`stopped`,t.pid=null,this.syncJob(t),await this.flushLogs(e),!0):!1}async restart(e){let t=this.units.get(e)?.record??await _(this.deps.fs,e);return t?(await this.stop(e),this.start(t)):null}async rm(e){await this.stop(e),this.units.delete(e),T.remove(O(e)),await this.flushLogs(e);let{deleteUnitRecord:t}=await Promise.resolve().then(()=>f);return await t(this.deps.fs,e),!0}async setEnabled(e,t){let n=this.units.get(e),r=n?.record??await _(this.deps.fs,e);if(!r)return null;let i={...r,enabled:t};return n&&(n.record=i),await g(this.deps.fs,i),i}dispose(){for(let e of this.units.values())e.stopRequested=!0,e.backoffAbort?.abort(),e.pid!==null&&this.deps.processManager.signal(e.pid,`SIGKILL`);this.units.clear()}makeLive(e){return{record:e,pid:null,state:`starting`,restarts:0,startedAt:null,lastExitCode:null,stopRequested:!1,restartAt:[],spawnResolve:null,spawnReject:null,loop:null,backoffAbort:null}}async runLoop(e){try{for(;!e.stopRequested;){let t=await this.runOnce(e);if(e.lastExitCode=t.exitCode,e.pid=null,e.stopRequested||t.signaled){e.state=`stopped`,this.syncJob(e);return}if(!this.shouldRestart(e,t.exitCode)){e.state=`stopped`,this.syncJob(e);return}if(this.hitCrashLoop(e)){e.state=`errored`,this.syncJob(e),this.emitCrashLoop(e);return}if(await this.backoff(e),e.stopRequested){e.state=`stopped`,this.syncJob(e);return}e.restarts+=1}e.state=`stopped`,this.syncJob(e)}catch(t){E.warn(`jshd unit loop failed`,{name:e.record.name,error:t instanceof Error?t.message:String(t)}),e.state=`errored`,e.spawnReject?.(t instanceof Error?t:Error(String(t))),this.syncJob(e)}}async runOnce(e){e.state=`starting`,e.startedAt=this.now(),this.syncJob(e);let t=e.record.argv[0],r=e.record.argv.slice(1),i=this.deps.buildContext(e.record),a=await n(t,r,i,this.pmConfig(),{...this.deps.realmFactory?{realmFactory:this.deps.realmFactory}:{},captureOutput:!1,onSpawn:t=>{e.pid=t,e.state=`running`,this.syncJob(e),e.spawnResolve?.(t),e.spawnResolve=null,e.spawnReject=null},onOutput:t=>{this.enqueueLog(e.record.name,t)}});e.pid===null&&(e.spawnReject?.(Error(a.stderr.trim()||`unit '${e.record.name}' failed to start`)),e.spawnResolve=null,e.spawnReject=null);let o=e.pid===null?null:this.deps.processManager.get(e.pid);return{exitCode:a.exitCode,signaled:o?.terminatedBy!=null}}shouldRestart(e,t){return e.record.restart===`no`?!1:e.record.restart===`always`||t!==0}hitCrashLoop(e){let t=this.now();return e.restartAt=e.restartAt.filter(e=>t-e<d),e.restartAt.push(t),e.restartAt.length>=8}async backoff(e){let t=r({attempt:e.restarts,baseMs:1e3,capMs:3e4,maxShift:8}),n=this.deps.sleep??k,i=new AbortController;e.backoffAbort=i;try{await n(t,i.signal)}catch{e.stopRequested=!0}finally{e.backoffAbort=null}}emitCrashLoop(e){let t=e.record.name,n=`jshd unit '${t}' marked errored after ${e.restarts} restarts in ${d/1e3}s`;this.deps.lickManager?.emitEvent({type:`jshd`,jshdName:t,jshdRestarts:e.restarts,resultPath:u(t),preview:n,timestamp:new Date(this.now()).toISOString(),body:{kind:`jshd`,name:t,reason:`crash-loop`,restarts:e.restarts}})}enqueueLog(e,t){let n=(this.logQueues.get(e)??Promise.resolve()).then(()=>this.tee(e,t)).catch(()=>void 0);return this.logQueues.set(e,n),n}async flushLogs(e){let t=this.logQueues.get(e);t&&(await t.catch(()=>void 0),this.logQueues.delete(e))}async tee(e,t){try{await b(this.deps.fs,e,t)}catch(t){E.warn(`failed to tee jshd log`,{name:e,error:t instanceof Error?t.message:String(t)})}}pmConfig(){return{processManager:this.deps.processManager,owner:{kind:`jshd`}}}syncJob(e){T.upsert({id:O(e.record.name),kind:`jshd`,pid:e.pid,argv:e.record.argv,status:e.state,startedAt:e.startedAt??this.now(),restarts:e.restarts})}toStatus(e){let t=this.now();return{name:e.record.name,pid:e.pid,state:e.state,restarts:e.restarts,uptimeMs:e.startedAt!==null&&e.state===`running`?t-e.startedAt:null,enabled:e.record.enabled,restart:e.record.restart,argv:e.record.argv,cwd:e.record.cwd,durable:this.isDurable(),lastExitCode:e.lastExitCode}}now(){return this.deps.now?.()??Date.now()}};function O(e){return`jshd:${e}`}function k(e,t){return e<=0?Promise.resolve():t?.aborted?Promise.reject(A()):new Promise((n,r)=>{let i=setTimeout(()=>{t?.removeEventListener(`abort`,a),n()},e),a=()=>{clearTimeout(i),r(A())};t?.addEventListener(`abort`,a,{once:!0})})}function A(){let e=Error(`aborted`);return e.name=`AbortError`,e}let j=null;function M(e){return j||(e?(j=new D(e),j):null)}function N(e){return j||=new D(e),j}export{_ as a,x as i,N as n,f as o,y as r,s,M as t};
1
+ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{n}from"./jsh-executor-Dl-C6Zsf.js";import{_ as r}from"./kernel-worker-C8b5lZTP.js";const i=`/workspace/.jshd`,a=`/workspace/.jshd/log`,o=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function s(e){return o.test(e)&&e!==`log`}function c(e){if(!s(e))throw Error(`invalid unit name '${e}' (use letters, digits, '.', '_' or '-')`)}function l(e){return c(e),`${i}/${e}.json`}function u(e){return c(e),`${a}/${e}.log`}const d=6e4;var f=e({appendUnitLog:()=>b,deleteUnitRecord:()=>v,ensureJshdDirs:()=>h,listUnitRecords:()=>y,readUnitLog:()=>x,readUnitRecord:()=>_,writeUnitRecord:()=>g});const p=new Set([`always`,`on-failure`,`no`]);function m(e){return typeof e==`string`?e:new TextDecoder().decode(e)}async function h(e){await e.mkdir(i,{recursive:!0}),await e.mkdir(a,{recursive:!0})}async function g(e,t){if(!s(t.name))throw Error(`invalid unit name '${t.name}' (use letters, digits, '.', '_' or '-')`);await h(e),await e.writeFile(l(t.name),`${JSON.stringify(t,null,2)}\n`)}async function _(e,t){if(!s(t))return null;let n=l(t);if(!await e.exists(n))return null;try{let r=S(JSON.parse(m(await e.readFile(n))));return!r||r.name!==t?null:r}catch{return null}}async function v(e,t){if(!s(t))return;let n=l(t);await e.exists(n)&&await e.rm?.(n);let r=u(t);await e.exists(r)&&await e.rm?.(r)}async function y(e){if(!await e.exists(`/workspace/.jshd`))return[];let t=await w(e,i),n=[];for(let r of t){if(!r.endsWith(`.json`))continue;let t=r.slice(0,-5);if(!s(t))continue;let i=await _(e,t);i&&n.push(i)}return n.sort((e,t)=>e.name.localeCompare(t.name)),n}async function b(e,t,n){if(!n||!s(t))return;await h(e);let r=u(t);if(e.appendFile){await e.appendFile(r,n);return}let i=await e.exists(r)?m(await e.readFile(r)):``;await e.writeFile(r,i+n)}async function x(e,t){if(!s(t))return``;let n=u(t);return await e.exists(n)?m(await e.readFile(n)):``}function S(e){if(typeof e!=`object`||!e)return null;let t=e;if(typeof t.name!=`string`||!s(t.name)||!Array.isArray(t.argv)||typeof t.cwd!=`string`||typeof t.createdAt!=`string`||typeof t.enabled!=`boolean`||typeof t.restart!=`string`||!p.has(t.restart))return null;let n=t.argv.filter(e=>typeof e==`string`);return n.length===0?null:{name:t.name,argv:n,cwd:t.cwd,env:C(t.env),restart:t.restart,enabled:t.enabled,createdAt:t.createdAt}}function C(e){let t={};if(typeof e!=`object`||!e||Array.isArray(e))return t;for(let[n,r]of Object.entries(e))typeof r==`string`&&(t[n]=r);return t}async function w(e,t){try{if(e.readdir)return await e.readdir(t);if(e.readDir)return(await e.readDir(t)).map(e=>typeof e==`string`?e:e.name)}catch{return[]}return[]}const T=new class{jobs=new Map;upsert(e){this.jobs.set(e.id,{...e,argv:[...e.argv]})}get(e){let t=this.jobs.get(e);return t?{...t,argv:[...t.argv]}:void 0}remove(e){this.jobs.delete(e)}list(){return[...this.jobs.values()].map(e=>({...e,argv:[...e.argv]}))}clear(){this.jobs.clear()}},E=t(`jshd`);var D=class{units=new Map;logQueues=new Map;deps;constructor(e){this.deps=e}isDurable(){return this.deps.isDurable?.()??typeof Worker<`u`}list(){return[...this.units.values()].map(e=>this.toStatus(e)).sort((e,t)=>e.name.localeCompare(t.name))}status(e){let t=this.units.get(e);return t?this.toStatus(t):null}async start(e){let t=this.units.get(e.name);if(t&&(t.state===`running`||t.state===`starting`))throw Error(`unit '${e.name}' is already ${t.state}`);let n=this.makeLive(e);this.units.set(e.name,n);try{await g(this.deps.fs,e)}catch(t){throw this.units.delete(e.name),t}let r=new Promise((e,t)=>{n.spawnResolve=e,n.spawnReject=t});return n.loop=this.runLoop(n),{pid:await r,durable:this.isDurable()}}async stop(e){let t=this.units.get(e);return t?(t.stopRequested=!0,t.backoffAbort?.abort(),t.pid!==null&&this.deps.processManager.signal(t.pid,`SIGTERM`),t.loop!=null&&await t.loop.catch(()=>void 0),t.state=`stopped`,t.pid=null,this.syncJob(t),await this.flushLogs(e),!0):!1}async restart(e){let t=this.units.get(e)?.record??await _(this.deps.fs,e);return t?(await this.stop(e),this.start(t)):null}async rm(e){await this.stop(e),this.units.delete(e),T.remove(O(e)),await this.flushLogs(e);let{deleteUnitRecord:t}=await Promise.resolve().then(()=>f);return await t(this.deps.fs,e),!0}async setEnabled(e,t){let n=this.units.get(e),r=n?.record??await _(this.deps.fs,e);if(!r)return null;let i={...r,enabled:t};return n&&(n.record=i),await g(this.deps.fs,i),i}dispose(){for(let e of this.units.values())e.stopRequested=!0,e.backoffAbort?.abort(),e.pid!==null&&this.deps.processManager.signal(e.pid,`SIGKILL`);this.units.clear()}makeLive(e){return{record:e,pid:null,state:`starting`,restarts:0,startedAt:null,lastExitCode:null,stopRequested:!1,restartAt:[],spawnResolve:null,spawnReject:null,loop:null,backoffAbort:null}}async runLoop(e){try{for(;!e.stopRequested;){let t=await this.runOnce(e);if(e.lastExitCode=t.exitCode,e.pid=null,e.stopRequested||t.signaled){e.state=`stopped`,this.syncJob(e);return}if(!this.shouldRestart(e,t.exitCode)){e.state=`stopped`,this.syncJob(e);return}if(this.hitCrashLoop(e)){e.state=`errored`,this.syncJob(e),this.emitCrashLoop(e);return}if(await this.backoff(e),e.stopRequested){e.state=`stopped`,this.syncJob(e);return}e.restarts+=1}e.state=`stopped`,this.syncJob(e)}catch(t){E.warn(`jshd unit loop failed`,{name:e.record.name,error:t instanceof Error?t.message:String(t)}),e.state=`errored`,e.spawnReject?.(t instanceof Error?t:Error(String(t))),this.syncJob(e)}}async runOnce(e){e.state=`starting`,e.startedAt=this.now(),this.syncJob(e);let t=e.record.argv[0],r=e.record.argv.slice(1),i=this.deps.buildContext(e.record),a=await n(t,r,i,this.pmConfig(),{...this.deps.realmFactory?{realmFactory:this.deps.realmFactory}:{},captureOutput:!1,onSpawn:t=>{e.pid=t,e.state=`running`,this.syncJob(e),e.spawnResolve?.(t),e.spawnResolve=null,e.spawnReject=null},onOutput:t=>{this.enqueueLog(e.record.name,t)}});e.pid===null&&(e.spawnReject?.(Error(a.stderr.trim()||`unit '${e.record.name}' failed to start`)),e.spawnResolve=null,e.spawnReject=null);let o=e.pid===null?null:this.deps.processManager.get(e.pid);return{exitCode:a.exitCode,signaled:o?.terminatedBy!=null}}shouldRestart(e,t){return e.record.restart===`no`?!1:e.record.restart===`always`||t!==0}hitCrashLoop(e){let t=this.now();return e.restartAt=e.restartAt.filter(e=>t-e<d),e.restartAt.push(t),e.restartAt.length>=8}async backoff(e){let t=r({attempt:e.restarts,baseMs:1e3,capMs:3e4,maxShift:8}),n=this.deps.sleep??k,i=new AbortController;e.backoffAbort=i;try{await n(t,i.signal)}catch{e.stopRequested=!0}finally{e.backoffAbort=null}}emitCrashLoop(e){let t=e.record.name,n=`jshd unit '${t}' marked errored after ${e.restarts} restarts in ${d/1e3}s`;this.deps.lickManager?.emitEvent({type:`jshd`,jshdName:t,jshdRestarts:e.restarts,resultPath:u(t),preview:n,timestamp:new Date(this.now()).toISOString(),body:{kind:`jshd`,name:t,reason:`crash-loop`,restarts:e.restarts}})}enqueueLog(e,t){let n=(this.logQueues.get(e)??Promise.resolve()).then(()=>this.tee(e,t)).catch(()=>void 0);return this.logQueues.set(e,n),n}async flushLogs(e){let t=this.logQueues.get(e);t&&(await t.catch(()=>void 0),this.logQueues.delete(e))}async tee(e,t){try{await b(this.deps.fs,e,t)}catch(t){E.warn(`failed to tee jshd log`,{name:e,error:t instanceof Error?t.message:String(t)})}}pmConfig(){return{processManager:this.deps.processManager,owner:{kind:`jshd`}}}syncJob(e){T.upsert({id:O(e.record.name),kind:`jshd`,pid:e.pid,argv:e.record.argv,status:e.state,startedAt:e.startedAt??this.now(),restarts:e.restarts})}toStatus(e){let t=this.now();return{name:e.record.name,pid:e.pid,state:e.state,restarts:e.restarts,uptimeMs:e.startedAt!==null&&e.state===`running`?t-e.startedAt:null,enabled:e.record.enabled,restart:e.record.restart,argv:e.record.argv,cwd:e.record.cwd,durable:this.isDurable(),lastExitCode:e.lastExitCode}}now(){return this.deps.now?.()??Date.now()}};function O(e){return`jshd:${e}`}function k(e,t){return e<=0?Promise.resolve():t?.aborted?Promise.reject(A()):new Promise((n,r)=>{let i=setTimeout(()=>{t?.removeEventListener(`abort`,a),n()},e),a=()=>{clearTimeout(i),r(A())};t?.addEventListener(`abort`,a,{once:!0})})}function A(){let e=Error(`aborted`);return e.name=`AbortError`,e}let j=null;function M(e){return j||(e?(j=new D(e),j):null)}function N(e){return j||=new D(e),j}export{_ as a,x as i,N as n,f as o,y as r,s,M as t};
@@ -1 +1 @@
1
- import{a as e}from"./bridge-protocol-C52CnDIj.js";import{n as t}from"./clipboard-eqmn97SP.js";import{n}from"./icons-BUdZEBvI.js";import{A as r,D as i,M as a,N as o,O as s,j as c,k as l}from"./wc-live-jg9LW9uz.js";function u(e){let t=[{id:`browser`,label:`Browser`},{id:`iphone`,label:`iPhone`},{id:`terminal`,label:`Terminal`}];return e>0&&t.unshift({id:`status`,label:`Status`,badge:e}),t}function d(e){return e>0?`status`:`browser`}function f(e){let t;try{t=new URL(e)}catch{return e}let n=t.pathname.split(`/`),r=n.lastIndexOf(`join`)+1;return r===0||r>=n.length||!n[r]?e:(n[r]=`•`.repeat(8),`${t.origin}${n.join(`/`)}${t.search}${t.hash}`)}function p(e){return`slicc ${e} follow bash -c`}var m=e;function h(e){try{return new URL(e).origin}catch{return m}}function g(e){return`curl -fsSL ${h(e)}/install-cli | sh`}function _(e){return`irm ${h(e)}/install-cli.ps1 | iex`}function v(e){switch(e){case`browser`:return[`Open Sliccy in the other browser, click the avatar, and choose “Connect to another browser”.`,`Paste the join link there.`];case`iphone`:return[`In the Sliccy app, paste the join link into Settings → Join link.`,`Signed in to the same iCloud account? The session is already listed under iCloud Sessions — no link needed.`];case`terminal`:return[`Lend a machine to this session — run these in its terminal:`,`The agent can then run commands on that machine as you.`]}}function y(e){return e===0?`Nothing connected yet.`:`${e} ${e===1?`device is`:`devices are`} connected.`}function b(e){return e===0?`Revoke link? The old link stops working.`:`Revoke link? ${e} connected ${e===1?`device`:`devices`} will be disconnected.`}var x=`font-family: var(--s2-font-mono); font-size: 11px; color: var(--s2-content-default); word-break: break-all; padding: 8px 12px; background: var(--s2-bg-sunken); border-radius: var(--s2-radius-default); border: 1px solid var(--s2-border-subtle);`,S=`font-size: 11px; color: var(--s2-content-secondary);`,C=`font-size: 12px; color: var(--s2-content-default);`,w=`flex: 0 0 auto; width: auto; padding: 8px 14px;`;function T(e,t,n){let r=document.createElement(e);return t&&(r.style.cssText=t),n!=null&&(r.textContent=n),r}function E(e,t,n=`normal`){e.statusEl.textContent=t,e.statusEl.style.color=n===`error`?`var(--slicc-cone)`:`var(--s2-content-secondary)`}async function D(e,n,r){await t(n)?E(e,r):E(e,`Couldn’t copy. Select the text and copy it manually.`,`error`)}async function O(e){let{onReset:t}=e.options,n=e.revokeBtn;if(!(!t||!n)){if(!e.revokeArmed){e.revokeArmed=!0,n.textContent=b(e.followers.length),k(n,!0);return}n.disabled=!0,e.doneBtn.disabled=!0,E(e,`Revoking the join link…`);try{await t(),E(e,`Join link revoked. Enable sharing from the avatar menu to get a new one.`),e.urlRevealed=!1,n.textContent=`Revoked`,e.doneBtn.disabled=!1,L(e)}catch(t){E(e,`Revoke failed: ${t instanceof Error?t.message:String(t)}`,`error`),e.revokeArmed=!1,n.textContent=`Revoke link`,k(n,!1),n.disabled=!1,e.doneBtn.disabled=!1}}}function k(e,t){e.dataset.armed=t?`1`:`0`,e.style.background=t?`var(--s2-negative)`:``,e.style.borderColor=t?`transparent`:``,e.style.color=t?`#fff`:``}function A(e){let t=T(`div`),n=T(`button`,`margin-bottom: 8px;`,`Copy join link`);n.className=`dialog__btn dialog__btn--secondary`,n.dataset.action=`copy-link`,n.addEventListener(`click`,()=>{D(e,e.options.joinUrl,`Join link copied.`)}),t.appendChild(n);let r=T(`div`,`display: flex; align-items: center; gap: 8px;`),i=T(`div`,`${x} flex: 1 1 auto; min-width: 0; color: var(--s2-content-secondary);`);i.dataset.joinUrl=`1`,i.textContent=e.urlRevealed?e.options.joinUrl:f(e.options.joinUrl);let a=T(`button`,`${w}`,e.urlRevealed?`Hide`:`Show`);return a.className=`dialog__btn dialog__btn--secondary`,a.dataset.action=`toggle-url`,a.addEventListener(`click`,()=>{e.urlRevealed=!e.urlRevealed,L(e)}),r.append(i,a),t.appendChild(r),t.appendChild(T(`div`,`${S} margin-top: 8px;`,`Anyone with this link can drive this session.`)),t}function j(e,t){let n=T(`div`,`margin-bottom: 10px;`);n.appendChild(T(`div`,`${S} margin-bottom: 4px;`,t.caption));let r=T(`div`,`${x} margin-bottom: 6px;`,t.command);r.dataset.command=t.action,n.appendChild(r);let i=T(`button`,`margin-bottom: 0;`,t.copyLabel);return i.className=`dialog__btn dialog__btn--secondary`,i.dataset.action=t.action,i.addEventListener(`click`,()=>{D(e,t.copyValue??t.command,t.okMessage)}),n.appendChild(i),n}function M(e,t){let n=T(`div`),{joinUrl:r}=e.options,i=p(r),a=e.urlRevealed?i:p(f(r));n.appendChild(j(e,{caption:`1. Install the slicc CLI (skip if you already have it):`,command:g(r),action:`copy-install`,copyLabel:`Copy install command`,okMessage:`Install command copied.`})),n.appendChild(T(`div`,`${S} margin: -6px 0 12px;`,`Windows: ${_(r)}`)),n.appendChild(j(e,{caption:`2. Connect that machine to this session:`,command:a,copyValue:i,action:`copy-command`,copyLabel:`Copy command`,okMessage:`Command copied.`}));let o=T(`button`,`${w} margin-bottom: 8px;`,e.urlRevealed?`Hide link`:`Show link`);return o.className=`dialog__btn dialog__btn--secondary`,o.dataset.action=`toggle-url`,o.addEventListener(`click`,()=>{e.urlRevealed=!e.urlRevealed,L(e)}),n.appendChild(o),n.appendChild(T(`div`,`${S} margin-bottom: 0;`,`\u26a0 ${t}`)),n}function N(e,t){let n=T(`div`),[r,i]=v(t);return n.appendChild(T(`div`,`${C} line-height: 1.5; margin-bottom: 6px;`,r)),t===`terminal`?(n.appendChild(M(e,i)),n):(n.appendChild(T(`div`,`${S} margin-bottom: 10px;`,i)),n.appendChild(A(e)),n)}function P(e){let t=T(`div`,`display: grid; grid-template-columns: 16px 1fr auto; gap: 8px; align-items: start;`);t.dataset.follower=e.runtimeId;let i=T(`span`,`display: flex; margin-top: 2px; color: var(--s2-content-secondary);`);i.appendChild(n(r(e),{size:14})),t.appendChild(i);let u=T(`div`,`display: flex; flex-direction: column; gap: 2px; min-width: 0;`);u.appendChild(T(`div`,`${C} font-weight: 500;`,o(e)));let d=l(e);d&&u.appendChild(T(`div`,`${S} overflow-wrap: anywhere;`,d));let f=s(e);if(f.length>0){let e=T(`div`,`display: flex; gap: 4px; flex-wrap: wrap; margin-top: 2px;`);for(let t of f)e.appendChild(T(`span`,`padding: 1px 6px; border-radius: 9999px; background: var(--s2-bg-layer-1); border: 1px solid var(--s2-border-subtle); font-size: 10px; font-weight: 600; color: var(--s2-content-secondary);`,t));u.appendChild(e)}t.appendChild(u);let p=a(e),m=p===`active`?`var(--s2-positive)`:p===`warn`?`var(--s2-notice)`:`var(--s2-content-tertiary)`,h=T(`div`,`display: flex; align-items: center; gap: 5px; ${S} white-space: nowrap;`);return h.appendChild(T(`span`,`width: 6px; height: 6px; border-radius: 50%; flex: 0 0 auto; background: ${m};`)),h.appendChild(T(`span`,void 0,c(e))),t.appendChild(h),t}function F(e){let t=T(`div`,`display: flex; flex-direction: column; gap: 10px;`);for(let n of e.followers)t.appendChild(P(n));return e.followers.length===0&&t.appendChild(T(`div`,`font-size: 12px; color: var(--s2-content-secondary);`,`Nothing connected right now.`)),t}function I(e,t,n){let r=t===e.activeTab,i=T(`button`,`flex: 0 0 auto; padding: 4px 10px; border-radius: 9999px; font-size: 12px; cursor: pointer; border: 1px solid ${r?`var(--s2-border-subtle)`:`transparent`}; background: ${r?`var(--s2-bg-layer-1)`:`transparent`}; color: ${r?`var(--s2-content-default)`:`var(--s2-content-secondary)`};`,n);return i.type=`button`,i.setAttribute(`role`,`tab`),i.setAttribute(`aria-selected`,String(r)),i.dataset.tab=t,i.addEventListener(`click`,()=>{e.activeTab=t,L(e)}),i}function L(e){let t=u(e.followers.length);t.some(t=>t.id===e.activeTab)||(e.activeTab=d(0)),e.tabsRow.replaceChildren(...t.map(t=>I(e,t.id,t.badge==null?t.label:`${t.label} · ${t.badge}`))),e.body.replaceChildren(e.activeTab===`status`?F(e):N(e,e.activeTab)),e.summaryEl.textContent=y(e.followers.length),e.revokeBtn&&!e.revokeArmed&&e.revokeBtn.textContent!==`Revoked`&&(e.revokeBtn.textContent=`Revoke link`,k(e.revokeBtn,!1))}function R(e){let t=T(`div`);t.className=`dialog-overlay`,t.dataset.syncDialog=`1`;let n=T(`div`);n.className=`dialog`,n.setAttribute(`role`,`dialog`),n.setAttribute(`aria-modal`,`true`),n.setAttribute(`aria-label`,`Session sharing`),t.appendChild(n);let r=T(`div`,void 0,`Session sharing`);r.className=`dialog__title`;let i=T(`div`,`display: flex; gap: 4px; margin-bottom: 12px; flex-wrap: wrap;`);i.setAttribute(`role`,`tablist`);let a=T(`div`,`margin-bottom: 12px;`);a.setAttribute(`role`,`tabpanel`);let o=T(`div`,`font-size: 12px; margin-bottom: 8px; min-height: 16px;`);o.setAttribute(`role`,`status`),o.setAttribute(`aria-live`,`polite`);let s=T(`div`,`${S} margin-bottom: 8px;`),c=T(`button`,void 0,`Done`);c.className=`dialog__btn`,n.append(r,i,a,o,s,c);let l=e.followers??[];return{options:e,followers:l,activeTab:e.initialTab??d(l.length),urlRevealed:!1,revokeArmed:!1,overlay:t,tabsRow:i,body:a,statusEl:o,summaryEl:s,doneBtn:c,revokeBtn:null}}var z=null;function B(e){z?.(),document.querySelectorAll(`.dialog-overlay[data-sync-dialog]`).forEach(e=>{e.remove()});let t=R(e),n=t.overlay.firstElementChild;if(e.onReset){let e=T(`button`,`margin-top: 8px;`,`Revoke link`);e.className=`dialog__btn dialog__btn--secondary`,e.dataset.action=`revoke`,e.addEventListener(`click`,()=>{O(t)}),n.appendChild(e),t.revokeBtn=e}let r=e=>{t.followers=e.detail?.followers??[],L(t)},a=e=>{e.key===`Escape`&&o()};function o(){window.removeEventListener(i,r),document.removeEventListener(`keydown`,a),t.overlay.remove(),z===o&&(z=null)}t.doneBtn.addEventListener(`click`,()=>o()),t.overlay.addEventListener(`click`,e=>{e.target===t.overlay&&o()}),window.addEventListener(i,r),document.addEventListener(`keydown`,a),z=o,e.copied&&E(t,`Join link copied to clipboard.`),L(t),document.body.appendChild(t.overlay)}export{B as showSyncEnabledDialog};
1
+ import{a as e}from"./bridge-protocol-C52CnDIj.js";import{n as t}from"./clipboard-eqmn97SP.js";import{n}from"./icons-BUdZEBvI.js";import{A as r,D as i,M as a,N as o,O as s,j as c,k as l}from"./wc-live-aEmb1wYY.js";function u(e){let t=[{id:`browser`,label:`Browser`},{id:`iphone`,label:`iPhone`},{id:`terminal`,label:`Terminal`}];return e>0&&t.unshift({id:`status`,label:`Status`,badge:e}),t}function d(e){return e>0?`status`:`browser`}function f(e){let t;try{t=new URL(e)}catch{return e}let n=t.pathname.split(`/`),r=n.lastIndexOf(`join`)+1;return r===0||r>=n.length||!n[r]?e:(n[r]=`•`.repeat(8),`${t.origin}${n.join(`/`)}${t.search}${t.hash}`)}function p(e){return`slicc ${e} follow bash -c`}var m=e;function h(e){try{return new URL(e).origin}catch{return m}}function g(e){return`curl -fsSL ${h(e)}/install-cli | sh`}function _(e){return`irm ${h(e)}/install-cli.ps1 | iex`}function v(e){switch(e){case`browser`:return[`Open Sliccy in the other browser, click the avatar, and choose “Connect to another browser”.`,`Paste the join link there.`];case`iphone`:return[`In the Sliccy app, paste the join link into Settings → Join link.`,`Signed in to the same iCloud account? The session is already listed under iCloud Sessions — no link needed.`];case`terminal`:return[`Lend a machine to this session — run these in its terminal:`,`The agent can then run commands on that machine as you.`]}}function y(e){return e===0?`Nothing connected yet.`:`${e} ${e===1?`device is`:`devices are`} connected.`}function b(e){return e===0?`Revoke link? The old link stops working.`:`Revoke link? ${e} connected ${e===1?`device`:`devices`} will be disconnected.`}var x=`font-family: var(--s2-font-mono); font-size: 11px; color: var(--s2-content-default); word-break: break-all; padding: 8px 12px; background: var(--s2-bg-sunken); border-radius: var(--s2-radius-default); border: 1px solid var(--s2-border-subtle);`,S=`font-size: 11px; color: var(--s2-content-secondary);`,C=`font-size: 12px; color: var(--s2-content-default);`,w=`flex: 0 0 auto; width: auto; padding: 8px 14px;`;function T(e,t,n){let r=document.createElement(e);return t&&(r.style.cssText=t),n!=null&&(r.textContent=n),r}function E(e,t,n=`normal`){e.statusEl.textContent=t,e.statusEl.style.color=n===`error`?`var(--slicc-cone)`:`var(--s2-content-secondary)`}async function D(e,n,r){await t(n)?E(e,r):E(e,`Couldn’t copy. Select the text and copy it manually.`,`error`)}async function O(e){let{onReset:t}=e.options,n=e.revokeBtn;if(!(!t||!n)){if(!e.revokeArmed){e.revokeArmed=!0,n.textContent=b(e.followers.length),k(n,!0);return}n.disabled=!0,e.doneBtn.disabled=!0,E(e,`Revoking the join link…`);try{await t(),E(e,`Join link revoked. Enable sharing from the avatar menu to get a new one.`),e.urlRevealed=!1,n.textContent=`Revoked`,e.doneBtn.disabled=!1,L(e)}catch(t){E(e,`Revoke failed: ${t instanceof Error?t.message:String(t)}`,`error`),e.revokeArmed=!1,n.textContent=`Revoke link`,k(n,!1),n.disabled=!1,e.doneBtn.disabled=!1}}}function k(e,t){e.dataset.armed=t?`1`:`0`,e.style.background=t?`var(--s2-negative)`:``,e.style.borderColor=t?`transparent`:``,e.style.color=t?`#fff`:``}function A(e){let t=T(`div`),n=T(`button`,`margin-bottom: 8px;`,`Copy join link`);n.className=`dialog__btn dialog__btn--secondary`,n.dataset.action=`copy-link`,n.addEventListener(`click`,()=>{D(e,e.options.joinUrl,`Join link copied.`)}),t.appendChild(n);let r=T(`div`,`display: flex; align-items: center; gap: 8px;`),i=T(`div`,`${x} flex: 1 1 auto; min-width: 0; color: var(--s2-content-secondary);`);i.dataset.joinUrl=`1`,i.textContent=e.urlRevealed?e.options.joinUrl:f(e.options.joinUrl);let a=T(`button`,`${w}`,e.urlRevealed?`Hide`:`Show`);return a.className=`dialog__btn dialog__btn--secondary`,a.dataset.action=`toggle-url`,a.addEventListener(`click`,()=>{e.urlRevealed=!e.urlRevealed,L(e)}),r.append(i,a),t.appendChild(r),t.appendChild(T(`div`,`${S} margin-top: 8px;`,`Anyone with this link can drive this session.`)),t}function j(e,t){let n=T(`div`,`margin-bottom: 10px;`);n.appendChild(T(`div`,`${S} margin-bottom: 4px;`,t.caption));let r=T(`div`,`${x} margin-bottom: 6px;`,t.command);r.dataset.command=t.action,n.appendChild(r);let i=T(`button`,`margin-bottom: 0;`,t.copyLabel);return i.className=`dialog__btn dialog__btn--secondary`,i.dataset.action=t.action,i.addEventListener(`click`,()=>{D(e,t.copyValue??t.command,t.okMessage)}),n.appendChild(i),n}function M(e,t){let n=T(`div`),{joinUrl:r}=e.options,i=p(r),a=e.urlRevealed?i:p(f(r));n.appendChild(j(e,{caption:`1. Install the slicc CLI (skip if you already have it):`,command:g(r),action:`copy-install`,copyLabel:`Copy install command`,okMessage:`Install command copied.`})),n.appendChild(T(`div`,`${S} margin: -6px 0 12px;`,`Windows: ${_(r)}`)),n.appendChild(j(e,{caption:`2. Connect that machine to this session:`,command:a,copyValue:i,action:`copy-command`,copyLabel:`Copy command`,okMessage:`Command copied.`}));let o=T(`button`,`${w} margin-bottom: 8px;`,e.urlRevealed?`Hide link`:`Show link`);return o.className=`dialog__btn dialog__btn--secondary`,o.dataset.action=`toggle-url`,o.addEventListener(`click`,()=>{e.urlRevealed=!e.urlRevealed,L(e)}),n.appendChild(o),n.appendChild(T(`div`,`${S} margin-bottom: 0;`,`\u26a0 ${t}`)),n}function N(e,t){let n=T(`div`),[r,i]=v(t);return n.appendChild(T(`div`,`${C} line-height: 1.5; margin-bottom: 6px;`,r)),t===`terminal`?(n.appendChild(M(e,i)),n):(n.appendChild(T(`div`,`${S} margin-bottom: 10px;`,i)),n.appendChild(A(e)),n)}function P(e){let t=T(`div`,`display: grid; grid-template-columns: 16px 1fr auto; gap: 8px; align-items: start;`);t.dataset.follower=e.runtimeId;let i=T(`span`,`display: flex; margin-top: 2px; color: var(--s2-content-secondary);`);i.appendChild(n(r(e),{size:14})),t.appendChild(i);let u=T(`div`,`display: flex; flex-direction: column; gap: 2px; min-width: 0;`);u.appendChild(T(`div`,`${C} font-weight: 500;`,o(e)));let d=l(e);d&&u.appendChild(T(`div`,`${S} overflow-wrap: anywhere;`,d));let f=s(e);if(f.length>0){let e=T(`div`,`display: flex; gap: 4px; flex-wrap: wrap; margin-top: 2px;`);for(let t of f)e.appendChild(T(`span`,`padding: 1px 6px; border-radius: 9999px; background: var(--s2-bg-layer-1); border: 1px solid var(--s2-border-subtle); font-size: 10px; font-weight: 600; color: var(--s2-content-secondary);`,t));u.appendChild(e)}t.appendChild(u);let p=a(e),m=p===`active`?`var(--s2-positive)`:p===`warn`?`var(--s2-notice)`:`var(--s2-content-tertiary)`,h=T(`div`,`display: flex; align-items: center; gap: 5px; ${S} white-space: nowrap;`);return h.appendChild(T(`span`,`width: 6px; height: 6px; border-radius: 50%; flex: 0 0 auto; background: ${m};`)),h.appendChild(T(`span`,void 0,c(e))),t.appendChild(h),t}function F(e){let t=T(`div`,`display: flex; flex-direction: column; gap: 10px;`);for(let n of e.followers)t.appendChild(P(n));return e.followers.length===0&&t.appendChild(T(`div`,`font-size: 12px; color: var(--s2-content-secondary);`,`Nothing connected right now.`)),t}function I(e,t,n){let r=t===e.activeTab,i=T(`button`,`flex: 0 0 auto; padding: 4px 10px; border-radius: 9999px; font-size: 12px; cursor: pointer; border: 1px solid ${r?`var(--s2-border-subtle)`:`transparent`}; background: ${r?`var(--s2-bg-layer-1)`:`transparent`}; color: ${r?`var(--s2-content-default)`:`var(--s2-content-secondary)`};`,n);return i.type=`button`,i.setAttribute(`role`,`tab`),i.setAttribute(`aria-selected`,String(r)),i.dataset.tab=t,i.addEventListener(`click`,()=>{e.activeTab=t,L(e)}),i}function L(e){let t=u(e.followers.length);t.some(t=>t.id===e.activeTab)||(e.activeTab=d(0)),e.tabsRow.replaceChildren(...t.map(t=>I(e,t.id,t.badge==null?t.label:`${t.label} · ${t.badge}`))),e.body.replaceChildren(e.activeTab===`status`?F(e):N(e,e.activeTab)),e.summaryEl.textContent=y(e.followers.length),e.revokeBtn&&!e.revokeArmed&&e.revokeBtn.textContent!==`Revoked`&&(e.revokeBtn.textContent=`Revoke link`,k(e.revokeBtn,!1))}function R(e){let t=T(`div`);t.className=`dialog-overlay`,t.dataset.syncDialog=`1`;let n=T(`div`);n.className=`dialog`,n.setAttribute(`role`,`dialog`),n.setAttribute(`aria-modal`,`true`),n.setAttribute(`aria-label`,`Session sharing`),t.appendChild(n);let r=T(`div`,void 0,`Session sharing`);r.className=`dialog__title`;let i=T(`div`,`display: flex; gap: 4px; margin-bottom: 12px; flex-wrap: wrap;`);i.setAttribute(`role`,`tablist`);let a=T(`div`,`margin-bottom: 12px;`);a.setAttribute(`role`,`tabpanel`);let o=T(`div`,`font-size: 12px; margin-bottom: 8px; min-height: 16px;`);o.setAttribute(`role`,`status`),o.setAttribute(`aria-live`,`polite`);let s=T(`div`,`${S} margin-bottom: 8px;`),c=T(`button`,void 0,`Done`);c.className=`dialog__btn`,n.append(r,i,a,o,s,c);let l=e.followers??[];return{options:e,followers:l,activeTab:e.initialTab??d(l.length),urlRevealed:!1,revokeArmed:!1,overlay:t,tabsRow:i,body:a,statusEl:o,summaryEl:s,doneBtn:c,revokeBtn:null}}var z=null;function B(e){z?.(),document.querySelectorAll(`.dialog-overlay[data-sync-dialog]`).forEach(e=>{e.remove()});let t=R(e),n=t.overlay.firstElementChild;if(e.onReset){let e=T(`button`,`margin-top: 8px;`,`Revoke link`);e.className=`dialog__btn dialog__btn--secondary`,e.dataset.action=`revoke`,e.addEventListener(`click`,()=>{O(t)}),n.appendChild(e),t.revokeBtn=e}let r=e=>{t.followers=e.detail?.followers??[],L(t)},a=e=>{e.key===`Escape`&&o()};function o(){window.removeEventListener(i,r),document.removeEventListener(`keydown`,a),t.overlay.remove(),z===o&&(z=null)}t.doneBtn.addEventListener(`click`,()=>o()),t.overlay.addEventListener(`click`,e=>{e.target===t.overlay&&o()}),window.addEventListener(i,r),document.addEventListener(`keydown`,a),z=o,e.copied&&E(t,`Join link copied to clipboard.`),L(t),document.body.appendChild(t.overlay)}export{B as showSyncEnabledDialog};
@@ -1 +1 @@
1
- import{ct as e}from"./wc-shell-wjSyYHqZ.js";import"./proxied-fetch-4VBgrEIu.js";import{n as t}from"./runtime-env-Dlaokqg1.js";import{s as n,t as r}from"./api-endpoint-DuEQRZ4g.js";import{t as i}from"./shared-DSEuryGJ.js";var a=1e3;function o(e=()=>Date.now()){let t=new Map,n=null,r=0,i=()=>{let e=0,n=0;for(let r of t.values())e+=r.loaded,n+=r.total;return{loaded:e,total:n}};return{update(a,o,s){t.set(a,{loaded:Math.max(0,o),total:Math.max(t.get(a)?.total??0,s,o)}),n===null&&(n=e(),r=i().loaded)},complete(e){let n=t.get(e);n&&(n.loaded=n.total)},snapshot(){let{loaded:t,total:o}=i(),s=null;if(n!==null&&o>0&&t<o){let i=e()-n,c=t-r;if(i>=a&&c>0){let e=c/i;s=(o-t)/e/1e3}}return o>0&&t>=o&&(s=0),{loaded:t,total:o,etaSeconds:s}}}}var s=`onnx-community/whisper-tiny`,c=`onnx-community/Kokoro-82M-v1.0-ONNX`,l=Symbol.for(`slicc.transformers-env.fetch-wrapped`),u=t,d=`/workspace/node_modules/onnxruntime-web/dist/`,f=`/workspace/models/`;function p(e){return typeof e==`string`?e:e instanceof URL?e.toString():e.url}function m(e){let t=p(e);return t.startsWith(`http://`)||t.startsWith(`https://`)}function h(){return globalThis.location?.origin??null}function g(e){let t=h();if(!t)return!1;try{return new URL(p(e)).origin===t}catch{return!1}}async function _(e,t){let i=p(e),a={};t?.headers&&new Headers(t.headers).forEach((e,t)=>{a[t]=e});let o=r({...a,"X-Target-URL":i}),s=(t?.method??`GET`).toUpperCase(),c={method:s,headers:o,cache:`no-store`};return t?.body&&s!==`GET`&&s!==`HEAD`&&(c.body=t.body),fetch(n(`/api/fetch-proxy`),c)}var v=3e4,y=[`ort-wasm-simd-threaded.jsep.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.31.0-dev.20260914-8d85527a0/dist/ort-wasm-simd-threaded.jsep.wasm`,`ort-wasm-simd-threaded.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.31.0-dev.20260914-8d85527a0/dist/ort.wasm`,`ort-wasm-simd-threaded.asyncify.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.31.0-dev.20260914-8d85527a0/dist/ort-wasm-simd-threaded.asyncify.wasm`,`ort-wasm-simd-threaded.jspi.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.31.0-dev.20260914-8d85527a0/dist/ort-wasm-simd-threaded.jspi.wasm`],b=Symbol.for(`slicc.transformers-env.vfs-enoent`);function x(e){if(typeof BroadcastChannel>`u`)return Promise.reject(Error(`Cannot read VFS path ${e}: BroadcastChannel unavailable in this realm`));let t=new BroadcastChannel(`preview-vfs`),n=`tfx-${Date.now()}-${Math.random().toString(36).slice(2)}`;return new Promise((r,i)=>{let a=e=>{t.removeEventListener(`message`,c),t.close(),e()},o,s=()=>{clearTimeout(o),o=setTimeout(()=>{let t=Error(`ENOENT: ${e} (preview-vfs responder timed out)`);t[b]=!0,a(()=>i(t))},v)};s();let c=t=>{let c=t.data;if(!c||c.id!==n)return;if(c.type===`preview-vfs-start`){s();return}if(c.type!==`preview-vfs-response`)return;if(clearTimeout(o),typeof c.error==`string`){let e=Error(c.error);c.error.includes(`ENOENT`)&&(e[b]=!0),a(()=>i(e));return}let l=c.content;if(l instanceof Uint8Array){a(()=>r(l));return}if(typeof l==`string`){a(()=>r(new TextEncoder().encode(l)));return}a(()=>i(Error(`Unexpected empty preview-vfs response for ${e}`)))};t.addEventListener(`message`,c),t.postMessage({type:`preview-vfs-read`,id:n,path:e,asText:!1})})}function S(e){return!!e?.[b]}function C(e){let t=new ArrayBuffer(e.byteLength),n=new Uint8Array(t);return n.set(e),n}function w(e,t){return!t||!e.startsWith(t)?null:`${f}${e.slice(t.length).split(`?`)[0].split(`#`)[0]}`}async function T(e,t){let n;try{n=await x(e)}catch(t){if(S(t))return new Response(`Not found: ${e}`,{status:404,headers:{"Content-Type":`text/plain`}});throw t}let r=i(e);return(t?.headers?new Headers(t.headers).get(`range`):null)===`bytes=0-0`?new Response(null,{status:206,headers:{"Content-Type":r,"Content-Length":String(n.byteLength),"Content-Range":`bytes 0-0/${n.byteLength}`}}):new Response(C(n),{status:200,headers:{"Content-Type":r,"Content-Length":String(n.byteLength)}})}var E=null;async function D(){if(typeof URL>`u`||typeof URL.createObjectURL!=`function`)throw Error(`onnxruntime-web blob URLs require URL.createObjectURL (browser realm only)`);let e={};if(await Promise.all(y.map(async t=>{try{let n=await x(`${d}${t}`),r=new Blob([C(n)],{type:i(t)});e[t]=URL.createObjectURL(r)}catch(e){if(!S(e))throw e}})),Object.keys(e).length===0)throw Error("onnxruntime-web is not installed — run `ipk add onnxruntime-web` to stage the wasm runtime in /workspace/node_modules/.");return e}function O(){return E||=D(),E}var k=`slicc_ort_num_threads`;function A(e){if(!e.isolated)return 1;let t=e.hardwareConcurrency,n=typeof t==`number`&&Number.isFinite(t)&&t>=1,r=n?Math.min(4,Math.floor(t)):4,i=e.override==null?NaN:Number.parseInt(e.override,10);return Number.isFinite(i)&&i>=1?Math.max(1,Math.min(r,i)):n?Math.max(1,r):1}function j(){let e=null;try{e=globalThis.localStorage?.getItem(`slicc_ort_num_threads`)??null}catch{}let t={isolated:globalThis.crossOriginIsolated===!0,hardwareConcurrency:globalThis.navigator?.hardwareConcurrency,override:e},n=A(t);return e!=null&&t.isolated&&console.warn(`[speech] ort-web numThreads=${n} forced by localStorage.${k}=${JSON.stringify(e)} — this persists until removed`),n}function M(t){let n=t.backends?.onnx?.wasm;if(n&&(n.wasmPaths=e(d),n.numThreads=j()),t.allowRemoteModels=!1,t.allowLocalModels=!0,t.localModelPath=e(f),t.useBrowserCache=!1,u())return;t.allowRemoteModels=!0,t.remoteHost=t.localModelPath,t.remotePathTemplate=`{model}/`,n&&O().then(e=>{n.wasmPaths=e},()=>{});let r=t.fetch;if(r?.[l])return;let i=r,a=t.localModelPath,o=async(e,t)=>{let n=w(p(e),a);return n===null?!m(e)||g(e)?i?i(e,t):fetch(e,t):_(e,t):T(n,t)};o[l]=!0,t.fetch=o}async function N(e){let t=`weights for ${e} are missing — run \`hf download ${e}\` to fetch them into /workspace/models/.`;try{await x(`${f}${e}/config.json`)}catch(e){if(S(e))throw Error(t);let n=e instanceof Error?e.message:String(e);throw Error(`${t} (probe failed: ${n})`)}}export{s as a,c as i,M as n,o,O as r,N as t};
1
+ import{ct as e}from"./wc-shell-fIEX0Fr7.js";import"./proxied-fetch-4VBgrEIu.js";import{n as t}from"./runtime-env-Dlaokqg1.js";import{s as n,t as r}from"./api-endpoint-DuEQRZ4g.js";import{t as i}from"./shared-DSEuryGJ.js";var a=1e3;function o(e=()=>Date.now()){let t=new Map,n=null,r=0,i=()=>{let e=0,n=0;for(let r of t.values())e+=r.loaded,n+=r.total;return{loaded:e,total:n}};return{update(a,o,s){t.set(a,{loaded:Math.max(0,o),total:Math.max(t.get(a)?.total??0,s,o)}),n===null&&(n=e(),r=i().loaded)},complete(e){let n=t.get(e);n&&(n.loaded=n.total)},snapshot(){let{loaded:t,total:o}=i(),s=null;if(n!==null&&o>0&&t<o){let i=e()-n,c=t-r;if(i>=a&&c>0){let e=c/i;s=(o-t)/e/1e3}}return o>0&&t>=o&&(s=0),{loaded:t,total:o,etaSeconds:s}}}}var s=`onnx-community/whisper-tiny`,c=`onnx-community/Kokoro-82M-v1.0-ONNX`,l=Symbol.for(`slicc.transformers-env.fetch-wrapped`),u=t,d=`/workspace/node_modules/onnxruntime-web/dist/`,f=`/workspace/models/`;function p(e){return typeof e==`string`?e:e instanceof URL?e.toString():e.url}function m(e){let t=p(e);return t.startsWith(`http://`)||t.startsWith(`https://`)}function h(){return globalThis.location?.origin??null}function g(e){let t=h();if(!t)return!1;try{return new URL(p(e)).origin===t}catch{return!1}}async function _(e,t){let i=p(e),a={};t?.headers&&new Headers(t.headers).forEach((e,t)=>{a[t]=e});let o=r({...a,"X-Target-URL":i}),s=(t?.method??`GET`).toUpperCase(),c={method:s,headers:o,cache:`no-store`};return t?.body&&s!==`GET`&&s!==`HEAD`&&(c.body=t.body),fetch(n(`/api/fetch-proxy`),c)}var v=3e4,y=[`ort-wasm-simd-threaded.jsep.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.31.0-dev.20260914-8d85527a0/dist/ort-wasm-simd-threaded.jsep.wasm`,`ort-wasm-simd-threaded.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.31.0-dev.20260914-8d85527a0/dist/ort.wasm`,`ort-wasm-simd-threaded.asyncify.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.31.0-dev.20260914-8d85527a0/dist/ort-wasm-simd-threaded.asyncify.wasm`,`ort-wasm-simd-threaded.jspi.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.31.0-dev.20260914-8d85527a0/dist/ort-wasm-simd-threaded.jspi.wasm`],b=Symbol.for(`slicc.transformers-env.vfs-enoent`);function x(e){if(typeof BroadcastChannel>`u`)return Promise.reject(Error(`Cannot read VFS path ${e}: BroadcastChannel unavailable in this realm`));let t=new BroadcastChannel(`preview-vfs`),n=`tfx-${Date.now()}-${Math.random().toString(36).slice(2)}`;return new Promise((r,i)=>{let a=e=>{t.removeEventListener(`message`,c),t.close(),e()},o,s=()=>{clearTimeout(o),o=setTimeout(()=>{let t=Error(`ENOENT: ${e} (preview-vfs responder timed out)`);t[b]=!0,a(()=>i(t))},v)};s();let c=t=>{let c=t.data;if(!c||c.id!==n)return;if(c.type===`preview-vfs-start`){s();return}if(c.type!==`preview-vfs-response`)return;if(clearTimeout(o),typeof c.error==`string`){let e=Error(c.error);c.error.includes(`ENOENT`)&&(e[b]=!0),a(()=>i(e));return}let l=c.content;if(l instanceof Uint8Array){a(()=>r(l));return}if(typeof l==`string`){a(()=>r(new TextEncoder().encode(l)));return}a(()=>i(Error(`Unexpected empty preview-vfs response for ${e}`)))};t.addEventListener(`message`,c),t.postMessage({type:`preview-vfs-read`,id:n,path:e,asText:!1})})}function S(e){return!!e?.[b]}function C(e){let t=new ArrayBuffer(e.byteLength),n=new Uint8Array(t);return n.set(e),n}function w(e,t){return!t||!e.startsWith(t)?null:`${f}${e.slice(t.length).split(`?`)[0].split(`#`)[0]}`}async function T(e,t){let n;try{n=await x(e)}catch(t){if(S(t))return new Response(`Not found: ${e}`,{status:404,headers:{"Content-Type":`text/plain`}});throw t}let r=i(e);return(t?.headers?new Headers(t.headers).get(`range`):null)===`bytes=0-0`?new Response(null,{status:206,headers:{"Content-Type":r,"Content-Length":String(n.byteLength),"Content-Range":`bytes 0-0/${n.byteLength}`}}):new Response(C(n),{status:200,headers:{"Content-Type":r,"Content-Length":String(n.byteLength)}})}var E=null;async function D(){if(typeof URL>`u`||typeof URL.createObjectURL!=`function`)throw Error(`onnxruntime-web blob URLs require URL.createObjectURL (browser realm only)`);let e={};if(await Promise.all(y.map(async t=>{try{let n=await x(`${d}${t}`),r=new Blob([C(n)],{type:i(t)});e[t]=URL.createObjectURL(r)}catch(e){if(!S(e))throw e}})),Object.keys(e).length===0)throw Error("onnxruntime-web is not installed — run `ipk add onnxruntime-web` to stage the wasm runtime in /workspace/node_modules/.");return e}function O(){return E||=D(),E}var k=`slicc_ort_num_threads`;function A(e){if(!e.isolated)return 1;let t=e.hardwareConcurrency,n=typeof t==`number`&&Number.isFinite(t)&&t>=1,r=n?Math.min(4,Math.floor(t)):4,i=e.override==null?NaN:Number.parseInt(e.override,10);return Number.isFinite(i)&&i>=1?Math.max(1,Math.min(r,i)):n?Math.max(1,r):1}function j(){let e=null;try{e=globalThis.localStorage?.getItem(`slicc_ort_num_threads`)??null}catch{}let t={isolated:globalThis.crossOriginIsolated===!0,hardwareConcurrency:globalThis.navigator?.hardwareConcurrency,override:e},n=A(t);return e!=null&&t.isolated&&console.warn(`[speech] ort-web numThreads=${n} forced by localStorage.${k}=${JSON.stringify(e)} — this persists until removed`),n}function M(t){let n=t.backends?.onnx?.wasm;if(n&&(n.wasmPaths=e(d),n.numThreads=j()),t.allowRemoteModels=!1,t.allowLocalModels=!0,t.localModelPath=e(f),t.useBrowserCache=!1,u())return;t.allowRemoteModels=!0,t.remoteHost=t.localModelPath,t.remotePathTemplate=`{model}/`,n&&O().then(e=>{n.wasmPaths=e},()=>{});let r=t.fetch;if(r?.[l])return;let i=r,a=t.localModelPath,o=async(e,t)=>{let n=w(p(e),a);return n===null?!m(e)||g(e)?i?i(e,t):fetch(e,t):_(e,t):T(n,t)};o[l]=!0,t.fetch=o}async function N(e){let t=`weights for ${e} are missing — run \`hf download ${e}\` to fetch them into /workspace/models/.`;try{await x(`${f}${e}/config.json`)}catch(e){if(S(e))throw Error(t);let n=e instanceof Error?e.message:String(e);throw Error(`${t} (probe failed: ${n})`)}}export{s as a,c as i,M as n,o,O as r,N as t};