@vkontakte/videoplayer-core 2.0.177 → 2.0.178-beta.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.esm.js CHANGED
@@ -1,9 +1,9 @@
1
1
  /**
2
- * @vkontakte/videoplayer-core v2.0.177
3
- * Mon, 28 Sep 2026 16:13:49 GMT
4
- * https://st.mycdn.me/static/vkontakte-videoplayer/2-0-177/doc/
2
+ * @vkontakte/videoplayer-core v2.0.178-beta.0
3
+ * Fri, 02 Oct 2026 10:44:39 GMT
4
+ * https://st.mycdn.me/static/vkontakte-videoplayer/2-0-178/doc/
5
5
  */
6
- import{objectEntries as le}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as ue}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as de}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as fe,assertNonNullable as pe,isNonNullable as me,ValueSubject as he,Subject as ge,Subscription as _e,merge as ve,observableFrom as ye,fromEvent as be,map as xe,tap as Se,filterChanged as Ce,isNullable as we,ErrorCategory as Te}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as ke,combine as Ae,debounce as je,ErrorCategory as Me,filter as Ne,filterChanged as Pe,isNonNullable as Fe,isNullable as Ie,map as Le,Subscription as Re,ValueSubject as ze}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Be,assertNonNullable as Ve,ErrorCategory as He,getHighestQuality as Ue,isNonNullable as We}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Ge}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Ke}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 So}from"@vkontakte/videoplayer-shared/es2015";import{Subject as wo}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as To}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as Do}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Oo}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as Lo}from"@vkontakte/videoplayer-shared/es2015";import{debounce as Ro,filter as zo,fromEvent as Bo,interval as Vo,isHigher as Ho,isInvariantQuality as Uo,isLower as Wo,merge as Go,Subject as Ko,Subscription as qo}from"@vkontakte/videoplayer-shared/es2015";import{map as Xo,Observable as Zo}from"@vkontakte/videoplayer-shared/es2015";import{fromEvent as Qo}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as ts}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as ns}from"@vkontakte/videoplayer-shared/es2015";import{filter as Ts,filterChanged as Es,isNonNullable as Ds}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Os,assertNonNullable as ks,debounce as As,ErrorCategory as js,filter as Ms,filterChanged as Ns,fromEvent as Ps,isNonNullable as Fs,isNullable as Is,map as Ls,mapTo as Rs,merge as zs,observableFrom as Bs,once as Vs,Subscription as Hs,throttle as Us}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Ws}from"@vkontakte/videoplayer-shared/es2015";import{videoSizeToQuality as Gs}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as $s,now as ec,once as tc,Subscription as nc,ValueSubject as rc,isNonNullable as ic,safeStorage as ac,filterChanged as oc}from"@vkontakte/videoplayer-shared/es2015";import{combine as hc,map as gc,observeElementSize as _c,Subscription as vc,ValueSubject as yc,noop as bc}from"@vkontakte/videoplayer-shared/es2015";import{filter as Sc,map as Cc,once as wc}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Ec}from"@vkontakte/videoplayer-shared/es2015";import{filterChanged as Dc,isNonNullable as Oc,isNullable as kc,now as Ac,once as jc,Subscription as Mc,ValueSubject as Nc}from"@vkontakte/videoplayer-shared/es2015";import{isInvariantQuality as Fc,isNonNullable as Ic,isNullable as Lc,Subscription as Rc,ValueSubject as zc}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Bc}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as Xc}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as Zc}from"@vkontakte/videoplayer-shared/es2015";import{stringTrimStart as Qc}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as $c}from"@vkontakte/videoplayer-shared/es2015";import{abortable as tl,assertNonNullable as nl,ErrorCategory as rl,ErrorOrigin as il,filter as al,filterChanged as ol,flattenObject as sl,fromEvent as cl,getTraceSubscriptionMethod as ll,getWindow as ul,interval as dl,isNonNullable as R,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 _oxcModof7c8r=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,O=m,ee=_,k=v,te=`2.0.177`,ne;(e=>{e.STOPPED=`stopped`,e.READY=`ready`,e.PLAYING=`playing`,e.PAUSED=`paused`})(ne||={});var re;(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`})(re||={});var ie;(e=>{e.AV1=`av1`,e.VP9=`vp9`,e.AVC1=`avc1`,e.HEV1=`hev1`})(ie||={});var ae;(e=>{e.NOT_AVAILABLE=`NOT_AVAILABLE`,e.AVAILABLE=`AVAILABLE`,e.CONNECTING=`CONNECTING`,e.CONNECTED=`CONNECTED`})(ae||={});var oe;(e=>{e.HTTP1=`http1`,e.HTTP2=`http2`,e.QUIC=`quic`})(oe||={});var se;(e=>{e.NONE=`none`,e.INLINE=`inline`,e.FULLSCREEN=`fullscreen`,e.SECOND_SCREEN=`second_screen`,e.PIP=`pip`,e.INVISIBLE=`invisible`})(se||={});var ce;(e=>{e.TRAFFIC_SAVING=`traffic_saving`,e.HIGH_QUALITY=`high_quality`,e.UNKNOWN=`unknown`})(ce||={});var Ee=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 De{constructor(e){this.connection$=new he(void 0),this.castState$=new he(`NOT_AVAILABLE`),this.errorEvent$=new ge,this.contentId=void 0,this.realCastState$=new he(`NOT_AVAILABLE`),this.subscription=new _e,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=me(window.chrome?.cast),r=!!window.__onGCastApiAvailable;n?this.initializeCastApi():(window.__onGCastApiAvailable=e=>{delete window.__onGCastApiAvailable,e&&!this.isDestroyed&&this.initializeCastApi()},r||Ee(`https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1`).catch(()=>this.errorEvent$.next({id:`ChromecastLoading`,category:Te.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(){me(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();we(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();we(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(be(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 fe(e.sessionState)}})).add(ve(be(n,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(Se(e=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(e)}`})}),xe(e=>e.castState)),ye([n.getCastState()])).pipe(Ce(),xe(Oe),Se(e=>{this.log({message:`realCastState$: ${e}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(r=>{let i=r===`CONNECTED`,a=me(this.connection$.getValue());if(i&&!a){var o;let r=n.getCurrentSession();pe(r);let i=r.getCastDevice(),a=(o=r.getMediaSession())==null||(o=o.media)==null?void 0:o.contentId;(we(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`?me(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:Te.EXTERNAL_API,message:`[initializeCastApi] failed`,thrown:e})}}}var Oe=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 fe(e)}};var qe=`_offset_p`,Je=e=>{if(Ge(e,qe))return!0;try{return new URL(e).searchParams.has(`offset_p`)}catch{return!1}},Ye=(e,t=0,n=0)=>{switch(n){case 0:return e.replace(qe,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:Ke(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:Ke(t)}},Ze=e=>{let{source:t,format:n,meta:r,output:i}=e,a,o,s;switch(n){case`MPEG`:{let e=t[n];Ve(e);let r=Ue(Object.keys(e));Ve(r);let i=e[r];Ve(i),a=i,o=`video/mp4`,s=Qe();break}case`HLS`:case`HLS_FMP4`:case`HLS_ONDEMAND`:{let e=t[n];Ve(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];Ve(e),a=e.url,o=`application/dash+xml`,s=Qe();break}case`DASH_LIVE_CMAF`:{let e=t[n];Ve(e),a=e.url,o=`application/dash+xml`,s=$e();break}case`HLS_LIVE`:case`HLS_LIVE_CMAF`:{let e=t[n];Ve(e),a=Ye(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:He.VIDEO_PIPELINE,message:e,thrown:t}),t}case`DASH`:case`DASH_LIVE_WEBM`:throw Error(`${n} is no longer supported`);default:return Be(n)}let c=et(r.videoId??a,o);c.contentUrl=a,c.streamType=s,c.metadata=tt();let{title:l,subtitle:u}=r;return We(l)&&(c.metadata.title=l),We(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 Re,this.log=void 0,this.params=void 0,this.sessionId$=new ze(null),this.mediaSessionId$=new ze(null),this.contentId$=new ze(null),this.progressTicker=void 0,this.isMobile=mt(),this.mobileVolumeState={muted:!1,volume:0},this.media=null,this.lastRequestedVolume=null,this.syncMediaState=e=>{if(Ie(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;Fe(n)&&this.params.output.duration$.next(Math.max(0,n));let r=e.currentTime;if(Fe(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:Me.WTF,id:`ChromecastPresentationApiProvider`,message:e?.message??`Unknown error`,thrown:e})};this.subscription.add(this.params.chromecastConnector.message$.pipe(Ne(e=>!!e)).subscribe(e=>{this.handleMessage(e)},e)),this.subscription.add(this.sessionId$.pipe(Ne(Fe),Pe(),je(0)).subscribe(()=>{this.loadMedia()},e));let t=this.contentId$.pipe(Pe(),Le(Boolean));this.subscription.add(Ae({seekState:this.params.desiredState.seekState.stateChangeEnded$,mediaLoaded:t}).pipe(Ne(({mediaLoaded:e})=>e)).subscribe(()=>{let e=this.params.desiredState.seekState.getState();e.state===`requested`&&this.seek(e.position/1e3)},e));let n=Ae({playbackState:this.params.desiredState.playbackState.stateChangeStarted$,mediaLoaded:t});this.subscription.add(n.pipe(Ne(({mediaLoaded:e})=>e),je(0)).subscribe(()=>{this.syncPlayback()},e)),this.subscription.add(n.pipe(Ne(({mediaLoaded:e,playbackState:{from:t,to:n}})=>!e&&t===`stopped`&&n===`playing`)).subscribe(()=>{this.loadMedia()},e)),this.subscription.add(Ae({volumeState:this.params.desiredState.volume.stateChangeStarted$.pipe(je(30)),mediaLoaded:t}).pipe(Ne(({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();ke(e,`play on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`PLAY`,mediaSessionId:e,customData:null})}pause(){let e=this.mediaSessionId$.getValue();ke(e,`pause on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`PAUSE`,mediaSessionId:e,customData:null})}seek(e){let t=this.mediaSessionId$.getValue();ke(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(Ie(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 le}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as ue}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as de}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as fe,assertNonNullable as pe,isNonNullable as me,ValueSubject as he,Subject as ge,Subscription as _e,merge as ve,observableFrom as ye,fromEvent as be,map as xe,tap as Se,filterChanged as Ce,isNullable as we,ErrorCategory as Te}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as ke,combine as Ae,debounce as je,ErrorCategory as Me,filter as Ne,filterChanged as Pe,isNonNullable as Fe,isNullable as Ie,map as Le,Subscription as Re,ValueSubject as ze}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Be,assertNonNullable as Ve,ErrorCategory as He,getHighestQuality as Ue,isNonNullable as We}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Ge}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Ke}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 So}from"@vkontakte/videoplayer-shared/es2015";import{Subject as wo}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as To}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as Do}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Oo}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as Lo}from"@vkontakte/videoplayer-shared/es2015";import{debounce as Ro,filter as zo,fromEvent as Bo,interval as Vo,isHigher as Ho,isInvariantQuality as Uo,isLower as Wo,merge as Go,Subject as Ko,Subscription as qo}from"@vkontakte/videoplayer-shared/es2015";import{map as Xo,Observable as Zo}from"@vkontakte/videoplayer-shared/es2015";import{fromEvent as Qo}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as ts}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as ns}from"@vkontakte/videoplayer-shared/es2015";import{filter as Ts,filterChanged as Es,isNonNullable as Ds}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Os,assertNonNullable as ks,debounce as As,ErrorCategory as js,filter as Ms,filterChanged as Ns,fromEvent as Ps,isNonNullable as Fs,isNullable as Is,map as Ls,mapTo as Rs,merge as zs,observableFrom as Bs,once as Vs,Subscription as Hs,throttle as Us}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Ws}from"@vkontakte/videoplayer-shared/es2015";import{videoSizeToQuality as Gs}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as $s,now as ec,once as tc,Subscription as nc,ValueSubject as rc,isNonNullable as ic,safeStorage as ac,filterChanged as oc}from"@vkontakte/videoplayer-shared/es2015";import{combine as hc,map as gc,observeElementSize as _c,Subscription as vc,ValueSubject as yc,noop as bc}from"@vkontakte/videoplayer-shared/es2015";import{filter as Sc,map as Cc,once as wc}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Ec}from"@vkontakte/videoplayer-shared/es2015";import{filterChanged as Dc,isNonNullable as Oc,isNullable as kc,now as Ac,once as jc,Subscription as Mc,ValueSubject as Nc}from"@vkontakte/videoplayer-shared/es2015";import{isInvariantQuality as Fc,isNonNullable as Ic,isNullable as Lc,Subscription as Rc,ValueSubject as zc}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Bc}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as Xc}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as Zc}from"@vkontakte/videoplayer-shared/es2015";import{stringTrimStart as Qc}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as $c}from"@vkontakte/videoplayer-shared/es2015";import{abortable as tl,assertNonNullable as nl,ErrorCategory as rl,ErrorOrigin as il,filter as al,filterChanged as ol,flattenObject as sl,fromEvent as cl,getTraceSubscriptionMethod as ll,getWindow as ul,interval as dl,isNonNullable as R,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 _oxcModguorp6=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,O=m,ee=_,k=v,te=`2.0.178-beta.0`,ne;(e=>{e.STOPPED=`stopped`,e.READY=`ready`,e.PLAYING=`playing`,e.PAUSED=`paused`})(ne||={});var re;(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`})(re||={});var ie;(e=>{e.AV1=`av1`,e.VP9=`vp9`,e.AVC1=`avc1`,e.HEV1=`hev1`})(ie||={});var ae;(e=>{e.NOT_AVAILABLE=`NOT_AVAILABLE`,e.AVAILABLE=`AVAILABLE`,e.CONNECTING=`CONNECTING`,e.CONNECTED=`CONNECTED`})(ae||={});var oe;(e=>{e.HTTP1=`http1`,e.HTTP2=`http2`,e.QUIC=`quic`})(oe||={});var se;(e=>{e.NONE=`none`,e.INLINE=`inline`,e.FULLSCREEN=`fullscreen`,e.SECOND_SCREEN=`second_screen`,e.PIP=`pip`,e.INVISIBLE=`invisible`})(se||={});var ce;(e=>{e.TRAFFIC_SAVING=`traffic_saving`,e.HIGH_QUALITY=`high_quality`,e.UNKNOWN=`unknown`})(ce||={});var Ee=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 De{constructor(e){this.connection$=new he(void 0),this.castState$=new he(`NOT_AVAILABLE`),this.errorEvent$=new ge,this.contentId=void 0,this.realCastState$=new he(`NOT_AVAILABLE`),this.subscription=new _e,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=me(window.chrome?.cast),r=!!window.__onGCastApiAvailable;n?this.initializeCastApi():(window.__onGCastApiAvailable=e=>{delete window.__onGCastApiAvailable,e&&!this.isDestroyed&&this.initializeCastApi()},r||Ee(`https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1`).catch(()=>this.errorEvent$.next({id:`ChromecastLoading`,category:Te.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(){me(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();we(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();we(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(be(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 fe(e.sessionState)}})).add(ve(be(n,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(Se(e=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(e)}`})}),xe(e=>e.castState)),ye([n.getCastState()])).pipe(Ce(),xe(Oe),Se(e=>{this.log({message:`realCastState$: ${e}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(r=>{let i=r===`CONNECTED`,a=me(this.connection$.getValue());if(i&&!a){var o;let r=n.getCurrentSession();pe(r);let i=r.getCastDevice(),a=(o=r.getMediaSession())==null||(o=o.media)==null?void 0:o.contentId;(we(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`?me(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:Te.EXTERNAL_API,message:`[initializeCastApi] failed`,thrown:e})}}}var Oe=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 fe(e)}};var qe=`_offset_p`,Je=e=>{if(Ge(e,qe))return!0;try{return new URL(e).searchParams.has(`offset_p`)}catch{return!1}},Ye=(e,t=0,n=0)=>{switch(n){case 0:return e.replace(qe,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:Ke(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:Ke(t)}},Ze=e=>{let{source:t,format:n,meta:r,output:i}=e,a,o,s;switch(n){case`MPEG`:{let e=t[n];Ve(e);let r=Ue(Object.keys(e));Ve(r);let i=e[r];Ve(i),a=i,o=`video/mp4`,s=Qe();break}case`HLS`:case`HLS_FMP4`:case`HLS_ONDEMAND`:{let e=t[n];Ve(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];Ve(e),a=e.url,o=`application/dash+xml`,s=Qe();break}case`DASH_LIVE_CMAF`:{let e=t[n];Ve(e),a=e.url,o=`application/dash+xml`,s=$e();break}case`HLS_LIVE`:case`HLS_LIVE_CMAF`:{let e=t[n];Ve(e),a=Ye(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:He.VIDEO_PIPELINE,message:e,thrown:t}),t}case`DASH`:case`DASH_LIVE_WEBM`:throw Error(`${n} is no longer supported`);default:return Be(n)}let c=et(r.videoId??a,o);c.contentUrl=a,c.streamType=s,c.metadata=tt();let{title:l,subtitle:u}=r;return We(l)&&(c.metadata.title=l),We(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 Re,this.log=void 0,this.params=void 0,this.sessionId$=new ze(null),this.mediaSessionId$=new ze(null),this.contentId$=new ze(null),this.progressTicker=void 0,this.isMobile=mt(),this.mobileVolumeState={muted:!1,volume:0},this.media=null,this.lastRequestedVolume=null,this.syncMediaState=e=>{if(Ie(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;Fe(n)&&this.params.output.duration$.next(Math.max(0,n));let r=e.currentTime;if(Fe(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:Me.WTF,id:`ChromecastPresentationApiProvider`,message:e?.message??`Unknown error`,thrown:e})};this.subscription.add(this.params.chromecastConnector.message$.pipe(Ne(e=>!!e)).subscribe(e=>{this.handleMessage(e)},e)),this.subscription.add(this.sessionId$.pipe(Ne(Fe),Pe(),je(0)).subscribe(()=>{this.loadMedia()},e));let t=this.contentId$.pipe(Pe(),Le(Boolean));this.subscription.add(Ae({seekState:this.params.desiredState.seekState.stateChangeEnded$,mediaLoaded:t}).pipe(Ne(({mediaLoaded:e})=>e)).subscribe(()=>{let e=this.params.desiredState.seekState.getState();e.state===`requested`&&this.seek(e.position/1e3)},e));let n=Ae({playbackState:this.params.desiredState.playbackState.stateChangeStarted$,mediaLoaded:t});this.subscription.add(n.pipe(Ne(({mediaLoaded:e})=>e),je(0)).subscribe(()=>{this.syncPlayback()},e)),this.subscription.add(n.pipe(Ne(({mediaLoaded:e,playbackState:{from:t,to:n}})=>!e&&t===`stopped`&&n===`playing`)).subscribe(()=>{this.loadMedia()},e)),this.subscription.add(Ae({volumeState:this.params.desiredState.volume.stateChangeStarted$.pipe(je(30)),mediaLoaded:t}).pipe(Ne(({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();ke(e,`play on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`PLAY`,mediaSessionId:e,customData:null})}pause(){let e=this.mediaSessionId$.getValue();ke(e,`pause on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`PAUSE`,mediaSessionId:e,customData:null})}seek(e){let t=this.mediaSessionId$.getValue();ke(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(Ie(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,reuseOwnVideoElementOnBackgroundTabOnly:i})=>{let a,o=e.querySelector(`video`),s=!!o,c=zn().document.querySelector(`body > video[data-role=screen]`)||void 0;r&&!i?Gn[Un]=c:(c?.remove(),delete Gn[Un]),o?(a=o,Ln(a)):c&&c===Gn[Un]?(a=c,Xn(a,e)):(a=zn().document.createElement(`video`),e.appendChild(a),r&&!i&&(Gn[Un]=a)),Kn.set(a,s);let l=new Bn;return l.add(Jn(a,t)),qn.set(a,l),a.setAttribute(`crossorigin`,`anonymous`),a.setAttribute(`playsinline`,`playsinline`),n&&a.setAttribute(`x-yandex-pip`,`false`),a.controls=!1,a.setAttribute(`poster`,`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=`),a},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,reuseOwnVideoElementOnBackgroundTabOnly:n}){qn.get(e)?.unsubscribe(),qn.delete(e);let r=Kn.get(e);Kn.delete(e),Ln(e),t&&!n&&!r&&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(O(e,b)).map(([e,t])=>` ${e}: ${t}`).join(`
9
9
  `)}
@@ -35,4 +35,4 @@ ${ri(O(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`)&&(L({m:`final.0`,e:e.id}),t())})).add(this.noAvailableProvidersError$.subscribe(()=>{L({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,cacheHitTtfbMaxMs:10,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:1e4,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,stallWatchdogInterval:100,liveUpdateInterval:1e3,liveStallReinitInterval:3e3,ignoreNetworkErrorsOnLoadInit:!1,bufferTolerance:100,useBufferGapWatchdog:!1,jumpToFirstNativeBufferFrame:!1,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,recoverStuckSegmentLoading:!1,enableMaintainNativeBufferSwitchMutexBypass:!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,useAbortableGeneratorReturnOnAbort:!1,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=le(Tb).reduce((e,[t,n])=>(e[t]=new bn(n),e),{}),this.info=le(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=O(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&&(ue(this.info).forEach(e=>e.setSuppressErrors(!0)),ue(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 De(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 de([`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=>{de(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(e.isMuted??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:te,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&&!$o()}}var Mb=`@vkontakte/videoplayer-core@${te}`;;return{mt,N,Ut,rs,jb,re,ie,Ab,te,se,Db,kb,Mb,ce,Eb,ne,Ob,oe,ae};}();var{mt:_oxcModof7c8r_mt,N:_oxcModof7c8r_N,Ut:_oxcModof7c8r_Ut,rs:_oxcModof7c8r_rs,jb:_oxcModof7c8r_jb,re:_oxcModof7c8r_re,ie:_oxcModof7c8r_ie,Ab:_oxcModof7c8r_Ab,te:_oxcModof7c8r_te,se:_oxcModof7c8r_se,Db:_oxcModof7c8r_Db,kb:_oxcModof7c8r_kb,Mb:_oxcModof7c8r_Mb,ce:_oxcModof7c8r_ce,Eb:_oxcModof7c8r_Eb,ne:_oxcModof7c8r_ne,Ob:_oxcModof7c8r_Ob,oe:_oxcModof7c8r_oe,ae:_oxcModof7c8r_ae}=_oxcModof7c8r;export{_oxcModof7c8r_mt as isMobile,_oxcModof7c8r_N as clientChecker,_oxcModof7c8r_Ut as areValidLiveRecordSources,_oxcModof7c8r_rs as WebmCodecStrategy,_oxcModof7c8r_jb as VideoQuality,_oxcModof7c8r_re as VideoFormat,_oxcModof7c8r_ie as VideoCodecName,_oxcModof7c8r_Ab as ValueSubject,_oxcModof7c8r_te as VERSION,_oxcModof7c8r_se as Surface,_oxcModof7c8r_Db as Subscription,_oxcModof7c8r_kb as Subject,_oxcModof7c8r_Mb as SDK_VERSION,_oxcModof7c8r_ce as PredefinedQualityLimits,_oxcModof7c8r_Eb as Player,_oxcModof7c8r_ne as PlaybackState,_oxcModof7c8r_Ob as Observable,_oxcModof7c8r_oe as HttpConnectionType,_oxcModof7c8r_ae 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`)&&(L({m:`final.0`,e:e.id}),t())})).add(this.noAvailableProvidersError$.subscribe(()=>{L({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,cacheHitTtfbMaxMs:10,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:1e4,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,stallWatchdogInterval:100,liveUpdateInterval:1e3,liveStallReinitInterval:3e3,ignoreNetworkErrorsOnLoadInit:!1,bufferTolerance:100,useBufferGapWatchdog:!1,jumpToFirstNativeBufferFrame:!1,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,recoverStuckSegmentLoading:!1,enableMaintainNativeBufferSwitchMutexBypass:!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,useAbortableGeneratorReturnOnAbort:!1,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,reuseOwnVideoElementOnBackgroundTabOnly:!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=le(Tb).reduce((e,[t,n])=>(e[t]=new bn(n),e),{}),this.info=le(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=O(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&&(ue(this.info).forEach(e=>e.setSuppressErrors(!0)),ue(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 De(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 de([`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=>{de(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(e.isMuted??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:te,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&&!$o()}}var Mb=`@vkontakte/videoplayer-core@${te}`;;return{mt,N,Ut,rs,jb,re,ie,Ab,te,se,Db,kb,Mb,ce,Eb,ne,Ob,oe,ae};}();var{mt:_oxcModguorp6_mt,N:_oxcModguorp6_N,Ut:_oxcModguorp6_Ut,rs:_oxcModguorp6_rs,jb:_oxcModguorp6_jb,re:_oxcModguorp6_re,ie:_oxcModguorp6_ie,Ab:_oxcModguorp6_Ab,te:_oxcModguorp6_te,se:_oxcModguorp6_se,Db:_oxcModguorp6_Db,kb:_oxcModguorp6_kb,Mb:_oxcModguorp6_Mb,ce:_oxcModguorp6_ce,Eb:_oxcModguorp6_Eb,ne:_oxcModguorp6_ne,Ob:_oxcModguorp6_Ob,oe:_oxcModguorp6_oe,ae:_oxcModguorp6_ae}=_oxcModguorp6;export{_oxcModguorp6_mt as isMobile,_oxcModguorp6_N as clientChecker,_oxcModguorp6_Ut as areValidLiveRecordSources,_oxcModguorp6_rs as WebmCodecStrategy,_oxcModguorp6_jb as VideoQuality,_oxcModguorp6_re as VideoFormat,_oxcModguorp6_ie as VideoCodecName,_oxcModguorp6_Ab as ValueSubject,_oxcModguorp6_te as VERSION,_oxcModguorp6_se as Surface,_oxcModguorp6_Db as Subscription,_oxcModguorp6_kb as Subject,_oxcModguorp6_Mb as SDK_VERSION,_oxcModguorp6_ce as PredefinedQualityLimits,_oxcModguorp6_Eb as Player,_oxcModguorp6_ne as PlaybackState,_oxcModguorp6_Ob as Observable,_oxcModguorp6_oe as HttpConnectionType,_oxcModguorp6_ae as ChromecastState};