<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="shift_jis">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Kagamin2 Player</title>
    <script>
// asf_stream_js2026080714
"use strict";var asf_stream=(()=>{var an=Object.create;var Ft=Object.defineProperty,sn=Object.defineProperties,on=Object.getOwnPropertyDescriptor,ln=Object.getOwnPropertyDescriptors,dn=Object.getOwnPropertyNames,Kt=Object.getOwnPropertySymbols,un=Object.getPrototypeOf,Ci=Object.prototype.hasOwnProperty,Rr=Object.prototype.propertyIsEnumerable;var Ei=(o,e,t)=>e in o?Ft(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,K=(o,e)=>{for(var t in e||(e={}))Ci.call(e,t)&&Ei(o,t,e[t]);if(Kt)for(var t of Kt(e))Rr.call(e,t)&&Ei(o,t,e[t]);return o},te=(o,e)=>sn(o,ln(e));var Tr=(o,e)=>{var t={};for(var i in o)Ci.call(o,i)&&e.indexOf(i)<0&&(t[i]=o[i]);if(o!=null&&Kt)for(var i of Kt(o))e.indexOf(i)<0&&Rr.call(o,i)&&(t[i]=o[i]);return t};var cn=(o,e)=>()=>(e||o((e={exports:{}}).exports,e),e.exports),hn=(o,e)=>{for(var t in e)Ft(o,t,{get:e[t],enumerable:!0})},Fr=(o,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of dn(e))!Ci.call(o,r)&&r!==t&&Ft(o,r,{get:()=>e[r],enumerable:!(i=on(e,r))||i.enumerable});return o};var _n=(o,e,t)=>(t=o!=null?an(un(o)):{},Fr(e||!o||!o.__esModule?Ft(t,"default",{value:o,enumerable:!0}):t,o)),fn=o=>Fr(Ft({},"__esModule",{value:!0}),o);var d=(o,e,t)=>Ei(o,typeof e!="symbol"?e+"":e,t);var Lr=cn((ga,ki)=>{"use strict";var mn=Object.prototype.hasOwnProperty,Ae="~";function Mt(){}Object.create&&(Mt.prototype=Object.create(null),new Mt().__proto__||(Ae=!1));function pn(o,e,t){this.fn=o,this.context=e,this.once=t||!1}function Mr(o,e,t,i,r){if(typeof t!="function")throw new TypeError("The listener must be a function");var n=new pn(t,i||o,r),a=Ae?Ae+e:e;return o._events[a]?o._events[a].fn?o._events[a]=[o._events[a],n]:o._events[a].push(n):(o._events[a]=n,o._eventsCount++),o}function jt(o,e){--o._eventsCount===0?o._events=new Mt:delete o._events[e]}function xe(){this._events=new Mt,this._eventsCount=0}xe.prototype.eventNames=function(){var e=[],t,i;if(this._eventsCount===0)return e;for(i in t=this._events)mn.call(t,i)&&e.push(Ae?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};xe.prototype.listeners=function(e){var t=Ae?Ae+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var r=0,n=i.length,a=new Array(n);r<n;r++)a[r]=i[r].fn;return a};xe.prototype.listenerCount=function(e){var t=Ae?Ae+e:e,i=this._events[t];return i?i.fn?1:i.length:0};xe.prototype.emit=function(e,t,i,r,n,a){var s=Ae?Ae+e:e;if(!this._events[s])return!1;var l=this._events[s],u=arguments.length,c,h;if(l.fn){switch(l.once&&this.removeListener(e,l.fn,void 0,!0),u){case 1:return l.fn.call(l.context),!0;case 2:return l.fn.call(l.context,t),!0;case 3:return l.fn.call(l.context,t,i),!0;case 4:return l.fn.call(l.context,t,i,r),!0;case 5:return l.fn.call(l.context,t,i,r,n),!0;case 6:return l.fn.call(l.context,t,i,r,n,a),!0}for(h=1,c=new Array(u-1);h<u;h++)c[h-1]=arguments[h];l.fn.apply(l.context,c)}else{var _=l.length,m;for(h=0;h<_;h++)switch(l[h].once&&this.removeListener(e,l[h].fn,void 0,!0),u){case 1:l[h].fn.call(l[h].context);break;case 2:l[h].fn.call(l[h].context,t);break;case 3:l[h].fn.call(l[h].context,t,i);break;case 4:l[h].fn.call(l[h].context,t,i,r);break;default:if(!c)for(m=1,c=new Array(u-1);m<u;m++)c[m-1]=arguments[m];l[h].fn.apply(l[h].context,c)}}return!0};xe.prototype.on=function(e,t,i){return Mr(this,e,t,i,!1)};xe.prototype.once=function(e,t,i){return Mr(this,e,t,i,!0)};xe.prototype.removeListener=function(e,t,i,r){var n=Ae?Ae+e:e;if(!this._events[n])return this;if(!t)return jt(this,n),this;var a=this._events[n];if(a.fn)a.fn===t&&(!r||a.once)&&(!i||a.context===i)&&jt(this,n);else{for(var s=0,l=[],u=a.length;s<u;s++)(a[s].fn!==t||r&&!a[s].once||i&&a[s].context!==i)&&l.push(a[s]);l.length?this._events[n]=l.length===1?l[0]:l:jt(this,n)}return this};xe.prototype.removeAllListeners=function(e){var t;return e?(t=Ae?Ae+e:e,this._events[t]&&jt(this,t)):(this._events=new Mt,this._eventsCount=0),this};xe.prototype.off=xe.prototype.removeListener;xe.prototype.addListener=xe.prototype.on;xe.prefixed=Ae;xe.EventEmitter=xe;typeof ki!="undefined"&&(ki.exports=xe)});var ma={};hn(ma,{MSEPlayer:()=>Ot,NativePlayer:()=>Bt,Remuxer:()=>Ve,TransmuxingEvents:()=>M,defaultConfig:()=>Lt,eflv:()=>nn});var wr=_n(Lr(),1);var Ee=wr.default;var Br=(u=>(u.ERROR="error",u.LOADING_COMPLETE="loading_complete",u.RECOVERED_EARLY_EOF="recovered_early_eof",u.MEDIA_INFO="media_info",u.METADATA_ARRIVED="metadata_arrived",u.SCRIPTDATA_ARRIVED="scriptdata_arrived",u.TIMED_ID3_METADATA_ARRIVED="timed_id3_metadata_arrived",u.STATISTICS_INFO="statistics_info",u.DESTROYING="destroying",u))(Br||{}),$=Br;var Lt={enableWorker:!1,enableWorkerForMSE:!1,enableStashBuffer:!0,stashInitialSize:void 0,isLive:!1,liveBufferLatencyChasing:!1,liveBufferLatencyChasingOnPaused:!1,liveBufferLatencyMaxLatency:1.5,liveBufferLatencyMinRemain:.5,liveSync:!1,liveSyncMaxLatency:1.2,liveSyncTargetLatency:.8,liveSyncPlaybackRate:1.2,lazyLoad:!0,lazyLoadMaxDuration:180,lazyLoadRecoverDuration:60,deferLoadAfterSourceOpen:!0,autoCleanupMaxBackwardDuration:180,autoCleanupMinBackwardDuration:120,autoCleanupSourceBuffer:!0,statisticsInfoReportInterval:600,fixAudioTimestampGap:!0,accurateSeek:!1,seekType:"range",seekParamStart:"bstart",seekParamEnd:"bend",rangeLoadZeroStart:!1,customSeekHandler:void 0,reuseRedirectedURL:!1,headers:void 0,customLoader:void 0,referrerPolicy:void 0,preferWebM:!1};function st(){return K({},Lt)}var ne=class{constructor(e){d(this,"_message");this._message=e}get name(){return"RuntimeException"}get message(){return this._message}toString(){return this.name+": "+this.message}},se=class extends ne{constructor(e){super(e)}get name(){return"IllegalStateException"}},be=class extends ne{constructor(e){super(e)}get name(){return"InvalidArgumentException"}},wt=class extends ne{constructor(e){super(e)}get name(){return"NotImplementedException"}};function gn(o){return typeof o.url=="string"}var Ri=class{constructor(e,t){d(this,"TAG","NativePlayer");d(this,"_type","NativePlayer");d(this,"_emitter",new Ee);d(this,"_config");d(this,"e");d(this,"_pendingSeekTime");d(this,"_statisticsReporter");d(this,"_mediaDataSource");d(this,"_mediaElement");this._config=st(),typeof t=="object"&&Object.assign(this._config,t);let i=e.type.toLowerCase();if(i==="mse"||i==="flv")throw new be("NativePlayer does't support mse/flv MediaDataSource input!");if(!gn(e))throw new be(`NativePlayer(${e.type}) doesn't support multipart playback!`);this.e={onvLoadedMetadata:this._onvLoadedMetadata.bind(this)},this._pendingSeekTime=null,this._statisticsReporter=null,this._mediaDataSource=e,this._mediaElement=null}destroy(){this._emitter.emit($.DESTROYING),this._mediaElement&&(this.unload(),this.detachMediaElement()),this.e=null,this._emitter.removeAllListeners()}on(e,t){e===$.MEDIA_INFO?this._mediaElement!=null&&this._mediaElement.readyState!==0&&Promise.resolve().then(()=>{this._emitter.emit($.MEDIA_INFO,this.mediaInfo)}):e===$.STATISTICS_INFO&&this._mediaElement!=null&&this._mediaElement.readyState!==0&&Promise.resolve().then(()=>{this._emitter.emit($.STATISTICS_INFO,this.statisticsInfo)}),this._emitter.addListener(e,t)}off(e,t){this._emitter.removeListener(e,t)}attachMediaElement(e){if(this._mediaElement=e,e.addEventListener("loadedmetadata",this.e.onvLoadedMetadata),this._pendingSeekTime!=null)try{e.currentTime=this._pendingSeekTime,this._pendingSeekTime=null}catch(t){}}detachMediaElement(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src"),this._mediaElement.removeEventListener("loadedmetadata",this.e.onvLoadedMetadata),this._mediaElement=null),this._statisticsReporter!=null&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}load(){if(!this._mediaElement)throw new se("HTMLMediaElement must be attached before load()!");this._mediaElement.src=this._mediaDataSource.url,this._mediaElement.readyState>0&&(this._mediaElement.currentTime=0),this._mediaElement.preload="auto",this._mediaElement.load(),this._statisticsReporter=window.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval)}unload(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src")),this._statisticsReporter!=null&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}play(){return this._mediaElement.play()}pause(){this._mediaElement.pause()}get type(){return this._type}get buffered(){return this._mediaElement.buffered}get duration(){return this._mediaElement.duration}get volume(){return this._mediaElement.volume}set volume(e){this._mediaElement.volume=e}get muted(){return this._mediaElement.muted}set muted(e){this._mediaElement.muted=e}get currentTime(){return this._mediaElement?this._mediaElement.currentTime:0}set currentTime(e){this._mediaElement?this._mediaElement.currentTime=e:this._pendingSeekTime=e}get mediaInfo(){let t={mimeType:(this._mediaElement instanceof HTMLAudioElement?"audio/":"video/")+this._mediaDataSource.type};return this._mediaElement&&(t.duration=Math.floor(this._mediaElement.duration*1e3),this._mediaElement instanceof HTMLVideoElement&&(t.width=this._mediaElement.videoWidth,t.height=this._mediaElement.videoHeight)),t}get statisticsInfo(){let e={playerType:this._type,url:this._mediaDataSource.url};if(!(this._mediaElement instanceof HTMLVideoElement))return e;let t=!0,i=0,r=0;if(this._mediaElement.getVideoPlaybackQuality){let n=this._mediaElement.getVideoPlaybackQuality();i=n.totalVideoFrames,r=n.droppedVideoFrames}else if(this._mediaElement.webkitDecodedFrameCount!=null){let n=this._mediaElement;i=n.webkitDecodedFrameCount,r=n.webkitDroppedFrameCount}else t=!1;return t&&(e.decodedFrames=i,e.droppedFrames=r),e}_onvLoadedMetadata(e){this._pendingSeekTime!=null&&(this._mediaElement.currentTime=this._pendingSeekTime,this._pendingSeekTime=null),this._emitter.emit($.MEDIA_INFO,this.mediaInfo)}_reportStatisticsInfo(){this._emitter.emit($.STATISTICS_INFO,this.statisticsInfo)}},Bt=Ri;var de,R=class R{static emitLog(e,t){R.emitter.emit("log",e,t)}static e(e,t){if(!R.ENABLE_ERROR)return;(!e||R.FORCE_GLOBAL_TAG)&&(e=R.GLOBAL_TAG);let i=`[${e}] > ${t}`;R.ENABLE_CALLBACK&&R.emitter.emit("log","error",i),console.error?console.error(i):console.warn?console.warn(i):console.log(i)}static i(e,t){if(!R.ENABLE_INFO)return;(!e||R.FORCE_GLOBAL_TAG)&&(e=R.GLOBAL_TAG);let i=`[${e}] > ${t}`;R.ENABLE_CALLBACK&&R.emitter.emit("log","info",i),console.info?console.info(i):console.log(i)}static w(e,t){if(!R.ENABLE_WARN)return;(!e||R.FORCE_GLOBAL_TAG)&&(e=R.GLOBAL_TAG);let i=`[${e}] > ${t}`;R.ENABLE_CALLBACK&&R.emitter.emit("log","warn",i),console.warn?console.warn(i):console.log(i)}static d(e,t){if(!R.ENABLE_DEBUG)return;(!e||R.FORCE_GLOBAL_TAG)&&(e=R.GLOBAL_TAG);let i=`[${e}] > ${t}`;R.ENABLE_CALLBACK&&R.emitter.emit("log","debug",i),console.debug?console.debug(i):console.log(i)}static dumpArrayBuffer(e,t,i=32){let r;if(e instanceof Uint8Array)r=e;else if(e instanceof ArrayBuffer)r=new Uint8Array(e);else if(ArrayBuffer.isView(e))r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength);else throw new TypeError("Expected ArrayBuffer, TypedArray, or DataView");let n=Math.min(r.byteLength,t),a=[];for(let s=0;s<n;s+=i){let l=[],u=[],c=Math.min(i,n-s);for(let h=0;h<c;h++){let _=r[s+h];l.push(_.toString(16).padStart(2,"0")),u.push(_>=32&&_<=126?String.fromCharCode(_):".")}for(;l.length<i;)l.push("  ");for(;u.length<i;)u.push(" ");a.push(`${s.toString(16).padStart(4,"0")}: ${l.join(" ")}  |${u.join("")}|`)}return a.join(`
`)}static v(e,...t){if(!R.ENABLE_VERBOSE)return;(!e||R.FORCE_GLOBAL_TAG)&&(e=R.GLOBAL_TAG);let i=`[${e}] >`;R.ENABLE_CALLBACK&&R.emitter.emit("log","verbose",i,...t),console.log(i,...t)}static scope(e,t){let i=!0,r=()=>{let n=i?t:" ".repeat(t.length);return i=!1,`${n}:`};return{v:(...n)=>R.v(e,r(),...n),w:n=>R.w(e,`${r()} ${n}`),e:n=>R.e(e,`${r()} ${n}`)}}static a(e,t,i){if(!i){let r=`[${e}] ASSERT FAILED: ${t}`;throw new Error(r)}}};d(R,"GLOBAL_TAG","e-rtmp-lab.js"),d(R,"FORCE_GLOBAL_TAG",!1),d(R,"ENABLE_CALLBACK",!1),d(R,"ENABLE_ERROR",!0),d(R,"ENABLE_INFO",!0),d(R,"ENABLE_WARN",!0),d(R,"ENABLE_DEBUG",!1),d(R,"ENABLE_VERBOSE",!0),d(R,"emitter",new Ee),d(R,"LoggingControl",(de=class{static get forceGlobalTag(){return R.FORCE_GLOBAL_TAG}static set forceGlobalTag(t){R.FORCE_GLOBAL_TAG=t,de._notifyChange()}static get globalTag(){return R.GLOBAL_TAG}static set globalTag(t){R.GLOBAL_TAG=t,de._notifyChange()}static get enableAll(){return R.ENABLE_VERBOSE&&R.ENABLE_DEBUG&&R.ENABLE_INFO&&R.ENABLE_WARN&&R.ENABLE_ERROR}static set enableAll(t){R.ENABLE_VERBOSE=t,R.ENABLE_DEBUG=t,R.ENABLE_INFO=t,R.ENABLE_WARN=t,R.ENABLE_ERROR=t,de._notifyChange()}static get enableDebug(){return R.ENABLE_DEBUG}static set enableDebug(t){R.ENABLE_DEBUG=t,de._notifyChange()}static get enableVerbose(){return R.ENABLE_VERBOSE}static set enableVerbose(t){R.ENABLE_VERBOSE=t,de._notifyChange()}static get enableInfo(){return R.ENABLE_INFO}static set enableInfo(t){R.ENABLE_INFO=t,de._notifyChange()}static get enableWarn(){return R.ENABLE_WARN}static set enableWarn(t){R.ENABLE_WARN=t,de._notifyChange()}static get enableError(){return R.ENABLE_ERROR}static set enableError(t){R.ENABLE_ERROR=t,de._notifyChange()}static getConfig(){return{globalTag:R.GLOBAL_TAG,forceGlobalTag:R.FORCE_GLOBAL_TAG,enableVerbose:R.ENABLE_VERBOSE,enableDebug:R.ENABLE_DEBUG,enableInfo:R.ENABLE_INFO,enableWarn:R.ENABLE_WARN,enableError:R.ENABLE_ERROR,enableCallback:R.ENABLE_CALLBACK}}static applyConfig(t){R.GLOBAL_TAG=t.globalTag,R.FORCE_GLOBAL_TAG=t.forceGlobalTag,R.ENABLE_VERBOSE=t.enableVerbose,R.ENABLE_DEBUG=t.enableDebug,R.ENABLE_INFO=t.enableInfo,R.ENABLE_WARN=t.enableWarn,R.ENABLE_ERROR=t.enableError,R.ENABLE_CALLBACK=t.enableCallback}static _notifyChange(){let t=de.emitter;if(t.listenerCount("change")>0){let i=de.getConfig();t.emit("change",i)}}static registerListener(t){de.emitter.addListener("change",t)}static removeListener(t){de.emitter.removeListener("change",t)}static addLogListener(t){R.emitter.addListener("log",t),R.emitter.listenerCount("log")>0&&(R.ENABLE_CALLBACK=!0,de._notifyChange())}static removeLogListener(t){R.emitter.removeListener("log",t),R.emitter.listenerCount("log")===0&&(R.ENABLE_CALLBACK=!1,de._notifyChange())}},d(de,"emitter",new Ee),de));var Xt=R,g=Xt,Ge=Xt.LoggingControl;var Dt={};function xn(){let o=self.navigator.userAgent.toLowerCase(),e=/(edge)\/([\w.]+)/.exec(o)||/(opr)[\/]([\w.]+)/.exec(o)||/(chrome)[ \/]([\w.]+)/.exec(o)||/(iemobile)[\/]([\w.]+)/.exec(o)||/(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(o)||/(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(o)||/(webkit)[ \/]([\w.]+)/.exec(o)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(o)||/(msie) ([\w.]+)/.exec(o)||o.indexOf("trident")>=0&&/(rv)(?::| )([\w.]+)/.exec(o)||o.indexOf("compatible")<0&&/(firefox)[ \/]([\w.]+)/.exec(o)||[],t=/(ipad)/.exec(o)||/(ipod)/.exec(o)||/(windows phone)/.exec(o)||/(iphone)/.exec(o)||/(kindle)/.exec(o)||/(android)/.exec(o)||/(windows)/.exec(o)||/(mac)/.exec(o)||/(linux)/.exec(o)||/(cros)/.exec(o)||[],i={browser:e[5]||e[3]||e[1]||"",version:e[2]||e[4]||"0",majorVersion:e[4]||e[2]||"0",platform:t[0]||""},r={};if(i.browser){r[i.browser]=!0;let n=i.majorVersion.split(".");r.version={major:parseInt(i.majorVersion,10),string:i.version},n.length>1&&(r.version.minor=parseInt(n[1],10)),n.length>2&&(r.version.build=parseInt(n[2],10))}if(i.platform&&(r[i.platform]=!0),(r.chrome||r.opr||r.safari)&&(r.webkit=!0),r.rv||r.iemobile){r.rv&&delete r.rv;let n="msie";i.browser=n,r[n]=!0}if(r.edge){delete r.edge;let n="msedge";i.browser=n,r[n]=!0}if(r.opr){let n="opera";i.browser=n,r[n]=!0}if(r.safari&&r.android){let n="android";i.browser=n,r[n]=!0}r.name=i.browser,r.platform=i.platform;for(let n in Dt)Dt.hasOwnProperty(n)&&delete Dt[n];Object.assign(Dt,r)}xn();var ie=Dt;var Dr=(s=>(s.ERROR="error",s.SOURCE_OPEN="source_open",s.UPDATE_END="update_end",s.BUFFER_FULL="buffer_full",s.QUOTA_EXCEEDED_BUFFER_FULL="quota_exceeded_buffer_full",s.START_STREAMING="start_streaming",s.END_STREAMING="end_streaming",s))(Dr||{}),ae=Dr;var fe=(...o)=>{throw new Error("Callback function has not been implemented.")},Xe=(...o)=>{g.v("No operation callback invoked with arguments:",o)};var Re=class{constructor(e,t,i,r,n){d(this,"dts");d(this,"pts");d(this,"duration");d(this,"originalDts");d(this,"isSyncPoint");d(this,"fileposition",null);this.dts=e,this.pts=t,this.duration=i,this.originalDts=r,this.isSyncPoint=n}},et=class{constructor(){d(this,"beginDts",0);d(this,"endDts",0);d(this,"beginPts",0);d(this,"endPts",0);d(this,"originalBeginDts",0);d(this,"originalEndDts",0);d(this,"syncPoints",[]);d(this,"firstFrame",null);d(this,"lastFrame",null)}appendSyncPoint(e){e.isSyncPoint=!0,this.syncPoints.push(e)}},Yt=class{constructor(){d(this,"_list",[])}clear(){this._list=[]}appendArray(e){let t=this._list;e.length!==0&&(t.length>0&&e[0].originalDts<t[t.length-1].originalDts&&this.clear(),Array.prototype.push.apply(t,e))}getLastSyncPointBeforeDts(e){if(this._list.length==0)return null;let t=this._list,i=0,r=t.length-1,n=0,a=0,s=r;for(e<t[0].dts&&(i=0,a=s+1);a<=s;)if(n=a+Math.floor((s-a)/2),n===r||e>=t[n].dts&&e<t[n+1].dts){i=n;break}else t[n].dts<e?a=n+1:s=n-1;return this._list[i]}},ot=class{constructor(e){d(this,"_type");d(this,"_list",[]);d(this,"_lastAppendLocation",-1);this._type=e}get type(){return this._type}get length(){return this._list.length}isEmpty(){return this._list.length===0}clear(){this._list=[],this._lastAppendLocation=-1}_searchNearestSegmentBefore(e){let t=this._list;if(t.length===0)return-2;let i=t.length-1,r=0,n=0,a=i,s=0;if(e<t[0].originalBeginDts)return s=-1,s;for(;n<=a;){let l=t[r].lastFrame;if(r=n+Math.floor((a-n)/2),r===i||l&&e>l.originalDts&&e<t[r+1].originalBeginDts){s=r;break}else t[r].originalBeginDts<e?n=r+1:a=r-1}return s}_searchNearestSegmentAfter(e){return this._searchNearestSegmentBefore(e)+1}append(e){let t=this._list,i=e,r=this._lastAppendLocation,n=0;r!==-1&&r<t.length&&t[r].lastFrame&&i.originalBeginDts>=t[r].lastFrame.originalDts&&(r===t.length-1||r<t.length-1&&i.originalBeginDts<t[r+1].originalBeginDts)?n=r+1:t.length>0&&(n=this._searchNearestSegmentBefore(i.originalBeginDts)+1),this._lastAppendLocation=n,this._list.splice(n,0,i)}getLastSegmentBefore(e){let t=this._searchNearestSegmentBefore(e);return t>=0?this._list[t]:null}getLastFrameBefore(e){let t=this.getLastSegmentBefore(e);return t!=null?t.lastFrame:null}getLastSyncPointBefore(e){let t=this._searchNearestSegmentBefore(e),i=this._list[t].syncPoints;for(;i.length===0&&t>0;)t--,i=this._list[t].syncPoints;return i.length>0?i[i.length-1]:null}};var w={Audio:"audio",Video:"video"};var Ve=class{constructor(e){d(this,"_config");d(this,"_isLive");d(this,"_isAudioMetadataDispatched",!1);d(this,"_isVideoMetadataDispatched",!1);d(this,"_audioMeta",null);d(this,"_videoMeta",null);d(this,"_dtsBase",1/0);d(this,"_audioDtsBase",1/0);d(this,"_videoDtsBase",1/0);d(this,"_audioNextDts",1/0);d(this,"_videoNextDts",1/0);d(this,"_audioStashedLastFrame",null);d(this,"_videoStashedLastFrame",null);d(this,"_audioSegmentInfoList",new ot(w.Audio));d(this,"_videoSegmentInfoList",new ot(w.Video));d(this,"_onInitSegment",fe);d(this,"_onMediaSegment",fe);this._config=e,this._isLive=e.isLive}remuxTrackData(e,t){this._onTrackData(e,t)}remuxTrackMetadata(e){this._onTrackMetadata(e)}get isAudioMetadataDispatched(){return this._isAudioMetadataDispatched}get isVideoMetadataDispatched(){return this._isVideoMetadataDispatched}insertDiscontinuity(){this._audioNextDts=1/0,this._videoNextDts=1/0}setTimestampBase(e){this._dtsBase=e}get timestampBase(){return this._dtsBase===1/0?void 0:this._dtsBase}get onInitSegment(){return this._onInitSegment}set onInitSegment(e){this._onInitSegment=e}get onMediaSegment(){return this._onMediaSegment}set onMediaSegment(e){this._onMediaSegment=e}_calculateDtsBase(e,t){this._dtsBase===1/0&&(e.frames.length>0&&(this._audioDtsBase=e.frames[0].dts),t.frames.length>0&&(this._videoDtsBase=t.frames[0].dts),this._dtsBase=Math.min(this._audioDtsBase,this._videoDtsBase))}_takeStashedFrames(){let e={type:w.Video,id:1,sequenceNumber:0,frames:[],length:0};this._videoStashedLastFrame&&(e.frames.push(this._videoStashedLastFrame),e.length=this._videoStashedLastFrame.length);let t={type:w.Audio,id:2,sequenceNumber:0,frames:[],length:0};return this._audioStashedLastFrame&&(t.frames.push(this._audioStashedLastFrame),t.length=this._audioStashedLastFrame.length),this._videoStashedLastFrame=null,this._audioStashedLastFrame=null,{audioTrack:t,videoTrack:e}}_clearTrackState(){this._audioStashedLastFrame=null,this._videoStashedLastFrame=null,this._audioSegmentInfoList.clear(),this._videoSegmentInfoList.clear()}_resetTimelineState(){this._dtsBase=1/0,this._audioDtsBase=1/0,this._videoDtsBase=1/0,this._audioNextDts=1/0,this._videoNextDts=1/0,this._clearTrackState()}_clearMetadata(){this._audioMeta=null,this._videoMeta=null}_resetCallbacks(){this._onInitSegment=fe,this._onMediaSegment=fe}};d(Ve,"DEBUG_BUFFER",!1),d(Ve,"dbgVideoBuffer",new Uint8Array),d(Ve,"dbgAudioBuffer",new Uint8Array);var lt=[w.Video,w.Audio];function bn(o,e=16){return!o||o.byteLength===0?"empty":Array.from(o.subarray(0,Math.min(e,o.byteLength))).map(t=>t.toString(16).padStart(2,"0")).join(" ")}function mt(o){return`type=${o.type} codec=${o.codec||"none"} container=${o.container} bytes=${o.data.byteLength} head=${bn(o.data)}`}function yn(o){if(!o)return"none";let e=[`code=${o.code}`];return"message"in o&&typeof o.message=="string"&&o.message.length>0&&e.push(`message=${o.message}`),e.join(" ")}var Qt=class Qt{constructor(e,t){d(this,"TAG","MSEController");d(this,"_config");d(this,"_emitter",new Ee);d(this,"events");d(this,"_mediaSource");d(this,"_mediaElementProxy");d(this,"_mediaSourceObjectURL",null);d(this,"_useManagedMediaSource");d(this,"_isBufferFull",!1);d(this,"_hasPendingEos",!1);d(this,"_requireSetMediaDuration",!1);d(this,"_pendingMediaDuration",0);d(this,"_mimeTypes",{video:null,audio:null});d(this,"_sourceBuffers",{video:null,audio:null});d(this,"_lastInitSegments",{video:null,audio:null});d(this,"_pendingSegments",{video:[],audio:[]});d(this,"_pendingRemoveRanges",{video:[],audio:[]});d(this,"_pendingSourceBufferInit",[]);d(this,"_onMediaTimeUpdate",e=>{this._needCleanupSourceBuffer()&&this._doCleanupSourceBuffer(),this._hasPendingEos&&this._hasPendingSegments()&&!this._hasPendingRemoveRanges()&&(g.v(this.TAG,"Retrying append of final segment after playback progress"),this._doAppendSegments())});this._config=e,this._config.isLive&&this._config.autoCleanupSourceBuffer==null?this._config=te(K({},e),{autoCleanupSourceBuffer:!0}):this._config=e,this.events={onSourceOpen:this._onSourceOpen.bind(this),onSourceEnded:this._onSourceEnded.bind(this),onSourceClose:this._onSourceClose.bind(this),onStartStreaming:this._onStartStreaming.bind(this),onEndStreaming:this._onEndStreaming.bind(this),onQualityChange:this._onQualityChange.bind(this),onSourceBufferError:this._onSourceBufferError.bind(this),onSourceBufferUpdateEnd:this._onSourceBufferUpdateEnd.bind(this)},this._useManagedMediaSource="ManagedMediaSource"in self&&!("MediaSource"in self),this._useManagedMediaSource&&g.v(this.TAG,"Using ManagedMediaSource");let i=this._mediaSource=this._useManagedMediaSource?new self.ManagedMediaSource:new self.MediaSource;i.addEventListener("sourceopen",this.events.onSourceOpen),i.addEventListener("sourceended",this.events.onSourceEnded),i.addEventListener("sourceclose",this.events.onSourceClose),this._useManagedMediaSource&&(i.addEventListener("startstreaming",this.events.onStartStreaming),i.addEventListener("endstreaming",this.events.onEndStreaming),i.addEventListener("qualitychange",this.events.onQualityChange)),this._mediaElementProxy=t}destroy(){this._mediaElementProxy.setOnMediaTimeUpdate(null),this._mediaSource&&this.shutdown(),this._mediaSourceObjectURL&&this.revokeObjectURL(),this.events=null,this._emitter.removeAllListeners()}on(e,t){this._emitter.addListener(e,t)}off(e,t){this._emitter.removeListener(e,t)}shutdown(){if(this._mediaSource){let e=this._mediaSource;for(let t of lt){this._pendingSegments[t].splice(0),this._pendingRemoveRanges[t].splice(0),this._lastInitSegments[t]=null;let i=this._sourceBuffers[t];if(i){if(e.readyState!=="closed"){try{e.removeSourceBuffer(i)}catch(r){g.e(this.TAG,r.message)}i.removeEventListener("error",this.events.onSourceBufferError),i.removeEventListener("updateend",this.events.onSourceBufferUpdateEnd)}this._mimeTypes[t]=null,this._sourceBuffers[t]=null}}if(e.readyState==="open")try{e.endOfStream()}catch(t){g.e(this.TAG,t.message)}e.removeEventListener("sourceopen",this.events.onSourceOpen),e.removeEventListener("sourceended",this.events.onSourceEnded),e.removeEventListener("sourceclose",this.events.onSourceClose),this._useManagedMediaSource&&(e.removeEventListener("startstreaming",this.events.onStartStreaming),e.removeEventListener("endstreaming",this.events.onEndStreaming),e.removeEventListener("qualitychange",this.events.onQualityChange))}this._mediaSource=null,this._pendingSourceBufferInit=[],this._isBufferFull=!1,this._hasPendingEos=!1}isManagedMediaSource(){return this._useManagedMediaSource}getObject(){if(!this._mediaSource)throw new se("MediaSource has not been initialized yet!");return this._mediaSource}getHandle(){if(!this._mediaSource)throw new se("MediaSource has not been initialized yet!");if(this._useManagedMediaSource)return this._mediaSource.handle}getObjectURL(){if(!this._mediaSource)throw new se("MediaSource has not been initialized yet!");return this._mediaSourceObjectURL==null&&(this._mediaSourceObjectURL=URL.createObjectURL(this._mediaSource)),this._mediaSourceObjectURL}revokeObjectURL(){this._mediaSourceObjectURL&&(URL.revokeObjectURL(this._mediaSourceObjectURL),this._mediaSourceObjectURL=null)}appendInitSegment(e,t=!1){var l,u,c,h,_;if(((l=this._mediaSource)==null?void 0:l.readyState)!=="open"||this._useManagedMediaSource&&this._mediaSource.streaming===!1){g.v(this.TAG,`appendInitSegment: deferring because MediaSource is not ready, deferred=${t} ${mt(e)}`),this._deferInitSegment(e,t);return}let i=e,r=`${i.container}`;i.codec&&i.codec.length>0&&(i.codec==="opus"&&ie.safari&&(i.codec="Opus"),r+=`; codecs="${i.codec}"`);let n=!1,a=(u=this._sourceBuffers.video)==null?void 0:u.updating,s=(c=this._sourceBuffers.audio)==null?void 0:c.updating;if(a||s){g.v(this.TAG,`appendInitSegment: deferring because SourceBuffer is updating, deferred=${t} mimeType=${r} updatingVideo=${a} updatingAudio=${s} ${mt(i)}`),this._deferInitSegment(e,t);return}if(g.v(this.TAG,`appendInitSegment: accepting mimeType=${r} deferred=${t} updatingVideo=${a} updatingAudio=${s} ${mt(i)}`),this._lastInitSegments[i.type]=i,r!==this._mimeTypes[i.type]){if(this._mimeTypes[i.type])g.v(this.TAG,`Notice: ${i.type} mimeType changed for ${this._mimeTypes[i.type]}, mimeType: ${r}`);else{n=!0;try{let m=this._sourceBuffers[i.type]=this._mediaSource.addSourceBuffer(r),y=(h=this._sourceBuffers.video)==null?void 0:h.updating,f=(_=this._sourceBuffers.audio)==null?void 0:_.updating;g.v(this.TAG,`appendInitSegment: Now ${Date.now()} - Created SourceBuffer for ${i.type} track, mimeType: ${r}, updating video: ${y} audio: ${f}`),this._mediaSource.duration=i.mediaDuration/1e3,m.addEventListener("error",this.events.onSourceBufferError),m.addEventListener("updateend",this.events.onSourceBufferUpdateEnd)}catch(m){g.e(this.TAG,m.message),this._emitter.emit(ae.ERROR,{code:m.code,msg:m.message});return}}this._mimeTypes[i.type]=r}t||this._pendingSegments[i.type].push(i),n||this._doAppendSegments(),(ie.safari&&i.container==="audio/mpeg"||i.container==="video/webm")&&i.mediaDuration>0&&(this._requireSetMediaDuration=!0,this._pendingMediaDuration=i.mediaDuration/1e3,this._updateMediaSourceDuration())}appendMediaSegment(e){let t=e;this._pendingSegments[t.type].push(t),this._config.autoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanupSourceBuffer(),this._hasPendingRemoveRanges()||this._doAppendSegments()}flush(){var e,t;for(let i of lt){if(!this._sourceBuffers[i])continue;let r=this._sourceBuffers[i];if(((e=this._mediaSource)==null?void 0:e.readyState)==="open")try{r.abort()}catch(a){g.e(this.TAG,a.message)}let n=this._pendingSegments[i];if(n.splice(0,n.length),((t=this._mediaSource)==null?void 0:t.readyState)!=="closed"){for(let a=0;a<r.buffered.length;a++){let s=r.buffered.start(a),l=r.buffered.end(a);this._pendingRemoveRanges[i].push({start:s,end:l})}if(this._doRemoveRanges(),ie.safari){let a=this._lastInitSegments[i];a&&(this._pendingSegments[i].push(a),this._doAppendSegments())}}}}endOfStream(){var i,r;let e=this._mediaSource,t=this._sourceBuffers;if(!e||e.readyState!=="open"){e&&e.readyState==="closed"&&this._hasPendingSegments()&&(this._hasPendingEos=!0);return}(i=t.video)!=null&&i.updating||(r=t.audio)!=null&&r.updating?this._hasPendingEos=!0:(this._hasPendingEos=!1,e.endOfStream())}_needCleanupSourceBuffer(){if(!this._config.autoCleanupSourceBuffer||!this._mediaElementProxy)return!1;let e=this._mediaElementProxy.getCurrentTime();for(let t of lt){let i=this._getBufferedRanges(t);if(i&&i.length>=1&&e-i.start(0)>=this._config.autoCleanupMaxBackwardDuration)return!0}return!1}_doCleanupSourceBuffer(e=!1){let t=this._mediaElementProxy.getCurrentTime();for(let i of lt){let r=this._sourceBuffers[i],n=this._getBufferedRanges(i);if(r&&n){let a=!1;for(let s=0;s<n.length;s++){let l=n.start(s),u=n.end(s);if(l<=t&&t<u+3){if(t-l>=this._config.autoCleanupMaxBackwardDuration){let c=t-this._config.autoCleanupMinBackwardDuration;l<c&&(a=!0,this._pendingRemoveRanges[i].push({start:l,end:c}))}else if(e){let c=t-10;l<c&&(a=!0,this._pendingRemoveRanges[i].push({start:l,end:c}))}}else u<t&&(a=!0,this._pendingRemoveRanges[i].push({start:l,end:u}))}a?(g.v(this.TAG,`Cleanup SourceBuffer ${i}, currentTime: ${t}, pendingRemoveRanges: ${this._pendingRemoveRanges[i].length} ranges`),this._doRemoveRanges()):n.length>0?g.w(this.TAG,`Could not cleanup SourceBuffer ${i}, currentTime: ${t} bufferedStart: ${n.start(0)} bufferedEnd: ${n.end(n.length-1)}`):g.w(this.TAG,`Could not cleanup SourceBuffer ${i}, currentTime: ${t} buffered: empty`)}}}_updateMediaSourceDuration(){var r,n,a;let e=this._sourceBuffers;if(this._mediaElementProxy.getReadyState()===0||((r=this._mediaSource)==null?void 0:r.readyState)!=="open"||(n=e.video)!=null&&n.updating||(a=e.audio)!=null&&a.updating)return;let t=this._mediaSource.duration,i=this._pendingMediaDuration;i>0&&(isNaN(t)||i>t)&&(g.v(this.TAG,`Update MediaSource duration from ${t} to ${i}`),this._mediaSource.duration=i),this._requireSetMediaDuration=!1,this._pendingMediaDuration=0}_doRemoveRanges(){for(let e of lt){if(!this._sourceBuffers[e]||this._sourceBuffers[e].updating)continue;let t=this._sourceBuffers[e],i=this._pendingRemoveRanges[e];if(i.length&&!t.updating){let r=i.shift();t.remove(r.start,r.end)}}}_doAppendSegments(){var t,i,r,n;if(!this._mediaSource||this._mediaSource.readyState!=="open")return;let e=this._pendingSegments;for(let a of lt)if(!(!this._sourceBuffers[a]||this._sourceBuffers[a].updating||this._useManagedMediaSource&&this._mediaSource.streaming===!1)&&e[a].length>0){let s=e[a][0].kind===1?e[a][0]:void 0,l=e[a][0].kind===0?e[a][0]:void 0,u=s==null?void 0:s.info,c=(t=s==null?void 0:s.frameCount)!=null?t:0,h=e[a].shift();if(h.kind===1&&Number.isFinite(h==null?void 0:h.timestampOffset)){let _=this._sourceBuffers[a].timestampOffset,m=h.timestampOffset/1e3;Math.abs(_-m)>.1&&(g.v(this.TAG,`Update MPEG audio timestampOffset from ${_} to ${m}`),this._sourceBuffers[a].timestampOffset=m),delete h.timestampOffset}if(!h.data||h.data.byteLength===0)continue;try{if(h.kind,0,Qt.TRACE){let _=(i=this._sourceBuffers.audio)==null?void 0:i.updating,m=(r=this._sourceBuffers.video)==null?void 0:r.updating;u?g.v(this.TAG,`_doAppendSegments: Now ${Date.now()} - Appending media segment for ${a} SourceBuffer - frameCount: ${c} beginDts: ${u.beginDts} endDts: ${u.endDts} size: ${h.data.byteLength} audioUpdating ${_} videoUpdating ${m}`):g.v(this.TAG,`_doAppendSegments: Now ${Date.now()} - Appending init segment for ${a} SourceBuffer - size: ${h.data.byteLength} audioUpdating ${_} videoUpdating ${m}`)}if(typeof SharedArrayBuffer!="undefined"&&h.data.buffer instanceof SharedArrayBuffer){let _=h.data.slice();this._sourceBuffers[a].appendBuffer(_)}else this._sourceBuffers[a].appendBuffer(h.data);this._isBufferFull=!1}catch(_){this._pendingSegments[a].unshift(h),g.e(this.TAG,`error.message = ${_.message}; error.name = ${_.name}; error.code = ${_.code}; pendingData.length = ${h.data.length}; type = ${a}; beginDts = ${u?u.beginDts:"N/A"}; endDts = ${u?u.endDts:"N/A"}`),_.name==="QuotaExceededError"?this._hasPendingEos&&this._config.autoCleanupSourceBuffer?(this._mediaElementProxy.setOnMediaTimeUpdate(this._onMediaTimeUpdate),g.v(this.TAG,"QuotaExceededError with pending EOS, forcing cleanup to append final segment."),this._doCleanupSourceBuffer(!0),this._hasPendingRemoveRanges()||(g.w(this.TAG,"Cannot cleanup buffer at current position - will retry as playback progresses"),this._isBufferFull||(this._isBufferFull=!0,this._emitter.emit(ae.BUFFER_FULL)))):this._isBufferFull||(this._isBufferFull=!0,this._emitter.emit(ae.BUFFER_FULL),this._emitter.emit(ae.QUOTA_EXCEEDED_BUFFER_FULL,{type:a,currentBufferLength:((n=this._sourceBuffers[a])==null?void 0:n.buffered.length)||0,segmentSize:h.data.byteLength})):(g.e(this.TAG,_.message),this._emitter.emit(ae.ERROR,{code:_.code,msg:_.message}))}}}_deferInitSegment(e,t){this._pendingSourceBufferInit=this._pendingSourceBufferInit.filter(i=>i.type!==e.type),this._pendingSourceBufferInit.push(e),g.v(this.TAG,`_deferInitSegment: queued deferred=${t} pendingSourceBufferInit=${this._pendingSourceBufferInit.length} pendingAudio=${this._pendingSegments.audio.length} pendingVideo=${this._pendingSegments.video.length} ${mt(e)}`),t||(this._pendingSegments[e.type]=this._pendingSegments[e.type].filter(i=>i.kind!==0),this._pendingSegments[e.type].push(e),g.v(this.TAG,`_deferInitSegment: also queued into pendingSegments[${e.type}] size=${this._pendingSegments[e.type].length} ${mt(e)}`))}_flushPendingInitSegments(){var e,t;for(;this._pendingSourceBufferInit.length>0;){if(!this._mediaSource||this._mediaSource.readyState!=="open"||this._useManagedMediaSource&&this._mediaSource.streaming===!1||(e=this._sourceBuffers.video)!=null&&e.updating||(t=this._sourceBuffers.audio)!=null&&t.updating||this._hasPendingRemoveRanges())return;let i=this._pendingSourceBufferInit.shift();g.v(this.TAG,`_flushPendingInitSegments: dispatching queued init, remaining=${this._pendingSourceBufferInit.length} ${mt(i)}`),this.appendInitSegment(i,!0)}}_onSourceOpen(){var e;g.v(this.TAG,"MediaSource onSourceOpen"),(e=this._mediaSource)==null||e.removeEventListener("sourceopen",this.events.onSourceOpen),this._flushPendingInitSegments(),this._hasPendingSegments()&&this._doAppendSegments(),this._emitter.emit(ae.SOURCE_OPEN)}_onStartStreaming(){g.v(this.TAG,"ManagedMediaSource onStartStreaming"),this._flushPendingInitSegments(),this._hasPendingSegments()&&this._doAppendSegments(),this._emitter.emit(ae.START_STREAMING)}_onEndStreaming(){g.v(this.TAG,"ManagedMediaSource onEndStreaming"),this._emitter.emit(ae.END_STREAMING)}_onQualityChange(){g.v(this.TAG,"ManagedMediaSource onQualityChange")}_onSourceEnded(){g.v(this.TAG,"MediaSource onSourceEnded")}_getBufferedRanges(e){let t=this._sourceBuffers[e];return t?t.buffered:null}_onSourceClose(){g.v(this.TAG,"MediaSource onSourceClose");for(let e of lt){let t=this._sourceBuffers[e];t&&(t.removeEventListener("error",this.events.onSourceBufferError),t.removeEventListener("updateend",this.events.onSourceBufferUpdateEnd)),this._sourceBuffers[e]=null,this._mimeTypes[e]=null,this._pendingRemoveRanges[e].splice(0),this._pendingSegments[e].splice(0)}this._pendingSourceBufferInit=[],this._mediaSource&&this.events!=null&&(this._mediaSource.removeEventListener("sourceopen",this.events.onSourceOpen),this._mediaSource.removeEventListener("sourceended",this.events.onSourceEnded),this._mediaSource.removeEventListener("sourceclose",this.events.onSourceClose),this._useManagedMediaSource&&(this._mediaSource.removeEventListener("startstreaming",this.events.onStartStreaming),this._mediaSource.removeEventListener("endstreaming",this.events.onEndStreaming),this._mediaSource.removeEventListener("qualitychange",this.events.onQualityChange)))}_hasPendingSegments(){let e=this._pendingSegments;return e.video.length>0||e.audio.length>0}_hasPendingRemoveRanges(){let e=this._pendingRemoveRanges;return e.video.length>0||e.audio.length>0}_onSourceBufferUpdateEnd(){this._requireSetMediaDuration&&this._updateMediaSourceDuration(),this._flushPendingInitSegments(),this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this._hasPendingEos&&this.endOfStream(),this._emitter.emit(ae.UPDATE_END)}_onSourceBufferError(e){var a,s,l,u,c,h,_,m,y,f,x;let t=e==null?void 0:e.target,i=(l=(s=(a=this._mediaElementProxy)==null?void 0:a.getError)==null?void 0:s.call(a))!=null?l:null,r=t?`updating=${t.updating}`:"target=unknown";g.e(this.TAG,`SourceBuffer Error: eventType=${(u=e==null?void 0:e.type)!=null?u:"unknown"} ${r} mediaSourceReadyState=${(h=(c=this._mediaSource)==null?void 0:c.readyState)!=null?h:"null"} mediaElementReadyState=${(y=(m=(_=this._mediaElementProxy)==null?void 0:_.getReadyState)==null?void 0:m.call(_))!=null?y:"unknown"} mediaError=${yn(i)}`);let n=(x=(f=this._mediaElementProxy)==null?void 0:f.getError)==null?void 0:x.call(f);n&&this._emitter.emit(ae.ERROR,{code:n.code,msg:n.message})}};d(Qt,"TRACE",!1);var Ti=Qt,Ur=Ti;var Fi=class{constructor(){d(this,"mimeType",null);d(this,"duration",null);d(this,"hasAudio",null);d(this,"hasVideo",null);d(this,"audioCodec",null);d(this,"videoCodec",null);d(this,"audioDataRate",null);d(this,"videoDataRate",null);d(this,"audioSampleRate",null);d(this,"audioChannelCount",null);d(this,"width",null);d(this,"height",null);d(this,"fps",null);d(this,"profile",null);d(this,"level",null);d(this,"refFrames",null);d(this,"chromaFormat",null);d(this,"sarNum",null);d(this,"sarDen",null);d(this,"metadata",null);d(this,"segments",null);d(this,"segmentCount",null);d(this,"hasKeyframesIndex",null);d(this,"keyframesIndex",null)}isComplete(){let e=this.hasAudio===!1||this.hasAudio===!0&&this.audioCodec!=null&&this.audioSampleRate!=null&&this.audioChannelCount!=null,t=this.hasVideo===!1||this.hasVideo===!0&&this.videoCodec!=null&&this.width!=null&&this.height!=null&&this.fps!=null&&this.profile!=null&&this.level!=null&&this.refFrames!=null&&this.chromaFormat!=null&&this.sarNum!=null&&this.sarDen!=null;return this.mimeType!=null&&e&&t}isSeekable(){return this.hasKeyframesIndex===!0}getNearestKeyframe(e){if(this.keyframesIndex==null)return null;let t=this.keyframesIndex,i=this._search(t.times,e);return{index:i,milliseconds:t.times[i],fileposition:t.filepositions[i]}}_search(e,t){let i=0,r=e.length-1,n=0,a=0,s=r;for(t<e[0]&&(i=0,a=s+1);a<=s;)if(n=a+Math.floor((s-a)/2),n===r||t>=e[n]&&t<e[n+1]){i=n;break}else e[n]<t?a=n+1:s=n-1;return i}},Ne=Fi;var Mi=class{constructor(e){d(this,"TAG");d(this,"_buffer");d(this,"_buffer_index");d(this,"_total_bytes");d(this,"_current_word");d(this,"_current_word_bits_left");this.TAG="ExpGolomb",this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=new Uint8Array(0)}get bitsConsumed(){return this._buffer_index*8-this._current_word_bits_left}get bitsRemaining(){return(this._total_bytes-this._buffer_index)*8+this._current_word_bits_left}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index;if(e<=0)throw new se("ExpGolomb: _fillCurrentWord() but no bytes available");let t=Math.min(4,e),i=new Uint8Array(4);i.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(i.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=t*8}readBits(e){if(e>32)throw new be("ExpGolomb: readBits() bits exceeded max 32bits!");if(e===0)return 0;if(e<=this._current_word_bits_left){let a=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,a}let t=this._current_word_bits_left?this._current_word:0;t=t>>>32-this._current_word_bits_left;let i=e-this._current_word_bits_left;this._fillCurrentWord();let r=Math.min(i,this._current_word_bits_left),n=this._current_word>>>32-r;return this._current_word<<=r,this._current_word_bits_left-=r,t=t<<r|n,t}readBool(){return this.readBits(1)===1}readByte(){return this.readBits(8)}_skipLeadingZero(){let e;for(e=0;e<this._current_word_bits_left;e++)if((this._current_word&2147483648>>>e)!==0)return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return e&1?e+1>>>1:-1*(e>>>1)}},me=Mi;var It=(C=>(C[C.kNull=0]="kNull",C[C.kAAC_Main=1]="kAAC_Main",C[C.kAAC_LC=2]="kAAC_LC",C[C.kAAC_SSR=3]="kAAC_SSR",C[C.kAAC_LTP=4]="kAAC_LTP",C[C.kAAC_SBR=5]="kAAC_SBR",C[C.kAAC_Scalable=6]="kAAC_Scalable",C[C.kTwinVQ=7]="kTwinVQ",C[C.kCELP=8]="kCELP",C[C.kHVXC=9]="kHVXC",C[C.kTTSI=12]="kTTSI",C[C.kMainSynthetic=13]="kMainSynthetic",C[C.kWavetableSynthesis=14]="kWavetableSynthesis",C[C.kGeneralMIDI=15]="kGeneralMIDI",C[C.kAlgorithmicSynthesis=16]="kAlgorithmicSynthesis",C[C.kER_AAC_LC=17]="kER_AAC_LC",C[C.kER_AAC_LTP=19]="kER_AAC_LTP",C[C.kER_AAC_Scalable=20]="kER_AAC_Scalable",C[C.kER_TwinVQ=21]="kER_TwinVQ",C[C.kER_BSAC=22]="kER_BSAC",C[C.kER_AAC_LD=23]="kER_AAC_LD",C[C.kER_CELP=24]="kER_CELP",C[C.kER_HVXC=25]="kER_HVXC",C[C.kER_HILN=26]="kER_HILN",C[C.kER_Parametric=27]="kER_Parametric",C[C.kSSC=28]="kSSC",C[C.kAAC_PS=29]="kAAC_PS",C[C.kMPEGSurround=30]="kMPEGSurround",C[C.kLayer1=32]="kLayer1",C[C.kLayer2=33]="kLayer2",C[C.kLayer3=34]="kLayer3",C[C.kDST=35]="kDST",C[C.kALS=36]="kALS",C[C.kSLS=37]="kSLS",C[C.kSLS_NonCore=38]="kSLS_NonCore",C[C.kER_AAC_ELD=39]="kER_AAC_ELD",C[C.kSMR_Simple=40]="kSMR_Simple",C[C.kSMR_Main=41]="kSMR_Main",C[C.kUSAC=42]="kUSAC",C[C.kSAOC=43]="kSAOC",C[C.kLD_MpegSurround=44]="kLD_MpegSurround",C[C.kSAOC_DE=45]="kSAOC_DE",C))(It||{});var Oe=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];var pt=class{constructor(e){d(this,"audio_object_type",2);d(this,"sampling_freq_index",4);d(this,"sampling_frequency",Oe[4]);d(this,"channel_config",2);d(this,"data",new Uint8Array);var t;if(e===void 0||e.byteLength<2){e!==void 0&&(this.data=e);return}this.data=e,this.audio_object_type=e[0]>>>3,this.sampling_freq_index=(e[0]&7)<<1|e[1]>>>7,this.sampling_frequency=(t=Oe[this.sampling_freq_index])!=null?t:0,this.channel_config=(e[1]&120)>>>3}};var gt=class{constructor(e){d(this,"config");d(this,"sampling_rate");d(this,"channel_count");d(this,"codec_mimetype");d(this,"original_codec_mimetype");let t,i=e.audio_object_type,r=e.audio_object_type,n=e.sampling_freq_index,a=e.channel_config,s=0,l=navigator.userAgent.toLowerCase();l.indexOf("firefox")!==-1?n>=6?(r=5,t=new Array(4),s=n-3):(r=2,t=new Array(2),s=n):l.indexOf("android")!==-1?(r=2,t=new Array(2),s=n):(r=5,s=n,t=new Array(4),n>=6&&(s=n-3)),t[0]=r<<3,t[0]|=(n&15)>>>1,t[1]=(n&15)<<7,t[1]|=(a&15)<<3,r===5&&(t[1]|=(s&15)>>>1,t[2]=(s&1)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Oe[n],this.channel_count=a,this.codec_mimetype="mp4a.40."+r,this.original_codec_mimetype="mp4a.40."+i}};var Li=class o{static _ebsp2rbsp(e){let t=e,i=t.byteLength,r=new Uint8Array(i),n=0;for(let a=0;a<i;a++)a>=2&&t[a]===3&&t[a-1]===0&&t[a-2]===0||(r[n]=t[a],n++);return new Uint8Array(r.buffer,0,n)}static parseSPS(e){let t=e.subarray(1,4),i="avc1.";for(let B=0;B<3;B++){let P=t[B].toString(16);P.length<2&&(P="0"+P),i+=P}let r=o._ebsp2rbsp(e),n=new me(r);n.readByte();let a=n.readByte();n.readByte();let s=n.readByte();n.readUEG();let l=o.getProfileString(a),u=o.getLevelString(s),c=1,h=420,_=[0,420,422,444],m=8,y=8;if((a===100||a===110||a===122||a===244||a===44||a===83||a===86||a===118||a===128||a===138||a===144)&&(c=n.readUEG(),c===3&&n.readBits(1),c<=3&&(h=_[c]),m=n.readUEG()+8,y=n.readUEG()+8,n.readBits(1),n.readBool())){let B=c!==3?8:12;for(let P=0;P<B;P++)n.readBool()&&(P<6?o._skipScalingList(n,16):o._skipScalingList(n,64))}n.readUEG();let f=n.readUEG();if(f===0)n.readUEG();else if(f===1){n.readBits(1),n.readSEG(),n.readSEG();let B=n.readUEG();for(let P=0;P<B;P++)n.readSEG()}let x=n.readUEG();n.readBits(1);let b=n.readUEG(),v=n.readUEG(),k=n.readBits(1);k===0&&n.readBits(1),n.readBits(1);let F=0,O=0,D=0,I=0;n.readBool()&&(F=n.readUEG(),O=n.readUEG(),D=n.readUEG(),I=n.readUEG());let V=1,A=1,U=0,Q=!0,Z=0,W=0;if(n.readBool()){if(n.readBool()){let B=n.readByte(),P=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2],re=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1];B>0&&B<16?(V=P[B-1],A=re[B-1]):B===255&&(V=n.readByte()<<8|n.readByte(),A=n.readByte()<<8|n.readByte())}if(n.readBool()&&n.readBool(),n.readBool()&&(n.readBits(4),n.readBool()&&n.readBits(24)),n.readBool()&&(n.readUEG(),n.readUEG()),n.readBool()){let B=n.readBits(32),P=n.readBits(32);Q=n.readBool(),Z=P,W=B*2,U=Z/W}}let _e=1;(V!==1||A!==1)&&(_e=V/A);let j=0,z=0;if(c===0)j=1,z=2-k;else{let B=c===3?1:2,P=c===1?2:1;j=B,z=P*(2-k)}let H=(b+1)*16,ve=(2-k)*((v+1)*16);H-=(F+O)*j,ve-=(D+I)*z;let T=Math.ceil(H*_e);return n.destroy(),{codec_mimetype:i,profile_idc:a,level_idc:s,profile_string:l,level_string:u,chroma_format_idc:c,bit_depth:m,bit_depth_luma:m,bit_depth_chroma:y,ref_frames:x,chroma_format:h,chroma_format_string:o.getChromaFormatString(h),frame_rate:{fixed:Q,fps:U,fps_den:W,fps_num:Z},sar_ratio:{width:V,height:A},codec_size:{width:H,height:ve},present_size:{width:T,height:ve}}}static _skipScalingList(e,t){let i=8,r=8,n=0;for(let a=0;a<t;a++)r!==0&&(n=e.readSEG(),r=(i+n+256)%256),i=r===0?i:r}static getProfileString(e){switch(e){case 66:return"Baseline";case 77:return"Main";case 88:return"Extended";case 100:return"High";case 110:return"High10";case 122:return"High422";case 244:return"High444";default:return"Unknown"}}static getLevelString(e){return(e/10).toFixed(1)}static getChromaFormatString(e){switch(e){case 420:return"4:2:0";case 422:return"4:2:2";case 444:return"4:4:4";default:return"Unknown"}}},Zt=Li;var wi=class o{static _ebsp2rbsp(e){let t=e,i=t.byteLength,r=new Uint8Array(i),n=0;for(let a=0;a<i;a++)a>=2&&t[a]===3&&t[a-1]===0&&t[a-2]===0||(r[n]=t[a],n++);return new Uint8Array(r.buffer,0,n)}static parseVPS(e){let t=o._ebsp2rbsp(e),i=new me(t);i.readByte(),i.readByte();let r=i.readBits(4);i.readBits(2);let n=i.readBits(6),a=i.readBits(3),s=i.readBool();return{num_temporal_layers:a+1,temporal_id_nested:s}}static parseSPS(e){let t=o._ebsp2rbsp(e),i=new me(t);i.readByte(),i.readByte();let r=0,n=0,a=0,s=0,l=i.readBits(4),u=i.readBits(3),c=i.readBool(),h=i.readBits(2),_=i.readBool(),m=i.readBits(5),y=i.readByte(),f=i.readByte(),x=i.readByte(),b=i.readByte(),v=i.readByte(),k=i.readByte(),F=i.readByte(),O=i.readByte(),D=i.readByte(),I=i.readByte(),S=i.readByte(),V=[],A=[];for(let X=0;X<u;X++)V.push(i.readBool()),A.push(i.readBool());if(u>0)for(let X=u;X<8;X++)i.readBits(2);for(let X=0;X<u;X++)V[X]&&(i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte()),A[X]&&i.readByte();let U=i.readUEG(),Q=i.readUEG();Q==3&&i.readBits(1);let Z=i.readUEG(),W=i.readUEG();i.readBool()&&(r+=i.readUEG(),n+=i.readUEG(),a+=i.readUEG(),s+=i.readUEG());let _e=i.readUEG(),j=i.readUEG(),z=i.readUEG(),H=i.readBool();for(let X=H?0:u;X<=u;X++)i.readUEG(),i.readUEG(),i.readUEG();let ve=i.readUEG(),T=i.readUEG(),B=i.readUEG(),P=i.readUEG(),re=i.readUEG(),le=i.readUEG();if(i.readBool()&&i.readBool())for(let oe=0;oe<4;oe++)for(let he=0;he<(oe===3?2:6);he++)if(!i.readBool())i.readUEG();else{let Se=Math.min(64,1<<4+(oe<<1));oe>1&&i.readSEG();for(let Ie=0;Ie<Se;Ie++)i.readSEG()}let Qe=i.readBool(),De=i.readBool();i.readBool()&&(i.readByte(),i.readUEG(),i.readUEG(),i.readBool());let ge=i.readUEG(),Ze=0;for(let X=0;X<ge;X++){let oe=!1;if(X!==0&&(oe=i.readBool()),oe){X===ge&&i.readUEG(),i.readBool(),i.readUEG();let he=0;for(let ke=0;ke<=Ze;ke++){let Se=i.readBool(),Ie=!1;Se||(Ie=i.readBool()),(Se||Ie)&&he++}Ze=he}else{let he=i.readUEG(),ke=i.readUEG();Ze=he+ke;for(let Se=0;Se<he;Se++)i.readUEG(),i.readBool();for(let Se=0;Se<ke;Se++)i.readUEG(),i.readBool()}}if(i.readBool()){let X=i.readUEG();for(let oe=0;oe<X;oe++){for(let he=0;he<z+4;he++)i.readBits(1);i.readBits(1)}}let Fe=!1,_t=0,nt=1,at=1,$t=!1,Et=1,Ct=1,vr=i.readBool(),Sr=i.readBool();if(i.readBool()){if(i.readBool()){let He=i.readByte(),Ht=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2],Gt=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1];He>0&&He<=16?(nt=Ht[He-1],at=Gt[He-1]):He===255&&(nt=i.readBits(16),at=i.readBits(16))}i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(3),i.readBool(),i.readBool()&&(i.readByte(),i.readByte(),i.readByte())),i.readBool()&&(i.readUEG(),i.readUEG());let Se=i.readBool(),Ie=i.readBool(),kt=i.readBool();if(Fe=i.readBool(),Fe&&(i.readUEG(),i.readUEG(),i.readUEG(),i.readUEG()),i.readBool()&&(Et=i.readBits(32),Ct=i.readBits(32),i.readBool()&&i.readUEG(),i.readBool())){let Gt=1,qt=!1,Wt=!1,ft=!1;if(Gt&&(qt=i.readBool(),Wt=i.readBool(),qt||Wt)){ft=i.readBool(),ft&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5));let zt=i.readBits(4),Si=i.readBits(4);ft&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5)}for(let zt=0;zt<=u;zt++){let Si=i.readBool();$t=Si;let Cr=!0,Ai=1;Si||(Cr=i.readBool());let kr=!1;if(Cr?i.readUEG():kr=i.readBool(),kr||(Ai=i.readUEG()+1),qt){for(let Tt=0;Tt<Ai;Tt++)i.readUEG(),i.readUEG(),ft&&(i.readUEG(),i.readUEG());i.readBool()}if(Wt){for(let Tt=0;Tt<Ai;Tt++)i.readUEG(),i.readUEG(),ft&&(i.readUEG(),i.readUEG());i.readBool()}}}if(i.readBool()){let He=i.readBool(),Ht=i.readBool(),Gt=i.readBool();_t=i.readUEG();let qt=i.readUEG(),Wt=i.readUEG(),ft=i.readUEG(),zt=i.readUEG()}}let je=i.readBool(),$e=`hvc1.${m}.1.L${S}.B0`,Er=Q===1||Q===2?2:1,xi=Q===1?2:1,bi=Z-(r+n)*Er,yi=W-(a+s)*xi,vi=1;return nt!==1&&at!==1&&(vi=nt/at),i.destroy(),{codec_mimetype:$e,profile_string:o.getProfileString(m),level_string:o.getLevelString(S),profile_idc:m,bit_depth:_e+8,ref_frames:1,chroma_format:Q,chroma_format_string:o.getChromaFormatString(Q),general_level_idc:S,general_profile_space:h,general_tier_flag:_,general_profile_idc:m,general_profile_compatibility_flags_1:y,general_profile_compatibility_flags_2:f,general_profile_compatibility_flags_3:x,general_profile_compatibility_flags_4:b,general_constraint_indicator_flags_1:v,general_constraint_indicator_flags_2:k,general_constraint_indicator_flags_3:F,general_constraint_indicator_flags_4:O,general_constraint_indicator_flags_5:D,general_constraint_indicator_flags_6:I,min_spatial_segmentation_idc:_t,constant_frame_rate:0,chroma_format_idc:Q,bit_depth_luma_minus8:_e,bit_depth_chroma_minus8:j,frame_rate:{fixed:$t,fps:Ct/Et,fps_den:Et,fps_num:Ct},sar_ratio:{width:nt,height:at},codec_size:{width:bi,height:yi},present_size:{width:bi*vi,height:yi}}}static parsePPS(e){let t=o._ebsp2rbsp(e),i=new me(t);i.readByte(),i.readByte();let r=i.readUEG(),n=i.readUEG(),a=i.readBool(),s=i.readBool(),l=i.readBits(3),u=i.readBool(),c=i.readBool(),h=i.readUEG(),_=i.readUEG(),m=i.readSEG(),y=i.readBool(),f=i.readBool();if(i.readBool()){let A=i.readUEG()}let b=i.readSEG(),v=i.readSEG(),k=i.readBool(),F=i.readBool(),O=i.readBool(),D=i.readBool(),I=i.readBool(),S=i.readBool(),V=1;return S&&I?V=0:S?V=3:I&&(V=2),{parallelismType:V}}static getChromaFormatString(e){switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}}static getProfileString(e){switch(e){case 1:return"Main";case 2:return"Main10";case 3:return"MainSP";case 4:return"Rext";case 9:return"SCC";default:return"Unknown"}}static getLevelString(e){return(e/30).toFixed(1)}},xt=wi;var Bi=class{constructor(){d(this,"type",0);d(this,"data",new Uint8Array)}},Jt=class{constructor(e){d(this,"type");d(this,"data");let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}},Ut=class{constructor(e){d(this,"TAG","H264AnnexBParser");d(this,"data_");d(this,"current_startcode_offset_",0);d(this,"eof_flag_",!1);this.data_=e,this.current_startcode_offset_=this.findNextStartCodeOffset(0),this.eof_flag_&&g.e(this.TAG,"Could not find H264 startcode until payload end!")}findNextStartCodeOffset(e){let t=e,i=this.data_;for(;;){if(t+3>=i.byteLength)return this.eof_flag_=!0,i.byteLength;let r=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],n=i[t+0]<<16|i[t+1]<<8|i[t+2];if(r===1||n===1)return t;t++}}readNextNaluPayload(){let e=this.data_,t=null;for(;t==null&&!this.eof_flag_;){let r=this.current_startcode_offset_;(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])===1?r+=4:r+=3;let a=e[r]&31,s=(e[r]&128)>>>7,l=this.findNextStartCodeOffset(r);if(this.current_startcode_offset_=l,a>=14||s!==0)continue;let u=e.subarray(r,l);t=new Bi,t.type=a,t.data=u}return t}},ei=class{constructor(e,t,i){d(this,"data");let r=8+e.byteLength+1+2+t.byteLength,n=!1;e[3]!==66&&e[3]!==77&&e[3]!==88&&(n=!0,r+=4);let a=this.data=new Uint8Array(r);a[0]=1,a[1]=e[1],a[2]=e[2],a[3]=e[3],a[4]=255,a[5]=225;let s=e.byteLength;a[6]=s>>>8,a[7]=s&255;let l=8;a.set(e,8),l+=s,a[l]=1;let u=t.byteLength;a[l+1]=u>>>8,a[l+2]=u&255,a.set(t,l+3),l+=3+u,n&&(a[l]=252|i.chroma_format_idc,a[l+1]=248|i.bit_depth_luma-8,a[l+2]=248|i.bit_depth_chroma-8,a[l+3]=0,l+=4)}getData(){return this.data}};var ti=class{constructor(e){d(this,"type");d(this,"data");let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}},Pt=class{constructor(e){d(this,"TAG","H265AnnexBParser");d(this,"data_");d(this,"current_startcode_offset_",0);d(this,"eof_flag_",!1);this.data_=e,this.current_startcode_offset_=this.findNextStartCodeOffset(0),this.eof_flag_&&g.e(this.TAG,"Could not find H265 startcode until payload end!")}findNextStartCodeOffset(e){let t=e,i=this.data_;for(;;){if(t+3>=i.byteLength)return this.eof_flag_=!0,i.byteLength;let r=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],n=i[t+0]<<16|i[t+1]<<8|i[t+2];if(r===1||n===1)return t;t++}}readNextNaluPayload(){let e=this.data_,t=null;for(;t==null&&!this.eof_flag_;){let r=this.current_startcode_offset_;(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])===1?r+=4:r+=3;let a=e[r]>>1&63,s=(e[r]&128)>>>7,l=this.findNextStartCodeOffset(r);if(this.current_startcode_offset_=l,s!==0)continue;let u=e.subarray(r,l);t={type:a,data:u}}return t}},ii=class{constructor(e,t,i,r){d(this,"data");let n=23+(5+e.byteLength)+(5+t.byteLength)+(5+i.byteLength),a=this.data=new Uint8Array(n);a[0]=1,a[1]=(r.general_profile_space&3)<<6|(r.general_tier_flag?1:0)<<5|r.general_profile_idc&31,a[2]=r.general_profile_compatibility_flags_1,a[3]=r.general_profile_compatibility_flags_2,a[4]=r.general_profile_compatibility_flags_3,a[5]=r.general_profile_compatibility_flags_4,a[6]=r.general_constraint_indicator_flags_1,a[7]=r.general_constraint_indicator_flags_2,a[8]=r.general_constraint_indicator_flags_3,a[9]=r.general_constraint_indicator_flags_4,a[10]=r.general_constraint_indicator_flags_5,a[11]=r.general_constraint_indicator_flags_6,a[12]=r.general_level_idc,a[13]=240|(r.min_spatial_segmentation_idc&3840)>>8,a[14]=r.min_spatial_segmentation_idc&255,a[15]=252|r.parallelismType&3,a[16]=252|r.chroma_format_idc&3,a[17]=248|r.bit_depth_luma_minus8&7,a[18]=248|r.bit_depth_chroma_minus8&7,a[19]=0,a[20]=0,a[21]=(r.constant_frame_rate&3)<<6|(r.num_temporal_layers&7)<<3|(r.temporal_id_nested?1:0)<<2|3,a[22]=3,a[23]=160,a[24]=0,a[25]=1,a[26]=(e.byteLength&65280)>>8,a[27]=(e.byteLength&255)>>0,a.set(e,28),a[23+(5+e.byteLength)+0]=161,a[23+(5+e.byteLength)+1]=0,a[23+(5+e.byteLength)+2]=1,a[23+(5+e.byteLength)+3]=(t.byteLength&65280)>>8,a[23+(5+e.byteLength)+4]=(t.byteLength&255)>>0,a.set(t,23+(5+e.byteLength)+5),a[23+(5+e.byteLength+5+t.byteLength)+0]=162,a[23+(5+e.byteLength+5+t.byteLength)+1]=0,a[23+(5+e.byteLength+5+t.byteLength)+2]=1,a[23+(5+e.byteLength+5+t.byteLength)+3]=(i.byteLength&65280)>>8,a[23+(5+e.byteLength+5+t.byteLength)+4]=(i.byteLength&255)>>0,a.set(i,23+(5+e.byteLength+5+t.byteLength)+5)}getData(){return this.data}};var Vt="av1-parser";var Di=class o{static parseOBUs(e,t){for(let i=0;i<e.byteLength;){let r=i,n=(e[i]&128)>>7,a=(e[i]&120)>>3,s=(e[i]&4)!==0,l=(e[i]&2)!==0,u=(e[i]&1)!==0;i+=1;let c=0,h=0;s&&(i+=1);let _=Number.POSITIVE_INFINITY;if(l){_=0;for(let m=0;;m++){let y=e[i++];if(_|=(y&127)<<m*7,(y&128)===0)break}}a===1?t=te(K({},o.parseSeuqneceHeader(e.subarray(i,i+_))),{sequence_header_data:e.subarray(r,i+_)}):(a==3&&t||a==6&&t)&&(t=o.parseOBUFrameHeader(e.subarray(i,i+_),c,h,t)),i+=_}return t}static stripLeadingObuFraming(e){if(e.length===0)return e;function t(n){let a=0,s=(n[a]&128)>>7!==0,l=(n[a]&120)>>3,u=(n[a]&4)!==0,c=(n[a]&2)!==0,h=(n[a]&1)!==0;if(a+=1,s&&g.e(Vt,"Invalid OBU header: forbidden bit is set"),u&&(a+=1),c){let _=0;for(let m=0;;m++){if(a>=n.length)return new Uint8Array(0);let y=n[a++];if(_|=(y&127)<<m*7,(y&128)===0)break}return n.subarray(a+_)}else return n.subarray(a)}let i=(e[0]&120)>>3,r=e;switch(i){case 2:r=t(e);break;case 7:g.e(Vt,"OBU_REDUNDANT_FRAME_HEADER is not supported");break;case 8:g.e(Vt,"OBU_TILE_LIST is not supported");break;case 15:g.e(Vt,"OBU_PADDING is not supported");break;default:break}return r}static parseSeuqneceHeader(e){let t=new me(e),i=t.readBits(3),r=t.readBool(),n=t.readBool(),a=-1,s=0,l=!0,u=0,c=1,h=!1,_=!1,m=-1,y=-1,f=[];if(n)f.push({operating_point_idc:0,level:t.readBits(5),tier:0});else{if(t.readBool()){let ke=t.readBits(32),Se=t.readBits(32),Ie=t.readBool(),kt=0;if(Ie){let Je=0;for(;t.readBits(1)===0;)Je+=1;Je>=32?kt=4294967295:kt=(1<<Je)-1+t.readBits(Je)}if(c=ke,u=Se,s=u/c,l=Ie,t.readBool()){m=t.readBits(5);let Je=t.readBits(32);y=t.readBits(5),a=t.readBits(5)}}let oe=t.readBool(),he=t.readBits(5);for(let ke=0;ke<=he;ke++){let Se=t.readBits(12),Ie=t.readBits(5),kt=Ie>7?t.readBits(1):0;if(f.push({operating_point_idc:Se,level:Ie,tier:kt}),h){let Rt=t.readBool();if(f[f.length-1].decoder_model_present_for_this_op=Rt,Rt){let Je=t.readBits(m+1),He=t.readBits(m+1),Ht=t.readBool()}}if(oe&&t.readBool()){let Je=t.readBits(4)}}}let x=0,{level:b,tier:v}=f[x],k=t.readBits(4),F=t.readBits(4),O=t.readBits(k+1)+1,D=t.readBits(F+1)+1,I=!1;n||(I=t.readBool());let S,V;if(I){let X=t.readBits(4),oe=t.readBits(4)}let A=2,U=2,Q=t.readBool(),Z=t.readBool(),W=t.readBool(),ye=!1,_e=!1,j=!1,z=!1,H=!1,ve=!1,T=!1,B=A,P=U,re=0;if(!n){if(ye=t.readBool(),_e=t.readBool(),j=t.readBool(),z=t.readBool(),H=t.readBool(),H){let oe=t.readBool(),he=t.readBool()}t.readBool()?B=A:B=t.readBits(1),B?t.readBool()?P=U:P=t.readBits(1):P=U,H?re=t.readBits(3)+1:re=0}let le=t.readBool(),C=t.readBool(),Qe=t.readBool(),De=t.readBool(),pe=8;i===2&&De?pe=t.readBool()?12:10:pe=De?10:8;let ge=!1;i!==1&&(ge=t.readBool());let Ze=ge?1:3,ht=t.readBool(),Fe=1,_t=2,nt=2,at=13,$t=2,Et=0,Ct=_t,vr=nt,Sr=$t;if(ht){let X=t.readBits(8),oe=t.readBits(8),he=t.readBits(8)}let Ar=1,je=1,$e=1;if(ge){Ar=t.readBits(1),je=1,$e=1;let X=0,oe=0}else{let X=1;if(Ct===Fe&&vr===at&&Sr===Et)X=1,je=1,$e=1;else{if(X=t.readBits(1),i==0)je=1,$e=1;else if(i==1)je=0,$e=0;else if(pe==12)if(t.readBits(1)){let ke=t.readBits(1)}else{let ke=0}else je=1,$e=0;if(je&&$e){let he=t.readBits(2)}let oe=t.readBits(1)}}let Er=t.readBool();t.destroy();let xi=`av01.${i}.${o.getLevelString(b,v)}.${pe.toString(10).padStart(2,"0")}`,bi=1,yi=1,vi=1;return{codec_mimetype:xi,level:b,tier:v,level_string:o.getLevelString(b,v),profile_idc:i,profile_string:`${i}`,bit_depth:pe,ref_frames:1,chroma_format:o.getChromaFormat(ge,je,$e),chroma_format_string:o.getChromaFormatString(ge,je,$e),sequence_header:{frame_id_numbers_present_flag:I,additional_frame_id_length_minus_1:V,delta_frame_id_length_minus_2:S,reduced_still_picture_header:n,decoder_model_info_present_flag:h,operating_points:f,buffer_removal_time_length_minus_1:y,equal_picture_interval:l,seq_force_screen_content_tools:B,seq_force_integer_mv:P,enable_order_hint:H,order_hint_bits:re,enable_superres:le,frame_width_bit:k+1,frame_height_bit:F+1,max_frame_width:O,max_frame_height:D,frame_presentation_time_length_minus_1:a},keyframe:void 0,frame_rate:{fixed:l,fps:u/c,fps_den:c,fps_num:u}}}static parseOBUFrameHeader(e,t,i,r){var z;let{sequence_header:n}=r,a=new me(e),s=8,l=2,u=2,c=7,h=n.max_frame_width,_=n.max_frame_height,m=h,y=_,f=0;n.frame_id_numbers_present_flag&&(f=n.additional_frame_id_length_minus_1+n.delta_frame_id_length_minus_2+3);let x=(1<<s)-1,b=!1,v=0,k=!0,F=!0,O=!1,D=!1;if(!n.reduced_still_picture_header){if(b=a.readBool(),b)return r;if(v=a.readBits(2),k=v===2||v===0,F=a.readBool(),F&&n.decoder_model_info_present_flag&&!n.equal_picture_interval){let H=n.frame_presentation_time_length_minus_1+1,ve=a.readBits(H);g.v(Vt,`frame_presentation_time: ${ve}`)}F?O=v!==0:O=a.readBool(),v===3||v===0&&F?D=!0:D=a.readBool()}r.keyframe=k;let I=a.readBool(),S=n.seq_force_screen_content_tools;n.seq_force_screen_content_tools===l&&(S=a.readBits(1));let V=k?1:0;S&&(V=n.seq_force_integer_mv,n.seq_force_integer_mv==u&&(V=a.readBits(1)));let A=0;n.frame_id_numbers_present_flag&&(A=a.readBits(f));let U=!1;v==3?U=!0:n.reduced_still_picture_header?U=!1:U=a.readBool();let Q=a.readBits(n.order_hint_bits),Z=c;if(k||D||(Z=a.readBits(3)),n.decoder_model_info_present_flag&&a.readBool()){let ve=(z=n.operating_points_cnt_minus_1)!=null?z:0;for(let T=0;T<=ve;T++)if(n.operating_points[T].decoder_model_present_for_this_op){let B=n.operating_points[T].operating_point_idc,P=B>>t&1,re=B>>i+8&1;(B===0||P&&re)&&a.readBits(n.buffer_removal_time_length_minus_1+1)}}let W=0,ye=0,_e=0,j=x;if(v===3||v==0&&F||(j=a.readBits(8)),(!k||j!==x)&&D&&n.enable_order_hint)for(let H=0;H<s;H++)a.readBits(n.order_hint_bits);if(k){let H=o.frameSizeAndRenderSize(a,U,n);r.codec_size={width:H.FrameWidth,height:H.FrameHeight},r.present_size={width:H.RenderWidth,height:H.RenderHeight},r.sar_ratio={width:H.RenderWidth/H.FrameWidth,height:H.RenderHeight/H.FrameHeight}}return a.destroy(),r}static frameSizeAndRenderSize(e,t,i){let r=i.max_frame_width,n=i.max_frame_height;t&&(r=e.readBits(i.frame_width_bit)+1,n=e.readBits(i.frame_height_bit)+1);let a=!1;i.enable_superres&&(a=e.readBool());let s=8;a&&(s=e.readBits(3)+9);let l=r;r=Math.floor((l*8+s/2)/s);let u=e.readBool(),c=l,h=n;return u&&(c=e.readBits(16)+1,h=e.readBits(16)+1),{UpscaledWidth:l,FrameWidth:r,FrameHeight:n,RenderWidth:c,RenderHeight:h}}static getLevelString(e,t){return`${e.toString(10).padStart(2,"0")}${t===0?"M":"H"}`}static getChromaFormat(e,t,i){return e?0:t===0&&i===0?3:t===1&&i===0?2:t===1&&i===1?1:Number.NaN}static getChromaFormatString(e,t,i){return e?"4:0:0":t===0&&i===0?"4:4:4":t===1&&i===0?"4:2:2":t===1&&i===1?"4:2:0":"Unknown"}},Ue=Di;var vn={width:0,height:0,renderWidth:0,renderHeight:0,profile:0,bitDepth:8,colorSpace:0,colorRange:0,isValid:!1},bt=class{static parseVp9Header(e){let t=K({},vn);if(e.length<10)return t;let i=new me(e);if(i.readBits(2)!==2)return t;let n=i.readBits(1),a=i.readBits(1);if(t.profile=a<<1|n,t.profile===3&&i.readBits(1),i.readBool()||i.readBool())return t;let s=i.readBool(),l=i.readBool(),u=i.readBits(24),c=8;t.profile>=2&&(c=i.readBool()?12:10);let h=i.readBits(3),_=0,m;(U=>(U[U.CS_UNKNOWN=0]="CS_UNKNOWN",U[U.CS_BT_601=1]="CS_BT_601",U[U.CS_BT_709=2]="CS_BT_709",U[U.CS_SMPTE_170=3]="CS_SMPTE_170",U[U.CS_SMPTE_240=4]="CS_SMPTE_240",U[U.CS_BT_2020=5]="CS_BT_2020",U[U.CS_RESERVED=6]="CS_RESERVED",U[U.CS_RGB=7]="CS_RGB"))(m||(m={})),h!==7?(_=i.readBool()?1:0,(t.profile===1||t.profile===3)&&(i.readBool(),i.readBool(),i.readBool())):(t.profile===1||t.profile===3)&&i.readBool();let y=i.readBits(16)+1,f=i.readBits(16)+1,x=i.readBool(),b=y,v=f;return x&&(b=i.readBits(16)+1,v=i.readBits(16)+1),t.width=y,t.height=f,t.renderWidth=b,t.renderHeight=v,t.bitDepth=c,t.colorSpace=h,t.colorRange=_,t.isValid=!0,i.destroy(),t}};function Ii(o,e,t){let i=o;if(e+t<i.length){for(;t--;)if((i[++e]&192)!==128)return!1;return!0}else return!1}function Sn(o){let e=[],t=o,i=0,r=o.length;for(;i<r;){if(t[i]<128){e.push(String.fromCharCode(t[i])),++i;continue}else if(!(t[i]<192)){if(t[i]<224){if(Ii(t,i,1)){let n=(t[i]&31)<<6|t[i+1]&63;if(n>=128){e.push(String.fromCharCode(n&65535)),i+=2;continue}}}else if(t[i]<240){if(Ii(t,i,2)){let n=(t[i]&15)<<12|(t[i+1]&63)<<6|t[i+2]&63;if(n>=2048&&(n&63488)!==55296){e.push(String.fromCharCode(n&65535)),i+=3;continue}}}else if(t[i]<248&&Ii(t,i,3)){let n=(t[i]&7)<<18|(t[i+1]&63)<<12|(t[i+2]&63)<<6|t[i+3]&63;if(n>65536&&n<1114112){n-=65536,e.push(String.fromCharCode(n>>>10|55296)),e.push(String.fromCharCode(n&1023|56320)),i+=4;continue}}}e.push("\uFFFD"),++i}return e.join("")}var Ui=Sn;var qe=(function(){let o=new ArrayBuffer(2);return new DataView(o).setInt16(0,256,!0),new Int16Array(o)[0]===256})(),Pi=class o{static parseScriptData(e,t,i){let r={};try{let n=o.parseValue(e,t,i),a=o.parseValue(e,t+n.size,i-n.size);if(typeof n.data!="string")return r;r[n.data]=a.data}catch(n){g.e("AMF",n.toString())}return r}static parseObject(e,t,i){if(i<3)throw new se("Data not enough when parse ScriptDataObject");let r=o.parseString(e,t,i),n=o.parseValue(e,t+r.size,i-r.size),a=n.objectEnd;return{data:{name:r.data,value:n.data},size:r.size+n.size,objectEnd:a}}static parseVariable(e,t,i){return o.parseObject(e,t,i)}static parseString(e,t,i){if(i<2)throw new se("Data not enough when parse String");let n=new DataView(e,t,i).getUint16(0,!qe),a;return n>0?a=Ui(new Uint8Array(e,t+2,n)):a="",{data:a,size:2+n}}static parseLongString(e,t,i){if(i<4)throw new se("Data not enough when parse LongString");let n=new DataView(e,t,i).getUint32(0,!qe),a;return n>0?a=Ui(new Uint8Array(e,t+4,n)):a="",{data:a,size:4+n}}static parseDate(e,t,i){if(i<10)throw new se("Data size invalid when parse Date");let r=new DataView(e,t,i),n=r.getFloat64(0,!qe),a=r.getInt16(8,!qe);return n+=a*60*1e3,{data:new Date(n),size:10}}static parseValue(e,t,i){if(i<1)throw new se("Data not enough when parse Value");let r=new DataView(e,t,i),n=1,a=r.getUint8(0),s,l=!1;try{switch(a){case 0:s=r.getFloat64(1,!qe),n+=8;break;case 1:{s=!!r.getUint8(1),n+=1;break}case 2:{let u=o.parseString(e,t+1,i-1);s=u.data,n+=u.size;break}case 3:{s={};let u=0;for((r.getUint32(i-4,!qe)&16777215)===9&&(u=3);n<i-4;){let c=o.parseObject(e,t+n,i-n-u);if(c.objectEnd)break;s[c.data.name]=c.data.value,n+=c.size}n<=i-3&&(r.getUint32(n-1,!qe)&16777215)===9&&(n+=3);break}case 8:{s={},n+=4;let u=0;for((r.getUint32(i-4,!qe)&16777215)===9&&(u=3);n<i-8;){let c=o.parseVariable(e,t+n,i-n-u);if(c.objectEnd)break;s[c.data.name]=c.data.value,n+=c.size}n<=i-3&&(r.getUint32(n-1,!qe)&16777215)===9&&(n+=3);break}case 9:s=void 0,n=1,l=!0;break;case 10:{s=[];let u=r.getUint32(1,!qe);n+=4;for(let c=0;c<u;c++){let h=o.parseValue(e,t+n,i-n);s.push(h.data),n+=h.size}break}case 11:{let u=o.parseDate(e,t+1,i-1);s=u.data,n+=u.size;break}case 12:{let u=o.parseString(e,t+1,i-1);s=u.data,n+=u.size;break}default:n=i,g.w("AMF","Unsupported AMF value type "+a)}}catch(u){g.e("AMF",u.toString())}return{data:s,size:n,objectEnd:l}}},Pr=Pi;var An={OK:"OK",FORMAT_ERROR:"FormatError",FORMAT_UNSUPPORTED:"FormatUnsupported",CODEC_UNSUPPORTED:"CodecUnsupported"},G=An;function Vr(o){return o.byteOffset%2===0&&o.byteLength%2===0}function Nr(o){return o.byteOffset%4===0&&o.byteLength%4===0}function Vi(o,e){for(let t=0;t<o.length;t++)if(o[t]!==e[t])return!1;return!0}function En(o,e){return Vi(o,e)}function Cn(o,e){let t=new Uint16Array(o.buffer,o.byteOffset,o.byteLength/2),i=new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2);return Vi(t,i)}function kn(o,e){let t=new Uint32Array(o.buffer,o.byteOffset,o.byteLength/4),i=new Uint32Array(e.buffer,e.byteOffset,e.byteLength/4);return Vi(t,i)}function Rn(o,e){return o.byteLength!==e.byteLength?!1:Nr(o)&&Nr(e)?kn(o,e):Vr(o)&&Vr(e)?Cn(o,e):En(o,e)}var Me=Rn;function Or(o){return Array.from(o).map(e=>e.toString(16).padStart(2,"0")).join(" ")}var Ni=(x=>(x[x.SequenceStart=0]="SequenceStart",x[x.CodedFrames=1]="CodedFrames",x[x.SequenceEnd=2]="SequenceEnd",x[x.Reserved3=3]="Reserved3",x[x.MultichannelConfig=4]="MultichannelConfig",x[x.Multitrack=5]="Multitrack",x[x.Reserved6=6]="Reserved6",x[x.ModEx=7]="ModEx",x[x.Reserved8=8]="Reserved8",x[x.Reserved9=9]="Reserved9",x[x.Reserved10=10]="Reserved10",x[x.Reserved11=11]="Reserved11",x[x.Reserved12=12]="Reserved12",x[x.Reserved13=13]="Reserved13",x[x.Reserved14=14]="Reserved14",x[x.Reserved15=15]="Reserved15",x))(Ni||{});var $r=(i=>(i[i.Unspecified=0]="Unspecified",i[i.Native=1]="Native",i[i.Custom=2]="Custom",i))($r||{}),Hr=(S=>(S[S.FrontLeft=1]="FrontLeft",S[S.FrontRight=2]="FrontRight",S[S.FrontCenter=4]="FrontCenter",S[S.LowFrequency1=8]="LowFrequency1",S[S.BackLeft=16]="BackLeft",S[S.BackRight=32]="BackRight",S[S.FrontLeftCenter=64]="FrontLeftCenter",S[S.FrontRightCenter=128]="FrontRightCenter",S[S.BackCenter=256]="BackCenter",S[S.SideLeft=512]="SideLeft",S[S.SideRight=1024]="SideRight",S[S.TopCenter=2048]="TopCenter",S[S.TopFrontLeft=4096]="TopFrontLeft",S[S.TopFrontCenter=8192]="TopFrontCenter",S[S.TopFrontRight=16384]="TopFrontRight",S[S.TopBackLeft=32768]="TopBackLeft",S[S.TopBackCenter=65536]="TopBackCenter",S[S.TopBackRight=131072]="TopBackRight",S[S.LowFrequency2=262144]="LowFrequency2",S[S.TopSideLeft=524288]="TopSideLeft",S[S.TopSideRight=1048576]="TopSideRight",S[S.BottomFrontCenter=2097152]="BottomFrontCenter",S[S.BottomFrontLeft=4194304]="BottomFrontLeft",S[S.BottomFrontRight=8388608]="BottomFrontRight",S))(Hr||{}),Gr=(A=>(A[A.FrontLeft=0]="FrontLeft",A[A.FrontRight=1]="FrontRight",A[A.FrontCenter=2]="FrontCenter",A[A.LowFrequency1=3]="LowFrequency1",A[A.BackLeft=4]="BackLeft",A[A.BackRight=5]="BackRight",A[A.FrontLeftCenter=6]="FrontLeftCenter",A[A.FrontRightCenter=7]="FrontRightCenter",A[A.BackCenter=8]="BackCenter",A[A.SideLeft=9]="SideLeft",A[A.SideRight=10]="SideRight",A[A.TopCenter=11]="TopCenter",A[A.TopFrontLeft=12]="TopFrontLeft",A[A.TopFrontCenter=13]="TopFrontCenter",A[A.TopFrontRight=14]="TopFrontRight",A[A.TopBackLeft=15]="TopBackLeft",A[A.TopBackCenter=16]="TopBackCenter",A[A.TopBackRight=17]="TopBackRight",A[A.LowFrequency2=18]="LowFrequency2",A[A.TopSideLeft=19]="TopSideLeft",A[A.TopSideRight=20]="TopSideRight",A[A.BottomFrontCenter=21]="BottomFrontCenter",A[A.BottomFrontLeft=22]="BottomFrontLeft",A[A.BottomFrontRight=23]="BottomFrontRight",A[A.Unused=254]="Unused",A[A.Unknown=255]="Unknown",A))(Gr||{}),Le={SCE:0,CPE:1,CCE:2,LFE:3,DSE:4,PCE:5,FIL:6,END:7},Ln=["SCE","CPE","CCE","LFE","DSE","PCE","FIL","END"];function Oi(o){var e;return(e=Ln[o])!=null?e:`unknown(${o})`}function ue(o,e){return e<0||e>32||o.bitsRemaining<e?null:o.readBits(e)}function dt(o){let e=ue(o,1);return e===null?null:e===1}function $i(o){let e=o.readBits(4),t=o.readBits(2),i=o.readBits(4),r=o.readBits(4),n=o.readBits(4),a=o.readBits(4),s=o.readBits(2),l=o.readBits(3),u=o.readBits(4);return`PCE instanceTag=${e} objectType=${t} samplingIndex=${i} front=${r} side=${n} back=${a} lfe=${s} assoc=${l} cc=${u}`}function wn(o){let e=[[1,{front:[!1],side:[],back:[],lfeCount:0}],[2,{front:[!0],side:[],back:[],lfeCount:0}],[3,{front:[!1,!0],side:[],back:[],lfeCount:0}],[4,{front:[!1,!0],side:[],back:[!1],lfeCount:0}],[5,{front:[!1,!0],side:[],back:[!0],lfeCount:0}],[6,{front:[!1,!0],side:[!0],back:[],lfeCount:1}],[7,{front:[!1,!0,!0],side:[!0],back:[],lfeCount:1}]],t=(i,r)=>i.length===r.length&&i.every((n,a)=>n===r[a]);for(let[i,r]of e)if(t(o.front,r.front)&&t(o.side,r.side)&&t(o.back,r.back)&&o.lfeCount===r.lfeCount)return i;return null}function Bn(o,e){let t=ue(o,4),i=ue(o,2),r=ue(o,4),n=ue(o,4),a=ue(o,4),s=ue(o,4),l=ue(o,2),u=ue(o,3),c=ue(o,4);if(t===null||i===null||r===null||n===null||a===null||s===null||l===null||u===null||c===null||r!==e)return null;let h=dt(o);if(h===null||h&&!Pe(o,4))return null;let _=dt(o);if(_===null||_&&!Pe(o,4))return null;let m=dt(o);if(m===null||m&&!Pe(o,3))return null;let y=0,f=[],x=[],b=[],v=[],k=(S,V)=>{for(let A=0;A<S;A++){let U=dt(o),Q=ue(o,4);if(U===null||Q===null)return!1;V.push(`${U?"CPE":"SCE"}:${Q}`),y+=U?2:1}return!0};if(!k(n,f)||!k(a,x)||!k(s,b))return null;for(let S=0;S<l;S++){let V=ue(o,4);if(V===null)return null;v.push(`LFE:${V}`),y++}for(let S=0;S<u;S++)if(!Pe(o,4))return null;for(let S=0;S<c;S++)if(!Pe(o,5))return null;let F=(8-o.bitsConsumed%8)%8;if(F>0&&!Pe(o,F))return null;let O=ue(o,8);if(O===null)return null;let D=[];for(let S=0;S<O;S++){let V=ue(o,8);if(V===null)return null;D.push(V)}let I=D.map(S=>S>=32&&S<=126?String.fromCharCode(S):".").join("");return{channelCount:y,layout:{front:f.map(S=>S.startsWith("CPE:")),side:x.map(S=>S.startsWith("CPE:")),back:b.map(S=>S.startsWith("CPE:")),lfeCount:v.length},description:`PCE instanceTag=${t} objectType=${i} samplingIndex=${r} front=${n}[${f.join(",")}] side=${a}[${x.join(",")}] back=${s}[${b.join(",")}] lfe=${l}[${v.join(",")}] assoc=${u} cc=${c} commentBytes=${O} comment="${I}"`}}function Dn(o,e){let t=new me(o),i=l=>(t.destroy(),l);if(!Pe(t,13))return i(null);let r=dt(t);if(r===null)return i(null);let n=dt(t);if(n===null||n&&!Pe(t,14))return i(null);let a=dt(t);if(a===null)return i(null);let s=Bn(t,e);return i(s?te(K({},s),{description:`${s.description} frameLengthFlag=${Number(r)} dependsOnCoreCoder=${Number(n)} extensionFlag=${Number(a)}`}):null)}function Pe(o,e){let t=e;for(;t>0;){let i=Math.min(t,32);if(ue(o,i)===null)return!1;t-=i}return!0}function In(o){if(!o||o.byteLength===0)return"empty-payload";let e=new me(o);try{let t=e.readBits(3),i=Oi(t);if(t===Le.PCE)return`firstElement=${$i(e)}`;if(t!==Le.FIL)return`firstElement=${i}`;let r=e.readBits(4);r===15&&(r+=e.readBits(8)-1);let n="",a="";if(r>0){let c=e.readBits(4),h=r*8-4;if(c===13)n=" SBR=EXT_SBR_DATA",Pe(e,h);else if(c===14)n=" SBR=EXT_SBR_DATA_CRC",Pe(e,h);else{let _=[],m=h;for(;m>=8;)_.push(e.readBits(8)),m-=8;m>0&&Pe(e,m);let y=_.map(f=>f>=32&&f<=126?String.fromCharCode(f):".").join("");/[A-Za-z]{3}/.test(y)&&(a=` fillAscii="${y.trim()}"(encoder-padding)`)}}let s=e.readBits(3),l=Oi(s),u=s===Le.CPE?`${l}(stereo-pair)`:s===Le.SCE?`${l}(mono)`:s===Le.LFE?`${l}(low-freq)`:l;return s===Le.PCE?`firstElement=FIL fillBytes=${r}${n}${a} nextElement=${$i(e)}`:`firstElement=FIL fillBytes=${r}${n}${a} nextElement=${u}`}catch(t){return`probeError=${(t==null?void 0:t.message)||String(t)}`}finally{e.destroy()}}function Un(o){if(!o||o.byteLength===0)return"elements=0 complete=true empty-payload";let e=new me(o),t=[],i=0,r=!1,n="";try{for(;e.bitsRemaining>=3;){let a=ue(e,3);if(a===null){n="truncated-element-id";break}let s=Oi(a);if(a===Le.END){t.push("END(7)"),r=!0;break}if(a===Le.FIL){let l=ue(e,4);if(l===null){t.push("FIL(6,truncated-count)"),n="truncated-fill-count";break}if(l===15){let c=ue(e,8);if(c===null){t.push("FIL(6,truncated-escape)"),n="truncated-fill-escape";break}l+=c-1}let u=`fillBytes=${l}`;if(l>0){let c=ue(e,4);if(c===null){t.push(`FIL(6,${u},truncated-extType)`),n="truncated-fill-extType";break}u+=` extType=0x${c.toString(16)}`;let h=l*8-4;if(!Pe(e,h)){t.push(`FIL(6,${u},truncated-payload)`),n="truncated-fill-payload";break}}t.push(`FIL(6,${u})`);continue}if(a===Le.SCE||a===Le.CPE||a===Le.LFE){let l=ue(e,4);if(l===null){t.push(`${s}(${a},truncated-tag)`),n="truncated-audio-element-tag";break}i+=a===Le.CPE?2:1,t.push(`${s}(${a},tag=${l})`),n=`${s}-payload-not-skipped`;break}if(a===Le.PCE){t.push(`PCE(5,${$i(e)})`),n="pce-payload-not-skipped";break}t.push(`${s}(${a})`),n=`${s}-payload-not-skipped`;break}return!r&&!n&&(n="no-end-element-before-eof"),`elements=${t.length} complete=${r} knownChannels=${i} sequence=[${t.join(" ")}] stopReason=${n}`}catch(a){return`elements=${t.length} complete=false knownChannels=${i} sequence=[${t.join(" ")}] probeError=${(a==null?void 0:a.message)||String(a)}`}finally{e.destroy()}}var We={Unknown:"unknown",Mp3:"mp3",Aac:"aac",Opus:"opus",Flac:"flac",Lpcm:"lpcm"},ri={type:w.Audio,codecKind:We.Unknown,codec:"",originalCodec:"",aacChannelConfigWasInBand:!1,trackId:NaN,timescale:NaN,preSkipSamples:0,duration:NaN,audioSampleRate:NaN,inputSampleRate:NaN,outputGain:0,channelCount:NaN,bitsPerSample:NaN,littleEndian:!1,refFrameDuration:NaN},ce={Unknown:"unknown",Avc:"avc",Hevc:"hevc",Vp8:"vp8",Vp9:"vp9",Av1:"av1"},ni={type:w.Video,codecKind:ce.Unknown,codec:"",trackId:NaN,timescale:NaN,duration:NaN,codecWidth:NaN,codecHeight:NaN,presentWidth:NaN,presentHeight:NaN,profile:"",level:"",bitDepth:NaN,chromaFormat:NaN,colorRange:NaN,colourPrimaries:NaN,transferCharacteristics:NaN,matrixCoefficients:NaN,sarRatio:{width:NaN,height:NaN},frameRate:{fixed:!1,fps:NaN,fps_num:NaN,fps_den:NaN},refFrameDuration:NaN};function Pn(o,e){return o[e]<<24|o[e+1]<<16|o[e+2]<<8|o[e+3]}function ai(o,e){return o.getInt8(e)<<16|o.getUint8(e+1)<<8|o.getUint8(e+2)}var E=class E{constructor(e,t,i){d(this,"_config");d(this,"_remuxerRouter");d(this,"_onError",fe);d(this,"_onMediaInfo",fe);d(this,"_onScriptMetadata",fe);d(this,"_onScriptData",fe);d(this,"_onTrackMetadata",fe);d(this,"_onTrackData",fe);d(this,"_onVideoTracksDiscovered",Xe);d(this,"_dataOffset");d(this,"_firstParse",!0);d(this,"_hasAudio");d(this,"_hasVideo");d(this,"_hasAudioFlagOverrided",!1);d(this,"_hasVideoFlagOverrided",!1);d(this,"_mediaInfo");d(this,"_scriptData");d(this,"_audioMetadata");d(this,"_videoMetadataByTrackId",new Map);d(this,"_naluLengthSize",4);d(this,"_timestampBase",0);d(this,"_timescale",1e3);d(this,"_duration",0);d(this,"_durationOverrided",!1);d(this,"_referenceFrameRate",{fixed:!0,fps:23.976,fps_num:23976,fps_den:1e3});d(this,"_videoTracksById",new Map);d(this,"_currentVideoTrackId");d(this,"_audioTrack",{type:w.Audio,id:2,sequenceNumber:0,frames:[],length:0});d(this,"_hasLoggedFirstAacPayloadProbe",!1);d(this,"_hasLoggedAacPceDetection",!1);d(this,"_hasLoggedAacSbrDetection",!1);d(this,"_hasObservedAacPce",!1);d(this,"_pendingAacMultichannelChannelCount");d(this,"_hasIgnoredAacMultichannelConfig",!1);d(this,"_aacPayloadProbeFrameIndex",0);this._config=t,this._remuxerRouter=i,this._dataOffset=e.dataOffset,this._hasAudio=e.hasAudioTrack,this._hasVideo=e.hasVideoTrack,this._mediaInfo=new Ne,this._mediaInfo.hasAudio=e.hasAudioTrack,this._mediaInfo.hasVideo=e.hasVideoTrack}destroy(){this._onError=Xe,this._onMediaInfo=Xe,this._onScriptMetadata=Xe,this._onScriptData=Xe,this._onTrackMetadata=Xe,this._onTrackData=Xe,this._onVideoTracksDiscovered=Xe,this._hasLoggedFirstAacPayloadProbe=!1,this._hasLoggedAacPceDetection=!1,this._hasLoggedAacSbrDetection=!1,this._hasObservedAacPce=!1,this._pendingAacMultichannelChannelCount=void 0,this._hasIgnoredAacMultichannelConfig=!1,this._aacPayloadProbeFrameIndex=0}_probeAacPayload(e){if(!e||e.byteLength===0)return;this._aacPayloadProbeFrameIndex++;let t=In(e),i=Un(e),r=Array.from(e.subarray(0,Math.min(8,e.byteLength))).map(s=>s.toString(16).padStart(2,"0")).join(" ");this._hasLoggedFirstAacPayloadProbe||(g.v(E.TAG,`First AAC CodedFrame: size=${e.byteLength} bytes[0..7]=${r} ${t}`),this._hasLoggedFirstAacPayloadProbe=!0),this._aacPayloadProbeFrameIndex<=5&&g.v(E.TAG,`AAC CodedFrame[${this._aacPayloadProbeFrameIndex}] rawDataBlock ${i}`);let n=t.includes("PCE"),a=t.includes("CPE(stereo-pair)");n&&(this._hasObservedAacPce=!0),!this._hasLoggedAacPceDetection&&n&&(g.v(E.TAG,`AAC CodedFrame[${this._aacPayloadProbeFrameIndex}] contains visible ${t}`),this._hasLoggedAacPceDetection=!0),!this._hasLoggedAacSbrDetection&&t.includes("SBR=")&&(g.v(E.TAG,`AAC CodedFrame[${this._aacPayloadProbeFrameIndex}] backward-compatible SBR detected: ${t}`),this._hasLoggedAacSbrDetection=!0),n?this._applyPendingAacMultichannelConfig():a&&this._ignorePendingAacMultichannelConfig(t)}static probe(e){let t=new Uint8Array(e);if(t.byteLength<9)return{needMoreData:!0};let i={match:!1};if(t[0]!==70||t[1]!==76||t[2]!==86||t[3]!==1)return i;let r=(t[4]&4)>>>2!==0,n=(t[4]&1)!==0,a=Pn(t,5);return a<9?i:{match:!0,consumed:a,dataOffset:a,hasAudioTrack:r,hasVideoTrack:n}}bindDataSource(e){return e.onDataArrival=this.parseChunks.bind(this),this}set remuxerRouter(e){this._remuxerRouter=e}get onTrackMetadata(){return this._onTrackMetadata}set onTrackMetadata(e){this._onTrackMetadata=e}get onMediaInfo(){return this._onMediaInfo}set onMediaInfo(e){this._onMediaInfo=e}get onScriptMetadata(){return this._onScriptMetadata}set onScriptMetadata(e){this._onScriptMetadata=e}get onScriptData(){return this._onScriptData}set onScriptData(e){this._onScriptData=e}get onError(){return this._onError}set onError(e){this._onError=e}get onTrackData(){return this._onTrackData}set onTrackData(e){this._onTrackData=e}get onVideoTracksDiscovered(){return this._onVideoTracksDiscovered}set onVideoTracksDiscovered(e){this._onVideoTracksDiscovered=e}get timestampBase(){return this._timestampBase}set timestampBase(e){this._timestampBase=e}get overridedDuration(){return this._duration}set overridedDuration(e){this._durationOverrided=!0,this._duration=e,this._mediaInfo.duration=e}set overridedHasAudio(e){this._hasAudioFlagOverrided=!0,this._hasAudio=e,this._mediaInfo.hasAudio=e}set overridedHasVideo(e){this._hasVideoFlagOverrided=!0,this._hasVideo=e,this._mediaInfo.hasVideo=e}resetMediaInfo(){this._mediaInfo=new Ne}_getOrCreateVideoTrack(e){return this._videoTracksById.has(e)||this._videoTracksById.set(e,{type:w.Video,id:e,sequenceNumber:0,frames:[],length:0}),this._videoTracksById.get(e)}_getDefaultVideoTrack(){if(this._videoTracksById.has(0))return this._videoTracksById.get(0);if(this._videoTracksById.size>0){let e=Math.min(...this._videoTracksById.keys());return this._videoTracksById.get(e)}return this._getOrCreateVideoTrack(0)}_getCurrentVideoTrack(){return this._currentVideoTrackId!==void 0?this._getOrCreateVideoTrack(this._currentVideoTrackId):{type:w.Video,id:-1,sequenceNumber:0,frames:[],length:0}}_flushPendingTrackDataBeforeMetadataRefresh(){let e=this._getCurrentVideoTrack();this._audioTrack.frames.length===0&&e.frames.length===0||this._onTrackData(this._audioTrack,e)}_dispatchVideoTrackMetadata(e){this._currentVideoTrackId===void 0&&(this._currentVideoTrackId=e.trackId),e.trackId===this._currentVideoTrackId&&(this._remuxerRouter.isVideoMetadataDispatched&&this._flushPendingTrackDataBeforeMetadataRefresh(),this._onTrackMetadata(e)),this._onVideoTracksDiscovered([...this._videoMetadataByTrackId.values()])}parseChunks(e,t){let i=0;if(t===0)if(e.byteLength>13){let r=E.probe(e);if("match"in r&&r.match===!0)i=r.dataOffset,this._hasAudio=r.hasAudioTrack&&this._hasAudio,this._hasVideo=r.hasVideoTrack&&this._hasVideo;else return 0}else return 0;for(this._firstParse&&(this._firstParse=!1,t+i!==this._dataOffset&&g.w(E.TAG,"First time parsing but chunk byteStart invalid!"),new DataView(e,i).getUint32(0,!1)!==0&&g.w(E.TAG,"PrevTagSize0 !== 0 !!!"),i+=4);i<e.byteLength;){let r=new DataView(e,i);if(i+11+4>e.byteLength)break;let n=r.getUint8(0),a=r.getUint32(0,!1)&16777215;if(i+11+a+4>e.byteLength)break;if(n!==8&&n!==9&&n!==18){g.w(E.TAG,`Unsupported tag type ${n}, skipped`),i+=11+a+4;continue}let s=r.getUint8(4),l=r.getUint8(5),u=r.getUint8(6),c=r.getUint8(7),h=u|l<<8|s<<16|c<<24;(r.getUint32(7,!1)&16777215)!==0&&g.w(E.TAG,"Meet tag which has StreamID != 0!");let m=i+11;switch(n){case 8:this._hasAudio&&this._parseAudioTagData(e,m,a,h);break;case 9:this._hasVideo&&this._parseVideoTagData(e,m,a,h,t+i);break;case 18:this._parseScriptTagData(e,m,a);break}let y=r.getUint32(11+a,!1);y!==11+a&&g.w(E.TAG,`Invalid PrevTagSize ${y}`),i+=11+a+4}return this._onTrackData(this._audioTrack,this._getCurrentVideoTrack()),i}_parseScriptTagData(e,t,i){let r=Pr.parseScriptData(e,t,i);if(r.hasOwnProperty("onMetaData")){if(r.onMetaData==null||typeof r.onMetaData!="object"||Array.isArray(r.onMetaData)){g.w(E.TAG,"Invalid onMetaData structure!");return}this._scriptData&&g.w(E.TAG,"Found another onMetaData tag!"),this._scriptData=r;let n=this._scriptData.onMetaData;if(this._onScriptMetadata&&this._onScriptMetadata(Object.assign({},n)),typeof n.hasAudio=="boolean"&&this._hasAudioFlagOverrided===!1&&(this._hasAudio=n.hasAudio,this._mediaInfo.hasAudio=this._hasAudio),typeof n.hasVideo=="boolean"&&this._hasVideoFlagOverrided===!1&&(this._hasVideo=n.hasVideo,this._mediaInfo.hasVideo=this._hasVideo),typeof n.audiodatarate=="number"&&(this._mediaInfo.audioDataRate=n.audiodatarate),typeof n.videodatarate=="number"&&(this._mediaInfo.videoDataRate=n.videodatarate),typeof n.width=="number"&&(this._mediaInfo.width=n.width),typeof n.height=="number"&&(this._mediaInfo.height=n.height),typeof n.duration=="number"){if(!this._durationOverrided){let a=Math.floor(n.duration*this._timescale);this._duration=a,this._mediaInfo.duration=a}}else this._mediaInfo.duration=0;if(typeof n.framerate=="number"){let a=Math.floor(n.framerate*1e3);if(a>0){let s=a/1e3;this._referenceFrameRate.fixed=!0,this._referenceFrameRate.fps=s,this._referenceFrameRate.fps_num=a,this._referenceFrameRate.fps_den=1e3,this._mediaInfo.fps=s}}if(typeof n.keyframes=="object"){this._mediaInfo.hasKeyframesIndex=!0;let a=n.keyframes;this._mediaInfo.keyframesIndex=this._parseKeyframesIndex(a),n.keyframes=null}else this._mediaInfo.hasKeyframesIndex=!1;this._mediaInfo.metadata=n,g.v(E.TAG,"Parsed flv.onMetaData"),this._mediaInfo.isComplete()&&this._onMediaInfo(this._mediaInfo)}Object.keys(r).length>0&&this._onScriptData&&this._onScriptData(Object.assign({},r))}_parseKeyframesIndex(e){let t=[],i=[];for(let r=1;r<e.times.length;r++){let n=this._timestampBase+Math.floor(e.times[r]*1e3);t.push(n),i.push(e.filepositions[r])}return{times:t,filepositions:i}}_parseAudioTagData(e,t,i,r){if(i<=1){g.w(E.TAG,"Flv: Invalid audio packet, missing SoundData payload!");return}if(this._hasAudioFlagOverrided===!0&&this._hasAudio===!1)return;let a=new DataView(e,t,i).getUint8(0),s=a>>>4;if(s===9){if(i<=5){g.w(E.TAG,"Flv: Invalid audio packet, missing AudioFourCC in Ehnanced FLV payload!");return}let y=a&15,f=String.fromCharCode(...new Uint8Array(e,t,i).slice(1,5));switch(f){case"Opus":this._parseEnhancedOpusAudioPacket(e,t+5,i-5,r,y);break;case"fLaC":this._parseEnhancedFlacAudioPacket(e,t+5,i-5,r,y);break;case"mp4a":this._parseEnhancedAacAudioPacket(e,t+5,i-5,r,y);break;default:this._onError(G.CODEC_UNSUPPORTED,`${E.TAG}._parseAudioTagData() - Unsupported FOURCC ${f}`)}return}if(s!==2&&s!==3&&s!==10){this._onError(G.CODEC_UNSUPPORTED,"Flv: Unsupported audio codec idx: "+s);return}let l=0,u=(a&12)>>>2;if(u>=0&&u<=4)l=E._flvSoundRateTable[u];else{this._onError(G.FORMAT_ERROR,"Flv: Invalid audio sample rate idx: "+u);return}let c=(a&2)>>>1,h=a&1,_=this._audioMetadata,m=this._audioTrack;if(_||(this._hasAudio===!1&&this._hasAudioFlagOverrided===!1&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),_=this._audioMetadata=te(K({},ri),{type:w.Audio,trackId:m.id,timescale:this._timescale,duration:this._duration,audioSampleRate:l,channelCount:h===0?1:2})),s===10){_.codecKind=We.Aac;let y=this._parseLegacyAacAudioPacket(e,t+1,i-1);if(y==null)return;if(y.packetType===0){let f=y.data;if(_.codecConfig){if(Me(f.config,_.codecConfig))return;g.w(E.TAG,"AudioSpecificConfig has been changed, re-generate initialization segment")}_.audioSampleRate=f.samplingRate,_.channelCount=f.channelCount,_.codec=f.codec,_.originalCodec=f.originalCodec,_.codecConfig=f.config,_.aacChannelConfigWasInBand=f.channelConfigWasInBand,this._hasLoggedFirstAacPayloadProbe=!1,this._hasLoggedAacPceDetection=!1,this._hasLoggedAacSbrDetection=!1,this._hasObservedAacPce=f.channelConfigHasPce,this._pendingAacMultichannelChannelCount=void 0,this._hasIgnoredAacMultichannelConfig=!1,this._aacPayloadProbeFrameIndex=0,_.refFrameDuration=1024/_.audioSampleRate*_.timescale,g.v(E.TAG,"Parsed AudioSpecificConfig"),this._remuxerRouter.isAudioMetadataDispatched&&(g.v(E.TAG,"Dispatching regular AAC track data before metadata refresh"),this._flushPendingTrackDataBeforeMetadataRefresh()),g.v(E.TAG,`Dispatching regular AAC track metadata codec=${_.codec} channels=${_.channelCount} sampleRate=${_.audioSampleRate}`),this._onTrackMetadata(_);let x=this._mediaInfo;x.audioCodec=_.originalCodec,x.audioSampleRate=_.audioSampleRate,x.audioChannelCount=_.channelCount,x.hasVideo?x.videoCodec!=null&&(x.mimeType='video/x-flv; codecs="'+x.videoCodec+","+x.audioCodec+'"'):x.mimeType='video/x-flv; codecs="'+x.audioCodec+'"',x.isComplete()&&(g.v(E.TAG,`Dispatching regular AAC media info codec=${x.audioCodec} channels=${x.audioChannelCount} mimeType=${x.mimeType}`),this._onMediaInfo(x))}else if(y.packetType===1){let f=y.data;this._probeAacPayload(f);let x=this._timestampBase+r,b={unit:f,length:f.byteLength,dts:x,pts:x};m.frames.push(b),m.length+=f.length}else g.e(E.TAG,`Flv: Unsupported AAC data type ${y.packetType}`)}else if(s===2){if(_.codecKind=We.Mp3,!_.codec){let b=this._parseLegacyMp3FrameData(e,t+1,i-1,!0);if(b==null)return;_.audioSampleRate=b.samplingRate,_.channelCount=b.channelCount,_.codec=b.codec,_.originalCodec=b.originalCodec,_.refFrameDuration=1152/_.audioSampleRate*_.timescale,g.v(E.TAG,"Parsed MPEG Audio Frame Header"),this._onTrackMetadata(_);let v=this._mediaInfo;v.audioCodec=_.codec,v.audioSampleRate=_.audioSampleRate,v.audioChannelCount=_.channelCount,v.audioDataRate=b.bitRate,v.hasVideo?v.videoCodec!=null&&(v.mimeType='video/x-flv; codecs="'+v.videoCodec+","+v.audioCodec+'"'):v.mimeType='video/x-flv; codecs="'+v.audioCodec+'"',v.isComplete()&&this._onMediaInfo(v)}let y=this._parseLegacyMp3FrameData(e,t+1,i-1,!1);if(y==null)return;let f=this._timestampBase+r,x={unit:y,length:y.byteLength,dts:f,pts:f};m.frames.push(x),m.length+=y.length}else if(s===3){if(_.codecKind=We.Lpcm,!_.codec){_.audioSampleRate=l,_.bitsPerSample=(c+1)*8,_.littleEndian=!0,_.codec="ipcm",_.originalCodec="ipcm",this._onTrackMetadata(_);let b=this._mediaInfo;b.audioCodec=_.codec,b.audioSampleRate=_.audioSampleRate,b.audioChannelCount=_.channelCount,b.audioDataRate=_.bitsPerSample*_.audioSampleRate,b.hasVideo?b.videoCodec!=null&&(b.mimeType='video/x-flv; codecs="'+b.videoCodec+","+b.audioCodec+'"'):b.mimeType='video/x-flv; codecs="'+b.audioCodec+'"',b.isComplete()&&this._onMediaInfo(b)}let y=new Uint8Array(e,t+1,i-1),f=this._timestampBase+r,x={unit:y,length:y.byteLength,dts:f,pts:f};m.frames.push(x),m.length+=y.length}}_parseLegacyAacAudioPacket(e,t,i){if(i<=1){g.w(E.TAG,"Flv: Invalid AAC packet, missing AACPacketType or/and Data!");return}let r=new Uint8Array(e,t,i),n=r[0];if(n===0){let a=this._parseAacAudioSpecificConfig(e,t+1,i-1);return a===void 0?void 0:{packetType:0,data:a}}else return{packetType:n,data:r.subarray(1)}}_parseAacAudioSpecificConfig(e,t,i){let r=new Uint8Array(e,t,i),n=r[0]>>>3,a=(r[0]&7)<<1|r[1]>>>7;if(a>=Oe.length){this._onError(G.FORMAT_ERROR,"Flv: AAC invalid sampling frequency index!");return}let s=Oe[a],l=[0,1,2,3,4,5,6,8],u=(r[1]&120)>>>3;if(u<0||u>=l.length){this._onError(G.FORMAT_ERROR,"Flv: AAC invalid channel configuration");return}if(u===0){let h=Dn(r,a);if(h&&h.channelCount>0){g.v(E.TAG,`PCE_CONFIRMED: AAC sequence header contains Program Config Element; ${h.description}; channelCount=${h.channelCount}; ascBytes=${r.length}; asc=${Or(r)}`);let m=wn(h.layout);if(m===null){this._onError(G.FORMAT_UNSUPPORTED,`Flv: AAC PCE describes a custom ${h.channelCount}-channel layout that cannot be represented by a standard channelConfiguration; MSE playback requires transcoding`);return}let y=new Uint8Array([n<<3|(a&14)>>>1,(a&1)<<7|m<<3]);return g.v(E.TAG,`AAC_PCE_NORMALIZED: replaced standard-equivalent PCE with channelConfig=${m}; asc=${Or(y)}`),{config:y,samplingRate:s,channelCount:h.channelCount,codec:"mp4a.40."+n,originalCodec:"mp4a.40."+n,channelConfigWasInBand:!0,channelConfigHasPce:!0}}return g.w(E.TAG,"Flv: AAC channel config 0 (in-band) detected, synthesising clean stereo AudioSpecificConfig"),{config:new Uint8Array([n<<3|(a&14)>>>1,(a&1)<<7|16]),samplingRate:s,channelCount:2,codec:"mp4a.40."+n,originalCodec:"mp4a.40."+n,channelConfigWasInBand:!0,channelConfigHasPce:!1}}let c=new gt(new pt(new Uint8Array(e,t,i)));return{config:Uint8Array.from(c.config),samplingRate:c.sampling_rate,channelCount:c.channel_count,codec:c.codec_mimetype,originalCodec:c.original_codec_mimetype,channelConfigWasInBand:!1,channelConfigHasPce:!1}}_parseLegacyMp3FrameData(e,t,i,r){if(i<4){g.w(E.TAG,"Flv: Invalid MP3 packet, header missing!");return}let n=new Uint8Array(e,t,i),a;if(r){if(n[0]!==255)return;let s=n[1]>>>3&3,l=(n[1]&6)>>1,u=(n[2]&240)>>>4,c=(n[2]&12)>>>2,_=(n[3]>>>6&3)!==3?2:1,m=0,y=0,f=34,x="mp3";switch(s){case 0:m=E._mpegAudioV25SampleRateTable[c];break;case 2:m=E._mpegAudioV20SampleRateTable[c];break;case 3:m=E._mpegAudioV10SampleRateTable[c];break}switch(l){case 1:f=34,u<E._mpegAudioL3BitRateTable.length&&(y=E._mpegAudioL3BitRateTable[u]);break;case 2:f=33,u<E._mpegAudioL2BitRateTable.length&&(y=E._mpegAudioL2BitRateTable[u]);break;case 3:f=32,u<E._mpegAudioL1BitRateTable.length&&(y=E._mpegAudioL1BitRateTable[u]);break}a={bitRate:y,samplingRate:m,channelCount:_,codec:x,originalCodec:x}}else a=n;return a}_parseAudioMultichannelConfig(e,t,i){var u,c;let r=g.scope(E.TAG,"_parseAudioMultichannelConfig()");if(i<2){r.w(`payload too short (${i} bytes), ignoring`);return}let n=new DataView(e,t,i),a=n.getUint8(0),s=n.getUint8(1);if(a===1&&i<6){r.w(`Native order requires 6 bytes, got ${i}, ignoring`);return}if(a===2&&i<2+s){r.w(`Custom mapping requires ${2+s} bytes, got ${i}, ignoring`);return}let l=(u=$r[a])!=null?u:String(a);if(r.v(`audioChannelOrder=${l} channelCount=${s}`),a===1){let h=n.getUint32(2,!1),_=[];for(let[m,y]of Object.entries(Hr))typeof y=="number"&&(h&y)!==0&&_.push(m);r.v(`Native audioChannelFlags=0x${h.toString(16).padStart(6,"0")} channels=[${_.join(", ")}]`)}else if(a===2){let h=[];for(let _=0;_<s;_++){let m=n.getUint8(2+_);h.push(`ch${_}=${(c=Gr[m])!=null?c:`0x${m.toString(16)}`}`)}r.v(`Custom mapping=[${h.join(", ")}]`)}this._handleAacMultichannelConfig(s,r)}_handleAacMultichannelConfig(e,t){var a,s,l;let i=this._audioMetadata;if(!i||e<=0){t.v(`ignoring MultichannelConfig channelCount=${e}, current channelCount=${(a=i==null?void 0:i.channelCount)!=null?a:"undefined"}`);return}if(i.codecKind!==We.Aac||!i.codecConfig||i.codecConfig.length<2){t.v(`ignoring MultichannelConfig channelCount=${e}, codecKind=${i.codecKind} codecConfigLength=${(l=(s=i.codecConfig)==null?void 0:s.length)!=null?l:0}`);return}let r=(i.codecConfig[1]&120)>>>3,n=i.aacChannelConfigWasInBand;if(i.channelCount===e){t.v(`ignoring MultichannelConfig channelCount=${e}, current channelCount=${i.channelCount} channelConfig=${r} channelConfigWasInBand=${n}`);return}if(n&&e>2){let u=i.codecConfig[0]>>>3;if(u===29){t.v(`channelConfig=0 + audioObjectType=${It[u]}(${u}) = HE-AAC v2 PS, ignoring MultichannelConfig channelCount=${e}, keeping channelCount=${i.channelCount}`);return}if(!this._hasObservedAacPce){if(this._hasIgnoredAacMultichannelConfig){t.v(`channelConfig=0 + stereo AAC evidence without PCE, treating MultichannelConfig channelCount=${e} as advisory, keeping channelCount=${i.channelCount}`);return}this._pendingAacMultichannelChannelCount=e,t.v(`channelConfig=0 + audioObjectType=${It[u]}(${u}), deferring MultichannelConfig channelCount=${e} until AAC PCE is observed`);return}t.v(`original channelConfig=0 + observed AAC PCE, honouring MultichannelConfig channelCount=${e}`)}this._rewriteAacChannelConfig(e,r,t),this._pendingAacMultichannelChannelCount=void 0,i.channelCount=e,this._mediaInfo.audioChannelCount=e,t.v(`updated audioMetadata.channelCount \u2192 ${e}, re-dispatching metadata`),this._remuxerRouter.isAudioMetadataDispatched&&this._flushPendingTrackDataBeforeMetadataRefresh(),this._onTrackMetadata(i)}_rewriteAacChannelConfig(e,t,i){let r=this._audioMetadata;if(!(r!=null&&r.codecConfig))return;let a=[0,1,2,3,4,5,6,8].indexOf(e);if(a>0){let s=Uint8Array.from(r.codecConfig);s[1]=s[1]&135|(a&15)<<3,r.codecConfig=s,i.v(`updated AAC AudioSpecificConfig channelConfig ${t}\u2192${a} for channelCount=${e}`)}else i.w(`channelCount=${e} has no standard AAC channelConfig mapping, AudioSpecificConfig unchanged`)}_ignorePendingAacMultichannelConfig(e){if(this._pendingAacMultichannelChannelCount===void 0||this._hasObservedAacPce||this._hasIgnoredAacMultichannelConfig)return;let t=this._audioMetadata;if(!(t!=null&&t.codecConfig)||t.codecKind!==We.Aac||!t.aacChannelConfigWasInBand)return;let i=this._pendingAacMultichannelChannelCount;this._hasIgnoredAacMultichannelConfig=!0,g.scope(E.TAG,"_parseAudioMultichannelConfig()").v(`stereo AAC payload without PCE (${e}), treating pending MultichannelConfig channelCount=${i} as advisory, keeping channelCount=${t.channelCount}`)}_applyPendingAacMultichannelConfig(){if(!this._hasObservedAacPce||this._pendingAacMultichannelChannelCount===void 0)return;let e=this._pendingAacMultichannelChannelCount;this._pendingAacMultichannelChannelCount=void 0,this._hasIgnoredAacMultichannelConfig=!1;let t=g.scope(E.TAG,"_parseAudioMultichannelConfig()");t.v(`observed AAC PCE, applying pending MultichannelConfig channelCount=${e}`),this._handleAacMultichannelConfig(e,t)}_parseEnhancedAacAudioPacket(e,t,i,r,n){var l;let a=this._audioMetadata,s=this._audioTrack;if(a||(this._hasAudio===!1&&this._hasAudioFlagOverrided===!1&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),a=this._audioMetadata=te(K({},ri),{type:w.Audio,trackId:s.id,timescale:this._timescale,duration:this._duration})),a.codecKind=We.Aac,n===0){let u=this._parseAacAudioSpecificConfig(e,t,i);if(u==null)return;let c=new Uint8Array(u.config);if(a.codecConfig){if(Me(c,a.codecConfig))return;g.w(E.TAG,"AudioSpecificConfig has been changed, re-generate initialization segment")}a.audioSampleRate=u.samplingRate,a.channelCount=u.channelCount,a.codec=u.codec,a.originalCodec=u.originalCodec,a.codecConfig=c,a.aacChannelConfigWasInBand=u.channelConfigWasInBand,this._hasLoggedFirstAacPayloadProbe=!1,this._hasLoggedAacPceDetection=!1,this._hasLoggedAacSbrDetection=!1,this._hasObservedAacPce=u.channelConfigHasPce,this._pendingAacMultichannelChannelCount=void 0,this._hasIgnoredAacMultichannelConfig=!1,this._aacPayloadProbeFrameIndex=0,a.refFrameDuration=1024/a.audioSampleRate*a.timescale,g.v(E.TAG,"Parsed Enhanced FLV AAC AudioSpecificConfig"),this._remuxerRouter.isAudioMetadataDispatched&&(g.v(E.TAG,"Dispatching enhanced AAC track data before metadata refresh"),this._flushPendingTrackDataBeforeMetadataRefresh()),g.v(E.TAG,`Dispatching enhanced AAC track metadata codec=${a.codec} channels=${a.channelCount} sampleRate=${a.audioSampleRate}`),this._onTrackMetadata(a);let h=this._mediaInfo;h.audioCodec=a.originalCodec,h.audioSampleRate=a.audioSampleRate,h.audioChannelCount=a.channelCount,h.hasVideo?h.videoCodec!=null&&(h.mimeType='video/x-flv; codecs="'+h.videoCodec+","+h.audioCodec+'"'):h.mimeType='video/x-flv; codecs="'+h.audioCodec+'"',h.isComplete()&&(g.v(E.TAG,`Dispatching enhanced AAC media info codec=${h.audioCodec} channels=${h.audioChannelCount} mimeType=${h.mimeType}`),this._onMediaInfo(h))}else if(n===1){let u=new Uint8Array(e,t,i);this._probeAacPayload(u);let c=this._timestampBase+r,h={unit:u,length:u.byteLength,dts:c,pts:c};s.frames.push(h),s.length+=u.length}else if(n!==2)if(n===4)this._parseAudioMultichannelConfig(e,t,i);else{let u=(l=Ni[n])!=null?l:String(n);g.w(E.TAG,`_parseEnhancedAacAudioPacket(): unsupported FlvAudioPacketType=${u} ts=${r} offset=${t} size=${i} action=drop`)}}_parseEnhancedOpusAudioPacket(e,t,i,r,n){var a;if(n===0)this._parseOpusSequenceHeader(e,t,i);else if(n===1)this._hasUsableOpusMetadata()||this._injectFallbackOpusSequenceHeader(r),this._parseOpusFrameData(e,t,i,r);else if(n!==2)if(n===4)this._parseAudioMultichannelConfig(e,t,i);else{let s=(a=Ni[n])!=null?a:String(n);g.w(E.TAG,`_parseEnhancedOpusAudioPacket(): unsupported FlvAudioPacketType=${s} ts=${r} offset=${t} size=${i} action=drop`)}}_hasUsableOpusMetadata(){var e;return((e=this._audioMetadata)==null?void 0:e.codecKind)===We.Opus&&!!this._audioMetadata.codecConfig}_injectFallbackOpusSequenceHeader(e){let t=new Uint8Array([79,112,117,115,72,101,97,100,1,2,0,0,128,187,0,0,0,0,0]);g.w(E.TAG,`_parseEnhancedOpusAudioPacket(): Opus CodedFrames received before SequenceStart ts=${e}; injecting fallback stereo OpusHead`),this._parseOpusSequenceHeader(t.buffer,t.byteOffset,t.byteLength)}_parseOpusSequenceHeader(e,t,i){if(i<19){g.e(E.TAG,"_parseOpusSequenceHeader(): Invalid OpusSequenceHeader, lack of data!");return}let r=new Uint8Array(e,t,i),n=String.fromCharCode(...r.subarray(0,8));if(n!=="OpusHead"){g.e(E.TAG,`_parseOpusSequenceHeader(): Invalid OpusSequenceHeader, missing OpusHead (got "${n}")`);return}let a=new Uint8Array(e,t+8,i-8).slice(),s=new DataView(a.buffer),l=s.getUint8(1),u=s.getUint16(2,!0),c=s.getUint32(4,!0),h=s.getInt16(8,!0),_=s.getUint8(10);h>0&&g.w(E.TAG,"_parseOpusSequenceHeader(): outputGain within OpusSequenceHeader action=drop"),_!==0&&g.w(E.TAG,"_parseOpusSequenceHeader(): channel mapping within OpusSequenceHeader action=drop");let m=this._audioMetadata,y=this._audioTrack;if(m||(this._hasAudio===!1&&this._hasAudioFlagOverrided===!1&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),m=this._audioMetadata=te(K({},ri),{type:w.Audio,trackId:y.id,timescale:this._timescale,duration:this._duration})),m.codecKind=We.Opus,m.codecConfig){if(Me(a,m.codecConfig))return;g.v(E.TAG,"_parseOpusSequenceHeader(): OpusSequenceHeader has been changed, re-generate initialization segment")}m.audioSampleRate=48e3,m.channelCount=l,m.codec="opus",m.originalCodec="opus",m.codecConfig=a,m.preSkipSamples=u,m.inputSampleRate=c,m.outputGain=h,m.refFrameDuration=960*m.timescale/48e3,this._remuxerRouter.isAudioMetadataDispatched&&this._flushPendingTrackDataBeforeMetadataRefresh(),this._onTrackMetadata(m);let f=this._mediaInfo;f.audioCodec=m.originalCodec,f.audioSampleRate=m.audioSampleRate,f.audioChannelCount=m.channelCount,f.hasVideo?f.videoCodec!=null&&(f.mimeType='video/x-flv; codecs="'+f.videoCodec+","+f.audioCodec+'"'):f.mimeType='video/x-flv; codecs="'+f.audioCodec+'"',f.isComplete()&&this._onMediaInfo(f)}_parseOpusFrameData(e,t,i,r){let n=this._audioTrack,a=new Uint8Array(e,t,i),s=this._timestampBase+r,l={unit:a,length:a.byteLength,dts:s,pts:s};n.frames.push(l),n.length+=a.length}_parseEnhancedFlacAudioPacket(e,t,i,r,n){if(n===0)this._parseFlacSequenceHeader(e,t,i);else if(n===1)this._parseFlacFrameData(e,t,i,r);else if(n!==2)if(n===4)this._parseAudioMultichannelConfig(e,t,i);else{this._onError(G.FORMAT_ERROR,`${E.TAG}._parseEnhancedFlacAudioPacket() - Unsupported FlvAudioPacketType ${n}`);return}}_parseFlacSequenceHeader(e,t,i){let r=this._audioMetadata,n=this._audioTrack;r||(this._hasAudio===!1&&this._hasAudioFlagOverrided===!1&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),r=this._audioMetadata=te(K({},ri),{type:w.Audio,trackId:n.id,timescale:this._timescale,duration:this._duration})),r.codecKind=We.Flac;let a=new Uint8Array(e,t,i),s=new Uint8Array(i+4);s[0]=128,s[1]=0,s[2]=0,s[3]=i,s.set(a,4);let l=new me(a),u=l.readBits(16),c=l.readBits(16),h=c===u?c:4096,_=l.readBits(24),m=l.readBits(24),y=l.readBits(20),f=l.readBits(3)+1,x=l.readBits(5)+1;l.destroy();let b={config:s,channelCount:f,samplingFrequence:y,bitsPerSample:x,codec:"flac",originalCodec:"flac"};if(r.codecConfig){if(Me(b.config,r.codecConfig))return;g.w(E.TAG,"FlacSequenceHeader has been changed, re-generate initialization segment")}r.audioSampleRate=b.samplingFrequence,r.channelCount=b.channelCount,r.bitsPerSample=b.bitsPerSample,r.codec=b.codec,r.originalCodec=b.originalCodec,r.codecConfig=b.config,r.refFrameDuration=h*1e3/b.samplingFrequence,g.v(E.TAG,"Parsed FlacSequenceHeader"),this._remuxerRouter.isAudioMetadataDispatched&&this._flushPendingTrackDataBeforeMetadataRefresh(),this._onTrackMetadata(r);let v=this._mediaInfo;v.audioCodec=r.originalCodec,v.audioSampleRate=r.audioSampleRate,v.audioChannelCount=r.channelCount,v.hasVideo?v.videoCodec!=null&&(v.mimeType='video/x-flv; codecs="'+v.videoCodec+","+v.audioCodec+'"'):v.mimeType='video/x-flv; codecs="'+v.audioCodec+'"',v.isComplete()&&this._onMediaInfo(v)}_parseFlacFrameData(e,t,i,r){let n=this._audioTrack,a=new Uint8Array(e,t,i),s=this._timestampBase+r,l={unit:a,length:a.byteLength,dts:s,pts:s};n.frames.push(l),n.length+=a.length}_parseVideoTagData(e,t,i,r,n){if(i<=1){g.w(E.TAG,"Flv: Invalid video packet, missing VideoData payload!");return}if(this._hasVideoFlagOverrided===!0&&this._hasVideo===!1)return;let a=new Uint8Array(e,t,i)[0],s=(a&128)!==0,l=(a&112)>>>4;if(s){let u=a&15;if(u===6)this._parseEnhancedMultitrackVideoPacket(e,t+1,i-1,r,n,l);else{let c=String.fromCharCode(...new Uint8Array(e,t,i).slice(1,5));if(c==="avc1")this._parseEnhancedAvcVideoPacket(e,t+5,i-5,r,n,l,u,this._getOrCreateVideoTrack(0));else if(c==="hvc1")this._parseEnhancedHevcVideoPacket(e,t+5,i-5,r,n,l,u,this._getOrCreateVideoTrack(0));else if(c==="av01")this._parseEnhancedAv1VideoPacket(e,t+5,i-5,r,n,l,u,this._getOrCreateVideoTrack(0));else if(c==="vp09")this._parseEnhancedVp9VideoPacket(e,t+5,i-5,r,n,l,u,this._getOrCreateVideoTrack(0));else{this._onError(G.CODEC_UNSUPPORTED,`Flv: Unsupported codec in video frame: ${c}`);return}}}else{let u=a&15;if(u===7)this._parseLegacyAvcVideoPacket(e,t+1,i-1,r,n,l,this._getOrCreateVideoTrack(0));else if(u===12)this._parseLegacyHevcVideoPacket(e,t+1,i-1,r,n,l,this._getOrCreateVideoTrack(0));else{this._onError(G.CODEC_UNSUPPORTED,`Flv: Unsupported codec in video frame: ${u}`);return}}}_parseEnhancedMultitrackVideoPacket(e,t,i,r,n,a){if(i<2){g.w(E.TAG,"Flv: Invalid multitrack video packet, too short");return}let s=new DataView(e,t,i),l=s.getUint8(0),u=l>>4&15,c=l&15;if(c===6){this._onError(G.FORMAT_ERROR,"Flv: Multitrack innerPacketType must not be Multitrack");return}let h=1,_=null;if(u!==2){if(i-h<4){g.w(E.TAG,"Flv: Invalid multitrack video packet, missing shared FOURCC");return}_=String.fromCharCode(...new Uint8Array(e,t+h,4)),h+=4}for(;h<i;){let m;if(u===2){if(i-h<4)break;m=String.fromCharCode(...new Uint8Array(e,t+h,4)),h+=4}else m=_;if(i-h<1)break;let y=s.getUint8(h);h+=1;let f;if(u===0)f=i-h;else{if(i-h<3)break;f=s.getUint8(h)<<16|s.getUint8(h+1)<<8|s.getUint8(h+2),h+=3}if(h+f>i){g.w(E.TAG,`Flv: Multitrack track payload overflows packet, trackId=${y}`);break}g.v(E.TAG,`Multitrack packet: trackId=${y}, fourcc=${m}, innerPacketType=${c}, payloadSize=${f}`);let x=this._getOrCreateVideoTrack(y),b=t+h,v=f;if(m==="avc1"?this._parseEnhancedAvcVideoPacket(e,b,v,r,n,a,c,x):m==="hvc1"?this._parseEnhancedHevcVideoPacket(e,b,v,r,n,a,c,x):m==="av01"?this._parseEnhancedAv1VideoPacket(e,b,v,r,n,a,c,x):m==="vp09"?this._parseEnhancedVp9VideoPacket(e,b,v,r,n,a,c,x):g.w(E.TAG,`Flv: Unsupported codec in multitrack video packet: ${m}, trackId=${y}, action=skip`),h+=f,u===0)break}}_parseLegacyAvcVideoPacket(e,t,i,r,n,a,s){if(i<4){g.w(E.TAG,"Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime");return}let l=new DataView(e,t,i),u=l.getUint8(0),c=ai(l,1);if(t+=4,i-=4,u===0)this._parseAvcDecoderConfig(e,t,i,s);else if(u===1)this._parseAvcFrameData(e,t,i,r,n,a,c,s);else if(u!==2)if(u===4)g.w(E.TAG,`_parseLegacyAvcVideoPacket(): unsupported AVC video packet type ${u} (FlvVideoPacketType.Metadata) ts=${r} offset=${t} size=${i} action=drop`);else{this._onError(G.FORMAT_ERROR,`Flv: Invalid video packet type ${u}`);return}}_parseLegacyHevcVideoPacket(e,t,i,r,n,a,s){if(i<4){g.w(E.TAG,"Flv: Invalid HEVC packet, missing HEVCPacketType or/and CompositionTime");return}let l=new DataView(e,t,i),u=l.getUint8(0),c=ai(l,1);if(t+=4,i-=4,u===0)this._parseHevcDecoderConfig(e,t,i,s);else if(u===1)this._parseHevcFrameData(e,t,i,r,n,a,c,s);else if(u!==2)if(u===4)g.w(E.TAG,`_parseLegacyHevcVideoPacket(): unsupported HEVC video packet type ${u} (FlvVideoPacketType.Metadata) ts=${r} offset=${t} size=${i} action=drop`);else{this._onError(G.FORMAT_ERROR,`Flv: Invalid video packet type ${u}`);return}}_parseEnhancedHevcVideoPacket(e,t,i,r,n,a,s,l){let u=new DataView(e,t,i);if(s===0)this._parseHevcDecoderConfig(e,t,i,l);else if(s===1){if(i<3){g.w(E.TAG,"_parseEnhancedHevcVideoPacket(): Invalid HEVC packet, missing CompositionTime");return}let c=ai(u,0);t+=3,i-=3,this._parseHevcFrameData(e,t,i,r,n,a,c,l)}else if(s===3)this._parseHevcFrameData(e,t,i,r,n,a,0,l);else if(s!==2)if(s===4)g.w(E.TAG,`_parseEnhancedHevcVideoPacket(): unsupported HEVC video packet type ${s} (FlvVideoPacketType.Metadata) ts=${r} offset=${t} size=${i} action=drop`);else{this._onError(G.FORMAT_ERROR,`Flv: Invalid video packet type ${s}`);return}}_parseEnhancedAvcVideoPacket(e,t,i,r,n,a,s,l){let u=new DataView(e,t,i);if(s===0)this._parseAvcDecoderConfig(e,t,i,l);else if(s===1){if(i<3){g.w(E.TAG,"_parseEnhancedAvcVideoPacket(): Invalid AVC packet, missing CompositionTime");return}let c=ai(u,0);t+=3,i-=3,this._parseAvcFrameData(e,t,i,r,n,a,c,l)}else if(s===3)this._parseAvcFrameData(e,t,i,r,n,a,0,l);else if(s!==2){this._onError(G.FORMAT_ERROR,`Flv: Invalid AVC video packet type ${s}`);return}}_parseEnhancedAv1VideoPacket(e,t,i,r,n,a,s,l){let u=new DataView(e,t,i);switch(s){case 0:this._parseAv1DecoderConfig(e,t,i,l);break;case 1:this._parseAv1FrameData(e,t,i,r,n,a,0,l);break;case 2:break;case 4:{g.w(E.TAG,`_parseEnhancedAv1VideoPacket(): unsupported AV1 video packet type ${s} (FlvVideoPacketType.Metadata) ts=${r} offset=${t} size=${i} action=drop`);break}default:this._onError(G.FORMAT_ERROR,`Flv: invalid AV1 video packet type ${s}`);return}}_parseAvcDecoderConfig(e,t,i,r){if(i<7){g.w(E.TAG,"Flv: Invalid AVCDecoderConfigurationRecord, lack of data!");return}let n=this._videoMetadataByTrackId.get(r.id),a=new DataView(e,t,i);if(!n)this._hasVideo===!1&&this._hasVideoFlagOverrided===!1&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),n=te(K({},ni),{type:w.Video,trackId:r.id,timescale:this._timescale,duration:this._duration}),this._videoMetadataByTrackId.set(r.id,n);else if(typeof n.codecConfig!="undefined"){let y=new Uint8Array(e,t,i);if(Me(y,n.codecConfig))return;g.w(E.TAG,"AVCDecoderConfigurationRecord has been changed, re-generate initialization segment")}n.codecKind=ce.Avc;let s=a.getUint8(0),l=a.getUint8(1),u=a.getUint8(2),c=a.getUint8(3);if(s!==1||l===0){this._onError(G.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord");return}if(this._naluLengthSize=(a.getUint8(4)&3)+1,this._naluLengthSize!==3&&this._naluLengthSize!==4){this._onError(G.FORMAT_ERROR,`Flv: Strange NaluLengthSizeMinusOne: ${this._naluLengthSize-1}`);return}let h=a.getUint8(5)&31;if(h===0){this._onError(G.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No SPS");return}else h>1&&g.w(E.TAG,`Flv: Strange AVCDecoderConfigurationRecord: SPS Count = ${h}`);let _=6;for(let y=0;y<h;y++){let f=a.getUint16(_,!1);if(_+=2,f===0)continue;let x=new Uint8Array(e,t+_,f);_+=f;let b=Zt.parseSPS(x);if(y!==0)continue;n.codecWidth=b.codec_size.width,n.codecHeight=b.codec_size.height,n.presentWidth=b.present_size.width,n.presentHeight=b.present_size.height,n.profile=b.profile_string,n.level=b.level_string,n.bitDepth=b.bit_depth,n.chromaFormat=b.chroma_format,n.sarRatio=b.sar_ratio,n.frameRate=b.frame_rate,(b.frame_rate.fixed===!1||b.frame_rate.fps_num===0||b.frame_rate.fps_den===0)&&(n.frameRate=this._referenceFrameRate);let v=n.frameRate.fps_den,k=n.frameRate.fps_num;n.refFrameDuration=n.timescale*(v/k);let F=x.subarray(1,4),O="avc1.";for(let I=0;I<3;I++){let S=F[I].toString(16);S.length<2&&(S="0"+S),O+=S}n.codec=O;let D=this._mediaInfo;D.width=n.codecWidth,D.height=n.codecHeight,D.fps=n.frameRate.fps,D.profile=n.profile,D.level=n.level,D.refFrames=b.ref_frames,D.chromaFormat=b.chroma_format_string,D.sarNum=n.sarRatio.width,D.sarDen=n.sarRatio.height,D.videoCodec=O,D.hasAudio?D.audioCodec!=null&&(D.mimeType='video/x-flv; codecs="'+D.videoCodec+","+D.audioCodec+'"'):D.mimeType='video/x-flv; codecs="'+D.videoCodec+'"',D.isComplete()&&this._onMediaInfo(D)}let m=a.getUint8(_);if(m===0){this._onError(G.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No PPS");return}else m>1&&g.w(E.TAG,`Flv: Strange AVCDecoderConfigurationRecord: PPS Count = ${m}`);_++;for(let y=0;y<m;y++){let f=a.getUint16(_,!1);_+=2,f!==0&&(_+=f)}n.codecConfig=new Uint8Array(i),n.codecConfig.set(new Uint8Array(e,t,i),0),g.v(E.TAG,"Parsed AVCDecoderConfigurationRecord"),this._dispatchVideoTrackMetadata(n)}_parseHevcDecoderConfig(e,t,i,r){if(i<22){g.w(E.TAG,"Flv: Invalid HEVCDecoderConfigurationRecord, lack of data!");return}let n=this._videoMetadataByTrackId.get(r.id),a=new DataView(e,t,i);if(!n)this._hasVideo===!1&&this._hasVideoFlagOverrided===!1&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),n=te(K({},ni),{type:w.Video,trackId:r.id,timescale:this._timescale,duration:this._duration}),this._videoMetadataByTrackId.set(r.id,n);else if(n.codecConfig){let c=new Uint8Array(e,t,i);if(Me(c,n.codecConfig))return;g.w(E.TAG,"HEVCDecoderConfigurationRecord has been changed, re-generate initialization segment")}n.codecKind=ce.Hevc;let s=a.getUint8(0),l=a.getUint8(1)&31;if(s!==0&&s!==1||l===0){this._onError(G.FORMAT_ERROR,"Flv: Invalid HEVCDecoderConfigurationRecord");return}if(this._naluLengthSize=(a.getUint8(21)&3)+1,this._naluLengthSize!==3&&this._naluLengthSize!==4){this._onError(G.FORMAT_ERROR,`Flv: Strange NaluLengthSizeMinusOne: ${this._naluLengthSize-1}`);return}let u=a.getUint8(22);for(let c=0,h=23;c<u;c++){let _=a.getUint8(h+0)&63,m=a.getUint16(h+1,!1);h+=3;for(let y=0;y<m;y++){let f=a.getUint16(h+0,!1);if(y!==0){h+=2+f;continue}if(_===33){h+=2;let x=new Uint8Array(e,t+h,f),b=xt.parseSPS(x);n.codecWidth=b.codec_size.width,n.codecHeight=b.codec_size.height,n.presentWidth=b.present_size.width,n.presentHeight=b.present_size.height,n.profile=b.profile_string,n.level=b.level_string,n.bitDepth=b.bit_depth,n.chromaFormat=b.chroma_format,n.sarRatio=b.sar_ratio,n.frameRate=b.frame_rate,(b.frame_rate.fixed===!1||b.frame_rate.fps_num===0||b.frame_rate.fps_den===0)&&(n.frameRate=this._referenceFrameRate);let v=n.frameRate.fps_den,k=n.frameRate.fps_num;n.refFrameDuration=n.timescale*(v/k),n.codec=b.codec_mimetype;let F=this._mediaInfo;F.width=n.codecWidth,F.height=n.codecHeight,F.fps=n.frameRate.fps,F.profile=n.profile,F.level=n.level,F.refFrames=b.ref_frames,F.chromaFormat=b.chroma_format_string,F.sarNum=n.sarRatio.width,F.sarDen=n.sarRatio.height,F.videoCodec=b.codec_mimetype,F.hasAudio?F.audioCodec!=null&&(F.mimeType='video/x-flv; codecs="'+F.videoCodec+","+F.audioCodec+'"'):F.mimeType='video/x-flv; codecs="'+F.videoCodec+'"',F.isComplete()&&this._onMediaInfo(F),h+=f}else h+=2+f}}n.codecConfig=new Uint8Array(i),n.codecConfig.set(new Uint8Array(e,t,i),0),g.v(E.TAG,"Parsed HEVCDecoderConfigurationRecord"),this._dispatchVideoTrackMetadata(n)}_parseAv1DecoderConfig(e,t,i,r){var x,b;if(i<4){g.w(E.TAG,"Flv: Invalid AV1CodecConfigurationRecord, lack of data!");return}let n,a=this._videoMetadataByTrackId.get(r.id),s=new DataView(e,t,i);if(!a)this._hasVideo===!1&&this._hasVideoFlagOverrided===!1&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),n=te(K({},ni),{type:w.Video,trackId:r.id,timescale:this._timescale,duration:this._duration}),this._videoMetadataByTrackId.set(r.id,n);else{if(a.codecConfig){let v=new Uint8Array(e,t,i);if(Me(v,a.codecConfig))return;g.w(E.TAG,"AV1CodecConfigurationRecord has been changed, re-generate initialization segment")}n=a}n.codecKind=ce.Av1;let l=s.getUint8(0)&127,u=(s.getUint8(1)&224)>>5,c=(s.getUint8(1)&143)>>0,h=(s.getUint8(2)&128)>>7;if(l!==1){this._onError(G.FORMAT_ERROR,"Flv: Invalid AV1CodecConfigurationRecord");return}let _=Ue.parseOBUs(new Uint8Array(e,t+4,i-4));if(!_){this._onError(G.FORMAT_ERROR,"Flv: Invalid AV1CodecConfigurationRecord");return}n.profile=_.profile_string,n.level=_.level_string,n.bitDepth=_.bit_depth,n.chromaFormat=_.chroma_format,n.frameRate=_.frame_rate,(_.frame_rate.fixed===!1||_.frame_rate.fps_num===0||_.frame_rate.fps_den===0)&&(n.frameRate=this._referenceFrameRate);let m=n.frameRate.fps_den,y=n.frameRate.fps_num;n.refFrameDuration=n.timescale*(m/y),n.codec=_.codec_mimetype,n.av1Extra=_;let f=this._mediaInfo;f.fps=n.frameRate.fps,f.profile=n.profile,f.level=n.level,f.refFrames=_.ref_frames,f.chromaFormat=_.chroma_format_string,f.videoCodec=_.codec_mimetype,n.codecWidth=(x=f.width)!=null?x:0,n.codecHeight=(b=f.height)!=null?b:0,f.hasAudio?f.audioCodec!=null&&(f.mimeType='video/x-flv; codecs="'+f.videoCodec+","+f.audioCodec+'"'):f.mimeType='video/x-flv; codecs="'+f.videoCodec+'"',f.isComplete()&&this._onMediaInfo(f),n.codecConfig=new Uint8Array(e,t,i).slice(),this._dispatchVideoTrackMetadata(n),g.v(E.TAG,`Parsed AV1 metadata: ${JSON.stringify(_)}`)}_parseAvcFrameData(e,t,i,r,n,a,s,l){if(this._currentVideoTrackId!==void 0&&l.id!==this._currentVideoTrackId)return;let u=new DataView(e,t,i),c=[],h=0,_=0,m=this._naluLengthSize,y=this._timestampBase+r,f=a===1;for(;_<i;){if(_+4>=i){g.w(E.TAG,`Malformed Nalu near timestamp ${y}, offset = ${_}, dataSize = ${i}`);break}let x=u.getUint32(_,!1);if(m===3&&(x>>>=8),x>i-m){g.w(E.TAG,`Malformed Nalus near timestamp ${y}, NaluSize > DataSize!`);return}let b=u.getUint8(_+m)&31;b===5&&(f=!0);let v=new Uint8Array(e,t+_,m+x),k={type:b,data:v};c.push(k),h+=v.byteLength,_+=m+x}if(c.length){let x={units:c,length:h,isKeyframe:f,fileposition:n,dts:y,cts:s,pts:y+s};l.frames.push(x),l.length+=h}}_parseHevcFrameData(e,t,i,r,n,a,s,l){if(this._currentVideoTrackId!==void 0&&l.id!==this._currentVideoTrackId)return;let u=new DataView(e,t,i),c=[],h=0,_=0,m=this._naluLengthSize,y=this._timestampBase+r,f=a===1;for(;_<i;){if(_+4>=i){g.w(E.TAG,`Malformed Nalu near timestamp ${y}, offset = ${_}, dataSize = ${i}`);break}let x=u.getUint32(_,!1);if(m===3&&(x>>>=8),x>i-m){g.w(E.TAG,`Malformed Nalus near timestamp ${y}, NaluSize > DataSize!`);return}let b=u.getUint8(_+m)>>1&63;(b===19||b===20||b===21)&&(f=!0);let v=new Uint8Array(e,t+_,m+x),k={type:b,data:v};c.push(k),h+=v.byteLength,_+=m+x}if(c.length){let x={units:c,length:h,isKeyframe:f,fileposition:n,dts:y,cts:s,pts:y+s};l.frames.push(x),l.length+=h}}_parseAv1FrameData(e,t,i,r,n,a,s,l){if(this._currentVideoTrackId!==void 0&&l.id!==this._currentVideoTrackId)return;let u=[],c=0,h=this._timestampBase+r,_=a===1,m=new Uint8Array(e,t,i);if(_){let f=this._videoMetadataByTrackId.get(l.id);if(!f){this._onError(G.FORMAT_ERROR,"Flv: AV1 VideoData received before SequenceStart");return}let x=Ue.parseOBUs(m,f.av1Extra);if(!x){this._onError(G.FORMAT_ERROR,"Flv: Invalid AV1 VideoData");return}f.codecWidth=x.codec_size.width,f.codecHeight=x.codec_size.height,f.presentWidth=x.present_size.width,f.presentHeight=x.present_size.height,f.sarRatio=x.sar_ratio;let b=this._mediaInfo;b.width=f.codecWidth,b.height=f.codecHeight,b.sarNum=f.sarRatio.width,b.sarDen=f.sarRatio.height}c=i,u.push({type:0,data:m});let y={units:u,length:c,isKeyframe:_,fileposition:n,dts:h,cts:s,pts:h+s,rawData:m};l.frames.push(y),l.length+=c}_parseEnhancedVp9VideoPacket(e,t,i,r,n,a,s,l){switch(s){case 0:this._parseVp9DecoderConfig(e,t,i,l);break;case 1:this._parseVp9FrameData(e,t,i,r,n,a,0,l);break;case 2:break;case 4:g.w(E.TAG,`_parseEnhancedVp9VideoPacket(): unsupported VP9 video packet type ${s} (FlvVideoPacketType.Metadata) ts=${r} offset=${t} size=${i} action=drop`);break;default:this._onError(G.FORMAT_ERROR,`Flv: invalid VP9 video packet type ${s}`);return}}_parseVp9DecoderConfig(e,t,i,r){var I,S;if(i<9){g.w(E.TAG,"_parseVp9DecoderConfig(): Invalid VP9CodecConfigurationRecord, lack of data!");return}let n=new DataView(e,t,i),a,s=this._videoMetadataByTrackId.get(r.id);if(!s)this._hasVideo===!1&&this._hasVideoFlagOverrided===!1&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),a=te(K({},ni),{type:w.Video,trackId:r.id,timescale:this._timescale,duration:this._duration}),this._videoMetadataByTrackId.set(r.id,a);else{if(s.codecConfig){let V=new Uint8Array(e,t,i);if(Me(V,s.codecConfig))return;g.w(E.TAG,"_parseVp9DecoderConfig(): VP9CodecConfigurationRecord has been changed, re-generate initialization segment")}a=s}a.codecKind=ce.Vp9;let u=(n.getUint8(1)<<16|n.getUint8(2)<<8|n.getUint8(3))===0&&i>=12,c=u?4:1;if(!u&&i<9){g.w(E.TAG,"_parseVp9DecoderConfig(): record too short");return}let h=n.getUint8(c),_=n.getUint8(c+1),m=(n.getUint8(c+2)&240)>>4,y=(n.getUint8(c+2)&14)>>1,f=n.getUint8(c+2)&1,x=n.getUint8(c+3),b=n.getUint8(c+4),v=2;if(i>=c+6&&(v=n.getUint8(c+5),i>=c+8)){let V=n.getUint16(c+6,!1);V!==0&&g.w(E.TAG,`_parseVp9DecoderConfig(): Strange VP9CodecConfigurationRecord, codecInitializationDataSize = ${V}`)}a.profile=`${h}`,a.level=`${_}`,a.bitDepth=m,a.chromaFormat=y,a.colorRange=f,a.colourPrimaries=x,a.transferCharacteristics=b,a.matrixCoefficients=v,a.codec=`vp09.${`${h}`.padStart(2,"0")}.${`${_}`.padStart(2,"0")}.${`${m}`.padStart(2,"0")}`;let k=this._mediaInfo;k.fps=a.frameRate.fps,k.profile=a.profile,k.level=a.level,k.refFrames=3,k.chromaFormat=y===1?"4:2:0":a.chromaFormat===2?"4:2:2":a.chromaFormat===3?"4:4:4":"4:2:0",k.videoCodec=a.codec;let F=a.frameRate;(F.fixed===!1||Number.isNaN(F.fps_num)||Number.isNaN(F.fps_den)||Number.isNaN(F.fps))&&(a.frameRate=this._referenceFrameRate);let O=a.frameRate.fps_den,D=a.frameRate.fps_num;a.refFrameDuration=a.timescale*(O/D),a.codecWidth=(I=k.width)!=null?I:0,a.codecHeight=(S=k.height)!=null?S:0,k.hasAudio?k.audioCodec!=null&&(k.mimeType='video/x-flv; codecs="'+k.videoCodec+","+k.audioCodec+'"'):k.mimeType='video/x-flv; codecs="'+k.videoCodec+'"',k.isComplete()&&this._onMediaInfo(k),a.codecConfig=new Uint8Array(e,t,i).slice(),this._dispatchVideoTrackMetadata(a)}_parseVp9FrameData(e,t,i,r,n,a,s,l){if(this._currentVideoTrackId!==void 0&&l.id!==this._currentVideoTrackId)return;let u=0,c=[],h=this._timestampBase+r,_=a===1,m=bt.parseVp9Header(new Uint8Array(e,t,i));if(_&&m.isValid){let f=this._videoMetadataByTrackId.get(l.id);if(f){f.codecWidth=m.width,f.codecHeight=m.height,f.presentWidth=m.renderWidth,f.presentHeight=m.renderHeight,f.sarRatio={width:1,height:1};let x=this._mediaInfo;x.width=f.codecWidth,x.height=f.codecHeight,x.sarNum=f.sarRatio.width,x.sarDen=f.sarRatio.height}}u=i,c.push({type:_?0:1,data:new Uint8Array(e,t,i)});let y={units:c,length:u,isKeyframe:_,fileposition:n,dts:h,cts:s,pts:h+s,rawData:new Uint8Array(e,t,i)};l.frames.push(y),l.length+=u}};d(E,"TAG","FLVDemuxer"),d(E,"_flvSoundRateTable",[5500,11025,22050,44100,48e3]),d(E,"_mpegAudioV10SampleRateTable",[44100,48e3,32e3,0]),d(E,"_mpegAudioV20SampleRateTable",[22050,24e3,16e3,0]),d(E,"_mpegAudioV25SampleRateTable",[11025,12e3,8e3,0]),d(E,"_mpegAudioL1BitRateTable",[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1]),d(E,"_mpegAudioL2BitRateTable",[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1]),d(E,"_mpegAudioL3BitRateTable",[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1]);var Hi=E,qr=Hi;var Wr=new Uint8Array([48,38,178,117,142,102,207,17,166,217,0,170,0,98,206,108]),Vn=new Uint8Array([54,38,178,117,142,102,207,17,166,217,0,170,0,98,206,108]),Nn=new Uint8Array([145,7,220,183,183,169,207,17,142,230,0,192,12,32,83,101]),On=new Uint8Array([64,158,105,248,77,91,207,17,168,253,0,128,95,92,68,43]),$n=new Uint8Array([192,239,25,188,77,91,207,17,168,253,0,128,95,92,68,43]),Hn=17444,Gn=17700,qn=28751,Gi={fixed:!1,fps:25,fps_num:25,fps_den:1},Wn=new Set([44,66,77,83,86,88,100,110,118,122,128,138,144,244]),zn={44:"CAVLC 4:4:4",66:"Baseline",77:"Main",83:"Scalable Baseline",86:"Scalable High",88:"Extended",100:"High",110:"High 10",118:"Multiview High",122:"High 4:2:2",128:"Stereo High",138:"Multiview Depth High",144:"High 4:4:4",244:"High 4:4:4 Predictive"},Kn={HEVC:"hevc",AV01:"av1",VP90:"vp9"},jn=new Set([19,20,21]),ee={u16:(o,e)=>o[e]|o[e+1]<<8,u32:(o,e)=>(o[e]|o[e+1]<<8|o[e+2]<<16|o[e+3]<<24)>>>0,u64:(o,e)=>ee.u32(o,e+4)*4294967296+ee.u32(o,e)},ut={u16:(o,e)=>o[e]<<8|o[e+1],u32:(o,e)=>(o[e]<<24|o[e+1]<<16|o[e+2]<<8|o[e+3])>>>0},yt=(o,e,t)=>{if(e+16>o.length)return!1;for(let i=0;i<16;i++)if(o[e+i]!==t[i])return!1;return!0},Xn=o=>{let e=o.length;for(;e>0&&o[e-1]===0;)e--;return e===o.length?o:o.subarray(0,e)},Yn=o=>String.fromCharCode(o&255,o>>8&255,o>>16&255,o>>24&255).toUpperCase().trim(),zr=(o,e,t)=>{let i=e>=0&&e<Oe.length?e:4;return new Uint8Array([o<<3|(i&14)>>1,(i&1)<<7|Math.max(0,Math.min(t,15))<<3])},Qn=[[1,1],[1,1],[1,0],[0,0]];function Kr(o){var r,n,a,s,l,u,c;if(!((r=o.sequence_header_data)!=null&&r.length))return null;let e=(a=Qn[(n=o.chroma_format)!=null?n:1])!=null?a:[1,1],t=(s=o.bit_depth)!=null?s:8,i=new Uint8Array(4+o.sequence_header_data.length);return i[0]=129,i[1]=((l=o.profile_idc)!=null?l:0)<<5|((u=o.level)!=null?u:0)&31,i[2]=((c=o.tier)!=null?c:0)<<7|(t>8?1:0)<<6|(t===12?1:0)<<5|(o.chroma_format===0?1:0)<<4|e[0]<<3|e[1]<<2,i.set(o.sequence_header_data,4),i}function jr(o,e,t,i,r,n=0){let a=o===2||o===3,s=e!=null?e:a?10:8,l=t!=null?t:a?9:1,u=i!=null?i:a?16:1,c=r!=null?r:a?9:1,h=new Uint8Array(12);return h[0]=1,h[4]=o,h[5]=31,h[6]=(s&15)<<4|2|n&1,h[7]=l,h[8]=u,h[9]=c,h}function Zn(o,e,t){if(o&&o.length>=19&&String.fromCharCode(...o.subarray(0,8))==="OpusHead")return o.subarray(8).slice();let i=new Uint8Array(19);return i.set([79,112,117,115,72,101,97,100,1,e||2]),new DataView(i.buffer).setUint32(12,t||48e3,!0),i.subarray(8)}var Xr=(o=0)=>({type:w.Audio,id:2,sequenceNumber:o,frames:[],length:0}),qi=(o=0)=>({type:w.Video,id:1,sequenceNumber:o,frames:[],length:0}),vt=class extends qr{constructor(t,i,r){super(t,i,r);d(this,"_asfMediaInfo");d(this,"_streams");d(this,"_stash");d(this,"_headerParsed");d(this,"_dataObjectParsed");d(this,"_asfAudioTrack");d(this,"_videoTrack");d(this,"_asfHasAudio",!0);d(this,"_asfHasVideo",!0);d(this,"_hasVideoMetaSent");d(this,"_hasAudioMetaSent");d(this,"_headerVideoWidth");d(this,"_headerVideoHeight");d(this,"_nalHeaders");d(this,"_headerAv1c");d(this,"_headerVp9c");d(this,"_headerAudioConfig");d(this,"_headerAudioChannels");d(this,"_headerAudioSampleRate");d(this,"_baseTimestamp");d(this,"_asfTimestampBase",0);d(this,"_asfDuration",0);d(this,"_hasReceivedFirstKeyframe");d(this,"_audioNextDts");d(this,"_lastAudioDts");d(this,"_audioFrameDuration");d(this,"_firstVideoPts");d(this,"_lastVideoPts");d(this,"_isAVCC");d(this,"_videoCodec");d(this,"_audioCodec");d(this,"_sentVideoConfig");d(this,"_audioBuffer");d(this,"_videoBuffer");this._initProperties(),this._asfHasAudio=t.hasAudioTrack,this._asfHasVideo=t.hasVideoTrack}_initProperties(){this._asfMediaInfo=new Ne,this._streams=new Array(128).fill(null),this._stash=null,this._headerParsed=this._dataObjectParsed=!1,this._asfAudioTrack=Xr(),this._videoTrack=qi(),this._hasVideoMetaSent=this._hasAudioMetaSent=!1,this._headerVideoWidth=this._headerVideoHeight=0,this._nalHeaders={vps:null,sps:null,pps:null},this._headerAv1c=this._headerVp9c=this._headerAudioConfig=null,this._headerAudioChannels=this._headerAudioSampleRate=0,this._baseTimestamp=null,this._asfTimestampBase=this._asfDuration=0,this._hasReceivedFirstKeyframe=!1,this._audioNextDts=this._lastAudioDts=null,this._audioFrameDuration=1024/44100*1e3,this._firstVideoPts=this._lastVideoPts=null,this._isAVCC=this._videoCodec=this._audioCodec=null,this._sentVideoConfig={},this._audioBuffer={mediaObjectNumber:null,totalSize:0,currentSize:0,chunks:[],pts:0,packetTimestamp:0},this._videoBuffer={mediaObjectNumber:null,totalSize:0,currentSize:0,chunks:[],pts:0,packetTimestamp:0,keyframe:!1,streamPosition:0}}destroy(){super.destroy(),this._initProperties()}bindDataSource(t){return t.onDataArrival=this.parseChunks.bind(this),this}resetMediaInfo(){this._asfMediaInfo=new Ne}get timestampBase(){return this._asfTimestampBase}set timestampBase(t){this._asfTimestampBase=t}get overridedDuration(){return this._asfDuration}set overridedDuration(t){this._asfDuration=t,this._asfMediaInfo.duration=t}set overridedHasAudio(t){this._asfHasAudio=t,this._asfMediaInfo.hasAudio=t}set overridedHasVideo(t){this._asfHasVideo=t,this._asfMediaInfo.hasVideo=t}get onTrackMetadata(){return super.onTrackMetadata}set onTrackMetadata(t){super.onTrackMetadata=t,this._nalHeaders.sps&&this._nalHeaders.pps&&this._sendVideoMetadataFromHeader(!0),this._headerAudioConfig&&(this._hasAudioMetaSent=!1,this._sendAudioMetadataFromHeader())}get onMediaInfo(){return super.onMediaInfo}set onMediaInfo(t){super.onMediaInfo=t,(!this._asfHasAudio||this._hasAudioMetaSent)&&(!this._asfHasVideo||this._hasVideoMetaSent)&&this._maybeEmitMediaInfo()}static probe(t){let i=new Uint8Array(t);return i.byteLength<28?{needMoreData:!0}:yt(i,12,Wr)?{match:!0,consumed:12,dataOffset:12,hasAudioTrack:!0,hasVideoTrack:!0}:{match:!1}}parseChunks(t,i){var u,c;let r=new Uint8Array(t),n=(c=(u=this._stash)==null?void 0:u.length)!=null?c:0,a=r;n>0&&(a=new Uint8Array(n+r.length),a.set(this._stash,0),a.set(r,n),this._stash=null);let s=0;if(!this._headerParsed){let h=this._parseHeader(a);if(h<0)return this._stash=a.slice(),t.byteLength;s=h,this._headerParsed=!0,this._sendAudioMetadataFromHeader()}if(!this._dataObjectParsed){if(s+50>a.length||!yt(a,s,Vn))return this._stash=a.slice(s),t.byteLength;if(ee.u64(a,s+16)<50)return this._stash=a.slice(s),t.byteLength;s+=50,this._dataObjectParsed=!0}let l=i-n;for(;s+4<=a.length;){let h=ee.u16(a,s),_=ee.u16(a,s+2);if(h===Gn){s=a.length;break}if(h!==Hn||_<=0||s+4+_>a.length)break;let m=this._parsePacket(a,s,l);if(m<=s||m>a.length)break;s=m}return this._stash=s<a.length?a.slice(s):null,this._emitTrackData(),t.byteLength}_emitTrackData(){this._asfHasVideo&&!this._hasVideoMetaSent?this.onTrackData(Xr(this._asfAudioTrack.sequenceNumber),qi(this._videoTrack.sequenceNumber)):this._hasVideoMetaSent||this._videoTrack.frames.length===0?this.onTrackData(this._asfAudioTrack,this._videoTrack):this.onTrackData(this._asfAudioTrack,qi(this._videoTrack.sequenceNumber))}_readVar(t,i,r,n){let a=(r&3)===3?4:r&3;if(i.offset+a>t.length)return i.error=!0,n;if(a===0)return n;let s=a===1?t[i.offset]:a===2?ee.u16(t,i.offset):ee.u32(t,i.offset);return i.offset+=a,s}_parseHeader(t){var a;if(t.length<64||!yt(t,12,Wr))return-1;let i=28,r=ee.u64(t,i);if(r<30||12+r>t.length)return-1;i+=8;let n=ee.u32(t,i);i+=6;for(let s=0;s<n;s++){if(i+24>t.length)return-1;let l=i+ee.u64(t,i+16);if(l>t.length)return-1;if(!yt(t,i,Nn)){i=l;continue}let u=i+24;if(u+54>l){i=l;continue}let c=ee.u32(t,u+40),h=ee.u16(t,u+48)&127,_=u+54;if(_+c>l){i=l;continue}if(yt(t,u,On)){if(h<128&&(this._streams[h]={type:"audio"}),c>=18){let m=_;this._audioCodec=ee.u16(t,m)===qn?"opus":"aac";let y=ee.u16(t,m+2),f=ee.u32(t,m+4),x=ee.u16(t,m+16);y>0&&(this._headerAudioChannels=y),f>0&&(this._headerAudioSampleRate=f),x>0&&m+18+x<=l&&(this._headerAudioConfig=t.slice(m+18,m+18+x))}}else if(yt(t,u,$n)&&c>=51){let m=_,y=ee.u16(t,m+9),f=m+11,x=ee.u32(t,f),b=ee.u32(t,f+4),v=Math.abs(ee.u32(t,f+8)|0),k=Yn(ee.u32(t,f+16));h<128&&(this._streams[h]={type:"video"}),this._videoCodec=(a=Kn[k])!=null?a:"h264";let F=b>0?b:ee.u32(t,m),O=v>0?v:ee.u32(t,m+4);F>0&&(this._headerVideoWidth=F),O>0&&(this._headerVideoHeight=O);let D=f+40,I=y-40;I>0&&D+I<=_+c&&this._extractVideoConfigFromExtraData(t.subarray(D,D+I)),this._sendVideoMetadataFromHeader()}i=l}return 12+r}_parsePacket(t,i,r){let n=ee.u16(t,i+2),a=i+4+n;if(a>t.length)return t.length;let s={offset:i+12,error:!1};if(s.offset>=t.length)return a;let l=t[s.offset++],u,c;if(l&128){let v=l&15;if(s.offset+v+2>t.length)return a;s.offset+=v,u=t[s.offset++],c=t[s.offset++]}else{if(u=l,s.offset>=t.length)return a;c=t[s.offset++]}let h=(u&1)!==0;this._readVar(t,s,u>>5,n),this._readVar(t,s,u>>1&3,0);let _=this._readVar(t,s,u>>3&3,0);if(s.error||s.offset+6>t.length)return a;let m=ee.u32(t,s.offset);s.offset+=6;let y=128,f=1;if(h){if(s.offset>=t.length)return a;y=t[s.offset++],f=y&63}let x=a-_;if(x<s.offset||x>a)return a;let b=s.offset;for(let v=0;v<f&&b<x;v++){let k=this._parsePayload(t,b,c,y,m,x,h,r);if(k<=b)break;b=k}return a}_parsePayload(t,i,r,n,a,s,l,u){let c={offset:i,error:!1},h=t[c.offset++],_=(h&128)!==0,m=h&127,y=this._readVar(t,c,r>>4,0),f=this._readVar(t,c,r>>2&3,0),x=this._readVar(t,c,r&3,0);if(c.error)return t.length;let b=0,v=a;if(x>=8){if(c.offset+x>t.length)return t.length;b=ee.u32(t,c.offset),v=ee.u32(t,c.offset+4),c.offset+=x}else x>0&&(c.offset+=x);let k=l?this._readVar(t,c,n>>6&3,0):s-c.offset;if(c.error||k<=0||(k=Math.min(k,s-c.offset),k<=0))return c.offset;let F=u+c.offset,O=t.subarray(c.offset,c.offset+k),D=m<128?this._streams[m]:null;return(D==null?void 0:D.type)==="audio"?this._handlePayloadBuffer(this._audioBuffer,y,b,f,O,v,a,!l,I=>this._parseAudio(I,this._audioBuffer.pts)):(D==null?void 0:D.type)==="video"&&this._handlePayloadBuffer(this._videoBuffer,y,b,f,O,v,a,!l,(I,S)=>{var V;return this._dispatchVideoFrame(I,S.pts,S.packetTimestamp,S.keyframe?1:0,(V=S.streamPosition)!=null?V:0)},{keyframe:_,streamPosition:F}),c.offset+k}_resetPayloadBuffer(t){t.mediaObjectNumber=null,t.currentSize=0,t.chunks=[]}_handlePayloadBuffer(t,i,r,n,a,s,l,u,c,h){if(t.mediaObjectNumber!==i&&(t.chunks.length&&c(this._concatChunks(t),t),t.mediaObjectNumber=i,t.totalSize=r,t.currentSize=0,t.chunks=[],t.pts=s,t.packetTimestamp=l,h&&(t.keyframe=h.keyframe,t.streamPosition=h.streamPosition)),n!==t.currentSize){this._resetPayloadBuffer(t);return}t.chunks.push(a),t.currentSize+=a.length,(t.totalSize>0&&t.currentSize>=t.totalSize||t.totalSize===0&&u)&&(c(this._concatChunks(t),t),this._resetPayloadBuffer(t))}_concatChunks(t){let i=t.chunks;if(!i.length)return new Uint8Array(0);if(i.length===1)return i[0];let r=new Uint8Array(t.currentSize),n=0;for(let a of i)r.set(a,n),n+=a.length;return r}_updateNalHeader(t,i,r){let n=Xn(i);if(r&&!r(n))return!1;let a=this._nalHeaders[t];return a&&Me(a,n)?!1:(this._nalHeaders[t]=new Uint8Array(n),!0)}_extractVideoConfigFromExtraData(t){if(!t.length)return;if(this._videoCodec==="av1"){this._headerAv1c=t.slice();return}if(this._videoCodec==="hevc"&&t[0]===1&&t.length>=23){this._isAVCC=!0;let r=23;for(let n=0,a=t[22];n<a&&!(r+3>t.length);n++){let s=t[r]&63,l=ut.u16(t,r+1);r+=3;for(let u=0;u<l&&!(r+2>t.length);u++){let c=ut.u16(t,r);if(r+=2,r+c>t.length)break;let h=t.subarray(r,r+c);s===32?this._updateNalHeader("vps",h):s===33?this._updateNalHeader("sps",h):s===34&&this._updateNalHeader("pps",h),r+=c}}return}else if(t[0]===1&&t.length>=7){this._isAVCC=!0;let r=6,n=t[5]&31;for(let a=0;a<n&&!(r+2>t.length);a++){let s=ut.u16(t,r);if(r+=2,r+s>t.length)break;this._updateNalHeader("sps",t.subarray(r,r+s)),r+=s}if(r<t.length){let a=t[r++];for(let s=0;s<a&&!(r+2>t.length);s++){let l=ut.u16(t,r);if(r+=2,r+l>t.length)break;this._updateNalHeader("pps",t.subarray(r,r+l)),r+=l}}return}let i=this._videoCodec==="hevc";for(let{type:r,data:n}of this._getNalUnitsFromExtra(t,i))i?r===32&&!this._nalHeaders.vps?this._updateNalHeader("vps",n):r===33&&!this._nalHeaders.sps?this._updateNalHeader("sps",n):r===34&&!this._nalHeaders.pps&&this._updateNalHeader("pps",n):r===7&&!this._nalHeaders.sps?this._updateNalHeader("sps",n):r===8&&!this._nalHeaders.pps&&this._updateNalHeader("pps",n)}_getNalUnitsFromExtra(t,i){let r=[];if(t.length<4)return r;if(t[0]===0&&t[1]===0&&(t[2]===1||t[2]===0&&t[3]===1)){let a=i?new Pt(t):new Ut(t),s;for(;s=a.readNextNaluPayload();)r.push({type:s.type,data:s.data})}else{let a=0,s=!0,l=[];for(;a+4<=t.length;){let u=ut.u32(t,a);if(!u||a+4+u>t.length){s=!1;break}let c=t.subarray(a+4,a+4+u);l.push({type:i?c[0]>>1&63:c[0]&31,data:c}),a+=4+u}if(s&&l.length>0&&a===t.length)r.push(...l);else{let u=i?t[0]>>1&63:t[0]&31;r.push({type:u,data:t})}}return r}_isAnnexB(t){if(this._isAVCC!==null)return!this._isAVCC;if(t.length<4)return!1;let i=t[0]===0&&t[1]===0&&(t[2]===1||t[2]===0&&t[3]===1);return this._isAVCC=!i&&ut.u32(t,0)+4<=t.length,!this._isAVCC}_getNalUnits(t,i){let r=[];if(this._isAnnexB(t)){let n=i?new Pt(t):new Ut(t),a;for(;a=n.readNextNaluPayload();)r.push({type:a.type,data:a.data})}else for(let n=0;n+4<=t.length;){let a=ut.u32(t,n);if(!a||n+4+a>t.length)break;let s=t.subarray(n+4,n+4+a);r.push({type:i?s[0]>>1&63:s[0]&31,data:s}),n+=4+a}return r}_configUnchanged(t,i){let r=this._sentVideoConfig[t];return!!(this._hasVideoMetaSent&&r&&Me(r,i))}_registerVideoMetadata(t,i,r,n){this.onTrackMetadata(t),this.onVideoTracksDiscovered&&this.onVideoTracksDiscovered([t]),this._hasVideoMetaSent=!0;let a=this._asfMediaInfo;a.videoCodec=i,a.width=r,a.height=n,t.profile&&(a.profile=t.profile),t.level&&(a.level=t.level),t.chromaFormat!==void 0&&(a.chromaFormat=t.chromaFormat===1?"4:2:0":t.chromaFormat===2?"4:2:2":t.chromaFormat===3?"4:4:4":"4:2:0"),i.startsWith("vp09")&&(a.refFrames=3),this._maybeEmitMediaInfo()}_sendVideoMetadataFromHeader(t=!1){var n,a,s,l,u,c,h,_,m,y,f,x,b,v,k,F,O,D,I,S,V,A,U,Q,Z,W,ye,_e,j,z,H,ve;if(this._hasVideoMetaSent&&!t)return;let i=null,r="";if(this._videoCodec==="av1"&&this._headerAv1c){let T=this._headerAv1c;if((T[0]&127)!==1){let le=Ue.parseOBUs(T);if(le){let C=Kr(le);C&&(this._headerAv1c=T=C)}}if(this._configUnchanged("av1c",T))return;let B=Ue.parseOBUs(T.subarray(4));if(!B)return;this._sentVideoConfig.av1c=T,r=B.codec_mimetype;let P=(a=(n=B.codec_size)==null?void 0:n.width)!=null?a:this._headerVideoWidth,re=(l=(s=B.codec_size)==null?void 0:s.height)!=null?l:this._headerVideoHeight;i={codecType:5,codec:r,codecConfig:T,codecWidth:P,codecHeight:re,presentWidth:(c=(u=B.present_size)==null?void 0:u.width)!=null?c:P,presentHeight:(_=(h=B.present_size)==null?void 0:h.height)!=null?_:re,profile:B.profile_string,level:B.level_string,bitDepth:B.bit_depth,chromaFormat:B.chroma_format,sarRatio:(m=B.sar_ratio)!=null?m:{width:1,height:1},frameRate:B.frame_rate.fixed?B.frame_rate:Gi}}else if(this._videoCodec==="vp9"){if(!this._headerVp9c||this._headerVp9c.length<12)return;let T=this._headerVp9c,B=4,P=T[B],re=T[B+1],le=(T[B+2]&240)>>4,C=(T[B+2]&14)>>1,Qe=T[B+2]&1,De=T[B+3],pe=T[B+4],ge=T.length>=B+6?T[B+5]:2;if((P===2||le===10||pe===16||pe===18||De===9)&&(P<2&&(P=2),le<10&&(le=10),(De===1||De===2||De===0)&&(De=9),(pe===1||pe===2||pe===0)&&(pe=16),(ge===1||ge===2||ge===0)&&(ge=9),T=jr(P,le,De,pe,ge,Qe),this._headerVp9c=T),this._configUnchanged("vp9c",T)&&!t)return;let Ze=this._headerVideoWidth,ht=this._headerVideoHeight;if(Ze<=0||ht<=0)return;let Fe=_t=>`${_t}`.padStart(2,"0");r=`vp09.${Fe(P)}.${Fe(re)}.${Fe(le)}.${Fe(C)}.${Fe(De)}.${Fe(pe)}.${Fe(ge)}.${Fe(Qe)}`,this._sentVideoConfig.vp9c=T,i={codecType:4,codec:r,codecConfig:T,codecWidth:Ze,codecHeight:ht,presentWidth:Ze,presentHeight:ht,profile:`${P}`,level:`${re}`,bitDepth:le,chromaFormat:C,colorRange:Qe,colourPrimaries:De,transferCharacteristics:pe,matrixCoefficients:ge}}else if(this._videoCodec==="hevc"&&this._nalHeaders.vps&&this._nalHeaders.sps&&this._nalHeaders.pps)try{let T=xt.parseSPS(this._nalHeaders.sps),B={parallelismType:1},P={num_temporal_layers:1,temporal_id_nested:!0};try{B=xt.parsePPS(this._nalHeaders.pps)}catch(Qe){}try{P=xt.parseVPS(this._nalHeaders.vps)}catch(Qe){}let re=new ii(this._nalHeaders.vps,this._nalHeaders.sps,this._nalHeaders.pps,{configurationVersion:1,general_profile_space:(y=T.general_profile_space)!=null?y:0,general_tier_flag:T.general_tier_flag?1:0,general_profile_idc:(f=T.profile_idc)!=null?f:1,general_profile_compatibility_flags_1:(x=T.general_profile_compatibility_flags_1)!=null?x:0,general_profile_compatibility_flags_2:(b=T.general_profile_compatibility_flags_2)!=null?b:0,general_profile_compatibility_flags_3:(v=T.general_profile_compatibility_flags_3)!=null?v:0,general_profile_compatibility_flags_4:(k=T.general_profile_compatibility_flags_4)!=null?k:0,general_constraint_indicator_flags_1:(F=T.general_constraint_indicator_flags_1)!=null?F:0,general_constraint_indicator_flags_2:(O=T.general_constraint_indicator_flags_2)!=null?O:0,general_constraint_indicator_flags_3:(D=T.general_constraint_indicator_flags_3)!=null?D:0,general_constraint_indicator_flags_4:(I=T.general_constraint_indicator_flags_4)!=null?I:0,general_constraint_indicator_flags_5:(S=T.general_constraint_indicator_flags_5)!=null?S:0,general_constraint_indicator_flags_6:(V=T.general_constraint_indicator_flags_6)!=null?V:0,general_level_idc:(A=T.general_level_idc)!=null?A:90,min_spatial_segmentation_idc:(U=T.min_spatial_segmentation_idc)!=null?U:0,parallelismType:(Q=B.parallelismType)!=null?Q:1,chroma_format_idc:(Z=T.chroma_format_idc)!=null?Z:1,bit_depth_luma_minus8:(W=T.bit_depth_luma_minus8)!=null?W:0,bit_depth_chroma_minus8:(ye=T.bit_depth_chroma_minus8)!=null?ye:0,constant_frame_rate:(_e=T.constant_frame_rate)!=null?_e:0,num_temporal_layers:(j=P.num_temporal_layers)!=null?j:1,temporal_id_nested:(z=P.temporal_id_nested)!=null?z:!0}).getData();if(this._configUnchanged("hvcc",re))return;this._sentVideoConfig.hvcc=re,r=T.codec_mimetype;let le=T.codec_size.width,C=T.codec_size.height;i={codecType:2,codec:r,codecConfig:re,codecWidth:le,codecHeight:C,presentWidth:T.present_size.width,presentHeight:T.present_size.height,profile:T.profile_string,level:T.level_string,bitDepth:T.bit_depth,chromaFormat:T.chroma_format,sarRatio:T.sar_ratio,frameRate:T.frame_rate.fixed?T.frame_rate:Gi}}catch(T){return}else{let T=this._nalHeaders.sps,B=this._nalHeaders.pps;if(!T||!B)return;let P;try{P=Zt.parseSPS(T)}catch(Qe){return}if(!((H=P==null?void 0:P.codec_size)!=null&&H.width)||!P.codec_size.height)return;let re=new ei(T,B,P).getData();if(this._configUnchanged("avcc",re))return;this._sentVideoConfig.avcc=re,r=`avc1.${T[1].toString(16).padStart(2,"0")}${T[2].toString(16).padStart(2,"0")}${T[3].toString(16).padStart(2,"0")}`;let le=P.codec_size.width,C=P.codec_size.height;i={codecType:1,codec:r,codecConfig:re,codecWidth:le,codecHeight:C,presentWidth:le,presentHeight:C,profile:(ve=zn[T[1]])!=null?ve:`Profile ${T[1]}`,level:(T[3]/10).toFixed(1),chromaFormat:P.chroma_format_idc}}if(i){let T=K({type:w.Video,trackId:1,timescale:1e3,duration:0,colorRange:0,colourPrimaries:1,transferCharacteristics:1,matrixCoefficients:1,sarRatio:{width:1,height:1},frameRate:Gi,refFrameDuration:40},i);this._registerVideoMetadata(T,r,i.codecWidth,i.codecHeight)}}_parseAudioSpecificConfig(t){try{let i=new gt(new pt(t));return{config:new Uint8Array(i.config),samplingRate:i.sampling_rate,channelCount:i.channel_count,codec:i.codec_mimetype,originalCodec:i.original_codec_mimetype}}catch(i){return null}}_registerAudioMetadata(t,i,r,n,a){let s=this._audioCodec==="opus",l={type:w.Audio,codecType:s?3:2,codec:t,codecConfig:r,trackId:2,timescale:1e3,duration:0,audioSampleRate:s?48e3:n,channelCount:a,originalCodec:i,preSkipSamples:s?ee.u16(r,2):0,inputSampleRate:n,outputGain:0,bitsPerSample:16,littleEndian:!1,refFrameDuration:s?20:1024/n*1e3};if(s){let c=new DataView(r.buffer,r.byteOffset,r.byteLength);l.inputSampleRate=c.getUint32(4,!0),l.outputGain=c.getInt16(8,!0)}this.onTrackMetadata(l),this._hasAudioMetaSent=!0,this._audioFrameDuration=l.refFrameDuration;let u=this._asfMediaInfo;u.audioCodec=l.originalCodec,u.audioSampleRate=l.audioSampleRate,u.audioChannelCount=l.channelCount,this._maybeEmitMediaInfo()}_sendAudioMetadataFromHeader(){var t,i,r;if(!(this._hasAudioMetaSent||!this._audioCodec)){if(this._audioCodec==="opus"){let n=Zn(this._headerAudioConfig,this._headerAudioChannels,this._headerAudioSampleRate);this._registerAudioMetadata("opus","opus",n,this._headerAudioSampleRate||48e3,this._headerAudioChannels||2);return}if((t=this._headerAudioConfig)!=null&&t.length){let n=this._parseAudioSpecificConfig(this._headerAudioConfig);if(n){this._registerAudioMetadata(n.codec,n.originalCodec,n.config,n.samplingRate,n.channelCount);return}}if(this._headerAudioChannels>0&&this._headerAudioSampleRate>0){let n=Oe.indexOf(this._headerAudioSampleRate),a=zr(2,n>=0?n:4,this._headerAudioChannels),s=this._parseAudioSpecificConfig(a);this._registerAudioMetadata((i=s==null?void 0:s.codec)!=null?i:"mp4a.40.2",(r=s==null?void 0:s.originalCodec)!=null?r:"mp4a.40.2",a,this._headerAudioSampleRate,this._headerAudioChannels)}}}_parseAudio(t,i){var r,n,a,s,l;if(t.length){if(this._audioCodec==="aac"&&t.length>=7&&t[0]===255&&(t[1]&240)===240){let u=0;for(let c=0;c+7<=t.length&&!(t[c]!==255||(t[c+1]&240)!==240);){let h=((t[c+2]&192)>>6)+1,_=(t[c+2]&60)>>2,m=(t[c+2]&1)<<2|(t[c+3]&192)>>6,y=(t[c+3]&3)<<11|t[c+4]<<3|t[c+5]>>5&7,f=t[c+1]&1?7:9;if(y<f||c+y>t.length)break;if(!this._hasAudioMetaSent){let x=zr(h,_,m),b=this._parseAudioSpecificConfig(x);this._registerAudioMetadata((r=b==null?void 0:b.originalCodec)!=null?r:`mp4a.40.${h}`,(n=b==null?void 0:b.originalCodec)!=null?n:`mp4a.40.${h}`,x,(s=(a=b==null?void 0:b.samplingRate)!=null?a:Oe[_])!=null?s:44100,(l=b==null?void 0:b.channelCount)!=null?l:m)}this._pushAudioFrame(t.subarray(c+f,c+y),i+u*this._audioFrameDuration),u++,c+=y}return}this._hasAudioMetaSent||this._sendAudioMetadataFromHeader(),this._pushAudioFrame(t,i)}}_pushAudioFrame(t,i){var s,l,u;if(!t.length||this._asfHasVideo&&!this._hasReceivedFirstKeyframe)return;this._baseTimestamp===null&&(this._baseTimestamp=i);let r=(l=(s=this._firstVideoPts)!=null?s:this._baseTimestamp)!=null?l:i,n=Math.max(0,i-r),a=(u=this._audioNextDts)!=null?u:this._asfTimestampBase+n;this._audioNextDts!==null&&Math.abs(this._asfTimestampBase+n-a)>500&&(a=this._asfTimestampBase+n),this._lastAudioDts!==null&&a<=this._lastAudioDts&&(a=this._lastAudioDts+1),this._lastAudioDts=a,this._audioNextDts=a+this._audioFrameDuration,this._asfAudioTrack.frames.push({unit:t,length:t.length,dts:a,pts:a}),this._asfAudioTrack.length+=t.length}_maybeEmitMediaInfo(){let t=this._asfMediaInfo;t.hasAudio=this._asfHasAudio,t.hasVideo=this._asfHasVideo,(!t.hasAudio||this._hasAudioMetaSent)&&(!t.hasVideo||this._hasVideoMetaSent)&&this.onMediaInfo(t)}_requireKeyframe(t,i,r){return this._hasReceivedFirstKeyframe?!0:t?(this._hasReceivedFirstKeyframe=!0,this._baseTimestamp===null&&(this._baseTimestamp=r),this._firstVideoPts===null&&(this._firstVideoPts=i),!0):!1}_getVideoTimestamp(t){let i=this._firstVideoPts!==null?Math.max(0,t-this._firstVideoPts):0;return this._lastVideoPts!==null&&i<=this._lastVideoPts&&(i=this._lastVideoPts+1),this._lastVideoPts=i,this._asfTimestampBase+i}_pushVideoFrame(t,i,r,n,a,s,l,u){let c={fileposition:t,dts:i,pts:r,cts:n,isKeyframe:a,units:s,length:l};u&&(c.rawData=u),this._videoTrack.frames.push(c),this._videoTrack.length+=l}_parseNalVideo(t,i,r,n,a,s){let l=(n&1)!==0;if(!this._requireKeyframe(l,i,r))return;let u=[],c=0,h=!1,_=!1;for(let{type:f,data:x}of this._getNalUnits(t,s)){if(s){if(f===32&&this._updateNalHeader("vps",x))h=!0;else if(f===33&&this._updateNalHeader("sps",x))h=!0;else if(f===34&&this._updateNalHeader("pps",x))h=!0;else if(f===35)continue;jn.has(f)&&(_=!0)}else{if(f===7&&this._updateNalHeader("sps",x,v=>Wn.has(v[1])))h=!0;else if(f===8&&this._updateNalHeader("pps",x))h=!0;else if(f===9)continue;f===5&&(_=!0)}let b=s?new ti({type:f,data:x}):new Jt({type:f,data:x});u.push({type:f,data:b.data}),c+=b.data.length}if(_&&(l=!0),(s?this._nalHeaders.vps&&this._nalHeaders.sps&&this._nalHeaders.pps:this._nalHeaders.sps&&this._nalHeaders.pps)&&(!this._hasVideoMetaSent||h)&&this._sendVideoMetadataFromHeader(h),!this._hasVideoMetaSent||!u.length)return;let y=this._getVideoTimestamp(i);this._pushVideoFrame(a,y,y,0,l,u,c)}_parseAV1(t,i,r,n,a){let s=(n&1)!==0;try{let u=Ue.parseOBUs(t);u&&(this._headerAv1c||(this._headerAv1c=Kr(u)),u.keyframe&&(s=!0))}catch(u){}if(!this._requireKeyframe(s,i,r)||(this._headerAv1c&&!this._hasVideoMetaSent&&this._sendVideoMetadataFromHeader(),!this._hasVideoMetaSent))return;let l=this._getVideoTimestamp(i);this._pushVideoFrame(a,l,l,0,s,[{type:0,data:t}],t.length,t)}_parseVP9(t,i,r,n,a){let s=(n&1)!==0;try{let u=bt.parseVp9Header(t);if(u.isValid){s=!0,u.width>0&&(this._headerVideoWidth=u.width),u.height>0&&(this._headerVideoHeight=u.height);let c=u.profile||0,h=u.bitDepth||(c>=2?10:8);(u.colorSpace===5||h===10)&&(c<2&&(c=2),h<10&&(h=10));let _=1,m=1,y=1;(u.colorSpace===5||c===2)&&(_=9,m=16,y=9);let f=jr(c,h,_,m,y,u.colorRange);(!this._headerVp9c||!Me(this._headerVp9c,f))&&(this._headerVp9c=f,this._hasVideoMetaSent=!1)}}catch(u){}if(!this._requireKeyframe(s,i,r)||(this._headerVp9c&&!this._hasVideoMetaSent&&this._sendVideoMetadataFromHeader(!0),!this._hasVideoMetaSent))return;let l=this._getVideoTimestamp(i);this._pushVideoFrame(a,l,l,0,s,[{type:s?0:1,data:t}],t.length)}_dispatchVideoFrame(t,i,r,n,a){switch(this._videoCodec){case"hevc":case"h264":this._parseNalVideo(t,i,r,n,a,this._videoCodec==="hevc");break;case"av1":this._parseAV1(t,i,r,n,a);break;case"vp9":this._parseVP9(t,i,r,n,a);break}}};var p=class p{static init(){p.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],hvc1:[],hvcC:[],av01:[],av1C:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],chnl:[],".mp3":[],Opus:[],dOps:[],fLaC:[],dfLa:[],ipcm:[],pcmC:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[],vp08:[],vp09:[],vpcC:[],colr:[]};for(let t in p.types)p.types.hasOwnProperty(t)&&(p.types[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)]);let e=p.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,105,115,111,54,109,112,52,49]),e.FTYP_AV1=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,105,115,111,54,97,118,48,49,109,112,52,49]),e.FTYP_VP9=new Uint8Array([118,112,48,57,0,0,0,0,118,112,48,57,105,115,111,109,105,115,111,54]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e,...t){let i=8,r,n=t.length;for(let s=0;s<n;s++)i+=t[s].byteLength;r=new Uint8Array(i),r[0]=i>>>24&255,r[1]=i>>>16&255,r[2]=i>>>8&255,r[3]=i&255,r.set(e,4);let a=8;for(let s=0;s<n;s++)r.set(t[s],a),a+=t[s].byteLength;return r}static generateInitSegment(e){let t=p.constants.FTYP;e.type==="video"&&e.codec&&(e.codec.startsWith("av01")?t=p.constants.FTYP_AV1:e.codec.startsWith("vp09")&&(t=p.constants.FTYP_VP9));let i=p.box(p.types.ftyp,t),r=p.moov(e),n=new Uint8Array(i.byteLength+r.byteLength);return n.set(i,0),n.set(r,i.byteLength),n}static moov(e){let t=p.mvhd(e.timescale,e.duration),i=p.trak(e),r=p.mvex(e);return p.box(p.types.moov,t,i,r)}static mvhd(e,t){return p.box(p.types.mvhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,e&255,t>>>24&255,t>>>16&255,t>>>8&255,t&255,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return p.box(p.types.trak,p.tkhd(e),p.mdia(e))}static tkhd(e){let t=e.trackId,i=e.duration,r=(e.presentWidth||e.codecWidth||0)>>>0,n=(e.presentHeight||e.codecHeight||0)>>>0;return p.box(p.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,t&255,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,i&255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,r>>>8&255,r&255,0,0,n>>>8&255,n&255,0,0]))}static mdia(e){return p.box(p.types.mdia,p.mdhd(e),p.hdlr(e),p.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return p.box(p.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,t&255,i>>>24&255,i>>>16&255,i>>>8&255,i&255,85,196,0,0]))}static hdlr(e){let t=null;return e.type==="audio"?t=p.constants.HDLR_AUDIO:t=p.constants.HDLR_VIDEO,p.box(p.types.hdlr,t)}static minf(e){let t=null;return e.type==="audio"?t=p.box(p.types.smhd,p.constants.SMHD):t=p.box(p.types.vmhd,p.constants.VMHD),p.box(p.types.minf,t,p.dinf(),p.stbl(e))}static dinf(){return p.box(p.types.dinf,p.box(p.types.dref,p.constants.DREF))}static stbl(e){return p.box(p.types.stbl,p.stsd(e),p.box(p.types.stts,p.constants.STTS),p.box(p.types.stsc,p.constants.STSC),p.box(p.types.stsz,p.constants.STSZ),p.box(p.types.stco,p.constants.STCO))}static stsd(e){return e.type==="audio"?e.codec==="mp3"?p.box(p.types.stsd,p.constants.STSD_PREFIX,p.mp3(e)):e.codec==="ac-3"?p.box(p.types.stsd,p.constants.STSD_PREFIX,p.ac3(e)):e.codec==="ec-3"?p.box(p.types.stsd,p.constants.STSD_PREFIX,p.ec3(e)):e.codec==="opus"?p.box(p.types.stsd,p.constants.STSD_PREFIX,p.Opus(e)):e.codec=="flac"?p.box(p.types.stsd,p.constants.STSD_PREFIX,p.fLaC(e)):e.codec=="ipcm"?p.box(p.types.stsd,p.constants.STSD_PREFIX,p.ipcm(e)):p.box(p.types.stsd,p.constants.STSD_PREFIX,p.mp4a(e)):e.type==="video"&&e.codec.startsWith("hvc1")?p.box(p.types.stsd,p.constants.STSD_PREFIX,p.hvc1(e)):e.type==="video"&&e.codec.startsWith("av01")?p.box(p.types.stsd,p.constants.STSD_PREFIX,p.av01(e)):e.type==="video"&&e.codec.startsWith("vp09")?p.box(p.types.stsd,p.constants.STSD_PREFIX,p.vp09(e)):p.box(p.types.stsd,p.constants.STSD_PREFIX,p.avc1(e))}static mp3(e){let t=e.channelCount,i=e.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,i&255,0,0]);return p.box(p.types[".mp3"],r)}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,i&255,0,0]);return p.box(p.types.mp4a,r,p.esds(e))}static ac3(e){let t=e.channelCount,i=e.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,i&255,0,0]);return p.box(p.types["ac-3"],r,p.box(p.types.dac3,new Uint8Array(e.codecConfig)))}static ec3(e){let t=e.channelCount,i=e.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,i&255,0,0]);return p.box(p.types["ec-3"],r,p.box(p.types.dec3,new Uint8Array(e.codecConfig)))}static esds(e){var h;let t=Array.from(e.codecConfig||[]),i=t.length,r=_=>[128|_>>>21&127,128|_>>>14&127,128|_>>>7&127,_&127],n=5+i,a=6,s=13+n,l=8+s+a,u=Math.max(0,Math.trunc((h=e.bitRate)!=null?h:0)),c=new Uint8Array([0,0,0,0,3,...r(l),e.trackId>>>8&255,e.trackId&255,0,4,...r(s),64,21,0,0,0,u>>>24&255,u>>>16&255,u>>>8&255,u&255,u>>>24&255,u>>>16&255,u>>>8&255,u&255,5].concat([...r(i)]).concat(t).concat([6,...r(1),2]));return p.box(p.types.esds,c)}static Opus(e){let t=e.channelCount,i=e.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,i&255,0,0]);return p.box(p.types.Opus,r,p.dOps(e))}static dOps(e){let t=e.channelCount,i=e.channelConfigCode,r=e.audioSampleRate;if(e.codecConfig){let s=new Uint8Array(e.codecConfig).slice(),l=new DataView(s.buffer);return l.setUint8(0,0),l.setUint16(2,e.preSkipSamples,!1),l.setUint32(4,e.inputSampleRate,!1),l.setUint16(8,e.outputGain,!1),p.box(p.types.dOps,s)}let n=[];switch(i){case 1:case 2:n=[0];break;case 0:n=[255,1,1,0,1];break;case 128:n=[255,2,0,0,1];break;case 3:n=[1,2,1,0,2,1];break;case 4:n=[1,2,2,0,1,2,3];break;case 5:n=[1,3,2,0,4,1,2,3];break;case 6:n=[1,4,2,0,4,1,2,3,5];break;case 7:n=[1,4,2,0,4,1,2,3,5,6];break;case 8:n=[1,5,3,0,6,1,2,3,4,5,7];break;case 130:n=[1,1,2,0,1];break;case 131:n=[1,1,3,0,1,2];break;case 132:n=[1,1,4,0,1,2,3];break;case 133:n=[1,1,5,0,1,2,3,4];break;case 134:n=[1,1,6,0,1,2,3,4,5];break;case 135:n=[1,1,7,0,1,2,3,4,5,6];break;case 136:n=[1,1,8,0,1,2,3,4,5,6,7];break}let a=new Uint8Array([0,t,0,0,r>>>24&255,r>>>17&255,r>>>8&255,r>>>0&255,0,0,...n]);return p.box(p.types.dOps,a)}static fLaC(e){let t=e.channelCount,i=Math.min(e.audioSampleRate,65535),r=e.bitsPerSample,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,r,0,0,0,0,i>>>8&255,i&255,0,0]);return p.box(p.types.fLaC,n,p.dfLa(e))}static dfLa(e){let t=new Uint8Array([0,0,0,0,...e.codecConfig]);return p.box(p.types.dfLa,t)}static ipcm(e){let t=e.channelCount,i=Math.min(e.audioSampleRate,65535),r=e.bitsPerSample,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,r,0,0,0,0,i>>>8&255,i&255,0,0]);return e.channelCount===1?p.box(p.types.ipcm,n,p.pcmC(e)):p.box(p.types.ipcm,n,p.chnl(e),p.pcmC(e))}static chnl(e){let t=new Uint8Array([0,0,0,0,1,e.channelCount,0,0,0,0,0,0,0,0]);return p.box(p.types.chnl,t)}static pcmC(e){let t=e.littleEndian?1:0,i=e.bitsPerSample,r=new Uint8Array([0,0,0,0,t,i]);return p.box(p.types.pcmC,r)}static avc1(e){let t=e.codecConfig,i=e.codecWidth,r=e.codecHeight,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,i&255,r>>>8&255,r&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return p.box(p.types.avc1,n,p.box(p.types.avcC,t))}static hvc1(e){let t=e.codecConfig,i=e.codecWidth,r=e.codecHeight,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,i&255,r>>>8&255,r&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return p.box(p.types.hvc1,n,p.box(p.types.hvcC,t))}static buildVp9CodecConfig(e){let t=Number.isFinite(Number(e.profile))?Number(e.profile):0,i=Number.isFinite(Number(e.level))?Number(e.level):10,r=Number.isFinite(e.bitDepth)?e.bitDepth:8,n=Number.isFinite(e.chromaFormat)?e.chromaFormat:1,a=e.colorRange?1:0,s=Number.isFinite(e.colourPrimaries)?e.colourPrimaries:1,l=Number.isFinite(e.transferCharacteristics)?e.transferCharacteristics:1,u=Number.isFinite(e.matrixCoefficients)?e.matrixCoefficients:1;return new Uint8Array([1,0,0,0,t&255,i&255,(r&15)<<4|(n&7)<<1|a&1,s&255,l&255,u&255,0,0])}static normalizeVp9CodecConfig(e){let i=new Uint8Array(e);if(i.length===12)return i;if(i.length===9){let r=new Uint8Array(12);return r[0]=i[0]||1,r.set(i.subarray(1,9),4),r}if(i.length===8){let r=new Uint8Array(12);return r[0]=1,r.set(i,4),r}if(i.length===7){let r=new Uint8Array(12);return r[0]=i[0]||1,r.set(i.subarray(1,7),4),r}return null}static vp09(e){let t=e.codecConfig?p.normalizeVp9CodecConfig(e.codecConfig):null,i=e.codecWidth||e.presentWidth||192,r=e.codecHeight||e.presentHeight||108;t||(t=p.buildVp9CodecConfig(e));let n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,i&255,r>>>8&255,r&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]),a=[p.box(p.types.vpcC,t)],s=p.colr(e);return s&&a.push(s),p.box(p.types.vp09,n,...a)}static colr(e){let t=e.colourPrimaries,i=e.transferCharacteristics,r=e.matrixCoefficients,n=l=>Number.isFinite(l)&&l!==2;if(!n(t)||!n(i)||!n(r))return null;let a=e.colorRange?128:0,s=new Uint8Array([110,99,108,120,t>>>8&255,t&255,i>>>8&255,i&255,r>>>8&255,r&255,a]);return p.box(p.types.colr,s)}static av01(e){let t=e.codecConfig,i=e.codecWidth||192,r=e.codecHeight||108,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,i&255,r>>>8&255,r&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return p.box(p.types.av01,n,p.box(p.types.av1C,t))}static mvex(e){return p.box(p.types.mvex,p.trex(e))}static trex(e){let t=e.trackId,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,t&255,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return p.box(p.types.trex,i)}static moof(e,t){return p.box(p.types.moof,p.mfhd(e.sequenceNumber),p.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,e&255]);return p.box(p.types.mfhd,t)}static traf(e,t){let i=e.id,r=p.box(p.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,i&255])),n=p.box(p.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,t&255])),a=p.sdtp(e),s=p.trun(e,a.byteLength+16+16+8+16+8+8);return p.box(p.types.traf,r,n,s,a)}static sdtp(e){let t=e.frames||[],i=t.length,r=new Uint8Array(4+i);for(let n=0;n<i;n++){let a=t[n].flags;r[n+4]=a.isLeading<<6|a.dependsOn<<4|a.isDependedOn<<2|a.hasRedundancy}return p.box(p.types.sdtp,r)}static trun(e,t){let i=e.frames||[],r=i.length,n=!1;for(let c=0;c<r;c++)if(i[c].cts!==0){n=!0;break}let a=n?16:12,s=12+a*r,l=new Uint8Array(s);t+=8+s;let u=n?3841:1793;l.set([u>>>24&255,u>>>16&255,u>>>8&255,u&255,r>>>24&255,r>>>16&255,r>>>8&255,r&255,t>>>24&255,t>>>16&255,t>>>8&255,t&255],0);for(let c=0;c<r;c++){let h=i[c].duration,_=i[c].size,m=i[c].flags,y=i[c].cts,f=[h>>>24&255,h>>>16&255,h>>>8&255,h&255,_>>>24&255,_>>>16&255,_>>>8&255,_&255,m.isLeading<<2|m.dependsOn,m.isDependedOn<<6|m.hasRedundancy<<4|m.isNonSync,0,0];n&&f.push(y>>>24&255,y>>>16&255,y>>>8&255,y&255),l.set(f,12+a*c)}return p.box(p.types.trun,l)}static mdat(e){return p.box(p.types.mdat,e)}};d(p,"types"),d(p,"constants");var si=p;si.init();var ct=si;var Wi=class{static getSilentFrame(e,t){if(e==="mp4a.40.2"){if(t===1)return new Uint8Array([0,200,0,128,35,128]);if(t===2)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(t===3)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(t===4)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(t===5)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(t===6)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(t===1)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(t===2)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(t===3)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}return null}},zi=Wi;function tt(o){return`${Math.max(0,Math.trunc(o))}`.padStart(2,"0")}function Ki(o){return Number.isFinite(o)&&o!==2}function Jn(o){let e=Number.parseInt(o.profile,10),t=Number.parseInt(o.level,10),i=o.bitDepth;if(!Number.isFinite(e)||!Number.isFinite(t)||!Number.isFinite(i))return o.codec;let r=["vp09",tt(e),tt(t),tt(i)];return!Number.isFinite(o.chromaFormat)||!Ki(o.colourPrimaries)||!Ki(o.transferCharacteristics)||!Ki(o.matrixCoefficients)||!Number.isFinite(o.colorRange)?r.join("."):r.concat([tt(o.chromaFormat),tt(o.colourPrimaries),tt(o.transferCharacteristics),tt(o.matrixCoefficients),tt(o.colorRange?1:0)]).join(".")}function ea(o){return o?o instanceof Uint8Array?o:ArrayBuffer.isView(o)?new Uint8Array(o.buffer,o.byteOffset,o.byteLength):o instanceof ArrayBuffer?new Uint8Array(o):typeof o.length=="number"?Uint8Array.from(o):null:null}function Yr(o,e=16){let t=ea(o);return!t||t.byteLength===0?"empty":Array.from(t.subarray(0,Math.min(e,t.byteLength))).map(i=>i.toString(16).padStart(2,"0")).join(" ")}var Ce=class Ce extends Ve{constructor(t){var i,r;super(t);d(this,"_externalVideoSegmentInfoList",null);d(this,"_pendingAudioInitSegment",null);d(this,"_pendingVideoInitSegment",null);d(this,"_forceFirstIDR");d(this,"_fillSilentAfterSeek");d(this,"_mp3UseMpegAudio");d(this,"_fillAudioTimestampGap");this._forceFirstIDR=!!(ie.chrome&&ie.version&&(ie.version.major<50||ie.version.major===50&&ie.version.build&&ie.version.build<2661)),this._fillSilentAfterSeek=((i=ie)==null?void 0:i.msedge)||((r=ie)==null?void 0:r.msie)||!1,this._mp3UseMpegAudio=!ie.firefox,this._fillAudioTimestampGap=this._config.fixAudioTimestampGap}destroy(){this._resetTimelineState(),this._clearMetadata(),this._pendingAudioInitSegment=null,this._pendingVideoInitSegment=null,this._resetCallbacks()}setExternalVideoSegmentInfoList(t){this._externalVideoSegmentInfoList=t}clear(){this._clearTrackState(),this._pendingAudioInitSegment=null,this._pendingVideoInitSegment=null}_getMp4TrackId(t,i){return Number.isFinite(i)&&i>0?i:t===w.Video?1:2}_getMp4Metadata(t){return te(K({},t),{trackId:this._getMp4TrackId(t.type,t.trackId)})}_describeMetadata(t){let i=`type=${t.type} codec=${t.codec} duration=${t.duration}`;return t.type===w.Audio&&(i+=` channels=${t.channelCount} sampleRate=${t.audioSampleRate}`,i+=` config=${Yr(t.codecConfig)}`),i}_describeInitSegment(t){return`type=${t.type} codec=${t.codec||"none"} container=${t.container} bytes=${t.data.byteLength} head=${Yr(t.data)}`}_onTrackData(t,i){this._dtsBase===1/0&&this._calculateDtsBase(t,i),this._pendingVideoInitSegment&&(g.v(Ce.TAG,`_onTrackData(): flushing pending video init before data batch, videoFrames=${i.frames.length} audioFrames=${t.frames.length} ${this._describeInitSegment(this._pendingVideoInitSegment)}`),this._onInitSegment(w.Video,this._pendingVideoInitSegment),this._pendingVideoInitSegment=null),this._pendingAudioInitSegment&&(g.v(Ce.TAG,`_onTrackData(): flushing pending audio init before data batch, videoFrames=${i.frames.length} audioFrames=${t.frames.length} ${this._describeInitSegment(this._pendingAudioInitSegment)}`),this._onInitSegment(w.Audio,this._pendingAudioInitSegment),this._pendingAudioInitSegment=null),this._remuxVideo(i,!1),this._remuxAudio(t,!1)}_onTrackMetadata(t){let i=null,r="mp4",n=t.codec,a=t.type;t.type===w.Audio?(this._isAudioMetadataDispatched=!0,this._audioMeta=t,t.codec==="mp3"&&this._mp3UseMpegAudio?(r="mpeg",n="",i=new Uint8Array):i=ct.generateInitSegment(this._getMp4Metadata(t))):(this._isVideoMetadataDispatched=!0,this._videoMeta=t,t.codecKind===ce.Vp9&&(n=Jn(t)),i=ct.generateInitSegment(this._getMp4Metadata(t)));let s={kind:0,type:a,data:new Uint8Array(i.buffer),codec:n,container:`${a}/${r}`,mediaDuration:t.duration};a===w.Audio?(this._pendingAudioInitSegment?g.v(Ce.TAG,`_onTrackMetadata(): replacing pending audio init ${this._describeInitSegment(this._pendingAudioInitSegment)} -> ${this._describeMetadata(t)}`):g.v(Ce.TAG,`_onTrackMetadata(): stashing audio init from metadata ${this._describeMetadata(t)}`),this._pendingAudioInitSegment=s):(this._pendingVideoInitSegment?g.v(Ce.TAG,`_onTrackMetadata(): replacing pending video init ${this._describeInitSegment(this._pendingVideoInitSegment)} -> ${this._describeMetadata(t)}`):g.v(Ce.TAG,`_onTrackMetadata(): stashing video init from metadata ${this._describeMetadata(t)}`),this._pendingVideoInitSegment=s)}flushStashedFrames(){let{audioTrack:t,videoTrack:i}=this._takeStashedFrames();this._remuxVideo(i,!0),this._remuxAudio(t,!0)}flushPendingInitSegments(){this._pendingVideoInitSegment&&(this._onInitSegment(w.Video,this._pendingVideoInitSegment),this._pendingVideoInitSegment=null),this._pendingAudioInitSegment&&(this._onInitSegment(w.Audio,this._pendingAudioInitSegment),this._pendingAudioInitSegment=null)}_remuxAudio(t,i){var S,V;if(!this._audioMeta||t.frames.length===0)return;this._pendingAudioInitSegment&&(g.v(Ce.TAG,`_remuxAudio(): flushing pending audio init before audio remux, audioFrames=${t.frames.length} force=${i} ${this._describeInitSegment(this._pendingAudioInitSegment)}`),this._onInitSegment(w.Audio,this._pendingAudioInitSegment),this._pendingAudioInitSegment=null);let r=t,n=r.frames,a,s=-1,l=-1,u=-1,c=this._audioMeta.refFrameDuration,h=this._audioMeta.codec==="mp3"&&this._mp3UseMpegAudio,_=this._dtsBase!==1/0&&this._audioNextDts===1/0,m=!1;if(n.length===1&&!i)return;let y=0,f=null,x=0;h?(y=0,x=r.length):(y=8,x=8+r.length);let b;if(n.length>1&&(b=n.pop(),x-=(b==null?void 0:b.length)||0),this._audioStashedLastFrame!=null){let A=this._audioStashedLastFrame;this._audioStashedLastFrame=null,n.unshift(A),x+=(A==null?void 0:A.length)||0}b!=null&&(this._audioStashedLastFrame=b);let v=n[0].dts-this._dtsBase;if(this._audioNextDts!==1/0)a=v-this._audioNextDts;else if(this._audioSegmentInfoList.isEmpty()){a=0;let A=(S=this._externalVideoSegmentInfoList)!=null?S:this._videoSegmentInfoList;this._fillSilentAfterSeek&&!A.isEmpty()&&this._audioMeta.originalCodec!=="mp3"&&(m=!0)}else{let A=this._audioSegmentInfoList.getLastFrameBefore(v);if(A!=null){let U=v-(A.originalDts+A.duration);U<=3&&(U=0);let Q=A.dts+A.duration+U;a=v-Q}else a=0}if(m){let A=v-a,Q=((V=this._externalVideoSegmentInfoList)!=null?V:this._videoSegmentInfoList).getLastSegmentBefore(v);if(Q!=null&&Q.beginDts<A){let Z=zi.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount);if(Z){let W=Q.beginDts,ye=A-Q.beginDts;g.v(Ce.TAG,`InsertPrefixSilentAudio: dts: ${W}, duration: ${ye}`),n.unshift({unit:Z,length:Z.byteLength,dts:W,pts:W}),x+=Z.byteLength}}else m=!1}let k=[];for(let A=0;A<n.length;A++){let U=n[A],Q=U.unit,Z=U.dts-this._dtsBase,W=Z,ye=!1,_e=[],j=0;if(!(Z<-.001)){if(this._audioMeta.codec!=="mp3"&&!Number.isNaN(c)){let z=Z,H=3;if(this._audioNextDts!==1/0&&(z=this._audioNextDts),a=Z-z,a<=-H*c){g.w(Ce.TAG,`Dropping 1 audio frame (originalDts: ${Z} ms ,curRefDts: ${z} ms)  due to dtsCorrection: ${a} ms overlap.`);continue}else if(a>=H*c&&this._fillAudioTimestampGap&&!ie.safari){ye=!0;let ve=Math.floor(a/c);g.w(Ce.TAG,`Large audio timestamp gap detected, may cause AV sync to drift. Silent frames will be generated to avoid unsync.
originalDts: ${Z} ms, curRefDts: ${z} ms, dtsCorrection: ${Math.round(a)} ms, generate: ${ve} frames`),W=Math.floor(z),j=Math.floor(z+c)-W;let T=zi.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount);T===null&&(g.w(Ce.TAG,`Unable to generate silent frame for ${this._audioMeta.originalCodec} with ${this._audioMeta.channelCount} channels, repeat last frame`),T=Q);for(let B=0;B<ve;B++){z=z+c;let P=Math.floor(z),re=Math.floor(z+c)-P,le={dts:P,pts:P,cts:0,unit:T,size:T.byteLength,duration:re,originalDts:Z,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}};_e.push(le),x+=le.size}this._audioNextDts=z+c}else W=Math.floor(z),j=Math.floor(z+c)-W,this._audioNextDts=z+c}else W=Z-a,A!==n.length-1?j=n[A+1].dts-this._dtsBase-a-W:b!=null?j=b.dts-this._dtsBase-a-W:k.length>=1?j=k[k.length-1].duration:j=Math.floor(c),this._audioNextDts=W+j;s===-1&&(s=W),k.push({dts:W,pts:W,cts:0,unit:U.unit,size:U.unit.byteLength,duration:j,originalDts:Z,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}),ye&&k.push(..._e)}}if(k.length===0){r.frames=[],r.length=0;return}h?f=new Uint8Array(x):(f=new Uint8Array(x),f[0]=x>>>24&255,f[1]=x>>>16&255,f[2]=x>>>8&255,f[3]=x&255,f.set(ct.types.mdat,4));for(let A=0;A<k.length;A++){let U=k[A].unit;f.set(U,y),y+=U.byteLength}let F=k[k.length-1];l=F.dts+F.duration;let O=new et;O.beginDts=s,O.endDts=l,O.beginPts=s,O.endPts=l,O.originalBeginDts=k[0].originalDts,O.originalEndDts=F.originalDts+F.duration,O.firstFrame=new Re(k[0].dts,k[0].pts,k[0].duration,k[0].originalDts,!1),O.lastFrame=new Re(F.dts,F.pts,F.duration,F.originalDts,!1),this._isLive||this._audioSegmentInfoList.append(O),r.frames=k,r.sequenceNumber++;let D=null;h?D=new Uint8Array:D=ct.moof(te(K({},r),{id:this._getMp4TrackId(w.Audio,r.id)}),s),r.frames=[],r.length=0;let I={kind:1,type:w.Audio,data:new Uint8Array(this._mergeBoxes(D,f).buffer),frameCount:k.length,info:O};h&&_&&(I.timestampOffset=s),this._onMediaSegment(w.Audio,I)}_remuxVideo(t,i){if(t.frames.length===0||t.frames.length===1&&!i)return;if(!this._videoMeta){g.w(Ce.TAG,"_remuxVideo: VideoData received before CodecConfigurationRecord");return}this._pendingVideoInitSegment&&(this._onInitSegment(w.Video,this._pendingVideoInitSegment),this._pendingVideoInitSegment=null);let r=t,n=r.frames,a,s=-1,l=-1,u=-1,c=-1,h=8,_=null,m=8+t.length,y;if(n.length>1&&(y=n.pop(),m-=(y==null?void 0:y.length)||0),this._videoStashedLastFrame!=null){let I=this._videoStashedLastFrame;this._videoStashedLastFrame=null,n.unshift(I),m+=I.length}y!=null&&(this._videoStashedLastFrame=y);let f=this._videoMeta.codecKind===ce.Av1,x=n[0].dts-this._dtsBase;if(this._videoNextDts!==1/0)a=x-this._videoNextDts;else if(this._videoSegmentInfoList.isEmpty())a=0;else{let I=this._videoSegmentInfoList.getLastFrameBefore(x);if(I!=null){let S=x-(I.originalDts+I.duration);S<=3&&(S=0);let V=I.dts+I.duration+S;a=x-V}else a=0}let b=new et,v=[],k=0;for(let I=0;I<n.length;I++){let S=n[I],V=S.dts-this._dtsBase,A=S.isKeyframe,U=V-a,Q=f?0:S.cts,Z=U+Q;s===-1&&(s=U,u=Z);let W=0;if(I!==n.length-1?W=n[I+1].dts-this._dtsBase-a-U:y!=null?W=y.dts-this._dtsBase-a-U:v.length>=1?W=v[v.length-1].duration:W=Math.floor(this._videoMeta.refFrameDuration),A){let j=new Re(U,Z,W,S.dts,!0);j.fileposition=S.fileposition,b.appendSyncPoint(j)}let ye=S.units,_e=S.length;if(f){let j=0;ye=S.units.map(z=>{let H=Ue.stripLeadingObuFraming(z.data);return j+=H.byteLength,{type:z.type,data:H}}),_e=j,k+=j}v.push({dts:U,pts:Z,cts:Q,units:ye,size:_e,isKeyframe:A,duration:W,originalDts:V,flags:{isLeading:0,dependsOn:A?2:1,isDependedOn:A?1:0,hasRedundancy:0,isNonSync:A?0:1}})}f&&(m=8+k),_=new Uint8Array(m),_[0]=m>>>24&255,_[1]=m>>>16&255,_[2]=m>>>8&255,_[3]=m&255,_.set(ct.types.mdat,4);for(let I=0;I<v.length;I++){let S=v[I].units;for(;S.length;){let A=S.shift().data;_.set(A,h),h+=A.byteLength}}let F=v[v.length-1];if(l=F.dts+F.duration,c=F.pts+F.duration,this._videoNextDts=l,b.beginDts=s,b.endDts=l,b.beginPts=u,b.endPts=c,b.originalBeginDts=v[0].originalDts,b.originalEndDts=F.originalDts+F.duration,b.firstFrame=new Re(v[0].dts,v[0].pts,v[0].duration,v[0].originalDts,v[0].isKeyframe),b.lastFrame=new Re(F.dts,F.pts,F.duration,F.originalDts,F.isKeyframe),this._isLive||this._videoSegmentInfoList.append(b),r.frames=v,r.sequenceNumber++,this._forceFirstIDR){let I=v[0].flags;I.dependsOn=2,I.isNonSync=0}let O=ct.moof(te(K({},r),{id:this._getMp4TrackId(w.Video,r.id)}),s);r.frames=[],r.length=0;let D={kind:1,type:w.Video,data:new Uint8Array(this._mergeBoxes(O,_).buffer),frameCount:v.length,info:b};this._onMediaSegment(w.Video,D)}_mergeBoxes(t,i){let r=new Uint8Array(t.byteLength+i.byteLength);return r.set(t,0),r.set(i,t.byteLength),r}};d(Ce,"TAG","MP4Remuxer");var ji=Ce,oi=ji;var li=0;function it(o){return new TextEncoder().encode(o)}function ta(o){let e=new ArrayBuffer(8);return new DataView(e).setFloat64(0,o,!1),new Uint8Array(e)}function ze(o){return o<=255?J(o,1):o<=65535?J(o,2):o<=16777215?J(o,3):J(o,4)}function J(o,e){let t=new Uint8Array(e);for(let i=e-1;i>=0;i--)t[i]=o&255,o>>=8;return t}function ia(o){g.a(Ye.TAG,`writeVint assert failed: value of ${o} > 0xFFFFFFF`,o>=0&&o<=4294967295);let e=0,t=o+1;do e++;while((t>>>=7)>0&&e<8);let i=new Uint8Array(e);t=o|1<<e*7;for(let r=e-1,n=0;r>=0;r--,n++)i[n]=t>>r*8&255;return i}function L(o,e){let t=ze(o),i=ia(e.length);return Y([t,i,e])}function Y(o){let e=o.reduce((r,n)=>r+n.length,0),t=new Uint8Array(e),i=0;for(let r of o)t.set(r,i),i+=r.length;return t}function ra(o){switch(o){case ce.Vp9:return"V_VP9";case ce.Av1:return"V_AV1";default:return g.a(Ye.TAG,`GetCodecId(): Unsupported codec ${o}`),""}}function na(o){let e=Number(o.profile),t=Number(o.level),i=o.bitDepth,r=o.chromaFormat;return Y([[1,e],[2,t],[3,i],[4,r]].map(([a,s])=>new Uint8Array([a,1,s&255])))}function aa(o){let e=[];if(Number.isFinite(o.matrixCoefficients)&&e.push(L(21937,ze(o.matrixCoefficients))),Number.isFinite(o.bitDepth)&&e.push(L(21938,ze(o.bitDepth))),Number.isFinite(o.colorRange)){let t=o.colorRange>0?2:1;e.push(L(21945,ze(t)))}return Number.isFinite(o.transferCharacteristics)&&e.push(L(21946,ze(o.transferCharacteristics))),Number.isFinite(o.colourPrimaries)&&e.push(L(21947,ze(o.colourPrimaries))),e.length===0?null:L(21936,Y(e))}var we=class we{static generateVideoInitSegment(e){let t=e.codecWidth,i=e.codecHeight,r=e.codecConfig,n=e.codecKind===ce.Vp9?na(e):r,a=aa(e);if(!n)return g.e(we.TAG,"generateVideoInitSegment(): Missing codec configuration for video track"),new Uint8Array(0);let s=L(440786851,Y([L(17030,J(1,1)),L(17143,J(1,1)),L(17138,J(4,1)),L(17139,J(8,1)),L(17026,it("webm")),L(17031,J(2,1)),L(17029,J(2,1))])),l=L(357149030,Y([L(2807729,J(1e6,3)),L(19840,it("e-remux")),L(22337,it("e-remux"))])),u=[L(176,J(t,2)),L(186,J(i,2)),...a?[a]:[]],c=L(174,Y([L(215,J(1,1)),L(29637,J(1,1)),L(131,J(1,1)),L(134,it(ra(e.codecKind))),L(25506,n),L(224,Y(u))])),h=L(374648427,Y([c])),_=Y([l,h]),m=new Uint8Array([24,83,128,103,255]),y=Y([m,_]);return Y([s,y])}static generateAudioInitSegment(e){let t=e.codecConfig,i=e.codec,r=i==="opus",n=r?48e3:e.audioSampleRate,a=e.channelCount,s=Math.round(e.preSkipSamples*(1e9/n)),l=8e7;if(!t)return g.e(we.TAG,"generateAudioInitSegment(): Missing codec configuration for audio track"),new Uint8Array(0);let u;switch(i){case"opus":u="A_OPUS";break;case"vorbis":u="A_VORBIS";break;default:return g.w(we.TAG,`generateAudioInitSegment: Unsupported codec ${i}`),new Uint8Array}let c=L(440786851,Y([L(17030,J(1,1)),L(17143,J(1,1)),L(17138,J(4,1)),L(17139,J(8,1)),L(17026,it("webm")),L(17031,J(2,1)),L(17029,J(2,1))])),h=L(357149030,Y([L(2807729,J(1e6,3)),L(19840,it("e-remux")),L(22337,it("e-remux"))])),_=L(174,Y([L(215,J(2,1)),L(29637,J(2,1)),L(131,J(2,1)),L(134,it(u)),L(25506,t),...r?[L(22186,ze(s)),L(22203,ze(l))]:[],L(225,Y([L(181,ta(n)),L(159,J(a,1))]))])),m=L(374648427,Y([_])),y=Y([h,m]),f=new Uint8Array([24,83,128,103,255]),x=Y([f,y]),b=Y([c,x]);return g.v(we.TAG,`generateAudioInitSegment() codec=${i}, sampleRate=${n}, channels=${a}, codecConfig.length=${t.length}`),b}static generateVideoCluster(e,t,i,r){let n=e[t].dts,a=L(231,ze(n)),s=0,l,u=e[e.length-1].dts-e[t].dts;(u<0||u>32767)&&g.w(we.TAG,`generateVideoCluster() - cluster contains blockTimecode(s) out of range; clusterDTS: ${n} dtsDelta: ${u} framesToProcess: ${e.length-t}`),e[0].isKeyframe||g.e(we.TAG,"Cluster must start with a keyframe");let c=[];for(let h=t;h<e.length;h++){let{rawData:_,dts:m,isKeyframe:y}=e[h],f=m-n;if(f<0||f>32767){s=h;break}if(h>t&&y&&g.e(we.TAG,`generateVideoCluster() - Frame at index ${h} is a keyframe but not the first frame in the cluster.`),li===0||li===2&&h<e.length-1){let b=new Uint8Array(4);b[0]=129,b[1]=f>>8&255,b[2]=f&255,b[3]=y?128:0;let v=r===ce.Av1?Ue.stripLeadingObuFraming(_):_,k=L(163,Y([b,v]));c.push(k)}else{let b=new Uint8Array(4);b[0]=129,b[1]=f>>8&255,b[2]=f&255,b[3]=y?128:0;let v=r===ce.Av1?Ue.stripLeadingObuFraming(_):_,k=L(161,Y([b,v])),F=L(155,J(i,4)),O=L(160,Y([k,F]));c.push(O)}}if(s>0){let h=L(524531317,Y([a,...c])),_=we.generateVideoCluster(e,s,i,r);l=Y([h,_])}else l=L(524531317,Y([a,...c]));return l}static generateAudioCluster(e,t,i){let r=e[t].dts,n=L(231,ze(r)),a=0,s,l=e[e.length-1].dts-e[t].dts;(l<0||l>32767)&&g.w(we.TAG,`generateAudioCluster() - cluster contains blockTimecode(s) out of range; clusterDTS: ${r} dtsDelta: ${l} framesToProcess: ${e.length-t}`);let u=[];for(let c=t;c<e.length;c++){let{unit:h,dts:_}=e[c],m=_-r;if(m<0||m>32767){a=c;break}if(li===0||li===2&&c<e.length-1){let f=new Uint8Array(4);f[0]=130,f[1]=m>>8&255,f[2]=m&255,f[3]=0;let x=L(163,Y([f,h]));u.push(x)}else{let f=new Uint8Array(3);f[0]=130,f[1]=m>>8&255,f[2]=m&255;let x=L(161,Y([f,h])),b=L(155,J(i,4)),v=L(160,Y([x,b]));u.push(v)}}if(a>0){let c=L(524531317,Y([n,...u])),h=we.generateAudioCluster(e,a,i);s=Y([c,h])}else s=L(524531317,Y([n,...u]));return s}};d(we,"TAG","WebMGenerator");var Ye=we;var rt=class rt extends Ve{constructor(){super(...arguments);d(this,"_refVideoFrameDuration",33.333333333333336);d(this,"_refAudioFrameDuration",20);d(this,"_pendingVideoFrames",[])}destroy(){this._resetTimelineState(),this._clearMetadata(),this._pendingVideoFrames=[],this._resetCallbacks()}clear(){this._clearTrackState(),this._pendingVideoFrames=[]}flushStashedFrames(){let{audioTrack:t,videoTrack:i}=this._takeStashedFrames();this._remuxVideo(i,!0),this._remuxAudio(t,!0)}flushPendingInitSegments(){}_onTrackData(t,i){g.a(rt.TAG,"onMediaSegment callback must be specificed!",this._onMediaSegment),this._dtsBase===1/0&&this._calculateDtsBase(t,i),this._remuxVideo(i),this._remuxAudio(t)}_onTrackMetadata(t){g.a(rt.TAG,"onTrackMetadata: onInitSegment callback must be specified!",this._onInitSegment);let i;if(t.type===w.Audio){let n=this._audioMeta=t;this._refAudioFrameDuration=Number.isFinite(n.refFrameDuration)?n.refFrameDuration:this._refAudioFrameDuration,i=Ye.generateAudioInitSegment(n),this._isAudioMetadataDispatched=!0}else{let n=this._videoMeta=t;this._refVideoFrameDuration=Number.isFinite(n.refFrameDuration)?n.refFrameDuration:this._refVideoFrameDuration,i=Ye.generateVideoInitSegment(n),this._isVideoMetadataDispatched=!0}let r={kind:0,type:t.type,data:i,codec:`${t.codec}`,container:t.type===w.Audio?"audio/webm":"video/webm",mediaDuration:t.duration};this._onInitSegment(t.type,r)}_flushPendingVideoFrames(){if(this._pendingVideoFrames.length===0)return;let t=new et,i=this._pendingVideoFrames[0],r=this._pendingVideoFrames[this._pendingVideoFrames.length-1],n=l=>{var u;return(u=l.originalDts)!=null?u:l.dts};if(i.isKeyframe||g.e(rt.TAG,"Pending video frames must start with a keyframe"),i.isKeyframe){let l=new Re(i.dts,i.pts,0,n(i),!0);t.appendSyncPoint(l)}t.beginDts=i.dts,t.endDts=r.dts,t.beginPts=i.pts,t.endPts=r.pts,t.originalBeginDts=i.dts,t.originalEndDts=r.dts,t.firstFrame=new Re(i.dts,i.pts,0,i.dts,i.isKeyframe),t.lastFrame=new Re(r.dts,r.pts,0,r.dts,r.isKeyframe);let a=Ye.generateVideoCluster(this._pendingVideoFrames,0,this._refVideoFrameDuration,this._videoMeta.codecKind),s={kind:1,type:w.Video,data:a,frameCount:this._pendingVideoFrames.length,info:t};this._onMediaSegment(w.Video,s),this._pendingVideoFrames=[]}_remuxVideo(t,i=!1){if(t.frames.length===0&&!i)return;if(!this.isVideoMetadataDispatched){g.w(rt.TAG,"_remuxVideo: VideoData received before CodecConfigurationRecord");return}let r=t.frames.map(a=>Object.assign({},a,{dts:a.dts-this._dtsBase,pts:a.pts-this._dtsBase,originalDts:a.dts})),n=te(K({},t),{frames:r});for(let a of n.frames)a.isKeyframe&&(this._flushPendingVideoFrames(),t.sequenceNumber++),this._pendingVideoFrames.push(a);i&&this._flushPendingVideoFrames(),t.frames=[],t.length=0}_remuxAudio(t,i=!1){if(t.frames.length===0)return;if(!this._isAudioMetadataDispatched){g.w(rt.TAG,"_remuxAudio: AudioData received before CodecConfigurationRecord");return}let r=t,a=te(K({},t),{frames:t.frames.map(y=>te(K({},y),{dts:y.dts-this._dtsBase,pts:y.pts-this._dtsBase}))}).frames,s=-1,l=-1;if(a.length===1&&!i)return;let u;if(a.length>1&&(u=a.pop()),this._audioStashedLastFrame!=null){let y=this._audioStashedLastFrame;this._audioStashedLastFrame=null,a.unshift(y)}if(u!=null&&(this._audioStashedLastFrame=u),a.length===0)return;let c=a[0].dts;if(this._audioNextDts!==1/0){let y=c-this._audioNextDts;for(let f=0;f<a.length;f++)a[f].dts=a[f].dts-y}else this._audioNextDts=c;s=a[0].dts,l=a[a.length-1].dts,this._audioNextDts=l+this._refAudioFrameDuration;let h=Ye.generateAudioCluster(a,0,this._refAudioFrameDuration),_=new et;_.beginDts=s,_.endDts=l,_.beginPts=s,_.endPts=l,_.originalBeginDts=c,_.originalEndDts=a[a.length-1].dts,_.firstFrame=new Re(s,s,this._refAudioFrameDuration,a[0].length,!1),_.lastFrame=new Re(l,l,this._refAudioFrameDuration,a[a.length-1].length,!1),this._audioSegmentInfoList.append(_);let m={kind:1,type:w.Audio,data:h,frameCount:a.length,info:_};this._onMediaSegment&&this._onMediaSegment(w.Audio,m),r.frames=[],r.length=0}};d(rt,"TAG","WebMRemuxer");var di=rt;function sa(){return{type:w.Audio,id:2,sequenceNumber:0,frames:[],length:0}}function oa(){return{type:w.Video,id:1,sequenceNumber:0,frames:[],length:0}}var Xi=class{constructor(){d(this,"_audioRemuxer",null);d(this,"_videoRemuxer",null);d(this,"_dtsBase",1/0);d(this,"_videoSegmentInfoList",new ot(w.Video));d(this,"_onInitSegment",fe);d(this,"_onMediaSegment",fe)}get audioRemuxer(){return this._audioRemuxer}get videoRemuxer(){return this._videoRemuxer}configure(e,t){var i,r;(i=this._audioRemuxer)==null||i.destroy(),(r=this._videoRemuxer)==null||r.destroy(),this._audioRemuxer=e,this._videoRemuxer=t,this._dtsBase!==1/0&&(e.setTimestampBase(this._dtsBase),t.setTimestampBase(this._dtsBase)),this._configureRemuxers()}get onInitSegment(){return this._onInitSegment}set onInitSegment(e){this._onInitSegment=e,this._configureRemuxers()}get onMediaSegment(){return this._onMediaSegment}set onMediaSegment(e){this._onMediaSegment=e,this._configureRemuxers()}get timestampBase(){return this._dtsBase===1/0?void 0:this._dtsBase}get isAudioMetadataDispatched(){var e,t;return(t=(e=this._audioRemuxer)==null?void 0:e.isAudioMetadataDispatched)!=null?t:!1}get isVideoMetadataDispatched(){var e,t;return(t=(e=this._videoRemuxer)==null?void 0:e.isVideoMetadataDispatched)!=null?t:!1}setTimestampBase(e){var t,i;this._dtsBase=e,(t=this._audioRemuxer)==null||t.setTimestampBase(e),(i=this._videoRemuxer)==null||i.setTimestampBase(e)}insertDiscontinuity(){var e,t;(e=this._audioRemuxer)==null||e.insertDiscontinuity(),(t=this._videoRemuxer)==null||t.insertDiscontinuity()}clear(){var e,t;(e=this._audioRemuxer)==null||e.clear(),(t=this._videoRemuxer)==null||t.clear(),this._videoSegmentInfoList.clear()}flushStashedFrames(){var e,t;(e=this._videoRemuxer)==null||e.flushStashedFrames(),(t=this._audioRemuxer)==null||t.flushStashedFrames()}flushPendingInitSegments(){var e,t;(e=this._videoRemuxer)==null||e.flushPendingInitSegments(),(t=this._audioRemuxer)==null||t.flushPendingInitSegments()}destroy(){var e,t;(e=this._audioRemuxer)==null||e.destroy(),(t=this._videoRemuxer)==null||t.destroy(),this._audioRemuxer=null,this._videoRemuxer=null,this._videoSegmentInfoList.clear(),this._dtsBase=1/0,this._onInitSegment=fe,this._onMediaSegment=fe}remuxTrackMetadata(e){var t,i;e.type===w.Audio?(t=this._audioRemuxer)==null||t.remuxTrackMetadata(e):(i=this._videoRemuxer)==null||i.remuxTrackMetadata(e)}remuxTrackData(e,t){var i,r;this._setTimestampBaseFromTracks(e,t),t.frames.length>0&&((i=this._videoRemuxer)==null||i.remuxTrackData(sa(),t)),e.frames.length>0&&((r=this._audioRemuxer)==null||r.remuxTrackData(e,oa()))}_setTimestampBaseFromTracks(e,t){var i,r,n,a;if(this._dtsBase===1/0){let s=[(i=e.frames[0])==null?void 0:i.dts,(r=t.frames[0])==null?void 0:r.dts].filter(l=>Number.isFinite(l));s.length>0&&(this._dtsBase=Math.min(...s))}this._dtsBase!==1/0&&((n=this._audioRemuxer)==null||n.setTimestampBase(this._dtsBase),(a=this._videoRemuxer)==null||a.setTimestampBase(this._dtsBase))}_configureRemuxers(){if(!this._audioRemuxer||!this._videoRemuxer)return;let e=(i,r)=>this._onInitSegment(i,r),t=(i,r)=>{i===w.Video&&this._videoSegmentInfoList.append(r.info),this._onMediaSegment(i,r)};this._audioRemuxer.onInitSegment=e,this._videoRemuxer.onInitSegment=e,this._audioRemuxer.onMediaSegment=t,this._videoRemuxer.onMediaSegment=t,this._audioRemuxer instanceof oi&&this._audioRemuxer.setExternalVideoSegmentInfoList(this._videoSegmentInfoList)}},Qr=Xi;var Yi=class{constructor(){this._firstCheckpoint=0,this._lastCheckpoint=0,this._intervalBytes=0,this._totalBytes=0,this._lastSecondBytes=0,self.performance&&self.performance.now?this._now=self.performance.now.bind(self.performance):this._now=Date.now}reset(){this._firstCheckpoint=this._lastCheckpoint=0,this._totalBytes=this._intervalBytes=0,this._lastSecondBytes=0}addBytes(e){this._firstCheckpoint===0?(this._firstCheckpoint=this._now(),this._lastCheckpoint=this._firstCheckpoint,this._intervalBytes+=e,this._totalBytes+=e):this._now()-this._lastCheckpoint<1e3?(this._intervalBytes+=e,this._totalBytes+=e):(this._lastSecondBytes=this._intervalBytes,this._intervalBytes=e,this._totalBytes+=e,this._lastCheckpoint=this._now())}get currentKBps(){this.addBytes(0);let e=(this._now()-this._lastCheckpoint)/1e3;return e==0&&(e=1),this._intervalBytes/e/1024}get lastSecondKBps(){return this.addBytes(0),this._lastSecondBytes!==0?this._lastSecondBytes/1024:this._now()-this._lastCheckpoint>=500?this.currentKBps:0}get averageKBps(){let e=(this._now()-this._firstCheckpoint)/1e3;return this._totalBytes/e/1024}},ui=Yi;var N={kIdle:0,kConnecting:1,kBuffering:2,kError:3,kComplete:4},q={OK:"OK",EXCEPTION:"Exception",HTTP_STATUS_CODE_INVALID:"HttpStatusCodeInvalid",CONNECTING_TIMEOUT:"ConnectingTimeout",EARLY_EOF:"EarlyEof",UNRECOVERABLE_EARLY_EOF:"UnrecoverableEarlyEof"},Be=class{constructor(e){this._type=e||"undefined",this._status=N.kIdle,this._needStash=!1,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null}destroy(){this._status=N.kIdle,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null}isWorking(){return this._status===N.kConnecting||this._status===N.kBuffering}get type(){return this._type}get status(){return this._status}get needStashBuffer(){return this._needStash}get onContentLengthKnown(){return this._onContentLengthKnown}set onContentLengthKnown(e){this._onContentLengthKnown=e}get onURLRedirect(){return this._onURLRedirect}set onURLRedirect(e){this._onURLRedirect=e}get onDataArrival(){return this._onDataArrival}set onDataArrival(e){this._onDataArrival=e}get onError(){return this._onError}set onError(e){this._onError=e}get onComplete(){return this._onComplete}set onComplete(e){this._onComplete=e}open(e,t){throw new wt("Unimplemented abstract function!")}abort(){throw new wt("Unimplemented abstract function!")}};var Qi=class extends Be{static isSupported(){try{let e=ie.msedge&&ie.version.minor>=15048,t=ie.msedge?e:!0;return self.fetch&&self.ReadableStream&&t}catch(e){return!1}}constructor(e,t){super("fetch-stream-loader"),this.TAG="FetchStreamLoader",this._seekHandler=e,this._config=t,this._needStash=!0,this._requestAbort=!1,this._abortController=null,this._contentLength=null,this._receivedLength=0}destroy(){this.isWorking()&&this.abort(),super.destroy()}open(e,t){this._dataSource=e,this._range=t;let i=e.url;this._config.reuseRedirectedURL&&e.redirectedURL!=null&&(i=e.redirectedURL);let r=this._seekHandler.getConfig(i,t),n=new self.Headers;if(typeof r.headers=="object"){let s=r.headers;for(let l in s)s.hasOwnProperty(l)&&n.append(l,s[l])}let a={method:"GET",headers:n,mode:"cors",cache:"default",referrerPolicy:"no-referrer-when-downgrade"};if(typeof this._config.headers=="object")for(let s in this._config.headers)n.append(s,this._config.headers[s]);e.cors===!1&&(a.mode="same-origin"),e.withCredentials&&(a.credentials="include"),e.referrerPolicy&&(a.referrerPolicy=e.referrerPolicy),self.AbortController&&(this._abortController=new self.AbortController,a.signal=this._abortController.signal),this._status=N.kConnecting,self.fetch(r.url,a).then(s=>{if(this._requestAbort){this._status=N.kIdle,s.body.cancel();return}if(s.ok&&s.status>=200&&s.status<=299){if(s.url!==r.url&&this._onURLRedirect){let u=this._seekHandler.removeURLParameters(s.url);this._onURLRedirect(u)}let l=s.headers.get("Content-Length");return l!=null&&(this._contentLength=parseInt(l),this._contentLength!==0&&this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)),this._pump.call(this,s.body.getReader())}else if(this._status=N.kError,this._onError)this._onError(q.HTTP_STATUS_CODE_INVALID,{code:s.status,msg:s.statusText});else throw new ne("FetchStreamLoader: Http code invalid, "+s.status+" "+s.statusText)}).catch(s=>{if(!(this._abortController&&this._abortController.signal.aborted))if(this._status=N.kError,this._onError)this._onError(q.EXCEPTION,{code:-1,msg:s.message});else throw s})}abort(){if(this._requestAbort=!0,(this._status!==N.kBuffering||!ie.chrome)&&this._abortController)try{this._abortController.abort()}catch(e){}}_pump(e){return e.read().then(t=>{if(t.done)if(this._contentLength!==null&&this._receivedLength<this._contentLength){this._status=N.kError;let i=q.EARLY_EOF,r={code:-1,msg:"Fetch stream meet Early-EOF"};if(this._onError)this._onError(i,r);else throw new ne(r.msg)}else this._status=N.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1);else{if(this._abortController&&this._abortController.signal.aborted){this._status=N.kComplete;return}else if(this._requestAbort===!0)return this._status=N.kComplete,e.cancel();this._status=N.kBuffering;let i=t.value.buffer,r=this._range.from+this._receivedLength;this._receivedLength+=i.byteLength,this._onDataArrival&&this._onDataArrival(i,r,this._receivedLength),this._pump(e)}}).catch(t=>{if(this._abortController&&this._abortController.signal.aborted){this._status=N.kComplete;return}if(t.code===11&&ie.msedge)return;this._status=N.kError;let i=0,r=null;if((t.code===19||t.message==="network error")&&(this._contentLength===null||this._contentLength!==null&&this._receivedLength<this._contentLength)?(i=q.EARLY_EOF,r={code:t.code,msg:"Fetch stream meet Early-EOF"}):(i=q.EXCEPTION,r={code:t.code,msg:t.message}),this._onError)this._onError(i,r);else throw new ne(r.msg)})}},Zi=Qi;var Ji=class extends Be{static isSupported(){try{let e=new XMLHttpRequest;return e.open("GET","https://example.com",!0),e.responseType="moz-chunked-arraybuffer",e.responseType==="moz-chunked-arraybuffer"}catch(e){return g.w("MozChunkedLoader",e.message),!1}}constructor(e,t){super("xhr-moz-chunked-loader"),this.TAG="MozChunkedLoader",this._seekHandler=e,this._config=t,this._needStash=!0,this._xhr=null,this._requestAbort=!1,this._contentLength=null,this._receivedLength=0}destroy(){this.isWorking()&&this.abort(),this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onloadend=null,this._xhr.onerror=null,this._xhr=null),super.destroy()}open(e,t){this._dataSource=e,this._range=t;let i=e.url;this._config.reuseRedirectedURL&&e.redirectedURL!=null&&(i=e.redirectedURL);let r=this._seekHandler.getConfig(i,t);this._requestURL=r.url;let n=this._xhr=new XMLHttpRequest;if(n.open("GET",r.url,!0),n.responseType="moz-chunked-arraybuffer",n.onreadystatechange=this._onReadyStateChange.bind(this),n.onprogress=this._onProgress.bind(this),n.onloadend=this._onLoadEnd.bind(this),n.onerror=this._onXhrError.bind(this),e.withCredentials&&(n.withCredentials=!0),typeof r.headers=="object"){let a=r.headers;for(let s in a)a.hasOwnProperty(s)&&n.setRequestHeader(s,a[s])}if(typeof this._config.headers=="object"){let a=this._config.headers;for(let s in a)a.hasOwnProperty(s)&&n.setRequestHeader(s,a[s])}this._status=N.kConnecting,n.send()}abort(){this._requestAbort=!0,this._xhr&&this._xhr.abort(),this._status=N.kComplete}_onReadyStateChange(e){let t=e.target;if(t.readyState===2){if(t.responseURL!=null&&t.responseURL!==this._requestURL&&this._onURLRedirect){let i=this._seekHandler.removeURLParameters(t.responseURL);this._onURLRedirect(i)}if(t.status!==0&&(t.status<200||t.status>299))if(this._status=N.kError,this._onError)this._onError(q.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText});else throw new ne("MozChunkedLoader: Http code invalid, "+t.status+" "+t.statusText);else this._status=N.kBuffering}}_onProgress(e){if(this._status===N.kError)return;this._contentLength===null&&e.total!==null&&e.total!==0&&(this._contentLength=e.total,this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength));let t=e.target.response,i=this._range.from+this._receivedLength;this._receivedLength+=t.byteLength,this._onDataArrival&&this._onDataArrival(t,i,this._receivedLength)}_onLoadEnd(e){if(this._requestAbort===!0){this._requestAbort=!1;return}else if(this._status===N.kError)return;this._status=N.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1)}_onXhrError(e){this._status=N.kError;let t=0,i=null;if(this._contentLength&&e.loaded<this._contentLength?(t=q.EARLY_EOF,i={code:-1,msg:"Moz-Chunked stream meet Early-Eof"}):(t=q.EXCEPTION,i={code:-1,msg:e.constructor.name+" "+e.type}),this._onError)this._onError(t,i);else throw new ne(i.msg)}},er=Ji;var tr=class extends Be{static isSupported(){try{let e=new XMLHttpRequest;return e.open("GET","https://example.com",!0),e.responseType="arraybuffer",e.responseType==="arraybuffer"}catch(e){return g.w("RangeLoader",e.message),!1}}constructor(e,t){super("xhr-range-loader"),this.TAG="RangeLoader",this._seekHandler=e,this._config=t,this._needStash=!1,this._chunkSizeKBList=[128,256,384,512,768,1024,1536,2048,3072,4096,5120,6144,7168,8192],this._currentChunkSizeKB=384,this._currentSpeedNormalized=0,this._zeroSpeedChunkCount=0,this._xhr=null,this._speedSampler=new ui,this._requestAbort=!1,this._waitForTotalLength=!1,this._totalLengthReceived=!1,this._currentRequestURL=null,this._currentRedirectedURL=null,this._currentRequestRange=null,this._totalLength=null,this._contentLength=null,this._receivedLength=0,this._lastTimeLoaded=0}destroy(){this.isWorking()&&this.abort(),this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr=null),super.destroy()}get currentSpeed(){return this._speedSampler.lastSecondKBps}open(e,t){this._dataSource=e,this._range=t,this._status=N.kConnecting;let i=!1;this._dataSource.filesize!=null&&this._dataSource.filesize!==0&&(i=!0,this._totalLength=this._dataSource.filesize),!this._totalLengthReceived&&!i?(this._waitForTotalLength=!0,this._internalOpen(this._dataSource,{from:0,to:-1})):this._openSubRange()}_openSubRange(){let e=this._currentChunkSizeKB*1024,t=this._range.from+this._receivedLength,i=t+e;this._contentLength!=null&&i-this._range.from>=this._contentLength&&(i=this._range.from+this._contentLength-1),this._currentRequestRange={from:t,to:i},this._internalOpen(this._dataSource,this._currentRequestRange)}_internalOpen(e,t){this._lastTimeLoaded=0;let i=e.url;this._config.reuseRedirectedURL&&(this._currentRedirectedURL!=null?i=this._currentRedirectedURL:e.redirectedURL!=null&&(i=e.redirectedURL));let r=this._seekHandler.getConfig(i,t);this._currentRequestURL=r.url;let n=this._xhr=new XMLHttpRequest;if(n.open("GET",r.url,!0),n.responseType="arraybuffer",n.onreadystatechange=this._onReadyStateChange.bind(this),n.onprogress=this._onProgress.bind(this),n.onload=this._onLoad.bind(this),n.onerror=this._onXhrError.bind(this),e.withCredentials&&(n.withCredentials=!0),typeof r.headers=="object"){let a=r.headers;for(let s in a)a.hasOwnProperty(s)&&n.setRequestHeader(s,a[s])}if(typeof this._config.headers=="object"){let a=this._config.headers;for(let s in a)a.hasOwnProperty(s)&&n.setRequestHeader(s,a[s])}n.send()}abort(){this._requestAbort=!0,this._internalAbort(),this._status=N.kComplete}_internalAbort(){this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr.abort(),this._xhr=null)}_onReadyStateChange(e){let t=e.target;if(t.readyState===2){if(t.responseURL!=null){let i=this._seekHandler.removeURLParameters(t.responseURL);t.responseURL!==this._currentRequestURL&&i!==this._currentRedirectedURL&&(this._currentRedirectedURL=i,this._onURLRedirect&&this._onURLRedirect(i))}if(t.status>=200&&t.status<=299){if(this._waitForTotalLength)return;this._status=N.kBuffering}else if(this._status=N.kError,this._onError)this._onError(q.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText});else throw new ne("RangeLoader: Http code invalid, "+t.status+" "+t.statusText)}}_onProgress(e){if(this._status===N.kError)return;if(this._contentLength===null){let i=!1;if(this._waitForTotalLength){this._waitForTotalLength=!1,this._totalLengthReceived=!0,i=!0;let r=e.total;this._internalAbort(),r!=null&r!==0&&(this._totalLength=r)}if(this._range.to===-1?this._contentLength=this._totalLength-this._range.from:this._contentLength=this._range.to-this._range.from+1,i){this._openSubRange();return}this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)}let t=e.loaded-this._lastTimeLoaded;this._lastTimeLoaded=e.loaded,this._speedSampler.addBytes(t)}_normalizeSpeed(e){let t=this._chunkSizeKBList,i=t.length-1,r=0,n=0,a=i;if(e<t[0])return t[0];for(;n<=a;){if(r=n+Math.floor((a-n)/2),r===i||e>=t[r]&&e<t[r+1])return t[r];t[r]<e?n=r+1:a=r-1}}_onLoad(e){if(this._status===N.kError)return;if(this._waitForTotalLength){this._waitForTotalLength=!1;return}this._lastTimeLoaded=0;let t=this._speedSampler.lastSecondKBps;if(t===0&&(this._zeroSpeedChunkCount++,this._zeroSpeedChunkCount>=3&&(t=this._speedSampler.currentKBps)),t!==0){let a=this._normalizeSpeed(t);this._currentSpeedNormalized!==a&&(this._currentSpeedNormalized=a,this._currentChunkSizeKB=a)}let i=e.target.response,r=this._range.from+this._receivedLength;this._receivedLength+=i.byteLength;let n=!1;this._contentLength!=null&&this._receivedLength<this._contentLength?this._openSubRange():n=!0,this._onDataArrival&&this._onDataArrival(i,r,this._receivedLength),n&&(this._status=N.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1))}_onXhrError(e){this._status=N.kError;let t=0,i=null;if(this._contentLength&&this._receivedLength>0&&this._receivedLength<this._contentLength?(t=q.EARLY_EOF,i={code:-1,msg:"RangeLoader meet Early-Eof"}):(t=q.EXCEPTION,i={code:-1,msg:e.constructor.name+" "+e.type}),this._onError)this._onError(t,i);else throw new ne(i.msg)}},ci=tr;var ir=class extends Be{static isSupported(){try{return typeof self.WebSocket!="undefined"}catch(e){return!1}}constructor(){super("websocket-loader"),this.TAG="WebSocketLoader",this._needStash=!0,this._ws=null,this._requestAbort=!1,this._receivedLength=0}destroy(){this._ws&&this.abort(),super.destroy()}open(e){try{let t=this._ws=new self.WebSocket(e.url);t.binaryType="arraybuffer",t.onopen=this._onWebSocketOpen.bind(this),t.onclose=this._onWebSocketClose.bind(this),t.onmessage=this._onWebSocketMessage.bind(this),t.onerror=this._onWebSocketError.bind(this),this._status=N.kConnecting}catch(t){this._status=N.kError;let i={code:t.code,msg:t.message};if(this._onError)this._onError(q.EXCEPTION,i);else throw new ne(i.msg)}}abort(){let e=this._ws;e&&(e.readyState===0||e.readyState===1)&&(this._requestAbort=!0,e.close()),this._ws=null,this._status=N.kComplete}_onWebSocketOpen(e){this._status=N.kBuffering}_onWebSocketClose(e){if(this._requestAbort===!0){this._requestAbort=!1;return}this._status=N.kComplete,this._onComplete&&this._onComplete(0,this._receivedLength-1)}_onWebSocketMessage(e){if(e.data instanceof ArrayBuffer)this._dispatchArrayBuffer(e.data);else if(e.data instanceof Blob){let t=new FileReader;t.onload=()=>{this._dispatchArrayBuffer(t.result)},t.readAsArrayBuffer(e.data)}else{this._status=N.kError;let t={code:-1,msg:"Unsupported WebSocket message type: "+e.data.constructor.name};if(this._onError)this._onError(q.EXCEPTION,t);else throw new ne(t.msg)}}_dispatchArrayBuffer(e){let t=e,i=this._receivedLength;this._receivedLength+=t.byteLength,this._onDataArrival&&this._onDataArrival(t,i,this._receivedLength)}_onWebSocketError(e){this._status=N.kError;let t={code:e.code,msg:e.message};if(this._onError)this._onError(q.EXCEPTION,t);else throw new ne(t.msg)}},Zr=ir;var rr=class{constructor(e){this._zeroStart=e||!1}getConfig(e,t){let i={};if(t.from!==0||t.to!==-1){let r;t.to!==-1?r=`bytes=${t.from.toString()}-${t.to.toString()}`:r=`bytes=${t.from.toString()}-`,i.Range=r}else this._zeroStart&&(i.Range="bytes=0-");return{url:e,headers:i}}removeURLParameters(e){return e}},Jr=rr;var nr=class{constructor(e,t){this._startName=e,this._endName=t}getConfig(e,t){let i=e;if(t.from!==0||t.to!==-1){let r=!0;i.indexOf("?")===-1&&(i+="?",r=!1),r&&(i+="&"),i+=`${this._startName}=${t.from.toString()}`,t.to!==-1&&(i+=`&${this._endName}=${t.to.toString()}`)}return{url:i,headers:{}}}removeURLParameters(e){let t=e.split("?")[0],i,r=e.indexOf("?");r!==-1&&(i=e.substring(r+1));let n="";if(i!=null&&i.length>0){let a=i.split("&");for(let s=0;s<a.length;s++){let l=a[s].split("="),u=s>0;l[0]!==this._startName&&l[0]!==this._endName&&(u&&(n+="&"),n+=a[s])}}return n.length===0?t:t+"?"+n}},en=nr;var ar=class{constructor(e,t,i){this.TAG="IOController",this._config=t,this._extraData=i,this._stashInitialSize=64*1024,t.stashInitialSize!=null&&t.stashInitialSize>0&&(this._stashInitialSize=t.stashInitialSize),this._stashUsed=0,this._stashSize=this._stashInitialSize,this._bufferSize=Math.max(this._stashSize,1024*1024*3),this._stashBuffer=new ArrayBuffer(this._bufferSize),this._stashByteStart=0,this._enableStash=!0,t.enableStashBuffer===!1&&(this._enableStash=!1),this._loader=null,this._loaderClass=null,this._seekHandler=null,this._dataSource=e,this._isWebSocketURL=/wss?:\/\/(.+?)/.test(e.url),this._refTotalLength=e.filesize?e.filesize:null,this._totalLength=this._refTotalLength,this._fullRequestFlag=!1,this._currentRange=null,this._redirectedURL=null,this._speedNormalized=0,this._speedSampler=new ui,this._speedNormalizeList=[32,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096],this._isEarlyEofReconnecting=!1,this._paused=!1,this._resumeFrom=0,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._selectSeekHandler(),this._selectLoader(),this._createLoader()}destroy(){this._loader.isWorking()&&this._loader.abort(),this._loader.destroy(),this._loader=null,this._loaderClass=null,this._dataSource=null,this._stashBuffer=null,this._stashUsed=this._stashSize=this._bufferSize=this._stashByteStart=0,this._currentRange=null,this._speedSampler=null,this._isEarlyEofReconnecting=!1,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._extraData=null}isWorking(){return this._loader&&this._loader.isWorking()&&!this._paused}isPaused(){return this._paused}get status(){return this._loader.status}get extraData(){return this._extraData}set extraData(e){this._extraData=e}get onDataArrival(){return this._onDataArrival}set onDataArrival(e){this._onDataArrival=e}get onSeeked(){return this._onSeeked}set onSeeked(e){this._onSeeked=e}get onError(){return this._onError}set onError(e){this._onError=e}get onComplete(){return this._onComplete}set onComplete(e){this._onComplete=e}get onRedirect(){return this._onRedirect}set onRedirect(e){this._onRedirect=e}get onRecoveredEarlyEof(){return this._onRecoveredEarlyEof}set onRecoveredEarlyEof(e){this._onRecoveredEarlyEof=e}get currentURL(){return this._dataSource.url}get hasRedirect(){return this._redirectedURL!=null||this._dataSource.redirectedURL!=null}get currentRedirectedURL(){return this._redirectedURL||this._dataSource.redirectedURL}get currentSpeed(){return this._loaderClass===ci?this._loader.currentSpeed:this._speedSampler.lastSecondKBps}get loaderType(){return this._loader.type}_selectSeekHandler(){let e=this._config;if(e.seekType==="range")this._seekHandler=new Jr(this._config.rangeLoadZeroStart);else if(e.seekType==="param"){let t=e.seekParamStart||"bstart",i=e.seekParamEnd||"bend";this._seekHandler=new en(t,i)}else if(e.seekType==="custom"){if(typeof e.customSeekHandler!="function")throw new be("Custom seekType specified in config but invalid customSeekHandler!");this._seekHandler=new e.customSeekHandler}else throw new be(`Invalid seekType in config: ${e.seekType}`)}_selectLoader(){if(this._config.customLoader!=null)this._loaderClass=this._config.customLoader;else if(this._isWebSocketURL)this._loaderClass=Zr;else if(Zi.isSupported())this._loaderClass=Zi;else if(er.isSupported())this._loaderClass=er;else if(ci.isSupported())this._loaderClass=ci;else throw new ne("Your browser doesn't support xhr with arraybuffer responseType!")}_createLoader(){this._loader=new this._loaderClass(this._seekHandler,this._config),this._loader.needStashBuffer===!1&&(this._enableStash=!1),this._loader.onContentLengthKnown=this._onContentLengthKnown.bind(this),this._loader.onURLRedirect=this._onURLRedirect.bind(this),this._loader.onDataArrival=this._onLoaderChunkArrival.bind(this),this._loader.onComplete=this._onLoaderComplete.bind(this),this._loader.onError=this._onLoaderError.bind(this)}open(e){this._currentRange={from:0,to:-1},e&&(this._currentRange.from=e),this._speedSampler.reset(),e||(this._fullRequestFlag=!0),this._loader.open(this._dataSource,Object.assign({},this._currentRange))}abort(){this._loader.abort(),this._paused&&(this._paused=!1,this._resumeFrom=0)}pause(){this.isWorking()&&(this._loader.abort(),this._stashUsed!==0?(this._resumeFrom=this._stashByteStart,this._currentRange.to=this._stashByteStart-1):this._resumeFrom=this._currentRange.to+1,this._stashUsed=0,this._stashByteStart=0,this._paused=!0)}resume(){if(this._paused){this._paused=!1;let e=this._resumeFrom;this._resumeFrom=0,this._internalSeek(e,!0)}}seek(e){this._paused=!1,this._stashUsed=0,this._stashByteStart=0,this._internalSeek(e,!0)}_internalSeek(e,t){this._loader.isWorking()&&this._loader.abort(),this._flushStashBuffer(t),this._loader.destroy(),this._loader=null;let i={from:e,to:-1};this._currentRange={from:i.from,to:-1},this._speedSampler.reset(),this._stashSize=this._stashInitialSize,this._createLoader(),this._loader.open(this._dataSource,i),this._onSeeked&&this._onSeeked()}updateUrl(e){if(!e||typeof e!="string"||e.length===0)throw new be("Url must be a non-empty string!");this._dataSource.url=e}_expandBuffer(e){let t=this._stashSize;for(;t+1024*1024*1<e;)t*=2;if(t+=1024*1024*1,t===this._bufferSize)return;let i=new ArrayBuffer(t);if(this._stashUsed>0){let r=new Uint8Array(this._stashBuffer,0,this._stashUsed);new Uint8Array(i,0,t).set(r,0)}this._stashBuffer=i,this._bufferSize=t}_normalizeSpeed(e){let t=this._speedNormalizeList,i=t.length-1,r=0,n=0,a=i;if(e<t[0])return t[0];for(;n<=a;){if(r=n+Math.floor((a-n)/2),r===i||e>=t[r]&&e<t[r+1])return t[r];t[r]<e?n=r+1:a=r-1}}_adjustStashSize(e){let t=0;this._config.isLive?t=e/8:e<512?t=e:e>=512&&e<=1024?t=Math.floor(e*1.5):t=e*2,t>8192&&(t=8192);let i=t*1024+1024*1024*1;this._bufferSize<i&&this._expandBuffer(i),this._stashSize=t*1024}_dispatchChunks(e,t){return this._currentRange.to=t+e.byteLength-1,this._onDataArrival(e,t)}_onURLRedirect(e){this._redirectedURL=e,this._onRedirect&&this._onRedirect(e)}_onContentLengthKnown(e){e&&this._fullRequestFlag&&(this._totalLength=e,this._fullRequestFlag=!1)}_onLoaderChunkArrival(e,t,i){if(!this._onDataArrival)throw new se("IOController: No existing consumer (onDataArrival) callback!");if(this._paused)return;this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,this._onRecoveredEarlyEof&&this._onRecoveredEarlyEof()),this._speedSampler.addBytes(e.byteLength);let r=this._speedSampler.lastSecondKBps;if(r!==0){let n=this._normalizeSpeed(r);this._speedNormalized!==n&&(this._speedNormalized=n,this._adjustStashSize(n))}if(this._enableStash)if(this._stashUsed===0&&this._stashByteStart===0&&(this._stashByteStart=t),this._stashUsed+e.byteLength<=this._stashSize)new Uint8Array(this._stashBuffer,0,this._stashSize).set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength;else{let n=new Uint8Array(this._stashBuffer,0,this._bufferSize);if(this._stashUsed>0){let a=this._stashBuffer.slice(0,this._stashUsed),s=this._dispatchChunks(a,this._stashByteStart);if(s<a.byteLength){if(s>0){let l=new Uint8Array(a,s);n.set(l,0),this._stashUsed=l.byteLength,this._stashByteStart+=s}}else this._stashUsed=0,this._stashByteStart+=s;this._stashUsed+e.byteLength>this._bufferSize&&(this._expandBuffer(this._stashUsed+e.byteLength),n=new Uint8Array(this._stashBuffer,0,this._bufferSize)),n.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength}else{let a=this._dispatchChunks(e,t);if(a<e.byteLength){let s=e.byteLength-a;s>this._bufferSize&&(this._expandBuffer(s),n=new Uint8Array(this._stashBuffer,0,this._bufferSize)),n.set(new Uint8Array(e,a),0),this._stashUsed+=s,this._stashByteStart=t+a}}}else if(this._stashUsed===0){let n=this._dispatchChunks(e,t);if(n<e.byteLength){let a=e.byteLength-n;a>this._bufferSize&&this._expandBuffer(a),new Uint8Array(this._stashBuffer,0,this._bufferSize).set(new Uint8Array(e,n),0),this._stashUsed+=a,this._stashByteStart=t+n}}else{this._stashUsed+e.byteLength>this._bufferSize&&this._expandBuffer(this._stashUsed+e.byteLength);let n=new Uint8Array(this._stashBuffer,0,this._bufferSize);n.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength;let a=this._dispatchChunks(this._stashBuffer.slice(0,this._stashUsed),this._stashByteStart);if(a<this._stashUsed&&a>0){let s=new Uint8Array(this._stashBuffer,a);n.set(s,0)}this._stashUsed-=a,this._stashByteStart+=a}}_flushStashBuffer(e){if(this._stashUsed>0){let t=this._stashBuffer.slice(0,this._stashUsed),i=this._dispatchChunks(t,this._stashByteStart),r=t.byteLength-i;if(i<t.byteLength)if(e)g.w(this.TAG,`${r} bytes unconsumed data remain when flush buffer, dropped`);else{if(i>0){let n=new Uint8Array(this._stashBuffer,0,this._bufferSize),a=new Uint8Array(t,i);n.set(a,0),this._stashUsed=a.byteLength,this._stashByteStart+=i}return 0}return this._stashUsed=0,this._stashByteStart=0,r}return 0}_onLoaderComplete(e,t){this._flushStashBuffer(!0),this._onComplete&&this._onComplete(this._extraData)}_onLoaderError(e,t){switch(g.e(this.TAG,`Loader error, code = ${t.code}, msg = ${t.msg}`),this._flushStashBuffer(!1),this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,e=q.UNRECOVERABLE_EARLY_EOF),e){case q.EARLY_EOF:{if(!this._config.isLive&&this._totalLength){let i=this._currentRange.to+1;i<this._totalLength&&(g.w(this.TAG,"Connection lost, trying reconnect..."),this._isEarlyEofReconnecting=!0,this._internalSeek(i,!1));return}e=q.UNRECOVERABLE_EARLY_EOF;break}case q.UNRECOVERABLE_EARLY_EOF:case q.CONNECTING_TIMEOUT:case q.HTTP_STATUS_CODE_INVALID:case q.EXCEPTION:break}if(this._onError)this._onError(e,t);else throw new ne("IOException: "+t.msg)}},Nt=ar;var la={IO_ERROR:"io_error",DEMUX_ERROR:"demux_error",INIT_SEGMENT:"init_segment",MEDIA_SEGMENT:"media_segment",LOADING_COMPLETE:"loading_complete",RECOVERED_EARLY_EOF:"recovered_early_eof",MEDIA_INFO:"media_info",METADATA_ARRIVED:"metadata_arrived",SCRIPTDATA_ARRIVED:"scriptdata_arrived",TIMED_ID3_METADATA_ARRIVED:"timed_id3_metadata_arrived",STATISTICS_INFO:"statistics_info",RECOMMEND_SEEKPOINT:"recommend_seekpoint"},M=la;var sr=class{constructor(e,t){d(this,"TAG","TransmuxingController");d(this,"_emitter",new Ee);d(this,"_config");d(this,"_mediaDataSource");d(this,"_currentSegmentIndex",0);d(this,"_remuxerRouter");d(this,"_demuxer",null);d(this,"_mediaInfo",null);d(this,"_ioctl",null);d(this,"_hasAudioTrack",!1);d(this,"_hasVideoTrack",!1);d(this,"_hasSelectedRemuxerForCodecs",!1);d(this,"_pendingTrackMetadata",[]);d(this,"_pendingSeekTime",null);d(this,"_pendingResolveSeekPoint",null);d(this,"_statisticsReporter",null);this._config=t,e.segments||(e.segments=[{duration:e.duration,filesize:e.filesize,url:e.url}]),typeof e.cors!="boolean"&&(e.cors=!0),typeof e.withCredentials!="boolean"&&(e.withCredentials=!1),this._mediaDataSource=e,this._remuxerRouter=new Qr;let i=0;this._mediaDataSource.segments.forEach(r=>{r.timestampBase=i,i+=r.duration,r.cors=e.cors,r.withCredentials=e.withCredentials,t.referrerPolicy&&(r.referrerPolicy=t.referrerPolicy)}),!isNaN(i)&&this._mediaDataSource.duration!==i&&(this._mediaDataSource.duration=i)}_getPreferredRemuxerType(){return this._config.preferWebM?"webm":"mp4"}_createRemuxer(e){return e==="webm"?new di(this._config):new oi(this._config)}_configureRemuxerRouter(e,t){this._remuxerRouter.configure(this._createRemuxer(e),this._createRemuxer(t))}_selectAudioRemuxerType(e){return this._getPreferredRemuxerType()==="webm"&&e.codec==="opus"?"webm":"mp4"}_selectVideoRemuxerType(e){switch(e){case ce.Vp9:return"webm";case ce.Av1:return this._getPreferredRemuxerType();case ce.Avc:case ce.Hevc:case ce.Vp8:default:return"mp4"}}_bindRemuxerRouterToDemuxer(){this._demuxer&&(this._demuxer.remuxerRouter=this._remuxerRouter,this._demuxer.onTrackData=this._onTrackData.bind(this),this._demuxer.onTrackMetadata=this._onTrackMetadata.bind(this),this._remuxerRouter.onInitSegment=this._onRemuxerInitSegmentArrival.bind(this),this._remuxerRouter.onMediaSegment=this._onRemuxerMediaSegmentArrival.bind(this))}_switchRemuxersIfNeeded(e){let t=e.find(a=>a.type===w.Audio),i=e.find(a=>a.type===w.Video),r=t?this._selectAudioRemuxerType(t):"mp4",n=i?this._selectVideoRemuxerType(i.codecKind):"mp4";g.i(this.TAG,`Selected remuxers: audio=${r}${t?` (${t.codec})`:""}, video=${n}${i?` (${i.codec})`:""}`),this._configureRemuxerRouter(r,n),this._bindRemuxerRouterToDemuxer()}_hasMetadataForAllTracks(){return(!this._hasAudioTrack||this._pendingTrackMetadata.some(e=>e.type===w.Audio))&&(!this._hasVideoTrack||this._pendingTrackMetadata.some(e=>e.type===w.Video))}destroy(){this._mediaInfo=null,this._mediaDataSource=null,this._statisticsReporter&&this._disableStatisticsReporter(),this._ioctl&&(this._ioctl.destroy(),this._ioctl=null),this._demuxer&&(this._demuxer.destroy(),this._demuxer=null),this._remuxerRouter&&this._remuxerRouter.destroy(),this._emitter.removeAllListeners()}on(e,t){this._emitter.addListener(e,t)}off(e,t){this._emitter.removeListener(e,t)}start(){this._loadSegment(0),this._enableStatisticsReporter()}_loadSegment(e,t){this._currentSegmentIndex=e;let i=this._mediaDataSource.segments[e],r=this._ioctl=new Nt(i,this._config,e);r.onError=this._onIOException.bind(this),r.onSeeked=this._onIOSeeked.bind(this),r.onComplete=this._onIOComplete.bind(this),r.onRedirect=this._onIORedirect.bind(this),r.onRecoveredEarlyEof=this._onIORecoveredEarlyEof.bind(this),t?this._demuxer.bindDataSource(this._ioctl):r.onDataArrival=this._onInitChunkArrival.bind(this),r.open(t)}stop(){this._internalAbort(),this._disableStatisticsReporter()}_internalAbort(){this._ioctl&&(this._ioctl.destroy(),this._ioctl=null)}pause(){this._ioctl&&this._ioctl.isWorking()&&(this._ioctl.pause(),this._disableStatisticsReporter())}resume(){this._ioctl&&this._ioctl.isPaused()&&(this._ioctl.resume(),this._enableStatisticsReporter())}seek(e){if(this._mediaInfo==null||!this._mediaInfo.isSeekable())return;let t=this._searchSegmentIndexContains(e);if(t===this._currentSegmentIndex){let i=this._mediaInfo.segments[t];if(i==null)this._pendingSeekTime=e;else{let r=i.getNearestKeyframe(e);this._remuxerRouter.clear(),this._ioctl.seek(r.fileposition),this._pendingResolveSeekPoint=r.milliseconds}}else{let i=this._mediaInfo.segments[t];if(i==null)this._pendingSeekTime=e,this._internalAbort(),this._remuxerRouter.clear(),this._remuxerRouter.insertDiscontinuity(),this._loadSegment(t);else{let r=i.getNearestKeyframe(e);this._internalAbort(),this._remuxerRouter.clear(),this._remuxerRouter.insertDiscontinuity(),this._demuxer.resetMediaInfo(),this._demuxer.timestampBase=this._mediaDataSource.segments[t].timestampBase,this._loadSegment(t,r.fileposition),this._pendingResolveSeekPoint=r.milliseconds,this._reportSegmentMediaInfo(t)}}this._enableStatisticsReporter()}_searchSegmentIndexContains(e){let t=this._mediaDataSource.segments,i=t.length-1;for(let r=0;r<t.length;r++)if(e<t[r].timestampBase){i=r-1;break}return i}_onInitChunkArrival(e,t){let i=0;if(t>0)this._demuxer.bindDataSource(this._ioctl),this._demuxer.timestampBase=this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase,i=this._demuxer.parseChunks(e,t);else{let r=vt.probe(e);"match"in r&&r.match?(this._setupFLVDemuxerRemuxer(r),i=this._demuxer.parseChunks(e,t)):"needMoreData"in r&&r.needMoreData||(g.e(this.TAG,"Non MPEG-TS/FLV, Unsupported media type!"),Promise.resolve().then(()=>{this._internalAbort()}),this._emitter.emit(M.DEMUX_ERROR,G.FORMAT_UNSUPPORTED,"Non MPEG-TS/FLV, Unsupported media type!"))}return i}_setupFLVDemuxerRemuxer(e){this._demuxer=new vt(e,this._config,this._remuxerRouter);let t=this._mediaDataSource;this._hasAudioTrack=e.hasAudioTrack,this._hasVideoTrack=e.hasVideoTrack,this._hasSelectedRemuxerForCodecs=!1,this._pendingTrackMetadata=[],t.duration!=null&&!isNaN(t.duration)&&(this._demuxer.overridedDuration=t.duration),typeof t.hasAudio=="boolean"&&(this._demuxer.overridedHasAudio=t.hasAudio,this._hasAudioTrack=t.hasAudio&&e.hasAudioTrack),typeof t.hasVideo=="boolean"&&(this._demuxer.overridedHasVideo=t.hasVideo,this._hasVideoTrack=t.hasVideo&&e.hasVideoTrack),this._demuxer.timestampBase=t.segments[this._currentSegmentIndex].timestampBase,this._demuxer.onError=this._onDemuxException.bind(this),this._demuxer.onMediaInfo=this._onMediaInfo.bind(this),this._demuxer.onScriptMetadata=this._onScriptMetadata.bind(this),this._demuxer.onScriptData=this._onScriptData.bind(this),this._demuxer.bindDataSource(this._ioctl),this._bindRemuxerRouterToDemuxer()}_onTrackData(e,t){this._hasSelectedRemuxerForCodecs&&this._remuxerRouter.remuxTrackData(e,t)}_onTrackMetadata(e){if(!this._hasSelectedRemuxerForCodecs){if(this._pendingTrackMetadata.push(e),!this._hasMetadataForAllTracks())return;for(this._hasSelectedRemuxerForCodecs=!0,this._switchRemuxersIfNeeded(this._pendingTrackMetadata);this._pendingTrackMetadata.length>0;)this._remuxerRouter.remuxTrackMetadata(this._pendingTrackMetadata.shift());this._remuxerRouter.flushPendingInitSegments();return}this._remuxerRouter.remuxTrackMetadata(e)}_onMediaInfo(e){this._mediaInfo==null&&(this._mediaInfo=Object.assign({},e),this._mediaInfo.keyframesIndex=null,this._mediaInfo.segments=[],this._mediaInfo.segmentCount=this._mediaDataSource.segments.length,Object.setPrototypeOf(this._mediaInfo,Ne.prototype));let t=Object.assign({},e);Object.setPrototypeOf(t,Ne.prototype),this._mediaInfo.segments[this._currentSegmentIndex]=t,this._reportSegmentMediaInfo(this._currentSegmentIndex),this._pendingSeekTime!=null&&Promise.resolve().then(()=>{let i=this._pendingSeekTime;this._pendingSeekTime=null,this.seek(i)})}_onScriptMetadata(e){this._emitter.emit(M.METADATA_ARRIVED,e)}_onScriptData(e){this._emitter.emit(M.SCRIPTDATA_ARRIVED,e)}_onTimedID3Metadata(e){let t=this._remuxerRouter.timestampBase;t!=null&&(e.pts!=null&&(e.pts-=t),e.dts!=null&&(e.dts-=t),this._emitter.emit(M.TIMED_ID3_METADATA_ARRIVED,e))}_onIOSeeked(){this._remuxerRouter.insertDiscontinuity()}_onIOComplete(e){let i=e+1;i<this._mediaDataSource.segments.length?(this._internalAbort(),this._remuxerRouter&&this._remuxerRouter.flushStashedFrames(),this._loadSegment(i)):(this._remuxerRouter&&this._remuxerRouter.flushStashedFrames(),this._emitter.emit(M.LOADING_COMPLETE),this._disableStatisticsReporter())}_onIORedirect(e){let t=this._ioctl.extraData;this._mediaDataSource.segments[t].redirectedURL=e}_onIORecoveredEarlyEof(){this._emitter.emit(M.RECOVERED_EARLY_EOF)}_onIOException(e,t){g.e(this.TAG,`IOException: type = ${e}, code = ${t.code}, msg = ${t.msg}`),this._emitter.emit(M.IO_ERROR,e,t),this._disableStatisticsReporter()}_onDemuxException(e,t){g.e(this.TAG,`DemuxException: type = ${e}, info = ${t}`),this._emitter.emit(M.DEMUX_ERROR,e,t),e===G.FORMAT_UNSUPPORTED&&this.stop()}_onRemuxerInitSegmentArrival(e,t){this._emitter.emit(M.INIT_SEGMENT,e,t)}_onRemuxerMediaSegmentArrival(e,t){if(this._pendingSeekTime==null&&(this._emitter.emit(M.MEDIA_SEGMENT,e,t),this._pendingResolveSeekPoint!=null&&e==="video")){let i=t.info.syncPoints,r=this._pendingResolveSeekPoint;this._pendingResolveSeekPoint=null,ie.safari&&i.length>0&&i[0].originalDts===r&&(r=i[0].pts),this._emitter.emit(M.RECOMMEND_SEEKPOINT,r)}}_enableStatisticsReporter(){this._statisticsReporter==null&&(this._statisticsReporter=self.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval))}_disableStatisticsReporter(){this._statisticsReporter&&(self.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}_reportSegmentMediaInfo(e){var l;let t=this._mediaInfo,i=(l=t==null?void 0:t.segments)==null?void 0:l[e];if(!i)return;let u=i,{keyframesIndex:r,segments:n}=u,a=Tr(u,["keyframesIndex","segments"]),s=te(K({},a),{duration:t.duration,segmentCount:t.segmentCount});this._emitter.emit(M.MEDIA_INFO,s)}_reportStatisticsInfo(){let e={};e.url=this._ioctl.currentURL,e.hasRedirect=this._ioctl.hasRedirect,e.hasRedirect&&(e.redirectedURL=this._ioctl.currentRedirectedURL),e.speed=this._ioctl.currentSpeed,e.loaderType=this._ioctl.loaderType,e.currentSegmentIndex=this._currentSegmentIndex,e.totalSegmentCount=this._mediaDataSource.segments.length,this._emitter.emit(M.STATISTICS_INFO,e)}},or=sr;var da={};var lr=class{constructor(e,t){d(this,"TAG","Transmuxer");d(this,"_emitter");d(this,"_worker",null);d(this,"_workerDestroying",!1);d(this,"_controller",null);d(this,"e",null);if(this._emitter=new Ee,t.enableWorker&&typeof Worker!="undefined")try{this._worker=new Worker(new URL("./transmuxing-worker.js",da.url)),this._workerDestroying=!1,this._worker.addEventListener("message",this._onWorkerMessage.bind(this)),this._worker.postMessage({cmd:"init",param:[e,t]}),this.e={onLoggingConfigChanged:this._onLoggingConfigChanged.bind(this)},Ge.registerListener(this.e.onLoggingConfigChanged),this._worker.postMessage({cmd:"logging_config",param:Ge.getConfig()})}catch(i){g.e(this.TAG,"Error while initialize transmuxing worker, fallback to inline transmuxing"),this._worker=null,this._controller=new or(e,t)}else this._controller=new or(e,t);if(this._controller){let i=this._controller;i.on(M.IO_ERROR,this._onIOError.bind(this)),i.on(M.DEMUX_ERROR,this._onDemuxError.bind(this)),i.on(M.INIT_SEGMENT,this._onInitSegment.bind(this)),i.on(M.MEDIA_SEGMENT,this._onMediaSegment.bind(this)),i.on(M.LOADING_COMPLETE,this._onLoadingComplete.bind(this)),i.on(M.RECOVERED_EARLY_EOF,this._onRecoveredEarlyEof.bind(this)),i.on(M.MEDIA_INFO,this._onMediaInfo.bind(this)),i.on(M.METADATA_ARRIVED,this._onScriptMetadata.bind(this)),i.on(M.SCRIPTDATA_ARRIVED,this._onScriptData.bind(this)),i.on(M.TIMED_ID3_METADATA_ARRIVED,this._onTimedID3MetadataArrived.bind(this)),i.on(M.STATISTICS_INFO,this._onStatisticsInfo.bind(this)),i.on(M.RECOMMEND_SEEKPOINT,this._onRecommendSeekpoint.bind(this))}}destroy(){this._worker?this._workerDestroying||(this._workerDestroying=!0,this._worker.postMessage({cmd:"destroy"}),this.e&&Ge.removeListener(this.e.onLoggingConfigChanged),this.e=null):this._controller&&(this._controller.destroy(),this._controller=null),this._emitter.removeAllListeners()}on(e,t){this._emitter.addListener(e,t)}off(e,t){this._emitter.removeListener(e,t)}hasWorker(){return this._worker!=null}open(){var e;this._worker?this._worker.postMessage({cmd:"start"}):(e=this._controller)==null||e.start()}close(){var e;this._worker?this._worker.postMessage({cmd:"stop"}):(e=this._controller)==null||e.stop()}seek(e){var t;this._worker?this._worker.postMessage({cmd:"seek",param:e}):(t=this._controller)==null||t.seek(e)}pause(){var e;this._worker?this._worker.postMessage({cmd:"pause"}):(e=this._controller)==null||e.pause()}resume(){var e;this._worker?this._worker.postMessage({cmd:"resume"}):(e=this._controller)==null||e.resume()}_onInitSegment(e,t){Promise.resolve().then(()=>{this._emitter.emit(M.INIT_SEGMENT,e,t)})}_onMediaSegment(e,t){Promise.resolve().then(()=>{this._emitter.emit(M.MEDIA_SEGMENT,e,t)})}_onLoadingComplete(){Promise.resolve().then(()=>{this._emitter.emit(M.LOADING_COMPLETE)})}_onRecoveredEarlyEof(){Promise.resolve().then(()=>{this._emitter.emit(M.RECOVERED_EARLY_EOF)})}_onMediaInfo(e){Promise.resolve().then(()=>{this._emitter.emit(M.MEDIA_INFO,e)})}_onScriptMetadata(e){Promise.resolve().then(()=>{this._emitter.emit(M.METADATA_ARRIVED,e)})}_onScriptData(e){Promise.resolve().then(()=>{this._emitter.emit(M.SCRIPTDATA_ARRIVED,e)})}_onTimedID3MetadataArrived(e){Promise.resolve().then(()=>{this._emitter.emit(M.TIMED_ID3_METADATA_ARRIVED,e)})}_onStatisticsInfo(e){Promise.resolve().then(()=>{this._emitter.emit(M.STATISTICS_INFO,e)})}_onIOError(e,t){Promise.resolve().then(()=>{this._emitter.emit(M.IO_ERROR,e,t)})}_onDemuxError(e,t){Promise.resolve().then(()=>{this._emitter.emit(M.DEMUX_ERROR,e,t)})}_onRecommendSeekpoint(e){Promise.resolve().then(()=>{this._emitter.emit(M.RECOMMEND_SEEKPOINT,e)})}_onLoggingConfigChanged(e){this._worker&&this._worker.postMessage({cmd:"logging_config",param:e})}_onWorkerMessage(e){var i;let t=e.data;if(t.msg==="destroyed"||this._workerDestroying){this._workerDestroying=!1,(i=this._worker)==null||i.terminate(),this._worker=null;return}switch(t.msg){case M.INIT_SEGMENT:case M.MEDIA_SEGMENT:this._emitter.emit(t.msg,t.data.type,t.data.data);break;case M.LOADING_COMPLETE:case M.RECOVERED_EARLY_EOF:this._emitter.emit(t.msg);break;case M.MEDIA_INFO:Object.setPrototypeOf(t.data,Ne.prototype),this._emitter.emit(t.msg,t.data);break;case M.METADATA_ARRIVED:case M.SCRIPTDATA_ARRIVED:case M.TIMED_ID3_METADATA_ARRIVED:case M.STATISTICS_INFO:this._emitter.emit(t.msg,t.data);break;case M.IO_ERROR:case M.DEMUX_ERROR:this._emitter.emit(t.msg,t.data.type,t.data.info);break;case M.RECOMMEND_SEEKPOINT:this._emitter.emit(t.msg,t.data);break;case"logcat_callback":g.emitLog(t.data.type,t.data.logcat);break;default:break}}},tn=lr;var St={NETWORK_ERROR:"NetworkError",MEDIA_ERROR:"MediaError",OTHER_ERROR:"OtherError"},hi={NETWORK_EXCEPTION:q.EXCEPTION,NETWORK_STATUS_CODE_INVALID:q.HTTP_STATUS_CODE_INVALID,NETWORK_TIMEOUT:q.CONNECTING_TIMEOUT,NETWORK_UNRECOVERABLE_EARLY_EOF:q.UNRECOVERABLE_EARLY_EOF,MEDIA_MSE_ERROR:"MediaMSEError",MEDIA_FORMAT_ERROR:G.FORMAT_ERROR,MEDIA_FORMAT_UNSUPPORTED:G.FORMAT_UNSUPPORTED,MEDIA_CODEC_UNSUPPORTED:G.CODEC_UNSUPPORTED};var Ke=ie,dr=class o{constructor(e,t,i){d(this,"TAG","SeekingHandler");d(this,"_config");d(this,"_media_element");d(this,"_always_seek_keyframe",!1);d(this,"_on_unbuffered_seek");d(this,"_request_set_current_time",!1);d(this,"_seek_request_record_clocktime",null);d(this,"_idr_sample_list",new Yt);d(this,"e",null);this._config=e,this._media_element=t,this._on_unbuffered_seek=i,this.e={onMediaSeeking:this._onMediaSeeking.bind(this)};let r=Ke.chrome&&(Ke.version.major<50||Ke.version.major===50&&Ke.version.build<2661);this._always_seek_keyframe=!!(r||Ke.msedge||Ke.msie),this._always_seek_keyframe&&(this._config.accurateSeek=!1),this._media_element.addEventListener("seeking",this.e.onMediaSeeking)}destroy(){this._idr_sample_list.clear(),this._media_element.removeEventListener("seeking",this.e.onMediaSeeking)}seek(e){let t=this._isPositionBuffered(e),i=!1;if(e<1&&this._media_element.buffered.length>0){let r=this._media_element.buffered.start(0);(r<1&&e<r||Ke.safari)&&(i=!0,e=Ke.safari?.1:r)}if(i)this.directSeek(e);else if(t)if(!this._always_seek_keyframe)this.directSeek(e);else{let r=this._getNearestKeyframe(Math.floor(e*1e3));r!=null&&(e=r.dts/1e3),this.directSeek(e)}else this._idr_sample_list.clear(),this._on_unbuffered_seek(Math.floor(e*1e3)),this._config.accurateSeek&&this.directSeek(e)}directSeek(e){this._request_set_current_time=!0,this._media_element.currentTime=e}appendSyncPoints(e){this._idr_sample_list.appendArray(e)}_onMediaSeeking(e){if(this._request_set_current_time){this._request_set_current_time=!1;return}let t=this._media_element.currentTime,i=this._media_element.buffered;if(t<1&&i.length>0){let r=i.start(0);if(r<1&&t<r||Ke.safari){let n=Ke.safari?.1:r;this.directSeek(n);return}}if(this._isPositionBuffered(t)){if(this._always_seek_keyframe){let r=this._getNearestKeyframe(Math.floor(t*1e3));r!=null&&(t=r.dts/1e3,this.directSeek(t))}return}this._seek_request_record_clocktime=o._getClockTime(),window.setTimeout(this._pollAndApplyUnbufferedSeek.bind(this),50)}_pollAndApplyUnbufferedSeek(){if(this._seek_request_record_clocktime==null)return;if(this._seek_request_record_clocktime<=o._getClockTime()-100){let t=this._media_element.currentTime;this._seek_request_record_clocktime=null,this._isPositionBuffered(t)||(this._idr_sample_list.clear(),this._on_unbuffered_seek(Math.floor(t*1e3)),this._config.accurateSeek&&this.directSeek(t))}else window.setTimeout(this._pollAndApplyUnbufferedSeek.bind(this),50)}_isPositionBuffered(e){let t=this._media_element.buffered;for(let i=0;i<t.length;i++){let r=t.start(i),n=t.end(i);if(e>=r&&e<n)return!0}return!1}_getNearestKeyframe(e){return this._idr_sample_list.getLastSyncPointBeforeDts(e)}static _getClockTime(){return self.performance&&self.performance.now?self.performance.now():Date.now()}},_i=dr;var At=class At{constructor(e,t,i,r){d(this,"_config");d(this,"_media_element");d(this,"_on_pause_transmuxer");d(this,"_on_resume_transmuxer");d(this,"_paused",!1);d(this,"e",null);d(this,"_lazyLoadMaxDuration");d(this,"_lazyLoadRecoverDuration");this._config=e,this._lazyLoadMaxDuration=e.lazyLoadMaxDuration,this._lazyLoadRecoverDuration=e.lazyLoadRecoverDuration,this._media_element=t,this._on_pause_transmuxer=i,this._on_resume_transmuxer=r,this.e={onMediaTimeUpdate:this._onMediaTimeUpdate.bind(this)}}destroy(){this._media_element.removeEventListener("timeupdate",this.e.onMediaTimeUpdate),this.e=null}adjustLazyLoadDurations(e){this._lazyLoadMaxDuration=Math.max(4,this._lazyLoadMaxDuration*e),this._lazyLoadRecoverDuration=Math.max(2,this._lazyLoadRecoverDuration*e),g.v(At.TAG,`Adjusted lazy load durations (factor: ${e}) to - Max: ${this._lazyLoadMaxDuration}, Recover: ${this._lazyLoadRecoverDuration}`)}notifyBufferedPositionChanged(e){this._config.isLive||!this._config.lazyLoad||(e==null?this._suspendTransmuxerIfNeeded():this._suspendTransmuxerIfBufferedPositionExceeded(e))}_onMediaTimeUpdate(e){this._paused&&this._resumeTransmuxerIfNeeded()}_suspendTransmuxerIfNeeded(){let e=this._media_element.buffered,t=this._media_element.currentTime,i=0;for(let r=0;r<e.length;r++){let n=e.start(r),a=e.end(r);if(n<=t&&t<a){i=a;break}}i>0&&this._suspendTransmuxerIfBufferedPositionExceeded(i)}_suspendTransmuxerIfBufferedPositionExceeded(e){let t=this._media_element.currentTime;e>=t+this._lazyLoadMaxDuration&&!this._paused&&(g.v(At.TAG,".   Maximum buffering duration exceeded, suspend transmuxing task"),this.suspendTransmuxer(),this._media_element.addEventListener("timeupdate",this.e.onMediaTimeUpdate))}suspendTransmuxer(){this._paused=!0,this._on_pause_transmuxer()}_resumeTransmuxerIfNeeded(){let e=this._media_element.buffered,t=this._media_element.currentTime,i=this._lazyLoadRecoverDuration,r=!1;for(let n=0;n<e.length;n++){let a=e.start(n),s=e.end(n);if(t>=a&&t<s){t>=s-i&&(r=!0);break}}r&&(g.v(At.TAG,"Continue loading from paused position"),this.resumeTransmuxer(),this._media_element.removeEventListener("timeupdate",this.e.onMediaTimeUpdate))}resumeTransmuxer(){this._paused=!1,this._on_resume_transmuxer()}};d(At,"TAG","LoadingController");var ur=At,fi=ur;var cr=class{constructor(e,t){d(this,"TAG","StartupStallJumper");d(this,"_media_element");d(this,"_on_direct_seek");d(this,"_canplay_received",!1);d(this,"e",null);this._media_element=e,this._on_direct_seek=t,this.e={onMediaCanPlay:this._onMediaCanPlay.bind(this),onMediaStalled:this._onMediaStalled.bind(this),onMediaProgress:this._onMediaProgress.bind(this)},this._media_element.addEventListener("canplay",this.e.onMediaCanPlay),this._media_element.addEventListener("stalled",this.e.onMediaStalled),this._media_element.addEventListener("progress",this.e.onMediaProgress)}destroy(){this._media_element.removeEventListener("canplay",this.e.onMediaCanPlay),this._media_element.removeEventListener("stalled",this.e.onMediaStalled),this._media_element.removeEventListener("progress",this.e.onMediaProgress)}_onMediaCanPlay(e){this._canplay_received=!0,this._media_element.removeEventListener("canplay",this.e.onMediaCanPlay)}_onMediaStalled(e){this._detectAndFixStuckPlayback(!0)}_onMediaProgress(e){this._detectAndFixStuckPlayback()}_detectAndFixStuckPlayback(e){let t=this._media_element,i=t.buffered;e||!this._canplay_received||t.readyState<2?i.length>0&&t.currentTime<i.start(0)&&(g.w(this.TAG,`Playback seems stuck at ${t.currentTime}, seek to ${i.start(0)}`),this._on_direct_seek(i.start(0)),this._media_element.removeEventListener("progress",this.e.onMediaProgress)):this._media_element.removeEventListener("progress",this.e.onMediaProgress)}},mi=cr;var hr=class{constructor(e,t,i){d(this,"_config");d(this,"_media_element");d(this,"_on_direct_seek");this._config=e,this._media_element=t,this._on_direct_seek=i}notifyBufferedRangeUpdate(){this._chaseLiveLatency()}_chaseLiveLatency(){let e=this._media_element.buffered,t=this._media_element.currentTime,i=this._media_element.paused;if(!this._config.isLive||!this._config.liveBufferLatencyChasing||e.length==0||!this._config.liveBufferLatencyChasingOnPaused&&i)return;let r=e.end(e.length-1);if(r>this._config.liveBufferLatencyMaxLatency&&r-t>this._config.liveBufferLatencyMaxLatency){let n=r-this._config.liveBufferLatencyMinRemain;this._on_direct_seek(n)}}},pi=hr;var _r=class{constructor(e,t){d(this,"_config",null);d(this,"_media_element");d(this,"e",null);this._config=e,this._media_element=t,this.e={onMediaTimeUpdate:this._onMediaTimeUpdate.bind(this)},this._media_element.addEventListener("timeupdate",this.e.onMediaTimeUpdate)}destroy(){this._media_element.removeEventListener("timeupdate",this.e.onMediaTimeUpdate),this._media_element=null,this._config=null}_onMediaTimeUpdate(e){if(!this._config.isLive||!this._config.liveSync)return;let t=this._getCurrentLatency();if(t>this._config.liveSyncMaxLatency){let i=Math.min(2,Math.max(1,this._config.liveSyncPlaybackRate));this._media_element.playbackRate=i}else t>this._config.liveSyncTargetLatency||this._media_element.playbackRate!==1&&this._media_element.playbackRate!==0&&(this._media_element.playbackRate=1)}_getCurrentLatency(){if(!this._media_element)return 0;let e=this._media_element.buffered,t=this._media_element.currentTime;return e.length==0?0:e.end(e.length-1)-t}},gi=_r;var fr=class{constructor(e,t){d(this,"TAG","PlayerEngineMainThread");d(this,"_emitter",new Ee);d(this,"_media_data_source");d(this,"_config");d(this,"_media_element",null);d(this,"_mse_controller",null);d(this,"_transmuxer",null);d(this,"_pending_seek_time",null);d(this,"_seeking_handler",null);d(this,"_loading_controller",null);d(this,"_startup_stall_jumper",null);d(this,"_live_latency_chaser",null);d(this,"_live_latency_synchronizer",null);d(this,"_mse_source_opened",!1);d(this,"_has_pending_load",!1);d(this,"_loaded_metadata_received",!1);d(this,"_media_info",null);d(this,"_statistics_info",null);d(this,"e",null);this._media_data_source=e,this._config=te(K(K({},Lt),t),{isLive:e.isLive===!0||(t==null?void 0:t.isLive)===!0}),this.e={onMediaLoadedMetadata:this._onMediaLoadedMetadata.bind(this)}}destroy(){var e,t;(e=this._emitter)==null||e.emit($.DESTROYING),this._transmuxer&&this.unload(),this._media_element&&this.detachMediaElement(),this.e=null,this._media_data_source=null,(t=this._emitter)==null||t.removeAllListeners(),this._emitter=null}on(e,t){var i;(i=this._emitter)==null||i.addListener(e,t),e===$.MEDIA_INFO&&this._media_info?Promise.resolve().then(()=>{var r;return(r=this._emitter)==null?void 0:r.emit($.MEDIA_INFO,this.mediaInfo)}):e==$.STATISTICS_INFO&&this._statistics_info&&Promise.resolve().then(()=>{var r;return(r=this._emitter)==null?void 0:r.emit($.STATISTICS_INFO,this.statisticsInfo)})}off(e,t){var i;(i=this._emitter)==null||i.removeListener(e,t)}attachMediaElement(e){this._media_element=e,e.src="",e.removeAttribute("src"),e.srcObject=null,e.load(),e.addEventListener("loadedmetadata",this.e.onMediaLoadedMetadata);let t={getCurrentTime:()=>e.currentTime,getReadyState:()=>e.readyState,getError:()=>e.error,setOnMediaTimeUpdate:i=>{e.ontimeupdate=i}};this._mse_controller=new Ur(this._config,t),this._mse_controller.on(ae.UPDATE_END,this._onMSEUpdateEnd.bind(this)),this._mse_controller.on(ae.BUFFER_FULL,this._onMSEBufferFull.bind(this)),this._mse_controller.on(ae.QUOTA_EXCEEDED_BUFFER_FULL,this._onMSEQuotaExceededBufferFull.bind(this)),this._mse_controller.on(ae.SOURCE_OPEN,this._onMSESourceOpen.bind(this)),this._mse_controller.on(ae.ERROR,this._onMSEError.bind(this)),this._mse_controller.on(ae.START_STREAMING,this._onMSEStartStreaming.bind(this)),this._mse_controller.on(ae.END_STREAMING,this._onMSEEndStreaming.bind(this)),this._mse_controller.isManagedMediaSource()?(e.disableRemotePlayback=!0,e.srcObject=this._mse_controller.getObject()):e.src=this._mse_controller.getObjectURL()}detachMediaElement(){var e,t;this._media_element&&((e=this._mse_controller)==null||e.shutdown(),this._media_element.removeEventListener("loadedmetadata",this.e.onMediaLoadedMetadata),this._media_element.src="",this._media_element.removeAttribute("src"),this._media_element.srcObject=null,this._media_element.load(),this._media_element=null,(t=this._mse_controller)==null||t.revokeObjectURL()),this._mse_controller&&(this._mse_controller.destroy(),this._mse_controller=null)}load(){if(!this._media_element)throw new se("HTMLMediaElement must be attached before load()!");if(this._transmuxer)throw new se("load() has been called, please call unload() first!");if(!this._has_pending_load){if(this._config.deferLoadAfterSourceOpen&&!this._mse_source_opened){this._has_pending_load=!0;return}if(!this._media_data_source)throw new se("MediaDataSource has been released, load() is no longer allowed!");this._transmuxer=new tn(this._media_data_source,this._config),this._transmuxer.on(M.INIT_SEGMENT,(e,t)=>{var i;(i=this._mse_controller)==null||i.appendInitSegment(t)}),this._transmuxer.on(M.MEDIA_SEGMENT,(e,t)=>{var i,r,n;(i=this._mse_controller)==null||i.appendMediaSegment(t),!this._config.isLive&&e===w.Video&&t.data&&t.data.byteLength>0&&"info"in t&&((r=this._seeking_handler)==null||r.appendSyncPoints(t.info.syncPoints)),(n=this._loading_controller)==null||n.notifyBufferedPositionChanged(t.info.endDts/1e3)}),this._transmuxer.on(M.LOADING_COMPLETE,()=>{var e,t;(e=this._mse_controller)==null||e.endOfStream(),(t=this._emitter)==null||t.emit($.LOADING_COMPLETE)}),this._transmuxer.on(M.RECOVERED_EARLY_EOF,()=>{var e;(e=this._emitter)==null||e.emit($.RECOVERED_EARLY_EOF)}),this._transmuxer.on(M.IO_ERROR,(e,t)=>{var i;(i=this._emitter)==null||i.emit($.ERROR,St.NETWORK_ERROR,e,t)}),this._transmuxer.on(M.DEMUX_ERROR,(e,t)=>{var i;(i=this._emitter)==null||i.emit($.ERROR,St.MEDIA_ERROR,e,t)}),this._transmuxer.on(M.MEDIA_INFO,e=>{var t;this._media_info=e,(t=this._emitter)==null||t.emit($.MEDIA_INFO,Object.assign({},e))}),this._transmuxer.on(M.STATISTICS_INFO,e=>{var t;this._statistics_info=this._fillStatisticsInfo(e),(t=this._emitter)==null||t.emit($.STATISTICS_INFO,Object.assign({},e))}),this._transmuxer.on(M.RECOMMEND_SEEKPOINT,e=>{var t;this._media_element&&!this._config.accurateSeek&&((t=this._seeking_handler)==null||t.directSeek(e/1e3))}),this._transmuxer.on(M.METADATA_ARRIVED,e=>{var t;(t=this._emitter)==null||t.emit($.METADATA_ARRIVED,e)}),this._transmuxer.on(M.SCRIPTDATA_ARRIVED,e=>{var t;(t=this._emitter)==null||t.emit($.SCRIPTDATA_ARRIVED,e)}),this._transmuxer.on(M.TIMED_ID3_METADATA_ARRIVED,e=>{var t;(t=this._emitter)==null||t.emit($.TIMED_ID3_METADATA_ARRIVED,e)}),this._seeking_handler=new _i(this._config,this._media_element,this._onRequiredUnbufferedSeek.bind(this)),this._loading_controller=new fi(this._config,this._media_element,this._onRequestPauseTransmuxer.bind(this),this._onRequestResumeTransmuxer.bind(this)),this._startup_stall_jumper=new mi(this._media_element,this._onRequestDirectSeek.bind(this)),this._config.isLive&&this._config.liveBufferLatencyChasing&&(this._live_latency_chaser=new pi(this._config,this._media_element,this._onRequestDirectSeek.bind(this))),this._config.isLive&&this._config.liveSync&&(this._live_latency_synchronizer=new gi(this._config,this._media_element)),this._media_element.readyState>0&&this._seeking_handler.directSeek(0),this._transmuxer.open()}}unload(){var e,t,i,r,n,a,s,l;(e=this._media_element)==null||e.pause(),(t=this._live_latency_synchronizer)==null||t.destroy(),this._live_latency_synchronizer=null,this._live_latency_chaser=null,(i=this._startup_stall_jumper)==null||i.destroy(),this._startup_stall_jumper=null,(r=this._loading_controller)==null||r.destroy(),this._loading_controller=null,(n=this._seeking_handler)==null||n.destroy(),this._seeking_handler=null,(a=this._mse_controller)==null||a.flush(),(s=this._transmuxer)==null||s.close(),(l=this._transmuxer)==null||l.destroy(),this._transmuxer=null}play(){return this._media_element.play()}pause(){this._media_element.pause()}seek(e){this._media_element&&this._seeking_handler?this._seeking_handler.seek(e):this._pending_seek_time=e}get mediaInfo(){return Object.assign({},this._media_info)}get statisticsInfo(){return Object.assign({},this._statistics_info)}_onMSESourceOpen(){this._mse_source_opened=!0,this._has_pending_load&&(this._has_pending_load=!1,this.load())}_onMSEUpdateEnd(){var e;this._config.isLive&&this._config.liveBufferLatencyChasing&&this._live_latency_chaser&&this._live_latency_chaser.notifyBufferedRangeUpdate(),(e=this._loading_controller)==null||e.notifyBufferedPositionChanged()}_onMSEQuotaExceededBufferFull(e){var t;if(g.w(this.TAG,`Quota exceeded - reducing buffer durations. Type: ${e.type}, Buffer length: ${e.currentBufferLength}, Segment size: ${e.segmentSize}`),!this._loading_controller){g.w(this.TAG,"LoadingController not available for quota adjustment");return}(t=this._loading_controller)==null||t.adjustLazyLoadDurations(.5)}_onMSEBufferFull(){var e;g.v(this.TAG,"MSE SourceBuffer is full, suspend transmuxing task"),(e=this._loading_controller)==null||e.suspendTransmuxer()}_onMSEError(e){var t;(t=this._emitter)==null||t.emit($.ERROR,St.MEDIA_ERROR,hi.MEDIA_MSE_ERROR,e)}_onMSEStartStreaming(){var e;this._loaded_metadata_received&&(this._config.isLive||(g.v(this.TAG,"Resume transmuxing task due to ManagedMediaSource onStartStreaming"),(e=this._loading_controller)==null||e.resumeTransmuxer()))}_onMSEEndStreaming(){var e;this._config.isLive||(g.v(this.TAG,"Suspend transmuxing task due to ManagedMediaSource onEndStreaming"),(e=this._loading_controller)==null||e.suspendTransmuxer())}_onMediaLoadedMetadata(e){var t;this._loaded_metadata_received=!0,this._pending_seek_time!=null&&((t=this._seeking_handler)==null||t.seek(this._pending_seek_time),this._pending_seek_time=null)}_onRequestDirectSeek(e){var t;(t=this._seeking_handler)==null||t.directSeek(e)}_onRequiredUnbufferedSeek(e){var t,i;(t=this._mse_controller)==null||t.flush(),(i=this._transmuxer)==null||i.seek(e)}_onRequestPauseTransmuxer(){var e;(e=this._transmuxer)==null||e.pause()}_onRequestResumeTransmuxer(){var e;(e=this._transmuxer)==null||e.resume()}_fillStatisticsInfo(e){var n;if(e.playerType="MSEPlayer",!(this._media_element instanceof HTMLVideoElement))return e;let t=!0,i=0,r=0;if(this._media_element.getVideoPlaybackQuality){let a=this._media_element.getVideoPlaybackQuality();i=a.totalVideoFrames,r=a.droppedVideoFrames}else{let a=this._media_element;a.webkitDecodedFrameCount!==void 0?(i=a.webkitDecodedFrameCount,r=(n=a.webkitDroppedFrameCount)!=null?n:0):t=!1}return t&&(e.decodedFrames=i,e.droppedFrames=r),e}},mr=fr;var ua={};var pr=class{constructor(e,t){d(this,"TAG","PlayerEngineDedicatedThread");d(this,"_emitter",new Ee);d(this,"_media_data_source");d(this,"_config");d(this,"_media_element",null);d(this,"_worker");d(this,"_worker_destroying",!1);d(this,"_seeking_handler",null);d(this,"_loading_controller",null);d(this,"_startup_stall_jumper",null);d(this,"_live_latency_chaser",null);d(this,"_live_latency_synchronizer",null);d(this,"_pending_seek_time",NaN);d(this,"_media_info",null);d(this,"_statistics_info",null);d(this,"e",null);this._media_data_source=e,this._config=st(),typeof t=="object"&&Object.assign(this._config,t),e.isLive===!0&&(this._config.isLive=!0),this.e={onLoggingConfigChanged:this._onLoggingConfigChanged.bind(this),onMediaLoadedMetadata:this._onMediaLoadedMetadata.bind(this),onMediaTimeUpdate:this._onMediaTimeUpdate.bind(this),onMediaReadyStateChanged:this._onMediaReadyStateChange.bind(this)},Ge.registerListener(this.e.onLoggingConfigChanged),this._worker=new Worker(new URL("./player-engine-worker.js",ua.url),{type:"module"}),this._worker.addEventListener("message",this._onWorkerMessage.bind(this)),this._worker.postMessage({cmd:"init",media_data_source:this._media_data_source,config:this._config}),this._worker.postMessage({cmd:"logging_config",logging_config:Ge.getConfig()})}static isSupported(){return self.Worker?!!(self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&self.MediaSource.canConstructInDedicatedWorker===!0||self.ManagedMediaSource&&"canConstructInDedicatedWorker"in self.ManagedMediaSource&&self.ManagedMediaSource.canConstructInDedicatedWorker===!0):!1}destroy(){var e;this._emitter.emit($.DESTROYING),this.unload(),this.detachMediaElement(),this._worker_destroying=!0,(e=this._worker)==null||e.postMessage({cmd:"destroy"}),Ge.removeListener(this.e.onLoggingConfigChanged),this.e=null,this._media_data_source=null,this._emitter.removeAllListeners()}on(e,t){this._emitter.addListener(e,t),e===$.MEDIA_INFO&&this._media_info?Promise.resolve().then(()=>this._emitter.emit($.MEDIA_INFO,this.mediaInfo)):e==$.STATISTICS_INFO&&this._statistics_info&&Promise.resolve().then(()=>this._emitter.emit($.STATISTICS_INFO,this.statisticsInfo))}off(e,t){this._emitter.removeListener(e,t)}attachMediaElement(e){var t;this._media_element=e,this._media_element.src="",this._media_element.removeAttribute("src"),this._media_element.srcObject=null,this._media_element.load(),this._media_element.addEventListener("loadedmetadata",this.e.onMediaLoadedMetadata),this._media_element.addEventListener("timeupdate",this.e.onMediaTimeUpdate),this._media_element.addEventListener("readystatechange",this.e.onMediaReadyStateChanged),(t=this._worker)==null||t.postMessage({cmd:"initialize_mse"})}detachMediaElement(){var e;(e=this._worker)==null||e.postMessage({cmd:"shutdown_mse"}),this._media_element&&(this._media_element.removeEventListener("loadedmetadata",this.e.onMediaLoadedMetadata),this._media_element.removeEventListener("timeupdate",this.e.onMediaTimeUpdate),this._media_element.removeEventListener("readystatechange",this.e.onMediaReadyStateChanged),this._media_element.src="",this._media_element.removeAttribute("src"),this._media_element.srcObject=null,this._media_element.load(),this._media_element=null)}load(){var e,t;(e=this._worker)==null||e.postMessage({cmd:"load"}),this._seeking_handler=new _i(this._config,this._media_element,this._onRequiredUnbufferedSeek.bind(this)),this._loading_controller=new fi(this._config,this._media_element,this._onRequestPauseTransmuxer.bind(this),this._onRequestResumeTransmuxer.bind(this)),this._startup_stall_jumper=new mi(this._media_element,this._onRequestDirectSeek.bind(this)),this._config.isLive&&this._config.liveBufferLatencyChasing&&(this._live_latency_chaser=new pi(this._config,this._media_element,this._onRequestDirectSeek.bind(this))),this._config.isLive&&this._config.liveSync&&(this._live_latency_synchronizer=new gi(this._config,this._media_element)),this._media_element.readyState>0&&((t=this._seeking_handler)==null||t.directSeek(0))}unload(){var e,t,i,r,n,a;(e=this._media_element)==null||e.pause(),(t=this._worker)==null||t.postMessage({cmd:"unload"}),(i=this._live_latency_synchronizer)==null||i.destroy(),this._live_latency_synchronizer=null,this._live_latency_chaser=null,(r=this._startup_stall_jumper)==null||r.destroy(),this._startup_stall_jumper=null,(n=this._loading_controller)==null||n.destroy(),this._loading_controller=null,(a=this._seeking_handler)==null||a.destroy(),this._seeking_handler=null}play(){var e;return((e=this._media_element)==null?void 0:e.play())||Promise.resolve()}pause(){var e;(e=this._media_element)==null||e.pause()}seek(e){this._media_element&&this._seeking_handler?this._seeking_handler.seek(e):this._pending_seek_time=e}get mediaInfo(){return Object.assign({},this._media_info)}get statisticsInfo(){return Object.assign({},this._statistics_info)}_onLoggingConfigChanged(e){var t;(t=this._worker)==null||t.postMessage({cmd:"logging_config",logging_config:e})}_onMSEUpdateEnd(){var e;this._config.isLive&&this._config.liveBufferLatencyChasing&&this._live_latency_chaser&&this._live_latency_chaser.notifyBufferedRangeUpdate(),(e=this._loading_controller)==null||e.notifyBufferedPositionChanged()}_onMSEBufferFull(){var e;g.v(this.TAG,"MSE SourceBuffer is full, suspend transmuxing task"),(e=this._loading_controller)==null||e.suspendTransmuxer()}_onMediaLoadedMetadata(e){var t;Number.isNaN(this._pending_seek_time)||((t=this._seeking_handler)==null||t.seek(this._pending_seek_time),this._pending_seek_time=NaN)}_onRequestDirectSeek(e){var t;(t=this._seeking_handler)==null||t.directSeek(e)}_onRequiredUnbufferedSeek(e){var t;(t=this._worker)==null||t.postMessage({cmd:"unbuffered_seek",milliseconds:e})}_onRequestPauseTransmuxer(){var e;(e=this._worker)==null||e.postMessage({cmd:"pause_transmuxer"})}_onRequestResumeTransmuxer(){var e;(e=this._worker)==null||e.postMessage({cmd:"resume_transmuxer"})}_onMediaTimeUpdate(e){var t;(t=this._worker)==null||t.postMessage({cmd:"timeupdate",current_time:e.target.currentTime})}_onMediaReadyStateChange(e){var t;(t=this._worker)==null||t.postMessage({cmd:"readystatechange",ready_state:e.target.readyState})}_onWorkerMessage(e){var r,n,a;let t=e.data,i=t.msg;if(i=="destroyed"||this._worker_destroying){this._worker_destroying=!1,(r=this._worker)==null||r.terminate(),this._worker=null;return}switch(i){case"mse_init":{let s=t;"ManagedMediaSource"in self&&!("MediaSource"in self)&&(this._media_element.disableRemotePlayback=!0),this._media_element.srcObject=s.handle;break}case"mse_event":{let s=t;s.event==ae.UPDATE_END?this._onMSEUpdateEnd():s.event==ae.BUFFER_FULL?this._onMSEBufferFull():s.event==ae.QUOTA_EXCEEDED_BUFFER_FULL&&this._onMSEQuotaExceededBufferFull(s.data);break}case"transmuxing_event":{let s=t;if(s.event==M.MEDIA_INFO){let l=t;this._media_info=l.info,this._emitter.emit($.MEDIA_INFO,Object.assign({},l.info))}else if(s.event==M.STATISTICS_INFO){let l=t;this._statistics_info=this._fillStatisticsInfo(l.info),this._emitter.emit($.STATISTICS_INFO,Object.assign({},l.info))}else if(s.event==M.RECOMMEND_SEEKPOINT){let l=t;this._media_element&&!this._config.accurateSeek&&((n=this._seeking_handler)==null||n.directSeek(l.milliseconds/1e3))}break}case"player_event":{let s=t;if(s.event==$.ERROR){let l=t;this._emitter.emit($.ERROR,l.error_type,l.error_detail,l.info)}else if("extraData"in s){let l=t;this._emitter.emit(l.event,l.extraData)}break}case"logcat_callback":{let s=t;g.emitLog(s.type,s.logcat);break}case"buffered_position_changed":{let s=t;(a=this._loading_controller)==null||a.notifyBufferedPositionChanged(s.buffered_position_milliseconds/1e3);break}}}_onMSEQuotaExceededBufferFull(e){if(g.w(this.TAG,`Quota exceeded - reducing buffer durations. Type: ${e.type}, Buffer length: ${e.currentBufferLength}, Segment size: ${e.segmentSize}`),!this._loading_controller){g.w(this.TAG,"LoadingController not available for quota adjustment");return}this._loading_controller.adjustLazyLoadDurations(.5)}_fillStatisticsInfo(e){if(e.playerType="MSEPlayer",!(this._media_element instanceof HTMLVideoElement))return e;let t=!0,i=0,r=0;if(this._media_element.getVideoPlaybackQuality){let n=this._media_element.getVideoPlaybackQuality();i=n.totalVideoFrames,r=n.droppedVideoFrames}else this._media_element.webkitDecodedFrameCount!=null?(i=this._media_element.webkitDecodedFrameCount,r=this._media_element.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=i,e.droppedFrames=r),e}},gr=pr;var xr=class{constructor(e,t){d(this,"TAG","MSEPlayer");d(this,"_type","MSEPlayer");d(this,"_media_element",null);d(this,"_player_engine",null);let i=e.type.toLowerCase();if(i!=="mse"&&i!=="flv")throw new be("MSEPlayer requires an mse/flv MediaDataSource input!");if(t!=null&&t.enableWorkerForMSE&&gr.isSupported())try{this._player_engine=new gr(e,t)}catch(r){g.e(this.TAG,"Error while initializing PlayerEngineDedicatedThread, fallback to PlayerEngineMainThread"),this._player_engine=new mr(e,t)}else this._player_engine=new mr(e,t)}destroy(){this._player_engine.destroy(),this._player_engine=null,this._media_element=null}on(e,t){this._player_engine.on(e,t)}off(e,t){this._player_engine.off(e,t)}attachMediaElement(e){this._media_element=e,this._player_engine.attachMediaElement(e)}detachMediaElement(){this._media_element=null,this._player_engine.detachMediaElement()}load(){this._player_engine.load()}unload(){this._player_engine.unload()}play(){return this._player_engine.play()}pause(){this._player_engine.pause()}get type(){return this._type}get buffered(){return this._media_element.buffered}get duration(){return this._media_element.duration}get volume(){return this._media_element.volume}set volume(e){this._media_element.volume=e}get muted(){return this._media_element.muted}set muted(e){this._media_element.muted=e}get currentTime(){return this._media_element?this._media_element.currentTime:0}set currentTime(e){this._player_engine.seek(e)}get mediaInfo(){return this._player_engine.mediaInfo}get statisticsInfo(){return this._player_engine.statisticsInfo}},Ot=xr;function rn(){return self.ManagedMediaSource}var Te=class Te{static supportMSEH264Playback(){let e='video/mp4; codecs="avc1.42E01E,mp4a.40.2"',t=!!self.MediaSource&&self.MediaSource.isTypeSupported(e),i=rn(),r=!!i&&i.isTypeSupported(e);return t||r}static supportMSEH265Playback(){let e='video/mp4; codecs="hvc1.1.6.L93.B0"',t=!!self.MediaSource&&self.MediaSource.isTypeSupported(e),i=rn(),r=!!i&&i.isTypeSupported(e);return t||r}static supportNetworkStreamIO(){let e=new Nt({},st()),t=e.loaderType;return e.destroy(),t=="fetch-stream-loader"||t=="xhr-moz-chunked-loader"}static getNetworkLoaderTypeName(){let e=new Nt({},st()),t=e.loaderType;return e.destroy(),t}static supportNativeMediaPlayback(e){Te.videoElement===void 0&&(Te.videoElement=window.document.createElement("video"));let t=Te.videoElement.canPlayType(e);return t==="probably"||t=="maybe"}static getFeatureList(){let e={msePlayback:!1,mseLivePlayback:!1,mseH265Playback:!1,networkStreamIO:!1,networkLoaderName:"",nativeMP4H264Playback:!1,nativeMP4H265Playback:!1,nativeWebmVP8Playback:!1,nativeWebmVP9Playback:!1};return e.msePlayback=Te.supportMSEH264Playback(),e.networkStreamIO=Te.supportNetworkStreamIO(),e.networkLoaderName=Te.getNetworkLoaderTypeName(),e.mseLivePlayback=e.msePlayback&&e.networkStreamIO,e.mseH265Playback=Te.supportMSEH265Playback(),e.nativeMP4H264Playback=Te.supportNativeMediaPlayback('video/mp4; codecs="avc1.42001E, mp4a.40.2"'),e.nativeMP4H265Playback=Te.supportNativeMediaPlayback('video/mp4; codecs="hvc1.1.6.L93.B0"'),e.nativeWebmVP8Playback=Te.supportNativeMediaPlayback('video/webm; codecs="vp8.0, vorbis"'),e.nativeWebmVP9Playback=Te.supportNativeMediaPlayback('video/webm; codecs="vp9"'),e}};d(Te,"videoElement");var br=Te,yr=br;function ca(o,e){if(o==null||typeof o!="object")throw new be("MediaDataSource must be a javascript object!");if(typeof o.type!="string"||o.type==="")throw new be("MediaDataSource must include a non-empty string type field!");switch(o.type){case"mse":case"flv":return new Ot(o,e);default:return new Bt(o,e)}}function ha(){return yr.supportMSEH264Playback()}function _a(){return yr.getFeatureList()}var fa={createPlayer:ca,isSupported:ha,getFeatureList:_a,BaseLoader:Be,LoaderStatus:N,LoaderErrors:q,Events:$,ErrorTypes:St,ErrorDetails:hi,MSEPlayer:Ot,NativePlayer:Bt,LoggingControl:Ge,get version(){return"0.0.1-alpha.0"}},nn=fa;return fn(ma);})();
    </script>
    <style>
        /* {IȃZbgƍ̃X^CO */
        * {
            box-sizing: border-box;
            margin: 0;
            padding: 0;
        }
        body {
            background-color: #0b0f19;
            color: #e2e8f0;
            font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
            padding: 20px;
            display: flex;
            flex-direction: column;
            align-items: center;
            min-height: 100vh;
        }
        main {
            width: 100%;
            max-width: 800px;
            display: flex;
            flex-direction: column;
            gap: 20px;
        }
        
        /* rfIvC[̃X^CO (ÂSafariΉ: paddingpΔzunbN) */
        .player-container {
            position: relative;
            background-color: #000000;
            border: 1px solid #1e293b;
            border-radius: 8px;
            overflow: hidden;
            width: 100%;
            height: 0;
            padding-top: 56.25%; /* 16:9̔䗦ÂuEUłSɕۏ */
            transition: border-color 0.2s;
        }
        video {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            object-fit: contain;
            display: block;
        }

        /* EFutXN[iy[WS̕\jp̃X^C */
        body.web-fs-active {
            overflow: hidden !important; /* XN[o[SɉB */
        }
        .player-container.web-fullscreen {
            position: fixed !important;
            top: 0 !important;
            bottom: 0 !important; /* height: 100vh̑ɏ㉺̒[ɋz (Android/iOS̃AhXo[΍) */
            left: 0 !important;
            right: 0 !important;  /* width: 100vw̑ɍE̒[ɋz */
            width: auto !important; /* ŒTCYwLZċzD */
            height: auto !important;
            padding-top: 0 !important; /* paddingnbN̉ic100%L邽߁j */
            max-width: none !important;
            max-height: none !important;
            border: none !important;
            border-radius: 0 !important;
            z-index: 999999 !important; /* vfőOʂɔzu */
            transform: translateZ(0);
            -webkit-transform: translateZ(0); /* ÂSafarîoO΍ */
        }

        /* ʏ\p̃gK[{^ivC[̐po[ɔzuBSafarizo[UIƊSɕj */
        .player-toolbar {
            display: flex;
            justify-content: flex-end;
            margin-top: -8px;
            margin-bottom: 4px;
        }
        .web-fs-trigger-button {
            background-color: #0f172a;
            border: 1px solid #1e293b;
            color: #e2e8f0;
            padding: 8px 16px;
            border-radius: 6px;
            cursor: pointer;
            display: flex;
            align-items: center;
            gap: 8px;
            font-size: 13px;
            font-weight: 500;
            transition: all 0.2s ease;
        }
        .web-fs-trigger-button:hover {
            background-color: #1e293b;
            border-color: #818cf8;
            color: #ffffff;
        }

        /* Sʉ̂ݕ\uʒ㕔v̕Rg[s */
        .web-fs-close-pill {
            position: absolute;
            top: 20px;
            left: 50%;
            transform: translateX(-50%) translateY(-50px); /* ŏ͏㕔ɉBĂ */
            z-index: 1000000;
            background-color: rgba(15, 23, 42, 0.9);
            border: 1px solid rgba(255, 255, 255, 0.15);
            color: #ffffff;
            padding: 10px 20px;
            border-radius: 9999px;
            cursor: pointer;
            display: flex;
            align-items: center;
            gap: 10px;
            font-size: 13px;
            font-weight: 600;
            box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.5), 0 8px 10px -6px rgba(0, 0, 0, 0.5);
            backdrop-filter: blur(8px);
            -webkit-backdrop-filter: blur(8px);
            opacity: 0;
            transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease;
            pointer-events: none; /* ʏ펞͔񊈐 */
        }

        /* y[WS̕\ANeBuȎ̂ݕ\E\ɂ */
        .player-container.web-fullscreen .web-fs-close-pill {
            transform: translateX(-50%) translateY(0);
            opacity: 1;
            pointer-events: auto;
        }

        .web-fs-close-pill:hover {
            background-color: #ef4444; /* IɏIł댯F() */
            border-color: #ef4444;
            color: #ffffff;
        }

        /* Xe[^XZNVi|[gԕ\j */
        .status-container {
            background-color: #0f172a;
            border: 1px solid #1e293b;
            border-radius: 8px;
            padding: 16px;
            font-size: 12px;
            line-height: 1.6;
        }
        .status-title {
            font-size: 14px;
            font-weight: bold;
            color: #818cf8;
            border-bottom: 1px solid #1e293b;
            padding-bottom: 8px;
            margin-bottom: 12px;
            display: flex;
            align-items: center;
            gap: 8px;
        }
        .status-title::before {
            content: "";
            display: inline-block;
            width: 8px;
            height: 8px;
            background-color: #22c55e;
            border-radius: 50%;
        }

        /* Xe[^XObh */
        .grid {
            display: grid;
            grid-template-columns: 1fr;
            gap: 12px;
        }
        @media (min-width: 600px) {
            .grid {
                grid-template-columns: 1fr 1fr;
                gap: 24px;
            }
        }
        .info-block {
            display: flex;
            flex-direction: column;
            gap: 4px;
        }
        .info-item {
            display: flex;
            justify-content: space-between;
            border-bottom: 1px dashed #1e293b;
            padding-bottom: 4px;
        }
        .label {
            color: #94a3b8;
        }
        .value {
            color: #f1f5f9;
            text-align: right;
            word-break: break-all;
            max-width: 70%;
        }
        .value a {
            color: #818cf8;
            text-decoration: none;
        }
        .value a:hover {
            text-decoration: underline;
        }
    </style>
</head>
<body>

    <main>
        <!-- rfIRei -->
        <div class="player-container" id="player-container">
            <!-- WRg[gp -->
            <video id="video-element" controls playsinline></video>

            <!-- Sʕ\̂ݏou㕔vRg[s -->
            <!-- Safari̍EE̓ƎI[o[C{^ƋȂ݌v -->
            <button id="web-fs-close-btn" class="web-fs-close-pill" title="ɖ߂" aria-label="ɖ߂">
                <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                    <rect x="3" y="3" width="18" height="18" rx="2"></rect>
                    <path d="M3 15h6v6"></path>
                    <path d="M21 15h-6v6"></path>
                    <path d="M3 9h6V3"></path>
                    <path d="M21 9h-6V3"></path>
                </svg>
                <span>ɖ߂</span>
            </button>
        </div>

        <!-- vC[pc[o[ (ʏ\̍ۂɎgpBSafarĩrfIzo[UI犮SɓƗGA) -->
        <div class="player-toolbar">
            <button id="web-fs-btn" class="web-fs-trigger-button" title="uEUŜɕ\" aria-label="uEUŜɕ\">
                <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                    <rect x="3" y="3" width="18" height="18" rx="2"></rect>
                    <path d="M3 9h18"></path>
                    <path d="M9 21V9"></path>
                </svg>
                <span>uEUŜɕ\</span>
            </button>
        </div>

        <!-- |[gԕ\ / Xe[^XZNV -->
        <div class="status-container">
            <div class="status-title">|[gԕ\</div>

            <div class="grid">
                <!-- { -->
                <div class="info-block">
                    <div class="info-item">
                        <span class="label">zMURL:</span>
                        <span class="value"><SRC_URL></span>
                    </div>
                    <div class="info-item">
                        <span class="label">^Cg:</span>
                        <span class="value"><TITLE></span>
                    </div>
                    <div class="info-item">
                        <span class="label">Rg:</span>
                        <span class="value"><COMMENT></span>
                    </div>
                    <div class="info-item">
                        <span class="label">URL:</span>
                        <span class="value">
                            <a href="<LIVE_URL>" target="_blank"><LIVE_URL></a>
                        </span>
                    </div>
                </div>

                <!-- ڑptH[}X -->
                <div class="info-block">
                    <div class="info-item">
                        <span class="label">ڑ:</span>
                        <span class="value"><TIME></span>
                    </div>
                    <div class="info-item">
                        <span class="label">݂̐ڑ:</span>
                        <span class="value">
                            <CONN> / <MAXCONN>
                        </span>
                    </div>
                    <div class="info-item">
                        <span class="label">rbg[g:</span>
                        <span class="value" style="color: #4ade80;"><CURRENT></span>
                    </div>
                    <div class="info-item">
                        <span class="label">\rbg[g:</span>
                        <span class="value"><BITRATE></span>
                    </div>
                    <div class="info-item">
                        <span class="label">ш搧:</span>
                        <span class="value"><BANDWIDTH></span>
                    </div>
                </div>
            </div>

            <!-- G[JE^Ȇ -->
            <div class="grid" style="margin-top: 12px; padding-top: 12px; border-top: 1px dashed #1e293b;">
                <div class="info-block">
                    <div class="info-item">
                        <span class="label">rW[JE^:</span>
                        <span class="value"><BUSYCOUNT></span>
                    </div>
                    <div class="info-item">
                        <span class="label">IMG[JE^:</span>
                        <span class="value" style="color: #f87171;"><IMPORT_ERROR></span>
                    </div>
                    <div class="info-item">
                        <span class="label">EXG[JE^:</span>
                        <span class="value" style="color: #f87171;"><EXPORT_ERROR></span>
                    </div>
                </div>

                <div class="info-block">
                    <div class="info-item">
                        <span class="label">q:</span>
                        <span class="value"><CHILD></span>
                    </div>
                    <div class="info-item">
                        <span class="label">o[W:</span>
                        <span class="value" style="color: #64748b;"><VERSION></span>
                    </div>
                </div>
            </div>
        </div>
    </main>

    <!-- zMVXe̋ɏĐXNvg -->
    <script>
        (function() {
            var playerContainer = document.getElementById('player-container');
            var webFsTriggerBtn = document.getElementById('web-fs-btn');
            var webFsCloseBtn = document.getElementById('web-fs-close-btn');
            var mouseIdleTimeout;

            // y[WS̕\iWebtXN[j̐؂ւ
            function toggleWebFullscreen() {
                var isWebFs = playerContainer.classList.toggle('web-fullscreen');
                document.body.classList.toggle('web-fs-active', isWebFs);

                // ؂ւɃs{^ZbgČ
                if (isWebFs) {
                    resetAndShowClosePill();
                } else {
                    clearTimeout(mouseIdleTimeout);
                    webFsCloseBtn.style.opacity = '';
                    webFsCloseBtn.style.transform = '';
                }
            }

            // SʎF삪Ȃ3bŕ{^tF[hAEg鏈
            function resetAndShowClosePill() {
                clearTimeout(mouseIdleTimeout);
                webFsCloseBtn.style.opacity = '1';
                webFsCloseBtn.style.transform = 'translateX(-50%) translateY(0)';

                // 3bԃ}EXȂtF[hAEgiX}z̓^bvōĕ\j
                mouseIdleTimeout = setTimeout(function() {
                    if (playerContainer.classList.contains('web-fullscreen')) {
                        webFsCloseBtn.style.opacity = '0';
                        webFsCloseBtn.style.transform = 'translateX(-50%) translateY(-20px)';
                    }
                }, 3000);
            }

            // }EXړmŃ{^ătF[hC
            playerContainer.addEventListener('mousemove', function() {
                if (playerContainer.classList.contains('web-fullscreen')) {
                    resetAndShowClosePill();
                }
            });

            // NbNCxg̓o^ (`dh~t)
            webFsTriggerBtn.addEventListener('click', function(e) {
                e.stopPropagation();
                toggleWebFullscreen();
            });

            webFsCloseBtn.addEventListener('click', function(e) {
                e.stopPropagation();
                toggleWebFullscreen();
            });

            if (asf_stream.eflv.getFeatureList().mseLivePlayback) {
                var videoElement = document.getElementById('video-element');
                var player = asf_stream.eflv.createPlayer({
                    type: 'mse',
                    isLive: true,
                    url: '/play?stream-switch'
                });
                player.attachMediaElement(videoElement);
                player.load();
                player.play();
            }
        })();
    </script>
</body>
</html>