sliccy 6.256.19 → 6.256.21

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 (141) hide show
  1. package/dist/ui/.vite/manifest.json +191 -191
  2. package/dist/ui/assets/{account-store-C6um0YPW.js → account-store--QH_gRlz.js} +1 -1
  3. package/dist/ui/assets/{account-store-DcnsleVv.js → account-store-CbKQrU_A.js} +1 -1
  4. package/dist/ui/assets/{adobe-6KkN_nv7.js → adobe-BBZZjXPq.js} +1 -1
  5. package/dist/ui/assets/{adobe-B0jHeR5S.js → adobe-D6tf-vd0.js} +1 -1
  6. package/dist/ui/assets/{agent-panels-DfgA8R43.js → agent-panels-DwoeuEZJ.js} +1 -1
  7. package/dist/ui/assets/{almost-bash-shell-headless-C1Lf_MMS.js → almost-bash-shell-headless-IexVAylq.js} +14 -14
  8. package/dist/ui/assets/{apply-layout-BGPfdSzk.js → apply-layout-DyJWDEg0.js} +1 -1
  9. package/dist/ui/assets/{azure-openai-DmUVAG9L.js → azure-openai-DfNYV355.js} +1 -1
  10. package/dist/ui/assets/{azure-openai-pWuMNG9M.js → azure-openai-mzyA6ec_.js} +1 -1
  11. package/dist/ui/assets/{bunny-probe-DpXkdbYB.js → bunny-probe-cUWPQ6lW.js} +1 -1
  12. package/dist/ui/assets/{bunny-run-rzX0F1nl.js → bunny-run-B37YZhan.js} +1 -1
  13. package/dist/ui/assets/{cdp-CPSnzyRg.js → cdp-D4hCZeiK.js} +3 -3
  14. package/dist/ui/assets/{cerebras-DFjBDkkf.js → cerebras-DCpB0UlY.js} +1 -1
  15. package/dist/ui/assets/{cerebras-orfSjH9T.js → cerebras-nIWXceol.js} +1 -1
  16. package/dist/ui/assets/{codemode-tool-Bjubrh1X.js → codemode-tool-BvKukYUa.js} +1 -1
  17. package/dist/ui/assets/{composer-speech-Cn9-Zzn2.js → composer-speech-tLlsFK5D.js} +1 -1
  18. package/dist/ui/assets/{connect-surface-D43D0p7K.js → connect-surface-XwtqAfeO.js} +1 -1
  19. package/dist/ui/assets/{directed-approval-DIP9tGOu.js → directed-approval-BHC1QE2R.js} +1 -1
  20. package/dist/ui/assets/{dist-DOjgJQZM.js → dist-Cqu6P8qf.js} +1 -1
  21. package/dist/ui/assets/{emscripten-vfs-hook-C_Yq_WAI.js → emscripten-vfs-hook-D27gwwXv.js} +1 -1
  22. package/dist/ui/assets/{fast-path-6ekMOXSI.js → fast-path-BHWue2Kr.js} +1 -1
  23. package/dist/ui/assets/{frozen-archive-writer-YCOD1fqb.js → frozen-archive-writer-Cixi7_NJ.js} +1 -1
  24. package/dist/ui/assets/{frozen-session-delete-WoQUijRl.js → frozen-session-delete-2eh2Yhbl.js} +1 -1
  25. package/dist/ui/assets/{frozen-session-identity-CUJ3SGDV.js → frozen-session-identity-DoWKIEpR.js} +1 -1
  26. package/dist/ui/assets/{gelatiere-unit-VC-Z6skV.js → gelatiere-unit-BqTcFkxk.js} +1 -1
  27. package/dist/ui/assets/{github-DjiuepHp.js → github-BhZHOxKc.js} +1 -1
  28. package/dist/ui/assets/{github-BfwYBNdU.js → github-DN2OBZNS.js} +1 -1
  29. package/dist/ui/assets/{github-copilot-Ca3wvuMg.js → github-copilot-CQhrDhDZ.js} +1 -1
  30. package/dist/ui/assets/{github-copilot-DKRsbcNT.js → github-copilot-Dgi-j2_O.js} +1 -1
  31. package/dist/ui/assets/{hear-CtfVj6JL.js → hear-BDUAwa28.js} +1 -1
  32. package/dist/ui/assets/{hidden-page-input-BZYPq1Fs.js → hidden-page-input-01CnfmMB.js} +1 -1
  33. package/dist/ui/assets/{hidden-page-input-Cp9ZPgBA.js → hidden-page-input-CBbLsDx2.js} +1 -1
  34. package/dist/ui/assets/{js-realm-worker-D-YXyqDf.js → js-realm-worker-CDJhvYJx.js} +2 -2
  35. package/dist/ui/assets/{jsh-executor-jaafnGEI.js → jsh-executor-BVFFU-rP.js} +3 -3
  36. package/dist/ui/assets/{kernel-worker-DjefE-EG.js → kernel-worker-965_891X.js} +9 -9
  37. package/dist/ui/assets/{lick-ws-bridge-jXOA4Jgg.js → lick-ws-bridge-D4PsA45A.js} +1 -1
  38. package/dist/ui/assets/{lick-ws-bridge-B5njq5fs.js → lick-ws-bridge-DuAP_Xb5.js} +1 -1
  39. package/dist/ui/assets/{live-session-curation-B60pJiw_.js → live-session-curation-BB61f9E8.js} +1 -1
  40. package/dist/ui/assets/{live-session-curation-BOrs0Nrl.js → live-session-curation-CGxamyw3.js} +1 -1
  41. package/dist/ui/assets/{live-session-snapshot-CApqdYaI.js → live-session-snapshot-BDyBgtvN.js} +1 -1
  42. package/dist/ui/assets/{local-llm-DuQTThDU.js → local-llm-CEQQXhGE.js} +1 -1
  43. package/dist/ui/assets/{local-llm-4CuArCpN.js → local-llm-Cy5E3lJo.js} +1 -1
  44. package/dist/ui/assets/{main-CILyCK1y.js → main-C8hdX5_E.js} +3 -3
  45. package/dist/ui/assets/{main-cherry-sJDvZx8w.js → main-cherry-ykXNeN9-.js} +1 -1
  46. package/dist/ui/assets/{mcp-command-WDwETVym.js → mcp-command-w6OUcgfO.js} +10 -10
  47. package/dist/ui/assets/{memory-curation-seam-_oeOmhzw.js → memory-curation-seam-C4r6A-jq.js} +1 -1
  48. package/dist/ui/assets/{memory-write-execute-89twFcQB.js → memory-write-execute-C_0rryC9.js} +1 -1
  49. package/dist/ui/assets/{merge-folded-cost-into-frozen-CD1e6CBw.js → merge-folded-cost-into-frozen-C9I1ykhe.js} +1 -1
  50. package/dist/ui/assets/{new-session-cSLBXZij.js → new-session-k7LcBmG5.js} +2 -2
  51. package/dist/ui/assets/{oauth-bootstrap-qSJjQ69F.js → oauth-bootstrap-qTw880dW.js} +2 -2
  52. package/dist/ui/assets/{onboarding-orchestrator-yGWsMH61.js → onboarding-orchestrator-B5XUC4QP.js} +1 -1
  53. package/dist/ui/assets/{openai-codex-DAPUF3Ax.js → openai-codex-BpfRFQ9A.js} +1 -1
  54. package/dist/ui/assets/{openai-codex-BPLGHM-7.js → openai-codex-BtEdGRUK.js} +1 -1
  55. package/dist/ui/assets/{openrouter-ChH5y4Zo.js → openrouter-CGkUkGLm.js} +1 -1
  56. package/dist/ui/assets/{openrouter-CNqcHmRl.js → openrouter-D9PB_Wxr.js} +1 -1
  57. package/dist/ui/assets/{openrouter-free-CFHWyXL_.js → openrouter-free-BfihlWk1.js} +1 -1
  58. package/dist/ui/assets/{openrouter-free-mc_qudih.js → openrouter-free-Brc9YCWo.js} +1 -1
  59. package/dist/ui/assets/{openrouter-oauth-NGLIwflJ.js → openrouter-oauth-DIBlm_UZ.js} +1 -1
  60. package/dist/ui/assets/{openrouter-oauth-CLTSbif9.js → openrouter-oauth-DdrrVt3S.js} +1 -1
  61. package/dist/ui/assets/{panel-rpc-handlers-CjLaorQm.js → panel-rpc-handlers-BmON86n5.js} +2 -2
  62. package/dist/ui/assets/{panelize-shell-DCsOioRV.js → panelize-shell-Dt3FXNpB.js} +1 -1
  63. package/dist/ui/assets/{pi-edit-execution-jBe0mTu2.js → pi-edit-execution-iaL4Mz3u.js} +1 -1
  64. package/dist/ui/assets/{provider-D3Z0skyh.js → provider-B8I1Mys2.js} +1 -1
  65. package/dist/ui/assets/{provider-Bq7cXY3H.js → provider-CN-5jpvI.js} +1 -1
  66. package/dist/ui/assets/{provider-settings-cjhn5KhF.js → provider-settings-B5CKyKdE.js} +1 -1
  67. package/dist/ui/assets/provider-store-access-D3cir6Mf.js +1 -0
  68. package/dist/ui/assets/provider-store-access-DruVrLP2.js +1 -0
  69. package/dist/ui/assets/{providers-CfB5UcQV.js → providers-CnawElFK.js} +1 -1
  70. package/dist/ui/assets/{providers-e7J6vyrs.js → providers-s2pRjrQo.js} +2 -2
  71. package/dist/ui/assets/{quick-llm-CX_4Q5lE.js → quick-llm-DcceQmkj.js} +1 -1
  72. package/dist/ui/assets/{realm-inprocess-DZqfbNHT.js → realm-inprocess-48bEemKF.js} +2 -2
  73. package/dist/ui/assets/{realm-unhandled-rejections-B4YL4Sx4.js → realm-unhandled-rejections-BqWjiqaB.js} +1 -1
  74. package/dist/ui/assets/{realm-unhandled-rejections-BCUDtOFo.js → realm-unhandled-rejections-DpKKv_Sg.js} +1 -1
  75. package/dist/ui/assets/{remote-terminal-view-YhJBG0oW.js → remote-terminal-view-ML6zl31u.js} +2 -2
  76. package/dist/ui/assets/{restore-DKs4fX03.js → restore-Uo3FkyTn.js} +1 -1
  77. package/dist/ui/assets/{run-BoUgBqtP.js → run-7BBLWyxm.js} +2 -2
  78. package/dist/ui/assets/{run-DvLcUCCT.js → run-B-kYAFBX.js} +1 -1
  79. package/dist/ui/assets/{run-w8dc5QkU.js → run-BZUVJe9B.js} +2 -2
  80. package/dist/ui/assets/{run-ZJTWBDxE.js → run-D6q-1m-B.js} +2 -2
  81. package/dist/ui/assets/{run-Dyr1Y8Gw.js → run-tb90H7t4.js} +1 -1
  82. package/dist/ui/assets/{run-DYK7RuK3.js → run-v1OqsjEl.js} +2 -2
  83. package/dist/ui/assets/{serve-command-Cl0KR3JB.js → serve-command-C1oMKVa-.js} +2 -2
  84. package/dist/ui/assets/{serve-runtime-CnjIF1Qc.js → serve-runtime-BMkuNcbl.js} +1 -1
  85. package/dist/ui/assets/{session-command-memory-Cl4cgsuB.js → session-command-memory-lm81X-Is.js} +2 -2
  86. package/dist/ui/assets/{session-jsonl-C3VP4h4F.js → session-jsonl-eXAElh6W.js} +1 -1
  87. package/dist/ui/assets/{session-search-index-DNLNj8Hz.js → session-search-index-ByisDLR5.js} +1 -1
  88. package/dist/ui/assets/{setup-feature-flags-remote-CgfNoeec.js → setup-feature-flags-remote-z293EM8V.js} +1 -1
  89. package/dist/ui/assets/{setup-model-catalog-Do44T24D.js → setup-model-catalog-DFfU37vS.js} +1 -1
  90. package/dist/ui/assets/{silent-renew-backoff-BP12WS2t.js → silent-renew-backoff-B0lMVNh5.js} +1 -1
  91. package/dist/ui/assets/slicc-version-DGCQeyP5.js +1 -0
  92. package/dist/ui/assets/{soundscape-OIr6kREC.js → soundscape-DHszzPsM.js} +1 -1
  93. package/dist/ui/assets/{speak-BTTfyNsH.js → speak-DZZSpSqs.js} +1 -1
  94. package/dist/ui/assets/{sprinkle-manager-B04EiPct.js → sprinkle-manager-CMAEGvh9.js} +1 -1
  95. package/dist/ui/assets/{sprinkle-renderer-B6BBPYnt.js → sprinkle-renderer-DcsYmznT.js} +1 -1
  96. package/dist/ui/assets/{src-DBlBYTvU.js → src-WaWErIN6.js} +3 -3
  97. package/dist/ui/assets/{ssh-DxTaezVV.js → ssh-vPCpaauO.js} +1 -1
  98. package/dist/ui/assets/{sudo-DRDS7os7.js → sudo-YyLShRTX.js} +1 -1
  99. package/dist/ui/assets/{supervisor-CK12CrVB.js → supervisor-BJNQ0Sie.js} +1 -1
  100. package/dist/ui/assets/{sync-dialog-CMveyHTI.js → sync-dialog-OIBe84rb.js} +1 -1
  101. package/dist/ui/assets/{transformers-env-C0UUrX43.js → transformers-env-DlTQEcvy.js} +1 -1
  102. package/dist/ui/assets/{tray-leader-B2jd_9hN.js → tray-leader-x0HDgpHa.js} +1 -1
  103. package/dist/ui/assets/{tray-leave-runtime-YA1z3_3n.js → tray-leave-runtime-B6ZqjKqA.js} +1 -1
  104. package/dist/ui/assets/{tray-sidecar-B1E5w2QN.js → tray-sidecar-C08eb6rV.js} +1 -1
  105. package/dist/ui/assets/{upgrade-detection-DIEpI4jV.js → upgrade-detection-BZOEx1T3.js} +1 -1
  106. package/dist/ui/assets/{upgrade-to-seven-Ds3487bW.js → upgrade-to-seven-Pi7N3s4V.js} +1 -1
  107. package/dist/ui/assets/{voice-reply-BvNFV1p5.js → voice-reply-D0KspY5L.js} +1 -1
  108. package/dist/ui/assets/{wc-attach-B9NheUcP.js → wc-attach-C--w91hS.js} +2 -2
  109. package/dist/ui/assets/{wc-browser-BWV_z0mY.js → wc-browser-Bwwt12VY.js} +1 -1
  110. package/dist/ui/assets/{wc-computers-CmlAWXad.js → wc-computers-CEYTEbzK.js} +1 -1
  111. package/dist/ui/assets/{wc-detached-BG6o5rCV.js → wc-detached-BMfwyvTN.js} +1 -1
  112. package/dist/ui/assets/{wc-extension-BJG351m1.js → wc-extension-WVBzb68j.js} +2 -2
  113. package/dist/ui/assets/{wc-follower-DK_cGVb6.js → wc-follower-CfQXvNqW.js} +3 -3
  114. package/dist/ui/assets/{wc-follower-oauth-Ct4vRPWy.js → wc-follower-oauth-CRA3bG2x.js} +1 -1
  115. package/dist/ui/assets/{wc-gelatiere-B7_JxWTc.js → wc-gelatiere-CFupkA18.js} +1 -1
  116. package/dist/ui/assets/{wc-live-B_GjMlHU.js → wc-live-jfkgv1D5.js} +5 -5
  117. package/dist/ui/assets/{wc-nav-BPC_rTRU.js → wc-nav-CMmiK8CR.js} +2 -2
  118. package/dist/ui/assets/{wc-onboarding-DZ9IecMC.js → wc-onboarding-DwK2Xo_f.js} +2 -2
  119. package/dist/ui/assets/{wc-permissions-jiHmGCQE.js → wc-permissions-sEzYJY5L.js} +2 -2
  120. package/dist/ui/assets/{wc-placeholder-Bw3f1tx2.js → wc-placeholder-dACLWYRH.js} +2 -2
  121. package/dist/ui/assets/{wc-profile-export-Dw3kIggm.js → wc-profile-export-0_MWQlQi.js} +3 -3
  122. package/dist/ui/assets/{wc-secret-request-DhhFoxwM.js → wc-secret-request-Bj6AEfhW.js} +1 -1
  123. package/dist/ui/assets/{wc-settings-CFVy_frk.js → wc-settings-D36d5og0.js} +3 -3
  124. package/dist/ui/assets/{wc-shell-uXXL8vn4.js → wc-shell-Dviry0M3.js} +3 -3
  125. package/dist/ui/assets/{wc-shortcut-config-BsECYqW4.js → wc-shortcut-config-BEJ7hCGM.js} +1 -1
  126. package/dist/ui/assets/{wc-sprinkles-LDObPLGU.js → wc-sprinkles-CCEvPCsZ.js} +2 -2
  127. package/dist/ui/assets/{wc-transcript-export-DCxRhw7L.js → wc-transcript-export-BLZIE8ep.js} +2 -2
  128. package/dist/ui/assets/{wc-tray-DC2N41c4.js → wc-tray-Bpsl7Mew.js} +4 -4
  129. package/dist/ui/assets/welcome-detection-CWqP_ofb.js +1 -0
  130. package/dist/ui/assets/{whisper-session-VTvwtmt9.js → whisper-session-CmQR_O2N.js} +2 -2
  131. package/dist/ui/assets/{xai-grok-CAYOQXy2.js → xai-grok-BjEcnSUJ.js} +1 -1
  132. package/dist/ui/assets/{xai-grok-BySWrekq.js → xai-grok-DNyRhPcB.js} +1 -1
  133. package/dist/ui/index.html +3 -3
  134. package/dist/ui/packages/webapp/index.html +3 -3
  135. package/dist/ui/packages/webapp/upgrade-to-seven.html +1 -1
  136. package/dist/ui/upgrade-to-seven.html +1 -1
  137. package/package.json +3 -3
  138. package/dist/ui/assets/provider-store-access-BSyBmQnI.js +0 -1
  139. package/dist/ui/assets/provider-store-access-D34ptiy1.js +0 -1
  140. package/dist/ui/assets/slicc-version-DD-uf2ZA.js +0 -1
  141. package/dist/ui/assets/welcome-detection-BA_e93OR.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 Gt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],Kt=[-1,1,2,3,4,5,6,8],qt=e=>{if(!e||e.byteLength<2)throw TypeError(`AAC description must be at least 2 bytes long.`);let t=new j(e),n=Jt(t),{frequencyIndex:r,sampleRate:i}=Yt(t),a=t.readBits(4),o=null;a>=1&&a<=7&&(o=Kt[a]);let s=n,c=!1,l=i;if(n===5||n===29)c=n===29,l=Yt(t).sampleRate,s=Jt(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}Jt(t)===5&&t.readBits(1)&&(l=Yt(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}},Jt=e=>{let t=e.readBits(5);return t===31?32+e.readBits(6):t},Yt=e=>{let t=e.readBits(4);return t===15?{frequencyIndex:t,sampleRate:e.readBits(24)}:{frequencyIndex:t,sampleRate:t<Gt.length?Gt[t]:null}},Xt=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=Kt.indexOf(i);if(a===-1)throw TypeError(`Unsupported number of channels: ${e.outputNumberOfChannels}`);let o=16;e.objectType>=32&&(o+=6),$t(r)===15&&(o+=24),t&&(o+=9,$t(e.outputSampleRate)===15&&(o+=24));let s=Math.ceil(o/8),c=new Uint8Array(s),l=new j(c);return Zt(l,e.objectType),Qt(l,r),l.writeBits(4,a),t&&(Qt(l,e.outputSampleRate),Zt(l,2)),l.writeBits(3,0),c},Zt=(e,t)=>{t<32?e.writeBits(5,t):(e.writeBits(5,31),e.writeBits(6,t-32))},Qt=(e,t)=>{let n=$t(t);e.writeBits(4,n),n===15&&e.writeBits(24,t)},$t=e=>{let t=Gt.indexOf(e);return t===-1?15:t},en=e=>{let t=/* @__PURE__ */ 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}},tn=(e,t)=>{e.pos=30,e.writeBits(13,t)},nn=[48e3,44100,32e3],rn=[24e3,22050,16e3],an=`Mediabunny v1.62.0`
41
+ const Gt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],Kt=[-1,1,2,3,4,5,6,8],qt=e=>{if(!e||e.byteLength<2)throw TypeError(`AAC description must be at least 2 bytes long.`);let t=new j(e),n=Jt(t),{frequencyIndex:r,sampleRate:i}=Yt(t),a=t.readBits(4),o=null;a>=1&&a<=7&&(o=Kt[a]);let s=n,c=!1,l=i;if(n===5||n===29)c=n===29,l=Yt(t).sampleRate,s=Jt(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}Jt(t)===5&&t.readBits(1)&&(l=Yt(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}},Jt=e=>{let t=e.readBits(5);return t===31?32+e.readBits(6):t},Yt=e=>{let t=e.readBits(4);return t===15?{frequencyIndex:t,sampleRate:e.readBits(24)}:{frequencyIndex:t,sampleRate:t<Gt.length?Gt[t]:null}},Xt=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=Kt.indexOf(i);if(a===-1)throw TypeError(`Unsupported number of channels: ${e.outputNumberOfChannels}`);let o=16;e.objectType>=32&&(o+=6),$t(r)===15&&(o+=24),t&&(o+=9,$t(e.outputSampleRate)===15&&(o+=24));let s=Math.ceil(o/8),c=new Uint8Array(s),l=new j(c);return Zt(l,e.objectType),Qt(l,r),l.writeBits(4,a),t&&(Qt(l,e.outputSampleRate),Zt(l,2)),l.writeBits(3,0),c},Zt=(e,t)=>{t<32?e.writeBits(5,t):(e.writeBits(5,31),e.writeBits(6,t-32))},Qt=(e,t)=>{let n=$t(t);e.writeBits(4,n),n===15&&e.writeBits(24,t)},$t=e=>{let t=Gt.indexOf(e);return t===-1?15:t},en=e=>{let t=/* @__PURE__ */ 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}},tn=(e,t)=>{e.pos=30,e.writeBits(13,t)},nn=[48e3,44100,32e3],rn=[24e3,22050,16e3],an=`Mediabunny v1.62.1`
42
42
  /*!
43
43
  * Copyright (c) 2026-present, Vanilagy and contributors
44
44
  *
@@ -125,7 +125,7 @@ let t=W(e),n=G(e,4),r=8;t===1&&(t=Au(e),r=16);let i=t-r;return i<0?null:{name:n,
125
125
  * License, v. 2.0. If a copy of the MPL was not distributed with this
126
126
  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
127
127
  */
