@vkontakte/videoplayer-core 2.0.174-dev.477cdf9b9.0 → 2.0.174-dev.a50406f6b.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/es2015.cjs +3 -3
- package/es2015.esm.js +4 -4
- package/esnext.cjs +3 -3
- package/esnext.esm.js +3 -3
- package/evergreen.esm.js +3 -3
- package/package.json +2 -2
- package/types/index.d.ts +2 -2
package/es2015.esm.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @vkontakte/videoplayer-core v2.0.174-dev.
|
|
3
|
-
* Wed, 16 Sep 2026
|
|
2
|
+
* @vkontakte/videoplayer-core v2.0.174-dev.a50406f6b.0
|
|
3
|
+
* Wed, 16 Sep 2026 12:31:11 GMT
|
|
4
4
|
* https://st.mycdn.me/static/vkontakte-videoplayer/2-0-174/doc/
|
|
5
5
|
*/
|
|
6
|
-
import{objectEntries as ue}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as de}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as fe}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as pe,assertNonNullable as me,isNonNullable as he,ValueSubject as ge,Subject as _e,Subscription as ve,merge as ye,observableFrom as be,fromEvent as xe,map as Se,tap as Ce,filterChanged as we,isNullable as Te,ErrorCategory as Ee}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Ae,combine as je,debounce as Me,ErrorCategory as Ne,filter as Pe,filterChanged as Fe,isNonNullable as Ie,isNullable as Le,map as Re,Subscription as ze,ValueSubject as Be}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Ve,assertNonNullable as He,ErrorCategory as Ue,getHighestQuality as We,isNonNullable as Ge}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Ke}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as qe}from"@vkontakte/videoplayer-shared/es2015";import{createTimers as nt,TimerModule as rt}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as at}from"@vkontakte/videoplayer-shared/es2015";import{isBrowserWindow as ot,ValueSubject as st}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as ct}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as lt,isNullable as ut}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as M}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as ft,isBrowserWindow as pt}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as gt,isBrowserWindow as _t}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as xt,isBrowserWindow as St}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as It,isBrowserWindow as Lt}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Gt,ErrorCategory as Kt,filter as qt,Subject as Jt,Subscription as Yt,tap as Xt,ValueSubject as Zt,fromEvent as Qt,getWindow as $t}from"@vkontakte/videoplayer-shared/es2015";import{ValueSubject as rn,Subject as an,map as on,Subscription as sn,combine as cn,filterChanged as ln,assertNonNullable as un}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as fn}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as pn}from"@vkontakte/videoplayer-shared/es2015";import{objectFromEntries as mn}from"@vkontakte/videoplayer-shared/es2015";import{promiseFinally as hn}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as gn,Subject as _n,merge as vn}from"@vkontakte/videoplayer-shared/es2015";import"@vkontakte/videoplayer-shared/es2015";import{assertNever as xn,debounce as Sn,ErrorCategory as Cn,fromEvent as wn,map as Tn,merge as En,observableFrom as Dn,Subject as On,Subscription as kn,timeout as An}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as In}from"@vkontakte/videoplayer-shared/es2015";import{clearVideoElement as Ln,fromEvent as Rn,getWindow as zn,Subscription as Bn}from"@vkontakte/videoplayer-shared/es2015";import{clearVideoElement as Vn}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as nr}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as rr}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as ir,isNonNullable as ar,isNullable as or,fromEvent as sr,merge as cr,observableFrom as lr,filterChanged as ur,map as dr,Subject as fr,Subscription as pr,ValueSubject as mr,ErrorCategory as hr}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as gr,isNullable as _r,Subscription as vr}from"@vkontakte/videoplayer-shared/es2015";import{fromEvent as P,map as Mr,merge as Nr,filterChanged as Pr,isNonNullable as Fr,Subject as Ir,filter as Lr,mapTo as Rr,combine as zr,once as Br,shareReplay as F,throttle as Vr,ErrorCategory as Hr,ErrorOrigin as Ur,ValueSubject as Wr,Subscription as Gr}from"@vkontakte/videoplayer-shared/es2015";import{VideoQuality as Zr}from"@vkontakte/videoplayer-shared/es2015";import{assertNotEmptyArray as $r,getWindow as ei,isInvariantQuality as ti,ValueSubject as ni}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as ri}from"@vkontakte/videoplayer-shared/es2015";import{objectFromEntries as ii}from"@vkontakte/videoplayer-shared/es2015";import{now as oi}from"@vkontakte/videoplayer-shared/es2015";import{flattenObject as ci,isInvariantQuality as li,isLowerOrEqual as ui,isNonNullable as di,now as fi}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as pi}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as mi}from"@vkontakte/videoplayer-shared/es2015";import{isLowerOrEqual as hi,isNonNullable as gi,isNullable as _i}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as ji,isNonNullable as Mi,isNullable as Ni}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as Pi}from"@vkontakte/videoplayer-shared/es2015";import{Subscription as Fi}from"@vkontakte/videoplayer-shared/es2015";import{Subscription as Ri}from"@vkontakte/videoplayer-shared/es2015";import{isHigher as Xi,isInvariantQuality as Zi,isNonNullable as Qi}from"@vkontakte/videoplayer-shared/es2015";import{isHigherOrEqual as ea,isLowerOrEqual as ta,isNonNullable as na,videoSizeToQuality as ra}from"@vkontakte/videoplayer-shared/es2015";import{isHigherOrEqual as aa,isNullable as oa}from"@vkontakte/videoplayer-shared/es2015";import{isHigher as sa,isLower as ca,isNonNullable as la,isNullable as ua,videoHeightToQuality as da}from"@vkontakte/videoplayer-shared/es2015";import{isHigherOrEqual as _a,isNonNullable as va,isNullable as ya,now as ba}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Sa}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Ca}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Ea,isLowerOrEqual as Da,isNonNullable as Oa,isNullable as ka}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as ja}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Na,now as Pa}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Ba,assertNonNullable as Va,combine as Ha,debounce as Ua,ErrorCategory as Wa,filter as Ga,filterChanged as Ka,isNonNullable as qa,map as Ja,merge as Ya,observableFrom as Xa,once as Za,Subscription as Qa,ValueSubject as $a,videoQualityToHeight as eo,videoSizeToQuality as to}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as no}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as ao,isNullable as oo,assertNonNullable as so}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as co}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as lo,assertNonNullable as uo,now as fo}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as xo}from"@vkontakte/videoplayer-shared/es2015";import{Subject as Co}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as wo}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as Eo}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Do}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as Io}from"@vkontakte/videoplayer-shared/es2015";import{debounce as Lo,filter as Ro,fromEvent as zo,interval as Bo,isHigher as Vo,isInvariantQuality as Ho,isLower as Uo,merge as Wo,Subject as Go,Subscription as Ko}from"@vkontakte/videoplayer-shared/es2015";import{map as Yo,Observable as Xo}from"@vkontakte/videoplayer-shared/es2015";import{fromEvent as Zo}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as es}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as ts}from"@vkontakte/videoplayer-shared/es2015";import{filter as ws,filterChanged as Ts,isNonNullable as Es}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Ds,assertNonNullable as Os,debounce as ks,ErrorCategory as As,filter as js,filterChanged as Ms,fromEvent as Ns,isNonNullable as Ps,isNullable as Fs,map as Is,mapTo as Ls,merge as Rs,observableFrom as zs,once as Bs,Subscription as Vs,throttle as Hs}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Us}from"@vkontakte/videoplayer-shared/es2015";import{videoSizeToQuality as Ws}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as Qs,now as $s,once as ec,Subscription as tc,ValueSubject as nc,isNonNullable as rc,safeStorage as ic,filterChanged as ac}from"@vkontakte/videoplayer-shared/es2015";import{combine as mc,map as hc,observeElementSize as gc,Subscription as _c,ValueSubject as vc,noop as yc}from"@vkontakte/videoplayer-shared/es2015";import{filter as xc,map as Sc,once as Cc}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Tc}from"@vkontakte/videoplayer-shared/es2015";import{filterChanged as Ec,isNonNullable as Dc,isNullable as Oc,now as kc,once as Ac,Subscription as jc,ValueSubject as Mc}from"@vkontakte/videoplayer-shared/es2015";import{isInvariantQuality as Pc,isNonNullable as Fc,isNullable as Ic,Subscription as Lc,ValueSubject as Rc}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as zc}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as Yc}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as Xc}from"@vkontakte/videoplayer-shared/es2015";import{stringTrimStart as Zc}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Qc}from"@vkontakte/videoplayer-shared/es2015";import{abortable as el,assertNonNullable as tl,ErrorCategory as nl,ErrorOrigin as rl,filter as il,filterChanged as al,flattenObject as ol,fromEvent as sl,getTraceSubscriptionMethod as cl,getWindow as ll,interval as ul,isNonNullable as dl,isNullable as fl,map as pl,merge as ml,nowInt as hl,Subject as gl,Subscription as _l,SubscriptionRemovable as vl,ValueSubject as z}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as yl}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as bl}from"@vkontakte/videoplayer-shared/es2015";import{abortable as Cl,assertNever as wl,ErrorCategory as Tl,flattenObject as El,fromEvent as Dl,getWindow as Ol,isNonNullable as kl,merge as Al,now as jl,Subject as Ml,Subscription as Nl,suppressAbort as Pl,ValueSubject as Fl,videoQualityToHeight as Il,VideoQuality as Ll,isAbortError as Rl}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Bl,ErrorOrigin as Vl}from"@vkontakte/videoplayer-shared/es2015";import{devNull as Jl,getWindow as Yl}from"@vkontakte/videoplayer-shared/es2015";import{stringReplaceAll as su}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as cu}from"@vkontakte/videoplayer-shared/es2015";import{stringPadStart as lu}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as uu}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as du}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as fu}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as pu}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as hu,isNullable as gu}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as _u}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as wu}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Tu}from"@vkontakte/videoplayer-shared/es2015";import{requestIdleCallbackPolyfilled as Eu}from"@vkontakte/videoplayer-shared/es2015";import{abortable as Du,assertNonNullable as Ou,ErrorCategory as ku,ErrorOrigin as Au,flattenObject as B,fromEvent as ju,getExponentialDelay as Mu,getWindow as Nu,isAbortError as Pu,isHigher as Fu,isNonNullable as V,isNullable as H,once as Iu,Subject as Lu,Subscription as Ru,ValueSubject as zu}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Bu}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Uu}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as bd}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as xd,isNonNullable as Sd,isNullable as Cd}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as wd}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Fd}from"@vkontakte/videoplayer-shared/es2015";import{videoSizeToQuality as Id}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Jd,getWindow as Yd,isNonNullable as Xd,isNullable as Zd,now as Qd,isAbortError as $d}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as tf,getWindow as nf,isAbortError as rf,isNullable as af,now as of}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as cf}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as lf,ErrorCategory as uf,isNullable as df,ValueSubject as ff}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as hf,fromEvent as gf,isNullable as _f,Subject as vf,Subscription as yf,ValueSubject as bf}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as xf,ErrorCategory as Sf,Subject as Cf}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as Af}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as jf,isHigher as Mf,isLower as Nf,isLowerOrEqual as Pf,VideoQuality as Ff}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Jf,combine as Yf,ErrorCategory as Xf,filter as Zf,filterChanged as Qf,fromEvent as $f,isNonNullable as ep,map as tp,merge as np}from"@vkontakte/videoplayer-shared/es2015";import{combine as ap,merge as op,filter as sp,filterChanged as cp,isNullable as lp,map as up,ValueSubject as dp,isNonNullable as fp}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as bp,ValueSubject as xp}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Dp,combine as Op,ErrorCategory as kp,filter as Ap,filterChanged as jp,fromEvent as Mp,interval as Np,isNonNullable as Pp,isNullable as Fp,map as Ip,now as Lp,throttle as Rp}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as Bp,ValueSubject as Vp}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Gp,assertNonNullable as Kp,combine as qp,debounce as Jp,ErrorCategory as Yp,filter as Xp,filterChanged as Zp,fromEvent as Qp,isNonNullable as $p,isNullable as em,map as tm,merge as nm,observableFrom as rm,once as im,Subscription as am,throttle as om}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as sm}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as cm}from"@vkontakte/videoplayer-shared/es2015";import{abortable as um,assertNonNullable as dm,combine as fm,ErrorCategory as pm,ErrorOrigin as mm,filter as hm,filterChanged as gm,flattenObject as _m,fromEvent as vm,getTraceSubscriptionMethod as ym,interval as bm,isNonNullable as xm,isNullable as Sm,map as Cm,merge as wm,now as Tm,Subject as Em,Subscription as Dm,SubscriptionRemovable as Om,tap as km,throttle as Am,ValueSubject as W}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as jm}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Mm}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Nm}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as Pm}from"@vkontakte/videoplayer-shared/es2015";import{cancelIdleCallbackPolyfilled as Fm}from"@vkontakte/videoplayer-shared/es2015";import{requestIdleCallbackPolyfilled as Im}from"@vkontakte/videoplayer-shared/es2015";import{promiseFinally as Lm}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Rm,ErrorCategory as zm,Subject as Bm}from"@vkontakte/videoplayer-shared/es2015";import{abortable as Km,assertNonNullable as qm,ErrorCategory as Jm,ErrorOrigin as Ym,flattenObject as Xm,fromEvent as Zm,getExponentialDelay as Qm,getWindow as $m,isHigher as eh,isNonNullable as th,isNullable as G,now as nh,once as rh,Subject as ih,Subscription as ah,ValueSubject as oh,isAbortError as sh}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as lh}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as uh}from"@vkontakte/videoplayer-shared/es2015";import{abortable as dh,assertNever as fh,fromEvent as ph,merge as mh,now as hh,Subject as gh,ValueSubject as _h,flattenObject as vh,ErrorCategory as yh,SubscriptionRemovable as bh,getWindow as xh,isNonNullable as Sh,suppressAbort as Ch,videoQualityToHeight as wh,VideoQuality as Th}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Eh,ErrorOrigin as Dh}from"@vkontakte/videoplayer-shared/es2015";import{devNull as Ph,getWindow as Fh}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as Jh,ValueSubject as Yh}from"@vkontakte/videoplayer-shared/es2015";import{combine as ng,merge as rg,filter as ig,filterChanged as ag,isNullable as og,map as sg,ValueSubject as cg,isNonNullable as lg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as dg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as fg}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as hg,combine as gg,debounce as _g,ErrorCategory as vg,filter as yg,filterChanged as bg,isNonNullable as xg,isNullable as Sg,map as Cg,merge as wg,observableFrom as Tg,Subscription as Eg,ValueSubject as Dg,VideoQuality as Og}from"@vkontakte/videoplayer-shared/es2015";import{objectFromEntries as kg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as Ag}from"@vkontakte/videoplayer-shared/es2015";import{videoSizeToQuality as jg,getExponentialDelay as Mg}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as Vg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as Hg}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Ug,Subscription as Wg,throttle as Gg,ValueSubject as Kg,Subject as qg,ErrorCategory as Jg}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Zg,debounce as Qg,ErrorCategory as $g,fromEvent as e_,isInvariantQuality as t_,isNonNullable as n_,isNullable as r_,map as i_,merge as a_,observableFrom as o_,Subscription as s_,ValueSubject as c_,VideoQuality as l_}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as d_}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as f_}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as p_}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as m_,assertNonNullable as h_,debounce as g_,ErrorCategory as __,isHigherOrEqual as v_,isLowerOrEqual as y_,isNonNullable as b_,merge as x_,observableFrom as S_,Subscription as C_,map as w_}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as E_,debounce as D_,merge as O_,observableFrom as k_,Subscription as A_,map as j_,ValueSubject as M_,ErrorCategory as N_,VideoQuality as P_}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as F_}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as U_,assertNonNullable as W_,ErrorCategory as G_,ErrorOrigin as K_,filter as q_,isNonNullable as J_,isNullable as Y_,map as X_,merge as Z_,once as Q_,Subject as K,Subscription as $_,ValueSubject as q,flattenObject as ev,devNull as tv,getWindow as nv}from"@vkontakte/videoplayer-shared/es2015";import{Observable as rv,map as iv,Subscription as av,Subject as ov,now as sv,combine as cv}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as uv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as dv,Subscription as fv,combine as pv,filter as mv,once as hv}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as gv}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as yv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as bv,Subject as xv,Subscription as Sv,merge as Cv,isNonNullable as wv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorOrigin as Tv,flattenObject as Ev,isNullable as Dv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Av}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Mv,ErrorOrigin as Nv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorOrigin as Fv,flattenObject as Iv}from"@vkontakte/videoplayer-shared/es2015";import{filterChanged as Rv,flattenObject as zv,fromEvent as Bv,getWindow as Vv,isNonNullable as Hv,merge as Uv,now as Wv,Subject as Gv,Subscription as Kv,ErrorOrigin as qv}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as Xv,isNonNullable as Zv,getWindow as Qv}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as ny,isNonNullable as ry,Subscription as iy}from"@vkontakte/videoplayer-shared/es2015";import{fromEvent as cy,once as ly,combine as uy,Subscription as dy,ValueSubject as fy,map as py,filter as my,isNonNullable as hy,now as J,safeStorage as gy,getWindow as _y}from"@vkontakte/videoplayer-shared/es2015";import{fillWithDefault as Oy,VideoQuality as ky}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as My,combine as Ny,devNull as Py,ErrorCategory as Fy,filter as Y,filterChanged as X,flattenObject as Iy,fromEvent as Ly,getPlayerId as Ry,getTimersDiagnostics as zy,getTraceSubscriptionMethod as By,getWindow as Vy,InternalsExposure as Hy,isHigher as Uy,isInvariantQuality as Wy,isNonNullable as Gy,isNullable as Ky,Logger as qy,map as Z,mapTo as Jy,merge as Yy,now as Xy,once as Q,releaseTimers as Zy,retainTimers as Qy,Subject as $,Subscription as $y,tap as eb,throttle as tb,TracerFactory as nb,ValueSubject as rb,combineLatest as ib}from"@vkontakte/videoplayer-shared/es2015";import{merge as ab,map as ob,filter as sb,isNonNullable as cb}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as ub}from"@vkontakte/videoplayer-shared/es2015";import{filter as fb,once as pb}from"@vkontakte/videoplayer-shared/es2015";import{requestIdleCallbackPolyfilled as hb}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as gb}from"@vkontakte/videoplayer-shared/es2015";import{cancelIdleCallbackPolyfilled as _b}from"@vkontakte/videoplayer-shared/es2015";import{devNull as vb,getWindow as yb}from"@vkontakte/videoplayer-shared/es2015";import{Subscription as Db,Observable as Ob,Subject as kb,ValueSubject as Ab,VideoQuality as jb}from"@vkontakte/videoplayer-shared/es2015";var _oxcModgg1wbv=function(){function e(t){"@babel/helpers - typeof";return e=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},e(t)}var t=e;function n(e,n){if(t(e)!=`object`||!e)return e;var r=e[Symbol._oxc_toPrimitive];if(r!==void 0){var i=r.call(e,n||`default`);if(t(i)!=`object`)return i;throw TypeError(`@@_oxc_toPrimitive must return a primitive value.`)}return(n===`string`?String:Number)(e)}var t=e,r=n;function i(e){var n=r(e,`string`);return t(n)==`symbol`?n:n+``}var a=i;function o(e,t,n){return(t=a(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var s=o;function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?c(Object(n),!0).forEach(function(t){s(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function u(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){n(e);return}s.done?t(c):Promise.resolve(c).then(r,i)}function d(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var a=e.apply(t,n);function o(e){u(a,r,i,o,s,`next`,e)}function s(e){u(a,r,i,o,s,`throw`,e)}o(void 0)})}}function f(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.includes(r))continue;n[r]=e[r]}return n}var p=f;function m(e,t){if(e==null)return{};var n,r,i=p(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.includes(n)||{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function h(e,t){this.v=e,this.k=t}var g=h;function _(e){return new g(e,0)}var g=h;function v(e){return function(){return new y(e.apply(this,arguments))}}function y(e){var t,n;function r(t,n){try{var a=e[t](n),o=a.value,s=o instanceof g;Promise.resolve(s?o.v:o).then(function(n){if(s){var c=t===`return`?`return`:`next`;if(!o.k||n.done)return r(c,n);n=e[c](n).value}i(a.done?`return`:`normal`,n)},function(e){r(`throw`,e)})}catch(e){i(`throw`,e)}}function i(e,i){switch(e){case`return`:t.resolve({value:i,done:!0});break;case`throw`:t.reject(i);break;default:t.resolve({value:i,done:!1})}(t=t.next)?r(t.key,t.arg):n=null}this._invoke=function(e,i){return new Promise(function(a,o){var s={key:e,arg:i,resolve:a,reject:o,next:null};n?n=n.next=s:(t=n=s,r(e,i))})},typeof e.return!=`function`&&(this.return=void 0)}y.prototype[typeof Symbol==`function`&&Symbol.asyncIterator||`@@asyncIterator`]=function(){return this},y.prototype.next=function(e){return this._invoke(`next`,e)},y.prototype.throw=function(e){return this._invoke(`throw`,e)},y.prototype.return=function(e){return this._invoke(`return`,e)};const b=[`name`],x=[`url`],S=[`url`],C=[`downloadingItems`],w=[`data`],T=[`container`];var E=l,D=d,ee=m,te=_,O=v,ne=`2.0.174-dev.477cdf9b9.0`,re;(e=>{e.STOPPED=`stopped`,e.READY=`ready`,e.PLAYING=`playing`,e.PAUSED=`paused`})(re||={});var ie;(e=>{e.MPEG=`MPEG`,e.DASH=`DASH`,e.DASH_SEP=`DASH_SEP`,e.DASH_SEP_VK=`DASH_SEP`,e.DASH_WEBM=`DASH_WEBM`,e.DASH_WEBM_AV1=`DASH_WEBM_AV1`,e.DASH_STREAMS=`DASH_STREAMS`,e.DASH_WEBM_VK=`DASH_WEBM`,e.DASH_ONDEMAND=`DASH_ONDEMAND`,e.DASH_ONDEMAND_VK=`DASH_ONDEMAND`,e.DASH_LIVE=`DASH_LIVE`,e.DASH_LIVE_CMAF=`DASH_LIVE_CMAF`,e.DASH_LIVE_WEBM=`DASH_LIVE_WEBM`,e.HLS=`HLS`,e.HLS_ONDEMAND=`HLS_ONDEMAND`,e.HLS_JS=`HLS`,e.HLS_FMP4=`HLS_FMP4`,e.HLS_LIVE=`HLS_LIVE`,e.HLS_LIVE_CMAF=`HLS_LIVE_CMAF`,e.WEB_RTC_LIVE=`WEB_RTC_LIVE`})(ie||={});var ae;(e=>{e.AV1=`av1`,e.VP9=`vp9`,e.AVC1=`avc1`,e.HEV1=`hev1`})(ae||={});var oe;(e=>{e.NOT_AVAILABLE=`NOT_AVAILABLE`,e.AVAILABLE=`AVAILABLE`,e.CONNECTING=`CONNECTING`,e.CONNECTED=`CONNECTED`})(oe||={});var se;(e=>{e.HTTP1=`http1`,e.HTTP2=`http2`,e.QUIC=`quic`})(se||={});var ce;(e=>{e.NONE=`none`,e.INLINE=`inline`,e.FULLSCREEN=`fullscreen`,e.SECOND_SCREEN=`second_screen`,e.PIP=`pip`,e.INVISIBLE=`invisible`})(ce||={});var le;(e=>{e.TRAFFIC_SAVING=`traffic_saving`,e.HIGH_QUALITY=`high_quality`,e.UNKNOWN=`unknown`})(le||={});var De=e=>new Promise((t,n)=>{let r=document.createElement(`script`);r.setAttribute(`src`,e),r.onload=()=>t(),r.onerror=e=>n(e),document.body.appendChild(r)});class Oe{constructor(e){this.connection$=new ge(void 0),this.castState$=new ge(`NOT_AVAILABLE`),this.errorEvent$=new _e,this.contentId=void 0,this.realCastState$=new ge(`NOT_AVAILABLE`),this.subscription=new ve,this.log=void 0,this.params=void 0,this.isDestroyed=!1,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 n=he(window.chrome?.cast),r=!!window.__onGCastApiAvailable;n?this.initializeCastApi():(window.__onGCastApiAvailable=e=>{delete window.__onGCastApiAvailable,e&&!this.isDestroyed&&this.initializeCastApi()},r||De(`https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1`).catch(()=>this.errorEvent$.next({id:`ChromecastLoading`,category:Ee.NETWORK,message:`Script loading failed!`})))}connect(){cast.framework.CastContext.getInstance()?.requestSession()}disconnect(){var e;(e=cast.framework.CastContext.getInstance())==null||(e=e.getCurrentSession())==null||e.endSession(!0)}stopMedia(){return new Promise((e,t)=>{var n;(n=cast.framework.CastContext.getInstance())==null||(n=n.getCurrentSession())==null||(n=n.getMediaSession())==null||n.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){he(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();Te(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();Te(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.isDestroyed=!0,this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),n=cast.framework.CastContext.getInstance();this.subscription.add(xe(n,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(e=>{switch(e.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:var t;this.contentId=(t=n.getCurrentSession())==null||(t=t.getMediaSession())==null||(t=t.media)==null?void 0:t.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 pe(e.sessionState)}})).add(ye(xe(n,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(Ce(e=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(e)}`})}),Se(e=>e.castState)),be([n.getCastState()])).pipe(we(),Se(ke),Ce(e=>{this.log({message:`realCastState$: ${e}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(r=>{let i=r===`CONNECTED`,a=he(this.connection$.getValue());if(i&&!a){var o;let r=n.getCurrentSession();me(r);let i=r.getCastDevice(),a=(o=r.getMediaSession())==null||(o=o.media)==null?void 0:o.contentId;(Te(a)||a===this.contentId)&&(this.log({message:`connection created`}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:r,castDevice:i}))}else!i&&a&&(this.log({message:`connection destroyed`}),this.connection$.next(void 0));this.castState$.next(r===`CONNECTED`?he(this.connection$.getValue())?`CONNECTED`:`AVAILABLE`:r)}))}initializeCastApi(){let e,t,n;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,n=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:n}),this.initListeners()}catch(e){this.errorEvent$.next({id:`ChromecastInitializer`,category:Ee.EXTERNAL_API,message:`[initializeCastApi] failed`,thrown:e})}}}var ke=e=>{switch(e){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 pe(e)}};var Je=`_offset_p`,Ye=e=>{if(Ke(e,Je))return!0;try{return new URL(e).searchParams.has(`offset_p`)}catch{return!1}},k=(e,t=0,n=0)=>{switch(n){case 0:return e.replace(Je,t===0?``:`_`+t.toFixed(0));case 1:{if(t===0)return e;let n=new URL(e);return n.searchParams.append(`playback_shift`,t.toFixed(0)),n.toString()}case 2:{let n=new URL(e);return!n.searchParams.get(`offset_p`)&&t===0?e:(n.searchParams.set(`offset_p`,t.toFixed(0)),n.toString())}default:qe(n)}return e},Xe=(e,t)=>{switch(t){case 0:return NaN;case 1:{let t=new URL(e);return Number(t.searchParams.get(`playback_shift`))}case 2:{let t=new URL(e);return Number(t.searchParams.get(`offset_p`)??0)}default:qe(t)}},Ze=e=>{let{source:t,format:n,meta:r,output:i}=e,a,o,s;switch(n){case`MPEG`:{let e=t[n];He(e);let r=We(Object.keys(e));He(r);let i=e[r];He(i),a=i,o=`video/mp4`,s=Qe();break}case`HLS`:case`HLS_FMP4`:case`HLS_ONDEMAND`:{let e=t[n];He(e),a=e.url,o=`application/x-mpegurl`,s=Qe();break}case`DASH_SEP`:case`DASH_ONDEMAND`:case`DASH_WEBM`:case`DASH_WEBM_AV1`:case`DASH_STREAMS`:{let e=t[n];He(e),a=e.url,o=`application/dash+xml`,s=Qe();break}case`DASH_LIVE_CMAF`:{let e=t[n];He(e),a=e.url,o=`application/dash+xml`,s=$e();break}case`HLS_LIVE`:case`HLS_LIVE_CMAF`:{let e=t[n];He(e),a=k(e.url),o=`application/x-mpegurl`,s=$e();break}case`DASH_LIVE`:case`WEB_RTC_LIVE`:{let e=`Unsupported format for Chromecast`,t=Error(e);throw i.error$.next({id:`ChromecastProvider.createMediaInfo()`,category:Ue.VIDEO_PIPELINE,message:e,thrown:t}),t}case`DASH`:case`DASH_LIVE_WEBM`:throw Error(`${n} is no longer supported`);default:return Ve(n)}let c=et(r.videoId??a,o);c.contentUrl=a,c.streamType=s,c.metadata=tt();let{title:l,subtitle:u}=r;return Ge(l)&&(c.metadata.title=l),Ge(u)&&(c.metadata.subtitle=u),c};function Qe(){var e;return((e=chrome.cast)==null||(e=e.media)==null||(e=e.StreamType)==null?void 0:e.BUFFERED)??`BUFFERED`}function $e(){var e;return((e=chrome.cast)==null||(e=e.media)==null||(e=e.StreamType)==null?void 0:e.LIVE)??`LIVE`}function et(e,t){var n;return!((n=chrome.cast)==null||(n=n.media)==null)&&n.MediaInfo?new chrome.cast.media.MediaInfo(e,t):{contentId:e,contentType:t,metadata:{title:``,subtitle:``},streamType:Qe()}}function tt(){var e;return!((e=chrome.cast)==null||(e=e.media)==null)&&e.GenericMediaMetadata?new chrome.cast.media.GenericMediaMetadata:{images:[],metadataType:0,releaseDate:``,subtitle:``,title:``,releaseYear:1970,type:0}}var A=(e,t,n=!1)=>{let r=e.getTransition();(n||!r||r.to===t)&&e.setState(t)};var j=nt(rt.CORE);class it{constructor(e){this.params=void 0,this.interval=0,this.startVideoPosition=void 0,this.startTs=void 0,this.params=e}start(e=0){j.clearInterval(this.interval),this.startVideoPosition=e,this.startTs=Date.now(),this.interval=j.setInterval(()=>{let e=(Date.now()-this.startTs)/1e3,t=this.startVideoPosition+e;this.params.output.position$.next(t)},1e3)}pause(){j.clearInterval(this.interval)}destroy(){j.clearInterval(this.interval)}}class dt{constructor(){this._current=void 0,this._current_version=void 0,this._chromeVersion=void 0,this._firefoxVersion=void 0,this._safariVersion=void 0,this._operaVersion=void 0,this._edgeVersion=void 0,this._yandexVersion=void 0,this._isMiuiBrowser=!1}get current(){return this._current}get isChrome(){return this.current===`Chrome`}get isChromiumBased(){return ct([`Chrome`,`Chromium`,`Opera`,`Yandex`,`Edge`,`SamsungBrowser`],this.current)}get isFirefox(){return this.current===`Firefox`}get isSafari(){return this.current===`Safari`}get isOpera(){return this.current===`Opera`}get isEdge(){return this.current===`Edge`}get isYandex(){return this.current===`Yandex`}get isSamsungBrowser(){return this.current===`SamsungBrowser`}get currentVersion(){return this._current_version}get chromeVersion(){return this._chromeVersion}get firefoxVersion(){return this._firefoxVersion}get safariVersion(){return this._safariVersion}get operaVersion(){return this._operaVersion}get edgeVersion(){return this._edgeVersion}get yandexVersion(){return this._yandexVersion}get isMiuiBrowser(){return this._isMiuiBrowser}detect(){let{userAgent:e}=navigator;try{let t=/yabrowser/i.test(e)?`Yandex`:void 0,n=/samsungbrowser/i.test(e)?`SamsungBrowser`:void 0,r=/chrome|crios/i.test(e)?`Chrome`:void 0,i=/chromium/i.test(e)?`Chromium`:void 0,a=/firefox|fxios/i.test(e)?`Firefox`:void 0,o=/smart-tv;.*tizen/i.test(e)?`Chrome`:void 0,s=/webkit|safari|khtml/i.test(e)?`Safari`:void 0,c=/opr\//i.test(e)?`Opera`:void 0,l=/edg/i.test(e)?`Edge`:void 0;this._isMiuiBrowser=/(XiaoMi)|(MiuiBrowser)/i.test(e),this._current=t||n||a||c||l||r||i||o||s||`Rest`}catch(e){console.error(e)}this.isChrome&&this.detectChromeVersion(),this.isFirefox&&this.detectFirefoxVersion(),this.isSafari&&this.detectSafariVersion(),this.isOpera&&this.detectOperaVersion(),this.isEdge&&this.detectEdgeVersion(),this.isYandex&&this.detectYandexVersion()}detectVersion(e){try{let{userAgent:t}=lt().navigator,n=t.match(e);if(!n)return;let r=n[1],i=parseInt(r,10);if(!isNaN(i))return this._current_version=i,i}catch(e){console.error(e)}}detectChromeVersion(){this._chromeVersion=this.detectVersion(/Chrome\/(\d+\.\d+)/),ut(this._chromeVersion)&&(this._chromeVersion=this.detectVersion(/(\d+\.\d+\.\d+\.\d+)\/\d+\.\d+ TV/))}detectFirefoxVersion(){this._firefoxVersion=this.detectVersion(/Firefox\/(\d+\.\d+)/)}detectSafariVersion(){this._safariVersion=this.detectVersion(/Version\/(\d+)/)}detectOperaVersion(){this._operaVersion=this.detectVersion(/OPR\/(\d+\.\d+)/)}detectEdgeVersion(){this._edgeVersion=this.detectVersion(/Edg\/(\d+\.\d+)/)}detectYandexVersion(){this._yandexVersion=this.detectVersion(/YaBrowser\/(\d+\.\d+\.\d+)/)}}var mt=()=>{var e;return/Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(navigator.appVersion??navigator.userAgent)||((e=navigator)==null||(e=e.userAgentData)==null?void 0:e.mobile)};class ht{constructor(e){this._displayChecker=void 0,this._isMobile=void 0,this._current=void 0,this._iosVersion=void 0,this._highEntropyValues={},this._os={name:`Unknown`,version:`Unknown`,full:`Unknown`},this._details={vendor:`Unknown`,model:`Unknown`},this._hardware={},this._gpuDetection=void 0,this._displayChecker=e}get current(){return this._current}get os(){return this._os}get details(){return this._details}get hardware(){return this._hardware}get highEntropyValues(){return this._highEntropyValues}get isIOS(){return this._highEntropyValues.platform===`iOS`||M(this.os.name.toLowerCase(),`ios`)||M([`iPhone`,`iPad`,`iPod`],this.current)}get isIPadOS(){let e=this.current===`Mac`&&this._displayChecker.isTouch;return this.current===`iPad`||e}get isMac(){return this._highEntropyValues.platform===`macOS`||M(this.os.name.toLowerCase(),`mac`)||this.current===`Mac`}get isApple(){return this.isIOS||this.isMac}get isIphoneOrOldIpad(){if(!this.isApple||!this._displayChecker.isTouch)return!1;let e=this.current===`iPad`||this._displayChecker.width>700,t=this._iosVersion;return!e||e&&!!t&&t<16}get isAndroid(){return this._highEntropyValues.platform===`Android`||M(this.os.name.toLowerCase(),`android`)||this.current===`Android`}get isWindows(){return M(this.os.name.toLowerCase(),`windows`)}get isLinux(){return M(this.os.name.toLowerCase(),`linux`)&&!this.isAndroid}get isMobile(){return this._highEntropyValues.mobile||this._isMobile}get iOSVersion(){return this._iosVersion}detect(){let e=ft();if(!pt(e))return;let{userAgent:t}=e.navigator;try{this._isMobile=mt()}catch(e){console.error(`DeviceChecker: calling isMobile error - `,e)}this.detectDevice(t),this.detectOS(t),this.detectDeviceDetails(t),this.detectHardware(e),this.detectHighEntropyValues(),this.isIOS&&this.detectIOSVersion()}detectHardware(e){let t=e.navigator;try{this._hardware={cpuCores:t.hardwareConcurrency,memoryGb:t.deviceMemory}}catch(e){console.error(`DeviceChecker: detectHardware error - `,e)}}detectGpu(){return this._gpuDetection??=this.requestGpuInfo(),this._gpuDetection}requestGpuInfo(){var e=this;return D(function*(){let t=ft();if(pt(t))try{var n,r;let i=yield t.navigator.gpu?.requestAdapter();e._hardware=E(E({},e._hardware),{},{gpuVendor:(i==null||(n=i.info)==null?void 0:n.vendor)||void 0,gpuArchitecture:(i==null||(r=i.info)==null?void 0:r.architecture)||void 0})}catch(e){console.error(`DeviceChecker: detectGpu error - `,e)}})()}detectHighEntropyValues(){var e=this;return D(function*(){let t=ft();if(!pt(t))return;let{userAgentData:n}=t.navigator;if(n?.getHighEntropyValues){let t=yield n.getHighEntropyValues([`architecture`,`bitness`,`brands`,`mobile`,`platform`,`formFactor`,`model`,`platformVersion`,`wow64`]);e._highEntropyValues=t,t.platform&&(e._os.name=e.normalizeOSName(t.platform),t.platformVersion&&(e._os.version=e.normalizeOSVersion(t.platformVersion),e._os.full=`${e._os.name} ${e._os.version}`)),t.model&&(e._details.model=t.model)}})()}detectDevice(e){try{let t=/android/i.test(e)?`Android`:void 0,n=/iphone/i.test(e)?`iPhone`:void 0,r=/ipad/i.test(e)?`iPad`:void 0,i=/ipod/i.test(e)?`iPod`:void 0,a=/mac/i.test(e)?`Mac`:void 0,o=/webOS|BlackBerry|IEMobile|Opera Mini/i.test(e)?`RestMobile`:void 0;this._current=t||n||r||i||o||a||`Desktop`}catch(e){console.error(`DeviceChecker: device detection error - `,e)}}detectOS(e){try{for(let[t,n]of[[/(windows nt) (6\.[23]); arm/i,[`Windows RT`]],[/(windows nt) (6\.3); arm/i,[`Windows RT 8.1`]],[/(windows (?:phone|mobile|iot))(?: os)?[/ ]?([\d.]+)/i,[`Windows Mobile`,2]],[/(windows)[/ ](xp|vista|7|8(\.1)?|10|11|2000|me)/i,[1,1]],[/windows nt ?([\d.]+)/i,[`Windows`,1]],[/(windows)[/ ](95|98|me|2000|xp|vista|7|8|8\.1|10|11)/i,[1,2]],[/(iphone os|cpu iphone os) ([\d_.]+)/i,[`iOS`,2]],[/(ipad os|cpu os) ([\d_.]+)/i,[`iPadOS`,2]],[/(ipod os|cpu ipod os) ([\d_.]+)/i,[`iOS`,2]],[/(?:ios|os) ([\d_.]+) like mac os x/i,[`iOS`,1]],[/cfnetwork\/.+darwin/i,[`iOS`]],[/(mac os x) ?([\d_.]+)/i,[`macOS`,2]],[/(macintosh|mac os)/i,[`macOS`]],[/(android) ([\d.]+)/i,[1,2]],[/(harmonyos)[/ ]?([\d.]*)/i,[`HarmonyOS`,2]],[/\b(ubuntu|debian|fedora|centos|arch|linux)(?:[-/ ]([\w.]+))?/i,[1,2]],[/(cros)\D*([\d.]+)/i,[`Chrome OS`,2]],[/(freebsd|openbsd|netbsd|dragonfly)[/ ]?([\w.]*)/i,[1,2]],[/(sunos|solaris)?([\d.]*)/i,[`Solaris`,2]],[/(aix)?([\d.]*)/i,[`AIX`,2]]]){let r=e.match(t);if(r){let t=n.length>0,i=n.length>1,a=`Unknown`,o=`Unknown`;if(t){let e=n[0];typeof e==`number`?e<r.length&&r[e]!==void 0&&(a=r[e]):a=e}if(i){let e=n[1];typeof e==`number`?e<r.length&&r[e]!==void 0&&(o=r[e]):e!==void 0&&(o=e)}else r[2]===void 0?r[1]!==void 0&&t&&typeof n[0]==`string`&&(o=r[1]):o=r[2];a=this.normalizeOSName(a),o=this.normalizeOSVersion(o,a),a===`iOS`&&/ipad/i.test(e)?a=`iPadOS`:a===`iPadOS`&&/ip(hone|od)/i.test(e)&&(a=`iOS`),this._os={name:a,version:o||`Unknown`,full:o&&o!==`Unknown`?`${a} ${o}`:a};break}}}catch(e){console.error(`DeviceChecker: OS detection error - `,e)}}normalizeOSName(e){if(!e)return`Unknown`;let t=e.toLowerCase();return M(t,`windows`)?`Windows`:M(t,`mac os`)||M(t,`macintosh`)?`macOS`:M(t,`iphone`)||M(t,`ios`)?`iOS`:M(t,`ipados`)?`iPadOS`:M(t,`android`)?`Android`:M(t,`harmonyos`)?`HarmonyOS`:M(t,`linux`)?`Linux`:M(t,`cros`)?`Chrome OS`:M(t,`freebsd`)?`FreeBSD`:M(t,`openbsd`)?`OpenBSD`:M(t,`solaris`)||M(t,`sunos`)?`Solaris`:M(t,`aix`)?`AIX`:e}normalizeOSVersion(e,t){if(!e)return`Unknown`;if(e!==`Unknown`&&(e=e.replace(/_/g,`.`),t===`Windows`)){let t=parseFloat(e);if(!isNaN(t)){if(t>=11)return`11`;if(t>=10)return`10`;if(t===6.3)return`8.1`;if(t===6.2)return`8`;if(t===6.1)return`7`;if(t===6)return`Vista`;if(t===5.1||t===5.2)return`XP`;if(t===5)return`2000`;if(t===4)return`NT 4.0`}}return e}detectDeviceDetails(e){try{for(let[t,n]of[[/(iphone)/i,[`Apple`,`iPhone`]],[/(ipad)/i,[`Apple`,`iPad`]],[/(ipod)/i,[`Apple`,`iPod`]],[/(macintosh)/i,[`Apple`,`Macintosh`]],[/(windows[\w\-_ ]*phone)/i,[`Microsoft`,0]],[/(windows nt|win64|win32|wow64)/i,[`Microsoft`,`PC`]],[/\b(sch-i[89]0\d|shw-m380s|sm-[ptxs]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i,[`Samsung`,1]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?\d+a?|galaxy nexus)/i,[`Samsung`,1]],[/samsung[- ]((?!sm-[lr]|browser)[-\w]+)/i,[`Samsung`,1]],[/sec-(sgh\w+)/i,[`Samsung`,1]],[/smart-tv.+(samsung)/i,[`Samsung`,`Smart TV`]],[/(samsung).*tizen/i,[`Samsung`,`Smart TV`]],[/(pixel (?:c|tablet|[0-9a-z ]+))/i,[`Google`,1]],[/(pixelbook(?: go)?)/i,[`Google`,1]],[/nexus [0-9]/i,[`Google`,0]],[/(redmi[-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(mi[\w\-_ ]+)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(poco[\w ]+)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(hm[-_ ]?note?[\w ]*)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(?:xiao)?mi[\w\-_ ]+pad/i,[`Xiaomi`,0]],[/(?:huawei|honor) ?([-\w ]+)[;)]/i,[`Huawei`,1]],[/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][\dc][adnt]?)\b(?!.+d\/s)/i,[`Huawei`,1]],[/\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?)/i,[`Huawei`,1]],[/(?:one)?(?:plus)? ?([a\d0]\d\d\d?)(?: b|\))/i,[`OnePlus`,1]],[/droid.+; (cph2[3-6]\d[13579]|((?:gm|hd)19|(?:ac|be|in|kb)20|(?:d[en]|eb|le|mt)21|ne22)[0-2]\d)(?: bui|\))/i,[`OnePlus`,1]],[/(oneplus)[-_ ]?([-\w]*)/i,[`OnePlus`,2]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i,[`Realme`,1]],[/(realme)[-_ ]?([-\w]*)/i,[`Realme`,2]],[/; (\w+) bui.+ oppo/i,[`OPPO`,1]],[/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i,[`OPPO`,1]],[/\b(opd2(\d{3}a?))(?: bui|\))/i,[`OPPO`,1]],[/(oppo)[-_ ]?([-\w]*)/i,[`OPPO`,2]],[/; vivo (\w+)(?: bui|\))/i,[`Vivo`,1]],[/\b(v[12]\d{3}\w?[at])(?: bui|;)/i,[`Vivo`,1]],[/(vivo)[-_ ]?([-\w]*)/i,[`Vivo`,2]],[/\bmot(?:orola)?[- ]([\w\s]+)(\)| bui)/i,[`Motorola`,1]],[/((?:moto(?! 360)[-\w() ]+|xt\d{3,4}[cgkosw+]?[-\d]*|nexus 6)(?= bui|\)))/i,[`Motorola`,1]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b/i,[`Motorola`,0]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i,[`Motorola`,0]],[/droid.+; ([a-z]?\d[0-2]{2}[a-z]{2}|[c-g]\d{4}|so[-gl]\w+|xq-[a-z]{2}\d\d)(?= bui|\))/i,[`Sony`,1]],[/sony tablet [ps]/i,[`Sony`,`Xperia Tablet`]],[/\b(?:sony)?sgp\w+(?: bui|\))/i,[`Sony`,0]],[/(sony)[-_ ]?([-\w]*)/i,[`Sony`,2]],[/\blg[-e;/ ]+(?!.*(?:browser|netcast|android tv|watch|webos))(\w+)/i,[`LG`,1]],[/\blg-?([\d\w]+) bui/i,[`LG`,1]],[/(lm(?:-?f100[nv]?|-[\w.]+)(?= bui|\))|nexus [45])/i,[`LG`,1]],[/((?=lg)?[vl]k-?\d{3}) bui/i,[`LG`,0]],[/(lg)[-_ ]?([-\w]*)/i,[`LG`,2]],[/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,[`Nokia`,1]],[/nokia[-_ ]?(([-\w. ]*?))(?: bui|\)|;|\/)/i,[`Nokia`,1]],[/(nokia) (t[12][01])/i,[`Nokia`,2]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i,[`ASUS`,1]],[/(?:asus[-_ ])?(zenfone[\w\-_ ]*)/i,[`ASUS`,1]],[/(rog[\w\-_ ]*)/i,[`ASUS`,1]],[/(asus)[-_ ]?([-\w]*)/i,[`ASUS`,2]],[/lenovo[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i,[`Lenovo`,1]],[/(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])(?: bui|;|\)|\/)/i,[`Lenovo`,1]],[/(thinkpad[\w\-_ ]*)/i,[`Lenovo`,0]],[/(kf[a-z]{2}[a-z]*)(?: bui|\))/i,[`Amazon`,1]],[/(alexa)webm/i,[`Amazon`,`Echo`]],[/(fire[\w\-_ ]*)/i,[`Amazon`,0]],[/(amazon)[-_ ]?([-\w]*)/i,[`Amazon`,2]],[/(?:blackberry|\(bb10;) (\w+)/i,[`BlackBerry`,1]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,[`BlackBerry`,1]],[/(playbook);[-\w),; ]+(rim)/i,[`BlackBerry`,1]],[/(microsoft); (lumia[\w ]+)/i,[`Microsoft`,2]],[/(surface duo)/i,[`Microsoft`,`Surface Duo`]],[/(surface[\w\-_ ]*)/i,[`Microsoft`,0]],[/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,[`ZTE`,2]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,[`HTC`,2]],[/(alcatel|tcl)[-_ ]?([-\w]*)/i,[1,2]],[/(meizu)[-_ ]?([-\w]*)/i,[`Meizu`,2]],[/(tecno)[-_ ]?([-\w]*)/i,[`Tecno`,2]],[/(infinix)[-_ ]?([-\w]*)/i,[`Infinix`,2]],[/(micromax)[-_ ]?([-\w]*)/i,[`Micromax`,2]],[/(lava)[-_ ]?([-\w]*)/i,[`Lava`,2]],[/(panasonic)[-_ ]?([-\w]*)/i,[`Panasonic`,2]],[/(sharp)\/?([-\w]*)/i,[`Sharp`,2]],[/(benq)[-_ ]?([-\w]*)/i,[`BenQ`,2]],[/(palm)[-_ ]?([-\w]*)/i,[`Palm`,2]],[/(vertu)[-_ ]?([-\w]*)/i,[`Vertu`,2]],[/(gionee)[-_ ]?([-\w]*)/i,[`Gionee`,2]],[/(doogee)[-_ ]?([-\w]*)/i,[`Doogee`,2]],[/(ulefone)[-_ ]?([-\w]*)/i,[`Ulefone`,2]],[/(blackview)[-_ ]?([-\w]*)/i,[`Blackview`,2]],[/(cubot)[-_ ]?([-\w]*)/i,[`Cubot`,2]],[/(umidigi)[-_ ]?([-\w]*)/i,[`UMIDIGI`,2]],[/(oukitel)[-_ ]?([-\w]*)/i,[`Oukitel`,2]],[/(fairphone)[-_ ]?([-\w]*)/i,[`Fairphone`,2]],[/(cat)[-_ ]?([-\w]*)/i,[`Cat`,2]],[/(energy)[-_ ]?([-\w]*)/i,[`Energizer`,2]],[/(land rover)[-_ ]?([-\w]*)/i,[`Land Rover`,2]],[/(shield[\w\-_ ]*)/i,[`Nvidia`,0]],[/(crkey)/i,[`Google`,`Chromecast`]],[/(roku)[\dx]*/i,[`Roku`,0]],[/(apple)[-_ ]?tv/i,[`Apple`,`TV`]],[/(amazon)[-_ ]?tv/i,[`Amazon`,`Fire TV`]],[/(google)[-_ ]?tv/i,[`Google`,`TV`]],[/(smart[\w\-_ ]*tv)/i,[0,`Smart TV`]],[/(playstation[\w\-_ ]*)/i,[`Sony`,0]],[/(nintendo[\w\-_ ]*)/i,[`Nintendo`,0]],[/(xbox[\w\-_ ]*)/i,[`Microsoft`,0]],[/(googlebot)/i,[`Google`,`Bot`]],[/(bingbot)/i,[`Microsoft`,`Bing Bot`]],[/(yandexbot)/i,[`Yandex`,`Bot`]],[/(slackbot)/i,[`Slack`,`Bot`]],[/(twitterbot)/i,[`Twitter`,`Bot`]],[/(facebookbot)/i,[`Facebook`,`Bot`]],[/(linkedinbot)/i,[`LinkedIn`,`Bot`]],[/(tesla)[-_ ]?([-\w]*)/i,[`Tesla`,2]],[/(raspberry[\w\-_ ]*)/i,[`Raspberry Pi`,0]]]){let r=e.match(t);if(r){let e=n[0],t=n[1],i=typeof e==`number`?r[e]===void 0?`Unknown`:this.normalizeVendorName(r[e]):this.normalizeVendorName(e),a=`Unknown`;typeof t==`number`?a=r[t]===void 0?`Unknown`:r[t]:t===void 0?r[1]===void 0?r[0]!==void 0&&(a=r[0]):a=r[1]:a=t,a=this.normalizeModelName(a,i),this.details.vendor=i,this.details.model=a;break}}}catch(e){console.error(`DeviceChecker: device details detection error - `,e)}}normalizeVendorName(e){return e?{apple:`Apple`,samsung:`Samsung`,google:`Google`,xiaomi:`Xiaomi`,huawei:`Huawei`,oneplus:`OnePlus`,oppo:`OPPO`,vivo:`Vivo`,realme:`Realme`,motorola:`Motorola`,sony:`Sony`,lg:`LG`,nokia:`Nokia`,asus:`ASUS`,lenovo:`Lenovo`,amazon:`Amazon`,blackberry:`BlackBerry`,microsoft:`Microsoft`,zte:`ZTE`,htc:`HTC`,alcatel:`Alcatel`,tcl:`TCL`,meizu:`Meizu`,tecno:`Tecno`,infinix:`Infinix`,micromax:`Micromax`,lava:`Lava`,panasonic:`Panasonic`,sharp:`Sharp`,benq:`BenQ`,palm:`Palm`,honor:`Honor`,nvidia:`NVIDIA`,roku:`Roku`}[e.toLowerCase()]||e.charAt(0).toUpperCase()+e.slice(1).toLowerCase():`Unknown`}normalizeModelName(e,t){if(!e||e===`Unknown`)return e;if(e===`0`)return`Unknown`;let n=e.replace(/^build\//i,``).replace(/\s+bui$/i,``).replace(/\)$/,``).replace(/[;,)]/g,``).replace(/\s*\(.*?\)\s*/g,``).trim(),r=t.toLowerCase();return M(r,`samsung`)?n=n.replace(/^(sm-|gt-|sgh-|sch-)/i,``):M(r,`xiaomi`)?n=n.replace(/^(mi[\s\-_]*|redmi[\s\-_]*)/i,``):M(r,`oneplus`)?n=n.replace(/^oneplus[\s\-_]*/i,``):M(r,`google`)&&(n=n.replace(/^(pixel[\s\-_]*|nexus[\s\-_]*)/i,``)),n=n.replace(/_/g,` `).replace(/-/g,` `).replace(/\s+/g,` `).trim(),n?(n.length>0&&/^[a-z]/.test(n)&&(n=n.charAt(0).toUpperCase()+n.slice(1)),n):`Unknown`}detectIOSVersion(){try{let e=ft();if(!pt(e))return;if(this._highEntropyValues.platformVersion){let e=this._highEntropyValues.platformVersion.split(`.`).slice(0,2).join(`.`);this._iosVersion=parseFloat(e);return}if(this._os.version!==`Unknown`){let e=this._os.version.split(`.`),t=e.length>=2?`${e[0]}.${e[1]}`:e[0];this._iosVersion=parseFloat(t);return}let t=e.navigator.userAgent.match(/OS (\d+(_\d+)?)/i);t?.[1]&&(this._iosVersion=parseFloat(t[1].replace(/_/g,`.`)))}catch(e){console.error(`DeviceChecker: iOS version detection error - `,e)}}}var vt=[`rec2020`,`p3`,`srgb`],yt=[`standalone`,`minimal-ui`,`fullscreen`,`window-controls-overlay`,`picture-in-picture`];class bt{constructor(){this._maxTouchPoints=void 0,this._height=void 0,this._width=void 0,this._isHdr=void 0,this._pixelRatio=void 0,this._screenHeight=void 0,this._screenWidth=void 0,this._colorDepth=void 0,this._colorGamut=void 0,this._displayMode=`browser`,this._isStandalone=!1}get isTouch(){return typeof this._maxTouchPoints==`number`?this._maxTouchPoints>1:`ontouchstart`in gt()}get maxTouchPoints(){return this._maxTouchPoints}get height(){return this._height}get width(){return this._width}get screenHeight(){return this._screenHeight}get screenWidth(){return this._screenWidth}get pixelRatio(){return this._pixelRatio}get isHDR(){return this._isHdr}get colorDepth(){return this._colorDepth}get colorGamut(){return this._colorGamut}get displayMode(){return this._displayMode}get isStandalone(){return this._isStandalone}detect(){let e=gt();if(!_t(e))return;let{navigator:t,screen:n}=e,{maxTouchPoints:r}=t;try{this._maxTouchPoints=r??0,this._isHdr=!!e.matchMedia(`(dynamic-range: high)`)?.matches,this._colorDepth=n.colorDepth,this._colorGamut=this.detectColorGamut(e)}catch(e){console.error(e)}try{this._pixelRatio=e.devicePixelRatio||1,this._height=n.height,this._width=n.width,this._height=n.height,this._screenHeight=this._height*this._pixelRatio,this._screenWidth=this._width*this._pixelRatio}catch(e){console.error(e)}try{this._displayMode=this.detectDisplayMode(e);let n=t.standalone===!0;this._isStandalone=n||this._displayMode!==`browser`}catch(e){console.error(e)}}detectColorGamut(e){return vt.find(t=>{var n;return(n=e.matchMedia)==null||(n=n.call(e,`(color-gamut: ${t})`))==null?void 0:n.matches})}detectDisplayMode(e){return yt.find(t=>{var n;return(n=e.matchMedia)==null||(n=n.call(e,`(display-mode: ${t})`))==null?void 0:n.matches})??`browser`}}var Ct=()=>window.ManagedMediaSource||window.MediaSource,wt=()=>{var e;return!!(window.ManagedMediaSource&&!((e=window.ManagedSourceBuffer)==null||(e=e.prototype)==null)&&e.appendBuffer)},Tt=()=>{var e;return!!(window.MediaSource&&!((e=window.SourceBuffer)==null||(e=e.prototype)==null)&&e.appendBuffer)},Et=()=>window.ManagedMediaSource?new ManagedMediaSource:new MediaSource,Dt=xt().document?.createElement(`video`),Ot=`video/mp4; codecs="avc1.42000a,mp4a.40.2"`,kt=`video/mp4; codecs="hev1.1.6.L93.B0"`,At=`video/webm; codecs="vp09.00.10.08"`,jt=`video/webm; codecs="av01.0.00M.08"`,Mt=`audio/mp4; codecs="mp4a.40.2"`,Nt=`audio/webm; codecs="opus"`,Pt;(function(){var e=D(function*(){let e=xt();if(!St(e)||!(`mediaCapabilities`in e.navigator))return;let t={type:`media-source`,video:{contentType:`video/webm`,width:1280,height:720,bitrate:1e6,framerate:30}},[n,r]=yield Promise.all([e.navigator.mediaCapabilities.decodingInfo(E(E({},t),{},{video:E(E({},t.video),{},{contentType:jt})})),e.navigator.mediaCapabilities.decodingInfo(E(E({},t),{},{video:E(E({},t.video),{},{contentType:At})}))]);Pt={DASH_WEBM_AV1:n,DASH_WEBM:r}});return function(){return e.apply(this,arguments)}})()().catch(e=>{console.log(Dt),console.error(e)});class Ft{constructor(e,t){this._video=void 0,this._deviceChecker=void 0,this._browserChecker=void 0,this._protocols=void 0,this._containers=void 0,this._codecs=void 0,this._nativeHlsSupported=void 0,this._deviceChecker=e,this._browserChecker=t}get protocols(){return this._protocols}get containers(){return this._containers}get codecs(){return this._codecs}get webmDecodingInfo(){return Pt}get supportedCodecs(){return Object.keys(this._codecs).filter(e=>this._codecs[e])}get nativeHlsSupported(){return this._nativeHlsSupported}detect(){let e=xt();if(!St(e))return;let t=e.document;this._video=t.createElement(`video`);try{var n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_;this._protocols={mms:wt(),mse:Tt(),hls:!!((n=this._video).canPlayType?.call(n,`application/x-mpegurl`)||(r=this._video).canPlayType?.call(r,`vnd.apple.mpegURL`)),webrtc:!!e.RTCPeerConnection,ws:!!e.WebSocket},this._containers={mp4:!!(i=this._video).canPlayType?.call(i,`video/mp4`),webm:!!(a=this._video).canPlayType?.call(a,`video/webm`),cmaf:!0};let t=!!(!((o=Ct())==null||(s=o.isTypeSupported)==null)&&s.call(o,Ot)),v=!!(!((c=Ct())==null||(l=c.isTypeSupported)==null)&&l.call(c,kt)),y=!!(!((u=Ct())==null||(d=u.isTypeSupported)==null)&&d.call(u,Mt));this._codecs={h264:t,h265:v,vp9:!!(!((f=Ct())==null||(p=f.isTypeSupported)==null)&&p.call(f,At)),av1:!!(!((m=Ct())==null||(h=m.isTypeSupported)==null)&&h.call(m,jt)),aac:y,opus:!!(!((g=Ct())==null||(_=g.isTypeSupported)==null)&&_.call(g,Nt)),mpeg:(t||v)&&y},this._nativeHlsSupported=this._protocols.hls&&this._containers.mp4}catch(e){console.error(e)}try{this.destroyVideoElement()}catch(e){console.error(`Error destroying video element:`,e)}}destroyVideoElement(){if(!this._video)return;if(this._video.pause(),this._video.currentTime=0,this._video.removeAttribute(`src`),this._video.src=``,this._video.load(),this._video.remove){this._video.remove(),this._video=null;return}this._video.parentNode&&this._video.parentNode.removeChild(this._video);let e=this._video.cloneNode(!1);this._video.parentNode?.replaceChild(e,this._video),this._video=null}}var Rt=`audio/mpeg`;class zt{constructor(){this._audio=void 0,this._containers=void 0,this._codecs=void 0}supportMp3(){return this._codecs.mp3&&this._containers.mpeg}detect(){let e=It();if(!Lt(e))return;let t=e.document;this._audio=t.createElement(`audio`);try{var n,r,i;this._containers={mpeg:!!(n=this._audio).canPlayType?.call(n,Rt)},this._codecs={mp3:!!(!((r=Ct())==null||(i=r.isTypeSupported)==null)&&i.call(r,Rt))}}catch(e){console.error(e)}try{this.destroyAudioElement()}catch(e){console.error(`Error destroying audio element:`,e)}}destroyAudioElement(){if(!this._audio)return;if(this._audio.pause(),this._audio.currentTime=0,this._audio.removeAttribute(`src`),this._audio.src=``,this._audio.load(),this._audio.remove){this._audio.remove(),this._audio=null;return}this._audio.parentNode&&this._audio.parentNode.removeChild(this._audio);let e=this._audio.cloneNode(!1);this._audio.parentNode?.replaceChild(e,this._audio),this._audio=null}}class Bt{constructor(){this.isInited$=new st(!1),this._displayChecker=void 0,this._deviceChecker=void 0,this._browserChecker=void 0,this._videoChecker=void 0,this._audioChecker=void 0,this._displayChecker=new bt,this._deviceChecker=new ht(this._displayChecker),this._browserChecker=new dt,this._videoChecker=new Ft(this._deviceChecker,this._browserChecker),this._audioChecker=new zt,this.detect()}get display(){return this._displayChecker}get device(){return this._deviceChecker}get browser(){return this._browserChecker}get video(){return this._videoChecker}get audio(){return this._audioChecker}detect(){var e=this;return D(function*(){ot()&&(e._displayChecker.detect(),e._deviceChecker.detect(),e._browserChecker.detect(),e._videoChecker.detect(),e._audioChecker.detect(),e.isInited$.next(!0))})()}}var N=new Bt,Vt=(e,t=!1)=>{let{containers:n,protocols:r,codecs:i,nativeHlsSupported:a}=N.video,{isMobile:o}=N.device,s=N.device.isMac&&N.browser.isSafari,c=t&&!o&&!s,l=(i.h264||i.h265)&&i.aac,u=r.mse||r.mms;return e.filter(e=>{switch(e){case`DASH_SEP`:return u&&n.mp4&&l;case`DASH_WEBM`:return u&&n.webm&&i.vp9&&i.opus;case`DASH_WEBM_AV1`:return u&&n.webm&&i.av1&&i.opus;case`DASH_STREAMS`:return u&&(n.mp4&&l||n.webm&&(i.vp9||i.av1)&&(i.opus||i.aac));case`DASH_LIVE`:return u&&n.mp4&&l;case`DASH_LIVE_CMAF`:return u&&n.mp4&&l&&n.cmaf;case`DASH_ONDEMAND`:return u&&n.mp4&&l;case`HLS`:case`HLS_ONDEMAND`:case`HLS_FMP4`:case`HLS_LIVE`:case`HLS_LIVE_CMAF`:return a&&!c;case`MPEG`:return n.mp4;case`DASH`:case`DASH_LIVE_WEBM`:return!1;case`WEB_RTC_LIVE`:return r.webrtc&&r.ws&&i.h264&&(n.mp4||n.webm);default:return at(e)}})},Ht=e=>{switch(e){case`MPEG`:case`DASH`:case`DASH_SEP`:case`DASH_ONDEMAND`:case`DASH_WEBM`:case`DASH_WEBM_AV1`:case`DASH_STREAMS`:case`HLS`:case`HLS_FMP4`: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 at(e)}},Ut=(e,t=!1)=>Vt(Object.keys(e).filter(e=>!Ht(e)),t).length>0;class Wt{constructor(e){this.subscription=new ze,this.log=void 0,this.params=void 0,this.sessionId$=new Be(null),this.mediaSessionId$=new Be(null),this.contentId$=new Be(null),this.progressTicker=void 0,this.isMobile=mt(),this.mobileVolumeState={muted:!1,volume:0},this.media=null,this.lastRequestedVolume=null,this.syncMediaState=e=>{if(Le(e))return;this.media=e,this.mediaSessionId$.next(e.mediaSessionId??null);let t=e.media?.contentId;t&&this.contentId$.next(t),this.syncPlaybackState(e);let n=e.media?.duration;Ie(n)&&this.params.output.duration$.next(Math.max(0,n));let r=e.currentTime;if(Ie(r)){this.params.desiredState.seekState.getState().state===`applying`&&this.params.output.seekedEvent$.next(),this.params.output.position$.next(r);let t=this.params.output.isLive$.getValue();e.playerState===`PLAYING`&&!t?this.progressTicker.start(r):this.progressTicker.pause()}},this.params=e,this.progressTicker=new it(e),this.log=this.params.dependencies.logger.createComponentLog(`ChromecastPresentationApiProvider`),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Ht(e.format)),this.subscribe()}subscribe(){let e=e=>{this.params.output.error$.next({category:Ne.WTF,id:`ChromecastPresentationApiProvider`,message:e?.message??`Unknown error`,thrown:e})};this.subscription.add(this.params.chromecastConnector.message$.pipe(Pe(e=>!!e)).subscribe(e=>{this.handleMessage(e)},e)),this.subscription.add(this.sessionId$.pipe(Pe(Ie),Fe(),Me(0)).subscribe(()=>{this.loadMedia()},e));let t=this.contentId$.pipe(Fe(),Re(Boolean));this.subscription.add(je({seekState:this.params.desiredState.seekState.stateChangeEnded$,mediaLoaded:t}).pipe(Pe(({mediaLoaded:e})=>e)).subscribe(()=>{let e=this.params.desiredState.seekState.getState();e.state===`requested`&&this.seek(e.position/1e3)},e));let n=je({playbackState:this.params.desiredState.playbackState.stateChangeStarted$,mediaLoaded:t});this.subscription.add(n.pipe(Pe(({mediaLoaded:e})=>e),Me(0)).subscribe(()=>{this.syncPlayback()},e)),this.subscription.add(n.pipe(Pe(({mediaLoaded:e,playbackState:{from:t,to:n}})=>!e&&t===`stopped`&&n===`playing`)).subscribe(()=>{this.loadMedia()},e)),this.subscription.add(je({volumeState:this.params.desiredState.volume.stateChangeStarted$.pipe(Me(30)),mediaLoaded:t}).pipe(Pe(({mediaLoaded:e})=>e)).subscribe(({volumeState:e})=>{let{muted:t,volume:n}=e.to;this.setVolume(n,t)},e))}handleMessage(e){switch(e.type){case`new_session`:case`update_session`:{var t;this.sessionId$.next(e.message.sessionId);let n=(t=e.message)==null||(t=t.media)==null?void 0:t[0];this.syncMediaState(n);let r=e.message?.receiver.volume;this.syncVolumeState(r)}break;case`v2_message`:switch(e.message?.type){case`MEDIA_STATUS`:{var n;let t=(n=e.message)==null||(n=n.status)==null?void 0:n[0];this.syncMediaState(t);break}}break}}loadMedia(){let e=Ze(this.params),t=this.media?.currentTime,n=this.params.desiredState.seekState.getState(),r=t??(n.state===`none`?0:n.position/1e3),i=this.params.desiredState.playbackState.getState()===`playing`;this.params.chromecastConnector.sendV2Message({type:`LOAD`,requestId:0,media:e,autoplay:i,currentTime:r,customData:null,activeTrackIds:null}),this.params.output.willSeekEvent$.next()}stop(){this.params.chromecastConnector.stopMedia()}play(){let e=this.mediaSessionId$.getValue();Ae(e,`play on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`PLAY`,mediaSessionId:e,customData:null})}pause(){let e=this.mediaSessionId$.getValue();Ae(e,`pause on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`PAUSE`,mediaSessionId:e,customData:null})}seek(e){let t=this.mediaSessionId$.getValue();Ae(t,`seek on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`SEEK`,currentTime:e,mediaSessionId:t}),this.params.output.willSeekEvent$.next()}setVolume(e,t){let n=e,r=`[setVolume] volume: ${e}, muted: ${t}`;this.isMobile&&(n=this.mobileVolumeState.volume,r+=`, mobile next volume: ${n}`),this.log({message:r}),this.lastRequestedVolume={volume:n,muted:t},this.params.chromecastConnector.sendV2Message({type:`SET_VOLUME`,requestId:0,volume:{level:t?0:n,muted:t?!0:null}})}syncPlaybackState({playerState:e,idleReason:t}){let n=this.params.output.isBuffering$.getValue(),r=e===`BUFFERING`;switch(n!==r&&this.params.output.isBuffering$.next(r),e){case`PAUSED`:A(this.params.desiredState.playbackState,`paused`);break;case`PLAYING`:A(this.params.desiredState.playbackState,`playing`);break;case`IDLE`:t===`FINISHED`?(this.params.output.endedEvent$.next(),A(this.params.desiredState.playbackState,`stopped`),this.contentId$.next(null)):A(this.params.desiredState.playbackState,`ready`);break;case`BUFFERING`:break}}syncPlayback(){let e=this.params.desiredState.playbackState.getState();switch(this.log({message:`[syncPlayback] ${e}`}),e){case`ready`:break;case`playing`:this.play();break;case`paused`:this.pause();break;case`stopped`:this.stop();break}}syncVolumeState(e){if(Le(e))return;let{level:t,muted:n}=e,r={muted:n??!1,volume:t??0};this.lastRequestedVolume&&=(n&&(r.volume=this.lastRequestedVolume.volume),this.lastRequestedVolume.muted&&!t&&!n&&(r.volume=this.lastRequestedVolume.volume,r.muted=!0),null);let i=`[syncVolumeState] volume: ${r.volume}, muted: ${r.muted}`;this.isMobile&&(this.mobileVolumeState.volume=r.volume,this.mobileVolumeState.muted=r.muted,r.volume=this.params.output.volume$.getValue().volume,i+=`, volume passed to state machine: ${r.volume}`),this.log({message:i}),this.params.output.volume$.next(r)}destroy(){this.progressTicker.destroy(),this.subscription.unsubscribe()}}var en=e=>({castDevice:{friendlyName:e},remotePlayer:{},remotePlayerController:{},session:{}}),tn=()=>String(Date.now())+String(Math.floor(Math.random()*1e5));class nn{constructor(e){this.params=void 0,this.clientId=void 0,this.capabilities=[`WEB`],this.presentationRequest$=new Zt(null),this.log=void 0,this.sessionId$=new Zt(null),this.broadcastChannel=new BroadcastChannel(`vk_player_chromecast_events`),this.subscription=new Yt,this.subscriptionEvents=new Yt,this.isDestroyed=!1,this.sequenceNumber=0,this.presentationAvailable$=new Zt(!1),this.presentationConnection$=new Zt(null),this.message$=new Zt(null),this.friendlyName$=new Zt(null),this.errorEvent$=new Jt,this.clientId=this.getClientId(),this.params=e,this.log=e.logger.createComponentLog(`ChromecastPresentationApiConnector`),this.log({message:`constructor`}),this.safeReinitPresentation(),this.subscribe()}destroy(){this.log({message:`destroy`}),this.subscription.unsubscribe(),this.subscriptionEvents.unsubscribe(),this.broadcastChannel.close(),this.isDestroyed=!0}disconnect(e=!0){this.log({message:`disconnect`}),e&&this.stopMedia(),this.presentationRequest$.next(null);let t=this.presentationConnection$.getValue();t&&t.close(),this.presentationConnection$.next(null),this.friendlyName$.next(null),this.resetSequenceNumber(),this.resetSubscriptionEvents()}stopMedia(){this.log({message:`stopMedia`}),this.sendV2Message({type:`STOP`})}reinitPresentation(e=!0){let t=this.createCastUrl(),n=new PresentationRequest(t);this.presentationRequest$.next(n),this.log({message:`PresentationRequest created`}),n.getAvailability().then(e=>{let t=()=>{this.log({message:`PresentationRequest presentation availability: ${e.value}`}),this.presentationAvailable$.next(e.value)};this.subscriptionEvents.add(Qt(e,`change`).subscribe(()=>{t()})),t()}).catch(()=>{this.presentationAvailable$.next(!0)}),$t().navigator.presentation.defaultRequest=n,e&&n.reconnect(`auto-join`).then(e=>{this.log({message:`PresentationRequest reconnect success`}),this.handleConnection(e)}).catch(()=>{this.log({message:`PresentationRequest reconnect failed`})})}safeReinitPresentation(e){try{this.reinitPresentation(e)}catch(e){this.errorEvent$.next({category:Kt.WTF,id:`ChromecastPresentationApiConnector`,message:e?.message??`reinitPresentation error`,thrown:e})}}connect(){var e=this;return D(function*(){e.log({message:`connect`});try{e.presentationRequest$.getValue()||(e.log({message:`reinitPresentation`}),e.reinitPresentation(!1));let t=e.presentationRequest$.getValue();Gt(t,`connect with null presentationRequest`);let n=yield t.start();e.handleConnection(n)}catch(t){switch(t?.name){case`AbortError`:case`NotAllowedError`:break;default:e.errorEvent$.next({category:Kt.WTF,id:`ChromecastPresentationApiConnector`,message:t?.message??`connect error`,thrown:t});break}}})()}subscribe(){this.subscription.add(Qt(this.broadcastChannel,`message`).subscribe(e=>{this.log({message:`broadcast connection data: ${e.data}`}),e.data===`connection`&&this.disconnect(!1)})),this.subscription.add(this.presentationAvailable$.subscribe(e=>{this.log({message:`presentationAvailable$: ${e}`})})),this.subscription.add(this.presentationConnection$.pipe(Xt(e=>{this.log({message:`presentationConnection$: ${!!e}`})}),qt(e=>!!e)).subscribe(e=>{let t=Qt(e,`message`).subscribe(e=>{let t=JSON.parse(e.data);t.clientId===this.clientId&&(this.log({message:`[onmessage] ${e.data}`}),this.handleMessage(t),this.message$.next(t))}),n=Qt(e,`connect`).subscribe(()=>{this.send(`client_connect`)}),r=Qt(e,`close`).subscribe(e=>{switch(e.reason){case`error`:this.errorEvent$.next({category:Kt.WTF,id:`ChromecastPresentationApiConnector`,message:`Session error`,thrown:e});break;case`closed`:break}});this.subscriptionEvents.add(t),this.subscriptionEvents.add(n),this.subscriptionEvents.add(r)}))}send(e){switch(e){case`client_connect`:{let e={type:`client_connect`,message:this.clientId,sequenceNumber:-1,timeoutMillis:0,clientId:this.clientId};this.safeSend(JSON.stringify(e));break}}}sendV2Message(e){let t=this.sessionId$.getValue();if(t){let n={type:`v2_message`,sequenceNumber:this.getSequenceNumber(),timeoutMillis:0,clientId:this.clientId,message:E(E({},e),{},{sessionId:t})};this.safeSend(JSON.stringify(n))}}safeSend(e){try{this.log({message:`[send] ${e}`});let t=this.presentationConnection$.getValue();t?.state===`connected`&&t?.send(e)}catch(t){this.errorEvent$.next({category:Kt.WTF,id:`ChromecastPresentationApiConnector`,message:`PresentationConnection send error`,data:{message:e},thrown:t})}}handleMessage(e){switch(e.type){case`new_session`:case`update_session`:this.sessionId$.next(e.message.sessionId),this.friendlyName$.next(e.message.receiver.friendlyName||`Chromecast Device`);break;case`receiver_action`:e.message?.action===`stop`&&this.disconnect();break}}createCastUrl(){return`cast:${this.params.appId}?clientId=${this.clientId}&autoJoinPolicy=tab_and_origin_scoped&defaultActionPolicy=create_session&launchTimeout=60000&supportedAppTypes=${this.capabilities}&appParams=%7B%22launchCheckerParams%22%3A%7B%7D%7D`}getSequenceNumber(){let e=this.sequenceNumber;return this.sequenceNumber=(this.sequenceNumber+1)%(2**53-1),e}resetSequenceNumber(){this.sequenceNumber=0}getClientId(){let e=`__vk_player_chromecast_id`;return $t()[e]=$t()[e]||tn()}resetSubscriptionEvents(){this.subscriptionEvents.unsubscribe(),this.subscriptionEvents=new Yt}handleConnection(e){this.log({message:`connection available`}),this.isDestroyed?(this.log({message:`connected on already destroyed component`}),e.close()):(this.broadcastChannel.postMessage(`connection`),this.presentationConnection$.next(e))}}class dn{static isSupported(){return`chrome`in window&&`presentation`in navigator&&`BroadcastChannel`in window}constructor(e){this.subscription=new sn,this.log=void 0,this.contentId=void 0,this.connection$=new rn(void 0),this.castState$=new rn(`NOT_AVAILABLE`),this.errorEvent$=new an,this.chromecastConnector=void 0;let t=dn.isSupported();this.log=e.dependencies.logger.createComponentLog(`ChromecastPresentationApiInitializer`),this.log({message:`[constructor] receiverApplicationId: ${e.receiverApplicationId}, isDisabled: ${e.isDisabled}, isSupported: ${t}`}),!(!t||e.isDisabled||!e.receiverApplicationId)&&(this.chromecastConnector=new nn({appId:e.receiverApplicationId,logger:e.dependencies.logger}),this.subscribe())}subscribe(){un(this.chromecastConnector,`subscribe with null chromecastConnector`),this.subscription.add(this.chromecastConnector.errorEvent$.subscribe(this.errorEvent$));let e=cn({connection:this.chromecastConnector.presentationConnection$,available:this.chromecastConnector.presentationAvailable$,friendlyName:this.chromecastConnector.friendlyName$.pipe(ln())});this.subscription.add(e.pipe(on(({connection:e,friendlyName:t})=>!!(e&&t)),ln()).subscribe(e=>{let t=this.chromecastConnector?.friendlyName$.getValue()??``;this.connection$.next(e?en(t):void 0)})).add(e.subscribe(({available:e,connection:t})=>{e?t?this.castState$.next(`CONNECTED`):this.castState$.next(`AVAILABLE`):this.castState$.next(`NOT_AVAILABLE`)}))}connect(){this.log({message:`connect`}),this.chromecastConnector?.connect()}disconnect(){this.log({message:`disconnect`}),this.chromecastConnector?.disconnect()}stopMedia(){var e=this;return D(function*(){e.log({message:`stopMedia`}),e.chromecastConnector?.stopMedia()})()}toggleConnection(){let e=!!this.chromecastConnector?.presentationConnection$.getValue();this.log({message:`toggleConnection: isConnected - ${e}`}),e?this.disconnect():this.connect()}setVolume(e){}setMuted(e){}destroy(){this.log({message:`destroy`}),this.chromecastConnector?.destroy(),this.subscription.unsubscribe()}}var yn=(e,t)=>e===t;class bn{constructor(e,t=yn){this.comparator=void 0,this.state=void 0,this.prevState=void 0,this.transition=void 0,this.transitionStarted$=new _n,this.transitionEnded$=new _n,this.transitionUpdated$=new _n,this.forceChanged$=new _n,this.stateChangeStarted$=vn(this.transitionStarted$,this.transitionUpdated$),this.stateChangeEnded$=vn(this.transitionEnded$,this.forceChanged$),this.comparator=t,this.state=e,this.prevState=void 0}setState(e){let t=this.transition,n=this.state;this.transition=void 0,this.prevState=n,this.state=e,t?this.comparator(t.to,e)?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:n,to:e,canceledTransition:t})}startTransitionTo(e){let t=this.transition,n=this.state;this.comparator(n,e)||gn(t)&&this.comparator(t.to,e)||(this.prevState=n,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:n,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}}var jn=5,Mn=5,Nn=500,Pn=7e3;class Fn{constructor(e){this.subscription=new kn,this.loadMediaTimeoutSubscription=new kn,this.videoState=new bn(`stopped`),this.params=void 0,this.log=void 0,this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),n=this.params.desiredState.playbackState.getState(),r=this.params.desiredState.playbackState.getTransition(),i=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${n}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(i)};`}),n===`stopped`){e!==`stopped`&&(this.videoState.startTransitionTo(`stopped`),this.stop());return}if(!t){if(r?.to!==`paused`&&i.state===`requested`&&e!==`stopped`){this.seek(i.position/1e3);return}switch(n){case`ready`:switch(e){case`playing`:case`paused`:case`ready`:break;case`stopped`:this.videoState.startTransitionTo(`ready`),this.prepare();break;default:xn(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:xn(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:xn(e)}break;default:xn(n)}}},this.params=e,this.log=this.params.dependencies.logger.createComponentLog(`ChromecastProvider`),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Ht(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 kn;this.subscription.add(e),this.subscription.add(En(this.videoState.stateChangeStarted$.pipe(Tn(e=>`stateChangeStarted$ ${JSON.stringify(e)}`)),this.videoState.stateChangeEnded$.pipe(Tn(e=>`stateChangeEnded$ ${JSON.stringify(e)}`))).subscribe(e=>this.log({message:`[videoState] ${e}`})));let t=(e,t)=>this.subscription.add(e.subscribe(t));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{let t=new On;e.add(t.pipe(Sn(Nn)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let n=NaN;e.add(wn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(e=>{this.logRemoteEvent(e);let r=e.value;this.params.output.position$.next(r),(this.params.desiredState.seekState.getState().state===`applying`||Math.abs(r-n)>jn)&&t.next(r),n=r})),e.add(wn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(e=>{this.logRemoteEvent(e),this.params.output.duration$.next(e.value)}))}t(wn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),t=>{this.logRemoteEvent(t),t.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(wn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),e=>{this.logRemoteEvent(e),e.value?this.handleRemotePause():this.handleRemotePlay()}),t(wn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),e=>{this.logRemoteEvent(e);let{remotePlayer:t}=this.params.connection,n=e.value,r=this.params.output.isBuffering$.getValue(),i=n===chrome.cast.media.PlayerState.BUFFERING;switch(r!==i&&this.params.output.isBuffering$.next(i),n){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&t.duration-t.currentTime<Mn&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),A(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:xn(n)}}),t(wn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),e=>{this.logRemoteEvent(e),this.handleRemoteVolumeChange({volume:e.value})}),t(wn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),e=>{this.logRemoteEvent(e),this.handleRemoteVolumeChange({muted:e.value})}),t(En(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,Dn([`init`])).pipe(Sn(0)),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`),A(this.params.desiredState.playbackState,`paused`)):(this.videoState.setState(`playing`),A(this.params.desiredState.playbackState,`playing`));let e=this.params.output.isLive$.getValue();this.params.output.duration$.next(e?0:t.duration),this.params.output.position$.next(e?0:t.currentTime),this.params.desiredState.seekState.setState({state:`none`})}}prepare(){let e=this.params.format;this.log({message:`[prepare] format: ${e}`});let t=Ze(this.params),n=this.createLoadRequest(t);this.loadMedia(n)}handleRemotePause(){let e=this.videoState.getState();(this.videoState.getTransition()?.to===`paused`||e===`playing`)&&(this.videoState.setState(`paused`),A(this.params.desiredState.playbackState,`paused`))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to===`playing`||e===`paused`)&&(this.videoState.setState(`playing`),A(this.params.desiredState.playbackState,`playing`))}handleRemoteReady(){this.videoState.getTransition()?.to===`ready`&&this.videoState.setState(`ready`),this.params.desiredState.playbackState.getTransition()?.to===`ready`&&A(this.params.desiredState.playbackState,`ready`)}handleRemoteStop(){this.videoState.getState()!==`stopped`&&this.videoState.setState(`stopped`)}handleRemoteVolumeChange(e){let t=this.params.output.volume$.getValue(),n={volume:e.volume??t.volume,muted:e.muted??t.muted};(n.volume!==t.volume||n.muted!==n.muted)&&this.params.output.volume$.next(n)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:n}=this.params.connection;t.currentTime=e,n.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let n=this.params.desiredState.seekState.getState();return n.state===`applying`||n.state===`requested`?t.currentTime=this.params.output.isLive$.getValue()?0:n.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),n=new Promise((e,t)=>{this.loadMediaTimeoutSubscription.add(An(Pn).subscribe(()=>t(`timeout(${Pn})`)))});hn(Promise.race([t,n]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state===`applying`&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},e=>{let t=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${e}`;this.log({message:t}),this.params.output.error$.next({id:`ChromecastProvider.loadMedia`,category:Cn.VIDEO_PIPELINE,message:t,thrown:e})}),()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}}var Hn=e=>{try{e.pause(),e.playbackRate=0,Vn(e),e.remove()}catch(e){console.error(e)}},Un=`__spvc`;class Wn{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)}}var Gn=zn(),Kn=Gn.WeakMap?new Gn.WeakMap:new Wn,qn=Gn.WeakMap?new Gn.WeakMap:new Map,Jn=(e,t=20)=>{let n=0;return Rn(e,`ratechange`).subscribe(r=>{n++,n>=t&&(e.currentTime=e.currentTime,n=0)})};function Yn(e){e.style.position=`fixed`,e.style.left=`100%`,e.setAttribute(`data-role`,`screen`),zn().document.body.appendChild(e)}function Xn(e,t){e.style.position=``,e.style.left=``,t.appendChild(e)}var Zn=(e,{audioVideoSyncRate:t,disableYandexPiP:n,reuseOwnVideoElement:r})=>{let i,a=e.querySelector(`video`),o=!!a,s=zn().document.querySelector(`body > video[data-role=screen]`)||void 0;r?Gn[Un]=s:(s?.remove(),delete Gn[Un]),a?(i=a,Ln(i)):s&&s===Gn[Un]?(i=s,Xn(i,e)):(i=zn().document.createElement(`video`),e.appendChild(i),r&&(Gn[Un]=i)),Kn.set(i,o);let c=new Bn;return c.add(Jn(i,t)),qn.set(i,c),i.setAttribute(`crossorigin`,`anonymous`),i.setAttribute(`playsinline`,`playsinline`),n&&i.setAttribute(`x-yandex-pip`,`false`),i.controls=!1,i.setAttribute(`poster`,`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=`),i},Qn=e=>(e.setAttribute(`crossorigin`,`anonymous`),e.controls=!1,e),$n=(e,t)=>{if(e instanceof HTMLAudioElement){er(e,t);return}if(e instanceof HTMLVideoElement){tr(e,t);return}};function er(e,{clearAudioElementOnDispose:t}){if(t){Ln(e);return}Hn(e)}function tr(e,{reuseOwnVideoElement:t}){qn.get(e)?.unsubscribe(),qn.delete(e);let n=Kn.get(e);Kn.delete(e),Ln(e),t&&!n&&Yn(e)}var yr=(e,t,n,{equal:r=(e,t)=>e===t,changed$:i,onError:a}={})=>{let o=e.getState(),s=t(),c=_r(i),l=new vr;return i&&l.add(i.subscribe(t=>{r(t,e.getState())&&e.setState(t)},a)),r(s,o)||(n(o),c&&e.setState(o)),l.add(e.stateChangeStarted$.subscribe(t=>{n(t.to),c&&e.setState(t.to)},a)),l},br=(e,t,n)=>yr(t,()=>e.loop,t=>{gr(t)&&(e.loop=t)},{onError:n}),xr=(e,t,n,r,i)=>yr(t,()=>({muted:e.muted,volume:e.volume}),t=>{i?.skipVideoElVolumeSync$.getValue()||gr(t)&&(e.muted=t.muted,e.volume=t.volume)},{equal:(e,t)=>e===t||e?.muted===t?.muted&&e?.volume===t?.volume,changed$:n,onError:r}),Sr=(e,t,n,r)=>yr(t,()=>e.playbackRate,t=>{gr(t)&&(e.playbackRate=t)},{changed$:n,onError:r}),Cr=yr,wr=e=>[`__`,e.language,e.label].join(`|`),Tr=(e,t)=>{if(e.id===t)return!0;let[n,r,i]=t.split(`|`);return e.language===r&&e.label===i};class Er{constructor(e){this.available$=new fr,this.current$=new mr(void 0),this.error$=new fr,this.video=void 0,this.cueSettings=void 0,this.subscription=new pr,this.externalTracks=new Map,this.internalTracks=new Map,this.baseURL=void 0,this.baseURL=e}connect(e,t,n){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let r=e=>{this.error$.next({id:`TextTracksManager`,category:hr.WTF,message:`Generic HtmlVideoTextTrackManager error`,thrown:e})};this.subscription.add(this.available$.subscribe(n.availableTextTracks$)),this.subscription.add(this.current$.subscribe(n.currentTextTrack$)),this.subscription.add(this.error$.subscribe(n.error$)),this.subscription.add(Cr(t.internalTextTracks,()=>nr(this.internalTracks),e=>{ar(e)&&this.setInternal(e)},{equal:(e,t)=>ar(e)&&ar(t)&&e.length===t.length&&e.every(({id:e},n)=>e===t[n].id),changed$:this.available$.pipe(dr(e=>e.filter(({type:e})=>e===`internal`))),onError:r})),this.subscription.add(Cr(t.externalTextTracks,()=>nr(this.externalTracks),e=>{ar(e)&&this.setExternal(e)},{equal:(e,t)=>ar(e)&&ar(t)&&e.length===t.length&&e.every(({id:e},n)=>e===t[n].id),changed$:this.available$.pipe(dr(e=>e.filter(({type:e})=>e===`external`))),onError:r})),this.subscription.add(Cr(t.currentTextTrack,()=>{if(this.video)return;let e=this.htmlTextTracksAsArray().find(({mode:e})=>e===`showing`);return e&&this.htmlTextTrackToITextTrack(e).id},e=>this.select(e),{changed$:this.current$,onError:r})),this.subscription.add(Cr(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let e of this.htmlTextTracksAsArray())this.applyCueSettings(e.cues),this.applyCueSettings(e.activeCues)}))}subscribe(){ir(this.video);let{textTracks:e}=this.video;this.subscription.add(sr(e,`addtrack`).subscribe(()=>{let e=this.current$.getValue();e&&this.select(e)})),this.subscription.add(cr(sr(e,`addtrack`),sr(e,`removetrack`),lr([`init`])).pipe(dr(()=>this.htmlTextTracksAsArray().map(e=>this.htmlTextTrackToITextTrack(e))),ur((e,t)=>e.length===t.length&&e.every(({id:e},n)=>e===t[n].id))).subscribe(this.available$)),this.subscription.add(cr(sr(e,`change`),lr([`init`])).pipe(dr(()=>this.htmlTextTracksAsArray().find(({mode:e})=>e===`showing`)),dr(e=>e&&this.htmlTextTrackToITextTrack(e).id),ur()).subscribe(this.current$));let t=e=>this.applyCueSettings(e.target?.activeCues??null);this.subscription.add(sr(e,`addtrack`).subscribe(e=>{e.track?.addEventListener(`cuechange`,t);let n=e=>{let t=e.target?.cues??null;t&&t.length&&(this.applyCueSettings(e.target?.cues??null),e.target?.removeEventListener(`cuechange`,n))};e.track?.addEventListener(`cuechange`,n)})),this.subscription.add(sr(e,`removetrack`).subscribe(e=>{e.track?.removeEventListener(`cuechange`,t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let n of Array.from(e)){let e=n;ar(t.align)&&(e.align=t.align),ar(t.position)&&(e.position=t.position),ar(t.size)&&(e.size=t.size),ar(t.line)&&(e.line=t.line)}}htmlTextTracksAsArray(e=!1){ir(this.video);let t=[...this.video.textTracks];return e?t:t.filter(Er.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:n}=e,r=e.id?e.id:wr(e),i=this.externalTracks.has(r),a=(i?this.externalTracks.get(r)?.isAuto:this.internalTracks.get(r)?.isAuto)??rr(r,`auto`);return i?{id:r,type:`external`,isAuto:a,language:t,label:n,url:this.externalTracks.get(r)?.url}:{id:r,type:`internal`,isAuto:a,language:t,label:n,url:this.internalTracks.get(r)?.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(([,e])=>this.detach(e)),e.filter(({id:e})=>!this.externalTracks.has(e)).forEach(e=>this.attach(e)),Array.from(this.externalTracks).filter(([t])=>!e.find(e=>e.id===t)).forEach(([,e])=>this.detach(e))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:e,language:n,isAuto:r})=>!this.internalTracks.has(e)&&!t.some(([,e])=>e.language===n&&e.isAuto===r)).forEach(e=>this.attach(e)),Array.from(this.internalTracks).filter(([t])=>!e.find(e=>e.id===t)).forEach(([,e])=>this.detach(e))}select(e){ir(this.video);for(let e of this.htmlTextTracksAsArray(!0))e.mode=`showing`;for(let t of this.htmlTextTracksAsArray(!0))(or(e)||!Tr(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){ir(this.video);let t=document.createElement(`track`);this.baseURL?t.setAttribute(`src`,new URL(e.url,this.baseURL).toString()):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){ir(this.video);let t=Array.prototype.find.call(this.video.getElementsByTagName(`track`),t=>t.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)}}var Dr=Er;class Or{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 kr=e=>{let t=e;for(;!(t instanceof Document)&&!(t instanceof ShadowRoot)&&t!==null;)t=t?.parentNode;return t??void 0},Ar=e=>{let t=kr(e);return!!(t&&t.fullscreenElement&&t.fullscreenElement===e)},jr=e=>{let t=kr(e);return!!(t&&t.pictureInPictureElement&&t.pictureInPictureElement===e)};var Kr=3,qr=(e,t,n=Kr)=>{let r=0,i=0;for(let a=0;a<e.length;a++){let o=e.start(a),s=e.end(a);if(o<=t&&t<=s){if(r=o,i=s,!n)return{from:r,to:i};for(let t=a-1;t>=0;t--)e.end(t)+n>=r&&(r=e.start(t));for(let t=a+1;t<e.length;t++)e.start(t)-n<=i&&(i=e.end(t))}}return{from:r,to:i}},Jr=e=>{let t=0;for(let n=0;n<e.length;n++)t+=e.end(n)-e.start(n);return t},Yr=e=>{let t=0;for(let n=0;n<e.length;n++)t+=e.end(n)-e.start(n);return t*1e3},Xr=e=>{let t=t=>P(e,t).pipe(Rr(void 0),F(1)),n=new Gr,r=()=>n.unsubscribe(),i=Nr(P(e,`progress`),P(e,`timeupdate`)),a=i.pipe(Mr(()=>qr(e.buffered,e.currentTime)),F(1)),o=i.pipe(Mr(()=>Yr(e.buffered)),F(1)),s=i.pipe(Mr(()=>e.buffered.length),F(1)),c=N.browser.isSafari?zr({play:t(`play`).pipe(Br()),playing:t(`playing`)}).pipe(Rr(void 0),F(1)):t(`playing`),l=P(e,`volumechange`).pipe(Mr(()=>({muted:e.muted,volume:e.volume})),F(1)),u=P(e,`ratechange`).pipe(Mr(()=>e.playbackRate),F(1)),d=P(e,`error`).pipe(Lr(()=>!!(e.error||e.played.length)),Mr(()=>{let t=e.error;return{id:t?`MediaError#${t.code}`:`HtmlVideoError`,category:Hr.VIDEO_PIPELINE,message:t?t.message:`Error event from HTML video element`,thrown:e.error??void 0,origin:Ur.MediaError,data:t?{code:t.code}:void 0}}),F(1)),f=P(e,`timeupdate`).pipe(Mr(()=>e.currentTime),F(1)),p=Nr(P(e,`loadedmetadata`),P(e,`timeupdate`),P(e,`pause`),P(e,`seeked`),P(e,`ended`)).pipe(Mr(()=>Jr(e.played)),Pr(),F(1)),m=[`waiting`,`seeking`,`seeked`,`timeupdate`],h=new Ir,g=.3,_;n.add(Nr(...m.map(t=>P(e,t))).subscribe(t=>{let n=e.currentTime;e.loop&&Fr(_)&&Fr(n)&&_>=e.duration-g&&n<=g&&h.next(_),_=n}));let v=t(`pause`).pipe(Lr(()=>!e.error&&_!==e.duration),F(1)),y=P(e,`enterpictureinpicture`).pipe(F(1)),b=P(e,`leavepictureinpicture`).pipe(F(1)),x=new Wr(jr(e));n.add(y.subscribe(()=>x.next(!0))),n.add(b.subscribe(()=>x.next(!1)));let S=new Wr(Ar(e)),C=P(e,`fullscreenchange`).pipe(F(1));n.add(C.pipe(Mr(()=>Ar(e))).subscribe(S));let w=P(e,`timeupdate`).pipe(Mr(t=>e.duration-e.currentTime<.1),Pr(),F(1)),T=Nr(w.pipe(Lr(t=>!e.loop&&t)),P(e,`ended`)).pipe(Vr(1e3),Rr(void 0),F(1)),E=Nr(...[`waiting`,`pause`,`canplay`,`play`,`canplaythrough`,`playing`,`seeking`,`seeked`,`ended`].map(t=>P(e,t)),w.pipe(Mr(e=>({type:e?`ended`:`unknown`})))).pipe(Mr(t=>N.browser.isFirefox&&t.type===`ended`?e.readyState<2:e.readyState<3),Pr(),F(1));return{playing$:c,pause$:v,canplay$:t(`canplay`),ended$:T,looped$:h,error$:d,seeked$:t(`seeked`),seeking$:t(`seeking`),progress$:t(`progress`),loadStart$:t(`loadstart`),loadedMetadata$:t(`loadedmetadata`),loadedData$:t(`loadeddata`),timeUpdate$:f,durationChange$:P(e,`durationchange`).pipe(Mr(()=>e.duration),F(1)),playedTime$:p,isBuffering$:E,currentBuffer$:a,totalBufferDuration$:o,bufferRangeCount$:s,volumeState$:l,playbackRateState$:u,inPiP$:x,inFullscreen$:S,enterPip$:y,leavePip$:b,destroy:r}};var Qr=e=>{switch(e){case`mobile`:return Zr.Q_144P;case`lowest`:return Zr.Q_240P;case`low`:return Zr.Q_360P;case`sd`:case`medium`:return Zr.Q_480P;case`hd`:case`high`:return Zr.Q_720P;case`fullhd`:case`full`:return Zr.Q_1080P;case`quadhd`:case`quad`:return Zr.Q_1440P;case`ultrahd`:case`ultra`:return Zr.Q_2160P}};var ai=e=>`audioTracksAsc`in e;class si{constructor(){this.last=void 0,this.history={}}recordSelection(e){this.history[e.id]=oi()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}}var vi=(e,t)=>(e??0)/(t>0?t:1),yi=e=>`quality`in e,bi=e=>(t,n)=>e*(Number(t.bitrate)-Number(n.bitrate)),xi=e=>(t,n)=>e*(hi(t.quality,n.quality)?-1:1),Si=e=>(t,n)=>yi(t)&&yi(n)?xi(e)(t,n):bi(e)(t,n),Ci=(e,t)=>Si(1)(e,t)<0,wi=(e,t)=>Math.log(t)/Math.log(e),Ti=(e,t,n)=>(t-n)*2**(-10*e)+n,Ei=(e,t,n,r)=>{if(_i(e))return n[0];let i=n.filter(t=>gi(t.bitrate)&&gi(e.bitrate)?e.bitrate/t.bitrate>r:!0),a=pi(n,Math.round(n.length*t.indexOf(e)/(t.length+1)))??pi(n,-1);return a&&mi(i,a)?a:i.length?pi(i,-1):pi(n,0)},Di=(e,t)=>{if(_i(t)||_i(e))return;let n=e.get(t.id);if(!n?.length)return;let r=(n[n.length-1].time.to-n[0].time.from)/1e3;if(r<=0)return;let i=n.reduce((e,t)=>e+(t.size??1/0),0)*8/1024/r;return isFinite(i)?i:void 0},Oi=(e,t)=>gi(e)&&gi(t)&&t>0&&e>0&&e<=t*2,ki=e=>{let{name:t}=e;return`
|
|
6
|
+
import{objectEntries as ue}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as de}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as fe}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as pe,assertNonNullable as me,isNonNullable as he,ValueSubject as ge,Subject as _e,Subscription as ve,merge as ye,observableFrom as be,fromEvent as xe,map as Se,tap as Ce,filterChanged as we,isNullable as Te,ErrorCategory as Ee}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Ae,combine as je,debounce as Me,ErrorCategory as Ne,filter as Pe,filterChanged as Fe,isNonNullable as Ie,isNullable as Le,map as Re,Subscription as ze,ValueSubject as Be}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Ve,assertNonNullable as He,ErrorCategory as Ue,getHighestQuality as We,isNonNullable as Ge}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Ke}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as qe}from"@vkontakte/videoplayer-shared/es2015";import{createTimers as nt,TimerModule as rt}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as at}from"@vkontakte/videoplayer-shared/es2015";import{isBrowserWindow as ot,ValueSubject as st}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as ct}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as lt,isNullable as ut}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as M}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as ft,isBrowserWindow as pt}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as gt,isBrowserWindow as _t}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as xt,isBrowserWindow as St}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as It,isBrowserWindow as Lt}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Gt,ErrorCategory as Kt,filter as qt,Subject as Jt,Subscription as Yt,tap as Xt,ValueSubject as Zt,fromEvent as Qt,getWindow as $t}from"@vkontakte/videoplayer-shared/es2015";import{ValueSubject as rn,Subject as an,map as on,Subscription as sn,combine as cn,filterChanged as ln,assertNonNullable as un}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as fn}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as pn}from"@vkontakte/videoplayer-shared/es2015";import{objectFromEntries as mn}from"@vkontakte/videoplayer-shared/es2015";import{promiseFinally as hn}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as gn,Subject as _n,merge as vn}from"@vkontakte/videoplayer-shared/es2015";import"@vkontakte/videoplayer-shared/es2015";import{assertNever as xn,debounce as Sn,ErrorCategory as Cn,fromEvent as wn,map as Tn,merge as En,observableFrom as Dn,Subject as On,Subscription as kn,timeout as An}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as In}from"@vkontakte/videoplayer-shared/es2015";import{clearVideoElement as Ln,fromEvent as Rn,getWindow as zn,Subscription as Bn}from"@vkontakte/videoplayer-shared/es2015";import{clearVideoElement as Vn}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as nr}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as rr}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as ir,isNonNullable as ar,isNullable as or,fromEvent as sr,merge as cr,observableFrom as lr,filterChanged as ur,map as dr,Subject as fr,Subscription as pr,ValueSubject as mr,ErrorCategory as hr}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as gr,isNullable as _r,Subscription as vr}from"@vkontakte/videoplayer-shared/es2015";import{fromEvent as P,map as Mr,merge as Nr,filterChanged as Pr,isNonNullable as Fr,Subject as Ir,filter as Lr,mapTo as Rr,combine as zr,once as Br,shareReplay as F,throttle as Vr,ErrorCategory as Hr,ErrorOrigin as Ur,ValueSubject as Wr,Subscription as Gr}from"@vkontakte/videoplayer-shared/es2015";import{VideoQuality as Zr}from"@vkontakte/videoplayer-shared/es2015";import{assertNotEmptyArray as $r,getWindow as ei,isInvariantQuality as ti,ValueSubject as ni}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as ri}from"@vkontakte/videoplayer-shared/es2015";import{objectFromEntries as ii}from"@vkontakte/videoplayer-shared/es2015";import{now as oi}from"@vkontakte/videoplayer-shared/es2015";import{flattenObject as ci,isInvariantQuality as li,isLowerOrEqual as ui,isNonNullable as di,now as fi}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as pi}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as mi}from"@vkontakte/videoplayer-shared/es2015";import{isLowerOrEqual as hi,isNonNullable as gi,isNullable as _i}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as ji,isNonNullable as Mi,isNullable as Ni}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as Pi}from"@vkontakte/videoplayer-shared/es2015";import{Subscription as Fi}from"@vkontakte/videoplayer-shared/es2015";import{Subscription as Ri}from"@vkontakte/videoplayer-shared/es2015";import{isHigher as Xi,isInvariantQuality as Zi,isNonNullable as Qi}from"@vkontakte/videoplayer-shared/es2015";import{isHigherOrEqual as ea,isLowerOrEqual as ta,isNonNullable as na,videoSizeToQuality as ra}from"@vkontakte/videoplayer-shared/es2015";import{isHigherOrEqual as aa,isNullable as oa}from"@vkontakte/videoplayer-shared/es2015";import{isHigher as sa,isLower as ca,isNonNullable as la,isNullable as ua,videoHeightToQuality as da}from"@vkontakte/videoplayer-shared/es2015";import{isHigherOrEqual as _a,isNonNullable as va,isNullable as ya,now as ba}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Sa}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Ca}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Ea,isLowerOrEqual as Da,isNonNullable as Oa,isNullable as ka}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as ja}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Na,now as Pa}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Ba,assertNonNullable as Va,combine as Ha,debounce as Ua,ErrorCategory as Wa,filter as Ga,filterChanged as Ka,isNonNullable as qa,map as Ja,merge as Ya,observableFrom as Xa,once as Za,Subscription as Qa,ValueSubject as $a,videoQualityToHeight as eo,videoSizeToQuality as to}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as no}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as ao,isNullable as oo,assertNonNullable as so}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as co}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as lo,assertNonNullable as uo,now as fo}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as xo}from"@vkontakte/videoplayer-shared/es2015";import{Subject as Co}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as wo}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as Eo}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Do}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as Io}from"@vkontakte/videoplayer-shared/es2015";import{debounce as Lo,filter as Ro,fromEvent as zo,interval as Bo,isHigher as Vo,isInvariantQuality as Ho,isLower as Uo,merge as Wo,Subject as Go,Subscription as Ko}from"@vkontakte/videoplayer-shared/es2015";import{map as Yo,Observable as Xo}from"@vkontakte/videoplayer-shared/es2015";import{fromEvent as Zo}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as es}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as ts}from"@vkontakte/videoplayer-shared/es2015";import{filter as ws,filterChanged as Ts,isNonNullable as Es}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Ds,assertNonNullable as Os,debounce as ks,ErrorCategory as As,filter as js,filterChanged as Ms,fromEvent as Ns,isNonNullable as Ps,isNullable as Fs,map as Is,mapTo as Ls,merge as Rs,observableFrom as zs,once as Bs,Subscription as Vs,throttle as Hs}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Us}from"@vkontakte/videoplayer-shared/es2015";import{videoSizeToQuality as Ws}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as Qs,now as $s,once as ec,Subscription as tc,ValueSubject as nc,isNonNullable as rc,safeStorage as ic,filterChanged as ac}from"@vkontakte/videoplayer-shared/es2015";import{combine as mc,map as hc,observeElementSize as gc,Subscription as _c,ValueSubject as vc,noop as yc}from"@vkontakte/videoplayer-shared/es2015";import{filter as xc,map as Sc,once as Cc}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Tc}from"@vkontakte/videoplayer-shared/es2015";import{filterChanged as Ec,isNonNullable as Dc,isNullable as Oc,now as kc,once as Ac,Subscription as jc,ValueSubject as Mc}from"@vkontakte/videoplayer-shared/es2015";import{isInvariantQuality as Pc,isNonNullable as Fc,isNullable as Ic,Subscription as Lc,ValueSubject as Rc}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as zc}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as Yc}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as Xc}from"@vkontakte/videoplayer-shared/es2015";import{stringTrimStart as Zc}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Qc}from"@vkontakte/videoplayer-shared/es2015";import{abortable as el,assertNonNullable as tl,ErrorCategory as nl,ErrorOrigin as rl,filter as il,filterChanged as al,flattenObject as ol,fromEvent as sl,getTraceSubscriptionMethod as cl,getWindow as ll,interval as ul,isNonNullable as dl,isNullable as fl,map as pl,merge as ml,nowInt as hl,Subject as gl,Subscription as _l,SubscriptionRemovable as vl,ValueSubject as z}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as yl}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as bl}from"@vkontakte/videoplayer-shared/es2015";import{abortable as Cl,assertNever as wl,ErrorCategory as Tl,flattenObject as El,fromEvent as Dl,getWindow as Ol,isNonNullable as kl,merge as Al,now as jl,Subject as Ml,Subscription as Nl,suppressAbort as Pl,ValueSubject as Fl,videoQualityToHeight as Il,VideoQuality as Ll,isAbortError as Rl}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Bl,ErrorOrigin as Vl}from"@vkontakte/videoplayer-shared/es2015";import{devNull as Jl,getWindow as Yl}from"@vkontakte/videoplayer-shared/es2015";import{stringReplaceAll as su}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as cu}from"@vkontakte/videoplayer-shared/es2015";import{stringPadStart as lu}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as uu}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as du}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as fu}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as pu}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as hu,isNullable as gu}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as _u}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as wu}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Tu}from"@vkontakte/videoplayer-shared/es2015";import{requestIdleCallbackPolyfilled as Eu}from"@vkontakte/videoplayer-shared/es2015";import{abortable as Du,assertNonNullable as Ou,ErrorCategory as ku,ErrorOrigin as Au,flattenObject as B,fromEvent as ju,getExponentialDelay as Mu,getWindow as Nu,isAbortError as Pu,isHigher as Fu,isNonNullable as V,isNullable as H,once as Iu,Subject as Lu,Subscription as Ru,ValueSubject as zu}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Bu}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Uu}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as bd}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as xd,isNonNullable as Sd,isNullable as Cd}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as wd}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Fd}from"@vkontakte/videoplayer-shared/es2015";import{videoSizeToQuality as Id}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Jd,getWindow as Yd,isNonNullable as Xd,isNullable as Zd,now as Qd,isAbortError as $d}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as tf,getWindow as nf,isAbortError as rf,isNullable as af,now as of}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as cf}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as lf,ErrorCategory as uf,isNullable as df,ValueSubject as ff}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as hf,fromEvent as gf,isNullable as _f,Subject as vf,Subscription as yf,ValueSubject as bf}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as xf,ErrorCategory as Sf,Subject as Cf}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as Af}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as jf,isHigher as Mf,isLower as Nf,isLowerOrEqual as Pf,VideoQuality as Ff}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Jf,combine as Yf,ErrorCategory as Xf,filter as Zf,filterChanged as Qf,fromEvent as $f,isNonNullable as ep,map as tp,merge as np}from"@vkontakte/videoplayer-shared/es2015";import{combine as ap,merge as op,filter as sp,filterChanged as cp,isNullable as lp,map as up,ValueSubject as dp,isNonNullable as fp}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as bp,ValueSubject as xp}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Dp,combine as Op,ErrorCategory as kp,filter as Ap,filterChanged as jp,fromEvent as Mp,interval as Np,isNonNullable as Pp,isNullable as Fp,map as Ip,now as Lp,throttle as Rp}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as Bp,ValueSubject as Vp}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Gp,assertNonNullable as Kp,combine as qp,debounce as Jp,ErrorCategory as Yp,filter as Xp,filterChanged as Zp,fromEvent as Qp,isNonNullable as $p,isNullable as em,map as tm,merge as nm,observableFrom as rm,once as im,Subscription as am,throttle as om}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as sm}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as cm}from"@vkontakte/videoplayer-shared/es2015";import{abortable as um,assertNonNullable as dm,combine as fm,ErrorCategory as pm,ErrorOrigin as mm,filter as hm,filterChanged as gm,flattenObject as _m,fromEvent as vm,getTraceSubscriptionMethod as ym,interval as bm,isNonNullable as xm,isNullable as Sm,map as Cm,merge as wm,now as Tm,Subject as Em,Subscription as Dm,SubscriptionRemovable as Om,tap as km,throttle as Am,ValueSubject as W}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as jm}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Mm}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Nm}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as Pm}from"@vkontakte/videoplayer-shared/es2015";import{cancelIdleCallbackPolyfilled as Fm}from"@vkontakte/videoplayer-shared/es2015";import{requestIdleCallbackPolyfilled as Im}from"@vkontakte/videoplayer-shared/es2015";import{promiseFinally as Lm}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Rm,ErrorCategory as zm,Subject as Bm}from"@vkontakte/videoplayer-shared/es2015";import{abortable as Km,assertNonNullable as qm,ErrorCategory as Jm,ErrorOrigin as Ym,flattenObject as Xm,fromEvent as Zm,getExponentialDelay as Qm,getWindow as $m,isHigher as eh,isNonNullable as th,isNullable as G,now as nh,once as rh,Subject as ih,Subscription as ah,ValueSubject as oh,isAbortError as sh}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as lh}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as uh}from"@vkontakte/videoplayer-shared/es2015";import{abortable as dh,assertNever as fh,fromEvent as ph,merge as mh,now as hh,Subject as gh,ValueSubject as _h,flattenObject as vh,ErrorCategory as yh,SubscriptionRemovable as bh,getWindow as xh,isNonNullable as Sh,suppressAbort as Ch,videoQualityToHeight as wh,VideoQuality as Th}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Eh,ErrorOrigin as Dh}from"@vkontakte/videoplayer-shared/es2015";import{devNull as Ph,getWindow as Fh}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as Jh,ValueSubject as Yh}from"@vkontakte/videoplayer-shared/es2015";import{combine as ng,merge as rg,filter as ig,filterChanged as ag,isNullable as og,map as sg,ValueSubject as cg,isNonNullable as lg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as dg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as fg}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as hg,combine as gg,debounce as _g,ErrorCategory as vg,filter as yg,filterChanged as bg,isNonNullable as xg,isNullable as Sg,map as Cg,merge as wg,observableFrom as Tg,Subscription as Eg,ValueSubject as Dg,VideoQuality as Og}from"@vkontakte/videoplayer-shared/es2015";import{objectFromEntries as kg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as Ag}from"@vkontakte/videoplayer-shared/es2015";import{videoSizeToQuality as jg,getExponentialDelay as Mg}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as Vg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as Hg}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Ug,Subscription as Wg,throttle as Gg,ValueSubject as Kg,Subject as qg,ErrorCategory as Jg}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Zg,debounce as Qg,ErrorCategory as $g,fromEvent as e_,isInvariantQuality as t_,isNonNullable as n_,isNullable as r_,map as i_,merge as a_,observableFrom as o_,Subscription as s_,ValueSubject as c_,VideoQuality as l_}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as d_}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as f_}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as p_}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as m_,assertNonNullable as h_,debounce as g_,ErrorCategory as __,isHigherOrEqual as v_,isLowerOrEqual as y_,isNonNullable as b_,merge as x_,observableFrom as S_,Subscription as C_,map as w_}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as E_,debounce as D_,merge as O_,observableFrom as k_,Subscription as A_,map as j_,ValueSubject as M_,ErrorCategory as N_,VideoQuality as P_}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as F_}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as U_,assertNonNullable as W_,ErrorCategory as G_,ErrorOrigin as K_,filter as q_,isNonNullable as J_,isNullable as Y_,map as X_,merge as Z_,once as Q_,Subject as K,Subscription as $_,ValueSubject as q,flattenObject as ev,devNull as tv,getWindow as nv}from"@vkontakte/videoplayer-shared/es2015";import{Observable as rv,map as iv,Subscription as av,Subject as ov,now as sv,combine as cv}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as uv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as dv,Subscription as fv,combine as pv,filter as mv,once as hv}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as gv}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as yv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as bv,Subject as xv,Subscription as Sv,merge as Cv,isNonNullable as wv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorOrigin as Tv,flattenObject as Ev,isNullable as Dv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Av}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Mv,ErrorOrigin as Nv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorOrigin as Fv,flattenObject as Iv}from"@vkontakte/videoplayer-shared/es2015";import{filterChanged as Rv,flattenObject as zv,fromEvent as Bv,getWindow as Vv,isNonNullable as Hv,merge as Uv,now as Wv,Subject as Gv,Subscription as Kv,ErrorOrigin as qv}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as Xv,isNonNullable as Zv,getWindow as Qv}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as ny,isNonNullable as ry,Subscription as iy}from"@vkontakte/videoplayer-shared/es2015";import{fromEvent as cy,once as ly,combine as uy,Subscription as dy,ValueSubject as fy,map as py,filter as my,isNonNullable as hy,now as J,safeStorage as gy,getWindow as _y}from"@vkontakte/videoplayer-shared/es2015";import{fillWithDefault as Oy,VideoQuality as ky}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as My,combine as Ny,devNull as Py,ErrorCategory as Fy,filter as Y,filterChanged as X,flattenObject as Iy,fromEvent as Ly,getPlayerId as Ry,getTimersDiagnostics as zy,getTraceSubscriptionMethod as By,getWindow as Vy,InternalsExposure as Hy,isHigher as Uy,isInvariantQuality as Wy,isNonNullable as Gy,isNullable as Ky,Logger as qy,map as Z,mapTo as Jy,merge as Yy,now as Xy,once as Q,releaseTimers as Zy,retainTimers as Qy,Subject as $,Subscription as $y,tap as eb,throttle as tb,TracerFactory as nb,ValueSubject as rb,combineLatest as ib}from"@vkontakte/videoplayer-shared/es2015";import{merge as ab,map as ob,filter as sb,isNonNullable as cb}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as ub}from"@vkontakte/videoplayer-shared/es2015";import{filter as fb,once as pb}from"@vkontakte/videoplayer-shared/es2015";import{requestIdleCallbackPolyfilled as hb}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as gb}from"@vkontakte/videoplayer-shared/es2015";import{cancelIdleCallbackPolyfilled as _b}from"@vkontakte/videoplayer-shared/es2015";import{devNull as vb,getWindow as yb}from"@vkontakte/videoplayer-shared/es2015";import{Subscription as Db,Observable as Ob,Subject as kb,ValueSubject as Ab,VideoQuality as jb}from"@vkontakte/videoplayer-shared/es2015";var _oxcModwhy8yy=function(){function e(t){"@babel/helpers - typeof";return e=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},e(t)}var t=e;function n(e,n){if(t(e)!=`object`||!e)return e;var r=e[Symbol._oxc_toPrimitive];if(r!==void 0){var i=r.call(e,n||`default`);if(t(i)!=`object`)return i;throw TypeError(`@@_oxc_toPrimitive must return a primitive value.`)}return(n===`string`?String:Number)(e)}var t=e,r=n;function i(e){var n=r(e,`string`);return t(n)==`symbol`?n:n+``}var a=i;function o(e,t,n){return(t=a(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var s=o;function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?c(Object(n),!0).forEach(function(t){s(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function u(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){n(e);return}s.done?t(c):Promise.resolve(c).then(r,i)}function d(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var a=e.apply(t,n);function o(e){u(a,r,i,o,s,`next`,e)}function s(e){u(a,r,i,o,s,`throw`,e)}o(void 0)})}}function f(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.includes(r))continue;n[r]=e[r]}return n}var p=f;function m(e,t){if(e==null)return{};var n,r,i=p(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.includes(n)||{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function h(e,t){this.v=e,this.k=t}var g=h;function _(e){return new g(e,0)}var g=h;function v(e){return function(){return new y(e.apply(this,arguments))}}function y(e){var t,n;function r(t,n){try{var a=e[t](n),o=a.value,s=o instanceof g;Promise.resolve(s?o.v:o).then(function(n){if(s){var c=t===`return`?`return`:`next`;if(!o.k||n.done)return r(c,n);n=e[c](n).value}i(a.done?`return`:`normal`,n)},function(e){r(`throw`,e)})}catch(e){i(`throw`,e)}}function i(e,i){switch(e){case`return`:t.resolve({value:i,done:!0});break;case`throw`:t.reject(i);break;default:t.resolve({value:i,done:!1})}(t=t.next)?r(t.key,t.arg):n=null}this._invoke=function(e,i){return new Promise(function(a,o){var s={key:e,arg:i,resolve:a,reject:o,next:null};n?n=n.next=s:(t=n=s,r(e,i))})},typeof e.return!=`function`&&(this.return=void 0)}y.prototype[typeof Symbol==`function`&&Symbol.asyncIterator||`@@asyncIterator`]=function(){return this},y.prototype.next=function(e){return this._invoke(`next`,e)},y.prototype.throw=function(e){return this._invoke(`throw`,e)},y.prototype.return=function(e){return this._invoke(`return`,e)};const b=[`name`],x=[`url`],S=[`url`],C=[`downloadingItems`],w=[`data`],T=[`container`];var E=l,D=d,ee=m,te=_,O=v,ne=`2.0.174-dev.a50406f6b.0`,re;(e=>{e.STOPPED=`stopped`,e.READY=`ready`,e.PLAYING=`playing`,e.PAUSED=`paused`})(re||={});var ie;(e=>{e.MPEG=`MPEG`,e.DASH=`DASH`,e.DASH_SEP=`DASH_SEP`,e.DASH_SEP_VK=`DASH_SEP`,e.DASH_WEBM=`DASH_WEBM`,e.DASH_WEBM_AV1=`DASH_WEBM_AV1`,e.DASH_STREAMS=`DASH_STREAMS`,e.DASH_WEBM_VK=`DASH_WEBM`,e.DASH_ONDEMAND=`DASH_ONDEMAND`,e.DASH_ONDEMAND_VK=`DASH_ONDEMAND`,e.DASH_LIVE=`DASH_LIVE`,e.DASH_LIVE_CMAF=`DASH_LIVE_CMAF`,e.DASH_LIVE_WEBM=`DASH_LIVE_WEBM`,e.HLS=`HLS`,e.HLS_ONDEMAND=`HLS_ONDEMAND`,e.HLS_JS=`HLS`,e.HLS_FMP4=`HLS_FMP4`,e.HLS_LIVE=`HLS_LIVE`,e.HLS_LIVE_CMAF=`HLS_LIVE_CMAF`,e.WEB_RTC_LIVE=`WEB_RTC_LIVE`})(ie||={});var ae;(e=>{e.AV1=`av1`,e.VP9=`vp9`,e.AVC1=`avc1`,e.HEV1=`hev1`})(ae||={});var oe;(e=>{e.NOT_AVAILABLE=`NOT_AVAILABLE`,e.AVAILABLE=`AVAILABLE`,e.CONNECTING=`CONNECTING`,e.CONNECTED=`CONNECTED`})(oe||={});var se;(e=>{e.HTTP1=`http1`,e.HTTP2=`http2`,e.QUIC=`quic`})(se||={});var ce;(e=>{e.NONE=`none`,e.INLINE=`inline`,e.FULLSCREEN=`fullscreen`,e.SECOND_SCREEN=`second_screen`,e.PIP=`pip`,e.INVISIBLE=`invisible`})(ce||={});var le;(e=>{e.TRAFFIC_SAVING=`traffic_saving`,e.HIGH_QUALITY=`high_quality`,e.UNKNOWN=`unknown`})(le||={});var De=e=>new Promise((t,n)=>{let r=document.createElement(`script`);r.setAttribute(`src`,e),r.onload=()=>t(),r.onerror=e=>n(e),document.body.appendChild(r)});class Oe{constructor(e){this.connection$=new ge(void 0),this.castState$=new ge(`NOT_AVAILABLE`),this.errorEvent$=new _e,this.contentId=void 0,this.realCastState$=new ge(`NOT_AVAILABLE`),this.subscription=new ve,this.log=void 0,this.params=void 0,this.isDestroyed=!1,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 n=he(window.chrome?.cast),r=!!window.__onGCastApiAvailable;n?this.initializeCastApi():(window.__onGCastApiAvailable=e=>{delete window.__onGCastApiAvailable,e&&!this.isDestroyed&&this.initializeCastApi()},r||De(`https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1`).catch(()=>this.errorEvent$.next({id:`ChromecastLoading`,category:Ee.NETWORK,message:`Script loading failed!`})))}connect(){cast.framework.CastContext.getInstance()?.requestSession()}disconnect(){var e;(e=cast.framework.CastContext.getInstance())==null||(e=e.getCurrentSession())==null||e.endSession(!0)}stopMedia(){return new Promise((e,t)=>{var n;(n=cast.framework.CastContext.getInstance())==null||(n=n.getCurrentSession())==null||(n=n.getMediaSession())==null||n.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){he(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();Te(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();Te(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.isDestroyed=!0,this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),n=cast.framework.CastContext.getInstance();this.subscription.add(xe(n,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(e=>{switch(e.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:var t;this.contentId=(t=n.getCurrentSession())==null||(t=t.getMediaSession())==null||(t=t.media)==null?void 0:t.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 pe(e.sessionState)}})).add(ye(xe(n,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(Ce(e=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(e)}`})}),Se(e=>e.castState)),be([n.getCastState()])).pipe(we(),Se(ke),Ce(e=>{this.log({message:`realCastState$: ${e}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(r=>{let i=r===`CONNECTED`,a=he(this.connection$.getValue());if(i&&!a){var o;let r=n.getCurrentSession();me(r);let i=r.getCastDevice(),a=(o=r.getMediaSession())==null||(o=o.media)==null?void 0:o.contentId;(Te(a)||a===this.contentId)&&(this.log({message:`connection created`}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:r,castDevice:i}))}else!i&&a&&(this.log({message:`connection destroyed`}),this.connection$.next(void 0));this.castState$.next(r===`CONNECTED`?he(this.connection$.getValue())?`CONNECTED`:`AVAILABLE`:r)}))}initializeCastApi(){let e,t,n;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,n=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:n}),this.initListeners()}catch(e){this.errorEvent$.next({id:`ChromecastInitializer`,category:Ee.EXTERNAL_API,message:`[initializeCastApi] failed`,thrown:e})}}}var ke=e=>{switch(e){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 pe(e)}};var Je=`_offset_p`,Ye=e=>{if(Ke(e,Je))return!0;try{return new URL(e).searchParams.has(`offset_p`)}catch{return!1}},k=(e,t=0,n=0)=>{switch(n){case 0:return e.replace(Je,t===0?``:`_`+t.toFixed(0));case 1:{if(t===0)return e;let n=new URL(e);return n.searchParams.append(`playback_shift`,t.toFixed(0)),n.toString()}case 2:{let n=new URL(e);return!n.searchParams.get(`offset_p`)&&t===0?e:(n.searchParams.set(`offset_p`,t.toFixed(0)),n.toString())}default:qe(n)}return e},Xe=(e,t)=>{switch(t){case 0:return NaN;case 1:{let t=new URL(e);return Number(t.searchParams.get(`playback_shift`))}case 2:{let t=new URL(e);return Number(t.searchParams.get(`offset_p`)??0)}default:qe(t)}},Ze=e=>{let{source:t,format:n,meta:r,output:i}=e,a,o,s;switch(n){case`MPEG`:{let e=t[n];He(e);let r=We(Object.keys(e));He(r);let i=e[r];He(i),a=i,o=`video/mp4`,s=Qe();break}case`HLS`:case`HLS_FMP4`:case`HLS_ONDEMAND`:{let e=t[n];He(e),a=e.url,o=`application/x-mpegurl`,s=Qe();break}case`DASH_SEP`:case`DASH_ONDEMAND`:case`DASH_WEBM`:case`DASH_WEBM_AV1`:case`DASH_STREAMS`:{let e=t[n];He(e),a=e.url,o=`application/dash+xml`,s=Qe();break}case`DASH_LIVE_CMAF`:{let e=t[n];He(e),a=e.url,o=`application/dash+xml`,s=$e();break}case`HLS_LIVE`:case`HLS_LIVE_CMAF`:{let e=t[n];He(e),a=k(e.url),o=`application/x-mpegurl`,s=$e();break}case`DASH_LIVE`:case`WEB_RTC_LIVE`:{let e=`Unsupported format for Chromecast`,t=Error(e);throw i.error$.next({id:`ChromecastProvider.createMediaInfo()`,category:Ue.VIDEO_PIPELINE,message:e,thrown:t}),t}case`DASH`:case`DASH_LIVE_WEBM`:throw Error(`${n} is no longer supported`);default:return Ve(n)}let c=et(r.videoId??a,o);c.contentUrl=a,c.streamType=s,c.metadata=tt();let{title:l,subtitle:u}=r;return Ge(l)&&(c.metadata.title=l),Ge(u)&&(c.metadata.subtitle=u),c};function Qe(){var e;return((e=chrome.cast)==null||(e=e.media)==null||(e=e.StreamType)==null?void 0:e.BUFFERED)??`BUFFERED`}function $e(){var e;return((e=chrome.cast)==null||(e=e.media)==null||(e=e.StreamType)==null?void 0:e.LIVE)??`LIVE`}function et(e,t){var n;return!((n=chrome.cast)==null||(n=n.media)==null)&&n.MediaInfo?new chrome.cast.media.MediaInfo(e,t):{contentId:e,contentType:t,metadata:{title:``,subtitle:``},streamType:Qe()}}function tt(){var e;return!((e=chrome.cast)==null||(e=e.media)==null)&&e.GenericMediaMetadata?new chrome.cast.media.GenericMediaMetadata:{images:[],metadataType:0,releaseDate:``,subtitle:``,title:``,releaseYear:1970,type:0}}var A=(e,t,n=!1)=>{let r=e.getTransition();(n||!r||r.to===t)&&e.setState(t)};var j=nt(rt.CORE);class it{constructor(e){this.params=void 0,this.interval=0,this.startVideoPosition=void 0,this.startTs=void 0,this.params=e}start(e=0){j.clearInterval(this.interval),this.startVideoPosition=e,this.startTs=Date.now(),this.interval=j.setInterval(()=>{let e=(Date.now()-this.startTs)/1e3,t=this.startVideoPosition+e;this.params.output.position$.next(t)},1e3)}pause(){j.clearInterval(this.interval)}destroy(){j.clearInterval(this.interval)}}class dt{constructor(){this._current=void 0,this._current_version=void 0,this._chromeVersion=void 0,this._firefoxVersion=void 0,this._safariVersion=void 0,this._operaVersion=void 0,this._edgeVersion=void 0,this._yandexVersion=void 0,this._isMiuiBrowser=!1}get current(){return this._current}get isChrome(){return this.current===`Chrome`}get isChromiumBased(){return ct([`Chrome`,`Chromium`,`Opera`,`Yandex`,`Edge`,`SamsungBrowser`],this.current)}get isFirefox(){return this.current===`Firefox`}get isSafari(){return this.current===`Safari`}get isOpera(){return this.current===`Opera`}get isEdge(){return this.current===`Edge`}get isYandex(){return this.current===`Yandex`}get isSamsungBrowser(){return this.current===`SamsungBrowser`}get currentVersion(){return this._current_version}get chromeVersion(){return this._chromeVersion}get firefoxVersion(){return this._firefoxVersion}get safariVersion(){return this._safariVersion}get operaVersion(){return this._operaVersion}get edgeVersion(){return this._edgeVersion}get yandexVersion(){return this._yandexVersion}get isMiuiBrowser(){return this._isMiuiBrowser}detect(){let{userAgent:e}=navigator;try{let t=/yabrowser/i.test(e)?`Yandex`:void 0,n=/samsungbrowser/i.test(e)?`SamsungBrowser`:void 0,r=/chrome|crios/i.test(e)?`Chrome`:void 0,i=/chromium/i.test(e)?`Chromium`:void 0,a=/firefox|fxios/i.test(e)?`Firefox`:void 0,o=/smart-tv;.*tizen/i.test(e)?`Chrome`:void 0,s=/webkit|safari|khtml/i.test(e)?`Safari`:void 0,c=/opr\//i.test(e)?`Opera`:void 0,l=/edg/i.test(e)?`Edge`:void 0;this._isMiuiBrowser=/(XiaoMi)|(MiuiBrowser)/i.test(e),this._current=t||n||a||c||l||r||i||o||s||`Rest`}catch(e){console.error(e)}this.isChrome&&this.detectChromeVersion(),this.isFirefox&&this.detectFirefoxVersion(),this.isSafari&&this.detectSafariVersion(),this.isOpera&&this.detectOperaVersion(),this.isEdge&&this.detectEdgeVersion(),this.isYandex&&this.detectYandexVersion()}detectVersion(e){try{let{userAgent:t}=lt().navigator,n=t.match(e);if(!n)return;let r=n[1],i=parseInt(r,10);if(!isNaN(i))return this._current_version=i,i}catch(e){console.error(e)}}detectChromeVersion(){this._chromeVersion=this.detectVersion(/Chrome\/(\d+\.\d+)/),ut(this._chromeVersion)&&(this._chromeVersion=this.detectVersion(/(\d+\.\d+\.\d+\.\d+)\/\d+\.\d+ TV/))}detectFirefoxVersion(){this._firefoxVersion=this.detectVersion(/Firefox\/(\d+\.\d+)/)}detectSafariVersion(){this._safariVersion=this.detectVersion(/Version\/(\d+)/)}detectOperaVersion(){this._operaVersion=this.detectVersion(/OPR\/(\d+\.\d+)/)}detectEdgeVersion(){this._edgeVersion=this.detectVersion(/Edg\/(\d+\.\d+)/)}detectYandexVersion(){this._yandexVersion=this.detectVersion(/YaBrowser\/(\d+\.\d+\.\d+)/)}}var mt=()=>{var e;return/Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(navigator.appVersion??navigator.userAgent)||((e=navigator)==null||(e=e.userAgentData)==null?void 0:e.mobile)};class ht{constructor(e){this._displayChecker=void 0,this._isMobile=void 0,this._current=void 0,this._iosVersion=void 0,this._highEntropyValues={},this._os={name:`Unknown`,version:`Unknown`,full:`Unknown`},this._details={vendor:`Unknown`,model:`Unknown`},this._hardware={},this._gpuDetection=void 0,this._displayChecker=e}get current(){return this._current}get os(){return this._os}get details(){return this._details}get hardware(){return this._hardware}get highEntropyValues(){return this._highEntropyValues}get isIOS(){return this._highEntropyValues.platform===`iOS`||M(this.os.name.toLowerCase(),`ios`)||M([`iPhone`,`iPad`,`iPod`],this.current)}get isIPadOS(){let e=this.current===`Mac`&&this._displayChecker.isTouch;return this.current===`iPad`||e}get isMac(){return this._highEntropyValues.platform===`macOS`||M(this.os.name.toLowerCase(),`mac`)||this.current===`Mac`}get isApple(){return this.isIOS||this.isMac}get isIphoneOrOldIpad(){if(!this.isApple||!this._displayChecker.isTouch)return!1;let e=this.current===`iPad`||this._displayChecker.width>700,t=this._iosVersion;return!e||e&&!!t&&t<16}get isAndroid(){return this._highEntropyValues.platform===`Android`||M(this.os.name.toLowerCase(),`android`)||this.current===`Android`}get isWindows(){return M(this.os.name.toLowerCase(),`windows`)}get isLinux(){return M(this.os.name.toLowerCase(),`linux`)&&!this.isAndroid}get isMobile(){return this._highEntropyValues.mobile||this._isMobile}get iOSVersion(){return this._iosVersion}detect(){let e=ft();if(!pt(e))return;let{userAgent:t}=e.navigator;try{this._isMobile=mt()}catch(e){console.error(`DeviceChecker: calling isMobile error - `,e)}this.detectDevice(t),this.detectOS(t),this.detectDeviceDetails(t),this.detectHardware(e),this.detectHighEntropyValues(),this.isIOS&&this.detectIOSVersion()}detectHardware(e){let t=e.navigator;try{this._hardware={cpuCores:t.hardwareConcurrency,memoryGb:t.deviceMemory}}catch(e){console.error(`DeviceChecker: detectHardware error - `,e)}}detectGpu(){return this._gpuDetection??=this.requestGpuInfo(),this._gpuDetection}requestGpuInfo(){var e=this;return D(function*(){let t=ft();if(pt(t))try{var n,r;let i=yield t.navigator.gpu?.requestAdapter();e._hardware=E(E({},e._hardware),{},{gpuVendor:(i==null||(n=i.info)==null?void 0:n.vendor)||void 0,gpuArchitecture:(i==null||(r=i.info)==null?void 0:r.architecture)||void 0})}catch(e){console.error(`DeviceChecker: detectGpu error - `,e)}})()}detectHighEntropyValues(){var e=this;return D(function*(){let t=ft();if(!pt(t))return;let{userAgentData:n}=t.navigator;if(n?.getHighEntropyValues){let t=yield n.getHighEntropyValues([`architecture`,`bitness`,`brands`,`mobile`,`platform`,`formFactor`,`model`,`platformVersion`,`wow64`]);e._highEntropyValues=t,t.platform&&(e._os.name=e.normalizeOSName(t.platform),t.platformVersion&&(e._os.version=e.normalizeOSVersion(t.platformVersion),e._os.full=`${e._os.name} ${e._os.version}`)),t.model&&(e._details.model=t.model)}})()}detectDevice(e){try{let t=/android/i.test(e)?`Android`:void 0,n=/iphone/i.test(e)?`iPhone`:void 0,r=/ipad/i.test(e)?`iPad`:void 0,i=/ipod/i.test(e)?`iPod`:void 0,a=/mac/i.test(e)?`Mac`:void 0,o=/webOS|BlackBerry|IEMobile|Opera Mini/i.test(e)?`RestMobile`:void 0;this._current=t||n||r||i||o||a||`Desktop`}catch(e){console.error(`DeviceChecker: device detection error - `,e)}}detectOS(e){try{for(let[t,n]of[[/(windows nt) (6\.[23]); arm/i,[`Windows RT`]],[/(windows nt) (6\.3); arm/i,[`Windows RT 8.1`]],[/(windows (?:phone|mobile|iot))(?: os)?[/ ]?([\d.]+)/i,[`Windows Mobile`,2]],[/(windows)[/ ](xp|vista|7|8(\.1)?|10|11|2000|me)/i,[1,1]],[/windows nt ?([\d.]+)/i,[`Windows`,1]],[/(windows)[/ ](95|98|me|2000|xp|vista|7|8|8\.1|10|11)/i,[1,2]],[/(iphone os|cpu iphone os) ([\d_.]+)/i,[`iOS`,2]],[/(ipad os|cpu os) ([\d_.]+)/i,[`iPadOS`,2]],[/(ipod os|cpu ipod os) ([\d_.]+)/i,[`iOS`,2]],[/(?:ios|os) ([\d_.]+) like mac os x/i,[`iOS`,1]],[/cfnetwork\/.+darwin/i,[`iOS`]],[/(mac os x) ?([\d_.]+)/i,[`macOS`,2]],[/(macintosh|mac os)/i,[`macOS`]],[/(android) ([\d.]+)/i,[1,2]],[/(harmonyos)[/ ]?([\d.]*)/i,[`HarmonyOS`,2]],[/\b(ubuntu|debian|fedora|centos|arch|linux)(?:[-/ ]([\w.]+))?/i,[1,2]],[/(cros)\D*([\d.]+)/i,[`Chrome OS`,2]],[/(freebsd|openbsd|netbsd|dragonfly)[/ ]?([\w.]*)/i,[1,2]],[/(sunos|solaris)?([\d.]*)/i,[`Solaris`,2]],[/(aix)?([\d.]*)/i,[`AIX`,2]]]){let r=e.match(t);if(r){let t=n.length>0,i=n.length>1,a=`Unknown`,o=`Unknown`;if(t){let e=n[0];typeof e==`number`?e<r.length&&r[e]!==void 0&&(a=r[e]):a=e}if(i){let e=n[1];typeof e==`number`?e<r.length&&r[e]!==void 0&&(o=r[e]):e!==void 0&&(o=e)}else r[2]===void 0?r[1]!==void 0&&t&&typeof n[0]==`string`&&(o=r[1]):o=r[2];a=this.normalizeOSName(a),o=this.normalizeOSVersion(o,a),a===`iOS`&&/ipad/i.test(e)?a=`iPadOS`:a===`iPadOS`&&/ip(hone|od)/i.test(e)&&(a=`iOS`),this._os={name:a,version:o||`Unknown`,full:o&&o!==`Unknown`?`${a} ${o}`:a};break}}}catch(e){console.error(`DeviceChecker: OS detection error - `,e)}}normalizeOSName(e){if(!e)return`Unknown`;let t=e.toLowerCase();return M(t,`windows`)?`Windows`:M(t,`mac os`)||M(t,`macintosh`)?`macOS`:M(t,`iphone`)||M(t,`ios`)?`iOS`:M(t,`ipados`)?`iPadOS`:M(t,`android`)?`Android`:M(t,`harmonyos`)?`HarmonyOS`:M(t,`linux`)?`Linux`:M(t,`cros`)?`Chrome OS`:M(t,`freebsd`)?`FreeBSD`:M(t,`openbsd`)?`OpenBSD`:M(t,`solaris`)||M(t,`sunos`)?`Solaris`:M(t,`aix`)?`AIX`:e}normalizeOSVersion(e,t){if(!e)return`Unknown`;if(e!==`Unknown`&&(e=e.replace(/_/g,`.`),t===`Windows`)){let t=parseFloat(e);if(!isNaN(t)){if(t>=11)return`11`;if(t>=10)return`10`;if(t===6.3)return`8.1`;if(t===6.2)return`8`;if(t===6.1)return`7`;if(t===6)return`Vista`;if(t===5.1||t===5.2)return`XP`;if(t===5)return`2000`;if(t===4)return`NT 4.0`}}return e}detectDeviceDetails(e){try{for(let[t,n]of[[/(iphone)/i,[`Apple`,`iPhone`]],[/(ipad)/i,[`Apple`,`iPad`]],[/(ipod)/i,[`Apple`,`iPod`]],[/(macintosh)/i,[`Apple`,`Macintosh`]],[/(windows[\w\-_ ]*phone)/i,[`Microsoft`,0]],[/(windows nt|win64|win32|wow64)/i,[`Microsoft`,`PC`]],[/\b(sch-i[89]0\d|shw-m380s|sm-[ptxs]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i,[`Samsung`,1]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?\d+a?|galaxy nexus)/i,[`Samsung`,1]],[/samsung[- ]((?!sm-[lr]|browser)[-\w]+)/i,[`Samsung`,1]],[/sec-(sgh\w+)/i,[`Samsung`,1]],[/smart-tv.+(samsung)/i,[`Samsung`,`Smart TV`]],[/(samsung).*tizen/i,[`Samsung`,`Smart TV`]],[/(pixel (?:c|tablet|[0-9a-z ]+))/i,[`Google`,1]],[/(pixelbook(?: go)?)/i,[`Google`,1]],[/nexus [0-9]/i,[`Google`,0]],[/(redmi[-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(mi[\w\-_ ]+)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(poco[\w ]+)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(hm[-_ ]?note?[\w ]*)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(?:xiao)?mi[\w\-_ ]+pad/i,[`Xiaomi`,0]],[/(?:huawei|honor) ?([-\w ]+)[;)]/i,[`Huawei`,1]],[/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][\dc][adnt]?)\b(?!.+d\/s)/i,[`Huawei`,1]],[/\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?)/i,[`Huawei`,1]],[/(?:one)?(?:plus)? ?([a\d0]\d\d\d?)(?: b|\))/i,[`OnePlus`,1]],[/droid.+; (cph2[3-6]\d[13579]|((?:gm|hd)19|(?:ac|be|in|kb)20|(?:d[en]|eb|le|mt)21|ne22)[0-2]\d)(?: bui|\))/i,[`OnePlus`,1]],[/(oneplus)[-_ ]?([-\w]*)/i,[`OnePlus`,2]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i,[`Realme`,1]],[/(realme)[-_ ]?([-\w]*)/i,[`Realme`,2]],[/; (\w+) bui.+ oppo/i,[`OPPO`,1]],[/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i,[`OPPO`,1]],[/\b(opd2(\d{3}a?))(?: bui|\))/i,[`OPPO`,1]],[/(oppo)[-_ ]?([-\w]*)/i,[`OPPO`,2]],[/; vivo (\w+)(?: bui|\))/i,[`Vivo`,1]],[/\b(v[12]\d{3}\w?[at])(?: bui|;)/i,[`Vivo`,1]],[/(vivo)[-_ ]?([-\w]*)/i,[`Vivo`,2]],[/\bmot(?:orola)?[- ]([\w\s]+)(\)| bui)/i,[`Motorola`,1]],[/((?:moto(?! 360)[-\w() ]+|xt\d{3,4}[cgkosw+]?[-\d]*|nexus 6)(?= bui|\)))/i,[`Motorola`,1]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b/i,[`Motorola`,0]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i,[`Motorola`,0]],[/droid.+; ([a-z]?\d[0-2]{2}[a-z]{2}|[c-g]\d{4}|so[-gl]\w+|xq-[a-z]{2}\d\d)(?= bui|\))/i,[`Sony`,1]],[/sony tablet [ps]/i,[`Sony`,`Xperia Tablet`]],[/\b(?:sony)?sgp\w+(?: bui|\))/i,[`Sony`,0]],[/(sony)[-_ ]?([-\w]*)/i,[`Sony`,2]],[/\blg[-e;/ ]+(?!.*(?:browser|netcast|android tv|watch|webos))(\w+)/i,[`LG`,1]],[/\blg-?([\d\w]+) bui/i,[`LG`,1]],[/(lm(?:-?f100[nv]?|-[\w.]+)(?= bui|\))|nexus [45])/i,[`LG`,1]],[/((?=lg)?[vl]k-?\d{3}) bui/i,[`LG`,0]],[/(lg)[-_ ]?([-\w]*)/i,[`LG`,2]],[/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,[`Nokia`,1]],[/nokia[-_ ]?(([-\w. ]*?))(?: bui|\)|;|\/)/i,[`Nokia`,1]],[/(nokia) (t[12][01])/i,[`Nokia`,2]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i,[`ASUS`,1]],[/(?:asus[-_ ])?(zenfone[\w\-_ ]*)/i,[`ASUS`,1]],[/(rog[\w\-_ ]*)/i,[`ASUS`,1]],[/(asus)[-_ ]?([-\w]*)/i,[`ASUS`,2]],[/lenovo[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i,[`Lenovo`,1]],[/(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])(?: bui|;|\)|\/)/i,[`Lenovo`,1]],[/(thinkpad[\w\-_ ]*)/i,[`Lenovo`,0]],[/(kf[a-z]{2}[a-z]*)(?: bui|\))/i,[`Amazon`,1]],[/(alexa)webm/i,[`Amazon`,`Echo`]],[/(fire[\w\-_ ]*)/i,[`Amazon`,0]],[/(amazon)[-_ ]?([-\w]*)/i,[`Amazon`,2]],[/(?:blackberry|\(bb10;) (\w+)/i,[`BlackBerry`,1]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,[`BlackBerry`,1]],[/(playbook);[-\w),; ]+(rim)/i,[`BlackBerry`,1]],[/(microsoft); (lumia[\w ]+)/i,[`Microsoft`,2]],[/(surface duo)/i,[`Microsoft`,`Surface Duo`]],[/(surface[\w\-_ ]*)/i,[`Microsoft`,0]],[/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,[`ZTE`,2]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,[`HTC`,2]],[/(alcatel|tcl)[-_ ]?([-\w]*)/i,[1,2]],[/(meizu)[-_ ]?([-\w]*)/i,[`Meizu`,2]],[/(tecno)[-_ ]?([-\w]*)/i,[`Tecno`,2]],[/(infinix)[-_ ]?([-\w]*)/i,[`Infinix`,2]],[/(micromax)[-_ ]?([-\w]*)/i,[`Micromax`,2]],[/(lava)[-_ ]?([-\w]*)/i,[`Lava`,2]],[/(panasonic)[-_ ]?([-\w]*)/i,[`Panasonic`,2]],[/(sharp)\/?([-\w]*)/i,[`Sharp`,2]],[/(benq)[-_ ]?([-\w]*)/i,[`BenQ`,2]],[/(palm)[-_ ]?([-\w]*)/i,[`Palm`,2]],[/(vertu)[-_ ]?([-\w]*)/i,[`Vertu`,2]],[/(gionee)[-_ ]?([-\w]*)/i,[`Gionee`,2]],[/(doogee)[-_ ]?([-\w]*)/i,[`Doogee`,2]],[/(ulefone)[-_ ]?([-\w]*)/i,[`Ulefone`,2]],[/(blackview)[-_ ]?([-\w]*)/i,[`Blackview`,2]],[/(cubot)[-_ ]?([-\w]*)/i,[`Cubot`,2]],[/(umidigi)[-_ ]?([-\w]*)/i,[`UMIDIGI`,2]],[/(oukitel)[-_ ]?([-\w]*)/i,[`Oukitel`,2]],[/(fairphone)[-_ ]?([-\w]*)/i,[`Fairphone`,2]],[/(cat)[-_ ]?([-\w]*)/i,[`Cat`,2]],[/(energy)[-_ ]?([-\w]*)/i,[`Energizer`,2]],[/(land rover)[-_ ]?([-\w]*)/i,[`Land Rover`,2]],[/(shield[\w\-_ ]*)/i,[`Nvidia`,0]],[/(crkey)/i,[`Google`,`Chromecast`]],[/(roku)[\dx]*/i,[`Roku`,0]],[/(apple)[-_ ]?tv/i,[`Apple`,`TV`]],[/(amazon)[-_ ]?tv/i,[`Amazon`,`Fire TV`]],[/(google)[-_ ]?tv/i,[`Google`,`TV`]],[/(smart[\w\-_ ]*tv)/i,[0,`Smart TV`]],[/(playstation[\w\-_ ]*)/i,[`Sony`,0]],[/(nintendo[\w\-_ ]*)/i,[`Nintendo`,0]],[/(xbox[\w\-_ ]*)/i,[`Microsoft`,0]],[/(googlebot)/i,[`Google`,`Bot`]],[/(bingbot)/i,[`Microsoft`,`Bing Bot`]],[/(yandexbot)/i,[`Yandex`,`Bot`]],[/(slackbot)/i,[`Slack`,`Bot`]],[/(twitterbot)/i,[`Twitter`,`Bot`]],[/(facebookbot)/i,[`Facebook`,`Bot`]],[/(linkedinbot)/i,[`LinkedIn`,`Bot`]],[/(tesla)[-_ ]?([-\w]*)/i,[`Tesla`,2]],[/(raspberry[\w\-_ ]*)/i,[`Raspberry Pi`,0]]]){let r=e.match(t);if(r){let e=n[0],t=n[1],i=typeof e==`number`?r[e]===void 0?`Unknown`:this.normalizeVendorName(r[e]):this.normalizeVendorName(e),a=`Unknown`;typeof t==`number`?a=r[t]===void 0?`Unknown`:r[t]:t===void 0?r[1]===void 0?r[0]!==void 0&&(a=r[0]):a=r[1]:a=t,a=this.normalizeModelName(a,i),this.details.vendor=i,this.details.model=a;break}}}catch(e){console.error(`DeviceChecker: device details detection error - `,e)}}normalizeVendorName(e){return e?{apple:`Apple`,samsung:`Samsung`,google:`Google`,xiaomi:`Xiaomi`,huawei:`Huawei`,oneplus:`OnePlus`,oppo:`OPPO`,vivo:`Vivo`,realme:`Realme`,motorola:`Motorola`,sony:`Sony`,lg:`LG`,nokia:`Nokia`,asus:`ASUS`,lenovo:`Lenovo`,amazon:`Amazon`,blackberry:`BlackBerry`,microsoft:`Microsoft`,zte:`ZTE`,htc:`HTC`,alcatel:`Alcatel`,tcl:`TCL`,meizu:`Meizu`,tecno:`Tecno`,infinix:`Infinix`,micromax:`Micromax`,lava:`Lava`,panasonic:`Panasonic`,sharp:`Sharp`,benq:`BenQ`,palm:`Palm`,honor:`Honor`,nvidia:`NVIDIA`,roku:`Roku`}[e.toLowerCase()]||e.charAt(0).toUpperCase()+e.slice(1).toLowerCase():`Unknown`}normalizeModelName(e,t){if(!e||e===`Unknown`)return e;if(e===`0`)return`Unknown`;let n=e.replace(/^build\//i,``).replace(/\s+bui$/i,``).replace(/\)$/,``).replace(/[;,)]/g,``).replace(/\s*\(.*?\)\s*/g,``).trim(),r=t.toLowerCase();return M(r,`samsung`)?n=n.replace(/^(sm-|gt-|sgh-|sch-)/i,``):M(r,`xiaomi`)?n=n.replace(/^(mi[\s\-_]*|redmi[\s\-_]*)/i,``):M(r,`oneplus`)?n=n.replace(/^oneplus[\s\-_]*/i,``):M(r,`google`)&&(n=n.replace(/^(pixel[\s\-_]*|nexus[\s\-_]*)/i,``)),n=n.replace(/_/g,` `).replace(/-/g,` `).replace(/\s+/g,` `).trim(),n?(n.length>0&&/^[a-z]/.test(n)&&(n=n.charAt(0).toUpperCase()+n.slice(1)),n):`Unknown`}detectIOSVersion(){try{let e=ft();if(!pt(e))return;if(this._highEntropyValues.platformVersion){let e=this._highEntropyValues.platformVersion.split(`.`).slice(0,2).join(`.`);this._iosVersion=parseFloat(e);return}if(this._os.version!==`Unknown`){let e=this._os.version.split(`.`),t=e.length>=2?`${e[0]}.${e[1]}`:e[0];this._iosVersion=parseFloat(t);return}let t=e.navigator.userAgent.match(/OS (\d+(_\d+)?)/i);t?.[1]&&(this._iosVersion=parseFloat(t[1].replace(/_/g,`.`)))}catch(e){console.error(`DeviceChecker: iOS version detection error - `,e)}}}var vt=[`rec2020`,`p3`,`srgb`],yt=[`standalone`,`minimal-ui`,`fullscreen`,`window-controls-overlay`,`picture-in-picture`];class bt{constructor(){this._maxTouchPoints=void 0,this._height=void 0,this._width=void 0,this._isHdr=void 0,this._pixelRatio=void 0,this._screenHeight=void 0,this._screenWidth=void 0,this._colorDepth=void 0,this._colorGamut=void 0,this._displayMode=`browser`,this._isStandalone=!1}get isTouch(){return typeof this._maxTouchPoints==`number`?this._maxTouchPoints>1:`ontouchstart`in gt()}get maxTouchPoints(){return this._maxTouchPoints}get height(){return this._height}get width(){return this._width}get screenHeight(){return this._screenHeight}get screenWidth(){return this._screenWidth}get pixelRatio(){return this._pixelRatio}get isHDR(){return this._isHdr}get colorDepth(){return this._colorDepth}get colorGamut(){return this._colorGamut}get displayMode(){return this._displayMode}get isStandalone(){return this._isStandalone}detect(){let e=gt();if(!_t(e))return;let{navigator:t,screen:n}=e,{maxTouchPoints:r}=t;try{this._maxTouchPoints=r??0,this._isHdr=!!e.matchMedia(`(dynamic-range: high)`)?.matches,this._colorDepth=n.colorDepth,this._colorGamut=this.detectColorGamut(e)}catch(e){console.error(e)}try{this._pixelRatio=e.devicePixelRatio||1,this._height=n.height,this._width=n.width,this._height=n.height,this._screenHeight=this._height*this._pixelRatio,this._screenWidth=this._width*this._pixelRatio}catch(e){console.error(e)}try{this._displayMode=this.detectDisplayMode(e);let n=t.standalone===!0;this._isStandalone=n||this._displayMode!==`browser`}catch(e){console.error(e)}}detectColorGamut(e){return vt.find(t=>{var n;return(n=e.matchMedia)==null||(n=n.call(e,`(color-gamut: ${t})`))==null?void 0:n.matches})}detectDisplayMode(e){return yt.find(t=>{var n;return(n=e.matchMedia)==null||(n=n.call(e,`(display-mode: ${t})`))==null?void 0:n.matches})??`browser`}}var Ct=()=>window.ManagedMediaSource||window.MediaSource,wt=()=>{var e;return!!(window.ManagedMediaSource&&!((e=window.ManagedSourceBuffer)==null||(e=e.prototype)==null)&&e.appendBuffer)},Tt=()=>{var e;return!!(window.MediaSource&&!((e=window.SourceBuffer)==null||(e=e.prototype)==null)&&e.appendBuffer)},Et=()=>window.ManagedMediaSource?new ManagedMediaSource:new MediaSource,Dt=xt().document?.createElement(`video`),Ot=`video/mp4; codecs="avc1.42000a,mp4a.40.2"`,kt=`video/mp4; codecs="hev1.1.6.L93.B0"`,At=`video/webm; codecs="vp09.00.10.08"`,jt=`video/webm; codecs="av01.0.00M.08"`,Mt=`audio/mp4; codecs="mp4a.40.2"`,Nt=`audio/webm; codecs="opus"`,Pt;(function(){var e=D(function*(){let e=xt();if(!St(e)||!(`mediaCapabilities`in e.navigator))return;let t={type:`media-source`,video:{contentType:`video/webm`,width:1280,height:720,bitrate:1e6,framerate:30}},[n,r]=yield Promise.all([e.navigator.mediaCapabilities.decodingInfo(E(E({},t),{},{video:E(E({},t.video),{},{contentType:jt})})),e.navigator.mediaCapabilities.decodingInfo(E(E({},t),{},{video:E(E({},t.video),{},{contentType:At})}))]);Pt={DASH_WEBM_AV1:n,DASH_WEBM:r}});return function(){return e.apply(this,arguments)}})()().catch(e=>{console.log(Dt),console.error(e)});class Ft{constructor(e,t){this._video=void 0,this._deviceChecker=void 0,this._browserChecker=void 0,this._protocols=void 0,this._containers=void 0,this._codecs=void 0,this._nativeHlsSupported=void 0,this._deviceChecker=e,this._browserChecker=t}get protocols(){return this._protocols}get containers(){return this._containers}get codecs(){return this._codecs}get webmDecodingInfo(){return Pt}get supportedCodecs(){return Object.keys(this._codecs).filter(e=>this._codecs[e])}get nativeHlsSupported(){return this._nativeHlsSupported}detect(){let e=xt();if(!St(e))return;let t=e.document;this._video=t.createElement(`video`);try{var n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_;this._protocols={mms:wt(),mse:Tt(),hls:!!((n=this._video).canPlayType?.call(n,`application/x-mpegurl`)||(r=this._video).canPlayType?.call(r,`vnd.apple.mpegURL`)),webrtc:!!e.RTCPeerConnection,ws:!!e.WebSocket},this._containers={mp4:!!(i=this._video).canPlayType?.call(i,`video/mp4`),webm:!!(a=this._video).canPlayType?.call(a,`video/webm`),cmaf:!0};let t=!!(!((o=Ct())==null||(s=o.isTypeSupported)==null)&&s.call(o,Ot)),v=!!(!((c=Ct())==null||(l=c.isTypeSupported)==null)&&l.call(c,kt)),y=!!(!((u=Ct())==null||(d=u.isTypeSupported)==null)&&d.call(u,Mt));this._codecs={h264:t,h265:v,vp9:!!(!((f=Ct())==null||(p=f.isTypeSupported)==null)&&p.call(f,At)),av1:!!(!((m=Ct())==null||(h=m.isTypeSupported)==null)&&h.call(m,jt)),aac:y,opus:!!(!((g=Ct())==null||(_=g.isTypeSupported)==null)&&_.call(g,Nt)),mpeg:(t||v)&&y},this._nativeHlsSupported=this._protocols.hls&&this._containers.mp4}catch(e){console.error(e)}try{this.destroyVideoElement()}catch(e){console.error(`Error destroying video element:`,e)}}destroyVideoElement(){if(!this._video)return;if(this._video.pause(),this._video.currentTime=0,this._video.removeAttribute(`src`),this._video.src=``,this._video.load(),this._video.remove){this._video.remove(),this._video=null;return}this._video.parentNode&&this._video.parentNode.removeChild(this._video);let e=this._video.cloneNode(!1);this._video.parentNode?.replaceChild(e,this._video),this._video=null}}var Rt=`audio/mpeg`;class zt{constructor(){this._audio=void 0,this._containers=void 0,this._codecs=void 0}supportMp3(){return this._codecs.mp3&&this._containers.mpeg}detect(){let e=It();if(!Lt(e))return;let t=e.document;this._audio=t.createElement(`audio`);try{var n,r,i;this._containers={mpeg:!!(n=this._audio).canPlayType?.call(n,Rt)},this._codecs={mp3:!!(!((r=Ct())==null||(i=r.isTypeSupported)==null)&&i.call(r,Rt))}}catch(e){console.error(e)}try{this.destroyAudioElement()}catch(e){console.error(`Error destroying audio element:`,e)}}destroyAudioElement(){if(!this._audio)return;if(this._audio.pause(),this._audio.currentTime=0,this._audio.removeAttribute(`src`),this._audio.src=``,this._audio.load(),this._audio.remove){this._audio.remove(),this._audio=null;return}this._audio.parentNode&&this._audio.parentNode.removeChild(this._audio);let e=this._audio.cloneNode(!1);this._audio.parentNode?.replaceChild(e,this._audio),this._audio=null}}class Bt{constructor(){this.isInited$=new st(!1),this._displayChecker=void 0,this._deviceChecker=void 0,this._browserChecker=void 0,this._videoChecker=void 0,this._audioChecker=void 0,this._displayChecker=new bt,this._deviceChecker=new ht(this._displayChecker),this._browserChecker=new dt,this._videoChecker=new Ft(this._deviceChecker,this._browserChecker),this._audioChecker=new zt,this.detect()}get display(){return this._displayChecker}get device(){return this._deviceChecker}get browser(){return this._browserChecker}get video(){return this._videoChecker}get audio(){return this._audioChecker}detect(){var e=this;return D(function*(){ot()&&(e._displayChecker.detect(),e._deviceChecker.detect(),e._browserChecker.detect(),e._videoChecker.detect(),e._audioChecker.detect(),e.isInited$.next(!0))})()}}var N=new Bt,Vt=(e,t=!1)=>{let{containers:n,protocols:r,codecs:i,nativeHlsSupported:a}=N.video,{isMobile:o}=N.device,s=N.device.isMac&&N.browser.isSafari,c=t&&!o&&!s,l=(i.h264||i.h265)&&i.aac,u=r.mse||r.mms;return e.filter(e=>{switch(e){case`DASH_SEP`:return u&&n.mp4&&l;case`DASH_WEBM`:return u&&n.webm&&i.vp9&&i.opus;case`DASH_WEBM_AV1`:return u&&n.webm&&i.av1&&i.opus;case`DASH_STREAMS`:return u&&(n.mp4&&l||n.webm&&(i.vp9||i.av1)&&(i.opus||i.aac));case`DASH_LIVE`:return u&&n.mp4&&l;case`DASH_LIVE_CMAF`:return u&&n.mp4&&l&&n.cmaf;case`DASH_ONDEMAND`:return u&&n.mp4&&l;case`HLS`:case`HLS_ONDEMAND`:case`HLS_FMP4`:case`HLS_LIVE`:case`HLS_LIVE_CMAF`:return a&&!c;case`MPEG`:return n.mp4;case`DASH`:case`DASH_LIVE_WEBM`:return!1;case`WEB_RTC_LIVE`:return r.webrtc&&r.ws&&i.h264&&(n.mp4||n.webm);default:return at(e)}})},Ht=e=>{switch(e){case`MPEG`:case`DASH`:case`DASH_SEP`:case`DASH_ONDEMAND`:case`DASH_WEBM`:case`DASH_WEBM_AV1`:case`DASH_STREAMS`:case`HLS`:case`HLS_FMP4`: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 at(e)}},Ut=(e,t=!1)=>Vt(Object.keys(e).filter(e=>!Ht(e)),t).length>0;class Wt{constructor(e){this.subscription=new ze,this.log=void 0,this.params=void 0,this.sessionId$=new Be(null),this.mediaSessionId$=new Be(null),this.contentId$=new Be(null),this.progressTicker=void 0,this.isMobile=mt(),this.mobileVolumeState={muted:!1,volume:0},this.media=null,this.lastRequestedVolume=null,this.syncMediaState=e=>{if(Le(e))return;this.media=e,this.mediaSessionId$.next(e.mediaSessionId??null);let t=e.media?.contentId;t&&this.contentId$.next(t),this.syncPlaybackState(e);let n=e.media?.duration;Ie(n)&&this.params.output.duration$.next(Math.max(0,n));let r=e.currentTime;if(Ie(r)){this.params.desiredState.seekState.getState().state===`applying`&&this.params.output.seekedEvent$.next(),this.params.output.position$.next(r);let t=this.params.output.isLive$.getValue();e.playerState===`PLAYING`&&!t?this.progressTicker.start(r):this.progressTicker.pause()}},this.params=e,this.progressTicker=new it(e),this.log=this.params.dependencies.logger.createComponentLog(`ChromecastPresentationApiProvider`),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Ht(e.format)),this.subscribe()}subscribe(){let e=e=>{this.params.output.error$.next({category:Ne.WTF,id:`ChromecastPresentationApiProvider`,message:e?.message??`Unknown error`,thrown:e})};this.subscription.add(this.params.chromecastConnector.message$.pipe(Pe(e=>!!e)).subscribe(e=>{this.handleMessage(e)},e)),this.subscription.add(this.sessionId$.pipe(Pe(Ie),Fe(),Me(0)).subscribe(()=>{this.loadMedia()},e));let t=this.contentId$.pipe(Fe(),Re(Boolean));this.subscription.add(je({seekState:this.params.desiredState.seekState.stateChangeEnded$,mediaLoaded:t}).pipe(Pe(({mediaLoaded:e})=>e)).subscribe(()=>{let e=this.params.desiredState.seekState.getState();e.state===`requested`&&this.seek(e.position/1e3)},e));let n=je({playbackState:this.params.desiredState.playbackState.stateChangeStarted$,mediaLoaded:t});this.subscription.add(n.pipe(Pe(({mediaLoaded:e})=>e),Me(0)).subscribe(()=>{this.syncPlayback()},e)),this.subscription.add(n.pipe(Pe(({mediaLoaded:e,playbackState:{from:t,to:n}})=>!e&&t===`stopped`&&n===`playing`)).subscribe(()=>{this.loadMedia()},e)),this.subscription.add(je({volumeState:this.params.desiredState.volume.stateChangeStarted$.pipe(Me(30)),mediaLoaded:t}).pipe(Pe(({mediaLoaded:e})=>e)).subscribe(({volumeState:e})=>{let{muted:t,volume:n}=e.to;this.setVolume(n,t)},e))}handleMessage(e){switch(e.type){case`new_session`:case`update_session`:{var t;this.sessionId$.next(e.message.sessionId);let n=(t=e.message)==null||(t=t.media)==null?void 0:t[0];this.syncMediaState(n);let r=e.message?.receiver.volume;this.syncVolumeState(r)}break;case`v2_message`:switch(e.message?.type){case`MEDIA_STATUS`:{var n;let t=(n=e.message)==null||(n=n.status)==null?void 0:n[0];this.syncMediaState(t);break}}break}}loadMedia(){let e=Ze(this.params),t=this.media?.currentTime,n=this.params.desiredState.seekState.getState(),r=t??(n.state===`none`?0:n.position/1e3),i=this.params.desiredState.playbackState.getState()===`playing`;this.params.chromecastConnector.sendV2Message({type:`LOAD`,requestId:0,media:e,autoplay:i,currentTime:r,customData:null,activeTrackIds:null}),this.params.output.willSeekEvent$.next()}stop(){this.params.chromecastConnector.stopMedia()}play(){let e=this.mediaSessionId$.getValue();Ae(e,`play on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`PLAY`,mediaSessionId:e,customData:null})}pause(){let e=this.mediaSessionId$.getValue();Ae(e,`pause on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`PAUSE`,mediaSessionId:e,customData:null})}seek(e){let t=this.mediaSessionId$.getValue();Ae(t,`seek on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`SEEK`,currentTime:e,mediaSessionId:t}),this.params.output.willSeekEvent$.next()}setVolume(e,t){let n=e,r=`[setVolume] volume: ${e}, muted: ${t}`;this.isMobile&&(n=this.mobileVolumeState.volume,r+=`, mobile next volume: ${n}`),this.log({message:r}),this.lastRequestedVolume={volume:n,muted:t},this.params.chromecastConnector.sendV2Message({type:`SET_VOLUME`,requestId:0,volume:{level:t?0:n,muted:t?!0:null}})}syncPlaybackState({playerState:e,idleReason:t}){let n=this.params.output.isBuffering$.getValue(),r=e===`BUFFERING`;switch(n!==r&&this.params.output.isBuffering$.next(r),e){case`PAUSED`:A(this.params.desiredState.playbackState,`paused`);break;case`PLAYING`:A(this.params.desiredState.playbackState,`playing`);break;case`IDLE`:t===`FINISHED`?(this.params.output.endedEvent$.next(),A(this.params.desiredState.playbackState,`stopped`),this.contentId$.next(null)):A(this.params.desiredState.playbackState,`ready`);break;case`BUFFERING`:break}}syncPlayback(){let e=this.params.desiredState.playbackState.getState();switch(this.log({message:`[syncPlayback] ${e}`}),e){case`ready`:break;case`playing`:this.play();break;case`paused`:this.pause();break;case`stopped`:this.stop();break}}syncVolumeState(e){if(Le(e))return;let{level:t,muted:n}=e,r={muted:n??!1,volume:t??0};this.lastRequestedVolume&&=(n&&(r.volume=this.lastRequestedVolume.volume),this.lastRequestedVolume.muted&&!t&&!n&&(r.volume=this.lastRequestedVolume.volume,r.muted=!0),null);let i=`[syncVolumeState] volume: ${r.volume}, muted: ${r.muted}`;this.isMobile&&(this.mobileVolumeState.volume=r.volume,this.mobileVolumeState.muted=r.muted,r.volume=this.params.output.volume$.getValue().volume,i+=`, volume passed to state machine: ${r.volume}`),this.log({message:i}),this.params.output.volume$.next(r)}destroy(){this.progressTicker.destroy(),this.subscription.unsubscribe()}}var en=e=>({castDevice:{friendlyName:e},remotePlayer:{},remotePlayerController:{},session:{}}),tn=()=>String(Date.now())+String(Math.floor(Math.random()*1e5));class nn{constructor(e){this.params=void 0,this.clientId=void 0,this.capabilities=[`WEB`],this.presentationRequest$=new Zt(null),this.log=void 0,this.sessionId$=new Zt(null),this.broadcastChannel=new BroadcastChannel(`vk_player_chromecast_events`),this.subscription=new Yt,this.subscriptionEvents=new Yt,this.isDestroyed=!1,this.sequenceNumber=0,this.presentationAvailable$=new Zt(!1),this.presentationConnection$=new Zt(null),this.message$=new Zt(null),this.friendlyName$=new Zt(null),this.errorEvent$=new Jt,this.clientId=this.getClientId(),this.params=e,this.log=e.logger.createComponentLog(`ChromecastPresentationApiConnector`),this.log({message:`constructor`}),this.safeReinitPresentation(),this.subscribe()}destroy(){this.log({message:`destroy`}),this.subscription.unsubscribe(),this.subscriptionEvents.unsubscribe(),this.broadcastChannel.close(),this.isDestroyed=!0}disconnect(e=!0){this.log({message:`disconnect`}),e&&this.stopMedia(),this.presentationRequest$.next(null);let t=this.presentationConnection$.getValue();t&&t.close(),this.presentationConnection$.next(null),this.friendlyName$.next(null),this.resetSequenceNumber(),this.resetSubscriptionEvents()}stopMedia(){this.log({message:`stopMedia`}),this.sendV2Message({type:`STOP`})}reinitPresentation(e=!0){let t=this.createCastUrl(),n=new PresentationRequest(t);this.presentationRequest$.next(n),this.log({message:`PresentationRequest created`}),n.getAvailability().then(e=>{let t=()=>{this.log({message:`PresentationRequest presentation availability: ${e.value}`}),this.presentationAvailable$.next(e.value)};this.subscriptionEvents.add(Qt(e,`change`).subscribe(()=>{t()})),t()}).catch(()=>{this.presentationAvailable$.next(!0)}),$t().navigator.presentation.defaultRequest=n,e&&n.reconnect(`auto-join`).then(e=>{this.log({message:`PresentationRequest reconnect success`}),this.handleConnection(e)}).catch(()=>{this.log({message:`PresentationRequest reconnect failed`})})}safeReinitPresentation(e){try{this.reinitPresentation(e)}catch(e){this.errorEvent$.next({category:Kt.WTF,id:`ChromecastPresentationApiConnector`,message:e?.message??`reinitPresentation error`,thrown:e})}}connect(){var e=this;return D(function*(){e.log({message:`connect`});try{e.presentationRequest$.getValue()||(e.log({message:`reinitPresentation`}),e.reinitPresentation(!1));let t=e.presentationRequest$.getValue();Gt(t,`connect with null presentationRequest`);let n=yield t.start();e.handleConnection(n)}catch(t){switch(t?.name){case`AbortError`:case`NotAllowedError`:break;default:e.errorEvent$.next({category:Kt.WTF,id:`ChromecastPresentationApiConnector`,message:t?.message??`connect error`,thrown:t});break}}})()}subscribe(){this.subscription.add(Qt(this.broadcastChannel,`message`).subscribe(e=>{this.log({message:`broadcast connection data: ${e.data}`}),e.data===`connection`&&this.disconnect(!1)})),this.subscription.add(this.presentationAvailable$.subscribe(e=>{this.log({message:`presentationAvailable$: ${e}`})})),this.subscription.add(this.presentationConnection$.pipe(Xt(e=>{this.log({message:`presentationConnection$: ${!!e}`})}),qt(e=>!!e)).subscribe(e=>{let t=Qt(e,`message`).subscribe(e=>{let t=JSON.parse(e.data);t.clientId===this.clientId&&(this.log({message:`[onmessage] ${e.data}`}),this.handleMessage(t),this.message$.next(t))}),n=Qt(e,`connect`).subscribe(()=>{this.send(`client_connect`)}),r=Qt(e,`close`).subscribe(e=>{switch(e.reason){case`error`:this.errorEvent$.next({category:Kt.WTF,id:`ChromecastPresentationApiConnector`,message:`Session error`,thrown:e});break;case`closed`:break}});this.subscriptionEvents.add(t),this.subscriptionEvents.add(n),this.subscriptionEvents.add(r)}))}send(e){switch(e){case`client_connect`:{let e={type:`client_connect`,message:this.clientId,sequenceNumber:-1,timeoutMillis:0,clientId:this.clientId};this.safeSend(JSON.stringify(e));break}}}sendV2Message(e){let t=this.sessionId$.getValue();if(t){let n={type:`v2_message`,sequenceNumber:this.getSequenceNumber(),timeoutMillis:0,clientId:this.clientId,message:E(E({},e),{},{sessionId:t})};this.safeSend(JSON.stringify(n))}}safeSend(e){try{this.log({message:`[send] ${e}`});let t=this.presentationConnection$.getValue();t?.state===`connected`&&t?.send(e)}catch(t){this.errorEvent$.next({category:Kt.WTF,id:`ChromecastPresentationApiConnector`,message:`PresentationConnection send error`,data:{message:e},thrown:t})}}handleMessage(e){switch(e.type){case`new_session`:case`update_session`:this.sessionId$.next(e.message.sessionId),this.friendlyName$.next(e.message.receiver.friendlyName||`Chromecast Device`);break;case`receiver_action`:e.message?.action===`stop`&&this.disconnect();break}}createCastUrl(){return`cast:${this.params.appId}?clientId=${this.clientId}&autoJoinPolicy=tab_and_origin_scoped&defaultActionPolicy=create_session&launchTimeout=60000&supportedAppTypes=${this.capabilities}&appParams=%7B%22launchCheckerParams%22%3A%7B%7D%7D`}getSequenceNumber(){let e=this.sequenceNumber;return this.sequenceNumber=(this.sequenceNumber+1)%(2**53-1),e}resetSequenceNumber(){this.sequenceNumber=0}getClientId(){let e=`__vk_player_chromecast_id`;return $t()[e]=$t()[e]||tn()}resetSubscriptionEvents(){this.subscriptionEvents.unsubscribe(),this.subscriptionEvents=new Yt}handleConnection(e){this.log({message:`connection available`}),this.isDestroyed?(this.log({message:`connected on already destroyed component`}),e.close()):(this.broadcastChannel.postMessage(`connection`),this.presentationConnection$.next(e))}}class dn{static isSupported(){return`chrome`in window&&`presentation`in navigator&&`BroadcastChannel`in window}constructor(e){this.subscription=new sn,this.log=void 0,this.contentId=void 0,this.connection$=new rn(void 0),this.castState$=new rn(`NOT_AVAILABLE`),this.errorEvent$=new an,this.chromecastConnector=void 0;let t=dn.isSupported();this.log=e.dependencies.logger.createComponentLog(`ChromecastPresentationApiInitializer`),this.log({message:`[constructor] receiverApplicationId: ${e.receiverApplicationId}, isDisabled: ${e.isDisabled}, isSupported: ${t}`}),!(!t||e.isDisabled||!e.receiverApplicationId)&&(this.chromecastConnector=new nn({appId:e.receiverApplicationId,logger:e.dependencies.logger}),this.subscribe())}subscribe(){un(this.chromecastConnector,`subscribe with null chromecastConnector`),this.subscription.add(this.chromecastConnector.errorEvent$.subscribe(this.errorEvent$));let e=cn({connection:this.chromecastConnector.presentationConnection$,available:this.chromecastConnector.presentationAvailable$,friendlyName:this.chromecastConnector.friendlyName$.pipe(ln())});this.subscription.add(e.pipe(on(({connection:e,friendlyName:t})=>!!(e&&t)),ln()).subscribe(e=>{let t=this.chromecastConnector?.friendlyName$.getValue()??``;this.connection$.next(e?en(t):void 0)})).add(e.subscribe(({available:e,connection:t})=>{e?t?this.castState$.next(`CONNECTED`):this.castState$.next(`AVAILABLE`):this.castState$.next(`NOT_AVAILABLE`)}))}connect(){this.log({message:`connect`}),this.chromecastConnector?.connect()}disconnect(){this.log({message:`disconnect`}),this.chromecastConnector?.disconnect()}stopMedia(){var e=this;return D(function*(){e.log({message:`stopMedia`}),e.chromecastConnector?.stopMedia()})()}toggleConnection(){let e=!!this.chromecastConnector?.presentationConnection$.getValue();this.log({message:`toggleConnection: isConnected - ${e}`}),e?this.disconnect():this.connect()}setVolume(e){}setMuted(e){}destroy(){this.log({message:`destroy`}),this.chromecastConnector?.destroy(),this.subscription.unsubscribe()}}var yn=(e,t)=>e===t;class bn{constructor(e,t=yn){this.comparator=void 0,this.state=void 0,this.prevState=void 0,this.transition=void 0,this.transitionStarted$=new _n,this.transitionEnded$=new _n,this.transitionUpdated$=new _n,this.forceChanged$=new _n,this.stateChangeStarted$=vn(this.transitionStarted$,this.transitionUpdated$),this.stateChangeEnded$=vn(this.transitionEnded$,this.forceChanged$),this.comparator=t,this.state=e,this.prevState=void 0}setState(e){let t=this.transition,n=this.state;this.transition=void 0,this.prevState=n,this.state=e,t?this.comparator(t.to,e)?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:n,to:e,canceledTransition:t})}startTransitionTo(e){let t=this.transition,n=this.state;this.comparator(n,e)||gn(t)&&this.comparator(t.to,e)||(this.prevState=n,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:n,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}}var jn=5,Mn=5,Nn=500,Pn=7e3;class Fn{constructor(e){this.subscription=new kn,this.loadMediaTimeoutSubscription=new kn,this.videoState=new bn(`stopped`),this.params=void 0,this.log=void 0,this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),n=this.params.desiredState.playbackState.getState(),r=this.params.desiredState.playbackState.getTransition(),i=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${n}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(i)};`}),n===`stopped`){e!==`stopped`&&(this.videoState.startTransitionTo(`stopped`),this.stop());return}if(!t){if(r?.to!==`paused`&&i.state===`requested`&&e!==`stopped`){this.seek(i.position/1e3);return}switch(n){case`ready`:switch(e){case`playing`:case`paused`:case`ready`:break;case`stopped`:this.videoState.startTransitionTo(`ready`),this.prepare();break;default:xn(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:xn(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:xn(e)}break;default:xn(n)}}},this.params=e,this.log=this.params.dependencies.logger.createComponentLog(`ChromecastProvider`),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Ht(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 kn;this.subscription.add(e),this.subscription.add(En(this.videoState.stateChangeStarted$.pipe(Tn(e=>`stateChangeStarted$ ${JSON.stringify(e)}`)),this.videoState.stateChangeEnded$.pipe(Tn(e=>`stateChangeEnded$ ${JSON.stringify(e)}`))).subscribe(e=>this.log({message:`[videoState] ${e}`})));let t=(e,t)=>this.subscription.add(e.subscribe(t));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{let t=new On;e.add(t.pipe(Sn(Nn)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let n=NaN;e.add(wn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(e=>{this.logRemoteEvent(e);let r=e.value;this.params.output.position$.next(r),(this.params.desiredState.seekState.getState().state===`applying`||Math.abs(r-n)>jn)&&t.next(r),n=r})),e.add(wn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(e=>{this.logRemoteEvent(e),this.params.output.duration$.next(e.value)}))}t(wn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),t=>{this.logRemoteEvent(t),t.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(wn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),e=>{this.logRemoteEvent(e),e.value?this.handleRemotePause():this.handleRemotePlay()}),t(wn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),e=>{this.logRemoteEvent(e);let{remotePlayer:t}=this.params.connection,n=e.value,r=this.params.output.isBuffering$.getValue(),i=n===chrome.cast.media.PlayerState.BUFFERING;switch(r!==i&&this.params.output.isBuffering$.next(i),n){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&t.duration-t.currentTime<Mn&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),A(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:xn(n)}}),t(wn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),e=>{this.logRemoteEvent(e),this.handleRemoteVolumeChange({volume:e.value})}),t(wn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),e=>{this.logRemoteEvent(e),this.handleRemoteVolumeChange({muted:e.value})}),t(En(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,Dn([`init`])).pipe(Sn(0)),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`),A(this.params.desiredState.playbackState,`paused`)):(this.videoState.setState(`playing`),A(this.params.desiredState.playbackState,`playing`));let e=this.params.output.isLive$.getValue();this.params.output.duration$.next(e?0:t.duration),this.params.output.position$.next(e?0:t.currentTime),this.params.desiredState.seekState.setState({state:`none`})}}prepare(){let e=this.params.format;this.log({message:`[prepare] format: ${e}`});let t=Ze(this.params),n=this.createLoadRequest(t);this.loadMedia(n)}handleRemotePause(){let e=this.videoState.getState();(this.videoState.getTransition()?.to===`paused`||e===`playing`)&&(this.videoState.setState(`paused`),A(this.params.desiredState.playbackState,`paused`))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to===`playing`||e===`paused`)&&(this.videoState.setState(`playing`),A(this.params.desiredState.playbackState,`playing`))}handleRemoteReady(){this.videoState.getTransition()?.to===`ready`&&this.videoState.setState(`ready`),this.params.desiredState.playbackState.getTransition()?.to===`ready`&&A(this.params.desiredState.playbackState,`ready`)}handleRemoteStop(){this.videoState.getState()!==`stopped`&&this.videoState.setState(`stopped`)}handleRemoteVolumeChange(e){let t=this.params.output.volume$.getValue(),n={volume:e.volume??t.volume,muted:e.muted??t.muted};(n.volume!==t.volume||n.muted!==n.muted)&&this.params.output.volume$.next(n)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:n}=this.params.connection;t.currentTime=e,n.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let n=this.params.desiredState.seekState.getState();return n.state===`applying`||n.state===`requested`?t.currentTime=this.params.output.isLive$.getValue()?0:n.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),n=new Promise((e,t)=>{this.loadMediaTimeoutSubscription.add(An(Pn).subscribe(()=>t(`timeout(${Pn})`)))});hn(Promise.race([t,n]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state===`applying`&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},e=>{let t=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${e}`;this.log({message:t}),this.params.output.error$.next({id:`ChromecastProvider.loadMedia`,category:Cn.VIDEO_PIPELINE,message:t,thrown:e})}),()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}}var Hn=e=>{try{e.pause(),e.playbackRate=0,Vn(e),e.remove()}catch(e){console.error(e)}},Un=`__spvc`;class Wn{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)}}var Gn=zn(),Kn=Gn.WeakMap?new Gn.WeakMap:new Wn,qn=Gn.WeakMap?new Gn.WeakMap:new Map,Jn=(e,t=20)=>{let n=0;return Rn(e,`ratechange`).subscribe(r=>{n++,n>=t&&(e.currentTime=e.currentTime,n=0)})};function Yn(e){e.style.position=`fixed`,e.style.left=`100%`,e.setAttribute(`data-role`,`screen`),zn().document.body.appendChild(e)}function Xn(e,t){e.style.position=``,e.style.left=``,t.appendChild(e)}var Zn=(e,{audioVideoSyncRate:t,disableYandexPiP:n,reuseOwnVideoElement:r})=>{let i,a=e.querySelector(`video`),o=!!a,s=zn().document.querySelector(`body > video[data-role=screen]`)||void 0;r?Gn[Un]=s:(s?.remove(),delete Gn[Un]),a?(i=a,Ln(i)):s&&s===Gn[Un]?(i=s,Xn(i,e)):(i=zn().document.createElement(`video`),e.appendChild(i),r&&(Gn[Un]=i)),Kn.set(i,o);let c=new Bn;return c.add(Jn(i,t)),qn.set(i,c),i.setAttribute(`crossorigin`,`anonymous`),i.setAttribute(`playsinline`,`playsinline`),n&&i.setAttribute(`x-yandex-pip`,`false`),i.controls=!1,i.setAttribute(`poster`,`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=`),i},Qn=e=>(e.setAttribute(`crossorigin`,`anonymous`),e.controls=!1,e),$n=(e,t)=>{if(e instanceof HTMLAudioElement){er(e,t);return}if(e instanceof HTMLVideoElement){tr(e,t);return}};function er(e,{clearAudioElementOnDispose:t}){if(t){Ln(e);return}Hn(e)}function tr(e,{reuseOwnVideoElement:t}){qn.get(e)?.unsubscribe(),qn.delete(e);let n=Kn.get(e);Kn.delete(e),Ln(e),t&&!n&&Yn(e)}var yr=(e,t,n,{equal:r=(e,t)=>e===t,changed$:i,onError:a}={})=>{let o=e.getState(),s=t(),c=_r(i),l=new vr;return i&&l.add(i.subscribe(t=>{r(t,e.getState())&&e.setState(t)},a)),r(s,o)||(n(o),c&&e.setState(o)),l.add(e.stateChangeStarted$.subscribe(t=>{n(t.to),c&&e.setState(t.to)},a)),l},br=(e,t,n)=>yr(t,()=>e.loop,t=>{gr(t)&&(e.loop=t)},{onError:n}),xr=(e,t,n,r,i)=>yr(t,()=>({muted:e.muted,volume:e.volume}),t=>{i?.skipVideoElVolumeSync$.getValue()||gr(t)&&(e.muted=t.muted,e.volume=t.volume)},{equal:(e,t)=>e===t||e?.muted===t?.muted&&e?.volume===t?.volume,changed$:n,onError:r}),Sr=(e,t,n,r)=>yr(t,()=>e.playbackRate,t=>{gr(t)&&(e.playbackRate=t)},{changed$:n,onError:r}),Cr=yr,wr=e=>[`__`,e.language,e.label].join(`|`),Tr=(e,t)=>{if(e.id===t)return!0;let[n,r,i]=t.split(`|`);return e.language===r&&e.label===i};class Er{constructor(e){this.available$=new fr,this.current$=new mr(void 0),this.error$=new fr,this.video=void 0,this.cueSettings=void 0,this.subscription=new pr,this.externalTracks=new Map,this.internalTracks=new Map,this.baseURL=void 0,this.baseURL=e}connect(e,t,n){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let r=e=>{this.error$.next({id:`TextTracksManager`,category:hr.WTF,message:`Generic HtmlVideoTextTrackManager error`,thrown:e})};this.subscription.add(this.available$.subscribe(n.availableTextTracks$)),this.subscription.add(this.current$.subscribe(n.currentTextTrack$)),this.subscription.add(this.error$.subscribe(n.error$)),this.subscription.add(Cr(t.internalTextTracks,()=>nr(this.internalTracks),e=>{ar(e)&&this.setInternal(e)},{equal:(e,t)=>ar(e)&&ar(t)&&e.length===t.length&&e.every(({id:e},n)=>e===t[n].id),changed$:this.available$.pipe(dr(e=>e.filter(({type:e})=>e===`internal`))),onError:r})),this.subscription.add(Cr(t.externalTextTracks,()=>nr(this.externalTracks),e=>{ar(e)&&this.setExternal(e)},{equal:(e,t)=>ar(e)&&ar(t)&&e.length===t.length&&e.every(({id:e},n)=>e===t[n].id),changed$:this.available$.pipe(dr(e=>e.filter(({type:e})=>e===`external`))),onError:r})),this.subscription.add(Cr(t.currentTextTrack,()=>{if(this.video)return;let e=this.htmlTextTracksAsArray().find(({mode:e})=>e===`showing`);return e&&this.htmlTextTrackToITextTrack(e).id},e=>this.select(e),{changed$:this.current$,onError:r})),this.subscription.add(Cr(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let e of this.htmlTextTracksAsArray())this.applyCueSettings(e.cues),this.applyCueSettings(e.activeCues)}))}subscribe(){ir(this.video);let{textTracks:e}=this.video;this.subscription.add(sr(e,`addtrack`).subscribe(()=>{let e=this.current$.getValue();e&&this.select(e)})),this.subscription.add(cr(sr(e,`addtrack`),sr(e,`removetrack`),lr([`init`])).pipe(dr(()=>this.htmlTextTracksAsArray().map(e=>this.htmlTextTrackToITextTrack(e))),ur((e,t)=>e.length===t.length&&e.every(({id:e},n)=>e===t[n].id))).subscribe(this.available$)),this.subscription.add(cr(sr(e,`change`),lr([`init`])).pipe(dr(()=>this.htmlTextTracksAsArray().find(({mode:e})=>e===`showing`)),dr(e=>e&&this.htmlTextTrackToITextTrack(e).id),ur()).subscribe(this.current$));let t=e=>this.applyCueSettings(e.target?.activeCues??null);this.subscription.add(sr(e,`addtrack`).subscribe(e=>{e.track?.addEventListener(`cuechange`,t);let n=e=>{let t=e.target?.cues??null;t&&t.length&&(this.applyCueSettings(e.target?.cues??null),e.target?.removeEventListener(`cuechange`,n))};e.track?.addEventListener(`cuechange`,n)})),this.subscription.add(sr(e,`removetrack`).subscribe(e=>{e.track?.removeEventListener(`cuechange`,t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let n of Array.from(e)){let e=n;ar(t.align)&&(e.align=t.align),ar(t.position)&&(e.position=t.position),ar(t.size)&&(e.size=t.size),ar(t.line)&&(e.line=t.line)}}htmlTextTracksAsArray(e=!1){ir(this.video);let t=[...this.video.textTracks];return e?t:t.filter(Er.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:n}=e,r=e.id?e.id:wr(e),i=this.externalTracks.has(r),a=(i?this.externalTracks.get(r)?.isAuto:this.internalTracks.get(r)?.isAuto)??rr(r,`auto`);return i?{id:r,type:`external`,isAuto:a,language:t,label:n,url:this.externalTracks.get(r)?.url}:{id:r,type:`internal`,isAuto:a,language:t,label:n,url:this.internalTracks.get(r)?.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(([,e])=>this.detach(e)),e.filter(({id:e})=>!this.externalTracks.has(e)).forEach(e=>this.attach(e)),Array.from(this.externalTracks).filter(([t])=>!e.find(e=>e.id===t)).forEach(([,e])=>this.detach(e))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:e,language:n,isAuto:r})=>!this.internalTracks.has(e)&&!t.some(([,e])=>e.language===n&&e.isAuto===r)).forEach(e=>this.attach(e)),Array.from(this.internalTracks).filter(([t])=>!e.find(e=>e.id===t)).forEach(([,e])=>this.detach(e))}select(e){ir(this.video);for(let e of this.htmlTextTracksAsArray(!0))e.mode=`showing`;for(let t of this.htmlTextTracksAsArray(!0))(or(e)||!Tr(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){ir(this.video);let t=document.createElement(`track`);this.baseURL?t.setAttribute(`src`,new URL(e.url,this.baseURL).toString()):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){ir(this.video);let t=Array.prototype.find.call(this.video.getElementsByTagName(`track`),t=>t.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)}}var Dr=Er;class Or{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 kr=e=>{let t=e;for(;!(t instanceof Document)&&!(t instanceof ShadowRoot)&&t!==null;)t=t?.parentNode;return t??void 0},Ar=e=>{let t=kr(e);return!!(t&&t.fullscreenElement&&t.fullscreenElement===e)},jr=e=>{let t=kr(e);return!!(t&&t.pictureInPictureElement&&t.pictureInPictureElement===e)};var Kr=3,qr=(e,t,n=Kr)=>{let r=0,i=0;for(let a=0;a<e.length;a++){let o=e.start(a),s=e.end(a);if(o<=t&&t<=s){if(r=o,i=s,!n)return{from:r,to:i};for(let t=a-1;t>=0;t--)e.end(t)+n>=r&&(r=e.start(t));for(let t=a+1;t<e.length;t++)e.start(t)-n<=i&&(i=e.end(t))}}return{from:r,to:i}},Jr=e=>{let t=0;for(let n=0;n<e.length;n++)t+=e.end(n)-e.start(n);return t},Yr=e=>{let t=0;for(let n=0;n<e.length;n++)t+=e.end(n)-e.start(n);return t*1e3},Xr=e=>{let t=t=>P(e,t).pipe(Rr(void 0),F(1)),n=new Gr,r=()=>n.unsubscribe(),i=Nr(P(e,`progress`),P(e,`timeupdate`)),a=i.pipe(Mr(()=>qr(e.buffered,e.currentTime)),F(1)),o=i.pipe(Mr(()=>Yr(e.buffered)),F(1)),s=i.pipe(Mr(()=>e.buffered.length),F(1)),c=N.browser.isSafari?zr({play:t(`play`).pipe(Br()),playing:t(`playing`)}).pipe(Rr(void 0),F(1)):t(`playing`),l=P(e,`volumechange`).pipe(Mr(()=>({muted:e.muted,volume:e.volume})),F(1)),u=P(e,`ratechange`).pipe(Mr(()=>e.playbackRate),F(1)),d=P(e,`error`).pipe(Lr(()=>!!(e.error||e.played.length)),Mr(()=>{let t=e.error;return{id:t?`MediaError#${t.code}`:`HtmlVideoError`,category:Hr.VIDEO_PIPELINE,message:t?t.message:`Error event from HTML video element`,thrown:e.error??void 0,origin:Ur.MediaError,data:t?{code:t.code}:void 0}}),F(1)),f=P(e,`timeupdate`).pipe(Mr(()=>e.currentTime),F(1)),p=Nr(P(e,`loadedmetadata`),P(e,`timeupdate`),P(e,`pause`),P(e,`seeked`),P(e,`ended`)).pipe(Mr(()=>Jr(e.played)),Pr(),F(1)),m=[`waiting`,`seeking`,`seeked`,`timeupdate`],h=new Ir,g=.3,_;n.add(Nr(...m.map(t=>P(e,t))).subscribe(t=>{let n=e.currentTime;e.loop&&Fr(_)&&Fr(n)&&_>=e.duration-g&&n<=g&&h.next(_),_=n}));let v=t(`pause`).pipe(Lr(()=>!e.error&&_!==e.duration),F(1)),y=P(e,`enterpictureinpicture`).pipe(F(1)),b=P(e,`leavepictureinpicture`).pipe(F(1)),x=new Wr(jr(e));n.add(y.subscribe(()=>x.next(!0))),n.add(b.subscribe(()=>x.next(!1)));let S=new Wr(Ar(e)),C=P(e,`fullscreenchange`).pipe(F(1));n.add(C.pipe(Mr(()=>Ar(e))).subscribe(S));let w=P(e,`timeupdate`).pipe(Mr(t=>e.duration-e.currentTime<.1),Pr(),F(1)),T=Nr(w.pipe(Lr(t=>!e.loop&&t)),P(e,`ended`)).pipe(Vr(1e3),Rr(void 0),F(1)),E=Nr(...[`waiting`,`pause`,`canplay`,`play`,`canplaythrough`,`playing`,`seeking`,`seeked`,`ended`].map(t=>P(e,t)),w.pipe(Mr(e=>({type:e?`ended`:`unknown`})))).pipe(Mr(t=>N.browser.isFirefox&&t.type===`ended`?e.readyState<2:e.readyState<3),Pr(),F(1));return{playing$:c,pause$:v,canplay$:t(`canplay`),ended$:T,looped$:h,error$:d,seeked$:t(`seeked`),seeking$:t(`seeking`),progress$:t(`progress`),loadStart$:t(`loadstart`),loadedMetadata$:t(`loadedmetadata`),loadedData$:t(`loadeddata`),timeUpdate$:f,durationChange$:P(e,`durationchange`).pipe(Mr(()=>e.duration),F(1)),playedTime$:p,isBuffering$:E,currentBuffer$:a,totalBufferDuration$:o,bufferRangeCount$:s,volumeState$:l,playbackRateState$:u,inPiP$:x,inFullscreen$:S,enterPip$:y,leavePip$:b,destroy:r}};var Qr=e=>{switch(e){case`mobile`:return Zr.Q_144P;case`lowest`:return Zr.Q_240P;case`low`:return Zr.Q_360P;case`sd`:case`medium`:return Zr.Q_480P;case`hd`:case`high`:return Zr.Q_720P;case`fullhd`:case`full`:return Zr.Q_1080P;case`quadhd`:case`quad`:return Zr.Q_1440P;case`ultrahd`:case`ultra`:return Zr.Q_2160P}};var ai=e=>`audioTracksAsc`in e;class si{constructor(){this.last=void 0,this.history={}}recordSelection(e){this.history[e.id]=oi()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}}var vi=(e,t)=>(e??0)/(t>0?t:1),yi=e=>`quality`in e,bi=e=>(t,n)=>e*(Number(t.bitrate)-Number(n.bitrate)),xi=e=>(t,n)=>e*(hi(t.quality,n.quality)?-1:1),Si=e=>(t,n)=>yi(t)&&yi(n)?xi(e)(t,n):bi(e)(t,n),Ci=(e,t)=>Si(1)(e,t)<0,wi=(e,t)=>Math.log(t)/Math.log(e),Ti=(e,t,n)=>(t-n)*2**(-10*e)+n,Ei=(e,t,n,r)=>{if(_i(e))return n[0];let i=n.filter(t=>gi(t.bitrate)&&gi(e.bitrate)?e.bitrate/t.bitrate>r:!0),a=pi(n,Math.round(n.length*t.indexOf(e)/(t.length+1)))??pi(n,-1);return a&&mi(i,a)?a:i.length?pi(i,-1):pi(n,0)},Di=(e,t)=>{if(_i(t)||_i(e))return;let n=e.get(t.id);if(!n?.length)return;let r=(n[n.length-1].time.to-n[0].time.from)/1e3;if(r<=0)return;let i=n.reduce((e,t)=>e+(t.size??1/0),0)*8/1024/r;return isFinite(i)?i:void 0},Oi=(e,t)=>gi(e)&&gi(t)&&t>0&&e>0&&e<=t*2,ki=e=>{let{name:t}=e;return`
|
|
7
7
|
${t}
|
|
8
8
|
${ri(ee(e,b)).map(([e,t])=>` ${e}: ${t}`).join(`
|
|
9
9
|
`)}
|
|
@@ -35,4 +35,4 @@ ${ri(ee(e,b)).map(([e,t])=>` ${e}: ${t}`).join(`
|
|
|
35
35
|
`,e.map(({time:e,data:t,stack:n})=>`${e}: ${JSON.stringify(t)}${n?`
|
|
36
36
|
`+n:``}`).join(`
|
|
37
37
|
`),`
|
|
38
|
-
===== DASH_LIVE DEBUG END ====`),n){let t=e.reduce((e,{time:t,data:n,stack:r})=>{let i=pn(n).map(([e,t])=>`${e}:${t}`).join(`,`);return e+=`${t}: ${i}${r?`: ${r}`:``};`,e},``);tv.push(`core`,{key:`vp_dash_live_debug`,strings:[t]})}};return e.add(this.providerError$.subscribe(e=>{e.id.startsWith(`ProviderHangup`)&&(R({m:`final.0`,e:e.id}),t())})).add(this.noAvailableProvidersError$.subscribe(()=>{R({m:`final.1`}),t()})),e.add(this.mayday.recommendation$.subscribe(({error:e,recommendation:t})=>{let n=this.current$.getValue().destination??`SCREEN`;if(this.handleMaydayRecommendation(t,n),t.action!==`wait`){let t={error:e,currentDestination:n};e.traceAsLog?this.tracer.log(`providerInfo`,ev(t)):this.tracer.error(`providerError`,ev(t))}})),e.add(this.providerError$.subscribe(e=>{let t=this.current$.getValue(),{destination:n}=t;n===`CHROMECAST`?(this.destroyProvider(),this.params.dependencies.chromecastInitializer.stopMedia().then(()=>this.switchToNextProvider(`CHROMECAST`),()=>this.params.dependencies.chromecastInitializer.disconnect())):(this.applyErrorSideEffects(e,t.type),this.mayday.handleError(e))})),e}}var vy=`vk_uvp_throughput`,yy=`vk_uvp_rtt`,by=`one_video_throughput`,xy=`one_video_rtt`,Sy=()=>{let{navigator:e}=_y();if(e)return e.connection},Cy=()=>{let e=Sy()?.downlink;if(hy(e)&&e!==10)return e*1e3},wy=()=>{let e=Sy()?.rtt;if(hy(e)&&e!==3e3)return e},Ty=(e,t,n)=>{let r=n*8;return r/(r/e+t)};class Ey{constructor(e){this.throughput=void 0,this.rtt=void 0,this.subscription=new dy,this.tuningConfig=void 0,this.concurrentDownloads=new Map,this.throughput$=void 0,this.rtt$=void 0,this.rttAdjustedThroughput$=void 0,this.tuningConfig=e;let t=Ey.loadStored(vy,by,e)||(e.useBrowserEstimation?Cy():void 0)||e.initialThroughput,n=Ey.loadStored(yy,xy,e)??(e.useBrowserEstimation?wy():void 0)??0;if(this.throughput$=new fy(t),this.rtt$=new fy(n),this.rttAdjustedThroughput$=new fy(Ty(t,n,e.rttPenaltyRequestSize)),this.throughput=Ep.getSmoothedValue(t,-1,e),this.rtt=Ep.getSmoothedValue(n,1,e),e.useBrowserEstimation){let e=()=>{let e=Cy();e&&this.throughput.next(e);let t=wy();hy(t)&&this.rtt.next(t)},t=Sy();t&&`onchange`in t&&this.subscription.add(cy(t,`change`).subscribe(e)),e()}this.subscription.add(this.throughput.smoothed$.subscribe(t=>{Ey.writeStored(vy,by,t,e)})),this.subscription.add(this.rtt.smoothed$.subscribe(t=>{Ey.writeStored(yy,xy,t,e)})),this.subscription.add(this.throughput.debounced$.pipe(py(e=>Math.round(e))).subscribe(this.throughput$)),this.subscription.add(this.rtt.debounced$.subscribe(this.rtt$)),this.subscription.add(uy({throughput:this.throughput.smoothed$,rtt:this.rtt.smoothed$}).pipe(py(({throughput:t,rtt:n})=>Ty(t,n,e.rttPenaltyRequestSize)),my(t=>{let n=this.rttAdjustedThroughput$.getValue()||0;return Math.abs(t-n)/n>=e.changeThreshold})).subscribe(this.rttAdjustedThroughput$))}destroy(){this.concurrentDownloads.clear(),this.subscription.unsubscribe()}trackXHR(e){let t=0,n=J(),r=new dy;switch(this.subscription.add(r),this.concurrentDownloads.set(e,J()),e.readyState){case 4:break;case 3:case 2:r.add(cy(e,`progress`).pipe(ly()).subscribe(e=>{t=e.loaded,n=J()}));break;case 1:case 0:r.add(cy(e,`loadstart`).subscribe(()=>{t=0,n=J()}));break}r.add(cy(e,`loadend`).subscribe(i=>{if(e.status===200){let e=i.loaded,r=J(),a=e-t,o=r-n;this.addRawSpeed(a,o,1)}this.concurrentDownloads.delete(e),r.unsubscribe()}))}trackStream(e,t=!1){var n=this;let r=e.getReader();if(!r){e.cancel(`Could not get reader`);return}let i=0,a=J(),o=0,s=J(),c=t=>{this.concurrentDownloads.delete(e),r.releaseLock(),e.cancel(`Throughput Estimator error: ${t}`).catch(()=>{})},l=function(){var u=D(function*({done:u,value:d}){if(u){if(!t){let e=n.tuningConfig.measureFastSamples?n.countActiveDownloads(a):1;n.addRawSpeed(i,J()-a,e)}n.concurrentDownloads.delete(e)}else if(d){if(n.tuningConfig.measureFastSamples&&n.concurrentDownloads.set(e,J()),t){let e=J();if(e-s>n.tuningConfig.lowLatency.continuesByteSequenceInterval||e-a>n.tuningConfig.lowLatency.maxLastEvaluationTimeout){let e=s-a;e&&n.addRawSpeed(o,e,1,t),o=d.byteLength,a=J()}else o+=d.byteLength;s=J()}else if(i+=d.byteLength,o+=d.byteLength,o>=n.tuningConfig.streamMinSampleSize&&J()-s>=n.tuningConfig.streamMinSampleTime){let e=n.tuningConfig.measureFastSamples?n.countActiveDownloads(s):n.concurrentDownloads.size;n.addRawSpeed(o,J()-s,e),o=0,s=J()}yield r?.read().then(l,c)}});return function(e){return u.apply(this,arguments)}}();this.concurrentDownloads.set(e,J()),r?.read().then(l,c)}addRawSpeed(e,t,n=1,r=!1){if(this.sanityCheck(e,t,r)){let i=e*8/t*n;if(this.isFastSample(t,r)&&i<this.throughput.smoothed$.getValue())return;this.throughput.next(i)}}countActiveDownloads(e){let t=0;return this.concurrentDownloads.forEach(n=>{n>=e&&t++}),Math.max(t,1)}isFastSample(e,t){return this.tuningConfig.measureFastSamples&&!t&&e<=this.tuningConfig.cacheThresholdSize}addRawThroughput(e){this.throughput.next(e)}addRawRtt(e){this.rtt.next(e)}sanityCheck(e,t,n=!1){let r=e*8/t;return!(!r||!isFinite(r)||r>1e6||r<30||n&&e<1e4||!n&&e<10*1024&&(!this.tuningConfig.measureNonSegmentRequests||t<this.tuningConfig.smallSampleMinDuration+this.rtt$.getValue())||!n&&!this.tuningConfig.measureFastSamples&&t<=this.tuningConfig.cacheThresholdSize)}get throughputVariance$(){return this.throughput.varianceCoefficient$}static loadStored(e,t,n){if(!n.useThroughputTtl){let e=gy.get(t);if(!hy(e))return;let n=parseInt(e,10);return isNaN(n)?void 0:n}let r=gy.get(e)??gy.get(t);if(hy(r))try{let e=JSON.parse(r);if(typeof e==`object`&&e&&typeof e.value==`number`)return Ey.validateStored(e,n)}catch{}}static writeStored(e,t,n,r){if(!r.useThroughputTtl){gy.set(t,n.toFixed(0));return}let i=JSON.stringify({value:Math.round(n),timestamp:Date.now(),networkType:Sy()?.effectiveType});gy.set(e,i)}static validateStored(e,t){if(!t.useThroughputTtl)return e.value;if(Date.now()-e.timestamp>t.storedThroughputTtlMs)return;let n=Sy()?.effectiveType;if(!(n!==void 0&&e.networkType!==void 0&&n!==e.networkType))return e.value}}var Dy=Ey;var Ay={mayday:{playingUnstableThresholdMs:3e3,heuristics:[],hangupGraceDecayFactor:.5,hangupGraceMinTimeoutMs:0,deferAudibleHangupOnHiddenTab:!1},allowPlayerReuse:!1,useWorkerTimers:[],throughputEstimator:{type:`EmaAndMa`,emaAlphaSlow:.2,emaAlphaFast:.7,emaAlpha:.45,basisTrendChangeCount:10,changeThreshold:.05,useBrowserEstimation:!0,initialThroughput:5e3,measureNonSegmentRequests:!1,rttPenaltyRequestSize:1*1024*1024,streamMinSampleSize:10*1024,streamMinSampleTime:300,smallSampleMinDuration:100,cacheThresholdSize:20,measureFastSamples:!1,deviationDepth:20,deviationFactor:.5,lowLatency:{continuesByteSequenceInterval:50,maxLastEvaluationTimeout:300},useThroughputTtl:!1,storedThroughputTtlMs:144e5},autoTrackSelection:{maxBitrateFactorAtEmptyBuffer:4,bitrateFactorAtEmptyBuffer:2.8,minBitrateFactorAtEmptyBuffer:1.5,bitrateAudioFactorAtEmptyBuffer:10,maxBitrateFactorAtFullBuffer:3,bitrateFactorAtFullBuffer:2,minBitrateFactorAtFullBuffer:1,bitrateAudioFactorAtFullBuffer:7,minVideoAudioRatio:5,minAvailableThroughputAudioRatio:5,usePixelRatio:!0,pixelRatioMultiplier:void 0,pixelRatioLogBase:3,pixelRatioLogCoefficients:[1,0,1],limitByContainer:!0,maxContainerSizeFactor:2,containerSizeFactor:1.3,minContainerSizeFactor:1,lazyQualitySwitch:!0,minBufferToSwitchUp:.4,considerPlaybackRate:!1,trackCooldownIncreaseQuality:15e3,trackCooldownDecreaseQuality:3e3,backgroundVideoQualityLimit:ky.Q_4320P,activeVideoAreaThreshold:.1,highQualityLimit:ky.Q_720P,trafficSavingLimit:ky.Q_480P,lowQualityTelemetryLimit:ky.Q_240P},stallsManager:{enabled:!1,ignoreDynamicAbrForShortVideo:!1,stallDurationNoDataBeforeQualityDecrease:500,stallDurationToBeCount:100,stallCountBeforeQualityDecrease:3,resetQualityRestrictionTimeout:1e4,ignoreStallsOnSeek:!0,stallsMetricsHistoryLength:20,maxPossibleStallDuration:3e4,minTvtToBeCounted:120,maxTvtToBeCounted:10800,significantTvt:600,targetStallsDurationPerTvt:1,deviationStallsDurationPerTvt:.5,criticalStallsDurationPerTvt:6,abrAdjustingSpeed:.1,emaAlpha:.6,useTotalStallsDurationPerTvt:!0,useAverageStallsDurationPerTvt:!0,useEmaStallsDurationPerTvt:!0,ignoreStallsOnPause:!1},droppedFramesChecker:{enabled:!1,percentLimit:.1,checkTime:1e3,countLimit:3,tickCountAfterQualityChange:5,qualityUpWaitingTime:5e3,minQualityBanLimit:ky.Q_480P},dash:{forwardBufferTarget:6e4,forwardBufferTargetAuto:6e4,forwardBufferTargetManual:5*6e4,forwardBufferTargetPreload:5e3,audioBufferAheadOfVideoMs:6e4,seekBiasInTheEnd:2e3,maxSegmentDurationLeftToSelectNextSegment:3e3,minSafeBufferThreshold:.5,bufferPruningSafeZone:1e3,segmentRequestSize:1*1024*1024,maxVirtualBufferSize:250*1024*1024,virtualBufferPruneSize:100*1024*1024,representationSwitchForwardBufferGap:6e4,crashOnStallTimeout:25e3,crashOnStallTWithoutDataTimeout:5e3,restoreBufferBeforeCrashTimeout:1e3,enableSubSegmentBufferFeeding:!0,bufferEmptinessTolerance:100,virtualBufferEmptinessTolerance:100,useBufferQueueVerification:!1,useVirtualBufferImplicitSeek:!1,bufferQueueVerificationMinPosition:2e3,useNewRepresentationSwitch:!1,useDelayedRepresentationSwitch:!1,useSmartRepresentationSwitch:!1,brokenSegmentAppendDetection:!1,brokenSegmentAppendTolerance:100,useFetchPriorityHints:!0,enableBaseUrlSupport:!0,maxSegmentRetryCount:5,sourceOpenTimeout:1e3,vktvAbrThrottle:0,timeupdateEventTickThrottle:300,fetcherBufferOptimisation:!0,usePersistentGaps:!1,abrThrottle:0,useVideoElementWaitingCurrentTimeReassign:!0,useVideoElementProgressCurrentTimeReassign:!1,stallWatchdogInterval:100,liveUpdateInterval:1e3,liveStallReinitInterval:3e3,ignoreNetworkErrorsOnLoadInit:!1,bufferTolerance:100,minNativeBufferSize:5e3,removeTimeShiftFromSegment:500,tickMaintainInterval:100,minSafeBufferToPlay:0,useBufferHoldingOnlyOnStall:!0,useAbrPhases:!1,abrVideoRules:[`fits_container_rule`,`throughput_rule`,`buffer_rule`,`stalls_rule`,`upper_limit_rule`,`lower_limit_rule`],abrAudioRules:[`throughput_rule`,`min_audio_for_video_rule`],useFailoverHostsOnAllProviderCrash:!1,saveData3gQualityLimit:ky.Q_240P,saveData2gQualityLimit:ky.Q_144P,useConnectionDataUpperLimit:!1,abandon:{minElapsedMs:1500,bufferSafetyFactor:.8,minLoadedFraction:.15,minBufferToActivateMs:500},bola:{bufferTargetMs:3e4,minBufferMs:1e4,minBufferPerBitrateLevelMs:2e3,placeholderBufferDecay:.99,fallbackSegmentDurationMs:4e3,finiteThresholdMs:6e4,adaptiveBufferTargetK:.5,adaptiveBufferTargetMaxMs:6e4,trimDetectThresholdMs:1e4,antiCascadeDownshift:!0},insufficientBuffer:{thresholdMs:500,gracePeriodAfterPlaybackResetMs:1e3,budgetFactor:.5,fallbackSegmentDurationMs:6e3},videoStreamRepresentaionsFilter:[],filterOnDemandQualityList:!1,dashMaxTvVideoQuality:!1,checkRepresentationCanPlayType:!1,preloadFirstSegment:!1,maxQualityForFirstSegmentPreload:ky.Q_480P,tracerResumeOnUnexpectedStall:!1,tracerResumeOnLowQuality:!1,disableStallWatchdogReinitDecoder:!1,resolveQueueOnDestroy:!1},dashCmafLive:{externalStopControl:!1,keepSilentStallWatchdogWhenNotActive:!1,maxActiveLiveOffset:1e4,normalizedTargetMinBufferSize:6e4,normalizedLiveMinBufferSize:5e3,normalizedActualBufferOffset:1e4,offsetCalculationError:3e3,maxLiveDuration:7200,catchupLiveForMutedInactiveTab:!0,lowLatency:{maxTargetOffset:3e3,maxTargetOffsetDeviation:250,playbackCatchupSpeedup:.05,isActiveOnDefault:!1,bufferEstimator:{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,catchupLiveForMutedInactiveTab:!1,disableLiveSeekWithoutOffsetMarker:!1},downloadBackoff:{bufferThreshold:100,start:100,factor:2,max:3*1e3,random:.1},enableWakeLock:!0,enableTelemetryAtStart:!1,forceFormat:void 0,formatsToAvoid:[],disableChromecast:!1,chromecastReceiverId:`07A4434E`,chromecastPresentationApi:!1,useWebmBigRequest:!1,webmCodec:`vp9`,androidPreferredFormat:`dash`,iosPreferredFormat:`hls`,preferCMAF:!1,preferWebRTC:!1,preferMultiStream:!1,preferHDR:!1,bigRequestMinInitSize:50*1024,bigRequestMinDataSize:1*1024*1024,stripRangeHeader:!0,flushShortLoopedBuffers:!0,insufficientBufferRuleMargin:1e4,seekNearDurationBias:1,dashSeekInSegmentDurationThreshold:180*1e3,dashSeekInSegmentAlwaysSeekDelta:1e4,useDelayedPlaybackHangupWithData:!1,playbackHangupNoDataThreshold:5e3,hangupTimeoutMs:5e3,endGapTolerance:300,stallIgnoreThreshold:33,stallHandlingStrategy:`exclude-threshold`,stallIgnoreOnPause:!1,gapWatchdogInterval:50,requestQuick:!1,useHlsJs:!1,disableHlsOnDesktop:!1,useNativeHLSTextTracks:!1,useNewSwitchTo:!1,alwaysAbortPreviousSwitch:!1,useDashProviderVirtual:!1,useDashProviderVirtualMobile:!1,useDashLiveProviderVirtual:!1,useDashLiveProviderVirtualMobile:!1,useSafariEndlessRequestBugfix:!0,useSafariOptimisticPositionForLiveEdgeBugfix:!1,isAudioDisabled:!1,autoplayOnlyInActiveTab:!0,autoplayOnlyIfVisible:!0,dynamicImportTimeout:5e3,maxPlaybackTransitionInterval:2e4,providerErrorLimit:3,manifestRetryInterval:300,manifestRetryMaxInterval:1e4,manifestRetryMaxCount:10,audioVideoSyncRate:20,webrtc:{connectionRetryMaxNumber:3},useVolumeMultiplier:!1,ignoreAudioRendererError:!1,useEnableSubtitlesParam:!1,useHlsLiveNewTextManager:!1,exposeInternalsToGlobal:!1,hlsLiveNewTextManagerDownloadThreshold:4e3,disableYandexPiP:!1,asyncResolveClientChecker:!1,changePlaybackStateToPausedWhenEnded:!1,suppressExceptionsInObservables:!0,devNullLogEnabled:!1,collectingDecodingInfoEnabled:!1,sendDashLiveDebug:!1,logDashLiveDebug:!1,reuseOwnVideoElement:!1,handleExtendedNetworkErrorsSet:!1,useUrlCacheMechanism:!1,useDurationFromSegments:!0,dropUrlCacheWhenProviderCrashed:!1,ignoreForcePlayResultWhenProviderChanged:!1,hls:{filterOnDemandQualityList:!1},disableSubtitles:!1,audioOnly:!1,clearAudioElementOnDispose:!0,readyOnLoadedMetadata:!1},jy=e=>Oy(e,Ay);var lb=({seekState:e,position$:t})=>ab(e.stateChangeEnded$.pipe(ob(({to:e})=>e.state===`none`?void 0:(e.position??NaN)/1e3),sb(cb)),t.pipe(sb(()=>e.getState().state===`none`)));var db=e=>{let t=typeof e.container==`string`?document.getElementById(e.container):e.container;return ub(t,`Wrong container or containerId {${e.container}}`),t};var mb=(e,t,n,r)=>{e!==void 0&&t.getState()===void 0&&t.getPrevState()===void 0&&n?.getValue().length===0?n.pipe(fb(e=>e.length>0),pb()).subscribe(n=>{n.find(r)&&t.startTransitionTo(e)}):(e===void 0||n?.getValue().find(r))&&t.startTransitionTo(e)};var bb=()=>{let e=`mediaCapabilities`in yb().navigator?xb:Sb,t=hb(D(function*(){let t=yield Promise.all(gb(Cb).map(function(){var t=D(function*([t,n]){return{codec:t,supported:yield e(n)}});return function(e){return t.apply(this,arguments)}}())),n=[N.browser.current,...t.map(e=>JSON.stringify(e))].slice(0,16);return vb.push(`core`,{key:`videoplayer_decoding_info`,strings:n}),t}));return()=>_b(t)},xb=function(){var e=D(function*(e){if(!e)return Promise.resolve({supported:!1});let t={[`channels`in e?`audio`:`video`]:e};return yield yb().navigator.mediaCapabilities.decodingInfo(E({type:`media-source`},t))});return function(t){return e.apply(this,arguments)}}(),Sb=e=>{if(!e)return Promise.resolve({supported:!1});let t=yb().document,n=`channels`in e?t.createElement(`audio`):t.createElement(`video`);return Promise.resolve({supported:n.canPlayType(e?.contentType??``)===`probably`})},Cb={H264:{contentType:`video/mp4; codecs="avc1.4D400C"`,width:720,height:720,bitrate:2886,framerate:30},H265:{contentType:`video/mp4; codecs="hvc1.1.6.L123.B0"`,width:720,height:720,bitrate:2886,framerate:30},VP8:{contentType:`video/webm; codecs="vp8"`,width:720,height:720,bitrate:2886,framerate:30},VP9:{contentType:`video/webm; codecs="vp09.00.10.08"`,width:720,height:720,bitrate:2886,framerate:30},AV1:{contentType:`video/mp4; codecs="av01.0.01M.08"`,width:720,height:720,bitrate:2886,framerate:30},OPUS:{contentType:`audio/ogg; codecs="opus"`,channels:`2`,bitrate:128e3},AAC_LC:{contentType:`audio/mp4; codecs="mp4a.40.2"`,channels:`2`,bitrate:128e3},AC3:{contentType:`audio/mp4; codecs="ac-3"`,channels:`6`,bitrate:128e3},EAC3:{contentType:`audio/mp4; codecs="ec-3"`,channels:`6`,bitrate:128e3},AAC_HE_V1:{contentType:`audio/mp4; codecs="mp4a.40.5"`,channels:`2`,bitrate:128e3},AAC_HE_V2:{contentType:`audio/mp4; codecs="mp4a.40.29"`,channels:`2`,bitrate:128e3},AAC_xHE:{contentType:`audio/mp4; codecs="mp4a.40.42"`,channels:`2`,bitrate:128e3}},wb={playbackState$:void 0,position$:0,duration$:1/0,playedTime$:0,muted$:!1,volume$:1,availableVideoStreams$:[],currentVideoStream$:void 0,availableVideoTracks$:[],availableQualities$:[],availableQualitiesFps$:{},currentQuality$:void 0,isAutoQualityEnabled$:!0,autoQualityLimitingAvailable$:!1,autoQualityLimits$:{},predefinedQualityLimitType$:`unknown`,availableAudioStreams$:[],currentAudioStream$:void 0,availableAudioTracks$:[],isAudioAvailable$:!0,currentPlaybackRate$:1,currentVideoBuffer$:{start:0,end:0},currentAudioBuffer$:{start:0,end:0},totalBufferDuration$:0,currentNativeVideoBuffer$:{start:0,end:0},currentNativeAudioBuffer$:{start:0,end:0},isBuffering$:!0,isStalled$:!1,stallStartTime$:0,isEnded$:!1,isLooped$:!1,isLive$:void 0,isLiveEnded$:null,canPlayLiveTailBuffer$:!1,canChangePlaybackSpeed$:void 0,atLiveEdge$:void 0,atLiveDurationEdge$:void 0,liveTime$:void 0,liveBufferTime$:void 0,liveLatency$:void 0,currentFormat$:void 0,availableTextTracks$:[],currentTextTrack$:void 0,throughputEstimation$:void 0,rttEstimation$:void 0,videoBitrate$:void 0,hostname$:void 0,httpConnectionType$:void 0,httpConnectionReused$:void 0,httpConnectionMetrics$:void 0,httpDownloadMetrics$:void 0,surface$:`none`,chromecastState$:`NOT_AVAILABLE`,chromecastDeviceName$:void 0,intrinsicVideoSize$:void 0,availableSources$:void 0,currentVideoSegmentLength$:0,currentAudioSegmentLength$:0,debugData$:{volume:0,muted:!1}},Tb={audioStream:void 0,autoVideoTrackLimits:{},autoVideoTrackSwitching:!0,currentTextTrack:void 0,externalTextTracks:[],internalTextTracks:[],isLooped:!1,isLowLatency:!1,playbackRate:1,playbackState:`stopped`,seekState:{state:`none`},textTrackCuesSettings:{},videoTrack:void 0,videoStream:void 0,volume:{volume:1,muted:!1}};class Eb{constructor(e={},t=nb.createRootTracer(`fake`),n){this.subscription=new $y,this.persistentSubscription=new $y,this.domContainer=null,this.providerContainer=void 0,this.chromecastInitializer=void 0,this.logger=new qy,this.tracer=void 0,this.abrLogger=this.logger.createComponentLog(`ABR`),this.config=void 0,this.tuning=void 0,this.throughputEstimator=void 0,this.internalsExposure=null,this.isPlaybackStarted=!1,this.suppressWillStop=!1,this.initedAt=void 0,this.hasLiveOffsetByPaused=new rb(!1),this.hasLiveOffsetByPausedTimer=0,this.playerInitRequest=0,this.playerInited=new rb(!1),this.explicitInitialQuality=void 0,this.wasSetStartedQuality=!1,this.desiredState=ue(Tb).reduce((e,[t,n])=>(e[t]=new bn(n),e),{}),this.info=ue(wb).reduce((e,[t,n])=>(e[t]=new rb(n),e),{}),this.events={inited$:new $,ready$:new $,started$:new $,playing$:new $,paused$:new $,stopped$:new $,willReady$:new $,willStart$:new $,willResume$:new $,willPause$:new $,willStop$:new $,willDestruct$:new $,watchCoverageRecord$:new $,watchCoverageLive$:new $,managedError$:new $,fatalError$:new $,fetcherRecoverableError$:new $,ended$:new $,looped$:new $,seeked$:new $,willSeek$:new $,autoplaySoundProhibited$:new $,manifestRequested$:new $,firstBytesManifest$:new $,manifestReceived$:new $,firstBytesRequested$:new $,firstBytesReceived$:new $,firstBytes$:new $,loadedMetadata$:new $,firstFrame$:new $,canplay$:new $,log$:new $,fetcherError$:new $,severeStallOccured$:new $},this.experimental={element$:new rb(void 0),enableDebugTelemetry$:new rb(!1),dumpTelemetry:_p,getCurrentTime$:new rb(null),skipVideoElVolumeSync$:new rb(!1)},this.devNullLog=void 0,this.collectDecodingInfoDestroyCb=void 0,this.hasReleasedTimers=!1,this.doInit=e=>{let{container:t}=e,n=ee(e,T);this.tracer.log(`initVideo`,Iy(n),!0),this.domContainer=db(e),this.chromecastInitializer.contentId=e.meta?.videoId,this.providerContainer=new sy({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,panelSize:e.panelSize,skipVideoElVolumeSync$:this.experimental.skipVideoElVolumeSync$,handleNetworkRecoverableErrorAsProviderError:e.handleNetworkRecoverableErrorAsProviderError}),this.initProviderContainerSubscription(this.providerContainer),this.initStartingVideoTrack(this.providerContainer),this.providerContainer.init(),this.setLiveLowLatency(this.tuning.dashCmafLive.lowLatency.isActiveOnDefault),this.initDebugTelemetry(),this.initWakeLock(),this.playerInited.next(!0),this.devNullLog&&this.tuning.devNullLogEnabled?(Py.subscribe(`core`,this.devNullLog),this.tuning.collectingDecodingInfoEnabled&&(this.collectDecodingInfoDestroyCb=bb())):Py.destroy(`core`)},this.initLogs(),this.tuning=jy(e),this.tracer=t,Qy(this.tuning.useWorkerTimers),this.tuning.suppressExceptionsInObservables&&(de(this.info).forEach(e=>e.setSuppressErrors(!0)),de(this.events).forEach(e=>e.setSuppressErrors(!0)));let r={receiverApplicationId:this.tuning.chromecastReceiverId,isDisabled:this.tuning.disableChromecast,dependencies:{logger:this.logger}};if(this.chromecastInitializer=this.tuning.chromecastPresentationApi?new dn(r):new Oe(r),this.throughputEstimator=new Dy(this.tuning.throughputEstimator),e.exposeInternalsToGlobal&&(this.internalsExposure=new Hy(`core`,Ry(n?.playerId)),this.internalsExposure.expose({player:this,getTimersDiagnostics:zy})),this.initChromecastSubscription(),this.initDesiredStateSubscriptions(),this.initDebugDataSubscriptions(),this.devNullLog=n?.onDevNullLog,Py.create(`core`),Proxy&&Reflect)return new Proxy(this,{get:(e,t,n)=>{let r=Reflect.get(e,t,n);return typeof r==`function`?(...n)=>{try{return r.apply(e,n)}catch(e){let r=n.map(e=>JSON.stringify(e,(e,t)=>{let n=typeof t;return fe([`number`,`string`,`boolean`],n)?t:t===null?null:`<${n}>`})),i=`Player.${String(t)}`,a=`Exception calling ${i} (${r.join(`, `)})`;throw this.events.fatalError$.next({id:i,category:Fy.WTF,message:a,thrown:e}),e}}:r}})}resetDesiredState(){let e=(e,t)=>{e.setState(t)};Object.keys(this.desiredState).forEach(t=>{e(this.desiredState[t],Tb[t])})}reset(){this.subscription.unsubscribe(),this.providerContainer?.destroy(),this.providerContainer=void 0,j.clearTimeout(this.hasLiveOffsetByPausedTimer),this.collectDecodingInfoDestroyCb?.call(this),this.playerInited.next(!1),this.resetDesiredState();let e=(e,t)=>{e.next(t)},t=[`muted$`,`volume$`];Object.keys(this.info).forEach(n=>{fe(t,n)?e(this.info[n],this.info[n].getValue()):e(this.info[n],wb[n])})}initAudio(e){return this.initVideo(E(E({},e),{},{container:e.audioElement??document.createElement(`audio`)}))}initVideo(e){let t=Vy();this.config=e,this.internalsExposure?.expose({config:e,logger:this.logger,tuning:this.tuning}),this.setMuted(this.tuning.isAudioDisabled);let n=()=>{this.tuning.autoplayOnlyIfVisible&&t.requestAnimationFrame?this.playerInitRequest=t.requestAnimationFrame(()=>this.doInit(e)):this.doInit(e)},r=()=>{this.tuning.asyncResolveClientChecker?N.isInited$.pipe(Y(e=>!!e),Q()).subscribe(()=>{console.log(`Core SDK async start`),n()}):n()};return this.isNotActiveTabCase()?(this.tracer.log(`request play from hidden tab`),Ly(t.document,`visibilitychange`).pipe(Q()).subscribe(r)):r(),this}destroy(e){let t=Vy();this.tracer.log(`destroy`),j.clearTimeout(this.hasLiveOffsetByPausedTimer),this.playerInitRequest&&t.cancelAnimationFrame(this.playerInitRequest),this.events.willDestruct$.next(),this.suppressWillStop=e?.reportStop===!1,this.stop(),this.providerContainer?.destroy(),this.throughputEstimator.destroy(),this.chromecastInitializer.destroy(),this.subscription.unsubscribe(),this.persistentSubscription.unsubscribe(),this.tracer.end(),this.internalsExposure?.destroy(),Py.destroy(`core`),this.collectDecodingInfoDestroyCb?.call(this),this.hasReleasedTimers||(this.hasReleasedTimers=!0,Zy())}waitInit(e){this.playerInited.getValue()?e():this.subscription.add(this.playerInited.pipe(Y(e=>!!e),Q()).subscribe(e))}prepare(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`prepare`,{currentPlayBackState:e.getState()}),e.getState()===`stopped`&&e.startTransitionTo(`ready`)}),this}play(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`play`,{currentPlayBackState:e.getState()}),e.getState()!==`playing`&&e.startTransitionTo(`playing`)}),this}pause(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`pause`,{currentPlayBackState:e.getState()}),e.getState()!==`paused`&&e.startTransitionTo(`paused`)}),this}stop(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`stop`,{currentPlayBackState:e.getState()}),e.getState()!==`stopped`&&(e.startTransitionTo(`stopped`),this.tuning.allowPlayerReuse&&this.reset())}),this}seekTime(e,t=!0){return this.waitInit(()=>{let n=this.info.duration$.getValue(),r=this.info.isLive$.getValue(),i=e;e>=n&&!r&&(i=n-this.tuning.seekNearDurationBias),i<0&&!r&&(i=0),this.tracer.log(`seekTime`,{duration:n,isLive:r,time:e,calculatedTime:i,forcePrecise:t}),Number.isFinite(i)&&(this.events.willSeek$.next({from:this.getExactTime(),to:i}),this.desiredState.seekState.setState({state:`requested`,position:i*1e3,forcePrecise:t}))}),this}seekPercent(e){return this.waitInit(()=>{let t=this.info.duration$.getValue();this.tracer.log(`seekPercent`,{percent:e,duration:t}),isFinite(t)&&this.seekTime(Math.abs(t)*e,!1)}),this}setVolume(e,t,n=!1){return this.waitInit(()=>{this.experimental.skipVideoElVolumeSync$.next(n);let r=this.desiredState.volume,i=r.getTransition()?.to.muted??this.info.muted$.getValue(),a=t??(this.tuning.isAudioDisabled||i);this.tracer.log(`setVolume`,{volume:e,isAudioDisabled:this.tuning.isAudioDisabled,chromecastState:this.chromecastInitializer.castState$.getValue(),muted:a}),this.chromecastInitializer.castState$.getValue()===`CONNECTED`&&!(this.chromecastInitializer instanceof dn)?this.chromecastInitializer.setVolume(e):r.startTransitionTo({volume:e,muted:a})}),this}setMuted(e,t=!1,n=!1){return this.waitInit(()=>{this.experimental.skipVideoElVolumeSync$.next(n);let r=this.desiredState.volume,i=this.tuning.isAudioDisabled&&!t||e,a=r.getTransition()?.to.volume??this.info.volume$.getValue();this.tracer.log(`setMuted`,{isMuted:e,nextMuted:i,volume:a,isAudioDisabled:this.tuning.isAudioDisabled,chromecastState:this.chromecastInitializer.castState$.getValue()}),this.chromecastInitializer.castState$.getValue()===`CONNECTED`&&!(this.chromecastInitializer instanceof dn)?this.chromecastInitializer.setMuted(i):r.startTransitionTo({volume:a,muted:i})}),this}setVideoStream(e){return this.waitInit(()=>{this.desiredState.videoStream.startTransitionTo(e)}),this}setAudioStream(e){return this.waitInit(()=>{this.desiredState.audioStream.startTransitionTo(e)}),this}setQuality(e){return this.waitInit(()=>{My(this.providerContainer);let t=this.providerContainer.providerOutput.availableVideoTracks$.getValue();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.wasSetStartedQuality?this.providerContainer.providerOutput.availableVideoTracks$.pipe(Y(e=>e.length>0),Q()).subscribe(t=>{this.setVideoTrackIdByQuality(t,e)}):this.explicitInitialQuality=e:t.length>0&&this.setVideoTrackIdByQuality(t,e)}),this}setAutoQuality(e){return this.waitInit(()=>{this.tracer.log(`setAutoQuality`,{enable:e}),this.desiredState.autoVideoTrackSwitching.startTransitionTo(e)}),this}setAutoQualityLimits(e){return this.waitInit(()=>{this.tracer.log(`setAutoQualityLimits`,Iy(e)),this.desiredState.autoVideoTrackLimits.startTransitionTo(e)}),this}setPredefinedQualityLimits(e){return this.waitInit(()=>{if(this.info.predefinedQualityLimitType$.getValue()===e)return this;let{highQualityLimit:t,trafficSavingLimit:n}=this.tuning.autoTrackSelection,r;switch(e){case`high_quality`:r={min:t,max:void 0};break;case`traffic_saving`:r={max:n,min:void 0};break;default:r={max:void 0,min:void 0}}this.setAutoQualityLimits(r)}),this}setPlaybackRate(e){return this.waitInit(()=>{this.tracer.log(`setPlaybackRate`,{playbackRate:e}),this.desiredState.playbackRate.startTransitionTo(e)}),this}setExternalTextTracks(e){return this.waitInit(()=>{e.length&&this.tracer.log(`setExternalTextTracks`,Iy(e)),this.desiredState.externalTextTracks.startTransitionTo(e.map(e=>E({type:`external`},e)))}),this}selectTextTrack(e){return this.waitInit(()=>{mb(e,this.desiredState.currentTextTrack,this.providerContainer?.providerOutput.availableTextTracks$,t=>t.id===e),this.tracer.log(`selectTextTrack`,{textTrackId:e})}),this}setTextTrackCueSettings(e){return this.waitInit(()=>{this.tracer.log(`setTextTrackCueSettings`,E({},e)),this.desiredState.textTrackCuesSettings.startTransitionTo(e)}),this}setLiveLowLatency(e){let t=this.info.isLive$.getValue(),n=this.desiredState.isLowLatency.getState();return!t||n===e?this:(this.tracer.log(`live switch to low latency `+e),this.desiredState.isLowLatency.setState(e),this.seekTime(0))}setLooped(e){return this.waitInit(()=>{this.tracer.log(`setLooped`,{isLooped:e}),this.desiredState.isLooped.startTransitionTo(e)}),this}toggleChromecast(){this.tracer.log(`toggleChromecast`),this.chromecastInitializer.toggleConnection()}getExactTime(){if(!this.providerContainer)return 0;let e=this.providerContainer.providerOutput.element$.getValue();if(Ky(e))return this.info.position$.getValue();let t=this.desiredState.seekState.getState(),n=t.state===`none`?void 0:t.position;return Gy(n)?n/1e3:e.currentTime}getExactLiveTime(){if(!this.providerContainer)return 0;let e=this.desiredState.seekState.getState(),t=e.state===`none`?void 0:e.position;return(Gy(t)?t:this.info.liveTime$.getValue()??0)/1e3}getAllLogs(){return this.logger.getAllLogs()}getDebugData(){return this.info.debugData$.getValue()}buildDebugData([e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v]){let y={version:ne,volume:Math.round(_*100),muted:v,provider:e,cdn:t,videoSize:n?`${n.width}x${n.height}`:void 0,speed:l,bitrate:u,liveLatency:d,currentVideoSegmentLength:f,currentAudioSegmentLength:p,videoCodec:m?.codec,audioCodec:h?.codec,hdr:m?.hdr,audioLanguage:h?.language,position:g};return r&&a&&(s&&c?(y.videoBuffer=r.end-c,y.nativeVideoBuffer=a.end-c):(y.videoBuffer=Math.max(r.end-g,0),y.nativeVideoBuffer=Math.max(a.end-g,0))),i&&(y.audioBuffer=Math.max(i.end-g,0),o&&(y.nativeAudioBuffer=Math.max(o.end-g,0))),y}setIntrinsicVideoSize(...e){let t={width:e.reduce((e,{width:t})=>e||t||0,0),height:e.reduce((e,{height:t})=>e||t||0,0)};t.width&&t.height&&this.info.intrinsicVideoSize$.next({width:t.width,height:t.height})}initDebugDataSubscriptions(){this.subscription.add(ib([this.info.currentFormat$,this.info.hostname$,this.info.intrinsicVideoSize$,this.info.currentVideoBuffer$,this.info.currentAudioBuffer$,this.info.currentNativeVideoBuffer$,this.info.currentNativeAudioBuffer$,this.info.isLive$,this.info.liveBufferTime$,this.info.throughputEstimation$,this.info.videoBitrate$,this.info.liveLatency$,this.info.currentVideoSegmentLength$,this.info.currentAudioSegmentLength$,this.info.currentVideoStream$,this.info.currentAudioStream$,this.info.position$,this.info.volume$,this.info.muted$]).pipe(Z(e=>this.buildDebugData(e))).subscribe(this.info.debugData$))}initDesiredStateSubscriptions(){this.persistentSubscription.add(Yy(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(Z(e=>e.to)).subscribe(this.info.playbackState$)).add(this.desiredState.isLooped.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(this.info.isLooped$)).add(this.desiredState.playbackRate.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(this.info.currentPlaybackRate$)).add(this.desiredState.autoVideoTrackSwitching.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(this.info.isAutoQualityEnabled$)).add(this.desiredState.autoVideoTrackLimits.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(e=>{this.info.autoQualityLimits$.next(e);let{highQualityLimit:t,trafficSavingLimit:n}=this.tuning.autoTrackSelection;this.info.predefinedQualityLimitType$.next(fa(e,t,n))})).add(Yy(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(Y(({from:e})=>e===`stopped`)).subscribe(()=>{this.initedAt=Xy(),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`ready`:this.events.willReady$.next();break;case`paused`:this.events.willPause$.next();break;case`playing`:this.isPlaybackStarted?this.events.willResume$.next():this.events.willStart$.next();break;case`stopped`:this.suppressWillStop||this.events.willStop$.next();break;default:}}))}initProviderContainerSubscription(e){this.subscription.add(e.providerOutput.willSeekEvent$.subscribe(()=>{let e=this.desiredState.seekState.getState();this.tracer.log(`willSeekEvent`,Iy(e)),e.state===`requested`?this.desiredState.seekState.setState(E(E({},e),{},{state:`applying`})):this.events.managedError$.next({id:`WillSeekIn${e.state}`,category:Fy.WTF,message:`Received unexpeceted willSeek$`})})).add(e.providerOutput.soundProhibitedEvent$.pipe(Q()).subscribe(this.events.autoplaySoundProhibited$)).add(e.providerOutput.severeStallOccurred$.subscribe(this.events.severeStallOccured$)).add(e.providerOutput.seekedEvent$.subscribe(()=>{let e=this.desiredState.seekState.getState();this.tracer.log(`seekedEvent`,Iy(e)),e.state===`applying`&&(this.desiredState.seekState.setState({state:`none`}),this.events.seeked$.next())})).add(e.current$.pipe(Z(e=>e.type)).subscribe(this.info.currentFormat$)).add(e.current$.pipe(Z(e=>e.destination),X()).subscribe(()=>this.isPlaybackStarted=!1)).add(e.providerOutput.availableVideoStreams$.subscribe(this.info.availableVideoStreams$)).add(e.providerOutput.availableVideoTracks$.subscribe(this.info.availableVideoTracks$)).add(Ny({availableVideoTracks:e.providerOutput.availableVideoTracks$,currentVideoStream:e.providerOutput.currentVideoStream$}).pipe(Z(({availableVideoTracks:e,currentVideoStream:t})=>e.filter(e=>t?t.id===e.streamId:!0).map(({quality:e})=>e).sort((e,t)=>Wy(e)?1:Wy(t)?-1:Uy(t,e)?1:-1))).subscribe(this.info.availableQualities$)).add(e.providerOutput.availableVideoTracks$.subscribe(e=>{let t={};for(let n of e)n.fps&&(t[n.quality]=n.fps);this.info.availableQualitiesFps$.next(t)})).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(X()).subscribe(this.info.isAudioAvailable$)).add(e.providerOutput.currentVideoTrack$.pipe(Y(e=>Gy(e))).subscribe(e=>{this.info.currentQuality$.next(e?.quality),this.info.videoBitrate$.next(e?.bitrate)})).add(e.providerOutput.currentVideoSegmentLength$.pipe(X((e,t)=>Math.round(e)===Math.round(t))).subscribe(this.info.currentVideoSegmentLength$)).add(e.providerOutput.currentAudioSegmentLength$.pipe(X((e,t)=>Math.round(e)===Math.round(t))).subscribe(this.info.currentAudioSegmentLength$)).add(e.providerOutput.hostname$.pipe(X()).subscribe(this.info.hostname$)).add(e.providerOutput.httpConnectionType$.pipe(X()).subscribe(this.info.httpConnectionType$)).add(e.providerOutput.httpConnectionReused$.pipe(X()).subscribe(this.info.httpConnectionReused$)).add(e.providerOutput.httpConnectionMetrics$.pipe(X()).subscribe(this.info.httpConnectionMetrics$)).add(e.providerOutput.httpDownloadMetrics$.pipe(X()).subscribe(this.info.httpDownloadMetrics$)).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(e=>{this.desiredState.autoVideoTrackLimits.setState(e??{})})).add(e.providerOutput.currentVideoBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentVideoBuffer$)).add(e.providerOutput.currentAudioBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentAudioBuffer$)).add(e.providerOutput.currentNativeVideoBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentNativeVideoBuffer$)).add(e.providerOutput.currentNativeAudioBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentNativeAudioBuffer$)).add(e.providerOutput.totalBufferDuration$.subscribe(this.info.totalBufferDuration$)).add(e.providerOutput.duration$.subscribe(this.info.duration$)).add(e.providerOutput.playedTime$.subscribe(this.info.playedTime$)).add(e.providerOutput.isBuffering$.subscribe(this.info.isBuffering$)).add(e.providerOutput.isLive$.subscribe(this.info.isLive$)).add(e.providerOutput.isLiveEnded$.pipe(eb(e=>e&&this.stop())).subscribe(this.info.isLiveEnded$)).add(e.providerOutput.canPlayLiveTailBuffer$.subscribe(this.info.canPlayLiveTailBuffer$)).add(e.providerOutput.canChangePlaybackSpeed$.subscribe(this.info.canChangePlaybackSpeed$)).add(e.providerOutput.liveTime$.pipe(X()).subscribe(this.info.liveTime$)).add(e.providerOutput.liveBufferTime$.subscribe(this.info.liveBufferTime$)).add(e.providerOutput.liveLatency$.subscribe(this.info.liveLatency$)).add(Ny({hasLiveOffsetByPaused:Yy(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(Z(e=>e.to),X(),Z(e=>e===`paused`)),isLowLatency:e.providerOutput.isLowLatency$}).subscribe(({hasLiveOffsetByPaused:e,isLowLatency:t})=>{if(j.clearTimeout(this.hasLiveOffsetByPausedTimer),e){this.hasLiveOffsetByPausedTimer=j.setTimeout(()=>{this.hasLiveOffsetByPaused.next(!0)},this.getActiveLiveDelay(t));return}this.hasLiveOffsetByPaused.next(!1)})).add(Ny({atLiveEdge:Ny({isLive:e.providerOutput.isLive$,isLowLatency:e.providerOutput.isLowLatency$,position:lb({seekState:this.desiredState.seekState,position$:e.providerOutput.position$})}).pipe(Z(({isLive:e,position:t,isLowLatency:n})=>{let r=this.getActiveLiveDelay(n);return e&&Math.abs(t)<r/1e3}),X(),eb(e=>e&&this.setPlaybackRate(1))),hasPausedTimeoutCase:this.hasLiveOffsetByPaused}).pipe(Z(({atLiveEdge:e,hasPausedTimeoutCase:t})=>e&&!t)).subscribe(this.info.atLiveEdge$)).add(Ny({isLive:e.providerOutput.isLive$,position:N.browser.isSafari&&this.tuning.useSafariOptimisticPositionForLiveEdgeBugfix?lb({seekState:this.desiredState.seekState,position$:e.providerOutput.position$}):e.providerOutput.position$,duration:e.providerOutput.duration$}).pipe(Z(({isLive:e,position:t,duration:n})=>e&&(Math.abs(n)-Math.abs(t))*1e3<this.tuning.live.activeLiveDelay),X(),eb(e=>e&&this.setPlaybackRate(1))).subscribe(this.info.atLiveDurationEdge$)).add(e.providerOutput.volume$.pipe(Z(e=>e.muted),X()).subscribe(this.info.muted$)).add(e.providerOutput.volume$.pipe(Z(e=>e.volume),X()).subscribe(this.info.volume$)).add(lb({seekState:this.desiredState.seekState,position$:e.providerOutput.position$}).subscribe(this.info.position$)).add(e.providerOutput.seekedEvent$.subscribe(()=>{this.info.isEnded$.getValue()&&this.tuning.changePlaybackStateToPausedWhenEnded&&this.play()})).add(Yy(e.providerOutput.endedEvent$.pipe(Jy(!0)),e.providerOutput.seekedEvent$.pipe(Jy(!1))).pipe(X()).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.providerOutput.updateDurationError$.subscribe(this.events.managedError$)).add(e.providerOutput.fetcherRecoverableError$.subscribe(this.events.fetcherRecoverableError$)).add(e.providerOutput.fetcherError$.pipe(Y(e=>e.category===Fy.FATAL)).subscribe(this.events.fatalError$)).add(e.volumeMultiplierError$.subscribe(this.events.managedError$)).add(e.noAvailableProvidersError$.pipe(Z(({forced:e,input:t,supported:n})=>{let r,i;return e?(r=`NoForcedFormat`,i=`${e} was forced but failed or not available`):n.length?(r=`NoFormats`,i=`All formats failed`):t.length?(r=`NoSupportedFormats`,i=`No supported formats`):(r=`NoInputFormats`,i=`No formats supplied`),My(r),{id:r,category:Fy.VIDEO_PIPELINE,message:i}})).subscribe(this.events.fatalError$)).add(e.providerOutput.element$.subscribe(this.experimental.element$)).add(e.providerOutput.getCurrentTime$.subscribe(this.experimental.getCurrentTime$)).add(e.providerOutput.manifestRequested$.pipe(Q()).subscribe(this.events.manifestRequested$)).add(e.providerOutput.firstBytesManifest$.pipe(Q()).subscribe(this.events.firstBytesManifest$)).add(e.providerOutput.manifestReceived$.pipe(Q()).subscribe(this.events.manifestReceived$)).add(e.providerOutput.firstBytesRequested$.pipe(Q()).subscribe(this.events.firstBytesRequested$)).add(e.providerOutput.firstBytesReceived$.pipe(Q()).subscribe(this.events.firstBytesReceived$)).add(e.providerOutput.firstBytesEvent$.pipe(Q(),Z(e=>e??Xy()-this.initedAt)).subscribe(this.events.firstBytes$)).add(e.providerOutput.loadedMetadataEvent$.subscribe(this.events.loadedMetadata$)).add(e.providerOutput.firstFrameEvent$.pipe(Q(),Z(()=>Xy()-this.initedAt)).subscribe(this.events.firstFrame$)).add(e.providerOutput.canplay$.pipe(Q(),Z(()=>Xy()-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 rb(!1);this.subscription.add(e.providerOutput.seekedEvent$.subscribe(()=>t.next(!1))).add(e.providerOutput.willSeekEvent$.subscribe(()=>t.next(!0)));let n=new rb(!0),r=new $y;this.subscription.add(r).add(e.current$.subscribe(()=>{n.next(!0),r.unsubscribe(),r.add(this.desiredState.playbackState.stateChangeEnded$.pipe(Y(({to:e})=>e===`playing`),Q()).subscribe(()=>n.next(!1)))}));let i=new rb(!1);this.subscription.add(this.desiredState.playbackState.stateChangeEnded$.subscribe(({to:e})=>i.next(e===`paused`)));let a=0,o=0,s=Yy(e.providerOutput.isBuffering$,t,n,i).pipe(Z(()=>{let r=e.providerOutput.isBuffering$.getValue(),a=t.getValue()||n.getValue()||this.tuning.stallIgnoreOnPause&&i.getValue();return r&&!a}),X());this.subscription.add(s.subscribe(e=>{let{stallIgnoreThreshold:t,stallHandlingStrategy:n}=this.tuning;e?(o=Xy(),n===`verbose`&&this.info.stallStartTime$.next(o),a=j.setTimeout(()=>{this.info.isStalled$.next(!0),o&&this.info.stallStartTime$.next(n===`exclude-threshold`?Xy():o)},t)):(j.clearTimeout(a),this.info.isStalled$.next(!1),o=0,this.info.stallStartTime$.next(0))})),this.subscription.add(Yy(e.providerOutput.canplay$,e.providerOutput.firstFrameEvent$,e.providerOutput.firstBytesEvent$).subscribe(()=>{let t=e.providerOutput.element$.getValue();this.setIntrinsicVideoSize({width:t?.videoWidth,height:t?.videoHeight})})).add(e.providerOutput.currentVideoTrack$.subscribe(t=>{var n,r;let i=e.providerOutput.element$.getValue();this.setIntrinsicVideoSize({width:t==null||(n=t.size)==null?void 0:n.width,height:t==null||(r=t.size)==null?void 0:r.height},{width:i?.videoWidth,height:i?.videoHeight})})),this.subscription.add(Yy(e.providerOutput.inPiP$,e.providerOutput.inFullscreen$,e.providerOutput.element$,e.providerOutput.elementVisible$,this.chromecastInitializer.castState$).subscribe(()=>{let t=e.providerOutput.inPiP$.getValue(),n=e.providerOutput.inFullscreen$.getValue(),r=e.providerOutput.element$.getValue(),i=e.providerOutput.elementVisible$.getValue(),a=this.chromecastInitializer.castState$.getValue(),o;o=a===`CONNECTED`?`second_screen`:r?i?t?`pip`:n?`fullscreen`:`inline`:`invisible`:`none`,this.info.surface$.getValue()!==o&&this.info.surface$.next(o)}))}initChromecastSubscription(){this.subscription.add(this.chromecastInitializer.castState$.subscribe(this.info.chromecastState$)),this.subscription.add(this.chromecastInitializer.connection$.pipe(Z(e=>e?.castDevice.friendlyName)).subscribe(this.info.chromecastDeviceName$)),this.subscription.add(this.chromecastInitializer.errorEvent$.subscribe(this.events.managedError$))}initStartingVideoTrack(e){let t=new $y;this.subscription.add(t),this.subscription.add(e.current$.pipe(X((e,t)=>e.provider===t.provider)).subscribe(()=>{t.unsubscribe(),t.add(e.providerOutput.availableVideoTracks$.pipe(Y(e=>e.length>0),Q()).subscribe(e=>{this.setStartingVideoTrack(e)}))}))}setStartingVideoTrack(e){let t;this.wasSetStartedQuality=!0;let n=this.explicitInitialQuality??this.info.currentQuality$.getValue();n&&(t=e.find(({quality:e,tvDisabled:t})=>e===n&&!t),t||this.setAutoQuality(!0)),!t&&(t=Ra({videoTracks:e,tuning:this.tuning,abrLogger:this.abrLogger,tracer:this.tracer,container:this.domContainer?.getBoundingClientRect()??null,panelSize:this.config.panelSize??null,estimatedThroughput:this.throughputEstimator.throughput$.getValue(),limits:this.desiredState.autoVideoTrackLimits.getState(),playbackRate:this.info.currentPlaybackRate$.getValue(),forwardBufferHealth:0})),this.desiredState.videoTrack.startTransitionTo(t),this.info.currentQuality$.next(t.quality),this.info.videoBitrate$.next(t.bitrate)}initLogs(){this.persistentSubscription.add(Yy(this.desiredState.videoTrack.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`quality`,type:`start`}))),this.desiredState.videoTrack.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`quality`,type:`end`}))),this.desiredState.autoVideoTrackSwitching.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`autoQualityEnabled`,type:`start`}))),this.desiredState.autoVideoTrackSwitching.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`autoQualityEnabled`,type:`end`}))),this.desiredState.seekState.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`seekState`,type:`start`}))),this.desiredState.seekState.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`seekState`,type:`end`}))),this.desiredState.playbackState.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`playbackState`,type:`start`}))),this.desiredState.playbackState.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`playbackState`,type:`end`})))).pipe(Z(e=>({component:`desiredState`,message:`[${e.entity} change] ${e.type}: ${JSON.stringify(e.transition)}`}))).subscribe(this.logger.log)),this.persistentSubscription.add(this.logger.log$.subscribe(this.events.log$))}initDebugTelemetry(){let e=this.providerContainer?.providerOutput;My(this.providerContainer),My(e),gp(),this.experimental.enableDebugTelemetry$.next(this.tuning.enableTelemetryAtStart),[this.experimental.enableDebugTelemetry$.subscribe(e=>hp(e)),this.providerContainer.current$.subscribe(({type:e})=>vp(`provider`,e)),e.duration$.subscribe(e=>vp(`duration`,e)),e.availableVideoTracks$.pipe(Y(e=>!!e.length),Q()).subscribe(e=>vp(`tracks`,e)),this.events.fatalError$.subscribe(new yp(`fatalError`)),this.events.managedError$.subscribe(new yp(`managedError`)),e.position$.subscribe(new yp(`position`)),e.currentVideoTrack$.pipe(Z(e=>e?.quality)).subscribe(new yp(`quality`)),this.info.currentVideoBuffer$.subscribe(new yp(`buffer`)),e.isBuffering$.subscribe(new yp(`isBuffering`))].forEach(e=>this.subscription.add(e)),vp(`codecs`,N.video.supportedCodecs)}initTracerSubscription(){let e=By(this.tracer.log.bind(this.tracer)),t=By(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(X()).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(Ny({currentQuality:this.info.currentQuality$,videoBitrate:this.info.videoBitrate$}).pipe(Y(({currentQuality:e,videoBitrate:t})=>!!e&&!!t),X((e,t)=>e.currentQuality===t.currentQuality)).subscribe(e(`currentVideoTrack`))).add(this.info.currentVideoSegmentLength$.pipe(Y(e=>e>0),X()).subscribe(e(`currentVideoSegmentLength`))).add(this.info.currentAudioSegmentLength$.pipe(Y(e=>e>0),X()).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(Ny({currentBuffer:this.info.currentVideoBuffer$.pipe(Y(e=>e.end>0),X((e,t)=>e.end===t.end&&e.start===t.start)),position:this.info.position$.pipe(X())}).pipe(tb(1e3)).subscribe(e(`currentBufferAndPosition`))).add(this.info.duration$.pipe(X()).subscribe(e(`duration`))).add(this.info.isBuffering$.subscribe(e(`isBuffering`))).add(this.info.isLive$.pipe(X()).subscribe(e(`isLive`))).add(this.info.canChangePlaybackSpeed$.pipe(X()).subscribe(e(`canChangePlaybackSpeed`))).add(Ny({liveTime:this.info.liveTime$,liveBufferTime:this.info.liveBufferTime$,position:this.info.position$}).pipe(Y(({liveTime:e,liveBufferTime:t})=>!!e&&!!t),tb(1e3)).subscribe(e(`liveBufferAndPosition`))).add(this.info.atLiveEdge$.pipe(X(),Y(e=>e===!0)).subscribe(e(`atLiveEdge`))).add(this.info.atLiveDurationEdge$.pipe(X(),Y(e=>e===!0)).subscribe(e(`atLiveDurationEdge`))).add(this.info.muted$.pipe(X()).subscribe(e(`muted`))).add(this.info.volume$.pipe(X()).subscribe(e(`volume`))).add(this.info.isEnded$.pipe(X(),Y(e=>e===!0)).subscribe(e(`isEnded`))).add(this.info.availableSources$.subscribe(e(`availableSources`))).add(Ny({throughputEstimation:this.info.throughputEstimation$,rtt:this.info.rttEstimation$}).pipe(Y(({throughputEstimation:e,rtt:t})=>!!e&&!!t),tb(3e3)).subscribe(e(`throughputEstimation`))).add(this.info.isStalled$.subscribe(e(`isStalled`))).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(){var e=this;let t=Vy();if(!t.navigator.wakeLock||!this.tuning.enableWakeLock)return;let n,r=()=>{n?.release(),n=void 0},i=function(){var t=D(function*(){r(),n=yield window.navigator.wakeLock.request(`screen`).catch(t=>{t instanceof DOMException&&t.name===`NotAllowedError`||e.events.managedError$.next({id:`WakeLock`,category:Fy.DOM,message:String(t)})})});return function(){return t.apply(this,arguments)}}();this.subscription.add(Yy(Ly(t.document,`visibilitychange`),Ly(t.document,`fullscreenchange`),this.desiredState.playbackState.stateChangeEnded$).subscribe(()=>{let e=t.document.visibilityState===`visible`,a=this.desiredState.playbackState.getState()===`playing`,o=!!n&&!n?.released;e&&a?o||i():r()})).add(this.events.willDestruct$.subscribe(r))}setVideoTrackIdByQuality(e,t){let n=e.find(e=>e.quality===t);this.tracer.log(`setVideoTrackIdByQuality`,Iy({quality:t,availableTracks:Iy(e),track:Iy(n),isAutoQuality:!n})),n?n.tvDisabled?(this.setAutoQuality(!0),this.events.managedError$.next({id:`SetQualityTrackTvDisabled`,category:Fy.WTF,message:`Set quality was called on track with tvDisabled flag`})):this.desiredState.videoTrack.startTransitionTo(n):this.setAutoQuality(!0)}getActiveLiveDelay(e=!1){return e?this.tuning.live.lowLatencyActiveLiveDelay:this.tuning.live.activeLiveDelay}isNotActiveTabCase(){return Vy().document.hidden&&this.tuning.autoplayOnlyInActiveTab&&!Qo()}}var Mb=`@vkontakte/videoplayer-core@${ne}`;;return{mt,N,Ut,ns,jb,ie,ae,Ab,ne,ce,Db,kb,Mb,le,Eb,re,Ob,se,oe};}();var{mt:_oxcModgg1wbv_mt,N:_oxcModgg1wbv_N,Ut:_oxcModgg1wbv_Ut,ns:_oxcModgg1wbv_ns,jb:_oxcModgg1wbv_jb,ie:_oxcModgg1wbv_ie,ae:_oxcModgg1wbv_ae,Ab:_oxcModgg1wbv_Ab,ne:_oxcModgg1wbv_ne,ce:_oxcModgg1wbv_ce,Db:_oxcModgg1wbv_Db,kb:_oxcModgg1wbv_kb,Mb:_oxcModgg1wbv_Mb,le:_oxcModgg1wbv_le,Eb:_oxcModgg1wbv_Eb,re:_oxcModgg1wbv_re,Ob:_oxcModgg1wbv_Ob,se:_oxcModgg1wbv_se,oe:_oxcModgg1wbv_oe}=_oxcModgg1wbv;export{_oxcModgg1wbv_mt as isMobile,_oxcModgg1wbv_N as clientChecker,_oxcModgg1wbv_Ut as areValidLiveRecordSources,_oxcModgg1wbv_ns as WebmCodecStrategy,_oxcModgg1wbv_jb as VideoQuality,_oxcModgg1wbv_ie as VideoFormat,_oxcModgg1wbv_ae as VideoCodecName,_oxcModgg1wbv_Ab as ValueSubject,_oxcModgg1wbv_ne as VERSION,_oxcModgg1wbv_ce as Surface,_oxcModgg1wbv_Db as Subscription,_oxcModgg1wbv_kb as Subject,_oxcModgg1wbv_Mb as SDK_VERSION,_oxcModgg1wbv_le as PredefinedQualityLimits,_oxcModgg1wbv_Eb as Player,_oxcModgg1wbv_re as PlaybackState,_oxcModgg1wbv_Ob as Observable,_oxcModgg1wbv_se as HttpConnectionType,_oxcModgg1wbv_oe as ChromecastState};
|
|
38
|
+
===== DASH_LIVE DEBUG END ====`),n){let t=e.reduce((e,{time:t,data:n,stack:r})=>{let i=pn(n).map(([e,t])=>`${e}:${t}`).join(`,`);return e+=`${t}: ${i}${r?`: ${r}`:``};`,e},``);tv.push(`core`,{key:`vp_dash_live_debug`,strings:[t]})}};return e.add(this.providerError$.subscribe(e=>{e.id.startsWith(`ProviderHangup`)&&(R({m:`final.0`,e:e.id}),t())})).add(this.noAvailableProvidersError$.subscribe(()=>{R({m:`final.1`}),t()})),e.add(this.mayday.recommendation$.subscribe(({error:e,recommendation:t})=>{let n=this.current$.getValue().destination??`SCREEN`;if(this.handleMaydayRecommendation(t,n),t.action!==`wait`){let t={error:e,currentDestination:n};e.traceAsLog?this.tracer.log(`providerInfo`,ev(t)):this.tracer.error(`providerError`,ev(t))}})),e.add(this.providerError$.subscribe(e=>{let t=this.current$.getValue(),{destination:n}=t;n===`CHROMECAST`?(this.destroyProvider(),this.params.dependencies.chromecastInitializer.stopMedia().then(()=>this.switchToNextProvider(`CHROMECAST`),()=>this.params.dependencies.chromecastInitializer.disconnect())):(this.applyErrorSideEffects(e,t.type),this.mayday.handleError(e))})),e}}var vy=`vk_uvp_throughput`,yy=`vk_uvp_rtt`,by=`one_video_throughput`,xy=`one_video_rtt`,Sy=()=>{let{navigator:e}=_y();if(e)return e.connection},Cy=()=>{let e=Sy()?.downlink;if(hy(e)&&e!==10)return e*1e3},wy=()=>{let e=Sy()?.rtt;if(hy(e)&&e!==3e3)return e},Ty=(e,t,n)=>{let r=n*8;return r/(r/e+t)};class Ey{constructor(e){this.throughput=void 0,this.rtt=void 0,this.subscription=new dy,this.tuningConfig=void 0,this.concurrentDownloads=new Map,this.throughput$=void 0,this.rtt$=void 0,this.rttAdjustedThroughput$=void 0,this.tuningConfig=e;let t=Ey.loadStored(vy,by,e)||(e.useBrowserEstimation?Cy():void 0)||e.initialThroughput,n=Ey.loadStored(yy,xy,e)??(e.useBrowserEstimation?wy():void 0)??0;if(this.throughput$=new fy(t),this.rtt$=new fy(n),this.rttAdjustedThroughput$=new fy(Ty(t,n,e.rttPenaltyRequestSize)),this.throughput=Ep.getSmoothedValue(t,-1,e),this.rtt=Ep.getSmoothedValue(n,1,e),e.useBrowserEstimation){let e=()=>{let e=Cy();e&&this.throughput.next(e);let t=wy();hy(t)&&this.rtt.next(t)},t=Sy();t&&`onchange`in t&&this.subscription.add(cy(t,`change`).subscribe(e)),e()}this.subscription.add(this.throughput.smoothed$.subscribe(t=>{Ey.writeStored(vy,by,t,e)})),this.subscription.add(this.rtt.smoothed$.subscribe(t=>{Ey.writeStored(yy,xy,t,e)})),this.subscription.add(this.throughput.debounced$.pipe(py(e=>Math.round(e))).subscribe(this.throughput$)),this.subscription.add(this.rtt.debounced$.subscribe(this.rtt$)),this.subscription.add(uy({throughput:this.throughput.smoothed$,rtt:this.rtt.smoothed$}).pipe(py(({throughput:t,rtt:n})=>Ty(t,n,e.rttPenaltyRequestSize)),my(t=>{let n=this.rttAdjustedThroughput$.getValue()||0;return Math.abs(t-n)/n>=e.changeThreshold})).subscribe(this.rttAdjustedThroughput$))}destroy(){this.concurrentDownloads.clear(),this.subscription.unsubscribe()}trackXHR(e){let t=0,n=J(),r=new dy;switch(this.subscription.add(r),this.concurrentDownloads.set(e,J()),e.readyState){case 4:break;case 3:case 2:r.add(cy(e,`progress`).pipe(ly()).subscribe(e=>{t=e.loaded,n=J()}));break;case 1:case 0:r.add(cy(e,`loadstart`).subscribe(()=>{t=0,n=J()}));break}r.add(cy(e,`loadend`).subscribe(i=>{if(e.status===200){let e=i.loaded,r=J(),a=e-t,o=r-n;this.addRawSpeed(a,o,1)}this.concurrentDownloads.delete(e),r.unsubscribe()}))}trackStream(e,t=!1){var n=this;let r=e.getReader();if(!r){e.cancel(`Could not get reader`);return}let i=0,a=J(),o=0,s=J(),c=t=>{this.concurrentDownloads.delete(e),r.releaseLock(),e.cancel(`Throughput Estimator error: ${t}`).catch(()=>{})},l=function(){var u=D(function*({done:u,value:d}){if(u){if(!t){let e=n.tuningConfig.measureFastSamples?n.countActiveDownloads(a):1;n.addRawSpeed(i,J()-a,e)}n.concurrentDownloads.delete(e)}else if(d){if(n.tuningConfig.measureFastSamples&&n.concurrentDownloads.set(e,J()),t){let e=J();if(e-s>n.tuningConfig.lowLatency.continuesByteSequenceInterval||e-a>n.tuningConfig.lowLatency.maxLastEvaluationTimeout){let e=s-a;e&&n.addRawSpeed(o,e,1,t),o=d.byteLength,a=J()}else o+=d.byteLength;s=J()}else if(i+=d.byteLength,o+=d.byteLength,o>=n.tuningConfig.streamMinSampleSize&&J()-s>=n.tuningConfig.streamMinSampleTime){let e=n.tuningConfig.measureFastSamples?n.countActiveDownloads(s):n.concurrentDownloads.size;n.addRawSpeed(o,J()-s,e),o=0,s=J()}yield r?.read().then(l,c)}});return function(e){return u.apply(this,arguments)}}();this.concurrentDownloads.set(e,J()),r?.read().then(l,c)}addRawSpeed(e,t,n=1,r=!1){if(this.sanityCheck(e,t,r)){let i=e*8/t*n;if(this.isFastSample(t,r)&&i<this.throughput.smoothed$.getValue())return;this.throughput.next(i)}}countActiveDownloads(e){let t=0;return this.concurrentDownloads.forEach(n=>{n>=e&&t++}),Math.max(t,1)}isFastSample(e,t){return this.tuningConfig.measureFastSamples&&!t&&e<=this.tuningConfig.cacheThresholdSize}addRawThroughput(e){this.throughput.next(e)}addRawRtt(e){this.rtt.next(e)}sanityCheck(e,t,n=!1){let r=e*8/t;return!(!r||!isFinite(r)||r>1e6||r<30||n&&e<1e4||!n&&e<10*1024&&(!this.tuningConfig.measureNonSegmentRequests||t<this.tuningConfig.smallSampleMinDuration+this.rtt$.getValue())||!n&&!this.tuningConfig.measureFastSamples&&t<=this.tuningConfig.cacheThresholdSize)}get throughputVariance$(){return this.throughput.varianceCoefficient$}static loadStored(e,t,n){if(!n.useThroughputTtl){let e=gy.get(t);if(!hy(e))return;let n=parseInt(e,10);return isNaN(n)?void 0:n}let r=gy.get(e)??gy.get(t);if(hy(r))try{let e=JSON.parse(r);if(typeof e==`object`&&e&&typeof e.value==`number`)return Ey.validateStored(e,n)}catch{}}static writeStored(e,t,n,r){if(!r.useThroughputTtl){gy.set(t,n.toFixed(0));return}let i=JSON.stringify({value:Math.round(n),timestamp:Date.now(),networkType:Sy()?.effectiveType});gy.set(e,i)}static validateStored(e,t){if(!t.useThroughputTtl)return e.value;if(Date.now()-e.timestamp>t.storedThroughputTtlMs)return;let n=Sy()?.effectiveType;if(!(n!==void 0&&e.networkType!==void 0&&n!==e.networkType))return e.value}}var Dy=Ey;var Ay={mayday:{playingUnstableThresholdMs:3e3,heuristics:[],hangupGraceDecayFactor:.5,hangupGraceMinTimeoutMs:0,deferAudibleHangupOnHiddenTab:!1},allowPlayerReuse:!1,useWorkerTimers:[],throughputEstimator:{type:`EmaAndMa`,emaAlphaSlow:.2,emaAlphaFast:.7,emaAlpha:.45,basisTrendChangeCount:10,changeThreshold:.05,useBrowserEstimation:!0,initialThroughput:5e3,measureNonSegmentRequests:!1,rttPenaltyRequestSize:1*1024*1024,streamMinSampleSize:10*1024,streamMinSampleTime:300,smallSampleMinDuration:100,cacheThresholdSize:20,measureFastSamples:!1,deviationDepth:20,deviationFactor:.5,lowLatency:{continuesByteSequenceInterval:50,maxLastEvaluationTimeout:300},useThroughputTtl:!1,storedThroughputTtlMs:144e5},autoTrackSelection:{maxBitrateFactorAtEmptyBuffer:4,bitrateFactorAtEmptyBuffer:2.8,minBitrateFactorAtEmptyBuffer:1.5,bitrateAudioFactorAtEmptyBuffer:10,maxBitrateFactorAtFullBuffer:3,bitrateFactorAtFullBuffer:2,minBitrateFactorAtFullBuffer:1,bitrateAudioFactorAtFullBuffer:7,minVideoAudioRatio:5,minAvailableThroughputAudioRatio:5,usePixelRatio:!0,pixelRatioMultiplier:void 0,pixelRatioLogBase:3,pixelRatioLogCoefficients:[1,0,1],limitByContainer:!0,maxContainerSizeFactor:2,containerSizeFactor:1.3,minContainerSizeFactor:1,lazyQualitySwitch:!0,minBufferToSwitchUp:.4,considerPlaybackRate:!1,trackCooldownIncreaseQuality:15e3,trackCooldownDecreaseQuality:3e3,backgroundVideoQualityLimit:ky.Q_4320P,activeVideoAreaThreshold:.1,highQualityLimit:ky.Q_720P,trafficSavingLimit:ky.Q_480P,lowQualityTelemetryLimit:ky.Q_240P},stallsManager:{enabled:!1,ignoreDynamicAbrForShortVideo:!1,stallDurationNoDataBeforeQualityDecrease:500,stallDurationToBeCount:100,stallCountBeforeQualityDecrease:3,resetQualityRestrictionTimeout:1e4,ignoreStallsOnSeek:!0,stallsMetricsHistoryLength:20,maxPossibleStallDuration:3e4,minTvtToBeCounted:120,maxTvtToBeCounted:10800,significantTvt:600,targetStallsDurationPerTvt:1,deviationStallsDurationPerTvt:.5,criticalStallsDurationPerTvt:6,abrAdjustingSpeed:.1,emaAlpha:.6,useTotalStallsDurationPerTvt:!0,useAverageStallsDurationPerTvt:!0,useEmaStallsDurationPerTvt:!0,ignoreStallsOnPause:!1},droppedFramesChecker:{enabled:!1,percentLimit:.1,checkTime:1e3,countLimit:3,tickCountAfterQualityChange:5,qualityUpWaitingTime:5e3,minQualityBanLimit:ky.Q_480P},dash:{forwardBufferTarget:6e4,forwardBufferTargetAuto:6e4,forwardBufferTargetManual:5*6e4,forwardBufferTargetPreload:5e3,audioBufferAheadOfVideoMs:6e4,seekBiasInTheEnd:2e3,maxSegmentDurationLeftToSelectNextSegment:3e3,minSafeBufferThreshold:.5,bufferPruningSafeZone:1e3,segmentRequestSize:1*1024*1024,maxVirtualBufferSize:250*1024*1024,virtualBufferPruneSize:100*1024*1024,representationSwitchForwardBufferGap:6e4,crashOnStallTimeout:25e3,crashOnStallTWithoutDataTimeout:5e3,restoreBufferBeforeCrashTimeout:1e3,enableSubSegmentBufferFeeding:!0,bufferEmptinessTolerance:100,virtualBufferEmptinessTolerance:100,useBufferQueueVerification:!1,useVirtualBufferImplicitSeek:!1,bufferQueueVerificationMinPosition:2e3,useNewRepresentationSwitch:!1,useDelayedRepresentationSwitch:!1,useSmartRepresentationSwitch:!1,brokenSegmentAppendDetection:!1,brokenSegmentAppendTolerance:100,useFetchPriorityHints:!0,enableBaseUrlSupport:!0,maxSegmentRetryCount:5,sourceOpenTimeout:1e3,vktvAbrThrottle:0,timeupdateEventTickThrottle:300,fetcherBufferOptimisation:!0,usePersistentGaps:!1,abrThrottle:0,useVideoElementWaitingCurrentTimeReassign:!0,useVideoElementProgressCurrentTimeReassign:!1,stallWatchdogInterval:100,liveUpdateInterval:1e3,liveStallReinitInterval:3e3,ignoreNetworkErrorsOnLoadInit:!1,bufferTolerance:100,minNativeBufferSize:5e3,removeTimeShiftFromSegment:500,tickMaintainInterval:100,minSafeBufferToPlay:0,useBufferHoldingOnlyOnStall:!0,useAbrPhases:!1,abrVideoRules:[`fits_container_rule`,`throughput_rule`,`buffer_rule`,`stalls_rule`,`upper_limit_rule`,`lower_limit_rule`],abrAudioRules:[`throughput_rule`,`min_audio_for_video_rule`],useFailoverHostsOnAllProviderCrash:!1,saveData3gQualityLimit:ky.Q_240P,saveData2gQualityLimit:ky.Q_144P,useConnectionDataUpperLimit:!1,abandon:{minElapsedMs:1500,bufferSafetyFactor:.8,minLoadedFraction:.15,minBufferToActivateMs:500},bola:{bufferTargetMs:3e4,minBufferMs:1e4,minBufferPerBitrateLevelMs:2e3,placeholderBufferDecay:.99,fallbackSegmentDurationMs:4e3,finiteThresholdMs:6e4,adaptiveBufferTargetK:.5,adaptiveBufferTargetMaxMs:6e4,trimDetectThresholdMs:1e4,antiCascadeDownshift:!0},insufficientBuffer:{thresholdMs:500,gracePeriodAfterPlaybackResetMs:1e3,budgetFactor:.5,fallbackSegmentDurationMs:6e3},videoStreamRepresentaionsFilter:[],filterOnDemandQualityList:!1,dashMaxTvVideoQuality:!1,checkRepresentationCanPlayType:!1,preloadFirstSegment:!1,maxQualityForFirstSegmentPreload:ky.Q_480P,tracerResumeOnUnexpectedStall:!1,tracerResumeOnLowQuality:!1,disableStallWatchdogReinitDecoder:!1,resolveQueueOnDestroy:!1},dashCmafLive:{externalStopControl:!1,keepSilentStallWatchdogWhenNotActive:!1,maxActiveLiveOffset:1e4,normalizedTargetMinBufferSize:6e4,normalizedLiveMinBufferSize:5e3,normalizedActualBufferOffset:1e4,offsetCalculationError:3e3,maxLiveDuration:7200,catchupLiveForMutedInactiveTab:!0,lowLatency:{maxTargetOffset:3e3,maxTargetOffsetDeviation:250,playbackCatchupSpeedup:.05,isActiveOnDefault:!1,bufferEstimator:{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,catchupLiveForMutedInactiveTab:!1,disableLiveSeekWithoutOffsetMarker:!1},downloadBackoff:{bufferThreshold:100,start:100,factor:2,max:3*1e3,random:.1},enableWakeLock:!0,enableTelemetryAtStart:!1,forceFormat:void 0,formatsToAvoid:[],disableChromecast:!1,chromecastReceiverId:`07A4434E`,chromecastPresentationApi:!1,useWebmBigRequest:!1,webmCodec:`vp9`,androidPreferredFormat:`dash`,iosPreferredFormat:`hls`,preferCMAF:!1,preferWebRTC:!1,preferMultiStream:!1,preferHDR:!1,bigRequestMinInitSize:50*1024,bigRequestMinDataSize:1*1024*1024,stripRangeHeader:!0,flushShortLoopedBuffers:!0,insufficientBufferRuleMargin:1e4,seekNearDurationBias:1,dashSeekInSegmentDurationThreshold:180*1e3,dashSeekInSegmentAlwaysSeekDelta:1e4,useDelayedPlaybackHangupWithData:!1,playbackHangupNoDataThreshold:5e3,hangupTimeoutMs:5e3,endGapTolerance:300,stallIgnoreThreshold:33,stallHandlingStrategy:`exclude-threshold`,stallIgnoreOnPause:!1,gapWatchdogInterval:50,requestQuick:!1,useHlsJs:!1,disableHlsOnDesktop:!1,useNativeHLSTextTracks:!1,useNewSwitchTo:!1,alwaysAbortPreviousSwitch:!1,useDashProviderVirtual:!1,useDashProviderVirtualMobile:!1,useDashLiveProviderVirtual:!1,useDashLiveProviderVirtualMobile:!1,useSafariEndlessRequestBugfix:!0,useSafariOptimisticPositionForLiveEdgeBugfix:!1,isAudioDisabled:!1,autoplayOnlyInActiveTab:!0,autoplayOnlyIfVisible:!0,dynamicImportTimeout:5e3,maxPlaybackTransitionInterval:2e4,providerErrorLimit:3,manifestRetryInterval:300,manifestRetryMaxInterval:1e4,manifestRetryMaxCount:10,audioVideoSyncRate:20,webrtc:{connectionRetryMaxNumber:3},useVolumeMultiplier:!1,ignoreAudioRendererError:!1,useEnableSubtitlesParam:!1,useHlsLiveNewTextManager:!1,exposeInternalsToGlobal:!1,hlsLiveNewTextManagerDownloadThreshold:4e3,disableYandexPiP:!1,asyncResolveClientChecker:!1,changePlaybackStateToPausedWhenEnded:!1,suppressExceptionsInObservables:!0,devNullLogEnabled:!1,collectingDecodingInfoEnabled:!1,sendDashLiveDebug:!1,logDashLiveDebug:!1,reuseOwnVideoElement:!1,handleExtendedNetworkErrorsSet:!1,useUrlCacheMechanism:!1,useDurationFromSegments:!0,dropUrlCacheWhenProviderCrashed:!1,ignoreForcePlayResultWhenProviderChanged:!1,hls:{filterOnDemandQualityList:!1},disableSubtitles:!1,audioOnly:!1,clearAudioElementOnDispose:!0,readyOnLoadedMetadata:!1},jy=e=>Oy(e,Ay);var lb=({seekState:e,position$:t})=>ab(e.stateChangeEnded$.pipe(ob(({to:e})=>e.state===`none`?void 0:(e.position??NaN)/1e3),sb(cb)),t.pipe(sb(()=>e.getState().state===`none`)));var db=e=>{let t=typeof e.container==`string`?document.getElementById(e.container):e.container;return ub(t,`Wrong container or containerId {${e.container}}`),t};var mb=(e,t,n,r)=>{e!==void 0&&t.getState()===void 0&&t.getPrevState()===void 0&&n?.getValue().length===0?n.pipe(fb(e=>e.length>0),pb()).subscribe(n=>{n.find(r)&&t.startTransitionTo(e)}):(e===void 0||n?.getValue().find(r))&&t.startTransitionTo(e)};var bb=()=>{let e=`mediaCapabilities`in yb().navigator?xb:Sb,t=hb(D(function*(){let t=yield Promise.all(gb(Cb).map(function(){var t=D(function*([t,n]){return{codec:t,supported:yield e(n)}});return function(e){return t.apply(this,arguments)}}())),n=[N.browser.current,...t.map(e=>JSON.stringify(e))].slice(0,16);return vb.push(`core`,{key:`videoplayer_decoding_info`,strings:n}),t}));return()=>_b(t)},xb=function(){var e=D(function*(e){if(!e)return Promise.resolve({supported:!1});let t={[`channels`in e?`audio`:`video`]:e};return yield yb().navigator.mediaCapabilities.decodingInfo(E({type:`media-source`},t))});return function(t){return e.apply(this,arguments)}}(),Sb=e=>{if(!e)return Promise.resolve({supported:!1});let t=yb().document,n=`channels`in e?t.createElement(`audio`):t.createElement(`video`);return Promise.resolve({supported:n.canPlayType(e?.contentType??``)===`probably`})},Cb={H264:{contentType:`video/mp4; codecs="avc1.4D400C"`,width:720,height:720,bitrate:2886,framerate:30},H265:{contentType:`video/mp4; codecs="hvc1.1.6.L123.B0"`,width:720,height:720,bitrate:2886,framerate:30},VP8:{contentType:`video/webm; codecs="vp8"`,width:720,height:720,bitrate:2886,framerate:30},VP9:{contentType:`video/webm; codecs="vp09.00.10.08"`,width:720,height:720,bitrate:2886,framerate:30},AV1:{contentType:`video/mp4; codecs="av01.0.01M.08"`,width:720,height:720,bitrate:2886,framerate:30},OPUS:{contentType:`audio/ogg; codecs="opus"`,channels:`2`,bitrate:128e3},AAC_LC:{contentType:`audio/mp4; codecs="mp4a.40.2"`,channels:`2`,bitrate:128e3},AC3:{contentType:`audio/mp4; codecs="ac-3"`,channels:`6`,bitrate:128e3},EAC3:{contentType:`audio/mp4; codecs="ec-3"`,channels:`6`,bitrate:128e3},AAC_HE_V1:{contentType:`audio/mp4; codecs="mp4a.40.5"`,channels:`2`,bitrate:128e3},AAC_HE_V2:{contentType:`audio/mp4; codecs="mp4a.40.29"`,channels:`2`,bitrate:128e3},AAC_xHE:{contentType:`audio/mp4; codecs="mp4a.40.42"`,channels:`2`,bitrate:128e3}},wb={playbackState$:void 0,position$:0,duration$:1/0,playedTime$:0,muted$:!1,volume$:1,availableVideoStreams$:[],currentVideoStream$:void 0,availableVideoTracks$:[],availableQualities$:[],availableQualitiesFps$:{},currentQuality$:void 0,isAutoQualityEnabled$:!0,autoQualityLimitingAvailable$:!1,autoQualityLimits$:{},predefinedQualityLimitType$:`unknown`,availableAudioStreams$:[],currentAudioStream$:void 0,availableAudioTracks$:[],isAudioAvailable$:!0,currentPlaybackRate$:1,currentVideoBuffer$:{start:0,end:0},currentAudioBuffer$:{start:0,end:0},totalBufferDuration$:0,currentNativeVideoBuffer$:{start:0,end:0},currentNativeAudioBuffer$:{start:0,end:0},isBuffering$:!0,isStalled$:!1,stallStartTime$:0,isEnded$:!1,isLooped$:!1,isLive$:void 0,isLiveEnded$:null,canPlayLiveTailBuffer$:!1,canChangePlaybackSpeed$:void 0,atLiveEdge$:void 0,atLiveDurationEdge$:void 0,liveTime$:void 0,liveBufferTime$:void 0,liveLatency$:void 0,currentFormat$:void 0,availableTextTracks$:[],currentTextTrack$:void 0,throughputEstimation$:void 0,rttEstimation$:void 0,videoBitrate$:void 0,hostname$:void 0,httpConnectionType$:void 0,httpConnectionReused$:void 0,httpConnectionMetrics$:void 0,httpDownloadMetrics$:void 0,surface$:`none`,chromecastState$:`NOT_AVAILABLE`,chromecastDeviceName$:void 0,intrinsicVideoSize$:void 0,availableSources$:void 0,currentVideoSegmentLength$:0,currentAudioSegmentLength$:0,debugData$:{volume:0,muted:!1}},Tb={audioStream:void 0,autoVideoTrackLimits:{},autoVideoTrackSwitching:!0,currentTextTrack:void 0,externalTextTracks:[],internalTextTracks:[],isLooped:!1,isLowLatency:!1,playbackRate:1,playbackState:`stopped`,seekState:{state:`none`},textTrackCuesSettings:{},videoTrack:void 0,videoStream:void 0,volume:{volume:1,muted:!1}};class Eb{constructor(e={},t=nb.createRootTracer(`fake`),n){this.subscription=new $y,this.persistentSubscription=new $y,this.domContainer=null,this.providerContainer=void 0,this.chromecastInitializer=void 0,this.logger=new qy,this.tracer=void 0,this.abrLogger=this.logger.createComponentLog(`ABR`),this.config=void 0,this.tuning=void 0,this.throughputEstimator=void 0,this.internalsExposure=null,this.isPlaybackStarted=!1,this.suppressWillStop=!1,this.initedAt=void 0,this.hasLiveOffsetByPaused=new rb(!1),this.hasLiveOffsetByPausedTimer=0,this.playerInitRequest=0,this.playerInited=new rb(!1),this.explicitInitialQuality=void 0,this.wasSetStartedQuality=!1,this.desiredState=ue(Tb).reduce((e,[t,n])=>(e[t]=new bn(n),e),{}),this.info=ue(wb).reduce((e,[t,n])=>(e[t]=new rb(n),e),{}),this.events={inited$:new $,ready$:new $,started$:new $,playing$:new $,paused$:new $,stopped$:new $,willReady$:new $,willStart$:new $,willResume$:new $,willPause$:new $,willStop$:new $,willDestruct$:new $,watchCoverageRecord$:new $,watchCoverageLive$:new $,managedError$:new $,fatalError$:new $,fetcherRecoverableError$:new $,ended$:new $,looped$:new $,seeked$:new $,willSeek$:new $,autoplaySoundProhibited$:new $,manifestRequested$:new $,firstBytesManifest$:new $,manifestReceived$:new $,firstBytesRequested$:new $,firstBytesReceived$:new $,firstBytes$:new $,loadedMetadata$:new $,firstFrame$:new $,canplay$:new $,log$:new $,fetcherError$:new $,severeStallOccured$:new $},this.experimental={element$:new rb(void 0),enableDebugTelemetry$:new rb(!1),dumpTelemetry:_p,getCurrentTime$:new rb(null),skipVideoElVolumeSync$:new rb(!1)},this.devNullLog=void 0,this.collectDecodingInfoDestroyCb=void 0,this.hasReleasedTimers=!1,this.doInit=e=>{let{container:t}=e,n=ee(e,T);this.tracer.log(`initVideo`,Iy(n),!0),this.domContainer=db(e),this.chromecastInitializer.contentId=e.meta?.videoId,this.providerContainer=new sy({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,panelSize:e.panelSize,skipVideoElVolumeSync$:this.experimental.skipVideoElVolumeSync$,handleNetworkRecoverableErrorAsProviderError:e.handleNetworkRecoverableErrorAsProviderError}),this.initProviderContainerSubscription(this.providerContainer),this.initStartingVideoTrack(this.providerContainer),this.providerContainer.init(),this.setLiveLowLatency(this.tuning.dashCmafLive.lowLatency.isActiveOnDefault),this.initDebugTelemetry(),this.initWakeLock(),this.playerInited.next(!0),this.devNullLog&&this.tuning.devNullLogEnabled?(Py.subscribe(`core`,this.devNullLog),this.tuning.collectingDecodingInfoEnabled&&(this.collectDecodingInfoDestroyCb=bb())):Py.destroy(`core`)},this.initLogs(),this.tuning=jy(e),this.tracer=t,Qy(this.tuning.useWorkerTimers),this.tuning.suppressExceptionsInObservables&&(de(this.info).forEach(e=>e.setSuppressErrors(!0)),de(this.events).forEach(e=>e.setSuppressErrors(!0)));let r={receiverApplicationId:this.tuning.chromecastReceiverId,isDisabled:this.tuning.disableChromecast,dependencies:{logger:this.logger}};if(this.chromecastInitializer=this.tuning.chromecastPresentationApi?new dn(r):new Oe(r),this.throughputEstimator=new Dy(this.tuning.throughputEstimator),e.exposeInternalsToGlobal&&(this.internalsExposure=new Hy(`core`,Ry(n?.playerId)),this.internalsExposure.expose({player:this,getTimersDiagnostics:zy})),this.initChromecastSubscription(),this.initDesiredStateSubscriptions(),this.initDebugDataSubscriptions(),this.devNullLog=n?.onDevNullLog,Py.create(`core`),Proxy&&Reflect)return new Proxy(this,{get:(e,t,n)=>{let r=Reflect.get(e,t,n);return typeof r==`function`?(...n)=>{try{return r.apply(e,n)}catch(e){let r=n.map(e=>JSON.stringify(e,(e,t)=>{let n=typeof t;return fe([`number`,`string`,`boolean`],n)?t:t===null?null:`<${n}>`})),i=`Player.${String(t)}`,a=`Exception calling ${i} (${r.join(`, `)})`;throw this.events.fatalError$.next({id:i,category:Fy.WTF,message:a,thrown:e}),e}}:r}})}resetDesiredState(){let e=(e,t)=>{e.setState(t)};Object.keys(this.desiredState).forEach(t=>{e(this.desiredState[t],Tb[t])})}reset(){this.subscription.unsubscribe(),this.providerContainer?.destroy(),this.providerContainer=void 0,j.clearTimeout(this.hasLiveOffsetByPausedTimer),this.collectDecodingInfoDestroyCb?.call(this),this.playerInited.next(!1),this.resetDesiredState();let e=(e,t)=>{e.next(t)},t=[`muted$`,`volume$`];Object.keys(this.info).forEach(n=>{fe(t,n)?e(this.info[n],this.info[n].getValue()):e(this.info[n],wb[n])})}initAudio(e){return this.initVideo(E(E({},e),{},{container:e.audioElement??document.createElement(`audio`)}))}initVideo(e){let t=Vy();this.config=e,this.internalsExposure?.expose({config:e,logger:this.logger,tuning:this.tuning}),this.setMuted(this.tuning.isAudioDisabled);let n=()=>{this.tuning.autoplayOnlyIfVisible&&t.requestAnimationFrame?this.playerInitRequest=t.requestAnimationFrame(()=>this.doInit(e)):this.doInit(e)},r=()=>{this.tuning.asyncResolveClientChecker?N.isInited$.pipe(Y(e=>!!e),Q()).subscribe(()=>{console.log(`Core SDK async start`),n()}):n()};return this.isNotActiveTabCase()?(this.tracer.log(`request play from hidden tab`),Ly(t.document,`visibilitychange`).pipe(Q()).subscribe(r)):r(),this}destroy(e){let t=Vy();this.tracer.log(`destroy`),j.clearTimeout(this.hasLiveOffsetByPausedTimer),this.playerInitRequest&&t.cancelAnimationFrame(this.playerInitRequest),this.events.willDestruct$.next(),this.suppressWillStop=e?.reportStop===!1,this.stop(),this.providerContainer?.destroy(),this.throughputEstimator.destroy(),this.chromecastInitializer.destroy(),this.subscription.unsubscribe(),this.persistentSubscription.unsubscribe(),this.tracer.end(),this.internalsExposure?.destroy(),Py.destroy(`core`),this.collectDecodingInfoDestroyCb?.call(this),this.hasReleasedTimers||(this.hasReleasedTimers=!0,Zy())}waitInit(e){this.playerInited.getValue()?e():this.subscription.add(this.playerInited.pipe(Y(e=>!!e),Q()).subscribe(e))}prepare(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`prepare`,{currentPlayBackState:e.getState()}),e.getState()===`stopped`&&e.startTransitionTo(`ready`)}),this}play(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`play`,{currentPlayBackState:e.getState()}),e.getState()!==`playing`&&e.startTransitionTo(`playing`)}),this}pause(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`pause`,{currentPlayBackState:e.getState()}),e.getState()!==`paused`&&e.startTransitionTo(`paused`)}),this}stop(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`stop`,{currentPlayBackState:e.getState()}),e.getState()!==`stopped`&&(e.startTransitionTo(`stopped`),this.tuning.allowPlayerReuse&&this.reset())}),this}seekTime(e,t=!0){return this.waitInit(()=>{let n=this.info.duration$.getValue(),r=this.info.isLive$.getValue(),i=e;e>=n&&!r&&(i=n-this.tuning.seekNearDurationBias),i<0&&!r&&(i=0),this.tracer.log(`seekTime`,{duration:n,isLive:r,time:e,calculatedTime:i,forcePrecise:t}),Number.isFinite(i)&&(this.events.willSeek$.next({from:this.getExactTime(),to:i}),this.desiredState.seekState.setState({state:`requested`,position:i*1e3,forcePrecise:t}))}),this}seekPercent(e){return this.waitInit(()=>{let t=this.info.duration$.getValue();this.tracer.log(`seekPercent`,{percent:e,duration:t}),isFinite(t)&&this.seekTime(Math.abs(t)*e,!1)}),this}setVolume(e,t,n=!1){return this.waitInit(()=>{this.experimental.skipVideoElVolumeSync$.next(n);let r=this.desiredState.volume,i=r.getTransition()?.to.muted??this.info.muted$.getValue(),a=t??(this.tuning.isAudioDisabled||i);this.tracer.log(`setVolume`,{volume:e,isAudioDisabled:this.tuning.isAudioDisabled,chromecastState:this.chromecastInitializer.castState$.getValue(),muted:a}),this.chromecastInitializer.castState$.getValue()===`CONNECTED`&&!(this.chromecastInitializer instanceof dn)?this.chromecastInitializer.setVolume(e):r.startTransitionTo({volume:e,muted:a})}),this}setMuted(e,t=!1,n=!1){return this.waitInit(()=>{this.experimental.skipVideoElVolumeSync$.next(n);let r=this.desiredState.volume,i=this.tuning.isAudioDisabled&&!t||e,a=r.getTransition()?.to.volume??this.info.volume$.getValue();this.tracer.log(`setMuted`,{isMuted:e,nextMuted:i,volume:a,isAudioDisabled:this.tuning.isAudioDisabled,chromecastState:this.chromecastInitializer.castState$.getValue()}),this.chromecastInitializer.castState$.getValue()===`CONNECTED`&&!(this.chromecastInitializer instanceof dn)?this.chromecastInitializer.setMuted(i):r.startTransitionTo({volume:a,muted:i})}),this}setVideoStream(e){return this.waitInit(()=>{this.desiredState.videoStream.startTransitionTo(e)}),this}setAudioStream(e){return this.waitInit(()=>{this.desiredState.audioStream.startTransitionTo(e)}),this}setQuality(e){return this.waitInit(()=>{My(this.providerContainer);let t=this.providerContainer.providerOutput.availableVideoTracks$.getValue();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.wasSetStartedQuality?this.providerContainer.providerOutput.availableVideoTracks$.pipe(Y(e=>e.length>0),Q()).subscribe(t=>{this.setVideoTrackIdByQuality(t,e)}):this.explicitInitialQuality=e:t.length>0&&this.setVideoTrackIdByQuality(t,e)}),this}setAutoQuality(e){return this.waitInit(()=>{this.tracer.log(`setAutoQuality`,{enable:e}),this.desiredState.autoVideoTrackSwitching.startTransitionTo(e)}),this}setAutoQualityLimits(e){return this.waitInit(()=>{this.tracer.log(`setAutoQualityLimits`,Iy(e)),this.desiredState.autoVideoTrackLimits.startTransitionTo(e)}),this}setPredefinedQualityLimits(e){return this.waitInit(()=>{if(this.info.predefinedQualityLimitType$.getValue()===e)return this;let{highQualityLimit:t,trafficSavingLimit:n}=this.tuning.autoTrackSelection,r;switch(e){case`high_quality`:r={min:t,max:void 0};break;case`traffic_saving`:r={max:n,min:void 0};break;default:r={max:void 0,min:void 0}}this.setAutoQualityLimits(r)}),this}setPlaybackRate(e){return this.waitInit(()=>{this.tracer.log(`setPlaybackRate`,{playbackRate:e}),this.desiredState.playbackRate.startTransitionTo(e)}),this}setExternalTextTracks(e){return this.waitInit(()=>{e.length&&this.tracer.log(`setExternalTextTracks`,Iy(e)),this.desiredState.externalTextTracks.startTransitionTo(e.map(e=>E({type:`external`},e)))}),this}selectTextTrack(e){return this.waitInit(()=>{mb(e,this.desiredState.currentTextTrack,this.providerContainer?.providerOutput.availableTextTracks$,t=>t.id===e),this.tracer.log(`selectTextTrack`,{textTrackId:e})}),this}setTextTrackCueSettings(e){return this.waitInit(()=>{this.tracer.log(`setTextTrackCueSettings`,E({},e)),this.desiredState.textTrackCuesSettings.startTransitionTo(e)}),this}setLiveLowLatency(e){let t=this.info.isLive$.getValue(),n=this.desiredState.isLowLatency.getState();return!t||n===e?this:(this.tracer.log(`live switch to low latency `+e),this.desiredState.isLowLatency.setState(e),this.seekTime(0))}setLooped(e){return this.waitInit(()=>{this.tracer.log(`setLooped`,{isLooped:e}),this.desiredState.isLooped.startTransitionTo(e)}),this}toggleChromecast(){this.tracer.log(`toggleChromecast`),this.chromecastInitializer.toggleConnection()}getExactTime(){if(!this.providerContainer)return 0;let e=this.providerContainer.providerOutput.element$.getValue();if(Ky(e))return this.info.position$.getValue();let t=this.desiredState.seekState.getState(),n=t.state===`none`?void 0:t.position;return Gy(n)?n/1e3:e.currentTime}getExactLiveTime(){if(!this.providerContainer)return 0;let e=this.desiredState.seekState.getState(),t=e.state===`none`?void 0:e.position;return(Gy(t)?t:this.info.liveTime$.getValue()??0)/1e3}getAllLogs(){return this.logger.getAllLogs()}getDebugData(){return this.info.debugData$.getValue()}buildDebugData([e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v]){let y={version:ne,volume:Math.round(_*100),muted:v,provider:e,cdn:t,videoSize:n?`${n.width}x${n.height}`:void 0,speed:l,bitrate:u,liveLatency:d,currentVideoSegmentLength:f,currentAudioSegmentLength:p,videoCodec:m?.codec,audioCodec:h?.codec,hdr:m?.hdr,audioLanguage:h?.language,position:g};return r&&a&&(s&&c?(y.videoBuffer=r.end-c,y.nativeVideoBuffer=a.end-c):(y.videoBuffer=Math.max(r.end-g,0),y.nativeVideoBuffer=Math.max(a.end-g,0))),i&&(y.audioBuffer=Math.max(i.end-g,0),o&&(y.nativeAudioBuffer=Math.max(o.end-g,0))),y}setIntrinsicVideoSize(...e){let t={width:e.reduce((e,{width:t})=>e||t||0,0),height:e.reduce((e,{height:t})=>e||t||0,0)};t.width&&t.height&&this.info.intrinsicVideoSize$.next({width:t.width,height:t.height})}initDebugDataSubscriptions(){this.subscription.add(ib([this.info.currentFormat$,this.info.hostname$,this.info.intrinsicVideoSize$,this.info.currentVideoBuffer$,this.info.currentAudioBuffer$,this.info.currentNativeVideoBuffer$,this.info.currentNativeAudioBuffer$,this.info.isLive$,this.info.liveBufferTime$,this.info.throughputEstimation$,this.info.videoBitrate$,this.info.liveLatency$,this.info.currentVideoSegmentLength$,this.info.currentAudioSegmentLength$,this.info.currentVideoStream$,this.info.currentAudioStream$,this.info.position$,this.info.volume$,this.info.muted$]).pipe(Z(e=>this.buildDebugData(e))).subscribe(this.info.debugData$))}initDesiredStateSubscriptions(){this.persistentSubscription.add(Yy(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(Z(e=>e.to)).subscribe(this.info.playbackState$)).add(this.desiredState.isLooped.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(this.info.isLooped$)).add(this.desiredState.playbackRate.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(this.info.currentPlaybackRate$)).add(this.desiredState.autoVideoTrackSwitching.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(this.info.isAutoQualityEnabled$)).add(this.desiredState.autoVideoTrackLimits.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(e=>{this.info.autoQualityLimits$.next(e);let{highQualityLimit:t,trafficSavingLimit:n}=this.tuning.autoTrackSelection;this.info.predefinedQualityLimitType$.next(fa(e,t,n))})).add(Yy(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(Y(({from:e})=>e===`stopped`)).subscribe(()=>{this.initedAt=Xy(),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`ready`:this.events.willReady$.next();break;case`paused`:this.events.willPause$.next();break;case`playing`:this.isPlaybackStarted?this.events.willResume$.next():this.events.willStart$.next();break;case`stopped`:this.suppressWillStop||this.events.willStop$.next();break;default:}}))}initProviderContainerSubscription(e){this.subscription.add(e.providerOutput.willSeekEvent$.subscribe(()=>{let e=this.desiredState.seekState.getState();this.tracer.log(`willSeekEvent`,Iy(e)),e.state===`requested`?this.desiredState.seekState.setState(E(E({},e),{},{state:`applying`})):this.events.managedError$.next({id:`WillSeekIn${e.state}`,category:Fy.WTF,message:`Received unexpeceted willSeek$`})})).add(e.providerOutput.soundProhibitedEvent$.pipe(Q()).subscribe(this.events.autoplaySoundProhibited$)).add(e.providerOutput.severeStallOccurred$.subscribe(this.events.severeStallOccured$)).add(e.providerOutput.seekedEvent$.subscribe(()=>{let e=this.desiredState.seekState.getState();this.tracer.log(`seekedEvent`,Iy(e)),e.state===`applying`&&(this.desiredState.seekState.setState({state:`none`}),this.events.seeked$.next())})).add(e.current$.pipe(Z(e=>e.type)).subscribe(this.info.currentFormat$)).add(e.current$.pipe(Z(e=>e.destination),X()).subscribe(()=>this.isPlaybackStarted=!1)).add(e.providerOutput.availableVideoStreams$.subscribe(this.info.availableVideoStreams$)).add(e.providerOutput.availableVideoTracks$.subscribe(this.info.availableVideoTracks$)).add(Ny({availableVideoTracks:e.providerOutput.availableVideoTracks$,currentVideoStream:e.providerOutput.currentVideoStream$}).pipe(Z(({availableVideoTracks:e,currentVideoStream:t})=>e.filter(e=>t?t.id===e.streamId:!0).map(({quality:e})=>e).sort((e,t)=>Wy(e)?1:Wy(t)?-1:Uy(t,e)?1:-1))).subscribe(this.info.availableQualities$)).add(e.providerOutput.availableVideoTracks$.subscribe(e=>{let t={};for(let n of e)n.fps&&(t[n.quality]=n.fps);this.info.availableQualitiesFps$.next(t)})).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(X()).subscribe(this.info.isAudioAvailable$)).add(e.providerOutput.currentVideoTrack$.pipe(Y(e=>Gy(e))).subscribe(e=>{this.info.currentQuality$.next(e?.quality),this.info.videoBitrate$.next(e?.bitrate)})).add(e.providerOutput.currentVideoSegmentLength$.pipe(X((e,t)=>Math.round(e)===Math.round(t))).subscribe(this.info.currentVideoSegmentLength$)).add(e.providerOutput.currentAudioSegmentLength$.pipe(X((e,t)=>Math.round(e)===Math.round(t))).subscribe(this.info.currentAudioSegmentLength$)).add(e.providerOutput.hostname$.pipe(X()).subscribe(this.info.hostname$)).add(e.providerOutput.httpConnectionType$.pipe(X()).subscribe(this.info.httpConnectionType$)).add(e.providerOutput.httpConnectionReused$.pipe(X()).subscribe(this.info.httpConnectionReused$)).add(e.providerOutput.httpConnectionMetrics$.pipe(X()).subscribe(this.info.httpConnectionMetrics$)).add(e.providerOutput.httpDownloadMetrics$.pipe(X()).subscribe(this.info.httpDownloadMetrics$)).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(e=>{this.desiredState.autoVideoTrackLimits.setState(e??{})})).add(e.providerOutput.currentVideoBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentVideoBuffer$)).add(e.providerOutput.currentAudioBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentAudioBuffer$)).add(e.providerOutput.currentNativeVideoBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentNativeVideoBuffer$)).add(e.providerOutput.currentNativeAudioBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentNativeAudioBuffer$)).add(e.providerOutput.totalBufferDuration$.subscribe(this.info.totalBufferDuration$)).add(e.providerOutput.duration$.subscribe(this.info.duration$)).add(e.providerOutput.playedTime$.subscribe(this.info.playedTime$)).add(e.providerOutput.isBuffering$.subscribe(this.info.isBuffering$)).add(e.providerOutput.isLive$.subscribe(this.info.isLive$)).add(e.providerOutput.isLiveEnded$.pipe(eb(e=>e&&this.stop())).subscribe(this.info.isLiveEnded$)).add(e.providerOutput.canPlayLiveTailBuffer$.subscribe(this.info.canPlayLiveTailBuffer$)).add(e.providerOutput.canChangePlaybackSpeed$.subscribe(this.info.canChangePlaybackSpeed$)).add(e.providerOutput.liveTime$.pipe(X()).subscribe(this.info.liveTime$)).add(e.providerOutput.liveBufferTime$.subscribe(this.info.liveBufferTime$)).add(e.providerOutput.liveLatency$.subscribe(this.info.liveLatency$)).add(Ny({hasLiveOffsetByPaused:Yy(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(Z(e=>e.to),X(),Z(e=>e===`paused`)),isLowLatency:e.providerOutput.isLowLatency$}).subscribe(({hasLiveOffsetByPaused:e,isLowLatency:t})=>{if(j.clearTimeout(this.hasLiveOffsetByPausedTimer),e){this.hasLiveOffsetByPausedTimer=j.setTimeout(()=>{this.hasLiveOffsetByPaused.next(!0)},this.getActiveLiveDelay(t));return}this.hasLiveOffsetByPaused.next(!1)})).add(Ny({atLiveEdge:Ny({isLive:e.providerOutput.isLive$,isLowLatency:e.providerOutput.isLowLatency$,position:lb({seekState:this.desiredState.seekState,position$:e.providerOutput.position$})}).pipe(Z(({isLive:e,position:t,isLowLatency:n})=>{let r=this.getActiveLiveDelay(n);return e&&Math.abs(t)<r/1e3}),X(),eb(e=>e&&this.setPlaybackRate(1))),hasPausedTimeoutCase:this.hasLiveOffsetByPaused}).pipe(Z(({atLiveEdge:e,hasPausedTimeoutCase:t})=>e&&!t)).subscribe(this.info.atLiveEdge$)).add(Ny({isLive:e.providerOutput.isLive$,position:N.browser.isSafari&&this.tuning.useSafariOptimisticPositionForLiveEdgeBugfix?lb({seekState:this.desiredState.seekState,position$:e.providerOutput.position$}):e.providerOutput.position$,duration:e.providerOutput.duration$}).pipe(Z(({isLive:e,position:t,duration:n})=>e&&(Math.abs(n)-Math.abs(t))*1e3<this.tuning.live.activeLiveDelay),X(),eb(e=>e&&this.setPlaybackRate(1))).subscribe(this.info.atLiveDurationEdge$)).add(e.providerOutput.volume$.pipe(Z(e=>e.muted),X()).subscribe(this.info.muted$)).add(e.providerOutput.volume$.pipe(Z(e=>e.volume),X()).subscribe(this.info.volume$)).add(lb({seekState:this.desiredState.seekState,position$:e.providerOutput.position$}).subscribe(this.info.position$)).add(e.providerOutput.seekedEvent$.subscribe(()=>{this.info.isEnded$.getValue()&&this.tuning.changePlaybackStateToPausedWhenEnded&&this.play()})).add(Yy(e.providerOutput.endedEvent$.pipe(Jy(!0)),e.providerOutput.seekedEvent$.pipe(Jy(!1))).pipe(X()).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.providerOutput.updateDurationError$.subscribe(this.events.managedError$)).add(e.providerOutput.fetcherRecoverableError$.subscribe(this.events.fetcherRecoverableError$)).add(e.providerOutput.fetcherError$.pipe(Y(e=>e.category===Fy.FATAL)).subscribe(this.events.fatalError$)).add(e.volumeMultiplierError$.subscribe(this.events.managedError$)).add(e.noAvailableProvidersError$.pipe(Z(({forced:e,input:t,supported:n})=>{let r,i;return e?(r=`NoForcedFormat`,i=`${e} was forced but failed or not available`):n.length?(r=`NoFormats`,i=`All formats failed`):t.length?(r=`NoSupportedFormats`,i=`No supported formats`):(r=`NoInputFormats`,i=`No formats supplied`),My(r),{id:r,category:Fy.VIDEO_PIPELINE,message:i}})).subscribe(this.events.fatalError$)).add(e.providerOutput.element$.subscribe(this.experimental.element$)).add(e.providerOutput.getCurrentTime$.subscribe(this.experimental.getCurrentTime$)).add(e.providerOutput.manifestRequested$.pipe(Q()).subscribe(this.events.manifestRequested$)).add(e.providerOutput.firstBytesManifest$.pipe(Q()).subscribe(this.events.firstBytesManifest$)).add(e.providerOutput.manifestReceived$.pipe(Q()).subscribe(this.events.manifestReceived$)).add(e.providerOutput.firstBytesRequested$.pipe(Q()).subscribe(this.events.firstBytesRequested$)).add(e.providerOutput.firstBytesReceived$.pipe(Q()).subscribe(this.events.firstBytesReceived$)).add(e.providerOutput.firstBytesEvent$.pipe(Q(),Z(e=>e??Xy()-this.initedAt)).subscribe(this.events.firstBytes$)).add(e.providerOutput.loadedMetadataEvent$.subscribe(this.events.loadedMetadata$)).add(e.providerOutput.firstFrameEvent$.pipe(Q(),Z(()=>Xy()-this.initedAt)).subscribe(this.events.firstFrame$)).add(e.providerOutput.canplay$.pipe(Q(),Z(()=>Xy()-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 rb(!1);this.subscription.add(e.providerOutput.seekedEvent$.subscribe(()=>t.next(!1))).add(e.providerOutput.willSeekEvent$.subscribe(()=>t.next(!0)));let n=new rb(!0),r=new $y;this.subscription.add(r).add(e.current$.subscribe(()=>{n.next(!0),r.unsubscribe(),r.add(this.desiredState.playbackState.stateChangeEnded$.pipe(Y(({to:e})=>e===`playing`),Q()).subscribe(()=>n.next(!1)))}));let i=new rb(!1);this.subscription.add(this.desiredState.playbackState.stateChangeEnded$.subscribe(({to:e})=>i.next(e===`paused`)));let a=0,o=0,s=Yy(e.providerOutput.isBuffering$,t,n,i).pipe(Z(()=>{let r=e.providerOutput.isBuffering$.getValue(),a=t.getValue()||n.getValue()||this.tuning.stallIgnoreOnPause&&i.getValue();return r&&!a}),X());this.subscription.add(s.subscribe(e=>{let{stallIgnoreThreshold:t,stallHandlingStrategy:n}=this.tuning;e?(o=Xy(),n===`verbose`&&this.info.stallStartTime$.next(o),a=j.setTimeout(()=>{this.info.isStalled$.next(!0),o&&this.info.stallStartTime$.next(n===`exclude-threshold`?Xy():o)},t)):(j.clearTimeout(a),this.info.isStalled$.next(!1),o=0,this.info.stallStartTime$.next(0))})),this.subscription.add(Yy(e.providerOutput.canplay$,e.providerOutput.firstFrameEvent$,e.providerOutput.firstBytesEvent$).subscribe(()=>{let t=e.providerOutput.element$.getValue();this.setIntrinsicVideoSize({width:t?.videoWidth,height:t?.videoHeight})})).add(e.providerOutput.currentVideoTrack$.subscribe(t=>{var n,r;let i=e.providerOutput.element$.getValue();this.setIntrinsicVideoSize({width:t==null||(n=t.size)==null?void 0:n.width,height:t==null||(r=t.size)==null?void 0:r.height},{width:i?.videoWidth,height:i?.videoHeight})})),this.subscription.add(Yy(e.providerOutput.inPiP$,e.providerOutput.inFullscreen$,e.providerOutput.element$,e.providerOutput.elementVisible$,this.chromecastInitializer.castState$).subscribe(()=>{let t=e.providerOutput.inPiP$.getValue(),n=e.providerOutput.inFullscreen$.getValue(),r=e.providerOutput.element$.getValue(),i=e.providerOutput.elementVisible$.getValue(),a=this.chromecastInitializer.castState$.getValue(),o;o=a===`CONNECTED`?`second_screen`:r?i?t?`pip`:n?`fullscreen`:`inline`:`invisible`:`none`,this.info.surface$.getValue()!==o&&this.info.surface$.next(o)}))}initChromecastSubscription(){this.subscription.add(this.chromecastInitializer.castState$.subscribe(this.info.chromecastState$)),this.subscription.add(this.chromecastInitializer.connection$.pipe(Z(e=>e?.castDevice.friendlyName)).subscribe(this.info.chromecastDeviceName$)),this.subscription.add(this.chromecastInitializer.errorEvent$.subscribe(this.events.managedError$))}initStartingVideoTrack(e){let t=new $y;this.subscription.add(t),this.subscription.add(e.current$.pipe(X((e,t)=>e.provider===t.provider)).subscribe(()=>{t.unsubscribe(),t.add(e.providerOutput.availableVideoTracks$.pipe(Y(e=>e.length>0),Q()).subscribe(e=>{this.setStartingVideoTrack(e)}))}))}setStartingVideoTrack(e){let t;this.wasSetStartedQuality=!0;let n=this.explicitInitialQuality??this.info.currentQuality$.getValue();n&&(t=e.find(({quality:e,tvDisabled:t})=>e===n&&!t),t||this.setAutoQuality(!0)),!t&&(t=Ra({videoTracks:e,tuning:this.tuning,abrLogger:this.abrLogger,tracer:this.tracer,container:this.domContainer?.getBoundingClientRect()??null,panelSize:this.config.panelSize??null,estimatedThroughput:this.throughputEstimator.throughput$.getValue(),limits:this.desiredState.autoVideoTrackLimits.getState(),playbackRate:this.info.currentPlaybackRate$.getValue(),forwardBufferHealth:0})),this.desiredState.videoTrack.startTransitionTo(t),this.info.currentQuality$.next(t.quality),this.info.videoBitrate$.next(t.bitrate)}initLogs(){this.persistentSubscription.add(Yy(this.desiredState.videoTrack.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`quality`,type:`start`}))),this.desiredState.videoTrack.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`quality`,type:`end`}))),this.desiredState.autoVideoTrackSwitching.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`autoQualityEnabled`,type:`start`}))),this.desiredState.autoVideoTrackSwitching.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`autoQualityEnabled`,type:`end`}))),this.desiredState.seekState.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`seekState`,type:`start`}))),this.desiredState.seekState.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`seekState`,type:`end`}))),this.desiredState.playbackState.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`playbackState`,type:`start`}))),this.desiredState.playbackState.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`playbackState`,type:`end`})))).pipe(Z(e=>({component:`desiredState`,message:`[${e.entity} change] ${e.type}: ${JSON.stringify(e.transition)}`}))).subscribe(this.logger.log)),this.persistentSubscription.add(this.logger.log$.subscribe(this.events.log$))}initDebugTelemetry(){let e=this.providerContainer?.providerOutput;My(this.providerContainer),My(e),gp(),this.experimental.enableDebugTelemetry$.next(this.tuning.enableTelemetryAtStart),[this.experimental.enableDebugTelemetry$.subscribe(e=>hp(e)),this.providerContainer.current$.subscribe(({type:e})=>vp(`provider`,e)),e.duration$.subscribe(e=>vp(`duration`,e)),e.availableVideoTracks$.pipe(Y(e=>!!e.length),Q()).subscribe(e=>vp(`tracks`,e)),this.events.fatalError$.subscribe(new yp(`fatalError`)),this.events.managedError$.subscribe(new yp(`managedError`)),e.position$.subscribe(new yp(`position`)),e.currentVideoTrack$.pipe(Z(e=>e?.quality)).subscribe(new yp(`quality`)),this.info.currentVideoBuffer$.subscribe(new yp(`buffer`)),e.isBuffering$.subscribe(new yp(`isBuffering`))].forEach(e=>this.subscription.add(e)),vp(`codecs`,N.video.supportedCodecs)}initTracerSubscription(){let e=By(this.tracer.log.bind(this.tracer)),t=By(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(X()).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(Ny({currentQuality:this.info.currentQuality$,videoBitrate:this.info.videoBitrate$}).pipe(Y(({currentQuality:e,videoBitrate:t})=>!!e&&!!t),X((e,t)=>e.currentQuality===t.currentQuality)).subscribe(e(`currentVideoTrack`))).add(this.info.currentVideoSegmentLength$.pipe(Y(e=>e>0),X()).subscribe(e(`currentVideoSegmentLength`))).add(this.info.currentAudioSegmentLength$.pipe(Y(e=>e>0),X()).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(Ny({currentBuffer:this.info.currentVideoBuffer$.pipe(Y(e=>e.end>0),X((e,t)=>e.end===t.end&&e.start===t.start)),position:this.info.position$.pipe(X())}).pipe(tb(1e3)).subscribe(e(`currentBufferAndPosition`))).add(this.info.duration$.pipe(X()).subscribe(e(`duration`))).add(this.info.isBuffering$.subscribe(e(`isBuffering`))).add(this.info.isLive$.pipe(X()).subscribe(e(`isLive`))).add(this.info.canChangePlaybackSpeed$.pipe(X()).subscribe(e(`canChangePlaybackSpeed`))).add(Ny({liveTime:this.info.liveTime$,liveBufferTime:this.info.liveBufferTime$,position:this.info.position$}).pipe(Y(({liveTime:e,liveBufferTime:t})=>!!e&&!!t),tb(1e3)).subscribe(e(`liveBufferAndPosition`))).add(this.info.atLiveEdge$.pipe(X(),Y(e=>e===!0)).subscribe(e(`atLiveEdge`))).add(this.info.atLiveDurationEdge$.pipe(X(),Y(e=>e===!0)).subscribe(e(`atLiveDurationEdge`))).add(this.info.muted$.pipe(X()).subscribe(e(`muted`))).add(this.info.volume$.pipe(X()).subscribe(e(`volume`))).add(this.info.isEnded$.pipe(X(),Y(e=>e===!0)).subscribe(e(`isEnded`))).add(this.info.availableSources$.subscribe(e(`availableSources`))).add(Ny({throughputEstimation:this.info.throughputEstimation$,rtt:this.info.rttEstimation$}).pipe(Y(({throughputEstimation:e,rtt:t})=>!!e&&!!t),tb(3e3)).subscribe(e(`throughputEstimation`))).add(this.info.isStalled$.subscribe(e(`isStalled`))).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(){var e=this;let t=Vy();if(!t.navigator.wakeLock||!this.tuning.enableWakeLock)return;let n,r=()=>{n?.release(),n=void 0},i=function(){var t=D(function*(){r(),n=yield window.navigator.wakeLock.request(`screen`).catch(t=>{t instanceof DOMException&&t.name===`NotAllowedError`||e.events.managedError$.next({id:`WakeLock`,category:Fy.DOM,message:String(t)})})});return function(){return t.apply(this,arguments)}}();this.subscription.add(Yy(Ly(t.document,`visibilitychange`),Ly(t.document,`fullscreenchange`),this.desiredState.playbackState.stateChangeEnded$).subscribe(()=>{let e=t.document.visibilityState===`visible`,a=this.desiredState.playbackState.getState()===`playing`,o=!!n&&!n?.released;e&&a?o||i():r()})).add(this.events.willDestruct$.subscribe(r))}setVideoTrackIdByQuality(e,t){let n=e.find(e=>e.quality===t);this.tracer.log(`setVideoTrackIdByQuality`,Iy({quality:t,availableTracks:Iy(e),track:Iy(n),isAutoQuality:!n})),n?n.tvDisabled?(this.setAutoQuality(!0),this.events.managedError$.next({id:`SetQualityTrackTvDisabled`,category:Fy.WTF,message:`Set quality was called on track with tvDisabled flag`})):this.desiredState.videoTrack.startTransitionTo(n):this.setAutoQuality(!0)}getActiveLiveDelay(e=!1){return e?this.tuning.live.lowLatencyActiveLiveDelay:this.tuning.live.activeLiveDelay}isNotActiveTabCase(){return Vy().document.hidden&&this.tuning.autoplayOnlyInActiveTab&&!Qo()}}var Mb=`@vkontakte/videoplayer-core@${ne}`;;return{mt,N,Ut,ns,jb,ie,ae,Ab,ne,ce,Db,kb,Mb,le,Eb,re,Ob,se,oe};}();var{mt:_oxcModwhy8yy_mt,N:_oxcModwhy8yy_N,Ut:_oxcModwhy8yy_Ut,ns:_oxcModwhy8yy_ns,jb:_oxcModwhy8yy_jb,ie:_oxcModwhy8yy_ie,ae:_oxcModwhy8yy_ae,Ab:_oxcModwhy8yy_Ab,ne:_oxcModwhy8yy_ne,ce:_oxcModwhy8yy_ce,Db:_oxcModwhy8yy_Db,kb:_oxcModwhy8yy_kb,Mb:_oxcModwhy8yy_Mb,le:_oxcModwhy8yy_le,Eb:_oxcModwhy8yy_Eb,re:_oxcModwhy8yy_re,Ob:_oxcModwhy8yy_Ob,se:_oxcModwhy8yy_se,oe:_oxcModwhy8yy_oe}=_oxcModwhy8yy;export{_oxcModwhy8yy_mt as isMobile,_oxcModwhy8yy_N as clientChecker,_oxcModwhy8yy_Ut as areValidLiveRecordSources,_oxcModwhy8yy_ns as WebmCodecStrategy,_oxcModwhy8yy_jb as VideoQuality,_oxcModwhy8yy_ie as VideoFormat,_oxcModwhy8yy_ae as VideoCodecName,_oxcModwhy8yy_Ab as ValueSubject,_oxcModwhy8yy_ne as VERSION,_oxcModwhy8yy_ce as Surface,_oxcModwhy8yy_Db as Subscription,_oxcModwhy8yy_kb as Subject,_oxcModwhy8yy_Mb as SDK_VERSION,_oxcModwhy8yy_le as PredefinedQualityLimits,_oxcModwhy8yy_Eb as Player,_oxcModwhy8yy_re as PlaybackState,_oxcModwhy8yy_Ob as Observable,_oxcModwhy8yy_se as HttpConnectionType,_oxcModwhy8yy_oe as ChromecastState};
|