ogplayer 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ogplayer.global.js +2 -2
- package/dist/ogplayer.js +2 -2
- package/package.json +1 -1
package/dist/ogplayer.global.js
CHANGED
|
@@ -39,7 +39,7 @@ transfer tracks: ${fe(s,(l,d)=>l==="initSegment"?void 0:d)}}`),!zo(s,i)){t.media
|
|
|
39
39
|
`)}),o.flush()}var yr="stpp.ttml.im1t",Ld=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,Rd=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,sg={left:"start",center:"center",right:"end",start:"start",end:"end"};function Do(r,e,t,i){let s=Q(new Uint8Array(r),["mdat"]);if(s.length===0){i(new Error("Could not parse IMSC1 mdat"));return}let n=s.map(o=>He(o)),a=Pu(e.baseTime,1,e.timescale);try{n.forEach(o=>t(ng(o,a)))}catch(o){i(o)}}function ng(r,e){let s=new DOMParser().parseFromString(r,"text/xml").getElementsByTagName("tt")[0];if(!s)throw new Error("Invalid ttml");let n={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},a=Object.keys(n).reduce((h,u)=>(h[u]=s.getAttribute(`ttp:${u}`)||n[u],h),{}),o=s.getAttribute("xml:space")!=="preserve",l=Co(gn(s,"styling","style")),d=Co(gn(s,"layout","region")),c=gn(s,"body","[begin]");return[].map.call(c,h=>{let u=Pd(h,o);if(!u||!h.hasAttribute("begin"))return null;let f=pn(h.getAttribute("begin"),a),g=pn(h.getAttribute("dur"),a),m=pn(h.getAttribute("end"),a);if(f===null)throw wo(h);if(m===null){if(g===null)throw wo(h);m=f+g}let p=new ha(f-e,m-e,u);p.id=ua(p.startTime,p.endTime,p.text);let v=d[h.getAttribute("region")],T=l[h.getAttribute("style")],E=rg(v,T,l),{textAlign:S}=E;if(S){let b=sg[S];b&&(p.lineAlign=b),p.align=S}return ce(p,E),p}).filter(h=>h!==null)}function gn(r,e,t){let i=r.getElementsByTagName(e)[0];return i?[].slice.call(i.querySelectorAll(t)):[]}function Co(r){return r.reduce((e,t)=>{let i=t.getAttribute("xml:id");return i&&(e[i]=t),e},{})}function Pd(r,e){return[].slice.call(r.childNodes).reduce((t,i,s)=>{var n;return i.nodeName==="br"&&s?t+`
|
|
40
40
|
`:(n=i.childNodes)!=null&&n.length?Pd(i,e):e?t+i.textContent.trim().replace(/\s+/g," "):t+i.textContent},"")}function rg(r,e,t){let i="http://www.w3.org/ns/ttml#styling",s=null,n=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],a=r!=null&&r.hasAttribute("style")?r.getAttribute("style"):null;return a&&t.hasOwnProperty(a)&&(s=t[a]),n.reduce((o,l)=>{let d=mn(e,i,l)||mn(r,i,l)||mn(s,i,l);return d&&(o[l]=d),o},{})}function mn(r,e,t){return r&&r.hasAttributeNS(e,t)?r.getAttributeNS(e,t):null}function wo(r){return new Error(`Could not parse ttml timestamp ${r}`)}function pn(r,e){if(!r)return null;let t=Ad(r);return t===null&&(Ld.test(r)?t=ag(r,e):Rd.test(r)&&(t=og(r,e))),t}function ag(r,e){let t=Ld.exec(r),i=(t[4]|0)+(t[5]|0)/e.subFrameRate;return(t[1]|0)*3600+(t[2]|0)*60+(t[3]|0)+i/e.frameRate}function og(r,e){let t=Rd.exec(r),i=Number(t[1]);switch(t[2]){case"h":return i*3600;case"m":return i*60;case"ms":return i*1e3;case"f":return i/e.frameRate;case"t":return i/e.tickRate}return i}function fa(r,e,t,i="",s="disabled"){let n=r.ownerDocument.createElement("track");return n.kind=e,n.label=t,i&&(n.srclang=i),n.src="data:,WEBVTT",n.track.mode=s,r.appendChild(n),n}function lg(r){return r.forced&&Zc()?"forced":r.characteristics&&/transcribes-spoken-dialog/gi.test(r.characteristics)&&/describes-music-and-sound/gi.test(r.characteristics)?"captions":"subtitles"}function vr(r,e){let t=r.mode;if(t==="disabled"&&(r.mode="hidden"),r.cues&&!r.cues.getCueById(e.id))try{if(r.addCue(e),!r.cues.getCueById(e.id))throw new Error(`addCue is failed for: ${e}`)}catch(i){oe.debug(`[texttrack-utils]: ${i}`);try{let s=new self.TextTrackCue(e.startTime,e.endTime,e.text);s.id=e.id,r.addCue(s)}catch(s){oe.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${s}`)}}t==="disabled"&&(r.mode=t)}function Er(r,e,t,i){let s=r.mode;if(s==="disabled"&&(r.mode="hidden"),r.cues&&r.cues.length>0){let n=cg(r.cues,e,t);for(let a=0;a<n.length;a++)(!i||i(n[a]))&&r.removeCue(n[a])}s==="disabled"&&(r.mode=s)}function dg(r,e){if(e<=r[0].startTime)return 0;let t=r.length-1;if(e>r[t].endTime)return-1;let i=0,s=t,n;for(;i<=s;)if(n=Math.floor((s+i)/2),e<r[n].startTime)s=n-1;else if(e>r[n].startTime&&i<t)i=n+1;else return n;return r[i].startTime-e<e-r[s].startTime?i:s}function cg(r,e,t){let i=[],s=dg(r,e);if(s>-1)for(let n=s,a=r.length;n<a;n++){let o=r[n];if(o.startTime>=e&&o.endTime<=t)i.push(o);else if(o.startTime>t)return i}return i}var Tr=class extends bi{constructor(e){super(e,"subtitle-track-controller"),this.media=null,this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.queuedDefaultTrack=-1,this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.asyncPollTrackChange=()=>this.pollTrackChange(0),this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let t=-1,i=!1;if(this.currentTrack){var s;let o=(s=this.currentTrack.trackNode)==null?void 0:s.track.mode;o==="showing"?(t=this.trackId,i=!0):o==="hidden"&&(t=this.trackId)}if(!i)for(let o=0;o<this.tracksInGroup.length;o++){var n;let l=(n=this.tracksInGroup[o].trackNode)==null?void 0:n.track.mode;if(l==="showing"){t=o;break}else t<0&&l==="hidden"&&(t=o)}if(t>-1){var a;this._subtitleDisplay=((a=this.tracksInGroup[t].trackNode)==null?void 0:a.track.mode)==="showing"}this.setSubtitleTrack(t,!0)},this.registerListeners()}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,this.onTextTracksChanged=this.asyncPollTrackChange=null,super.destroy()}get subtitleDisplay(){return this._subtitleDisplay}set subtitleDisplay(e){this._subtitleDisplay=e,this.trackId>-1&&this.toggleTrackModes()}registerListeners(){let{hls:e}=this;e.on(y.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(y.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(y.MANIFEST_LOADING,this.onManifestLoading,this),e.on(y.MANIFEST_PARSED,this.onManifestParsed,this),e.on(y.LEVEL_LOADING,this.onLevelLoading,this),e.on(y.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(y.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(y.ERROR,this.onError,this)}unregisterListeners(){let{hls:e}=this;e.off(y.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(y.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(y.MANIFEST_LOADING,this.onManifestLoading,this),e.off(y.MANIFEST_PARSED,this.onManifestParsed,this),e.off(y.LEVEL_LOADING,this.onLevelLoading,this),e.off(y.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(y.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(y.ERROR,this.onError,this)}createTracksInGroup(){var e;if(!this.media||!this.hls.config.renderTextTracksNatively)return;this.tracksInGroup.forEach(i=>{i.trackNode||(i.trackNode=fa(this.media,lg(i),i.name,i.lang))});let t=(e=this.currentTrack)==null||(e=e.trackNode)==null?void 0:e.track;t?.mode==="disabled"&&(t.mode=this._subtitleDisplay?"showing":"hidden")}onMediaAttached(e,t){let i=t.media;this.media=i;let s=this.trackId;this.queuedDefaultTrack>-1&&(s=this.queuedDefaultTrack,this.queuedDefaultTrack=-1),this.setSubtitleTrack(s),this.createTracksInGroup(),this.useTextTrackPolling=!(i.textTracks&&"onchange"in i.textTracks),this.useTextTrackPolling?this.pollTrackChange(500):i.textTracks.addEventListener("change",this.asyncPollTrackChange)}pollTrackChange(e){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.onTextTracksChanged,e)}onMediaDetaching(e,t){let i=this.media;if(!i)return;let s=!!t.transferMedia;self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||i.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId,this.setSubtitleTrack(-1)),this.media=null,!s&&this.hls.config.renderTextTracksNatively&&this.tracksInGroup.forEach(n=>{let a=n.trackNode;a&&(a.track.mode="hidden",a.remove(),n.trackNode=void 0)})}onManifestLoading(){this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.subtitleTracks}onSubtitleTrackLoaded(e,t){let{id:i,groupId:s,details:n}=t,a=this.tracksInGroup[i];if(!a||a.groupId!==s){this.warn(`Subtitle track with id:${i} and group:${s} not found in active group ${a?.groupId}`);return}let o=a.details;a.details=t.details,this.log(`Subtitle track ${i} "${a.name}" lang:${a.lang} group:${s} loaded [${n.startSN}-${n.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,o)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){let t=this.hls.levels[e];if(!t)return;let i=t.subtitleGroups||null,s=this.groupIds,n=this.currentTrack;if(!i||s?.length!==i?.length||i!=null&&i.some(a=>s?.indexOf(a)===-1)){this.groupIds=i;let a=[];if(this.tracks.forEach(c=>{(c.textCodec===yr?this.hls.config.enableIMSC1:this.hls.config.enableWebVTT)&&(!i||i.indexOf(c.groupId)>-1?(c.id=a.length,a.push(c)):c.trackNode&&(c.trackNode.remove(),c.trackNode=void 0))}),a.length===this.tracksInGroup.length){let c=!1;for(let h=0;h<a.length;h++)if(a[h]!==this.tracksInGroup[h]){c=!0;break}if(!c)return}a.length&&this.selectDefaultTrack&&!a.some(c=>c.default)&&(this.selectDefaultTrack=!1),this.tracksInGroup=a,this.trackId=-1,this.currentTrack=null;let o=this.hls.config.subtitlePreference;if(!n&&o){this.selectDefaultTrack=!1;let c=ot(o,a);if(c>-1)n=a[c];else{let h=ot(o,this.tracks);n=this.tracks[h]}}let l=this.findTrackId(n);l===-1&&n&&(l=this.findTrackId(null));let d={subtitleTracks:a};this.log(`Updating subtitle tracks, ${a.length} track(s) found in "${i?.join(",")}" group-id`),this.hls.trigger(y.SUBTITLE_TRACKS_UPDATED,d),this.setSubtitleTrack(l),this.createTracksInGroup()}}findTrackId(e){let t=this.tracksInGroup,i=this.selectDefaultTrack;for(let s=0;s<t.length;s++){let n=t[s];if(!(i&&!n.default||!i&&!e)&&(!e||Dt(n,e)))return s}if(e){for(let s=0;s<t.length;s++){let n=t[s];if(Ai(e.attrs,n.attrs,["LANGUAGE","ASSOC-LANGUAGE","CHARACTERISTICS"]))return s}for(let s=0;s<t.length;s++){let n=t[s];if(Ai(e.attrs,n.attrs,["LANGUAGE"]))return s}}return-1}onError(e,t){t.fatal||!t.context||t.context.type===te.SUBTITLE_TRACK&&t.context.id===this.trackId&&mi(t.context.groupId,this.groupIds)&&this.checkRetry(t)}get allSubtitleTracks(){return this.tracks}get subtitleTracks(){return this.tracksInGroup}get subtitleTrack(){return this.trackId}set subtitleTrack(e){this.selectDefaultTrack=!1,this.setSubtitleTrack(e,!0)}setSubtitleOption(e){if(this.hls.config.subtitlePreference=e,e){if(e.id===-1)return this.setSubtitleTrack(-1,!0),null;let t=this.allSubtitleTracks;if(this.selectDefaultTrack=!1,t.length){let i=this.currentTrack;if(i&&Dt(e,i))return i;let s=ot(e,this.tracksInGroup);if(s>-1){let n=this.tracksInGroup[s];return this.setSubtitleTrack(s,!0),n}else{if(i)return null;{let n=ot(e,t);if(n>-1)return t[n]}}}}return null}loadPlaylist(e){super.loadPlaylist(),this.shouldLoadPlaylist(this.currentTrack)&&this.scheduleLoading(this.currentTrack,e)}loadingPlaylist(e,t){super.loadingPlaylist(e,t);let i=e.id,s=e.groupId,n=this.getUrlWithDirectives(e.url,t),a=e.details,o=a?.age;this.log(`Loading subtitle ${i} "${e.name}" lang:${e.lang} group:${s}${t?.msn!==void 0?" at sn "+t.msn+" part "+t.part:""}${o&&a.live?" age "+o.toFixed(1)+(a.type&&" "+a.type||""):""} ${n}`),this.hls.trigger(y.SUBTITLE_TRACK_LOADING,{url:n,id:i,groupId:s,deliveryDirectives:t||null,track:e})}toggleTrackModes(){if(!this.media||!this.hls.config.renderTextTracksNatively)return;let e=this.currentTrack;this.tracksInGroup.forEach(t=>{if(t.trackNode){let i=t===e?this._subtitleDisplay?"showing":"hidden":"disabled",s=t.trackNode.track;s.mode!==i&&(s.mode=i)}})}setSubtitleTrack(e,t=!1){let i=this.tracksInGroup;if(this.media||(this.queuedDefaultTrack=e),e<-1||e>=i.length||!B(e)){this.warn(`Invalid subtitle track id: ${e}`);return}let s=this.currentTrack,n=i[e]||null;if(this.trackId=e,this.currentTrack=n,t&&this.toggleTrackModes(),!n){s&&this.hls.trigger(y.SUBTITLE_TRACK_SWITCH,{id:e});return}let a=!!n.details&&!n.details.live;if(n===s&&a)return;this.log(`Switching to subtitle-track ${e}`+(n?` "${n.name}" lang:${n.lang} group:${n.groupId}`:""));let{id:o,groupId:l="",name:d,type:c,url:h}=n;this.hls.trigger(y.SUBTITLE_TRACK_SWITCH,{id:o,groupId:l,name:d,type:c,url:h});let u=this.switchParams(n.url,s?.details,n.details);this.loadPlaylist(u)}},Qi=2,hg=100,Sr=class extends ls{constructor(e,t){super("gap-controller",e.logger),this.hls=void 0,this.fragmentTracker=void 0,this.media=null,this.mediaSource=void 0,this.nudgeRetry=0,this.skipRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.buffered={},this.lastCurrentTime=void 0,this.ended=0,this.waiting=0,this.onMediaPlaying=()=>{this.ended=0,this.waiting=0},this.onMediaWaiting=()=>{var i;(i=this.media)!=null&&i.seeking||(this.waiting=self.performance.now(),this.tick())},this.onMediaEnded=()=>{if(this.hls){var i;this.ended=((i=this.media)==null?void 0:i.currentTime)||1,this.hls.trigger(y.MEDIA_ENDED,{stalled:!1})}},this.hls=e,this.fragmentTracker=t,this.lastCurrentTime=this.getCurrentTime(),this.registerListeners()}registerListeners(){let{hls:e}=this;e&&(e.on(y.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(y.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(y.BUFFER_APPENDED,this.onBufferAppended,this))}unregisterListeners(){let{hls:e}=this;e&&(e.off(y.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(y.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(y.BUFFER_APPENDED,this.onBufferAppended,this))}destroy(){super.destroy(),this.unregisterListeners(),this.media=this.hls=this.fragmentTracker=null,this.mediaSource=void 0}onMediaAttached(e,t){this.setInterval(hg),this.mediaSource=t.mediaSource;let i=this.media=t.media;de(i,"playing",this.onMediaPlaying),de(i,"waiting",this.onMediaWaiting),de(i,"ended",this.onMediaEnded)}onMediaDetaching(e,t){this.clearInterval();let{media:i}=this;i&&(le(i,"playing",this.onMediaPlaying),le(i,"waiting",this.onMediaWaiting),le(i,"ended",this.onMediaEnded),this.media=null),this.mediaSource=void 0}onBufferAppended(e,t){this.buffered=t.timeRanges}get hasBuffered(){return Object.keys(this.buffered).length>0}getCurrentTime(){var e;let t=((e=this.hls)==null?void 0:e.config.timelineOffset)||0;return this.media?Math.max(this.media.currentTime,t):t}tick(){var e;if(!((e=this.media)!=null&&e.readyState)||!this.hasBuffered)return;let t=this.getCurrentTime();this.media.currentTime<t||(this.poll(t,this.lastCurrentTime),this.lastCurrentTime=t)}poll(e,t){var i,s;let n=(i=this.hls)==null?void 0:i.config;if(!n)return;let a=this.media;if(!a)return;let{seeking:o}=a,l=this.seeking&&!o,d=!this.seeking&&o,c=a.paused&&!o||a.ended||a.playbackRate===0;if(this.seeking=o,e!==t){t&&(this.ended=0),this.moved=!0,o||(this.skipRetry=this.nudgeRetry=0,n.nudgeOnVideoHole&&!c&&e>t&&this.nudgeOnVideoHole(e,t)),this.waiting===0&&this.stallResolved(e);return}if(d||l){l&&this.stallResolved(e);return}if(c){this.skipRetry=this.nudgeRetry=0,this.stallResolved(e),!this.ended&&a.ended&&this.hls&&(this.ended=e||1,this.hls.trigger(y.MEDIA_ENDED,{stalled:!1}));return}if(!J.getBuffered(a).length){this.skipRetry=this.nudgeRetry=0;return}let h=J.bufferInfo(a,e,0),u=this.fragmentTracker;u&&this.hls&&Fo(h,e,u,this.hls);let f=h.nextStart||0;if(o&&u&&this.hls){let A=Mo(this.hls.inFlightFragments,e),x=h.len>Qi,R=!f||A||f-e>Qi&&!u.getPartialFragment(e);if(x||R)return;this.moved=!1}let g=(s=this.hls)==null?void 0:s.latestLevelDetails;if(!this.moved&&this.stalled!==null&&u){if(!(h.len>0)&&!f)return;let x=Math.max(f,h.start||0)-e,P=!!(g!=null&&g.live)?g.targetduration*2:Qi,I=ii(e,u);if(x>0&&(x<=P||I)){a.paused||this._trySkipBufferHole(I);return}}let m=n.detectStallWithCurrentTimeMs,p=self.performance.now(),v=this.waiting,T=this.stalled;if(T===null)if(v>0&&p-v<m)T=this.stalled=v;else{this.stalled=p;return}let E=p-T;if(!o&&(E>=m||v&&this.moved)&&this.hls){var S;if(((S=this.mediaSource)==null?void 0:S.readyState)==="ended"&&!(g!=null&&g.live)&&Math.abs(e-(g?.edge||0))<1){if(this.ended)return;this.ended=e||1,this.hls.trigger(y.MEDIA_ENDED,{stalled:!0});return}if(this._reportStall(h),!this.media||!this.hls)return;if(a.currentTime!==e){let A=e;e=a.currentTime,this.moved=!0,this.log(`currentTime changed ${A} > ${e}`);return}}let b=J.bufferInfo(a,e,n.maxBufferHole);this._tryFixBufferStall(b,E,e)}stallResolved(e){let t=this.stalled;if(t&&this.hls&&(this.stalled=null,this.stallReported)){let i=self.performance.now()-t;this.log(`playback not stuck anymore @${e}, after ${Math.round(i)}ms`),this.stallReported=!1,this.waiting=0,this.hls.trigger(y.STALL_RESOLVED,{})}}nudgeOnVideoHole(e,t){var i;let s=this.buffered.video;if(this.hls&&this.media&&this.fragmentTracker&&(i=this.buffered.audio)!=null&&i.length&&s&&s.length>1&&e>s.end(0)){let n=J.bufferedInfo(J.timeRangesToArray(this.buffered.audio),e,0);if(n.len>1&&t>=n.start){let a=J.timeRangesToArray(s),o=J.bufferedInfo(a,t,0).bufferedIndex;if(o>-1&&o<a.length-1){let l=J.bufferedInfo(a,e,0).bufferedIndex,d=a[o].end,c=a[o+1].start;if((l===-1||l>o)&&c-d<1&&e-d<2){let h=new Error(`nudging playhead to flush pipeline after video hole. currentTime: ${e} hole: ${d} -> ${c} buffered index: ${l}`);this.warn(h.message),this.media.currentTime+=1e-6;let u=ii(e,this.fragmentTracker);u&&"fragment"in u?u=u.fragment:u||(u=void 0);let f=J.bufferInfo(this.media,e,0);this.hls.trigger(y.ERROR,{type:W.MEDIA_ERROR,details:L.BUFFER_SEEK_OVER_HOLE,fatal:!1,error:h,reason:h.message,frag:u,buffer:f.len,bufferInfo:f})}}}}}_tryFixBufferStall(e,t,i){var s,n;let{fragmentTracker:a,media:o}=this,l=(s=this.hls)==null?void 0:s.config;if(!o||!a||!l)return;let d=(n=this.hls)==null?void 0:n.latestLevelDetails,c=ii(i,a);if((c||d!=null&&d.live&&i<d.fragmentStart)&&(this._trySkipBufferHole(c)||!this.media))return;let h=e.buffered,u=this.adjacentTraversal(e,i);(h&&h.length>1&&e.len>l.maxBufferHole||e.nextStart&&(e.nextStart-i<l.maxBufferHole||u))&&(t>l.highBufferWatchdogPeriod*1e3||this.waiting)&&(this.warn("Trying to nudge playhead over buffer-hole"),this._tryNudgeBuffer(e))}adjacentTraversal(e,t){let i=this.fragmentTracker,s=e.nextStart;if(i&&s){let n=i.getFragAtPos(t,H.MAIN),a=i.getFragAtPos(s,H.MAIN);if(n&&a)return a.sn-n.sn<2}return!1}_reportStall(e){let{hls:t,media:i,stallReported:s,stalled:n}=this;if(!s&&n!==null&&i&&t){this.stallReported=!0;let a=new Error(`Playback stalling at @${i.currentTime} due to low buffer (${fe(e)})`);this.warn(a.message),t.trigger(y.ERROR,{type:W.MEDIA_ERROR,details:L.BUFFER_STALLED_ERROR,fatal:!1,error:a,buffer:e.len,bufferInfo:e,stalled:{start:n}})}}_trySkipBufferHole(e){let{fragmentTracker:t,media:i,hls:s}=this,n=s?.config;if(!i||!t||!n)return 0;let a=i.currentTime,o=J.bufferInfo(i,a,0);Fo(o,a,t,s);let l=a<o.start?o.start:o.nextStart;if(l){let c=o.len<=n.maxBufferHole,h=o.len>0&&o.len<1&&i.readyState<3,u=l-a;if(u>0&&(c||h)){if(u>n.maxBufferHole){let v=!1;if(a===0){let T=t.getAppendedFrag(0,H.MAIN);T&&l<T.end&&(v=!0)}if(!v&&e){var d;if(!((d=s.loadLevelObj)!=null&&d.details)||Mo(s.inFlightFragments,l))return 0;let E=!1,S=e.end;for(;S<l;){let b=ii(S,t),A=b?b.duration:0;if(A>0)S+=A;else{E=!0;break}}if(E)return 0}}let{nudgeMaxRetry:f,skipBufferHolePadding:g}=n,m=++this.skipRetry>f,p=Math.max(l,a)+g;if(m||(this.warn(`skipping hole, adjusting currentTime from ${a} to ${p}`),this.moved=!0,i.currentTime=p),!(e!=null&&e.gap)||m){let v=new Error(m?`Playhead still not moving after seeking over buffer hole from ${a} to ${p} after ${n.nudgeMaxRetry} attempts.`:`fragment loaded with buffer holes, seeking from ${a} to ${p}`),T={type:W.MEDIA_ERROR,details:L.BUFFER_SEEK_OVER_HOLE,fatal:m,error:v,reason:v.message,buffer:o.len,bufferInfo:o};e&&("fragment"in e?T.part=e:T.frag=e),s.trigger(y.ERROR,T)}return p}}return 0}_tryNudgeBuffer(e){let{hls:t,media:i,nudgeRetry:s}=this,n=t?.config;if(!i||!n)return 0;let a=i.currentTime;if(this.nudgeRetry++,s<n.nudgeMaxRetry){let o=a+(s+1)*n.nudgeOffset,l=new Error(`Nudging 'currentTime' from ${a} to ${o}`);this.warn(l.message),i.currentTime=o,t.trigger(y.ERROR,{type:W.MEDIA_ERROR,details:L.BUFFER_NUDGE_ON_STALL,error:l,fatal:!1,buffer:e.len,bufferInfo:e})}else{let o=new Error(`Playhead still not moving while enough data buffered @${a} after ${n.nudgeMaxRetry} nudges`);this.error(o.message),t.trigger(y.ERROR,{type:W.MEDIA_ERROR,details:L.BUFFER_STALLED_ERROR,error:o,fatal:!0,buffer:e.len,bufferInfo:e})}}};function Mo(r,e){let t=Oo(r.main);if(t&&t.start<=e)return t;let i=Oo(r.audio);return i&&i.start<=e?i:null}function Oo(r){if(!r)return null;switch(r.state){case _.IDLE:case _.STOPPED:case _.ENDED:case _.ERROR:return null}return r.frag}function ii(r,e){return e.getAppendedFrag(r,H.MAIN)||e.getPartialFragment(r)}function Fo(r,e,t,i){let s=i.latestLevelDetails,n=ii(e,t);if(gs(i.config)&&!r.nextStart&&s&&n&&i.interstitialsManager){let a="type"in n?n:n.fragment,o=xl(s,a.sn);o?.level===a.level&&Ul(o,i.interstitialsManager.playerQueue,e)&&(r.nextStart=o.start)}}var ug=.25;function br(){if(!(typeof self>"u"))return self.VTTCue||self.TextTrackCue}function yn(r,e,t,i,s){let n=new r(e,t,"");try{n.value=i,s&&(n.type=s)}catch{n=new r(e,t,fe(s?Y({type:s},i):i))}return n}var Ki=(()=>{let r=br();try{r&&new r(0,Number.POSITIVE_INFINITY,"")}catch{return Number.MAX_VALUE}return Number.POSITIVE_INFINITY})(),Ar=class{constructor(e){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.removeCues=!0,this.assetCue=void 0,this.onEventCueEnter=()=>{this.hls&&this.hls.trigger(y.EVENT_CUE_ENTER,{})},this.hls=e,this._registerListeners()}destroy(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=this.onEventCueEnter=null}_registerListeners(){let{hls:e}=this;e&&(e.on(y.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(y.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(y.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(y.MANIFEST_LOADING,this.onManifestLoading,this),e.on(y.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.on(y.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(y.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(y.LEVEL_PTS_UPDATED,this.onLevelPtsUpdated,this))}_unregisterListeners(){let{hls:e}=this;e&&(e.off(y.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(y.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(y.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(y.MANIFEST_LOADING,this.onManifestLoading,this),e.off(y.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.off(y.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(y.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(y.LEVEL_PTS_UPDATED,this.onLevelPtsUpdated,this))}onMediaAttaching(e,t){this.media=t.media}onMediaAttached(){var e;let t=(e=this.hls)==null?void 0:e.latestLevelDetails;t&&this.updateDateRangeCues(t)}onMediaDetaching(e,t){this.media=null,!t.transferMedia&&(this.id3Track&&(this.id3Track.remove(),this.id3Track=null),this.dateRangeCuesAppended={})}onManifestLoading(){this.dateRangeCuesAppended={}}createTrack(e){return fa(e,"metadata","id3","","hidden")}onFragParsingMetadata(e,t){if(!this.media||!this.hls)return;let{enableEmsgMetadataCues:i,enableID3MetadataCues:s}=this.hls.config;if(!i&&!s)return;let{samples:n}=t;this.id3Track||(this.id3Track=this.createTrack(this.media));let a=br();if(a)for(let o=0;o<n.length;o++){let l=n[o].type;if(l===Me.emsg&&!i||!s)continue;let d=Jo(n[o].data),c=n[o].pts,h=c+n[o].duration;h>Ki&&(h=Ki),h-c<=0&&(h=c+ug);for(let f=0;f<d.length;f++){let g=d[f];if(!el(g)){this.updateId3CueEnds(c,l);let m=yn(a,c,h,g,l);m&&this.id3Track.track.addCue(m)}}}}updateId3CueEnds(e,t){var i;let s=(i=this.id3Track)==null?void 0:i.track.cues;if(s)for(let n=s.length;n--;){let a=s[n];a.type===t&&a.startTime<e&&a.endTime===Ki&&(a.endTime=e)}}onBufferFlushing(e,{startOffset:t,endOffset:i,type:s}){let{id3Track:n,hls:a}=this;if(!a)return;let{config:{enableEmsgMetadataCues:o,enableID3MetadataCues:l}}=a;if(n&&(o||l)){let d;s==="audio"?d=c=>c.type===Me.audioId3&&l:s==="video"?d=c=>c.type===Me.emsg&&o:d=c=>c.type===Me.audioId3&&l||c.type===Me.emsg&&o,Er(n.track,t,i,d)}}onLevelUpdated(e,{details:t}){this.updateDateRangeCues(t,!0)}onLevelPtsUpdated(e,t){Math.abs(t.drift)>.01&&this.updateDateRangeCues(t.details)}updateDateRangeCues(e,t){if(!this.hls||!this.media)return;let{assetPlayerId:i,timelineOffset:s,enableDateRangeMetadataCues:n,interstitialsController:a}=this.hls.config;if(!n)return;let o=br();if(i&&s&&!a){let{fragmentStart:m,fragmentEnd:p}=e,v=this.assetCue;v?(v.startTime=m,v.endTime=p):o&&(v=this.assetCue=yn(o,m,p,{assetPlayerId:this.hls.config.assetPlayerId},"hlsjs.interstitial.asset"),v&&(v.id=i,this.id3Track||(this.id3Track=this.createTrack(this.media)),this.id3Track.track.addCue(v),v.addEventListener("enter",this.onEventCueEnter)))}if(!e.hasProgramDateTime)return;let{id3Track:l}=this,{dateRanges:d}=e,c=Object.keys(d),h=this.dateRangeCuesAppended;if(l&&t){var u;if((u=l.track.cues)!=null&&u.length){let m=Object.keys(h).filter(p=>c.indexOf(p)===-1);for(let p=m.length;p--;){var f;let v=m[p],T=(f=h[v])==null?void 0:f.cues;delete h[v],T&&Object.keys(T).forEach(E=>{let S=T[E];if(S){S.removeEventListener("enter",this.onEventCueEnter);try{l.track.removeCue(S)}catch{}}})}}else h=this.dateRangeCuesAppended={}}let g=e.fragments[e.fragments.length-1];if(!(c.length===0||!B(g?.programDateTime))){this.id3Track||(this.id3Track=this.createTrack(this.media));for(let m=0;m<c.length;m++){let p=c[m],v=d[p],T=v.startTime,E=h[p],S=E?.cues||{},b=E?.durationKnown||!1,A=Ki,{duration:x,endDate:R}=v;if(R&&x!==null)A=T+x,b=!0;else if(v.endOnNext&&!b){let I=c.reduce((k,D)=>{if(D!==v.id){let F=d[D];if(F.class===v.class&&F.startDate>v.startDate&&(!k||v.startDate<k.startDate))return F}return k},null);I&&(A=I.startTime,b=!0)}let P=Object.keys(v.attr);for(let I=0;I<P.length;I++){let k=P[I];if(!Dh(k))continue;let D=S[k];if(D)b&&!(E!=null&&E.durationKnown)?D.endTime=A:Math.abs(D.startTime-T)>.01&&(D.startTime=T,D.endTime=A);else if(o){let F=v.attr[k];Ch(k)&&(F=tl(F));let $=yn(o,T,A,{key:k,data:F},Me.dateRange);$&&($.id=p,this.id3Track.track.addCue($),S[k]=$,a&&(k==="X-ASSET-LIST"||k==="X-ASSET-URL")&&$.addEventListener("enter",this.onEventCueEnter))}}h[p]={cues:S,dateRange:v,durationKnown:b}}}}};function _d(){return self.SourceBuffer||self.WebKitSourceBuffer}function kd(){if(!bt())return!1;let e=_d();return!e||e.prototype&&typeof e.prototype.appendBuffer=="function"&&typeof e.prototype.remove=="function"}function fg(){if(!kd())return!1;let r=bt();return typeof r?.isTypeSupported=="function"&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some(e=>r.isTypeSupported(gi(e,"video")))||["mp4a.40.2","fLaC"].some(e=>r.isTypeSupported(gi(e,"audio"))))}function gg(){var r;let e=_d();return typeof(e==null||(r=e.prototype)==null?void 0:r.changeType)=="function"}var st={DISABLED:0,SWITCHING:1,SWITCHED:2},mg=100,Is=class extends vi{constructor(e,t,i){super(e,t,i,"stream-controller",H.MAIN),this.audioCodecSwap=!1,this.level=-1,this._forceStartLoad=!1,this._hasEnoughToStart=!1,this.altAudio=st.DISABLED,this.audioOnly=!1,this._couldBacktrack=!1,this._backtrackFragment=void 0,this.audioCodecSwitch=!1,this.videoBuffer=null,this.onMediaPlaying=()=>{this.tick()},this.onMediaSeeked=()=>{let s=this.media,n=s?s.currentTime:null;if(n===null||!B(n)||(this.log(`Media seeked to ${n}`),!this.getBufferedFrag(n)))return;let a=this.getFwdBufferInfoAtPos(s,n,H.MAIN,0);if(!a||a.len===0){this.log(`Main buffer empty at ${n} on "seeked" event: ${a&&a.len}`);return}this.tick()},this.registerListeners()}registerListeners(){super.registerListeners();let{hls:e}=this;e.on(y.MANIFEST_PARSED,this.onManifestParsed,this),e.on(y.LEVEL_LOADING,this.onLevelLoading,this),e.on(y.LEVEL_LOADED,this.onLevelLoaded,this),e.on(y.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),e.on(y.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.on(y.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.on(y.BUFFER_CREATED,this.onBufferCreated,this),e.on(y.BUFFER_FLUSHED,this.onBufferFlushed,this),e.on(y.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(y.FRAG_BUFFERED,this.onFragBuffered,this)}unregisterListeners(){super.unregisterListeners();let{hls:e}=this;e.off(y.MANIFEST_PARSED,this.onManifestParsed,this),e.off(y.LEVEL_LOADED,this.onLevelLoaded,this),e.off(y.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),e.off(y.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.off(y.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.off(y.BUFFER_CREATED,this.onBufferCreated,this),e.off(y.BUFFER_FLUSHED,this.onBufferFlushed,this),e.off(y.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(y.FRAG_BUFFERED,this.onFragBuffered,this)}onHandlerDestroying(){this.onMediaPlaying=this.onMediaSeeked=null,this.unregisterListeners(),super.onHandlerDestroying()}startLoad(e,t){if(this.levels){let{lastCurrentTime:i,hls:s}=this;if(this.stopLoad(),this.setInterval(mg),this.level=-1,!this.startFragRequested){let n=s.startLevel;n===-1&&(s.config.testBandwidth&&this.levels.length>1?(n=0,this.bitrateTest=!0):n=s.firstAutoLevel),s.nextLoadLevel=n,this.level=s.loadLevel,this._hasEnoughToStart=!!t}i>0&&e===-1&&!t&&this.initPTS.length&&(this.log(`Override startPosition with lastCurrentTime @${i}`),e=i),this.state=_.IDLE,this.nextLoadPosition=this.lastCurrentTime=e+this.timelineOffset,this.startPosition=t?-1:e,!t&&!this.fragmentTracker.hasFragments(this.playlistType)&&(this._hasEnoughToStart=this.startFragRequested=!1),this.tick()}else this._forceStartLoad=!0,this.state=_.STOPPED}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case _.WAITING_LEVEL:{let{levels:e,level:t}=this,i=e?.[t],s=i?.details;if(s&&(!s.live||this.levelLastLoaded===i&&!this.waitForLive(i))){if(this.waitForCdnTuneIn(s))break;this.state=_.IDLE;break}else if(this.hls.nextLoadLevel!==this.level){this.state=_.IDLE;break}break}case _.FRAG_LOADING_WAITING_RETRY:this.checkRetryDate();break}this.state===_.IDLE&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){var e;super.onTickEnd(),(e=this.media)!=null&&e.readyState&&this.media.seeking===!1&&(this.lastCurrentTime=this.media.currentTime),this.checkFragmentChanged()}doTickIdle(){let{hls:e,levelLastLoaded:t,levels:i,media:s}=this;if(t===null||!s&&!this.primaryPrefetch&&(this.startFragRequested||!e.config.startFragPrefetch)||this.altAudio&&this.audioOnly)return;let n=this.buffering?e.nextLoadLevel:e.loadLevel;if(!(i!=null&&i[n]))return;let a=i[n],o=this.getMainFwdBufferInfo();if(o===null)return;let l=this.getLevelDetails();if(l&&this._streamEnded(o,l)){let m={type:this.targetBufferType()};this.hls.trigger(y.BUFFER_EOS,m),this.state=_.ENDED;return}if(!this.buffering)return;e.loadLevel!==n&&e.manualLevel===-1&&this.log(`Adapting to level ${n} from level ${this.level}`),this.level=e.nextLoadLevel=n;let d=a.details;if(!d||this.state===_.WAITING_LEVEL||this.waitForLive(a)){this.level=n,this.state=_.WAITING_LEVEL,this.startFragRequested=!1;return}let c=o.len,h=this.getMaxBufferLength(a.maxBitrate);if(c>=h)return;this.backtrackFragment&&this.backtrackFragment.start>o.end&&(this.backtrackFragment=void 0);let u=this.backtrackFragment?this.backtrackFragment.start:o.end,f=this.getNextFragment(u,d);if(this.couldBacktrack&&!this.fragPrevious&&f&&ve(f)&&this.fragmentTracker.getState(f)!==ye.OK){var g;let p=((g=this.backtrackFragment)!=null?g:f).sn-d.startSN,v=d.fragments[p-1];v&&f.cc===v.cc&&(f=v,this.fragmentTracker.removeFragment(v))}else this.backtrackFragment&&o.len&&(this.backtrackFragment=void 0);if(f&&this.isLoopLoading(f,u)){if(!f.gap){let p=this.audioOnly&&!this.altAudio?ue.AUDIO:ue.VIDEO,v=(p===ue.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;v&&this.afterBufferFlushed(v,p)}f=this.getNextFragmentLoopLoading(f,d,o,H.MAIN,h)}f&&(this.exceedsMaxBuffer(o,h,f)||this.loadFragment(f,a,u))}loadFragment(e,t,i){let s=this.fragmentTracker.getState(e);s===ye.NOT_LOADED||s===ye.PARTIAL?this.bitrateTest?(this.log(`Fragment ${e.sn} of level ${e.level} is being downloaded to test bitrate and will not be buffered`),this._loadBitrateTestFrag(e,t)):super.loadFragment(e,t,i):this.clearTrackerIfNeeded(e)}immediateLevelSwitch(){if(this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY),this.altAudio!==st.DISABLED){var e;(((e=this.getLevelDetails())==null?void 0:e.fragmentStart)||0)>this.lastCurrentTime&&super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio")}}getBufferOutput(){return this.mediaBuffer&&this.altAudio===st.SWITCHED?this.mediaBuffer:this.media}checkFragmentChanged(){let e=this.fragPlaying;if(!this.checkFragPlaying())return!1;let i=this.fragPlaying;if(i){let s=i.level;this.hls.trigger(y.FRAG_CHANGED,{frag:i,previousFrag:e}),e?.level!==s&&this.hls.trigger(y.LEVEL_SWITCHED,{level:s})}return!0}get backtrackFragment(){return this._backtrackFragment}set backtrackFragment(e){this._backtrackFragment=e}get couldBacktrack(){return this._couldBacktrack}set couldBacktrack(e){this._couldBacktrack=e}abortCurrentFrag(){this.backtrackFragment=void 0,super.abortCurrentFrag()}flushMainBuffer(e,t){super.flushMainBuffer(e,t,this.targetBufferType())}targetBufferType(){return this.altAudio===st.SWITCHED&&!this.audioOnly?"video":null}onMediaAttached(e,t){super.onMediaAttached(e,t);let i=t.media;de(i,"playing",this.onMediaPlaying),de(i,"seeked",this.onMediaSeeked)}onMediaDetaching(e,t){let{media:i}=this;i&&(le(i,"playing",this.onMediaPlaying),le(i,"seeked",this.onMediaSeeked)),this.videoBuffer=null,super.onMediaDetaching(e,t),!t.transferMedia&&(this._hasEnoughToStart=!1)}onManifestLoading(){super.onManifestLoading(),this.log("Trigger BUFFER_RESET"),this.hls.trigger(y.BUFFER_RESET,void 0),this.couldBacktrack=!1,this.backtrackFragment=void 0,this.altAudio=st.DISABLED,this.audioOnly=!1}onManifestParsed(e,t){let i=!1,s=!1;for(let n=0;n<t.levels.length;n++){let a=t.levels[n].audioCodec;a&&(i=i||a.indexOf("mp4a.40.2")!==-1,s=s||a.indexOf("mp4a.40.5")!==-1)}this.audioCodecSwitch=i&&s&&!gg(),this.audioCodecSwitch&&this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=t.levels,this.startFragRequested=!1}onLevelLoading(e,t){let{levels:i}=this;if(!i||this.state!==_.IDLE)return;let s=t.levelInfo;(!s.details||s.details.live&&(this.levelLastLoaded!==s||s.details.expired)||this.waitForCdnTuneIn(s.details))&&(this.state=_.WAITING_LEVEL)}onLevelLoaded(e,t){var i;let{levels:s,startFragRequested:n}=this,a=t.level,o=t.details,l=o.totalduration;if(!s){this.warn(`Levels were reset while loading level ${a}`);return}this.log(`Level ${a} loaded [${o.startSN},${o.endSN}]${o.lastPartSn?`[part-${o.lastPartSn}-${o.lastPartIndex}]`:""}, cc [${o.startCC}, ${o.endCC}] duration:${l}`);let d=t.levelInfo,c=this.fragCurrent;c&&(this.state===_.FRAG_LOADING||this.state===_.FRAG_LOADING_WAITING_RETRY)&&c.level!==t.level&&c.loader&&this.abortCurrentFrag();let h=0;if(o.live||(i=d.details)!=null&&i.live){var u;if(this.checkLiveUpdate(o),o.deltaUpdateFailed)return;h=this.alignPlaylists(o,d.details,(u=this.levelLastLoaded)==null?void 0:u.details)}if(d.details=o,this.levelLastLoaded=d,n||this.setStartPosition(o,h),this.hls.trigger(y.LEVEL_UPDATED,{details:o,level:a}),this.state===_.WAITING_LEVEL){if(this.waitForCdnTuneIn(o))return;this.state=_.IDLE}n&&o.live&&this.synchronizeToLiveEdge(o),this.initPTS.some((f,g)=>{if(g>=o.startCC)return!0;delete this.initPTS[g]}),this.tick()}synchronizeToLiveEdge(e){let{config:t,media:i}=this;if(!i)return;let s=this.hls.liveSyncPosition,n=this.playhead,a=e.fragmentStart,o=e.edge,l=n>=a-t.maxFragLookUpTolerance&&n<=o;if(s!==null&&i.duration>s&&(n<s||!l)){let c=t.liveMaxLatencyDuration!==void 0?t.liveMaxLatencyDuration:t.liveMaxLatencyDurationCount*e.targetduration;if((!l&&i.readyState<4||n<o-c)&&(this._hasEnoughToStart||(this.nextLoadPosition=s),i.readyState))if(this.warn(`Playback: ${n} is located too far from the end of live sliding playlist: ${o}, reset currentTime to : ${s}`),this.config.liveSyncMode==="buffered"){var d;let h=J.bufferInfo(i,s,0);if(!((d=h.buffered)!=null&&d.length)){i.currentTime=s;return}if(h.start<=n){i.currentTime=s;return}let{nextStart:f}=J.bufferedInfo(h.buffered,n,0);f&&(i.currentTime=f)}else i.currentTime=s}}_handleFragmentLoadProgress(e){var t;let i=e.frag,{part:s,payload:n}=e,{levels:a}=this;if(!a){this.warn(`Levels were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);return}let o=a[i.level];if(!o){this.warn(`Level ${i.level} not found on progress`);return}let l=o.details;if(!l){this.warn(`Dropping fragment ${i.sn} of level ${i.level} after level details were reset`),this.fragmentTracker.removeFragment(i);return}let d=o.videoCodec,c=l.PTSKnown||!l.live,h=(t=i.initSegment)==null?void 0:t.data,u=this._getAudioCodec(o),f=this.transmuxer=this.transmuxer||new As(this.hls,H.MAIN,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),g=s?s.index:-1,m=g!==-1,{decryptRange:p,byteRange:v}=os(i,s,this.iframesOnly),T=new yi(i.level,i.sn,i.stats.chunkCount,v?v.end-v.start:n.byteLength,g,m,i.duration,this.iframesOnly,p),E=this.initPTS[i.cc];f.push(n,h,u,d,i,s,l.totalduration,c,T,E)}onAudioTrackSwitching(e,t){let i=this.hls,s=this.altAudio!==st.DISABLED;if(rs(t.url,i))this.altAudio=st.SWITCHING;else{if(this.mediaBuffer!==this.media){this.log("Switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;let a=this.fragCurrent;a&&(this.log("Switching to main audio track, cancel main fragment load"),a.abortRequests(),this.fragmentTracker.removeFragment(a)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();if(s){this.altAudio=st.DISABLED,this.fragmentTracker.removeAllFragments(),i.once(y.BUFFER_FLUSHED,()=>{this.hls&&this.hls.trigger(y.AUDIO_TRACK_SWITCHED,t)}),i.trigger(y.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null});return}i.trigger(y.AUDIO_TRACK_SWITCHED,t)}}onAudioTrackSwitched(e,t){let i=rs(t.url,this.hls);if(i){let s=this.videoBuffer;s&&this.mediaBuffer!==s&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=s)}this.altAudio=i?st.SWITCHED:st.DISABLED,this.tick()}onBufferCreated(e,t){let i=t.tracks,s,n,a=!1;for(let o in i){let l=i[o];if(l.id==="main"){if(n=o,s=l,o==="video"){let d=i[o];d&&(this.videoBuffer=d.buffer)}}else a=!0}a&&s?(this.log(`Alternate track found, use ${n}.buffered to schedule main fragment loading`),this.mediaBuffer=s.buffer):this.mediaBuffer=this.media}onFragBuffered(e,t){let{frag:i,part:s}=t,n=i.type===H.MAIN;if(n){if(this.fragContextChanged(i)){this.warn(`Fragment ${i.sn}${s?" p: "+s.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}`),this.state===_.PARSED&&(this.state=_.IDLE);return}let l=!1;if(ve(i)&&(l=!!i.gap&&!i.tagList.some(d=>d[0]==="GAP")),this.fragBufferedComplete(i,s),l){var a;i.stats.retry++;let d=(a=this.levels)==null?void 0:a[i.level];d&&d.fragmentError++}}let o=this.media;o&&(!this._hasEnoughToStart&&J.getBuffered(o).length&&(this._hasEnoughToStart=!0,this.seekToStartPos()),n&&this.tick())}get hasEnoughToStart(){return this._hasEnoughToStart}onError(e,t){var i;if(t.fatal){this.state=_.ERROR;return}switch(t.details){case L.FRAG_GAP:case L.FRAG_PARSING_ERROR:case L.FRAG_DECRYPT_ERROR:case L.FRAG_LOAD_ERROR:case L.FRAG_LOAD_TIMEOUT:case L.KEY_LOAD_ERROR:case L.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(H.MAIN,t);break;case L.LEVEL_LOAD_ERROR:case L.LEVEL_LOAD_TIMEOUT:case L.LEVEL_PARSING_ERROR:!t.levelRetry&&this.state===_.WAITING_LEVEL&&((i=t.context)==null?void 0:i.type)===te.LEVEL&&(this.state=_.IDLE);break;case L.BUFFER_APPEND_NO_PROGRESS:if(t.parent!=="main")return;t.frag&&(t.appendsWithoutProgress||0)>=this.config.appendErrorMaxRetry&&(this.warn(`Marking fragment ${t.frag.sn} of level ${t.frag.level} as a gap after ${t.appendsWithoutProgress} appends without buffered range growth, to prevent loop loading`),this.fragmentTracker.addAsGap(t.frag));break;case L.BUFFER_ADD_CODEC_ERROR:case L.BUFFER_APPEND_ERROR:if(t.parent!=="main")return;this.reduceLengthAndFlushBuffer(t)&&this.resetLoadingState();break;case L.BUFFER_FULL_ERROR:if(t.parent!=="main")return;this.reduceLengthAndFlushBuffer(t)&&(!this.config.interstitialsController&&this.config.assetPlayerId?this._hasEnoughToStart=!0:this.flushMainBuffer(0,Number.POSITIVE_INFINITY));break;case L.INTERNAL_EXCEPTION:this.recoverWorkerError(t);break}}onFragLoadEmergencyAborted(){this.state=_.IDLE,this._hasEnoughToStart||(this.startFragRequested=!1,this.nextLoadPosition=this.lastCurrentTime),this.tickImmediate()}onBufferFlushed(e,{type:t}){if(t!==ue.AUDIO||!this.altAudio){let i=(t===ue.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;i&&(this.afterBufferFlushed(i,t),this.tick())}}onLevelsUpdated(e,t){this.level>-1&&this.fragCurrent&&(this.level=this.fragCurrent.level,this.level===-1&&this.resetWhenMissingContext(this.fragCurrent)),this.levels=t.levels}swapAudioCodec(){this.audioCodecSwap=!this.audioCodecSwap}seekToStartPos(){let{media:e}=this;if(!e)return;let t=e.currentTime,i=this.startPosition;if(i>=0&&t<i){if(e.seeking){this.log(`could not seek to ${i}, already seeking at ${t}`);return}let s=this.timelineOffset;s&&i&&(i+=s);let n=this.getLevelDetails(),a=J.getBuffered(e),o=a.length?a.start(0):0,l=o-i,d=Math.max(this.config.maxBufferHole,this.config.maxFragLookUpTolerance);(this.config.startOnSegmentBoundary||l>0&&(l<d||this.loadingParts&&l<2*(n?.partTarget||0)))&&(this.log(`adjusting start position by ${l} to match buffer start`),i+=l,this.startPosition=i),t<i&&(this.log(`seek to target start position ${i} from current time ${t} buffer start ${o}`),e.currentTime=i)}}_getAudioCodec(e){let t=this.config.defaultAudioCodec||e.audioCodec;return this.audioCodecSwap&&t&&(this.log("Swapping audio codec"),t.indexOf("mp4a.40.5")!==-1?t="mp4a.40.2":t="mp4a.40.5"),t}_loadBitrateTestFrag(e,t){e.bitrateTest=!0,this._doFragLoad(e,t).then(i=>{let{hls:s}=this,n=i?.frag;if(!n||this.fragContextChanged(n))return;t.fragmentError=0,this.state=_.IDLE,this.startFragRequested=!1,this.bitrateTest=!1;let a=n.stats;a.parsing.start=a.parsing.end=a.buffering.start=a.buffering.end=self.performance.now(),s.trigger(y.FRAG_LOADED,i),n.bitrateTest=!1}).catch(i=>{this.state===_.STOPPED||this.state===_.ERROR||(this.warn(i),this.resetFragmentLoading(e))})}_handleTransmuxComplete(e){let t=this.playlistType,{hls:i}=this,{remuxResult:s,chunkMeta:n}=e,a=this.getCurrentContext(n);if(!a){this.resetWhenMissingContext(n);return}let{frag:o,part:l,level:d}=a,{video:c,text:h,id3:u,initSegment:f}=s,{details:g}=d,m=this.altAudio?void 0:s.audio;if(this.fragContextChanged(o)){this.fragmentTracker.removeFragment(o);return}if(this.state=_.PARSING,f){let p=f.tracks;if(p){let S=o.initSegment||o;if(this.unhandledEncryptionError(f,o))return;this._bufferInitSegment(d,p,S,n),i.trigger(y.FRAG_PARSING_INIT_SEGMENT,{frag:S,id:t,tracks:p})}let v=f.initPTS,T=f.timescale,E=this.initPTS[o.cc];if(B(v)&&(!E||E.baseTime!==v||E.timescale!==T)){let S=f.trackId;this.initPTS[o.cc]={baseTime:v,timescale:T,trackId:S};let b=this.initPTS.slice(0);i.trigger(y.INIT_PTS_FOUND,{timestampOffsets:b,frag:o,id:t,initPTS:v,timescale:T,trackId:S})}}if(c&&g){m&&c.type==="audiovideo"&&this.logMuxedErr(o);let p=g.fragments[o.sn-1-g.startSN],v=o.sn===g.startSN,T=!p||o.cc>p.cc;if(s.independent!==!1){let{startPTS:E,endPTS:S,startDTS:b,endDTS:A}=c;if(l)l.elementaryStreams[c.type]={startPTS:E,endPTS:S,startDTS:b,endDTS:A};else if(c.firstKeyFrame&&c.independent&&n.id===1&&!T&&(this.couldBacktrack=!0),c.dropped&&c.independent){let x=this.getMainFwdBufferInfo(),R=(x?x.end:this.getLoadPosition())+this.config.maxBufferHole,P=c.firstKeyFramePTS?c.firstKeyFramePTS:E;if(!v&&R<P-this.config.maxBufferHole&&!T){this.backtrack(o);return}else T&&(o.gap=!0);o.setElementaryStreamInfo(c.type,o.start,S,o.start,A,!0)}else v&&E-(g.appliedTimelineOffset||0)>Qi&&(o.gap=!0);o.setElementaryStreamInfo(c.type,E,S,b,A),this.backtrackFragment&&(this.backtrackFragment=o),this.bufferFragmentData(c,o,l,n,v||T)}else if(v||T)o.gap=!0;else{this.backtrack(o);return}}if(m){let{startPTS:p,endPTS:v,startDTS:T,endDTS:E}=m;l&&(l.elementaryStreams[ue.AUDIO]={startPTS:p,endPTS:v,startDTS:T,endDTS:E}),o.setElementaryStreamInfo(ue.AUDIO,p,v,T,E),this.bufferFragmentData(m,o,l,n)}if(g&&u!=null&&u.samples.length){let p={id:t,frag:o,details:g,samples:u.samples};i.trigger(y.FRAG_PARSING_METADATA,p)}if(g&&h){let p={id:t,frag:o,details:g,samples:h.samples};i.trigger(y.FRAG_PARSING_USERDATA,p)}}logMuxedErr(e){this.warn(`${ve(e)?"Media":"Init"} segment with muxed audiovideo where only video expected: ${e.url}`)}_bufferInitSegment(e,t,i,s){if(this.state!==_.PARSING)return;this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&(delete t.audio,t.audiovideo&&this.logMuxedErr(i));let{audio:n,video:a,audiovideo:o}=t;if(n){let d=e.audioCodec,c=ji(n.codec,d);if(c==="mp4a"&&(c="mp4a.40.5"),this.audioCodecSwitch){c&&(c.indexOf("mp4a.40.5")!==-1?c="mp4a.40.2":c="mp4a.40.5");let h=n.metadata;h&&"channelCount"in h&&(h.channelCount||1)!==1&&!Qc()&&(c="mp4a.40.5")}c&&c.indexOf("mp4a.40.5")!==-1&&Jc()&&n.container!=="audio/mpeg"&&(c="mp4a.40.2",this.log(`Android: force audio codec to ${c}`)),d&&d!==c&&this.log(`Swapping manifest audio codec "${d}" for "${c}"`),n.levelCodec=c,n.id=H.MAIN,this.log(`Init audio buffer, container:${n.container}, codecs[selected/level/parsed]=[${c||""}/${d||""}/${n.codec}]`),delete t.audiovideo}if(a){a.levelCodec=e.videoCodec,a.id=H.MAIN;let d=a.codec;if(d?.length===4)switch(d){case"hvc1":case"hev1":a.codec="hvc1.1.6.L120.90";break;case"av01":a.codec="av01.0.04M.08";break;case"avc1":a.codec="avc1.42e01e";break}this.log(`Init video buffer, container:${a.container}, codecs[level/parsed]=[${e.videoCodec||""}/${d}]${a.codec!==d?" parsed-corrected="+a.codec:""}${a.supplemental?" supplemental="+a.supplemental:""}`),delete t.audiovideo}o&&(this.iframesOnly&&this.logMuxedErr(i),this.log(`Init audiovideo buffer, container:${o.container}, codecs[level/parsed]=[${e.codecs}/${o.codec}]`),delete t.video,delete t.audio);let l=Object.keys(t);if(l.length){if(this.hls.trigger(y.BUFFER_CODECS,t),!this.hls)return;l.forEach(d=>{let h=t[d].initSegment;h!=null&&h.byteLength&&this.hls.trigger(y.BUFFER_APPENDING,{type:d,data:h,frag:i,part:null,chunkMeta:s,parent:i.type})})}this.tickImmediate()}getMainFwdBufferInfo(){let e=this.getBufferOutput();return this.getFwdBufferInfo(e,H.MAIN)}get maxBufferLength(){let{levels:e,level:t}=this,i=e?.[t];return i?this.getMaxBufferLength(i.maxBitrate):this.config.maxBufferLength}backtrack(e){this.couldBacktrack=!0,this.backtrackFragment=e,this.resetTransmuxer(),this.flushBufferGap(e),this.fragmentTracker.removeFragment(e),this.fragPrevious=null,this.nextLoadPosition=e.start,this.state=_.IDLE}get nextLevel(){let e=this.nextBufferedFrag;return e?e.level:-1}get currentFrag(){var e;if(this.fragPlaying)return this.fragPlaying;let t=((e=this.media)==null?void 0:e.currentTime)||this.lastCurrentTime;return B(t)?this.getAppendedFrag(t):null}get currentProgramDateTime(){var e;let t=((e=this.media)==null?void 0:e.currentTime)||this.lastCurrentTime;if(B(t)){let i=this.getLevelDetails(),s=this.currentFrag||(i?qt(null,i.fragments,t):null);if(s){let n=s.programDateTime;if(n!==null){let a=n+(t-s.start)*1e3;return new Date(a)}}}return null}get currentLevel(){let e=this.currentFrag;return e?e.level:-1}get nextBufferedFrag(){let e=this.currentFrag;return e?this.followingBufferedFrag(e):null}get forceStartLoad(){return this._forceStartLoad}},Ls=class extends Is{constructor(...e){super(...e),this.currentOp=void 0,this.nextOp=void 0,this.cached=[],this.cachedSize=0,this.cacheFragmentData=!0,this.initDetails=void 0,this.onBufferedToEnd=()=>{let t=this.media;t!=null&&t.seeking&&(t.currentTime=t.currentTime)},this.onMediaSeeking=()=>{}}setInitPts(e){this.initPTS=e.slice()}loadMediaAt(e,t){if(!this.hls)return;let{seekOnAppend:i}=t,s=e+this.timelineOffset;switch(this.nextLoadPosition=this.lastCurrentTime=s,this.startPosition=e,this.state){case _.STOPPED:case _.ENDED:case _.ERROR:this.state=_.IDLE}this.state===_.IDLE?(this.hls.resumeBuffering(),this.tick(),this.currentOp=[s,t]):this.nextOp=[s,t],this.hls.off(y.BUFFERED_TO_END,this.onBufferedToEnd);let n=this.media;i&&n&&this.seekTo(s)&&(this.currentOp=[s,t],this.nextOp=void 0,this.flushPipeline(s,!0))}seekTo(e){let t=this.media;if(t){var i;let s=(i=this.getLevelDetails())==null?void 0:i.edge,n=s!==void 0?s:t.duration;if(e>=n&&(e=n-.01),J.bufferInfo(t,e,0).len>0&&this.getBufferedAt(e))return t.currentTime=e,!0}return!1}getBufferedAt(e){return this.fragmentTracker.getBufferedFrag(e,H.MAIN)}cacheSet(e,t){if(!this.hls)return;e.data=t;let i=this.cached;i.push(e),this.cachedSize+=t.buffer.byteLength;let s=this.hls.config.iframeCacheLimit;for(;this.cachedSize>s&&i.length>1;){let n=i.shift();if(n.data)this.cachedSize-=n.data.byteLength,n.data=void 0;else{this.cached=i.filter(a=>!!a.data),this.cachedSize=i.reduce((a,{data:o})=>o?o.buffer.byteLength:0,0);break}}}onHandlerDestroying(){this.cached.length=0,this.cachedSize=0,super.onHandlerDestroying()}_handleFragmentLoadProgress(e){let t=e.frag,{part:i,payload:s}=e;this.cacheFragmentData&&!i&&s!=null&&s.byteLength&&!t.data&&ve(t)&&this.cacheSet(t,new Uint8Array(s.slice(0))),super._handleFragmentLoadProgress(e)}loadFragment(e,t,i){let s=this.fragmentTracker.getState(e);if((s===ye.NOT_LOADED||s===ye.PARTIAL)&&this.canReplayCached(e)){this.replayCachedFragment(e);return}super.loadFragment(e,t,i)}canReplayCached(e){var t;if(!this.cacheFragmentData||!((t=e.data)!=null&&t.byteLength))return!1;let i=e.decryptdata;return i?.keyFormat!=="identity"||!!i.key}replayCachedFragment(e){let t=e.data.slice().buffer;this.log(`Buffering cached ${e.type} sn: ${e.sn} of level ${e.level} (${t.byteLength} bytes)`),this.fragCurrent=e,this.startFragRequested=!0;let i=e.stats=new li;i.loading.start=i.loading.first=i.loading.end=self.performance.now(),i.loaded=i.total=t.byteLength,i.chunkCount=1,this.state=_.FRAG_LOADING;let s={frag:e,part:null,payload:t,networkDetails:null};this._handleFragmentLoadProgress(s),this.hls.trigger(y.FRAG_LOADED,s),this._handleFragmentLoadComplete(s)}fragBufferedComplete(e,t){super.fragBufferedComplete(e,t);let{currentOp:i,nextOp:s}=this;this.currentOp=this.nextOp=void 0,this.state=_.STOPPED,i!=null&&i[1].seekOnAppend&&(this.flushPipeline(i[0],!s),this.seekTo(i[0])||this.log(`Could not seek to ${i[0]} after fragment buffered (superseded or flushed) buffer: ${this.media?fs(J.getBuffered(this.media)):"none"}`)),s&&this.loadMediaAt.apply(this,s)}flushPipeline(e,t){if(t){let i=this.media;if(i){let s=J.bufferInfo(i,e,0),n=s.len?s.nextStart:0;n&&(this.fragmentTracker.removeFragmentsInRange(n,1/0,H.MAIN),this.flushMainBuffer(n,1/0))}this.hls.once(y.BUFFERED_TO_END,this.onBufferedToEnd)}this.hls.trigger(y.BUFFER_EOS,{type:"video"})}get playhead(){return this.nextLoadPosition}startLoad(){if(!this.startFragRequested){let e=this.hls;e.nextLoadLevel=e.startLevel===-1?0:e.firstAutoLevel}}seekToStartPos(){}setStartPosition(){}alignPlaylists(e,t,i){let s=this.initDetails;return this.initDetails=null,super.alignPlaylists(e,t,i||s||void 0)}getMainFwdBufferInfo(){let e=this.playhead,t=this.getBufferedAt(e);if(t){let i=t.duration;return{len:i,start:e,end:e+i,bufferedIndex:-1}}return{len:0,start:e,end:e,bufferedIndex:-1}}_streamEnded(){let e=this.playhead,t=this.fragmentTracker.getBufferedFrag(e,H.MAIN);return!!(t!=null&&t.endList)}},xr=class extends Ls{constructor(...e){super(...e),this._img=void 0,this.queued=void 0,this.cacheFragmentData=!1}get image(){return this._img}set image(e){var t;let i=(t=this._img)==null?void 0:t.src;i&&self.URL.revokeObjectURL(i),this._img=e}loadMediaAt(e){if(!this.hls)return;let t=e+this.timelineOffset;switch(this.nextLoadPosition=this.lastCurrentTime=t,this.startPosition=e,this.state){case _.STOPPED:case _.ENDED:case _.ERROR:this.state=_.IDLE}if(this.state===_.IDLE){if(this.hls.resumeBuffering(),this.media||(this.media={}),this.tick(),this.state===_.IDLE){let i=this.getBufferedAt(e);i&&(this.fragCurrent=i,this.updateImage(i,null))}}else{let i=this.fragCurrent;(!i||e>=i.start&&e<i.end)&&(this.queued=[t])}}updateImage(e,t,i){let s=e.data;s||this.fragmentTracker.removeFragment(e);let n=this._img;if(n&&s){let a=self.performance.now(),o=t?t.stats:e.stats;o.buffering.start=e.stats.buffering.start=a,n.onload=()=>{if(!this.hls)return;let c=this.hls.levels[e.level];c!=null&&c.fragmentError&&(c.fragmentError=0,e.stats.retry=0);let h=self.performance.now(),u=t?t.stats:e.stats;u.buffering.end=e.stats.buffering.end=h,this.hls.trigger(y.FRAG_BUFFERED,{frag:e,part:t,stats:u,id:e.type,chunkMeta:i})},n.onerror=()=>{this.handleError("Image decode error",e,t,i)};let l=n.src;l&&self.URL.revokeObjectURL(l);let d=new Blob([s],{type:"image/jpeg"});n.src=self.URL.createObjectURL(d)}else this.state=_.STOPPED,this.processQueued()}processQueued(){let e=this.queued;this.queued=void 0,e&&this.loadMediaAt.apply(this,e)}handleError(e,t,i,s){if(!this.hls)return;let n=new Error(e);this.hls.trigger(y.ERROR,{type:W.MEDIA_ERROR,details:L.FRAG_PARSING_ERROR,chunkMeta:s,frag:t,part:i,fatal:!1,error:n,err:n})}_bufferInitSegment(){}bufferFragmentData(e,t,i,s){super.bufferFragmentData(e,t,i,s,!0);let n=Q(new Uint8Array(e.data1),["mdat"]);if(n.length===0){this.handleError("Could not find I-Frame mdat",t,i,s);return}let a=t;this.cacheSet(a,n[0]),this.updateImage(a,i,s)}fragBufferedComplete(e,t){this.fragmentTracker.fragBuffered(e,!0),super.fragBufferedComplete(e,t),this.processQueued()}checkFragPlaying(){var e;let t=(e=this.fragPrevious)==null?void 0:e.start;if(t!==void 0){let i=this.getAppendedFrag(t);if(i&&!ti(i,this.fragPlaying))return this.fragPlaying=i,!0}return!1}getMainFwdBufferInfo(){return{len:0,start:this.playhead,end:this.playhead,bufferedIndex:-1}}},pg=10,yg="Image I-Frame player does not accept HTMLMediaElements",No={seekOnAppend:!0},qi,vn,Ir=class extends Oe{constructor(e,t){super("iframes",e.logger),this.hls=void 0,this.stats=void 0,this.variableList=null,this.initPTS=[],this.iframeInstances=void 0,this.instanceCounter=0,qi||(qi=vg(t)),vn||(vn=Eg(qi)),this.hls=e,this.iframeInstances=[],this.registerListeners()}registerListeners(){let e=this.hls;e&&(e.on(y.MANIFEST_LOADING,this.clearAsset,this),e.on(y.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(y.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(y.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(y.FRAG_BUFFERED,this.onFragBuffered,this),e.on(y.DESTROYING,this.onDestroying,this))}unregisterListeners(){let e=this.hls;e&&(e.off(y.MANIFEST_LOADING,this.clearAsset,this),e.off(y.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(y.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(y.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(y.FRAG_BUFFERED,this.onFragBuffered,this),e.off(y.DESTROYING,this.onDestroying,this))}clearAsset(){this.stats=void 0,this.variableList=null,this.initPTS=[],this.iframeInstances.forEach(e=>e.destroy()),this.iframeInstances.length=0}onDestroying(){this.unregisterListeners(),this.clearAsset(),this.hls=void 0}onManifestLoaded(e,t){this.stats=t.stats,this.variableList=t.variableList}onLevelsUpdated(e,{levels:t}){var i;let s=(i=this.hls)==null?void 0:i.pathwayPriority;t.length&&s&&this.iframeInstances.forEach(n=>{n.pathwayPriority=s})}onInitPtsFound(e,{id:t,timestampOffsets:i}){t===H.MAIN&&(this.initPTS=i)}onFragBuffered(e,t){var i;let s=this.hls;s&&s.hasEnoughToStart&&(((i=s.mainForwardBufferInfo)==null?void 0:i.len)||0)>pg&&this.iframeInstances.forEach(n=>{if(!n.loadingEnabled){var a;n.startLoad(((a=this.hls)==null||(a=a.media)==null?void 0:a.currentTime)||0)}})}createIFramePlayer(e){var t;return this.createInstance(qi,(t=this.hls)==null?void 0:t.iframeVariants,e)}createImageIFramePlayer(e){var t;let i=(t=this.hls)==null?void 0:t.iframeVariants.filter(s=>s.imageCodec);return this.createInstance(vn,i,e,"image-")}createInstance(e,t,i,s){let{hls:n}=this;if(!n)return null;let{url:a,userConfig:o,latestLevelDetails:l,loadLevelObj:d,loadLevel:c,bandwidthEstimate:h,sessionId:u}=n,{stats:f,variableList:g}=this;if(!(t!=null&&t.length)||!f||!a)return null;let m=`${s||""}iframe-player-${this.instanceCounter++}`,p=n.levels,v=d||p[c],T=Sl(v,o.videoPreference),E=v?.pathwayId||".",S=Y(Y({},o),{},{loggerId:m,primarySessionId:u,videoPreference:T,abrEwmaDefaultEstimate:h,streamController:void 0,audioStreamController:void 0,audioTrackController:void 0,subtitleStreamController:void 0,subtitleTrackController:void 0,timelineController:void 0,id3TrackController:void 0,fpsController:void 0,gapController:void 0,iframeController:void 0,cmcd:void 0,interstitialsController:void 0,backBufferLength:1/0,maxMaxBufferLength:1,capLevelToPlayerSize:!0,enableWorker:!1,autoStartLoad:!1,startFragPrefetch:!1,testBandwidth:!1,progressive:!1},i),b=new e(S,a,this.initPTS,l);return this.iframeInstances=this.iframeInstances.filter(A=>!A.url),this.iframeInstances.push(b),b.trigger(y.MANIFEST_LOADED,{levels:t,contentSteering:{uri:"",pathwayId:E},sessionKeys:null,audioTracks:[],iframeVariants:[],sessionData:null,startTimeOffset:null,stats:f,networkDetails:null,url:a,variableList:g}),b}};function vg(r){return class extends r{constructor(t,i,s,n){t.streamController||(t.streamController=Ls),super(t),this._url=i,this.streamController.setInitPts(s),this.streamController.initDetails=n}loadSource(){}loadMediaAt(t,i=No){if(t<0)return;let s=Y(Y({},No),i);this.loadingEnabled||this.startLoad(t),this.streamController.loadMediaAt(t,s)}}}function Eg(r){return class extends r{constructor(t,i,s,n){t.cmcdController=void 0,t.emeController=void 0,t.streamController||(t.streamController=xr),t.capLevelController=void 0,t.bufferController=void 0,super(t,i,s,n)}attachImage(t){this.streamController.image=t}detachImage(){this.streamController.image=void 0}loadSource(){}attachMedia(){throw new Error(yg)}detachMedia(){}recoverMediaError(){}transferMedia(){return null}loadMediaAt(t){if(t<0)return null;this.loadingEnabled||this.startLoad(t),this.streamController.loadMediaAt(t)}}}var St=.025,Rs=function(r){return r[r.Point=0]="Point",r[r.Range=1]="Range",r}({});function Tg(r,e,t){return`${r.identifier}-${t+1}-${ai(e)}`}var Lr=class{constructor(e,t){this.base=void 0,this._duration=null,this._timelineStart=null,this.appendInPlaceDisabled=void 0,this.appendInPlaceStarted=void 0,this.dateRange=void 0,this.hasPlayed=!1,this.cumulativeDuration=0,this.resumeOffset=NaN,this.playoutLimit=NaN,this.restrictions={skip:!1,jump:!1},this.snapOptions={out:!1,in:!1},this.assetList=[],this.assetListLoader=void 0,this.assetListResponse=null,this.resumeAnchor=void 0,this.error=void 0,this.resetOnResume=void 0,this.base=t,this.dateRange=e,this.setDateRange(e)}setDateRange(e){this.dateRange=e,this.resumeOffset=e.attr.optionalFloat("X-RESUME-OFFSET",this.resumeOffset),this.playoutLimit=e.attr.optionalFloat("X-PLAYOUT-LIMIT",this.playoutLimit),this.restrictions=e.attr.enumeratedStringList("X-RESTRICT",this.restrictions),this.snapOptions=e.attr.enumeratedStringList("X-SNAP",this.snapOptions)}reset(){var e;this.appendInPlaceStarted=!1,(e=this.assetListLoader)==null||e.destroy(),this.assetListLoader=void 0,this.supplementsPrimary||(this.assetListResponse=null,this.assetList=[],this._duration=null)}isAssetPastPlayoutLimit(e){var t;if(e>0&&e>=this.assetList.length)return!0;let i=this.playoutLimit;return e<=0||isNaN(i)?!1:i===0?!0:(((t=this.assetList[e])==null?void 0:t.startOffset)||0)>i}findAssetIndex(e){return this.assetList.indexOf(e)}get identifier(){return this.dateRange.id}get startDate(){return this.dateRange.startDate}get startTime(){let e=this.dateRange.startTime;if(this.snapOptions.out){let t=this.dateRange.tagAnchor;if(t)return Bo(t,e)?Zi(e,t):e}return e}get startOffset(){return this.cue.pre?0:this.startTime}get startIsAligned(){if(this.startTime===0||this.snapOptions.out)return!0;let e=this.dateRange.tagAnchor;if(e){let t=this.dateRange.startTime,i=Zi(t,e);return t-i<.1}return!1}get resumptionOffset(){let e=this.resumeOffset,t=B(e)?e:this.duration;return this.cumulativeDuration+t}get resumeTime(){let e=this.startOffset+this.resumptionOffset;if(this.snapOptions.in){let t=this.resumeAnchor;if(t)return Bo(t,e)?Zi(e,t):e}return e}get appendInPlace(){return this.appendInPlaceStarted?!0:this.appendInPlaceDisabled?!1:!!(!this.cue.once&&!this.cue.pre&&this.startIsAligned&&(isNaN(this.playoutLimit)&&isNaN(this.resumeOffset)||this.resumeOffset&&this.duration&&Math.abs(this.resumeOffset-this.duration)<St))}set appendInPlace(e){if(this.appendInPlaceStarted){this.resetOnResume=!e;return}this.appendInPlaceDisabled=!e}get timelineStart(){return this._timelineStart!==null?this._timelineStart:this.startTime}set timelineStart(e){this._timelineStart=e}get duration(){let e=this.playoutLimit,t;return this._duration!==null?t=this._duration:this.dateRange.duration?t=this.dateRange.duration:t=this.dateRange.plannedDuration||0,!isNaN(e)&&e<t&&(t=e),t}set duration(e){this._duration=e}get cue(){return this.dateRange.cue}get timelineOccupancy(){return this.dateRange.attr["X-TIMELINE-OCCUPIES"]==="RANGE"?Rs.Range:Rs.Point}get supplementsPrimary(){return this.dateRange.attr["X-TIMELINE-STYLE"]==="PRIMARY"}get contentMayVary(){return this.dateRange.attr["X-CONTENT-MAY-VARY"]!=="NO"}get assetUrl(){return this.dateRange.attr["X-ASSET-URI"]}get assetListUrl(){return this.dateRange.attr["X-ASSET-LIST"]}get baseUrl(){return this.base.url}get assetListLoaded(){return this.assetList.length>0||this.assetListResponse!==null}toString(){return Sg(this)}};function Zi(r,e){return r-e.start<e.duration/2&&!(Math.abs(r-(e.start+e.duration))<St)?e.start:e.start+e.duration}function Bo(r,e){return e>r.start-St&&e<r.start+r.duration+St}function Dd(r,e,t){let i=new self.URL(r,t);return i.protocol!=="data:"&&Tt(i,"_HLS_primary_id",e),i}function En(r,e){for(;(t=r.assetList[++e])!=null&&t.error;)var t;return e}function Sg(r){return`["${r.identifier}" ${r.cue.pre?"<pre>":r.cue.post?"<post>":""}${r.timelineStart.toFixed(2)}-${r.resumeTime.toFixed(2)}]`}function $t(r){let e=r.timelineStart,t=r.duration||0;return`["${r.identifier}" ${e.toFixed(2)}-${(e+t).toFixed(2)}]`}var Rr=class{constructor(e,t,i,s){this.hls=void 0,this.interstitial=void 0,this.assetItem=void 0,this.tracks=null,this.hasDetails=!1,this.mediaAttached=null,this._currentTime=void 0,this._bufferedEosTime=void 0,this.checkPlayout=()=>{this.reachedPlayout(this.currentTime)&&this.hls&&this.hls.trigger(y.PLAYOUT_LIMIT_REACHED,{})};let n=this.hls=new e(t);this.interstitial=i,this.assetItem=s;let a=()=>{this.hasDetails=!0};n.once(y.LEVEL_LOADED,a),n.once(y.AUDIO_TRACK_LOADED,a),n.once(y.SUBTITLE_TRACK_LOADED,a),n.on(y.MEDIA_ATTACHING,(o,{media:l})=>{this.removeMediaListeners(),this.mediaAttached=l,this.interstitial.playoutLimit&&(l.addEventListener("timeupdate",this.checkPlayout),this.appendInPlace&&n.on(y.BUFFER_APPENDED,()=>{let c=this.bufferedEnd;this.reachedPlayout(c)&&(this._bufferedEosTime=c,n.trigger(y.BUFFERED_TO_END,void 0))}))})}get appendInPlace(){return this.interstitial.appendInPlace}loadSource(){let e=this.hls;if(e)if(e.url)e.levels.length&&!e.started&&e.startLoad(-1,!0);else{let t=this.assetItem.uri;try{t=Dd(t,e.config.primarySessionId||"").href}catch{}e.loadSource(t)}}bufferedInPlaceToEnd(e,t){var i;if(!this.appendInPlace)return!1;if((i=this.hls)!=null&&i.bufferedToEnd)return!0;if(!e)return!1;let s=Math.min(this._bufferedEosTime||1/0,this.duration),n=this.timelineOffset+(t||0),a=J.bufferInfo(e,n,.02);return this.getAssetTime(a.end)>=s-.02}reachedPlayout(e){let i=this.interstitial.playoutLimit;return this.startOffset+e>=i}get destroyed(){var e;return!((e=this.hls)!=null&&e.userConfig)}get assetId(){return this.assetItem.identifier}get interstitialId(){return this.assetItem.parentIdentifier}get media(){var e;return((e=this.hls)==null?void 0:e.media)||null}get bufferedEnd(){let e=this.media||this.mediaAttached;if(!e)return this._bufferedEosTime?this._bufferedEosTime:this.currentTime;let t=J.bufferInfo(e,e.currentTime,.001);return this.getAssetTime(t.end)}get currentTime(){let e=this.media||this.mediaAttached;return e?this.getAssetTime(e.currentTime):this._currentTime||0}get duration(){let e=this.assetItem.duration;if(!e)return 0;let t=this.interstitial.playoutLimit;if(t){let i=t-this.startOffset;if(i>0&&i<e)return i}return e}get remaining(){let e=this.duration;return e?Math.max(0,e-this.currentTime):0}get startOffset(){return this.assetItem.startOffset}get timelineOffset(){var e;return((e=this.hls)==null?void 0:e.config.timelineOffset)||0}set timelineOffset(e){let t=this.timelineOffset;if(e!==t){let i=e-t;if(Math.abs(i)>1/9e4&&this.hls){if(this.hasDetails)throw new Error("Cannot set timelineOffset after playlists are loaded");this.hls.config.timelineOffset=e}}}getAssetTime(e){let t=this.timelineOffset,i=this.duration;return Math.min(Math.max(0,e-t),i)}removeMediaListeners(){let e=this.mediaAttached;e&&(this._currentTime=e.currentTime,this.bufferSnapShot(),e.removeEventListener("timeupdate",this.checkPlayout))}bufferSnapShot(){if(this.mediaAttached){var e;(e=this.hls)!=null&&e.bufferedToEnd&&(this._bufferedEosTime=this.bufferedEnd)}}destroy(){this.removeMediaListeners(),this.hls&&this.hls.destroy(),this.hls=null,this.tracks=this.mediaAttached=this.checkPlayout=null}attachMedia(e){var t;this.loadSource(),(t=this.hls)==null||t.attachMedia(e)}detachMedia(){var e;this.removeMediaListeners(),this.mediaAttached=null,(e=this.hls)==null||e.detachMedia()}resumeBuffering(){var e;(e=this.hls)==null||e.resumeBuffering()}pauseBuffering(){var e;(e=this.hls)==null||e.pauseBuffering()}transferMedia(){var e;return this.bufferSnapShot(),((e=this.hls)==null?void 0:e.transferMedia())||null}resetDetails(){let e=this.hls;if(e&&this.hasDetails){e.stopLoad();let t=i=>delete i.details;e.levels.forEach(t),e.allAudioTracks.forEach(t),e.allSubtitleTracks.forEach(t),this.hasDetails=!1}}on(e,t,i){var s;(s=this.hls)==null||s.on(e,t)}once(e,t,i){var s;(s=this.hls)==null||s.once(e,t)}off(e,t,i){var s;(s=this.hls)==null||s.off(e,t)}toString(){var e;return`HlsAssetPlayer: ${$t(this.assetItem)} ${(e=this.hls)==null?void 0:e.sessionId} ${this.appendInPlace?"append-in-place":""}`}},Tn=.033,Pr=class extends Oe{constructor(e,t){super("interstitials-sched",t),this.onScheduleUpdate=void 0,this.eventMap={},this.events=null,this.items=null,this.durations={primary:0,playout:0,integrated:0},this.onScheduleUpdate=e}destroy(){this.reset(),this.onScheduleUpdate=null}reset(){this.eventMap={},this.setDurations(0,0,0),this.events&&this.events.forEach(e=>e.reset()),this.events=this.items=null}resetErrorsInRange(e,t){return this.events?this.events.reduce((i,s)=>e<=s.startOffset&&t>s.startOffset?(delete s.error,i+1):i,0):0}get duration(){let e=this.items;return e?e[e.length-1].end:0}get length(){return this.items?this.items.length:0}getEvent(e){return e&&this.eventMap[e]||null}hasEvent(e){return e in this.eventMap}findItemIndex(e,t){if(e.event)return this.findEventIndex(e.event.identifier);let i=-1;e.nextEvent?i=this.findEventIndex(e.nextEvent.identifier)-1:e.previousEvent&&(i=this.findEventIndex(e.previousEvent.identifier)+1);let s=this.items;if(s)for(s[i]||(t===void 0&&(t=e.start),i=this.findItemIndexAtTime(t));i>=0&&(n=s[i])!=null&&n.event;){var n;i--}return i}findItemIndexAtTime(e,t){let i=this.items;if(i)for(let s=0;s<i.length;s++){let n=i[s];t&&t!=="primary"&&(n=n[t]);let a=n.start,o=i[s].event,l=o!=null&&o.cue.pre?o.duration:n.end;if(e===a||e>a&&e<l)return s}return-1}findJumpRestrictedIndex(e,t){let i=this.items;if(i)for(let s=e;s<=t&&i[s];s++){let n=i[s].event;if(n!=null&&n.restrictions.jump&&!n.appendInPlace)return s}return-1}findEventIndex(e){let t=this.items;if(t)for(let s=t.length;s--;){var i;if(((i=t[s].event)==null?void 0:i.identifier)===e)return s}return-1}findAssetIndex(e,t){let i=e.assetList,s=i.length;if(s>1)for(let n=0;n<s;n++){let a=i[n];if(!a.error){let o=a.timelineStart;if(t===o||t>o&&(t<o+(a.duration||0)||n===s-1))return n}}return 0}get assetIdAtEnd(){var e;let t=(e=this.items)==null||(e=e[this.length-1])==null?void 0:e.event;if(t){let i=t.assetList,s=i[i.length-1];if(s)return s.identifier}return null}parseInterstitialDateRanges(e,t,i=0){let s=e.main.details,{dateRanges:n}=s,a=this.events,o=this.parseDateRanges(n,{url:s.url},t),l=Object.keys(n),d=a?a.filter(c=>l.indexOf(c.identifier)===-1):[];o.length&&o.sort((c,h)=>{let u=c.cue.pre,f=c.cue.post,g=h.cue.pre,m=h.cue.post;if(u&&!g)return-1;if(g&&!u||f&&!m)return 1;if(m&&!f)return-1;if(!u&&!g&&!f&&!m){let p=c.startTime,v=h.startTime;if(p!==v)return p-v}return c.dateRange.tagOrder-h.dateRange.tagOrder}),this.events=o,d.forEach(c=>{this.removeEvent(c)}),this.updateSchedule(e,d,i)}updateSchedule(e,t=[],i=0,s=!1){let n=this.events||[];if(n.length||t.length||this.length<2){let a=this.items,o=this.parseSchedule(n,e,i);(s||t.length||a?.length!==o.length||o.some((d,c)=>Math.abs(d.playout.start-a[c].playout.start)>.005||Math.abs(d.playout.end-a[c].playout.end)>.005))&&(this.items=o,this.onScheduleUpdate(t,a))}}parseDateRanges(e,t,i){let s=[],n=Object.keys(e);for(let a=0;a<n.length;a++){let o=n[a],l=e[o];if(l.isInterstitial){let d=this.eventMap[o];d?d.setDateRange(l):(d=new Lr(l,t),this.eventMap[o]=d,i===!1&&(d.appendInPlace=i)),s.push(d)}}return s}parseSchedule(e,t,i=0){let s=[],n=t.main.details,a=n.live?1/0:n.edge,o=0;if(e=e.filter(d=>!d.error&&!(d.cue.once&&d.hasPlayed)),e.length){this.resolveOffsets(e,t);let d=0,c=0;if(e.forEach((h,u)=>{let f=h.cue.pre,g=h.cue.post,m=e[u-1]||null,p=h.appendInPlace,v=g?a:h.startOffset,T=h.duration,E=h.timelineOccupancy===Rs.Range?T:0,S=f&&n.live?i+(h.resumeOffset||0):0,b=S||h.resumptionOffset,A=m?.startTime===v,x=v+h.cumulativeDuration,R=p?x+T:v+b;if(f||!g&&v<=0){let I=c;c+=E,h.timelineStart=x;let k=o;o+=T,s.push({event:h,start:x,end:R,playout:{start:k,end:o},integrated:{start:I,end:c}})}else if(v<=a){if(!A){let D=v-d;if(D>Tn){let F=d,G=c;c+=D;let $=o;o+=D;let C={previousEvent:e[u-1]||null,nextEvent:h,start:F,end:F+D,playout:{start:$,end:o},integrated:{start:G,end:c}};s.push(C)}else D>0&&m&&(m.cumulativeDuration+=D,s[s.length-1].end=v)}g&&(R=x),h.timelineStart=x;let I=c;c+=E;let k=o;o+=T,s.push({event:h,start:x,end:R,playout:{start:k,end:o},integrated:{start:I,end:c}})}else return;let P=S||h.resumeTime;g||P>a?d=a:!f&&R&&h.appendInPlaceStarted&&P-R>Tn?d=R:d=P}),d<a){var l;let h=d,u=c,f=a-d;c+=f;let g=o;o+=f,s.push({previousEvent:((l=s[s.length-1])==null?void 0:l.event)||null,nextEvent:null,start:d,end:h+f,playout:{start:g,end:o},integrated:{start:u,end:c}})}this.setDurations(a,o,c)}else s.push({previousEvent:null,nextEvent:null,start:0,end:a,playout:{start:0,end:a},integrated:{start:0,end:a}}),this.setDurations(a,a,a);return s}setDurations(e,t,i){this.durations={primary:e,playout:t,integrated:i}}resolveOffsets(e,t){let i=t.main.details,s=i.live?1/0:i.edge,n=0,a=-1;e.forEach((o,l)=>{let d=o.cue.pre,c=o.cue.post,h=d?0:c?s:o.startTime;this.updateAssetDurations(o),a===h?o.cumulativeDuration=n:(n=0,a=h),!c&&o.snapOptions.in&&(o.resumeAnchor=qt(null,i.fragments,o.startOffset+o.resumptionOffset,0,0)||void 0),o.appendInPlace&&!o.appendInPlaceStarted&&(this.primaryCanResumeInPlaceAt(o,t)||(o.appendInPlace=!1)),!o.appendInPlace&&l+1<e.length&&e[l+1].startTime-e[l].resumeTime<Tn&&(e[l+1].appendInPlace=!1,e[l+1].appendInPlace&&this.warn(`Could not change append strategy for abutting event ${o}`));let f=B(o.resumeOffset)?o.resumeOffset:o.duration;n+=f})}primaryCanResumeInPlaceAt(e,t){let i=e.resumeTime,s=e.startTime+e.resumptionOffset;return Math.abs(i-s)>St?(this.log(`"${e.identifier}" resumption ${i} not aligned with estimated timeline end ${s}`),!1):!Object.keys(t).some(a=>{let o=t[a].details,l=o.edge;if(i>=l)return this.log(`"${e.identifier}" resumption ${i} past ${a} playlist end ${l}`),!1;let d=qt(null,o.fragments,i);if(!d)return this.log(`"${e.identifier}" resumption ${i} does not align with any fragments in ${a} playlist (${o.fragStart}-${o.fragmentEnd})`),!0;let c=a==="audio"?.175:0;return Math.abs(d.start-i)<St+c||Math.abs(d.end-i)<St+c?!1:(this.log(`"${e.identifier}" resumption ${i} not aligned with ${a} fragment bounds (${d.start}-${d.end} sn: ${d.sn} cc: ${d.cc})`),!0)})}updateAssetDurations(e){if(!e.assetListLoaded)return;let t=e.timelineStart,i=0,s=!1,n=!1;for(let a=0;a<e.assetList.length;a++){let o=e.assetList[a],l=t+i;o.startOffset=i,o.timelineStart=l,s||(s=o.duration===null),n||(n=!!o.error);let d=o.error?0:o.duration||0;i+=d}s&&!n?e.duration=Math.max(i,e.duration):e.duration=i}removeEvent(e){e.reset(),delete this.eventMap[e.identifier]}};function Ue(r){return`[${r.event?'"'+r.event.identifier+'"':"primary"}: ${r.start.toFixed(2)}-${r.end.toFixed(2)}]`}var _r=class{constructor(e){this.hls=void 0,this.hls=e}destroy(){this.hls=null}loadAssetList(e,t){let i=e.assetListUrl,s;try{s=Dd(i,this.hls.sessionId,e.baseUrl)}catch(u){let f=this.assignAssetListError(e,L.ASSET_LIST_LOAD_ERROR,u,i);this.hls.trigger(y.ERROR,f);return}t&&s.protocol!=="data:"&&Tt(s,"_HLS_start_offset",""+t);let n=this.hls.config,a=n.loader,o=new a(n),l={type:te.INTERSTITIAL_ASSET_LIST,responseType:"json",url:s.href},d=n.interstitialAssetListLoadPolicy.default,c={loadPolicy:d,timeout:d.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(u,f,g,m)=>{let p=u.data,v=p?.ASSETS;if(!Array.isArray(v)){let T=this.assignAssetListError(e,L.ASSET_LIST_PARSING_ERROR,new Error("Invalid interstitial asset list"),g.url,f,m);this.hls.trigger(y.ERROR,T);return}e.assetListResponse=p,this.hls.trigger(y.ASSET_LIST_LOADED,{event:e,assetListResponse:p,networkDetails:m})},onError:(u,f,g,m)=>{let p=this.assignAssetListError(e,L.ASSET_LIST_LOAD_ERROR,new Error(`Error loading X-ASSET-LIST: HTTP status ${u.code} ${u.text} (${f.url})`),f.url,m,g);this.hls.trigger(y.ERROR,p)},onTimeout:(u,f,g)=>{let m=this.assignAssetListError(e,L.ASSET_LIST_LOAD_TIMEOUT,new Error(`Timeout loading X-ASSET-LIST (${f.url})`),f.url,u,g);this.hls.trigger(y.ERROR,m)}};return o.load(l,c,h),this.hls.trigger(y.ASSET_LIST_LOADING,{event:e}),o}assignAssetListError(e,t,i,s,n,a){return e.error=i,{type:W.NETWORK_ERROR,details:t,fatal:!1,interstitial:e,url:s,error:i,networkDetails:a,stats:n}}};function $o(r){var e;r==null||(e=r.play())==null||e.catch(()=>{})}function Pt(r,e){return`[${r}] Advancing timeline position to ${e}`}var kr=class extends Oe{constructor(e,t){super("interstitials",e.logger),this.HlsPlayerClass=void 0,this.hls=void 0,this.assetListLoader=void 0,this.mediaSelection=null,this.altSelection=null,this.media=null,this.detachedData=null,this.requiredTracks=null,this.manager=null,this.playerQueue=[],this.bufferedPos=-1,this.timelinePos=-1,this.schedule=void 0,this.playingItem=null,this.bufferingItem=null,this.waitingItem=null,this.endedItem=null,this.playingAsset=null,this.endedAsset=null,this.bufferingAsset=null,this.bufferPastEdge=!1,this.shouldPlay=!1,this.onPlay=()=>{this.shouldPlay=!0},this.onPause=()=>{this.shouldPlay=!1},this.onSeeking=()=>{let i=this.currentTime;if(i===void 0||this.playbackDisabled||!this.schedule)return;let s=i-this.timelinePos;if(Math.abs(s)<1/7056e5)return;let a=s<=-.01;this.timelinePos===-1&&!this.effectivePlayingItem&&this.checkStart(),this.timelinePos=i,this.bufferedPos=i;let o=this.playingItem;if(!o){this.checkBuffer();return}if(a&&this.schedule.resetErrorsInRange(i,i-s)&&this.updateSchedule(!0),this.checkBuffer(),a&&i<o.start||i>=o.end){var l;let f=this.findItemIndex(o),g=this.schedule.findItemIndexAtTime(i);if(g===-1&&(g=f+(a?-1:1),this.log(`seeked ${a?"back ":""}to position not covered by schedule ${i} (resolving from ${f} to ${g})`)),!this.isInterstitial(o)&&(l=this.media)!=null&&l.paused&&(this.shouldPlay=!1),!a&&g>f){let m=this.schedule.findJumpRestrictedIndex(f+1,g);if(m>f){this.setSchedulePosition(m);return}}this.setSchedulePosition(g);return}let d=this.playingAsset;if(!d){if(this.playingLastItem&&this.isInterstitial(o)){let f=o.event.assetList[0];f&&(this.endedItem=this.playingItem,this.playingItem=null,this.setScheduleToAssetAtTime(i,f))}return}let c=d.timelineStart,h=d.duration||0;if(a&&i<c||i>=c+h){var u;(u=o.event)!=null&&u.appendInPlace&&(this.clearAssetPlayers(o.event,o),this.flushFrontBuffer(i)),this.setScheduleToAssetAtTime(i,d)}},this.onTimeupdate=()=>{let i=this.currentTime;if(i===void 0||this.playbackDisabled)return;if(this.timelinePos===-1&&!this.effectivePlayingItem&&this.checkStart(),i>this.timelinePos)this.timelinePos=i,i>this.bufferedPos&&this.checkBuffer();else return;let s=this.playingItem;if(!s||this.playingLastItem)return;if(i>=s.end){this.timelinePos=s.end;let o=this.findItemIndex(s);this.setSchedulePosition(o+1)}let n=this.playingAsset;if(!n)return;let a=n.timelineStart+(n.duration||0);i>=a&&this.setScheduleToAssetAtTime(i,n)},this.onScheduleUpdate=(i,s)=>{let n=this.schedule;if(!n)return;let a=this.playingItem,o=n.events||[],l=n.items||[],d=n.durations,c=i.map(m=>m.identifier),h=!!(o.length||c.length);(h||s)&&this.log(`INTERSTITIALS_UPDATED (${o.length}): ${o}
|
|
41
41
|
Schedule: ${l.map(m=>Ue(m))} pos: ${this.timelinePos}`),c.length&&this.log(`Removed events ${c}`);let u=null,f=null;a&&(u=this.updateItem(a,this.timelinePos),this.itemsMatch(a,u)?this.playingItem=u:this.waitingItem=null),this.waitingItem=this.updateItem(this.waitingItem);let g=this.bufferingItem;if(g&&(f=this.updateItem(g,this.bufferedPos),this.itemsMatch(g,f)?this.bufferingItem=f:g.event&&(this.bufferingItem=this.playingItem,this.clearInterstitial(g.event,null))),i.forEach(m=>{m.assetList.forEach(p=>{this.clearAssetPlayer(p.identifier,null)})}),this.playerQueue.forEach(m=>{if(m.interstitial.appendInPlace){let p=m.assetItem.timelineStart,v=m.timelineOffset-p;if(v)try{m.timelineOffset=p}catch(T){Math.abs(v)>St&&this.warn(`${T} ("${m.assetId}" ${m.timelineOffset}->${p})`)}}}),h||s){if(this.hls.trigger(y.INTERSTITIALS_UPDATED,{events:o.slice(0),schedule:l.slice(0),durations:d,removedIds:c}),this.isInterstitial(a)&&c.indexOf(a.event.identifier)>-1){this.warn(`Interstitial "${a.event.identifier}" removed while playing`),this.primaryFallback(a.event);return}a&&this.trimInPlace(u,a),g&&f!==u&&this.trimInPlace(f,g),this.checkBuffer()}},this.hls=e,this.HlsPlayerClass=t,this.assetListLoader=new _r(e),this.schedule=new Pr(this.onScheduleUpdate,e.logger),this.registerListeners()}registerListeners(){let e=this.hls;e&&(e.on(y.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(y.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(y.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(y.MANIFEST_LOADING,this.onManifestLoading,this),e.on(y.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(y.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.on(y.AUDIO_TRACK_UPDATED,this.onAudioTrackUpdated,this),e.on(y.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(y.SUBTITLE_TRACK_UPDATED,this.onSubtitleTrackUpdated,this),e.on(y.EVENT_CUE_ENTER,this.onInterstitialCueEnter,this),e.on(y.ASSET_LIST_LOADED,this.onAssetListLoaded,this),e.on(y.BUFFER_APPENDED,this.onBufferAppended,this),e.on(y.BUFFER_FLUSHED,this.onBufferFlushed,this),e.on(y.BUFFERED_TO_END,this.onBufferedToEnd,this),e.on(y.MEDIA_ENDED,this.onMediaEnded,this),e.on(y.ERROR,this.onError,this),e.on(y.DESTROYING,this.onDestroying,this))}unregisterListeners(){let e=this.hls;e&&(e.off(y.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(y.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(y.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(y.MANIFEST_LOADING,this.onManifestLoading,this),e.off(y.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(y.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.off(y.AUDIO_TRACK_UPDATED,this.onAudioTrackUpdated,this),e.off(y.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(y.SUBTITLE_TRACK_UPDATED,this.onSubtitleTrackUpdated,this),e.off(y.EVENT_CUE_ENTER,this.onInterstitialCueEnter,this),e.off(y.ASSET_LIST_LOADED,this.onAssetListLoaded,this),e.off(y.BUFFER_CODECS,this.onBufferCodecs,this),e.off(y.BUFFER_APPENDED,this.onBufferAppended,this),e.off(y.BUFFER_FLUSHED,this.onBufferFlushed,this),e.off(y.BUFFERED_TO_END,this.onBufferedToEnd,this),e.off(y.MEDIA_ENDED,this.onMediaEnded,this),e.off(y.ERROR,this.onError,this),e.off(y.DESTROYING,this.onDestroying,this))}startLoad(){this.resumeBuffering()}stopLoad(){this.pauseBuffering()}resumeBuffering(){var e;(e=this.getBufferingPlayer())==null||e.resumeBuffering()}pauseBuffering(){var e;(e=this.getBufferingPlayer())==null||e.pauseBuffering()}destroy(){this.unregisterListeners(),this.stopLoad(),this.assetListLoader&&this.assetListLoader.destroy(),this.emptyPlayerQueue(),this.clearScheduleState(),this.schedule&&this.schedule.destroy(),this.media=this.detachedData=this.mediaSelection=this.requiredTracks=this.altSelection=this.schedule=this.manager=null,this.hls=this.HlsPlayerClass=null,this.assetListLoader=null,this.onPlay=this.onPause=this.onSeeking=this.onTimeupdate=null,this.onScheduleUpdate=null}onDestroying(){let e=this.primaryMedia||this.media;e&&this.removeMediaListeners(e)}removeMediaListeners(e){le(e,"play",this.onPlay),le(e,"pause",this.onPause),le(e,"seeking",this.onSeeking),le(e,"timeupdate",this.onTimeupdate)}onMediaAttaching(e,t){let i=this.media=t.media;de(i,"seeking",this.onSeeking),de(i,"timeupdate",this.onTimeupdate),de(i,"play",this.onPlay),de(i,"pause",this.onPause)}onMediaAttached(e,t){let i=this.effectivePlayingItem,s=this.detachedData;if(this.detachedData=null,i===null)this.checkStart();else if(!s){this.clearScheduleState();let n=this.findItemIndex(i);this.setSchedulePosition(n)}}clearScheduleState(){this.log("clear schedule state"),this.playingItem=this.bufferingItem=this.waitingItem=this.endedItem=this.playingAsset=this.endedAsset=this.bufferingAsset=null}onMediaDetaching(e,t){let i=!!t.transferMedia,s=this.media;if(this.media=null,!i&&(s&&this.removeMediaListeners(s),this.detachedData)){let n=this.getBufferingPlayer();n&&(this.log(`Removing schedule state for detachedData and ${n}`),this.playingAsset=this.endedAsset=this.bufferingAsset=this.bufferingItem=this.waitingItem=this.detachedData=null,n.detachMedia()),this.shouldPlay=!1}}get interstitialsManager(){if(!this.hls)return null;if(this.manager)return this.manager;let e=this,t=()=>e.bufferingItem||e.waitingItem,i=h=>h&&e.getAssetPlayer(h.identifier),s=(h,u,f,g,m)=>{if(h){let p=h[u].start,v=h.event;if(v){if(u==="playout"||v.timelineOccupancy!==Rs.Point){let T=i(f);T?.interstitial===v&&(p+=T.assetItem.startOffset+T[m])}}else{let T=g==="bufferedPos"?a():e[g];p+=T-h.start}return p}return 0},n=(h,u)=>{var f;if(h!==0&&u!=="primary"&&(f=e.schedule)!=null&&f.length){var g;let m=e.schedule.findItemIndexAtTime(h),p=(g=e.schedule.items)==null?void 0:g[m];if(p){let v=p[u].start-p.start;return h+v}}return h},a=()=>{let h=e.bufferedPos;return h===Number.MAX_VALUE?o("primary"):Math.max(h,0)},o=h=>{var u,f;return(u=e.primaryDetails)!=null&&u.live?e.primaryDetails.edge:((f=e.schedule)==null?void 0:f.durations[h])||0},l=(h,u)=>{var f,g;let m=e.effectivePlayingItem;if(m!=null&&(f=m.event)!=null&&f.restrictions.skip||!e.schedule)return;e.log(`seek to ${h} "${u}"`);let p=e.effectivePlayingItem,v=e.schedule.findItemIndexAtTime(h,u),T=(g=e.schedule.items)==null?void 0:g[v],E=e.getBufferingPlayer(),S=E?.interstitial,b=S?.appendInPlace,A=p&&e.itemsMatch(p,T);if(p&&(b||A)){let x=i(e.playingAsset),R=x?.media||e.primaryMedia;if(R){let P=u==="primary"?R.currentTime:s(p,u,e.playingAsset,"timelinePos","currentTime"),I=h-P,k=(b?P:R.currentTime)+I;if(k>=0&&(!x||b||k<=x.duration)){R.currentTime=k;return}}}if(T){let x=h;if(u!=="primary"){let P=T[u].start,I=h-P;x=T.start+I}let R=!e.isInterstitial(T);if((!e.isInterstitial(p)||p.event.appendInPlace)&&(R||T.event.appendInPlace)){let P=e.media||(b?E?.media:null);P&&(P.currentTime=x)}else if(p){let P=e.findItemIndex(p);if(v>P){let k=e.schedule.findJumpRestrictedIndex(P+1,v);if(k>P){e.setSchedulePosition(k);return}}let I=0;if(R)e.timelinePos=x,e.checkBuffer();else{let k=T.event.assetList,D=h-(T[u]||T).start;for(let F=k.length;F--;){let G=k[F];if(G.duration&&D>=G.startOffset&&D<G.startOffset+G.duration){I=F;break}}}e.setSchedulePosition(v,I)}}},d=()=>{let h=e.effectivePlayingItem;if(e.isInterstitial(h))return h;let u=t();return e.isInterstitial(u)?u:null},c={get bufferedEnd(){let h=t(),u=e.bufferingItem;if(u&&u===h){var f;return s(u,"playout",e.bufferingAsset,"bufferedPos","bufferedEnd")-u.playout.start||((f=e.bufferingAsset)==null?void 0:f.startOffset)||0}return 0},get currentTime(){let h=d(),u=e.effectivePlayingItem;return u&&u===h?s(u,"playout",e.effectivePlayingAsset,"timelinePos","currentTime")-u.playout.start:0},set currentTime(h){let u=d(),f=e.effectivePlayingItem;f&&f===u&&l(h+f.playout.start,"playout")},get duration(){let h=d();return h?h.playout.end-h.playout.start:0},get assetPlayers(){var h;let u=(h=d())==null?void 0:h.event.assetList;return u?u.map(f=>e.getAssetPlayer(f.identifier)):[]},get playingIndex(){var h;let u=(h=d())==null?void 0:h.event;return u&&e.effectivePlayingAsset?u.findAssetIndex(e.effectivePlayingAsset):-1},get scheduleItem(){return d()}};return this.manager={get events(){var h;return((h=e.schedule)==null||(h=h.events)==null?void 0:h.slice(0))||[]},get schedule(){var h;return((h=e.schedule)==null||(h=h.items)==null?void 0:h.slice(0))||[]},get interstitialPlayer(){return d()?c:null},get playerQueue(){return e.playerQueue.slice(0)},get bufferingAsset(){return e.bufferingAsset},get bufferingItem(){return t()},get bufferingIndex(){let h=t();return e.findItemIndex(h)},get playingAsset(){return e.effectivePlayingAsset},get playingItem(){return e.effectivePlayingItem},get playingIndex(){let h=e.effectivePlayingItem;return e.findItemIndex(h)},primary:{get bufferedEnd(){return a()},get currentTime(){let h=e.timelinePos;return h>0?h:0},set currentTime(h){l(h,"primary")},get duration(){return o("primary")},get seekableStart(){return e.seekableStart}},integrated:{get bufferedEnd(){return s(t(),"integrated",e.bufferingAsset,"bufferedPos","bufferedEnd")},get currentTime(){return s(e.effectivePlayingItem,"integrated",e.effectivePlayingAsset,"timelinePos","currentTime")},set currentTime(h){l(h,"integrated")},get duration(){return o("integrated")},get seekableStart(){return n(e.seekableStart,"integrated")}},skip:()=>{let h=e.effectivePlayingItem,u=h?.event;if(u&&!u.restrictions.skip){let f=e.findItemIndex(h);if(u.appendInPlace){let g=h.playout.start+h.event.duration;l(g+.001,"playout")}else e.advanceAfterAssetEnded(u,f,1/0)}}}}get effectivePlayingItem(){return this.waitingItem||this.playingItem||this.endedItem}get effectivePlayingAsset(){return this.playingAsset||this.endedAsset}get playingLastItem(){var e;let t=this.playingItem,i=(e=this.schedule)==null?void 0:e.items;return!this.playbackStarted||!t||!i?!1:this.findItemIndex(t)===i.length-1}get playbackStarted(){return this.effectivePlayingItem!==null}get currentTime(){var e,t;if(this.mediaSelection===null)return;let i=this.waitingItem||this.playingItem;if(this.isInterstitial(i)&&!i.event.appendInPlace)return;let s=this.media;!s&&(e=this.bufferingItem)!=null&&(e=e.event)!=null&&e.appendInPlace&&(s=this.primaryMedia);let n=(t=s)==null?void 0:t.currentTime;if(!(n===void 0||!B(n)))return n}get primaryMedia(){var e;return this.media||((e=this.detachedData)==null?void 0:e.media)||null}isInterstitial(e){return!!(e!=null&&e.event)}retreiveMediaSource(e,t){let i=this.getAssetPlayer(e);i&&this.transferMediaFromPlayer(i,t)}transferMediaFromPlayer(e,t){let i=e.interstitial.appendInPlace,s=e.media;if(i&&s===this.primaryMedia){if(this.bufferingAsset=null,(!t||this.isInterstitial(t)&&!t.event.appendInPlace)&&t&&s){this.detachedData={media:s};return}let n=e.transferMedia();this.log(`transfer MediaSource from ${e} ${fe(n)}`),this.detachedData=n}else t&&s&&(this.shouldPlay||(this.shouldPlay=!s.paused))}transferMediaTo(e,t){var i,s;if(e.media===t)return;let n=null,a=this.hls,o=e!==a,l=o&&e.interstitial.appendInPlace,d=(i=this.detachedData)==null?void 0:i.mediaSource,c;if(a.media)l&&(n=a.transferMedia(),this.detachedData=n),c="Primary";else{let g=this.getBufferingPlayer();g?(n=g.transferMedia(),this.detachedData=n,c=`${g}`):d?c="detached MediaSource":c="detached media"}if(!n){if(d)n=this.detachedData,this.log(`using detachedData: MediaSource ${fe(n)}`);else if(!this.detachedData||a.media===t){let g=this.playerQueue;g.length>1&&g.forEach(m=>{if(o&&m.interstitial.appendInPlace!==l){let p=m.interstitial;this.clearInterstitial(m.interstitial,null),p.appendInPlace=!1,p.appendInPlace&&this.warn(`Could not change append strategy for queued assets ${p}`)}}),this.hls.detachMedia(),this.detachedData={media:t}}}let h=n&&"mediaSource"in n&&((s=n.mediaSource)==null?void 0:s.readyState)!=="closed";if(this.log(`${h?"transfering MediaSource":"attaching media"} to ${o?e:"Primary"} from ${c} (media.currentTime: ${t.currentTime})`),!h&&!o){e.attachMedia(t);return}let u=h&&n?Y({},n):{media:t},f=this.schedule;if(f&&o){let g=e.assetId===f.assetIdAtEnd;u.overrides={duration:f.duration,endOfStream:g||e.appendInPlace===!1}}if(!h&&l){let g=e,m=g.assetItem.timelineStart;if(m){let p=g.hls,v=Math.max(this.timelinePos-m,Number.EPSILON);p.startPosition!==v&&(this.log(`Set ${g} startPosition: ${v}`),p.config.startPosition=v,p.loadingEnabled&&p.startLoad(v))}}e.attachMedia(u)}onInterstitialCueEnter(){this.onTimeupdate()}checkStart(){let e=this.schedule,t=e?.events,i=this.hls;if(!t||this.playbackDisabled||!this.media||!i)return;this.bufferedPos===-1&&(this.bufferedPos=0);let s=this.timelinePos,n=this.effectivePlayingItem;if(s===-1){if(!i.loadingEnabled){this.log("waiting for startLoad( <startPosition> )");return}let a=i.startPosition;if(this.timelinePos=a,t.length===0)this.setSchedulePosition(0);else if(t[0].cue.pre){this.log(Pt("checkStart (preroll)",a));let o=e.findEventIndex(t[0].identifier);this.setSchedulePosition(o)}else if(a>=0||!this.primaryLive){this.log(Pt("checkStart",a));let o=this.timelinePos=a>0?a:0,l=e.findItemIndexAtTime(o);this.setSchedulePosition(l)}else i.liveSyncPosition===0?this.setSchedulePosition(0):this.log("[checkStart] waiting for live start")}else if(n&&!this.playingItem){this.log(Pt("checkStart (playing item)",n.start));let a=e.findItemIndex(n);this.setSchedulePosition(a)}}advanceAssetBuffering(e,t){let i=e.event,s=i.findAssetIndex(t),n=En(i,s);if(!i.isAssetPastPlayoutLimit(n))this.bufferedToEvent(e,n);else if(this.schedule){var a;let o=this.getNextItemIndex(e,!0),l=(a=this.schedule.items)==null?void 0:a[o];l&&this.bufferedToItem(l)}}livePrerollResumption(e,t){if(e.cue.pre&&this.primaryLive&&!B(e.resumeOffset)&&this.hls){let i=this.getLiveStartPos();if(t){let s=this.getBufferingPlayer(),n=s!=null&&s.interstitial.cue.pre?s.remaining:0;return i+n}return i}}getNextItemIndex(e,t){if(this.schedule){let i=this.livePrerollResumption(e.event,t);if(i!==void 0)return this.log(`find next item index @${i}`),this.schedule.findItemIndexAtTime(i)}return this.findItemIndex(e)+1}advanceAfterAssetEnded(e,t,i){let s=En(e,i);if(e.isAssetPastPlayoutLimit(s)){if(this.schedule){let n=this.schedule.items;if(n){let a=n[t],o=a.event?this.getNextItemIndex(a):t+1,l=n.length;if(o>=l){this.setSchedulePosition(-1);return}let d=e.resumeTime;this.timelinePos<d&&(this.log(Pt("advanceAfterAssetEnded",d)),this.timelinePos=d,e.appendInPlace&&!n[o].event&&this.hls.startLoad(d+.01),this.checkBuffer(this.bufferedPos<d)),this.setSchedulePosition(o)}}}else{if(e.appendInPlace){let n=e.assetList[s];n&&this.advanceInPlace(n.timelineStart)}this.setSchedulePosition(t,s)}}setScheduleToAssetAtTime(e,t){let i=this.schedule;if(!i)return;let s=t.parentIdentifier,n=i.getEvent(s);if(n){let a=i.findEventIndex(s),o=i.findAssetIndex(n,e);this.advanceAfterAssetEnded(n,a,o-1)}}setSchedulePosition(e,t){var i;let s=(i=this.schedule)==null?void 0:i.items;if(!s||this.playbackDisabled)return;let n=e>=0?s[e]:null;this.log(`setSchedulePosition ${e}, ${t} (${n&&Ue(n)}) pos: ${this.timelinePos}`);let a=this.waitingItem||this.playingItem,o=this.playingLastItem;if(this.isInterstitial(a)){let h=a.event,u=this.playingAsset,f=u?.identifier,g=f?this.getAssetPlayer(f):null;if(g&&f&&(!this.eventItemsMatch(a,n)||t!==void 0&&f!==h.assetList[t].identifier)){var l;let m=h.findAssetIndex(u);if(this.log(`INTERSTITIAL_ASSET_ENDED ${m+1}/${h.assetList.length} ${$t(u)}`),this.endedAsset=u,this.playingAsset=null,this.hls.trigger(y.INTERSTITIAL_ASSET_ENDED,{asset:u,assetListIndex:m,event:h,schedule:s.slice(0),scheduleIndex:e,player:g}),a!==this.playingItem){this.itemsMatch(a,this.playingItem)&&!this.playingAsset&&this.advanceAfterAssetEnded(h,this.findItemIndex(this.playingItem),m);return}this.retreiveMediaSource(f,n),g.media&&!((l=this.detachedData)!=null&&l.mediaSource)&&g.detachMedia()}if(!this.eventItemsMatch(a,n)&&(this.endedItem=a,this.playingItem=this.waitingItem=null,this.log(`INTERSTITIAL_ENDED ${h} ${Ue(a)}`),h.hasPlayed=!0,this.hls.trigger(y.INTERSTITIAL_ENDED,{event:h,schedule:s.slice(0),scheduleIndex:e}),h.cue.once&&this.hls)){var d;this.updateSchedule();let m=(d=this.schedule)==null?void 0:d.items;if(n&&m){let p=this.findItemIndex(n),v=this.livePrerollResumption(h);if(v!==void 0){let T=v,E=this.getNextItemIndex(a);if(!this.isInterstitial(s[E])){var c;let S=(c=this.primaryDetails)==null?void 0:c.fragments;if(h.snapOptions.in&&S){let b=qt(null,S,v);b&&(T=Math.min(Math.max(s[E].start,Zi(T,b)),s[E].end))}}if(this.log(Pt("live join (preroll)",T)),this.timelinePos=T,E!==p&&(E||E===0)){this.advanceSchedule(E,m,void 0,a,o);return}}this.advanceSchedule(p,m,t,a,o)}return}}this.advanceSchedule(e,s,t,a,o)}advanceSchedule(e,t,i,s,n){let a=this.schedule;if(!a)return;let o=t[e]||null,l=this.primaryMedia,d=this.playerQueue;if(d.length&&d.forEach(c=>{let h=c.interstitial,u=a.findEventIndex(h.identifier);(u<e||u>e+1)&&this.clearInterstitial(h,o)}),this.isInterstitial(o)){this.timelinePos=Math.min(Math.max(this.timelinePos,o.start),o.end);let c=o.event;if(i===void 0){i=c.cue.pre?0:a.findAssetIndex(c,this.timelinePos);let g=En(c,i-1);if(c.isAssetPastPlayoutLimit(g)||c.appendInPlace&&this.timelinePos===o.end){this.advanceAfterAssetEnded(c,e,i);return}i=g}let h=this.waitingItem;this.assetsBuffered(o,l)||this.setBufferingItem(o);let u=this.preloadAssets(c,i);if(this.eventItemsMatch(o,h||s)||(this.waitingItem=o,this.log(`INTERSTITIAL_STARTED ${Ue(o)} ${c.appendInPlace?"append in place":""}`),c.hasPlayed=!1,this.hls.trigger(y.INTERSTITIAL_STARTED,{event:c,schedule:t.slice(0),scheduleIndex:e})),!c.assetListLoaded){this.log(`Waiting for ASSET-LIST to complete loading ${c}`);return}if(c.assetListLoader&&(c.assetListLoader.destroy(),c.assetListLoader=void 0),!l){this.log(`Waiting for attachMedia to start Interstitial ${c}`);return}this.waitingItem=this.endedItem=null,this.playingItem=o;let f=c.assetList[i];if(!f){this.advanceAfterAssetEnded(c,e,i||0);return}if(u||(u=this.getAssetPlayer(f.identifier)),u===null||u.destroyed){let g=c.assetList.length;this.warn(`asset ${i+1}/${g} player destroyed ${c}`),u=this.createAssetPlayer(c,f,i),u.loadSource()}if(!this.eventItemsMatch(o,this.bufferingItem)&&c.appendInPlace&&this.isAssetBuffered(f))return;this.startAssetPlayer(u,i,t,e,l),this.shouldPlay&&$o(u.media)}else o?(this.resumePrimary(o,e,s),this.shouldPlay&&$o(this.hls.media)):n&&this.isInterstitial(s)&&(this.endedItem=null,this.playingItem=s,s.event.appendInPlace||this.attachPrimary(a.durations.primary,null))}get playbackDisabled(){return this.hls.config.enableInterstitialPlayback===!1}get primaryDetails(){var e;return(e=this.mediaSelection)==null?void 0:e.main.details}get primaryLive(){var e;return!!((e=this.primaryDetails)!=null&&e.live)}resumePrimary(e,t,i){var s,n;this.playingItem=e,this.playingAsset=this.endedAsset=null,this.waitingItem=null,this.bufferedToItem(e),this.endedItem=null,this.log(`resuming ${Ue(e)}`);let a=this.timelinePos;if((s=this.detachedData)!=null&&s.mediaSource?this.primaryLive&&this.startLoadingPrimaryAt(a):((a<e.start||a>=e.end||a<this.seekableStart)&&(a=this.getPrimaryResumption(e,t),this.log(Pt("resumePrimary",a)),this.timelinePos=a),this.attachPrimary(a,e)),!i)return;let o=(n=this.schedule)==null?void 0:n.items;o&&(this.log(`INTERSTITIALS_PRIMARY_RESUMED ${Ue(e)}`),this.hls.trigger(y.INTERSTITIALS_PRIMARY_RESUMED,{schedule:o.slice(0),scheduleIndex:t}),this.checkBuffer())}get seekableStart(){var e;return this.primaryLive&&((e=this.primaryDetails)==null?void 0:e.fragmentStart)||0}getPrimaryResumption(e,t,i){let s=e.start;if(this.primaryLive){if(t===0)return this.hls.startPosition;let n=this.endedItem||this.playingItem,a=n!=null&&n.event?this.livePrerollResumption(n.event,i):void 0;if(a!==void 0)return a;let o=this.primaryDetails;if(o){let{fragmentStart:l,edge:d}=o;if(s<l||s>d&&!i){let c=this.hls.liveSyncPosition;return this.log(`primary resumption out of bounds (${s} [${l}-${d}]) snapping to liveSync ${c}`),c||l}}}return this.log(`primary resumption itemStart: ${s}`),s}getLiveStartPos(){var e;let t=this.hls.startPosition,i=this.hls.liveSyncPosition||0,s=(((e=this.primaryDetails)==null?void 0:e.targetduration)||10)*3;return t===-1||i&&i-t<s?i||0:t}isAssetBuffered(e){let t=this.getAssetPlayer(e.identifier);return t!=null&&t.hls?t.hls.bufferedToEnd:J.bufferInfo(this.primaryMedia,this.timelinePos,0).end+1>=e.timelineStart+(e.duration||0)}attachPrimary(e,t,i){t?this.setBufferingItem(t):this.bufferingItem=this.playingItem,this.bufferingAsset=null;let s=this.primaryMedia;if(!s)return;let n=this.hls;n.media?this.checkBuffer():(this.transferMediaTo(n,s),i&&this.startLoadingPrimaryAt(e,i)),i||(this.log(Pt("attachPrimary",e)),this.timelinePos=e,this.startLoadingPrimaryAt(e,i))}startLoadingPrimaryAt(e,t){let i=this.hls,{loadingEnabled:s,bufferingEnabled:n,startPosition:a}=i,o=i.hasEnoughToStart;if(this.log(`Start loading primary @${e} bufferedPos: ${this.bufferedPos} startPosition: ${a} skip seek: ${t} has enough ${o} loadingEnabled: ${s} bufferingEnabled: ${n}`),!t&&o||!s||Math.abs(a-e)>.1){let l=this.primaryDetails;if(l!=null&&l.live&&e+.5>=l.edge){let d=this.bufferingItem;this.log(`Resume primary loading when live passes ${e} buffering item: ${d?Ue(d):null}`),i.pauseBuffering(),this.bufferPastEdge=!0;return}i.startLoad(e,t)}else n||i.resumeBuffering()}onManifestLoading(){var e;this.stopLoad(),(e=this.schedule)==null||e.reset(),this.emptyPlayerQueue(),this.clearScheduleState(),this.shouldPlay=!1,this.bufferedPos=this.timelinePos=-1,this.mediaSelection=this.altSelection=this.manager=this.requiredTracks=null,this.hls.off(y.BUFFER_CODECS,this.onBufferCodecs,this),this.hls.on(y.BUFFER_CODECS,this.onBufferCodecs,this)}onLevelUpdated(e,t){if(t.level===-1||!this.schedule)return;let i=this.hls.levels[t.level];if(!i.details)return;let s=Y(Y({},this.mediaSelection||this.altSelection),{},{main:i});this.mediaSelection=s;let n=this.hls.startPosition;if(this.schedule.parseInterstitialDateRanges(s,this.hls.config.interstitialAppendInPlace,n===-1?0:n),!!this.schedule.items){if(!this.effectivePlayingItem)this.checkStart();else if(this.bufferPastEdge){let o=this.primaryDetails,l=this.bufferedPos;if(o!=null&&o.live&&l+.5<o.edge){this.bufferPastEdge=!1;let d=this.bufferingItem;if(this.log(`Live edge ${o.edge} passed buffer: ${l} buffering item: ${d?Ue(d):null}`),d?.end===1/0){let h=this.playingItem,u=this.isInterstitial(h)&&h.event.appendInPlace;this.hls.startLoad(Math.max(l,d.start),u)}else{let h=this.getBufferingPlayer();h&&h.bufferedInPlaceToEnd(this.primaryMedia,h.currentTime)&&h.hls&&h.hls.trigger(y.BUFFERED_TO_END,void 0)}}}}}onAudioTrackUpdated(e,t){let i=this.hls.audioTracks[t.id],s=this.mediaSelection;if(!s){this.altSelection=Y(Y({},this.altSelection),{},{audio:i});return}let n=Y(Y({},s),{},{audio:i});this.mediaSelection=n}onSubtitleTrackUpdated(e,t){let i=this.hls.subtitleTracks[t.id],s=this.mediaSelection;if(!s){this.altSelection=Y(Y({},this.altSelection),{},{subtitles:i});return}let n=Y(Y({},s),{},{subtitles:i});this.mediaSelection=n}onAudioTrackSwitching(e,t){let i=Ca(t);this.playerQueue.forEach(({hls:s})=>s&&(s.setAudioOption(t)||s.setAudioOption(i)))}onSubtitleTrackSwitch(e,t){let i=Ca(t);this.playerQueue.forEach(({hls:s})=>s&&(s.setSubtitleOption(t)||t.id!==-1&&s.setSubtitleOption(i)))}onBufferCodecs(e,t){let i=t.tracks;i&&(this.requiredTracks=i)}onBufferAppended(e,t){this.checkBuffer()}onBufferFlushed(e,t){let i=this.playingItem;if(i&&!this.itemsMatch(i,this.bufferingItem)&&!this.isInterstitial(i)){let s=this.timelinePos;this.bufferedPos=s,this.checkBuffer()}}onBufferedToEnd(e){if(!this.schedule)return;let t=this.schedule.events;if(this.bufferedPos<Number.MAX_VALUE&&t){for(let i=0;i<t.length;i++){let s=t[i];if(s.cue.post){let n=this.getEventItem(s.identifier);n&&this.eventItemsMatch(n,this.bufferingItem)&&this.bufferedToItem(n,0);break}}this.bufferedPos=Number.MAX_VALUE}}onMediaEnded(e){let t=this.playingItem;if(!this.playingLastItem&&t){let i=this.findItemIndex(t);this.setSchedulePosition(i+1)}else this.shouldPlay=!1}updateItem(e,t){var i;let s=(i=this.schedule)==null?void 0:i.items;if(e&&s){let n=this.findItemIndex(e,t);return s[n]||null}return null}trimInPlace(e,t){if(this.isInterstitial(e)&&e.event.appendInPlace&&t.end-e.end>.25){e.event.assetList.forEach((n,a)=>{e.event.isAssetPastPlayoutLimit(a)&&this.clearAssetPlayer(n.identifier,null)});let i=e.end+.25,s=J.bufferInfo(this.primaryMedia,i,0);(s.end>i||(s.nextStart||0)>i)&&(this.log(`trim buffered interstitial ${Ue(e)} (was ${Ue(t)})`),this.attachPrimary(i,null,!0),this.flushFrontBuffer(i))}}itemsMatch(e,t){return!!t&&(e===t||e.event&&t.event&&this.eventItemsMatch(e,t)||!e.event&&!t.event&&this.findItemIndex(e)===this.findItemIndex(t))}eventItemsMatch(e,t){var i;return!!t&&(e===t||e.event.identifier===((i=t.event)==null?void 0:i.identifier))}findEventIndex(e){return this.schedule?this.schedule.findEventIndex(e):-1}getEventItem(e){if(this.schedule){var t;let i=(t=this.schedule.items)==null?void 0:t[this.findEventIndex(e)];if(this.isInterstitial(i)&&i.event.identifier===e)return i}}findItemIndex(e,t){return e&&this.schedule?this.schedule.findItemIndex(e,t):-1}updateSchedule(e=!1){var t,i;let s=this.mediaSelection;if(!s)return;let n=((t=this.hls)==null?void 0:t.liveSyncPosition)||0;(i=this.schedule)==null||i.updateSchedule(s,[],n,e)}checkBuffer(e){var t;let i=(t=this.schedule)==null?void 0:t.items;if(!i)return;let s=J.bufferInfo(this.primaryMedia,this.timelinePos,0);e&&(this.bufferedPos=this.timelinePos),e||(e=s.len<1),this.updateBufferedPos(s.end,i,e)}updateBufferedPos(e,t,i){let s=this.schedule,n=this.bufferingItem;if(this.bufferedPos>e||!s)return;if(t.length===1&&this.itemsMatch(t[0],n)){this.bufferedPos=e;return}let a=this.playingItem,o=this.findItemIndex(a),l=s.findItemIndexAtTime(e);if(this.bufferedPos<e){var d;let c=this.findItemIndex(n),h=Math.min(c+1,t.length-1),u=t[h];if((l===-1&&n&&e>=n.end||(d=u.event)!=null&&d.appendInPlace&&e+.01>=u.start)&&(l=h),this.isInterstitial(n)){let f=n.event;if(h-o>1&&f.appendInPlace===!1||f.assetList.length===0&&f.assetListLoader)return}if(this.bufferedPos=e,l>c&&l>o)this.bufferedToItem(u);else{let f=this.primaryDetails;this.primaryLive&&f&&e>f.edge-f.targetduration&&u.start<f.edge+this.hls.config.interstitialLiveLookAhead&&this.isInterstitial(u)&&this.preloadAssets(u.event,0)}}else i&&a&&!this.itemsMatch(a,n)&&(l===o?this.bufferedToItem(a):l===o+1&&this.bufferedToItem(t[l]))}assetsBuffered(e,t){return e.event.assetList.length===0?!1:!e.event.assetList.some(s=>{let n=this.getAssetPlayer(s.identifier);return!(n!=null&&n.bufferedInPlaceToEnd(t))})}setBufferingItem(e){let t=this.bufferingItem,i=this.schedule;if(!this.itemsMatch(e,t)&&i){let{items:s,events:n}=i;if(!s||!n)return t;let a=this.isInterstitial(e),o=this.getBufferingPlayer();this.bufferingItem=e,this.bufferedPos=Math.max(e.start,Math.min(e.end,this.timelinePos));let l=o?o.remaining:t?t.end-this.timelinePos:0;if(this.log(`INTERSTITIALS_BUFFERED_TO_BOUNDARY ${Ue(e)}`+(t?` (${l.toFixed(2)} remaining)`:"")),!this.playbackDisabled)if(a){let d=i.findAssetIndex(e.event,this.bufferedPos);e.event.assetList.forEach((c,h)=>{let u=this.getAssetPlayer(c.identifier);u&&(h===d&&u.loadSource(),u.resumeBuffering())})}else this.hls.resumeBuffering(),this.playerQueue.forEach(d=>d.pauseBuffering());this.hls.trigger(y.INTERSTITIALS_BUFFERED_TO_BOUNDARY,{events:n.slice(0),schedule:s.slice(0),bufferingIndex:this.findItemIndex(e),playingIndex:this.findItemIndex(this.playingItem)})}else this.bufferingItem!==e&&(this.bufferingItem=e);return t}bufferedToItem(e,t=0){let i=this.setBufferingItem(e);if(!this.playbackDisabled){if(this.isInterstitial(e))this.bufferedToEvent(e,t);else if(i!==null){this.bufferingAsset=null;let s=this.getPrimaryResumption(e,this.findItemIndex(e),!0),n=this.bufferedPos=Math.max(s,Math.min(this.bufferedPos,e.end),this.timelinePos,e.start),a=this.detachedData;if(a)a.mediaSource?this.attachPrimary(n,e,!0):this.startLoadingPrimaryAt(n);else{let o=this.playingItem,l=this.isInterstitial(o)&&o.event.appendInPlace;this.startLoadingPrimaryAt(n,l)}}}}bufferedToEvent(e,t){let i=e.event,s=i.assetList.length===0&&!i.assetListLoader,n=i.cue.once;if(s||!n){let a=this.preloadAssets(i,t);if(a!=null&&a.interstitial.appendInPlace){let o=this.primaryMedia;o&&this.bufferAssetPlayer(a,o)}}}preloadAssets(e,t){let i=e.assetUrl,s=e.assetList.length,n=s===0&&!e.assetListLoader,a=e.cue.once;if(n){let l=e.timelineStart,d=this.playingItem,c=this.getBufferingPlayer();if(e.appendInPlace){var o;!this.isInterstitial(d)&&(d==null||(o=d.nextEvent)==null?void 0:o.identifier)===e.identifier&&this.flushFrontBuffer(l+.25)}let h,u=0;if((!c||c.interstitial.cue.pre)&&this.primaryLive&&(u=this.getLiveStartPos(),c&&(u+=c.remaining)),u&&!(e.cue.pre||e.cue.post)){let g=u-l;g>0&&(h=Math.round(g*1e3)/1e3)}if(this.log(`Load interstitial asset ${t+1}/${i?1:s} ${e}${u?` live-start: ${u} start-offset: ${h} (timeline-start: ${l})`:""}`),i)return this.createAsset(e,0,0,l,e.duration,i);let f=this.assetListLoader.loadAssetList(e,h);f&&(e.assetListLoader=f)}else if(!a&&s){for(let d=t;d<s;d++){let c=e.assetList[d],h=this.getAssetPlayerQueueIndex(c.identifier);(h===-1||this.playerQueue[h].destroyed)&&!c.error&&this.createAssetPlayer(e,c,d)}let l=e.assetList[t];if(l){let d=this.getAssetPlayer(l.identifier);return d&&d.loadSource(),d}}return null}flushFrontBuffer(e){let t=this.requiredTracks;if(!t)return;let i=this.primaryDetails;if(i&&e>=i.edge)return;this.log(`Removing front buffer starting at ${e}`),Object.keys(t).forEach(n=>{this.hls.trigger(y.BUFFER_FLUSHING,{startOffset:e,endOffset:1/0,type:n})})}getAssetPlayerQueueIndex(e){let t=this.playerQueue;for(let i=0;i<t.length;i++)if(e===t[i].assetId)return i;return-1}getAssetPlayer(e){let t=this.getAssetPlayerQueueIndex(e);return this.playerQueue[t]||null}getBufferingPlayer(){let{playerQueue:e,primaryMedia:t}=this;if(t){for(let i=0;i<e.length;i++)if(e[i].media===t)return e[i]}return null}createAsset(e,t,i,s,n,a){let o={parentIdentifier:e.identifier,identifier:Tg(e,a,t),duration:n,startOffset:i,timelineStart:s,uri:a};return this.createAssetPlayer(e,o,t)}createAssetPlayer(e,t,i){let s=this.hls,n=s.userConfig,a=s.loadLevelObj||s.levels[s.currentLevel],o=Sl(a,n.videoPreference),l=s.audioTracks[s.audioTrack],d=s.subtitleTracks[s.subtitleTrack],c=0;if(this.primaryLive||e.appendInPlace){let S=this.timelinePos-t.timelineStart;if(S>=0){let b=t.duration;b&&S<b&&(c=S)}}let h=t.identifier,u=Y(Y({},n),{},{maxMaxBufferLength:Math.min(15,s.config.maxMaxBufferLength),autoStartLoad:!0,startFragPrefetch:!0,primarySessionId:s.sessionId,assetPlayerId:h,abrEwmaDefaultEstimate:s.bandwidthEstimate,interstitialsController:void 0,startPosition:c,liveDurationInfinity:!1,testBandwidth:!1,videoPreference:o,audioPreference:l||n.audioPreference,subtitlePreference:d||n.subtitlePreference});e.appendInPlace&&(e.appendInPlaceStarted=!0,t.timelineStart&&(u.timelineOffset=t.timelineStart));let f=u.cmcd;f!=null&&f.sessionId&&f.contentId&&(u.cmcd=ce({},f,{contentId:ai(t.uri)})),this.getAssetPlayer(h)&&this.warn(`Duplicate date range identifier ${e} and asset ${h}`);let g=new Rr(this.HlsPlayerClass,u,e,t);this.playerQueue.push(g),e.assetList[i]=t;let m=!0,p=S=>{if(S.live){let x=new Error(`Interstitials MUST be VOD assets ${e}`),R={fatal:!0,type:W.OTHER_ERROR,details:L.INTERSTITIAL_ASSET_ITEM_ERROR,error:x},P=this.findEventIndex(e.identifier);this.handleAssetItemError(R,e,P,i,x.message);return}let b=S.edge-S.fragmentStart,A=t.duration;(m||A===null||b>A)&&(m=!1,this.log(`Interstitial asset "${h}" duration change ${A} > ${b}`),t.duration=b,this.updateSchedule())};g.on(y.LEVEL_UPDATED,(S,{details:b})=>p(b)),g.on(y.LEVEL_PTS_UPDATED,(S,{details:b})=>p(b)),g.on(y.EVENT_CUE_ENTER,()=>this.onInterstitialCueEnter());let v=(S,b)=>{let A=this.getAssetPlayer(h);if(A&&b.tracks){A.off(y.BUFFER_CODECS,v),A.tracks=b.tracks;let x=this.primaryMedia;this.bufferingAsset===A.assetItem&&x&&!A.media&&this.bufferAssetPlayer(A,x)}};g.on(y.BUFFER_CODECS,v);let T=()=>{let S=this.getAssetPlayer(h);if(this.log(`buffered to end of asset ${S}`),!S||!this.schedule)return;let b=this.getEventItem(e.identifier);b&&this.advanceAssetBuffering(b,S.assetItem)};g.on(y.BUFFERED_TO_END,T);let E=S=>()=>{if(!this.getAssetPlayer(h)||!this.schedule)return;this.shouldPlay=!0;let A=this.findEventIndex(e.identifier);this.advanceAfterAssetEnded(e,A,S)};return g.once(y.MEDIA_ENDED,E(i)),g.once(y.PLAYOUT_LIMIT_REACHED,E(1/0)),g.on(y.ERROR,(S,b)=>{if(!this.schedule)return;let A=this.getAssetPlayer(h);if(b.details===L.BUFFER_STALLED_ERROR){if(A!=null&&A.appendInPlace){this.handleInPlaceStall(e);return}this.onTimeupdate(),this.checkBuffer(!0);return}else if(b.details===L.BUFFER_SEEK_OVER_HOLE)return;this.handleAssetItemError(b,e,this.findEventIndex(e.identifier),i,`Asset player error ${b.error} ${e}`)}),g.on(y.DESTROYING,()=>{if(!this.getAssetPlayer(h)||!this.schedule)return;let b=new Error(`Asset player destroyed unexpectedly ${h}`),A={fatal:!0,type:W.OTHER_ERROR,details:L.INTERSTITIAL_ASSET_ITEM_ERROR,error:b};this.handleAssetItemError(A,e,this.findEventIndex(e.identifier),i,b.message)}),this.log(`INTERSTITIAL_ASSET_PLAYER_CREATED ${$t(t)}`),this.hls.trigger(y.INTERSTITIAL_ASSET_PLAYER_CREATED,{asset:t,assetListIndex:i,event:e,player:g}),g}clearInterstitial(e,t){this.clearAssetPlayers(e,t),e.reset()}clearAssetPlayers(e,t){e.assetList.forEach(i=>{this.clearAssetPlayer(i.identifier,t)})}resetAssetPlayer(e){let t=this.getAssetPlayerQueueIndex(e);if(t!==-1){this.log(`reset asset player "${e}" after error`);let i=this.playerQueue[t];this.transferMediaFromPlayer(i,null),i.resetDetails()}}clearAssetPlayer(e,t){let i=this.getAssetPlayerQueueIndex(e);if(i!==-1){let s=this.playerQueue[i];this.log(`clear ${s} toSegment: ${t&&Ue(t)}`),this.transferMediaFromPlayer(s,t),this.playerQueue.splice(i,1),s.destroy()}}emptyPlayerQueue(){let e;for(;e=this.playerQueue.pop();)e.destroy();this.playerQueue=[]}startAssetPlayer(e,t,i,s,n){let{interstitial:a,assetItem:o,assetId:l}=e,d=a.assetList.length,c=this.playingAsset;this.endedAsset=null,this.playingAsset=o,c?.identifier!==l&&(c&&(this.clearAssetPlayer(c.identifier,i[s]),delete c.error),this.log(`INTERSTITIAL_ASSET_STARTED ${t+1}/${d} ${$t(o)}`),this.hls.trigger(y.INTERSTITIAL_ASSET_STARTED,{asset:o,assetListIndex:t,event:a,schedule:i.slice(0),scheduleIndex:s,player:e})),this.bufferAssetPlayer(e,n)}bufferAssetPlayer(e,t){var i;if(!this.schedule)return;let{interstitial:s,assetItem:n}=e,a=this.getEventItem(s.identifier);if(!a)return;if(e.loadSource(),this.setBufferingItem(a),this.bufferingAsset=n,e.bufferedInPlaceToEnd(this.primaryMedia,e.currentTime)){this.advanceAssetBuffering(a,n);return}let o=this.getBufferingPlayer();if(o===e)return;let l=s.appendInPlace;if(l&&o?.interstitial.appendInPlace===!1)return;let d=o?.tracks||((i=this.detachedData)==null?void 0:i.tracks)||this.requiredTracks;if(l&&n!==this.playingAsset){if(!e.tracks){this.log(`Waiting for track info before buffering ${e}`);return}if(d&&!zo(d,e.tracks)){let c=new Error(`Asset ${$t(n)} SourceBuffer tracks ('${Object.keys(e.tracks)}') are not compatible with primary content tracks ('${Object.keys(d)}')`),h={fatal:!0,type:W.OTHER_ERROR,details:L.INTERSTITIAL_ASSET_ITEM_ERROR,error:c},u=s.findAssetIndex(n);this.handleAssetItemError(h,s,this.findEventIndex(s.identifier),u,c.message);return}}this.transferMediaTo(e,t)}handleInPlaceStall(e){let t=this.schedule,i=this.primaryMedia;if(!t||!i)return;let s=i.currentTime,n=t.findAssetIndex(e,s),a=e.assetList[n];if(a){let o=this.getAssetPlayer(a.identifier);if(o){let l=o.currentTime||s-a.timelineStart,d=o.duration-l;if(this.warn(`Stalled at ${l} of ${l+d} in ${o} ${e} (media.currentTime: ${s})`),l&&(d/i.playbackRate<.5||o.bufferedInPlaceToEnd(i,o.currentTime))&&o.hls){let c=t.findEventIndex(e.identifier);this.advanceAfterAssetEnded(e,c,n)}}}}advanceInPlace(e){let t=this.primaryMedia;if(t&&t.currentTime<e){let i=`advance currentTime to ${e}, duration: ${t.duration}`;t.duration>e?(this.log(i),t.currentTime=e):this.log(`Cannot ${i}`)}}handleAssetItemError(e,t,i,s,n){if(e.details===L.BUFFER_STALLED_ERROR)return;let a=t.assetList[s]||null;if(this.warn(`INTERSTITIAL_ASSET_ERROR ${a&&$t(a)} ${e.error}`),!this.schedule)return;let o=a?.identifier||"",l=this.getAssetPlayerQueueIndex(o),d=this.playerQueue[l]||null,c=this.schedule.items,h=ce({},e,{fatal:!1,errorAction:ni(!0),asset:a,assetListIndex:s,event:t,schedule:c,scheduleIndex:i,player:d});if(this.hls.trigger(y.INTERSTITIAL_ASSET_ERROR,h),!e.fatal)return;let u=this.playingAsset,f=this.bufferingAsset,g=new Error(n);if(a&&(this.clearAssetPlayer(o,null),a.error=g),!t.assetList.some(m=>!m.error))t.error=g;else for(let m=s;m<t.assetList.length;m++)this.resetAssetPlayer(t.assetList[m].identifier);this.updateSchedule(!0),t.error?this.primaryFallback(t):u?.identifier===o?this.advanceAfterAssetEnded(t,i,s):f?.identifier===o&&this.isInterstitial(this.bufferingItem)&&this.advanceAssetBuffering(this.bufferingItem,f)}primaryFallback(e){let t=e.timelineStart,i=this.effectivePlayingItem,s=this.playingItem,n=this.seekableStart,a=this.hls.startPosition,o=this.timelinePos;if(this.isInterstitial(i)){this.log(`Fallback to primary from event "${e.identifier}" start: ${t} pos: ${o} playing: ${Ue(i)} startPosition: ${a} seekableStart: ${n} error: ${e.error}`),o===-1&&(o=a),o=Math.max(o,n);let d=this.updateItem(i,o);this.itemsMatch(i,d)&&this.clearInterstitial(e,null),e.appendInPlace&&(this.attachPrimary(t,null),this.flushFrontBuffer(t))}else if(o===-1){this.checkStart();return}if(!this.schedule||!this.isInterstitial(s))return;let l=this.schedule.findItemIndexAtTime(o);this.setSchedulePosition(l)}onAssetListLoaded(e,t){var i,s;let n=t.event,a=n.identifier,o=t.assetListResponse.ASSETS;if(!((i=this.schedule)!=null&&i.hasEvent(a)))return;let l=n.timelineStart,d=n.duration,c=0;o.forEach((g,m)=>{let p=parseFloat(g.DURATION);this.createAsset(n,m,c,l+c,p,g.URI),c+=p}),n.duration=c,this.log(`Loaded asset-list with duration: ${c} (was: ${d}) ${n}`);let h=this.waitingItem,u=h?.event.identifier===a;this.updateSchedule();let f=(s=this.bufferingItem)==null?void 0:s.event;if(u){let g=this.findEventIndex(a),m=this.getEventItem(a);if(m){if(!this.playingItem&&this.timelinePos>m.end&&this.schedule.findItemIndexAtTime(this.timelinePos)!==g){n.error=new Error(`Interstitial ${o.length?"no longer within playback range":"asset-list is empty"} ${this.timelinePos} ${n}`),this.log(n.error.message),this.updateSchedule(!0),this.primaryFallback(n);return}this.setBufferingItem(m)}this.setSchedulePosition(g)}else if(f?.identifier===a){let g=n.assetList[0];if(g){let m=this.getAssetPlayer(g.identifier);if(f.appendInPlace){let p=this.primaryMedia;m&&p&&this.bufferAssetPlayer(m,p)}else m&&m.loadSource()}}}onError(e,t){if(this.schedule)switch(t.details){case L.ASSET_LIST_PARSING_ERROR:case L.ASSET_LIST_LOAD_ERROR:case L.ASSET_LIST_LOAD_TIMEOUT:{let i=t.interstitial;i&&(this.updateSchedule(!0),this.primaryFallback(i));break}case L.BUFFER_STALLED_ERROR:{let i=this.endedItem||this.waitingItem||this.playingItem;if(this.isInterstitial(i)&&i.event.appendInPlace){this.handleInPlaceStall(i.event);return}let s=this.primaryMedia;this.log(`Primary player stall @${this.timelinePos} currentTime: ${s?.currentTime} bufferedPos: ${this.bufferedPos}`),this.onTimeupdate(),this.checkBuffer(!0);break}}}},Dr=class{constructor(e){this.hls=void 0,this.media=null,this.currentTime=0,this.stallCount=0,this._latency=null,this._targetLatencyUpdated=!1,this.onTimeupdate=()=>{var t;let{media:i}=this,s=this.levelDetails;if(!i||!s||!this.hls)return;this.currentTime=i.currentTime;let n=this.hls.config,a=this.computeLatency();if(a===null)return;this._latency=a;let{lowLatencyMode:o,maxLiveSyncPlaybackRate:l}=n;if(!o||l===1||!s.live)return;let d=this.targetLatency;if(d===null)return;let c=a-d,h=Math.min(this.maxLatency,d+s.targetduration),u=c<h,f=gs(n)&&!!((t=this.hls.interstitialsManager)!=null&&(t=t.playingItem)!=null&&t.event);if(u&&c>.05&&this.forwardBufferLength>1&&!f){let g=Math.min(2,Math.max(1,l)),m=Math.round(2/(1+Math.exp(-.75*c-this.edgeStalled))*20)/20,p=Math.min(g,Math.max(1,m));this.changeMediaPlaybackRate(i,p)}else i.playbackRate!==1&&i.playbackRate!==0&&this.changeMediaPlaybackRate(i,1)},this.hls=e,this.registerListeners()}get levelDetails(){var e;return((e=this.hls)==null?void 0:e.latestLevelDetails)||null}get latency(){return this._latency||0}get maxLatency(){var e;let t=(e=this.hls)==null?void 0:e.config;if(!t)return 0;if(t.liveMaxLatencyDuration!==void 0)return t.liveMaxLatencyDuration;let i=this.levelDetails;return i?t.liveMaxLatencyDurationCount*i.targetduration:0}get targetLatency(){let e=this.levelDetails;if(e===null||!this.hls)return null;let t=this.hls.config,{holdBack:i,partHoldBack:s,targetduration:n}=e,{liveSyncDuration:a,liveSyncDurationCount:o,lowLatencyMode:l}=t,d=this.hls.userConfig,c=l&&s||i;(this._targetLatencyUpdated||d.liveSyncDuration||d.liveSyncDurationCount||c===0)&&(c=a!==void 0?a:o*n);let h=n;return c+Math.min(this.stallCount*t.liveSyncOnStallIncrease,h)}set targetLatency(e){this.hls&&(this.stallCount=0,this.hls.config.liveSyncDuration=e,this._targetLatencyUpdated=!0)}get liveSyncPosition(){let e=this.estimateLiveEdge(),t=this.targetLatency;if(e===null||t===null||!this.hls)return null;let i=this.levelDetails;if(i===null)return null;let s=i.edge,n=e-t-this.edgeStalled,a=s-i.totalduration,o=s-(this.hls.config.lowLatencyMode&&i.partTarget||i.targetduration);return Math.min(Math.max(a,n),o)}get drift(){let e=this.levelDetails;return e===null?1:e.drift}get edgeStalled(){let e=this.levelDetails;if(e===null||!this.hls)return 0;let t=(this.hls.config.lowLatencyMode&&e.partTarget||e.targetduration)*3;return Math.max(e.age-t,0)}get forwardBufferLength(){let{media:e}=this,t=this.levelDetails;if(!e||!t)return 0;let i=e.buffered.length;return(i?e.buffered.end(i-1):t.edge)-this.currentTime}destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.hls=null}registerListeners(){let{hls:e}=this;e&&(e.on(y.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(y.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(y.MANIFEST_LOADING,this.onManifestLoading,this),e.on(y.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(y.ERROR,this.onError,this),e.on(y.INTERSTITIAL_ASSET_STARTED,this.onAssetStarted,this))}unregisterListeners(){let{hls:e}=this;e&&(e.off(y.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(y.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(y.MANIFEST_LOADING,this.onManifestLoading,this),e.off(y.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(y.ERROR,this.onError,this),e.off(y.INTERSTITIAL_ASSET_STARTED,this.onAssetStarted,this))}onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("timeupdate",this.onTimeupdate)}onMediaDetaching(){this.media&&(this.media.removeEventListener("timeupdate",this.onTimeupdate),this.media=null)}onManifestLoading(){this._latency=null,this.stallCount=0}onLevelUpdated(e,{details:t}){t.advanced&&this.onTimeupdate(),!t.live&&this.media&&this.media.removeEventListener("timeupdate",this.onTimeupdate)}onAssetStarted(e,t){var i;let s=this.hls,n=this.media||t.event.appendInPlace&&(s==null||(i=s.interstitialsManager)==null?void 0:i.playerQueue.reduce((a,o)=>a||o.media,null));s&&n&&n.playbackRate>1&&n.playbackRate<=s.config.maxLiveSyncPlaybackRate&&this.changeMediaPlaybackRate(n,1)}onError(e,t){var i;t.details===L.BUFFER_STALLED_ERROR&&(this.stallCount++,this.hls&&(i=this.levelDetails)!=null&&i.live&&this.hls.logger.warn("[latency-controller]: Stall detected, adjusting target latency"))}changeMediaPlaybackRate(e,t){var i,s;e.playbackRate!==t&&((i=this.hls)==null||i.logger.debug(`[latency-controller]: latency=${this.latency.toFixed(3)}, targetLatency=${(s=this.targetLatency)==null?void 0:s.toFixed(3)}, forwardBufferLength=${this.forwardBufferLength.toFixed(3)}: adjusting playback rate from ${e.playbackRate} to ${t}`),e.playbackRate=t)}estimateLiveEdge(){let e=this.levelDetails;return e===null?null:e.edge+e.age}computeLatency(){let e=this.estimateLiveEdge();return e===null?null:e-this.currentTime}},Uo=500,Cr=class extends vi{constructor(e,t,i){super(e,t,i,"subtitle-stream-controller",H.SUBTITLE),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this.registerListeners()}onHandlerDestroying(){this.unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}registerListeners(){super.registerListeners();let{hls:e}=this;e.on(y.LEVEL_LOADED,this.onLevelLoaded,this),e.on(y.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(y.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(y.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(y.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.on(y.BUFFER_FLUSHING,this.onBufferFlushing,this)}unregisterListeners(){super.unregisterListeners();let{hls:e}=this;e.off(y.LEVEL_LOADED,this.onLevelLoaded,this),e.off(y.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(y.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(y.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(y.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.off(y.BUFFER_FLUSHING,this.onBufferFlushing,this)}startLoad(e,t){this.stopLoad(),this.state=_.IDLE,this.setInterval(Uo),this.nextLoadPosition=this.lastCurrentTime=e+this.timelineOffset,this.startPosition=t?-1:e,this.tick()}onManifestLoading(){super.onManifestLoading(),this.mainDetails=null}onMediaDetaching(e,t){this.tracksBuffered=[],super.onMediaDetaching(e,t)}onLevelLoaded(e,t){this.mainDetails=t.details}onSubtitleFragProcessed(e,t){let{frag:i,part:s,success:n}=t;if(!n)return;let a=this.tracksBuffered[this.currentTrackId];if(!a)return;let o,l=(s||i).start;for(let c=0;c<a.length;c++)if(l>=a[c].start&&l<=a[c].end){o=a[c];break}let d=l+(s||i).duration;if(o?o.end=d:(o={start:l,end:d},a.push(o)),!s||d>=i.end){let c=this.fragmentTracker.fragBuffered(i);s&&c&&(c.range.subs={time:[{startPTS:i.start,endPTS:d}],partial:!0}),ve(i)&&!this.fragContextChanged(i)&&(this.fragPrevious=i),this.fragBufferedComplete(i,s),this.media&&this.tickImmediate()}}onBufferFlushing(e,t){let{startOffset:i,endOffset:s}=t;if(i===0&&s!==Number.POSITIVE_INFINITY){let n=s-1;if(n<=0)return;t.endOffsetSubtitles=Math.max(0,n),this.tracksBuffered.forEach(a=>{if(a)for(let o=0;o<a.length;){if(a[o].end<=n){a.shift();continue}else if(a[o].start<n)a[o].start=n;else break;o++}}),this.fragmentTracker.removeFragmentsInRange(i,n,H.SUBTITLE)}}onError(e,t){let i=t.frag;i?.type===H.SUBTITLE&&(t.details===L.FRAG_GAP&&this.fragmentTracker.addAsGap(i),this.fragCurrent&&this.fragCurrent.abortRequests(),this.state!==_.STOPPED&&(this.state=_.IDLE))}onSubtitleTracksUpdated(e,{subtitleTracks:t}){if(this.levels&&td(this.levels,t)){this.levels=t.map(i=>new wt(i));return}this.tracksBuffered=[],this.levels=t.map(i=>{let s=new wt(i);return this.tracksBuffered[s.id]=[],s}),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,H.SUBTITLE),this.fragPrevious=null,this.mediaBuffer=null}onSubtitleTrackSwitch(e,t){var i;if(this.currentTrackId=t.id,!((i=this.levels)!=null&&i.length)||this.currentTrackId===-1){this.clearInterval();return}let s=this.levels[this.currentTrackId];if(!(s!=null&&s.details)){this.mediaBuffer=null;return}this.mediaBuffer=this.mediaBufferTimeRanges,this.state!==_.STOPPED&&this.setInterval(Uo)}onSubtitleTrackLoaded(e,t){var i;let{currentTrackId:s,levels:n}=this,{details:a,id:o}=t;if(!n){this.warn(`Subtitle tracks were reset while loading level ${o}`);return}let l=n[o];if(o>=n.length||!l)return;this.log(`Subtitle track ${o} loaded [${a.startSN},${a.endSN}]${a.lastPartSn?`[part-${a.lastPartSn}-${a.lastPartIndex}]`:""},duration:${a.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let d=this.mainDetails,c=0;if(a.live||(i=l.details)!=null&&i.live){if(a.deltaUpdateFailed)return;if(!d){this.startFragRequested=!1;return}if(l.details){var h;c=this.alignPlaylists(a,l.details,(h=this.levelLastLoaded)==null?void 0:h.details)}a.alignedSliding||(us(d,a,this),c=a.fragmentStart)}l.details=a,this.levelLastLoaded=l,d&&!this.startFragRequested&&this.setStartPosition(d,c),o===s&&(this.hls.trigger(y.SUBTITLE_TRACK_UPDATED,{details:a,id:o,groupId:t.groupId}),this.tickImmediate())}_handleFragmentLoadProgress(e){let{frag:t,part:i,payload:s}=e;!i||!(s!=null&&s.byteLength)||!this.shouldDecrypt(t)||this.decryptPayload(s,t,i)}_handleFragmentLoadComplete(e){let{frag:t,payload:i}=e;this.fragContextChanged(t)||!(i!=null&&i.byteLength)||!this.shouldDecrypt(t)||this.decryptPayload(i,t,null)}shouldDecrypt(e){let t=e.decryptdata;return!!(t!=null&&t.key&&t.iv&&Vt(t.method))}decryptPayload(e,t,i){let s=t.decryptdata,n=performance.now();this.decrypter.decrypt(new Uint8Array(e),s.key.buffer,s.iv.buffer,Jr(s.method)).then(a=>{this.fragContextChanged(t)||this.hls.trigger(y.FRAG_DECRYPTED,{frag:t,part:i,payload:a,stats:{tstart:n,tdecrypt:performance.now()}})}).catch(a=>{this.hls.trigger(y.ERROR,{type:W.MEDIA_ERROR,details:L.FRAG_DECRYPT_ERROR,fatal:!1,error:a,reason:a.message,frag:t,part:i}),i||(this.warn(`${a.name}: ${a.message}`),this.state=_.IDLE)})}doTick(){if(this.state===_.IDLE&&this.levels){var e;if(!this.media&&!this.primaryPrefetch&&(this.startFragRequested||!this.config.startFragPrefetch))return;let{currentTrackId:i,levels:s}=this,n=s[i],a=n?.details;if(!a||this.waitForLive(n)||this.waitForCdnTuneIn(a)){this.startFragRequested=!1;return}let{config:o}=this,l=this.playhead,d=J.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],l,o.maxBufferHole),{end:c,len:h}=d,u=Math.max(this.hls.maxBufferLength+a.levelTargetDuration,((e=this.hls.mainForwardBufferInfo)==null?void 0:e.len)||0);if(h>u||h&&!this.buffering)return;let f=this.getNextFragment(c,a);if(!f)return;if(ve(f)){var t;let g=f.sn-a.startSN,m=a.fragments[g-1];f.cc===m?.cc&&!((t=a.partList)!=null&&t.length)&&this.fragmentTracker.getState(m)===ye.NOT_LOADED&&(f=m)}this.loadFragment(f,n,c)}}loadFragment(e,t,i){let s=this.fragmentTracker.getState(e);(s===ye.NOT_LOADED||s===ye.PARTIAL)&&super.loadFragment(e,t,i)}get mediaBufferTimeRanges(){return new wr(this.tracksBuffered[this.currentTrackId]||[])}},wr=class{constructor(e){this.buffered=void 0;let t=(i,s,n)=>{if(s=s>>>0,s>n-1)throw new DOMException(`Failed to execute '${i}' on 'TimeRanges': The index provided (${s}) is greater than the maximum bound (${n})`);return e[s][i]};this.buffered={get length(){return e.length},end(i){return t("end",i,e.length)},start(i){return t("start",i,e.length)}}}},bg={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},Cd=r=>String.fromCharCode(bg[r]||r),Je=15,Ze=42,Ag={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},xg={17:2,18:4,21:6,22:8,23:10,19:13,20:15},Ig={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},Lg={25:2,26:4,29:6,30:8,31:10,27:13,28:15},Rg=["white","green","blue","cyan","red","yellow","magenta","black","transparent"],Mr=class{constructor(){this.time=null,this.verboseLevel=0}log(e,t){if(this.verboseLevel>=e){let i=typeof t=="function"?t():t;oe.log(`${this.time} [${e}] ${i}`)}}},_t=function(e){let t=[];for(let i=0;i<e.length;i++)t.push(e[i].toString(16));return t},Or=Object.freeze({foreground:"white",underline:!1,italics:!1,background:"black",flash:!1}),Ps=class{constructor(){this.styles=Or}get foreground(){return this.styles.foreground}set foreground(e){let t=this.styles;this.styles={foreground:e,underline:t.underline,italics:t.italics,background:t.background,flash:t.flash}}get underline(){return this.styles.underline}set underline(e){let t=this.styles;this.styles={foreground:t.foreground,underline:e,italics:t.italics,background:t.background,flash:t.flash}}get italics(){return this.styles.italics}set italics(e){let t=this.styles;this.styles={foreground:t.foreground,underline:t.underline,italics:e,background:t.background,flash:t.flash}}get background(){return this.styles.background}set background(e){let t=this.styles;this.styles={foreground:t.foreground,underline:t.underline,italics:t.italics,background:e,flash:t.flash}}get flash(){return this.styles.flash}set flash(e){let t=this.styles;this.styles={foreground:t.foreground,underline:t.underline,italics:t.italics,background:t.background,flash:e}}reset(){this.styles=Or}setStyles(e){let t=this.styles,i=Object.prototype.hasOwnProperty;this.styles={foreground:i.call(e,"foreground")?e.foreground:t.foreground,underline:i.call(e,"underline")?e.underline:t.underline,italics:i.call(e,"italics")?e.italics:t.italics,background:i.call(e,"background")?e.background:t.background,flash:i.call(e,"flash")?e.flash:t.flash}}toString(){return"color="+this.foreground+", underline="+this.underline+", italics="+this.italics+", background="+this.background+", flash="+this.flash}},Fr=class{constructor(){this.uchar=" ",this.penState=new Ps}reset(){this.uchar=" ",this.penState.reset()}setChar(e,t){this.uchar=e,this.penState.styles=t.styles}setPenState(e){this.penState.styles=e.styles}copy(e){this.uchar=e.uchar,this.penState.styles=e.penState.styles}},Nr=class{constructor(e){this.chars=[],this.pos=0,this.currPenState=new Ps,this.cueStartTime=null,this.logger=void 0;for(let t=0;t<Ze;t++)this.chars.push(new Fr);this.logger=e}equals(e){let t=this.chars,i=e.chars;for(let s=0;s<Ze;s++){let n=t[s],a=i[s];if(n.uchar!==a.uchar)return!1;let o=n.penState.styles,l=a.penState.styles;if(o!==l&&(o.foreground!==l.foreground||o.underline!==l.underline||o.italics!==l.italics||o.background!==l.background||o.flash!==l.flash))return!1}return!0}copy(e){for(let t=0;t<Ze;t++)this.chars[t].copy(e.chars[t])}isEmpty(){let e=this.chars;for(let t=0;t<Ze;t++){let i=e[t];if(i.uchar!==" ")return!1;let s=i.penState.styles;if(s!==Or&&(s.foreground!=="white"||s.underline||s.italics||s.background!=="black"||s.flash))return!1}return!0}setCursor(e){this.pos!==e&&(this.pos=e),this.pos<0?(this.logger.log(3,"Negative cursor position "+this.pos),this.pos=0):this.pos>=Ze&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=Ze-1)}moveCursor(e){let t=Math.min(this.pos+e,Ze);if(e>1)for(let i=this.pos+1;i<t;i++)this.chars[i].setPenState(this.currPenState);this.setCursor(t)}backSpace(){this.moveCursor(-1),this.chars[this.pos].setChar(" ",this.currPenState)}insertChar(e){e>=144&&this.backSpace();let t=Cd(e);if(this.pos>=Ze){this.logger.log(0,()=>"Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!");return}this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1)}clearFromPos(e){let t;for(t=e;t<Ze;t++)this.chars[t].reset()}clear(){this.clearFromPos(0),this.pos=0,this.currPenState.reset()}clearToEndOfRow(){this.clearFromPos(this.pos)}getTextString(){let e=[],t=!0;for(let i=0;i<Ze;i++){let s=this.chars[i].uchar;s!==" "&&(t=!1),e.push(s)}return t?"":e.join("")}setPenStyles(e){this.currPenState.setStyles(e),this.chars[this.pos].setPenState(this.currPenState)}},oi=class{constructor(e){this.rows=[],this.currRow=Je-1,this.nrRollUpRows=null,this.lastOutputScreen=null,this.logger=void 0;for(let t=0;t<Je;t++)this.rows.push(new Nr(e));this.logger=e}reset(){for(let e=0;e<Je;e++)this.rows[e].clear();this.currRow=Je-1}equals(e){let t=!0;for(let i=0;i<Je;i++)if(!this.rows[i].equals(e.rows[i])){t=!1;break}return t}copy(e){for(let t=0;t<Je;t++){let i=this.rows[t].chars,s=e.rows[t].chars;for(let n=0;n<Ze;n++){let a=i[n],o=s[n];a.uchar=o.uchar,a.penState.styles=o.penState.styles}}}isEmpty(){let e=!0;for(let t=0;t<Je;t++)if(!this.rows[t].isEmpty()){e=!1;break}return e}backSpace(){this.rows[this.currRow].backSpace()}clearToEndOfRow(){this.rows[this.currRow].clearToEndOfRow()}insertChar(e){this.rows[this.currRow].insertChar(e)}setPen(e){this.rows[this.currRow].setPenStyles(e)}moveCursor(e){this.rows[this.currRow].moveCursor(e)}setCursor(e){this.logger.log(2,"setCursor: "+e),this.rows[this.currRow].setCursor(e)}setPAC(e){this.logger.log(2,()=>"pacData = "+fe(e));let t=e.row-1;if(this.nrRollUpRows&&t<this.nrRollUpRows-1&&(t=this.nrRollUpRows-1),this.nrRollUpRows&&this.currRow!==t){for(let o=0;o<Je;o++)this.rows[o].clear();let n=this.currRow+1-this.nrRollUpRows,a=this.lastOutputScreen;if(a){let o=a.rows[n].cueStartTime,l=this.logger.time;if(o!==null&&l!==null&&o<l)for(let d=0;d<this.nrRollUpRows;d++)this.rows[t-this.nrRollUpRows+d+1].copy(a.rows[n+d])}}this.currRow=t;let i=this.rows[this.currRow];if(e.indent!==null){let n=e.indent,a=Math.max(n-1,0);i.setCursor(e.indent),e.color=i.chars[a].penState.foreground}let s={foreground:e.color,underline:e.underline,italics:e.italics,background:"black",flash:!1};this.setPen(s)}setBkgData(e){this.logger.log(2,()=>"bkgData = "+fe(e)),this.backSpace(),this.setPen(e),this.insertChar(32)}setRollUpRows(e){this.nrRollUpRows=e}rollUp(){if(this.nrRollUpRows===null){this.logger.log(3,"roll_up but nrRollUpRows not set yet");return}this.logger.log(1,()=>this.getDisplayText());let e=this.currRow+1-this.nrRollUpRows,t=this.rows.splice(e,1)[0];t.clear(),this.rows.splice(this.currRow,0,t),this.logger.log(2,"Rolling up")}getDisplayText(e){e=e||!1;let t=[],i="",s=-1;for(let n=0;n<Je;n++){let a=this.rows[n].getTextString();a&&(s=n+1,e?t.push("Row "+s+": '"+a+"'"):t.push(a.trim()))}return t.length>0&&(e?i="["+t.join(" | ")+"]":i=t.join(`
|
|
42
|
-
`)),i}getTextAndFormat(){return this.rows}},Br=class{constructor(e,t,i){this.chNr=void 0,this.outputFilter=void 0,this.mode=void 0,this.verbose=void 0,this.displayedMemory=void 0,this.nonDisplayedMemory=void 0,this.lastOutputScreen=void 0,this.currRollUpRow=void 0,this.writeScreen=void 0,this.cueStartTime=void 0,this.logger=void 0,this.chNr=e,this.outputFilter=t,this.mode=null,this.verbose=0,this.displayedMemory=new oi(i),this.nonDisplayedMemory=new oi(i),this.lastOutputScreen=new oi(i),this.currRollUpRow=this.displayedMemory.rows[Je-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=i}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[Je-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}getHandler(){return this.outputFilter}setHandler(e){this.outputFilter=e}setPAC(e){this.writeScreen.setPAC(e)}setBkgData(e){this.writeScreen.setBkgData(e)}setMode(e){e!==this.mode&&(this.mode=e,this.logger.log(2,()=>"MODE="+e),this.mode==="MODE_POP-ON"?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),this.mode!=="MODE_ROLL-UP"&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)}insertChars(e){for(let i=0;i<e.length;i++)this.writeScreen.insertChar(e[i]);let t=this.writeScreen===this.displayedMemory?"DISP":"NON_DISP";this.logger.log(2,()=>t+": "+this.writeScreen.getDisplayText(!0)),(this.mode==="MODE_PAINT-ON"||this.mode==="MODE_ROLL-UP")&&(this.logger.log(1,()=>"DISPLAYED: "+this.displayedMemory.getDisplayText(!0)),this.outputDataUpdate())}ccRCL(){this.logger.log(2,"RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")}ccBS(){this.logger.log(2,"BS - BackSpace"),this.mode!=="MODE_TEXT"&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())}ccAOF(){}ccAON(){}ccDER(){this.logger.log(2,"DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()}ccRU(e){this.logger.log(2,"RU("+e+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(e)}ccFON(){this.logger.log(2,"FON - Flash On"),this.writeScreen.setPen({flash:!0})}ccRDC(){this.logger.log(2,"RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")}ccTR(){this.logger.log(2,"TR"),this.setMode("MODE_TEXT")}ccRTD(){this.logger.log(2,"RTD"),this.setMode("MODE_TEXT")}ccEDM(){this.logger.log(2,"EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate(!0)}ccCR(){this.logger.log(2,"CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate(!0)}ccENM(){this.logger.log(2,"ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()}ccEOC(){if(this.logger.log(2,"EOC - End Of Caption"),this.mode==="MODE_POP-ON"){let e=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=e,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,()=>"DISP: "+this.displayedMemory.getDisplayText())}this.outputDataUpdate(!0)}ccTO(e){this.logger.log(2,"TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)}ccMIDROW(e){let t={flash:!1};if(t.underline=e%2===1,t.italics=e>=46,t.italics)t.foreground="white";else{let i=Math.floor(e/2)-16,s=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=s[i]}this.logger.log(2,"MIDROW: "+fe(t)),this.writeScreen.setPen(t)}outputDataUpdate(e=!1){let t=this.logger.time;t!==null&&this.outputFilter&&(this.cueStartTime===null&&!this.displayedMemory.isEmpty()?this.cueStartTime=t:this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue(this.cueStartTime,t,this.lastOutputScreen),e&&this.outputFilter.dispatchCue&&this.outputFilter.dispatchCue(),this.cueStartTime=this.displayedMemory.isEmpty()?null:t),this.lastOutputScreen.copy(this.displayedMemory))}cueSplitAtTime(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}},_s=class{constructor(e,t,i){this.channels=[null,null,null],this.currentChannel=0,this.cmdHistory=_g(),this.logger=void 0,this.field=void 0,this.outputFilters=void 0,this.logger=new Mr,this.field=e,this.outputFilters=[null,t,i]}getHandler(e){return this.outputFilters[e]}setHandler(e,t){var i;this.outputFilters[e]=t,(i=this.channels[e])==null||i.setHandler(t)}getChannel(e){let t=this.channels[e];return t||(t=this.channels[e]=new Br(this.field+e-1,this.outputFilters[e],this.logger)),t}addData(e,t){this.logger.time=e;for(let i=0;i<t.length;i+=2){let s=t[i]&127,n=t[i+1]&127,a=!1,o=null;if(s===0&&n===0)continue;this.logger.log(3,()=>"["+_t([t[i],t[i+1]])+"] -> ("+_t([s,n])+")");let l=this.cmdHistory;if(s>=16&&s<=31){if(Pg(s,n,l)){Wi(null,null,l),this.logger.log(3,()=>"Repeated command ("+_t([s,n])+") is dropped");continue}Wi(s,n,this.cmdHistory),a=this.parseCmd(s,n),a||(a=this.parseMidrow(s,n)),a||(a=this.parsePAC(s,n)),a||(a=this.parseBackgroundAttributes(s,n))}else Wi(null,null,l);if(!a&&(o=this.parseChars(s,n),o)){let c=this.currentChannel;c&&c>0?this.getChannel(c).insertChars(o):this.logger.log(2,"No channel found yet. TEXT-MODE?")}!a&&!o&&this.logger.log(2,()=>"Couldn't parse cleaned data "+_t([s,n])+" orig: "+_t([t[i],t[i+1]]))}}parseCmd(e,t){let i=(e===20||e===28||e===21||e===29)&&t>=32&&t<=47,s=(e===23||e===31)&&t>=33&&t<=35;if(!(i||s))return!1;let n=e===20||e===21||e===23?1:2,a=this.getChannel(n);return e===20||e===21||e===28||e===29?t===32?a.ccRCL():t===33?a.ccBS():t===34?a.ccAOF():t===35?a.ccAON():t===36?a.ccDER():t===37?a.ccRU(2):t===38?a.ccRU(3):t===39?a.ccRU(4):t===40?a.ccFON():t===41?a.ccRDC():t===42?a.ccTR():t===43?a.ccRTD():t===44?a.ccEDM():t===45?a.ccCR():t===46?a.ccENM():t===47&&a.ccEOC():a.ccTO(t-32),this.currentChannel=n,!0}parseMidrow(e,t){let i=0;if((e===17||e===25)&&t>=32&&t<=47){if(e===17?i=1:i=2,i!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;let s=this.channels[i];return s?(s.ccMIDROW(t),this.logger.log(3,()=>"MIDROW ("+_t([e,t])+")"),!0):!1}return!1}parsePAC(e,t){let i,s=(e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127,n=(e===16||e===24)&&t>=64&&t<=95;if(!(s||n))return!1;let a=e<=23?1:2;return t>=64&&t<=95?i=a===1?Ag[e]:Ig[e]:i=a===1?xg[e]:Lg[e],this.getChannel(a).setPAC(this.interpretPAC(i,t)),this.currentChannel=a,!0}interpretPAC(e,t){let i,s={color:null,italics:!1,indent:null,underline:!1,row:e};return t>95?i=t-96:i=t-64,s.underline=(i&1)===1,i<=13?s.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(i/2)]:i<=15?(s.italics=!0,s.color="white"):s.indent=Math.floor((i-16)/2)*4,s}parseChars(e,t){let i,s=null,n=null;if(e>=25?(i=2,n=e-8):(i=1,n=e),n>=17&&n<=19){let a;n===17?a=t+80:n===18?a=t+112:a=t+144,this.logger.log(2,()=>"Special char '"+Cd(a)+"' in channel "+i),s=[a]}else e>=32&&e<=127&&(s=t===0?[e]:[e,t]);return s&&this.logger.log(3,()=>"Char codes = "+_t(s).join(",")),s}parseBackgroundAttributes(e,t){let i=(e===16||e===24)&&t>=32&&t<=47,s=(e===23||e===31)&&t>=45&&t<=47;if(!(i||s))return!1;let n,a={};e===16||e===24?(n=Math.floor((t-32)/2),a.background=Rg[n],t%2===1&&(a.background=a.background+"_semi")):t===45?a.background="transparent":(a.foreground="black",t===47&&(a.underline=!0));let o=e<=23?1:2;return this.getChannel(o).setBkgData(a),!0}reset(){for(let e=0;e<Object.keys(this.channels).length;e++){let t=this.channels[e];t&&t.reset()}Wi(null,null,this.cmdHistory)}cueSplitAtTime(e){for(let t=0;t<this.channels.length;t++){let i=this.channels[t];i&&i.cueSplitAtTime(e)}}};function Wi(r,e,t){t.a=r,t.b=e}function Pg(r,e,t){return t.a===r&&t.b===e}function _g(){return{a:null,b:null}}var Gt=class{constructor(e,t){this.timelineController=void 0,this.cueRanges=[],this.trackName=void 0,this.startTime=null,this.endTime=null,this.screen=null,this.timelineController=e,this.trackName=t}dispatchCue(){this.startTime!==null&&(this.timelineController.addCues(this.trackName,this.startTime,this.endTime,this.screen,this.cueRanges),this.startTime=null)}newCue(e,t,i){(this.startTime===null||this.startTime>e)&&(this.startTime=e),this.endTime=t,this.screen=i,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}},$r=class{constructor(e){this.hls=void 0,this.media=null,this.config=void 0,this.enabled=!0,this.Cues=void 0,this.tracks=[],this.initPTS=[],this.unparsedVttFrags=[],this.captionsTracks={},this.cueCache={},this.nonNativeCaptionsTracks={},this.cea608Parser1=void 0,this.cea608Parser2=void 0,this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs=Go(),this.captionsProperties=void 0,this.hls=e,this.config=e.config,this.Cues=e.config.cueHandler,this.cueCache={},this.captionsProperties={textTrack1:{label:this.config.captionsTextTrack1Label,languageCode:this.config.captionsTextTrack1LanguageCode},textTrack2:{label:this.config.captionsTextTrack2Label,languageCode:this.config.captionsTextTrack2LanguageCode},textTrack3:{label:this.config.captionsTextTrack3Label,languageCode:this.config.captionsTextTrack3LanguageCode},textTrack4:{label:this.config.captionsTextTrack4Label,languageCode:this.config.captionsTextTrack4LanguageCode}},e.on(y.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(y.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(y.MANIFEST_LOADING,this.onManifestLoading,this),e.on(y.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(y.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(y.FRAG_LOADING,this.onFragLoading,this),e.on(y.FRAG_LOADED,this.onFragLoaded,this),e.on(y.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(y.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(y.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(y.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(y.BUFFER_APPENDED,this.onBufferAppended,this),e.on(y.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){let{hls:e}=this;e.off(y.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(y.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(y.MANIFEST_LOADING,this.onManifestLoading,this),e.off(y.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(y.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(y.FRAG_LOADING,this.onFragLoading,this),e.off(y.FRAG_LOADED,this.onFragLoaded,this),e.off(y.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(y.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(y.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(y.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(y.BUFFER_APPENDED,this.onBufferAppended,this),e.off(y.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=this.media=null,this.cea608Parser1=this.cea608Parser2=void 0}initCea608Parsers(){let e=new Gt(this,"textTrack1"),t=new Gt(this,"textTrack2"),i=new Gt(this,"textTrack3"),s=new Gt(this,"textTrack4");this.cea608Parser1=new _s(1,e,t),this.cea608Parser2=new _s(3,i,s)}addCues(e,t,i,s,n){let a=!1;for(let l=n.length;l--;){let d=n[l],c=kg(d[0],d[1],t,i);if(c>=0&&(d[0]=Math.min(d[0],t),d[1]=Math.max(d[1],i),a=!0,c/(i-t)>.5))return}if(a||n.push([t,i]),this.config.renderTextTracksNatively){let l=this.cueCache[e];if(l){let d=this.Cues.newCue(null,t,i,s);d.length&&l.push.apply(l,d)}else{let d=this.captionsTracks[e].track;this.Cues.newCue(d,t,i,s)}}else{var o;let l=this.Cues.newCue(null,t,i,s),d=(o=this.captionsProperties[e])==null?void 0:o.media;this.hls.trigger(y.CUES_PARSED,{type:"captions",cues:l,track:e,closedCaptions:d})}}onInitPtsFound(e,{id:t,timestampOffsets:i}){let{unparsedVttFrags:s}=this;t===H.MAIN&&(this.initPTS=i),s.length&&(this.unparsedVttFrags=[],s.forEach(n=>{this.initPTS[n.frag.cc]?this.onFragLoaded(y.FRAG_LOADED,n):this.hls.trigger(y.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:n.frag,part:null,error:new Error("Subtitle discontinuity domain does not match main")})}))}createCaptionsTrack(e){this.config.renderTextTracksNatively?this.createNativeTrack(e):this.createNonNativeTrack(e)}createNativeTrack(e){if(this.captionsTracks[e])return;let{captionsProperties:t,captionsTracks:i,cueCache:s,media:n}=this,{label:a,languageCode:o}=t[e];n&&(s[e]=[],i[e]=fa(n,"captions",a,o,"hidden"))}createNonNativeTrack(e){if(this.nonNativeCaptionsTracks[e])return;let t=this.captionsProperties[e];if(!t)return;let i=t.label,s={_id:e,label:i,kind:"captions",default:t.media?!!t.media.default:!1,closedCaptions:t.media};this.nonNativeCaptionsTracks[e]=s,this.hls.trigger(y.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:[s]})}onMediaAttaching(e,t){this.media=t.media}onMediaDetaching(e,t){let i=!!t.transferMedia;if(this.media=null,!i){if(this.config.renderTextTracksNatively){let{captionsTracks:s,cueCache:n}=this;for(let a in s)s[a].remove(),delete n[a]}this.cueCache={},this.captionsTracks={},this.nonNativeCaptionsTracks={}}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs=Go(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}onSubtitleTracksUpdated(e,t){let i=t.subtitleTracks||[];if(i.length&&!this.config.renderTextTracksNatively&&!td(this.tracks,i)){let s=i.map(n=>({label:n.name,kind:n.type.toLowerCase(),default:n.default,subtitleTrack:n}));this.hls.trigger(y.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:s})}this.tracks=i}onManifestLoaded(e,t){this.config.enableCEA708Captions&&t.captions&&t.captions.forEach(i=>{let s=/(?:CC|SERVICE)([1-4])/.exec(i.instreamId);if(!s)return;let n=`textTrack${s[1]}`,a=this.captionsProperties[n];a&&(a.label=i.name,i.lang&&(a.languageCode=i.lang),a.media=i)})}closedCaptionsForLevel(e){let t=this.hls.levels[e.level];return t?.attrs["CLOSED-CAPTIONS"]}onFragLoading(e,t){if(this.enabled&&t.frag.type===H.MAIN){var i,s;let{cea608Parser1:n,cea608Parser2:a,lastSn:o}=this,{cc:l,sn:d}=t.frag,c=(i=(s=t.part)==null?void 0:s.index)!=null?i:-1;n&&a&&(d!==o+1||d===o&&c!==this.lastPartIndex+1||l!==this.lastCc)&&(n.reset(),a.reset()),this.lastCc=l,this.lastSn=d,this.lastPartIndex=c}}onFragLoaded(e,t){let{frag:i,payload:s}=t;if(i.level<this.tracks.length&&i.type===H.SUBTITLE)if(s.byteLength){let n=i.decryptdata,a="stats"in t;if(n==null||!n.encrypted||a){let o=this.tracks[i.level],l=this.vttCCs;l[i.cc]||(l[i.cc]={start:i.start,prevCC:this.prevCC,new:!0},this.prevCC=i.cc),o?.textCodec===yr?this._parseIMSC1(t):this._parseVTTs(t)}}else{let n="part"in t?t.part:null;this.hls.trigger(y.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,part:n,error:new Error("Empty subtitle payload")})}}_parseIMSC1(e){let{frag:t,payload:i}=e,s="part"in e?e.part:null,n=this.hls;Do(i,this.initPTS[t.cc],a=>{this._appendCues(a,t.level),n.trigger(y.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:t,part:s})},a=>{n.logger.log(`Cannot parse IMSC1 (sn: ${t.sn} @${t.start}): ${a}`),n.trigger(y.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:t,part:s,error:a})})}_parseVTTs(e){var t;let{frag:i,payload:s}=e,n="part"in e?e.part:null,{initPTS:a,unparsedVttFrags:o}=this,l=a.length-1;if(!a[i.cc]&&l===-1){o.push(e);return}let d=this.hls,c=(t=i.initSegment)==null?void 0:t.data,h=c?Ye(c,new Uint8Array(s)).buffer:s;ig(h,this.initPTS[i.cc],this.vttCCs,i.cc,(n&&!c?n:i).start,u=>{this._appendCues(u,i.level),d.trigger(y.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:i,part:n})},u=>{let f=u.message.startsWith("Missing initPTS");if(d.logger.log(`${f?"Deferred parsing of":"Cannot parse"} VTT cue (sn: ${i.sn} @${i.start}): ${u}`),f){o.push(e);return}else this.config.enableIMSC1&&this._fallbackToIMSC1(e);d.trigger(y.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,part:n,error:u})})}_fallbackToIMSC1(e){let{frag:t,payload:i}=e,s=this.tracks[t.level];s.textCodec||Do(i,this.initPTS[t.cc],()=>{s.textCodec=yr,this._parseIMSC1(e)},()=>{s.textCodec="wvtt"})}_appendCues(e,t){let i=this.hls;if(this.config.renderTextTracksNatively){var s;let n=(s=this.tracks[t].trackNode)==null?void 0:s.track;if(!n||n.mode==="disabled")return;e.forEach(a=>vr(n,a))}else{let n=this.tracks[t];if(!n)return;let a=n.default?"default":"subtitles"+t;i.trigger(y.CUES_PARSED,{type:"subtitles",cues:e,track:a,subtitleTrack:n})}}onFragDecrypted(e,t){let{frag:i}=t;i.type===H.SUBTITLE&&this.onFragLoaded(y.FRAG_LOADED,t)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(e,t){if(!this.enabled||!this.config.enableCEA708Captions)return;let{frag:i,samples:s}=t;if(!(i.type===H.MAIN&&this.closedCaptionsForLevel(i)==="NONE"))for(let n=0;n<s.length;n++){let a=s[n].bytes;if(a){this.cea608Parser1||this.initCea608Parsers();let o=this.extractCea608Data(a);this.cea608Parser1.addData(s[n].pts,o[0]),this.cea608Parser2.addData(s[n].pts,o[1])}}}onBufferAppended(e,t){if(this.config.renderTextTracksNatively){var i;let{type:s,timeRanges:n}=t;if(s==="video"&&(i=n[s])!=null&&i.length){let{captionsTracks:a,cueCache:o}=this;Object.keys(o).forEach(l=>{var d;let c=(d=a[l])==null?void 0:d.track;if(c){let h=o[l];for(let u=0;u<h.length;u++)vr(c,h[u])}delete o[l]})}}}onBufferFlushing(e,t){let{startOffset:i,endOffset:s,endOffsetSubtitles:n,type:a}=t,{media:o}=this;if(!(!o||o.currentTime<s)){if(!a||a==="video"){let{captionsTracks:l,cueCache:d}=this;Object.keys(l).forEach(c=>Er(l[c].track,i,s)),Object.keys(d).forEach(c=>{let h=d[c];for(let u=h.length;u--;){let f=h[u];f.startTime>=i&&f.endTime<=s&&h.splice(u,1)}})}this.config.renderTextTracksNatively&&i===0&&n!==void 0&&this.tracks.forEach(l=>{var d;let c=(d=l.trackNode)==null?void 0:d.track;c&&Er(c,i,n)})}}extractCea608Data(e){let t=[[],[]],i=e[0]&31,s=2;for(let n=0;n<i;n++){let a=e[s++],o=127&e[s++],l=127&e[s++];if(o===0&&l===0)continue;if((4&a)!==0){let c=3&a;(c===0||c===1)&&(t[c].push(o),t[c].push(l))}}return t}};function kg(r,e,t,i){return Math.min(e,i)-Math.max(r,t)}function Go(){return{ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}}}var Dg=/\s/,Cg={newCue(r,e,t,i){let s=[],n,a,o,l,d,c=self.VTTCue||self.TextTrackCue;for(let u=0;u<i.rows.length;u++)if(n=i.rows[u],o=!0,l=0,d="",!n.isEmpty()){var h;for(let m=0;m<n.chars.length;m++)Dg.test(n.chars[m].uchar)&&o?l++:(d+=n.chars[m].uchar,o=!1);n.cueStartTime=e,e===t&&(t+=1e-4),l>=16?l--:l++;let f=Id(d.trim()),g=ua(e,t,f);r!=null&&(h=r.cues)!=null&&h.getCueById(g)||(a=new c(e,t,f),a.id=g,a.line=u+1,a.align="left",a.position=10+Math.min(80,Math.floor(l*8/32)*10),s.push(a))}return r&&s.length&&(s.sort((u,f)=>u.line==="auto"||f.line==="auto"?0:u.line>8&&f.line>8?f.line-u.line:u.line-f.line),s.forEach(u=>vr(r,u))),s}},ks=class{constructor(){this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=0,this.config=null,this.callbacks=null,this.context=null,this.stats=new li}destroy(){this.callbacks=this.context=this.config=null,this.abortInternal(),this.stats=null}load(e,t,i){let s=this.stats;if(s.loading.start)throw new Error("Loader can only be used once.");s.loading.start=self.performance.now(),this.context=e,this.config=t,this.callbacks=i,this.loadInternal()}abort(){var e;this.abortInternal(),(e=this.callbacks)!=null&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.getNetworkDetails())}loadtimeout(){if(!this.config)return;let e=this.config.loadPolicy.timeoutRetry,t=this.stats.retry;if(di(e,t,!0))this.retry(e);else{var i;oe.warn(`timeout while loading ${(i=this.context)==null?void 0:i.url}`);let s=this.callbacks;s&&(this.abortInternal(),s.onTimeout(this.stats,this.context,this.getNetworkDetails()))}}retry(e){let{context:t,stats:i}=this;this.retryDelay=Wr(e,i.retry),i.retry++,oe.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${t?.url}, retrying ${i.retry}/${e.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.resetInternalLoader(),self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(()=>this.loadInternal(),this.retryDelay)}};function wg(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch{}return!1}var Mg=/(\d+)-(\d+)\/(\d+)/,Ds=class extends ks{constructor(e){super(),this.fetchSetup=void 0,this.request=null,this.response=null,this.controller=null,this.fetchSetup=e.fetchSetup||Bg}destroy(){this.request=null,super.destroy(),this.response=null,this.controller=null,this.fetchSetup=null}abortInternal(){self.clearTimeout(this.retryTimeout),this.controller&&!this.stats.loading.end&&(this.stats.aborted=!0,this.controller.abort())}getNetworkDetails(){return this.response}resetInternalLoader(){this.response=null}loadInternal(){let{config:e,context:t,stats:i}=this;if(!e||!t)return;i.loading.first=0,i.loaded=0,i.aborted=!1,this.controller=new self.AbortController;let s=Og(t,this.controller.signal),n=t.responseType==="arraybuffer",a=n?"byteLength":"length",{maxTimeToFirstByteMs:o,maxLoadTimeMs:l}=e.loadPolicy;this.request=this.fetchSetup(t,s),self.clearTimeout(this.requestTimeout),e.timeout=o&&B(o)?o:l,this.requestTimeout=self.setTimeout(()=>{this.loadtimeout()},e.timeout),(Si(this.request)?this.request.then(self.fetch):self.fetch(this.request)).then(c=>{var h;this.response=c;let u=Math.max(self.performance.now(),i.loading.start);if(self.clearTimeout(this.requestTimeout),e.timeout=l,this.requestTimeout=self.setTimeout(()=>{this.loadtimeout()},l-(u-i.loading.start)),!c.ok){let{status:g,statusText:m}=c;throw new Ur(m||"fetch, bad network response",g,c)}i.loading.first=u,i.total=Ng(c.headers)||i.total;let f=(h=this.callbacks)==null?void 0:h.onProgress;return f&&B(e.highWaterMark)?this.loadProgressively(c,i,t,e.highWaterMark,f):n?c.arrayBuffer():t.responseType==="json"?c.json():c.text()}).then(c=>{var h,u;let f=this.response;if(!f)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),i.loading.end=Math.max(self.performance.now(),i.loading.first);let g=c[a];g&&(i.loaded=i.total=g);let m={url:f.url,data:c,code:f.status},p=(h=this.callbacks)==null?void 0:h.onProgress;p&&!B(e.highWaterMark)&&p(i,t,c,f),(u=this.callbacks)==null||u.onSuccess(m,i,t,f)}).catch(c=>{if(self.clearTimeout(this.requestTimeout),i.aborted)return;let h=c&&c.code||0,u=c?c.message:null,f=e.loadPolicy.errorRetry,g=i.retry,m={url:t.url,data:void 0,code:h};if(di(f,g,!1,m))this.retry(f);else{var p;oe.error(`${h} while loading ${t.url}`),(p=this.callbacks)==null||p.onError({code:h,text:u},t,c?c.details:null,i)}})}getCacheAge(){let e=null;if(this.response){let t=this.response.headers.get("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.response?this.response.headers.get(e):null}loadProgressively(e,t,i,s=0,n){let a=new ms,o=e.body.getReader(),l=()=>o.read().then(d=>{if(d.done)return a.dataLength&&n(t,i,a.flush().buffer,e),Promise.resolve(new ArrayBuffer(0));let c=d.value,h=c.length;return t.loaded+=h,h<s||a.dataLength?(a.push(c),a.dataLength>=s&&n(t,i,a.flush().buffer,e)):n(t,i,c.buffer,e),l()}).catch(()=>Promise.reject());return l()}};function Og(r,e){let t={method:"GET",mode:"cors",credentials:"same-origin",signal:e,headers:new self.Headers(ce({},r.headers))};return r.rangeEnd&&t.headers.set("Range","bytes="+r.rangeStart+"-"+String(r.rangeEnd-1)),t}function Fg(r){let e=Mg.exec(r);if(e)return parseInt(e[2])-parseInt(e[1])+1}function Ng(r){let e=r.get("Content-Range");if(e){let i=Fg(e);if(B(i))return i}let t=r.get("Content-Length");if(t)return parseInt(t)}function Bg(r,e){return new self.Request(r.url,e)}var Ur=class extends Error{constructor(e,t,i){super(e),this.code=void 0,this.details=void 0,this.code=t,this.details=i}},$g=(r,e,t)=>Math.max(e,Math.min(r,t)),Ug=/^age:\s*[\d.]+\s*$/im,Cs=class extends ks{constructor(e){super(),this.xhrSetup=void 0,this.loader=null,this.xhrSetup=e.xhrSetup||null}destroy(){super.destroy(),this.loader=null,this.xhrSetup=null}abortInternal(){let e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,e.readyState!==4&&(this.stats.aborted=!0,e.abort()))}getNetworkDetails(){return this.loader}resetInternalLoader(){this.loader=null}loadInternal(){let{config:e,context:t}=this;if(!e||!t)return;let i=this.loader=new self.XMLHttpRequest,s=this.stats;s.loading.first=0,s.loaded=0,s.aborted=!1;let n=this.xhrSetup;n?Promise.resolve().then(()=>{if(!(this.loader!==i||this.stats.aborted))return n.call(this,i,t.url,t)}).catch(a=>{if(!(this.loader!==i||this.stats.aborted))return i.open("GET",t.url,!0),n.call(this,i,t.url,t)}).then(()=>{this.loader!==i||this.stats.aborted||this.openAndSendXhr(i,t,e)}).catch(a=>{var o;(o=this.callbacks)==null||o.onError({code:i.status,text:a.message},t,i,s)}):this.openAndSendXhr(i,t,e)}openAndSendXhr(e,t,i){e.readyState||e.open("GET",t.url,!0);let s=t.headers,{maxTimeToFirstByteMs:n,maxLoadTimeMs:a}=i.loadPolicy;if(s)for(let o in s)e.setRequestHeader(o,s[o]);t.rangeEnd&&e.setRequestHeader("Range",`bytes=${t.rangeStart}-${t.rangeEnd-1}`),e.onreadystatechange=this.readystatechange.bind(this),e.onprogress=this.loadprogress.bind(this),e.responseType=t.responseType,self.clearTimeout(this.requestTimeout),i.timeout=n&&B(n)?n:a,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),i.timeout),e.send()}readystatechange(){let{context:e,loader:t,stats:i}=this;if(!e||!t)return;let s=t.readyState,n=this.config;if(!i.aborted&&s>=2&&(i.loading.first===0&&(i.loading.first=Math.max(self.performance.now(),i.loading.start),n.timeout!==n.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),n.timeout=n.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),n.loadPolicy.maxLoadTimeMs-(i.loading.first-i.loading.start)))),s===4)){self.clearTimeout(this.requestTimeout),t.onreadystatechange=null,t.onprogress=null;let d=t.status,c=t.responseType==="text"?t.responseText:null;if(d>=200&&d<300){let g=c??t.response;if(g!=null){var a,o;i.loading.end=Math.max(self.performance.now(),i.loading.first);let m=t.responseType==="arraybuffer"?g.byteLength:g.length;i.loaded=i.total=m,i.bwEstimate=i.total*8e3/(i.loading.end-i.loading.first);let p=(a=this.callbacks)==null?void 0:a.onProgress;p&&p(i,e,g,t);let v={url:t.responseURL,data:g,code:d};e.rangeEnd&&m!==e.rangeEnd-e.rangeStart&&oe.warn(`Payload length ${m} does not match requested Range: bytes=${e.rangeStart}-${e.rangeEnd-1}`),(o=this.callbacks)==null||o.onSuccess(v,i,e,t);return}}let h=n.loadPolicy.errorRetry,u=i.retry,f={url:e.url,data:void 0,code:d};if(di(h,u,!1,f))this.retry(h);else{var l;oe.error(`${d} while loading ${e.url}`),(l=this.callbacks)==null||l.onError({code:d,text:t.statusText},e,t,i)}}}loadprogress(e){let t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)}getCacheAge(){let e=null;if(this.loader&&Ug.test(this.loader.getAllResponseHeaders())){let t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.loader&&new RegExp(`^${e}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(e):null}},Gg={maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null},Vg=Y(Y({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,maxDevicePixelRatio:Number.POSITIVE_INFINITY,preferManagedMediaSource:!1,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,frontBufferFlushThreshold:1/0,loopBackBufferFlush:void 0,startOnSegmentBoundary:!1,nextAudioTrackBufferFlushForwardOffset:.25,maxBufferSize:60*1e3*1e3,maxFragLookUpTolerance:.25,maxBufferHole:.1,detectStallWithCurrentTimeMs:1250,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,nudgeOnVideoHole:!0,skipBufferHolePadding:.1,liveSyncMode:"edge",liveSyncDurationCount:3,liveSyncOnStallIncrease:1,liveMaxLatencyDurationCount:1/0,liveMaxUnchangedPlaylistRefresh:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,workerPath:null,enableSoftwareAES:!0,startLevel:void 0,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,appendTimeout:1/0,ignorePlaylistParsingErrors:!1,loader:Cs,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,handleMpegTsVideoIntegrityErrors:"process",abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrEwmaDefaultEstimateMax:5e6,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,abrSwitchInterval:0,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystems:{},drmSystemOptions:{},requestMediaKeySystemAccessFunc:Dl,requireKeySystemAccessOnStart:!1,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableEmsgKLVMetadata:!1,enableID3MetadataCues:!0,emsgKLVSchemaUri:void 0,enableInterstitialPlayback:!0,interstitialAppendInPlace:!0,interstitialLiveLookAhead:10,iframeCacheLimit:2*1024*1024,useMediaCapabilities:!0,preserveManualLevelOnError:!1,errorPenaltyExpireMs:0,certLoadPolicy:{default:Gg},keyLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"},errorRetry:{maxNumRetry:8,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"}}},manifestLoadPolicy:{default:{maxTimeToFirstByteMs:1/0,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},playlistLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:2,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},fragLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:12e4,timeoutRetry:{maxNumRetry:4,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:6,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},steeringManifestLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},interstitialAssetListLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:3e4,timeoutRetry:{maxNumRetry:0,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:0,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3,streamController:Is,abrController:Dn,bufferController:sr,capLevelController:nr,errorController:Cn,fpsController:ur,id3TrackController:Ar,gapController:Sr,latencyController:Dr},Hg()),{},{subtitleStreamController:Cr,subtitleTrackController:Tr,timelineController:$r,audioStreamController:Jn,audioTrackController:er,emeController:xs,cmcdController:cr,contentSteeringController:hr,iframeController:Ir,interstitialsController:kr});function Hg(){return{cueHandler:Cg,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}}function Kg(r,e,t){if((e.liveSyncDurationCount||e.liveMaxLatencyDurationCount)&&(e.liveSyncDuration||e.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(e.liveMaxLatencyDurationCount!==void 0&&(e.liveSyncDurationCount===void 0||e.liveMaxLatencyDurationCount<=e.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(e.liveMaxLatencyDuration!==void 0&&(e.liveSyncDuration===void 0||e.liveMaxLatencyDuration<=e.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');if(e.liveMaxUnchangedPlaylistRefresh!==void 0){let a=e.liveMaxUnchangedPlaylistRefresh,o=$g(a,2,1/0);o!==a&&t.warn(`hls.js config: "liveMaxUnchangedPlaylistRefresh" clamped from ${a} to ${o}.`),e.liveMaxUnchangedPlaylistRefresh=o}let i=Gr(r),s=["manifest","level","frag"],n=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return s.forEach(a=>{let o=`${a==="level"?"playlist":a}LoadPolicy`,l=e[o]===void 0,d=[];n.forEach(c=>{let h=`${a}Loading${c}`,u=e[h];if(u!==void 0&&l){d.push(h);let f=i[o].default;switch(e[o]={default:f},c){case"TimeOut":f.maxLoadTimeMs=u,f.maxTimeToFirstByteMs=u;break;case"MaxRetry":f.errorRetry.maxNumRetry=u,f.timeoutRetry.maxNumRetry=u;break;case"RetryDelay":f.errorRetry.retryDelayMs=u,f.timeoutRetry.retryDelayMs=u;break;case"MaxRetryTimeout":f.errorRetry.maxRetryDelayMs=u,f.timeoutRetry.maxRetryDelayMs=u;break}}}),d.length&&t.warn(`hls.js config: "${d.join('", "')}" setting(s) are deprecated, use "${o}": ${fe(e[o])}`)}),Y(Y({},i),e)}function Gr(r){return r&&typeof r=="object"?Array.isArray(r)?r.map(Gr):Object.keys(r).reduce((e,t)=>(e[t]=Gr(r[t]),e),{}):r}function qg(r,e){let t=r.loader;t!==Ds&&t!==Cs?(e.log("[config]: Custom loader detected, cannot enable progressive streaming"),r.progressive=!1):wg()&&(r.loader=Ds,r.progressive=!0,r.enableSoftwareAES=!0,e.log("[config]: Progressive streaming enabled, using FetchLoader"))}var Vr=class extends bi{constructor(e,t){super(e,"level-controller"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.lastABRSwitchTime=-1,this._iframeVariants=[],this.onParsedComplete=void 0,this.steering=t,this._registerListeners()}_registerListeners(){let{hls:e}=this;e.on(y.MANIFEST_LOADING,this.onManifestLoading,this),e.on(y.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(y.LEVEL_LOADED,this.onLevelLoaded,this),e.on(y.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(y.FRAG_BUFFERED,this.onFragBuffered,this),e.on(y.ERROR,this.onError,this)}_unregisterListeners(){let{hls:e}=this;e.off(y.MANIFEST_LOADING,this.onManifestLoading,this),e.off(y.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(y.LEVEL_LOADED,this.onLevelLoaded,this),e.off(y.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(y.FRAG_BUFFERED,this.onFragBuffered,this),e.off(y.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach(t=>{t.loadError=0,t.fragmentError=0}),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1,this._iframeVariants=[]}onManifestLoading(e,t){this.resetLevels()}onManifestLoaded(e,t){let i=this.hls.config.preferManagedMediaSource,s=[],n={},a={},o=!1,l=!1,d=!1,c=!1;t.levels.forEach(h=>{let u=h.attrs,f=Vo(h,i),{audioCodec:g,videoCodec:m,imageCodec:p,width:v,height:T}=h;if(!f){this.log(`Some or all CODECS not supported "${u.CODECS}"`);return}o||(o=!!(v&&T)),l||(l=!!m),d||(d=!!g),c||(c=!!p);let{CODECS:E,"FRAME-RATE":S,"HDCP-LEVEL":b,"PATHWAY-ID":A,RESOLUTION:x,"VIDEO-RANGE":R}=u,I=`${`${A||"."}-`}${h.bitrate}-${x}-${S}-${E}-${R}-${b}`;if(n[I])if(n[I].uri!==h.url&&!h.attrs["PATHWAY-ID"]){let k=a[I]+=1;h.attrs["PATHWAY-ID"]=new Array(k+1).join(".");let D=this.createLevel(h);n[I]=D,s.push(D)}else h.iframes||(n[I].addGroupId("audio",u.AUDIO),n[I].addGroupId("text",u.SUBTITLES));else{let k=this.createLevel(h);n[I]=k,a[I]=1,s.push(k)}}),this.filterAndSortMediaOptions(s,t,o,l,d,c)}createLevel(e){let t=new wt(e),i=e.supplemental;if(i!=null&&i.videoCodec&&!Md(i.videoCodec,this.hls.config.preferManagedMediaSource)){let s=new Error(`SUPPLEMENTAL-CODECS not supported "${i.videoCodec}"`);this.log(s.message),t.supportedResult=pl(s,[])}return t}filterAndSortMediaOptions(e,t,i,s,n,a){var o;let l=[],d=[],c=e,h=((o=t.stats)==null?void 0:o.parsing)||{},u=this.hls.config.preferManagedMediaSource;if((i||s)&&n&&(c=c.filter(({videoCodec:b,videoRange:A,width:x,height:R})=>(!!b||!!(x&&R))&&uh(A))),s&&a&&(c=c.filter(b=>!b.imageCodec)),c.length===0){Promise.resolve().then(()=>{if(this.hls){let b="no level with compatible codecs found in manifest",A=b;t.levels.length&&(A=`one or more CODECS in variant not supported: ${fe(t.levels.map(R=>R.attrs.CODECS).filter((R,P,I)=>I.indexOf(R)===P))}`,this.warn(A),b+=` (${A})`);let x=new Error(b);this.hls.trigger(y.ERROR,{type:W.MEDIA_ERROR,details:L.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:x,reason:A})}}),h.end=performance.now();return}t.audioTracks&&(l=t.audioTracks.filter(b=>!b.audioCodec||wd(b.audioCodec,u)),Ho(l)),t.subtitles&&(d=t.subtitles,Ho(d));let f=c.slice(0);c.sort((b,A)=>{if(b.attrs["HDCP-LEVEL"]!==A.attrs["HDCP-LEVEL"])return(b.attrs["HDCP-LEVEL"]||"")>(A.attrs["HDCP-LEVEL"]||"")?1:-1;if(i&&b.height!==A.height)return b.height-A.height;if(b.frameRate!==A.frameRate)return b.frameRate-A.frameRate;if(b.videoRange!==A.videoRange)return ss.indexOf(b.videoRange)-ss.indexOf(A.videoRange);if(b.videoCodec!==A.videoCodec){let x=Ra(b.videoCodec),R=Ra(A.videoCodec);if(x!==R)return R-x}if(b.uri===A.uri&&b.codecSet!==A.codecSet){let x=ts(b.codecSet),R=ts(A.codecSet);if(x!==R)return R-x}return b.averageBitrate!==A.averageBitrate?b.averageBitrate-A.averageBitrate:0});let g=f[0];if(this.steering&&(c=this.steering.filterParsedLevels(c),c.length!==f.length)){for(let b=0;b<f.length;b++)if(f[b].pathwayId===c[0].pathwayId){g=f[b];break}}this._levels=c;for(let b=0;b<c.length;b++)if(c[b]===g){var m;this._firstLevel=b;let A=g.bitrate,x=this.hls.bandwidthEstimate;if(this.log(`manifest loaded, ${c.length} level(s) found, first bitrate: ${A}`),((m=this.hls.userConfig)==null?void 0:m.abrEwmaDefaultEstimate)===void 0){let R=Math.min(A,this.hls.config.abrEwmaDefaultEstimateMax);R>x&&x===this.hls.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=R)}break}let p=t.iframeVariants.filter(b=>Vo(b,u));this._iframeVariants=p;let v=n&&!s,T=this.hls.config,E=!!(T.audioStreamController&&T.audioTrackController),S={levels:c,audioTracks:l,subtitleTracks:d,iframeVariants:p,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:n,video:s,altAudio:E&&!v&&l.some(b=>!!b.url)};h.end=performance.now(),this.hls.trigger(y.MANIFEST_PARSED,S)}get iframeVariants(){return this._iframeVariants.length===0?null:this._iframeVariants}get levels(){return this._levels.length===0?null:this._levels}get loadLevelObj(){return this.currentLevel}get level(){return this.currentLevelIndex}set level(e){let t=this._levels;if(t.length===0)return;if(e<0||e>=t.length){let c=new Error("invalid level idx"),h=e<0;if(this.hls.trigger(y.ERROR,{type:W.OTHER_ERROR,details:L.LEVEL_SWITCH_ERROR,level:e,fatal:h,error:c,reason:c.message}),h)return;e=Math.min(e,t.length-1)}let i=this.currentLevelIndex,s=this.currentLevel,n=s?s.attrs["PATHWAY-ID"]:void 0,a=t[e],o=a.attrs["PATHWAY-ID"];if(this.currentLevelIndex=e,this.currentLevel=a,i===e&&s&&n===o)return;this.log(`Switching to level ${e} (${a.height?a.height+"p ":""}${a.videoRange?a.videoRange+" ":""}${a.codecSet?a.codecSet+" ":""}@${a.bitrate})${o?" with Pathway "+o:""} from level ${i}${n?" with Pathway "+n:""}`);let l={level:e,attrs:a.attrs,details:a.details,bitrate:a.bitrate,averageBitrate:a.averageBitrate,maxBitrate:a.maxBitrate,realBitrate:a.realBitrate,width:a.width,height:a.height,codecSet:a.codecSet,audioCodec:a.audioCodec,videoCodec:a.videoCodec,audioGroups:a.audioGroups,subtitleGroups:a.subtitleGroups,loaded:a.loaded,loadError:a.loadError,fragmentError:a.fragmentError,name:a.name,id:a.id,uri:a.uri,url:a.url,urlId:0,audioGroupIds:a.audioGroupIds,textGroupIds:a.textGroupIds};this.hls.trigger(y.LEVEL_SWITCHING,l);let d=a.details;if(!d||d.live){let c=this.switchParams(a.uri,s?.details,d);this.loadPlaylist(c)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(e){this.manualLevelIndex=e,this._startLevel===void 0&&(this._startLevel=e),e!==-1&&(this.level=e)}get firstLevel(){return this._firstLevel}set firstLevel(e){this._firstLevel=e}get startLevel(){if(this._startLevel===void 0){let e=this.hls.config.startLevel;return e!==void 0?e:this.hls.firstAutoLevel}return this._startLevel}set startLevel(e){this._startLevel=e}get pathways(){return this.steering?this.steering.pathways():[]}get pathwayPriority(){return this.steering?this.steering.pathwayPriority:null}set pathwayPriority(e){if(this.steering){let t=this.steering.pathways(),i=e.filter(s=>t.indexOf(s)!==-1);if(e.length<1){this.warn(`pathwayPriority ${e} should contain at least one pathway from list: ${t}`);return}this.steering.pathwayPriority=i}}onError(e,t){t.fatal||!t.context||t.context.type===te.LEVEL&&t.context.level===this.level&&this.checkRetry(t)}onFragBuffered(e,{frag:t}){if(t.type===H.MAIN){let i=t.elementaryStreams;if(!Object.keys(i).some(n=>!!i[n]))return;let s=this._levels[t.level];s!=null&&s.loadError&&(this.log(`Resetting level error count of ${s.loadError} on frag buffered`),s.loadError=0)}}onLevelLoaded(e,t){var i;let{level:s,details:n}=t,a=t.levelInfo;if(!a){var o;this.warn(`Invalid level index ${s}`),(o=t.deliveryDirectives)!=null&&o.skip&&(n.deltaUpdateFailed=!0);return}if(a===this.currentLevel||t.withoutMultiVariant){a.fragmentError===0&&(a.loadError=0);let l=a.details;l===t.details&&l.advanced&&(l=void 0),this.playlistLoaded(s,t,l)}else(i=t.deliveryDirectives)!=null&&i.skip&&(n.deltaUpdateFailed=!0)}loadPlaylist(e){super.loadPlaylist(),this.shouldLoadPlaylist(this.currentLevel)&&this.scheduleLoading(this.currentLevel,e)}loadingPlaylist(e,t){super.loadingPlaylist(e,t);let i=this.getUrlWithDirectives(e.uri,t),s=this.currentLevelIndex,n=e.attrs["PATHWAY-ID"],a=e.details,o=a?.age;this.log(`Loading level index ${s}${t?.msn!==void 0?" at sn "+t.msn+" part "+t.part:""}${n?" Pathway "+n:""}${o&&a.live?" age "+o.toFixed(1)+(a.type&&" "+a.type||""):""} ${i}`),this.hls.trigger(y.LEVEL_LOADING,{url:i,level:s,levelInfo:e,pathwayId:e.attrs["PATHWAY-ID"],id:0,deliveryDirectives:t||null})}get nextLoadLevel(){return this.manualLevelIndex!==-1?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(e){let t=this.currentLevelIndex;if(this.manualLevelIndex===-1&&e!==t&&e!==-1){let s=this.hls.config.abrSwitchInterval;if(s>0){let n=performance.now(),a=n-this.lastABRSwitchTime,o=s*1e3;if(this.lastABRSwitchTime>-1&&a<o){this.warn(`Preventing ABR level switch: ${t} -> ${e} (${Math.round(a)}ms < ${o}ms / ${s}s)`);return}this.lastABRSwitchTime=n,this.log(`Allowing ABR level switch: ${t} -> ${e} (${Math.round(a)}ms >= ${o}ms / ${s}s)`)}}this.level=e,this.manualLevelIndex===-1&&(this.hls.nextAutoLevel=e)}removeLevel(e){var t;if(this._levels.length===1)return;let i=this._levels.filter((n,a)=>a!==e?!0:(this.steering&&this.steering.removeLevel(n),n===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,n.details&&n.details.fragments.forEach(o=>o.level=-1)),!1));Bl(i),this._levels=i,this.currentLevelIndex>-1&&(t=this.currentLevel)!=null&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.manualLevelIndex>-1&&(this.manualLevelIndex=this.currentLevelIndex);let s=i.length-1;this._firstLevel=Math.min(this._firstLevel,s),this._startLevel&&(this._startLevel=Math.min(this._startLevel,s)),this.hls.trigger(y.LEVELS_UPDATED,{levels:i})}onLevelsUpdated(e,{levels:t}){this._levels=t}checkMaxAutoUpdated(){let{autoLevelCapping:e,maxAutoLevel:t,maxHdcpLevel:i}=this.hls;this._maxAutoLevel!==t&&(this._maxAutoLevel=t,this.hls.trigger(y.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:e,levels:this.levels,maxAutoLevel:t,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:i}))}};function wd(r,e){return fi(r,"audio",e)}function Md(r,e){return fi(r,"video",e)}function Vo(r,e){let{audioCodec:t,videoCodec:i}=r;t&&(r.audioCodec=t=is(t,e)||void 0),i&&(i=r.videoCodec=sh(i));let{unknownCodecs:s}=r;return!(s?.length||0||t&&!wd(t,e)||i&&!Md(i,e))}function Ho(r){let e={};r.forEach(t=>{let i=t.groupId||"";t.id=e[i]=e[i]||0,e[i]++})}var Hr=class extends Oe{constructor(e,t){super("key-loader",t),this.config=void 0,this.keyLoaderInfo={},this.emeController=null,this.config=e}abort(e){for(let i in this.keyLoaderInfo){let s=this.keyLoaderInfo[i].loader;if(s){var t;if(e&&e!==((t=s.context)==null?void 0:t.frag.type))return;s.abort()}}}destroy(){for(let e in this.keyLoaderInfo){let t=this.keyLoaderInfo[e].loader;t&&t.destroy()}this.emeController=null,this.keyLoaderInfo={}}loadClear(e,t,i){return this.emeController?this.emeController.loadClear(e,t,i):null}load(e,t){return!e.decryptdata&&e.encrypted&&this.emeController&&this.config.emeEnabled?this.emeController.selectKeySystemFormat(e).then(i=>this.loadInternal(e,t,i)):this.loadInternal(e,t)}loadInternal(e,t,i){i&&e.setKeyFormat(i);let s=e.decryptdata;if(!s){let a=new Error(i?`Expected frag.decryptdata to be defined after setting format ${i}`:`Missing decryption data on fragment in onKeyLoading (emeEnabled with controller: ${this.emeController&&this.config.emeEnabled})`);return Promise.reject(mt(e,L.KEY_LOAD_ERROR,a))}let n=e;switch(s.method){case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return s.keyFormat==="identity"?this.loadKeyHTTP(n):t?t.then(()=>this.loadKeyEME(n)):this.loadKeyEME(n);case"AES-128":case"AES-256":case"AES-256-CTR":return this.loadKeyHTTP(n);default:return Promise.reject(mt(e,L.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${s.method}"`)))}}loadKeyEME(e){if(this.emeController&&this.config.emeEnabled){var t;if(!e.decryptdata.keyId&&(t=e.initSegment)!=null&&t.data){let i=Nc(e.initSegment.data);if(i.length){let s=i[0],n=e.decryptdata.uri;if(s.some(a=>a!==0))this.log(`Using keyId found in init segment ${Ie(s)} keyUri: ${n}`),Mt.setKeyIdForUri(n,s);else{let a=Mt.addKeyIdForUri(n);this.log(`Patching empty keyId with ${Ie(a)} keyUri: ${n}`),s=a}e.decryptdata.keyId=s}}return this.emeController.loadKey(e).then(()=>({frag:e,keyInfo:{decryptdata:e.decryptdata}}))}return Promise.reject(mt(e,L.KEY_LOAD_ERROR,new Error(`emeEnabled with controller: ${this.emeController&&this.config.emeEnabled})`)))}loadKeyHTTP(e){let t=e.decryptdata,i=t.uri;if(!i)return Promise.reject(mt(e,L.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${i}"`)));let s=this.keyLoaderInfo[i];if(s){if(s.decryptdata.key)return t.key=s.decryptdata.key,s.keyLoadPromise=null,Promise.resolve({frag:e,keyInfo:s});if(s.keyLoadPromise)return s.keyLoadPromise.then(d=>(t.key=s.decryptdata.key,Y(Y({},d),{},{frag:e})))}this.log(`Loading${t.keyId?" keyId: "+Ie(t.keyId):""} URI: ${t.uri} from ${e.type} ${e.level}`);let n=this.config,a=n.loader,o=new a(n);e.keyLoader=o;let l=this.keyLoaderInfo[i]={decryptdata:t,keyLoadPromise:null,loader:o};return l.keyLoadPromise=new Promise((d,c)=>{let h={type:te.KEY,keyInfo:l,frag:e,responseType:"arraybuffer",url:i},u=n.keyLoadPolicy.default,f={loadPolicy:u,timeout:u.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},g={onSuccess:(m,p,v,T)=>{let{frag:E,keyInfo:S,url:b}=v;if(!E.decryptdata||S!==this.keyLoaderInfo[b])return c(mt(E,L.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),T));S.decryptdata.key=E.decryptdata.key=new Uint8Array(m.data),E.keyLoader=S.loader=S.keyLoadPromise=null,d({frag:E,keyInfo:S})},onError:(m,p,v,T)=>{this.resetLoader(p),c(mt(e,L.KEY_LOAD_ERROR,new Error(`HTTP Error ${m.code} loading key ${m.text}`),v,Y({url:i,data:void 0},m)))},onTimeout:(m,p,v)=>{this.resetLoader(p),c(mt(e,L.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),v))},onAbort:(m,p,v)=>{this.resetLoader(p),c(mt(e,L.INTERNAL_ABORTED,new Error("key loading aborted"),v))}};o.load(h,f,g)})}resetLoader(e){let{frag:t,keyInfo:i,url:s}=e,n=i.loader;t.keyLoader===n&&(t.keyLoader=i.loader=i.keyLoadPromise=null),delete this.keyLoaderInfo[s],n&&n.destroy()}};function mt(r,e=L.KEY_LOAD_ERROR,t,i,s){return new We({type:W.NETWORK_ERROR,details:e,fatal:!1,frag:r,response:s,error:t,networkDetails:i||null})}function Ko(r){let{type:e}=r;switch(e){case te.AUDIO_TRACK:return H.AUDIO;case te.SUBTITLE_TRACK:return H.SUBTITLE;default:return H.MAIN}}function Sn(r,e){let t=r.url;return(t===void 0||t.indexOf("data:")===0)&&(t=e.url),t}var Kr=class{constructor(e){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.onManifestLoaded=this.checkAutostartLoad,this.hls=e,this.registerListeners()}startLoad(e){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){let{hls:e}=this;e.on(y.MANIFEST_LOADING,this.onManifestLoading,this),e.on(y.LEVEL_LOADING,this.onLevelLoading,this),e.on(y.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.on(y.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this),e.on(y.LEVELS_UPDATED,this.onLevelsUpdated,this)}unregisterListeners(){let{hls:e}=this;e.off(y.MANIFEST_LOADING,this.onManifestLoading,this),e.off(y.LEVEL_LOADING,this.onLevelLoading,this),e.off(y.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.off(y.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this),e.off(y.LEVELS_UPDATED,this.onLevelsUpdated,this)}createInternalLoader(e){let t=this.hls.config,i=t.pLoader,s=t.loader,n=i||s,a=new n(t);return this.loaders[e.type]=a,a}getInternalLoader(e){return this.loaders[e.type]}resetInternalLoader(e){this.loaders[e]&&delete this.loaders[e]}destroyInternalLoaders(){for(let e in this.loaders){let t=this.loaders[e];t&&t.destroy(),this.resetInternalLoader(e)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(e,t){let{url:i}=t;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:te.MANIFEST,url:i,deliveryDirectives:null,levelOrTrack:null})}onLevelLoading(e,t){let{id:i,level:s,pathwayId:n,url:a,deliveryDirectives:o,levelInfo:l}=t;this.load({id:i,level:s,pathwayId:n,responseType:"text",type:te.LEVEL,url:a,deliveryDirectives:o,levelOrTrack:l})}onAudioTrackLoading(e,t){let{id:i,groupId:s,url:n,deliveryDirectives:a,track:o}=t;this.load({id:i,groupId:s,level:null,responseType:"text",type:te.AUDIO_TRACK,url:n,deliveryDirectives:a,levelOrTrack:o})}onSubtitleTrackLoading(e,t){let{id:i,groupId:s,url:n,deliveryDirectives:a,track:o}=t;this.load({id:i,groupId:s,level:null,responseType:"text",type:te.SUBTITLE_TRACK,url:n,deliveryDirectives:a,levelOrTrack:o})}onLevelsUpdated(e,t){let i=this.loaders[te.LEVEL];if(i){let s=i.context;s&&!t.levels.some(n=>n===s.levelOrTrack)&&(i.abort(),delete this.loaders[te.LEVEL])}}load(e){var t;let i=this.hls.config,s=this.getInternalLoader(e);if(s){let d=this.hls.logger,c=s.context;if(c?.levelOrTrack===e.levelOrTrack&&(c.url===e.url||c.deliveryDirectives&&!e.deliveryDirectives)){c.url===e.url?d.log(`[playlist-loader]: ignore ${e.url} ongoing request`):d.log(`[playlist-loader]: ignore ${e.url} in favor of ${c.url}`);return}d.log(`[playlist-loader]: aborting previous loader for type: ${e.type}`),s.abort()}let n;if(e.type===te.MANIFEST?n=i.manifestLoadPolicy.default:n=ce({},i.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),s=this.createInternalLoader(e),B((t=e.deliveryDirectives)==null?void 0:t.part)){let d;if(e.type===te.LEVEL&&e.level!==null?d=this.hls.levels[e.level].details:e.type===te.AUDIO_TRACK&&e.id!==null?d=this.hls.audioTracks[e.id].details:e.type===te.SUBTITLE_TRACK&&e.id!==null&&(d=this.hls.subtitleTracks[e.id].details),d){let c=d.partTarget,h=d.targetduration;if(c&&h){let u=Math.max(c*3,h*.8)*1e3;n=ce({},n,{maxTimeToFirstByteMs:Math.min(u,n.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(u,n.maxTimeToFirstByteMs)})}}}let a=n.errorRetry||n.timeoutRetry||{},o={loadPolicy:n,timeout:n.maxLoadTimeMs,maxRetry:a.maxNumRetry||0,retryDelay:a.retryDelayMs||0,maxRetryDelay:a.maxRetryDelayMs||0},l={onSuccess:(d,c,h,u)=>{let f=this.getInternalLoader(h);this.resetInternalLoader(h.type);let g=d.data;c.parsing.start=performance.now(),Et.isMediaPlaylist(g)||h.type!==te.MANIFEST?this.handleTrackOrLevelPlaylist(d,c,h,u||null,f):this.handleMasterPlaylist(d,c,h,u)},onError:(d,c,h,u)=>{this.handleNetworkError(c,h,!1,d,u)},onTimeout:(d,c,h)=>{this.handleNetworkError(c,h,!0,void 0,d)}};s.load(e,o,l)}checkAutostartLoad(){if(!this.hls)return;let{config:{autoStartLoad:e,startPosition:t},forceStartLoad:i}=this.hls;(e||i)&&(this.hls.logger.log(`${e?"auto":"force"} startLoad with configured startPosition ${t}`),this.hls.startLoad(t))}handleMasterPlaylist(e,t,i,s){let n=this.hls,a=e.data,o=Sn(e,i),l=Et.parseMasterPlaylist(a,o);if(l.playlistParsingError){t.parsing.end=performance.now(),this.handleManifestParsingError(e,i,l.playlistParsingError,s,t);return}let{contentSteering:d,levels:c,iframeVariants:h,sessionData:u,sessionKeys:f,startTimeOffset:g,variableList:m}=l;this.variableList=m,c.forEach(E=>{let{unknownCodecs:S}=E;if(S){let{preferManagedMediaSource:b}=this.hls.config,{audioCodec:A,videoCodec:x}=E;for(let R=S.length;R--;){let P=S[R];fi(P,"audio",b)?(E.audioCodec=A=A?`${A},${P}`:P,Kt.audio[A.substring(0,4)]=2,S.splice(R,1)):fi(P,"video",b)&&(E.videoCodec=x=x?`${x},${P}`:P,Kt.video[x.substring(0,4)]=2,S.splice(R,1))}}});let{AUDIO:p=[],SUBTITLES:v,"CLOSED-CAPTIONS":T}=Et.parseMasterPlaylistMedia(a,o,l);p.length&&!p.some(S=>!S.url)&&c[0].audioCodec&&!c[0].attrs.AUDIO&&(this.hls.logger.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),p.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new pe({}),bitrate:0,url:""})),n.trigger(y.MANIFEST_LOADED,{levels:c,audioTracks:p,subtitles:v,iframeVariants:h,captions:T,contentSteering:d,url:o,stats:t,networkDetails:s,sessionData:u,sessionKeys:f,startTimeOffset:g,variableList:m})}handleTrackOrLevelPlaylist(e,t,i,s,n){let a=this.hls,{id:o,level:l,type:d}=i,c=Sn(e,i),h=B(l)?l:B(o)?o:0,u=Ko(i),f=Et.parseLevelPlaylist(e.data,c,h,u,0,this.variableList);if(d===te.MANIFEST){let g={attrs:new pe({}),bitrate:0,details:f,name:"",url:c};f.requestScheduled=t.loading.start+Ol(f,0),a.trigger(y.MANIFEST_LOADED,{levels:[g],audioTracks:[],iframeVariants:[],url:c,stats:t,networkDetails:s,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}t.parsing.end=performance.now(),i.levelDetails=f,this.handlePlaylistLoaded(f,e,t,i,s,n)}handleManifestParsingError(e,t,i,s,n){this.hls.trigger(y.ERROR,{type:W.NETWORK_ERROR,details:L.MANIFEST_PARSING_ERROR,fatal:t.type===te.MANIFEST,url:e.url,err:i,error:i,reason:i.message,response:e,context:t,networkDetails:s,stats:n})}handleNetworkError(e,t,i=!1,s,n){let a=`A network ${i?"timeout":"error"+(s?" (status "+s.code+")":"")} occurred while loading ${e.type}`;e.type===te.LEVEL?a+=`: ${e.level} id: ${e.id}`:(e.type===te.AUDIO_TRACK||e.type===te.SUBTITLE_TRACK)&&(a+=` id: ${e.id} group-id: "${e.groupId}"`);let o=new Error(a);this.hls.logger.warn(`[playlist-loader]: ${a}`);let l=L.UNKNOWN,d=!1,c=this.getInternalLoader(e);switch(e.type){case te.MANIFEST:l=i?L.MANIFEST_LOAD_TIMEOUT:L.MANIFEST_LOAD_ERROR,d=!0;break;case te.LEVEL:l=i?L.LEVEL_LOAD_TIMEOUT:L.LEVEL_LOAD_ERROR,d=!1;break;case te.AUDIO_TRACK:l=i?L.AUDIO_TRACK_LOAD_TIMEOUT:L.AUDIO_TRACK_LOAD_ERROR,d=!1;break;case te.SUBTITLE_TRACK:l=i?L.SUBTITLE_TRACK_LOAD_TIMEOUT:L.SUBTITLE_LOAD_ERROR,d=!1;break}c&&this.resetInternalLoader(e.type);let h={type:W.NETWORK_ERROR,details:l,fatal:d,url:e.url,loader:c,context:e,error:o,networkDetails:t,stats:n};if(s){let u=e.url;t&&"url"in t&&(u=t.url),h.response=Y({url:u,data:void 0},s)}this.hls.trigger(y.ERROR,h)}handlePlaylistLoaded(e,t,i,s,n,a){let o=this.hls,{type:l,level:d,levelOrTrack:c,id:h,groupId:u,deliveryDirectives:f}=s,g=Sn(t,s),m=Ko(s),p=typeof s.level=="number"&&m===H.MAIN?d:void 0;c&&"iframes"in c&&c.iframes&&!e.iframesOnly&&(e.playlistParsingError=new Error("EXT-X-I-FRAME-STREAM-INF media playlist MUST contain an EXT-X-I-FRAMES-ONLY tag"),e.iframesOnly=!0);let v=e.playlistParsingError;if(v){if(this.hls.logger.warn(`${v} ${e.url}`),!o.config.ignorePlaylistParsingErrors){o.trigger(y.ERROR,{type:W.NETWORK_ERROR,details:L.LEVEL_PARSING_ERROR,fatal:!1,url:g,error:v,reason:v.message,response:t,context:s,level:p,parent:m,networkDetails:n,stats:i});return}e.playlistParsingError=null}if(!e.fragments.length){let T=e.playlistParsingError=new Error("No Segments found in Playlist");o.trigger(y.ERROR,{type:W.NETWORK_ERROR,details:L.LEVEL_EMPTY_ERROR,fatal:!1,url:g,error:T,reason:T.message,response:t,context:s,level:p,parent:m,networkDetails:n,stats:i});return}switch(e.live&&a&&(a.getCacheAge&&(e.ageHeader=a.getCacheAge()||0),(!a.getCacheAge||isNaN(e.ageHeader))&&(e.ageHeader=0)),l){case te.MANIFEST:case te.LEVEL:if(p){if(!c)p=0;else if(c!==o.levels[p]){let T=o.levels.indexOf(c);T>-1&&(p=T)}}o.trigger(y.LEVEL_LOADED,{details:e,levelInfo:c||o.levels[0],level:p||0,id:h||0,stats:i,networkDetails:n,deliveryDirectives:f,withoutMultiVariant:l===te.MANIFEST,context:s});break;case te.AUDIO_TRACK:o.trigger(y.AUDIO_TRACK_LOADED,{details:e,track:c,id:h||0,groupId:u||"",stats:i,networkDetails:n,deliveryDirectives:f,context:s});break;case te.SUBTITLE_TRACK:o.trigger(y.SUBTITLE_TRACK_LOADED,{details:e,track:c,id:h||0,groupId:u||"",stats:i,networkDetails:n,deliveryDirectives:f,context:s});break}}},xt=class r{static get version(){return Ei}static isMSESupported(){return kd()}static isSupported(){return fg()}static getMediaSource(){return bt()}static get Events(){return y}static get MetadataSchema(){return Me}static get ErrorTypes(){return W}static get ErrorDetails(){return L}static get DefaultConfig(){return r.defaultConfig?r.defaultConfig:Vg}static set DefaultConfig(e){r.defaultConfig=e}constructor(e={}){this.config=void 0,this.userConfig=void 0,this.logger=void 0,this._url=null,this.streamController=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this._emitter=new ta,this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.audioStreamController=void 0,this.subtititleStreamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.interstitialsController=void 0,this.iframeController=void 0,this.gapController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this._sessionId=void 0,this.triggeringException=void 0,this.started=!1;let t=this.logger=cc(e.debug||!1,"Hls instance",e.loggerId||e.assetPlayerId),i=this.config=Kg(r.DefaultConfig,e,t);this.userConfig=e,i.progressive&&qg(i,t);let{streamController:s,abrController:n,bufferController:a,capLevelController:o,errorController:l,fpsController:d,id3TrackController:c,iframeController:h,gapController:u}=i,f=new l(this),g=this.abrController=new n(this),m=new wn(this),p=i.interstitialsController,v=p?this.interstitialsController=new p(this,r):null,T=a?this.bufferController=new a(this,m):null,E=o?this.capLevelController=new o(this):null,S=d?new d(this):null,b=i.cmcdController,A=b?this.cmcdController=new b(this):null,x=new Kr(this),R=i.contentSteeringController,P=R?new R(this):null,I=this.levelController=new Vr(this,P),k=c?new c(this):void 0,D=new Hr(this.config,this.logger),F=this.streamController=new s(this,m,D),G=this.gapController=u?new u(this,m):void 0;E&&E.setStreamController(F);let $=[x,I,F];v&&$.splice(1,0,v),P&&$.splice(1,0,P),this.networkControllers=$;let C=[g];T&&C.push(T),G&&C.push(G),E&&C.push(E),S&&(S.setStreamController(F),C.push(S)),k&&C.push(k),C.push(m),this.audioTrackController=this.createController(i.audioTrackController,$);let M=i.audioStreamController;M&&$.push(this.audioStreamController=new M(this,m,D)),this.subtitleTrackController=this.createController(i.subtitleTrackController,$);let w=i.subtitleStreamController;w&&$.push(this.subtititleStreamController=new w(this,m,D)),this.createController(i.timelineController,C),D.emeController=this.emeController=this.createController(i.emeController,C),A&&C.push(A),this.latencyController=this.createController(i.latencyController,C),this.coreComponents=C,this.iframeController=h?new h(this,r):void 0,$.push(f);let N=f.onErrorOut;typeof N=="function"&&this.on(y.ERROR,N,f),this.on(y.MANIFEST_LOADED,x.onManifestLoaded,x)}createController(e,t){if(e){let i=new e(this);return t&&t.push(i),i}return null}on(e,t,i=this){this._emitter.on(e,t,i)}once(e,t,i=this){this._emitter.once(e,t,i)}removeAllListeners(e){this._emitter.removeAllListeners(e)}off(e,t,i=this,s){this._emitter.off(e,t,i,s)}listeners(e){return this._emitter.listeners(e)}emit(e,t,i){return this._emitter.emit(e,t,i)}trigger(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(i){if(this.logger.error("An internal error happened while handling event "+e+'. Error message: "'+i.message+'". Here is a stacktrace:',i),!this.triggeringException){this.triggeringException=!0;let s=e===y.ERROR;this.trigger(y.ERROR,{type:W.OTHER_ERROR,details:L.INTERNAL_EXCEPTION,fatal:s,event:e,error:i}),this.triggeringException=!1}}return!1}listenerCount(e){return this._emitter.listenerCount(e)}destroy(){this.logger.log("destroy"),this.trigger(y.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this._url=null,this.networkControllers.forEach(t=>t.destroy()),this.networkControllers.length=0,this.coreComponents.forEach(t=>t.destroy()),this.coreComponents.length=0,this.iframeController=void 0;let e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null}attachMedia(e){if(!e||"media"in e&&!e.media){let n=new Error(`attachMedia failed: invalid argument (${e})`);this.trigger(y.ERROR,{type:W.OTHER_ERROR,details:L.ATTACH_MEDIA_ERROR,fatal:!0,error:n});return}this.logger.log("attachMedia"),this._media&&(this.logger.warn("media must be detached before attaching"),this.detachMedia());let t="media"in e,i=t?e.media:e,s=t?e:{media:i};this._media=i,this.trigger(y.MEDIA_ATTACHING,s)}detachMedia(){this.logger.log("detachMedia");let e={};this.trigger(y.MEDIA_DETACHING,e),this._media=null,this.trigger(y.MEDIA_DETACHED,e)}transferMedia(){var e;this._media=null;let t=((e=this.bufferController)==null?void 0:e.transferMedia())||null,i={transferMedia:t};return this.trigger(y.MEDIA_DETACHING,i),this.trigger(y.MEDIA_DETACHED,i),t}loadSource(e){var t;this.stopLoad();let i=this.media,s=this._url,n=this._url=qr.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.logger.log(`loadSource:${n}`),i&&s&&(s!==n||(t=this.bufferController)!=null&&t.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(i)),this.trigger(y.MANIFEST_LOADING,{url:e})}get url(){return this._url}get hasEnoughToStart(){return this.streamController.hasEnoughToStart}get startPosition(){return this.streamController.startPositionValue}startLoad(e=-1,t){this.logger.log(`startLoad(${e+(t?", <skip seek to start>":"")})`),this.started=!0,this.resumeBuffering();for(let i=0;i<this.networkControllers.length&&(this.networkControllers[i].startLoad(e,t),!(!this.started||!this.networkControllers));i++);}stopLoad(){this.logger.log("stopLoad"),this.started=!1;for(let e=0;e<this.networkControllers.length&&(this.networkControllers[e].stopLoad(),!(this.started||!this.networkControllers));e++);}get loadingEnabled(){return this.started&&this.streamController.state!==_.STOPPED}get bufferingEnabled(){return this.streamController.bufferingEnabled}resumeBuffering(){this.bufferingEnabled||(this.logger.log("resume buffering"),this.networkControllers.forEach(e=>{e.resumeBuffering&&e.resumeBuffering()}))}pauseBuffering(){this.bufferingEnabled&&(this.logger.log("pause buffering"),this.networkControllers.forEach(e=>{e.pauseBuffering&&e.pauseBuffering()}))}get inFlightFragments(){let e={[H.MAIN]:this.streamController.inFlightFrag};return this.audioStreamController&&(e[H.AUDIO]=this.audioStreamController.inFlightFrag),this.subtititleStreamController&&(e[H.SUBTITLE]=this.subtititleStreamController.inFlightFrag),e}swapAudioCodec(){this.logger.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){this.logger.log("recoverMediaError");let e=this._media,t=this.started,i=e?.currentTime;this.detachMedia(),e&&(this.attachMedia(e),t&&(i?this.startLoad(i):this.config.autoStartLoad||this.startLoad()))}removeLevel(e){this.levelController.removeLevel(e)}get sessionId(){let e=this._sessionId;return e||(e=this._sessionId=Qo()),e}get levels(){let e=this.levelController.levels;return e||[]}get latestLevelDetails(){return this.streamController.getLevelDetails()||null}get loadLevelObj(){return this.levelController.loadLevelObj}get currentLevel(){return this.streamController.currentLevel}set currentLevel(e){this.logger.log(`set currentLevel:${e}`),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(e){this.logger.log(`set nextLevel:${e}`),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(e){this.logger.log(`set loadLevel:${e}`),this.levelController.manualLevel=e}get nextLoadLevel(){return this.levelController.nextLoadLevel}set nextLoadLevel(e){this.levelController.nextLoadLevel=e}get firstLevel(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)}set firstLevel(e){this.logger.log(`set firstLevel:${e}`),this.levelController.firstLevel=e}get startLevel(){let e=this.levelController.startLevel;return e===-1&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e}set startLevel(e){this.logger.log(`set startLevel:${e}`),e!==-1&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(e){let t=this.capLevelController,i=!!e;t&&i!==this.config.capLevelToPlayerSize&&(i?t.startCapping():(t.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=i)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){let{bwEstimator:e}=this.abrController;return e?e.getEstimate():NaN}set bandwidthEstimate(e){this.abrController.resetEstimator(e)}get abrEwmaDefaultEstimate(){let{bwEstimator:e}=this.abrController;return e?e.defaultEstimate:NaN}get ttfbEstimate(){let{bwEstimator:e}=this.abrController;return e?e.getEstimateTTFB():NaN}set autoLevelCapping(e){this._autoLevelCapping!==e&&(this.logger.log(`set autoLevelCapping:${e}`),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(e){hh(e)&&this._maxHdcpLevel!==e&&(this._maxHdcpLevel=e,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return this.levelController.manualLevel===-1}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){let{levels:e,config:{minAutoBitrate:t}}=this;if(!e)return 0;let i=e.length;for(let s=0;s<i;s++)if(e[s].maxBitrate>=t)return s;return 0}get maxAutoLevel(){let{levels:e,autoLevelCapping:t,maxHdcpLevel:i}=this,s;if(t===-1&&e!=null&&e.length?s=e.length-1:s=t,i)for(let n=s;n--;){let a=e[n].attrs["HDCP-LEVEL"];if(a&&a<=i)return n}return s}get firstAutoLevel(){return this.abrController.firstAutoLevel}get nextAutoLevel(){return this.abrController.nextAutoLevel}set nextAutoLevel(e){this.abrController.nextAutoLevel=e}get playingDate(){return this.streamController.currentProgramDateTime}get mainForwardBufferInfo(){return this.streamController.getMainFwdBufferInfo()}get audioForwardBufferInfo(){var e;return((e=this.audioStreamController)==null?void 0:e.getFwdBufferInfo())||null}get maxBufferLength(){return this.streamController.maxBufferLength}setAudioOption(e){var t;return((t=this.audioTrackController)==null?void 0:t.setAudioOption(e))||null}setSubtitleOption(e){var t;return((t=this.subtitleTrackController)==null?void 0:t.setSubtitleOption(e))||null}get allAudioTracks(){let e=this.audioTrackController;return e?e.allAudioTracks:[]}get audioTracks(){let e=this.audioTrackController;return e?e.audioTracks:[]}get audioTrack(){let e=this.audioTrackController;return e?e.audioTrack:-1}set audioTrack(e){let t=this.audioTrackController;t&&(t.audioTrack=e)}get nextAudioTrack(){var e,t;return(e=(t=this.audioStreamController)==null?void 0:t.nextAudioTrack)!=null?e:-1}set nextAudioTrack(e){let{audioTrackController:t}=this;t&&(t.nextAudioTrack=e)}get allSubtitleTracks(){let e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}get subtitleTracks(){let e=this.subtitleTrackController;return e?e.subtitleTracks:[]}get subtitleTrack(){let e=this.subtitleTrackController;return e?e.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(e){let t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}get subtitleDisplay(){let e=this.subtitleTrackController;return e?e.subtitleDisplay:!1}set subtitleDisplay(e){let t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(e){this.config.lowLatencyMode=e}get liveSyncPosition(){var e,t;return(e=(t=this.latencyController)==null?void 0:t.liveSyncPosition)!=null?e:null}get latency(){var e;return((e=this.latencyController)==null?void 0:e.latency)||0}get maxLatency(){var e;return((e=this.latencyController)==null?void 0:e.maxLatency)||0}get targetLatency(){var e;return((e=this.latencyController)==null?void 0:e.targetLatency)||null}set targetLatency(e){this.latencyController&&(this.latencyController.targetLatency=e)}get drift(){var e;return((e=this.latencyController)==null?void 0:e.drift)||null}get forceStartLoad(){return this.streamController.forceStartLoad}get pathways(){return this.levelController.pathways}get pathwayPriority(){return this.levelController.pathwayPriority}set pathwayPriority(e){this.levelController.pathwayPriority=e}get bufferedToEnd(){var e;return!!((e=this.bufferController)!=null&&e.bufferedToEnd)}get interstitialsManager(){return this.interstitialsController?this.interstitialsController.interstitialsManager:null}get iframeVariants(){let e=this.levelController.iframeVariants;return e||[]}createIFramePlayer(e){return this._url&&this.iframeController?this.iframeController.createIFramePlayer(e):null}createImageIFramePlayer(e){return this._url&&this.iframeController?this.iframeController.createImageIFramePlayer(e):null}getMediaDecodingInfo(e,t=this.allAudioTracks){let i=Tl(t);return yl(e,i,navigator.mediaCapabilities)}};xt.defaultConfig=void 0;var xm=.045,ga={textSizeFraction:.045,foregroundColor:"#FFFFFF",backgroundColor:"rgba(0,0,0,0.5)",windowColor:"rgba(0,0,0,0)",edgeType:"NONE",edgeColor:"#000000",applyEmbeddedStyles:!0,fontFamily:null},he={NETWORK_CONNECTION_FAILED:2e3,NETWORK_TIMEOUT:2001,NETWORK_HTTP_STATUS:2002,SOURCE_MALFORMED:3e3,SOURCE_UNSUPPORTED:3001,SOURCE_NOT_FOUND:3002,DRM_LICENSE_FAILED:4e3,DRM_LICENSE_HTTP_STATUS:4001,DRM_TOKEN_FETCH_FAILED:4002,DRM_PROVISIONING_FAILED:4003,DRM_SESSION_EXPIRED:4004,DRM_UNSUPPORTED:4005,DECODER_INIT_FAILED:5e3,DECODING_FAILED:5001,AUDIO_OUTPUT_FAILED:5002,BEHIND_LIVE_WINDOW:6e3,UNKNOWN:9e3},Wg="1.0.2";var Yg={2e3:"NETWORK_CONNECTION_FAILED",2001:"NETWORK_TIMEOUT",2002:"NETWORK_HTTP_STATUS",3e3:"SOURCE_MALFORMED",3001:"SOURCE_UNSUPPORTED",3002:"SOURCE_NOT_FOUND",4e3:"DRM_LICENSE_FAILED",4001:"DRM_LICENSE_HTTP_STATUS",4002:"DRM_TOKEN_FETCH_FAILED",4003:"DRM_PROVISIONING_FAILED",4004:"DRM_SESSION_EXPIRED",4005:"DRM_UNSUPPORTED",5e3:"DECODER_INIT_FAILED",5001:"DECODING_FAILED",5002:"AUDIO_OUTPUT_FAILED",6e3:"BEHIND_LIVE_WINDOW",9e3:"UNKNOWN"};function Ee(r,e,t,i,s,n){return{code:r,category:e,message:t,retryable:i,codeName:Yg[r]??`HTTP_${r}`,...s!==void 0?{httpStatusCode:s}:{},...n!==void 0?{cause:n}:{}}}function Od(r){switch(r?.code){case MediaError.MEDIA_ERR_NETWORK:return Ee(he.NETWORK_CONNECTION_FAILED,"Network",r.message||"network error while fetching media",!0);case MediaError.MEDIA_ERR_DECODE:return Ee(he.DECODING_FAILED,"Renderer",r.message||"media decode failed",!0);case MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED:return Ee(he.SOURCE_UNSUPPORTED,"Source",r.message||"source not supported by this browser",!1);default:return Ee(he.UNKNOWN,"Unknown",r?.message||"unknown playback error",!0,void 0,r)}}function Fd(r){let e=r.response?.code,t=r.details;if(e&&e>=400){let i=e===404?he.SOURCE_NOT_FOUND:he.NETWORK_HTTP_STATUS;return Ee(i,e===404?"Source":"Network",`${t} (HTTP ${e})`,e>=500,e,r.error)}if(r.type==="keySystemError"||t.startsWith("keySystem"))return t.includes("NoAccess")||t.includes("NoConfiguredLicense")?Ee(he.DRM_UNSUPPORTED,"Drm","no supported DRM key system in this browser",!1,void 0,r.error):t.includes("ServerCertificate")?Ee(he.DRM_PROVISIONING_FAILED,"Drm",t,!0,void 0,r.error):t.includes("LicenseRequestFailed")?Ee(e?he.DRM_LICENSE_HTTP_STATUS:he.DRM_LICENSE_FAILED,"Drm",t,!0,e,r.error):t.includes("SessionUpdateFailed")||t.includes("NoKeys")||t.includes("StatusInternalError")?Ee(he.DRM_LICENSE_FAILED,"Drm",t,!0,void 0,r.error):t.includes("Expired")?Ee(he.DRM_SESSION_EXPIRED,"Drm",t,!0,void 0,r.error):Ee(he.DRM_LICENSE_FAILED,"Drm",t,!0,void 0,r.error);if(r.type==="networkError"){let i=t.includes("Timeout")||t.includes("TIMEOUT");return Ee(i?he.NETWORK_TIMEOUT:he.NETWORK_CONNECTION_FAILED,"Network",t,!0,void 0,r.error)}return r.type==="mediaError"?t.includes("Parsing")||t.includes("PARSING")||t.includes("manifest")?Ee(he.SOURCE_MALFORMED,"Source",t,!1,void 0,r.error):Ee(he.DECODING_FAILED,"Renderer",t,!0,void 0,r.error):t.includes("levelSwitch")||t.includes("liveBackBuffer")?Ee(he.BEHIND_LIVE_WINDOW,"Live",t,!0,void 0,r.error):Ee(he.UNKNOWN,"Unknown",t,!r.fatal,void 0,r.error)}var jg="MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEV4yKAojBJAh5bd1bJWOc75e4psyXk2HXRlis9YZMcG0fYB5RfkQISQ5hlNVHZisVGAAGV9Dg9tYRY8BbnJTzhg==",Nd=new Map;function Ns(r,e,t=jg){let i=`${r??""}|${e}|${t}`,s=Nd.get(i);return s||(s=zg(r,e,t),Nd.set(i,s)),s}async function zg(r,e,t){if(!r)return{licensed:!1,reason:"no license key set"};let i=r.split(".");if(i.length!==3||i[0]!=="OGP1")return{licensed:!1,reason:"malformed license key"};let s=Bd(i[1]),n=Bd(i[2]);if(!s||!n)return{licensed:!1,reason:"malformed payload"};if(!await Xg(s,n,t))return{licensed:!1,reason:"invalid signature"};let a;try{a=JSON.parse(new TextDecoder().decode(s))}catch{return{licensed:!1,reason:"unreadable payload"}}if(!(Array.isArray(a.apps)?a.apps:[]).some(d=>Zg(e,d)))return{licensed:!1,reason:`license not valid for ${e}`};let l=typeof a.exp=="string"?a.exp:"";return Jg(l)?{licensed:!1,reason:`license expired ${l}`}:{licensed:!0,licensee:typeof a.to=="string"?a.to:"unknown",edition:typeof a.ed=="string"?a.ed:"standard",exp:l}}async function Xg(r,e,t){try{let i=$d(t);if(!i)return!1;let s=await crypto.subtle.importKey("spki",ma(i),{name:"ECDSA",namedCurve:"P-256"},!1,["verify"]),n=Qg(e);return n?await crypto.subtle.verify({name:"ECDSA",hash:"SHA-256"},s,ma(n),ma(r)):!1}catch{return!1}}function Qg(r){let e=0;if(r[e++]!==48)return null;let t=r[e++];t&128&&(e+=t&127);let i=()=>{if(r[e++]!==2)return null;let o=r[e++];if(o&128)return null;let l=e;for(e+=o;o>32&&r[l]===0;)l++,o--;if(o>32)return null;let d=new Uint8Array(32);return d.set(r.slice(l,l+o),32-o),d},s=i(),n=i();if(!s||!n)return null;let a=new Uint8Array(64);return a.set(s,0),a.set(n,32),a}function Zg(r,e){return e.endsWith("*")?r.startsWith(e.slice(0,-1)):r===e}function Jg(r){if(!r)return!0;let e=new Date;return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`>r}function Bd(r){let e=r.replaceAll("-","+").replaceAll("_","/");for(;e.length%4!==0;)e+="=";return $d(e)}function $d(r){try{let e=atob(r),t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t}catch{return null}}function ma(r){return r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength)}function Gd(r,e,t,i,s){let n=!1,a=null,o=0,l=[],d=Ud(e.certificateUrl,void 0,"certificate"),c=async u=>{let{initDataType:f,initData:g}=u;if(!(n||!g))try{if(!a){a=await(await navigator.requestMediaKeySystemAccess("com.apple.fps",[{initDataTypes:[f],videoCapabilities:[{contentType:'video/mp4; codecs="avc1.42E01E"'}]}])).createMediaKeys();let v=await d;await a.setServerCertificate(v),await r.setMediaKeys(a)}let m=a.createSession();l.push(m),m.addEventListener("message",p=>{(async()=>{try{let v=o>0;o++;let T={};if(e.tokenProvider)try{T=await e.tokenProvider({licenseUrl:e.licenseUrl,renewal:v})}catch(S){throw{ogError:Ee(he.DRM_TOKEN_FETCH_FAILED,"Drm",`DRM token provider failed: ${S instanceof Error?S.message:"error"}`,!0,void 0,S)}}let E=await Ud(e.licenseUrl,{method:"POST",headers:{"Content-Type":"application/octet-stream",...e.headers,...T},body:p.message},"license");n||(await m.update(E),v?s?.():i?.())}catch(v){h(v)}})()}),await m.generateRequest(f,g)}catch(m){h(m)}},h=u=>{n||(u&&typeof u=="object"&&"ogError"in u?t(u.ogError):t(Ee(he.DRM_LICENSE_FAILED,"Drm",u instanceof Error?u.message:"FairPlay key exchange failed",!0,void 0,u)))};return r.addEventListener("encrypted",c),()=>{n=!0,r.removeEventListener("encrypted",c),l.forEach(u=>void u.close().catch(()=>{}))}}async function Ud(r,e,t){let i;try{i=await fetch(r,e)}catch(s){throw{ogError:Ee(t==="certificate"?he.DRM_PROVISIONING_FAILED:he.DRM_LICENSE_FAILED,"Drm",`FairPlay ${t} request failed: ${s instanceof Error?s.message:"network error"}`,!0,void 0,s)}}if(!i.ok)throw{ogError:Ee(he.DRM_LICENSE_HTTP_STATUS,"Drm",`FairPlay ${t} HTTP ${i.status}`,i.status>=500,i.status)};return i.arrayBuffer()}var em=/(?:(\d+):)?(\d{1,2}):(\d{2})(?:\.(\d{1,3}))?/;function Vd(r){let e=em.exec(r.trim());if(!e)return null;let t=Number(e[1]??0),i=Number(e[2]),s=Number(e[3]),n=e[4]?Number(e[4].padEnd(3,"0")):0;return((t*60+i)*60+s)*1e3+n}function tm(r,e){let t=[],i=r.split(/\r?\n/);for(let s=0;s<i.length;s++){let n=i[s];if(!n.includes("-->"))continue;let[a,o]=n.split("-->"),l=Vd(a??""),d=Vd(o??""),c=(i[s+1]??"").trim();if(l===null||d===null||!c)continue;let[h,u]=c.split("#"),f;try{f=new URL(h,e).toString()}catch{continue}let g=/xywh=(\d+),(\d+),(\d+),(\d+)/.exec(u??"");t.push({startMs:l,endMs:d,frame:g?{url:f,x:Number(g[1]),y:Number(g[2]),width:Number(g[3]),height:Number(g[4])}:{url:f,x:0,y:0,width:0,height:0}})}return t}var Bs=class{constructor(e){this.vttUrl=e}cues=null;loading=null;ensureLoaded(){return this.loading??=fetch(this.vttUrl).then(e=>e.ok?e.text():Promise.reject(new Error(`HTTP ${e.status}`))).then(e=>{this.cues=tm(e,this.vttUrl)}).catch(()=>{this.cues=[]}),this.loading}async frameAt(e){await this.ensureLoaded();let t=this.cues??[],i=t.find(s=>e>=s.startMs&&e<s.endMs)??t[t.length-1];return i&&e>=0?i.frame:null}};var im=12;function sm(r){if(!r)return"";try{let e=new Intl.DisplayNames(["en"],{type:"language"}).of(r);return!e||e===r?r:e.charAt(0).toUpperCase()+e.slice(1)}catch{return r}}var It=class{videoElement;hls=null;item=null;stateValue="IDLE";listeners=new Set;analyticsListeners=new Set;adListeners=new Set;progressTimer=null;snapshotTimer=null;opts;startedOnce=!1;didDispatchPause=!1;seekTargetMs=null;atLiveEdgeValue=!0;wasEnded=!1;licensedValue=!1;licenseListeners=new Set;loadGeneration=0;lastBitrate=-1;sideloadedDefaultId=null;nativeLoadListeners=[];detachDrm=null;sawEncrypted=!1;drmKeysAnnounced=!1;drmLicenseRequests=0;thumbnailTrack=null;lastDroppedTotal=0;breakResume=null;adsProvider=null;adContainer=null;attachedAdsProvider=null;pendingAdConfig=null;completedAdSessions=new Set;currentAdSessionKey=null;lastLoadedItem=null;lastStablePositionMs=0;pendingContentAutoplay=!0;isPlayingAdFlag=!1;adsPendingFlag=!1;adPausedFlag=!1;adProgressValue=null;adCuePointsValue=[];lastAdInfo=null;suppressAdBreakTransition=!1;hlsConfig=null;fallbackToMutedAutoplay=!1;holdPlayback=!1;constructor(e={}){this.opts={progressUpdateIntervalMs:e.progressUpdateIntervalMs??250,seekForwardIncrementMs:e.seekForwardIncrementMs??1e4,seekBackwardIncrementMs:e.seekBackwardIncrementMs??1e4,...e.licenseKey!==void 0?{licenseKey:e.licenseKey}:{}},this.hlsConfig=e.hlsConfig??null,this.fallbackToMutedAutoplay=e.fallbackToMutedAutoplay??!1,this.videoElement=document.createElement("video"),this.videoElement.playsInline=!0,this.videoElement.preload=e.preload??"auto",this.videoElement.crossOrigin="anonymous",this.bindVideoEvents(),Ns(this.opts.licenseKey,location.hostname).then(t=>{this.licensedValue=t.licensed,this.licenseListeners.forEach(i=>i(t.licensed))})}get state(){return this.stateValue}get isPlaying(){return!this.videoElement.paused&&!this.videoElement.ended&&this.stateValue!=="IDLE"}get currentItem(){return this.item}get currentPositionMs(){return Math.max(0,this.videoElement.currentTime*1e3)}get durationMs(){let e=this.videoElement.duration;return Number.isFinite(e)?e*1e3:0}get bufferedPositionMs(){let e=this.videoElement.buffered,t=this.videoElement.currentTime;for(let i=0;i<e.length;i++)if(e.start(i)<=t&&t<=e.end(i))return e.end(i)*1e3;return this.currentPositionMs}get playbackSpeed(){return this.videoElement.playbackRate}set playbackSpeed(e){this.videoElement.playbackRate=e}get volume(){return this.videoElement.volume}set volume(e){this.videoElement.volume=Math.min(1,Math.max(0,e))}get isMuted(){return this.videoElement.muted}set isMuted(e){this.videoElement.muted=e}get isLooping(){return this.videoElement.loop}setLooping(e){this.videoElement.loop=e}setBufferRole(e){let t=e==="STANDBY";this.videoElement.preload=t?"metadata":"auto",this.hls&&(this.hls.config.maxBufferLength=t?10:30,this.hls.config.maxMaxBufferLength=t?10:600,this.hls.config.maxBufferSize=t?8e6:6e7,this.hls.config.backBufferLength=t?0:1/0)}volumeControlMode="PLAYER";get isLicensed(){return this.licensedValue}get seekForwardIncrementMs(){return this.opts.seekForwardIncrementMs}get seekBackwardIncrementMs(){return this.opts.seekBackwardIncrementMs}get isPlayingAd(){return this.isPlayingAdFlag}get adsPending(){return this.adsPendingFlag}get adPaused(){return this.adPausedFlag}get adProgress(){return this.adProgressValue}get adCuePoints(){return this.adCuePointsValue}get currentLoadGeneration(){return this.loadGeneration}subtitleStyle={...ga};subtitleTextScale=1;onLicenseChanged(e){this.licenseListeners.add(e)}addListener(e){this.listeners.add(e)}removeListener(e){this.listeners.delete(e)}addAnalyticsListener(e){this.analyticsListeners.add(e)}removeAnalyticsListener(e){this.analyticsListeners.delete(e)}addAdListener(e){this.adListeners.add(e)}removeAdListener(e){this.adListeners.delete(e)}dispatch(e){this.listeners.forEach(e)}emit(e){this.analyticsListeners.forEach(t=>t(e))}playlistItems=[];playlistPosition=-1;pendingPlaylistAdvanceAfterAds=!1;playlistAdvanceFallback=null;adScheduleSettled=!0;get playlist(){return this.playlistItems.slice()}get currentPlaylistIndex(){return this.playlistPosition}get nextPlaylistItem(){return this.playlistPosition<0?null:this.playlistItems[this.playlistPosition+1]??null}load(e,t={}){this.playlistItems=[],this.playlistPosition=-1,this.loadItemInternal(e,t)}loadPlaylist(e,t={}){let{startIndex:i=0,autoplay:s=!0}=t;if(e.length===0)throw new Error("loadPlaylist requires at least one item");let n=e[i];if(!n)throw new Error("startIndex out of range");this.playlistItems=e.slice(),this.playlistPosition=i,this.dispatch(a=>a.onPlaylistItemChanged?.(i,n)),this.loadItemInternal(n,{autoplay:s})}skipToNext(){let e=this.playlistPosition;e<0||!this.playlistItems[e+1]||(this.dispatch(t=>t.onPlaylistItemSkipped?.(e,e+1)),this.maybeAdvancePlaylist())}releasePendingPlaylistAdvance(){this.pendingPlaylistAdvanceAfterAds&&(this.pendingPlaylistAdvanceAfterAds=!1,this.playlistAdvanceFallback!==null&&(clearTimeout(this.playlistAdvanceFallback),this.playlistAdvanceFallback=null),setTimeout(()=>this.maybeAdvancePlaylist(),0))}maybeAdvancePlaylist(){let e=this.playlistPosition+1,t=this.playlistPosition>=0?this.playlistItems[e]:void 0;t&&(this.playlistPosition=e,this.dispatch(i=>i.onPlaylistItemChanged?.(e,t)),this.loadItemInternal(t,{autoplay:!0}))}loadItemInternal(e,t={}){this.pendingPlaylistAdvanceAfterAds=!1,this.playlistAdvanceFallback!==null&&(clearTimeout(this.playlistAdvanceFallback),this.playlistAdvanceFallback=null),this.adScheduleSettled=!0,this.videoElement.poster=e.posterUrl??"";let{startPositionMs:i=0,autoplay:s=!0}=t;if(this.lastLoadedItem=e,this.lastStablePositionMs=i,this.loadGeneration++,this.teardownSource(),this.item=e,this.startedOnce=!1,this.didDispatchPause=!1,this.wasEnded=!1,this.lastBitrate=-1,this.sawEncrypted=!1,this.drmKeysAnnounced=!1,this.drmLicenseRequests=0,this.lastDroppedTotal=0,this.thumbnailTrack=e.thumbnailTrackUrl?new Bs(e.thumbnailTrackUrl):null,this.resetAdSession(),this.breakResume=null,this.stateValue="IDLE",this.setState("BUFFERING"),this.emit({type:"BufferStart"}),this.attachSource(e,i),this.beginAdsIfNeeded(e,s),s&&!this.adsPendingFlag&&!this.holdPlayback){let n=this.loadGeneration;this.videoElement.play().catch(a=>{this.fallbackToMutedAutoplay&&n===this.loadGeneration&&a instanceof DOMException&&a.name==="NotAllowedError"&&!this.videoElement.muted&&(this.videoElement.muted=!0,this.videoElement.play().then(()=>{this.dispatch(o=>o.onMutedAutoplayFallback?.()),this.emit({type:"MutedAutoplayFallback"})}).catch(()=>{}))})}this.startProgressTimer(),this.startSnapshotTimer()}retry(){let e=this.lastLoadedItem;if(!e)return;let t=(e.streamType??"VOD")==="VOD";this.loadItemInternal(e,{startPositionMs:t?this.lastStablePositionMs:0})}attachSource(e,t){let i=e.url;if((/\.m3u8($|\?)/i.test(i)||i.includes("format=m3u8"))&&xt.isSupported()){let n=e.drm,a={};n?.widevine&&(a["com.widevine.alpha"]={licenseUrl:n.widevine.licenseUrl,...n.widevine.serverCertificateUrl?{serverCertificateUrl:n.widevine.serverCertificateUrl}:{}}),n?.playready&&(a["com.microsoft.playready"]={licenseUrl:n.playready.licenseUrl});let o={...n?.widevine?.headers,...n?.playready?.headers},l=new xt({...this.hlsConfig,renderTextTracksNatively:!0,...Object.keys(a).length>0?{emeEnabled:!0,drmSystems:a,licenseXhrSetup:async d=>{let c=this.drmLicenseRequests>0;this.drmLicenseRequests++;let h={};if(n?.tokenProvider)try{h=await n.tokenProvider({licenseUrl:n.widevine?.licenseUrl??n.playready?.licenseUrl??"",renewal:c})}catch(u){let f=Ee(he.DRM_TOKEN_FETCH_FAILED,"Drm",`DRM token provider failed: ${u instanceof Error?u.message:"error"}`,!0,void 0,u);throw this.dispatch(g=>g.onError?.(f)),this.emit({type:"Error",error:f}),u}for(let[u,f]of Object.entries({...o,...h}))d.setRequestHeader(u,f);c&&this.dispatch(u=>u.onDrmSessionRenewed?.("PROACTIVE"))}}:{}});this.hls=l,this.bindHlsEvents(l),l.loadSource(i),l.attachMedia(this.videoElement)}else{if(e.drm?.fairplay){let a=e.drm.tokenProvider?{...e.drm.fairplay,tokenProvider:e.drm.tokenProvider}:e.drm.fairplay;this.detachDrm=Gd(this.videoElement,a,o=>{this.dispatch(l=>l.onError?.(o)),this.emit({type:"Error",error:o})},()=>{this.drmKeysAnnounced||(this.drmKeysAnnounced=!0,this.emit({type:"DrmKeysLoaded"}))},()=>this.dispatch(o=>o.onDrmSessionRenewed?.("PROACTIVE")))}this.videoElement.src=i;let n=()=>{};this.videoElement.addEventListener("loadedmetadata",n,{once:!0}),this.nativeLoadListeners.push(["loadedmetadata",n])}if(t>0){let n=()=>{this.videoElement.currentTime=t/1e3};this.videoElement.addEventListener("loadedmetadata",n,{once:!0}),this.nativeLoadListeners.push(["loadedmetadata",n])}this.attachSideloadedSubtitles(e)}adSessionKey(e){let t=e.adBreaks?.adTagUri;return t?`${e.url}|${t}`:null}beginAdsIfNeeded(e,t){!e.adBreaks||!this.adsProvider||(this.currentAdSessionKey=this.adSessionKey(e),!(this.currentAdSessionKey&&this.completedAdSessions.has(this.currentAdSessionKey))&&(this.pendingContentAutoplay=t,this.adScheduleSettled=!1,this.adsPendingFlag=t,this.adContainer?this.startAdsSession(e.adBreaks):this.pendingAdConfig=e.adBreaks))}startAdsSession(e){let t=this.adsProvider,i=this.adContainer;!t||!i||(this.attachedAdsProvider!==t&&(t.attach(this.videoElement,i,this.adCallbacks),this.attachedAdsProvider=t),t.requestAds(e,this.pendingContentAutoplay))}resetAdSession(){this.attachedAdsProvider&&this.attachedAdsProvider!==this.adsProvider&&(this.attachedAdsProvider.destroy(),this.attachedAdsProvider=null),this.adsProvider?.destroy(),this.adContainer&&this.adContainer.replaceChildren(),this.pendingAdConfig=null,this.lastAdInfo=null,this.adCuePointsValue=[],this.adProgressValue=null,this.adPausedFlag=!1,this.adsPendingFlag=!1,this.suppressAdBreakTransition=!1,this.isPlayingAdFlag=!1}dispatchAd(e){this.adListeners.forEach(e)}adCallbacks={onContentPauseRequested:()=>{this.adsPendingFlag=!1,this.isPlayingAdFlag=!0,this.suppressAdBreakTransition=this.isPlaying,this.videoElement.pause(),this.adsProvider?.usesContentVideoElement&&(this.breakResume={positionMs:this.stateValue==="ENDED"?0:this.currentPositionMs,wasEnded:this.stateValue==="ENDED"},this.teardownSource())},onContentResumeRequested:()=>{if(this.adsPendingFlag=!1,this.isPlayingAdFlag=!1,this.adPausedFlag=!1,this.adProgressValue=null,this.breakResume&&this.item){let{positionMs:e,wasEnded:t}=this.breakResume;if(this.breakResume=null,this.videoElement.controls=!1,this.teardownSource(),!t)this.attachSource(this.item,e);else return}this.pendingContentAutoplay&&this.stateValue!=="ENDED"&&!this.holdPlayback?this.videoElement.play().catch(()=>{}):this.suppressAdBreakTransition=!1},onAdCuePoints:e=>{this.adCuePointsValue=e},onAllAdsCompleted:()=>{this.currentAdSessionKey&&this.completedAdSessions.add(this.currentAdSessionKey),this.adScheduleSettled=!0,this.releasePendingPlaylistAdvance()},onAdBreakStarted:(e,t)=>{this.playlistAdvanceFallback!==null&&(clearTimeout(this.playlistAdvanceFallback),this.playlistAdvanceFallback=null),this.dispatchAd(i=>i.onAdBreakStarted?.(e,t))},onAdStarted:e=>{this.lastAdInfo=e,this.adPausedFlag=!1,this.adProgressValue={positionMs:0,durationMs:e.durationMs,adIndex:e.positionInPod,adCount:e.podSize},this.dispatchAd(t=>t.onAdStarted?.(e))},onAdProgress:(e,t,i)=>{this.adProgressValue={positionMs:t,durationMs:i,adIndex:e.positionInPod,adCount:e.podSize},this.dispatchAd(s=>s.onAdProgress?.(e,t,i))},onAdPaused:e=>{this.adPausedFlag=!0,this.dispatchAd(t=>t.onAdPaused?.(e))},onAdResumed:e=>{this.adPausedFlag=!1,this.dispatchAd(t=>t.onAdResumed?.(e))},onAdSkipped:e=>{this.adProgressValue=null,this.dispatchAd(t=>t.onAdSkipped?.(e))},onAdCompleted:e=>{this.adProgressValue=null,this.dispatchAd(t=>t.onAdCompleted?.(e))},onAdBreakCompleted:e=>{if(e==="POSTROLL")this.adCuePointsValue=this.adCuePointsValue.filter(t=>t>=0);else{let t=this.videoElement.currentTime,i=this.adCuePointsValue.filter(s=>s>=0).sort((s,n)=>Math.abs(s-t)-Math.abs(n-t))[0];i!==void 0&&(this.adCuePointsValue=this.adCuePointsValue.filter(s=>s!==i))}this.dispatchAd(t=>t.onAdBreakCompleted?.(e))},onAdError:e=>{this.dispatchAd(t=>t.onAdError?.(e)),this.releasePendingPlaylistAdvance()}};play(){if(!this.holdPlayback){if(this.isPlayingAdFlag){this.adsProvider?.resume();return}this.adsProvider?.startPendingBreak()||(this.stateValue==="ENDED"&&(this.videoElement.currentTime=0),this.videoElement.play().catch(()=>{}))}}pause(){if(this.isPlayingAdFlag){this.adsProvider?.pause();return}this.videoElement.pause()}skipAd(){this.adsProvider?.skip()}clickAd(){this.adsProvider?.click()}get adCuePositionsMs(){return this.adCuePointsValue.map(e=>{if(e>=0)return Math.round(e*1e3);let t=this.durationMs;return t>0?Math.round(t):-1}).filter(e=>e>=0)}get hasThumbnails(){return this.thumbnailTrack!==null}getThumbnail(e){return this.thumbnailTrack?.frameAt(e)??Promise.resolve(null)}attachAdContainer(e){if(this.adContainer=e,this.pendingAdConfig){let t=this.pendingAdConfig;this.pendingAdConfig=null,this.startAdsSession(t)}}notifyAdViewResize(e,t,i){this.adsProvider?.resize(e,t,i)}seekTo(e){let t=this.currentPositionMs;this.seekTargetMs=e,this.dispatch(i=>i.onSeekStarted?.(t,e)),this.emit({type:"Seek",fromMs:Math.round(t),toMs:Math.round(e)}),this.videoElement.currentTime=e/1e3}seekForward(){this.seekTo(Math.min(this.durationMs||1/0,this.currentPositionMs+this.opts.seekForwardIncrementMs))}seekBackward(){this.seekTo(Math.max(0,this.currentPositionMs-this.opts.seekBackwardIncrementMs))}seekToLiveEdge(){let e=this.videoElement.seekable;e.length>0&&this.seekTo(e.end(e.length-1)*1e3)}release(){this.resetAdSession(),this.teardownSource(),this.stopProgressTimer(),this.stopSnapshotTimer(),this.listeners.clear(),this.analyticsListeners.clear(),this.adListeners.clear(),this.videoElement.remove()}teardownSource(){this.detachDrm?.(),this.detachDrm=null,this.hls?.destroy(),this.hls=null;for(let[e,t]of this.nativeLoadListeners)this.videoElement.removeEventListener(e,t);this.nativeLoadListeners=[],this.videoElement.controls=!1,this.videoElement.removeAttribute("src"),[...this.videoElement.querySelectorAll("track")].forEach(e=>e.remove()),this.sideloadedDefaultId=null}get audioTracks(){if(this.hls)return this.hls.audioTracks.map((t,i)=>{let s=parseInt(String(t.channels??"2"),10)||2,a=!t.name||/^stream[_-]?\d+$/i.test(t.name)||t.name===t.lang?`${sm(t.lang??"")||`Audio ${i+1}`}${s>2?" (5.1)":""}`:t.name;return{id:`a${i}`,label:a,language:t.lang||"",channelCount:s,isSelected:this.hls.audioTrack===i}});let e=this.videoElement.audioTracks;if(e&&typeof e=="object"&&"length"in e){let t=e,i=[];for(let s=0;s<t.length;s++){let n=t[s];i.push({id:`a${s}`,label:n.label||n.language||`Audio ${s+1}`,language:n.language,channelCount:2,isSelected:n.enabled})}return i}return[]}selectAudioTrack(e){let t=parseInt(e.slice(1),10);if(this.hls){this.hls.audioTrack=t;return}let i=this.videoElement.audioTracks;if(i){let s=i;for(let n=0;n<s.length;n++)s[n].enabled=n===t}}get textTracks(){let e=[],t=this.videoElement.textTracks;for(let i=0;i<t.length;i++){let s=t[i];if(s.kind!=="subtitles"&&s.kind!=="captions")continue;let n=s.id?.startsWith("ext-");e.push({id:n?s.id:`t${i}`,label:s.label||s.language||`Subtitles ${i+1}`,language:s.language||"",isSelected:s.mode==="showing"})}return e}selectTextTrack(e){let t=this.videoElement.textTracks;for(let i=0;i<t.length;i++){let s=t[i];if(s.kind!=="subtitles"&&s.kind!=="captions")continue;let n=s.id?.startsWith("ext-")?s.id:`t${i}`;s.mode=e!==null&&n===e?"showing":"disabled"}if(this.hls&&e!==null&&e.startsWith("t")){let i=parseInt(e.slice(1),10),s=-1,n=-1,a=this.videoElement.textTracks;for(let o=0;o<=i&&o<a.length;o++){let l=a[o].kind;(l==="subtitles"||l==="captions")&&n++,o===i&&(s=n)}s>=0&&s<this.hls.subtitleTracks.length&&(this.hls.subtitleTrack=s)}else this.hls&&e===null&&(this.hls.subtitleTrack=-1)}get videoQualities(){if(!this.hls)return[];let e=this.hls.currentLevel,t=this.hls.autoLevelEnabled,i=this.hls.levels.map((s,n)=>({id:`q${n}`,width:s.width,height:s.height,bitrate:s.bitrate,isSelected:!t&&e===n}));return i.unshift({id:"auto",width:0,height:0,bitrate:0,isSelected:t}),i}selectVideoQuality(e){this.hls&&(this.hls.currentLevel=e==="auto"?-1:parseInt(e.slice(1),10))}get liveInfo(){let e=this.item?.streamType??"VOD";if(e==="VOD"||!this.item)return null;let t=this.videoElement.seekable;if(t.length===0)return null;let i=t.start(0),s=t.end(t.length-1),n=this.videoElement.currentTime,a=Math.max(0,s-n),o=Math.max(0,(s-i)*1e3),l=null,d=this.videoElement.getStartDate?.();return d&&!Number.isNaN(d.getTime())?l=d.getTime()+n*1e3:this.hls?.playingDate&&(l=this.hls.playingDate.getTime()),{streamType:e,dvrWindowMs:o,atLiveEdge:a<=im,latencyMs:Math.round(a*1e3),playheadWallClockMs:l}}setState(e){this.stateValue!==e&&(this.stateValue=e,this.dispatch(t=>t.onStateChanged?.(e)))}bindVideoEvents(){let e=this.videoElement,t=()=>this.breakResume!==null;e.addEventListener("waiting",()=>{t()||this.stateValue!=="IDLE"&&(this.setState("BUFFERING"),this.emit({type:"BufferStart"}))}),e.addEventListener("canplay",()=>{t()||(this.stateValue==="BUFFERING"&&(this.setState("READY"),this.emit({type:"BufferEnd"})),this.sawEncrypted&&!this.drmKeysAnnounced&&(this.drmKeysAnnounced=!0,this.emit({type:"DrmKeysLoaded"})))}),e.addEventListener("encrypted",()=>{this.sawEncrypted=!0}),e.addEventListener("playing",()=>{if(!t()){if(this.holdPlayback){e.pause();return}if(this.isPlayingAdFlag&&(this.hls!==null&&e.currentSrc.startsWith("blob:")||this.item!==null&&e.currentSrc===this.item.url)){e.pause();return}if(this.stateValue==="BUFFERING"&&(this.setState("READY"),this.emit({type:"BufferEnd"})),this.suppressAdBreakTransition){this.suppressAdBreakTransition=!1,this.didDispatchPause=!1;return}this.dispatch(i=>i.onIsPlayingChanged?.(!0)),this.startedOnce?this.didDispatchPause&&this.dispatch(i=>i.onResume?.()):(this.startedOnce=!0,this.dispatch(i=>i.onPlay?.())),this.didDispatchPause=!1,this.emit({type:"Play"})}}),e.addEventListener("pause",()=>{t()||e.ended||this.stateValue==="IDLE"||this.suppressAdBreakTransition||this.isPlayingAdFlag||(this.didDispatchPause=!0,this.dispatch(i=>i.onIsPlayingChanged?.(!1)),this.dispatch(i=>i.onPause?.()),this.emit({type:"Pause"}))}),e.addEventListener("seeked",()=>{if(t())return;let i=this.currentPositionMs;this.seekTargetMs=null,this.dispatch(s=>s.onSeekCompleted?.(i))}),e.addEventListener("ended",()=>{t()||this.wasEnded||(this.wasEnded=!0,this.setState("ENDED"),this.dispatch(i=>i.onPlaybackCompleted?.()),this.emit({type:"Complete"}),this.adsProvider?.contentDidComplete(),!this.isPlayingAdFlag&&this.adScheduleSettled?this.maybeAdvancePlaylist():(this.pendingPlaylistAdvanceAfterAds=!0,this.playlistAdvanceFallback!==null&&(clearTimeout(this.playlistAdvanceFallback),this.playlistAdvanceFallback=null),this.isPlayingAdFlag||(this.playlistAdvanceFallback=setTimeout(()=>{this.playlistAdvanceFallback=null,this.pendingPlaylistAdvanceAfterAds&&(this.pendingPlaylistAdvanceAfterAds=!1,this.maybeAdvancePlaylist())},8e3))))}),e.addEventListener("error",()=>{if(t()||this.hls)return;let i=Od(e.error);this.dispatch(s=>s.onError?.(i)),this.emit({type:"Error",error:i})})}bindHlsEvents(e){e.on(xt.Events.LEVEL_SWITCHED,(t,i)=>{let s=e.levels[i.level];!s||s.bitrate===this.lastBitrate||(this.lastBitrate=s.bitrate,this.emit({type:"BitrateChanged",bitrate:s.bitrate,width:s.width,height:s.height,frameRate:s.frameRate||0}))}),e.on(xt.Events.ERROR,(t,i)=>{let s=Fd(i);i.fatal?(this.dispatch(n=>n.onError?.(s)),this.emit({type:"Error",error:s})):this.emit({type:"Error",error:s})})}attachSideloadedSubtitles(e){if((e.sideloadedSubtitles??[]).forEach((i,s)=>{let n=document.createElement("track");n.kind="subtitles",n.label=i.label,n.srclang=i.language,n.src=i.url,n.id=`ext-${s}`,this.videoElement.appendChild(n),i.isDefault&&(this.sideloadedDefaultId=`ext-${s}`),n.addEventListener("load",()=>{let a=n.track;a&&(a.mode=i.isDefault?"showing":"disabled")})}),this.sideloadedDefaultId){let i=this.sideloadedDefaultId,s=()=>this.selectTextTrack(i);this.videoElement.addEventListener("loadedmetadata",s,{once:!0}),this.nativeLoadListeners.push(["loadedmetadata",s])}}startProgressTimer(){this.stopProgressTimer(),this.progressTimer=window.setInterval(()=>{if(this.stateValue==="IDLE")return;this.stateValue==="READY"&&(this.lastStablePositionMs=Math.round(this.currentPositionMs)),this.dispatch(t=>t.onProgress?.(Math.round(this.currentPositionMs),Math.round(this.bufferedPositionMs),Math.round(this.durationMs)));let e=this.liveInfo;e&&e.atLiveEdge!==this.atLiveEdgeValue&&(this.atLiveEdgeValue=e.atLiveEdge,this.dispatch(t=>t.onLiveEdgeChanged?.(e.atLiveEdge)))},this.opts.progressUpdateIntervalMs)}stopProgressTimer(){this.progressTimer!==null&&(clearInterval(this.progressTimer),this.progressTimer=null)}startSnapshotTimer(){this.stopSnapshotTimer(),this.snapshotTimer=window.setInterval(()=>{if(this.stateValue==="IDLE"||!this.isPlaying)return;let e=this.videoElement.getVideoPlaybackQuality?.(),t=e?.droppedVideoFrames??0;t>this.lastDroppedTotal&&this.emit({type:"DroppedFrames",count:t-this.lastDroppedTotal,elapsedMs:1e4}),this.lastDroppedTotal=t,this.emit({type:"QualitySnapshot",positionMs:Math.round(this.currentPositionMs),bufferedMs:Math.round(this.bufferedPositionMs),bandwidthEstimateBps:Math.round(this.hls?.bandwidthEstimate??0),droppedFramesTotal:e?.droppedVideoFrames??0})},1e4)}stopSnapshotTimer(){this.snapshotTimer!==null&&(clearInterval(this.snapshotTimer),this.snapshotTimer=null)}};function jt(r){let e=r;return typeof e.serverUrl=="string"&&typeof e.networkId=="number"&&typeof e.profile=="string"&&typeof e.videoAssetId=="string"}function $s(r){let e=()=>String(Math.floor(Math.random()*1e9)),t=new URLSearchParams({nw:String(r.networkId),prof:r.profile,csid:r.siteSectionId,caid:r.videoAssetId,vdur:String(Math.round(r.videoDurationMs/1e3)),resp:"vmap1 vast4",pvrn:e(),vprn:e(),...r.globalParameters});return`${r.serverUrl.replace(/\/$/,"")}/ad/g/1?${t.toString()}`}var Hd=null;async function Kd(r){let e=async i=>{try{return await fetch(i,{mode:"no-cors",cache:"no-store"}),!0}catch{return!1}},t=[e("https://imasdk.googleapis.com/js/sdkloader/ima3.js"),e("https://pubads.g.doubleclick.net/gampad/ads?ad_type=probe")];if(r)try{let i=new URL(r).origin;i!=="https://pubads.g.doubleclick.net"&&t.push(e(i+"/"))}catch{}return(await Promise.all(t)).some(i=>!i)}function nm(){return window.google?.ima?Promise.resolve(window.google.ima):(Hd??=new Promise((r,e)=>{let t=document.createElement("script");t.src="https://imasdk.googleapis.com/js/sdkloader/ima3.js",t.async=!0,t.onload=()=>{let i=window.google?.ima;i?r(i):e(new Error("IMA SDK loaded but google.ima missing"))},t.onerror=()=>e(new Error("failed to load the IMA SDK (blocked by an ad blocker?)")),document.head.appendChild(t)}),Hd)}var Us=class{constructor(e={}){this.options=e}video=null;container=null;callbacks=null;ima=null;adDisplayContainer=null;adsLoader=null;adsManager=null;lastAd=null;lastBreakType=null;tagUrl=null;autostart=!0;started=!1;destroyed=!1;requestGeneration=0;verdictTimer=null;gotVerdict=!1;attach(e,t,i){this.video=e,this.container=t,this.callbacks=i}requestAds(e,t){this.autostart=t;let i=jt(e)?$s(e):e.adTagUri;if(typeof i!="string"||!i){this.callbacks?.onAdError({code:900,phase:"LOAD",message:"ImaAdsProvider needs an AdTagConfig with adTagUri"}),this.callbacks?.onContentResumeRequested();return}this.tagUrl=i;let s=++this.requestGeneration;this.gotVerdict=!1,this.verdictTimer!==null&&clearTimeout(this.verdictTimer),this.verdictTimer=window.setTimeout(()=>{this.destroyed||this.gotVerdict||s!==this.requestGeneration||Kd(this.tagUrl??void 0).then(n=>{this.destroyed||this.gotVerdict||(this.gotVerdict=!0,this.callbacks?.onAdError(n?{code:902,phase:"LOAD",message:"ads blocked by the browser (ad blocker detected)"}:{code:901,phase:"LOAD",message:"ad request produced no response in time"}),this.callbacks?.onContentResumeRequested())})},6e3),nm().then(n=>{this.destroyed||s!==this.requestGeneration||(this.ima=n,this.startSession(n,i))}).catch(n=>{this.settleVerdict(),this.callbacks?.onAdError({code:902,phase:"LOAD",message:n.message}),this.callbacks?.onContentResumeRequested()})}settleVerdict(){this.gotVerdict=!0,this.verdictTimer!==null&&(clearTimeout(this.verdictTimer),this.verdictTimer=null)}startSession(e,t){let i=this.video,s=this.container,n=this.options.vpaidMode??"enabled";e.settings.setVpaidMode(n==="insecure"?e.ImaSdkSettings.VpaidMode.INSECURE:n==="disabled"?e.ImaSdkSettings.VpaidMode.DISABLED:e.ImaSdkSettings.VpaidMode.ENABLED),this.adDisplayContainer??=new e.AdDisplayContainer(s,i),this.adDisplayContainer.initialize(),this.adsLoader?.destroy();let a=new e.AdsLoader(this.adDisplayContainer);this.adsLoader=a,a.addEventListener(e.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,d=>{this.settleVerdict();let c=new e.AdsRenderingSettings;c.uiElements=[],c.restoreCustomPlaybackStateOnAdBreakComplete=!0;let h=d.getAdsManager(i,c);this.adsManager=h,this.bindManager(e,h),this.callbacks?.onAdCuePoints(h.getCuePoints());let u=s.getBoundingClientRect();h.init(u.width,u.height,e.ViewMode.NORMAL),this.autostart&&(this.started=!0,h.start())}),a.addEventListener(e.AdErrorEvent.Type.AD_ERROR,d=>{this.settleVerdict();let c=d.getError();this.callbacks?.onAdError({code:c.getErrorCode(),phase:"LOAD",message:c.getMessage()}),this.callbacks?.onContentResumeRequested(),this.maybeFlagAdBlock()});let o=new e.AdsRequest;o.adTagUrl=t,o.setAdWillAutoPlay(this.autostart),o.setAdWillPlayMuted(i.muted);let l=s.getBoundingClientRect();o.linearAdSlotWidth=Math.round(l.width)||640,o.linearAdSlotHeight=Math.round(l.height)||360,o.nonLinearAdSlotWidth=Math.round(l.width)||640,o.nonLinearAdSlotHeight=150,a.requestAds(o)}bindManager(e,t){let i=e.AdEvent.Type,s=()=>this.callbacks,n=()=>{if(!this.lastBreakType)return;let a=this.lastBreakType;this.lastBreakType=null,s()?.onAdBreakCompleted(a)};t.addEventListener(i.CONTENT_PAUSE_REQUESTED,()=>s()?.onContentPauseRequested()),t.addEventListener(i.CONTENT_RESUME_REQUESTED,()=>{n(),s()?.onContentResumeRequested()}),t.addEventListener(i.STARTED,a=>{let o=a.getAd();if(!o)return;let l=o.getAdPodInfo(),d=l.getPodIndex()===0?"PREROLL":l.getPodIndex()===-1?"POSTROLL":"MIDROLL",c=o.getSkipTimeOffset()>=0,h={adId:o.getAdId(),positionInPod:l.getAdPosition(),podSize:l.getTotalAds(),breakType:d,isSkippable:c,skipOffsetMs:c?Math.round(o.getSkipTimeOffset()*1e3):-1,durationMs:Math.round(o.getDuration()*1e3),providerRendersUi:!0};this.lastAd=h,this.lastBreakType=d,h.positionInPod===1&&s()?.onAdBreakStarted(d,h.podSize),s()?.onAdStarted(h)}),t.addEventListener(i.AD_PROGRESS,a=>{let o=a.getAdData();this.lastAd&&o?.duration&&s()?.onAdProgress(this.lastAd,Math.round((o.currentTime??0)*1e3),Math.round(o.duration*1e3))}),t.addEventListener(i.PAUSED,()=>{this.lastAd&&s()?.onAdPaused(this.lastAd)}),t.addEventListener(i.RESUMED,()=>{this.lastAd&&s()?.onAdResumed(this.lastAd)}),t.addEventListener(i.SKIPPED,()=>{this.lastAd&&s()?.onAdSkipped(this.lastAd)}),t.addEventListener(i.COMPLETE,()=>{this.lastAd&&s()?.onAdCompleted(this.lastAd)}),i.AD_BREAK_ENDED&&t.addEventListener(i.AD_BREAK_ENDED,n),t.addEventListener(i.ALL_ADS_COMPLETED,()=>{n(),this.lastAd=null,s()?.onAllAdsCompleted?.()}),t.addEventListener(e.AdErrorEvent.Type.AD_ERROR,a=>{let o=a.getError();s()?.onAdError({code:o.getErrorCode(),phase:"PLAY",message:o.getMessage()}),s()?.onContentResumeRequested(),this.maybeFlagAdBlock()})}adBlockFlagged=!1;maybeFlagAdBlock(){this.adBlockFlagged||Kd(this.tagUrl??void 0).then(e=>{e&&!this.adBlockFlagged&&!this.destroyed&&(this.adBlockFlagged=!0,this.callbacks?.onAdError({code:902,phase:"LOAD",message:"ads blocked by the browser (ad blocker detected)"}))})}startPendingBreak(){return!this.adsManager||this.started?!1:(this.started=!0,this.adsManager.start(),!0)}contentDidComplete(){this.adsLoader?.contentComplete()}pause(){this.adsManager?.pause()}resume(){this.adsManager?.resume()}skip(){this.adsManager?.skip()}click(){}resize(e,t,i){this.ima&&this.adsManager&&this.adsManager.resize(e,t,i?this.ima.ViewMode.FULLSCREEN:this.ima.ViewMode.NORMAL)}destroy(){this.requestGeneration++,this.verdictTimer!==null&&(clearTimeout(this.verdictTimer),this.verdictTimer=null),this.adsManager?.destroy(),this.adsManager=null,this.adsLoader?.destroy(),this.adsLoader=null,this.adDisplayContainer?.destroy(),this.adDisplayContainer=null,this.lastAd=null,this.lastBreakType=null,this.autostart=!0,this.started=!1}};var rm="https://mssl.fwmrm.net/libs/adm/7.5.0/AdManager.js",pa=null;function am(r){return window.tv?.freewheel?.SDK?Promise.resolve(window.tv.freewheel.SDK):(pa??=new Promise((e,t)=>{let i=document.createElement("script");i.src=r,i.async=!0,i.onload=()=>{let s=window.tv?.freewheel?.SDK;s?e(s):t(new Error("AdManager.js loaded but tv.freewheel.SDK missing"))},i.onerror=()=>{pa=null,t(new Error("failed to load FreeWheel AdManager.js (blocked by an ad blocker?)"))},document.head.appendChild(i)}),pa)}var Gs=class{constructor(e={}){this.options=e}usesContentVideoElement=!0;video=null;container=null;callbacks=null;sdk=null;context=null;cfg=null;generation=0;destroyed=!1;prerollSlots=[];midrollSlots=[];postrollSlots=[];catchUpQueue=[];flow="PREROLLS";contentGateOpened=!1;pendingStart=!1;currentSlot=null;currentBreakType=null;currentAd=null;currentInstance=null;adIndexInSlot=0;totalAdsInSlot=0;requestTimer=null;watchdogTimer=null;progressTimer=null;lastContentPosMs=0;videoListeners=[];attach(e,t,i){this.video=e,this.container=t,this.callbacks=i}requestAds(e,t){if(!jt(e)){this.callbacks?.onAdError({code:900,phase:"LOAD",message:"FreewheelAdsProvider needs a FreewheelConfig"}),this.callbacks?.onContentResumeRequested();return}this.cfg=e,this.pendingStart=!t;let i=++this.generation,s=e.requestTimeoutMs??5e3;this.requestTimer=window.setTimeout(()=>{this.destroyed||i!==this.generation||this.fail({code:901,phase:"LOAD",message:"FreeWheel request produced no response in time"})},s+2e3),am(this.options.adManagerUrl??rm).then(n=>{this.destroyed||i!==this.generation||(this.sdk=n,this.submitRequest(n,e))}).catch(n=>{this.destroyed||i!==this.generation||this.fail({code:902,phase:"LOAD",message:n.message})})}submitRequest(e,t){let i=this.video,s=this.container;if(!i||!s)return;if(!i.parentNode){this.fail({code:900,phase:"LOAD",message:"FreewheelAdsProvider needs the video element mounted in the DOM"});return}let n=new e.AdManager;n.setNetwork(t.networkId),n.setServer(t.serverUrl.replace(/\/$/,"")+"/ad/g/1");let a=n.newContext();this.context=a,a.setProfile(t.profile),a.setSiteSection(t.siteSectionId,t.networkId),a.setVideoAsset(t.videoAssetId,t.videoDurationMs/1e3,t.networkId),a.setContentVideoElement?.(i);for(let[l,d]of Object.entries(t.globalParameters??{}))a.addKeyValue(l,d),(l.startsWith("_fw_")||l.includes("."))&&a.setParameter(l,d,e.PARAMETER_LEVEL_GLOBAL);let o=()=>String(Math.floor(Math.random()*1e9));a.addKeyValue("pvrn",o()),a.addKeyValue("vprn",o()),a.setParameter("renderer.video.timeoutMillisecondsBeforeStart",String(t.adStartTimeoutMs??1e4),e.PARAMETER_LEVEL_GLOBAL),a.addEventListener(e.EVENT_REQUEST_COMPLETE,l=>this.onRequestComplete(l)),a.addEventListener(e.EVENT_SLOT_ENDED,l=>this.onSlotEnded(l)),a.addEventListener(e.EVENT_AD_IMPRESSION,l=>this.onAdImpression(l)),e.EVENT_AD_PAUSE&&a.addEventListener(e.EVENT_AD_PAUSE,()=>{this.currentAd&&this.callbacks?.onAdPaused(this.currentAd)}),e.EVENT_AD_RESUME&&a.addEventListener(e.EVENT_AD_RESUME,()=>{this.currentAd&&this.callbacks?.onAdResumed(this.currentAd)}),e.EVENT_ERROR&&a.addEventListener(e.EVENT_ERROR,l=>{this.callbacks?.onAdError({code:301,phase:"PLAY",message:`FreeWheel error: ${JSON.stringify(l.errorInfo??l.type??"unknown")}`})}),this.bindContentWatchers(i),a.submitRequest()}onRequestComplete(e){if(this.requestTimer!==null&&(clearTimeout(this.requestTimer),this.requestTimer=null),this.destroyed)return;if(e.success===!1){this.fail({code:300,phase:"LOAD",message:"FreeWheel request failed"});return}let t=this.sdk,i=this.context;if(!t||!i)return;let s=o=>(o.getAdInstances?.()?.length??1)>0,n=i.getTemporalSlots().filter(s),a=o=>n.filter(l=>o!==void 0&&l.getTimePositionClass()===o);this.prerollSlots=a(t.TIME_POSITION_CLASS_PREROLL),this.postrollSlots=a(t.TIME_POSITION_CLASS_POSTROLL),this.midrollSlots=[...a(t.TIME_POSITION_CLASS_MIDROLL),...a(t.TIME_POSITION_CLASS_OVERLAY)].sort((o,l)=>o.getTimePosition()-l.getTimePosition()),this.publishCuePoints(),!this.pendingStart&&this.playNextPreroll()}publishCuePoints(){let e=this.midrollSlots.map(t=>t.getTimePosition());(this.prerollSlots.length||this.currentBreakType==="PREROLL")&&e.unshift(0),this.postrollSlots.length&&e.push(-1),this.callbacks?.onAdCuePoints(e)}playNextPreroll(){let e=this.prerollSlots.shift();if(!e){this.flow="CONTENT",this.openContentGateOnce();return}this.flow="PREROLLS",this.playSlot(e,"PREROLL")}openContentGateOnce(){this.contentGateOpened||(this.contentGateOpened=!0,this.callbacks?.onContentResumeRequested())}playSlot(e,t){this.currentSlot=e,this.currentBreakType=t,this.adIndexInSlot=0,this.totalAdsInSlot=e.getAdInstances?.()?.length??0,this.armWatchdog(e),this.callbacks?.onContentPauseRequested(),this.callbacks?.onAdBreakStarted(t,this.totalAdsInSlot),e.play()}onSlotEnded(e){let t=this.currentSlot;if(!t||e.slot&&e.slot.getCustomId()!==t.getCustomId())return;this.cancelWatchdog(),this.stopProgressTicker(),this.currentAd&&this.callbacks?.onAdCompleted(this.currentAd),this.currentAd=null,this.currentInstance=null,this.currentSlot=null;let i=this.currentBreakType;switch(this.currentBreakType=null,this.video&&(this.video.controls=!1),i&&this.callbacks?.onAdBreakCompleted(i),this.flow){case"PREROLLS":this.playNextPreroll();break;case"MIDROLL":this.flow="CONTENT",this.callbacks?.onContentResumeRequested();break;case"CATCH_UP":{let s=this.catchUpQueue.shift();s?this.playSlot(s,"MIDROLL"):(this.flow="CONTENT",this.callbacks?.onContentResumeRequested());break}case"POSTROLLS":this.playNextPostroll();break;default:break}}onAdImpression(e){let t=this.currentSlot,i=this.currentBreakType;if(!t||!i)return;this.cancelWatchdog(),this.currentAd&&this.callbacks?.onAdCompleted(this.currentAd),this.adIndexInSlot++;let s=e.adInstance??t.getAdInstances?.()?.[this.adIndexInSlot-1]??null,n=l=>l!==void 0&&l>=1&&l<=600?l*1e3:null,a=n(s?.getActiveCreativeRendition?.()?.getDuration?.())??n(s?.getDuration?.())??this.cfg?.fallbackAdDurationMs??15e3,o={adId:String(s?.getAdId?.()??`fw-${this.adIndexInSlot}`),positionInPod:this.adIndexInSlot,podSize:Math.max(this.totalAdsInSlot,this.adIndexInSlot),breakType:i,isSkippable:!1,skipOffsetMs:-1,durationMs:a,providerRendersUi:!0};this.currentAd=o,this.currentInstance=s,this.callbacks?.onAdStarted(o),this.startProgressTicker(o,t,a)}bindContentWatchers(e){this.unbindContentWatchers();let t=(s,n)=>{e.addEventListener(s,n),this.videoListeners.push([s,n])},i=0;t("timeupdate",()=>{let s=e.currentTime*1e3;if(e.seeking||(this.lastContentPosMs=s),this.flow!=="CONTENT"||this.currentSlot)return;let n=this.cfg?.midrollToleranceMs??1e3,a=this.midrollSlots.find(o=>Math.abs(o.getTimePosition()*1e3-s)<=n);a&&(this.midrollSlots=this.midrollSlots.filter(o=>o!==a),this.publishCuePoints(),this.flow="MIDROLL",this.playSlot(a,"MIDROLL"))}),t("seeking",()=>{i=this.lastContentPosMs}),t("seeked",()=>{if(this.flow!=="CONTENT"||this.currentSlot)return;let s=e.currentTime*1e3;if(Math.abs(s-i)<(this.cfg?.seekThresholdMs??2e3))return;let n=Math.min(i,s),a=Math.max(i,s),o=this.midrollSlots.filter(c=>{let h=c.getTimePosition()*1e3;return h>n&&h<=a});if(!o.length)return;this.midrollSlots=this.midrollSlots.filter(c=>!o.includes(c)),this.publishCuePoints();let l=this.cfg?.seekCatchUpPolicy??"MOST_RECENT";if(l==="NONE")return;let d=[...o].sort((c,h)=>h.getTimePosition()-c.getTimePosition());this.catchUpQueue=l==="MOST_RECENT"?[d[0]]:d,this.flow="CATCH_UP",this.playSlot(this.catchUpQueue.shift(),"MIDROLL")}),t("play",()=>{!this.currentSlot&&this.sdk?.VIDEO_STATE_PLAYING!==void 0&&this.context?.setVideoState?.(this.sdk.VIDEO_STATE_PLAYING)}),t("pause",()=>{!this.currentSlot&&this.sdk?.VIDEO_STATE_PAUSED!==void 0&&this.context?.setVideoState?.(this.sdk.VIDEO_STATE_PAUSED)})}unbindContentWatchers(){let e=this.video;e&&this.videoListeners.forEach(([t,i])=>e.removeEventListener(t,i)),this.videoListeners=[]}contentDidComplete(){this.destroyed||this.flow==="DONE"||(this.sdk?.VIDEO_STATE_COMPLETED!==void 0&&this.context?.setVideoState?.(this.sdk.VIDEO_STATE_COMPLETED),this.flow="POSTROLLS",this.playNextPostroll())}playNextPostroll(){let e=this.postrollSlots.shift();if(!e){this.flow="DONE",this.callbacks?.onAllAdsCompleted?.(),this.callbacks?.onContentResumeRequested();return}this.playSlot(e,"POSTROLL")}armWatchdog(e){this.cancelWatchdog();let t=(this.cfg?.adStartTimeoutMs??1e4)+2e3;this.watchdogTimer=window.setTimeout(()=>{this.destroyed||this.currentSlot!==e||this.currentAd||this.abandonSlot(e,`no ad rendered within ${t}ms`)},t)}cancelWatchdog(){this.watchdogTimer!==null&&(clearTimeout(this.watchdogTimer),this.watchdogTimer=null)}abandonSlot(e,t){this.callbacks?.onAdError({code:301,phase:"PLAY",message:`slot abandoned: ${t}`});try{e.stop?.()}catch{}window.setTimeout(()=>{this.currentSlot===e&&this.onSlotEnded({slot:e})},500)}startProgressTicker(e,t,i){this.stopProgressTicker();let s=performance.now();this.progressTimer=window.setInterval(()=>{if(this.destroyed||this.currentAd!==e){this.stopProgressTicker();return}let n=t.getPlayheadTime?.(),a=n!==void 0&&n>=0?n*1e3:performance.now()-s;this.callbacks?.onAdProgress(e,Math.min(a,i),i)},300)}stopProgressTicker(){this.progressTimer!==null&&(clearInterval(this.progressTimer),this.progressTimer=null)}startPendingBreak(){return!this.pendingStart||(this.pendingStart=!1,!this.prerollSlots.length)?!1:(this.playNextPreroll(),!0)}pause(){this.currentSlot?.pause?.()}resume(){this.currentSlot?.resume?.()}skip(){this.currentInstance?.getRendererController?.()?.skipCurrentAd?.()}click(){}resize(){}fail(e){this.callbacks?.onAdError(e),this.flow="CONTENT",this.openContentGateOnce()}destroy(){this.generation++,this.requestTimer!==null&&(clearTimeout(this.requestTimer),this.requestTimer=null),this.cancelWatchdog(),this.stopProgressTicker(),this.unbindContentWatchers();try{this.currentSlot?.stop?.()}catch{}try{this.context?.dispose?.()}catch{}this.context=null,this.video&&(this.video.controls=!1),this.cfg=null,this.prerollSlots=[],this.midrollSlots=[],this.postrollSlots=[],this.catchUpQueue=[],this.currentSlot=null,this.currentBreakType=null,this.currentAd=null,this.currentInstance=null,this.flow="PREROLLS",this.contentGateOpened=!1,this.pendingStart=!1}};var Li={foreground:"#FFFFFF",foregroundMuted:"rgba(255,255,255,0.70)",foregroundFaint:"rgba(255,255,255,0.38)",trackPlayed:"#FFFFFF",trackBuffered:"rgba(255,255,255,0.38)",trackRemaining:"rgba(255,255,255,0.22)",thumb:"#FFFFFF",thumbHalo:"rgba(255,255,255,0.20)",pressed:"rgba(255,255,255,0.12)",liveEdge:"#F2453E",liveBehind:"rgba(255,255,255,0.60)",adAccent:"#F6C445",menuSurface:"rgba(23,24,26,0.94)",menuSelected:"rgba(255,255,255,0.10)",menuBorder:"rgba(255,255,255,0.10)",chipSurface:"rgba(0,0,0,0.55)"},zt={trackHeight:3,trackHeightActive:5,thumbSize:12,thumbSizeActive:18,thumbHaloSize:34,scrubTouchHeight:48,iconSize:24,playButtonSize:56,playGlyphSize:28,seekButtonSize:48,seekGlyphSize:24,clusterGap:20,bottomBarHeight:48,edgeInset:12,bottomScrimHeight:140,topScrimHeight:96,menuMinWidth:224,menuMaxWidth:320,menuItemHeight:48,menuCorner:14,chipHeight:24,adCueMarkerSize:6},Ri={...zt,bottomBarHeight:56,edgeInset:24};var om={play:{fills:["M8.5 6.5 18 12 8.5 17.5Z"]},pause:{fills:["M8.3 5.5 L9.3 5.5 A1.3 1.3 0 0 1 10.6 6.8 L10.6 17.2 A1.3 1.3 0 0 1 9.3 18.5 L8.3 18.5 A1.3 1.3 0 0 1 7 17.2 L7 6.8 A1.3 1.3 0 0 1 8.3 5.5 Z","M14.7 5.5 L15.7 5.5 A1.3 1.3 0 0 1 17 6.8 L17 17.2 A1.3 1.3 0 0 1 15.7 18.5 L14.7 18.5 A1.3 1.3 0 0 1 13.4 17.2 L13.4 6.8 A1.3 1.3 0 0 1 14.7 5.5 Z"]},replay:{strokes:["M20 12a8 8 0 1 1-2.34-5.66","M13.6 6.6 17.66 6.34 17.9 2.3"]},seekBack:{strokes:["M16.36 6.37A7.6 7.6 0 1 1 7.64 6.37","M11.7 6.1 7.64 6.37 7.9 2.3"]},seekForward:{strokes:["M7.64 6.37A7.6 7.6 0 1 0 16.36 6.37","M12.3 6.1 16.36 6.37 16.1 2.3"]},volumeOn:{fills:["M4 9h3.2l4.4-3.6a1 1 0 0 1 1.6.8v11.6a1 1 0 0 1-1.6.8L7.2 15H4a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1z"],strokes:["M16.6 9.4a3.6 3.6 0 0 1 0 5.2","M19.2 7a7.2 7.2 0 0 1 0 10"]},volumeMute:{fills:["M4 9h3.2l4.4-3.6a1 1 0 0 1 1.6.8v11.6a1 1 0 0 1-1.6.8L7.2 15H4a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1z"],strokes:["m16.6 9.6 5 4.8","m21.6 9.6-5 4.8"]},speed:{strokes:["M4.2 17.5a9 9 0 0 1 15.6 0","M12 13.2 16.4 9.3"]},quality:{strokes:["M3 7.5h5","M12.2 7.5H21","M8.0 7.5 a2.1 2.1 0 1 0 4.2 0 a2.1 2.1 0 1 0 -4.2 0 Z","M3 16.5h8.8","M16 16.5H21","M11.8 16.5 a2.1 2.1 0 1 0 4.2 0 a2.1 2.1 0 1 0 -4.2 0 Z"]},audioTrack:{strokes:["M9 17.5V7l10-2v10.5","M9 17.5a2.4 2.4 0 1 1-4.8 0a2.4 2.4 0 1 1 4.8 0z","M19 15.5a2.4 2.4 0 1 1-4.8 0a2.4 2.4 0 1 1 4.8 0z"]},subtitles:{strokes:["M5.5 5 L18.5 5 A2.5 2.5 0 0 1 21 7.5 L21 16.5 A2.5 2.5 0 0 1 18.5 19 L5.5 19 A2.5 2.5 0 0 1 3 16.5 L3 7.5 A2.5 2.5 0 0 1 5.5 5 Z","M7.5 10.5h9","M7.5 14.5h5"]},fullscreenEnter:{strokes:["M9 4H4v5","M15 4h5v5","M15 20h5v-5","M9 20H4v-5"]},fullscreenExit:{strokes:["M3.5 8.5h5v-5","M20.5 8.5h-5v-5","M20.5 15.5h-5v5","M3.5 15.5h5v5"]},check:{strokes:["M5 12.6 9.8 17.4 19 7.2"]}};function Ot(r,e,t,i=1.8){let s=om[r];if(!s)return"";let n=(s.strokes??[]).map(o=>`<path d="${o}" fill="none" stroke="${t}" stroke-width="${i}" stroke-linecap="round" stroke-linejoin="round"/>`).join(""),a=(s.fills??[]).map(o=>`<path d="${o}" fill="${t}"/>`).join("");return`<svg width="${e}" height="${e}" viewBox="0 0 24 24" aria-hidden="true">${a}${n}</svg>`}function Vs(r,e,t){return`<svg width="${r}" height="${r}" viewBox="0 0 32 32" aria-hidden="true">
|
|
42
|
+
`)),i}getTextAndFormat(){return this.rows}},Br=class{constructor(e,t,i){this.chNr=void 0,this.outputFilter=void 0,this.mode=void 0,this.verbose=void 0,this.displayedMemory=void 0,this.nonDisplayedMemory=void 0,this.lastOutputScreen=void 0,this.currRollUpRow=void 0,this.writeScreen=void 0,this.cueStartTime=void 0,this.logger=void 0,this.chNr=e,this.outputFilter=t,this.mode=null,this.verbose=0,this.displayedMemory=new oi(i),this.nonDisplayedMemory=new oi(i),this.lastOutputScreen=new oi(i),this.currRollUpRow=this.displayedMemory.rows[Je-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=i}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[Je-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}getHandler(){return this.outputFilter}setHandler(e){this.outputFilter=e}setPAC(e){this.writeScreen.setPAC(e)}setBkgData(e){this.writeScreen.setBkgData(e)}setMode(e){e!==this.mode&&(this.mode=e,this.logger.log(2,()=>"MODE="+e),this.mode==="MODE_POP-ON"?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),this.mode!=="MODE_ROLL-UP"&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)}insertChars(e){for(let i=0;i<e.length;i++)this.writeScreen.insertChar(e[i]);let t=this.writeScreen===this.displayedMemory?"DISP":"NON_DISP";this.logger.log(2,()=>t+": "+this.writeScreen.getDisplayText(!0)),(this.mode==="MODE_PAINT-ON"||this.mode==="MODE_ROLL-UP")&&(this.logger.log(1,()=>"DISPLAYED: "+this.displayedMemory.getDisplayText(!0)),this.outputDataUpdate())}ccRCL(){this.logger.log(2,"RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")}ccBS(){this.logger.log(2,"BS - BackSpace"),this.mode!=="MODE_TEXT"&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())}ccAOF(){}ccAON(){}ccDER(){this.logger.log(2,"DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()}ccRU(e){this.logger.log(2,"RU("+e+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(e)}ccFON(){this.logger.log(2,"FON - Flash On"),this.writeScreen.setPen({flash:!0})}ccRDC(){this.logger.log(2,"RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")}ccTR(){this.logger.log(2,"TR"),this.setMode("MODE_TEXT")}ccRTD(){this.logger.log(2,"RTD"),this.setMode("MODE_TEXT")}ccEDM(){this.logger.log(2,"EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate(!0)}ccCR(){this.logger.log(2,"CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate(!0)}ccENM(){this.logger.log(2,"ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()}ccEOC(){if(this.logger.log(2,"EOC - End Of Caption"),this.mode==="MODE_POP-ON"){let e=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=e,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,()=>"DISP: "+this.displayedMemory.getDisplayText())}this.outputDataUpdate(!0)}ccTO(e){this.logger.log(2,"TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)}ccMIDROW(e){let t={flash:!1};if(t.underline=e%2===1,t.italics=e>=46,t.italics)t.foreground="white";else{let i=Math.floor(e/2)-16,s=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=s[i]}this.logger.log(2,"MIDROW: "+fe(t)),this.writeScreen.setPen(t)}outputDataUpdate(e=!1){let t=this.logger.time;t!==null&&this.outputFilter&&(this.cueStartTime===null&&!this.displayedMemory.isEmpty()?this.cueStartTime=t:this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue(this.cueStartTime,t,this.lastOutputScreen),e&&this.outputFilter.dispatchCue&&this.outputFilter.dispatchCue(),this.cueStartTime=this.displayedMemory.isEmpty()?null:t),this.lastOutputScreen.copy(this.displayedMemory))}cueSplitAtTime(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}},_s=class{constructor(e,t,i){this.channels=[null,null,null],this.currentChannel=0,this.cmdHistory=_g(),this.logger=void 0,this.field=void 0,this.outputFilters=void 0,this.logger=new Mr,this.field=e,this.outputFilters=[null,t,i]}getHandler(e){return this.outputFilters[e]}setHandler(e,t){var i;this.outputFilters[e]=t,(i=this.channels[e])==null||i.setHandler(t)}getChannel(e){let t=this.channels[e];return t||(t=this.channels[e]=new Br(this.field+e-1,this.outputFilters[e],this.logger)),t}addData(e,t){this.logger.time=e;for(let i=0;i<t.length;i+=2){let s=t[i]&127,n=t[i+1]&127,a=!1,o=null;if(s===0&&n===0)continue;this.logger.log(3,()=>"["+_t([t[i],t[i+1]])+"] -> ("+_t([s,n])+")");let l=this.cmdHistory;if(s>=16&&s<=31){if(Pg(s,n,l)){Wi(null,null,l),this.logger.log(3,()=>"Repeated command ("+_t([s,n])+") is dropped");continue}Wi(s,n,this.cmdHistory),a=this.parseCmd(s,n),a||(a=this.parseMidrow(s,n)),a||(a=this.parsePAC(s,n)),a||(a=this.parseBackgroundAttributes(s,n))}else Wi(null,null,l);if(!a&&(o=this.parseChars(s,n),o)){let c=this.currentChannel;c&&c>0?this.getChannel(c).insertChars(o):this.logger.log(2,"No channel found yet. TEXT-MODE?")}!a&&!o&&this.logger.log(2,()=>"Couldn't parse cleaned data "+_t([s,n])+" orig: "+_t([t[i],t[i+1]]))}}parseCmd(e,t){let i=(e===20||e===28||e===21||e===29)&&t>=32&&t<=47,s=(e===23||e===31)&&t>=33&&t<=35;if(!(i||s))return!1;let n=e===20||e===21||e===23?1:2,a=this.getChannel(n);return e===20||e===21||e===28||e===29?t===32?a.ccRCL():t===33?a.ccBS():t===34?a.ccAOF():t===35?a.ccAON():t===36?a.ccDER():t===37?a.ccRU(2):t===38?a.ccRU(3):t===39?a.ccRU(4):t===40?a.ccFON():t===41?a.ccRDC():t===42?a.ccTR():t===43?a.ccRTD():t===44?a.ccEDM():t===45?a.ccCR():t===46?a.ccENM():t===47&&a.ccEOC():a.ccTO(t-32),this.currentChannel=n,!0}parseMidrow(e,t){let i=0;if((e===17||e===25)&&t>=32&&t<=47){if(e===17?i=1:i=2,i!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;let s=this.channels[i];return s?(s.ccMIDROW(t),this.logger.log(3,()=>"MIDROW ("+_t([e,t])+")"),!0):!1}return!1}parsePAC(e,t){let i,s=(e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127,n=(e===16||e===24)&&t>=64&&t<=95;if(!(s||n))return!1;let a=e<=23?1:2;return t>=64&&t<=95?i=a===1?Ag[e]:Ig[e]:i=a===1?xg[e]:Lg[e],this.getChannel(a).setPAC(this.interpretPAC(i,t)),this.currentChannel=a,!0}interpretPAC(e,t){let i,s={color:null,italics:!1,indent:null,underline:!1,row:e};return t>95?i=t-96:i=t-64,s.underline=(i&1)===1,i<=13?s.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(i/2)]:i<=15?(s.italics=!0,s.color="white"):s.indent=Math.floor((i-16)/2)*4,s}parseChars(e,t){let i,s=null,n=null;if(e>=25?(i=2,n=e-8):(i=1,n=e),n>=17&&n<=19){let a;n===17?a=t+80:n===18?a=t+112:a=t+144,this.logger.log(2,()=>"Special char '"+Cd(a)+"' in channel "+i),s=[a]}else e>=32&&e<=127&&(s=t===0?[e]:[e,t]);return s&&this.logger.log(3,()=>"Char codes = "+_t(s).join(",")),s}parseBackgroundAttributes(e,t){let i=(e===16||e===24)&&t>=32&&t<=47,s=(e===23||e===31)&&t>=45&&t<=47;if(!(i||s))return!1;let n,a={};e===16||e===24?(n=Math.floor((t-32)/2),a.background=Rg[n],t%2===1&&(a.background=a.background+"_semi")):t===45?a.background="transparent":(a.foreground="black",t===47&&(a.underline=!0));let o=e<=23?1:2;return this.getChannel(o).setBkgData(a),!0}reset(){for(let e=0;e<Object.keys(this.channels).length;e++){let t=this.channels[e];t&&t.reset()}Wi(null,null,this.cmdHistory)}cueSplitAtTime(e){for(let t=0;t<this.channels.length;t++){let i=this.channels[t];i&&i.cueSplitAtTime(e)}}};function Wi(r,e,t){t.a=r,t.b=e}function Pg(r,e,t){return t.a===r&&t.b===e}function _g(){return{a:null,b:null}}var Gt=class{constructor(e,t){this.timelineController=void 0,this.cueRanges=[],this.trackName=void 0,this.startTime=null,this.endTime=null,this.screen=null,this.timelineController=e,this.trackName=t}dispatchCue(){this.startTime!==null&&(this.timelineController.addCues(this.trackName,this.startTime,this.endTime,this.screen,this.cueRanges),this.startTime=null)}newCue(e,t,i){(this.startTime===null||this.startTime>e)&&(this.startTime=e),this.endTime=t,this.screen=i,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}},$r=class{constructor(e){this.hls=void 0,this.media=null,this.config=void 0,this.enabled=!0,this.Cues=void 0,this.tracks=[],this.initPTS=[],this.unparsedVttFrags=[],this.captionsTracks={},this.cueCache={},this.nonNativeCaptionsTracks={},this.cea608Parser1=void 0,this.cea608Parser2=void 0,this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs=Go(),this.captionsProperties=void 0,this.hls=e,this.config=e.config,this.Cues=e.config.cueHandler,this.cueCache={},this.captionsProperties={textTrack1:{label:this.config.captionsTextTrack1Label,languageCode:this.config.captionsTextTrack1LanguageCode},textTrack2:{label:this.config.captionsTextTrack2Label,languageCode:this.config.captionsTextTrack2LanguageCode},textTrack3:{label:this.config.captionsTextTrack3Label,languageCode:this.config.captionsTextTrack3LanguageCode},textTrack4:{label:this.config.captionsTextTrack4Label,languageCode:this.config.captionsTextTrack4LanguageCode}},e.on(y.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(y.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(y.MANIFEST_LOADING,this.onManifestLoading,this),e.on(y.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(y.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(y.FRAG_LOADING,this.onFragLoading,this),e.on(y.FRAG_LOADED,this.onFragLoaded,this),e.on(y.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(y.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(y.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(y.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(y.BUFFER_APPENDED,this.onBufferAppended,this),e.on(y.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){let{hls:e}=this;e.off(y.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(y.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(y.MANIFEST_LOADING,this.onManifestLoading,this),e.off(y.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(y.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(y.FRAG_LOADING,this.onFragLoading,this),e.off(y.FRAG_LOADED,this.onFragLoaded,this),e.off(y.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(y.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(y.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(y.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(y.BUFFER_APPENDED,this.onBufferAppended,this),e.off(y.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=this.media=null,this.cea608Parser1=this.cea608Parser2=void 0}initCea608Parsers(){let e=new Gt(this,"textTrack1"),t=new Gt(this,"textTrack2"),i=new Gt(this,"textTrack3"),s=new Gt(this,"textTrack4");this.cea608Parser1=new _s(1,e,t),this.cea608Parser2=new _s(3,i,s)}addCues(e,t,i,s,n){let a=!1;for(let l=n.length;l--;){let d=n[l],c=kg(d[0],d[1],t,i);if(c>=0&&(d[0]=Math.min(d[0],t),d[1]=Math.max(d[1],i),a=!0,c/(i-t)>.5))return}if(a||n.push([t,i]),this.config.renderTextTracksNatively){let l=this.cueCache[e];if(l){let d=this.Cues.newCue(null,t,i,s);d.length&&l.push.apply(l,d)}else{let d=this.captionsTracks[e].track;this.Cues.newCue(d,t,i,s)}}else{var o;let l=this.Cues.newCue(null,t,i,s),d=(o=this.captionsProperties[e])==null?void 0:o.media;this.hls.trigger(y.CUES_PARSED,{type:"captions",cues:l,track:e,closedCaptions:d})}}onInitPtsFound(e,{id:t,timestampOffsets:i}){let{unparsedVttFrags:s}=this;t===H.MAIN&&(this.initPTS=i),s.length&&(this.unparsedVttFrags=[],s.forEach(n=>{this.initPTS[n.frag.cc]?this.onFragLoaded(y.FRAG_LOADED,n):this.hls.trigger(y.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:n.frag,part:null,error:new Error("Subtitle discontinuity domain does not match main")})}))}createCaptionsTrack(e){this.config.renderTextTracksNatively?this.createNativeTrack(e):this.createNonNativeTrack(e)}createNativeTrack(e){if(this.captionsTracks[e])return;let{captionsProperties:t,captionsTracks:i,cueCache:s,media:n}=this,{label:a,languageCode:o}=t[e];n&&(s[e]=[],i[e]=fa(n,"captions",a,o,"hidden"))}createNonNativeTrack(e){if(this.nonNativeCaptionsTracks[e])return;let t=this.captionsProperties[e];if(!t)return;let i=t.label,s={_id:e,label:i,kind:"captions",default:t.media?!!t.media.default:!1,closedCaptions:t.media};this.nonNativeCaptionsTracks[e]=s,this.hls.trigger(y.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:[s]})}onMediaAttaching(e,t){this.media=t.media}onMediaDetaching(e,t){let i=!!t.transferMedia;if(this.media=null,!i){if(this.config.renderTextTracksNatively){let{captionsTracks:s,cueCache:n}=this;for(let a in s)s[a].remove(),delete n[a]}this.cueCache={},this.captionsTracks={},this.nonNativeCaptionsTracks={}}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs=Go(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}onSubtitleTracksUpdated(e,t){let i=t.subtitleTracks||[];if(i.length&&!this.config.renderTextTracksNatively&&!td(this.tracks,i)){let s=i.map(n=>({label:n.name,kind:n.type.toLowerCase(),default:n.default,subtitleTrack:n}));this.hls.trigger(y.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:s})}this.tracks=i}onManifestLoaded(e,t){this.config.enableCEA708Captions&&t.captions&&t.captions.forEach(i=>{let s=/(?:CC|SERVICE)([1-4])/.exec(i.instreamId);if(!s)return;let n=`textTrack${s[1]}`,a=this.captionsProperties[n];a&&(a.label=i.name,i.lang&&(a.languageCode=i.lang),a.media=i)})}closedCaptionsForLevel(e){let t=this.hls.levels[e.level];return t?.attrs["CLOSED-CAPTIONS"]}onFragLoading(e,t){if(this.enabled&&t.frag.type===H.MAIN){var i,s;let{cea608Parser1:n,cea608Parser2:a,lastSn:o}=this,{cc:l,sn:d}=t.frag,c=(i=(s=t.part)==null?void 0:s.index)!=null?i:-1;n&&a&&(d!==o+1||d===o&&c!==this.lastPartIndex+1||l!==this.lastCc)&&(n.reset(),a.reset()),this.lastCc=l,this.lastSn=d,this.lastPartIndex=c}}onFragLoaded(e,t){let{frag:i,payload:s}=t;if(i.level<this.tracks.length&&i.type===H.SUBTITLE)if(s.byteLength){let n=i.decryptdata,a="stats"in t;if(n==null||!n.encrypted||a){let o=this.tracks[i.level],l=this.vttCCs;l[i.cc]||(l[i.cc]={start:i.start,prevCC:this.prevCC,new:!0},this.prevCC=i.cc),o?.textCodec===yr?this._parseIMSC1(t):this._parseVTTs(t)}}else{let n="part"in t?t.part:null;this.hls.trigger(y.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,part:n,error:new Error("Empty subtitle payload")})}}_parseIMSC1(e){let{frag:t,payload:i}=e,s="part"in e?e.part:null,n=this.hls;Do(i,this.initPTS[t.cc],a=>{this._appendCues(a,t.level),n.trigger(y.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:t,part:s})},a=>{n.logger.log(`Cannot parse IMSC1 (sn: ${t.sn} @${t.start}): ${a}`),n.trigger(y.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:t,part:s,error:a})})}_parseVTTs(e){var t;let{frag:i,payload:s}=e,n="part"in e?e.part:null,{initPTS:a,unparsedVttFrags:o}=this,l=a.length-1;if(!a[i.cc]&&l===-1){o.push(e);return}let d=this.hls,c=(t=i.initSegment)==null?void 0:t.data,h=c?Ye(c,new Uint8Array(s)).buffer:s;ig(h,this.initPTS[i.cc],this.vttCCs,i.cc,(n&&!c?n:i).start,u=>{this._appendCues(u,i.level),d.trigger(y.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:i,part:n})},u=>{let f=u.message.startsWith("Missing initPTS");if(d.logger.log(`${f?"Deferred parsing of":"Cannot parse"} VTT cue (sn: ${i.sn} @${i.start}): ${u}`),f){o.push(e);return}else this.config.enableIMSC1&&this._fallbackToIMSC1(e);d.trigger(y.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,part:n,error:u})})}_fallbackToIMSC1(e){let{frag:t,payload:i}=e,s=this.tracks[t.level];s.textCodec||Do(i,this.initPTS[t.cc],()=>{s.textCodec=yr,this._parseIMSC1(e)},()=>{s.textCodec="wvtt"})}_appendCues(e,t){let i=this.hls;if(this.config.renderTextTracksNatively){var s;let n=(s=this.tracks[t].trackNode)==null?void 0:s.track;if(!n||n.mode==="disabled")return;e.forEach(a=>vr(n,a))}else{let n=this.tracks[t];if(!n)return;let a=n.default?"default":"subtitles"+t;i.trigger(y.CUES_PARSED,{type:"subtitles",cues:e,track:a,subtitleTrack:n})}}onFragDecrypted(e,t){let{frag:i}=t;i.type===H.SUBTITLE&&this.onFragLoaded(y.FRAG_LOADED,t)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(e,t){if(!this.enabled||!this.config.enableCEA708Captions)return;let{frag:i,samples:s}=t;if(!(i.type===H.MAIN&&this.closedCaptionsForLevel(i)==="NONE"))for(let n=0;n<s.length;n++){let a=s[n].bytes;if(a){this.cea608Parser1||this.initCea608Parsers();let o=this.extractCea608Data(a);this.cea608Parser1.addData(s[n].pts,o[0]),this.cea608Parser2.addData(s[n].pts,o[1])}}}onBufferAppended(e,t){if(this.config.renderTextTracksNatively){var i;let{type:s,timeRanges:n}=t;if(s==="video"&&(i=n[s])!=null&&i.length){let{captionsTracks:a,cueCache:o}=this;Object.keys(o).forEach(l=>{var d;let c=(d=a[l])==null?void 0:d.track;if(c){let h=o[l];for(let u=0;u<h.length;u++)vr(c,h[u])}delete o[l]})}}}onBufferFlushing(e,t){let{startOffset:i,endOffset:s,endOffsetSubtitles:n,type:a}=t,{media:o}=this;if(!(!o||o.currentTime<s)){if(!a||a==="video"){let{captionsTracks:l,cueCache:d}=this;Object.keys(l).forEach(c=>Er(l[c].track,i,s)),Object.keys(d).forEach(c=>{let h=d[c];for(let u=h.length;u--;){let f=h[u];f.startTime>=i&&f.endTime<=s&&h.splice(u,1)}})}this.config.renderTextTracksNatively&&i===0&&n!==void 0&&this.tracks.forEach(l=>{var d;let c=(d=l.trackNode)==null?void 0:d.track;c&&Er(c,i,n)})}}extractCea608Data(e){let t=[[],[]],i=e[0]&31,s=2;for(let n=0;n<i;n++){let a=e[s++],o=127&e[s++],l=127&e[s++];if(o===0&&l===0)continue;if((4&a)!==0){let c=3&a;(c===0||c===1)&&(t[c].push(o),t[c].push(l))}}return t}};function kg(r,e,t,i){return Math.min(e,i)-Math.max(r,t)}function Go(){return{ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}}}var Dg=/\s/,Cg={newCue(r,e,t,i){let s=[],n,a,o,l,d,c=self.VTTCue||self.TextTrackCue;for(let u=0;u<i.rows.length;u++)if(n=i.rows[u],o=!0,l=0,d="",!n.isEmpty()){var h;for(let m=0;m<n.chars.length;m++)Dg.test(n.chars[m].uchar)&&o?l++:(d+=n.chars[m].uchar,o=!1);n.cueStartTime=e,e===t&&(t+=1e-4),l>=16?l--:l++;let f=Id(d.trim()),g=ua(e,t,f);r!=null&&(h=r.cues)!=null&&h.getCueById(g)||(a=new c(e,t,f),a.id=g,a.line=u+1,a.align="left",a.position=10+Math.min(80,Math.floor(l*8/32)*10),s.push(a))}return r&&s.length&&(s.sort((u,f)=>u.line==="auto"||f.line==="auto"?0:u.line>8&&f.line>8?f.line-u.line:u.line-f.line),s.forEach(u=>vr(r,u))),s}},ks=class{constructor(){this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=0,this.config=null,this.callbacks=null,this.context=null,this.stats=new li}destroy(){this.callbacks=this.context=this.config=null,this.abortInternal(),this.stats=null}load(e,t,i){let s=this.stats;if(s.loading.start)throw new Error("Loader can only be used once.");s.loading.start=self.performance.now(),this.context=e,this.config=t,this.callbacks=i,this.loadInternal()}abort(){var e;this.abortInternal(),(e=this.callbacks)!=null&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.getNetworkDetails())}loadtimeout(){if(!this.config)return;let e=this.config.loadPolicy.timeoutRetry,t=this.stats.retry;if(di(e,t,!0))this.retry(e);else{var i;oe.warn(`timeout while loading ${(i=this.context)==null?void 0:i.url}`);let s=this.callbacks;s&&(this.abortInternal(),s.onTimeout(this.stats,this.context,this.getNetworkDetails()))}}retry(e){let{context:t,stats:i}=this;this.retryDelay=Wr(e,i.retry),i.retry++,oe.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${t?.url}, retrying ${i.retry}/${e.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.resetInternalLoader(),self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(()=>this.loadInternal(),this.retryDelay)}};function wg(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch{}return!1}var Mg=/(\d+)-(\d+)\/(\d+)/,Ds=class extends ks{constructor(e){super(),this.fetchSetup=void 0,this.request=null,this.response=null,this.controller=null,this.fetchSetup=e.fetchSetup||Bg}destroy(){this.request=null,super.destroy(),this.response=null,this.controller=null,this.fetchSetup=null}abortInternal(){self.clearTimeout(this.retryTimeout),this.controller&&!this.stats.loading.end&&(this.stats.aborted=!0,this.controller.abort())}getNetworkDetails(){return this.response}resetInternalLoader(){this.response=null}loadInternal(){let{config:e,context:t,stats:i}=this;if(!e||!t)return;i.loading.first=0,i.loaded=0,i.aborted=!1,this.controller=new self.AbortController;let s=Og(t,this.controller.signal),n=t.responseType==="arraybuffer",a=n?"byteLength":"length",{maxTimeToFirstByteMs:o,maxLoadTimeMs:l}=e.loadPolicy;this.request=this.fetchSetup(t,s),self.clearTimeout(this.requestTimeout),e.timeout=o&&B(o)?o:l,this.requestTimeout=self.setTimeout(()=>{this.loadtimeout()},e.timeout),(Si(this.request)?this.request.then(self.fetch):self.fetch(this.request)).then(c=>{var h;this.response=c;let u=Math.max(self.performance.now(),i.loading.start);if(self.clearTimeout(this.requestTimeout),e.timeout=l,this.requestTimeout=self.setTimeout(()=>{this.loadtimeout()},l-(u-i.loading.start)),!c.ok){let{status:g,statusText:m}=c;throw new Ur(m||"fetch, bad network response",g,c)}i.loading.first=u,i.total=Ng(c.headers)||i.total;let f=(h=this.callbacks)==null?void 0:h.onProgress;return f&&B(e.highWaterMark)?this.loadProgressively(c,i,t,e.highWaterMark,f):n?c.arrayBuffer():t.responseType==="json"?c.json():c.text()}).then(c=>{var h,u;let f=this.response;if(!f)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),i.loading.end=Math.max(self.performance.now(),i.loading.first);let g=c[a];g&&(i.loaded=i.total=g);let m={url:f.url,data:c,code:f.status},p=(h=this.callbacks)==null?void 0:h.onProgress;p&&!B(e.highWaterMark)&&p(i,t,c,f),(u=this.callbacks)==null||u.onSuccess(m,i,t,f)}).catch(c=>{if(self.clearTimeout(this.requestTimeout),i.aborted)return;let h=c&&c.code||0,u=c?c.message:null,f=e.loadPolicy.errorRetry,g=i.retry,m={url:t.url,data:void 0,code:h};if(di(f,g,!1,m))this.retry(f);else{var p;oe.error(`${h} while loading ${t.url}`),(p=this.callbacks)==null||p.onError({code:h,text:u},t,c?c.details:null,i)}})}getCacheAge(){let e=null;if(this.response){let t=this.response.headers.get("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.response?this.response.headers.get(e):null}loadProgressively(e,t,i,s=0,n){let a=new ms,o=e.body.getReader(),l=()=>o.read().then(d=>{if(d.done)return a.dataLength&&n(t,i,a.flush().buffer,e),Promise.resolve(new ArrayBuffer(0));let c=d.value,h=c.length;return t.loaded+=h,h<s||a.dataLength?(a.push(c),a.dataLength>=s&&n(t,i,a.flush().buffer,e)):n(t,i,c.buffer,e),l()}).catch(()=>Promise.reject());return l()}};function Og(r,e){let t={method:"GET",mode:"cors",credentials:"same-origin",signal:e,headers:new self.Headers(ce({},r.headers))};return r.rangeEnd&&t.headers.set("Range","bytes="+r.rangeStart+"-"+String(r.rangeEnd-1)),t}function Fg(r){let e=Mg.exec(r);if(e)return parseInt(e[2])-parseInt(e[1])+1}function Ng(r){let e=r.get("Content-Range");if(e){let i=Fg(e);if(B(i))return i}let t=r.get("Content-Length");if(t)return parseInt(t)}function Bg(r,e){return new self.Request(r.url,e)}var Ur=class extends Error{constructor(e,t,i){super(e),this.code=void 0,this.details=void 0,this.code=t,this.details=i}},$g=(r,e,t)=>Math.max(e,Math.min(r,t)),Ug=/^age:\s*[\d.]+\s*$/im,Cs=class extends ks{constructor(e){super(),this.xhrSetup=void 0,this.loader=null,this.xhrSetup=e.xhrSetup||null}destroy(){super.destroy(),this.loader=null,this.xhrSetup=null}abortInternal(){let e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,e.readyState!==4&&(this.stats.aborted=!0,e.abort()))}getNetworkDetails(){return this.loader}resetInternalLoader(){this.loader=null}loadInternal(){let{config:e,context:t}=this;if(!e||!t)return;let i=this.loader=new self.XMLHttpRequest,s=this.stats;s.loading.first=0,s.loaded=0,s.aborted=!1;let n=this.xhrSetup;n?Promise.resolve().then(()=>{if(!(this.loader!==i||this.stats.aborted))return n.call(this,i,t.url,t)}).catch(a=>{if(!(this.loader!==i||this.stats.aborted))return i.open("GET",t.url,!0),n.call(this,i,t.url,t)}).then(()=>{this.loader!==i||this.stats.aborted||this.openAndSendXhr(i,t,e)}).catch(a=>{var o;(o=this.callbacks)==null||o.onError({code:i.status,text:a.message},t,i,s)}):this.openAndSendXhr(i,t,e)}openAndSendXhr(e,t,i){e.readyState||e.open("GET",t.url,!0);let s=t.headers,{maxTimeToFirstByteMs:n,maxLoadTimeMs:a}=i.loadPolicy;if(s)for(let o in s)e.setRequestHeader(o,s[o]);t.rangeEnd&&e.setRequestHeader("Range",`bytes=${t.rangeStart}-${t.rangeEnd-1}`),e.onreadystatechange=this.readystatechange.bind(this),e.onprogress=this.loadprogress.bind(this),e.responseType=t.responseType,self.clearTimeout(this.requestTimeout),i.timeout=n&&B(n)?n:a,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),i.timeout),e.send()}readystatechange(){let{context:e,loader:t,stats:i}=this;if(!e||!t)return;let s=t.readyState,n=this.config;if(!i.aborted&&s>=2&&(i.loading.first===0&&(i.loading.first=Math.max(self.performance.now(),i.loading.start),n.timeout!==n.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),n.timeout=n.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),n.loadPolicy.maxLoadTimeMs-(i.loading.first-i.loading.start)))),s===4)){self.clearTimeout(this.requestTimeout),t.onreadystatechange=null,t.onprogress=null;let d=t.status,c=t.responseType==="text"?t.responseText:null;if(d>=200&&d<300){let g=c??t.response;if(g!=null){var a,o;i.loading.end=Math.max(self.performance.now(),i.loading.first);let m=t.responseType==="arraybuffer"?g.byteLength:g.length;i.loaded=i.total=m,i.bwEstimate=i.total*8e3/(i.loading.end-i.loading.first);let p=(a=this.callbacks)==null?void 0:a.onProgress;p&&p(i,e,g,t);let v={url:t.responseURL,data:g,code:d};e.rangeEnd&&m!==e.rangeEnd-e.rangeStart&&oe.warn(`Payload length ${m} does not match requested Range: bytes=${e.rangeStart}-${e.rangeEnd-1}`),(o=this.callbacks)==null||o.onSuccess(v,i,e,t);return}}let h=n.loadPolicy.errorRetry,u=i.retry,f={url:e.url,data:void 0,code:d};if(di(h,u,!1,f))this.retry(h);else{var l;oe.error(`${d} while loading ${e.url}`),(l=this.callbacks)==null||l.onError({code:d,text:t.statusText},e,t,i)}}}loadprogress(e){let t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)}getCacheAge(){let e=null;if(this.loader&&Ug.test(this.loader.getAllResponseHeaders())){let t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.loader&&new RegExp(`^${e}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(e):null}},Gg={maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null},Vg=Y(Y({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,maxDevicePixelRatio:Number.POSITIVE_INFINITY,preferManagedMediaSource:!1,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,frontBufferFlushThreshold:1/0,loopBackBufferFlush:void 0,startOnSegmentBoundary:!1,nextAudioTrackBufferFlushForwardOffset:.25,maxBufferSize:60*1e3*1e3,maxFragLookUpTolerance:.25,maxBufferHole:.1,detectStallWithCurrentTimeMs:1250,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,nudgeOnVideoHole:!0,skipBufferHolePadding:.1,liveSyncMode:"edge",liveSyncDurationCount:3,liveSyncOnStallIncrease:1,liveMaxLatencyDurationCount:1/0,liveMaxUnchangedPlaylistRefresh:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,workerPath:null,enableSoftwareAES:!0,startLevel:void 0,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,appendTimeout:1/0,ignorePlaylistParsingErrors:!1,loader:Cs,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,handleMpegTsVideoIntegrityErrors:"process",abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrEwmaDefaultEstimateMax:5e6,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,abrSwitchInterval:0,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystems:{},drmSystemOptions:{},requestMediaKeySystemAccessFunc:Dl,requireKeySystemAccessOnStart:!1,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableEmsgKLVMetadata:!1,enableID3MetadataCues:!0,emsgKLVSchemaUri:void 0,enableInterstitialPlayback:!0,interstitialAppendInPlace:!0,interstitialLiveLookAhead:10,iframeCacheLimit:2*1024*1024,useMediaCapabilities:!0,preserveManualLevelOnError:!1,errorPenaltyExpireMs:0,certLoadPolicy:{default:Gg},keyLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"},errorRetry:{maxNumRetry:8,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"}}},manifestLoadPolicy:{default:{maxTimeToFirstByteMs:1/0,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},playlistLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:2,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},fragLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:12e4,timeoutRetry:{maxNumRetry:4,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:6,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},steeringManifestLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},interstitialAssetListLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:3e4,timeoutRetry:{maxNumRetry:0,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:0,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3,streamController:Is,abrController:Dn,bufferController:sr,capLevelController:nr,errorController:Cn,fpsController:ur,id3TrackController:Ar,gapController:Sr,latencyController:Dr},Hg()),{},{subtitleStreamController:Cr,subtitleTrackController:Tr,timelineController:$r,audioStreamController:Jn,audioTrackController:er,emeController:xs,cmcdController:cr,contentSteeringController:hr,iframeController:Ir,interstitialsController:kr});function Hg(){return{cueHandler:Cg,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}}function Kg(r,e,t){if((e.liveSyncDurationCount||e.liveMaxLatencyDurationCount)&&(e.liveSyncDuration||e.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(e.liveMaxLatencyDurationCount!==void 0&&(e.liveSyncDurationCount===void 0||e.liveMaxLatencyDurationCount<=e.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(e.liveMaxLatencyDuration!==void 0&&(e.liveSyncDuration===void 0||e.liveMaxLatencyDuration<=e.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');if(e.liveMaxUnchangedPlaylistRefresh!==void 0){let a=e.liveMaxUnchangedPlaylistRefresh,o=$g(a,2,1/0);o!==a&&t.warn(`hls.js config: "liveMaxUnchangedPlaylistRefresh" clamped from ${a} to ${o}.`),e.liveMaxUnchangedPlaylistRefresh=o}let i=Gr(r),s=["manifest","level","frag"],n=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return s.forEach(a=>{let o=`${a==="level"?"playlist":a}LoadPolicy`,l=e[o]===void 0,d=[];n.forEach(c=>{let h=`${a}Loading${c}`,u=e[h];if(u!==void 0&&l){d.push(h);let f=i[o].default;switch(e[o]={default:f},c){case"TimeOut":f.maxLoadTimeMs=u,f.maxTimeToFirstByteMs=u;break;case"MaxRetry":f.errorRetry.maxNumRetry=u,f.timeoutRetry.maxNumRetry=u;break;case"RetryDelay":f.errorRetry.retryDelayMs=u,f.timeoutRetry.retryDelayMs=u;break;case"MaxRetryTimeout":f.errorRetry.maxRetryDelayMs=u,f.timeoutRetry.maxRetryDelayMs=u;break}}}),d.length&&t.warn(`hls.js config: "${d.join('", "')}" setting(s) are deprecated, use "${o}": ${fe(e[o])}`)}),Y(Y({},i),e)}function Gr(r){return r&&typeof r=="object"?Array.isArray(r)?r.map(Gr):Object.keys(r).reduce((e,t)=>(e[t]=Gr(r[t]),e),{}):r}function qg(r,e){let t=r.loader;t!==Ds&&t!==Cs?(e.log("[config]: Custom loader detected, cannot enable progressive streaming"),r.progressive=!1):wg()&&(r.loader=Ds,r.progressive=!0,r.enableSoftwareAES=!0,e.log("[config]: Progressive streaming enabled, using FetchLoader"))}var Vr=class extends bi{constructor(e,t){super(e,"level-controller"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.lastABRSwitchTime=-1,this._iframeVariants=[],this.onParsedComplete=void 0,this.steering=t,this._registerListeners()}_registerListeners(){let{hls:e}=this;e.on(y.MANIFEST_LOADING,this.onManifestLoading,this),e.on(y.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(y.LEVEL_LOADED,this.onLevelLoaded,this),e.on(y.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(y.FRAG_BUFFERED,this.onFragBuffered,this),e.on(y.ERROR,this.onError,this)}_unregisterListeners(){let{hls:e}=this;e.off(y.MANIFEST_LOADING,this.onManifestLoading,this),e.off(y.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(y.LEVEL_LOADED,this.onLevelLoaded,this),e.off(y.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(y.FRAG_BUFFERED,this.onFragBuffered,this),e.off(y.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach(t=>{t.loadError=0,t.fragmentError=0}),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1,this._iframeVariants=[]}onManifestLoading(e,t){this.resetLevels()}onManifestLoaded(e,t){let i=this.hls.config.preferManagedMediaSource,s=[],n={},a={},o=!1,l=!1,d=!1,c=!1;t.levels.forEach(h=>{let u=h.attrs,f=Vo(h,i),{audioCodec:g,videoCodec:m,imageCodec:p,width:v,height:T}=h;if(!f){this.log(`Some or all CODECS not supported "${u.CODECS}"`);return}o||(o=!!(v&&T)),l||(l=!!m),d||(d=!!g),c||(c=!!p);let{CODECS:E,"FRAME-RATE":S,"HDCP-LEVEL":b,"PATHWAY-ID":A,RESOLUTION:x,"VIDEO-RANGE":R}=u,I=`${`${A||"."}-`}${h.bitrate}-${x}-${S}-${E}-${R}-${b}`;if(n[I])if(n[I].uri!==h.url&&!h.attrs["PATHWAY-ID"]){let k=a[I]+=1;h.attrs["PATHWAY-ID"]=new Array(k+1).join(".");let D=this.createLevel(h);n[I]=D,s.push(D)}else h.iframes||(n[I].addGroupId("audio",u.AUDIO),n[I].addGroupId("text",u.SUBTITLES));else{let k=this.createLevel(h);n[I]=k,a[I]=1,s.push(k)}}),this.filterAndSortMediaOptions(s,t,o,l,d,c)}createLevel(e){let t=new wt(e),i=e.supplemental;if(i!=null&&i.videoCodec&&!Md(i.videoCodec,this.hls.config.preferManagedMediaSource)){let s=new Error(`SUPPLEMENTAL-CODECS not supported "${i.videoCodec}"`);this.log(s.message),t.supportedResult=pl(s,[])}return t}filterAndSortMediaOptions(e,t,i,s,n,a){var o;let l=[],d=[],c=e,h=((o=t.stats)==null?void 0:o.parsing)||{},u=this.hls.config.preferManagedMediaSource;if((i||s)&&n&&(c=c.filter(({videoCodec:b,videoRange:A,width:x,height:R})=>(!!b||!!(x&&R))&&uh(A))),s&&a&&(c=c.filter(b=>!b.imageCodec)),c.length===0){Promise.resolve().then(()=>{if(this.hls){let b="no level with compatible codecs found in manifest",A=b;t.levels.length&&(A=`one or more CODECS in variant not supported: ${fe(t.levels.map(R=>R.attrs.CODECS).filter((R,P,I)=>I.indexOf(R)===P))}`,this.warn(A),b+=` (${A})`);let x=new Error(b);this.hls.trigger(y.ERROR,{type:W.MEDIA_ERROR,details:L.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:x,reason:A})}}),h.end=performance.now();return}t.audioTracks&&(l=t.audioTracks.filter(b=>!b.audioCodec||wd(b.audioCodec,u)),Ho(l)),t.subtitles&&(d=t.subtitles,Ho(d));let f=c.slice(0);c.sort((b,A)=>{if(b.attrs["HDCP-LEVEL"]!==A.attrs["HDCP-LEVEL"])return(b.attrs["HDCP-LEVEL"]||"")>(A.attrs["HDCP-LEVEL"]||"")?1:-1;if(i&&b.height!==A.height)return b.height-A.height;if(b.frameRate!==A.frameRate)return b.frameRate-A.frameRate;if(b.videoRange!==A.videoRange)return ss.indexOf(b.videoRange)-ss.indexOf(A.videoRange);if(b.videoCodec!==A.videoCodec){let x=Ra(b.videoCodec),R=Ra(A.videoCodec);if(x!==R)return R-x}if(b.uri===A.uri&&b.codecSet!==A.codecSet){let x=ts(b.codecSet),R=ts(A.codecSet);if(x!==R)return R-x}return b.averageBitrate!==A.averageBitrate?b.averageBitrate-A.averageBitrate:0});let g=f[0];if(this.steering&&(c=this.steering.filterParsedLevels(c),c.length!==f.length)){for(let b=0;b<f.length;b++)if(f[b].pathwayId===c[0].pathwayId){g=f[b];break}}this._levels=c;for(let b=0;b<c.length;b++)if(c[b]===g){var m;this._firstLevel=b;let A=g.bitrate,x=this.hls.bandwidthEstimate;if(this.log(`manifest loaded, ${c.length} level(s) found, first bitrate: ${A}`),((m=this.hls.userConfig)==null?void 0:m.abrEwmaDefaultEstimate)===void 0){let R=Math.min(A,this.hls.config.abrEwmaDefaultEstimateMax);R>x&&x===this.hls.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=R)}break}let p=t.iframeVariants.filter(b=>Vo(b,u));this._iframeVariants=p;let v=n&&!s,T=this.hls.config,E=!!(T.audioStreamController&&T.audioTrackController),S={levels:c,audioTracks:l,subtitleTracks:d,iframeVariants:p,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:n,video:s,altAudio:E&&!v&&l.some(b=>!!b.url)};h.end=performance.now(),this.hls.trigger(y.MANIFEST_PARSED,S)}get iframeVariants(){return this._iframeVariants.length===0?null:this._iframeVariants}get levels(){return this._levels.length===0?null:this._levels}get loadLevelObj(){return this.currentLevel}get level(){return this.currentLevelIndex}set level(e){let t=this._levels;if(t.length===0)return;if(e<0||e>=t.length){let c=new Error("invalid level idx"),h=e<0;if(this.hls.trigger(y.ERROR,{type:W.OTHER_ERROR,details:L.LEVEL_SWITCH_ERROR,level:e,fatal:h,error:c,reason:c.message}),h)return;e=Math.min(e,t.length-1)}let i=this.currentLevelIndex,s=this.currentLevel,n=s?s.attrs["PATHWAY-ID"]:void 0,a=t[e],o=a.attrs["PATHWAY-ID"];if(this.currentLevelIndex=e,this.currentLevel=a,i===e&&s&&n===o)return;this.log(`Switching to level ${e} (${a.height?a.height+"p ":""}${a.videoRange?a.videoRange+" ":""}${a.codecSet?a.codecSet+" ":""}@${a.bitrate})${o?" with Pathway "+o:""} from level ${i}${n?" with Pathway "+n:""}`);let l={level:e,attrs:a.attrs,details:a.details,bitrate:a.bitrate,averageBitrate:a.averageBitrate,maxBitrate:a.maxBitrate,realBitrate:a.realBitrate,width:a.width,height:a.height,codecSet:a.codecSet,audioCodec:a.audioCodec,videoCodec:a.videoCodec,audioGroups:a.audioGroups,subtitleGroups:a.subtitleGroups,loaded:a.loaded,loadError:a.loadError,fragmentError:a.fragmentError,name:a.name,id:a.id,uri:a.uri,url:a.url,urlId:0,audioGroupIds:a.audioGroupIds,textGroupIds:a.textGroupIds};this.hls.trigger(y.LEVEL_SWITCHING,l);let d=a.details;if(!d||d.live){let c=this.switchParams(a.uri,s?.details,d);this.loadPlaylist(c)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(e){this.manualLevelIndex=e,this._startLevel===void 0&&(this._startLevel=e),e!==-1&&(this.level=e)}get firstLevel(){return this._firstLevel}set firstLevel(e){this._firstLevel=e}get startLevel(){if(this._startLevel===void 0){let e=this.hls.config.startLevel;return e!==void 0?e:this.hls.firstAutoLevel}return this._startLevel}set startLevel(e){this._startLevel=e}get pathways(){return this.steering?this.steering.pathways():[]}get pathwayPriority(){return this.steering?this.steering.pathwayPriority:null}set pathwayPriority(e){if(this.steering){let t=this.steering.pathways(),i=e.filter(s=>t.indexOf(s)!==-1);if(e.length<1){this.warn(`pathwayPriority ${e} should contain at least one pathway from list: ${t}`);return}this.steering.pathwayPriority=i}}onError(e,t){t.fatal||!t.context||t.context.type===te.LEVEL&&t.context.level===this.level&&this.checkRetry(t)}onFragBuffered(e,{frag:t}){if(t.type===H.MAIN){let i=t.elementaryStreams;if(!Object.keys(i).some(n=>!!i[n]))return;let s=this._levels[t.level];s!=null&&s.loadError&&(this.log(`Resetting level error count of ${s.loadError} on frag buffered`),s.loadError=0)}}onLevelLoaded(e,t){var i;let{level:s,details:n}=t,a=t.levelInfo;if(!a){var o;this.warn(`Invalid level index ${s}`),(o=t.deliveryDirectives)!=null&&o.skip&&(n.deltaUpdateFailed=!0);return}if(a===this.currentLevel||t.withoutMultiVariant){a.fragmentError===0&&(a.loadError=0);let l=a.details;l===t.details&&l.advanced&&(l=void 0),this.playlistLoaded(s,t,l)}else(i=t.deliveryDirectives)!=null&&i.skip&&(n.deltaUpdateFailed=!0)}loadPlaylist(e){super.loadPlaylist(),this.shouldLoadPlaylist(this.currentLevel)&&this.scheduleLoading(this.currentLevel,e)}loadingPlaylist(e,t){super.loadingPlaylist(e,t);let i=this.getUrlWithDirectives(e.uri,t),s=this.currentLevelIndex,n=e.attrs["PATHWAY-ID"],a=e.details,o=a?.age;this.log(`Loading level index ${s}${t?.msn!==void 0?" at sn "+t.msn+" part "+t.part:""}${n?" Pathway "+n:""}${o&&a.live?" age "+o.toFixed(1)+(a.type&&" "+a.type||""):""} ${i}`),this.hls.trigger(y.LEVEL_LOADING,{url:i,level:s,levelInfo:e,pathwayId:e.attrs["PATHWAY-ID"],id:0,deliveryDirectives:t||null})}get nextLoadLevel(){return this.manualLevelIndex!==-1?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(e){let t=this.currentLevelIndex;if(this.manualLevelIndex===-1&&e!==t&&e!==-1){let s=this.hls.config.abrSwitchInterval;if(s>0){let n=performance.now(),a=n-this.lastABRSwitchTime,o=s*1e3;if(this.lastABRSwitchTime>-1&&a<o){this.warn(`Preventing ABR level switch: ${t} -> ${e} (${Math.round(a)}ms < ${o}ms / ${s}s)`);return}this.lastABRSwitchTime=n,this.log(`Allowing ABR level switch: ${t} -> ${e} (${Math.round(a)}ms >= ${o}ms / ${s}s)`)}}this.level=e,this.manualLevelIndex===-1&&(this.hls.nextAutoLevel=e)}removeLevel(e){var t;if(this._levels.length===1)return;let i=this._levels.filter((n,a)=>a!==e?!0:(this.steering&&this.steering.removeLevel(n),n===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,n.details&&n.details.fragments.forEach(o=>o.level=-1)),!1));Bl(i),this._levels=i,this.currentLevelIndex>-1&&(t=this.currentLevel)!=null&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.manualLevelIndex>-1&&(this.manualLevelIndex=this.currentLevelIndex);let s=i.length-1;this._firstLevel=Math.min(this._firstLevel,s),this._startLevel&&(this._startLevel=Math.min(this._startLevel,s)),this.hls.trigger(y.LEVELS_UPDATED,{levels:i})}onLevelsUpdated(e,{levels:t}){this._levels=t}checkMaxAutoUpdated(){let{autoLevelCapping:e,maxAutoLevel:t,maxHdcpLevel:i}=this.hls;this._maxAutoLevel!==t&&(this._maxAutoLevel=t,this.hls.trigger(y.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:e,levels:this.levels,maxAutoLevel:t,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:i}))}};function wd(r,e){return fi(r,"audio",e)}function Md(r,e){return fi(r,"video",e)}function Vo(r,e){let{audioCodec:t,videoCodec:i}=r;t&&(r.audioCodec=t=is(t,e)||void 0),i&&(i=r.videoCodec=sh(i));let{unknownCodecs:s}=r;return!(s?.length||0||t&&!wd(t,e)||i&&!Md(i,e))}function Ho(r){let e={};r.forEach(t=>{let i=t.groupId||"";t.id=e[i]=e[i]||0,e[i]++})}var Hr=class extends Oe{constructor(e,t){super("key-loader",t),this.config=void 0,this.keyLoaderInfo={},this.emeController=null,this.config=e}abort(e){for(let i in this.keyLoaderInfo){let s=this.keyLoaderInfo[i].loader;if(s){var t;if(e&&e!==((t=s.context)==null?void 0:t.frag.type))return;s.abort()}}}destroy(){for(let e in this.keyLoaderInfo){let t=this.keyLoaderInfo[e].loader;t&&t.destroy()}this.emeController=null,this.keyLoaderInfo={}}loadClear(e,t,i){return this.emeController?this.emeController.loadClear(e,t,i):null}load(e,t){return!e.decryptdata&&e.encrypted&&this.emeController&&this.config.emeEnabled?this.emeController.selectKeySystemFormat(e).then(i=>this.loadInternal(e,t,i)):this.loadInternal(e,t)}loadInternal(e,t,i){i&&e.setKeyFormat(i);let s=e.decryptdata;if(!s){let a=new Error(i?`Expected frag.decryptdata to be defined after setting format ${i}`:`Missing decryption data on fragment in onKeyLoading (emeEnabled with controller: ${this.emeController&&this.config.emeEnabled})`);return Promise.reject(mt(e,L.KEY_LOAD_ERROR,a))}let n=e;switch(s.method){case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return s.keyFormat==="identity"?this.loadKeyHTTP(n):t?t.then(()=>this.loadKeyEME(n)):this.loadKeyEME(n);case"AES-128":case"AES-256":case"AES-256-CTR":return this.loadKeyHTTP(n);default:return Promise.reject(mt(e,L.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${s.method}"`)))}}loadKeyEME(e){if(this.emeController&&this.config.emeEnabled){var t;if(!e.decryptdata.keyId&&(t=e.initSegment)!=null&&t.data){let i=Nc(e.initSegment.data);if(i.length){let s=i[0],n=e.decryptdata.uri;if(s.some(a=>a!==0))this.log(`Using keyId found in init segment ${Ie(s)} keyUri: ${n}`),Mt.setKeyIdForUri(n,s);else{let a=Mt.addKeyIdForUri(n);this.log(`Patching empty keyId with ${Ie(a)} keyUri: ${n}`),s=a}e.decryptdata.keyId=s}}return this.emeController.loadKey(e).then(()=>({frag:e,keyInfo:{decryptdata:e.decryptdata}}))}return Promise.reject(mt(e,L.KEY_LOAD_ERROR,new Error(`emeEnabled with controller: ${this.emeController&&this.config.emeEnabled})`)))}loadKeyHTTP(e){let t=e.decryptdata,i=t.uri;if(!i)return Promise.reject(mt(e,L.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${i}"`)));let s=this.keyLoaderInfo[i];if(s){if(s.decryptdata.key)return t.key=s.decryptdata.key,s.keyLoadPromise=null,Promise.resolve({frag:e,keyInfo:s});if(s.keyLoadPromise)return s.keyLoadPromise.then(d=>(t.key=s.decryptdata.key,Y(Y({},d),{},{frag:e})))}this.log(`Loading${t.keyId?" keyId: "+Ie(t.keyId):""} URI: ${t.uri} from ${e.type} ${e.level}`);let n=this.config,a=n.loader,o=new a(n);e.keyLoader=o;let l=this.keyLoaderInfo[i]={decryptdata:t,keyLoadPromise:null,loader:o};return l.keyLoadPromise=new Promise((d,c)=>{let h={type:te.KEY,keyInfo:l,frag:e,responseType:"arraybuffer",url:i},u=n.keyLoadPolicy.default,f={loadPolicy:u,timeout:u.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},g={onSuccess:(m,p,v,T)=>{let{frag:E,keyInfo:S,url:b}=v;if(!E.decryptdata||S!==this.keyLoaderInfo[b])return c(mt(E,L.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),T));S.decryptdata.key=E.decryptdata.key=new Uint8Array(m.data),E.keyLoader=S.loader=S.keyLoadPromise=null,d({frag:E,keyInfo:S})},onError:(m,p,v,T)=>{this.resetLoader(p),c(mt(e,L.KEY_LOAD_ERROR,new Error(`HTTP Error ${m.code} loading key ${m.text}`),v,Y({url:i,data:void 0},m)))},onTimeout:(m,p,v)=>{this.resetLoader(p),c(mt(e,L.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),v))},onAbort:(m,p,v)=>{this.resetLoader(p),c(mt(e,L.INTERNAL_ABORTED,new Error("key loading aborted"),v))}};o.load(h,f,g)})}resetLoader(e){let{frag:t,keyInfo:i,url:s}=e,n=i.loader;t.keyLoader===n&&(t.keyLoader=i.loader=i.keyLoadPromise=null),delete this.keyLoaderInfo[s],n&&n.destroy()}};function mt(r,e=L.KEY_LOAD_ERROR,t,i,s){return new We({type:W.NETWORK_ERROR,details:e,fatal:!1,frag:r,response:s,error:t,networkDetails:i||null})}function Ko(r){let{type:e}=r;switch(e){case te.AUDIO_TRACK:return H.AUDIO;case te.SUBTITLE_TRACK:return H.SUBTITLE;default:return H.MAIN}}function Sn(r,e){let t=r.url;return(t===void 0||t.indexOf("data:")===0)&&(t=e.url),t}var Kr=class{constructor(e){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.onManifestLoaded=this.checkAutostartLoad,this.hls=e,this.registerListeners()}startLoad(e){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){let{hls:e}=this;e.on(y.MANIFEST_LOADING,this.onManifestLoading,this),e.on(y.LEVEL_LOADING,this.onLevelLoading,this),e.on(y.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.on(y.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this),e.on(y.LEVELS_UPDATED,this.onLevelsUpdated,this)}unregisterListeners(){let{hls:e}=this;e.off(y.MANIFEST_LOADING,this.onManifestLoading,this),e.off(y.LEVEL_LOADING,this.onLevelLoading,this),e.off(y.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.off(y.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this),e.off(y.LEVELS_UPDATED,this.onLevelsUpdated,this)}createInternalLoader(e){let t=this.hls.config,i=t.pLoader,s=t.loader,n=i||s,a=new n(t);return this.loaders[e.type]=a,a}getInternalLoader(e){return this.loaders[e.type]}resetInternalLoader(e){this.loaders[e]&&delete this.loaders[e]}destroyInternalLoaders(){for(let e in this.loaders){let t=this.loaders[e];t&&t.destroy(),this.resetInternalLoader(e)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(e,t){let{url:i}=t;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:te.MANIFEST,url:i,deliveryDirectives:null,levelOrTrack:null})}onLevelLoading(e,t){let{id:i,level:s,pathwayId:n,url:a,deliveryDirectives:o,levelInfo:l}=t;this.load({id:i,level:s,pathwayId:n,responseType:"text",type:te.LEVEL,url:a,deliveryDirectives:o,levelOrTrack:l})}onAudioTrackLoading(e,t){let{id:i,groupId:s,url:n,deliveryDirectives:a,track:o}=t;this.load({id:i,groupId:s,level:null,responseType:"text",type:te.AUDIO_TRACK,url:n,deliveryDirectives:a,levelOrTrack:o})}onSubtitleTrackLoading(e,t){let{id:i,groupId:s,url:n,deliveryDirectives:a,track:o}=t;this.load({id:i,groupId:s,level:null,responseType:"text",type:te.SUBTITLE_TRACK,url:n,deliveryDirectives:a,levelOrTrack:o})}onLevelsUpdated(e,t){let i=this.loaders[te.LEVEL];if(i){let s=i.context;s&&!t.levels.some(n=>n===s.levelOrTrack)&&(i.abort(),delete this.loaders[te.LEVEL])}}load(e){var t;let i=this.hls.config,s=this.getInternalLoader(e);if(s){let d=this.hls.logger,c=s.context;if(c?.levelOrTrack===e.levelOrTrack&&(c.url===e.url||c.deliveryDirectives&&!e.deliveryDirectives)){c.url===e.url?d.log(`[playlist-loader]: ignore ${e.url} ongoing request`):d.log(`[playlist-loader]: ignore ${e.url} in favor of ${c.url}`);return}d.log(`[playlist-loader]: aborting previous loader for type: ${e.type}`),s.abort()}let n;if(e.type===te.MANIFEST?n=i.manifestLoadPolicy.default:n=ce({},i.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),s=this.createInternalLoader(e),B((t=e.deliveryDirectives)==null?void 0:t.part)){let d;if(e.type===te.LEVEL&&e.level!==null?d=this.hls.levels[e.level].details:e.type===te.AUDIO_TRACK&&e.id!==null?d=this.hls.audioTracks[e.id].details:e.type===te.SUBTITLE_TRACK&&e.id!==null&&(d=this.hls.subtitleTracks[e.id].details),d){let c=d.partTarget,h=d.targetduration;if(c&&h){let u=Math.max(c*3,h*.8)*1e3;n=ce({},n,{maxTimeToFirstByteMs:Math.min(u,n.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(u,n.maxTimeToFirstByteMs)})}}}let a=n.errorRetry||n.timeoutRetry||{},o={loadPolicy:n,timeout:n.maxLoadTimeMs,maxRetry:a.maxNumRetry||0,retryDelay:a.retryDelayMs||0,maxRetryDelay:a.maxRetryDelayMs||0},l={onSuccess:(d,c,h,u)=>{let f=this.getInternalLoader(h);this.resetInternalLoader(h.type);let g=d.data;c.parsing.start=performance.now(),Et.isMediaPlaylist(g)||h.type!==te.MANIFEST?this.handleTrackOrLevelPlaylist(d,c,h,u||null,f):this.handleMasterPlaylist(d,c,h,u)},onError:(d,c,h,u)=>{this.handleNetworkError(c,h,!1,d,u)},onTimeout:(d,c,h)=>{this.handleNetworkError(c,h,!0,void 0,d)}};s.load(e,o,l)}checkAutostartLoad(){if(!this.hls)return;let{config:{autoStartLoad:e,startPosition:t},forceStartLoad:i}=this.hls;(e||i)&&(this.hls.logger.log(`${e?"auto":"force"} startLoad with configured startPosition ${t}`),this.hls.startLoad(t))}handleMasterPlaylist(e,t,i,s){let n=this.hls,a=e.data,o=Sn(e,i),l=Et.parseMasterPlaylist(a,o);if(l.playlistParsingError){t.parsing.end=performance.now(),this.handleManifestParsingError(e,i,l.playlistParsingError,s,t);return}let{contentSteering:d,levels:c,iframeVariants:h,sessionData:u,sessionKeys:f,startTimeOffset:g,variableList:m}=l;this.variableList=m,c.forEach(E=>{let{unknownCodecs:S}=E;if(S){let{preferManagedMediaSource:b}=this.hls.config,{audioCodec:A,videoCodec:x}=E;for(let R=S.length;R--;){let P=S[R];fi(P,"audio",b)?(E.audioCodec=A=A?`${A},${P}`:P,Kt.audio[A.substring(0,4)]=2,S.splice(R,1)):fi(P,"video",b)&&(E.videoCodec=x=x?`${x},${P}`:P,Kt.video[x.substring(0,4)]=2,S.splice(R,1))}}});let{AUDIO:p=[],SUBTITLES:v,"CLOSED-CAPTIONS":T}=Et.parseMasterPlaylistMedia(a,o,l);p.length&&!p.some(S=>!S.url)&&c[0].audioCodec&&!c[0].attrs.AUDIO&&(this.hls.logger.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),p.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new pe({}),bitrate:0,url:""})),n.trigger(y.MANIFEST_LOADED,{levels:c,audioTracks:p,subtitles:v,iframeVariants:h,captions:T,contentSteering:d,url:o,stats:t,networkDetails:s,sessionData:u,sessionKeys:f,startTimeOffset:g,variableList:m})}handleTrackOrLevelPlaylist(e,t,i,s,n){let a=this.hls,{id:o,level:l,type:d}=i,c=Sn(e,i),h=B(l)?l:B(o)?o:0,u=Ko(i),f=Et.parseLevelPlaylist(e.data,c,h,u,0,this.variableList);if(d===te.MANIFEST){let g={attrs:new pe({}),bitrate:0,details:f,name:"",url:c};f.requestScheduled=t.loading.start+Ol(f,0),a.trigger(y.MANIFEST_LOADED,{levels:[g],audioTracks:[],iframeVariants:[],url:c,stats:t,networkDetails:s,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}t.parsing.end=performance.now(),i.levelDetails=f,this.handlePlaylistLoaded(f,e,t,i,s,n)}handleManifestParsingError(e,t,i,s,n){this.hls.trigger(y.ERROR,{type:W.NETWORK_ERROR,details:L.MANIFEST_PARSING_ERROR,fatal:t.type===te.MANIFEST,url:e.url,err:i,error:i,reason:i.message,response:e,context:t,networkDetails:s,stats:n})}handleNetworkError(e,t,i=!1,s,n){let a=`A network ${i?"timeout":"error"+(s?" (status "+s.code+")":"")} occurred while loading ${e.type}`;e.type===te.LEVEL?a+=`: ${e.level} id: ${e.id}`:(e.type===te.AUDIO_TRACK||e.type===te.SUBTITLE_TRACK)&&(a+=` id: ${e.id} group-id: "${e.groupId}"`);let o=new Error(a);this.hls.logger.warn(`[playlist-loader]: ${a}`);let l=L.UNKNOWN,d=!1,c=this.getInternalLoader(e);switch(e.type){case te.MANIFEST:l=i?L.MANIFEST_LOAD_TIMEOUT:L.MANIFEST_LOAD_ERROR,d=!0;break;case te.LEVEL:l=i?L.LEVEL_LOAD_TIMEOUT:L.LEVEL_LOAD_ERROR,d=!1;break;case te.AUDIO_TRACK:l=i?L.AUDIO_TRACK_LOAD_TIMEOUT:L.AUDIO_TRACK_LOAD_ERROR,d=!1;break;case te.SUBTITLE_TRACK:l=i?L.SUBTITLE_TRACK_LOAD_TIMEOUT:L.SUBTITLE_LOAD_ERROR,d=!1;break}c&&this.resetInternalLoader(e.type);let h={type:W.NETWORK_ERROR,details:l,fatal:d,url:e.url,loader:c,context:e,error:o,networkDetails:t,stats:n};if(s){let u=e.url;t&&"url"in t&&(u=t.url),h.response=Y({url:u,data:void 0},s)}this.hls.trigger(y.ERROR,h)}handlePlaylistLoaded(e,t,i,s,n,a){let o=this.hls,{type:l,level:d,levelOrTrack:c,id:h,groupId:u,deliveryDirectives:f}=s,g=Sn(t,s),m=Ko(s),p=typeof s.level=="number"&&m===H.MAIN?d:void 0;c&&"iframes"in c&&c.iframes&&!e.iframesOnly&&(e.playlistParsingError=new Error("EXT-X-I-FRAME-STREAM-INF media playlist MUST contain an EXT-X-I-FRAMES-ONLY tag"),e.iframesOnly=!0);let v=e.playlistParsingError;if(v){if(this.hls.logger.warn(`${v} ${e.url}`),!o.config.ignorePlaylistParsingErrors){o.trigger(y.ERROR,{type:W.NETWORK_ERROR,details:L.LEVEL_PARSING_ERROR,fatal:!1,url:g,error:v,reason:v.message,response:t,context:s,level:p,parent:m,networkDetails:n,stats:i});return}e.playlistParsingError=null}if(!e.fragments.length){let T=e.playlistParsingError=new Error("No Segments found in Playlist");o.trigger(y.ERROR,{type:W.NETWORK_ERROR,details:L.LEVEL_EMPTY_ERROR,fatal:!1,url:g,error:T,reason:T.message,response:t,context:s,level:p,parent:m,networkDetails:n,stats:i});return}switch(e.live&&a&&(a.getCacheAge&&(e.ageHeader=a.getCacheAge()||0),(!a.getCacheAge||isNaN(e.ageHeader))&&(e.ageHeader=0)),l){case te.MANIFEST:case te.LEVEL:if(p){if(!c)p=0;else if(c!==o.levels[p]){let T=o.levels.indexOf(c);T>-1&&(p=T)}}o.trigger(y.LEVEL_LOADED,{details:e,levelInfo:c||o.levels[0],level:p||0,id:h||0,stats:i,networkDetails:n,deliveryDirectives:f,withoutMultiVariant:l===te.MANIFEST,context:s});break;case te.AUDIO_TRACK:o.trigger(y.AUDIO_TRACK_LOADED,{details:e,track:c,id:h||0,groupId:u||"",stats:i,networkDetails:n,deliveryDirectives:f,context:s});break;case te.SUBTITLE_TRACK:o.trigger(y.SUBTITLE_TRACK_LOADED,{details:e,track:c,id:h||0,groupId:u||"",stats:i,networkDetails:n,deliveryDirectives:f,context:s});break}}},xt=class r{static get version(){return Ei}static isMSESupported(){return kd()}static isSupported(){return fg()}static getMediaSource(){return bt()}static get Events(){return y}static get MetadataSchema(){return Me}static get ErrorTypes(){return W}static get ErrorDetails(){return L}static get DefaultConfig(){return r.defaultConfig?r.defaultConfig:Vg}static set DefaultConfig(e){r.defaultConfig=e}constructor(e={}){this.config=void 0,this.userConfig=void 0,this.logger=void 0,this._url=null,this.streamController=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this._emitter=new ta,this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.audioStreamController=void 0,this.subtititleStreamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.interstitialsController=void 0,this.iframeController=void 0,this.gapController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this._sessionId=void 0,this.triggeringException=void 0,this.started=!1;let t=this.logger=cc(e.debug||!1,"Hls instance",e.loggerId||e.assetPlayerId),i=this.config=Kg(r.DefaultConfig,e,t);this.userConfig=e,i.progressive&&qg(i,t);let{streamController:s,abrController:n,bufferController:a,capLevelController:o,errorController:l,fpsController:d,id3TrackController:c,iframeController:h,gapController:u}=i,f=new l(this),g=this.abrController=new n(this),m=new wn(this),p=i.interstitialsController,v=p?this.interstitialsController=new p(this,r):null,T=a?this.bufferController=new a(this,m):null,E=o?this.capLevelController=new o(this):null,S=d?new d(this):null,b=i.cmcdController,A=b?this.cmcdController=new b(this):null,x=new Kr(this),R=i.contentSteeringController,P=R?new R(this):null,I=this.levelController=new Vr(this,P),k=c?new c(this):void 0,D=new Hr(this.config,this.logger),F=this.streamController=new s(this,m,D),G=this.gapController=u?new u(this,m):void 0;E&&E.setStreamController(F);let $=[x,I,F];v&&$.splice(1,0,v),P&&$.splice(1,0,P),this.networkControllers=$;let C=[g];T&&C.push(T),G&&C.push(G),E&&C.push(E),S&&(S.setStreamController(F),C.push(S)),k&&C.push(k),C.push(m),this.audioTrackController=this.createController(i.audioTrackController,$);let M=i.audioStreamController;M&&$.push(this.audioStreamController=new M(this,m,D)),this.subtitleTrackController=this.createController(i.subtitleTrackController,$);let w=i.subtitleStreamController;w&&$.push(this.subtititleStreamController=new w(this,m,D)),this.createController(i.timelineController,C),D.emeController=this.emeController=this.createController(i.emeController,C),A&&C.push(A),this.latencyController=this.createController(i.latencyController,C),this.coreComponents=C,this.iframeController=h?new h(this,r):void 0,$.push(f);let N=f.onErrorOut;typeof N=="function"&&this.on(y.ERROR,N,f),this.on(y.MANIFEST_LOADED,x.onManifestLoaded,x)}createController(e,t){if(e){let i=new e(this);return t&&t.push(i),i}return null}on(e,t,i=this){this._emitter.on(e,t,i)}once(e,t,i=this){this._emitter.once(e,t,i)}removeAllListeners(e){this._emitter.removeAllListeners(e)}off(e,t,i=this,s){this._emitter.off(e,t,i,s)}listeners(e){return this._emitter.listeners(e)}emit(e,t,i){return this._emitter.emit(e,t,i)}trigger(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(i){if(this.logger.error("An internal error happened while handling event "+e+'. Error message: "'+i.message+'". Here is a stacktrace:',i),!this.triggeringException){this.triggeringException=!0;let s=e===y.ERROR;this.trigger(y.ERROR,{type:W.OTHER_ERROR,details:L.INTERNAL_EXCEPTION,fatal:s,event:e,error:i}),this.triggeringException=!1}}return!1}listenerCount(e){return this._emitter.listenerCount(e)}destroy(){this.logger.log("destroy"),this.trigger(y.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this._url=null,this.networkControllers.forEach(t=>t.destroy()),this.networkControllers.length=0,this.coreComponents.forEach(t=>t.destroy()),this.coreComponents.length=0,this.iframeController=void 0;let e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null}attachMedia(e){if(!e||"media"in e&&!e.media){let n=new Error(`attachMedia failed: invalid argument (${e})`);this.trigger(y.ERROR,{type:W.OTHER_ERROR,details:L.ATTACH_MEDIA_ERROR,fatal:!0,error:n});return}this.logger.log("attachMedia"),this._media&&(this.logger.warn("media must be detached before attaching"),this.detachMedia());let t="media"in e,i=t?e.media:e,s=t?e:{media:i};this._media=i,this.trigger(y.MEDIA_ATTACHING,s)}detachMedia(){this.logger.log("detachMedia");let e={};this.trigger(y.MEDIA_DETACHING,e),this._media=null,this.trigger(y.MEDIA_DETACHED,e)}transferMedia(){var e;this._media=null;let t=((e=this.bufferController)==null?void 0:e.transferMedia())||null,i={transferMedia:t};return this.trigger(y.MEDIA_DETACHING,i),this.trigger(y.MEDIA_DETACHED,i),t}loadSource(e){var t;this.stopLoad();let i=this.media,s=this._url,n=this._url=qr.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.logger.log(`loadSource:${n}`),i&&s&&(s!==n||(t=this.bufferController)!=null&&t.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(i)),this.trigger(y.MANIFEST_LOADING,{url:e})}get url(){return this._url}get hasEnoughToStart(){return this.streamController.hasEnoughToStart}get startPosition(){return this.streamController.startPositionValue}startLoad(e=-1,t){this.logger.log(`startLoad(${e+(t?", <skip seek to start>":"")})`),this.started=!0,this.resumeBuffering();for(let i=0;i<this.networkControllers.length&&(this.networkControllers[i].startLoad(e,t),!(!this.started||!this.networkControllers));i++);}stopLoad(){this.logger.log("stopLoad"),this.started=!1;for(let e=0;e<this.networkControllers.length&&(this.networkControllers[e].stopLoad(),!(this.started||!this.networkControllers));e++);}get loadingEnabled(){return this.started&&this.streamController.state!==_.STOPPED}get bufferingEnabled(){return this.streamController.bufferingEnabled}resumeBuffering(){this.bufferingEnabled||(this.logger.log("resume buffering"),this.networkControllers.forEach(e=>{e.resumeBuffering&&e.resumeBuffering()}))}pauseBuffering(){this.bufferingEnabled&&(this.logger.log("pause buffering"),this.networkControllers.forEach(e=>{e.pauseBuffering&&e.pauseBuffering()}))}get inFlightFragments(){let e={[H.MAIN]:this.streamController.inFlightFrag};return this.audioStreamController&&(e[H.AUDIO]=this.audioStreamController.inFlightFrag),this.subtititleStreamController&&(e[H.SUBTITLE]=this.subtititleStreamController.inFlightFrag),e}swapAudioCodec(){this.logger.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){this.logger.log("recoverMediaError");let e=this._media,t=this.started,i=e?.currentTime;this.detachMedia(),e&&(this.attachMedia(e),t&&(i?this.startLoad(i):this.config.autoStartLoad||this.startLoad()))}removeLevel(e){this.levelController.removeLevel(e)}get sessionId(){let e=this._sessionId;return e||(e=this._sessionId=Qo()),e}get levels(){let e=this.levelController.levels;return e||[]}get latestLevelDetails(){return this.streamController.getLevelDetails()||null}get loadLevelObj(){return this.levelController.loadLevelObj}get currentLevel(){return this.streamController.currentLevel}set currentLevel(e){this.logger.log(`set currentLevel:${e}`),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(e){this.logger.log(`set nextLevel:${e}`),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(e){this.logger.log(`set loadLevel:${e}`),this.levelController.manualLevel=e}get nextLoadLevel(){return this.levelController.nextLoadLevel}set nextLoadLevel(e){this.levelController.nextLoadLevel=e}get firstLevel(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)}set firstLevel(e){this.logger.log(`set firstLevel:${e}`),this.levelController.firstLevel=e}get startLevel(){let e=this.levelController.startLevel;return e===-1&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e}set startLevel(e){this.logger.log(`set startLevel:${e}`),e!==-1&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(e){let t=this.capLevelController,i=!!e;t&&i!==this.config.capLevelToPlayerSize&&(i?t.startCapping():(t.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=i)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){let{bwEstimator:e}=this.abrController;return e?e.getEstimate():NaN}set bandwidthEstimate(e){this.abrController.resetEstimator(e)}get abrEwmaDefaultEstimate(){let{bwEstimator:e}=this.abrController;return e?e.defaultEstimate:NaN}get ttfbEstimate(){let{bwEstimator:e}=this.abrController;return e?e.getEstimateTTFB():NaN}set autoLevelCapping(e){this._autoLevelCapping!==e&&(this.logger.log(`set autoLevelCapping:${e}`),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(e){hh(e)&&this._maxHdcpLevel!==e&&(this._maxHdcpLevel=e,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return this.levelController.manualLevel===-1}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){let{levels:e,config:{minAutoBitrate:t}}=this;if(!e)return 0;let i=e.length;for(let s=0;s<i;s++)if(e[s].maxBitrate>=t)return s;return 0}get maxAutoLevel(){let{levels:e,autoLevelCapping:t,maxHdcpLevel:i}=this,s;if(t===-1&&e!=null&&e.length?s=e.length-1:s=t,i)for(let n=s;n--;){let a=e[n].attrs["HDCP-LEVEL"];if(a&&a<=i)return n}return s}get firstAutoLevel(){return this.abrController.firstAutoLevel}get nextAutoLevel(){return this.abrController.nextAutoLevel}set nextAutoLevel(e){this.abrController.nextAutoLevel=e}get playingDate(){return this.streamController.currentProgramDateTime}get mainForwardBufferInfo(){return this.streamController.getMainFwdBufferInfo()}get audioForwardBufferInfo(){var e;return((e=this.audioStreamController)==null?void 0:e.getFwdBufferInfo())||null}get maxBufferLength(){return this.streamController.maxBufferLength}setAudioOption(e){var t;return((t=this.audioTrackController)==null?void 0:t.setAudioOption(e))||null}setSubtitleOption(e){var t;return((t=this.subtitleTrackController)==null?void 0:t.setSubtitleOption(e))||null}get allAudioTracks(){let e=this.audioTrackController;return e?e.allAudioTracks:[]}get audioTracks(){let e=this.audioTrackController;return e?e.audioTracks:[]}get audioTrack(){let e=this.audioTrackController;return e?e.audioTrack:-1}set audioTrack(e){let t=this.audioTrackController;t&&(t.audioTrack=e)}get nextAudioTrack(){var e,t;return(e=(t=this.audioStreamController)==null?void 0:t.nextAudioTrack)!=null?e:-1}set nextAudioTrack(e){let{audioTrackController:t}=this;t&&(t.nextAudioTrack=e)}get allSubtitleTracks(){let e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}get subtitleTracks(){let e=this.subtitleTrackController;return e?e.subtitleTracks:[]}get subtitleTrack(){let e=this.subtitleTrackController;return e?e.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(e){let t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}get subtitleDisplay(){let e=this.subtitleTrackController;return e?e.subtitleDisplay:!1}set subtitleDisplay(e){let t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(e){this.config.lowLatencyMode=e}get liveSyncPosition(){var e,t;return(e=(t=this.latencyController)==null?void 0:t.liveSyncPosition)!=null?e:null}get latency(){var e;return((e=this.latencyController)==null?void 0:e.latency)||0}get maxLatency(){var e;return((e=this.latencyController)==null?void 0:e.maxLatency)||0}get targetLatency(){var e;return((e=this.latencyController)==null?void 0:e.targetLatency)||null}set targetLatency(e){this.latencyController&&(this.latencyController.targetLatency=e)}get drift(){var e;return((e=this.latencyController)==null?void 0:e.drift)||null}get forceStartLoad(){return this.streamController.forceStartLoad}get pathways(){return this.levelController.pathways}get pathwayPriority(){return this.levelController.pathwayPriority}set pathwayPriority(e){this.levelController.pathwayPriority=e}get bufferedToEnd(){var e;return!!((e=this.bufferController)!=null&&e.bufferedToEnd)}get interstitialsManager(){return this.interstitialsController?this.interstitialsController.interstitialsManager:null}get iframeVariants(){let e=this.levelController.iframeVariants;return e||[]}createIFramePlayer(e){return this._url&&this.iframeController?this.iframeController.createIFramePlayer(e):null}createImageIFramePlayer(e){return this._url&&this.iframeController?this.iframeController.createImageIFramePlayer(e):null}getMediaDecodingInfo(e,t=this.allAudioTracks){let i=Tl(t);return yl(e,i,navigator.mediaCapabilities)}};xt.defaultConfig=void 0;var xm=.045,ga={textSizeFraction:.045,foregroundColor:"#FFFFFF",backgroundColor:"rgba(0,0,0,0.5)",windowColor:"rgba(0,0,0,0)",edgeType:"NONE",edgeColor:"#000000",applyEmbeddedStyles:!0,fontFamily:null},he={NETWORK_CONNECTION_FAILED:2e3,NETWORK_TIMEOUT:2001,NETWORK_HTTP_STATUS:2002,SOURCE_MALFORMED:3e3,SOURCE_UNSUPPORTED:3001,SOURCE_NOT_FOUND:3002,DRM_LICENSE_FAILED:4e3,DRM_LICENSE_HTTP_STATUS:4001,DRM_TOKEN_FETCH_FAILED:4002,DRM_PROVISIONING_FAILED:4003,DRM_SESSION_EXPIRED:4004,DRM_UNSUPPORTED:4005,DECODER_INIT_FAILED:5e3,DECODING_FAILED:5001,AUDIO_OUTPUT_FAILED:5002,BEHIND_LIVE_WINDOW:6e3,UNKNOWN:9e3},Wg="1.0.3";var Yg={2e3:"NETWORK_CONNECTION_FAILED",2001:"NETWORK_TIMEOUT",2002:"NETWORK_HTTP_STATUS",3e3:"SOURCE_MALFORMED",3001:"SOURCE_UNSUPPORTED",3002:"SOURCE_NOT_FOUND",4e3:"DRM_LICENSE_FAILED",4001:"DRM_LICENSE_HTTP_STATUS",4002:"DRM_TOKEN_FETCH_FAILED",4003:"DRM_PROVISIONING_FAILED",4004:"DRM_SESSION_EXPIRED",4005:"DRM_UNSUPPORTED",5e3:"DECODER_INIT_FAILED",5001:"DECODING_FAILED",5002:"AUDIO_OUTPUT_FAILED",6e3:"BEHIND_LIVE_WINDOW",9e3:"UNKNOWN"};function Ee(r,e,t,i,s,n){return{code:r,category:e,message:t,retryable:i,codeName:Yg[r]??`HTTP_${r}`,...s!==void 0?{httpStatusCode:s}:{},...n!==void 0?{cause:n}:{}}}function Od(r){switch(r?.code){case MediaError.MEDIA_ERR_NETWORK:return Ee(he.NETWORK_CONNECTION_FAILED,"Network",r.message||"network error while fetching media",!0);case MediaError.MEDIA_ERR_DECODE:return Ee(he.DECODING_FAILED,"Renderer",r.message||"media decode failed",!0);case MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED:return Ee(he.SOURCE_UNSUPPORTED,"Source",r.message||"source not supported by this browser",!1);default:return Ee(he.UNKNOWN,"Unknown",r?.message||"unknown playback error",!0,void 0,r)}}function Fd(r){let e=r.response?.code,t=r.details;if(e&&e>=400){let i=e===404?he.SOURCE_NOT_FOUND:he.NETWORK_HTTP_STATUS;return Ee(i,e===404?"Source":"Network",`${t} (HTTP ${e})`,e>=500,e,r.error)}if(r.type==="keySystemError"||t.startsWith("keySystem"))return t.includes("NoAccess")||t.includes("NoConfiguredLicense")?Ee(he.DRM_UNSUPPORTED,"Drm","no supported DRM key system in this browser",!1,void 0,r.error):t.includes("ServerCertificate")?Ee(he.DRM_PROVISIONING_FAILED,"Drm",t,!0,void 0,r.error):t.includes("LicenseRequestFailed")?Ee(e?he.DRM_LICENSE_HTTP_STATUS:he.DRM_LICENSE_FAILED,"Drm",t,!0,e,r.error):t.includes("SessionUpdateFailed")||t.includes("NoKeys")||t.includes("StatusInternalError")?Ee(he.DRM_LICENSE_FAILED,"Drm",t,!0,void 0,r.error):t.includes("Expired")?Ee(he.DRM_SESSION_EXPIRED,"Drm",t,!0,void 0,r.error):Ee(he.DRM_LICENSE_FAILED,"Drm",t,!0,void 0,r.error);if(r.type==="networkError"){let i=t.includes("Timeout")||t.includes("TIMEOUT");return Ee(i?he.NETWORK_TIMEOUT:he.NETWORK_CONNECTION_FAILED,"Network",t,!0,void 0,r.error)}return r.type==="mediaError"?t.includes("Parsing")||t.includes("PARSING")||t.includes("manifest")?Ee(he.SOURCE_MALFORMED,"Source",t,!1,void 0,r.error):Ee(he.DECODING_FAILED,"Renderer",t,!0,void 0,r.error):t.includes("levelSwitch")||t.includes("liveBackBuffer")?Ee(he.BEHIND_LIVE_WINDOW,"Live",t,!0,void 0,r.error):Ee(he.UNKNOWN,"Unknown",t,!r.fatal,void 0,r.error)}var jg="MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEV4yKAojBJAh5bd1bJWOc75e4psyXk2HXRlis9YZMcG0fYB5RfkQISQ5hlNVHZisVGAAGV9Dg9tYRY8BbnJTzhg==",Nd=new Map;function Ns(r,e,t=jg){let i=`${r??""}|${e}|${t}`,s=Nd.get(i);return s||(s=zg(r,e,t),Nd.set(i,s)),s}async function zg(r,e,t){if(!r)return{licensed:!1,reason:"no license key set"};let i=r.split(".");if(i.length!==3||i[0]!=="OGP1")return{licensed:!1,reason:"malformed license key"};let s=Bd(i[1]),n=Bd(i[2]);if(!s||!n)return{licensed:!1,reason:"malformed payload"};if(!await Xg(s,n,t))return{licensed:!1,reason:"invalid signature"};let a;try{a=JSON.parse(new TextDecoder().decode(s))}catch{return{licensed:!1,reason:"unreadable payload"}}if(!(Array.isArray(a.apps)?a.apps:[]).some(d=>Zg(e,d)))return{licensed:!1,reason:`license not valid for ${e}`};let l=typeof a.exp=="string"?a.exp:"";return Jg(l)?{licensed:!1,reason:`license expired ${l}`}:{licensed:!0,licensee:typeof a.to=="string"?a.to:"unknown",edition:typeof a.ed=="string"?a.ed:"standard",exp:l}}async function Xg(r,e,t){try{let i=$d(t);if(!i)return!1;let s=await crypto.subtle.importKey("spki",ma(i),{name:"ECDSA",namedCurve:"P-256"},!1,["verify"]),n=Qg(e);return n?await crypto.subtle.verify({name:"ECDSA",hash:"SHA-256"},s,ma(n),ma(r)):!1}catch{return!1}}function Qg(r){let e=0;if(r[e++]!==48)return null;let t=r[e++];t&128&&(e+=t&127);let i=()=>{if(r[e++]!==2)return null;let o=r[e++];if(o&128)return null;let l=e;for(e+=o;o>32&&r[l]===0;)l++,o--;if(o>32)return null;let d=new Uint8Array(32);return d.set(r.slice(l,l+o),32-o),d},s=i(),n=i();if(!s||!n)return null;let a=new Uint8Array(64);return a.set(s,0),a.set(n,32),a}function Zg(r,e){return e.endsWith("*")?r.startsWith(e.slice(0,-1)):r===e}function Jg(r){if(!r)return!0;let e=new Date;return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`>r}function Bd(r){let e=r.replaceAll("-","+").replaceAll("_","/");for(;e.length%4!==0;)e+="=";return $d(e)}function $d(r){try{let e=atob(r),t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t}catch{return null}}function ma(r){return r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength)}function Gd(r,e,t,i,s){let n=!1,a=null,o=0,l=[],d=Ud(e.certificateUrl,void 0,"certificate"),c=async u=>{let{initDataType:f,initData:g}=u;if(!(n||!g))try{if(!a){a=await(await navigator.requestMediaKeySystemAccess("com.apple.fps",[{initDataTypes:[f],videoCapabilities:[{contentType:'video/mp4; codecs="avc1.42E01E"'}]}])).createMediaKeys();let v=await d;await a.setServerCertificate(v),await r.setMediaKeys(a)}let m=a.createSession();l.push(m),m.addEventListener("message",p=>{(async()=>{try{let v=o>0;o++;let T={};if(e.tokenProvider)try{T=await e.tokenProvider({licenseUrl:e.licenseUrl,renewal:v})}catch(S){throw{ogError:Ee(he.DRM_TOKEN_FETCH_FAILED,"Drm",`DRM token provider failed: ${S instanceof Error?S.message:"error"}`,!0,void 0,S)}}let E=await Ud(e.licenseUrl,{method:"POST",headers:{"Content-Type":"application/octet-stream",...e.headers,...T},body:p.message},"license");n||(await m.update(E),v?s?.():i?.())}catch(v){h(v)}})()}),await m.generateRequest(f,g)}catch(m){h(m)}},h=u=>{n||(u&&typeof u=="object"&&"ogError"in u?t(u.ogError):t(Ee(he.DRM_LICENSE_FAILED,"Drm",u instanceof Error?u.message:"FairPlay key exchange failed",!0,void 0,u)))};return r.addEventListener("encrypted",c),()=>{n=!0,r.removeEventListener("encrypted",c),l.forEach(u=>void u.close().catch(()=>{}))}}async function Ud(r,e,t){let i;try{i=await fetch(r,e)}catch(s){throw{ogError:Ee(t==="certificate"?he.DRM_PROVISIONING_FAILED:he.DRM_LICENSE_FAILED,"Drm",`FairPlay ${t} request failed: ${s instanceof Error?s.message:"network error"}`,!0,void 0,s)}}if(!i.ok)throw{ogError:Ee(he.DRM_LICENSE_HTTP_STATUS,"Drm",`FairPlay ${t} HTTP ${i.status}`,i.status>=500,i.status)};return i.arrayBuffer()}var em=/(?:(\d+):)?(\d{1,2}):(\d{2})(?:\.(\d{1,3}))?/;function Vd(r){let e=em.exec(r.trim());if(!e)return null;let t=Number(e[1]??0),i=Number(e[2]),s=Number(e[3]),n=e[4]?Number(e[4].padEnd(3,"0")):0;return((t*60+i)*60+s)*1e3+n}function tm(r,e){let t=[],i=r.split(/\r?\n/);for(let s=0;s<i.length;s++){let n=i[s];if(!n.includes("-->"))continue;let[a,o]=n.split("-->"),l=Vd(a??""),d=Vd(o??""),c=(i[s+1]??"").trim();if(l===null||d===null||!c)continue;let[h,u]=c.split("#"),f;try{f=new URL(h,e).toString()}catch{continue}let g=/xywh=(\d+),(\d+),(\d+),(\d+)/.exec(u??"");t.push({startMs:l,endMs:d,frame:g?{url:f,x:Number(g[1]),y:Number(g[2]),width:Number(g[3]),height:Number(g[4])}:{url:f,x:0,y:0,width:0,height:0}})}return t}var Bs=class{constructor(e){this.vttUrl=e}cues=null;loading=null;ensureLoaded(){return this.loading??=fetch(this.vttUrl).then(e=>e.ok?e.text():Promise.reject(new Error(`HTTP ${e.status}`))).then(e=>{this.cues=tm(e,this.vttUrl)}).catch(()=>{this.cues=[]}),this.loading}async frameAt(e){await this.ensureLoaded();let t=this.cues??[],i=t.find(s=>e>=s.startMs&&e<s.endMs)??t[t.length-1];return i&&e>=0?i.frame:null}};var im=12;function sm(r){if(!r)return"";try{let e=new Intl.DisplayNames(["en"],{type:"language"}).of(r);return!e||e===r?r:e.charAt(0).toUpperCase()+e.slice(1)}catch{return r}}var It=class{videoElement;hls=null;item=null;stateValue="IDLE";listeners=new Set;analyticsListeners=new Set;adListeners=new Set;progressTimer=null;snapshotTimer=null;opts;startedOnce=!1;didDispatchPause=!1;seekTargetMs=null;atLiveEdgeValue=!0;wasEnded=!1;licensedValue=!1;licenseListeners=new Set;loadGeneration=0;lastBitrate=-1;sideloadedDefaultId=null;nativeLoadListeners=[];detachDrm=null;sawEncrypted=!1;drmKeysAnnounced=!1;drmLicenseRequests=0;thumbnailTrack=null;lastDroppedTotal=0;breakResume=null;adsProvider=null;adContainer=null;attachedAdsProvider=null;pendingAdConfig=null;completedAdSessions=new Set;currentAdSessionKey=null;lastLoadedItem=null;lastStablePositionMs=0;pendingContentAutoplay=!0;isPlayingAdFlag=!1;adsPendingFlag=!1;adPausedFlag=!1;adProgressValue=null;adCuePointsValue=[];lastAdInfo=null;suppressAdBreakTransition=!1;hlsConfig=null;fallbackToMutedAutoplay=!1;holdPlayback=!1;constructor(e={}){this.opts={progressUpdateIntervalMs:e.progressUpdateIntervalMs??250,seekForwardIncrementMs:e.seekForwardIncrementMs??1e4,seekBackwardIncrementMs:e.seekBackwardIncrementMs??1e4,...e.licenseKey!==void 0?{licenseKey:e.licenseKey}:{}},this.hlsConfig=e.hlsConfig??null,this.fallbackToMutedAutoplay=e.fallbackToMutedAutoplay??!1,this.videoElement=document.createElement("video"),this.videoElement.playsInline=!0,this.videoElement.preload=e.preload??"auto",this.videoElement.crossOrigin="anonymous",this.bindVideoEvents(),Ns(this.opts.licenseKey,location.hostname).then(t=>{this.licensedValue=t.licensed,this.licenseListeners.forEach(i=>i(t.licensed))})}get state(){return this.stateValue}get isPlaying(){return!this.videoElement.paused&&!this.videoElement.ended&&this.stateValue!=="IDLE"}get currentItem(){return this.item}get currentPositionMs(){return Math.max(0,this.videoElement.currentTime*1e3)}get durationMs(){let e=this.videoElement.duration;return Number.isFinite(e)?e*1e3:0}get bufferedPositionMs(){let e=this.videoElement.buffered,t=this.videoElement.currentTime;for(let i=0;i<e.length;i++)if(e.start(i)<=t&&t<=e.end(i))return e.end(i)*1e3;return this.currentPositionMs}get playbackSpeed(){return this.videoElement.playbackRate}set playbackSpeed(e){this.videoElement.playbackRate=e}get volume(){return this.videoElement.volume}set volume(e){this.videoElement.volume=Math.min(1,Math.max(0,e))}get isMuted(){return this.videoElement.muted}set isMuted(e){this.videoElement.muted=e}get isLooping(){return this.videoElement.loop}setLooping(e){this.videoElement.loop=e}setBufferRole(e){let t=e==="STANDBY";this.videoElement.preload=t?"metadata":"auto",this.hls&&(this.hls.config.maxBufferLength=t?10:30,this.hls.config.maxMaxBufferLength=t?10:600,this.hls.config.maxBufferSize=t?8e6:6e7,this.hls.config.backBufferLength=t?0:1/0)}volumeControlMode="PLAYER";get isLicensed(){return this.licensedValue}get seekForwardIncrementMs(){return this.opts.seekForwardIncrementMs}get seekBackwardIncrementMs(){return this.opts.seekBackwardIncrementMs}get isPlayingAd(){return this.isPlayingAdFlag}get adsPending(){return this.adsPendingFlag}get adPaused(){return this.adPausedFlag}get adProgress(){return this.adProgressValue}get adCuePoints(){return this.adCuePointsValue}get currentLoadGeneration(){return this.loadGeneration}subtitleStyle={...ga};subtitleTextScale=1;onLicenseChanged(e){this.licenseListeners.add(e)}addListener(e){this.listeners.add(e)}removeListener(e){this.listeners.delete(e)}addAnalyticsListener(e){this.analyticsListeners.add(e)}removeAnalyticsListener(e){this.analyticsListeners.delete(e)}addAdListener(e){this.adListeners.add(e)}removeAdListener(e){this.adListeners.delete(e)}dispatch(e){this.listeners.forEach(e)}emit(e){this.analyticsListeners.forEach(t=>t(e))}playlistItems=[];playlistPosition=-1;pendingPlaylistAdvanceAfterAds=!1;playlistAdvanceFallback=null;adScheduleSettled=!0;get playlist(){return this.playlistItems.slice()}get currentPlaylistIndex(){return this.playlistPosition}get nextPlaylistItem(){return this.playlistPosition<0?null:this.playlistItems[this.playlistPosition+1]??null}load(e,t={}){this.playlistItems=[],this.playlistPosition=-1,this.loadItemInternal(e,t)}loadPlaylist(e,t={}){let{startIndex:i=0,autoplay:s=!0}=t;if(e.length===0)throw new Error("loadPlaylist requires at least one item");let n=e[i];if(!n)throw new Error("startIndex out of range");this.playlistItems=e.slice(),this.playlistPosition=i,this.dispatch(a=>a.onPlaylistItemChanged?.(i,n)),this.loadItemInternal(n,{autoplay:s})}skipToNext(){let e=this.playlistPosition;e<0||!this.playlistItems[e+1]||(this.dispatch(t=>t.onPlaylistItemSkipped?.(e,e+1)),this.maybeAdvancePlaylist())}releasePendingPlaylistAdvance(){this.pendingPlaylistAdvanceAfterAds&&(this.pendingPlaylistAdvanceAfterAds=!1,this.playlistAdvanceFallback!==null&&(clearTimeout(this.playlistAdvanceFallback),this.playlistAdvanceFallback=null),setTimeout(()=>this.maybeAdvancePlaylist(),0))}maybeAdvancePlaylist(){let e=this.playlistPosition+1,t=this.playlistPosition>=0?this.playlistItems[e]:void 0;t&&(this.playlistPosition=e,this.dispatch(i=>i.onPlaylistItemChanged?.(e,t)),this.loadItemInternal(t,{autoplay:!0}))}loadItemInternal(e,t={}){this.pendingPlaylistAdvanceAfterAds=!1,this.playlistAdvanceFallback!==null&&(clearTimeout(this.playlistAdvanceFallback),this.playlistAdvanceFallback=null),this.adScheduleSettled=!0,this.videoElement.poster=e.posterUrl??"";let{startPositionMs:i=0,autoplay:s=!0}=t;if(this.lastLoadedItem=e,this.lastStablePositionMs=i,this.loadGeneration++,this.teardownSource(),this.item=e,this.startedOnce=!1,this.didDispatchPause=!1,this.wasEnded=!1,this.lastBitrate=-1,this.sawEncrypted=!1,this.drmKeysAnnounced=!1,this.drmLicenseRequests=0,this.lastDroppedTotal=0,this.thumbnailTrack=e.thumbnailTrackUrl?new Bs(e.thumbnailTrackUrl):null,this.resetAdSession(),this.breakResume=null,this.stateValue="IDLE",this.setState("BUFFERING"),this.emit({type:"BufferStart"}),this.attachSource(e,i),this.beginAdsIfNeeded(e,s),s&&!this.adsPendingFlag&&!this.holdPlayback){let n=this.loadGeneration;this.videoElement.play().catch(a=>{this.fallbackToMutedAutoplay&&n===this.loadGeneration&&a instanceof DOMException&&a.name==="NotAllowedError"&&!this.videoElement.muted&&(this.videoElement.muted=!0,this.videoElement.play().then(()=>{this.dispatch(o=>o.onMutedAutoplayFallback?.()),this.emit({type:"MutedAutoplayFallback"})}).catch(()=>{}))})}this.startProgressTimer(),this.startSnapshotTimer()}retry(){let e=this.lastLoadedItem;if(!e)return;let t=(e.streamType??"VOD")==="VOD";this.loadItemInternal(e,{startPositionMs:t?this.lastStablePositionMs:0})}attachSource(e,t){let i=e.url;if((/\.m3u8($|\?)/i.test(i)||i.includes("format=m3u8"))&&xt.isSupported()){let n=e.drm,a={};n?.widevine&&(a["com.widevine.alpha"]={licenseUrl:n.widevine.licenseUrl,...n.widevine.serverCertificateUrl?{serverCertificateUrl:n.widevine.serverCertificateUrl}:{}}),n?.playready&&(a["com.microsoft.playready"]={licenseUrl:n.playready.licenseUrl});let o={...n?.widevine?.headers,...n?.playready?.headers},l=new xt({...this.hlsConfig,renderTextTracksNatively:!0,...Object.keys(a).length>0?{emeEnabled:!0,drmSystems:a,licenseXhrSetup:async d=>{let c=this.drmLicenseRequests>0;this.drmLicenseRequests++;let h={};if(n?.tokenProvider)try{h=await n.tokenProvider({licenseUrl:n.widevine?.licenseUrl??n.playready?.licenseUrl??"",renewal:c})}catch(u){let f=Ee(he.DRM_TOKEN_FETCH_FAILED,"Drm",`DRM token provider failed: ${u instanceof Error?u.message:"error"}`,!0,void 0,u);throw this.dispatch(g=>g.onError?.(f)),this.emit({type:"Error",error:f}),u}for(let[u,f]of Object.entries({...o,...h}))d.setRequestHeader(u,f);c&&this.dispatch(u=>u.onDrmSessionRenewed?.("PROACTIVE"))}}:{}});this.hls=l,this.bindHlsEvents(l),l.loadSource(i),l.attachMedia(this.videoElement)}else{if(e.drm?.fairplay){let a=e.drm.tokenProvider?{...e.drm.fairplay,tokenProvider:e.drm.tokenProvider}:e.drm.fairplay;this.detachDrm=Gd(this.videoElement,a,o=>{this.dispatch(l=>l.onError?.(o)),this.emit({type:"Error",error:o})},()=>{this.drmKeysAnnounced||(this.drmKeysAnnounced=!0,this.emit({type:"DrmKeysLoaded"}))},()=>this.dispatch(o=>o.onDrmSessionRenewed?.("PROACTIVE")))}this.videoElement.src=i;let n=()=>{};this.videoElement.addEventListener("loadedmetadata",n,{once:!0}),this.nativeLoadListeners.push(["loadedmetadata",n])}if(t>0){let n=()=>{this.videoElement.currentTime=t/1e3};this.videoElement.addEventListener("loadedmetadata",n,{once:!0}),this.nativeLoadListeners.push(["loadedmetadata",n])}this.attachSideloadedSubtitles(e)}adSessionKey(e){let t=e.adBreaks?.adTagUri;return t?`${e.url}|${t}`:null}beginAdsIfNeeded(e,t){!e.adBreaks||!this.adsProvider||(this.currentAdSessionKey=this.adSessionKey(e),!(this.currentAdSessionKey&&this.completedAdSessions.has(this.currentAdSessionKey))&&(this.pendingContentAutoplay=t,this.adScheduleSettled=!1,this.adsPendingFlag=t,this.adContainer?this.startAdsSession(e.adBreaks):this.pendingAdConfig=e.adBreaks))}startAdsSession(e){let t=this.adsProvider,i=this.adContainer;!t||!i||(this.attachedAdsProvider!==t&&(t.attach(this.videoElement,i,this.adCallbacks),this.attachedAdsProvider=t),t.requestAds(e,this.pendingContentAutoplay))}resetAdSession(){this.attachedAdsProvider&&this.attachedAdsProvider!==this.adsProvider&&(this.attachedAdsProvider.destroy(),this.attachedAdsProvider=null),this.adsProvider?.destroy(),this.adContainer&&this.adContainer.replaceChildren(),this.pendingAdConfig=null,this.lastAdInfo=null,this.adCuePointsValue=[],this.adProgressValue=null,this.adPausedFlag=!1,this.adsPendingFlag=!1,this.suppressAdBreakTransition=!1,this.isPlayingAdFlag=!1}dispatchAd(e){this.adListeners.forEach(e)}adCallbacks={onContentPauseRequested:()=>{this.adsPendingFlag=!1,this.isPlayingAdFlag=!0,this.suppressAdBreakTransition=this.isPlaying,this.videoElement.pause(),this.adsProvider?.usesContentVideoElement&&(this.breakResume={positionMs:this.stateValue==="ENDED"?0:this.currentPositionMs,wasEnded:this.stateValue==="ENDED"},this.teardownSource())},onContentResumeRequested:()=>{if(this.adsPendingFlag=!1,this.isPlayingAdFlag=!1,this.adPausedFlag=!1,this.adProgressValue=null,this.breakResume&&this.item){let{positionMs:e,wasEnded:t}=this.breakResume;if(this.breakResume=null,this.videoElement.controls=!1,this.teardownSource(),!t)this.attachSource(this.item,e);else return}this.pendingContentAutoplay&&this.stateValue!=="ENDED"&&!this.holdPlayback?this.videoElement.play().catch(()=>{}):this.suppressAdBreakTransition=!1},onAdCuePoints:e=>{this.adCuePointsValue=e},onAllAdsCompleted:()=>{this.currentAdSessionKey&&this.completedAdSessions.add(this.currentAdSessionKey),this.adScheduleSettled=!0,this.releasePendingPlaylistAdvance()},onAdBreakStarted:(e,t)=>{this.playlistAdvanceFallback!==null&&(clearTimeout(this.playlistAdvanceFallback),this.playlistAdvanceFallback=null),this.dispatchAd(i=>i.onAdBreakStarted?.(e,t))},onAdStarted:e=>{this.lastAdInfo=e,this.adPausedFlag=!1,this.adProgressValue={positionMs:0,durationMs:e.durationMs,adIndex:e.positionInPod,adCount:e.podSize},this.dispatchAd(t=>t.onAdStarted?.(e))},onAdProgress:(e,t,i)=>{this.adProgressValue={positionMs:t,durationMs:i,adIndex:e.positionInPod,adCount:e.podSize},this.dispatchAd(s=>s.onAdProgress?.(e,t,i))},onAdPaused:e=>{this.adPausedFlag=!0,this.dispatchAd(t=>t.onAdPaused?.(e))},onAdResumed:e=>{this.adPausedFlag=!1,this.dispatchAd(t=>t.onAdResumed?.(e))},onAdSkipped:e=>{this.adProgressValue=null,this.dispatchAd(t=>t.onAdSkipped?.(e))},onAdCompleted:e=>{this.adProgressValue=null,this.dispatchAd(t=>t.onAdCompleted?.(e))},onAdBreakCompleted:e=>{if(e==="POSTROLL")this.adCuePointsValue=this.adCuePointsValue.filter(t=>t>=0);else{let t=this.videoElement.currentTime,i=this.adCuePointsValue.filter(s=>s>=0).sort((s,n)=>Math.abs(s-t)-Math.abs(n-t))[0];i!==void 0&&(this.adCuePointsValue=this.adCuePointsValue.filter(s=>s!==i))}this.dispatchAd(t=>t.onAdBreakCompleted?.(e))},onAdError:e=>{this.dispatchAd(t=>t.onAdError?.(e)),this.releasePendingPlaylistAdvance()}};play(){if(!this.holdPlayback){if(this.isPlayingAdFlag){this.adsProvider?.resume();return}this.adsProvider?.startPendingBreak()||(this.stateValue==="ENDED"&&(this.videoElement.currentTime=0),this.videoElement.play().catch(()=>{}))}}pause(){if(this.isPlayingAdFlag){this.adsProvider?.pause();return}this.videoElement.pause()}skipAd(){this.adsProvider?.skip()}clickAd(){this.adsProvider?.click()}get adCuePositionsMs(){return this.adCuePointsValue.map(e=>{if(e>=0)return Math.round(e*1e3);let t=this.durationMs;return t>0?Math.round(t):-1}).filter(e=>e>=0)}get hasThumbnails(){return this.thumbnailTrack!==null}getThumbnail(e){return this.thumbnailTrack?.frameAt(e)??Promise.resolve(null)}attachAdContainer(e){if(this.adContainer=e,this.pendingAdConfig){let t=this.pendingAdConfig;this.pendingAdConfig=null,this.startAdsSession(t)}}notifyAdViewResize(e,t,i){this.adsProvider?.resize(e,t,i)}seekTo(e){let t=this.currentPositionMs;this.seekTargetMs=e,this.dispatch(i=>i.onSeekStarted?.(t,e)),this.emit({type:"Seek",fromMs:Math.round(t),toMs:Math.round(e)}),this.videoElement.currentTime=e/1e3}seekForward(){this.seekTo(Math.min(this.durationMs||1/0,this.currentPositionMs+this.opts.seekForwardIncrementMs))}seekBackward(){this.seekTo(Math.max(0,this.currentPositionMs-this.opts.seekBackwardIncrementMs))}seekToLiveEdge(){let e=this.videoElement.seekable;e.length>0&&this.seekTo(e.end(e.length-1)*1e3)}release(){this.resetAdSession(),this.teardownSource(),this.stopProgressTimer(),this.stopSnapshotTimer(),this.listeners.clear(),this.analyticsListeners.clear(),this.adListeners.clear(),this.videoElement.remove()}teardownSource(){this.detachDrm?.(),this.detachDrm=null,this.hls?.destroy(),this.hls=null;for(let[e,t]of this.nativeLoadListeners)this.videoElement.removeEventListener(e,t);this.nativeLoadListeners=[],this.videoElement.controls=!1,this.videoElement.removeAttribute("src"),[...this.videoElement.querySelectorAll("track")].forEach(e=>e.remove()),this.sideloadedDefaultId=null}get audioTracks(){if(this.hls)return this.hls.audioTracks.map((t,i)=>{let s=parseInt(String(t.channels??"2"),10)||2,a=!t.name||/^stream[_-]?\d+$/i.test(t.name)||t.name===t.lang?`${sm(t.lang??"")||`Audio ${i+1}`}${s>2?" (5.1)":""}`:t.name;return{id:`a${i}`,label:a,language:t.lang||"",channelCount:s,isSelected:this.hls.audioTrack===i}});let e=this.videoElement.audioTracks;if(e&&typeof e=="object"&&"length"in e){let t=e,i=[];for(let s=0;s<t.length;s++){let n=t[s];i.push({id:`a${s}`,label:n.label||n.language||`Audio ${s+1}`,language:n.language,channelCount:2,isSelected:n.enabled})}return i}return[]}selectAudioTrack(e){let t=parseInt(e.slice(1),10);if(this.hls){this.hls.audioTrack=t;return}let i=this.videoElement.audioTracks;if(i){let s=i;for(let n=0;n<s.length;n++)s[n].enabled=n===t}}get textTracks(){let e=[],t=this.videoElement.textTracks;for(let i=0;i<t.length;i++){let s=t[i];if(s.kind!=="subtitles"&&s.kind!=="captions")continue;let n=s.id?.startsWith("ext-");e.push({id:n?s.id:`t${i}`,label:s.label||s.language||`Subtitles ${i+1}`,language:s.language||"",isSelected:s.mode==="showing"})}return e}selectTextTrack(e){let t=this.videoElement.textTracks;for(let i=0;i<t.length;i++){let s=t[i];if(s.kind!=="subtitles"&&s.kind!=="captions")continue;let n=s.id?.startsWith("ext-")?s.id:`t${i}`;s.mode=e!==null&&n===e?"showing":"disabled"}if(this.hls&&e!==null&&e.startsWith("t")){let i=parseInt(e.slice(1),10),s=-1,n=-1,a=this.videoElement.textTracks;for(let o=0;o<=i&&o<a.length;o++){let l=a[o].kind;(l==="subtitles"||l==="captions")&&n++,o===i&&(s=n)}s>=0&&s<this.hls.subtitleTracks.length&&(this.hls.subtitleTrack=s)}else this.hls&&e===null&&(this.hls.subtitleTrack=-1)}get videoQualities(){if(!this.hls)return[];let e=this.hls.currentLevel,t=this.hls.autoLevelEnabled,i=this.hls.levels.map((s,n)=>({id:`q${n}`,width:s.width,height:s.height,bitrate:s.bitrate,isSelected:!t&&e===n}));return i.unshift({id:"auto",width:0,height:0,bitrate:0,isSelected:t}),i}selectVideoQuality(e){this.hls&&(this.hls.currentLevel=e==="auto"?-1:parseInt(e.slice(1),10))}get liveInfo(){let e=this.item?.streamType??"VOD";if(e==="VOD"||!this.item)return null;let t=this.videoElement.seekable;if(t.length===0)return null;let i=t.start(0),s=t.end(t.length-1),n=this.videoElement.currentTime,a=Math.max(0,s-n),o=Math.max(0,(s-i)*1e3),l=null,d=this.videoElement.getStartDate?.();return d&&!Number.isNaN(d.getTime())?l=d.getTime()+n*1e3:this.hls?.playingDate&&(l=this.hls.playingDate.getTime()),{streamType:e,dvrWindowMs:o,atLiveEdge:a<=im,latencyMs:Math.round(a*1e3),playheadWallClockMs:l}}setState(e){this.stateValue!==e&&(this.stateValue=e,this.dispatch(t=>t.onStateChanged?.(e)))}bindVideoEvents(){let e=this.videoElement,t=()=>this.breakResume!==null;e.addEventListener("waiting",()=>{t()||this.stateValue!=="IDLE"&&(this.setState("BUFFERING"),this.emit({type:"BufferStart"}))}),e.addEventListener("canplay",()=>{t()||(this.stateValue==="BUFFERING"&&(this.setState("READY"),this.emit({type:"BufferEnd"})),this.sawEncrypted&&!this.drmKeysAnnounced&&(this.drmKeysAnnounced=!0,this.emit({type:"DrmKeysLoaded"})))}),e.addEventListener("encrypted",()=>{this.sawEncrypted=!0}),e.addEventListener("playing",()=>{if(!t()){if(this.holdPlayback){e.pause();return}if(this.isPlayingAdFlag&&(this.hls!==null&&e.currentSrc.startsWith("blob:")||this.item!==null&&e.currentSrc===this.item.url)){e.pause();return}if(this.stateValue==="BUFFERING"&&(this.setState("READY"),this.emit({type:"BufferEnd"})),this.suppressAdBreakTransition){this.suppressAdBreakTransition=!1,this.didDispatchPause=!1;return}this.dispatch(i=>i.onIsPlayingChanged?.(!0)),this.startedOnce?this.didDispatchPause&&this.dispatch(i=>i.onResume?.()):(this.startedOnce=!0,this.dispatch(i=>i.onPlay?.())),this.didDispatchPause=!1,this.emit({type:"Play"})}}),e.addEventListener("pause",()=>{t()||e.ended||this.stateValue==="IDLE"||this.suppressAdBreakTransition||this.isPlayingAdFlag||(this.didDispatchPause=!0,this.dispatch(i=>i.onIsPlayingChanged?.(!1)),this.dispatch(i=>i.onPause?.()),this.emit({type:"Pause"}))}),e.addEventListener("seeked",()=>{if(t())return;let i=this.currentPositionMs;this.seekTargetMs=null,this.dispatch(s=>s.onSeekCompleted?.(i))}),e.addEventListener("ended",()=>{t()||this.wasEnded||(this.wasEnded=!0,this.setState("ENDED"),this.dispatch(i=>i.onPlaybackCompleted?.()),this.emit({type:"Complete"}),this.adsProvider?.contentDidComplete(),!this.isPlayingAdFlag&&this.adScheduleSettled?this.maybeAdvancePlaylist():(this.pendingPlaylistAdvanceAfterAds=!0,this.playlistAdvanceFallback!==null&&(clearTimeout(this.playlistAdvanceFallback),this.playlistAdvanceFallback=null),this.isPlayingAdFlag||(this.playlistAdvanceFallback=setTimeout(()=>{this.playlistAdvanceFallback=null,this.pendingPlaylistAdvanceAfterAds&&(this.pendingPlaylistAdvanceAfterAds=!1,this.maybeAdvancePlaylist())},8e3))))}),e.addEventListener("error",()=>{if(t()||this.hls)return;let i=Od(e.error);this.dispatch(s=>s.onError?.(i)),this.emit({type:"Error",error:i})})}bindHlsEvents(e){e.on(xt.Events.LEVEL_SWITCHED,(t,i)=>{let s=e.levels[i.level];!s||s.bitrate===this.lastBitrate||(this.lastBitrate=s.bitrate,this.emit({type:"BitrateChanged",bitrate:s.bitrate,width:s.width,height:s.height,frameRate:s.frameRate||0}))}),e.on(xt.Events.ERROR,(t,i)=>{let s=Fd(i);i.fatal?(this.dispatch(n=>n.onError?.(s)),this.emit({type:"Error",error:s})):this.emit({type:"Error",error:s})})}attachSideloadedSubtitles(e){if((e.sideloadedSubtitles??[]).forEach((i,s)=>{let n=document.createElement("track");n.kind="subtitles",n.label=i.label,n.srclang=i.language,n.src=i.url,n.id=`ext-${s}`,this.videoElement.appendChild(n),i.isDefault&&(this.sideloadedDefaultId=`ext-${s}`),n.addEventListener("load",()=>{let a=n.track;a&&(a.mode=i.isDefault?"showing":"disabled")})}),this.sideloadedDefaultId){let i=this.sideloadedDefaultId,s=()=>this.selectTextTrack(i);this.videoElement.addEventListener("loadedmetadata",s,{once:!0}),this.nativeLoadListeners.push(["loadedmetadata",s])}}startProgressTimer(){this.stopProgressTimer(),this.progressTimer=window.setInterval(()=>{if(this.stateValue==="IDLE")return;this.stateValue==="READY"&&(this.lastStablePositionMs=Math.round(this.currentPositionMs)),this.dispatch(t=>t.onProgress?.(Math.round(this.currentPositionMs),Math.round(this.bufferedPositionMs),Math.round(this.durationMs)));let e=this.liveInfo;e&&e.atLiveEdge!==this.atLiveEdgeValue&&(this.atLiveEdgeValue=e.atLiveEdge,this.dispatch(t=>t.onLiveEdgeChanged?.(e.atLiveEdge)))},this.opts.progressUpdateIntervalMs)}stopProgressTimer(){this.progressTimer!==null&&(clearInterval(this.progressTimer),this.progressTimer=null)}startSnapshotTimer(){this.stopSnapshotTimer(),this.snapshotTimer=window.setInterval(()=>{if(this.stateValue==="IDLE"||!this.isPlaying)return;let e=this.videoElement.getVideoPlaybackQuality?.(),t=e?.droppedVideoFrames??0;t>this.lastDroppedTotal&&this.emit({type:"DroppedFrames",count:t-this.lastDroppedTotal,elapsedMs:1e4}),this.lastDroppedTotal=t,this.emit({type:"QualitySnapshot",positionMs:Math.round(this.currentPositionMs),bufferedMs:Math.round(this.bufferedPositionMs),bandwidthEstimateBps:Math.round(this.hls?.bandwidthEstimate??0),droppedFramesTotal:e?.droppedVideoFrames??0})},1e4)}stopSnapshotTimer(){this.snapshotTimer!==null&&(clearInterval(this.snapshotTimer),this.snapshotTimer=null)}};function jt(r){let e=r;return typeof e.serverUrl=="string"&&typeof e.networkId=="number"&&typeof e.profile=="string"&&typeof e.videoAssetId=="string"}function $s(r){let e=()=>String(Math.floor(Math.random()*1e9)),t=new URLSearchParams({nw:String(r.networkId),prof:r.profile,csid:r.siteSectionId,caid:r.videoAssetId,vdur:String(Math.round(r.videoDurationMs/1e3)),resp:"vmap1 vast4",pvrn:e(),vprn:e(),...r.globalParameters});return`${r.serverUrl.replace(/\/$/,"")}/ad/g/1?${t.toString()}`}var Hd=null;async function Kd(r){let e=async i=>{try{return await fetch(i,{mode:"no-cors",cache:"no-store"}),!0}catch{return!1}},t=[e("https://imasdk.googleapis.com/js/sdkloader/ima3.js"),e("https://pubads.g.doubleclick.net/gampad/ads?ad_type=probe")];if(r)try{let i=new URL(r).origin;i!=="https://pubads.g.doubleclick.net"&&t.push(e(i+"/"))}catch{}return(await Promise.all(t)).some(i=>!i)}function nm(){return window.google?.ima?Promise.resolve(window.google.ima):(Hd??=new Promise((r,e)=>{let t=document.createElement("script");t.src="https://imasdk.googleapis.com/js/sdkloader/ima3.js",t.async=!0,t.onload=()=>{let i=window.google?.ima;i?r(i):e(new Error("IMA SDK loaded but google.ima missing"))},t.onerror=()=>e(new Error("failed to load the IMA SDK (blocked by an ad blocker?)")),document.head.appendChild(t)}),Hd)}var Us=class{constructor(e={}){this.options=e}video=null;container=null;callbacks=null;ima=null;adDisplayContainer=null;adsLoader=null;adsManager=null;lastAd=null;lastBreakType=null;tagUrl=null;autostart=!0;started=!1;destroyed=!1;requestGeneration=0;verdictTimer=null;gotVerdict=!1;attach(e,t,i){this.video=e,this.container=t,this.callbacks=i}requestAds(e,t){this.autostart=t;let i=jt(e)?$s(e):e.adTagUri;if(typeof i!="string"||!i){this.callbacks?.onAdError({code:900,phase:"LOAD",message:"ImaAdsProvider needs an AdTagConfig with adTagUri"}),this.callbacks?.onContentResumeRequested();return}this.tagUrl=i;let s=++this.requestGeneration;this.gotVerdict=!1,this.verdictTimer!==null&&clearTimeout(this.verdictTimer),this.verdictTimer=window.setTimeout(()=>{this.destroyed||this.gotVerdict||s!==this.requestGeneration||Kd(this.tagUrl??void 0).then(n=>{this.destroyed||this.gotVerdict||(this.gotVerdict=!0,this.callbacks?.onAdError(n?{code:902,phase:"LOAD",message:"ads blocked by the browser (ad blocker detected)"}:{code:901,phase:"LOAD",message:"ad request produced no response in time"}),this.callbacks?.onContentResumeRequested())})},6e3),nm().then(n=>{this.destroyed||s!==this.requestGeneration||(this.ima=n,this.startSession(n,i))}).catch(n=>{this.settleVerdict(),this.callbacks?.onAdError({code:902,phase:"LOAD",message:n.message}),this.callbacks?.onContentResumeRequested()})}settleVerdict(){this.gotVerdict=!0,this.verdictTimer!==null&&(clearTimeout(this.verdictTimer),this.verdictTimer=null)}startSession(e,t){let i=this.video,s=this.container,n=this.options.vpaidMode??"enabled";e.settings.setVpaidMode(n==="insecure"?e.ImaSdkSettings.VpaidMode.INSECURE:n==="disabled"?e.ImaSdkSettings.VpaidMode.DISABLED:e.ImaSdkSettings.VpaidMode.ENABLED),this.adDisplayContainer??=new e.AdDisplayContainer(s,i),this.adDisplayContainer.initialize(),this.adsLoader?.destroy();let a=new e.AdsLoader(this.adDisplayContainer);this.adsLoader=a,a.addEventListener(e.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,d=>{this.settleVerdict();let c=new e.AdsRenderingSettings;c.uiElements=[],c.restoreCustomPlaybackStateOnAdBreakComplete=!0;let h=d.getAdsManager(i,c);this.adsManager=h,this.bindManager(e,h),this.callbacks?.onAdCuePoints(h.getCuePoints());let u=s.getBoundingClientRect();h.init(u.width,u.height,e.ViewMode.NORMAL),this.autostart&&(this.started=!0,h.start())}),a.addEventListener(e.AdErrorEvent.Type.AD_ERROR,d=>{this.settleVerdict();let c=d.getError();this.callbacks?.onAdError({code:c.getErrorCode(),phase:"LOAD",message:c.getMessage()}),this.callbacks?.onContentResumeRequested(),this.maybeFlagAdBlock()});let o=new e.AdsRequest;o.adTagUrl=t,o.setAdWillAutoPlay(this.autostart),o.setAdWillPlayMuted(i.muted);let l=s.getBoundingClientRect();o.linearAdSlotWidth=Math.round(l.width)||640,o.linearAdSlotHeight=Math.round(l.height)||360,o.nonLinearAdSlotWidth=Math.round(l.width)||640,o.nonLinearAdSlotHeight=150,a.requestAds(o)}bindManager(e,t){let i=e.AdEvent.Type,s=()=>this.callbacks,n=()=>{if(!this.lastBreakType)return;let a=this.lastBreakType;this.lastBreakType=null,s()?.onAdBreakCompleted(a)};t.addEventListener(i.CONTENT_PAUSE_REQUESTED,()=>s()?.onContentPauseRequested()),t.addEventListener(i.CONTENT_RESUME_REQUESTED,()=>{n(),s()?.onContentResumeRequested()}),t.addEventListener(i.STARTED,a=>{let o=a.getAd();if(!o)return;let l=o.getAdPodInfo(),d=l.getPodIndex()===0?"PREROLL":l.getPodIndex()===-1?"POSTROLL":"MIDROLL",c=o.getSkipTimeOffset()>=0,h={adId:o.getAdId(),positionInPod:l.getAdPosition(),podSize:l.getTotalAds(),breakType:d,isSkippable:c,skipOffsetMs:c?Math.round(o.getSkipTimeOffset()*1e3):-1,durationMs:Math.round(o.getDuration()*1e3),providerRendersUi:!0};this.lastAd=h,this.lastBreakType=d,h.positionInPod===1&&s()?.onAdBreakStarted(d,h.podSize),s()?.onAdStarted(h)}),t.addEventListener(i.AD_PROGRESS,a=>{let o=a.getAdData();this.lastAd&&o?.duration&&s()?.onAdProgress(this.lastAd,Math.round((o.currentTime??0)*1e3),Math.round(o.duration*1e3))}),t.addEventListener(i.PAUSED,()=>{this.lastAd&&s()?.onAdPaused(this.lastAd)}),t.addEventListener(i.RESUMED,()=>{this.lastAd&&s()?.onAdResumed(this.lastAd)}),t.addEventListener(i.SKIPPED,()=>{this.lastAd&&s()?.onAdSkipped(this.lastAd)}),t.addEventListener(i.COMPLETE,()=>{this.lastAd&&s()?.onAdCompleted(this.lastAd)}),i.AD_BREAK_ENDED&&t.addEventListener(i.AD_BREAK_ENDED,n),t.addEventListener(i.ALL_ADS_COMPLETED,()=>{n(),this.lastAd=null,s()?.onAllAdsCompleted?.()}),t.addEventListener(e.AdErrorEvent.Type.AD_ERROR,a=>{let o=a.getError();s()?.onAdError({code:o.getErrorCode(),phase:"PLAY",message:o.getMessage()}),s()?.onContentResumeRequested(),this.maybeFlagAdBlock()})}adBlockFlagged=!1;maybeFlagAdBlock(){this.adBlockFlagged||Kd(this.tagUrl??void 0).then(e=>{e&&!this.adBlockFlagged&&!this.destroyed&&(this.adBlockFlagged=!0,this.callbacks?.onAdError({code:902,phase:"LOAD",message:"ads blocked by the browser (ad blocker detected)"}))})}startPendingBreak(){return!this.adsManager||this.started?!1:(this.started=!0,this.adsManager.start(),!0)}contentDidComplete(){this.adsLoader?.contentComplete()}pause(){this.adsManager?.pause()}resume(){this.adsManager?.resume()}skip(){this.adsManager?.skip()}click(){}resize(e,t,i){this.ima&&this.adsManager&&this.adsManager.resize(e,t,i?this.ima.ViewMode.FULLSCREEN:this.ima.ViewMode.NORMAL)}destroy(){this.requestGeneration++,this.verdictTimer!==null&&(clearTimeout(this.verdictTimer),this.verdictTimer=null),this.adsManager?.destroy(),this.adsManager=null,this.adsLoader?.destroy(),this.adsLoader=null,this.adDisplayContainer?.destroy(),this.adDisplayContainer=null,this.lastAd=null,this.lastBreakType=null,this.autostart=!0,this.started=!1}};var rm="https://mssl.fwmrm.net/libs/adm/7.5.0/AdManager.js",pa=null;function am(r){return window.tv?.freewheel?.SDK?Promise.resolve(window.tv.freewheel.SDK):(pa??=new Promise((e,t)=>{let i=document.createElement("script");i.src=r,i.async=!0,i.onload=()=>{let s=window.tv?.freewheel?.SDK;s?e(s):t(new Error("AdManager.js loaded but tv.freewheel.SDK missing"))},i.onerror=()=>{pa=null,t(new Error("failed to load FreeWheel AdManager.js (blocked by an ad blocker?)"))},document.head.appendChild(i)}),pa)}var Gs=class{constructor(e={}){this.options=e}usesContentVideoElement=!0;video=null;container=null;callbacks=null;sdk=null;context=null;cfg=null;generation=0;destroyed=!1;prerollSlots=[];midrollSlots=[];postrollSlots=[];catchUpQueue=[];flow="PREROLLS";contentGateOpened=!1;pendingStart=!1;currentSlot=null;currentBreakType=null;currentAd=null;currentInstance=null;adIndexInSlot=0;totalAdsInSlot=0;requestTimer=null;watchdogTimer=null;progressTimer=null;lastContentPosMs=0;videoListeners=[];attach(e,t,i){this.video=e,this.container=t,this.callbacks=i}requestAds(e,t){if(!jt(e)){this.callbacks?.onAdError({code:900,phase:"LOAD",message:"FreewheelAdsProvider needs a FreewheelConfig"}),this.callbacks?.onContentResumeRequested();return}this.cfg=e,this.pendingStart=!t;let i=++this.generation,s=e.requestTimeoutMs??5e3;this.requestTimer=window.setTimeout(()=>{this.destroyed||i!==this.generation||this.fail({code:901,phase:"LOAD",message:"FreeWheel request produced no response in time"})},s+2e3),am(this.options.adManagerUrl??rm).then(n=>{this.destroyed||i!==this.generation||(this.sdk=n,this.submitRequest(n,e))}).catch(n=>{this.destroyed||i!==this.generation||this.fail({code:902,phase:"LOAD",message:n.message})})}submitRequest(e,t){let i=this.video,s=this.container;if(!i||!s)return;if(!i.parentNode){this.fail({code:900,phase:"LOAD",message:"FreewheelAdsProvider needs the video element mounted in the DOM"});return}let n=new e.AdManager;n.setNetwork(t.networkId),n.setServer(t.serverUrl.replace(/\/$/,"")+"/ad/g/1");let a=n.newContext();this.context=a,a.setProfile(t.profile),a.setSiteSection(t.siteSectionId,t.networkId),a.setVideoAsset(t.videoAssetId,t.videoDurationMs/1e3,t.networkId),a.setContentVideoElement?.(i);for(let[l,d]of Object.entries(t.globalParameters??{}))a.addKeyValue(l,d),(l.startsWith("_fw_")||l.includes("."))&&a.setParameter(l,d,e.PARAMETER_LEVEL_GLOBAL);let o=()=>String(Math.floor(Math.random()*1e9));a.addKeyValue("pvrn",o()),a.addKeyValue("vprn",o()),a.setParameter("renderer.video.timeoutMillisecondsBeforeStart",String(t.adStartTimeoutMs??1e4),e.PARAMETER_LEVEL_GLOBAL),a.addEventListener(e.EVENT_REQUEST_COMPLETE,l=>this.onRequestComplete(l)),a.addEventListener(e.EVENT_SLOT_ENDED,l=>this.onSlotEnded(l)),a.addEventListener(e.EVENT_AD_IMPRESSION,l=>this.onAdImpression(l)),e.EVENT_AD_PAUSE&&a.addEventListener(e.EVENT_AD_PAUSE,()=>{this.currentAd&&this.callbacks?.onAdPaused(this.currentAd)}),e.EVENT_AD_RESUME&&a.addEventListener(e.EVENT_AD_RESUME,()=>{this.currentAd&&this.callbacks?.onAdResumed(this.currentAd)}),e.EVENT_ERROR&&a.addEventListener(e.EVENT_ERROR,l=>{this.callbacks?.onAdError({code:301,phase:"PLAY",message:`FreeWheel error: ${JSON.stringify(l.errorInfo??l.type??"unknown")}`})}),this.bindContentWatchers(i),a.submitRequest()}onRequestComplete(e){if(this.requestTimer!==null&&(clearTimeout(this.requestTimer),this.requestTimer=null),this.destroyed)return;if(e.success===!1){this.fail({code:300,phase:"LOAD",message:"FreeWheel request failed"});return}let t=this.sdk,i=this.context;if(!t||!i)return;let s=o=>(o.getAdInstances?.()?.length??1)>0,n=i.getTemporalSlots().filter(s),a=o=>n.filter(l=>o!==void 0&&l.getTimePositionClass()===o);this.prerollSlots=a(t.TIME_POSITION_CLASS_PREROLL),this.postrollSlots=a(t.TIME_POSITION_CLASS_POSTROLL),this.midrollSlots=[...a(t.TIME_POSITION_CLASS_MIDROLL),...a(t.TIME_POSITION_CLASS_OVERLAY)].sort((o,l)=>o.getTimePosition()-l.getTimePosition()),this.publishCuePoints(),!this.pendingStart&&this.playNextPreroll()}publishCuePoints(){let e=this.midrollSlots.map(t=>t.getTimePosition());(this.prerollSlots.length||this.currentBreakType==="PREROLL")&&e.unshift(0),this.postrollSlots.length&&e.push(-1),this.callbacks?.onAdCuePoints(e)}playNextPreroll(){let e=this.prerollSlots.shift();if(!e){this.flow="CONTENT",this.openContentGateOnce();return}this.flow="PREROLLS",this.playSlot(e,"PREROLL")}openContentGateOnce(){this.contentGateOpened||(this.contentGateOpened=!0,this.callbacks?.onContentResumeRequested())}playSlot(e,t){this.currentSlot=e,this.currentBreakType=t,this.adIndexInSlot=0,this.totalAdsInSlot=e.getAdInstances?.()?.length??0,this.armWatchdog(e),this.callbacks?.onContentPauseRequested(),this.callbacks?.onAdBreakStarted(t,this.totalAdsInSlot),e.play()}onSlotEnded(e){let t=this.currentSlot;if(!t||e.slot&&e.slot.getCustomId()!==t.getCustomId())return;this.cancelWatchdog(),this.stopProgressTicker(),this.currentAd&&this.callbacks?.onAdCompleted(this.currentAd),this.currentAd=null,this.currentInstance=null,this.currentSlot=null;let i=this.currentBreakType;switch(this.currentBreakType=null,this.video&&(this.video.controls=!1),i&&this.callbacks?.onAdBreakCompleted(i),this.flow){case"PREROLLS":this.playNextPreroll();break;case"MIDROLL":this.flow="CONTENT",this.callbacks?.onContentResumeRequested();break;case"CATCH_UP":{let s=this.catchUpQueue.shift();s?this.playSlot(s,"MIDROLL"):(this.flow="CONTENT",this.callbacks?.onContentResumeRequested());break}case"POSTROLLS":this.playNextPostroll();break;default:break}}onAdImpression(e){let t=this.currentSlot,i=this.currentBreakType;if(!t||!i)return;this.cancelWatchdog(),this.currentAd&&this.callbacks?.onAdCompleted(this.currentAd),this.adIndexInSlot++;let s=e.adInstance??t.getAdInstances?.()?.[this.adIndexInSlot-1]??null,n=l=>l!==void 0&&l>=1&&l<=600?l*1e3:null,a=n(s?.getActiveCreativeRendition?.()?.getDuration?.())??n(s?.getDuration?.())??this.cfg?.fallbackAdDurationMs??15e3,o={adId:String(s?.getAdId?.()??`fw-${this.adIndexInSlot}`),positionInPod:this.adIndexInSlot,podSize:Math.max(this.totalAdsInSlot,this.adIndexInSlot),breakType:i,isSkippable:!1,skipOffsetMs:-1,durationMs:a,providerRendersUi:!0};this.currentAd=o,this.currentInstance=s,this.callbacks?.onAdStarted(o),this.startProgressTicker(o,t,a)}bindContentWatchers(e){this.unbindContentWatchers();let t=(s,n)=>{e.addEventListener(s,n),this.videoListeners.push([s,n])},i=0;t("timeupdate",()=>{let s=e.currentTime*1e3;if(e.seeking||(this.lastContentPosMs=s),this.flow!=="CONTENT"||this.currentSlot)return;let n=this.cfg?.midrollToleranceMs??1e3,a=this.midrollSlots.find(o=>Math.abs(o.getTimePosition()*1e3-s)<=n);a&&(this.midrollSlots=this.midrollSlots.filter(o=>o!==a),this.publishCuePoints(),this.flow="MIDROLL",this.playSlot(a,"MIDROLL"))}),t("seeking",()=>{i=this.lastContentPosMs}),t("seeked",()=>{if(this.flow!=="CONTENT"||this.currentSlot)return;let s=e.currentTime*1e3;if(Math.abs(s-i)<(this.cfg?.seekThresholdMs??2e3))return;let n=Math.min(i,s),a=Math.max(i,s),o=this.midrollSlots.filter(c=>{let h=c.getTimePosition()*1e3;return h>n&&h<=a});if(!o.length)return;this.midrollSlots=this.midrollSlots.filter(c=>!o.includes(c)),this.publishCuePoints();let l=this.cfg?.seekCatchUpPolicy??"MOST_RECENT";if(l==="NONE")return;let d=[...o].sort((c,h)=>h.getTimePosition()-c.getTimePosition());this.catchUpQueue=l==="MOST_RECENT"?[d[0]]:d,this.flow="CATCH_UP",this.playSlot(this.catchUpQueue.shift(),"MIDROLL")}),t("play",()=>{!this.currentSlot&&this.sdk?.VIDEO_STATE_PLAYING!==void 0&&this.context?.setVideoState?.(this.sdk.VIDEO_STATE_PLAYING)}),t("pause",()=>{!this.currentSlot&&this.sdk?.VIDEO_STATE_PAUSED!==void 0&&this.context?.setVideoState?.(this.sdk.VIDEO_STATE_PAUSED)})}unbindContentWatchers(){let e=this.video;e&&this.videoListeners.forEach(([t,i])=>e.removeEventListener(t,i)),this.videoListeners=[]}contentDidComplete(){this.destroyed||this.flow==="DONE"||(this.sdk?.VIDEO_STATE_COMPLETED!==void 0&&this.context?.setVideoState?.(this.sdk.VIDEO_STATE_COMPLETED),this.flow="POSTROLLS",this.playNextPostroll())}playNextPostroll(){let e=this.postrollSlots.shift();if(!e){this.flow="DONE",this.callbacks?.onAllAdsCompleted?.(),this.callbacks?.onContentResumeRequested();return}this.playSlot(e,"POSTROLL")}armWatchdog(e){this.cancelWatchdog();let t=(this.cfg?.adStartTimeoutMs??1e4)+2e3;this.watchdogTimer=window.setTimeout(()=>{this.destroyed||this.currentSlot!==e||this.currentAd||this.abandonSlot(e,`no ad rendered within ${t}ms`)},t)}cancelWatchdog(){this.watchdogTimer!==null&&(clearTimeout(this.watchdogTimer),this.watchdogTimer=null)}abandonSlot(e,t){this.callbacks?.onAdError({code:301,phase:"PLAY",message:`slot abandoned: ${t}`});try{e.stop?.()}catch{}window.setTimeout(()=>{this.currentSlot===e&&this.onSlotEnded({slot:e})},500)}startProgressTicker(e,t,i){this.stopProgressTicker();let s=performance.now();this.progressTimer=window.setInterval(()=>{if(this.destroyed||this.currentAd!==e){this.stopProgressTicker();return}let n=t.getPlayheadTime?.(),a=n!==void 0&&n>=0?n*1e3:performance.now()-s;this.callbacks?.onAdProgress(e,Math.min(a,i),i)},300)}stopProgressTicker(){this.progressTimer!==null&&(clearInterval(this.progressTimer),this.progressTimer=null)}startPendingBreak(){return!this.pendingStart||(this.pendingStart=!1,!this.prerollSlots.length)?!1:(this.playNextPreroll(),!0)}pause(){this.currentSlot?.pause?.()}resume(){this.currentSlot?.resume?.()}skip(){this.currentInstance?.getRendererController?.()?.skipCurrentAd?.()}click(){}resize(){}fail(e){this.callbacks?.onAdError(e),this.flow="CONTENT",this.openContentGateOnce()}destroy(){this.generation++,this.requestTimer!==null&&(clearTimeout(this.requestTimer),this.requestTimer=null),this.cancelWatchdog(),this.stopProgressTicker(),this.unbindContentWatchers();try{this.currentSlot?.stop?.()}catch{}try{this.context?.dispose?.()}catch{}this.context=null,this.video&&(this.video.controls=!1),this.cfg=null,this.prerollSlots=[],this.midrollSlots=[],this.postrollSlots=[],this.catchUpQueue=[],this.currentSlot=null,this.currentBreakType=null,this.currentAd=null,this.currentInstance=null,this.flow="PREROLLS",this.contentGateOpened=!1,this.pendingStart=!1}};var Li={foreground:"#FFFFFF",foregroundMuted:"rgba(255,255,255,0.70)",foregroundFaint:"rgba(255,255,255,0.38)",trackPlayed:"#FFFFFF",trackBuffered:"rgba(255,255,255,0.38)",trackRemaining:"rgba(255,255,255,0.22)",thumb:"#FFFFFF",thumbHalo:"rgba(255,255,255,0.20)",pressed:"rgba(255,255,255,0.12)",liveEdge:"#F2453E",liveBehind:"rgba(255,255,255,0.60)",adAccent:"#F6C445",menuSurface:"rgba(23,24,26,0.94)",menuSelected:"rgba(255,255,255,0.10)",menuBorder:"rgba(255,255,255,0.10)",chipSurface:"rgba(0,0,0,0.55)"},zt={trackHeight:3,trackHeightActive:5,thumbSize:12,thumbSizeActive:18,thumbHaloSize:34,scrubTouchHeight:48,iconSize:24,playButtonSize:56,playGlyphSize:28,seekButtonSize:48,seekGlyphSize:24,clusterGap:20,bottomBarHeight:48,edgeInset:12,bottomScrimHeight:140,topScrimHeight:96,menuMinWidth:224,menuMaxWidth:320,menuItemHeight:48,menuCorner:14,chipHeight:24,adCueMarkerSize:6},Ri={...zt,bottomBarHeight:56,edgeInset:24};var om={play:{fills:["M8.5 6.5 18 12 8.5 17.5Z"]},pause:{fills:["M8.3 5.5 L9.3 5.5 A1.3 1.3 0 0 1 10.6 6.8 L10.6 17.2 A1.3 1.3 0 0 1 9.3 18.5 L8.3 18.5 A1.3 1.3 0 0 1 7 17.2 L7 6.8 A1.3 1.3 0 0 1 8.3 5.5 Z","M14.7 5.5 L15.7 5.5 A1.3 1.3 0 0 1 17 6.8 L17 17.2 A1.3 1.3 0 0 1 15.7 18.5 L14.7 18.5 A1.3 1.3 0 0 1 13.4 17.2 L13.4 6.8 A1.3 1.3 0 0 1 14.7 5.5 Z"]},replay:{strokes:["M20 12a8 8 0 1 1-2.34-5.66","M13.6 6.6 17.66 6.34 17.9 2.3"]},seekBack:{strokes:["M16.36 6.37A7.6 7.6 0 1 1 7.64 6.37","M11.7 6.1 7.64 6.37 7.9 2.3"]},seekForward:{strokes:["M7.64 6.37A7.6 7.6 0 1 0 16.36 6.37","M12.3 6.1 16.36 6.37 16.1 2.3"]},volumeOn:{fills:["M4 9h3.2l4.4-3.6a1 1 0 0 1 1.6.8v11.6a1 1 0 0 1-1.6.8L7.2 15H4a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1z"],strokes:["M16.6 9.4a3.6 3.6 0 0 1 0 5.2","M19.2 7a7.2 7.2 0 0 1 0 10"]},volumeMute:{fills:["M4 9h3.2l4.4-3.6a1 1 0 0 1 1.6.8v11.6a1 1 0 0 1-1.6.8L7.2 15H4a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1z"],strokes:["m16.6 9.6 5 4.8","m21.6 9.6-5 4.8"]},speed:{strokes:["M4.2 17.5a9 9 0 0 1 15.6 0","M12 13.2 16.4 9.3"]},quality:{strokes:["M3 7.5h5","M12.2 7.5H21","M8.0 7.5 a2.1 2.1 0 1 0 4.2 0 a2.1 2.1 0 1 0 -4.2 0 Z","M3 16.5h8.8","M16 16.5H21","M11.8 16.5 a2.1 2.1 0 1 0 4.2 0 a2.1 2.1 0 1 0 -4.2 0 Z"]},audioTrack:{strokes:["M9 17.5V7l10-2v10.5","M9 17.5a2.4 2.4 0 1 1-4.8 0a2.4 2.4 0 1 1 4.8 0z","M19 15.5a2.4 2.4 0 1 1-4.8 0a2.4 2.4 0 1 1 4.8 0z"]},subtitles:{strokes:["M5.5 5 L18.5 5 A2.5 2.5 0 0 1 21 7.5 L21 16.5 A2.5 2.5 0 0 1 18.5 19 L5.5 19 A2.5 2.5 0 0 1 3 16.5 L3 7.5 A2.5 2.5 0 0 1 5.5 5 Z","M7.5 10.5h9","M7.5 14.5h5"]},fullscreenEnter:{strokes:["M9 4H4v5","M15 4h5v5","M15 20h5v-5","M9 20H4v-5"]},fullscreenExit:{strokes:["M3.5 8.5h5v-5","M20.5 8.5h-5v-5","M20.5 15.5h-5v5","M3.5 15.5h5v5"]},check:{strokes:["M5 12.6 9.8 17.4 19 7.2"]}};function Ot(r,e,t,i=1.8){let s=om[r];if(!s)return"";let n=(s.strokes??[]).map(o=>`<path d="${o}" fill="none" stroke="${t}" stroke-width="${i}" stroke-linecap="round" stroke-linejoin="round"/>`).join(""),a=(s.fills??[]).map(o=>`<path d="${o}" fill="${t}"/>`).join("");return`<svg width="${e}" height="${e}" viewBox="0 0 24 24" aria-hidden="true">${a}${n}</svg>`}function Vs(r,e,t){return`<svg width="${r}" height="${r}" viewBox="0 0 32 32" aria-hidden="true">
|
|
43
43
|
<path d="M12 3H29V20L20 29H3V12Z" fill="none" stroke="${e}" stroke-width="2.6" stroke-linejoin="round"/>
|
|
44
44
|
<path d="M13 10L22.5 16L13 22Z" fill="${t}"/></svg>`}var Ks={showProgressBar:!0,showTimeLabels:!0,showSeekButtons:!0,showVolumeButton:!0,showSpeedButton:!0,showQualityButton:!0,showAudioTrackButton:!0,showSubtitleButton:!0,showFullscreenButton:!0,showTitle:!0,showContentRatings:!0,controlsTimeoutMs:5e3,titleTimeoutMs:5e3,contentRatingsTimeoutMs:5e3,doubleClickToSeek:!0,showAdCueMarkers:!0,customActions:[],adBlockerPolicy:"notice",showRetryButton:!0,retryButtonLabel:"Retry",showUpNext:!0,upNextLeadSeconds:10,upNextText:"Next in {seconds}"};function qd(r={}){return{showProgressBar:!1,showTimeLabels:!1,showSeekButtons:!1,showVolumeButton:!1,showSpeedButton:!1,showQualityButton:!1,showAudioTrackButton:!1,showSubtitleButton:!1,showFullscreenButton:!1,showAdCueMarkers:!1,...r}}var lm={volume:"og_btn_volume",speed:"og_btn_speed",quality:"og_btn_quality",audio:"og_btn_audio",subs:"og_btn_subtitles",fs:"og_btn_fullscreen"},dm=["top-start","top-center","top-end","center-start","center","center-end","bottom-start","bottom-center","bottom-end"],cm={ALL:"AL",SIX:"6",NINE:"9",TWELVE:"12",FOURTEEN:"14",SIXTEEN:"16",EIGHTEEN:"18"},hm={ALL:"#5FA85C",SIX:"#E8B812",NINE:"#6F58A8",TWELVE:"#E07A18",FOURTEEN:"#D9541E",SIXTEEN:"#C5271F",EIGHTEEN:"#7E120D"},Hs='fill="none" stroke="#fff" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"',um={VIOLENCE:`<path d="M8 11V5.6a1.3 1.3 0 0 1 2.6 0V10 M10.6 5V4.2a1.3 1.3 0 0 1 2.6 0V10 M13.2 5.4a1.3 1.3 0 0 1 2.6 0V10 M15.8 7.4a1.3 1.3 0 0 1 2.6 0v6a6 6 0 0 1-6 6h-.5a6 6 0 0 1-6-6v-1.6a1.5 1.5 0 0 1 2.1-1.37" ${Hs}/>`,FEAR:`<ellipse cx="12" cy="14" rx="3.2" ry="4" fill="#fff"/><circle cx="12" cy="8.6" r="1.9" fill="#fff"/>
|
|
45
45
|
<path d="M9.4 12 5 9.4 M9 14.6H4.4 M9.6 16.6 6 19.6 M14.6 12 19 9.4 M15 14.6h4.6 M14.4 16.6 18 19.6" ${Hs}/>`,SEX:'<path d="M12 20.2 10.55 18.9C5.4 14.2 2 11.1 2 7.4 2 4.3 4.4 2 7.5 2c1.7 0 3.4.8 4.5 2.1C13.1 2.8 14.8 2 16.5 2 19.6 2 22 4.3 22 7.4c0 3.7-3.4 6.8-8.55 11.5Z" fill="#fff"/>',DISCRIMINATION:`<circle cx="8.4" cy="8" r="2.6" fill="#fff"/><path d="M3.6 18.6a4.8 4.8 0 0 1 9.6 0Z" fill="#fff"/>
|
|
@@ -370,4 +370,4 @@ Schedule: ${l.map(m=>Ue(m))} pos: ${this.timelinePos}`),c.length&&this.log(`Remo
|
|
|
370
370
|
font:600 13px ${t}; pointer-events:none; z-index:6; }
|
|
371
371
|
</style>
|
|
372
372
|
<div class="feed" part="feed" data-testid="og_feed"></div>
|
|
373
|
-
<div class="watermark" hidden>${Vs(20,"rgba(255,255,255,0.72)","#F6C445")}<span><b>OG</b>Player</span></div>`,this.pool=new Xt(this.cfg,{onActiveItemChanged:s=>{let n=this.itemsValue[s];n&&this.dispatch("og-activeitemchanged",{index:s,item:n})},onNearEnd:s=>this.dispatch("og-nearend",{remaining:s}),onItemSkipped:(s,n)=>{this.dispatch("og-itemskipped",{index:s,reason:n}),s===this.intendedPage&&this.scrollToPage(s+1)},onItemError:(s,n)=>{this.itemErrors.set(s,n),this.dispatch("og-itemerror",{index:s,error:n}),this.renderActiveChrome()},onAnalyticsEvent:s=>{s.type==="MutedAutoplayFallback"&&(this.mutedValue=!0,this.dispatch("og-mutedfallback",{})),this.dispatch("og-analytics",{event:s})},onAssignmentsChanged:()=>{this.attachSurfaces(),this.syncWatermark()},onAdvanceRequested:s=>this.scrollToPage(s+1)}),this.pool.setFeedMuted(this.mutedValue),this.renderPages(),this.pool.updateItems(this.itemsValue);let i=this.q(".feed");this.observer=new IntersectionObserver(s=>{for(let n of s)if(n.intersectionRatio>=.6){let a=Number(n.target.dataset.index);a!==this.intendedPage&&(this.intendedPage=a,this.settle(a))}},{root:i,threshold:[.6]});for(let s of Array.from(i.children))this.observer.observe(s);this.resizeObserver=new ResizeObserver(()=>{i.scrollTop=this.intendedPage*i.clientHeight}),this.resizeObserver.observe(this),this.tickTimer=window.setInterval(()=>this.tick(),250),this.itemsValue.length>0&&this.settle(0)}remount(){let e=this.intendedPage;this.mount(),e>0&&this.scrollToPage(e,"instant")}teardown(){this.mounted=!1,this.observer?.disconnect(),this.observer=null,this.resizeObserver?.disconnect(),this.resizeObserver=null,this.tickTimer!==null&&(clearInterval(this.tickTimer),this.tickTimer=null),this.singleTapTimer!==null&&(clearTimeout(this.singleTapTimer),this.singleTapTimer=null),this.releaseSecondary(),this.pool?.releaseAll(),this.pool=null,this.itemErrors.clear(),this.intendedPage=0}banded(e){return(e.textPlacement??"OVERLAY")!=="OVERLAY"&&(this.cfg.showTitle&&!!e.title||this.cfg.showSubtitle&&!!e.subtitle)}renderPages(){let e=this.q(".feed"),t=e.children.length;if(e.textContent="",this.itemsValue.forEach((i,s)=>{let n=document.createElement("section");n.className="page",n.dataset.index=String(s),n.dataset.testid=`og_feed_page_${s}`;let a=i.contentFit??this.cfg.contentFit;if(this.banded(i)){let o=document.createElement("div");if(o.className="band",(i.textPlacement??"OVERLAY")==="ABOVE_VIDEO"&&o.classList.add("top"),this.cfg.showTitle&&i.title){let d=document.createElement("div");d.className="t",d.textContent=i.title,o.appendChild(d)}if(this.cfg.showSubtitle&&i.subtitle){let d=document.createElement("div");d.className="s",d.textContent=i.subtitle,o.appendChild(d)}let l=this.makeRegion(i,a);(i.textPlacement??"OVERLAY")==="ABOVE_VIDEO"?n.append(o,l):n.append(l,o)}else if(i.secondaryMedia){let o=this.makeRegion(i,a);o.classList.add("half");let l=document.createElement("div");l.className="half secondhalf fit-"+a;let d=document.createElement("div");d.className="poster";let c=i.secondaryMedia.posterUrl;c&&(d.style.backgroundImage=`url("${c}")`),l.appendChild(d),n.append(o,l)}else n.appendChild(this.makeRegion(i,a));e.appendChild(n)}),this.observer){this.observer.disconnect();for(let i of Array.from(e.children))this.observer.observe(i)}t>0&&this.intendedPage<e.children.length&&(e.scrollTop=this.intendedPage*e.clientHeight),this.attachSurfaces(),this.renderActiveChrome()}makeRegion(e,t){let i=document.createElement("div");i.className="videoregion fit-"+t;let s=document.createElement("div");s.className="poster";let n=e.posterUrl??e.media.posterUrl;return n&&(s.style.backgroundImage=`url("${n}")`),i.appendChild(s),i}attachSurfaces(){if(!this.pool)return;let e=this.q(".feed");this.itemsValue.forEach((t,i)=>{let s=e.children[i];if(!s)return;let n=s.querySelector(".videoregion");if(!n)return;let a=this.pool.playerAt(i),o=n.querySelector("video");a?o!==a.videoElement&&(o?.remove(),n.appendChild(a.videoElement)):o?.remove()}),this.renderActiveChrome(),this.manageSecondary()}renderActiveChrome(){if(!this.pool)return;let e=this.q(".feed");for(let h of Array.from(this.root.querySelectorAll(".taplayer, .rail, .badge, .centre, .hairline, .hairpad, .overlaytext, .errorlayer")))h.remove();let t=this.intendedPage,i=this.itemsValue[t],s=e.children[t];if(!i||!s)return;let n=this.pool.playerAt(t),a=s.querySelector(".videoregion")??s,o=this.itemErrors.get(t);if(o&&n){let h=()=>{this.itemErrors.delete(t),n.retry(),this.renderActiveChrome()},u=document.createElement("div");if(u.className="errorlayer",this.errorOverlay)u.appendChild(this.errorOverlay(o,h));else{let f=document.createElement("div");f.className="errdefault";let g=document.createElement("div");g.className="m",g.textContent=this.cfg.errorMessageProvider?.(o)??`Playback error ${o.code}`;let m=document.createElement("button");m.textContent="Retry",m.addEventListener("click",h),f.append(g,m),u.appendChild(f)}s.appendChild(u);return}if(!n)return;let l=document.createElement("div");l.className="taplayer",l.addEventListener("click",()=>{let h=()=>{n.isPlaying?n.pause():n.play()};if(this.onItemDoubleTapped){if(this.singleTapTimer!==null)return;this.singleTapTimer=window.setTimeout(()=>{this.singleTapTimer=null,h()},300)}else h()}),l.addEventListener("dblclick",()=>{this.onItemDoubleTapped&&(this.singleTapTimer!==null&&(clearTimeout(this.singleTapTimer),this.singleTapTimer=null),this.onItemDoubleTapped(t,i),this.dispatch("og-itemdoubletapped",{index:t,item:i}))}),a.appendChild(l);let d=document.createElement("div");if(d.className="centre",a.appendChild(d),i.isSponsored){let h=document.createElement("div");if(h.className="badge",h.dataset.testid="og_feed_sponsored_badge",this.sponsoredBadge)h.appendChild(this.sponsoredBadge(i));else if(this.cfg.showSponsoredBadge){let u=document.createElement("span");u.className="chip",u.textContent="Sponsored",h.appendChild(u)}a.appendChild(h)}let c=(i.railActions??[]).slice(0,6);if(c.length>0){let h=!!i.secondaryMedia||(i.textPlacement??"OVERLAY")!=="OVERLAY",u=document.createElement("div");u.className=h?"rail railpage":"rail",u.dataset.testid="og_feed_rail",c.forEach((f,g)=>u.appendChild(this.railButton(f,g))),(h?s:a).appendChild(u)}if((i.textPlacement??"OVERLAY")==="OVERLAY"&&(this.cfg.showTitle&&i.title||this.cfg.showSubtitle&&i.subtitle)){let h=document.createElement("div");if(h.className="overlaytext",this.cfg.showTitle&&i.title){let u=document.createElement("div");u.className="t",u.textContent=i.title,h.appendChild(u)}if(this.cfg.showSubtitle&&i.subtitle){let u=document.createElement("div");u.className="s",u.textContent=i.subtitle,h.appendChild(u)}s.appendChild(h)}if(this.cfg.showProgressBar){let h=document.createElement("div");h.className="hairline",h.dataset.testid="og_feed_hairline";let u=document.createElement("div");u.className="fill",h.appendChild(u);let f=document.createElement("div");f.className="hairpad";let g=p=>{let v=h.getBoundingClientRect();if(v.width<=0||n.durationMs<=0)return;let T=Math.min(1,Math.max(0,(p-v.left)/v.width));u.style.width=`${T*100}%`,n.seekTo(T*n.durationMs)};f.addEventListener("pointerdown",p=>{this.scrubbing=!0,h.classList.add("scrubbing"),f.setPointerCapture(p.pointerId),g(p.clientX)}),f.addEventListener("pointermove",p=>{this.scrubbing&&g(p.clientX)});let m=()=>{this.scrubbing=!1,h.classList.remove("scrubbing")};f.addEventListener("pointerup",m),f.addEventListener("pointercancel",m),s.append(h,f)}this.tick()}railButton(e,t){let i=document.createElement("button");i.dataset.testid=`og_feed_rail_action_${t}`,e.isActive&&(i.className="active"),e.accessibilityLabel&&i.setAttribute("aria-label",e.accessibilityLabel);let s=document.createElement("span");if(s.className="ic",s.innerHTML=e.iconSvg,i.appendChild(s),e.label){let n=document.createElement("span");n.className="lbl",n.textContent=e.label,i.appendChild(n)}return i.addEventListener("click",n=>{n.stopPropagation(),e.onClick()}),i}tick(){if(!this.pool)return;let e=this.intendedPage,t=this.pool.playerAt(e),i=this.root.querySelector(".centre");if(!t||!i)return;let n=!!this.itemsValue[e]?.secondaryMedia&&this.secondaryFor===e&&this.secondary!==null&&this.secondary.state!=="READY"&&!t.isPlaying,a=t.videoElement.played.length>0,o=t.state==="BUFFERING",l=!t.isPlaying&&t.state==="READY"&&!n&&a,d="";l?d="glyph":(o||n)&&(d="spinner");let c=i.dataset.show??"";if(d!==c){if(i.dataset.show=d,i.textContent="",d==="glyph"){let h=document.createElement("div");h.className="glyph",h.innerHTML=this.cfg.playIconSvg??'<svg viewBox="0 0 24 24"><path d="M8 5.5v13l11-6.5z" fill="#fff"/></svg>',i.appendChild(h)}else if(d==="spinner"){let h=document.createElement("div");h.className="spinner",i.appendChild(h)}}if(!this.scrubbing){let h=this.root.querySelector(".hairline .fill");h&&t.durationMs>0&&(h.style.width=`${t.currentPositionMs/t.durationMs*100}%`)}}manageSecondary(){let e=this.intendedPage,t=this.itemsValue[e],i=this.pool?.playerAt(e)??null;if(!t?.secondaryMedia||!i){this.releaseSecondary();return}if(this.secondaryFor===e&&this.secondary)return;this.releaseSecondary();let a=this.q(".feed").children[e]?.querySelector(".secondhalf");if(!a)return;let o=new It({...this.cfg.licenseKey?{licenseKey:this.cfg.licenseKey}:{},fallbackToMutedAutoplay:!0});this.secondary=o,this.secondaryFor=e,o.setBufferRole("STANDBY"),o.setLooping(this.cfg.loopItems&&!t.isSponsored),o.isMuted=!0,o.load(t.secondaryMedia,{autoplay:!1}),a.appendChild(o.videoElement);let l=()=>{this.secondary!==o||this.intendedPage!==e||(o.setBufferRole("ACTIVE"),this.syncSecondaryAudio(),i.play(),o.play())},d={onStateChanged:h=>{h==="READY"&&l()}};o.addListener(d);let c={onPause:()=>o.pause(),onResume:()=>o.play(),onPlay:()=>o.play()};i.addListener(c),this.secondaryDetach=()=>{o.removeListener(d),i.removeListener(c)},o.state==="READY"&&l()}syncSecondaryAudio(){let e=this.itemsValue[this.secondaryFor];if(!this.secondary||!e)return;let t=(e.splitAudioSource??"PRIMARY")==="SECONDARY";this.secondary.isMuted=t?this.mutedValue:!0}releaseSecondary(){this.secondaryDetach?.(),this.secondaryDetach=null,this.secondary&&(this.secondary.videoElement.remove(),this.secondary.release()),this.secondary=null,this.secondaryFor=-1}settle(e){this.pool?.settle(e),this.renderActiveChrome(),this.manageSecondary()}scrollToPage(e,t="smooth"){if(e<0||e>=this.itemsValue.length)return;let i=this.q(".feed");this.intendedPage=e,i.scrollTo({top:e*i.clientHeight,behavior:t})}syncWatermark(){let e=this.root.querySelector(".watermark");e&&(e.hidden=this.pool?.isLicensed!==!1)}dispatch(e,t){this.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!1}))}q(e){return this.root.querySelector(e)}};function Ws(){customElements.get("og-vertical-feed")||customElements.define("og-vertical-feed",Di)}var gm="2026-08-28T04:04:40";qs();Ws();return Qd(mm);})();
|
|
373
|
+
<div class="watermark" hidden>${Vs(20,"rgba(255,255,255,0.72)","#F6C445")}<span><b>OG</b>Player</span></div>`,this.pool=new Xt(this.cfg,{onActiveItemChanged:s=>{let n=this.itemsValue[s];n&&this.dispatch("og-activeitemchanged",{index:s,item:n})},onNearEnd:s=>this.dispatch("og-nearend",{remaining:s}),onItemSkipped:(s,n)=>{this.dispatch("og-itemskipped",{index:s,reason:n}),s===this.intendedPage&&this.scrollToPage(s+1)},onItemError:(s,n)=>{this.itemErrors.set(s,n),this.dispatch("og-itemerror",{index:s,error:n}),this.renderActiveChrome()},onAnalyticsEvent:s=>{s.type==="MutedAutoplayFallback"&&(this.mutedValue=!0,this.dispatch("og-mutedfallback",{})),this.dispatch("og-analytics",{event:s})},onAssignmentsChanged:()=>{this.attachSurfaces(),this.syncWatermark()},onAdvanceRequested:s=>this.scrollToPage(s+1)}),this.pool.setFeedMuted(this.mutedValue),this.renderPages(),this.pool.updateItems(this.itemsValue);let i=this.q(".feed");this.observer=new IntersectionObserver(s=>{for(let n of s)if(n.intersectionRatio>=.6){let a=Number(n.target.dataset.index);a!==this.intendedPage&&(this.intendedPage=a,this.settle(a))}},{root:i,threshold:[.6]});for(let s of Array.from(i.children))this.observer.observe(s);this.resizeObserver=new ResizeObserver(()=>{i.scrollTop=this.intendedPage*i.clientHeight}),this.resizeObserver.observe(this),this.tickTimer=window.setInterval(()=>this.tick(),250),this.itemsValue.length>0&&this.settle(0)}remount(){let e=this.intendedPage;this.mount(),e>0&&this.scrollToPage(e,"instant")}teardown(){this.mounted=!1,this.observer?.disconnect(),this.observer=null,this.resizeObserver?.disconnect(),this.resizeObserver=null,this.tickTimer!==null&&(clearInterval(this.tickTimer),this.tickTimer=null),this.singleTapTimer!==null&&(clearTimeout(this.singleTapTimer),this.singleTapTimer=null),this.releaseSecondary(),this.pool?.releaseAll(),this.pool=null,this.itemErrors.clear(),this.intendedPage=0}banded(e){return(e.textPlacement??"OVERLAY")!=="OVERLAY"&&(this.cfg.showTitle&&!!e.title||this.cfg.showSubtitle&&!!e.subtitle)}renderPages(){let e=this.q(".feed"),t=e.children.length;if(e.textContent="",this.itemsValue.forEach((i,s)=>{let n=document.createElement("section");n.className="page",n.dataset.index=String(s),n.dataset.testid=`og_feed_page_${s}`;let a=i.contentFit??this.cfg.contentFit;if(this.banded(i)){let o=document.createElement("div");if(o.className="band",(i.textPlacement??"OVERLAY")==="ABOVE_VIDEO"&&o.classList.add("top"),this.cfg.showTitle&&i.title){let d=document.createElement("div");d.className="t",d.textContent=i.title,o.appendChild(d)}if(this.cfg.showSubtitle&&i.subtitle){let d=document.createElement("div");d.className="s",d.textContent=i.subtitle,o.appendChild(d)}let l=this.makeRegion(i,a);(i.textPlacement??"OVERLAY")==="ABOVE_VIDEO"?n.append(o,l):n.append(l,o)}else if(i.secondaryMedia){let o=this.makeRegion(i,a);o.classList.add("half");let l=document.createElement("div");l.className="half secondhalf fit-"+a;let d=document.createElement("div");d.className="poster";let c=i.secondaryMedia.posterUrl;c&&(d.style.backgroundImage=`url("${c}")`),l.appendChild(d),n.append(o,l)}else n.appendChild(this.makeRegion(i,a));e.appendChild(n)}),this.observer){this.observer.disconnect();for(let i of Array.from(e.children))this.observer.observe(i)}t>0&&this.intendedPage<e.children.length&&(e.scrollTop=this.intendedPage*e.clientHeight),this.attachSurfaces(),this.renderActiveChrome()}makeRegion(e,t){let i=document.createElement("div");i.className="videoregion fit-"+t;let s=document.createElement("div");s.className="poster";let n=e.posterUrl??e.media.posterUrl;return n&&(s.style.backgroundImage=`url("${n}")`),i.appendChild(s),i}attachSurfaces(){if(!this.pool)return;let e=this.q(".feed");this.itemsValue.forEach((t,i)=>{let s=e.children[i];if(!s)return;let n=s.querySelector(".videoregion");if(!n)return;let a=this.pool.playerAt(i),o=n.querySelector("video");a?o!==a.videoElement&&(o?.remove(),n.appendChild(a.videoElement)):o?.remove()}),this.renderActiveChrome(),this.manageSecondary()}renderActiveChrome(){if(!this.pool)return;let e=this.q(".feed");for(let h of Array.from(this.root.querySelectorAll(".taplayer, .rail, .badge, .centre, .hairline, .hairpad, .overlaytext, .errorlayer")))h.remove();let t=this.intendedPage,i=this.itemsValue[t],s=e.children[t];if(!i||!s)return;let n=this.pool.playerAt(t),a=s.querySelector(".videoregion")??s,o=this.itemErrors.get(t);if(o&&n){let h=()=>{this.itemErrors.delete(t),n.retry(),this.renderActiveChrome()},u=document.createElement("div");if(u.className="errorlayer",this.errorOverlay)u.appendChild(this.errorOverlay(o,h));else{let f=document.createElement("div");f.className="errdefault";let g=document.createElement("div");g.className="m",g.textContent=this.cfg.errorMessageProvider?.(o)??`Playback error ${o.code}`;let m=document.createElement("button");m.textContent="Retry",m.addEventListener("click",h),f.append(g,m),u.appendChild(f)}s.appendChild(u);return}if(!n)return;let l=document.createElement("div");l.className="taplayer",l.addEventListener("click",()=>{let h=()=>{n.isPlaying?n.pause():n.play()};if(this.onItemDoubleTapped){if(this.singleTapTimer!==null)return;this.singleTapTimer=window.setTimeout(()=>{this.singleTapTimer=null,h()},300)}else h()}),l.addEventListener("dblclick",()=>{this.onItemDoubleTapped&&(this.singleTapTimer!==null&&(clearTimeout(this.singleTapTimer),this.singleTapTimer=null),this.onItemDoubleTapped(t,i),this.dispatch("og-itemdoubletapped",{index:t,item:i}))}),a.appendChild(l);let d=document.createElement("div");if(d.className="centre",a.appendChild(d),i.isSponsored){let h=document.createElement("div");if(h.className="badge",h.dataset.testid="og_feed_sponsored_badge",this.sponsoredBadge)h.appendChild(this.sponsoredBadge(i));else if(this.cfg.showSponsoredBadge){let u=document.createElement("span");u.className="chip",u.textContent="Sponsored",h.appendChild(u)}a.appendChild(h)}let c=(i.railActions??[]).slice(0,6);if(c.length>0){let h=!!i.secondaryMedia||(i.textPlacement??"OVERLAY")!=="OVERLAY",u=document.createElement("div");u.className=h?"rail railpage":"rail",u.dataset.testid="og_feed_rail",c.forEach((f,g)=>u.appendChild(this.railButton(f,g))),(h?s:a).appendChild(u)}if((i.textPlacement??"OVERLAY")==="OVERLAY"&&(this.cfg.showTitle&&i.title||this.cfg.showSubtitle&&i.subtitle)){let h=document.createElement("div");if(h.className="overlaytext",this.cfg.showTitle&&i.title){let u=document.createElement("div");u.className="t",u.textContent=i.title,h.appendChild(u)}if(this.cfg.showSubtitle&&i.subtitle){let u=document.createElement("div");u.className="s",u.textContent=i.subtitle,h.appendChild(u)}s.appendChild(h)}if(this.cfg.showProgressBar){let h=document.createElement("div");h.className="hairline",h.dataset.testid="og_feed_hairline";let u=document.createElement("div");u.className="fill",h.appendChild(u);let f=document.createElement("div");f.className="hairpad";let g=p=>{let v=h.getBoundingClientRect();if(v.width<=0||n.durationMs<=0)return;let T=Math.min(1,Math.max(0,(p-v.left)/v.width));u.style.width=`${T*100}%`,n.seekTo(T*n.durationMs)};f.addEventListener("pointerdown",p=>{this.scrubbing=!0,h.classList.add("scrubbing"),f.setPointerCapture(p.pointerId),g(p.clientX)}),f.addEventListener("pointermove",p=>{this.scrubbing&&g(p.clientX)});let m=()=>{this.scrubbing=!1,h.classList.remove("scrubbing")};f.addEventListener("pointerup",m),f.addEventListener("pointercancel",m),s.append(h,f)}this.tick()}railButton(e,t){let i=document.createElement("button");i.dataset.testid=`og_feed_rail_action_${t}`,e.isActive&&(i.className="active"),e.accessibilityLabel&&i.setAttribute("aria-label",e.accessibilityLabel);let s=document.createElement("span");if(s.className="ic",s.innerHTML=e.iconSvg,i.appendChild(s),e.label){let n=document.createElement("span");n.className="lbl",n.textContent=e.label,i.appendChild(n)}return i.addEventListener("click",n=>{n.stopPropagation(),e.onClick()}),i}tick(){if(!this.pool)return;let e=this.intendedPage,t=this.pool.playerAt(e),i=this.root.querySelector(".centre");if(!t||!i)return;let n=!!this.itemsValue[e]?.secondaryMedia&&this.secondaryFor===e&&this.secondary!==null&&this.secondary.state!=="READY"&&!t.isPlaying,a=t.videoElement.played.length>0,o=t.state==="BUFFERING",l=!t.isPlaying&&t.state==="READY"&&!n&&a,d="";l?d="glyph":(o||n)&&(d="spinner");let c=i.dataset.show??"";if(d!==c){if(i.dataset.show=d,i.textContent="",d==="glyph"){let h=document.createElement("div");h.className="glyph",h.innerHTML=this.cfg.playIconSvg??'<svg viewBox="0 0 24 24"><path d="M8 5.5v13l11-6.5z" fill="#fff"/></svg>',i.appendChild(h)}else if(d==="spinner"){let h=document.createElement("div");h.className="spinner",i.appendChild(h)}}if(!this.scrubbing){let h=this.root.querySelector(".hairline .fill");h&&t.durationMs>0&&(h.style.width=`${t.currentPositionMs/t.durationMs*100}%`)}}manageSecondary(){let e=this.intendedPage,t=this.itemsValue[e],i=this.pool?.playerAt(e)??null;if(!t?.secondaryMedia||!i){this.releaseSecondary();return}if(this.secondaryFor===e&&this.secondary)return;this.releaseSecondary();let a=this.q(".feed").children[e]?.querySelector(".secondhalf");if(!a)return;let o=new It({...this.cfg.licenseKey?{licenseKey:this.cfg.licenseKey}:{},fallbackToMutedAutoplay:!0});this.secondary=o,this.secondaryFor=e,o.setBufferRole("STANDBY"),o.setLooping(this.cfg.loopItems&&!t.isSponsored),o.isMuted=!0,o.load(t.secondaryMedia,{autoplay:!1}),a.appendChild(o.videoElement);let l=()=>{this.secondary!==o||this.intendedPage!==e||(o.setBufferRole("ACTIVE"),this.syncSecondaryAudio(),i.play(),o.play())},d={onStateChanged:h=>{h==="READY"&&l()}};o.addListener(d);let c={onPause:()=>o.pause(),onResume:()=>o.play(),onPlay:()=>o.play()};i.addListener(c),this.secondaryDetach=()=>{o.removeListener(d),i.removeListener(c)},o.state==="READY"&&l()}syncSecondaryAudio(){let e=this.itemsValue[this.secondaryFor];if(!this.secondary||!e)return;let t=(e.splitAudioSource??"PRIMARY")==="SECONDARY";this.secondary.isMuted=t?this.mutedValue:!0}releaseSecondary(){this.secondaryDetach?.(),this.secondaryDetach=null,this.secondary&&(this.secondary.videoElement.remove(),this.secondary.release()),this.secondary=null,this.secondaryFor=-1}settle(e){this.pool?.settle(e),this.renderActiveChrome(),this.manageSecondary()}scrollToPage(e,t="smooth"){if(e<0||e>=this.itemsValue.length)return;let i=this.q(".feed");this.intendedPage=e,i.scrollTo({top:e*i.clientHeight,behavior:t})}syncWatermark(){let e=this.root.querySelector(".watermark");e&&(e.hidden=this.pool?.isLicensed!==!1)}dispatch(e,t){this.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!1}))}q(e){return this.root.querySelector(e)}};function Ws(){customElements.get("og-vertical-feed")||customElements.define("og-vertical-feed",Di)}var gm="2026-08-28T20:43:51";qs();Ws();return Qd(mm);})();
|