@vkontakte/videoplayer-core 2.0.115-beta.0 → 2.0.115-dev.0778dd82.0

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/esnext.esm.js CHANGED
@@ -1,9 +1,9 @@
1
1
  /**
2
- * @vkontakte/videoplayer-core v2.0.115-beta.0
3
- * Thu, 17 Oct 2024 11:34:40 GMT
2
+ * @vkontakte/videoplayer-core v2.0.115-dev.0778dd82.0
3
+ * Mon, 21 Oct 2024 14:48:16 GMT
4
4
  * https://st.mycdn.me/static/vkontakte-videoplayer/2-0-115/doc/
5
5
  */
6
- var Gg=Object.create;var Ju=Object.defineProperty;var Wg=Object.getOwnPropertyDescriptor;var Qg=Object.getOwnPropertyNames;var Yg=Object.getPrototypeOf,zg=Object.prototype.hasOwnProperty;var f=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var Kg=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Qg(e))!zg.call(r,a)&&a!==t&&Ju(r,a,{get:()=>e[a],enumerable:!(i=Wg(e,a))||i.enumerable});return r};var Ye=(r,e,t)=>(t=r!=null?Gg(Yg(r)):{},Kg(e||!r||!r.__esModule?Ju(t,"default",{value:r,enumerable:!0}):t,r));var ve=f((KR,sl)=>{"use strict";sl.exports=function(r){try{return!!r()}catch{return!0}}});var Fi=f((JR,nl)=>{"use strict";var aS=ve();nl.exports=!aS(function(){var r=function(){}.bind();return typeof r!="function"||r.hasOwnProperty("prototype")})});var ne=f((XR,ll)=>{"use strict";var ol=Fi(),ul=Function.prototype,en=ul.call,sS=ol&&ul.bind.bind(en,en);ll.exports=ol?sS:function(r){return function(){return en.apply(r,arguments)}}});var ri=f((ZR,dl)=>{"use strict";var cl=ne(),nS=cl({}.toString),oS=cl("".slice);dl.exports=function(r){return oS(nS(r),8,-1)}});var hl=f((e$,pl)=>{"use strict";var uS=ne(),lS=ve(),cS=ri(),tn=Object,dS=uS("".split);pl.exports=lS(function(){return!tn("z").propertyIsEnumerable(0)})?function(r){return cS(r)==="String"?dS(r,""):tn(r)}:tn});var ai=f((t$,fl)=>{"use strict";fl.exports=function(r){return r==null}});var qi=f((i$,ml)=>{"use strict";var pS=ai(),hS=TypeError;ml.exports=function(r){if(pS(r))throw new hS("Can't call method on "+r);return r}});var si=f((r$,bl)=>{"use strict";var fS=hl(),mS=qi();bl.exports=function(r){return fS(mS(r))}});var rn=f((a$,gl)=>{"use strict";gl.exports=function(){}});var Mt=f((s$,Sl)=>{"use strict";Sl.exports={}});var j=f((an,vl)=>{"use strict";var Ui=function(r){return r&&r.Math===Math&&r};vl.exports=Ui(typeof globalThis=="object"&&globalThis)||Ui(typeof window=="object"&&window)||Ui(typeof self=="object"&&self)||Ui(typeof global=="object"&&global)||Ui(typeof an=="object"&&an)||function(){return this}()||Function("return this")()});var U=f((n$,yl)=>{"use strict";var sn=typeof document=="object"&&document.all;yl.exports=typeof sn>"u"&&sn!==void 0?function(r){return typeof r=="function"||r===sn}:function(r){return typeof r=="function"}});var El=f((o$,Il)=>{"use strict";var bS=j(),gS=U(),Tl=bS.WeakMap;Il.exports=gS(Tl)&&/native code/.test(String(Tl))});var xe=f((u$,xl)=>{"use strict";var SS=U();xl.exports=function(r){return typeof r=="object"?r!==null:SS(r)}});var Pe=f((l$,Pl)=>{"use strict";var vS=ve();Pl.exports=!vS(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7})});var Pa=f((c$,kl)=>{"use strict";var yS=j(),Al=xe(),nn=yS.document,TS=Al(nn)&&Al(nn.createElement);kl.exports=function(r){return TS?nn.createElement(r):{}}});var on=f((d$,wl)=>{"use strict";var IS=Pe(),ES=ve(),xS=Pa();wl.exports=!IS&&!ES(function(){return Object.defineProperty(xS("div"),"a",{get:function(){return 7}}).a!==7})});var un=f((p$,Rl)=>{"use strict";var PS=Pe(),AS=ve();Rl.exports=PS&&AS(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42})});var ze=f((h$,$l)=>{"use strict";var kS=xe(),wS=String,RS=TypeError;$l.exports=function(r){if(kS(r))return r;throw new RS(wS(r)+" is not an object")}});var ye=f((f$,Ll)=>{"use strict";var $S=Fi(),Aa=Function.prototype.call;Ll.exports=$S?Aa.bind(Aa):function(){return Aa.apply(Aa,arguments)}});var ka=f((m$,Ml)=>{"use strict";Ml.exports={}});var it=f((b$,Dl)=>{"use strict";var ln=ka(),cn=j(),LS=U(),Cl=function(r){return LS(r)?r:void 0};Dl.exports=function(r,e){return arguments.length<2?Cl(ln[r])||Cl(cn[r]):ln[r]&&ln[r][e]||cn[r]&&cn[r][e]}});var Hi=f((g$,Bl)=>{"use strict";var MS=ne();Bl.exports=MS({}.isPrototypeOf)});var ni=f((S$,_l)=>{"use strict";var CS=j(),Ol=CS.navigator,Vl=Ol&&Ol.userAgent;_l.exports=Vl?String(Vl):""});var pn=f((v$,jl)=>{"use strict";var Hl=j(),dn=ni(),Nl=Hl.process,Fl=Hl.Deno,ql=Nl&&Nl.versions||Fl&&Fl.version,Ul=ql&&ql.v8,_e,wa;Ul&&(_e=Ul.split("."),wa=_e[0]>0&&_e[0]<4?1:+(_e[0]+_e[1]));!wa&&dn&&(_e=dn.match(/Edge\/(\d+)/),(!_e||_e[1]>=74)&&(_e=dn.match(/Chrome\/(\d+)/),_e&&(wa=+_e[1])));jl.exports=wa});var hn=f((y$,Wl)=>{"use strict";var Gl=pn(),DS=ve(),BS=j(),OS=BS.String;Wl.exports=!!Object.getOwnPropertySymbols&&!DS(function(){var r=Symbol("symbol detection");return!OS(r)||!(Object(r)instanceof Symbol)||!Symbol.sham&&Gl&&Gl<41})});var fn=f((T$,Ql)=>{"use strict";var VS=hn();Ql.exports=VS&&!Symbol.sham&&typeof Symbol.iterator=="symbol"});var mn=f((I$,Yl)=>{"use strict";var _S=it(),NS=U(),FS=Hi(),qS=fn(),US=Object;Yl.exports=qS?function(r){return typeof r=="symbol"}:function(r){var e=_S("Symbol");return NS(e)&&FS(e.prototype,US(r))}});var ji=f((E$,zl)=>{"use strict";var HS=String;zl.exports=function(r){try{return HS(r)}catch{return"Object"}}});var rt=f((x$,Kl)=>{"use strict";var jS=U(),GS=ji(),WS=TypeError;Kl.exports=function(r){if(jS(r))return r;throw new WS(GS(r)+" is not a function")}});var Gi=f((P$,Jl)=>{"use strict";var QS=rt(),YS=ai();Jl.exports=function(r,e){var t=r[e];return YS(t)?void 0:QS(t)}});var Zl=f((A$,Xl)=>{"use strict";var bn=ye(),gn=U(),Sn=xe(),zS=TypeError;Xl.exports=function(r,e){var t,i;if(e==="string"&&gn(t=r.toString)&&!Sn(i=bn(t,r))||gn(t=r.valueOf)&&!Sn(i=bn(t,r))||e!=="string"&&gn(t=r.toString)&&!Sn(i=bn(t,r)))return i;throw new zS("Can't convert object to primitive value")}});var Ne=f((k$,ec)=>{"use strict";ec.exports=!0});var rc=f((w$,ic)=>{"use strict";var tc=j(),KS=Object.defineProperty;ic.exports=function(r,e){try{KS(tc,r,{value:e,configurable:!0,writable:!0})}catch{tc[r]=e}return e}});var Wi=f((R$,nc)=>{"use strict";var JS=Ne(),XS=j(),ZS=rc(),ac="__core-js_shared__",sc=nc.exports=XS[ac]||ZS(ac,{});(sc.versions||(sc.versions=[])).push({version:"3.38.0",mode:JS?"pure":"global",copyright:"\xA9 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.38.0/LICENSE",source:"https://github.com/zloirock/core-js"})});var vn=f(($$,uc)=>{"use strict";var oc=Wi();uc.exports=function(r,e){return oc[r]||(oc[r]=e||{})}});var Qi=f((L$,lc)=>{"use strict";var ev=qi(),tv=Object;lc.exports=function(r){return tv(ev(r))}});var Fe=f((M$,cc)=>{"use strict";var iv=ne(),rv=Qi(),av=iv({}.hasOwnProperty);cc.exports=Object.hasOwn||function(e,t){return av(rv(e),t)}});var yn=f((C$,dc)=>{"use strict";var sv=ne(),nv=0,ov=Math.random(),uv=sv(1 .toString);dc.exports=function(r){return"Symbol("+(r===void 0?"":r)+")_"+uv(++nv+ov,36)}});var ie=f((D$,hc)=>{"use strict";var lv=j(),cv=vn(),pc=Fe(),dv=yn(),pv=hn(),hv=fn(),oi=lv.Symbol,Tn=cv("wks"),fv=hv?oi.for||oi:oi&&oi.withoutSetter||dv;hc.exports=function(r){return pc(Tn,r)||(Tn[r]=pv&&pc(oi,r)?oi[r]:fv("Symbol."+r)),Tn[r]}});var gc=f((B$,bc)=>{"use strict";var mv=ye(),fc=xe(),mc=mn(),bv=Gi(),gv=Zl(),Sv=ie(),vv=TypeError,yv=Sv("toPrimitive");bc.exports=function(r,e){if(!fc(r)||mc(r))return r;var t=bv(r,yv),i;if(t){if(e===void 0&&(e="default"),i=mv(t,r,e),!fc(i)||mc(i))return i;throw new vv("Can't convert object to primitive value")}return e===void 0&&(e="number"),gv(r,e)}});var In=f((O$,Sc)=>{"use strict";var Tv=gc(),Iv=mn();Sc.exports=function(r){var e=Tv(r,"string");return Iv(e)?e:e+""}});var Ct=f(yc=>{"use strict";var Ev=Pe(),xv=on(),Pv=un(),Ra=ze(),vc=In(),Av=TypeError,En=Object.defineProperty,kv=Object.getOwnPropertyDescriptor,xn="enumerable",Pn="configurable",An="writable";yc.f=Ev?Pv?function(e,t,i){if(Ra(e),t=vc(t),Ra(i),typeof e=="function"&&t==="prototype"&&"value"in i&&An in i&&!i[An]){var a=kv(e,t);a&&a[An]&&(e[t]=i.value,i={configurable:Pn in i?i[Pn]:a[Pn],enumerable:xn in i?i[xn]:a[xn],writable:!1})}return En(e,t,i)}:En:function(e,t,i){if(Ra(e),t=vc(t),Ra(i),xv)try{return En(e,t,i)}catch{}if("get"in i||"set"in i)throw new Av("Accessors not supported");return"value"in i&&(e[t]=i.value),e}});var Yi=f((_$,Tc)=>{"use strict";Tc.exports=function(r,e){return{enumerable:!(r&1),configurable:!(r&2),writable:!(r&4),value:e}}});var ui=f((N$,Ic)=>{"use strict";var wv=Pe(),Rv=Ct(),$v=Yi();Ic.exports=wv?function(r,e,t){return Rv.f(r,e,$v(1,t))}:function(r,e,t){return r[e]=t,r}});var $a=f((F$,xc)=>{"use strict";var Lv=vn(),Mv=yn(),Ec=Lv("keys");xc.exports=function(r){return Ec[r]||(Ec[r]=Mv(r))}});var La=f((q$,Pc)=>{"use strict";Pc.exports={}});var $n=f((U$,wc)=>{"use strict";var Cv=El(),kc=j(),Dv=xe(),Bv=ui(),kn=Fe(),wn=Wi(),Ov=$a(),Vv=La(),Ac="Object already initialized",Rn=kc.TypeError,_v=kc.WeakMap,Ma,zi,Ca,Nv=function(r){return Ca(r)?zi(r):Ma(r,{})},Fv=function(r){return function(e){var t;if(!Dv(e)||(t=zi(e)).type!==r)throw new Rn("Incompatible receiver, "+r+" required");return t}};Cv||wn.state?(qe=wn.state||(wn.state=new _v),qe.get=qe.get,qe.has=qe.has,qe.set=qe.set,Ma=function(r,e){if(qe.has(r))throw new Rn(Ac);return e.facade=r,qe.set(r,e),e},zi=function(r){return qe.get(r)||{}},Ca=function(r){return qe.has(r)}):(Dt=Ov("state"),Vv[Dt]=!0,Ma=function(r,e){if(kn(r,Dt))throw new Rn(Ac);return e.facade=r,Bv(r,Dt,e),e},zi=function(r){return kn(r,Dt)?r[Dt]:{}},Ca=function(r){return kn(r,Dt)});var qe,Dt;wc.exports={set:Ma,get:zi,has:Ca,enforce:Nv,getterFor:Fv}});var Ln=f((H$,Mc)=>{"use strict";var qv=Fi(),Lc=Function.prototype,Rc=Lc.apply,$c=Lc.call;Mc.exports=typeof Reflect=="object"&&Reflect.apply||(qv?$c.bind(Rc):function(){return $c.apply(Rc,arguments)})});var Mn=f((j$,Cc)=>{"use strict";var Uv=ri(),Hv=ne();Cc.exports=function(r){if(Uv(r)==="Function")return Hv(r)}});var Vc=f(Oc=>{"use strict";var Dc={}.propertyIsEnumerable,Bc=Object.getOwnPropertyDescriptor,jv=Bc&&!Dc.call({1:2},1);Oc.f=jv?function(e){var t=Bc(this,e);return!!t&&t.enumerable}:Dc});var Fc=f(Nc=>{"use strict";var Gv=Pe(),Wv=ye(),Qv=Vc(),Yv=Yi(),zv=si(),Kv=In(),Jv=Fe(),Xv=on(),_c=Object.getOwnPropertyDescriptor;Nc.f=Gv?_c:function(e,t){if(e=zv(e),t=Kv(t),Xv)try{return _c(e,t)}catch{}if(Jv(e,t))return Yv(!Wv(Qv.f,e,t),e[t])}});var Cn=f((Q$,qc)=>{"use strict";var Zv=ve(),ey=U(),ty=/#|\.prototype\./,Ki=function(r,e){var t=ry[iy(r)];return t===sy?!0:t===ay?!1:ey(e)?Zv(e):!!e},iy=Ki.normalize=function(r){return String(r).replace(ty,".").toLowerCase()},ry=Ki.data={},ay=Ki.NATIVE="N",sy=Ki.POLYFILL="P";qc.exports=Ki});var Ji=f((Y$,Hc)=>{"use strict";var Uc=Mn(),ny=rt(),oy=Fi(),uy=Uc(Uc.bind);Hc.exports=function(r,e){return ny(r),e===void 0?r:oy?uy(r,e):function(){return r.apply(e,arguments)}}});var Ae=f((z$,Gc)=>{"use strict";var Xi=j(),ly=Ln(),cy=Mn(),dy=U(),py=Fc().f,hy=Cn(),li=ka(),fy=Ji(),ci=ui(),jc=Fe();Wi();var my=function(r){var e=function(t,i,a){if(this instanceof e){switch(arguments.length){case 0:return new r;case 1:return new r(t);case 2:return new r(t,i)}return new r(t,i,a)}return ly(r,this,arguments)};return e.prototype=r.prototype,e};Gc.exports=function(r,e){var t=r.target,i=r.global,a=r.stat,s=r.proto,n=i?Xi:a?Xi[t]:Xi[t]&&Xi[t].prototype,o=i?li:li[t]||ci(li,t,{})[t],l=o.prototype,u,d,c,p,h,m,b,g,y;for(p in e)u=hy(i?p:t+(a?".":"#")+p,r.forced),d=!u&&n&&jc(n,p),m=o[p],d&&(r.dontCallGetSet?(y=py(n,p),b=y&&y.value):b=n[p]),h=d&&b?b:e[p],!(!u&&!s&&typeof m==typeof h)&&(r.bind&&d?g=fy(h,Xi):r.wrap&&d?g=my(h):s&&dy(h)?g=cy(h):g=h,(r.sham||h&&h.sham||m&&m.sham)&&ci(g,"sham",!0),ci(o,p,g),s&&(c=t+"Prototype",jc(li,c)||ci(li,c,{}),ci(li[c],p,h),r.real&&l&&(u||!l[p])&&ci(l,p,h)))}});var Yc=f((K$,Qc)=>{"use strict";var Dn=Pe(),by=Fe(),Wc=Function.prototype,gy=Dn&&Object.getOwnPropertyDescriptor,Bn=by(Wc,"name"),Sy=Bn&&function(){}.name==="something",vy=Bn&&(!Dn||Dn&&gy(Wc,"name").configurable);Qc.exports={EXISTS:Bn,PROPER:Sy,CONFIGURABLE:vy}});var Kc=f((J$,zc)=>{"use strict";var yy=Math.ceil,Ty=Math.floor;zc.exports=Math.trunc||function(e){var t=+e;return(t>0?Ty:yy)(t)}});var Da=f((X$,Jc)=>{"use strict";var Iy=Kc();Jc.exports=function(r){var e=+r;return e!==e||e===0?0:Iy(e)}});var Zc=f((Z$,Xc)=>{"use strict";var Ey=Da(),xy=Math.max,Py=Math.min;Xc.exports=function(r,e){var t=Ey(r);return t<0?xy(t+e,0):Py(t,e)}});var td=f((eL,ed)=>{"use strict";var Ay=Da(),ky=Math.min;ed.exports=function(r){var e=Ay(r);return e>0?ky(e,9007199254740991):0}});var Ba=f((tL,id)=>{"use strict";var wy=td();id.exports=function(r){return wy(r.length)}});var sd=f((iL,ad)=>{"use strict";var Ry=si(),$y=Zc(),Ly=Ba(),rd=function(r){return function(e,t,i){var a=Ry(e),s=Ly(a);if(s===0)return!r&&-1;var n=$y(i,s),o;if(r&&t!==t){for(;s>n;)if(o=a[n++],o!==o)return!0}else for(;s>n;n++)if((r||n in a)&&a[n]===t)return r||n||0;return!r&&-1}};ad.exports={includes:rd(!0),indexOf:rd(!1)}});var ud=f((rL,od)=>{"use strict";var My=ne(),On=Fe(),Cy=si(),Dy=sd().indexOf,By=La(),nd=My([].push);od.exports=function(r,e){var t=Cy(r),i=0,a=[],s;for(s in t)!On(By,s)&&On(t,s)&&nd(a,s);for(;e.length>i;)On(t,s=e[i++])&&(~Dy(a,s)||nd(a,s));return a}});var Vn=f((aL,ld)=>{"use strict";ld.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]});var dd=f((sL,cd)=>{"use strict";var Oy=ud(),Vy=Vn();cd.exports=Object.keys||function(e){return Oy(e,Vy)}});var hd=f(pd=>{"use strict";var _y=Pe(),Ny=un(),Fy=Ct(),qy=ze(),Uy=si(),Hy=dd();pd.f=_y&&!Ny?Object.defineProperties:function(e,t){qy(e);for(var i=Uy(t),a=Hy(t),s=a.length,n=0,o;s>n;)Fy.f(e,o=a[n++],i[o]);return e}});var _n=f((oL,fd)=>{"use strict";var jy=it();fd.exports=jy("document","documentElement")});var Un=f((uL,Td)=>{"use strict";var Gy=ze(),Wy=hd(),md=Vn(),Qy=La(),Yy=_n(),zy=Pa(),Ky=$a(),bd=">",gd="<",Fn="prototype",qn="script",vd=Ky("IE_PROTO"),Nn=function(){},yd=function(r){return gd+qn+bd+r+gd+"/"+qn+bd},Sd=function(r){r.write(yd("")),r.close();var e=r.parentWindow.Object;return r=null,e},Jy=function(){var r=zy("iframe"),e="java"+qn+":",t;return r.style.display="none",Yy.appendChild(r),r.src=String(e),t=r.contentWindow.document,t.open(),t.write(yd("document.F=Object")),t.close(),t.F},Oa,Va=function(){try{Oa=new ActiveXObject("htmlfile")}catch{}Va=typeof document<"u"?document.domain&&Oa?Sd(Oa):Jy():Sd(Oa);for(var r=md.length;r--;)delete Va[Fn][md[r]];return Va()};Qy[vd]=!0;Td.exports=Object.create||function(e,t){var i;return e!==null?(Nn[Fn]=Gy(e),i=new Nn,Nn[Fn]=null,i[vd]=e):i=Va(),t===void 0?i:Wy.f(i,t)}});var Ed=f((lL,Id)=>{"use strict";var Xy=ve();Id.exports=!Xy(function(){function r(){}return r.prototype.constructor=null,Object.getPrototypeOf(new r)!==r.prototype})});var jn=f((cL,Pd)=>{"use strict";var Zy=Fe(),eT=U(),tT=Qi(),iT=$a(),rT=Ed(),xd=iT("IE_PROTO"),Hn=Object,aT=Hn.prototype;Pd.exports=rT?Hn.getPrototypeOf:function(r){var e=tT(r);if(Zy(e,xd))return e[xd];var t=e.constructor;return eT(t)&&e instanceof t?t.prototype:e instanceof Hn?aT:null}});var di=f((dL,Ad)=>{"use strict";var sT=ui();Ad.exports=function(r,e,t,i){return i&&i.enumerable?r[e]=t:sT(r,e,t),r}});var Yn=f((pL,Rd)=>{"use strict";var nT=ve(),oT=U(),uT=xe(),lT=Un(),kd=jn(),cT=di(),dT=ie(),pT=Ne(),Qn=dT("iterator"),wd=!1,at,Gn,Wn;[].keys&&(Wn=[].keys(),"next"in Wn?(Gn=kd(kd(Wn)),Gn!==Object.prototype&&(at=Gn)):wd=!0);var hT=!uT(at)||nT(function(){var r={};return at[Qn].call(r)!==r});hT?at={}:pT&&(at=lT(at));oT(at[Qn])||cT(at,Qn,function(){return this});Rd.exports={IteratorPrototype:at,BUGGY_SAFARI_ITERATORS:wd}});var _a=f((hL,Ld)=>{"use strict";var fT=ie(),mT=fT("toStringTag"),$d={};$d[mT]="z";Ld.exports=String($d)==="[object z]"});var Zi=f((fL,Md)=>{"use strict";var bT=_a(),gT=U(),Na=ri(),ST=ie(),vT=ST("toStringTag"),yT=Object,TT=Na(function(){return arguments}())==="Arguments",IT=function(r,e){try{return r[e]}catch{}};Md.exports=bT?Na:function(r){var e,t,i;return r===void 0?"Undefined":r===null?"Null":typeof(t=IT(e=yT(r),vT))=="string"?t:TT?Na(e):(i=Na(e))==="Object"&&gT(e.callee)?"Arguments":i}});var Dd=f((mL,Cd)=>{"use strict";var ET=_a(),xT=Zi();Cd.exports=ET?{}.toString:function(){return"[object "+xT(this)+"]"}});var er=f((bL,Od)=>{"use strict";var PT=_a(),AT=Ct().f,kT=ui(),wT=Fe(),RT=Dd(),$T=ie(),Bd=$T("toStringTag");Od.exports=function(r,e,t,i){var a=t?r:r&&r.prototype;a&&(wT(a,Bd)||AT(a,Bd,{configurable:!0,value:e}),i&&!PT&&kT(a,"toString",RT))}});var _d=f((gL,Vd)=>{"use strict";var LT=Yn().IteratorPrototype,MT=Un(),CT=Yi(),DT=er(),BT=Mt(),OT=function(){return this};Vd.exports=function(r,e,t,i){var a=e+" Iterator";return r.prototype=MT(LT,{next:CT(+!i,t)}),DT(r,a,!1,!0),BT[a]=OT,r}});var Fd=f((SL,Nd)=>{"use strict";var VT=ne(),_T=rt();Nd.exports=function(r,e,t){try{return VT(_T(Object.getOwnPropertyDescriptor(r,e)[t]))}catch{}}});var Ud=f((vL,qd)=>{"use strict";var NT=xe();qd.exports=function(r){return NT(r)||r===null}});var jd=f((yL,Hd)=>{"use strict";var FT=Ud(),qT=String,UT=TypeError;Hd.exports=function(r){if(FT(r))return r;throw new UT("Can't set "+qT(r)+" as a prototype")}});var zn=f((TL,Gd)=>{"use strict";var HT=Fd(),jT=xe(),GT=qi(),WT=jd();Gd.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var r=!1,e={},t;try{t=HT(Object.prototype,"__proto__","set"),t(e,[]),r=e instanceof Array}catch{}return function(a,s){return GT(a),WT(s),jT(a)&&(r?t(a,s):a.__proto__=s),a}}():void 0)});var ip=f((IL,tp)=>{"use strict";var QT=Ae(),YT=ye(),Fa=Ne(),Zd=Yc(),zT=U(),KT=_d(),Wd=jn(),Qd=zn(),JT=er(),XT=ui(),Kn=di(),ZT=ie(),Yd=Mt(),ep=Yn(),eI=Zd.PROPER,tI=Zd.CONFIGURABLE,zd=ep.IteratorPrototype,qa=ep.BUGGY_SAFARI_ITERATORS,tr=ZT("iterator"),Kd="keys",ir="values",Jd="entries",Xd=function(){return this};tp.exports=function(r,e,t,i,a,s,n){KT(t,e,i);var o=function(y){if(y===a&&p)return p;if(!qa&&y&&y in d)return d[y];switch(y){case Kd:return function(){return new t(this,y)};case ir:return function(){return new t(this,y)};case Jd:return function(){return new t(this,y)}}return function(){return new t(this)}},l=e+" Iterator",u=!1,d=r.prototype,c=d[tr]||d["@@iterator"]||a&&d[a],p=!qa&&c||o(a),h=e==="Array"&&d.entries||c,m,b,g;if(h&&(m=Wd(h.call(new r)),m!==Object.prototype&&m.next&&(!Fa&&Wd(m)!==zd&&(Qd?Qd(m,zd):zT(m[tr])||Kn(m,tr,Xd)),JT(m,l,!0,!0),Fa&&(Yd[l]=Xd))),eI&&a===ir&&c&&c.name!==ir&&(!Fa&&tI?XT(d,"name",ir):(u=!0,p=function(){return YT(c,this)})),a)if(b={values:o(ir),keys:s?p:o(Kd),entries:o(Jd)},n)for(g in b)(qa||u||!(g in d))&&Kn(d,g,b[g]);else QT({target:e,proto:!0,forced:qa||u},b);return(!Fa||n)&&d[tr]!==p&&Kn(d,tr,p,{name:a}),Yd[e]=p,b}});var ap=f((EL,rp)=>{"use strict";rp.exports=function(r,e){return{value:r,done:e}}});var Xn=f((xL,lp)=>{"use strict";var iI=si(),Jn=rn(),sp=Mt(),op=$n(),rI=Ct().f,aI=ip(),Ua=ap(),sI=Ne(),nI=Pe(),up="Array Iterator",oI=op.set,uI=op.getterFor(up);lp.exports=aI(Array,"Array",function(r,e){oI(this,{type:up,target:iI(r),index:0,kind:e})},function(){var r=uI(this),e=r.target,t=r.index++;if(!e||t>=e.length)return r.target=void 0,Ua(void 0,!0);switch(r.kind){case"keys":return Ua(t,!1);case"values":return Ua(e[t],!1)}return Ua([t,e[t]],!1)},"values");var np=sp.Arguments=sp.Array;Jn("keys");Jn("values");Jn("entries");if(!sI&&nI&&np.name!=="values")try{rI(np,"name",{value:"values"})}catch{}});var dp=f((PL,cp)=>{"use strict";var lI=ie(),cI=Mt(),dI=lI("iterator"),pI=Array.prototype;cp.exports=function(r){return r!==void 0&&(cI.Array===r||pI[dI]===r)}});var Zn=f((AL,hp)=>{"use strict";var hI=Zi(),pp=Gi(),fI=ai(),mI=Mt(),bI=ie(),gI=bI("iterator");hp.exports=function(r){if(!fI(r))return pp(r,gI)||pp(r,"@@iterator")||mI[hI(r)]}});var mp=f((kL,fp)=>{"use strict";var SI=ye(),vI=rt(),yI=ze(),TI=ji(),II=Zn(),EI=TypeError;fp.exports=function(r,e){var t=arguments.length<2?II(r):e;if(vI(t))return yI(SI(t,r));throw new EI(TI(r)+" is not iterable")}});var Sp=f((wL,gp)=>{"use strict";var xI=ye(),bp=ze(),PI=Gi();gp.exports=function(r,e,t){var i,a;bp(r);try{if(i=PI(r,"return"),!i){if(e==="throw")throw t;return t}i=xI(i,r)}catch(s){a=!0,i=s}if(e==="throw")throw t;if(a)throw i;return bp(i),t}});var ja=f((RL,Ip)=>{"use strict";var AI=Ji(),kI=ye(),wI=ze(),RI=ji(),$I=dp(),LI=Ba(),vp=Hi(),MI=mp(),CI=Zn(),yp=Sp(),DI=TypeError,Ha=function(r,e){this.stopped=r,this.result=e},Tp=Ha.prototype;Ip.exports=function(r,e,t){var i=t&&t.that,a=!!(t&&t.AS_ENTRIES),s=!!(t&&t.IS_RECORD),n=!!(t&&t.IS_ITERATOR),o=!!(t&&t.INTERRUPTED),l=AI(e,i),u,d,c,p,h,m,b,g=function(A){return u&&yp(u,"normal",A),new Ha(!0,A)},y=function(A){return a?(wI(A),o?l(A[0],A[1],g):l(A[0],A[1])):o?l(A,g):l(A)};if(s)u=r.iterator;else if(n)u=r;else{if(d=CI(r),!d)throw new DI(RI(r)+" is not iterable");if($I(d)){for(c=0,p=LI(r);p>c;c++)if(h=y(r[c]),h&&vp(Tp,h))return h;return new Ha(!1)}u=MI(r,d)}for(m=s?r.next:u.next;!(b=kI(m,u)).done;){try{h=y(b.value)}catch(A){yp(u,"throw",A)}if(typeof h=="object"&&h&&vp(Tp,h))return h}return new Ha(!1)}});var xp=f(($L,Ep)=>{"use strict";var BI=Pe(),OI=Ct(),VI=Yi();Ep.exports=function(r,e,t){BI?OI.f(r,e,VI(0,t)):r[e]=t}});var Pp=f(()=>{"use strict";var _I=Ae(),NI=ja(),FI=xp();_I({target:"Object",stat:!0},{fromEntries:function(e){var t={};return NI(e,function(i,a){FI(t,i,a)},{AS_ENTRIES:!0}),t}})});var kp=f((CL,Ap)=>{"use strict";Xn();Pp();var qI=ka();Ap.exports=qI.Object.fromEntries});var Rp=f((DL,wp)=>{"use strict";wp.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}});var Lp=f(()=>{"use strict";Xn();var UI=Rp(),HI=j(),jI=er(),$p=Mt();for(Ga in UI)jI(HI[Ga],Ga),$p[Ga]=$p.Array;var Ga});var Cp=f((VL,Mp)=>{"use strict";var GI=kp();Lp();Mp.exports=GI});var eo=f((_L,Dp)=>{"use strict";var WI=Cp();Dp.exports=WI});var Bp=f(()=>{"use strict"});var to=f((qL,Op)=>{"use strict";var rr=j(),QI=ni(),YI=ri(),Wa=function(r){return QI.slice(0,r.length)===r};Op.exports=function(){return Wa("Bun/")?"BUN":Wa("Cloudflare-Workers")?"CLOUDFLARE":Wa("Deno/")?"DENO":Wa("Node.js/")?"NODE":rr.Bun&&typeof Bun.version=="string"?"BUN":rr.Deno&&typeof Deno.version=="object"?"DENO":YI(rr.process)==="process"?"NODE":rr.window&&rr.document?"BROWSER":"REST"}()});var Qa=f((UL,Vp)=>{"use strict";var zI=to();Vp.exports=zI==="NODE"});var Np=f((HL,_p)=>{"use strict";var KI=Ct();_p.exports=function(r,e,t){return KI.f(r,e,t)}});var Up=f((jL,qp)=>{"use strict";var JI=it(),XI=Np(),ZI=ie(),eE=Pe(),Fp=ZI("species");qp.exports=function(r){var e=JI(r);eE&&e&&!e[Fp]&&XI(e,Fp,{configurable:!0,get:function(){return this}})}});var jp=f((GL,Hp)=>{"use strict";var tE=Hi(),iE=TypeError;Hp.exports=function(r,e){if(tE(e,r))return r;throw new iE("Incorrect invocation")}});var ro=f((WL,Gp)=>{"use strict";var rE=ne(),aE=U(),io=Wi(),sE=rE(Function.toString);aE(io.inspectSource)||(io.inspectSource=function(r){return sE(r)});Gp.exports=io.inspectSource});var Jp=f((QL,Kp)=>{"use strict";var nE=ne(),oE=ve(),Wp=U(),uE=Zi(),lE=it(),cE=ro(),Qp=function(){},Yp=lE("Reflect","construct"),ao=/^\s*(?:class|function)\b/,dE=nE(ao.exec),pE=!ao.test(Qp),ar=function(e){if(!Wp(e))return!1;try{return Yp(Qp,[],e),!0}catch{return!1}},zp=function(e){if(!Wp(e))return!1;switch(uE(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return pE||!!dE(ao,cE(e))}catch{return!0}};zp.sham=!0;Kp.exports=!Yp||oE(function(){var r;return ar(ar.call)||!ar(Object)||!ar(function(){r=!0})||r})?zp:ar});var Zp=f((YL,Xp)=>{"use strict";var hE=Jp(),fE=ji(),mE=TypeError;Xp.exports=function(r){if(hE(r))return r;throw new mE(fE(r)+" is not a constructor")}});var so=f((zL,th)=>{"use strict";var eh=ze(),bE=Zp(),gE=ai(),SE=ie(),vE=SE("species");th.exports=function(r,e){var t=eh(r).constructor,i;return t===void 0||gE(i=eh(t)[vE])?e:bE(i)}});var rh=f((KL,ih)=>{"use strict";var yE=ne();ih.exports=yE([].slice)});var sh=f((JL,ah)=>{"use strict";var TE=TypeError;ah.exports=function(r,e){if(r<e)throw new TE("Not enough arguments");return r}});var no=f((XL,nh)=>{"use strict";var IE=ni();nh.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(IE)});var bo=f((ZL,mh)=>{"use strict";var Te=j(),EE=Ln(),xE=Ji(),oh=U(),PE=Fe(),fh=ve(),uh=_n(),AE=rh(),lh=Pa(),kE=sh(),wE=no(),RE=Qa(),ho=Te.setImmediate,fo=Te.clearImmediate,$E=Te.process,oo=Te.Dispatch,LE=Te.Function,ch=Te.MessageChannel,ME=Te.String,uo=0,sr={},dh="onreadystatechange",nr,Bt,lo,co;fh(function(){nr=Te.location});var mo=function(r){if(PE(sr,r)){var e=sr[r];delete sr[r],e()}},po=function(r){return function(){mo(r)}},ph=function(r){mo(r.data)},hh=function(r){Te.postMessage(ME(r),nr.protocol+"//"+nr.host)};(!ho||!fo)&&(ho=function(e){kE(arguments.length,1);var t=oh(e)?e:LE(e),i=AE(arguments,1);return sr[++uo]=function(){EE(t,void 0,i)},Bt(uo),uo},fo=function(e){delete sr[e]},RE?Bt=function(r){$E.nextTick(po(r))}:oo&&oo.now?Bt=function(r){oo.now(po(r))}:ch&&!wE?(lo=new ch,co=lo.port2,lo.port1.onmessage=ph,Bt=xE(co.postMessage,co)):Te.addEventListener&&oh(Te.postMessage)&&!Te.importScripts&&nr&&nr.protocol!=="file:"&&!fh(hh)?(Bt=hh,Te.addEventListener("message",ph,!1)):dh in lh("script")?Bt=function(r){uh.appendChild(lh("script"))[dh]=function(){uh.removeChild(this),mo(r)}}:Bt=function(r){setTimeout(po(r),0)});mh.exports={set:ho,clear:fo}});var Sh=f((eM,gh)=>{"use strict";var bh=j(),CE=Pe(),DE=Object.getOwnPropertyDescriptor;gh.exports=function(r){if(!CE)return bh[r];var e=DE(bh,r);return e&&e.value}});var go=f((tM,yh)=>{"use strict";var vh=function(){this.head=null,this.tail=null};vh.prototype={add:function(r){var e={item:r,next:null},t=this.tail;t?t.next=e:this.head=e,this.tail=e},get:function(){var r=this.head;if(r){var e=this.head=r.next;return e===null&&(this.tail=null),r.item}}};yh.exports=vh});var Ih=f((iM,Th)=>{"use strict";var BE=ni();Th.exports=/ipad|iphone|ipod/i.test(BE)&&typeof Pebble<"u"});var xh=f((rM,Eh)=>{"use strict";var OE=ni();Eh.exports=/web0s(?!.*chrome)/i.test(OE)});var Lh=f((aM,$h)=>{"use strict";var hi=j(),VE=Sh(),Ph=Ji(),So=bo().set,_E=go(),NE=no(),FE=Ih(),qE=xh(),vo=Qa(),Ah=hi.MutationObserver||hi.WebKitMutationObserver,kh=hi.document,wh=hi.process,Ya=hi.Promise,Io=VE("queueMicrotask"),pi,yo,To,za,Rh;Io||(or=new _E,ur=function(){var r,e;for(vo&&(r=wh.domain)&&r.exit();e=or.get();)try{e()}catch(t){throw or.head&&pi(),t}r&&r.enter()},!NE&&!vo&&!qE&&Ah&&kh?(yo=!0,To=kh.createTextNode(""),new Ah(ur).observe(To,{characterData:!0}),pi=function(){To.data=yo=!yo}):!FE&&Ya&&Ya.resolve?(za=Ya.resolve(void 0),za.constructor=Ya,Rh=Ph(za.then,za),pi=function(){Rh(ur)}):vo?pi=function(){wh.nextTick(ur)}:(So=Ph(So,hi),pi=function(){So(ur)}),Io=function(r){or.head||pi(),or.add(r)});var or,ur;$h.exports=Io});var Ch=f((sM,Mh)=>{"use strict";Mh.exports=function(r,e){try{arguments.length===1?console.error(r):console.error(r,e)}catch{}}});var Ka=f((nM,Dh)=>{"use strict";Dh.exports=function(r){try{return{error:!1,value:r()}}catch(e){return{error:!0,value:e}}}});var Ot=f((oM,Bh)=>{"use strict";var UE=j();Bh.exports=UE.Promise});var fi=f((uM,Nh)=>{"use strict";var HE=j(),lr=Ot(),jE=U(),GE=Cn(),WE=ro(),QE=ie(),Oh=to(),YE=Ne(),Eo=pn(),Vh=lr&&lr.prototype,zE=QE("species"),xo=!1,_h=jE(HE.PromiseRejectionEvent),KE=GE("Promise",function(){var r=WE(lr),e=r!==String(lr);if(!e&&Eo===66||YE&&!(Vh.catch&&Vh.finally))return!0;if(!Eo||Eo<51||!/native code/.test(r)){var t=new lr(function(s){s(1)}),i=function(s){s(function(){},function(){})},a=t.constructor={};if(a[zE]=i,xo=t.then(function(){})instanceof i,!xo)return!0}return!e&&(Oh==="BROWSER"||Oh==="DENO")&&!_h});Nh.exports={CONSTRUCTOR:KE,REJECTION_EVENT:_h,SUBCLASSING:xo}});var mi=f((lM,qh)=>{"use strict";var Fh=rt(),JE=TypeError,XE=function(r){var e,t;this.promise=new r(function(i,a){if(e!==void 0||t!==void 0)throw new JE("Bad Promise constructor");e=i,t=a}),this.resolve=Fh(e),this.reject=Fh(t)};qh.exports.f=function(r){return new XE(r)}});var of=f(()=>{"use strict";var ZE=Ae(),ex=Ne(),es=Qa(),bt=j(),vi=ye(),Uh=di(),Hh=zn(),tx=er(),ix=Up(),rx=rt(),Za=U(),ax=xe(),sx=jp(),nx=so(),Yh=bo().set,Ro=Lh(),ox=Ch(),ux=Ka(),lx=go(),zh=$n(),ts=Ot(),$o=fi(),Kh=mi(),is="Promise",Jh=$o.CONSTRUCTOR,cx=$o.REJECTION_EVENT,dx=$o.SUBCLASSING,Po=zh.getterFor(is),px=zh.set,bi=ts&&ts.prototype,Vt=ts,Ja=bi,Xh=bt.TypeError,Ao=bt.document,Lo=bt.process,ko=Kh.f,hx=ko,fx=!!(Ao&&Ao.createEvent&&bt.dispatchEvent),Zh="unhandledrejection",mx="rejectionhandled",jh=0,ef=1,bx=2,Mo=1,tf=2,Xa,Gh,gx,Wh,rf=function(r){var e;return ax(r)&&Za(e=r.then)?e:!1},af=function(r,e){var t=e.value,i=e.state===ef,a=i?r.ok:r.fail,s=r.resolve,n=r.reject,o=r.domain,l,u,d;try{a?(i||(e.rejection===tf&&vx(e),e.rejection=Mo),a===!0?l=t:(o&&o.enter(),l=a(t),o&&(o.exit(),d=!0)),l===r.promise?n(new Xh("Promise-chain cycle")):(u=rf(l))?vi(u,l,s,n):s(l)):n(t)}catch(c){o&&!d&&o.exit(),n(c)}},sf=function(r,e){r.notified||(r.notified=!0,Ro(function(){for(var t=r.reactions,i;i=t.get();)af(i,r);r.notified=!1,e&&!r.rejection&&Sx(r)}))},nf=function(r,e,t){var i,a;fx?(i=Ao.createEvent("Event"),i.promise=e,i.reason=t,i.initEvent(r,!1,!0),bt.dispatchEvent(i)):i={promise:e,reason:t},!cx&&(a=bt["on"+r])?a(i):r===Zh&&ox("Unhandled promise rejection",t)},Sx=function(r){vi(Yh,bt,function(){var e=r.facade,t=r.value,i=Qh(r),a;if(i&&(a=ux(function(){es?Lo.emit("unhandledRejection",t,e):nf(Zh,e,t)}),r.rejection=es||Qh(r)?tf:Mo,a.error))throw a.value})},Qh=function(r){return r.rejection!==Mo&&!r.parent},vx=function(r){vi(Yh,bt,function(){var e=r.facade;es?Lo.emit("rejectionHandled",e):nf(mx,e,r.value)})},gi=function(r,e,t){return function(i){r(e,i,t)}},Si=function(r,e,t){r.done||(r.done=!0,t&&(r=t),r.value=e,r.state=bx,sf(r,!0))},wo=function(r,e,t){if(!r.done){r.done=!0,t&&(r=t);try{if(r.facade===e)throw new Xh("Promise can't be resolved itself");var i=rf(e);i?Ro(function(){var a={done:!1};try{vi(i,e,gi(wo,a,r),gi(Si,a,r))}catch(s){Si(a,s,r)}}):(r.value=e,r.state=ef,sf(r,!1))}catch(a){Si({done:!1},a,r)}}};if(Jh&&(Vt=function(e){sx(this,Ja),rx(e),vi(Xa,this);var t=Po(this);try{e(gi(wo,t),gi(Si,t))}catch(i){Si(t,i)}},Ja=Vt.prototype,Xa=function(e){px(this,{type:is,done:!1,notified:!1,parent:!1,reactions:new lx,rejection:!1,state:jh,value:void 0})},Xa.prototype=Uh(Ja,"then",function(e,t){var i=Po(this),a=ko(nx(this,Vt));return i.parent=!0,a.ok=Za(e)?e:!0,a.fail=Za(t)&&t,a.domain=es?Lo.domain:void 0,i.state===jh?i.reactions.add(a):Ro(function(){af(a,i)}),a.promise}),Gh=function(){var r=new Xa,e=Po(r);this.promise=r,this.resolve=gi(wo,e),this.reject=gi(Si,e)},Kh.f=ko=function(r){return r===Vt||r===gx?new Gh(r):hx(r)},!ex&&Za(ts)&&bi!==Object.prototype)){Wh=bi.then,dx||Uh(bi,"then",function(e,t){var i=this;return new Vt(function(a,s){vi(Wh,i,a,s)}).then(e,t)},{unsafe:!0});try{delete bi.constructor}catch{}Hh&&Hh(bi,Ja)}ZE({global:!0,constructor:!0,wrap:!0,forced:Jh},{Promise:Vt});tx(Vt,is,!1,!0);ix(is)});var pf=f((pM,df)=>{"use strict";var yx=ie(),lf=yx("iterator"),cf=!1;try{uf=0,Co={next:function(){return{done:!!uf++}},return:function(){cf=!0}},Co[lf]=function(){return this},Array.from(Co,function(){throw 2})}catch{}var uf,Co;df.exports=function(r,e){try{if(!e&&!cf)return!1}catch{return!1}var t=!1;try{var i={};i[lf]=function(){return{next:function(){return{done:t=!0}}}},r(i)}catch{}return t}});var Do=f((hM,hf)=>{"use strict";var Tx=Ot(),Ix=pf(),Ex=fi().CONSTRUCTOR;hf.exports=Ex||!Ix(function(r){Tx.all(r).then(void 0,function(){})})});var ff=f(()=>{"use strict";var xx=Ae(),Px=ye(),Ax=rt(),kx=mi(),wx=Ka(),Rx=ja(),$x=Do();xx({target:"Promise",stat:!0,forced:$x},{all:function(e){var t=this,i=kx.f(t),a=i.resolve,s=i.reject,n=wx(function(){var o=Ax(t.resolve),l=[],u=0,d=1;Rx(e,function(c){var p=u++,h=!1;d++,Px(o,t,c).then(function(m){h||(h=!0,l[p]=m,--d||a(l))},s)}),--d||a(l)});return n.error&&s(n.value),i.promise}})});var bf=f(()=>{"use strict";var Lx=Ae(),Mx=Ne(),Cx=fi().CONSTRUCTOR,Oo=Ot(),Dx=it(),Bx=U(),Ox=di(),mf=Oo&&Oo.prototype;Lx({target:"Promise",proto:!0,forced:Cx,real:!0},{catch:function(r){return this.then(void 0,r)}});!Mx&&Bx(Oo)&&(Bo=Dx("Promise").prototype.catch,mf.catch!==Bo&&Ox(mf,"catch",Bo,{unsafe:!0}));var Bo});var gf=f(()=>{"use strict";var Vx=Ae(),_x=ye(),Nx=rt(),Fx=mi(),qx=Ka(),Ux=ja(),Hx=Do();Vx({target:"Promise",stat:!0,forced:Hx},{race:function(e){var t=this,i=Fx.f(t),a=i.reject,s=qx(function(){var n=Nx(t.resolve);Ux(e,function(o){_x(n,t,o).then(i.resolve,a)})});return s.error&&a(s.value),i.promise}})});var Sf=f(()=>{"use strict";var jx=Ae(),Gx=mi(),Wx=fi().CONSTRUCTOR;jx({target:"Promise",stat:!0,forced:Wx},{reject:function(e){var t=Gx.f(this),i=t.reject;return i(e),t.promise}})});var Vo=f((IM,vf)=>{"use strict";var Qx=ze(),Yx=xe(),zx=mi();vf.exports=function(r,e){if(Qx(r),Yx(e)&&e.constructor===r)return e;var t=zx.f(r),i=t.resolve;return i(e),t.promise}});var If=f(()=>{"use strict";var Kx=Ae(),Jx=it(),yf=Ne(),Xx=Ot(),Tf=fi().CONSTRUCTOR,Zx=Vo(),eP=Jx("Promise"),tP=yf&&!Tf;Kx({target:"Promise",stat:!0,forced:yf||Tf},{resolve:function(e){return Zx(tP&&this===eP?Xx:this,e)}})});var Ef=f(()=>{"use strict";of();ff();bf();gf();Sf();If()});var kf=f(()=>{"use strict";var iP=Ae(),rP=Ne(),rs=Ot(),aP=ve(),Pf=it(),Af=U(),sP=so(),xf=Vo(),nP=di(),No=rs&&rs.prototype,oP=!!rs&&aP(function(){No.finally.call({then:function(){}},function(){})});iP({target:"Promise",proto:!0,real:!0,forced:oP},{finally:function(r){var e=sP(this,Pf("Promise")),t=Af(r);return this.then(t?function(i){return xf(e,r()).then(function(){return i})}:r,t?function(i){return xf(e,r()).then(function(){throw i})}:r)}});!rP&&Af(rs)&&(_o=Pf("Promise").prototype.finally,No.finally!==_o&&nP(No,"finally",_o,{unsafe:!0}));var _o});var as=f((RM,wf)=>{"use strict";var uP=it();wf.exports=uP});var $f=f(($M,Rf)=>{"use strict";Bp();Ef();kf();var lP=as();Rf.exports=lP("Promise","finally")});var Mf=f((LM,Lf)=>{"use strict";var cP=$f();Lf.exports=cP});var ss=f((MM,Cf)=>{"use strict";var dP=Mf();Cf.exports=dP});var am=f(()=>{"use strict";var FP=Ae(),qP=Qi(),UP=Ba(),HP=Da(),jP=rn();FP({target:"Array",proto:!0},{at:function(e){var t=qP(this),i=UP(t),a=HP(e),s=a>=0?a:i+a;return s<0||s>=i?void 0:t[s]}});jP("at")});var nm=f((qC,sm)=>{"use strict";am();var GP=as();sm.exports=GP("Array","at")});var um=f((UC,om)=>{"use strict";var WP=nm();om.exports=WP});var hr=f((HC,lm)=>{"use strict";var QP=um();lm.exports=QP});var ab=f(()=>{"use strict"});var sb=f(()=>{"use strict"});var ob=f((jO,nb)=>{"use strict";var ek=xe(),tk=ri(),ik=ie(),rk=ik("match");nb.exports=function(r){var e;return ek(r)&&((e=r[rk])!==void 0?!!e:tk(r)==="RegExp")}});var lb=f((GO,ub)=>{"use strict";var ak=Zi(),sk=String;ub.exports=function(r){if(ak(r)==="Symbol")throw new TypeError("Cannot convert a Symbol value to a string");return sk(r)}});var db=f((WO,cb)=>{"use strict";var nk=ze();cb.exports=function(){var r=nk(this),e="";return r.hasIndices&&(e+="d"),r.global&&(e+="g"),r.ignoreCase&&(e+="i"),r.multiline&&(e+="m"),r.dotAll&&(e+="s"),r.unicode&&(e+="u"),r.unicodeSets&&(e+="v"),r.sticky&&(e+="y"),e}});var fb=f((QO,hb)=>{"use strict";var ok=ye(),uk=Fe(),lk=Hi(),ck=db(),pb=RegExp.prototype;hb.exports=function(r){var e=r.flags;return e===void 0&&!("flags"in pb)&&!uk(r,"flags")&&lk(pb,r)?ok(ck,r):e}});var bb=f((YO,mb)=>{"use strict";var mu=ne(),dk=Qi(),pk=Math.floor,hu=mu("".charAt),hk=mu("".replace),fu=mu("".slice),fk=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,mk=/\$([$&'`]|\d{1,2})/g;mb.exports=function(r,e,t,i,a,s){var n=t+r.length,o=i.length,l=mk;return a!==void 0&&(a=dk(a),l=fk),hk(s,l,function(u,d){var c;switch(hu(d,0)){case"$":return"$";case"&":return r;case"`":return fu(e,0,t);case"'":return fu(e,n);case"<":c=a[fu(d,1,-1)];break;default:var p=+d;if(p===0)return u;if(p>o){var h=pk(p/10);return h===0?u:h<=o?i[h-1]===void 0?hu(d,1):i[h-1]+hu(d,1):u}c=i[p-1]}return c===void 0?"":c})}});var vb=f(()=>{"use strict";var bk=Ae(),gk=ye(),gu=ne(),gb=qi(),Sk=U(),vk=ai(),yk=ob(),$i=lb(),Tk=Gi(),Ik=fb(),Ek=bb(),xk=ie(),Pk=Ne(),Ak=xk("replace"),kk=TypeError,bu=gu("".indexOf),wk=gu("".replace),Sb=gu("".slice),Rk=Math.max;bk({target:"String",proto:!0},{replaceAll:function(e,t){var i=gb(this),a,s,n,o,l,u,d,c,p,h,m=0,b="";if(!vk(e)){if(a=yk(e),a&&(s=$i(gb(Ik(e))),!~bu(s,"g")))throw new kk("`.replaceAll` does not allow non-global regexes");if(n=Tk(e,Ak),n)return gk(n,e,i,t);if(Pk&&a)return wk($i(i),e,t)}for(o=$i(i),l=$i(e),u=Sk(t),u||(t=$i(t)),d=l.length,c=Rk(1,d),p=bu(o,l);p!==-1;)h=u?$i(t(l,p,o)):Ek(l,o,p,[],void 0,t),b+=Sb(o,m,p)+h,m=p+d,p=p+c>o.length?-1:bu(o,l,p+c);return m<o.length&&(b+=Sb(o,m)),b}})});var Tb=f((JO,yb)=>{"use strict";ab();sb();vb();var $k=as();yb.exports=$k("String","replaceAll")});var Eb=f((XO,Ib)=>{"use strict";var Lk=Tb();Ib.exports=Lk});var Pb=f((ZO,xb)=>{"use strict";var Mk=Eb();xb.exports=Mk});var Xu="2.0.115-beta.0";var se=(a=>(a.STOPPED="stopped",a.READY="ready",a.PLAYING="playing",a.PAUSED="paused",a))(se||{}),mt=(T=>(T.MPEG="MPEG",T.DASH="DASH",T.DASH_SEP="DASH_SEP",T.DASH_SEP_VK="DASH_SEP",T.DASH_WEBM="DASH_WEBM",T.DASH_WEBM_AV1="DASH_WEBM_AV1",T.DASH_STREAMS="DASH_STREAMS",T.DASH_WEBM_VK="DASH_WEBM",T.DASH_ONDEMAND="DASH_ONDEMAND",T.DASH_ONDEMAND_VK="DASH_ONDEMAND",T.DASH_LIVE="DASH_LIVE",T.DASH_LIVE_CMAF="DASH_LIVE_CMAF",T.DASH_LIVE_WEBM="DASH_LIVE_WEBM",T.HLS="HLS",T.HLS_ONDEMAND="HLS_ONDEMAND",T.HLS_JS="HLS",T.HLS_LIVE="HLS_LIVE",T.HLS_LIVE_CMAF="HLS_LIVE_CMAF",T.WEB_RTC_LIVE="WEB_RTC_LIVE",T))(mt||{});var Ia=(a=>(a.NOT_AVAILABLE="NOT_AVAILABLE",a.AVAILABLE="AVAILABLE",a.CONNECTING="CONNECTING",a.CONNECTED="CONNECTED",a))(Ia||{}),Ks=(i=>(i.HTTP1="http1",i.HTTP2="http2",i.QUIC="quic",i))(Ks||{});var Js=(n=>(n.NONE="none",n.INLINE="inline",n.FULLSCREEN="fullscreen",n.SECOND_SCREEN="second_screen",n.PIP="pip",n.INVISIBLE="invisible",n))(Js||{});import{assertNever as al,assertNonNullable as Jg,isNonNullable as Ea,ValueSubject as Xs,Subject as Xg,Subscription as Zg,merge as eS,observableFrom as tS,fromEvent as el,map as tl,tap as il,filterChanged as iS,isNullable as Zs,ErrorCategory as rl}from"@vkontakte/videoplayer-shared";var Zu=r=>new Promise((e,t)=>{let i=document.createElement("script");i.setAttribute("src",r),i.onload=()=>e,i.onerror=()=>t,document.body.appendChild(i)});var xa=class{constructor(e){this.connection$=new Xs(void 0);this.castState$=new Xs("NOT_AVAILABLE");this.errorEvent$=new Xg;this.realCastState$=new Xs("NOT_AVAILABLE");this.subscription=new Zg;this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastInitializer");let t="chrome"in window;if(this.log({message:`[constructor] receiverApplicationId: ${this.params.receiverApplicationId}, isDisabled: ${this.params.isDisabled}, isSupported: ${t}`}),e.isDisabled||!t)return;let i=Ea(window.chrome?.cast),a=!!window.__onGCastApiAvailable;i?this.initializeCastApi():(window.__onGCastApiAvailable=s=>{delete window.__onGCastApiAvailable,s&&this.initializeCastApi()},a||Zu("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:rl.NETWORK,message:"Script loading failed!"})))}connect(){cast.framework.CastContext.getInstance()?.requestSession()}disconnect(){cast.framework.CastContext.getInstance()?.getCurrentSession()?.endSession(!0)}stopMedia(){return new Promise((e,t)=>{cast.framework.CastContext.getInstance()?.getCurrentSession()?.getMediaSession()?.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){Ea(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();Zs(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();Zs(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),i=cast.framework.CastContext.getInstance();this.subscription.add(el(i,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(a=>{switch(a.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:this.contentId=i.getCurrentSession()?.getMediaSession()?.media?.contentId;break;case cast.framework.SessionState.NO_SESSION:case cast.framework.SessionState.SESSION_ENDING:case cast.framework.SessionState.SESSION_ENDED:case cast.framework.SessionState.SESSION_START_FAILED:this.contentId=void 0;break;default:return al(a.sessionState)}})).add(eS(el(i,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(il(a=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(a)}`})}),tl(a=>a.castState)),tS([i.getCastState()])).pipe(iS(),tl(rS),il(a=>{this.log({message:`realCastState$: ${a}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(a=>{let s=a==="CONNECTED",n=Ea(this.connection$.getValue());if(s&&!n){let o=i.getCurrentSession();Jg(o);let l=o.getCastDevice(),u=o.getMediaSession()?.media?.contentId;(Zs(u)||u===this.contentId)&&(this.log({message:"connection created"}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:o,castDevice:l}))}else!s&&n&&(this.log({message:"connection destroyed"}),this.connection$.next(void 0));this.castState$.next(a==="CONNECTED"?Ea(this.connection$.getValue())?"CONNECTED":"AVAILABLE":a)}))}initializeCastApi(){let e,t,i;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,i=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:i}),this.initListeners()}catch(a){this.errorEvent$.next({id:"ChromecastInitializer",category:rl.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:a})}}},rS=r=>{switch(r){case cast.framework.CastState.NO_DEVICES_AVAILABLE:return"NOT_AVAILABLE";case cast.framework.CastState.NOT_CONNECTED:return"AVAILABLE";case cast.framework.CastState.CONNECTING:return"CONNECTING";case cast.framework.CastState.CONNECTED:return"CONNECTED";default:return al(r)}};var Ig=Ye(eo(),1);var Hf=Ye(ss(),1);import{assertNever as Df}from"@vkontakte/videoplayer-shared";var X=(r,e=0,t=0)=>{switch(t){case 0:return r.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case 1:{if(e===0)return r;let i=new URL(r);return i.searchParams.append("playback_shift",e.toFixed(0)),i.toString()}case 2:{let i=new URL(r);return!i.searchParams.get("offset_p")&&e===0?r:(i.searchParams.set("offset_p",e.toFixed(0)),i.toString())}default:Df(t)}return r},Fo=(r,e)=>{switch(e){case 0:return NaN;case 1:{let t=new URL(r);return Number(t.searchParams.get("playback_shift"))}case 2:{let t=new URL(r);return Number(t.searchParams.get("offset_p")??0)}default:Df(e)}};var E=(r,e,t=!1)=>{let i=r.getTransition();(t||!i||i.to===e)&&r.setState(e)};import{isNonNullable as pP,Subject as ns,merge as Bf}from"@vkontakte/videoplayer-shared";var L=class{constructor(e){this.transitionStarted$=new ns;this.transitionEnded$=new ns;this.transitionUpdated$=new ns;this.forceChanged$=new ns;this.stateChangeStarted$=Bf(this.transitionStarted$,this.transitionUpdated$);this.stateChangeEnded$=Bf(this.transitionEnded$,this.forceChanged$);this.state=e,this.prevState=void 0}setState(e){let t=this.transition,i=this.state;this.transition=void 0,this.prevState=i,this.state=e,t?t.to===e?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:i,to:e,canceledTransition:t})}startTransitionTo(e){let t=this.transition,i=this.state;i===e||pP(t)&&t.to===e||(this.prevState=i,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:i,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}};import{assertNever as hP}from"@vkontakte/videoplayer-shared";var Of=r=>{switch(r){case"MPEG":case"DASH":case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":case"HLS":case"HLS_ONDEMAND":return!1;case"DASH_LIVE":case"DASH_LIVE_CMAF":case"HLS_LIVE":case"HLS_LIVE_CMAF":case"DASH_LIVE_WEBM":case"WEB_RTC_LIVE":return!0;default:return hP(r)}};import{assertNever as yi,assertNonNullable as _t,debounce as Vf,ErrorCategory as _f,fromEvent as Nt,isNonNullable as Nf,map as Ff,merge as qf,observableFrom as fP,Subject as mP,Subscription as qo,timeout as bP,getHighestQuality as gP}from"@vkontakte/videoplayer-shared";var SP=5,vP=5,yP=500,Uf=7e3,cr=class{constructor(e){this.subscription=new qo;this.loadMediaTimeoutSubscription=new qo;this.videoState=new L("stopped");this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),i=this.params.desiredState.playbackState.getState(),a=this.params.desiredState.playbackState.getTransition(),s=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${i}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(s)};`}),i==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.stop());return}if(!t){if(a?.to!=="paused"&&s.state==="requested"&&e!=="stopped"){this.seek(s.position/1e3);return}switch(i){case"ready":{switch(e){case"playing":case"paused":case"ready":break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:yi(e)}break}case"playing":{switch(e){case"playing":break;case"paused":this.videoState.startTransitionTo("playing"),this.params.connection.remotePlayerController.playOrPause();break;case"ready":this.videoState.startTransitionTo("playing"),this.params.connection.remotePlayerController.playOrPause();break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:yi(e)}break}case"paused":{switch(e){case"playing":this.videoState.startTransitionTo("paused"),this.params.connection.remotePlayerController.playOrPause();break;case"paused":break;case"ready":this.videoState.startTransitionTo("paused"),this.videoState.setState("paused");break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:yi(e)}break}default:yi(i)}}};this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Of(e.format)),this.params.output.isAudioAvailable$.next(!0),this.handleRemoteVolumeChange({volume:this.params.connection.remotePlayer.volumeLevel,muted:this.params.connection.remotePlayer.isMuted});let t=this.params.connection.session.getMediaSession();t&&this.restoreSession(t),this.subscribe()}destroy(){this.log({message:"[destroy]"}),this.subscription.unsubscribe()}subscribe(){this.subscription.add(this.loadMediaTimeoutSubscription);let e=new qo;this.subscription.add(e),this.subscription.add(qf(this.videoState.stateChangeStarted$.pipe(Ff(a=>`stateChangeStarted$ ${JSON.stringify(a)}`)),this.videoState.stateChangeEnded$.pipe(Ff(a=>`stateChangeEnded$ ${JSON.stringify(a)}`))).subscribe(a=>this.log({message:`[videoState] ${a}`})));let t=(a,s)=>this.subscription.add(a.subscribe(s));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{let a=new mP;e.add(a.pipe(Vf(yP)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let s=NaN;e.add(Nt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(n=>{this.logRemoteEvent(n);let o=n.value;this.params.output.position$.next(o),(this.params.desiredState.seekState.getState().state==="applying"||Math.abs(o-s)>SP)&&a.next(o),s=o})),e.add(Nt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(n=>{this.logRemoteEvent(n),this.params.output.duration$.next(n.value)}))}t(Nt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(Nt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemotePause():this.handleRemotePlay()}),t(Nt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),a=>{this.logRemoteEvent(a);let{remotePlayer:s}=this.params.connection,n=a.value,o=this.params.output.isBuffering$.getValue(),l=n===chrome.cast.media.PlayerState.BUFFERING;switch(o!==l&&this.params.output.isBuffering$.next(l),n){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&s.duration-s.currentTime<vP&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),E(this.params.desiredState.playbackState,"stopped");break;case chrome.cast.media.PlayerState.PAUSED:{this.handleRemotePause();break}case chrome.cast.media.PlayerState.PLAYING:this.handleRemotePlay();break;case chrome.cast.media.PlayerState.BUFFERING:break;default:yi(n)}}),t(Nt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({volume:a.value})}),t(Nt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({muted:a.value})});let i=qf(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,fP(["init"])).pipe(Vf(0));t(i,this.syncPlayback)}restoreSession(e){this.log({message:"restoreSession"});let{remotePlayer:t}=this.params.connection;if(e.playerState!==chrome.cast.media.PlayerState.IDLE){t.isPaused?(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused")):(this.videoState.setState("playing"),E(this.params.desiredState.playbackState,"playing"));let i=this.params.output.isLive$.getValue();this.params.output.duration$.next(i?0:t.duration),this.params.output.position$.next(i?0:t.currentTime),this.params.desiredState.seekState.setState({state:"none"})}}prepare(){let e=this.params.format;this.log({message:`[prepare] format: ${e}`});let t=this.createMediaInfo(e),i=this.createLoadRequest(t);this.loadMedia(i)}handleRemotePause(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="paused"||e==="playing")&&(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused"))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="playing"||e==="paused")&&(this.videoState.setState("playing"),E(this.params.desiredState.playbackState,"playing"))}handleRemoteReady(){this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.params.desiredState.playbackState.getTransition()?.to==="ready"&&E(this.params.desiredState.playbackState,"ready")}handleRemoteStop(){this.videoState.getState()!=="stopped"&&this.videoState.setState("stopped")}handleRemoteVolumeChange(e){let t=this.params.output.volume$.getValue(),i={volume:e.volume??t.volume,muted:e.muted??t.muted};(i.volume!==t.volume||i.muted!==i.muted)&&this.params.output.volume$.next(i)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:i}=this.params.connection;t.currentTime=e,i.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createMediaInfo(e){let t=this.params.source,i,a,s;switch(e){case"MPEG":{let u=t[e];_t(u);let d=gP(Object.keys(u));_t(d);let c=u[d];_t(c),i=c,a="video/mp4",s=chrome.cast.media.StreamType.BUFFERED;break}case"HLS":case"HLS_ONDEMAND":{let u=t[e];_t(u),i=u.url,a="application/x-mpegurl",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":{let u=t[e];_t(u),i=u.url,a="application/dash+xml",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_LIVE_CMAF":{let u=t[e];_t(u),i=u.url,a="application/dash+xml",s=chrome.cast.media.StreamType.LIVE;break}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let u=t[e];_t(u),i=X(u.url),a="application/x-mpegurl",s=chrome.cast.media.StreamType.LIVE;break}case"DASH_LIVE":case"WEB_RTC_LIVE":{let u="Unsupported format for Chromecast",d=new Error(u);throw this.params.output.error$.next({id:"ChromecastProvider.createMediaInfo()",category:_f.VIDEO_PIPELINE,message:u,thrown:d}),d}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return yi(e)}let n=new chrome.cast.media.MediaInfo(this.params.meta.videoId??i,a);n.contentUrl=i,n.streamType=s,n.metadata=new chrome.cast.media.GenericMediaMetadata;let{title:o,subtitle:l}=this.params.meta;return Nf(o)&&(n.metadata.title=o),Nf(l)&&(n.metadata.subtitle=l),n}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let i=this.params.desiredState.seekState.getState();return i.state==="applying"||i.state==="requested"?t.currentTime=this.params.output.isLive$.getValue()?0:i.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),i=new Promise((a,s)=>{this.loadMediaTimeoutSubscription.add(bP(Uf).subscribe(()=>s(`timeout(${Uf})`)))});(0,Hf.default)(Promise.race([t,i]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state==="applying"&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},a=>{let s=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${a}`;this.log({message:s}),this.params.output.error$.next({id:"ChromecastProvider.loadMedia",category:_f.VIDEO_PIPELINE,message:s,thrown:a})}),()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}};import{clearVideoElement as Gf}from"@vkontakte/videoplayer-shared";import{clearVideoElement as TP}from"@vkontakte/videoplayer-shared";var jf=r=>{try{r.pause(),r.playbackRate=0,TP(r),r.remove()}catch(e){console.error(e)}};import{fromEvent as IP,Subscription as EP}from"@vkontakte/videoplayer-shared";var Uo=class{constructor(){this.attribute="data-pool-reused"}get(e){return e.hasAttribute(this.attribute)}set(e,t){e.toggleAttribute(this.attribute,t)}delete(e){e.removeAttribute(this.attribute)}},Ho=window.WeakMap?new WeakMap:new Uo,jo=window.WeakMap?new WeakMap:new Map,xP=(r,e=20)=>{let t=0;return IP(r,"ratechange").subscribe(i=>{t++,t>=e&&(r.currentTime=r.currentTime,t=0)})},oe=(r,{audioVideoSyncRate:e})=>{let t=r.querySelector("video"),i=!!t;t?Gf(t):(t=document.createElement("video"),r.appendChild(t)),Ho.set(t,i);let a=new EP;return a.add(xP(t,e)),jo.set(t,a),t.setAttribute("crossorigin","anonymous"),t.setAttribute("playsinline","playsinline"),t.controls=!1,t.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),t},ue=r=>{jo.get(r)?.unsubscribe(),jo.delete(r);let t=Ho.get(r);Ho.delete(r),t?Gf(r):jf(r)};import{assertNonNullable as dr,isNonNullable as Je,isNullable as kP,fromEvent as Ti,merge as Wf,observableFrom as Qf,filterChanged as Yf,map as pr,Subject as zf,Subscription as wP,ValueSubject as RP,ErrorCategory as $P}from"@vkontakte/videoplayer-shared";import{isNonNullable as Go,isNullable as PP,Subscription as AP}from"@vkontakte/videoplayer-shared";var os=(r,e,t,{equal:i=(n,o)=>n===o,changed$:a,onError:s}={})=>{let n=r.getState(),o=e(),l=PP(a),u=new AP;return a&&u.add(a.subscribe(d=>{let c=r.getState();i(d,c)&&r.setState(d)},s)),i(o,n)||(t(n),l&&r.setState(n)),u.add(r.stateChangeStarted$.subscribe(d=>{t(d.to),l&&r.setState(d.to)},s)),u},Ke=(r,e,t)=>os(e,()=>r.loop,i=>{Go(i)&&(r.loop=i)},{onError:t}),le=(r,e,t,i)=>os(e,()=>({muted:r.muted,volume:r.volume}),a=>{Go(a)&&(r.muted=a.muted,r.volume=a.volume)},{equal:(a,s)=>a===s||a?.muted===s?.muted&&a?.volume===s?.volume,changed$:t,onError:i}),ke=(r,e,t,i)=>os(e,()=>r.playbackRate,a=>{Go(a)&&(r.playbackRate=a)},{changed$:t,onError:i}),gt=os;var LP=r=>["__",r.language,r.label].join("|"),MP=(r,e)=>{if(r.id===e)return!0;let[t,i,a]=e.split("|");return r.language===i&&r.label===a},Wo=class r{constructor(){this.available$=new zf;this.current$=new RP(void 0);this.error$=new zf;this.subscription=new wP;this.externalTracks=new Map;this.internalTracks=new Map}connect(e,t,i){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let a=s=>{this.error$.next({id:"TextTracksManager",category:$P.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:s})};this.subscription.add(this.available$.subscribe(i.availableTextTracks$)),this.subscription.add(this.current$.subscribe(i.currentTextTrack$)),this.subscription.add(this.error$.subscribe(i.error$)),this.subscription.add(gt(t.internalTextTracks,()=>Object.values(this.internalTracks),s=>{Je(s)&&this.setInternal(s)},{equal:(s,n)=>Je(s)&&Je(n)&&s.length===n.length&&s.every(({id:o},l)=>o===n[l].id),changed$:this.available$.pipe(pr(s=>s.filter(({type:n})=>n==="internal"))),onError:a})),this.subscription.add(gt(t.externalTextTracks,()=>Object.values(this.externalTracks),s=>{Je(s)&&this.setExternal(s)},{equal:(s,n)=>Je(s)&&Je(n)&&s.length===n.length&&s.every(({id:o},l)=>o===n[l].id),changed$:this.available$.pipe(pr(s=>s.filter(({type:n})=>n==="external"))),onError:a})),this.subscription.add(gt(t.currentTextTrack,()=>{if(this.video)return;let s=this.htmlTextTracksAsArray().find(({mode:n})=>n==="showing");return s&&this.htmlTextTrackToITextTrack(s).id},s=>this.select(s),{changed$:this.current$,onError:a})),this.subscription.add(gt(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let s of this.htmlTextTracksAsArray())this.applyCueSettings(s.cues),this.applyCueSettings(s.activeCues)}))}subscribe(){dr(this.video);let{textTracks:e}=this.video;this.subscription.add(Ti(e,"addtrack").subscribe(()=>{let i=this.current$.getValue();i&&this.select(i)})),this.subscription.add(Wf(Ti(e,"addtrack"),Ti(e,"removetrack"),Qf(["init"])).pipe(pr(()=>this.htmlTextTracksAsArray().map(i=>this.htmlTextTrackToITextTrack(i))),Yf((i,a)=>i.length===a.length&&i.every(({id:s},n)=>s===a[n].id))).subscribe(this.available$)),this.subscription.add(Wf(Ti(e,"change"),Qf(["init"])).pipe(pr(()=>this.htmlTextTracksAsArray().find(({mode:i})=>i==="showing")),pr(i=>i&&this.htmlTextTrackToITextTrack(i).id),Yf()).subscribe(this.current$));let t=i=>this.applyCueSettings(i.target?.activeCues??null);this.subscription.add(Ti(e,"addtrack").subscribe(i=>{i.track?.addEventListener("cuechange",t);let a=s=>{let n=s.target?.cues??null;n&&n.length&&(this.applyCueSettings(s.target?.cues??null),s.target?.removeEventListener("cuechange",a))};i.track?.addEventListener("cuechange",a)})),this.subscription.add(Ti(e,"removetrack").subscribe(i=>{i.track?.removeEventListener("cuechange",t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let i of Array.from(e)){let a=i;Je(t.align)&&(a.align=t.align),Je(t.position)&&(a.position=t.position),Je(t.size)&&(a.size=t.size),Je(t.line)&&(a.line=t.line)}}htmlTextTracksAsArray(e=!1){dr(this.video);let t=[...this.video.textTracks];return e?t:t.filter(r.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:i}=e,a=e.id?e.id:LP(e),s=this.externalTracks.has(a),n=a.includes("auto");return s?{id:a,type:"external",isAuto:n,language:t,label:i,url:this.externalTracks.get(a)?.url}:{id:a,type:"internal",isAuto:n,language:t,label:i,url:this.internalTracks.get(a)?.url}}static isHealthyTrack(e){return!(e.kind==="metadata"||e.groupId||e.id===""&&e.label===""&&e.language==="")}setExternal(e){this.internalTracks.size>0&&Array.from(this.internalTracks).forEach(([,t])=>this.detach(t)),e.filter(({id:t})=>!this.externalTracks.has(t)).forEach(t=>this.attach(t)),Array.from(this.externalTracks).filter(([t])=>!e.find(i=>i.id===t)).forEach(([,t])=>this.detach(t))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:i,language:a,isAuto:s})=>!this.internalTracks.has(i)&&!t.some(([,n])=>n.language===a&&n.isAuto===s)).forEach(i=>this.attach(i)),Array.from(this.internalTracks).filter(([i])=>!e.find(a=>a.id===i)).forEach(([,i])=>this.detach(i))}select(e){dr(this.video);for(let t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(let t of this.htmlTextTracksAsArray(!0))(kP(e)||!MP(t,e))&&(t.mode="disabled")}destroy(){if(this.subscription.unsubscribe(),this.video)for(let e of Array.from(this.video.getElementsByTagName("track"))){let t=e.getAttribute("id");t&&this.externalTracks.has(t)&&this.video.removeChild(e)}this.externalTracks.clear()}attach(e){dr(this.video);let t=document.createElement("track");t.setAttribute("src",e.url),t.setAttribute("id",e.id),e.label&&t.setAttribute("label",e.label),e.language&&t.setAttribute("srclang",e.language),e.type==="external"?this.externalTracks.set(e.id,e):e.type==="internal"&&this.internalTracks.set(e.id,e),this.video.appendChild(t)}detach(e){dr(this.video);let t=Array.prototype.find.call(this.video.getElementsByTagName("track"),i=>i.getAttribute("id")===e.id);t&&this.video.removeChild(t),e.type==="external"?this.externalTracks.delete(e.id):e.type==="internal"&&this.internalTracks.delete(e.id)}},we=Wo;var nt=class{constructor(){this.pausedTime=0;this.streamOffset=0;this.pauseTimestamp=0}getTotalPausedTime(){return this.pausedTime+this.getCurrentPausedTime()}getCurrentPausedTime(){return this.pauseTimestamp>0?Date.now()-this.pauseTimestamp:0}getStreamOffset(){return this.streamOffset}getTotalOffset(){return this.getTotalPausedTime()+this.streamOffset}pause(){this.pauseTimestamp===0&&(this.pauseTimestamp=Date.now())}resume(){this.pauseTimestamp>0&&(this.pausedTime+=this.getCurrentPausedTime(),this.pauseTimestamp=0)}resetTo(e,t=!1){this.streamOffset=e,this.pauseTimestamp=0,this.pausedTime=0,t&&this.pause()}};var Kf=r=>{let e=r;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},Qo=r=>{let e=Kf(r);return!!(e&&e.fullscreenElement&&e.fullscreenElement===r)},Jf=r=>{let e=Kf(r);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===r)};import{fromEvent as Re,map as St,merge as Zf,filterChanged as DP,isNonNullable as em,Subject as BP,filter as tm,mapTo as im,combine as OP,once as VP,ErrorCategory as _P,ValueSubject as rm,clientChecker as NP}from"@vkontakte/videoplayer-shared";var CP=3,Xf=(r,e,t=CP)=>{let i=0,a=0;for(let s=0;s<r.length;s++){let n=r.start(s),o=r.end(s);if(n<=e&&e<=o){if(i=n,a=o,!t)return{from:i,to:a};for(let l=s-1;l>=0;l--)r.end(l)+t>=i&&(i=r.start(l));for(let l=s+1;l<r.length;l++)r.start(l)-t<=a&&(a=r.end(l))}}return{from:i,to:a}};var ce=r=>{let e=T=>Re(r,T).pipe(im(void 0)),i=Zf(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(T=>Re(r,T))).pipe(St(T=>T.type==="ended"?r.readyState<2:r.readyState<3),DP()),a=Zf(Re(r,"progress"),Re(r,"timeupdate")).pipe(St(()=>Xf(r.buffered,r.currentTime))),s=NP.isSafari?OP({play:e("play").pipe(VP()),playing:e("playing")}).pipe(im(void 0)):e("playing"),n=Re(r,"volumechange").pipe(St(()=>({muted:r.muted,volume:r.volume}))),o=Re(r,"ratechange").pipe(St(()=>r.playbackRate)),l=Re(r,"error").pipe(tm(()=>!!(r.error||r.played.length)),St(()=>{let T=r.error;return{id:T?`MediaError#${T.code}`:"HtmlVideoError",category:_P.VIDEO_PIPELINE,message:T?T.message:"Error event from HTML video element",thrown:r.error??void 0}})),u=Re(r,"timeupdate").pipe(St(()=>r.currentTime)),d=new BP,c=.3,p;u.subscribe(T=>{r.loop&&em(p)&&em(T)&&p>=r.duration-c&&T<=c&&d.next(p),p=T});let h=e("pause").pipe(tm(()=>!r.error&&p!==r.duration)),m=Re(r,"enterpictureinpicture"),b=Re(r,"leavepictureinpicture"),g=new rm(Jf(r));m.subscribe(()=>g.next(!0)),b.subscribe(()=>g.next(!1));let y=new rm(Qo(r));return Re(r,"fullscreenchange").pipe(St(()=>Qo(r))).subscribe(y),{playing$:s,pause$:h,canplay$:e("canplay"),ended$:e("ended"),looped$:d,error$:l,seeked$:e("seeked"),seeking$:e("seeking"),progress$:e("progress"),loadStart$:e("loadstart"),loadedMetadata$:e("loadedmetadata"),loadedData$:e("loadeddata"),timeUpdate$:u,durationChange$:Re(r,"durationchange").pipe(St(()=>r.duration)),isBuffering$:i,currentBuffer$:a,volumeState$:n,playbackRateState$:o,inPiP$:g,inFullscreen$:y}};import{VideoQuality as vt}from"@vkontakte/videoplayer-shared";var yt=r=>{switch(r){case"mobile":return vt.Q_144P;case"lowest":return vt.Q_240P;case"low":return vt.Q_360P;case"sd":case"medium":return vt.Q_480P;case"hd":case"high":return vt.Q_720P;case"fullhd":case"full":return vt.Q_1080P;case"quadhd":case"quad":return vt.Q_1440P;case"ultrahd":case"ultra":return vt.Q_2160P}};var Ft=Ye(hr(),1);import{isNonNullable as Y,isNullable as zo,now as gm,isHigher as Ko,isHigherOrEqual as hm,isInvariantQuality as fm,isLower as mm,isLowerOrEqual as Jo,videoSizeToQuality as YP,assertNotEmptyArray as Sm,assertNonNullable as zP}from"@vkontakte/videoplayer-shared";var Yo=!1,ot={},cm=r=>{Yo=r},dm=()=>{ot={}},pm=r=>{r(ot)},fr=(r,e)=>{Yo&&(ot.meta=ot.meta??{},ot.meta[r]=e)},re=class{constructor(e){this.name=e}next(e){if(!Yo)return;ot.series=ot.series??{};let t=ot.series[this.name]??[];t.push([Date.now(),e]),ot.series[this.name]=t}};var KP=new re("best_bitrate"),vm=(r,e,t)=>(e-t)*Math.pow(2,-10*r)+t;var Xo=r=>(e,t)=>r*(Number(e.bitrate)-Number(t.bitrate)),mr=class{constructor(){this.history={}}recordSelection(e){this.history[e.id]=gm()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}},ym='Assertion "ABR Tracks is empty array" failed',us=(r,e,t,i)=>{let a=[...e].sort(Xo(1)),s=[...t].sort(Xo(1)),n=s.filter(l=>Y(l.bitrate)&&Y(r.bitrate)?r.bitrate/l.bitrate>i:!0),o=(0,Ft.default)(s,Math.round(s.length*a.indexOf(r)/(a.length+1)))??(0,Ft.default)(s,-1);return o&&n.includes(o)?o:n.length?(0,Ft.default)(n,-1):(0,Ft.default)(s,0)},bm=r=>"quality"in r,Tm=(r,e,t,i)=>{let a=Y(i?.last?.bitrate)&&Y(t?.bitrate)&&i.last.bitrate<t.bitrate?r.trackCooldownIncreaseQuality:r.trackCooldownDecreaseQuality,s=t&&i&&i.history[t.id]&&gm()-i.history[t.id]<=a&&(!i.last||t.id!==i.last.id);if(t?.id&&i&&!s&&i.recordSelection(t),s&&i?.last){let n=i.last;i?.recordSwitch(n);let o=bm(n)?"video":"audio",l=bm(n)?n.quality:n.bitrate;return e({message:`
6
+ var Gg=Object.create;var Ju=Object.defineProperty;var Wg=Object.getOwnPropertyDescriptor;var Qg=Object.getOwnPropertyNames;var Yg=Object.getPrototypeOf,zg=Object.prototype.hasOwnProperty;var f=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var Kg=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Qg(e))!zg.call(r,a)&&a!==t&&Ju(r,a,{get:()=>e[a],enumerable:!(i=Wg(e,a))||i.enumerable});return r};var Ye=(r,e,t)=>(t=r!=null?Gg(Yg(r)):{},Kg(e||!r||!r.__esModule?Ju(t,"default",{value:r,enumerable:!0}):t,r));var ve=f((KR,sl)=>{"use strict";sl.exports=function(r){try{return!!r()}catch{return!0}}});var Fi=f((JR,nl)=>{"use strict";var aS=ve();nl.exports=!aS(function(){var r=function(){}.bind();return typeof r!="function"||r.hasOwnProperty("prototype")})});var ne=f((XR,ll)=>{"use strict";var ol=Fi(),ul=Function.prototype,en=ul.call,sS=ol&&ul.bind.bind(en,en);ll.exports=ol?sS:function(r){return function(){return en.apply(r,arguments)}}});var ri=f((ZR,dl)=>{"use strict";var cl=ne(),nS=cl({}.toString),oS=cl("".slice);dl.exports=function(r){return oS(nS(r),8,-1)}});var hl=f((e$,pl)=>{"use strict";var uS=ne(),lS=ve(),cS=ri(),tn=Object,dS=uS("".split);pl.exports=lS(function(){return!tn("z").propertyIsEnumerable(0)})?function(r){return cS(r)==="String"?dS(r,""):tn(r)}:tn});var ai=f((t$,fl)=>{"use strict";fl.exports=function(r){return r==null}});var qi=f((i$,ml)=>{"use strict";var pS=ai(),hS=TypeError;ml.exports=function(r){if(pS(r))throw new hS("Can't call method on "+r);return r}});var si=f((r$,bl)=>{"use strict";var fS=hl(),mS=qi();bl.exports=function(r){return fS(mS(r))}});var rn=f((a$,gl)=>{"use strict";gl.exports=function(){}});var Mt=f((s$,Sl)=>{"use strict";Sl.exports={}});var j=f((an,vl)=>{"use strict";var Ui=function(r){return r&&r.Math===Math&&r};vl.exports=Ui(typeof globalThis=="object"&&globalThis)||Ui(typeof window=="object"&&window)||Ui(typeof self=="object"&&self)||Ui(typeof global=="object"&&global)||Ui(typeof an=="object"&&an)||function(){return this}()||Function("return this")()});var U=f((n$,yl)=>{"use strict";var sn=typeof document=="object"&&document.all;yl.exports=typeof sn>"u"&&sn!==void 0?function(r){return typeof r=="function"||r===sn}:function(r){return typeof r=="function"}});var El=f((o$,Il)=>{"use strict";var bS=j(),gS=U(),Tl=bS.WeakMap;Il.exports=gS(Tl)&&/native code/.test(String(Tl))});var xe=f((u$,xl)=>{"use strict";var SS=U();xl.exports=function(r){return typeof r=="object"?r!==null:SS(r)}});var Pe=f((l$,Pl)=>{"use strict";var vS=ve();Pl.exports=!vS(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7})});var Pa=f((c$,kl)=>{"use strict";var yS=j(),Al=xe(),nn=yS.document,TS=Al(nn)&&Al(nn.createElement);kl.exports=function(r){return TS?nn.createElement(r):{}}});var on=f((d$,wl)=>{"use strict";var IS=Pe(),ES=ve(),xS=Pa();wl.exports=!IS&&!ES(function(){return Object.defineProperty(xS("div"),"a",{get:function(){return 7}}).a!==7})});var un=f((p$,Rl)=>{"use strict";var PS=Pe(),AS=ve();Rl.exports=PS&&AS(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42})});var ze=f((h$,$l)=>{"use strict";var kS=xe(),wS=String,RS=TypeError;$l.exports=function(r){if(kS(r))return r;throw new RS(wS(r)+" is not an object")}});var ye=f((f$,Ll)=>{"use strict";var $S=Fi(),Aa=Function.prototype.call;Ll.exports=$S?Aa.bind(Aa):function(){return Aa.apply(Aa,arguments)}});var ka=f((m$,Ml)=>{"use strict";Ml.exports={}});var it=f((b$,Dl)=>{"use strict";var ln=ka(),cn=j(),LS=U(),Cl=function(r){return LS(r)?r:void 0};Dl.exports=function(r,e){return arguments.length<2?Cl(ln[r])||Cl(cn[r]):ln[r]&&ln[r][e]||cn[r]&&cn[r][e]}});var Hi=f((g$,Bl)=>{"use strict";var MS=ne();Bl.exports=MS({}.isPrototypeOf)});var ni=f((S$,_l)=>{"use strict";var CS=j(),Ol=CS.navigator,Vl=Ol&&Ol.userAgent;_l.exports=Vl?String(Vl):""});var pn=f((v$,jl)=>{"use strict";var Hl=j(),dn=ni(),Nl=Hl.process,Fl=Hl.Deno,ql=Nl&&Nl.versions||Fl&&Fl.version,Ul=ql&&ql.v8,_e,wa;Ul&&(_e=Ul.split("."),wa=_e[0]>0&&_e[0]<4?1:+(_e[0]+_e[1]));!wa&&dn&&(_e=dn.match(/Edge\/(\d+)/),(!_e||_e[1]>=74)&&(_e=dn.match(/Chrome\/(\d+)/),_e&&(wa=+_e[1])));jl.exports=wa});var hn=f((y$,Wl)=>{"use strict";var Gl=pn(),DS=ve(),BS=j(),OS=BS.String;Wl.exports=!!Object.getOwnPropertySymbols&&!DS(function(){var r=Symbol("symbol detection");return!OS(r)||!(Object(r)instanceof Symbol)||!Symbol.sham&&Gl&&Gl<41})});var fn=f((T$,Ql)=>{"use strict";var VS=hn();Ql.exports=VS&&!Symbol.sham&&typeof Symbol.iterator=="symbol"});var mn=f((I$,Yl)=>{"use strict";var _S=it(),NS=U(),FS=Hi(),qS=fn(),US=Object;Yl.exports=qS?function(r){return typeof r=="symbol"}:function(r){var e=_S("Symbol");return NS(e)&&FS(e.prototype,US(r))}});var ji=f((E$,zl)=>{"use strict";var HS=String;zl.exports=function(r){try{return HS(r)}catch{return"Object"}}});var rt=f((x$,Kl)=>{"use strict";var jS=U(),GS=ji(),WS=TypeError;Kl.exports=function(r){if(jS(r))return r;throw new WS(GS(r)+" is not a function")}});var Gi=f((P$,Jl)=>{"use strict";var QS=rt(),YS=ai();Jl.exports=function(r,e){var t=r[e];return YS(t)?void 0:QS(t)}});var Zl=f((A$,Xl)=>{"use strict";var bn=ye(),gn=U(),Sn=xe(),zS=TypeError;Xl.exports=function(r,e){var t,i;if(e==="string"&&gn(t=r.toString)&&!Sn(i=bn(t,r))||gn(t=r.valueOf)&&!Sn(i=bn(t,r))||e!=="string"&&gn(t=r.toString)&&!Sn(i=bn(t,r)))return i;throw new zS("Can't convert object to primitive value")}});var Ne=f((k$,ec)=>{"use strict";ec.exports=!0});var rc=f((w$,ic)=>{"use strict";var tc=j(),KS=Object.defineProperty;ic.exports=function(r,e){try{KS(tc,r,{value:e,configurable:!0,writable:!0})}catch{tc[r]=e}return e}});var Wi=f((R$,nc)=>{"use strict";var JS=Ne(),XS=j(),ZS=rc(),ac="__core-js_shared__",sc=nc.exports=XS[ac]||ZS(ac,{});(sc.versions||(sc.versions=[])).push({version:"3.38.0",mode:JS?"pure":"global",copyright:"\xA9 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.38.0/LICENSE",source:"https://github.com/zloirock/core-js"})});var vn=f(($$,uc)=>{"use strict";var oc=Wi();uc.exports=function(r,e){return oc[r]||(oc[r]=e||{})}});var Qi=f((L$,lc)=>{"use strict";var ev=qi(),tv=Object;lc.exports=function(r){return tv(ev(r))}});var Fe=f((M$,cc)=>{"use strict";var iv=ne(),rv=Qi(),av=iv({}.hasOwnProperty);cc.exports=Object.hasOwn||function(e,t){return av(rv(e),t)}});var yn=f((C$,dc)=>{"use strict";var sv=ne(),nv=0,ov=Math.random(),uv=sv(1 .toString);dc.exports=function(r){return"Symbol("+(r===void 0?"":r)+")_"+uv(++nv+ov,36)}});var ie=f((D$,hc)=>{"use strict";var lv=j(),cv=vn(),pc=Fe(),dv=yn(),pv=hn(),hv=fn(),oi=lv.Symbol,Tn=cv("wks"),fv=hv?oi.for||oi:oi&&oi.withoutSetter||dv;hc.exports=function(r){return pc(Tn,r)||(Tn[r]=pv&&pc(oi,r)?oi[r]:fv("Symbol."+r)),Tn[r]}});var gc=f((B$,bc)=>{"use strict";var mv=ye(),fc=xe(),mc=mn(),bv=Gi(),gv=Zl(),Sv=ie(),vv=TypeError,yv=Sv("toPrimitive");bc.exports=function(r,e){if(!fc(r)||mc(r))return r;var t=bv(r,yv),i;if(t){if(e===void 0&&(e="default"),i=mv(t,r,e),!fc(i)||mc(i))return i;throw new vv("Can't convert object to primitive value")}return e===void 0&&(e="number"),gv(r,e)}});var In=f((O$,Sc)=>{"use strict";var Tv=gc(),Iv=mn();Sc.exports=function(r){var e=Tv(r,"string");return Iv(e)?e:e+""}});var Ct=f(yc=>{"use strict";var Ev=Pe(),xv=on(),Pv=un(),Ra=ze(),vc=In(),Av=TypeError,En=Object.defineProperty,kv=Object.getOwnPropertyDescriptor,xn="enumerable",Pn="configurable",An="writable";yc.f=Ev?Pv?function(e,t,i){if(Ra(e),t=vc(t),Ra(i),typeof e=="function"&&t==="prototype"&&"value"in i&&An in i&&!i[An]){var a=kv(e,t);a&&a[An]&&(e[t]=i.value,i={configurable:Pn in i?i[Pn]:a[Pn],enumerable:xn in i?i[xn]:a[xn],writable:!1})}return En(e,t,i)}:En:function(e,t,i){if(Ra(e),t=vc(t),Ra(i),xv)try{return En(e,t,i)}catch{}if("get"in i||"set"in i)throw new Av("Accessors not supported");return"value"in i&&(e[t]=i.value),e}});var Yi=f((_$,Tc)=>{"use strict";Tc.exports=function(r,e){return{enumerable:!(r&1),configurable:!(r&2),writable:!(r&4),value:e}}});var ui=f((N$,Ic)=>{"use strict";var wv=Pe(),Rv=Ct(),$v=Yi();Ic.exports=wv?function(r,e,t){return Rv.f(r,e,$v(1,t))}:function(r,e,t){return r[e]=t,r}});var $a=f((F$,xc)=>{"use strict";var Lv=vn(),Mv=yn(),Ec=Lv("keys");xc.exports=function(r){return Ec[r]||(Ec[r]=Mv(r))}});var La=f((q$,Pc)=>{"use strict";Pc.exports={}});var $n=f((U$,wc)=>{"use strict";var Cv=El(),kc=j(),Dv=xe(),Bv=ui(),kn=Fe(),wn=Wi(),Ov=$a(),Vv=La(),Ac="Object already initialized",Rn=kc.TypeError,_v=kc.WeakMap,Ma,zi,Ca,Nv=function(r){return Ca(r)?zi(r):Ma(r,{})},Fv=function(r){return function(e){var t;if(!Dv(e)||(t=zi(e)).type!==r)throw new Rn("Incompatible receiver, "+r+" required");return t}};Cv||wn.state?(qe=wn.state||(wn.state=new _v),qe.get=qe.get,qe.has=qe.has,qe.set=qe.set,Ma=function(r,e){if(qe.has(r))throw new Rn(Ac);return e.facade=r,qe.set(r,e),e},zi=function(r){return qe.get(r)||{}},Ca=function(r){return qe.has(r)}):(Dt=Ov("state"),Vv[Dt]=!0,Ma=function(r,e){if(kn(r,Dt))throw new Rn(Ac);return e.facade=r,Bv(r,Dt,e),e},zi=function(r){return kn(r,Dt)?r[Dt]:{}},Ca=function(r){return kn(r,Dt)});var qe,Dt;wc.exports={set:Ma,get:zi,has:Ca,enforce:Nv,getterFor:Fv}});var Ln=f((H$,Mc)=>{"use strict";var qv=Fi(),Lc=Function.prototype,Rc=Lc.apply,$c=Lc.call;Mc.exports=typeof Reflect=="object"&&Reflect.apply||(qv?$c.bind(Rc):function(){return $c.apply(Rc,arguments)})});var Mn=f((j$,Cc)=>{"use strict";var Uv=ri(),Hv=ne();Cc.exports=function(r){if(Uv(r)==="Function")return Hv(r)}});var Vc=f(Oc=>{"use strict";var Dc={}.propertyIsEnumerable,Bc=Object.getOwnPropertyDescriptor,jv=Bc&&!Dc.call({1:2},1);Oc.f=jv?function(e){var t=Bc(this,e);return!!t&&t.enumerable}:Dc});var Fc=f(Nc=>{"use strict";var Gv=Pe(),Wv=ye(),Qv=Vc(),Yv=Yi(),zv=si(),Kv=In(),Jv=Fe(),Xv=on(),_c=Object.getOwnPropertyDescriptor;Nc.f=Gv?_c:function(e,t){if(e=zv(e),t=Kv(t),Xv)try{return _c(e,t)}catch{}if(Jv(e,t))return Yv(!Wv(Qv.f,e,t),e[t])}});var Cn=f((Q$,qc)=>{"use strict";var Zv=ve(),ey=U(),ty=/#|\.prototype\./,Ki=function(r,e){var t=ry[iy(r)];return t===sy?!0:t===ay?!1:ey(e)?Zv(e):!!e},iy=Ki.normalize=function(r){return String(r).replace(ty,".").toLowerCase()},ry=Ki.data={},ay=Ki.NATIVE="N",sy=Ki.POLYFILL="P";qc.exports=Ki});var Ji=f((Y$,Hc)=>{"use strict";var Uc=Mn(),ny=rt(),oy=Fi(),uy=Uc(Uc.bind);Hc.exports=function(r,e){return ny(r),e===void 0?r:oy?uy(r,e):function(){return r.apply(e,arguments)}}});var Ae=f((z$,Gc)=>{"use strict";var Xi=j(),ly=Ln(),cy=Mn(),dy=U(),py=Fc().f,hy=Cn(),li=ka(),fy=Ji(),ci=ui(),jc=Fe();Wi();var my=function(r){var e=function(t,i,a){if(this instanceof e){switch(arguments.length){case 0:return new r;case 1:return new r(t);case 2:return new r(t,i)}return new r(t,i,a)}return ly(r,this,arguments)};return e.prototype=r.prototype,e};Gc.exports=function(r,e){var t=r.target,i=r.global,a=r.stat,s=r.proto,n=i?Xi:a?Xi[t]:Xi[t]&&Xi[t].prototype,o=i?li:li[t]||ci(li,t,{})[t],l=o.prototype,u,d,c,p,h,m,b,g,y;for(p in e)u=hy(i?p:t+(a?".":"#")+p,r.forced),d=!u&&n&&jc(n,p),m=o[p],d&&(r.dontCallGetSet?(y=py(n,p),b=y&&y.value):b=n[p]),h=d&&b?b:e[p],!(!u&&!s&&typeof m==typeof h)&&(r.bind&&d?g=fy(h,Xi):r.wrap&&d?g=my(h):s&&dy(h)?g=cy(h):g=h,(r.sham||h&&h.sham||m&&m.sham)&&ci(g,"sham",!0),ci(o,p,g),s&&(c=t+"Prototype",jc(li,c)||ci(li,c,{}),ci(li[c],p,h),r.real&&l&&(u||!l[p])&&ci(l,p,h)))}});var Yc=f((K$,Qc)=>{"use strict";var Dn=Pe(),by=Fe(),Wc=Function.prototype,gy=Dn&&Object.getOwnPropertyDescriptor,Bn=by(Wc,"name"),Sy=Bn&&function(){}.name==="something",vy=Bn&&(!Dn||Dn&&gy(Wc,"name").configurable);Qc.exports={EXISTS:Bn,PROPER:Sy,CONFIGURABLE:vy}});var Kc=f((J$,zc)=>{"use strict";var yy=Math.ceil,Ty=Math.floor;zc.exports=Math.trunc||function(e){var t=+e;return(t>0?Ty:yy)(t)}});var Da=f((X$,Jc)=>{"use strict";var Iy=Kc();Jc.exports=function(r){var e=+r;return e!==e||e===0?0:Iy(e)}});var Zc=f((Z$,Xc)=>{"use strict";var Ey=Da(),xy=Math.max,Py=Math.min;Xc.exports=function(r,e){var t=Ey(r);return t<0?xy(t+e,0):Py(t,e)}});var td=f((eL,ed)=>{"use strict";var Ay=Da(),ky=Math.min;ed.exports=function(r){var e=Ay(r);return e>0?ky(e,9007199254740991):0}});var Ba=f((tL,id)=>{"use strict";var wy=td();id.exports=function(r){return wy(r.length)}});var sd=f((iL,ad)=>{"use strict";var Ry=si(),$y=Zc(),Ly=Ba(),rd=function(r){return function(e,t,i){var a=Ry(e),s=Ly(a);if(s===0)return!r&&-1;var n=$y(i,s),o;if(r&&t!==t){for(;s>n;)if(o=a[n++],o!==o)return!0}else for(;s>n;n++)if((r||n in a)&&a[n]===t)return r||n||0;return!r&&-1}};ad.exports={includes:rd(!0),indexOf:rd(!1)}});var ud=f((rL,od)=>{"use strict";var My=ne(),On=Fe(),Cy=si(),Dy=sd().indexOf,By=La(),nd=My([].push);od.exports=function(r,e){var t=Cy(r),i=0,a=[],s;for(s in t)!On(By,s)&&On(t,s)&&nd(a,s);for(;e.length>i;)On(t,s=e[i++])&&(~Dy(a,s)||nd(a,s));return a}});var Vn=f((aL,ld)=>{"use strict";ld.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]});var dd=f((sL,cd)=>{"use strict";var Oy=ud(),Vy=Vn();cd.exports=Object.keys||function(e){return Oy(e,Vy)}});var hd=f(pd=>{"use strict";var _y=Pe(),Ny=un(),Fy=Ct(),qy=ze(),Uy=si(),Hy=dd();pd.f=_y&&!Ny?Object.defineProperties:function(e,t){qy(e);for(var i=Uy(t),a=Hy(t),s=a.length,n=0,o;s>n;)Fy.f(e,o=a[n++],i[o]);return e}});var _n=f((oL,fd)=>{"use strict";var jy=it();fd.exports=jy("document","documentElement")});var Un=f((uL,Td)=>{"use strict";var Gy=ze(),Wy=hd(),md=Vn(),Qy=La(),Yy=_n(),zy=Pa(),Ky=$a(),bd=">",gd="<",Fn="prototype",qn="script",vd=Ky("IE_PROTO"),Nn=function(){},yd=function(r){return gd+qn+bd+r+gd+"/"+qn+bd},Sd=function(r){r.write(yd("")),r.close();var e=r.parentWindow.Object;return r=null,e},Jy=function(){var r=zy("iframe"),e="java"+qn+":",t;return r.style.display="none",Yy.appendChild(r),r.src=String(e),t=r.contentWindow.document,t.open(),t.write(yd("document.F=Object")),t.close(),t.F},Oa,Va=function(){try{Oa=new ActiveXObject("htmlfile")}catch{}Va=typeof document<"u"?document.domain&&Oa?Sd(Oa):Jy():Sd(Oa);for(var r=md.length;r--;)delete Va[Fn][md[r]];return Va()};Qy[vd]=!0;Td.exports=Object.create||function(e,t){var i;return e!==null?(Nn[Fn]=Gy(e),i=new Nn,Nn[Fn]=null,i[vd]=e):i=Va(),t===void 0?i:Wy.f(i,t)}});var Ed=f((lL,Id)=>{"use strict";var Xy=ve();Id.exports=!Xy(function(){function r(){}return r.prototype.constructor=null,Object.getPrototypeOf(new r)!==r.prototype})});var jn=f((cL,Pd)=>{"use strict";var Zy=Fe(),eT=U(),tT=Qi(),iT=$a(),rT=Ed(),xd=iT("IE_PROTO"),Hn=Object,aT=Hn.prototype;Pd.exports=rT?Hn.getPrototypeOf:function(r){var e=tT(r);if(Zy(e,xd))return e[xd];var t=e.constructor;return eT(t)&&e instanceof t?t.prototype:e instanceof Hn?aT:null}});var di=f((dL,Ad)=>{"use strict";var sT=ui();Ad.exports=function(r,e,t,i){return i&&i.enumerable?r[e]=t:sT(r,e,t),r}});var Yn=f((pL,Rd)=>{"use strict";var nT=ve(),oT=U(),uT=xe(),lT=Un(),kd=jn(),cT=di(),dT=ie(),pT=Ne(),Qn=dT("iterator"),wd=!1,at,Gn,Wn;[].keys&&(Wn=[].keys(),"next"in Wn?(Gn=kd(kd(Wn)),Gn!==Object.prototype&&(at=Gn)):wd=!0);var hT=!uT(at)||nT(function(){var r={};return at[Qn].call(r)!==r});hT?at={}:pT&&(at=lT(at));oT(at[Qn])||cT(at,Qn,function(){return this});Rd.exports={IteratorPrototype:at,BUGGY_SAFARI_ITERATORS:wd}});var _a=f((hL,Ld)=>{"use strict";var fT=ie(),mT=fT("toStringTag"),$d={};$d[mT]="z";Ld.exports=String($d)==="[object z]"});var Zi=f((fL,Md)=>{"use strict";var bT=_a(),gT=U(),Na=ri(),ST=ie(),vT=ST("toStringTag"),yT=Object,TT=Na(function(){return arguments}())==="Arguments",IT=function(r,e){try{return r[e]}catch{}};Md.exports=bT?Na:function(r){var e,t,i;return r===void 0?"Undefined":r===null?"Null":typeof(t=IT(e=yT(r),vT))=="string"?t:TT?Na(e):(i=Na(e))==="Object"&&gT(e.callee)?"Arguments":i}});var Dd=f((mL,Cd)=>{"use strict";var ET=_a(),xT=Zi();Cd.exports=ET?{}.toString:function(){return"[object "+xT(this)+"]"}});var er=f((bL,Od)=>{"use strict";var PT=_a(),AT=Ct().f,kT=ui(),wT=Fe(),RT=Dd(),$T=ie(),Bd=$T("toStringTag");Od.exports=function(r,e,t,i){var a=t?r:r&&r.prototype;a&&(wT(a,Bd)||AT(a,Bd,{configurable:!0,value:e}),i&&!PT&&kT(a,"toString",RT))}});var _d=f((gL,Vd)=>{"use strict";var LT=Yn().IteratorPrototype,MT=Un(),CT=Yi(),DT=er(),BT=Mt(),OT=function(){return this};Vd.exports=function(r,e,t,i){var a=e+" Iterator";return r.prototype=MT(LT,{next:CT(+!i,t)}),DT(r,a,!1,!0),BT[a]=OT,r}});var Fd=f((SL,Nd)=>{"use strict";var VT=ne(),_T=rt();Nd.exports=function(r,e,t){try{return VT(_T(Object.getOwnPropertyDescriptor(r,e)[t]))}catch{}}});var Ud=f((vL,qd)=>{"use strict";var NT=xe();qd.exports=function(r){return NT(r)||r===null}});var jd=f((yL,Hd)=>{"use strict";var FT=Ud(),qT=String,UT=TypeError;Hd.exports=function(r){if(FT(r))return r;throw new UT("Can't set "+qT(r)+" as a prototype")}});var zn=f((TL,Gd)=>{"use strict";var HT=Fd(),jT=xe(),GT=qi(),WT=jd();Gd.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var r=!1,e={},t;try{t=HT(Object.prototype,"__proto__","set"),t(e,[]),r=e instanceof Array}catch{}return function(a,s){return GT(a),WT(s),jT(a)&&(r?t(a,s):a.__proto__=s),a}}():void 0)});var ip=f((IL,tp)=>{"use strict";var QT=Ae(),YT=ye(),Fa=Ne(),Zd=Yc(),zT=U(),KT=_d(),Wd=jn(),Qd=zn(),JT=er(),XT=ui(),Kn=di(),ZT=ie(),Yd=Mt(),ep=Yn(),eI=Zd.PROPER,tI=Zd.CONFIGURABLE,zd=ep.IteratorPrototype,qa=ep.BUGGY_SAFARI_ITERATORS,tr=ZT("iterator"),Kd="keys",ir="values",Jd="entries",Xd=function(){return this};tp.exports=function(r,e,t,i,a,s,n){KT(t,e,i);var o=function(y){if(y===a&&p)return p;if(!qa&&y&&y in d)return d[y];switch(y){case Kd:return function(){return new t(this,y)};case ir:return function(){return new t(this,y)};case Jd:return function(){return new t(this,y)}}return function(){return new t(this)}},l=e+" Iterator",u=!1,d=r.prototype,c=d[tr]||d["@@iterator"]||a&&d[a],p=!qa&&c||o(a),h=e==="Array"&&d.entries||c,m,b,g;if(h&&(m=Wd(h.call(new r)),m!==Object.prototype&&m.next&&(!Fa&&Wd(m)!==zd&&(Qd?Qd(m,zd):zT(m[tr])||Kn(m,tr,Xd)),JT(m,l,!0,!0),Fa&&(Yd[l]=Xd))),eI&&a===ir&&c&&c.name!==ir&&(!Fa&&tI?XT(d,"name",ir):(u=!0,p=function(){return YT(c,this)})),a)if(b={values:o(ir),keys:s?p:o(Kd),entries:o(Jd)},n)for(g in b)(qa||u||!(g in d))&&Kn(d,g,b[g]);else QT({target:e,proto:!0,forced:qa||u},b);return(!Fa||n)&&d[tr]!==p&&Kn(d,tr,p,{name:a}),Yd[e]=p,b}});var ap=f((EL,rp)=>{"use strict";rp.exports=function(r,e){return{value:r,done:e}}});var Xn=f((xL,lp)=>{"use strict";var iI=si(),Jn=rn(),sp=Mt(),op=$n(),rI=Ct().f,aI=ip(),Ua=ap(),sI=Ne(),nI=Pe(),up="Array Iterator",oI=op.set,uI=op.getterFor(up);lp.exports=aI(Array,"Array",function(r,e){oI(this,{type:up,target:iI(r),index:0,kind:e})},function(){var r=uI(this),e=r.target,t=r.index++;if(!e||t>=e.length)return r.target=void 0,Ua(void 0,!0);switch(r.kind){case"keys":return Ua(t,!1);case"values":return Ua(e[t],!1)}return Ua([t,e[t]],!1)},"values");var np=sp.Arguments=sp.Array;Jn("keys");Jn("values");Jn("entries");if(!sI&&nI&&np.name!=="values")try{rI(np,"name",{value:"values"})}catch{}});var dp=f((PL,cp)=>{"use strict";var lI=ie(),cI=Mt(),dI=lI("iterator"),pI=Array.prototype;cp.exports=function(r){return r!==void 0&&(cI.Array===r||pI[dI]===r)}});var Zn=f((AL,hp)=>{"use strict";var hI=Zi(),pp=Gi(),fI=ai(),mI=Mt(),bI=ie(),gI=bI("iterator");hp.exports=function(r){if(!fI(r))return pp(r,gI)||pp(r,"@@iterator")||mI[hI(r)]}});var mp=f((kL,fp)=>{"use strict";var SI=ye(),vI=rt(),yI=ze(),TI=ji(),II=Zn(),EI=TypeError;fp.exports=function(r,e){var t=arguments.length<2?II(r):e;if(vI(t))return yI(SI(t,r));throw new EI(TI(r)+" is not iterable")}});var Sp=f((wL,gp)=>{"use strict";var xI=ye(),bp=ze(),PI=Gi();gp.exports=function(r,e,t){var i,a;bp(r);try{if(i=PI(r,"return"),!i){if(e==="throw")throw t;return t}i=xI(i,r)}catch(s){a=!0,i=s}if(e==="throw")throw t;if(a)throw i;return bp(i),t}});var ja=f((RL,Ip)=>{"use strict";var AI=Ji(),kI=ye(),wI=ze(),RI=ji(),$I=dp(),LI=Ba(),vp=Hi(),MI=mp(),CI=Zn(),yp=Sp(),DI=TypeError,Ha=function(r,e){this.stopped=r,this.result=e},Tp=Ha.prototype;Ip.exports=function(r,e,t){var i=t&&t.that,a=!!(t&&t.AS_ENTRIES),s=!!(t&&t.IS_RECORD),n=!!(t&&t.IS_ITERATOR),o=!!(t&&t.INTERRUPTED),l=AI(e,i),u,d,c,p,h,m,b,g=function(A){return u&&yp(u,"normal",A),new Ha(!0,A)},y=function(A){return a?(wI(A),o?l(A[0],A[1],g):l(A[0],A[1])):o?l(A,g):l(A)};if(s)u=r.iterator;else if(n)u=r;else{if(d=CI(r),!d)throw new DI(RI(r)+" is not iterable");if($I(d)){for(c=0,p=LI(r);p>c;c++)if(h=y(r[c]),h&&vp(Tp,h))return h;return new Ha(!1)}u=MI(r,d)}for(m=s?r.next:u.next;!(b=kI(m,u)).done;){try{h=y(b.value)}catch(A){yp(u,"throw",A)}if(typeof h=="object"&&h&&vp(Tp,h))return h}return new Ha(!1)}});var xp=f(($L,Ep)=>{"use strict";var BI=Pe(),OI=Ct(),VI=Yi();Ep.exports=function(r,e,t){BI?OI.f(r,e,VI(0,t)):r[e]=t}});var Pp=f(()=>{"use strict";var _I=Ae(),NI=ja(),FI=xp();_I({target:"Object",stat:!0},{fromEntries:function(e){var t={};return NI(e,function(i,a){FI(t,i,a)},{AS_ENTRIES:!0}),t}})});var kp=f((CL,Ap)=>{"use strict";Xn();Pp();var qI=ka();Ap.exports=qI.Object.fromEntries});var Rp=f((DL,wp)=>{"use strict";wp.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}});var Lp=f(()=>{"use strict";Xn();var UI=Rp(),HI=j(),jI=er(),$p=Mt();for(Ga in UI)jI(HI[Ga],Ga),$p[Ga]=$p.Array;var Ga});var Cp=f((VL,Mp)=>{"use strict";var GI=kp();Lp();Mp.exports=GI});var eo=f((_L,Dp)=>{"use strict";var WI=Cp();Dp.exports=WI});var Bp=f(()=>{"use strict"});var to=f((qL,Op)=>{"use strict";var rr=j(),QI=ni(),YI=ri(),Wa=function(r){return QI.slice(0,r.length)===r};Op.exports=function(){return Wa("Bun/")?"BUN":Wa("Cloudflare-Workers")?"CLOUDFLARE":Wa("Deno/")?"DENO":Wa("Node.js/")?"NODE":rr.Bun&&typeof Bun.version=="string"?"BUN":rr.Deno&&typeof Deno.version=="object"?"DENO":YI(rr.process)==="process"?"NODE":rr.window&&rr.document?"BROWSER":"REST"}()});var Qa=f((UL,Vp)=>{"use strict";var zI=to();Vp.exports=zI==="NODE"});var Np=f((HL,_p)=>{"use strict";var KI=Ct();_p.exports=function(r,e,t){return KI.f(r,e,t)}});var Up=f((jL,qp)=>{"use strict";var JI=it(),XI=Np(),ZI=ie(),eE=Pe(),Fp=ZI("species");qp.exports=function(r){var e=JI(r);eE&&e&&!e[Fp]&&XI(e,Fp,{configurable:!0,get:function(){return this}})}});var jp=f((GL,Hp)=>{"use strict";var tE=Hi(),iE=TypeError;Hp.exports=function(r,e){if(tE(e,r))return r;throw new iE("Incorrect invocation")}});var ro=f((WL,Gp)=>{"use strict";var rE=ne(),aE=U(),io=Wi(),sE=rE(Function.toString);aE(io.inspectSource)||(io.inspectSource=function(r){return sE(r)});Gp.exports=io.inspectSource});var Jp=f((QL,Kp)=>{"use strict";var nE=ne(),oE=ve(),Wp=U(),uE=Zi(),lE=it(),cE=ro(),Qp=function(){},Yp=lE("Reflect","construct"),ao=/^\s*(?:class|function)\b/,dE=nE(ao.exec),pE=!ao.test(Qp),ar=function(e){if(!Wp(e))return!1;try{return Yp(Qp,[],e),!0}catch{return!1}},zp=function(e){if(!Wp(e))return!1;switch(uE(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return pE||!!dE(ao,cE(e))}catch{return!0}};zp.sham=!0;Kp.exports=!Yp||oE(function(){var r;return ar(ar.call)||!ar(Object)||!ar(function(){r=!0})||r})?zp:ar});var Zp=f((YL,Xp)=>{"use strict";var hE=Jp(),fE=ji(),mE=TypeError;Xp.exports=function(r){if(hE(r))return r;throw new mE(fE(r)+" is not a constructor")}});var so=f((zL,th)=>{"use strict";var eh=ze(),bE=Zp(),gE=ai(),SE=ie(),vE=SE("species");th.exports=function(r,e){var t=eh(r).constructor,i;return t===void 0||gE(i=eh(t)[vE])?e:bE(i)}});var rh=f((KL,ih)=>{"use strict";var yE=ne();ih.exports=yE([].slice)});var sh=f((JL,ah)=>{"use strict";var TE=TypeError;ah.exports=function(r,e){if(r<e)throw new TE("Not enough arguments");return r}});var no=f((XL,nh)=>{"use strict";var IE=ni();nh.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(IE)});var bo=f((ZL,mh)=>{"use strict";var Te=j(),EE=Ln(),xE=Ji(),oh=U(),PE=Fe(),fh=ve(),uh=_n(),AE=rh(),lh=Pa(),kE=sh(),wE=no(),RE=Qa(),ho=Te.setImmediate,fo=Te.clearImmediate,$E=Te.process,oo=Te.Dispatch,LE=Te.Function,ch=Te.MessageChannel,ME=Te.String,uo=0,sr={},dh="onreadystatechange",nr,Bt,lo,co;fh(function(){nr=Te.location});var mo=function(r){if(PE(sr,r)){var e=sr[r];delete sr[r],e()}},po=function(r){return function(){mo(r)}},ph=function(r){mo(r.data)},hh=function(r){Te.postMessage(ME(r),nr.protocol+"//"+nr.host)};(!ho||!fo)&&(ho=function(e){kE(arguments.length,1);var t=oh(e)?e:LE(e),i=AE(arguments,1);return sr[++uo]=function(){EE(t,void 0,i)},Bt(uo),uo},fo=function(e){delete sr[e]},RE?Bt=function(r){$E.nextTick(po(r))}:oo&&oo.now?Bt=function(r){oo.now(po(r))}:ch&&!wE?(lo=new ch,co=lo.port2,lo.port1.onmessage=ph,Bt=xE(co.postMessage,co)):Te.addEventListener&&oh(Te.postMessage)&&!Te.importScripts&&nr&&nr.protocol!=="file:"&&!fh(hh)?(Bt=hh,Te.addEventListener("message",ph,!1)):dh in lh("script")?Bt=function(r){uh.appendChild(lh("script"))[dh]=function(){uh.removeChild(this),mo(r)}}:Bt=function(r){setTimeout(po(r),0)});mh.exports={set:ho,clear:fo}});var Sh=f((eM,gh)=>{"use strict";var bh=j(),CE=Pe(),DE=Object.getOwnPropertyDescriptor;gh.exports=function(r){if(!CE)return bh[r];var e=DE(bh,r);return e&&e.value}});var go=f((tM,yh)=>{"use strict";var vh=function(){this.head=null,this.tail=null};vh.prototype={add:function(r){var e={item:r,next:null},t=this.tail;t?t.next=e:this.head=e,this.tail=e},get:function(){var r=this.head;if(r){var e=this.head=r.next;return e===null&&(this.tail=null),r.item}}};yh.exports=vh});var Ih=f((iM,Th)=>{"use strict";var BE=ni();Th.exports=/ipad|iphone|ipod/i.test(BE)&&typeof Pebble<"u"});var xh=f((rM,Eh)=>{"use strict";var OE=ni();Eh.exports=/web0s(?!.*chrome)/i.test(OE)});var Lh=f((aM,$h)=>{"use strict";var hi=j(),VE=Sh(),Ph=Ji(),So=bo().set,_E=go(),NE=no(),FE=Ih(),qE=xh(),vo=Qa(),Ah=hi.MutationObserver||hi.WebKitMutationObserver,kh=hi.document,wh=hi.process,Ya=hi.Promise,Io=VE("queueMicrotask"),pi,yo,To,za,Rh;Io||(or=new _E,ur=function(){var r,e;for(vo&&(r=wh.domain)&&r.exit();e=or.get();)try{e()}catch(t){throw or.head&&pi(),t}r&&r.enter()},!NE&&!vo&&!qE&&Ah&&kh?(yo=!0,To=kh.createTextNode(""),new Ah(ur).observe(To,{characterData:!0}),pi=function(){To.data=yo=!yo}):!FE&&Ya&&Ya.resolve?(za=Ya.resolve(void 0),za.constructor=Ya,Rh=Ph(za.then,za),pi=function(){Rh(ur)}):vo?pi=function(){wh.nextTick(ur)}:(So=Ph(So,hi),pi=function(){So(ur)}),Io=function(r){or.head||pi(),or.add(r)});var or,ur;$h.exports=Io});var Ch=f((sM,Mh)=>{"use strict";Mh.exports=function(r,e){try{arguments.length===1?console.error(r):console.error(r,e)}catch{}}});var Ka=f((nM,Dh)=>{"use strict";Dh.exports=function(r){try{return{error:!1,value:r()}}catch(e){return{error:!0,value:e}}}});var Ot=f((oM,Bh)=>{"use strict";var UE=j();Bh.exports=UE.Promise});var fi=f((uM,Nh)=>{"use strict";var HE=j(),lr=Ot(),jE=U(),GE=Cn(),WE=ro(),QE=ie(),Oh=to(),YE=Ne(),Eo=pn(),Vh=lr&&lr.prototype,zE=QE("species"),xo=!1,_h=jE(HE.PromiseRejectionEvent),KE=GE("Promise",function(){var r=WE(lr),e=r!==String(lr);if(!e&&Eo===66||YE&&!(Vh.catch&&Vh.finally))return!0;if(!Eo||Eo<51||!/native code/.test(r)){var t=new lr(function(s){s(1)}),i=function(s){s(function(){},function(){})},a=t.constructor={};if(a[zE]=i,xo=t.then(function(){})instanceof i,!xo)return!0}return!e&&(Oh==="BROWSER"||Oh==="DENO")&&!_h});Nh.exports={CONSTRUCTOR:KE,REJECTION_EVENT:_h,SUBCLASSING:xo}});var mi=f((lM,qh)=>{"use strict";var Fh=rt(),JE=TypeError,XE=function(r){var e,t;this.promise=new r(function(i,a){if(e!==void 0||t!==void 0)throw new JE("Bad Promise constructor");e=i,t=a}),this.resolve=Fh(e),this.reject=Fh(t)};qh.exports.f=function(r){return new XE(r)}});var of=f(()=>{"use strict";var ZE=Ae(),ex=Ne(),es=Qa(),bt=j(),vi=ye(),Uh=di(),Hh=zn(),tx=er(),ix=Up(),rx=rt(),Za=U(),ax=xe(),sx=jp(),nx=so(),Yh=bo().set,Ro=Lh(),ox=Ch(),ux=Ka(),lx=go(),zh=$n(),ts=Ot(),$o=fi(),Kh=mi(),is="Promise",Jh=$o.CONSTRUCTOR,cx=$o.REJECTION_EVENT,dx=$o.SUBCLASSING,Po=zh.getterFor(is),px=zh.set,bi=ts&&ts.prototype,Vt=ts,Ja=bi,Xh=bt.TypeError,Ao=bt.document,Lo=bt.process,ko=Kh.f,hx=ko,fx=!!(Ao&&Ao.createEvent&&bt.dispatchEvent),Zh="unhandledrejection",mx="rejectionhandled",jh=0,ef=1,bx=2,Mo=1,tf=2,Xa,Gh,gx,Wh,rf=function(r){var e;return ax(r)&&Za(e=r.then)?e:!1},af=function(r,e){var t=e.value,i=e.state===ef,a=i?r.ok:r.fail,s=r.resolve,n=r.reject,o=r.domain,l,u,d;try{a?(i||(e.rejection===tf&&vx(e),e.rejection=Mo),a===!0?l=t:(o&&o.enter(),l=a(t),o&&(o.exit(),d=!0)),l===r.promise?n(new Xh("Promise-chain cycle")):(u=rf(l))?vi(u,l,s,n):s(l)):n(t)}catch(c){o&&!d&&o.exit(),n(c)}},sf=function(r,e){r.notified||(r.notified=!0,Ro(function(){for(var t=r.reactions,i;i=t.get();)af(i,r);r.notified=!1,e&&!r.rejection&&Sx(r)}))},nf=function(r,e,t){var i,a;fx?(i=Ao.createEvent("Event"),i.promise=e,i.reason=t,i.initEvent(r,!1,!0),bt.dispatchEvent(i)):i={promise:e,reason:t},!cx&&(a=bt["on"+r])?a(i):r===Zh&&ox("Unhandled promise rejection",t)},Sx=function(r){vi(Yh,bt,function(){var e=r.facade,t=r.value,i=Qh(r),a;if(i&&(a=ux(function(){es?Lo.emit("unhandledRejection",t,e):nf(Zh,e,t)}),r.rejection=es||Qh(r)?tf:Mo,a.error))throw a.value})},Qh=function(r){return r.rejection!==Mo&&!r.parent},vx=function(r){vi(Yh,bt,function(){var e=r.facade;es?Lo.emit("rejectionHandled",e):nf(mx,e,r.value)})},gi=function(r,e,t){return function(i){r(e,i,t)}},Si=function(r,e,t){r.done||(r.done=!0,t&&(r=t),r.value=e,r.state=bx,sf(r,!0))},wo=function(r,e,t){if(!r.done){r.done=!0,t&&(r=t);try{if(r.facade===e)throw new Xh("Promise can't be resolved itself");var i=rf(e);i?Ro(function(){var a={done:!1};try{vi(i,e,gi(wo,a,r),gi(Si,a,r))}catch(s){Si(a,s,r)}}):(r.value=e,r.state=ef,sf(r,!1))}catch(a){Si({done:!1},a,r)}}};if(Jh&&(Vt=function(e){sx(this,Ja),rx(e),vi(Xa,this);var t=Po(this);try{e(gi(wo,t),gi(Si,t))}catch(i){Si(t,i)}},Ja=Vt.prototype,Xa=function(e){px(this,{type:is,done:!1,notified:!1,parent:!1,reactions:new lx,rejection:!1,state:jh,value:void 0})},Xa.prototype=Uh(Ja,"then",function(e,t){var i=Po(this),a=ko(nx(this,Vt));return i.parent=!0,a.ok=Za(e)?e:!0,a.fail=Za(t)&&t,a.domain=es?Lo.domain:void 0,i.state===jh?i.reactions.add(a):Ro(function(){af(a,i)}),a.promise}),Gh=function(){var r=new Xa,e=Po(r);this.promise=r,this.resolve=gi(wo,e),this.reject=gi(Si,e)},Kh.f=ko=function(r){return r===Vt||r===gx?new Gh(r):hx(r)},!ex&&Za(ts)&&bi!==Object.prototype)){Wh=bi.then,dx||Uh(bi,"then",function(e,t){var i=this;return new Vt(function(a,s){vi(Wh,i,a,s)}).then(e,t)},{unsafe:!0});try{delete bi.constructor}catch{}Hh&&Hh(bi,Ja)}ZE({global:!0,constructor:!0,wrap:!0,forced:Jh},{Promise:Vt});tx(Vt,is,!1,!0);ix(is)});var pf=f((pM,df)=>{"use strict";var yx=ie(),lf=yx("iterator"),cf=!1;try{uf=0,Co={next:function(){return{done:!!uf++}},return:function(){cf=!0}},Co[lf]=function(){return this},Array.from(Co,function(){throw 2})}catch{}var uf,Co;df.exports=function(r,e){try{if(!e&&!cf)return!1}catch{return!1}var t=!1;try{var i={};i[lf]=function(){return{next:function(){return{done:t=!0}}}},r(i)}catch{}return t}});var Do=f((hM,hf)=>{"use strict";var Tx=Ot(),Ix=pf(),Ex=fi().CONSTRUCTOR;hf.exports=Ex||!Ix(function(r){Tx.all(r).then(void 0,function(){})})});var ff=f(()=>{"use strict";var xx=Ae(),Px=ye(),Ax=rt(),kx=mi(),wx=Ka(),Rx=ja(),$x=Do();xx({target:"Promise",stat:!0,forced:$x},{all:function(e){var t=this,i=kx.f(t),a=i.resolve,s=i.reject,n=wx(function(){var o=Ax(t.resolve),l=[],u=0,d=1;Rx(e,function(c){var p=u++,h=!1;d++,Px(o,t,c).then(function(m){h||(h=!0,l[p]=m,--d||a(l))},s)}),--d||a(l)});return n.error&&s(n.value),i.promise}})});var bf=f(()=>{"use strict";var Lx=Ae(),Mx=Ne(),Cx=fi().CONSTRUCTOR,Oo=Ot(),Dx=it(),Bx=U(),Ox=di(),mf=Oo&&Oo.prototype;Lx({target:"Promise",proto:!0,forced:Cx,real:!0},{catch:function(r){return this.then(void 0,r)}});!Mx&&Bx(Oo)&&(Bo=Dx("Promise").prototype.catch,mf.catch!==Bo&&Ox(mf,"catch",Bo,{unsafe:!0}));var Bo});var gf=f(()=>{"use strict";var Vx=Ae(),_x=ye(),Nx=rt(),Fx=mi(),qx=Ka(),Ux=ja(),Hx=Do();Vx({target:"Promise",stat:!0,forced:Hx},{race:function(e){var t=this,i=Fx.f(t),a=i.reject,s=qx(function(){var n=Nx(t.resolve);Ux(e,function(o){_x(n,t,o).then(i.resolve,a)})});return s.error&&a(s.value),i.promise}})});var Sf=f(()=>{"use strict";var jx=Ae(),Gx=mi(),Wx=fi().CONSTRUCTOR;jx({target:"Promise",stat:!0,forced:Wx},{reject:function(e){var t=Gx.f(this),i=t.reject;return i(e),t.promise}})});var Vo=f((IM,vf)=>{"use strict";var Qx=ze(),Yx=xe(),zx=mi();vf.exports=function(r,e){if(Qx(r),Yx(e)&&e.constructor===r)return e;var t=zx.f(r),i=t.resolve;return i(e),t.promise}});var If=f(()=>{"use strict";var Kx=Ae(),Jx=it(),yf=Ne(),Xx=Ot(),Tf=fi().CONSTRUCTOR,Zx=Vo(),eP=Jx("Promise"),tP=yf&&!Tf;Kx({target:"Promise",stat:!0,forced:yf||Tf},{resolve:function(e){return Zx(tP&&this===eP?Xx:this,e)}})});var Ef=f(()=>{"use strict";of();ff();bf();gf();Sf();If()});var kf=f(()=>{"use strict";var iP=Ae(),rP=Ne(),rs=Ot(),aP=ve(),Pf=it(),Af=U(),sP=so(),xf=Vo(),nP=di(),No=rs&&rs.prototype,oP=!!rs&&aP(function(){No.finally.call({then:function(){}},function(){})});iP({target:"Promise",proto:!0,real:!0,forced:oP},{finally:function(r){var e=sP(this,Pf("Promise")),t=Af(r);return this.then(t?function(i){return xf(e,r()).then(function(){return i})}:r,t?function(i){return xf(e,r()).then(function(){throw i})}:r)}});!rP&&Af(rs)&&(_o=Pf("Promise").prototype.finally,No.finally!==_o&&nP(No,"finally",_o,{unsafe:!0}));var _o});var as=f((RM,wf)=>{"use strict";var uP=it();wf.exports=uP});var $f=f(($M,Rf)=>{"use strict";Bp();Ef();kf();var lP=as();Rf.exports=lP("Promise","finally")});var Mf=f((LM,Lf)=>{"use strict";var cP=$f();Lf.exports=cP});var ss=f((MM,Cf)=>{"use strict";var dP=Mf();Cf.exports=dP});var am=f(()=>{"use strict";var FP=Ae(),qP=Qi(),UP=Ba(),HP=Da(),jP=rn();FP({target:"Array",proto:!0},{at:function(e){var t=qP(this),i=UP(t),a=HP(e),s=a>=0?a:i+a;return s<0||s>=i?void 0:t[s]}});jP("at")});var nm=f((qC,sm)=>{"use strict";am();var GP=as();sm.exports=GP("Array","at")});var um=f((UC,om)=>{"use strict";var WP=nm();om.exports=WP});var hr=f((HC,lm)=>{"use strict";var QP=um();lm.exports=QP});var ab=f(()=>{"use strict"});var sb=f(()=>{"use strict"});var ob=f((jO,nb)=>{"use strict";var ek=xe(),tk=ri(),ik=ie(),rk=ik("match");nb.exports=function(r){var e;return ek(r)&&((e=r[rk])!==void 0?!!e:tk(r)==="RegExp")}});var lb=f((GO,ub)=>{"use strict";var ak=Zi(),sk=String;ub.exports=function(r){if(ak(r)==="Symbol")throw new TypeError("Cannot convert a Symbol value to a string");return sk(r)}});var db=f((WO,cb)=>{"use strict";var nk=ze();cb.exports=function(){var r=nk(this),e="";return r.hasIndices&&(e+="d"),r.global&&(e+="g"),r.ignoreCase&&(e+="i"),r.multiline&&(e+="m"),r.dotAll&&(e+="s"),r.unicode&&(e+="u"),r.unicodeSets&&(e+="v"),r.sticky&&(e+="y"),e}});var fb=f((QO,hb)=>{"use strict";var ok=ye(),uk=Fe(),lk=Hi(),ck=db(),pb=RegExp.prototype;hb.exports=function(r){var e=r.flags;return e===void 0&&!("flags"in pb)&&!uk(r,"flags")&&lk(pb,r)?ok(ck,r):e}});var bb=f((YO,mb)=>{"use strict";var mu=ne(),dk=Qi(),pk=Math.floor,hu=mu("".charAt),hk=mu("".replace),fu=mu("".slice),fk=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,mk=/\$([$&'`]|\d{1,2})/g;mb.exports=function(r,e,t,i,a,s){var n=t+r.length,o=i.length,l=mk;return a!==void 0&&(a=dk(a),l=fk),hk(s,l,function(u,d){var c;switch(hu(d,0)){case"$":return"$";case"&":return r;case"`":return fu(e,0,t);case"'":return fu(e,n);case"<":c=a[fu(d,1,-1)];break;default:var p=+d;if(p===0)return u;if(p>o){var h=pk(p/10);return h===0?u:h<=o?i[h-1]===void 0?hu(d,1):i[h-1]+hu(d,1):u}c=i[p-1]}return c===void 0?"":c})}});var vb=f(()=>{"use strict";var bk=Ae(),gk=ye(),gu=ne(),gb=qi(),Sk=U(),vk=ai(),yk=ob(),$i=lb(),Tk=Gi(),Ik=fb(),Ek=bb(),xk=ie(),Pk=Ne(),Ak=xk("replace"),kk=TypeError,bu=gu("".indexOf),wk=gu("".replace),Sb=gu("".slice),Rk=Math.max;bk({target:"String",proto:!0},{replaceAll:function(e,t){var i=gb(this),a,s,n,o,l,u,d,c,p,h,m=0,b="";if(!vk(e)){if(a=yk(e),a&&(s=$i(gb(Ik(e))),!~bu(s,"g")))throw new kk("`.replaceAll` does not allow non-global regexes");if(n=Tk(e,Ak),n)return gk(n,e,i,t);if(Pk&&a)return wk($i(i),e,t)}for(o=$i(i),l=$i(e),u=Sk(t),u||(t=$i(t)),d=l.length,c=Rk(1,d),p=bu(o,l);p!==-1;)h=u?$i(t(l,p,o)):Ek(l,o,p,[],void 0,t),b+=Sb(o,m,p)+h,m=p+d,p=p+c>o.length?-1:bu(o,l,p+c);return m<o.length&&(b+=Sb(o,m)),b}})});var Tb=f((JO,yb)=>{"use strict";ab();sb();vb();var $k=as();yb.exports=$k("String","replaceAll")});var Eb=f((XO,Ib)=>{"use strict";var Lk=Tb();Ib.exports=Lk});var Pb=f((ZO,xb)=>{"use strict";var Mk=Eb();xb.exports=Mk});var Xu="2.0.115-dev.0778dd82.0";var se=(a=>(a.STOPPED="stopped",a.READY="ready",a.PLAYING="playing",a.PAUSED="paused",a))(se||{}),mt=(T=>(T.MPEG="MPEG",T.DASH="DASH",T.DASH_SEP="DASH_SEP",T.DASH_SEP_VK="DASH_SEP",T.DASH_WEBM="DASH_WEBM",T.DASH_WEBM_AV1="DASH_WEBM_AV1",T.DASH_STREAMS="DASH_STREAMS",T.DASH_WEBM_VK="DASH_WEBM",T.DASH_ONDEMAND="DASH_ONDEMAND",T.DASH_ONDEMAND_VK="DASH_ONDEMAND",T.DASH_LIVE="DASH_LIVE",T.DASH_LIVE_CMAF="DASH_LIVE_CMAF",T.DASH_LIVE_WEBM="DASH_LIVE_WEBM",T.HLS="HLS",T.HLS_ONDEMAND="HLS_ONDEMAND",T.HLS_JS="HLS",T.HLS_LIVE="HLS_LIVE",T.HLS_LIVE_CMAF="HLS_LIVE_CMAF",T.WEB_RTC_LIVE="WEB_RTC_LIVE",T))(mt||{});var Ia=(a=>(a.NOT_AVAILABLE="NOT_AVAILABLE",a.AVAILABLE="AVAILABLE",a.CONNECTING="CONNECTING",a.CONNECTED="CONNECTED",a))(Ia||{}),Ks=(i=>(i.HTTP1="http1",i.HTTP2="http2",i.QUIC="quic",i))(Ks||{});var Js=(n=>(n.NONE="none",n.INLINE="inline",n.FULLSCREEN="fullscreen",n.SECOND_SCREEN="second_screen",n.PIP="pip",n.INVISIBLE="invisible",n))(Js||{});import{assertNever as al,assertNonNullable as Jg,isNonNullable as Ea,ValueSubject as Xs,Subject as Xg,Subscription as Zg,merge as eS,observableFrom as tS,fromEvent as el,map as tl,tap as il,filterChanged as iS,isNullable as Zs,ErrorCategory as rl}from"@vkontakte/videoplayer-shared";var Zu=r=>new Promise((e,t)=>{let i=document.createElement("script");i.setAttribute("src",r),i.onload=()=>e,i.onerror=()=>t,document.body.appendChild(i)});var xa=class{constructor(e){this.connection$=new Xs(void 0);this.castState$=new Xs("NOT_AVAILABLE");this.errorEvent$=new Xg;this.realCastState$=new Xs("NOT_AVAILABLE");this.subscription=new Zg;this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastInitializer");let t="chrome"in window;if(this.log({message:`[constructor] receiverApplicationId: ${this.params.receiverApplicationId}, isDisabled: ${this.params.isDisabled}, isSupported: ${t}`}),e.isDisabled||!t)return;let i=Ea(window.chrome?.cast),a=!!window.__onGCastApiAvailable;i?this.initializeCastApi():(window.__onGCastApiAvailable=s=>{delete window.__onGCastApiAvailable,s&&this.initializeCastApi()},a||Zu("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:rl.NETWORK,message:"Script loading failed!"})))}connect(){cast.framework.CastContext.getInstance()?.requestSession()}disconnect(){cast.framework.CastContext.getInstance()?.getCurrentSession()?.endSession(!0)}stopMedia(){return new Promise((e,t)=>{cast.framework.CastContext.getInstance()?.getCurrentSession()?.getMediaSession()?.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){Ea(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();Zs(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();Zs(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),i=cast.framework.CastContext.getInstance();this.subscription.add(el(i,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(a=>{switch(a.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:this.contentId=i.getCurrentSession()?.getMediaSession()?.media?.contentId;break;case cast.framework.SessionState.NO_SESSION:case cast.framework.SessionState.SESSION_ENDING:case cast.framework.SessionState.SESSION_ENDED:case cast.framework.SessionState.SESSION_START_FAILED:this.contentId=void 0;break;default:return al(a.sessionState)}})).add(eS(el(i,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(il(a=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(a)}`})}),tl(a=>a.castState)),tS([i.getCastState()])).pipe(iS(),tl(rS),il(a=>{this.log({message:`realCastState$: ${a}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(a=>{let s=a==="CONNECTED",n=Ea(this.connection$.getValue());if(s&&!n){let o=i.getCurrentSession();Jg(o);let l=o.getCastDevice(),u=o.getMediaSession()?.media?.contentId;(Zs(u)||u===this.contentId)&&(this.log({message:"connection created"}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:o,castDevice:l}))}else!s&&n&&(this.log({message:"connection destroyed"}),this.connection$.next(void 0));this.castState$.next(a==="CONNECTED"?Ea(this.connection$.getValue())?"CONNECTED":"AVAILABLE":a)}))}initializeCastApi(){let e,t,i;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,i=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:i}),this.initListeners()}catch(a){this.errorEvent$.next({id:"ChromecastInitializer",category:rl.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:a})}}},rS=r=>{switch(r){case cast.framework.CastState.NO_DEVICES_AVAILABLE:return"NOT_AVAILABLE";case cast.framework.CastState.NOT_CONNECTED:return"AVAILABLE";case cast.framework.CastState.CONNECTING:return"CONNECTING";case cast.framework.CastState.CONNECTED:return"CONNECTED";default:return al(r)}};var Ig=Ye(eo(),1);var Hf=Ye(ss(),1);import{assertNever as Df}from"@vkontakte/videoplayer-shared";var X=(r,e=0,t=0)=>{switch(t){case 0:return r.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case 1:{if(e===0)return r;let i=new URL(r);return i.searchParams.append("playback_shift",e.toFixed(0)),i.toString()}case 2:{let i=new URL(r);return!i.searchParams.get("offset_p")&&e===0?r:(i.searchParams.set("offset_p",e.toFixed(0)),i.toString())}default:Df(t)}return r},Fo=(r,e)=>{switch(e){case 0:return NaN;case 1:{let t=new URL(r);return Number(t.searchParams.get("playback_shift"))}case 2:{let t=new URL(r);return Number(t.searchParams.get("offset_p")??0)}default:Df(e)}};var E=(r,e,t=!1)=>{let i=r.getTransition();(t||!i||i.to===e)&&r.setState(e)};import{isNonNullable as pP,Subject as ns,merge as Bf}from"@vkontakte/videoplayer-shared";var L=class{constructor(e){this.transitionStarted$=new ns;this.transitionEnded$=new ns;this.transitionUpdated$=new ns;this.forceChanged$=new ns;this.stateChangeStarted$=Bf(this.transitionStarted$,this.transitionUpdated$);this.stateChangeEnded$=Bf(this.transitionEnded$,this.forceChanged$);this.state=e,this.prevState=void 0}setState(e){let t=this.transition,i=this.state;this.transition=void 0,this.prevState=i,this.state=e,t?t.to===e?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:i,to:e,canceledTransition:t})}startTransitionTo(e){let t=this.transition,i=this.state;i===e||pP(t)&&t.to===e||(this.prevState=i,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:i,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}};import{assertNever as hP}from"@vkontakte/videoplayer-shared";var Of=r=>{switch(r){case"MPEG":case"DASH":case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":case"HLS":case"HLS_ONDEMAND":return!1;case"DASH_LIVE":case"DASH_LIVE_CMAF":case"HLS_LIVE":case"HLS_LIVE_CMAF":case"DASH_LIVE_WEBM":case"WEB_RTC_LIVE":return!0;default:return hP(r)}};import{assertNever as yi,assertNonNullable as _t,debounce as Vf,ErrorCategory as _f,fromEvent as Nt,isNonNullable as Nf,map as Ff,merge as qf,observableFrom as fP,Subject as mP,Subscription as qo,timeout as bP,getHighestQuality as gP}from"@vkontakte/videoplayer-shared";var SP=5,vP=5,yP=500,Uf=7e3,cr=class{constructor(e){this.subscription=new qo;this.loadMediaTimeoutSubscription=new qo;this.videoState=new L("stopped");this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),i=this.params.desiredState.playbackState.getState(),a=this.params.desiredState.playbackState.getTransition(),s=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${i}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(s)};`}),i==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.stop());return}if(!t){if(a?.to!=="paused"&&s.state==="requested"&&e!=="stopped"){this.seek(s.position/1e3);return}switch(i){case"ready":{switch(e){case"playing":case"paused":case"ready":break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:yi(e)}break}case"playing":{switch(e){case"playing":break;case"paused":this.videoState.startTransitionTo("playing"),this.params.connection.remotePlayerController.playOrPause();break;case"ready":this.videoState.startTransitionTo("playing"),this.params.connection.remotePlayerController.playOrPause();break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:yi(e)}break}case"paused":{switch(e){case"playing":this.videoState.startTransitionTo("paused"),this.params.connection.remotePlayerController.playOrPause();break;case"paused":break;case"ready":this.videoState.startTransitionTo("paused"),this.videoState.setState("paused");break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:yi(e)}break}default:yi(i)}}};this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Of(e.format)),this.params.output.isAudioAvailable$.next(!0),this.handleRemoteVolumeChange({volume:this.params.connection.remotePlayer.volumeLevel,muted:this.params.connection.remotePlayer.isMuted});let t=this.params.connection.session.getMediaSession();t&&this.restoreSession(t),this.subscribe()}destroy(){this.log({message:"[destroy]"}),this.subscription.unsubscribe()}subscribe(){this.subscription.add(this.loadMediaTimeoutSubscription);let e=new qo;this.subscription.add(e),this.subscription.add(qf(this.videoState.stateChangeStarted$.pipe(Ff(a=>`stateChangeStarted$ ${JSON.stringify(a)}`)),this.videoState.stateChangeEnded$.pipe(Ff(a=>`stateChangeEnded$ ${JSON.stringify(a)}`))).subscribe(a=>this.log({message:`[videoState] ${a}`})));let t=(a,s)=>this.subscription.add(a.subscribe(s));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{let a=new mP;e.add(a.pipe(Vf(yP)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let s=NaN;e.add(Nt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(n=>{this.logRemoteEvent(n);let o=n.value;this.params.output.position$.next(o),(this.params.desiredState.seekState.getState().state==="applying"||Math.abs(o-s)>SP)&&a.next(o),s=o})),e.add(Nt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(n=>{this.logRemoteEvent(n),this.params.output.duration$.next(n.value)}))}t(Nt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(Nt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemotePause():this.handleRemotePlay()}),t(Nt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),a=>{this.logRemoteEvent(a);let{remotePlayer:s}=this.params.connection,n=a.value,o=this.params.output.isBuffering$.getValue(),l=n===chrome.cast.media.PlayerState.BUFFERING;switch(o!==l&&this.params.output.isBuffering$.next(l),n){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&s.duration-s.currentTime<vP&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),E(this.params.desiredState.playbackState,"stopped");break;case chrome.cast.media.PlayerState.PAUSED:{this.handleRemotePause();break}case chrome.cast.media.PlayerState.PLAYING:this.handleRemotePlay();break;case chrome.cast.media.PlayerState.BUFFERING:break;default:yi(n)}}),t(Nt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({volume:a.value})}),t(Nt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({muted:a.value})});let i=qf(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,fP(["init"])).pipe(Vf(0));t(i,this.syncPlayback)}restoreSession(e){this.log({message:"restoreSession"});let{remotePlayer:t}=this.params.connection;if(e.playerState!==chrome.cast.media.PlayerState.IDLE){t.isPaused?(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused")):(this.videoState.setState("playing"),E(this.params.desiredState.playbackState,"playing"));let i=this.params.output.isLive$.getValue();this.params.output.duration$.next(i?0:t.duration),this.params.output.position$.next(i?0:t.currentTime),this.params.desiredState.seekState.setState({state:"none"})}}prepare(){let e=this.params.format;this.log({message:`[prepare] format: ${e}`});let t=this.createMediaInfo(e),i=this.createLoadRequest(t);this.loadMedia(i)}handleRemotePause(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="paused"||e==="playing")&&(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused"))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="playing"||e==="paused")&&(this.videoState.setState("playing"),E(this.params.desiredState.playbackState,"playing"))}handleRemoteReady(){this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.params.desiredState.playbackState.getTransition()?.to==="ready"&&E(this.params.desiredState.playbackState,"ready")}handleRemoteStop(){this.videoState.getState()!=="stopped"&&this.videoState.setState("stopped")}handleRemoteVolumeChange(e){let t=this.params.output.volume$.getValue(),i={volume:e.volume??t.volume,muted:e.muted??t.muted};(i.volume!==t.volume||i.muted!==i.muted)&&this.params.output.volume$.next(i)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:i}=this.params.connection;t.currentTime=e,i.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createMediaInfo(e){let t=this.params.source,i,a,s;switch(e){case"MPEG":{let u=t[e];_t(u);let d=gP(Object.keys(u));_t(d);let c=u[d];_t(c),i=c,a="video/mp4",s=chrome.cast.media.StreamType.BUFFERED;break}case"HLS":case"HLS_ONDEMAND":{let u=t[e];_t(u),i=u.url,a="application/x-mpegurl",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":{let u=t[e];_t(u),i=u.url,a="application/dash+xml",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_LIVE_CMAF":{let u=t[e];_t(u),i=u.url,a="application/dash+xml",s=chrome.cast.media.StreamType.LIVE;break}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let u=t[e];_t(u),i=X(u.url),a="application/x-mpegurl",s=chrome.cast.media.StreamType.LIVE;break}case"DASH_LIVE":case"WEB_RTC_LIVE":{let u="Unsupported format for Chromecast",d=new Error(u);throw this.params.output.error$.next({id:"ChromecastProvider.createMediaInfo()",category:_f.VIDEO_PIPELINE,message:u,thrown:d}),d}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return yi(e)}let n=new chrome.cast.media.MediaInfo(this.params.meta.videoId??i,a);n.contentUrl=i,n.streamType=s,n.metadata=new chrome.cast.media.GenericMediaMetadata;let{title:o,subtitle:l}=this.params.meta;return Nf(o)&&(n.metadata.title=o),Nf(l)&&(n.metadata.subtitle=l),n}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let i=this.params.desiredState.seekState.getState();return i.state==="applying"||i.state==="requested"?t.currentTime=this.params.output.isLive$.getValue()?0:i.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),i=new Promise((a,s)=>{this.loadMediaTimeoutSubscription.add(bP(Uf).subscribe(()=>s(`timeout(${Uf})`)))});(0,Hf.default)(Promise.race([t,i]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state==="applying"&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},a=>{let s=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${a}`;this.log({message:s}),this.params.output.error$.next({id:"ChromecastProvider.loadMedia",category:_f.VIDEO_PIPELINE,message:s,thrown:a})}),()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}};import{clearVideoElement as Gf}from"@vkontakte/videoplayer-shared";import{clearVideoElement as TP}from"@vkontakte/videoplayer-shared";var jf=r=>{try{r.pause(),r.playbackRate=0,TP(r),r.remove()}catch(e){console.error(e)}};import{fromEvent as IP,Subscription as EP}from"@vkontakte/videoplayer-shared";var Uo=class{constructor(){this.attribute="data-pool-reused"}get(e){return e.hasAttribute(this.attribute)}set(e,t){e.toggleAttribute(this.attribute,t)}delete(e){e.removeAttribute(this.attribute)}},Ho=window.WeakMap?new WeakMap:new Uo,jo=window.WeakMap?new WeakMap:new Map,xP=(r,e=20)=>{let t=0;return IP(r,"ratechange").subscribe(i=>{t++,t>=e&&(r.currentTime=r.currentTime,t=0)})},oe=(r,{audioVideoSyncRate:e})=>{let t=r.querySelector("video"),i=!!t;t?Gf(t):(t=document.createElement("video"),r.appendChild(t)),Ho.set(t,i);let a=new EP;return a.add(xP(t,e)),jo.set(t,a),t.setAttribute("crossorigin","anonymous"),t.setAttribute("playsinline","playsinline"),t.controls=!1,t.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),t},ue=r=>{jo.get(r)?.unsubscribe(),jo.delete(r);let t=Ho.get(r);Ho.delete(r),t?Gf(r):jf(r)};import{assertNonNullable as dr,isNonNullable as Je,isNullable as kP,fromEvent as Ti,merge as Wf,observableFrom as Qf,filterChanged as Yf,map as pr,Subject as zf,Subscription as wP,ValueSubject as RP,ErrorCategory as $P}from"@vkontakte/videoplayer-shared";import{isNonNullable as Go,isNullable as PP,Subscription as AP}from"@vkontakte/videoplayer-shared";var os=(r,e,t,{equal:i=(n,o)=>n===o,changed$:a,onError:s}={})=>{let n=r.getState(),o=e(),l=PP(a),u=new AP;return a&&u.add(a.subscribe(d=>{let c=r.getState();i(d,c)&&r.setState(d)},s)),i(o,n)||(t(n),l&&r.setState(n)),u.add(r.stateChangeStarted$.subscribe(d=>{t(d.to),l&&r.setState(d.to)},s)),u},Ke=(r,e,t)=>os(e,()=>r.loop,i=>{Go(i)&&(r.loop=i)},{onError:t}),le=(r,e,t,i)=>os(e,()=>({muted:r.muted,volume:r.volume}),a=>{Go(a)&&(r.muted=a.muted,r.volume=a.volume)},{equal:(a,s)=>a===s||a?.muted===s?.muted&&a?.volume===s?.volume,changed$:t,onError:i}),ke=(r,e,t,i)=>os(e,()=>r.playbackRate,a=>{Go(a)&&(r.playbackRate=a)},{changed$:t,onError:i}),gt=os;var LP=r=>["__",r.language,r.label].join("|"),MP=(r,e)=>{if(r.id===e)return!0;let[t,i,a]=e.split("|");return r.language===i&&r.label===a},Wo=class r{constructor(){this.available$=new zf;this.current$=new RP(void 0);this.error$=new zf;this.subscription=new wP;this.externalTracks=new Map;this.internalTracks=new Map}connect(e,t,i){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let a=s=>{this.error$.next({id:"TextTracksManager",category:$P.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:s})};this.subscription.add(this.available$.subscribe(i.availableTextTracks$)),this.subscription.add(this.current$.subscribe(i.currentTextTrack$)),this.subscription.add(this.error$.subscribe(i.error$)),this.subscription.add(gt(t.internalTextTracks,()=>Object.values(this.internalTracks),s=>{Je(s)&&this.setInternal(s)},{equal:(s,n)=>Je(s)&&Je(n)&&s.length===n.length&&s.every(({id:o},l)=>o===n[l].id),changed$:this.available$.pipe(pr(s=>s.filter(({type:n})=>n==="internal"))),onError:a})),this.subscription.add(gt(t.externalTextTracks,()=>Object.values(this.externalTracks),s=>{Je(s)&&this.setExternal(s)},{equal:(s,n)=>Je(s)&&Je(n)&&s.length===n.length&&s.every(({id:o},l)=>o===n[l].id),changed$:this.available$.pipe(pr(s=>s.filter(({type:n})=>n==="external"))),onError:a})),this.subscription.add(gt(t.currentTextTrack,()=>{if(this.video)return;let s=this.htmlTextTracksAsArray().find(({mode:n})=>n==="showing");return s&&this.htmlTextTrackToITextTrack(s).id},s=>this.select(s),{changed$:this.current$,onError:a})),this.subscription.add(gt(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let s of this.htmlTextTracksAsArray())this.applyCueSettings(s.cues),this.applyCueSettings(s.activeCues)}))}subscribe(){dr(this.video);let{textTracks:e}=this.video;this.subscription.add(Ti(e,"addtrack").subscribe(()=>{let i=this.current$.getValue();i&&this.select(i)})),this.subscription.add(Wf(Ti(e,"addtrack"),Ti(e,"removetrack"),Qf(["init"])).pipe(pr(()=>this.htmlTextTracksAsArray().map(i=>this.htmlTextTrackToITextTrack(i))),Yf((i,a)=>i.length===a.length&&i.every(({id:s},n)=>s===a[n].id))).subscribe(this.available$)),this.subscription.add(Wf(Ti(e,"change"),Qf(["init"])).pipe(pr(()=>this.htmlTextTracksAsArray().find(({mode:i})=>i==="showing")),pr(i=>i&&this.htmlTextTrackToITextTrack(i).id),Yf()).subscribe(this.current$));let t=i=>this.applyCueSettings(i.target?.activeCues??null);this.subscription.add(Ti(e,"addtrack").subscribe(i=>{i.track?.addEventListener("cuechange",t);let a=s=>{let n=s.target?.cues??null;n&&n.length&&(this.applyCueSettings(s.target?.cues??null),s.target?.removeEventListener("cuechange",a))};i.track?.addEventListener("cuechange",a)})),this.subscription.add(Ti(e,"removetrack").subscribe(i=>{i.track?.removeEventListener("cuechange",t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let i of Array.from(e)){let a=i;Je(t.align)&&(a.align=t.align),Je(t.position)&&(a.position=t.position),Je(t.size)&&(a.size=t.size),Je(t.line)&&(a.line=t.line)}}htmlTextTracksAsArray(e=!1){dr(this.video);let t=[...this.video.textTracks];return e?t:t.filter(r.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:i}=e,a=e.id?e.id:LP(e),s=this.externalTracks.has(a),n=a.includes("auto");return s?{id:a,type:"external",isAuto:n,language:t,label:i,url:this.externalTracks.get(a)?.url}:{id:a,type:"internal",isAuto:n,language:t,label:i,url:this.internalTracks.get(a)?.url}}static isHealthyTrack(e){return!(e.kind==="metadata"||e.groupId||e.id===""&&e.label===""&&e.language==="")}setExternal(e){this.internalTracks.size>0&&Array.from(this.internalTracks).forEach(([,t])=>this.detach(t)),e.filter(({id:t})=>!this.externalTracks.has(t)).forEach(t=>this.attach(t)),Array.from(this.externalTracks).filter(([t])=>!e.find(i=>i.id===t)).forEach(([,t])=>this.detach(t))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:i,language:a,isAuto:s})=>!this.internalTracks.has(i)&&!t.some(([,n])=>n.language===a&&n.isAuto===s)).forEach(i=>this.attach(i)),Array.from(this.internalTracks).filter(([i])=>!e.find(a=>a.id===i)).forEach(([,i])=>this.detach(i))}select(e){dr(this.video);for(let t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(let t of this.htmlTextTracksAsArray(!0))(kP(e)||!MP(t,e))&&(t.mode="disabled")}destroy(){if(this.subscription.unsubscribe(),this.video)for(let e of Array.from(this.video.getElementsByTagName("track"))){let t=e.getAttribute("id");t&&this.externalTracks.has(t)&&this.video.removeChild(e)}this.externalTracks.clear()}attach(e){dr(this.video);let t=document.createElement("track");t.setAttribute("src",e.url),t.setAttribute("id",e.id),e.label&&t.setAttribute("label",e.label),e.language&&t.setAttribute("srclang",e.language),e.type==="external"?this.externalTracks.set(e.id,e):e.type==="internal"&&this.internalTracks.set(e.id,e),this.video.appendChild(t)}detach(e){dr(this.video);let t=Array.prototype.find.call(this.video.getElementsByTagName("track"),i=>i.getAttribute("id")===e.id);t&&this.video.removeChild(t),e.type==="external"?this.externalTracks.delete(e.id):e.type==="internal"&&this.internalTracks.delete(e.id)}},we=Wo;var nt=class{constructor(){this.pausedTime=0;this.streamOffset=0;this.pauseTimestamp=0}getTotalPausedTime(){return this.pausedTime+this.getCurrentPausedTime()}getCurrentPausedTime(){return this.pauseTimestamp>0?Date.now()-this.pauseTimestamp:0}getStreamOffset(){return this.streamOffset}getTotalOffset(){return this.getTotalPausedTime()+this.streamOffset}pause(){this.pauseTimestamp===0&&(this.pauseTimestamp=Date.now())}resume(){this.pauseTimestamp>0&&(this.pausedTime+=this.getCurrentPausedTime(),this.pauseTimestamp=0)}resetTo(e,t=!1){this.streamOffset=e,this.pauseTimestamp=0,this.pausedTime=0,t&&this.pause()}};var Kf=r=>{let e=r;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},Qo=r=>{let e=Kf(r);return!!(e&&e.fullscreenElement&&e.fullscreenElement===r)},Jf=r=>{let e=Kf(r);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===r)};import{fromEvent as Re,map as St,merge as Zf,filterChanged as DP,isNonNullable as em,Subject as BP,filter as tm,mapTo as im,combine as OP,once as VP,ErrorCategory as _P,ValueSubject as rm,clientChecker as NP}from"@vkontakte/videoplayer-shared";var CP=3,Xf=(r,e,t=CP)=>{let i=0,a=0;for(let s=0;s<r.length;s++){let n=r.start(s),o=r.end(s);if(n<=e&&e<=o){if(i=n,a=o,!t)return{from:i,to:a};for(let l=s-1;l>=0;l--)r.end(l)+t>=i&&(i=r.start(l));for(let l=s+1;l<r.length;l++)r.start(l)-t<=a&&(a=r.end(l))}}return{from:i,to:a}};var ce=r=>{let e=T=>Re(r,T).pipe(im(void 0)),i=Zf(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(T=>Re(r,T))).pipe(St(T=>T.type==="ended"?r.readyState<2:r.readyState<3),DP()),a=Zf(Re(r,"progress"),Re(r,"timeupdate")).pipe(St(()=>Xf(r.buffered,r.currentTime))),s=NP.isSafari?OP({play:e("play").pipe(VP()),playing:e("playing")}).pipe(im(void 0)):e("playing"),n=Re(r,"volumechange").pipe(St(()=>({muted:r.muted,volume:r.volume}))),o=Re(r,"ratechange").pipe(St(()=>r.playbackRate)),l=Re(r,"error").pipe(tm(()=>!!(r.error||r.played.length)),St(()=>{let T=r.error;return{id:T?`MediaError#${T.code}`:"HtmlVideoError",category:_P.VIDEO_PIPELINE,message:T?T.message:"Error event from HTML video element",thrown:r.error??void 0}})),u=Re(r,"timeupdate").pipe(St(()=>r.currentTime)),d=new BP,c=.3,p;u.subscribe(T=>{r.loop&&em(p)&&em(T)&&p>=r.duration-c&&T<=c&&d.next(p),p=T});let h=e("pause").pipe(tm(()=>!r.error&&p!==r.duration)),m=Re(r,"enterpictureinpicture"),b=Re(r,"leavepictureinpicture"),g=new rm(Jf(r));m.subscribe(()=>g.next(!0)),b.subscribe(()=>g.next(!1));let y=new rm(Qo(r));return Re(r,"fullscreenchange").pipe(St(()=>Qo(r))).subscribe(y),{playing$:s,pause$:h,canplay$:e("canplay"),ended$:e("ended"),looped$:d,error$:l,seeked$:e("seeked"),seeking$:e("seeking"),progress$:e("progress"),loadStart$:e("loadstart"),loadedMetadata$:e("loadedmetadata"),loadedData$:e("loadeddata"),timeUpdate$:u,durationChange$:Re(r,"durationchange").pipe(St(()=>r.duration)),isBuffering$:i,currentBuffer$:a,volumeState$:n,playbackRateState$:o,inPiP$:g,inFullscreen$:y}};import{VideoQuality as vt}from"@vkontakte/videoplayer-shared";var yt=r=>{switch(r){case"mobile":return vt.Q_144P;case"lowest":return vt.Q_240P;case"low":return vt.Q_360P;case"sd":case"medium":return vt.Q_480P;case"hd":case"high":return vt.Q_720P;case"fullhd":case"full":return vt.Q_1080P;case"quadhd":case"quad":return vt.Q_1440P;case"ultrahd":case"ultra":return vt.Q_2160P}};var Ft=Ye(hr(),1);import{isNonNullable as Y,isNullable as zo,now as gm,isHigher as Ko,isHigherOrEqual as hm,isInvariantQuality as fm,isLower as mm,isLowerOrEqual as Jo,videoSizeToQuality as YP,assertNotEmptyArray as Sm,assertNonNullable as zP}from"@vkontakte/videoplayer-shared";var Yo=!1,ot={},cm=r=>{Yo=r},dm=()=>{ot={}},pm=r=>{r(ot)},fr=(r,e)=>{Yo&&(ot.meta=ot.meta??{},ot.meta[r]=e)},re=class{constructor(e){this.name=e}next(e){if(!Yo)return;ot.series=ot.series??{};let t=ot.series[this.name]??[];t.push([Date.now(),e]),ot.series[this.name]=t}};var KP=new re("best_bitrate"),vm=(r,e,t)=>(e-t)*Math.pow(2,-10*r)+t;var Xo=r=>(e,t)=>r*(Number(e.bitrate)-Number(t.bitrate)),mr=class{constructor(){this.history={}}recordSelection(e){this.history[e.id]=gm()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}},ym='Assertion "ABR Tracks is empty array" failed',us=(r,e,t,i)=>{let a=[...e].sort(Xo(1)),s=[...t].sort(Xo(1)),n=s.filter(l=>Y(l.bitrate)&&Y(r.bitrate)?r.bitrate/l.bitrate>i:!0),o=(0,Ft.default)(s,Math.round(s.length*a.indexOf(r)/(a.length+1)))??(0,Ft.default)(s,-1);return o&&n.includes(o)?o:n.length?(0,Ft.default)(n,-1):(0,Ft.default)(s,0)},bm=r=>"quality"in r,Tm=(r,e,t,i)=>{let a=Y(i?.last?.bitrate)&&Y(t?.bitrate)&&i.last.bitrate<t.bitrate?r.trackCooldownIncreaseQuality:r.trackCooldownDecreaseQuality,s=t&&i&&i.history[t.id]&&gm()-i.history[t.id]<=a&&(!i.last||t.id!==i.last.id);if(t?.id&&i&&!s&&i.recordSelection(t),s&&i?.last){let n=i.last;i?.recordSwitch(n);let o=bm(n)?"video":"audio",l=bm(n)?n.quality:n.bitrate;return e({message:`
7
7
  [last ${o} selected] ${l}
8
8
  `}),n}return i?.recordSwitch(t),t},Tt=(r,{container:e,throughput:t,tuning:i,limits:a,reserve:s=0,forwardBufferHealth:n,playbackRate:o,current:l,history:u,visible:d,droppedVideoMaxQualityLimit:c,abrLogger:p})=>{Sm(r,ym);let h=window.devicePixelRatio??1,m=i.usePixelRatio?i.pixelRatioMultiplier*(h-1)+1:1,b=i.limitByContainer&&e&&e.width>0&&e.height>0&&{width:e.width*m*i.containerSizeFactor,height:e.height*m*i.containerSizeFactor},g=b&&YP(b),y=i.considerPlaybackRate&&Y(o)?o:1,A=r.filter(v=>!fm(v.quality)).sort((v,R)=>Ko(v.quality,R.quality)?-1:1),T=(0,Ft.default)(A,-1)?.quality,S=(0,Ft.default)(A,0)?.quality,I=zo(a)||Y(a.min)&&Y(a.max)&&mm(a.max,a.min)||Y(a.min)&&S&&Ko(a.min,S)||Y(a.max)&&T&&mm(a.max,T),w=y*vm(n??.5,i.bitrateFactorAtEmptyBuffer,i.bitrateFactorAtFullBuffer),$={},V=A.filter(v=>{if(!(g?Jo(v.quality,g):!0))return $[v.quality]="FitsContainer",!1;if(!(Y(t)&&isFinite(t)&&Y(v.bitrate)?t-s>=v.bitrate*w:!0))return $[v.quality]="FitsThroughput",!1;if(i.lazyQualitySwitch&&Y(i.minBufferToSwitchUp)&&l&&!fm(l.quality)&&(n??0)<i.minBufferToSwitchUp&&Ko(v.quality,l.quality))return $[v.quality]="Buffer",!1;if(!!c&&hm(v.quality,c))return $[v.quality]="DroppedFramesLimit",!1;let x=I||(zo(a.max)||Jo(v.quality,a.max))&&(zo(a.min)||hm(v.quality,a.min)),k=Y(d)&&!d?Jo(v.quality,i.backgroundVideoQualityLimit):!0;return!x||!k?($[v.quality]="FitsQualityLimits",!1):!0})[0];V&&V.bitrate&&KP.next(V.bitrate);let _=V??A[Math.ceil((A.length-1)/2)]??r[0];return _.quality!==u?.last?.quality&&p({message:`
9
9
  [VIDEO TRACKS ABR]
@@ -110,4 +110,4 @@ void main(void) {
110
110
  gl_FragColor = texture2D(u_texture, tc);
111
111
  }
112
112
  `;var Cs=class{constructor(e,t,i){this.videoInitialized=!1;this.active=!1;this.container=e,this.sourceVideoElement=t,this.params=i,this.canvas=this.createCanvas();let a=this.canvas.getContext("webgl");if(!a)throw new Error("Could not initialize WebGL context");this.gl=a,this.container.appendChild(this.canvas),this.camera=new Ls(this.params.fov,this.params.orientation),this.cameraRotationManager=new Ms(this.camera,{rotationSpeed:this.params.rotationSpeed,maxYawAngle:this.params.maxYawAngle,rotationSpeedCorrection:this.params.rotationSpeedCorrection,degreeToPixelCorrection:this.params.degreeToPixelCorrection,speedFadeTime:this.params.speedFadeTime,speedFadeThreshold:this.params.speedFadeThreshold}),this.updateFrameSize(),this.vertexBuffer=this.createVertexBuffer(),this.textureMappingBuffer=this.createTextureMappingBuffer(),this.updateTextureMappingBuffer(),this.program=this.createProgram(),this.videoTexture=this.createTexture(),this.gl.useProgram(this.program),this.videoElementDataLoadedFn=this.onDataLoadedHandler.bind(this),this.renderFn=this.render.bind(this)}play(){this.active||(this.videoInitialized?this.doPlay():this.sourceVideoElement.readyState>=2?(this.videoInitialized=!0,this.doPlay()):this.sourceVideoElement.addEventListener("loadeddata",this.videoElementDataLoadedFn))}stop(){this.active=!1}startCameraManualRotation(e,t){this.cameraRotationManager.setRotationSpeed(e*this.params.rotationSpeed,t*this.params.rotationSpeed,0),this.cameraRotationManager.startRotation()}stopCameraManualRotation(e=!1){this.cameraRotationManager.stopRotation(e)}turnCamera(e,t){this.cameraRotationManager.turnCamera(e,t)}pointCameraTo(e,t){this.cameraRotationManager.pointCameraTo(e,t)}pixelToDegree(e){return{x:this.params.degreeToPixelCorrection*this.params.fov.x*-e.x/this.viewportWidth,y:this.params.degreeToPixelCorrection*this.params.fov.y*e.y/this.viewportHeight}}getCameraRotation(){return this.camera.orientation}holdCamera(){this.cameraRotationManager.stopRotation(!0)}releaseCamera(){this.cameraRotationManager.onCameraRelease()}destroy(){this.sourceVideoElement.removeEventListener("loadeddata",this.videoElementDataLoadedFn),this.stop(),this.canvas.remove()}setViewportSize(e,t){this.viewportWidth=e,this.viewportHeight=t,this.canvas.width=this.viewportWidth,this.canvas.height=this.viewportHeight,this.gl.viewport(0,0,this.canvas.width,this.canvas.height)}onDataLoadedHandler(){this.videoInitialized=!0,this.doPlay()}doPlay(){this.updateFrameSize(),this.vertexBuffer=this.createVertexBuffer(),this.active=!0,this.sourceVideoElement.removeEventListener("loadeddata",this.videoElementDataLoadedFn),requestAnimationFrame(this.renderFn)}render(e){this.cameraRotationManager.tick(e),this.updateTexture(),this.updateTextureMappingBuffer();let t=this.gl.getAttribLocation(this.program,"a_vertex"),i=this.gl.getAttribLocation(this.program,"a_texel"),a=this.gl.getUniformLocation(this.program,"u_texture"),s=this.gl.getUniformLocation(this.program,"u_focus");this.gl.enableVertexAttribArray(t),this.gl.enableVertexAttribArray(i),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.vertexBuffer),this.gl.vertexAttribPointer(t,2,this.gl.FLOAT,!1,0,0),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.textureMappingBuffer),this.gl.vertexAttribPointer(i,2,this.gl.FLOAT,!1,0,0),this.gl.activeTexture(this.gl.TEXTURE0),this.gl.bindTexture(this.gl.TEXTURE_2D,this.videoTexture),this.gl.uniform1i(a,0),this.gl.uniform2f(s,-this.camera.orientation.x,-this.camera.orientation.y),this.gl.drawArrays(this.gl.TRIANGLE_FAN,0,4),this.gl.bindTexture(this.gl.TEXTURE_2D,null),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,null),this.gl.disableVertexAttribArray(t),this.gl.disableVertexAttribArray(i),this.active&&requestAnimationFrame(this.renderFn)}createShader(e,t){let i=this.gl.createShader(t);if(!i)throw this.destroy(),new Error(`Could not create shader (${t})`);if(this.gl.shaderSource(i,e),this.gl.compileShader(i),!this.gl.getShaderParameter(i,this.gl.COMPILE_STATUS))throw this.destroy(),new Error("An error occurred while compiling the shader: "+this.gl.getShaderInfoLog(i));return i}createProgram(){let e=this.gl.createProgram();if(!e)throw this.destroy(),new Error("Could not create shader program");let t=this.createShader(Wb,this.gl.VERTEX_SHADER),i=this.createShader(Qb,this.gl.FRAGMENT_SHADER);if(this.gl.attachShader(e,t),this.gl.attachShader(e,i),this.gl.linkProgram(e),!this.gl.getProgramParameter(e,this.gl.LINK_STATUS))throw this.destroy(),new Error("Could not link shader program.");return e}createTexture(){let e=this.gl.createTexture();if(!e)throw this.destroy(),new Error("Could not create texture");return this.gl.bindTexture(this.gl.TEXTURE_2D,e),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),this.gl.bindTexture(this.gl.TEXTURE_2D,null),e}updateTexture(){this.gl.bindTexture(this.gl.TEXTURE_2D,this.videoTexture),this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL,!0),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,this.sourceVideoElement),this.gl.bindTexture(this.gl.TEXTURE_2D,null)}createVertexBuffer(){let e=this.gl.createBuffer();if(!e)throw this.destroy(),new Error("Could not create vertex buffer");let t=1,i=1,a=this.frameHeight/(this.frameWidth/this.viewportWidth);return a>this.viewportHeight?t=this.viewportHeight/a:i=a/this.viewportHeight,this.gl.bindBuffer(this.gl.ARRAY_BUFFER,e),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([-t,-i,t,-i,t,i,-t,i]),this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,null),e}createTextureMappingBuffer(){let e=this.gl.createBuffer();if(!e)throw this.destroy(),new Error("Could not create texture mapping buffer");return e}calculateTexturePosition(){let e=.5-this.camera.orientation.x/360,t=.5-this.camera.orientation.y/180,i=this.camera.fov.x/360/2,a=this.camera.fov.y/180/2,s=e-i,n=t-a,o=e+i,l=t-a,u=e+i,d=t+a,c=e-i,p=t+a;return[s,n,o,l,u,d,c,p]}updateTextureMappingBuffer(){this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.textureMappingBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([...this.calculateTexturePosition()]),this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,null)}updateFrameSize(){this.frameWidth=this.sourceVideoElement.videoWidth,this.frameHeight=this.sourceVideoElement.videoHeight}createCanvas(){let e=document.createElement("canvas");return e.style.position="absolute",e.style.left="0",e.style.top="0",e.style.width="100%",e.style.height="100%",e}};var Jt=class{constructor(e){this.subscription=new uw;this.videoState=new L("stopped");this.elementSize$=new lw(void 0);this.textTracksManager=new we;this.droppedFramesManager=new ps;this.videoTracksMap=new Map;this.audioTracksMap=new Map;this.textTracksMap=new Map;this.videoStreamsMap=new Map;this.audioStreamsMap=new Map;this.videoTrackSwitchHistory=new mr;this.audioTrackSwitchHistory=new mr;this.textTracks=[];this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.params.desiredState.playbackState.getState(),i=this.params.desiredState.playbackState.getTransition(),a=this.params.desiredState.seekState.getState();if(!this.videoState.getTransition()){if(a.state==="requested"&&i?.to!=="paused"&&e!=="stopped"&&t!=="stopped"){let n=this.liveOffset?.getTotalPausedTime()??0;this.seek(a.position-n,a.forcePrecise)}if(t==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.player.stop(),this.video.removeAttribute("src"),this.video.load(),this.params.output.position$.next(0),this.params.output.duration$.next(1/0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.videoState.setState("stopped"),E(this.params.desiredState.playbackState,"stopped",!0));return}switch(e){case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();return;case"ready":t==="paused"?(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused")):t==="playing"?(this.videoState.startTransitionTo("playing"),this.playIfAllowed()):i?.to==="ready"&&E(this.params.desiredState.playbackState,"ready");return;case"playing":t==="paused"?(this.videoState.startTransitionTo("paused"),this.liveOffset?.pause(),this.video.paused?this.videoState.setState("paused"):this.video.pause()):i?.to==="playing"&&E(this.params.desiredState.playbackState,"playing");return;case"paused":t==="playing"?(this.videoState.startTransitionTo("playing"),this.liveOffset?this.liveOffset.getTotalOffset()/1e3<Math.abs(this.params.output.duration$.getValue())?(this.liveOffset.resume(),this.playIfAllowed(),this.params.output.position$.next(-this.liveOffset.getTotalOffset()/1e3)):this.seek(0,!1):this.playIfAllowed()):i?.to==="paused"&&E(this.params.desiredState.playbackState,"paused");return;default:return tw(e)}}};this.init3DScene=e=>{if(this.scene3D)return;this.scene3D=new Cs(this.params.container,this.video,{fov:this.params.tuning.spherical.fov,orientation:this.params.tuning.spherical.orientation||{x:e.projectionData?.pose.yaw||0,y:e.projectionData?.pose.pitch||0,z:e.projectionData?.pose.roll||0},rotationSpeed:this.params.tuning.spherical.rotationSpeed,maxYawAngle:this.params.tuning.spherical.maxYawAngle,rotationSpeedCorrection:this.params.tuning.spherical.rotationSpeedCorrection,degreeToPixelCorrection:this.params.tuning.spherical.degreeToPixelCorrection,speedFadeTime:this.params.tuning.spherical.speedFadeTime,speedFadeThreshold:this.params.tuning.spherical.speedFadeThreshold});let t=this.elementSize$.getValue();t&&this.scene3D.setViewportSize(t.width,t.height)};this.destroy3DScene=()=>{this.scene3D&&(this.scene3D.destroy(),this.scene3D=void 0)};this.params=e,this.video=oe(e.container,e.tuning),this.tracer=e.dependencies.tracer.createComponentTracer(this.constructor.name),this.params.output.element$.next(this.video),this.params.output.availableVideoTracks$.next([]),this.params.output.availableAudioTracks$.next([]),this.params.output.isAudioAvailable$.next(!0),this.params.output.hostname$.next(z(this.params.source.url)),this.params.output.isLive$.next(!1),this.params.output.autoVideoTrackLimitingAvailable$.next(!0),this.params.output.availableTextTracks$.next([]),this.params.desiredState.internalTextTracks.setState([]),this.player=new $s({throughputEstimator:this.params.dependencies.throughputEstimator,tuning:this.params.tuning,compatibilityMode:this.params.source.compatibilityMode,tracer:this.tracer}),this.subscribe()}getProviderSubscriptionInfo(){let{output:e,desiredState:t}=this.params,i=ce(this.video),a=this.constructor.name,s=o=>{e.error$.next({id:a,category:Cu.WTF,message:`${a} internal logic error`,thrown:o})};return{output:e,desiredState:t,observableVideo:i,genericErrorListener:s,connect:(o,l)=>this.subscription.add(o.subscribe(l,s))}}subscribe(){let{output:e,desiredState:t,observableVideo:i,genericErrorListener:a,connect:s}=this.getProviderSubscriptionInfo();this.subscription.add(this.params.output.availableVideoTracks$.pipe(Yb(u=>!!u.length),Kb()).subscribe(u=>{this.droppedFramesManager.connect({logger:this.params.dependencies.logger,video:this.video,droppedFramesChecker:this.params.tuning.droppedFramesChecker,isAuto:this.params.desiredState.autoVideoTrackSwitching,playing$:i.playing$,pause$:i.pause$,tracks:u})})),s(i.ended$,e.endedEvent$),s(i.looped$,e.loopedEvent$),s(i.error$,e.error$),s(i.isBuffering$,e.isBuffering$),s(i.currentBuffer$,e.currentBuffer$),s(i.playing$,e.firstFrameEvent$),s(i.canplay$,e.canplay$),s(i.inPiP$,e.inPiP$),s(i.inFullscreen$,e.inFullscreen$),s(i.loadedMetadata$,e.loadedMetadataEvent$),s(this.player.error$,e.error$),s(this.player.lastConnectionType$,e.httpConnectionType$),s(this.player.lastConnectionReused$,e.httpConnectionReused$),s(this.player.isLive$,e.isLive$),s(this.player.lastRequestFirstBytes$.pipe(Yb(sw),Kb()),e.firstBytesEvent$),s(this.videoState.stateChangeEnded$.pipe(zb(u=>u.to)),this.params.output.playbackState$),this.subscription.add(i.seeked$.subscribe(e.seekedEvent$,a)),this.subscription.add(Ke(this.video,t.isLooped,a)),this.subscription.add(le(this.video,t.volume,i.volumeState$,a)),this.subscription.add(i.volumeState$.subscribe(this.params.output.volume$,a)),this.subscription.add(ke(this.video,t.playbackRate,i.playbackRateState$,a)),s(ow(this.video),this.elementSize$),s($e(this.video,{threshold:this.params.tuning.autoTrackSelection.activeVideoAreaThreshold}),e.elementVisible$),this.subscription.add(i.playing$.subscribe(()=>{this.videoState.setState("playing"),E(t.playbackState,"playing"),this.scene3D&&this.scene3D.play()},a)).add(i.pause$.subscribe(()=>{this.videoState.setState("paused"),E(t.playbackState,"paused")},a)).add(i.canplay$.subscribe(()=>{this.videoState.getState()==="playing"&&this.playIfAllowed()},a)),this.subscription.add(this.player.state$.stateChangeEnded$.subscribe(({to:u})=>{if(u==="manifest_ready"){this.videoTracksMap=new Map,this.audioTracksMap=new Map,this.textTracksMap=new Map;let d=this.player.getStreams();if(iw(d,"Manifest not loaded or empty"),!this.params.tuning.isAudioDisabled){let p=[];for(let h of d.audio){p.push(Iu(h));let m=[];for(let b of h.representations){let g=Mb(b);m.push(g),this.audioTracksMap.set(g,{stream:h,representation:b})}this.audioStreamsMap.set(h,m)}this.params.output.availableAudioStreams$.next(p)}let c=[];for(let p of d.video){c.push(Eu(p));let h=[];for(let m of p.representations){let b=Lb(m);b&&(h.push(b),this.videoTracksMap.set(b,{stream:p,representation:m}))}this.videoStreamsMap.set(p,h)}if(this.params.output.availableVideoStreams$.next(c),this.textTracksManager)for(let p of d.text)for(let h of p.representations){let m=Cb(p,h);this.textTracksMap.set(m,{stream:p,representation:h})}this.params.output.availableVideoTracks$.next(Array.from(this.videoTracksMap.keys())),this.params.output.availableAudioTracks$.next(Array.from(this.audioTracksMap.keys())),this.params.output.isAudioAvailable$.next(!!this.audioTracksMap.size),this.audioTracksMap.size&&this.textTracksMap.size&&this.params.desiredState.internalTextTracks.startTransitionTo(Array.from(this.textTracksMap.keys()))}else u==="representations_ready"&&(this.videoState.setState("ready"),this.player.initBuffer())},a));let n=u=>e.error$.next({id:"RepresentationSwitch",category:Cu.WTF,message:"Switching representations threw",thrown:u});this.subscription.add(Ds(this.player.state$.stateChangeEnded$,t.videoTrack.stateChangeStarted$,t.autoVideoTrackSwitching.transitionStarted$,this.params.dependencies.throughputEstimator.rttAdjustedThroughput$,t.autoVideoTrackLimits.stateChangeStarted$,t.videoStream.stateChangeStarted$,t.audioStream.stateChangeStarted$,this.elementSize$,this.params.output.elementVisible$,this.droppedFramesManager.onDroopedVideoFramesLimit$,aw(this.video,"progress")).subscribe(()=>{let u=this.player.state$.getState(),d=this.player.state$.getTransition();if(!["manifest_ready","running"].includes(u)||d)return;t.autoVideoTrackSwitching.getTransition()&&t.autoVideoTrackSwitching.setState(t.autoVideoTrackSwitching.getState());let c=this.selectVideoAudioRepresentations();if(!c)return;let[p,h]=c,m=this.params.desiredState.autoVideoTrackLimits.getTransition();if(m&&this.params.output.autoVideoTrackLimits$.next(m.to),u==="manifest_ready")this.player.initRepresentations(p.id,h?.id,this.params.sourceHls);else if(this.player.switchRepresentation("video",p.id).catch(n),h){let b=!!t.audioStream.getTransition();this.player.switchRepresentation("audio",h.id,b).catch(n)}},a)),this.subscription.add(t.cameraOrientation.stateChangeEnded$.subscribe(({to:u})=>{this.scene3D&&u&&this.scene3D.pointCameraTo(u.x,u.y)})),this.subscription.add(this.elementSize$.subscribe(u=>{this.scene3D&&u&&this.scene3D.setViewportSize(u.width,u.height)})),this.subscription.add(this.player.currentVideoRepresentation$.pipe(Du()).subscribe(u=>{let d=[...this.videoTracksMap.entries()].find(([,{representation:m}])=>m.id===u);if(!d){e.currentVideoTrack$.next(void 0),e.currentVideoStream$.next(void 0);return}let[c,{stream:p}]=d,h=this.params.desiredState.videoStream.getTransition();h&&h.to&&h.to.id===p.id&&this.params.desiredState.videoStream.setState(h.to),e.currentVideoTrack$.next(c),e.currentVideoStream$.next(Eu(p))},a)),this.subscription.add(this.player.currentAudioRepresentation$.pipe(Du()).subscribe(u=>{let d=[...this.audioTracksMap.entries()].find(([,{representation:m}])=>m.id===u);if(!d){e.currentAudioStream$.next(void 0);return}let[c,{stream:p}]=d,h=this.params.desiredState.audioStream.getTransition();h&&h.to&&h.to.id===p.id&&this.params.desiredState.audioStream.setState(h.to),e.currentAudioStream$.next(Iu(p))},a)),this.subscription.add(this.player.currentVideoRepresentationInit$.subscribe(u=>{if(u?.is3dVideo&&this.params.tuning.spherical?.enabled)try{this.init3DScene(u),e.is3DVideo$.next(!0)}catch(d){e.warning$.next({id:"DashProvider",message:`DashProvider could not initialize 3D-scene: ${d}`})}else this.destroy3DScene(),this.params.tuning.spherical?.enabled&&e.is3DVideo$.next(!1)},a)),this.subscription.add(this.player.currentVideoSegmentLength$.subscribe(e.currentVideoSegmentLength$,a)),this.subscription.add(this.player.currentAudioSegmentLength$.subscribe(e.currentAudioSegmentLength$,a)),this.textTracksManager?.connect(this.video,t,e);let o=t.playbackState.stateChangeStarted$.pipe(zb(({to:u})=>u==="ready"),Du());this.subscription.add(Ds(o,t.autoVideoTrackSwitching.stateChangeStarted$,this.player.state$.stateChangeEnded$).subscribe(()=>{let u=t.autoVideoTrackSwitching.getState(),c=t.playbackState.getState()==="ready"?this.params.tuning.dash.forwardBufferTargetPreload:u?this.params.tuning.dash.forwardBufferTargetAuto:this.params.tuning.dash.forwardBufferTargetManual;this.player.setBufferTarget(c)})),this.subscription.add(Ds(o,this.player.state$.stateChangeEnded$).subscribe(()=>this.player.setPreloadOnly(t.playbackState.getState()==="ready")));let l=Ds(t.playbackState.stateChangeStarted$,t.videoTrack.stateChangeStarted$,t.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,nw(["init"])).pipe(rw(0));this.subscription.add(l.subscribe(this.syncPlayback,a))}selectVideoAudioRepresentations(){let{desiredState:e,output:t}=this.params,i=e.autoVideoTrackSwitching.getState(),a=e.videoTrack.getState()?.id,n=[...this.videoTracksMap.keys()].find(({id:w})=>w===a),o=t.currentVideoTrack$.getValue(),l=e.videoStream.getState()??(n&&this.videoTracksMap.get(n)?.stream)??this.videoStreamsMap.size===1?this.videoStreamsMap.keys().next().value:void 0;if(!l)return;let u=[...this.videoStreamsMap.keys()].find(({id:w})=>w===l.id),d=u&&this.videoStreamsMap.get(u);if(!d)return;let c=Xe(this.video.buffered,this.video.currentTime*1e3),p=i?this.params.tuning.dash.forwardBufferTargetAuto:this.params.tuning.dash.forwardBufferTargetManual,h=Math.min(c/Math.min(p,(this.video.duration*1e3||1/0)-this.video.currentTime*1e3),1),m=e.audioStream.getState()??(this.audioStreamsMap.size===1?this.audioStreamsMap.keys().next().value:void 0),b=[...this.audioStreamsMap.keys()].find(({id:w})=>w===m?.id)??this.audioStreamsMap.keys().next().value,g=0;if(b){if(n&&!i)if(this.params.tuning.useSeparateAudioVideoABR){let w=us(n,d,this.audioStreamsMap.get(b)??[],this.params.tuning.autoTrackSelection.minVideoAudioRatio);g=Math.max(g,w?.bitrate??-1/0)}else{let w=Is(n,d,this.audioStreamsMap.get(b)??[]);g=Math.max(g,w?.bitrate??-1/0)}if(o)if(this.params.tuning.useSeparateAudioVideoABR){let w=us(o,d,this.audioStreamsMap.get(b)??[],this.params.tuning.autoTrackSelection.minVideoAudioRatio);g=Math.max(g,w?.bitrate??-1/0)}else{let w=Is(o,d,this.audioStreamsMap.get(b)??[]);g=Math.max(g,w?.bitrate??-1/0)}}let y=Tt(d,{container:this.elementSize$.getValue(),throughput:this.params.dependencies.throughputEstimator.rttAdjustedThroughput$.getValue(),tuning:this.params.tuning.autoTrackSelection,limits:this.params.desiredState.autoVideoTrackLimits.getState(),reserve:g,forwardBufferHealth:h,current:o,visible:this.params.output.elementVisible$.getValue(),history:this.videoTrackSwitchHistory,playbackRate:this.video.playbackRate,droppedVideoMaxQualityLimit:this.droppedFramesManager.droppedVideoMaxQualityLimit,abrLogger:this.params.dependencies.abrLogger}),A=i?y??n:n??y,T;this.params.tuning.useSeparateAudioVideoABR?T=b&&Im(A,d,this.audioStreamsMap.get(b)??[],{throughput:this.params.dependencies.throughputEstimator.rttAdjustedThroughput$.getValue(),tuning:this.params.tuning.autoTrackSelection,forwardBufferHealth:h,history:this.audioTrackSwitchHistory,playbackRate:this.video.playbackRate,abrLogger:this.params.dependencies.abrLogger}):T=b&&Is(A,d,this.audioStreamsMap.get(b)??[]);let S=this.videoTracksMap.get(A)?.representation,I=T&&this.audioTracksMap.get(T)?.representation;if(S&&I)return[S,I];if(S&&!I&&this.audioTracksMap.size===0)return[S,void 0]}prepare(e=0){this.player.initManifest(this.video,this.params.source.url,e)}playIfAllowed(){de(this.video,()=>{this.params.output.soundProhibitedEvent$.next()}).then(e=>{e||(this.liveOffset?.pause(),this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused",!0))},e=>this.params.output.error$.next({id:"ForcePlay",message:"play() failed even with workarounds",category:Cu.DOM,thrown:e}))}destroy(){this.subscription.unsubscribe(),this.droppedFramesManager.destroy(),this.destroy3DScene(),this.textTracksManager?.destroy(),this.player.destroy(),this.params.output.element$.next(void 0),ue(this.video),this.tracer.end()}};var ra=class extends Jt{subscribe(){super.subscribe();let{output:e,observableVideo:t,connect:i}=this.getProviderSubscriptionInfo();i(t.timeUpdate$,e.position$),i(t.durationChange$,e.duration$)}seek(e,t){this.params.output.willSeekEvent$.next(),this.player.seek(e,t)}};import{combine as Jb,interval as cw,map as dw}from"@vkontakte/videoplayer-shared";var aa=class extends Jt{constructor(e){super(e),this.liveOffset=new nt,this.textTracksManager=null}subscribe(){super.subscribe();let{output:e,observableVideo:t,connect:i}=this.getProviderSubscriptionInfo();this.params.output.position$.next(0),this.params.output.isLive$.next(!0),i(t.timeUpdate$,e.liveBufferTime$),i(this.player.liveDuration$,e.duration$),this.subscription.add(this.params.output.position$.subscribe(this.player.livePositionFromPlayer$)).add(Jb({interval:cw(1e3),playbackRate:t.playbackRateState$}).subscribe(({playbackRate:a})=>{if(this.videoState.getState()==="playing"){let s=e.position$.getValue()+(a-1);s<=0&&e.position$.next(s),this.liveOffset?.resetTo(-s*1e3)}})).add(Jb({liveBufferTime:e.liveBufferTime$,liveAvailabilityStartTime:this.player.liveAvailabilityStartTime$}).pipe(dw(({liveBufferTime:a,liveAvailabilityStartTime:s})=>a&&s?a+s:void 0)).subscribe(e.liveTime$)).add(this.player.currentLiveTextRepresentation$.subscribe(a=>{if(a){let s=Db(a);this.params.output.availableTextTracks$.next([s])}}))}seek(e){this.params.output.willSeekEvent$.next();let t=this.params.desiredState.playbackState.getState(),i=this.videoState.getState(),a=t==="paused"&&i==="paused",s=-e,n=Math.trunc(s/1e3<=Math.abs(this.params.output.duration$.getValue())?s:0);this.player.seekLive(n).then(()=>{this.params.output.position$.next(e/1e3),this.liveOffset?.resetTo(n,a)})}};var Zb=Ye(ss(),1);import{assertNever as sa,assertNonNullable as Xb,debounce as pw,ErrorCategory as Bs,filter as hw,isNonNullable as fw,isNullable as mw,map as Os,merge as bw,Observable as gw,observableFrom as Sw,Subscription as vw,videoSizeToQuality as yw}from"@vkontakte/videoplayer-shared";var je={};var Bi=(r,e)=>new gw(t=>{let i=(a,s)=>t.next(s);return r.on(e,i),()=>r.off(e,i)}),na=class{constructor(e){this.subscription=new vw;this.videoState=new L("initializing");this.textTracksManager=new we;this.trackLevels=new Map;this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.params.desiredState.playbackState.getState(),i=this.params.desiredState.playbackState.getTransition(),a=this.params.desiredState.seekState.getState();if(e!=="initializing")switch(i?.to!=="paused"&&a.state==="requested"&&this.seek(a.position),t){case"stopped":switch(e){case"stopped":break;case"ready":case"playing":case"paused":this.stop();break;default:sa(e)}break;case"ready":switch(e){case"stopped":this.prepare();break;case"ready":case"playing":case"paused":break;default:sa(e)}break;case"playing":switch(e){case"playing":break;case"stopped":this.prepare();break;case"ready":case"paused":this.playIfAllowed();break;default:sa(e)}break;case"paused":switch(e){case"paused":break;case"stopped":this.prepare();break;case"ready":this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused");break;case"playing":this.pause();break;default:sa(e)}break;default:sa(t)}};this.video=oe(e.container,e.tuning),this.params=e,this.params.output.element$.next(this.video),this.params.output.isLive$.next(!1),this.params.output.availableVideoTracks$.next([]),this.params.output.availableAudioTracks$.next([]),this.params.output.isAudioAvailable$.next(!0),this.params.output.hostname$.next(z(this.params.source.url)),this.loadHlsJs()}destroy(){this.subscription.unsubscribe(),this.trackLevels.clear(),this.textTracksManager.destroy(),this.hls?.detachMedia(),this.hls?.destroy(),this.params.output.element$.next(void 0),ue(this.video)}loadHlsJs(){let e=!1,t=a=>{e||this.params.output.error$.next({id:a==="timeout"?"HlsJsTimeout":"HlsJsLoadError",category:Bs.NETWORK,message:"Failed to load Hls.js",thrown:a}),e=!0},i=window.setTimeout(()=>t("timeout"),this.params.tuning.dynamicImportTimeout);(0,Zb.default)(import("hls.js").then(a=>{e||(je.Hls=a.default,je.Events=a.default.Events,this.init())},t),()=>{window.clearTimeout(i),e=!0})}init(){Xb(je.Hls,"hls.js not loaded"),this.hls=new je.Hls({fragLoadingMaxRetry:5,levelLoadingMaxRetry:2,manifestLoadingMaxRetry:2,fragLoadingMaxRetryTimeout:16e3,manifestLoadingMaxRetryTimeout:2e3,levelLoadingMaxRetryTimeout:2e3}),this.subscribe(),this.videoState.setState("stopped")}subscribe(){Xb(je.Events,"hls.js not loaded");let{desiredState:e,output:t}=this.params,i=u=>{t.error$.next({id:"HlsJsProvider",category:Bs.WTF,message:"HlsJsProvider internal logic error",thrown:u})},a=ce(this.video),s=(u,d)=>this.subscription.add(u.subscribe(d,i));s(a.timeUpdate$,t.position$),s(a.durationChange$,t.duration$),s(a.ended$,t.endedEvent$),s(a.looped$,t.loopedEvent$),s(a.error$,t.error$),s(a.isBuffering$,t.isBuffering$),s(a.currentBuffer$,t.currentBuffer$),s(a.loadStart$,t.firstBytesEvent$),s(a.loadedMetadata$,t.loadedMetadataEvent$),s(a.playing$,t.firstFrameEvent$),s(a.canplay$,t.canplay$),s(a.seeked$,t.seekedEvent$),s(a.inPiP$,t.inPiP$),s(a.inFullscreen$,t.inFullscreen$),this.subscription.add(Ke(this.video,e.isLooped,i)),this.subscription.add(le(this.video,e.volume,a.volumeState$,i)),this.subscription.add(a.volumeState$.subscribe(this.params.output.volume$)),this.subscription.add(ke(this.video,e.playbackRate,a.playbackRateState$,i)),s($e(this.video),t.elementVisible$),s(this.videoState.stateChangeEnded$.pipe(Os(u=>u.to)),this.params.output.playbackState$),this.subscription.add(Bi(this.hls,je.Events.ERROR).subscribe(u=>{u.fatal&&t.error$.next({id:["HlsJsFatal",u.type,u.details].join("_"),category:Bs.WTF,message:`HlsJs fatal ${u.type} ${u.details}, ${u.err?.message} ${u.reason}`,thrown:u.error})})),this.subscription.add(a.playing$.subscribe(()=>{this.videoState.setState("playing"),E(e.playbackState,"playing")},i)).add(a.pause$.subscribe(()=>{this.videoState.setState("paused"),E(e.playbackState,"paused")},i)).add(a.canplay$.subscribe(()=>{this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.videoState.getState()==="playing"&&this.playIfAllowed()},i)),s(Bi(this.hls,je.Events.MANIFEST_PARSED).pipe(Os(({levels:u})=>u.reduce((d,c)=>{let p=c.name||c.height.toString(10),{width:h,height:m}=c,b=yt(c.attrs.QUALITY??"")??yw({width:h,height:m});if(!b)return d;let g=c.attrs["FRAME-RATE"]?parseFloat(c.attrs["FRAME-RATE"]):void 0,y={id:p.toString(),quality:b,bitrate:c.bitrate/1e3,size:{width:h,height:m},fps:g};return this.trackLevels.set(p,{track:y,level:c}),d.push(y),d},[]))),t.availableVideoTracks$),s(Bi(this.hls,je.Events.MANIFEST_PARSED),u=>{if(u.subtitleTracks.length>0){let d=[];for(let c of u.subtitleTracks){let p=c.name,h=c.attrs.URI||"",m=c.lang;d.push({id:p,url:h,language:m,type:"internal"})}e.internalTextTracks.startTransitionTo(d)}}),s(Bi(this.hls,je.Events.LEVEL_LOADING).pipe(Os(({url:u})=>z(u))),t.hostname$),s(Bi(this.hls,je.Events.FRAG_CHANGED),u=>{let{video:d,audio:c}=u.frag.elementaryStreams;t.currentVideoSegmentLength$.next(((d?.endPTS??0)-(d?.startPTS??0))*1e3),t.currentAudioSegmentLength$.next(((c?.endPTS??0)-(c?.startPTS??0))*1e3)}),this.subscription.add(gt(e.autoVideoTrackSwitching,()=>this.hls.autoLevelEnabled,u=>{this.hls.nextLevel=u?-1:this.hls.currentLevel,this.hls.loadLevel=u?-1:this.hls.loadLevel},{onError:i}));let n=u=>Array.from(this.trackLevels.values()).find(({level:d})=>d===u)?.track,o=Bi(this.hls,je.Events.LEVEL_SWITCHED).pipe(Os(({level:u})=>n(this.hls.levels[u])));o.pipe(hw(fw)).subscribe(t.currentVideoTrack$,i),this.subscription.add(gt(e.videoTrack,()=>n(this.hls.levels[this.hls.currentLevel]),u=>{if(mw(u))return;let d=this.trackLevels.get(u.id)?.level;if(!d)return;let c=this.hls.levels.indexOf(d),p=this.hls.currentLevel,h=this.hls.levels[p];!h||d.bitrate>h.bitrate?this.hls.nextLevel=c:(this.hls.loadLevel=c,this.hls.loadLevel=c)},{changed$:o,onError:i})),s(a.progress$,()=>{this.params.dependencies.throughputEstimator.addRawThroughput(this.hls.bandwidthEstimate/1e3)}),this.textTracksManager.connect(this.video,e,t);let l=bw(e.playbackState.stateChangeStarted$,e.videoTrack.stateChangeStarted$,e.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,Sw(["init"])).pipe(pw(0));this.subscription.add(l.subscribe(this.syncPlayback,i))}prepare(){this.videoState.startTransitionTo("ready"),this.hls.attachMedia(this.video),this.hls.loadSource(this.params.source.url)}async playIfAllowed(){this.videoState.startTransitionTo("playing"),await de(this.video,()=>{this.params.output.soundProhibitedEvent$.next()}).catch(t=>this.params.output.error$.next({id:"ForcePlay",message:"play() failed even with workarounds",category:Bs.DOM,thrown:t}))||(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused",!0))}pause(){this.videoState.startTransitionTo("paused"),this.video.paused?this.videoState.setState("paused"):this.video.pause()}seek(e){this.params.output.willSeekEvent$.next(),this.video.currentTime=e/1e3}stop(){this.params.output.position$.next(0),this.params.output.duration$.next(1/0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.hls.stopLoad(),this.hls.detachMedia(),this.video.removeAttribute("src"),this.video.load(),this.videoState.setState("stopped"),E(this.params.desiredState.playbackState,"stopped",!0)}};var eg="X-Playback-Duration",Bu=async r=>{let e=await ut(r),t=await e.text(),i=/#EXT-X-VK-PLAYBACK-DURATION:(\d+)/m.exec(t)?.[1];return i?parseInt(i,10):e.headers.has(eg)?parseInt(e.headers.get(eg),10):void 0};import{assertNever as Aw,combine as kw,debounce as ww,ErrorCategory as _s,filter as Rw,filterChanged as $w,isNonNullable as ig,isNullable as Ns,map as rg,merge as Lw,observableFrom as Mw,Subscription as Cw,ValueSubject as _u,VideoQuality as Dw}from"@vkontakte/videoplayer-shared";var Vu=Ye(eo(),1);import{videoSizeToQuality as Tw,getExponentialDelay as Iw}from"@vkontakte/videoplayer-shared";var Ew=r=>{let e=null;if(r.QUALITY&&(e=yt(r.QUALITY)),!e&&r.RESOLUTION){let[t,i]=r.RESOLUTION.split("x").map(a=>parseInt(a,10));e=Tw({width:t,height:i})}return e??null},xw=(r,e)=>{let t=r.split(`
113
- `),i=[],a=[];for(let s=0;s<t.length;s++){let n=t[s],o=n.match(/^#EXT-X-STREAM-INF:(.+)/),l=n.match(/^#EXT-X-MEDIA:TYPE=SUBTITLES,(.+)/);if(!(!o&&!l)){if(o){let u=(0,Vu.default)(o[1].split(",").map(g=>g.split("="))),d=u.QUALITY??`stream-${u.BANDWIDTH}`,c=Ew(u),p;u.BANDWIDTH&&(p=parseInt(u.BANDWIDTH,10)/1e3||void 0),!p&&u["AVERAGE-BANDWIDTH"]&&(p=parseInt(u["AVERAGE-BANDWIDTH"],10)/1e3||void 0);let h=u["FRAME-RATE"]?parseFloat(u["FRAME-RATE"]):void 0,m;if(u.RESOLUTION){let[g,y]=u.RESOLUTION.split("x").map(A=>parseInt(A,10));g&&y&&(m={width:g,height:y})}let b=new URL(t[++s],e).toString();c&&i.push({id:d,quality:c,url:b,bandwidth:p,size:m,fps:h})}if(l){let u=(0,Vu.default)(l[1].split(",").map(h=>h.split("=")).map(([h,m])=>[h,m.replace(/^"|"$/g,"")])),d=u.URI?.replace(/playlist$/,"subtitles.vtt"),c=u.LANGUAGE,p=u.NAME;d&&c&&a.push({type:"internal",id:c,label:p,language:c,url:d,isAuto:!1})}}}if(!i.length)throw new Error("Empty manifest");return{qualityManifests:i,textTracks:a}},Pw=r=>new Promise(e=>{setTimeout(()=>{e()},r)}),Ou=0,tg=async(r,e=r,t)=>{let a=await(await ut(r)).text();Ou+=1;try{let{qualityManifests:s,textTracks:n}=xw(a,e);return{qualityManifests:s,textTracks:n}}catch{if(Ou<=t.manifestRetryMaxCount)return await Pw(Iw(Ou-1,{start:t.manifestRetryInterval,max:t.manifestRetryMaxInterval})),tg(r,e,t)}return{qualityManifests:[],textTracks:[]}},Vs=tg;var oa=class{constructor(e){this.subscription=new Cw;this.videoState=new L("stopped");this.textTracksManager=new we;this.manifests$=new _u([]);this.liveOffset=new nt;this.manifestStartTime$=new _u(void 0);this.syncPlayback=()=>{if(!this.manifests$.getValue().length)return;let t=this.videoState.getState(),i=this.params.desiredState.playbackState.getState(),a=this.params.desiredState.playbackState.getTransition(),s=this.params.desiredState.videoTrack.getTransition(),n=this.params.desiredState.autoVideoTrackSwitching.getTransition(),o=this.params.desiredState.autoVideoTrackLimits.getTransition();if(i==="stopped"){t!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.video.removeAttribute("src"),this.video.load(),this.params.output.position$.next(0),this.params.output.duration$.next(1/0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.videoState.setState("stopped"),E(this.params.desiredState.playbackState,"stopped",!0));return}if(this.videoState.getTransition())return;let u=this.params.desiredState.seekState.getState();if(t==="stopped"){this.videoState.startTransitionTo("ready"),this.prepare();return}if(s||n||o){let d=this.videoState.getState();this.videoState.setState("changing_manifest"),this.videoState.startTransitionTo(d),this.prepare(),o&&this.params.output.autoVideoTrackLimits$.next(o.to),u.state==="none"&&this.params.desiredState.seekState.setState({state:"requested",position:-this.liveOffset.getTotalOffset(),forcePrecise:!0});return}if(a?.to!=="paused"&&u.state==="requested"){this.videoState.startTransitionTo("ready"),this.seek(u.position-this.liveOffset.getTotalPausedTime()),this.prepare();return}switch(t){case"ready":i==="ready"?E(this.params.desiredState.playbackState,"ready"):i==="paused"?(this.videoState.setState("paused"),this.liveOffset.pause(),E(this.params.desiredState.playbackState,"paused")):i==="playing"&&(this.videoState.startTransitionTo("playing"),this.playIfAllowed());return;case"playing":i==="paused"?(this.videoState.startTransitionTo("paused"),this.liveOffset.pause(),this.video.paused?this.videoState.setState("paused"):this.video.pause()):a?.to==="playing"&&E(this.params.desiredState.playbackState,"playing");return;case"paused":if(i==="playing")if(this.videoState.startTransitionTo("playing"),this.liveOffset.getTotalPausedTime()<this.params.config.maxPausedTime&&this.liveOffset.getTotalOffset()<this.maxSeekBackTime$.getValue())this.liveOffset.resume(),this.playIfAllowed(),this.params.output.position$.next(-this.liveOffset.getTotalOffset()/1e3);else{let d=this.liveOffset.getTotalOffset();d>=this.maxSeekBackTime$.getValue()&&(d=0,this.liveOffset.resetTo(d)),this.liveOffset.resume(),this.params.output.position$.next(-d/1e3),this.prepare()}else a?.to==="paused"&&(E(this.params.desiredState.playbackState,"paused"),this.liveOffset.pause());return;case"changing_manifest":break;default:return Aw(t)}};this.params=e,this.video=oe(e.container,e.tuning),this.params.output.element$.next(this.video),this.masterManifest={id:"master",quality:Dw.INVARIANT,url:this.params.source.url},Vs(X(this.params.source.url),this.params.source.url,{manifestRetryInterval:this.params.tuning.manifestRetryInterval,manifestRetryMaxInterval:this.params.tuning.manifestRetryMaxInterval,manifestRetryMaxCount:this.params.tuning.manifestRetryMaxCount}).then(({qualityManifests:t})=>{t.length===0&&this.params.output.error$.next({id:"HlsLiveProviderInternal:empty_manifest",category:_s.WTF,message:"HlsLiveProvider: there are no qualities in manifest"}),this.manifests$.next([this.masterManifest,...t])},t=>this.params.output.error$.next({id:"ExtractHlsQualities",category:_s.NETWORK,message:"Error fetching manifest and extracting qualities",thrown:t})),this.params.output.isLive$.next(!0),this.params.output.canChangePlaybackSpeed$.next(!1),this.params.output.availableVideoTracks$.next([]),this.params.output.availableAudioTracks$.next([]),this.params.output.isAudioAvailable$.next(!0),this.params.output.hostname$.next(z(this.params.source.url)),this.params.output.availableTextTracks$.next([]),this.params.desiredState.internalTextTracks.setState([]),this.maxSeekBackTime$=new _u(e.source.maxSeekBackTime??1/0),this.subscribe()}selectManifest(){let{autoVideoTrackSwitching:e,videoTrack:t}=this.params.desiredState,i=e.getState(),a=t.getTransition(),s=a?.to?.id??t.getState()?.id??"master",n=this.manifests$.getValue();if(!n.length)return;let o=i?"master":s;return i&&!a&&t.startTransitionTo(this.masterManifest),n.find(l=>l.id===o)}subscribe(){let{output:e,desiredState:t}=this.params,i=o=>{e.error$.next({id:"HlsLiveProvider",category:_s.WTF,message:"HlsLiveProvider internal logic error",thrown:o})},a=ce(this.video),s=(o,l)=>this.subscription.add(o.subscribe(l,i));s(a.ended$,e.endedEvent$),s(a.error$,e.error$),s(a.isBuffering$,e.isBuffering$),s(a.currentBuffer$,e.currentBuffer$),s(a.loadedMetadata$,e.firstBytesEvent$),s(a.loadedMetadata$,e.loadedMetadataEvent$),s(a.playing$,e.firstFrameEvent$),s(a.canplay$,e.canplay$),s(a.inPiP$,e.inPiP$),s(a.inFullscreen$,e.inFullscreen$),this.subscription.add(t.isLooped.stateChangeStarted$.subscribe(()=>t.isLooped.setState(!1),i)),this.subscription.add(le(this.video,t.volume,a.volumeState$,i)),this.subscription.add(a.volumeState$.subscribe(this.params.output.volume$,i)),this.subscription.add(ke(this.video,t.playbackRate,a.playbackRateState$,i)),s($e(this.video),e.elementVisible$),this.textTracksManager.connect(this.video,t,e),this.subscription.add(a.playing$.subscribe(()=>{this.videoState.setState("playing"),E(t.playbackState,"playing")},i)).add(a.pause$.subscribe(()=>{this.videoState.setState("paused"),E(t.playbackState,"paused")},i)).add(a.canplay$.subscribe(()=>{this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.videoState.getState()==="playing"&&this.playIfAllowed()},i)),this.subscription.add(this.maxSeekBackTime$.pipe($w(),rg(o=>-o/1e3)).subscribe(this.params.output.duration$,i)),this.subscription.add(a.loadedMetadata$.subscribe(()=>{let o=this.params.desiredState.seekState.getState(),l=this.videoState.getTransition(),u=this.params.desiredState.videoTrack.getTransition(),d=this.params.desiredState.autoVideoTrackSwitching.getTransition();if(u&&ig(u.to)){let c=u.to.id;this.params.desiredState.videoTrack.setState(u.to);let p=this.manifests$.getValue().find(h=>h.id===c);p&&(this.params.output.currentVideoTrack$.next(p),this.params.output.hostname$.next(z(p.url)))}d&&this.params.desiredState.autoVideoTrackSwitching.setState(d.to),l&&l.from==="changing_manifest"&&this.videoState.setState(l.to),o&&o.state==="requested"&&this.seek(o.position)},i)),this.subscription.add(a.loadedData$.subscribe(()=>{let o=this.video?.getStartDate?.()?.getTime();this.manifestStartTime$.next(o||void 0)},i)),this.subscription.add(kw({startTime:this.manifestStartTime$.pipe(Rw(ig)),currentTime:a.timeUpdate$}).subscribe(({startTime:o,currentTime:l})=>this.params.output.liveTime$.next(o+l*1e3),i)),this.subscription.add(this.manifests$.pipe(rg(o=>o.map(({id:l,quality:u,size:d,bandwidth:c,fps:p})=>({id:l,quality:u,size:d,fps:p,bitrate:c})))).subscribe(this.params.output.availableVideoTracks$,i));let n=Lw(t.playbackState.stateChangeStarted$,t.seekState.stateChangeEnded$,t.videoTrack.stateChangeStarted$,t.autoVideoTrackSwitching.stateChangeStarted$,t.autoVideoTrackLimits.stateChangeStarted$,this.videoState.stateChangeEnded$,this.manifests$,Mw(["init"])).pipe(ww(0));this.subscription.add(n.subscribe(this.syncPlayback,i))}destroy(){this.subscription.unsubscribe(),this.textTracksManager.destroy(),this.params.output.element$.next(void 0),ue(this.video)}prepare(){let e=this.selectManifest();if(Ns(e))return;let t=this.params.desiredState.autoVideoTrackLimits.getTransition(),i=this.params.desiredState.autoVideoTrackLimits.getState(),a=new URL(e.url);if((t||i)&&e.id===this.masterManifest.id){let{max:o,min:l}=t?.to??i??{};for(let[u,d]of[[o,"mq"],[l,"lq"]]){let c=String(parseFloat(u||""));d&&u&&a.searchParams.set(d,c)}}let s=this.params.format==="HLS_LIVE_CMAF"?2:0,n=X(a.toString(),this.liveOffset.getTotalOffset(),s);this.video.setAttribute("src",n),this.video.load(),Bu(n).then(o=>{if(!Ns(o))this.maxSeekBackTime$.next(o);else{let l=this.params.source.maxSeekBackTime??this.maxSeekBackTime$.getValue();if(Ns(l)||!isFinite(l))try{ut(n).then(u=>u.text()).then(u=>{let d=/#EXT-X-STREAM-INF[^\n]+\n(.+)/m.exec(u)?.[1];if(d){let c=new URL(d,n).toString();Bu(c).then(p=>{Ns(p)||this.maxSeekBackTime$.next(p)})}})}catch{}}})}playIfAllowed(){de(this.video,()=>{this.params.output.soundProhibitedEvent$.next()}).then(e=>{e||(this.videoState.setState("paused"),this.liveOffset.pause(),E(this.params.desiredState.playbackState,"paused",!0))},e=>this.params.output.error$.next({id:"ForcePlay",message:"play() failed even with workarounds",category:_s.DOM,thrown:e}))}seek(e){this.params.output.willSeekEvent$.next();let t=-e,i=t<this.maxSeekBackTime$.getValue()?t:0;this.liveOffset.resetTo(i),this.params.output.position$.next(-i/1e3),this.params.output.seekedEvent$.next()}};import{assertNever as Bw,debounce as Ow,ErrorCategory as Nu,fromEvent as Fu,isNonNullable as Vw,isNullable as _w,map as ag,merge as sg,observableFrom as ng,Subscription as Nw,ValueSubject as Fw,VideoQuality as qw,clientChecker as Uw}from"@vkontakte/videoplayer-shared";var ua=class{constructor(e){this.subscription=new Nw;this.videoState=new L("stopped");this.textTracksManager=new we;this.manifests$=new Fw([]);this.syncPlayback=()=>{if(!this.manifests$.getValue().length)return;let t=this.videoState.getState(),i=this.params.desiredState.playbackState.getState(),a=this.params.desiredState.playbackState.getTransition(),s=this.params.desiredState.videoTrack.getTransition(),n=this.params.desiredState.autoVideoTrackSwitching.getTransition(),o=this.params.desiredState.autoVideoTrackLimits.getTransition();if(i==="stopped"){t!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.video.removeAttribute("src"),this.video.load(),this.params.output.position$.next(0),this.params.output.duration$.next(1/0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.videoState.setState("stopped"),E(this.params.desiredState.playbackState,"stopped",!0));return}if(this.videoState.getTransition())return;let u=this.params.desiredState.seekState.getState();if(t==="stopped"){this.videoState.startTransitionTo("ready"),this.prepare();return}if(s||n||o){let d=this.videoState.getState();this.videoState.setState("changing_manifest"),this.videoState.startTransitionTo(d);let{currentTime:c}=this.video;this.prepare(),o&&this.params.output.autoVideoTrackLimits$.next(o.to),u.state==="none"&&this.params.desiredState.seekState.setState({state:"requested",position:c*1e3,forcePrecise:!0});return}switch(a?.to!=="paused"&&u.state==="requested"&&this.seek(u.position),t){case"ready":i==="ready"?E(this.params.desiredState.playbackState,"ready"):i==="paused"?(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused")):i==="playing"&&(this.videoState.startTransitionTo("playing"),this.playIfAllowed());return;case"playing":i==="paused"?(this.videoState.startTransitionTo("paused"),this.video.paused?this.videoState.setState("paused"):this.video.pause()):a?.to==="playing"&&E(this.params.desiredState.playbackState,"playing");return;case"paused":i==="playing"?(this.videoState.startTransitionTo("playing"),this.playIfAllowed()):a?.to==="paused"&&E(this.params.desiredState.playbackState,"paused");return;case"changing_manifest":break;default:return Bw(t)}};this.params=e,this.video=oe(e.container,e.tuning),this.params.output.element$.next(this.video),this.masterManifest={id:"master",quality:qw.INVARIANT,url:this.params.source.url},this.params.output.isLive$.next(!1),this.params.output.availableVideoTracks$.next([]),this.params.output.availableAudioTracks$.next([]),this.params.output.isAudioAvailable$.next(!0),this.params.output.hostname$.next(z(this.params.source.url)),this.params.output.autoVideoTrackLimitingAvailable$.next(!0),Vs(X(this.params.source.url),this.params.source.url,{manifestRetryInterval:this.params.tuning.manifestRetryInterval,manifestRetryMaxInterval:this.params.tuning.manifestRetryMaxInterval,manifestRetryMaxCount:this.params.tuning.manifestRetryMaxCount}).then(({qualityManifests:t,textTracks:i})=>{this.manifests$.next([this.masterManifest,...t]),this.params.tuning.useNativeHLSTextTracks||this.params.desiredState.internalTextTracks.startTransitionTo(i)},t=>this.params.output.error$.next({id:"ExtractHlsQualities",category:Nu.NETWORK,message:"Error fetching manifest and extracting qualities",thrown:t})),this.subscribe()}selectManifest(){let{autoVideoTrackSwitching:e,videoTrack:t}=this.params.desiredState,i=e.getState(),a=t.getTransition(),s=a?.to?.id??t.getState()?.id??"master",n=this.manifests$.getValue();if(!n.length)return;let o=i?"master":s;return i&&!a&&t.startTransitionTo(this.masterManifest),n.find(l=>l.id===o)}subscribe(){let{output:e,desiredState:t}=this.params,i=o=>{e.error$.next({id:"HlsProvider",category:Nu.WTF,message:"HlsProvider internal logic error",thrown:o})},a=ce(this.video),s=(o,l)=>this.subscription.add(o.subscribe(l));if(s(a.timeUpdate$,e.position$),s(a.durationChange$,e.duration$),s(a.ended$,e.endedEvent$),s(a.looped$,e.loopedEvent$),s(a.error$,e.error$),s(a.isBuffering$,e.isBuffering$),s(a.currentBuffer$,e.currentBuffer$),s(a.loadedMetadata$,e.firstBytesEvent$),s(a.loadedMetadata$,e.loadedMetadataEvent$),s(a.playing$,e.firstFrameEvent$),s(a.canplay$,e.canplay$),s(a.seeked$,e.seekedEvent$),s(a.inPiP$,e.inPiP$),s(a.inFullscreen$,e.inFullscreen$),s(this.videoState.stateChangeEnded$.pipe(ag(o=>o.to)),this.params.output.playbackState$),this.subscription.add(Ke(this.video,t.isLooped,i)),this.subscription.add(le(this.video,t.volume,a.volumeState$,i)),this.subscription.add(a.volumeState$.subscribe(this.params.output.volume$,i)),this.subscription.add(ke(this.video,t.playbackRate,a.playbackRateState$,i)),this.textTracksManager.connect(this.video,t,e),this.subscription.add(a.playing$.subscribe(()=>{this.videoState.setState("playing"),E(t.playbackState,"playing")},i)).add(a.pause$.subscribe(()=>{this.videoState.setState("paused"),E(t.playbackState,"paused")},i)).add(a.canplay$.subscribe(()=>{this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.videoState.getState()==="playing"&&this.playIfAllowed()},i).add(a.loadedMetadata$.subscribe(()=>{let o=this.params.desiredState.seekState.getState(),l=this.videoState.getTransition(),u=this.params.desiredState.videoTrack.getTransition(),d=this.params.desiredState.autoVideoTrackSwitching.getTransition();if(u&&Vw(u.to)){let c=u.to.id;this.params.desiredState.videoTrack.setState(u.to);let p=this.manifests$.getValue().find(h=>h.id===c);if(p){this.params.output.currentVideoTrack$.next(p),this.params.output.hostname$.next(z(p.url));let h=this.params.desiredState.playbackRate.getState(),m=this.params.output.element$.getValue()?.playbackRate;if(h!==m){let b=this.params.output.element$.getValue();b&&(this.params.desiredState.playbackRate.setState(h),b.playbackRate=h)}}}d&&this.params.desiredState.autoVideoTrackSwitching.setState(d.to),l&&l.from==="changing_manifest"&&this.videoState.setState(l.to),o.state==="requested"&&this.seek(o.position)},i))),this.subscription.add(this.manifests$.pipe(ag(o=>o.map(({id:l,quality:u,size:d,bandwidth:c,fps:p})=>({id:l,quality:u,size:d,fps:p,bitrate:c})))).subscribe(this.params.output.availableVideoTracks$,i)),!Uw.isIOS||!this.params.tuning.useNativeHLSTextTracks){let{textTracks:o}=this.video;this.subscription.add(sg(Fu(o,"addtrack"),Fu(o,"removetrack"),Fu(o,"change"),ng(["init"])).subscribe(()=>{for(let l=0;l<o.length;l++)o[l].mode="hidden"},i))}let n=sg(t.playbackState.stateChangeStarted$,t.seekState.stateChangeEnded$,t.videoTrack.stateChangeStarted$,t.autoVideoTrackSwitching.stateChangeStarted$,t.autoVideoTrackLimits.stateChangeStarted$,this.videoState.stateChangeEnded$,this.manifests$,ng(["init"])).pipe(Ow(0));this.subscription.add(n.subscribe(this.syncPlayback,i))}destroy(){this.subscription.unsubscribe(),this.textTracksManager.destroy(),this.params.output.element$.next(void 0),ue(this.video)}prepare(){let e=this.selectManifest();if(_w(e))return;let t=this.params.desiredState.autoVideoTrackLimits.getTransition(),i=this.params.desiredState.autoVideoTrackLimits.getState(),a=new URL(e.url);if((t||i)&&e.id===this.masterManifest.id){let{max:s,min:n}=t?.to??i??{};for(let[o,l]of[[s,"mq"],[n,"lq"]]){let u=String(parseFloat(o||""));l&&o&&a.searchParams.set(l,u)}}this.video.setAttribute("src",a.toString()),this.video.load()}playIfAllowed(){de(this.video,()=>{this.params.output.soundProhibitedEvent$.next()}).then(e=>{e||(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused",!0))},e=>this.params.output.error$.next({id:"ForcePlay",message:"play() failed even with workarounds",category:Nu.DOM,thrown:e}))}seek(e){this.params.output.willSeekEvent$.next(),this.video.currentTime=e/1e3}};import{assertNever as Hw,assertNonNullable as og,debounce as jw,ErrorCategory as ug,isHigher as Gw,isHigherOrEqual as Ww,isInvariantQuality as lg,isLowerOrEqual as Qw,isNonNullable as Yw,merge as zw,observableFrom as Kw,Subscription as Jw,map as Xw}from"@vkontakte/videoplayer-shared";var la=class{constructor(e){this.subscription=new Jw;this.videoState=new L("stopped");this.trackUrls={};this.textTracksManager=new we;this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.params.desiredState.playbackState.getState(),i=this.params.desiredState.playbackState.getTransition();if(t==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.video.removeAttribute("src"),this.video.load(),this.params.output.position$.next(0),this.params.output.duration$.next(1/0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.videoState.setState("stopped"),E(this.params.desiredState.playbackState,"stopped",!0));return}if(this.videoState.getTransition())return;let s=this.params.desiredState.autoVideoTrackLimits.getTransition(),n=this.params.desiredState.videoTrack.getTransition(),o=this.params.desiredState.seekState.getState();if(s&&e!=="ready"&&!n){this.handleQualityLimitTransition(s.to.max);return}if(e==="stopped"){this.videoState.startTransitionTo("ready"),this.prepare();return}if(n){let{currentTime:l}=this.video;this.prepare(),o.state==="none"&&this.params.desiredState.seekState.setState({state:"requested",position:l*1e3,forcePrecise:!0}),n.to&&this.params.desiredState.autoVideoTrackLimits.getState()?.max!==this.trackUrls[n.to.id]?.track?.quality&&this.params.output.autoVideoTrackLimits$.next({max:void 0});return}switch(i?.to!=="paused"&&o.state==="requested"&&this.seek(o.position),e){case"ready":t==="ready"?E(this.params.desiredState.playbackState,"ready"):t==="paused"?(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused")):t==="playing"&&(this.videoState.startTransitionTo("playing"),this.playIfAllowed());return;case"playing":t==="paused"?(this.videoState.startTransitionTo("paused"),this.video.paused?this.videoState.setState("paused"):this.video.pause()):i?.to==="playing"&&E(this.params.desiredState.playbackState,"playing");return;case"paused":t==="playing"?(this.videoState.startTransitionTo("playing"),this.playIfAllowed()):i?.to==="paused"&&E(this.params.desiredState.playbackState,"paused");return;default:return Hw(e)}};this.params=e,this.video=oe(e.container,e.tuning),this.params.output.element$.next(this.video),Object.entries(this.params.source).reverse().forEach(([t,i],a)=>{let s=a.toString(10);this.trackUrls[s]={track:{quality:t,id:s},url:i}}),this.params.output.isLive$.next(!1),this.params.output.availableVideoTracks$.next(Object.values(this.trackUrls).map(({track:t})=>t)),this.params.output.availableAudioTracks$.next([]),this.params.output.isAudioAvailable$.next(!0),this.params.desiredState.autoVideoTrackSwitching.setState(!1),this.params.output.autoVideoTrackLimitingAvailable$.next(!0),this.subscribe()}subscribe(){let{output:e,desiredState:t}=this.params,i=o=>{e.error$.next({id:"MpegProvider",category:ug.WTF,message:"MpegProvider internal logic error",thrown:o})},a=ce(this.video),s=(o,l)=>this.subscription.add(o.subscribe(l,i));s(a.timeUpdate$,e.position$),s(a.durationChange$,e.duration$),s(a.ended$,e.endedEvent$),s(a.looped$,e.loopedEvent$),s(a.error$,e.error$),s(a.isBuffering$,e.isBuffering$),s(a.currentBuffer$,e.currentBuffer$),s(a.loadedMetadata$,e.firstBytesEvent$),s(a.loadedMetadata$,e.loadedMetadataEvent$),s(a.playing$,e.firstFrameEvent$),s(a.canplay$,e.canplay$),s(a.seeked$,e.seekedEvent$),s(a.inPiP$,e.inPiP$),s(a.inFullscreen$,e.inFullscreen$),s(this.videoState.stateChangeEnded$.pipe(Xw(o=>o.to)),this.params.output.playbackState$),this.subscription.add(Ke(this.video,t.isLooped,i)),this.subscription.add(le(this.video,t.volume,a.volumeState$,i)),this.subscription.add(a.volumeState$.subscribe(this.params.output.volume$,i)),this.subscription.add(ke(this.video,t.playbackRate,a.playbackRateState$,i)),s($e(this.video),e.elementVisible$),this.subscription.add(a.playing$.subscribe(()=>{this.videoState.setState("playing"),E(t.playbackState,"playing")},i)).add(a.pause$.subscribe(()=>{this.videoState.setState("paused"),E(t.playbackState,"paused")},i)).add(a.canplay$.subscribe(()=>{this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready");let o=this.params.desiredState.videoTrack.getTransition();if(o&&Yw(o.to)){this.params.desiredState.videoTrack.setState(o.to),this.params.output.currentVideoTrack$.next(this.trackUrls[o.to.id].track);let l=this.params.desiredState.playbackRate.getState(),u=this.params.output.element$.getValue()?.playbackRate;if(l!==u){let d=this.params.output.element$.getValue();d&&(this.params.desiredState.playbackRate.setState(l),d.playbackRate=l)}}this.videoState.getState()==="playing"&&this.playIfAllowed()},i)),this.textTracksManager.connect(this.video,t,e);let n=zw(t.playbackState.stateChangeStarted$,t.videoTrack.stateChangeStarted$,t.seekState.stateChangeEnded$,t.autoVideoTrackLimits.stateChangeStarted$,this.videoState.stateChangeEnded$,Kw(["init"])).pipe(jw(0));this.subscription.add(n.subscribe(this.syncPlayback,i))}destroy(){this.subscription.unsubscribe(),this.textTracksManager.destroy(),this.trackUrls={},this.params.output.element$.next(void 0),ue(this.video)}prepare(){let e=this.params.desiredState.videoTrack.getState()?.id;og(e,"MpegProvider: track is not selected");let{url:t}=this.trackUrls[e];og(t,`MpegProvider: No url for ${e}`),this.params.tuning.requestQuick&&(t=Kr(t)),this.video.setAttribute("src",t),this.video.load(),this.params.output.hostname$.next(z(t))}playIfAllowed(){de(this.video,()=>{this.params.output.soundProhibitedEvent$.next()}).then(e=>{e||(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused",!0))},e=>this.params.output.error$.next({id:"ForcePlay",message:"play() failed even with workarounds",category:ug.DOM,thrown:e}))}seek(e){this.params.output.willSeekEvent$.next(),this.video.currentTime=e/1e3}handleQualityLimitTransition(e){let t,i=e;if(e&&this.params.output.currentVideoTrack$.getValue()?.quality!==e){let a=Object.values(this.trackUrls).find(o=>!lg(o.track.quality)&&Qw(o.track.quality,e))?.track,s=this.params.desiredState.videoTrack.getState()?.id,n=this.trackUrls[s??"0"]?.track;if(a&&n&&Ww(n.quality,a.quality)&&(t=a),!t){let o=Object.values(this.trackUrls).filter(u=>!lg(u.track.quality)&&Gw(u.track.quality,e)),l=o.length;l&&(t=o[l-1].track)}t&&(i=t.quality)}else if(!e){let a=Object.values(this.trackUrls).map(s=>s.track);t=Tt(a,{container:{width:this.video.offsetWidth,height:this.video.offsetHeight},throughput:this.params.dependencies.throughputEstimator.throughput$.getValue(),tuning:this.params.tuning.autoTrackSelection,forwardBufferHealth:0,abrLogger:this.params.dependencies.abrLogger})}t&&(this.params.output.currentVideoTrack$.next(t),this.params.desiredState.videoTrack.startTransitionTo(t)),this.params.output.autoVideoTrackLimits$.next({max:i})}};import{assertNever as dg,debounce as iR,merge as pg,observableFrom as rR,Subscription as aR,map as hg,ValueSubject as sR,ErrorCategory as Uu,VideoQuality as nR}from"@vkontakte/videoplayer-shared";import{ErrorCategory as Zw}from"@vkontakte/videoplayer-shared";var cg=["stun:videostun.mycdn.me:80"],eR=1e3,tR=3,qu=()=>null,Fs=class{constructor(e,t){this.ws=null;this.peerConnection=null;this.serverUrl="";this.streamKey="";this.stream=null;this.signalingType="JOIN";this.retryCount=0;this.externalStartCallback=qu;this.externalStopCallback=qu;this.externalErrorCallback=qu;this.options=this.normalizeOptions(t);let i=e.split("/");this.serverUrl=i.slice(0,i.length-1).join("/"),this.streamKey=i[i.length-1]}onStart(e){try{this.externalStartCallback=e}catch(t){this.handleSystemError(t)}}onStop(e){try{this.externalStopCallback=e}catch(t){this.handleSystemError(t)}}onError(e){try{this.externalErrorCallback=e}catch(t){this.handleSystemError(t)}}connect(){this.connectWS()}disconnect(){try{this.externalStopCallback(),this.closeConnections()}catch(e){this.handleSystemError(e)}}connectWS(){this.ws||(this.ws=new WebSocket(this.serverUrl),this.ws.onopen=this.onSocketOpen.bind(this),this.ws.onmessage=this.onSocketMessage.bind(this),this.ws.onclose=this.onSocketClose.bind(this),this.ws.onerror=this.onSocketError.bind(this))}onSocketOpen(){this.handleLogin()}onSocketClose(e){try{if(!this.ws)return;this.ws=null,e.code>1e3?(this.retryCount++,this.retryCount>this.options.maxRetryNumber?this.handleNetworkError():this.scheduleRetry()):this.externalStopCallback()}catch(t){this.handleRTCError(t)}}onSocketError(e){try{this.externalErrorCallback(new Error(e.toString()))}catch(t){this.handleRTCError(t)}}onSocketMessage(e){try{let t=this.parseMessage(e.data);switch(t.type){case"JOIN":case"CALL_JOIN":this.handleJoinMessage(t);break;case"UPDATE":this.handleUpdateMessage(t);break;case"STATUS":this.handleStatusMessage(t);break}}catch(t){this.handleRTCError(t)}}handleJoinMessage(e){switch(e.inviteType){case"ANSWER":this.handleAnswer(e.sdp);break;case"CANDIDATE":this.handleCandidate(e.candidate);break}}handleStatusMessage(e){switch(e.status){case"UNPUBLISHED":this.handleUnpublished();break}}async handleUpdateMessage(e){try{let t=await this.createOffer();this.peerConnection&&await this.peerConnection.setLocalDescription(t),this.handleAnswer(e.sdp)}catch(t){this.handleRTCError(t)}}async handleLogin(){try{let e={iceServers:[{urls:cg}]};this.peerConnection=new RTCPeerConnection(e),this.peerConnection.ontrack=this.onPeerConnectionStream.bind(this),this.peerConnection.onicecandidate=this.onPeerConnectionIceCandidate.bind(this),this.peerConnection.oniceconnectionstatechange=this.onPeerConnectionIceConnectionStateChange.bind(this);let t=await this.createOffer();await this.peerConnection.setLocalDescription(t),this.send({type:this.signalingType,inviteType:"OFFER",streamKey:this.streamKey,sdp:t.sdp,callSupport:!1})}catch(e){this.handleRTCError(e)}}async handleAnswer(e){try{this.peerConnection&&await this.peerConnection.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e}))}catch(t){this.handleRTCError(t)}}async handleCandidate(e){if(e)try{this.peerConnection&&await this.peerConnection.addIceCandidate(e)}catch(t){this.handleRTCError(t)}}handleUnpublished(){try{this.closeConnections(),this.externalStopCallback()}catch(e){this.handleRTCError(e)}}handleSystemError(e){this.options.errorChanel&&this.options.errorChanel.next({id:"webrtc-provider-error",category:Zw.WTF,message:e.message})}async onPeerConnectionStream(e){let t=e.streams[0];this.stream&&this.stream.id===t.id||(this.stream=t,this.externalStartCallback(this.stream))}onPeerConnectionIceCandidate(e){e.candidate&&this.send({type:this.signalingType,inviteType:"CANDIDATE",candidate:e.candidate})}onPeerConnectionIceConnectionStateChange(){if(this.peerConnection){let e=this.peerConnection.iceConnectionState;["failed","closed"].indexOf(e)>-1&&(this.retryCount++,this.retryCount>this.options.maxRetryNumber?this.handleNetworkError():(this.closeConnections(),this.scheduleRetry()))}}async createOffer(){let e={offerToReceiveAudio:!0,offerToReceiveVideo:!0,voiceActivityDetection:!1};if(!this.peerConnection)throw new Error("Can not create offer - no peer connection instance ");let t=await this.peerConnection.createOffer(e),i=t.sdp||"";if(!/^a=rtpmap:\d+ H264\/\d+$/m.test(i))throw new Error("No h264 codec support error");return t}handleRTCError(e){try{this.externalErrorCallback(e||new Error("RTC connection error"))}catch(t){this.handleSystemError(t)}}handleNetworkError(){try{this.externalErrorCallback(new Error("Network error"))}catch(e){this.handleSystemError(e)}}send(e){this.ws&&this.ws.send(JSON.stringify(e))}parseMessage(e){try{return JSON.parse(e)}catch{throw new Error("Can not parse socket message")}}closeConnections(){let e=this.ws;e&&(this.ws=null,e.close(1e3)),this.removePeerConnection()}removePeerConnection(){let e=this.peerConnection;e&&(this.peerConnection=null,e.close(),e.ontrack=null,e.onicecandidate=null,e.oniceconnectionstatechange=null,e=null)}scheduleRetry(){this.retryTimeout=setTimeout(this.connectWS.bind(this),eR)}normalizeOptions(e={}){let t={stunServerList:cg,maxRetryNumber:tR,errorChanel:null};return e.stunServerList&&(t.stunServerList=e.stunServerList),e.maxRetryNumber&&e.maxRetryNumber>0&&(t.maxRetryNumber=e.maxRetryNumber),t}};var ca=class{constructor(e){this.videoState=new L("stopped");this.maxSeekBackTime$=new sR(0);this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.params.desiredState.playbackState.getState(),i=this.params.desiredState.playbackState.getTransition();if(t==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.video.pause(),this.video.srcObject=null,this.params.output.position$.next(0),this.params.output.duration$.next(0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.videoState.setState("stopped"),E(this.params.desiredState.playbackState,"stopped",!0));return}if(this.videoState.getTransition())return;let s=this.params.desiredState.videoTrack.getTransition();if(e==="stopped"){this.videoState.startTransitionTo("ready"),this.prepare();return}if(s){this.prepare();return}switch(e){case"ready":t==="paused"?(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused")):t==="playing"&&(this.videoState.startTransitionTo("playing"),this.playIfAllowed());return;case"playing":t==="paused"?(this.videoState.startTransitionTo("paused"),this.video.paused?this.videoState.setState("paused"):this.video.pause()):i?.to==="playing"&&E(this.params.desiredState.playbackState,"playing");return;case"paused":t==="playing"?(this.videoState.startTransitionTo("playing"),this.playIfAllowed()):i?.to==="paused"&&E(this.params.desiredState.playbackState,"paused");return;default:return dg(e)}};this.subscription=new aR,this.params=e,this.log=this.params.dependencies.logger.createComponentLog("WebRTCLiveProvider"),this.video=oe(e.container,e.tuning),this.liveStreamClient=new Fs(this.params.source.url,{maxRetryNumber:this.params.tuning.webrtc.connectionRetryMaxNumber,errorChanel:this.params.output.error$}),this.liveStreamClient.onStart(this.onLiveStreamStart.bind(this)),this.liveStreamClient.onStop(this.onLiveStreamStop.bind(this)),this.liveStreamClient.onError(this.onLiveStreamError.bind(this)),this.params.output.availableTextTracks$.next([]),this.params.desiredState.internalTextTracks.setState([]),this.subscribe()}destroy(){this.subscription.unsubscribe(),this.liveStreamClient.disconnect(),this.params.output.element$.next(void 0),ue(this.video)}subscribe(){let{output:e,desiredState:t}=this.params,i=n=>{e.error$.next({id:"WebRTCLiveProvider",category:Uu.WTF,message:"WebRTCLiveProvider internal logic error",thrown:n})};pg(this.videoState.stateChangeStarted$.pipe(hg(n=>({transition:n,type:"start"}))),this.videoState.stateChangeEnded$.pipe(hg(n=>({transition:n,type:"end"})))).subscribe(({transition:n,type:o})=>{this.log({message:`[videoState change] ${o}: ${JSON.stringify(n)}`})});let a=ce(this.video),s=(n,o)=>this.subscription.add(n.subscribe(o,i));s(a.timeUpdate$,e.liveTime$),s(a.ended$,e.endedEvent$),s(a.looped$,e.loopedEvent$),s(a.error$,e.error$),s(a.isBuffering$,e.isBuffering$),s(a.currentBuffer$,e.currentBuffer$),s($e(this.video),this.params.output.elementVisible$),this.subscription.add(a.durationChange$.subscribe(n=>{e.duration$.next(n===1/0?0:n)})).add(a.canplay$.subscribe(()=>{this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready")},i)).add(a.pause$.subscribe(()=>{this.videoState.setState("paused")},i)).add(a.playing$.subscribe(()=>{this.videoState.setState("playing")},i)).add(a.error$.subscribe(e.error$)).add(this.maxSeekBackTime$.subscribe(this.params.output.duration$)).add(le(this.video,t.volume,a.volumeState$,i)).add(a.volumeState$.subscribe(e.volume$,i)).add(this.videoState.stateChangeEnded$.subscribe(n=>{switch(n.to){case"stopped":e.position$.next(0),e.duration$.next(0),t.playbackState.setState("stopped");break;case"ready":break;case"paused":t.playbackState.setState("paused");break;case"playing":t.playbackState.setState("playing");break;default:return dg(n.to)}},i)).add(pg(t.playbackState.stateChangeStarted$,this.videoState.stateChangeEnded$,rR(["init"])).pipe(iR(0)).subscribe(this.syncPlayback.bind(this),i)),this.subscription.add(t.isLooped.stateChangeStarted$.subscribe(()=>t.isLooped.setState(!1),i)),this.subscription.add(t.autoVideoTrackSwitching.stateChangeStarted$.subscribe(()=>t.autoVideoTrackSwitching.setState(!1),i))}onLiveStreamStart(e){this.params.output.element$.next(this.video),this.params.output.duration$.next(0),this.params.output.position$.next(0),this.params.output.isLive$.next(!0),this.params.output.canChangePlaybackSpeed$.next(!1),this.params.output.hostname$.next(z(this.params.source.url)),this.params.output.autoVideoTrackLimitingAvailable$.next(!1),this.params.output.availableVideoTracks$.next([]),this.params.output.availableAudioTracks$.next([]),this.params.output.isAudioAvailable$.next(!0),this.params.output.currentVideoTrack$.next({id:"webrtc",quality:nR.INVARIANT}),this.video.srcObject=e,E(this.params.desiredState.playbackState,"playing")}onLiveStreamStop(){this.videoState.startTransitionTo("stopped"),this.syncPlayback(),this.params.output.position$.next(0),this.params.output.duration$.next(0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.params.output.endedEvent$.next()}onLiveStreamError(e){this.onLiveStreamStop(),this.params.output.error$.next({id:"WebRTC stream runtime error",category:Uu.EXTERNAL_API,message:e.message,thrown:e})}playIfAllowed(){de(this.video,()=>{this.params.output.soundProhibitedEvent$.next()}).then(e=>{e||(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused",!0))},e=>this.params.output.error$.next({id:"ForcePlay",message:"play() failed even with workarounds",category:Uu.DOM,thrown:e}))}prepare(){this.liveStreamClient.connect()}};var da=class{constructor(e){this.iterator=e[Symbol.iterator](),this.next()}next(){this.current=this.iterator.next()}getValue(){if(this.current.done)throw new Error("Iterable is completed");return this.current.value}isCompleted(){return!!this.current.done}};import{assertNever as ha,assertNonNullable as Et,ErrorCategory as Us,filter as hR,isNonNullable as vg,isNullable as fR,map as mR,merge as bR,once as gR,Subject as be,Subscription as yg,ValueSubject as M,flattenObject as Tg}from"@vkontakte/videoplayer-shared";import{Observable as oR,map as fg,Subscription as uR,Subject as lR}from"@vkontakte/videoplayer-shared";var mg=r=>new oR(e=>{let t=new uR,i=r.desiredPlaybackState$.stateChangeStarted$.pipe(fg(({from:u,to:d})=>`${u}-${d}`)),a=r.desiredPlaybackState$.stateChangeEnded$,s=r.providerChanged$.pipe(fg(({type:u})=>u!==void 0)),n=new lR,o=0,l="unknown";return t.add(i.subscribe(u=>{o&&window.clearTimeout(o),l=u,o=window.setTimeout(()=>n.next(u),r.maxTransitionInterval)})),t.add(a.subscribe(()=>{window.clearTimeout(o),l="unknown",o=0})),t.add(s.subscribe(u=>{o&&(window.clearTimeout(o),o=0,u&&(o=window.setTimeout(()=>n.next(l),r.maxTransitionInterval)))})),t.add(n.subscribe(e)),()=>{window.clearTimeout(o),t.unsubscribe()}});import{ErrorCategory as bg,Subscription as cR,combine as dR,filter as gg,once as Sg}from"@vkontakte/videoplayer-shared";var pa=null,qs=null;function Hu(){return pa||(pa=new(window.AudioContext||window.webkitAudioContext)),qs||(qs=new GainNode(pa,{gain:1}),qs.connect(pa.destination)),{audioCtx:pa,gainNode:qs}}import{clientChecker as pR}from"@vkontakte/videoplayer-shared";var Oi=class r{constructor(e,t,i,a){this.providerOutput=e;this.provider$=t;this.volumeMultiplierError$=i;this.volumeMultiplier=a;this.audioContextInit=!1;this.subscriptions=new cR;this.lastAudioContextResumeId=0;this.subscriptions.add(this.provider$.pipe(gg(s=>!!s.type),Sg()).subscribe(({type:s})=>this.subscribe(s)))}static{this.errorId="VolumeMultiplierManager"}subscribe(e){pR.isSafari&&e!=="MPEG"||this.subscriptions.add(dR({video:this.providerOutput.element$,playbackState:this.providerOutput.playbackState$,volume:this.providerOutput.volume$}).pipe(gg(({playbackState:t,video:i,volume:{muted:a,volume:s}})=>t==="playing"&&!!i&&!a&&!!s),Sg()).subscribe(({video:t})=>this.initAudioContextOnce(t)))}static isSupported(){return"AudioContext"in window&&"GainNode"in window&&"MediaElementAudioSourceNode"in window}initAudioContextOnce(e){let{volumeMultiplier:t}=this,{audioCtx:i,gainNode:a}=Hu(),s=(Math.random()+1)*999999;this.lastAudioContextResumeId=s,i.resume().then(()=>{if(s!==this.lastAudioContextResumeId)throw new Error(`AudioContext.resume() resolved after ${r.errorId} destroyed`);a.gain.value=t;try{new MediaElementAudioSourceNode(i,{mediaElement:e}).connect(a),this.audioContextInit=!0}catch(n){this.volumeMultiplierError$.next({id:r.errorId,category:bg.VIDEO_PIPELINE,message:n?.message??"initAudioContextOnce: (new MediaElementAudioSourceNode).connect() exception",thrown:n})}}).catch(n=>{this.volumeMultiplierError$.next({id:r.errorId,category:bg.VIDEO_PIPELINE,message:n?.message??"initAudioContextOnce: AudioContext.resume() exception",thrown:n})})}destroy(){if(this.audioContextInit){let{gainNode:e}=Hu();e.gain.value=1}this.subscriptions.unsubscribe(),this.lastAudioContextResumeId=0}};var SR={chunkDuration:5e3,maxParallelRequests:5},fa=class{constructor(e){this.current$=new M({type:void 0});this.providerError$=new be;this.noAvailableProvidersError$=new be;this.volumeMultiplierError$=new be;this.providerOutput={position$:new M(0),duration$:new M(1/0),volume$:new M({muted:!1,volume:1}),availableVideoStreams$:new M([]),currentVideoStream$:new M(void 0),availableVideoTracks$:new M([]),currentVideoTrack$:new M(void 0),availableAudioStreams$:new M([]),currentAudioStream$:new M(void 0),availableAudioTracks$:new M([]),currentVideoSegmentLength$:new M(0),currentAudioSegmentLength$:new M(0),isAudioAvailable$:new M(!0),autoVideoTrackLimitingAvailable$:new M(!1),autoVideoTrackLimits$:new M(void 0),currentBuffer$:new M(void 0),isBuffering$:new M(!0),error$:new be,warning$:new be,willSeekEvent$:new be,soundProhibitedEvent$:new be,seekedEvent$:new be,loopedEvent$:new be,endedEvent$:new be,firstBytesEvent$:new be,loadedMetadataEvent$:new be,firstFrameEvent$:new be,canplay$:new be,isLive$:new M(void 0),isLowLatency$:new M(!1),canChangePlaybackSpeed$:new M(!0),liveTime$:new M(void 0),liveBufferTime$:new M(void 0),availableTextTracks$:new M([]),currentTextTrack$:new M(void 0),hostname$:new M(void 0),httpConnectionType$:new M(void 0),httpConnectionReused$:new M(void 0),inPiP$:new M(!1),inFullscreen$:new M(!1),element$:new M(void 0),elementVisible$:new M(!0),availableSources$:new M(void 0),is3DVideo$:new M(!1),playbackState$:new M("")};this.subscription=new yg;this.volumeMultiplierManager=null;this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ProviderContainer"),this.tracer=e.dependencies.tracer.createComponentTracer(this.constructor.name);let t=Fm([...Um(this.params.tuning),...qm(this.params.tuning)],this.params.tuning.useHlsJs,this.params.tuning.useManagedMediaSource).filter(u=>vg(e.sources[u])),{forceFormat:i,formatsToAvoid:a}=this.params.tuning,s=[];i?s=[i]:a.length?s=[...t.filter(u=>!a.includes(u)),...t.filter(u=>a.includes(u))]:s=t,this.log({message:`Selected formats: ${s.join(" > ")}`}),this.tracer.log("Selected formats",Tg(s)),this.screenFormatsIterator=new da(s);let n=[...nu(!0),...nu(!1)];this.chromecastFormatsIterator=new da(n.filter(u=>vg(e.sources[u]))),this.providerOutput.availableSources$.next(e.sources);let{volumeMultiplier:o=1,tuning:{useVolumeMultiplier:l}}=this.params;l&&o!==1&&Oi.isSupported()&&(this.volumeMultiplierManager=new Oi(this.providerOutput,this.current$,this.volumeMultiplierError$,o))}init(){this.subscription.add(this.initProviderErrorHandling()),this.subscription.add(this.params.dependencies.chromecastInitializer.connection$.subscribe(()=>{this.reinitProvider()}))}destroy(){this.destroyProvider(),this.current$.next({type:void 0}),this.subscription.unsubscribe(),this.volumeMultiplierManager?.destroy(),this.volumeMultiplierManager=null,this.tracer.end()}initProvider(){let e=this.chooseDestination(),t=this.chooseFormat(e);if(fR(t)){this.handleNoFormatsError(e);return}let i;try{i=this.createProvider(e,t)}catch(a){this.providerError$.next({id:"ProviderNotConstructed",category:Us.WTF,message:"Failed to create provider",thrown:a})}i?this.current$.next({type:t,provider:i,destination:e}):this.current$.next({type:void 0})}reinitProvider(){this.tracer.log("reinitProvider"),this.destroyProvider(),this.initProvider()}switchToNextProvider(e){this.tracer.log("switchToNextProvider",{destination:e}),this.destroyProvider(),this.failoverIndex=void 0,this.skipFormat(e),this.initProvider()}destroyProvider(){let e=this.current$.getValue().provider;if(!e)return;this.log({message:"destroyProvider"}),this.tracer.log("destroyProvider");let t=this.providerOutput.position$.getValue()*1e3,i=this.params.desiredState.seekState.getState(),a=i.state!=="none";if(this.params.desiredState.seekState.setState({state:"requested",position:a?i.position:t,forcePrecise:a?i.forcePrecise:!1}),e.scene3D){let n=e.scene3D.getCameraRotation();this.params.desiredState.cameraOrientation.setState({x:n.x,y:n.y})}e.destroy();let s=this.providerOutput.isBuffering$;s.getValue()||s.next(!0)}createProvider(e,t){switch(this.log({message:`createProvider: ${e}:${t}`}),this.tracer.log("createProvider",{destination:e,format:t}),e){case"SCREEN":return this.createScreenProvider(t);case"CHROMECAST":return this.createChromecastProvider(t);default:return ha(e)}}createScreenProvider(e){let{sources:t,container:i,desiredState:a}=this.params,s=this.providerOutput,n={container:i,source:null,desiredState:a,output:s,dependencies:this.params.dependencies,tuning:this.params.tuning};switch(e){case"DASH_SEP":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_ONDEMAND":case"DASH_STREAMS":{let o=this.applyFailoverHost(t[e]),l=this.applyFailoverHost(t.HLS_ONDEMAND||t.HLS);return Et(o),new ra({...n,source:o,sourceHls:l})}case"DASH_LIVE_CMAF":{let o=this.applyFailoverHost(t[e]);return Et(o),new aa({...n,source:o})}case"HLS":case"HLS_ONDEMAND":{let o=this.applyFailoverHost(t[e]);return Et(o),Pi||!this.params.tuning.useHlsJs?new ua({...n,source:o}):new na({...n,source:o})}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let o=this.applyFailoverHost(t[e]);return Et(o),new oa({...n,source:o,config:{maxPausedTime:this.params.tuning.live.maxPausedTime},format:e})}case"MPEG":{let o=this.applyFailoverHost(t[e]);return Et(o),new la({...n,source:o})}case"DASH_LIVE":{let o=this.applyFailoverHost(t[e]);return Et(o),new Cm({...n,source:o,config:{...SR,maxPausedTime:this.params.tuning.live.maxPausedTime}})}case"WEB_RTC_LIVE":{let o=this.applyFailoverHost(t[e]);return Et(o),new ca({container:i,source:o,desiredState:a,output:s,dependencies:this.params.dependencies,tuning:this.params.tuning})}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return ha(e)}}createChromecastProvider(e){let{sources:t,container:i,desiredState:a,meta:s}=this.params,n=this.providerOutput,o=this.params.dependencies.chromecastInitializer.connection$.getValue();return Et(o),new cr({connection:o,meta:s,container:i,source:t,format:e,desiredState:a,output:n,dependencies:this.params.dependencies,tuning:this.params.tuning})}chooseDestination(){return this.params.dependencies.chromecastInitializer.connection$.getValue()?"CHROMECAST":"SCREEN"}chooseFormat(e){switch(e){case"SCREEN":return this.screenFormatsIterator.isCompleted()?void 0:this.screenFormatsIterator.getValue();case"CHROMECAST":return this.chromecastFormatsIterator.isCompleted()?void 0:this.chromecastFormatsIterator.getValue();default:return ha(e)}}skipFormat(e){switch(e){case"SCREEN":return this.screenFormatsIterator.next();case"CHROMECAST":return this.chromecastFormatsIterator.next();default:return ha(e)}}handleNoFormatsError(e){switch(e){case"SCREEN":this.noAvailableProvidersError$.next(this.params.tuning.forceFormat),this.current$.next({type:void 0});return;case"CHROMECAST":this.params.dependencies.chromecastInitializer.disconnect();return;default:return ha(e)}}applyFailoverHost(e){if(this.failoverIndex===void 0)return e;let t=this.params.failoverHosts[this.failoverIndex];if(!t)return e;let i=a=>{let s=new URL(a);return s.host=t,s.toString()};if(e===void 0)return e;if("type"in e){if(e.type==="raw")return e;if(e.type==="url")return{...e,url:i(e.url)}}return(0,Ig.default)(Object.entries(e).map(([a,s])=>[a,i(s)]))}initProviderErrorHandling(){let e=new yg,t=!1,i=0;return e.add(bR(this.providerOutput.error$,mg({desiredPlaybackState$:this.params.desiredState.playbackState,maxTransitionInterval:this.params.tuning.maxPlaybackTransitionInterval,position$:this.providerOutput.position$,providerChanged$:this.current$}).pipe(mR(a=>({id:`ProviderHangup:${a}`,category:Us.WTF,message:`A ${a} transition failed to complete within reasonable time`})))).subscribe(this.providerError$)),e.add(this.current$.subscribe(()=>{t=!1;let a=this.params.desiredState.playbackState.transitionEnded$.pipe(hR(({to:s})=>s==="playing"),gR()).subscribe(()=>t=!0);e.add(a)})),e.add(this.providerError$.subscribe(a=>{let s=this.current$.getValue().destination,n={error:a,currentDestination:s};if(s==="CHROMECAST")this.destroyProvider(),this.params.dependencies.chromecastInitializer.stopMedia().then(()=>this.switchToNextProvider("SCREEN"),()=>this.params.dependencies.chromecastInitializer.disconnect());else{let o=a.category===Us.NETWORK,l=a.category===Us.FATAL,u=this.params.failoverHosts.length>0&&(this.failoverIndex===void 0||this.failoverIndex<this.params.failoverHosts.length-1),d=i<this.params.tuning.providerErrorLimit&&!l,c=u&&!l&&(o&&t||!d);n={...n,isNetworkError:o,isFatalError:l,haveFailoverHost:u,tryFailover:c,canReinitProvider:d},this.params.tuning.useNewProviderReinitLogic?d?(i++,this.reinitProvider()):c?(this.failoverIndex=this.failoverIndex===void 0?0:this.failoverIndex+1,this.reinitProvider()):this.switchToNextProvider(s??"SCREEN"):c?(this.failoverIndex=this.failoverIndex===void 0?0:this.failoverIndex+1,this.reinitProvider()):d?(i++,this.reinitProvider()):this.switchToNextProvider(s??"SCREEN")}this.tracer.error("providerError",Tg(n))})),e}};import{fromEvent as Hs,once as vR,combine as yR,Subscription as Eg,ValueSubject as ju,map as TR,filter as IR,isNonNullable as js,now as Ie,safeStorage as Gu}from"@vkontakte/videoplayer-shared";var ER=5e3,xg="one_video_throughput",Pg="one_video_rtt",ma=window.navigator.connection,Ag=()=>{let r=ma?.downlink;if(js(r)&&r!==10)return r*1e3},kg=()=>{let r=ma?.rtt;if(js(r)&&r!==3e3)return r},wg=(r,e,t)=>{let i=t*8,a=i/r;return i/(a+e)},Wu=class r{constructor(e){this.subscription=new Eg;this.concurrentDownloads=new Set;this.tuningConfig=e;let t=r.load(xg)||(e.useBrowserEstimation?Ag():void 0)||ER,i=r.load(Pg)??(e.useBrowserEstimation?kg():void 0)??0;if(this.throughput$=new ju(t),this.rtt$=new ju(i),this.rttAdjustedThroughput$=new ju(wg(t,i,e.rttPenaltyRequestSize)),this.throughput=zt.getSmoothedValue(t,-1,e),this.rtt=zt.getSmoothedValue(i,1,e),e.useBrowserEstimation){let a=()=>{let n=Ag();n&&this.throughput.next(n);let o=kg();js(o)&&this.rtt.next(o)};ma&&"onchange"in ma&&this.subscription.add(Hs(ma,"change").subscribe(a)),a()}this.subscription.add(this.throughput.smoothed$.subscribe(a=>{Gu.set(xg,a.toFixed(0))})),this.subscription.add(this.rtt.smoothed$.subscribe(a=>{Gu.set(Pg,a.toFixed(0))})),this.subscription.add(this.throughput.debounced$.subscribe(this.throughput$)),this.subscription.add(this.rtt.debounced$.subscribe(this.rtt$)),this.subscription.add(yR({throughput:this.throughput.smoothed$,rtt:this.rtt.smoothed$}).pipe(TR(({throughput:a,rtt:s})=>wg(a,s,e.rttPenaltyRequestSize)),IR(a=>{let s=this.rttAdjustedThroughput$.getValue()||0;return Math.abs(a-s)/s>=e.changeThreshold})).subscribe(this.rttAdjustedThroughput$))}destroy(){this.concurrentDownloads.clear(),this.subscription.unsubscribe()}trackXHR(e){let t=0,i=Ie(),a=new Eg;switch(this.subscription.add(a),this.concurrentDownloads.add(e),e.readyState){case 4:break;case 3:case 2:a.add(Hs(e,"progress").pipe(vR()).subscribe(s=>{t=s.loaded,i=Ie()}));break;case 1:case 0:a.add(Hs(e,"loadstart").subscribe(()=>{t=0,i=Ie()}));break}a.add(Hs(e,"loadend").subscribe(s=>{if(e.status===200){let n=s.loaded,o=Ie(),l=n-t,u=o-i;this.addRawSpeed(l,u,1)}this.concurrentDownloads.delete(e),a.unsubscribe()}))}trackStream(e,t=!1){let i=e.getReader();if(!i){e.cancel("Could not get reader");return}let a=0,s=Ie(),n=0,o=Ie(),l=d=>{this.concurrentDownloads.delete(e),i.releaseLock(),e.cancel(`Throughput Estimator error: ${d}`).catch(()=>{})},u=async({done:d,value:c})=>{if(d)!t&&this.addRawSpeed(a,Ie()-s,1),this.concurrentDownloads.delete(e);else if(c){if(t){let p=Ie();if(p-o>this.tuningConfig.lowLatency.continuesByteSequenceInterval||p-s>this.tuningConfig.lowLatency.maxLastEvaluationTimeout){let m=o-s;m&&this.addRawSpeed(n,m,1,t),n=c.byteLength,s=Ie()}else n+=c.byteLength;o=Ie()}else a+=c.byteLength,n+=c.byteLength,n>=this.tuningConfig.streamMinSampleSize&&Ie()-o>=this.tuningConfig.streamMinSampleTime&&(this.addRawSpeed(n,Ie()-o,this.concurrentDownloads.size),n=0,o=Ie());await i?.read().then(u,l)}};this.concurrentDownloads.add(e),i?.read().then(u,l)}addRawSpeed(e,t,i=1,a=!1){if(r.sanityCheck(e,t,a)){let s=e*8/t;this.throughput.next(s*i)}}addRawThroughput(e){this.throughput.next(e)}addRawRtt(e){this.rtt.next(e)}static sanityCheck(e,t,i=!1){let a=e*8/t;return!(!a||!isFinite(a)||a>1e6||a<30||i&&e<1e4||!i&&e<10*1024||!i&&t<=20)}static load(e){let t=Gu.get(e);if(js(t))return parseInt(t,10)??void 0}},Rg=Wu;import{fillWithDefault as xR,VideoQuality as $g}from"@vkontakte/videoplayer-shared";var Lg={configName:["core"],throughputEstimator:{type:"EmaAndMa",emaAlphaSlow:.2,emaAlphaFast:.7,emaAlpha:.45,basisTrendChangeCount:10,changeThreshold:.05,useBrowserEstimation:!0,rttPenaltyRequestSize:1*1024*1024,streamMinSampleSize:10*1024,streamMinSampleTime:300,deviationDepth:20,deviationFactor:.5,lowLatency:{continuesByteSequenceInterval:50,maxLastEvaluationTimeout:300}},autoTrackSelection:{bitrateFactorAtEmptyBuffer:1.8,bitrateAudioFactorAtEmptyBuffer:10,bitrateFactorAtFullBuffer:1.2,bitrateAudioFactorAtFullBuffer:7,minVideoAudioRatio:5,minAvailableThroughputAudioRatio:5,usePixelRatio:!0,pixelRatioMultiplier:1,limitByContainer:!0,containerSizeFactor:2,lazyQualitySwitch:!0,minBufferToSwitchUp:.4,considerPlaybackRate:!1,trackCooldownIncreaseQuality:3e3,trackCooldownDecreaseQuality:3e3,backgroundVideoQualityLimit:$g.Q_4320P,activeVideoAreaThreshold:.1},droppedFramesChecker:{enabled:!1,percentLimit:.1,checkTime:1e3,countLimit:3,tickCountAfterQualityChange:5,qualityUpWaitingTime:5e3,minQualityBanLimit:$g.Q_480P},dash:{forwardBufferTarget:6e4,forwardBufferTargetAuto:6e4,forwardBufferTargetManual:5*6e4,forwardBufferTargetPreload:5e3,maxSegmentDurationLeftToSelectNextSegment:3e3,minSafeBufferThreshold:.5,bufferPruningSafeZone:1e3,segmentRequestSize:1*1024*1024,representationSwitchForwardBufferGap:3e3,crashOnStallTimeout:25e3,crashOnStallTWithoutDataTimeout:5e3,enableSubSegmentBufferFeeding:!0,bufferEmptinessTolerance:100,useFetchPriorityHints:!0},dashCmafLive:{maxActiveLiveOffset:1e4,normalizedTargetMinBufferSize:6e4,normalizedLiveMinBufferSize:5e3,normalizedActualBufferOffset:1e4,offsetCalculationError:3e3,lowLatency:{maxTargetOffset:3e3,maxTargetOffsetDeviation:250,playbackCatchupSpeedup:.05,isActive:!1,delayEstimator:{emaAlpha:.45,changeThreshold:.05,deviationDepth:20,deviationFactor:.5,extremumInterval:5}}},live:{minBuffer:3e3,minBufferSegments:3,lowLatencyMinBuffer:1e3,lowLatencyMinBufferSegments:1,isLiveCatchUpMode:!1,lowLatencyActiveLiveDelay:3e3,activeLiveDelay:5e3,maxPausedTime:5e3},downloadBackoff:{bufferThreshold:100,start:100,factor:2,max:3*1e3,random:.1},enableWakeLock:!0,enableTelemetryAtStart:!1,forceFormat:void 0,formatsToAvoid:[],disableChromecast:!1,chromecastReceiverId:void 0,useWebmBigRequest:!1,webmCodec:"vp9",androidPreferredFormat:"mpeg",preferCMAF:!1,preferWebRTC:!1,preferMultiStream:!1,preferHDR:!1,bigRequestMinInitSize:50*1024,bigRequestMinDataSize:1*1024*1024,stripRangeHeader:!0,flushShortLoopedBuffers:!0,insufficientBufferRuleMargin:1e4,dashSeekInSegmentDurationThreshold:3*60*1e3,dashSeekInSegmentAlwaysSeekDelta:1e4,endGapTolerance:300,stallIgnoreThreshold:33,gapWatchdogInterval:50,accumulationBufferStallSizeMs:0,requestQuick:!1,useHlsJs:!0,useNativeHLSTextTracks:!1,useManagedMediaSource:!1,useNewPruneBufferStrategy:!1,useNewPartialSegmentFeeding:!1,useNewSwitchTo:!1,useSeparateAudioVideoABR:!1,isAudioDisabled:!1,autoplayOnlyInActiveTab:!0,dynamicImportTimeout:5e3,maxPlaybackTransitionInterval:2e4,providerErrorLimit:3,useNewProviderReinitLogic:!1,manifestRetryInterval:300,manifestRetryMaxInterval:1e4,manifestRetryMaxCount:10,audioVideoSyncRate:20,webrtc:{connectionRetryMaxNumber:3},spherical:{enabled:!1,fov:{x:135,y:76},rotationSpeed:45,maxYawAngle:175,rotationSpeedCorrection:10,degreeToPixelCorrection:5,speedFadeTime:2e3,speedFadeThreshold:50},useVolumeMultiplier:!1},Mg=r=>({...xR(r,Lg),configName:[...r.configName??[],...Lg.configName]});import{assertNonNullable as Gs,combine as xt,ErrorCategory as Ws,filter as ae,filterChanged as B,fromEvent as Yu,isNonNullable as LR,isNullable as MR,Logger as CR,map as C,mapTo as Og,merge as Pt,now as Qs,once as Ze,Subject as N,Subscription as Vg,tap as _g,ValueSubject as P,isHigher as DR,isInvariantQuality as Ng,flattenObject as At,throttle as zu,getTraceSubscriptionMethod as Fg,Tracer as BR}from"@vkontakte/videoplayer-shared";import{merge as PR,map as AR,filter as Cg,isNonNullable as kR}from"@vkontakte/videoplayer-shared";var Qu=({seekState:r,position$:e})=>PR(r.stateChangeEnded$.pipe(AR(({to:t})=>t.state==="none"?void 0:(t.position??NaN)/1e3),Cg(kR)),e.pipe(Cg(()=>r.getState().state==="none")));import{assertNonNullable as wR}from"@vkontakte/videoplayer-shared";var Dg=r=>{let e=typeof r.container=="string"?document.getElementById(r.container):r.container;return wR(e,`Wrong container or containerId {${r.container}}`),e};import{filter as RR,once as $R}from"@vkontakte/videoplayer-shared";var Bg=(r,e,t,i)=>{r!==void 0&&e.getState()===void 0&&e.getPrevState()===void 0&&t?.getValue().length===0?t.pipe(RR(a=>a.length>0),$R()).subscribe(a=>{a.find(i)&&e.startTransitionTo(r)}):(r===void 0||t?.getValue().find(i))&&e.startTransitionTo(r)};var Ys=class{constructor(e={configName:[]},t=BR.createRootTracer(!1)){this.subscription=new Vg;this.logger=new CR;this.abrLogger=this.logger.createComponentLog("ABR");this.isPlaybackStarted=!1;this.hasLiveOffsetByPaused=new P(!1);this.hasLiveOffsetByPausedTimer=0;this.desiredState={playbackState:new L("stopped"),seekState:new L({state:"none"}),volume:new L({volume:1,muted:!1}),videoTrack:new L(void 0),videoStream:new L(void 0),audioStream:new L(void 0),autoVideoTrackSwitching:new L(!0),autoVideoTrackLimits:new L({}),isLooped:new L(!1),playbackRate:new L(1),externalTextTracks:new L([]),internalTextTracks:new L([]),currentTextTrack:new L(void 0),textTrackCuesSettings:new L({}),cameraOrientation:new L({x:0,y:0})};this.info={playbackState$:new P("stopped"),position$:new P(0),duration$:new P(1/0),muted$:new P(!1),volume$:new P(1),availableVideoStreams$:new P([]),currentVideoStream$:new P(void 0),availableQualities$:new P([]),availableQualitiesFps$:new P({}),currentQuality$:new P(void 0),isAutoQualityEnabled$:new P(!0),autoQualityLimitingAvailable$:new P(!1),autoQualityLimits$:new P({}),availableAudioStreams$:new P([]),currentAudioStream$:new P(void 0),availableAudioTracks$:new P([]),isAudioAvailable$:new P(!0),currentPlaybackRate$:new P(1),currentBuffer$:new P({start:0,end:0}),isBuffering$:new P(!0),isStalled$:new P(!1),isEnded$:new P(!1),isLooped$:new P(!1),isLive$:new P(void 0),canChangePlaybackSpeed$:new P(void 0),atLiveEdge$:new P(void 0),atLiveDurationEdge$:new P(void 0),liveTime$:new P(void 0),liveBufferTime$:new P(void 0),currentFormat$:new P(void 0),availableTextTracks$:new P([]),currentTextTrack$:new P(void 0),throughputEstimation$:new P(void 0),rttEstimation$:new P(void 0),videoBitrate$:new P(void 0),hostname$:new P(void 0),httpConnectionType$:new P(void 0),httpConnectionReused$:new P(void 0),surface$:new P("none"),chromecastState$:new P("NOT_AVAILABLE"),chromecastDeviceName$:new P(void 0),intrinsicVideoSize$:new P(void 0),availableSources$:new P(void 0),is3DVideo$:new P(!1),currentVideoSegmentLength$:new P(0),currentAudioSegmentLength$:new P(0)};this.events={inited$:new N,ready$:new N,started$:new N,playing$:new N,paused$:new N,stopped$:new N,willStart$:new N,willResume$:new N,willPause$:new N,willStop$:new N,willDestruct$:new N,watchCoverageRecord$:new N,watchCoverageLive$:new N,managedError$:new N,fatalError$:new N,ended$:new N,looped$:new N,seeked$:new N,willSeek$:new N,autoplaySoundProhibited$:new N,firstBytes$:new N,loadedMetadata$:new N,firstFrame$:new N,canplay$:new N,log$:new N};this.experimental={element$:new P(void 0),tuningConfigName$:new P([]),enableDebugTelemetry$:new P(!1),dumpTelemetry:pm};if(this.initLogs(),this.tuning=Mg(e),this.tracer=t,this.experimental.tuningConfigName$.next(this.tuning.configName),this.chromecastInitializer=new xa({receiverApplicationId:e.chromecastReceiverId,isDisabled:e.disableChromecast,dependencies:{logger:this.logger}}),this.throughputEstimator=new Rg(this.tuning.throughputEstimator),this.initChromecastSubscription(),this.initDesiredStateSubscriptions(),Proxy&&Reflect)return new Proxy(this,{get:(i,a,s)=>{let n=Reflect.get(i,a,s);return typeof n!="function"?n:(...o)=>{try{return n.apply(i,o)}catch(l){let u=o.map(p=>JSON.stringify(p,(h,m)=>{let b=typeof m;return["number","string","boolean"].includes(b)?m:m===null?null:`<${b}>`})),d=`Player.${String(a)}`,c=`Exception calling ${d} (${u.join(", ")})`;throw this.events.fatalError$.next({id:d,category:Ws.WTF,message:c,thrown:l}),l}}}})}initVideo(e){this.config=e;let{container:t,...i}=e;return this.tracer.log("initVideo",At(i)),this.domContainer=Dg(e),this.chromecastInitializer.contentId=e.meta?.videoId,this.providerContainer=new fa({sources:e.sources,meta:e.meta??{},failoverHosts:e.failoverHosts??[],container:this.domContainer,desiredState:this.desiredState,dependencies:{throughputEstimator:this.throughputEstimator,chromecastInitializer:this.chromecastInitializer,tracer:this.tracer,logger:this.logger,abrLogger:this.abrLogger},tuning:this.tuning,volumeMultiplier:e.volumeMultiplier}),this.initProviderContainerSubscription(this.providerContainer),this.initStartingVideoTrack(this.providerContainer),this.initTracerSubscription(),this.providerContainer.init(),this.setMuted(this.tuning.isAudioDisabled),this.initDebugTelemetry(),this.initWakeLock(),this}destroy(){this.tracer.log("destroy"),window.clearTimeout(this.hasLiveOffsetByPausedTimer),this.events.willDestruct$.next(),this.stop(),this.providerContainer?.destroy(),this.throughputEstimator.destroy(),this.chromecastInitializer.destroy(),this.subscription.unsubscribe(),this.tracer.end()}prepare(){let e=this.desiredState.playbackState;return this.tracer.log("prepare",{currentPlayBackState:e.getState()}),e.getState()==="stopped"&&e.startTransitionTo("ready"),this}play(){let e=()=>{let t=this.desiredState.playbackState;this.tracer.log("play",{currentPlayBackState:t.getState()}),t.getState()!=="playing"&&t.startTransitionTo("playing")};return document.hidden&&this.tuning.autoplayOnlyInActiveTab&&!yr()?(this.tracer.log("request play from hidden tab"),Yu(document,"visibilitychange").pipe(Ze()).subscribe(e)):e(),this}pause(){let e=this.desiredState.playbackState;return this.tracer.log("pause",{currentPlayBackState:e.getState()}),e.getState()!=="paused"&&e.startTransitionTo("paused"),this}stop(){let e=this.desiredState.playbackState;return this.tracer.log("stop",{currentPlayBackState:e.getState()}),e.getState()!=="stopped"&&e.startTransitionTo("stopped"),this}seekTime(e,t=!0){let i=this.info.duration$.getValue(),a=this.info.isLive$.getValue(),s=e;return e>=i&&!a&&(s=i-.1),this.tracer.log("seekTime",{duration:i,isLive:a,time:e,calculatedTime:s,forcePrecise:t}),this.events.willSeek$.next({from:this.getExactTime(),to:s}),this.desiredState.seekState.setState({state:"requested",position:s*1e3,forcePrecise:t}),this}seekPercent(e){let t=this.info.duration$.getValue();return this.tracer.log("seekPercent",{percent:e,duration:t}),isFinite(t)&&this.seekTime(Math.abs(t)*e,!1),this}setVolume(e){let t=this.tuning.isAudioDisabled||this.desiredState.volume.getState().muted;return this.tracer.log("setVolume",{volume:e,isAudioDisabled:this.tuning.isAudioDisabled,isDesiredStateMuted:this.desiredState.volume.getState().muted,chromecastState:this.chromecastInitializer.castState$.getValue(),muted:t}),this.chromecastInitializer.castState$.getValue()==="CONNECTED"?this.chromecastInitializer.setVolume(e):this.desiredState.volume.startTransitionTo({volume:e,muted:t}),this}setMuted(e){let t=this.tuning.isAudioDisabled||e;return this.tracer.log("setMuted",{isMuted:e,isAudioDisabled:this.tuning.isAudioDisabled,desiredStateVolume:this.desiredState.volume.getState().volume,chromecastState:this.chromecastInitializer.castState$.getValue(),muted:t}),this.chromecastInitializer.castState$.getValue()==="CONNECTED"?this.chromecastInitializer.setMuted(t):this.desiredState.volume.startTransitionTo({volume:this.desiredState.volume.getState().volume,muted:t}),this}setVideoStream(e){return this.desiredState.videoStream.startTransitionTo(e),this}setAudioStream(e){return this.desiredState.audioStream.startTransitionTo(e),this}setQuality(e){Gs(this.providerContainer);let t=this.providerContainer.providerOutput.availableVideoTracks$.getValue();return this.tracer.log("setQuality",{isDelayed:t.length===0,quality:e}),this.desiredState.videoTrack.getState()===void 0&&this.desiredState.videoTrack.getPrevState()===void 0&&t.length===0?this.providerContainer.providerOutput.availableVideoTracks$.pipe(ae(i=>i.length>0),Ze()).subscribe(i=>{this.setVideoTrackIdByQuality(i,e)}):t.length>0&&this.setVideoTrackIdByQuality(t,e),this}setAutoQuality(e){return this.tracer.log("setAutoQuality",{enable:e}),this.desiredState.autoVideoTrackSwitching.startTransitionTo(e),this}setAutoQualityLimits(e){return this.tracer.log("setAutoQualityLimits",At(e)),this.desiredState.autoVideoTrackLimits.startTransitionTo(e),this}setPlaybackRate(e){Gs(this.providerContainer);let t=this.providerContainer?.providerOutput.element$.getValue();return this.tracer.log("setPlaybackRate",{playbackRate:e,isVideoElementAvailable:!!t}),t&&(this.desiredState.playbackRate.setState(e),t.playbackRate=e),this}setExternalTextTracks(e){return e.length&&this.tracer.log("setExternalTextTracks",At(e)),this.desiredState.externalTextTracks.startTransitionTo(e.map(t=>({type:"external",...t}))),this}selectTextTrack(e){return Bg(e,this.desiredState.currentTextTrack,this.providerContainer?.providerOutput.availableTextTracks$,t=>t.id===e),this.tracer.log("selectTextTrack",{textTrackId:e}),this}setTextTrackCueSettings(e){return this.tracer.log("setTextTrackCueSettings",{...e}),this.desiredState.textTrackCuesSettings.startTransitionTo(e),this}setLooped(e){return this.tracer.log("setLooped",{isLooped:e}),this.desiredState.isLooped.startTransitionTo(e),this}toggleChromecast(){this.tracer.log("toggleChromecast"),this.chromecastInitializer.toggleConnection()}startCameraManualRotation(e,t){let i=this.getScene3D();return this.tracer.log("startCameraManualRotation",{isScene3DAvailable:!!i,mx:e,my:t}),i&&i.startCameraManualRotation(e,t),this}stopCameraManualRotation(e=!1){let t=this.getScene3D();return this.tracer.log("stopCameraManualRotation",{isScene3DAvailable:!!t,immediate:e}),t&&t.stopCameraManualRotation(e),this}moveCameraFocusPX(e,t){let i=this.getScene3D();if(this.tracer.log("moveCameraFocusPX",{isScene3DAvailable:!!i,dxpx:e,dypx:t}),i){let a=i.getCameraRotation(),s=i.pixelToDegree({x:e,y:t});this.desiredState.cameraOrientation.setState({x:a.x+s.x,y:a.y+s.y})}return this}holdCamera(){let e=this.getScene3D();return e&&e.holdCamera(),this}releaseCamera(){let e=this.getScene3D();return e&&e.releaseCamera(),this}getExactTime(){if(!this.providerContainer)return 0;let e=this.providerContainer.providerOutput.element$.getValue();if(MR(e))return this.info.position$.getValue();let t=this.desiredState.seekState.getState(),i=t.state==="none"?void 0:t.position;return LR(i)?i/1e3:e.currentTime}getAllLogs(){return this.logger.getAllLogs()}getScene3D(){let e=this.providerContainer?.current$.getValue();if(e?.provider?.scene3D)return e.provider.scene3D}setIntrinsicVideoSize(...e){let t={width:e.reduce((i,{width:a})=>i||a||0,0),height:e.reduce((i,{height:a})=>i||a||0,0)};t.width&&t.height&&this.info.intrinsicVideoSize$.next({width:t.width,height:t.height})}initDesiredStateSubscriptions(){this.subscription.add(Pt(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(C(e=>e.to)).subscribe(this.info.playbackState$)).add(this.desiredState.isLooped.stateChangeEnded$.pipe(C(e=>e.to)).subscribe(this.info.isLooped$)).add(this.desiredState.playbackRate.stateChangeEnded$.pipe(C(e=>e.to)).subscribe(this.info.currentPlaybackRate$)).add(this.desiredState.autoVideoTrackSwitching.stateChangeEnded$.pipe(C(e=>e.to)).subscribe(this.info.isAutoQualityEnabled$)).add(this.desiredState.autoVideoTrackLimits.stateChangeEnded$.pipe(C(e=>e.to)).subscribe(this.info.autoQualityLimits$)),this.subscription.add(this.desiredState.playbackState.stateChangeStarted$.pipe(ae(({from:e})=>e==="stopped"),Ze()).subscribe(()=>{this.initedAt=Qs(),this.events.inited$.next()})).add(this.desiredState.playbackState.stateChangeEnded$.subscribe(e=>{switch(e.to){case"ready":this.events.ready$.next();break;case"playing":this.isPlaybackStarted||this.events.started$.next(),this.isPlaybackStarted=!0,this.events.playing$.next();break;case"paused":this.events.paused$.next();break;case"stopped":this.events.stopped$.next()}})).add(this.desiredState.playbackState.stateChangeStarted$.subscribe(e=>{switch(e.to){case"paused":this.events.willPause$.next();break;case"playing":this.isPlaybackStarted?this.events.willResume$.next():this.events.willStart$.next();break;case"stopped":this.events.willStop$.next();break;default:}}))}initProviderContainerSubscription(e){this.subscription.add(e.providerOutput.willSeekEvent$.subscribe(()=>{let n=this.desiredState.seekState.getState();this.tracer.log("willSeekEvent",At(n)),n.state==="requested"?this.desiredState.seekState.setState({...n,state:"applying"}):this.events.managedError$.next({id:`WillSeekIn${n.state}`,category:Ws.WTF,message:"Received unexpeceted willSeek$"})})).add(e.providerOutput.soundProhibitedEvent$.pipe(Ze()).subscribe(this.events.autoplaySoundProhibited$)).add(e.providerOutput.seekedEvent$.subscribe(()=>{let n=this.desiredState.seekState.getState();this.tracer.log("seekedEvent",At(n)),n.state==="applying"&&(this.desiredState.seekState.setState({state:"none"}),this.events.seeked$.next())})).add(e.current$.pipe(C(n=>n.type)).subscribe(this.info.currentFormat$)).add(e.current$.pipe(C(n=>n.destination),B()).subscribe(()=>this.isPlaybackStarted=!1)).add(e.providerOutput.availableVideoStreams$.subscribe(this.info.availableVideoStreams$)).add(e.providerOutput.availableVideoTracks$.pipe(C(n=>n.map(({quality:o})=>o).sort((o,l)=>Ng(o)?1:Ng(l)?-1:DR(l,o)?1:-1))).subscribe(this.info.availableQualities$)).add(e.providerOutput.availableVideoTracks$.subscribe(n=>{let o={};for(let l of n)l.fps&&(o[l.quality]=l.fps);this.info.availableQualitiesFps$.next(o)})).add(e.providerOutput.availableAudioStreams$.subscribe(this.info.availableAudioStreams$)).add(e.providerOutput.currentVideoStream$.subscribe(this.info.currentVideoStream$)).add(e.providerOutput.currentAudioStream$.subscribe(this.info.currentAudioStream$)).add(e.providerOutput.availableAudioTracks$.subscribe(this.info.availableAudioTracks$)).add(e.providerOutput.isAudioAvailable$.pipe(B()).subscribe(this.info.isAudioAvailable$)).add(e.providerOutput.currentVideoTrack$.subscribe(n=>{this.info.currentQuality$.next(n?.quality),this.info.videoBitrate$.next(n?.bitrate)})).add(e.providerOutput.currentVideoSegmentLength$.pipe(B((n,o)=>Math.round(n)===Math.round(o))).subscribe(this.info.currentVideoSegmentLength$)).add(e.providerOutput.currentAudioSegmentLength$.pipe(B((n,o)=>Math.round(n)===Math.round(o))).subscribe(this.info.currentAudioSegmentLength$)).add(e.providerOutput.hostname$.pipe(B()).subscribe(this.info.hostname$)).add(e.providerOutput.httpConnectionType$.pipe(B()).subscribe(this.info.httpConnectionType$)).add(e.providerOutput.httpConnectionReused$.pipe(B()).subscribe(this.info.httpConnectionReused$)).add(e.providerOutput.currentTextTrack$.subscribe(this.info.currentTextTrack$)).add(e.providerOutput.availableTextTracks$.subscribe(this.info.availableTextTracks$)).add(e.providerOutput.autoVideoTrackLimitingAvailable$.subscribe(this.info.autoQualityLimitingAvailable$)).add(e.providerOutput.autoVideoTrackLimits$.subscribe(n=>{this.desiredState.autoVideoTrackLimits.setState(n??{})})).add(e.providerOutput.currentBuffer$.pipe(C(n=>n?{start:n.from,end:n.to}:{start:0,end:0})).subscribe(this.info.currentBuffer$)).add(e.providerOutput.duration$.subscribe(this.info.duration$)).add(e.providerOutput.isBuffering$.subscribe(this.info.isBuffering$)).add(e.providerOutput.isLive$.subscribe(this.info.isLive$)).add(e.providerOutput.canChangePlaybackSpeed$.subscribe(this.info.canChangePlaybackSpeed$)).add(e.providerOutput.liveTime$.subscribe(this.info.liveTime$)).add(e.providerOutput.liveBufferTime$.subscribe(this.info.liveBufferTime$)).add(xt({hasLiveOffsetByPaused:Pt(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(C(n=>n.to),B(),C(n=>n==="paused")),isLowLatency:e.providerOutput.isLowLatency$}).subscribe(({hasLiveOffsetByPaused:n,isLowLatency:o})=>{if(window.clearTimeout(this.hasLiveOffsetByPausedTimer),n){this.hasLiveOffsetByPausedTimer=window.setTimeout(()=>{this.hasLiveOffsetByPaused.next(!0)},this.getActiveLiveDelay(o));return}this.hasLiveOffsetByPaused.next(!1)})).add(xt({atLiveEdge:xt({isLive:e.providerOutput.isLive$,isLowLatency:e.providerOutput.isLowLatency$,position:Qu({seekState:this.desiredState.seekState,position$:e.providerOutput.position$})}).pipe(C(({isLive:n,position:o,isLowLatency:l})=>{let u=this.getActiveLiveDelay(l);return n&&Math.abs(o)<u/1e3}),B(),_g(n=>n&&this.setPlaybackRate(1))),hasPausedTimeoutCase:this.hasLiveOffsetByPaused}).pipe(C(({atLiveEdge:n,hasPausedTimeoutCase:o})=>n&&!o)).subscribe(this.info.atLiveEdge$)).add(xt({isLive:e.providerOutput.isLive$,position:e.providerOutput.position$,duration:e.providerOutput.duration$}).pipe(C(({isLive:n,position:o,duration:l})=>n&&(Math.abs(l)-Math.abs(o))*1e3<this.tuning.live.activeLiveDelay),B(),_g(n=>n&&this.setPlaybackRate(1))).subscribe(this.info.atLiveDurationEdge$)).add(e.providerOutput.volume$.pipe(C(n=>n.muted),B()).subscribe(this.info.muted$)).add(e.providerOutput.volume$.pipe(C(n=>n.volume),B()).subscribe(this.info.volume$)).add(Qu({seekState:this.desiredState.seekState,position$:e.providerOutput.position$}).subscribe(this.info.position$)).add(Pt(e.providerOutput.endedEvent$.pipe(Og(!0)),e.providerOutput.seekedEvent$.pipe(Og(!1))).pipe(B()).subscribe(this.info.isEnded$)).add(e.providerOutput.endedEvent$.subscribe(this.events.ended$)).add(e.providerOutput.loopedEvent$.subscribe(this.events.looped$)).add(e.providerError$.subscribe(this.events.managedError$)).add(e.volumeMultiplierError$.subscribe(this.events.managedError$)).add(e.noAvailableProvidersError$.pipe(C(n=>({id:n?`No${n}`:"NoProviders",category:Ws.VIDEO_PIPELINE,message:n?`${n} was forced but failed or not available`:"No suitable providers or all providers failed"}))).subscribe(this.events.fatalError$)).add(e.providerOutput.element$.subscribe(this.experimental.element$)).add(e.providerOutput.firstBytesEvent$.pipe(Ze(),C(n=>n??Qs()-this.initedAt)).subscribe(this.events.firstBytes$)).add(e.providerOutput.loadedMetadataEvent$.subscribe(this.events.loadedMetadata$)).add(e.providerOutput.firstFrameEvent$.pipe(Ze(),C(()=>Qs()-this.initedAt)).subscribe(this.events.firstFrame$)).add(e.providerOutput.canplay$.pipe(Ze(),C(()=>Qs()-this.initedAt)).subscribe(this.events.canplay$)).add(this.throughputEstimator.throughput$.subscribe(this.info.throughputEstimation$)).add(this.throughputEstimator.rtt$.subscribe(this.info.rttEstimation$)).add(e.providerOutput.availableSources$.subscribe(this.info.availableSources$));let t=new P(!1);this.subscription.add(e.providerOutput.seekedEvent$.subscribe(()=>t.next(!1))).add(e.providerOutput.willSeekEvent$.subscribe(()=>t.next(!0)));let i=new P(!0);this.subscription.add(e.current$.subscribe(()=>i.next(!0))).add(this.desiredState.playbackState.stateChangeEnded$.pipe(ae(({to:n})=>n==="playing"),Ze()).subscribe(()=>i.next(!1)));let a=0,s=Pt(e.providerOutput.isBuffering$,t,i).pipe(C(()=>{let n=e.providerOutput.isBuffering$.getValue(),o=t.getValue()||i.getValue();return n&&!o}),B());this.subscription.add(s.subscribe(n=>{n?a=window.setTimeout(()=>this.info.isStalled$.next(!0),this.tuning.stallIgnoreThreshold):(window.clearTimeout(a),this.info.isStalled$.next(!1))})),this.subscription.add(Pt(e.providerOutput.canplay$,e.providerOutput.firstFrameEvent$,e.providerOutput.firstBytesEvent$).subscribe(()=>{let n=e.providerOutput.element$.getValue();this.setIntrinsicVideoSize({width:n?.videoWidth,height:n?.videoHeight})})).add(e.providerOutput.currentVideoTrack$.subscribe(n=>{let o=e.providerOutput.element$.getValue();this.setIntrinsicVideoSize({width:n?.size?.width,height:n?.size?.height},{width:o?.videoWidth,height:o?.videoHeight})})).add(e.providerOutput.is3DVideo$.subscribe(this.info.is3DVideo$)),this.subscription.add(Pt(e.providerOutput.inPiP$,e.providerOutput.inFullscreen$,e.providerOutput.element$,e.providerOutput.elementVisible$,this.chromecastInitializer.castState$).subscribe(()=>{let n=e.providerOutput.inPiP$.getValue(),o=e.providerOutput.inFullscreen$.getValue(),l=e.providerOutput.element$.getValue(),u=e.providerOutput.elementVisible$.getValue(),d=this.chromecastInitializer.castState$.getValue(),c;d==="CONNECTED"?c="second_screen":l?u?n?c="pip":o?c="fullscreen":c="inline":c="invisible":c="none",this.info.surface$.getValue()!==c&&this.info.surface$.next(c)}))}initChromecastSubscription(){this.subscription.add(this.chromecastInitializer.castState$.subscribe(this.info.chromecastState$)),this.subscription.add(this.chromecastInitializer.connection$.pipe(C(e=>e?.castDevice.friendlyName)).subscribe(this.info.chromecastDeviceName$)),this.subscription.add(this.chromecastInitializer.errorEvent$.subscribe(this.events.managedError$))}initStartingVideoTrack(e){let t=new Vg;this.subscription.add(t),this.subscription.add(e.current$.pipe(B((i,a)=>i.provider===a.provider)).subscribe(()=>{t.unsubscribe(),t.add(e.providerOutput.availableVideoTracks$.pipe(ae(i=>i.length>0),Ze()).subscribe(i=>{this.setStartingVideoTrack(i)}))}))}setStartingVideoTrack(e){let t,i=this.desiredState.videoTrack.getState()?.quality;i&&(t=e.find(({quality:a})=>a===i),t||this.setAutoQuality(!0)),t||(t=Tt(e,{container:this.domContainer.getBoundingClientRect(),throughput:this.throughputEstimator.throughput$.getValue(),tuning:this.tuning.autoTrackSelection,limits:this.desiredState.autoVideoTrackLimits.getState(),playbackRate:this.info.currentPlaybackRate$.getValue(),forwardBufferHealth:0,abrLogger:this.abrLogger})),this.desiredState.videoTrack.startTransitionTo(t),this.info.currentQuality$.next(t.quality),this.info.videoBitrate$.next(t.bitrate)}initLogs(){this.subscription.add(Pt(this.desiredState.videoTrack.stateChangeStarted$.pipe(C(e=>({transition:e,entity:"quality",type:"start"}))),this.desiredState.videoTrack.stateChangeEnded$.pipe(C(e=>({transition:e,entity:"quality",type:"end"}))),this.desiredState.autoVideoTrackSwitching.stateChangeStarted$.pipe(C(e=>({transition:e,entity:"autoQualityEnabled",type:"start"}))),this.desiredState.autoVideoTrackSwitching.stateChangeEnded$.pipe(C(e=>({transition:e,entity:"autoQualityEnabled",type:"end"}))),this.desiredState.seekState.stateChangeStarted$.pipe(C(e=>({transition:e,entity:"seekState",type:"start"}))),this.desiredState.seekState.stateChangeEnded$.pipe(C(e=>({transition:e,entity:"seekState",type:"end"}))),this.desiredState.playbackState.stateChangeStarted$.pipe(C(e=>({transition:e,entity:"playbackState",type:"start"}))),this.desiredState.playbackState.stateChangeEnded$.pipe(C(e=>({transition:e,entity:"playbackState",type:"end"})))).pipe(C(e=>({component:"desiredState",message:`[${e.entity} change] ${e.type}: ${JSON.stringify(e.transition)}`}))).subscribe(this.logger.log)),this.subscription.add(this.logger.log$.subscribe(this.events.log$))}initDebugTelemetry(){let e=this.providerContainer?.providerOutput;Gs(this.providerContainer),Gs(e),dm(),this.experimental.enableDebugTelemetry$.next(this.tuning.enableTelemetryAtStart),[this.experimental.enableDebugTelemetry$.subscribe(t=>cm(t)),this.providerContainer.current$.subscribe(({type:t})=>fr("provider",t)),e.duration$.subscribe(t=>fr("duration",t)),e.availableVideoTracks$.pipe(ae(t=>!!t.length),Ze()).subscribe(t=>fr("tracks",t)),this.events.fatalError$.subscribe(new re("fatalError")),this.events.managedError$.subscribe(new re("managedError")),e.position$.subscribe(new re("position")),e.currentVideoTrack$.pipe(C(t=>t?.quality)).subscribe(new re("quality")),this.info.currentBuffer$.subscribe(new re("buffer")),e.isBuffering$.subscribe(new re("isBuffering"))].forEach(t=>this.subscription.add(t)),fr("codecs",Nm())}initTracerSubscription(){let e=Fg(this.tracer.log.bind(this.tracer)),t=Fg(this.tracer.error.bind(this.tracer));this.subscription.add(this.info.playbackState$.subscribe(e("playbackState"))).add(this.info.isLooped$.subscribe(e("isLooped"))).add(this.info.currentPlaybackRate$.pipe(B()).subscribe(e("currentPlaybackRate"))).add(this.info.isAutoQualityEnabled$.subscribe(e("isAutoQualityEnabled"))).add(this.info.autoQualityLimits$.subscribe(e("autoQualityLimits"))).add(this.info.currentFormat$.subscribe(e("currentFormat"))).add(this.info.availableQualities$.subscribe(e("availableQualities"))).add(this.info.availableQualitiesFps$.subscribe(e("availableQualitiesFps"))).add(this.info.availableAudioTracks$.subscribe(e("availableAudioTracks"))).add(this.info.isAudioAvailable$.subscribe(e("isAudioAvailable"))).add(xt({currentQuality:this.info.currentQuality$,videoBitrate:this.info.videoBitrate$}).pipe(ae(({currentQuality:i,videoBitrate:a})=>!!i&&!!a),B((i,a)=>i.currentQuality===a.currentQuality)).subscribe(e("currentVideoTrack"))).add(this.info.currentVideoSegmentLength$.pipe(ae(i=>i>0),B()).subscribe(e("currentVideoSegmentLength"))).add(this.info.currentAudioSegmentLength$.pipe(ae(i=>i>0),B()).subscribe(e("currentAudioSegmentLength"))).add(this.info.hostname$.subscribe(e("hostname"))).add(this.info.currentTextTrack$.subscribe(e("currentTextTrack"))).add(this.info.availableTextTracks$.subscribe(e("availableTextTracks"))).add(this.info.autoQualityLimitingAvailable$.subscribe(e("autoQualityLimitingAvailable"))).add(xt({currentBuffer:this.info.currentBuffer$.pipe(ae(i=>i.end>0),B((i,a)=>i.end===a.end&&i.start===a.start)),position:this.info.position$.pipe(B())}).pipe(zu(1e3)).subscribe(e("currentBufferAndPosition"))).add(this.info.duration$.pipe(B()).subscribe(e("duration"))).add(this.info.isBuffering$.subscribe(e("isBuffering"))).add(this.info.isLive$.pipe(B()).subscribe(e("isLive"))).add(this.info.canChangePlaybackSpeed$.pipe(B()).subscribe(e("canChangePlaybackSpeed"))).add(xt({liveTime:this.info.liveTime$,liveBufferTime:this.info.liveBufferTime$,position:this.info.position$}).pipe(ae(({liveTime:i,liveBufferTime:a})=>!!i&&!!a),zu(1e3)).subscribe(e("liveBufferAndPosition"))).add(this.info.atLiveEdge$.pipe(B(),ae(i=>i===!0)).subscribe(e("atLiveEdge"))).add(this.info.atLiveDurationEdge$.pipe(B(),ae(i=>i===!0)).subscribe(e("atLiveDurationEdge"))).add(this.info.muted$.pipe(B()).subscribe(e("muted"))).add(this.info.volume$.pipe(B()).subscribe(e("volume"))).add(this.info.isEnded$.pipe(B(),ae(i=>i===!0)).subscribe(e("isEnded"))).add(this.info.availableSources$.subscribe(e("availableSources"))).add(xt({throughputEstimation:this.info.throughputEstimation$,rtt:this.info.rttEstimation$}).pipe(ae(({throughputEstimation:i,rtt:a})=>!!i&&!!a),zu(3e3)).subscribe(e("throughputEstimation"))).add(this.info.isStalled$.subscribe(e("isStalled"))).add(this.info.is3DVideo$.pipe(B(),ae(i=>i===!0)).subscribe(e("is3DVideo"))).add(this.info.surface$.subscribe(e("surface"))).add(this.events.ended$.subscribe(e("ended"))).add(this.events.looped$.subscribe(e("looped"))).add(this.events.managedError$.subscribe(t("managedError"))).add(this.events.fatalError$.subscribe(t("fatalError"))).add(this.events.firstBytes$.subscribe(e("firstBytes"))).add(this.events.firstFrame$.subscribe(e("firstFrame"))).add(this.events.canplay$.subscribe(e("canplay")))}initWakeLock(){if(!window.navigator.wakeLock||!this.tuning.enableWakeLock)return;let e,t=()=>{e?.release(),e=void 0},i=async()=>{t(),e=await window.navigator.wakeLock.request("screen").catch(a=>{a instanceof DOMException&&a.name==="NotAllowedError"||this.events.managedError$.next({id:"WakeLock",category:Ws.DOM,message:String(a)})})};this.subscription.add(Pt(Yu(document,"visibilitychange"),Yu(document,"fullscreenchange"),this.desiredState.playbackState.stateChangeEnded$).subscribe(()=>{let a=document.visibilityState==="visible",s=this.desiredState.playbackState.getState()==="playing",n=!!e&&!e?.released;a&&s?n||i():t()})).add(this.events.willDestruct$.subscribe(t))}setVideoTrackIdByQuality(e,t){let i=e.find(a=>a.quality===t);this.tracer.log("setVideoTrackIdByQuality",At({quality:t,availableTracks:At(e),track:At(i),isAutoQuality:!i})),i?this.desiredState.videoTrack.startTransitionTo(i):this.setAutoQuality(!0)}getActiveLiveDelay(e=!1){return e?this.tuning.live.lowLatencyActiveLiveDelay:this.tuning.live.activeLiveDelay}};import{Subscription as Bj,Observable as Oj,Subject as Vj,ValueSubject as _j,VideoQuality as Nj}from"@vkontakte/videoplayer-shared";var Fj=`@vkontakte/videoplayer-core@${Xu}`;export{Ia as ChromecastState,Ks as HttpConnectionType,Oj as Observable,se as PlaybackState,Ys as Player,Fj as SDK_VERSION,Vj as Subject,Bj as Subscription,Js as Surface,Xu as VERSION,_j as ValueSubject,mt as VideoFormat,Nj as VideoQuality};
113
+ `),i=[],a=[];for(let s=0;s<t.length;s++){let n=t[s],o=n.match(/^#EXT-X-STREAM-INF:(.+)/),l=n.match(/^#EXT-X-MEDIA:TYPE=SUBTITLES,(.+)/);if(!(!o&&!l)){if(o){let u=(0,Vu.default)(o[1].split(",").map(g=>g.split("="))),d=u.QUALITY??`stream-${u.BANDWIDTH}`,c=Ew(u),p;u.BANDWIDTH&&(p=parseInt(u.BANDWIDTH,10)/1e3||void 0),!p&&u["AVERAGE-BANDWIDTH"]&&(p=parseInt(u["AVERAGE-BANDWIDTH"],10)/1e3||void 0);let h=u["FRAME-RATE"]?parseFloat(u["FRAME-RATE"]):void 0,m;if(u.RESOLUTION){let[g,y]=u.RESOLUTION.split("x").map(A=>parseInt(A,10));g&&y&&(m={width:g,height:y})}let b=new URL(t[++s],e).toString();c&&i.push({id:d,quality:c,url:b,bandwidth:p,size:m,fps:h})}if(l){let u=(0,Vu.default)(l[1].split(",").map(h=>h.split("=")).map(([h,m])=>[h,m.replace(/^"|"$/g,"")])),d=u.URI?.replace(/playlist$/,"subtitles.vtt"),c=u.LANGUAGE,p=u.NAME;d&&c&&a.push({type:"internal",id:c,label:p,language:c,url:d,isAuto:!1})}}}if(!i.length)throw new Error("Empty manifest");return{qualityManifests:i,textTracks:a}},Pw=r=>new Promise(e=>{setTimeout(()=>{e()},r)}),Ou=0,tg=async(r,e=r,t)=>{let a=await(await ut(r)).text();Ou+=1;try{let{qualityManifests:s,textTracks:n}=xw(a,e);return{qualityManifests:s,textTracks:n}}catch{if(Ou<=t.manifestRetryMaxCount)return await Pw(Iw(Ou-1,{start:t.manifestRetryInterval,max:t.manifestRetryMaxInterval})),tg(r,e,t)}return{qualityManifests:[],textTracks:[]}},Vs=tg;var oa=class{constructor(e){this.subscription=new Cw;this.videoState=new L("stopped");this.textTracksManager=null;this.manifests$=new _u([]);this.liveOffset=new nt;this.manifestStartTime$=new _u(void 0);this.syncPlayback=()=>{if(!this.manifests$.getValue().length)return;let t=this.videoState.getState(),i=this.params.desiredState.playbackState.getState(),a=this.params.desiredState.playbackState.getTransition(),s=this.params.desiredState.videoTrack.getTransition(),n=this.params.desiredState.autoVideoTrackSwitching.getTransition(),o=this.params.desiredState.autoVideoTrackLimits.getTransition();if(i==="stopped"){t!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.video.removeAttribute("src"),this.video.load(),this.params.output.position$.next(0),this.params.output.duration$.next(1/0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.videoState.setState("stopped"),E(this.params.desiredState.playbackState,"stopped",!0));return}if(this.videoState.getTransition())return;let u=this.params.desiredState.seekState.getState();if(t==="stopped"){this.videoState.startTransitionTo("ready"),this.prepare();return}if(s||n||o){let d=this.videoState.getState();this.videoState.setState("changing_manifest"),this.videoState.startTransitionTo(d),this.prepare(),o&&this.params.output.autoVideoTrackLimits$.next(o.to),u.state==="none"&&this.params.desiredState.seekState.setState({state:"requested",position:-this.liveOffset.getTotalOffset(),forcePrecise:!0});return}if(a?.to!=="paused"&&u.state==="requested"){this.videoState.startTransitionTo("ready"),this.seek(u.position-this.liveOffset.getTotalPausedTime()),this.prepare();return}switch(t){case"ready":i==="ready"?E(this.params.desiredState.playbackState,"ready"):i==="paused"?(this.videoState.setState("paused"),this.liveOffset.pause(),E(this.params.desiredState.playbackState,"paused")):i==="playing"&&(this.videoState.startTransitionTo("playing"),this.playIfAllowed());return;case"playing":i==="paused"?(this.videoState.startTransitionTo("paused"),this.liveOffset.pause(),this.video.paused?this.videoState.setState("paused"):this.video.pause()):a?.to==="playing"&&E(this.params.desiredState.playbackState,"playing");return;case"paused":if(i==="playing")if(this.videoState.startTransitionTo("playing"),this.liveOffset.getTotalPausedTime()<this.params.config.maxPausedTime&&this.liveOffset.getTotalOffset()<this.maxSeekBackTime$.getValue())this.liveOffset.resume(),this.playIfAllowed(),this.params.output.position$.next(-this.liveOffset.getTotalOffset()/1e3);else{let d=this.liveOffset.getTotalOffset();d>=this.maxSeekBackTime$.getValue()&&(d=0,this.liveOffset.resetTo(d)),this.liveOffset.resume(),this.params.output.position$.next(-d/1e3),this.prepare()}else a?.to==="paused"&&(E(this.params.desiredState.playbackState,"paused"),this.liveOffset.pause());return;case"changing_manifest":break;default:return Aw(t)}};this.params=e,this.video=oe(e.container,e.tuning),this.params.output.element$.next(this.video),this.params.tuning.usingVkPlayerUi||(this.textTracksManager=new we),this.masterManifest={id:"master",quality:Dw.INVARIANT,url:this.params.source.url},Vs(X(this.params.source.url),this.params.source.url,{manifestRetryInterval:this.params.tuning.manifestRetryInterval,manifestRetryMaxInterval:this.params.tuning.manifestRetryMaxInterval,manifestRetryMaxCount:this.params.tuning.manifestRetryMaxCount}).then(({qualityManifests:t})=>{t.length===0&&this.params.output.error$.next({id:"HlsLiveProviderInternal:empty_manifest",category:_s.WTF,message:"HlsLiveProvider: there are no qualities in manifest"}),this.manifests$.next([this.masterManifest,...t])},t=>this.params.output.error$.next({id:"ExtractHlsQualities",category:_s.NETWORK,message:"Error fetching manifest and extracting qualities",thrown:t})),this.params.output.isLive$.next(!0),this.params.output.canChangePlaybackSpeed$.next(!1),this.params.output.availableVideoTracks$.next([]),this.params.output.availableAudioTracks$.next([]),this.params.output.isAudioAvailable$.next(!0),this.params.output.hostname$.next(z(this.params.source.url)),this.params.output.availableTextTracks$.next([]),this.params.desiredState.internalTextTracks.setState([]),this.maxSeekBackTime$=new _u(e.source.maxSeekBackTime??1/0),this.subscribe()}selectManifest(){let{autoVideoTrackSwitching:e,videoTrack:t}=this.params.desiredState,i=e.getState(),a=t.getTransition(),s=a?.to?.id??t.getState()?.id??"master",n=this.manifests$.getValue();if(!n.length)return;let o=i?"master":s;return i&&!a&&t.startTransitionTo(this.masterManifest),n.find(l=>l.id===o)}subscribe(){let{output:e,desiredState:t}=this.params,i=o=>{e.error$.next({id:"HlsLiveProvider",category:_s.WTF,message:"HlsLiveProvider internal logic error",thrown:o})},a=ce(this.video),s=(o,l)=>this.subscription.add(o.subscribe(l,i));s(a.ended$,e.endedEvent$),s(a.error$,e.error$),s(a.isBuffering$,e.isBuffering$),s(a.currentBuffer$,e.currentBuffer$),s(a.loadedMetadata$,e.firstBytesEvent$),s(a.loadedMetadata$,e.loadedMetadataEvent$),s(a.playing$,e.firstFrameEvent$),s(a.canplay$,e.canplay$),s(a.inPiP$,e.inPiP$),s(a.inFullscreen$,e.inFullscreen$),this.subscription.add(t.isLooped.stateChangeStarted$.subscribe(()=>t.isLooped.setState(!1),i)),this.subscription.add(le(this.video,t.volume,a.volumeState$,i)),this.subscription.add(a.volumeState$.subscribe(this.params.output.volume$,i)),this.subscription.add(ke(this.video,t.playbackRate,a.playbackRateState$,i)),s($e(this.video),e.elementVisible$),this.textTracksManager?.connect(this.video,t,e),this.subscription.add(a.playing$.subscribe(()=>{this.videoState.setState("playing"),E(t.playbackState,"playing")},i)).add(a.pause$.subscribe(()=>{this.videoState.setState("paused"),E(t.playbackState,"paused")},i)).add(a.canplay$.subscribe(()=>{this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.videoState.getState()==="playing"&&this.playIfAllowed()},i)),this.subscription.add(this.maxSeekBackTime$.pipe($w(),rg(o=>-o/1e3)).subscribe(this.params.output.duration$,i)),this.subscription.add(a.loadedMetadata$.subscribe(()=>{let o=this.params.desiredState.seekState.getState(),l=this.videoState.getTransition(),u=this.params.desiredState.videoTrack.getTransition(),d=this.params.desiredState.autoVideoTrackSwitching.getTransition();if(u&&ig(u.to)){let c=u.to.id;this.params.desiredState.videoTrack.setState(u.to);let p=this.manifests$.getValue().find(h=>h.id===c);p&&(this.params.output.currentVideoTrack$.next(p),this.params.output.hostname$.next(z(p.url)))}d&&this.params.desiredState.autoVideoTrackSwitching.setState(d.to),l&&l.from==="changing_manifest"&&this.videoState.setState(l.to),o&&o.state==="requested"&&this.seek(o.position)},i)),this.subscription.add(a.loadedData$.subscribe(()=>{let o=this.video?.getStartDate?.()?.getTime();this.manifestStartTime$.next(o||void 0)},i)),this.subscription.add(kw({startTime:this.manifestStartTime$.pipe(Rw(ig)),currentTime:a.timeUpdate$}).subscribe(({startTime:o,currentTime:l})=>this.params.output.liveTime$.next(o+l*1e3),i)),this.subscription.add(this.manifests$.pipe(rg(o=>o.map(({id:l,quality:u,size:d,bandwidth:c,fps:p})=>({id:l,quality:u,size:d,fps:p,bitrate:c})))).subscribe(this.params.output.availableVideoTracks$,i));let n=Lw(t.playbackState.stateChangeStarted$,t.seekState.stateChangeEnded$,t.videoTrack.stateChangeStarted$,t.autoVideoTrackSwitching.stateChangeStarted$,t.autoVideoTrackLimits.stateChangeStarted$,this.videoState.stateChangeEnded$,this.manifests$,Mw(["init"])).pipe(ww(0));this.subscription.add(n.subscribe(this.syncPlayback,i))}destroy(){this.subscription.unsubscribe(),this.textTracksManager?.destroy(),this.params.output.element$.next(void 0),ue(this.video)}prepare(){let e=this.selectManifest();if(Ns(e))return;let t=this.params.desiredState.autoVideoTrackLimits.getTransition(),i=this.params.desiredState.autoVideoTrackLimits.getState(),a=new URL(e.url);if((t||i)&&e.id===this.masterManifest.id){let{max:o,min:l}=t?.to??i??{};for(let[u,d]of[[o,"mq"],[l,"lq"]]){let c=String(parseFloat(u||""));d&&u&&a.searchParams.set(d,c)}}let s=this.params.format==="HLS_LIVE_CMAF"?2:0,n=X(a.toString(),this.liveOffset.getTotalOffset(),s);this.video.setAttribute("src",n),this.video.load(),Bu(n).then(o=>{if(!Ns(o))this.maxSeekBackTime$.next(o);else{let l=this.params.source.maxSeekBackTime??this.maxSeekBackTime$.getValue();if(Ns(l)||!isFinite(l))try{ut(n).then(u=>u.text()).then(u=>{let d=/#EXT-X-STREAM-INF[^\n]+\n(.+)/m.exec(u)?.[1];if(d){let c=new URL(d,n).toString();Bu(c).then(p=>{Ns(p)||this.maxSeekBackTime$.next(p)})}})}catch{}}})}playIfAllowed(){de(this.video,()=>{this.params.output.soundProhibitedEvent$.next()}).then(e=>{e||(this.videoState.setState("paused"),this.liveOffset.pause(),E(this.params.desiredState.playbackState,"paused",!0))},e=>this.params.output.error$.next({id:"ForcePlay",message:"play() failed even with workarounds",category:_s.DOM,thrown:e}))}seek(e){this.params.output.willSeekEvent$.next();let t=-e,i=t<this.maxSeekBackTime$.getValue()?t:0;this.liveOffset.resetTo(i),this.params.output.position$.next(-i/1e3),this.params.output.seekedEvent$.next()}};import{assertNever as Bw,debounce as Ow,ErrorCategory as Nu,fromEvent as Fu,isNonNullable as Vw,isNullable as _w,map as ag,merge as sg,observableFrom as ng,Subscription as Nw,ValueSubject as Fw,VideoQuality as qw,clientChecker as Uw}from"@vkontakte/videoplayer-shared";var ua=class{constructor(e){this.subscription=new Nw;this.videoState=new L("stopped");this.textTracksManager=null;this.manifests$=new Fw([]);this.syncPlayback=()=>{if(!this.manifests$.getValue().length)return;let t=this.videoState.getState(),i=this.params.desiredState.playbackState.getState(),a=this.params.desiredState.playbackState.getTransition(),s=this.params.desiredState.videoTrack.getTransition(),n=this.params.desiredState.autoVideoTrackSwitching.getTransition(),o=this.params.desiredState.autoVideoTrackLimits.getTransition();if(i==="stopped"){t!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.video.removeAttribute("src"),this.video.load(),this.params.output.position$.next(0),this.params.output.duration$.next(1/0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.videoState.setState("stopped"),E(this.params.desiredState.playbackState,"stopped",!0));return}if(this.videoState.getTransition())return;let u=this.params.desiredState.seekState.getState();if(t==="stopped"){this.videoState.startTransitionTo("ready"),this.prepare();return}if(s||n||o){let d=this.videoState.getState();this.videoState.setState("changing_manifest"),this.videoState.startTransitionTo(d);let{currentTime:c}=this.video;this.prepare(),o&&this.params.output.autoVideoTrackLimits$.next(o.to),u.state==="none"&&this.params.desiredState.seekState.setState({state:"requested",position:c*1e3,forcePrecise:!0});return}switch(a?.to!=="paused"&&u.state==="requested"&&this.seek(u.position),t){case"ready":i==="ready"?E(this.params.desiredState.playbackState,"ready"):i==="paused"?(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused")):i==="playing"&&(this.videoState.startTransitionTo("playing"),this.playIfAllowed());return;case"playing":i==="paused"?(this.videoState.startTransitionTo("paused"),this.video.paused?this.videoState.setState("paused"):this.video.pause()):a?.to==="playing"&&E(this.params.desiredState.playbackState,"playing");return;case"paused":i==="playing"?(this.videoState.startTransitionTo("playing"),this.playIfAllowed()):a?.to==="paused"&&E(this.params.desiredState.playbackState,"paused");return;case"changing_manifest":break;default:return Bw(t)}};this.params=e,this.video=oe(e.container,e.tuning),this.params.output.element$.next(this.video),this.params.tuning.usingVkPlayerUi||(this.textTracksManager=new we),this.masterManifest={id:"master",quality:qw.INVARIANT,url:this.params.source.url},this.params.output.isLive$.next(!1),this.params.output.availableVideoTracks$.next([]),this.params.output.availableAudioTracks$.next([]),this.params.output.isAudioAvailable$.next(!0),this.params.output.hostname$.next(z(this.params.source.url)),this.params.output.autoVideoTrackLimitingAvailable$.next(!0),Vs(X(this.params.source.url),this.params.source.url,{manifestRetryInterval:this.params.tuning.manifestRetryInterval,manifestRetryMaxInterval:this.params.tuning.manifestRetryMaxInterval,manifestRetryMaxCount:this.params.tuning.manifestRetryMaxCount}).then(({qualityManifests:t,textTracks:i})=>{this.manifests$.next([this.masterManifest,...t]),this.params.tuning.useNativeHLSTextTracks||this.params.desiredState.internalTextTracks.startTransitionTo(i)},t=>this.params.output.error$.next({id:"ExtractHlsQualities",category:Nu.NETWORK,message:"Error fetching manifest and extracting qualities",thrown:t})),this.subscribe()}selectManifest(){let{autoVideoTrackSwitching:e,videoTrack:t}=this.params.desiredState,i=e.getState(),a=t.getTransition(),s=a?.to?.id??t.getState()?.id??"master",n=this.manifests$.getValue();if(!n.length)return;let o=i?"master":s;return i&&!a&&t.startTransitionTo(this.masterManifest),n.find(l=>l.id===o)}subscribe(){let{output:e,desiredState:t}=this.params,i=o=>{e.error$.next({id:"HlsProvider",category:Nu.WTF,message:"HlsProvider internal logic error",thrown:o})},a=ce(this.video),s=(o,l)=>this.subscription.add(o.subscribe(l));if(s(a.timeUpdate$,e.position$),s(a.durationChange$,e.duration$),s(a.ended$,e.endedEvent$),s(a.looped$,e.loopedEvent$),s(a.error$,e.error$),s(a.isBuffering$,e.isBuffering$),s(a.currentBuffer$,e.currentBuffer$),s(a.loadedMetadata$,e.firstBytesEvent$),s(a.loadedMetadata$,e.loadedMetadataEvent$),s(a.playing$,e.firstFrameEvent$),s(a.canplay$,e.canplay$),s(a.seeked$,e.seekedEvent$),s(a.inPiP$,e.inPiP$),s(a.inFullscreen$,e.inFullscreen$),s(this.videoState.stateChangeEnded$.pipe(ag(o=>o.to)),this.params.output.playbackState$),this.subscription.add(Ke(this.video,t.isLooped,i)),this.subscription.add(le(this.video,t.volume,a.volumeState$,i)),this.subscription.add(a.volumeState$.subscribe(this.params.output.volume$,i)),this.subscription.add(ke(this.video,t.playbackRate,a.playbackRateState$,i)),this.textTracksManager?.connect(this.video,t,e),this.subscription.add(a.playing$.subscribe(()=>{this.videoState.setState("playing"),E(t.playbackState,"playing")},i)).add(a.pause$.subscribe(()=>{this.videoState.setState("paused"),E(t.playbackState,"paused")},i)).add(a.canplay$.subscribe(()=>{this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.videoState.getState()==="playing"&&this.playIfAllowed()},i).add(a.loadedMetadata$.subscribe(()=>{let o=this.params.desiredState.seekState.getState(),l=this.videoState.getTransition(),u=this.params.desiredState.videoTrack.getTransition(),d=this.params.desiredState.autoVideoTrackSwitching.getTransition();if(u&&Vw(u.to)){let c=u.to.id;this.params.desiredState.videoTrack.setState(u.to);let p=this.manifests$.getValue().find(h=>h.id===c);if(p){this.params.output.currentVideoTrack$.next(p),this.params.output.hostname$.next(z(p.url));let h=this.params.desiredState.playbackRate.getState(),m=this.params.output.element$.getValue()?.playbackRate;if(h!==m){let b=this.params.output.element$.getValue();b&&(this.params.desiredState.playbackRate.setState(h),b.playbackRate=h)}}}d&&this.params.desiredState.autoVideoTrackSwitching.setState(d.to),l&&l.from==="changing_manifest"&&this.videoState.setState(l.to),o.state==="requested"&&this.seek(o.position)},i))),this.subscription.add(this.manifests$.pipe(ag(o=>o.map(({id:l,quality:u,size:d,bandwidth:c,fps:p})=>({id:l,quality:u,size:d,fps:p,bitrate:c})))).subscribe(this.params.output.availableVideoTracks$,i)),!Uw.isIOS||!this.params.tuning.useNativeHLSTextTracks){let{textTracks:o}=this.video;this.subscription.add(sg(Fu(o,"addtrack"),Fu(o,"removetrack"),Fu(o,"change"),ng(["init"])).subscribe(()=>{for(let l=0;l<o.length;l++)o[l].mode="hidden"},i))}let n=sg(t.playbackState.stateChangeStarted$,t.seekState.stateChangeEnded$,t.videoTrack.stateChangeStarted$,t.autoVideoTrackSwitching.stateChangeStarted$,t.autoVideoTrackLimits.stateChangeStarted$,this.videoState.stateChangeEnded$,this.manifests$,ng(["init"])).pipe(Ow(0));this.subscription.add(n.subscribe(this.syncPlayback,i))}destroy(){this.subscription.unsubscribe(),this.textTracksManager?.destroy(),this.params.output.element$.next(void 0),ue(this.video)}prepare(){let e=this.selectManifest();if(_w(e))return;let t=this.params.desiredState.autoVideoTrackLimits.getTransition(),i=this.params.desiredState.autoVideoTrackLimits.getState(),a=new URL(e.url);if((t||i)&&e.id===this.masterManifest.id){let{max:s,min:n}=t?.to??i??{};for(let[o,l]of[[s,"mq"],[n,"lq"]]){let u=String(parseFloat(o||""));l&&o&&a.searchParams.set(l,u)}}this.video.setAttribute("src",a.toString()),this.video.load()}playIfAllowed(){de(this.video,()=>{this.params.output.soundProhibitedEvent$.next()}).then(e=>{e||(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused",!0))},e=>this.params.output.error$.next({id:"ForcePlay",message:"play() failed even with workarounds",category:Nu.DOM,thrown:e}))}seek(e){this.params.output.willSeekEvent$.next(),this.video.currentTime=e/1e3}};import{assertNever as Hw,assertNonNullable as og,debounce as jw,ErrorCategory as ug,isHigher as Gw,isHigherOrEqual as Ww,isInvariantQuality as lg,isLowerOrEqual as Qw,isNonNullable as Yw,merge as zw,observableFrom as Kw,Subscription as Jw,map as Xw}from"@vkontakte/videoplayer-shared";var la=class{constructor(e){this.subscription=new Jw;this.videoState=new L("stopped");this.trackUrls={};this.textTracksManager=new we;this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.params.desiredState.playbackState.getState(),i=this.params.desiredState.playbackState.getTransition();if(t==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.video.removeAttribute("src"),this.video.load(),this.params.output.position$.next(0),this.params.output.duration$.next(1/0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.videoState.setState("stopped"),E(this.params.desiredState.playbackState,"stopped",!0));return}if(this.videoState.getTransition())return;let s=this.params.desiredState.autoVideoTrackLimits.getTransition(),n=this.params.desiredState.videoTrack.getTransition(),o=this.params.desiredState.seekState.getState();if(s&&e!=="ready"&&!n){this.handleQualityLimitTransition(s.to.max);return}if(e==="stopped"){this.videoState.startTransitionTo("ready"),this.prepare();return}if(n){let{currentTime:l}=this.video;this.prepare(),o.state==="none"&&this.params.desiredState.seekState.setState({state:"requested",position:l*1e3,forcePrecise:!0}),n.to&&this.params.desiredState.autoVideoTrackLimits.getState()?.max!==this.trackUrls[n.to.id]?.track?.quality&&this.params.output.autoVideoTrackLimits$.next({max:void 0});return}switch(i?.to!=="paused"&&o.state==="requested"&&this.seek(o.position),e){case"ready":t==="ready"?E(this.params.desiredState.playbackState,"ready"):t==="paused"?(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused")):t==="playing"&&(this.videoState.startTransitionTo("playing"),this.playIfAllowed());return;case"playing":t==="paused"?(this.videoState.startTransitionTo("paused"),this.video.paused?this.videoState.setState("paused"):this.video.pause()):i?.to==="playing"&&E(this.params.desiredState.playbackState,"playing");return;case"paused":t==="playing"?(this.videoState.startTransitionTo("playing"),this.playIfAllowed()):i?.to==="paused"&&E(this.params.desiredState.playbackState,"paused");return;default:return Hw(e)}};this.params=e,this.video=oe(e.container,e.tuning),this.params.output.element$.next(this.video),Object.entries(this.params.source).reverse().forEach(([t,i],a)=>{let s=a.toString(10);this.trackUrls[s]={track:{quality:t,id:s},url:i}}),this.params.output.isLive$.next(!1),this.params.output.availableVideoTracks$.next(Object.values(this.trackUrls).map(({track:t})=>t)),this.params.output.availableAudioTracks$.next([]),this.params.output.isAudioAvailable$.next(!0),this.params.desiredState.autoVideoTrackSwitching.setState(!1),this.params.output.autoVideoTrackLimitingAvailable$.next(!0),this.subscribe()}subscribe(){let{output:e,desiredState:t}=this.params,i=o=>{e.error$.next({id:"MpegProvider",category:ug.WTF,message:"MpegProvider internal logic error",thrown:o})},a=ce(this.video),s=(o,l)=>this.subscription.add(o.subscribe(l,i));s(a.timeUpdate$,e.position$),s(a.durationChange$,e.duration$),s(a.ended$,e.endedEvent$),s(a.looped$,e.loopedEvent$),s(a.error$,e.error$),s(a.isBuffering$,e.isBuffering$),s(a.currentBuffer$,e.currentBuffer$),s(a.loadedMetadata$,e.firstBytesEvent$),s(a.loadedMetadata$,e.loadedMetadataEvent$),s(a.playing$,e.firstFrameEvent$),s(a.canplay$,e.canplay$),s(a.seeked$,e.seekedEvent$),s(a.inPiP$,e.inPiP$),s(a.inFullscreen$,e.inFullscreen$),s(this.videoState.stateChangeEnded$.pipe(Xw(o=>o.to)),this.params.output.playbackState$),this.subscription.add(Ke(this.video,t.isLooped,i)),this.subscription.add(le(this.video,t.volume,a.volumeState$,i)),this.subscription.add(a.volumeState$.subscribe(this.params.output.volume$,i)),this.subscription.add(ke(this.video,t.playbackRate,a.playbackRateState$,i)),s($e(this.video),e.elementVisible$),this.subscription.add(a.playing$.subscribe(()=>{this.videoState.setState("playing"),E(t.playbackState,"playing")},i)).add(a.pause$.subscribe(()=>{this.videoState.setState("paused"),E(t.playbackState,"paused")},i)).add(a.canplay$.subscribe(()=>{this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready");let o=this.params.desiredState.videoTrack.getTransition();if(o&&Yw(o.to)){this.params.desiredState.videoTrack.setState(o.to),this.params.output.currentVideoTrack$.next(this.trackUrls[o.to.id].track);let l=this.params.desiredState.playbackRate.getState(),u=this.params.output.element$.getValue()?.playbackRate;if(l!==u){let d=this.params.output.element$.getValue();d&&(this.params.desiredState.playbackRate.setState(l),d.playbackRate=l)}}this.videoState.getState()==="playing"&&this.playIfAllowed()},i)),this.textTracksManager.connect(this.video,t,e);let n=zw(t.playbackState.stateChangeStarted$,t.videoTrack.stateChangeStarted$,t.seekState.stateChangeEnded$,t.autoVideoTrackLimits.stateChangeStarted$,this.videoState.stateChangeEnded$,Kw(["init"])).pipe(jw(0));this.subscription.add(n.subscribe(this.syncPlayback,i))}destroy(){this.subscription.unsubscribe(),this.textTracksManager.destroy(),this.trackUrls={},this.params.output.element$.next(void 0),ue(this.video)}prepare(){let e=this.params.desiredState.videoTrack.getState()?.id;og(e,"MpegProvider: track is not selected");let{url:t}=this.trackUrls[e];og(t,`MpegProvider: No url for ${e}`),this.params.tuning.requestQuick&&(t=Kr(t)),this.video.setAttribute("src",t),this.video.load(),this.params.output.hostname$.next(z(t))}playIfAllowed(){de(this.video,()=>{this.params.output.soundProhibitedEvent$.next()}).then(e=>{e||(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused",!0))},e=>this.params.output.error$.next({id:"ForcePlay",message:"play() failed even with workarounds",category:ug.DOM,thrown:e}))}seek(e){this.params.output.willSeekEvent$.next(),this.video.currentTime=e/1e3}handleQualityLimitTransition(e){let t,i=e;if(e&&this.params.output.currentVideoTrack$.getValue()?.quality!==e){let a=Object.values(this.trackUrls).find(o=>!lg(o.track.quality)&&Qw(o.track.quality,e))?.track,s=this.params.desiredState.videoTrack.getState()?.id,n=this.trackUrls[s??"0"]?.track;if(a&&n&&Ww(n.quality,a.quality)&&(t=a),!t){let o=Object.values(this.trackUrls).filter(u=>!lg(u.track.quality)&&Gw(u.track.quality,e)),l=o.length;l&&(t=o[l-1].track)}t&&(i=t.quality)}else if(!e){let a=Object.values(this.trackUrls).map(s=>s.track);t=Tt(a,{container:{width:this.video.offsetWidth,height:this.video.offsetHeight},throughput:this.params.dependencies.throughputEstimator.throughput$.getValue(),tuning:this.params.tuning.autoTrackSelection,forwardBufferHealth:0,abrLogger:this.params.dependencies.abrLogger})}t&&(this.params.output.currentVideoTrack$.next(t),this.params.desiredState.videoTrack.startTransitionTo(t)),this.params.output.autoVideoTrackLimits$.next({max:i})}};import{assertNever as dg,debounce as iR,merge as pg,observableFrom as rR,Subscription as aR,map as hg,ValueSubject as sR,ErrorCategory as Uu,VideoQuality as nR}from"@vkontakte/videoplayer-shared";import{ErrorCategory as Zw}from"@vkontakte/videoplayer-shared";var cg=["stun:videostun.mycdn.me:80"],eR=1e3,tR=3,qu=()=>null,Fs=class{constructor(e,t){this.ws=null;this.peerConnection=null;this.serverUrl="";this.streamKey="";this.stream=null;this.signalingType="JOIN";this.retryCount=0;this.externalStartCallback=qu;this.externalStopCallback=qu;this.externalErrorCallback=qu;this.options=this.normalizeOptions(t);let i=e.split("/");this.serverUrl=i.slice(0,i.length-1).join("/"),this.streamKey=i[i.length-1]}onStart(e){try{this.externalStartCallback=e}catch(t){this.handleSystemError(t)}}onStop(e){try{this.externalStopCallback=e}catch(t){this.handleSystemError(t)}}onError(e){try{this.externalErrorCallback=e}catch(t){this.handleSystemError(t)}}connect(){this.connectWS()}disconnect(){try{this.externalStopCallback(),this.closeConnections()}catch(e){this.handleSystemError(e)}}connectWS(){this.ws||(this.ws=new WebSocket(this.serverUrl),this.ws.onopen=this.onSocketOpen.bind(this),this.ws.onmessage=this.onSocketMessage.bind(this),this.ws.onclose=this.onSocketClose.bind(this),this.ws.onerror=this.onSocketError.bind(this))}onSocketOpen(){this.handleLogin()}onSocketClose(e){try{if(!this.ws)return;this.ws=null,e.code>1e3?(this.retryCount++,this.retryCount>this.options.maxRetryNumber?this.handleNetworkError():this.scheduleRetry()):this.externalStopCallback()}catch(t){this.handleRTCError(t)}}onSocketError(e){try{this.externalErrorCallback(new Error(e.toString()))}catch(t){this.handleRTCError(t)}}onSocketMessage(e){try{let t=this.parseMessage(e.data);switch(t.type){case"JOIN":case"CALL_JOIN":this.handleJoinMessage(t);break;case"UPDATE":this.handleUpdateMessage(t);break;case"STATUS":this.handleStatusMessage(t);break}}catch(t){this.handleRTCError(t)}}handleJoinMessage(e){switch(e.inviteType){case"ANSWER":this.handleAnswer(e.sdp);break;case"CANDIDATE":this.handleCandidate(e.candidate);break}}handleStatusMessage(e){switch(e.status){case"UNPUBLISHED":this.handleUnpublished();break}}async handleUpdateMessage(e){try{let t=await this.createOffer();this.peerConnection&&await this.peerConnection.setLocalDescription(t),this.handleAnswer(e.sdp)}catch(t){this.handleRTCError(t)}}async handleLogin(){try{let e={iceServers:[{urls:cg}]};this.peerConnection=new RTCPeerConnection(e),this.peerConnection.ontrack=this.onPeerConnectionStream.bind(this),this.peerConnection.onicecandidate=this.onPeerConnectionIceCandidate.bind(this),this.peerConnection.oniceconnectionstatechange=this.onPeerConnectionIceConnectionStateChange.bind(this);let t=await this.createOffer();await this.peerConnection.setLocalDescription(t),this.send({type:this.signalingType,inviteType:"OFFER",streamKey:this.streamKey,sdp:t.sdp,callSupport:!1})}catch(e){this.handleRTCError(e)}}async handleAnswer(e){try{this.peerConnection&&await this.peerConnection.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e}))}catch(t){this.handleRTCError(t)}}async handleCandidate(e){if(e)try{this.peerConnection&&await this.peerConnection.addIceCandidate(e)}catch(t){this.handleRTCError(t)}}handleUnpublished(){try{this.closeConnections(),this.externalStopCallback()}catch(e){this.handleRTCError(e)}}handleSystemError(e){this.options.errorChanel&&this.options.errorChanel.next({id:"webrtc-provider-error",category:Zw.WTF,message:e.message})}async onPeerConnectionStream(e){let t=e.streams[0];this.stream&&this.stream.id===t.id||(this.stream=t,this.externalStartCallback(this.stream))}onPeerConnectionIceCandidate(e){e.candidate&&this.send({type:this.signalingType,inviteType:"CANDIDATE",candidate:e.candidate})}onPeerConnectionIceConnectionStateChange(){if(this.peerConnection){let e=this.peerConnection.iceConnectionState;["failed","closed"].indexOf(e)>-1&&(this.retryCount++,this.retryCount>this.options.maxRetryNumber?this.handleNetworkError():(this.closeConnections(),this.scheduleRetry()))}}async createOffer(){let e={offerToReceiveAudio:!0,offerToReceiveVideo:!0,voiceActivityDetection:!1};if(!this.peerConnection)throw new Error("Can not create offer - no peer connection instance ");let t=await this.peerConnection.createOffer(e),i=t.sdp||"";if(!/^a=rtpmap:\d+ H264\/\d+$/m.test(i))throw new Error("No h264 codec support error");return t}handleRTCError(e){try{this.externalErrorCallback(e||new Error("RTC connection error"))}catch(t){this.handleSystemError(t)}}handleNetworkError(){try{this.externalErrorCallback(new Error("Network error"))}catch(e){this.handleSystemError(e)}}send(e){this.ws&&this.ws.send(JSON.stringify(e))}parseMessage(e){try{return JSON.parse(e)}catch{throw new Error("Can not parse socket message")}}closeConnections(){let e=this.ws;e&&(this.ws=null,e.close(1e3)),this.removePeerConnection()}removePeerConnection(){let e=this.peerConnection;e&&(this.peerConnection=null,e.close(),e.ontrack=null,e.onicecandidate=null,e.oniceconnectionstatechange=null,e=null)}scheduleRetry(){this.retryTimeout=setTimeout(this.connectWS.bind(this),eR)}normalizeOptions(e={}){let t={stunServerList:cg,maxRetryNumber:tR,errorChanel:null};return e.stunServerList&&(t.stunServerList=e.stunServerList),e.maxRetryNumber&&e.maxRetryNumber>0&&(t.maxRetryNumber=e.maxRetryNumber),t}};var ca=class{constructor(e){this.videoState=new L("stopped");this.maxSeekBackTime$=new sR(0);this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.params.desiredState.playbackState.getState(),i=this.params.desiredState.playbackState.getTransition();if(t==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.video.pause(),this.video.srcObject=null,this.params.output.position$.next(0),this.params.output.duration$.next(0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.videoState.setState("stopped"),E(this.params.desiredState.playbackState,"stopped",!0));return}if(this.videoState.getTransition())return;let s=this.params.desiredState.videoTrack.getTransition();if(e==="stopped"){this.videoState.startTransitionTo("ready"),this.prepare();return}if(s){this.prepare();return}switch(e){case"ready":t==="paused"?(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused")):t==="playing"&&(this.videoState.startTransitionTo("playing"),this.playIfAllowed());return;case"playing":t==="paused"?(this.videoState.startTransitionTo("paused"),this.video.paused?this.videoState.setState("paused"):this.video.pause()):i?.to==="playing"&&E(this.params.desiredState.playbackState,"playing");return;case"paused":t==="playing"?(this.videoState.startTransitionTo("playing"),this.playIfAllowed()):i?.to==="paused"&&E(this.params.desiredState.playbackState,"paused");return;default:return dg(e)}};this.subscription=new aR,this.params=e,this.log=this.params.dependencies.logger.createComponentLog("WebRTCLiveProvider"),this.video=oe(e.container,e.tuning),this.liveStreamClient=new Fs(this.params.source.url,{maxRetryNumber:this.params.tuning.webrtc.connectionRetryMaxNumber,errorChanel:this.params.output.error$}),this.liveStreamClient.onStart(this.onLiveStreamStart.bind(this)),this.liveStreamClient.onStop(this.onLiveStreamStop.bind(this)),this.liveStreamClient.onError(this.onLiveStreamError.bind(this)),this.params.output.availableTextTracks$.next([]),this.params.desiredState.internalTextTracks.setState([]),this.subscribe()}destroy(){this.subscription.unsubscribe(),this.liveStreamClient.disconnect(),this.params.output.element$.next(void 0),ue(this.video)}subscribe(){let{output:e,desiredState:t}=this.params,i=n=>{e.error$.next({id:"WebRTCLiveProvider",category:Uu.WTF,message:"WebRTCLiveProvider internal logic error",thrown:n})};pg(this.videoState.stateChangeStarted$.pipe(hg(n=>({transition:n,type:"start"}))),this.videoState.stateChangeEnded$.pipe(hg(n=>({transition:n,type:"end"})))).subscribe(({transition:n,type:o})=>{this.log({message:`[videoState change] ${o}: ${JSON.stringify(n)}`})});let a=ce(this.video),s=(n,o)=>this.subscription.add(n.subscribe(o,i));s(a.timeUpdate$,e.liveTime$),s(a.ended$,e.endedEvent$),s(a.looped$,e.loopedEvent$),s(a.error$,e.error$),s(a.isBuffering$,e.isBuffering$),s(a.currentBuffer$,e.currentBuffer$),s($e(this.video),this.params.output.elementVisible$),this.subscription.add(a.durationChange$.subscribe(n=>{e.duration$.next(n===1/0?0:n)})).add(a.canplay$.subscribe(()=>{this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready")},i)).add(a.pause$.subscribe(()=>{this.videoState.setState("paused")},i)).add(a.playing$.subscribe(()=>{this.videoState.setState("playing")},i)).add(a.error$.subscribe(e.error$)).add(this.maxSeekBackTime$.subscribe(this.params.output.duration$)).add(le(this.video,t.volume,a.volumeState$,i)).add(a.volumeState$.subscribe(e.volume$,i)).add(this.videoState.stateChangeEnded$.subscribe(n=>{switch(n.to){case"stopped":e.position$.next(0),e.duration$.next(0),t.playbackState.setState("stopped");break;case"ready":break;case"paused":t.playbackState.setState("paused");break;case"playing":t.playbackState.setState("playing");break;default:return dg(n.to)}},i)).add(pg(t.playbackState.stateChangeStarted$,this.videoState.stateChangeEnded$,rR(["init"])).pipe(iR(0)).subscribe(this.syncPlayback.bind(this),i)),this.subscription.add(t.isLooped.stateChangeStarted$.subscribe(()=>t.isLooped.setState(!1),i)),this.subscription.add(t.autoVideoTrackSwitching.stateChangeStarted$.subscribe(()=>t.autoVideoTrackSwitching.setState(!1),i))}onLiveStreamStart(e){this.params.output.element$.next(this.video),this.params.output.duration$.next(0),this.params.output.position$.next(0),this.params.output.isLive$.next(!0),this.params.output.canChangePlaybackSpeed$.next(!1),this.params.output.hostname$.next(z(this.params.source.url)),this.params.output.autoVideoTrackLimitingAvailable$.next(!1),this.params.output.availableVideoTracks$.next([]),this.params.output.availableAudioTracks$.next([]),this.params.output.isAudioAvailable$.next(!0),this.params.output.currentVideoTrack$.next({id:"webrtc",quality:nR.INVARIANT}),this.video.srcObject=e,E(this.params.desiredState.playbackState,"playing")}onLiveStreamStop(){this.videoState.startTransitionTo("stopped"),this.syncPlayback(),this.params.output.position$.next(0),this.params.output.duration$.next(0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.params.output.endedEvent$.next()}onLiveStreamError(e){this.onLiveStreamStop(),this.params.output.error$.next({id:"WebRTC stream runtime error",category:Uu.EXTERNAL_API,message:e.message,thrown:e})}playIfAllowed(){de(this.video,()=>{this.params.output.soundProhibitedEvent$.next()}).then(e=>{e||(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused",!0))},e=>this.params.output.error$.next({id:"ForcePlay",message:"play() failed even with workarounds",category:Uu.DOM,thrown:e}))}prepare(){this.liveStreamClient.connect()}};var da=class{constructor(e){this.iterator=e[Symbol.iterator](),this.next()}next(){this.current=this.iterator.next()}getValue(){if(this.current.done)throw new Error("Iterable is completed");return this.current.value}isCompleted(){return!!this.current.done}};import{assertNever as ha,assertNonNullable as Et,ErrorCategory as Us,filter as hR,isNonNullable as vg,isNullable as fR,map as mR,merge as bR,once as gR,Subject as be,Subscription as yg,ValueSubject as M,flattenObject as Tg}from"@vkontakte/videoplayer-shared";import{Observable as oR,map as fg,Subscription as uR,Subject as lR}from"@vkontakte/videoplayer-shared";var mg=r=>new oR(e=>{let t=new uR,i=r.desiredPlaybackState$.stateChangeStarted$.pipe(fg(({from:u,to:d})=>`${u}-${d}`)),a=r.desiredPlaybackState$.stateChangeEnded$,s=r.providerChanged$.pipe(fg(({type:u})=>u!==void 0)),n=new lR,o=0,l="unknown";return t.add(i.subscribe(u=>{o&&window.clearTimeout(o),l=u,o=window.setTimeout(()=>n.next(u),r.maxTransitionInterval)})),t.add(a.subscribe(()=>{window.clearTimeout(o),l="unknown",o=0})),t.add(s.subscribe(u=>{o&&(window.clearTimeout(o),o=0,u&&(o=window.setTimeout(()=>n.next(l),r.maxTransitionInterval)))})),t.add(n.subscribe(e)),()=>{window.clearTimeout(o),t.unsubscribe()}});import{ErrorCategory as bg,Subscription as cR,combine as dR,filter as gg,once as Sg}from"@vkontakte/videoplayer-shared";var pa=null,qs=null;function Hu(){return pa||(pa=new(window.AudioContext||window.webkitAudioContext)),qs||(qs=new GainNode(pa,{gain:1}),qs.connect(pa.destination)),{audioCtx:pa,gainNode:qs}}import{clientChecker as pR}from"@vkontakte/videoplayer-shared";var Oi=class r{constructor(e,t,i,a){this.providerOutput=e;this.provider$=t;this.volumeMultiplierError$=i;this.volumeMultiplier=a;this.audioContextInit=!1;this.subscriptions=new cR;this.lastAudioContextResumeId=0;this.subscriptions.add(this.provider$.pipe(gg(s=>!!s.type),Sg()).subscribe(({type:s})=>this.subscribe(s)))}static{this.errorId="VolumeMultiplierManager"}subscribe(e){pR.isSafari&&e!=="MPEG"||this.subscriptions.add(dR({video:this.providerOutput.element$,playbackState:this.providerOutput.playbackState$,volume:this.providerOutput.volume$}).pipe(gg(({playbackState:t,video:i,volume:{muted:a,volume:s}})=>t==="playing"&&!!i&&!a&&!!s),Sg()).subscribe(({video:t})=>this.initAudioContextOnce(t)))}static isSupported(){return"AudioContext"in window&&"GainNode"in window&&"MediaElementAudioSourceNode"in window}initAudioContextOnce(e){let{volumeMultiplier:t}=this,{audioCtx:i,gainNode:a}=Hu(),s=(Math.random()+1)*999999;this.lastAudioContextResumeId=s,i.resume().then(()=>{if(s!==this.lastAudioContextResumeId)throw new Error(`AudioContext.resume() resolved after ${r.errorId} destroyed`);a.gain.value=t;try{new MediaElementAudioSourceNode(i,{mediaElement:e}).connect(a),this.audioContextInit=!0}catch(n){this.volumeMultiplierError$.next({id:r.errorId,category:bg.VIDEO_PIPELINE,message:n?.message??"initAudioContextOnce: (new MediaElementAudioSourceNode).connect() exception",thrown:n})}}).catch(n=>{this.volumeMultiplierError$.next({id:r.errorId,category:bg.VIDEO_PIPELINE,message:n?.message??"initAudioContextOnce: AudioContext.resume() exception",thrown:n})})}destroy(){if(this.audioContextInit){let{gainNode:e}=Hu();e.gain.value=1}this.subscriptions.unsubscribe(),this.lastAudioContextResumeId=0}};var SR={chunkDuration:5e3,maxParallelRequests:5},fa=class{constructor(e){this.current$=new M({type:void 0});this.providerError$=new be;this.noAvailableProvidersError$=new be;this.volumeMultiplierError$=new be;this.providerOutput={position$:new M(0),duration$:new M(1/0),volume$:new M({muted:!1,volume:1}),availableVideoStreams$:new M([]),currentVideoStream$:new M(void 0),availableVideoTracks$:new M([]),currentVideoTrack$:new M(void 0),availableAudioStreams$:new M([]),currentAudioStream$:new M(void 0),availableAudioTracks$:new M([]),currentVideoSegmentLength$:new M(0),currentAudioSegmentLength$:new M(0),isAudioAvailable$:new M(!0),autoVideoTrackLimitingAvailable$:new M(!1),autoVideoTrackLimits$:new M(void 0),currentBuffer$:new M(void 0),isBuffering$:new M(!0),error$:new be,warning$:new be,willSeekEvent$:new be,soundProhibitedEvent$:new be,seekedEvent$:new be,loopedEvent$:new be,endedEvent$:new be,firstBytesEvent$:new be,loadedMetadataEvent$:new be,firstFrameEvent$:new be,canplay$:new be,isLive$:new M(void 0),isLowLatency$:new M(!1),canChangePlaybackSpeed$:new M(!0),liveTime$:new M(void 0),liveBufferTime$:new M(void 0),availableTextTracks$:new M([]),currentTextTrack$:new M(void 0),hostname$:new M(void 0),httpConnectionType$:new M(void 0),httpConnectionReused$:new M(void 0),inPiP$:new M(!1),inFullscreen$:new M(!1),element$:new M(void 0),elementVisible$:new M(!0),availableSources$:new M(void 0),is3DVideo$:new M(!1),playbackState$:new M("")};this.subscription=new yg;this.volumeMultiplierManager=null;this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ProviderContainer"),this.tracer=e.dependencies.tracer.createComponentTracer(this.constructor.name);let t=Fm([...Um(this.params.tuning),...qm(this.params.tuning)],this.params.tuning.useHlsJs,this.params.tuning.useManagedMediaSource).filter(u=>vg(e.sources[u])),{forceFormat:i,formatsToAvoid:a}=this.params.tuning,s=[];i?s=[i]:a.length?s=[...t.filter(u=>!a.includes(u)),...t.filter(u=>a.includes(u))]:s=t,this.log({message:`Selected formats: ${s.join(" > ")}`}),this.tracer.log("Selected formats",Tg(s)),this.screenFormatsIterator=new da(s);let n=[...nu(!0),...nu(!1)];this.chromecastFormatsIterator=new da(n.filter(u=>vg(e.sources[u]))),this.providerOutput.availableSources$.next(e.sources);let{volumeMultiplier:o=1,tuning:{useVolumeMultiplier:l}}=this.params;l&&o!==1&&Oi.isSupported()&&(this.volumeMultiplierManager=new Oi(this.providerOutput,this.current$,this.volumeMultiplierError$,o))}init(){this.subscription.add(this.initProviderErrorHandling()),this.subscription.add(this.params.dependencies.chromecastInitializer.connection$.subscribe(()=>{this.reinitProvider()}))}destroy(){this.destroyProvider(),this.current$.next({type:void 0}),this.subscription.unsubscribe(),this.volumeMultiplierManager?.destroy(),this.volumeMultiplierManager=null,this.tracer.end()}initProvider(){let e=this.chooseDestination(),t=this.chooseFormat(e);if(fR(t)){this.handleNoFormatsError(e);return}let i;try{i=this.createProvider(e,t)}catch(a){this.providerError$.next({id:"ProviderNotConstructed",category:Us.WTF,message:"Failed to create provider",thrown:a})}i?this.current$.next({type:t,provider:i,destination:e}):this.current$.next({type:void 0})}reinitProvider(){this.tracer.log("reinitProvider"),this.destroyProvider(),this.initProvider()}switchToNextProvider(e){this.tracer.log("switchToNextProvider",{destination:e}),this.destroyProvider(),this.failoverIndex=void 0,this.skipFormat(e),this.initProvider()}destroyProvider(){let e=this.current$.getValue().provider;if(!e)return;this.log({message:"destroyProvider"}),this.tracer.log("destroyProvider");let t=this.providerOutput.position$.getValue()*1e3,i=this.params.desiredState.seekState.getState(),a=i.state!=="none";if(this.params.desiredState.seekState.setState({state:"requested",position:a?i.position:t,forcePrecise:a?i.forcePrecise:!1}),e.scene3D){let n=e.scene3D.getCameraRotation();this.params.desiredState.cameraOrientation.setState({x:n.x,y:n.y})}e.destroy();let s=this.providerOutput.isBuffering$;s.getValue()||s.next(!0)}createProvider(e,t){switch(this.log({message:`createProvider: ${e}:${t}`}),this.tracer.log("createProvider",{destination:e,format:t}),e){case"SCREEN":return this.createScreenProvider(t);case"CHROMECAST":return this.createChromecastProvider(t);default:return ha(e)}}createScreenProvider(e){let{sources:t,container:i,desiredState:a}=this.params,s=this.providerOutput,n={container:i,source:null,desiredState:a,output:s,dependencies:this.params.dependencies,tuning:this.params.tuning};switch(e){case"DASH_SEP":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_ONDEMAND":case"DASH_STREAMS":{let o=this.applyFailoverHost(t[e]),l=this.applyFailoverHost(t.HLS_ONDEMAND||t.HLS);return Et(o),new ra({...n,source:o,sourceHls:l})}case"DASH_LIVE_CMAF":{let o=this.applyFailoverHost(t[e]);return Et(o),new aa({...n,source:o})}case"HLS":case"HLS_ONDEMAND":{let o=this.applyFailoverHost(t[e]);return Et(o),Pi||!this.params.tuning.useHlsJs?new ua({...n,source:o}):new na({...n,source:o})}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let o=this.applyFailoverHost(t[e]);return Et(o),new oa({...n,source:o,config:{maxPausedTime:this.params.tuning.live.maxPausedTime},format:e})}case"MPEG":{let o=this.applyFailoverHost(t[e]);return Et(o),new la({...n,source:o})}case"DASH_LIVE":{let o=this.applyFailoverHost(t[e]);return Et(o),new Cm({...n,source:o,config:{...SR,maxPausedTime:this.params.tuning.live.maxPausedTime}})}case"WEB_RTC_LIVE":{let o=this.applyFailoverHost(t[e]);return Et(o),new ca({container:i,source:o,desiredState:a,output:s,dependencies:this.params.dependencies,tuning:this.params.tuning})}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return ha(e)}}createChromecastProvider(e){let{sources:t,container:i,desiredState:a,meta:s}=this.params,n=this.providerOutput,o=this.params.dependencies.chromecastInitializer.connection$.getValue();return Et(o),new cr({connection:o,meta:s,container:i,source:t,format:e,desiredState:a,output:n,dependencies:this.params.dependencies,tuning:this.params.tuning})}chooseDestination(){return this.params.dependencies.chromecastInitializer.connection$.getValue()?"CHROMECAST":"SCREEN"}chooseFormat(e){switch(e){case"SCREEN":return this.screenFormatsIterator.isCompleted()?void 0:this.screenFormatsIterator.getValue();case"CHROMECAST":return this.chromecastFormatsIterator.isCompleted()?void 0:this.chromecastFormatsIterator.getValue();default:return ha(e)}}skipFormat(e){switch(e){case"SCREEN":return this.screenFormatsIterator.next();case"CHROMECAST":return this.chromecastFormatsIterator.next();default:return ha(e)}}handleNoFormatsError(e){switch(e){case"SCREEN":this.noAvailableProvidersError$.next(this.params.tuning.forceFormat),this.current$.next({type:void 0});return;case"CHROMECAST":this.params.dependencies.chromecastInitializer.disconnect();return;default:return ha(e)}}applyFailoverHost(e){if(this.failoverIndex===void 0)return e;let t=this.params.failoverHosts[this.failoverIndex];if(!t)return e;let i=a=>{let s=new URL(a);return s.host=t,s.toString()};if(e===void 0)return e;if("type"in e){if(e.type==="raw")return e;if(e.type==="url")return{...e,url:i(e.url)}}return(0,Ig.default)(Object.entries(e).map(([a,s])=>[a,i(s)]))}initProviderErrorHandling(){let e=new yg,t=!1,i=0;return e.add(bR(this.providerOutput.error$,mg({desiredPlaybackState$:this.params.desiredState.playbackState,maxTransitionInterval:this.params.tuning.maxPlaybackTransitionInterval,position$:this.providerOutput.position$,providerChanged$:this.current$}).pipe(mR(a=>({id:`ProviderHangup:${a}`,category:Us.WTF,message:`A ${a} transition failed to complete within reasonable time`})))).subscribe(this.providerError$)),e.add(this.current$.subscribe(()=>{t=!1;let a=this.params.desiredState.playbackState.transitionEnded$.pipe(hR(({to:s})=>s==="playing"),gR()).subscribe(()=>t=!0);e.add(a)})),e.add(this.providerError$.subscribe(a=>{let s=this.current$.getValue().destination,n={error:a,currentDestination:s};if(s==="CHROMECAST")this.destroyProvider(),this.params.dependencies.chromecastInitializer.stopMedia().then(()=>this.switchToNextProvider("SCREEN"),()=>this.params.dependencies.chromecastInitializer.disconnect());else{let o=a.category===Us.NETWORK,l=a.category===Us.FATAL,u=this.params.failoverHosts.length>0&&(this.failoverIndex===void 0||this.failoverIndex<this.params.failoverHosts.length-1),d=i<this.params.tuning.providerErrorLimit&&!l,c=u&&!l&&(o&&t||!d);n={...n,isNetworkError:o,isFatalError:l,haveFailoverHost:u,tryFailover:c,canReinitProvider:d},this.params.tuning.useNewProviderReinitLogic?d?(i++,this.reinitProvider()):c?(this.failoverIndex=this.failoverIndex===void 0?0:this.failoverIndex+1,this.reinitProvider()):this.switchToNextProvider(s??"SCREEN"):c?(this.failoverIndex=this.failoverIndex===void 0?0:this.failoverIndex+1,this.reinitProvider()):d?(i++,this.reinitProvider()):this.switchToNextProvider(s??"SCREEN")}this.tracer.error("providerError",Tg(n))})),e}};import{fromEvent as Hs,once as vR,combine as yR,Subscription as Eg,ValueSubject as ju,map as TR,filter as IR,isNonNullable as js,now as Ie,safeStorage as Gu}from"@vkontakte/videoplayer-shared";var ER=5e3,xg="one_video_throughput",Pg="one_video_rtt",ma=window.navigator.connection,Ag=()=>{let r=ma?.downlink;if(js(r)&&r!==10)return r*1e3},kg=()=>{let r=ma?.rtt;if(js(r)&&r!==3e3)return r},wg=(r,e,t)=>{let i=t*8,a=i/r;return i/(a+e)},Wu=class r{constructor(e){this.subscription=new Eg;this.concurrentDownloads=new Set;this.tuningConfig=e;let t=r.load(xg)||(e.useBrowserEstimation?Ag():void 0)||ER,i=r.load(Pg)??(e.useBrowserEstimation?kg():void 0)??0;if(this.throughput$=new ju(t),this.rtt$=new ju(i),this.rttAdjustedThroughput$=new ju(wg(t,i,e.rttPenaltyRequestSize)),this.throughput=zt.getSmoothedValue(t,-1,e),this.rtt=zt.getSmoothedValue(i,1,e),e.useBrowserEstimation){let a=()=>{let n=Ag();n&&this.throughput.next(n);let o=kg();js(o)&&this.rtt.next(o)};ma&&"onchange"in ma&&this.subscription.add(Hs(ma,"change").subscribe(a)),a()}this.subscription.add(this.throughput.smoothed$.subscribe(a=>{Gu.set(xg,a.toFixed(0))})),this.subscription.add(this.rtt.smoothed$.subscribe(a=>{Gu.set(Pg,a.toFixed(0))})),this.subscription.add(this.throughput.debounced$.subscribe(this.throughput$)),this.subscription.add(this.rtt.debounced$.subscribe(this.rtt$)),this.subscription.add(yR({throughput:this.throughput.smoothed$,rtt:this.rtt.smoothed$}).pipe(TR(({throughput:a,rtt:s})=>wg(a,s,e.rttPenaltyRequestSize)),IR(a=>{let s=this.rttAdjustedThroughput$.getValue()||0;return Math.abs(a-s)/s>=e.changeThreshold})).subscribe(this.rttAdjustedThroughput$))}destroy(){this.concurrentDownloads.clear(),this.subscription.unsubscribe()}trackXHR(e){let t=0,i=Ie(),a=new Eg;switch(this.subscription.add(a),this.concurrentDownloads.add(e),e.readyState){case 4:break;case 3:case 2:a.add(Hs(e,"progress").pipe(vR()).subscribe(s=>{t=s.loaded,i=Ie()}));break;case 1:case 0:a.add(Hs(e,"loadstart").subscribe(()=>{t=0,i=Ie()}));break}a.add(Hs(e,"loadend").subscribe(s=>{if(e.status===200){let n=s.loaded,o=Ie(),l=n-t,u=o-i;this.addRawSpeed(l,u,1)}this.concurrentDownloads.delete(e),a.unsubscribe()}))}trackStream(e,t=!1){let i=e.getReader();if(!i){e.cancel("Could not get reader");return}let a=0,s=Ie(),n=0,o=Ie(),l=d=>{this.concurrentDownloads.delete(e),i.releaseLock(),e.cancel(`Throughput Estimator error: ${d}`).catch(()=>{})},u=async({done:d,value:c})=>{if(d)!t&&this.addRawSpeed(a,Ie()-s,1),this.concurrentDownloads.delete(e);else if(c){if(t){let p=Ie();if(p-o>this.tuningConfig.lowLatency.continuesByteSequenceInterval||p-s>this.tuningConfig.lowLatency.maxLastEvaluationTimeout){let m=o-s;m&&this.addRawSpeed(n,m,1,t),n=c.byteLength,s=Ie()}else n+=c.byteLength;o=Ie()}else a+=c.byteLength,n+=c.byteLength,n>=this.tuningConfig.streamMinSampleSize&&Ie()-o>=this.tuningConfig.streamMinSampleTime&&(this.addRawSpeed(n,Ie()-o,this.concurrentDownloads.size),n=0,o=Ie());await i?.read().then(u,l)}};this.concurrentDownloads.add(e),i?.read().then(u,l)}addRawSpeed(e,t,i=1,a=!1){if(r.sanityCheck(e,t,a)){let s=e*8/t;this.throughput.next(s*i)}}addRawThroughput(e){this.throughput.next(e)}addRawRtt(e){this.rtt.next(e)}static sanityCheck(e,t,i=!1){let a=e*8/t;return!(!a||!isFinite(a)||a>1e6||a<30||i&&e<1e4||!i&&e<10*1024||!i&&t<=20)}static load(e){let t=Gu.get(e);if(js(t))return parseInt(t,10)??void 0}},Rg=Wu;import{fillWithDefault as xR,VideoQuality as $g}from"@vkontakte/videoplayer-shared";var Lg={configName:["core"],throughputEstimator:{type:"EmaAndMa",emaAlphaSlow:.2,emaAlphaFast:.7,emaAlpha:.45,basisTrendChangeCount:10,changeThreshold:.05,useBrowserEstimation:!0,rttPenaltyRequestSize:1*1024*1024,streamMinSampleSize:10*1024,streamMinSampleTime:300,deviationDepth:20,deviationFactor:.5,lowLatency:{continuesByteSequenceInterval:50,maxLastEvaluationTimeout:300}},autoTrackSelection:{bitrateFactorAtEmptyBuffer:1.8,bitrateAudioFactorAtEmptyBuffer:10,bitrateFactorAtFullBuffer:1.2,bitrateAudioFactorAtFullBuffer:7,minVideoAudioRatio:5,minAvailableThroughputAudioRatio:5,usePixelRatio:!0,pixelRatioMultiplier:1,limitByContainer:!0,containerSizeFactor:2,lazyQualitySwitch:!0,minBufferToSwitchUp:.4,considerPlaybackRate:!1,trackCooldownIncreaseQuality:3e3,trackCooldownDecreaseQuality:3e3,backgroundVideoQualityLimit:$g.Q_4320P,activeVideoAreaThreshold:.1},droppedFramesChecker:{enabled:!1,percentLimit:.1,checkTime:1e3,countLimit:3,tickCountAfterQualityChange:5,qualityUpWaitingTime:5e3,minQualityBanLimit:$g.Q_480P},dash:{forwardBufferTarget:6e4,forwardBufferTargetAuto:6e4,forwardBufferTargetManual:5*6e4,forwardBufferTargetPreload:5e3,maxSegmentDurationLeftToSelectNextSegment:3e3,minSafeBufferThreshold:.5,bufferPruningSafeZone:1e3,segmentRequestSize:1*1024*1024,representationSwitchForwardBufferGap:3e3,crashOnStallTimeout:25e3,crashOnStallTWithoutDataTimeout:5e3,enableSubSegmentBufferFeeding:!0,bufferEmptinessTolerance:100,useFetchPriorityHints:!0},dashCmafLive:{maxActiveLiveOffset:1e4,normalizedTargetMinBufferSize:6e4,normalizedLiveMinBufferSize:5e3,normalizedActualBufferOffset:1e4,offsetCalculationError:3e3,lowLatency:{maxTargetOffset:3e3,maxTargetOffsetDeviation:250,playbackCatchupSpeedup:.05,isActive:!1,delayEstimator:{emaAlpha:.45,changeThreshold:.05,deviationDepth:20,deviationFactor:.5,extremumInterval:5}}},live:{minBuffer:3e3,minBufferSegments:3,lowLatencyMinBuffer:1e3,lowLatencyMinBufferSegments:1,isLiveCatchUpMode:!1,lowLatencyActiveLiveDelay:3e3,activeLiveDelay:5e3,maxPausedTime:5e3},downloadBackoff:{bufferThreshold:100,start:100,factor:2,max:3*1e3,random:.1},enableWakeLock:!0,enableTelemetryAtStart:!1,forceFormat:void 0,formatsToAvoid:[],disableChromecast:!1,chromecastReceiverId:void 0,useWebmBigRequest:!1,webmCodec:"vp9",androidPreferredFormat:"mpeg",preferCMAF:!1,preferWebRTC:!1,preferMultiStream:!1,preferHDR:!1,bigRequestMinInitSize:50*1024,bigRequestMinDataSize:1*1024*1024,stripRangeHeader:!0,flushShortLoopedBuffers:!0,insufficientBufferRuleMargin:1e4,dashSeekInSegmentDurationThreshold:3*60*1e3,dashSeekInSegmentAlwaysSeekDelta:1e4,endGapTolerance:300,stallIgnoreThreshold:33,gapWatchdogInterval:50,accumulationBufferStallSizeMs:0,requestQuick:!1,useHlsJs:!0,useNativeHLSTextTracks:!1,useManagedMediaSource:!1,useNewPruneBufferStrategy:!1,useNewPartialSegmentFeeding:!1,useNewSwitchTo:!1,useSeparateAudioVideoABR:!1,isAudioDisabled:!1,autoplayOnlyInActiveTab:!0,dynamicImportTimeout:5e3,maxPlaybackTransitionInterval:2e4,providerErrorLimit:3,useNewProviderReinitLogic:!1,manifestRetryInterval:300,manifestRetryMaxInterval:1e4,manifestRetryMaxCount:10,audioVideoSyncRate:20,webrtc:{connectionRetryMaxNumber:3},spherical:{enabled:!1,fov:{x:135,y:76},rotationSpeed:45,maxYawAngle:175,rotationSpeedCorrection:10,degreeToPixelCorrection:5,speedFadeTime:2e3,speedFadeThreshold:50},useVolumeMultiplier:!1,usingVkPlayerUi:!1},Mg=r=>({...xR(r,Lg),configName:[...r.configName??[],...Lg.configName]});import{assertNonNullable as Gs,combine as xt,ErrorCategory as Ws,filter as ae,filterChanged as B,fromEvent as Yu,isNonNullable as LR,isNullable as MR,Logger as CR,map as C,mapTo as Og,merge as Pt,now as Qs,once as Ze,Subject as N,Subscription as Vg,tap as _g,ValueSubject as P,isHigher as DR,isInvariantQuality as Ng,flattenObject as At,throttle as zu,getTraceSubscriptionMethod as Fg,Tracer as BR}from"@vkontakte/videoplayer-shared";import{merge as PR,map as AR,filter as Cg,isNonNullable as kR}from"@vkontakte/videoplayer-shared";var Qu=({seekState:r,position$:e})=>PR(r.stateChangeEnded$.pipe(AR(({to:t})=>t.state==="none"?void 0:(t.position??NaN)/1e3),Cg(kR)),e.pipe(Cg(()=>r.getState().state==="none")));import{assertNonNullable as wR}from"@vkontakte/videoplayer-shared";var Dg=r=>{let e=typeof r.container=="string"?document.getElementById(r.container):r.container;return wR(e,`Wrong container or containerId {${r.container}}`),e};import{filter as RR,once as $R}from"@vkontakte/videoplayer-shared";var Bg=(r,e,t,i)=>{r!==void 0&&e.getState()===void 0&&e.getPrevState()===void 0&&t?.getValue().length===0?t.pipe(RR(a=>a.length>0),$R()).subscribe(a=>{a.find(i)&&e.startTransitionTo(r)}):(r===void 0||t?.getValue().find(i))&&e.startTransitionTo(r)};var Ys=class{constructor(e={configName:[]},t=BR.createRootTracer(!1)){this.subscription=new Vg;this.logger=new CR;this.abrLogger=this.logger.createComponentLog("ABR");this.isPlaybackStarted=!1;this.hasLiveOffsetByPaused=new P(!1);this.hasLiveOffsetByPausedTimer=0;this.desiredState={playbackState:new L("stopped"),seekState:new L({state:"none"}),volume:new L({volume:1,muted:!1}),videoTrack:new L(void 0),videoStream:new L(void 0),audioStream:new L(void 0),autoVideoTrackSwitching:new L(!0),autoVideoTrackLimits:new L({}),isLooped:new L(!1),playbackRate:new L(1),externalTextTracks:new L([]),internalTextTracks:new L([]),currentTextTrack:new L(void 0),textTrackCuesSettings:new L({}),cameraOrientation:new L({x:0,y:0})};this.info={playbackState$:new P("stopped"),position$:new P(0),duration$:new P(1/0),muted$:new P(!1),volume$:new P(1),availableVideoStreams$:new P([]),currentVideoStream$:new P(void 0),availableQualities$:new P([]),availableQualitiesFps$:new P({}),currentQuality$:new P(void 0),isAutoQualityEnabled$:new P(!0),autoQualityLimitingAvailable$:new P(!1),autoQualityLimits$:new P({}),availableAudioStreams$:new P([]),currentAudioStream$:new P(void 0),availableAudioTracks$:new P([]),isAudioAvailable$:new P(!0),currentPlaybackRate$:new P(1),currentBuffer$:new P({start:0,end:0}),isBuffering$:new P(!0),isStalled$:new P(!1),isEnded$:new P(!1),isLooped$:new P(!1),isLive$:new P(void 0),canChangePlaybackSpeed$:new P(void 0),atLiveEdge$:new P(void 0),atLiveDurationEdge$:new P(void 0),liveTime$:new P(void 0),liveBufferTime$:new P(void 0),currentFormat$:new P(void 0),availableTextTracks$:new P([]),currentTextTrack$:new P(void 0),throughputEstimation$:new P(void 0),rttEstimation$:new P(void 0),videoBitrate$:new P(void 0),hostname$:new P(void 0),httpConnectionType$:new P(void 0),httpConnectionReused$:new P(void 0),surface$:new P("none"),chromecastState$:new P("NOT_AVAILABLE"),chromecastDeviceName$:new P(void 0),intrinsicVideoSize$:new P(void 0),availableSources$:new P(void 0),is3DVideo$:new P(!1),currentVideoSegmentLength$:new P(0),currentAudioSegmentLength$:new P(0)};this.events={inited$:new N,ready$:new N,started$:new N,playing$:new N,paused$:new N,stopped$:new N,willStart$:new N,willResume$:new N,willPause$:new N,willStop$:new N,willDestruct$:new N,watchCoverageRecord$:new N,watchCoverageLive$:new N,managedError$:new N,fatalError$:new N,ended$:new N,looped$:new N,seeked$:new N,willSeek$:new N,autoplaySoundProhibited$:new N,firstBytes$:new N,loadedMetadata$:new N,firstFrame$:new N,canplay$:new N,log$:new N};this.experimental={element$:new P(void 0),tuningConfigName$:new P([]),enableDebugTelemetry$:new P(!1),dumpTelemetry:pm};if(this.initLogs(),this.tuning=Mg(e),this.tracer=t,this.experimental.tuningConfigName$.next(this.tuning.configName),this.chromecastInitializer=new xa({receiverApplicationId:e.chromecastReceiverId,isDisabled:e.disableChromecast,dependencies:{logger:this.logger}}),this.throughputEstimator=new Rg(this.tuning.throughputEstimator),this.initChromecastSubscription(),this.initDesiredStateSubscriptions(),Proxy&&Reflect)return new Proxy(this,{get:(i,a,s)=>{let n=Reflect.get(i,a,s);return typeof n!="function"?n:(...o)=>{try{return n.apply(i,o)}catch(l){let u=o.map(p=>JSON.stringify(p,(h,m)=>{let b=typeof m;return["number","string","boolean"].includes(b)?m:m===null?null:`<${b}>`})),d=`Player.${String(a)}`,c=`Exception calling ${d} (${u.join(", ")})`;throw this.events.fatalError$.next({id:d,category:Ws.WTF,message:c,thrown:l}),l}}}})}initVideo(e){this.config=e;let{container:t,...i}=e;return this.tracer.log("initVideo",At(i)),this.domContainer=Dg(e),this.chromecastInitializer.contentId=e.meta?.videoId,this.providerContainer=new fa({sources:e.sources,meta:e.meta??{},failoverHosts:e.failoverHosts??[],container:this.domContainer,desiredState:this.desiredState,dependencies:{throughputEstimator:this.throughputEstimator,chromecastInitializer:this.chromecastInitializer,tracer:this.tracer,logger:this.logger,abrLogger:this.abrLogger},tuning:this.tuning,volumeMultiplier:e.volumeMultiplier}),this.initProviderContainerSubscription(this.providerContainer),this.initStartingVideoTrack(this.providerContainer),this.initTracerSubscription(),this.providerContainer.init(),this.setMuted(this.tuning.isAudioDisabled),this.initDebugTelemetry(),this.initWakeLock(),this}destroy(){this.tracer.log("destroy"),window.clearTimeout(this.hasLiveOffsetByPausedTimer),this.events.willDestruct$.next(),this.stop(),this.providerContainer?.destroy(),this.throughputEstimator.destroy(),this.chromecastInitializer.destroy(),this.subscription.unsubscribe(),this.tracer.end()}prepare(){let e=this.desiredState.playbackState;return this.tracer.log("prepare",{currentPlayBackState:e.getState()}),e.getState()==="stopped"&&e.startTransitionTo("ready"),this}play(){let e=()=>{let t=this.desiredState.playbackState;this.tracer.log("play",{currentPlayBackState:t.getState()}),t.getState()!=="playing"&&t.startTransitionTo("playing")};return document.hidden&&this.tuning.autoplayOnlyInActiveTab&&!yr()?(this.tracer.log("request play from hidden tab"),Yu(document,"visibilitychange").pipe(Ze()).subscribe(e)):e(),this}pause(){let e=this.desiredState.playbackState;return this.tracer.log("pause",{currentPlayBackState:e.getState()}),e.getState()!=="paused"&&e.startTransitionTo("paused"),this}stop(){let e=this.desiredState.playbackState;return this.tracer.log("stop",{currentPlayBackState:e.getState()}),e.getState()!=="stopped"&&e.startTransitionTo("stopped"),this}seekTime(e,t=!0){let i=this.info.duration$.getValue(),a=this.info.isLive$.getValue(),s=e;return e>=i&&!a&&(s=i-.1),this.tracer.log("seekTime",{duration:i,isLive:a,time:e,calculatedTime:s,forcePrecise:t}),this.events.willSeek$.next({from:this.getExactTime(),to:s}),this.desiredState.seekState.setState({state:"requested",position:s*1e3,forcePrecise:t}),this}seekPercent(e){let t=this.info.duration$.getValue();return this.tracer.log("seekPercent",{percent:e,duration:t}),isFinite(t)&&this.seekTime(Math.abs(t)*e,!1),this}setVolume(e){let t=this.tuning.isAudioDisabled||this.desiredState.volume.getState().muted;return this.tracer.log("setVolume",{volume:e,isAudioDisabled:this.tuning.isAudioDisabled,isDesiredStateMuted:this.desiredState.volume.getState().muted,chromecastState:this.chromecastInitializer.castState$.getValue(),muted:t}),this.chromecastInitializer.castState$.getValue()==="CONNECTED"?this.chromecastInitializer.setVolume(e):this.desiredState.volume.startTransitionTo({volume:e,muted:t}),this}setMuted(e){let t=this.tuning.isAudioDisabled||e;return this.tracer.log("setMuted",{isMuted:e,isAudioDisabled:this.tuning.isAudioDisabled,desiredStateVolume:this.desiredState.volume.getState().volume,chromecastState:this.chromecastInitializer.castState$.getValue(),muted:t}),this.chromecastInitializer.castState$.getValue()==="CONNECTED"?this.chromecastInitializer.setMuted(t):this.desiredState.volume.startTransitionTo({volume:this.desiredState.volume.getState().volume,muted:t}),this}setVideoStream(e){return this.desiredState.videoStream.startTransitionTo(e),this}setAudioStream(e){return this.desiredState.audioStream.startTransitionTo(e),this}setQuality(e){Gs(this.providerContainer);let t=this.providerContainer.providerOutput.availableVideoTracks$.getValue();return this.tracer.log("setQuality",{isDelayed:t.length===0,quality:e}),this.desiredState.videoTrack.getState()===void 0&&this.desiredState.videoTrack.getPrevState()===void 0&&t.length===0?this.providerContainer.providerOutput.availableVideoTracks$.pipe(ae(i=>i.length>0),Ze()).subscribe(i=>{this.setVideoTrackIdByQuality(i,e)}):t.length>0&&this.setVideoTrackIdByQuality(t,e),this}setAutoQuality(e){return this.tracer.log("setAutoQuality",{enable:e}),this.desiredState.autoVideoTrackSwitching.startTransitionTo(e),this}setAutoQualityLimits(e){return this.tracer.log("setAutoQualityLimits",At(e)),this.desiredState.autoVideoTrackLimits.startTransitionTo(e),this}setPlaybackRate(e){Gs(this.providerContainer);let t=this.providerContainer?.providerOutput.element$.getValue();return this.tracer.log("setPlaybackRate",{playbackRate:e,isVideoElementAvailable:!!t}),t&&(this.desiredState.playbackRate.setState(e),t.playbackRate=e),this}setExternalTextTracks(e){return e.length&&this.tracer.log("setExternalTextTracks",At(e)),this.desiredState.externalTextTracks.startTransitionTo(e.map(t=>({type:"external",...t}))),this}selectTextTrack(e){return Bg(e,this.desiredState.currentTextTrack,this.providerContainer?.providerOutput.availableTextTracks$,t=>t.id===e),this.tracer.log("selectTextTrack",{textTrackId:e}),this}setTextTrackCueSettings(e){return this.tracer.log("setTextTrackCueSettings",{...e}),this.desiredState.textTrackCuesSettings.startTransitionTo(e),this}setLooped(e){return this.tracer.log("setLooped",{isLooped:e}),this.desiredState.isLooped.startTransitionTo(e),this}toggleChromecast(){this.tracer.log("toggleChromecast"),this.chromecastInitializer.toggleConnection()}startCameraManualRotation(e,t){let i=this.getScene3D();return this.tracer.log("startCameraManualRotation",{isScene3DAvailable:!!i,mx:e,my:t}),i&&i.startCameraManualRotation(e,t),this}stopCameraManualRotation(e=!1){let t=this.getScene3D();return this.tracer.log("stopCameraManualRotation",{isScene3DAvailable:!!t,immediate:e}),t&&t.stopCameraManualRotation(e),this}moveCameraFocusPX(e,t){let i=this.getScene3D();if(this.tracer.log("moveCameraFocusPX",{isScene3DAvailable:!!i,dxpx:e,dypx:t}),i){let a=i.getCameraRotation(),s=i.pixelToDegree({x:e,y:t});this.desiredState.cameraOrientation.setState({x:a.x+s.x,y:a.y+s.y})}return this}holdCamera(){let e=this.getScene3D();return e&&e.holdCamera(),this}releaseCamera(){let e=this.getScene3D();return e&&e.releaseCamera(),this}getExactTime(){if(!this.providerContainer)return 0;let e=this.providerContainer.providerOutput.element$.getValue();if(MR(e))return this.info.position$.getValue();let t=this.desiredState.seekState.getState(),i=t.state==="none"?void 0:t.position;return LR(i)?i/1e3:e.currentTime}getAllLogs(){return this.logger.getAllLogs()}getScene3D(){let e=this.providerContainer?.current$.getValue();if(e?.provider?.scene3D)return e.provider.scene3D}setIntrinsicVideoSize(...e){let t={width:e.reduce((i,{width:a})=>i||a||0,0),height:e.reduce((i,{height:a})=>i||a||0,0)};t.width&&t.height&&this.info.intrinsicVideoSize$.next({width:t.width,height:t.height})}initDesiredStateSubscriptions(){this.subscription.add(Pt(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(C(e=>e.to)).subscribe(this.info.playbackState$)).add(this.desiredState.isLooped.stateChangeEnded$.pipe(C(e=>e.to)).subscribe(this.info.isLooped$)).add(this.desiredState.playbackRate.stateChangeEnded$.pipe(C(e=>e.to)).subscribe(this.info.currentPlaybackRate$)).add(this.desiredState.autoVideoTrackSwitching.stateChangeEnded$.pipe(C(e=>e.to)).subscribe(this.info.isAutoQualityEnabled$)).add(this.desiredState.autoVideoTrackLimits.stateChangeEnded$.pipe(C(e=>e.to)).subscribe(this.info.autoQualityLimits$)),this.subscription.add(this.desiredState.playbackState.stateChangeStarted$.pipe(ae(({from:e})=>e==="stopped"),Ze()).subscribe(()=>{this.initedAt=Qs(),this.events.inited$.next()})).add(this.desiredState.playbackState.stateChangeEnded$.subscribe(e=>{switch(e.to){case"ready":this.events.ready$.next();break;case"playing":this.isPlaybackStarted||this.events.started$.next(),this.isPlaybackStarted=!0,this.events.playing$.next();break;case"paused":this.events.paused$.next();break;case"stopped":this.events.stopped$.next()}})).add(this.desiredState.playbackState.stateChangeStarted$.subscribe(e=>{switch(e.to){case"paused":this.events.willPause$.next();break;case"playing":this.isPlaybackStarted?this.events.willResume$.next():this.events.willStart$.next();break;case"stopped":this.events.willStop$.next();break;default:}}))}initProviderContainerSubscription(e){this.subscription.add(e.providerOutput.willSeekEvent$.subscribe(()=>{let n=this.desiredState.seekState.getState();this.tracer.log("willSeekEvent",At(n)),n.state==="requested"?this.desiredState.seekState.setState({...n,state:"applying"}):this.events.managedError$.next({id:`WillSeekIn${n.state}`,category:Ws.WTF,message:"Received unexpeceted willSeek$"})})).add(e.providerOutput.soundProhibitedEvent$.pipe(Ze()).subscribe(this.events.autoplaySoundProhibited$)).add(e.providerOutput.seekedEvent$.subscribe(()=>{let n=this.desiredState.seekState.getState();this.tracer.log("seekedEvent",At(n)),n.state==="applying"&&(this.desiredState.seekState.setState({state:"none"}),this.events.seeked$.next())})).add(e.current$.pipe(C(n=>n.type)).subscribe(this.info.currentFormat$)).add(e.current$.pipe(C(n=>n.destination),B()).subscribe(()=>this.isPlaybackStarted=!1)).add(e.providerOutput.availableVideoStreams$.subscribe(this.info.availableVideoStreams$)).add(e.providerOutput.availableVideoTracks$.pipe(C(n=>n.map(({quality:o})=>o).sort((o,l)=>Ng(o)?1:Ng(l)?-1:DR(l,o)?1:-1))).subscribe(this.info.availableQualities$)).add(e.providerOutput.availableVideoTracks$.subscribe(n=>{let o={};for(let l of n)l.fps&&(o[l.quality]=l.fps);this.info.availableQualitiesFps$.next(o)})).add(e.providerOutput.availableAudioStreams$.subscribe(this.info.availableAudioStreams$)).add(e.providerOutput.currentVideoStream$.subscribe(this.info.currentVideoStream$)).add(e.providerOutput.currentAudioStream$.subscribe(this.info.currentAudioStream$)).add(e.providerOutput.availableAudioTracks$.subscribe(this.info.availableAudioTracks$)).add(e.providerOutput.isAudioAvailable$.pipe(B()).subscribe(this.info.isAudioAvailable$)).add(e.providerOutput.currentVideoTrack$.subscribe(n=>{this.info.currentQuality$.next(n?.quality),this.info.videoBitrate$.next(n?.bitrate)})).add(e.providerOutput.currentVideoSegmentLength$.pipe(B((n,o)=>Math.round(n)===Math.round(o))).subscribe(this.info.currentVideoSegmentLength$)).add(e.providerOutput.currentAudioSegmentLength$.pipe(B((n,o)=>Math.round(n)===Math.round(o))).subscribe(this.info.currentAudioSegmentLength$)).add(e.providerOutput.hostname$.pipe(B()).subscribe(this.info.hostname$)).add(e.providerOutput.httpConnectionType$.pipe(B()).subscribe(this.info.httpConnectionType$)).add(e.providerOutput.httpConnectionReused$.pipe(B()).subscribe(this.info.httpConnectionReused$)).add(e.providerOutput.currentTextTrack$.subscribe(this.info.currentTextTrack$)).add(e.providerOutput.availableTextTracks$.subscribe(this.info.availableTextTracks$)).add(e.providerOutput.autoVideoTrackLimitingAvailable$.subscribe(this.info.autoQualityLimitingAvailable$)).add(e.providerOutput.autoVideoTrackLimits$.subscribe(n=>{this.desiredState.autoVideoTrackLimits.setState(n??{})})).add(e.providerOutput.currentBuffer$.pipe(C(n=>n?{start:n.from,end:n.to}:{start:0,end:0})).subscribe(this.info.currentBuffer$)).add(e.providerOutput.duration$.subscribe(this.info.duration$)).add(e.providerOutput.isBuffering$.subscribe(this.info.isBuffering$)).add(e.providerOutput.isLive$.subscribe(this.info.isLive$)).add(e.providerOutput.canChangePlaybackSpeed$.subscribe(this.info.canChangePlaybackSpeed$)).add(e.providerOutput.liveTime$.subscribe(this.info.liveTime$)).add(e.providerOutput.liveBufferTime$.subscribe(this.info.liveBufferTime$)).add(xt({hasLiveOffsetByPaused:Pt(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(C(n=>n.to),B(),C(n=>n==="paused")),isLowLatency:e.providerOutput.isLowLatency$}).subscribe(({hasLiveOffsetByPaused:n,isLowLatency:o})=>{if(window.clearTimeout(this.hasLiveOffsetByPausedTimer),n){this.hasLiveOffsetByPausedTimer=window.setTimeout(()=>{this.hasLiveOffsetByPaused.next(!0)},this.getActiveLiveDelay(o));return}this.hasLiveOffsetByPaused.next(!1)})).add(xt({atLiveEdge:xt({isLive:e.providerOutput.isLive$,isLowLatency:e.providerOutput.isLowLatency$,position:Qu({seekState:this.desiredState.seekState,position$:e.providerOutput.position$})}).pipe(C(({isLive:n,position:o,isLowLatency:l})=>{let u=this.getActiveLiveDelay(l);return n&&Math.abs(o)<u/1e3}),B(),_g(n=>n&&this.setPlaybackRate(1))),hasPausedTimeoutCase:this.hasLiveOffsetByPaused}).pipe(C(({atLiveEdge:n,hasPausedTimeoutCase:o})=>n&&!o)).subscribe(this.info.atLiveEdge$)).add(xt({isLive:e.providerOutput.isLive$,position:e.providerOutput.position$,duration:e.providerOutput.duration$}).pipe(C(({isLive:n,position:o,duration:l})=>n&&(Math.abs(l)-Math.abs(o))*1e3<this.tuning.live.activeLiveDelay),B(),_g(n=>n&&this.setPlaybackRate(1))).subscribe(this.info.atLiveDurationEdge$)).add(e.providerOutput.volume$.pipe(C(n=>n.muted),B()).subscribe(this.info.muted$)).add(e.providerOutput.volume$.pipe(C(n=>n.volume),B()).subscribe(this.info.volume$)).add(Qu({seekState:this.desiredState.seekState,position$:e.providerOutput.position$}).subscribe(this.info.position$)).add(Pt(e.providerOutput.endedEvent$.pipe(Og(!0)),e.providerOutput.seekedEvent$.pipe(Og(!1))).pipe(B()).subscribe(this.info.isEnded$)).add(e.providerOutput.endedEvent$.subscribe(this.events.ended$)).add(e.providerOutput.loopedEvent$.subscribe(this.events.looped$)).add(e.providerError$.subscribe(this.events.managedError$)).add(e.volumeMultiplierError$.subscribe(this.events.managedError$)).add(e.noAvailableProvidersError$.pipe(C(n=>({id:n?`No${n}`:"NoProviders",category:Ws.VIDEO_PIPELINE,message:n?`${n} was forced but failed or not available`:"No suitable providers or all providers failed"}))).subscribe(this.events.fatalError$)).add(e.providerOutput.element$.subscribe(this.experimental.element$)).add(e.providerOutput.firstBytesEvent$.pipe(Ze(),C(n=>n??Qs()-this.initedAt)).subscribe(this.events.firstBytes$)).add(e.providerOutput.loadedMetadataEvent$.subscribe(this.events.loadedMetadata$)).add(e.providerOutput.firstFrameEvent$.pipe(Ze(),C(()=>Qs()-this.initedAt)).subscribe(this.events.firstFrame$)).add(e.providerOutput.canplay$.pipe(Ze(),C(()=>Qs()-this.initedAt)).subscribe(this.events.canplay$)).add(this.throughputEstimator.throughput$.subscribe(this.info.throughputEstimation$)).add(this.throughputEstimator.rtt$.subscribe(this.info.rttEstimation$)).add(e.providerOutput.availableSources$.subscribe(this.info.availableSources$));let t=new P(!1);this.subscription.add(e.providerOutput.seekedEvent$.subscribe(()=>t.next(!1))).add(e.providerOutput.willSeekEvent$.subscribe(()=>t.next(!0)));let i=new P(!0);this.subscription.add(e.current$.subscribe(()=>i.next(!0))).add(this.desiredState.playbackState.stateChangeEnded$.pipe(ae(({to:n})=>n==="playing"),Ze()).subscribe(()=>i.next(!1)));let a=0,s=Pt(e.providerOutput.isBuffering$,t,i).pipe(C(()=>{let n=e.providerOutput.isBuffering$.getValue(),o=t.getValue()||i.getValue();return n&&!o}),B());this.subscription.add(s.subscribe(n=>{n?a=window.setTimeout(()=>this.info.isStalled$.next(!0),this.tuning.stallIgnoreThreshold):(window.clearTimeout(a),this.info.isStalled$.next(!1))})),this.subscription.add(Pt(e.providerOutput.canplay$,e.providerOutput.firstFrameEvent$,e.providerOutput.firstBytesEvent$).subscribe(()=>{let n=e.providerOutput.element$.getValue();this.setIntrinsicVideoSize({width:n?.videoWidth,height:n?.videoHeight})})).add(e.providerOutput.currentVideoTrack$.subscribe(n=>{let o=e.providerOutput.element$.getValue();this.setIntrinsicVideoSize({width:n?.size?.width,height:n?.size?.height},{width:o?.videoWidth,height:o?.videoHeight})})).add(e.providerOutput.is3DVideo$.subscribe(this.info.is3DVideo$)),this.subscription.add(Pt(e.providerOutput.inPiP$,e.providerOutput.inFullscreen$,e.providerOutput.element$,e.providerOutput.elementVisible$,this.chromecastInitializer.castState$).subscribe(()=>{let n=e.providerOutput.inPiP$.getValue(),o=e.providerOutput.inFullscreen$.getValue(),l=e.providerOutput.element$.getValue(),u=e.providerOutput.elementVisible$.getValue(),d=this.chromecastInitializer.castState$.getValue(),c;d==="CONNECTED"?c="second_screen":l?u?n?c="pip":o?c="fullscreen":c="inline":c="invisible":c="none",this.info.surface$.getValue()!==c&&this.info.surface$.next(c)}))}initChromecastSubscription(){this.subscription.add(this.chromecastInitializer.castState$.subscribe(this.info.chromecastState$)),this.subscription.add(this.chromecastInitializer.connection$.pipe(C(e=>e?.castDevice.friendlyName)).subscribe(this.info.chromecastDeviceName$)),this.subscription.add(this.chromecastInitializer.errorEvent$.subscribe(this.events.managedError$))}initStartingVideoTrack(e){let t=new Vg;this.subscription.add(t),this.subscription.add(e.current$.pipe(B((i,a)=>i.provider===a.provider)).subscribe(()=>{t.unsubscribe(),t.add(e.providerOutput.availableVideoTracks$.pipe(ae(i=>i.length>0),Ze()).subscribe(i=>{this.setStartingVideoTrack(i)}))}))}setStartingVideoTrack(e){let t,i=this.desiredState.videoTrack.getState()?.quality;i&&(t=e.find(({quality:a})=>a===i),t||this.setAutoQuality(!0)),t||(t=Tt(e,{container:this.domContainer.getBoundingClientRect(),throughput:this.throughputEstimator.throughput$.getValue(),tuning:this.tuning.autoTrackSelection,limits:this.desiredState.autoVideoTrackLimits.getState(),playbackRate:this.info.currentPlaybackRate$.getValue(),forwardBufferHealth:0,abrLogger:this.abrLogger})),this.desiredState.videoTrack.startTransitionTo(t),this.info.currentQuality$.next(t.quality),this.info.videoBitrate$.next(t.bitrate)}initLogs(){this.subscription.add(Pt(this.desiredState.videoTrack.stateChangeStarted$.pipe(C(e=>({transition:e,entity:"quality",type:"start"}))),this.desiredState.videoTrack.stateChangeEnded$.pipe(C(e=>({transition:e,entity:"quality",type:"end"}))),this.desiredState.autoVideoTrackSwitching.stateChangeStarted$.pipe(C(e=>({transition:e,entity:"autoQualityEnabled",type:"start"}))),this.desiredState.autoVideoTrackSwitching.stateChangeEnded$.pipe(C(e=>({transition:e,entity:"autoQualityEnabled",type:"end"}))),this.desiredState.seekState.stateChangeStarted$.pipe(C(e=>({transition:e,entity:"seekState",type:"start"}))),this.desiredState.seekState.stateChangeEnded$.pipe(C(e=>({transition:e,entity:"seekState",type:"end"}))),this.desiredState.playbackState.stateChangeStarted$.pipe(C(e=>({transition:e,entity:"playbackState",type:"start"}))),this.desiredState.playbackState.stateChangeEnded$.pipe(C(e=>({transition:e,entity:"playbackState",type:"end"})))).pipe(C(e=>({component:"desiredState",message:`[${e.entity} change] ${e.type}: ${JSON.stringify(e.transition)}`}))).subscribe(this.logger.log)),this.subscription.add(this.logger.log$.subscribe(this.events.log$))}initDebugTelemetry(){let e=this.providerContainer?.providerOutput;Gs(this.providerContainer),Gs(e),dm(),this.experimental.enableDebugTelemetry$.next(this.tuning.enableTelemetryAtStart),[this.experimental.enableDebugTelemetry$.subscribe(t=>cm(t)),this.providerContainer.current$.subscribe(({type:t})=>fr("provider",t)),e.duration$.subscribe(t=>fr("duration",t)),e.availableVideoTracks$.pipe(ae(t=>!!t.length),Ze()).subscribe(t=>fr("tracks",t)),this.events.fatalError$.subscribe(new re("fatalError")),this.events.managedError$.subscribe(new re("managedError")),e.position$.subscribe(new re("position")),e.currentVideoTrack$.pipe(C(t=>t?.quality)).subscribe(new re("quality")),this.info.currentBuffer$.subscribe(new re("buffer")),e.isBuffering$.subscribe(new re("isBuffering"))].forEach(t=>this.subscription.add(t)),fr("codecs",Nm())}initTracerSubscription(){let e=Fg(this.tracer.log.bind(this.tracer)),t=Fg(this.tracer.error.bind(this.tracer));this.subscription.add(this.info.playbackState$.subscribe(e("playbackState"))).add(this.info.isLooped$.subscribe(e("isLooped"))).add(this.info.currentPlaybackRate$.pipe(B()).subscribe(e("currentPlaybackRate"))).add(this.info.isAutoQualityEnabled$.subscribe(e("isAutoQualityEnabled"))).add(this.info.autoQualityLimits$.subscribe(e("autoQualityLimits"))).add(this.info.currentFormat$.subscribe(e("currentFormat"))).add(this.info.availableQualities$.subscribe(e("availableQualities"))).add(this.info.availableQualitiesFps$.subscribe(e("availableQualitiesFps"))).add(this.info.availableAudioTracks$.subscribe(e("availableAudioTracks"))).add(this.info.isAudioAvailable$.subscribe(e("isAudioAvailable"))).add(xt({currentQuality:this.info.currentQuality$,videoBitrate:this.info.videoBitrate$}).pipe(ae(({currentQuality:i,videoBitrate:a})=>!!i&&!!a),B((i,a)=>i.currentQuality===a.currentQuality)).subscribe(e("currentVideoTrack"))).add(this.info.currentVideoSegmentLength$.pipe(ae(i=>i>0),B()).subscribe(e("currentVideoSegmentLength"))).add(this.info.currentAudioSegmentLength$.pipe(ae(i=>i>0),B()).subscribe(e("currentAudioSegmentLength"))).add(this.info.hostname$.subscribe(e("hostname"))).add(this.info.currentTextTrack$.subscribe(e("currentTextTrack"))).add(this.info.availableTextTracks$.subscribe(e("availableTextTracks"))).add(this.info.autoQualityLimitingAvailable$.subscribe(e("autoQualityLimitingAvailable"))).add(xt({currentBuffer:this.info.currentBuffer$.pipe(ae(i=>i.end>0),B((i,a)=>i.end===a.end&&i.start===a.start)),position:this.info.position$.pipe(B())}).pipe(zu(1e3)).subscribe(e("currentBufferAndPosition"))).add(this.info.duration$.pipe(B()).subscribe(e("duration"))).add(this.info.isBuffering$.subscribe(e("isBuffering"))).add(this.info.isLive$.pipe(B()).subscribe(e("isLive"))).add(this.info.canChangePlaybackSpeed$.pipe(B()).subscribe(e("canChangePlaybackSpeed"))).add(xt({liveTime:this.info.liveTime$,liveBufferTime:this.info.liveBufferTime$,position:this.info.position$}).pipe(ae(({liveTime:i,liveBufferTime:a})=>!!i&&!!a),zu(1e3)).subscribe(e("liveBufferAndPosition"))).add(this.info.atLiveEdge$.pipe(B(),ae(i=>i===!0)).subscribe(e("atLiveEdge"))).add(this.info.atLiveDurationEdge$.pipe(B(),ae(i=>i===!0)).subscribe(e("atLiveDurationEdge"))).add(this.info.muted$.pipe(B()).subscribe(e("muted"))).add(this.info.volume$.pipe(B()).subscribe(e("volume"))).add(this.info.isEnded$.pipe(B(),ae(i=>i===!0)).subscribe(e("isEnded"))).add(this.info.availableSources$.subscribe(e("availableSources"))).add(xt({throughputEstimation:this.info.throughputEstimation$,rtt:this.info.rttEstimation$}).pipe(ae(({throughputEstimation:i,rtt:a})=>!!i&&!!a),zu(3e3)).subscribe(e("throughputEstimation"))).add(this.info.isStalled$.subscribe(e("isStalled"))).add(this.info.is3DVideo$.pipe(B(),ae(i=>i===!0)).subscribe(e("is3DVideo"))).add(this.info.surface$.subscribe(e("surface"))).add(this.events.ended$.subscribe(e("ended"))).add(this.events.looped$.subscribe(e("looped"))).add(this.events.managedError$.subscribe(t("managedError"))).add(this.events.fatalError$.subscribe(t("fatalError"))).add(this.events.firstBytes$.subscribe(e("firstBytes"))).add(this.events.firstFrame$.subscribe(e("firstFrame"))).add(this.events.canplay$.subscribe(e("canplay")))}initWakeLock(){if(!window.navigator.wakeLock||!this.tuning.enableWakeLock)return;let e,t=()=>{e?.release(),e=void 0},i=async()=>{t(),e=await window.navigator.wakeLock.request("screen").catch(a=>{a instanceof DOMException&&a.name==="NotAllowedError"||this.events.managedError$.next({id:"WakeLock",category:Ws.DOM,message:String(a)})})};this.subscription.add(Pt(Yu(document,"visibilitychange"),Yu(document,"fullscreenchange"),this.desiredState.playbackState.stateChangeEnded$).subscribe(()=>{let a=document.visibilityState==="visible",s=this.desiredState.playbackState.getState()==="playing",n=!!e&&!e?.released;a&&s?n||i():t()})).add(this.events.willDestruct$.subscribe(t))}setVideoTrackIdByQuality(e,t){let i=e.find(a=>a.quality===t);this.tracer.log("setVideoTrackIdByQuality",At({quality:t,availableTracks:At(e),track:At(i),isAutoQuality:!i})),i?this.desiredState.videoTrack.startTransitionTo(i):this.setAutoQuality(!0)}getActiveLiveDelay(e=!1){return e?this.tuning.live.lowLatencyActiveLiveDelay:this.tuning.live.activeLiveDelay}};import{Subscription as Bj,Observable as Oj,Subject as Vj,ValueSubject as _j,VideoQuality as Nj}from"@vkontakte/videoplayer-shared";var Fj=`@vkontakte/videoplayer-core@${Xu}`;export{Ia as ChromecastState,Ks as HttpConnectionType,Oj as Observable,se as PlaybackState,Ys as Player,Fj as SDK_VERSION,Vj as Subject,Bj as Subscription,Js as Surface,Xu as VERSION,_j as ValueSubject,mt as VideoFormat,Nj as VideoQuality};