@vkontakte/videoplayer-statistics 1.0.80-dev.96cce6f5.0 → 1.0.80-dev.fba07f4d.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es2015.cjs.js +3 -3
- package/es2015.esm.js +3 -3
- package/es2018.cjs.js +3 -3
- package/es2018.esm.js +3 -3
- package/es2024.cjs.js +3 -3
- package/es2024.esm.js +3 -3
- package/esnext.cjs.js +3 -3
- package/esnext.esm.js +3 -3
- package/evergreen.esm.js +3 -3
- package/package.json +3 -3
package/esnext.esm.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @vkontakte/videoplayer-statistics v1.0.80-dev.
|
|
3
|
-
*
|
|
2
|
+
* @vkontakte/videoplayer-statistics v1.0.80-dev.fba07f4d.0
|
|
3
|
+
* Mon, 23 Jun 2025 13:00:39 GMT
|
|
4
4
|
* https://st.mycdn.me/static/vkontakte-videoplayer/1-0-80/doc/
|
|
5
5
|
*/
|
|
6
|
-
var jl=Object.create;var Yi=Object.defineProperty;var Fl=Object.getOwnPropertyDescriptor;var Bl=Object.getOwnPropertyNames;var Ul=Object.getPrototypeOf,Vl=Object.prototype.hasOwnProperty;var n=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var Kl=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Bl(e))!Vl.call(r,o)&&o!==t&&Yi(r,o,{get:()=>e[o],enumerable:!(i=Fl(e,o))||i.enumerable});return r};var D=(r,e,t)=>(t=r!=null?jl(Ul(r)):{},Kl(e||!r||!r.__esModule?Yi(t,"default",{value:r,enumerable:!0}):t,r));var y=n((Ur,Ji)=>{"use strict";var ge=function(r){return r&&r.Math===Math&&r};Ji.exports=ge(typeof globalThis=="object"&&globalThis)||ge(typeof window=="object"&&window)||ge(typeof self=="object"&&self)||ge(typeof global=="object"&&global)||ge(typeof Ur=="object"&&Ur)||function(){return this}()||Function("return this")()});var E=n((uy,Xi)=>{"use strict";Xi.exports=function(r){try{return!!r()}catch{return!0}}});var me=n((cy,Zi)=>{"use strict";var Gl=E();Zi.exports=!Gl(function(){var r=function(){}.bind();return typeof r!="function"||r.hasOwnProperty("prototype")})});var Vr=n((ly,io)=>{"use strict";var Wl=me(),to=Function.prototype,eo=to.apply,ro=to.call;io.exports=typeof Reflect=="object"&&Reflect.apply||(Wl?ro.bind(eo):function(){return ro.apply(eo,arguments)})});var P=n((fy,ao)=>{"use strict";var oo=me(),no=Function.prototype,Kr=no.call,Hl=oo&&no.bind.bind(Kr,Kr);ao.exports=oo?Hl:function(r){return function(){return Kr.apply(r,arguments)}}});var be=n((dy,uo)=>{"use strict";var so=P(),zl=so({}.toString),Ql=so("".slice);uo.exports=function(r){return Ql(zl(r),8,-1)}});var Gr=n((py,co)=>{"use strict";var Yl=be(),Jl=P();co.exports=function(r){if(Yl(r)==="Function")return Jl(r)}});var I=n((vy,lo)=>{"use strict";var Wr=typeof document=="object"&&document.all;lo.exports=typeof Wr>"u"&&Wr!==void 0?function(r){return typeof r=="function"||r===Wr}:function(r){return typeof r=="function"}});var T=n((hy,fo)=>{"use strict";var Xl=E();fo.exports=!Xl(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7})});var x=n((gy,po)=>{"use strict";var Zl=me(),He=Function.prototype.call;po.exports=Zl?He.bind(He):function(){return He.apply(He,arguments)}});var Hr=n(go=>{"use strict";var vo={}.propertyIsEnumerable,ho=Object.getOwnPropertyDescriptor,ef=ho&&!vo.call({1:2},1);go.f=ef?function(e){var t=ho(this,e);return!!t&&t.enumerable}:vo});var ye=n((by,mo)=>{"use strict";mo.exports=function(r,e){return{enumerable:!(r&1),configurable:!(r&2),writable:!(r&4),value:e}}});var yo=n((yy,bo)=>{"use strict";var rf=P(),tf=E(),of=be(),zr=Object,nf=rf("".split);bo.exports=tf(function(){return!zr("z").propertyIsEnumerable(0)})?function(r){return of(r)==="String"?nf(r,""):zr(r)}:zr});var Ie=n((Iy,Io)=>{"use strict";Io.exports=function(r){return r==null}});var X=n((Sy,So)=>{"use strict";var af=Ie(),sf=TypeError;So.exports=function(r){if(af(r))throw new sf("Can't call method on "+r);return r}});var K=n((Ey,Eo)=>{"use strict";var uf=yo(),cf=X();Eo.exports=function(r){return uf(cf(r))}});var R=n((qy,qo)=>{"use strict";var lf=I();qo.exports=function(r){return typeof r=="object"?r!==null:lf(r)}});var Se=n((Py,Po)=>{"use strict";Po.exports={}});var $=n((Ty,Oo)=>{"use strict";var Qr=Se(),Yr=y(),ff=I(),To=function(r){return ff(r)?r:void 0};Oo.exports=function(r,e){return arguments.length<2?To(Qr[r])||To(Yr[r]):Qr[r]&&Qr[r][e]||Yr[r]&&Yr[r][e]}});var ze=n((Oy,_o)=>{"use strict";var df=P();_o.exports=df({}.isPrototypeOf)});var G=n((_y,Ro)=>{"use strict";var pf=y(),wo=pf.navigator,xo=wo&&wo.userAgent;Ro.exports=xo?String(xo):""});var Xr=n((wy,Do)=>{"use strict";var ko=y(),Jr=G(),Co=ko.process,Ao=ko.Deno,No=Co&&Co.versions||Ao&&Ao.version,Lo=No&&No.v8,C,Qe;Lo&&(C=Lo.split("."),Qe=C[0]>0&&C[0]<4?1:+(C[0]+C[1]));!Qe&&Jr&&(C=Jr.match(/Edge\/(\d+)/),(!C||C[1]>=74)&&(C=Jr.match(/Chrome\/(\d+)/),C&&(Qe=+C[1])));Do.exports=Qe});var Zr=n((xy,Mo)=>{"use strict";var $o=Xr(),vf=E(),hf=y(),gf=hf.String;Mo.exports=!!Object.getOwnPropertySymbols&&!vf(function(){var r=Symbol("symbol detection");return!gf(r)||!(Object(r)instanceof Symbol)||!Symbol.sham&&$o&&$o<41})});var et=n((Ry,jo)=>{"use strict";var mf=Zr();jo.exports=mf&&!Symbol.sham&&typeof Symbol.iterator=="symbol"});var rt=n((Cy,Fo)=>{"use strict";var bf=$(),yf=I(),If=ze(),Sf=et(),Ef=Object;Fo.exports=Sf?function(r){return typeof r=="symbol"}:function(r){var e=bf("Symbol");return yf(e)&&If(e.prototype,Ef(r))}});var Ee=n((Ay,Bo)=>{"use strict";var qf=String;Bo.exports=function(r){try{return qf(r)}catch{return"Object"}}});var M=n((Ny,Uo)=>{"use strict";var Pf=I(),Tf=Ee(),Of=TypeError;Uo.exports=function(r){if(Pf(r))return r;throw new Of(Tf(r)+" is not a function")}});var Ye=n((Ly,Vo)=>{"use strict";var _f=M(),wf=Ie();Vo.exports=function(r,e){var t=r[e];return wf(t)?void 0:_f(t)}});var Go=n((ky,Ko)=>{"use strict";var tt=x(),it=I(),ot=R(),xf=TypeError;Ko.exports=function(r,e){var t,i;if(e==="string"&&it(t=r.toString)&&!ot(i=tt(t,r))||it(t=r.valueOf)&&!ot(i=tt(t,r))||e!=="string"&&it(t=r.toString)&&!ot(i=tt(t,r)))return i;throw new xf("Can't convert object to primitive value")}});var L=n((Dy,Wo)=>{"use strict";Wo.exports=!0});var Qo=n(($y,zo)=>{"use strict";var Ho=y(),Rf=Object.defineProperty;zo.exports=function(r,e){try{Rf(Ho,r,{value:e,configurable:!0,writable:!0})}catch{Ho[r]=e}return e}});var qe=n((My,Xo)=>{"use strict";var Cf=L(),Af=y(),Nf=Qo(),Yo="__core-js_shared__",Jo=Xo.exports=Af[Yo]||Nf(Yo,{});(Jo.versions||(Jo.versions=[])).push({version:"3.38.0",mode:Cf?"pure":"global",copyright:"\xA9 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.38.0/LICENSE",source:"https://github.com/zloirock/core-js"})});var nt=n((jy,en)=>{"use strict";var Zo=qe();en.exports=function(r,e){return Zo[r]||(Zo[r]=e||{})}});var at=n((Fy,rn)=>{"use strict";var Lf=X(),kf=Object;rn.exports=function(r){return kf(Lf(r))}});var k=n((By,tn)=>{"use strict";var Df=P(),$f=at(),Mf=Df({}.hasOwnProperty);tn.exports=Object.hasOwn||function(e,t){return Mf($f(e),t)}});var st=n((Uy,on)=>{"use strict";var jf=P(),Ff=0,Bf=Math.random(),Uf=jf(1 .toString);on.exports=function(r){return"Symbol("+(r===void 0?"":r)+")_"+Uf(++Ff+Bf,36)}});var O=n((Vy,an)=>{"use strict";var Vf=y(),Kf=nt(),nn=k(),Gf=st(),Wf=Zr(),Hf=et(),Z=Vf.Symbol,ut=Kf("wks"),zf=Hf?Z.for||Z:Z&&Z.withoutSetter||Gf;an.exports=function(r){return nn(ut,r)||(ut[r]=Wf&&nn(Z,r)?Z[r]:zf("Symbol."+r)),ut[r]}});var ln=n((Ky,cn)=>{"use strict";var Qf=x(),sn=R(),un=rt(),Yf=Ye(),Jf=Go(),Xf=O(),Zf=TypeError,ed=Xf("toPrimitive");cn.exports=function(r,e){if(!sn(r)||un(r))return r;var t=Yf(r,ed),i;if(t){if(e===void 0&&(e="default"),i=Qf(t,r,e),!sn(i)||un(i))return i;throw new Zf("Can't convert object to primitive value")}return e===void 0&&(e="number"),Jf(r,e)}});var ct=n((Gy,fn)=>{"use strict";var rd=ln(),td=rt();fn.exports=function(r){var e=rd(r,"string");return td(e)?e:e+""}});var Je=n((Wy,pn)=>{"use strict";var id=y(),dn=R(),lt=id.document,od=dn(lt)&&dn(lt.createElement);pn.exports=function(r){return od?lt.createElement(r):{}}});var ft=n((Hy,vn)=>{"use strict";var nd=T(),ad=E(),sd=Je();vn.exports=!nd&&!ad(function(){return Object.defineProperty(sd("div"),"a",{get:function(){return 7}}).a!==7})});var mn=n(gn=>{"use strict";var ud=T(),cd=x(),ld=Hr(),fd=ye(),dd=K(),pd=ct(),vd=k(),hd=ft(),hn=Object.getOwnPropertyDescriptor;gn.f=ud?hn:function(e,t){if(e=dd(e),t=pd(t),hd)try{return hn(e,t)}catch{}if(vd(e,t))return fd(!cd(ld.f,e,t),e[t])}});var dt=n((Qy,bn)=>{"use strict";var gd=E(),md=I(),bd=/#|\.prototype\./,Pe=function(r,e){var t=Id[yd(r)];return t===Ed?!0:t===Sd?!1:md(e)?gd(e):!!e},yd=Pe.normalize=function(r){return String(r).replace(bd,".").toLowerCase()},Id=Pe.data={},Sd=Pe.NATIVE="N",Ed=Pe.POLYFILL="P";bn.exports=Pe});var Te=n((Yy,In)=>{"use strict";var yn=Gr(),qd=M(),Pd=me(),Td=yn(yn.bind);In.exports=function(r,e){return qd(r),e===void 0?r:Pd?Td(r,e):function(){return r.apply(e,arguments)}}});var pt=n((Jy,Sn)=>{"use strict";var Od=T(),_d=E();Sn.exports=Od&&_d(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42})});var j=n((Xy,En)=>{"use strict";var wd=R(),xd=String,Rd=TypeError;En.exports=function(r){if(wd(r))return r;throw new Rd(xd(r)+" is not an object")}});var W=n(Pn=>{"use strict";var Cd=T(),Ad=ft(),Nd=pt(),Xe=j(),qn=ct(),Ld=TypeError,vt=Object.defineProperty,kd=Object.getOwnPropertyDescriptor,ht="enumerable",gt="configurable",mt="writable";Pn.f=Cd?Nd?function(e,t,i){if(Xe(e),t=qn(t),Xe(i),typeof e=="function"&&t==="prototype"&&"value"in i&&mt in i&&!i[mt]){var o=kd(e,t);o&&o[mt]&&(e[t]=i.value,i={configurable:gt in i?i[gt]:o[gt],enumerable:ht in i?i[ht]:o[ht],writable:!1})}return vt(e,t,i)}:vt:function(e,t,i){if(Xe(e),t=qn(t),Xe(i),Ad)try{return vt(e,t,i)}catch{}if("get"in i||"set"in i)throw new Ld("Accessors not supported");return"value"in i&&(e[t]=i.value),e}});var ee=n((eI,Tn)=>{"use strict";var Dd=T(),$d=W(),Md=ye();Tn.exports=Dd?function(r,e,t){return $d.f(r,e,Md(1,t))}:function(r,e,t){return r[e]=t,r}});var _=n((rI,_n)=>{"use strict";var Oe=y(),jd=Vr(),Fd=Gr(),Bd=I(),Ud=mn().f,Vd=dt(),re=Se(),Kd=Te(),te=ee(),On=k();qe();var Gd=function(r){var e=function(t,i,o){if(this instanceof e){switch(arguments.length){case 0:return new r;case 1:return new r(t);case 2:return new r(t,i)}return new r(t,i,o)}return jd(r,this,arguments)};return e.prototype=r.prototype,e};_n.exports=function(r,e){var t=r.target,i=r.global,o=r.stat,a=r.proto,u=i?Oe:o?Oe[t]:Oe[t]&&Oe[t].prototype,c=i?re:re[t]||te(re,t,{})[t],d=c.prototype,f,p,v,s,l,h,g,b,m;for(s in e)f=Vd(i?s:t+(o?".":"#")+s,r.forced),p=!f&&u&&On(u,s),h=c[s],p&&(r.dontCallGetSet?(m=Ud(u,s),g=m&&m.value):g=u[s]),l=p&&g?g:e[s],!(!f&&!a&&typeof h==typeof l)&&(r.bind&&p?b=Kd(l,Oe):r.wrap&&p?b=Gd(l):a&&Bd(l)?b=Fd(l):b=l,(r.sham||l&&l.sham||h&&h.sham)&&te(b,"sham",!0),te(c,s,b),a&&(v=t+"Prototype",On(re,v)||te(re,v,{}),te(re[v],s,l),r.real&&d&&(f||!d[s])&&te(d,s,l)))}});var xn=n((tI,wn)=>{"use strict";var Wd=Math.ceil,Hd=Math.floor;wn.exports=Math.trunc||function(e){var t=+e;return(t>0?Hd:Wd)(t)}});var Ze=n((iI,Rn)=>{"use strict";var zd=xn();Rn.exports=function(r){var e=+r;return e!==e||e===0?0:zd(e)}});var An=n((oI,Cn)=>{"use strict";var Qd=Ze(),Yd=Math.max,Jd=Math.min;Cn.exports=function(r,e){var t=Qd(r);return t<0?Yd(t+e,0):Jd(t,e)}});var bt=n((nI,Nn)=>{"use strict";var Xd=Ze(),Zd=Math.min;Nn.exports=function(r){var e=Xd(r);return e>0?Zd(e,9007199254740991):0}});var yt=n((aI,Ln)=>{"use strict";var ep=bt();Ln.exports=function(r){return ep(r.length)}});var It=n((sI,Dn)=>{"use strict";var rp=K(),tp=An(),ip=yt(),kn=function(r){return function(e,t,i){var o=rp(e),a=ip(o);if(a===0)return!r&&-1;var u=tp(i,a),c;if(r&&t!==t){for(;a>u;)if(c=o[u++],c!==c)return!0}else for(;a>u;u++)if((r||u in o)&&o[u]===t)return r||u||0;return!r&&-1}};Dn.exports={includes:kn(!0),indexOf:kn(!1)}});var St=n((uI,$n)=>{"use strict";$n.exports=function(){}});var Mn=n(()=>{"use strict";var op=_(),np=It().includes,ap=E(),sp=St(),up=ap(function(){return!Array(1).includes()});op({target:"Array",proto:!0,forced:up},{includes:function(e){return np(this,e,arguments.length>1?arguments[1]:void 0)}});sp("includes")});var er=n((fI,jn)=>{"use strict";var cp=$();jn.exports=cp});var Bn=n((dI,Fn)=>{"use strict";Mn();var lp=er();Fn.exports=lp("Array","includes")});var Vn=n((pI,Un)=>{"use strict";var fp=Bn();Un.exports=fp});var rr=n((vI,Kn)=>{"use strict";var dp=Vn();Kn.exports=dp});var Xn=n(()=>{"use strict"});var wt=n((_I,Zn)=>{"use strict";var we=y(),hp=G(),gp=be(),ir=function(r){return hp.slice(0,r.length)===r};Zn.exports=function(){return ir("Bun/")?"BUN":ir("Cloudflare-Workers")?"CLOUDFLARE":ir("Deno/")?"DENO":ir("Node.js/")?"NODE":we.Bun&&typeof Bun.version=="string"?"BUN":we.Deno&&typeof Deno.version=="object"?"DENO":gp(we.process)==="process"?"NODE":we.window&&we.document?"BROWSER":"REST"}()});var or=n((wI,ea)=>{"use strict";var mp=wt();ea.exports=mp==="NODE"});var ie=n((xI,ra)=>{"use strict";var bp=ee();ra.exports=function(r,e,t,i){return i&&i.enumerable?r[e]=t:bp(r,e,t),r}});var ia=n((RI,ta)=>{"use strict";var yp=P(),Ip=M();ta.exports=function(r,e,t){try{return yp(Ip(Object.getOwnPropertyDescriptor(r,e)[t]))}catch{}}});var na=n((CI,oa)=>{"use strict";var Sp=R();oa.exports=function(r){return Sp(r)||r===null}});var sa=n((AI,aa)=>{"use strict";var Ep=na(),qp=String,Pp=TypeError;aa.exports=function(r){if(Ep(r))return r;throw new Pp("Can't set "+qp(r)+" as a prototype")}});var xt=n((NI,ua)=>{"use strict";var Tp=ia(),Op=R(),_p=X(),wp=sa();ua.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var r=!1,e={},t;try{t=Tp(Object.prototype,"__proto__","set"),t(e,[]),r=e instanceof Array}catch{}return function(o,a){return _p(o),wp(a),Op(o)&&(r?t(o,a):o.__proto__=a),o}}():void 0)});var nr=n((LI,la)=>{"use strict";var xp=O(),Rp=xp("toStringTag"),ca={};ca[Rp]="z";la.exports=String(ca)==="[object z]"});var xe=n((kI,fa)=>{"use strict";var Cp=nr(),Ap=I(),ar=be(),Np=O(),Lp=Np("toStringTag"),kp=Object,Dp=ar(function(){return arguments}())==="Arguments",$p=function(r,e){try{return r[e]}catch{}};fa.exports=Cp?ar:function(r){var e,t,i;return r===void 0?"Undefined":r===null?"Null":typeof(t=$p(e=kp(r),Lp))=="string"?t:Dp?ar(e):(i=ar(e))==="Object"&&Ap(e.callee)?"Arguments":i}});var pa=n((DI,da)=>{"use strict";var Mp=nr(),jp=xe();da.exports=Mp?{}.toString:function(){return"[object "+jp(this)+"]"}});var Re=n(($I,ha)=>{"use strict";var Fp=nr(),Bp=W().f,Up=ee(),Vp=k(),Kp=pa(),Gp=O(),va=Gp("toStringTag");ha.exports=function(r,e,t,i){var o=t?r:r&&r.prototype;o&&(Vp(o,va)||Bp(o,va,{configurable:!0,value:e}),i&&!Fp&&Up(o,"toString",Kp))}});var ma=n((MI,ga)=>{"use strict";var Wp=W();ga.exports=function(r,e,t){return Wp.f(r,e,t)}});var Ia=n((jI,ya)=>{"use strict";var Hp=$(),zp=ma(),Qp=O(),Yp=T(),ba=Qp("species");ya.exports=function(r){var e=Hp(r);Yp&&e&&!e[ba]&&zp(e,ba,{configurable:!0,get:function(){return this}})}});var Ea=n((FI,Sa)=>{"use strict";var Jp=ze(),Xp=TypeError;Sa.exports=function(r,e){if(Jp(e,r))return r;throw new Xp("Incorrect invocation")}});var Ct=n((BI,qa)=>{"use strict";var Zp=P(),ev=I(),Rt=qe(),rv=Zp(Function.toString);ev(Rt.inspectSource)||(Rt.inspectSource=function(r){return rv(r)});qa.exports=Rt.inspectSource});var xa=n((UI,wa)=>{"use strict";var tv=P(),iv=E(),Pa=I(),ov=xe(),nv=$(),av=Ct(),Ta=function(){},Oa=nv("Reflect","construct"),At=/^\s*(?:class|function)\b/,sv=tv(At.exec),uv=!At.test(Ta),Ce=function(e){if(!Pa(e))return!1;try{return Oa(Ta,[],e),!0}catch{return!1}},_a=function(e){if(!Pa(e))return!1;switch(ov(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return uv||!!sv(At,av(e))}catch{return!0}};_a.sham=!0;wa.exports=!Oa||iv(function(){var r;return Ce(Ce.call)||!Ce(Object)||!Ce(function(){r=!0})||r})?_a:Ce});var Ca=n((VI,Ra)=>{"use strict";var cv=xa(),lv=Ee(),fv=TypeError;Ra.exports=function(r){if(cv(r))return r;throw new fv(lv(r)+" is not a constructor")}});var Nt=n((KI,Na)=>{"use strict";var Aa=j(),dv=Ca(),pv=Ie(),vv=O(),hv=vv("species");Na.exports=function(r,e){var t=Aa(r).constructor,i;return t===void 0||pv(i=Aa(t)[hv])?e:dv(i)}});var Lt=n((GI,La)=>{"use strict";var gv=$();La.exports=gv("document","documentElement")});var Da=n((WI,ka)=>{"use strict";var mv=P();ka.exports=mv([].slice)});var Ma=n((HI,$a)=>{"use strict";var bv=TypeError;$a.exports=function(r,e){if(r<e)throw new bv("Not enough arguments");return r}});var kt=n((zI,ja)=>{"use strict";var yv=G();ja.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(yv)});var Kt=n((QI,za)=>{"use strict";var w=y(),Iv=Vr(),Sv=Te(),Fa=I(),Ev=k(),Ha=E(),Ba=Lt(),qv=Da(),Ua=Je(),Pv=Ma(),Tv=kt(),Ov=or(),Bt=w.setImmediate,Ut=w.clearImmediate,_v=w.process,Dt=w.Dispatch,wv=w.Function,Va=w.MessageChannel,xv=w.String,$t=0,Ae={},Ka="onreadystatechange",Ne,H,Mt,jt;Ha(function(){Ne=w.location});var Vt=function(r){if(Ev(Ae,r)){var e=Ae[r];delete Ae[r],e()}},Ft=function(r){return function(){Vt(r)}},Ga=function(r){Vt(r.data)},Wa=function(r){w.postMessage(xv(r),Ne.protocol+"//"+Ne.host)};(!Bt||!Ut)&&(Bt=function(e){Pv(arguments.length,1);var t=Fa(e)?e:wv(e),i=qv(arguments,1);return Ae[++$t]=function(){Iv(t,void 0,i)},H($t),$t},Ut=function(e){delete Ae[e]},Ov?H=function(r){_v.nextTick(Ft(r))}:Dt&&Dt.now?H=function(r){Dt.now(Ft(r))}:Va&&!Tv?(Mt=new Va,jt=Mt.port2,Mt.port1.onmessage=Ga,H=Sv(jt.postMessage,jt)):w.addEventListener&&Fa(w.postMessage)&&!w.importScripts&&Ne&&Ne.protocol!=="file:"&&!Ha(Wa)?(H=Wa,w.addEventListener("message",Ga,!1)):Ka in Ua("script")?H=function(r){Ba.appendChild(Ua("script"))[Ka]=function(){Ba.removeChild(this),Vt(r)}}:H=function(r){setTimeout(Ft(r),0)});za.exports={set:Bt,clear:Ut}});var Ja=n((YI,Ya)=>{"use strict";var Qa=y(),Rv=T(),Cv=Object.getOwnPropertyDescriptor;Ya.exports=function(r){if(!Rv)return Qa[r];var e=Cv(Qa,r);return e&&e.value}});var Gt=n((JI,Za)=>{"use strict";var Xa=function(){this.head=null,this.tail=null};Xa.prototype={add:function(r){var e={item:r,next:null},t=this.tail;t?t.next=e:this.head=e,this.tail=e},get:function(){var r=this.head;if(r){var e=this.head=r.next;return e===null&&(this.tail=null),r.item}}};Za.exports=Xa});var rs=n((XI,es)=>{"use strict";var Av=G();es.exports=/ipad|iphone|ipod/i.test(Av)&&typeof Pebble<"u"});var is=n((ZI,ts)=>{"use strict";var Nv=G();ts.exports=/web0s(?!.*chrome)/i.test(Nv)});var ls=n((eS,cs)=>{"use strict";var ne=y(),Lv=Ja(),os=Te(),Wt=Kt().set,kv=Gt(),Dv=kt(),$v=rs(),Mv=is(),Ht=or(),ns=ne.MutationObserver||ne.WebKitMutationObserver,as=ne.document,ss=ne.process,sr=ne.Promise,Yt=Lv("queueMicrotask"),oe,zt,Qt,ur,us;Yt||(Le=new kv,ke=function(){var r,e;for(Ht&&(r=ss.domain)&&r.exit();e=Le.get();)try{e()}catch(t){throw Le.head&&oe(),t}r&&r.enter()},!Dv&&!Ht&&!Mv&&ns&&as?(zt=!0,Qt=as.createTextNode(""),new ns(ke).observe(Qt,{characterData:!0}),oe=function(){Qt.data=zt=!zt}):!$v&&sr&&sr.resolve?(ur=sr.resolve(void 0),ur.constructor=sr,us=os(ur.then,ur),oe=function(){us(ke)}):Ht?oe=function(){ss.nextTick(ke)}:(Wt=os(Wt,ne),oe=function(){Wt(ke)}),Yt=function(r){Le.head||oe(),Le.add(r)});var Le,ke;cs.exports=Yt});var ds=n((rS,fs)=>{"use strict";fs.exports=function(r,e){try{arguments.length===1?console.error(r):console.error(r,e)}catch{}}});var cr=n((tS,ps)=>{"use strict";ps.exports=function(r){try{return{error:!1,value:r()}}catch(e){return{error:!0,value:e}}}});var gs=n((iS,hs)=>{"use strict";var jv=y(),Fv=I(),vs=jv.WeakMap;hs.exports=Fv(vs)&&/native code/.test(String(vs))});var lr=n((oS,bs)=>{"use strict";var Bv=nt(),Uv=st(),ms=Bv("keys");bs.exports=function(r){return ms[r]||(ms[r]=Uv(r))}});var fr=n((nS,ys)=>{"use strict";ys.exports={}});var ei=n((aS,Es)=>{"use strict";var Vv=gs(),Ss=y(),Kv=R(),Gv=ee(),Jt=k(),Xt=qe(),Wv=lr(),Hv=fr(),Is="Object already initialized",Zt=Ss.TypeError,zv=Ss.WeakMap,dr,De,pr,Qv=function(r){return pr(r)?De(r):dr(r,{})},Yv=function(r){return function(e){var t;if(!Kv(e)||(t=De(e)).type!==r)throw new Zt("Incompatible receiver, "+r+" required");return t}};Vv||Xt.state?(A=Xt.state||(Xt.state=new zv),A.get=A.get,A.has=A.has,A.set=A.set,dr=function(r,e){if(A.has(r))throw new Zt(Is);return e.facade=r,A.set(r,e),e},De=function(r){return A.get(r)||{}},pr=function(r){return A.has(r)}):(z=Wv("state"),Hv[z]=!0,dr=function(r,e){if(Jt(r,z))throw new Zt(Is);return e.facade=r,Gv(r,z,e),e},De=function(r){return Jt(r,z)?r[z]:{}},pr=function(r){return Jt(r,z)});var A,z;Es.exports={set:dr,get:De,has:pr,enforce:Qv,getterFor:Yv}});var Q=n((sS,qs)=>{"use strict";var Jv=y();qs.exports=Jv.Promise});var ae=n((uS,_s)=>{"use strict";var Xv=y(),$e=Q(),Zv=I(),eh=dt(),rh=Ct(),th=O(),Ps=wt(),ih=L(),ri=Xr(),Ts=$e&&$e.prototype,oh=th("species"),ti=!1,Os=Zv(Xv.PromiseRejectionEvent),nh=eh("Promise",function(){var r=rh($e),e=r!==String($e);if(!e&&ri===66||ih&&!(Ts.catch&&Ts.finally))return!0;if(!ri||ri<51||!/native code/.test(r)){var t=new $e(function(a){a(1)}),i=function(a){a(function(){},function(){})},o=t.constructor={};if(o[oh]=i,ti=t.then(function(){})instanceof i,!ti)return!0}return!e&&(Ps==="BROWSER"||Ps==="DENO")&&!Os});_s.exports={CONSTRUCTOR:nh,REJECTION_EVENT:Os,SUBCLASSING:ti}});var se=n((cS,xs)=>{"use strict";var ws=M(),ah=TypeError,sh=function(r){var e,t;this.promise=new r(function(i,o){if(e!==void 0||t!==void 0)throw new ah("Bad Promise constructor");e=i,t=o}),this.resolve=ws(e),this.reject=ws(t)};xs.exports.f=function(r){return new sh(r)}});var zs=n(()=>{"use strict";var uh=_(),ch=L(),mr=or(),V=y(),fe=x(),Rs=ie(),Cs=xt(),lh=Re(),fh=Ia(),dh=M(),gr=I(),ph=R(),vh=Ea(),hh=Nt(),Ds=Kt().set,si=ls(),gh=ds(),mh=cr(),bh=Gt(),$s=ei(),br=Q(),ui=ae(),Ms=se(),yr="Promise",js=ui.CONSTRUCTOR,yh=ui.REJECTION_EVENT,Ih=ui.SUBCLASSING,ii=$s.getterFor(yr),Sh=$s.set,ue=br&&br.prototype,Y=br,vr=ue,Fs=V.TypeError,oi=V.document,ci=V.process,ni=Ms.f,Eh=ni,qh=!!(oi&&oi.createEvent&&V.dispatchEvent),Bs="unhandledrejection",Ph="rejectionhandled",As=0,Us=1,Th=2,li=1,Vs=2,hr,Ns,Oh,Ls,Ks=function(r){var e;return ph(r)&&gr(e=r.then)?e:!1},Gs=function(r,e){var t=e.value,i=e.state===Us,o=i?r.ok:r.fail,a=r.resolve,u=r.reject,c=r.domain,d,f,p;try{o?(i||(e.rejection===Vs&&wh(e),e.rejection=li),o===!0?d=t:(c&&c.enter(),d=o(t),c&&(c.exit(),p=!0)),d===r.promise?u(new Fs("Promise-chain cycle")):(f=Ks(d))?fe(f,d,a,u):a(d)):u(t)}catch(v){c&&!p&&c.exit(),u(v)}},Ws=function(r,e){r.notified||(r.notified=!0,si(function(){for(var t=r.reactions,i;i=t.get();)Gs(i,r);r.notified=!1,e&&!r.rejection&&_h(r)}))},Hs=function(r,e,t){var i,o;qh?(i=oi.createEvent("Event"),i.promise=e,i.reason=t,i.initEvent(r,!1,!0),V.dispatchEvent(i)):i={promise:e,reason:t},!yh&&(o=V["on"+r])?o(i):r===Bs&&gh("Unhandled promise rejection",t)},_h=function(r){fe(Ds,V,function(){var e=r.facade,t=r.value,i=ks(r),o;if(i&&(o=mh(function(){mr?ci.emit("unhandledRejection",t,e):Hs(Bs,e,t)}),r.rejection=mr||ks(r)?Vs:li,o.error))throw o.value})},ks=function(r){return r.rejection!==li&&!r.parent},wh=function(r){fe(Ds,V,function(){var e=r.facade;mr?ci.emit("rejectionHandled",e):Hs(Ph,e,r.value)})},ce=function(r,e,t){return function(i){r(e,i,t)}},le=function(r,e,t){r.done||(r.done=!0,t&&(r=t),r.value=e,r.state=Th,Ws(r,!0))},ai=function(r,e,t){if(!r.done){r.done=!0,t&&(r=t);try{if(r.facade===e)throw new Fs("Promise can't be resolved itself");var i=Ks(e);i?si(function(){var o={done:!1};try{fe(i,e,ce(ai,o,r),ce(le,o,r))}catch(a){le(o,a,r)}}):(r.value=e,r.state=Us,Ws(r,!1))}catch(o){le({done:!1},o,r)}}};if(js&&(Y=function(e){vh(this,vr),dh(e),fe(hr,this);var t=ii(this);try{e(ce(ai,t),ce(le,t))}catch(i){le(t,i)}},vr=Y.prototype,hr=function(e){Sh(this,{type:yr,done:!1,notified:!1,parent:!1,reactions:new bh,rejection:!1,state:As,value:void 0})},hr.prototype=Rs(vr,"then",function(e,t){var i=ii(this),o=ni(hh(this,Y));return i.parent=!0,o.ok=gr(e)?e:!0,o.fail=gr(t)&&t,o.domain=mr?ci.domain:void 0,i.state===As?i.reactions.add(o):si(function(){Gs(o,i)}),o.promise}),Ns=function(){var r=new hr,e=ii(r);this.promise=r,this.resolve=ce(ai,e),this.reject=ce(le,e)},Ms.f=ni=function(r){return r===Y||r===Oh?new Ns(r):Eh(r)},!ch&&gr(br)&&ue!==Object.prototype)){Ls=ue.then,Ih||Rs(ue,"then",function(e,t){var i=this;return new Y(function(o,a){fe(Ls,i,o,a)}).then(e,t)},{unsafe:!0});try{delete ue.constructor}catch{}Cs&&Cs(ue,vr)}uh({global:!0,constructor:!0,wrap:!0,forced:js},{Promise:Y});lh(Y,yr,!1,!0);fh(yr)});var J=n((dS,Qs)=>{"use strict";Qs.exports={}});var Js=n((pS,Ys)=>{"use strict";var xh=O(),Rh=J(),Ch=xh("iterator"),Ah=Array.prototype;Ys.exports=function(r){return r!==void 0&&(Rh.Array===r||Ah[Ch]===r)}});var fi=n((vS,Zs)=>{"use strict";var Nh=xe(),Xs=Ye(),Lh=Ie(),kh=J(),Dh=O(),$h=Dh("iterator");Zs.exports=function(r){if(!Lh(r))return Xs(r,$h)||Xs(r,"@@iterator")||kh[Nh(r)]}});var ru=n((hS,eu)=>{"use strict";var Mh=x(),jh=M(),Fh=j(),Bh=Ee(),Uh=fi(),Vh=TypeError;eu.exports=function(r,e){var t=arguments.length<2?Uh(r):e;if(jh(t))return Fh(Mh(t,r));throw new Vh(Bh(r)+" is not iterable")}});var ou=n((gS,iu)=>{"use strict";var Kh=x(),tu=j(),Gh=Ye();iu.exports=function(r,e,t){var i,o;tu(r);try{if(i=Gh(r,"return"),!i){if(e==="throw")throw t;return t}i=Kh(i,r)}catch(a){o=!0,i=a}if(e==="throw")throw t;if(o)throw i;return tu(i),t}});var Sr=n((mS,uu)=>{"use strict";var Wh=Te(),Hh=x(),zh=j(),Qh=Ee(),Yh=Js(),Jh=yt(),nu=ze(),Xh=ru(),Zh=fi(),au=ou(),eg=TypeError,Ir=function(r,e){this.stopped=r,this.result=e},su=Ir.prototype;uu.exports=function(r,e,t){var i=t&&t.that,o=!!(t&&t.AS_ENTRIES),a=!!(t&&t.IS_RECORD),u=!!(t&&t.IS_ITERATOR),c=!!(t&&t.INTERRUPTED),d=Wh(e,i),f,p,v,s,l,h,g,b=function(S){return f&&au(f,"normal",S),new Ir(!0,S)},m=function(S){return o?(zh(S),c?d(S[0],S[1],b):d(S[0],S[1])):c?d(S,b):d(S)};if(a)f=r.iterator;else if(u)f=r;else{if(p=Zh(r),!p)throw new eg(Qh(r)+" is not iterable");if(Yh(p)){for(v=0,s=Jh(r);s>v;v++)if(l=m(r[v]),l&&nu(su,l))return l;return new Ir(!1)}f=Xh(r,p)}for(h=a?r.next:f.next;!(g=Hh(h,f)).done;){try{l=m(g.value)}catch(S){au(f,"throw",S)}if(typeof l=="object"&&l&&nu(su,l))return l}return new Ir(!1)}});var pu=n((bS,du)=>{"use strict";var rg=O(),lu=rg("iterator"),fu=!1;try{cu=0,di={next:function(){return{done:!!cu++}},return:function(){fu=!0}},di[lu]=function(){return this},Array.from(di,function(){throw 2})}catch{}var cu,di;du.exports=function(r,e){try{if(!e&&!fu)return!1}catch{return!1}var t=!1;try{var i={};i[lu]=function(){return{next:function(){return{done:t=!0}}}},r(i)}catch{}return t}});var pi=n((yS,vu)=>{"use strict";var tg=Q(),ig=pu(),og=ae().CONSTRUCTOR;vu.exports=og||!ig(function(r){tg.all(r).then(void 0,function(){})})});var hu=n(()=>{"use strict";var ng=_(),ag=x(),sg=M(),ug=se(),cg=cr(),lg=Sr(),fg=pi();ng({target:"Promise",stat:!0,forced:fg},{all:function(e){var t=this,i=ug.f(t),o=i.resolve,a=i.reject,u=cg(function(){var c=sg(t.resolve),d=[],f=0,p=1;lg(e,function(v){var s=f++,l=!1;p++,ag(c,t,v).then(function(h){l||(l=!0,d[s]=h,--p||o(d))},a)}),--p||o(d)});return u.error&&a(u.value),i.promise}})});var mu=n(()=>{"use strict";var dg=_(),pg=L(),vg=ae().CONSTRUCTOR,hi=Q(),hg=$(),gg=I(),mg=ie(),gu=hi&&hi.prototype;dg({target:"Promise",proto:!0,forced:vg,real:!0},{catch:function(r){return this.then(void 0,r)}});!pg&&gg(hi)&&(vi=hg("Promise").prototype.catch,gu.catch!==vi&&mg(gu,"catch",vi,{unsafe:!0}));var vi});var bu=n(()=>{"use strict";var bg=_(),yg=x(),Ig=M(),Sg=se(),Eg=cr(),qg=Sr(),Pg=pi();bg({target:"Promise",stat:!0,forced:Pg},{race:function(e){var t=this,i=Sg.f(t),o=i.reject,a=Eg(function(){var u=Ig(t.resolve);qg(e,function(c){yg(u,t,c).then(i.resolve,o)})});return a.error&&o(a.value),i.promise}})});var yu=n(()=>{"use strict";var Tg=_(),Og=se(),_g=ae().CONSTRUCTOR;Tg({target:"Promise",stat:!0,forced:_g},{reject:function(e){var t=Og.f(this),i=t.reject;return i(e),t.promise}})});var gi=n((wS,Iu)=>{"use strict";var wg=j(),xg=R(),Rg=se();Iu.exports=function(r,e){if(wg(r),xg(e)&&e.constructor===r)return e;var t=Rg.f(r),i=t.resolve;return i(e),t.promise}});var qu=n(()=>{"use strict";var Cg=_(),Ag=$(),Su=L(),Ng=Q(),Eu=ae().CONSTRUCTOR,Lg=gi(),kg=Ag("Promise"),Dg=Su&&!Eu;Cg({target:"Promise",stat:!0,forced:Su||Eu},{resolve:function(e){return Lg(Dg&&this===kg?Ng:this,e)}})});var Pu=n(()=>{"use strict";zs();hu();mu();bu();yu();qu()});var wu=n(()=>{"use strict";var $g=_(),Mg=L(),Er=Q(),jg=E(),Ou=$(),_u=I(),Fg=Nt(),Tu=gi(),Bg=ie(),bi=Er&&Er.prototype,Ug=!!Er&&jg(function(){bi.finally.call({then:function(){}},function(){})});$g({target:"Promise",proto:!0,real:!0,forced:Ug},{finally:function(r){var e=Fg(this,Ou("Promise")),t=_u(r);return this.then(t?function(i){return Tu(e,r()).then(function(){return i})}:r,t?function(i){return Tu(e,r()).then(function(){throw i})}:r)}});!Mg&&_u(Er)&&(mi=Ou("Promise").prototype.finally,bi.finally!==mi&&Bg(bi,"finally",mi,{unsafe:!0}));var mi});var Ru=n((kS,xu)=>{"use strict";Xn();Pu();wu();var Vg=er();xu.exports=Vg("Promise","finally")});var Au=n((DS,Cu)=>{"use strict";var Kg=Ru();Cu.exports=Kg});var Lu=n(($S,Nu)=>{"use strict";var Gg=Au();Nu.exports=Gg});var Du=n((MS,ku)=>{"use strict";var Wg=E();ku.exports=!Wg(function(){function r(){}return r.prototype.constructor=null,Object.getPrototypeOf(new r)!==r.prototype})});var qr=n((jS,Mu)=>{"use strict";var Hg=k(),zg=I(),Qg=at(),Yg=lr(),Jg=Du(),$u=Yg("IE_PROTO"),yi=Object,Xg=yi.prototype;Mu.exports=Jg?yi.getPrototypeOf:function(r){var e=Qg(r);if(Hg(e,$u))return e[$u];var t=e.constructor;return zg(t)&&e instanceof t?t.prototype:e instanceof yi?Xg:null}});var Bu=n((FS,Fu)=>{"use strict";var Zg=P(),Ii=k(),em=K(),rm=It().indexOf,tm=fr(),ju=Zg([].push);Fu.exports=function(r,e){var t=em(r),i=0,o=[],a;for(a in t)!Ii(tm,a)&&Ii(t,a)&&ju(o,a);for(;e.length>i;)Ii(t,a=e[i++])&&(~rm(o,a)||ju(o,a));return o}});var Si=n((BS,Uu)=>{"use strict";Uu.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]});var Ei=n((US,Vu)=>{"use strict";var im=Bu(),om=Si();Vu.exports=Object.keys||function(e){return im(e,om)}});var Qu=n((VS,zu)=>{"use strict";var Gu=T(),nm=E(),Wu=P(),am=qr(),sm=Ei(),um=K(),cm=Hr().f,Hu=Wu(cm),lm=Wu([].push),fm=Gu&&nm(function(){var r=Object.create(null);return r[2]=2,!Hu(r,2)}),Ku=function(r){return function(e){for(var t=um(e),i=sm(t),o=fm&&am(t)===null,a=i.length,u=0,c=[],d;a>u;)d=i[u++],(!Gu||(o?d in t:Hu(t,d)))&&lm(c,r?[d,t[d]]:t[d]);return c}};zu.exports={entries:Ku(!0),values:Ku(!1)}});var Yu=n(()=>{"use strict";var dm=_(),pm=Qu().entries;dm({target:"Object",stat:!0},{entries:function(e){return pm(e)}})});var Xu=n((WS,Ju)=>{"use strict";Yu();var vm=Se();Ju.exports=vm.Object.entries});var ec=n((HS,Zu)=>{"use strict";var hm=Xu();Zu.exports=hm});var Pr=n((zS,rc)=>{"use strict";var gm=ec();rc.exports=gm});var oc=n((QS,ic)=>{"use strict";var qi=T(),mm=k(),tc=Function.prototype,bm=qi&&Object.getOwnPropertyDescriptor,Pi=mm(tc,"name"),ym=Pi&&function(){}.name==="something",Im=Pi&&(!qi||qi&&bm(tc,"name").configurable);ic.exports={EXISTS:Pi,PROPER:ym,CONFIGURABLE:Im}});var ac=n(nc=>{"use strict";var Sm=T(),Em=pt(),qm=W(),Pm=j(),Tm=K(),Om=Ei();nc.f=Sm&&!Em?Object.defineProperties:function(e,t){Pm(e);for(var i=Tm(t),o=Om(t),a=o.length,u=0,c;a>u;)qm.f(e,c=o[u++],i[c]);return e}});var wi=n((JS,pc)=>{"use strict";var _m=j(),wm=ac(),sc=Si(),xm=fr(),Rm=Lt(),Cm=Je(),Am=lr(),uc=">",cc="<",Oi="prototype",_i="script",fc=Am("IE_PROTO"),Ti=function(){},dc=function(r){return cc+_i+uc+r+cc+"/"+_i+uc},lc=function(r){r.write(dc("")),r.close();var e=r.parentWindow.Object;return r=null,e},Nm=function(){var r=Cm("iframe"),e="java"+_i+":",t;return r.style.display="none",Rm.appendChild(r),r.src=String(e),t=r.contentWindow.document,t.open(),t.write(dc("document.F=Object")),t.close(),t.F},Tr,Or=function(){try{Tr=new ActiveXObject("htmlfile")}catch{}Or=typeof document<"u"?document.domain&&Tr?lc(Tr):Nm():lc(Tr);for(var r=sc.length;r--;)delete Or[Oi][sc[r]];return Or()};xm[fc]=!0;pc.exports=Object.create||function(e,t){var i;return e!==null?(Ti[Oi]=_m(e),i=new Ti,Ti[Oi]=null,i[fc]=e):i=Or(),t===void 0?i:wm.f(i,t)}});var Ai=n((XS,gc)=>{"use strict";var Lm=E(),km=I(),Dm=R(),$m=wi(),vc=qr(),Mm=ie(),jm=O(),Fm=L(),Ci=jm("iterator"),hc=!1,F,xi,Ri;[].keys&&(Ri=[].keys(),"next"in Ri?(xi=vc(vc(Ri)),xi!==Object.prototype&&(F=xi)):hc=!0);var Bm=!Dm(F)||Lm(function(){var r={};return F[Ci].call(r)!==r});Bm?F={}:Fm&&(F=$m(F));km(F[Ci])||Mm(F,Ci,function(){return this});gc.exports={IteratorPrototype:F,BUGGY_SAFARI_ITERATORS:hc}});var bc=n((ZS,mc)=>{"use strict";var Um=Ai().IteratorPrototype,Vm=wi(),Km=ye(),Gm=Re(),Wm=J(),Hm=function(){return this};mc.exports=function(r,e,t,i){var o=e+" Iterator";return r.prototype=Vm(Um,{next:Km(+!i,t)}),Gm(r,o,!1,!0),Wm[o]=Hm,r}});var xc=n((eE,wc)=>{"use strict";var zm=_(),Qm=x(),_r=L(),Oc=oc(),Ym=I(),Jm=bc(),yc=qr(),Ic=xt(),Xm=Re(),Zm=ee(),Ni=ie(),eb=O(),Sc=J(),_c=Ai(),rb=Oc.PROPER,tb=Oc.CONFIGURABLE,Ec=_c.IteratorPrototype,wr=_c.BUGGY_SAFARI_ITERATORS,Me=eb("iterator"),qc="keys",je="values",Pc="entries",Tc=function(){return this};wc.exports=function(r,e,t,i,o,a,u){Jm(t,e,i);var c=function(m){if(m===o&&s)return s;if(!wr&&m&&m in p)return p[m];switch(m){case qc:return function(){return new t(this,m)};case je:return function(){return new t(this,m)};case Pc:return function(){return new t(this,m)}}return function(){return new t(this)}},d=e+" Iterator",f=!1,p=r.prototype,v=p[Me]||p["@@iterator"]||o&&p[o],s=!wr&&v||c(o),l=e==="Array"&&p.entries||v,h,g,b;if(l&&(h=yc(l.call(new r)),h!==Object.prototype&&h.next&&(!_r&&yc(h)!==Ec&&(Ic?Ic(h,Ec):Ym(h[Me])||Ni(h,Me,Tc)),Xm(h,d,!0,!0),_r&&(Sc[d]=Tc))),rb&&o===je&&v&&v.name!==je&&(!_r&&tb?Zm(p,"name",je):(f=!0,s=function(){return Qm(v,this)})),o)if(g={values:c(je),keys:a?s:c(qc),entries:c(Pc)},u)for(b in g)(wr||f||!(b in p))&&Ni(p,b,g[b]);else zm({target:e,proto:!0,forced:wr||f},g);return(!_r||u)&&p[Me]!==s&&Ni(p,Me,s,{name:o}),Sc[e]=s,g}});var Cc=n((rE,Rc)=>{"use strict";Rc.exports=function(r,e){return{value:r,done:e}}});var ki=n((tE,Dc)=>{"use strict";var ib=K(),Li=St(),Ac=J(),Lc=ei(),ob=W().f,nb=xc(),xr=Cc(),ab=L(),sb=T(),kc="Array Iterator",ub=Lc.set,cb=Lc.getterFor(kc);Dc.exports=nb(Array,"Array",function(r,e){ub(this,{type:kc,target:ib(r),index:0,kind:e})},function(){var r=cb(this),e=r.target,t=r.index++;if(!e||t>=e.length)return r.target=void 0,xr(void 0,!0);switch(r.kind){case"keys":return xr(t,!1);case"values":return xr(e[t],!1)}return xr([t,e[t]],!1)},"values");var Nc=Ac.Arguments=Ac.Array;Li("keys");Li("values");Li("entries");if(!ab&&sb&&Nc.name!=="values")try{ob(Nc,"name",{value:"values"})}catch{}});var Mc=n((iE,$c)=>{"use strict";var lb=T(),fb=W(),db=ye();$c.exports=function(r,e,t){lb?fb.f(r,e,db(0,t)):r[e]=t}});var jc=n(()=>{"use strict";var pb=_(),vb=Sr(),hb=Mc();pb({target:"Object",stat:!0},{fromEntries:function(e){var t={};return vb(e,function(i,o){hb(t,i,o)},{AS_ENTRIES:!0}),t}})});var Bc=n((aE,Fc)=>{"use strict";ki();jc();var gb=Se();Fc.exports=gb.Object.fromEntries});var Vc=n((sE,Uc)=>{"use strict";Uc.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}});var Gc=n(()=>{"use strict";ki();var mb=Vc(),bb=y(),yb=Re(),Kc=J();for(Rr in mb)yb(bb[Rr],Rr),Kc[Rr]=Kc.Array;var Rr});var Hc=n((lE,Wc)=>{"use strict";var Ib=Bc();Gc();Wc.exports=Ib});var Qc=n((fE,zc)=>{"use strict";var Sb=Hc();zc.exports=Sb});var Ui=n((rq,cl)=>{"use strict";var xb=xe(),Rb=String;cl.exports=function(r){if(xb(r)==="Symbol")throw new TypeError("Cannot convert a Symbol value to a string");return Rb(r)}});var fl=n((tq,ll)=>{"use strict";var Cb=Ze(),Ab=Ui(),Nb=X(),Lb=RangeError;ll.exports=function(e){var t=Ab(Nb(this)),i="",o=Cb(e);if(o<0||o===1/0)throw new Lb("Wrong number of repetitions");for(;o>0;(o>>>=1)&&(t+=t))o&1&&(i+=t);return i}});var gl=n((iq,hl)=>{"use strict";var vl=P(),kb=bt(),dl=Ui(),Db=fl(),$b=X(),Mb=vl(Db),jb=vl("".slice),Fb=Math.ceil,pl=function(r){return function(e,t,i){var o=dl($b(e)),a=kb(t),u=o.length,c=i===void 0?" ":dl(i),d,f;return a<=u||c===""?o:(d=a-u,f=Mb(c,Fb(d/c.length)),f.length>d&&(f=jb(f,0,d)),r?o+f:f+o)}};hl.exports={start:pl(!1),end:pl(!0)}});var bl=n((oq,ml)=>{"use strict";var Bb=G();ml.exports=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(Bb)});var yl=n(()=>{"use strict";var Ub=_(),Vb=gl().start,Kb=bl();Ub({target:"String",proto:!0,forced:Kb},{padStart:function(e){return Vb(this,e,arguments.length>1?arguments[1]:void 0)}})});var Sl=n((sq,Il)=>{"use strict";yl();var Gb=er();Il.exports=Gb("String","padStart")});var ql=n((uq,El)=>{"use strict";var Wb=Sl();El.exports=Wb});var Tl=n((cq,Pl)=>{"use strict";var Hb=ql();Pl.exports=Hb});var Hi=D(rr(),1);var _e=(u=>(u.PROD="prod",u.VK_ALIAS="vk_alias",u.VIDEOTEST="videotest",u.TEST="test",u.OKCDN="okcdn",u.AUTO="auto",u))(_e||{}),Et=(f=>(f.Q144P="mobile",f.Q240P="lowest",f.Q360P="low",f.Q480P="medium",f.Q720P="high",f.Q1080P="fullhd",f.Q1440P="quadhd",f.Q2160P="ultrahd",f.UNKNOWN="unknown",f))(Et||{}),qt=(l=>(l.MP4="mp4",l.DASH="dash",l.DASH_SEP="dash_sep",l.ONDEMAND_DASH="ondemand_dash",l.HLS="hls",l.ONDEMAND_HLS="ondemand_hls",l.WEBM="webm",l.AV1="av1",l.ONDEMAND_DASH_LIVE="ondemand_dash_live",l.ONDEMAND_HLS_LIVE="ondemand_hls_live",l.WEBRTC="webrtc",l.UNKNOWN="unknown",l.RTMP="rtmp",l))(qt||{});var Pt=(i=>(i.HTTP1="http1",i.HTTP2="http2",i.HTTP3="http3",i))(Pt||{});var Tt=(c=>(c.SLIDER="slider",c.DOUBLE_TAP="double_tap",c.TIME_CODE="time_code",c.EPISODE="episode",c.REWIND="rewind",c.LIVE="live",c.UNKNOWN="unknown",c))(Tt||{}),Gn=(a=>(a.GRAPH_SHOW="iGraphShow",a.GRAPH_HIDE="iGraphHide",a.NEXT_AREA="iNextChapterArea",a.NEXT_BUTTON="iNextChapterBtn",a.WATCH_AGAIN="iWatchAgainBtn",a))(Gn||{}),Wn={action_play:"ap",action_play_interactive:"api",first_bytes:"fb",player_ready:"pr",first_frame:"ff",seek:"sk",watch_coverage_record:"wr",watch_coverage_live:"wl",empty_buffer:"eb",action_stop:"as",close_at_empty_buffer:"cb",content_error:"er",player_interface_click:"pc",next_movie:"nm",track_switch:"ts",failover:"fo",quality:"qt"},Hn={vsid:"si",isid:"is",vid:"vi",place:"pl",quality:"qt",cdn_host:"ch",stat_type:"st",param:"pm",vk_app_id:"va",track_code:"tc",connection_type:"cnt",connection_reused:"cr",cached_data:"cd",live:"lv",muted:"mu",mode:"mo",subtitles:"sb",failover:"fo",download_speed:"ds",manual_quality:"mq",ref_domain:"rd",direct_url:"du"},zn={unknown:"un",mobile:"m",lowest:"ls",low:"l",medium:"md",high:"h",fullhd:"f",quadhd:"q",ultrahd:"u"},Qn={pip:"pi",fullscreen:"fs",external:"ex",prefetch:"pr",airplay:"ap",chromecast:"cc",invisible:"iv"};import{fillWithDefault as pp}from"@vkontakte/videoplayer-shared";var tr="1.0.80-dev.96cce6f5.0",Yn="CIOPGQJGDIHBABABA",Ot={prod:"https://api.ok.ru",vk_alias:"https://api.mycdn.me",videotest:"https://videotestapi.ok.ru/api",test:"https://apitest.ok.ru",okcdn:"https://api.okcdn.ru",auto:""};var vp={apiEnv:"vk_alias",apiKey:Yn,requestRetryCount:1,firstFlushTime:5e3,flushDebounceTime:1e4,flushMaxWait:6e4,storageExpiration:36*60*60*1e3,watchCoverageInterval:15e3,disabledOperations:["quality"],disabledCustomFields:[],shorten:!0,maxLoops:100,embedUrlParams:[],useBeacon:!0,synchronizeTime:!0,debugLog:!1,clearStorageAtUnload:!0,useVKComIsMobileLogic:!1,backoff:{start:1e3,factor:1.5,max:5*60*1e3,random:.1}},Jn=r=>pp(r,vp);function _t(){let r="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),e=new Array(36),t=0,i,o;for(o=0;o<36;o++)o===8||o===13||o===18||o===23?e[o]="-":o===14?e[o]="4":(t<=2&&(t=33554432+Math.random()*16777216|0),i=t&15,t=t>>4,e[o]=r[o===19?i&3|8:i]);return e.join("")}import{assertNonNullable as ey,combine as Al,fromEvent as Nl,isNonNullable as he,isNullable as Ll,merge as ry,now as B,observableFrom as ty,once as iy,safeStorage as jr,Subject as oy,Subscription as zi,ValueSubject as Fr,createURL as kl}from"@vkontakte/videoplayer-shared";import{Logger as ny,detectEmbed as ay}from"@vkontakte/videoplayer-shared";var Cr=D(Lu(),1);var Yc=D(Pr(),1),Jc=D(Qc(),1);var Xc=r=>{let{operation:e,custom:t}=r,i=(0,Jc.default)((0,Yc.default)(t).map(([o,a])=>{let u=Hn[o]??o,c=a;return a&&(o==="mode"?c=Qn[a]??a:o==="quality"&&(c=zn[a]??a)),[u,c]}));return{...r,operation:Wn[e]??e,custom:i}};import{ValueSubject as Eb,getExponentialDelay as qb,ErrorCategory as de}from"@vkontakte/videoplayer-shared";var Pb=/Mobile|mini|Fennec|Android|iP(ad|od|hone)|opera (mini|mobi)/i,Fe=class{constructor(e){this.consequentAuthErrors=0;this.authorized$=new Eb(!1);this.params=e}async authorize(e){return this.authToken=e??await this.refreshAuthToken(),this._authorizeWithBackoff()}logBeacon(e){let t="log.externalLog",i=this.createLogParams(e),o=this.sessionKey;if(!o)return;this.params.apiTransport.sendBeacon(t,i,o)||this.logRequest(e).catch(()=>{})}async logRequest(e){let t="log.externalLog",i=this.createLogParams(e),o=this.sessionKey??await this._authorizeWithBackoff();if(!o)return;let a=async(u,c=this.params.config.requestRetryCount)=>{try{return await this.params.apiTransport.sendRequest(t,i,o)}catch(d){if(!d||!("error_code"in d)){this.params.error$.next({id:"logRequestUnknown",category:de.NETWORK,message:`Unknown ${t} error`,thrown:d});return}let f=d?.error_code;switch(f){case 102:case 103:case 104:return this.authorized$.next(!1),this.sessionKey=await this._authorizeWithBackoff(),c>0?a(u,c-1):void 0;case 401:return this.authorized$.next(!1),this.authToken=await this.refreshAuthToken(),this.sessionKey=await this._authorizeWithBackoff(),c>0?a(u,c-1):void 0;default:{this.params.error$.next({id:`LogRequest#${f}`,category:de.EXTERNAL_API,message:`${t} error`,data:d});return}}}};return a(e)}destroy(){window.clearTimeout(this.backoffTimeoutId),this.backoffTimeoutId=0}async refreshAuthToken(){if(this.params.refreshAuthToken)return this.refreshAuthTokenPromise||(this.refreshAuthTokenPromise=(0,Cr.default)(this.params.refreshAuthToken(),()=>{this.refreshAuthTokenPromise=void 0})),this.refreshAuthTokenPromise}createLogParams(e){let t="WEB",i=!1,o=`@vkontakte/videoplayer-statistics:${tr}`;if(this.params.config.useVKComIsMobileLogic){let{appVersion:a}=window.navigator;i=Pb.test(a)}else this.params.mobile&&(i=!0);return i&&(t="M_WEB"),this.params.vktvVersion&&(t="SMART_TV",o=this.params.vktvVersion),{collector:"ok.mobile.apps.video",data:JSON.stringify({application:o,platform:t,items:this.params.config.shorten?e.map(Xc):e})}}_authorizeWithBackoff(){if(!this.consequentAuthErrors)return this._authorize();let e=qb(this.consequentAuthErrors,this.params.config.backoff);return new Promise(t=>{this.backoffTimeoutId||(this.backoffTimeoutId=window.setTimeout(()=>{(0,Cr.default)(this._authorize().then(t).catch(i=>this.params.error$.next({id:"AuthorizeBackoff",category:de.NETWORK,message:"Otherwise unhandled error in authorization",thrown:i})),()=>this.backoffTimeoutId=0)},e))})}async _authorize(){if(this.authorizePromise)return this.authorizePromise;this.sessionKey=void 0,this.authorized$.next(!1);let e="auth.anonymLogin",t={session_data:{version:2,device_id:this.params.deviceId,client_version:tr.split("-")[0],client_type:"SDK_JS"}};return this.authToken!==void 0&&(t.session_data.auth_token=this.authToken,t.session_data.version=3),this.authorizePromise=(0,Cr.default)(this.params.apiTransport.sendRequest(e,t).then(i=>((!i||!i.session_key)&&this.params.error$.next({id:"AuthorizeFailed",category:de.EXTERNAL_API,message:"No session key",data:i}),this.sessionKey=i?.session_key??void 0,this.sessionKey)).catch(async i=>{this.sessionKey=void 0;let o=i?.error_code;switch(o){case 401:return this.authToken=await this.refreshAuthToken(),this._authorizeWithBackoff()}o?this.params.error$.next({id:`Authorize#${o}`,category:de.EXTERNAL_API,message:"authorize error",data:i}):this.params.error$.next({id:"AuthorizeUnknown",category:de.NETWORK,message:"authorize error",thrown:i})}),()=>{this.authorizePromise=void 0,this.consequentAuthErrors=this.sessionKey?0:this.consequentAuthErrors+1,this.authorized$.next(this.sessionKey!==void 0)}),this.authorizePromise}};var Ar=class{constructor(){Object.defineProperty(this,"listeners",{value:{},writable:!0,configurable:!0})}addEventListener(e,t,i){e in this.listeners||(this.listeners[e]=[]),this.listeners[e].push({callback:t,options:i})}removeEventListener(e,t){if(!(e in this.listeners))return;let i=this.listeners[e];for(let o=0,a=i.length;o<a;o++)if(i[o].callback===t){i.splice(o,1);return}}dispatchEvent(e){if(!(e.type in this.listeners))return;let i=this.listeners[e.type].slice();for(let o=0,a=i.length;o<a;o++){let u=i[o];try{u.callback.call(this,e)}catch(c){Promise.resolve().then(()=>{throw c})}u.options&&u.options.once&&this.removeEventListener(e.type,u.callback)}return!e.defaultPrevented}},pe=class extends Ar{constructor(){super(),this.listeners||Ar.call(this),Object.defineProperty(this,"aborted",{value:!1,writable:!0,configurable:!0}),Object.defineProperty(this,"onabort",{value:null,writable:!0,configurable:!0}),Object.defineProperty(this,"reason",{value:void 0,writable:!0,configurable:!0})}toString(){return"[object AbortSignal]"}dispatchEvent(e){e.type==="abort"&&(this.aborted=!0,typeof this.onabort=="function"&&this.onabort.call(this,e)),super.dispatchEvent(e)}},Be=class{constructor(){Object.defineProperty(this,"signal",{value:new pe,writable:!0,configurable:!0})}abort(e){let t;try{t=new Event("abort")}catch{typeof document<"u"?document.createEvent?(t=document.createEvent("Event"),t.initEvent("abort",!1,!1)):(t=document.createEventObject(),t.type="abort"):t={type:"abort",bubbles:!1,cancelable:!1}}let i=e;if(i===void 0)if(typeof document>"u")i=new Error("This operation was aborted"),i.name="AbortError";else try{i=new DOMException("signal is aborted without reason")}catch{i=new Error("This operation was aborted"),i.name="AbortError"}this.signal.reason=i,this.signal.dispatchEvent(t)}toString(){return"[object AbortController]"}};typeof Symbol<"u"&&Symbol.toStringTag&&(Be.prototype[Symbol.toStringTag]="AbortController",pe.prototype[Symbol.toStringTag]="AbortSignal");function Nr(r){return r.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL?(console.log("__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill"),!0):typeof r.Request=="function"&&!r.Request.prototype.hasOwnProperty("signal")||!r.AbortController}function Di(r){typeof r=="function"&&(r={fetch:r});let{fetch:e,Request:t=e.Request,AbortController:i,__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL:o=!1}=r;if(!Nr({fetch:e,Request:t,AbortController:i,__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL:o}))return{fetch:e,Request:a};let a=t;(a&&!a.prototype.hasOwnProperty("signal")||o)&&(a=function(f,p){let v;p&&p.signal&&(v=p.signal,delete p.signal);let s=new t(f,p);return v&&Object.defineProperty(s,"signal",{writable:!1,enumerable:!1,configurable:!0,value:v}),s},a.prototype=t.prototype);let u=e;return{fetch:(d,f)=>{let p=a&&a.prototype.isPrototypeOf(d)?d.signal:f?f.signal:void 0;if(p){let v;try{v=new DOMException("Aborted","AbortError")}catch{v=new Error("Aborted"),v.name="AbortError"}if(p.aborted)return Promise.reject(v);let s=new Promise((l,h)=>{p.addEventListener("abort",()=>h(v),{once:!0})});return f&&f.signal&&delete f.signal,Promise.race([s,u(d,f)])}return u(d,f)},Request:a}}var Tb=()=>"fetch"in window,Ue=Tb()&&Nr({fetch:window.fetch,Request:window.Request,AbortController:window.AbortController}),Zc=Ue?Di({fetch:window.fetch,Request:window.Request,AbortController:window.AbortController}):void 0,$i=Ue?Zc.fetch:window.fetch,RE=Ue?Zc.Request:window.Request,CE=Ue?Be:window.AbortController,AE=Ue?pe:window.AbortSignal;var el=D(rr(),1),rl=D(Pr(),1);import{ErrorCategory as Lr,now as Mi}from"@vkontakte/videoplayer-shared";var Ve=class{constructor(e){this.params=e,this.apiKey=e.config.apiKey,this.apiEnv=e.config.apiEnv,this.apiBaseUrl=Ot[this.apiEnv],this.timeSynchronisation=e.timeSynchronisation,this.isApiBaseUrlFetched=!1}async resolveApiBaseUrl(){if(this.apiEnv!=="auto"||this.isApiBaseUrlFetched)return this.apiBaseUrl;try{let e=atob("aHR0cHM6Ly9kbnMuZ29vZ2xlL3Jlc29sdmU/bmFtZT12aWRlby5fZW5kcG9pbnQub2sucnUmdHlwZT1UWFQ="),o=(await(await $i(e,{method:"GET",mode:"cors",cache:"no-cache"})).json())?.Answer[0]?.data;if(!o)throw new Error("Wrong DNS response");return o}catch(e){return this.params.error$.next({id:"OneStat:ApiTransport:resolveApiBaseUrl",category:Lr.NETWORK,message:"Unhandled resolve api base url error",thrown:e}),Ot.vk_alias}finally{this.isApiBaseUrlFetched=!0}}sendBeacon(e,t,i){if(!window.Blob||!window.navigator.sendBeacon)return!1;let o=this._prepareQueryParams({method:e,queryParams:t,sessionKey:i}),a=new window.Blob([o.toString()],{type:"application/x-www-form-urlencoded"});try{return window.navigator.sendBeacon(`${this.apiBaseUrl}/fb.do`,a)}catch(u){this.params.error$.next({id:"OneStat:ApiTransport:sendBeacon",category:Lr.NETWORK,message:"Unhandled beacon error",thrown:u,data:{method:e,params:t}})}return!1}async sendRequest(e,t,i){let o=Mi(),a=u=>{if(u instanceof TypeError&&(0,el.default)(["Failed to fetch","NetworkError when attempting to fetch resource."],u.message)){this.params.error$.next({id:"Network",category:Lr.NETWORK,message:"Request failed",thrown:u});return}this.params.error$.next({id:"OneStat:ApiTransport:sendRequest",category:Lr.NETWORK,message:"Unhandled request error",thrown:u,data:{method:e,params:t,sessionKey:i,time:Mi()-o}})};return this.apiBaseUrl=await this.resolveApiBaseUrl(),$i(`${this.apiBaseUrl}/fb.do`,{method:"post",headers:{"Content-type":"application/x-www-form-urlencoded"},body:this._prepareQueryParams({method:e,queryParams:t,sessionKey:i})}).then(u=>{let c=Number(u.headers.get("content-length"))===0,d=new Date(u.headers.get("date")??"").getTime(),f=Mi()-o;if(isFinite(d)&&this.timeSynchronisation?.addServerTime(d,f),!c)return u.json().then(p=>Object.prototype.hasOwnProperty.call(p,"error_msg")?Promise.reject(p):p,a)},a)}_prepareQueryParams(e){let t=new URLSearchParams({format:"JSON",method:e.method,application_key:this.apiKey});return e.sessionKey!==void 0&&t.append("session_key",e.sessionKey),(0,rl.default)(e.queryParams).forEach(([i,o])=>t.append(i,typeof o=="string"?o:JSON.stringify(o))),t}};var il=D(rr(),1),ol=D(Pr(),1);import{ErrorCategory as Ob,now as _b,safeStorage as Ke,debounceFn as tl}from"@vkontakte/videoplayer-shared";var kr="onestat_events",ji=r=>e=>e.timestamp+r>=_b(),Dr=class{constructor(e){this.unsaltedStorage=[];this.isPaused=!1;this.isUrgent=e=>{let{operation:t}=e;return(0,il.default)(["action_play","watch_coverage_record","watch_coverage_live"],t)};this.params=e,this.api=e.api,this.error$=e.error$,this.userSalt=e.userSalt,this.loggerDebugLog=e.debugLogger.createComponentLog("stat logger"),this.firstFlush=tl(()=>this.safeFlush(),this.params.config.firstFlushTime,{maxWait:this.params.config.firstFlushTime});let t=Ke.isPersistent()?this.params.config.flushMaxWait:0;this.debouncedFlush=tl(()=>this.safeFlush(),this.params.config.flushDebounceTime,{maxWait:t}),this.subscription=this.api.authorized$.subscribe(i=>{i&&this.debouncedFlush()}),this.housekeepStorage()}safeFlush(){try{this.flush()}catch(e){this.error$.next({id:"LoggerError",category:Ob.WTF,message:e?String(e):"Unknown logger error",thrown:e})}}readFromStorage(){let e=Ke.get(kr);try{return e?JSON.parse(e):{}}catch{}return{}}addToStorage(e){if(!this.userSalt){this.unsaltedStorage.push(e);return}let t=this.readFromStorage(),o=(t[this.userSalt]??[]).filter(ji(this.params.config.storageExpiration));Ke.set(kr,JSON.stringify({...t,[this.userSalt]:[...o,e]}))}getFromStorage(){return this.userSalt?(this.readFromStorage()[this.userSalt]??[]).filter(ji(this.params.config.storageExpiration)):this.unsaltedStorage}markStorageSent(){if(!this.userSalt){this.unsaltedStorage=[];return}let e=this.readFromStorage();delete e[this.userSalt],Ke.set(kr,JSON.stringify(e))}housekeepStorage(){let e=this.readFromStorage();for(let[t,i]of(0,ol.default)(e)){let o=i.filter(ji(this.params.config.storageExpiration));o.length?e[t]=o:delete e[t],this.loggerDebugLog({message:`${i.length} retrieved from storage, ${o.length} of them actual`})}Ke.set(kr,JSON.stringify(e))}log(e){this.addToStorage(e),!this.isPaused&&(this.isUrgent(e)?this.flush():this.lastVsid!==e.custom.vsid?this.firstFlush():this.debouncedFlush(),this.lastVsid=e.custom.vsid)}flush({wantBeacon:e,clearStorage:t}={wantBeacon:!1,clearStorage:!0}){let i=this.getFromStorage();i.length!==0&&(this.api.authorized$.getValue()?(e&&this.params.config.useBeacon?(this.loggerDebugLog({message:`Flushing ${i.length} events through beacon`}),this.api.logBeacon(i)):(this.loggerDebugLog({message:`Flushing ${i.length} events`}),this.api.logRequest(i)),t&&this.markStorageSent()):this.api.authorize(),this.firstFlush.cancel(),this.debouncedFlush.cancel())}pause(){this.isPaused=!0,this.debouncedFlush.cancel()}resume(){this.isPaused=!1,this.debouncedFlush()}destroy(){this.subscription.unsubscribe(),this.firstFlush.cancel(),this.debouncedFlush.cancel()}};import{HttpConnectionType as Fi,Surface as ve,VideoFormat as q,VideoQuality as N}from"@vkontakte/videoplayer-core";import{assertNever as nl}from"@vkontakte/videoplayer-shared";var al=r=>r&&{[N.INVARIANT]:"unknown",[N.Q_144P]:"mobile",[N.Q_240P]:"lowest",[N.Q_360P]:"low",[N.Q_480P]:"medium",[N.Q_576P]:"unknown",[N.Q_720P]:"high",[N.Q_1080P]:"fullhd",[N.Q_1440P]:"quadhd",[N.Q_2160P]:"ultrahd",[N.Q_4320P]:"unknown"}[r],Bi=r=>r&&{[Fi.HTTP1]:"http1",[Fi.HTTP2]:"http2",[Fi.QUIC]:"http3"}[r],sl=r=>{if(r!==void 0)switch(r){case q.MPEG:return"mp4";case q.DASH:case q.DASH_LIVE:case q.DASH_STREAMS:return"dash";case q.DASH_SEP:return"dash_sep";case q.DASH_ONDEMAND:return"ondemand_dash";case q.DASH_WEBM:case q.DASH_LIVE_WEBM:return"webm";case q.DASH_WEBM_AV1:return"av1";case q.DASH_LIVE_CMAF:return"ondemand_dash_live";case q.HLS:case q.HLS_LIVE:return"hls";case q.HLS_ONDEMAND:return"ondemand_hls";case q.HLS_LIVE_CMAF:return"ondemand_hls_live";case q.WEB_RTC_LIVE:return"webrtc";default:return nl(r)}},$r=r=>{if(r!==void 0)switch(r){case ve.NONE:case ve.INLINE:return;case ve.FULLSCREEN:return"fullscreen";case ve.SECOND_SCREEN:return"chromecast";case ve.PIP:return"pip";case ve.INVISIBLE:return"invisible";default:return nl(r)}},ul=r=>{switch(r){case"slow-2g":return"poor";case"2g":return"poor";case"3g":return"good";case"4g":return"excellent"}};var Mr=class{constructor(e){this.offset=void 0;this.offset=e}getOffset(){return this.offset??0}setOffset(e){this.offset=e}now(){return Date.now()+(this.offset??0)}date(e=new Date){return e.setTime(e.getTime()+(this.offset??0)),e}addServerTime(e,t){let i=Date.now(),o=e-i-t/2;if(Math.abs(o)<1e3){this.offset=0;return}this.offset===void 0?this.offset=Math.round(o):this.offset=Math.round(.2*o+(1-.2)*this.offset)}};var Vi=D(Tl(),1),Ol=()=>(0,Vi.default)(Math.floor(Math.random()*2**32).toString(36),7,"0"),_l=()=>(0,Vi.default)(Math.floor(Math.random()*2**64).toString(36),13,"0");import{PlaybackState as wl}from"@vkontakte/videoplayer-core";import{filter as xl,filterChanged as zb,fromEvent as Qb,isNullable as Rl,map as Yb,merge as Ki,Observable as Jb,Subject as Gi,Subscription as Xb,ValueSubject as Zb}from"@vkontakte/videoplayer-shared";var Cl=(r,e)=>new Jb(t=>{let i=new Xb,o=Ki(Qb(window,"beforeunload"),r.events.willDestruct$),a=new Zb(void 0),u;i.add(r.info.isLive$.pipe(zb()).subscribe(U=>{u&&(u.unsubscribe(),a.next(void 0)),U?u=r.info.liveTime$.pipe(Yb(Br=>Br&&Br/1e3)).subscribe(a):u=r.info.position$.subscribe(a),i.add(u)}));let{playing$:c,paused$:d}=r.events,f=r.events.willSeek$.pipe(xl(()=>r.info.playbackState$.getValue()===wl.PLAYING)),p=r.events.seeked$.pipe(xl(()=>r.info.playbackState$.getValue()===wl.PLAYING)),v=!1,s=new Gi;i.add(f.subscribe(()=>{v||s.next(),v=!0})),i.add(p.subscribe(()=>v=!1));let l=new Gi,h=new Gi,g=Ki(c,p,l),b=Ki(d,s,o,r.events.looped$,h),m,S=()=>m=a.getValue(),Ge=()=>{let U=a.getValue();Rl(m)||m===U||Rl(U)||(t.next({from:m,to:U}),m=void 0)},We=()=>{h.next(),l.next()};if(i.add(g.subscribe(S)),i.add(b.subscribe(Ge)),e.forceInterval&&isFinite(e.forceInterval)){let U=0;i.add(g.subscribe(()=>U=window.setTimeout(We,e.forceInterval))),i.add(b.subscribe(()=>window.clearTimeout(U)))}return i});var Ml="_one-stat_",Dl=`${Ml}uuid`,$l=`${Ml}deviceId`,Wi=()=>{let r=new zi;return{subscription:r,subscribe:(e,t)=>{e&&r.add(e.subscribe(t))}}},Qi=class{constructor(e,t){this.subscription=new zi;this.debugLogger=new ny;this.oneStatDebugLog=this.debugLogger.createComponentLog("onestat");this.loopCounter=0;this.disabled=!1;this.vsid$=new Fr(void 0);this.isid$=new Fr(void 0);this.zenUid$=new Fr(void 0);this.seekAction$=new Fr("unknown");this.statContext=e,this.config=Jn(t.config??{}),he(t.apiEnv)&&(this.config.apiEnv=t.apiEnv),this.config.synchronizeTime&&(this.timeSynchronisation=new Mr);let i=new oy;this.experimental={error$:i},jr.get(Dl)&&jr.remove(Dl);let a=jr.get($l);this.statContext.deviceId?this.deviceId=this.statContext.deviceId:a?this.deviceId=a:(this.deviceId=_t(),jr.set($l,this.deviceId)),this.resetViewSession(),t.useIsid&&this.isid$.next(t.isid??_l()),this.zenUid$.next(t.zenUid);let u=new Ve({config:this.config,error$:i,timeSynchronisation:this.timeSynchronisation});this.api=new Fe({config:this.config,apiTransport:u,refreshAuthToken:t.refreshAuthToken,mobile:this.statContext.mobile??!1,deviceId:this.deviceId,error$:i,vktvVersion:t.vktvVersion}),this.logger=new Dr({config:this.config,debugLogger:this.debugLogger,api:this.api,error$:i,userSalt:t.userSalt});let{isEmbed:c,topOrigin:d}=ay();this.isEmbed=c,this.embedParent=d?new URL(d).hostname:void 0,this.subscribe()}updateContext(e){this.statContext={...this.statContext,...e}}attachTo(e){let t=new zi,i=(s,l)=>t.add(s.subscribe(l));i(e.events.willStart$,()=>{let s=e.info.position$.getValue();this.logActionPlay({position:s}),this.statContext.projectId&&this.logActionPlayInteractive()}),i(e.events.looped$,()=>{this.resetViewSession(),++this.loopCounter>this.config.maxLoops&&(this.disabled=!0),this.logActionPlay({position:e.info.position$.getValue()})}),i(e.events.seeked$,()=>{this.logSeek({action:this.seekAction$.getValue(),time:e.info.position$.getValue()}),this.seekAction$.next("unknown")}),i(e.events.paused$,()=>{this.logPause({position:e.info.position$.getValue()})}),i(e.events.willResume$,()=>{this.logPlay()}),i(e.events.started$,()=>{this.statContext.clip&&this.logWatchCoverageRecord({start:0,end:0})}),i(e.events.playing$,()=>{this.logPlaying()}),i(Cl(e,{forceInterval:this.config.watchCoverageInterval}),s=>{let l=e.info.isLive$.getValue(),h=e.info.atLiveEdge$.getValue(),g={start:parseFloat(s.from.toFixed(3)),end:parseFloat(s.to.toFixed(3))};if(h){let b=e.info.liveLatency$.getValue()??0,m=e.info.currentBuffer$.getValue()?.end??0,S=e.info.liveBufferTime$.getValue()??0,Ge=Math.round((b-(m-S))*1e3),We=Math.round(b*1e3);Ge&&We&&(g.latency=Ge,g.bufferLatency=We)}l?this.logWatchCoverageLive(g):this.logWatchCoverageRecord(g)});let o;i(e.info.isStalled$,s=>{s?o=B():(he(o)&&this.logEmptyBuffer({duration:B()-o}),o=void 0)});let a=!1;t.add(e.events.fatalError$.pipe(iy()).subscribe(()=>a=!0)),i(e.events.willStop$,()=>{if(e.info.isStalled$.getValue()){let l=he(o)?B()-o:void 0;this.logCloseAtEmptyBuffer({duration:l??0}),o=void 0}else a||this.logActionStop()}),i(e.events.managedError$,({id:s})=>{this.logError({fatal:!1,errorType:s})}),i(e.events.fatalError$,({id:s})=>{this.logError({fatal:!0,errorType:s})});let u,c,d=!1;i(e.events.firstBytes$,s=>{u=B(),this.logFirstBytes({time:s})}),i(e.events.willStart$,()=>c=B()),i(e.info.currentBuffer$,s=>{!d&&s&&s.end-s.start>0&&he(u)&&(this.logPlayerReady({duration:B()-u}),d=!0)}),i(e.events.firstFrame$,()=>{he(u)&&!d&&(this.logPlayerReady({duration:B()-u}),d=!0),he(c)&&this.logFirstFrame({time:B()-c})});let f;i(e.info.currentVideoStream$,s=>{s&&(f&&s.id!==f&&this.logTrackSwitch(s),f=s.id)});let p;i(e.info.currentAudioStream$,s=>{s&&(p&&s.id!==p&&this.logTrackSwitch(s),p=s.id)}),i(e.info.atLiveEdge$,s=>this.updateContext({liveEdge:s})),i(Al({muted:e.info.muted$,volume:e.info.volume$}),({muted:s,volume:l})=>this.updateContext({audible:!s&&l>0})),i(e.info.currentQuality$,s=>{let l=al(s);this.updateContext({quality:l}),l&&this.logQuality(l)}),i(e.info.isAutoQualityEnabled$,s=>this.updateContext({autoQuality:s})),i(e.info.currentFormat$,s=>this.updateContext({contentType:sl(s)})),i(e.info.currentPlaybackRate$,s=>this.updateContext({rate:s})),i(e.info.is3DVideo$,s=>this.updateContext({is3d:s}));let v;return i(e.info.hostname$,s=>{let l=v!==void 0&&v!==s;this.updateContext({cdnHostname:s,failover:l}),l&&this.logFailover(s),v=s}),i(e.info.throughputEstimation$,s=>this.updateContext({downloadSpeed:s})),i(e.info.httpConnectionType$,s=>{this.statContext.firstConnectionType||this.updateContext({firstConnectionType:Bi(s)}),this.updateContext({connectionType:Bi(s)})}),i(e.info.httpConnectionReused$,s=>{Ll(this.statContext.firstConnectionReused)&&this.updateContext({firstConnectionReused:s}),this.updateContext({connectionReused:s})}),i(e.info.surface$,s=>this.updateContext({mode:$r(s)})),i(Al({current:e.info.currentTextTrack$,available:e.info.availableTextTracks$}),({current:s,available:l})=>{let h=l.find(({id:b})=>b===s),g=h&&(h.isAuto?`${h.language}_auto`:h.language);this.updateContext({subtitles:g?.split(".")[0]})}),this.player=e,this.uiEvents&&this.attachToUi(this.uiEvents),this.resubscribeBeforeunload(),this.subscription.add(t),t}attachToUi(e){this.uiEvents=e;let{subscription:t,subscribe:i}=Wi();return this.player&&(i(e.actionRewind$,()=>{this.player&&(this.resetViewSession(),this.logActionPlay({position:this.player.info.position$.getValue()}))}),i(e.actionSeek$,this.seekAction$),i(e.inPiP$,o=>{let a=o?"pip":$r(this.player?.info.surface$.getValue());this.updateContext({mode:a})}),i(e.inFullscreen$,o=>{let a=o?"fullscreen":$r(this.player?.info.surface$.getValue());this.updateContext({mode:a})}),i(e.actionSetSubtitle$,o=>this.updateContext({subtitles:o.split(".")[0]})),i(e.nextMovie$,o=>this.logNextMovie(o)),this.resubscribeBeforeunload(),this.subscription.add(t)),t}attachToAds(e){let{subscription:t,subscribe:i}=Wi();return i(e.slotRequested$,()=>this.logAdSlotRequest()),i(e.started$,o=>this.logAdStarted(o)),i(e.paused$,()=>this.logAdPaused()),i(e.resumed$,()=>this.logAdResumed()),i(e.ended$,()=>this.logAdEnded()),i(e.skipped$,()=>this.logAdSkipped()),i(e.clicked$,()=>this.logAdClicked()),i(e.error$,o=>this.logError({errorType:o,fatal:!1})),this.resubscribeBeforeunload(),this.subscription.add(t),t}attachToInteractive(e){let{subscription:t,subscribe:i}=Wi();return i(e.click$,o=>this.logInterfaceClick(o)),i(e.nextMovie$,o=>this.logNextMovie(o)),this.resubscribeBeforeunload(),this.subscription.add(t),t}authorize(e){return this.api.authorize(e)}pause(){this.logger.pause(),this.oneStatDebugLog({message:"paused"})}resume(){this.logger.resume(),this.oneStatDebugLog({message:"resumed"})}destroy(){this.logger.flush(),this.subscription.unsubscribe(),this.api.destroy(),this.logger.destroy()}resetViewSession(){this.oneStatDebugLog({message:"VSID reset"}),this.vsid$.next(Ol())}getDeviceId(){return this.deviceId}setFieldBlacklist(){}logInited(){}logReady(e){this.log({operation:"player_ready",param:String(e.time)})}logStarted(...e){this.logActionPlay(...e)}logPlay(){this.log({operation:"play_toggle"})}logPlaying(){this.log({operation:"playing"})}logPause(e){this.log({operation:"pause",param:String(Math.round(e.position))})}logSeek(e){this.log({operation:"seek",param:e.action,time:e.time})}logFirstBytes(e){this.log({operation:"first_bytes",param:String(e.time)})}logFirstFrame(e){this.log({operation:"first_frame",param:String(e.time)})}logError(e){this.log({operation:"content_error",param:`${e.fatal?"fatal":"recoverable"}_${e.errorType}`})}logWatchCoverageRecord(e){this.log({operation:"watch_coverage_record",param:`${e.start}-${e.end}`},{in_history:this.statContext.inHistory?1:void 0})}logWatchCoverageLive(e){let t=this.timeSynchronisation?.getOffset()??0,i=e.start+t,o=e.end+t;this.log({operation:"watch_coverage_live",param:`${i}-${o}`},{in_history:this.statContext.inHistory?1:void 0,latency:e.latency,buffer_latency:e.bufferLatency})}logEmptyBuffer(e){this.log({operation:"empty_buffer",param:String(e.duration)})}logDownloadSpeed(){}logAdSlotRequest(){this.log({operation:"adv",param:"slot_request"})}logAdStarted(e){this.log({operation:"adv",param:e})}logAdPaused(){this.log({operation:"adv",param:"pause"})}logAdResumed(){this.log({operation:"adv",param:"resume"})}logAdEnded(){this.log({operation:"adv",param:"ended"})}logAdSkipped(){this.log({operation:"adv",param:"skip"})}logAdClicked(){this.log({operation:"adv",param:"click"})}logInterfaceClick(e){this.log({operation:"player_interface_click",param:e})}logNextMovie(e){this.log({operation:"next_movie",param:String(e)})}subscribe(){this.resubscribeBeforeunload();let e=window.navigator.connection;e&&"onchange"in e&&"effectiveType"in e&&this.subscription.add(ry(Nl(e,"change"),ty(["init"])).subscribe(()=>this.updateContext({network:ul(e.effectiveType)}))),this.config.debugLog&&this.debugLogger.log$.subscribe(t=>{console.debug("%c stat ","background:#fa6470;",`component: ${t.component}.`,t.message)})}resubscribeBeforeunload(){this.beforeunloadSubscription?.unsubscribe(),this.beforeunloadSubscription=Nl(window,"beforeunload").subscribe(()=>this.logger.flush({wantBeacon:!0,clearStorage:this.config.clearStorageAtUnload})),this.subscription.add(this.beforeunloadSubscription)}logPlayerReady(e){this.log({operation:"player_ready",param:String(Math.round(e.duration))})}logActionPlay(e){this.log({operation:"action_play",param:String(Math.round(e.position))})}logActionPlayInteractive(){this.statContext.projectId&&this.log({operation:"action_play_interactive",param:String(this.statContext.movieId)},{vid:this.statContext.projectId})}logFailover(e){this.log({operation:"failover",param:e})}logCloseAtEmptyBuffer(e){this.log({operation:"close_at_empty_buffer",param:String(Math.round(e.duration))})}logActionStop(){this.log({operation:"action_stop"})}logTrackSwitch(e){this.log({operation:"track_switch",param:e.id})}logQuality(e){this.log({operation:"quality",param:e})}log(e,t={}){if(this.disabled){this.oneStatDebugLog({message:`operation ${e.operation} but statistics is disabled`});return}if((0,Hi.default)(this.config.disabledOperations,e.operation)){this.oneStatDebugLog({message:`operation ${e.operation} but it is disabled`});return}this.oneStatDebugLog({message:`operation ${e.operation} ${e.param}`});let i=this.createLogItem(e,t);this.logger.log(i)}createLogItem({operation:e,param:t,time:i},o={}){let a=this.timeSynchronisation?.now()??B(),u=this.vsid$.getValue();ey(u);let c=this.isid$.getValue(),d=e==="empty_buffer"||e==="close_at_empty_buffer"?this.statContext.connectionType:this.statContext.firstConnectionType,f=this.statContext.firstConnectionReused,p,v;if(this.isEmbed||this.statContext.place==="embed"){p=this.embedParent;let l=[...new URLSearchParams(location.search).entries()].filter(([h,g])=>(0,Hi.default)(this.config.embedUrlParams,h));v=new URLSearchParams(l).toString()}else this.statContext.place==="direct"&&(this.statContext.refDomain?p=kl(this.statContext.refDomain)?.hostname??this.statContext.refDomain:document.referrer&&(p=kl(document.referrer)?.hostname??document.referrer),v=location.href.substring(0,1024));let s={vsid:u,isid:c,vid:this.statContext.movieId,uid:this.zenUid$.getValue(),ct:this.statContext.contentType,place:this.isEmbed?"embed":this.statContext.place,quality:this.statContext.quality,cdn_host:this.statContext.cdnHostname,stat_type:this.statContext.autoplay===!0?"auto":this.statContext.autoplay===!1?"":void 0,param:t,vk_app_id:this.statContext.vkAppId,track_code:this.statContext.trackCode,connection_type:d,connection_reused:f===!0?1:f===!1?0:void 0,cached_data:this.statContext.cached===!0?1:this.statContext.cached===!1?0:void 0,live:this.statContext.liveEdge?1:void 0,muted:this.statContext.audible===!1?1:void 0,mode:this.statContext.mode,subtitles:this.statContext.subtitles,download_speed:this.statContext.downloadSpeed,manual_quality:this.statContext.autoQuality?void 0:1,ref_domain:p,direct_url:v,rate:this.statContext.rate===1||Ll(this.statContext.rate)?void 0:this.statContext.rate.toFixed(2),view_360:this.statContext.is3d?1:void 0,aid:this.statContext.albumId,vk_playlist_id:this.statContext.vkPlaylistId,...o};for(let l of this.config.disabledCustomFields)delete s[l];return{operation:e,type:1,time:i,network:this.statContext.network,timestamp:a,custom:s}}};export{_e as ApiEnv,Pt as ConnectionType,qt as ContentType,Gn as InteractiveInterfaceClick,Qi as OneStat,Et as Quality,Tt as SeekAction,tr as VERSION};
|
|
6
|
+
var Ul=Object.create;var Yi=Object.defineProperty;var Vl=Object.getOwnPropertyDescriptor;var Kl=Object.getOwnPropertyNames;var Gl=Object.getPrototypeOf,Wl=Object.prototype.hasOwnProperty;var n=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var Hl=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Kl(e))!Wl.call(r,o)&&o!==t&&Yi(r,o,{get:()=>e[o],enumerable:!(i=Vl(e,o))||i.enumerable});return r};var D=(r,e,t)=>(t=r!=null?Ul(Gl(r)):{},Hl(e||!r||!r.__esModule?Yi(t,"default",{value:r,enumerable:!0}):t,r));var y=n((Ur,Ji)=>{"use strict";var be=function(r){return r&&r.Math===Math&&r};Ji.exports=be(typeof globalThis=="object"&&globalThis)||be(typeof window=="object"&&window)||be(typeof self=="object"&&self)||be(typeof global=="object"&&global)||be(typeof Ur=="object"&&Ur)||function(){return this}()||Function("return this")()});var E=n((fy,Xi)=>{"use strict";Xi.exports=function(r){try{return!!r()}catch{return!0}}});var ye=n((dy,Zi)=>{"use strict";var zl=E();Zi.exports=!zl(function(){var r=function(){}.bind();return typeof r!="function"||r.hasOwnProperty("prototype")})});var Vr=n((py,io)=>{"use strict";var Ql=ye(),to=Function.prototype,eo=to.apply,ro=to.call;io.exports=typeof Reflect=="object"&&Reflect.apply||(Ql?ro.bind(eo):function(){return ro.apply(eo,arguments)})});var q=n((vy,ao)=>{"use strict";var oo=ye(),no=Function.prototype,Kr=no.call,Yl=oo&&no.bind.bind(Kr,Kr);ao.exports=oo?Yl:function(r){return function(){return Kr.apply(r,arguments)}}});var Ie=n((hy,uo)=>{"use strict";var so=q(),Jl=so({}.toString),Xl=so("".slice);uo.exports=function(r){return Xl(Jl(r),8,-1)}});var Gr=n((gy,co)=>{"use strict";var Zl=Ie(),ef=q();co.exports=function(r){if(Zl(r)==="Function")return ef(r)}});var I=n((my,lo)=>{"use strict";var Wr=typeof document=="object"&&document.all;lo.exports=typeof Wr>"u"&&Wr!==void 0?function(r){return typeof r=="function"||r===Wr}:function(r){return typeof r=="function"}});var P=n((by,fo)=>{"use strict";var rf=E();fo.exports=!rf(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7})});var x=n((yy,po)=>{"use strict";var tf=ye(),He=Function.prototype.call;po.exports=tf?He.bind(He):function(){return He.apply(He,arguments)}});var Hr=n(go=>{"use strict";var vo={}.propertyIsEnumerable,ho=Object.getOwnPropertyDescriptor,of=ho&&!vo.call({1:2},1);go.f=of?function(e){var t=ho(this,e);return!!t&&t.enumerable}:vo});var Se=n((Sy,mo)=>{"use strict";mo.exports=function(r,e){return{enumerable:!(r&1),configurable:!(r&2),writable:!(r&4),value:e}}});var yo=n((Ey,bo)=>{"use strict";var nf=q(),af=E(),sf=Ie(),zr=Object,uf=nf("".split);bo.exports=af(function(){return!zr("z").propertyIsEnumerable(0)})?function(r){return sf(r)==="String"?uf(r,""):zr(r)}:zr});var Ee=n((_y,Io)=>{"use strict";Io.exports=function(r){return r==null}});var Z=n((qy,So)=>{"use strict";var cf=Ee(),lf=TypeError;So.exports=function(r){if(cf(r))throw new lf("Can't call method on "+r);return r}});var K=n((Py,Eo)=>{"use strict";var ff=yo(),df=Z();Eo.exports=function(r){return ff(df(r))}});var R=n((Ty,_o)=>{"use strict";var pf=I();_o.exports=function(r){return typeof r=="object"?r!==null:pf(r)}});var ee=n((Oy,qo)=>{"use strict";qo.exports={}});var $=n((wy,To)=>{"use strict";var Qr=ee(),Yr=y(),vf=I(),Po=function(r){return vf(r)?r:void 0};To.exports=function(r,e){return arguments.length<2?Po(Qr[r])||Po(Yr[r]):Qr[r]&&Qr[r][e]||Yr[r]&&Yr[r][e]}});var ze=n((xy,Oo)=>{"use strict";var hf=q();Oo.exports=hf({}.isPrototypeOf)});var G=n((Ry,Ro)=>{"use strict";var gf=y(),wo=gf.navigator,xo=wo&&wo.userAgent;Ro.exports=xo?String(xo):""});var Xr=n((Ay,Do)=>{"use strict";var ko=y(),Jr=G(),Ao=ko.process,Co=ko.Deno,Lo=Ao&&Ao.versions||Co&&Co.version,No=Lo&&Lo.v8,A,Qe;No&&(A=No.split("."),Qe=A[0]>0&&A[0]<4?1:+(A[0]+A[1]));!Qe&&Jr&&(A=Jr.match(/Edge\/(\d+)/),(!A||A[1]>=74)&&(A=Jr.match(/Chrome\/(\d+)/),A&&(Qe=+A[1])));Do.exports=Qe});var Zr=n((Cy,jo)=>{"use strict";var $o=Xr(),mf=E(),bf=y(),yf=bf.String;jo.exports=!!Object.getOwnPropertySymbols&&!mf(function(){var r=Symbol("symbol detection");return!yf(r)||!(Object(r)instanceof Symbol)||!Symbol.sham&&$o&&$o<41})});var et=n((Ly,Mo)=>{"use strict";var If=Zr();Mo.exports=If&&!Symbol.sham&&typeof Symbol.iterator=="symbol"});var rt=n((Ny,Fo)=>{"use strict";var Sf=$(),Ef=I(),_f=ze(),qf=et(),Pf=Object;Fo.exports=qf?function(r){return typeof r=="symbol"}:function(r){var e=Sf("Symbol");return Ef(e)&&_f(e.prototype,Pf(r))}});var _e=n((ky,Bo)=>{"use strict";var Tf=String;Bo.exports=function(r){try{return Tf(r)}catch{return"Object"}}});var j=n((Dy,Uo)=>{"use strict";var Of=I(),wf=_e(),xf=TypeError;Uo.exports=function(r){if(Of(r))return r;throw new xf(wf(r)+" is not a function")}});var Ye=n(($y,Vo)=>{"use strict";var Rf=j(),Af=Ee();Vo.exports=function(r,e){var t=r[e];return Af(t)?void 0:Rf(t)}});var Go=n((jy,Ko)=>{"use strict";var tt=x(),it=I(),ot=R(),Cf=TypeError;Ko.exports=function(r,e){var t,i;if(e==="string"&&it(t=r.toString)&&!ot(i=tt(t,r))||it(t=r.valueOf)&&!ot(i=tt(t,r))||e!=="string"&&it(t=r.toString)&&!ot(i=tt(t,r)))return i;throw new Cf("Can't convert object to primitive value")}});var N=n((My,Wo)=>{"use strict";Wo.exports=!0});var Qo=n((Fy,zo)=>{"use strict";var Ho=y(),Lf=Object.defineProperty;zo.exports=function(r,e){try{Lf(Ho,r,{value:e,configurable:!0,writable:!0})}catch{Ho[r]=e}return e}});var qe=n((By,Xo)=>{"use strict";var Nf=N(),kf=y(),Df=Qo(),Yo="__core-js_shared__",Jo=Xo.exports=kf[Yo]||Df(Yo,{});(Jo.versions||(Jo.versions=[])).push({version:"3.43.0",mode:Nf?"pure":"global",copyright:"\xA9 2014-2025 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.43.0/LICENSE",source:"https://github.com/zloirock/core-js"})});var nt=n((Uy,en)=>{"use strict";var Zo=qe();en.exports=function(r,e){return Zo[r]||(Zo[r]=e||{})}});var at=n((Vy,rn)=>{"use strict";var $f=Z(),jf=Object;rn.exports=function(r){return jf($f(r))}});var k=n((Ky,tn)=>{"use strict";var Mf=q(),Ff=at(),Bf=Mf({}.hasOwnProperty);tn.exports=Object.hasOwn||function(e,t){return Bf(Ff(e),t)}});var st=n((Gy,on)=>{"use strict";var Uf=q(),Vf=0,Kf=Math.random(),Gf=Uf(1.1.toString);on.exports=function(r){return"Symbol("+(r===void 0?"":r)+")_"+Gf(++Vf+Kf,36)}});var T=n((Wy,an)=>{"use strict";var Wf=y(),Hf=nt(),nn=k(),zf=st(),Qf=Zr(),Yf=et(),re=Wf.Symbol,ut=Hf("wks"),Jf=Yf?re.for||re:re&&re.withoutSetter||zf;an.exports=function(r){return nn(ut,r)||(ut[r]=Qf&&nn(re,r)?re[r]:Jf("Symbol."+r)),ut[r]}});var ln=n((Hy,cn)=>{"use strict";var Xf=x(),sn=R(),un=rt(),Zf=Ye(),ed=Go(),rd=T(),td=TypeError,id=rd("toPrimitive");cn.exports=function(r,e){if(!sn(r)||un(r))return r;var t=Zf(r,id),i;if(t){if(e===void 0&&(e="default"),i=Xf(t,r,e),!sn(i)||un(i))return i;throw new td("Can't convert object to primitive value")}return e===void 0&&(e="number"),ed(r,e)}});var ct=n((zy,fn)=>{"use strict";var od=ln(),nd=rt();fn.exports=function(r){var e=od(r,"string");return nd(e)?e:e+""}});var Je=n((Qy,pn)=>{"use strict";var ad=y(),dn=R(),lt=ad.document,sd=dn(lt)&&dn(lt.createElement);pn.exports=function(r){return sd?lt.createElement(r):{}}});var ft=n((Yy,vn)=>{"use strict";var ud=P(),cd=E(),ld=Je();vn.exports=!ud&&!cd(function(){return Object.defineProperty(ld("div"),"a",{get:function(){return 7}}).a!==7})});var mn=n(gn=>{"use strict";var fd=P(),dd=x(),pd=Hr(),vd=Se(),hd=K(),gd=ct(),md=k(),bd=ft(),hn=Object.getOwnPropertyDescriptor;gn.f=fd?hn:function(e,t){if(e=hd(e),t=gd(t),bd)try{return hn(e,t)}catch{}if(md(e,t))return vd(!dd(pd.f,e,t),e[t])}});var dt=n((Xy,bn)=>{"use strict";var yd=E(),Id=I(),Sd=/#|\.prototype\./,Pe=function(r,e){var t=_d[Ed(r)];return t===Pd?!0:t===qd?!1:Id(e)?yd(e):!!e},Ed=Pe.normalize=function(r){return String(r).replace(Sd,".").toLowerCase()},_d=Pe.data={},qd=Pe.NATIVE="N",Pd=Pe.POLYFILL="P";bn.exports=Pe});var Te=n((Zy,In)=>{"use strict";var yn=Gr(),Td=j(),Od=ye(),wd=yn(yn.bind);In.exports=function(r,e){return Td(r),e===void 0?r:Od?wd(r,e):function(){return r.apply(e,arguments)}}});var pt=n((eI,Sn)=>{"use strict";var xd=P(),Rd=E();Sn.exports=xd&&Rd(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42})});var M=n((rI,En)=>{"use strict";var Ad=R(),Cd=String,Ld=TypeError;En.exports=function(r){if(Ad(r))return r;throw new Ld(Cd(r)+" is not an object")}});var W=n(qn=>{"use strict";var Nd=P(),kd=ft(),Dd=pt(),Xe=M(),_n=ct(),$d=TypeError,vt=Object.defineProperty,jd=Object.getOwnPropertyDescriptor,ht="enumerable",gt="configurable",mt="writable";qn.f=Nd?Dd?function(e,t,i){if(Xe(e),t=_n(t),Xe(i),typeof e=="function"&&t==="prototype"&&"value"in i&&mt in i&&!i[mt]){var o=jd(e,t);o&&o[mt]&&(e[t]=i.value,i={configurable:gt in i?i[gt]:o[gt],enumerable:ht in i?i[ht]:o[ht],writable:!1})}return vt(e,t,i)}:vt:function(e,t,i){if(Xe(e),t=_n(t),Xe(i),kd)try{return vt(e,t,i)}catch{}if("get"in i||"set"in i)throw new $d("Accessors not supported");return"value"in i&&(e[t]=i.value),e}});var te=n((iI,Pn)=>{"use strict";var Md=P(),Fd=W(),Bd=Se();Pn.exports=Md?function(r,e,t){return Fd.f(r,e,Bd(1,t))}:function(r,e,t){return r[e]=t,r}});var O=n((oI,On)=>{"use strict";var Oe=y(),Ud=Vr(),Vd=Gr(),Kd=I(),Gd=mn().f,Wd=dt(),ie=ee(),Hd=Te(),oe=te(),Tn=k();qe();var zd=function(r){var e=function(t,i,o){if(this instanceof e){switch(arguments.length){case 0:return new r;case 1:return new r(t);case 2:return new r(t,i)}return new r(t,i,o)}return Ud(r,this,arguments)};return e.prototype=r.prototype,e};On.exports=function(r,e){var t=r.target,i=r.global,o=r.stat,a=r.proto,u=i?Oe:o?Oe[t]:Oe[t]&&Oe[t].prototype,c=i?ie:ie[t]||oe(ie,t,{})[t],d=c.prototype,f,p,v,s,l,h,g,b,m;for(s in e)f=Wd(i?s:t+(o?".":"#")+s,r.forced),p=!f&&u&&Tn(u,s),h=c[s],p&&(r.dontCallGetSet?(m=Gd(u,s),g=m&&m.value):g=u[s]),l=p&&g?g:e[s],!(!f&&!a&&typeof h==typeof l)&&(r.bind&&p?b=Hd(l,Oe):r.wrap&&p?b=zd(l):a&&Kd(l)?b=Vd(l):b=l,(r.sham||l&&l.sham||h&&h.sham)&&oe(b,"sham",!0),oe(c,s,b),a&&(v=t+"Prototype",Tn(ie,v)||oe(ie,v,{}),oe(ie[v],s,l),r.real&&d&&(f||!d[s])&&oe(d,s,l)))}});var xn=n((nI,wn)=>{"use strict";var Qd=Math.ceil,Yd=Math.floor;wn.exports=Math.trunc||function(e){var t=+e;return(t>0?Yd:Qd)(t)}});var Ze=n((aI,Rn)=>{"use strict";var Jd=xn();Rn.exports=function(r){var e=+r;return e!==e||e===0?0:Jd(e)}});var Cn=n((sI,An)=>{"use strict";var Xd=Ze(),Zd=Math.max,ep=Math.min;An.exports=function(r,e){var t=Xd(r);return t<0?Zd(t+e,0):ep(t,e)}});var bt=n((uI,Ln)=>{"use strict";var rp=Ze(),tp=Math.min;Ln.exports=function(r){var e=rp(r);return e>0?tp(e,9007199254740991):0}});var yt=n((cI,Nn)=>{"use strict";var ip=bt();Nn.exports=function(r){return ip(r.length)}});var It=n((lI,Dn)=>{"use strict";var op=K(),np=Cn(),ap=yt(),kn=function(r){return function(e,t,i){var o=op(e),a=ap(o);if(a===0)return!r&&-1;var u=np(i,a),c;if(r&&t!==t){for(;a>u;)if(c=o[u++],c!==c)return!0}else for(;a>u;u++)if((r||u in o)&&o[u]===t)return r||u||0;return!r&&-1}};Dn.exports={includes:kn(!0),indexOf:kn(!1)}});var St=n((fI,$n)=>{"use strict";$n.exports=function(){}});var jn=n(()=>{"use strict";var sp=O(),up=It().includes,cp=E(),lp=St(),fp=cp(function(){return!Array(1).includes()});sp({target:"Array",proto:!0,forced:fp},{includes:function(e){return up(this,e,arguments.length>1?arguments[1]:void 0)}});lp("includes")});var er=n((vI,Mn)=>{"use strict";var dp=$();Mn.exports=dp});var Bn=n((hI,Fn)=>{"use strict";jn();var pp=er();Fn.exports=pp("Array","includes")});var Vn=n((gI,Un)=>{"use strict";var vp=Bn();Un.exports=vp});var rr=n((mI,Kn)=>{"use strict";var hp=Vn();Kn.exports=hp});var Xn=n(()=>{"use strict"});var wt=n((RI,Zn)=>{"use strict";var xe=y(),bp=G(),yp=Ie(),ir=function(r){return bp.slice(0,r.length)===r};Zn.exports=function(){return ir("Bun/")?"BUN":ir("Cloudflare-Workers")?"CLOUDFLARE":ir("Deno/")?"DENO":ir("Node.js/")?"NODE":xe.Bun&&typeof Bun.version=="string"?"BUN":xe.Deno&&typeof Deno.version=="object"?"DENO":yp(xe.process)==="process"?"NODE":xe.window&&xe.document?"BROWSER":"REST"}()});var or=n((AI,ea)=>{"use strict";var Ip=wt();ea.exports=Ip==="NODE"});var ne=n((CI,ra)=>{"use strict";var Sp=te();ra.exports=function(r,e,t,i){return i&&i.enumerable?r[e]=t:Sp(r,e,t),r}});var ia=n((LI,ta)=>{"use strict";var Ep=q(),_p=j();ta.exports=function(r,e,t){try{return Ep(_p(Object.getOwnPropertyDescriptor(r,e)[t]))}catch{}}});var na=n((NI,oa)=>{"use strict";var qp=R();oa.exports=function(r){return qp(r)||r===null}});var sa=n((kI,aa)=>{"use strict";var Pp=na(),Tp=String,Op=TypeError;aa.exports=function(r){if(Pp(r))return r;throw new Op("Can't set "+Tp(r)+" as a prototype")}});var xt=n((DI,ua)=>{"use strict";var wp=ia(),xp=R(),Rp=Z(),Ap=sa();ua.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var r=!1,e={},t;try{t=wp(Object.prototype,"__proto__","set"),t(e,[]),r=e instanceof Array}catch{}return function(o,a){return Rp(o),Ap(a),xp(o)&&(r?t(o,a):o.__proto__=a),o}}():void 0)});var nr=n(($I,la)=>{"use strict";var Cp=T(),Lp=Cp("toStringTag"),ca={};ca[Lp]="z";la.exports=String(ca)==="[object z]"});var Re=n((jI,fa)=>{"use strict";var Np=nr(),kp=I(),ar=Ie(),Dp=T(),$p=Dp("toStringTag"),jp=Object,Mp=ar(function(){return arguments}())==="Arguments",Fp=function(r,e){try{return r[e]}catch{}};fa.exports=Np?ar:function(r){var e,t,i;return r===void 0?"Undefined":r===null?"Null":typeof(t=Fp(e=jp(r),$p))=="string"?t:Mp?ar(e):(i=ar(e))==="Object"&&kp(e.callee)?"Arguments":i}});var pa=n((MI,da)=>{"use strict";var Bp=nr(),Up=Re();da.exports=Bp?{}.toString:function(){return"[object "+Up(this)+"]"}});var Ae=n((FI,ha)=>{"use strict";var Vp=nr(),Kp=W().f,Gp=te(),Wp=k(),Hp=pa(),zp=T(),va=zp("toStringTag");ha.exports=function(r,e,t,i){var o=t?r:r&&r.prototype;o&&(Wp(o,va)||Kp(o,va,{configurable:!0,value:e}),i&&!Vp&&Gp(o,"toString",Hp))}});var ma=n((BI,ga)=>{"use strict";var Qp=W();ga.exports=function(r,e,t){return Qp.f(r,e,t)}});var Ia=n((UI,ya)=>{"use strict";var Yp=$(),Jp=ma(),Xp=T(),Zp=P(),ba=Xp("species");ya.exports=function(r){var e=Yp(r);Zp&&e&&!e[ba]&&Jp(e,ba,{configurable:!0,get:function(){return this}})}});var Ea=n((VI,Sa)=>{"use strict";var ev=ze(),rv=TypeError;Sa.exports=function(r,e){if(ev(e,r))return r;throw new rv("Incorrect invocation")}});var At=n((KI,_a)=>{"use strict";var tv=q(),iv=I(),Rt=qe(),ov=tv(Function.toString);iv(Rt.inspectSource)||(Rt.inspectSource=function(r){return ov(r)});_a.exports=Rt.inspectSource});var xa=n((GI,wa)=>{"use strict";var nv=q(),av=E(),qa=I(),sv=Re(),uv=$(),cv=At(),Pa=function(){},Ta=uv("Reflect","construct"),Ct=/^\s*(?:class|function)\b/,lv=nv(Ct.exec),fv=!Ct.test(Pa),Ce=function(e){if(!qa(e))return!1;try{return Ta(Pa,[],e),!0}catch{return!1}},Oa=function(e){if(!qa(e))return!1;switch(sv(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return fv||!!lv(Ct,cv(e))}catch{return!0}};Oa.sham=!0;wa.exports=!Ta||av(function(){var r;return Ce(Ce.call)||!Ce(Object)||!Ce(function(){r=!0})||r})?Oa:Ce});var Aa=n((WI,Ra)=>{"use strict";var dv=xa(),pv=_e(),vv=TypeError;Ra.exports=function(r){if(dv(r))return r;throw new vv(pv(r)+" is not a constructor")}});var Lt=n((HI,La)=>{"use strict";var Ca=M(),hv=Aa(),gv=Ee(),mv=T(),bv=mv("species");La.exports=function(r,e){var t=Ca(r).constructor,i;return t===void 0||gv(i=Ca(t)[bv])?e:hv(i)}});var Nt=n((zI,Na)=>{"use strict";var yv=$();Na.exports=yv("document","documentElement")});var Da=n((QI,ka)=>{"use strict";var Iv=q();ka.exports=Iv([].slice)});var ja=n((YI,$a)=>{"use strict";var Sv=TypeError;$a.exports=function(r,e){if(r<e)throw new Sv("Not enough arguments");return r}});var kt=n((JI,Ma)=>{"use strict";var Ev=G();Ma.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(Ev)});var Kt=n((XI,za)=>{"use strict";var w=y(),_v=Vr(),qv=Te(),Fa=I(),Pv=k(),Ha=E(),Ba=Nt(),Tv=Da(),Ua=Je(),Ov=ja(),wv=kt(),xv=or(),Bt=w.setImmediate,Ut=w.clearImmediate,Rv=w.process,Dt=w.Dispatch,Av=w.Function,Va=w.MessageChannel,Cv=w.String,$t=0,Le={},Ka="onreadystatechange",Ne,H,jt,Mt;Ha(function(){Ne=w.location});var Vt=function(r){if(Pv(Le,r)){var e=Le[r];delete Le[r],e()}},Ft=function(r){return function(){Vt(r)}},Ga=function(r){Vt(r.data)},Wa=function(r){w.postMessage(Cv(r),Ne.protocol+"//"+Ne.host)};(!Bt||!Ut)&&(Bt=function(e){Ov(arguments.length,1);var t=Fa(e)?e:Av(e),i=Tv(arguments,1);return Le[++$t]=function(){_v(t,void 0,i)},H($t),$t},Ut=function(e){delete Le[e]},xv?H=function(r){Rv.nextTick(Ft(r))}:Dt&&Dt.now?H=function(r){Dt.now(Ft(r))}:Va&&!wv?(jt=new Va,Mt=jt.port2,jt.port1.onmessage=Ga,H=qv(Mt.postMessage,Mt)):w.addEventListener&&Fa(w.postMessage)&&!w.importScripts&&Ne&&Ne.protocol!=="file:"&&!Ha(Wa)?(H=Wa,w.addEventListener("message",Ga,!1)):Ka in Ua("script")?H=function(r){Ba.appendChild(Ua("script"))[Ka]=function(){Ba.removeChild(this),Vt(r)}}:H=function(r){setTimeout(Ft(r),0)});za.exports={set:Bt,clear:Ut}});var Ja=n((ZI,Ya)=>{"use strict";var Qa=y(),Lv=P(),Nv=Object.getOwnPropertyDescriptor;Ya.exports=function(r){if(!Lv)return Qa[r];var e=Nv(Qa,r);return e&&e.value}});var Gt=n((eS,Za)=>{"use strict";var Xa=function(){this.head=null,this.tail=null};Xa.prototype={add:function(r){var e={item:r,next:null},t=this.tail;t?t.next=e:this.head=e,this.tail=e},get:function(){var r=this.head;if(r){var e=this.head=r.next;return e===null&&(this.tail=null),r.item}}};Za.exports=Xa});var rs=n((rS,es)=>{"use strict";var kv=G();es.exports=/ipad|iphone|ipod/i.test(kv)&&typeof Pebble<"u"});var is=n((tS,ts)=>{"use strict";var Dv=G();ts.exports=/web0s(?!.*chrome)/i.test(Dv)});var ls=n((iS,cs)=>{"use strict";var se=y(),$v=Ja(),os=Te(),Wt=Kt().set,jv=Gt(),Mv=kt(),Fv=rs(),Bv=is(),Ht=or(),ns=se.MutationObserver||se.WebKitMutationObserver,as=se.document,ss=se.process,sr=se.Promise,Yt=$v("queueMicrotask"),ae,zt,Qt,ur,us;Yt||(ke=new jv,De=function(){var r,e;for(Ht&&(r=ss.domain)&&r.exit();e=ke.get();)try{e()}catch(t){throw ke.head&&ae(),t}r&&r.enter()},!Mv&&!Ht&&!Bv&&ns&&as?(zt=!0,Qt=as.createTextNode(""),new ns(De).observe(Qt,{characterData:!0}),ae=function(){Qt.data=zt=!zt}):!Fv&&sr&&sr.resolve?(ur=sr.resolve(void 0),ur.constructor=sr,us=os(ur.then,ur),ae=function(){us(De)}):Ht?ae=function(){ss.nextTick(De)}:(Wt=os(Wt,se),ae=function(){Wt(De)}),Yt=function(r){ke.head||ae(),ke.add(r)});var ke,De;cs.exports=Yt});var ds=n((oS,fs)=>{"use strict";fs.exports=function(r,e){try{arguments.length===1?console.error(r):console.error(r,e)}catch{}}});var cr=n((nS,ps)=>{"use strict";ps.exports=function(r){try{return{error:!1,value:r()}}catch(e){return{error:!0,value:e}}}});var gs=n((aS,hs)=>{"use strict";var Uv=y(),Vv=I(),vs=Uv.WeakMap;hs.exports=Vv(vs)&&/native code/.test(String(vs))});var lr=n((sS,bs)=>{"use strict";var Kv=nt(),Gv=st(),ms=Kv("keys");bs.exports=function(r){return ms[r]||(ms[r]=Gv(r))}});var fr=n((uS,ys)=>{"use strict";ys.exports={}});var ei=n((cS,Es)=>{"use strict";var Wv=gs(),Ss=y(),Hv=R(),zv=te(),Jt=k(),Xt=qe(),Qv=lr(),Yv=fr(),Is="Object already initialized",Zt=Ss.TypeError,Jv=Ss.WeakMap,dr,$e,pr,Xv=function(r){return pr(r)?$e(r):dr(r,{})},Zv=function(r){return function(e){var t;if(!Hv(e)||(t=$e(e)).type!==r)throw new Zt("Incompatible receiver, "+r+" required");return t}};Wv||Xt.state?(C=Xt.state||(Xt.state=new Jv),C.get=C.get,C.has=C.has,C.set=C.set,dr=function(r,e){if(C.has(r))throw new Zt(Is);return e.facade=r,C.set(r,e),e},$e=function(r){return C.get(r)||{}},pr=function(r){return C.has(r)}):(z=Qv("state"),Yv[z]=!0,dr=function(r,e){if(Jt(r,z))throw new Zt(Is);return e.facade=r,zv(r,z,e),e},$e=function(r){return Jt(r,z)?r[z]:{}},pr=function(r){return Jt(r,z)});var C,z;Es.exports={set:dr,get:$e,has:pr,enforce:Xv,getterFor:Zv}});var Q=n((lS,_s)=>{"use strict";var eh=y();_s.exports=eh.Promise});var ue=n((fS,Os)=>{"use strict";var rh=y(),je=Q(),th=I(),ih=dt(),oh=At(),nh=T(),qs=wt(),ah=N(),ri=Xr(),Ps=je&&je.prototype,sh=nh("species"),ti=!1,Ts=th(rh.PromiseRejectionEvent),uh=ih("Promise",function(){var r=oh(je),e=r!==String(je);if(!e&&ri===66||ah&&!(Ps.catch&&Ps.finally))return!0;if(!ri||ri<51||!/native code/.test(r)){var t=new je(function(a){a(1)}),i=function(a){a(function(){},function(){})},o=t.constructor={};if(o[sh]=i,ti=t.then(function(){})instanceof i,!ti)return!0}return!e&&(qs==="BROWSER"||qs==="DENO")&&!Ts});Os.exports={CONSTRUCTOR:uh,REJECTION_EVENT:Ts,SUBCLASSING:ti}});var ce=n((dS,xs)=>{"use strict";var ws=j(),ch=TypeError,lh=function(r){var e,t;this.promise=new r(function(i,o){if(e!==void 0||t!==void 0)throw new ch("Bad Promise constructor");e=i,t=o}),this.resolve=ws(e),this.reject=ws(t)};xs.exports.f=function(r){return new lh(r)}});var Qs=n(()=>{"use strict";var fh=O(),dh=N(),mr=or(),V=y(),ph=ee(),pe=x(),Rs=ne(),As=xt(),vh=Ae(),hh=Ia(),gh=j(),gr=I(),mh=R(),bh=Ea(),yh=Lt(),Ds=Kt().set,si=ls(),Ih=ds(),Sh=cr(),Eh=Gt(),$s=ei(),br=Q(),ui=ue(),js=ce(),yr="Promise",Ms=ui.CONSTRUCTOR,_h=ui.REJECTION_EVENT,qh=ui.SUBCLASSING,ii=$s.getterFor(yr),Ph=$s.set,le=br&&br.prototype,Y=br,vr=le,Fs=V.TypeError,oi=V.document,ci=V.process,ni=js.f,Th=ni,Oh=!!(oi&&oi.createEvent&&V.dispatchEvent),Bs="unhandledrejection",wh="rejectionhandled",Cs=0,Us=1,xh=2,li=1,Vs=2,hr,Ls,Ks,Ns,Gs=function(r){var e;return mh(r)&&gr(e=r.then)?e:!1},Ws=function(r,e){var t=e.value,i=e.state===Us,o=i?r.ok:r.fail,a=r.resolve,u=r.reject,c=r.domain,d,f,p;try{o?(i||(e.rejection===Vs&&Ah(e),e.rejection=li),o===!0?d=t:(c&&c.enter(),d=o(t),c&&(c.exit(),p=!0)),d===r.promise?u(new Fs("Promise-chain cycle")):(f=Gs(d))?pe(f,d,a,u):a(d)):u(t)}catch(v){c&&!p&&c.exit(),u(v)}},Hs=function(r,e){r.notified||(r.notified=!0,si(function(){for(var t=r.reactions,i;i=t.get();)Ws(i,r);r.notified=!1,e&&!r.rejection&&Rh(r)}))},zs=function(r,e,t){var i,o;Oh?(i=oi.createEvent("Event"),i.promise=e,i.reason=t,i.initEvent(r,!1,!0),V.dispatchEvent(i)):i={promise:e,reason:t},!_h&&(o=V["on"+r])?o(i):r===Bs&&Ih("Unhandled promise rejection",t)},Rh=function(r){pe(Ds,V,function(){var e=r.facade,t=r.value,i=ks(r),o;if(i&&(o=Sh(function(){mr?ci.emit("unhandledRejection",t,e):zs(Bs,e,t)}),r.rejection=mr||ks(r)?Vs:li,o.error))throw o.value})},ks=function(r){return r.rejection!==li&&!r.parent},Ah=function(r){pe(Ds,V,function(){var e=r.facade;mr?ci.emit("rejectionHandled",e):zs(wh,e,r.value)})},fe=function(r,e,t){return function(i){r(e,i,t)}},de=function(r,e,t){r.done||(r.done=!0,t&&(r=t),r.value=e,r.state=xh,Hs(r,!0))},ai=function(r,e,t){if(!r.done){r.done=!0,t&&(r=t);try{if(r.facade===e)throw new Fs("Promise can't be resolved itself");var i=Gs(e);i?si(function(){var o={done:!1};try{pe(i,e,fe(ai,o,r),fe(de,o,r))}catch(a){de(o,a,r)}}):(r.value=e,r.state=Us,Hs(r,!1))}catch(o){de({done:!1},o,r)}}};if(Ms&&(Y=function(e){bh(this,vr),gh(e),pe(hr,this);var t=ii(this);try{e(fe(ai,t),fe(de,t))}catch(i){de(t,i)}},vr=Y.prototype,hr=function(e){Ph(this,{type:yr,done:!1,notified:!1,parent:!1,reactions:new Eh,rejection:!1,state:Cs,value:null})},hr.prototype=Rs(vr,"then",function(e,t){var i=ii(this),o=ni(yh(this,Y));return i.parent=!0,o.ok=gr(e)?e:!0,o.fail=gr(t)&&t,o.domain=mr?ci.domain:void 0,i.state===Cs?i.reactions.add(o):si(function(){Ws(o,i)}),o.promise}),Ls=function(){var r=new hr,e=ii(r);this.promise=r,this.resolve=fe(ai,e),this.reject=fe(de,e)},js.f=ni=function(r){return r===Y||r===Ks?new Ls(r):Th(r)},!dh&&gr(br)&&le!==Object.prototype)){Ns=le.then,qh||Rs(le,"then",function(e,t){var i=this;return new Y(function(o,a){pe(Ns,i,o,a)}).then(e,t)},{unsafe:!0});try{delete le.constructor}catch{}As&&As(le,vr)}fh({global:!0,constructor:!0,wrap:!0,forced:Ms},{Promise:Y});Ks=ph.Promise;vh(Y,yr,!1,!0);hh(yr)});var J=n((hS,Ys)=>{"use strict";Ys.exports={}});var Xs=n((gS,Js)=>{"use strict";var Ch=T(),Lh=J(),Nh=Ch("iterator"),kh=Array.prototype;Js.exports=function(r){return r!==void 0&&(Lh.Array===r||kh[Nh]===r)}});var fi=n((mS,eu)=>{"use strict";var Dh=Re(),Zs=Ye(),$h=Ee(),jh=J(),Mh=T(),Fh=Mh("iterator");eu.exports=function(r){if(!$h(r))return Zs(r,Fh)||Zs(r,"@@iterator")||jh[Dh(r)]}});var tu=n((bS,ru)=>{"use strict";var Bh=x(),Uh=j(),Vh=M(),Kh=_e(),Gh=fi(),Wh=TypeError;ru.exports=function(r,e){var t=arguments.length<2?Gh(r):e;if(Uh(t))return Vh(Bh(t,r));throw new Wh(Kh(r)+" is not iterable")}});var nu=n((yS,ou)=>{"use strict";var Hh=x(),iu=M(),zh=Ye();ou.exports=function(r,e,t){var i,o;iu(r);try{if(i=zh(r,"return"),!i){if(e==="throw")throw t;return t}i=Hh(i,r)}catch(a){o=!0,i=a}if(e==="throw")throw t;if(o)throw i;return iu(i),t}});var Sr=n((IS,cu)=>{"use strict";var Qh=Te(),Yh=x(),Jh=M(),Xh=_e(),Zh=Xs(),eg=yt(),au=ze(),rg=tu(),tg=fi(),su=nu(),ig=TypeError,Ir=function(r,e){this.stopped=r,this.result=e},uu=Ir.prototype;cu.exports=function(r,e,t){var i=t&&t.that,o=!!(t&&t.AS_ENTRIES),a=!!(t&&t.IS_RECORD),u=!!(t&&t.IS_ITERATOR),c=!!(t&&t.INTERRUPTED),d=Qh(e,i),f,p,v,s,l,h,g,b=function(S){return f&&su(f,"normal"),new Ir(!0,S)},m=function(S){return o?(Jh(S),c?d(S[0],S[1],b):d(S[0],S[1])):c?d(S,b):d(S)};if(a)f=r.iterator;else if(u)f=r;else{if(p=tg(r),!p)throw new ig(Xh(r)+" is not iterable");if(Zh(p)){for(v=0,s=eg(r);s>v;v++)if(l=m(r[v]),l&&au(uu,l))return l;return new Ir(!1)}f=rg(r,p)}for(h=a?r.next:f.next;!(g=Yh(h,f)).done;){try{l=m(g.value)}catch(S){su(f,"throw",S)}if(typeof l=="object"&&l&&au(uu,l))return l}return new Ir(!1)}});var vu=n((SS,pu)=>{"use strict";var og=T(),fu=og("iterator"),du=!1;try{lu=0,di={next:function(){return{done:!!lu++}},return:function(){du=!0}},di[fu]=function(){return this},Array.from(di,function(){throw 2})}catch{}var lu,di;pu.exports=function(r,e){try{if(!e&&!du)return!1}catch{return!1}var t=!1;try{var i={};i[fu]=function(){return{next:function(){return{done:t=!0}}}},r(i)}catch{}return t}});var pi=n((ES,hu)=>{"use strict";var ng=Q(),ag=vu(),sg=ue().CONSTRUCTOR;hu.exports=sg||!ag(function(r){ng.all(r).then(void 0,function(){})})});var gu=n(()=>{"use strict";var ug=O(),cg=x(),lg=j(),fg=ce(),dg=cr(),pg=Sr(),vg=pi();ug({target:"Promise",stat:!0,forced:vg},{all:function(e){var t=this,i=fg.f(t),o=i.resolve,a=i.reject,u=dg(function(){var c=lg(t.resolve),d=[],f=0,p=1;pg(e,function(v){var s=f++,l=!1;p++,cg(c,t,v).then(function(h){l||(l=!0,d[s]=h,--p||o(d))},a)}),--p||o(d)});return u.error&&a(u.value),i.promise}})});var bu=n(()=>{"use strict";var hg=O(),gg=N(),mg=ue().CONSTRUCTOR,hi=Q(),bg=$(),yg=I(),Ig=ne(),mu=hi&&hi.prototype;hg({target:"Promise",proto:!0,forced:mg,real:!0},{catch:function(r){return this.then(void 0,r)}});!gg&&yg(hi)&&(vi=bg("Promise").prototype.catch,mu.catch!==vi&&Ig(mu,"catch",vi,{unsafe:!0}));var vi});var yu=n(()=>{"use strict";var Sg=O(),Eg=x(),_g=j(),qg=ce(),Pg=cr(),Tg=Sr(),Og=pi();Sg({target:"Promise",stat:!0,forced:Og},{race:function(e){var t=this,i=qg.f(t),o=i.reject,a=Pg(function(){var u=_g(t.resolve);Tg(e,function(c){Eg(u,t,c).then(i.resolve,o)})});return a.error&&o(a.value),i.promise}})});var Iu=n(()=>{"use strict";var wg=O(),xg=ce(),Rg=ue().CONSTRUCTOR;wg({target:"Promise",stat:!0,forced:Rg},{reject:function(e){var t=xg.f(this),i=t.reject;return i(e),t.promise}})});var gi=n((AS,Su)=>{"use strict";var Ag=M(),Cg=R(),Lg=ce();Su.exports=function(r,e){if(Ag(r),Cg(e)&&e.constructor===r)return e;var t=Lg.f(r),i=t.resolve;return i(e),t.promise}});var qu=n(()=>{"use strict";var Ng=O(),kg=$(),Eu=N(),Dg=Q(),_u=ue().CONSTRUCTOR,$g=gi(),jg=kg("Promise"),Mg=Eu&&!_u;Ng({target:"Promise",stat:!0,forced:Eu||_u},{resolve:function(e){return $g(Mg&&this===jg?Dg:this,e)}})});var Pu=n(()=>{"use strict";Qs();gu();bu();yu();Iu();qu()});var xu=n(()=>{"use strict";var Fg=O(),Bg=N(),Er=Q(),Ug=E(),Ou=$(),wu=I(),Vg=Lt(),Tu=gi(),Kg=ne(),bi=Er&&Er.prototype,Gg=!!Er&&Ug(function(){bi.finally.call({then:function(){}},function(){})});Fg({target:"Promise",proto:!0,real:!0,forced:Gg},{finally:function(r){var e=Vg(this,Ou("Promise")),t=wu(r);return this.then(t?function(i){return Tu(e,r()).then(function(){return i})}:r,t?function(i){return Tu(e,r()).then(function(){throw i})}:r)}});!Bg&&wu(Er)&&(mi=Ou("Promise").prototype.finally,bi.finally!==mi&&Kg(bi,"finally",mi,{unsafe:!0}));var mi});var Au=n((jS,Ru)=>{"use strict";Xn();Pu();xu();var Wg=er();Ru.exports=Wg("Promise","finally")});var Lu=n((MS,Cu)=>{"use strict";var Hg=Au();Cu.exports=Hg});var ku=n((FS,Nu)=>{"use strict";var zg=Lu();Nu.exports=zg});var $u=n((BS,Du)=>{"use strict";var Qg=E();Du.exports=!Qg(function(){function r(){}return r.prototype.constructor=null,Object.getPrototypeOf(new r)!==r.prototype})});var _r=n((US,Mu)=>{"use strict";var Yg=k(),Jg=I(),Xg=at(),Zg=lr(),em=$u(),ju=Zg("IE_PROTO"),yi=Object,rm=yi.prototype;Mu.exports=em?yi.getPrototypeOf:function(r){var e=Xg(r);if(Yg(e,ju))return e[ju];var t=e.constructor;return Jg(t)&&e instanceof t?t.prototype:e instanceof yi?rm:null}});var Uu=n((VS,Bu)=>{"use strict";var tm=q(),Ii=k(),im=K(),om=It().indexOf,nm=fr(),Fu=tm([].push);Bu.exports=function(r,e){var t=im(r),i=0,o=[],a;for(a in t)!Ii(nm,a)&&Ii(t,a)&&Fu(o,a);for(;e.length>i;)Ii(t,a=e[i++])&&(~om(o,a)||Fu(o,a));return o}});var Si=n((KS,Vu)=>{"use strict";Vu.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]});var Ei=n((GS,Ku)=>{"use strict";var am=Uu(),sm=Si();Ku.exports=Object.keys||function(e){return am(e,sm)}});var Yu=n((WS,Qu)=>{"use strict";var Wu=P(),um=E(),Hu=q(),cm=_r(),lm=Ei(),fm=K(),dm=Hr().f,zu=Hu(dm),pm=Hu([].push),vm=Wu&&um(function(){var r=Object.create(null);return r[2]=2,!zu(r,2)}),Gu=function(r){return function(e){for(var t=fm(e),i=lm(t),o=vm&&cm(t)===null,a=i.length,u=0,c=[],d;a>u;)d=i[u++],(!Wu||(o?d in t:zu(t,d)))&&pm(c,r?[d,t[d]]:t[d]);return c}};Qu.exports={entries:Gu(!0),values:Gu(!1)}});var Ju=n(()=>{"use strict";var hm=O(),gm=Yu().entries;hm({target:"Object",stat:!0},{entries:function(e){return gm(e)}})});var Zu=n((QS,Xu)=>{"use strict";Ju();var mm=ee();Xu.exports=mm.Object.entries});var rc=n((YS,ec)=>{"use strict";var bm=Zu();ec.exports=bm});var qr=n((JS,tc)=>{"use strict";var ym=rc();tc.exports=ym});var nc=n((XS,oc)=>{"use strict";var _i=P(),Im=k(),ic=Function.prototype,Sm=_i&&Object.getOwnPropertyDescriptor,qi=Im(ic,"name"),Em=qi&&function(){}.name==="something",_m=qi&&(!_i||_i&&Sm(ic,"name").configurable);oc.exports={EXISTS:qi,PROPER:Em,CONFIGURABLE:_m}});var sc=n(ac=>{"use strict";var qm=P(),Pm=pt(),Tm=W(),Om=M(),wm=K(),xm=Ei();ac.f=qm&&!Pm?Object.defineProperties:function(e,t){Om(e);for(var i=wm(t),o=xm(t),a=o.length,u=0,c;a>u;)Tm.f(e,c=o[u++],i[c]);return e}});var wi=n((eE,vc)=>{"use strict";var Rm=M(),Am=sc(),uc=Si(),Cm=fr(),Lm=Nt(),Nm=Je(),km=lr(),cc=">",lc="<",Ti="prototype",Oi="script",dc=km("IE_PROTO"),Pi=function(){},pc=function(r){return lc+Oi+cc+r+lc+"/"+Oi+cc},fc=function(r){r.write(pc("")),r.close();var e=r.parentWindow.Object;return r=null,e},Dm=function(){var r=Nm("iframe"),e="java"+Oi+":",t;return r.style.display="none",Lm.appendChild(r),r.src=String(e),t=r.contentWindow.document,t.open(),t.write(pc("document.F=Object")),t.close(),t.F},Pr,Tr=function(){try{Pr=new ActiveXObject("htmlfile")}catch{}Tr=typeof document<"u"?document.domain&&Pr?fc(Pr):Dm():fc(Pr);for(var r=uc.length;r--;)delete Tr[Ti][uc[r]];return Tr()};Cm[dc]=!0;vc.exports=Object.create||function(e,t){var i;return e!==null?(Pi[Ti]=Rm(e),i=new Pi,Pi[Ti]=null,i[dc]=e):i=Tr(),t===void 0?i:Am.f(i,t)}});var Ci=n((rE,mc)=>{"use strict";var $m=E(),jm=I(),Mm=R(),Fm=wi(),hc=_r(),Bm=ne(),Um=T(),Vm=N(),Ai=Um("iterator"),gc=!1,F,xi,Ri;[].keys&&(Ri=[].keys(),"next"in Ri?(xi=hc(hc(Ri)),xi!==Object.prototype&&(F=xi)):gc=!0);var Km=!Mm(F)||$m(function(){var r={};return F[Ai].call(r)!==r});Km?F={}:Vm&&(F=Fm(F));jm(F[Ai])||Bm(F,Ai,function(){return this});mc.exports={IteratorPrototype:F,BUGGY_SAFARI_ITERATORS:gc}});var yc=n((tE,bc)=>{"use strict";var Gm=Ci().IteratorPrototype,Wm=wi(),Hm=Se(),zm=Ae(),Qm=J(),Ym=function(){return this};bc.exports=function(r,e,t,i){var o=e+" Iterator";return r.prototype=Wm(Gm,{next:Hm(+!i,t)}),zm(r,o,!1,!0),Qm[o]=Ym,r}});var Rc=n((iE,xc)=>{"use strict";var Jm=O(),Xm=x(),Or=N(),Oc=nc(),Zm=I(),eb=yc(),Ic=_r(),Sc=xt(),rb=Ae(),tb=te(),Li=ne(),ib=T(),Ec=J(),wc=Ci(),ob=Oc.PROPER,nb=Oc.CONFIGURABLE,_c=wc.IteratorPrototype,wr=wc.BUGGY_SAFARI_ITERATORS,Me=ib("iterator"),qc="keys",Fe="values",Pc="entries",Tc=function(){return this};xc.exports=function(r,e,t,i,o,a,u){eb(t,e,i);var c=function(m){if(m===o&&s)return s;if(!wr&&m&&m in p)return p[m];switch(m){case qc:return function(){return new t(this,m)};case Fe:return function(){return new t(this,m)};case Pc:return function(){return new t(this,m)}}return function(){return new t(this)}},d=e+" Iterator",f=!1,p=r.prototype,v=p[Me]||p["@@iterator"]||o&&p[o],s=!wr&&v||c(o),l=e==="Array"&&p.entries||v,h,g,b;if(l&&(h=Ic(l.call(new r)),h!==Object.prototype&&h.next&&(!Or&&Ic(h)!==_c&&(Sc?Sc(h,_c):Zm(h[Me])||Li(h,Me,Tc)),rb(h,d,!0,!0),Or&&(Ec[d]=Tc))),ob&&o===Fe&&v&&v.name!==Fe&&(!Or&&nb?tb(p,"name",Fe):(f=!0,s=function(){return Xm(v,this)})),o)if(g={values:c(Fe),keys:a?s:c(qc),entries:c(Pc)},u)for(b in g)(wr||f||!(b in p))&&Li(p,b,g[b]);else Jm({target:e,proto:!0,forced:wr||f},g);return(!Or||u)&&p[Me]!==s&&Li(p,Me,s,{name:o}),Ec[e]=s,g}});var Cc=n((oE,Ac)=>{"use strict";Ac.exports=function(r,e){return{value:r,done:e}}});var ki=n((nE,$c)=>{"use strict";var ab=K(),Ni=St(),Lc=J(),kc=ei(),sb=W().f,ub=Rc(),xr=Cc(),cb=N(),lb=P(),Dc="Array Iterator",fb=kc.set,db=kc.getterFor(Dc);$c.exports=ub(Array,"Array",function(r,e){fb(this,{type:Dc,target:ab(r),index:0,kind:e})},function(){var r=db(this),e=r.target,t=r.index++;if(!e||t>=e.length)return r.target=null,xr(void 0,!0);switch(r.kind){case"keys":return xr(t,!1);case"values":return xr(e[t],!1)}return xr([t,e[t]],!1)},"values");var Nc=Lc.Arguments=Lc.Array;Ni("keys");Ni("values");Ni("entries");if(!cb&&lb&&Nc.name!=="values")try{sb(Nc,"name",{value:"values"})}catch{}});var Mc=n((aE,jc)=>{"use strict";var pb=P(),vb=W(),hb=Se();jc.exports=function(r,e,t){pb?vb.f(r,e,hb(0,t)):r[e]=t}});var Fc=n(()=>{"use strict";var gb=O(),mb=Sr(),bb=Mc();gb({target:"Object",stat:!0},{fromEntries:function(e){var t={};return mb(e,function(i,o){bb(t,i,o)},{AS_ENTRIES:!0}),t}})});var Uc=n((cE,Bc)=>{"use strict";ki();Fc();var yb=ee();Bc.exports=yb.Object.fromEntries});var Kc=n((lE,Vc)=>{"use strict";Vc.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}});var Wc=n(()=>{"use strict";ki();var Ib=Kc(),Sb=y(),Eb=Ae(),Gc=J();for(Rr in Ib)Eb(Sb[Rr],Rr),Gc[Rr]=Gc.Array;var Rr});var zc=n((pE,Hc)=>{"use strict";var _b=Uc();Wc();Hc.exports=_b});var Yc=n((vE,Qc)=>{"use strict";var qb=zc();Qc.exports=qb});var Ui=n((u_,dl)=>{"use strict";var Cb=Re(),Lb=String;dl.exports=function(r){if(Cb(r)==="Symbol")throw new TypeError("Cannot convert a Symbol value to a string");return Lb(r)}});var vl=n((c_,pl)=>{"use strict";var Nb=Ze(),kb=Ui(),Db=Z(),$b=RangeError;pl.exports=function(e){var t=kb(Db(this)),i="",o=Nb(e);if(o<0||o===1/0)throw new $b("Wrong number of repetitions");for(;o>0;(o>>>=1)&&(t+=t))o&1&&(i+=t);return i}});var yl=n((l_,bl)=>{"use strict";var ml=q(),jb=bt(),hl=Ui(),Mb=vl(),Fb=Z(),Bb=ml(Mb),Ub=ml("".slice),Vb=Math.ceil,gl=function(r){return function(e,t,i){var o=hl(Fb(e)),a=jb(t),u=o.length,c=i===void 0?" ":hl(i),d,f;return a<=u||c===""?o:(d=a-u,f=Bb(c,Vb(d/c.length)),f.length>d&&(f=Ub(f,0,d)),r?o+f:f+o)}};bl.exports={start:gl(!1),end:gl(!0)}});var Sl=n((f_,Il)=>{"use strict";var Kb=G();Il.exports=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(Kb)});var El=n(()=>{"use strict";var Gb=O(),Wb=yl().start,Hb=Sl();Gb({target:"String",proto:!0,forced:Hb},{padStart:function(e){return Wb(this,e,arguments.length>1?arguments[1]:void 0)}})});var ql=n((v_,_l)=>{"use strict";El();var zb=er();_l.exports=zb("String","padStart")});var Tl=n((h_,Pl)=>{"use strict";var Qb=ql();Pl.exports=Qb});var wl=n((g_,Ol)=>{"use strict";var Yb=Tl();Ol.exports=Yb});var Hi=D(rr(),1);var we=(u=>(u.PROD="prod",u.VK_ALIAS="vk_alias",u.VIDEOTEST="videotest",u.TEST="test",u.OKCDN="okcdn",u.AUTO="auto",u))(we||{}),Et=(f=>(f.Q144P="mobile",f.Q240P="lowest",f.Q360P="low",f.Q480P="medium",f.Q720P="high",f.Q1080P="fullhd",f.Q1440P="quadhd",f.Q2160P="ultrahd",f.UNKNOWN="unknown",f))(Et||{}),_t=(l=>(l.MP4="mp4",l.DASH="dash",l.DASH_SEP="dash_sep",l.ONDEMAND_DASH="ondemand_dash",l.HLS="hls",l.ONDEMAND_HLS="ondemand_hls",l.WEBM="webm",l.AV1="av1",l.ONDEMAND_DASH_LIVE="ondemand_dash_live",l.ONDEMAND_HLS_LIVE="ondemand_hls_live",l.WEBRTC="webrtc",l.UNKNOWN="unknown",l.RTMP="rtmp",l))(_t||{});var qt=(i=>(i.HTTP1="http1",i.HTTP2="http2",i.HTTP3="http3",i))(qt||{});var Pt=(c=>(c.SLIDER="slider",c.DOUBLE_TAP="double_tap",c.TIME_CODE="time_code",c.EPISODE="episode",c.REWIND="rewind",c.LIVE="live",c.UNKNOWN="unknown",c))(Pt||{}),Gn=(a=>(a.GRAPH_SHOW="iGraphShow",a.GRAPH_HIDE="iGraphHide",a.NEXT_AREA="iNextChapterArea",a.NEXT_BUTTON="iNextChapterBtn",a.WATCH_AGAIN="iWatchAgainBtn",a))(Gn||{}),Wn={action_play:"ap",action_play_interactive:"api",first_bytes:"fb",player_ready:"pr",first_frame:"ff",seek:"sk",watch_coverage_record:"wr",watch_coverage_live:"wl",empty_buffer:"eb",action_stop:"as",close_at_empty_buffer:"cb",content_error:"er",player_interface_click:"pc",next_movie:"nm",track_switch:"ts",failover:"fo",quality:"qt"},Hn={vsid:"si",isid:"is",vid:"vi",place:"pl",quality:"qt",cdn_host:"ch",stat_type:"st",param:"pm",vk_app_id:"va",track_code:"tc",connection_type:"cnt",connection_reused:"cr",cached_data:"cd",live:"lv",muted:"mu",mode:"mo",subtitles:"sb",failover:"fo",download_speed:"ds",manual_quality:"mq",ref_domain:"rd",direct_url:"du"},zn={unknown:"un",mobile:"m",lowest:"ls",low:"l",medium:"md",high:"h",fullhd:"f",quadhd:"q",ultrahd:"u"},Qn={pip:"pi",fullscreen:"fs",external:"ex",prefetch:"pr",airplay:"ap",chromecast:"cc",invisible:"iv"};import{fillWithDefault as gp}from"@vkontakte/videoplayer-shared";var tr="1.0.80-dev.fba07f4d.0",Yn="CIOPGQJGDIHBABABA",Tt={prod:"https://api.ok.ru",vk_alias:"https://api.mycdn.me",videotest:"https://videotestapi.ok.ru/api",test:"https://apitest.ok.ru",okcdn:"https://api.okcdn.ru",auto:""};var mp={apiEnv:"vk_alias",apiKey:Yn,requestRetryCount:1,firstFlushTime:5e3,flushDebounceTime:1e4,flushMaxWait:6e4,storageExpiration:36*60*60*1e3,watchCoverageInterval:15e3,disabledOperations:["quality"],disabledCustomFields:[],shorten:!0,maxLoops:100,embedUrlParams:[],useBeacon:!0,synchronizeTime:!0,debugLog:!1,clearStorageAtUnload:!0,useVKComIsMobileLogic:!1,backoff:{start:1e3,factor:1.5,max:5*60*1e3,random:.1}},Jn=r=>gp(r,mp);function Ot(){let r="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),e=new Array(36),t=0,i,o;for(o=0;o<36;o++)o===8||o===13||o===18||o===23?e[o]="-":o===14?e[o]="4":(t<=2&&(t=33554432+Math.random()*16777216|0),i=t&15,t=t>>4,e[o]=r[o===19?i&3|8:i]);return e.join("")}import{assertNonNullable as iy,combine as kl,fromEvent as Dl,isNonNullable as me,isNullable as $l,merge as oy,now as B,observableFrom as ny,once as ay,safeStorage as Mr,Subject as sy,Subscription as zi,ValueSubject as Fr,createURL as jl}from"@vkontakte/videoplayer-shared";import{Logger as uy,detectEmbed as cy}from"@vkontakte/videoplayer-shared";var Ar=D(ku(),1);var Jc=D(qr(),1),Xc=D(Yc(),1);var Zc=r=>{let{operation:e,custom:t}=r,i=(0,Xc.default)((0,Jc.default)(t).map(([o,a])=>{let u=Hn[o]??o,c=a;return a&&(o==="mode"?c=Qn[a]??a:o==="quality"&&(c=zn[a]??a)),[u,c]}));return{...r,operation:Wn[e]??e,custom:i}};import{ValueSubject as Pb,getExponentialDelay as Tb,ErrorCategory as ve}from"@vkontakte/videoplayer-shared";var Ob=/Mobile|mini|Fennec|Android|iP(ad|od|hone)|opera (mini|mobi)/i,Be=class{constructor(e){this.consequentAuthErrors=0;this.authorized$=new Pb(!1);this.params=e}async authorize(e){return this.authToken=e??await this.refreshAuthToken(),this._authorizeWithBackoff()}logBeacon(e){let t="log.externalLog",i=this.createLogParams(e),o=this.sessionKey;if(!o)return;this.params.apiTransport.sendBeacon(t,i,o)||this.logRequest(e).catch(()=>{})}async logRequest(e){let t="log.externalLog",i=this.createLogParams(e),o=this.sessionKey??await this._authorizeWithBackoff();if(!o)return;let a=async(u,c=this.params.config.requestRetryCount)=>{try{return await this.params.apiTransport.sendRequest(t,i,o)}catch(d){if(!d||!("error_code"in d)){this.params.error$.next({id:"logRequestUnknown",category:ve.NETWORK,message:`Unknown ${t} error`,thrown:d});return}let f=d?.error_code;switch(f){case 102:case 103:case 104:return this.authorized$.next(!1),this.sessionKey=await this._authorizeWithBackoff(),c>0?a(u,c-1):void 0;case 401:return this.authorized$.next(!1),this.authToken=await this.refreshAuthToken(),this.sessionKey=await this._authorizeWithBackoff(),c>0?a(u,c-1):void 0;default:{this.params.error$.next({id:`LogRequest#${f}`,category:ve.EXTERNAL_API,message:`${t} error`,data:d});return}}}};return a(e)}destroy(){window.clearTimeout(this.backoffTimeoutId),this.backoffTimeoutId=0}async refreshAuthToken(){if(this.params.refreshAuthToken)return this.refreshAuthTokenPromise||(this.refreshAuthTokenPromise=(0,Ar.default)(this.params.refreshAuthToken(),()=>{this.refreshAuthTokenPromise=void 0})),this.refreshAuthTokenPromise}createLogParams(e){let t="WEB",i=!1,o=`@vkontakte/videoplayer-statistics:${tr}`;if(this.params.config.useVKComIsMobileLogic){let{appVersion:a}=window.navigator;i=Ob.test(a)}else this.params.mobile&&(i=!0);return i&&(t="M_WEB"),this.params.vktvVersion&&(t="SMART_TV",o=this.params.vktvVersion),{collector:"ok.mobile.apps.video",data:JSON.stringify({application:o,platform:t,items:this.params.config.shorten?e.map(Zc):e})}}_authorizeWithBackoff(){if(!this.consequentAuthErrors)return this._authorize();let e=Tb(this.consequentAuthErrors,this.params.config.backoff);return new Promise(t=>{this.backoffTimeoutId||(this.backoffTimeoutId=window.setTimeout(()=>{(0,Ar.default)(this._authorize().then(t).catch(i=>this.params.error$.next({id:"AuthorizeBackoff",category:ve.NETWORK,message:"Otherwise unhandled error in authorization",thrown:i})),()=>this.backoffTimeoutId=0)},e))})}async _authorize(){if(this.authorizePromise)return this.authorizePromise;this.sessionKey=void 0,this.authorized$.next(!1);let e="auth.anonymLogin",t={session_data:{version:2,device_id:this.params.deviceId,client_version:tr.split("-")[0],client_type:"SDK_JS"}};return this.authToken!==void 0&&(t.session_data.auth_token=this.authToken,t.session_data.version=3),this.authorizePromise=(0,Ar.default)(this.params.apiTransport.sendRequest(e,t).then(i=>((!i||!i.session_key)&&this.params.error$.next({id:"AuthorizeFailed",category:ve.EXTERNAL_API,message:"No session key",data:i}),this.sessionKey=i?.session_key??void 0,this.sessionKey)).catch(async i=>{this.sessionKey=void 0;let o=i?.error_code;switch(o){case 401:return this.authToken=await this.refreshAuthToken(),this._authorizeWithBackoff()}o?this.params.error$.next({id:`Authorize#${o}`,category:ve.EXTERNAL_API,message:"authorize error",data:i}):this.params.error$.next({id:"AuthorizeUnknown",category:ve.NETWORK,message:"authorize error",thrown:i})}),()=>{this.authorizePromise=void 0,this.consequentAuthErrors=this.sessionKey?0:this.consequentAuthErrors+1,this.authorized$.next(this.sessionKey!==void 0)}),this.authorizePromise}};var{NativeAbortSignal:TE,NativeAbortController:OE}=function(r){return{NativeAbortSignal:r.AbortSignal,NativeAbortController:r.AbortController}}(typeof self<"u"?self:global);function el(r){let e;try{e=new Event("abort")}catch{typeof document<"u"?document.createEvent?(e=document.createEvent("Event"),e.initEvent("abort",!1,!1)):(e=document.createEventObject(),e.type="abort"):e={type:"abort",bubbles:!1,cancelable:!1}}return e.reason=r,e}function rl(r){if(r===void 0)if(typeof document>"u")r=new Error("This operation was aborted"),r.name="AbortError";else try{r=new DOMException("signal is aborted without reason"),Object.defineProperty(r,"name",{value:"AbortError"})}catch{r=new Error("This operation was aborted"),r.name="AbortError"}return r}var Cr=class{constructor(){Object.defineProperty(this,"listeners",{value:{},writable:!0,configurable:!0})}addEventListener(e,t,i){e in this.listeners||(this.listeners[e]=[]),this.listeners[e].push({callback:t,options:i})}removeEventListener(e,t){if(!(e in this.listeners))return;let i=this.listeners[e];for(let o=0,a=i.length;o<a;o++)if(i[o].callback===t){i.splice(o,1);return}}dispatchEvent(e){if(!(e.type in this.listeners))return;let i=this.listeners[e.type].slice();for(let o=0,a=i.length;o<a;o++){let u=i[o];try{u.callback.call(this,e)}catch(c){Promise.resolve().then(()=>{throw c})}u.options&&u.options.once&&this.removeEventListener(e.type,u.callback)}return!e.defaultPrevented}},he=class extends Cr{constructor(){super(),this.listeners||Cr.call(this),Object.defineProperty(this,"aborted",{value:!1,writable:!0,configurable:!0}),Object.defineProperty(this,"onabort",{value:null,writable:!0,configurable:!0}),Object.defineProperty(this,"reason",{value:void 0,writable:!0,configurable:!0})}toString(){return"[object AbortSignal]"}dispatchEvent(e){e.type==="abort"&&(this.aborted=!0,typeof this.onabort=="function"&&this.onabort.call(this,e)),super.dispatchEvent(e)}throwIfAborted(){let{aborted:e,reason:t="Aborted"}=this;if(e)throw t}static timeout(e){let t=new X;return setTimeout(()=>t.abort(new DOMException(`This signal is timeout in ${e}ms`,"TimeoutError")),e),t.signal}static any(e){let t=new X;function i(){t.abort(this.reason),o()}function o(){for(let a of e)a.removeEventListener("abort",i)}for(let a of e)if(a.aborted){t.abort(a.reason);break}else a.addEventListener("abort",i);return t.signal}},X=class{constructor(){Object.defineProperty(this,"signal",{value:new he,writable:!0,configurable:!0})}abort(e){let t=rl(e),i=el(t);this.signal.reason=t,this.signal.dispatchEvent(i)}toString(){return"[object AbortController]"}};typeof Symbol<"u"&&Symbol.toStringTag&&(X.prototype[Symbol.toStringTag]="AbortController",he.prototype[Symbol.toStringTag]="AbortSignal");function Lr(r){return r.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL?(console.log("__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill"),!0):typeof r.Request=="function"&&!r.Request.prototype.hasOwnProperty("signal")||!r.AbortController}function Di(r){typeof r=="function"&&(r={fetch:r});let{fetch:e,Request:t=e.Request,AbortController:i,__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL:o=!1}=r;if(!Lr({fetch:e,Request:t,AbortController:i,__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL:o}))return{fetch:e,Request:a};let a=t;(a&&!a.prototype.hasOwnProperty("signal")||o)&&(a=function(f,p){let v;p&&p.signal&&(v=p.signal,delete p.signal);let s=new t(f,p);return v&&Object.defineProperty(s,"signal",{writable:!1,enumerable:!1,configurable:!0,value:v}),s},a.prototype=t.prototype);let u=e;return{fetch:(d,f)=>{let p=a&&a.prototype.isPrototypeOf(d)?d.signal:f?f.signal:void 0;if(p){let v;try{v=new DOMException("Aborted","AbortError")}catch{v=new Error("Aborted"),v.name="AbortError"}if(p.aborted)return Promise.reject(v);let s=new Promise((l,h)=>{p.addEventListener("abort",()=>h(v),{once:!0})});return f&&f.signal&&delete f.signal,Promise.race([s,u(d,f)])}return u(d,f)},Request:a}}var wb=()=>"fetch"in window,Ue=wb()&&Lr({fetch:window.fetch,Request:window.Request,AbortController:window.AbortController}),tl=Ue?Di({fetch:window.fetch,Request:window.Request,AbortController:window.AbortController}):void 0,$i=Ue?tl.fetch:window.fetch,$E=Ue?tl.Request:window.Request,jE=Ue?X:window.AbortController,ME=Ue?he:window.AbortSignal;var il=D(rr(),1),ol=D(qr(),1);import{ErrorCategory as Nr,now as ji}from"@vkontakte/videoplayer-shared";var Ve=class{constructor(e){this.params=e,this.apiKey=e.config.apiKey,this.apiEnv=e.config.apiEnv,this.apiBaseUrl=Tt[this.apiEnv],this.timeSynchronisation=e.timeSynchronisation,this.isApiBaseUrlFetched=!1}async resolveApiBaseUrl(){if(this.apiEnv!=="auto"||this.isApiBaseUrlFetched)return this.apiBaseUrl;try{let e=atob("aHR0cHM6Ly9kbnMuZ29vZ2xlL3Jlc29sdmU/bmFtZT12aWRlby5fZW5kcG9pbnQub2sucnUmdHlwZT1UWFQ="),o=(await(await $i(e,{method:"GET",mode:"cors",cache:"no-cache"})).json())?.Answer[0]?.data;if(!o)throw new Error("Wrong DNS response");return o}catch(e){return this.params.error$.next({id:"OneStat:ApiTransport:resolveApiBaseUrl",category:Nr.NETWORK,message:"Unhandled resolve api base url error",thrown:e}),Tt.vk_alias}finally{this.isApiBaseUrlFetched=!0}}sendBeacon(e,t,i){if(!window.Blob||!window.navigator.sendBeacon)return!1;let o=this._prepareQueryParams({method:e,queryParams:t,sessionKey:i}),a=new window.Blob([o.toString()],{type:"application/x-www-form-urlencoded"});try{return window.navigator.sendBeacon(`${this.apiBaseUrl}/fb.do`,a)}catch(u){this.params.error$.next({id:"OneStat:ApiTransport:sendBeacon",category:Nr.NETWORK,message:"Unhandled beacon error",thrown:u,data:{method:e,params:t}})}return!1}async sendRequest(e,t,i){let o=ji(),a=u=>{if(u instanceof TypeError&&(0,il.default)(["Failed to fetch","NetworkError when attempting to fetch resource."],u.message)){this.params.error$.next({id:"Network",category:Nr.NETWORK,message:"Request failed",thrown:u});return}this.params.error$.next({id:"OneStat:ApiTransport:sendRequest",category:Nr.NETWORK,message:"Unhandled request error",thrown:u,data:{method:e,params:t,sessionKey:i,time:ji()-o}})};return this.apiBaseUrl=await this.resolveApiBaseUrl(),$i(`${this.apiBaseUrl}/fb.do`,{method:"post",headers:{"Content-type":"application/x-www-form-urlencoded"},body:this._prepareQueryParams({method:e,queryParams:t,sessionKey:i})}).then(u=>{let c=Number(u.headers.get("content-length"))===0,d=new Date(u.headers.get("date")??"").getTime(),f=ji()-o;if(isFinite(d)&&this.timeSynchronisation?.addServerTime(d,f),!c)return u.json().then(p=>Object.prototype.hasOwnProperty.call(p,"error_msg")?Promise.reject(p):p,a)},a)}_prepareQueryParams(e){let t=new URLSearchParams({format:"JSON",method:e.method,application_key:this.apiKey});return e.sessionKey!==void 0&&t.append("session_key",e.sessionKey),(0,ol.default)(e.queryParams).forEach(([i,o])=>t.append(i,typeof o=="string"?o:JSON.stringify(o))),t}};var al=D(rr(),1),sl=D(qr(),1);import{ErrorCategory as xb,now as Rb,safeStorage as Ke,debounceFn as nl}from"@vkontakte/videoplayer-shared";var kr="onestat_events",Mi=r=>e=>e.timestamp+r>=Rb(),Dr=class{constructor(e){this.unsaltedStorage=[];this.isPaused=!1;this.isUrgent=e=>{let{operation:t}=e;return(0,al.default)(["action_play","watch_coverage_record","watch_coverage_live"],t)};this.params=e,this.api=e.api,this.error$=e.error$,this.userSalt=e.userSalt,this.loggerDebugLog=e.debugLogger.createComponentLog("stat logger"),this.firstFlush=nl(()=>this.safeFlush(),this.params.config.firstFlushTime,{maxWait:this.params.config.firstFlushTime});let t=Ke.isPersistent()?this.params.config.flushMaxWait:0;this.debouncedFlush=nl(()=>this.safeFlush(),this.params.config.flushDebounceTime,{maxWait:t}),this.subscription=this.api.authorized$.subscribe(i=>{i&&this.debouncedFlush()}),this.housekeepStorage()}safeFlush(){try{this.flush()}catch(e){this.error$.next({id:"LoggerError",category:xb.WTF,message:e?String(e):"Unknown logger error",thrown:e})}}readFromStorage(){let e=Ke.get(kr);try{return e?JSON.parse(e):{}}catch{}return{}}addToStorage(e){if(!this.userSalt){this.unsaltedStorage.push(e);return}let t=this.readFromStorage(),o=(t[this.userSalt]??[]).filter(Mi(this.params.config.storageExpiration));Ke.set(kr,JSON.stringify({...t,[this.userSalt]:[...o,e]}))}getFromStorage(){return this.userSalt?(this.readFromStorage()[this.userSalt]??[]).filter(Mi(this.params.config.storageExpiration)):this.unsaltedStorage}markStorageSent(){if(!this.userSalt){this.unsaltedStorage=[];return}let e=this.readFromStorage();delete e[this.userSalt],Ke.set(kr,JSON.stringify(e))}housekeepStorage(){let e=this.readFromStorage();for(let[t,i]of(0,sl.default)(e)){let o=i.filter(Mi(this.params.config.storageExpiration));o.length?e[t]=o:delete e[t],this.loggerDebugLog({message:`${i.length} retrieved from storage, ${o.length} of them actual`})}Ke.set(kr,JSON.stringify(e))}log(e){this.addToStorage(e),!this.isPaused&&(this.isUrgent(e)?this.flush():this.lastVsid!==e.custom.vsid?this.firstFlush():this.debouncedFlush(),this.lastVsid=e.custom.vsid)}flush({wantBeacon:e,clearStorage:t}={wantBeacon:!1,clearStorage:!0}){let i=this.getFromStorage();i.length!==0&&(this.api.authorized$.getValue()?(e&&this.params.config.useBeacon?(this.loggerDebugLog({message:`Flushing ${i.length} events through beacon`}),this.api.logBeacon(i)):(this.loggerDebugLog({message:`Flushing ${i.length} events`}),this.api.logRequest(i)),t&&this.markStorageSent()):this.api.authorize(),this.firstFlush.cancel(),this.debouncedFlush.cancel())}pause(){this.isPaused=!0,this.debouncedFlush.cancel()}resume(){this.isPaused=!1,this.debouncedFlush()}destroy(){this.subscription.unsubscribe(),this.firstFlush.cancel(),this.debouncedFlush.cancel()}};import{HttpConnectionType as Fi,Surface as ge,VideoFormat as _,VideoQuality as L}from"@vkontakte/videoplayer-core";import{assertNever as ul}from"@vkontakte/videoplayer-shared";var cl=r=>r&&{[L.INVARIANT]:"unknown",[L.Q_144P]:"mobile",[L.Q_240P]:"lowest",[L.Q_360P]:"low",[L.Q_480P]:"medium",[L.Q_576P]:"unknown",[L.Q_720P]:"high",[L.Q_1080P]:"fullhd",[L.Q_1440P]:"quadhd",[L.Q_2160P]:"ultrahd",[L.Q_4320P]:"unknown"}[r],Bi=r=>r&&{[Fi.HTTP1]:"http1",[Fi.HTTP2]:"http2",[Fi.QUIC]:"http3"}[r],ll=r=>{if(r!==void 0)switch(r){case _.MPEG:return"mp4";case _.DASH:case _.DASH_LIVE:case _.DASH_STREAMS:return"dash";case _.DASH_SEP:return"dash_sep";case _.DASH_ONDEMAND:return"ondemand_dash";case _.DASH_WEBM:case _.DASH_LIVE_WEBM:return"webm";case _.DASH_WEBM_AV1:return"av1";case _.DASH_LIVE_CMAF:return"ondemand_dash_live";case _.HLS:case _.HLS_LIVE:return"hls";case _.HLS_ONDEMAND:return"ondemand_hls";case _.HLS_LIVE_CMAF:return"ondemand_hls_live";case _.WEB_RTC_LIVE:return"webrtc";default:return ul(r)}},$r=r=>{if(r!==void 0)switch(r){case ge.NONE:case ge.INLINE:return;case ge.FULLSCREEN:return"fullscreen";case ge.SECOND_SCREEN:return"chromecast";case ge.PIP:return"pip";case ge.INVISIBLE:return"invisible";default:return ul(r)}},fl=r=>{switch(r){case"slow-2g":return"poor";case"2g":return"poor";case"3g":return"good";case"4g":return"excellent"}};var jr=class{constructor(e){this.offset=void 0;this.offset=e}getOffset(){return this.offset??0}setOffset(e){this.offset=e}now(){return Date.now()+(this.offset??0)}date(e=new Date){return e.setTime(e.getTime()+(this.offset??0)),e}addServerTime(e,t){let i=Date.now(),o=e-i-t/2;if(Math.abs(o)<1e3){this.offset=0;return}this.offset===void 0?this.offset=Math.round(o):this.offset=Math.round(.2*o+(1-.2)*this.offset)}};var Vi=D(wl(),1),xl=()=>(0,Vi.default)(Math.floor(Math.random()*2**32).toString(36),7,"0"),Rl=()=>(0,Vi.default)(Math.floor(Math.random()*2**64).toString(36),13,"0");import{PlaybackState as Al}from"@vkontakte/videoplayer-core";import{filter as Cl,filterChanged as Jb,fromEvent as Xb,isNullable as Ll,map as Zb,merge as Ki,Observable as ey,Subject as Gi,Subscription as ry,ValueSubject as ty}from"@vkontakte/videoplayer-shared";var Nl=(r,e)=>new ey(t=>{let i=new ry,o=Ki(Xb(window,"beforeunload"),r.events.willDestruct$),a=new ty(void 0),u;i.add(r.info.isLive$.pipe(Jb()).subscribe(U=>{u&&(u.unsubscribe(),a.next(void 0)),U?u=r.info.liveTime$.pipe(Zb(Br=>Br&&Br/1e3)).subscribe(a):u=r.info.position$.subscribe(a),i.add(u)}));let{playing$:c,paused$:d}=r.events,f=r.events.willSeek$.pipe(Cl(()=>r.info.playbackState$.getValue()===Al.PLAYING)),p=r.events.seeked$.pipe(Cl(()=>r.info.playbackState$.getValue()===Al.PLAYING)),v=!1,s=new Gi;i.add(f.subscribe(()=>{v||s.next(),v=!0})),i.add(p.subscribe(()=>v=!1));let l=new Gi,h=new Gi,g=Ki(c,p,l),b=Ki(d,s,o,r.events.looped$,h),m,S=()=>m=a.getValue(),Ge=()=>{let U=a.getValue();Ll(m)||m===U||Ll(U)||(t.next({from:m,to:U}),m=void 0)},We=()=>{h.next(),l.next()};if(i.add(g.subscribe(S)),i.add(b.subscribe(Ge)),e.forceInterval&&isFinite(e.forceInterval)){let U=0;i.add(g.subscribe(()=>U=window.setTimeout(We,e.forceInterval))),i.add(b.subscribe(()=>window.clearTimeout(U)))}return i});var Bl="_one-stat_",Ml=`${Bl}uuid`,Fl=`${Bl}deviceId`,Wi=()=>{let r=new zi;return{subscription:r,subscribe:(e,t)=>{e&&r.add(e.subscribe(t))}}},Qi=class{constructor(e,t){this.subscription=new zi;this.debugLogger=new uy;this.oneStatDebugLog=this.debugLogger.createComponentLog("onestat");this.loopCounter=0;this.disabled=!1;this.vsid$=new Fr(void 0);this.isid$=new Fr(void 0);this.zenUid$=new Fr(void 0);this.seekAction$=new Fr("unknown");this.statContext=e,this.config=Jn(t.config??{}),me(t.apiEnv)&&(this.config.apiEnv=t.apiEnv),this.config.synchronizeTime&&(this.timeSynchronisation=new jr);let i=new sy;this.experimental={error$:i},Mr.get(Ml)&&Mr.remove(Ml);let a=Mr.get(Fl);this.statContext.deviceId?this.deviceId=this.statContext.deviceId:a?this.deviceId=a:(this.deviceId=Ot(),Mr.set(Fl,this.deviceId)),this.resetViewSession(),t.useIsid&&this.isid$.next(t.isid??Rl()),this.zenUid$.next(t.zenUid);let u=new Ve({config:this.config,error$:i,timeSynchronisation:this.timeSynchronisation});this.api=new Be({config:this.config,apiTransport:u,refreshAuthToken:t.refreshAuthToken,mobile:this.statContext.mobile??!1,deviceId:this.deviceId,error$:i,vktvVersion:t.vktvVersion}),this.logger=new Dr({config:this.config,debugLogger:this.debugLogger,api:this.api,error$:i,userSalt:t.userSalt});let{isEmbed:c,topOrigin:d}=cy();this.isEmbed=c,this.embedParent=d?new URL(d).hostname:void 0,this.subscribe()}updateContext(e){this.statContext={...this.statContext,...e}}attachTo(e){let t=new zi,i=(s,l)=>t.add(s.subscribe(l));i(e.events.willStart$,()=>{let s=e.info.position$.getValue();this.logActionPlay({position:s}),this.statContext.projectId&&this.logActionPlayInteractive()}),i(e.events.looped$,()=>{this.resetViewSession(),++this.loopCounter>this.config.maxLoops&&(this.disabled=!0),this.logActionPlay({position:e.info.position$.getValue()})}),i(e.events.seeked$,()=>{this.logSeek({action:this.seekAction$.getValue(),time:e.info.position$.getValue()}),this.seekAction$.next("unknown")}),i(e.events.paused$,()=>{this.logPause({position:e.info.position$.getValue()})}),i(e.events.willResume$,()=>{this.logPlay()}),i(e.events.started$,()=>{this.statContext.clip&&this.logWatchCoverageRecord({start:0,end:0})}),i(e.events.playing$,()=>{this.logPlaying()}),i(Nl(e,{forceInterval:this.config.watchCoverageInterval}),s=>{let l=e.info.isLive$.getValue(),h=e.info.atLiveEdge$.getValue(),g={start:parseFloat(s.from.toFixed(3)),end:parseFloat(s.to.toFixed(3))};if(h){let b=e.info.liveLatency$.getValue()??0,m=e.info.currentBuffer$.getValue()?.end??0,S=e.info.liveBufferTime$.getValue()??0,Ge=Math.round((b-(m-S))*1e3),We=Math.round(b*1e3);Ge&&We&&(g.latency=Ge,g.bufferLatency=We)}l?this.logWatchCoverageLive(g):this.logWatchCoverageRecord(g)});let o;i(e.info.isStalled$,s=>{s?o=B():(me(o)&&this.logEmptyBuffer({duration:B()-o}),o=void 0)});let a=!1;t.add(e.events.fatalError$.pipe(ay()).subscribe(()=>a=!0)),i(e.events.willStop$,()=>{if(e.info.isStalled$.getValue()){let l=me(o)?B()-o:void 0;this.logCloseAtEmptyBuffer({duration:l??0}),o=void 0}else a||this.logActionStop()}),i(e.events.managedError$,({id:s})=>{this.logError({fatal:!1,errorType:s})}),i(e.events.fatalError$,({id:s})=>{this.logError({fatal:!0,errorType:s})});let u,c,d=!1;i(e.events.firstBytes$,s=>{u=B(),this.logFirstBytes({time:s})}),i(e.events.willStart$,()=>c=B()),i(e.info.currentBuffer$,s=>{!d&&s&&s.end-s.start>0&&me(u)&&(this.logPlayerReady({duration:B()-u}),d=!0)}),i(e.events.firstFrame$,()=>{me(u)&&!d&&(this.logPlayerReady({duration:B()-u}),d=!0),me(c)&&this.logFirstFrame({time:B()-c})});let f;i(e.info.currentVideoStream$,s=>{s&&(f&&s.id!==f&&this.logTrackSwitch(s),f=s.id)});let p;i(e.info.currentAudioStream$,s=>{s&&(p&&s.id!==p&&this.logTrackSwitch(s),p=s.id)}),i(e.info.atLiveEdge$,s=>this.updateContext({liveEdge:s})),i(kl({muted:e.info.muted$,volume:e.info.volume$}),({muted:s,volume:l})=>this.updateContext({audible:!s&&l>0})),i(e.info.currentQuality$,s=>{let l=cl(s);this.updateContext({quality:l}),l&&this.logQuality(l)}),i(e.info.isAutoQualityEnabled$,s=>this.updateContext({autoQuality:s})),i(e.info.currentFormat$,s=>this.updateContext({contentType:ll(s)})),i(e.info.currentPlaybackRate$,s=>this.updateContext({rate:s})),i(e.info.is3DVideo$,s=>this.updateContext({is3d:s}));let v;return i(e.info.hostname$,s=>{let l=v!==void 0&&v!==s;this.updateContext({cdnHostname:s,failover:l}),l&&this.logFailover(s),v=s}),i(e.info.throughputEstimation$,s=>this.updateContext({downloadSpeed:s})),i(e.info.httpConnectionType$,s=>{this.statContext.firstConnectionType||this.updateContext({firstConnectionType:Bi(s)}),this.updateContext({connectionType:Bi(s)})}),i(e.info.httpConnectionReused$,s=>{$l(this.statContext.firstConnectionReused)&&this.updateContext({firstConnectionReused:s}),this.updateContext({connectionReused:s})}),i(e.info.surface$,s=>this.updateContext({mode:$r(s)})),i(kl({current:e.info.currentTextTrack$,available:e.info.availableTextTracks$}),({current:s,available:l})=>{let h=l.find(({id:b})=>b===s),g=h&&(h.isAuto?`${h.language}_auto`:h.language);this.updateContext({subtitles:g?.split(".")[0]})}),this.player=e,this.uiEvents&&this.attachToUi(this.uiEvents),this.resubscribeBeforeunload(),this.subscription.add(t),t}attachToUi(e){this.uiEvents=e;let{subscription:t,subscribe:i}=Wi();return this.player&&(i(e.actionRewind$,()=>{this.player&&(this.resetViewSession(),this.logActionPlay({position:this.player.info.position$.getValue()}))}),i(e.actionSeek$,this.seekAction$),i(e.inPiP$,o=>{let a=o?"pip":$r(this.player?.info.surface$.getValue());this.updateContext({mode:a})}),i(e.inFullscreen$,o=>{let a=o?"fullscreen":$r(this.player?.info.surface$.getValue());this.updateContext({mode:a})}),i(e.actionSetSubtitle$,o=>this.updateContext({subtitles:o.split(".")[0]})),i(e.nextMovie$,o=>this.logNextMovie(o)),this.resubscribeBeforeunload(),this.subscription.add(t)),t}attachToAds(e){let{subscription:t,subscribe:i}=Wi();return i(e.slotRequested$,()=>this.logAdSlotRequest()),i(e.started$,o=>this.logAdStarted(o)),i(e.paused$,()=>this.logAdPaused()),i(e.resumed$,()=>this.logAdResumed()),i(e.ended$,()=>this.logAdEnded()),i(e.skipped$,()=>this.logAdSkipped()),i(e.clicked$,()=>this.logAdClicked()),i(e.error$,o=>this.logError({errorType:o,fatal:!1})),this.resubscribeBeforeunload(),this.subscription.add(t),t}attachToInteractive(e){let{subscription:t,subscribe:i}=Wi();return i(e.click$,o=>this.logInterfaceClick(o)),i(e.nextMovie$,o=>this.logNextMovie(o)),this.resubscribeBeforeunload(),this.subscription.add(t),t}authorize(e){return this.api.authorize(e)}pause(){this.logger.pause(),this.oneStatDebugLog({message:"paused"})}resume(){this.logger.resume(),this.oneStatDebugLog({message:"resumed"})}destroy(){this.logger.flush(),this.subscription.unsubscribe(),this.api.destroy(),this.logger.destroy()}resetViewSession(){this.oneStatDebugLog({message:"VSID reset"}),this.vsid$.next(xl())}getDeviceId(){return this.deviceId}setFieldBlacklist(){}logInited(){}logReady(e){this.log({operation:"player_ready",param:String(e.time)})}logStarted(...e){this.logActionPlay(...e)}logPlay(){this.log({operation:"play_toggle"})}logPlaying(){this.log({operation:"playing"})}logPause(e){this.log({operation:"pause",param:String(Math.round(e.position))})}logSeek(e){this.log({operation:"seek",param:e.action,time:e.time})}logFirstBytes(e){this.log({operation:"first_bytes",param:String(e.time)})}logFirstFrame(e){this.log({operation:"first_frame",param:String(e.time)})}logError(e){this.log({operation:"content_error",param:`${e.fatal?"fatal":"recoverable"}_${e.errorType}`})}logWatchCoverageRecord(e){this.log({operation:"watch_coverage_record",param:`${e.start}-${e.end}`},{in_history:this.statContext.inHistory?1:void 0})}logWatchCoverageLive(e){let t=this.timeSynchronisation?.getOffset()??0,i=e.start+t,o=e.end+t;this.log({operation:"watch_coverage_live",param:`${i}-${o}`},{in_history:this.statContext.inHistory?1:void 0,latency:e.latency,buffer_latency:e.bufferLatency})}logEmptyBuffer(e){this.log({operation:"empty_buffer",param:String(e.duration)})}logDownloadSpeed(){}logAdSlotRequest(){this.log({operation:"adv",param:"slot_request"})}logAdStarted(e){this.log({operation:"adv",param:e})}logAdPaused(){this.log({operation:"adv",param:"pause"})}logAdResumed(){this.log({operation:"adv",param:"resume"})}logAdEnded(){this.log({operation:"adv",param:"ended"})}logAdSkipped(){this.log({operation:"adv",param:"skip"})}logAdClicked(){this.log({operation:"adv",param:"click"})}logInterfaceClick(e){this.log({operation:"player_interface_click",param:e})}logNextMovie(e){this.log({operation:"next_movie",param:String(e)})}subscribe(){this.resubscribeBeforeunload();let e=window.navigator.connection;e&&"onchange"in e&&"effectiveType"in e&&this.subscription.add(oy(Dl(e,"change"),ny(["init"])).subscribe(()=>this.updateContext({network:fl(e.effectiveType)}))),this.config.debugLog&&this.debugLogger.log$.subscribe(t=>{console.debug("%c stat ","background:#fa6470;",`component: ${t.component}.`,t.message)})}resubscribeBeforeunload(){this.beforeunloadSubscription?.unsubscribe(),this.beforeunloadSubscription=Dl(window,"beforeunload").subscribe(()=>this.logger.flush({wantBeacon:!0,clearStorage:this.config.clearStorageAtUnload})),this.subscription.add(this.beforeunloadSubscription)}logPlayerReady(e){this.log({operation:"player_ready",param:String(Math.round(e.duration))})}logActionPlay(e){this.log({operation:"action_play",param:String(Math.round(e.position))})}logActionPlayInteractive(){this.statContext.projectId&&this.log({operation:"action_play_interactive",param:String(this.statContext.movieId)},{vid:this.statContext.projectId})}logFailover(e){this.log({operation:"failover",param:e})}logCloseAtEmptyBuffer(e){this.log({operation:"close_at_empty_buffer",param:String(Math.round(e.duration))})}logActionStop(){this.log({operation:"action_stop"})}logTrackSwitch(e){this.log({operation:"track_switch",param:e.id})}logQuality(e){this.log({operation:"quality",param:e})}log(e,t={}){if(this.disabled){this.oneStatDebugLog({message:`operation ${e.operation} but statistics is disabled`});return}if((0,Hi.default)(this.config.disabledOperations,e.operation)){this.oneStatDebugLog({message:`operation ${e.operation} but it is disabled`});return}this.oneStatDebugLog({message:`operation ${e.operation} ${e.param}`});let i=this.createLogItem(e,t);this.logger.log(i)}createLogItem({operation:e,param:t,time:i},o={}){let a=this.timeSynchronisation?.now()??B(),u=this.vsid$.getValue();iy(u);let c=this.isid$.getValue(),d=e==="empty_buffer"||e==="close_at_empty_buffer"?this.statContext.connectionType:this.statContext.firstConnectionType,f=this.statContext.firstConnectionReused,p,v;if(this.isEmbed||this.statContext.place==="embed"){p=this.embedParent;let l=[...new URLSearchParams(location.search).entries()].filter(([h,g])=>(0,Hi.default)(this.config.embedUrlParams,h));v=new URLSearchParams(l).toString()}else this.statContext.place==="direct"&&(this.statContext.refDomain?p=jl(this.statContext.refDomain)?.hostname??this.statContext.refDomain:document.referrer&&(p=jl(document.referrer)?.hostname??document.referrer),v=location.href.substring(0,1024));let s={vsid:u,isid:c,vid:this.statContext.movieId,uid:this.zenUid$.getValue(),ct:this.statContext.contentType,place:this.isEmbed?"embed":this.statContext.place,quality:this.statContext.quality,cdn_host:this.statContext.cdnHostname,stat_type:this.statContext.autoplay===!0?"auto":this.statContext.autoplay===!1?"":void 0,param:t,vk_app_id:this.statContext.vkAppId,track_code:this.statContext.trackCode,connection_type:d,connection_reused:f===!0?1:f===!1?0:void 0,cached_data:this.statContext.cached===!0?1:this.statContext.cached===!1?0:void 0,live:this.statContext.liveEdge?1:void 0,muted:this.statContext.audible===!1?1:void 0,mode:this.statContext.mode,subtitles:this.statContext.subtitles,download_speed:this.statContext.downloadSpeed,manual_quality:this.statContext.autoQuality?void 0:1,ref_domain:p,direct_url:v,rate:this.statContext.rate===1||$l(this.statContext.rate)?void 0:this.statContext.rate.toFixed(2),view_360:this.statContext.is3d?1:void 0,aid:this.statContext.albumId,vk_playlist_id:this.statContext.vkPlaylistId,...o};for(let l of this.config.disabledCustomFields)delete s[l];return{operation:e,type:1,time:i,network:this.statContext.network,timestamp:a,custom:s}}};export{we as ApiEnv,qt as ConnectionType,_t as ContentType,Gn as InteractiveInterfaceClick,Qi as OneStat,Et as Quality,Pt as SeekAction,tr as VERSION};
|
package/evergreen.esm.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @vkontakte/videoplayer-statistics v1.0.80-dev.
|
|
3
|
-
*
|
|
2
|
+
* @vkontakte/videoplayer-statistics v1.0.80-dev.fba07f4d.0
|
|
3
|
+
* Mon, 23 Jun 2025 13:00:39 GMT
|
|
4
4
|
* https://st.mycdn.me/static/vkontakte-videoplayer/1-0-80/doc/
|
|
5
5
|
*/
|
|
6
|
-
var A=(a=>(a.PROD="prod",a.VK_ALIAS="vk_alias",a.VIDEOTEST="videotest",a.TEST="test",a.OKCDN="okcdn",a.AUTO="auto",a))(A||{}),U=(u=>(u.Q144P="mobile",u.Q240P="lowest",u.Q360P="low",u.Q480P="medium",u.Q720P="high",u.Q1080P="fullhd",u.Q1440P="quadhd",u.Q2160P="ultrahd",u.UNKNOWN="unknown",u))(U||{}),W=(d=>(d.MP4="mp4",d.DASH="dash",d.DASH_SEP="dash_sep",d.ONDEMAND_DASH="ondemand_dash",d.HLS="hls",d.ONDEMAND_HLS="ondemand_hls",d.WEBM="webm",d.AV1="av1",d.ONDEMAND_DASH_LIVE="ondemand_dash_live",d.ONDEMAND_HLS_LIVE="ondemand_hls_live",d.WEBRTC="webrtc",d.UNKNOWN="unknown",d.RTMP="rtmp",d))(W||{});var H=(t=>(t.HTTP1="http1",t.HTTP2="http2",t.HTTP3="http3",t))(H||{});var K=(c=>(c.SLIDER="slider",c.DOUBLE_TAP="double_tap",c.TIME_CODE="time_code",c.EPISODE="episode",c.REWIND="rewind",c.LIVE="live",c.UNKNOWN="unknown",c))(K||{}),ie=(n=>(n.GRAPH_SHOW="iGraphShow",n.GRAPH_HIDE="iGraphHide",n.NEXT_AREA="iNextChapterArea",n.NEXT_BUTTON="iNextChapterBtn",n.WATCH_AGAIN="iWatchAgainBtn",n))(ie||{}),oe={action_play:"ap",action_play_interactive:"api",first_bytes:"fb",player_ready:"pr",first_frame:"ff",seek:"sk",watch_coverage_record:"wr",watch_coverage_live:"wl",empty_buffer:"eb",action_stop:"as",close_at_empty_buffer:"cb",content_error:"er",player_interface_click:"pc",next_movie:"nm",track_switch:"ts",failover:"fo",quality:"qt"},se={vsid:"si",isid:"is",vid:"vi",place:"pl",quality:"qt",cdn_host:"ch",stat_type:"st",param:"pm",vk_app_id:"va",track_code:"tc",connection_type:"cnt",connection_reused:"cr",cached_data:"cd",live:"lv",muted:"mu",mode:"mo",subtitles:"sb",failover:"fo",download_speed:"ds",manual_quality:"mq",ref_domain:"rd",direct_url:"du"},re={unknown:"un",mobile:"m",lowest:"ls",low:"l",medium:"md",high:"h",fullhd:"f",quadhd:"q",ultrahd:"u"},ne={pip:"pi",fullscreen:"fs",external:"ex",prefetch:"pr",airplay:"ap",chromecast:"cc",invisible:"iv"};import{fillWithDefault as Te}from"@vkontakte/videoplayer-shared/evergreen";var L="1.0.80-dev.96cce6f5.0",ae="CIOPGQJGDIHBABABA",q={prod:"https://api.ok.ru",vk_alias:"https://api.mycdn.me",videotest:"https://videotestapi.ok.ru/api",test:"https://apitest.ok.ru",okcdn:"https://api.okcdn.ru",auto:""};var we={apiEnv:"vk_alias",apiKey:ae,requestRetryCount:1,firstFlushTime:5e3,flushDebounceTime:1e4,flushMaxWait:6e4,storageExpiration:36*60*60*1e3,watchCoverageInterval:15e3,disabledOperations:["quality"],disabledCustomFields:[],shorten:!0,maxLoops:100,embedUrlParams:[],useBeacon:!0,synchronizeTime:!0,debugLog:!1,clearStorageAtUnload:!0,useVKComIsMobileLogic:!1,backoff:{start:1e3,factor:1.5,max:5*60*1e3,random:.1}},de=r=>Te(r,we);function z(){let r="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),e=new Array(36),i=0,t,o;for(o=0;o<36;o++)o===8||o===13||o===18||o===23?e[o]="-":o===14?e[o]="4":(i<=2&&(i=33554432+Math.random()*16777216|0),t=i&15,i=i>>4,e[o]=r[o===19?t&3|8:t]);return e.join("")}import{assertNonNullable as We,combine as ye,fromEvent as Pe,isNonNullable as E,isNullable as _e,merge as He,now as v,observableFrom as Ke,once as qe,safeStorage as M,Subject as ze,Subscription as ee,ValueSubject as V,createURL as Ee}from"@vkontakte/videoplayer-shared/evergreen";import{Logger as Qe,detectEmbed as je}from"@vkontakte/videoplayer-shared/evergreen";var ce=r=>{let{operation:e,custom:i}=r,t=Object.fromEntries(Object.entries(i).map(([o,n])=>{let a=se[o]??o,c=n;return n&&(o==="mode"?c=ne[n]??n:o==="quality"&&(c=re[n]??n)),[a,c]}));return{...r,operation:oe[e]??e,custom:t}};import{ValueSubject as ke,getExponentialDelay as Le,ErrorCategory as P}from"@vkontakte/videoplayer-shared/evergreen";var $e=/Mobile|mini|Fennec|Android|iP(ad|od|hone)|opera (mini|mobi)/i,x=class{constructor(e){this.consequentAuthErrors=0;this.authorized$=new ke(!1);this.params=e}async authorize(e){return this.authToken=e??await this.refreshAuthToken(),this._authorizeWithBackoff()}logBeacon(e){let i="log.externalLog",t=this.createLogParams(e),o=this.sessionKey;if(!o)return;this.params.apiTransport.sendBeacon(i,t,o)||this.logRequest(e).catch(()=>{})}async logRequest(e){let i="log.externalLog",t=this.createLogParams(e),o=this.sessionKey??await this._authorizeWithBackoff();if(!o)return;let n=async(a,c=this.params.config.requestRetryCount)=>{try{return await this.params.apiTransport.sendRequest(i,t,o)}catch(l){if(!l||!("error_code"in l)){this.params.error$.next({id:"logRequestUnknown",category:P.NETWORK,message:`Unknown ${i} error`,thrown:l});return}let u=l?.error_code;switch(u){case 102:case 103:case 104:return this.authorized$.next(!1),this.sessionKey=await this._authorizeWithBackoff(),c>0?n(a,c-1):void 0;case 401:return this.authorized$.next(!1),this.authToken=await this.refreshAuthToken(),this.sessionKey=await this._authorizeWithBackoff(),c>0?n(a,c-1):void 0;default:{this.params.error$.next({id:`LogRequest#${u}`,category:P.EXTERNAL_API,message:`${i} error`,data:l});return}}}};return n(e)}destroy(){window.clearTimeout(this.backoffTimeoutId),this.backoffTimeoutId=0}async refreshAuthToken(){if(this.params.refreshAuthToken)return this.refreshAuthTokenPromise||(this.refreshAuthTokenPromise=this.params.refreshAuthToken().finally(()=>{this.refreshAuthTokenPromise=void 0})),this.refreshAuthTokenPromise}createLogParams(e){let i="WEB",t=!1,o=`@vkontakte/videoplayer-statistics:${L}`;if(this.params.config.useVKComIsMobileLogic){let{appVersion:n}=window.navigator;t=$e.test(n)}else this.params.mobile&&(t=!0);return t&&(i="M_WEB"),this.params.vktvVersion&&(i="SMART_TV",o=this.params.vktvVersion),{collector:"ok.mobile.apps.video",data:JSON.stringify({application:o,platform:i,items:this.params.config.shorten?e.map(ce):e})}}_authorizeWithBackoff(){if(!this.consequentAuthErrors)return this._authorize();let e=Le(this.consequentAuthErrors,this.params.config.backoff);return new Promise(i=>{this.backoffTimeoutId||(this.backoffTimeoutId=window.setTimeout(()=>{this._authorize().then(i).catch(t=>this.params.error$.next({id:"AuthorizeBackoff",category:P.NETWORK,message:"Otherwise unhandled error in authorization",thrown:t})).finally(()=>this.backoffTimeoutId=0)},e))})}async _authorize(){if(this.authorizePromise)return this.authorizePromise;this.sessionKey=void 0,this.authorized$.next(!1);let e="auth.anonymLogin",i={session_data:{version:2,device_id:this.params.deviceId,client_version:L.split("-")[0],client_type:"SDK_JS"}};return this.authToken!==void 0&&(i.session_data.auth_token=this.authToken,i.session_data.version=3),this.authorizePromise=this.params.apiTransport.sendRequest(e,i).then(t=>((!t||!t.session_key)&&this.params.error$.next({id:"AuthorizeFailed",category:P.EXTERNAL_API,message:"No session key",data:t}),this.sessionKey=t?.session_key??void 0,this.sessionKey)).catch(async t=>{this.sessionKey=void 0;let o=t?.error_code;switch(o){case 401:return this.authToken=await this.refreshAuthToken(),this._authorizeWithBackoff()}o?this.params.error$.next({id:`Authorize#${o}`,category:P.EXTERNAL_API,message:"authorize error",data:t}):this.params.error$.next({id:"AuthorizeUnknown",category:P.NETWORK,message:"authorize error",thrown:t})}).finally(()=>{this.authorizePromise=void 0,this.consequentAuthErrors=this.sessionKey?0:this.consequentAuthErrors+1,this.authorized$.next(this.sessionKey!==void 0)}),this.authorizePromise}};import{ErrorCategory as $,now as Q}from"@vkontakte/videoplayer-shared/evergreen";var C=class{constructor(e){this.params=e,this.apiKey=e.config.apiKey,this.apiEnv=e.config.apiEnv,this.apiBaseUrl=q[this.apiEnv],this.timeSynchronisation=e.timeSynchronisation,this.isApiBaseUrlFetched=!1}async resolveApiBaseUrl(){if(this.apiEnv!=="auto"||this.isApiBaseUrlFetched)return this.apiBaseUrl;try{let e=atob("aHR0cHM6Ly9kbnMuZ29vZ2xlL3Jlc29sdmU/bmFtZT12aWRlby5fZW5kcG9pbnQub2sucnUmdHlwZT1UWFQ="),o=(await(await fetch(e,{method:"GET",mode:"cors",cache:"no-cache"})).json())?.Answer[0]?.data;if(!o)throw new Error("Wrong DNS response");return o}catch(e){return this.params.error$.next({id:"OneStat:ApiTransport:resolveApiBaseUrl",category:$.NETWORK,message:"Unhandled resolve api base url error",thrown:e}),q.vk_alias}finally{this.isApiBaseUrlFetched=!0}}sendBeacon(e,i,t){if(!window.Blob||!window.navigator.sendBeacon)return!1;let o=this._prepareQueryParams({method:e,queryParams:i,sessionKey:t}),n=new window.Blob([o.toString()],{type:"application/x-www-form-urlencoded"});try{return window.navigator.sendBeacon(`${this.apiBaseUrl}/fb.do`,n)}catch(a){this.params.error$.next({id:"OneStat:ApiTransport:sendBeacon",category:$.NETWORK,message:"Unhandled beacon error",thrown:a,data:{method:e,params:i}})}return!1}async sendRequest(e,i,t){let o=Q(),n=a=>{if(a instanceof TypeError&&["Failed to fetch","NetworkError when attempting to fetch resource."].includes(a.message)){this.params.error$.next({id:"Network",category:$.NETWORK,message:"Request failed",thrown:a});return}this.params.error$.next({id:"OneStat:ApiTransport:sendRequest",category:$.NETWORK,message:"Unhandled request error",thrown:a,data:{method:e,params:i,sessionKey:t,time:Q()-o}})};return this.apiBaseUrl=await this.resolveApiBaseUrl(),fetch(`${this.apiBaseUrl}/fb.do`,{method:"post",headers:{"Content-type":"application/x-www-form-urlencoded"},body:this._prepareQueryParams({method:e,queryParams:i,sessionKey:t})}).then(a=>{let c=Number(a.headers.get("content-length"))===0,l=new Date(a.headers.get("date")??"").getTime(),u=Q()-o;if(isFinite(l)&&this.timeSynchronisation?.addServerTime(l,u),!c)return a.json().then(p=>Object.prototype.hasOwnProperty.call(p,"error_msg")?Promise.reject(p):p,n)},n)}_prepareQueryParams(e){let i=new URLSearchParams({format:"JSON",method:e.method,application_key:this.apiKey});return e.sessionKey!==void 0&&i.append("session_key",e.sessionKey),Object.entries(e.queryParams).forEach(([t,o])=>i.append(t,typeof o=="string"?o:JSON.stringify(o))),i}};import{ErrorCategory as Re,now as Oe,safeStorage as T,debounceFn as ue}from"@vkontakte/videoplayer-shared/evergreen";var R="onestat_events",j=r=>e=>e.timestamp+r>=Oe(),O=class{constructor(e){this.unsaltedStorage=[];this.isPaused=!1;this.isUrgent=e=>{let{operation:i}=e;return["action_play","watch_coverage_record","watch_coverage_live"].includes(i)};this.params=e,this.api=e.api,this.error$=e.error$,this.userSalt=e.userSalt,this.loggerDebugLog=e.debugLogger.createComponentLog("stat logger"),this.firstFlush=ue(()=>this.safeFlush(),this.params.config.firstFlushTime,{maxWait:this.params.config.firstFlushTime});let i=T.isPersistent()?this.params.config.flushMaxWait:0;this.debouncedFlush=ue(()=>this.safeFlush(),this.params.config.flushDebounceTime,{maxWait:i}),this.subscription=this.api.authorized$.subscribe(t=>{t&&this.debouncedFlush()}),this.housekeepStorage()}safeFlush(){try{this.flush()}catch(e){this.error$.next({id:"LoggerError",category:Re.WTF,message:e?String(e):"Unknown logger error",thrown:e})}}readFromStorage(){let e=T.get(R);try{return e?JSON.parse(e):{}}catch{}return{}}addToStorage(e){if(!this.userSalt){this.unsaltedStorage.push(e);return}let i=this.readFromStorage(),o=(i[this.userSalt]??[]).filter(j(this.params.config.storageExpiration));T.set(R,JSON.stringify({...i,[this.userSalt]:[...o,e]}))}getFromStorage(){return this.userSalt?(this.readFromStorage()[this.userSalt]??[]).filter(j(this.params.config.storageExpiration)):this.unsaltedStorage}markStorageSent(){if(!this.userSalt){this.unsaltedStorage=[];return}let e=this.readFromStorage();delete e[this.userSalt],T.set(R,JSON.stringify(e))}housekeepStorage(){let e=this.readFromStorage();for(let[i,t]of Object.entries(e)){let o=t.filter(j(this.params.config.storageExpiration));o.length?e[i]=o:delete e[i],this.loggerDebugLog({message:`${t.length} retrieved from storage, ${o.length} of them actual`})}T.set(R,JSON.stringify(e))}log(e){this.addToStorage(e),!this.isPaused&&(this.isUrgent(e)?this.flush():this.lastVsid!==e.custom.vsid?this.firstFlush():this.debouncedFlush(),this.lastVsid=e.custom.vsid)}flush({wantBeacon:e,clearStorage:i}={wantBeacon:!1,clearStorage:!0}){let t=this.getFromStorage();t.length!==0&&(this.api.authorized$.getValue()?(e&&this.params.config.useBeacon?(this.loggerDebugLog({message:`Flushing ${t.length} events through beacon`}),this.api.logBeacon(t)):(this.loggerDebugLog({message:`Flushing ${t.length} events`}),this.api.logRequest(t)),i&&this.markStorageSent()):this.api.authorize(),this.firstFlush.cancel(),this.debouncedFlush.cancel())}pause(){this.isPaused=!0,this.debouncedFlush.cancel()}resume(){this.isPaused=!1,this.debouncedFlush()}destroy(){this.subscription.unsubscribe(),this.firstFlush.cancel(),this.debouncedFlush.cancel()}};import{HttpConnectionType as G,Surface as _,VideoFormat as h,VideoQuality as m}from"@vkontakte/videoplayer-core/evergreen";import{assertNever as le}from"@vkontakte/videoplayer-shared/evergreen";var pe=r=>r&&{[m.INVARIANT]:"unknown",[m.Q_144P]:"mobile",[m.Q_240P]:"lowest",[m.Q_360P]:"low",[m.Q_480P]:"medium",[m.Q_576P]:"unknown",[m.Q_720P]:"high",[m.Q_1080P]:"fullhd",[m.Q_1440P]:"quadhd",[m.Q_2160P]:"ultrahd",[m.Q_4320P]:"unknown"}[r],Y=r=>r&&{[G.HTTP1]:"http1",[G.HTTP2]:"http2",[G.QUIC]:"http3"}[r],he=r=>{if(r!==void 0)switch(r){case h.MPEG:return"mp4";case h.DASH:case h.DASH_LIVE:case h.DASH_STREAMS:return"dash";case h.DASH_SEP:return"dash_sep";case h.DASH_ONDEMAND:return"ondemand_dash";case h.DASH_WEBM:case h.DASH_LIVE_WEBM:return"webm";case h.DASH_WEBM_AV1:return"av1";case h.DASH_LIVE_CMAF:return"ondemand_dash_live";case h.HLS:case h.HLS_LIVE:return"hls";case h.HLS_ONDEMAND:return"ondemand_hls";case h.HLS_LIVE_CMAF:return"ondemand_hls_live";case h.WEB_RTC_LIVE:return"webrtc";default:return le(r)}},D=r=>{if(r!==void 0)switch(r){case _.NONE:case _.INLINE:return;case _.FULLSCREEN:return"fullscreen";case _.SECOND_SCREEN:return"chromecast";case _.PIP:return"pip";case _.INVISIBLE:return"invisible";default:return le(r)}},fe=r=>{switch(r){case"slow-2g":return"poor";case"2g":return"poor";case"3g":return"good";case"4g":return"excellent"}};var N=class{constructor(e){this.offset=void 0;this.offset=e}getOffset(){return this.offset??0}setOffset(e){this.offset=e}now(){return Date.now()+(this.offset??0)}date(e=new Date){return e.setTime(e.getTime()+(this.offset??0)),e}addServerTime(e,i){let t=Date.now(),o=e-t-i/2;if(Math.abs(o)<1e3){this.offset=0;return}this.offset===void 0?this.offset=Math.round(o):this.offset=Math.round(.2*o+(1-.2)*this.offset)}};var ge=()=>Math.floor(Math.random()*4294967296).toString(36).padStart(7,"0"),me=()=>Math.floor(Math.random()*18446744073709552e3).toString(36).padStart(13,"0");import{PlaybackState as be}from"@vkontakte/videoplayer-core/evergreen";import{filter as ve,filterChanged as Ne,fromEvent as Me,isNullable as Ie,map as Ve,merge as X,Observable as Be,Subject as J,Subscription as Fe,ValueSubject as Ue}from"@vkontakte/videoplayer-shared/evergreen";var Se=(r,e)=>new Be(i=>{let t=new Fe,o=X(Me(window,"beforeunload"),r.events.willDestruct$),n=new Ue(void 0),a;t.add(r.info.isLive$.pipe(Ne()).subscribe(I=>{a&&(a.unsubscribe(),n.next(void 0)),I?a=r.info.liveTime$.pipe(Ve(F=>F&&F/1e3)).subscribe(n):a=r.info.position$.subscribe(n),t.add(a)}));let{playing$:c,paused$:l}=r.events,u=r.events.willSeek$.pipe(ve(()=>r.info.playbackState$.getValue()===be.PLAYING)),p=r.events.seeked$.pipe(ve(()=>r.info.playbackState$.getValue()===be.PLAYING)),f=!1,s=new J;t.add(u.subscribe(()=>{f||s.next(),f=!0})),t.add(p.subscribe(()=>f=!1));let d=new J,g=new J,b=X(c,p,d),S=X(l,s,o,r.events.looped$,g),y,B=()=>y=n.getValue(),w=()=>{let I=n.getValue();Ie(y)||y===I||Ie(I)||(i.next({from:y,to:I}),y=void 0)},k=()=>{g.next(),d.next()};if(t.add(b.subscribe(B)),t.add(S.subscribe(w)),e.forceInterval&&isFinite(e.forceInterval)){let I=0;t.add(b.subscribe(()=>I=window.setTimeout(k,e.forceInterval))),t.add(S.subscribe(()=>window.clearTimeout(I)))}return t});var Ce="_one-stat_",Ae=`${Ce}uuid`,xe=`${Ce}deviceId`,Z=()=>{let r=new ee;return{subscription:r,subscribe:(e,i)=>{e&&r.add(e.subscribe(i))}}},te=class{constructor(e,i){this.subscription=new ee;this.debugLogger=new Qe;this.oneStatDebugLog=this.debugLogger.createComponentLog("onestat");this.loopCounter=0;this.disabled=!1;this.vsid$=new V(void 0);this.isid$=new V(void 0);this.zenUid$=new V(void 0);this.seekAction$=new V("unknown");this.statContext=e,this.config=de(i.config??{}),E(i.apiEnv)&&(this.config.apiEnv=i.apiEnv),this.config.synchronizeTime&&(this.timeSynchronisation=new N);let t=new ze;this.experimental={error$:t},M.get(Ae)&&M.remove(Ae);let n=M.get(xe);this.statContext.deviceId?this.deviceId=this.statContext.deviceId:n?this.deviceId=n:(this.deviceId=z(),M.set(xe,this.deviceId)),this.resetViewSession(),i.useIsid&&this.isid$.next(i.isid??me()),this.zenUid$.next(i.zenUid);let a=new C({config:this.config,error$:t,timeSynchronisation:this.timeSynchronisation});this.api=new x({config:this.config,apiTransport:a,refreshAuthToken:i.refreshAuthToken,mobile:this.statContext.mobile??!1,deviceId:this.deviceId,error$:t,vktvVersion:i.vktvVersion}),this.logger=new O({config:this.config,debugLogger:this.debugLogger,api:this.api,error$:t,userSalt:i.userSalt});let{isEmbed:c,topOrigin:l}=je();this.isEmbed=c,this.embedParent=l?new URL(l).hostname:void 0,this.subscribe()}updateContext(e){this.statContext={...this.statContext,...e}}attachTo(e){let i=new ee,t=(s,d)=>i.add(s.subscribe(d));t(e.events.willStart$,()=>{let s=e.info.position$.getValue();this.logActionPlay({position:s}),this.statContext.projectId&&this.logActionPlayInteractive()}),t(e.events.looped$,()=>{this.resetViewSession(),++this.loopCounter>this.config.maxLoops&&(this.disabled=!0),this.logActionPlay({position:e.info.position$.getValue()})}),t(e.events.seeked$,()=>{this.logSeek({action:this.seekAction$.getValue(),time:e.info.position$.getValue()}),this.seekAction$.next("unknown")}),t(e.events.paused$,()=>{this.logPause({position:e.info.position$.getValue()})}),t(e.events.willResume$,()=>{this.logPlay()}),t(e.events.started$,()=>{this.statContext.clip&&this.logWatchCoverageRecord({start:0,end:0})}),t(e.events.playing$,()=>{this.logPlaying()}),t(Se(e,{forceInterval:this.config.watchCoverageInterval}),s=>{let d=e.info.isLive$.getValue(),g=e.info.atLiveEdge$.getValue(),b={start:parseFloat(s.from.toFixed(3)),end:parseFloat(s.to.toFixed(3))};if(g){let S=e.info.liveLatency$.getValue()??0,y=e.info.currentBuffer$.getValue()?.end??0,B=e.info.liveBufferTime$.getValue()??0,w=Math.round((S-(y-B))*1e3),k=Math.round(S*1e3);w&&k&&(b.latency=w,b.bufferLatency=k)}d?this.logWatchCoverageLive(b):this.logWatchCoverageRecord(b)});let o;t(e.info.isStalled$,s=>{s?o=v():(E(o)&&this.logEmptyBuffer({duration:v()-o}),o=void 0)});let n=!1;i.add(e.events.fatalError$.pipe(qe()).subscribe(()=>n=!0)),t(e.events.willStop$,()=>{if(e.info.isStalled$.getValue()){let d=E(o)?v()-o:void 0;this.logCloseAtEmptyBuffer({duration:d??0}),o=void 0}else n||this.logActionStop()}),t(e.events.managedError$,({id:s})=>{this.logError({fatal:!1,errorType:s})}),t(e.events.fatalError$,({id:s})=>{this.logError({fatal:!0,errorType:s})});let a,c,l=!1;t(e.events.firstBytes$,s=>{a=v(),this.logFirstBytes({time:s})}),t(e.events.willStart$,()=>c=v()),t(e.info.currentBuffer$,s=>{!l&&s&&s.end-s.start>0&&E(a)&&(this.logPlayerReady({duration:v()-a}),l=!0)}),t(e.events.firstFrame$,()=>{E(a)&&!l&&(this.logPlayerReady({duration:v()-a}),l=!0),E(c)&&this.logFirstFrame({time:v()-c})});let u;t(e.info.currentVideoStream$,s=>{s&&(u&&s.id!==u&&this.logTrackSwitch(s),u=s.id)});let p;t(e.info.currentAudioStream$,s=>{s&&(p&&s.id!==p&&this.logTrackSwitch(s),p=s.id)}),t(e.info.atLiveEdge$,s=>this.updateContext({liveEdge:s})),t(ye({muted:e.info.muted$,volume:e.info.volume$}),({muted:s,volume:d})=>this.updateContext({audible:!s&&d>0})),t(e.info.currentQuality$,s=>{let d=pe(s);this.updateContext({quality:d}),d&&this.logQuality(d)}),t(e.info.isAutoQualityEnabled$,s=>this.updateContext({autoQuality:s})),t(e.info.currentFormat$,s=>this.updateContext({contentType:he(s)})),t(e.info.currentPlaybackRate$,s=>this.updateContext({rate:s})),t(e.info.is3DVideo$,s=>this.updateContext({is3d:s}));let f;return t(e.info.hostname$,s=>{let d=f!==void 0&&f!==s;this.updateContext({cdnHostname:s,failover:d}),d&&this.logFailover(s),f=s}),t(e.info.throughputEstimation$,s=>this.updateContext({downloadSpeed:s})),t(e.info.httpConnectionType$,s=>{this.statContext.firstConnectionType||this.updateContext({firstConnectionType:Y(s)}),this.updateContext({connectionType:Y(s)})}),t(e.info.httpConnectionReused$,s=>{_e(this.statContext.firstConnectionReused)&&this.updateContext({firstConnectionReused:s}),this.updateContext({connectionReused:s})}),t(e.info.surface$,s=>this.updateContext({mode:D(s)})),t(ye({current:e.info.currentTextTrack$,available:e.info.availableTextTracks$}),({current:s,available:d})=>{let g=d.find(({id:S})=>S===s),b=g&&(g.isAuto?`${g.language}_auto`:g.language);this.updateContext({subtitles:b?.split(".")[0]})}),this.player=e,this.uiEvents&&this.attachToUi(this.uiEvents),this.resubscribeBeforeunload(),this.subscription.add(i),i}attachToUi(e){this.uiEvents=e;let{subscription:i,subscribe:t}=Z();return this.player&&(t(e.actionRewind$,()=>{this.player&&(this.resetViewSession(),this.logActionPlay({position:this.player.info.position$.getValue()}))}),t(e.actionSeek$,this.seekAction$),t(e.inPiP$,o=>{let n=o?"pip":D(this.player?.info.surface$.getValue());this.updateContext({mode:n})}),t(e.inFullscreen$,o=>{let n=o?"fullscreen":D(this.player?.info.surface$.getValue());this.updateContext({mode:n})}),t(e.actionSetSubtitle$,o=>this.updateContext({subtitles:o.split(".")[0]})),t(e.nextMovie$,o=>this.logNextMovie(o)),this.resubscribeBeforeunload(),this.subscription.add(i)),i}attachToAds(e){let{subscription:i,subscribe:t}=Z();return t(e.slotRequested$,()=>this.logAdSlotRequest()),t(e.started$,o=>this.logAdStarted(o)),t(e.paused$,()=>this.logAdPaused()),t(e.resumed$,()=>this.logAdResumed()),t(e.ended$,()=>this.logAdEnded()),t(e.skipped$,()=>this.logAdSkipped()),t(e.clicked$,()=>this.logAdClicked()),t(e.error$,o=>this.logError({errorType:o,fatal:!1})),this.resubscribeBeforeunload(),this.subscription.add(i),i}attachToInteractive(e){let{subscription:i,subscribe:t}=Z();return t(e.click$,o=>this.logInterfaceClick(o)),t(e.nextMovie$,o=>this.logNextMovie(o)),this.resubscribeBeforeunload(),this.subscription.add(i),i}authorize(e){return this.api.authorize(e)}pause(){this.logger.pause(),this.oneStatDebugLog({message:"paused"})}resume(){this.logger.resume(),this.oneStatDebugLog({message:"resumed"})}destroy(){this.logger.flush(),this.subscription.unsubscribe(),this.api.destroy(),this.logger.destroy()}resetViewSession(){this.oneStatDebugLog({message:"VSID reset"}),this.vsid$.next(ge())}getDeviceId(){return this.deviceId}setFieldBlacklist(){}logInited(){}logReady(e){this.log({operation:"player_ready",param:String(e.time)})}logStarted(...e){this.logActionPlay(...e)}logPlay(){this.log({operation:"play_toggle"})}logPlaying(){this.log({operation:"playing"})}logPause(e){this.log({operation:"pause",param:String(Math.round(e.position))})}logSeek(e){this.log({operation:"seek",param:e.action,time:e.time})}logFirstBytes(e){this.log({operation:"first_bytes",param:String(e.time)})}logFirstFrame(e){this.log({operation:"first_frame",param:String(e.time)})}logError(e){this.log({operation:"content_error",param:`${e.fatal?"fatal":"recoverable"}_${e.errorType}`})}logWatchCoverageRecord(e){this.log({operation:"watch_coverage_record",param:`${e.start}-${e.end}`},{in_history:this.statContext.inHistory?1:void 0})}logWatchCoverageLive(e){let i=this.timeSynchronisation?.getOffset()??0,t=e.start+i,o=e.end+i;this.log({operation:"watch_coverage_live",param:`${t}-${o}`},{in_history:this.statContext.inHistory?1:void 0,latency:e.latency,buffer_latency:e.bufferLatency})}logEmptyBuffer(e){this.log({operation:"empty_buffer",param:String(e.duration)})}logDownloadSpeed(){}logAdSlotRequest(){this.log({operation:"adv",param:"slot_request"})}logAdStarted(e){this.log({operation:"adv",param:e})}logAdPaused(){this.log({operation:"adv",param:"pause"})}logAdResumed(){this.log({operation:"adv",param:"resume"})}logAdEnded(){this.log({operation:"adv",param:"ended"})}logAdSkipped(){this.log({operation:"adv",param:"skip"})}logAdClicked(){this.log({operation:"adv",param:"click"})}logInterfaceClick(e){this.log({operation:"player_interface_click",param:e})}logNextMovie(e){this.log({operation:"next_movie",param:String(e)})}subscribe(){this.resubscribeBeforeunload();let e=window.navigator.connection;e&&"onchange"in e&&"effectiveType"in e&&this.subscription.add(He(Pe(e,"change"),Ke(["init"])).subscribe(()=>this.updateContext({network:fe(e.effectiveType)}))),this.config.debugLog&&this.debugLogger.log$.subscribe(i=>{console.debug("%c stat ","background:#fa6470;",`component: ${i.component}.`,i.message)})}resubscribeBeforeunload(){this.beforeunloadSubscription?.unsubscribe(),this.beforeunloadSubscription=Pe(window,"beforeunload").subscribe(()=>this.logger.flush({wantBeacon:!0,clearStorage:this.config.clearStorageAtUnload})),this.subscription.add(this.beforeunloadSubscription)}logPlayerReady(e){this.log({operation:"player_ready",param:String(Math.round(e.duration))})}logActionPlay(e){this.log({operation:"action_play",param:String(Math.round(e.position))})}logActionPlayInteractive(){this.statContext.projectId&&this.log({operation:"action_play_interactive",param:String(this.statContext.movieId)},{vid:this.statContext.projectId})}logFailover(e){this.log({operation:"failover",param:e})}logCloseAtEmptyBuffer(e){this.log({operation:"close_at_empty_buffer",param:String(Math.round(e.duration))})}logActionStop(){this.log({operation:"action_stop"})}logTrackSwitch(e){this.log({operation:"track_switch",param:e.id})}logQuality(e){this.log({operation:"quality",param:e})}log(e,i={}){if(this.disabled){this.oneStatDebugLog({message:`operation ${e.operation} but statistics is disabled`});return}if(this.config.disabledOperations.includes(e.operation)){this.oneStatDebugLog({message:`operation ${e.operation} but it is disabled`});return}this.oneStatDebugLog({message:`operation ${e.operation} ${e.param}`});let t=this.createLogItem(e,i);this.logger.log(t)}createLogItem({operation:e,param:i,time:t},o={}){let n=this.timeSynchronisation?.now()??v(),a=this.vsid$.getValue();We(a);let c=this.isid$.getValue(),l=e==="empty_buffer"||e==="close_at_empty_buffer"?this.statContext.connectionType:this.statContext.firstConnectionType,u=this.statContext.firstConnectionReused,p,f;if(this.isEmbed||this.statContext.place==="embed"){p=this.embedParent;let d=[...new URLSearchParams(location.search).entries()].filter(([g,b])=>this.config.embedUrlParams.includes(g));f=new URLSearchParams(d).toString()}else this.statContext.place==="direct"&&(this.statContext.refDomain?p=Ee(this.statContext.refDomain)?.hostname??this.statContext.refDomain:document.referrer&&(p=Ee(document.referrer)?.hostname??document.referrer),f=location.href.substring(0,1024));let s={vsid:a,isid:c,vid:this.statContext.movieId,uid:this.zenUid$.getValue(),ct:this.statContext.contentType,place:this.isEmbed?"embed":this.statContext.place,quality:this.statContext.quality,cdn_host:this.statContext.cdnHostname,stat_type:this.statContext.autoplay===!0?"auto":this.statContext.autoplay===!1?"":void 0,param:i,vk_app_id:this.statContext.vkAppId,track_code:this.statContext.trackCode,connection_type:l,connection_reused:u===!0?1:u===!1?0:void 0,cached_data:this.statContext.cached===!0?1:this.statContext.cached===!1?0:void 0,live:this.statContext.liveEdge?1:void 0,muted:this.statContext.audible===!1?1:void 0,mode:this.statContext.mode,subtitles:this.statContext.subtitles,download_speed:this.statContext.downloadSpeed,manual_quality:this.statContext.autoQuality?void 0:1,ref_domain:p,direct_url:f,rate:this.statContext.rate===1||_e(this.statContext.rate)?void 0:this.statContext.rate.toFixed(2),view_360:this.statContext.is3d?1:void 0,aid:this.statContext.albumId,vk_playlist_id:this.statContext.vkPlaylistId,...o};for(let d of this.config.disabledCustomFields)delete s[d];return{operation:e,type:1,time:t,network:this.statContext.network,timestamp:n,custom:s}}};export{A as ApiEnv,H as ConnectionType,W as ContentType,ie as InteractiveInterfaceClick,te as OneStat,U as Quality,K as SeekAction,L as VERSION};
|
|
6
|
+
var A=(a=>(a.PROD="prod",a.VK_ALIAS="vk_alias",a.VIDEOTEST="videotest",a.TEST="test",a.OKCDN="okcdn",a.AUTO="auto",a))(A||{}),U=(u=>(u.Q144P="mobile",u.Q240P="lowest",u.Q360P="low",u.Q480P="medium",u.Q720P="high",u.Q1080P="fullhd",u.Q1440P="quadhd",u.Q2160P="ultrahd",u.UNKNOWN="unknown",u))(U||{}),W=(d=>(d.MP4="mp4",d.DASH="dash",d.DASH_SEP="dash_sep",d.ONDEMAND_DASH="ondemand_dash",d.HLS="hls",d.ONDEMAND_HLS="ondemand_hls",d.WEBM="webm",d.AV1="av1",d.ONDEMAND_DASH_LIVE="ondemand_dash_live",d.ONDEMAND_HLS_LIVE="ondemand_hls_live",d.WEBRTC="webrtc",d.UNKNOWN="unknown",d.RTMP="rtmp",d))(W||{});var H=(t=>(t.HTTP1="http1",t.HTTP2="http2",t.HTTP3="http3",t))(H||{});var K=(c=>(c.SLIDER="slider",c.DOUBLE_TAP="double_tap",c.TIME_CODE="time_code",c.EPISODE="episode",c.REWIND="rewind",c.LIVE="live",c.UNKNOWN="unknown",c))(K||{}),ie=(n=>(n.GRAPH_SHOW="iGraphShow",n.GRAPH_HIDE="iGraphHide",n.NEXT_AREA="iNextChapterArea",n.NEXT_BUTTON="iNextChapterBtn",n.WATCH_AGAIN="iWatchAgainBtn",n))(ie||{}),oe={action_play:"ap",action_play_interactive:"api",first_bytes:"fb",player_ready:"pr",first_frame:"ff",seek:"sk",watch_coverage_record:"wr",watch_coverage_live:"wl",empty_buffer:"eb",action_stop:"as",close_at_empty_buffer:"cb",content_error:"er",player_interface_click:"pc",next_movie:"nm",track_switch:"ts",failover:"fo",quality:"qt"},se={vsid:"si",isid:"is",vid:"vi",place:"pl",quality:"qt",cdn_host:"ch",stat_type:"st",param:"pm",vk_app_id:"va",track_code:"tc",connection_type:"cnt",connection_reused:"cr",cached_data:"cd",live:"lv",muted:"mu",mode:"mo",subtitles:"sb",failover:"fo",download_speed:"ds",manual_quality:"mq",ref_domain:"rd",direct_url:"du"},re={unknown:"un",mobile:"m",lowest:"ls",low:"l",medium:"md",high:"h",fullhd:"f",quadhd:"q",ultrahd:"u"},ne={pip:"pi",fullscreen:"fs",external:"ex",prefetch:"pr",airplay:"ap",chromecast:"cc",invisible:"iv"};import{fillWithDefault as Te}from"@vkontakte/videoplayer-shared/evergreen";var L="1.0.80-dev.fba07f4d.0",ae="CIOPGQJGDIHBABABA",q={prod:"https://api.ok.ru",vk_alias:"https://api.mycdn.me",videotest:"https://videotestapi.ok.ru/api",test:"https://apitest.ok.ru",okcdn:"https://api.okcdn.ru",auto:""};var we={apiEnv:"vk_alias",apiKey:ae,requestRetryCount:1,firstFlushTime:5e3,flushDebounceTime:1e4,flushMaxWait:6e4,storageExpiration:36*60*60*1e3,watchCoverageInterval:15e3,disabledOperations:["quality"],disabledCustomFields:[],shorten:!0,maxLoops:100,embedUrlParams:[],useBeacon:!0,synchronizeTime:!0,debugLog:!1,clearStorageAtUnload:!0,useVKComIsMobileLogic:!1,backoff:{start:1e3,factor:1.5,max:5*60*1e3,random:.1}},de=r=>Te(r,we);function z(){let r="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),e=new Array(36),i=0,t,o;for(o=0;o<36;o++)o===8||o===13||o===18||o===23?e[o]="-":o===14?e[o]="4":(i<=2&&(i=33554432+Math.random()*16777216|0),t=i&15,i=i>>4,e[o]=r[o===19?t&3|8:t]);return e.join("")}import{assertNonNullable as We,combine as ye,fromEvent as Pe,isNonNullable as E,isNullable as _e,merge as He,now as v,observableFrom as Ke,once as qe,safeStorage as M,Subject as ze,Subscription as ee,ValueSubject as V,createURL as Ee}from"@vkontakte/videoplayer-shared/evergreen";import{Logger as Qe,detectEmbed as je}from"@vkontakte/videoplayer-shared/evergreen";var ce=r=>{let{operation:e,custom:i}=r,t=Object.fromEntries(Object.entries(i).map(([o,n])=>{let a=se[o]??o,c=n;return n&&(o==="mode"?c=ne[n]??n:o==="quality"&&(c=re[n]??n)),[a,c]}));return{...r,operation:oe[e]??e,custom:t}};import{ValueSubject as ke,getExponentialDelay as Le,ErrorCategory as P}from"@vkontakte/videoplayer-shared/evergreen";var $e=/Mobile|mini|Fennec|Android|iP(ad|od|hone)|opera (mini|mobi)/i,x=class{constructor(e){this.consequentAuthErrors=0;this.authorized$=new ke(!1);this.params=e}async authorize(e){return this.authToken=e??await this.refreshAuthToken(),this._authorizeWithBackoff()}logBeacon(e){let i="log.externalLog",t=this.createLogParams(e),o=this.sessionKey;if(!o)return;this.params.apiTransport.sendBeacon(i,t,o)||this.logRequest(e).catch(()=>{})}async logRequest(e){let i="log.externalLog",t=this.createLogParams(e),o=this.sessionKey??await this._authorizeWithBackoff();if(!o)return;let n=async(a,c=this.params.config.requestRetryCount)=>{try{return await this.params.apiTransport.sendRequest(i,t,o)}catch(l){if(!l||!("error_code"in l)){this.params.error$.next({id:"logRequestUnknown",category:P.NETWORK,message:`Unknown ${i} error`,thrown:l});return}let u=l?.error_code;switch(u){case 102:case 103:case 104:return this.authorized$.next(!1),this.sessionKey=await this._authorizeWithBackoff(),c>0?n(a,c-1):void 0;case 401:return this.authorized$.next(!1),this.authToken=await this.refreshAuthToken(),this.sessionKey=await this._authorizeWithBackoff(),c>0?n(a,c-1):void 0;default:{this.params.error$.next({id:`LogRequest#${u}`,category:P.EXTERNAL_API,message:`${i} error`,data:l});return}}}};return n(e)}destroy(){window.clearTimeout(this.backoffTimeoutId),this.backoffTimeoutId=0}async refreshAuthToken(){if(this.params.refreshAuthToken)return this.refreshAuthTokenPromise||(this.refreshAuthTokenPromise=this.params.refreshAuthToken().finally(()=>{this.refreshAuthTokenPromise=void 0})),this.refreshAuthTokenPromise}createLogParams(e){let i="WEB",t=!1,o=`@vkontakte/videoplayer-statistics:${L}`;if(this.params.config.useVKComIsMobileLogic){let{appVersion:n}=window.navigator;t=$e.test(n)}else this.params.mobile&&(t=!0);return t&&(i="M_WEB"),this.params.vktvVersion&&(i="SMART_TV",o=this.params.vktvVersion),{collector:"ok.mobile.apps.video",data:JSON.stringify({application:o,platform:i,items:this.params.config.shorten?e.map(ce):e})}}_authorizeWithBackoff(){if(!this.consequentAuthErrors)return this._authorize();let e=Le(this.consequentAuthErrors,this.params.config.backoff);return new Promise(i=>{this.backoffTimeoutId||(this.backoffTimeoutId=window.setTimeout(()=>{this._authorize().then(i).catch(t=>this.params.error$.next({id:"AuthorizeBackoff",category:P.NETWORK,message:"Otherwise unhandled error in authorization",thrown:t})).finally(()=>this.backoffTimeoutId=0)},e))})}async _authorize(){if(this.authorizePromise)return this.authorizePromise;this.sessionKey=void 0,this.authorized$.next(!1);let e="auth.anonymLogin",i={session_data:{version:2,device_id:this.params.deviceId,client_version:L.split("-")[0],client_type:"SDK_JS"}};return this.authToken!==void 0&&(i.session_data.auth_token=this.authToken,i.session_data.version=3),this.authorizePromise=this.params.apiTransport.sendRequest(e,i).then(t=>((!t||!t.session_key)&&this.params.error$.next({id:"AuthorizeFailed",category:P.EXTERNAL_API,message:"No session key",data:t}),this.sessionKey=t?.session_key??void 0,this.sessionKey)).catch(async t=>{this.sessionKey=void 0;let o=t?.error_code;switch(o){case 401:return this.authToken=await this.refreshAuthToken(),this._authorizeWithBackoff()}o?this.params.error$.next({id:`Authorize#${o}`,category:P.EXTERNAL_API,message:"authorize error",data:t}):this.params.error$.next({id:"AuthorizeUnknown",category:P.NETWORK,message:"authorize error",thrown:t})}).finally(()=>{this.authorizePromise=void 0,this.consequentAuthErrors=this.sessionKey?0:this.consequentAuthErrors+1,this.authorized$.next(this.sessionKey!==void 0)}),this.authorizePromise}};import{ErrorCategory as $,now as Q}from"@vkontakte/videoplayer-shared/evergreen";var C=class{constructor(e){this.params=e,this.apiKey=e.config.apiKey,this.apiEnv=e.config.apiEnv,this.apiBaseUrl=q[this.apiEnv],this.timeSynchronisation=e.timeSynchronisation,this.isApiBaseUrlFetched=!1}async resolveApiBaseUrl(){if(this.apiEnv!=="auto"||this.isApiBaseUrlFetched)return this.apiBaseUrl;try{let e=atob("aHR0cHM6Ly9kbnMuZ29vZ2xlL3Jlc29sdmU/bmFtZT12aWRlby5fZW5kcG9pbnQub2sucnUmdHlwZT1UWFQ="),o=(await(await fetch(e,{method:"GET",mode:"cors",cache:"no-cache"})).json())?.Answer[0]?.data;if(!o)throw new Error("Wrong DNS response");return o}catch(e){return this.params.error$.next({id:"OneStat:ApiTransport:resolveApiBaseUrl",category:$.NETWORK,message:"Unhandled resolve api base url error",thrown:e}),q.vk_alias}finally{this.isApiBaseUrlFetched=!0}}sendBeacon(e,i,t){if(!window.Blob||!window.navigator.sendBeacon)return!1;let o=this._prepareQueryParams({method:e,queryParams:i,sessionKey:t}),n=new window.Blob([o.toString()],{type:"application/x-www-form-urlencoded"});try{return window.navigator.sendBeacon(`${this.apiBaseUrl}/fb.do`,n)}catch(a){this.params.error$.next({id:"OneStat:ApiTransport:sendBeacon",category:$.NETWORK,message:"Unhandled beacon error",thrown:a,data:{method:e,params:i}})}return!1}async sendRequest(e,i,t){let o=Q(),n=a=>{if(a instanceof TypeError&&["Failed to fetch","NetworkError when attempting to fetch resource."].includes(a.message)){this.params.error$.next({id:"Network",category:$.NETWORK,message:"Request failed",thrown:a});return}this.params.error$.next({id:"OneStat:ApiTransport:sendRequest",category:$.NETWORK,message:"Unhandled request error",thrown:a,data:{method:e,params:i,sessionKey:t,time:Q()-o}})};return this.apiBaseUrl=await this.resolveApiBaseUrl(),fetch(`${this.apiBaseUrl}/fb.do`,{method:"post",headers:{"Content-type":"application/x-www-form-urlencoded"},body:this._prepareQueryParams({method:e,queryParams:i,sessionKey:t})}).then(a=>{let c=Number(a.headers.get("content-length"))===0,l=new Date(a.headers.get("date")??"").getTime(),u=Q()-o;if(isFinite(l)&&this.timeSynchronisation?.addServerTime(l,u),!c)return a.json().then(p=>Object.prototype.hasOwnProperty.call(p,"error_msg")?Promise.reject(p):p,n)},n)}_prepareQueryParams(e){let i=new URLSearchParams({format:"JSON",method:e.method,application_key:this.apiKey});return e.sessionKey!==void 0&&i.append("session_key",e.sessionKey),Object.entries(e.queryParams).forEach(([t,o])=>i.append(t,typeof o=="string"?o:JSON.stringify(o))),i}};import{ErrorCategory as Re,now as Oe,safeStorage as T,debounceFn as ue}from"@vkontakte/videoplayer-shared/evergreen";var R="onestat_events",j=r=>e=>e.timestamp+r>=Oe(),O=class{constructor(e){this.unsaltedStorage=[];this.isPaused=!1;this.isUrgent=e=>{let{operation:i}=e;return["action_play","watch_coverage_record","watch_coverage_live"].includes(i)};this.params=e,this.api=e.api,this.error$=e.error$,this.userSalt=e.userSalt,this.loggerDebugLog=e.debugLogger.createComponentLog("stat logger"),this.firstFlush=ue(()=>this.safeFlush(),this.params.config.firstFlushTime,{maxWait:this.params.config.firstFlushTime});let i=T.isPersistent()?this.params.config.flushMaxWait:0;this.debouncedFlush=ue(()=>this.safeFlush(),this.params.config.flushDebounceTime,{maxWait:i}),this.subscription=this.api.authorized$.subscribe(t=>{t&&this.debouncedFlush()}),this.housekeepStorage()}safeFlush(){try{this.flush()}catch(e){this.error$.next({id:"LoggerError",category:Re.WTF,message:e?String(e):"Unknown logger error",thrown:e})}}readFromStorage(){let e=T.get(R);try{return e?JSON.parse(e):{}}catch{}return{}}addToStorage(e){if(!this.userSalt){this.unsaltedStorage.push(e);return}let i=this.readFromStorage(),o=(i[this.userSalt]??[]).filter(j(this.params.config.storageExpiration));T.set(R,JSON.stringify({...i,[this.userSalt]:[...o,e]}))}getFromStorage(){return this.userSalt?(this.readFromStorage()[this.userSalt]??[]).filter(j(this.params.config.storageExpiration)):this.unsaltedStorage}markStorageSent(){if(!this.userSalt){this.unsaltedStorage=[];return}let e=this.readFromStorage();delete e[this.userSalt],T.set(R,JSON.stringify(e))}housekeepStorage(){let e=this.readFromStorage();for(let[i,t]of Object.entries(e)){let o=t.filter(j(this.params.config.storageExpiration));o.length?e[i]=o:delete e[i],this.loggerDebugLog({message:`${t.length} retrieved from storage, ${o.length} of them actual`})}T.set(R,JSON.stringify(e))}log(e){this.addToStorage(e),!this.isPaused&&(this.isUrgent(e)?this.flush():this.lastVsid!==e.custom.vsid?this.firstFlush():this.debouncedFlush(),this.lastVsid=e.custom.vsid)}flush({wantBeacon:e,clearStorage:i}={wantBeacon:!1,clearStorage:!0}){let t=this.getFromStorage();t.length!==0&&(this.api.authorized$.getValue()?(e&&this.params.config.useBeacon?(this.loggerDebugLog({message:`Flushing ${t.length} events through beacon`}),this.api.logBeacon(t)):(this.loggerDebugLog({message:`Flushing ${t.length} events`}),this.api.logRequest(t)),i&&this.markStorageSent()):this.api.authorize(),this.firstFlush.cancel(),this.debouncedFlush.cancel())}pause(){this.isPaused=!0,this.debouncedFlush.cancel()}resume(){this.isPaused=!1,this.debouncedFlush()}destroy(){this.subscription.unsubscribe(),this.firstFlush.cancel(),this.debouncedFlush.cancel()}};import{HttpConnectionType as G,Surface as _,VideoFormat as h,VideoQuality as m}from"@vkontakte/videoplayer-core/evergreen";import{assertNever as le}from"@vkontakte/videoplayer-shared/evergreen";var pe=r=>r&&{[m.INVARIANT]:"unknown",[m.Q_144P]:"mobile",[m.Q_240P]:"lowest",[m.Q_360P]:"low",[m.Q_480P]:"medium",[m.Q_576P]:"unknown",[m.Q_720P]:"high",[m.Q_1080P]:"fullhd",[m.Q_1440P]:"quadhd",[m.Q_2160P]:"ultrahd",[m.Q_4320P]:"unknown"}[r],Y=r=>r&&{[G.HTTP1]:"http1",[G.HTTP2]:"http2",[G.QUIC]:"http3"}[r],he=r=>{if(r!==void 0)switch(r){case h.MPEG:return"mp4";case h.DASH:case h.DASH_LIVE:case h.DASH_STREAMS:return"dash";case h.DASH_SEP:return"dash_sep";case h.DASH_ONDEMAND:return"ondemand_dash";case h.DASH_WEBM:case h.DASH_LIVE_WEBM:return"webm";case h.DASH_WEBM_AV1:return"av1";case h.DASH_LIVE_CMAF:return"ondemand_dash_live";case h.HLS:case h.HLS_LIVE:return"hls";case h.HLS_ONDEMAND:return"ondemand_hls";case h.HLS_LIVE_CMAF:return"ondemand_hls_live";case h.WEB_RTC_LIVE:return"webrtc";default:return le(r)}},D=r=>{if(r!==void 0)switch(r){case _.NONE:case _.INLINE:return;case _.FULLSCREEN:return"fullscreen";case _.SECOND_SCREEN:return"chromecast";case _.PIP:return"pip";case _.INVISIBLE:return"invisible";default:return le(r)}},fe=r=>{switch(r){case"slow-2g":return"poor";case"2g":return"poor";case"3g":return"good";case"4g":return"excellent"}};var N=class{constructor(e){this.offset=void 0;this.offset=e}getOffset(){return this.offset??0}setOffset(e){this.offset=e}now(){return Date.now()+(this.offset??0)}date(e=new Date){return e.setTime(e.getTime()+(this.offset??0)),e}addServerTime(e,i){let t=Date.now(),o=e-t-i/2;if(Math.abs(o)<1e3){this.offset=0;return}this.offset===void 0?this.offset=Math.round(o):this.offset=Math.round(.2*o+(1-.2)*this.offset)}};var ge=()=>Math.floor(Math.random()*4294967296).toString(36).padStart(7,"0"),me=()=>Math.floor(Math.random()*18446744073709552e3).toString(36).padStart(13,"0");import{PlaybackState as be}from"@vkontakte/videoplayer-core/evergreen";import{filter as ve,filterChanged as Ne,fromEvent as Me,isNullable as Ie,map as Ve,merge as X,Observable as Be,Subject as J,Subscription as Fe,ValueSubject as Ue}from"@vkontakte/videoplayer-shared/evergreen";var Se=(r,e)=>new Be(i=>{let t=new Fe,o=X(Me(window,"beforeunload"),r.events.willDestruct$),n=new Ue(void 0),a;t.add(r.info.isLive$.pipe(Ne()).subscribe(I=>{a&&(a.unsubscribe(),n.next(void 0)),I?a=r.info.liveTime$.pipe(Ve(F=>F&&F/1e3)).subscribe(n):a=r.info.position$.subscribe(n),t.add(a)}));let{playing$:c,paused$:l}=r.events,u=r.events.willSeek$.pipe(ve(()=>r.info.playbackState$.getValue()===be.PLAYING)),p=r.events.seeked$.pipe(ve(()=>r.info.playbackState$.getValue()===be.PLAYING)),f=!1,s=new J;t.add(u.subscribe(()=>{f||s.next(),f=!0})),t.add(p.subscribe(()=>f=!1));let d=new J,g=new J,b=X(c,p,d),S=X(l,s,o,r.events.looped$,g),y,B=()=>y=n.getValue(),w=()=>{let I=n.getValue();Ie(y)||y===I||Ie(I)||(i.next({from:y,to:I}),y=void 0)},k=()=>{g.next(),d.next()};if(t.add(b.subscribe(B)),t.add(S.subscribe(w)),e.forceInterval&&isFinite(e.forceInterval)){let I=0;t.add(b.subscribe(()=>I=window.setTimeout(k,e.forceInterval))),t.add(S.subscribe(()=>window.clearTimeout(I)))}return t});var Ce="_one-stat_",Ae=`${Ce}uuid`,xe=`${Ce}deviceId`,Z=()=>{let r=new ee;return{subscription:r,subscribe:(e,i)=>{e&&r.add(e.subscribe(i))}}},te=class{constructor(e,i){this.subscription=new ee;this.debugLogger=new Qe;this.oneStatDebugLog=this.debugLogger.createComponentLog("onestat");this.loopCounter=0;this.disabled=!1;this.vsid$=new V(void 0);this.isid$=new V(void 0);this.zenUid$=new V(void 0);this.seekAction$=new V("unknown");this.statContext=e,this.config=de(i.config??{}),E(i.apiEnv)&&(this.config.apiEnv=i.apiEnv),this.config.synchronizeTime&&(this.timeSynchronisation=new N);let t=new ze;this.experimental={error$:t},M.get(Ae)&&M.remove(Ae);let n=M.get(xe);this.statContext.deviceId?this.deviceId=this.statContext.deviceId:n?this.deviceId=n:(this.deviceId=z(),M.set(xe,this.deviceId)),this.resetViewSession(),i.useIsid&&this.isid$.next(i.isid??me()),this.zenUid$.next(i.zenUid);let a=new C({config:this.config,error$:t,timeSynchronisation:this.timeSynchronisation});this.api=new x({config:this.config,apiTransport:a,refreshAuthToken:i.refreshAuthToken,mobile:this.statContext.mobile??!1,deviceId:this.deviceId,error$:t,vktvVersion:i.vktvVersion}),this.logger=new O({config:this.config,debugLogger:this.debugLogger,api:this.api,error$:t,userSalt:i.userSalt});let{isEmbed:c,topOrigin:l}=je();this.isEmbed=c,this.embedParent=l?new URL(l).hostname:void 0,this.subscribe()}updateContext(e){this.statContext={...this.statContext,...e}}attachTo(e){let i=new ee,t=(s,d)=>i.add(s.subscribe(d));t(e.events.willStart$,()=>{let s=e.info.position$.getValue();this.logActionPlay({position:s}),this.statContext.projectId&&this.logActionPlayInteractive()}),t(e.events.looped$,()=>{this.resetViewSession(),++this.loopCounter>this.config.maxLoops&&(this.disabled=!0),this.logActionPlay({position:e.info.position$.getValue()})}),t(e.events.seeked$,()=>{this.logSeek({action:this.seekAction$.getValue(),time:e.info.position$.getValue()}),this.seekAction$.next("unknown")}),t(e.events.paused$,()=>{this.logPause({position:e.info.position$.getValue()})}),t(e.events.willResume$,()=>{this.logPlay()}),t(e.events.started$,()=>{this.statContext.clip&&this.logWatchCoverageRecord({start:0,end:0})}),t(e.events.playing$,()=>{this.logPlaying()}),t(Se(e,{forceInterval:this.config.watchCoverageInterval}),s=>{let d=e.info.isLive$.getValue(),g=e.info.atLiveEdge$.getValue(),b={start:parseFloat(s.from.toFixed(3)),end:parseFloat(s.to.toFixed(3))};if(g){let S=e.info.liveLatency$.getValue()??0,y=e.info.currentBuffer$.getValue()?.end??0,B=e.info.liveBufferTime$.getValue()??0,w=Math.round((S-(y-B))*1e3),k=Math.round(S*1e3);w&&k&&(b.latency=w,b.bufferLatency=k)}d?this.logWatchCoverageLive(b):this.logWatchCoverageRecord(b)});let o;t(e.info.isStalled$,s=>{s?o=v():(E(o)&&this.logEmptyBuffer({duration:v()-o}),o=void 0)});let n=!1;i.add(e.events.fatalError$.pipe(qe()).subscribe(()=>n=!0)),t(e.events.willStop$,()=>{if(e.info.isStalled$.getValue()){let d=E(o)?v()-o:void 0;this.logCloseAtEmptyBuffer({duration:d??0}),o=void 0}else n||this.logActionStop()}),t(e.events.managedError$,({id:s})=>{this.logError({fatal:!1,errorType:s})}),t(e.events.fatalError$,({id:s})=>{this.logError({fatal:!0,errorType:s})});let a,c,l=!1;t(e.events.firstBytes$,s=>{a=v(),this.logFirstBytes({time:s})}),t(e.events.willStart$,()=>c=v()),t(e.info.currentBuffer$,s=>{!l&&s&&s.end-s.start>0&&E(a)&&(this.logPlayerReady({duration:v()-a}),l=!0)}),t(e.events.firstFrame$,()=>{E(a)&&!l&&(this.logPlayerReady({duration:v()-a}),l=!0),E(c)&&this.logFirstFrame({time:v()-c})});let u;t(e.info.currentVideoStream$,s=>{s&&(u&&s.id!==u&&this.logTrackSwitch(s),u=s.id)});let p;t(e.info.currentAudioStream$,s=>{s&&(p&&s.id!==p&&this.logTrackSwitch(s),p=s.id)}),t(e.info.atLiveEdge$,s=>this.updateContext({liveEdge:s})),t(ye({muted:e.info.muted$,volume:e.info.volume$}),({muted:s,volume:d})=>this.updateContext({audible:!s&&d>0})),t(e.info.currentQuality$,s=>{let d=pe(s);this.updateContext({quality:d}),d&&this.logQuality(d)}),t(e.info.isAutoQualityEnabled$,s=>this.updateContext({autoQuality:s})),t(e.info.currentFormat$,s=>this.updateContext({contentType:he(s)})),t(e.info.currentPlaybackRate$,s=>this.updateContext({rate:s})),t(e.info.is3DVideo$,s=>this.updateContext({is3d:s}));let f;return t(e.info.hostname$,s=>{let d=f!==void 0&&f!==s;this.updateContext({cdnHostname:s,failover:d}),d&&this.logFailover(s),f=s}),t(e.info.throughputEstimation$,s=>this.updateContext({downloadSpeed:s})),t(e.info.httpConnectionType$,s=>{this.statContext.firstConnectionType||this.updateContext({firstConnectionType:Y(s)}),this.updateContext({connectionType:Y(s)})}),t(e.info.httpConnectionReused$,s=>{_e(this.statContext.firstConnectionReused)&&this.updateContext({firstConnectionReused:s}),this.updateContext({connectionReused:s})}),t(e.info.surface$,s=>this.updateContext({mode:D(s)})),t(ye({current:e.info.currentTextTrack$,available:e.info.availableTextTracks$}),({current:s,available:d})=>{let g=d.find(({id:S})=>S===s),b=g&&(g.isAuto?`${g.language}_auto`:g.language);this.updateContext({subtitles:b?.split(".")[0]})}),this.player=e,this.uiEvents&&this.attachToUi(this.uiEvents),this.resubscribeBeforeunload(),this.subscription.add(i),i}attachToUi(e){this.uiEvents=e;let{subscription:i,subscribe:t}=Z();return this.player&&(t(e.actionRewind$,()=>{this.player&&(this.resetViewSession(),this.logActionPlay({position:this.player.info.position$.getValue()}))}),t(e.actionSeek$,this.seekAction$),t(e.inPiP$,o=>{let n=o?"pip":D(this.player?.info.surface$.getValue());this.updateContext({mode:n})}),t(e.inFullscreen$,o=>{let n=o?"fullscreen":D(this.player?.info.surface$.getValue());this.updateContext({mode:n})}),t(e.actionSetSubtitle$,o=>this.updateContext({subtitles:o.split(".")[0]})),t(e.nextMovie$,o=>this.logNextMovie(o)),this.resubscribeBeforeunload(),this.subscription.add(i)),i}attachToAds(e){let{subscription:i,subscribe:t}=Z();return t(e.slotRequested$,()=>this.logAdSlotRequest()),t(e.started$,o=>this.logAdStarted(o)),t(e.paused$,()=>this.logAdPaused()),t(e.resumed$,()=>this.logAdResumed()),t(e.ended$,()=>this.logAdEnded()),t(e.skipped$,()=>this.logAdSkipped()),t(e.clicked$,()=>this.logAdClicked()),t(e.error$,o=>this.logError({errorType:o,fatal:!1})),this.resubscribeBeforeunload(),this.subscription.add(i),i}attachToInteractive(e){let{subscription:i,subscribe:t}=Z();return t(e.click$,o=>this.logInterfaceClick(o)),t(e.nextMovie$,o=>this.logNextMovie(o)),this.resubscribeBeforeunload(),this.subscription.add(i),i}authorize(e){return this.api.authorize(e)}pause(){this.logger.pause(),this.oneStatDebugLog({message:"paused"})}resume(){this.logger.resume(),this.oneStatDebugLog({message:"resumed"})}destroy(){this.logger.flush(),this.subscription.unsubscribe(),this.api.destroy(),this.logger.destroy()}resetViewSession(){this.oneStatDebugLog({message:"VSID reset"}),this.vsid$.next(ge())}getDeviceId(){return this.deviceId}setFieldBlacklist(){}logInited(){}logReady(e){this.log({operation:"player_ready",param:String(e.time)})}logStarted(...e){this.logActionPlay(...e)}logPlay(){this.log({operation:"play_toggle"})}logPlaying(){this.log({operation:"playing"})}logPause(e){this.log({operation:"pause",param:String(Math.round(e.position))})}logSeek(e){this.log({operation:"seek",param:e.action,time:e.time})}logFirstBytes(e){this.log({operation:"first_bytes",param:String(e.time)})}logFirstFrame(e){this.log({operation:"first_frame",param:String(e.time)})}logError(e){this.log({operation:"content_error",param:`${e.fatal?"fatal":"recoverable"}_${e.errorType}`})}logWatchCoverageRecord(e){this.log({operation:"watch_coverage_record",param:`${e.start}-${e.end}`},{in_history:this.statContext.inHistory?1:void 0})}logWatchCoverageLive(e){let i=this.timeSynchronisation?.getOffset()??0,t=e.start+i,o=e.end+i;this.log({operation:"watch_coverage_live",param:`${t}-${o}`},{in_history:this.statContext.inHistory?1:void 0,latency:e.latency,buffer_latency:e.bufferLatency})}logEmptyBuffer(e){this.log({operation:"empty_buffer",param:String(e.duration)})}logDownloadSpeed(){}logAdSlotRequest(){this.log({operation:"adv",param:"slot_request"})}logAdStarted(e){this.log({operation:"adv",param:e})}logAdPaused(){this.log({operation:"adv",param:"pause"})}logAdResumed(){this.log({operation:"adv",param:"resume"})}logAdEnded(){this.log({operation:"adv",param:"ended"})}logAdSkipped(){this.log({operation:"adv",param:"skip"})}logAdClicked(){this.log({operation:"adv",param:"click"})}logInterfaceClick(e){this.log({operation:"player_interface_click",param:e})}logNextMovie(e){this.log({operation:"next_movie",param:String(e)})}subscribe(){this.resubscribeBeforeunload();let e=window.navigator.connection;e&&"onchange"in e&&"effectiveType"in e&&this.subscription.add(He(Pe(e,"change"),Ke(["init"])).subscribe(()=>this.updateContext({network:fe(e.effectiveType)}))),this.config.debugLog&&this.debugLogger.log$.subscribe(i=>{console.debug("%c stat ","background:#fa6470;",`component: ${i.component}.`,i.message)})}resubscribeBeforeunload(){this.beforeunloadSubscription?.unsubscribe(),this.beforeunloadSubscription=Pe(window,"beforeunload").subscribe(()=>this.logger.flush({wantBeacon:!0,clearStorage:this.config.clearStorageAtUnload})),this.subscription.add(this.beforeunloadSubscription)}logPlayerReady(e){this.log({operation:"player_ready",param:String(Math.round(e.duration))})}logActionPlay(e){this.log({operation:"action_play",param:String(Math.round(e.position))})}logActionPlayInteractive(){this.statContext.projectId&&this.log({operation:"action_play_interactive",param:String(this.statContext.movieId)},{vid:this.statContext.projectId})}logFailover(e){this.log({operation:"failover",param:e})}logCloseAtEmptyBuffer(e){this.log({operation:"close_at_empty_buffer",param:String(Math.round(e.duration))})}logActionStop(){this.log({operation:"action_stop"})}logTrackSwitch(e){this.log({operation:"track_switch",param:e.id})}logQuality(e){this.log({operation:"quality",param:e})}log(e,i={}){if(this.disabled){this.oneStatDebugLog({message:`operation ${e.operation} but statistics is disabled`});return}if(this.config.disabledOperations.includes(e.operation)){this.oneStatDebugLog({message:`operation ${e.operation} but it is disabled`});return}this.oneStatDebugLog({message:`operation ${e.operation} ${e.param}`});let t=this.createLogItem(e,i);this.logger.log(t)}createLogItem({operation:e,param:i,time:t},o={}){let n=this.timeSynchronisation?.now()??v(),a=this.vsid$.getValue();We(a);let c=this.isid$.getValue(),l=e==="empty_buffer"||e==="close_at_empty_buffer"?this.statContext.connectionType:this.statContext.firstConnectionType,u=this.statContext.firstConnectionReused,p,f;if(this.isEmbed||this.statContext.place==="embed"){p=this.embedParent;let d=[...new URLSearchParams(location.search).entries()].filter(([g,b])=>this.config.embedUrlParams.includes(g));f=new URLSearchParams(d).toString()}else this.statContext.place==="direct"&&(this.statContext.refDomain?p=Ee(this.statContext.refDomain)?.hostname??this.statContext.refDomain:document.referrer&&(p=Ee(document.referrer)?.hostname??document.referrer),f=location.href.substring(0,1024));let s={vsid:a,isid:c,vid:this.statContext.movieId,uid:this.zenUid$.getValue(),ct:this.statContext.contentType,place:this.isEmbed?"embed":this.statContext.place,quality:this.statContext.quality,cdn_host:this.statContext.cdnHostname,stat_type:this.statContext.autoplay===!0?"auto":this.statContext.autoplay===!1?"":void 0,param:i,vk_app_id:this.statContext.vkAppId,track_code:this.statContext.trackCode,connection_type:l,connection_reused:u===!0?1:u===!1?0:void 0,cached_data:this.statContext.cached===!0?1:this.statContext.cached===!1?0:void 0,live:this.statContext.liveEdge?1:void 0,muted:this.statContext.audible===!1?1:void 0,mode:this.statContext.mode,subtitles:this.statContext.subtitles,download_speed:this.statContext.downloadSpeed,manual_quality:this.statContext.autoQuality?void 0:1,ref_domain:p,direct_url:f,rate:this.statContext.rate===1||_e(this.statContext.rate)?void 0:this.statContext.rate.toFixed(2),view_360:this.statContext.is3d?1:void 0,aid:this.statContext.albumId,vk_playlist_id:this.statContext.vkPlaylistId,...o};for(let d of this.config.disabledCustomFields)delete s[d];return{operation:e,type:1,time:t,network:this.statContext.network,timestamp:n,custom:s}}};export{A as ApiEnv,H as ConnectionType,W as ContentType,ie as InteractiveInterfaceClick,te as OneStat,U as Quality,K as SeekAction,L as VERSION};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vkontakte/videoplayer-statistics",
|
|
3
|
-
"version": "1.0.80-dev.
|
|
3
|
+
"version": "1.0.80-dev.fba07f4d.0",
|
|
4
4
|
"author": "vk.com",
|
|
5
5
|
"description": "Statistics library for vk.com videoplayer",
|
|
6
6
|
"homepage": "https://vk.com",
|
|
@@ -54,9 +54,9 @@
|
|
|
54
54
|
"**/*.d.ts"
|
|
55
55
|
],
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@vkontakte/videoplayer-shared": "1.0.62-dev.
|
|
57
|
+
"@vkontakte/videoplayer-shared": "1.0.62-dev.4cc026f5.0"
|
|
58
58
|
},
|
|
59
59
|
"peerDependencies": {
|
|
60
|
-
"@vkontakte/videoplayer-core": "2.0.134-dev.
|
|
60
|
+
"@vkontakte/videoplayer-core": "2.0.134-dev.11f30cb7.0"
|
|
61
61
|
}
|
|
62
62
|
}
|