melies-video-editor 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,14 +1,14 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const F=require("react"),lt=require("@xzdarcy/react-timeline-editor"),nt=require("howler"),et=require("antd"),jA=require("@dnd-kit/core");var We={exports:{}},He={};var rt;function dt(){if(rt)return He;rt=1;var B=F,s=Symbol.for("react.element"),d=Symbol.for("react.fragment"),c=Object.prototype.hasOwnProperty,f=B.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Q={key:!0,ref:!0,__self:!0,__source:!0};function b(U,H,Y){var m,X={},G=null,DA=null;Y!==void 0&&(G=""+Y),H.key!==void 0&&(G=""+H.key),H.ref!==void 0&&(DA=H.ref);for(m in H)c.call(H,m)&&!Q.hasOwnProperty(m)&&(X[m]=H[m]);if(U&&U.defaultProps)for(m in H=U.defaultProps,H)X[m]===void 0&&(X[m]=H[m]);return{$$typeof:s,type:U,key:G,ref:DA,props:X,_owner:f.current}}return He.Fragment=d,He.jsx=b,He.jsxs=b,He}var Ne={};var it;function ft(){return it||(it=1,process.env.NODE_ENV!=="production"&&(function(){var B=F,s=Symbol.for("react.element"),d=Symbol.for("react.portal"),c=Symbol.for("react.fragment"),f=Symbol.for("react.strict_mode"),Q=Symbol.for("react.profiler"),b=Symbol.for("react.provider"),U=Symbol.for("react.context"),H=Symbol.for("react.forward_ref"),Y=Symbol.for("react.suspense"),m=Symbol.for("react.suspense_list"),X=Symbol.for("react.memo"),G=Symbol.for("react.lazy"),DA=Symbol.for("react.offscreen"),z=Symbol.iterator,BA="@@iterator";function hA(e){if(e===null||typeof e!="object")return null;var g=z&&e[z]||e[BA];return typeof g=="function"?g:null}var yA=B.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function rA(e){{for(var g=arguments.length,E=new Array(g>1?g-1:0),p=1;p<g;p++)E[p-1]=arguments[p];cA("error",e,E)}}function cA(e,g,E){{var p=yA.ReactDebugCurrentFrame,T=p.getStackAddendum();T!==""&&(g+="%s",E=E.concat([T]));var Z=E.map(function(L){return String(L)});Z.unshift("Warning: "+g),Function.prototype.apply.call(console[e],console,Z)}}var _A=!1,TA=!1,JA=!1,WA=!1,SA=!1,bA;bA=Symbol.for("react.module.reference");function Ue(e){return!!(typeof e=="string"||typeof e=="function"||e===c||e===Q||SA||e===f||e===Y||e===m||WA||e===DA||_A||TA||JA||typeof e=="object"&&e!==null&&(e.$$typeof===G||e.$$typeof===X||e.$$typeof===b||e.$$typeof===U||e.$$typeof===H||e.$$typeof===bA||e.getModuleId!==void 0))}function XA(e,g,E){var p=e.displayName;if(p)return p;var T=g.displayName||g.name||"";return T!==""?E+"("+T+")":E}function $A(e){return e.displayName||"Context"}function mA(e){if(e==null)return null;if(typeof e.tag=="number"&&rA("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case c:return"Fragment";case d:return"Portal";case Q:return"Profiler";case f:return"StrictMode";case Y:return"Suspense";case m:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case U:var g=e;return $A(g)+".Consumer";case b:var E=e;return $A(E._context)+".Provider";case H:return XA(e,e.render,"ForwardRef");case X:var p=e.displayName||null;return p!==null?p:mA(e.type)||"Memo";case G:{var T=e,Z=T._payload,L=T._init;try{return mA(L(Z))}catch{return null}}}return null}var HA=Object.assign,UA=0,de,se,GA,ae,zA,v,AA;function eA(){}eA.__reactDisabledLog=!0;function V(){{if(UA===0){de=console.log,se=console.info,GA=console.warn,ae=console.error,zA=console.group,v=console.groupCollapsed,AA=console.groupEnd;var e={configurable:!0,enumerable:!0,value:eA,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}UA++}}function q(){{if(UA--,UA===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:HA({},e,{value:de}),info:HA({},e,{value:se}),warn:HA({},e,{value:GA}),error:HA({},e,{value:ae}),group:HA({},e,{value:zA}),groupCollapsed:HA({},e,{value:v}),groupEnd:HA({},e,{value:AA})})}UA<0&&rA("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var tA=yA.ReactCurrentDispatcher,aA;function PA(e,g,E){{if(aA===void 0)try{throw Error()}catch(T){var p=T.stack.trim().match(/\n( *(at )?)/);aA=p&&p[1]||""}return`
2
- `+aA+e}}var NA=!1,LA;{var fA=typeof WeakMap=="function"?WeakMap:Map;LA=new fA}function YA(e,g){if(!e||NA)return"";{var E=LA.get(e);if(E!==void 0)return E}var p;NA=!0;var T=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var Z;Z=tA.current,tA.current=null,V();try{if(g){var L=function(){throw Error()};if(Object.defineProperty(L.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(L,[])}catch(EA){p=EA}Reflect.construct(e,[],L)}else{try{L.call()}catch(EA){p=EA}e.call(L.prototype)}}else{try{throw Error()}catch(EA){p=EA}e()}}catch(EA){if(EA&&p&&typeof EA.stack=="string"){for(var M=EA.stack.split(`
3
- `),lA=p.stack.split(`
4
- `),iA=M.length-1,sA=lA.length-1;iA>=1&&sA>=0&&M[iA]!==lA[sA];)sA--;for(;iA>=1&&sA>=0;iA--,sA--)if(M[iA]!==lA[sA]){if(iA!==1||sA!==1)do if(iA--,sA--,sA<0||M[iA]!==lA[sA]){var RA=`
5
- `+M[iA].replace(" at new "," at ");return e.displayName&&RA.includes("<anonymous>")&&(RA=RA.replace("<anonymous>",e.displayName)),typeof e=="function"&&LA.set(e,RA),RA}while(iA>=1&&sA>=0);break}}}finally{NA=!1,tA.current=Z,q(),Error.prepareStackTrace=T}var ie=e?e.displayName||e.name:"",VA=ie?PA(ie):"";return typeof e=="function"&&LA.set(e,VA),VA}function Pe(e,g,E){return YA(e,!1)}function ce(e){var g=e.prototype;return!!(g&&g.isReactComponent)}function qA(e,g,E){if(e==null)return"";if(typeof e=="function")return YA(e,ce(e));if(typeof e=="string")return PA(e);switch(e){case Y:return PA("Suspense");case m:return PA("SuspenseList")}if(typeof e=="object")switch(e.$$typeof){case H:return Pe(e.render);case X:return qA(e.type,g,E);case G:{var p=e,T=p._payload,Z=p._init;try{return qA(Z(T),g,E)}catch{}}}return""}var QA=Object.prototype.hasOwnProperty,ge={},pA=yA.ReactDebugCurrentFrame;function Be(e){if(e){var g=e._owner,E=qA(e.type,e._source,g?g.type:null);pA.setExtraStackFrame(E)}else pA.setExtraStackFrame(null)}function De(e,g,E,p,T){{var Z=Function.call.bind(QA);for(var L in e)if(Z(e,L)){var M=void 0;try{if(typeof e[L]!="function"){var lA=Error((p||"React class")+": "+E+" type `"+L+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[L]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw lA.name="Invariant Violation",lA}M=e[L](g,L,p,E,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(iA){M=iA}M&&!(M instanceof Error)&&(Be(T),rA("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",p||"React class",E,L,typeof M),Be(null)),M instanceof Error&&!(M.message in ge)&&(ge[M.message]=!0,Be(T),rA("Failed %s type: %s",E,M.message),Be(null))}}}var ze=Array.isArray;function CA(e){return ze(e)}function wA(e){{var g=typeof Symbol=="function"&&Symbol.toStringTag,E=g&&e[Symbol.toStringTag]||e.constructor.name||"Object";return E}}function OA(e){try{return Ae(e),!1}catch{return!0}}function Ae(e){return""+e}function he(e){if(OA(e))return rA("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",wA(e)),Ae(e)}var me=yA.ReactCurrentOwner,FA={key:!0,ref:!0,__self:!0,__source:!0},nA,uA;function Fe(e){if(QA.call(e,"ref")){var g=Object.getOwnPropertyDescriptor(e,"ref").get;if(g&&g.isReactWarning)return!1}return e.ref!==void 0}function ue(e){if(QA.call(e,"key")){var g=Object.getOwnPropertyDescriptor(e,"key").get;if(g&&g.isReactWarning)return!1}return e.key!==void 0}function ee(e,g){typeof e.ref=="string"&&me.current}function fe(e,g){{var E=function(){nA||(nA=!0,rA("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",g))};E.isReactWarning=!0,Object.defineProperty(e,"key",{get:E,configurable:!0})}}function KA(e,g){{var E=function(){uA||(uA=!0,rA("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",g))};E.isReactWarning=!0,Object.defineProperty(e,"ref",{get:E,configurable:!0})}}var IA=function(e,g,E,p,T,Z,L){var M={$$typeof:s,type:e,key:g,ref:E,props:L,_owner:Z};return M._store={},Object.defineProperty(M._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(M,"_self",{configurable:!1,enumerable:!1,writable:!1,value:p}),Object.defineProperty(M,"_source",{configurable:!1,enumerable:!1,writable:!1,value:T}),Object.freeze&&(Object.freeze(M.props),Object.freeze(M)),M};function xA(e,g,E,p,T){{var Z,L={},M=null,lA=null;E!==void 0&&(he(E),M=""+E),ue(g)&&(he(g.key),M=""+g.key),Fe(g)&&(lA=g.ref,ee(g,T));for(Z in g)QA.call(g,Z)&&!FA.hasOwnProperty(Z)&&(L[Z]=g[Z]);if(e&&e.defaultProps){var iA=e.defaultProps;for(Z in iA)L[Z]===void 0&&(L[Z]=iA[Z])}if(M||lA){var sA=typeof e=="function"?e.displayName||e.name||"Unknown":e;M&&fe(L,sA),lA&&KA(L,sA)}return IA(e,M,lA,T,p,me.current,L)}}var Re=yA.ReactCurrentOwner,xe=yA.ReactDebugCurrentFrame;function MA(e){if(e){var g=e._owner,E=qA(e.type,e._source,g?g.type:null);xe.setExtraStackFrame(E)}else xe.setExtraStackFrame(null)}var te;te=!1;function Ce(e){return typeof e=="object"&&e!==null&&e.$$typeof===s}function pe(){{if(Re.current){var e=mA(Re.current.type);if(e)return`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("react"),ki=require("@xzdarcy/react-timeline-editor"),Ai=require("howler"),si=require("antd"),Wt=require("@dnd-kit/core");var Ke={exports:{}},Re={};var oi;function Ri(){if(oi)return Re;oi=1;var h=C,e=Symbol.for("react.element"),a=Symbol.for("react.fragment"),d=Object.prototype.hasOwnProperty,c=h.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,u={key:!0,ref:!0,__self:!0,__source:!0};function B(w,U,O){var F,W={},z=null,ht=null;O!==void 0&&(z=""+O),U.key!==void 0&&(z=""+U.key),U.ref!==void 0&&(ht=U.ref);for(F in U)d.call(U,F)&&!u.hasOwnProperty(F)&&(W[F]=U[F]);if(w&&w.defaultProps)for(F in U=w.defaultProps,U)W[F]===void 0&&(W[F]=U[F]);return{$$typeof:e,type:w,key:z,ref:ht,props:W,_owner:c.current}}return Re.Fragment=a,Re.jsx=B,Re.jsxs=B,Re}var Oe={};var ci;function Oi(){return ci||(ci=1,process.env.NODE_ENV!=="production"&&(function(){var h=C,e=Symbol.for("react.element"),a=Symbol.for("react.portal"),d=Symbol.for("react.fragment"),c=Symbol.for("react.strict_mode"),u=Symbol.for("react.profiler"),B=Symbol.for("react.provider"),w=Symbol.for("react.context"),U=Symbol.for("react.forward_ref"),O=Symbol.for("react.suspense"),F=Symbol.for("react.suspense_list"),W=Symbol.for("react.memo"),z=Symbol.for("react.lazy"),ht=Symbol.for("react.offscreen"),ut=Symbol.iterator,ft="@@iterator";function $(i){if(i===null||typeof i!="object")return null;var f=ut&&i[ut]||i[ft];return typeof f=="function"?f:null}var Mt=h.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function tt(i){{for(var f=arguments.length,x=new Array(f>1?f-1:0),D=1;D<f;D++)x[D-1]=arguments[D];we("error",i,x)}}function we(i,f,x){{var D=Mt.ReactDebugCurrentFrame,Y=D.getStackAddendum();Y!==""&&(f+="%s",x=x.concat([Y]));var j=x.map(function(T){return String(T)});j.unshift("Warning: "+f),Function.prototype.apply.call(console[i],console,j)}}var Ue=!1,Qe=!1,ae=!1,Ae=!1,oe=!1,Vt;Vt=Symbol.for("react.module.reference");function ve(i){return!!(typeof i=="string"||typeof i=="function"||i===d||i===u||oe||i===c||i===O||i===F||Ae||i===ht||Ue||Qe||ae||typeof i=="object"&&i!==null&&(i.$$typeof===z||i.$$typeof===W||i.$$typeof===B||i.$$typeof===w||i.$$typeof===U||i.$$typeof===Vt||i.getModuleId!==void 0))}function Gt(i,f,x){var D=i.displayName;if(D)return D;var Y=f.displayName||f.name||"";return Y!==""?x+"("+Y+")":x}function ot(i){return i.displayName||"Context"}function Ct(i){if(i==null)return null;if(typeof i.tag=="number"&&tt("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof i=="function")return i.displayName||i.name||null;if(typeof i=="string")return i;switch(i){case d:return"Fragment";case a:return"Portal";case u:return"Profiler";case c:return"StrictMode";case O:return"Suspense";case F:return"SuspenseList"}if(typeof i=="object")switch(i.$$typeof){case w:var f=i;return ot(f)+".Consumer";case B:var x=i;return ot(x._context)+".Provider";case U:return Gt(i,i.render,"ForwardRef");case W:var D=i.displayName||null;return D!==null?D:Ct(i.type)||"Memo";case z:{var Y=i,j=Y._payload,T=Y._init;try{return Ct(T(j))}catch{return null}}}return null}var yt=Object.assign,St=0,Xt,Ot,Jt,be,se,k,et;function rt(){}rt.__reactDisabledLog=!0;function Z(){{if(St===0){Xt=console.log,Ot=console.info,Jt=console.warn,be=console.error,se=console.group,k=console.groupCollapsed,et=console.groupEnd;var i={configurable:!0,enumerable:!0,value:rt,writable:!0};Object.defineProperties(console,{info:i,log:i,warn:i,error:i,group:i,groupCollapsed:i,groupEnd:i})}St++}}function it(){{if(St--,St===0){var i={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:yt({},i,{value:Xt}),info:yt({},i,{value:Ot}),warn:yt({},i,{value:Jt}),error:yt({},i,{value:be}),group:yt({},i,{value:se}),groupCollapsed:yt({},i,{value:k}),groupEnd:yt({},i,{value:et})})}St<0&&tt("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var nt=Mt.ReactCurrentDispatcher,ct;function Ut(i,f,x){{if(ct===void 0)try{throw Error()}catch(Y){var D=Y.stack.trim().match(/\n( *(at )?)/);ct=D&&D[1]||""}return`
2
+ `+ct+i}}var _t=!1,Pt;{var ce=typeof WeakMap=="function"?WeakMap:Map;Pt=new ce}function de(i,f){if(!i||_t)return"";{var x=Pt.get(i);if(x!==void 0)return x}var D;_t=!0;var Y=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var j;j=nt.current,nt.current=null,Z();try{if(f){var T=function(){throw Error()};if(Object.defineProperty(T.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(T,[])}catch(xt){D=xt}Reflect.construct(i,[],T)}else{try{T.call()}catch(xt){D=xt}i.call(T.prototype)}}else{try{throw Error()}catch(xt){D=xt}i()}}catch(xt){if(xt&&D&&typeof xt.stack=="string"){for(var N=xt.stack.split(`
3
+ `),gt=D.stack.split(`
4
+ `),st=N.length-1,at=gt.length-1;st>=1&&at>=0&&N[st]!==gt[at];)at--;for(;st>=1&&at>=0;st--,at--)if(N[st]!==gt[at]){if(st!==1||at!==1)do if(st--,at--,at<0||N[st]!==gt[at]){var dt=`
5
+ `+N[st].replace(" at new "," at ");return i.displayName&&dt.includes("<anonymous>")&&(dt=dt.replace("<anonymous>",i.displayName)),typeof i=="function"&&Pt.set(i,dt),dt}while(st>=1&&at>=0);break}}}finally{_t=!1,nt.current=j,it(),Error.prepareStackTrace=Y}var Tt=i?i.displayName||i.name:"",ee=Tt?Ut(Tt):"";return typeof i=="function"&&Pt.set(i,ee),ee}function re(i,f,x){return de(i,!1)}function Ht(i){var f=i.prototype;return!!(f&&f.isReactComponent)}function qt(i,f,x){if(i==null)return"";if(typeof i=="function")return de(i,Ht(i));if(typeof i=="string")return Ut(i);switch(i){case O:return Ut("Suspense");case F:return Ut("SuspenseList")}if(typeof i=="object")switch(i.$$typeof){case U:return re(i.render);case W:return qt(i.type,f,x);case z:{var D=i,Y=D._payload,j=D._init;try{return qt(j(Y),f,x)}catch{}}}return""}var zt=Object.prototype.hasOwnProperty,Pe={},Zt=Mt.ReactDebugCurrentFrame;function le(i){if(i){var f=i._owner,x=qt(i.type,i._source,f?f.type:null);Zt.setExtraStackFrame(x)}else Zt.setExtraStackFrame(null)}function mt(i,f,x,D,Y){{var j=Function.call.bind(zt);for(var T in i)if(j(i,T)){var N=void 0;try{if(typeof i[T]!="function"){var gt=Error((D||"React class")+": "+x+" type `"+T+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof i[T]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw gt.name="Invariant Violation",gt}N=i[T](f,T,D,x,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(st){N=st}N&&!(N instanceof Error)&&(le(Y),tt("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",D||"React class",x,T,typeof N),le(null)),N instanceof Error&&!(N.message in Pe)&&(Pe[N.message]=!0,le(Y),tt("Failed %s type: %s",x,N.message),le(null))}}}var $t=Array.isArray;function xe(i){return $t(i)}function he(i){{var f=typeof Symbol=="function"&&Symbol.toStringTag,x=f&&i[Symbol.toStringTag]||i.constructor.name||"Object";return x}}function ye(i){try{return Nt(i),!1}catch{return!0}}function Nt(i){return""+i}function ue(i){if(ye(i))return tt("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",he(i)),Nt(i)}var Ft=Mt.ReactCurrentOwner,He={key:!0,ref:!0,__self:!0,__source:!0},Ee,ze;function Qt(i){if(zt.call(i,"ref")){var f=Object.getOwnPropertyDescriptor(i,"ref").get;if(f&&f.isReactWarning)return!1}return i.ref!==void 0}function Et(i){if(zt.call(i,"key")){var f=Object.getOwnPropertyDescriptor(i,"key").get;if(f&&f.isReactWarning)return!1}return i.key!==void 0}function kt(i,f){typeof i.ref=="string"&&Ft.current}function fe(i,f){{var x=function(){Ee||(Ee=!0,tt("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",f))};x.isReactWarning=!0,Object.defineProperty(i,"key",{get:x,configurable:!0})}}function Ne(i,f){{var x=function(){ze||(ze=!0,tt("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",f))};x.isReactWarning=!0,Object.defineProperty(i,"ref",{get:x,configurable:!0})}}var Le=function(i,f,x,D,Y,j,T){var N={$$typeof:e,type:i,key:f,ref:x,props:T,_owner:j};return N._store={},Object.defineProperty(N._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(N,"_self",{configurable:!1,enumerable:!1,writable:!1,value:D}),Object.defineProperty(N,"_source",{configurable:!1,enumerable:!1,writable:!1,value:Y}),Object.freeze&&(Object.freeze(N.props),Object.freeze(N)),N};function vt(i,f,x,D,Y){{var j,T={},N=null,gt=null;x!==void 0&&(ue(x),N=""+x),Et(f)&&(ue(f.key),N=""+f.key),Qt(f)&&(gt=f.ref,kt(f,Y));for(j in f)zt.call(f,j)&&!He.hasOwnProperty(j)&&(T[j]=f[j]);if(i&&i.defaultProps){var st=i.defaultProps;for(j in st)T[j]===void 0&&(T[j]=st[j])}if(N||gt){var at=typeof i=="function"?i.displayName||i.name||"Unknown":i;N&&fe(T,at),gt&&Ne(T,at)}return Le(i,N,gt,Y,D,Ft.current,T)}}var X=Mt.ReactCurrentOwner,Bt=Mt.ReactDebugCurrentFrame;function Yt(i){if(i){var f=i._owner,x=qt(i.type,i._source,f?f.type:null);Bt.setExtraStackFrame(x)}else Bt.setExtraStackFrame(null)}var te;te=!1;function jt(i){return typeof i=="object"&&i!==null&&i.$$typeof===e}function ge(){{if(X.current){var i=Ct(X.current.type);if(i)return`
6
6
 
7
- Check the render method of \``+e+"`."}return""}}function Me(e){return""}var ke={};function qe(e){{var g=pe();if(!g){var E=typeof e=="string"?e:e.displayName||e.name;E&&(g=`
7
+ Check the render method of \``+i+"`."}return""}}function Kt(i){return""}var bt={};function Lt(i){{var f=ge();if(!f){var x=typeof i=="string"?i:i.displayName||i.name;x&&(f=`
8
8
 
9
- Check the top-level render call using <`+E+">.")}return g}}function Je(e,g){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var E=qe(g);if(ke[E])return;ke[E]=!0;var p="";e&&e._owner&&e._owner!==Re.current&&(p=" It was passed a child from "+mA(e._owner.type)+"."),MA(e),rA('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',E,p),MA(null)}}function ne(e,g){{if(typeof e!="object")return;if(CA(e))for(var E=0;E<e.length;E++){var p=e[E];Ce(p)&&Je(p,g)}else if(Ce(e))e._store&&(e._store.validated=!0);else if(e){var T=hA(e);if(typeof T=="function"&&T!==e.entries)for(var Z=T.call(e),L;!(L=Z.next()).done;)Ce(L.value)&&Je(L.value,g)}}}function Ge(e){{var g=e.type;if(g==null||typeof g=="string")return;var E;if(typeof g=="function")E=g.propTypes;else if(typeof g=="object"&&(g.$$typeof===H||g.$$typeof===X))E=g.propTypes;else return;if(E){var p=mA(g);De(E,e.props,"prop",p,e)}else if(g.PropTypes!==void 0&&!te){te=!0;var T=mA(g);rA("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",T||"Unknown")}typeof g.getDefaultProps=="function"&&!g.getDefaultProps.isReactClassApproved&&rA("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function Ve(e){{for(var g=Object.keys(e.props),E=0;E<g.length;E++){var p=g[E];if(p!=="children"&&p!=="key"){MA(e),rA("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",p),MA(null);break}}e.ref!==null&&(MA(e),rA("Invalid attribute `ref` supplied to `React.Fragment`."),MA(null))}}var re={};function Le(e,g,E,p,T,Z){{var L=Ue(e);if(!L){var M="";(e===void 0||typeof e=="object"&&e!==null&&Object.keys(e).length===0)&&(M+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var lA=Me();lA?M+=lA:M+=pe();var iA;e===null?iA="null":CA(e)?iA="array":e!==void 0&&e.$$typeof===s?(iA="<"+(mA(e.type)||"Unknown")+" />",M=" Did you accidentally export a JSX literal instead of a component?"):iA=typeof e,rA("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",iA,M)}var sA=xA(e,g,E,T,Z);if(sA==null)return sA;if(L){var RA=g.children;if(RA!==void 0)if(p)if(CA(RA)){for(var ie=0;ie<RA.length;ie++)ne(RA[ie],e);Object.freeze&&Object.freeze(RA)}else rA("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else ne(RA,e)}if(QA.call(g,"key")){var VA=mA(e),EA=Object.keys(g).filter(function(_e){return _e!=="key"}),Se=EA.length>0?"{key: someKey, "+EA.join(": ..., ")+": ...}":"{key: someKey}";if(!re[VA+Se]){var Ze=EA.length>0?"{"+EA.join(": ..., ")+": ...}":"{}";rA(`A props object containing a "key" prop is being spread into JSX:
9
+ Check the top-level render call using <`+x+">.")}return f}}function Me(i,f){{if(!i._store||i._store.validated||i.key!=null)return;i._store.validated=!0;var x=Lt(f);if(bt[x])return;bt[x]=!0;var D="";i&&i._owner&&i._owner!==X.current&&(D=" It was passed a child from "+Ct(i._owner.type)+"."),Yt(i),tt('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',x,D),Yt(null)}}function Te(i,f){{if(typeof i!="object")return;if(xe(i))for(var x=0;x<i.length;x++){var D=i[x];jt(D)&&Me(D,f)}else if(jt(i))i._store&&(i._store.validated=!0);else if(i){var Y=$(i);if(typeof Y=="function"&&Y!==i.entries)for(var j=Y.call(i),T;!(T=j.next()).done;)jt(T.value)&&Me(T.value,f)}}}function pe(i){{var f=i.type;if(f==null||typeof f=="string")return;var x;if(typeof f=="function")x=f.propTypes;else if(typeof f=="object"&&(f.$$typeof===U||f.$$typeof===W))x=f.propTypes;else return;if(x){var D=Ct(f);mt(x,i.props,"prop",D,i)}else if(f.PropTypes!==void 0&&!te){te=!0;var Y=Ct(f);tt("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",Y||"Unknown")}typeof f.getDefaultProps=="function"&&!f.getDefaultProps.isReactClassApproved&&tt("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function me(i){{for(var f=Object.keys(i.props),x=0;x<f.length;x++){var D=f[x];if(D!=="children"&&D!=="key"){Yt(i),tt("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",D),Yt(null);break}}i.ref!==null&&(Yt(i),tt("Invalid attribute `ref` supplied to `React.Fragment`."),Yt(null))}}var De={};function _e(i,f,x,D,Y,j){{var T=ve(i);if(!T){var N="";(i===void 0||typeof i=="object"&&i!==null&&Object.keys(i).length===0)&&(N+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var gt=Kt();gt?N+=gt:N+=ge();var st;i===null?st="null":xe(i)?st="array":i!==void 0&&i.$$typeof===e?(st="<"+(Ct(i.type)||"Unknown")+" />",N=" Did you accidentally export a JSX literal instead of a component?"):st=typeof i,tt("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",st,N)}var at=vt(i,f,x,Y,j);if(at==null)return at;if(T){var dt=f.children;if(dt!==void 0)if(D)if(xe(dt)){for(var Tt=0;Tt<dt.length;Tt++)Te(dt[Tt],i);Object.freeze&&Object.freeze(dt)}else tt("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else Te(dt,i)}if(zt.call(f,"key")){var ee=Ct(i),xt=Object.keys(f).filter(function($e){return $e!=="key"}),Fe=xt.length>0?"{key: someKey, "+xt.join(": ..., ")+": ...}":"{key: someKey}";if(!De[ee+Fe]){var Ze=xt.length>0?"{"+xt.join(": ..., ")+": ...}":"{}";tt(`A props object containing a "key" prop is being spread into JSX:
10
10
  let props = %s;
11
11
  <%s {...props} />
12
12
  React keys must be passed directly to JSX without using spread:
13
13
  let props = %s;
14
- <%s key={someKey} {...props} />`,Se,VA,Ze,VA),re[VA+Se]=!0}}return e===c?Ve(sA):Ge(sA),sA}}function Ee(e,g,E){return Le(e,g,E,!0)}function Ye(e,g,E){return Le(e,g,E,!1)}var Oe=Ye,ve=Ee;Ne.Fragment=c,Ne.jsx=Oe,Ne.jsxs=ve})()),Ne}var ot;function Ct(){return ot||(ot=1,process.env.NODE_ENV==="production"?We.exports=dt():We.exports=ft()),We.exports}var D=Ct();const Et=({action:B,row:s})=>D.jsx("div",{className:"effect0","data-action-id":B.id,"data-row-id":s.id,children:D.jsx("div",{className:"effect0-text",children:`Audio: ${B.data.name}`})}),Qt=({action:B,row:s})=>D.jsx("div",{className:"effect1","data-action-id":B.id,"data-row-id":s.id,children:D.jsx("div",{className:"effect1-text",children:`Video: ${B.data.name}`})}),wt=({action:B,row:s})=>D.jsx("div",{className:"effect2","data-action-id":B.id,"data-row-id":s.id,children:D.jsx("div",{className:"effect2-text",children:`Video audio: ${B.data.name}`})}),st=B=>{const s=B.toLowerCase();return s.endsWith(".mp4")||s.endsWith(".webm")||s.endsWith(".mov")||s.endsWith(".m4v")?"video":s.endsWith(".mp3")||s.endsWith(".wav")||s.endsWith(".ogg")||s.endsWith(".m4a")||s.endsWith(".aac")?"audio":"other"};class It{blobUrlBySrc=new Map;pendingBySrc=new Map;async preloadToBlobUrl(s){if(!s)return s;const d=this.blobUrlBySrc.get(s);if(d)return d;const c=this.pendingBySrc.get(s);if(c)return c;const f=(async()=>{const Q=await fetch(s,{cache:"force-cache"});if(!Q.ok)throw new Error(`Failed to fetch ${s}: ${Q.status}`);const b=await Q.blob(),U=URL.createObjectURL(b);return this.blobUrlBySrc.set(s,U),U})().catch(Q=>(console.warn("[mediaCache] preload failed:",s,Q),s)).finally(()=>{this.pendingBySrc.delete(s)});return this.pendingBySrc.set(s,f),f}resolve(s){return this.blobUrlBySrc.get(s)??s}warm(s){this.preloadToBlobUrl(s)}async warmAll(s,d){const c=[],f=new Set;for(const Y of s){const m=String(Y??"");if(!m||f.has(m))continue;f.add(m);const X=st(m);X!=="video"&&X!=="audio"||c.push(m)}if(c.length===0)return;const Q=Math.max(1,Math.floor(d?.concurrency??3)),b=d?.yieldBetween!==!1;let U=0;const H=Array.from({length:Math.min(Q,c.length)},async()=>{for(;U<c.length;){const Y=c[U++];await this.preloadToBlobUrl(Y),b&&await new Promise(m=>setTimeout(m,0))}});await Promise.all(H)}warmFromEditorData(s){const d=new Set,c=Array.isArray(s)?s:[];for(const f of c){const Q=f?.actions;if(Array.isArray(Q))for(const b of Q){const U=b?.data?.src,H=b?.data?.previewSrc;typeof U=="string"&&U&&d.add(U),typeof H=="string"&&H&&d.add(H)}}for(const f of d){const Q=st(f);(Q==="video"||Q==="audio")&&this.warm(f)}}}const ye=new It,Dt=B=>{if(!B)return;const d=B.split("#")[0].split("?")[0].toLowerCase(),c=d.lastIndexOf(".");if(c<0)return;const f=d.slice(c+1);if(f)return f==="m4a"||f==="m4v"?"mp4":f};class ht{howlBySrc={};activeByActionId={};getHowl(s){const d=ye.resolve(s),c=d.startsWith("blob:")?s:d,f=c;if(this.howlBySrc[f])return this.howlBySrc[f];const Q=Dt(s),b=new nt.Howl({src:[c],format:Q?[Q]:void 0,loop:!0,autoplay:!1,preload:!0});return this.howlBySrc[f]=b,b}unlock(){try{const s=nt.Howler.ctx;s&&s.state==="suspended"&&s.resume()}catch{}}warm(s){s&&(ye.warm(s),this.getHowl(s))}seekForEngineTime(s,d,c,f,Q){const b=Number(Q),U=Number.isFinite(b)?b:0,H=s.duration();if(!Number.isFinite(H)||H<=0){s.seek(Math.max(0,f-c+U),d);return}const Y=(f-c+U)%H,m=Y<0?Y+H:Y;s.seek(m,d)}start(s){const{actionId:d,src:c,startTime:f,time:Q,engine:b}=s,U=Number(s.offset??0),H=Number.isFinite(U)?U:0,Y=this.activeByActionId[d];if(Y){const BA=this.getHowl(Y.src);BA.rate(b.getPlayRate(),Y.soundId);try{BA.playing(Y.soundId)||BA.play(Y.soundId)}catch{}b.isPlaying||this.seekForEngineTime(BA,Y.soundId,Y.startTime,Q,Y.offset);return}const m=this.getHowl(c),X=m.play();m.rate(b.getPlayRate(),X),this.seekForEngineTime(m,X,f,Q,H);let G=performance.now();const DA=({time:BA})=>{const hA=performance.now();if(!b.isPlaying){this.seekForEngineTime(m,X,f,BA,H);return}hA-G<120||(G=hA,this.seekForEngineTime(m,X,f,BA,H))},z=({rate:BA})=>{m.rate(BA,X)};b.on("afterSetTime",DA),b.on("afterSetPlayRate",z),this.activeByActionId[d]={src:c,startTime:f,offset:H,soundId:X,engine:b,lastResyncAtMs:G,time:DA,rate:z}}stop(s){const{actionId:d}=s,c=this.activeByActionId[d];if(!c)return;const f=this.getHowl(c.src);try{f.stop(c.soundId)}catch{}c.time&&c.engine.off("afterSetTime",c.time),c.rate&&c.engine.off("afterSetPlayRate",c.rate),delete this.activeByActionId[d]}}const vA=new ht;class mt{videoEl=null;currentSrc=null;lastSeekAtMs=0;lastRate=null;videoClaims={};activeVideoActionId=null;lastEngineTime=0;boundEngine=null;boundActionStart=0;vfcHandle=null;rafHandle=null;attach(s){this.videoEl=s,this.currentSrc=s?.currentSrc||s?.getAttribute("src")||null,this.lastSeekAtMs=0,this.lastRate=null,this.unbindEngine(),this.videoClaims={},this.activeVideoActionId=null,this.lastEngineTime=0,this.setActive(!1)}setActive(s){this.videoEl&&(this.videoEl.style.opacity=s?"1":"0")}claimVideo(s){const d=String(s.actionId),c=Number.isFinite(Number(s.layer))?Number(s.layer):0,f=String(s.src??""),Q=Number(s.actionStart),b=Number(s.time),U=s.engine,H=!!s.isPlaying,Y=Number(s.offset??0),m=Number.isFinite(Y)?Y:0;if(!f||!Number.isFinite(Q)||!Number.isFinite(b))return;const X=performance.now();this.lastEngineTime=b,this.videoClaims[d]={actionId:d,layer:c,src:f,actionStart:Q,offset:m,engine:U,isPlaying:H,time:b,claimedAtMs:X};let G=null;for(const z of Object.values(this.videoClaims)){if(!G){G=z;continue}if(z.layer>G.layer){G=z;continue}z.layer===G.layer&&z.claimedAtMs>G.claimedAtMs&&(G=z)}if(!G)return;this.activeVideoActionId=G.actionId,this.setActive(!0),this.setRate(G.engine.getPlayRate()),this.setSource(G.src);const DA=Math.max(0,G.time-G.actionStart+G.offset);this.seek(DA,{force:!G.isPlaying}),G.isPlaying?this.play():this.pause()}releaseVideo(s){const d=String(s);if(delete this.videoClaims[d],this.activeVideoActionId&&this.activeVideoActionId!==d)return;let c=null;for(const Q of Object.values(this.videoClaims)){if(!c){c=Q;continue}if(Q.layer>c.layer){c=Q;continue}Q.layer===c.layer&&Q.claimedAtMs>c.claimedAtMs&&(c=Q)}if(!c){this.activeVideoActionId=null,this.pause(),this.unbindEngine(),this.setActive(!1);return}this.activeVideoActionId=c.actionId,this.setActive(!0),this.setRate(c.engine.getPlayRate()),this.setSource(c.src);const f=Math.max(0,this.lastEngineTime-c.actionStart+c.offset);this.seek(f,{force:!c.isPlaying}),c.isPlaying?this.play():this.pause()}bindEngine(s,d){this.unbindEngine(),this.boundEngine=s,this.boundActionStart=d,this.tickFromVideo()}unbindEngine(){const s=this.videoEl;if(this.vfcHandle!=null&&s?.cancelVideoFrameCallback)try{s.cancelVideoFrameCallback(this.vfcHandle)}catch{}this.rafHandle!=null&&cancelAnimationFrame(this.rafHandle),this.vfcHandle=null,this.rafHandle=null,this.boundEngine=null}tickFromVideo=()=>{if(!this.videoEl||!this.boundEngine||this.videoEl.paused)return;const s=this.boundActionStart+this.videoEl.currentTime;Math.abs(this.boundEngine.getTime()-s)>.03&&this.boundEngine.setTime(s,!0);const d=this.videoEl;d?.requestVideoFrameCallback?this.vfcHandle=d.requestVideoFrameCallback(()=>this.tickFromVideo()):this.rafHandle=requestAnimationFrame(()=>this.tickFromVideo())};setSource(s){if(!this.videoEl||!s)return;const d=ye.resolve(s);if(!((this.videoEl.currentSrc||this.videoEl.getAttribute("src")||"")===d||this.currentSrc===d)){this.currentSrc=d,this.videoEl.preload="auto",this.videoEl.src=d;try{this.videoEl.load()}catch{}}}warm(s){s&&ye.warm(s)}setRate(s){this.videoEl&&this.lastRate!==s&&(this.lastRate=s,this.videoEl.playbackRate=s)}seek(s,d){if(this.videoEl)try{const c=performance.now(),f=d?.force===!0,Q=this.videoEl.currentTime;if(!f&&!this.videoEl.paused&&(Math.abs(Q-s)<.12||c-this.lastSeekAtMs<150))return;const b=this.videoEl.duration;Number.isFinite(b)&&b>0?this.videoEl.currentTime=Math.min(s,Math.max(0,b-.05)):this.videoEl.currentTime=Math.max(0,s),this.lastSeekAtMs=c}catch{}}async play(){if(this.videoEl)try{await this.videoEl.play(),this.boundEngine&&this.tickFromVideo()}catch{}}pause(){this.videoEl&&this.videoEl.pause()}}const kA=new mt,Ft=160,Rt=5,pt={effect0:{id:"effect0",name:"Play audio",source:{start:({action:B,engine:s,isPlaying:d,time:c})=>{if(d){const{src:f,offset:Q}=B.data;vA.warm(f),vA.start({actionId:B.id,src:f,startTime:B.start,engine:s,time:c,offset:Q})}},enter:({action:B,engine:s,isPlaying:d,time:c})=>{if(d){const{src:f,offset:Q}=B.data;vA.warm(f),vA.start({actionId:B.id,src:f,startTime:B.start,engine:s,time:c,offset:Q})}},leave:({action:B})=>{vA.stop({actionId:B.id})},stop:({action:B})=>{vA.stop({actionId:B.id})}}},effect2:{id:"effect2",name:"Play video audio",source:{start:({action:B,engine:s,isPlaying:d,time:c})=>{if(d){const{src:f,offset:Q}=B.data;vA.warm(f),vA.start({actionId:B.id,src:f,startTime:B.start,engine:s,time:c,offset:Q})}},enter:({action:B,engine:s,isPlaying:d,time:c})=>{if(d){const{src:f,offset:Q}=B.data;vA.warm(f),vA.start({actionId:B.id,src:f,startTime:B.start,engine:s,time:c,offset:Q})}},leave:({action:B})=>{vA.stop({actionId:B.id})},stop:({action:B})=>{vA.stop({actionId:B.id})}}},effect1:{id:"effect1",name:"Play video",source:{start:({action:B,engine:s,isPlaying:d,time:c})=>{const{src:f,previewSrc:Q,offset:b,videoLayer:U}=B.data??{},H=Q||f;H&&kA.warm(H),kA.claimVideo({actionId:String(B.id),layer:Number.isFinite(Number(U))?Number(U):0,src:H,engine:s,isPlaying:d,time:c,actionStart:Number(B.start),offset:b})},enter:({action:B,engine:s,isPlaying:d,time:c})=>{const{src:f,previewSrc:Q,offset:b,videoLayer:U}=B.data??{},H=Q||f;H&&kA.warm(H),kA.claimVideo({actionId:String(B.id),layer:Number.isFinite(Number(U))?Number(U):0,src:H,engine:s,isPlaying:d,time:c,actionStart:Number(B.start),offset:b})},update:({action:B,engine:s,time:d,isPlaying:c})=>{const{src:f,previewSrc:Q,offset:b,videoLayer:U}=B.data??{},H=Q||f;kA.claimVideo({actionId:String(B.id),layer:Number.isFinite(Number(U))?Number(U):0,src:H,engine:s,isPlaying:c,time:d,actionStart:Number(B.start),offset:b})},leave:({action:B})=>{kA.releaseVideo(String(B.id))},stop:({action:B})=>{kA.releaseVideo(String(B.id))}}}},Ot="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAMAAADDpiTIAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAtlQTFRFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANlVkNAAAAPN0Uk5TABYvRE1VWkg1HAcYU4Kt2vj/4ruTYikBCZnX7q9lGwVQ9P7KbhUfiej6Pi6jy1cCHqLUD435wqogGrj1C+vlZgMEj85AEror2REndyrp2OG9MBne/JsIx4Cc42jIOrMiBtCGNiUU/w5Fdaj3iHs8HW/E7CP2vpXTRsGOtl79+xfGNPNK39xM8DKYKLQN8dKSas0MPaxPp22ULKUK8p9Bv2uD1XI5EyaRkELPcOctOO9zO90/ECQ37eDA29ZLw7whQ7Uz5MzJ0VJgsOahTre56ough4FsjHSxVGFJf1h2ioRxhX5fxWl6plmXR2eWrlGeZFudikazJAAAFoFJREFUeJztnXt8FdW1x2fi60NauARuBNsomEbAABJALiDRAEEN70cVJFIlvK7FUIu89BYQFDE+uTxslZAHArkXKpILBBIVCVQpj/KMBotepQIV/VihvQiW6OGCiBxgzzlrnzNrZs6s3/eP/rFnnb1X5Us4mfnN3qYBRGO63QBwFwggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHG8IYH7HKSPu9P8ed7sZWbgtwI/O/tkHjZwd+My1joThpgANv0g0T6gvxZ924BNnuxGKawI0Mr+sfzRUQcJpBz5wqhu5uCRAE9IP+YaHkqr5e5GNKwI0N789TCxNMs3drL1IxwUB0sy/H9Eov76qhq0V4LwAbU3zQ82P3LDna5ZWgOG8AJfXOaX/oYREc7P9rYAzOCtAR3NvZB9M3dPqbXtbAWdxVIDG174b8WdbmmalfZ2AczgoQBdzZ1Sfb2O+aVMn4DzOCXC7uS3aKeJurrCjExCEYwI0Sd4S/SQpta9aG/0sIAinBOixOYJv/wri09bjcaGdOCRAL9O2L/G3rvnGrqmAUwKkNdpo42wZ5gobZxOOIwIMMN+ydb5Mc81Xtk4oGCcEGGi+bveUddtXUh8ngZA4IcDgcoZJux86iseENuCAAPeu4Zm3p7mIZ2JR8AvQ6whbqKO3uZBrajGwCzDULA1XEt88admgM0nQLXtGmeaS+vS0QLZZ83JU3QF2AcYsDn29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",vt="data:image/png;base64,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AAMEwIYANCAANgRgAwEYIAA2BKABAbAhABsIwAABsCEADQiADQHYQAAGCIANAWhAAGwIwAYCMEAAbAhAAwJgQwA2EIABAmBDABoQABsCsIEADBAAGwLQgADYEIANBGCAANgQgAYEwIYAbCAAAwTAhgA0IAA2BGADARggADYEoAEBsCEAGwjAAAGwIQANCIANAdhAAAYIgA0BaEAAbAjABgIwQABsCEADAmBDADYQgAECYEMAGhAAGwKwgQAMEAAbAtCAANgQgA0EYIAA2BCABgTAhgBsIAADBMCGADQgADYEYAMBGCAANgSgAQGwIQAbCMAAAbAhAA0IgA0B2EAABgiADQFoQABsCMAGAjBAAGwIQAMCYEMANhCAAQJgQwAaEAAbArCBAAwQABsC0IAA2BCADQRggADYEIAGBMCGAGwgAAMEwIYANCAANgRgAwEYIAA2BKABAbAhABsIwAABsCEADQiADQHYQAAGCIANAWhAAGwIwAYCMEAAbAhAAwJgQwA2EIABAmBDABoQABsCsIEADBAAGwLQgADYEIANBGCAANgQgAYEwIYAbCAAAwTAhgA0IAA2BGADARggADYEoAEBsCEAGwjAAAGwIQANCIANAdhAAAYIgA0BaEAAbAjABgIwQABsCEADAmBDADYQgAECYEMAGhAAGwKwgQAMEAAbAtCAANgQgA0EYIAA2BCABgTAhgBsIAADBMCGADQgADYEYAMBGCAANgSgAQGwIQAbCMAAAbAhAA0IgA0B2EAABgiADQFoQABsCMAGAjBAAGwIQAMCYEMANhCAAQJgQwAaEAAbArCBAAwQABsC0IAA2BCADQRggADYEIAGBMCGAGwgAAMEwIYANCAANgRgAwEYIAA2BKABAbAhABsIwAABsCEADQiADQHYQAAGCIANAWhAAGwIwAYCMEAAbAhAAwJgQwA2EIABAmBDABoQABsCsIEADBAAGwLQgADYEIANBGCAANgQgAYEwIYAbCAAAwTAhgA0IAA2BGADARggADYEoAEBsCEAGwjAAAGwIQANCIANAdhAAAYIgA0BaEAAbAjABgIwQABsCEADAmBDADYQgAECYEMAGhAAGwKwgQAMEAAbAtCAANgQgA0EYIAA2BCABgTAhgBsIAADBMCGADQgADYEYAMBGCAANgSgAQGwIQAbCMAAAbAhAA0IgA0B2EAABgiA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",St="data:image/png;base64,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",bt="data:image/png;base64,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AIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKgu8P8Ho19MJOV4IQAAAABJRU5ErkJggg==",Ht="data:image/png;base64,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",Nt="data:image/png;base64,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UEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIA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",{Option:yt}=et.Select,Ut=[.2,.5,1,1.5,2],Pt=({timelineState:B,autoScrollWhenPlay:s,scale:d,scaleWidth:c,startLeft:f,editorData:Q,selectedActionId:b,onDeleteSelectedClip:U,onSplitSelectedClip:H,canUndo:Y,canRedo:m,onUndo:X,onRedo:G})=>{const[DA,z]=F.useState(!1),[BA,hA]=F.useState(0),[yA,rA]=F.useState(!1),cA=F.useRef(0),_A=F.useRef(0),TA=F.useRef(0),JA=F.useRef(0),WA=F.useRef(0),SA=F.useRef(0),bA=!!b,XA=(()=>{if(!b)return null;const v=Array.isArray(Q)?Q:[];for(const AA of v){const eA=AA?.actions;if(Array.isArray(eA))for(const V of eA){if(String(V?.id)!==b)continue;const q=Number(V?.start),tA=Number(V?.end);return!Number.isFinite(q)||!Number.isFinite(tA)?null:{start:q,end:tA}}}return null})(),$A=!!(XA&&BA>XA.start&&BA<XA.end),mA=v=>{const AA=Array.isArray(Q)?Q:[];for(const eA of AA){const V=eA?.actions;if(Array.isArray(V))for(const q of V){if(q?.effectId!=="effect1")continue;const tA=Number(q?.start),aA=Number(q?.end);if(!(!Number.isFinite(tA)||!Number.isFinite(aA))&&v>=tA&&v<aA)return!0}}return!1},HA=v=>{mA(v)||(kA.pause(),kA.unbindEngine(),kA.setActive(!1))};F.useEffect(()=>{if(!B.current)return;const v=B.current,AA=()=>z(!0),eA=()=>z(!1),V=({time:tA})=>{hA(tA),HA(tA)},q=({time:tA})=>{const aA=performance.now();if(!(aA-cA.current<33)&&(cA.current=aA,hA(tA),HA(tA),s.current)){const NA=tA*(c/d)+f-500,LA=B.current;LA&&LA.setScrollLeft(NA)}};return v.listener.on("play",AA),v.listener.on("paused",eA),v.listener.on("afterSetTime",V),v.listener.on("setTimeByTick",q),()=>{v.listener.off("play",AA),v.listener.off("paused",eA),v.listener.off("afterSetTime",V),v.listener.off("setTimeByTick",q)}},[Q]);const UA=()=>{B.current&&(B.current.isPlaying?B.current.pause():(vA.unlock(),B.current.play({autoEnd:!0})))},de=v=>{B.current&&B.current.setPlayRate(v)},se=v=>{const AA=(parseInt(v%1*100+"")+"").padStart(2,"0"),eA=(parseInt(v/60+"")+"").padStart(2,"0"),V=(parseInt(v%60+"")+"").padStart(2,"0");return D.jsx(D.Fragment,{children:`${eA}:${V}.${AA.replace("0.","")}`})},GA=()=>{const v=[],AA=new Set,eA=Array.isArray(Q)?Q:[];for(const V of eA){const q=V?.actions;if(Array.isArray(q))for(const tA of q){const aA=tA?.data?.src;if(!aA)continue;const PA=String(aA);AA.has(PA)||(AA.add(PA),v.push(PA))}}return v},ae=(v,AA)=>{const eA=URL.createObjectURL(v),V=document.createElement("a");V.href=eA,V.download=AA,document.body.appendChild(V),V.click(),V.remove(),setTimeout(()=>URL.revokeObjectURL(eA),3e3)},zA=async()=>{if(!yA){rA(!0);try{const v=GA(),AA=new FormData;AA.append("timeline",JSON.stringify({editorData:Q}));for(const q of v){const tA=await fetch(q);if(!tA.ok)throw new Error(`Failed to fetch asset: ${q} (${tA.status})`);const aA=await tA.blob();AA.append("assets",aA,encodeURIComponent(q))}const eA=await fetch("/export",{method:"POST",body:AA});if(!eA.ok){const q=await eA.text().catch(()=>"");throw new Error(q||`Export failed (${eA.status})`)}const V=await eA.blob();ae(V,"export.mp4")}finally{rA(!1)}}};return D.jsxs("div",{className:"timeline-player",children:[D.jsx("div",{className:"play-control",role:"button",tabIndex:0,"aria-label":DA?"Pause":"Play",onClick:()=>{Date.now()-_A.current<450||UA()},onPointerUp:v=>{v.pointerType!=="mouse"&&(_A.current=Date.now(),UA())},children:D.jsx("img",{src:DA?vt:Ot,alt:"",draggable:!1})}),D.jsx("div",{className:"time",children:se(BA)}),D.jsxs("div",{className:"history-tools",children:[D.jsx("button",{type:"button",className:"history-tool",disabled:!Y,"aria-label":"Undo",onClick:()=>{Date.now()-WA.current<450||Y&&X()},onPointerUp:v=>{v.pointerType!=="mouse"&&(WA.current=Date.now(),Y&&X())},children:D.jsx("img",{src:St,alt:"",draggable:!1})}),D.jsx("button",{type:"button",className:"history-tool",disabled:!m,"aria-label":"Redo",onClick:()=>{Date.now()-SA.current<450||m&&G()},onPointerUp:v=>{v.pointerType!=="mouse"&&(SA.current=Date.now(),m&&G())},children:D.jsx("img",{src:bt,alt:"",draggable:!1})})]}),D.jsx("div",{className:"rate-control",children:D.jsx(et.Select,{size:"small",defaultValue:1,style:{width:120},onChange:de,children:Ut.map(v=>D.jsx(yt,{value:v,children:`${v.toFixed(1)}x`},v))})}),D.jsxs("div",{className:"clip-tools",children:[D.jsx("button",{type:"button",className:"clip-tool clip-tool-delete",disabled:!bA,"aria-label":"Delete selected clip",onClick:()=>{Date.now()-TA.current<450||bA&&U()},onPointerUp:v=>{v.pointerType!=="mouse"&&(TA.current=Date.now(),bA&&U())},children:D.jsx("img",{src:Ht,alt:"",draggable:!1})}),D.jsx("button",{type:"button",className:"clip-tool clip-tool-split",disabled:!$A,"aria-label":"Split selected clip at cursor",onClick:()=>{Date.now()-JA.current<450||$A&&H()},onPointerUp:v=>{v.pointerType!=="mouse"&&(JA.current=Date.now(),$A&&H())},children:D.jsx("img",{src:Nt,alt:"",draggable:!1})})]}),D.jsx("div",{className:"export-control",children:D.jsx(et.Button,{size:"small",type:"primary",loading:yA,onClick:zA,children:"Export"})})]})};function xt(){const B=()=>typeof window>"u"?!1:typeof navigator<"u"&&(navigator.maxTouchPoints??0)>0,[s,d]=F.useState(B);return F.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const c=window.matchMedia("(pointer: coarse)"),f=()=>d(!!c.matches||B());return f(),typeof c.addEventListener=="function"?(c.addEventListener("change",f),()=>c.removeEventListener("change",f)):(c.addListener(f),()=>c.removeListener(f))},[]),s}const Mt="data:image/png;base64,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",kt="data:image/png;base64,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",Jt="data:image/png;base64,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",at=()=>[{id:"0",actions:[]},{id:"1",actions:[]},{id:"2",actions:[]},{id:"3",actions:[]}],Xe=5,ct=({item:B,hint:s,isDragging:d})=>D.jsxs("div",{className:`footage-card${d?" is-dragging":""}`,children:[D.jsx("div",{className:"footage-name",children:B.name}),B.kind==="video"?D.jsx("video",{className:"footage-preview",src:B.src,muted:!0,preload:"metadata",draggable:!1,onDragStart:c=>c.preventDefault(),playsInline:!0}):D.jsx("audio",{className:"footage-audio",src:B.src,controls:!0,preload:"metadata",draggable:!1,onDragStart:c=>c.preventDefault()}),D.jsx("div",{className:"footage-kind",children:s})]}),Gt=({item:B,hint:s})=>{const{attributes:d,listeners:c,setNodeRef:f,transform:Q,isDragging:b}=jA.useDraggable({id:`footage-${B.id}`,data:{item:B}}),U=Q?{transform:`translate3d(${Q.x}px, ${Q.y}px, 0)`}:void 0;return D.jsx("div",{ref:f,style:U,...c,...d,children:D.jsx(ct,{item:B,hint:s,isDragging:b})})},Lt=B=>String(B??"").toLowerCase().match(/\.(mp3|wav|m4a|aac|ogg)(\?|#|$)/)?"audio":"video",Yt=(B,s)=>{try{const d=String(B??"").split("/").pop()||"";return decodeURIComponent(d.split("?")[0].split("#")[0])||`Footage ${s+1}`}catch{return`Footage ${s+1}`}},Kt=({footageUrls:B,autoPlaceFootage:s=!1})=>{const[d,c]=F.useState(()=>at()),[f,Q]=F.useState(null),[b,U]=F.useState([]),[H,Y]=F.useState([]),m=F.useRef(d),X=xt(),[G,DA]=F.useState(!1),z=F.useRef(null),BA=F.useRef(null),hA=F.useRef(null),yA=F.useRef(!0),rA=F.useMemo(()=>{const A=Array.isArray(B)?B.filter(Boolean):[];return A.length?A.map((n,t)=>({id:`url-${t}`,kind:Lt(n),name:Yt(n,t),src:n,defaultDuration:10})):[]},[B]),[cA,_A]=F.useState(null),[TA,JA]=F.useState(null),[WA,SA]=F.useState(null),[bA,Ue]=F.useState(0),[XA,$A]=F.useState(0),[mA,HA]=F.useState(0),[UA,de]=F.useState(0),[se,GA]=F.useState(!1),[ae,zA]=F.useState(null),v=F.useRef(null),AA=F.useRef(null),eA=F.useRef(null),V=F.useRef(null),q=X?48:32,tA=30,[aA,PA]=F.useState(()=>Ft),NA=Rt,LA=A=>{PA(n=>{const t=Math.round(n*A);return Math.min(600,Math.max(60,t))})},fA=[1,0],YA=[3,2],Pe=["V2","V1","A2","A1"],ce=(A,n)=>{if(n.length===0)return null;if(A==null)return n[0];let t=n[0],r=Math.abs(A-t);for(const o of n){const i=Math.abs(A-o);i<r&&(t=o,r=i)}return t},qA=(A,n)=>A?A.kind==="video"?ce(n,fA):ce(n,YA):null,QA=A=>A===fA[1]?YA[1]:YA[0],ge=A=>A===YA[1]?fA[1]:fA[0],pA=(A,n)=>{const t=n==="video"?fA:YA;return ce(A,t)??t[0]},Be=F.useRef(!1);F.useEffect(()=>{if(!s||Be.current||rA.length===0||m.current.some(a=>Array.isArray(a?.actions)&&a.actions.length>0))return;const t=fA[0],r=QA(t),o=at();let i=0;for(const a of rA){const u=Math.max(.01,Number(a.defaultDuration??10)),C=i,w=i+u;if(i=w,a.kind==="video"){const I=`link-${CA()}`,y=fA.findIndex(S=>S===t);o[t].actions.push({id:`video-${CA()}`,start:C,end:w,effectId:"effect1",data:{src:a.src,previewSrc:a.previewSrc,name:a.name,linkId:I,videoLayer:y}}),o[r].actions.push({id:`video-audio-${CA()}`,start:C,end:w,effectId:"effect2",data:{src:a.src,name:a.name,linkId:I}})}else o[r].actions.push({id:`audio-${CA()}`,start:C,end:w,effectId:"effect0",data:{src:a.src,name:a.name}})}Q(null),U([]),Y([]),c(()=>(m.current=o,o)),Be.current=!0},[s,rA]),F.useEffect(()=>{ye.warmFromEditorData(d)},[d]),F.useEffect(()=>{m.current=d},[d]),F.useLayoutEffect(()=>{const A=hA.current;if(!A)return;const n=()=>{const r=A.getBoundingClientRect(),o=A.querySelector(".timeline-editor-edit-area");if(!o)return;const i=o.getBoundingClientRect();HA(i.top-r.top),de(i.left-r.left)},t=requestAnimationFrame(n);return window.addEventListener("resize",n),()=>{cancelAnimationFrame(t),window.removeEventListener("resize",n)}},[X,d.length]);const De=A=>{const n=hA.current;if(!n||!A)return!1;const t=n.getBoundingClientRect();return A.x>=t.left&&A.x<=t.right&&A.y>=t.top&&A.y<=t.bottom},ze=F.useRef(0),CA=()=>globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`uid-${++ze.current}`,wA=F.useRef(null),OA=F.useRef(null),Ae=F.useRef(null),he=.9,me=1.05,FA=F.useRef({actionId:null,edge:null}),nA=F.useRef({actionId:null,mode:null,dir:null,basePointerTime:null,lastPointerTime:null,basePointerClientY:null,lastPointerClientY:null,initialRowIndex:0,committedRowIndex:0,laneCandidateRowIndex:null,laneCandidateSinceMs:0,laneIntentRowIndex:null,initialStart:0,initialEnd:0,takeover:!1}),uA=F.useRef({actionId:null,partnerId:null,dir:null,baseStart:0,baseOffset:0,partnerBaseOffset:0}),Fe=F.useRef(!1),ue=A=>A.map(n=>{const t=(n.actions??[]).map(r=>`${String(r.id)}@${Number(r.start)}-${Number(r.end)}`).join("|");return`${String(n.id)}:${t}`}).join("||"),ee=A=>{const n=structuredClone(A);U(t=>{const r=[...t,n];return r.length>Xe&&r.splice(0,r.length-Xe),r}),Y([])},fe=(A,n,t,r)=>A<r&&n>t,KA=(A,n,t,r)=>{const o=Array.isArray(A?.actions)?A.actions:[];for(const i of o)if(!(!i||i.id===n)&&fe(t,r,Number(i.start),Number(i.end)))return!0;return!1},IA=(A,n)=>{for(let t=0;t<A.length;t++){const r=A[t],o=Array.isArray(r?.actions)?r.actions:[];for(let i=0;i<o.length;i++){const a=o[i];if(String(a?.id)===n)return{rowIndex:t,actionIndex:i,action:a}}}return null},xA=(A,n)=>{const t=IA(A,n),r=t?.action?.data?.linkId;if(!t||!r)return null;for(let o=0;o<A.length;o++){const i=A[o],a=Array.isArray(i?.actions)?i.actions:[];for(let u=0;u<a.length;u++){const C=a[u];if(C?.data?.linkId&&String(C.data.linkId)===String(r)&&String(C.id)!==String(n))return{rowIndex:o,actionIndex:u,action:C}}}return null},Re=(A,n)=>{const t=IA(A,n);if(!t)return A;const r=xA(A,n);if(!r)return A;const o=Number(t.action.start),i=Number(t.action.end);if(!Number.isFinite(o)||!Number.isFinite(i)||i<=o||Number(r.action.start)===o&&Number(r.action.end)===i)return A;const a=structuredClone(A),u=a[r.rowIndex],C=Array.isArray(u.actions)?[...u.actions]:[],w={...C[r.actionIndex],start:o,end:i};return C.splice(r.actionIndex,1,w),u.actions=C,a},xe=(A,n)=>{const t=structuredClone(A);for(;t.length<4;)t.push({id:`${t.length}`,actions:[]});const r=l=>l&&typeof l=="object"?l:{},o=(l,O)=>{if(!(!l||typeof l!="object"))return l[O]},i=l=>String(o(l,"id")??""),a=l=>String(o(l,"effectId")??""),u=l=>Number(o(l,"start")),C=l=>Number(o(l,"end")),w=l=>o(l,"data"),I=l=>{if(!l||typeof l!="object")return 0;const O=Number(l.start);return Number.isFinite(O)?O:0},y=new Map,S=new Map;for(let l=0;l<t.length;l++){const O=t[l],N=Array.isArray(O?.actions)?O.actions:[];for(let h=0;h<N.length;h++){const P=N[h],J=i(P);if(!J)continue;y.set(J,{rowIndex:l,actionIndex:h,action:P});const W=w(P),_=o(W,"linkId"),oA=_!=null?String(_):"";if(!oA)continue;const k=S.get(oA)??{},j=a(P);j==="effect1"?k.video={rowIndex:l,actionIndex:h,action:P}:j==="effect2"&&(k.audio={rowIndex:l,actionIndex:h,action:P}),S.set(oA,k)}}const R=new Map;for(const l of S.values()){if(!l.video||!l.audio)continue;const O=i(l.video.action),N=i(l.audio.action),h=n&&String(n)===N?"audio":"video",P=h==="audio"?ge(pA(l.audio.rowIndex,"audio")):pA(l.video.rowIndex,"video"),J=QA(P),W=h==="audio"?l.audio.action:l.video.action,_=u(W),oA=C(W),k=Number.isFinite(_)&&Number.isFinite(oA)&&oA>_,j=Math.max(0,fA.findIndex($=>$===P));R.set(O,{targetRowIndex:P,patchStartEnd:k?{start:_,end:oA}:void 0,patchVideoLayer:j}),R.set(N,{targetRowIndex:J,patchStartEnd:k?{start:_,end:oA}:void 0})}for(const[l,O]of y.entries()){if(R.has(l))continue;const N=a(O.action);if(N==="effect1"){const h=pA(O.rowIndex,"video"),P=Math.max(0,fA.findIndex(J=>J===h));R.set(l,{targetRowIndex:h,patchVideoLayer:P})}else if(N==="effect0"||N==="effect2"){const h=pA(O.rowIndex,"audio");R.set(l,{targetRowIndex:h})}}const K=t.map(l=>({...l,actions:[]}));let x=!1;for(let l=0;l<t.length;l++){const O=t[l],N=Array.isArray(O?.actions)?O.actions:[];for(const h of N){const P=h,J=i(P);if(!J)continue;const W=R.get(J),_=W?W.targetRowIndex:l,oA=K[_]??K[l];let k=P;if(W?.patchStartEnd){const j=W.patchStartEnd.start,$=W.patchStartEnd.end;(u(k)!==j||C(k)!==$)&&(k={...r(k),start:j,end:$},x=!0)}if(W?.patchVideoLayer!=null&&a(k)==="effect1"){const j=Number(o(w(k),"videoLayer"));if(!Number.isFinite(j)||j!==W.patchVideoLayer){const $={...r(w(k)),videoLayer:W.patchVideoLayer};k={...r(k),data:$},x=!0}}_!==l&&(x=!0),oA.actions.push(k)}}for(const l of K){const O=Array.isArray(l.actions)?[...l.actions]:[];O.sort((N,h)=>I(N)-I(h)),l.actions=O}return x?K:A},MA=(A,n,t,r)=>{if(!Number.isFinite(t)||!Number.isFinite(r)||r<=t)return A;const o=IA(A,n);if(!o)return A;const i=xA(A,n);if(!i)return A;const a=structuredClone(A),u=a[o.rowIndex],C=Array.isArray(u.actions)?[...u.actions]:[],w={...C[o.actionIndex],start:t,end:r};C.splice(o.actionIndex,1,w),u.actions=C;const I=a[i.rowIndex],y=Array.isArray(I.actions)?[...I.actions]:[],S={...y[i.actionIndex],start:t,end:r};return y.splice(i.actionIndex,1,S),I.actions=y,a},te=(A,n,t,r)=>{if(!Number.isFinite(t)||!Number.isFinite(r)||r<=t)return A;const o=IA(A,n);if(!o)return A;const i=Number(o.action.start),a=Number(o.action.end);if(i===t&&a===r)return A;const u=structuredClone(A),C=u[o.rowIndex],w=Array.isArray(C.actions)?[...C.actions]:[],I={...w[o.actionIndex],start:t,end:r};return w.splice(o.actionIndex,1,I),C.actions=w,u},Ce=()=>{const A=z.current?.getTime?Number(z.current.getTime()):0;return Number.isFinite(A)?Math.max(0,A):0},pe=(A,n,t)=>{const r=Ce(),o=t-n;if(!Number.isFinite(o)||o<=0)return{start:n,end:t,snapped:!1,edge:null};const i=Math.abs(n-r),a=Math.abs(t-r),u=i<=a?"start":"end",C=Math.min(i,a),w=FA.current;if(w.actionId===A&&w.edge!=null){if((w.edge==="start"?i:a)>me)return FA.current={actionId:A,edge:null},{start:n,end:t,snapped:!1,edge:null}}else{if(C>he)return{start:n,end:t,snapped:!1,edge:null};FA.current={actionId:A,edge:u}}const S=FA.current.edge;if(S==="start"){const x=r,l=x+o;return{start:Math.max(0,x),end:Math.max(Math.max(0,x),l),snapped:!0,edge:S}}const R=r,K=R-o;return{start:Math.max(0,K),end:Math.max(0,R),snapped:!0,edge:S}},Me=(A,n,t,r)=>{const o=Ce(),i=r==="left"?"start":"end",a=Math.abs(i==="start"?n-o:t-o),u=FA.current;if(u.actionId===A&&u.edge===i){if(a>me)return FA.current={actionId:A,edge:null},{start:n,end:t,snapped:!1}}else{if(a>he)return{start:n,end:t,snapped:!1};FA.current={actionId:A,edge:i}}if(i==="start"){const S=Math.max(0,o),R=Math.max(S+.01,t);return{start:S,end:R,snapped:!0}}const I=Math.max(0,o),y=Math.min(n,I-.01);return{start:Math.max(0,y),end:I,snapped:!0}},ke=(A,n,t)=>{const r=A.defaultDuration??10;let o=Math.max(0,n),i=o+r;const a=z.current;a?.isPlaying&&a.pause(),c(u=>{ee(u);const C=structuredClone(u);for(;C.length<4;)C.push({id:`${C.length}`,actions:[]});const w=Number.isFinite(Number(t))?Number(t):null,I=ce(w,fA)??fA[0],y=ce(w,YA)??YA[0],S=R=>{const K=[];for(const x of R){const l=Array.isArray(C[x]?.actions)?C[x].actions:[];for(const O of l){const N=Number(O?.start),h=Number(O?.end);!Number.isFinite(N)||!Number.isFinite(h)||K.push({start:N,end:h})}}K.sort((x,l)=>x.start-l.start);for(const x of K)fe(o,i,x.start,x.end)&&(o=x.end,i=o+r)};if(A.kind==="video"){const R=I,K=QA(R);S([R,K]);const x=`link-${CA()}`,l=`video-${CA()}`,O=`video-audio-${CA()}`,N=fA.findIndex(h=>h===R);C[R].actions=[...C[R].actions??[],{id:l,start:o,end:i,effectId:"effect1",data:{src:A.src,previewSrc:A.previewSrc,name:A.name,linkId:x,videoLayer:N}}],C[K].actions=[...C[K].actions??[],{id:O,start:o,end:i,effectId:"effect2",data:{src:A.src,name:A.name,linkId:x}}]}else{const R=y;S([R]),C[R].actions=[...C[R].actions??[],{id:`audio-${CA()}`,start:o,end:i,effectId:"effect0",data:{src:A.src,name:A.name}}]}return C})},qe=()=>{const A=hA.current;return A?A.querySelector(".timeline-editor-edit-area .ReactVirtualized__Grid")?.scrollLeft??0:0},Je=()=>bA,ne=A=>{const n=hA.current;if(!n)return 0;const r=(n.querySelector(".timeline-editor-edit-area")??n).getBoundingClientRect(),a=(A-r.x+qe()-tA)*NA/aA;return Math.max(0,a)},Ge=A=>{const n=Number(A);return Number.isFinite(n)?tA+n*aA/NA:0},Ve=(A,n,t,r)=>{const o=A.defaultDuration??10;let i=Math.max(0,n),a=i+o;const u=[];if(A.kind==="video"){const w=t,I=QA(w);u.push(w,I)}else u.push(t);const C=[];for(const w of u){const I=Array.isArray(r[w]?.actions)?r[w].actions:[];for(const y of I){const S=Number(y?.start),R=Number(y?.end);!Number.isFinite(S)||!Number.isFinite(R)||C.push({start:S,end:R})}}C.sort((w,I)=>w.start-I.start);for(const w of C)fe(i,a,w.start,w.end)&&(i=w.end,a=i+o);return Math.max(0,i)},re=A=>{const n=hA.current;if(!n)return null;const t=n.querySelector(".timeline-editor-edit-area");if(!t)return null;const r=t.getBoundingClientRect(),o=A-r.y;if(o<0||o>r.height)return null;const i=o+Je(),a=Math.floor(i/q);if(!Number.isFinite(a))return null;const u=Math.max(0,m.current.length-1);return Math.min(Math.max(0,a),u)},Le=A=>{if(!A)return null;if("clientX"in A&&"clientY"in A){const o=Number(A.clientX),i=Number(A.clientY);if(Number.isFinite(o)&&Number.isFinite(i))return{x:o,y:i}}const n=A.touches,t=A.changedTouches,r=(n&&n.length?n[0]:null)||(t&&t.length?t[0]:null);if(r){const o=Number(r.clientX),i=Number(r.clientY);if(Number.isFinite(o)&&Number.isFinite(i))return{x:o,y:i}}return null},Ee=()=>{if(Fe.current)return;Fe.current=!0;const A=t=>{const r=nA.current;if(!r.actionId||!r.mode||t.isPrimary===!1)return;const o=ne(t.clientX);r.basePointerTime==null&&(r.basePointerTime=o),r.lastPointerTime=o,r.basePointerClientY==null&&(r.basePointerClientY=t.clientY),r.lastPointerClientY=t.clientY},n=()=>{const t={actionId:nA.current.actionId,mode:nA.current.mode};requestAnimationFrame(()=>{nA.current.actionId===t.actionId&&nA.current.mode===t.mode&&(nA.current={actionId:null,mode:null,dir:null,basePointerTime:null,lastPointerTime:null,basePointerClientY:null,lastPointerClientY:null,initialRowIndex:0,committedRowIndex:0,laneCandidateRowIndex:null,laneCandidateSinceMs:0,laneIntentRowIndex:null,initialStart:0,initialEnd:0,takeover:!1},FA.current={actionId:null,edge:null})})};window.addEventListener("pointermove",A,{capture:!0}),window.addEventListener("pointerup",n,{capture:!0}),window.addEventListener("pointercancel",n,{capture:!0}),nA.current._removePointerListeners=()=>{window.removeEventListener("pointermove",A,{capture:!0}),window.removeEventListener("pointerup",n,{capture:!0}),window.removeEventListener("pointercancel",n,{capture:!0}),Fe.current=!1}},Ye=()=>{const A=nA.current?._removePointerListeners;A?.(),delete nA.current._removePointerListeners},Oe=F.useRef(!1),ve=A=>{const n=Number(A?.data?.offset??0);return Number.isFinite(n)?n:0},e=(A,n,t)=>{const r=IA(A,n);if(!r)return A;const o=Math.max(0,Number.isFinite(t)?t:0);if(ve(r.action)===o)return A;const a=structuredClone(A),u=a[r.rowIndex],C=Array.isArray(u.actions)?[...u.actions]:[],w={...C[r.actionIndex],data:{...C[r.actionIndex]?.data??{},offset:o}};return C.splice(r.actionIndex,1,w),u.actions=C,a},g=(A,n,t,r)=>{const o=IA(A,n);if(!o)return A;const i=xA(A,n);if(!i)return e(A,n,t);const a=Math.max(0,Number.isFinite(t)?t:0),u=Math.max(0,Number.isFinite(Number(r))?Number(r):a),C=structuredClone(A),w=C[o.rowIndex],I=Array.isArray(w.actions)?[...w.actions]:[],y={...I[o.actionIndex],data:{...I[o.actionIndex]?.data??{},offset:a}};I.splice(o.actionIndex,1,y),w.actions=I;const S=C[i.rowIndex],R=Array.isArray(S.actions)?[...S.actions]:[],K={...R[i.actionIndex],data:{...R[i.actionIndex]?.data??{},offset:u}};return R.splice(i.actionIndex,1,K),S.actions=R,C},[E,p]=F.useState(null),T=(A,n,t)=>{const r=IA(A,n);if(!r)return A;const i=String(r.action?.effectId??"")==="effect1"?"video":"audio",a=pA(t,i),u=xA(A,n),C=!!u,w=new Set([String(n)]);u&&w.add(String(u.action.id));const I=Number(r.action?.start),y=Number(r.action?.end);if(!Number.isFinite(I)||!Number.isFinite(y)||y<=I)return A;const S=(h,P,J)=>{const W=Array.isArray(h?.actions)?h.actions:[];for(const _ of W){const oA=String(_?.id??"");if(!(oA&&w.has(oA))&&fe(P,J,Number(_?.start),Number(_?.end)))return!1}return!0};let R=null,K=null;if(C&&(i==="video"?(R=a,K=QA(R)):(K=a,R=ge(K))),i==="video"){if(!S(A[a],I,y))return A}else if(!S(A[a],I,y))return A;if(R!=null&&!S(A[R],I,y)||K!=null&&!S(A[K],I,y)||!C&&r.rowIndex===a)return A;if(C&&i==="video"&&r.rowIndex===R){const h=u?IA(A,String(u.action.id)):null;if(h&&h.rowIndex===K)return A}if(C&&i==="audio"&&r.rowIndex===K){const h=u?IA(A,String(u.action.id)):null;if(h&&h.rowIndex===R)return A}const x=structuredClone(A);for(;x.length<4;)x.push({id:`${x.length}`,actions:[]});const l=(h,P)=>{const J=Array.isArray(h.actions)?h.actions:[];h.actions=J.filter(W=>String(W?.id??"")!==P)},O=(h,P)=>{const J=x[h];J.actions=[...J.actions??[],P],J.actions.sort((W,_)=>Number(W.start)-Number(_.start))};l(x[r.rowIndex],String(n));let N=r.action;if(i==="video"){const h=Math.max(0,fA.findIndex(P=>P===a));N={...N,data:{...N.data??{},videoLayer:h}}}if(O(a,N),u&&R!=null&&K!=null){const h=IA(A,String(u.action.id));if(h){l(x[h.rowIndex],String(u.action.id));const P=i==="video"?K:R;let J=h.action;if(String(J?.effectId??"")==="effect1"){const _=Math.max(0,fA.findIndex(oA=>oA===P));J={...J,data:{...J.data??{},videoLayer:_}}}O(P,J)}}return x},Z=A=>A.map(n=>({...n,selected:void 0,actions:(n.actions??[]).map(t=>({...t,selected:void 0}))})),L=F.useMemo(()=>d.map((A,n)=>{const t=f?(A.actions??[]).some(a=>String(a.id)===f):!1,r=cA!=null&&WA!=null&&n===WA,o=Array.isArray(A.classNames)?A.classNames:[],i=r?[...o,"dnd-drop-hover"]:o;return{...A,classNames:i,selected:t,actions:(A.actions??[]).map(a=>({...a,selected:f?String(a.id)===f:!1}))}}),[d,f,cA,WA]),M=()=>{if(!f)return;const A=z.current;A?.isPlaying&&A.pause(),c(n=>{ee(n);let t=null;for(const o of n){const i=Array.isArray(o?.actions)?o.actions:[];for(const a of i){if(String(a?.id)!==f)continue;const u=a?.data?.linkId;u!=null&&(t=String(u));break}if(t!=null)break}return n.map(o=>({...o,actions:(o.actions??[]).filter(i=>!(String(i?.id)===f||t&&String(i?.data?.linkId??"")===t))}))}),Q(null)},lA=()=>{if(!f)return;const A=z.current,n=A?.getTime?A.getTime():null;if(n==null)return;const t=Number(n);Number.isFinite(t)&&(A?.isPlaying&&A.pause(),wA.current=null,OA.current=null,c(r=>{let o=-1,i=-1,a=null;for(let k=0;k<r.length;k++){const j=r[k],$=Array.isArray(j?.actions)?j.actions:[];for(let gA=0;gA<$.length;gA++){const dA=$[gA];if(String(dA?.id)===f){o=k,i=gA,a=dA;break}}if(a)break}if(!a)return r;const u=a?.data?.linkId?String(a.data.linkId):null;let C=-1,w=-1,I=null;if(u)for(let k=0;k<r.length;k++){const j=r[k],$=Array.isArray(j?.actions)?j.actions:[];for(let gA=0;gA<$.length;gA++){const dA=$[gA];if(String(dA?.id)!==f&&String(dA?.data?.linkId??"")===u){C=k,w=gA,I=dA;break}}if(I)break}const y=Number(a.start),S=Number(a.end);if(!Number.isFinite(y)||!Number.isFinite(S)||!(y<t&&t<S))return r;ee(r);const R=u&&I?`link-${CA()}`:u,K=u&&I?`link-${CA()}`:u,x=`${String(a.id)}-r-${CA()}`,l=Number(a?.data?.offset??0),O=Number.isFinite(l)?l:0,N=t-y,h=O+(Number.isFinite(N)?N:0),P={...a,start:y,end:t,id:a.id,data:{...a.data,offset:O,linkId:R??void 0}},J={...a,start:t,end:S,id:x,data:{...a.data,offset:h,linkId:K??void 0}},W=structuredClone(r),_=W[o],oA=Array.isArray(_.actions)?[..._.actions]:[];if(oA.splice(i,1,P,J),oA.sort((k,j)=>Number(k.start)-Number(j.start)),_.actions=oA,I&&C>=0&&w>=0){const k=Number(I.start),j=Number(I.end);if(Number.isFinite(k)&&Number.isFinite(j)&&k===y&&j===S){const $=Number(I?.data?.offset),gA=Number.isFinite($)?$:O,dA=gA+(Number.isFinite(N)?N:0),ZA=`${String(I.id)}-r-${CA()}`,Qe={...I,start:y,end:t,id:I.id,data:{...I.data,offset:gA,linkId:R??void 0}},oe={...I,start:t,end:S,id:ZA,data:{...I.data,offset:dA,linkId:K??void 0}},we=W[C],Ie=Array.isArray(we.actions)?[...we.actions]:[];Ie.splice(w,1,Qe,oe),Ie.sort((Ke,je)=>Number(Ke.start)-Number(je.start)),we.actions=Ie}}return W}))},iA=()=>{const A=z.current,n=A?.getTime?A.getTime():null;A?.isPlaying&&A.pause(),wA.current=null,OA.current=null,Q(null),U(t=>{if(t.length===0)return t;const r=t[t.length-1],o=structuredClone(m.current);return Y(i=>[...i,o]),c(structuredClone(r)),t.slice(0,-1)}),n!=null&&requestAnimationFrame(()=>{const t=z.current;t?.setTime&&t.setTime(n)})},sA=()=>{const A=z.current,n=A?.getTime?A.getTime():null;A?.isPlaying&&A.pause(),wA.current=null,OA.current=null,Q(null),Y(t=>{if(t.length===0)return t;const r=t[t.length-1],o=structuredClone(m.current);return U(i=>{const a=[...i,o];return a.length>Xe&&a.splice(0,a.length-Xe),a}),c(structuredClone(r)),t.slice(0,-1)}),n!=null&&requestAnimationFrame(()=>{const t=z.current;t?.setTime&&t.setTime(n)})},RA=jA.useSensors(jA.useSensor(jA.PointerSensor,{activationConstraint:{distance:6}}),jA.useSensor(jA.TouchSensor,{activationConstraint:{delay:180,tolerance:6}})),{setNodeRef:ie,isOver:VA}=jA.useDroppable({id:"timeline-drop"}),EA=A=>{const n=A.active.data.current?.item;_A(n??null);const t=Le(A.activatorEvent);if(v.current=t,AA.current=t,zA(t),t){const o=De(t);GA(o);const i=re(t.y);SA(o?qA(n??null,i):null)}else SA(null),GA(!1);const r=A.active.rect.current.initial;JA(r?{width:r.width,height:r.height}:null)},Se=A=>{const n=A.active.rect.current.initial;!TA&&n&&JA({width:n.width,height:n.height});const t=AA.current;if(!t){SA(null);return}const r=Number(A?.delta?.x??0),o=Number(A?.delta?.y??0),i={x:t.x+(Number.isFinite(r)?r:0),y:t.y+(Number.isFinite(o)?o:0)};v.current=i,zA(i);const a=De(i);GA(a);const u=re(i.y);SA(a?qA(cA,u):null)},Ze=A=>{const n=A.active.data.current?.item,t=AA.current,r=Number(A?.delta?.x??0),o=Number(A?.delta?.y??0),i=t?{x:t.x+(Number.isFinite(r)?r:0),y:t.y+(Number.isFinite(o)?o:0)}:v.current;v.current=i;const u=String(A.over?.id??"")==="timeline-drop"||De(i);if(n&&u&&i){const C=ne(i.x),w=re(i.y),I=qA(n,w);SA(I),ke(n,Math.max(0,C),I)}_A(null),JA(null),SA(null),GA(!1),zA(null),AA.current=null},_e=()=>{_A(null),JA(null),SA(null),GA(!1),zA(null),AA.current=null},le=F.useMemo(()=>{if(!cA||!se)return null;const A=ae;if(!A)return null;const n=re(A.y),t=qA(cA,n);if(t==null)return null;const r=ne(A.x),o=Ve(cA,r,t,m.current),i=cA.defaultDuration??10;return{laneRow:t,desiredStart:r,start:o,end:o+i,duration:i,kind:cA.kind}},[cA,se,ae,XA,bA,q]),gt=A=>{if(!X||A.pointerType==="mouse"||cA)return;if(!!A.target?.closest?.(".timeline-editor-cursor-area, .timeline-editor-cursor")){V.current={pointerId:A.pointerId},eA.current=null;try{A.currentTarget.setPointerCapture(A.pointerId)}catch{}A.preventDefault();return}eA.current={x:A.clientX,y:A.clientY}},Bt=A=>{if(!X||A.pointerType==="mouse"||cA||!V.current||V.current.pointerId!==A.pointerId)return;const n=ne(A.clientX);z.current&&z.current.setTime(n),A.preventDefault()},ut=A=>{if(!X||A.pointerType==="mouse"||cA)return;if(V.current&&V.current.pointerId===A.pointerId){V.current=null;try{A.currentTarget.releasePointerCapture(A.pointerId)}catch{}A.preventDefault();return}const n=eA.current;eA.current=null;const t=n?Math.abs(A.clientX-n.x):0,r=n?Math.abs(A.clientY-n.y):0;if(t>10||r>10)return;const i=A.target?.closest?.("[data-action-id]"),a=i?.getAttribute("data-row-id"),u=i?.getAttribute("data-action-id");if(a&&u){Q(u);return}const C=ne(A.clientX);Q(null),z.current&&z.current.setTime(C)};return D.jsx(jA.DndContext,{sensors:RA,collisionDetection:jA.rectIntersection,onDragStart:EA,onDragMove:Se,onDragEnd:Ze,onDragCancel:_e,children:D.jsxs("div",{className:"timeline-editor-engine",children:[D.jsxs("div",{className:"player-stack",children:[D.jsx("div",{className:"footage-ribbon",role:"toolbar","aria-label":"Footage",children:D.jsx("button",{type:"button",className:`footage-ribbon-toggle${G?" is-open":""}`,"aria-expanded":G,"aria-controls":"footage-bin-panel",onClick:()=>DA(A=>!A),children:D.jsx("img",{src:Mt,alt:"Footage",draggable:!1})})}),D.jsx("div",{id:"footage-bin-panel",className:`footage-bin-panel${G?" is-open":""}${cA?" is-dragging":""}`,"aria-hidden":!G,children:D.jsx("div",{className:"footage-bin",children:rA.map(A=>D.jsx(Gt,{item:A,hint:X?"Press-hold, then drag into timeline":"Drag into timeline"},A.id))})}),D.jsx("div",{className:"player-panel",ref:BA,children:D.jsx("video",{className:"player-video",preload:"auto",playsInline:!0,muted:!0,controls:!1,disablePictureInPicture:!0,disableRemotePlayback:!0,controlsList:"nodownload noplaybackrate noremoteplayback",tabIndex:-1,onContextMenu:A=>A.preventDefault(),ref:A=>kA.attach(A)})})]}),D.jsx(Pt,{timelineState:z,autoScrollWhenPlay:yA,scale:NA,scaleWidth:aA,startLeft:tA,editorData:d,selectedActionId:f,onDeleteSelectedClip:M,onSplitSelectedClip:lA,canUndo:b.length>0,canRedo:H.length>0,onUndo:iA,onRedo:sA}),D.jsxs("div",{className:`timeline-drop${VA?" is-over":""}`,ref:A=>{hA.current=A,ie(A)},onPointerDown:gt,onPointerMove:Bt,onPointerUp:ut,children:[D.jsxs("div",{className:"timeline-zoom-controls","aria-label":"Timeline zoom",children:[D.jsx("button",{type:"button",className:"timeline-zoom-control",onClick:()=>LA(1/1.25),"aria-label":"Zoom out",title:"Zoom out",children:D.jsx("img",{src:Jt,alt:"",draggable:!1})}),D.jsx("button",{type:"button",className:"timeline-zoom-control",onClick:()=>LA(1.25),"aria-label":"Zoom in",title:"Zoom in",children:D.jsx("img",{src:kt,alt:"",draggable:!1})})]}),D.jsx("div",{className:"timeline-lane-labels",style:{top:mA,transform:`translateY(${-bA}px)`,height:q*Pe.length},children:Pe.map((A,n)=>D.jsx("div",{className:`timeline-lane-label${WA===n?" is-hover":""}`,style:{height:q},children:A},A))}),le?D.jsx("div",{className:"timeline-ghost-layer",style:{top:mA,left:UA},children:(()=>{const A=aA/NA,n=le.duration*A,t=Ge(le.start)-XA,r=[];return le.kind==="video"?(r.push({row:le.laneRow,kind:"video"}),r.push({row:QA(le.laneRow),kind:"audio"})):r.push({row:le.laneRow,kind:"audio"}),r.map(o=>D.jsx("div",{className:`timeline-ghost-clip${o.kind==="video"?" is-video":" is-audio"}`,style:{left:t,top:o.row*q-bA,width:n,height:q}},`${o.kind}-${o.row}`))})()}):null,E?D.jsx("div",{className:"timeline-ghost-layer",style:{top:mA,left:UA},children:(()=>{const A=aA/NA,n=E.duration*A,t=Ge(E.start)-XA,r=[];return E.kind==="video"?(r.push({row:E.laneRow,kind:"video"}),r.push({row:QA(E.laneRow),kind:"audio"})):r.push({row:E.laneRow,kind:"audio"}),r.map(o=>D.jsx("div",{className:`timeline-ghost-clip${o.kind==="video"?" is-video":" is-audio"}`,style:{left:t,top:o.row*q-bA,width:n,height:q}},`${E.actionId}-${o.kind}-${o.row}`))})()}):null,D.jsx(lt.Timeline,{scale:NA,scaleWidth:aA,startLeft:tA,rowHeight:q,autoScroll:!0,ref:z,editorData:L,effects:pt,onScroll:A=>{const n=Number(A?.scrollTop??0),t=Number(A?.scrollLeft??0);Number.isFinite(n)&&Ue(n),Number.isFinite(t)&&$A(t)},onClickTimeArea:(A,n)=>{Q(null)},onClickRow:A=>{A.target?.closest?.(".timeline-editor-action")||Q(null)},onClickActionOnly:(A,{action:n})=>{const t=n;t?.id&&Q(String(t.id))},onActionMoveStart:({action:A})=>{Ae.current=String(A?.id??""),FA.current={actionId:String(A?.id??""),edge:null};const n=Number(A?.start),t=Number(A?.end),r=String(A?.id??""),o=r?IA(m.current,r):null,i=o?o.rowIndex:0;nA.current={actionId:r,mode:"move",dir:null,basePointerTime:null,lastPointerTime:null,basePointerClientY:null,lastPointerClientY:null,initialRowIndex:i,committedRowIndex:i,laneCandidateRowIndex:null,laneCandidateSinceMs:0,laneIntentRowIndex:null,initialStart:Number.isFinite(n)?n:0,initialEnd:Number.isFinite(t)?t:0,takeover:!0},Ee(),p(null),!wA.current&&(wA.current=structuredClone(d),OA.current=ue(d))},onActionMoveEnd:()=>{const A=nA.current,n=String(A.actionId??""),t=A.laneIntentRowIndex;n&&t!=null&&(Oe.current=!0,c(i=>{const a=T(i,n,t);return m.current=a,a})),p(null);const r=wA.current,o=OA.current;r&&o&&ue(m.current)!==o&&ee(r),wA.current=null,OA.current=null,Ae.current=null,FA.current={actionId:null,edge:null},nA.current={actionId:null,mode:null,dir:null,basePointerTime:null,lastPointerTime:null,basePointerClientY:null,lastPointerClientY:null,initialRowIndex:0,committedRowIndex:0,laneCandidateRowIndex:null,laneCandidateSinceMs:0,laneIntentRowIndex:null,initialStart:0,initialEnd:0,takeover:!1},Ye()},onActionResizeStart:({action:A})=>{Ae.current=String(A?.id??""),FA.current={actionId:String(A?.id??""),edge:null};const n=Number(A?.start),t=Number(A?.end),r=String(A?.id??""),o=r?IA(m.current,r):null,i=o?o.rowIndex:0,a=ve(o?.action??A),u=r?xA(m.current,r):null,C=u?String(u.action.id):null,w=u?ve(u.action):a;uA.current={actionId:r,partnerId:C,dir:null,baseStart:Number.isFinite(n)?n:0,baseOffset:a,partnerBaseOffset:w},nA.current={actionId:r,mode:"resize",dir:null,basePointerTime:null,lastPointerTime:null,basePointerClientY:null,lastPointerClientY:null,initialRowIndex:i,committedRowIndex:i,laneCandidateRowIndex:null,laneCandidateSinceMs:0,laneIntentRowIndex:null,initialStart:Number.isFinite(n)?n:0,initialEnd:Number.isFinite(t)?t:0,takeover:!1},Ee(),!wA.current&&(wA.current=structuredClone(d),OA.current=ue(d))},onActionResizeEnd:()=>{const A=wA.current,n=OA.current;A&&n&&ue(m.current)!==n&&ee(A),wA.current=null,OA.current=null,Ae.current=null,FA.current={actionId:null,edge:null},nA.current={actionId:null,mode:null,dir:null,basePointerTime:null,lastPointerTime:null,basePointerClientY:null,lastPointerClientY:null,initialRowIndex:0,committedRowIndex:0,laneCandidateRowIndex:null,laneCandidateSinceMs:0,laneIntentRowIndex:null,initialStart:0,initialEnd:0,takeover:!1},Ye(),uA.current={actionId:null,partnerId:null,dir:null,baseStart:0,baseOffset:0,partnerBaseOffset:0}},onActionMoving:({action:A,row:n,start:t,end:r})=>{const o=String(A?.id??""),i=nA.current,a=(O,N)=>{const h=Number(O),P=Number(N);if(!Number.isFinite(h)||!Number.isFinite(P))return{start:O,end:N,clamped:!1};if(P<=h)return{start:O,end:N,clamped:!1};if(h>=0)return{start:h,end:P,clamped:!1};const J=-h;return{start:0,end:P+J,clamped:!0}},u=O=>{const N=String(O?.id??"");return N?m.current.findIndex(h=>String(h?.id??"")===N):-1};if(i.takeover&&i.mode==="move"&&i.actionId===o){const N=Math.max(10,q*.45),h=i.basePointerTime,P=i.lastPointerTime,J=h!=null&&P!=null?P-h:0,W=i.initialStart+J,_=i.initialEnd+J,oA=pe(o,W,_),k=a(oA.start,oA.end),j=k.start,$=k.end,dA=String(A?.effectId??"")==="effect1"?"video":"audio",ZA=i.lastPointerClientY,Qe=ZA!=null?re(ZA):null,oe=pA(Qe??i.committedRowIndex,dA),we=i.basePointerClientY,Ie=we!=null&&ZA!=null?Math.abs(ZA-we):0,Ke=typeof performance<"u"&&performance.now?performance.now():Date.now();oe!==i.committedRowIndex&&Ie>=N?(i.laneCandidateRowIndex!==oe&&(i.laneCandidateRowIndex=oe,i.laneCandidateSinceMs=Ke),Ke-i.laneCandidateSinceMs>=160&&(i.laneIntentRowIndex=oe)):(i.laneCandidateRowIndex=null,i.laneCandidateSinceMs=0,i.laneIntentRowIndex=null);const je=oe!==i.committedRowIndex&&Ie>=N?oe:null;je!=null?p({actionId:o,laneRow:je,start:j,end:$,duration:Math.max(.01,$-j),kind:dA}):p(null);const $e=m.current,tt=$e[i.committedRowIndex];if(tt&&KA(tt,String(A.id),j,$))return!1;const At=xA($e,String(A.id));if(At){const Te=dA==="video"?QA(pA(i.committedRowIndex,"video")):ge(pA(i.committedRowIndex,"audio")),be=$e[Te];if(be&&KA(be,String(At.action.id),j,$))return!1}return c(Te=>{const be=At?MA(Te,String(A.id),j,$):te(Te,String(A.id),j,$);return m.current=be,be}),!1}const C=Number(t),w=Number(r);if(!Number.isFinite(C)||!Number.isFinite(w)||w<=C)return!1;const I=pe(o,C,w),y=a(I.start,I.end),S=y.start,R=y.end;if(!Number.isFinite(S)||!Number.isFinite(R)||R<=S)return!1;const K=n;if(KA(K,String(A.id),S,R))return!1;const x=m.current,l=xA(x,String(A.id));if(l){const O=String(A?.effectId??""),N=u(K);let h=l.rowIndex;if(N>=0)if(O==="effect1"){const J=pA(N,"video");h=QA(J)}else{const J=pA(N,"audio");h=ge(J)}const P=x[h];if(P&&KA(P,String(l.action.id),S,R))return!1}if((l||I.snapped||y.clamped)&&c(O=>{const N=l?MA(O,String(A.id),S,R):te(O,String(A.id),S,R);return m.current=N,N}),I.snapped||y.clamped){const O=nA.current.lastPointerTime;return nA.current={...nA.current,actionId:o,mode:"move",dir:null,basePointerTime:O,lastPointerTime:nA.current.lastPointerTime,initialStart:C,initialEnd:w,takeover:!0},Ee(),!1}},onActionResizing:({action:A,row:n,start:t,end:r,dir:o})=>{const i=String(A?.id??""),a=nA.current,u=o??"right";if(a.actionId===i&&a.mode==="resize"&&(a.dir=u),uA.current.actionId===i&&(uA.current.dir=u),a.takeover&&a.mode==="resize"&&a.actionId===i){const l=a.basePointerTime,O=a.lastPointerTime,N=l!=null&&O!=null?O-l:0,h=u==="left"?a.initialStart+N:a.initialStart,P=u==="right"?a.initialEnd+N:a.initialEnd,J=Me(i,h,P,u),W=J.start,_=J.end;if(KA(n,String(A.id),W,_))return!1;const k=m.current,j=xA(k,String(A.id));if(j){const $=k[j.rowIndex];if($&&KA($,String(j.action.id),W,_))return!1}return c($=>{let gA=j?MA($,String(A.id),W,_):te($,String(A.id),W,_);if(u==="left"&&uA.current.actionId===String(A.id)){const dA=W-uA.current.baseStart,ZA=uA.current.baseOffset+(Number.isFinite(dA)?dA:0),Qe=uA.current.partnerBaseOffset+(Number.isFinite(dA)?dA:0);gA=j?g(gA,String(A.id),ZA,Qe):e(gA,String(A.id),ZA)}return m.current=gA,gA}),!1}const C=Number(t),w=Number(r);if(!Number.isFinite(C)||!Number.isFinite(w)||w<=C)return!1;const I=Me(i,C,w,u),y=I.start,S=I.end;if(!Number.isFinite(y)||!Number.isFinite(S)||S<=y||KA(n,String(A.id),y,S))return!1;const K=m.current,x=xA(K,String(A.id));if(x){const l=K[x.rowIndex];if(l&&KA(l,String(x.action.id),y,S))return!1}if((x||I.snapped)&&c(l=>{const O=x?MA(l,String(A.id),y,S):te(l,String(A.id),y,S);return m.current=O,O}),I.snapped){const l=nA.current.lastPointerTime;return nA.current={...nA.current,actionId:i,mode:"resize",dir:u,basePointerTime:l,lastPointerTime:nA.current.lastPointerTime,initialStart:C,initialEnd:w,takeover:!0},Ee(),!1}},onChange:A=>{if(Oe.current){Oe.current=!1;return}const n=Z(A),t=Ae.current;let r=t?Re(n,t):n;if(t&&uA.current.actionId===t&&uA.current.dir==="left"){const u=IA(r,t);if(u){const w=Number(u.action?.start)-uA.current.baseStart,I=uA.current.baseOffset+(Number.isFinite(w)?w:0),y=uA.current.partnerBaseOffset+(Number.isFinite(w)?w:0);r=!!uA.current.partnerId?g(r,t,I,y):e(r,t,I)}}const o=xe(r,t);c(o);const i=wA.current,a=OA.current;i&&a&&(ue(o)!==a&&ee(i),wA.current=null,OA.current=null)},getActionRender:(A,n)=>{if(A.effectId==="effect0")return D.jsx(Et,{action:A,row:n});if(A.effectId==="effect2")return D.jsx(wt,{action:A,row:n});if(A.effectId==="effect1")return D.jsx(Qt,{action:A,row:n})}})]}),D.jsx(jA.DragOverlay,{children:cA?D.jsx("div",{className:"footage-overlay",style:TA?{width:TA.width,height:TA.height}:void 0,children:D.jsx(ct,{item:cA,hint:"Drop on timeline",isDragging:!0})}):null})]})})};exports.MeliesVideoEditor=Kt;
14
+ <%s key={someKey} {...props} />`,Fe,ee,Ze,ee),De[ee+Fe]=!0}}return i===d?me(at):pe(at),at}}function Ge(i,f,x){return _e(i,f,x,!0)}function Ve(i,f,x){return _e(i,f,x,!1)}var Xe=Ve,qe=Ge;Oe.Fragment=d,Oe.jsx=Xe,Oe.jsxs=qe})()),Oe}var di;function Pi(){return di||(di=1,process.env.NODE_ENV==="production"?Ke.exports=Ri():Ke.exports=Oi()),Ke.exports}var b=Pi();const Hi=({action:h,row:e})=>b.jsx("div",{className:"effect0","data-action-id":h.id,"data-row-id":e.id,children:b.jsx("div",{className:"effect0-text",children:`Audio: ${h.data.name}`})}),zi=({action:h,row:e})=>b.jsx("div",{className:"effect1","data-action-id":h.id,"data-row-id":e.id,children:b.jsx("div",{className:"effect1-text",children:`Video: ${h.data.name}`})}),Ni=({action:h,row:e})=>b.jsx("div",{className:"effect2","data-action-id":h.id,"data-row-id":e.id,children:b.jsx("div",{className:"effect2-text",children:`Video audio: ${h.data.name}`})}),Li=()=>typeof navigator<"u"&&typeof navigator.storage?.getDirectory=="function",ni=async()=>{if(!Li())throw new Error("OPFS not available in this browser (navigator.storage.getDirectory missing).");return await navigator.storage.getDirectory()},Mi=async(h,e)=>{const a=String(e).split("/").map(c=>c.trim()).filter(Boolean);let d=h;for(const c of a)d=await d.getDirectoryHandle(c,{create:!0});return d},Ti=async h=>{const a=await(await Mi(h.root,h.dirPath)).getFileHandle(h.fileName,{create:!0}),d=await a.createWritable();await d.write(h.file),await d.close();const c=h.dirPath.replace(/\/+$/g,"").replace(/^\//,""),u=c?`${c}/${h.fileName}`:h.fileName;return{fileHandle:a,path:"/"+u}},Gi=async h=>{try{const e=await ni(),a=h.split("/").filter(Boolean),d=a.pop();if(!d)return;let c=e;for(const B of a)c=await c.getDirectoryHandle(B);return await(await c.getFileHandle(d)).getFile()}catch(e){console.warn("Failed to read file from OPFS:",h,e);return}},Bi='var Ka=k=>{throw TypeError(k)};var Kn=(k,T,A)=>T.has(k)||Ka("Cannot "+A);var Qa=(k,T,A)=>(Kn(k,T,"read from private field"),A?A.call(k):T.get(k)),Qn=(k,T,A)=>T.has(k)?Ka("Cannot add the same private member more than once"):T instanceof WeakSet?T.add(k):T.set(k,A),Xa=(k,T,A,S)=>(Kn(k,T,"write to private field"),S?S.call(k,A):T.set(k,A),A),Xn=(k,T,A)=>(Kn(k,T,"access private method"),A);(function(){"use strict";var bn,Jn,y,vn,nt,at,ot,ht,ct,lt,dt,ft,ut,pt,_t,mt,gt,xt,yt,bt,vt,Ut,St,Bt,wt,zt,Et,kt,It,Tt,Ct,At,Pt,Ft,Dt,Lt,Ht,Ot,Rt,Mt,Nt,Gt,Vt,jt,$t,qt,Wt,Yt,Kt,Qt,Xt,Jt,Zt,te,ee,ie,W,se,re,ne,ae,oe,he,ce,le,de,fe,ue,pe,_e,me,ge,xe,ye,be,ve,Ue,Se,Be,we,ze,Ee,ke,Ie,Te,Ce,Ae,Pe,Fe,De,Le,He,Oe,Re,Me,Ne,Ge,Ve,je,$e,qe,We,Ye,Ke,Qe,Xe,Je,Ze,ti,ei,ii,si,ri,ni,ai,oi,hi,ci,li,di,fi,ui,pi,_i,mi,gi,xi,yi,bi,vi,Ui,Si,Bi,wi,zi,Ei,ki,Ii,Ti,Ci,Ai,Pi,Fi,Di,Li,Hi,Oi,Ri,Mi,Ni,Gi,Vi,ji,$i,qi,Wi,Yi,Ki,Qi,Xi,Ji,Zi,ts,es,is,ss,rs,ns,as,os,hs,cs,ls,ds,fs,us,ps,_s,ms,gs,xs,ys,bs,vs,Us,Ss,Bs,ws,zs,Es,ks,Is,Ts,Cs,As,Ps,Fs,Ds,Ls,Hs,Os,Rs,Ms,Ns,Gs,Vs,js,$s,qs,Ws,Ys,et,Ks,Qs,Xs,Js,Zs,tr,er,ir,sr,rr,nr,ar,or,hr,cr,lr,dr,fr,ur,pr,_r,mr,gr,xr,yr,br,vr,Ur,Sr,Br,wr,zr,Er,kr,Y,Ir,Tr,Cr,Ar,Pr,Fr,Dr,Lr,Hr,Or,Rr,Mr,Nr,Gr,Vr,jr,$r,qr,Wr,Yr,Kr,Qr,Xr,Jr,Zr,tn,en,sn,rn,nn,an,on,hn,cn,ln,dn,fn;var k=Object.defineProperty,T=(r,t)=>{for(var e in t)k(r,e,{get:t[e],enumerable:!0})},A=Math.pow(2,32),S=Math.pow(2,32)-1,to=1,eo=2,io=4,Un=1,Sn=2,Bn=8,wn=16,zn=32,Zn=131072,un=1,En=4,pn=256,_n=512,mn=1024,gn=2048,ta=-1,$=0,H=1,q=class Ja extends ArrayBuffer{constructor(t){super(t),this.fileStart=0,this.usedBytes=0}static fromArrayBuffer(t,e){const i=new Ja(t.byteLength);return new Uint8Array(i).set(new Uint8Array(t)),i.fileStart=e,i}},O=(y=class{constructor(t,e,i){Qn(this,bn);this._byteLength=0,this.failurePosition=0,this._dynamicSize=1,this._byteOffset=e||0,t instanceof ArrayBuffer?this.buffer=q.fromArrayBuffer(t,0):t instanceof DataView?(this.dataView=t,e&&(this._byteOffset+=e)):this.buffer=new q(t||0),this.position=0,this.endianness=i||1}getPosition(){return this.position}_realloc(t){if(!this._dynamicSize)return;const e=this._byteOffset+this.position+t;let i=this._buffer.byteLength;if(e<=i){e>this._byteLength&&(this._byteLength=e);return}for(i<1&&(i=1);e>i;)i*=2;const s=new q(i),n=new Uint8Array(this._buffer);new Uint8Array(s,0,n.length).set(n),this.buffer=s,this._byteLength=e}_trimAlloc(){if(this._byteLength===this._buffer.byteLength)return;const t=new q(this._byteLength),e=new Uint8Array(t),i=new Uint8Array(this._buffer,0,e.length);e.set(i),this.buffer=t}get byteLength(){return this._byteLength-this._byteOffset}get buffer(){return this._trimAlloc(),this._buffer}set buffer(t){this._buffer=t,this._dataView=new DataView(t,this._byteOffset),this._byteLength=t.byteLength}get byteOffset(){return this._byteOffset}set byteOffset(t){this._byteOffset=t,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}get dataView(){return this._dataView}set dataView(t){this._byteOffset=t.byteOffset,this._buffer=q.fromArrayBuffer(t.buffer,0),this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+t.byteLength}seek(t){const e=Math.max(0,Math.min(this.byteLength,t));this.position=isNaN(e)||!isFinite(e)?0:e}isEof(){return this.position>=this._byteLength}mapUint8Array(t){this._realloc(t*1);const e=new Uint8Array(this._buffer,this.byteOffset+this.position,t);return this.position+=t*1,e}readInt32Array(t,e){t=t===void 0?this.byteLength-this.position/4:t;const i=new Int32Array(t);return y.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,t*i.BYTES_PER_ELEMENT),y.arrayToNative(i,e??this.endianness),this.position+=i.byteLength,i}readInt16Array(t,e){t=t===void 0?this.byteLength-this.position/2:t;const i=new Int16Array(t);return y.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,t*i.BYTES_PER_ELEMENT),y.arrayToNative(i,e??this.endianness),this.position+=i.byteLength,i}readInt8Array(t){t=t===void 0?this.byteLength-this.position:t;const e=new Int8Array(t);return y.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,t*e.BYTES_PER_ELEMENT),this.position+=e.byteLength,e}readUint32Array(t,e){t=t===void 0?this.byteLength-this.position/4:t;const i=new Uint32Array(t);return y.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,t*i.BYTES_PER_ELEMENT),y.arrayToNative(i,e??this.endianness),this.position+=i.byteLength,i}readUint16Array(t,e){t=t===void 0?this.byteLength-this.position/2:t;const i=new Uint16Array(t);return y.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,t*i.BYTES_PER_ELEMENT),y.arrayToNative(i,e??this.endianness),this.position+=i.byteLength,i}readUint8Array(t){t=t===void 0?this.byteLength-this.position:t;const e=new Uint8Array(t);return y.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,t*e.BYTES_PER_ELEMENT),this.position+=e.byteLength,e}readFloat64Array(t,e){t=t===void 0?this.byteLength-this.position/8:t;const i=new Float64Array(t);return y.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,t*i.BYTES_PER_ELEMENT),y.arrayToNative(i,e??this.endianness),this.position+=i.byteLength,i}readFloat32Array(t,e){t=t===void 0?this.byteLength-this.position/4:t;const i=new Float32Array(t);return y.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,t*i.BYTES_PER_ELEMENT),y.arrayToNative(i,e??this.endianness),this.position+=i.byteLength,i}readInt32(t){const e=this._dataView.getInt32(this.position,(t??this.endianness)===2);return this.position+=4,e}readInt16(t){const e=this._dataView.getInt16(this.position,(t??this.endianness)===2);return this.position+=2,e}readInt8(){const t=this._dataView.getInt8(this.position);return this.position+=1,t}readUint32(t){const e=this._dataView.getUint32(this.position,(t??this.endianness)===2);return this.position+=4,e}readUint16(t){const e=this._dataView.getUint16(this.position,(t??this.endianness)===2);return this.position+=2,e}readUint8(){const t=this._dataView.getUint8(this.position);return this.position+=1,t}readFloat32(t){const e=this._dataView.getFloat32(this.position,(t??this.endianness)===2);return this.position+=4,e}readFloat64(t){const e=this._dataView.getFloat64(this.position,(t??this.endianness)===2);return this.position+=8,e}static memcpy(t,e,i,s,n){const a=new Uint8Array(t,e,n),o=new Uint8Array(i,s,n);a.set(o)}static arrayToNative(t,e){return e===y.ENDIANNESS?t:this.flipArrayEndianness(t)}static nativeToEndian(t,e){return e&&y.ENDIANNESS===2?t:this.flipArrayEndianness(t)}static flipArrayEndianness(t){const e=new Uint8Array(t.buffer,t.byteOffset,t.byteLength);for(let i=0;i<t.byteLength;i+=t.BYTES_PER_ELEMENT)for(let s=i+t.BYTES_PER_ELEMENT-1,n=i;s>n;s--,n++){const a=e[n];e[n]=e[s],e[s]=a}return t}readString(t,e){return e===void 0||e==="ASCII"?ea(this.mapUint8Array(t===void 0?this.byteLength-this.position:t)):new TextDecoder(e).decode(this.mapUint8Array(t))}readCString(t){let e=0;const i=this.byteLength-this.position,s=new Uint8Array(this._buffer,this._byteOffset+this.position),n=t!==void 0?Math.min(t,i):i;for(;e<n&&s[e]!==0;e++);const a=ea(this.mapUint8Array(e));return t!==void 0?this.position+=n-e:e!==i&&(this.position+=1),a}readInt64(){return this.readInt32()*A+this.readUint32()}readUint64(){return this.readUint32()*A+this.readUint32()}readUint24(){return(this.readUint8()<<16)+(this.readUint8()<<8)+this.readUint8()}save(t){const e=new Blob([this.buffer]);if(typeof window<"u"&&typeof document<"u")if(window.URL&&URL.createObjectURL){const i=window.URL.createObjectURL(e),s=document.createElement("a");document.body.appendChild(s),s.setAttribute("href",i),s.setAttribute("download",t),s.setAttribute("target","_self"),s.click(),window.URL.revokeObjectURL(i),document.body.removeChild(s)}else throw new Error("DataStream.save: Can\'t create object URL.");return e}get dynamicSize(){return this._dynamicSize}set dynamicSize(t){t||this._trimAlloc(),this._dynamicSize=t}shift(t){const e=new q(this._byteLength-t),i=new Uint8Array(e),s=new Uint8Array(this._buffer,t,i.length);i.set(s),this.buffer=e,this.position-=t}writeInt32Array(t,e){if(this._realloc(t.length*4),t instanceof Int32Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)y.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapInt32Array(t.length,e);else for(let i=0;i<t.length;i++)this.writeInt32(t[i],e)}writeInt16Array(t,e){if(this._realloc(t.length*2),t instanceof Int16Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)y.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapInt16Array(t.length,e);else for(let i=0;i<t.length;i++)this.writeInt16(t[i],e)}writeInt8Array(t){if(this._realloc(t.length*1),t instanceof Int8Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)y.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapInt8Array(t.length);else for(let e=0;e<t.length;e++)this.writeInt8(t[e])}writeUint32Array(t,e){if(this._realloc(t.length*4),t instanceof Uint32Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)y.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapUint32Array(t.length,e);else for(let i=0;i<t.length;i++)this.writeUint32(t[i],e)}writeUint16Array(t,e){if(this._realloc(t.length*2),t instanceof Uint16Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)y.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapUint16Array(t.length,e);else for(let i=0;i<t.length;i++)this.writeUint16(t[i],e)}writeUint8Array(t){if(this._realloc(t.length*1),t instanceof Uint8Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)y.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapUint8Array(t.length);else for(let e=0;e<t.length;e++)this.writeUint8(t[e])}writeFloat64Array(t,e){if(this._realloc(t.length*8),t instanceof Float64Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)y.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapFloat64Array(t.length,e);else for(let i=0;i<t.length;i++)this.writeFloat64(t[i],e)}writeFloat32Array(t,e){if(this._realloc(t.length*4),t instanceof Float32Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)y.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapFloat32Array(t.length,e);else for(let i=0;i<t.length;i++)this.writeFloat32(t[i],e)}writeInt64(t,e){this._realloc(8),this._dataView.setBigInt64(this.position,BigInt(t),(e??this.endianness)===2),this.position+=8}writeInt32(t,e){this._realloc(4),this._dataView.setInt32(this.position,t,(e??this.endianness)===2),this.position+=4}writeInt16(t,e){this._realloc(2),this._dataView.setInt16(this.position,t,(e??this.endianness)===2),this.position+=2}writeInt8(t){this._realloc(1),this._dataView.setInt8(this.position,t),this.position+=1}writeUint32(t,e){this._realloc(4),this._dataView.setUint32(this.position,t,(e??this.endianness)===2),this.position+=4}writeUint16(t,e){this._realloc(2),this._dataView.setUint16(this.position,t,(e??this.endianness)===2),this.position+=2}writeUint8(t){this._realloc(1),this._dataView.setUint8(this.position,t),this.position+=1}writeFloat32(t,e){this._realloc(4),this._dataView.setFloat32(this.position,t,(e??this.endianness)===2),this.position+=4}writeFloat64(t,e){this._realloc(8),this._dataView.setFloat64(this.position,t,(e??this.endianness)===2),this.position+=8}writeUCS2String(t,e,i){i===void 0&&(i=t.length);let s;for(s=0;s<t.length&&s<i;s++)this.writeUint16(t.charCodeAt(s),e);for(;s<i;s++)this.writeUint16(0)}writeString(t,e,i){let s=0;if(e===void 0||e==="ASCII")if(i!==void 0){const n=Math.min(t.length,i);for(s=0;s<n;s++)this.writeUint8(t.charCodeAt(s));for(;s<i;s++)this.writeUint8(0)}else for(s=0;s<t.length;s++)this.writeUint8(t.charCodeAt(s));else this.writeUint8Array(new TextEncoder(e).encode(t.substring(0,i)))}writeCString(t,e){let i=0;if(e!==void 0){const s=Math.min(t.length,e);for(i=0;i<s;i++)this.writeUint8(t.charCodeAt(i));for(;i<e;i++)this.writeUint8(0)}else{for(i=0;i<t.length;i++)this.writeUint8(t.charCodeAt(i));this.writeUint8(0)}}writeStruct(t,e){for(let i=0;i<t.length;i++){const[s,n]=t[i],a=e[s];this.writeType(n,a,e)}}writeType(t,e,i){if(typeof t=="function")return t(this,e);if(typeof t=="object"&&!(t instanceof Array))return t.set(this,e,i);let s,n="ASCII";const a=this.position;let o=t;if(typeof t=="string"&&/:/.test(t)){const h=t.split(":");o=h[0],s=parseInt(h[1])}if(typeof o=="string"&&/,/.test(o)){const h=o.split(",");o=h[0],n=h[1]}switch(o){case"uint8":this.writeUint8(e);break;case"int8":this.writeInt8(e);break;case"uint16":this.writeUint16(e,this.endianness);break;case"int16":this.writeInt16(e,this.endianness);break;case"uint32":this.writeUint32(e,this.endianness);break;case"int32":this.writeInt32(e,this.endianness);break;case"float32":this.writeFloat32(e,this.endianness);break;case"float64":this.writeFloat64(e,this.endianness);break;case"uint16be":this.writeUint16(e,1);break;case"int16be":this.writeInt16(e,1);break;case"uint32be":this.writeUint32(e,1);break;case"int32be":this.writeInt32(e,1);break;case"float32be":this.writeFloat32(e,1);break;case"float64be":this.writeFloat64(e,1);break;case"uint16le":this.writeUint16(e,2);break;case"int16le":this.writeInt16(e,2);break;case"uint32le":this.writeUint32(e,2);break;case"int32le":this.writeInt32(e,2);break;case"float32le":this.writeFloat32(e,2);break;case"float64le":this.writeFloat64(e,2);break;case"cstring":this.writeCString(e,s);break;case"string":this.writeString(e,n,s);break;case"u16string":this.writeUCS2String(e,this.endianness,s);break;case"u16stringle":this.writeUCS2String(e,2,s);break;case"u16stringbe":this.writeUCS2String(e,1,s);break;default:if(Xn(this,bn,Jn).call(this,o)){const[,h]=o;for(let c=0;c<e.length;c++)this.writeType(h,e[c]);break}else{this.writeStruct(o,e);break}}s&&(this.position=a,this._realloc(s),this.position=a+s)}writeUint64(t){const e=Math.floor(t/A);this.writeUint32(e),this.writeUint32(t&4294967295)}writeUint24(t){this.writeUint8((t&16711680)>>16),this.writeUint8((t&65280)>>8),this.writeUint8(t&255)}adjustUint32(t,e){const i=this.position;this.seek(t),this.writeUint32(e),this.seek(i)}readStruct(t){const e={},i=this.position;for(let s=0;s<t.length;s+=1){const n=t[s][1],a=this.readType(n,e);if(!a){this.failurePosition===0&&(this.failurePosition=this.position),this.position=i;return}e[t[s][0]]=a}return e}readUCS2String(t,e){return String.fromCharCode.apply(void 0,this.readUint16Array(t,e))}readType(t,e){if(typeof t=="function")return t(this,e);if(typeof t=="object"&&!(t instanceof Array))return t.get(this,e);if(t instanceof Array&&t.length!==3)return this.readStruct(t);let i,s,n="ASCII";const a=this.position;let o=t;if(typeof o=="string"&&/:/.test(o)){const h=o.split(":");o=h[0],s=parseInt(h[1])}if(typeof o=="string"&&/,/.test(o)){const h=o.split(",");o=h[0],n=h[1]}switch(o){case"uint8":i=this.readUint8();break;case"int8":i=this.readInt8();break;case"uint16":i=this.readUint16(this.endianness);break;case"int16":i=this.readInt16(this.endianness);break;case"uint32":i=this.readUint32(this.endianness);break;case"int32":i=this.readInt32(this.endianness);break;case"float32":i=this.readFloat32(this.endianness);break;case"float64":i=this.readFloat64(this.endianness);break;case"uint16be":i=this.readUint16(1);break;case"int16be":i=this.readInt16(1);break;case"uint32be":i=this.readUint32(1);break;case"int32be":i=this.readInt32(1);break;case"float32be":i=this.readFloat32(1);break;case"float64be":i=this.readFloat64(1);break;case"uint16le":i=this.readUint16(2);break;case"int16le":i=this.readInt16(2);break;case"uint32le":i=this.readUint32(2);break;case"int32le":i=this.readInt32(2);break;case"float32le":i=this.readFloat32(2);break;case"float64le":i=this.readFloat64(2);break;case"cstring":i=this.readCString(s);break;case"string":i=this.readString(s,n);break;case"u16string":i=this.readUCS2String(s,this.endianness);break;case"u16stringle":i=this.readUCS2String(s,2);break;case"u16stringbe":i=this.readUCS2String(s,1);break;default:if(Xn(this,bn,Jn).call(this,o)){const[,h,c]=o,f=typeof c=="function"?c(e,this,o):typeof c=="string"&&e[c]!==void 0?parseInt(e[c]):typeof c=="number"?c:c==="*"?void 0:parseInt(c);if(typeof h=="string"){const u=h.replace(/(le|be)$/,"");let m;switch(/le$/.test(h)?m=2:/be$/.test(h)&&(m=1),u){case"uint8":i=this.readUint8Array(f);break;case"uint16":i=this.readUint16Array(f,m);break;case"uint32":i=this.readUint32Array(f,m);break;case"int8":i=this.readInt8Array(f);break;case"int16":i=this.readInt16Array(f,m);break;case"int32":i=this.readInt32Array(f,m);break;case"float32":i=this.readFloat32Array(f,m);break;case"float64":i=this.readFloat64Array(f,m);break;case"cstring":case"utf16string":case"string":if(f){i=new Array(f);for(let _=0;_<f;_++)i[_]=this.readType(h,e)}else for(i=[];!this.isEof();){const _=this.readType(h,e);if(!_)break;i.push(_)}break}}else if(f){i=new Array(f);for(let u=0;u<f;u++){const m=this.readType(h,e);if(!m)return;i[u]=m}}else for(i=[];;){const u=this.position;try{const m=this.readType(h,e);if(!m){this.position=u;break}i.push(m)}catch{this.position=u;break}}break}}return s&&(this.position=a+s),i}mapInt32Array(t,e){this._realloc(t*4);const i=new Int32Array(this._buffer,this.byteOffset+this.position,t);return y.arrayToNative(i,e??this.endianness),this.position+=t*4,i}mapInt16Array(t,e){this._realloc(t*2);const i=new Int16Array(this._buffer,this.byteOffset+this.position,t);return y.arrayToNative(i,e??this.endianness),this.position+=t*2,i}mapInt8Array(t,e){this._realloc(t*1);const i=new Int8Array(this._buffer,this.byteOffset+this.position,t);return this.position+=t*1,i}mapUint32Array(t,e){this._realloc(t*4);const i=new Uint32Array(this._buffer,this.byteOffset+this.position,t);return y.arrayToNative(i,e??this.endianness),this.position+=t*4,i}mapUint16Array(t,e){this._realloc(t*2);const i=new Uint16Array(this._buffer,this.byteOffset+this.position,t);return y.arrayToNative(i,e??this.endianness),this.position+=t*2,i}mapFloat64Array(t,e){this._realloc(t*8);const i=new Float64Array(this._buffer,this.byteOffset+this.position,t);return y.arrayToNative(i,e??this.endianness),this.position+=t*8,i}mapFloat32Array(t,e){this._realloc(t*4);const i=new Float32Array(this._buffer,this.byteOffset+this.position,t);return y.arrayToNative(i,e??this.endianness),this.position+=t*4,i}},bn=new WeakSet,Jn=function(t){return Array.isArray(t)&&t.length===3&&t[0]==="[]"},y.ENDIANNESS=new Int8Array(new Int16Array([1]).buffer)[0]>0?2:1,y);function ea(r){const t=[];for(let e=0;e<r.length;e++)t[e]=r[e];return String.fromCharCode.apply(void 0,t)}var kn=new Date,In=4,ia=3,sa=2,ra=1,G=In,l={setLogLevel(r){r===this.debug?G=ra:r===this.info?G=sa:r===this.warn?G=ia:(this.error,G=In)},debug(r,t){console.debug===void 0&&(console.debug=console.log),ra>=G&&console.debug("["+l.getDurationString(new Date().getTime()-kn.getTime(),1e3)+"]","["+r+"]",t)},log(r,t){this.debug(r.msg)},info(r,t){sa>=G&&console.info("["+l.getDurationString(new Date().getTime()-kn.getTime(),1e3)+"]","["+r+"]",t)},warn(r,t){ia>=G&&console.warn("["+l.getDurationString(new Date().getTime()-kn.getTime(),1e3)+"]","["+r+"]",t)},error(r,t,e){e?.onError?e.onError(r,t):In>=G&&console.error("["+l.getDurationString(new Date().getTime()-kn.getTime(),1e3)+"]","["+r+"]",t)},getDurationString(r,t){let e;function i(c,f){const m=(""+c).split(".");for(;m[0].length<f;)m[0]="0"+m[0];return m.join(".")}r<0?(e=!0,r=-r):e=!1;let n=r/(t||1);const a=Math.floor(n/3600);n-=a*3600;const o=Math.floor(n/60);n-=o*60;let h=n*1e3;return n=Math.floor(n),h-=n*1e3,h=Math.floor(h),(e?"-":"")+a+":"+i(o,2)+":"+i(n,2)+"."+i(h,3)},printRanges(r){const t=r.length;if(t>0){let e="";for(let i=0;i<t;i++)i>0&&(e+=","),e+="["+l.getDurationString(r.start(i))+","+l.getDurationString(r.end(i))+"]";return e}else return"(empty)"}};function so(r,t){l.debug("ArrayBuffer","Trying to create a new buffer of size: "+(r.byteLength+t.byteLength));const e=new Uint8Array(r.byteLength+t.byteLength);return e.set(new Uint8Array(r),0),e.set(new Uint8Array(t),r.byteLength),e.buffer}var Tn=class extends O{constructor(r){super(new ArrayBuffer,0),this.buffers=[],this.bufferIndex=-1,r&&(this.insertBuffer(r),this.bufferIndex=0)}initialized(){if(this.bufferIndex>-1)return!0;if(this.buffers.length>0){const r=this.buffers[0];return r.fileStart===0?(this.buffer=r,this.bufferIndex=0,l.debug("MultiBufferStream","Stream ready for parsing"),!0):(l.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1)}else return l.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1}reduceBuffer(r,t,e){const i=new Uint8Array(e);return i.set(new Uint8Array(r,t,e)),i.buffer.fileStart=r.fileStart+t,i.buffer.usedBytes=0,i.buffer}insertBuffer(r){let t=!0,e=0;for(;e<this.buffers.length;e++){const i=this.buffers[e];if(r.fileStart<=i.fileStart){if(r.fileStart===i.fileStart)if(r.byteLength>i.byteLength){this.buffers.splice(e,1),e--;continue}else l.warn("MultiBufferStream","Buffer (fileStart: "+r.fileStart+" - Length: "+r.byteLength+") already appended, ignoring");else r.fileStart+r.byteLength<=i.fileStart||(r=this.reduceBuffer(r,0,i.fileStart-r.fileStart)),l.debug("MultiBufferStream","Appending new buffer (fileStart: "+r.fileStart+" - Length: "+r.byteLength+")"),this.buffers.splice(e,0,r),e===0&&(this.buffer=r);t=!1;break}else if(r.fileStart<i.fileStart+i.byteLength){const s=i.fileStart+i.byteLength-r.fileStart,n=r.byteLength-s;if(n>0)r=this.reduceBuffer(r,s,n);else{t=!1;break}}}t&&(l.debug("MultiBufferStream","Appending new buffer (fileStart: "+r.fileStart+" - Length: "+r.byteLength+")"),this.buffers.push(r),e===0&&(this.buffer=r))}logBufferLevel(r){const t=[];let e="",i,s=0,n=0;for(let o=0;o<this.buffers.length;o++){const h=this.buffers[o];o===0?(i={start:h.fileStart,end:h.fileStart+h.byteLength},t.push(i),e+="["+i.start+"-"):i.end===h.fileStart?i.end=h.fileStart+h.byteLength:(i={start:h.fileStart,end:h.fileStart+h.byteLength},e+=t[t.length-1].end-1+"], ["+i.start+"-",t.push(i)),s+=h.usedBytes,n+=h.byteLength}t.length>0&&(e+=i.end-1+"]");const a=r?l.info:l.debug;this.buffers.length===0?a("MultiBufferStream","No more buffer in memory"):a("MultiBufferStream",""+this.buffers.length+" stored buffer(s) ("+s+"/"+n+" bytes), continuous ranges: "+e)}cleanBuffers(){for(let r=0;r<this.buffers.length;r++){const t=this.buffers[r];t.usedBytes===t.byteLength&&(l.debug("MultiBufferStream","Removing buffer #"+r),this.buffers.splice(r,1),r--)}}mergeNextBuffer(){if(this.bufferIndex+1<this.buffers.length){const r=this.buffers[this.bufferIndex+1];if(r.fileStart===this.buffer.fileStart+this.buffer.byteLength){const t=this.buffer.byteLength,e=this.buffer.usedBytes,i=this.buffer.fileStart;return this.buffers[this.bufferIndex]=so(this.buffer,r),this.buffer=this.buffers[this.bufferIndex],this.buffers.splice(this.bufferIndex+1,1),this.buffer.usedBytes=e,this.buffer.fileStart=i,l.debug("ISOFile","Concatenating buffer for box parsing (length: "+t+"->"+this.buffer.byteLength+")"),!0}else return!1}else return!1}findPosition(r,t,e){let i=-1,s=r===!0?0:this.bufferIndex;for(;s<this.buffers.length;){const a=this.buffers[s];if(a&&a.fileStart<=t)i=s,e&&(a.fileStart+a.byteLength<=t?a.usedBytes=a.byteLength:a.usedBytes=t-a.fileStart,this.logBufferLevel());else break;s++}if(i===-1)return-1;const n=this.buffers[i];return n.fileStart+n.byteLength>=t?(l.debug("MultiBufferStream","Found position in existing buffer #"+i),i):-1}findEndContiguousBuf(r){const t=r!==void 0?r:this.bufferIndex;let e=this.buffers[t];if(this.buffers.length>t+1)for(let i=t+1;i<this.buffers.length;i++){const s=this.buffers[i];if(s.fileStart===e.fileStart+e.byteLength)e=s;else break}return e.fileStart+e.byteLength}getEndFilePositionAfter(r){const t=this.findPosition(!0,r,!1);return t!==-1?this.findEndContiguousBuf(t):r}addUsedBytes(r){this.buffer.usedBytes+=r,this.logBufferLevel()}setAllUsedBytes(){this.buffer.usedBytes=this.buffer.byteLength,this.logBufferLevel()}seek(r,t,e){const i=this.findPosition(t,r,e);return i!==-1?(this.buffer=this.buffers[i],this.bufferIndex=i,this.position=r-this.buffer.fileStart,l.debug("MultiBufferStream","Repositioning parser at buffer position: "+this.position),!0):(l.debug("MultiBufferStream","Position "+r+" not found in buffered data"),!1)}getPosition(){return this.bufferIndex===-1||this.buffers[this.bufferIndex]===void 0?0:this.buffers[this.bufferIndex].fileStart+this.position}getLength(){return this.byteLength}getEndPosition(){return this.bufferIndex===-1||this.buffers[this.bufferIndex]===void 0?0:this.buffers[this.bufferIndex].fileStart+this.byteLength}getAbsoluteEndPosition(){if(this.buffers.length===0)return 0;const r=this.buffers[this.buffers.length-1];return r.fileStart+r.byteLength}},p=(nt=class{constructor(t=0){Qn(this,vn);this.size=t}get type(){return this.constructor.fourcc??Qa(this,vn)}set type(t){Xa(this,vn,t)}addBox(t){return this.boxes||(this.boxes=[]),this.boxes.push(t),this[t.type+"s"]?this[t.type+"s"].push(t):this[t.type]=t,t}set(t,e){return this[t]=e,this}addEntry(t,e){const i=e||"entries";return this[i]||(this[i]=[]),this[i].push(t),this}writeHeader(t,e){if(this.size+=8,(this.size>S||this.original_size===1)&&(this.size+=8),this.type==="uuid"&&(this.size+=16),l.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+t.getPosition()+(e||"")),this.original_size===0?t.writeUint32(0):this.size>S||this.original_size===1?t.writeUint32(1):(this.sizePosition=t.getPosition(),t.writeUint32(this.size)),t.writeString(this.type,void 0,4),this.type==="uuid"){const i=new Uint8Array(16);for(let s=0;s<16;s++)i[s]=parseInt(this.uuid.substring(s*2,s*2+2),16);t.writeUint8Array(i)}(this.size>S||this.original_size===1)&&(this.sizePosition=t.getPosition(),t.writeUint64(this.size))}write(t){if(this.type==="mdat"){const e=this;if(e.stream){this.size=e.stream.getAbsoluteEndPosition(),this.writeHeader(t);for(const i of e.stream.buffers){const s=new Uint8Array(i);t.writeUint8Array(s)}}else e.data&&(this.size=e.data.length,this.writeHeader(t),t.writeUint8Array(e.data))}else this.size=this.data?this.data.length:0,this.writeHeader(t),this.data&&t.writeUint8Array(this.data)}printHeader(t){this.size+=8,this.size>S&&(this.size+=8),this.type==="uuid"&&(this.size+=16),t.log(t.indent+"size:"+this.size),t.log(t.indent+"type:"+this.type)}print(t){this.printHeader(t)}parse(t){this.type!=="mdat"?this.data=t.readUint8Array(this.size-this.hdr_size):this.size===0?t.seek(t.getEndPosition()):t.seek(this.start+this.size)}parseDataAndRewind(t){this.data=t.readUint8Array(this.size-this.hdr_size),t.seek(this.start+this.hdr_size)}parseLanguage(t){this.language=t.readUint16();const e=[];e[0]=this.language>>10&31,e[1]=this.language>>5&31,e[2]=this.language&31,this.languageString=String.fromCharCode(e[0]+96,e[1]+96,e[2]+96)}computeSize(t){const e=t||new Tn;this.write(e)}isEndOfBox(t){const e=t.getPosition(),i=this.start+this.size;return e===i}},vn=new WeakMap,nt.registryId=Symbol.for("BoxIdentifier"),nt),d=class extends p{constructor(){super(...arguments),this.flags=0,this.version=0}writeHeader(r){this.size+=4,super.writeHeader(r," v="+this.version+" f="+this.flags),r.writeUint8(this.version),r.writeUint24(this.flags)}printHeader(r){this.size+=4,super.printHeader(r),r.log(r.indent+"version:"+this.version),r.log(r.indent+"flags:"+this.flags)}parseDataAndRewind(r){this.parseFullHeader(r),this.data=r.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,r.seek(this.start+this.hdr_size)}parseFullHeader(r){this.version=r.readUint8(),this.flags=r.readUint24(),this.hdr_size+=4}parse(r){this.parseFullHeader(r),this.data=r.readUint8Array(this.size-this.hdr_size)}},E=(at=class{constructor(t){this.grouping_type=t}write(t){t.writeUint8Array(this.data)}parse(t){l.warn("BoxParser",`Unknown sample group type: \'${this.grouping_type}\'`),this.data=t.readUint8Array(this.description_length)}},at.registryId=Symbol.for("SampleGroupEntryIdentifier"),at),ro=class extends d{parse(r){this.parseFullHeader(r),this.track_group_id=r.readUint32()}},no=class extends p{constructor(r,t,e,i,s){super(t),this.box_name=e,this.hdr_size=i,this.start=s,this.type=r}parse(r){this.from_item_ID=r.readUint16();const t=r.readUint16();this.references=[];for(let e=0;e<t;e++)this.references[e]={to_item_ID:r.readUint16()}}},ao=class extends p{constructor(r,t,e,i,s){super(t),this.box_name=e,this.hdr_size=i,this.start=s,this.type=r}parse(r){this.from_item_ID=r.readUint32();const t=r.readUint16();this.references=[];for(let e=0;e<t;e++)this.references[e]={to_item_ID:r.readUint32()}}},oo=class extends p{constructor(r,t,e,i){super(t),this.hdr_size=e,this.start=i,this.type=r}parse(r){this.track_ids=r.readUint32Array((this.size-this.hdr_size)/4)}write(r){this.size=this.track_ids.length*4,this.writeHeader(r),r.writeUint32Array(this.track_ids)}},Rn=["boxes","entries","references","subsamples","items","item_infos","extents","associations","subsegments","ranges","seekLists","seekPoints","esd","levels"],ho=["compatible_brands","matrix","opcolor","sample_counts","sample_deltas","first_chunk","samples_per_chunk","sample_sizes","chunk_offsets","sample_offsets","sample_description_index","sample_duration"];function co(r,t){if(r&&!t)return!1;let e;for(e in r)if(!Rn.find(i=>i===e)){if(r[e]instanceof p||t[e]instanceof p)continue;if(typeof r[e]>"u"||typeof t[e]>"u")continue;if(typeof r[e]=="function"||typeof t[e]=="function")continue;if("subBoxNames"in r&&r.subBoxNames.indexOf(e.slice(0,4))>-1||"subBoxNames"in t&&t.subBoxNames.indexOf(e.slice(0,4))>-1)continue;if(e==="data"||e==="start"||e==="size"||e==="creation_time"||e==="modification_time")continue;if(ho.find(i=>i===e))continue;if(r[e]!==t[e])return!1}return!0}function na(r,t){if(!co(r,t))return!1;for(let e=0;e<Rn.length;e++){const i=Rn[e];if(r[i]&&t[i]&&!na(r[i],t[i]))return!1}return!0}function Mn(r){let t=r;for(;t;){if("registryId"in t)return t.registryId;t=Object.getPrototypeOf(t)}}var lo=r=>{const t=Symbol.for("SampleGroupEntryIdentifier");return Mn(r)===t},fo=r=>{const t=Symbol.for("SampleEntryIdentifier");return Mn(r)===t},uo=r=>{const t=Symbol.for("BoxIdentifier");return Mn(r)===t},D={uuid:{},sampleEntry:{},sampleGroupEntry:{},box:{}};function po(r){const t={uuid:{},sampleEntry:{},sampleGroupEntry:{},box:{}};for(const[e,i]of Object.entries(r)){if(lo(i)){const s="grouping_type"in i?i.grouping_type:void 0;if(!s)throw new Error(`SampleGroupEntry class ${e} does not have a valid static grouping_type. Please ensure it is defined correctly.`);if(s in t.sampleGroupEntry)throw new Error(`SampleGroupEntry class ${e} has a grouping_type that is already registered. Please ensure it is unique.`);t.sampleGroupEntry[s]=i;continue}if(fo(i)){const s="fourcc"in i?i.fourcc:void 0;if(!s)throw new Error(`SampleEntry class ${e} does not have a valid static fourcc. Please ensure it is defined correctly.`);if(s in t.sampleEntry)throw new Error(`SampleEntry class ${e} has a fourcc that is already registered. Please ensure it is unique.`);t.sampleEntry[s]=i;continue}if(uo(i)){const s="fourcc"in i?i.fourcc:void 0,n="uuid"in i?i.uuid:void 0;if(s==="uuid"){if(!n)throw new Error(`Box class ${e} has a fourcc of \'uuid\' but does not have a valid uuid. Please ensure it is defined correctly.`);if(n in t.uuid)throw new Error(`Box class ${e} has a uuid that is already registered. Please ensure it is unique.`);t.uuid[n]=i;continue}t.box[s]=i;continue}throw new Error(`Box class ${e} does not have a valid static fourcc, uuid, or grouping_type. Please ensure it is defined correctly.`)}return D.uuid={...t.uuid},D.sampleEntry={...t.sampleEntry},D.sampleGroupEntry={...t.sampleGroupEntry},D.box={...t.box},D}var Cn={};function _o(r){return Object.entries(r).forEach(([t,e])=>Cn[t]=e),Cn}function mo(r){return X(r)}function X(r){let t="";for(let e=0;e<16;e++){const i=r.readUint8().toString(16);t+=i.length===1?"0"+i:i}return t}function M(r,t,e){let i,s;const n=r.getPosition();let a=0,o;if(r.getEndPosition()-n<8)return l.debug("BoxParser","Not enough data in stream to parse the type and size of the box"),{code:$};if(e&&e<8)return l.debug("BoxParser","Not enough bytes left in the parent box to parse a new box"),{code:$};let h=r.readUint32();const c=r.readString(4);if(c.length!==4||!/^[\\x20-\\x7E]{4}$/.test(c))return l.error("BoxParser",`Invalid box type: \'${c}\'`),{code:ta,start:n,type:c};let f=c;if(l.debug("BoxParser","Found box of type \'"+c+"\' and size "+h+" at position "+n),a=8,c==="uuid"){if(r.getEndPosition()-r.getPosition()<16||e-a<16)return r.seek(n),l.debug("BoxParser","Not enough bytes left in the parent box to parse a UUID box"),{code:$};o=mo(r),a+=16,f=o}if(h===1){if(r.getEndPosition()-r.getPosition()<8||e&&e-a<8)return r.seek(n),l.warn("BoxParser",\'Not enough data in stream to parse the extended size of the "\'+c+\'" box\'),{code:$};s=h,h=r.readUint64(),a+=8}else if(h===0){if(e)h=e;else if(c!=="mdat")return l.error("BoxParser","Unlimited box size not supported for type: \'"+c+"\'"),i=new p(h),i.type=c,{code:H,box:i,size:i.size}}if(h!==0&&h<a)return l.error("BoxParser","Box of type "+c+" has an invalid size "+h+" (too small to be a box)"),{code:$,type:c,size:h,hdr_size:a,start:n};if(h!==0&&e&&h>e)return l.error("BoxParser","Box of type \'"+c+"\' has a size "+h+" greater than its container size "+e),{code:$,type:c,size:h,hdr_size:a,start:n};if(h!==0&&n+h>r.getEndPosition())return r.seek(n),l.info("BoxParser","Not enough data in stream to parse the entire \'"+c+"\' box"),{code:$,type:c,size:h,hdr_size:a,start:n,original_size:s};if(t)return{code:H,type:c,size:h,hdr_size:a,start:n};c in D.box?i=new D.box[c](h):c!=="uuid"?(l.warn("BoxParser",`Unknown box type: \'${c}\'`),i=new p(h),i.type=c,i.has_unparsed_data=!0):o in D.uuid?i=new D.uuid[o](h):(l.warn("BoxParser",`Unknown UUID box type: \'${o}\'`),i=new p(h),i.type=c,i.uuid=o,i.has_unparsed_data=!0),i.original_size=s,i.hdr_size=a,i.start=n,i.write===p.prototype.write&&i.type!=="mdat"&&(l.info("BoxParser","\'"+f+"\' box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(r)),i.parse(r);const u=r.getPosition()-(i.start+i.size);return u<0?(l.warn("BoxParser","Parsing of box \'"+f+"\' did not read the entire indicated box data size (missing "+-u+" bytes), seeking forward"),r.seek(i.start+i.size)):u>0&&i.size!==0&&(l.error("BoxParser","Parsing of box \'"+f+"\' read "+u+" more bytes than the indicated box data size, seeking backwards"),r.seek(i.start+i.size)),{code:H,box:i,size:i.size}}var v=class extends p{write(r){if(this.size=0,this.writeHeader(r),this.boxes)for(let t=0;t<this.boxes.length;t++)this.boxes[t]&&(this.boxes[t].write(r),this.size+=this.boxes[t].size);l.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),r.adjustUint32(this.sizePosition,this.size)}print(r){this.printHeader(r);for(let t=0;t<this.boxes.length;t++)if(this.boxes[t]){const e=r.indent;r.indent+=" ",this.boxes[t].print(r),r.indent=e}}parse(r){let t;for(;r.getPosition()<this.start+this.size;)if(t=M(r,!1,this.size-(r.getPosition()-this.start)),t.code===H){const e=t.box;if(this.boxes||(this.boxes=[]),this.boxes.push(e),this.subBoxNames&&this.subBoxNames.indexOf(e.type)!==-1){const i=this.subBoxNames[this.subBoxNames.indexOf(e.type)]+"s";this[i]||(this[i]=[]),this[i].push(e)}else{const i=e.type!=="uuid"?e.type:e.uuid;this[i]?l.warn("ContainerBox",`Box of type ${i} already exists in container box ${this.type}.`):this[i]=e}}else return}},V=(ot=class extends v{constructor(t,e,i){super(t),this.hdr_size=e,this.start=i}isVideo(){return!1}isAudio(){return!1}isSubtitle(){return!1}isMetadata(){return!1}isHint(){return!1}getCodec(){return this.type.replace(".","")}getWidth(){return""}getHeight(){return""}getChannelCount(){return""}getSampleRate(){return""}getSampleSize(){return""}parseHeader(t){t.readUint8Array(6),this.data_reference_index=t.readUint16(),this.hdr_size+=8}parse(t){this.parseHeader(t),this.data=t.readUint8Array(this.size-this.hdr_size)}parseDataAndRewind(t){this.parseHeader(t),this.data=t.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,t.seek(this.start+this.hdr_size)}parseFooter(t){super.parse(t)}writeHeader(t){this.size=8,super.writeHeader(t),t.writeUint8(0),t.writeUint8(0),t.writeUint8(0),t.writeUint8(0),t.writeUint8(0),t.writeUint8(0),t.writeUint16(this.data_reference_index)}writeFooter(t){if(this.boxes)for(let e=0;e<this.boxes.length;e++)this.boxes[e].write(t),this.size+=this.boxes[e].size;l.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),t.adjustUint32(this.sizePosition,this.size)}write(t){this.writeHeader(t),t.writeUint8Array(this.data),this.size+=this.data.length,l.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),t.adjustUint32(this.sizePosition,this.size)}},ot.registryId=Symbol.for("SampleEntryIdentifier"),ot),aa=class extends V{},it=class extends V{isMetadata(){return!0}},J=class extends V{isSubtitle(){return!0}},go=class extends V{},U=class extends V{parse(r){this.parseHeader(r),r.readUint16(),r.readUint16(),r.readUint32Array(3),this.width=r.readUint16(),this.height=r.readUint16(),this.horizresolution=r.readUint32(),this.vertresolution=r.readUint32(),r.readUint32(),this.frame_count=r.readUint16();const t=Math.min(31,r.readUint8());this.compressorname=r.readString(t),t<31&&r.readString(31-t),this.depth=r.readUint16(),r.readUint16(),this.parseFooter(r)}isVideo(){return!0}getWidth(){return this.width}getHeight(){return this.height}write(r){this.writeHeader(r),this.size+=70,r.writeUint16(0),r.writeUint16(0),r.writeUint32(0),r.writeUint32(0),r.writeUint32(0),r.writeUint16(this.width),r.writeUint16(this.height),r.writeUint32(this.horizresolution),r.writeUint32(this.vertresolution),r.writeUint32(0),r.writeUint16(this.frame_count),r.writeUint8(Math.min(31,this.compressorname.length)),r.writeString(this.compressorname,void 0,31),r.writeUint16(this.depth),r.writeInt16(-1),this.writeFooter(r)}},L=class extends V{parse(r){this.parseHeader(r),this.version=r.readUint16(),r.readUint16(),r.readUint32(),this.channel_count=r.readUint16(),this.samplesize=r.readUint16(),r.readUint16(),r.readUint16(),this.samplerate=r.readUint32()/65536,r.isofile?.ftyp?.major_brand.includes("qt")&&(this.version===1?this.extensions=r.readUint8Array(16):this.version===2&&(this.extensions=r.readUint8Array(36))),this.parseFooter(r)}isAudio(){return!0}getChannelCount(){return this.channel_count}getSampleRate(){return this.samplerate}getSampleSize(){return this.samplesize}write(r){this.writeHeader(r),this.size+=20,r.writeUint32(0),r.writeUint32(0),r.writeUint16(this.channel_count),r.writeUint16(this.samplesize),r.writeUint16(0),r.writeUint16(0),r.writeUint32(this.samplerate<<16),this.writeFooter(r)}},Nn=class extends V{parse(r){this.parseHeader(r),this.parseFooter(r)}write(r){this.writeHeader(r),this.writeFooter(r)}},oa=class extends Array{toString(){let r="<table class=\'inner-table\'>";r+="<thead><tr><th>length</th><th>nalu_data</th></tr></thead>",r+="<tbody>";for(let t=0;t<this.length;t++){const e=this[t];r+="<tr>",r+="<td>"+e.length+"</td>",r+="<td>",r+=e.data.reduce(function(i,s){return i+s.toString(16).padStart(2,"0")},"0x"),r+="</td></tr>"}return r+="</tbody></table>",r}},ha=(ht=class extends p{constructor(){super(...arguments),this.box_name="AVCConfigurationBox"}parse(t){this.configurationVersion=t.readUint8(),this.AVCProfileIndication=t.readUint8(),this.profile_compatibility=t.readUint8(),this.AVCLevelIndication=t.readUint8(),this.lengthSizeMinusOne=t.readUint8()&3,this.nb_SPS_nalus=t.readUint8()&31;let e=this.size-this.hdr_size-6;this.SPS=new oa;for(let i=0;i<this.nb_SPS_nalus;i++){const s=t.readUint16();this.SPS.push({length:s,data:t.readUint8Array(s)}),e-=2+s}this.nb_PPS_nalus=t.readUint8(),e--,this.PPS=new oa;for(let i=0;i<this.nb_PPS_nalus;i++){const s=t.readUint16();this.PPS.push({length:s,data:t.readUint8Array(s)}),e-=2+s}e>0&&(this.ext=t.readUint8Array(e))}write(t){this.size=7;for(let e=0;e<this.SPS.length;e++)this.size+=2+this.SPS[e].length;for(let e=0;e<this.PPS.length;e++)this.size+=2+this.PPS[e].length;this.ext&&(this.size+=this.ext.length),this.writeHeader(t),t.writeUint8(this.configurationVersion),t.writeUint8(this.AVCProfileIndication),t.writeUint8(this.profile_compatibility),t.writeUint8(this.AVCLevelIndication),t.writeUint8(this.lengthSizeMinusOne+252),t.writeUint8(this.SPS.length+224);for(let e=0;e<this.SPS.length;e++)t.writeUint16(this.SPS[e].length),t.writeUint8Array(this.SPS[e].data);t.writeUint8(this.PPS.length);for(let e=0;e<this.PPS.length;e++)t.writeUint16(this.PPS[e].length),t.writeUint8Array(this.PPS[e].data);this.ext&&t.writeUint8Array(this.ext)}},ht.fourcc="avcC",ht),An=(ct=class extends p{constructor(){super(...arguments),this.box_name="MediaDataBox"}},ct.fourcc="mdat",ct),xo=(lt=class extends p{constructor(){super(...arguments),this.box_name="ItemDataBox"}},lt.fourcc="idat",lt),yo=(dt=class extends p{constructor(){super(...arguments),this.box_name="FreeSpaceBox"}},dt.fourcc="free",dt),bo=(ft=class extends p{constructor(){super(...arguments),this.box_name="FreeSpaceBox"}},ft.fourcc="skip",ft),ca=(ut=class extends d{constructor(){super(...arguments),this.box_name="HintMediaHeaderBox"}},ut.fourcc="hmhd",ut),Pn=(pt=class extends d{constructor(){super(...arguments),this.box_name="NullMediaHeaderBox"}},pt.fourcc="nmhd",pt),vo=(_t=class extends d{constructor(){super(...arguments),this.box_name="ObjectDescriptorBox"}},_t.fourcc="iods",_t),Uo=(mt=class extends d{constructor(){super(...arguments),this.box_name="XMLBox"}},mt.fourcc="xml ",mt),So=(gt=class extends d{constructor(){super(...arguments),this.box_name="BinaryXMLBox"}},gt.fourcc="bxml",gt),Bo=(xt=class extends d{constructor(){super(...arguments),this.box_name="ItemProtectionBox",this.sinfs=[]}get protections(){return this.sinfs}},xt.fourcc="ipro",xt),Gn=(yt=class extends v{constructor(){super(...arguments),this.box_name="MovieBox",this.traks=[],this.psshs=[],this.subBoxNames=["trak","pssh"]}},yt.fourcc="moov",yt),la=(bt=class extends v{constructor(){super(...arguments),this.box_name="TrackBox",this.samples=[]}},bt.fourcc="trak",bt),wo=(vt=class extends v{constructor(){super(...arguments),this.box_name="EditBox"}},vt.fourcc="edts",vt),da=(Ut=class extends v{constructor(){super(...arguments),this.box_name="MediaBox"}},Ut.fourcc="mdia",Ut),fa=(St=class extends v{constructor(){super(...arguments),this.box_name="MediaInformationBox"}},St.fourcc="minf",St),ua=(Bt=class extends v{constructor(){super(...arguments),this.box_name="DataInformationBox"}},Bt.fourcc="dinf",Bt),pa=(wt=class extends v{constructor(){super(...arguments),this.box_name="SampleTableBox",this.sgpds=[],this.sbgps=[],this.subBoxNames=["sgpd","sbgp"]}},wt.fourcc="stbl",wt),Vn=(zt=class extends v{constructor(){super(...arguments),this.box_name="MovieExtendsBox",this.trexs=[],this.subBoxNames=["trex"]}},zt.fourcc="mvex",zt),_a=(Et=class extends v{constructor(){super(...arguments),this.box_name="MovieFragmentBox",this.trafs=[],this.subBoxNames=["traf"]}},Et.fourcc="moof",Et),ma=(kt=class extends v{constructor(){super(...arguments),this.box_name="TrackFragmentBox",this.truns=[],this.sgpds=[],this.sbgps=[],this.subBoxNames=["trun","sgpd","sbgp"]}},kt.fourcc="traf",kt),zo=(It=class extends v{constructor(){super(...arguments),this.box_name="VTTCueBox"}},It.fourcc="vttc",It),Eo=(Tt=class extends v{constructor(){super(...arguments),this.box_name="MovieFragmentRandomAccessBox",this.tfras=[],this.subBoxNames=["tfra"]}},Tt.fourcc="mfra",Tt),ko=(Ct=class extends v{constructor(){super(...arguments),this.box_name="AdditionalMetadataContainerBox"}},Ct.fourcc="meco",Ct),Io=(At=class extends v{constructor(){super(...arguments),this.box_name="trackhintinformation",this.subBoxNames=["sdp ","rtp "]}},At.fourcc="hnti",At),To=(Pt=class extends v{constructor(){super(...arguments),this.box_name="hintstatisticsbox",this.maxrs=[],this.subBoxNames=["maxr"]}},Pt.fourcc="hinf",Pt),Co=(Ft=class extends v{constructor(){super(...arguments),this.box_name="SubTrackBox"}},Ft.fourcc="strk",Ft),Ao=(Dt=class extends v{constructor(){super(...arguments),this.box_name="SubTrackDefinitionBox"}},Dt.fourcc="strd",Dt),Po=(Lt=class extends v{constructor(){super(...arguments),this.box_name="ProtectionSchemeInfoBox"}},Lt.fourcc="sinf",Lt),Fo=(Ht=class extends v{constructor(){super(...arguments),this.box_name="RestrictedSchemeInfoBox"}},Ht.fourcc="rinf",Ht),Do=(Ot=class extends v{constructor(){super(...arguments),this.box_name="SchemeInformationBox"}},Ot.fourcc="schi",Ot),Lo=(Rt=class extends v{constructor(){super(...arguments),this.box_name="TrackGroupBox"}},Rt.fourcc="trgr",Rt),Ho=(Mt=class extends v{constructor(){super(...arguments),this.box_name="UserDataBox",this.kinds=[],this.strks=[],this.subBoxNames=["kind","strk"]}},Mt.fourcc="udta",Mt),Oo=(Nt=class extends v{constructor(){super(...arguments),this.box_name="ItemPropertiesBox",this.ipmas=[],this.subBoxNames=["ipma"]}},Nt.fourcc="iprp",Nt),Ro=(Gt=class extends v{constructor(){super(...arguments),this.box_name="ItemPropertyContainerBox",this.hvcCs=[],this.ispes=[],this.claps=[],this.irots=[],this.subBoxNames=["hvcC","ispe","clap","irot"]}},Gt.fourcc="ipco",Gt),Mo=(Vt=class extends v{constructor(){super(...arguments),this.box_name="GroupsListBox"}},Vt.fourcc="grpl",Vt),No=(jt=class extends v{constructor(){super(...arguments),this.box_name="J2KHeaderInfoBox"}},jt.fourcc="j2kH",jt),Go=($t=class extends v{constructor(){super(...arguments),this.box_name="ExtendedTypeBox",this.tycos=[],this.subBoxNames=["tyco"]}},$t.fourcc="etyp",$t),Vo=(qt=class extends v{constructor(){super(...arguments),this.box_name="ProjectedOmniVideoBox",this.subBoxNames=["prfr"]}},qt.fourcc="povd",qt),ga=(Wt=class extends d{constructor(){super(...arguments),this.box_name="DataReferenceBox"}parse(t){this.parseFullHeader(t),this.entries=[];const e=t.readUint32();for(let i=0;i<e;i++){const s=M(t,!1,this.size-(t.getPosition()-this.start));if(s.code===H){const n=s.box;this.entries.push(n)}else return}}write(t){this.version=0,this.flags=0,this.size=4,this.writeHeader(t),t.writeUint32(this.entries.length);for(let e=0;e<this.entries.length;e++)this.entries[e].write(t),this.size+=this.entries[e].size;l.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),t.adjustUint32(this.sizePosition,this.size)}},Wt.fourcc="dref",Wt),xa=(Yt=class extends d{constructor(){super(...arguments),this.box_name="ExtendedLanguageBox"}parse(t){this.parseFullHeader(t),this.extended_language=t.readString(this.size-this.hdr_size)}write(t){this.version=0,this.flags=0,this.size=this.extended_language.length,this.writeHeader(t),t.writeString(this.extended_language)}},Yt.fourcc="elng",Yt),ya=(Kt=class extends p{constructor(){super(...arguments),this.box_name="FileTypeBox"}parse(t){let e=this.size-this.hdr_size;this.major_brand=t.readString(4),this.minor_version=t.readUint32(),e-=8,this.compatible_brands=[];let i=0;for(;e>=4;)this.compatible_brands[i]=t.readString(4),e-=4,i++}write(t){this.size=8+4*this.compatible_brands.length,this.writeHeader(t),t.writeString(this.major_brand,void 0,4),t.writeUint32(this.minor_version);for(let e=0;e<this.compatible_brands.length;e++)t.writeString(this.compatible_brands[e],void 0,4)}},Kt.fourcc="ftyp",Kt),ba=(Qt=class extends d{constructor(){super(...arguments),this.box_name="HandlerBox"}parse(t){if(this.parseFullHeader(t),this.version===0&&(t.readUint32(),this.handler=t.readString(4),t.readUint32Array(3),!this.isEndOfBox(t))){const e=this.start+this.size-t.getPosition();this.name=t.readCString();const i=this.start+this.size-1;t.seek(i),t.readUint8()!==0&&e>1&&(l.info("BoxParser","Warning: hdlr name is not null-terminated, possibly length-prefixed string. Trimming first byte."),this.name=this.name.slice(1))}}write(t){this.size=20+this.name.length+1,this.version=0,this.flags=0,this.writeHeader(t),t.writeUint32(0),t.writeString(this.handler,void 0,4),t.writeUint32Array([0,0,0]),t.writeCString(this.name)}},Qt.fourcc="hdlr",Qt),va=(Xt=class extends p{constructor(){super(...arguments),this.box_name="HEVCConfigurationBox"}parse(t){this.configurationVersion=t.readUint8();let e=t.readUint8();this.general_profile_space=e>>6,this.general_tier_flag=(e&32)>>5,this.general_profile_idc=e&31,this.general_profile_compatibility=t.readUint32(),this.general_constraint_indicator=t.readUint8Array(6),this.general_level_idc=t.readUint8(),this.min_spatial_segmentation_idc=t.readUint16()&4095,this.parallelismType=t.readUint8()&3,this.chroma_format_idc=t.readUint8()&3,this.bit_depth_luma_minus8=t.readUint8()&7,this.bit_depth_chroma_minus8=t.readUint8()&7,this.avgFrameRate=t.readUint16(),e=t.readUint8(),this.constantFrameRate=e>>6,this.numTemporalLayers=(e&13)>>3,this.temporalIdNested=(e&4)>>2,this.lengthSizeMinusOne=e&3,this.nalu_arrays=[];const i=t.readUint8();for(let s=0;s<i;s++){const n=[];this.nalu_arrays.push(n),e=t.readUint8(),n.completeness=(e&128)>>7,n.nalu_type=e&63;const a=t.readUint16();for(let o=0;o<a;o++){const h=t.readUint16();n.push({data:t.readUint8Array(h)})}}}write(t){this.size=23;for(let e=0;e<this.nalu_arrays.length;e++){this.size+=3;for(let i=0;i<this.nalu_arrays[e].length;i++)this.size+=2+this.nalu_arrays[e][i].data.length}this.writeHeader(t),t.writeUint8(this.configurationVersion),t.writeUint8((this.general_profile_space<<6)+(this.general_tier_flag<<5)+this.general_profile_idc),t.writeUint32(this.general_profile_compatibility),t.writeUint8Array(this.general_constraint_indicator),t.writeUint8(this.general_level_idc),t.writeUint16(this.min_spatial_segmentation_idc+(15<<24)),t.writeUint8(this.parallelismType+252),t.writeUint8(this.chroma_format_idc+252),t.writeUint8(this.bit_depth_luma_minus8+248),t.writeUint8(this.bit_depth_chroma_minus8+248),t.writeUint16(this.avgFrameRate),t.writeUint8((this.constantFrameRate<<6)+(this.numTemporalLayers<<3)+(this.temporalIdNested<<2)+this.lengthSizeMinusOne),t.writeUint8(this.nalu_arrays.length);for(let e=0;e<this.nalu_arrays.length;e++){t.writeUint8((this.nalu_arrays[e].completeness<<7)+this.nalu_arrays[e].nalu_type),t.writeUint16(this.nalu_arrays[e].length);for(let i=0;i<this.nalu_arrays[e].length;i++)t.writeUint16(this.nalu_arrays[e][i].data.length),t.writeUint8Array(this.nalu_arrays[e][i].data)}}},Xt.fourcc="hvcC",Xt),Ua=(Jt=class extends d{constructor(){super(...arguments),this.box_name="MediaHeaderBox"}parse(t){this.parseFullHeader(t),this.version===1?(this.creation_time=t.readUint64(),this.modification_time=t.readUint64(),this.timescale=t.readUint32(),this.duration=t.readUint64()):(this.creation_time=t.readUint32(),this.modification_time=t.readUint32(),this.timescale=t.readUint32(),this.duration=t.readUint32()),this.parseLanguage(t),t.readUint16()}write(t){const e=this.modification_time>S||this.creation_time>S||this.duration>S||this.version===1;this.version=e?1:0,this.size=20,this.size+=e?12:0,this.flags=0,this.writeHeader(t),e?(t.writeUint64(this.creation_time),t.writeUint64(this.modification_time),t.writeUint32(this.timescale),t.writeUint64(this.duration)):(t.writeUint32(this.creation_time),t.writeUint32(this.modification_time),t.writeUint32(this.timescale),t.writeUint32(this.duration)),t.writeUint16(this.language),t.writeUint16(0)}},Jt.fourcc="mdhd",Jt),Sa=(Zt=class extends d{constructor(){super(...arguments),this.box_name="MovieExtendsHeaderBox"}parse(t){this.parseFullHeader(t),this.flags&1&&(l.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),this.version===1?this.fragment_duration=t.readUint64():this.fragment_duration=t.readUint32()}write(t){const e=this.fragment_duration>S||this.version===1;this.version=e?1:0,this.size=4,this.size+=e?4:0,this.flags=0,this.writeHeader(t),e?t.writeUint64(this.fragment_duration):t.writeUint32(this.fragment_duration)}},Zt.fourcc="mehd",Zt),jo=(te=class extends d{constructor(){super(...arguments),this.box_name="ItemInfoEntry"}parse(t){if(this.parseFullHeader(t),(this.version===0||this.version===1)&&(this.item_ID=t.readUint16(),this.item_protection_index=t.readUint16(),this.item_name=t.readCString(),this.content_type=t.readCString(),this.isEndOfBox(t)||(this.content_encoding=t.readCString())),this.version===1){this.extension_type=t.readString(4),l.warn("BoxParser","Cannot parse extension type"),t.seek(this.start+this.size);return}this.version>=2&&(this.version===2?this.item_ID=t.readUint16():this.version===3&&(this.item_ID=t.readUint32()),this.item_protection_index=t.readUint16(),this.item_type=t.readString(4),this.item_name=t.readCString(),this.item_type==="mime"?(this.content_type=t.readCString(),this.content_encoding=t.readCString()):this.item_type==="uri "&&(this.item_uri_type=t.readCString()))}},te.fourcc="infe",te),$o=(ee=class extends d{constructor(){super(...arguments),this.box_name="ItemInfoBox"}parse(t){this.parseFullHeader(t),this.version===0?this.entry_count=t.readUint16():this.entry_count=t.readUint32(),this.item_infos=[];for(let e=0;e<this.entry_count;e++){const i=M(t,!1,this.size-(t.getPosition()-this.start));if(i.code===H){const s=i.box;s.type==="infe"?this.item_infos[e]=s:l.error("BoxParser","Expected \'infe\' box, got "+i.box.type,t.isofile)}else return}}},ee.fourcc="iinf",ee),qo=(ie=class extends d{constructor(){super(...arguments),this.box_name="ItemLocationBox"}parse(t){this.parseFullHeader(t);let e;e=t.readUint8(),this.offset_size=e>>4&15,this.length_size=e&15,e=t.readUint8(),this.base_offset_size=e>>4&15,this.version===1||this.version===2?this.index_size=e&15:this.index_size=0,this.items=[];let i=0;if(this.version<2)i=t.readUint16();else if(this.version===2)i=t.readUint32();else throw new Error("version of iloc box not supported");for(let s=0;s<i;s++){let n=0,a=0,o=0;if(this.version<2)n=t.readUint16();else if(this.version===2)n=t.readUint32();else throw new Error("version of iloc box not supported");this.version===1||this.version===2?a=t.readUint16()&15:a=0;const h=t.readUint16();switch(this.base_offset_size){case 0:o=0;break;case 4:o=t.readUint32();break;case 8:o=t.readUint64();break;default:throw new Error("Error reading base offset size")}const c=[],f=t.readUint16();for(let u=0;u<f;u++){let m=0,_=0,g=0;if(this.version===1||this.version===2)switch(this.index_size){case 0:m=0;break;case 4:m=t.readUint32();break;case 8:m=t.readUint64();break;default:throw new Error("Error reading extent index")}switch(this.offset_size){case 0:_=0;break;case 4:_=t.readUint32();break;case 8:_=t.readUint64();break;default:throw new Error("Error reading extent index")}switch(this.length_size){case 0:g=0;break;case 4:g=t.readUint32();break;case 8:g=t.readUint64();break;default:throw new Error("Error reading extent index")}c.push({extent_index:m,extent_length:g,extent_offset:_})}this.items.push({base_offset:o,construction_method:a,item_ID:n,data_reference_index:h,extents:c})}}},ie.fourcc="iloc",ie),Wo={auxl:"Auxiliary image item",base:"Pre-derived image item base",cdsc:"Item describes referenced item",dimg:"Derived image item",dpnd:"Item coding dependency",eroi:"Region",evir:"EVC slice",exbl:"Scalable image item","fdl ":"File delivery",font:"Font item",iloc:"Item data location",mask:"Region mask",mint:"Data integrity",pred:"Predictively coded item",prem:"Pre-multiplied item",tbas:"HEVC tile track base item",text:"Text item",thmb:"Thumbnail image item"},Yo=(W=class extends d{constructor(){super(...arguments),this.box_name="ItemReferenceBox",this.references=[]}parse(t){for(this.parseFullHeader(t),this.references=[];t.getPosition()<this.start+this.size;){const e=M(t,!0,this.size-(t.getPosition()-this.start));if(e.code===H){let i="Unknown item reference";W.allowed_types.includes(e.type)?i=Wo[e.type]:l.warn("BoxParser",`Unknown item reference type: \'${e.type}\'`);const s=this.version===0?new no(e.type,e.size,i,e.hdr_size,e.start):new ao(e.type,e.size,i,e.hdr_size,e.start);s.write===p.prototype.write&&s.type!=="mdat"&&(l.warn("BoxParser",s.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),s.parseDataAndRewind(t)),s.parse(t),this.references.push(s)}else return}}},W.fourcc="iref",W.allowed_types=["auxl","base","cdsc","dimg","dpnd","eroi","evir","exbl","fdl ","font","iloc","mask","mint","pred","prem","tbas","text","thmb"],W),Ko=(se=class extends d{constructor(){super(...arguments),this.box_name="PrimaryItemBox"}parse(t){this.parseFullHeader(t),this.version===0?this.item_id=t.readUint16():this.item_id=t.readUint32()}},se.fourcc="pitm",se),Qo=(re=class extends d{constructor(){super(...arguments),this.box_name="MetaBox",this.isQT=!1}parse(t){const e=t.getPosition();if(this.size>8){switch(t.readUint32(),t.readString(4)){case"hdlr":case"mhdr":case"keys":case"ilst":case"ctry":case"lang":this.isQT=!0;break}t.seek(e)}this.isQT||this.parseFullHeader(t),v.prototype.parse.call(this,t)}},re.fourcc="meta",re),Ba=(ne=class extends d{constructor(){super(...arguments),this.box_name="MovieFragmentHeaderBox"}parse(t){this.parseFullHeader(t),this.sequence_number=t.readUint32()}write(t){this.version=0,this.flags=0,this.size=4,this.writeHeader(t),t.writeUint32(this.sequence_number)}},ne.fourcc="mfhd",ne),wa=(ae=class extends d{constructor(){super(...arguments),this.box_name="MovieHeaderBox"}parse(t){this.parseFullHeader(t),this.version===1?(this.creation_time=t.readUint64(),this.modification_time=t.readUint64(),this.timescale=t.readUint32(),this.duration=t.readUint64()):(this.creation_time=t.readUint32(),this.modification_time=t.readUint32(),this.timescale=t.readUint32(),this.duration=t.readUint32()),this.rate=t.readUint32(),this.volume=t.readUint16()>>8,t.readUint16(),t.readUint32Array(2),this.matrix=t.readInt32Array(9),t.readUint32Array(6),this.next_track_id=t.readUint32()}write(t){const e=this.modification_time>S||this.creation_time>S||this.duration>S||this.version===1;this.version=e?1:0,this.size=96,this.size+=e?12:0,this.flags=0,this.writeHeader(t),e?(t.writeUint64(this.creation_time),t.writeUint64(this.modification_time),t.writeUint32(this.timescale),t.writeUint64(this.duration)):(t.writeUint32(this.creation_time),t.writeUint32(this.modification_time),t.writeUint32(this.timescale),t.writeUint32(this.duration)),t.writeUint32(this.rate),t.writeUint16(this.volume<<8),t.writeUint16(0),t.writeUint32(0),t.writeUint32(0),t.writeInt32Array(this.matrix),t.writeUint32(0),t.writeUint32(0),t.writeUint32(0),t.writeUint32(0),t.writeUint32(0),t.writeUint32(0),t.writeUint32(this.next_track_id)}print(t){super.printHeader(t),t.log(t.indent+"creation_time: "+this.creation_time),t.log(t.indent+"modification_time: "+this.modification_time),t.log(t.indent+"timescale: "+this.timescale),t.log(t.indent+"duration: "+this.duration),t.log(t.indent+"rate: "+this.rate),t.log(t.indent+"volume: "+(this.volume>>8)),t.log(t.indent+"matrix: "+this.matrix.join(", ")),t.log(t.indent+"next_track_id: "+this.next_track_id)}},ae.fourcc="mvhd",ae),Xo=(oe=class extends it{parse(t){this.parseHeader(t),this.content_encoding=t.readCString(),this.mime_format=t.readCString(),this.parseFooter(t)}},oe.fourcc="mett",oe),Jo=(he=class extends it{parse(t){this.parseHeader(t),this.content_encoding=t.readCString(),this.namespace=t.readCString(),this.schema_location=t.readCString(),this.parseFooter(t)}},he.fourcc="metx",he),Zo=(ce=class extends p{constructor(){super(...arguments),this.box_name="AV1CodecConfigurationBox"}parse(t){let e=t.readUint8();if((e>>7&1)!==1){l.error("BoxParser","av1C marker problem",t.isofile);return}if(this.version=e&127,this.version!==1){l.error("BoxParser","av1C version "+this.version+" not supported",t.isofile);return}if(e=t.readUint8(),this.seq_profile=e>>5&7,this.seq_level_idx_0=e&31,e=t.readUint8(),this.seq_tier_0=e>>7&1,this.high_bitdepth=e>>6&1,this.twelve_bit=e>>5&1,this.monochrome=e>>4&1,this.chroma_subsampling_x=e>>3&1,this.chroma_subsampling_y=e>>2&1,this.chroma_sample_position=e&3,e=t.readUint8(),this.reserved_1=e>>5&7,this.reserved_1!==0){l.error("BoxParser","av1C reserved_1 parsing problem",t.isofile);return}if(this.initial_presentation_delay_present=e>>4&1,this.initial_presentation_delay_present===1)this.initial_presentation_delay_minus_one=e&15;else if(this.reserved_2=e&15,this.reserved_2!==0){l.error("BoxParser","av1C reserved_2 parsing problem",t.isofile);return}const i=this.size-this.hdr_size-4;this.configOBUs=t.readUint8Array(i)}},ce.fourcc="av1C",ce),th=(le=class extends d{constructor(){super(...arguments),this.box_name="ElementaryStreamDescriptorBox"}parse(t){this.parseFullHeader(t);const e=t.readUint8Array(this.size-this.hdr_size);if("MPEG4DescriptorParser"in Cn){const i=new Cn.MPEG4DescriptorParser;this.esd=i.parseOneDescriptor(new O(e.buffer,0))}}},le.fourcc="esds",le),eh=(de=class extends d{constructor(){super(...arguments),this.box_name="VPCodecConfigurationRecord"}parse(t){if(this.parseFullHeader(t),this.version===1){this.profile=t.readUint8(),this.level=t.readUint8();const e=t.readUint8();this.bitDepth=e>>4,this.chromaSubsampling=e>>1&7,this.videoFullRangeFlag=e&1,this.colourPrimaries=t.readUint8(),this.transferCharacteristics=t.readUint8(),this.matrixCoefficients=t.readUint8(),this.codecIntializationDataSize=t.readUint16(),this.codecIntializationData=t.readUint8Array(this.codecIntializationDataSize)}else{this.profile=t.readUint8(),this.level=t.readUint8();let e=t.readUint8();this.bitDepth=e>>4&15,this.colorSpace=e&15,e=t.readUint8(),this.chromaSubsampling=e>>4&15,this.transferFunction=e>>1&7,this.videoFullRangeFlag=e&1,this.codecIntializationDataSize=t.readUint16(),this.codecIntializationData=t.readUint8Array(this.codecIntializationDataSize)}}},de.fourcc="vpcC",de),ih=(fe=class extends d{constructor(){super(...arguments),this.box_name="VvcConfigurationBox"}parse(t){this.parseFullHeader(t);const e={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(a){this.held_bits=a.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(a){this.held_bits=a.readUint16(),this.num_held_bits=16},extract_bits:function(a){const o=this.held_bits>>this.num_held_bits-a&(1<<a)-1;return this.num_held_bits-=a,o}};if(e.stream_read_1_bytes(t),e.extract_bits(5),this.lengthSizeMinusOne=e.extract_bits(2),this.ptl_present_flag=e.extract_bits(1),this.ptl_present_flag){e.stream_read_2_bytes(t),this.ols_idx=e.extract_bits(9),this.num_sublayers=e.extract_bits(3),this.constant_frame_rate=e.extract_bits(2),this.chroma_format_idc=e.extract_bits(2),e.stream_read_1_bytes(t),this.bit_depth_minus8=e.extract_bits(3),e.extract_bits(5);{if(e.stream_read_2_bytes(t),e.extract_bits(2),this.num_bytes_constraint_info=e.extract_bits(6),this.general_profile_idc=e.extract_bits(7),this.general_tier_flag=e.extract_bits(1),this.general_level_idc=t.readUint8(),e.stream_read_1_bytes(t),this.ptl_frame_only_constraint_flag=e.extract_bits(1),this.ptl_multilayer_enabled_flag=e.extract_bits(1),this.general_constraint_info=new Uint8Array(this.num_bytes_constraint_info),this.num_bytes_constraint_info){for(let a=0;a<this.num_bytes_constraint_info-1;a++){const o=e.extract_bits(6);e.stream_read_1_bytes(t);const h=e.extract_bits(2);this.general_constraint_info[a]=o<<2|h}this.general_constraint_info[this.num_bytes_constraint_info-1]=e.extract_bits(6)}else e.extract_bits(6);if(this.num_sublayers>1){e.stream_read_1_bytes(t),this.ptl_sublayer_present_mask=0;for(let a=this.num_sublayers-2;a>=0;--a){const o=e.extract_bits(1);this.ptl_sublayer_present_mask|=o<<a}for(let a=this.num_sublayers;a<=8&&this.num_sublayers>1;++a)e.extract_bits(1);this.sublayer_level_idc=[];for(let a=this.num_sublayers-2;a>=0;--a)this.ptl_sublayer_present_mask&1<<a&&(this.sublayer_level_idc[a]=t.readUint8())}if(this.ptl_num_sub_profiles=t.readUint8(),this.general_sub_profile_idc=[],this.ptl_num_sub_profiles)for(let a=0;a<this.ptl_num_sub_profiles;a++)this.general_sub_profile_idc.push(t.readUint32())}this.max_picture_width=t.readUint16(),this.max_picture_height=t.readUint16(),this.avg_frame_rate=t.readUint16()}const i=12,s=13;this.nalu_arrays=[];const n=t.readUint8();for(let a=0;a<n;a++){const o=[];this.nalu_arrays.push(o),e.stream_read_1_bytes(t),o.completeness=e.extract_bits(1),e.extract_bits(2),o.nalu_type=e.extract_bits(5);let h=1;o.nalu_type!==s&&o.nalu_type!==i&&(h=t.readUint16());for(let c=0;c<h;c++){const f=t.readUint16();o.push({data:t.readUint8Array(f),length:f})}}}},fe.fourcc="vvcC",fe),sh=(ue=class extends p{constructor(){super(...arguments),this.box_name="ColourInformationBox"}parse(t){if(this.colour_type=t.readString(4),this.colour_type==="nclx"){this.colour_primaries=t.readUint16(),this.transfer_characteristics=t.readUint16(),this.matrix_coefficients=t.readUint16();const e=t.readUint8();this.full_range_flag=e>>7}else this.colour_type==="rICC"?this.ICC_profile=t.readUint8Array(this.size-4):this.colour_type==="prof"&&(this.ICC_profile=t.readUint8Array(this.size-4))}},ue.fourcc="colr",ue);function st(r,t){let e=Number(r).toString(16);for(t=typeof t>"u"?2:t;e.length<t;)e="0"+e;return e}var Fn=class extends U{getCodec(){const r=super.getCodec();return this.avcC?`${r}.${st(this.avcC.AVCProfileIndication)}${st(this.avcC.profile_compatibility)}${st(this.avcC.AVCLevelIndication)}`:r}},rh=(pe=class extends Fn{constructor(){super(...arguments),this.box_name="AVCSampleEntry"}},pe.fourcc="avc1",pe),nh=(_e=class extends Fn{constructor(){super(...arguments),this.box_name="AVC2SampleEntry"}},_e.fourcc="avc2",_e),ah=(me=class extends Fn{constructor(){super(...arguments),this.box_name="AVCSampleEntry"}},me.fourcc="avc3",me),oh=(ge=class extends Fn{constructor(){super(...arguments),this.box_name="AVC2SampleEntry"}},ge.fourcc="avc4",ge),hh=(xe=class extends U{constructor(){super(...arguments),this.box_name="AV1SampleEntry"}getCodec(){const t=super.getCodec(),e=this.av1C.seq_level_idx_0,i=e<10?"0"+e:e;let s;return this.av1C.seq_profile===2&&this.av1C.high_bitdepth===1?s=this.av1C.twelve_bit===1?"12":"10":this.av1C.seq_profile<=2&&(s=this.av1C.high_bitdepth===1?"10":"08"),t+"."+this.av1C.seq_profile+"."+i+(this.av1C.seq_tier_0?"H":"M")+"."+s}},xe.fourcc="av01",xe),ch=(ye=class extends U{},ye.fourcc="dav1",ye),Dn=class extends U{getCodec(){let r=super.getCodec();if(this.hvcC){switch(r+=".",this.hvcC.general_profile_space){case 0:r+="";break;case 1:r+="A";break;case 2:r+="B";break;case 3:r+="C";break}r+=this.hvcC.general_profile_idc,r+=".";let t=this.hvcC.general_profile_compatibility,e=0;for(let n=0;n<32&&(e|=t&1,n!==31);n++)e<<=1,t>>=1;r+=st(e,0),r+=".",this.hvcC.general_tier_flag===0?r+="L":r+="H",r+=this.hvcC.general_level_idc;let i=!1,s="";for(let n=5;n>=0;n--)(this.hvcC.general_constraint_indicator[n]||i)&&(s="."+st(this.hvcC.general_constraint_indicator[n],0)+s,i=!0);r+=s}return r}},lh=(be=class extends Dn{constructor(){super(...arguments),this.box_name="HEVCSampleEntry"}},be.fourcc="hvc1",be),dh=(ve=class extends Dn{},ve.fourcc="hvc2",ve),fh=(Ue=class extends Dn{constructor(){super(...arguments),this.box_name="HEVCSampleEntry",this.colrs=[],this.subBoxNames=["colr"]}},Ue.fourcc="hev1",Ue),uh=(Se=class extends Dn{},Se.fourcc="hev2",Se),ph=(Be=class extends U{constructor(){super(...arguments),this.box_name="HEVCTileSampleSampleEntry"}},Be.fourcc="hvt1",Be),_h=(we=class extends U{constructor(){super(...arguments),this.box_name="LHEVCSampleEntry"}},we.fourcc="lhe1",we),mh=(ze=class extends U{constructor(){super(...arguments),this.box_name="LHEVCSampleEntry"}},ze.fourcc="lhv1",ze),gh=(Ee=class extends U{},Ee.fourcc="dvh1",Ee),xh=(ke=class extends U{},ke.fourcc="dvhe",ke),za=class extends U{getCodec(){let r=super.getCodec();if(this.vvcC){r+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?r+=".H":r+=".L",r+=this.vvcC.general_level_idc;let t="";if(this.vvcC.general_constraint_info){const e=[];let i=0;i|=this.vvcC.ptl_frame_only_constraint_flag<<7,i|=this.vvcC.ptl_multilayer_enabled_flag<<6;let s;for(let n=0;n<this.vvcC.general_constraint_info.length;++n)i|=this.vvcC.general_constraint_info[n]>>2&63,e.push(i),i&&(s=n),i=this.vvcC.general_constraint_info[n]>>2&3;if(s===void 0)t=".CA";else{t=".C";const n="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";let a=0,o=0;for(let h=0;h<=s;++h)for(a=a<<8|e[h],o+=8;o>=5;){const c=a>>o-5&31;t+=n[c],o-=5,a&=(1<<o)-1}o&&(a<<=5-o,t+=n[a&31])}}r+=t}return r}},yh=(Ie=class extends za{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},Ie.fourcc="vvc1",Ie),bh=(Te=class extends za{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},Te.fourcc="vvi1",Te),vh=(Ce=class extends U{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},Ce.fourcc="vvs1",Ce),Uh=(Ae=class extends U{constructor(){super(...arguments),this.box_name="VvcNonVCLSampleEntry"}},Ae.fourcc="vvcN",Ae),Ea=class extends U{getCodec(){const r=super.getCodec();let t=this.vpcC.level;t===0&&(t="00");let e=this.vpcC.bitDepth;return e===8&&(e="08"),`${r}.0${this.vpcC.profile}.${t}.${e}`}},Sh=(Pe=class extends Ea{},Pe.fourcc="vp08",Pe),Bh=(Fe=class extends Ea{},Fe.fourcc="vp09",Fe),wh=(De=class extends U{},De.fourcc="avs3",De),zh=(Le=class extends U{constructor(){super(...arguments),this.box_name="J2KSampleEntry"}},Le.fourcc="j2ki",Le),Eh=(He=class extends U{},He.fourcc="mjp2",He),kh=(Oe=class extends U{},Oe.fourcc="mjpg",Oe),Ih=(Re=class extends U{constructor(){super(...arguments),this.box_name="UncompressedVideoSampleEntry"}},Re.fourcc="uncv",Re),Th=(Me=class extends U{constructor(){super(...arguments),this.box_name="MP4VisualSampleEntry"}},Me.fourcc="mp4v",Me),Ch=(Ne=class extends L{constructor(){super(...arguments),this.box_name="MP4AudioSampleEntry"}getCodec(){const t=super.getCodec();if(this.esds&&this.esds.esd){const e=this.esds.esd.getOTI(),i=this.esds.esd.getAudioConfig();return t+"."+st(e)+(i?"."+i:"")}else return t}},Ne.fourcc="mp4a",Ne),Ah=(Ge=class extends L{},Ge.fourcc="m4ae",Ge),Ph=(Ve=class extends L{},Ve.fourcc="ac-3",Ve),Fh=(je=class extends L{},je.fourcc="ac-4",je),Dh=($e=class extends L{},$e.fourcc="ec-3",$e),Lh=(qe=class extends L{},qe.fourcc="Opus",qe),Hh=(We=class extends L{},We.fourcc="mha1",We),Oh=(Ye=class extends L{},Ye.fourcc="mha2",Ye),Rh=(Ke=class extends L{},Ke.fourcc="mhm1",Ke),Mh=(Qe=class extends L{},Qe.fourcc="mhm2",Qe),Nh=(Xe=class extends L{},Xe.fourcc="fLaC",Xe),Gh=(Je=class extends U{},Je.fourcc="encv",Je),Vh=(Ze=class extends L{},Ze.fourcc="enca",Ze),jh=(ti=class extends J{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},ti.fourcc="encu",ti),$h=(ei=class extends Nn{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},ei.fourcc="encs",ei),qh=(ii=class extends Nn{},ii.fourcc="mp4s",ii),Wh=(si=class extends go{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},si.fourcc="enct",si),Yh=(ri=class extends it{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},ri.fourcc="encm",ri),Kh=(ni=class extends U{constructor(){super(...arguments),this.box_name="RestrictedVideoSampleEntry"}},ni.fourcc="resv",ni),Qh=(ai=class extends J{parse(t){this.parseHeader(t),this.content_encoding=t.readCString(),this.mime_format=t.readCString(),this.parseFooter(t)}},ai.fourcc="sbtt",ai),ka=(oi=class extends J{parse(t){this.parseHeader(t),this.namespace=t.readCString(),this.schema_location=t.readCString(),this.auxiliary_mime_types=t.readCString(),this.parseFooter(t)}write(t){this.writeHeader(t),this.size+=this.namespace.length+1+this.schema_location.length+1+this.auxiliary_mime_types.length+1,t.writeCString(this.namespace),t.writeCString(this.schema_location),t.writeCString(this.auxiliary_mime_types),this.writeFooter(t)}},oi.fourcc="stpp",oi),Xh=(hi=class extends J{parse(t){this.parseHeader(t),this.content_encoding=t.readCString(),this.mime_format=t.readCString(),this.parseFooter(t)}getCodec(){const t=super.getCodec();return this.mime_format?t+"."+this.mime_format:t}},hi.fourcc="stxt",hi),Jh=(ci=class extends J{parse(t){this.parseHeader(t),this.displayFlags=t.readUint32(),this.horizontal_justification=t.readInt8(),this.vertical_justification=t.readInt8(),this.bg_color_rgba=t.readUint8Array(4),this.box_record=t.readInt16Array(4),this.style_record=t.readUint8Array(12),this.parseFooter(t)}},ci.fourcc="tx3g",ci),Zh=(li=class extends it{parse(t){this.parseHeader(t),this.parseFooter(t)}},li.fourcc="wvtt",li),tc=(di=class extends d{constructor(){super(...arguments),this.box_name="SampleToGroupBox"}parse(t){this.parseFullHeader(t),this.grouping_type=t.readString(4),this.version===1?this.grouping_type_parameter=t.readUint32():this.grouping_type_parameter=0,this.entries=[];const e=t.readUint32();for(let i=0;i<e;i++)this.entries.push({sample_count:t.readInt32(),group_description_index:t.readInt32()})}write(t){this.grouping_type_parameter?this.version=1:this.version=0,this.flags=0,this.size=8+8*this.entries.length+(this.version===1?4:0),this.writeHeader(t),t.writeString(this.grouping_type,void 0,4),this.version===1&&t.writeUint32(this.grouping_type_parameter),t.writeUint32(this.entries.length);for(let e=0;e<this.entries.length;e++){const i=this.entries[e];t.writeInt32(i.sample_count),t.writeInt32(i.group_description_index)}}},di.fourcc="sbgp",di),ec=(fi=class extends d{constructor(){super(...arguments),this.box_name="SampleDependencyTypeBox"}parse(t){this.parseFullHeader(t);const e=this.size-this.hdr_size;this.is_leading=[],this.sample_depends_on=[],this.sample_is_depended_on=[],this.sample_has_redundancy=[];for(let i=0;i<e;i++){const s=t.readUint8();this.is_leading[i]=s>>6,this.sample_depends_on[i]=s>>4&3,this.sample_is_depended_on[i]=s>>2&3,this.sample_has_redundancy[i]=s&3}}},fi.fourcc="sdtp",fi),ic=(ui=class extends d{constructor(){super(...arguments),this.box_name="SampleGroupDescriptionBox"}parse(t){this.parseFullHeader(t),this.grouping_type=t.readString(4),l.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),this.version===1?this.default_length=t.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=t.readUint32()),this.entries=[];const e=t.readUint32();for(let i=0;i<e;i++){let s;this.grouping_type in D.sampleGroupEntry?s=new D.sampleGroupEntry[this.grouping_type](this.grouping_type):s=new E(this.grouping_type),this.entries.push(s),this.version===1?this.default_length===0?s.description_length=t.readUint32():s.description_length=this.default_length:s.description_length=this.default_length,s.write===E.prototype.write&&(l.info("BoxParser","SampleGroup for type "+this.grouping_type+" writing not yet implemented, keeping unparsed data in memory for later write"),s.data=t.readUint8Array(s.description_length),t.seek(t.getPosition()-s.description_length)),s.parse(t)}}write(t){this.flags=0,this.size=12;for(let e=0;e<this.entries.length;e++){const i=this.entries[e];this.version===1&&(this.default_length===0&&(this.size+=4),this.size+=i.data.length)}this.writeHeader(t),t.writeString(this.grouping_type,void 0,4),this.version===1&&t.writeUint32(this.default_length),this.version>=2&&t.writeUint32(this.default_sample_description_index),t.writeUint32(this.entries.length);for(let e=0;e<this.entries.length;e++){const i=this.entries[e];this.version===1&&this.default_length===0&&t.writeUint32(i.description_length),i.write(t)}}},ui.fourcc="sgpd",ui),sc=(pi=class extends d{constructor(){super(...arguments),this.box_name="CompressedSegmentIndexBox"}parse(t){this.parseFullHeader(t),this.reference_ID=t.readUint32(),this.timescale=t.readUint32(),this.version===0?(this.earliest_presentation_time=t.readUint32(),this.first_offset=t.readUint32()):(this.earliest_presentation_time=t.readUint64(),this.first_offset=t.readUint64()),t.readUint16(),this.references=[];const e=t.readUint16();for(let i=0;i<e;i++){const s=t.readUint32(),n=t.readUint32(),a=t.readUint32();this.references.push({reference_type:s>>31&1,referenced_size:s&2147483647,subsegment_duration:n,starts_with_SAP:a>>31&1,SAP_type:a>>28&7,SAP_delta_time:a&268435455})}}write(t){const e=this.earliest_presentation_time>S||this.first_offset>S||this.version===1;this.version=e?1:0,this.size=12+12*this.references.length,this.size+=e?16:8,this.flags=0,this.writeHeader(t),t.writeUint32(this.reference_ID),t.writeUint32(this.timescale),e?(t.writeUint64(this.earliest_presentation_time),t.writeUint64(this.first_offset)):(t.writeUint32(this.earliest_presentation_time),t.writeUint32(this.first_offset)),t.writeUint16(0),t.writeUint16(this.references.length);for(let i=0;i<this.references.length;i++){const s=this.references[i];t.writeUint32(s.reference_type<<31|s.referenced_size),t.writeUint32(s.subsegment_duration),t.writeUint32(s.starts_with_SAP<<31|s.SAP_type<<28|s.SAP_delta_time)}}},pi.fourcc="sidx",pi),Ia=(_i=class extends d{constructor(){super(...arguments),this.box_name="SoundMediaHeaderBox"}parse(t){this.parseFullHeader(t),this.balance=t.readUint16(),t.readUint16()}write(t){this.version=0,this.size=4,this.writeHeader(t),t.writeUint16(this.balance),t.writeUint16(0)}},_i.fourcc="smhd",_i),Ta=(mi=class extends d{constructor(){super(...arguments),this.box_name="ChunkOffsetBox"}parse(t){this.parseFullHeader(t);const e=t.readUint32();if(this.chunk_offsets=[],this.version===0)for(let i=0;i<e;i++)this.chunk_offsets.push(t.readUint32())}write(t){this.version=0,this.flags=0,this.size=4+4*this.chunk_offsets.length,this.writeHeader(t),t.writeUint32(this.chunk_offsets.length),t.writeUint32Array(this.chunk_offsets)}unpack(t){for(let e=0;e<this.chunk_offsets.length;e++)t[e].offset=this.chunk_offsets[e]}},mi.fourcc="stco",mi),Ca=(gi=class extends d{constructor(){super(...arguments),this.box_name="SubtitleMediaHeaderBox"}},gi.fourcc="sthd",gi),Aa=(xi=class extends d{constructor(){super(...arguments),this.box_name="SampleToChunkBox"}parse(t){this.parseFullHeader(t);const e=t.readUint32();if(this.first_chunk=[],this.samples_per_chunk=[],this.sample_description_index=[],this.version===0)for(let i=0;i<e;i++)this.first_chunk.push(t.readUint32()),this.samples_per_chunk.push(t.readUint32()),this.sample_description_index.push(t.readUint32())}write(t){this.version=0,this.flags=0,this.size=4+12*this.first_chunk.length,this.writeHeader(t),t.writeUint32(this.first_chunk.length);for(let e=0;e<this.first_chunk.length;e++)t.writeUint32(this.first_chunk[e]),t.writeUint32(this.samples_per_chunk[e]),t.writeUint32(this.sample_description_index[e])}unpack(t){let e=0,i=0;for(let s=0;s<this.first_chunk.length;s++)for(let n=0;n<(s+1<this.first_chunk.length?this.first_chunk[s+1]:1/0);n++){i++;for(let a=0;a<this.samples_per_chunk[s];a++){if(t[e])t[e].description_index=this.sample_description_index[s],t[e].chunk_index=i;else return;e++}}}},xi.fourcc="stsc",xi),Pa=(yi=class extends d{constructor(){super(...arguments),this.box_name="SampleDescriptionBox"}parse(t){this.parseFullHeader(t),this.entries=[];const e=t.readUint32();for(let i=1;i<=e;i++){const s=M(t,!0,this.size-(t.getPosition()-this.start));if(s.code===H){let n;s.type in D.sampleEntry?(n=new D.sampleEntry[s.type](s.size),n.hdr_size=s.hdr_size,n.start=s.start):(l.warn("BoxParser",`Unknown sample entry type: \'${s.type}\'`),n=new V(s.size,s.hdr_size,s.start),n.type=s.type),n.write===V.prototype.write&&(l.info("BoxParser","SampleEntry "+n.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),n.parseDataAndRewind(t)),n.parse(t),this.entries.push(n)}else return}}write(t){this.version=0,this.flags=0,this.size=0,this.writeHeader(t),t.writeUint32(this.entries.length),this.size+=4;for(let e=0;e<this.entries.length;e++)this.entries[e].write(t),this.size+=this.entries[e].size;l.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),t.adjustUint32(this.sizePosition,this.size)}},yi.fourcc="stsd",yi),Fa=(bi=class extends d{constructor(){super(...arguments),this.box_name="SampleSizeBox"}parse(t){if(this.parseFullHeader(t),this.sample_sizes=[],this.version===0){this.sample_size=t.readUint32(),this.sample_count=t.readUint32();for(let e=0;e<this.sample_count;e++)this.sample_size===0?this.sample_sizes.push(t.readUint32()):this.sample_sizes[e]=this.sample_size}}write(t){let e=!0;if(this.version=0,this.flags=0,this.sample_sizes.length>0){let i=0;for(;i+1<this.sample_sizes.length;)if(this.sample_sizes[i+1]!==this.sample_sizes[0]){e=!1;break}else i++}else e=!1;this.size=8,e||(this.size+=4*this.sample_sizes.length),this.writeHeader(t),e?t.writeUint32(this.sample_sizes[0]):t.writeUint32(0),t.writeUint32(this.sample_sizes.length),e||t.writeUint32Array(this.sample_sizes)}unpack(t){for(let e=0;e<this.sample_sizes.length;e++)t[e].size=this.sample_sizes[e]}},bi.fourcc="stsz",bi),Da=(vi=class extends d{constructor(){super(...arguments),this.box_name="TimeToSampleBox",this.sample_counts=[],this.sample_deltas=[]}parse(t){this.parseFullHeader(t);const e=t.readUint32();if(this.sample_counts.length=0,this.sample_deltas.length=0,this.version===0)for(let i=0;i<e;i++){this.sample_counts.push(t.readUint32());let s=t.readInt32();s<0&&(l.warn("BoxParser","File uses negative stts sample delta, using value 1 instead, sync may be lost!"),s=1),this.sample_deltas.push(s)}}write(t){this.version=0,this.flags=0,this.size=4+8*this.sample_counts.length,this.writeHeader(t),t.writeUint32(this.sample_counts.length);for(let e=0;e<this.sample_counts.length;e++)t.writeUint32(this.sample_counts[e]),t.writeUint32(this.sample_deltas[e])}unpack(t){let e=0;for(let i=0;i<this.sample_counts.length;i++)for(let s=0;s<this.sample_counts[i];s++)e===0?t[e].dts=0:t[e].dts=t[e-1].dts+this.sample_deltas[i],e++}},vi.fourcc="stts",vi),La=(Ui=class extends d{constructor(){super(...arguments),this.box_name="TrackFragmentBaseMediaDecodeTimeBox"}parse(t){this.parseFullHeader(t),this.version===1?this.baseMediaDecodeTime=t.readUint64():this.baseMediaDecodeTime=t.readUint32()}write(t){const e=this.baseMediaDecodeTime>S||this.version===1;this.version=e?1:0,this.size=4,this.size+=e?4:0,this.flags=0,this.writeHeader(t),e?t.writeUint64(this.baseMediaDecodeTime):t.writeUint32(this.baseMediaDecodeTime)}},Ui.fourcc="tfdt",Ui),Ha=(Si=class extends d{constructor(){super(...arguments),this.box_name="TrackFragmentHeaderBox"}parse(t){this.parseFullHeader(t);let e=0;this.track_id=t.readUint32(),this.size-this.hdr_size>e&&this.flags&Un?(this.base_data_offset=t.readUint64(),e+=8):this.base_data_offset=0,this.size-this.hdr_size>e&&this.flags&Sn?(this.default_sample_description_index=t.readUint32(),e+=4):this.default_sample_description_index=0,this.size-this.hdr_size>e&&this.flags&Bn?(this.default_sample_duration=t.readUint32(),e+=4):this.default_sample_duration=0,this.size-this.hdr_size>e&&this.flags&wn?(this.default_sample_size=t.readUint32(),e+=4):this.default_sample_size=0,this.size-this.hdr_size>e&&this.flags&zn?(this.default_sample_flags=t.readUint32(),e+=4):this.default_sample_flags=0}write(t){this.version=0,this.size=4,this.flags&Un&&(this.size+=8),this.flags&Sn&&(this.size+=4),this.flags&Bn&&(this.size+=4),this.flags&wn&&(this.size+=4),this.flags&zn&&(this.size+=4),this.writeHeader(t),t.writeUint32(this.track_id),this.flags&Un&&t.writeUint64(this.base_data_offset),this.flags&Sn&&t.writeUint32(this.default_sample_description_index),this.flags&Bn&&t.writeUint32(this.default_sample_duration),this.flags&wn&&t.writeUint32(this.default_sample_size),this.flags&zn&&t.writeUint32(this.default_sample_flags)}},Si.fourcc="tfhd",Si),Oa=(Bi=class extends d{constructor(){super(...arguments),this.box_name="TrackHeaderBox",this.layer=0,this.alternate_group=0}parse(t){this.parseFullHeader(t),this.version===1?(this.creation_time=t.readUint64(),this.modification_time=t.readUint64(),this.track_id=t.readUint32(),t.readUint32(),this.duration=t.readUint64()):(this.creation_time=t.readUint32(),this.modification_time=t.readUint32(),this.track_id=t.readUint32(),t.readUint32(),this.duration=t.readUint32()),t.readUint32Array(2),this.layer=t.readInt16(),this.alternate_group=t.readInt16(),this.volume=t.readInt16()>>8,t.readUint16(),this.matrix=t.readInt32Array(9),this.width=t.readUint32(),this.height=t.readUint32()}write(t){const e=this.modification_time>S||this.creation_time>S||this.duration>S||this.version===1;this.version=e?1:0,this.size=80,this.size+=e?12:0,this.flags=this.flags??3,this.writeHeader(t),e?(t.writeUint64(this.creation_time),t.writeUint64(this.modification_time),t.writeUint32(this.track_id),t.writeUint32(0),t.writeUint64(this.duration)):(t.writeUint32(this.creation_time),t.writeUint32(this.modification_time),t.writeUint32(this.track_id),t.writeUint32(0),t.writeUint32(this.duration)),t.writeUint32Array([0,0]),t.writeInt16(this.layer),t.writeInt16(this.alternate_group),t.writeInt16(this.volume<<8),t.writeInt16(0),t.writeInt32Array(this.matrix),t.writeUint32(this.width),t.writeUint32(this.height)}print(t){super.printHeader(t),t.log(t.indent+"creation_time: "+this.creation_time),t.log(t.indent+"modification_time: "+this.modification_time),t.log(t.indent+"track_id: "+this.track_id),t.log(t.indent+"duration: "+this.duration),t.log(t.indent+"volume: "+(this.volume>>8)),t.log(t.indent+"matrix: "+this.matrix.join(", ")),t.log(t.indent+"layer: "+this.layer),t.log(t.indent+"alternate_group: "+this.alternate_group),t.log(t.indent+"width: "+this.width),t.log(t.indent+"height: "+this.height)}},Bi.fourcc="tkhd",Bi),jn=(wi=class extends d{constructor(){super(...arguments),this.box_name="TrackExtendsBox"}parse(t){this.parseFullHeader(t),this.track_id=t.readUint32(),this.default_sample_description_index=t.readUint32(),this.default_sample_duration=t.readUint32(),this.default_sample_size=t.readUint32(),this.default_sample_flags=t.readUint32()}write(t){this.version=0,this.flags=0,this.size=20,this.writeHeader(t),t.writeUint32(this.track_id),t.writeUint32(this.default_sample_description_index),t.writeUint32(this.default_sample_duration),t.writeUint32(this.default_sample_size),t.writeUint32(this.default_sample_flags)}},wi.fourcc="trex",wi),Ra=(zi=class extends d{constructor(){super(...arguments),this.box_name="TrackRunBox",this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[]}parse(t){this.parseFullHeader(t);let e=0;if(this.sample_count=t.readUint32(),e+=4,this.size-this.hdr_size>e&&this.flags&un?(this.data_offset=t.readInt32(),e+=4):this.data_offset=0,this.size-this.hdr_size>e&&this.flags&En?(this.first_sample_flags=t.readUint32(),e+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>e)for(let i=0;i<this.sample_count;i++)this.flags&pn&&(this.sample_duration[i]=t.readUint32()),this.flags&_n&&(this.sample_size[i]=t.readUint32()),this.flags&mn&&(this.sample_flags[i]=t.readUint32()),this.flags&gn&&(this.version===0?this.sample_composition_time_offset[i]=t.readUint32():this.sample_composition_time_offset[i]=t.readInt32())}write(t){this.size=4,this.flags&un&&(this.size+=4),this.flags&En&&(this.size+=4),this.flags&pn&&(this.size+=4*this.sample_duration.length),this.flags&_n&&(this.size+=4*this.sample_size.length),this.flags&mn&&(this.size+=4*this.sample_flags.length),this.flags&gn&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(t),t.writeUint32(this.sample_count),this.flags&un&&(this.data_offset_position=t.getPosition(),t.writeInt32(this.data_offset)),this.flags&En&&t.writeUint32(this.first_sample_flags);for(let e=0;e<this.sample_count;e++)this.flags&pn&&t.writeUint32(this.sample_duration[e]),this.flags&_n&&t.writeUint32(this.sample_size[e]),this.flags&mn&&t.writeUint32(this.sample_flags[e]),this.flags&gn&&(this.version===0?t.writeUint32(this.sample_composition_time_offset[e]):t.writeInt32(this.sample_composition_time_offset[e]))}},zi.fourcc="trun",zi),Ma=(Ei=class extends d{constructor(){super(...arguments),this.box_name="DataEntryUrlBox"}parse(t){this.parseFullHeader(t),this.flags!==1&&(this.location=t.readCString())}write(t){this.version=0,this.location?(this.flags=0,this.size=this.location.length+1):(this.flags=1,this.size=0),this.writeHeader(t),this.location&&t.writeCString(this.location)}},Ei.fourcc="url ",Ei),Na=(ki=class extends d{constructor(){super(...arguments),this.box_name="VideoMediaHeaderBox"}parse(t){this.parseFullHeader(t),this.graphicsmode=t.readUint16(),this.opcolor=t.readUint16Array(3)}write(t){this.version=0,this.size=8,this.writeHeader(t),t.writeUint16(this.graphicsmode),t.writeUint16Array(this.opcolor)}},ki.fourcc="vmhd",ki),$n=class{constructor(r,t,e){this.grouping_type=r,this.grouping_type_parameter=t,this.sbgp=e,this.last_sample_in_run=-1,this.entry_index=-1}},rc=class Q{constructor(t,e=!0){this.boxes=[],this.mdats=[],this.moofs=[],this.isProgressive=!1,this.moovStartFound=!1,this.moovStartSent=!1,this.readySent=!1,this.sampleListBuilt=!1,this.fragmentedTracks=[],this.extractedTracks=[],this.isFragmentationInitialized=!1,this.sampleProcessingStarted=!1,this.nextMoofNumber=0,this.itemListBuilt=!1,this.sidxSent=!1,this.items=[],this.entity_groups=[],this.itemsDataSize=0,this.lastMoofIndex=0,this.samplesDataSize=0,this.lastBoxStartPosition=0,this.nextParsePosition=0,this.discardMdatData=!0,this.discardMdatData=e,t?(this.stream=t,this.parse()):this.stream=new Tn,this.stream.isofile=this}setSegmentOptions(t,e,i){const{sizePerSegment:s=Number.MAX_SAFE_INTEGER,rapAlignement:n=!0}=i;let a=i.nbSamples??i.nbSamplesPerFragment??1e3;const o=i.nbSamplesPerFragment??a;if(a<=0||o<=0||s<=0){l.error("ISOFile",`Invalid segment options: nbSamples=${a}, nbSamplesPerFragment=${o}, sizePerSegment=${s}`);return}if(a<o&&(l.warn("ISOFile",`nbSamples (${a}) is less than nbSamplesPerFragment (${o}), setting nbSamples to nbSamplesPerFragment`),a=o),this.fragmentedTracks.some(c=>c.nb_samples!==a)){l.error("ISOFile",`Cannot set segment options for track ${t}: nbSamples (${a}) does not match existing tracks`);return}const h=this.getTrackById(t);if(h){const c={id:t,user:e,trak:h,segmentStream:void 0,nb_samples:a,nb_samples_per_fragment:o,size_per_segment:s,rapAlignement:n,state:{lastFragmentSampleNumber:0,lastSegmentSampleNumber:0,accumulatedSize:0}};this.fragmentedTracks.push(c),h.nextSample=0}this.discardMdatData&&l.warn("ISOFile","Segmentation options set but discardMdatData is true, samples will not be segmented")}unsetSegmentOptions(t){let e=-1;for(let i=0;i<this.fragmentedTracks.length;i++)this.fragmentedTracks[i].id===t&&(e=i);e>-1&&this.fragmentedTracks.splice(e,1)}setExtractionOptions(t,e,{nbSamples:i=1e3}={}){const s=this.getTrackById(t);s&&(this.extractedTracks.push({id:t,user:e,trak:s,nb_samples:i,samples:[]}),s.nextSample=0),this.discardMdatData&&l.warn("ISOFile","Extraction options set but discardMdatData is true, samples will not be extracted")}unsetExtractionOptions(t){let e=-1;for(let i=0;i<this.extractedTracks.length;i++)this.extractedTracks[i].id===t&&(e=i);e>-1&&this.extractedTracks.splice(e,1)}parse(){if(!(this.restoreParsePosition&&!this.restoreParsePosition()))for(;;)if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}else{this.saveParsePosition&&this.saveParsePosition();const e=M(this.stream,!1);if(e.code===$)if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}else return;else if(e.code===H){const i=e.box;if(this.boxes.push(i),i.type==="uuid")this[i.uuid]!==void 0&&l.warn("ISOFile","Duplicate Box of uuid: "+i.uuid+", overriding previous occurrence"),this[i.uuid]=i;else switch(i.type){case"mdat":this.mdats.push(i),this.transferMdatData(i);break;case"moof":this.moofs.push(i);break;case"free":case"skip":break;case"moov":this.moovStartFound=!0,this.mdats.length===0&&(this.isProgressive=!0);default:this[i.type]!==void 0?Array.isArray(this[i.type+"s"])?(l.info("ISOFile",`Found multiple boxes of type ${i.type} in ISOFile, adding to array`),this[i.type+"s"].push(i)):(l.warn("ISOFile",`Found multiple boxes of type ${i.type} but no array exists. Creating array dynamically.`),this[i.type+"s"]=[this[i.type],i]):(this[i.type]=i,Array.isArray(this[i.type+"s"])&&this[i.type+"s"].push(i));break}this.updateUsedBytes&&this.updateUsedBytes(i,e)}else if(e.code===ta){l.error("ISOFile",`Invalid data found while parsing box of type \'${e.type}\' at position ${e.start}. Aborting parsing.`,this);break}}}checkBuffer(t){if(!t)throw new Error("Buffer must be defined and non empty");return t.byteLength===0?(l.warn("ISOFile","Ignoring empty buffer (fileStart: "+t.fileStart+")"),this.stream.logBufferLevel(),!1):(l.info("ISOFile","Processing buffer (fileStart: "+t.fileStart+")"),t.usedBytes=0,this.stream.insertBuffer(t),this.stream.logBufferLevel(),this.stream.initialized()?!0:(l.warn("ISOFile","Not ready to start parsing"),!1))}appendBuffer(t,e){let i;if(this.checkBuffer(t))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(e),this.nextSeekPosition?(i=this.nextSeekPosition,this.nextSeekPosition=void 0):i=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(i=this.stream.getEndFilePositionAfter(i))):this.nextParsePosition?i=this.nextParsePosition:i=0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(l.info("ISOFile","Done processing buffer (fileStart: "+t.fileStart+") - next buffer to fetch should have a fileStart position of "+i),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),l.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),i}getFragmentDuration(){const t=this.getBox("mvex");if(!t)return;if(t.mehd)return{num:t.mehd.fragment_duration,den:this.moov.mvhd.timescale};const e=this.getBoxes("trak",!1);let i={num:0,den:1};for(const s of e){const n=s.samples_duration,a=s.mdia.mdhd.timescale;n&&a&&n/a>i.num/i.den&&(i={num:n,den:a})}return i}getInfo(){if(!this.moov)return{hasMoov:!1,mime:""};const t=new Date("1904-01-01T00:00:00Z").getTime(),e=this.getBox("mvex")!==void 0,i={hasMoov:!0,duration:this.moov.mvhd.duration,timescale:this.moov.mvhd.timescale,isFragmented:e,fragment_duration:this.getFragmentDuration(),isProgressive:this.isProgressive,hasIOD:this.moov.iods!==void 0,brands:[this.ftyp.major_brand].concat(this.ftyp.compatible_brands),created:new Date(t+this.moov.mvhd.creation_time*1e3),modified:new Date(t+this.moov.mvhd.modification_time*1e3),tracks:[],audioTracks:[],videoTracks:[],subtitleTracks:[],metadataTracks:[],hintTracks:[],otherTracks:[],mime:""};for(let s=0;s<this.moov.traks.length;s++){const n=this.moov.traks[s],a=n.mdia.minf.stbl.stsd.entries[0],o=n.samples_size,h=n.mdia.mdhd.timescale,c=n.samples_duration,f=o*8*h/c,u={samples_duration:c,bitrate:f,size:o,timescale:h,alternate_group:n.tkhd.alternate_group,codec:a.getCodec(),created:new Date(t+n.tkhd.creation_time*1e3),cts_shift:n.mdia.minf.stbl.cslg,duration:n.mdia.mdhd.duration,id:n.tkhd.track_id,kind:n.udta&&n.udta.kinds.length?n.udta.kinds[0]:{schemeURI:"",value:""},language:n.mdia.elng?n.mdia.elng.extended_language:n.mdia.mdhd.languageString,layer:n.tkhd.layer,matrix:n.tkhd.matrix,modified:new Date(t+n.tkhd.modification_time*1e3),movie_duration:n.tkhd.duration,movie_timescale:i.timescale,name:n.mdia.hdlr.name,nb_samples:n.samples.length,references:[],track_height:n.tkhd.height/65536,track_width:n.tkhd.width/65536,volume:n.tkhd.volume};if(i.tracks.push(u),n.tref)for(let m=0;m<n.tref.references.length;m++)u.references.push({type:n.tref.references[m].type,track_ids:n.tref.references[m].track_ids});n.edts!==void 0&&n.edts.elst!==void 0&&(u.edits=n.edts.elst.entries),a instanceof L?(u.type="audio",i.audioTracks.push(u),u.audio={sample_rate:a.getSampleRate(),channel_count:a.getChannelCount(),sample_size:a.getSampleSize()}):a instanceof U?(u.type="video",i.videoTracks.push(u),u.video={width:a.getWidth(),height:a.getHeight()}):a instanceof J?(u.type="subtitles",i.subtitleTracks.push(u)):a instanceof aa?(u.type="metadata",i.hintTracks.push(u)):a instanceof it?(u.type="metadata",i.metadataTracks.push(u)):(u.type="metadata",i.otherTracks.push(u))}i.videoTracks&&i.videoTracks.length>0?i.mime+=\'video/mp4; codecs="\':i.audioTracks&&i.audioTracks.length>0?i.mime+=\'audio/mp4; codecs="\':i.mime+=\'application/mp4; codecs="\';for(let s=0;s<i.tracks.length;s++)s!==0&&(i.mime+=","),i.mime+=i.tracks[s].codec;return i.mime+=\'"; profiles="\',i.mime+=this.ftyp.compatible_brands.join(),i.mime+=\'"\',i}setNextSeekPositionFromSample(t){t&&(this.nextSeekPosition?this.nextSeekPosition=Math.min(t.offset+t.alreadyRead,this.nextSeekPosition):this.nextSeekPosition=t.offset+t.alreadyRead)}processSamples(t){if(this.sampleProcessingStarted){if(this.isFragmentationInitialized&&this.onSegment!==void 0){const e=new Set;for(;e.size<this.fragmentedTracks.length&&this.fragmentedTracks.some(i=>i.trak.nextSample<i.trak.samples.length)&&this.sampleProcessingStarted;)for(const i of this.fragmentedTracks){const s=i.trak;if(!e.has(i.id)){const n=s.nextSample<s.samples.length?this.getSample(s,s.nextSample):void 0;if(!n){this.setNextSeekPositionFromSample(s.samples[s.nextSample]),e.add(i.id);continue}i.state.accumulatedSize+=n.size;const a=s.nextSample+1,o=a-i.state.lastFragmentSampleNumber>i.nb_samples_per_fragment,h=a-i.state.lastSegmentSampleNumber>i.nb_samples;let c=o||a%i.nb_samples_per_fragment===0,f=h||a%i.nb_samples===0,u=i.state.accumulatedSize>=i.size_per_segment;const m=!i.rapAlignement||n.is_sync,_=t||s.nextSample+1>=s.samples.length;if(_&&!m&&l.warn("ISOFile","Flushing track #"+i.id+" at sample #"+s.nextSample+" which is not a RAP, this may lead to playback issues"),c=c&&m,f=f&&m,u=u&&m,c||u||_){o?l.warn("ISOFile","Fragment on track #"+i.id+" is overdue, creating it with samples ["+i.state.lastFragmentSampleNumber+", "+s.nextSample+"]"):l.debug("ISOFile","Creating media fragment on track #"+i.id+" for samples ["+i.state.lastFragmentSampleNumber+", "+s.nextSample+"]");const g=this.createFragment(i.id,i.state.lastFragmentSampleNumber,s.nextSample,i.segmentStream);if(g)i.segmentStream=g,i.state.lastFragmentSampleNumber=s.nextSample+1;else{e.add(i.id);continue}}(f||u||_)&&(h?l.warn("ISOFile","Segment on track #"+i.id+" is overdue, sending it with samples ["+Math.max(0,s.nextSample-i.nb_samples)+", "+(s.nextSample-1)+"]"):l.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,s.nextSample-i.nb_samples)+", "+(s.nextSample-1)+"]"),l.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(i.id,i.user,i.segmentStream.buffer,s.nextSample+1,t||s.nextSample+1>=s.samples.length),i.segmentStream=void 0,i.state.accumulatedSize=0,i.state.lastSegmentSampleNumber=s.nextSample+1),s.nextSample++}}}if(this.onSamples!==void 0)for(let e=0;e<this.extractedTracks.length;e++){const i=this.extractedTracks[e],s=i.trak;for(;s.nextSample<s.samples.length&&this.sampleProcessingStarted;){l.debug("ISOFile","Exporting on track #"+i.id+" sample #"+s.nextSample);const n=this.getSample(s,s.nextSample);if(n)s.nextSample++,i.samples.push(n);else{this.setNextSeekPositionFromSample(s.samples[s.nextSample]);break}if((s.nextSample%i.nb_samples===0||s.nextSample>=s.samples.length)&&(l.debug("ISOFile","Sending samples on track #"+i.id+" for sample "+s.nextSample),this.onSamples&&this.onSamples(i.id,i.user,i.samples),i.samples=[],i!==this.extractedTracks[e]))break}}}}getBox(t){const e=this.getBoxes(t,!0);return e.length?e[0]:void 0}getBoxes(t,e){const i=[],s=n=>{n instanceof p&&n.type&&n.type===t&&i.push(n);const a=[];n.boxes&&a.push(...n.boxes),n.entries&&a.push(...n.entries),n.item_infos&&a.push(...n.item_infos),n.references&&a.push(...n.references);for(const o of a){if(i.length&&e)return;s(o)}};return s(this),i}getTrackSamplesInfo(t){const e=this.getTrackById(t);if(e)return e.samples}getTrackSample(t,e){const i=this.getTrackById(t);return this.getSample(i,e)}releaseUsedSamples(t,e){let i=0;const s=this.getTrackById(t);s.lastValidSample||(s.lastValidSample=0);for(let n=s.lastValidSample;n<e;n++)i+=this.releaseSample(s,n);l.info("ISOFile","Track #"+t+" released samples up to "+e+" (released size: "+i+", remaining: "+this.samplesDataSize+")"),s.lastValidSample=e}start(){this.sampleProcessingStarted=!0,this.processSamples(!1)}stop(){this.sampleProcessingStarted=!1}flush(){l.info("ISOFile","Flushing remaining samples"),this.updateSampleLists(),this.processSamples(!0),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0)}seekTrack(t,e,i){let s=0,n=0,a;if(i.samples.length===0)return l.info("ISOFile","No sample in track, cannot seek! Using time "+l.getDurationString(0,1)+" and offset: 0"),{offset:0,time:0};for(let h=0;h<i.samples.length;h++){const c=i.samples[h];if(h===0)n=0,a=c.timescale;else if(c.cts>t*c.timescale){n=h-1;break}e&&c.is_sync&&(s=h)}for(e&&(n=s),t=i.samples[n].cts,i.nextSample=n;i.samples[n].alreadyRead===i.samples[n].size&&i.samples[n+1];)n++;const o=i.samples[n].offset+i.samples[n].alreadyRead;return l.info("ISOFile","Seeking to "+(e?"RAP":"")+" sample #"+i.nextSample+" on track "+i.tkhd.track_id+", time "+l.getDurationString(t,a)+" and offset: "+o),{offset:o,time:t/a}}getTrackDuration(t){if(!t.samples)return 1/0;const e=t.samples[t.samples.length-1];return(e.cts+e.duration)/e.timescale}seek(t,e){const i=this.moov;let s={offset:1/0,time:1/0};if(this.moov){for(let n=0;n<i.traks.length;n++){const a=i.traks[n];if(t>this.getTrackDuration(a))continue;const o=this.seekTrack(t,e,a);o.offset<s.offset&&(s.offset=o.offset),o.time<s.time&&(s.time=o.time)}return l.info("ISOFile","Seeking at time "+l.getDurationString(s.time,1)+" needs a buffer with a fileStart position of "+s.offset),s.offset===1/0?s={offset:this.nextParsePosition,time:0}:s.offset=this.stream.getEndFilePositionAfter(s.offset),l.info("ISOFile","Adjusted seek position (after checking data already in buffer): "+s.offset),s}else throw new Error("Cannot seek: moov not received!")}equal(t){let e=0;for(;e<this.boxes.length&&e<t.boxes.length;){const i=this.boxes[e],s=t.boxes[e];if(!na(i,s))return!1;e++}return!0}write(t){for(let e=0;e<this.boxes.length;e++)this.boxes[e].write(t)}createFragment(t,e,i,s){const n=[];for(let f=e;f<=i;f++){const u=this.getTrackById(t),m=this.getSample(u,f);if(!m){this.setNextSeekPositionFromSample(u.samples[f]);return}n.push(m)}const a=s||new O,o=this.createMoof(n);o.write(a),o.trafs[0].truns[0].data_offset=o.size+8,l.debug("MP4Box","Adjusting data_offset with new value "+o.trafs[0].truns[0].data_offset),a.adjustUint32(o.trafs[0].truns[0].data_offset_position,o.trafs[0].truns[0].data_offset);const h=new An;h.stream=new Tn;let c=0;for(const f of n)if(f.data){const u=q.fromArrayBuffer(f.data.buffer,c);h.stream.insertBuffer(u),c+=f.data.byteLength}return h.write(a),a}static writeInitializationSegment(t,e,i){l.debug("ISOFile","Generating initialization segment");const s=new O;t.write(s);const n=e.addBox(new Vn);if(i){const a=n.addBox(new Sa);a.fragment_duration=i}for(let a=0;a<e.traks.length;a++){const o=n.addBox(new jn);o.track_id=e.traks[a].tkhd.track_id,o.default_sample_description_index=1,o.default_sample_duration=e.traks[a].samples[0]?.duration??0,o.default_sample_size=0,o.default_sample_flags=65536}return e.write(s),s.buffer}save(t){const e=new O;return e.isofile=this,this.write(e),e.save(t)}getBuffer(){const t=new O;return t.isofile=this,this.write(t),t}initializeSegmentation(){this.onSegment||l.warn("MP4Box","No segmentation callback set!"),this.isFragmentationInitialized||(this.isFragmentationInitialized=!0,this.resetTables());const t=new Gn;t.addBox(this.moov.mvhd);for(let e=0;e<this.fragmentedTracks.length;e++){const i=this.getTrackById(this.fragmentedTracks[e].id);if(!i){l.warn("ISOFile",`Track with id ${this.fragmentedTracks[e].id} not found, skipping fragmentation initialization`);continue}t.addBox(i)}return{tracks:t.traks.map((e,i)=>({id:e.tkhd.track_id,user:this.fragmentedTracks[i].user})),buffer:Q.writeInitializationSegment(this.ftyp,t,this.moov?.mvex?.mehd.fragment_duration)}}resetTables(){this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0;for(let t=0;t<this.moov.traks.length;t++){const e=this.moov.traks[t];e.tkhd.duration=0,e.mdia.mdhd.duration=0;const i=e.mdia.minf.stbl.stco||e.mdia.minf.stbl.co64;i.chunk_offsets=[];const s=e.mdia.minf.stbl.stsc;s.first_chunk=[],s.samples_per_chunk=[],s.sample_description_index=[];const n=e.mdia.minf.stbl.stsz||e.mdia.minf.stbl.stz2;n.sample_sizes=[];const a=e.mdia.minf.stbl.stts;a.sample_counts=[],a.sample_deltas=[];const o=e.mdia.minf.stbl.ctts;o&&(o.sample_counts=[],o.sample_offsets=[]);const h=e.mdia.minf.stbl.stss,c=e.mdia.minf.stbl.boxes.indexOf(h);c!==-1&&(e.mdia.minf.stbl.boxes[c]=void 0)}}static initSampleGroups(t,e,i,s,n){e&&(e.sample_groups_info=[]),t.sample_groups_info||(t.sample_groups_info=[]);for(let a=0;a<i.length;a++){const o=i[a].grouping_type+"/"+i[a].grouping_type_parameter,h=new $n(i[a].grouping_type,i[a].grouping_type_parameter,i[a]);e&&(e.sample_groups_info[o]=h),t.sample_groups_info[o]||(t.sample_groups_info[o]=h);for(let c=0;c<s.length;c++)s[c].grouping_type===i[a].grouping_type&&(h.description=s[c],h.description.used=!0);if(n)for(let c=0;c<n.length;c++)n[c].grouping_type===i[a].grouping_type&&(h.fragment_description=n[c],h.fragment_description.used=!0,h.is_fragment=!0)}if(e){if(n){for(let a=0;a<n.length;a++)if(!n[a].used&&n[a].version>=2){const o=n[a].grouping_type+"/0",h=new $n(n[a].grouping_type,0);h.is_fragment=!0,e.sample_groups_info[o]||(e.sample_groups_info[o]=h)}}}else for(let a=0;a<s.length;a++)if(!s[a].used&&s[a].version>=2){const o=s[a].grouping_type+"/0",h=new $n(s[a].grouping_type,0);t.sample_groups_info[o]||(t.sample_groups_info[o]=h)}}static setSampleGroupProperties(t,e,i,s){e.sample_groups=[];for(const n in s)if(e.sample_groups[n]={grouping_type:s[n].grouping_type,grouping_type_parameter:s[n].grouping_type_parameter},i>=s[n].last_sample_in_run&&(s[n].last_sample_in_run<0&&(s[n].last_sample_in_run=0),s[n].entry_index++,s[n].entry_index<=s[n].sbgp.entries.length-1&&(s[n].last_sample_in_run+=s[n].sbgp.entries[s[n].entry_index].sample_count)),s[n].entry_index<=s[n].sbgp.entries.length-1?e.sample_groups[n].group_description_index=s[n].sbgp.entries[s[n].entry_index].group_description_index:e.sample_groups[n].group_description_index=-1,e.sample_groups[n].group_description_index!==0){let a;if(s[n].fragment_description?a=s[n].fragment_description:a=s[n].description,e.sample_groups[n].group_description_index>0){let o;e.sample_groups[n].group_description_index>65535?o=(e.sample_groups[n].group_description_index>>16)-1:o=e.sample_groups[n].group_description_index-1,a&&o>=0&&(e.sample_groups[n].description=a.entries[o])}else a&&a.version>=2&&a.default_group_description_index>0&&(e.sample_groups[n].description=a.entries[a.default_group_description_index-1])}}static process_sdtp(t,e,i){e&&(t?(e.is_leading=t.is_leading[i],e.depends_on=t.sample_depends_on[i],e.is_depended_on=t.sample_is_depended_on[i],e.has_redundancy=t.sample_has_redundancy[i]):(e.is_leading=0,e.depends_on=0,e.is_depended_on=0,e.has_redundancy=0))}buildSampleLists(){for(let t=0;t<this.moov.traks.length;t++)this.buildTrakSampleLists(this.moov.traks[t])}buildTrakSampleLists(t){let e,i,s,n,a,o;t.samples=[],t.samples_duration=0,t.samples_size=0;const h=t.mdia.minf.stbl.stco||t.mdia.minf.stbl.co64,c=t.mdia.minf.stbl.stsc,f=t.mdia.minf.stbl.stsz||t.mdia.minf.stbl.stz2,u=t.mdia.minf.stbl.stts,m=t.mdia.minf.stbl.ctts,_=t.mdia.minf.stbl.stss,g=t.mdia.minf.stbl.stsd,x=t.mdia.minf.stbl.subs,B=t.mdia.minf.stbl.stdp,w=t.mdia.minf.stbl.sbgps,I=t.mdia.minf.stbl.sgpds;let F=-1,K=-1,R=-1,z=-1,j=0,P=0,N=0;if(Q.initSampleGroups(t,void 0,w,I),!(typeof f>"u")){for(e=0;e<f.sample_sizes.length;e++){const b={number:e,track_id:t.tkhd.track_id,timescale:t.mdia.mdhd.timescale,alreadyRead:0,size:f.sample_sizes[e]};t.samples[e]=b,t.samples_size+=b.size,e===0?(s=1,i=0,b.chunk_index=s,b.chunk_run_index=i,o=c.samples_per_chunk[i],a=0,i+1<c.first_chunk.length?n=c.first_chunk[i+1]-1:n=1/0):e<o?(b.chunk_index=s,b.chunk_run_index=i):(s++,b.chunk_index=s,a=0,s<=n||(i++,i+1<c.first_chunk.length?n=c.first_chunk[i+1]-1:n=1/0),b.chunk_run_index=i,o+=c.samples_per_chunk[i]),b.description_index=c.sample_description_index[b.chunk_run_index]-1,b.description=g.entries[b.description_index],b.offset=h.chunk_offsets[b.chunk_index-1]+a,a+=b.size,e>F&&(K++,F<0&&(F=0),F+=u.sample_counts[K]),e>0?(t.samples[e-1].duration=u.sample_deltas[K],t.samples_duration+=t.samples[e-1].duration,b.dts=t.samples[e-1].dts+t.samples[e-1].duration):b.dts=0,m?(e>=R&&(z++,R<0&&(R=0),R+=m.sample_counts[z]),b.cts=t.samples[e].dts+m.sample_offsets[z]):b.cts=b.dts,_?(e===_.sample_numbers[j]-1?(b.is_sync=!0,j++):(b.is_sync=!1,b.degradation_priority=0),x&&x.entries[P].sample_delta+N===e+1&&(b.subsamples=x.entries[P].subsamples,N+=x.entries[P].sample_delta,P++)):b.is_sync=!0,Q.process_sdtp(t.mdia.minf.stbl.sdtp,b,b.number),B?b.degradation_priority=B.priority[e]:b.degradation_priority=0,x&&x.entries[P].sample_delta+N===e&&(b.subsamples=x.entries[P].subsamples,N+=x.entries[P].sample_delta),(w.length>0||I.length>0)&&Q.setSampleGroupProperties(t,b,e,t.sample_groups_info)}e>0&&(t.samples[e-1].duration=Math.max(t.mdia.mdhd.duration-t.samples[e-1].dts,0),t.samples_duration+=t.samples[e-1].duration)}}updateSampleLists(){let t,e,i,s,n;if(this.moov!==void 0)for(;this.lastMoofIndex<this.moofs.length;){const a=this.moofs[this.lastMoofIndex];if(this.lastMoofIndex++,a.type==="moof"){const o=a;for(let h=0;h<o.trafs.length;h++){const c=o.trafs[h],f=this.getTrackById(c.tfhd.track_id),u=this.getTrexById(c.tfhd.track_id);c.tfhd.flags&Sn?t=c.tfhd.default_sample_description_index:t=u?u.default_sample_description_index:1,c.tfhd.flags&Bn?e=c.tfhd.default_sample_duration:e=u?u.default_sample_duration:0,c.tfhd.flags&wn?i=c.tfhd.default_sample_size:i=u?u.default_sample_size:0,c.tfhd.flags&zn?s=c.tfhd.default_sample_flags:s=u?u.default_sample_flags:0,c.sample_number=0,c.sbgps.length>0&&Q.initSampleGroups(f,c,c.sbgps,f.mdia.minf.stbl.sgpds,c.sgpds);for(let m=0;m<c.truns.length;m++){const _=c.truns[m];for(let g=0;g<_.sample_count;g++){const x=t-1;let B=s;_.flags&mn?B=_.sample_flags[g]:g===0&&_.flags&En&&(B=_.first_sample_flags);let w=i;_.flags&_n&&(w=_.sample_size[g]),f.samples_size+=w;let I=e;_.flags&pn&&(I=_.sample_duration[g]),f.samples_duration+=I;let F;f.first_traf_merged||g>0?F=f.samples[f.samples.length-1].dts+f.samples[f.samples.length-1].duration:(c.tfdt?F=c.tfdt.baseMediaDecodeTime:F=0,f.first_traf_merged=!0);let K=F;_.flags&gn&&(K=F+_.sample_composition_time_offset[g]);const R=!!(c.tfhd.flags&Un),z=!!(c.tfhd.flags&Zn),j=!!(_.flags&un);let P=0;R?P=c.tfhd.base_data_offset:z||m===0?P=o.start:P=n;let N;m===0&&g===0?j?N=P+_.data_offset:N=P:N=n,n=N+w;const b=c.sample_number;c.sample_number++;const Yn={cts:K,description_index:x,description:f.mdia.minf.stbl.stsd.entries[x],dts:F,duration:I,moof_number:this.lastMoofIndex,number_in_traf:b,number:f.samples.length,offset:N,size:w,timescale:f.mdia.mdhd.timescale,track_id:f.tkhd.track_id,is_sync:!(B>>16&1),is_leading:B>>26&3,depends_on:B>>24&3,is_depended_on:B>>22&3,has_redundancy:B>>20&3,degradation_priority:B&65535};c.first_sample_index=f.samples.length,f.samples.push(Yn),(c.sbgps.length>0||c.sgpds.length>0||f.mdia.minf.stbl.sbgps.length>0||f.mdia.minf.stbl.sgpds.length>0)&&Q.setSampleGroupProperties(f,Yn,Yn.number_in_traf,c.sample_groups_info)}}if(c.subs){f.has_fragment_subsamples=!0;let m=c.first_sample_index;for(let _=0;_<c.subs.entries.length;_++){m+=c.subs.entries[_].sample_delta;const g=f.samples[m-1];g.subsamples=c.subs.entries[_].subsamples}}}}}}getSample(t,e){const i=t.samples[e];if(this.moov){if(!i.data)i.data=new Uint8Array(i.size),i.alreadyRead=0,this.samplesDataSize+=i.size,l.debug("ISOFile","Allocating sample #"+e+" on track #"+t.tkhd.track_id+" of size "+i.size+" (total: "+this.samplesDataSize+")");else if(i.alreadyRead===i.size)return i;for(;;){let s=this.stream,n=s.findPosition(!0,i.offset+i.alreadyRead,!1),a,o;if(n>-1)a=s.buffers[n],o=a.fileStart;else for(const h of this.mdats){if(!h.stream){l.debug("ISOFile","mdat stream not yet fully read for #"+this.mdats.indexOf(h)+" mdat");continue}if(n=h.stream.findPosition(!0,i.offset+i.alreadyRead-h.start-h.hdr_size,!1),n>-1){s=h.stream,a=h.stream.buffers[n],o=h.start+h.hdr_size+a.fileStart;break}}if(a){const h=a.byteLength-(i.offset+i.alreadyRead-o);if(i.size-i.alreadyRead<=h)return l.debug("ISOFile","Getting sample #"+e+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-o)+" read size: "+(i.size-i.alreadyRead)+" full size: "+i.size+")"),O.memcpy(i.data.buffer,i.alreadyRead,a,i.offset+i.alreadyRead-o,i.size-i.alreadyRead),a.usedBytes+=i.size-i.alreadyRead,s.logBufferLevel(),i.alreadyRead=i.size,i;if(h===0)return;l.debug("ISOFile","Getting sample #"+e+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-o)+" read size: "+h+" full size: "+i.size+")"),O.memcpy(i.data.buffer,i.alreadyRead,a,i.offset+i.alreadyRead-o,h),i.alreadyRead+=h,a.usedBytes+=h,s.logBufferLevel()}else return}}}releaseSample(t,e){const i=t.samples[e];return i.data?(this.samplesDataSize-=i.size,i.data=void 0,i.alreadyRead=0,i.size):0}getAllocatedSampleDataSize(){return this.samplesDataSize}getCodecs(){let t="";for(let e=0;e<this.moov.traks.length;e++){const i=this.moov.traks[e];e>0&&(t+=","),t+=i.mdia.minf.stbl.stsd.entries[0].getCodec()}return t}getTrexById(t){if(!(!this.moov||!this.moov.mvex))for(let e=0;e<this.moov.mvex.trexs.length;e++){const i=this.moov.mvex.trexs[e];if(i.track_id===t)return i}}getTrackById(t){if(this.moov)for(let e=0;e<this.moov.traks.length;e++){const i=this.moov.traks[e];if(i.tkhd.track_id===t)return i}}flattenItemInfo(){const t=this.items,e=this.entity_groups,i=this.meta;if(!(!i||!i.hdlr||!i.iinf)){for(let s=0;s<i.iinf.item_infos.length;s++){const n=i.iinf.item_infos[s].item_ID;t[n]={id:n,name:i.iinf.item_infos[s].item_name,ref_to:[],content_type:i.iinf.item_infos[s].content_type,content_encoding:i.iinf.item_infos[s].content_encoding,item_uri_type:i.iinf.item_infos[s].item_uri_type,type:i.iinf.item_infos[s].item_type?i.iinf.item_infos[s].item_type:"mime",protection:i.iinf.item_infos[s].item_protection_index>0?i.ipro.protections[i.iinf.item_infos[s].item_protection_index-1]:void 0}}if(i.grpl)for(let s=0;s<i.grpl.boxes.length;s++){const n=i.grpl.boxes[s];e[n.group_id]={id:n.group_id,entity_ids:n.entity_ids,type:n.type}}if(i.iloc)for(let s=0;s<i.iloc.items.length;s++){const n=i.iloc.items[s],a=t[n.item_ID];n.data_reference_index!==0&&(l.warn("Item storage with reference to other files: not supported"),a.source=i.dinf.boxes[n.data_reference_index-1]),a.extents=[],a.size=0;for(let o=0;o<n.extents.length;o++)a.extents[o]={offset:n.extents[o].extent_offset+n.base_offset,length:n.extents[o].extent_length,alreadyRead:0},n.construction_method===1&&(a.extents[o].offset+=i.idat.start+i.idat.hdr_size),a.size+=a.extents[o].length}if(i.pitm&&(t[i.pitm.item_id].primary=!0),i.iref)for(let s=0;s<i.iref.references.length;s++){const n=i.iref.references[s];for(let a=0;a<n.references.length;a++)t[n.from_item_ID].ref_to.push({type:n.type,id:n.references[a]})}if(i.iprp)for(let s=0;s<i.iprp.ipmas.length;s++){const n=i.iprp.ipmas[s];for(let a=0;a<n.associations.length;a++){const o=n.associations[a],h=t[o.id]??e[o.id];if(h){h.properties===void 0&&(h.properties={boxes:[]});for(let c=0;c<o.props.length;c++){const f=o.props[c];if(f.property_index>0&&f.property_index-1<i.iprp.ipco.boxes.length){const u=i.iprp.ipco.boxes[f.property_index-1];h.properties[u.type]=u,h.properties.boxes.push(u)}}}}}}}getItem(t){if(!this.meta)return;const e=this.items[t];if(!e.data&&e.size)e.data=new Uint8Array(e.size),e.alreadyRead=0,this.itemsDataSize+=e.size,l.debug("ISOFile","Allocating item #"+t+" of size "+e.size+" (total: "+this.itemsDataSize+")");else if(e.alreadyRead===e.size)return e;for(let i=0;i<e.extents.length;i++){const s=e.extents[i];if(s.alreadyRead!==s.length){const n=this.stream.findPosition(!0,s.offset+s.alreadyRead,!1);if(n>-1){const a=this.stream.buffers[n],o=a.byteLength-(s.offset+s.alreadyRead-a.fileStart);if(s.length-s.alreadyRead<=o)l.debug("ISOFile","Getting item #"+t+" extent #"+i+" data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-a.fileStart)+" read size: "+(s.length-s.alreadyRead)+" full extent size: "+s.length+" full item size: "+e.size+")"),O.memcpy(e.data.buffer,e.alreadyRead,a,s.offset+s.alreadyRead-a.fileStart,s.length-s.alreadyRead),(!this.parsingMdat||this.discardMdatData)&&(a.usedBytes+=s.length-s.alreadyRead),this.stream.logBufferLevel(),e.alreadyRead+=s.length-s.alreadyRead,s.alreadyRead=s.length;else{l.debug("ISOFile","Getting item #"+t+" extent #"+i+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-a.fileStart)+" read size: "+o+" full extent size: "+s.length+" full item size: "+e.size+")"),O.memcpy(e.data.buffer,e.alreadyRead,a,s.offset+s.alreadyRead-a.fileStart,o),s.alreadyRead+=o,e.alreadyRead+=o,(!this.parsingMdat||this.discardMdatData)&&(a.usedBytes+=o),this.stream.logBufferLevel();return}}else return}}if(e.alreadyRead===e.size)return e}releaseItem(t){const e=this.items[t];if(e.data){this.itemsDataSize-=e.size,e.data=void 0,e.alreadyRead=0;for(let i=0;i<e.extents.length;i++){const s=e.extents[i];s.alreadyRead=0}return e.size}else return 0}processItems(t){for(const e in this.items){const i=this.items[e];this.getItem(i.id),t&&!i.sent&&(t(i),i.sent=!0,i.data=void 0)}}hasItem(t){for(const e in this.items){const i=this.items[e];if(i.name===t)return i.id}return-1}getMetaHandler(){if(this.meta)return this.meta.hdlr.handler}getPrimaryItem(){if(this.meta&&this.meta.pitm)return this.getItem(this.meta.pitm.item_id)}itemToFragmentedTrackFile({itemId:t}={}){let e;if(t?e=this.getItem(t):e=this.getPrimaryItem(),!e)return;const i=new Q;i.discardMdatData=!1;const s={type:e.type,description_boxes:e.properties.boxes};e.properties.ispe&&(s.width=e.properties.ispe.image_width,s.height=e.properties.ispe.image_height);const n=i.addTrack(s);if(n)return i.addSample(n,e.data),i}processIncompleteBox(t){if(t.type==="mdat"){const e=new An(t.size);return this.parsingMdat=e,this.boxes.push(e),this.mdats.push(e),e.start=t.start,e.hdr_size=t.hdr_size,e.original_size=t.original_size,this.stream.addUsedBytes(e.hdr_size),this.lastBoxStartPosition=e.start+e.size,this.stream.seek(e.start+e.size,!1,this.discardMdatData)?(this.transferMdatData(),this.parsingMdat=void 0,!0):(this.moovStartFound?this.nextParsePosition=this.stream.findEndContiguousBuf():this.nextParsePosition=e.start+e.size,!1)}else return t.type==="moov"&&(this.moovStartFound=!0,this.mdats.length===0&&(this.isProgressive=!0)),(this.stream.mergeNextBuffer?this.stream.mergeNextBuffer():!1)?(this.nextParsePosition=this.stream.getEndPosition(),!0):(t.type?this.moovStartFound?this.nextParsePosition=this.stream.getEndPosition():this.nextParsePosition=this.stream.getPosition()+t.size:this.nextParsePosition=this.stream.getEndPosition(),!1)}hasIncompleteMdat(){return this.parsingMdat!==void 0}transferMdatData(t){const e=t??this.parsingMdat;if(this.discardMdatData){l.debug("ISOFile","Discarding \'mdat\' data, not transferring it to the mdat box stream");return}if(!e){l.warn("ISOFile","Cannot transfer \'mdat\' data, no mdat box is being parsed");return}const i=this.stream.findPosition(!0,e.start+e.hdr_size,!1),s=this.stream.findPosition(!0,e.start+e.size,!1);if(i===-1||s===-1){l.warn("ISOFile","Cannot transfer \'mdat\' data, start or end buffer not found");return}e.stream=new Tn;for(let n=i;n<=s;n++){const a=this.stream.buffers[n],o=n===i?e.start+e.hdr_size-a.fileStart:0,h=n===s?e.start+e.size-a.fileStart:a.byteLength;if(h>o){l.debug("ISOFile","Transferring \'mdat\' data from buffer #"+n+" ("+o+" to "+h+")");const c=h-o,f=new q(c),u=e.stream.getAbsoluteEndPosition();O.memcpy(f,0,a,o,c),f.fileStart=u,e.stream.insertBuffer(f),a.usedBytes+=c}}}processIncompleteMdat(){const t=this.parsingMdat;return this.stream.seek(t.start+t.size,!1,this.discardMdatData)?(l.debug("ISOFile","Found \'mdat\' end in buffered data"),this.transferMdatData(),this.parsingMdat=void 0,!0):(this.nextParsePosition=this.stream.findEndContiguousBuf(),!1)}restoreParsePosition(){return this.stream.seek(this.lastBoxStartPosition,!0,this.discardMdatData)}saveParsePosition(){this.lastBoxStartPosition=this.stream.getPosition()}updateUsedBytes(t,e){this.stream.addUsedBytes&&(t.type==="mdat"?(this.stream.addUsedBytes(t.hdr_size),this.discardMdatData&&this.stream.addUsedBytes(t.size-t.hdr_size)):this.stream.addUsedBytes(t.size))}addBox(t){return p.prototype.addBox.call(this,t)}init(t={}){const e=this.addBox(new ya);e.major_brand=t.brands&&t.brands[0]||"iso4",e.minor_version=0,e.compatible_brands=t.brands||["iso4"];const i=this.addBox(new Gn);i.addBox(new Vn);const s=i.addBox(new wa);return s.timescale=t.timescale||600,s.rate=t.rate||65536,s.creation_time=0,s.modification_time=0,s.duration=t.duration||0,s.volume=t.width?0:256,s.matrix=[65536,0,0,0,65536,0,0,0,1073741824],s.next_track_id=1,this}addTrack(t={}){this.moov||this.init(t);const e=t||{};e.width=e.width||320,e.height=e.height||320,e.id=e.id||this.moov.mvhd.next_track_id,e.type=e.type||"avc1";const i=this.moov.addBox(new la);this.moov.mvhd.next_track_id=e.id+1;const s=i.addBox(new Oa);s.flags=to|eo|io,s.creation_time=0,s.modification_time=0,s.track_id=e.id,s.duration=e.duration||0,s.layer=e.layer||0,s.alternate_group=0,s.volume=1,s.matrix=[65536,0,0,0,65536,0,0,0,1073741824],s.width=e.width<<16,s.height=e.height<<16;const n=i.addBox(new da),a=n.addBox(new Ua);a.creation_time=0,a.modification_time=0,a.timescale=e.timescale||1,a.duration=e.media_duration||0,a.language=e.language||"und";const o=n.addBox(new ba);o.handler=e.hdlr||"vide",o.name=e.name||"Track created with MP4Box.js";const h=n.addBox(new xa);h.extended_language=e.language||"fr-FR";const c=n.addBox(new fa),f=D.sampleEntry[e.type];if(!f)return;const u=new f;if(u.data_reference_index=1,u instanceof U){const z=u,j=c.addBox(new Na);j.graphicsmode=0,j.opcolor=[0,0,0],z.width=e.width,z.height=e.height,z.horizresolution=72<<16,z.vertresolution=72<<16,z.frame_count=1,z.compressorname=e.type+" Compressor",z.depth=24,e.avcDecoderConfigRecord?z.addBox(new ha(e.avcDecoderConfigRecord.byteLength)).parse(new O(e.avcDecoderConfigRecord)):e.hevcDecoderConfigRecord&&z.addBox(new va(e.hevcDecoderConfigRecord.byteLength)).parse(new O(e.hevcDecoderConfigRecord))}else if(u instanceof L){const z=u,j=c.addBox(new Ia);j.balance=e.balance||0,z.channel_count=e.channel_count||2,z.samplesize=e.samplesize||16,z.samplerate=e.samplerate||65536}else u instanceof aa?c.addBox(new ca):u instanceof J?(c.addBox(new Ca),u instanceof ka&&(u.namespace=e.namespace||"nonamespace",u.schema_location=e.schema_location||"",u.auxiliary_mime_types=e.auxiliary_mime_types||"")):u instanceof it?c.addBox(new Pn):u instanceof Nn?c.addBox(new Pn):c.addBox(new Pn);e.description&&u.addBox.call(u,e.description),e.description_boxes&&e.description_boxes.forEach(function(z){u.addBox.call(u,z)});const _=c.addBox(new ua).addBox(new ga),g=new Ma;g.flags=1,_.addEntry(g);const x=c.addBox(new pa);x.addBox(new Pa).addEntry(u);const w=x.addBox(new Da);w.sample_counts=[],w.sample_deltas=[];const I=x.addBox(new Aa);I.first_chunk=[],I.samples_per_chunk=[],I.sample_description_index=[];const F=x.addBox(new Ta);F.chunk_offsets=[];const K=x.addBox(new Fa);K.sample_sizes=[];const R=this.moov.mvex.addBox(new jn);return R.track_id=e.id,R.default_sample_description_index=e.default_sample_description_index||1,R.default_sample_duration=e.default_sample_duration||0,R.default_sample_size=e.default_sample_size||0,R.default_sample_flags=e.default_sample_flags||0,this.buildTrakSampleLists(i),e.id}addSample(t,e,{sample_description_index:i,duration:s=1,cts:n=0,dts:a=0,is_sync:o=!1,is_leading:h=0,depends_on:c=0,is_depended_on:f=0,has_redundancy:u=0,degradation_priority:m=0,subsamples:_,offset:g=0}={}){const x=this.getTrackById(t);if(x===void 0)return;const B=i?i-1:0,w={number:x.samples.length,track_id:x.tkhd.track_id,timescale:x.mdia.mdhd.timescale,description_index:B,description:x.mdia.minf.stbl.stsd.entries[B],data:e,size:e.byteLength,alreadyRead:e.byteLength,duration:s,cts:n,dts:a,is_sync:o,is_leading:h,depends_on:c,is_depended_on:f,has_redundancy:u,degradation_priority:m,offset:g,subsamples:_};x.samples.push(w),x.samples_size+=w.size,x.samples_duration+=w.duration,x.first_dts===void 0&&(x.first_dts=a),this.processSamples();const I=this.addBox(this.createMoof([w]));I.computeSize(),I.trafs[0].truns[0].data_offset=I.size+8;const F=this.addBox(new An);return F.data=new Uint8Array(e),w}createMoof(t){if(t.length===0)return;if(t.some(f=>f.track_id!==t[0].track_id))throw new Error("Cannot create moof for samples from different tracks: "+t.map(f=>f.track_id).join(", "));const e=t[0].track_id,i=this.getTrackById(e);if(!i)throw new Error("Cannot create moof for non-existing track: "+e);const s=new _a,n=s.addBox(new Ba);n.sequence_number=++this.nextMoofNumber;const a=s.addBox(new ma),o=a.addBox(new Ha);o.track_id=e,o.flags=Zn;const h=a.addBox(new La);h.baseMediaDecodeTime=t[0].dts-(i.first_dts||0);const c=a.addBox(new Ra);c.flags=un|pn|_n|mn|gn,c.data_offset=0,c.first_sample_flags=0,c.sample_count=t.length;for(const f of t){let u=0;f.is_sync?u=1<<25:u=65536,c.sample_duration.push(f.duration),c.sample_size.push(f.size),c.sample_flags.push(u),c.sample_composition_time_offset.push(f.cts-f.dts)}return s}print(t){t.indent="";for(let e=0;e<this.boxes.length;e++)this.boxes[e]&&this.boxes[e].print(t)}};function Ga(r=!1,t){return new rc(t,!r)}var Va={};T(Va,{Descriptor:()=>Z,ES_Descriptor:()=>qa,MPEG4DescriptorParser:()=>cc});var ja=3,Ln=4,qn=5,$a=6,Z=class Za{constructor(t,e){this.tag=t,this.size=e,this.descs=[]}parse(t){this.data=t.readUint8Array(this.size)}findDescriptor(t){for(let e=0;e<this.descs.length;e++)if(this.descs[e].tag===t)return this.descs[e]}parseOneDescriptor(t){let e=0;const i=t.readUint8();let s=t.readUint8();for(;s&128;)e=(e<<7)+(s&127),s=t.readUint8();e=(e<<7)+(s&127),l.debug("Descriptor","Found "+(Hn[i]||"Descriptor "+i)+", size "+e+" at position "+t.getPosition());const n=Hn[i]?new hc[Hn[i]](e):new Za(e);return n.parse(t),n}parseRemainingDescriptors(t){const e=t.getPosition();for(;t.getPosition()<e+this.size;){const i=this.parseOneDescriptor?.(t);this.descs.push(i)}}},qa=class extends Z{constructor(r){super(ja,r)}parse(r){if(this.ES_ID=r.readUint16(),this.flags=r.readUint8(),this.size-=3,this.flags&128?(this.dependsOn_ES_ID=r.readUint16(),this.size-=2):this.dependsOn_ES_ID=0,this.flags&64){const t=r.readUint8();this.URL=r.readString(t),this.size-=t+1}else this.URL="";this.flags&32?(this.OCR_ES_ID=r.readUint16(),this.size-=2):this.OCR_ES_ID=0,this.parseRemainingDescriptors(r)}getOTI(){const r=this.findDescriptor(Ln);return r?r.oti:0}getAudioConfig(){const r=this.findDescriptor(Ln);if(!r)return;const t=r.findDescriptor(qn);if(t&&t.data){let e=(t.data[0]&248)>>3;return e===31&&t.data.length>=2&&(e=32+((t.data[0]&7)<<3)+((t.data[1]&224)>>5)),e}}},nc=class extends Z{constructor(r){super(Ln,r)}parse(r){this.oti=r.readUint8(),this.streamType=r.readUint8(),this.upStream=(this.streamType>>1&1)!==0,this.streamType=this.streamType>>>2,this.bufferSize=r.readUint24(),this.maxBitrate=r.readUint32(),this.avgBitrate=r.readUint32(),this.size-=13,this.parseRemainingDescriptors(r)}},ac=class extends Z{constructor(r){super(qn,r)}},oc=class extends Z{constructor(r){super($a,r)}},hc={Descriptor:Z,ES_Descriptor:qa,DecoderConfigDescriptor:nc,DecoderSpecificInfo:ac,SLConfigDescriptor:oc},Hn={[ja]:"ES_Descriptor",[Ln]:"DecoderConfigDescriptor",[qn]:"DecoderSpecificInfo",[$a]:"SLConfigDescriptor"},cc=class{constructor(){this.parseOneDescriptor=Z.prototype.parseOneDescriptor}getDescriptorName(r){return Hn[r]}},Wa={};T(Wa,{CoLLBox:()=>Uc,ItemContentIDPropertyBox:()=>Xd,OpusSampleEntry:()=>Lh,SmDmBox:()=>Yl,a1lxBox:()=>lc,a1opBox:()=>dc,ac_3SampleEntry:()=>Ph,ac_4SampleEntry:()=>Fh,aebrBox:()=>Mc,afbrBox:()=>Nc,albcBox:()=>Gc,alstSampleGroupEntry:()=>zd,altrBox:()=>Vc,auxCBox:()=>fc,av01SampleEntry:()=>hh,av1CBox:()=>Zo,avc1SampleEntry:()=>rh,avc2SampleEntry:()=>nh,avc3SampleEntry:()=>ah,avc4SampleEntry:()=>oh,avcCBox:()=>ha,avllSampleGroupEntry:()=>Ed,avs3SampleEntry:()=>wh,avssSampleGroupEntry:()=>kd,brstBox:()=>jc,btrtBox:()=>uc,bxmlBox:()=>So,ccstBox:()=>pc,cdefBox:()=>_c,clapBox:()=>mc,clefBox:()=>Al,clliBox:()=>gc,cmexBox:()=>xc,cminBox:()=>yc,cmpdBox:()=>bc,co64Box:()=>vc,colrBox:()=>sh,coviBox:()=>wc,cprtBox:()=>zc,cschBox:()=>Ec,cslgBox:()=>kc,cttsBox:()=>Ic,dOpsBox:()=>Lc,dac3Box:()=>Tc,dataBox:()=>yn,dav1SampleEntry:()=>ch,dec3Box:()=>Cc,dfLaBox:()=>Ac,dimmBox:()=>Pc,dinfBox:()=>ua,dmax:()=>Fc,dmedBox:()=>Dc,dobrBox:()=>$c,drefBox:()=>ga,drepBox:()=>Hc,dtrtSampleGroupEntry:()=>Id,dvh1SampleEntry:()=>gh,dvheSampleEntry:()=>xh,ec_3SampleEntry:()=>Dh,edtsBox:()=>wo,elngBox:()=>xa,elstBox:()=>Oc,emsgBox:()=>Rc,encaSampleEntry:()=>Vh,encmSampleEntry:()=>Yh,encsSampleEntry:()=>$h,enctSampleEntry:()=>Wh,encuSampleEntry:()=>jh,encvSampleEntry:()=>Gh,enofBox:()=>Fl,eqivBox:()=>qc,esdsBox:()=>th,etypBox:()=>Go,fLaCSampleEntry:()=>Nh,favcBox:()=>Wc,fielBox:()=>sl,fobrBox:()=>Yc,freeBox:()=>yo,frmaBox:()=>rl,ftypBox:()=>ya,grplBox:()=>Mo,hdlrBox:()=>ba,hev1SampleEntry:()=>fh,hev2SampleEntry:()=>uh,hinfBox:()=>To,hmhdBox:()=>ca,hntiBox:()=>Io,hvc1SampleEntry:()=>lh,hvc2SampleEntry:()=>dh,hvcCBox:()=>va,hvt1SampleEntry:()=>ph,iaugBox:()=>Kc,idatBox:()=>xo,iinfBox:()=>$o,ilocBox:()=>qo,ilstBox:()=>Dl,imirBox:()=>nl,infeBox:()=>jo,iodsBox:()=>vo,ipcoBox:()=>Ro,ipmaBox:()=>al,iproBox:()=>Bo,iprpBox:()=>Oo,irefBox:()=>Yo,irotBox:()=>ol,ispeBox:()=>hl,itaiBox:()=>cl,j2kHBox:()=>No,j2kiSampleEntry:()=>zh,keysBox:()=>Ll,kindBox:()=>ll,levaBox:()=>dl,lhe1SampleEntry:()=>_h,lhv1SampleEntry:()=>mh,lhvCBox:()=>fl,lselBox:()=>ul,m4aeSampleEntry:()=>Ah,maxrBox:()=>pl,mdatBox:()=>An,mdcvBox:()=>_l,mdhdBox:()=>Ua,mdiaBox:()=>da,mecoBox:()=>ko,mehdBox:()=>Sa,metaBox:()=>Qo,mettSampleEntry:()=>Xo,metxSampleEntry:()=>Jo,mfhdBox:()=>Ba,mfraBox:()=>Eo,mfroBox:()=>ml,mha1SampleEntry:()=>Hh,mha2SampleEntry:()=>Oh,mhm1SampleEntry:()=>Rh,mhm2SampleEntry:()=>Mh,minfBox:()=>fa,mjp2SampleEntry:()=>Eh,mjpgSampleEntry:()=>kh,moofBox:()=>_a,moovBox:()=>Gn,mp4aSampleEntry:()=>Ch,mp4sSampleEntry:()=>qh,mp4vSampleEntry:()=>Th,mskCBox:()=>gl,msrcTrackGroupTypeBox:()=>pd,mvexBox:()=>Vn,mvhdBox:()=>wa,mvifSampleGroupEntry:()=>Td,nmhdBox:()=>Pn,npckBox:()=>xl,numpBox:()=>yl,padbBox:()=>vl,panoBox:()=>Qc,paspBox:()=>Ul,paylBox:()=>Sl,paytBox:()=>Bl,pdinBox:()=>wl,piffLsmBox:()=>$d,piffPsshBox:()=>qd,piffSencBox:()=>Wd,piffTencBox:()=>Yd,piffTfrfBox:()=>Kd,piffTfxdBox:()=>Qd,pitmBox:()=>Ko,pixiBox:()=>zl,pmaxBox:()=>El,povdBox:()=>Vo,prdiBox:()=>kl,prfrBox:()=>Il,prftBox:()=>Tl,prgrBox:()=>el,profBox:()=>Hl,prolSampleGroupEntry:()=>Cd,psshBox:()=>Cl,pymdBox:()=>il,rapSampleGroupEntry:()=>Ad,rashSampleGroupEntry:()=>Pd,resvSampleEntry:()=>Kh,rinfBox:()=>Fo,rollSampleGroupEntry:()=>Fd,rtp_Box:()=>Ml,saioBox:()=>Nl,saizBox:()=>Gl,sbgpBox:()=>tc,sbpmBox:()=>jl,sbttSampleEntry:()=>Qh,schiBox:()=>Do,schmBox:()=>$l,scifSampleGroupEntry:()=>Dd,scnmSampleGroupEntry:()=>Ld,sdp_Box:()=>ql,sdtpBox:()=>ec,seigSampleGroupEntry:()=>Hd,sencBox:()=>Wl,sgpdBox:()=>ic,sidxBox:()=>sc,sinfBox:()=>Po,skipBox:()=>bo,slidBox:()=>Xc,smhdBox:()=>Ia,sratBox:()=>Kl,ssixBox:()=>Ql,stblBox:()=>pa,stcoBox:()=>Ta,stdpBox:()=>Xl,sterBox:()=>Jc,sthdBox:()=>Ca,stppSampleEntry:()=>ka,strdBox:()=>Ao,striBox:()=>Jl,strkBox:()=>Co,stsaSampleGroupEntry:()=>Od,stscBox:()=>Aa,stsdBox:()=>Pa,stsgBox:()=>Zl,stshBox:()=>td,stssBox:()=>ed,stszBox:()=>Fa,sttsBox:()=>Da,stviBox:()=>id,stxtSampleEntry:()=>Xh,stypBox:()=>sd,stz2Box:()=>rd,subsBox:()=>nd,syncSampleGroupEntry:()=>Rd,taicBox:()=>ad,taptBox:()=>Ol,teleSampleGroupEntry:()=>Md,tencBox:()=>od,tfdtBox:()=>La,tfhdBox:()=>Ha,tfraBox:()=>hd,tkhdBox:()=>Oa,tmaxBox:()=>cd,tminBox:()=>ld,totlBox:()=>dd,tpayBox:()=>fd,tpylBox:()=>ud,trafBox:()=>ma,trakBox:()=>la,trefBox:()=>_d,trepBox:()=>md,trexBox:()=>jn,trgrBox:()=>Lo,trpyBox:()=>gd,trunBox:()=>Ra,tsasSampleGroupEntry:()=>Nd,tsclSampleGroupEntry:()=>Gd,tselBox:()=>xd,tsynBox:()=>Zc,tx3gSampleEntry:()=>Jh,txtcBox:()=>yd,tycoBox:()=>bd,udesBox:()=>vd,udtaBox:()=>Ho,uncCBox:()=>Ud,uncvSampleEntry:()=>Ih,urlBox:()=>Ma,urnBox:()=>Sd,viprSampleGroupEntry:()=>Vd,vmhdBox:()=>Na,vp08SampleEntry:()=>Sh,vp09SampleEntry:()=>Bh,vpcCBox:()=>eh,vttCBox:()=>Bd,vttcBox:()=>zo,vvc1SampleEntry:()=>yh,vvcCBox:()=>ih,vvcNSampleEntry:()=>Uh,vvi1SampleEntry:()=>bh,vvnCBox:()=>wd,vvs1SampleEntry:()=>vh,waveBox:()=>Rl,wbbrBox:()=>tl,wvttSampleEntry:()=>Zh,xmlBox:()=>Uo});var lc=(Ii=class extends p{constructor(){super(...arguments),this.box_name="AV1LayeredImageIndexingProperty"}parse(t){const i=((t.readUint8()&1&1)+1)*16;this.layer_size=[];for(let s=0;s<3;s++)i===16?this.layer_size[s]=t.readUint16():this.layer_size[s]=t.readUint32()}},Ii.fourcc="a1lx",Ii),dc=(Ti=class extends p{constructor(){super(...arguments),this.box_name="OperatingPointSelectorProperty"}parse(t){this.op_index=t.readUint8()}},Ti.fourcc="a1op",Ti),fc=(Ci=class extends d{constructor(){super(...arguments),this.box_name="AuxiliaryTypeProperty"}parse(t){this.parseFullHeader(t),this.aux_type=t.readCString();const e=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=t.readUint8Array(e)}},Ci.fourcc="auxC",Ci),uc=(Ai=class extends p{constructor(){super(...arguments),this.box_name="BitRateBox"}parse(t){this.bufferSizeDB=t.readUint32(),this.maxBitrate=t.readUint32(),this.avgBitrate=t.readUint32()}},Ai.fourcc="btrt",Ai),pc=(Pi=class extends d{constructor(){super(...arguments),this.box_name="CodingConstraintsBox"}parse(t){this.parseFullHeader(t);const e=t.readUint8();this.all_ref_pics_intra=(e&128)===128,this.intra_pred_used=(e&64)===64,this.max_ref_per_pic=(e&63)>>2,t.readUint24()}},Pi.fourcc="ccst",Pi),_c=(Fi=class extends p{constructor(){super(...arguments),this.box_name="ComponentDefinitionBox"}parse(t){this.channel_count=t.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[];for(let e=0;e<this.channel_count;e++)this.channel_indexes.push(t.readUint16()),this.channel_types.push(t.readUint16()),this.channel_associations.push(t.readUint16())}},Fi.fourcc="cdef",Fi),mc=(Di=class extends p{constructor(){super(...arguments),this.box_name="CleanApertureBox"}parse(t){this.cleanApertureWidthN=t.readUint32(),this.cleanApertureWidthD=t.readUint32(),this.cleanApertureHeightN=t.readUint32(),this.cleanApertureHeightD=t.readUint32(),this.horizOffN=t.readUint32(),this.horizOffD=t.readUint32(),this.vertOffN=t.readUint32(),this.vertOffD=t.readUint32()}},Di.fourcc="clap",Di),gc=(Li=class extends p{constructor(){super(...arguments),this.box_name="ContentLightLevelBox"}parse(t){this.max_content_light_level=t.readUint16(),this.max_pic_average_light_level=t.readUint16()}},Li.fourcc="clli",Li),xc=(Hi=class extends p{constructor(){super(...arguments),this.box_name="CameraExtrinsicMatrixProperty"}parse(t){this.flags&1&&(this.pos_x=t.readInt32()),this.flags&2&&(this.pos_y=t.readInt32()),this.flags&4&&(this.pos_z=t.readInt32()),this.flags&8&&(this.version===0?this.flags&16?(this.quat_x=t.readInt32(),this.quat_y=t.readInt32(),this.quat_z=t.readInt32()):(this.quat_x=t.readInt16(),this.quat_y=t.readInt16(),this.quat_z=t.readInt16()):this.version),this.flags&32&&(this.id=t.readUint32())}},Hi.fourcc="cmex",Hi),yc=(Oi=class extends p{constructor(){super(...arguments),this.box_name="CameraIntrinsicMatrixProperty"}parse(t){this.focal_length_x=t.readInt32(),this.principal_point_x=t.readInt32(),this.principal_point_y=t.readInt32(),this.flags&1&&(this.focal_length_y=t.readInt32(),this.skew_factor=t.readInt32())}},Oi.fourcc="cmin",Oi),bc=(Ri=class extends p{constructor(){super(...arguments),this.box_name="ComponentDefinitionBox"}parse(t){this.component_count=t.readUint32(),this.component_types=[],this.component_type_urls=[];for(let e=0;e<this.component_count;e++){const i=t.readUint16();this.component_types.push(i),i>=32768&&this.component_type_urls.push(t.readCString())}}},Ri.fourcc="cmpd",Ri),vc=(Mi=class extends d{constructor(){super(...arguments),this.box_name="ChunkLargeOffsetBox"}parse(t){this.parseFullHeader(t);const e=t.readUint32();if(this.chunk_offsets=[],this.version===0)for(let i=0;i<e;i++)this.chunk_offsets.push(t.readUint64())}write(t){this.version=0,this.flags=0,this.size=4+8*this.chunk_offsets.length,this.writeHeader(t),t.writeUint32(this.chunk_offsets.length);for(let e=0;e<this.chunk_offsets.length;e++)t.writeUint64(this.chunk_offsets[e])}},Mi.fourcc="co64",Mi),Uc=(Ni=class extends d{constructor(){super(...arguments),this.box_name="ContentLightLevelBox"}parse(t){this.parseFullHeader(t),this.maxCLL=t.readUint16(),this.maxFALL=t.readUint16()}},Ni.fourcc="CoLL",Ni),Sc=class{toString(){let r="centre_azimuth: ";return r+=this.centre_azimuth,r+=" (",r+=this.centre_azimuth*2**-16,r+="°), centre_elevation: ",r+=this.centre_elevation,r+=" (",r+=this.centre_elevation*2**-16,r+="°), centre_tilt: ",r+=this.centre_tilt,r+=" (",r+=this.centre_tilt*2**-16,r+="°)",this.range_included_flag&&(r+=", azimuth_range: ",r+=this.azimuth_range,r+=" (",r+=this.azimuth_range*2**-16,r+="°), elevation_range: ",r+=this.elevation_range,r+=" (",r+=this.elevation_range*2**-16,r+="°)"),this.interpolate_included_flag&&(r+=", interpolate: ",r+=this.interpolate),r}},Bc=class{toString(){let r="";return this.view_idc&&(r+="view_idc: ",r+=this.view_idc,r+=", "),r+="sphere_region: {",r+=this.sphere_region,r+="}",r}},wc=(Gi=class extends d{constructor(){super(...arguments),this.box_name="CoverageInformationBox"}parse(t){this.parseFullHeader(t),this.coverage_shape_type=t.readUint8();const e=t.readUint8(),i=t.readInt8(),s=i&128;s&&(this.default_view_idc=(i&96)>>5),this.coverage_regions=new Array;for(let n=0;n<e;n++){const a=new Bc;s&&(a.view_idc=t.readUint8()>>6),a.sphere_region=this.parseSphereRegion(t,!0,!0),this.coverage_regions.push(a)}}parseSphereRegion(t,e,i){const s=new Sc;return s.centre_azimuth=t.readInt32(),s.centre_elevation=t.readInt32(),s.centre_tilt=t.readInt32(),s.range_included_flag=e,e&&(s.azimuth_range=t.readUint32(),s.elevation_range=t.readUint32()),s.interpolate_included_flag=i,i&&(s.interpolate=(t.readUint8()&128)===128),s}},Gi.fourcc="covi",Gi),zc=(Vi=class extends d{constructor(){super(...arguments),this.box_name="CopyrightBox"}parse(t){this.parseFullHeader(t),this.parseLanguage(t),this.notice=t.readCString()}},Vi.fourcc="cprt",Vi),Ec=(ji=class extends d{constructor(){super(...arguments),this.box_name="CompatibleSchemeTypeBox"}parse(t){this.parseFullHeader(t),this.scheme_type=t.readString(4),this.scheme_version=t.readUint32(),this.flags&1&&(this.scheme_uri=t.readCString())}},ji.fourcc="csch",ji),xn=2147483647,kc=($i=class extends d{constructor(){super(...arguments),this.box_name="CompositionToDecodeBox"}parse(t){this.parseFullHeader(t),this.version===0?(this.compositionToDTSShift=t.readInt32(),this.leastDecodeToDisplayDelta=t.readInt32(),this.greatestDecodeToDisplayDelta=t.readInt32(),this.compositionStartTime=t.readInt32(),this.compositionEndTime=t.readInt32()):this.version===1&&(this.compositionToDTSShift=t.readInt64(),this.leastDecodeToDisplayDelta=t.readInt64(),this.greatestDecodeToDisplayDelta=t.readInt64(),this.compositionStartTime=t.readInt64(),this.compositionEndTime=t.readInt64())}write(t){this.version=0,(this.compositionToDTSShift>xn||this.leastDecodeToDisplayDelta>xn||this.greatestDecodeToDisplayDelta>xn||this.compositionStartTime>xn||this.compositionEndTime>xn)&&(this.version=1),this.flags=0,this.version===0?(this.size=20,this.writeHeader(t),t.writeInt32(this.compositionToDTSShift),t.writeInt32(this.leastDecodeToDisplayDelta),t.writeInt32(this.greatestDecodeToDisplayDelta),t.writeInt32(this.compositionStartTime),t.writeInt32(this.compositionEndTime)):this.version===1&&(this.size=40,this.writeHeader(t),t.writeInt64(this.compositionToDTSShift),t.writeInt64(this.leastDecodeToDisplayDelta),t.writeInt64(this.greatestDecodeToDisplayDelta),t.writeInt64(this.compositionStartTime),t.writeInt64(this.compositionEndTime))}},$i.fourcc="cslg",$i),Ic=(qi=class extends d{constructor(){super(...arguments),this.box_name="CompositionOffsetBox"}parse(t){this.parseFullHeader(t);const e=t.readUint32();if(this.sample_counts=[],this.sample_offsets=[],this.version===0)for(let i=0;i<e;i++){this.sample_counts.push(t.readUint32());const s=t.readInt32();s<0&&l.warn("BoxParser","ctts box uses negative values without using version 1"),this.sample_offsets.push(s)}else if(this.version===1)for(let i=0;i<e;i++)this.sample_counts.push(t.readUint32()),this.sample_offsets.push(t.readInt32())}write(t){this.version=this.sample_offsets.some(e=>e<0)?1:0,this.flags=0,this.size=4+8*this.sample_counts.length,this.writeHeader(t),t.writeUint32(this.sample_counts.length);for(let e=0;e<this.sample_counts.length;e++)t.writeUint32(this.sample_counts[e]),this.version===1?t.writeInt32(this.sample_offsets[e]):t.writeUint32(this.sample_offsets[e])}unpack(t){let e=0;for(let i=0;i<this.sample_counts.length;i++)for(let s=0;s<this.sample_counts[i];s++)t[e].pts=t[e].dts+this.sample_offsets[i],e++}},qi.fourcc="ctts",qi),Tc=(Wi=class extends p{constructor(){super(...arguments),this.box_name="AC3SpecificBox"}parse(t){const e=t.readUint8(),i=t.readUint8(),s=t.readUint8();this.fscod=e>>6,this.bsid=e>>1&31,this.bsmod=(e&1)<<2|i>>6&3,this.acmod=i>>3&7,this.lfeon=i>>2&1,this.bit_rate_code=i&3|s>>5&7}},Wi.fourcc="dac3",Wi),Cc=(Yi=class extends p{constructor(){super(...arguments),this.box_name="EC3SpecificBox"}parse(t){const e=t.readUint16();this.data_rate=e>>3,this.num_ind_sub=e&7,this.ind_subs=[];for(let i=0;i<this.num_ind_sub+1;i++){const s=t.readUint8(),n=t.readUint8(),a=t.readUint8(),o={fscod:s>>6,bsid:s>>1&31,bsmod:(s&1)<<4|n>>4&15,acmod:n>>1&7,lfeon:n&1,num_dep_sub:a>>1&15};this.ind_subs.push(o),o.num_dep_sub>0&&(o.chan_loc=(a&1)<<8|t.readUint8())}}},Yi.fourcc="dec3",Yi),Ac=(Ki=class extends d{constructor(){super(...arguments),this.box_name="FLACSpecificBox"}parse(t){this.parseFullHeader(t);const e=127,i=128,s=[],n=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];let a;do{a=t.readUint8();const o=Math.min(a&e,n.length-1);o?t.readUint8Array(t.readUint24()):(t.readUint8Array(13),this.samplerate=t.readUint32()>>12,t.readUint8Array(20)),s.push(n[o])}while(a&i);this.numMetadataBlocks=s.length+" ("+s.join(", ")+")"}},Ki.fourcc="dfLa",Ki),Pc=(Qi=class extends p{constructor(){super(...arguments),this.box_name="hintimmediateBytesSent"}parse(t){this.bytessent=t.readUint64()}},Qi.fourcc="dimm",Qi),Fc=(Xi=class extends p{constructor(){super(...arguments),this.box_name="hintlongestpacket"}parse(t){this.time=t.readUint32()}},Xi.fourcc="dmax",Xi),Dc=(Ji=class extends p{constructor(){super(...arguments),this.box_name="hintmediaBytesSent"}parse(t){this.bytessent=t.readUint64()}},Ji.fourcc="dmed",Ji),Lc=(Zi=class extends p{constructor(){super(...arguments),this.box_name="OpusSpecificBox"}parse(t){if(this.Version=t.readUint8(),this.OutputChannelCount=t.readUint8(),this.PreSkip=t.readUint16(),this.InputSampleRate=t.readUint32(),this.OutputGain=t.readInt16(),this.ChannelMappingFamily=t.readUint8(),this.ChannelMappingFamily!==0){this.StreamCount=t.readUint8(),this.CoupledCount=t.readUint8(),this.ChannelMapping=[];for(let e=0;e<this.OutputChannelCount;e++)this.ChannelMapping[e]=t.readUint8()}}write(t){if(this.size=11,this.ChannelMappingFamily!==0&&(this.size+=2+this.OutputChannelCount),this.writeHeader(t),t.writeUint8(this.Version),t.writeUint8(this.OutputChannelCount),t.writeUint16(this.PreSkip),t.writeUint32(this.InputSampleRate),t.writeInt16(this.OutputGain),t.writeUint8(this.ChannelMappingFamily),this.ChannelMappingFamily!==0){t.writeUint8(this.StreamCount),t.writeUint8(this.CoupledCount);for(let e=0;e<this.OutputChannelCount;e++)t.writeUint8(this.ChannelMapping[e])}}},Zi.fourcc="dOps",Zi),Hc=(ts=class extends p{constructor(){super(...arguments),this.box_name="hintrepeatedBytesSent"}parse(t){this.bytessent=t.readUint64()}},ts.fourcc="drep",ts),Oc=(es=class extends d{constructor(){super(...arguments),this.box_name="EditListBox"}parse(t){this.parseFullHeader(t),this.entries=[];const e=t.readUint32();for(let i=0;i<e;i++){const s={segment_duration:this.version===1?t.readUint64():t.readUint32(),media_time:this.version===1?t.readInt64():t.readInt32(),media_rate_integer:t.readInt16(),media_rate_fraction:t.readInt16()};this.entries.push(s)}}write(t){const e=this.entries.some(i=>i.segment_duration>S||i.media_time>S)||this.version===1;this.version=e?1:0,this.size=4+12*this.entries.length,this.size+=e?8*this.entries.length:0,this.writeHeader(t),t.writeUint32(this.entries.length);for(let i=0;i<this.entries.length;i++){const s=this.entries[i];e?(t.writeUint64(s.segment_duration),t.writeInt64(s.media_time)):(t.writeUint32(s.segment_duration),t.writeInt32(s.media_time)),t.writeInt16(s.media_rate_integer),t.writeInt16(s.media_rate_fraction)}}},es.fourcc="elst",es),Rc=(is=class extends d{constructor(){super(...arguments),this.box_name="EventMessageBox"}parse(t){this.parseFullHeader(t),this.version===1?(this.timescale=t.readUint32(),this.presentation_time=t.readUint64(),this.event_duration=t.readUint32(),this.id=t.readUint32(),this.scheme_id_uri=t.readCString(),this.value=t.readCString()):(this.scheme_id_uri=t.readCString(),this.value=t.readCString(),this.timescale=t.readUint32(),this.presentation_time_delta=t.readUint32(),this.event_duration=t.readUint32(),this.id=t.readUint32());let e=this.size-this.hdr_size-(16+(this.scheme_id_uri.length+1)+(this.value.length+1));this.version===1&&(e-=4),this.message_data=t.readUint8Array(e)}write(t){this.version=0,this.flags=0,this.size=16+this.message_data.length+(this.scheme_id_uri.length+1)+(this.value.length+1),this.writeHeader(t),t.writeCString(this.scheme_id_uri),t.writeCString(this.value),t.writeUint32(this.timescale),t.writeUint32(this.presentation_time_delta),t.writeUint32(this.event_duration),t.writeUint32(this.id),t.writeUint8Array(this.message_data)}},is.fourcc="emsg",is),C=class extends d{parse(r){this.parseFullHeader(r),this.group_id=r.readUint32(),this.num_entities_in_group=r.readUint32(),this.entity_ids=[];for(let t=0;t<this.num_entities_in_group;t++){const e=r.readUint32();this.entity_ids.push(e)}}},Mc=(ss=class extends C{constructor(){super(...arguments),this.box_name="Auto exposure bracketing"}},ss.fourcc="aebr",ss),Nc=(rs=class extends C{constructor(){super(...arguments),this.box_name="Flash exposure information"}},rs.fourcc="afbr",rs),Gc=(ns=class extends C{constructor(){super(...arguments),this.box_name="Album collection"}},ns.fourcc="albc",ns),Vc=(as=class extends C{constructor(){super(...arguments),this.box_name="Alternative entity"}},as.fourcc="altr",as),jc=(os=class extends C{constructor(){super(...arguments),this.box_name="Burst image"}},os.fourcc="brst",os),$c=(hs=class extends C{constructor(){super(...arguments),this.box_name="Depth of field bracketing"}},hs.fourcc="dobr",hs),qc=(cs=class extends C{constructor(){super(...arguments),this.box_name="Equivalent entity"}},cs.fourcc="eqiv",cs),Wc=(ls=class extends C{constructor(){super(...arguments),this.box_name="Favorites collection"}},ls.fourcc="favc",ls),Yc=(ds=class extends C{constructor(){super(...arguments),this.box_name="Focus bracketing"}},ds.fourcc="fobr",ds),Kc=(fs=class extends C{constructor(){super(...arguments),this.box_name="Image item with an audio track"}},fs.fourcc="iaug",fs),Qc=(us=class extends C{constructor(){super(...arguments),this.box_name="Panorama"}},us.fourcc="pano",us),Xc=(ps=class extends C{constructor(){super(...arguments),this.box_name="Slideshow"}},ps.fourcc="slid",ps),Jc=(_s=class extends C{constructor(){super(...arguments),this.box_name="Stereo"}},_s.fourcc="ster",_s),Zc=(ms=class extends C{constructor(){super(...arguments),this.box_name="Time-synchronized capture"}},ms.fourcc="tsyn",ms),tl=(gs=class extends C{constructor(){super(...arguments),this.box_name="White balance bracketing"}},gs.fourcc="wbbr",gs),el=(xs=class extends C{constructor(){super(...arguments),this.box_name="Progressive rendering"}},xs.fourcc="prgr",xs),il=(ys=class extends C{constructor(){super(...arguments),this.box_name="Image pyramid"}parse(t){this.parseFullHeader(t),this.group_id=t.readUint32(),this.num_entities_in_group=t.readUint32(),this.entity_ids=[];for(let e=0;e<this.num_entities_in_group;e++){const i=t.readUint32();this.entity_ids.push(i)}this.tile_size_x=t.readUint16(),this.tile_size_y=t.readUint16(),this.layer_binning=[],this.tiles_in_layer_column_minus1=[],this.tiles_in_layer_row_minus1=[];for(let e=0;e<this.num_entities_in_group;e++)this.layer_binning[e]=t.readUint16(),this.tiles_in_layer_row_minus1[e]=t.readUint16(),this.tiles_in_layer_column_minus1[e]=t.readUint16()}},ys.fourcc="pymd",ys),sl=(bs=class extends p{constructor(){super(...arguments),this.box_name="FieldHandlingBox"}parse(t){this.fieldCount=t.readUint8(),this.fieldOrdering=t.readUint8()}},bs.fourcc="fiel",bs),rl=(vs=class extends p{constructor(){super(...arguments),this.box_name="OriginalFormatBox"}parse(t){this.data_format=t.readString(4)}},vs.fourcc="frma",vs),nl=(Us=class extends p{constructor(){super(...arguments),this.box_name="ImageMirror"}parse(t){const e=t.readUint8();this.reserved=e>>7,this.axis=e&1}},Us.fourcc="imir",Us),al=(Ss=class extends d{constructor(){super(...arguments),this.box_name="ItemPropertyAssociationBox"}parse(t){this.parseFullHeader(t);const e=t.readUint32();this.associations=[];for(let i=0;i<e;i++){const s=this.version<1?t.readUint16():t.readUint32(),n=[],a=t.readUint8();for(let o=0;o<a;o++){const h=t.readUint8();n.push({essential:(h&128)>>7===1,property_index:this.flags&1?(h&127)<<8|t.readUint8():h&127})}this.associations.push({id:s,props:n})}}},Ss.fourcc="ipma",Ss),ol=(Bs=class extends p{constructor(){super(...arguments),this.box_name="ImageRotation"}parse(t){this.angle=t.readUint8()&3}},Bs.fourcc="irot",Bs),hl=(ws=class extends d{constructor(){super(...arguments),this.box_name="ImageSpatialExtentsProperty"}parse(t){this.parseFullHeader(t),this.image_width=t.readUint32(),this.image_height=t.readUint32()}},ws.fourcc="ispe",ws),cl=(zs=class extends d{constructor(){super(...arguments),this.box_name="TAITimestampBox"}parse(t){this.TAI_timestamp=t.readUint64();const e=t.readUint8();this.sychronization_state=e>>7&1,this.timestamp_generation_failure=e>>6&1,this.timestamp_is_modified=e>>5&1}},zs.fourcc="itai",zs),ll=(Es=class extends d{constructor(){super(...arguments),this.box_name="KindBox"}parse(t){this.parseFullHeader(t),this.schemeURI=t.readCString(),this.isEndOfBox(t)||(this.value=t.readCString())}write(t){this.version=0,this.flags=0,this.size=this.schemeURI.length+1+(this.value?this.value.length+1:0),this.writeHeader(t),t.writeCString(this.schemeURI),this.value&&t.writeCString(this.value)}},Es.fourcc="kind",Es),dl=(ks=class extends d{constructor(){super(...arguments),this.box_name="LevelAssignmentBox"}parse(t){this.parseFullHeader(t);const e=t.readUint8();this.levels=[];for(let i=0;i<e;i++){const s={};this.levels[i]=s,s.track_ID=t.readUint32();const n=t.readUint8();switch(s.padding_flag=n>>7,s.assignment_type=n&127,s.assignment_type){case 0:s.grouping_type=t.readString(4);break;case 1:s.grouping_type=t.readString(4),s.grouping_type_parameter=t.readUint32();break;case 2:break;case 3:break;case 4:s.sub_track_id=t.readUint32();break;default:l.warn("BoxParser",`Unknown level assignment type: ${s.assignment_type}`)}}}},ks.fourcc="leva",ks),fl=(Is=class extends p{constructor(){super(...arguments),this.box_name="LHEVCConfigurationBox"}parse(t){this.configurationVersion=t.readUint8(),this.min_spatial_segmentation_idc=t.readUint16()&4095,this.parallelismType=t.readUint8()&3;let e=t.readUint8();this.numTemporalLayers=(e&13)>>3,this.temporalIdNested=(e&4)>>2,this.lengthSizeMinusOne=e&3,this.nalu_arrays=[];const i=t.readUint8();for(let s=0;s<i;s++){const n=[];this.nalu_arrays.push(n),e=t.readUint8(),n.completeness=(e&128)>>7,n.nalu_type=e&63;const a=t.readUint16();for(let o=0;o<a;o++){const h=t.readUint16();n.push({data:t.readUint8Array(h)})}}}},Is.fourcc="lhvC",Is),ul=(Ts=class extends p{constructor(){super(...arguments),this.box_name="LayerSelectorProperty"}parse(t){this.layer_id=t.readUint16()}},Ts.fourcc="lsel",Ts),pl=(Cs=class extends p{constructor(){super(...arguments),this.box_name="hintmaxrate"}parse(t){this.period=t.readUint32(),this.bytes=t.readUint32()}},Cs.fourcc="maxr",Cs),On=class{constructor(r,t){this.x=r,this.y=t}toString(){return"("+this.x+","+this.y+")"}},_l=(As=class extends p{constructor(){super(...arguments),this.box_name="MasteringDisplayColourVolumeBox"}parse(t){this.display_primaries=[],this.display_primaries[0]=new On(t.readUint16(),t.readUint16()),this.display_primaries[1]=new On(t.readUint16(),t.readUint16()),this.display_primaries[2]=new On(t.readUint16(),t.readUint16()),this.white_point=new On(t.readUint16(),t.readUint16()),this.max_display_mastering_luminance=t.readUint32(),this.min_display_mastering_luminance=t.readUint32()}},As.fourcc="mdcv",As),ml=(Ps=class extends d{constructor(){super(...arguments),this.box_name="MovieFragmentRandomAccessOffsetBox"}parse(t){this.parseFullHeader(t),this._size=t.readUint32()}},Ps.fourcc="mfro",Ps),gl=(Fs=class extends d{constructor(){super(...arguments),this.box_name="MaskConfigurationProperty"}parse(t){this.parseFullHeader(t),this.bits_per_pixel=t.readUint8()}},Fs.fourcc="mskC",Fs),xl=(Ds=class extends p{constructor(){super(...arguments),this.box_name="hintPacketsSent"}parse(t){this.packetssent=t.readUint32()}},Ds.fourcc="npck",Ds),yl=(Ls=class extends p{constructor(){super(...arguments),this.box_name="hintPacketsSent"}parse(t){this.packetssent=t.readUint64()}},Ls.fourcc="nump",Ls),bl=class{constructor(r,t){this.pad1=r,this.pad2=t}},vl=(Hs=class extends d{constructor(){super(...arguments),this.box_name="PaddingBitsBox"}parse(t){this.parseFullHeader(t);const e=t.readUint32();this.padbits=[];for(let i=0;i<Math.floor((e+1)/2);i++){const s=t.readUint8(),n=(s&112)>>4,a=s&7;this.padbits.push(new bl(n,a))}}},Hs.fourcc="padb",Hs),Ul=(Os=class extends p{constructor(){super(...arguments),this.box_name="PixelAspectRatioBox"}parse(t){this.hSpacing=t.readUint32(),this.vSpacing=t.readUint32()}},Os.fourcc="pasp",Os),Sl=(Rs=class extends p{constructor(){super(...arguments),this.box_name="CuePayloadBox"}parse(t){this.text=t.readString(this.size-this.hdr_size)}},Rs.fourcc="payl",Rs),Bl=(Ms=class extends p{constructor(){super(...arguments),this.box_name="hintpayloadID"}parse(t){this.payloadID=t.readUint32();const e=t.readUint8();this.rtpmap_string=t.readString(e)}},Ms.fourcc="payt",Ms),wl=(Ns=class extends d{constructor(){super(...arguments),this.box_name="ProgressiveDownloadInfoBox",this.rate=[],this.initial_delay=[]}parse(t){this.parseFullHeader(t);const e=(this.size-this.hdr_size)/8;for(let i=0;i<e;i++)this.rate[i]=t.readUint32(),this.initial_delay[i]=t.readUint32()}},Ns.fourcc="pdin",Ns),zl=(Gs=class extends d{constructor(){super(...arguments),this.box_name="PixelInformationProperty"}parse(t){this.parseFullHeader(t),this.num_channels=t.readUint8(),this.bits_per_channels=[];for(let e=0;e<this.num_channels;e++)this.bits_per_channels[e]=t.readUint8()}},Gs.fourcc="pixi",Gs),El=(Vs=class extends p{constructor(){super(...arguments),this.box_name="hintlargestpacket"}parse(t){this.bytes=t.readUint32()}},Vs.fourcc="pmax",Vs),kl=(js=class extends d{constructor(){super(...arguments),this.box_name="ProgressiveDerivedImageItemInformationProperty"}parse(t){if(this.parseFullHeader(t),this.step_count=t.readUint16(),this.item_count=[],this.flags&2)for(let e=0;e<this.step_count;e++)this.item_count[e]=t.readUint16()}},js.fourcc="prdi",js),Il=($s=class extends d{constructor(){super(...arguments),this.box_name="ProjectionFormatBox"}parse(t){this.parseFullHeader(t),this.projection_type=t.readUint8()&31}},$s.fourcc="prfr",$s),Tl=(qs=class extends d{constructor(){super(...arguments),this.box_name="ProducerReferenceTimeBox"}parse(t){this.parseFullHeader(t),this.ref_track_id=t.readUint32(),this.ntp_timestamp=t.readUint64(),this.version===0?this.media_time=t.readUint32():this.media_time=t.readUint64()}},qs.fourcc="prft",qs),Cl=(Ws=class extends d{constructor(){super(...arguments),this.box_name="ProtectionSystemSpecificHeaderBox"}parse(t){if(this.parseFullHeader(t),this.system_id=X(t),this.kid=[],this.version>0){const i=t.readUint32();for(let s=0;s<i;s++)this.kid[s]=X(t)}const e=t.readUint32();e>0&&(this.protection_data=t.readUint8Array(e))}},Ws.fourcc="pssh",Ws),Al=(Ys=class extends d{constructor(){super(...arguments),this.box_name="TrackCleanApertureDimensionsBox"}parse(t){this.parseFullHeader(t),this.width=t.readUint32(),this.height=t.readUint32()}},Ys.fourcc="clef",Ys);function Pl(r,t){if(r===yn.Types.UTF8)return new TextDecoder("utf-8").decode(t);const e=new DataView(t.buffer);if(r===yn.Types.BE_UNSIGNED_INT){if(t.length===1)return e.getUint8(0);if(t.length===2)return e.getUint16(0,!1);if(t.length===4)return e.getUint32(0,!1);if(t.length===8)return e.getBigUint64(0,!1);throw new Error("Unsupported ITIF_TYPE_BE_UNSIGNED_INT length "+t.length)}else if(r===yn.Types.BE_SIGNED_INT){if(t.length===1)return e.getInt8(0);if(t.length===2)return e.getInt16(0,!1);if(t.length===4)return e.getInt32(0,!1);if(t.length===8)return e.getBigInt64(0,!1);throw new Error("Unsupported ITIF_TYPE_BE_SIGNED_INT length "+t.length)}else if(r===yn.Types.BE_FLOAT32)return e.getFloat32(0,!1);l.warn("DataBox","Unsupported or unimplemented itif data type: "+r)}var yn=(et=class extends p{constructor(){super(...arguments),this.box_name="DataBox"}parse(t){this.valueType=t.readUint32(),this.country=t.readUint16(),this.country>255&&(t.seek(t.getPosition()-2),this.countryString=t.readString(2)),this.language=t.readUint16(),this.language>255&&(t.seek(t.getPosition()-2),this.parseLanguage(t)),this.raw=t.readUint8Array(this.size-this.hdr_size-8),this.value=Pl(this.valueType,this.raw)}},et.fourcc="data",et.Types={RESERVED:0,UTF8:1,UTF16:2,SJIS:3,UTF8_SORT:4,UTF16_SORT:5,JPEG:13,PNG:14,BE_SIGNED_INT:21,BE_UNSIGNED_INT:22,BE_FLOAT32:23,BE_FLOAT64:24,BMP:27,QT_ATOM:28,BE_SIGNED_INT8:65,BE_SIGNED_INT16:66,BE_SIGNED_INT32:67,BE_FLOAT32_POINT:70,BE_FLOAT32_DIMENSIONS:71,BE_FLOAT32_RECT:72,BE_SIGNED_INT64:74,BE_UNSIGNED_INT8:75,BE_UNSIGNED_INT16:76,BE_UNSIGNED_INT32:77,BE_UNSIGNED_INT64:78,BE_FLOAT64_AFFINE_TRANSFORM:79},et),Fl=(Ks=class extends d{constructor(){super(...arguments),this.box_name="TrackEncodedPixelsDimensionsBox"}parse(t){this.parseFullHeader(t),this.width=t.readUint32(),this.height=t.readUint32()}},Ks.fourcc="enof",Ks),Dl=(Qs=class extends p{constructor(){super(...arguments),this.box_name="IlstBox"}parse(t){this.list={};let e=this.size-this.hdr_size;for(;e>0;){const i=t.readUint32(),s=t.readUint32(),n=M(t,!1,i-8);n.code===H&&(this.list[s]=n.box),e-=i}}},Qs.fourcc="ilst",Qs),Ll=(Xs=class extends d{constructor(){super(...arguments),this.box_name="KeysBox"}parse(t){this.parseFullHeader(t),this.count=t.readUint32(),this.keys={};for(let e=0;e<this.count;e++){const i=t.readUint32();this.keys[e+1]=t.readString(i-4)}}},Xs.fourcc="keys",Xs),Hl=(Js=class extends d{constructor(){super(...arguments),this.box_name="TrackProductionApertureDimensionsBox"}parse(t){this.parseFullHeader(t),this.width=t.readUint32(),this.height=t.readUint32()}},Js.fourcc="prof",Js),Ol=(Zs=class extends v{constructor(){super(...arguments),this.box_name="TrackApertureModeDimensionsBox",this.clefs=[],this.profs=[],this.enofs=[],this.subBoxNames=["clef","prof","enof"]}},Zs.fourcc="tapt",Zs),Rl=(tr=class extends v{constructor(){super(...arguments),this.box_name="siDecompressionParamBox"}},tr.fourcc="wave",tr),Ml=(er=class extends p{constructor(){super(...arguments),this.box_name="rtpmoviehintinformation"}parse(t){this.descriptionformat=t.readString(4),this.sdptext=t.readString(this.size-this.hdr_size-4)}},er.fourcc="rtp ",er),Nl=(ir=class extends d{constructor(){super(...arguments),this.box_name="SampleAuxiliaryInformationOffsetsBox"}parse(t){this.parseFullHeader(t),this.flags&1&&(this.aux_info_type=t.readString(4),this.aux_info_type_parameter=t.readUint32());const e=t.readUint32();this.offset=[];for(let i=0;i<e;i++)this.version===0?this.offset[i]=t.readUint32():this.offset[i]=t.readUint64()}},ir.fourcc="saio",ir),Gl=(sr=class extends d{constructor(){super(...arguments),this.box_name="SampleAuxiliaryInformationSizesBox"}parse(t){if(this.parseFullHeader(t),this.flags&1&&(this.aux_info_type=t.readString(4),this.aux_info_type_parameter=t.readUint32()),this.default_sample_info_size=t.readUint8(),this.sample_count=t.readUint32(),this.sample_info_size=[],this.default_sample_info_size===0)for(let e=0;e<this.sample_count;e++)this.sample_info_size[e]=t.readUint8()}},sr.fourcc="saiz",sr),Vl=class{constructor(r,t){this.bad_pixel_row=r,this.bad_pixel_column=t}toString(){return"[row: "+this.bad_pixel_row+", column: "+this.bad_pixel_column+"]"}},jl=(rr=class extends d{constructor(){super(...arguments),this.box_name="SensorBadPixelsMapBox"}parse(t){this.parseFullHeader(t),this.component_count=t.readUint16(),this.component_index=[];for(let i=0;i<this.component_count;i++)this.component_index.push(t.readUint16());const e=t.readUint8();this.correction_applied=(e&128)===128,this.num_bad_rows=t.readUint32(),this.num_bad_cols=t.readUint32(),this.num_bad_pixels=t.readUint32(),this.bad_rows=[],this.bad_columns=[],this.bad_pixels=[];for(let i=0;i<this.num_bad_rows;i++)this.bad_rows.push(t.readUint32());for(let i=0;i<this.num_bad_cols;i++)this.bad_columns.push(t.readUint32());for(let i=0;i<this.num_bad_pixels;i++){const s=t.readUint32(),n=t.readUint32();this.bad_pixels.push(new Vl(s,n))}}},rr.fourcc="sbpm",rr),$l=(nr=class extends d{constructor(){super(...arguments),this.box_name="SchemeTypeBox"}parse(t){this.parseFullHeader(t),this.scheme_type=t.readString(4),this.scheme_version=t.readUint32(),this.flags&1&&(this.scheme_uri=t.readString(this.size-this.hdr_size-8))}},nr.fourcc="schm",nr),ql=(ar=class extends p{constructor(){super(...arguments),this.box_name="rtptracksdphintinformation"}parse(t){this.sdptext=t.readString(this.size-this.hdr_size)}},ar.fourcc="sdp ",ar),Wl=(or=class extends d{constructor(){super(...arguments),this.box_name="SampleEncryptionBox"}},or.fourcc="senc",or),Yl=(hr=class extends d{constructor(){super(...arguments),this.box_name="SMPTE2086MasteringDisplayMetadataBox"}parse(t){this.parseFullHeader(t),this.primaryRChromaticity_x=t.readUint16(),this.primaryRChromaticity_y=t.readUint16(),this.primaryGChromaticity_x=t.readUint16(),this.primaryGChromaticity_y=t.readUint16(),this.primaryBChromaticity_x=t.readUint16(),this.primaryBChromaticity_y=t.readUint16(),this.whitePointChromaticity_x=t.readUint16(),this.whitePointChromaticity_y=t.readUint16(),this.luminanceMax=t.readUint32(),this.luminanceMin=t.readUint32()}},hr.fourcc="SmDm",hr),Kl=(cr=class extends d{constructor(){super(...arguments),this.box_name="SamplingRateBox"}parse(t){this.parseFullHeader(t),this.sampling_rate=t.readUint32()}},cr.fourcc="srat",cr),Ql=(lr=class extends d{constructor(){super(...arguments),this.box_name="CompressedSubsegmentIndexBox"}parse(t){this.parseFullHeader(t),this.subsegments=[];const e=t.readUint32();for(let i=0;i<e;i++){const s={};this.subsegments.push(s),s.ranges=[];const n=t.readUint32();for(let a=0;a<n;a++){const o={};s.ranges.push(o),o.level=t.readUint8(),o.range_size=t.readUint24()}}}},lr.fourcc="ssix",lr),Xl=(dr=class extends d{constructor(){super(...arguments),this.box_name="DegradationPriorityBox"}parse(t){this.parseFullHeader(t);const e=(this.size-this.hdr_size)/2;this.priority=[];for(let i=0;i<e;i++)this.priority[i]=t.readUint16()}},dr.fourcc="stpd",dr),Jl=(fr=class extends d{constructor(){super(...arguments),this.box_name="SubTrackInformationBox"}parse(t){this.parseFullHeader(t),this.switch_group=t.readUint16(),this.alternate_group=t.readUint16(),this.sub_track_id=t.readUint32();const e=(this.size-this.hdr_size-8)/4;this.attribute_list=[];for(let i=0;i<e;i++)this.attribute_list[i]=t.readUint32()}},fr.fourcc="stri",fr),Zl=(ur=class extends d{constructor(){super(...arguments),this.box_name="SubTrackSampleGroupBox"}parse(t){this.parseFullHeader(t),this.grouping_type=t.readUint32();const e=t.readUint16();this.group_description_index=[];for(let i=0;i<e;i++)this.group_description_index[i]=t.readUint32()}},ur.fourcc="stsg",ur),td=(pr=class extends d{constructor(){super(...arguments),this.box_name="ShadowSyncSampleBox"}parse(t){this.parseFullHeader(t);const e=t.readUint32();if(this.shadowed_sample_numbers=[],this.sync_sample_numbers=[],this.version===0)for(let i=0;i<e;i++)this.shadowed_sample_numbers.push(t.readUint32()),this.sync_sample_numbers.push(t.readUint32())}write(t){this.version=0,this.flags=0,this.size=4+8*this.shadowed_sample_numbers.length,this.writeHeader(t),t.writeUint32(this.shadowed_sample_numbers.length);for(let e=0;e<this.shadowed_sample_numbers.length;e++)t.writeUint32(this.shadowed_sample_numbers[e]),t.writeUint32(this.sync_sample_numbers[e])}},pr.fourcc="stsh",pr),ed=(_r=class extends d{constructor(){super(...arguments),this.box_name="SyncSampleBox"}parse(t){this.parseFullHeader(t);const e=t.readUint32();if(this.version===0){this.sample_numbers=[];for(let i=0;i<e;i++)this.sample_numbers.push(t.readUint32())}}write(t){this.version=0,this.flags=0,this.size=4+4*this.sample_numbers.length,this.writeHeader(t),t.writeUint32(this.sample_numbers.length),t.writeUint32Array(this.sample_numbers)}},_r.fourcc="stss",_r),id=(mr=class extends d{constructor(){super(...arguments),this.box_name="StereoVideoBox"}parse(t){this.parseFullHeader(t);const e=t.readUint32();this.single_view_allowed=e&3,this.stereo_scheme=t.readUint32();const i=t.readUint32();for(this.stereo_indication_type=t.readString(i),this.boxes=[];t.getPosition()<this.start+this.size;){const s=M(t,!1,this.size-(t.getPosition()-this.start));if(s.code===H){const n=s.box;this.boxes.push(n),this[n.type]=n}else return}}},mr.fourcc="stvi",mr),sd=(gr=class extends p{constructor(){super(...arguments),this.box_name="SegmentTypeBox"}parse(t){let e=this.size-this.hdr_size;this.major_brand=t.readString(4),this.minor_version=t.readUint32(),e-=8,this.compatible_brands=[];let i=0;for(;e>=4;)this.compatible_brands[i]=t.readString(4),e-=4,i++}write(t){this.size=8+4*this.compatible_brands.length,this.writeHeader(t),t.writeString(this.major_brand,void 0,4),t.writeUint32(this.minor_version);for(let e=0;e<this.compatible_brands.length;e++)t.writeString(this.compatible_brands[e],void 0,4)}},gr.fourcc="styp",gr),rd=(xr=class extends d{constructor(){super(...arguments),this.box_name="CompactSampleSizeBox"}parse(t){if(this.parseFullHeader(t),this.sample_sizes=[],this.version===0){this.reserved=t.readUint24(),this.field_size=t.readUint8();const e=t.readUint32();if(this.field_size===4)for(let i=0;i<e;i+=2){const s=t.readUint8();this.sample_sizes[i]=s>>4&15,this.sample_sizes[i+1]=s&15}else if(this.field_size===8)for(let i=0;i<e;i++)this.sample_sizes[i]=t.readUint8();else if(this.field_size===16)for(let i=0;i<e;i++)this.sample_sizes[i]=t.readUint16();else l.error("BoxParser","Error in length field in stz2 box",t.isofile)}}},xr.fourcc="stz2",xr),nd=(yr=class extends d{constructor(){super(...arguments),this.box_name="SubSampleInformationBox"}parse(t){this.parseFullHeader(t);const e=t.readUint32();this.entries=[];let i;for(let s=0;s<e;s++){const n={};if(this.entries[s]=n,n.sample_delta=t.readUint32(),n.subsamples=[],i=t.readUint16(),i>0)for(let a=0;a<i;a++){const o={};n.subsamples.push(o),this.version===1?o.size=t.readUint32():o.size=t.readUint16(),o.priority=t.readUint8(),o.discardable=t.readUint8(),o.codec_specific_parameters=t.readUint32()}}}},yr.fourcc="subs",yr),ad=(br=class extends d{constructor(){super(...arguments),this.box_name="TAIClockInfoBox"}parse(t){this.time_uncertainty=t.readUint64(),this.clock_resolution=t.readUint32(),this.clock_drift_rate=t.readInt32();const e=t.readUint8();this.clock_type=(e&192)>>6}},br.fourcc="taic",br),od=(vr=class extends d{constructor(){super(...arguments),this.box_name="TrackEncryptionBox"}parse(t){if(this.parseFullHeader(t),t.readUint8(),this.version===0)t.readUint8();else{const e=t.readUint8();this.default_crypt_byte_block=e>>4&15,this.default_skip_byte_block=e&15}this.default_isProtected=t.readUint8(),this.default_Per_Sample_IV_Size=t.readUint8(),this.default_KID=X(t),this.default_isProtected===1&&this.default_Per_Sample_IV_Size===0&&(this.default_constant_IV_size=t.readUint8(),this.default_constant_IV=t.readUint8Array(this.default_constant_IV_size))}},vr.fourcc="tenc",vr),hd=(Ur=class extends d{constructor(){super(...arguments),this.box_name="TrackFragmentRandomAccessBox"}parse(t){this.parseFullHeader(t),this.track_ID=t.readUint32(),t.readUint24();const e=t.readUint8();this.length_size_of_traf_num=e>>4&3,this.length_size_of_trun_num=e>>2&3,this.length_size_of_sample_num=e&3,this.entries=[];const i=t.readUint32();for(let s=0;s<i;s++)this.version===1?(this.time=t.readUint64(),this.moof_offset=t.readUint64()):(this.time=t.readUint32(),this.moof_offset=t.readUint32()),this.traf_number=t["readUint"+8*(this.length_size_of_traf_num+1)](),this.trun_number=t["readUint"+8*(this.length_size_of_trun_num+1)](),this.sample_number=t["readUint"+8*(this.length_size_of_sample_num+1)]()}},Ur.fourcc="tfra",Ur),cd=(Sr=class extends p{constructor(){super(...arguments),this.box_name="hintmaxrelativetime"}parse(t){this.time=t.readUint32()}},Sr.fourcc="tmax",Sr),ld=(Br=class extends p{constructor(){super(...arguments),this.box_name="hintminrelativetime"}parse(t){this.time=t.readUint32()}},Br.fourcc="tmin",Br),dd=(wr=class extends p{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(t){this.bytessent=t.readUint32()}},wr.fourcc="totl",wr),fd=(zr=class extends p{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(t){this.bytessent=t.readUint32()}},zr.fourcc="tpay",zr),ud=(Er=class extends p{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(t){this.bytessent=t.readUint64()}},Er.fourcc="tpyl",Er),pd=(kr=class extends ro{},kr.fourcc="msrc",kr),_d=(Y=class extends p{constructor(){super(...arguments),this.box_name="TrackReferenceBox",this.references=[]}parse(t){for(;t.getPosition()<this.start+this.size;){const e=M(t,!0,this.size-(t.getPosition()-this.start));if(e.code===H){Y.allowed_types.includes(e.type)||l.warn("BoxParser",`Unknown track reference type: \'${e.type}\'`);const i=new oo(e.type,e.size,e.hdr_size,e.start);i.write===p.prototype.write&&i.type!=="mdat"&&(l.info("BoxParser","TrackReference "+i.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(t)),i.parse(t),this.references.push(i)}else return}}},Y.fourcc="tref",Y.allowed_types=["hint","cdsc","font","hind","vdep","vplx","subt","thmb","auxl","cdtg","shsc","aest"],Y),md=(Ir=class extends d{constructor(){super(...arguments),this.box_name="TrackExtensionPropertiesBox"}parse(t){for(this.parseFullHeader(t),this.track_ID=t.readUint32(),this.boxes=[];t.getPosition()<this.start+this.size;){const e=M(t,!1,this.size-(t.getPosition()-this.start));if(e.code===H){const i=e.box;this.boxes.push(i)}else return}}},Ir.fourcc="trep",Ir),gd=(Tr=class extends p{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(t){this.bytessent=t.readUint64()}},Tr.fourcc="trpy",Tr),xd=(Cr=class extends d{constructor(){super(...arguments),this.box_name="TrackSelectionBox"}parse(t){this.parseFullHeader(t),this.switch_group=t.readUint32();const e=(this.size-this.hdr_size-4)/4;this.attribute_list=[];for(let i=0;i<e;i++)this.attribute_list[i]=t.readUint32()}},Cr.fourcc="tsel",Cr),yd=(Ar=class extends d{constructor(){super(...arguments),this.box_name="TextConfigBox"}parse(t){this.parseFullHeader(t),this.config=t.readCString()}},Ar.fourcc="txtc",Ar),bd=(Pr=class extends p{constructor(){super(...arguments),this.box_name="TypeCombinationBox"}parse(t){const e=(this.size-this.hdr_size)/4;this.compatible_brands=[];for(let i=0;i<e;i++)this.compatible_brands[i]=t.readString(4)}},Pr.fourcc="tyco",Pr),vd=(Fr=class extends d{constructor(){super(...arguments),this.box_name="UserDescriptionProperty"}parse(t){this.parseFullHeader(t),this.lang=t.readCString(),this.name=t.readCString(),this.description=t.readCString(),this.tags=t.readCString()}},Fr.fourcc="udes",Fr),Ud=(Dr=class extends d{constructor(){super(...arguments),this.box_name="UncompressedFrameConfigBox"}parse(t){if(this.parseFullHeader(t),this.profile=t.readString(4),this.version!==1){if(this.version===0){this.component_count=t.readUint32(),this.component_index=[],this.component_bit_depth_minus_one=[],this.component_format=[],this.component_align_size=[];for(let i=0;i<this.component_count;i++)this.component_index.push(t.readUint16()),this.component_bit_depth_minus_one.push(t.readUint8()),this.component_format.push(t.readUint8()),this.component_align_size.push(t.readUint8());this.sampling_type=t.readUint8(),this.interleave_type=t.readUint8(),this.block_size=t.readUint8();const e=t.readUint8();this.component_little_endian=e>>7&1,this.block_pad_lsb=e>>6&1,this.block_little_endian=e>>5&1,this.block_reversed=e>>4&1,this.pad_unknown=e>>3&1,this.pixel_size=t.readUint32(),this.row_align_size=t.readUint32(),this.tile_align_size=t.readUint32(),this.num_tile_cols_minus_one=t.readUint32(),this.num_tile_rows_minus_one=t.readUint32()}}}},Dr.fourcc="uncC",Dr),Sd=(Lr=class extends d{constructor(){super(...arguments),this.box_name="DataEntryUrnBox"}parse(t){this.parseFullHeader(t),this.name=t.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=t.readCString())}write(t){this.version=0,this.flags=0,this.size=this.name.length+1+(this.location?this.location.length+1:0),this.writeHeader(t),t.writeCString(this.name),this.location&&t.writeCString(this.location)}},Lr.fourcc="urn ",Lr),Bd=(Hr=class extends p{constructor(){super(...arguments),this.box_name="WebVTTConfigurationBox"}parse(t){this.text=t.readString(this.size-this.hdr_size)}},Hr.fourcc="vttC",Hr),wd=(Or=class extends d{constructor(){super(...arguments),this.box_name="VvcNALUConfigBox"}parse(t){this.parseFullHeader(t);const e=t.readUint8();this.lengthSizeMinusOne=e&3}},Or.fourcc="vvnC",Or),zd=(Rr=class extends E{parse(t){const e=t.readUint16();this.first_output_sample=t.readUint16(),this.sample_offset=[];for(let s=0;s<e;s++)this.sample_offset[s]=t.readUint32();const i=this.description_length-4-4*e;this.num_output_samples=[],this.num_total_samples=[];for(let s=0;s<i/4;s++)this.num_output_samples[s]=t.readUint16(),this.num_total_samples[s]=t.readUint16()}},Rr.grouping_type="alst",Rr),Ed=(Mr=class extends E{parse(t){this.layerNumber=t.readUint8(),this.accurateStatisticsFlag=t.readUint8(),this.avgBitRate=t.readUint16(),this.avgFrameRate=t.readUint16()}},Mr.grouping_type="avll",Mr),kd=(Nr=class extends E{parse(t){this.subSequenceIdentifier=t.readUint16(),this.layerNumber=t.readUint8();const e=t.readUint8();this.durationFlag=e>>7,this.avgRateFlag=e>>6&1,this.durationFlag&&(this.duration=t.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=t.readUint8(),this.avgBitRate=t.readUint16(),this.avgFrameRate=t.readUint16()),this.dependency=[];const i=t.readUint8();for(let s=0;s<i;s++)this.dependency.push({subSeqDirectionFlag:t.readUint8(),layerNumber:t.readUint8(),subSequenceIdentifier:t.readUint16()})}},Nr.grouping_type="avss",Nr),Id=(Gr=class extends E{parse(t){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},Gr.grouping_type="dtrt",Gr),Td=(Vr=class extends E{parse(t){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},Vr.grouping_type="mvif",Vr),Cd=(jr=class extends E{parse(t){this.roll_distance=t.readInt16()}},jr.grouping_type="prol",jr),Ad=($r=class extends E{parse(t){const e=t.readUint8();this.num_leading_samples_known=e>>7,this.num_leading_samples=e&127}},$r.grouping_type="rap ",$r),Pd=(qr=class extends E{parse(t){if(this.operation_point_count=t.readUint16(),this.description_length!==2+(this.operation_point_count===1?2:this.operation_point_count*6)+9)l.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=t.readUint8Array(this.description_length-2);else{if(this.operation_point_count===1)this.target_rate_share=t.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(let e=0;e<this.operation_point_count;e++)this.available_bitrate[e]=t.readUint32(),this.target_rate_share[e]=t.readUint16()}this.maximum_bitrate=t.readUint32(),this.minimum_bitrate=t.readUint32(),this.discard_priority=t.readUint8()}}},qr.grouping_type="rash",qr),Fd=(Wr=class extends E{parse(t){this.roll_distance=t.readInt16()}},Wr.grouping_type="roll",Wr),Dd=(Yr=class extends E{parse(t){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},Yr.grouping_type="scif",Yr),Ld=(Kr=class extends E{parse(t){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},Kr.grouping_type="scnm",Kr),Hd=(Qr=class extends E{parse(t){this.reserved=t.readUint8();const e=t.readUint8();this.crypt_byte_block=e>>4,this.skip_byte_block=e&15,this.isProtected=t.readUint8(),this.Per_Sample_IV_Size=t.readUint8(),this.KID=X(t),this.constant_IV_size=0,this.constant_IV=0,this.isProtected===1&&this.Per_Sample_IV_Size===0&&(this.constant_IV_size=t.readUint8(),this.constant_IV=t.readUint8Array(this.constant_IV_size))}},Qr.grouping_type="seig",Qr),Od=(Xr=class extends E{parse(t){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},Xr.grouping_type="stsa",Xr),Rd=(Jr=class extends E{parse(t){const e=t.readUint8();this.NAL_unit_type=e&63}},Jr.grouping_type="sync",Jr),Md=(Zr=class extends E{parse(t){const e=t.readUint8();this.level_independently_decodable=e>>7}},Zr.grouping_type="tele",Zr),Nd=(tn=class extends E{parse(t){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},tn.grouping_type="tsas",tn),Gd=(en=class extends E{parse(t){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},en.grouping_type="tscl",en),Vd=(sn=class extends E{parse(t){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},sn.grouping_type="vipr",sn),jd=(rn=class extends p{},rn.fourcc="uuid",rn),rt=(nn=class extends d{},nn.fourcc="uuid",nn),$d=(an=class extends rt{constructor(){super(...arguments),this.box_name="LiveServerManifestBox"}parse(t){this.parseFullHeader(t),this.LiveServerManifest=t.readString(this.size-this.hdr_size).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/\'/g,"&#039;")}},an.uuid="a5d40b30e81411ddba2f0800200c9a66",an),qd=(on=class extends rt{constructor(){super(...arguments),this.box_name="PiffProtectionSystemSpecificHeaderBox"}parse(t){this.parseFullHeader(t),this.system_id=X(t);const e=t.readUint32();e>0&&(this.data=t.readUint8Array(e))}},on.uuid="d08a4f1810f34a82b6c832d8aba183d3",on),Wd=(hn=class extends rt{constructor(){super(...arguments),this.box_name="PiffSampleEncryptionBox"}},hn.uuid="a2394f525a9b4f14a2446c427c648df4",hn),Yd=(cn=class extends rt{constructor(){super(...arguments),this.box_name="PiffTrackEncryptionBox"}parse(t){this.parseFullHeader(t),this.default_AlgorithmID=t.readUint24(),this.default_IV_size=t.readUint8(),this.default_KID=X(t)}},cn.uuid="8974dbce7be74c5184f97148f9882554",cn),Kd=(ln=class extends rt{constructor(){super(...arguments),this.box_name="TfrfBox"}parse(t){this.parseFullHeader(t),this.fragment_count=t.readUint8(),this.entries=[];for(let e=0;e<this.fragment_count;e++){let i=0,s=0;this.version===1?(i=t.readUint64(),s=t.readUint64()):(i=t.readUint32(),s=t.readUint32()),this.entries.push({absolute_time:i,absolute_duration:s})}}},ln.uuid="d4807ef2ca3946958e5426cb9e46a79f",ln),Qd=(dn=class extends rt{constructor(){super(...arguments),this.box_name="TfxdBox"}parse(t){this.parseFullHeader(t),this.version===1?(this.absolute_time=t.readUint64(),this.duration=t.readUint64()):(this.absolute_time=t.readUint32(),this.duration=t.readUint32())}},dn.uuid="6d1d9b0542d544e680e2141daff757b2",dn),Xd=(fn=class extends jd{constructor(){super(...arguments),this.box_name="ItemContentIDProperty"}parse(t){this.content_id=t.readCString()}},fn.uuid="261ef3741d975bbaacbd9d2c8ea73522",fn);po(Wa),_o(Va);const Ya=540,Jd=2e6;let Wn=null,tt=null;self.onmessage=async r=>{const{inputHandle:t,outputHandle:e}=r.data;if(!t||!e){postMessage({type:"error",error:"Missing handles"});return}const i=typeof globalThis.VideoDecoder=="function"&&typeof globalThis.VideoEncoder=="function",s=typeof globalThis.OffscreenCanvas=="function";if(!i||!s){postMessage({type:"error",error:"Proxy generation requires WebCodecs + OffscreenCanvas (not available in this browser)."});return}try{postMessage({type:"progress",value:0,status:"Starting proxy transcode…"}),await Zd(t,e),postMessage({type:"done"})}catch(n){console.error("Proxy Worker Error:",n),postMessage({type:"error",error:n.message})}};async function Zd(r,t){const e=await r.getFile(),i=e.size,s=Ga(),n=Ga();let a=0;const o=new VideoDecoder({output:_=>{tf(_,h)},error:_=>console.error("Decoder error",_)}),h=new VideoEncoder({output:(_,g)=>{if(a===0&&g?.decoderConfig?.description&&(a=n.addTrack({width:g.decoderConfig.codedWidth||0,height:g.decoderConfig.codedHeight||0,avcDecoderConfigRecord:g.decoderConfig.description,timescale:1e6,media_duration:0})),a!==0){const x=new ArrayBuffer(_.byteLength);_.copyTo(x),n.addSample(a,x,{duration:_.duration||0,dts:_.timestamp,cts:_.timestamp,is_sync:_.type==="key"})}},error:_=>console.error("Encoder error",_)});s.onReady=_=>{const g=_.videoTracks[0];if(!g)throw new Error("No video track");const x=ef(g);o.configure({codec:g.codec,codedHeight:g.video.height,codedWidth:g.video.width,description:x}),s.setExtractionOptions(g.id,null,{nbSamples:1e3});const B=g.video.width/g.video.height,w=Ya,I=Math.round(w*B/2)*2;h.configure({codec:"avc1.4d001f",width:I,height:w,bitrate:Jd,framerate:30})},s.onSamples=(_,g,x)=>{for(const B of x){const w=B.is_sync?"key":"delta",I=new EncodedVideoChunk({type:w,timestamp:B.cts,duration:B.duration,data:B.data});o.decode(I)}};const c=e.stream().getReader();let f=0,u=0;for(;;){const{done:_,value:g}=await c.read();if(_)break;for(g.fileStart=f,f+=g.byteLength,s.appendBuffer(g),u++%5===0&&postMessage({type:"progress",value:f/i*100});o.decodeQueueSize>20;)await new Promise(x=>setTimeout(x,20))}s.flush(),await o.flush(),await h.flush();const m=n.stream?.buffer;if(m){const _=await t.createWritable();await _.write(m),await _.close()}else console.warn("Could not retrieve buffer from MP4Box")}function tf(r,t){if(!tt){const e=Ya,i=r.codedWidth/r.codedHeight,s=Math.round(e*i/2)*2;tt=new OffscreenCanvas(s,e),Wn=tt.getContext("2d")}if(Wn&&tt){Wn.drawImage(r,0,0,tt.width,tt.height);const e=r.timestamp%1e6<4e4,i=new VideoFrame(tt,{timestamp:r.timestamp,duration:r.duration});t.encode(i,{keyFrame:e}),i.close()}r.close()}function ef(r){const t=r.mdia?.minf?.stbl?.stsd?.entries[0];if(t&&t.avcC)return t.avcC.toBuffer()}})();\n',li=typeof self<"u"&&self.Blob&&new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);",Bi],{type:"text/javascript;charset=utf-8"});function Ji(h){let e;try{if(e=li&&(self.URL||self.webkitURL).createObjectURL(li),!e)throw"";const a=new Worker(e,{name:h?.name});return a.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(e)}),a}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(Bi),{name:h?.name})}}class Yi{activeJobs=new Map;async createProxy(e,a){if(this.activeJobs.has(e))return this.activeJobs.get(e);const d=this._runWorker(e,a);this.activeJobs.set(e,d);try{return await d}finally{this.activeJobs.delete(e)}}async _runWorker(e,a){const d=await ni(),c=e.replace("opfs://",""),u=await this.getHandle(d,c);if(!u)throw new Error("Input file not found: "+e);const B=c.split("/").pop()?.replace(/(\.[^.]+)$/,"_proxy.mp4")||"proxy.mp4",w=`projects/proxies/${B}`,O=await(await this.ensureDir(d,"projects/proxies")).getFileHandle(B,{create:!0});return new Promise((F,W)=>{const z=new Ji;z.onmessage=ht=>{const{type:ut,error:ft,status:$}=ht.data;ut==="done"?(F(`opfs://${w}`),z.terminate()):ut==="error"?(W(new Error(ft)),z.terminate()):ut==="progress"&&a?.onProgress?.({value:ht.data.value,status:$})},z.postMessage({inputHandle:u,outputHandle:O})})}async getHandle(e,a){const d=a.split("/").filter(Boolean),c=d.pop();let u=e;for(const B of d)try{u=await u.getDirectoryHandle(B)}catch{return null}return u.getFileHandle(c).catch(()=>null)}async ensureDir(e,a){const d=a.split("/").filter(Boolean);let c=e;for(const u of d)c=await c.getDirectoryHandle(u,{create:!0});return c}}const ji=new Yi,hi=h=>{const e=h.toLowerCase();return e.endsWith(".mp4")||e.endsWith(".webm")||e.endsWith(".mov")||e.endsWith(".m4v")?"video":e.endsWith(".mp3")||e.endsWith(".wav")||e.endsWith(".ogg")||e.endsWith(".m4a")||e.endsWith(".aac")?"audio":"other"};class Ki{blobUrlBySrc=new Map;pendingBySrc=new Map;metaBySrc=new Map;proxyEventListeners=new Set;onProxyEvent(e){return this.proxyEventListeners.add(e),()=>{this.proxyEventListeners.delete(e)}}emitProxyEvent(e){for(const a of this.proxyEventListeners)try{a(e)}catch{}}registerSrcMeta(e,a){const d=String(e??"");if(!d)return;const c={name:a?.name?String(a.name):void 0,mimeType:a?.mimeType?String(a.mimeType):void 0},u=this.metaBySrc.get(d);this.metaBySrc.set(d,{name:u?.name??c.name,mimeType:u?.mimeType??c.mimeType})}getSrcMeta(e){const a=String(e??"");if(a)return this.metaBySrc.get(a)}async ingest(e){try{const a=await ni(),d=Date.now(),c=e.name.replace(/[^a-zA-Z0-9.-]/g,"_"),u=`${d}_${c}`,{path:B}=await Ti({root:a,dirPath:"projects/imports",fileName:u,file:e}),w=`opfs://${B}`;return this.registerSrcMeta(w,{name:e.name,mimeType:e.type}),Wi(e)&&this.initProxy(w),w}catch(a){return console.error("Failed to ingest file to OPFS",a),URL.createObjectURL(e)}}async initProxy(e){try{this.emitProxyEvent({type:"proxy-start",originalSrc:e});const a=await ji.createProxy(e,{onProgress:({value:c,status:u})=>{this.emitProxyEvent({type:"proxy-progress",originalSrc:e,value:c,status:u})}});console.log("[mediaCache] Proxy ready:",a),this.emitProxyEvent({type:"proxy-ready",originalSrc:e,proxySrc:a});const d=await this.preloadToBlobUrl(a);this.blobUrlBySrc.set(e,d)}catch(a){const d=a instanceof Error?a.message:String(a);console.warn("[mediaCache] Proxy generation failed",a),this.emitProxyEvent({type:"proxy-failed",originalSrc:e,error:d})}}resolveForMediaElement(e){const a=String(e??"");if(!a)return;if(a.startsWith("blob:")||a.startsWith("data:"))return a;const d=this.blobUrlBySrc.get(a);if(d)return d;if(a.startsWith("opfs://")){this.warm(a);return}return a}async getFileFromOpfs(e){if(!e.startsWith("opfs://"))return;const a=e.replace("opfs://","");return await Gi(a)}async preloadToBlobUrl(e){if(!e||e.startsWith("blob:")||e.startsWith("data:"))return e;const a=this.blobUrlBySrc.get(e);if(a)return a;const d=this.pendingBySrc.get(e);if(d)return d;const c=(async()=>{if(e.startsWith("opfs://")){const U=await this.getFileFromOpfs(e);if(!U)throw new Error(`OPFS file not found: ${e}`);const O=URL.createObjectURL(U);return this.blobUrlBySrc.set(e,O),O}const u=await fetch(e,{cache:"force-cache"});if(!u.ok)throw new Error(`Failed to fetch ${e}: ${u.status}`);const B=await u.blob(),w=URL.createObjectURL(B);return this.blobUrlBySrc.set(e,w),w})().catch(u=>(console.warn("[mediaCache] preload failed:",e,u),e)).finally(()=>{this.pendingBySrc.delete(e)});return this.pendingBySrc.set(e,c),c}resolve(e){return this.blobUrlBySrc.get(e)??e}warm(e){e&&(e.startsWith("blob:")||e.startsWith("data:")||this.preloadToBlobUrl(e))}async warmAll(e,a){const d=[],c=new Set;for(const O of e){const F=String(O??"");if(!F||c.has(F))continue;c.add(F);const W=hi(F);W!=="video"&&W!=="audio"||d.push(F)}if(d.length===0)return;const u=Math.max(1,Math.floor(a?.concurrency??3)),B=a?.yieldBetween!==!1;let w=0;const U=Array.from({length:Math.min(u,d.length)},async()=>{for(;w<d.length;){const O=d[w++];await this.preloadToBlobUrl(O),B&&await new Promise(F=>setTimeout(F,0))}});await Promise.all(U)}warmFromEditorData(e){const a=new Set,d=Array.isArray(e)?e:[];for(const c of d){const u=c?.actions;if(Array.isArray(u))for(const B of u){const w=B?.data?.src,U=B?.data?.previewSrc;typeof w=="string"&&w&&a.add(w),typeof U=="string"&&U&&a.add(U)}}for(const c of a){const u=hi(c);(u==="video"||u==="audio")&&this.warm(c)}}}const Dt=new Ki,Wi=h=>{const e=String(h?.type??"").toLowerCase();return e.startsWith("video/")?!0:e.startsWith("audio/")?!1:!!String(h?.name??"").toLowerCase().match(/\.(mp4|mov|m4v|webm)(\?|#|$)/)},ui=h=>{if(!h)return;const a=h.split("#")[0].split("?")[0].toLowerCase(),d=a.lastIndexOf(".");if(d<0)return;const c=a.slice(d+1);if(c)return c==="m4a"||c==="m4v"?"mp4":c},Vi=h=>{const e=String(h??"").toLowerCase();if(e){if(e==="audio/mpeg"||e==="audio/mp3")return"mp3";if(e==="audio/wav"||e==="audio/x-wav")return"wav";if(e==="audio/ogg")return"ogg";if(e==="audio/aac")return"aac";if(e==="audio/mp4"||e==="video/mp4")return"mp4"}},fi=h=>{const e=ui(h);if(e)return e;const a=Dt.getSrcMeta(h),d=a?.name?ui(a.name):void 0;if(d)return d;const c=a?.mimeType?Vi(a.mimeType):void 0;if(c)return c};class Xi{howlBySrc={};activeByActionId={};getHowl(e){const a=Dt.resolve(e),d=a,c=d;if(this.howlBySrc[c])return this.howlBySrc[c];const u=fi(e)??fi(a),B=new Ai.Howl({src:[d],format:u?[u]:void 0,loop:!0,autoplay:!1,preload:!0});return this.howlBySrc[c]=B,B}unlock(){try{const e=Ai.Howler.ctx;e&&e.state==="suspended"&&e.resume()}catch{}}warm(e){e&&(Dt.warm(e),this.getHowl(e))}seekForEngineTime(e,a,d,c,u){const B=Number(u),w=Number.isFinite(B)?B:0,U=e.duration();if(!Number.isFinite(U)||U<=0){e.seek(Math.max(0,c-d+w),a);return}const O=(c-d+w)%U,F=O<0?O+U:O;e.seek(F,a)}start(e){const{actionId:a,src:d,startTime:c,time:u,engine:B}=e,w=Number(e.offset??0),U=Number.isFinite(w)?w:0,O=this.activeByActionId[a];if(O){const ft=this.getHowl(O.src);ft.rate(B.getPlayRate(),O.soundId);try{ft.playing(O.soundId)||ft.play(O.soundId)}catch{}B.isPlaying||this.seekForEngineTime(ft,O.soundId,O.startTime,u,O.offset);return}const F=this.getHowl(d),W=F.play();F.rate(B.getPlayRate(),W),this.seekForEngineTime(F,W,c,u,U);let z=performance.now();const ht=({time:ft})=>{const $=performance.now();if(!B.isPlaying){this.seekForEngineTime(F,W,c,ft,U);return}$-z<120||(z=$,this.seekForEngineTime(F,W,c,ft,U))},ut=({rate:ft})=>{F.rate(ft,W)};B.on("afterSetTime",ht),B.on("afterSetPlayRate",ut),this.activeByActionId[a]={src:d,startTime:c,offset:U,soundId:W,engine:B,lastResyncAtMs:z,time:ht,rate:ut}}stop(e){const{actionId:a}=e,d=this.activeByActionId[a];if(!d)return;const c=this.getHowl(d.src);try{c.stop(d.soundId)}catch{}d.time&&d.engine.off("afterSetTime",d.time),d.rate&&d.engine.off("afterSetPlayRate",d.rate),delete this.activeByActionId[a]}}const Rt=new Xi;class qi{primaryEl=null;secondaryEl=null;activeEl=null;rowData=[];boundEngine=null;vfcHandle=null;rafHandle=null;isPlaying=!1;playbackRate=1;lastVideoClip=null;lastKnownTime=0;constructor(){this.tickLoop=this.tickLoop.bind(this)}attachPrimary(e){this.primaryEl=e,this.initElement(e)}attachSecondary(e){this.secondaryEl=e,this.initElement(e)}initElement(e){e&&(e.style.position="absolute",e.style.top="0",e.style.left="0",e.style.width="100%",e.style.height="100%",e.style.objectFit="contain",e.style.opacity="0",e.preload="auto")}attach(e){this.attachPrimary(e)}setEditorData(e){this.rowData=e}claimVideo(e){this.isPlaying=!!e.isPlaying;const a=Number(e.time);Number.isFinite(a)&&(this.lastKnownTime=a,this.updateState(a))}bindEngine(e){this.unbindEngine(),this.boundEngine=e,this.startLoop()}unbindEngine(){this.stopLoop(),this.boundEngine=null}startLoop(){this.rafHandle||this.vfcHandle||this.tickLoop()}stopLoop(){this.vfcHandle&&this.activeEl?.cancelVideoFrameCallback&&this.activeEl.cancelVideoFrameCallback(this.vfcHandle),this.rafHandle&&cancelAnimationFrame(this.rafHandle),this.vfcHandle=null,this.rafHandle=null}tickLoop(){if(!this.boundEngine)return;const e=this.boundEngine.getTime();this.lastKnownTime=e,this.updateState(this.lastKnownTime),this.rafHandle=requestAnimationFrame(()=>{this.rafHandle=null,this.tickLoop()})}updateState(e){if(!this.primaryEl||!this.secondaryEl)return;const a=this.findClipAtTime(e),d=e+.5;let c=this.findClipAtTime(d);if((!c||a&&c.actionId===a.actionId)&&(c=this.findNextVideoClipAfter(e)),a)this.isLoaded(this.primaryEl,a.src)?this.makeActive(this.primaryEl,a,e):this.isLoaded(this.secondaryEl,a.src)?this.makeActive(this.secondaryEl,a,e):(this.loadVideo(this.primaryEl,a.src),this.makeActive(this.primaryEl,a,e)),this.lastVideoClip=a;else{const u=this.findNextVideoClipStartAfter(e);if(u!=null&&u-e>0&&u-e<=.1&&this.lastVideoClip!=null&&e-this.lastVideoClip.end>=0&&e-this.lastVideoClip.end<=.1&&this.activeEl!=null){const w=this.activeEl;if(!w)return;const U=Math.max(0,this.lastVideoClip.end-this.lastVideoClip.start+this.lastVideoClip.offset-.02),O=w===this.primaryEl?this.secondaryEl:this.primaryEl;O&&(O.style.opacity="0"),w.style.opacity="1";try{w.paused||w.pause();const F=w.duration;Number.isFinite(F)&&F>0?w.currentTime=Math.min(U,Math.max(0,F-.05)):w.currentTime=Math.max(0,U)}catch{}}else this.primaryEl&&(this.primaryEl.style.opacity="0"),this.secondaryEl&&(this.secondaryEl.style.opacity="0"),this.activeEl=null,this.primaryEl&&!this.primaryEl.paused&&this.primaryEl.pause(),this.secondaryEl&&!this.secondaryEl.paused&&this.secondaryEl.pause()}if(c&&(!a||c.actionId!==a.actionId)){const u=this.primaryEl===this.activeEl?this.secondaryEl:this.primaryEl;u&&!this.isLoaded(u,c.src)&&(this.loadVideo(u,c.src),u.currentTime=c.offset)}}makeActive(e,a,d){const c=e===this.primaryEl?this.secondaryEl:this.primaryEl;c&&(c.style.opacity="0"),e.style.opacity="1",this.activeEl=e;const u=Math.max(0,d-a.start+a.offset);Math.abs(e.currentTime-u)>.05&&(e.currentTime=u),this.isPlaying?e.paused&&(e.play().catch(()=>{}),e.playbackRate=this.playbackRate):e.paused||e.pause()}loadVideo(e,a){const d=String(a??"");if(!d||e.getAttribute("data-src")===d&&e.getAttribute("data-src-url"))return;e.setAttribute("data-src",d);const c=Dt.resolveForMediaElement(d);if(c){if(e.getAttribute("data-src-url")===c)return;e.src=c,e.setAttribute("data-src-url",c),e.load();return}d.startsWith("opfs://")&&Dt.preloadToBlobUrl(d).then(u=>{e.getAttribute("data-src")===d&&(!u||u.startsWith("opfs://")||e.getAttribute("data-src-url")!==u&&(e.src=u,e.setAttribute("data-src-url",u),e.load()))}).catch(()=>{})}isLoaded(e,a){const d=String(a??"");return d?e.getAttribute("data-src")===d&&!!e.getAttribute("data-src-url"):!1}findClipAtTime(e){const a=[];for(const d of this.rowData)for(const c of d.actions)if(c.effectId==="effect1"&&e>=c.start&&e<c.end){const u=c.data,B=u?.previewSrc||u?.src;B&&a.push({actionId:c.id,src:B,start:c.start,end:c.end,offset:Number(u.offset)||0,layer:Number(u.videoLayer)||0})}return a.length===0?null:a.sort((d,c)=>c.layer-d.layer)[0]}findNextVideoClipStartAfter(e){let a=null;for(const d of this.rowData)for(const c of d.actions){if(c.effectId!=="effect1")continue;const u=Number(c.start);if(!Number.isFinite(u)||u<=e)continue;const B=c.data;if((B?.previewSrc||B?.src)&&(Number(B?.videoLayer),a==null||u<a)){a=u;continue}}return a}findNextVideoClipAfter(e){let a=null;for(const d of this.rowData)for(const c of d.actions){if(c.effectId!=="effect1")continue;const u=Number(c.start),B=Number(c.end);if(!Number.isFinite(u)||!Number.isFinite(B)||u<=e)continue;const w=c.data,U=w?.previewSrc||w?.src;if(!U)continue;const O=Number(w?.videoLayer)||0,F={actionId:c.id,src:U,start:u,end:B,offset:Number(w?.offset)||0,layer:O};if(!a){a=F;continue}if(F.start<a.start){a=F;continue}F.start===a.start&&F.layer>a.layer&&(a=F)}return a}play(){this.isPlaying=!0,this.activeEl?.paused&&this.activeEl.play().catch(()=>{})}pause(){this.isPlaying=!1,this.activeEl?.pause(),this.secondaryEl?.pause(),this.primaryEl?.pause()}setRate(e){this.playbackRate=e,this.activeEl&&(this.activeEl.playbackRate=e)}seek(e){this.lastKnownTime=e,this.updateState(e),this.activeEl}warm(e){Dt.warm(e)}releaseVideo(e){}setActive(e){}}const It=new qi,Zi=160,$i=5,ts={effect0:{id:"effect0",name:"Play audio",source:{start:({action:h,engine:e,isPlaying:a,time:d})=>{if(a){const{src:c,offset:u}=h.data;Rt.warm(c),Rt.start({actionId:h.id,src:c,startTime:h.start,engine:e,time:d,offset:u})}},enter:({action:h,engine:e,isPlaying:a,time:d})=>{if(a){const{src:c,offset:u}=h.data;Rt.warm(c),Rt.start({actionId:h.id,src:c,startTime:h.start,engine:e,time:d,offset:u})}},leave:({action:h})=>{Rt.stop({actionId:h.id})},stop:({action:h})=>{Rt.stop({actionId:h.id})}}},effect2:{id:"effect2",name:"Play video audio",source:{start:({action:h,engine:e,isPlaying:a,time:d})=>{if(a){const{src:c,offset:u}=h.data;Rt.warm(c),Rt.start({actionId:h.id,src:c,startTime:h.start,engine:e,time:d,offset:u})}},enter:({action:h,engine:e,isPlaying:a,time:d})=>{if(a){const{src:c,offset:u}=h.data;Rt.warm(c),Rt.start({actionId:h.id,src:c,startTime:h.start,engine:e,time:d,offset:u})}},leave:({action:h})=>{Rt.stop({actionId:h.id})},stop:({action:h})=>{Rt.stop({actionId:h.id})}}},effect1:{id:"effect1",name:"Play video",source:{start:({action:h,engine:e,isPlaying:a,time:d})=>{const{src:c,previewSrc:u,offset:B,videoLayer:w}=h.data??{},U=u||c;U&&It.warm(U),It.claimVideo({actionId:String(h.id),layer:Number.isFinite(Number(w))?Number(w):0,src:U,engine:e,isPlaying:a,time:d,actionStart:Number(h.start),offset:B})},enter:({action:h,engine:e,isPlaying:a,time:d})=>{const{src:c,previewSrc:u,offset:B,videoLayer:w}=h.data??{},U=u||c;U&&It.warm(U),It.claimVideo({actionId:String(h.id),layer:Number.isFinite(Number(w))?Number(w):0,src:U,engine:e,isPlaying:a,time:d,actionStart:Number(h.start),offset:B})},update:({action:h,engine:e,time:a,isPlaying:d})=>{const{src:c,previewSrc:u,offset:B,videoLayer:w}=h.data??{},U=u||c;It.claimVideo({actionId:String(h.id),layer:Number.isFinite(Number(w))?Number(w):0,src:U,engine:e,isPlaying:d,time:a,actionStart:Number(h.start),offset:B})},leave:({action:h})=>{It.releaseVideo(String(h.id))},stop:({action:h})=>{It.releaseVideo(String(h.id))}}}},es="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAMAAADDpiTIAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAtlQTFRFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANlVkNAAAAPN0Uk5TABYvRE1VWkg1HAcYU4Kt2vj/4ruTYikBCZnX7q9lGwVQ9P7KbhUfiej6Pi6jy1cCHqLUD435wqogGrj1C+vlZgMEj85AEror2REndyrp2OG9MBne/JsIx4Cc42jIOrMiBtCGNiUU/w5Fdaj3iHs8HW/E7CP2vpXTRsGOtl79+xfGNPNK39xM8DKYKLQN8dKSas0MPaxPp22ULKUK8p9Bv2uD1XI5EyaRkELPcOctOO9zO90/ECQ37eDA29ZLw7whQ7Uz5MzJ0VJgsOahTre56ough4FsjHSxVGFJf1h2ioRxhX5fxWl6plmXR2eWrlGeZFudikazJAAAFoFJREFUeJztnXt8FdW1x2fi60NauARuBNsomEbAABJALiDRAEEN70cVJFIlvK7FUIu89BYQFDE+uTxslZAHArkXKpILBBIVCVQpj/KMBotepQIV/VihvQiW6OGCiBxgzzlrnzNrZs6s3/eP/rFnnb1X5Us4mfnN3qYBRGO63QBwFwggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHG8IYH7HKSPu9P8ed7sZWbgtwI/O/tkHjZwd+My1joThpgANv0g0T6gvxZ924BNnuxGKawI0Mr+sfzRUQcJpBz5wqhu5uCRAE9IP+YaHkqr5e5GNKwI0N789TCxNMs3drL1IxwUB0sy/H9Eov76qhq0V4LwAbU3zQ82P3LDna5ZWgOG8AJfXOaX/oYREc7P9rYAzOCtAR3NvZB9M3dPqbXtbAWdxVIDG174b8WdbmmalfZ2AczgoQBdzZ1Sfb2O+aVMn4DzOCXC7uS3aKeJurrCjExCEYwI0Sd4S/SQpta9aG/0sIAinBOixOYJv/wri09bjcaGdOCRAL9O2L/G3rvnGrqmAUwKkNdpo42wZ5gobZxOOIwIMMN+ydb5Mc81Xtk4oGCcEGGi+bveUddtXUh8ngZA4IcDgcoZJux86iseENuCAAPeu4Zm3p7mIZ2JR8AvQ6whbqKO3uZBrajGwCzDULA1XEt88admgM0nQLXtGmeaS+vS0QLZZ83JU3QF2AcYsDn29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",is="data:image/png;base64,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AAMEwIYANCAANgRgAwEYIAA2BKABAbAhABsIwAABsCEADQiADQHYQAAGCIANAWhAAGwIwAYCMEAAbAhAAwJgQwA2EIABAmBDABoQABsCsIEADBAAGwLQgADYEIANBGCAANgQgAYEwIYAbCAAAwTAhgA0IAA2BGADARggADYEoAEBsCEAGwjAAAGwIQANCIANAdhAAAYIgA0BaEAAbAjABgIwQABsCEADAmBDADYQgAECYEMAGhAAGwKwgQAMEAAbAtCAANgQgA0EYIAA2BCABgTAhgBsIAADBMCGADQgADYEYAMBGCAANgSgAQGwIQAbCMAAAbAhAA0IgA0B2EAABgiADQFoQABsCMAGAjBAAGwIQAMCYEMANhCAAQJgQwAaEAAbArCBAAwQABsC0IAA2BCADQRggADYEIAGBMCGAGwgAAMEwIYANCAANgRgAwEYIAA2BKABAbAhABsIwAABsCEADQiADQHYQAAGCIANAWhAAGwIwAYCMEAAbAhAAwJgQwA2EIABAmBDABoQABsCsIEADBAAGwLQgADYEIANBGCAANgQgAYEwIYAbCAAAwTAhgA0IAA2BGADARggADYEoAEBsCEAGwjAAAGwIQANCIANAdhAAAYIgA0BaEAAbAjABgIwQABsCEADAmBDADYQgAECYEMAGhAAGwKwgQAMEAAbAtCAANgQgA0EYIAA2BCABgTAhgBsIAADBMCGADQgADYEYAMBGCAANgSgAQGwIQAbCMAAAbAhAA0IgA0B2EAABgiADQFoQABsCMAGAjBAAGwIQAMCYEMANhCAAQJgQwAaEAAbArCBAAwQABsC0IAA2BCADQRggADYEIAGBMCGAGwgAAMEwIYANCAANgRgAwEYIAA2BKABAbAhABsIwAABsCEADQiADQHYQAAGCIANAWhAAGwIwAYCMEAAbAhAAwJgQwA2EIABAmBDABoQABsCsIEADBAAGwLQgADYEIANBGCAANgQgAYEwIYAbCAAAwTAhgA0IAA2BGADARggADYEoAEBsCEAGwjAAAGwIQANCIANAdhAAAYIgA0BaEAAbAjABgIwQABsCEADAmBDADYQgAECYEMAGhAAGwKwgQAMEAAbAtCAANgQgA0EYIAA2BCABgTAhgBsIAADBMCGADQgADYEYAMBGCAANgSgAQGwIQAbCMAAAbAhAA0IgA0B2EAABgiA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",ss="data:image/png;base64,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",rs="data:image/png;base64,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AIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKgu8P8Ho19MJOV4IQAAAABJRU5ErkJggg==",ns="data:image/png;base64,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",as="data:image/png;base64,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UEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFDp44LZfl+Tugdtne3ssyZ1Jbkxyz+BZYH98Q5KTkhyX5OsGz8L2deyoDa8kWRu1cdikzyX5VJI/Xv9vnrQjyX2Dtn10kvsHbXu7+vYkP5XZNzgvGTwLfE0CgGWyluRjSX4tyRcHz7JdCIDt4QVJzkvy00kOGjwLbIprAFgmK0l+NMl/J3nb4Flgwy8l+d8kPxsHf5aIAGAZHZrk4iQfSnLI4FnodXCS9yf5vcz2SVgqIy8ChAP1M0mOTHJ2vJXFYq0k+WhmZ6RgKTkDwLI7K8m7Rg9BnXfHwZ8l5yJApmB3ktOTXDF6kAFcBLh4pyf5p8y+fsLScgaAKVhNcmF8QWbrrSS5IPY1JkAAMBU7k7xx9BBM3puSnDx6CJgHAcCU/OLoAZi8t48eAOZFADAl35vkhNFDMFnflOSVo4eAeREATMlKku8bPQST9ep4758JEQBMzctGD8BkfcfoAWCeBABT88LRAzBZLxg9AMzTatwHgGk5cvQATJZ9iylZW03y6OgpYI52jR6AyfrK6AFgjh5eTXLX6Clgju4ePQCTZd9iSu5aTfL50VPAHN04egAmy77FlHx+NclVo6eAObpy9ABMlq+VTMmVq0k+NXoKmJPbklw/eggm67okd4weAubk06tJrk5yw+hJYA4+nNmTAWErPJHkT0YPAXPwH0mu27gPwK+PnATm4L4kvzt6CCbvgnQ+AplpOS958kZAf5Xkn8fNAgfst5LcM3oIJu/uzCIAltVnk/x18vT7Wr8ss4tcjhoxERyAf8vsGQCN97TYkdnZjxGOTud3w4cnuSLJKaMHgX30QJLvSfK55Om3Ar4hyZsze58LlsXtSd6QzoM/YzyS5IeS3DJ6ENgHu5Ock/WDf/LVzwL4myS/kOTxBQ4F++u2JK9NcuvoQahze2YRcPvoQWATHk/ylqyf+t/wTA8D+mCS7487BLK9XZ/Zs9n92B+j/HtmbwNcM3oQ+Bq+nOQ1ST605wf29jTAK5KcmuQv4mFBbC8PJnl3klcluXnwLHBbklcnOT/JQ2NHgadZS/LnSV6e5B/39y/ZmeSyzB6ysmZZg9ZdSd6b5LjwVDsy7t9kxwJe3zI5Psn7MvtJgdGfL1bv2pXk49nERaorz/YbnuKYJKdnFgQvXv81bJXdmd117cbMbu/7L0keGzrR9uSnALafQzJ7e+q0JCcleV72frYV5uHeJDdldmO/y9d/DUycMwDAflGlAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSALDcdg3c9qMDtw0cIAEAy+3RjDkQP5yx8QEcIAEAy++mAdv8woBtAnMkAGD5XTtgm9cM2CYwRwIAlt/flWwTAHiKI5Lcn2RtQeu+JIcv5JUBW8YZAFh+Dyd53wK3d2GSRxa4PQBgL45Mcnu2/rv/25I8Z0GvCQDYhHOy9QFw1sJeDQCwaRdm6w7+v7PA1wEA7IODklya+R/8L4lrhgBgW1tJcn6S3ZnPwf+iOPgDwNJ4U5IvZf8P/DcneePCpwYADtjhSX41yV3Z/IH/riTnxs/6w6StjB4AWIhDkpyR5AeT7EzyoiTHrH/s3syeJ3Btkr9fX48NmBFYoP8HvfB9x+ddI4wAAAAASUVORK5CYII=",{Option:As}=si.Select,os=[.2,.5,1,1.5,2],cs=({timelineState:h,autoScrollWhenPlay:e,scale:a,scaleWidth:d,startLeft:c,editorData:u,selectedActionId:B,onDeleteSelectedClip:w,onSplitSelectedClip:U,canUndo:O,canRedo:F,onUndo:W,onRedo:z})=>{const[ht,ut]=C.useState(!1),[ft,$]=C.useState(0),[Mt,tt]=C.useState(!1),we=C.useRef(0),Ue=C.useRef(0),Qe=C.useRef(0),ae=C.useRef(0),Ae=C.useRef(0),oe=C.useRef(0);C.useRef(null);const Vt=!!B,Gt=(()=>{if(!B)return null;const k=Array.isArray(u)?u:[];for(const et of k){const rt=et?.actions;if(Array.isArray(rt))for(const Z of rt){if(String(Z?.id)!==B)continue;const it=Number(Z?.start),nt=Number(Z?.end);return!Number.isFinite(it)||!Number.isFinite(nt)?null:{start:it,end:nt}}}return null})(),ot=!!(Gt&&ft>Gt.start&&ft<Gt.end),Ct=k=>{const et=Array.isArray(u)?u:[];for(const rt of et){const Z=rt?.actions;if(Array.isArray(Z))for(const it of Z){if(it?.effectId!=="effect1")continue;const nt=Number(it?.start),ct=Number(it?.end);if(!(!Number.isFinite(nt)||!Number.isFinite(ct))&&k>=nt&&k<ct)return!0}}return!1},yt=k=>{Ct(k)};C.useEffect(()=>{if(!h.current)return;const k=h.current;It.bindEngine(k);const et=()=>{ut(!0),It.play()},rt=()=>{ut(!1),It.pause()},Z=({time:nt})=>{$(nt),yt(nt)},it=({time:nt})=>{const ct=performance.now();if(!(ct-we.current<33)&&(we.current=ct,$(nt),yt(nt),e.current)){const _t=nt*(d/a)+c-500,Pt=h.current;Pt&&Pt.setScrollLeft(_t)}};return k.listener.on("play",et),k.listener.on("paused",rt),k.listener.on("afterSetTime",Z),k.listener.on("setTimeByTick",it),()=>{k.listener.off("play",et),k.listener.off("paused",rt),k.listener.off("afterSetTime",Z),k.listener.off("setTimeByTick",it),It.unbindEngine()}},[u]);const St=()=>{h.current&&(h.current.isPlaying?h.current.pause():(Rt.unlock(),h.current.play({autoEnd:!0})))},Xt=k=>{h.current&&(h.current.setPlayRate(k),It.setRate(k))},Ot=k=>{const et=(parseInt(k%1*100+"")+"").padStart(2,"0"),rt=(parseInt(k/60+"")+"").padStart(2,"0"),Z=(parseInt(k%60+"")+"").padStart(2,"0");return b.jsx(b.Fragment,{children:`${rt}:${Z}.${et.replace("0.","")}`})},Jt=()=>{const k=[],et=new Set,rt=Array.isArray(u)?u:[];for(const Z of rt){const it=Z?.actions;if(Array.isArray(it))for(const nt of it){const ct=nt?.data?.src;if(!ct)continue;const Ut=String(ct);et.has(Ut)||(et.add(Ut),k.push(Ut))}}return k},be=(k,et)=>{const rt=URL.createObjectURL(k),Z=document.createElement("a");Z.href=rt,Z.download=et,document.body.appendChild(Z),Z.click(),Z.remove(),setTimeout(()=>URL.revokeObjectURL(rt),3e3)},se=async()=>{if(!Mt){tt(!0);try{const k=Jt(),et=new FormData;et.append("timeline",JSON.stringify({editorData:u}));for(const it of k){if(it.startsWith("opfs://")){const _t=await Dt.getFileFromOpfs(it);if(_t){et.append("assets",_t,encodeURIComponent(it));continue}}const nt=Dt.resolve(it),ct=await fetch(nt);if(!ct.ok)throw new Error(`Failed to fetch asset: ${it} (${ct.status})`);const Ut=await ct.blob();et.append("assets",Ut,encodeURIComponent(it))}const rt=await fetch("/export",{method:"POST",body:et});if(!rt.ok){const it=await rt.text().catch(()=>"");throw new Error(it||`Export failed (${rt.status})`)}const Z=await rt.blob();be(Z,"export.mp4")}finally{tt(!1)}}};return b.jsxs("div",{className:"timeline-player",children:[b.jsx("div",{className:"play-control",role:"button",tabIndex:0,"aria-label":ht?"Pause":"Play",onClick:()=>{Date.now()-Ue.current<450||St()},onPointerUp:k=>{k.pointerType!=="mouse"&&(Ue.current=Date.now(),St())},children:b.jsx("img",{src:ht?is:es,alt:"",draggable:!1})}),b.jsx("div",{className:"time",children:Ot(ft)}),b.jsxs("div",{className:"history-tools",children:[b.jsx("button",{type:"button",className:"history-tool",disabled:!O,"aria-label":"Undo",onClick:()=>{Date.now()-Ae.current<450||O&&W()},onPointerUp:k=>{k.pointerType!=="mouse"&&(Ae.current=Date.now(),O&&W())},children:b.jsx("img",{src:ss,alt:"",draggable:!1})}),b.jsx("button",{type:"button",className:"history-tool",disabled:!F,"aria-label":"Redo",onClick:()=>{Date.now()-oe.current<450||F&&z()},onPointerUp:k=>{k.pointerType!=="mouse"&&(oe.current=Date.now(),F&&z())},children:b.jsx("img",{src:rs,alt:"",draggable:!1})})]}),b.jsx("div",{className:"rate-control",children:b.jsx(si.Select,{size:"small",defaultValue:1,style:{width:120},onChange:Xt,children:os.map(k=>b.jsx(As,{value:k,children:`${k.toFixed(1)}x`},k))})}),b.jsxs("div",{className:"clip-tools",children:[b.jsx("button",{type:"button",className:"clip-tool clip-tool-delete",disabled:!Vt,"aria-label":"Delete selected clip",onClick:()=>{Date.now()-Qe.current<450||Vt&&w()},onPointerUp:k=>{k.pointerType!=="mouse"&&(Qe.current=Date.now(),Vt&&w())},children:b.jsx("img",{src:ns,alt:"",draggable:!1})}),b.jsx("button",{type:"button",className:"clip-tool clip-tool-split",disabled:!ot,"aria-label":"Split selected clip at cursor",onClick:()=>{Date.now()-ae.current<450||ot&&U()},onPointerUp:k=>{k.pointerType!=="mouse"&&(ae.current=Date.now(),ot&&U())},children:b.jsx("img",{src:as,alt:"",draggable:!1})})]}),b.jsx("div",{className:"export-control",children:b.jsx(si.Button,{size:"small",type:"primary",loading:Mt,onClick:se,children:"Export"})})]})};function ds(){const h=()=>typeof window>"u"?!1:typeof navigator<"u"&&(navigator.maxTouchPoints??0)>0,[e,a]=C.useState(h);return C.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const d=window.matchMedia("(pointer: coarse)"),c=()=>a(!!d.matches||h());return c(),typeof d.addEventListener=="function"?(d.addEventListener("change",c),()=>d.removeEventListener("change",c)):(d.addListener(c),()=>d.removeListener(c))},[]),e}const ls="data:image/png;base64,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",hs="data:image/png;base64,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",us="data:image/png;base64,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",gi=()=>[{id:"0",actions:[]},{id:"1",actions:[]},{id:"2",actions:[]},{id:"3",actions:[]}],We=5,pi=.001,fs=.01,gs=.03,lt=h=>{const e=Number(h);return Number.isFinite(e)?Math.round(e/pi)*pi:0},ri=(h,e)=>{const a=Math.max(0,lt(h)),d=Math.max(0,lt(e));return d<=a?{start:a,end:a+fs}:{start:a,end:d}},ii=h=>{let e=!1;const a=h.map(d=>{const u=(Array.isArray(d?.actions)?d.actions:[]).map(B=>{const w=Number(B?.start),U=Number(B?.end);if(!Number.isFinite(w)||!Number.isFinite(U))return B;const O=ri(w,U);return O.start===w&&O.end===U?B:(e=!0,{...B,start:O.start,end:O.end})});return{...d,actions:u}});return e?a:h},wi=({item:h,hint:e,isDragging:a})=>{const[d,c]=C.useState(()=>Dt.resolveForMediaElement(h.src));return C.useEffect(()=>{let u=!1;const B=Dt.resolveForMediaElement(h.src);return B?(c(B),()=>{u=!0}):(c(void 0),String(h.src??"").startsWith("opfs://")&&Dt.preloadToBlobUrl(h.src).then(w=>{u||c(w)}).catch(()=>{u||c(void 0)}),()=>{u=!0})},[h.src]),b.jsxs("div",{className:`footage-card${a?" is-dragging":""}`,children:[b.jsx("div",{className:"footage-name",children:h.name}),h.kind==="video"?d?b.jsx("video",{className:"footage-preview",src:d,muted:!0,preload:"metadata",draggable:!1,onDragStart:u=>u.preventDefault(),playsInline:!0}):b.jsx("div",{className:"footage-preview","aria-label":"Loading preview"}):d?b.jsx("audio",{className:"footage-audio",src:d,controls:!0,preload:"metadata",draggable:!1,onDragStart:u=>u.preventDefault()}):b.jsx("div",{className:"footage-audio","aria-label":"Loading audio"}),b.jsx("div",{className:"footage-kind",children:e})]})},ps=({item:h,hint:e})=>{const{attributes:a,listeners:d,setNodeRef:c,transform:u,isDragging:B}=Wt.useDraggable({id:`footage-${h.id}`,data:{item:h}}),w=u?{transform:`translate3d(${u.x}px, ${u.y}px, 0)`}:void 0;return b.jsx("div",{ref:c,style:w,...d,...a,children:b.jsx(wi,{item:h,hint:e,isDragging:B})})},bi=h=>String(h??"").toLowerCase().match(/\.(mp3|wav|m4a|aac|ogg)(\?|#|$)/)?"audio":"video",ms=(h,e)=>{try{const a=String(h??"").split("/").pop()||"";return decodeURIComponent(a.split("?")[0].split("#")[0])||`Footage ${e+1}`}catch{return`Footage ${e+1}`}},mi=h=>{const e=String(h?.type??"").toLowerCase();return e.startsWith("audio/")?"audio":e.startsWith("video/")?"video":bi(h?.name??"")},Bs=({footageUrls:h,footageFiles:e,footageFileHandles:a,autoPlaceFootage:d=!1})=>{const[c,u]=C.useState(()=>gi()),[B,w]=C.useState(null),[U,O]=C.useState([]),[F,W]=C.useState([]),z=C.useRef(c);C.useEffect(()=>{It.setEditorData(c)},[c]);const ht=ds(),[ut,ft]=C.useState(!1),$=C.useRef(null),Mt=C.useRef(null),tt=C.useRef(null),we=C.useRef(!0),[Ue,Qe]=C.useState("");C.useEffect(()=>{},[]);const ae=C.useMemo(()=>{const t=Array.isArray(h)?h.filter(Boolean):[];return t.length?t.map((r,s)=>({id:`url-${s}`,kind:bi(r),name:ms(r,s),src:r,defaultDuration:10})):[]},[h]),[Ae,oe]=C.useState([]),[Vt,ve]=C.useState([]);C.useEffect(()=>{const t=Array.isArray(e)?e.filter(Boolean):[];if(t.length===0){oe([]);return}let r=!1;return(async()=>{const o=await Promise.all(t.map(async(A,n)=>{const l=await Dt.ingest(A);return{id:`file-${n}`,kind:mi(A),name:A.name||`Footage ${n+1}`,src:l,defaultDuration:10}}));r||oe(o)})(),()=>{r=!0}},[e]),C.useEffect(()=>{const t=Array.isArray(a)?a.filter(Boolean):[];if(t.length===0){ve([]);return}let r=!1;const s=[];return(async()=>{const A=[];for(let n=0;n<t.length;n++){const l=t[n];try{const g=await l.getFile();if(r)return;const m=URL.createObjectURL(g);s.push(m),Dt.registerSrcMeta(m,{name:g.name||l?.name,mimeType:g.type}),A.push({id:`handle-${n}`,kind:mi(g),name:g.name||l?.name||`Footage ${n+1}`,src:m,defaultDuration:10})}catch(g){console.warn("[MeliesVideoEditor] Failed to load file handle",g)}}r||ve(A)})(),()=>{r=!0;for(const A of s)try{URL.revokeObjectURL(A)}catch{}}},[a]);const Gt=C.useMemo(()=>[...ae,...Ae,...Vt],[ae,Ae,Vt]),[ot,Ct]=C.useState(null),[yt,St]=C.useState(null),[Xt,Ot]=C.useState(null),[Jt,be]=C.useState(0),[se,k]=C.useState(0),[et,rt]=C.useState(0),[Z,it]=C.useState(0),[nt,ct]=C.useState(!1),[Ut,_t]=C.useState(null),Pt=C.useRef(null),ce=C.useRef(null),de=C.useRef(null),re=C.useRef(null),Ht=ht?48:32,qt=30,[zt,Pe]=C.useState(()=>Zi),Zt=$i,le=t=>{Pe(r=>{const s=Math.round(r*t);return Math.min(600,Math.max(60,s))})},mt=[1,0],$t=[3,2],xe=["V2","V1","A2","A1"],he=(t,r)=>{if(r.length===0)return null;if(t==null)return r[0];let s=r[0],o=Math.abs(t-s);for(const A of r){const n=Math.abs(t-A);n<o&&(s=A,o=n)}return s},ye=(t,r)=>t?t.kind==="video"?he(r,mt):he(r,$t):null,Nt=t=>t===mt[1]?$t[1]:$t[0],ue=t=>t===$t[1]?mt[1]:mt[0],Ft=(t,r)=>{const s=r==="video"?mt:$t;return he(t,s)??s[0]},He=C.useRef(!1);C.useEffect(()=>{if(!d||He.current||Gt.length===0||z.current.some(l=>Array.isArray(l?.actions)&&l.actions.length>0))return;const s=mt[0],o=Nt(s),A=gi();let n=0;for(const l of Gt){const g=Math.max(.01,Number(l.defaultDuration??10)),m=lt(n),E=lt(n+g);if(n=E,l.kind==="video"){const I=`link-${Qt()}`,v=mt.findIndex(y=>y===s);A[s].actions.push({id:`video-${Qt()}`,start:m,end:E,effectId:"effect1",data:{src:l.src,previewSrc:l.previewSrc,name:l.name,linkId:I,videoLayer:v}}),A[o].actions.push({id:`video-audio-${Qt()}`,start:m,end:E,effectId:"effect2",data:{src:l.src,name:l.name,linkId:I}})}else A[o].actions.push({id:`audio-${Qt()}`,start:m,end:E,effectId:"effect0",data:{src:l.src,name:l.name}})}w(null),O([]),W([]),u(()=>(z.current=A,A)),He.current=!0},[d,Gt]),C.useEffect(()=>{Dt.warmFromEditorData(c)},[c]),C.useEffect(()=>{z.current=c},[c]),C.useLayoutEffect(()=>{const t=tt.current;if(!t)return;const r=()=>{const o=t.getBoundingClientRect(),A=t.querySelector(".timeline-editor-edit-area");if(!A)return;const n=A.getBoundingClientRect();rt(n.top-o.top),it(n.left-o.left)},s=requestAnimationFrame(r);return window.addEventListener("resize",r),()=>{cancelAnimationFrame(s),window.removeEventListener("resize",r)}},[ht,c.length]);const Ee=t=>{const r=tt.current;if(!r||!t)return!1;const s=r.getBoundingClientRect();return t.x>=s.left&&t.x<=s.right&&t.y>=s.top&&t.y<=s.bottom},ze=C.useRef(0),Qt=()=>globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`uid-${++ze.current}`,Et=C.useRef(null),kt=C.useRef(null),fe=C.useRef(null),Ne=.9,Le=1.05,vt=C.useRef({actionId:null,edge:null}),X=C.useRef({actionId:null,mode:null,dir:null,basePointerTime:null,lastPointerTime:null,basePointerClientY:null,lastPointerClientY:null,initialRowIndex:0,committedRowIndex:0,laneCandidateRowIndex:null,laneCandidateSinceMs:0,laneIntentRowIndex:null,initialStart:0,initialEnd:0,takeover:!1}),Bt=C.useRef({actionId:null,partnerId:null,dir:null,baseStart:0,baseOffset:0,partnerBaseOffset:0}),Yt=C.useRef(!1),te=t=>t.map(r=>{const s=(r.actions??[]).map(o=>`${String(o.id)}@${Number(o.start)}-${Number(o.end)}`).join("|");return`${String(r.id)}:${s}`}).join("||"),jt=t=>{const r=structuredClone(t);O(s=>{const o=[...s,r];return o.length>We&&o.splice(0,o.length-We),o}),W([])},ge=(t,r,s,o)=>t<o&&r>s,Kt=(t,r,s,o)=>{const A=Array.isArray(t?.actions)?t.actions:[];for(const n of A)if(!(!n||n.id===r)&&ge(s,o,Number(n.start),Number(n.end)))return!0;return!1},bt=(t,r)=>{for(let s=0;s<t.length;s++){const o=t[s],A=Array.isArray(o?.actions)?o.actions:[];for(let n=0;n<A.length;n++){const l=A[n];if(String(l?.id)===r)return{rowIndex:s,actionIndex:n,action:l}}}return null},Lt=(t,r)=>{const s=bt(t,r),o=s?.action?.data?.linkId;if(!s||!o)return null;for(let A=0;A<t.length;A++){const n=t[A],l=Array.isArray(n?.actions)?n.actions:[];for(let g=0;g<l.length;g++){const m=l[g];if(m?.data?.linkId&&String(m.data.linkId)===String(o)&&String(m.id)!==String(r))return{rowIndex:A,actionIndex:g,action:m}}}return null},Me=(t,r)=>{const s=bt(t,r);if(!s)return t;const o=Lt(t,r);if(!o)return t;const A=Number(s.action.start),n=Number(s.action.end);if(!Number.isFinite(A)||!Number.isFinite(n)||n<=A||Number(o.action.start)===A&&Number(o.action.end)===n)return t;const l=structuredClone(t),g=l[o.rowIndex],m=Array.isArray(g.actions)?[...g.actions]:[],E={...m[o.actionIndex],start:A,end:n};return m.splice(o.actionIndex,1,E),g.actions=m,l},Te=(t,r)=>{const s=structuredClone(t);for(;s.length<4;)s.push({id:`${s.length}`,actions:[]});const o=p=>p&&typeof p=="object"?p:{},A=(p,Q)=>{if(!(!p||typeof p!="object"))return p[Q]},n=p=>String(A(p,"id")??""),l=p=>String(A(p,"effectId")??""),g=p=>Number(A(p,"start")),m=p=>Number(A(p,"end")),E=p=>A(p,"data"),I=p=>{if(!p||typeof p!="object")return 0;const Q=Number(p.start);return Number.isFinite(Q)?Q:0},v=new Map,y=new Map;for(let p=0;p<s.length;p++){const Q=s[p],_=Array.isArray(Q?.actions)?Q.actions:[];for(let S=0;S<_.length;S++){const H=_[S],G=n(H);if(!G)continue;v.set(G,{rowIndex:p,actionIndex:S,action:H});const K=E(H),V=A(K,"linkId"),At=V!=null?String(V):"";if(!At)continue;const M=y.get(At)??{},J=l(H);J==="effect1"?M.video={rowIndex:p,actionIndex:S,action:H}:J==="effect2"&&(M.audio={rowIndex:p,actionIndex:S,action:H}),y.set(At,M)}}const R=new Map;for(const p of y.values()){if(!p.video||!p.audio)continue;const Q=n(p.video.action),_=n(p.audio.action),S=r&&String(r)===_?"audio":"video",H=S==="audio"?ue(Ft(p.audio.rowIndex,"audio")):Ft(p.video.rowIndex,"video"),G=Nt(H),K=S==="audio"?p.audio.action:p.video.action,V=g(K),At=m(K),M=Number.isFinite(V)&&Number.isFinite(At)&&At>V,J=Math.max(0,mt.findIndex(q=>q===H));R.set(Q,{targetRowIndex:H,patchStartEnd:M?{start:V,end:At}:void 0,patchVideoLayer:J}),R.set(_,{targetRowIndex:G,patchStartEnd:M?{start:V,end:At}:void 0})}for(const[p,Q]of v.entries()){if(R.has(p))continue;const _=l(Q.action);if(_==="effect1"){const S=Ft(Q.rowIndex,"video"),H=Math.max(0,mt.findIndex(G=>G===S));R.set(p,{targetRowIndex:S,patchVideoLayer:H})}else if(_==="effect0"||_==="effect2"){const S=Ft(Q.rowIndex,"audio");R.set(p,{targetRowIndex:S})}}const P=s.map(p=>({...p,actions:[]}));let L=!1;for(let p=0;p<s.length;p++){const Q=s[p],_=Array.isArray(Q?.actions)?Q.actions:[];for(const S of _){const H=S,G=n(H);if(!G)continue;const K=R.get(G),V=K?K.targetRowIndex:p,At=P[V]??P[p];let M=H;if(K?.patchStartEnd){const J=K.patchStartEnd.start,q=K.patchStartEnd.end;(g(M)!==J||m(M)!==q)&&(M={...o(M),start:J,end:q},L=!0)}if(K?.patchVideoLayer!=null&&l(M)==="effect1"){const J=Number(A(E(M),"videoLayer"));if(!Number.isFinite(J)||J!==K.patchVideoLayer){const q={...o(E(M)),videoLayer:K.patchVideoLayer};M={...o(M),data:q},L=!0}}V!==p&&(L=!0),At.actions.push(M)}}for(const p of P){const Q=Array.isArray(p.actions)?[...p.actions]:[];Q.sort((_,S)=>I(_)-I(S)),p.actions=Q}return L?P:t},pe=(t,r,s,o)=>{const A=ri(s,o);if(!Number.isFinite(A.start)||!Number.isFinite(A.end)||A.end<=A.start)return t;const n=bt(t,r);if(!n)return t;const l=Lt(t,r);if(!l)return t;const g=structuredClone(t),m=g[n.rowIndex],E=Array.isArray(m.actions)?[...m.actions]:[],I={...E[n.actionIndex],start:A.start,end:A.end};E.splice(n.actionIndex,1,I),m.actions=E;const v=g[l.rowIndex],y=Array.isArray(v.actions)?[...v.actions]:[],R={...y[l.actionIndex],start:A.start,end:A.end};return y.splice(l.actionIndex,1,R),v.actions=y,g},me=(t,r,s,o)=>{const A=ri(s,o);if(!Number.isFinite(A.start)||!Number.isFinite(A.end)||A.end<=A.start)return t;const n=bt(t,r);if(!n)return t;const l=Number(n.action.start),g=Number(n.action.end);if(l===A.start&&g===A.end)return t;const m=structuredClone(t),E=m[n.rowIndex],I=Array.isArray(E.actions)?[...E.actions]:[],v={...I[n.actionIndex],start:A.start,end:A.end};return I.splice(n.actionIndex,1,v),E.actions=I,m},De=()=>{const t=$.current?.getTime?Number($.current.getTime()):0;return Number.isFinite(t)?Math.max(0,t):0},_e=(t,r,s)=>{const o=De(),A=s-r;if(!Number.isFinite(A)||A<=0)return{start:r,end:s,snapped:!1,edge:null};const n=Math.abs(r-o),l=Math.abs(s-o),g=n<=l?"start":"end",m=Math.min(n,l),E=vt.current;if(E.actionId===t&&E.edge!=null){if((E.edge==="start"?n:l)>Le)return vt.current={actionId:t,edge:null},{start:r,end:s,snapped:!1,edge:null}}else{if(m>Ne)return{start:r,end:s,snapped:!1,edge:null};vt.current={actionId:t,edge:g}}const y=vt.current.edge;if(y==="start"){const L=o,p=L+A;return{start:Math.max(0,L),end:Math.max(Math.max(0,L),p),snapped:!0,edge:y}}const R=o,P=R-A;return{start:Math.max(0,P),end:Math.max(0,R),snapped:!0,edge:y}},Ge=(t,r,s,o)=>{const A=De(),n=o==="left"?"start":"end",l=Math.abs(n==="start"?r-A:s-A),g=vt.current;if(g.actionId===t&&g.edge===n){if(l>Le)return vt.current={actionId:t,edge:null},{start:r,end:s,snapped:!1}}else{if(l>Ne)return{start:r,end:s,snapped:!1};vt.current={actionId:t,edge:n}}if(n==="start"){const y=Math.max(0,A),R=Math.max(y+.01,s);return{start:y,end:R,snapped:!0}}const I=Math.max(0,A),v=Math.min(r,I-.01);return{start:Math.max(0,v),end:I,snapped:!0}},Ve=(t,r,s)=>{const o=t.defaultDuration??10;let A=Math.max(0,lt(r)),n=lt(A+o);const l=$.current;l?.isPlaying&&l.pause(),u(g=>{jt(g);const m=structuredClone(g);for(;m.length<4;)m.push({id:`${m.length}`,actions:[]});const E=Number.isFinite(Number(s))?Number(s):null,I=he(E,mt)??mt[0],v=he(E,$t)??$t[0],y=P=>{const L=[];for(const p of P){const Q=Array.isArray(m[p]?.actions)?m[p].actions:[];for(const _ of Q){const S=Number(_?.start),H=Number(_?.end);!Number.isFinite(S)||!Number.isFinite(H)||L.push({start:S,end:H})}}L.sort((p,Q)=>p.start-Q.start);for(const p of L)ge(A,n,p.start,p.end)&&(A=lt(p.end),n=lt(A+o))};if(t.kind==="video"){const P=I,L=Nt(P);y([P,L]);const p=`link-${Qt()}`,Q=`video-${Qt()}`,_=`video-audio-${Qt()}`,S=mt.findIndex(H=>H===P);m[P].actions=[...m[P].actions??[],{id:Q,start:lt(A),end:lt(n),effectId:"effect1",data:{src:t.src,previewSrc:t.previewSrc,name:t.name,linkId:p,videoLayer:S}}],m[L].actions=[...m[L].actions??[],{id:_,start:lt(A),end:lt(n),effectId:"effect2",data:{src:t.src,name:t.name,linkId:p}}]}else{const P=v;y([P]),m[P].actions=[...m[P].actions??[],{id:`audio-${Qt()}`,start:lt(A),end:lt(n),effectId:"effect0",data:{src:t.src,name:t.name}}]}return ii(m)})},Xe=()=>{const t=tt.current;return t?t.querySelector(".timeline-editor-edit-area .ReactVirtualized__Grid")?.scrollLeft??0:0},qe=()=>Jt,i=t=>{const r=tt.current;if(!r)return 0;const o=(r.querySelector(".timeline-editor-edit-area")??r).getBoundingClientRect(),l=(t-o.x+Xe()-qt)*Zt/zt;return Math.max(0,l)},f=t=>{const r=Number(t);return Number.isFinite(r)?qt+r*zt/Zt:0},x=(t,r,s,o)=>{const A=t.defaultDuration??10;let n=Math.max(0,lt(r)),l=lt(n+A);const g=[];if(t.kind==="video"){const E=s,I=Nt(E);g.push(E,I)}else g.push(s);const m=[];for(const E of g){const I=Array.isArray(o[E]?.actions)?o[E].actions:[];for(const v of I){const y=Number(v?.start),R=Number(v?.end);!Number.isFinite(y)||!Number.isFinite(R)||m.push({start:y,end:R})}}m.sort((E,I)=>E.start-I.start);for(const E of m)ge(n,l,E.start,E.end)&&(n=lt(E.end),l=lt(n+A));return Math.max(0,lt(n))},D=t=>{const r=tt.current;if(!r)return null;const s=r.querySelector(".timeline-editor-edit-area");if(!s)return null;const o=s.getBoundingClientRect(),A=t-o.y;if(A<0||A>o.height)return null;const n=A+qe(),l=Math.floor(n/Ht);if(!Number.isFinite(l))return null;const g=Math.max(0,z.current.length-1);return Math.min(Math.max(0,l),g)},Y=t=>{if(!t)return null;if("clientX"in t&&"clientY"in t){const A=Number(t.clientX),n=Number(t.clientY);if(Number.isFinite(A)&&Number.isFinite(n))return{x:A,y:n}}const r=t.touches,s=t.changedTouches,o=(r&&r.length?r[0]:null)||(s&&s.length?s[0]:null);if(o){const A=Number(o.clientX),n=Number(o.clientY);if(Number.isFinite(A)&&Number.isFinite(n))return{x:A,y:n}}return null},j=()=>{if(Yt.current)return;Yt.current=!0;const t=s=>{const o=X.current;if(!o.actionId||!o.mode||s.isPrimary===!1)return;const A=i(s.clientX);o.basePointerTime==null&&(o.basePointerTime=A),o.lastPointerTime=A,o.basePointerClientY==null&&(o.basePointerClientY=s.clientY),o.lastPointerClientY=s.clientY},r=()=>{const s={actionId:X.current.actionId,mode:X.current.mode};requestAnimationFrame(()=>{X.current.actionId===s.actionId&&X.current.mode===s.mode&&(X.current={actionId:null,mode:null,dir:null,basePointerTime:null,lastPointerTime:null,basePointerClientY:null,lastPointerClientY:null,initialRowIndex:0,committedRowIndex:0,laneCandidateRowIndex:null,laneCandidateSinceMs:0,laneIntentRowIndex:null,initialStart:0,initialEnd:0,takeover:!1},vt.current={actionId:null,edge:null})})};window.addEventListener("pointermove",t,{capture:!0}),window.addEventListener("pointerup",r,{capture:!0}),window.addEventListener("pointercancel",r,{capture:!0}),X.current._removePointerListeners=()=>{window.removeEventListener("pointermove",t,{capture:!0}),window.removeEventListener("pointerup",r,{capture:!0}),window.removeEventListener("pointercancel",r,{capture:!0}),Yt.current=!1}},T=()=>{const t=X.current?._removePointerListeners;t?.(),delete X.current._removePointerListeners},N=C.useRef(!1),gt=t=>{const r=Number(t?.data?.offset??0);return Number.isFinite(r)?r:0},st=(t,r,s)=>{const o=bt(t,r);if(!o)return t;const A=Math.max(0,Number.isFinite(s)?s:0);if(gt(o.action)===A)return t;const l=structuredClone(t),g=l[o.rowIndex],m=Array.isArray(g.actions)?[...g.actions]:[],E={...m[o.actionIndex],data:{...m[o.actionIndex]?.data??{},offset:A}};return m.splice(o.actionIndex,1,E),g.actions=m,l},at=(t,r,s,o)=>{const A=bt(t,r);if(!A)return t;const n=Lt(t,r);if(!n)return st(t,r,s);const l=Math.max(0,Number.isFinite(s)?s:0),g=Math.max(0,Number.isFinite(Number(o))?Number(o):l),m=structuredClone(t),E=m[A.rowIndex],I=Array.isArray(E.actions)?[...E.actions]:[],v={...I[A.actionIndex],data:{...I[A.actionIndex]?.data??{},offset:l}};I.splice(A.actionIndex,1,v),E.actions=I;const y=m[n.rowIndex],R=Array.isArray(y.actions)?[...y.actions]:[],P={...R[n.actionIndex],data:{...R[n.actionIndex]?.data??{},offset:g}};return R.splice(n.actionIndex,1,P),y.actions=R,m},[dt,Tt]=C.useState(null),ee=(t,r,s)=>{const o=bt(t,r);if(!o)return t;const n=String(o.action?.effectId??"")==="effect1"?"video":"audio",l=Ft(s,n),g=Lt(t,r),m=!!g,E=new Set([String(r)]);g&&E.add(String(g.action.id));const I=Number(o.action?.start),v=Number(o.action?.end);if(!Number.isFinite(I)||!Number.isFinite(v)||v<=I)return t;const y=(S,H,G)=>{const K=Array.isArray(S?.actions)?S.actions:[];for(const V of K){const At=String(V?.id??"");if(!(At&&E.has(At))&&ge(H,G,Number(V?.start),Number(V?.end)))return!1}return!0};let R=null,P=null;if(m&&(n==="video"?(R=l,P=Nt(R)):(P=l,R=ue(P))),n==="video"){if(!y(t[l],I,v))return t}else if(!y(t[l],I,v))return t;if(R!=null&&!y(t[R],I,v)||P!=null&&!y(t[P],I,v)||!m&&o.rowIndex===l)return t;if(m&&n==="video"&&o.rowIndex===R){const S=g?bt(t,String(g.action.id)):null;if(S&&S.rowIndex===P)return t}if(m&&n==="audio"&&o.rowIndex===P){const S=g?bt(t,String(g.action.id)):null;if(S&&S.rowIndex===R)return t}const L=structuredClone(t);for(;L.length<4;)L.push({id:`${L.length}`,actions:[]});const p=(S,H)=>{const G=Array.isArray(S.actions)?S.actions:[];S.actions=G.filter(K=>String(K?.id??"")!==H)},Q=(S,H)=>{const G=L[S];G.actions=[...G.actions??[],H],G.actions.sort((K,V)=>Number(K.start)-Number(V.start))};p(L[o.rowIndex],String(r));let _=o.action;if(n==="video"){const S=Math.max(0,mt.findIndex(H=>H===l));_={..._,data:{..._.data??{},videoLayer:S}}}if(Q(l,_),g&&R!=null&&P!=null){const S=bt(t,String(g.action.id));if(S){p(L[S.rowIndex],String(g.action.id));const H=n==="video"?P:R;let G=S.action;if(String(G?.effectId??"")==="effect1"){const V=Math.max(0,mt.findIndex(At=>At===H));G={...G,data:{...G.data??{},videoLayer:V}}}Q(H,G)}}return L},xt=t=>t.map(r=>({...r,selected:void 0,actions:(r.actions??[]).map(s=>({...s,selected:void 0}))})),Fe=C.useMemo(()=>c.map((t,r)=>{const s=B?(t.actions??[]).some(l=>String(l.id)===B):!1,o=ot!=null&&Xt!=null&&r===Xt,A=Array.isArray(t.classNames)?t.classNames:[],n=o?[...A,"dnd-drop-hover"]:A;return{...t,classNames:n,selected:s,actions:(t.actions??[]).map(l=>({...l,selected:B?String(l.id)===B:!1}))}}),[c,B,ot,Xt]),Ze=()=>{if(!B)return;const t=$.current;t?.isPlaying&&t.pause(),u(r=>{jt(r);let s=null;for(const A of r){const n=Array.isArray(A?.actions)?A.actions:[];for(const l of n){if(String(l?.id)!==B)continue;const g=l?.data?.linkId;g!=null&&(s=String(g));break}if(s!=null)break}return r.map(A=>({...A,actions:(A.actions??[]).filter(n=>!(String(n?.id)===B||s&&String(n?.data?.linkId??"")===s))}))}),w(null)},$e=()=>{if(!B)return;const t=$.current,r=t?.getTime?t.getTime():null;if(r==null)return;const s=Number(r);Number.isFinite(s)&&(t?.isPlaying&&t.pause(),Et.current=null,kt.current=null,u(o=>{let A=-1,n=-1,l=null;for(let M=0;M<o.length;M++){const J=o[M],q=Array.isArray(J?.actions)?J.actions:[];for(let pt=0;pt<q.length;pt++){const wt=q[pt];if(String(wt?.id)===B){A=M,n=pt,l=wt;break}}if(l)break}if(!l)return o;const g=l?.data?.linkId?String(l.data.linkId):null;let m=-1,E=-1,I=null;if(g)for(let M=0;M<o.length;M++){const J=o[M],q=Array.isArray(J?.actions)?J.actions:[];for(let pt=0;pt<q.length;pt++){const wt=q[pt];if(String(wt?.id)!==B&&String(wt?.data?.linkId??"")===g){m=M,E=pt,I=wt;break}}if(I)break}const v=Number(l.start),y=Number(l.end);if(!Number.isFinite(v)||!Number.isFinite(y)||!(v<s&&s<y))return o;jt(o);const R=g&&I?`link-${Qt()}`:g,P=g&&I?`link-${Qt()}`:g,L=`${String(l.id)}-r-${Qt()}`,p=Number(l?.data?.offset??0),Q=Number.isFinite(p)?p:0,_=s-v,S=Q+(Number.isFinite(_)?_:0),H={...l,start:v,end:s,id:l.id,data:{...l.data,offset:Q,linkId:R??void 0}},G={...l,start:s,end:y,id:L,data:{...l.data,offset:S,linkId:P??void 0}},K=structuredClone(o),V=K[A],At=Array.isArray(V.actions)?[...V.actions]:[];if(At.splice(n,1,H,G),At.sort((M,J)=>Number(M.start)-Number(J.start)),V.actions=At,I&&m>=0&&E>=0){const M=Number(I.start),J=Number(I.end);if(Number.isFinite(M)&&Number.isFinite(J)&&M===v&&J===y){const q=Number(I?.data?.offset),pt=Number.isFinite(q)?q:Q,wt=pt+(Number.isFinite(_)?_:0),ie=`${String(I.id)}-r-${Qt()}`,Ie={...I,start:v,end:s,id:I.id,data:{...I.data,offset:pt,linkId:R??void 0}},ne={...I,start:s,end:y,id:ie,data:{...I.data,offset:wt,linkId:P??void 0}},Ce=K[m],Se=Array.isArray(Ce.actions)?[...Ce.actions]:[];Se.splice(E,1,Ie,ne),Se.sort((Je,Ye)=>Number(Je.start)-Number(Ye.start)),Ce.actions=Se}}return K}))},xi=()=>{const t=$.current,r=t?.getTime?t.getTime():null;t?.isPlaying&&t.pause(),Et.current=null,kt.current=null,w(null),O(s=>{if(s.length===0)return s;const o=s[s.length-1],A=structuredClone(z.current);return W(n=>[...n,A]),u(structuredClone(o)),s.slice(0,-1)}),r!=null&&requestAnimationFrame(()=>{const s=$.current;s?.setTime&&s.setTime(r)})},yi=()=>{const t=$.current,r=t?.getTime?t.getTime():null;t?.isPlaying&&t.pause(),Et.current=null,kt.current=null,w(null),W(s=>{if(s.length===0)return s;const o=s[s.length-1],A=structuredClone(z.current);return O(n=>{const l=[...n,A];return l.length>We&&l.splice(0,l.length-We),l}),u(structuredClone(o)),s.slice(0,-1)}),r!=null&&requestAnimationFrame(()=>{const s=$.current;s?.setTime&&s.setTime(r)})},Ei=Wt.useSensors(Wt.useSensor(Wt.PointerSensor,{activationConstraint:{distance:6}}),Wt.useSensor(Wt.TouchSensor,{activationConstraint:{delay:180,tolerance:6}})),{setNodeRef:Ii,isOver:Ci}=Wt.useDroppable({id:"timeline-drop"}),Si=t=>{const r=t.active.data.current?.item;Ct(r??null);const s=Y(t.activatorEvent);if(Pt.current=s,ce.current=s,_t(s),s){const A=Ee(s);ct(A);const n=D(s.y);Ot(A?ye(r??null,n):null)}else Ot(null),ct(!1);const o=t.active.rect.current.initial;St(o?{width:o.width,height:o.height}:null)},Ui=t=>{const r=t.active.rect.current.initial;!yt&&r&&St({width:r.width,height:r.height});const s=ce.current;if(!s){Ot(null);return}const o=Number(t?.delta?.x??0),A=Number(t?.delta?.y??0),n={x:s.x+(Number.isFinite(o)?o:0),y:s.y+(Number.isFinite(A)?A:0)};Pt.current=n,_t(n);const l=Ee(n);ct(l);const g=D(n.y);Ot(l?ye(ot,g):null)},Qi=t=>{const r=t.active.data.current?.item,s=ce.current,o=Number(t?.delta?.x??0),A=Number(t?.delta?.y??0),n=s?{x:s.x+(Number.isFinite(o)?o:0),y:s.y+(Number.isFinite(A)?A:0)}:Pt.current;Pt.current=n;const g=String(t.over?.id??"")==="timeline-drop"||Ee(n);if(r&&g&&n){const m=i(n.x),E=D(n.y),I=ye(r,E);Ot(I),Ve(r,Math.max(0,m),I)}Ct(null),St(null),Ot(null),ct(!1),_t(null),ce.current=null},vi=()=>{Ct(null),St(null),Ot(null),ct(!1),_t(null),ce.current=null},Be=C.useMemo(()=>{if(!ot||!nt)return null;const t=Ut;if(!t)return null;const r=D(t.y),s=ye(ot,r);if(s==null)return null;const o=i(t.x),A=x(ot,o,s,z.current),n=ot.defaultDuration??10;return{laneRow:s,desiredStart:o,start:A,end:A+n,duration:n,kind:ot.kind}},[ot,nt,Ut,se,Jt,Ht]),Di=t=>{if(!ht||t.pointerType==="mouse"||ot)return;if(!!t.target?.closest?.(".timeline-editor-cursor-area, .timeline-editor-cursor")){re.current={pointerId:t.pointerId},de.current=null;try{t.currentTarget.setPointerCapture(t.pointerId)}catch{}t.preventDefault();return}de.current={x:t.clientX,y:t.clientY}},_i=t=>{if(!ht||t.pointerType==="mouse"||ot||!re.current||re.current.pointerId!==t.pointerId)return;const r=i(t.clientX);$.current&&$.current.setTime(r),t.preventDefault()},Fi=t=>{if(!ht||t.pointerType==="mouse"||ot)return;if(re.current&&re.current.pointerId===t.pointerId){re.current=null;try{t.currentTarget.releasePointerCapture(t.pointerId)}catch{}t.preventDefault();return}const r=de.current;de.current=null;const s=r?Math.abs(t.clientX-r.x):0,o=r?Math.abs(t.clientY-r.y):0;if(s>10||o>10)return;const n=t.target?.closest?.("[data-action-id]"),l=n?.getAttribute("data-row-id"),g=n?.getAttribute("data-action-id");if(l&&g){w(g);return}const m=i(t.clientX);w(null),$.current&&$.current.setTime(m)};return b.jsx(Wt.DndContext,{sensors:Ei,collisionDetection:Wt.rectIntersection,onDragStart:Si,onDragMove:Ui,onDragEnd:Qi,onDragCancel:vi,children:b.jsxs("div",{className:"timeline-editor-engine",children:[b.jsxs("div",{className:"player-stack",children:[b.jsxs("div",{className:"footage-ribbon",role:"toolbar","aria-label":"Footage",children:[b.jsxs("div",{className:"footage-ribbon-left",children:[b.jsxs("div",{className:"footage-toggle-stack",children:[b.jsx("button",{type:"button",className:`footage-ribbon-toggle${ut?" is-open":""}`,"aria-expanded":ut,"aria-controls":"footage-bin-panel",onClick:()=>ft(t=>!t),children:b.jsx("img",{src:ls,alt:"Footage",draggable:!1})}),b.jsx("button",{type:"button",className:`footage-edge-handle${ut?" is-open":""}`,"aria-label":ut?"Close footage bin":"Open footage bin","aria-expanded":ut,"aria-controls":"footage-bin-panel",onClick:()=>ft(t=>!t),children:b.jsx("span",{className:"footage-edge-chevron","aria-hidden":"true"})})]}),b.jsx("div",{className:"footage-ribbon-title",children:"Footage"})]}),null]}),b.jsx("div",{id:"footage-bin-panel",className:`footage-bin-panel${ut?" is-open":""}${ot?" is-dragging":""}`,"aria-hidden":!ut,children:b.jsx("div",{className:"footage-bin",children:Gt.map(t=>b.jsx(ps,{item:t,hint:ht?"Press-hold, then drag into timeline":"Drag into timeline"},t.id))})}),b.jsxs("div",{className:"player-panel",ref:Mt,children:[b.jsx("video",{className:"player-video player-video-primary",preload:"auto",playsInline:!0,muted:!0,controls:!1,disablePictureInPicture:!0,disableRemotePlayback:!0,controlsList:"nodownload noplaybackrate noremoteplayback",tabIndex:-1,onContextMenu:t=>t.preventDefault(),ref:t=>It.attachPrimary(t)}),b.jsx("video",{className:"player-video player-video-secondary",preload:"auto",playsInline:!0,muted:!0,controls:!1,disablePictureInPicture:!0,disableRemotePlayback:!0,controlsList:"nodownload noplaybackrate noremoteplayback",tabIndex:-1,onContextMenu:t=>t.preventDefault(),ref:t=>It.attachSecondary(t)})]})]}),b.jsx(cs,{timelineState:$,autoScrollWhenPlay:we,scale:Zt,scaleWidth:zt,startLeft:qt,editorData:c,selectedActionId:B,onDeleteSelectedClip:Ze,onSplitSelectedClip:$e,canUndo:U.length>0,canRedo:F.length>0,onUndo:xi,onRedo:yi}),b.jsxs("div",{className:`timeline-drop${Ci?" is-over":""}`,ref:t=>{tt.current=t,Ii(t)},onPointerDown:Di,onPointerMove:_i,onPointerUp:Fi,children:[b.jsxs("div",{className:"timeline-zoom-controls","aria-label":"Timeline zoom",children:[b.jsx("button",{type:"button",className:"timeline-zoom-control",onClick:()=>le(1/1.25),"aria-label":"Zoom out",title:"Zoom out",children:b.jsx("img",{src:us,alt:"",draggable:!1})}),b.jsx("button",{type:"button",className:"timeline-zoom-control",onClick:()=>le(1.25),"aria-label":"Zoom in",title:"Zoom in",children:b.jsx("img",{src:hs,alt:"",draggable:!1})})]}),b.jsx("div",{className:"timeline-lane-labels",style:{top:et,transform:`translateY(${-Jt}px)`,height:Ht*xe.length},children:xe.map((t,r)=>b.jsx("div",{className:`timeline-lane-label${Xt===r?" is-hover":""}`,style:{height:Ht},children:t},t))}),Be?b.jsx("div",{className:"timeline-ghost-layer",style:{top:et,left:Z},children:(()=>{const t=zt/Zt,r=Be.duration*t,s=f(Be.start)-se,o=[];return Be.kind==="video"?(o.push({row:Be.laneRow,kind:"video"}),o.push({row:Nt(Be.laneRow),kind:"audio"})):o.push({row:Be.laneRow,kind:"audio"}),o.map(A=>b.jsx("div",{className:`timeline-ghost-clip${A.kind==="video"?" is-video":" is-audio"}`,style:{left:s,top:A.row*Ht-Jt,width:r,height:Ht}},`${A.kind}-${A.row}`))})()}):null,dt?b.jsx("div",{className:"timeline-ghost-layer",style:{top:et,left:Z},children:(()=>{const t=zt/Zt,r=dt.duration*t,s=f(dt.start)-se,o=[];return dt.kind==="video"?(o.push({row:dt.laneRow,kind:"video"}),o.push({row:Nt(dt.laneRow),kind:"audio"})):o.push({row:dt.laneRow,kind:"audio"}),o.map(A=>b.jsx("div",{className:`timeline-ghost-clip${A.kind==="video"?" is-video":" is-audio"}`,style:{left:s,top:A.row*Ht-Jt,width:r,height:Ht}},`${dt.actionId}-${A.kind}-${A.row}`))})()}):null,b.jsx(ki.Timeline,{scale:Zt,scaleWidth:zt,startLeft:qt,rowHeight:Ht,autoScroll:!0,ref:$,editorData:Fe,effects:ts,onScroll:t=>{const r=Number(t?.scrollTop??0),s=Number(t?.scrollLeft??0);Number.isFinite(r)&&be(r),Number.isFinite(s)&&k(s)},onClickTimeArea:(t,r)=>{w(null)},onClickRow:t=>{t.target?.closest?.(".timeline-editor-action")||w(null)},onClickActionOnly:(t,{action:r})=>{const s=r;s?.id&&w(String(s.id))},onActionMoveStart:({action:t})=>{fe.current=String(t?.id??""),vt.current={actionId:String(t?.id??""),edge:null};const r=Number(t?.start),s=Number(t?.end),o=String(t?.id??""),A=o?bt(z.current,o):null,n=A?A.rowIndex:0;X.current={actionId:o,mode:"move",dir:null,basePointerTime:null,lastPointerTime:null,basePointerClientY:null,lastPointerClientY:null,initialRowIndex:n,committedRowIndex:n,laneCandidateRowIndex:null,laneCandidateSinceMs:0,laneIntentRowIndex:null,initialStart:Number.isFinite(r)?r:0,initialEnd:Number.isFinite(s)?s:0,takeover:!0},j(),Tt(null),!Et.current&&(Et.current=structuredClone(c),kt.current=te(c))},onActionMoveEnd:()=>{const t=X.current,r=String(t.actionId??""),s=t.laneIntentRowIndex;r&&s!=null&&(N.current=!0,u(n=>{const l=ee(n,r,s);return z.current=l,l})),Tt(null);const o=Et.current,A=kt.current;o&&A&&te(z.current)!==A&&jt(o),Et.current=null,kt.current=null,fe.current=null,vt.current={actionId:null,edge:null},X.current={actionId:null,mode:null,dir:null,basePointerTime:null,lastPointerTime:null,basePointerClientY:null,lastPointerClientY:null,initialRowIndex:0,committedRowIndex:0,laneCandidateRowIndex:null,laneCandidateSinceMs:0,laneIntentRowIndex:null,initialStart:0,initialEnd:0,takeover:!1},T()},onActionResizeStart:({action:t})=>{fe.current=String(t?.id??""),vt.current={actionId:String(t?.id??""),edge:null};const r=Number(t?.start),s=Number(t?.end),o=String(t?.id??""),A=o?bt(z.current,o):null,n=A?A.rowIndex:0,l=gt(A?.action??t),g=o?Lt(z.current,o):null,m=g?String(g.action.id):null,E=g?gt(g.action):l;Bt.current={actionId:o,partnerId:m,dir:null,baseStart:Number.isFinite(r)?r:0,baseOffset:l,partnerBaseOffset:E},X.current={actionId:o,mode:"resize",dir:null,basePointerTime:null,lastPointerTime:null,basePointerClientY:null,lastPointerClientY:null,initialRowIndex:n,committedRowIndex:n,laneCandidateRowIndex:null,laneCandidateSinceMs:0,laneIntentRowIndex:null,initialStart:Number.isFinite(r)?r:0,initialEnd:Number.isFinite(s)?s:0,takeover:!1},j(),!Et.current&&(Et.current=structuredClone(c),kt.current=te(c))},onActionResizeEnd:()=>{const t=Et.current,r=kt.current;t&&r&&te(z.current)!==r&&jt(t),Et.current=null,kt.current=null,fe.current=null,vt.current={actionId:null,edge:null},X.current={actionId:null,mode:null,dir:null,basePointerTime:null,lastPointerTime:null,basePointerClientY:null,lastPointerClientY:null,initialRowIndex:0,committedRowIndex:0,laneCandidateRowIndex:null,laneCandidateSinceMs:0,laneIntentRowIndex:null,initialStart:0,initialEnd:0,takeover:!1},T(),Bt.current={actionId:null,partnerId:null,dir:null,baseStart:0,baseOffset:0,partnerBaseOffset:0}},onActionMoving:({action:t,row:r,start:s,end:o})=>{const A=String(t?.id??""),n=X.current,l=(Q,_)=>{const S=Number(Q),H=Number(_);if(!Number.isFinite(S)||!Number.isFinite(H))return{start:Q,end:_,clamped:!1};if(H<=S)return{start:Q,end:_,clamped:!1};if(S>=0)return{start:S,end:H,clamped:!1};const G=-S;return{start:0,end:H+G,clamped:!0}},g=Q=>{const _=String(Q?.id??"");return _?z.current.findIndex(S=>String(S?.id??"")===_):-1};if(n.takeover&&n.mode==="move"&&n.actionId===A){const _=Math.max(10,Ht*.45),S=n.basePointerTime,H=n.lastPointerTime,G=S!=null&&H!=null?H-S:0,K=n.initialStart+G,V=n.initialEnd+G,At=_e(A,K,V),M=l(At.start,At.end),J=M.start,q=M.end,wt=String(t?.effectId??"")==="effect1"?"video":"audio",ie=n.lastPointerClientY,Ie=ie!=null?D(ie):null,ne=Ft(Ie??n.committedRowIndex,wt),Ce=n.basePointerClientY,Se=Ce!=null&&ie!=null?Math.abs(ie-Ce):0,Je=typeof performance<"u"&&performance.now?performance.now():Date.now();ne!==n.committedRowIndex&&Se>=_?(n.laneCandidateRowIndex!==ne&&(n.laneCandidateRowIndex=ne,n.laneCandidateSinceMs=Je),Je-n.laneCandidateSinceMs>=160&&(n.laneIntentRowIndex=ne)):(n.laneCandidateRowIndex=null,n.laneCandidateSinceMs=0,n.laneIntentRowIndex=null);const Ye=ne!==n.committedRowIndex&&Se>=_?ne:null;Ye!=null?Tt({actionId:A,laneRow:Ye,start:J,end:q,duration:Math.max(.01,q-J),kind:wt}):Tt(null);const ti=z.current,ai=ti[n.committedRowIndex];if(ai&&Kt(ai,String(t.id),J,q))return!1;const ei=Lt(ti,String(t.id));if(ei){const je=wt==="video"?Nt(Ft(n.committedRowIndex,"video")):ue(Ft(n.committedRowIndex,"audio")),ke=ti[je];if(ke&&Kt(ke,String(ei.action.id),J,q))return!1}return u(je=>{const ke=ei?pe(je,String(t.id),J,q):me(je,String(t.id),J,q);return z.current=ke,ke}),!1}const m=Number(s),E=Number(o);if(!Number.isFinite(m)||!Number.isFinite(E)||E<=m)return!1;const I=_e(A,m,E),v=l(I.start,I.end),y=v.start,R=v.end;if(!Number.isFinite(y)||!Number.isFinite(R)||R<=y)return!1;const P=r;if(Kt(P,String(t.id),y,R))return!1;const L=z.current,p=Lt(L,String(t.id));if(p){const Q=String(t?.effectId??""),_=g(P);let S=p.rowIndex;if(_>=0)if(Q==="effect1"){const G=Ft(_,"video");S=Nt(G)}else{const G=Ft(_,"audio");S=ue(G)}const H=L[S];if(H&&Kt(H,String(p.action.id),y,R))return!1}if((p||I.snapped||v.clamped)&&u(Q=>{const _=p?pe(Q,String(t.id),y,R):me(Q,String(t.id),y,R);return z.current=_,_}),I.snapped||v.clamped){const Q=X.current.lastPointerTime;return X.current={...X.current,actionId:A,mode:"move",dir:null,basePointerTime:Q,lastPointerTime:X.current.lastPointerTime,initialStart:m,initialEnd:E,takeover:!0},j(),!1}},onActionResizing:({action:t,row:r,start:s,end:o,dir:A})=>{const n=String(t?.id??""),l=X.current,g=A??"right";if(l.actionId===n&&l.mode==="resize"&&(l.dir=g),Bt.current.actionId===n&&(Bt.current.dir=g),l.takeover&&l.mode==="resize"&&l.actionId===n){const p=l.basePointerTime,Q=l.lastPointerTime,_=p!=null&&Q!=null?Q-p:0,S=g==="left"?l.initialStart+_:l.initialStart,H=g==="right"?l.initialEnd+_:l.initialEnd,G=Ge(n,S,H,g),K=G.start,V=G.end;if(Kt(r,String(t.id),K,V))return!1;const M=z.current,J=Lt(M,String(t.id));if(J){const q=M[J.rowIndex];if(q&&Kt(q,String(J.action.id),K,V))return!1}return u(q=>{let pt=J?pe(q,String(t.id),K,V):me(q,String(t.id),K,V);if(g==="left"&&Bt.current.actionId===String(t.id)){const wt=K-Bt.current.baseStart,ie=Bt.current.baseOffset+(Number.isFinite(wt)?wt:0),Ie=Bt.current.partnerBaseOffset+(Number.isFinite(wt)?wt:0);pt=J?at(pt,String(t.id),ie,Ie):st(pt,String(t.id),ie)}return z.current=pt,pt}),!1}const m=Number(s),E=Number(o);if(!Number.isFinite(m)||!Number.isFinite(E)||E<=m)return!1;const I=Ge(n,m,E,g),v=I.start,y=I.end;if(!Number.isFinite(v)||!Number.isFinite(y)||y<=v||Kt(r,String(t.id),v,y))return!1;const P=z.current,L=Lt(P,String(t.id));if(L){const p=P[L.rowIndex];if(p&&Kt(p,String(L.action.id),v,y))return!1}if((L||I.snapped)&&u(p=>{const Q=L?pe(p,String(t.id),v,y):me(p,String(t.id),v,y);return z.current=Q,Q}),I.snapped){const p=X.current.lastPointerTime;return X.current={...X.current,actionId:n,mode:"resize",dir:g,basePointerTime:p,lastPointerTime:X.current.lastPointerTime,initialStart:m,initialEnd:E,takeover:!0},j(),!1}},onChange:t=>{if(N.current){N.current=!1;return}const r=xt(t),s=fe.current;let o=s?Me(r,s):r;if(s&&Bt.current.actionId===s&&Bt.current.dir==="left"){const m=bt(o,s);if(m){const I=Number(m.action?.start)-Bt.current.baseStart,v=Bt.current.baseOffset+(Number.isFinite(I)?I:0),y=Bt.current.partnerBaseOffset+(Number.isFinite(I)?I:0);o=!!Bt.current.partnerId?at(o,s,v,y):st(o,s,v)}}const A=Te(o,s);let n=ii(A);for(const m of mt){const E=n[m],v=(Array.isArray(E?.actions)?E.actions:[]).filter(y=>String(y?.effectId??"")==="effect1").map(y=>({id:String(y?.id??""),start:Number(y?.start),end:Number(y?.end)})).filter(y=>y.id&&Number.isFinite(y.start)&&Number.isFinite(y.end)).sort((y,R)=>y.start-R.start);for(let y=0;y<v.length-1;y++){const R=v[y],P=v[y+1],L=P.start-R.end;if(L>0&&L<=gs){const p=P.end-P.start,Q=lt(R.end),_=lt(Q+p);n=Lt(n,P.id)?pe(n,P.id,Q,_):me(n,P.id,Q,_)}}}n=ii(n),u(n);const l=Et.current,g=kt.current;l&&g&&(te(n)!==g&&jt(l),Et.current=null,kt.current=null)},getActionRender:(t,r)=>{if(t.effectId==="effect0")return b.jsx(Hi,{action:t,row:r});if(t.effectId==="effect2")return b.jsx(Ni,{action:t,row:r});if(t.effectId==="effect1")return b.jsx(zi,{action:t,row:r})}})]}),b.jsx(Wt.DragOverlay,{children:ot?b.jsx("div",{className:"footage-overlay",style:yt?{width:yt.width,height:yt.height}:void 0,children:b.jsx(wi,{item:ot,hint:"Drop on timeline",isDragging:!0})}):null})]})})};exports.MeliesVideoEditor=Bs;