128
- ;var Li=class e extends mi{constructor(e){super(e),this.moovSlice=null,this.currentTrack=null,this.tracks=[],this.idToTrack=/* @__PURE__ */ new Map,this.metadataPromise=null,this.movieTimescale=-1,this.movieDurationInTimescale=-1,this.movieMatrix=o,this.isQuickTime=!1,this.metadataTags={},this.currentMetadataKeys=null,this.isFragmented=!1,this.fragmentTrackDefaults=/* @__PURE__ */ new Map,this.psshBoxes=[],this.currentFragment=null,this.isReadingTraf=!1,this.lastReadFragment=null,this.fragmentSummaries=/* @__PURE__ */ new Map,this.decryptionKeyCache=/* @__PURE__ */ new Map,this.boxNestingDepth=0,this.reader=e._reader}async getTrackBackings(){return await this.readMetadata(),this.tracks.map(e=>e.trackBacking)}async getMimeType(){await this.readMetadata();let e=await this.getTrackBackings(),t=await Promise.all(e.map(e=>e.getDecoderConfig().then(e=>e?.codec??null)));return gi({isQuickTime:this.isQuickTime,hasVideo:this.tracks.some(e=>e.info?.type===`video`),hasAudio:this.tracks.some(e=>e.info?.type===`audio`),codecStrings:t.filter(Boolean)})}async getMetadataTags(){return await this.readMetadata(),this.metadataTags}readMetadata(){return this.metadataPromise??=(async()=>{let e=0,t=!1,r=!1;for(;;){let n=this.reader.requestSliceRange(e,8,16);if(k(n)&&(n=await n),!n)break;let i=e,a=yi(n);if(!a)break;if((a.name===`ftyp`||a.name===`styp`)&&n.remainingLength>=4){let e=G(n,4);this.isQuickTime=e===`qt `}else if(a.name===`moov`){let e=this.reader.requestSlice(n.filePos,a.contentSize);if(k(e)&&(e=await e),!e)break;if(this.moovSlice=e,this.readContiguousBoxes(this.moovSlice),this.movieTimescale===-1)throw Error(`Invalid moov box: missing mvhd box.`);for(let e of this.tracks){let t=e.editListPreviousSegmentDurations/this.movieTimescale;e.editListOffset-=Math.round(t*e.timescale)}t=this.isFragmented&&this.reader.fileSize!==null&&this.reader.fileSize>i+a.totalSize,r=!0;break}else if(a.name===`moof`){if(!this.input._initInput)throw Error(`"moof" box encountered with no "moov" box present; this file is likely a Segment as described in ISO/IEC 14496-12 Section 8.16. A separate init file that contains a "moov" box is required to read this file, please provide it using InputOptions.initInput.`);await this.copyMetadataFromInitInput(this.input._initInput),t=!1,r=!0;break}e=i+a.totalSize}if(!r&&this.input._initInput&&await this.copyMetadataFromInitInput(this.input._initInput),t){n(this.reader.fileSize!==null);let e=this.reader.requestSlice(this.reader.fileSize-4,4);k(e)&&(e=await e),n(e);let t=W(e),r=this.reader.fileSize-t;if(r>=0&&r<=this.reader.fileSize-16){let e=this.reader.requestSliceRange(r,8,16);if(k(e)&&(e=await e),e){let t=yi(e);if(t&&t.name===`mfra`){let n=this.reader.requestSlice(e.filePos,t.contentSize);k(n)&&(n=await n),n&&this.readContiguousBoxes(n)}}}}for(let e of this.tracks){let t=e.fragmentLookupTable;t.sort((e,t)=>e.timestamp-t.timestamp);let n=0;for(let e of t)(n===0||e.timestamp!==t[n-1].timestamp)&&(t[n++]=e);t.length=n}})()}async copyMetadataFromInitInput(t){let r=await t._getDemuxer();if(r.constructor!==e)throw Error(`Init input must match the input's format.`);await r.readMetadata(),this.movieTimescale=r.movieTimescale,this.movieDurationInTimescale=r.movieDurationInTimescale,this.movieMatrix=r.movieMatrix,this.metadataTags=r.metadataTags,this.isFragmented=!0,this.fragmentTrackDefaults=r.fragmentTrackDefaults,this.psshBoxes=r.psshBoxes;for(let e of r.tracks){let t={id:e.id,demuxer:this,trackBacking:null,disposition:e.disposition,timescale:e.timescale,durationInMediaTimescale:e.durationInMediaTimescale,durationInMovieTimescale:e.durationInMovieTimescale,matrix:e.matrix,internalCodecId:e.internalCodecId,name:e.name,languageCode:e.languageCode,sampleTableByteOffset:null,sampleTable:null,fragmentLookupTable:[],currentFragmentState:null,fragmentPositionCache:[],editListPreviousSegmentDurations:e.editListPreviousSegmentDurations,editListOffset:e.editListOffset,encryptionInfo:e.encryptionInfo,encryptionAuxInfo:null,frmaCodecString:null,maxBitrate:e.maxBitrate,avgBitrate:e.avgBitrate,info:e.info};e.trackBacking&&(n(t.info),t.info.type===`video`&&t.info.width!==-1?(t.trackBacking=new zi(t),this.tracks.push(t),this.idToTrack.set(t.id,t)):t.info.type===`audio`&&t.info.numberOfChannels!==-1&&(t.trackBacking=new Bi(t),this.tracks.push(t),this.idToTrack.set(t.id,t)))}}getSampleTableForTrack(e){if(e.sampleTable)return e.sampleTable;let t={sampleTimingEntries:[],sampleCompositionTimeOffsets:[],sampleSizes:[],sampleCount:0,cumulativeSampleSizes:null,keySampleIndices:null,chunkOffsets:[],sampleToChunk:[],sortedCompositionTimeOffsets:null};if(e.sampleTable=t,e.sampleTableByteOffset===null)return t;n(this.moovSlice);let r=this.moovSlice.slice(e.sampleTableByteOffset);this.currentTrack=e;try{this.traverseBox(r)}catch(t){throw e.sampleTable=null,t}finally{this.currentTrack=null}let i=h(t.sampleTimingEntries),a=E(t.sampleToChunk,t.chunkOffsets.length-1,e=>e.startChunkIndex),o=t.sampleToChunk[a];if(t.sampleCount=Math.min(t.sampleCount,i?i.startIndex+i.count:0,o?o.startSampleIndex+(t.chunkOffsets.length-o.startChunkIndex)*o.samplesPerChunk:0),$i(t.sampleTimingEntries,t.sampleCount),$i(t.sampleCompositionTimeOffsets,t.sampleCount),e.info?.type===`audio`&&e.info.codec&&F.includes(e.info.codec)&&t.sampleCompositionTimeOffsets.length===0&&t.sampleTimingEntries.length>0){n(e.info?.type===`audio`);let r=Gr(e.info.codec),i=[],a=[];for(let n=0;n<t.sampleToChunk.length;n++){let o=t.sampleToChunk[n],s=t.sampleToChunk[n+1],c=Math.min(s?s.startChunkIndex:1/0,t.chunkOffsets.length)-o.startChunkIndex,l=a.length;for(let n=0;n<c;n++){let s=o.startSampleIndex+n*o.samplesPerChunk,c=s+o.samplesPerChunk,l=E(t.sampleTimingEntries,s,e=>e.startIndex),u=t.sampleTimingEntries[l],d=E(t.sampleTimingEntries,c,e=>e.startIndex),f=t.sampleTimingEntries[d],p=u.startDecodeTimestamp+(s-u.startIndex)*u.delta,m=f.startDecodeTimestamp+(c-f.startIndex)*f.delta-p,g=h(i);g&&g.delta===m?g.count++:i.push({startIndex:a.length,startDecodeTimestamp:p,count:1,delta:m});let _=o.samplesPerChunk*r.sampleSize*e.info.numberOfChannels;a.push(_)}o.startSampleIndex=l,o.samplesPerChunk=1}t.sampleTimingEntries=i,t.sampleSizes=a,t.sampleCount=a.length}if(t.sampleCompositionTimeOffsets.length>0){let e=t.sampleCompositionTimeOffsets,n=h(e),r=n.startIndex+n.count;r<t.sampleCount&&e.push({startIndex:r,count:t.sampleCount-r,offset:0,startTimestamp:-1,lastTimestamp:-1,maxLastTimestamp:-1});let i=e.filter(e=>e.count>0),a=t.sampleTimingEntries,o=0,s=e=>{for(;o+1<a.length&&a[o+1].startIndex<=e;)o++;let t=a[o];return t.startDecodeTimestamp+(e-t.startIndex)*t.delta};for(let e of i){let t=e.startIndex+e.count-1;e.startTimestamp=s(e.startIndex)+e.offset,e.lastTimestamp=s(t)+e.offset}i.sort((e,t)=>e.startTimestamp-t.startTimestamp||e.startIndex-t.startIndex);let c=-1/0;for(let e of i)c=Math.max(c,e.lastTimestamp),e.maxLastTimestamp=c;t.sortedCompositionTimeOffsets=i}if(t.sampleSizes.length>1){t.cumulativeSampleSizes=[0];for(let e=0;e<t.sampleSizes.length;e++)t.cumulativeSampleSizes.push(t.cumulativeSampleSizes[e]+t.sampleSizes[e])}return t}async readFragment(e){if(this.lastReadFragment?.moofOffset===e)return this.lastReadFragment;let t=this.reader.requestSliceRange(e,8,16);k(t)&&(t=await t),n(t);let r=yi(t);n(r?.name===`moof`);let i=this.reader.requestSlice(e,r.totalSize);if(k(i)&&(i=await i),!i)return null;this.traverseBox(i);let a=this.lastReadFragment;n(a&&a.moofOffset===e),this.fragmentSummaries.set(e,{moofSize:a.moofSize,trackIds:new Set(a.trackData.keys())});for(let[,e]of a.trackData){let t=e.track,{fragmentPositionCache:r}=t;if(!e.startTimestampIsFinal){let i=ye(t.fragmentLookupTable,a.moofOffset,e=>e.moofOffset),o=t.fragmentLookupTable[i];if(o&&e.trunSampleCounts.length>=o.trunNumber&&e.trunSampleCounts[o.trunNumber-1]>=o.sampleNumber){let t=0;for(let n=1;n<o.trunNumber;n++)t+=e.trunSampleCounts[n-1];t+=o.sampleNumber-1;let r=e.samples[t];n(r);let i=o.timestamp-r.presentationTimestamp;Yi(e,i)}else{let t=E(r,a.moofOffset-1,e=>e.moofOffset);if(t!==-1){let n=r[t];Yi(e,n.endTimestamp)}}e.startTimestampIsFinal=!0}let i=E(r,e.startTimestamp,e=>e.startTimestamp),o=r[i],s=r[i+1];if((!o||o.moofOffset<a.moofOffset)&&(!s||s.moofOffset>a.moofOffset)&&r.splice(i+1,0,{moofOffset:a.moofOffset,startTimestamp:e.startTimestamp,endTimestamp:e.endTimestamp}),e.encryptionAuxInfo&&t.encryptionInfo){let n=await ta(this.reader,t.encryptionInfo,e.encryptionAuxInfo);for(let t=0;t<Math.min(e.samples.length,n.length);t++){let r=n[t];e.samples[t].encryption=r}}}return a}readContiguousBoxes(e){if(this.boxNestingDepth===64)throw Error(`Invalid file: boxes are nested too deeply.`);let t=e.filePos;this.boxNestingDepth++;try{for(;e.filePos-t<=e.length-8&&this.traverseBox(e););}finally{this.boxNestingDepth--}}*iterateContiguousBoxes(e){let t=e.filePos;for(;e.filePos-t<=e.length-8;){let t=e.filePos,n=yi(e);if(!n)break;yield{boxInfo:n,slice:e},e.filePos=t+n.totalSize}}traverseBox(e){let t=e.filePos,r=yi(e);if(!r)return!1;let i=e.filePos,a=t+r.totalSize;switch(r.name){case`mdia`:case`minf`:case`dinf`:case`mfra`:case`edts`:case`sinf`:case`schi`:this.readContiguousBoxes(e.slice(i,r.contentSize));break;case`mvhd`:{let t=H(e);if(e.skip(3),t===1?(e.skip(16),this.movieTimescale=W(e),this.movieDurationInTimescale=Au(e)):(e.skip(8),this.movieTimescale=W(e),this.movieDurationInTimescale=W(e)),this.movieTimescale===0)throw Error(`Invalid mvhd box: timescale must not be 0.`);e.skip(16),this.movieMatrix=Xi(e)}break;case`trak`:{if(this.currentFragment||this.currentTrack)break;let t={id:-1,demuxer:this,trackBacking:null,disposition:{...Ut,primary:!1},info:null,timescale:-1,durationInMovieTimescale:-1,durationInMediaTimescale:-1,matrix:o,internalCodecId:null,name:null,languageCode:`und`,sampleTableByteOffset:-1,sampleTable:null,fragmentLookupTable:[],currentFragmentState:null,fragmentPositionCache:[],editListPreviousSegmentDurations:0,editListOffset:0,encryptionInfo:null,encryptionAuxInfo:null,frmaCodecString:null,maxBitrate:null,avgBitrate:null};this.currentTrack=t,this.readContiguousBoxes(e.slice(i,r.contentSize)),t.id!==-1&&t.timescale!==-1&&t.info!==null&&t.sampleTableByteOffset!==-1&&(t.info.type===`video`&&t.info.width!==-1?(t.trackBacking=new zi(t),this.tracks.push(t),this.idToTrack.set(t.id,t)):t.info.type===`audio`&&t.info.numberOfChannels!==-1&&(t.trackBacking=new Bi(t),this.tracks.push(t),this.idToTrack.set(t.id,t))),this.currentTrack=null}break;case`tkhd`:{let t=this.currentTrack;if(!t||this.currentFragment)break;let n=H(e),r=!!(Cu(e)&1);if(t.disposition.default=r,n===0)e.skip(8),t.id=W(e),e.skip(4),t.durationInMovieTimescale=W(e);else if(n===1)e.skip(16),t.id=W(e),e.skip(4),t.durationInMovieTimescale=Au(e);else throw Error(`Incorrect track header version ${n}.`);e.skip(16);let i=Xi(e);t.matrix=p(i,this.movieMatrix)}break;case`elst`:{let t=this.currentTrack;if(!t)break;let n=H(e);e.skip(3);let r=!1,i=0,a=W(e);for(let o=0;o<a;o++){let a=n===1?Au(e):W(e),o=n===1?ju(e):Du(e),s=bi(e);if(r){A._warn(`Unsupported edit list: multiple edits are not currently supported. Only using first edit.`);break}if(o===-1){i+=a;continue}if(s!==1){A._warn(`Unsupported edit list entry: media rate must be 1.`);break}t.editListPreviousSegmentDurations=i,t.editListOffset=o,r=!0}}break;case`mdhd`:{let t=this.currentTrack;if(!t)break;let n=H(e);if(e.skip(3),n===0?(e.skip(8),t.timescale=W(e),t.durationInMediaTimescale=W(e)):n===1&&(e.skip(16),t.timescale=W(e),t.durationInMediaTimescale=Au(e)),t.timescale===0)throw Error(`Invalid mdhd box: timescale must not be 0.`);let r=U(e);if(r>0){t.languageCode=``;for(let e=0;e<3;e++)t.languageCode=String.fromCharCode(96+(r&31))+t.languageCode,r>>=5;Ue(t.languageCode)||(t.languageCode=`und`)}}break;case`hdlr`:{let t=this.currentTrack;if(!t)break;e.skip(8);let n=G(e,4);n===`vide`?t.info={type:`video`,width:-1,height:-1,squarePixelWidth:-1,squarePixelHeight:-1,codec:null,codecDescription:null,colorSpace:{...fe},avcType:null,avcCodecInfo:null,hevcCodecInfo:null,vp9CodecInfo:null,av1CodecInfo:null,proresCodecInfo:null,proresFormat:null}:n===`soun`&&(t.info={type:`audio`,numberOfChannels:-1,sampleRate:-1,codec:null,codecDescription:null,aacCodecInfo:null,dtsFormat:null,pcmLittleEndian:!1,pcmSampleSize:null})}break;case`stbl`:{let n=this.currentTrack;if(!n)break;n.sampleTableByteOffset=t,this.readContiguousBoxes(e.slice(i,r.contentSize))}break;case`stsd`:{let t=this.currentTrack;if(!t||t.info===null||t.sampleTable)break;let n=H(e);e.skip(3);let r=W(e);for(let i=0;i<r;i++){let r=e.filePos,i=yi(e);if(!i)break;t.internalCodecId=i.name;let a=i.name.toLowerCase();if(t.info.type===`video`){e.skip(24),t.info.width=U(e),t.info.height=U(e),t.info.squarePixelWidth=t.info.width,t.info.squarePixelHeight=t.info.height,e.skip(50),t.frmaCodecString=null,this.readContiguousBoxes(e.slice(e.filePos,r+i.totalSize-e.filePos));let n=a===`encv`?t.frmaCodecString:a;t.frmaCodecString=null,n===`avc1`||n===`avc3`?(t.info.codec=`avc`,t.info.avcType=n===`avc1`?1:3):n===`hvc1`||n===`hev1`?t.info.codec=`hevc`:n===`vp08`?t.info.codec=`vp8`:n===`vp09`?t.info.codec=`vp9`:n===`av01`?t.info.codec=`av1`:Mr.includes(a)?(t.info.codec=`prores`,t.info.proresFormat=a):n===null?A._warn(`Unknown encrypted video codec due to missing frma box.`):A._warn(`Unsupported video codec (sample entry type '${i.name}').`)}else{e.skip(8);let o=U(e);e.skip(6);let s=U(e),c=U(e);e.skip(4);let l=W(e)/65536,u=null;n===0&&o>0&&(o===1?(e.skip(4),c=8*W(e),e.skip(8)):o===2&&(e.skip(4),l=Pu(e),s=W(e),e.skip(4),c=W(e),u=W(e),e.skip(8))),t.info.numberOfChannels=s,t.info.sampleRate=l,t.frmaCodecString=null,this.readContiguousBoxes(e.slice(e.filePos,r+i.totalSize-e.filePos));let d=a===`enca`?t.frmaCodecString:a;if(t.frmaCodecString=null,d!==`mp4a`){if(d===`opus`)t.info.codec=`opus`,t.info.sampleRate=Ur;else if(d===`flac`)t.info.codec=`flac`;else if(d===`ulaw`)t.info.codec=`ulaw`;else if(d===`alaw`)t.info.codec=`alaw`;else if(d===`ac-3`)t.info.codec=`ac3`;else if(d===`ec-3`)t.info.codec=`eac3`;else if(Nr.includes(d))t.info.codec=`dts`,t.info.dtsFormat=d;else if(d===`twos`)c===8?t.info.codec=`pcm-s8`:c===16?t.info.codec=t.info.pcmLittleEndian?`pcm-s16`:`pcm-s16be`:(A._warn(`Unsupported sample size ${c} for codec 'twos'.`),t.info.codec=null);else if(d===`sowt`)c===8?t.info.codec=`pcm-s8`:c===16?t.info.codec=`pcm-s16`:(A._warn(`Unsupported sample size ${c} for codec 'sowt'.`),t.info.codec=null);else if(d===`raw `)t.info.codec=`pcm-u8`;else if(d===`in24`)t.info.codec=t.info.pcmLittleEndian?`pcm-s24`:`pcm-s24be`;else if(d===`in32`)t.info.codec=t.info.pcmLittleEndian?`pcm-s32`:`pcm-s32be`;else if(d===`fl32`)t.info.codec=t.info.pcmLittleEndian?`pcm-f32`:`pcm-f32be`;else if(d===`fl64`)t.info.codec=t.info.pcmLittleEndian?`pcm-f64`:`pcm-f64be`;else if(d===`ipcm`){let e=t.info.pcmSampleSize;t.info.pcmLittleEndian?e===16?t.info.codec=`pcm-s16`:e===24?t.info.codec=`pcm-s24`:e===32?t.info.codec=`pcm-s32`:(A._warn(`Invalid ipcm sample size ${e}.`),t.info.codec=null):e===16?t.info.codec=`pcm-s16be`:e===24?t.info.codec=`pcm-s24be`:e===32?t.info.codec=`pcm-s32be`:(A._warn(`Invalid ipcm sample size ${e}.`),t.info.codec=null)}else if(d===`fpcm`){let e=t.info.pcmSampleSize;t.info.pcmLittleEndian?e===32?t.info.codec=`pcm-f32`:e===64?t.info.codec=`pcm-f64`:(A._warn(`Invalid fpcm sample size ${e}.`),t.info.codec=null):e===32?t.info.codec=`pcm-f32be`:e===64?t.info.codec=`pcm-f64be`:(A._warn(`Invalid fpcm sample size ${e}.`),t.info.codec=null)}else if(d===`lpcm`&&u!==null){let e=c+7>>3,n=!!(u&1),r=!!(u&2),i=u&4?-1:0;c>0&&c<=64&&(n?c===32&&(t.info.codec=r?`pcm-f32be`:`pcm-f32`):i&1<<e-1?e===1?t.info.codec=`pcm-s8`:e===2?t.info.codec=r?`pcm-s16be`:`pcm-s16`:e===3?t.info.codec=r?`pcm-s24be`:`pcm-s24`:e===4&&(t.info.codec=r?`pcm-s32be`:`pcm-s32`):e===1&&(t.info.codec=`pcm-u8`)),t.info.codec===null&&A._warn(`Unsupported PCM format.`)}else d===null?A._warn(`Unknown encrypted audio codec due to missing frma box.`):A._warn(`Unsupported audio codec (sample entry type '${i.name}').`)}}e.filePos=r+i.totalSize}}break;case`frma`:{let t=this.currentTrack;if(!t)break;t.frmaCodecString=G(e,4).toLowerCase()}break;case`schm`:{let t=this.currentTrack;if(!t)break;e.skip(4);let n=G(e,4);n===`cenc`||n===`cens`||n===`cbcs`?t.encryptionInfo={scheme:n,defaultKid:null,defaultIsProtected:null,defaultPerSampleIvSize:null,defaultConstantIv:null,defaultCryptByteBlock:null,defaultSkipByteBlock:null}:A._warn(`Unsupported encryption scheme '${n}'.`)}break;case`tenc`:{let t=this.currentTrack;if(!t||!t.encryptionInfo)break;let n=H(e);e.skip(3),e.skip(1);let r=H(e);if(n>0?(t.encryptionInfo.defaultCryptByteBlock=r>>4,t.encryptionInfo.defaultSkipByteBlock=r&15):(t.encryptionInfo.defaultCryptByteBlock=0,t.encryptionInfo.defaultSkipByteBlock=0),t.encryptionInfo.defaultIsProtected=H(e)!==0,t.encryptionInfo.defaultPerSampleIvSize=H(e),t.encryptionInfo.defaultKid=ge(V(e,16)),t.encryptionInfo.defaultPerSampleIvSize>16)throw Error(`Invalid tenc box: IV size must not exceed 16 bytes.`);if(t.encryptionInfo.defaultIsProtected&&t.encryptionInfo.defaultPerSampleIvSize===0){let n=H(e);if(n>16)throw Error(`Invalid tenc box: IV size must not exceed 16 bytes.`);let r=/* @__PURE__ */ new Uint8Array(16);r.set(V(e,n),0),t.encryptionInfo.defaultConstantIv=r}}break;case`avcC`:{let t=this.currentTrack;if(!t||t.info?.type!==`video`||r.contentSize===0)break;t.info.codecDescription=V(e,r.contentSize);let n=vn(t.info.codecDescription)?.sequenceParameterSets[0],i=n&&bn(n);i&&Zi(t,i.pixelAspectRatio)}break;case`hvcC`:{let t=this.currentTrack;if(!t||t.info?.type!==`video`||r.contentSize===0)break;t.info.codecDescription=V(e,r.contentSize);let n=In(t.info.codecDescription)?.arrays.find(e=>e.nalUnitType===N.SPS_NUT)?.nalUnits[0],i=n&&En(n);i&&Zi(t,i.pixelAspectRatio)}break;case`vpcC`:{let t=this.currentTrack;if(!t||t.info?.type!==`video`)break;e.skip(4);let n=H(e),r=H(e),i=H(e),a=i>>4,o=i>>1&7,s=i&1,c=H(e),l=H(e),u=H(e);t.info.vp9CodecInfo={profile:n,level:r,bitDepth:a,chromaSubsampling:o,videoFullRangeFlag:s,colourPrimaries:c,transferCharacteristics:l,matrixCoefficients:u}}break;case`av1C`:{let t=this.currentTrack;if(!t||t.info?.type!==`video`)break;e.skip(1);let n=H(e),i=n>>5,a=n&31,o=H(e),s=o>>7,c=o>>6&1,l=o>>5&1,u=o>>4&1,d=o>>3&1,f=o>>2&1,p=o&3,m=i===2&&c?l?12:10:c?10:8;e.skip(1);let h=V(e,r.contentSize-4),g=Un(h);t.info.av1CodecInfo={profile:i,level:a,tier:s,bitDepth:m,monochrome:u,chromaSubsamplingX:d,chromaSubsamplingY:f,chromaSamplePosition:p,videoFullRangeFlag:g?.videoFullRangeFlag??0,colourPrimaries:g?.colourPrimaries??2,transferCharacteristics:g?.transferCharacteristics??2,matrixCoefficients:g?.matrixCoefficients??2}}break;case`colr`:{let t=this.currentTrack;if(!t||t.info?.type!==`video`)break;let n=G(e,4);if(n!==`nclx`&&n!==`nclc`)break;let r=U(e),i=U(e),a=U(e),o;n===`nclx`&&(o=!!(H(e)&128)),t.info.colorSpace={primaries:ae[r],transfer:se[i],matrix:le[a],fullRange:o}}break;case`pasp`:{let t=this.currentTrack;if(!t||t.info?.type!==`video`)break;let n=W(e),r=W(e);n>0&&r>0&&(t.info.squarePixelWidth=t.info.width,t.info.squarePixelHeight=t.info.height,n>r?t.info.squarePixelWidth=Math.round(t.info.width*n/r):t.info.squarePixelHeight=Math.round(t.info.height*r/n))}break;case`btrt`:{let t=this.currentTrack;if(!t)break;e.skip(4);let n=W(e),r=W(e);t.maxBitrate=n>0?n:null,t.avgBitrate=r>0?r:null}break;case`wave`:this.readContiguousBoxes(e.slice(i,r.contentSize));break;case`esds`:{let t=this.currentTrack;if(!t||t.info?.type!==`audio`)break;e.skip(4);let{objectTypeIndication:n,decoderSpecificInfo:r}=Ci(e);if(n===64||n===103?(t.info.codec=`aac`,t.info.aacCodecInfo={isMpeg2:n===103,objectType:null}):n===105||n===107?t.info.codec=`mp3`:n===221?t.info.codec=`vorbis`:n===169?t.info.codec=`dts`:A._warn(`Unsupported audio codec (objectTypeIndication ${n}) - discarding track.`),r&&(t.info.codecDescription=r,t.info.codec===`aac`)){let e=qt(t.info.codecDescription);e.outputNumberOfChannels!==null&&(t.info.numberOfChannels=e.outputNumberOfChannels),e.outputSampleRate!==null&&(t.info.sampleRate=e.outputSampleRate)}}break;case`enda`:{let t=this.currentTrack;if(!t||t.info?.type!==`audio`)break;t.info.pcmLittleEndian=!!(U(e)&255)}break;case`pcmC`:{let t=this.currentTrack;if(!t||t.info?.type!==`audio`)break;e.skip(4);let n=H(e);t.info.pcmLittleEndian=!!(n&1),t.info.pcmSampleSize=H(e)}break;case`dOps`:{let t=this.currentTrack;if(!t||t.info?.type!==`audio`)break;e.skip(1);let n=H(e),r=U(e),i=W(e),a=wu(e),o=H(e),s;s=o===0?/* @__PURE__ */ new Uint8Array:V(e,2+n);let c=new Uint8Array(19+s.byteLength),l=new DataView(c.buffer);l.setUint32(0,1332770163,!1),l.setUint32(4,1214603620,!1),l.setUint8(8,1),l.setUint8(9,n),l.setUint16(10,r,!0),l.setUint32(12,i,!0),l.setInt16(16,a,!0),l.setUint8(18,o),c.set(s,19),t.info.codecDescription=c,t.info.numberOfChannels=n}break;case`dfLa`:{let t=this.currentTrack;if(!t||t.info?.type!==`audio`)break;e.skip(4);let n=e.filePos;for(;e.filePos<a;){let n=H(e),r=Cu(e);if((n&127)===Zn.STREAMINFO){e.skip(10);let n=W(e),r=n>>>12,i=(n>>9&7)+1;t.info.sampleRate=r,t.info.numberOfChannels=i,e.skip(20)}else e.skip(r);if(n&128)break}let r=e.filePos;e.filePos=n;let i=V(e,r-n),o=new Uint8Array(4+i.byteLength);new DataView(o.buffer).setUint32(0,1716281667,!1),o.set(i,4),t.info.codecDescription=o}break;case`dac3`:{let t=this.currentTrack;if(!t||t.info?.type!==`audio`)break;let n=new j(V(e,3)),r=n.readBits(2);n.skipBits(8);let i=n.readBits(3),a=n.readBits(1);r<3&&(t.info.sampleRate=nn[r]),t.info.numberOfChannels=er[i]+a}break;case`dec3`:{let t=this.currentTrack;if(!t||t.info?.type!==`audio`)break;let n=V(e,r.contentSize),i=sr(n);if(!i){A._warn(`Invalid dec3 box contents, ignoring.`);break}let a=cr(i);a!==null&&(t.info.sampleRate=a),t.info.numberOfChannels=lr(i)}break;case`ddts`:{let t=this.currentTrack;if(!t||t.info?.type!==`audio`)break;let n=V(e,Math.min(r.contentSize,20)),i=Sr(n);if(!i){A._warn(`Invalid ddts box contents, ignoring.`);break}t.info.sampleRate=i.sampleRate,i.numberOfChannels!==null&&(t.info.numberOfChannels=i.numberOfChannels)}break;case`stts`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e),r=0,i=0;for(let a=0;a<n;a++){let n=W(e),a=W(e);t.sampleTable.sampleTimingEntries.push({startIndex:r,startDecodeTimestamp:i,count:n,delta:a}),r+=n,i+=n*a}}break;case`ctts`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e),r=0;for(let i=0;i<n;i++){let n=W(e),i=Du(e);t.sampleTable.sampleCompositionTimeOffsets.push({startIndex:r,count:n,offset:i,startTimestamp:-1,lastTimestamp:-1,maxLastTimestamp:-1}),r+=n}}break;case`stsz`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e),r=W(e);if(n===0)for(let n=0;n<r;n++){let n=W(e);t.sampleTable.sampleSizes.push(n)}else t.sampleTable.sampleSizes.push(n);t.sampleTable.sampleCount=r}break;case`stz2`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4),e.skip(3);let n=H(e),r=W(e);if(n!==4&&n!==8&&n!==16)throw Error(`Invalid stz2 box: unsupported field size ${n}.`);let i=new j(V(e,Math.ceil(r*n/8)));for(let e=0;e<r;e++){let e=i.readBits(n);t.sampleTable.sampleSizes.push(e)}t.sampleTable.sampleCount=r}break;case`stss`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4),t.sampleTable.keySampleIndices=[];let n=W(e);for(let r=0;r<n;r++){let n=W(e)-1;t.sampleTable.keySampleIndices.push(n)}t.sampleTable.keySampleIndices.sort((e,t)=>e-t),t.sampleTable.keySampleIndices[0]!==0&&t.sampleTable.keySampleIndices.unshift(0)}break;case`stsc`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e),r=0;for(let i=0;i<n;i++){let n=W(e)-1,i=W(e),a=W(e),o=h(t.sampleTable.sampleToChunk);if(o&&n<=o.startChunkIndex){r++;continue}t.sampleTable.sampleToChunk.push({startSampleIndex:-1,startChunkIndex:n,samplesPerChunk:i,sampleDescriptionIndex:a})}r>0&&A._warn(`Skipped ${r} invalid stsc entries whose chunk indices weren't strictly increasing.`);let i=0;for(let e=0;e<t.sampleTable.sampleToChunk.length;e++)if(t.sampleTable.sampleToChunk[e].startSampleIndex=i,e<t.sampleTable.sampleToChunk.length-1){let n=t.sampleTable.sampleToChunk[e+1].startChunkIndex-t.sampleTable.sampleToChunk[e].startChunkIndex;i+=n*t.sampleTable.sampleToChunk[e].samplesPerChunk}}break;case`stco`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e);for(let r=0;r<n;r++){let n=W(e);t.sampleTable.chunkOffsets.push(n)}}break;case`co64`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e);for(let r=0;r<n;r++){let n=Au(e);t.sampleTable.chunkOffsets.push(n)}}break;case`mvex`:this.isFragmented=!0,this.readContiguousBoxes(e.slice(i,r.contentSize));break;case`mehd`:{let t=H(e);e.skip(3);let n=t===1?Au(e):W(e);this.movieDurationInTimescale=n}break;case`trex`:{e.skip(4);let t=W(e),n=W(e),r=W(e),i=W(e),a=W(e);this.fragmentTrackDefaults.set(t,{trackId:t,defaultSampleDescriptionIndex:n,defaultSampleDuration:r,defaultSampleSize:i,defaultSampleFlags:a})}break;case`tfra`:{let t=H(e);e.skip(3);let n=W(e),r=this.idToTrack.get(n);if(!r)break;let i=W(e),a=(i&48)>>4,o=(i&12)>>2,s=i&3,c=[H,U,Cu,W],l=c[a],u=c[o],d=c[s],f=W(e);for(let n=0;n<f;n++){let n=t===1?Au(e):W(e),i=t===1?Au(e):W(e);l(e);let a=u(e),o=d(e);a>=1&&o>=1&&r.fragmentLookupTable.push({timestamp:n,moofOffset:i,trunNumber:a,sampleNumber:o})}}break;case`moof`:if(this.currentFragment)break;this.currentFragment={moofOffset:t,moofSize:r.totalSize,implicitBaseDataOffset:t,trackData:/* @__PURE__ */ new Map,psshBoxes:[],sampleCount:0};try{this.readContiguousBoxes(e.slice(i,r.contentSize)),this.lastReadFragment=this.currentFragment}finally{this.currentFragment=null,this.currentTrack=null}break;case`traf`:if(!this.currentFragment||this.isReadingTraf)break;this.isReadingTraf=!0;try{this.readContiguousBoxes(e.slice(i,r.contentSize))}finally{this.isReadingTraf=!1}if(this.currentTrack){let e=this.currentFragment.trackData.get(this.currentTrack.id);cond:if(e){if(e.samples.length===0){this.currentFragment.trackData.delete(this.currentTrack.id);break cond}e.presentationTimestamps=e.samples.map((e,t)=>({presentationTimestamp:e.presentationTimestamp,sampleIndex:t})).sort((e,t)=>e.presentationTimestamp-t.presentationTimestamp);for(let t=0;t<e.presentationTimestamps.length;t++){let n=e.presentationTimestamps[t],r=e.samples[n.sampleIndex];e.firstKeyFrameTimestamp===null&&r.isKeyFrame&&(e.firstKeyFrameTimestamp=r.presentationTimestamp),t<e.presentationTimestamps.length-1&&(r.duration=e.presentationTimestamps[t+1].presentationTimestamp-n.presentationTimestamp)}let t=e.samples[e.presentationTimestamps[0].sampleIndex],r=e.samples[h(e.presentationTimestamps).sampleIndex];e.startTimestamp=t.presentationTimestamp,e.endTimestamp=r.presentationTimestamp+r.duration;let{currentFragmentState:i}=this.currentTrack;n(i),i.startTimestamp!==null&&(Yi(e,i.startTimestamp),e.startTimestampIsFinal=!0),i.encryptionAuxInfo&&!e.samples[0].encryption&&(e.encryptionAuxInfo=i.encryptionAuxInfo)}this.currentTrack.currentFragmentState=null,this.currentTrack=null}break;case`pssh`:{if(this.input._formatOptions.isobmff?._suppressPsshParsing)break;let t=_i(V(e,r.contentSize));this.currentFragment?this.currentFragment.psshBoxes.push(t):this.currentTrack||this.psshBoxes.push(t)}break;case`tfhd`:{if(!this.currentFragment||!this.isReadingTraf||this.currentTrack)break;e.skip(1);let t=Cu(e),n=!!(t&1),r=!!(t&2),i=!!(t&8),a=!!(t&16),o=!!(t&32),s=!!(t&65536),c=!!(t&131072),l=W(e),u=this.idToTrack.get(l);if(!u)break;if(this.currentFragment.trackData.has(l)){A._warn(`Multiple traf boxes for track ${l} in the same moof box; skipping.`);break}let d=this.fragmentTrackDefaults.get(l);this.currentTrack=u,u.currentFragmentState={baseDataOffset:this.currentFragment.implicitBaseDataOffset,sampleDescriptionIndex:d?.defaultSampleDescriptionIndex??null,defaultSampleDuration:d?.defaultSampleDuration??null,defaultSampleSize:d?.defaultSampleSize??null,defaultSampleFlags:d?.defaultSampleFlags??null,startTimestamp:null,encryptionAuxInfo:null},n?u.currentFragmentState.baseDataOffset=Au(e):c&&(u.currentFragmentState.baseDataOffset=this.currentFragment.moofOffset),r&&(u.currentFragmentState.sampleDescriptionIndex=W(e)),i&&(u.currentFragmentState.defaultSampleDuration=W(e)),a&&(u.currentFragmentState.defaultSampleSize=W(e)),o&&(u.currentFragmentState.defaultSampleFlags=W(e)),s&&(u.currentFragmentState.defaultSampleDuration=0)}break;case`tfdt`:{let t=this.currentTrack;if(!t?.currentFragmentState)break;let n=H(e);e.skip(3);let r=n===0?W(e):Au(e);t.currentFragmentState.startTimestamp=r}break;case`trun`:{let t=this.currentTrack;if(!t?.currentFragmentState||!this.currentFragment)break;e.skip(1);let n=Cu(e),r=!!(n&1),i=!!(n&4),a=!!(n&256),o=!!(n&512),s=!!(n&1024),c=!!(n&2048),l=W(e),{defaultSampleDuration:u,defaultSampleSize:d,defaultSampleFlags:f}=t.currentFragmentState;if(l>0&&(!a&&u===null||!o&&d===null||!s&&f===null))throw Error(`Invalid trun box: sample values are missing and there are no defaults.`);if(this.currentFragment.sampleCount+=l,this.currentFragment.sampleCount>2**20)throw Error(`Too many (> 2^20) samples in fragment.`);let p=null;r&&(p=Du(e));let m=null;i&&(m=W(e));let h;this.currentFragment.trackData.has(t.id)?(h=this.currentFragment.trackData.get(t.id),p!==null&&(h.currentOffset=t.currentFragmentState.baseDataOffset+p)):(h={track:t,currentTimestamp:0,currentOffset:t.currentFragmentState.baseDataOffset+(p??0),startTimestamp:0,endTimestamp:0,firstKeyFrameTimestamp:null,samples:[],presentationTimestamps:[],startTimestampIsFinal:!1,trunSampleCounts:[],encryptionAuxInfo:null},this.currentFragment.trackData.set(t.id,h)),h.trunSampleCounts.push(l);for(let t=0;t<l;t++){let n;n=a?W(e):u;let r;r=o?W(e):d;let i;i=s?W(e):f,t===0&&m!==null&&(i=m);let l=0;c&&(l=Du(e));let p=!(i&65536);h.samples.push({presentationTimestamp:h.currentTimestamp+l,duration:n,byteOffset:h.currentOffset,byteSize:r,isKeyFrame:p,encryption:null}),h.currentOffset+=r,h.currentTimestamp+=n}this.currentFragment.implicitBaseDataOffset=h.currentOffset}break;case`saiz`:{let t=this.currentTrack;if(!t||!t.encryptionInfo)break;if(e.skip(1),Cu(e)&1){let n=G(e,4),r=W(e);if(n!==t.encryptionInfo.scheme||r!==0)break}let n=H(e),r=W(e),i=null;n===0&&r>0&&(i=V(e,r));let a=ea(t);a.defaultSampleInfoSize=n,a.sampleSizes=i,a.sampleCount=r}break;case`saio`:{let t=this.currentTrack;if(!t||!t.encryptionInfo)break;let n=H(e);if(Cu(e)&1){let n=G(e,4),r=W(e);if(n!==t.encryptionInfo.scheme||r!==0)break}let r=W(e);if(r===0)break;r>1&&A._warn(`Multiple saio entries are not supported; using the first offset only.`);let i=n===0?W(e):Number(Au(e));this.currentFragment&&(i+=this.currentFragment.moofOffset);let a=ea(t);a.offset=i}break;case`senc`:{let t=this.currentTrack;if(!t||!t.encryptionInfo)break;let n=this.currentFragment?.trackData.get(t.id);if(!n)break;e.skip(1);let r=!!(Cu(e)&2),i=W(e),a=t.encryptionInfo.defaultPerSampleIvSize;if(a===null)throw Error(`Invalid file: encrypted track is missing its tenc box.`);for(let o=0;o<Math.min(i,n.samples.length);o++){let i=/* @__PURE__ */ new Uint8Array(16);if(a>0)i.set(V(e,a),0);else if(t.encryptionInfo.defaultConstantIv)i.set(t.encryptionInfo.defaultConstantIv,0);else throw Error(`Invalid file: encrypted sample has no IV.`);let s=null;if(r){let t=U(e);s=[];for(let n=0;n<t;n++){let t=U(e),n=W(e);s.push({clearLen:t,protectedLen:n})}}let c=n.samples[o];c.encryption={iv:i,subsamples:s}}}break;case`udta`:{let t=this.iterateContiguousBoxes(e.slice(i,r.contentSize));for(let{boxInfo:e,slice:n}of t){if(e.name!==`meta`&&!this.currentTrack){let t=n.filePos;this.metadataTags.raw??={},e.name[0]===`©`?this.metadataTags.raw[e.name]??=wi(n):this.metadataTags.raw[e.name]??=V(n,e.contentSize),n.filePos=t}switch(e.name){case`meta`:n.skip(-e.headerSize),this.traverseBox(n);break;case`©nam`:case`name`:this.currentTrack?this.currentTrack.name=w.decode(V(n,e.contentSize)):this.metadataTags.title??=wi(n);break;case`©des`:this.currentTrack||(this.metadataTags.description??=wi(n));break;case`©ART`:this.currentTrack||(this.metadataTags.artist??=wi(n));break;case`©alb`:this.currentTrack||(this.metadataTags.album??=wi(n));break;case`albr`:this.currentTrack||(this.metadataTags.albumArtist??=wi(n));break;case`©gen`:this.currentTrack||(this.metadataTags.genre??=wi(n));break;case`©day`:if(!this.currentTrack){let e=new Date(wi(n));Number.isNaN(e.getTime())||(this.metadataTags.date??=e)}break;case`©cmt`:this.currentTrack||(this.metadataTags.comment??=wi(n));break;case`©lyr`:this.currentTrack||(this.metadataTags.lyrics??=wi(n))}}}break;case`meta`:{if(this.currentTrack)break;let t=W(e)!==0;this.currentMetadataKeys=/* @__PURE__ */ new Map,t?this.readContiguousBoxes(e.slice(i,r.contentSize)):this.readContiguousBoxes(e.slice(i+4,r.contentSize-4)),this.currentMetadataKeys=null}break;case`keys`:{if(!this.currentMetadataKeys)break;e.skip(4);let t=W(e);for(let n=0;n<t;n++){let t=W(e);if(t<8)throw Error(`Invalid keys box: key size must be at least 8.`);e.skip(4);let r=w.decode(V(e,t-8));this.currentMetadataKeys.set(n+1,r)}}break;case`ilst`:{if(!this.currentMetadataKeys)break;let t=this.iterateContiguousBoxes(e.slice(i,r.contentSize));for(let{boxInfo:e,slice:n}of t){let t=e.name,r=(t.charCodeAt(0)<<24)+(t.charCodeAt(1)<<16)+(t.charCodeAt(2)<<8)+t.charCodeAt(3);this.currentMetadataKeys.has(r)&&(t=this.currentMetadataKeys.get(r));let i=Ti(n);switch(this.metadataTags.raw??={},this.metadataTags.raw[t]??=i,t){case`©nam`:case`titl`:case`com.apple.quicktime.title`:case`title`:typeof i==`string`&&(this.metadataTags.title??=i);break;case`©des`:case`desc`:case`dscp`:case`com.apple.quicktime.description`:case`description`:typeof i==`string`&&(this.metadataTags.description??=i);break;case`©ART`:case`com.apple.quicktime.artist`:case`artist`:typeof i==`string`&&(this.metadataTags.artist??=i);break;case`©alb`:case`albm`:case`com.apple.quicktime.album`:case`album`:typeof i==`string`&&(this.metadataTags.album??=i);break;case`aART`:case`album_artist`:typeof i==`string`&&(this.metadataTags.albumArtist??=i);break;case`©cmt`:case`com.apple.quicktime.comment`:case`comment`:typeof i==`string`&&(this.metadataTags.comment??=i);break;case`©gen`:case`gnre`:case`com.apple.quicktime.genre`:case`genre`:typeof i==`string`&&(this.metadataTags.genre??=i);break;case`©lyr`:case`lyrics`:typeof i==`string`&&(this.metadataTags.lyrics??=i);break;case`©day`:case`rldt`:case`com.apple.quicktime.creationdate`:case`date`:if(typeof i==`string`){let e=new Date(i);Number.isNaN(e.getTime())||(this.metadataTags.date??=e)}break;case`tmpo`:if(i instanceof Uint8Array&&i.length>=2){let e=C(i).getInt16(0,!1);e>0&&(this.metadataTags.beatsPerMinute??=e)}break;case`covr`:case`com.apple.quicktime.artwork`:i instanceof zt?(this.metadataTags.images??=[],this.metadataTags.images.push({data:i.data,kind:`coverFront`,mimeType:i.mimeType})):i instanceof Uint8Array&&(this.metadataTags.images??=[],this.metadataTags.images.push({data:i,kind:`coverFront`,mimeType:`image/*`}));break;case`track`:if(typeof i==`string`){let e=i.split(`/`),t=Number.parseInt(e[0],10),n=e[1]&&Number.parseInt(e[1],10);Number.isInteger(t)&&t>0&&(this.metadataTags.trackNumber??=t),n&&Number.isInteger(n)&&n>0&&(this.metadataTags.tracksTotal??=n)}break;case`trkn`:if(i instanceof Uint8Array&&i.length>=6){let e=C(i),t=e.getUint16(2,!1),n=e.getUint16(4,!1);t>0&&(this.metadataTags.trackNumber??=t),n>0&&(this.metadataTags.tracksTotal??=n)}break;case`disc`:case`disk`:if(i instanceof Uint8Array&&i.length>=6){let e=C(i),t=e.getUint16(2,!1),n=e.getUint16(4,!1);t>0&&(this.metadataTags.discNumber??=t),n>0&&(this.metadataTags.discsTotal??=n)}}}}}return e.filePos=a,!0}},Ri=class{constructor(e){this.internalTrack=e,this.packetToSampleIndex=/* @__PURE__ */ new WeakMap,this.packetToFragmentLocation=/* @__PURE__ */ new WeakMap}getId(){return this.internalTrack.id}getNumber(){let e=this.internalTrack.demuxer,t=this.internalTrack.trackBacking.getType(),n=0;for(let r of e.tracks)if(r.trackBacking.getType()===t&&n++,r===this.internalTrack)break;return n}getCodec(){throw Error(`Not implemented on base class.`)}getInternalCodecId(){return this.internalTrack.internalCodecId}getName(){return this.internalTrack.name}getLanguageCode(){return this.internalTrack.languageCode}getTimeResolution(){return this.internalTrack.timescale}isRelativeToUnixEpoch(){return!1}getUnixTimeForTimestamp(){return null}getDisposition(){return this.internalTrack.disposition}getPairingMask(){return 1n}getBitrate(){return this.internalTrack.maxBitrate}getAverageBitrate(){return this.internalTrack.avgBitrate}async getDurationFromMetadata(){let e=this.internalTrack;return e.durationInMediaTimescale<=0?null:(n(e.trackBacking),((await e.trackBacking.getFirstPacket({metadataOnly:!0}))?.timestamp??0)+e.durationInMediaTimescale/e.timescale)}async getLiveRefreshInterval(){return null}async getFirstPacket(e){let t=await this.fetchPacketForSampleIndex(0,e);return t||!this.internalTrack.demuxer.isFragmented?t:this.performFragmentedLookup(null,e=>e.trackData.get(this.internalTrack.id)?{sampleIndex:0,correctSampleFound:!0}:{sampleIndex:-1,correctSampleFound:!1},-1/0,1/0,e)}mapTimestampIntoTimescale(e){return Fe(e*this.internalTrack.timescale)+this.internalTrack.editListOffset}async getPacket(e,t){let n=this.mapTimestampIntoTimescale(e),r=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),i=Vi(r,n),a=await this.fetchPacketForSampleIndex(i,t);return!Qi(r)||!this.internalTrack.demuxer.isFragmented?a:this.performFragmentedLookup(null,e=>{let t=e.trackData.get(this.internalTrack.id);if(!t)return{sampleIndex:-1,correctSampleFound:!1};let r=E(t.presentationTimestamps,n,e=>e.presentationTimestamp);return{sampleIndex:r===-1?-1:t.presentationTimestamps[r].sampleIndex,correctSampleFound:r!==-1&&n<t.endTimestamp}},n,n,t)}async getNextPacket(e,t){let n=this.packetToSampleIndex.get(e);if(n!==void 0)return this.fetchPacketForSampleIndex(n+1,t);let r=this.packetToFragmentLocation.get(e);if(r===void 0)throw Error(`Packet was not created from this track.`);return this.performFragmentedLookup(r.fragment,e=>{if(e===r.fragment){let t=e.trackData.get(this.internalTrack.id);if(r.sampleIndex+1<t.samples.length)return{sampleIndex:r.sampleIndex+1,correctSampleFound:!0}}else if(e.trackData.get(this.internalTrack.id))return{sampleIndex:0,correctSampleFound:!0};return{sampleIndex:-1,correctSampleFound:!1}},-1/0,1/0,t)}async getKeyPacket(e,t){let n=this.mapTimestampIntoTimescale(e),r=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),i=Hi(r,n),a=await this.fetchPacketForSampleIndex(i,t);return!Qi(r)||!this.internalTrack.demuxer.isFragmented?a:this.performFragmentedLookup(null,e=>{let t=e.trackData.get(this.internalTrack.id);if(!t)return{sampleIndex:-1,correctSampleFound:!1};let r=Ce(t.presentationTimestamps,e=>t.samples[e.sampleIndex].isKeyFrame&&e.presentationTimestamp<=n);return{sampleIndex:r===-1?-1:t.presentationTimestamps[r].sampleIndex,correctSampleFound:r!==-1&&n<t.endTimestamp}},n,n,t)}async getNextKeyPacket(e,t){let r=this.packetToSampleIndex.get(e);if(r!==void 0){let e=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),n=Ji(e,r);return this.fetchPacketForSampleIndex(n,t)}let i=this.packetToFragmentLocation.get(e);if(i===void 0)throw Error(`Packet was not created from this track.`);return this.performFragmentedLookup(i.fragment,e=>{if(e===i.fragment){let t=e.trackData.get(this.internalTrack.id);for(let e=i.sampleIndex+1;e<t.samples.length;e++)if(t.samples[e].isKeyFrame)return{sampleIndex:e,correctSampleFound:!0}}else{let t=e.trackData.get(this.internalTrack.id);if(t&&t.firstKeyFrameTimestamp!==null){let e=t.samples.findIndex(e=>e.isKeyFrame);return n(e!==-1),{sampleIndex:e,correctSampleFound:!0}}}return{sampleIndex:-1,correctSampleFound:!1}},-1/0,1/0,t)}async fetchPacketForSampleIndex(e,t){if(e===-1)return null;let n=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),r=Ui(n,e);if(!r)return null;let i;if(t.metadataOnly)i=hi;else{let t=this.internalTrack.demuxer.reader.requestSlice(r.sampleOffset,r.sampleSize);if(k(t)&&(t=await t),!t)return null;if(i=V(t,r.sampleSize),this.internalTrack.encryptionInfo){let t=null;if(this.internalTrack.encryptionAuxInfo){let n=await ta(this.internalTrack.demuxer.reader,this.internalTrack.encryptionInfo,this.internalTrack.encryptionAuxInfo);e<n.length&&(t=n[e])}t??=na(this.internalTrack.encryptionInfo),t&&(i=await ra(this.internalTrack,t,i,null))}}let a=(r.presentationTimestamp-this.internalTrack.editListOffset)/this.internalTrack.timescale,o=r.duration/this.internalTrack.timescale,s=new I(i,r.isKeyFrame?`key`:`delta`,a,o,e,r.sampleSize);return this.packetToSampleIndex.set(s,e),s}async fetchPacketInFragment(e,t,r){if(t===-1)return null;let i=e.trackData.get(this.internalTrack.id).samples[t];n(i);let a;if(r.metadataOnly)a=hi;else{let t=this.internalTrack.demuxer.reader.requestSlice(i.byteOffset,i.byteSize);if(k(t)&&(t=await t),!t)return null;if(a=V(t,i.byteSize),this.internalTrack.encryptionInfo){let t=i.encryption??na(this.internalTrack.encryptionInfo);t&&(a=await ra(this.internalTrack,t,a,e))}}let o=(i.presentationTimestamp-this.internalTrack.editListOffset)/this.internalTrack.timescale,s=i.duration/this.internalTrack.timescale,c=new I(a,i.isKeyFrame?`key`:`delta`,o,s,e.moofOffset+t,i.byteSize);return this.packetToFragmentLocation.set(c,{fragment:e,sampleIndex:t}),c}async performFragmentedLookup(e,t,n,r,i,a=!1){let o=this.internalTrack.demuxer,s=null,c=null,l=-1;if(e){let{sampleIndex:n,correctSampleFound:r}=t(e);if(r)return this.fetchPacketInFragment(e,n,i);n!==-1&&(c=e,l=n)}let u=E(this.internalTrack.fragmentLookupTable,n,e=>e.timestamp),d=u===-1?null:this.internalTrack.fragmentLookupTable[u],f=E(this.internalTrack.fragmentPositionCache,n,e=>e.startTimestamp),p=f===-1?null:this.internalTrack.fragmentPositionCache[f],m=Math.max(d?.moofOffset??0,p?.moofOffset??0)||null,h;for(e?m===null||e.moofOffset>=m?(h=e.moofOffset+e.moofSize,s=e):h=m:h=m??0;;){if(s){let e=s.trackData.get(this.internalTrack.id);if(e&&e.startTimestamp>r)break}let e=o.fragmentSummaries.get(h);if(e&&!e.trackIds.has(this.internalTrack.id)){h+=e.moofSize;continue}let n=o.reader.requestSliceRange(h,8,16);if(k(n)&&(n=await n),!n)break;let a=h,u=yi(n);if(!u)break;if(u.name===`moof`){if(s=await o.readFragment(a),!s)break;let{sampleIndex:e,correctSampleFound:n}=t(s);if(n)return this.fetchPacketInFragment(s,e,i);e!==-1&&(c=s,l=e)}h=a+u.totalSize}if(d&&(!c||c.moofOffset<d.moofOffset)){let e=this.internalTrack.fragmentLookupTable[u-1],n=!a&&e?e.timestamp:-1/0;return this.performFragmentedLookup(null,t,n,r,i,!0)}return c?this.fetchPacketInFragment(c,l,i):null}},zi=class extends Ri{constructor(e){super(e),this.decoderConfigPromise=null}getType(){return`video`}getCodec(){return this.internalTrack.info.codec}getCodedWidth(){return this.internalTrack.info.width}getCodedHeight(){return this.internalTrack.info.height}getSquarePixelWidth(){return this.internalTrack.info.squarePixelWidth}getSquarePixelHeight(){return this.internalTrack.info.squarePixelHeight}getTransformationMatrix(){return[...this.internalTrack.matrix]}async getColorSpace(){let e=await this.getDecoderConfig();return e?{primaries:e.colorSpace?.primaries,transfer:e.colorSpace?.transfer,matrix:e.colorSpace?.matrix,fullRange:e.colorSpace?.fullRange}:this.internalTrack.info.colorSpace}async canBeTransparent(){return this.internalTrack.info.codec===`prores`&&(this.internalTrack.info.proresFormat===`ap4h`||this.internalTrack.info.proresFormat===`ap4x`)}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{if(this.internalTrack.info.codec===`avc`&&!this.internalTrack.info.codecDescription){let e=await this.getFirstPacket({});this.internalTrack.info.avcCodecInfo=e&&gn(e.data)}else if(this.internalTrack.info.codec===`hevc`&&!this.internalTrack.info.codecDescription){let e=await this.getFirstPacket({});this.internalTrack.info.hevcCodecInfo=e&&Dn(e.data)}else if(this.internalTrack.info.codec===`vp9`&&(!this.internalTrack.info.vp9CodecInfo||!Vn(this.internalTrack.info.vp9CodecInfo))){let e=await this.getFirstPacket({}),t=e&&Bn(e.data);t&&(this.internalTrack.info.vp9CodecInfo={...this.internalTrack.info.vp9CodecInfo??t,videoFullRangeFlag:t.videoFullRangeFlag,colourPrimaries:t.colourPrimaries,transferCharacteristics:t.transferCharacteristics,matrixCoefficients:t.matrixCoefficients})}else if(this.internalTrack.info.codec===`av1`&&(!this.internalTrack.info.av1CodecInfo||!Wn(this.internalTrack.info.av1CodecInfo))){let e=await this.getFirstPacket({}),t=e&&Un(e.data);t&&(this.internalTrack.info.av1CodecInfo=t)}else if(this.internalTrack.info.codec===`prores`&&!this.internalTrack.info.proresCodecInfo){let e=await this.getFirstPacket({});this.internalTrack.info.proresCodecInfo=e&&Gn(e.data)}if(!ue(this.internalTrack.info.colorSpace)){let e=zr(this.internalTrack.info);this.internalTrack.info.colorSpace.primaries??=e.primaries,this.internalTrack.info.colorSpace.transfer??=e.transfer,this.internalTrack.info.colorSpace.matrix??=e.matrix,this.internalTrack.info.colorSpace.fullRange??=e.fullRange}let e={codec:Rr(this.internalTrack.info),codedWidth:this.internalTrack.info.width,codedHeight:this.internalTrack.info.height,description:this.internalTrack.info.codecDescription??void 0,colorSpace:this.internalTrack.info.colorSpace};return(this.internalTrack.info.width!==this.internalTrack.info.squarePixelWidth||this.internalTrack.info.height!==this.internalTrack.info.squarePixelHeight)&&(e.displayAspectWidth=this.internalTrack.info.squarePixelWidth,e.displayAspectHeight=this.internalTrack.info.squarePixelHeight),e})():null}},Bi=class extends Ri{constructor(e){super(e),this.decoderConfigPromise=null}getType(){return`audio`}getCodec(){return this.internalTrack.info.codec}getNumberOfChannels(){return this.internalTrack.info.numberOfChannels}getSampleRate(){return this.internalTrack.info.sampleRate}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{if(this.internalTrack.info.codec===`dts`&&!this.internalTrack.info.dtsFormat){let e=await this.getFirstPacket({});this.internalTrack.info.dtsFormat=e&&yr(e.data)}return{codec:Vr(this.internalTrack.info),numberOfChannels:this.internalTrack.info.numberOfChannels,sampleRate:this.internalTrack.info.sampleRate,description:this.internalTrack.info.codecDescription??void 0}})():null}};const Vi=(e,t)=>{if(e.sortedCompositionTimeOffsets)return Wi(e,t,!1);{let n=E(e.sampleTimingEntries,t,e=>e.startDecodeTimestamp);if(n===-1)return-1;let r=e.sampleTimingEntries[n];return r.delta===0?r.startIndex+r.count-1:r.startIndex+Math.min(Math.floor((t-r.startDecodeTimestamp)/r.delta),r.count-1)}},Hi=(e,t)=>{if(!e.keySampleIndices)return Vi(e,t);if(e.sortedCompositionTimeOffsets)return Wi(e,t,!0);{let n=Vi(e,t),r=E(e.keySampleIndices,n,e=>e);return e.keySampleIndices[r]??-1}},Ui=(e,t)=>{if(t>=e.sampleCount)return null;let n=E(e.sampleTimingEntries,t,e=>e.startIndex),r=e.sampleTimingEntries[n],i=r.startDecodeTimestamp+(t-r.startIndex)*r.delta,a=E(e.sampleCompositionTimeOffsets,t,e=>e.startIndex),o=e.sampleCompositionTimeOffsets[a];o&&t-o.startIndex<o.count&&(i+=o.offset);let s=e.sampleSizes[Math.min(t,e.sampleSizes.length-1)],c=E(e.sampleToChunk,t,e=>e.startSampleIndex),l=e.sampleToChunk[c],u=l.startChunkIndex+Math.floor((t-l.startSampleIndex)/l.samplesPerChunk),d=e.chunkOffsets[u],f=l.startSampleIndex+(u-l.startChunkIndex)*l.samplesPerChunk,p=d;e.sampleSizes.length===1?p+=s*(t-f):p+=e.cumulativeSampleSizes[t]-e.cumulativeSampleSizes[f];let m=r.delta;if(e.sortedCompositionTimeOffsets){let n=Gi(e,t,i);n!==null&&(m=n-i)}return{presentationTimestamp:i,duration:m,sampleOffset:p,sampleSize:s,chunkOffset:d,isKeyFrame:!e.keySampleIndices||ye(e.keySampleIndices,t,e=>e)!==-1}},Wi=(e,t,n)=>{let r=e.sortedCompositionTimeOffsets,i=-1,a=-1/0,o=E(r,t,e=>e.startTimestamp);for(let s=o;s>=0;s--){let o=r[s];if(o.maxLastTimestamp<a)break;let c=o.lastTimestamp<=t?o.startIndex+o.count-1:Ki(e,o,(e,n)=>n>t)-1;if(n){let t=E(e.keySampleIndices,c,e=>e);c=e.keySampleIndices[t]??-1}if(c<o.startIndex)continue;let l=qi(e,c)+o.offset;(l>a||l===a&&c>i)&&(i=c,a=l)}return i},Gi=(e,t,n)=>{let r=e.sortedCompositionTimeOffsets,i=E(r,n,e=>e.startTimestamp),a=r[i+1]?.startTimestamp??null;for(let o=i;o>=0;o--){let i=r[o];if(i.maxLastTimestamp<n)break;let s=Ki(e,i,(e,r)=>r>n||r===n&&e>t);if(s===i.startIndex+i.count)continue;let c=qi(e,s)+i.offset;(a===null||c<a)&&(a=c)}return a},Ki=(e,t,n)=>{let r=t.startIndex,i=t.startIndex+t.count;for(;r<i;){let a=Math.floor((r+i)/2);n(a,qi(e,a)+t.offset)?i=a:r=a+1}return r},qi=(e,t)=>{let n=E(e.sampleTimingEntries,t,e=>e.startIndex),r=e.sampleTimingEntries[n];return r.startDecodeTimestamp+(t-r.startIndex)*r.delta},Ji=(e,t)=>{if(!e.keySampleIndices)return t+1;let n=E(e.keySampleIndices,t,e=>e);return e.keySampleIndices[n+1]??-1},Yi=(e,t)=>{e.startTimestamp+=t,e.endTimestamp+=t;for(let n of e.samples)n.presentationTimestamp+=t;for(let n of e.presentationTimestamps)n.presentationTimestamp+=t},Xi=e=>[bi(e),bi(e),xi(e),bi(e),bi(e),xi(e),bi(e),bi(e),xi(e)],Zi=(e,t)=>{let n=e.info;if(n.type!==`video`)return;let{num:r,den:i}=t;r>0&&i>0&&r!==i&&(r>i?(n.squarePixelWidth=Math.round(n.width*r/i),n.squarePixelHeight=n.height):(n.squarePixelWidth=n.width,n.squarePixelHeight=Math.round(n.height*i/r)))},Qi=e=>e.sampleSizes.length===0,$i=(e,t)=>{for(;e.length>0&&h(e).startIndex>=t;)e.pop();let n=h(e);n&&(n.count=Math.min(n.count,t-n.startIndex))},ea=e=>e.currentFragmentState?e.currentFragmentState.encryptionAuxInfo??={defaultSampleInfoSize:0,sampleSizes:null,sampleCount:0,offset:null,resolved:null}:e.encryptionAuxInfo??={defaultSampleInfoSize:0,sampleSizes:null,sampleCount:0,offset:null,resolved:null},ta=async(e,t,r)=>{if(r.resolved)return r.resolved;if(r.offset===null||r.sampleCount===0)throw Error(`Incomplete saiz/saio info; cannot resolve encryption data.`);let i=0;if(r.defaultSampleInfoSize>0)i=r.defaultSampleInfoSize*r.sampleCount;else{n(r.sampleSizes);for(let e=0;e<r.sampleCount;e++)i+=r.sampleSizes[e]}let a=e.requestSlice(r.offset,i);if(k(a)&&(a=await a),!a)throw Error(`Failed to read auxiliary encryption info.`);let o=t.defaultPerSampleIvSize;if(o===null)throw Error(`Invalid file: encrypted track is missing its tenc box.`);let s=[];for(let e=0;e<r.sampleCount;e++){let n=r.defaultSampleInfoSize>0?r.defaultSampleInfoSize:r.sampleSizes[e],i=/* @__PURE__ */ new Uint8Array(16);if(o>0)i.set(V(a,o),0);else if(t.defaultConstantIv)i.set(t.defaultConstantIv,0);else throw Error(`Invalid file: encrypted sample has no IV.`);let c=null;if(n>o){let e=U(a);c=[];for(let t=0;t<e;t++){let e=U(a),t=W(a);c.push({clearLen:e,protectedLen:t})}}s.push({iv:i,subsamples:c})}return r.resolved=s,s},na=e=>e.defaultConstantIv?{iv:e.defaultConstantIv,subsamples:null}:null,ra=async(e,t,r,i)=>{n(e.encryptionInfo);let a=e.encryptionInfo;if(a.defaultKid===null)throw Error(`Invalid file: encrypted track is missing its tenc box.`);let o=a.defaultKid,s,c=e.demuxer.decryptionKeyCache.get(o);if(c)s=await c;else{if(!e.demuxer.input._formatOptions.isobmff?.resolveKeyId)throw Error(`Encrypted media samples encountered. To decrypt them, please provide a callback for InputOptions.formatOptions.isobmff.resolveKeyId.`);let t=(async()=>{let t=e.demuxer.psshBoxes;if(i){t=[...t,...i.psshBoxes].filter(e=>e.keyIds===null||e.keyIds.includes(o));for(let e=0;e<t.length-1;e++)for(let n=e+1;n<t.length;n++)vi(t[e],t[n])&&(t.splice(n,1),n--)}let n=await e.demuxer.input._formatOptions.isobmff.resolveKeyId({keyId:o,psshBoxes:t});if(!(typeof n==`string`&&n.length===32&&he.test(n)||n instanceof Uint8Array&&n.byteLength===16))throw TypeError(`resolveKeyId must return a 32-character hex string or a 16-byte Uint8Array containing the decryption key.`);return n instanceof Uint8Array?n:_e(n)})();e.demuxer.decryptionKeyCache.set(o,t),s=await t}return a.scheme===`cenc`||a.scheme===`cens`?ia(s,a,t,r):aa(s,a,t,r)},ia=async(e,t,r,i)=>{let a=/* @__PURE__ */ new Uint8Array(16);a.set(r.iv,0);let o=await crypto.subtle.importKey(`raw`,e,{name:`AES-CTR`},!1,[`decrypt`]),s=async e=>{let t=await crypto.subtle.decrypt({name:`AES-CTR`,counter:a,length:64},o,e);return new Uint8Array(t)};if(!r.subsamples)return s(i);n(t.defaultCryptByteBlock!==null&&t.defaultSkipByteBlock!==null);let c=oa(r.subsamples,t.defaultCryptByteBlock,t.defaultSkipByteBlock,i.length),l=0;for(let e of c)for(let t of e.perSubsample)l+=t.length;let u=new Uint8Array(l),d=0;for(let e of c)for(let t of e.perSubsample)u.set(i.subarray(t.offset,t.offset+t.length),d),d+=t.length;let f=await s(u),p=new Uint8Array(i),m=0;for(let e of c)for(let t of e.perSubsample)p.set(f.subarray(m,m+t.length),t.offset),m+=t.length;return p},aa=(e,t,r,i)=>{let a=new Fi;a.init({key:e,iv:r.iv});let o=t.defaultCryptByteBlock,s=t.defaultSkipByteBlock;if(n(o!==null&&s!==null),!r.subsamples){let e=new Uint8Array(i),t=Math.floor(i.length/16);for(let n=0;n<t;n++){let t=n*16;a.in.set(i.subarray(t,t+16)),a.decrypt(),e.set(a.out,t)}return e}if(o===0&&s===0)throw Error(`cbcs with subsamples requires pattern encryption.`);let c=new Uint8Array(i),l=oa(r.subsamples,o,s,i.length),u=new DataView(r.iv.buffer,r.iv.byteOffset,16);for(let e of l){a.iv[0]=u.getUint32(0,!1),a.iv[1]=u.getUint32(4,!1),a.iv[2]=u.getUint32(8,!1),a.iv[3]=u.getUint32(12,!1);for(let t of e.perSubsample){let e=t.length/16;for(let n=0;n<e;n++){let e=t.offset+n*16;a.in.set(i.subarray(e,e+16)),a.decrypt(),c.set(a.out,e)}}}return c},oa=(e,t,n,r)=>{let i=[],a=t!==0||n!==0,o=0;for(let s of e){if(o+s.clearLen+s.protectedLen>r)throw Error(`Invalid encryption info: subsamples exceed the sample size.`);o+=s.clearLen;let e=[];if(!a)s.protectedLen>0&&e.push({offset:o,length:s.protectedLen}),o+=s.protectedLen;else{let r=s.protectedLen,i=o;for(;r>0&&!(r<16*t);){let a=16*t;e.push({offset:i,length:a}),i+=a,r-=a;let o=Math.min(16*n,r);i+=o,r-=o}o+=s.protectedLen}i.push({perSubsample:e})}return i};
128
+ ;var Li=class e extends mi{constructor(e){super(e),this.moovSlice=null,this.currentTrack=null,this.tracks=[],this.idToTrack=/* @__PURE__ */ new Map,this.metadataPromise=null,this.movieTimescale=-1,this.movieDurationInTimescale=-1,this.movieMatrix=o,this.isQuickTime=!1,this.metadataTags={},this.currentMetadataKeys=null,this.isFragmented=!1,this.fragmentTrackDefaults=/* @__PURE__ */ new Map,this.psshBoxes=[],this.currentFragment=null,this.isReadingTraf=!1,this.lastReadFragment=null,this.fragmentSummaries=/* @__PURE__ */ new Map,this.decryptionKeyCache=/* @__PURE__ */ new Map,this.boxNestingDepth=0,this.reader=e._reader}async getTrackBackings(){return await this.readMetadata(),this.tracks.map(e=>e.trackBacking)}async getMimeType(){await this.readMetadata();let e=await this.getTrackBackings(),t=await Promise.all(e.map(e=>e.getDecoderConfig().then(e=>e?.codec??null)));return gi({isQuickTime:this.isQuickTime,hasVideo:this.tracks.some(e=>e.info?.type===`video`),hasAudio:this.tracks.some(e=>e.info?.type===`audio`),codecStrings:t.filter(Boolean)})}async getMetadataTags(){return await this.readMetadata(),this.metadataTags}readMetadata(){return this.metadataPromise??=(async()=>{let e=0,t=!1,r=!1;for(;;){let n=this.reader.requestSliceRange(e,8,16);if(k(n)&&(n=await n),!n)break;let i=e,a=yi(n);if(!a)break;if((a.name===`ftyp`||a.name===`styp`)&&n.remainingLength>=4){let e=G(n,4);this.isQuickTime=e===`qt `}else if(a.name===`moov`){let e=this.reader.requestSlice(n.filePos,a.contentSize);if(k(e)&&(e=await e),!e)break;if(this.moovSlice=e,this.readContiguousBoxes(this.moovSlice),this.movieTimescale===-1)throw Error(`Invalid moov box: missing mvhd box.`);for(let e of this.tracks){let t=e.editListPreviousSegmentDurations/this.movieTimescale;e.editListOffset-=Math.round(t*e.timescale)}t=this.isFragmented&&this.reader.fileSize!==null&&this.reader.fileSize>i+a.totalSize,r=!0;break}else if(a.name===`moof`){if(!this.input._initInput)throw Error(`"moof" box encountered with no "moov" box present; this file is likely a Segment as described in ISO/IEC 14496-12 Section 8.16. A separate init file that contains a "moov" box is required to read this file, please provide it using InputOptions.initInput.`);await this.copyMetadataFromInitInput(this.input._initInput),t=!1,r=!0;break}e=i+a.totalSize}if(!r&&this.input._initInput&&await this.copyMetadataFromInitInput(this.input._initInput),t){n(this.reader.fileSize!==null);let e=this.reader.requestSlice(this.reader.fileSize-4,4);k(e)&&(e=await e),n(e);let t=W(e),r=this.reader.fileSize-t;if(r>=0&&r<=this.reader.fileSize-16){let e=this.reader.requestSliceRange(r,8,16);if(k(e)&&(e=await e),e){let t=yi(e);if(t&&t.name===`mfra`){let n=this.reader.requestSlice(e.filePos,t.contentSize);k(n)&&(n=await n),n&&this.readContiguousBoxes(n)}}}}for(let e of this.tracks){let t=e.fragmentLookupTable;t.sort((e,t)=>e.timestamp-t.timestamp);let n=0;for(let e of t)(n===0||e.timestamp!==t[n-1].timestamp)&&(t[n++]=e);t.length=n}})()}async copyMetadataFromInitInput(t){let r=await t._getDemuxer();if(r.constructor!==e)throw Error(`Init input must match the input's format.`);await r.readMetadata(),this.movieTimescale=r.movieTimescale,this.movieDurationInTimescale=r.movieDurationInTimescale,this.movieMatrix=r.movieMatrix,this.metadataTags=r.metadataTags,this.isFragmented=!0,this.fragmentTrackDefaults=r.fragmentTrackDefaults,this.psshBoxes=r.psshBoxes;for(let e of r.tracks){let t={id:e.id,demuxer:this,trackBacking:null,disposition:e.disposition,timescale:e.timescale,durationInMediaTimescale:e.durationInMediaTimescale,durationInMovieTimescale:e.durationInMovieTimescale,matrix:e.matrix,internalCodecId:e.internalCodecId,name:e.name,languageCode:e.languageCode,sampleTableByteOffset:null,sampleTable:null,fragmentLookupTable:[],currentFragmentState:null,fragmentPositionCache:[],editListPreviousSegmentDurations:e.editListPreviousSegmentDurations,editListOffset:e.editListOffset,encryptionInfo:e.encryptionInfo,encryptionAuxInfo:null,frmaCodecString:null,maxBitrate:e.maxBitrate,avgBitrate:e.avgBitrate,info:e.info};e.trackBacking&&(n(t.info),t.info.type===`video`&&t.info.width!==-1?(t.trackBacking=new zi(t),this.tracks.push(t),this.idToTrack.set(t.id,t)):t.info.type===`audio`&&t.info.numberOfChannels!==-1&&(t.trackBacking=new Bi(t),this.tracks.push(t),this.idToTrack.set(t.id,t)))}}getSampleTableForTrack(e){if(e.sampleTable)return e.sampleTable;let t={sampleTimingEntries:[],sampleCompositionTimeOffsets:[],sampleSizes:[],sampleCount:0,cumulativeSampleSizes:null,keySampleIndices:null,chunkOffsets:[],sampleToChunk:[],sortedCompositionTimeOffsets:null};if(e.sampleTable=t,e.sampleTableByteOffset===null)return t;n(this.moovSlice);let r=this.moovSlice.slice(e.sampleTableByteOffset);this.currentTrack=e;try{this.traverseBox(r)}catch(t){throw e.sampleTable=null,t}finally{this.currentTrack=null}let i=h(t.sampleTimingEntries),a=E(t.sampleToChunk,t.chunkOffsets.length-1,e=>e.startChunkIndex),o=t.sampleToChunk[a];if(t.sampleCount=Math.min(t.sampleCount,i?i.startIndex+i.count:0,o?o.startSampleIndex+(t.chunkOffsets.length-o.startChunkIndex)*o.samplesPerChunk:0),$i(t.sampleTimingEntries,t.sampleCount),$i(t.sampleCompositionTimeOffsets,t.sampleCount),e.info?.type===`audio`&&e.info.codec&&F.includes(e.info.codec)&&t.sampleCompositionTimeOffsets.length===0&&t.sampleTimingEntries.length>0){n(e.info?.type===`audio`);let r=Gr(e.info.codec),i=[],a=[];for(let n=0;n<t.sampleToChunk.length;n++){let o=t.sampleToChunk[n],s=t.sampleToChunk[n+1],c=Math.min(s?s.startChunkIndex:1/0,t.chunkOffsets.length)-o.startChunkIndex,l=a.length;for(let n=0;n<c;n++){let s=o.startSampleIndex+n*o.samplesPerChunk,c=s+o.samplesPerChunk,l=E(t.sampleTimingEntries,s,e=>e.startIndex),u=t.sampleTimingEntries[l],d=E(t.sampleTimingEntries,c,e=>e.startIndex),f=t.sampleTimingEntries[d],p=u.startDecodeTimestamp+(s-u.startIndex)*u.delta,m=f.startDecodeTimestamp+(c-f.startIndex)*f.delta-p,g=h(i);g&&g.delta===m?g.count++:i.push({startIndex:a.length,startDecodeTimestamp:p,count:1,delta:m});let _=o.samplesPerChunk*r.sampleSize*e.info.numberOfChannels;a.push(_)}o.startSampleIndex=l,o.samplesPerChunk=1}t.sampleTimingEntries=i,t.sampleSizes=a,t.sampleCount=a.length}if(t.sampleCompositionTimeOffsets.length>0){let e=t.sampleCompositionTimeOffsets,n=h(e),r=n.startIndex+n.count;r<t.sampleCount&&e.push({startIndex:r,count:t.sampleCount-r,offset:0,startTimestamp:-1,lastTimestamp:-1,maxLastTimestamp:-1});let i=e.filter(e=>e.count>0),a=t.sampleTimingEntries,o=0,s=e=>{for(;o+1<a.length&&a[o+1].startIndex<=e;)o++;let t=a[o];return t.startDecodeTimestamp+(e-t.startIndex)*t.delta};for(let e of i){let t=e.startIndex+e.count-1;e.startTimestamp=s(e.startIndex)+e.offset,e.lastTimestamp=s(t)+e.offset}i.sort((e,t)=>e.startTimestamp-t.startTimestamp||e.startIndex-t.startIndex);let c=-1/0;for(let e of i)c=Math.max(c,e.lastTimestamp),e.maxLastTimestamp=c;t.sortedCompositionTimeOffsets=i}if(t.sampleSizes.length>1){t.cumulativeSampleSizes=[0];for(let e=0;e<t.sampleSizes.length;e++)t.cumulativeSampleSizes.push(t.cumulativeSampleSizes[e]+t.sampleSizes[e])}return t}async readFragment(e){if(this.lastReadFragment?.moofOffset===e)return this.lastReadFragment;let t=this.reader.requestSliceRange(e,8,16);k(t)&&(t=await t),n(t);let r=yi(t);n(r?.name===`moof`);let i=this.reader.requestSlice(e,r.totalSize);if(k(i)&&(i=await i),!i)return null;this.traverseBox(i);let a=this.lastReadFragment;n(a&&a.moofOffset===e),this.fragmentSummaries.set(e,{moofSize:a.moofSize,trackIds:new Set(a.trackData.keys())});for(let[,e]of a.trackData){let t=e.track,{fragmentPositionCache:r}=t;if(!e.startTimestampIsFinal){let i=ye(t.fragmentLookupTable,a.moofOffset,e=>e.moofOffset),o=t.fragmentLookupTable[i];if(o&&e.trunSampleCounts.length>=o.trunNumber&&e.trunSampleCounts[o.trunNumber-1]>=o.sampleNumber){let t=0;for(let n=1;n<o.trunNumber;n++)t+=e.trunSampleCounts[n-1];t+=o.sampleNumber-1;let r=e.samples[t];n(r);let i=o.timestamp-r.presentationTimestamp;Yi(e,i)}else{let t=E(r,a.moofOffset-1,e=>e.moofOffset);if(t!==-1){let n=r[t];Yi(e,n.endTimestamp)}}e.startTimestampIsFinal=!0}let i=E(r,e.startTimestamp,e=>e.startTimestamp),o=r[i],s=r[i+1];if((!o||o.moofOffset<a.moofOffset)&&(!s||s.moofOffset>a.moofOffset)&&r.splice(i+1,0,{moofOffset:a.moofOffset,startTimestamp:e.startTimestamp,endTimestamp:e.endTimestamp}),e.encryptionAuxInfo&&t.encryptionInfo){let n=await ta(this.reader,t.encryptionInfo,e.encryptionAuxInfo);for(let t=0;t<Math.min(e.samples.length,n.length);t++){let r=n[t];e.samples[t].encryption=r}}}return a}readContiguousBoxes(e){if(this.boxNestingDepth===64)throw Error(`Invalid file: boxes are nested too deeply.`);let t=e.filePos;this.boxNestingDepth++;try{for(;e.filePos-t<=e.length-8&&this.traverseBox(e););}finally{this.boxNestingDepth--}}*iterateContiguousBoxes(e){let t=e.filePos;for(;e.filePos-t<=e.length-8;){let t=e.filePos,n=yi(e);if(!n)break;yield{boxInfo:n,slice:e},e.filePos=t+n.totalSize}}traverseBox(e){let t=e.filePos,r=yi(e);if(!r)return!1;let i=e.filePos,a=t+r.totalSize;switch(r.name){case`mdia`:case`minf`:case`dinf`:case`mfra`:case`edts`:case`sinf`:case`schi`:this.readContiguousBoxes(e.slice(i,r.contentSize));break;case`mvhd`:{let t=H(e);if(e.skip(3),t===1?(e.skip(16),this.movieTimescale=W(e),this.movieDurationInTimescale=Au(e)):(e.skip(8),this.movieTimescale=W(e),this.movieDurationInTimescale=W(e)),this.movieTimescale===0)throw Error(`Invalid mvhd box: timescale must not be 0.`);e.skip(16),this.movieMatrix=Xi(e)}break;case`trak`:{if(this.currentFragment||this.currentTrack)break;let t={id:-1,demuxer:this,trackBacking:null,disposition:{...Ut,primary:!1},info:null,timescale:-1,durationInMovieTimescale:-1,durationInMediaTimescale:-1,matrix:o,internalCodecId:null,name:null,languageCode:`und`,sampleTableByteOffset:-1,sampleTable:null,fragmentLookupTable:[],currentFragmentState:null,fragmentPositionCache:[],editListPreviousSegmentDurations:0,editListOffset:0,encryptionInfo:null,encryptionAuxInfo:null,frmaCodecString:null,maxBitrate:null,avgBitrate:null};this.currentTrack=t,this.readContiguousBoxes(e.slice(i,r.contentSize)),t.id!==-1&&t.timescale!==-1&&t.info!==null&&t.sampleTableByteOffset!==-1&&(t.info.type===`video`&&t.info.width!==-1?(t.trackBacking=new zi(t),this.tracks.push(t),this.idToTrack.set(t.id,t)):t.info.type===`audio`&&t.info.numberOfChannels!==-1&&(t.trackBacking=new Bi(t),this.tracks.push(t),this.idToTrack.set(t.id,t))),this.currentTrack=null}break;case`tkhd`:{let t=this.currentTrack;if(!t||this.currentFragment)break;let n=H(e),r=!!(Cu(e)&1);if(t.disposition.default=r,n===0)e.skip(8),t.id=W(e),e.skip(4),t.durationInMovieTimescale=W(e);else if(n===1)e.skip(16),t.id=W(e),e.skip(4),t.durationInMovieTimescale=Au(e);else throw Error(`Incorrect track header version ${n}.`);e.skip(16);let i=Xi(e);t.matrix=p(i,this.movieMatrix)}break;case`elst`:{let t=this.currentTrack;if(!t)break;let n=H(e);e.skip(3);let r=!1,i=0,a=W(e);for(let o=0;o<a;o++){let a=n===1?Au(e):W(e),o=n===1?ju(e):Du(e),s=bi(e);if(r){A._warn(`Unsupported edit list: multiple edits are not currently supported. Only using first edit.`);break}if(o===-1){i+=a;continue}if(s!==1){A._warn(`Unsupported edit list entry: media rate must be 1.`);break}t.editListPreviousSegmentDurations=i,t.editListOffset=o,r=!0}}break;case`mdhd`:{let t=this.currentTrack;if(!t)break;let n=H(e);if(e.skip(3),n===0?(e.skip(8),t.timescale=W(e),t.durationInMediaTimescale=W(e)):n===1&&(e.skip(16),t.timescale=W(e),t.durationInMediaTimescale=Au(e)),t.timescale===0)throw Error(`Invalid mdhd box: timescale must not be 0.`);let r=U(e);if(r>0){t.languageCode=``;for(let e=0;e<3;e++)t.languageCode=String.fromCharCode(96+(r&31))+t.languageCode,r>>=5;Ue(t.languageCode)||(t.languageCode=`und`)}}break;case`hdlr`:{let t=this.currentTrack;if(!t)break;e.skip(8);let n=G(e,4);n===`vide`?t.info={type:`video`,width:-1,height:-1,squarePixelWidth:-1,squarePixelHeight:-1,codec:null,codecDescription:null,colorSpace:{...fe},avcType:null,avcCodecInfo:null,hevcCodecInfo:null,vp9CodecInfo:null,av1CodecInfo:null,proresCodecInfo:null,proresFormat:null}:n===`soun`&&(t.info={type:`audio`,numberOfChannels:-1,sampleRate:-1,codec:null,codecDescription:null,aacCodecInfo:null,dtsFormat:null,pcmLittleEndian:!1,pcmSampleSize:null})}break;case`stbl`:{let n=this.currentTrack;if(!n)break;n.sampleTableByteOffset=t,this.readContiguousBoxes(e.slice(i,r.contentSize))}break;case`stsd`:{let t=this.currentTrack;if(!t||t.info===null||t.sampleTable)break;let n=H(e);e.skip(3);let r=W(e);for(let i=0;i<r;i++){let r=e.filePos,i=yi(e);if(!i)break;t.internalCodecId=i.name;let a=i.name.toLowerCase();if(t.info.type===`video`){e.skip(24),t.info.width=U(e),t.info.height=U(e),t.info.squarePixelWidth=t.info.width,t.info.squarePixelHeight=t.info.height,e.skip(50),t.frmaCodecString=null,this.readContiguousBoxes(e.slice(e.filePos,r+i.totalSize-e.filePos));let n=a===`encv`?t.frmaCodecString:a;t.frmaCodecString=null,n===`avc1`||n===`avc3`?(t.info.codec=`avc`,t.info.avcType=n===`avc1`?1:3):n===`hvc1`||n===`hev1`?t.info.codec=`hevc`:n===`vp08`?t.info.codec=`vp8`:n===`vp09`?t.info.codec=`vp9`:n===`av01`?t.info.codec=`av1`:Mr.includes(a)?(t.info.codec=`prores`,t.info.proresFormat=a):n===null?A._warn(`Unknown encrypted video codec due to missing frma box.`):A._warn(`Unsupported video codec (sample entry type '${i.name}').`)}else{e.skip(8);let o=U(e);e.skip(6);let s=U(e),c=U(e);e.skip(4);let l=W(e)/65536,u=null;n===0&&o>0&&(o===1?(e.skip(4),c=8*W(e),e.skip(8)):o===2&&(e.skip(4),l=Pu(e),s=W(e),e.skip(4),c=W(e),u=W(e),e.skip(8))),t.info.numberOfChannels=s,t.info.sampleRate=l,t.frmaCodecString=null,this.readContiguousBoxes(e.slice(e.filePos,r+i.totalSize-e.filePos));let d=a===`enca`?t.frmaCodecString:a;if(t.frmaCodecString=null,d!==`mp4a`){if(d===`opus`)t.info.codec=`opus`,t.info.sampleRate=Ur;else if(d===`flac`)t.info.codec=`flac`;else if(d===`ulaw`)t.info.codec=`ulaw`;else if(d===`alaw`)t.info.codec=`alaw`;else if(d===`ac-3`)t.info.codec=`ac3`;else if(d===`ec-3`)t.info.codec=`eac3`;else if(Nr.includes(d))t.info.codec=`dts`,t.info.dtsFormat=d;else if(d===`twos`)c===8?t.info.codec=`pcm-s8`:c===16?t.info.codec=t.info.pcmLittleEndian?`pcm-s16`:`pcm-s16be`:(A._warn(`Unsupported sample size ${c} for codec 'twos'.`),t.info.codec=null);else if(d===`sowt`)c===8?t.info.codec=`pcm-s8`:c===16?t.info.codec=`pcm-s16`:(A._warn(`Unsupported sample size ${c} for codec 'sowt'.`),t.info.codec=null);else if(d===`raw `)t.info.codec=`pcm-u8`;else if(d===`in24`)t.info.codec=t.info.pcmLittleEndian?`pcm-s24`:`pcm-s24be`;else if(d===`in32`)t.info.codec=t.info.pcmLittleEndian?`pcm-s32`:`pcm-s32be`;else if(d===`fl32`)t.info.codec=t.info.pcmLittleEndian?`pcm-f32`:`pcm-f32be`;else if(d===`fl64`)t.info.codec=t.info.pcmLittleEndian?`pcm-f64`:`pcm-f64be`;else if(d===`ipcm`){let e=t.info.pcmSampleSize;t.info.pcmLittleEndian?e===16?t.info.codec=`pcm-s16`:e===24?t.info.codec=`pcm-s24`:e===32?t.info.codec=`pcm-s32`:(A._warn(`Invalid ipcm sample size ${e}.`),t.info.codec=null):e===16?t.info.codec=`pcm-s16be`:e===24?t.info.codec=`pcm-s24be`:e===32?t.info.codec=`pcm-s32be`:(A._warn(`Invalid ipcm sample size ${e}.`),t.info.codec=null)}else if(d===`fpcm`){let e=t.info.pcmSampleSize;t.info.pcmLittleEndian?e===32?t.info.codec=`pcm-f32`:e===64?t.info.codec=`pcm-f64`:(A._warn(`Invalid fpcm sample size ${e}.`),t.info.codec=null):e===32?t.info.codec=`pcm-f32be`:e===64?t.info.codec=`pcm-f64be`:(A._warn(`Invalid fpcm sample size ${e}.`),t.info.codec=null)}else if(d===`lpcm`&&u!==null){let e=c+7>>3,n=!!(u&1),r=!!(u&2),i=u&4?-1:0;c>0&&c<=64&&(n?c===32&&(t.info.codec=r?`pcm-f32be`:`pcm-f32`):i&1<<e-1?e===1?t.info.codec=`pcm-s8`:e===2?t.info.codec=r?`pcm-s16be`:`pcm-s16`:e===3?t.info.codec=r?`pcm-s24be`:`pcm-s24`:e===4&&(t.info.codec=r?`pcm-s32be`:`pcm-s32`):e===1&&(t.info.codec=`pcm-u8`)),t.info.codec===null&&A._warn(`Unsupported PCM format.`)}else d===null?A._warn(`Unknown encrypted audio codec due to missing frma box.`):A._warn(`Unsupported audio codec (sample entry type '${i.name}').`)}}e.filePos=r+i.totalSize}}break;case`frma`:{let t=this.currentTrack;if(!t)break;t.frmaCodecString=G(e,4).toLowerCase()}break;case`schm`:{let t=this.currentTrack;if(!t)break;e.skip(4);let n=G(e,4);n===`cenc`||n===`cens`||n===`cbcs`?t.encryptionInfo={scheme:n,defaultKid:null,defaultIsProtected:null,defaultPerSampleIvSize:null,defaultConstantIv:null,defaultCryptByteBlock:null,defaultSkipByteBlock:null}:A._warn(`Unsupported encryption scheme '${n}'.`)}break;case`tenc`:{let t=this.currentTrack;if(!t||!t.encryptionInfo)break;let n=H(e);e.skip(3),e.skip(1);let r=H(e);if(n>0?(t.encryptionInfo.defaultCryptByteBlock=r>>4,t.encryptionInfo.defaultSkipByteBlock=r&15):(t.encryptionInfo.defaultCryptByteBlock=0,t.encryptionInfo.defaultSkipByteBlock=0),t.encryptionInfo.defaultIsProtected=H(e)!==0,t.encryptionInfo.defaultPerSampleIvSize=H(e),t.encryptionInfo.defaultKid=ge(V(e,16)),t.encryptionInfo.defaultPerSampleIvSize>16)throw Error(`Invalid tenc box: IV size must not exceed 16 bytes.`);if(t.encryptionInfo.defaultIsProtected&&t.encryptionInfo.defaultPerSampleIvSize===0){let n=H(e);if(n>16)throw Error(`Invalid tenc box: IV size must not exceed 16 bytes.`);let r=/* @__PURE__ */ new Uint8Array(16);r.set(V(e,n),0),t.encryptionInfo.defaultConstantIv=r}}break;case`avcC`:{let t=this.currentTrack;if(!t||t.info?.type!==`video`||r.contentSize===0)break;t.info.codecDescription=V(e,r.contentSize);let n=vn(t.info.codecDescription)?.sequenceParameterSets[0],i=n&&bn(n);i&&Zi(t,i.pixelAspectRatio)}break;case`hvcC`:{let t=this.currentTrack;if(!t||t.info?.type!==`video`||r.contentSize===0)break;t.info.codecDescription=V(e,r.contentSize);let n=In(t.info.codecDescription)?.arrays.find(e=>e.nalUnitType===N.SPS_NUT)?.nalUnits[0],i=n&&En(n);i&&Zi(t,i.pixelAspectRatio)}break;case`vpcC`:{let t=this.currentTrack;if(!t||t.info?.type!==`video`)break;e.skip(4);let n=H(e),r=H(e),i=H(e),a=i>>4,o=i>>1&7,s=i&1,c=H(e),l=H(e),u=H(e);t.info.vp9CodecInfo={profile:n,level:r,bitDepth:a,chromaSubsampling:o,videoFullRangeFlag:s,colourPrimaries:c,transferCharacteristics:l,matrixCoefficients:u}}break;case`av1C`:{let t=this.currentTrack;if(!t||t.info?.type!==`video`)break;e.skip(1);let n=H(e),i=n>>5,a=n&31,o=H(e),s=o>>7,c=o>>6&1,l=o>>5&1,u=o>>4&1,d=o>>3&1,f=o>>2&1,p=o&3,m=i===2&&c?l?12:10:c?10:8;e.skip(1);let h=V(e,r.contentSize-4),g=Un(h);t.info.av1CodecInfo={profile:i,level:a,tier:s,bitDepth:m,monochrome:u,chromaSubsamplingX:d,chromaSubsamplingY:f,chromaSamplePosition:p,videoFullRangeFlag:g?.videoFullRangeFlag??0,colourPrimaries:g?.colourPrimaries??2,transferCharacteristics:g?.transferCharacteristics??2,matrixCoefficients:g?.matrixCoefficients??2}}break;case`colr`:{let t=this.currentTrack;if(!t||t.info?.type!==`video`)break;let n=G(e,4);if(n!==`nclx`&&n!==`nclc`)break;let r=U(e),i=U(e),a=U(e),o;n===`nclx`&&(o=!!(H(e)&128)),t.info.colorSpace={primaries:ae[r],transfer:se[i],matrix:le[a],fullRange:o}}break;case`pasp`:{let t=this.currentTrack;if(!t||t.info?.type!==`video`)break;let n=W(e),r=W(e);n>0&&r>0&&(t.info.squarePixelWidth=t.info.width,t.info.squarePixelHeight=t.info.height,n>r?t.info.squarePixelWidth=Math.round(t.info.width*n/r):t.info.squarePixelHeight=Math.round(t.info.height*r/n))}break;case`btrt`:{let t=this.currentTrack;if(!t)break;e.skip(4);let n=W(e),r=W(e);t.maxBitrate=n>0?n:null,t.avgBitrate=r>0?r:null}break;case`wave`:this.readContiguousBoxes(e.slice(i,r.contentSize));break;case`esds`:{let t=this.currentTrack;if(!t||t.info?.type!==`audio`)break;e.skip(4);let{objectTypeIndication:n,decoderSpecificInfo:r}=Ci(e);if(n===64||n===103?(t.info.codec=`aac`,t.info.aacCodecInfo={isMpeg2:n===103,objectType:null}):n===105||n===107?t.info.codec=`mp3`:n===221?t.info.codec=`vorbis`:n===169?t.info.codec=`dts`:A._warn(`Unsupported audio codec (objectTypeIndication ${n}) - discarding track.`),r&&(t.info.codecDescription=r,t.info.codec===`aac`)){let e=qt(t.info.codecDescription);e.outputNumberOfChannels!==null&&(t.info.numberOfChannels=e.outputNumberOfChannels),e.outputSampleRate!==null&&(t.info.sampleRate=e.outputSampleRate)}}break;case`enda`:{let t=this.currentTrack;if(!t||t.info?.type!==`audio`)break;t.info.pcmLittleEndian=!!(U(e)&255)}break;case`pcmC`:{let t=this.currentTrack;if(!t||t.info?.type!==`audio`)break;e.skip(4);let n=H(e);t.info.pcmLittleEndian=!!(n&1),t.info.pcmSampleSize=H(e)}break;case`dOps`:{let t=this.currentTrack;if(!t||t.info?.type!==`audio`)break;e.skip(1);let n=H(e),r=U(e),i=W(e),a=wu(e),o=H(e),s;s=o===0?/* @__PURE__ */ new Uint8Array:V(e,2+n);let c=new Uint8Array(19+s.byteLength),l=new DataView(c.buffer);l.setUint32(0,1332770163,!1),l.setUint32(4,1214603620,!1),l.setUint8(8,1),l.setUint8(9,n),l.setUint16(10,r,!0),l.setUint32(12,i,!0),l.setInt16(16,a,!0),l.setUint8(18,o),c.set(s,19),t.info.codecDescription=c,t.info.numberOfChannels=n}break;case`dfLa`:{let t=this.currentTrack;if(!t||t.info?.type!==`audio`)break;e.skip(4);let n=e.filePos;for(;e.filePos<a;){let n=H(e),r=Cu(e);if((n&127)===Zn.STREAMINFO){e.skip(10);let n=W(e),r=n>>>12,i=(n>>9&7)+1;t.info.sampleRate=r,t.info.numberOfChannels=i,e.skip(20)}else e.skip(r);if(n&128)break}let r=e.filePos;e.filePos=n;let i=V(e,r-n),o=new Uint8Array(4+i.byteLength);new DataView(o.buffer).setUint32(0,1716281667,!1),o.set(i,4),t.info.codecDescription=o}break;case`dac3`:{let t=this.currentTrack;if(!t||t.info?.type!==`audio`)break;let n=new j(V(e,3)),r=n.readBits(2);n.skipBits(8);let i=n.readBits(3),a=n.readBits(1);r<3&&(t.info.sampleRate=nn[r]),t.info.numberOfChannels=er[i]+a}break;case`dec3`:{let t=this.currentTrack;if(!t||t.info?.type!==`audio`)break;let n=V(e,r.contentSize),i=sr(n);if(!i){A._warn(`Invalid dec3 box contents, ignoring.`);break}let a=cr(i);a!==null&&(t.info.sampleRate=a),t.info.numberOfChannels=lr(i)}break;case`ddts`:{let t=this.currentTrack;if(!t||t.info?.type!==`audio`)break;let n=V(e,Math.min(r.contentSize,20)),i=Sr(n);if(!i){A._warn(`Invalid ddts box contents, ignoring.`);break}t.info.sampleRate=i.sampleRate,i.numberOfChannels!==null&&(t.info.numberOfChannels=i.numberOfChannels)}break;case`stts`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e),r=0,i=0;for(let a=0;a<n;a++){let n=W(e),a=W(e);t.sampleTable.sampleTimingEntries.push({startIndex:r,startDecodeTimestamp:i,count:n,delta:a}),r+=n,i+=n*a}}break;case`ctts`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e),r=0;for(let i=0;i<n;i++){let n=W(e),i=Du(e);t.sampleTable.sampleCompositionTimeOffsets.push({startIndex:r,count:n,offset:i,startTimestamp:-1,lastTimestamp:-1,maxLastTimestamp:-1}),r+=n}}break;case`stsz`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e),r=W(e);if(n===0)for(let n=0;n<r;n++){let n=W(e);t.sampleTable.sampleSizes.push(n)}else t.sampleTable.sampleSizes.push(n);t.sampleTable.sampleCount=r}break;case`stz2`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4),e.skip(3);let n=H(e),r=W(e);if(n!==4&&n!==8&&n!==16)throw Error(`Invalid stz2 box: unsupported field size ${n}.`);let i=new j(V(e,Math.ceil(r*n/8)));for(let e=0;e<r;e++){let e=i.readBits(n);t.sampleTable.sampleSizes.push(e)}t.sampleTable.sampleCount=r}break;case`stss`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4),t.sampleTable.keySampleIndices=[];let n=W(e);for(let r=0;r<n;r++){let n=W(e)-1;t.sampleTable.keySampleIndices.push(n)}t.sampleTable.keySampleIndices.sort((e,t)=>e-t),t.sampleTable.keySampleIndices[0]!==0&&t.sampleTable.keySampleIndices.unshift(0)}break;case`stsc`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e),r=0;for(let i=0;i<n;i++){let n=W(e)-1,i=W(e),a=W(e),o=h(t.sampleTable.sampleToChunk);if(o&&n<=o.startChunkIndex){r++;continue}t.sampleTable.sampleToChunk.push({startSampleIndex:-1,startChunkIndex:n,samplesPerChunk:i,sampleDescriptionIndex:a})}r>0&&A._warn(`Skipped ${r} invalid stsc entries whose chunk indices weren't strictly increasing.`);let i=0;for(let e=0;e<t.sampleTable.sampleToChunk.length;e++)if(t.sampleTable.sampleToChunk[e].startSampleIndex=i,e<t.sampleTable.sampleToChunk.length-1){let n=t.sampleTable.sampleToChunk[e+1].startChunkIndex-t.sampleTable.sampleToChunk[e].startChunkIndex;i+=n*t.sampleTable.sampleToChunk[e].samplesPerChunk}}break;case`stco`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e);for(let r=0;r<n;r++){let n=W(e);t.sampleTable.chunkOffsets.push(n)}}break;case`co64`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e);for(let r=0;r<n;r++){let n=Au(e);t.sampleTable.chunkOffsets.push(n)}}break;case`mvex`:this.isFragmented=!0,this.readContiguousBoxes(e.slice(i,r.contentSize));break;case`mehd`:{let t=H(e);e.skip(3);let n=t===1?Au(e):W(e);this.movieDurationInTimescale=n}break;case`trex`:{e.skip(4);let t=W(e),n=W(e),r=W(e),i=W(e),a=W(e);this.fragmentTrackDefaults.set(t,{trackId:t,defaultSampleDescriptionIndex:n,defaultSampleDuration:r,defaultSampleSize:i,defaultSampleFlags:a})}break;case`tfra`:{let t=H(e);e.skip(3);let n=W(e),r=this.idToTrack.get(n);if(!r)break;let i=W(e),a=(i&48)>>4,o=(i&12)>>2,s=i&3,c=[H,U,Cu,W],l=c[a],u=c[o],d=c[s],f=W(e);for(let n=0;n<f;n++){let n=t===1?Au(e):W(e),i=t===1?Au(e):W(e);l(e);let a=u(e),o=d(e);a>=1&&o>=1&&r.fragmentLookupTable.push({timestamp:n,moofOffset:i,trunNumber:a,sampleNumber:o})}}break;case`moof`:if(this.currentFragment)break;this.currentFragment={moofOffset:t,moofSize:r.totalSize,implicitBaseDataOffset:t,trackData:/* @__PURE__ */ new Map,psshBoxes:[],sampleCount:0};try{this.readContiguousBoxes(e.slice(i,r.contentSize)),this.lastReadFragment=this.currentFragment}finally{this.currentFragment=null,this.currentTrack=null}break;case`traf`:if(!this.currentFragment||this.isReadingTraf)break;this.isReadingTraf=!0;try{this.readContiguousBoxes(e.slice(i,r.contentSize))}finally{this.isReadingTraf=!1}if(this.currentTrack){let e=this.currentFragment.trackData.get(this.currentTrack.id);cond:if(e){if(e.samples.length===0){this.currentFragment.trackData.delete(this.currentTrack.id);break cond}e.presentationTimestamps=e.samples.map((e,t)=>({presentationTimestamp:e.presentationTimestamp,sampleIndex:t})).sort((e,t)=>e.presentationTimestamp-t.presentationTimestamp);for(let t=0;t<e.presentationTimestamps.length;t++){let n=e.presentationTimestamps[t],r=e.samples[n.sampleIndex];e.firstKeyFrameTimestamp===null&&r.isKeyFrame&&(e.firstKeyFrameTimestamp=r.presentationTimestamp),t<e.presentationTimestamps.length-1&&(r.duration=e.presentationTimestamps[t+1].presentationTimestamp-n.presentationTimestamp)}let t=e.samples[e.presentationTimestamps[0].sampleIndex],r=e.samples[h(e.presentationTimestamps).sampleIndex];e.startTimestamp=t.presentationTimestamp,e.endTimestamp=r.presentationTimestamp+r.duration;let{currentFragmentState:i}=this.currentTrack;n(i),i.startTimestamp!==null&&(Yi(e,i.startTimestamp),e.startTimestampIsFinal=!0),i.encryptionAuxInfo&&!e.samples[0].encryption&&(e.encryptionAuxInfo=i.encryptionAuxInfo)}this.currentTrack.currentFragmentState=null,this.currentTrack=null}break;case`pssh`:{if(this.input._formatOptions.isobmff?._suppressPsshParsing)break;let t=_i(V(e,r.contentSize));this.currentFragment?this.currentFragment.psshBoxes.push(t):this.currentTrack||this.psshBoxes.push(t)}break;case`tfhd`:{if(!this.currentFragment||!this.isReadingTraf||this.currentTrack)break;e.skip(1);let t=Cu(e),n=!!(t&1),r=!!(t&2),i=!!(t&8),a=!!(t&16),o=!!(t&32),s=!!(t&65536),c=!!(t&131072),l=W(e),u=this.idToTrack.get(l);if(!u)break;if(this.currentFragment.trackData.has(l)){A._warn(`Multiple traf boxes for track ${l} in the same moof box; skipping.`);break}let d=this.fragmentTrackDefaults.get(l);this.currentTrack=u,u.currentFragmentState={baseDataOffset:this.currentFragment.implicitBaseDataOffset,sampleDescriptionIndex:d?.defaultSampleDescriptionIndex??null,defaultSampleDuration:d?.defaultSampleDuration??null,defaultSampleSize:d?.defaultSampleSize??null,defaultSampleFlags:d?.defaultSampleFlags??null,startTimestamp:null,encryptionAuxInfo:null},n?u.currentFragmentState.baseDataOffset=Au(e):c&&(u.currentFragmentState.baseDataOffset=this.currentFragment.moofOffset),r&&(u.currentFragmentState.sampleDescriptionIndex=W(e)),i&&(u.currentFragmentState.defaultSampleDuration=W(e)),a&&(u.currentFragmentState.defaultSampleSize=W(e)),o&&(u.currentFragmentState.defaultSampleFlags=W(e)),s&&(u.currentFragmentState.defaultSampleDuration=0)}break;case`tfdt`:{let t=this.currentTrack;if(!t?.currentFragmentState)break;let n=H(e);e.skip(3);let r=n===0?W(e):Au(e);t.currentFragmentState.startTimestamp=r}break;case`trun`:{let t=this.currentTrack;if(!t?.currentFragmentState||!this.currentFragment)break;e.skip(1);let n=Cu(e),r=!!(n&1),i=!!(n&4),a=!!(n&256),o=!!(n&512),s=!!(n&1024),c=!!(n&2048),l=W(e),{defaultSampleDuration:u,defaultSampleSize:d,defaultSampleFlags:f}=t.currentFragmentState;if(l>0&&(!a&&u===null||!o&&d===null||!s&&f===null))throw Error(`Invalid trun box: sample values are missing and there are no defaults.`);if(this.currentFragment.sampleCount+=l,this.currentFragment.sampleCount>2**20)throw Error(`Too many (> 2^20) samples in fragment.`);let p=null;r&&(p=Du(e));let m=null;i&&(m=W(e));let h;this.currentFragment.trackData.has(t.id)?(h=this.currentFragment.trackData.get(t.id),p!==null&&(h.currentOffset=t.currentFragmentState.baseDataOffset+p)):(h={track:t,currentTimestamp:0,currentOffset:t.currentFragmentState.baseDataOffset+(p??0),startTimestamp:0,endTimestamp:0,firstKeyFrameTimestamp:null,samples:[],presentationTimestamps:[],startTimestampIsFinal:!1,trunSampleCounts:[],encryptionAuxInfo:null},this.currentFragment.trackData.set(t.id,h)),h.trunSampleCounts.push(l);for(let t=0;t<l;t++){let n;n=a?W(e):u;let r;r=o?W(e):d;let i;i=s?W(e):f,t===0&&m!==null&&(i=m);let l=0;c&&(l=Du(e));let p=!(i&65536);h.samples.push({presentationTimestamp:h.currentTimestamp+l,duration:n,byteOffset:h.currentOffset,byteSize:r,isKeyFrame:p,encryption:null}),h.currentOffset+=r,h.currentTimestamp+=n}this.currentFragment.implicitBaseDataOffset=h.currentOffset}break;case`saiz`:{let t=this.currentTrack;if(!t||!t.encryptionInfo)break;if(e.skip(1),Cu(e)&1){let n=G(e,4),r=W(e);if(n!==t.encryptionInfo.scheme||r!==0)break}let n=H(e),r=W(e),i=null;n===0&&r>0&&(i=V(e,r));let a=ea(t);a.defaultSampleInfoSize=n,a.sampleSizes=i,a.sampleCount=r}break;case`saio`:{let t=this.currentTrack;if(!t||!t.encryptionInfo)break;let n=H(e);if(Cu(e)&1){let n=G(e,4),r=W(e);if(n!==t.encryptionInfo.scheme||r!==0)break}let r=W(e);if(r===0)break;r>1&&A._warn(`Multiple saio entries are not supported; using the first offset only.`);let i=n===0?W(e):Number(Au(e));this.currentFragment&&(i+=this.currentFragment.moofOffset);let a=ea(t);a.offset=i}break;case`senc`:{let t=this.currentTrack;if(!t||!t.encryptionInfo)break;let n=this.currentFragment?.trackData.get(t.id);if(!n)break;e.skip(1);let r=!!(Cu(e)&2),i=W(e),a=t.encryptionInfo.defaultPerSampleIvSize;if(a===null)throw Error(`Invalid file: encrypted track is missing its tenc box.`);for(let o=0;o<Math.min(i,n.samples.length);o++){let i=/* @__PURE__ */ new Uint8Array(16);if(a>0)i.set(V(e,a),0);else if(t.encryptionInfo.defaultConstantIv)i.set(t.encryptionInfo.defaultConstantIv,0);else throw Error(`Invalid file: encrypted sample has no IV.`);let s=null;if(r){let t=U(e);s=[];for(let n=0;n<t;n++){let t=U(e),n=W(e);s.push({clearLen:t,protectedLen:n})}}let c=n.samples[o];c.encryption={iv:i,subsamples:s}}}break;case`udta`:{let t=this.iterateContiguousBoxes(e.slice(i,r.contentSize));for(let{boxInfo:e,slice:n}of t){if(e.name!==`meta`&&!this.currentTrack){let t=n.filePos;this.metadataTags.raw??={},e.name[0]===`©`?this.metadataTags.raw[e.name]??=wi(n):this.metadataTags.raw[e.name]??=V(n,e.contentSize),n.filePos=t}switch(e.name){case`meta`:n.skip(-e.headerSize),this.traverseBox(n);break;case`©nam`:case`name`:this.currentTrack?this.currentTrack.name=w.decode(V(n,e.contentSize)):this.metadataTags.title??=wi(n);break;case`©des`:this.currentTrack||(this.metadataTags.description??=wi(n));break;case`©ART`:this.currentTrack||(this.metadataTags.artist??=wi(n));break;case`©alb`:this.currentTrack||(this.metadataTags.album??=wi(n));break;case`albr`:this.currentTrack||(this.metadataTags.albumArtist??=wi(n));break;case`©gen`:this.currentTrack||(this.metadataTags.genre??=wi(n));break;case`©day`:if(!this.currentTrack){let e=new Date(wi(n));Number.isNaN(e.getTime())||(this.metadataTags.date??=e)}break;case`©cmt`:this.currentTrack||(this.metadataTags.comment??=wi(n));break;case`©lyr`:this.currentTrack||(this.metadataTags.lyrics??=wi(n))}}}break;case`meta`:{if(this.currentTrack)break;let t=W(e)!==0;this.currentMetadataKeys=/* @__PURE__ */ new Map,t?this.readContiguousBoxes(e.slice(i,r.contentSize)):this.readContiguousBoxes(e.slice(i+4,r.contentSize-4)),this.currentMetadataKeys=null}break;case`keys`:{if(!this.currentMetadataKeys)break;e.skip(4);let t=W(e);for(let n=0;n<t;n++){let t=W(e);if(t<8)throw Error(`Invalid keys box: key size must be at least 8.`);e.skip(4);let r=w.decode(V(e,t-8));this.currentMetadataKeys.set(n+1,r)}}break;case`ilst`:{if(!this.currentMetadataKeys)break;let t=this.iterateContiguousBoxes(e.slice(i,r.contentSize));for(let{boxInfo:e,slice:n}of t){let t=e.name,r=(t.charCodeAt(0)<<24)+(t.charCodeAt(1)<<16)+(t.charCodeAt(2)<<8)+t.charCodeAt(3);this.currentMetadataKeys.has(r)&&(t=this.currentMetadataKeys.get(r));let i=Ti(n);switch(this.metadataTags.raw??={},this.metadataTags.raw[t]??=i,t){case`©nam`:case`titl`:case`com.apple.quicktime.title`:case`title`:typeof i==`string`&&(this.metadataTags.title??=i);break;case`©des`:case`desc`:case`dscp`:case`com.apple.quicktime.description`:case`description`:typeof i==`string`&&(this.metadataTags.description??=i);break;case`©ART`:case`com.apple.quicktime.artist`:case`artist`:typeof i==`string`&&(this.metadataTags.artist??=i);break;case`©alb`:case`albm`:case`com.apple.quicktime.album`:case`album`:typeof i==`string`&&(this.metadataTags.album??=i);break;case`aART`:case`album_artist`:typeof i==`string`&&(this.metadataTags.albumArtist??=i);break;case`©cmt`:case`com.apple.quicktime.comment`:case`comment`:typeof i==`string`&&(this.metadataTags.comment??=i);break;case`©gen`:case`gnre`:case`com.apple.quicktime.genre`:case`genre`:typeof i==`string`&&(this.metadataTags.genre??=i);break;case`©lyr`:case`lyrics`:typeof i==`string`&&(this.metadataTags.lyrics??=i);break;case`©day`:case`rldt`:case`com.apple.quicktime.creationdate`:case`date`:if(typeof i==`string`){let e=new Date(i);Number.isNaN(e.getTime())||(this.metadataTags.date??=e)}break;case`tmpo`:if(i instanceof Uint8Array&&i.length>=2){let e=C(i).getInt16(0,!1);e>0&&(this.metadataTags.beatsPerMinute??=e)}break;case`covr`:case`com.apple.quicktime.artwork`:i instanceof zt?(this.metadataTags.images??=[],this.metadataTags.images.push({data:i.data,kind:`coverFront`,mimeType:i.mimeType})):i instanceof Uint8Array&&(this.metadataTags.images??=[],this.metadataTags.images.push({data:i,kind:`coverFront`,mimeType:`image/*`}));break;case`track`:if(typeof i==`string`){let e=i.split(`/`),t=Number.parseInt(e[0],10),n=e[1]&&Number.parseInt(e[1],10);Number.isInteger(t)&&t>0&&(this.metadataTags.trackNumber??=t),n&&Number.isInteger(n)&&n>0&&(this.metadataTags.tracksTotal??=n)}break;case`trkn`:if(i instanceof Uint8Array&&i.length>=6){let e=C(i),t=e.getUint16(2,!1),n=e.getUint16(4,!1);t>0&&(this.metadataTags.trackNumber??=t),n>0&&(this.metadataTags.tracksTotal??=n)}break;case`disc`:case`disk`:if(i instanceof Uint8Array&&i.length>=6){let e=C(i),t=e.getUint16(2,!1),n=e.getUint16(4,!1);t>0&&(this.metadataTags.discNumber??=t),n>0&&(this.metadataTags.discsTotal??=n)}}}}}return e.filePos=a,!0}},Ri=class{constructor(e){this.internalTrack=e,this.packetToSampleIndex=/* @__PURE__ */ new WeakMap,this.packetToFragmentLocation=/* @__PURE__ */ new WeakMap}getId(){return this.internalTrack.id}getNumber(){let e=this.internalTrack.demuxer,t=this.internalTrack.trackBacking.getType(),n=0;for(let r of e.tracks)if(r.trackBacking.getType()===t&&n++,r===this.internalTrack)break;return n}getCodec(){throw Error(`Not implemented on base class.`)}getInternalCodecId(){return this.internalTrack.internalCodecId}getName(){return this.internalTrack.name}getLanguageCode(){return this.internalTrack.languageCode}getTimeResolution(){return this.internalTrack.timescale}isRelativeToUnixEpoch(){return!1}getUnixTimeForTimestamp(){return null}getDisposition(){return this.internalTrack.disposition}getPairingMask(){return 1n}getBitrate(){return this.internalTrack.maxBitrate}getAverageBitrate(){return this.internalTrack.avgBitrate}async getDurationFromMetadata(){let e=this.internalTrack;return e.durationInMediaTimescale<=0?null:(n(e.trackBacking),((await e.trackBacking.getFirstPacket({metadataOnly:!0}))?.timestamp??0)+e.durationInMediaTimescale/e.timescale)}async getLiveRefreshInterval(){return null}async getFirstPacket(e){let t=await this.fetchPacketForSampleIndex(0,e);return t||!this.internalTrack.demuxer.isFragmented?t:this.performFragmentedLookup(null,e=>e.trackData.get(this.internalTrack.id)?{sampleIndex:0,correctSampleFound:!0}:{sampleIndex:-1,correctSampleFound:!1},-1/0,1/0,e)}mapTimestampIntoTimescale(e){return Fe(e*this.internalTrack.timescale)+this.internalTrack.editListOffset}async getPacket(e,t){let n=this.mapTimestampIntoTimescale(e),r=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),i=Vi(r,n),a=await this.fetchPacketForSampleIndex(i,t);return!Qi(r)||!this.internalTrack.demuxer.isFragmented?a:this.performFragmentedLookup(null,e=>{let t=e.trackData.get(this.internalTrack.id);if(!t)return{sampleIndex:-1,correctSampleFound:!1};let r=E(t.presentationTimestamps,n,e=>e.presentationTimestamp);return{sampleIndex:r===-1?-1:t.presentationTimestamps[r].sampleIndex,correctSampleFound:r!==-1&&n<t.endTimestamp}},n,n,t)}async getNextPacket(e,t){let n=this.packetToSampleIndex.get(e);if(n!==void 0)return this.fetchPacketForSampleIndex(n+1,t);let r=this.packetToFragmentLocation.get(e);if(r===void 0)throw Error(`Packet was not created from this track.`);return this.performFragmentedLookup(r.fragment,e=>{if(e===r.fragment){let t=e.trackData.get(this.internalTrack.id);if(r.sampleIndex+1<t.samples.length)return{sampleIndex:r.sampleIndex+1,correctSampleFound:!0}}else if(e.trackData.get(this.internalTrack.id))return{sampleIndex:0,correctSampleFound:!0};return{sampleIndex:-1,correctSampleFound:!1}},-1/0,1/0,t)}async getKeyPacket(e,t){let n=this.mapTimestampIntoTimescale(e),r=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),i=Hi(r,n),a=await this.fetchPacketForSampleIndex(i,t);return!Qi(r)||!this.internalTrack.demuxer.isFragmented?a:this.performFragmentedLookup(null,e=>{let t=e.trackData.get(this.internalTrack.id);if(!t)return{sampleIndex:-1,correctSampleFound:!1};let r=Ce(t.presentationTimestamps,e=>t.samples[e.sampleIndex].isKeyFrame&&e.presentationTimestamp<=n);return{sampleIndex:r===-1?-1:t.presentationTimestamps[r].sampleIndex,correctSampleFound:r!==-1&&n<t.endTimestamp}},n,n,t)}async getNextKeyPacket(e,t){let r=this.packetToSampleIndex.get(e);if(r!==void 0){let e=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),n=Ji(e,r);return this.fetchPacketForSampleIndex(n,t)}let i=this.packetToFragmentLocation.get(e);if(i===void 0)throw Error(`Packet was not created from this track.`);return this.performFragmentedLookup(i.fragment,e=>{if(e===i.fragment){let t=e.trackData.get(this.internalTrack.id);for(let e=i.sampleIndex+1;e<t.samples.length;e++)if(t.samples[e].isKeyFrame)return{sampleIndex:e,correctSampleFound:!0}}else{let t=e.trackData.get(this.internalTrack.id);if(t&&t.firstKeyFrameTimestamp!==null){let e=t.samples.findIndex(e=>e.isKeyFrame);return n(e!==-1),{sampleIndex:e,correctSampleFound:!0}}}return{sampleIndex:-1,correctSampleFound:!1}},-1/0,1/0,t)}async fetchPacketForSampleIndex(e,t){if(e===-1)return null;let n=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),r=Ui(n,e);if(!r)return null;let i;if(t.metadataOnly)i=hi;else{let t=this.internalTrack.demuxer.reader.requestSlice(r.sampleOffset,r.sampleSize);if(k(t)&&(t=await t),!t)return null;if(i=V(t,r.sampleSize),this.internalTrack.encryptionInfo){let t=null;if(this.internalTrack.encryptionAuxInfo){let n=await ta(this.internalTrack.demuxer.reader,this.internalTrack.encryptionInfo,this.internalTrack.encryptionAuxInfo);e<n.length&&(t=n[e])}t??=na(this.internalTrack.encryptionInfo),t&&(i=await ra(this.internalTrack,t,i,null))}}let a=(r.presentationTimestamp-this.internalTrack.editListOffset)/this.internalTrack.timescale,o=r.duration/this.internalTrack.timescale,s=new I(i,r.isKeyFrame?`key`:`delta`,a,o,e,r.sampleSize);return this.packetToSampleIndex.set(s,e),s}async fetchPacketInFragment(e,t,r){if(t===-1)return null;let i=e.trackData.get(this.internalTrack.id).samples[t];n(i);let a;if(r.metadataOnly)a=hi;else{let t=this.internalTrack.demuxer.reader.requestSlice(i.byteOffset,i.byteSize);if(k(t)&&(t=await t),!t)return null;if(a=V(t,i.byteSize),this.internalTrack.encryptionInfo){let t=i.encryption??na(this.internalTrack.encryptionInfo);t&&(a=await ra(this.internalTrack,t,a,e))}}let o=(i.presentationTimestamp-this.internalTrack.editListOffset)/this.internalTrack.timescale,s=i.duration/this.internalTrack.timescale,c=new I(a,i.isKeyFrame?`key`:`delta`,o,s,e.moofOffset+t,i.byteSize);return this.packetToFragmentLocation.set(c,{fragment:e,sampleIndex:t}),c}async performFragmentedLookup(e,t,n,r,i,a=1/0,o=0){let s=this.internalTrack.demuxer,c=null,l=null,u=-1;if(e){let{sampleIndex:n,correctSampleFound:r}=t(e);if(r)return this.fetchPacketInFragment(e,n,i);n!==-1&&(l=e,u=n)}let d=E(this.internalTrack.fragmentLookupTable,n,e=>e.timestamp),f=d===-1?null:this.internalTrack.fragmentLookupTable[d],p=E(this.internalTrack.fragmentPositionCache,n,e=>e.startTimestamp),m=p===-1?null:this.internalTrack.fragmentPositionCache[p],h=Math.max(f?.moofOffset??0,m?.moofOffset??0)||null,g=!!f&&f.moofOffset>=(m?.moofOffset??0),_;e?h===null||e.moofOffset>=h?(_=e.moofOffset+e.moofSize,c=e):_=h:_=h??0;let v=c?c.moofOffset:_;for(;_<a;){if(c){let e=c.trackData.get(this.internalTrack.id);if(e&&e.startTimestamp>r)break;c=null}let e=s.fragmentSummaries.get(_);if(e&&!e.trackIds.has(this.internalTrack.id)){_+=e.moofSize;continue}let n=s.reader.requestSliceRange(_,8,16);if(k(n)&&(n=await n),!n)break;let a=_,o=yi(n);if(!o)break;if(o.name===`moof`){if(c=await s.readFragment(a),!c)break;let{sampleIndex:e,correctSampleFound:n}=t(c);if(n)return this.fetchPacketInFragment(c,e,i);e!==-1&&(l=c,u=e)}_=a+o.totalSize}if(h!==null&&(!l||l.moofOffset<h)){let e=1<<o,n=(g?this.internalTrack.fragmentLookupTable[d-e]?.timestamp:this.internalTrack.fragmentPositionCache[p-e]?.startTimestamp)??-1/0;return this.performFragmentedLookup(null,t,n,r,i,v,o+1)}return l?this.fetchPacketInFragment(l,u,i):null}},zi=class extends Ri{constructor(e){super(e),this.decoderConfigPromise=null}getType(){return`video`}getCodec(){return this.internalTrack.info.codec}getCodedWidth(){return this.internalTrack.info.width}getCodedHeight(){return this.internalTrack.info.height}getSquarePixelWidth(){return this.internalTrack.info.squarePixelWidth}getSquarePixelHeight(){return this.internalTrack.info.squarePixelHeight}getTransformationMatrix(){return[...this.internalTrack.matrix]}async getColorSpace(){let e=await this.getDecoderConfig();return e?{primaries:e.colorSpace?.primaries,transfer:e.colorSpace?.transfer,matrix:e.colorSpace?.matrix,fullRange:e.colorSpace?.fullRange}:this.internalTrack.info.colorSpace}async canBeTransparent(){return this.internalTrack.info.codec===`prores`&&(this.internalTrack.info.proresFormat===`ap4h`||this.internalTrack.info.proresFormat===`ap4x`)}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{if(this.internalTrack.info.codec===`avc`&&!this.internalTrack.info.codecDescription){let e=await this.getFirstPacket({});this.internalTrack.info.avcCodecInfo=e&&gn(e.data)}else if(this.internalTrack.info.codec===`hevc`&&!this.internalTrack.info.codecDescription){let e=await this.getFirstPacket({});this.internalTrack.info.hevcCodecInfo=e&&Dn(e.data)}else if(this.internalTrack.info.codec===`vp9`&&(!this.internalTrack.info.vp9CodecInfo||!Vn(this.internalTrack.info.vp9CodecInfo))){let e=await this.getFirstPacket({}),t=e&&Bn(e.data);t&&(this.internalTrack.info.vp9CodecInfo={...this.internalTrack.info.vp9CodecInfo??t,videoFullRangeFlag:t.videoFullRangeFlag,colourPrimaries:t.colourPrimaries,transferCharacteristics:t.transferCharacteristics,matrixCoefficients:t.matrixCoefficients})}else if(this.internalTrack.info.codec===`av1`&&(!this.internalTrack.info.av1CodecInfo||!Wn(this.internalTrack.info.av1CodecInfo))){let e=await this.getFirstPacket({}),t=e&&Un(e.data);t&&(this.internalTrack.info.av1CodecInfo=t)}else if(this.internalTrack.info.codec===`prores`&&!this.internalTrack.info.proresCodecInfo){let e=await this.getFirstPacket({});this.internalTrack.info.proresCodecInfo=e&&Gn(e.data)}if(!ue(this.internalTrack.info.colorSpace)){let e=zr(this.internalTrack.info);this.internalTrack.info.colorSpace.primaries??=e.primaries,this.internalTrack.info.colorSpace.transfer??=e.transfer,this.internalTrack.info.colorSpace.matrix??=e.matrix,this.internalTrack.info.colorSpace.fullRange??=e.fullRange}let e={codec:Rr(this.internalTrack.info),codedWidth:this.internalTrack.info.width,codedHeight:this.internalTrack.info.height,description:this.internalTrack.info.codecDescription??void 0,colorSpace:this.internalTrack.info.colorSpace};return(this.internalTrack.info.width!==this.internalTrack.info.squarePixelWidth||this.internalTrack.info.height!==this.internalTrack.info.squarePixelHeight)&&(e.displayAspectWidth=this.internalTrack.info.squarePixelWidth,e.displayAspectHeight=this.internalTrack.info.squarePixelHeight),e})():null}},Bi=class extends Ri{constructor(e){super(e),this.decoderConfigPromise=null}getType(){return`audio`}getCodec(){return this.internalTrack.info.codec}getNumberOfChannels(){return this.internalTrack.info.numberOfChannels}getSampleRate(){return this.internalTrack.info.sampleRate}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{if(this.internalTrack.info.codec===`dts`&&!this.internalTrack.info.dtsFormat){let e=await this.getFirstPacket({});this.internalTrack.info.dtsFormat=e&&yr(e.data)}return{codec:Vr(this.internalTrack.info),numberOfChannels:this.internalTrack.info.numberOfChannels,sampleRate:this.internalTrack.info.sampleRate,description:this.internalTrack.info.codecDescription??void 0}})():null}};const Vi=(e,t)=>{if(e.sortedCompositionTimeOffsets)return Wi(e,t,!1);{let n=E(e.sampleTimingEntries,t,e=>e.startDecodeTimestamp);if(n===-1)return-1;let r=e.sampleTimingEntries[n];return r.delta===0?r.startIndex+r.count-1:r.startIndex+Math.min(Math.floor((t-r.startDecodeTimestamp)/r.delta),r.count-1)}},Hi=(e,t)=>{if(!e.keySampleIndices)return Vi(e,t);if(e.sortedCompositionTimeOffsets)return Wi(e,t,!0);{let n=Vi(e,t),r=E(e.keySampleIndices,n,e=>e);return e.keySampleIndices[r]??-1}},Ui=(e,t)=>{if(t>=e.sampleCount)return null;let n=E(e.sampleTimingEntries,t,e=>e.startIndex),r=e.sampleTimingEntries[n],i=r.startDecodeTimestamp+(t-r.startIndex)*r.delta,a=E(e.sampleCompositionTimeOffsets,t,e=>e.startIndex),o=e.sampleCompositionTimeOffsets[a];o&&t-o.startIndex<o.count&&(i+=o.offset);let s=e.sampleSizes[Math.min(t,e.sampleSizes.length-1)],c=E(e.sampleToChunk,t,e=>e.startSampleIndex),l=e.sampleToChunk[c],u=l.startChunkIndex+Math.floor((t-l.startSampleIndex)/l.samplesPerChunk),d=e.chunkOffsets[u],f=l.startSampleIndex+(u-l.startChunkIndex)*l.samplesPerChunk,p=d;e.sampleSizes.length===1?p+=s*(t-f):p+=e.cumulativeSampleSizes[t]-e.cumulativeSampleSizes[f];let m=r.delta;if(e.sortedCompositionTimeOffsets){let n=Gi(e,t,i);n!==null&&(m=n-i)}return{presentationTimestamp:i,duration:m,sampleOffset:p,sampleSize:s,chunkOffset:d,isKeyFrame:!e.keySampleIndices||ye(e.keySampleIndices,t,e=>e)!==-1}},Wi=(e,t,n)=>{let r=e.sortedCompositionTimeOffsets,i=-1,a=-1/0,o=E(r,t,e=>e.startTimestamp);for(let s=o;s>=0;s--){let o=r[s];if(o.maxLastTimestamp<a)break;let c=o.lastTimestamp<=t?o.startIndex+o.count-1:Ki(e,o,(e,n)=>n>t)-1;if(n){let t=E(e.keySampleIndices,c,e=>e);c=e.keySampleIndices[t]??-1}if(c<o.startIndex)continue;let l=qi(e,c)+o.offset;(l>a||l===a&&c>i)&&(i=c,a=l)}return i},Gi=(e,t,n)=>{let r=e.sortedCompositionTimeOffsets,i=E(r,n,e=>e.startTimestamp),a=r[i+1]?.startTimestamp??null;for(let o=i;o>=0;o--){let i=r[o];if(i.maxLastTimestamp<n)break;let s=Ki(e,i,(e,r)=>r>n||r===n&&e>t);if(s===i.startIndex+i.count)continue;let c=qi(e,s)+i.offset;(a===null||c<a)&&(a=c)}return a},Ki=(e,t,n)=>{let r=t.startIndex,i=t.startIndex+t.count;for(;r<i;){let a=Math.floor((r+i)/2);n(a,qi(e,a)+t.offset)?i=a:r=a+1}return r},qi=(e,t)=>{let n=E(e.sampleTimingEntries,t,e=>e.startIndex),r=e.sampleTimingEntries[n];return r.startDecodeTimestamp+(t-r.startIndex)*r.delta},Ji=(e,t)=>{if(!e.keySampleIndices)return t+1;let n=E(e.keySampleIndices,t,e=>e);return e.keySampleIndices[n+1]??-1},Yi=(e,t)=>{e.startTimestamp+=t,e.endTimestamp+=t;for(let n of e.samples)n.presentationTimestamp+=t;for(let n of e.presentationTimestamps)n.presentationTimestamp+=t},Xi=e=>[bi(e),bi(e),xi(e),bi(e),bi(e),xi(e),bi(e),bi(e),xi(e)],Zi=(e,t)=>{let n=e.info;if(n.type!==`video`)return;let{num:r,den:i}=t;r>0&&i>0&&r!==i&&(r>i?(n.squarePixelWidth=Math.round(n.width*r/i),n.squarePixelHeight=n.height):(n.squarePixelWidth=n.width,n.squarePixelHeight=Math.round(n.height*i/r)))},Qi=e=>e.sampleSizes.length===0,$i=(e,t)=>{for(;e.length>0&&h(e).startIndex>=t;)e.pop();let n=h(e);n&&(n.count=Math.min(n.count,t-n.startIndex))},ea=e=>e.currentFragmentState?e.currentFragmentState.encryptionAuxInfo??={defaultSampleInfoSize:0,sampleSizes:null,sampleCount:0,offset:null,resolved:null}:e.encryptionAuxInfo??={defaultSampleInfoSize:0,sampleSizes:null,sampleCount:0,offset:null,resolved:null},ta=async(e,t,r)=>{if(r.resolved)return r.resolved;if(r.offset===null||r.sampleCount===0)throw Error(`Incomplete saiz/saio info; cannot resolve encryption data.`);let i=0;if(r.defaultSampleInfoSize>0)i=r.defaultSampleInfoSize*r.sampleCount;else{n(r.sampleSizes);for(let e=0;e<r.sampleCount;e++)i+=r.sampleSizes[e]}let a=e.requestSlice(r.offset,i);if(k(a)&&(a=await a),!a)throw Error(`Failed to read auxiliary encryption info.`);let o=t.defaultPerSampleIvSize;if(o===null)throw Error(`Invalid file: encrypted track is missing its tenc box.`);let s=[];for(let e=0;e<r.sampleCount;e++){let n=r.defaultSampleInfoSize>0?r.defaultSampleInfoSize:r.sampleSizes[e],i=/* @__PURE__ */ new Uint8Array(16);if(o>0)i.set(V(a,o),0);else if(t.defaultConstantIv)i.set(t.defaultConstantIv,0);else throw Error(`Invalid file: encrypted sample has no IV.`);let c=null;if(n>o){let e=U(a);c=[];for(let t=0;t<e;t++){let e=U(a),t=W(a);c.push({clearLen:e,protectedLen:t})}}s.push({iv:i,subsamples:c})}return r.resolved=s,s},na=e=>e.defaultConstantIv?{iv:e.defaultConstantIv,subsamples:null}:null,ra=async(e,t,r,i)=>{n(e.encryptionInfo);let a=e.encryptionInfo;if(a.defaultKid===null)throw Error(`Invalid file: encrypted track is missing its tenc box.`);let o=a.defaultKid,s,c=e.demuxer.decryptionKeyCache.get(o);if(c)s=await c;else{if(!e.demuxer.input._formatOptions.isobmff?.resolveKeyId)throw Error(`Encrypted media samples encountered. To decrypt them, please provide a callback for InputOptions.formatOptions.isobmff.resolveKeyId.`);let t=(async()=>{let t=e.demuxer.psshBoxes;if(i){t=[...t,...i.psshBoxes].filter(e=>e.keyIds===null||e.keyIds.includes(o));for(let e=0;e<t.length-1;e++)for(let n=e+1;n<t.length;n++)vi(t[e],t[n])&&(t.splice(n,1),n--)}let n=await e.demuxer.input._formatOptions.isobmff.resolveKeyId({keyId:o,psshBoxes:t});if(!(typeof n==`string`&&n.length===32&&he.test(n)||n instanceof Uint8Array&&n.byteLength===16))throw TypeError(`resolveKeyId must return a 32-character hex string or a 16-byte Uint8Array containing the decryption key.`);return n instanceof Uint8Array?n:_e(n)})();e.demuxer.decryptionKeyCache.set(o,t),s=await t}return a.scheme===`cenc`||a.scheme===`cens`?ia(s,a,t,r):aa(s,a,t,r)},ia=async(e,t,r,i)=>{let a=/* @__PURE__ */ new Uint8Array(16);a.set(r.iv,0);let o=await crypto.subtle.importKey(`raw`,e,{name:`AES-CTR`},!1,[`decrypt`]),s=async e=>{let t=await crypto.subtle.decrypt({name:`AES-CTR`,counter:a,length:64},o,e);return new Uint8Array(t)};if(!r.subsamples)return s(i);n(t.defaultCryptByteBlock!==null&&t.defaultSkipByteBlock!==null);let c=oa(r.subsamples,t.defaultCryptByteBlock,t.defaultSkipByteBlock,i.length),l=0;for(let e of c)for(let t of e.perSubsample)l+=t.length;let u=new Uint8Array(l),d=0;for(let e of c)for(let t of e.perSubsample)u.set(i.subarray(t.offset,t.offset+t.length),d),d+=t.length;let f=await s(u),p=new Uint8Array(i),m=0;for(let e of c)for(let t of e.perSubsample)p.set(f.subarray(m,m+t.length),t.offset),m+=t.length;return p},aa=(e,t,r,i)=>{let a=new Fi;a.init({key:e,iv:r.iv});let o=t.defaultCryptByteBlock,s=t.defaultSkipByteBlock;if(n(o!==null&&s!==null),!r.subsamples){let e=new Uint8Array(i),t=Math.floor(i.length/16);for(let n=0;n<t;n++){let t=n*16;a.in.set(i.subarray(t,t+16)),a.decrypt(),e.set(a.out,t)}return e}if(o===0&&s===0)throw Error(`cbcs with subsamples requires pattern encryption.`);let c=new Uint8Array(i),l=oa(r.subsamples,o,s,i.length),u=new DataView(r.iv.buffer,r.iv.byteOffset,16);for(let e of l){a.iv[0]=u.getUint32(0,!1),a.iv[1]=u.getUint32(4,!1),a.iv[2]=u.getUint32(8,!1),a.iv[3]=u.getUint32(12,!1);for(let t of e.perSubsample){let e=t.length/16;for(let n=0;n<e;n++){let e=t.offset+n*16;a.in.set(i.subarray(e,e+16)),a.decrypt(),c.set(a.out,e)}}}return c},oa=(e,t,n,r)=>{let i=[],a=t!==0||n!==0,o=0;for(let s of e){if(o+s.clearLen+s.protectedLen>r)throw Error(`Invalid encryption info: subsamples exceed the sample size.`);o+=s.clearLen;let e=[];if(!a)s.protectedLen>0&&e.push({offset:o,length:s.protectedLen}),o+=s.protectedLen;else{let r=s.protectedLen,i=o;for(;r>0&&!(r<16*t);){let a=16*t;e.push({offset:i,length:a}),i+=a,r-=a;let o=Math.min(16*n,r);i+=o,r-=o}o+=s.protectedLen}i.push({perSubsample:e})}return i};
129
129
  /*!
130
130
  * Copyright (c) 2026-present, Vanilagy and contributors
131
131
  *
@@ -149,7 +149,7 @@ const Ma=e=>{let t=(e.hasVideo?`video/`:e.hasAudio?`audio/`:`application/`)+(e.i
149
149
  * License, v. 2.0. If a copy of the MPL was not distributed with this
150
150
  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
151
151
  */
