<!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_js2026063009
"use strict";var asf_stream=(()=>{var Ir=Object.create;var At=Object.defineProperty;var Ur=Object.getOwnPropertyDescriptor;var Vr=Object.getOwnPropertyNames;var Pr=Object.getPrototypeOf,Or=Object.prototype.hasOwnProperty;var Nr=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),Hr=(s,e)=>{for(var t in e)At(s,t,{get:e[t],enumerable:!0})},sr=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Vr(e))!Or.call(s,n)&&n!==t&&At(s,n,{get:()=>e[n],enumerable:!(i=Ur(e,n))||i.enumerable});return s};var $r=(s,e,t)=>(t=s!=null?Ir(Pr(s)):{},sr(e||!s||!s.__esModule?At(t,"default",{value:s,enumerable:!0}):t,s)),Gr=s=>sr(At({},"__esModule",{value:!0}),s);var or=Nr((Hn,ti)=>{"use strict";var qr=Object.prototype.hasOwnProperty,le="~";function nt(){}Object.create&&(nt.prototype=Object.create(null),new nt().__proto__||(le=!1));function Wr(s,e,t){this.fn=s,this.context=e,this.once=t||!1}function ar(s,e,t,i,n){if(typeof t!="function")throw new TypeError("The listener must be a function");var r=new Wr(t,i||s,n),a=le?le+e:e;return s._events[a]?s._events[a].fn?s._events[a]=[s._events[a],r]:s._events[a].push(r):(s._events[a]=r,s._eventsCount++),s}function St(s,e){--s._eventsCount===0?s._events=new nt:delete s._events[e]}function re(){this._events=new nt,this._eventsCount=0}re.prototype.eventNames=function(){var e=[],t,i;if(this._eventsCount===0)return e;for(i in t=this._events)qr.call(t,i)&&e.push(le?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};re.prototype.listeners=function(e){var t=le?le+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var n=0,r=i.length,a=new Array(r);n<r;n++)a[n]=i[n].fn;return a};re.prototype.listenerCount=function(e){var t=le?le+e:e,i=this._events[t];return i?i.fn?1:i.length:0};re.prototype.emit=function(e,t,i,n,r,a){var o=le?le+e:e;if(!this._events[o])return!1;var l=this._events[o],d=arguments.length,_,f;if(l.fn){switch(l.once&&this.removeListener(e,l.fn,void 0,!0),d){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,n),!0;case 5:return l.fn.call(l.context,t,i,n,r),!0;case 6:return l.fn.call(l.context,t,i,n,r,a),!0}for(f=1,_=new Array(d-1);f<d;f++)_[f-1]=arguments[f];l.fn.apply(l.context,_)}else{var p=l.length,c;for(f=0;f<p;f++)switch(l[f].once&&this.removeListener(e,l[f].fn,void 0,!0),d){case 1:l[f].fn.call(l[f].context);break;case 2:l[f].fn.call(l[f].context,t);break;case 3:l[f].fn.call(l[f].context,t,i);break;case 4:l[f].fn.call(l[f].context,t,i,n);break;default:if(!_)for(c=1,_=new Array(d-1);c<d;c++)_[c-1]=arguments[c];l[f].fn.apply(l[f].context,_)}}return!0};re.prototype.on=function(e,t,i){return ar(this,e,t,i,!1)};re.prototype.once=function(e,t,i){return ar(this,e,t,i,!0)};re.prototype.removeListener=function(e,t,i,n){var r=le?le+e:e;if(!this._events[r])return this;if(!t)return St(this,r),this;var a=this._events[r];if(a.fn)a.fn===t&&(!n||a.once)&&(!i||a.context===i)&&St(this,r);else{for(var o=0,l=[],d=a.length;o<d;o++)(a[o].fn!==t||n&&!a[o].once||i&&a[o].context!==i)&&l.push(a[o]);l.length?this._events[r]=l.length===1?l[0]:l:St(this,r)}return this};re.prototype.removeAllListeners=function(e){var t;return e?(t=le?le+e:e,this._events[t]&&St(this,t)):(this._events=new nt,this._eventsCount=0),this};re.prototype.off=re.prototype.removeListener;re.prototype.addListener=re.prototype.on;re.prefixed=le;re.EventEmitter=re;typeof ti<"u"&&(ti.exports=re)});var On={};Hr(On,{MSEPlayer:()=>ct,NativePlayer:()=>at,Remuxer:()=>Be,TransmuxingEvents:()=>A,defaultConfig:()=>ii,eflv:()=>Mr});var lr=$r(or(),1);var ne=lr.default;var dr=(m=>(m.ERROR="error",m.LOADING_COMPLETE="loading_complete",m.RECOVERED_EARLY_EOF="recovered_early_eof",m.MEDIA_INFO="media_info",m.METADATA_ARRIVED="metadata_arrived",m.SCRIPTDATA_ARRIVED="scriptdata_arrived",m.TIMED_ID3_METADATA_ARRIVED="timed_id3_metadata_arrived",m.PGS_SUBTITLE_ARRIVED="pgs_subtitle_arrived",m.SYNCHRONOUS_KLV_METADATA_ARRIVED="synchronous_klv_metadata_arrived",m.ASYNCHRONOUS_KLV_METADATA_ARRIVED="asynchronous_klv_metadata_arrived",m.SMPTE2038_METADATA_ARRIVED="smpte2038_metadata_arrived",m.SCTE35_METADATA_ARRIVED="scte35_metadata_arrived",m.PES_PRIVATE_DATA_DESCRIPTOR="pes_private_data_descriptor",m.PES_PRIVATE_DATA_ARRIVED="pes_private_data_arrived",m.STATISTICS_INFO="statistics_info",m.DESTROYING="destroying",m))(dr||{}),L=dr;var ii={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};function ke(){return{...ii}}var W=class{_message;constructor(e){this._message=e}get name(){return"RuntimeException"}get message(){return this._message}toString(){return this.name+": "+this.message}},j=class extends W{constructor(e){super(e)}get name(){return"IllegalStateException"}},se=class extends W{constructor(e){super(e)}get name(){return"InvalidArgumentException"}},st=class extends W{constructor(e){super(e)}get name(){return"NotImplementedException"}};var ri=class{constructor(e,t){this.TAG="NativePlayer",this._type="NativePlayer",this._emitter=new ne,this._config=ke(),typeof t=="object"&&Object.assign(this._config,t);let i=e.type.toLowerCase();if(i==="mse"||i==="flv")throw new se("NativePlayer does't support mse/flv MediaDataSource input!");if(e.hasOwnProperty("segments"))throw new se(`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(L.DESTROYING),this._mediaElement&&(this.unload(),this.detachMediaElement()),this.e=null,this._mediaDataSource=null,this._emitter.removeAllListeners(),this._emitter=null}on(e,t){e===L.MEDIA_INFO?this._mediaElement!=null&&this._mediaElement.readyState!==0&&Promise.resolve().then(()=>{this._emitter.emit(L.MEDIA_INFO,this.mediaInfo)}):e===L.STATISTICS_INFO&&this._mediaElement!=null&&this._mediaElement.readyState!==0&&Promise.resolve().then(()=>{this._emitter.emit(L.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{}}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 j("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,n=0;if(this._mediaElement.getVideoPlaybackQuality){let r=this._mediaElement.getVideoPlaybackQuality();i=r.totalVideoFrames,n=r.droppedVideoFrames}else this._mediaElement.webkitDecodedFrameCount!=null?(i=this._mediaElement.webkitDecodedFrameCount,n=this._mediaElement.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=i,e.droppedFrames=n),e}_onvLoadedMetadata(e){this._pendingSeekTime!=null&&(this._mediaElement.currentTime=this._pendingSeekTime,this._pendingSeekTime=null),this._emitter.emit(L.MEDIA_INFO,this.mediaInfo)}_reportStatisticsInfo(){this._emitter.emit(L.STATISTICS_INFO,this.statisticsInfo)}},at=ri;var ni=class s{static GLOBAL_TAG="e-rtmp-lab.js";static FORCE_GLOBAL_TAG=!1;static ENABLE_CALLBACK=!1;static ENABLE_ERROR=!0;static ENABLE_INFO=!0;static ENABLE_WARN=!0;static ENABLE_DEBUG=!1;static ENABLE_VERBOSE=!0;static emitter=new ne;static emitLog(e,t){s.emitter.emit("log",e,t)}static e(e,t){if(!s.ENABLE_ERROR)return;(!e||s.FORCE_GLOBAL_TAG)&&(e=s.GLOBAL_TAG);let i=`[${e}] > ${t}`;s.ENABLE_CALLBACK&&s.emitter.emit("log","error",i),console.error?console.error(i):console.warn?console.warn(i):console.log(i)}static i(e,t){if(!s.ENABLE_INFO)return;(!e||s.FORCE_GLOBAL_TAG)&&(e=s.GLOBAL_TAG);let i=`[${e}] > ${t}`;s.ENABLE_CALLBACK&&s.emitter.emit("log","info",i),console.info?console.info(i):console.log(i)}static w(e,t){if(!s.ENABLE_WARN)return;(!e||s.FORCE_GLOBAL_TAG)&&(e=s.GLOBAL_TAG);let i=`[${e}] > ${t}`;s.ENABLE_CALLBACK&&s.emitter.emit("log","warn",i),console.warn?console.warn(i):console.log(i)}static d(e,t){if(!s.ENABLE_DEBUG)return;(!e||s.FORCE_GLOBAL_TAG)&&(e=s.GLOBAL_TAG);let i=`[${e}] > ${t}`;s.ENABLE_CALLBACK&&s.emitter.emit("log","debug",i),console.debug?console.debug(i):console.log(i)}static dumpArrayBuffer(e,t,i=32){let n;if(e instanceof Uint8Array)n=e;else if(e instanceof ArrayBuffer)n=new Uint8Array(e);else if(ArrayBuffer.isView(e))n=new Uint8Array(e.buffer,e.byteOffset,e.byteLength);else throw new TypeError("Expected ArrayBuffer, TypedArray, or DataView");let r=Math.min(n.byteLength,t),a=[];for(let o=0;o<r;o+=i){let l=[],d=[],_=Math.min(i,r-o);for(let f=0;f<_;f++){let p=n[o+f];l.push(p.toString(16).padStart(2,"0")),d.push(p>=32&&p<=126?String.fromCharCode(p):".")}for(;l.length<i;)l.push("  ");for(;d.length<i;)d.push(" ");a.push(`${o.toString(16).padStart(4,"0")}: ${l.join(" ")}  |${d.join("")}|`)}return a.join(`
`)}static v(e,...t){if(!s.ENABLE_VERBOSE)return;(!e||s.FORCE_GLOBAL_TAG)&&(e=s.GLOBAL_TAG);let i=`[${e}] >`;s.ENABLE_CALLBACK&&s.emitter.emit("log","verbose",i,...t),console.log(i,...t)}static scope(e,t){let i=!0,n=()=>{let r=i?t:" ".repeat(t.length);return i=!1,`${r}:`};return{v:(...r)=>s.v(e,n(),...r),w:r=>s.w(e,`${n()} ${r}`),e:r=>s.e(e,`${n()} ${r}`)}}static a(e,t,i){if(!i){let n=`[${e}] ASSERT FAILED: ${t}`;throw new Error(n)}}},h=ni;var ot={};function zr(){let s=self.navigator.userAgent.toLowerCase(),e=/(edge)\/([\w.]+)/.exec(s)||/(opr)[\/]([\w.]+)/.exec(s)||/(chrome)[ \/]([\w.]+)/.exec(s)||/(iemobile)[\/]([\w.]+)/.exec(s)||/(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(s)||/(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(s)||/(webkit)[ \/]([\w.]+)/.exec(s)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(s)||/(msie) ([\w.]+)/.exec(s)||s.indexOf("trident")>=0&&/(rv)(?::| )([\w.]+)/.exec(s)||s.indexOf("compatible")<0&&/(firefox)[ \/]([\w.]+)/.exec(s)||[],t=/(ipad)/.exec(s)||/(ipod)/.exec(s)||/(windows phone)/.exec(s)||/(iphone)/.exec(s)||/(kindle)/.exec(s)||/(android)/.exec(s)||/(windows)/.exec(s)||/(mac)/.exec(s)||/(linux)/.exec(s)||/(cros)/.exec(s)||[],i={browser:e[5]||e[3]||e[1]||"",version:e[2]||e[4]||"0",majorVersion:e[4]||e[2]||"0",platform:t[0]||""},n={};if(i.browser){n[i.browser]=!0;let r=i.majorVersion.split(".");n.version={major:parseInt(i.majorVersion,10),string:i.version},r.length>1&&(n.version.minor=parseInt(r[1],10)),r.length>2&&(n.version.build=parseInt(r[2],10))}if(i.platform&&(n[i.platform]=!0),(n.chrome||n.opr||n.safari)&&(n.webkit=!0),n.rv||n.iemobile){n.rv&&delete n.rv;let r="msie";i.browser=r,n[r]=!0}if(n.edge){delete n.edge;let r="msedge";i.browser=r,n[r]=!0}if(n.opr){let r="opera";i.browser=r,n[r]=!0}if(n.safari&&n.android){let r="android";i.browser=r,n[r]=!0}n.name=i.browser,n.platform=i.platform;for(let r in ot)ot.hasOwnProperty(r)&&delete ot[r];Object.assign(ot,n)}zr();var G=ot;var _r=(o=>(o.ERROR="error",o.SOURCE_OPEN="source_open",o.UPDATE_END="update_end",o.BUFFER_FULL="buffer_full",o.QUOTA_EXCEEDED_BUFFER_FULL="quota_exceeded_buffer_full",o.START_STREAMING="start_streaming",o.END_STREAMING="end_streaming",o))(_r||{}),z=_r;var Be=class{static DEBUG_BUFFER=!1;static dbgVideoBuffer=new Uint8Array;static dbgAudioBuffer=new Uint8Array;_config;_isLive;_isAudioMetadataDispatched=!1;_isVideoMetadataDispatched=!1;_audioMeta=null;_videoMeta=null;constructor(e){this._config=e,this._isLive=e.isLive}get isAudioMetadataDispatched(){return this._isAudioMetadataDispatched}get isVideoMetadataDispatched(){return this._isVideoMetadataDispatched}};var Oe=["video","audio"];function Kr(s,e=16){return!s||s.byteLength===0?"empty":Array.from(s.subarray(0,Math.min(e,s.byteLength))).map(t=>t.toString(16).padStart(2,"0")).join(" ")}function Ne(s){return`type=${s.type} codec=${s.codec||"none"} container=${s.container} bytes=${s.data.byteLength} head=${Kr(s.data)}`}function jr(s){if(!s)return"none";let e=[`code=${s.code}`];return"message"in s&&typeof s.message=="string"&&s.message.length>0&&e.push(`message=${s.message}`),e.join(" ")}var si=class s{static TRACE=!1;TAG="MSEController";_config;_emitter=new ne;events;_mediaSource;_mediaElementProxy;_mediaSourceObjectURL=null;_useManagedMediaSource;_isBufferFull=!1;_hasPendingEos=!1;_requireSetMediaDuration=!1;_pendingMediaDuration=0;_mimeTypes={video:null,audio:null};_sourceBuffers={video:null,audio:null};_lastInitSegments={video:null,audio:null};_pendingSegments={video:[],audio:[]};_pendingRemoveRanges={video:[],audio:[]};_pendingSourceBufferInit=[];constructor(e,t){this._config=e,this._config.isLive&&this._config.autoCleanupSourceBuffer==null?this._config={...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&&h.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 Oe){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(n){h.e(this.TAG,n.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){h.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 j("MediaSource has not been initialized yet!");return this._mediaSource}getHandle(){if(!this._mediaSource)throw new j("MediaSource has not been initialized yet!");if(this._useManagedMediaSource)return this._mediaSource.handle}getObjectURL(){if(!this._mediaSource)throw new j("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){if(this._mediaSource?.readyState!=="open"||this._useManagedMediaSource&&this._mediaSource.streaming===!1){h.v(this.TAG,`appendInitSegment: deferring because MediaSource is not ready, deferred=${t} ${Ne(e)}`),this._deferInitSegment(e,t);return}let i=e,n=`${i.container}`;i.codec&&i.codec.length>0&&(i.codec==="opus"&&G.safari&&(i.codec="Opus"),n+=`; codecs="${i.codec}"`);let r=!1,a=this._sourceBuffers.video?.updating,o=this._sourceBuffers.audio?.updating;if(a||o){h.v(this.TAG,`appendInitSegment: deferring because SourceBuffer is updating, deferred=${t} mimeType=${n} updatingVideo=${a} updatingAudio=${o} ${Ne(i)}`),this._deferInitSegment(e,t);return}if(h.v(this.TAG,`appendInitSegment: accepting mimeType=${n} deferred=${t} updatingVideo=${a} updatingAudio=${o} ${Ne(i)}`),this._lastInitSegments[i.type]=i,n!==this._mimeTypes[i.type]){if(this._mimeTypes[i.type])h.v(this.TAG,`Notice: ${i.type} mimeType changed for ${this._mimeTypes[i.type]}, mimeType: ${n}`);else{r=!0;try{let l=this._sourceBuffers[i.type]=this._mediaSource.addSourceBuffer(n),d=this._sourceBuffers.video?.updating,_=this._sourceBuffers.audio?.updating;h.v(this.TAG,`appendInitSegment: Now ${Date.now()} - Created SourceBuffer for ${i.type} track, mimeType: ${n}, updating video: ${d} audio: ${_}`),this._mediaSource.duration=i.mediaDuration/1e3,l.addEventListener("error",this.events.onSourceBufferError),l.addEventListener("updateend",this.events.onSourceBufferUpdateEnd)}catch(l){h.e(this.TAG,l.message),this._emitter.emit(z.ERROR,{code:l.code,msg:l.message});return}}this._mimeTypes[i.type]=n}t||this._pendingSegments[i.type].push(i),r||this._doAppendSegments(),(G.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(){for(let e of Oe){if(!this._sourceBuffers[e])continue;let t=this._sourceBuffers[e];if(this._mediaSource?.readyState==="open")try{t.abort()}catch(n){h.e(this.TAG,n.message)}let i=this._pendingSegments[e];if(i.splice(0,i.length),this._mediaSource?.readyState!=="closed"){for(let n=0;n<t.buffered.length;n++){let r=t.buffered.start(n),a=t.buffered.end(n);this._pendingRemoveRanges[e].push({start:r,end:a})}if(this._doRemoveRanges(),G.safari){let n=this._lastInitSegments[e];n&&(this._pendingSegments[e].push(n),this._doAppendSegments())}}}}endOfStream(){let e=this._mediaSource,t=this._sourceBuffers;if(!e||e.readyState!=="open"){e&&e.readyState==="closed"&&this._hasPendingSegments()&&(this._hasPendingEos=!0);return}t.video?.updating||t.audio?.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 Oe){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 Oe){let n=this._sourceBuffers[i],r=this._getBufferedRanges(i);if(n&&r){let a=!1;for(let o=0;o<r.length;o++){let l=r.start(o),d=r.end(o);if(l<=t&&t<d+3){if(t-l>=this._config.autoCleanupMaxBackwardDuration){let _=t-this._config.autoCleanupMinBackwardDuration;l<_&&(a=!0,this._pendingRemoveRanges[i].push({start:l,end:_}))}else if(e){let _=t-10;l<_&&(a=!0,this._pendingRemoveRanges[i].push({start:l,end:_}))}}else d<t&&(a=!0,this._pendingRemoveRanges[i].push({start:l,end:d}))}a?(h.v(this.TAG,`Cleanup SourceBuffer ${i}, currentTime: ${t}, pendingRemoveRanges: ${this._pendingRemoveRanges[i].length} ranges`),this._doRemoveRanges()):r.length>0?h.w(this.TAG,`Could not cleanup SourceBuffer ${i}, currentTime: ${t} bufferedStart: ${r.start(0)} bufferedEnd: ${r.end(r.length-1)}`):h.w(this.TAG,`Could not cleanup SourceBuffer ${i}, currentTime: ${t} buffered: empty`)}}}_onMediaTimeUpdate=e=>{this._needCleanupSourceBuffer()&&this._doCleanupSourceBuffer(),this._hasPendingEos&&this._hasPendingSegments()&&!this._hasPendingRemoveRanges()&&(h.v(this.TAG,"Retrying append of final segment after playback progress"),this._doAppendSegments())};_updateMediaSourceDuration(){let e=this._sourceBuffers;if(this._mediaElementProxy.getReadyState()===0||this._mediaSource?.readyState!=="open"||e.video?.updating||e.audio?.updating)return;let t=this._mediaSource.duration,i=this._pendingMediaDuration;i>0&&(isNaN(t)||i>t)&&(h.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 Oe){if(!this._sourceBuffers[e]||this._sourceBuffers[e].updating)continue;let t=this._sourceBuffers[e],i=this._pendingRemoveRanges[e];if(i.length&&!t.updating){let n=i.shift();t.remove(n.start,n.end)}}}_doAppendSegments(){if(!this._mediaSource||this._mediaSource.readyState!=="open")return;let e=this._pendingSegments;for(let t of Oe)if(!(!this._sourceBuffers[t]||this._sourceBuffers[t].updating||this._useManagedMediaSource&&this._mediaSource.streaming===!1)&&e[t].length>0){let i=e[t][0].kind===1?e[t][0]:void 0,n=e[t][0].kind===0?e[t][0]:void 0,r=i?.info,a=i?.frameCount??0,o=e[t].shift();if(o.kind===1&&Number.isFinite(o?.timestampOffset)){let l=this._sourceBuffers[t].timestampOffset,d=o.timestampOffset/1e3;Math.abs(l-d)>.1&&(h.v(this.TAG,`Update MPEG audio timestampOffset from ${l} to ${d}`),this._sourceBuffers[t].timestampOffset=d),delete o.timestampOffset}if(!o.data||o.data.byteLength===0)continue;try{if(o.kind===0&&h.v(this.TAG,`_doAppendSegments: append init ${Ne(o)} pendingAudio=${e.audio.length} pendingVideo=${e.video.length}`),s.TRACE){let l=this._sourceBuffers.audio?.updating,d=this._sourceBuffers.video?.updating;r?h.v(this.TAG,`_doAppendSegments: Now ${Date.now()} - Appending media segment for ${t} SourceBuffer - frameCount: ${a} beginDts: ${r.beginDts} endDts: ${r.endDts} size: ${o.data.byteLength} audioUpdating ${l} videoUpdating ${d}`):h.v(this.TAG,`_doAppendSegments: Now ${Date.now()} - Appending init segment for ${t} SourceBuffer - size: ${o.data.byteLength} audioUpdating ${l} videoUpdating ${d}`)}if(typeof SharedArrayBuffer<"u"&&o.data.buffer instanceof SharedArrayBuffer){let l=o.data.slice();this._sourceBuffers[t].appendBuffer(l)}else this._sourceBuffers[t].appendBuffer(o.data);this._isBufferFull=!1}catch(l){this._pendingSegments[t].unshift(o),h.e(this.TAG,`error.message = ${l.message}; error.name = ${l.name}; error.code = ${l.code}; pendingData.length = ${o.data.length}; type = ${t}; beginDts = ${r?r.beginDts:"N/A"}; endDts = ${r?r.endDts:"N/A"}`),l.name==="QuotaExceededError"?this._hasPendingEos&&this._config.autoCleanupSourceBuffer?(this._mediaElementProxy.setOnMediaTimeUpdate(this._onMediaTimeUpdate),h.v(this.TAG,"QuotaExceededError with pending EOS, forcing cleanup to append final segment."),this._doCleanupSourceBuffer(!0),this._hasPendingRemoveRanges()||(h.w(this.TAG,"Cannot cleanup buffer at current position - will retry as playback progresses"),this._isBufferFull||(this._isBufferFull=!0,this._emitter.emit(z.BUFFER_FULL)))):this._isBufferFull||(this._isBufferFull=!0,this._emitter.emit(z.BUFFER_FULL),this._emitter.emit(z.QUOTA_EXCEEDED_BUFFER_FULL,{type:t,currentBufferLength:this._sourceBuffers[t]?.buffered.length||0,segmentSize:o.data.byteLength})):(h.e(this.TAG,l.message),this._emitter.emit(z.ERROR,{code:l.code,msg:l.message}))}}}_deferInitSegment(e,t){this._pendingSourceBufferInit=this._pendingSourceBufferInit.filter(i=>i.type!==e.type),this._pendingSourceBufferInit.push(e),h.v(this.TAG,`_deferInitSegment: queued deferred=${t} pendingSourceBufferInit=${this._pendingSourceBufferInit.length} pendingAudio=${this._pendingSegments.audio.length} pendingVideo=${this._pendingSegments.video.length} ${Ne(e)}`),t||(this._pendingSegments[e.type]=this._pendingSegments[e.type].filter(i=>i.kind!==0),this._pendingSegments[e.type].push(e),h.v(this.TAG,`_deferInitSegment: also queued into pendingSegments[${e.type}] size=${this._pendingSegments[e.type].length} ${Ne(e)}`))}_flushPendingInitSegments(){for(;this._pendingSourceBufferInit.length>0;){if(!this._mediaSource||this._mediaSource.readyState!=="open"||this._useManagedMediaSource&&this._mediaSource.streaming===!1||this._sourceBuffers.video?.updating||this._sourceBuffers.audio?.updating||this._hasPendingRemoveRanges())return;let e=this._pendingSourceBufferInit.shift();h.v(this.TAG,`_flushPendingInitSegments: dispatching queued init, remaining=${this._pendingSourceBufferInit.length} ${Ne(e)}`),this.appendInitSegment(e,!0)}}_onSourceOpen(){h.v(this.TAG,"MediaSource onSourceOpen"),this._mediaSource?.removeEventListener("sourceopen",this.events.onSourceOpen),this._flushPendingInitSegments(),this._hasPendingSegments()&&this._doAppendSegments(),this._emitter.emit(z.SOURCE_OPEN)}_onStartStreaming(){h.v(this.TAG,"ManagedMediaSource onStartStreaming"),this._flushPendingInitSegments(),this._hasPendingSegments()&&this._doAppendSegments(),this._emitter.emit(z.START_STREAMING)}_onEndStreaming(){h.v(this.TAG,"ManagedMediaSource onEndStreaming"),this._emitter.emit(z.END_STREAMING)}_onQualityChange(){h.v(this.TAG,"ManagedMediaSource onQualityChange")}_onSourceEnded(){h.v(this.TAG,"MediaSource onSourceEnded")}_getBufferedRanges(e){let t=this._sourceBuffers[e];return t?t.buffered:null}_onSourceClose(){h.v(this.TAG,"MediaSource onSourceClose");for(let e of Oe){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(z.UPDATE_END)}_onSourceBufferError(e){let t=e?.target,i=this._mediaElementProxy?.getError?.()??null,n=t?`updating=${t.updating}`:"target=unknown";h.e(this.TAG,`SourceBuffer Error: eventType=${e?.type??"unknown"} ${n} mediaSourceReadyState=${this._mediaSource?.readyState??"null"} mediaElementReadyState=${this._mediaElementProxy?.getReadyState?.()??"unknown"} mediaError=${jr(i)}`);let r=this._mediaElementProxy?.getError?.();r&&this._emitter.emit(z.ERROR,{code:r.code,msg:r.message})}},cr=si;var Ct=class s{static get forceGlobalTag(){return h.FORCE_GLOBAL_TAG}static set forceGlobalTag(e){h.FORCE_GLOBAL_TAG=e,s._notifyChange()}static get globalTag(){return h.GLOBAL_TAG}static set globalTag(e){h.GLOBAL_TAG=e,s._notifyChange()}static get enableAll(){return h.ENABLE_VERBOSE&&h.ENABLE_DEBUG&&h.ENABLE_INFO&&h.ENABLE_WARN&&h.ENABLE_ERROR}static set enableAll(e){h.ENABLE_VERBOSE=e,h.ENABLE_DEBUG=e,h.ENABLE_INFO=e,h.ENABLE_WARN=e,h.ENABLE_ERROR=e,s._notifyChange()}static get enableDebug(){return h.ENABLE_DEBUG}static set enableDebug(e){h.ENABLE_DEBUG=e,s._notifyChange()}static get enableVerbose(){return h.ENABLE_VERBOSE}static set enableVerbose(e){h.ENABLE_VERBOSE=e,s._notifyChange()}static get enableInfo(){return h.ENABLE_INFO}static set enableInfo(e){h.ENABLE_INFO=e,s._notifyChange()}static get enableWarn(){return h.ENABLE_WARN}static set enableWarn(e){h.ENABLE_WARN=e,s._notifyChange()}static get enableError(){return h.ENABLE_ERROR}static set enableError(e){h.ENABLE_ERROR=e,s._notifyChange()}static getConfig(){return{globalTag:h.GLOBAL_TAG,forceGlobalTag:h.FORCE_GLOBAL_TAG,enableVerbose:h.ENABLE_VERBOSE,enableDebug:h.ENABLE_DEBUG,enableInfo:h.ENABLE_INFO,enableWarn:h.ENABLE_WARN,enableError:h.ENABLE_ERROR,enableCallback:h.ENABLE_CALLBACK}}static applyConfig(e){h.GLOBAL_TAG=e.globalTag,h.FORCE_GLOBAL_TAG=e.forceGlobalTag,h.ENABLE_VERBOSE=e.enableVerbose,h.ENABLE_DEBUG=e.enableDebug,h.ENABLE_INFO=e.enableInfo,h.ENABLE_WARN=e.enableWarn,h.ENABLE_ERROR=e.enableError,h.ENABLE_CALLBACK=e.enableCallback}static _notifyChange(){let e=s.emitter;if(e.listenerCount("change")>0){let t=s.getConfig();e.emit("change",t)}}static registerListener(e){s.emitter.addListener("change",e)}static removeListener(e){s.emitter.removeListener("change",e)}static addLogListener(e){h.emitter.addListener("log",e),h.emitter.listenerCount("log")>0&&(h.ENABLE_CALLBACK=!0,s._notifyChange())}static removeLogListener(e){h.emitter.removeListener("log",e),h.emitter.listenerCount("log")===0&&(h.ENABLE_CALLBACK=!1,s._notifyChange())}};Ct.emitter=new ne;var ve=Ct;var ai=class{mimeType=null;duration=null;hasAudio=null;hasVideo=null;audioCodec=null;videoCodec=null;audioDataRate=null;videoDataRate=null;audioSampleRate=null;audioChannelCount=null;width=null;height=null;fps=null;profile=null;level=null;refFrames=null;chromaFormat=null;sarNum=null;sarDen=null;metadata=null;segments=null;segmentCount=null;hasKeyframesIndex=null;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,n=e.length-1,r=0,a=0,o=n;for(t<e[0]&&(i=0,a=o+1);a<=o;)if(r=a+Math.floor((o-a)/2),r===n||t>=e[r]&&t<e[r+1]){i=r;break}else e[r]<t?a=r+1:o=r-1;return i}},ge=ai;var oi=class{constructor(e){this.TAG="ExpGolomb",this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=e.byteLength*8,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index;if(e<=0)throw new j("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 se("ExpGolomb: readBits() bits exceeded max 32bits!");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 n=Math.min(i,this._current_word_bits_left),r=this._current_word>>>32-n;return this._current_word<<=n,this._current_word_bits_left-=n,t=t<<n|r,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)}},ae=oi;var lt=(E=>(E[E.kNull=0]="kNull",E[E.kAAC_Main=1]="kAAC_Main",E[E.kAAC_LC=2]="kAAC_LC",E[E.kAAC_SSR=3]="kAAC_SSR",E[E.kAAC_LTP=4]="kAAC_LTP",E[E.kAAC_SBR=5]="kAAC_SBR",E[E.kAAC_Scalable=6]="kAAC_Scalable",E[E.kTwinVQ=7]="kTwinVQ",E[E.kCELP=8]="kCELP",E[E.kHVXC=9]="kHVXC",E[E.kTTSI=12]="kTTSI",E[E.kMainSynthetic=13]="kMainSynthetic",E[E.kWavetableSynthesis=14]="kWavetableSynthesis",E[E.kGeneralMIDI=15]="kGeneralMIDI",E[E.kAlgorithmicSynthesis=16]="kAlgorithmicSynthesis",E[E.kER_AAC_LC=17]="kER_AAC_LC",E[E.kER_AAC_LTP=19]="kER_AAC_LTP",E[E.kER_AAC_Scalable=20]="kER_AAC_Scalable",E[E.kER_TwinVQ=21]="kER_TwinVQ",E[E.kER_BSAC=22]="kER_BSAC",E[E.kER_AAC_LD=23]="kER_AAC_LD",E[E.kER_CELP=24]="kER_CELP",E[E.kER_HVXC=25]="kER_HVXC",E[E.kER_HILN=26]="kER_HILN",E[E.kER_Parametric=27]="kER_Parametric",E[E.kSSC=28]="kSSC",E[E.kAAC_PS=29]="kAAC_PS",E[E.kMPEGSurround=30]="kMPEGSurround",E[E.kLayer1=32]="kLayer1",E[E.kLayer2=33]="kLayer2",E[E.kLayer3=34]="kLayer3",E[E.kDST=35]="kDST",E[E.kALS=36]="kALS",E[E.kSLS=37]="kSLS",E[E.kSLS_NonCore=38]="kSLS_NonCore",E[E.kER_AAC_ELD=39]="kER_AAC_ELD",E[E.kSMR_Simple=40]="kSMR_Simple",E[E.kSMR_Main=41]="kSMR_Main",E[E.kUSAC=42]="kUSAC",E[E.kSAOC=43]="kSAOC",E[E.kLD_MpegSurround=44]="kLD_MpegSurround",E[E.kSAOC_DE=45]="kSAOC_DE",E))(lt||{});var xe=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];var We=class{audio_object_type=2;sampling_freq_index=4;sampling_frequency=xe[4];channel_config=2;data=new Uint8Array;constructor(e){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=xe[this.sampling_freq_index]??0,this.channel_config=(e[1]&120)>>>3}};var ze=class{config;sampling_rate;channel_count;codec_mimetype;original_codec_mimetype;constructor(e){let t,i=e.audio_object_type,n=e.audio_object_type,r=e.sampling_freq_index,a=e.channel_config,o=0,l=navigator.userAgent.toLowerCase();l.indexOf("firefox")!==-1?r>=6?(n=5,t=new Array(4),o=r-3):(n=2,t=new Array(2),o=r):l.indexOf("android")!==-1?(n=2,t=new Array(2),o=r):(n=5,o=r,t=new Array(4),r>=6&&(o=r-3)),t[0]=n<<3,t[0]|=(r&15)>>>1,t[1]=(r&15)<<7,t[1]|=(a&15)<<3,n===5&&(t[1]|=(o&15)>>>1,t[2]=(o&1)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=xe[r],this.channel_count=a,this.codec_mimetype="mp4a.40."+n,this.original_codec_mimetype="mp4a.40."+i}};var li=class s{static _ebsp2rbsp(e){let t=e,i=t.byteLength,n=new Uint8Array(i),r=0;for(let a=0;a<i;a++)a>=2&&t[a]===3&&t[a-1]===0&&t[a-2]===0||(n[r]=t[a],r++);return new Uint8Array(n.buffer,0,r)}static parseSPS(e){let t=e.subarray(1,4),i="avc1.";for(let N=0;N<3;N++){let $=t[N].toString(16);$.length<2&&($="0"+$),i+=$}let n=s._ebsp2rbsp(e),r=new ae(n);r.readByte();let a=r.readByte();r.readByte();let o=r.readByte();r.readUEG();let l=s.getProfileString(a),d=s.getLevelString(o),_=1,f=420,p=[0,420,422,444],c=8,x=8;if((a===100||a===110||a===122||a===244||a===44||a===83||a===86||a===118||a===128||a===138||a===144)&&(_=r.readUEG(),_===3&&r.readBits(1),_<=3&&(f=p[_]),c=r.readUEG()+8,x=r.readUEG()+8,r.readBits(1),r.readBool())){let N=_!==3?8:12;for(let $=0;$<N;$++)r.readBool()&&($<6?s._skipScalingList(r,16):s._skipScalingList(r,64))}r.readUEG();let u=r.readUEG();if(u===0)r.readUEG();else if(u===1){r.readBits(1),r.readSEG(),r.readSEG();let N=r.readUEG();for(let $=0;$<N;$++)r.readSEG()}let m=r.readUEG();r.readBits(1);let g=r.readUEG(),b=r.readUEG(),y=r.readBits(1);y===0&&r.readBits(1),r.readBits(1);let k=0,M=0,T=0,C=0;r.readBool()&&(k=r.readUEG(),M=r.readUEG(),T=r.readUEG(),C=r.readUEG());let D=1,S=1,P=0,X=!0,Z=0,Q=0;if(r.readBool()){if(r.readBool()){let N=r.readByte(),$=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2],$e=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1];N>0&&N<16?(D=$[N-1],S=$e[N-1]):N===255&&(D=r.readByte()<<8|r.readByte(),S=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let N=r.readBits(32),$=r.readBits(32);X=r.readBool(),Z=$,Q=N*2,P=Z/Q}}let Y=1;(D!==1||S!==1)&&(Y=D/S);let ie=0,V=0;if(_===0)ie=1,V=2-y;else{let N=_===3?1:2,$=_===1?2:1;ie=N,V=$*(2-y)}let ee=(g+1)*16,de=(2-y)*((b+1)*16);ee-=(k+M)*ie,de-=(T+C)*V;let Ce=Math.ceil(ee*Y);return r.destroy(),r=null,{codec_mimetype:i,profile_idc:a,level_idc:o,profile_string:l,level_string:d,chroma_format_idc:_,bit_depth:c,bit_depth_luma:c,bit_depth_chroma:x,ref_frames:m,chroma_format:f,chroma_format_string:s.getChromaFormatString(f),frame_rate:{fixed:X,fps:P,fps_den:Q,fps_num:Z},sar_ratio:{width:D,height:S},codec_size:{width:ee,height:de},present_size:{width:Ce,height:de}}}static _skipScalingList(e,t){let i=8,n=8,r=0;for(let a=0;a<t;a++)n!==0&&(r=e.readSEG(),n=(i+r+256)%256),i=n===0?i:n}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"}}},Rt=li;var di=class s{static _ebsp2rbsp(e){let t=e,i=t.byteLength,n=new Uint8Array(i),r=0;for(let a=0;a<i;a++)a>=2&&t[a]===3&&t[a-1]===0&&t[a-2]===0||(n[r]=t[a],r++);return new Uint8Array(n.buffer,0,r)}static parseVPS(e){let t=s._ebsp2rbsp(e),i=new ae(t);i.readByte(),i.readByte();let n=i.readBits(4);i.readBits(2);let r=i.readBits(6),a=i.readBits(3),o=i.readBool();return{num_temporal_layers:a+1,temporal_id_nested:o}}static parseSPS(e){let t=s._ebsp2rbsp(e),i=new ae(t);i.readByte(),i.readByte();let n=0,r=0,a=0,o=0,l=i.readBits(4),d=i.readBits(3),_=i.readBool(),f=i.readBits(2),p=i.readBool(),c=i.readBits(5),x=i.readByte(),u=i.readByte(),m=i.readByte(),g=i.readByte(),b=i.readByte(),y=i.readByte(),k=i.readByte(),M=i.readByte(),T=i.readByte(),C=i.readByte(),v=i.readByte(),D=[],S=[];for(let I=0;I<d;I++)D.push(i.readBool()),S.push(i.readBool());if(d>0)for(let I=d;I<8;I++)i.readBits(2);for(let I=0;I<d;I++)D[I]&&(i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte()),S[I]&&i.readByte();let P=i.readUEG(),X=i.readUEG();X==3&&i.readBits(1);let Z=i.readUEG(),Q=i.readUEG();i.readBool()&&(n+=i.readUEG(),r+=i.readUEG(),a+=i.readUEG(),o+=i.readUEG());let Y=i.readUEG(),ie=i.readUEG(),V=i.readUEG(),ee=i.readBool();for(let I=ee?0:d;I<=d;I++)i.readUEG(),i.readUEG(),i.readUEG();let de=i.readUEG(),Ce=i.readUEG(),N=i.readUEG(),$=i.readUEG(),$e=i.readUEG(),Qi=i.readUEG();if(i.readBool()&&i.readBool())for(let K=0;K<4;K++)for(let J=0;J<(K===3?2:6);J++)if(!i.readBool())i.readUEG();else{let oe=Math.min(64,1<<4+(K<<1));K>1&&i.readSEG();for(let ue=0;ue<oe;ue++)i.readSEG()}let wr=i.readBool(),jt=i.readBool();i.readBool()&&(i.readByte(),i.readUEG(),i.readUEG(),i.readBool());let Le=i.readUEG(),ut=0;for(let I=0;I<Le;I++){let K=!1;if(I!==0&&(K=i.readBool()),K){I===Le&&i.readUEG(),i.readBool(),i.readUEG();let J=0;for(let _e=0;_e<=ut;_e++){let oe=i.readBool(),ue=!1;oe||(ue=i.readBool()),(oe||ue)&&J++}ut=J}else{let J=i.readUEG(),_e=i.readUEG();ut=J+_e;for(let oe=0;oe<J;oe++)i.readUEG(),i.readBool();for(let oe=0;oe<_e;oe++)i.readUEG(),i.readBool()}}if(i.readBool()){let I=i.readUEG();for(let K=0;K<I;K++){for(let J=0;J<V+4;J++)i.readBits(1);i.readBits(1)}}let ft=!1,mt=0,Ve=1,Pe=1,pt=!1,Je=1,et=1,Ji=i.readBool(),er=i.readBool();if(i.readBool()){if(i.readBool()){let ye=i.readByte(),gt=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2],xt=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1];ye>0&&ye<=16?(Ve=gt[ye-1],Pe=xt[ye-1]):ye===255&&(Ve=i.readBits(16),Pe=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 oe=i.readBool(),ue=i.readBool(),tt=i.readBool();if(ft=i.readBool(),ft&&(i.readUEG(),i.readUEG(),i.readUEG(),i.readUEG()),i.readBool()&&(Je=i.readBits(32),et=i.readBits(32),i.readBool()&&i.readUEG(),i.readBool())){let xt=1,bt=!1,yt=!1,qe=!1;if(xt&&(bt=i.readBool(),yt=i.readBool(),bt||yt)){qe=i.readBool(),qe&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5));let vt=i.readBits(4),Jt=i.readBits(4);qe&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5)}for(let vt=0;vt<=d;vt++){let Jt=i.readBool();pt=Jt;let rr=!0,ei=1;Jt||(rr=i.readBool());let nr=!1;if(rr?i.readUEG():nr=i.readBool(),nr||(ei=i.readUEG()+1),bt){for(let rt=0;rt<ei;rt++)i.readUEG(),i.readUEG(),qe&&(i.readUEG(),i.readUEG());i.readBool()}if(yt){for(let rt=0;rt<ei;rt++)i.readUEG(),i.readUEG(),qe&&(i.readUEG(),i.readUEG());i.readBool()}}}if(i.readBool()){let ye=i.readBool(),gt=i.readBool(),xt=i.readBool();mt=i.readUEG();let bt=i.readUEG(),yt=i.readUEG(),qe=i.readUEG(),vt=i.readUEG()}}let Re=i.readBool(),be=`hvc1.${c}.1.L${v}.B0`,ir=X===1||X===2?2:1,Yt=X===1?2:1,Xt=Z-(n+r)*ir,Qt=Q-(a+o)*Yt,Zt=1;return Ve!==1&&Pe!==1&&(Zt=Ve/Pe),i.destroy(),i=null,{codec_mimetype:be,profile_string:s.getProfileString(c),level_string:s.getLevelString(v),profile_idc:c,bit_depth:Y+8,ref_frames:1,chroma_format:X,chroma_format_string:s.getChromaFormatString(X),general_level_idc:v,general_profile_space:f,general_tier_flag:p,general_profile_idc:c,general_profile_compatibility_flags_1:x,general_profile_compatibility_flags_2:u,general_profile_compatibility_flags_3:m,general_profile_compatibility_flags_4:g,general_constraint_indicator_flags_1:b,general_constraint_indicator_flags_2:y,general_constraint_indicator_flags_3:k,general_constraint_indicator_flags_4:M,general_constraint_indicator_flags_5:T,general_constraint_indicator_flags_6:C,min_spatial_segmentation_idc:mt,constant_frame_rate:0,chroma_format_idc:X,bit_depth_luma_minus8:Y,bit_depth_chroma_minus8:ie,frame_rate:{fixed:pt,fps:et/Je,fps_den:Je,fps_num:et},sar_ratio:{width:Ve,height:Pe},codec_size:{width:Xt,height:Qt},present_size:{width:Xt*Zt,height:Qt}}}static parsePPS(e){let t=s._ebsp2rbsp(e),i=new ae(t);i.readByte(),i.readByte();let n=i.readUEG(),r=i.readUEG(),a=i.readBool(),o=i.readBool(),l=i.readBits(3),d=i.readBool(),_=i.readBool(),f=i.readUEG(),p=i.readUEG(),c=i.readSEG(),x=i.readBool(),u=i.readBool();if(i.readBool()){let S=i.readUEG()}let g=i.readSEG(),b=i.readSEG(),y=i.readBool(),k=i.readBool(),M=i.readBool(),T=i.readBool(),C=i.readBool(),v=i.readBool(),D=1;return v&&C?D=0:v?D=3:C&&(D=2),{parallelismType:D}}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)}},Ke=di;var _i=class{type=0;data=new Uint8Array},kt=class{type;data;constructor(e){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)}},Tt=class{TAG="H264AnnexBParser";data_;current_startcode_offset_=0;eof_flag_=!1;constructor(e){this.data_=e,this.current_startcode_offset_=this.findNextStartCodeOffset(0),this.eof_flag_&&h.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 n=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],r=i[t+0]<<16|i[t+1]<<8|i[t+2];if(n===1||r===1)return t;t++}}readNextNaluPayload(){let e=this.data_,t=null;for(;t==null&&!this.eof_flag_;){let n=this.current_startcode_offset_;(e[n]<<24|e[n+1]<<16|e[n+2]<<8|e[n+3])===1?n+=4:n+=3;let a=e[n]&31,o=(e[n]&128)>>>7,l=this.findNextStartCodeOffset(n);if(this.current_startcode_offset_=l,a>=14||o!==0)continue;let d=e.subarray(n,l);t=new _i,t.type=a,t.data=d}return t}},Ft=class{data;constructor(e,t,i){let n=8+e.byteLength+1+2+t.byteLength,r=!1;e[3]!==66&&e[3]!==77&&e[3]!==88&&(r=!0,n+=4);let a=this.data=new Uint8Array(n);a[0]=1,a[1]=e[1],a[2]=e[2],a[3]=e[3],a[4]=255,a[5]=225;let o=e.byteLength;a[6]=o>>>8,a[7]=o&255;let l=8;a.set(e,8),l+=o,a[l]=1;let d=t.byteLength;a[l+1]=d>>>8,a[l+2]=d&255,a.set(t,l+3),l+=3+d,r&&(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 Lt=class{type;data;constructor(e){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)}},Dt=class{TAG="H265AnnexBParser";data_;current_startcode_offset_=0;eof_flag_=!1;constructor(e){this.data_=e,this.current_startcode_offset_=this.findNextStartCodeOffset(0),this.eof_flag_&&h.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 n=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],r=i[t+0]<<16|i[t+1]<<8|i[t+2];if(n===1||r===1)return t;t++}}readNextNaluPayload(){let e=this.data_,t=null;for(;t==null&&!this.eof_flag_;){let n=this.current_startcode_offset_;(e[n]<<24|e[n+1]<<16|e[n+2]<<8|e[n+3])===1?n+=4:n+=3;let a=e[n]>>1&63,o=(e[n]&128)>>>7,l=this.findNextStartCodeOffset(n);if(this.current_startcode_offset_=l,o!==0)continue;let d=e.subarray(n,l);t={type:a,data:d}}return t}},Bt=class{data;constructor(e,t,i,n){let r=23+(5+e.byteLength)+(5+t.byteLength)+(5+i.byteLength),a=this.data=new Uint8Array(r);a[0]=1,a[1]=(n.general_profile_space&3)<<6|(n.general_tier_flag?1:0)<<5|n.general_profile_idc&31,a[2]=n.general_profile_compatibility_flags_1,a[3]=n.general_profile_compatibility_flags_2,a[4]=n.general_profile_compatibility_flags_3,a[5]=n.general_profile_compatibility_flags_4,a[6]=n.general_constraint_indicator_flags_1,a[7]=n.general_constraint_indicator_flags_2,a[8]=n.general_constraint_indicator_flags_3,a[9]=n.general_constraint_indicator_flags_4,a[10]=n.general_constraint_indicator_flags_5,a[11]=n.general_constraint_indicator_flags_6,a[12]=n.general_level_idc,a[13]=240|(n.min_spatial_segmentation_idc&3840)>>8,a[14]=n.min_spatial_segmentation_idc&255,a[15]=252|n.parallelismType&3,a[16]=252|n.chroma_format_idc&3,a[17]=248|n.bit_depth_luma_minus8&7,a[18]=248|n.bit_depth_chroma_minus8&7,a[19]=0,a[20]=0,a[21]=(n.constant_frame_rate&3)<<6|(n.num_temporal_layers&7)<<3|(n.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 dt="av1-parser";var hi=class s{static parseOBUs(e,t){for(let i=0;i<e.byteLength;){let n=i,r=(e[i]&128)>>7,a=(e[i]&120)>>3,o=(e[i]&4)!==0,l=(e[i]&2)!==0,d=(e[i]&1)!==0;i+=1;let _=0,f=0;o&&(i+=1);let p=Number.POSITIVE_INFINITY;if(l){p=0;for(let c=0;;c++){let x=e[i++];if(p|=(x&127)<<c*7,(x&128)===0)break}}a===1?t={...s.parseSeuqneceHeader(e.subarray(i,i+p)),sequence_header_data:e.subarray(n,i+p)}:(a==3&&t||a==6&&t)&&(t=s.parseOBUFrameHeader(e.subarray(i,i+p),_,f,t)),i+=p}return t}static stripLeadingObuFraming(e){if(e.length===0)return e;function t(r){let a=0,o=(r[a]&128)>>7!==0,l=(r[a]&120)>>3,d=(r[a]&4)!==0,_=(r[a]&2)!==0,f=(r[a]&1)!==0;if(a+=1,o&&h.e(dt,"Invalid OBU header: forbidden bit is set"),d&&(a+=1),_){let p=0;for(let c=0;;c++){if(a>=r.length)return new Uint8Array(0);let x=r[a++];if(p|=(x&127)<<c*7,(x&128)===0)break}return r.subarray(a+p)}else return r.subarray(a)}let i=(e[0]&120)>>3,n=e;switch(i){case 2:n=t(e);break;case 7:h.e(dt,"OBU_REDUNDANT_FRAME_HEADER is not supported");break;case 8:h.e(dt,"OBU_TILE_LIST is not supported");break;case 15:h.e(dt,"OBU_PADDING is not supported");break;default:break}return n}static parseSeuqneceHeader(e){let t=new ae(e),i=t.readBits(3),n=t.readBool(),r=t.readBool(),a=-1,o=0,l=!0,d=0,_=1,f=!1,p=!1,c=-1,x=-1,u=[];if(r)u.push({operating_point_idc:0,level:t.readBits(5),tier:0});else{if(t.readBool()){let _e=t.readBits(32),oe=t.readBits(32),ue=t.readBool(),tt=0;if(ue){let De=0;for(;t.readBits(1)===0;)De+=1;De>=32?tt=4294967295:tt=(1<<De)-1+t.readBits(De)}if(_=_e,d=oe,o=d/_,l=ue,t.readBool()){c=t.readBits(5);let De=t.readBits(32);x=t.readBits(5),a=t.readBits(5)}}let K=t.readBool(),J=t.readBits(5);for(let _e=0;_e<=J;_e++){let oe=t.readBits(12),ue=t.readBits(5),tt=ue>7?t.readBits(1):0;if(u.push({operating_point_idc:oe,level:ue,tier:tt}),f){let it=t.readBool();if(u[u.length-1].decoder_model_present_for_this_op=it,it){let De=t.readBits(c+1),ye=t.readBits(c+1),gt=t.readBool()}}if(K&&t.readBool()){let De=t.readBits(4)}}}let m=0,{level:g,tier:b}=u[m],y=t.readBits(4),k=t.readBits(4),M=t.readBits(y+1)+1,T=t.readBits(k+1)+1,C=!1;r||(C=t.readBool());let v,D;if(C){let I=t.readBits(4),K=t.readBits(4)}let S=2,P=2,X=t.readBool(),Z=t.readBool(),Q=t.readBool(),q=!1,Y=!1,ie=!1,V=!1,ee=!1,de=!1,Ce=!1,N=S,$=P,$e=0;if(!r){if(q=t.readBool(),Y=t.readBool(),ie=t.readBool(),V=t.readBool(),ee=t.readBool(),ee){let K=t.readBool(),J=t.readBool()}t.readBool()?N=S:N=t.readBits(1),N?t.readBool()?$=P:$=t.readBits(1):$=P,ee?$e=t.readBits(3)+1:$e=0}let Qi=t.readBool(),E=t.readBool(),wr=t.readBool(),jt=t.readBool(),Ge=8;i===2&&jt?Ge=t.readBool()?12:10:Ge=jt?10:8;let Le=!1;i!==1&&(Le=t.readBool());let ut=Le?1:3,Zi=t.readBool(),ft=1,mt=2,Ve=2,Pe=13,pt=2,Je=0,et=mt,Ji=Ve,er=pt;if(Zi){let I=t.readBits(8),K=t.readBits(8),J=t.readBits(8)}let tr=1,Re=1,be=1;if(Le){tr=t.readBits(1),Re=1,be=1;let I=0,K=0}else{let I=1;if(et===ft&&Ji===Pe&&er===Je)I=1,Re=1,be=1;else{if(I=t.readBits(1),i==0)Re=1,be=1;else if(i==1)Re=0,be=0;else if(Ge==12)if(t.readBits(1)){let _e=t.readBits(1)}else{let _e=0}else Re=1,be=0;if(Re&&be){let J=t.readBits(2)}let K=t.readBits(1)}}let ir=t.readBool();t.destroy();let Yt=`av01.${i}.${s.getLevelString(g,b)}.${Ge.toString(10).padStart(2,"0")}`,Xt=1,Qt=1,Zt=1;return{codec_mimetype:Yt,level:g,tier:b,level_string:s.getLevelString(g,b),profile_idc:i,profile_string:`${i}`,bit_depth:Ge,ref_frames:1,chroma_format:s.getChromaFormat(Le,Re,be),chroma_format_string:s.getChromaFormatString(Le,Re,be),sequence_header:{frame_id_numbers_present_flag:C,additional_frame_id_length_minus_1:D,delta_frame_id_length_minus_2:v,reduced_still_picture_header:r,decoder_model_info_present_flag:f,operating_points:u,buffer_removal_time_length_minus_1:x,equal_picture_interval:l,seq_force_screen_content_tools:N,seq_force_integer_mv:$,enable_order_hint:ee,order_hint_bits:$e,enable_superres:Qi,frame_width_bit:y+1,frame_height_bit:k+1,max_frame_width:M,max_frame_height:T,frame_presentation_time_length_minus_1:a},keyframe:void 0,frame_rate:{fixed:l,fps:d/_,fps_den:_,fps_num:d}}}static parseOBUFrameHeader(e,t,i,n){let{sequence_header:r}=n,a=new ae(e),o=8,l=2,d=2,_=7,f=r.max_frame_width,p=r.max_frame_height,c=f,x=p,u=0;r.frame_id_numbers_present_flag&&(u=r.additional_frame_id_length_minus_1+r.delta_frame_id_length_minus_2+3);let m=(1<<o)-1,g=!1,b=0,y=!0,k=!0,M=!1,T=!1;if(!r.reduced_still_picture_header){if(g=a.readBool(),g)return n;if(b=a.readBits(2),y=b===2||b===0,k=a.readBool(),k&&r.decoder_model_info_present_flag&&!r.equal_picture_interval){let V=r.frame_presentation_time_length_minus_1+1,ee=a.readBits(V);h.v(dt,`frame_presentation_time: ${ee}`)}k?M=b!==0:M=a.readBool(),b===3||b===0&&k?T=!0:T=a.readBool()}n.keyframe=y;let C=a.readBool(),v=r.seq_force_screen_content_tools;r.seq_force_screen_content_tools===l&&(v=a.readBits(1));let D=y?1:0;v&&(D=r.seq_force_integer_mv,r.seq_force_integer_mv==d&&(D=a.readBits(1)));let S=0;r.frame_id_numbers_present_flag&&(S=a.readBits(u));let P=!1;b==3?P=!0:r.reduced_still_picture_header?P=!1:P=a.readBool();let X=a.readBits(r.order_hint_bits),Z=_;if(y||T||(Z=a.readBits(3)),r.decoder_model_info_present_flag&&a.readBool()){let ee=r.operating_points_cnt_minus_1??0;for(let de=0;de<=ee;de++)if(r.operating_points[de].decoder_model_present_for_this_op){let Ce=r.operating_points[de].operating_point_idc,N=Ce>>t&1,$=Ce>>i+8&1;(Ce===0||N&&$)&&a.readBits(r.buffer_removal_time_length_minus_1+1)}}let Q=0,q=0,Y=0,ie=m;if(b===3||b==0&&k||(ie=a.readBits(8)),(!y||ie!==m)&&T&&r.enable_order_hint)for(let V=0;V<o;V++)a.readBits(r.order_hint_bits);if(y){let V=s.frameSizeAndRenderSize(a,P,r);n.codec_size={width:V.FrameWidth,height:V.FrameHeight},n.present_size={width:V.RenderWidth,height:V.RenderHeight},n.sar_ratio={width:V.RenderWidth/V.FrameWidth,height:V.RenderHeight/V.FrameHeight}}return a.destroy(),n}static frameSizeAndRenderSize(e,t,i){let n=i.max_frame_width,r=i.max_frame_height;t&&(n=e.readBits(i.frame_width_bit)+1,r=e.readBits(i.frame_height_bit)+1);let a=!1;i.enable_superres&&(a=e.readBool());let o=8;a&&(o=e.readBits(3)+9);let l=n;n=Math.floor((l*8+o/2)/o);let d=e.readBool(),_=l,f=r;return d&&(_=e.readBits(16)+1,f=e.readBits(16)+1),{UpscaledWidth:l,FrameWidth:n,FrameHeight:r,RenderWidth:_,RenderHeight:f}}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"}},fe=hi;var Yr={width:0,height:0,renderWidth:0,renderHeight:0,profile:0,isValid:!1},je=class{static parseVp9Header(e){let t={...Yr};if(e.length<10)return t;let i=new ae(e);if(i.readBits(2)!==2||(t.profile=i.readBits(2),t.profile===3&&i.readBits(1),i.readBool())||i.readBool())return t;let r=i.readBool(),a=i.readBool(),o=i.readBits(24),l=8;t.profile>=2&&(l=i.readBool()?12:10);let d=i.readBits(3),_;(v=>(v[v.CS_UNKNOWN=0]="CS_UNKNOWN",v[v.CS_BT_601=1]="CS_BT_601",v[v.CS_BT_709=2]="CS_BT_709",v[v.CS_SMPTE_170=3]="CS_SMPTE_170",v[v.CS_SMPTE_240=4]="CS_SMPTE_240",v[v.CS_BT_2020=5]="CS_BT_2020",v[v.CS_RESERVED=6]="CS_RESERVED",v[v.CS_RGB=7]="CS_RGB"))(_||={}),d!==7?(i.readBool(),(t.profile===1||t.profile===3)&&(i.readBool(),i.readBool(),i.readBool())):(t.profile===1||t.profile===3)&&i.readBool();let f=i.readBits(16)+1,p=i.readBits(16)+1,c=i.readBool(),x=f,u=p;return c&&(x=i.readBits(16)+1,u=i.readBits(16)+1),t.width=f,t.height=p,t.renderWidth=x,t.renderHeight=u,t.isValid=!0,i.destroy(),t}};function ci(s,e,t){let i=s;if(e+t<i.length){for(;t--;)if((i[++e]&192)!==128)return!1;return!0}else return!1}function Xr(s){let e=[],t=s,i=0,n=s.length;for(;i<n;){if(t[i]<128){e.push(String.fromCharCode(t[i])),++i;continue}else if(!(t[i]<192)){if(t[i]<224){if(ci(t,i,1)){let r=(t[i]&31)<<6|t[i+1]&63;if(r>=128){e.push(String.fromCharCode(r&65535)),i+=2;continue}}}else if(t[i]<240){if(ci(t,i,2)){let r=(t[i]&15)<<12|(t[i+1]&63)<<6|t[i+2]&63;if(r>=2048&&(r&63488)!==55296){e.push(String.fromCharCode(r&65535)),i+=3;continue}}}else if(t[i]<248&&ci(t,i,3)){let r=(t[i]&7)<<18|(t[i+1]&63)<<12|(t[i+2]&63)<<6|t[i+3]&63;if(r>65536&&r<1114112){r-=65536,e.push(String.fromCharCode(r>>>10|55296)),e.push(String.fromCharCode(r&1023|56320)),i+=4;continue}}}e.push("\uFFFD"),++i}return e.join("")}var ui=Xr;var Ae=(function(){let s=new ArrayBuffer(2);return new DataView(s).setInt16(0,256,!0),new Int16Array(s)[0]===256})(),fi=class s{static parseScriptData(e,t,i){let n={};try{let r=s.parseValue(e,t,i),a=s.parseValue(e,t+r.size,i-r.size);n[r.data]=a.data}catch(r){h.e("AMF",r.toString())}return n}static parseObject(e,t,i){if(i<3)throw new j("Data not enough when parse ScriptDataObject");let n=s.parseString(e,t,i),r=s.parseValue(e,t+n.size,i-n.size),a=r.objectEnd;return{data:{name:n.data,value:r.data},size:n.size+r.size,objectEnd:a}}static parseVariable(e,t,i){return s.parseObject(e,t,i)}static parseString(e,t,i){if(i<2)throw new j("Data not enough when parse String");let r=new DataView(e,t,i).getUint16(0,!Ae),a;return r>0?a=ui(new Uint8Array(e,t+2,r)):a="",{data:a,size:2+r}}static parseLongString(e,t,i){if(i<4)throw new j("Data not enough when parse LongString");let r=new DataView(e,t,i).getUint32(0,!Ae),a;return r>0?a=ui(new Uint8Array(e,t+4,r)):a="",{data:a,size:4+r}}static parseDate(e,t,i){if(i<10)throw new j("Data size invalid when parse Date");let n=new DataView(e,t,i),r=n.getFloat64(0,!Ae),a=n.getInt16(8,!Ae);return r+=a*60*1e3,{data:new Date(r),size:10}}static parseValue(e,t,i){if(i<1)throw new j("Data not enough when parse Value");let n=new DataView(e,t,i),r=1,a=n.getUint8(0),o,l=!1;try{switch(a){case 0:o=n.getFloat64(1,!Ae),r+=8;break;case 1:{o=!!n.getUint8(1),r+=1;break}case 2:{let d=s.parseString(e,t+1,i-1);o=d.data,r+=d.size;break}case 3:{o={};let d=0;for((n.getUint32(i-4,!Ae)&16777215)===9&&(d=3);r<i-4;){let _=s.parseObject(e,t+r,i-r-d);if(_.objectEnd)break;o[_.data.name]=_.data.value,r+=_.size}r<=i-3&&(n.getUint32(r-1,!Ae)&16777215)===9&&(r+=3);break}case 8:{o={},r+=4;let d=0;for((n.getUint32(i-4,!Ae)&16777215)===9&&(d=3);r<i-8;){let _=s.parseVariable(e,t+r,i-r-d);if(_.objectEnd)break;o[_.data.name]=_.data.value,r+=_.size}r<=i-3&&(n.getUint32(r-1,!Ae)&16777215)===9&&(r+=3);break}case 9:o=void 0,r=1,l=!0;break;case 10:{o=[];let d=n.getUint32(1,!Ae);r+=4;for(let _=0;_<d;_++){let f=s.parseValue(e,t+r,i-r);o.push(f.data),r+=f.size}break}case 11:{let d=s.parseDate(e,t+1,i-1);o=d.data,r+=d.size;break}case 12:{let d=s.parseString(e,t+1,i-1);o=d.data,r+=d.size;break}default:r=i,h.w("AMF","Unsupported AMF value type "+a)}}catch(d){h.e("AMF",d.toString())}return{data:o,size:r,objectEnd:l}}},ur=fi;var Qr={OK:"OK",FORMAT_ERROR:"FormatError",FORMAT_UNSUPPORTED:"FormatUnsupported",CODEC_UNSUPPORTED:"CodecUnsupported"},w=Qr;function fr(s){return s.byteOffset%2===0&&s.byteLength%2===0}function mr(s){return s.byteOffset%4===0&&s.byteLength%4===0}function mi(s,e){for(let t=0;t<s.length;t++)if(s[t]!==e[t])return!1;return!0}function Zr(s,e){return mi(s,e)}function Jr(s,e){let t=new Uint16Array(s.buffer,s.byteOffset,s.byteLength/2),i=new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2);return mi(t,i)}function en(s,e){let t=new Uint32Array(s.buffer,s.byteOffset,s.byteLength/4),i=new Uint32Array(e.buffer,e.byteOffset,e.byteLength/4);return mi(t,i)}function tn(s,e){return s.byteLength!==e.byteLength?!1:mr(s)&&mr(e)?en(s,e):fr(s)&&fr(e)?Jr(s,e):Zr(s,e)}var me=tn;var te=(...s)=>{throw new Error("Callback function has not been implemented.")},Te=(...s)=>{h.v("No operation callback invoked with arguments:",s)};function an(s){return Array.from(s).map(e=>e.toString(16).padStart(2,"0")).join(" ")}var pi=(m=>(m[m.SequenceStart=0]="SequenceStart",m[m.CodedFrames=1]="CodedFrames",m[m.SequenceEnd=2]="SequenceEnd",m[m.Reserved3=3]="Reserved3",m[m.MultichannelConfig=4]="MultichannelConfig",m[m.Multitrack=5]="Multitrack",m[m.Reserved6=6]="Reserved6",m[m.ModEx=7]="ModEx",m[m.Reserved8=8]="Reserved8",m[m.Reserved9=9]="Reserved9",m[m.Reserved10=10]="Reserved10",m[m.Reserved11=11]="Reserved11",m[m.Reserved12=12]="Reserved12",m[m.Reserved13=13]="Reserved13",m[m.Reserved14=14]="Reserved14",m[m.Reserved15=15]="Reserved15",m))(pi||{});var xr=(i=>(i[i.Unspecified=0]="Unspecified",i[i.Native=1]="Native",i[i.Custom=2]="Custom",i))(xr||{}),br=(v=>(v[v.FrontLeft=1]="FrontLeft",v[v.FrontRight=2]="FrontRight",v[v.FrontCenter=4]="FrontCenter",v[v.LowFrequency1=8]="LowFrequency1",v[v.BackLeft=16]="BackLeft",v[v.BackRight=32]="BackRight",v[v.FrontLeftCenter=64]="FrontLeftCenter",v[v.FrontRightCenter=128]="FrontRightCenter",v[v.BackCenter=256]="BackCenter",v[v.SideLeft=512]="SideLeft",v[v.SideRight=1024]="SideRight",v[v.TopCenter=2048]="TopCenter",v[v.TopFrontLeft=4096]="TopFrontLeft",v[v.TopFrontCenter=8192]="TopFrontCenter",v[v.TopFrontRight=16384]="TopFrontRight",v[v.TopBackLeft=32768]="TopBackLeft",v[v.TopBackCenter=65536]="TopBackCenter",v[v.TopBackRight=131072]="TopBackRight",v[v.LowFrequency2=262144]="LowFrequency2",v[v.TopSideLeft=524288]="TopSideLeft",v[v.TopSideRight=1048576]="TopSideRight",v[v.BottomFrontCenter=2097152]="BottomFrontCenter",v[v.BottomFrontLeft=4194304]="BottomFrontLeft",v[v.BottomFrontRight=8388608]="BottomFrontRight",v))(br||{}),yr=(S=>(S[S.FrontLeft=0]="FrontLeft",S[S.FrontRight=1]="FrontRight",S[S.FrontCenter=2]="FrontCenter",S[S.LowFrequency1=3]="LowFrequency1",S[S.BackLeft=4]="BackLeft",S[S.BackRight=5]="BackRight",S[S.FrontLeftCenter=6]="FrontLeftCenter",S[S.FrontRightCenter=7]="FrontRightCenter",S[S.BackCenter=8]="BackCenter",S[S.SideLeft=9]="SideLeft",S[S.SideRight=10]="SideRight",S[S.TopCenter=11]="TopCenter",S[S.TopFrontLeft=12]="TopFrontLeft",S[S.TopFrontCenter=13]="TopFrontCenter",S[S.TopFrontRight=14]="TopFrontRight",S[S.TopBackLeft=15]="TopBackLeft",S[S.TopBackCenter=16]="TopBackCenter",S[S.TopBackRight=17]="TopBackRight",S[S.LowFrequency2=18]="LowFrequency2",S[S.TopSideLeft=19]="TopSideLeft",S[S.TopSideRight=20]="TopSideRight",S[S.BottomFrontCenter=21]="BottomFrontCenter",S[S.BottomFrontLeft=22]="BottomFrontLeft",S[S.BottomFrontRight=23]="BottomFrontRight",S[S.Unused=254]="Unused",S[S.Unknown=255]="Unknown",S))(yr||{});function pr(s){switch(s){case 0:return"SCE";case 1:return"CPE";case 2:return"CCE";case 3:return"LFE";case 4:return"DSE";case 5:return"PCE";case 6:return"FIL";case 7:return"END";default:return`unknown(${s})`}}function gr(s){let e=s.readBits(4),t=s.readBits(2),i=s.readBits(4),n=s.readBits(4),r=s.readBits(4),a=s.readBits(4),o=s.readBits(2),l=s.readBits(3),d=s.readBits(4);return`PCE instanceTag=${e} objectType=${t} samplingIndex=${i} front=${n} side=${r} back=${a} lfe=${o} assoc=${l} cc=${d}`}function on(s){let e=s.readBits(4),t=s.readBits(2),i=s.readBits(4),n=s.readBits(4),r=s.readBits(4),a=s.readBits(4),o=s.readBits(2),l=s.readBits(3),d=s.readBits(4);s.readBool()&&pe(s,4),s.readBool()&&pe(s,4),s.readBool()&&pe(s,3);let _=0,f=p=>{for(let c=0;c<p;c++){let x=s.readBool();pe(s,4),_+=x?2:1}};f(n),f(r),f(a);for(let p=0;p<o;p++)pe(s,4),_++;for(let p=0;p<l;p++)pe(s,4);for(let p=0;p<d;p++)pe(s,5);return{channelCount:_,description:`PCE instanceTag=${e} objectType=${t} samplingIndex=${i} front=${n} side=${r} back=${a} lfe=${o} assoc=${l} cc=${d}`}}function ln(s){let e=new ae(s);try{pe(e,13);let t=e.readBool(),i=e.readBool();i&&pe(e,14);let n=e.readBool(),r=on(e);return{...r,description:`${r.description} frameLengthFlag=${Number(t)} dependsOnCoreCoder=${Number(i)} extensionFlag=${Number(n)}`}}catch{return null}finally{e.destroy()}}function pe(s,e){let t=e;for(;t>0;){let i=Math.min(t,32);s.readBits(i),t-=i}}function dn(s){if(!s||s.byteLength===0)return"empty-payload";let e=new ae(s);try{let t=e.readBits(3),i=pr(t);if(t===5)return`firstElement=${gr(e)}`;if(t!==6)return`firstElement=${i}`;let n=e.readBits(4);n===15&&(n+=e.readBits(8)-1);let r="",a="";if(n>0){let _=e.readBits(4),f=n*8-4;if(_===13)r=" SBR=EXT_SBR_DATA",pe(e,f);else if(_===14)r=" SBR=EXT_SBR_DATA_CRC",pe(e,f);else{let p=[],c=f;for(;c>=8;)p.push(e.readBits(8)),c-=8;c>0&&pe(e,c);let x=p.map(u=>u>=32&&u<=126?String.fromCharCode(u):".").join("");/[A-Za-z]{3}/.test(x)&&(a=` fillAscii="${x.trim()}"(encoder-padding)`)}}let o=e.readBits(3),l=pr(o),d=o===1?`${l}(stereo-pair)`:o===0?`${l}(mono)`:o===3?`${l}(low-freq)`:l;return o===5?`firstElement=FIL fillBytes=${n}${r}${a} nextElement=${gr(e)}`:`firstElement=FIL fillBytes=${n}${r}${a} nextElement=${d}`}catch(t){return`probeError=${t?.message||String(t)}`}finally{e.destroy()}}var vr=(a=>(a[a.Unknown=0]="Unknown",a[a.Mp3=1]="Mp3",a[a.Aac=2]="Aac",a[a.Opus=3]="Opus",a[a.Flac=4]="Flac",a[a.Lpcm=5]="Lpcm",a))(vr||{}),Mt={type:"audio",codecType:0,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},Ut=(a=>(a[a.Unknown=0]="Unknown",a[a.Avc=1]="Avc",a[a.Hevc=2]="Hevc",a[a.Vp8=3]="Vp8",a[a.Vp9=4]="Vp9",a[a.Av1=5]="Av1",a))(Ut||{}),wt={type:"video",codecType:0,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 _n(s,e){return s[e]<<24|s[e+1]<<16|s[e+2]<<8|s[e+3]}function It(s,e){return s.getInt8(e)<<16|s.getUint8(e+1)<<8|s.getUint8(e+2)}var gi=class s{static TAG="FLVDemuxer";_config;_remuxer;_onError=te;_onMediaInfo=te;_onScriptMetadata=te;_onScriptData=te;_onTrackMetadata=te;_onTrackData=te;_onVideoTracksDiscovered=Te;_dataOffset;_firstParse=!0;_hasAudio;_hasVideo;_hasAudioFlagOverrided=!1;_hasVideoFlagOverrided=!1;_mediaInfo;_scriptData;_audioMetadata;_videoMetadataByTrackId=new Map;_naluLengthSize=4;_timestampBase=0;_timescale=1e3;_duration=0;_durationOverrided=!1;_referenceFrameRate={fixed:!0,fps:23.976,fps_num:23976,fps_den:1e3};static _flvSoundRateTable=[5500,11025,22050,44100,48e3];static _mpegAudioV10SampleRateTable=[44100,48e3,32e3,0];static _mpegAudioV20SampleRateTable=[22050,24e3,16e3,0];static _mpegAudioV25SampleRateTable=[11025,12e3,8e3,0];static _mpegAudioL1BitRateTable=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1];static _mpegAudioL2BitRateTable=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1];static _mpegAudioL3BitRateTable=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];_videoTracksById=new Map;_currentVideoTrackId=void 0;_audioTrack={type:"audio",id:2,sequenceNumber:0,frames:[],length:0};_hasLoggedFirstAacPayloadProbe=!1;_hasLoggedAacPceDetection=!1;_hasLoggedAacSbrDetection=!1;_hasObservedAacPce=!1;_pendingAacMultichannelChannelCount=void 0;_hasIgnoredAacMultichannelConfig=!1;_aacPayloadProbeFrameIndex=0;constructor(e,t,i){this._config=t,this._remuxer=i,this._dataOffset=e.dataOffset,this._hasAudio=e.hasAudioTrack,this._hasVideo=e.hasVideoTrack,this._mediaInfo=new ge,this._mediaInfo.hasAudio=e.hasAudioTrack,this._mediaInfo.hasVideo=e.hasVideoTrack}destroy(){this._onError=Te,this._onMediaInfo=Te,this._onScriptMetadata=Te,this._onScriptData=Te,this._onTrackMetadata=Te,this._onTrackData=Te,this._onVideoTracksDiscovered=Te,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=dn(e),i=Array.from(e.subarray(0,Math.min(8,e.byteLength))).map(a=>a.toString(16).padStart(2,"0")).join(" ");this._hasLoggedFirstAacPayloadProbe||(h.v(s.TAG,`First AAC CodedFrame: size=${e.byteLength} bytes[0..7]=${i} ${t}`),this._hasLoggedFirstAacPayloadProbe=!0);let n=t.includes("PCE"),r=t.includes("CPE(stereo-pair)");n&&(this._hasObservedAacPce=!0),!this._hasLoggedAacPceDetection&&n&&(h.v(s.TAG,`AAC CodedFrame[${this._aacPayloadProbeFrameIndex}] contains visible ${t}`),this._hasLoggedAacPceDetection=!0),!this._hasLoggedAacSbrDetection&&t.includes("SBR=")&&(h.v(s.TAG,`AAC CodedFrame[${this._aacPayloadProbeFrameIndex}] backward-compatible SBR detected: ${t}`),this._hasLoggedAacSbrDetection=!0),n?this._applyPendingAacMultichannelConfig():r&&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 n=(t[4]&4)>>>2!==0,r=(t[4]&1)!==0,a=_n(t,5);return a<9?i:{match:!0,consumed:a,dataOffset:a,hasAudioTrack:n,hasVideoTrack:r}}bindDataSource(e){return e.onDataArrival=this.parseChunks.bind(this),this}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 ge}_getOrCreateVideoTrack(e){return this._videoTracksById.has(e)||this._videoTracksById.set(e,{type:"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:"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._remuxer.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 n=s.probe(e);if("match"in n&&n.match===!0)i=n.dataOffset,this._hasAudio=n.hasAudioTrack&&this._hasAudio,this._hasVideo=n.hasVideoTrack&&this._hasVideo;else return 0}else return 0;for(this._firstParse&&(this._firstParse=!1,t+i!==this._dataOffset&&h.w(s.TAG,"First time parsing but chunk byteStart invalid!"),new DataView(e,i).getUint32(0,!1)!==0&&h.w(s.TAG,"PrevTagSize0 !== 0 !!!"),i+=4);i<e.byteLength;){let n=new DataView(e,i);if(i+11+4>e.byteLength)break;let r=n.getUint8(0),a=n.getUint32(0,!1)&16777215;if(i+11+a+4>e.byteLength)break;if(r!==8&&r!==9&&r!==18){h.w(s.TAG,`Unsupported tag type ${r}, skipped`),i+=11+a+4;continue}let o=n.getUint8(4),l=n.getUint8(5),d=n.getUint8(6),_=n.getUint8(7),f=d|l<<8|o<<16|_<<24;(n.getUint32(7,!1)&16777215)!==0&&h.w(s.TAG,"Meet tag which has StreamID != 0!");let c=i+11;switch(r){case 8:this._hasAudio&&this._parseAudioData(e,c,a,f);break;case 9:this._hasVideo&&this._parseVideoData(e,c,a,f,t+i);break;case 18:this._parseScriptData(e,c,a);break}let x=n.getUint32(11+a,!1);x!==11+a&&h.w(s.TAG,`Invalid PrevTagSize ${x}`),i+=11+a+4}return this._onTrackData(this._audioTrack,this._getCurrentVideoTrack()),i}_parseScriptData(e,t,i){let n=ur.parseScriptData(e,t,i);if(n.hasOwnProperty("onMetaData")){if(n.onMetaData==null||typeof n.onMetaData!="object"){h.w(s.TAG,"Invalid onMetaData structure!");return}this._scriptData&&h.w(s.TAG,"Found another onMetaData tag!"),this._scriptData=n;let r=this._scriptData.onMetaData;if(this._onScriptMetadata&&this._onScriptMetadata(Object.assign({},r)),typeof r.hasAudio=="boolean"&&this._hasAudioFlagOverrided===!1&&(this._hasAudio=r.hasAudio,this._mediaInfo.hasAudio=this._hasAudio),typeof r.hasVideo=="boolean"&&this._hasVideoFlagOverrided===!1&&(this._hasVideo=r.hasVideo,this._mediaInfo.hasVideo=this._hasVideo),typeof r.audiodatarate=="number"&&(this._mediaInfo.audioDataRate=r.audiodatarate),typeof r.videodatarate=="number"&&(this._mediaInfo.videoDataRate=r.videodatarate),typeof r.width=="number"&&(this._mediaInfo.width=r.width),typeof r.height=="number"&&(this._mediaInfo.height=r.height),typeof r.duration=="number"){if(!this._durationOverrided){let a=Math.floor(r.duration*this._timescale);this._duration=a,this._mediaInfo.duration=a}}else this._mediaInfo.duration=0;if(typeof r.framerate=="number"){let a=Math.floor(r.framerate*1e3);if(a>0){let o=a/1e3;this._referenceFrameRate.fixed=!0,this._referenceFrameRate.fps=o,this._referenceFrameRate.fps_num=a,this._referenceFrameRate.fps_den=1e3,this._mediaInfo.fps=o}}if(typeof r.keyframes=="object"){this._mediaInfo.hasKeyframesIndex=!0;let a=r.keyframes;this._mediaInfo.keyframesIndex=this._parseKeyframesIndex(a),r.keyframes=null}else this._mediaInfo.hasKeyframesIndex=!1;this._mediaInfo.metadata=r,h.v(s.TAG,"Parsed flv.onMetaData"),this._mediaInfo.isComplete()&&this._onMediaInfo(this._mediaInfo)}Object.keys(n).length>0&&this._onScriptData&&this._onScriptData(Object.assign({},n))}_parseKeyframesIndex(e){let t=[],i=[];for(let n=1;n<e.times.length;n++){let r=this._timestampBase+Math.floor(e.times[n]*1e3);t.push(r),i.push(e.filepositions[n])}return{times:t,filepositions:i}}_parseAudioData(e,t,i,n){this.__audioMessageCount??=0;let r=++this.__audioMessageCount;if(i<=1){h.w(s.TAG,"Flv: Invalid audio packet, missing SoundData payload!");return}if(this._hasAudioFlagOverrided===!0&&this._hasAudio===!1)return;let o=new DataView(e,t,i).getUint8(0),l=o>>>4;if(l===9){if(i<=5){h.w(s.TAG,"Flv: Invalid audio packet, missing AudioFourCC in Ehnanced FLV payload!");return}let u=o&15,m=String.fromCharCode(...new Uint8Array(e,t,i).slice(1,5));switch(m){case"Opus":this._parseEnhancedOpusAudioPacket(e,t+5,i-5,n,u);break;case"fLaC":this._parseEnhancedFlacAudioPacket(e,t+5,i-5,n,u);break;case"mp4a":this._parseEnhancedAACAudioPacket(e,t+5,i-5,n,u);break;default:this._onError(w.CODEC_UNSUPPORTED,`${s.TAG}._parseAudioData() - Unsupported FOURCC ${m}`)}return}if(l!==2&&l!==3&&l!==10){this._onError(w.CODEC_UNSUPPORTED,"Flv: Unsupported audio codec idx: "+l);return}let d=0,_=(o&12)>>>2;if(_>=0&&_<=4)d=s._flvSoundRateTable[_];else{this._onError(w.FORMAT_ERROR,"Flv: Invalid audio sample rate idx: "+_);return}let f=(o&2)>>>1,p=o&1,c=this._audioMetadata,x=this._audioTrack;if(c||(this._hasAudio===!1&&this._hasAudioFlagOverrided===!1&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),c=this._audioMetadata={...Mt,type:"audio",trackId:x.id,timescale:this._timescale,duration:this._duration,audioSampleRate:d,channelCount:p===0?1:2}),l===10){c.codecType=2;let u=this._parseAACAudioData(e,t+1,i-1);if(u==null)return;if(u.packetType===0){let m=u.data;if(c.codecConfig){if(me(m.config,c.codecConfig))return;h.w(s.TAG,"AudioSpecificConfig has been changed, re-generate initialization segment")}c.audioSampleRate=m.samplingRate,c.channelCount=m.channelCount,c.codec=m.codec,c.originalCodec=m.originalCodec,c.codecConfig=m.config,c.aacChannelConfigWasInBand=m.channelConfigWasInBand,this._hasLoggedFirstAacPayloadProbe=!1,this._hasLoggedAacPceDetection=!1,this._hasLoggedAacSbrDetection=!1,this._hasObservedAacPce=m.channelConfigHasPce,this._pendingAacMultichannelChannelCount=void 0,this._hasIgnoredAacMultichannelConfig=!1,this._aacPayloadProbeFrameIndex=0,c.refFrameDuration=1024/c.audioSampleRate*c.timescale,h.v(s.TAG,"Parsed AudioSpecificConfig"),this._remuxer.isAudioMetadataDispatched&&(h.v(s.TAG,"Dispatching regular AAC track data before metadata refresh"),this._flushPendingTrackDataBeforeMetadataRefresh()),h.v(s.TAG,`Dispatching regular AAC track metadata codec=${c.codec} channels=${c.channelCount} sampleRate=${c.audioSampleRate}`),this._onTrackMetadata(c);let g=this._mediaInfo;g.audioCodec=c.originalCodec,g.audioSampleRate=c.audioSampleRate,g.audioChannelCount=c.channelCount,g.hasVideo?g.videoCodec!=null&&(g.mimeType='video/x-flv; codecs="'+g.videoCodec+","+g.audioCodec+'"'):g.mimeType='video/x-flv; codecs="'+g.audioCodec+'"',g.isComplete()&&(h.v(s.TAG,`Dispatching regular AAC media info codec=${g.audioCodec} channels=${g.audioChannelCount} mimeType=${g.mimeType}`),this._onMediaInfo(g))}else if(u.packetType===1){let m=u.data;this._probeAacPayload(m);let g=this._timestampBase+n,b={unit:m,length:m.byteLength,dts:g,pts:g};x.frames.push(b),x.length+=m.length}else h.e(s.TAG,`Flv: Unsupported AAC data type ${u.packetType}`)}else if(l===2){if(c.codecType=1,!c.codec){let b=this._parseMP3AudioData(e,t+1,i-1,!0);if(b==null)return;c.audioSampleRate=b.samplingRate,c.channelCount=b.channelCount,c.codec=b.codec,c.originalCodec=b.originalCodec,c.refFrameDuration=1152/c.audioSampleRate*c.timescale,h.v(s.TAG,"Parsed MPEG Audio Frame Header"),this._onTrackMetadata(c);let y=this._mediaInfo;y.audioCodec=c.codec,y.audioSampleRate=c.audioSampleRate,y.audioChannelCount=c.channelCount,y.audioDataRate=b.bitRate,y.hasVideo?y.videoCodec!=null&&(y.mimeType='video/x-flv; codecs="'+y.videoCodec+","+y.audioCodec+'"'):y.mimeType='video/x-flv; codecs="'+y.audioCodec+'"',y.isComplete()&&this._onMediaInfo(y)}let u=this._parseMP3AudioData(e,t+1,i-1,!1);if(u==null)return;let m=this._timestampBase+n,g={unit:u,length:u.byteLength,dts:m,pts:m};x.frames.push(g),x.length+=u.length}else if(l===3){if(c.codecType=5,!c.codec){c.audioSampleRate=d,c.bitsPerSample=(f+1)*8,c.littleEndian=!0,c.codec="ipcm",c.originalCodec="ipcm",this._onTrackMetadata(c);let b=this._mediaInfo;b.audioCodec=c.codec,b.audioSampleRate=c.audioSampleRate,b.audioChannelCount=c.channelCount,b.audioDataRate=c.bitsPerSample*c.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 u=new Uint8Array(e,t+1,i-1),m=this._timestampBase+n,g={unit:u,length:u.byteLength,dts:m,pts:m};x.frames.push(g),x.length+=u.length}}_parseAACAudioData(e,t,i){if(i<=1){h.w(s.TAG,"Flv: Invalid AAC packet, missing AACPacketType or/and Data!");return}let n=new Uint8Array(e,t,i),r=n[0];if(r===0){let a=this._parseAACAudioSpecificConfig(e,t+1,i-1);return a===void 0?void 0:{packetType:0,data:a}}else return{packetType:r,data:n.subarray(1)}}_parseAACAudioSpecificConfig(e,t,i){let n=new Uint8Array(e,t,i),r=n[0]>>>3,a=(n[0]&7)<<1|n[1]>>>7;if(a>=xe.length){this._onError(w.FORMAT_ERROR,"Flv: AAC invalid sampling frequency index!");return}let o=xe[a],l=[0,1,2,3,4,5,6,8],d=(n[1]&120)>>>3;if(d<0||d>=l.length){this._onError(w.FORMAT_ERROR,"Flv: AAC invalid channel configuration");return}if(d===0){let f=ln(n);return f&&f.channelCount>0?(h.w(s.TAG,`PCE_CONFIRMED: AAC sequence header contains Program Config Element; ${f.description}; channelCount=${f.channelCount}; ascBytes=${n.length}; asc=${an(n)}`),{config:Uint8Array.from(n),samplingRate:o,channelCount:f.channelCount,codec:"mp4a.40."+r,originalCodec:"mp4a.40."+r,channelConfigWasInBand:!0,channelConfigHasPce:!0}):(h.w(s.TAG,"Flv: AAC channel config 0 (in-band) detected, synthesising clean stereo AudioSpecificConfig"),{config:new Uint8Array([r<<3|(a&14)>>>1,(a&1)<<7|16]),samplingRate:o,channelCount:2,codec:"mp4a.40."+r,originalCodec:"mp4a.40."+r,channelConfigWasInBand:!0,channelConfigHasPce:!1})}let _=new ze(new We(new Uint8Array(e,t,i)));return{config:Uint8Array.from(_.config),samplingRate:_.sampling_rate,channelCount:_.channel_count,codec:_.codec_mimetype,originalCodec:_.original_codec_mimetype,channelConfigWasInBand:!1,channelConfigHasPce:!1}}_parseMP3AudioData(e,t,i,n){if(i<4){h.w(s.TAG,"Flv: Invalid MP3 packet, header missing!");return}let r=new Uint8Array(e,t,i),a=null;if(n){if(r[0]!==255)return;let o=r[1]>>>3&3,l=(r[1]&6)>>1,d=(r[2]&240)>>>4,_=(r[2]&12)>>>2,p=(r[3]>>>6&3)!==3?2:1,c=0,x=0,u=34,m="mp3";switch(o){case 0:c=s._mpegAudioV25SampleRateTable[_];break;case 2:c=s._mpegAudioV20SampleRateTable[_];break;case 3:c=s._mpegAudioV10SampleRateTable[_];break}switch(l){case 1:u=34,d<s._mpegAudioL3BitRateTable.length&&(x=s._mpegAudioL3BitRateTable[d]);break;case 2:u=33,d<s._mpegAudioL2BitRateTable.length&&(x=s._mpegAudioL2BitRateTable[d]);break;case 3:u=32,d<s._mpegAudioL1BitRateTable.length&&(x=s._mpegAudioL1BitRateTable[d]);break}a={bitRate:x,samplingRate:c,channelCount:p,codec:m,originalCodec:m}}else a=r;return a}_parseMultichannelConfig(e,t,i){let n=h.scope(s.TAG,"_parseMultichannelConfig()");if(i<2){n.w(`payload too short (${i} bytes), ignoring`);return}let r=new DataView(e,t,i),a=r.getUint8(0),o=r.getUint8(1);if(a===1&&i<6){n.w(`Native order requires 6 bytes, got ${i}, ignoring`);return}if(a===2&&i<2+o){n.w(`Custom mapping requires ${2+o} bytes, got ${i}, ignoring`);return}let l=xr[a]??String(a);if(n.v(`audioChannelOrder=${l} channelCount=${o}`),a===1){let d=r.getUint32(2,!1),_=[];for(let[f,p]of Object.entries(br))typeof p=="number"&&(d&p)!==0&&_.push(f);n.v(`Native audioChannelFlags=0x${d.toString(16).padStart(6,"0")} channels=[${_.join(", ")}]`)}else if(a===2){let d=[];for(let _=0;_<o;_++){let f=r.getUint8(2+_);d.push(`ch${_}=${yr[f]??`0x${f.toString(16)}`}`)}n.v(`Custom mapping=[${d.join(", ")}]`)}this._handleAacMultichannelConfig(o,n)}_handleAacMultichannelConfig(e,t){let i=this._audioMetadata;if(!i||e<=0){t.v(`ignoring MultichannelConfig channelCount=${e}, current channelCount=${i?.channelCount??"undefined"}`);return}if(i.codecType!==2||!i.codecConfig||i.codecConfig.length<2){t.v(`ignoring MultichannelConfig channelCount=${e}, codecType=${vr[i.codecType]??i.codecType} codecConfigLength=${i.codecConfig?.length??0}`);return}let n=(i.codecConfig[1]&120)>>>3,r=i.aacChannelConfigWasInBand;if(i.channelCount===e){t.v(`ignoring MultichannelConfig channelCount=${e}, current channelCount=${i.channelCount} channelConfig=${n} channelConfigWasInBand=${r}`);return}if(r&&e>2){let a=i.codecConfig[0]>>>3;if(a===29){t.v(`channelConfig=0 + audioObjectType=${lt[a]}(${a}) = 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=${lt[a]}(${a}), 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,n,t),this._pendingAacMultichannelChannelCount=void 0,i.channelCount=e,this._mediaInfo.audioChannelCount=e,t.v(`updated audioMetadata.channelCount \u2192 ${e}, re-dispatching metadata`),this._remuxer.isAudioMetadataDispatched&&this._flushPendingTrackDataBeforeMetadataRefresh(),this._onTrackMetadata(i)}_rewriteAacChannelConfig(e,t,i){let n=this._audioMetadata;if(!n?.codecConfig)return;let a=[0,1,2,3,4,5,6,8].indexOf(e);if(a>0){let o=Uint8Array.from(n.codecConfig);o[1]=o[1]&135|(a&15)<<3,n.codecConfig=o,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?.codecConfig||t.codecType!==2||!t.aacChannelConfigWasInBand)return;let i=this._pendingAacMultichannelChannelCount;this._hasIgnoredAacMultichannelConfig=!0,h.scope(s.TAG,"_parseMultichannelConfig()").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=h.scope(s.TAG,"_parseMultichannelConfig()");t.v(`observed AAC PCE, applying pending MultichannelConfig channelCount=${e}`),this._handleAacMultichannelConfig(e,t)}_parseEnhancedAACAudioPacket(e,t,i,n,r){let a=this._audioMetadata,o=this._audioTrack;if(a||(this._hasAudio===!1&&this._hasAudioFlagOverrided===!1&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),a=this._audioMetadata={...Mt,type:"audio",trackId:o.id,timescale:this._timescale,duration:this._duration}),a.codecType=2,r===0){let l=this._parseAACAudioSpecificConfig(e,t,i);if(l==null)return;let d=new Uint8Array(l.config);if(a.codecConfig){if(me(d,a.codecConfig))return;h.w(s.TAG,"AudioSpecificConfig has been changed, re-generate initialization segment")}a.audioSampleRate=l.samplingRate,a.channelCount=l.channelCount,a.codec=l.codec,a.originalCodec=l.originalCodec,a.codecConfig=d,a.aacChannelConfigWasInBand=l.channelConfigWasInBand,this._hasLoggedFirstAacPayloadProbe=!1,this._hasLoggedAacPceDetection=!1,this._hasLoggedAacSbrDetection=!1,this._hasObservedAacPce=l.channelConfigHasPce,this._pendingAacMultichannelChannelCount=void 0,this._hasIgnoredAacMultichannelConfig=!1,this._aacPayloadProbeFrameIndex=0,a.refFrameDuration=1024/a.audioSampleRate*a.timescale,h.v(s.TAG,"Parsed Enhanced FLV AAC AudioSpecificConfig"),this._remuxer.isAudioMetadataDispatched&&(h.v(s.TAG,"Dispatching enhanced AAC track data before metadata refresh"),this._flushPendingTrackDataBeforeMetadataRefresh()),h.v(s.TAG,`Dispatching enhanced AAC track metadata codec=${a.codec} channels=${a.channelCount} sampleRate=${a.audioSampleRate}`),this._onTrackMetadata(a);let _=this._mediaInfo;_.audioCodec=a.originalCodec,_.audioSampleRate=a.audioSampleRate,_.audioChannelCount=a.channelCount,_.hasVideo?_.videoCodec!=null&&(_.mimeType='video/x-flv; codecs="'+_.videoCodec+","+_.audioCodec+'"'):_.mimeType='video/x-flv; codecs="'+_.audioCodec+'"',_.isComplete()&&(h.v(s.TAG,`Dispatching enhanced AAC media info codec=${_.audioCodec} channels=${_.audioChannelCount} mimeType=${_.mimeType}`),this._onMediaInfo(_))}else if(r===1){let l=new Uint8Array(e,t,i);this._probeAacPayload(l);let d=this._timestampBase+n,_={unit:l,length:l.byteLength,dts:d,pts:d};o.frames.push(_),o.length+=l.length}else if(r!==2)if(r===4)this._parseMultichannelConfig(e,t,i);else{let l=pi[r]??String(r);h.w(s.TAG,`_parseAACAudioPacket(): unsupported FlvAudioPacketType=${l} ts=${n} offset=${t} size=${i} action=drop`)}}_parseEnhancedOpusAudioPacket(e,t,i,n,r){if(r===0)this._parseOpusSequenceHeader(e,t,i);else if(r===1)this._hasUsableOpusMetadata()||this._injectFallbackOpusSequenceHeader(n),this._parseOpusAudioData(e,t,i,n);else if(r!==2)if(r===4)this._parseMultichannelConfig(e,t,i);else{let a=pi[r]??String(r);h.w(s.TAG,`_parseOpusAudioPacket(): unsupported FlvAudioPacketType=${a} ts=${n} offset=${t} size=${i} action=drop`)}}_hasUsableOpusMetadata(){return this._audioMetadata?.codecType===3&&!!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]);h.w(s.TAG,`_parseOpusAudioPacket(): 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){h.e(s.TAG,"_parseOpusSequenceHeader(): Invalid OpusSequenceHeader, lack of data!");return}let n=new Uint8Array(e,t,i),r=String.fromCharCode(...n.subarray(0,8));if(r!=="OpusHead"){h.e(s.TAG,`_parseOpusSequenceHeader(): Invalid OpusSequenceHeader, missing OpusHead (got "${r}")`);return}let a=new Uint8Array(e,t+8,i-8).slice(),o=new DataView(a.buffer),l=o.getUint8(1),d=o.getUint16(2,!0),_=o.getUint32(4,!0),f=o.getInt16(8,!0),p=o.getUint8(10);f>0&&h.w(s.TAG,"_parseOpusSequenceHeader(): outputGain within OpusSequenceHeader action=drop"),p!==0&&h.w(s.TAG,"_parseOpusSequenceHeader(): channel mapping within OpusSequenceHeader action=drop");let c=this._audioMetadata,x=this._audioTrack;if(c||(this._hasAudio===!1&&this._hasAudioFlagOverrided===!1&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),c=this._audioMetadata={...Mt,type:"audio",trackId:x.id,timescale:this._timescale,duration:this._duration}),c.codecType=3,c.codecConfig){if(me(a,c.codecConfig))return;h.v(s.TAG,"_parseOpusSequenceHeader(): OpusSequenceHeader has been changed, re-generate initialization segment")}c.audioSampleRate=48e3,c.channelCount=l,c.codec="opus",c.originalCodec="opus",c.codecConfig=a,c.preSkipSamples=d,c.inputSampleRate=_,c.outputGain=f,c.refFrameDuration=960*c.timescale/48e3,h.v(s.TAG,"Parsed OpusSequenceHeader"),this._remuxer.isAudioMetadataDispatched&&this._flushPendingTrackDataBeforeMetadataRefresh(),this._onTrackMetadata(c);let u=this._mediaInfo;u.audioCodec=c.originalCodec,u.audioSampleRate=c.audioSampleRate,u.audioChannelCount=c.channelCount,u.hasVideo?u.videoCodec!=null&&(u.mimeType='video/x-flv; codecs="'+u.videoCodec+","+u.audioCodec+'"'):u.mimeType='video/x-flv; codecs="'+u.audioCodec+'"',u.isComplete()&&this._onMediaInfo(u)}_parseOpusAudioData(e,t,i,n){let r=this._audioTrack,a=new Uint8Array(e,t,i),o=this._timestampBase+n,l={unit:a,length:a.byteLength,dts:o,pts:o};r.frames.push(l),r.length+=a.length}_parseEnhancedFlacAudioPacket(e,t,i,n,r){if(r===0)this._parseFlacSequenceHeader(e,t,i);else if(r===1)this._parseFlacAudioData(e,t,i,n);else if(r!==2)if(r===4)this._parseMultichannelConfig(e,t,i);else{this._onError(w.FORMAT_ERROR,`${s.TAG}._parseFlacAudioPacket() - Unsupported FlvAudioPacketType ${r}`);return}}_parseFlacSequenceHeader(e,t,i){let n=this._audioMetadata,r=this._audioTrack;n||(this._hasAudio===!1&&this._hasAudioFlagOverrided===!1&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),n=this._audioMetadata={...Mt,type:"audio",trackId:r.id,timescale:this._timescale,duration:this._duration}),n.codecType=4;let a=new Uint8Array(e,t,i),o=new Uint8Array(i+4);o[0]=128,o[1]=0,o[2]=0,o[3]=i,o.set(a,4);let l=new ae(a),d=l.readBits(16),_=l.readBits(16),f=_===d?_:4096,p=l.readBits(24),c=l.readBits(24),x=l.readBits(20),u=l.readBits(3)+1,m=l.readBits(5)+1;l.destroy();let g={config:o,channelCount:u,samplingFrequence:x,bitsPerSample:m,codec:"flac",originalCodec:"flac"};if(n.codecConfig){if(me(g.config,n.codecConfig))return;h.w(s.TAG,"FlacSequenceHeader has been changed, re-generate initialization segment")}n.audioSampleRate=g.samplingFrequence,n.channelCount=g.channelCount,n.bitsPerSample=g.bitsPerSample,n.codec=g.codec,n.originalCodec=g.originalCodec,n.codecConfig=g.config,n.refFrameDuration=f*1e3/g.samplingFrequence,h.v(s.TAG,"Parsed FlacSequenceHeader"),this._remuxer.isAudioMetadataDispatched&&this._flushPendingTrackDataBeforeMetadataRefresh(),this._onTrackMetadata(n);let b=this._mediaInfo;b.audioCodec=n.originalCodec,b.audioSampleRate=n.audioSampleRate,b.audioChannelCount=n.channelCount,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)}_parseFlacAudioData(e,t,i,n){let r=this._audioTrack,a=new Uint8Array(e,t,i),o=this._timestampBase+n,l={unit:a,length:a.byteLength,dts:o,pts:o};r.frames.push(l),r.length+=a.length}_parseVideoData(e,t,i,n,r){if(i<=1){h.w(s.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],o=(a&128)!==0,l=(a&112)>>>4;if(o){let d=a&15;if(d===6)this._parseMultitrackVideoPacket(e,t+1,i-1,n,r,l);else{let _=String.fromCharCode(...new Uint8Array(e,t,i).slice(1,5));if(_==="avc1")this._parseEnhancedAvcVideoPacket(e,t+5,i-5,n,r,l,d,this._getOrCreateVideoTrack(0));else if(_==="hvc1")this._parseEnhancedHevcVideoPacket(e,t+5,i-5,n,r,l,d,this._getOrCreateVideoTrack(0));else if(_==="av01")this._parseEnhancedAv1VideoPacket(e,t+5,i-5,n,r,l,d,this._getOrCreateVideoTrack(0));else if(_==="vp09")this._parseEnhancedVp9VideoPacket(e,t+5,i-5,n,r,l,d,this._getOrCreateVideoTrack(0));else{this._onError(w.CODEC_UNSUPPORTED,`Flv: Unsupported codec in video frame: ${_}`);return}}}else{let d=a&15;if(d===7)this._parseAVCVideoPacket(e,t+1,i-1,n,r,l,this._getOrCreateVideoTrack(0));else if(d===12)this._parseHEVCVideoPacket(e,t+1,i-1,n,r,l,this._getOrCreateVideoTrack(0));else{this._onError(w.CODEC_UNSUPPORTED,`Flv: Unsupported codec in video frame: ${d}`);return}}}_parseMultitrackVideoPacket(e,t,i,n,r,a){if(i<2){h.w(s.TAG,"Flv: Invalid multitrack video packet, too short");return}let o=new DataView(e,t,i),l=o.getUint8(0),d=l>>4&15,_=l&15;if(_===6){this._onError(w.FORMAT_ERROR,"Flv: Multitrack innerPacketType must not be Multitrack");return}let f=1,p=null;if(d!==2){if(i-f<4){h.w(s.TAG,"Flv: Invalid multitrack video packet, missing shared FOURCC");return}p=String.fromCharCode(...new Uint8Array(e,t+f,4)),f+=4}for(;f<i;){let c;if(d===2){if(i-f<4)break;c=String.fromCharCode(...new Uint8Array(e,t+f,4)),f+=4}else c=p;if(i-f<1)break;let x=o.getUint8(f);f+=1;let u;if(d===0)u=i-f;else{if(i-f<3)break;u=o.getUint8(f)<<16|o.getUint8(f+1)<<8|o.getUint8(f+2),f+=3}if(f+u>i){h.w(s.TAG,`Flv: Multitrack track payload overflows packet, trackId=${x}`);break}h.v(s.TAG,`Multitrack packet: trackId=${x}, fourcc=${c}, innerPacketType=${_}, payloadSize=${u}`);let m=this._getOrCreateVideoTrack(x),g=t+f,b=u;if(c==="avc1"?this._parseEnhancedAvcVideoPacket(e,g,b,n,r,a,_,m):c==="hvc1"?this._parseEnhancedHevcVideoPacket(e,g,b,n,r,a,_,m):c==="av01"?this._parseEnhancedAv1VideoPacket(e,g,b,n,r,a,_,m):c==="vp09"?this._parseEnhancedVp9VideoPacket(e,g,b,n,r,a,_,m):h.w(s.TAG,`Flv: Unsupported codec in multitrack video packet: ${c}, trackId=${x}, action=skip`),f+=u,d===0)break}}_parseAVCVideoPacket(e,t,i,n,r,a,o){if(i<4){h.w(s.TAG,"Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime");return}let l=new DataView(e,t,i),d=l.getUint8(0),_=It(l,1);if(t+=4,i-=4,d===0)this._parseAvcConfig(e,t,i,o);else if(d===1)this._parseAvcVideoData(e,t,i,n,r,a,_,o);else if(d!==2){this._onError(w.FORMAT_ERROR,`Flv: Invalid video packet type ${d}`);return}}_parseHEVCVideoPacket(e,t,i,n,r,a,o){if(i<4){h.w(s.TAG,"Flv: Invalid HEVC packet, missing HEVCPacketType or/and CompositionTime");return}let l=new DataView(e,t,i),d=l.getUint8(0),_=It(l,1);if(t+=4,i-=4,d===0)this._parseHevcConfig(e,t,i,o);else if(d===1)this._parseHevcVideoData(e,t,i,n,r,a,_,o);else if(d!==2){this._onError(w.FORMAT_ERROR,`Flv: Invalid video packet type ${d}`);return}}_parseEnhancedHevcVideoPacket(e,t,i,n,r,a,o,l){let d=new DataView(e,t,i);if(o===0)this._parseHevcConfig(e,t,i,l);else if(o===1){if(i<3){h.w(s.TAG,"_parseEnhancedHevcVideoPacket(): Invalid HEVC packet, missing CompositionTime");return}let _=It(d,0);t+=3,i-=3,this._parseHevcVideoData(e,t,i,n,r,a,_,l)}else if(o===3)this._parseHevcVideoData(e,t,i,n,r,a,0,l);else if(o!==2){this._onError(w.FORMAT_ERROR,`Flv: Invalid video packet type ${o}`);return}}_parseEnhancedAvcVideoPacket(e,t,i,n,r,a,o,l){let d=new DataView(e,t,i);if(o===0)this._parseAvcConfig(e,t,i,l);else if(o===1){if(i<3){h.w(s.TAG,"_parseEnhancedAvcVideoPacket(): Invalid AVC packet, missing CompositionTime");return}let _=It(d,0);t+=3,i-=3,this._parseAvcVideoData(e,t,i,n,r,a,_,l)}else if(o===3)this._parseAvcVideoData(e,t,i,n,r,a,0,l);else if(o!==2){this._onError(w.FORMAT_ERROR,`Flv: Invalid AVC video packet type ${o}`);return}}_parseEnhancedAv1VideoPacket(e,t,i,n,r,a,o,l){let d=new DataView(e,t,i);switch(o){case 0:this._parseAv1Config(e,t,i,l);break;case 1:this._parseAv1VideoData(e,t,i,n,r,a,0,l);break;case 2:break;case 4:{h.w(s.TAG,`_parseEnhancedAV1VideoPacket(): unsupported AV1 video packet type ${o} (FlvVideoPacketType.Metadata) ts=${n} offset=${t} size=${i} action=drop`);break}default:this._onError(w.FORMAT_ERROR,`Flv: invalid AV1 video packet type ${o}`);return}}_parseAvcConfig(e,t,i,n){if(i<7){h.w(s.TAG,"Flv: Invalid AVCDecoderConfigurationRecord, lack of data!");return}let r=this._videoMetadataByTrackId.get(n.id),a=new DataView(e,t,i);if(!r)this._hasVideo===!1&&this._hasVideoFlagOverrided===!1&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),r={...wt,type:"video",trackId:n.id,timescale:this._timescale,duration:this._duration},this._videoMetadataByTrackId.set(n.id,r);else if(typeof r.codecConfig<"u"){let x=new Uint8Array(e,t,i);if(me(x,r.codecConfig))return;h.w(s.TAG,"AVCDecoderConfigurationRecord has been changed, re-generate initialization segment")}r.codecType=1;let o=a.getUint8(0),l=a.getUint8(1),d=a.getUint8(2),_=a.getUint8(3);if(o!==1||l===0){this._onError(w.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord");return}if(this._naluLengthSize=(a.getUint8(4)&3)+1,this._naluLengthSize!==3&&this._naluLengthSize!==4){this._onError(w.FORMAT_ERROR,`Flv: Strange NaluLengthSizeMinusOne: ${this._naluLengthSize-1}`);return}let f=a.getUint8(5)&31;if(f===0){this._onError(w.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No SPS");return}else f>1&&h.w(s.TAG,`Flv: Strange AVCDecoderConfigurationRecord: SPS Count = ${f}`);let p=6;for(let x=0;x<f;x++){let u=a.getUint16(p,!1);if(p+=2,u===0)continue;let m=new Uint8Array(e,t+p,u);p+=u;let g=Rt.parseSPS(m);if(x!==0)continue;r.codecWidth=g.codec_size.width,r.codecHeight=g.codec_size.height,r.presentWidth=g.present_size.width,r.presentHeight=g.present_size.height,r.profile=g.profile_string,r.level=g.level_string,r.bitDepth=g.bit_depth,r.chromaFormat=g.chroma_format,r.sarRatio=g.sar_ratio,r.frameRate=g.frame_rate,(g.frame_rate.fixed===!1||g.frame_rate.fps_num===0||g.frame_rate.fps_den===0)&&(r.frameRate=this._referenceFrameRate);let b=r.frameRate.fps_den,y=r.frameRate.fps_num;r.refFrameDuration=r.timescale*(b/y);let k=m.subarray(1,4),M="avc1.";for(let C=0;C<3;C++){let v=k[C].toString(16);v.length<2&&(v="0"+v),M+=v}r.codec=M;let T=this._mediaInfo;T.width=r.codecWidth,T.height=r.codecHeight,T.fps=r.frameRate.fps,T.profile=r.profile,T.level=r.level,T.refFrames=g.ref_frames,T.chromaFormat=g.chroma_format_string,T.sarNum=r.sarRatio.width,T.sarDen=r.sarRatio.height,T.videoCodec=M,T.hasAudio?T.audioCodec!=null&&(T.mimeType='video/x-flv; codecs="'+T.videoCodec+","+T.audioCodec+'"'):T.mimeType='video/x-flv; codecs="'+T.videoCodec+'"',T.isComplete()&&this._onMediaInfo(T)}let c=a.getUint8(p);if(c===0){this._onError(w.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No PPS");return}else c>1&&h.w(s.TAG,`Flv: Strange AVCDecoderConfigurationRecord: PPS Count = ${c}`);p++;for(let x=0;x<c;x++){let u=a.getUint16(p,!1);p+=2,u!==0&&(p+=u)}r.codecConfig=new Uint8Array(i),r.codecConfig.set(new Uint8Array(e,t,i),0),h.v(s.TAG,"Parsed AVCDecoderConfigurationRecord"),this._dispatchVideoTrackMetadata(r)}_parseHevcConfig(e,t,i,n){if(i<22){h.w(s.TAG,"Flv: Invalid HEVCDecoderConfigurationRecord, lack of data!");return}let r=this._videoMetadataByTrackId.get(n.id),a=new DataView(e,t,i);if(!r)this._hasVideo===!1&&this._hasVideoFlagOverrided===!1&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),r={...wt,type:"video",trackId:n.id,timescale:this._timescale,duration:this._duration},this._videoMetadataByTrackId.set(n.id,r);else if(r.codecConfig){let _=new Uint8Array(e,t,i);if(me(_,r.codecConfig))return;h.w(s.TAG,"HEVCDecoderConfigurationRecord has been changed, re-generate initialization segment")}r.codecType=2;let o=a.getUint8(0),l=a.getUint8(1)&31;if(o!==0&&o!==1||l===0){this._onError(w.FORMAT_ERROR,"Flv: Invalid HEVCDecoderConfigurationRecord");return}if(this._naluLengthSize=(a.getUint8(21)&3)+1,this._naluLengthSize!==3&&this._naluLengthSize!==4){this._onError(w.FORMAT_ERROR,`Flv: Strange NaluLengthSizeMinusOne: ${this._naluLengthSize-1}`);return}let d=a.getUint8(22);for(let _=0,f=23;_<d;_++){let p=a.getUint8(f+0)&63,c=a.getUint16(f+1,!1);f+=3;for(let x=0;x<c;x++){let u=a.getUint16(f+0,!1);if(x!==0){f+=2+u;continue}if(p===33){f+=2;let m=new Uint8Array(e,t+f,u),g=Ke.parseSPS(m);r.codecWidth=g.codec_size.width,r.codecHeight=g.codec_size.height,r.presentWidth=g.present_size.width,r.presentHeight=g.present_size.height,r.profile=g.profile_string,r.level=g.level_string,r.bitDepth=g.bit_depth,r.chromaFormat=g.chroma_format,r.sarRatio=g.sar_ratio,r.frameRate=g.frame_rate,(g.frame_rate.fixed===!1||g.frame_rate.fps_num===0||g.frame_rate.fps_den===0)&&(r.frameRate=this._referenceFrameRate);let b=r.frameRate.fps_den,y=r.frameRate.fps_num;r.refFrameDuration=r.timescale*(b/y),r.codec=g.codec_mimetype;let k=this._mediaInfo;k.width=r.codecWidth,k.height=r.codecHeight,k.fps=r.frameRate.fps,k.profile=r.profile,k.level=r.level,k.refFrames=g.ref_frames,k.chromaFormat=g.chroma_format_string,k.sarNum=r.sarRatio.width,k.sarDen=r.sarRatio.height,k.videoCodec=g.codec_mimetype,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),f+=u}else f+=2+u}}r.codecConfig=new Uint8Array(i),r.codecConfig.set(new Uint8Array(e,t,i),0),h.v(s.TAG,"Parsed HEVCDecoderConfigurationRecord"),this._dispatchVideoTrackMetadata(r)}_parseAv1Config(e,t,i,n){if(i<4){h.w(s.TAG,"Flv: Invalid AV1CodecConfigurationRecord, lack of data!");return}let r,a=this._videoMetadataByTrackId.get(n.id),o=new DataView(e,t,i);if(!a)this._hasVideo===!1&&this._hasVideoFlagOverrided===!1&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),r={...wt,type:"video",trackId:n.id,timescale:this._timescale,duration:this._duration},this._videoMetadataByTrackId.set(n.id,r);else{if(a.codecConfig){let m=new Uint8Array(e,t,i);if(me(m,a.codecConfig))return;h.w(s.TAG,"AV1CodecConfigurationRecord has been changed, re-generate initialization segment")}r=a}r.codecType=5;let l=o.getUint8(0)&127,d=(o.getUint8(1)&224)>>5,_=(o.getUint8(1)&143)>>0,f=(o.getUint8(2)&128)>>7;if(l!==1){this._onError(w.FORMAT_ERROR,"Flv: Invalid AV1CodecConfigurationRecord");return}let p=fe.parseOBUs(new Uint8Array(e,t+4,i-4));if(!p){this._onError(w.FORMAT_ERROR,"Flv: Invalid AV1CodecConfigurationRecord");return}r.profile=p.profile_string,r.level=p.level_string,r.bitDepth=p.bit_depth,r.chromaFormat=p.chroma_format,r.frameRate=p.frame_rate,(p.frame_rate.fixed===!1||p.frame_rate.fps_num===0||p.frame_rate.fps_den===0)&&(r.frameRate=this._referenceFrameRate);let c=r.frameRate.fps_den,x=r.frameRate.fps_num;r.refFrameDuration=r.timescale*(c/x),r.codec=p.codec_mimetype,r.av1Extra=p;let u=this._mediaInfo;u.fps=r.frameRate.fps,u.profile=r.profile,u.level=r.level,u.refFrames=p.ref_frames,u.chromaFormat=p.chroma_format_string,u.videoCodec=p.codec_mimetype,r.codecWidth=u.width??0,r.codecHeight=u.height??0,u.hasAudio?u.audioCodec!=null&&(u.mimeType='video/x-flv; codecs="'+u.videoCodec+","+u.audioCodec+'"'):u.mimeType='video/x-flv; codecs="'+u.videoCodec+'"',u.isComplete()&&this._onMediaInfo(u),r.codecConfig=new Uint8Array(e,t,i).slice(),this._dispatchVideoTrackMetadata(r),h.v(s.TAG,`Parsed AV1 metadata: ${JSON.stringify(p)}`)}_parseAvcVideoData(e,t,i,n,r,a,o,l){if(this._currentVideoTrackId!==void 0&&l.id!==this._currentVideoTrackId)return;let d=new DataView(e,t,i),_=[],f=0,p=0,c=this._naluLengthSize,x=this._timestampBase+n,u=a===1;for(;p<i;){if(p+4>=i){h.w(s.TAG,`Malformed Nalu near timestamp ${x}, offset = ${p}, dataSize = ${i}`);break}let m=d.getUint32(p,!1);if(c===3&&(m>>>=8),m>i-c){h.w(s.TAG,`Malformed Nalus near timestamp ${x}, NaluSize > DataSize!`);return}let g=d.getUint8(p+c)&31;g===5&&(u=!0);let b=new Uint8Array(e,t+p,c+m),y={type:g,data:b};_.push(y),f+=b.byteLength,p+=c+m}if(_.length){let m={units:_,length:f,isKeyframe:u,fileposition:r,dts:x,cts:o,pts:x+o};l.frames.push(m),l.length+=f}}_parseHevcVideoData(e,t,i,n,r,a,o,l){if(this._currentVideoTrackId!==void 0&&l.id!==this._currentVideoTrackId)return;let d=new DataView(e,t,i),_=[],f=0,p=0,c=this._naluLengthSize,x=this._timestampBase+n,u=a===1;for(;p<i;){if(p+4>=i){h.w(s.TAG,`Malformed Nalu near timestamp ${x}, offset = ${p}, dataSize = ${i}`);break}let m=d.getUint32(p,!1);if(c===3&&(m>>>=8),m>i-c){h.w(s.TAG,`Malformed Nalus near timestamp ${x}, NaluSize > DataSize!`);return}let g=d.getUint8(p+c)>>1&63;(g===19||g===20||g===21)&&(u=!0);let b=new Uint8Array(e,t+p,c+m),y={type:g,data:b};_.push(y),f+=b.byteLength,p+=c+m}if(_.length){let m={units:_,length:f,isKeyframe:u,fileposition:r,dts:x,cts:o,pts:x+o};l.frames.push(m),l.length+=f}}_parseAv1VideoData(e,t,i,n,r,a,o,l){if(this._currentVideoTrackId!==void 0&&l.id!==this._currentVideoTrackId)return;let d=[],_=0,f=this._timestampBase+n,p=a===1,c=new Uint8Array(e,t,i);if(p){let u=this._videoMetadataByTrackId.get(l.id);if(!u){this._onError(w.FORMAT_ERROR,"Flv: AV1 VideoData received before SequenceStart");return}let m=fe.parseOBUs(c,u.av1Extra);if(!m){this._onError(w.FORMAT_ERROR,"Flv: Invalid AV1 VideoData");return}u.codecWidth=m.codec_size.width,u.codecHeight=m.codec_size.height,u.presentWidth=m.present_size.width,u.presentHeight=m.present_size.height,u.sarRatio=m.sar_ratio;let g=this._mediaInfo;g.width=u.codecWidth,g.height=u.codecHeight,g.sarNum=u.sarRatio.width,g.sarDen=u.sarRatio.height}_=i,d.push({type:0,data:c});let x={units:d,length:_,isKeyframe:p,fileposition:r,dts:f,cts:o,pts:f+o,rawData:c};l.frames.push(x),l.length+=_}_parseEnhancedVp9VideoPacket(e,t,i,n,r,a,o,l){switch(o){case 0:this._parseVp9Config(e,t,i,l);break;case 1:this._parseVp9VideoData(e,t,i,n,r,a,0,l);break;case 2:break;case 4:h.w(s.TAG,`_parseEnhancedVP9VideoPacket(): unsupported VP9 video packet type ${o} (FlvVideoPacketType.Metadata) ts=${n} offset=${t} size=${i} action=drop`);break;default:this._onError(w.FORMAT_ERROR,`Flv: invalid VP9 video packet type ${o}`);return}}_parseVp9Config(e,t,i,n){if(i<9){h.w(s.TAG,"_parseVp9Config(): Invalid VP9CodecConfigurationRecord, lack of data!");return}let r=new DataView(e,t,i),a,o=this._videoMetadataByTrackId.get(n.id);if(!o)this._hasVideo===!1&&this._hasVideoFlagOverrided===!1&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),a={...wt,type:"video",trackId:n.id,timescale:this._timescale,duration:this._duration},this._videoMetadataByTrackId.set(n.id,a);else{if(o.codecConfig){let C=new Uint8Array(e,t,i);if(me(C,o.codecConfig))return;h.w(s.TAG,"_parseVp9Config(): VP9CodecConfigurationRecord has been changed, re-generate initialization segment")}a=o}a.codecType=4;let d=(r.getUint8(1)<<16|r.getUint8(2)<<8|r.getUint8(3))===0&&i>=12,_=d?4:1;if(!d&&i<9){h.w(s.TAG,"_parseVp9Config(): record too short");return}let f=r.getUint8(_),p=r.getUint8(_+1),c=(r.getUint8(_+2)&240)>>4,x=(r.getUint8(_+2)&14)>>1,u=r.getUint8(_+2)&1,m=r.getUint8(_+3),g=r.getUint8(_+4),b=2;if(i>=_+6&&(b=r.getUint8(_+5),i>=_+8)){let C=r.getUint16(_+6,!1);C!==0&&h.w(s.TAG,`_parseVp9Config(): Strange VP9CodecConfigurationRecord, codecInitializationDataSize = ${C}`)}a.profile=`${f}`,a.level=`${p}`,a.bitDepth=c,a.chromaFormat=x,a.colorRange=u,a.colourPrimaries=m,a.transferCharacteristics=g,a.matrixCoefficients=b,a.codec=`vp09.${`${f}`.padStart(2,"0")}.${`${p}`.padStart(2,"0")}.${`${c}`.padStart(2,"0")}`;let y=this._mediaInfo;y.fps=a.frameRate.fps,y.profile=a.profile,y.level=a.level,y.refFrames=3,y.chromaFormat=x===1?"4:2:0":a.chromaFormat===2?"4:2:2":a.chromaFormat===3?"4:4:4":"4:2:0",y.videoCodec=a.codec;let k=a.frameRate;(k.fixed===!1||Number.isNaN(k.fps_num)||Number.isNaN(k.fps_den)||Number.isNaN(k.fps))&&(a.frameRate=this._referenceFrameRate);let M=a.frameRate.fps_den,T=a.frameRate.fps_num;a.refFrameDuration=a.timescale*(M/T),a.codecWidth=y.width??0,a.codecHeight=y.height??0,y.hasAudio?y.audioCodec!=null&&(y.mimeType='video/x-flv; codecs="'+y.videoCodec+","+y.audioCodec+'"'):y.mimeType='video/x-flv; codecs="'+y.videoCodec+'"',y.isComplete()&&this._onMediaInfo(y),a.codecConfig=new Uint8Array(e,t,i).slice(),h.v(s.TAG,`VP9 codecConfig: ${Array.from(a.codecConfig).map(C=>C.toString(16).padStart(2,"0")).join(" ")}`),this._dispatchVideoTrackMetadata(a),h.v(s.TAG,`Parsed VP9 codec configuration record: profile=${a.profile} level=${a.level}`)}_parseVp9VideoData(e,t,i,n,r,a,o,l){if(this._currentVideoTrackId!==void 0&&l.id!==this._currentVideoTrackId)return;let d=0,_=[],f=this._timestampBase+n,p=a===1,c=je.parseVp9Header(new Uint8Array(e,t,i));if(p&&c.isValid){let u=this._videoMetadataByTrackId.get(l.id);if(u){u.codecWidth=c.width,u.codecHeight=c.height,u.presentWidth=c.renderWidth,u.presentHeight=c.renderHeight,u.sarRatio={width:1,height:1};let m=this._mediaInfo;m.width=u.codecWidth,m.height=u.codecHeight,m.sarNum=u.sarRatio.width,m.sarDen=u.sarRatio.height,h.v(s.TAG,`VP9 keyframe dimensions: ${u.codecWidth}x${u.codecHeight}, render: ${u.presentWidth}x${u.presentHeight}`)}}d=i,_.push({type:p?0:1,data:new Uint8Array(e,t,i)});let x={units:_,length:d,isKeyframe:p,fileposition:r,dts:f,cts:o,pts:f+o,rawData:new Uint8Array(e,t,i)};l.frames.push(x),l.length+=d}},Ar=gi;var Sr=new Uint8Array([48,38,178,117,142,102,207,17,166,217,0,170,0,98,206,108]),hn=new Uint8Array([54,38,178,117,142,102,207,17,166,217,0,170,0,98,206,108]),cn=new Uint8Array([145,7,220,183,183,169,207,17,142,230,0,192,12,32,83,101]),un=new Uint8Array([64,158,105,248,77,91,207,17,168,253,0,128,95,92,68,43]),fn=new Uint8Array([192,239,25,188,77,91,207,17,168,253,0,128,95,92,68,43]),mn=17444,pn=17700,gn=28751,xi={fixed:!1,fps:25,fps_num:25,fps_den:1},bi=new Set([44,66,77,83,86,88,100,110,118,122,128,138,144,244]),xn={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"},bn={HEVC:"hevc",AV01:"av1",VP90:"vp9"},yn=new Set([19,20,21]),H={u16:(s,e)=>s[e]|s[e+1]<<8,u32:(s,e)=>(s[e]|s[e+1]<<8|s[e+2]<<16|s[e+3]<<24)>>>0,u64:(s,e)=>H.u32(s,e+4)*4294967296+H.u32(s,e)},Ye={u16:(s,e)=>s[e]<<8|s[e+1],u32:(s,e)=>(s[e]<<24|s[e+1]<<16|s[e+2]<<8|s[e+3])>>>0},Xe=(s,e,t)=>{if(e+16>s.length)return!1;for(let i=0;i<16;i++)if(s[e+i]!==t[i])return!1;return!0},vn=s=>{let e=s.length;for(;e>0&&s[e-1]===0;)e--;return e===s.length?s:s.subarray(0,e)},An=s=>String.fromCharCode(s&255,s>>8&255,s>>16&255,s>>24&255).toUpperCase().trim(),Er=(s,e,t)=>{let i=e>=0&&e<xe.length?e:4;return new Uint8Array([s<<3|(i&14)>>1,(i&1)<<7|Math.max(0,Math.min(t,15))<<3])},Sn=[[1,1],[1,1],[1,0],[0,0]];function Cr(s){if(!s.sequence_header_data?.length)return null;let e=Sn[s.chroma_format??1]??[1,1],t=s.bit_depth??8,i=new Uint8Array(4+s.sequence_header_data.length);return i[0]=129,i[1]=(s.profile_idc??0)<<5|(s.level??0)&31,i[2]=(s.tier??0)<<7|(t>8?1:0)<<6|(t===12?1:0)<<5|(s.chroma_format===0?1:0)<<4|e[0]<<3|e[1]<<2,i.set(s.sequence_header_data,4),i}function En(s){let e=new Uint8Array(12);return e[0]=1,e[4]=s,e[5]=31,e[6]=130,e[7]=e[8]=e[9]=1,e}function Cn(s,e,t){if(s&&s.length>=19&&String.fromCharCode(...s.subarray(0,8))==="OpusHead")return s.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 Rr=(s=0)=>({type:"audio",id:2,sequenceNumber:s,frames:[],length:0}),yi=(s=0)=>({type:"video",id:1,sequenceNumber:s,frames:[],length:0}),Qe=class extends Ar{_asfMediaInfo;_streams;_stash;_headerParsed;_dataObjectParsed;_asfAudioTrack;_videoTrack;_asfHasAudio=!0;_asfHasVideo=!0;_hasVideoMetaSent;_hasAudioMetaSent;_headerVideoWidth;_headerVideoHeight;_nalHeaders;_headerAv1c;_headerVp9c;_headerAudioConfig;_headerAudioChannels;_headerAudioSampleRate;_baseTimestamp;_asfTimestampBase=0;_asfDuration=0;_hasReceivedFirstKeyframe;_audioNextDts;_lastAudioDts;_audioFrameDuration;_firstVideoPts;_lastVideoPts;_isAVCC;_videoCodec;_audioCodec;_sentVideoConfig;_audioBuffer;_videoBuffer;constructor(e,t,i){super(e,t,i),this._initProperties(),this._asfHasAudio=e.hasAudioTrack,this._asfHasVideo=e.hasVideoTrack}_initProperties(){this._asfMediaInfo=new ge,this._streams=new Array(128).fill(null),this._stash=null,this._headerParsed=this._dataObjectParsed=!1,this._asfAudioTrack=Rr(),this._videoTrack=yi(),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(e){return e.onDataArrival=this.parseChunks.bind(this),this}resetMediaInfo(){this._asfMediaInfo=new ge}get timestampBase(){return this._asfTimestampBase}set timestampBase(e){this._asfTimestampBase=e}get overridedDuration(){return this._asfDuration}set overridedDuration(e){this._asfDuration=e,this._asfMediaInfo.duration=e}set overridedHasAudio(e){this._asfHasAudio=e,this._asfMediaInfo.hasAudio=e}set overridedHasVideo(e){this._asfHasVideo=e,this._asfMediaInfo.hasVideo=e}get onTrackMetadata(){return super.onTrackMetadata}set onTrackMetadata(e){super.onTrackMetadata=e,this._nalHeaders.sps&&this._nalHeaders.pps&&this._sendVideoMetadataFromHeader(!0),this._headerAudioConfig&&(this._hasAudioMetaSent=!1,this._sendAudioMetadataFromHeader())}get onMediaInfo(){return super.onMediaInfo}set onMediaInfo(e){super.onMediaInfo=e,(!this._asfHasAudio||this._hasAudioMetaSent)&&(!this._asfHasVideo||this._hasVideoMetaSent)&&this._maybeEmitMediaInfo()}static probe(e){let t=new Uint8Array(e);return t.byteLength<28?{needMoreData:!0}:Xe(t,12,Sr)?{match:!0,consumed:12,dataOffset:12,hasAudioTrack:!0,hasVideoTrack:!0}:{match:!1}}parseChunks(e,t){let i=new Uint8Array(e),n=this._stash?.length??0,r=i;n>0&&(r=new Uint8Array(n+i.length),r.set(this._stash,0),r.set(i,n),this._stash=null);let a=0;if(!this._headerParsed){let l=this._parseHeader(r);if(l<0)return this._stash=r.slice(),e.byteLength;a=l,this._headerParsed=!0,this._sendAudioMetadataFromHeader()}if(!this._dataObjectParsed){if(a+50>r.length||!Xe(r,a,hn))return this._stash=r.slice(a),e.byteLength;if(H.u64(r,a+16)<50)return this._stash=r.slice(a),e.byteLength;a+=50,this._dataObjectParsed=!0}let o=t-n;for(;a+4<=r.length;){let l=H.u16(r,a),d=H.u16(r,a+2);if(l===pn){a=r.length;break}if(l!==mn||d<=0||a+4+d>r.length)break;let _=this._parsePacket(r,a,o);if(_<=a||_>r.length)break;a=_}return this._stash=a<r.length?r.slice(a):null,this._emitTrackData(),e.byteLength}_emitTrackData(){this._asfHasVideo&&!this._hasVideoMetaSent?this.onTrackData(Rr(this._asfAudioTrack.sequenceNumber),yi(this._videoTrack.sequenceNumber)):this._hasVideoMetaSent||this._videoTrack.frames.length===0?this.onTrackData(this._asfAudioTrack,this._videoTrack):this.onTrackData(this._asfAudioTrack,yi(this._videoTrack.sequenceNumber))}_readVar(e,t,i,n){let r=(i&3)===3?4:i&3;if(t.offset+r>e.length)return t.error=!0,n;if(r===0)return n;let a=r===1?e[t.offset]:r===2?H.u16(e,t.offset):H.u32(e,t.offset);return t.offset+=r,a}_parseHeader(e){if(e.length<64||!Xe(e,12,Sr))return-1;let t=28,i=H.u64(e,t);if(i<30||12+i>e.length)return-1;t+=8;let n=H.u32(e,t);t+=6;for(let r=0;r<n;r++){if(t+24>e.length)return-1;let a=t+H.u64(e,t+16);if(a>e.length)return-1;if(!Xe(e,t,cn)){t=a;continue}let o=t+24;if(o+54>a){t=a;continue}let l=H.u32(e,o+40),d=H.u16(e,o+48)&127,_=o+54;if(_+l>a){t=a;continue}if(Xe(e,o,un)){if(d<128&&(this._streams[d]={type:"audio"}),l>=18){let f=_;this._audioCodec=H.u16(e,f)===gn?"opus":"aac";let p=H.u16(e,f+2),c=H.u32(e,f+4),x=H.u16(e,f+16);p>0&&(this._headerAudioChannels=p),c>0&&(this._headerAudioSampleRate=c),x>0&&f+18+x<=a&&(this._headerAudioConfig=e.slice(f+18,f+18+x))}}else if(Xe(e,o,fn)&&l>=51){let f=_,p=H.u16(e,f+9),c=f+11,x=H.u32(e,c),u=H.u32(e,c+4),m=Math.abs(H.u32(e,c+8)|0),g=An(H.u32(e,c+16));d<128&&(this._streams[d]={type:"video"}),this._videoCodec=bn[g]??"h264";let b=u>0?u:H.u32(e,f),y=m>0?m:H.u32(e,f+4);b>0&&(this._headerVideoWidth=b),y>0&&(this._headerVideoHeight=y);let k=c+x,M=p-x;M<=0&&(M=l-11-x),M>0&&k+M<=_+l&&this._extractVideoConfigFromExtraData(e.subarray(k,k+M)),this._sendVideoMetadataFromHeader()}t=a}return 12+i}_parsePacket(e,t,i){let n=H.u16(e,t+2),r=t+4+n;if(r>e.length)return e.length;let a={offset:t+12,error:!1};if(a.offset>=e.length)return r;let o=e[a.offset++],l,d;if(o&128){let g=o&15;if(a.offset+g+2>e.length)return r;a.offset+=g,l=e[a.offset++],d=e[a.offset++]}else{if(l=o,a.offset>=e.length)return r;d=e[a.offset++]}let _=(l&1)!==0;this._readVar(e,a,l>>5,n),this._readVar(e,a,l>>1&3,0);let f=this._readVar(e,a,l>>3&3,0);if(a.error||a.offset+6>e.length)return r;let p=H.u32(e,a.offset);a.offset+=6;let c=128,x=1;if(_){if(a.offset>=e.length)return r;c=e[a.offset++],x=c&63}let u=r-f;if(u<a.offset||u>r)return r;let m=a.offset;for(let g=0;g<x&&m<u;g++){let b=this._parsePayload(e,m,d,c,p,u,_,i);if(b<=m)break;m=b}return r}_parsePayload(e,t,i,n,r,a,o,l){let d={offset:t,error:!1},_=e[d.offset++],f=(_&128)!==0,p=_&127,c=this._readVar(e,d,i>>4,0),x=this._readVar(e,d,i>>2&3,0),u=this._readVar(e,d,i&3,0);if(d.error)return e.length;let m=0,g=r;if(u>=8){if(d.offset+u>e.length)return e.length;m=H.u32(e,d.offset),g=H.u32(e,d.offset+4),d.offset+=u}else u>0&&(d.offset+=u);let b=o?this._readVar(e,d,n>>6&3,0):a-d.offset;if(d.error||b<=0||(b=Math.min(b,a-d.offset),b<=0))return d.offset;let y=l+d.offset,k=e.subarray(d.offset,d.offset+b),M=p<128?this._streams[p]:null;return M?.type==="audio"?this._handlePayloadBuffer(this._audioBuffer,c,m,x,k,g,r,!o,T=>this._parseAudio(T,this._audioBuffer.pts)):M?.type==="video"&&this._handlePayloadBuffer(this._videoBuffer,c,m,x,k,g,r,!o,(T,C)=>this._dispatchVideoFrame(T,C.pts,C.packetTimestamp,C.keyframe?1:0,C.streamPosition??0),{keyframe:f,streamPosition:y}),d.offset+b}_resetPayloadBuffer(e){e.mediaObjectNumber=null,e.currentSize=0,e.chunks=[]}_handlePayloadBuffer(e,t,i,n,r,a,o,l,d,_){if(e.mediaObjectNumber!==t&&(e.chunks.length&&d(this._concatChunks(e),e),e.mediaObjectNumber=t,e.totalSize=i,e.currentSize=0,e.chunks=[],e.pts=a,e.packetTimestamp=o,_&&(e.keyframe=_.keyframe,e.streamPosition=_.streamPosition)),n!==e.currentSize){this._resetPayloadBuffer(e);return}e.chunks.push(r),e.currentSize+=r.length,(e.totalSize>0&&e.currentSize>=e.totalSize||e.totalSize===0&&l)&&(d(this._concatChunks(e),e),this._resetPayloadBuffer(e))}_concatChunks(e){let t=e.chunks;if(!t.length)return new Uint8Array(0);if(t.length===1)return t[0];let i=new Uint8Array(e.currentSize),n=0;for(let r of t)i.set(r,n),n+=r.length;return i}_updateNalHeader(e,t,i){let n=vn(t);if(i&&!i(n))return!1;let r=this._nalHeaders[e];return r&&me(r,n)?!1:(this._nalHeaders[e]=new Uint8Array(n),!0)}_extractVideoConfigFromExtraData(e){if(!e.length)return;if(this._videoCodec==="av1"){this._headerAv1c=e.slice();return}if(this._videoCodec==="vp9"){this._headerVp9c=e.slice();return}if(this._videoCodec==="hevc"&&e[0]===1&&e.length>=23){this._isAVCC=!0;let i=23;for(let n=0,r=e[22];n<r&&!(i+3>e.length);n++){let a=e[i]&63,o=Ye.u16(e,i+1);i+=3;for(let l=0;l<o&&!(i+2>e.length);l++){let d=Ye.u16(e,i);if(i+=2,i+d>e.length)break;let _=e.subarray(i,i+d);a===32?this._updateNalHeader("vps",_):a===33?this._updateNalHeader("sps",_):a===34&&this._updateNalHeader("pps",_),i+=d}}return}else if(e[0]===1&&e.length>=7){this._isAVCC=!0;let i=6;if((e[5]&31)>0&&i+2<=e.length){let r=Ye.u16(e,i);i+=2,i+r<=e.length&&(this._updateNalHeader("sps",e.subarray(i,i+r)),i+=r)}if(i<e.length&&e[i++]>0&&i+2<=e.length){let a=Ye.u16(e,i);i+=2,i+a<=e.length&&this._updateNalHeader("pps",e.subarray(i,i+a))}return}this._isAVCC=!1;let t=this._videoCodec==="hevc";for(let{type:i,data:n}of this._getNalUnits(e,t))t?i===32&&!this._nalHeaders.vps?this._updateNalHeader("vps",n):i===33&&!this._nalHeaders.sps?this._updateNalHeader("sps",n):i===34&&!this._nalHeaders.pps&&this._updateNalHeader("pps",n):i===7&&!this._nalHeaders.sps&&bi.has(n[1])?this._updateNalHeader("sps",n):i===8&&!this._nalHeaders.pps&&this._updateNalHeader("pps",n)}_isAnnexB(e){if(this._isAVCC!==null)return!this._isAVCC;if(e.length<4)return!1;let t=e[0]===0&&e[1]===0&&(e[2]===1||e[2]===0&&e[3]===1);return this._isAVCC=!t&&Ye.u32(e,0)+4<=e.length,!this._isAVCC}_getNalUnits(e,t){let i=[];if(this._isAnnexB(e)){let n=t?new Dt(e):new Tt(e),r;for(;r=n.readNextNaluPayload();)i.push({type:r.type,data:r.data})}else for(let n=0;n+4<=e.length;){let r=Ye.u32(e,n);if(!r||n+4+r>e.length)break;let a=e.subarray(n+4,n+4+r);i.push({type:t?a[0]>>1&63:a[0]&31,data:a}),n+=4+r}return i}_configUnchanged(e,t){let i=this._sentVideoConfig[e];return!!(this._hasVideoMetaSent&&i&&me(i,t))}_registerVideoMetadata(e,t,i,n){this.onTrackMetadata(e),this.onVideoTracksDiscovered&&this.onVideoTracksDiscovered([e]),this._hasVideoMetaSent=!0;let r=this._asfMediaInfo;r.videoCodec=t,r.width=i,r.height=n,e.profile&&(r.profile=e.profile),e.level&&(r.level=e.level),e.chromaFormat!==void 0&&(r.chromaFormat=e.chromaFormat===1?"4:2:0":e.chromaFormat===2?"4:2:2":e.chromaFormat===3?"4:4:4":"4:2:0"),t.startsWith("vp09")&&(r.refFrames=3),this._maybeEmitMediaInfo()}_sendVideoMetadataFromHeader(e=!1){if(this._hasVideoMetaSent&&!e)return;let t=null,i="";if(this._videoCodec==="av1"&&this._headerAv1c){let n=this._headerAv1c;if((n[0]&127)!==1){let l=fe.parseOBUs(n);if(l){let d=Cr(l);d&&(this._headerAv1c=n=d)}}if(this._configUnchanged("av1c",n))return;let r=fe.parseOBUs(n.subarray(4));if(!r)return;this._sentVideoConfig.av1c=n,i=r.codec_mimetype;let a=r.codec_size?.width??this._headerVideoWidth,o=r.codec_size?.height??this._headerVideoHeight;t={codecType:5,codec:i,codecConfig:n,codecWidth:a,codecHeight:o,presentWidth:r.present_size?.width??a,presentHeight:r.present_size?.height??o,profile:r.profile_string,level:r.level_string,bitDepth:r.bit_depth,chromaFormat:r.chroma_format,sarRatio:r.sar_ratio??{width:1,height:1},frameRate:r.frame_rate.fixed?r.frame_rate:xi}}else if(this._videoCodec==="vp9"&&this._headerVp9c&&this._headerVp9c.length>=8){let n=this._headerVp9c;if(this._configUnchanged("vp9c",n))return;let r=n.length>=12?4:0,a=n[r],o=n[r+1],l=(n[r+2]&240)>>4,d=(n[r+2]&14)>>1,_=n[r+2]&1,f=n[r+3],p=n[r+4],c=n.length>=r+6?n[r+5]:2,x=g=>`${g}`.padStart(2,"0");i=`vp09.${x(a)}.${x(o)}.${x(l)}.${x(d)}.${x(f)}.${x(p)}.${x(c)}.${x(_)}`,this._sentVideoConfig.vp9c=n;let u=this._headerVideoWidth,m=this._headerVideoHeight;t={codecType:4,codec:i,codecConfig:n,codecWidth:u,codecHeight:m,presentWidth:u,presentHeight:m,profile:`${a}`,level:`${o}`,bitDepth:l,chromaFormat:d,colorRange:_,colourPrimaries:f,transferCharacteristics:p,matrixCoefficients:c}}else if(this._videoCodec==="hevc"&&this._nalHeaders.vps&&this._nalHeaders.sps&&this._nalHeaders.pps)try{let n=Ke.parseSPS(this._nalHeaders.sps),r={parallelismType:1},a={num_temporal_layers:1,temporal_id_nested:!0};try{r=Ke.parsePPS(this._nalHeaders.pps)}catch{}try{a=Ke.parseVPS(this._nalHeaders.vps)}catch{}let o=new Bt(this._nalHeaders.vps,this._nalHeaders.sps,this._nalHeaders.pps,{configurationVersion:1,general_profile_space:n.general_profile_space??0,general_tier_flag:n.general_tier_flag?1:0,general_profile_idc:n.profile_idc??1,general_profile_compatibility_flags_1:n.general_profile_compatibility_flags_1??0,general_profile_compatibility_flags_2:n.general_profile_compatibility_flags_2??0,general_profile_compatibility_flags_3:n.general_profile_compatibility_flags_3??0,general_profile_compatibility_flags_4:n.general_profile_compatibility_flags_4??0,general_constraint_indicator_flags_1:n.general_constraint_indicator_flags_1??0,general_constraint_indicator_flags_2:n.general_constraint_indicator_flags_2??0,general_constraint_indicator_flags_3:n.general_constraint_indicator_flags_3??0,general_constraint_indicator_flags_4:n.general_constraint_indicator_flags_4??0,general_constraint_indicator_flags_5:n.general_constraint_indicator_flags_5??0,general_constraint_indicator_flags_6:n.general_constraint_indicator_flags_6??0,general_level_idc:n.general_level_idc??90,min_spatial_segmentation_idc:n.min_spatial_segmentation_idc??0,parallelismType:r.parallelismType??1,chroma_format_idc:n.chroma_format_idc??1,bit_depth_luma_minus8:n.bit_depth_luma_minus8??0,bit_depth_chroma_minus8:n.bit_depth_chroma_minus8??0,constant_frame_rate:n.constant_frame_rate??0,num_temporal_layers:a.num_temporal_layers??1,temporal_id_nested:a.temporal_id_nested??!0}).getData();if(this._configUnchanged("hvcc",o))return;this._sentVideoConfig.hvcc=o,i=n.codec_mimetype;let l=n.codec_size.width,d=n.codec_size.height;t={codecType:2,codec:i,codecConfig:o,codecWidth:l,codecHeight:d,presentWidth:n.present_size.width,presentHeight:n.present_size.height,profile:n.profile_string,level:n.level_string,bitDepth:n.bit_depth,chromaFormat:n.chroma_format,sarRatio:n.sar_ratio,frameRate:n.frame_rate.fixed?n.frame_rate:xi}}catch{return}else{let n=this._nalHeaders.sps,r=this._nalHeaders.pps;if(!n||!r||!bi.has(n[1])){this._nalHeaders.sps=this._nalHeaders.pps=null;return}let a;try{a=Rt.parseSPS(n)}catch{this._nalHeaders.sps=this._nalHeaders.pps=null;return}if(!a?.codec_size?.width||!a.codec_size.height){this._nalHeaders.sps=this._nalHeaders.pps=null;return}let o=new Ft(n,r,a).getData();if(this._configUnchanged("avcc",o))return;this._sentVideoConfig.avcc=o,i=`avc1.${n[1].toString(16).padStart(2,"0")}${n[2].toString(16).padStart(2,"0")}${n[3].toString(16).padStart(2,"0")}`;let l=a.codec_size.width,d=a.codec_size.height;t={codecType:1,codec:i,codecConfig:o,codecWidth:l,codecHeight:d,presentWidth:l,presentHeight:d,profile:xn[n[1]]??`Profile ${n[1]}`,level:(n[3]/10).toFixed(1),chromaFormat:a.chroma_format_idc}}if(t){let n={type:"video",trackId:1,timescale:1e3,duration:0,colorRange:0,colourPrimaries:1,transferCharacteristics:1,matrixCoefficients:1,sarRatio:{width:1,height:1},frameRate:xi,refFrameDuration:40,...t};this._registerVideoMetadata(n,i,t.codecWidth,t.codecHeight)}}_parseAudioSpecificConfig(e){try{let t=new ze(new We(e));return{config:new Uint8Array(t.config),samplingRate:t.sampling_rate,channelCount:t.channel_count,codec:t.codec_mimetype,originalCodec:t.original_codec_mimetype}}catch{return null}}_registerAudioMetadata(e,t,i,n,r){let a=this._audioCodec==="opus",o={type:"audio",codecType:a?3:2,codec:e,codecConfig:i,trackId:2,timescale:1e3,duration:0,audioSampleRate:a?48e3:n,channelCount:r,originalCodec:t,preSkipSamples:a?H.u16(i,2):0,inputSampleRate:n,outputGain:0,bitsPerSample:16,littleEndian:!1,refFrameDuration:a?20:1024/n*1e3};if(a){let d=new DataView(i.buffer,i.byteOffset,i.byteLength);o.inputSampleRate=d.getUint32(4,!0),o.outputGain=d.getInt16(8,!0)}this.onTrackMetadata(o),this._hasAudioMetaSent=!0,this._audioFrameDuration=o.refFrameDuration;let l=this._asfMediaInfo;l.audioCodec=o.originalCodec,l.audioSampleRate=o.audioSampleRate,l.audioChannelCount=o.channelCount,this._maybeEmitMediaInfo()}_sendAudioMetadataFromHeader(){if(!(this._hasAudioMetaSent||!this._audioCodec)){if(this._audioCodec==="opus"){let e=Cn(this._headerAudioConfig,this._headerAudioChannels,this._headerAudioSampleRate);this._registerAudioMetadata("opus","opus",e,this._headerAudioSampleRate||48e3,this._headerAudioChannels||2);return}if(this._headerAudioConfig?.length){let e=this._parseAudioSpecificConfig(this._headerAudioConfig);if(e){this._registerAudioMetadata(e.codec,e.originalCodec,e.config,e.samplingRate,e.channelCount);return}}if(this._headerAudioChannels>0&&this._headerAudioSampleRate>0){let e=xe.indexOf(this._headerAudioSampleRate),t=Er(2,e>=0?e:4,this._headerAudioChannels),i=this._parseAudioSpecificConfig(t);this._registerAudioMetadata(i?.codec??"mp4a.40.2",i?.originalCodec??"mp4a.40.2",t,this._headerAudioSampleRate,this._headerAudioChannels)}}}_parseAudio(e,t){if(e.length){if(this._audioCodec==="aac"&&e.length>=7&&e[0]===255&&(e[1]&240)===240){let i=0;for(let n=0;n+7<=e.length&&!(e[n]!==255||(e[n+1]&240)!==240);){let r=((e[n+2]&192)>>6)+1,a=(e[n+2]&60)>>2,o=(e[n+2]&1)<<2|(e[n+3]&192)>>6,l=(e[n+3]&3)<<11|e[n+4]<<3|e[n+5]>>5&7,d=e[n+1]&1?7:9;if(l<d||n+l>e.length)break;if(!this._hasAudioMetaSent){let _=Er(r,a,o),f=this._parseAudioSpecificConfig(_);this._registerAudioMetadata(f?.originalCodec??`mp4a.40.${r}`,f?.originalCodec??`mp4a.40.${r}`,_,f?.samplingRate??xe[a]??44100,f?.channelCount??o)}this._pushAudioFrame(e.subarray(n+d,n+l),t+i*this._audioFrameDuration),i++,n+=l}return}this._hasAudioMetaSent||this._sendAudioMetadataFromHeader(),this._pushAudioFrame(e,t)}}_pushAudioFrame(e,t){if(!e.length||this._asfHasVideo&&!this._hasReceivedFirstKeyframe)return;this._baseTimestamp===null&&(this._baseTimestamp=t);let i=this._firstVideoPts??this._baseTimestamp??t,n=Math.max(0,t-i),r=this._audioNextDts??this._asfTimestampBase+n;this._audioNextDts!==null&&Math.abs(this._asfTimestampBase+n-r)>500&&(r=this._asfTimestampBase+n),this._lastAudioDts!==null&&r<=this._lastAudioDts&&(r=this._lastAudioDts+1),this._lastAudioDts=r,this._audioNextDts=r+this._audioFrameDuration,this._asfAudioTrack.frames.push({unit:e,length:e.length,dts:r,pts:r}),this._asfAudioTrack.length+=e.length}_maybeEmitMediaInfo(){let e=this._asfMediaInfo;e.hasAudio=this._asfHasAudio,e.hasVideo=this._asfHasVideo,(!e.hasAudio||this._hasAudioMetaSent)&&(!e.hasVideo||this._hasVideoMetaSent)&&this.onMediaInfo(e)}_requireKeyframe(e,t,i){return this._hasReceivedFirstKeyframe?!0:e?(this._hasReceivedFirstKeyframe=!0,this._baseTimestamp===null&&(this._baseTimestamp=i),this._firstVideoPts===null&&(this._firstVideoPts=t),!0):!1}_getVideoTimestamp(e){let t=this._firstVideoPts!==null?Math.max(0,e-this._firstVideoPts):0;return this._lastVideoPts!==null&&t<=this._lastVideoPts&&(t=this._lastVideoPts+1),this._lastVideoPts=t,this._asfTimestampBase+t}_pushVideoFrame(e,t,i,n,r,a,o,l){let d={fileposition:e,dts:t,pts:i,cts:n,isKeyframe:r,units:a,length:o};l&&(d.rawData=l),this._videoTrack.frames.push(d),this._videoTrack.length+=o}_parseNalVideo(e,t,i,n,r,a){let o=(n&1)!==0;if(!this._requireKeyframe(o,t,i))return;let l=[],d=0,_=!1,f=!1;for(let{type:x,data:u}of this._getNalUnits(e,a)){if(a){if(x===32&&this._updateNalHeader("vps",u))_=!0;else if(x===33&&this._updateNalHeader("sps",u))_=!0;else if(x===34&&this._updateNalHeader("pps",u))_=!0;else if(x===35)continue;yn.has(x)&&(f=!0)}else{if(x===7&&this._updateNalHeader("sps",u,g=>bi.has(g[1])))_=!0;else if(x===8&&this._updateNalHeader("pps",u))_=!0;else if(x===9)continue;x===5&&(f=!0)}let m=a?new Lt({type:x,data:u}):new kt({type:x,data:u});l.push({type:x,data:m.data}),d+=m.data.length}if(f&&(o=!0),(a?this._nalHeaders.vps&&this._nalHeaders.sps&&this._nalHeaders.pps:this._nalHeaders.sps&&this._nalHeaders.pps)&&(!this._hasVideoMetaSent||_)&&this._sendVideoMetadataFromHeader(_),!this._hasVideoMetaSent||!l.length)return;let c=this._getVideoTimestamp(t);this._pushVideoFrame(r,c,c,0,o,l,d)}_parseAV1(e,t,i,n,r){let a=(n&1)!==0;try{let l=fe.parseOBUs(e);l&&(this._headerAv1c||(this._headerAv1c=Cr(l)),l.keyframe&&(a=!0))}catch{}if(!this._requireKeyframe(a,t,i)||(this._headerAv1c&&!this._hasVideoMetaSent&&this._sendVideoMetadataFromHeader(),!this._hasVideoMetaSent))return;let o=this._getVideoTimestamp(t);this._pushVideoFrame(r,o,o,0,a,[{type:0,data:e}],e.length,e)}_parseVP9(e,t,i,n,r){let a=(n&1)!==0;try{let l=je.parseVp9Header(e);l.isValid&&(a=!0,l.width>0&&(this._headerVideoWidth=l.width),l.height>0&&(this._headerVideoHeight=l.height),this._headerVp9c||(this._headerVp9c=En(l.profile||0)))}catch{}if(!this._requireKeyframe(a,t,i)||(this._headerVp9c&&!this._hasVideoMetaSent&&this._sendVideoMetadataFromHeader(),!this._hasVideoMetaSent))return;let o=this._getVideoTimestamp(t);this._pushVideoFrame(r,o,o,0,a,[{type:a?0:1,data:e}],e.length)}_dispatchVideoFrame(e,t,i,n,r){switch(this._videoCodec){case"hevc":case"h264":this._parseNalVideo(e,t,i,n,r,this._videoCodec==="hevc");break;case"av1":this._parseAV1(e,t,i,n,r);break;case"vp9":this._parseVP9(e,t,i,n,r);break}}};var Vt=class s{static types;static init(){s.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 s.types)s.types.hasOwnProperty(t)&&(s.types[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)]);let e=s.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){let t=8,i=null,n=Array.prototype.slice.call(arguments,1),r=n.length;for(let o=0;o<r;o++)t+=n[o].byteLength;i=new Uint8Array(t),i[0]=t>>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=t&255,i.set(e,4);let a=8;for(let o=0;o<r;o++)i.set(n[o],a),a+=n[o].byteLength;return i}static generateInitSegment(e){let t=s.constants.FTYP;e.type==="video"&&e.codec&&(e.codec.startsWith("av01")?t=s.constants.FTYP_AV1:e.codec.startsWith("vp09")&&(t=s.constants.FTYP_VP9));let i=s.box(s.types.ftyp,t),n=s.moov(e),r=new Uint8Array(i.byteLength+n.byteLength);return r.set(i,0),r.set(n,i.byteLength),r}static moov(e){let t=s.mvhd(e.timescale,e.duration),i=s.trak(e),n=s.mvex(e);return s.box(s.types.moov,t,i,n)}static mvhd(e,t){return s.box(s.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 s.box(s.types.trak,s.tkhd(e),s.mdia(e))}static tkhd(e){let t=e.trackId,i=e.duration,n=(e.presentWidth||e.codecWidth||0)>>>0,r=(e.presentHeight||e.codecHeight||0)>>>0;return s.box(s.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,n>>>8&255,n&255,0,0,r>>>8&255,r&255,0,0]))}static mdia(e){return s.box(s.types.mdia,s.mdhd(e),s.hdlr(e),s.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return s.box(s.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=s.constants.HDLR_AUDIO:t=s.constants.HDLR_VIDEO,s.box(s.types.hdlr,t)}static minf(e){let t=null;return e.type==="audio"?t=s.box(s.types.smhd,s.constants.SMHD):t=s.box(s.types.vmhd,s.constants.VMHD),s.box(s.types.minf,t,s.dinf(),s.stbl(e))}static dinf(){return s.box(s.types.dinf,s.box(s.types.dref,s.constants.DREF))}static stbl(e){return s.box(s.types.stbl,s.stsd(e),s.box(s.types.stts,s.constants.STTS),s.box(s.types.stsc,s.constants.STSC),s.box(s.types.stsz,s.constants.STSZ),s.box(s.types.stco,s.constants.STCO))}static stsd(e){return e.type==="audio"?e.codec==="mp3"?s.box(s.types.stsd,s.constants.STSD_PREFIX,s.mp3(e)):e.codec==="ac-3"?s.box(s.types.stsd,s.constants.STSD_PREFIX,s.ac3(e)):e.codec==="ec-3"?s.box(s.types.stsd,s.constants.STSD_PREFIX,s.ec3(e)):e.codec==="opus"?s.box(s.types.stsd,s.constants.STSD_PREFIX,s.Opus(e)):e.codec=="flac"?s.box(s.types.stsd,s.constants.STSD_PREFIX,s.fLaC(e)):e.codec=="ipcm"?s.box(s.types.stsd,s.constants.STSD_PREFIX,s.ipcm(e)):s.box(s.types.stsd,s.constants.STSD_PREFIX,s.mp4a(e)):e.type==="video"&&e.codec.startsWith("hvc1")?s.box(s.types.stsd,s.constants.STSD_PREFIX,s.hvc1(e)):e.type==="video"&&e.codec.startsWith("av01")?s.box(s.types.stsd,s.constants.STSD_PREFIX,s.av01(e)):e.type==="video"&&e.codec.startsWith("vp09")?s.box(s.types.stsd,s.constants.STSD_PREFIX,s.vp09(e)):s.box(s.types.stsd,s.constants.STSD_PREFIX,s.avc1(e))}static mp3(e){let t=e.channelCount,i=e.audioSampleRate,n=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 s.box(s.types[".mp3"],n)}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,n=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 s.box(s.types.mp4a,n,s.esds(e))}static ac3(e){let t=e.channelCount,i=e.audioSampleRate,n=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 s.box(s.types["ac-3"],n,s.box(s.types.dac3,new Uint8Array(e.codecConfig)))}static ec3(e){let t=e.channelCount,i=e.audioSampleRate,n=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 s.box(s.types["ec-3"],n,s.box(s.types.dec3,new Uint8Array(e.codecConfig)))}static esds(e){let t=Array.from(e.codecConfig||[]),i=t.length,n=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(t).concat([6,1,2]));return s.box(s.types.esds,n)}static Opus(e){let t=e.channelCount,i=e.audioSampleRate,n=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 s.box(s.types.Opus,n,s.dOps(e))}static dOps(e){let t=e.channelCount,i=e.channelConfigCode,n=e.audioSampleRate;if(e.codecConfig){let o=new Uint8Array(e.codecConfig).slice(),l=new DataView(o.buffer);return l.setUint8(0,0),l.setUint16(2,e.preSkipSamples,!1),l.setUint32(4,e.inputSampleRate,!1),l.setUint16(8,e.outputGain,!1),s.box(s.types.dOps,o)}let r=[];switch(i){case 1:case 2:r=[0];break;case 0:r=[255,1,1,0,1];break;case 128:r=[255,2,0,0,1];break;case 3:r=[1,2,1,0,2,1];break;case 4:r=[1,2,2,0,1,2,3];break;case 5:r=[1,3,2,0,4,1,2,3];break;case 6:r=[1,4,2,0,4,1,2,3,5];break;case 7:r=[1,4,2,0,4,1,2,3,5,6];break;case 8:r=[1,5,3,0,6,1,2,3,4,5,7];break;case 130:r=[1,1,2,0,1];break;case 131:r=[1,1,3,0,1,2];break;case 132:r=[1,1,4,0,1,2,3];break;case 133:r=[1,1,5,0,1,2,3,4];break;case 134:r=[1,1,6,0,1,2,3,4,5];break;case 135:r=[1,1,7,0,1,2,3,4,5,6];break;case 136:r=[1,1,8,0,1,2,3,4,5,6,7];break}let a=new Uint8Array([0,t,0,0,n>>>24&255,n>>>17&255,n>>>8&255,n>>>0&255,0,0,...r]);return s.box(s.types.dOps,a)}static fLaC(e){let t=e.channelCount,i=Math.min(e.audioSampleRate,65535),n=e.bitsPerSample,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,n,0,0,0,0,i>>>8&255,i&255,0,0]);return s.box(s.types.fLaC,r,s.dfLa(e))}static dfLa(e){let t=new Uint8Array([0,0,0,0,...e.codecConfig]);return s.box(s.types.dfLa,t)}static ipcm(e){let t=e.channelCount,i=Math.min(e.audioSampleRate,65535),n=e.bitsPerSample,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,n,0,0,0,0,i>>>8&255,i&255,0,0]);return e.channelCount===1?s.box(s.types.ipcm,r,s.pcmC(e)):s.box(s.types.ipcm,r,s.chnl(e),s.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 s.box(s.types.chnl,t)}static pcmC(e){let t=e.littleEndian?1:0,i=e.bitsPerSample,n=new Uint8Array([0,0,0,0,t,i]);return s.box(s.types.pcmC,n)}static avc1(e){let t=e.codecConfig,i=e.codecWidth,n=e.codecHeight,r=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,n>>>8&255,n&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 s.box(s.types.avc1,r,s.box(s.types.avcC,t))}static hvc1(e){let t=e.codecConfig,i=e.codecWidth,n=e.codecHeight,r=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,n>>>8&255,n&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 s.box(s.types.hvc1,r,s.box(s.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,n=Number.isFinite(e.bitDepth)?e.bitDepth:8,r=Number.isFinite(e.chromaFormat)?e.chromaFormat:1,a=e.colorRange?1:0,o=Number.isFinite(e.colourPrimaries)?e.colourPrimaries:1,l=Number.isFinite(e.transferCharacteristics)?e.transferCharacteristics:1,d=Number.isFinite(e.matrixCoefficients)?e.matrixCoefficients:1;return new Uint8Array([1,0,0,0,t&255,i&255,(n&15)<<4|(r&7)<<1|a&1,o&255,l&255,d&255,0,0])}static normalizeVp9CodecConfig(e){let i=new Uint8Array(e);if(i.length===12)return i;if(i.length===9){let n=new Uint8Array(12);return n[0]=i[0]||1,n.set(i.subarray(1,9),4),n}if(i.length===8){let n=new Uint8Array(12);return n[0]=1,n.set(i,4),n}if(i.length===7){let n=new Uint8Array(12);return n[0]=i[0]||1,n.set(i.subarray(1,7),4),n}return null}static vp09(e){let t=e.codecConfig?s.normalizeVp9CodecConfig(e.codecConfig):null,i=e.codecWidth||e.presentWidth||192,n=e.codecHeight||e.presentHeight||108;t||(t=s.buildVp9CodecConfig(e));let r=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,n>>>8&255,n&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=[s.box(s.types.vpcC,t)],o=s.colr(e);return o&&a.push(o),s.box(s.types.vp09,r,...a)}static colr(e){let t=e.colourPrimaries,i=e.transferCharacteristics,n=e.matrixCoefficients,r=l=>Number.isFinite(l)&&l!==2;if(!r(t)||!r(i)||!r(n))return null;let a=e.colorRange?128:0,o=new Uint8Array([110,99,108,120,t>>>8&255,t&255,i>>>8&255,i&255,n>>>8&255,n&255,a]);return s.box(s.types.colr,o)}static av01(e){let t=e.codecConfig,i=e.codecWidth||192,n=e.codecHeight||108,r=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,n>>>8&255,n&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 s.box(s.types.av01,r,s.box(s.types.av1C,t))}static mvex(e){return s.box(s.types.mvex,s.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 s.box(s.types.trex,i)}static moof(e,t){return s.box(s.types.moof,s.mfhd(e.sequenceNumber),s.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 s.box(s.types.mfhd,t)}static traf(e,t){let i=e.id,n=s.box(s.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,i&255])),r=s.box(s.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,t&255])),a=s.sdtp(e),o=s.trun(e,a.byteLength+16+16+8+16+8+8);return s.box(s.types.traf,n,r,o,a)}static sdtp(e){let t=e.frames||[],i=t.length,n=new Uint8Array(4+i);for(let r=0;r<i;r++){let a=t[r].flags;n[r+4]=a.isLeading<<6|a.dependsOn<<4|a.isDependedOn<<2|a.hasRedundancy}return s.box(s.types.sdtp,n)}static trun(e,t){let i=e.frames||[],n=i.length,r=!1;for(let _=0;_<n;_++)if(i[_].cts!==0){r=!0;break}let a=r?16:12,o=12+a*n,l=new Uint8Array(o);t+=8+o;let d=r?3841:1793;l.set([d>>>24&255,d>>>16&255,d>>>8&255,d&255,n>>>24&255,n>>>16&255,n>>>8&255,n&255,t>>>24&255,t>>>16&255,t>>>8&255,t&255],0);for(let _=0;_<n;_++){let f=i[_].duration,p=i[_].size,c=i[_].flags,x=i[_].cts,u=[f>>>24&255,f>>>16&255,f>>>8&255,f&255,p>>>24&255,p>>>16&255,p>>>8&255,p&255,c.isLeading<<2|c.dependsOn,c.isDependedOn<<6|c.hasRedundancy<<4|c.isNonSync,0,0];r&&u.push(x>>>24&255,x>>>16&255,x>>>8&255,x&255),l.set(u,12+a*_)}return s.box(s.types.trun,l)}static mdat(e){return s.box(s.types.mdat,e)}};Vt.init();var He=Vt;var vi=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}},Ai=vi;var he=class{dts;pts;duration;originalDts;isSyncPoint;fileposition=null;constructor(e,t,i,n,r){this.dts=e,this.pts=t,this.duration=i,this.originalDts=n,this.isSyncPoint=r}},Me=class{beginDts=0;endDts=0;beginPts=0;endPts=0;originalBeginDts=0;originalEndDts=0;syncPoints=[];firstFrame=null;lastFrame=null;appendSyncPoint(e){e.isSyncPoint=!0,this.syncPoints.push(e)}},Pt=class{_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,n=t.length-1,r=0,a=0,o=n;for(e<t[0].dts&&(i=0,a=o+1);a<=o;)if(r=a+Math.floor((o-a)/2),r===n||e>=t[r].dts&&e<t[r+1].dts){i=r;break}else t[r].dts<e?a=r+1:o=r-1;return this._list[i]}},we=class{_type;_list=[];_lastAppendLocation=-1;constructor(e){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,n=0,r=0,a=i,o=0;if(e<t[0].originalBeginDts)return o=-1,o;for(;r<=a;){let l=t[n].lastFrame;if(n=r+Math.floor((a-r)/2),n===i||l&&e>l.originalDts&&e<t[n+1].originalBeginDts){o=n;break}else t[n].originalBeginDts<e?r=n+1:a=n-1}return o}_searchNearestSegmentAfter(e){return this._searchNearestSegmentBefore(e)+1}append(e){let t=this._list,i=e,n=this._lastAppendLocation,r=0;n!==-1&&n<t.length&&t[n].lastFrame&&i.originalBeginDts>=t[n].lastFrame.originalDts&&(n===t.length-1||n<t.length-1&&i.originalBeginDts<t[n+1].originalBeginDts)?r=n+1:t.length>0&&(r=this._searchNearestSegmentBefore(i.originalBeginDts)+1),this._lastAppendLocation=r,this._list.splice(r,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}};function Ie(s){return`${Math.max(0,Math.trunc(s))}`.padStart(2,"0")}function Si(s){return Number.isFinite(s)&&s!==2}function Rn(s){let e=Number.parseInt(s.profile,10),t=Number.parseInt(s.level,10),i=s.bitDepth;if(!Number.isFinite(e)||!Number.isFinite(t)||!Number.isFinite(i))return s.codec;let n=["vp09",Ie(e),Ie(t),Ie(i)];return!Number.isFinite(s.chromaFormat)||!Si(s.colourPrimaries)||!Si(s.transferCharacteristics)||!Si(s.matrixCoefficients)||!Number.isFinite(s.colorRange)?n.join("."):n.concat([Ie(s.chromaFormat),Ie(s.colourPrimaries),Ie(s.transferCharacteristics),Ie(s.matrixCoefficients),Ie(s.colorRange?1:0)]).join(".")}function kn(s){return s?s instanceof Uint8Array?s:ArrayBuffer.isView(s)?new Uint8Array(s.buffer,s.byteOffset,s.byteLength):s instanceof ArrayBuffer?new Uint8Array(s):typeof s.length=="number"?Uint8Array.from(s):null:null}function kr(s,e=16){let t=kn(s);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 Ei=class s extends Be{static TAG="MP4Remuxer";_dtsBase=1/0;_audioDtsBase=1/0;_videoDtsBase=1/0;_audioNextDts=1/0;_videoNextDts=1/0;_audioStashedLastFrame=null;_videoStashedLastFrame=null;_audioSegmentInfoList=new we("audio");_videoSegmentInfoList=new we("video");_onInitSegment=te;_onMediaSegment=te;_pendingAudioInitSegment=null;_pendingVideoInitSegment=null;_forceFirstIDR;_fillSilentAfterSeek;_mp3UseMpegAudio;_fillAudioTimestampGap;constructor(e){super(e),this._forceFirstIDR=!!(G.chrome&&G.version&&(G.version.major<50||G.version.major===50&&G.version.build&&G.version.build<2661)),this._fillSilentAfterSeek=G?.msedge||G?.msie||!1,this._mp3UseMpegAudio=!G.firefox,this._fillAudioTimestampGap=this._config.fixAudioTimestampGap}destroy(){this._dtsBase=1/0,this._audioDtsBase=1/0,this._videoDtsBase=1/0,this._audioNextDts=1/0,this._videoNextDts=1/0,this._audioMeta=null,this._videoMeta=null,this._audioSegmentInfoList.clear(),this._videoSegmentInfoList.clear(),this._pendingAudioInitSegment=null,this._pendingVideoInitSegment=null,this._onInitSegment=te,this._onMediaSegment=te}bindDataSource(e){return e.onTrackData=this._onTrackData.bind(this),e.onTrackMetadata=this._onTrackMetadata.bind(this),this}get onInitSegment(){return this._onInitSegment}set onInitSegment(e){this._onInitSegment=e}get onMediaSegment(){return this._onMediaSegment}set onMediaSegment(e){this._onMediaSegment=e}insertDiscontinuity(){this._audioNextDts=this._videoNextDts=1/0}clear(){this._audioStashedLastFrame=null,this._videoStashedLastFrame=null,this._videoSegmentInfoList.clear(),this._audioSegmentInfoList.clear(),this._pendingAudioInitSegment=null,this._pendingVideoInitSegment=null}_getMp4TrackId(e,t){return Number.isFinite(t)&&t>0?t:e==="video"?1:2}_getMp4Metadata(e){return{...e,trackId:this._getMp4TrackId(e.type,e.trackId)}}_describeMetadata(e){let t=`type=${e.type} codec=${e.codec} duration=${e.duration}`;return e.type==="audio"&&(t+=` channels=${e.channelCount} sampleRate=${e.audioSampleRate}`,t+=` config=${kr(e.codecConfig)}`),t}_describeInitSegment(e){return`type=${e.type} codec=${e.codec||"none"} container=${e.container} bytes=${e.data.byteLength} head=${kr(e.data)}`}_onTrackData(e,t){this._dtsBase===1/0&&this._calculateDtsBase(e,t),this._pendingVideoInitSegment&&(h.v(s.TAG,`_onTrackData(): flushing pending video init before data batch, videoFrames=${t.frames.length} audioFrames=${e.frames.length} ${this._describeInitSegment(this._pendingVideoInitSegment)}`),this._onInitSegment("video",this._pendingVideoInitSegment),this._pendingVideoInitSegment=null),this._pendingAudioInitSegment&&(h.v(s.TAG,`_onTrackData(): flushing pending audio init before data batch, videoFrames=${t.frames.length} audioFrames=${e.frames.length} ${this._describeInitSegment(this._pendingAudioInitSegment)}`),this._onInitSegment("audio",this._pendingAudioInitSegment),this._pendingAudioInitSegment=null),this._remuxVideo(t,!1),this._remuxAudio(e,!1)}_onTrackMetadata(e){let t=null,i="mp4",n=e.codec,r=e.type;e.type==="audio"?(this._isAudioMetadataDispatched=!0,this._audioMeta=e,e.codec==="mp3"&&this._mp3UseMpegAudio?(i="mpeg",n="",t=new Uint8Array):t=He.generateInitSegment(this._getMp4Metadata(e))):(this._isVideoMetadataDispatched=!0,this._videoMeta=e,e.codecType===4&&(n=Rn(e)),t=He.generateInitSegment(this._getMp4Metadata(e)));let a={kind:0,type:r,data:new Uint8Array(t.buffer),codec:n,container:`${r}/${i}`,mediaDuration:e.duration};r==="audio"?(this._pendingAudioInitSegment?h.v(s.TAG,`_onTrackMetadata(): replacing pending audio init ${this._describeInitSegment(this._pendingAudioInitSegment)} -> ${this._describeMetadata(e)}`):h.v(s.TAG,`_onTrackMetadata(): stashing audio init from metadata ${this._describeMetadata(e)}`),this._pendingAudioInitSegment=a):(this._pendingVideoInitSegment?h.v(s.TAG,`_onTrackMetadata(): replacing pending video init ${this._describeInitSegment(this._pendingVideoInitSegment)} -> ${this._describeMetadata(e)}`):h.v(s.TAG,`_onTrackMetadata(): stashing video init from metadata ${this._describeMetadata(e)}`),this._pendingVideoInitSegment=a)}_calculateDtsBase(e,t){this._dtsBase===1/0&&(e&&e.frames&&e.frames.length&&(this._audioDtsBase=e.frames[0].dts),t&&t.frames&&t.frames.length&&(this._videoDtsBase=t.frames[0].dts),this._dtsBase=Math.min(this._audioDtsBase,this._videoDtsBase))}get timestampBase(){if(this._dtsBase!==1/0)return this._dtsBase}flushStashedFrames(){let e=this._videoStashedLastFrame,t=this._audioStashedLastFrame,i={type:"video",id:1,sequenceNumber:0,frames:[],length:0};e!=null&&(i.frames.push(e),i.length=e.length);let n={type:"audio",id:2,sequenceNumber:0,frames:[],length:0};t!=null&&(n.frames.push(t),n.length=t.length),this._videoStashedLastFrame=null,this._audioStashedLastFrame=null,this._remuxVideo(i,!0),this._remuxAudio(n,!0)}_remuxAudio(e,t){if(!this._audioMeta||e.frames.length===0)return;this._pendingAudioInitSegment&&(h.v(s.TAG,`_remuxAudio(): flushing pending audio init before audio remux, audioFrames=${e.frames.length} force=${t} ${this._describeInitSegment(this._pendingAudioInitSegment)}`),this._onInitSegment("audio",this._pendingAudioInitSegment),this._pendingAudioInitSegment=null);let i=e,n=i.frames,r,a=-1,o=-1,l=-1,d=this._audioMeta.refFrameDuration,_=this._audioMeta.codec==="mp3"&&this._mp3UseMpegAudio,f=this._dtsBase!==1/0&&this._audioNextDts===1/0,p=!1;if(n.length===1&&!t)return;let c=0,x=null,u=0;_?(c=0,u=i.length):(c=8,u=8+i.length);let m;if(n.length>1&&(m=n.pop(),u-=m?.length||0),this._audioStashedLastFrame!=null){let C=this._audioStashedLastFrame;this._audioStashedLastFrame=null,n.unshift(C),u+=C?.length||0}m!=null&&(this._audioStashedLastFrame=m);let g=n[0].dts-this._dtsBase;if(this._audioNextDts!==1/0)r=g-this._audioNextDts;else if(this._audioSegmentInfoList.isEmpty())r=0,this._fillSilentAfterSeek&&!this._videoSegmentInfoList.isEmpty()&&this._audioMeta.originalCodec!=="mp3"&&(p=!0);else{let C=this._audioSegmentInfoList.getLastFrameBefore(g);if(C!=null){let v=g-(C.originalDts+C.duration);v<=3&&(v=0);let D=C.dts+C.duration+v;r=g-D}else r=0}if(p){let C=g-r,v=this._videoSegmentInfoList.getLastSegmentBefore(g);if(v!=null&&v.beginDts<C){let D=Ai.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount);if(D){let S=v.beginDts,P=C-v.beginDts;h.v(s.TAG,`InsertPrefixSilentAudio: dts: ${S}, duration: ${P}`),n.unshift({unit:D,length:D.byteLength,dts:S,pts:S}),u+=D.byteLength}}else p=!1}let b=[];for(let C=0;C<n.length;C++){let v=n[C],D=v.unit,S=v.dts-this._dtsBase,P=S,X=!1,Z=[],Q=0;if(!(S<-.001)){if(this._audioMeta.codec!=="mp3"&&!Number.isNaN(d)){let q=S,Y=3;if(this._audioNextDts!==1/0&&(q=this._audioNextDts),r=S-q,r<=-Y*d){h.w(s.TAG,`Dropping 1 audio frame (originalDts: ${S} ms ,curRefDts: ${q} ms)  due to dtsCorrection: ${r} ms overlap.`);continue}else if(r>=Y*d&&this._fillAudioTimestampGap&&!G.safari){X=!0;let ie=Math.floor(r/d);h.w(s.TAG,`Large audio timestamp gap detected, may cause AV sync to drift. Silent frames will be generated to avoid unsync.
originalDts: ${S} ms, curRefDts: ${q} ms, dtsCorrection: ${Math.round(r)} ms, generate: ${ie} frames`),P=Math.floor(q),Q=Math.floor(q+d)-P;let V=Ai.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount);V===null&&(h.w(s.TAG,`Unable to generate silent frame for ${this._audioMeta.originalCodec} with ${this._audioMeta.channelCount} channels, repeat last frame`),V=D);for(let ee=0;ee<ie;ee++){q=q+d;let de=Math.floor(q),Ce=Math.floor(q+d)-de,N={dts:de,pts:de,cts:0,unit:V,size:V.byteLength,duration:Ce,originalDts:S,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}};Z.push(N),u+=N.size}this._audioNextDts=q+d}else P=Math.floor(q),Q=Math.floor(q+d)-P,this._audioNextDts=q+d}else P=S-r,C!==n.length-1?Q=n[C+1].dts-this._dtsBase-r-P:m!=null?Q=m.dts-this._dtsBase-r-P:b.length>=1?Q=b[b.length-1].duration:Q=Math.floor(d),this._audioNextDts=P+Q;a===-1&&(a=P),b.push({dts:P,pts:P,cts:0,unit:v.unit,size:v.unit.byteLength,duration:Q,originalDts:S,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}),X&&b.push(...Z)}}if(b.length===0){i.frames=[],i.length=0;return}_?x=new Uint8Array(u):(x=new Uint8Array(u),x[0]=u>>>24&255,x[1]=u>>>16&255,x[2]=u>>>8&255,x[3]=u&255,x.set(He.types.mdat,4));for(let C=0;C<b.length;C++){let v=b[C].unit;x.set(v,c),c+=v.byteLength}let y=b[b.length-1];o=y.dts+y.duration;let k=new Me;k.beginDts=a,k.endDts=o,k.beginPts=a,k.endPts=o,k.originalBeginDts=b[0].originalDts,k.originalEndDts=y.originalDts+y.duration,k.firstFrame=new he(b[0].dts,b[0].pts,b[0].duration,b[0].originalDts,!1),k.lastFrame=new he(y.dts,y.pts,y.duration,y.originalDts,!1),this._isLive||this._audioSegmentInfoList.append(k),i.frames=b,i.sequenceNumber++;let M=null;_?M=new Uint8Array:M=He.moof({...i,id:this._getMp4TrackId("audio",i.id)},a),i.frames=[],i.length=0;let T={kind:1,type:"audio",data:new Uint8Array(this._mergeBoxes(M,x).buffer),frameCount:b.length,info:k};_&&f&&(T.timestampOffset=a),this._onMediaSegment("audio",T)}_remuxVideo(e,t){if(e.frames.length<=1&&!t)return;if(!this._videoMeta){h.w(s.TAG,"_remuxVideo: VideoData received before CodecConfigurationRecord");return}this._pendingVideoInitSegment&&(this._onInitSegment("video",this._pendingVideoInitSegment),this._pendingVideoInitSegment=null);let i=e,n=i.frames,r,a=-1,o=-1,l=-1,d=-1,_=8,f=null,p=8+e.length,c;if(n.length>1&&(c=n.pop(),p-=c?.length||0),this._videoStashedLastFrame!=null){let T=this._videoStashedLastFrame;this._videoStashedLastFrame=null,n.unshift(T),p+=T.length}c!=null&&(this._videoStashedLastFrame=c);let x=this._videoMeta.codecType===5,u=n[0].dts-this._dtsBase;if(this._videoNextDts!==1/0)r=u-this._videoNextDts;else if(this._videoSegmentInfoList.isEmpty())r=0;else{let T=this._videoSegmentInfoList.getLastFrameBefore(u);if(T!=null){let C=u-(T.originalDts+T.duration);C<=3&&(C=0);let v=T.dts+T.duration+C;r=u-v}else r=0}let m=new Me,g=[],b=0;for(let T=0;T<n.length;T++){let C=n[T],v=C.dts-this._dtsBase,D=C.isKeyframe,S=v-r,P=x?0:C.cts,X=S+P;a===-1&&(a=S,l=X);let Z=0;if(T!==n.length-1?Z=n[T+1].dts-this._dtsBase-r-S:c!=null?Z=c.dts-this._dtsBase-r-S:g.length>=1?Z=g[g.length-1].duration:Z=Math.floor(this._videoMeta.refFrameDuration),D){let Y=new he(S,X,Z,C.dts,!0);Y.fileposition=C.fileposition,m.appendSyncPoint(Y)}let Q=C.units,q=C.length;if(x){let Y=0;Q=C.units.map(ie=>{let V=fe.stripLeadingObuFraming(ie.data);return Y+=V.byteLength,{type:ie.type,data:V}}),q=Y,b+=Y}g.push({dts:S,pts:X,cts:P,units:Q,size:q,isKeyframe:D,duration:Z,originalDts:v,flags:{isLeading:0,dependsOn:D?2:1,isDependedOn:D?1:0,hasRedundancy:0,isNonSync:D?0:1}})}x&&(p=8+b),f=new Uint8Array(p),f[0]=p>>>24&255,f[1]=p>>>16&255,f[2]=p>>>8&255,f[3]=p&255,f.set(He.types.mdat,4);for(let T=0;T<g.length;T++){let C=g[T].units;for(;C.length;){let D=C.shift().data;f.set(D,_),_+=D.byteLength}}let y=g[g.length-1];if(o=y.dts+y.duration,d=y.pts+y.duration,this._videoNextDts=o,m.beginDts=a,m.endDts=o,m.beginPts=l,m.endPts=d,m.originalBeginDts=g[0].originalDts,m.originalEndDts=y.originalDts+y.duration,m.firstFrame=new he(g[0].dts,g[0].pts,g[0].duration,g[0].originalDts,g[0].isKeyframe),m.lastFrame=new he(y.dts,y.pts,y.duration,y.originalDts,y.isKeyframe),this._isLive||this._videoSegmentInfoList.append(m),i.frames=g,i.sequenceNumber++,this._forceFirstIDR){let T=g[0].flags;T.dependsOn=2,T.isNonSync=0}let k=He.moof({...i,id:this._getMp4TrackId("video",i.id)},a);i.frames=[],i.length=0;let M={kind:1,type:"video",data:new Uint8Array(this._mergeBoxes(k,f).buffer),frameCount:g.length,info:m};this._onMediaSegment("video",M)}_mergeBoxes(e,t){let i=new Uint8Array(e.byteLength+t.byteLength);return i.set(e,0),i.set(t,e.byteLength),i}},Ci=Ei;var Ot=0;function Ue(s){return new TextEncoder().encode(s)}function Tn(s){let e=new ArrayBuffer(8);return new DataView(e).setFloat64(0,s,!1),new Uint8Array(e)}function Se(s){return s<=255?O(s,1):s<=65535?O(s,2):s<=16777215?O(s,3):O(s,4)}function O(s,e){let t=new Uint8Array(e);for(let i=e-1;i>=0;i--)t[i]=s&255,s>>=8;return t}function Fn(s){h.a(Fe.TAG,`writeVint assert failed: value of ${s} > 0xFFFFFFF`,s>=0&&s<=4294967295);let e=0,t=s+1;do e++;while((t>>>=7)>0&&e<8);let i=new Uint8Array(e);t=s|1<<e*7;for(let n=e-1,r=0;n>=0;n--,r++)i[r]=t>>n*8&255;return i}function R(s,e){let t=Se(s),i=Fn(e.length);return U([t,i,e])}function U(s){let e=s.reduce((n,r)=>n+r.length,0),t=new Uint8Array(e),i=0;for(let n of s)t.set(n,i),i+=n.length;return t}function Ln(s){switch(s){case 4:return"V_VP9";case 5:return"V_AV1";default:return h.a(Fe.TAG,`GetCodecId(): Unsupported codec ${Ut[s]}`),""}}function Dn(s){let e=Number(s.profile),t=Number(s.level),i=s.bitDepth,n=s.chromaFormat;return U([[1,e],[2,t],[3,i],[4,n]].map(([a,o])=>new Uint8Array([a,1,o&255])))}function Bn(s){let e=[];if(Number.isFinite(s.matrixCoefficients)&&e.push(R(21937,Se(s.matrixCoefficients))),Number.isFinite(s.bitDepth)&&e.push(R(21938,Se(s.bitDepth))),Number.isFinite(s.colorRange)){let t=s.colorRange>0?2:1;e.push(R(21945,Se(t)))}return Number.isFinite(s.transferCharacteristics)&&e.push(R(21946,Se(s.transferCharacteristics))),Number.isFinite(s.colourPrimaries)&&e.push(R(21947,Se(s.colourPrimaries))),e.length===0?null:R(21936,U(e))}var Fe=class s{static TAG="WebMGenerator";static generateVideoInitSegment(e){let t=e.codecWidth,i=e.codecHeight,n=e.codecConfig,r=e.codecType===4?Dn(e):n,a=Bn(e);if(!r)return h.e(s.TAG,"generateVideoInitSegment(): Missing codec configuration for video track"),new Uint8Array(0);let o=R(440786851,U([R(17030,O(1,1)),R(17143,O(1,1)),R(17138,O(4,1)),R(17139,O(8,1)),R(17026,Ue("webm")),R(17031,O(2,1)),R(17029,O(2,1))])),l=R(357149030,U([R(2807729,O(1e6,3)),R(19840,Ue("e-remux")),R(22337,Ue("e-remux"))])),d=[R(176,O(t,2)),R(186,O(i,2)),...a?[a]:[]],_=R(174,U([R(215,O(1,1)),R(29637,O(1,1)),R(131,O(1,1)),R(134,Ue(Ln(e.codecType))),R(25506,r),R(224,U(d))])),f=R(374648427,U([_])),p=U([l,f]),c=new Uint8Array([24,83,128,103,255]),x=U([c,p]);return U([o,x])}static generateAudioInitSegment(e){let t=e.codecConfig,i=e.codec,n=i==="opus",r=n?48e3:e.audioSampleRate,a=e.channelCount,o=Math.round(e.preSkipSamples*(1e9/r)),l=8e7;if(!t)return h.e(s.TAG,"generateAudioInitSegment(): Missing codec configuration for audio track"),new Uint8Array(0);let d;switch(i){case"opus":d="A_OPUS";break;case"vorbis":d="A_VORBIS";break;default:return h.w(s.TAG,`generateAudioInitSegment: Unsupported codec ${i}`),new Uint8Array}let _=R(440786851,U([R(17030,O(1,1)),R(17143,O(1,1)),R(17138,O(4,1)),R(17139,O(8,1)),R(17026,Ue("webm")),R(17031,O(2,1)),R(17029,O(2,1))])),f=R(357149030,U([R(2807729,O(1e6,3)),R(19840,Ue("e-remux")),R(22337,Ue("e-remux"))])),p=R(174,U([R(215,O(2,1)),R(29637,O(2,1)),R(131,O(2,1)),R(134,Ue(d)),R(25506,t),...n?[R(22186,Se(o)),R(22203,Se(l))]:[],R(225,U([R(181,Tn(r)),R(159,O(a,1))]))])),c=R(374648427,U([p])),x=U([f,c]),u=new Uint8Array([24,83,128,103,255]),m=U([u,x]),g=U([_,m]);return h.v(s.TAG,`generateAudioInitSegment() codec=${i}, sampleRate=${r}, channels=${a}, codecConfig.length=${t.length}`),g}static generateVideoCluster(e,t,i,n){let r=e[t].dts,a=R(231,Se(r)),o=0,l,d=e[e.length-1].dts-e[t].dts;(d<0||d>32767)&&h.w(s.TAG,`generateVideoCluster() - cluster contains blockTimecode(s) out of range; clusterDTS: ${r} dtsDelta: ${d} framesToProcess: ${e.length-t}`),e[0].isKeyframe||h.e(s.TAG,"Cluster must start with a keyframe");let _=[];for(let f=t;f<e.length;f++){let{rawData:p,dts:c,isKeyframe:x}=e[f],u=c-r;if(u<0||u>32767){o=f;break}if(f>t&&x&&h.e(s.TAG,`generateVideoCluster() - Frame at index ${f} is a keyframe but not the first frame in the cluster.`),Ot===0||Ot===2&&f<e.length-1){let g=new Uint8Array(4);g[0]=129,g[1]=u>>8&255,g[2]=u&255,g[3]=x?128:0;let b=n===5?fe.stripLeadingObuFraming(p):p,y=R(163,U([g,b]));_.push(y)}else{let g=new Uint8Array(4);g[0]=129,g[1]=u>>8&255,g[2]=u&255,g[3]=x?128:0;let b=n===5?fe.stripLeadingObuFraming(p):p,y=R(161,U([g,b])),k=R(155,O(i,4)),M=R(160,U([y,k]));_.push(M)}}if(o>0){let f=R(524531317,U([a,..._])),p=s.generateVideoCluster(e,o,i,n);l=U([f,p])}else l=R(524531317,U([a,..._]));return l}static generateAudioCluster(e,t,i){let n=e[t].dts,r=R(231,Se(n)),a=0,o,l=e[e.length-1].dts-e[t].dts;(l<0||l>32767)&&h.w(s.TAG,`generateAudioCluster() - cluster contains blockTimecode(s) out of range; clusterDTS: ${n} dtsDelta: ${l} framesToProcess: ${e.length-t}`);let d=[];for(let _=t;_<e.length;_++){let{unit:f,dts:p}=e[_],c=p-n;if(c<0||c>32767){a=_;break}if(Ot===0||Ot===2&&_<e.length-1){let u=new Uint8Array(4);u[0]=130,u[1]=c>>8&255,u[2]=c&255,u[3]=0;let m=R(163,U([u,f]));d.push(m)}else{let u=new Uint8Array(3);u[0]=130,u[1]=c>>8&255,u[2]=c&255;let m=R(161,U([u,f])),g=R(155,O(i,4)),b=R(160,U([m,g]));d.push(b)}}if(a>0){let _=R(524531317,U([r,...d])),f=s.generateAudioCluster(e,a,i);o=U([_,f])}else o=R(524531317,U([r,...d]));return o}};var _t=class s extends Be{static TAG="WebMRemuxer";_dtsBase=1/0;_audioDtsBase=1/0;_videoDtsBase=1/0;_audioNextDts=1/0;_videoNextDts=1/0;_audioStashedLastFrame=null;_videoStashedLastFrame=null;_refVideoFrameDuration=33.333333333333336;_refAudioFrameDuration=20;_audioSegmentInfoList=new we("audio");_videoSegmentInfoList=new we("video");_pendingVideoFrames=[];_onInitSegment=te;_onMediaSegment=te;destroy(){this._onInitSegment=te,this._onMediaSegment=te,this.clear()}get onInitSegment(){return this._onInitSegment}set onInitSegment(e){this._onInitSegment=e}get onMediaSegment(){return this._onMediaSegment}set onMediaSegment(e){this._onMediaSegment=e}bindDataSource(e){return e.onTrackData=this._onTrackData,e.onTrackMetadata=this._onTrackMetadata,this}insertDiscontinuity(){this._audioNextDts=this._videoNextDts=1/0}clear(){this._dtsBase=1/0,this._audioDtsBase=1/0,this._videoDtsBase=1/0,this._audioNextDts=1/0,this._videoNextDts=1/0,this._videoMeta=null,this._audioMeta=null,this._audioStashedLastFrame=null,this._videoStashedLastFrame=null,this._videoSegmentInfoList.clear(),this._audioSegmentInfoList.clear(),this._pendingVideoFrames=[]}get timestampBase(){return this._dtsBase!==1/0?this._dtsBase:void 0}flushStashedFrames(){let e=this._videoStashedLastFrame,t=this._audioStashedLastFrame,i={type:"video",id:1,sequenceNumber:0,frames:[],length:0};e!=null&&(i.frames.push(e),i.length=e.length);let n={type:"audio",id:2,sequenceNumber:0,frames:[],length:0};t!=null&&(n.frames.push(t),n.length=t.length),this._videoStashedLastFrame=null,this._audioStashedLastFrame=null,this._remuxVideo(i,!0),this._remuxAudio(n,!0)}_onTrackData=(e,t)=>{h.a(s.TAG,"onMediaSegment callback must be specificed!",this._onMediaSegment),this._dtsBase===1/0&&this._calculateDtsBase(e,t),this._remuxVideo(t),this._remuxAudio(e)};_onTrackMetadata=e=>{h.a(s.TAG,"onTrackMetadata: onInitSegment callback must be specified!",this._onInitSegment);let t;if(e.type==="audio"){let n=this._audioMeta=e;this._refAudioFrameDuration=Number.isFinite(n.refFrameDuration)?n.refFrameDuration:this._refAudioFrameDuration,t=Fe.generateAudioInitSegment(n),this._isAudioMetadataDispatched=!0}else{let n=this._videoMeta=e;this._refVideoFrameDuration=Number.isFinite(n.refFrameDuration)?n.refFrameDuration:this._refVideoFrameDuration,t=Fe.generateVideoInitSegment(n),this._isVideoMetadataDispatched=!0}let i={kind:0,type:e.type,data:t,codec:`${e.codec}`,container:e.type==="audio"?"audio/webm":"video/webm",mediaDuration:e.duration};this._onInitSegment(e.type,i)};_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))}_flushPendingVideoFrames(){if(this._pendingVideoFrames.length===0)return;let e=new Me,t=this._pendingVideoFrames[0],i=this._pendingVideoFrames[this._pendingVideoFrames.length-1];if(t.isKeyframe||h.e(s.TAG,"Pending video frames must start with a keyframe"),t.isKeyframe){let a=new he(t.dts,t.pts,0,t.dts,!0);e.appendSyncPoint(a)}e.beginDts=t.dts,e.endDts=i.dts,e.beginPts=t.pts,e.endPts=i.pts,e.originalBeginDts=t.dts,e.originalEndDts=i.dts,e.firstFrame=new he(t.dts,t.pts,0,t.dts,t.isKeyframe),e.lastFrame=new he(i.dts,i.pts,0,i.dts,i.isKeyframe);let n=Fe.generateVideoCluster(this._pendingVideoFrames,0,this._refVideoFrameDuration,this._videoMeta.codecType),r={kind:1,type:"video",data:n,frameCount:this._pendingVideoFrames.length,info:e};this._onMediaSegment("video",r),this._pendingVideoFrames=[]}_remuxVideo(e,t=!1){if(!(e.frames.length===0&&!t)){if(!this.isVideoMetadataDispatched){h.w(s.TAG,"_remuxVideo: VideoData received before CodecConfigurationRecord");return}for(let i of e.frames)i.isKeyframe&&(this._flushPendingVideoFrames(),e.sequenceNumber++),this._pendingVideoFrames.push(i);t&&this._flushPendingVideoFrames(),e.frames=[],e.length=0}}_remuxAudio(e,t=!1){if(e.frames.length===0)return;if(!this._isAudioMetadataDispatched){h.w(s.TAG,"_remuxAudio: AudioData received before CodecConfigurationRecord");return}let i=e,n=i.frames,r=-1,a=-1;if(n.length===1&&!t)return;let o;if(n.length>1&&(o=n.pop()),this._audioStashedLastFrame!=null){let p=this._audioStashedLastFrame;this._audioStashedLastFrame=null,n.unshift(p)}if(o!=null&&(this._audioStashedLastFrame=o),n.length===0)return;let l=n[0].dts-this._dtsBase;if(this._audioNextDts!==1/0){let p=l-this._audioNextDts;for(let c=0;c<n.length;c++)n[c].dts=n[c].dts-p}else this._audioNextDts=l;r=n[0].dts,a=n[n.length-1].dts,this._audioNextDts=a+this._refAudioFrameDuration;let d=Fe.generateAudioCluster(n,0,this._refAudioFrameDuration),_=new Me;_.beginDts=r,_.endDts=a,_.beginPts=r,_.endPts=a,_.originalBeginDts=l,_.originalEndDts=n[n.length-1].dts-this._dtsBase,_.firstFrame=new he(r,r,this._refAudioFrameDuration,n[0].length,!1),_.lastFrame=new he(a,a,this._refAudioFrameDuration,n[n.length-1].length,!1),this._audioSegmentInfoList.append(_);let f={kind:1,type:"audio",data:d,frameCount:n.length,info:_};this._onMediaSegment&&this._onMediaSegment("audio",f),i.frames=[],i.length=0}};var Ri=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}},Nt=Ri;var F={kIdle:0,kConnecting:1,kBuffering:2,kError:3,kComplete:4},B={OK:"OK",EXCEPTION:"Exception",HTTP_STATUS_CODE_INVALID:"HttpStatusCodeInvalid",CONNECTING_TIMEOUT:"ConnectingTimeout",EARLY_EOF:"EarlyEof",UNRECOVERABLE_EARLY_EOF:"UnrecoverableEarlyEof"},ce=class{constructor(e){this._type=e||"undefined",this._status=F.kIdle,this._needStash=!1,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null}destroy(){this._status=F.kIdle,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null}isWorking(){return this._status===F.kConnecting||this._status===F.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 st("Unimplemented abstract function!")}abort(){throw new st("Unimplemented abstract function!")}};var ki=class extends ce{static isSupported(){try{let e=G.msedge&&G.version.minor>=15048,t=G.msedge?e:!0;return self.fetch&&self.ReadableStream&&t}catch{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 n=this._seekHandler.getConfig(i,t),r=new self.Headers;if(typeof n.headers=="object"){let o=n.headers;for(let l in o)o.hasOwnProperty(l)&&r.append(l,o[l])}let a={method:"GET",headers:r,mode:"cors",cache:"default",referrerPolicy:"no-referrer-when-downgrade"};if(typeof this._config.headers=="object")for(let o in this._config.headers)r.append(o,this._config.headers[o]);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=F.kConnecting,self.fetch(n.url,a).then(o=>{if(this._requestAbort){this._status=F.kIdle,o.body.cancel();return}if(o.ok&&o.status>=200&&o.status<=299){if(o.url!==n.url&&this._onURLRedirect){let d=this._seekHandler.removeURLParameters(o.url);this._onURLRedirect(d)}let l=o.headers.get("Content-Length");return l!=null&&(this._contentLength=parseInt(l),this._contentLength!==0&&this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)),this._pump.call(this,o.body.getReader())}else if(this._status=F.kError,this._onError)this._onError(B.HTTP_STATUS_CODE_INVALID,{code:o.status,msg:o.statusText});else throw new W("FetchStreamLoader: Http code invalid, "+o.status+" "+o.statusText)}).catch(o=>{if(!(this._abortController&&this._abortController.signal.aborted))if(this._status=F.kError,this._onError)this._onError(B.EXCEPTION,{code:-1,msg:o.message});else throw o})}abort(){if(this._requestAbort=!0,(this._status!==F.kBuffering||!G.chrome)&&this._abortController)try{this._abortController.abort()}catch{}}_pump(e){return e.read().then(t=>{if(t.done)if(this._contentLength!==null&&this._receivedLength<this._contentLength){this._status=F.kError;let i=B.EARLY_EOF,n={code:-1,msg:"Fetch stream meet Early-EOF"};if(this._onError)this._onError(i,n);else throw new W(n.msg)}else this._status=F.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1);else{if(this._abortController&&this._abortController.signal.aborted){this._status=F.kComplete;return}else if(this._requestAbort===!0)return this._status=F.kComplete,e.cancel();this._status=F.kBuffering;let i=t.value.buffer,n=this._range.from+this._receivedLength;this._receivedLength+=i.byteLength,this._onDataArrival&&this._onDataArrival(i,n,this._receivedLength),this._pump(e)}}).catch(t=>{if(this._abortController&&this._abortController.signal.aborted){this._status=F.kComplete;return}if(t.code===11&&G.msedge)return;this._status=F.kError;let i=0,n=null;if((t.code===19||t.message==="network error")&&(this._contentLength===null||this._contentLength!==null&&this._receivedLength<this._contentLength)?(i=B.EARLY_EOF,n={code:t.code,msg:"Fetch stream meet Early-EOF"}):(i=B.EXCEPTION,n={code:t.code,msg:t.message}),this._onError)this._onError(i,n);else throw new W(n.msg)})}},Ti=ki;var Fi=class extends ce{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 h.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 n=this._seekHandler.getConfig(i,t);this._requestURL=n.url;let r=this._xhr=new XMLHttpRequest;if(r.open("GET",n.url,!0),r.responseType="moz-chunked-arraybuffer",r.onreadystatechange=this._onReadyStateChange.bind(this),r.onprogress=this._onProgress.bind(this),r.onloadend=this._onLoadEnd.bind(this),r.onerror=this._onXhrError.bind(this),e.withCredentials&&(r.withCredentials=!0),typeof n.headers=="object"){let a=n.headers;for(let o in a)a.hasOwnProperty(o)&&r.setRequestHeader(o,a[o])}if(typeof this._config.headers=="object"){let a=this._config.headers;for(let o in a)a.hasOwnProperty(o)&&r.setRequestHeader(o,a[o])}this._status=F.kConnecting,r.send()}abort(){this._requestAbort=!0,this._xhr&&this._xhr.abort(),this._status=F.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=F.kError,this._onError)this._onError(B.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText});else throw new W("MozChunkedLoader: Http code invalid, "+t.status+" "+t.statusText);else this._status=F.kBuffering}}_onProgress(e){if(this._status===F.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===F.kError)return;this._status=F.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1)}_onXhrError(e){this._status=F.kError;let t=0,i=null;if(this._contentLength&&e.loaded<this._contentLength?(t=B.EARLY_EOF,i={code:-1,msg:"Moz-Chunked stream meet Early-Eof"}):(t=B.EXCEPTION,i={code:-1,msg:e.constructor.name+" "+e.type}),this._onError)this._onError(t,i);else throw new W(i.msg)}},Li=Fi;var Di=class extends ce{static isSupported(){try{let e=new XMLHttpRequest;return e.open("GET","https://example.com",!0),e.responseType="arraybuffer",e.responseType==="arraybuffer"}catch(e){return h.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 Nt,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=F.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 n=this._seekHandler.getConfig(i,t);this._currentRequestURL=n.url;let r=this._xhr=new XMLHttpRequest;if(r.open("GET",n.url,!0),r.responseType="arraybuffer",r.onreadystatechange=this._onReadyStateChange.bind(this),r.onprogress=this._onProgress.bind(this),r.onload=this._onLoad.bind(this),r.onerror=this._onXhrError.bind(this),e.withCredentials&&(r.withCredentials=!0),typeof n.headers=="object"){let a=n.headers;for(let o in a)a.hasOwnProperty(o)&&r.setRequestHeader(o,a[o])}if(typeof this._config.headers=="object"){let a=this._config.headers;for(let o in a)a.hasOwnProperty(o)&&r.setRequestHeader(o,a[o])}r.send()}abort(){this._requestAbort=!0,this._internalAbort(),this._status=F.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=F.kBuffering}else if(this._status=F.kError,this._onError)this._onError(B.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText});else throw new W("RangeLoader: Http code invalid, "+t.status+" "+t.statusText)}}_onProgress(e){if(this._status===F.kError)return;if(this._contentLength===null){let i=!1;if(this._waitForTotalLength){this._waitForTotalLength=!1,this._totalLengthReceived=!0,i=!0;let n=e.total;this._internalAbort(),n!=null&n!==0&&(this._totalLength=n)}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,n=0,r=0,a=i;if(e<t[0])return t[0];for(;r<=a;){if(n=r+Math.floor((a-r)/2),n===i||e>=t[n]&&e<t[n+1])return t[n];t[n]<e?r=n+1:a=n-1}}_onLoad(e){if(this._status===F.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,n=this._range.from+this._receivedLength;this._receivedLength+=i.byteLength;let r=!1;this._contentLength!=null&&this._receivedLength<this._contentLength?this._openSubRange():r=!0,this._onDataArrival&&this._onDataArrival(i,n,this._receivedLength),r&&(this._status=F.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1))}_onXhrError(e){this._status=F.kError;let t=0,i=null;if(this._contentLength&&this._receivedLength>0&&this._receivedLength<this._contentLength?(t=B.EARLY_EOF,i={code:-1,msg:"RangeLoader meet Early-Eof"}):(t=B.EXCEPTION,i={code:-1,msg:e.constructor.name+" "+e.type}),this._onError)this._onError(t,i);else throw new W(i.msg)}},Ht=Di;var Bi=class extends ce{static isSupported(){try{return typeof self.WebSocket<"u"}catch{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=F.kConnecting}catch(t){this._status=F.kError;let i={code:t.code,msg:t.message};if(this._onError)this._onError(B.EXCEPTION,i);else throw new W(i.msg)}}abort(){let e=this._ws;e&&(e.readyState===0||e.readyState===1)&&(this._requestAbort=!0,e.close()),this._ws=null,this._status=F.kComplete}_onWebSocketOpen(e){this._status=F.kBuffering}_onWebSocketClose(e){if(this._requestAbort===!0){this._requestAbort=!1;return}this._status=F.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=F.kError;let t={code:-1,msg:"Unsupported WebSocket message type: "+e.data.constructor.name};if(this._onError)this._onError(B.EXCEPTION,t);else throw new W(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=F.kError;let t={code:e.code,msg:e.message};if(this._onError)this._onError(B.EXCEPTION,t);else throw new W(t.msg)}},Tr=Bi;var Mi=class{constructor(e){this._zeroStart=e||!1}getConfig(e,t){let i={};if(t.from!==0||t.to!==-1){let n;t.to!==-1?n=`bytes=${t.from.toString()}-${t.to.toString()}`:n=`bytes=${t.from.toString()}-`,i.Range=n}else this._zeroStart&&(i.Range="bytes=0-");return{url:e,headers:i}}removeURLParameters(e){return e}},Fr=Mi;var wi=class{constructor(e,t){this._startName=e,this._endName=t}getConfig(e,t){let i=e;if(t.from!==0||t.to!==-1){let n=!0;i.indexOf("?")===-1&&(i+="?",n=!1),n&&(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,n=e.indexOf("?");n!==-1&&(i=e.substring(n+1));let r="";if(i!=null&&i.length>0){let a=i.split("&");for(let o=0;o<a.length;o++){let l=a[o].split("="),d=o>0;l[0]!==this._startName&&l[0]!==this._endName&&(d&&(r+="&"),r+=a[o])}}return r.length===0?t:t+"?"+r}},Lr=wi;var Ii=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 Nt,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===Ht?this._loader.currentSpeed:this._speedSampler.lastSecondKBps}get loaderType(){return this._loader.type}_selectSeekHandler(){let e=this._config;if(e.seekType==="range")this._seekHandler=new Fr(this._config.rangeLoadZeroStart);else if(e.seekType==="param"){let t=e.seekParamStart||"bstart",i=e.seekParamEnd||"bend";this._seekHandler=new Lr(t,i)}else if(e.seekType==="custom"){if(typeof e.customSeekHandler!="function")throw new se("Custom seekType specified in config but invalid customSeekHandler!");this._seekHandler=new e.customSeekHandler}else throw new se(`Invalid seekType in config: ${e.seekType}`)}_selectLoader(){if(this._config.customLoader!=null)this._loaderClass=this._config.customLoader;else if(this._isWebSocketURL)this._loaderClass=Tr;else if(Ti.isSupported())this._loaderClass=Ti;else if(Li.isSupported())this._loaderClass=Li;else if(Ht.isSupported())this._loaderClass=Ht;else throw new W("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 se("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 n=new Uint8Array(this._stashBuffer,0,this._stashUsed);new Uint8Array(i,0,t).set(n,0)}this._stashBuffer=i,this._bufferSize=t}_normalizeSpeed(e){let t=this._speedNormalizeList,i=t.length-1,n=0,r=0,a=i;if(e<t[0])return t[0];for(;r<=a;){if(n=r+Math.floor((a-r)/2),n===i||e>=t[n]&&e<t[n+1])return t[n];t[n]<e?r=n+1:a=n-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 j("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 n=this._speedSampler.lastSecondKBps;if(n!==0){let r=this._normalizeSpeed(n);this._speedNormalized!==r&&(this._speedNormalized=r,this._adjustStashSize(r))}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 r=new Uint8Array(this._stashBuffer,0,this._bufferSize);if(this._stashUsed>0){let a=this._stashBuffer.slice(0,this._stashUsed),o=this._dispatchChunks(a,this._stashByteStart);if(o<a.byteLength){if(o>0){let l=new Uint8Array(a,o);r.set(l,0),this._stashUsed=l.byteLength,this._stashByteStart+=o}}else this._stashUsed=0,this._stashByteStart+=o;this._stashUsed+e.byteLength>this._bufferSize&&(this._expandBuffer(this._stashUsed+e.byteLength),r=new Uint8Array(this._stashBuffer,0,this._bufferSize)),r.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength}else{let a=this._dispatchChunks(e,t);if(a<e.byteLength){let o=e.byteLength-a;o>this._bufferSize&&(this._expandBuffer(o),r=new Uint8Array(this._stashBuffer,0,this._bufferSize)),r.set(new Uint8Array(e,a),0),this._stashUsed+=o,this._stashByteStart=t+a}}}else if(this._stashUsed===0){let r=this._dispatchChunks(e,t);if(r<e.byteLength){let a=e.byteLength-r;a>this._bufferSize&&this._expandBuffer(a),new Uint8Array(this._stashBuffer,0,this._bufferSize).set(new Uint8Array(e,r),0),this._stashUsed+=a,this._stashByteStart=t+r}}else{this._stashUsed+e.byteLength>this._bufferSize&&this._expandBuffer(this._stashUsed+e.byteLength);let r=new Uint8Array(this._stashBuffer,0,this._bufferSize);r.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 o=new Uint8Array(this._stashBuffer,a);r.set(o,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),n=t.byteLength-i;if(i<t.byteLength)if(e)h.w(this.TAG,`${n} bytes unconsumed data remain when flush buffer, dropped`);else{if(i>0){let r=new Uint8Array(this._stashBuffer,0,this._bufferSize),a=new Uint8Array(t,i);r.set(a,0),this._stashUsed=a.byteLength,this._stashByteStart+=i}return 0}return this._stashUsed=0,this._stashByteStart=0,n}return 0}_onLoaderComplete(e,t){this._flushStashBuffer(!0),this._onComplete&&this._onComplete(this._extraData)}_onLoaderError(e,t){switch(h.e(this.TAG,`Loader error, code = ${t.code}, msg = ${t.msg}`),this._flushStashBuffer(!1),this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,e=B.UNRECOVERABLE_EARLY_EOF),e){case B.EARLY_EOF:{if(!this._config.isLive&&this._totalLength){let i=this._currentRange.to+1;i<this._totalLength&&(h.w(this.TAG,"Connection lost, trying reconnect..."),this._isEarlyEofReconnecting=!0,this._internalSeek(i,!1));return}e=B.UNRECOVERABLE_EARLY_EOF;break}case B.UNRECOVERABLE_EARLY_EOF:case B.CONNECTING_TIMEOUT:case B.HTTP_STATUS_CODE_INVALID:case B.EXCEPTION:break}if(this._onError)this._onError(e,t);else throw new W("IOException: "+t.msg)}},ht=Ii;var Dr=(y=>(y.IO_ERROR="io_error",y.DEMUX_ERROR="demux_error",y.INIT_SEGMENT="init_segment",y.MEDIA_SEGMENT="media_segment",y.LOADING_COMPLETE="loading_complete",y.RECOVERED_EARLY_EOF="recovered_early_eof",y.MEDIA_INFO="media_info",y.METADATA_ARRIVED="metadata_arrived",y.SCRIPTDATA_ARRIVED="scriptdata_arrived",y.TIMED_ID3_METADATA_ARRIVED="timed_id3_metadata_arrived",y.PGS_SUBTITLE_ARRIVED="pgs_subtitle_arrived",y.SYNCHRONOUS_KLV_METADATA_ARRIVED="synchronous_klv_metadata_arrived",y.ASYNCHRONOUS_KLV_METADATA_ARRIVED="asynchronous_klv_metadata_arrived",y.SMPTE2038_METADATA_ARRIVED="smpte2038_metadata_arrived",y.SCTE35_METADATA_ARRIVED="scte35_metadata_arrived",y.PES_PRIVATE_DATA_DESCRIPTOR="pes_private_data_descriptor",y.PES_PRIVATE_DATA_ARRIVED="pes_private_data_arrived",y.STATISTICS_INFO="statistics_info",y.RECOMMEND_SEEKPOINT="recommend_seekpoint",y))(Dr||{}),A=Dr;var Ui=class{TAG="TransmuxingController";_emitter=new ne;_config;_mediaDataSource;_currentSegmentIndex=0;_remuxer;_demuxer=null;_mediaInfo=null;_ioctl=null;_pendingSeekTime=null;_pendingResolveSeekPoint=null;_statisticsReporter=null;constructor(e,t){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._mediaDataSource.useWebM?this._remuxer=new _t(t):this._remuxer=new Ci(t);let i=0;this._mediaDataSource.segments.forEach(n=>{n.timestampBase=i,i+=n.duration,n.cors=e.cors,n.withCredentials=e.withCredentials,t.referrerPolicy&&(n.referrerPolicy=t.referrerPolicy)}),!isNaN(i)&&this._mediaDataSource.duration!==i&&(this._mediaDataSource.duration=i)}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._remuxer&&this._remuxer.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],n=this._ioctl=new ht(i,this._config,e);n.onError=this._onIOException.bind(this),n.onSeeked=this._onIOSeeked.bind(this),n.onComplete=this._onIOComplete.bind(this),n.onRedirect=this._onIORedirect.bind(this),n.onRecoveredEarlyEof=this._onIORecoveredEarlyEof.bind(this),t?this._demuxer.bindDataSource(this._ioctl):n.onDataArrival=this._onInitChunkArrival.bind(this),n.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 n=i.getNearestKeyframe(e);this._remuxer.clear(),this._ioctl.seek(n.fileposition),this._pendingResolveSeekPoint=n.milliseconds}}else{let i=this._mediaInfo.segments[t];if(i==null)this._pendingSeekTime=e,this._internalAbort(),this._remuxer.clear(),this._remuxer.insertDiscontinuity(),this._loadSegment(t);else{let n=i.getNearestKeyframe(e);this._internalAbort(),this._remuxer.clear(),this._remuxer.insertDiscontinuity(),this._demuxer.resetMediaInfo(),this._demuxer.timestampBase=this._mediaDataSource.segments[t].timestampBase,this._loadSegment(t,n.fileposition),this._pendingResolveSeekPoint=n.milliseconds,this._reportSegmentMediaInfo(t)}}this._enableStatisticsReporter()}_searchSegmentIndexContains(e){let t=this._mediaDataSource.segments,i=t.length-1;for(let n=0;n<t.length;n++)if(e<t[n].timestampBase){i=n-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 n=Qe.probe(e);"match"in n&&n.match?(this._setupFLVDemuxerRemuxer(n),i=this._demuxer.parseChunks(e,t)):"needMoreData"in n&&n.needMoreData||(h.e(this.TAG,"Non MPEG-TS/FLV, Unsupported media type!"),Promise.resolve().then(()=>{this._internalAbort()}),this._emitter.emit(A.DEMUX_ERROR,w.FORMAT_UNSUPPORTED,"Non MPEG-TS/FLV, Unsupported media type!"))}return i}_setupFLVDemuxerRemuxer(e){this._remuxer||(this._mediaDataSource.useWebM?this._remuxer=new _t(this._config):this._remuxer=new Ci(this._config)),this._demuxer=new Qe(e,this._config,this._remuxer);let t=this._mediaDataSource;t.duration!=null&&!isNaN(t.duration)&&(this._demuxer.overridedDuration=t.duration),typeof t.hasAudio=="boolean"&&(this._demuxer.overridedHasAudio=t.hasAudio),typeof t.hasVideo=="boolean"&&(this._demuxer.overridedHasVideo=t.hasVideo),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._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl)),this._remuxer.onInitSegment=this._onRemuxerInitSegmentArrival.bind(this),this._remuxer.onMediaSegment=this._onRemuxerMediaSegmentArrival.bind(this)}_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,ge.prototype));let t=Object.assign({},e);Object.setPrototypeOf(t,ge.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(A.METADATA_ARRIVED,e)}_onScriptData(e){this._emitter.emit(A.SCRIPTDATA_ARRIVED,e)}_onTimedID3Metadata(e){let t=this._remuxer.timestampBase;t!=null&&(e.pts!=null&&(e.pts-=t),e.dts!=null&&(e.dts-=t),this._emitter.emit(A.TIMED_ID3_METADATA_ARRIVED,e))}_onPGSSubtitle(e){let t=this._remuxer.timestampBase;t!=null&&(e.pts!=null&&(e.pts-=t),e.dts!=null&&(e.dts-=t),this._emitter.emit(A.PGS_SUBTITLE_ARRIVED,e))}_onSynchronousKLVMetadata(e){let t=this._remuxer.timestampBase;t!=null&&(e.pts!=null&&(e.pts-=t),e.dts!=null&&(e.dts-=t),this._emitter.emit(A.SYNCHRONOUS_KLV_METADATA_ARRIVED,e))}_onAsynchronousKLVMetadata(e){this._emitter.emit(A.ASYNCHRONOUS_KLV_METADATA_ARRIVED,e)}_onSMPTE2038Metadata(e){let t=this._remuxer.timestampBase;t!=null&&(e.pts!=null&&(e.pts-=t),e.dts!=null&&(e.dts-=t),e.nearest_pts!=null&&(e.nearest_pts-=t),this._emitter.emit(A.SMPTE2038_METADATA_ARRIVED,e))}_onSCTE35Metadata(e){let t=this._remuxer.timestampBase;t!=null&&(e.pts!=null&&(e.pts-=t),e.nearest_pts!=null&&(e.nearest_pts-=t),this._emitter.emit(A.SCTE35_METADATA_ARRIVED,e))}_onPESPrivateDataDescriptor(e){this._emitter.emit(A.PES_PRIVATE_DATA_DESCRIPTOR,e)}_onPESPrivateData(e){let t=this._remuxer.timestampBase;t!=null&&(e.pts!=null&&(e.pts-=t),e.nearest_pts!=null&&(e.nearest_pts-=t),e.dts!=null&&(e.dts-=t),this._emitter.emit(A.PES_PRIVATE_DATA_ARRIVED,e))}_onIOSeeked(){this._remuxer.insertDiscontinuity()}_onIOComplete(e){let i=e+1;i<this._mediaDataSource.segments.length?(this._internalAbort(),this._remuxer&&this._remuxer.flushStashedFrames(),this._loadSegment(i)):(this._remuxer&&this._remuxer.flushStashedFrames(),this._emitter.emit(A.LOADING_COMPLETE),this._disableStatisticsReporter())}_onIORedirect(e){let t=this._ioctl.extraData;this._mediaDataSource.segments[t].redirectedURL=e}_onIORecoveredEarlyEof(){this._emitter.emit(A.RECOVERED_EARLY_EOF)}_onIOException(e,t){h.e(this.TAG,`IOException: type = ${e}, code = ${t.code}, msg = ${t.msg}`),this._emitter.emit(A.IO_ERROR,e,t),this._disableStatisticsReporter()}_onDemuxException(e,t){h.e(this.TAG,`DemuxException: type = ${e}, info = ${t}`),this._emitter.emit(A.DEMUX_ERROR,e,t)}_onRemuxerInitSegmentArrival(e,t){this._emitter.emit(A.INIT_SEGMENT,e,t)}_onRemuxerMediaSegmentArrival(e,t){if(this._pendingSeekTime==null&&(this._emitter.emit(A.MEDIA_SEGMENT,e,t),this._pendingResolveSeekPoint!=null&&e==="video")){let i=t.info.syncPoints,n=this._pendingResolveSeekPoint;this._pendingResolveSeekPoint=null,G.safari&&i.length>0&&i[0].originalDts===n&&(n=i[0].pts),this._emitter.emit(A.RECOMMEND_SEEKPOINT,n)}}_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){let t=this._mediaInfo,i=t?.segments?.[e];if(!i)return;let{keyframesIndex:n,segments:r,...a}=i,o={...a,duration:t.duration,segmentCount:t.segmentCount};this._emitter.emit(A.MEDIA_INFO,o)}_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(A.STATISTICS_INFO,e)}},Vi=Ui;var Mn={},Pi=class{constructor(e,t){if(this.TAG="Transmuxer",this._emitter=new ne,t.enableWorker&&typeof Worker<"u")try{this._worker=new Worker(new URL("./transmuxing-worker.js",Mn.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)},ve.registerListener(this.e.onLoggingConfigChanged),this._worker.postMessage({cmd:"logging_config",param:ve.getConfig()})}catch{h.e(this.TAG,"Error while initialize transmuxing worker, fallback to inline transmuxing"),this._worker=null,this._controller=new Vi(e,t)}else this._controller=new Vi(e,t);if(this._controller){let i=this._controller;i.on(A.IO_ERROR,this._onIOError.bind(this)),i.on(A.DEMUX_ERROR,this._onDemuxError.bind(this)),i.on(A.INIT_SEGMENT,this._onInitSegment.bind(this)),i.on(A.MEDIA_SEGMENT,this._onMediaSegment.bind(this)),i.on(A.LOADING_COMPLETE,this._onLoadingComplete.bind(this)),i.on(A.RECOVERED_EARLY_EOF,this._onRecoveredEarlyEof.bind(this)),i.on(A.MEDIA_INFO,this._onMediaInfo.bind(this)),i.on(A.METADATA_ARRIVED,this._onScriptMetadata.bind(this)),i.on(A.SCRIPTDATA_ARRIVED,this._onScriptData.bind(this)),i.on(A.TIMED_ID3_METADATA_ARRIVED,this._onTimedID3MetadataArrived.bind(this)),i.on(A.SYNCHRONOUS_KLV_METADATA_ARRIVED,this._onSynchronousKLVMetadataArrived.bind(this)),i.on(A.ASYNCHRONOUS_KLV_METADATA_ARRIVED,this._onAsynchronousKLVMetadataArrived.bind(this)),i.on(A.SMPTE2038_METADATA_ARRIVED,this._onSMPTE2038MetadataArrived.bind(this)),i.on(A.SCTE35_METADATA_ARRIVED,this._onSCTE35MetadataArrived.bind(this)),i.on(A.PES_PRIVATE_DATA_DESCRIPTOR,this._onPESPrivateDataDescriptor.bind(this)),i.on(A.PES_PRIVATE_DATA_ARRIVED,this._onPESPrivateDataArrived.bind(this)),i.on(A.STATISTICS_INFO,this._onStatisticsInfo.bind(this)),i.on(A.RECOMMEND_SEEKPOINT,this._onRecommendSeekpoint.bind(this))}}destroy(){this._worker?this._workerDestroying||(this._workerDestroying=!0,this._worker.postMessage({cmd:"destroy"}),ve.removeListener(this.e.onLoggingConfigChanged),this.e=null):(this._controller.destroy(),this._controller=null),this._emitter.removeAllListeners(),this._emitter=null}on(e,t){this._emitter.addListener(e,t)}off(e,t){this._emitter.removeListener(e,t)}hasWorker(){return this._worker!=null}open(){this._worker?this._worker.postMessage({cmd:"start"}):this._controller.start()}close(){this._worker?this._worker.postMessage({cmd:"stop"}):this._controller.stop()}seek(e){this._worker?this._worker.postMessage({cmd:"seek",param:e}):this._controller.seek(e)}pause(){this._worker?this._worker.postMessage({cmd:"pause"}):this._controller.pause()}resume(){this._worker?this._worker.postMessage({cmd:"resume"}):this._controller.resume()}_onInitSegment(e,t){Promise.resolve().then(()=>{this._emitter.emit(A.INIT_SEGMENT,e,t)})}_onMediaSegment(e,t){Promise.resolve().then(()=>{this._emitter.emit(A.MEDIA_SEGMENT,e,t)})}_onLoadingComplete(){Promise.resolve().then(()=>{this._emitter.emit(A.LOADING_COMPLETE)})}_onRecoveredEarlyEof(){Promise.resolve().then(()=>{this._emitter.emit(A.RECOVERED_EARLY_EOF)})}_onMediaInfo(e){Promise.resolve().then(()=>{this._emitter.emit(A.MEDIA_INFO,e)})}_onScriptMetadata(e){Promise.resolve().then(()=>{this._emitter.emit(A.METADATA_ARRIVED,e)})}_onScriptData(e){Promise.resolve().then(()=>{this._emitter.emit(A.SCRIPTDATA_ARRIVED,e)})}_onTimedID3MetadataArrived(e){Promise.resolve().then(()=>{this._emitter.emit(A.TIMED_ID3_METADATA_ARRIVED,e)})}_onPGSSubtitleArrived(e){Promise.resolve().then(()=>{this._emitter.emit(A.PGS_SUBTITLE_ARRIVED,e)})}_onSynchronousKLVMetadataArrived(e){Promise.resolve().then(()=>{this._emitter.emit(A.SYNCHRONOUS_KLV_METADATA_ARRIVED,e)})}_onAsynchronousKLVMetadataArrived(e){Promise.resolve().then(()=>{this._emitter.emit(A.ASYNCHRONOUS_KLV_METADATA_ARRIVED,e)})}_onSMPTE2038MetadataArrived(e){Promise.resolve().then(()=>{this._emitter.emit(A.SMPTE2038_METADATA_ARRIVED,e)})}_onSCTE35MetadataArrived(e){Promise.resolve().then(()=>{this._emitter.emit(A.SCTE35_METADATA_ARRIVED,e)})}_onPESPrivateDataDescriptor(e){Promise.resolve().then(()=>{this._emitter.emit(A.PES_PRIVATE_DATA_DESCRIPTOR,e)})}_onPESPrivateDataArrived(e){Promise.resolve().then(()=>{this._emitter.emit(A.PES_PRIVATE_DATA_ARRIVED,e)})}_onStatisticsInfo(e){Promise.resolve().then(()=>{this._emitter.emit(A.STATISTICS_INFO,e)})}_onIOError(e,t){Promise.resolve().then(()=>{this._emitter.emit(A.IO_ERROR,e,t)})}_onDemuxError(e,t){Promise.resolve().then(()=>{this._emitter.emit(A.DEMUX_ERROR,e,t)})}_onRecommendSeekpoint(e){Promise.resolve().then(()=>{this._emitter.emit(A.RECOMMEND_SEEKPOINT,e)})}_onLoggingConfigChanged(e){this._worker&&this._worker.postMessage({cmd:"logging_config",param:e})}_onWorkerMessage(e){let t=e.data,i=t.data;if(t.msg==="destroyed"||this._workerDestroying){this._workerDestroying=!1,this._worker.terminate(),this._worker=null;return}switch(t.msg){case A.INIT_SEGMENT:case A.MEDIA_SEGMENT:this._emitter.emit(t.msg,i.type,i.data);break;case A.LOADING_COMPLETE:case A.RECOVERED_EARLY_EOF:this._emitter.emit(t.msg);break;case A.MEDIA_INFO:Object.setPrototypeOf(i,ge.prototype),this._emitter.emit(t.msg,i);break;case A.METADATA_ARRIVED:case A.SCRIPTDATA_ARRIVED:case A.TIMED_ID3_METADATA_ARRIVED:case A.PGS_SUBTITLE_ARRIVED:case A.SYNCHRONOUS_KLV_METADATA_ARRIVED:case A.ASYNCHRONOUS_KLV_METADATA_ARRIVED:case A.SMPTE2038_METADATA_ARRIVED:case A.SCTE35_METADATA_ARRIVED:case A.PES_PRIVATE_DATA_DESCRIPTOR:case A.PES_PRIVATE_DATA_ARRIVED:case A.STATISTICS_INFO:this._emitter.emit(t.msg,i);break;case A.IO_ERROR:case A.DEMUX_ERROR:this._emitter.emit(t.msg,i.type,i.info);break;case A.RECOMMEND_SEEKPOINT:this._emitter.emit(t.msg,i);break;case"logcat_callback":h.emitter.emit("log",i.type,i.logcat);break;default:break}}},Br=Pi;var Ze={NETWORK_ERROR:"NetworkError",MEDIA_ERROR:"MediaError",OTHER_ERROR:"OtherError"},$t={NETWORK_EXCEPTION:B.EXCEPTION,NETWORK_STATUS_CODE_INVALID:B.HTTP_STATUS_CODE_INVALID,NETWORK_TIMEOUT:B.CONNECTING_TIMEOUT,NETWORK_UNRECOVERABLE_EARLY_EOF:B.UNRECOVERABLE_EARLY_EOF,MEDIA_MSE_ERROR:"MediaMSEError",MEDIA_FORMAT_ERROR:w.FORMAT_ERROR,MEDIA_FORMAT_UNSUPPORTED:w.FORMAT_UNSUPPORTED,MEDIA_CODEC_UNSUPPORTED:w.CODEC_UNSUPPORTED};var Ee=G,Oi=class s{TAG="SeekingHandler";_config;_media_element;_always_seek_keyframe=!1;_on_unbuffered_seek;_request_set_current_time=!1;_seek_request_record_clocktime=null;_idr_sample_list=new Pt;e=null;constructor(e,t,i){this._config=e,this._media_element=t,this._on_unbuffered_seek=i,this.e={onMediaSeeking:this._onMediaSeeking.bind(this)};let n=Ee.chrome&&(Ee.version.major<50||Ee.version.major===50&&Ee.version.build<2661);this._always_seek_keyframe=!!(n||Ee.msedge||Ee.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 n=this._media_element.buffered.start(0);(n<1&&e<n||Ee.safari)&&(i=!0,e=Ee.safari?.1:n)}if(i)this.directSeek(e);else if(t)if(!this._always_seek_keyframe)this.directSeek(e);else{let n=this._getNearestKeyframe(Math.floor(e*1e3));n!=null&&(e=n.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 n=i.start(0);if(n<1&&t<n||Ee.safari){let r=Ee.safari?.1:n;this.directSeek(r);return}}if(this._isPositionBuffered(t)){if(this._always_seek_keyframe){let n=this._getNearestKeyframe(Math.floor(t*1e3));n!=null&&(t=n.dts/1e3,this.directSeek(t))}return}this._seek_request_record_clocktime=s._getClockTime(),window.setTimeout(this._pollAndApplyUnbufferedSeek.bind(this),50)}_pollAndApplyUnbufferedSeek(){if(this._seek_request_record_clocktime==null)return;if(this._seek_request_record_clocktime<=s._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 n=t.start(i),r=t.end(i);if(e>=n&&e<r)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()}},Gt=Oi;var Ni=class s{static TAG="LoadingController";_config;_media_element;_on_pause_transmuxer;_on_resume_transmuxer;_paused=!1;e=null;_lazyLoadMaxDuration;_lazyLoadRecoverDuration;constructor(e,t,i,n){this._config=e,this._lazyLoadMaxDuration=e.lazyLoadMaxDuration,this._lazyLoadRecoverDuration=e.lazyLoadRecoverDuration,this._media_element=t,this._on_pause_transmuxer=i,this._on_resume_transmuxer=n,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),h.v(s.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 n=0;n<e.length;n++){let r=e.start(n),a=e.end(n);if(r<=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&&(h.v(s.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,n=!1;for(let r=0;r<e.length;r++){let a=e.start(r),o=e.end(r);if(t>=a&&t<o){t>=o-i&&(n=!0);break}}n&&(h.v(s.TAG,"Continue loading from paused position"),this.resumeTransmuxer(),this._media_element.removeEventListener("timeupdate",this.e.onMediaTimeUpdate))}resumeTransmuxer(){this._paused=!1,this._on_resume_transmuxer()}},qt=Ni;var Hi=class{TAG="StartupStallJumper";_media_element;_on_direct_seek;_canplay_received=!1;e=null;constructor(e,t){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)&&(h.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)}},Wt=Hi;var $i=class{_config;_media_element;_on_direct_seek;constructor(e,t,i){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 n=e.end(e.length-1);if(n>this._config.liveBufferLatencyMaxLatency&&n-t>this._config.liveBufferLatencyMaxLatency){let r=n-this._config.liveBufferLatencyMinRemain;this._on_direct_seek(r)}}},zt=$i;var Gi=class{_config=null;_media_element;e=null;constructor(e,t){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}},Kt=Gi;var qi=class{TAG="PlayerEngineMainThread";_emitter=new ne;_media_data_source;_config;_media_element=null;_mse_controller=null;_transmuxer=null;_pending_seek_time=null;_seeking_handler=null;_loading_controller=null;_startup_stall_jumper=null;_live_latency_chaser=null;_live_latency_synchronizer=null;_mse_source_opened=!1;_has_pending_load=!1;_loaded_metadata_received=!1;_media_info=null;_statistics_info=null;e=null;constructor(e,t){this._media_data_source=e,this._config={...ke(),...t,...e.isLive===!0&&{isLive:!0}},this.e={onMediaLoadedMetadata:this._onMediaLoadedMetadata.bind(this)}}destroy(){this._emitter?.emit(L.DESTROYING),this._transmuxer&&this.unload(),this._media_element&&this.detachMediaElement(),this.e=null,this._media_data_source=null,this._emitter?.removeAllListeners(),this._emitter=null}on(e,t){this._emitter?.addListener(e,t),e===L.MEDIA_INFO&&this._media_info?Promise.resolve().then(()=>this._emitter?.emit(L.MEDIA_INFO,this.mediaInfo)):e==L.STATISTICS_INFO&&this._statistics_info&&Promise.resolve().then(()=>this._emitter?.emit(L.STATISTICS_INFO,this.statisticsInfo))}off(e,t){this._emitter?.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 cr(this._config,t),this._mse_controller.on(z.UPDATE_END,this._onMSEUpdateEnd.bind(this)),this._mse_controller.on(z.BUFFER_FULL,this._onMSEBufferFull.bind(this)),this._mse_controller.on(z.QUOTA_EXCEEDED_BUFFER_FULL,this._onMSEQuotaExceededBufferFull.bind(this)),this._mse_controller.on(z.SOURCE_OPEN,this._onMSESourceOpen.bind(this)),this._mse_controller.on(z.ERROR,this._onMSEError.bind(this)),this._mse_controller.on(z.START_STREAMING,this._onMSEStartStreaming.bind(this)),this._mse_controller.on(z.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(){this._media_element&&(this._mse_controller?.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,this._mse_controller?.revokeObjectURL()),this._mse_controller&&(this._mse_controller.destroy(),this._mse_controller=null)}load(){if(!this._media_element)throw new j("HTMLMediaElement must be attached before load()!");if(this._transmuxer)throw new j("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}this._transmuxer=new Br(this._media_data_source,this._config),this._transmuxer.on(A.INIT_SEGMENT,(e,t)=>{this._mse_controller?.appendInitSegment(t)}),this._transmuxer.on(A.MEDIA_SEGMENT,(e,t)=>{this._mse_controller?.appendMediaSegment(t),!this._config.isLive&&e==="video"&&t.data&&t.data.byteLength>0&&"info"in t&&this._seeking_handler?.appendSyncPoints(t.info.syncPoints),this._loading_controller?.notifyBufferedPositionChanged(t.info.endDts/1e3)}),this._transmuxer.on(A.LOADING_COMPLETE,()=>{this._mse_controller?.endOfStream(),this._emitter?.emit(L.LOADING_COMPLETE)}),this._transmuxer.on(A.RECOVERED_EARLY_EOF,()=>{this._emitter?.emit(L.RECOVERED_EARLY_EOF)}),this._transmuxer.on(A.IO_ERROR,(e,t)=>{this._emitter?.emit(L.ERROR,Ze.NETWORK_ERROR,e,t)}),this._transmuxer.on(A.DEMUX_ERROR,(e,t)=>{this._emitter?.emit(L.ERROR,Ze.MEDIA_ERROR,e,t)}),this._transmuxer.on(A.MEDIA_INFO,e=>{this._media_info=e,this._emitter?.emit(L.MEDIA_INFO,Object.assign({},e))}),this._transmuxer.on(A.STATISTICS_INFO,e=>{this._statistics_info=this._fillStatisticsInfo(e),this._emitter?.emit(L.STATISTICS_INFO,Object.assign({},e))}),this._transmuxer.on(A.RECOMMEND_SEEKPOINT,e=>{this._media_element&&!this._config.accurateSeek&&this._seeking_handler?.directSeek(e/1e3)}),this._transmuxer.on(A.METADATA_ARRIVED,e=>{this._emitter?.emit(L.METADATA_ARRIVED,e)}),this._transmuxer.on(A.SCRIPTDATA_ARRIVED,e=>{this._emitter?.emit(L.SCRIPTDATA_ARRIVED,e)}),this._transmuxer.on(A.TIMED_ID3_METADATA_ARRIVED,e=>{this._emitter?.emit(L.TIMED_ID3_METADATA_ARRIVED,e)}),this._transmuxer.on(A.PGS_SUBTITLE_ARRIVED,e=>{this._emitter?.emit(L.PGS_SUBTITLE_ARRIVED,e)}),this._transmuxer.on(A.SYNCHRONOUS_KLV_METADATA_ARRIVED,e=>{this._emitter?.emit(L.SYNCHRONOUS_KLV_METADATA_ARRIVED,e)}),this._transmuxer.on(A.ASYNCHRONOUS_KLV_METADATA_ARRIVED,e=>{this._emitter?.emit(L.ASYNCHRONOUS_KLV_METADATA_ARRIVED,e)}),this._transmuxer.on(A.SMPTE2038_METADATA_ARRIVED,e=>{this._emitter?.emit(L.SMPTE2038_METADATA_ARRIVED,e)}),this._transmuxer.on(A.SCTE35_METADATA_ARRIVED,e=>{this._emitter?.emit(L.SCTE35_METADATA_ARRIVED,e)}),this._transmuxer.on(A.PES_PRIVATE_DATA_DESCRIPTOR,e=>{this._emitter?.emit(L.PES_PRIVATE_DATA_DESCRIPTOR,e)}),this._transmuxer.on(A.PES_PRIVATE_DATA_ARRIVED,e=>{this._emitter?.emit(L.PES_PRIVATE_DATA_ARRIVED,e)}),this._seeking_handler=new Gt(this._config,this._media_element,this._onRequiredUnbufferedSeek.bind(this)),this._loading_controller=new qt(this._config,this._media_element,this._onRequestPauseTransmuxer.bind(this),this._onRequestResumeTransmuxer.bind(this)),this._startup_stall_jumper=new Wt(this._media_element,this._onRequestDirectSeek.bind(this)),this._config.isLive&&this._config.liveBufferLatencyChasing&&(this._live_latency_chaser=new zt(this._config,this._media_element,this._onRequestDirectSeek.bind(this))),this._config.isLive&&this._config.liveSync&&(this._live_latency_synchronizer=new Kt(this._config,this._media_element)),this._media_element.readyState>0&&this._seeking_handler.directSeek(0),this._transmuxer.open()}}unload(){this._media_element?.pause(),this._live_latency_synchronizer?.destroy(),this._live_latency_synchronizer=null,this._live_latency_chaser=null,this._startup_stall_jumper?.destroy(),this._startup_stall_jumper=null,this._loading_controller?.destroy(),this._loading_controller=null,this._seeking_handler?.destroy(),this._seeking_handler=null,this._mse_controller?.flush(),this._transmuxer?.close(),this._transmuxer?.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(){this._config.isLive&&this._config.liveBufferLatencyChasing&&this._live_latency_chaser&&this._live_latency_chaser.notifyBufferedRangeUpdate(),this._loading_controller?.notifyBufferedPositionChanged()}_onMSEQuotaExceededBufferFull(e){if(h.w(this.TAG,`Quota exceeded - reducing buffer durations. Type: ${e.type}, Buffer length: ${e.currentBufferLength}, Segment size: ${e.segmentSize}`),!this._loading_controller){h.w(this.TAG,"LoadingController not available for quota adjustment");return}this._loading_controller?.adjustLazyLoadDurations(.5)}_onMSEBufferFull(){h.v(this.TAG,"MSE SourceBuffer is full, suspend transmuxing task"),this._loading_controller?.suspendTransmuxer()}_onMSEError(e){this._emitter?.emit(L.ERROR,Ze.MEDIA_ERROR,$t.MEDIA_MSE_ERROR,e)}_onMSEStartStreaming(){this._loaded_metadata_received&&(this._config.isLive||(h.v(this.TAG,"Resume transmuxing task due to ManagedMediaSource onStartStreaming"),this._loading_controller?.resumeTransmuxer()))}_onMSEEndStreaming(){this._config.isLive||(h.v(this.TAG,"Suspend transmuxing task due to ManagedMediaSource onEndStreaming"),this._loading_controller?.suspendTransmuxer())}_onMediaLoadedMetadata(e){this._loaded_metadata_received=!0,this._pending_seek_time!=null&&(this._seeking_handler?.seek(this._pending_seek_time),this._pending_seek_time=null)}_onRequestDirectSeek(e){this._seeking_handler?.directSeek(e)}_onRequiredUnbufferedSeek(e){this._mse_controller?.flush(),this._transmuxer?.seek(e)}_onRequestPauseTransmuxer(){this._transmuxer?.pause()}_onRequestResumeTransmuxer(){this._transmuxer?.resume()}_fillStatisticsInfo(e){if(e.playerType="MSEPlayer",!(this._media_element instanceof HTMLVideoElement))return e;let t=!0,i=0,n=0;if(this._media_element.getVideoPlaybackQuality){let r=this._media_element.getVideoPlaybackQuality();i=r.totalVideoFrames,n=r.droppedVideoFrames}else this._media_element.webkitDecodedFrameCount!=null?(i=this._media_element.webkitDecodedFrameCount,n=this._media_element.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=i,e.droppedFrames=n),e}},Wi=qi;var wn={},zi=class{TAG="PlayerEngineDedicatedThread";_emitter=new ne;_media_data_source;_config;_media_element=null;_worker;_worker_destroying=!1;_seeking_handler=null;_loading_controller=null;_startup_stall_jumper=null;_live_latency_chaser=null;_live_latency_synchronizer=null;_pending_seek_time=NaN;_media_info=null;_statistics_info=null;e=null;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}constructor(e,t){this._media_data_source=e,this._config=ke(),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)},ve.registerListener(this.e.onLoggingConfigChanged),this._worker=new Worker(new URL("./player-engine-worker.js",wn.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:ve.getConfig()})}destroy(){this._emitter.emit(L.DESTROYING),this.unload(),this.detachMediaElement(),this._worker_destroying=!0,this._worker?.postMessage({cmd:"destroy"}),ve.removeListener(this.e.onLoggingConfigChanged),this.e=null,this._media_data_source=null,this._emitter.removeAllListeners()}on(e,t){this._emitter.addListener(e,t),e===L.MEDIA_INFO&&this._media_info?Promise.resolve().then(()=>this._emitter.emit(L.MEDIA_INFO,this.mediaInfo)):e==L.STATISTICS_INFO&&this._statistics_info&&Promise.resolve().then(()=>this._emitter.emit(L.STATISTICS_INFO,this.statisticsInfo))}off(e,t){this._emitter.removeListener(e,t)}attachMediaElement(e){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),this._worker?.postMessage({cmd:"initialize_mse"})}detachMediaElement(){this._worker?.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(){this._worker?.postMessage({cmd:"load"}),this._seeking_handler=new Gt(this._config,this._media_element,this._onRequiredUnbufferedSeek.bind(this)),this._loading_controller=new qt(this._config,this._media_element,this._onRequestPauseTransmuxer.bind(this),this._onRequestResumeTransmuxer.bind(this)),this._startup_stall_jumper=new Wt(this._media_element,this._onRequestDirectSeek.bind(this)),this._config.isLive&&this._config.liveBufferLatencyChasing&&(this._live_latency_chaser=new zt(this._config,this._media_element,this._onRequestDirectSeek.bind(this))),this._config.isLive&&this._config.liveSync&&(this._live_latency_synchronizer=new Kt(this._config,this._media_element)),this._media_element.readyState>0&&this._seeking_handler?.directSeek(0)}unload(){this._media_element?.pause(),this._worker?.postMessage({cmd:"unload"}),this._live_latency_synchronizer?.destroy(),this._live_latency_synchronizer=null,this._live_latency_chaser=null,this._startup_stall_jumper?.destroy(),this._startup_stall_jumper=null,this._loading_controller?.destroy(),this._loading_controller=null,this._seeking_handler?.destroy(),this._seeking_handler=null}play(){return this._media_element?.play()||Promise.resolve()}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)}_onLoggingConfigChanged(e){this._worker?.postMessage({cmd:"logging_config",logging_config:e})}_onMSEUpdateEnd(){this._config.isLive&&this._config.liveBufferLatencyChasing&&this._live_latency_chaser&&this._live_latency_chaser.notifyBufferedRangeUpdate(),this._loading_controller?.notifyBufferedPositionChanged()}_onMSEBufferFull(){h.v(this.TAG,"MSE SourceBuffer is full, suspend transmuxing task"),this._loading_controller?.suspendTransmuxer()}_onMediaLoadedMetadata(e){Number.isNaN(this._pending_seek_time)||(this._seeking_handler?.seek(this._pending_seek_time),this._pending_seek_time=NaN)}_onRequestDirectSeek(e){this._seeking_handler?.directSeek(e)}_onRequiredUnbufferedSeek(e){this._worker?.postMessage({cmd:"unbuffered_seek",milliseconds:e})}_onRequestPauseTransmuxer(){this._worker?.postMessage({cmd:"pause_transmuxer"})}_onRequestResumeTransmuxer(){this._worker?.postMessage({cmd:"resume_transmuxer"})}_onMediaTimeUpdate(e){this._worker?.postMessage({cmd:"timeupdate",current_time:e.target.currentTime})}_onMediaReadyStateChange(e){this._worker?.postMessage({cmd:"readystatechange",ready_state:e.target.readyState})}_onWorkerMessage(e){let t=e.data,i=t.msg;if(i=="destroyed"||this._worker_destroying){this._worker_destroying=!1,this._worker?.terminate(),this._worker=null;return}switch(i){case"mse_init":{let n=t;"ManagedMediaSource"in self&&!("MediaSource"in self)&&(this._media_element.disableRemotePlayback=!0),this._media_element.srcObject=n.handle;break}case"mse_event":{let n=t;n.event==z.UPDATE_END?this._onMSEUpdateEnd():n.event==z.BUFFER_FULL?this._onMSEBufferFull():n.event==z.QUOTA_EXCEEDED_BUFFER_FULL&&this._onMSEQuotaExceededBufferFull(n.data);break}case"transmuxing_event":{let n=t;if(n.event==A.MEDIA_INFO){let r=t;this._media_info=r.info,this._emitter.emit(L.MEDIA_INFO,Object.assign({},r.info))}else if(n.event==A.STATISTICS_INFO){let r=t;this._statistics_info=this._fillStatisticsInfo(r.info),this._emitter.emit(L.STATISTICS_INFO,Object.assign({},r.info))}else if(n.event==A.RECOMMEND_SEEKPOINT){let r=t;this._media_element&&!this._config.accurateSeek&&this._seeking_handler?.directSeek(r.milliseconds/1e3)}break}case"player_event":{let n=t;if(n.event==L.ERROR){let r=t;this._emitter.emit(L.ERROR,r.error_type,r.error_detail,r.info)}else if("extraData"in n){let r=t;this._emitter.emit(r.event,r.extraData)}break}case"logcat_callback":{let n=t;h.emitLog(n.type,n.logcat);break}case"buffered_position_changed":{let n=t;this._loading_controller?.notifyBufferedPositionChanged(n.buffered_position_milliseconds/1e3);break}}}_onMSEQuotaExceededBufferFull(e){if(h.w(this.TAG,`Quota exceeded - reducing buffer durations. Type: ${e.type}, Buffer length: ${e.currentBufferLength}, Segment size: ${e.segmentSize}`),!this._loading_controller){h.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,n=0;if(this._media_element.getVideoPlaybackQuality){let r=this._media_element.getVideoPlaybackQuality();i=r.totalVideoFrames,n=r.droppedVideoFrames}else this._media_element.webkitDecodedFrameCount!=null?(i=this._media_element.webkitDecodedFrameCount,n=this._media_element.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=i,e.droppedFrames=n),e}},Ki=zi;var ji=class{TAG="MSEPlayer";_type="MSEPlayer";_media_element=null;_player_engine=null;constructor(e,t){let i=e.type.toLowerCase();if(i!=="mse"&&i!=="flv")throw new se("MSEPlayer requires an mse/flv MediaDataSource input!");if(t?.enableWorkerForMSE&&Ki.isSupported())try{this._player_engine=new Ki(e,t)}catch{h.e(this.TAG,"Error while initializing PlayerEngineDedicatedThread, fallback to PlayerEngineMainThread"),this._player_engine=new Wi(e,t)}else this._player_engine=new Wi(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}},ct=ji;var Yi=class s{static supportMSEH264Playback(){let e='video/mp4; codecs="avc1.42E01E,mp4a.40.2"',t=self.MediaSource&&self.MediaSource.isTypeSupported(e),i=self.ManagedMediaSource&&self.ManagedMediaSource.isTypeSupported(e);return t||i}static supportMSEH265Playback(){let e='video/mp4; codecs="hvc1.1.6.L93.B0"',t=self.MediaSource&&self.MediaSource.isTypeSupported(e),i=self.ManagedMediaSource&&self.ManagedMediaSource.isTypeSupported(e);return t||i}static supportNetworkStreamIO(){let e=new ht({},ke()),t=e.loaderType;return e.destroy(),t=="fetch-stream-loader"||t=="xhr-moz-chunked-loader"}static getNetworkLoaderTypeName(){let e=new ht({},ke()),t=e.loaderType;return e.destroy(),t}static supportNativeMediaPlayback(e){s.videoElement==null&&(s.videoElement=window.document.createElement("video"));let t=s.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=s.supportMSEH264Playback(),e.networkStreamIO=s.supportNetworkStreamIO(),e.networkLoaderName=s.getNetworkLoaderTypeName(),e.mseLivePlayback=e.msePlayback&&e.networkStreamIO,e.mseH265Playback=s.supportMSEH265Playback(),e.nativeMP4H264Playback=s.supportNativeMediaPlayback('video/mp4; codecs="avc1.42001E, mp4a.40.2"'),e.nativeMP4H265Playback=s.supportNativeMediaPlayback('video/mp4; codecs="hvc1.1.6.L93.B0"'),e.nativeWebmVP8Playback=s.supportNativeMediaPlayback('video/webm; codecs="vp8.0, vorbis"'),e.nativeWebmVP9Playback=s.supportNativeMediaPlayback('video/webm; codecs="vp9"'),e}},Xi=Yi;function In(s,e){let t=s;if(t==null||typeof t!="object")throw new se("MediaDataSource must be a javascript object!");if(!t.hasOwnProperty("type"))throw new se("MediaDataSource must has type field to indicate video file type!");switch(t.type){case"mse":case"flv":return new ct(t,e);default:return new at(t,e)}}function Un(){return Xi.supportMSEH264Playback()}function Vn(){return Xi.getFeatureList()}var Pn={createPlayer:In,isSupported:Un,getFeatureList:Vn,BaseLoader:ce,LoaderStatus:F,LoaderErrors:B,Events:L,ErrorTypes:Ze,ErrorDetails:$t,MSEPlayer:ct,NativePlayer:at,LoggingControl:ve,get version(){return"0.0.1-alpha.0"}},Mr=Pn;return Gr(On);})();
    </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 */
        .player-container {
            position: relative;
            background-color: #000000;
            border: 1px solid #1e293b;
            border-radius: 8px;
            overflow: hidden;
            aspect-ratio: 16 / 9;
            width: 100%;
        }
        video {
            width: 100%;
            height: 100%;
            object-fit: contain;
            display: block;
        }

        /* 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>
        </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>
        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>