152
- var Na;(function(e){e[e.None=0]=`None`,e[e.Xiph=1]=`Xiph`,e[e.FixedSize=2]=`FixedSize`,e[e.Ebml=3]=`Ebml`})(Na||={});var Pa;(function(e){e[e.Block=1]=`Block`,e[e.Private=2]=`Private`,e[e.Next=4]=`Next`})(Pa||={});var Fa;(function(e){e[e.Zlib=0]=`Zlib`,e[e.Bzlib=1]=`Bzlib`,e[e.lzo1x=2]=`lzo1x`,e[e.HeaderStripping=3]=`HeaderStripping`})(Fa||={});const Ia=[{id:L.SeekHead,flag:`seekHeadSeen`},{id:L.Info,flag:`infoSeen`},{id:L.Tracks,flag:`tracksSeen`},{id:L.Cues,flag:`cuesSeen`}],La=10*2**20;var Ra=class extends mi{constructor(e){super(e),this.readMetadataPromise=null,this.segments=[],this.currentSegment=null,this.currentTrack=null,this.currentCluster=null,this.currentBlock=null,this.currentBlockAdditional=null,this.currentCueTime=null,this.currentDecodingInstruction=null,this.currentTagTargetIsMovie=!0,this.currentSimpleTagName=null,this.currentAttachedFile=null,this.isWebM=!1,this.claimedSeekTargets=/* @__PURE__ */ new Set,this.elementNestingDepth=0,this.reader=e._reader}async getTrackBackings(){return await this.readMetadata(),this.segments.flatMap(e=>e.tracks.map(e=>e.trackBacking))}async getMimeType(){await this.readMetadata();let e=await this.getTrackBackings(),t=await Promise.all(e.map(e=>e.getDecoderConfig().then(e=>e?.codec??null)));return Ma({isWebM:this.isWebM,hasVideo:this.segments.some(e=>e.tracks.some(e=>e.info?.type===`video`)),hasAudio:this.segments.some(e=>e.tracks.some(e=>e.info?.type===`audio`)),codecStrings:t.filter(Boolean)})}async getMetadataTags(){await this.readMetadata();for(let e of this.segments)e.metadataTagsPromise||=this.reader.fileSize===null?Promise.resolve():this.loadSegmentMetadata(e),await e.metadataTagsPromise;let e={};for(let t of this.segments)e={...e,...t.metadataTags};return e}readMetadata(){return this.readMetadataPromise??=(async()=>{let e=0;for(;;){let t=this.reader.requestSliceRange(e,2,16);if(k(t)&&(t=await t),!t)break;let n=wa(t);if(!n)break;let r=n.id,i=n.size,a=t.filePos;if(r===L.EBML){ja(i);let e=this.reader.requestSlice(a,i);if(k(e)&&(e=await e),!e)break;this.readContiguousElements(e)}else if(r===L.Segment){if(await this.readSegment(a,i),i===void 0||this.reader.fileSize===null)break}else if(r===L.Cluster){if(this.reader.fileSize===null)break;i===void 0&&(i=(await Oa(this.reader,a,pa,this.reader.fileSize)).pos-a);let e=h(this.segments);e&&(e.elementEndPos=a+i)}ja(i),e=a+i}})()}async readSegment(e,t){this.currentSegment={seekHeadSeen:!1,infoSeen:!1,tracksSeen:!1,cuesSeen:!1,tagsSeen:!1,attachmentsSeen:!1,timestampScale:-1,timestampFactor:-1,duration:-1,seekEntries:[],tracks:[],idToTrack:/* @__PURE__ */ new Map,cuePoints:[],dataStartPos:e,elementEndPos:t===void 0?null:e+t,clusterSeekStartPos:e,lastReadCluster:null,clusterSummaries:/* @__PURE__ */ new Map,metadataTags:{},metadataTagsPromise:null},this.segments.push(this.currentSegment);let n=e,r=/* @__PURE__ */ new Set;for(;this.currentSegment.elementEndPos===null||n<this.currentSegment.elementEndPos;){let t=this.reader.requestSliceRange(n,2,16);if(k(t)&&(t=await t),!t)break;let i=n,a=wa(t);if(!a||!fa.includes(a.id)&&a.id!==L.Void){let e=await ka(this.reader,i+1,fa,Math.min(this.currentSegment.elementEndPos??1/0,i+La));if(e){n=e;continue}break}let{id:o,size:s}=a,c=t.filePos,l=Ia.findIndex(e=>e.id===o);if(l!==-1){let t=Ia[l].flag;this.currentSegment[t]=!0,o===L.SeekHead&&r.add(i-e),ja(s);let n=this.reader.requestSlice(c,s);k(n)&&(n=await n),n&&this.readContiguousElements(n)}else if(o===L.Tags||o===L.Attachments){o===L.Tags?this.currentSegment.tagsSeen=!0:this.currentSegment.attachmentsSeen=!0,ja(s);let e=this.reader.requestSlice(c,s);k(e)&&(e=await e),e&&this.readContiguousElements(e)}else if(o===L.Cluster){this.currentSegment.clusterSeekStartPos=i;break}if(s===void 0)break;n=c+s}if(this.reader.fileSize!==null)for(let t=0;t<this.currentSegment.seekEntries.length;t++){let n=this.currentSegment.seekEntries[t];if(n.id!==L.SeekHead||r.has(n.segmentPosition)||(r.add(n.segmentPosition),!this.claimSeekTarget(e+n.segmentPosition)))continue;let i=this.reader.requestSliceRange(e+n.segmentPosition,2,16);if(k(i)&&(i=await i),!i)continue;let a=wa(i);if(!a||a.id!==L.SeekHead)continue;let{size:o}=a;ja(o);let s=this.reader.requestSlice(i.filePos,o);k(s)&&(s=await s),s&&this.readContiguousElements(s)}if(this.currentSegment.seekEntries.sort((e,t)=>e.segmentPosition-t.segmentPosition),this.reader.fileSize!==null)for(let t of this.currentSegment.seekEntries){let n=Ia.find(e=>e.id===t.id);if(!n||this.currentSegment[n.flag]||!this.claimSeekTarget(e+t.segmentPosition))continue;let r=this.reader.requestSliceRange(e+t.segmentPosition,2,16);if(k(r)&&(r=await r),!r)continue;let i=wa(r);if(!i)continue;let{id:a,size:o}=i;if(a!==n.id)continue;ja(o),this.currentSegment[n.flag]=!0;let s=this.reader.requestSlice(r.filePos,o);k(s)&&(s=await s),s&&this.readContiguousElements(s)}this.currentSegment.timestampScale===-1&&(this.currentSegment.timestampScale=1e6,this.currentSegment.timestampFactor=1e3);for(let e of this.currentSegment.tracks)e.defaultDurationNs!==null&&(e.defaultDuration=this.currentSegment.timestampFactor*e.defaultDurationNs/1e9);for(let e of this.currentSegment.cuePoints){let t=this.currentSegment.idToTrack.get(e.trackId);t&&t.cuePoints.push(e)}for(let e of this.currentSegment.tracks){let t=e.cuePoints;t.sort((e,t)=>e.time-t.time);let n=0;for(let e of t)(n===0||e.time!==t[n-1].time)&&(t[n++]=e);t.length=n}let i=null,a=-1/0;for(let e of this.currentSegment.tracks)e.cuePoints.length>a&&(a=e.cuePoints.length,i=e);for(let e of this.currentSegment.tracks)e.cuePoints.length===0&&(e.cuePoints=i.cuePoints);this.currentSegment=null}async readCluster(e,t){if(t.lastReadCluster?.elementStartPos===e)return t.lastReadCluster;let r=this.reader.requestSliceRange(e,2,16);k(r)&&(r=await r),n(r);let i=e,a=wa(r);n(a);let o=a.id;n(o===L.Cluster);let s=a.size,c=r.filePos;s===void 0&&(s=(await Oa(this.reader,c,pa,t.elementEndPos)).pos-c);let l=this.reader.requestSlice(c,s);k(l)&&(l=await l);let u={segment:t,elementStartPos:i,elementEndPos:c+s,dataStartPos:c,timestamp:-1,trackData:/* @__PURE__ */ new Map};if(l){this.currentCluster=u;try{u.elementEndPos=this.readContiguousElements(l,pa)}finally{this.currentCluster=null,this.currentBlock=null}}for(let[,e]of u.trackData){let t=e.track;n(e.blocks.length>0);let r=!1;for(let t=0;t<e.blocks.length;t++){let n=e.blocks[t];n.timestamp+=u.timestamp,r||=n.lacing!==Na.None}e.presentationTimestamps=e.blocks.map((e,t)=>({timestamp:e.timestamp,blockIndex:t})).sort((e,t)=>e.timestamp-t.timestamp);for(let n=0;n<e.presentationTimestamps.length;n++){let r=e.presentationTimestamps[n],i=e.blocks[r.blockIndex];e.firstKeyFrameTimestamp===null&&i.isKeyFrame&&(e.firstKeyFrameTimestamp=i.timestamp),n<e.presentationTimestamps.length-1?i.duration=e.presentationTimestamps[n+1].timestamp-i.timestamp:i.duration===0&&t.defaultDuration!=null&&i.lacing===Na.None&&(i.duration=t.defaultDuration)}r&&(e.blocks=this.expandLacedBlocks(e.blocks,t),e.presentationTimestamps=e.blocks.map((e,t)=>({timestamp:e.timestamp,blockIndex:t})).sort((e,t)=>e.timestamp-t.timestamp));let a=e.blocks[e.presentationTimestamps[0].blockIndex],o=e.blocks[h(e.presentationTimestamps).blockIndex];e.startTimestamp=a.timestamp,e.endTimestamp=o.timestamp+o.duration;let s=E(t.clusterPositionCache,e.startTimestamp,e=>e.startTimestamp),c=t.clusterPositionCache[s],l=t.clusterPositionCache[s+1];(!c||c.elementStartPos<i)&&(!l||l.elementStartPos>i)&&t.clusterPositionCache.splice(s+1,0,{elementStartPos:u.elementStartPos,startTimestamp:e.startTimestamp})}return t.lastReadCluster=u,t.clusterSummaries.set(e,{elementEndPos:u.elementEndPos,trackIds:new Set(u.trackData.keys())}),u}getTrackDataInCluster(e,t){let n=e.trackData.get(t);if(!n){let r=e.segment.idToTrack.get(t);if(!r)return null;n={track:r,startTimestamp:0,endTimestamp:0,firstKeyFrameTimestamp:null,blocks:[],presentationTimestamps:[]},e.trackData.set(t,n)}return n}expandLacedBlocks(e,t){let r=[];for(let i of e){if(i.lacing===Na.None){r.push(i);continue}let e=bu.tempFromBytes(i.data);if(e.length===0)throw Error(`Invalid laced block: no data.`);let a=[],o=H(e)+1;switch(i.lacing){case Na.Xiph:{let t=0;for(let n=0;n<o-1;n++){let n=0;for(;e.bufferPos<e.length;){let r=H(e);if(n+=r,r<255){a.push(n),t+=n;break}}}a.push(e.length-(e.bufferPos+t))}break;case Na.FixedSize:{let t=e.length-1,n=Math.floor(t/o);for(let e=0;e<o;e++)a.push(n)}break;case Na.Ebml:{let t=ba(e);if(t===null)throw Error(`Invalid EBML lacing: bad frame size.`);let n=t;a.push(n);let r=n;for(let t=1;t<o-1;t++){let t=e.bufferPos,i=ba(e);if(i===null)throw Error(`Invalid EBML lacing: bad frame size.`);let o=i-((1<<(e.bufferPos-t)*7-1)-1);n+=o,a.push(n),r+=n}a.push(e.length-(e.bufferPos+r))}break;default:n(!1)}if(a.length!==o||a.some(e=>e<=0))throw Error(`Invalid block lacing: frame sizes don't match the block.`);let s=i.duration||o*(t.defaultDuration??0);for(let t=0;t<o;t++){let n=a[t],c=V(e,n),l=i.timestamp+s*t/o,u=s/o;r.push({timestamp:l,duration:u,isKeyFrame:i.isKeyFrame,data:c,lacing:Na.None,decoded:i.decoded,postProcessed:!1,mainAdditional:i.mainAdditional})}}return r}async loadSegmentMetadata(e){for(let t of e.seekEntries){if((t.id!==L.Tags||e.tagsSeen)&&(t.id!==L.Attachments||e.attachmentsSeen)||!this.claimSeekTarget(e.dataStartPos+t.segmentPosition))continue;let r=this.reader.requestSliceRange(e.dataStartPos+t.segmentPosition,2,16);if(k(r)&&(r=await r),!r)continue;let i=wa(r);if(!i||i.id!==t.id)continue;let{size:a}=i;ja(a);let o=this.reader.requestSlice(r.filePos,a);if(k(o)&&(o=await o),o){n(!this.currentSegment),this.currentSegment=e;try{this.readContiguousElements(o)}finally{this.currentSegment=null}}t.id===L.Tags?e.tagsSeen=!0:t.id===L.Attachments&&(e.attachmentsSeen=!0)}}claimSeekTarget(e){return!this.claimedSeekTargets.has(e)&&(this.claimedSeekTargets.add(e),!0)}readContiguousElements(e,t){if(this.elementNestingDepth===64)throw Error(`Invalid file: elements are nested too deeply.`);this.elementNestingDepth++;try{for(;e.remainingLength>=2;){let n=e.filePos;if(!this.traverseElement(e,t))return n}return e.filePos}finally{this.elementNestingDepth--}}traverseElement(e,t){let i=wa(e);if(!i||t&&t.includes(i.id))return!1;let{id:o,size:s}=i,c=e.filePos;if(ja(s),c+s>e.end)return!1;switch(o){case L.DocType:this.isWebM=Ta(e,s)===`webm`;break;case L.Seek:{if(!this.currentSegment)break;let t={id:-1,segmentPosition:-1};this.currentSegment.seekEntries.push(t),this.readContiguousElements(e.slice(c,s)),(t.id===-1||t.segmentPosition===-1)&&this.currentSegment.seekEntries.pop()}break;case L.SeekID:{let t=this.currentSegment?.seekEntries[this.currentSegment.seekEntries.length-1];if(!t)break;t.id=R(e,s)}break;case L.SeekPosition:{let t=this.currentSegment?.seekEntries[this.currentSegment.seekEntries.length-1];if(!t)break;t.segmentPosition=R(e,s)}break;case L.TimestampScale:{if(!this.currentSegment)break;let t=R(e,s);if(t===0)throw Error(`Invalid TimestampScale element: must not be 0.`);this.currentSegment.timestampScale=t,this.currentSegment.timestampFactor=1e9/t}break;case L.Duration:if(!this.currentSegment)break;this.currentSegment.duration=Da(e,s);break;case L.TrackEntry:if(!this.currentSegment||(this.currentTrack={id:-1,segment:this.currentSegment,demuxer:this,clusterPositionCache:[],cuePoints:[],disposition:{...Ut,primary:!1},trackBacking:null,codecId:null,codecPrivate:null,defaultDuration:null,defaultDurationNs:null,name:null,languageCode:`eng`,hasLanguageBcp47:!1,decodingInstructions:[],info:null},this.readContiguousElements(e.slice(c,s)),!this.currentTrack))break;if(this.currentTrack.decodingInstructions.some(e=>e.data?.type!==`decompress`||e.scope!==Pa.Block||e.data.algorithm!==Fa.HeaderStripping)&&(A._warn(`Track #${this.currentTrack.id} has an unsupported content encoding; dropping.`),this.currentTrack=null),this.currentTrack&&this.currentSegment.idToTrack.has(this.currentTrack.id)&&(A._warn(`Track #${this.currentTrack.id} is defined more than once; dropping.`),this.currentTrack=null),this.currentTrack&&this.currentTrack.id!==-1&&this.currentTrack.codecId&&this.currentTrack.info){let e=this.currentTrack.codecId.indexOf(`/`),t=e===-1?this.currentTrack.codecId:this.currentTrack.codecId.slice(0,e);if(this.currentTrack.info.type===`video`&&this.currentTrack.info.width!==-1&&this.currentTrack.info.height!==-1){if(this.currentTrack.info.squarePixelWidth=this.currentTrack.info.width,this.currentTrack.info.squarePixelHeight=this.currentTrack.info.height,this.currentTrack.info.displayWidth!==null&&this.currentTrack.info.displayHeight!==null){let e=this.currentTrack.info.displayWidth*this.currentTrack.info.height,t=this.currentTrack.info.displayHeight*this.currentTrack.info.width;e>0&&t>0&&(e>t?this.currentTrack.info.squarePixelWidth=Math.round(this.currentTrack.info.width*e/t):this.currentTrack.info.squarePixelHeight=Math.round(this.currentTrack.info.height*t/e))}if(this.currentTrack.codecId===Aa.avc)this.currentTrack.info.codec=`avc`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate;else if(this.currentTrack.codecId===Aa.hevc)this.currentTrack.info.codec=`hevc`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate;else if(t===Aa.vp8)this.currentTrack.info.codec=`vp8`;else if(t===Aa.vp9)this.currentTrack.info.codec=`vp9`;else if(t===Aa.av1)this.currentTrack.info.codec=`av1`;else if(t===Aa.prores){let e=this.currentTrack.codecPrivate?w.decode(this.currentTrack.codecPrivate):``;Mr.includes(e)&&(this.currentTrack.info.codec=`prores`,this.currentTrack.info.proresFormat=e)}let e=this.currentTrack;this.currentTrack.trackBacking=new Ba(e),this.currentSegment.tracks.push(this.currentTrack),this.currentSegment.idToTrack.set(this.currentTrack.id,this.currentTrack)}else if(this.currentTrack.info.type===`audio`){t===Aa.aac?(this.currentTrack.info.codec=`aac`,this.currentTrack.info.aacCodecInfo={isMpeg2:this.currentTrack.codecId.includes(`MPEG2`),objectType:null},this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):this.currentTrack.codecId===Aa.mp3?this.currentTrack.info.codec=`mp3`:t===Aa.opus?(this.currentTrack.info.codec=`opus`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate,this.currentTrack.info.sampleRate=Ur):t===Aa.vorbis?(this.currentTrack.info.codec=`vorbis`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):t===Aa.flac?(this.currentTrack.info.codec=`flac`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):t===Aa.ac3?(this.currentTrack.info.codec=`ac3`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):t===Aa.eac3?(this.currentTrack.info.codec=`eac3`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):t===Aa.dts?(this.currentTrack.info.codec=`dts`,this.currentTrack.codecId===`A_DTS/EXPRESS`?this.currentTrack.info.dtsFormat=`dtse`:this.currentTrack.codecId===`A_DTS/LOSSLESS`&&(this.currentTrack.info.dtsFormat=`dtsl`)):this.currentTrack.codecId===`A_PCM/INT/LIT`?this.currentTrack.info.bitDepth===8?this.currentTrack.info.codec=`pcm-u8`:this.currentTrack.info.bitDepth===16?this.currentTrack.info.codec=`pcm-s16`:this.currentTrack.info.bitDepth===24?this.currentTrack.info.codec=`pcm-s24`:this.currentTrack.info.bitDepth===32&&(this.currentTrack.info.codec=`pcm-s32`):this.currentTrack.codecId===`A_PCM/INT/BIG`?this.currentTrack.info.bitDepth===8?this.currentTrack.info.codec=`pcm-u8`:this.currentTrack.info.bitDepth===16?this.currentTrack.info.codec=`pcm-s16be`:this.currentTrack.info.bitDepth===24?this.currentTrack.info.codec=`pcm-s24be`:this.currentTrack.info.bitDepth===32&&(this.currentTrack.info.codec=`pcm-s32be`):this.currentTrack.codecId===`A_PCM/FLOAT/IEEE`&&(this.currentTrack.info.bitDepth===32?this.currentTrack.info.codec=`pcm-f32`:this.currentTrack.info.bitDepth===64&&(this.currentTrack.info.codec=`pcm-f64`));let e=this.currentTrack;this.currentTrack.trackBacking=new Va(e),this.currentSegment.tracks.push(this.currentTrack),this.currentSegment.idToTrack.set(this.currentTrack.id,this.currentTrack)}}this.currentTrack=null;break;case L.TrackNumber:if(!this.currentTrack)break;this.currentTrack.id=R(e,s);break;case L.TrackType:{if(!this.currentTrack)break;let t=R(e,s);t===1?this.currentTrack.info={type:`video`,width:-1,height:-1,displayWidth:null,displayHeight:null,displayUnit:null,squarePixelWidth:-1,squarePixelHeight:-1,horizontalScale:1,verticalScale:1,rotation:0,codec:null,codecDescription:null,colorSpace:{...fe},alphaMode:!1,proresFormat:null}:t===2&&(this.currentTrack.info={type:`audio`,numberOfChannels:1,sampleRate:8e3,bitDepth:-1,codec:null,codecDescription:null,aacCodecInfo:null,dtsFormat:null})}break;case L.FlagEnabled:if(!this.currentTrack)break;R(e,s)||(this.currentTrack=null);break;case L.FlagDefault:if(!this.currentTrack)break;this.currentTrack.disposition.default=!!R(e,s);break;case L.FlagForced:if(!this.currentTrack)break;this.currentTrack.disposition.forced=!!R(e,s);break;case L.FlagOriginal:if(!this.currentTrack)break;this.currentTrack.disposition.original=!!R(e,s);break;case L.FlagHearingImpaired:if(!this.currentTrack)break;this.currentTrack.disposition.hearingImpaired=!!R(e,s);break;case L.FlagVisualImpaired:if(!this.currentTrack)break;this.currentTrack.disposition.visuallyImpaired=!!R(e,s);break;case L.FlagCommentary:if(!this.currentTrack)break;this.currentTrack.disposition.commentary=!!R(e,s);break;case L.CodecID:if(!this.currentTrack)break;this.currentTrack.codecId=Ta(e,s);break;case L.CodecPrivate:if(!this.currentTrack)break;this.currentTrack.codecPrivate=V(e,s);break;case L.DefaultDuration:if(!this.currentTrack)break;this.currentTrack.defaultDurationNs=R(e,s);break;case L.Name:if(!this.currentTrack)break;this.currentTrack.name=Ea(e,s);break;case L.Language:if(!this.currentTrack||this.currentTrack.hasLanguageBcp47)break;this.currentTrack.languageCode=Ta(e,s),Ue(this.currentTrack.languageCode)||(this.currentTrack.languageCode=`und`);break;case L.LanguageBCP47:{if(!this.currentTrack)break;let t=Ta(e,s).split(`-`)[0];t?this.currentTrack.languageCode=t:this.currentTrack.languageCode=`und`,this.currentTrack.hasLanguageBcp47=!0}break;case L.Video:if(this.currentTrack?.info?.type!==`video`)break;this.readContiguousElements(e.slice(c,s));break;case L.PixelWidth:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.width=R(e,s);break;case L.PixelHeight:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.height=R(e,s);break;case L.DisplayWidth:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.displayWidth=R(e,s);break;case L.DisplayHeight:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.displayHeight=R(e,s);break;case L.DisplayUnit:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.displayUnit=R(e,s);break;case L.AlphaMode:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.alphaMode=R(e,s)===1;break;case L.Colour:if(this.currentTrack?.info?.type!==`video`)break;this.readContiguousElements(e.slice(c,s));break;case L.MatrixCoefficients:{if(this.currentTrack?.info?.type!==`video`)break;let t=R(e,s),n=le[t];this.currentTrack.info.colorSpace.matrix=n}break;case L.Range:{if(this.currentTrack?.info?.type!==`video`)break;let t=R(e,s);this.currentTrack.info.colorSpace.fullRange=t===1||t===2?t===2:void 0}break;case L.TransferCharacteristics:{if(this.currentTrack?.info?.type!==`video`)break;let t=R(e,s),n=se[t];this.currentTrack.info.colorSpace.transfer=n}break;case L.Primaries:{if(this.currentTrack?.info?.type!==`video`)break;let t=R(e,s),n=ae[t];this.currentTrack.info.colorSpace.primaries=n}break;case L.Projection:if(this.currentTrack?.info?.type!==`video`)break;this.readContiguousElements(e.slice(c,s));break;case L.ProjectionPoseYaw:{if(this.currentTrack?.info?.type!==`video`)break;let t=Da(e,s);try{let e=a(t);this.currentTrack.info.horizontalScale=Math.round(Math.cos(e*r))}catch{}}break;case L.ProjectionPosePitch:{if(this.currentTrack?.info?.type!==`video`)break;let t=Da(e,s);try{let e=a(t);this.currentTrack.info.verticalScale=Math.round(Math.cos(e*r))}catch{}}break;case L.ProjectionPoseRoll:{if(this.currentTrack?.info?.type!==`video`)break;let t=-Da(e,s);try{this.currentTrack.info.rotation=a(t)}catch{}}break;case L.Audio:if(this.currentTrack?.info?.type!==`audio`)break;this.readContiguousElements(e.slice(c,s));break;case L.SamplingFrequency:{if(this.currentTrack?.info?.type!==`audio`)break;let t=Da(e,s);if(!(t>0)||!Number.isFinite(t))throw Error(`Invalid SamplingFrequency element: must be a positive, finite number.`);this.currentTrack.info.sampleRate=t}break;case L.Channels:{if(this.currentTrack?.info?.type!==`audio`)break;let t=R(e,s);if(t===0)throw Error(`Invalid Channels element: must not be 0.`);this.currentTrack.info.numberOfChannels=t}break;case L.BitDepth:if(this.currentTrack?.info?.type!==`audio`)break;this.currentTrack.info.bitDepth=R(e,s);break;case L.CuePoint:if(!this.currentSegment)break;this.readContiguousElements(e.slice(c,s)),this.currentCueTime=null;break;case L.CueTime:this.currentCueTime=R(e,s);break;case L.CueTrackPositions:{if(this.currentCueTime===null||!this.currentSegment)break;let t={time:this.currentCueTime,trackId:-1,clusterPosition:-1};this.currentSegment.cuePoints.push(t),this.readContiguousElements(e.slice(c,s)),(t.trackId===-1||t.clusterPosition===-1)&&this.currentSegment.cuePoints.pop()}break;case L.CueTrack:{let t=this.currentSegment?.cuePoints[this.currentSegment.cuePoints.length-1];if(!t)break;t.trackId=R(e,s)}break;case L.CueClusterPosition:{let t=this.currentSegment?.cuePoints[this.currentSegment.cuePoints.length-1];if(!t)break;n(this.currentSegment),t.clusterPosition=this.currentSegment.dataStartPos+R(e,s)}break;case L.Timestamp:if(!this.currentCluster)break;this.currentCluster.timestamp=R(e,s);break;case L.SimpleBlock:{if(!this.currentCluster)break;let t=e.slice(c,s),n=ba(t);if(n===null||t.remainingLength<3)break;let r=this.getTrackDataInCluster(this.currentCluster,n);if(!r)break;let i=wu(t),a=H(t),o=a>>1&3,l=!!(a&128);r.track.info?.type===`audio`&&r.track.info.codec&&(l=!0);let u=V(t,t.remainingLength),d=r.track.decodingInstructions.length>0;r.blocks.push({timestamp:i,duration:0,isKeyFrame:l,data:u,lacing:o,decoded:!d,postProcessed:!1,mainAdditional:null})}break;case L.BlockGroup:if(!this.currentCluster)break;this.readContiguousElements(e.slice(c,s)),this.currentBlock=null;break;case L.Block:{if(!this.currentCluster)break;let t=e.slice(c,s),n=ba(t);if(n===null||t.remainingLength<3)break;let r=this.getTrackDataInCluster(this.currentCluster,n);if(!r)break;let i=wu(t),a=H(t)>>1&3,o=V(t,t.remainingLength),l=r.track.decodingInstructions.length>0;this.currentBlock={timestamp:i,duration:0,isKeyFrame:!0,data:o,lacing:a,decoded:!l,postProcessed:!1,mainAdditional:null},r.blocks.push(this.currentBlock)}break;case L.BlockAdditions:this.readContiguousElements(e.slice(c,s));break;case L.BlockMore:{let t=this.currentBlock;if(!t)break;let n={addId:1,data:null};this.currentBlockAdditional=n,this.readContiguousElements(e.slice(c,s)),n.data&&n.addId===1&&(t.mainAdditional=n.data),this.currentBlockAdditional=null}break;case L.BlockAdditional:if(!this.currentBlockAdditional)break;this.currentBlockAdditional.data=V(e,s);break;case L.BlockAddID:if(!this.currentBlockAdditional)break;this.currentBlockAdditional.addId=R(e,s);break;case L.BlockDuration:if(!this.currentBlock)break;this.currentBlock.duration=R(e,s);break;case L.ReferenceBlock:if(!this.currentBlock)break;this.currentBlock.isKeyFrame=!1;break;case L.Tag:this.currentTagTargetIsMovie=!0,this.readContiguousElements(e.slice(c,s));break;case L.Targets:this.readContiguousElements(e.slice(c,s));break;case L.TargetTypeValue:R(e,s)!==50&&(this.currentTagTargetIsMovie=!1);break;case L.TagTrackUID:case L.TagEditionUID:case L.TagChapterUID:case L.TagAttachmentUID:this.currentTagTargetIsMovie=!1;break;case L.SimpleTag:if(!this.currentTagTargetIsMovie)break;this.currentSimpleTagName=null,this.readContiguousElements(e.slice(c,s));break;case L.TagName:this.currentSimpleTagName=Ea(e,s);break;case L.TagString:{if(!this.currentSimpleTagName)break;let t=Ea(e,s);this.processTagValue(this.currentSimpleTagName,t)}break;case L.TagBinary:{if(!this.currentSimpleTagName)break;let t=V(e,s);this.processTagValue(this.currentSimpleTagName,t)}break;case L.AttachedFile:{if(!this.currentSegment||this.currentAttachedFile)break;this.currentAttachedFile={fileUid:null,fileName:null,fileMediaType:null,fileData:null,fileDescription:null},this.readContiguousElements(e.slice(c,s));let t=this.currentSegment.metadataTags;if(this.currentAttachedFile.fileUid&&this.currentAttachedFile.fileData&&(t.raw??={},t.raw[this.currentAttachedFile.fileUid.toString()]=new Bt(this.currentAttachedFile.fileData,this.currentAttachedFile.fileMediaType??void 0,this.currentAttachedFile.fileName??void 0,this.currentAttachedFile.fileDescription??void 0)),this.currentAttachedFile.fileMediaType?.startsWith(`image/`)&&this.currentAttachedFile.fileData){let e=this.currentAttachedFile.fileName,n=`unknown`;if(e){let t=e.toLowerCase();t.startsWith(`cover.`)?n=`coverFront`:t.startsWith(`back.`)&&(n=`coverBack`)}t.images??=[],t.images.push({data:this.currentAttachedFile.fileData,mimeType:this.currentAttachedFile.fileMediaType,kind:n,name:this.currentAttachedFile.fileName??void 0,description:this.currentAttachedFile.fileDescription??void 0})}this.currentAttachedFile=null}break;case L.FileUID:if(!this.currentAttachedFile)break;this.currentAttachedFile.fileUid=xa(e,s);break;case L.FileName:if(!this.currentAttachedFile)break;this.currentAttachedFile.fileName=Ea(e,s);break;case L.FileMediaType:if(!this.currentAttachedFile)break;this.currentAttachedFile.fileMediaType=Ta(e,s);break;case L.FileData:if(!this.currentAttachedFile)break;this.currentAttachedFile.fileData=V(e,s);break;case L.FileDescription:if(!this.currentAttachedFile)break;this.currentAttachedFile.fileDescription=Ea(e,s);break;case L.ContentEncodings:{let t=this.currentTrack;if(!t)break;this.readContiguousElements(e.slice(c,s)),t.decodingInstructions.sort((e,t)=>t.order-e.order)}break;case L.ContentEncoding:{let t=this.currentTrack;if(!t)break;let n={order:0,scope:Pa.Block,data:null};this.currentDecodingInstruction=n,this.readContiguousElements(e.slice(c,s)),n.data&&t.decodingInstructions.push(n),this.currentDecodingInstruction=null}break;case L.ContentEncodingOrder:if(!this.currentDecodingInstruction)break;this.currentDecodingInstruction.order=R(e,s);break;case L.ContentEncodingScope:if(!this.currentDecodingInstruction)break;this.currentDecodingInstruction.scope=R(e,s);break;case L.ContentCompression:if(!this.currentDecodingInstruction)break;this.currentDecodingInstruction.data={type:`decompress`,algorithm:Fa.Zlib,settings:null},this.readContiguousElements(e.slice(c,s));break;case L.ContentCompAlgo:if(this.currentDecodingInstruction?.data?.type!==`decompress`)break;this.currentDecodingInstruction.data.algorithm=R(e,s);break;case L.ContentCompSettings:if(this.currentDecodingInstruction?.data?.type!==`decompress`)break;this.currentDecodingInstruction.data.settings=V(e,s);break;case L.ContentEncryption:if(!this.currentDecodingInstruction)break;this.currentDecodingInstruction.data={type:`decrypt`}}return e.filePos=c+s,!0}decodeBlockData(e,t){n(e.decodingInstructions.length>0);let r=t;for(let t of e.decodingInstructions)if(n(t.data),t.data.type===`decompress`)switch(t.data.algorithm){case Fa.HeaderStripping:if(t.data.settings&&t.data.settings.length>0){let e=t.data.settings,n=new Uint8Array(e.length+r.length);n.set(e,0),n.set(r,e.length),r=n}}return r}processTagValue(e,t){if(!this.currentSegment?.metadataTags)return;let n=this.currentSegment.metadataTags;if(n.raw??={},n.raw[e]??=t,typeof t==`string`)switch(e.toLowerCase()){case`title`:n.title??=t;break;case`description`:n.description??=t;break;case`artist`:n.artist??=t;break;case`album`:n.album??=t;break;case`album_artist`:n.albumArtist??=t;break;case`genre`:n.genre??=t;break;case`bpm`:{let e=Number.parseInt(t,10);Number.isInteger(e)&&e>0&&(n.beatsPerMinute??=e)}break;case`comment`:n.comment??=t;break;case`lyrics`:n.lyrics??=t;break;case`date`:{let e=new Date(t);Number.isNaN(e.getTime())||(n.date??=e)}break;case`track_number`:case`part_number`:{let e=t.split(`/`),r=Number.parseInt(e[0],10),i=e[1]&&Number.parseInt(e[1],10);Number.isInteger(r)&&r>0&&(n.trackNumber??=r),i&&Number.isInteger(i)&&i>0&&(n.tracksTotal??=i)}break;case`disc_number`:case`disc`:{let e=t.split(`/`),r=Number.parseInt(e[0],10),i=e[1]&&Number.parseInt(e[1],10);Number.isInteger(r)&&r>0&&(n.discNumber??=r),i&&Number.isInteger(i)&&i>0&&(n.discsTotal??=i)}}}getDurationFromMetadata(e){return e.duration<=0?null:e.duration/e.timestampFactor}},za=class{constructor(e){this.internalTrack=e,this.packetToClusterLocation=/* @__PURE__ */ new WeakMap}getId(){return this.internalTrack.id}getNumber(){let e=this.internalTrack.demuxer,t=this.internalTrack.trackBacking.getType(),n=0;for(let r of e.segments)for(let e of r.tracks)if(e.trackBacking.getType()===t&&n++,e===this.internalTrack)break;return n}getCodec(){throw Error(`Not implemented on base class.`)}getInternalCodecId(){return this.internalTrack.codecId}getName(){return this.internalTrack.name}getLanguageCode(){return this.internalTrack.languageCode}getTimeResolution(){return this.internalTrack.segment.timestampFactor}isRelativeToUnixEpoch(){return!1}getUnixTimeForTimestamp(){return null}getDisposition(){return this.internalTrack.disposition}getPairingMask(){return 1n}getBitrate(){return null}getAverageBitrate(){return null}async getDurationFromMetadata(){return this.internalTrack.demuxer.getDurationFromMetadata(this.internalTrack.segment)}async getLiveRefreshInterval(){return null}async getFirstPacket(e){return this.performClusterLookup(null,e=>e.trackData.get(this.internalTrack.id)?{blockIndex:0,correctBlockFound:!0}:{blockIndex:-1,correctBlockFound:!1},-1/0,1/0,e)}intoTimescale(e){return Fe(e*this.internalTrack.segment.timestampFactor)}async getPacket(e,t){let n=this.intoTimescale(e);return this.performClusterLookup(null,e=>{let t=e.trackData.get(this.internalTrack.id);if(!t)return{blockIndex:-1,correctBlockFound:!1};let r=E(t.presentationTimestamps,n,e=>e.timestamp);return{blockIndex:r===-1?-1:t.presentationTimestamps[r].blockIndex,correctBlockFound:r!==-1&&n<t.endTimestamp}},n,n,t)}async getNextPacket(e,t){let n=this.packetToClusterLocation.get(e);if(n===void 0)throw Error(`Packet was not created from this track.`);return this.performClusterLookup(n.cluster,e=>{if(e===n.cluster){let t=e.trackData.get(this.internalTrack.id);if(n.blockIndex+1<t.blocks.length)return{blockIndex:n.blockIndex+1,correctBlockFound:!0}}else if(e.trackData.get(this.internalTrack.id))return{blockIndex:0,correctBlockFound:!0};return{blockIndex:-1,correctBlockFound:!1}},-1/0,1/0,t)}async getKeyPacket(e,t){let n=this.intoTimescale(e);return this.performClusterLookup(null,e=>{let t=e.trackData.get(this.internalTrack.id);if(!t)return{blockIndex:-1,correctBlockFound:!1};let r=Ce(t.presentationTimestamps,e=>t.blocks[e.blockIndex].isKeyFrame&&e.timestamp<=n);return{blockIndex:r===-1?-1:t.presentationTimestamps[r].blockIndex,correctBlockFound:r!==-1&&n<t.endTimestamp}},n,n,t)}async getNextKeyPacket(e,t){let r=this.packetToClusterLocation.get(e);if(r===void 0)throw Error(`Packet was not created from this track.`);return this.performClusterLookup(r.cluster,e=>{if(e===r.cluster){let t=e.trackData.get(this.internalTrack.id);for(let e=r.blockIndex+1;e<t.blocks.length;e++)if(t.blocks[e].isKeyFrame)return{blockIndex:e,correctBlockFound:!0}}else{let t=e.trackData.get(this.internalTrack.id);if(t&&t.firstKeyFrameTimestamp!==null){let e=t.blocks.findIndex(e=>e.isKeyFrame);return n(e!==-1),{blockIndex:e,correctBlockFound:!0}}}return{blockIndex:-1,correctBlockFound:!1}},-1/0,1/0,t)}async fetchPacketInCluster(e,t,r){if(t===-1)return null;let i=e.trackData.get(this.internalTrack.id).blocks[t];if(n(i),i.decoded||=(i.data=this.internalTrack.demuxer.decodeBlockData(this.internalTrack,i.data),!0),!i.postProcessed){if(this.internalTrack.info?.codec===`prores`&&!(i.data.length>=8&&i.data[4]===105&&i.data[5]===99&&i.data[6]===112&&i.data[7]===102)){let e=new Uint8Array(i.data.length+8);C(e).setUint32(0,e.length,!1),e[4]=105,e[5]=99,e[6]=112,e[7]=102,e.set(i.data,8),i.data=e}i.postProcessed=!0}let a=r.metadataOnly?hi:i.data,o=i.timestamp/this.internalTrack.segment.timestampFactor,s=i.duration/this.internalTrack.segment.timestampFactor,c={};i.mainAdditional&&this.internalTrack.info?.type===`video`&&this.internalTrack.info.alphaMode&&(c.alpha=r.metadataOnly?hi:i.mainAdditional,c.alphaByteLength=i.mainAdditional.byteLength);let l=new I(a,i.isKeyFrame?`key`:`delta`,o,s,e.dataStartPos+t,i.data.byteLength,c);return this.packetToClusterLocation.set(l,{cluster:e,blockIndex:t}),l}async performClusterLookup(e,t,r,i,a,o=!1){let{demuxer:s,segment:c}=this.internalTrack,l=null,u=null,d=-1;if(e){let{blockIndex:n,correctBlockFound:r}=t(e);if(r)return this.fetchPacketInCluster(e,n,a);n!==-1&&(u=e,d=n)}let f=E(this.internalTrack.cuePoints,r,e=>e.time),p=f===-1?null:this.internalTrack.cuePoints[f],m=E(this.internalTrack.clusterPositionCache,r,e=>e.startTimestamp),h=m===-1?null:this.internalTrack.clusterPositionCache[m],g=Math.max(p?.clusterPosition??0,h?.elementStartPos??0)||null,_;for(e?g===null||e.elementStartPos>=g?(_=e.elementEndPos,l=e):_=g:_=g??c.clusterSeekStartPos;c.elementEndPos===null||_<=c.elementEndPos-2;){if(l){let e=l.trackData.get(this.internalTrack.id);if(e&&e.startTimestamp>i)break}let e=c.clusterSummaries.get(_);if(e&&!e.trackIds.has(this.internalTrack.id)){_=e.elementEndPos;continue}let r=s.reader.requestSliceRange(_,2,16);if(k(r)&&(r=await r),!r)break;let o=_,f=wa(r);if(!f||!fa.includes(f.id)&&f.id!==L.Void){let e=await ka(s.reader,o+1,fa,Math.min(c.elementEndPos??1/0,o+La));if(e){_=e;continue}break}let p=f.id,m=f.size,h=r.filePos;if(p===L.Cluster){l=await s.readCluster(o,c),m=l.elementEndPos-h;let{blockIndex:e,correctBlockFound:n}=t(l);if(n)return this.fetchPacketInCluster(l,e,a);e!==-1&&(u=l,d=e)}m===void 0&&(n(p!==L.Cluster),m=(await Oa(s.reader,h,pa,c.elementEndPos)).pos-h);let g=h+m;if(c.elementEndPos===null){let e=s.reader.requestSliceRange(g,2,16);if(k(e)&&(e=await e),!e)break;if(Sa(e)===L.Segment){c.elementEndPos=g;break}}_=g}if(p&&(!u||u.elementStartPos<p.clusterPosition)){let e=this.internalTrack.cuePoints[f-1],n=!o&&e?e.time:-1/0;return this.performClusterLookup(null,t,n,i,a,!0)}return u?this.fetchPacketInCluster(u,d,a):null}},Ba=class extends za{constructor(e){super(e),this.decoderConfigPromise=null}getType(){return`video`}getCodec(){return this.internalTrack.info.codec}getCodedWidth(){return this.internalTrack.info.width}getCodedHeight(){return this.internalTrack.info.height}getSquarePixelWidth(){return this.internalTrack.info.squarePixelWidth}getSquarePixelHeight(){return this.internalTrack.info.squarePixelHeight}getTransformationMatrix(){let e=this.internalTrack.info,t=p(f(e.horizontalScale,e.verticalScale),u(e.rotation));return s(t,e.width,e.height)}async getColorSpace(){let e=await this.getDecoderConfig();return e?{primaries:e.colorSpace?.primaries,transfer:e.colorSpace?.transfer,matrix:e.colorSpace?.matrix,fullRange:e.colorSpace?.fullRange}:this.internalTrack.info.colorSpace}async canBeTransparent(){return this.internalTrack.info.alphaMode||this.internalTrack.info.codec===`prores`&&(this.internalTrack.info.proresFormat===`ap4h`||this.internalTrack.info.proresFormat===`ap4x`)}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{let e=null;(this.internalTrack.info.codec===`vp9`||this.internalTrack.info.codec===`av1`||this.internalTrack.info.codec===`prores`||this.internalTrack.info.codec===`avc`&&!this.internalTrack.info.codecDescription||this.internalTrack.info.codec===`hevc`&&!this.internalTrack.info.codecDescription)&&(e=await this.getFirstPacket({}));let t={width:this.internalTrack.info.width,height:this.internalTrack.info.height,codec:this.internalTrack.info.codec,codecDescription:this.internalTrack.info.codecDescription,colorSpace:this.internalTrack.info.colorSpace,avcType:1,avcCodecInfo:this.internalTrack.info.codec===`avc`&&e?gn(e.data):null,hevcCodecInfo:this.internalTrack.info.codec===`hevc`&&e?Dn(e.data):null,vp9CodecInfo:this.internalTrack.info.codec===`vp9`&&e?Bn(e.data):null,av1CodecInfo:this.internalTrack.info.codec===`av1`&&e?Un(e.data):null,proresCodecInfo:this.internalTrack.info.codec===`prores`&&e?Gn(e.data):null,proresFormat:this.internalTrack.info.proresFormat};if(!ue(this.internalTrack.info.colorSpace)){let e=zr(t);this.internalTrack.info.colorSpace.primaries??=e.primaries,this.internalTrack.info.colorSpace.transfer??=e.transfer,this.internalTrack.info.colorSpace.matrix??=e.matrix,this.internalTrack.info.colorSpace.fullRange??=e.fullRange}let n={codec:Rr(t),codedWidth:this.internalTrack.info.width,codedHeight:this.internalTrack.info.height,description:this.internalTrack.info.codecDescription??void 0,colorSpace:this.internalTrack.info.colorSpace};return(this.internalTrack.info.width!==this.internalTrack.info.squarePixelWidth||this.internalTrack.info.height!==this.internalTrack.info.squarePixelHeight)&&(n.displayAspectWidth=this.internalTrack.info.squarePixelWidth,n.displayAspectHeight=this.internalTrack.info.squarePixelHeight),n})():null}},Va=class extends za{constructor(e){super(e),this.decoderConfigPromise=null}getType(){return`audio`}getCodec(){return this.internalTrack.info.codec}getNumberOfChannels(){return this.internalTrack.info.numberOfChannels}getSampleRate(){return this.internalTrack.info.sampleRate}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{if(this.internalTrack.info.codec===`dts`&&!this.internalTrack.info.dtsFormat){let e=await this.getFirstPacket({});this.internalTrack.info.dtsFormat=e&&yr(e.data)}return{codec:Vr({codec:this.internalTrack.info.codec,codecDescription:this.internalTrack.info.codecDescription,aacCodecInfo:this.internalTrack.info.aacCodecInfo,dtsFormat:this.internalTrack.info.dtsFormat}),numberOfChannels:this.internalTrack.info.numberOfChannels,sampleRate:this.internalTrack.info.sampleRate,description:this.internalTrack.info.codecDescription??void 0}})():null}};
152
+ var Na;(function(e){e[e.None=0]=`None`,e[e.Xiph=1]=`Xiph`,e[e.FixedSize=2]=`FixedSize`,e[e.Ebml=3]=`Ebml`})(Na||={});var Pa;(function(e){e[e.Block=1]=`Block`,e[e.Private=2]=`Private`,e[e.Next=4]=`Next`})(Pa||={});var Fa;(function(e){e[e.Zlib=0]=`Zlib`,e[e.Bzlib=1]=`Bzlib`,e[e.lzo1x=2]=`lzo1x`,e[e.HeaderStripping=3]=`HeaderStripping`})(Fa||={});const Ia=[{id:L.SeekHead,flag:`seekHeadSeen`},{id:L.Info,flag:`infoSeen`},{id:L.Tracks,flag:`tracksSeen`},{id:L.Cues,flag:`cuesSeen`}],La=10*2**20;var Ra=class extends mi{constructor(e){super(e),this.readMetadataPromise=null,this.segments=[],this.currentSegment=null,this.currentTrack=null,this.currentCluster=null,this.currentBlock=null,this.currentBlockAdditional=null,this.currentCueTime=null,this.currentDecodingInstruction=null,this.currentTagTargetIsMovie=!0,this.currentSimpleTagName=null,this.currentAttachedFile=null,this.isWebM=!1,this.claimedSeekTargets=/* @__PURE__ */ new Set,this.elementNestingDepth=0,this.reader=e._reader}async getTrackBackings(){return await this.readMetadata(),this.segments.flatMap(e=>e.tracks.map(e=>e.trackBacking))}async getMimeType(){await this.readMetadata();let e=await this.getTrackBackings(),t=await Promise.all(e.map(e=>e.getDecoderConfig().then(e=>e?.codec??null)));return Ma({isWebM:this.isWebM,hasVideo:this.segments.some(e=>e.tracks.some(e=>e.info?.type===`video`)),hasAudio:this.segments.some(e=>e.tracks.some(e=>e.info?.type===`audio`)),codecStrings:t.filter(Boolean)})}async getMetadataTags(){await this.readMetadata();for(let e of this.segments)e.metadataTagsPromise||=this.reader.fileSize===null?Promise.resolve():this.loadSegmentMetadata(e),await e.metadataTagsPromise;let e={};for(let t of this.segments)e={...e,...t.metadataTags};return e}readMetadata(){return this.readMetadataPromise??=(async()=>{let e=0;for(;;){let t=this.reader.requestSliceRange(e,2,16);if(k(t)&&(t=await t),!t)break;let n=wa(t);if(!n)break;let r=n.id,i=n.size,a=t.filePos;if(r===L.EBML){ja(i);let e=this.reader.requestSlice(a,i);if(k(e)&&(e=await e),!e)break;this.readContiguousElements(e)}else if(r===L.Segment){if(await this.readSegment(a,i),i===void 0||this.reader.fileSize===null)break}else if(r===L.Cluster){if(this.reader.fileSize===null)break;i===void 0&&(i=(await Oa(this.reader,a,pa,this.reader.fileSize)).pos-a);let e=h(this.segments);e&&(e.elementEndPos=a+i)}ja(i),e=a+i}})()}async readSegment(e,t){this.currentSegment={seekHeadSeen:!1,infoSeen:!1,tracksSeen:!1,cuesSeen:!1,tagsSeen:!1,attachmentsSeen:!1,timestampScale:-1,timestampFactor:-1,duration:-1,seekEntries:[],tracks:[],idToTrack:/* @__PURE__ */ new Map,cuePoints:[],dataStartPos:e,elementEndPos:t===void 0?null:e+t,clusterSeekStartPos:e,lastReadCluster:null,clusterSummaries:/* @__PURE__ */ new Map,metadataTags:{},metadataTagsPromise:null},this.segments.push(this.currentSegment);let n=e,r=/* @__PURE__ */ new Set;for(;this.currentSegment.elementEndPos===null||n<this.currentSegment.elementEndPos;){let t=this.reader.requestSliceRange(n,2,16);if(k(t)&&(t=await t),!t)break;let i=n,a=wa(t);if(!a||!fa.includes(a.id)&&a.id!==L.Void){let e=await ka(this.reader,i+1,fa,Math.min(this.currentSegment.elementEndPos??1/0,i+La));if(e){n=e;continue}break}let{id:o,size:s}=a,c=t.filePos,l=Ia.findIndex(e=>e.id===o);if(l!==-1){let t=Ia[l].flag;this.currentSegment[t]=!0,o===L.SeekHead&&r.add(i-e),ja(s);let n=this.reader.requestSlice(c,s);k(n)&&(n=await n),n&&this.readContiguousElements(n)}else if(o===L.Tags||o===L.Attachments){o===L.Tags?this.currentSegment.tagsSeen=!0:this.currentSegment.attachmentsSeen=!0,ja(s);let e=this.reader.requestSlice(c,s);k(e)&&(e=await e),e&&this.readContiguousElements(e)}else if(o===L.Cluster){this.currentSegment.clusterSeekStartPos=i;break}if(s===void 0)break;n=c+s}if(this.reader.fileSize!==null)for(let t=0;t<this.currentSegment.seekEntries.length;t++){let n=this.currentSegment.seekEntries[t];if(n.id!==L.SeekHead||r.has(n.segmentPosition)||(r.add(n.segmentPosition),!this.claimSeekTarget(e+n.segmentPosition)))continue;let i=this.reader.requestSliceRange(e+n.segmentPosition,2,16);if(k(i)&&(i=await i),!i)continue;let a=wa(i);if(!a||a.id!==L.SeekHead)continue;let{size:o}=a;ja(o);let s=this.reader.requestSlice(i.filePos,o);k(s)&&(s=await s),s&&this.readContiguousElements(s)}if(this.currentSegment.seekEntries.sort((e,t)=>e.segmentPosition-t.segmentPosition),this.reader.fileSize!==null)for(let t of this.currentSegment.seekEntries){let n=Ia.find(e=>e.id===t.id);if(!n||this.currentSegment[n.flag]||!this.claimSeekTarget(e+t.segmentPosition))continue;let r=this.reader.requestSliceRange(e+t.segmentPosition,2,16);if(k(r)&&(r=await r),!r)continue;let i=wa(r);if(!i)continue;let{id:a,size:o}=i;if(a!==n.id)continue;ja(o),this.currentSegment[n.flag]=!0;let s=this.reader.requestSlice(r.filePos,o);k(s)&&(s=await s),s&&this.readContiguousElements(s)}this.currentSegment.timestampScale===-1&&(this.currentSegment.timestampScale=1e6,this.currentSegment.timestampFactor=1e3);for(let e of this.currentSegment.tracks)e.defaultDurationNs!==null&&(e.defaultDuration=this.currentSegment.timestampFactor*e.defaultDurationNs/1e9);for(let e of this.currentSegment.cuePoints){let t=this.currentSegment.idToTrack.get(e.trackId);t&&t.cuePoints.push(e)}for(let e of this.currentSegment.tracks){let t=e.cuePoints;t.sort((e,t)=>e.time-t.time);let n=0;for(let e of t)(n===0||e.time!==t[n-1].time)&&(t[n++]=e);t.length=n}let i=null,a=-1/0;for(let e of this.currentSegment.tracks)e.cuePoints.length>a&&(a=e.cuePoints.length,i=e);for(let e of this.currentSegment.tracks)e.cuePoints.length===0&&(e.cuePoints=i.cuePoints);this.currentSegment=null}async readCluster(e,t){if(t.lastReadCluster?.elementStartPos===e)return t.lastReadCluster;let r=this.reader.requestSliceRange(e,2,16);k(r)&&(r=await r),n(r);let i=e,a=wa(r);n(a);let o=a.id;n(o===L.Cluster);let s=a.size,c=r.filePos;s===void 0&&(s=(await Oa(this.reader,c,pa,t.elementEndPos)).pos-c);let l=this.reader.requestSlice(c,s);k(l)&&(l=await l);let u={segment:t,elementStartPos:i,elementEndPos:c+s,dataStartPos:c,timestamp:-1,trackData:/* @__PURE__ */ new Map};if(l){this.currentCluster=u;try{u.elementEndPos=this.readContiguousElements(l,pa)}finally{this.currentCluster=null,this.currentBlock=null}}for(let[,e]of u.trackData){let t=e.track;n(e.blocks.length>0);let r=!1;for(let t=0;t<e.blocks.length;t++){let n=e.blocks[t];n.timestamp+=u.timestamp,r||=n.lacing!==Na.None}e.presentationTimestamps=e.blocks.map((e,t)=>({timestamp:e.timestamp,blockIndex:t})).sort((e,t)=>e.timestamp-t.timestamp);for(let n=0;n<e.presentationTimestamps.length;n++){let r=e.presentationTimestamps[n],i=e.blocks[r.blockIndex];e.firstKeyFrameTimestamp===null&&i.isKeyFrame&&(e.firstKeyFrameTimestamp=i.timestamp),n<e.presentationTimestamps.length-1?i.duration=e.presentationTimestamps[n+1].timestamp-i.timestamp:i.duration===0&&t.defaultDuration!=null&&i.lacing===Na.None&&(i.duration=t.defaultDuration)}r&&(e.blocks=this.expandLacedBlocks(e.blocks,t),e.presentationTimestamps=e.blocks.map((e,t)=>({timestamp:e.timestamp,blockIndex:t})).sort((e,t)=>e.timestamp-t.timestamp));let a=e.blocks[e.presentationTimestamps[0].blockIndex],o=e.blocks[h(e.presentationTimestamps).blockIndex];e.startTimestamp=a.timestamp,e.endTimestamp=o.timestamp+o.duration;let s=E(t.clusterPositionCache,e.startTimestamp,e=>e.startTimestamp),c=t.clusterPositionCache[s],l=t.clusterPositionCache[s+1];(!c||c.elementStartPos<i)&&(!l||l.elementStartPos>i)&&t.clusterPositionCache.splice(s+1,0,{elementStartPos:u.elementStartPos,startTimestamp:e.startTimestamp})}return t.lastReadCluster=u,t.clusterSummaries.set(e,{elementEndPos:u.elementEndPos,trackIds:new Set(u.trackData.keys())}),u}getTrackDataInCluster(e,t){let n=e.trackData.get(t);if(!n){let r=e.segment.idToTrack.get(t);if(!r)return null;n={track:r,startTimestamp:0,endTimestamp:0,firstKeyFrameTimestamp:null,blocks:[],presentationTimestamps:[]},e.trackData.set(t,n)}return n}expandLacedBlocks(e,t){let r=[];for(let i of e){if(i.lacing===Na.None){r.push(i);continue}let e=bu.tempFromBytes(i.data);if(e.length===0)throw Error(`Invalid laced block: no data.`);let a=[],o=H(e)+1;switch(i.lacing){case Na.Xiph:{let t=0;for(let n=0;n<o-1;n++){let n=0;for(;e.bufferPos<e.length;){let r=H(e);if(n+=r,r<255){a.push(n),t+=n;break}}}a.push(e.length-(e.bufferPos+t))}break;case Na.FixedSize:{let t=e.length-1,n=Math.floor(t/o);for(let e=0;e<o;e++)a.push(n)}break;case Na.Ebml:{let t=ba(e);if(t===null)throw Error(`Invalid EBML lacing: bad frame size.`);let n=t;a.push(n);let r=n;for(let t=1;t<o-1;t++){let t=e.bufferPos,i=ba(e);if(i===null)throw Error(`Invalid EBML lacing: bad frame size.`);let o=i-((1<<(e.bufferPos-t)*7-1)-1);n+=o,a.push(n),r+=n}a.push(e.length-(e.bufferPos+r))}break;default:n(!1)}if(a.length!==o||a.some(e=>e<=0))throw Error(`Invalid block lacing: frame sizes don't match the block.`);let s=i.duration||o*(t.defaultDuration??0);for(let t=0;t<o;t++){let n=a[t],c=V(e,n),l=i.timestamp+s*t/o,u=s/o;r.push({timestamp:l,duration:u,isKeyFrame:i.isKeyFrame,data:c,lacing:Na.None,decoded:i.decoded,postProcessed:!1,mainAdditional:i.mainAdditional})}}return r}async loadSegmentMetadata(e){for(let t of e.seekEntries){if((t.id!==L.Tags||e.tagsSeen)&&(t.id!==L.Attachments||e.attachmentsSeen)||!this.claimSeekTarget(e.dataStartPos+t.segmentPosition))continue;let r=this.reader.requestSliceRange(e.dataStartPos+t.segmentPosition,2,16);if(k(r)&&(r=await r),!r)continue;let i=wa(r);if(!i||i.id!==t.id)continue;let{size:a}=i;ja(a);let o=this.reader.requestSlice(r.filePos,a);if(k(o)&&(o=await o),o){n(!this.currentSegment),this.currentSegment=e;try{this.readContiguousElements(o)}finally{this.currentSegment=null}}t.id===L.Tags?e.tagsSeen=!0:t.id===L.Attachments&&(e.attachmentsSeen=!0)}}claimSeekTarget(e){return!this.claimedSeekTargets.has(e)&&(this.claimedSeekTargets.add(e),!0)}readContiguousElements(e,t){if(this.elementNestingDepth===64)throw Error(`Invalid file: elements are nested too deeply.`);this.elementNestingDepth++;try{for(;e.remainingLength>=2;){let n=e.filePos;if(!this.traverseElement(e,t))return n}return e.filePos}finally{this.elementNestingDepth--}}traverseElement(e,t){let i=wa(e);if(!i||t&&t.includes(i.id))return!1;let{id:o,size:s}=i,c=e.filePos;if(ja(s),c+s>e.end)return!1;switch(o){case L.DocType:this.isWebM=Ta(e,s)===`webm`;break;case L.Seek:{if(!this.currentSegment)break;let t={id:-1,segmentPosition:-1};this.currentSegment.seekEntries.push(t),this.readContiguousElements(e.slice(c,s)),(t.id===-1||t.segmentPosition===-1)&&this.currentSegment.seekEntries.pop()}break;case L.SeekID:{let t=this.currentSegment?.seekEntries[this.currentSegment.seekEntries.length-1];if(!t)break;t.id=R(e,s)}break;case L.SeekPosition:{let t=this.currentSegment?.seekEntries[this.currentSegment.seekEntries.length-1];if(!t)break;t.segmentPosition=R(e,s)}break;case L.TimestampScale:{if(!this.currentSegment)break;let t=R(e,s);if(t===0)throw Error(`Invalid TimestampScale element: must not be 0.`);this.currentSegment.timestampScale=t,this.currentSegment.timestampFactor=1e9/t}break;case L.Duration:if(!this.currentSegment)break;this.currentSegment.duration=Da(e,s);break;case L.TrackEntry:if(!this.currentSegment||(this.currentTrack={id:-1,segment:this.currentSegment,demuxer:this,clusterPositionCache:[],cuePoints:[],disposition:{...Ut,primary:!1},trackBacking:null,codecId:null,codecPrivate:null,defaultDuration:null,defaultDurationNs:null,name:null,languageCode:`eng`,hasLanguageBcp47:!1,decodingInstructions:[],info:null},this.readContiguousElements(e.slice(c,s)),!this.currentTrack))break;if(this.currentTrack.decodingInstructions.some(e=>e.data?.type!==`decompress`||e.scope!==Pa.Block||e.data.algorithm!==Fa.HeaderStripping)&&(A._warn(`Track #${this.currentTrack.id} has an unsupported content encoding; dropping.`),this.currentTrack=null),this.currentTrack&&this.currentSegment.idToTrack.has(this.currentTrack.id)&&(A._warn(`Track #${this.currentTrack.id} is defined more than once; dropping.`),this.currentTrack=null),this.currentTrack&&this.currentTrack.id!==-1&&this.currentTrack.codecId&&this.currentTrack.info){let e=this.currentTrack.codecId.indexOf(`/`),t=e===-1?this.currentTrack.codecId:this.currentTrack.codecId.slice(0,e);if(this.currentTrack.info.type===`video`&&this.currentTrack.info.width!==-1&&this.currentTrack.info.height!==-1){if(this.currentTrack.info.squarePixelWidth=this.currentTrack.info.width,this.currentTrack.info.squarePixelHeight=this.currentTrack.info.height,this.currentTrack.info.displayWidth!==null&&this.currentTrack.info.displayHeight!==null){let e=this.currentTrack.info.displayWidth*this.currentTrack.info.height,t=this.currentTrack.info.displayHeight*this.currentTrack.info.width;e>0&&t>0&&(e>t?this.currentTrack.info.squarePixelWidth=Math.round(this.currentTrack.info.width*e/t):this.currentTrack.info.squarePixelHeight=Math.round(this.currentTrack.info.height*t/e))}if(this.currentTrack.codecId===Aa.avc)this.currentTrack.info.codec=`avc`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate;else if(this.currentTrack.codecId===Aa.hevc)this.currentTrack.info.codec=`hevc`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate;else if(t===Aa.vp8)this.currentTrack.info.codec=`vp8`;else if(t===Aa.vp9)this.currentTrack.info.codec=`vp9`;else if(t===Aa.av1)this.currentTrack.info.codec=`av1`;else if(t===Aa.prores){let e=this.currentTrack.codecPrivate?w.decode(this.currentTrack.codecPrivate):``;Mr.includes(e)&&(this.currentTrack.info.codec=`prores`,this.currentTrack.info.proresFormat=e)}let e=this.currentTrack;this.currentTrack.trackBacking=new Ba(e),this.currentSegment.tracks.push(this.currentTrack),this.currentSegment.idToTrack.set(this.currentTrack.id,this.currentTrack)}else if(this.currentTrack.info.type===`audio`){t===Aa.aac?(this.currentTrack.info.codec=`aac`,this.currentTrack.info.aacCodecInfo={isMpeg2:this.currentTrack.codecId.includes(`MPEG2`),objectType:null},this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):this.currentTrack.codecId===Aa.mp3?this.currentTrack.info.codec=`mp3`:t===Aa.opus?(this.currentTrack.info.codec=`opus`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate,this.currentTrack.info.sampleRate=Ur):t===Aa.vorbis?(this.currentTrack.info.codec=`vorbis`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):t===Aa.flac?(this.currentTrack.info.codec=`flac`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):t===Aa.ac3?(this.currentTrack.info.codec=`ac3`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):t===Aa.eac3?(this.currentTrack.info.codec=`eac3`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):t===Aa.dts?(this.currentTrack.info.codec=`dts`,this.currentTrack.codecId===`A_DTS/EXPRESS`?this.currentTrack.info.dtsFormat=`dtse`:this.currentTrack.codecId===`A_DTS/LOSSLESS`&&(this.currentTrack.info.dtsFormat=`dtsl`)):this.currentTrack.codecId===`A_PCM/INT/LIT`?this.currentTrack.info.bitDepth===8?this.currentTrack.info.codec=`pcm-u8`:this.currentTrack.info.bitDepth===16?this.currentTrack.info.codec=`pcm-s16`:this.currentTrack.info.bitDepth===24?this.currentTrack.info.codec=`pcm-s24`:this.currentTrack.info.bitDepth===32&&(this.currentTrack.info.codec=`pcm-s32`):this.currentTrack.codecId===`A_PCM/INT/BIG`?this.currentTrack.info.bitDepth===8?this.currentTrack.info.codec=`pcm-u8`:this.currentTrack.info.bitDepth===16?this.currentTrack.info.codec=`pcm-s16be`:this.currentTrack.info.bitDepth===24?this.currentTrack.info.codec=`pcm-s24be`:this.currentTrack.info.bitDepth===32&&(this.currentTrack.info.codec=`pcm-s32be`):this.currentTrack.codecId===`A_PCM/FLOAT/IEEE`&&(this.currentTrack.info.bitDepth===32?this.currentTrack.info.codec=`pcm-f32`:this.currentTrack.info.bitDepth===64&&(this.currentTrack.info.codec=`pcm-f64`));let e=this.currentTrack;this.currentTrack.trackBacking=new Va(e),this.currentSegment.tracks.push(this.currentTrack),this.currentSegment.idToTrack.set(this.currentTrack.id,this.currentTrack)}}this.currentTrack=null;break;case L.TrackNumber:if(!this.currentTrack)break;this.currentTrack.id=R(e,s);break;case L.TrackType:{if(!this.currentTrack)break;let t=R(e,s);t===1?this.currentTrack.info={type:`video`,width:-1,height:-1,displayWidth:null,displayHeight:null,displayUnit:null,squarePixelWidth:-1,squarePixelHeight:-1,horizontalScale:1,verticalScale:1,rotation:0,codec:null,codecDescription:null,colorSpace:{...fe},alphaMode:!1,proresFormat:null}:t===2&&(this.currentTrack.info={type:`audio`,numberOfChannels:1,sampleRate:8e3,bitDepth:-1,codec:null,codecDescription:null,aacCodecInfo:null,dtsFormat:null})}break;case L.FlagEnabled:if(!this.currentTrack)break;R(e,s)||(this.currentTrack=null);break;case L.FlagDefault:if(!this.currentTrack)break;this.currentTrack.disposition.default=!!R(e,s);break;case L.FlagForced:if(!this.currentTrack)break;this.currentTrack.disposition.forced=!!R(e,s);break;case L.FlagOriginal:if(!this.currentTrack)break;this.currentTrack.disposition.original=!!R(e,s);break;case L.FlagHearingImpaired:if(!this.currentTrack)break;this.currentTrack.disposition.hearingImpaired=!!R(e,s);break;case L.FlagVisualImpaired:if(!this.currentTrack)break;this.currentTrack.disposition.visuallyImpaired=!!R(e,s);break;case L.FlagCommentary:if(!this.currentTrack)break;this.currentTrack.disposition.commentary=!!R(e,s);break;case L.CodecID:if(!this.currentTrack)break;this.currentTrack.codecId=Ta(e,s);break;case L.CodecPrivate:if(!this.currentTrack)break;this.currentTrack.codecPrivate=V(e,s);break;case L.DefaultDuration:if(!this.currentTrack)break;this.currentTrack.defaultDurationNs=R(e,s);break;case L.Name:if(!this.currentTrack)break;this.currentTrack.name=Ea(e,s);break;case L.Language:if(!this.currentTrack||this.currentTrack.hasLanguageBcp47)break;this.currentTrack.languageCode=Ta(e,s),Ue(this.currentTrack.languageCode)||(this.currentTrack.languageCode=`und`);break;case L.LanguageBCP47:{if(!this.currentTrack)break;let t=Ta(e,s).split(`-`)[0];t?this.currentTrack.languageCode=t:this.currentTrack.languageCode=`und`,this.currentTrack.hasLanguageBcp47=!0}break;case L.Video:if(this.currentTrack?.info?.type!==`video`)break;this.readContiguousElements(e.slice(c,s));break;case L.PixelWidth:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.width=R(e,s);break;case L.PixelHeight:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.height=R(e,s);break;case L.DisplayWidth:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.displayWidth=R(e,s);break;case L.DisplayHeight:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.displayHeight=R(e,s);break;case L.DisplayUnit:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.displayUnit=R(e,s);break;case L.AlphaMode:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.alphaMode=R(e,s)===1;break;case L.Colour:if(this.currentTrack?.info?.type!==`video`)break;this.readContiguousElements(e.slice(c,s));break;case L.MatrixCoefficients:{if(this.currentTrack?.info?.type!==`video`)break;let t=R(e,s),n=le[t];this.currentTrack.info.colorSpace.matrix=n}break;case L.Range:{if(this.currentTrack?.info?.type!==`video`)break;let t=R(e,s);this.currentTrack.info.colorSpace.fullRange=t===1||t===2?t===2:void 0}break;case L.TransferCharacteristics:{if(this.currentTrack?.info?.type!==`video`)break;let t=R(e,s),n=se[t];this.currentTrack.info.colorSpace.transfer=n}break;case L.Primaries:{if(this.currentTrack?.info?.type!==`video`)break;let t=R(e,s),n=ae[t];this.currentTrack.info.colorSpace.primaries=n}break;case L.Projection:if(this.currentTrack?.info?.type!==`video`)break;this.readContiguousElements(e.slice(c,s));break;case L.ProjectionPoseYaw:{if(this.currentTrack?.info?.type!==`video`)break;let t=Da(e,s);try{let e=a(t);this.currentTrack.info.horizontalScale=Math.round(Math.cos(e*r))}catch{}}break;case L.ProjectionPosePitch:{if(this.currentTrack?.info?.type!==`video`)break;let t=Da(e,s);try{let e=a(t);this.currentTrack.info.verticalScale=Math.round(Math.cos(e*r))}catch{}}break;case L.ProjectionPoseRoll:{if(this.currentTrack?.info?.type!==`video`)break;let t=-Da(e,s);try{this.currentTrack.info.rotation=a(t)}catch{}}break;case L.Audio:if(this.currentTrack?.info?.type!==`audio`)break;this.readContiguousElements(e.slice(c,s));break;case L.SamplingFrequency:{if(this.currentTrack?.info?.type!==`audio`)break;let t=Da(e,s);if(!(t>0)||!Number.isFinite(t))throw Error(`Invalid SamplingFrequency element: must be a positive, finite number.`);this.currentTrack.info.sampleRate=t}break;case L.Channels:{if(this.currentTrack?.info?.type!==`audio`)break;let t=R(e,s);if(t===0)throw Error(`Invalid Channels element: must not be 0.`);this.currentTrack.info.numberOfChannels=t}break;case L.BitDepth:if(this.currentTrack?.info?.type!==`audio`)break;this.currentTrack.info.bitDepth=R(e,s);break;case L.CuePoint:if(!this.currentSegment)break;this.readContiguousElements(e.slice(c,s)),this.currentCueTime=null;break;case L.CueTime:this.currentCueTime=R(e,s);break;case L.CueTrackPositions:{if(this.currentCueTime===null||!this.currentSegment)break;let t={time:this.currentCueTime,trackId:-1,clusterPosition:-1};this.currentSegment.cuePoints.push(t),this.readContiguousElements(e.slice(c,s)),(t.trackId===-1||t.clusterPosition===-1)&&this.currentSegment.cuePoints.pop()}break;case L.CueTrack:{let t=this.currentSegment?.cuePoints[this.currentSegment.cuePoints.length-1];if(!t)break;t.trackId=R(e,s)}break;case L.CueClusterPosition:{let t=this.currentSegment?.cuePoints[this.currentSegment.cuePoints.length-1];if(!t)break;n(this.currentSegment),t.clusterPosition=this.currentSegment.dataStartPos+R(e,s)}break;case L.Timestamp:if(!this.currentCluster)break;this.currentCluster.timestamp=R(e,s);break;case L.SimpleBlock:{if(!this.currentCluster)break;let t=e.slice(c,s),n=ba(t);if(n===null||t.remainingLength<3)break;let r=this.getTrackDataInCluster(this.currentCluster,n);if(!r)break;let i=wu(t),a=H(t),o=a>>1&3,l=!!(a&128);r.track.info?.type===`audio`&&r.track.info.codec&&(l=!0);let u=V(t,t.remainingLength),d=r.track.decodingInstructions.length>0;r.blocks.push({timestamp:i,duration:0,isKeyFrame:l,data:u,lacing:o,decoded:!d,postProcessed:!1,mainAdditional:null})}break;case L.BlockGroup:if(!this.currentCluster)break;this.readContiguousElements(e.slice(c,s)),this.currentBlock=null;break;case L.Block:{if(!this.currentCluster)break;let t=e.slice(c,s),n=ba(t);if(n===null||t.remainingLength<3)break;let r=this.getTrackDataInCluster(this.currentCluster,n);if(!r)break;let i=wu(t),a=H(t)>>1&3,o=V(t,t.remainingLength),l=r.track.decodingInstructions.length>0;this.currentBlock={timestamp:i,duration:0,isKeyFrame:!0,data:o,lacing:a,decoded:!l,postProcessed:!1,mainAdditional:null},r.blocks.push(this.currentBlock)}break;case L.BlockAdditions:this.readContiguousElements(e.slice(c,s));break;case L.BlockMore:{let t=this.currentBlock;if(!t)break;let n={addId:1,data:null};this.currentBlockAdditional=n,this.readContiguousElements(e.slice(c,s)),n.data&&n.addId===1&&(t.mainAdditional=n.data),this.currentBlockAdditional=null}break;case L.BlockAdditional:if(!this.currentBlockAdditional)break;this.currentBlockAdditional.data=V(e,s);break;case L.BlockAddID:if(!this.currentBlockAdditional)break;this.currentBlockAdditional.addId=R(e,s);break;case L.BlockDuration:if(!this.currentBlock)break;this.currentBlock.duration=R(e,s);break;case L.ReferenceBlock:if(!this.currentBlock)break;this.currentBlock.isKeyFrame=!1;break;case L.Tag:this.currentTagTargetIsMovie=!0,this.readContiguousElements(e.slice(c,s));break;case L.Targets:this.readContiguousElements(e.slice(c,s));break;case L.TargetTypeValue:R(e,s)!==50&&(this.currentTagTargetIsMovie=!1);break;case L.TagTrackUID:case L.TagEditionUID:case L.TagChapterUID:case L.TagAttachmentUID:this.currentTagTargetIsMovie=!1;break;case L.SimpleTag:if(!this.currentTagTargetIsMovie)break;this.currentSimpleTagName=null,this.readContiguousElements(e.slice(c,s));break;case L.TagName:this.currentSimpleTagName=Ea(e,s);break;case L.TagString:{if(!this.currentSimpleTagName)break;let t=Ea(e,s);this.processTagValue(this.currentSimpleTagName,t)}break;case L.TagBinary:{if(!this.currentSimpleTagName)break;let t=V(e,s);this.processTagValue(this.currentSimpleTagName,t)}break;case L.AttachedFile:{if(!this.currentSegment||this.currentAttachedFile)break;this.currentAttachedFile={fileUid:null,fileName:null,fileMediaType:null,fileData:null,fileDescription:null},this.readContiguousElements(e.slice(c,s));let t=this.currentSegment.metadataTags;if(this.currentAttachedFile.fileUid&&this.currentAttachedFile.fileData&&(t.raw??={},t.raw[this.currentAttachedFile.fileUid.toString()]=new Bt(this.currentAttachedFile.fileData,this.currentAttachedFile.fileMediaType??void 0,this.currentAttachedFile.fileName??void 0,this.currentAttachedFile.fileDescription??void 0)),this.currentAttachedFile.fileMediaType?.startsWith(`image/`)&&this.currentAttachedFile.fileData){let e=this.currentAttachedFile.fileName,n=`unknown`;if(e){let t=e.toLowerCase();t.startsWith(`cover.`)?n=`coverFront`:t.startsWith(`back.`)&&(n=`coverBack`)}t.images??=[],t.images.push({data:this.currentAttachedFile.fileData,mimeType:this.currentAttachedFile.fileMediaType,kind:n,name:this.currentAttachedFile.fileName??void 0,description:this.currentAttachedFile.fileDescription??void 0})}this.currentAttachedFile=null}break;case L.FileUID:if(!this.currentAttachedFile)break;this.currentAttachedFile.fileUid=xa(e,s);break;case L.FileName:if(!this.currentAttachedFile)break;this.currentAttachedFile.fileName=Ea(e,s);break;case L.FileMediaType:if(!this.currentAttachedFile)break;this.currentAttachedFile.fileMediaType=Ta(e,s);break;case L.FileData:if(!this.currentAttachedFile)break;this.currentAttachedFile.fileData=V(e,s);break;case L.FileDescription:if(!this.currentAttachedFile)break;this.currentAttachedFile.fileDescription=Ea(e,s);break;case L.ContentEncodings:{let t=this.currentTrack;if(!t)break;this.readContiguousElements(e.slice(c,s)),t.decodingInstructions.sort((e,t)=>t.order-e.order)}break;case L.ContentEncoding:{let t=this.currentTrack;if(!t)break;let n={order:0,scope:Pa.Block,data:null};this.currentDecodingInstruction=n,this.readContiguousElements(e.slice(c,s)),n.data&&t.decodingInstructions.push(n),this.currentDecodingInstruction=null}break;case L.ContentEncodingOrder:if(!this.currentDecodingInstruction)break;this.currentDecodingInstruction.order=R(e,s);break;case L.ContentEncodingScope:if(!this.currentDecodingInstruction)break;this.currentDecodingInstruction.scope=R(e,s);break;case L.ContentCompression:if(!this.currentDecodingInstruction)break;this.currentDecodingInstruction.data={type:`decompress`,algorithm:Fa.Zlib,settings:null},this.readContiguousElements(e.slice(c,s));break;case L.ContentCompAlgo:if(this.currentDecodingInstruction?.data?.type!==`decompress`)break;this.currentDecodingInstruction.data.algorithm=R(e,s);break;case L.ContentCompSettings:if(this.currentDecodingInstruction?.data?.type!==`decompress`)break;this.currentDecodingInstruction.data.settings=V(e,s);break;case L.ContentEncryption:if(!this.currentDecodingInstruction)break;this.currentDecodingInstruction.data={type:`decrypt`}}return e.filePos=c+s,!0}decodeBlockData(e,t){n(e.decodingInstructions.length>0);let r=t;for(let t of e.decodingInstructions)if(n(t.data),t.data.type===`decompress`)switch(t.data.algorithm){case Fa.HeaderStripping:if(t.data.settings&&t.data.settings.length>0){let e=t.data.settings,n=new Uint8Array(e.length+r.length);n.set(e,0),n.set(r,e.length),r=n}}return r}processTagValue(e,t){if(!this.currentSegment?.metadataTags)return;let n=this.currentSegment.metadataTags;if(n.raw??={},n.raw[e]??=t,typeof t==`string`)switch(e.toLowerCase()){case`title`:n.title??=t;break;case`description`:n.description??=t;break;case`artist`:n.artist??=t;break;case`album`:n.album??=t;break;case`album_artist`:n.albumArtist??=t;break;case`genre`:n.genre??=t;break;case`bpm`:{let e=Number.parseInt(t,10);Number.isInteger(e)&&e>0&&(n.beatsPerMinute??=e)}break;case`comment`:n.comment??=t;break;case`lyrics`:n.lyrics??=t;break;case`date`:{let e=new Date(t);Number.isNaN(e.getTime())||(n.date??=e)}break;case`track_number`:case`part_number`:{let e=t.split(`/`),r=Number.parseInt(e[0],10),i=e[1]&&Number.parseInt(e[1],10);Number.isInteger(r)&&r>0&&(n.trackNumber??=r),i&&Number.isInteger(i)&&i>0&&(n.tracksTotal??=i)}break;case`disc_number`:case`disc`:{let e=t.split(`/`),r=Number.parseInt(e[0],10),i=e[1]&&Number.parseInt(e[1],10);Number.isInteger(r)&&r>0&&(n.discNumber??=r),i&&Number.isInteger(i)&&i>0&&(n.discsTotal??=i)}}}getDurationFromMetadata(e){return e.duration<=0?null:e.duration/e.timestampFactor}},za=class{constructor(e){this.internalTrack=e,this.packetToClusterLocation=/* @__PURE__ */ new WeakMap}getId(){return this.internalTrack.id}getNumber(){let e=this.internalTrack.demuxer,t=this.internalTrack.trackBacking.getType(),n=0;for(let r of e.segments)for(let e of r.tracks)if(e.trackBacking.getType()===t&&n++,e===this.internalTrack)break;return n}getCodec(){throw Error(`Not implemented on base class.`)}getInternalCodecId(){return this.internalTrack.codecId}getName(){return this.internalTrack.name}getLanguageCode(){return this.internalTrack.languageCode}getTimeResolution(){return this.internalTrack.segment.timestampFactor}isRelativeToUnixEpoch(){return!1}getUnixTimeForTimestamp(){return null}getDisposition(){return this.internalTrack.disposition}getPairingMask(){return 1n}getBitrate(){return null}getAverageBitrate(){return null}async getDurationFromMetadata(){return this.internalTrack.demuxer.getDurationFromMetadata(this.internalTrack.segment)}async getLiveRefreshInterval(){return null}async getFirstPacket(e){return this.performClusterLookup(null,e=>e.trackData.get(this.internalTrack.id)?{blockIndex:0,correctBlockFound:!0}:{blockIndex:-1,correctBlockFound:!1},-1/0,1/0,e)}intoTimescale(e){return Fe(e*this.internalTrack.segment.timestampFactor)}async getPacket(e,t){let n=this.intoTimescale(e);return this.performClusterLookup(null,e=>{let t=e.trackData.get(this.internalTrack.id);if(!t)return{blockIndex:-1,correctBlockFound:!1};let r=E(t.presentationTimestamps,n,e=>e.timestamp);return{blockIndex:r===-1?-1:t.presentationTimestamps[r].blockIndex,correctBlockFound:r!==-1&&n<t.endTimestamp}},n,n,t)}async getNextPacket(e,t){let n=this.packetToClusterLocation.get(e);if(n===void 0)throw Error(`Packet was not created from this track.`);return this.performClusterLookup(n.cluster,e=>{if(e===n.cluster){let t=e.trackData.get(this.internalTrack.id);if(n.blockIndex+1<t.blocks.length)return{blockIndex:n.blockIndex+1,correctBlockFound:!0}}else if(e.trackData.get(this.internalTrack.id))return{blockIndex:0,correctBlockFound:!0};return{blockIndex:-1,correctBlockFound:!1}},-1/0,1/0,t)}async getKeyPacket(e,t){let n=this.intoTimescale(e);return this.performClusterLookup(null,e=>{let t=e.trackData.get(this.internalTrack.id);if(!t)return{blockIndex:-1,correctBlockFound:!1};let r=Ce(t.presentationTimestamps,e=>t.blocks[e.blockIndex].isKeyFrame&&e.timestamp<=n);return{blockIndex:r===-1?-1:t.presentationTimestamps[r].blockIndex,correctBlockFound:r!==-1&&n<t.endTimestamp}},n,n,t)}async getNextKeyPacket(e,t){let r=this.packetToClusterLocation.get(e);if(r===void 0)throw Error(`Packet was not created from this track.`);return this.performClusterLookup(r.cluster,e=>{if(e===r.cluster){let t=e.trackData.get(this.internalTrack.id);for(let e=r.blockIndex+1;e<t.blocks.length;e++)if(t.blocks[e].isKeyFrame)return{blockIndex:e,correctBlockFound:!0}}else{let t=e.trackData.get(this.internalTrack.id);if(t&&t.firstKeyFrameTimestamp!==null){let e=t.blocks.findIndex(e=>e.isKeyFrame);return n(e!==-1),{blockIndex:e,correctBlockFound:!0}}}return{blockIndex:-1,correctBlockFound:!1}},-1/0,1/0,t)}async fetchPacketInCluster(e,t,r){if(t===-1)return null;let i=e.trackData.get(this.internalTrack.id).blocks[t];if(n(i),i.decoded||=(i.data=this.internalTrack.demuxer.decodeBlockData(this.internalTrack,i.data),!0),!i.postProcessed){if(this.internalTrack.info?.codec===`prores`&&!(i.data.length>=8&&i.data[4]===105&&i.data[5]===99&&i.data[6]===112&&i.data[7]===102)){let e=new Uint8Array(i.data.length+8);C(e).setUint32(0,e.length,!1),e[4]=105,e[5]=99,e[6]=112,e[7]=102,e.set(i.data,8),i.data=e}i.postProcessed=!0}let a=r.metadataOnly?hi:i.data,o=i.timestamp/this.internalTrack.segment.timestampFactor,s=i.duration/this.internalTrack.segment.timestampFactor,c={};i.mainAdditional&&this.internalTrack.info?.type===`video`&&this.internalTrack.info.alphaMode&&(c.alpha=r.metadataOnly?hi:i.mainAdditional,c.alphaByteLength=i.mainAdditional.byteLength);let l=new I(a,i.isKeyFrame?`key`:`delta`,o,s,e.dataStartPos+t,i.data.byteLength,c);return this.packetToClusterLocation.set(l,{cluster:e,blockIndex:t}),l}async performClusterLookup(e,t,r,i,a,o=1/0,s=0){let{demuxer:c,segment:l}=this.internalTrack,u=null,d=null,f=-1;if(e){let{blockIndex:n,correctBlockFound:r}=t(e);if(r)return this.fetchPacketInCluster(e,n,a);n!==-1&&(d=e,f=n)}let p=E(this.internalTrack.cuePoints,r,e=>e.time),m=p===-1?null:this.internalTrack.cuePoints[p],h=E(this.internalTrack.clusterPositionCache,r,e=>e.startTimestamp),g=h===-1?null:this.internalTrack.clusterPositionCache[h],_=Math.max(m?.clusterPosition??0,g?.elementStartPos??0)||null,v=!!m&&m.clusterPosition>=(g?.elementStartPos??0),y;e?_===null||e.elementStartPos>=_?(y=e.elementEndPos,u=e):y=_:y=_??l.clusterSeekStartPos;let b=u?u.elementStartPos:y;for(;(l.elementEndPos===null||y<=l.elementEndPos-2)&&y<o;){if(u){let e=u.trackData.get(this.internalTrack.id);if(e&&e.startTimestamp>i)break;u=null}let e=l.clusterSummaries.get(y);if(e&&!e.trackIds.has(this.internalTrack.id)){y=e.elementEndPos;continue}let r=c.reader.requestSliceRange(y,2,16);if(k(r)&&(r=await r),!r)break;let o=y,s=wa(r);if(!s||!fa.includes(s.id)&&s.id!==L.Void){let e=await ka(c.reader,o+1,fa,Math.min(l.elementEndPos??1/0,o+La));if(e){y=e;continue}break}let p=s.id,m=s.size,h=r.filePos;if(p===L.Cluster){u=await c.readCluster(o,l),m=u.elementEndPos-h;let{blockIndex:e,correctBlockFound:n}=t(u);if(n)return this.fetchPacketInCluster(u,e,a);e!==-1&&(d=u,f=e)}m===void 0&&(n(p!==L.Cluster),m=(await Oa(c.reader,h,pa,l.elementEndPos)).pos-h);let g=h+m;if(l.elementEndPos===null){let e=c.reader.requestSliceRange(g,2,16);if(k(e)&&(e=await e),!e)break;if(Sa(e)===L.Segment){l.elementEndPos=g;break}}y=g}if(_!==null&&(!d||d.elementStartPos<_)){let e=1<<s,n=(v?this.internalTrack.cuePoints[p-e]?.time:this.internalTrack.clusterPositionCache[h-e]?.startTimestamp)??-1/0;return this.performClusterLookup(null,t,n,i,a,b,s+1)}return d?this.fetchPacketInCluster(d,f,a):null}},Ba=class extends za{constructor(e){super(e),this.decoderConfigPromise=null}getType(){return`video`}getCodec(){return this.internalTrack.info.codec}getCodedWidth(){return this.internalTrack.info.width}getCodedHeight(){return this.internalTrack.info.height}getSquarePixelWidth(){return this.internalTrack.info.squarePixelWidth}getSquarePixelHeight(){return this.internalTrack.info.squarePixelHeight}getTransformationMatrix(){let e=this.internalTrack.info,t=p(f(e.horizontalScale,e.verticalScale),u(e.rotation));return s(t,e.width,e.height)}async getColorSpace(){let e=await this.getDecoderConfig();return e?{primaries:e.colorSpace?.primaries,transfer:e.colorSpace?.transfer,matrix:e.colorSpace?.matrix,fullRange:e.colorSpace?.fullRange}:this.internalTrack.info.colorSpace}async canBeTransparent(){return this.internalTrack.info.alphaMode||this.internalTrack.info.codec===`prores`&&(this.internalTrack.info.proresFormat===`ap4h`||this.internalTrack.info.proresFormat===`ap4x`)}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{let e=null;(this.internalTrack.info.codec===`vp9`||this.internalTrack.info.codec===`av1`||this.internalTrack.info.codec===`prores`||this.internalTrack.info.codec===`avc`&&!this.internalTrack.info.codecDescription||this.internalTrack.info.codec===`hevc`&&!this.internalTrack.info.codecDescription)&&(e=await this.getFirstPacket({}));let t={width:this.internalTrack.info.width,height:this.internalTrack.info.height,codec:this.internalTrack.info.codec,codecDescription:this.internalTrack.info.codecDescription,colorSpace:this.internalTrack.info.colorSpace,avcType:1,avcCodecInfo:this.internalTrack.info.codec===`avc`&&e?gn(e.data):null,hevcCodecInfo:this.internalTrack.info.codec===`hevc`&&e?Dn(e.data):null,vp9CodecInfo:this.internalTrack.info.codec===`vp9`&&e?Bn(e.data):null,av1CodecInfo:this.internalTrack.info.codec===`av1`&&e?Un(e.data):null,proresCodecInfo:this.internalTrack.info.codec===`prores`&&e?Gn(e.data):null,proresFormat:this.internalTrack.info.proresFormat};if(!ue(this.internalTrack.info.colorSpace)){let e=zr(t);this.internalTrack.info.colorSpace.primaries??=e.primaries,this.internalTrack.info.colorSpace.transfer??=e.transfer,this.internalTrack.info.colorSpace.matrix??=e.matrix,this.internalTrack.info.colorSpace.fullRange??=e.fullRange}let n={codec:Rr(t),codedWidth:this.internalTrack.info.width,codedHeight:this.internalTrack.info.height,description:this.internalTrack.info.codecDescription??void 0,colorSpace:this.internalTrack.info.colorSpace};return(this.internalTrack.info.width!==this.internalTrack.info.squarePixelWidth||this.internalTrack.info.height!==this.internalTrack.info.squarePixelHeight)&&(n.displayAspectWidth=this.internalTrack.info.squarePixelWidth,n.displayAspectHeight=this.internalTrack.info.squarePixelHeight),n})():null}},Va=class extends za{constructor(e){super(e),this.decoderConfigPromise=null}getType(){return`audio`}getCodec(){return this.internalTrack.info.codec}getNumberOfChannels(){return this.internalTrack.info.numberOfChannels}getSampleRate(){return this.internalTrack.info.sampleRate}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{if(this.internalTrack.info.codec===`dts`&&!this.internalTrack.info.dtsFormat){let e=await this.getFirstPacket({});this.internalTrack.info.dtsFormat=e&&yr(e.data)}return{codec:Vr({codec:this.internalTrack.info.codec,codecDescription:this.internalTrack.info.codecDescription,aacCodecInfo:this.internalTrack.info.aacCodecInfo,dtsFormat:this.internalTrack.info.dtsFormat}),numberOfChannels:this.internalTrack.info.numberOfChannels,sampleRate:this.internalTrack.info.sampleRate,description:this.internalTrack.info.codecDescription??void 0}})():null}};
153
153
  /*!
154
154
  * Copyright (c) 2026-present, Vanilagy and contributors
155
155
  *
@@ -1,4 +1,4 @@
1
- import{c as e,l as t,o as n,r,u as i}from"./frame-bytes-BAAU1fz1.js";import{c as a,d as o,l as s,o as c,u as l}from"./frames-bfeIWWdf.js";import{n as u,r as d}from"./run-ZJTWBDxE.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-BAAU1fz1.js";import{c as a,d as o,l as s,o as c,u as l}from"./frames-bfeIWWdf.js";import{n as u,r as d}from"./run-D6q-1m-B.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"./logger-dqckiMJt.js";import{t}from"./preload-helper-BLdHbfdN.js";import{t as n}from"./quick-llm-CX_4Q5lE.js";import{n as r}from"./types-DSxCdZw6.js";import{t as i}from"./approval-decision-BvumWm-U.js";import"./capability-Bf6pawsJ.js";import{t as a}from"./page-approval-service-Ct3rnfXL.js";var o=e(`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=e(`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"./logger-dqckiMJt.js";import{t}from"./preload-helper-BLdHbfdN.js";import{t as n}from"./quick-llm-DcceQmkj.js";import{n as r}from"./types-DSxCdZw6.js";import{t as i}from"./approval-decision-BvumWm-U.js";import"./capability-Bf6pawsJ.js";import{t as a}from"./page-approval-service-Ct3rnfXL.js";var o=e(`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=e(`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=e(`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=e(`sudo:tray-first`),_=6e5;function v(e,n={}){let i=n.suggest??f,a=n.timeoutMs??_,o=n.getClient??(async()=>{let{getPanelRpcClient:e}=await t(async()=>{let{getPanelRpcClient:e}=await import(`./panel-rpc-sLZo8PD-.js`).then(e=>e.n);return{getPanelRpcClient:e}},__vite__mapDeps([0,1,2]));return e()});return{async requestApproval(t,n){if(n?.signal?.aborted)return r();let s=t.suggestedPattern;if(!s)try{s=await i(t,n?.signal)}catch{s=t.detail}let c={...t,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 e.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=e(`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-DBVvNlSN.js";import{t}from"./logger-Cx6Y120U.js";import{n}from"./jsh-executor-jaafnGEI.js";import{h as r}from"./kernel-worker-DjefE-EG.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=/* @__PURE__ */ e({appendUnitLog:()=>b,deleteUnitRecord:()=>v,ensureJshdDirs:()=>h,listUnitRecords:()=>y,readUnitLog:()=>x,readUnitRecord:()=>_,writeUnitRecord:()=>g});const p=/* @__PURE__ */ 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=/* @__PURE__ */ 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=/* @__PURE__ */ new Map;logQueues=/* @__PURE__ */ 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=/* @__PURE__ */ 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-DBVvNlSN.js";import{t}from"./logger-Cx6Y120U.js";import{n}from"./jsh-executor-BVFFU-rP.js";import{h as r}from"./kernel-worker-965_891X.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=/* @__PURE__ */ e({appendUnitLog:()=>b,deleteUnitRecord:()=>v,ensureJshdDirs:()=>h,listUnitRecords:()=>y,readUnitLog:()=>x,readUnitRecord:()=>_,writeUnitRecord:()=>g});const p=/* @__PURE__ */ 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=/* @__PURE__ */ 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=/* @__PURE__ */ new Map;logQueues=/* @__PURE__ */ 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=/* @__PURE__ */ 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};